From 3482ec0ae43b4a2086e8fb83bd85ee033242eaa4 Mon Sep 17 00:00:00 2001 From: waruneeta Date: Fri, 24 Nov 2023 16:52:10 +0700 Subject: [PATCH] =?UTF-8?q?=E0=B8=9B=E0=B8=A3=E0=B8=B1=E0=B8=9A=E0=B8=A7?= =?UTF-8?q?=E0=B8=B4=E0=B8=99=E0=B8=B1=E0=B8=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/interface/request/main/main.ts | 17 +- .../{4_Order => !4_Order}/MainPage.vue | 0 .../{4_Order => !4_Order}/OrderPage.vue | 0 .../{4_Order => !4_Order}/Step01.vue | 0 .../{4_Order => !4_Order}/Step02.vue | 0 .../{4_Order => !4_Order}/Step03.vue | 0 .../{4_Order => !4_Order}/TableOrder.vue | 0 .../3_InvestigateDisciplinary/EditPage.vue | 5 +- .../4_Result/DialogSendToCommand.vue | 300 ++++++++++++++++++ .../components/4_Result/EditPage.vue | 140 ++++++++ .../components/4_Result/Form.vue | 142 +++++++++ .../components/4_Result/MainPage.vue | 116 +++++++ .../components/4_Result/Table.vue | 189 +++++++++++ .../11_discipline/interface/request/result.ts | 10 + .../interface/response/complaint.ts | 6 +- src/modules/11_discipline/router.ts | 131 +++++--- .../11_discipline/store/ComplaintsStore.ts | 10 +- .../11_discipline/store/ResultStore.ts | 226 +++++++++++++ 18 files changed, 1222 insertions(+), 70 deletions(-) rename src/modules/11_discipline/components/{4_Order => !4_Order}/MainPage.vue (100%) rename src/modules/11_discipline/components/{4_Order => !4_Order}/OrderPage.vue (100%) rename src/modules/11_discipline/components/{4_Order => !4_Order}/Step01.vue (100%) rename src/modules/11_discipline/components/{4_Order => !4_Order}/Step02.vue (100%) rename src/modules/11_discipline/components/{4_Order => !4_Order}/Step03.vue (100%) rename src/modules/11_discipline/components/{4_Order => !4_Order}/TableOrder.vue (100%) create mode 100644 src/modules/11_discipline/components/4_Result/DialogSendToCommand.vue create mode 100644 src/modules/11_discipline/components/4_Result/EditPage.vue create mode 100644 src/modules/11_discipline/components/4_Result/Form.vue create mode 100644 src/modules/11_discipline/components/4_Result/MainPage.vue create mode 100644 src/modules/11_discipline/components/4_Result/Table.vue create mode 100644 src/modules/11_discipline/interface/request/result.ts create mode 100644 src/modules/11_discipline/store/ResultStore.ts diff --git a/src/interface/request/main/main.ts b/src/interface/request/main/main.ts index 39bb0ed30..efb3da8ad 100644 --- a/src/interface/request/main/main.ts +++ b/src/interface/request/main/main.ts @@ -419,37 +419,36 @@ const menuList = readonly([ icon: "mdi-scale-balance", activeIcon: "mdi-calendar", label: "วินัย", - path: "/discipline", role: "discipline", children: [ { key: 11.1, label: "เรื่องร้องเรียน", - path: "/discipline-complaints", + path: "disciplineComplaints", role: "discipline", }, { key: 11.2, label: "สืบสวนข้อเท็จจริง", - path: "/discipline-investigatefacts", + path: "disciplineInvestigatefacts", role: "discipline", }, { key: 11.3, label: "สอบสวนความผิดวินัย", - path: "/discipline-disciplinary", + path: "disciplineDisciplinary", role: "discipline", }, { key: 11.4, - label: "ออกคำสั่ง", - path: "/disciplineorder", + label: "สรุปผลการพิจารณาทางวินัย", + path: "disciplineResult", role: "discipline", }, { key: 11.5, label: "รายงาน", - path: "/discipline-report", + path: "disciplineReport", role: "discipline", }, { @@ -460,12 +459,12 @@ const menuList = readonly([ children: [ { label: "กรรมการ", - path: "/discipline-director", + path: "disciplineDirector", role: "discipline", }, { label: "ช่องทางการร้องเรียน", - path: "/discipline-channel", + path: "disciplineChannel", role: "discipline", }, ], diff --git a/src/modules/11_discipline/components/4_Order/MainPage.vue b/src/modules/11_discipline/components/!4_Order/MainPage.vue similarity index 100% rename from src/modules/11_discipline/components/4_Order/MainPage.vue rename to src/modules/11_discipline/components/!4_Order/MainPage.vue diff --git a/src/modules/11_discipline/components/4_Order/OrderPage.vue b/src/modules/11_discipline/components/!4_Order/OrderPage.vue similarity index 100% rename from src/modules/11_discipline/components/4_Order/OrderPage.vue rename to src/modules/11_discipline/components/!4_Order/OrderPage.vue diff --git a/src/modules/11_discipline/components/4_Order/Step01.vue b/src/modules/11_discipline/components/!4_Order/Step01.vue similarity index 100% rename from src/modules/11_discipline/components/4_Order/Step01.vue rename to src/modules/11_discipline/components/!4_Order/Step01.vue diff --git a/src/modules/11_discipline/components/4_Order/Step02.vue b/src/modules/11_discipline/components/!4_Order/Step02.vue similarity index 100% rename from src/modules/11_discipline/components/4_Order/Step02.vue rename to src/modules/11_discipline/components/!4_Order/Step02.vue diff --git a/src/modules/11_discipline/components/4_Order/Step03.vue b/src/modules/11_discipline/components/!4_Order/Step03.vue similarity index 100% rename from src/modules/11_discipline/components/4_Order/Step03.vue rename to src/modules/11_discipline/components/!4_Order/Step03.vue diff --git a/src/modules/11_discipline/components/4_Order/TableOrder.vue b/src/modules/11_discipline/components/!4_Order/TableOrder.vue similarity index 100% rename from src/modules/11_discipline/components/4_Order/TableOrder.vue rename to src/modules/11_discipline/components/!4_Order/TableOrder.vue diff --git a/src/modules/11_discipline/components/3_InvestigateDisciplinary/EditPage.vue b/src/modules/11_discipline/components/3_InvestigateDisciplinary/EditPage.vue index 0966f5325..302fab8d3 100644 --- a/src/modules/11_discipline/components/3_InvestigateDisciplinary/EditPage.vue +++ b/src/modules/11_discipline/components/3_InvestigateDisciplinary/EditPage.vue @@ -157,6 +157,7 @@ function confirmCancelInvestigate() { /** โหลดข้อมูลเมื่อเข้าหน้านี้ */ onMounted(async () => { + store.tabMenu = 'disciplinary' await fetchDetailDisciplinary(); }); @@ -196,12 +197,12 @@ watch( class="q-mr-sm" @click="$router.push(`/discipline/disciplinary`)" /> -
แก้ไขการสอบสวนความผิดทางวินัย {{ id }}#id
+
แก้ไขการสอบสวนความผิดทางวินัย
diff --git a/src/modules/11_discipline/components/4_Result/DialogSendToCommand.vue b/src/modules/11_discipline/components/4_Result/DialogSendToCommand.vue new file mode 100644 index 000000000..393b3122f --- /dev/null +++ b/src/modules/11_discipline/components/4_Result/DialogSendToCommand.vue @@ -0,0 +1,300 @@ + + \ No newline at end of file diff --git a/src/modules/11_discipline/components/4_Result/EditPage.vue b/src/modules/11_discipline/components/4_Result/EditPage.vue new file mode 100644 index 000000000..3584fa57b --- /dev/null +++ b/src/modules/11_discipline/components/4_Result/EditPage.vue @@ -0,0 +1,140 @@ + + + + diff --git a/src/modules/11_discipline/components/4_Result/Form.vue b/src/modules/11_discipline/components/4_Result/Form.vue new file mode 100644 index 000000000..47832b5ff --- /dev/null +++ b/src/modules/11_discipline/components/4_Result/Form.vue @@ -0,0 +1,142 @@ + + diff --git a/src/modules/11_discipline/components/4_Result/MainPage.vue b/src/modules/11_discipline/components/4_Result/MainPage.vue new file mode 100644 index 000000000..9f17b8d22 --- /dev/null +++ b/src/modules/11_discipline/components/4_Result/MainPage.vue @@ -0,0 +1,116 @@ + + + + + diff --git a/src/modules/11_discipline/components/4_Result/Table.vue b/src/modules/11_discipline/components/4_Result/Table.vue new file mode 100644 index 000000000..443780074 --- /dev/null +++ b/src/modules/11_discipline/components/4_Result/Table.vue @@ -0,0 +1,189 @@ + + + + + diff --git a/src/modules/11_discipline/interface/request/result.ts b/src/modules/11_discipline/interface/request/result.ts new file mode 100644 index 000000000..b35e7a1e0 --- /dev/null +++ b/src/modules/11_discipline/interface/request/result.ts @@ -0,0 +1,10 @@ +interface FormData { + detail: string; +} + +interface FormRef { + detail: object | null; + [key: string]: any; +} + +export type { FormData, FormRef }; diff --git a/src/modules/11_discipline/interface/response/complaint.ts b/src/modules/11_discipline/interface/response/complaint.ts index 01cce00c8..416cfb5eb 100644 --- a/src/modules/11_discipline/interface/response/complaint.ts +++ b/src/modules/11_discipline/interface/response/complaint.ts @@ -2,7 +2,7 @@ interface DataListRow { id: string; personId: string; title: string; - dateReceived: Date | "-"; + dateReceived: string; respondentType: string; offenseDetails: string; createdAt: string; @@ -34,12 +34,12 @@ interface DataList { id: string; personId: string; title: string; - dateReceived: Date | "-"; + dateReceived: Date | null; respondentType: string; offenseDetails: string; createdAt: Date; levelConsideration: string; - dateConsideration: Date; + dateConsideration: Date | null; status: string; } diff --git a/src/modules/11_discipline/router.ts b/src/modules/11_discipline/router.ts index 126dca14c..f69308f15 100644 --- a/src/modules/11_discipline/router.ts +++ b/src/modules/11_discipline/router.ts @@ -14,8 +14,6 @@ const disciplinaryEdit = () => import( "@/modules/11_discipline/components/3_InvestigateDisciplinary/EditPage.vue" ); -const oredrMain = () => - import("@/modules/11_discipline/components/4_Order/MainPage.vue"); const report = () => import("@/modules/11_discipline/components/5_Report/MainPage.vue"); const directorMain = () => @@ -53,198 +51,227 @@ const InvestigateDisciplinaryAdd = () => import( "@/modules/11_discipline/components/3_InvestigateDisciplinary/AddPage.vue" ); -const orderPage = () => - import("@/modules/11_discipline/components/4_Order/OrderPage.vue"); +// const orderPage = () => +// import("@/modules/11_discipline/components/4_Order/OrderPage.vue"); +// const oredrMain = () => +// import("@/modules/11_discipline/components/4_Order/MainPage.vue"); + +/** หน้ารายการผลการพิจารณาทางวินัย */ +const resultMainPage = () => + import("@/modules/11_discipline/components/4_Result/MainPage.vue"); + const resultEditPage = () => + import("@/modules/11_discipline/components/4_Result/EditPage.vue"); + export default [ { path: "/discipline/complaints", - name: "/discipline-complaints", + name: "disciplineComplaints", component: complaintMain, meta: { Auth: true, Key: [11.1], - Role: "coin", + Role: "discipline", }, }, { path: "/discipline/complaints/add", - name: "/discipline-complaints-add", + name: "disciplineComplaintsAdd", component: complaintAdd, meta: { Auth: true, Key: [11.1], - Role: "coin", + Role: "discipline", }, }, { path: "/discipline/complaints/:id", - name: "/discipline-complaints-edit", + name: "disciplineComplaintsEdit", component: complaintEdit, meta: { Auth: true, Key: [11.1], - Role: "coin", + Role: "discipline", }, }, { path: "/discipline/investigatefacts", - name: "/discipline-investigatefacts", + name: "disciplineInvestigatefacts", component: factsMain, meta: { Auth: true, Key: [11.2], - Role: "coin", + Role: "discipline", }, }, { path: "/discipline/disciplinary", - name: "/discipline-disciplinary", + name: "disciplineDisciplinary", component: disciplinaryMain, meta: { Auth: true, Key: [11.3], - Role: "coin", + Role: "discipline", }, }, { path: "/discipline/disciplinary/:id", - name: "/discipline-disciplinaryEdit", + name: "disciplineDisciplinaryEdit", component: disciplinaryEdit, meta: { Auth: true, Key: [11.3], - Role: "coin", + Role: "discipline", }, }, { - path: "/discipline-order", - name: "/disciplineorder", - component: oredrMain, + path: "/discipline-result", + name: "disciplineResult", + component: resultMainPage, meta: { Auth: true, Key: [11.4], - Role: "coin", + Role: "discipline", + }, + }, + { + path: "/discipline-result/:id", + name: "disciplineEditResult", + component: resultEditPage, + meta: { + Auth: true, + Key: [11.4], + Role: "discipline", }, }, { path: "/discipline/report", - name: "/discipline-report", + name: "disciplineReport", component: report, meta: { Auth: true, Key: [11.5], - Role: "coin", + Role: "discipline", }, }, { path: "/discipline/report/:type", - name: "/discipline-reportType", + name: "disciplineReportType", component: reportType, meta: { Auth: true, Key: [11.5], - Role: "coin", + Role: "discipline", }, }, // ข้อมูลพื้นฐาน กรรมการ { path: "/discipline/director", - name: "/discipline-director", + name: "disciplineDirector", component: directorMain, meta: { Auth: true, Key: [11.6], - Role: "coin", + Role: "discipline", }, }, { path: "/discipline/director/add", - name: "discipline-director-add", + name: "disciplineDirectorAdd", component: directorAdd, meta: { Auth: true, Key: [11.6], - Role: "coin", + Role: "discipline", }, }, { path: "/discipline/director/:id", - name: "discipline-director-edit", + name: "disciplineDirectorEdit", component: directorEdit, meta: { Auth: true, Key: [11.6], - Role: "coin", + Role: "discipline", }, }, { path: "/discipline/channel", - name: "/discipline-channel", + name: "disciplineChannel", component: channelMain, meta: { Auth: true, Key: [11.6], - Role: "coin", + Role: "discipline", }, }, { path: "/discipline/investigatefacts/add", - name: "/discipline-investigatefactsAdd", + name: "disciplineInvestigatefactsAdd", component: investigatefactsAdd, meta: { Auth: true, Key: [11.2], - Role: "coin", + Role: "discipline", }, }, { path: "/discipline/investigatefacts/:id", - name: "/discipline-investigatefactsEdit", + name: "disciplineInvestigatefactsEdit", component: investigatefactsEdit, meta: { Auth: true, Key: [11.2], - Role: "coin", + Role: "discipline", }, }, { path: "/discipline/investigate-disciplinary/add", - name: "discipline_investigate_disciplinary_add", + name: "disciplineInvestigateDisciplinaryAdd", component: InvestigateDisciplinaryAdd, meta: { Auth: true, Key: [11.3], - Role: "coin", + Role: "discipline", }, }, { path: "/discipline/channel/add", - name: "/discipline-channelAdd", + name: "disciplineChannelAdd", component: channelAdd, meta: { Auth: true, Key: [11.2], - Role: "coin", + Role: "discipline", }, }, { path: "/discipline/channel/:id", - name: "/discipline-channelEdit", + name: "disciplineChannelEdit", component: channelEdit, meta: { Auth: true, Key: [11.2], - Role: "coin", - }, - }, - { - path: "/discipline-order/add", - name: "/disciplineorder-add", - component: orderPage, - meta: { - Auth: true, - Key: [11.4], - Role: "coin", + Role: "discipline", }, }, + // { + // path: "/discipline-order", + // name: "disciplineOrder", + // component: oredrMain, + // meta: { + // Auth: true, + // Key: [11.4], + // Role: "discipline", + // }, + // }, + // { + // path: "/discipline-order/add", + // name: "disciplineOrderAdd", + // component: orderPage, + // meta: { + // Auth: true, + // Key: [11.4], + // Role: "discipline", + // }, + // }, ]; diff --git a/src/modules/11_discipline/store/ComplaintsStore.ts b/src/modules/11_discipline/store/ComplaintsStore.ts index ff13a70ac..6e9b2992f 100644 --- a/src/modules/11_discipline/store/ComplaintsStore.ts +++ b/src/modules/11_discipline/store/ComplaintsStore.ts @@ -33,19 +33,21 @@ export const useComplainstDataStore = defineStore( } function fetchComplainst(data: DataList[]) { - let datalist: DataListRow[] = data.map((e: DataList) => ({ + let dataList: DataListRow[] = data.map((e: DataList) => ({ id: e.id, personId: e.personId, title: e.title, - dateReceived: e.dateReceived ? e.dateReceived : "-", + dateReceived: e.dateReceived ? date2Thai(e.dateReceived) : "-", respondentType: convertComplaintType(e.respondentType), offenseDetails: offenseDetailsTran(e.offenseDetails), createdAt: date2Thai(e.createdAt)!, levelConsideration: levelConsiderationTran(e.levelConsideration), - dateConsideration: date2Thai(e.dateConsideration)!, + dateConsideration: e.dateConsideration + ? date2Thai(e.dateConsideration) + : "-", status: statusTothai(e.status), })); - rows.value = datalist; + rows.value = dataList; } // filter options diff --git a/src/modules/11_discipline/store/ResultStore.ts b/src/modules/11_discipline/store/ResultStore.ts new file mode 100644 index 000000000..947b250bb --- /dev/null +++ b/src/modules/11_discipline/store/ResultStore.ts @@ -0,0 +1,226 @@ +import { defineStore } from "pinia"; +import { ref } from "vue"; +import type { QTableProps } from "quasar"; +import type { + investigateDisDataRowType, + DataOption, + directorType, +} from "@/modules/11_discipline/interface/index/Main"; +import { useCounterMixin } from "@/stores/mixin"; +const mixin = useCounterMixin(); +const { date2Thai } = mixin; + +export const useDisciplineResultStore = defineStore( + "disciplineResultStore", + () => { + const tabMenu = ref("result"); + const rows = ref([]); + const rows2 = ref([]); + const selected = ref([]); + + async function fecthList(data: investigateDisDataRowType[]) { + let datalist: investigateDisDataRowType[] = data.map((e: any) => ({ + id: e.id, + subject: e.subject, + interrogated: e.interrogated, + caseFault: e.caseFault, + dateInvestigate: date2Thai(new Date(e.dateInvestigate)), + })); + rows.value = datalist; + } + + async function fecthDirector(data: directorType[]) { + let datalistDirector: directorType[] = data.map((e: directorType) => ({ + nameDirector: e.nameDirector, + position: e.position, + duty: e.duty, + email: e.email, + telephone: e.telephone, + role: e.role, + })); + rows2.value = datalistDirector; + selected.value = rows2.value; + console.log(rows2.value); + } + + const visibleColumns = ref([ + "no", + "subject", + "interrogated", + "fault", + "penaltyLevel", + "caseFault", + "dateInvestigate", + "status", + ]); + + const columns = ref([ + { + name: "no", + align: "center", + label: "ลำดับ", + sortable: false, + field: "no", + headerStyle: "font-size: 14px", + style: "font-size: 14px", + }, + { + name: "subject", + align: "left", + label: "เรื่อง", + sortable: true, + field: "subject", + headerStyle: "font-size: 14px", + style: "font-size: 14px", + }, + { + name: "interrogated", + align: "left", + label: "ผู้ถูกสืบสวน", + sortable: true, + field: "interrogated", + headerStyle: "font-size: 14px", + style: "font-size: 14px", + sort: (a: string, b: string) => + a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }), + }, + { + name: "fault", + align: "left", + label: "ลักษณะความผิด", + sortable: true, + field: "fault", + headerStyle: "font-size: 14px", + style: "font-size: 14px", + sort: (a: string, b: string) => + a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }), + }, + { + name: "penaltyLevel", + align: "left", + label: "ระดับโทษความผิด", + sortable: true, + field: "penaltyLevel", + headerStyle: "font-size: 14px", + style: "font-size: 14px", + sort: (a: string, b: string) => + a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }), + }, + { + name: "caseFault", + align: "left", + label: "กรณีความผิด", + sortable: true, + field: "caseFault", + headerStyle: "font-size: 14px", + style: "font-size: 14px", + sort: (a: string, b: string) => + a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }), + }, + { + name: "dateInvestigate", + align: "left", + label: "วันที่สอบสวน", + sortable: true, + field: "dateInvestigate", + headerStyle: "font-size: 14px", + style: "font-size: 14px", + }, + { + name: "status", + align: "left", + label: "สถานะ", + sortable: true, + field: "status", + headerStyle: "font-size: 14px", + style: "font-size: 14px", + }, + ]); + + const visibleColumnsDirector = ref([ + "no", + "name", + "position", + "duty", + "email", + "telephone", + "role", + ]); + const columnsDirector = ref([ + { + name: "no", + align: "left", + label: "ลำดับ", + sortable: false, + field: "no", + headerStyle: "font-size: 14px", + style: "font-size: 14px", + }, + { + name: "name", + align: "left", + label: "ชื่อ - นามสกุล", + sortable: true, + field: "name", + headerStyle: "font-size: 14px", + style: "font-size: 14px", + }, + { + name: "position", + align: "left", + label: "ตำแหน่ง", + sortable: true, + field: "position", + headerStyle: "font-size: 14px", + style: "font-size: 14px", + }, + { + name: "duty", + align: "left", + label: "หน้าที่", + sortable: true, + field: "duty", + headerStyle: "font-size: 14px", + style: "font-size: 14px", + }, + { + name: "email", + align: "left", + label: "อีเมล", + sortable: true, + field: "email", + headerStyle: "font-size: 14px", + style: "font-size: 14px", + }, + { + name: "telephone", + align: "left", + label: "เบอร์โทรศัพท์", + sortable: true, + field: "telephone", + headerStyle: "font-size: 14px", + style: "font-size: 14px", + }, + { + name: "role", + align: "left", + label: "จำนวนเรื่องสืบสวน", + sortable: true, + field: "role", + headerStyle: "font-size: 14px", + style: "font-size: 14px", + }, + ]); + return { + tabMenu, + fecthList, + rows, + rows2, + fecthDirector, + visibleColumns, + columns, + visibleColumnsDirector, + columnsDirector, + }; + } +);