From 3395995f6806934491dee7c1fcd75df12cee7275 Mon Sep 17 00:00:00 2001 From: puriphatt Date: Mon, 28 Oct 2024 11:04:58 +0700 Subject: [PATCH] refactor: workflow --- .../04_flow-management/FormFlow.vue | 107 +++++-- src/pages/04_flow-managment/FlowDialog.vue | 285 ++++++++++++++++++ src/pages/04_flow-managment/MainPage.vue | 216 +++++++++++-- src/pages/04_product-service/FlowDialog.vue | 119 -------- 4 files changed, 562 insertions(+), 165 deletions(-) create mode 100644 src/pages/04_flow-managment/FlowDialog.vue delete mode 100644 src/pages/04_product-service/FlowDialog.vue diff --git a/src/components/04_flow-management/FormFlow.vue b/src/components/04_flow-management/FormFlow.vue index 6ba0ecf0..aa703396 100644 --- a/src/components/04_flow-management/FormFlow.vue +++ b/src/components/04_flow-management/FormFlow.vue @@ -7,20 +7,32 @@ import useUserStore from 'src/stores/user'; import useOptionStore from 'src/stores/options'; import { baseUrl } from 'stores/utils'; import { getRole } from 'src/services/keycloak'; -import { WorkflowTemplatePayload } from 'src/stores/workflow-template/types'; +import { + WorkflowUserInTable, + WorkflowTemplatePayload, +} from 'src/stores/workflow-template/types'; import { User } from 'src/stores/user/types'; import SelectInput from '../shared/SelectInput.vue'; import ToggleButton from 'src/components/button/ToggleButton.vue'; import { DeleteButton } from '../button'; +const props = defineProps<{ + readonly?: boolean; + onDrawer?: boolean; +}>(); + const userStore = useUserStore(); const optionStore = useOptionStore(); +const userInTable = defineModel('userInTable', { + default: [], +}); const registerBranchId = defineModel('registerBranchId', { default: '' }); const flowData = defineModel('flowData', { required: true, default: { + status: 'CREATED', name: '', step: [], }, @@ -28,7 +40,6 @@ const flowData = defineModel('flowData', { const role = ref([]); const userList = ref([]); -const userInTable = ref([]); const responsiblePersonSearch = ref(''); const columns = [ { @@ -58,10 +69,10 @@ async function getUserList(opts?: { query: string }) { if (resUser) userList.value = resUser.result; } -async function getUserById(responsiblePersonId: string) { - const resUser = await userStore.fetchById(responsiblePersonId); - if (resUser) userInTable.value.push(resUser); -} +// async function getUserById(responsiblePersonId: string) { +// const resUser = await userStore.fetchById(responsiblePersonId); +// if (resUser) userInTable.value.push(resUser); +// } function selectResponiblePerson(stepIndex: number, responsiblePerson: User) { const currStep = flowData.value.step[stepIndex]; @@ -71,16 +82,38 @@ function selectResponiblePerson(stepIndex: number, responsiblePerson: User) { if (existPersonIndex === -1) { currStep.responsiblePersonId?.push(responsiblePerson.id); - userInTable.value.push(responsiblePerson); + + if (!userInTable.value[stepIndex]) { + userInTable.value[stepIndex] = { + name: flowData.value.step[stepIndex].name, + resposiblePerson: [], + }; + } + + userInTable.value[stepIndex]?.resposiblePerson.push({ + id: responsiblePerson.id, + selectedImage: responsiblePerson.selectedImage, + gender: responsiblePerson.gender, + namePrefix: responsiblePerson.namePrefix, + firstName: responsiblePerson.firstName, + lastName: responsiblePerson.lastName, + firstNameEN: responsiblePerson.firstNameEN, + lastNameEN: responsiblePerson.lastNameEN, + code: responsiblePerson.code, + }); } else { currStep.responsiblePersonId?.splice(Number(existPersonIndex), 1); - userInTable.value.splice(Number(existPersonIndex), 1); + userInTable.value[stepIndex]?.resposiblePerson.splice( + Number(existPersonIndex), + 1, + ); } } defineEmits<{ (e: 'moveUp'): void; (e: 'moveDown'): void; + (e: 'changeStatus'): void; }>(); watch( @@ -90,8 +123,8 @@ watch( onMounted(async () => { role.value = getRole() || []; + await getUserList(); await userStore.fetchHqOption(); - getUserList(); }); @@ -109,14 +142,28 @@ onMounted(async () => { style="background-color: var(--surface-3)" /> {{ $t(`general.name`, { msg: $t('flow.title') }) }} - + + {{ $t('status.title') }} -
{ :label="$t('branch.form.code')" /> { { - + {