diff --git a/src/api/registry/api.registry.ts b/src/api/registry/api.registry.ts index 62ecb17e9..3d27609ca 100644 --- a/src/api/registry/api.registry.ts +++ b/src/api/registry/api.registry.ts @@ -44,8 +44,7 @@ export default { profileNewInsignByProfileId: (profileId: string, type: string) => `${registryNew}${type}/insignia/${profileId}`, - orgInsigniaActive: () => - `${org}/insignia/insignia-type/active`, + orgInsigniaActive: () => `${org}/insignia/insignia-type/active`, profileNewInsignById: (dataId: string, type: string) => `${registryNew}${type}/insignia/${dataId}`, @@ -169,6 +168,17 @@ export default { leaveListCard: (id: string, type: string) => `${registryNew}${type}/leave/admin/${id}`, //noPermission + /** ตำแหน่ง*/ + profileSalaryPositionNew: (type: string) => `${registryNew}${type}/salary/position`, + profileListSalaryPositionNew: (id: string, type: string) => + `${registryNew}${type}/salary/position/${id}`, + profileListSalaryPositionHistoryNew: (profileId: string, type: string) => + `${registryNew}${type}/salary/position/admin/history/${profileId}`, + profileSalaryPositionSwapNew: (type: string, id: string, type2: string) => + `${registryNew}${type2}/salary/position/swap/${type}/${id}`, + salaryListCardPosition: (id: string, type: string) => + `${registryNew}${type}/salary/position/admin/${id}`, //noPermission + /** ตำแหน่งเงินเดือน*/ profileSalaryNew: (type: string) => `${registryNew}${type}/salary`, profileListSalaryNew: (id: string, type: string) => diff --git a/src/modules/04_registryPerson/components/detail/GovernmentInformation/05_ActingPos.vue b/src/modules/04_registryPerson/components/detail/GovernmentInformation/05_ActingPos.vue index 4b5222de3..2b584fb6a 100644 --- a/src/modules/04_registryPerson/components/detail/GovernmentInformation/05_ActingPos.vue +++ b/src/modules/04_registryPerson/components/detail/GovernmentInformation/05_ActingPos.vue @@ -102,7 +102,7 @@ const columns = ref([ headerStyle: "font-size: 14px", style: "font-size: 14px", format(val, row) { - return row.status ? "Active" : "-"; + return row.status ? "ใช้งาน" : "-"; }, }, ]); @@ -444,7 +444,7 @@ onMounted(() => {
-
สถานะ
- {{ props.row.status ? "Active" : "-" }} + {{ props.row.status ? "ใช้งาน" : "-" }}
@@ -572,7 +572,7 @@ onMounted(() => { diff --git a/src/modules/04_registryPerson/components/detail/GovernmentInformation/05_ActingPosHistory.vue b/src/modules/04_registryPerson/components/detail/GovernmentInformation/05_ActingPosHistory.vue index ad7084b08..81ecb5897 100644 --- a/src/modules/04_registryPerson/components/detail/GovernmentInformation/05_ActingPosHistory.vue +++ b/src/modules/04_registryPerson/components/detail/GovernmentInformation/05_ActingPosHistory.vue @@ -76,7 +76,7 @@ const columns = ref([ sortable: true, field: "status", format(val, row) { - return row.status ? "Active" : "-"; + return row.status ? "ใช้งาน" : "-"; }, headerStyle: "font-size: 14px", style: "font-size: 14px", diff --git a/src/modules/04_registryPerson/components/detail/GovernmentInformation/07_Position.vue b/src/modules/04_registryPerson/components/detail/GovernmentInformation/07_Position.vue index 6b440a7d0..a378bf804 100644 --- a/src/modules/04_registryPerson/components/detail/GovernmentInformation/07_Position.vue +++ b/src/modules/04_registryPerson/components/detail/GovernmentInformation/07_Position.vue @@ -1,11 +1,1261 @@ +const store = useSalaryDataStore(); +const { + date2Thai, + dialogConfirm, + showLoader, + hideLoader, + messageError, + success, + pathRegistryEmp, + onSearchDataTable, +} = useCounterMixin(); + +const empType = ref(pathRegistryEmp(route.name?.toString() ?? "")); + +//Table +const rows = ref([]); //รายการตำแหน่งเงินเดือน +const rowsMain = ref([]); //รายการตำแหน่งเงินเดือน +const keyword = ref(""); //คำค้นหา +const modalCommand = ref(false); +const command = ref(""); +const commandId = ref(""); +const baseColumns = ref([ + { + name: "commandDateAffect", + align: "left", + label: "วัน เดือน ปี", + sortable: true, + field: "commandDateAffect", + headerStyle: "font-size: 14px", + style: "font-size: 14px", + format: (v) => date2Thai(v), + }, + { + name: "amount", + align: "left", + label: empType.value === "-employee" ? "ค่าตอบแทนรายเดือน" : "เงินเดือน", + sortable: true, + field: "amount", + headerStyle: "font-size: 14px", + style: "font-size: 14px", + format: (v) => Number(v).toLocaleString(), + }, + { + name: "positionSalaryAmount", + align: "left", + label: "เงินประจำตำแหน่ง", + sortable: true, + field: "positionSalaryAmount", + headerStyle: "font-size: 14px", + style: "font-size: 14px", + format: (v) => Number(v).toLocaleString(), + }, + { + name: "mouthSalaryAmount", + align: "left", + label: "เงินค่าตอบแทนรายเดือน", + sortable: true, + field: "mouthSalaryAmount", + headerStyle: "font-size: 14px", + style: "font-size: 14px", + format: (v) => Number(v).toLocaleString(), + }, + + { + name: "posNo", + align: "left", + label: "ตำแหน่งเลขที่", + sortable: true, + field: "posNo", + headerStyle: "font-size: 14px", + style: "font-size: 14px", + }, + { + name: "positionName", + align: "left", + label: "ตำแหน่ง", + sortable: true, + field: "positionName", + headerStyle: "font-size: 14px", + style: "font-size: 14px", + }, + { + name: "positionType", + align: "left", + label: "ประเภทตำแหน่ง", + sortable: true, + field: "positionType", + headerStyle: "font-size: 14px", + style: "font-size: 14px", + }, + { + name: "positionLevel", + align: "left", + label: "ระดับ", + sortable: true, + field: "positionLevel", + format(val, row) { + return `${ + row.positionLevel + ? row.positionLevel + : row.positionCee + ? row.positionCee + : "-" + }`; + }, + headerStyle: "font-size: 14px", + style: "font-size: 14px", + }, + { + name: "commandName", + align: "left", + label: "เอกสารอ้างอิง", + sortable: true, + field: "commandName", + headerStyle: "font-size: 14px", + style: "font-size: 14px", + }, + { + name: "refCommandNo", + align: "left", + label: "เลขที่คำสั่ง", + sortable: true, + field: "refCommandNo", + format(val, row) { + return row.commandNo && row.commandYear + ? `${row.commandNo}/${row.commandYear}` + : ""; + }, + headerStyle: "font-size: 14px", + style: "font-size: 14px", + }, + { + name: "remark", + align: "left", + label: "หมายเหตุ", + sortable: true, + field: "remark", + headerStyle: "font-size: 14px", + style: "font-size: 14px", + }, +]); +const columns = computed(() => { + if (empType.value === "-employee") { + if (baseColumns.value) { + return baseColumns.value.filter( + (column) => + column.name !== "positionSalaryAmount" && + column.name !== "mouthSalaryAmount" + ); + } + } + return baseColumns.value; +}); +const visibleColumns = ref([ + "commandDateAffect", + "amount", + "positionSalaryAmount", + "mouthSalaryAmount", + "posNo", + "positionName", + "positionType", + "positionLevel", + "commandName", + "refCommandNo", + "remark", +]); +const pagination = ref({ + page: 1, + rowsPerPage: 10, +}); + +const formDataSalary = reactive({ + date: null, //วัน/เดือน/ปี + posNo: "", //ตำแหน่งเลขที่ + templatePos: "", //ต้นแบบ (template) ตำแหน่ง + position: "", //ตำแหน่ง + positionType: "", //ประเภทตำแหน่ง, กลุ่มงาน + positionLevel: "", //ระดับตำแหน่ง, ระดับชั้นงาน + positionLine: "", // สายงาน + positionPathSide: "", //ด้าน/สาขา + positionExecutive: "", //ตำแหน่งทางการบริหาร + salary: null, //เงินเดือน + salaryPos: null, //เงินประจำตำแหน่ง + salaryCompensation: null, //เงินค่าตอบแทนรายเดือน + refCommandNo: "", //เลขที่คำสั่ง + templateDoc: "", //ต้นแบบ (template) เอกสารอ้างอิง + doc: "", //เอกสารอ้างอิง + amountSpecial: null, //เงินค่าตอบแทนพิเศษ +}); + +const modalDialogSalary = ref(false); //แสดง popup ตำแหน่งเงินเดือน +const isStatusEdit = ref(false); //สถานะแก้ไขข้อมูลตำแหน่งเงินเดือน +const salaryId = ref(""); //id ที่ต้องการแก้ไข +const dataLevel = ref([]); //รายการ ตำแหน่งเงินเดือน + +const posNoOptions = ref(store.optionTemplatePos); + +const posTypeOptions = ref([]); +const posTypeOptionsMain = ref([]); +const posLevelOption = ref([]); +const posLevelOptionMain = ref([]); +const positionFielOptiond = ref([]); +const positionFielOptiondMain = ref([]); +const positionAreaOptiond = ref([]); +const positionAreaOptiondMain = ref([]); +const posExecutiveOption = ref([]); +const posExecutiveOptionMain = ref([]); + +const docOption = ref(store.optionTemplateDoc); + +/** function fetch รายการ ตำแหน่งเงินเดือน*/ +async function fetchListSalary() { + showLoader(); + await http + .get( + config.API.profileListSalaryPositionNew(profileId.value, empType.value) + ) + .then((res) => { + rows.value = res.data.result; + rowsMain.value = res.data.result; + }) + .catch((err) => { + messageError($q, err); + }) + .finally(() => { + hideLoader(); + }); +} + +/** function fetch รายการ ตำแหน่งเงินเดือน*/ +function fetchType() { + http + .get(config.API.orgPosType) + .then((res) => { + dataLevel.value = res.data.result; + posTypeOptionsMain.value = res.data.result.map((e: any) => ({ + id: e.id, + name: e.posTypeName, + })); + posTypeOptions.value = posTypeOptionsMain.value; + }) + .catch((err) => { + messageError($q, err); + }); +} + +/** + * function เลือกประเภทตำแหน่ง + * @param val + * @param status + */ +async function updateSelectType(val: string, status: boolean = false) { + const listLevel = await dataLevel.value.find( + (e: any) => e.posTypeName === val + ); + + if (listLevel) { + posLevelOptionMain.value = listLevel.posLevels.map((e: any) => ({ + id: e.id, + name: + empType.value === "" + ? e.posLevelName + : `${listLevel.posTypeShortName} ${e.posLevelName}`, + })); + + formDataSalary.positionLevel = !status ? "" : formDataSalary.positionLevel; + } +} + +/** + * function เปิด dialog ตำแหน่งเงินเดือน + * @param statusEdit แก้ไข,เพิ่ม + * @param data + */ +function onClickOpenDialog(statusEdit: boolean = false, data: any = []) { + if (empType.value === "") { + dataLevel.value.length === 0 && fetchType(); + fetchDataOption(); + fetchDataOptionExecutive(); + } else { + fetchOptionGroup(); + } + + // หาระดับตำแหน่ง + setTimeout(async () => { + statusEdit && (await updateSelectType(data.positionType, true)); + isStatusEdit.value = statusEdit; + }, 500); + + posLevelOptionMain.value = !statusEdit ? [] : posLevelOptionMain.value; + modalDialogSalary.value = true; + salaryId.value = data.id; + formDataSalary.date = statusEdit ? data.date : null; + formDataSalary.posNo = statusEdit ? data.posNo : ""; + formDataSalary.templatePos = ""; + formDataSalary.position = statusEdit ? data.position : ""; + formDataSalary.positionLine = statusEdit ? data.positionLine : ""; + formDataSalary.positionType = statusEdit ? data.positionType : ""; + formDataSalary.positionLevel = statusEdit ? data.positionLevel : ""; + formDataSalary.positionPathSide = statusEdit ? data.positionPathSide : ""; + formDataSalary.positionExecutive = statusEdit ? data.positionExecutive : ""; + formDataSalary.salaryCompensation = statusEdit ? data.mouthSalaryAmount : ""; + formDataSalary.salary = statusEdit + ? data.amount + ? data.amount.toLocaleString() + : "" + : ""; + formDataSalary.salaryPos = statusEdit + ? data.positionSalaryAmount + ? data.positionSalaryAmount.toLocaleString() + : "" + : ""; + formDataSalary.refCommandNo = statusEdit ? data.refCommandNo : ""; + formDataSalary.templateDoc = ""; + formDataSalary.doc = statusEdit ? data.templateDoc : ""; + + formDataSalary.amountSpecial = statusEdit + ? data.amountSpecial === 0 + ? "" + : data.amountSpecial + : ""; +} + +/** function ปิด dialog ตำแหน่งเงินเดือน*/ +function onClickCloseDialog() { + modalDialogSalary.value = false; +} + +/** + * ฟิลเตอร์ข้อมูลจาก input + * @param val ค่าที่ป้อนให้ input + * @param update function จาก quasar + * @param filtername type ที่กำหนด ของ input นั้นๆ + */ +function filterSelector(val: string, update: Function, filtername: string) { + switch (filtername) { + case "pos": + update(() => { + posNoOptions.value = store.optionTemplatePos.filter( + (v: DataOption2) => v.name.indexOf(val) > -1 + ); + }); + break; + case "positionLine": + update(() => { + positionFielOptiond.value = positionFielOptiondMain.value.filter( + (v: DataOption) => v.name.indexOf(val) > -1 + ); + }); + break; + case "posType": + update(() => { + posTypeOptions.value = posTypeOptionsMain.value.filter( + (v: DataOption) => v.name.indexOf(val) > -1 + ); + }); + break; + case "posLevel": + update(() => { + posLevelOption.value = posLevelOptionMain.value.filter( + (v: DataOption) => v.name.indexOf(val) > -1 + ); + }); + break; + case "doc": + update(() => { + docOption.value = store.optionTemplateDoc.filter( + (v: DataOption2) => v.name.indexOf(val) > -1 + ); + }); + break; + case "positionPathSide": + update(() => { + positionAreaOptiond.value = positionAreaOptiondMain.value.filter( + (v: DataOption) => v.name.indexOf(val) > -1 + ); + }); + break; + + case "positionExecutive": + update(() => { + posExecutiveOption.value = posExecutiveOptionMain.value.filter( + (v: DataOption) => v.name.indexOf(val) > -1 + ); + }); + break; + + default: + break; + } +} + +/** + * function เลือกต้นแบบ tamplate ตำแหน่ง + * @param val + */ +function updatePos(val: string) { + formDataSalary.position = val; +} + +/** + * function เลือกต้นแบบ tamplate เอกสาร + * @param val + */ +function updateDoc(val: string) { + formDataSalary.doc = val; +} + +/** function ยืนยันการบันทึกข้อมูล */ +function onSubmit() { + dialogConfirm($q, async () => { + showLoader(); + const formData = { + profileEmployeeId: + !isStatusEdit.value && empType.value !== "" + ? profileId.value + : undefined, + profileId: + !isStatusEdit.value && empType.value === "" + ? profileId.value + : undefined, + date: formDataSalary.date, // วันที่ + posNo: formDataSalary.posNo, //ตำแหน่งเลขที่ + position: formDataSalary.position, //ตำแหน่ง + positionLine: + empType.value === "" ? formDataSalary.positionLine : undefined, //สายงาน + positionPathSide: + empType.value === "" ? formDataSalary.positionPathSide : undefined, // ด้าน/สาขา + positionExecutive: + empType.value === "" ? formDataSalary.positionExecutive : undefined, //ตำแหน่งทางการบริหาร + positionType: formDataSalary.positionType, // ประเภทตำแหน่ง + positionLevel: formDataSalary.positionLevel, // ระดับตำแหน่ง + amount: + typeof formDataSalary.salary === "number" + ? formDataSalary.salary + : Number(formDataSalary?.salary?.replace(/,/g, "")), //เงินเดือนฐาน + positionSalaryAmount: + typeof formDataSalary.salaryPos === "number" + ? formDataSalary.salaryPos + : Number(formDataSalary?.salaryPos?.replace(/,/g, "")), // เงินประจำตำแหน่ง + mouthSalaryAmount: + typeof formDataSalary.salaryCompensation === "number" + ? formDataSalary.salaryCompensation + : Number(formDataSalary?.salaryCompensation?.replace(/,/g, "")), //เงินค่าตอบแทนรายเดือน + amountSpecial: + typeof formDataSalary.amountSpecial === "number" + ? formDataSalary.amountSpecial + : Number(formDataSalary?.amountSpecial?.replace(/,/g, "")), //เงินค่าตอบแทนพิเศษ + refCommandNo: formDataSalary.refCommandNo, // เลขที่คำสั่ง + templateDoc: formDataSalary.doc, // เอกสารอ้างอิง + }; + + try { + const url = isStatusEdit.value + ? config.API.profileListSalaryPositionNew(salaryId.value, empType.value) + : config.API.profileSalaryPositionNew(empType.value); + const method = isStatusEdit.value ? "patch" : "post"; + await http[method](url, formData); + await onClickCloseDialog(); + await fetchListSalary(); + success($q, "บันทึกข้อมูลสำเร็จ"); + } catch (e) { + messageError($q, e); + hideLoader(); + } finally { + } + }); +} + +/** + * function เลื่อนรายการเงินเดือนขึ้น + * @param id รายการเงินเดือน + */ +function onSwapUp(id: string) { + showLoader(); + http + .get(config.API.profileSalaryPositionSwapNew("up", id, empType.value)) + .then(async () => { + await fetchListSalary(); + }) + .catch((err) => { + messageError($q, err); + }) + .finally(() => { + hideLoader(); + }); +} + +/** + * function เลื่อนรายการเงินเดือนลง + * @param id รายการเงินเดือน + */ +function onSwapDown(id: string) { + showLoader(); + http + .get(config.API.profileSalaryPositionSwapNew("down", id, empType.value)) + .then(async () => { + await fetchListSalary(); + }) + .catch((err) => { + messageError($q, err); + }) + .finally(() => { + hideLoader(); + }); +} + +const modalHistory = ref(false); + +/** + * function ดูข้อมูลประวัติการแก้ไขรายการเงินเดือน + * @param id รายการเงินเดือน + */ +function onClikcHistory(id: string) { + salaryId.value = id; + modalHistory.value = true; +} + +/** function fetch ข้อมูลสายงาน*/ +function fetchDataOption() { + showLoader(); + http + .get(config.API.orgPosPosition + `?keyword=&type=ALL`) + .then((res) => { + const data = res.data.result; + + const seen = new Set(); + const seen2 = new Set(); + + const listPositionField = data.filter((item: any) => { + if (seen.has(item.positionField)) { + return false; + } else { + seen.add(item.positionField); + return true; + } + }); + positionFielOptiondMain.value = listPositionField.map((e: any) => ({ + id: e.positionField, + name: e.positionField, + })); + + const listPositionArea = data.filter((item: any) => { + if ( + item.positionArea === null || + item.positionArea === "" || + item.positionArea === "-" || + seen2.has(item.positionArea) + ) { + return false; + } else { + seen2.add(item.positionArea); + return true; + } + }); + positionAreaOptiondMain.value = listPositionArea.map((e: any) => ({ + id: e.positionArea, + name: e.positionArea, + })); + }) + .catch((err) => { + messageError($q, err); + }) + .finally(() => { + hideLoader(); + }); +} + +/** function fetch ข้อมูลตำแหน่งข้อมูลทางการบริหาร*/ +function fetchDataOptionExecutive() { + showLoader(); + http + .get(config.API.orgPosExecutive) + .then((res) => { + const data = res.data.result; + posExecutiveOptionMain.value = data.map((e: any) => ({ + id: e.posExecutiveName, + name: e.posExecutiveName, + })); + }) + .catch((e) => { + messageError($q, e); + }) + .finally(() => { + hideLoader(); + }); +} + +/** function fetch ข้อมูลปรเภทตำแหน่ง*/ +function fetchOptionGroup() { + showLoader(); + http + .get(config.API.orgEmployeeType) + .then((res) => { + dataLevel.value = res.data.result; + posTypeOptionsMain.value = res.data.result.map((e: any) => ({ + id: e.id, + name: e.posTypeName, + })); + posTypeOptions.value = posTypeOptionsMain.value; + }) + .catch((err) => { + messageError($q, err); + }) + .finally(() => { + hideLoader(); + }); +} + +const classInput = (val: boolean) => { + return { + "full-width inputgreen cursor-pointer": val, + "full-width cursor-pointer": !val, + }; +}; + +function onRefCommand(data: ResListSalary) { + modalCommand.value = true; + command.value = data.refCommandNo; + commandId.value = data.commandId; + // commandId.value = 'bdf9da91-ba45-497a-a2b7-cc49e2446d97'; //จำลอง +} + +function serchDataTable() { + rows.value = onSearchDataTable( + keyword.value, + rowsMain.value, + columns.value ? columns.value : [] + ); +} + +/** ทำงานเมื่อ Components ถูกเรียกใช้งาน*/ +onMounted(() => { + fetchListSalary(); +}); + diff --git a/src/modules/04_registryPerson/components/detail/GovernmentInformation/07_PositionHistory.vue b/src/modules/04_registryPerson/components/detail/GovernmentInformation/07_PositionHistory.vue new file mode 100644 index 000000000..8f50b09f4 --- /dev/null +++ b/src/modules/04_registryPerson/components/detail/GovernmentInformation/07_PositionHistory.vue @@ -0,0 +1,387 @@ + + + + diff --git a/src/modules/04_registryPerson/components/detail/GovernmentInformation/Main.vue b/src/modules/04_registryPerson/components/detail/GovernmentInformation/Main.vue index 4cfe2ed29..4c9bc0777 100644 --- a/src/modules/04_registryPerson/components/detail/GovernmentInformation/Main.vue +++ b/src/modules/04_registryPerson/components/detail/GovernmentInformation/Main.vue @@ -35,10 +35,10 @@ const storeRegistry = useRegistryNewDataStore(); > + - diff --git a/src/modules/04_registryPerson/components/detail/Salary/01_PositionSalaryHistory.vue b/src/modules/04_registryPerson/components/detail/Salary/01_PositionSalaryHistory.vue index 0e118bff4..6fad3db7b 100644 --- a/src/modules/04_registryPerson/components/detail/Salary/01_PositionSalaryHistory.vue +++ b/src/modules/04_registryPerson/components/detail/Salary/01_PositionSalaryHistory.vue @@ -34,11 +34,11 @@ const rowsMain = ref([]); //รายการข้อมู const keyword = ref(""); //คำค้นหา const baseColumns = ref([ { - name: "date", + name: "commandDateAffect", align: "left", label: "วัน เดือน ปี", sortable: true, - field: "date", + field: "commandDateAffect", headerStyle: "font-size: 14px", style: "font-size: 14px", format: (v) => date2Thai(v), @@ -83,11 +83,11 @@ const baseColumns = ref([ style: "font-size: 14px", }, { - name: "position", + name: "positionName", align: "left", label: "ตำแหน่ง", sortable: true, - field: "position", + field: "positionName", headerStyle: "font-size: 14px", style: "font-size: 14px", }, @@ -133,6 +133,15 @@ const baseColumns = ref([ label: "ระดับ", sortable: true, field: "positionLevel", + format(val, row) { + return `${ + row.positionLevel + ? row.positionLevel + : row.positionCee + ? row.positionCee + : "-" + }`; + }, headerStyle: "font-size: 14px", style: "font-size: 14px", }, @@ -164,11 +173,11 @@ const baseColumns = ref([ style: "font-size: 14px", }, { - name: "templateDoc", + name: "commandName", align: "left", label: "เอกสารอ้างอิง", sortable: true, - field: "templateDoc", + field: "commandName", headerStyle: "font-size: 14px", style: "font-size: 14px", }, @@ -178,6 +187,20 @@ const baseColumns = ref([ label: "เลขที่คำสั่ง", sortable: true, field: "refCommandNo", + format(val, row) { + return row.commandNo && row.commandYear + ? `${row.commandNo}/${row.commandYear}` + : ""; + }, + headerStyle: "font-size: 14px", + style: "font-size: 14px", + }, + { + name: "remark", + align: "left", + label: "หมายเหตุ", + sortable: true, + field: "remark", headerStyle: "font-size: 14px", style: "font-size: 14px", }, @@ -202,12 +225,12 @@ const baseColumns = ref([ }, ]); const visibleColumns = ref([ - "date", + "commandDateAffect", "amount", "positionSalaryAmount", "mouthSalaryAmount", "oc", - "position", + "positionName", "posNo", "positionLine", "positionPathSide", @@ -216,8 +239,9 @@ const visibleColumns = ref([ "positionExecutive", "positionExecutiveSide", "salaryClass", - "templateDoc", + "commandName", "refCommandNo", + "remark", "lastUpdateFullName", "lastUpdatedAt", ]); diff --git a/src/modules/04_registryPerson/views/listView.vue b/src/modules/04_registryPerson/views/listView.vue index 8ecd04468..89f64532f 100644 --- a/src/modules/04_registryPerson/views/listView.vue +++ b/src/modules/04_registryPerson/views/listView.vue @@ -779,6 +779,11 @@ onMounted(async () => { +