diff --git a/src/interface/request/main/main.ts b/src/interface/request/main/main.ts index 3941c81f6..faf46e4d3 100644 --- a/src/interface/request/main/main.ts +++ b/src/interface/request/main/main.ts @@ -211,6 +211,14 @@ const menuList = readonly([ path: "insignia", role: "insignia", }, + { + key: 9, + icon: "mdi-medal-outline", + activeIcon: "mdi-medal", + label: "ทะเบียนประวัติลูกจ้าง", + path: "registryEmployee", + role: "registryEmployee", + }, ]); const tabList = readonly([ diff --git a/src/modules/05_placement/components/OrderPlacement/MainOrderPlacement.vue b/src/modules/05_placement/components/OrderPlacement/MainOrderPlacement.vue index 83047e607..09bc164d9 100644 --- a/src/modules/05_placement/components/OrderPlacement/MainOrderPlacement.vue +++ b/src/modules/05_placement/components/OrderPlacement/MainOrderPlacement.vue @@ -20,7 +20,7 @@ :borderless="false" :outlined="true" :hide-dropdown-icon="false" - @update:model-value="searchfiscalyear" + @update:model-value="searchFilterTable" />
@@ -161,6 +161,13 @@ > {{ props.row.OrderNum }} + + {{ props.row.OrderType }} + {{ props.row.OrderStatus }} - { return dateText(value); }; +const visibleColumns = ref([ + "Order", + "OrderType", + "OrderNum", + "OrderDate", + "OrderBy", + "Signer", + "OrderStatus", +]); //ค้นหา คอลัมน์ คอลัมน์ที่แสดง + // หัวตาราง const columns = ref([ { @@ -274,13 +290,15 @@ const columns = ref([ style: "font-size: 14px", }, { - name: "fiscalYear", + name: "OrderType", align: "left", - label: "ปีงบประมาณ", - sortable: true, - field: "fiscalYear", + label: "ประเภท", + sortable: false, + field: "OrderType", headerStyle: "font-size: 14px", style: "font-size: 14px", + sort: (a: string, b: string) => + a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }), }, { name: "OrderDate", @@ -327,15 +345,13 @@ const columns = ref([ a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }), }, { - name: "OrderType", + name: "fiscalYear", align: "left", - label: "ประเภท", - sortable: false, - field: "OrderType", + label: "ปีงบประมาณ", + sortable: true, + field: "fiscalYear", headerStyle: "font-size: 14px", style: "font-size: 14px", - sort: (a: string, b: string) => - a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }), }, ]); @@ -364,9 +380,9 @@ const rows = ref([ }, { Order: "คำสั่งแต่งตั้งผู้สอบแข่งขันได้", - OrderNum: "1/2565", - fiscalYear: 2565, - OrderDate: "30 พ.ค. 2565", + OrderNum: "1/2564", + fiscalYear: 2564, + OrderDate: "30 พ.ค. 2564", OrderBy: "สำนักงาน กทม.", Signer: "นาม สมคิด ยอดใจ ", OrderStatus: "บัญชีแนบท้าย", @@ -374,19 +390,29 @@ const rows = ref([ }, { Order: "คำสั่งแต่งตั้งผู้สอบแข่งขันได้", - OrderNum: "1/2565", - fiscalYear: 2565, - OrderDate: "30 พ.ค. 2565", + OrderNum: "1/2564", + fiscalYear: 2564, + OrderDate: "30 พ.ค. 2564", OrderBy: "สำนักงาน กทม.", Signer: "นาม สมคิด ยอดใจ ", OrderStatus: "บัญชีแนบท้าย", - OrderType: "คำสั่งบรรจุและแต่งตั้ง", + OrderType: "คำสั่งย้าย", }, { Order: "คำสั่งแต่งตั้งผู้สอบแข่งขันได้", - OrderNum: "1/2565", - fiscalYear: 2565, - OrderDate: "30 พ.ค. 2565", + OrderNum: "1/2564", + fiscalYear: 2564, + OrderDate: "30 พ.ค. 2564", + OrderBy: "สำนักงาน กทม.", + Signer: "นาม สมคิด ยอดใจ ", + OrderStatus: "ส่งสำเนาคำสั่ง", + OrderType: "คำสั่งย้าย", + }, + { + Order: "คำสั่งแต่งตั้งผู้สอบแข่งขันได้", + OrderNum: "1/2564", + fiscalYear: 2564, + OrderDate: "30 พ.ค. 2564", OrderBy: "สำนักงาน กทม.", Signer: "นาม สมคิด ยอดใจ ", OrderStatus: "ส่งสำเนาคำสั่ง", @@ -394,19 +420,9 @@ const rows = ref([ }, { Order: "คำสั่งแต่งตั้งผู้สอบแข่งขันได้", - OrderNum: "1/2565", - fiscalYear: 2565, - OrderDate: "30 พ.ค. 2565", - OrderBy: "สำนักงาน กทม.", - Signer: "นาม สมคิด ยอดใจ ", - OrderStatus: "ส่งสำเนาคำสั่ง", - OrderType: "คำสั่งบรรจุและแต่งตั้ง", - }, - { - Order: "คำสั่งแต่งตั้งผู้สอบแข่งขันได้", - OrderNum: "1/2565", - fiscalYear: 2565, - OrderDate: "30 พ.ค. 2565", + OrderNum: "1/2566", + fiscalYear: 2566, + OrderDate: "30 พ.ค. 2566", OrderBy: "สำนักงาน กทม.", Signer: "นาม สมคิด ยอดใจ ", OrderStatus: "รอลงนาม", @@ -414,13 +430,13 @@ const rows = ref([ }, { Order: "คำสั่งแต่งตั้งผู้สอบแข่งขันได้", - OrderNum: "1/2565", - fiscalYear: 2565, - OrderDate: "30 พ.ค. 2565", + OrderNum: "1/2566", + fiscalYear: 2566, + OrderDate: "30 พ.ค. 2566", OrderBy: "สำนักงาน กทม.", Signer: "นาม สมคิด ยอดใจ ", OrderStatus: "ออกคำสั่งแล้ว", - OrderType: "คำสั่งบรรจุและแต่งตั้ง", + OrderType: "คำสั่งแต่งตั้ง", }, { Order: "คำสั่งแต่งตั้งผู้สอบแข่งขันได้", @@ -434,19 +450,19 @@ const rows = ref([ }, { Order: "คำสั่งแต่งตั้งผู้สอบแข่งขันได้", - OrderNum: "1/2565", - fiscalYear: 2565, - OrderDate: "30 พ.ค. 2565", + OrderNum: "1/2566", + fiscalYear: 2566, + OrderDate: "30 พ.ค. 2566", OrderBy: "สำนักงาน กทม.", Signer: "นาม สมคิด ยอดใจ ", OrderStatus: "ออกคำสั่งแล้ว", - OrderType: "คำสั่งบรรจุและแต่งตั้ง", + OrderType: "คำสั่งแต่งตั้ง", }, { Order: "คำสั่งแต่งตั้งผู้สอบแข่งขันได้", - OrderNum: "1/2565", - fiscalYear: 2565, - OrderDate: "30 พ.ค. 2565", + OrderNum: "1/2566", + fiscalYear: 2566, + OrderDate: "30 พ.ค. 2566", OrderBy: "สำนักงาน กทม.", Signer: "นาม สมคิด ยอดใจ ", OrderStatus: "ออกคำสั่งแล้ว", @@ -687,18 +703,14 @@ const resetFilter = () => { }; const attrs = ref(useAttrs()); -const visibleColumns = ref([ - "Order", - "OrderNum", - "OrderDate", - "OrderBy", - "Signer", - "OrderStatus", -]); //ค้นหา คอลัมน์ คอลัมน์ที่แสดง const searchFilterTable = async () => { // console.log('Input value changed:', examTime.value, examType.value, expiredAccount.value); - await DataStore.DataUpdateOrder(OrderType.value, OrderStatus.value); + await DataStore.DataUpdateOrder( + OrderType.value, + OrderStatus.value, + fiscalyear.value + ); UpdataData.value = DataStore.DataMainUpdateOrder; }; // UpdataData.value = DataStore.DataMainUpdate; diff --git a/src/modules/05_placement/store.ts b/src/modules/05_placement/store.ts index 296a38b78..634c46309 100644 --- a/src/modules/05_placement/store.ts +++ b/src/modules/05_placement/store.ts @@ -222,23 +222,51 @@ export const useOrderPlacementDataStore = defineStore("placementOrder", () => { const DataMainOrder = (val: FormOrderPlacementMainData[]) => (DataMainOrigOrder.value = val); - const DataUpdateOrder = (filter_1: string, filter_2: string) => { + const DataUpdateOrder = ( + filter_1: string, + filter_2: string, + filterYear: number | null + ) => { DataMainUpdateOrder.value = []; - if (filter_1 === "" && filter_2 === "") { + if (filter_1 === "" && filter_2 === "" && filterYear === 0) { DataMainUpdateOrder.value = DataMainOrigOrder.value; - } else if (filter_1 !== "" && filter_2 === "") { + } else if (filter_1 !== "" && filter_2 === "" && filterYear === 0) { DataMainUpdateOrder.value = DataMainOrigOrder.value.filter( (item) => item.OrderType === filter_1 ); - } else if (filter_1 !== "" && filter_2 !== "") { + } else if (filter_1 !== "" && filter_2 !== "" && filterYear === null) { DataMainUpdateOrder.value = DataMainOrigOrder.value.filter( (item) => item.OrderType === filter_1 && item.OrderStatus === filter_2 ); - } else if (filter_1 === "" && filter_2 !== "") { + } else if (filter_1 !== "" && filter_2 === "" && filterYear !== 0) { + DataMainUpdateOrder.value = DataMainOrigOrder.value.filter( + (item) => item.OrderType === filter_1 && item.fiscalYear === filterYear + ); + } else if (filter_1 === "" && filter_2 !== "" && filterYear === 0) { DataMainUpdateOrder.value = DataMainOrigOrder.value.filter( (item) => item.OrderStatus === filter_2 ); + } else if (filter_1 === "" && filter_2 === "" && filterYear !== 0) { + DataMainUpdateOrder.value = DataMainOrigOrder.value.filter( + (item) => item.fiscalYear === filterYear + ); + } else if (filter_1 === "" && filter_2 !== "" && filterYear !== null) { + DataMainUpdateOrder.value = DataMainOrigOrder.value.filter( + (item) => + item.OrderStatus === filter_2 && item.fiscalYear === filterYear + ); + } else if (filter_1 !== "" && filter_2 !== "" && filterYear === 0) { + DataMainUpdateOrder.value = DataMainOrigOrder.value.filter( + (item) => item.OrderStatus === filter_2 && item.OrderType === filter_1 + ); + } else if (filter_1 !== "" && filter_2 !== "" && filterYear !== null) { + DataMainUpdateOrder.value = DataMainOrigOrder.value.filter( + (item) => + item.OrderType === filter_1 && + item.OrderStatus === filter_2 && + item.fiscalYear === filterYear + ); } }; diff --git a/src/modules/08_registryEmployee/router.ts b/src/modules/08_registryEmployee/router.ts new file mode 100644 index 000000000..f65e37a06 --- /dev/null +++ b/src/modules/08_registryEmployee/router.ts @@ -0,0 +1,30 @@ +/** + * Router ระบบทะเบียนประวัติ}6d0hk' (Registry) + */ + +const Main = () => import("@/modules/08_registryEmployee/views/Main.vue"); +const Detail = () => + import("@/modules/08_registryEmployee/components/Profile.vue"); + +export default [ + { + path: "/registryEmployee", + name: "registryEmployee", + component: Main, + meta: { + Auth: true, + Key: [9], + Role: "registryEmployee", + }, + }, + { + path: "/registryEmployee/:id", + name: "registryEmployeeDetail", + component: Detail, + meta: { + Auth: true, + Key: [9], + Role: "registryEmployee", + }, + }, +]; diff --git a/src/modules/08_registryEmployee/store.ts b/src/modules/08_registryEmployee/store.ts new file mode 100644 index 000000000..8b69ec17a --- /dev/null +++ b/src/modules/08_registryEmployee/store.ts @@ -0,0 +1,83 @@ +import { ref, computed } from "vue"; +import { defineStore } from "pinia"; + +export const useProfileDataStore = defineStore("profile", () => { + interface profile { + main: { columns: String[] }; + education: { columns: String[] }; + oldName: { columns: String[] }; + certicate: { columns: String[] }; + train: { columns: String[] }; + insignia: { columns: String[] }; + coined: { columns: String[] }; + assessment: { columns: String[] }; + salary: { columns: String[] }; + discipline: { columns: String[] }; + leave: { columns: String[] }; + talent: { columns: String[] }; + work: { columns: String[] }; + record: { columns: String[] }; + other: { columns: String[] }; + document: { columns: String[] }; + } + + const birthDate = ref(new Date()); + const retireText = ref(null); + const changeRetireText = (val: string | null) => { + retireText.value = val; + }; + const changeBirth = (val: Date) => { + birthDate.value = val; + }; + const profileData = ref({ + main: { columns: [] }, + education: { columns: [] }, + oldName: { columns: [] }, + certicate: { columns: [] }, + train: { columns: [] }, + insignia: { columns: [] }, + coined: { columns: [] }, + assessment: { columns: [] }, + salary: { columns: [] }, + discipline: { columns: [] }, + leave: { columns: [] }, + talent: { columns: [] }, + work: { columns: [] }, + record: { columns: [] }, + other: { columns: [] }, + document: { columns: [] }, + }); + + const changeProfileColumns = (system: String, val: String[]) => { + if (system == "main") profileData.value.main.columns = val; + if (system == "education") profileData.value.education.columns = val; + if (system == "oldName") profileData.value.oldName.columns = val; + if (system == "certicate") profileData.value.certicate.columns = val; + if (system == "train") profileData.value.train.columns = val; + if (system == "insignia") profileData.value.insignia.columns = val; + if (system == "coined") profileData.value.coined.columns = val; + if (system == "assessment") profileData.value.assessment.columns = val; + if (system == "salary") profileData.value.salary.columns = val; + if (system == "discipline") profileData.value.discipline.columns = val; + if (system == "leave") profileData.value.leave.columns = val; + if (system == "talent") profileData.value.talent.columns = val; + if (system == "work") profileData.value.work.columns = val; + if (system == "record") profileData.value.record.columns = val; + if (system == "other") profileData.value.other.columns = val; + if (system == "document") profileData.value.document.columns = val; + localStorage.setItem("profile", JSON.stringify(profileData.value)); + }; + + if (localStorage.getItem("profile") !== null) { + profileData.value = JSON.parse(localStorage.getItem("profile") || "{}"); + } + + return { + profileData, + changeProfileColumns, + birthDate, + changeBirth, + retireText, + changeRetireText, + }; +}); diff --git a/src/modules/08_registryEmployee/views/Main.vue b/src/modules/08_registryEmployee/views/Main.vue new file mode 100644 index 000000000..e69de29bb