ปรับ workflow

This commit is contained in:
DESKTOP-1R2VSQH\Lenovo ThinkPad E490 2024-10-17 13:36:53 +07:00
parent 619e93231c
commit 7eb2c0ce2f
3 changed files with 61 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 "@/components/Workflow/interface/index/Main";
import type { DataListState } from "@/components/Workflow/interface/response/Main";
import DialogSelectPerson from "@/components/Workflow/DialogSelectPerson.vue";
@ -21,17 +22,46 @@ const { id, sysName } = defineProps({
const stateId = ref<string>(""); //id state
const state = ref<number>(1); //state
const isPermission = ref<boolean>(true); // Workflow
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 permission = ref<Permission>({
isChangeState: false, ///
isOperate: false, // (state)
isView: false, //
isUpdate: false, //
isDelete: false, // ()
isCancel: false, // ()
});
const modalSelectPerson = ref<boolean>(false); // /
const itemState = ref<DataListState[]>([]);
/** ฟังก์ชันเรียกข้อมูล Workflow ที่อยู่ปัจุบัน*/
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;
});
}
/** ฟังก์ชันเรียกข้อมูล Workflow ทั้งหมด*/
async function fetchData() {
await http
@ -48,29 +78,6 @@ async function fetchData() {
});
}
/** ฟังก์ชันเรียกข้อมูล Workflow ที่อยู่ปัจุบัน*/
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);
});
}
/** ฟังก์ชันยืนยันการ NextStep*/
function onChangeState() {
dialogConfirm($q, async () => {
@ -81,7 +88,7 @@ function onChangeState() {
system: sysName,
})
.then(async () => {
await Promise.all([fetchData(), fetchCheckState()]);
await fetchCheckState();
})
.catch((err) => {
messageError($q, err);
@ -92,18 +99,17 @@ function onChangeState() {
});
}
/** ฟังก์ชันเรียกใช้งานฟังก์ชัน fetchData, fetchCheckState*/
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>
</div>
@ -128,7 +134,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"
@ -178,7 +184,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="ส่งไปผู้บังคับบัญชา/ผู้มีอำนาจ"
@ -186,7 +192,7 @@ onMounted(async () => {
/>
</div>
<div v-if="isChangeState">
<div v-if="permission.isChangeState && state === index + 1">
<q-btn
@click.prevent="onChangeState"
label="Next Step"
@ -203,6 +209,6 @@ onMounted(async () => {
<DialogSelectPerson
v-model:modal="modalSelectPerson"
:state-id="stateId"
:fetch-data="fetchAllFunction"
:fetch-data="fetchCheckState"
/>
</template>

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

@ -22,6 +22,7 @@ const id = ref<string>(
? ""
: route.params.id.toString()
); //id path
const files = ref<any>(); //
const tranferOrg = ref<string>(""); //
const noteReason = ref<string>(""); //
@ -48,11 +49,11 @@ async function createTransfer() {
formData.append("file", files.value);
await http
.post(config.API.listtransfer(), formData)
.then((res: any) => {
.then((res) => {
router.push(`/transfer/` + res.data.result);
success($q, "บันทึกข้อมูลสำเร็จ");
router.push(`/transfer`);
})
.catch((e: any) => {
.catch((e) => {
messageError($q, e);
})
.finally(() => {