Conformance: Activity sequence, Sequence, Directly follows done.

This commit is contained in:
chiayin
2023-08-02 14:38:08 +08:00
parent 86e1c52585
commit 34aa0f28c2
11 changed files with 309 additions and 98 deletions

View File

@@ -1,36 +1,39 @@
<template>
<div class="px-4 text-sm">
<!-- Have activity -->
<div class="space-y-2" v-if="selectedRuleType === 'Have activity' || selectedRuleType === 'Activity duration'">
<div class="flex justify-start items-center pr-4" v-for="(act, index) in data" :key="index">
<span class="material-symbols-outlined text-primary mr-2">
check_circle
</span>
<p class="px-2 py-1 border border-neutral-500 w-full whitespace-nowrap break-keep text-ellipsis overflow-hidden">{{ act }}</p>
</div>
</div>
<ResultCheck v-if="selectedRuleType === 'Have activity'" :data="containstTasksData"></ResultCheck>
<!-- Activity sequence -->
<div class="space-y-2" v-if="selectedRuleType === 'Activity sequence' && selectedActivitySequence === 'Sequence'">
<div class="flex justify-start items-center pr-4" v-for="(act, index) in data" :key="index">
<span class="material-symbols-outlined text-primary mr-2">
arrow_circle_down
</span>
<p class="px-2 py-1 border border-neutral-500 w-full whitespace-nowrap break-keep text-ellipsis overflow-hidden">{{ act }}</p>
</div>
</div>
<!-- Processing time, Waiting time, Cycle time -->
<ul v-if="(selectedRuleType === 'Activity sequence' && selectedActivitySequence === 'Start & End') || selectedRuleType === 'Processing time' || selectedRuleType === 'Waiting time' || selectedRuleType === 'Cycle time'">
<li class="flex justify-start items-center py-1 pr-4" v-for="(act, index) in timeResultData" :key="index + act">
<span class="material-symbols-outlined disc text-sm align-middle mr-1">fiber_manual_record</span>
<span class="mr-2 block w-12">{{ act.scope }}</span>
<span class="px-2 py-1 border border-neutral-500 w-full whitespace-nowrap break-keep text-ellipsis overflow-hidden block">{{ act.activity }}</span>
</li>
</ul>
<ResultDot v-if="selectedRuleType === 'Activity sequence' && selectedActivitySequence === 'Start & End'" :timeResultData="startEndData"></ResultDot>
<ResultArrow v-if="selectedRuleType === 'Activity sequence' && selectedActivitySequence === 'Sequence'" :data="listSequence"></ResultArrow>
<!-- Activity duration -->
<ResultCheck v-if="selectedRuleType === 'Activity duration'" :title="'Activities include'"></ResultCheck>
<!-- Processing time -->
<ResultArrow v-if="selectedRuleType === 'Processing time' && selectedProcessScope === 'End to end' && selectedActSeqMore === 'Start'"></ResultArrow>
<ResultArrow v-if="selectedRuleType === 'Processing time' && selectedProcessScope === 'End to end' && selectedActSeqMore === 'End'"></ResultArrow>
<ResultArrow v-if="selectedRuleType === 'Processing time' && selectedProcessScope === 'End to end' && selectedActSeqMore === 'Start & End'"></ResultArrow>
<ResultArrow v-if="selectedRuleType === 'Processing time' && selectedProcessScope === 'Partial' && selectedActSeqFromTo === 'From'"></ResultArrow>
<ResultArrow v-if="selectedRuleType === 'Processing time' && selectedProcessScope === 'Partial' && selectedActSeqFromTo === 'To'"></ResultArrow>
<ResultArrow v-if="selectedRuleType === 'Processing time' && selectedProcessScope === 'Partial' && selectedActSeqFromTo === 'From & To'"></ResultArrow>
<!-- Waiting time -->
<ResultArrow v-if="selectedRuleType === 'Waiting time' && selectedProcessScope === 'End to end' && selectedActSeqMore === 'Start'"></ResultArrow>
<ResultArrow v-if="selectedRuleType === 'Waiting time' && selectedProcessScope === 'End to end' && selectedActSeqMore === 'End'"></ResultArrow>
<ResultArrow v-if="selectedRuleType === 'Waiting time' && selectedProcessScope === 'End to end' && selectedActSeqMore === 'Start & End'"></ResultArrow>
<ResultArrow v-if="selectedRuleType === 'Waiting time' && selectedProcessScope === 'Partial' && selectedActSeqFromTo === 'From'"></ResultArrow>
<ResultArrow v-if="selectedRuleType === 'Waiting time' && selectedProcessScope === 'Partial' && selectedActSeqFromTo === 'To'"></ResultArrow>
<ResultArrow v-if="selectedRuleType === 'Waiting time' && selectedProcessScope === 'Partial' && selectedActSeqFromTo === 'From & To'"></ResultArrow>
<!-- Cycle time -->
<ResultArrow v-if="selectedRuleType === 'Cycle time' && selectedProcessScope === 'End to end' && selectedActSeqMore === 'Start'"></ResultArrow>
<ResultArrow v-if="selectedRuleType === 'Cycle time' && selectedProcessScope === 'End to end' && selectedActSeqMore === 'End'"></ResultArrow>
<ResultArrow v-if="selectedRuleType === 'Cycle time' && selectedProcessScope === 'End to end' && selectedActSeqMore === 'Start & End'"></ResultArrow>
</div>
</template>
<script>
import { storeToRefs } from 'pinia';
import ConformanceStore from '@/stores/conformance.js';
import ResultCheck from '@/components/Discover/Conformance/ConformanceSidebar/ResultCheck.vue';
import ResultArrow from '@/components/Discover/Conformance/ConformanceSidebar/ResultArrow.vue';
import ResultDot from '@/components/Discover/Conformance/ConformanceSidebar/ResultDot.vue';
export default {
setup() {
@@ -39,39 +42,81 @@ export default {
return { selectedRuleType, selectedActivitySequence, selectedMode, selectedProcessScope, selectedActSeqMore, selectedActSeqFromTo }
},
components: {
ResultCheck,
ResultArrow,
ResultDot,
},
data() {
return {
data: null,
timeResultData: [
{
id: 1,
scope: 'Start',
activity: '到院'
},
{
id: 2,
scope: 'End',
activity: '出院'
},
{
id: 3,
scope: 'From',
activity: '到院到院到院到院到院到院'
},
{
id: 4,
scope: 'Start',
activity: '出院出院出院出院出院出院'
},
],
containstTasksData: null,
startEndData: null,
start: null,
end: null,
from: null,
to: null,
listSequence: null,
}
},
methods: {
/**
* set Time Result Data
* @param {array} data
* @returns {array}
* timeResultData: [
* {
* id: 1,
* category: 'start', start|end|from|to
* task: '到院'
* },
* ]
*/
setTimeResultData(data) {
let result = data.map((item, index) => {
return {
id: index + 1,
category: item.category.replace(/^./, item.category[0].toUpperCase()),
task: item.task
}
});
return result;
},
},
created() {
this.$emitter.on('actListData', (data) => {
this.data = data;
this.containstTasksData = data;
});
this.$emitter.on('actRadioData', (data) => {
switch (data.category) {
case 'Start':
this.start = [data];
break;
case 'End':
this.end = [data];
break;
case 'From':
this.from = [data];
break;
case 'To':
this.to = [data];
break;
default:
break;
};
if(this.start !== null && this.end !== null){
this.startEndData = [...this.start, ...this.end];
};
});
this.$emitter.on('getListSequence', (data) => {
this.listSequence = data;
})
this.$emitter.on('reset', (data) => {
this.data = data;
this.containstTasksData = data;
this.startEndData = data;
this.start = data;
this.end = data;
this.from = data;
this.to = data;
});
},