ปรับ workflow

This commit is contained in:
DESKTOP-1R2VSQH\Lenovo ThinkPad E490 2024-10-17 13:37:13 +07:00
parent 825d99e22e
commit f251ae03d7
4 changed files with 66 additions and 44 deletions

View file

@ -6,6 +6,7 @@ import { useCounterMixin } from "@/stores/mixin";
import http from "@/plugins/http";
import config from "@/app.config";
import type { Permission } from "@/interface/index/workflow/Main";
import type { DataListState } from "@/interface/response/workflow/Main";
import DialogSelectPerson from "@/components/Workflow/DialogSelectPerson.vue";
@ -23,17 +24,44 @@ const { id, sysName } = defineProps({
const stateId = ref<string>(""); //id state
const state = ref<number>(1); //state
const isChangeState = ref<boolean>(false); ///
const isOperate = ref<boolean>(true); // (state)
const isView = ref<boolean>(true); //
const isUpdate = ref<boolean>(true); //
const isDelete = ref<boolean>(true); // ()
const isCancel = ref<boolean>(true); // ()
const isPermission = ref<boolean>(true); // Workflow
const permission = ref<Permission>({
isChangeState: false, ///
isOperate: false, // (state)
isView: false, //
isUpdate: false, //
isDelete: false, // ()
isCancel: false, // ()
});
const itemState = ref<DataListState[]>([]);
const modalSelectPerson = ref<boolean>(false);
const modalApprove = ref<boolean>(false);
const itemState = ref<DataListState[]>([]);
async function fetchCheckState() {
await http
.post(config.API.workflow + `check-user-now`, {
refId: id,
system: sysName,
})
.then(async (res) => {
await fetchData();
const data = await res.data.result;
stateId.value = data.stateId;
state.value = data.stateNo === 4 ? 5 : data.stateNo;
permission.value = {
isChangeState: data.can_change_state,
isOperate: data.can_operate,
isView: data.can_view,
isUpdate: data.can_update,
isDelete: data.can_delete,
isCancel: data.can_cancel,
};
})
.catch(() => {
isPermission.value = false;
});
}
async function fetchData() {
await http
@ -50,28 +78,6 @@ async function fetchData() {
});
}
async function fetchCheckState() {
await http
.post(config.API.workflow + `check-user-now`, {
refId: id,
system: sysName,
})
.then(async (res) => {
const data = await res.data.result;
stateId.value = data.stateId;
state.value = data.stateNo;
isChangeState.value = data.can_change_state;
isOperate.value = data.can_operate;
isView.value = data.can_view;
isUpdate.value = data.can_update;
isDelete.value = data.can_delete;
isCancel.value = data.can_cancel;
})
.catch((err) => {
messageError($q, err);
});
}
function onChangeState() {
dialogConfirm($q, async () => {
showLoader();
@ -81,7 +87,7 @@ function onChangeState() {
system: sysName,
})
.then(async () => {
await Promise.all([fetchData(), fetchCheckState()]);
await fetchCheckState();
})
.catch((err) => {
messageError($q, err);
@ -92,17 +98,17 @@ function onChangeState() {
});
}
async function fetchAllFunction() {
await Promise.all([fetchData(), fetchCheckState()]);
}
onMounted(async () => {
await fetchAllFunction();
await fetchCheckState();
});
defineExpose({
permission,
});
</script>
<template>
<q-card bordered class="row col-12">
<q-card bordered class="row col-12" v-if="isPermission">
<div class="bg-grey-1 q-pa-sm col-12 row items-center">
<div class="q-pl-sm text-weight-bold text-dark">Workflow</div>
<q-space />
@ -133,7 +139,7 @@ onMounted(async () => {
<div class="row q-col-gutter-sm" v-if="state === 1 && index === 0">
<div>
<q-btn
v-if="isChangeState"
v-if="permission.isChangeState"
@click.prevent="onChangeState"
label="Next Step"
color="primary"
@ -181,7 +187,7 @@ onMounted(async () => {
</q-list>
</div>
<div v-if="isOperate">
<div v-if="permission.isOperate && state === index + 1">
<q-btn
@click.prevent="modalSelectPerson = true"
label="ส่งไปผู้บังคับบัญชา/ผู้มีอำนาจ"
@ -189,7 +195,7 @@ onMounted(async () => {
/>
</div>
<div v-if="isChangeState">
<div v-if="permission.isChangeState && state === index + 1">
<q-btn
@click.prevent="onChangeState"
label="Next Step"
@ -206,7 +212,7 @@ onMounted(async () => {
<DialogSelectPerson
v-model:modal="modalSelectPerson"
:state-id="stateId"
:fetch-data="fetchAllFunction"
:fetch-data="fetchCheckState"
/>
<DialogApprove v-model:modal="modalApprove" :state-id="stateId" />

View file

View file

@ -0,0 +1,10 @@
interface Permission {
isChangeState: boolean; //ส่งไปยังผู้บังคับบัญชา/ผู้มีอำนาจ
isOperate: boolean; //เปลี่ยนสถานะ (state) เอกสารได้
isView: boolean; //ดูเอกสารได้
isUpdate: boolean; //แก้ไขเอกสารได้
isDelete: boolean; //ลบเอกสารได้ (ถ้ามี)
isCancel: boolean; //ลบเอกสารได้ (ถ้ามี)
}
export type { Permission };

View file

@ -38,6 +38,7 @@ const transferId = ref<string>(route.params.id as string); //Id รายกา
const roleAdmin = ref<boolean>(false); //admin
const edit = ref<boolean>(false); //
const dataProfile = ref<DataProfile>(); //
const workflowRef = ref<any>(null);
const organizationPositionOld = ref<string>(""); ///
const positionTypeOld = ref<string>(""); //
@ -335,7 +336,7 @@ onMounted(async () => {
<div class="bg-grey-1 q-pa-sm col-12 row items-center text-primary">
<div class="q-pl-sm text-weight-bold text-dark">อมลการขอโอน</div>
<q-space />
<q-btn
<!-- <q-btn
v-if="!roleAdmin && responseData.status != 'APPROVE'"
outline
color="primary"
@ -344,7 +345,7 @@ onMounted(async () => {
class="q-px-sm"
label="ส่งคำร้องไปยัง สกจ."
@click="confirmMessage"
/>
/> -->
</div>
<div class="col-12"><q-separator /></div>
<div class="row col-12 q-pa-md">
@ -489,7 +490,8 @@ onMounted(async () => {
v-if="
!(
responseData.status == 'REPORT' ||
responseData.status == 'DONE'
responseData.status == 'DONE' ||
!workflowRef?.permission.isUpdate
) && checkPermission($route)?.attrIsUpdate
"
/>
@ -686,7 +688,11 @@ onMounted(async () => {
</q-card>
<!-- Workflow -->
<WorkFlow :id="transferId" :sys-name="'PLACEMENT_TRANSFER'" />
<WorkFlow
ref="workflowRef"
:id="transferId"
:sys-name="'PLACEMENT_TRANSFER'"
/>
</div>
</template>