diff --git a/src/api/06_retirement/api.retirement.ts b/src/api/06_retirement/api.retirement.ts index c052aa9da..eb0af9051 100644 --- a/src/api/06_retirement/api.retirement.ts +++ b/src/api/06_retirement/api.retirement.ts @@ -1,4 +1,3 @@ -import type { StringDictionary } from "quasar"; import env from "../index"; const retirement = `${env.API_URI}/retirement`; const retirementDischarge = `${retirement}/discharge`; diff --git a/src/modules/05_placement/components/Transfer/DialogOrders.vue b/src/modules/05_placement/components/Transfer/DialogOrders.vue index df5088ea0..e792d3e41 100644 --- a/src/modules/05_placement/components/Transfer/DialogOrders.vue +++ b/src/modules/05_placement/components/Transfer/DialogOrders.vue @@ -4,16 +4,19 @@ import { useQuasar } from "quasar"; import { useCounterMixin } from "@/stores/mixin"; import { useTransferDataStore } from "@/modules/05_placement/store"; -import http from "@/plugins/http"; -import config from "@/app.config"; +import { useCommandMainStore } from "@/modules/18_command/store/Main"; +// import http from "@/plugins/http"; +// import config from "@/app.config"; import type { QTableProps } from "quasar"; import type { ResponseData } from "@/modules/05_placement/interface/response/Transfer"; import DialogHeader from "@/components/DialogHeader.vue"; +import DialogCreateCommand from "@/modules/18_command/components/DialogCreateCommand.vue"; const $q = useQuasar(); const mixin = useCounterMixin(); +const stroeCommand = useCommandMainStore(); const { statusText } = useTransferDataStore(); const { showLoader, @@ -24,16 +27,17 @@ const { date2Thai, } = mixin; +const modal = defineModel("modal", { required: true }); /** * props */ const props = defineProps({ - modal: Boolean, closeModal: Function, fetchData: Function, rows: Array, }); +const modalCommand = ref(false); //เปิด-ปิด modal สร้างคำสั่ง //Table const selected = ref([]); //รายชื่อที่เลือก const filter = ref(""); //คำค้นหา @@ -133,20 +137,23 @@ function saveOrder() { const body = { id, }; - showLoader(); - await http - .post(config.API.transferReport, body) - .then(async () => { - await props.fetchData?.(); - await success($q, "ส่งไปออกคำสั่งสำเร็จ"); - props.closeModal?.(); - }) - .catch((e) => { - messageError($q, e); - }) - .finally(() => { - hideLoader(); - }); + + modalCommand.value = true; + modal.value = false; + // showLoader(); + // await http + // .post(config.API.transferReport, body) + // .then(async () => { + // await props.fetchData?.(); + // await success($q, "ส่งไปออกคำสั่งสำเร็จ"); + // props.closeModal?.(); + // }) + // .catch((e) => { + // messageError($q, e); + // }) + // .finally(() => { + // hideLoader(); + // }); }, "ยืนยันส่งไปออกคำสั่ง", "ต้องการยืนยันส่งไปออกคำสั่งใช่หรือไม่?" @@ -159,9 +166,9 @@ function saveOrder() { * กำหนดให้ selected เป็นค่าว่าง */ watch( - () => props.modal, + () => modal.value, () => { - if (props.modal === true) { + if (modal.value === true) { selected.value = []; } } @@ -275,6 +282,12 @@ watch( + + diff --git a/src/modules/05_placement/views/02_transferMain.vue b/src/modules/05_placement/views/02_transferMain.vue index 981b2cdac..ee05b392f 100644 --- a/src/modules/05_placement/views/02_transferMain.vue +++ b/src/modules/05_placement/views/02_transferMain.vue @@ -297,7 +297,7 @@ onMounted(async () => { +import { ref } from "vue"; +import { useQuasar } from "quasar"; + +import { useRouter } from "vue-router"; +import { useCounterMixin } from "@/stores/mixin"; +import { useCommandMainStore } from "@/modules/18_command/store/Main"; + +// import http from "@/plugins/http"; +// import config from "@/app.config"; + +import type { QTableProps } from "quasar"; +import type { ResponseData } from "@/modules/05_placement/interface/response/Transfer"; + +import DialogHeader from "@/components/DialogHeader.vue"; + +const storeCommand = useCommandMainStore(); +const router = useRouter(); +const $q = useQuasar(); +const mixin = useCounterMixin(); +const { + showLoader, + success, + messageError, + dialogConfirm, + hideLoader, + date2Thai, +} = mixin; + +const modal = defineModel("modal", { required: true }); + +const props = defineProps({ + commandTypeId: String, // ไอดีประเภทคำสั่ง + personsId: Array, // ไอดีคนที่เลือกออกคำสั่งส่งมาเป็น array +}); + +const rows = ref([]); // รายการคำสั่ง +const selected = ref(""); // id คำสั่งที่เลือก +const filter = ref(""); // คำค้นหา +const visibleColumns2 = ref([ + "no", + "fullname", + "posType", + "organizationPositionOld", + "organization", + "createdAt", +]); +const columns2 = ref([ + { + name: "no", + align: "left", + label: "ลำดับ", + sortable: false, + field: "no", + headerStyle: "font-size: 14px", + style: "font-size: 14px", + }, + { + name: "fullname", + align: "left", + label: "ชื่อ-นามสกุล", + sortable: true, + field: "fullname", + headerStyle: "font-size: 14px", + style: "font-size: 14px", + format(val, row) { + return `${row.prefix}${row.firstName} ${row.lastName}`; + }, + }, + { + name: "posType", + align: "left", + label: "ประเภทตำแหน่ง", + sortable: true, + field: "posType", + headerStyle: "font-size: 14px", + style: "font-size: 14px", + format(val, row) { + return row.positionTypeOld + " (" + row.positionLevelOld + ")"; + }, + }, + { + name: "organizationPositionOld", + align: "left", + label: "ตำแหน่ง/สังกัดเดิม", + sortable: true, + field: "organizationPositionOld", + headerStyle: "font-size: 14px", + style: "font-size: 14px", + }, + { + name: "organization", + align: "left", + label: "หน่วยงานที่ขอโอนไป", + sortable: true, + field: "organization", + headerStyle: "font-size: 14px", + style: "font-size: 14px", + }, + { + name: "createdAt", + align: "left", + label: "วันที่ดำเนินการ", + sortable: true, + field: "createdAt", + headerStyle: "font-size: 14px", + style: "font-size: 14px", + format(val) { + return date2Thai(val); + }, + }, +]); + +/** + * ฟังก์ชันสร้างคำสั่งใหม่ + */ +function createCommand() { + // dialogConfirm($q, async () => { + // const id = selected.value.map((r) => r.id); + // const body = { + // id, + // }; + // showLoader(); + // await http + // .post(config.API.transferReport, body) + // .then((res) => { + // modal.value = false; + router.push("/command/edit/736c178f-9c11-44bc-b6e0-ef47ea06ffe9"); + // }) + // .catch((e) => { + // messageError($q, e); + // }) + // .finally(() => { + // hideLoader(); + // }); + // }); +} + +/** + * ฟังก์ชันเพิ่มคนเข้าไปในคำสั่งที่เป็นแบบร่าง + */ +function addPersonalToCommand(id: string) { + // dialogConfirm($q, async () => { + // const id = selected.value.map((r) => r.id); + // const body = { + // id, + // }; + // showLoader(); + // await http + // .post(config.API.transferReport, body) + // .then((res) => { + // modal.value = false; + // router.push("/command/edit/" + id); + // }) + // .catch((e) => { + // messageError($q, e); + // }) + // .finally(() => { + // hideLoader(); + // }); + // }); +} + +const typeAction = ref("NEW"); // NEW = สร้างใหม่, SELECT = เลือกคำสั่งที่เป็นแบบร่าง +function onSubmit() { + if (typeAction.value === "NEW") { + createCommand(); + } else { + addPersonalToCommand(selected.value); + } +} + +function closeModal() { + modal.value = false; +} + +const selectCreate = ref(null); + + + + + diff --git a/src/modules/18_command/interface/index/Main.ts b/src/modules/18_command/interface/index/Main.ts index f61ac091a..95e4927d3 100644 --- a/src/modules/18_command/interface/index/Main.ts +++ b/src/modules/18_command/interface/index/Main.ts @@ -49,4 +49,19 @@ interface DateSelectPerson { profileId: string; } -export type { Pagination, DataOption, ItemTabs, DataPerson, DateSelectPerson }; +interface ListCommand { + id: string; + code: string; + name: string; + subtitle?: string; + commandSysId: string; +} + +export type { + Pagination, + DataOption, + ItemTabs, + DataPerson, + DateSelectPerson, + ListCommand, +}; diff --git a/src/modules/18_command/store/Main.ts b/src/modules/18_command/store/Main.ts new file mode 100644 index 000000000..dcdc31814 --- /dev/null +++ b/src/modules/18_command/store/Main.ts @@ -0,0 +1,29 @@ +import { defineStore } from "pinia"; +import { ref } from "vue"; +import type { ListCommand } from "@/modules/18_command/interface/index/Main"; + +export const useCommandMainStore = defineStore("commandMainStore", () => { + const commandTypes = ref([ + { + id: "c94b8ce3-46f2-4ecb-9d3c-4d6b08f33dd9", + name: "คำสั่งให้โอนข้าราชการกรุงเทพมหานครสามัญ", + code: "C-PM-13", + subtitle: "", + commandSysId: "PLACEMENT", + }, + ]); + + function getCommandTypes(data: ListCommand[]) { + return (commandTypes.value = data); + } + + function getCommandTypeById(id: string) { + return commandTypes.value.find((item) => item.id === id); + } + + return { + commandTypes, + getCommandTypes, + getCommandTypeById, + }; +});