diff --git a/src/components/Dialogs/DialogOrgSelectEmployee.vue b/src/components/Dialogs/DialogOrgSelectEmployee.vue
index 50bdd1afa..88129e23c 100644
--- a/src/components/Dialogs/DialogOrgSelectEmployee.vue
+++ b/src/components/Dialogs/DialogOrgSelectEmployee.vue
@@ -701,7 +701,9 @@ onMounted(() => {
name="mdi-star"
color="primary"
v-if="props.row.isDirector"
- />
+ >
+ ผู้อำนวยการ/หัวหน้า
+
diff --git a/src/modules/02_organization/components/DialogFormAgency.vue b/src/modules/02_organization/components/DialogFormAgency.vue
index 500e38279..53f3f93f5 100644
--- a/src/modules/02_organization/components/DialogFormAgency.vue
+++ b/src/modules/02_organization/components/DialogFormAgency.vue
@@ -82,6 +82,7 @@ const formData = reactive({
responsibility: "",
isOfficer: false,
isDeputy: false,
+ misId: "",
});
/**
@@ -120,26 +121,25 @@ function onSubmit() {
["org" + type + "Fax"]: formData.orgFax,
["org" + type + "Rank"]: formData.orgLevel,
["org" + type + "RankSub"]: formData.orgLevelSub,
+ misId: formData.misId ? formData.misId : "",
+ isDeputy:
+ type === "Root"
+ ? formData.isDeputy
+ ? formData.isDeputy
+ : false
+ : undefined,
+ isOfficer:
+ type === "Child1"
+ ? formData.isOfficer
+ ? formData.isOfficer
+ : false
+ : undefined,
+
[nameId]: rootId,
responsibility:
formData.responsibility != null ? formData.responsibility : "",
};
- if (type === "Root") {
- body = {
- ...body,
- isDeputy:
- formData.isDeputy !== undefined ? String(formData.isDeputy) : "",
- };
- }
- if (type === "Child1") {
- body = {
- ...body,
- isOfficer:
- formData.isOfficer !== undefined ? String(formData.isOfficer) : "",
- };
- }
-
//เพิ่มข้อมูล
if (actionType.value === "ADD") {
await http
@@ -205,6 +205,8 @@ function closeClear() {
formData.orgLevel = "";
formData.responsibility = "";
formData.isOfficer = false;
+ formData.isDeputy = false;
+ formData.misId = "";
props.close?.();
}
@@ -402,6 +404,7 @@ watch(
formData.responsibility = props.dataNode.responsibility;
formData.isOfficer = props.dataNode.isOfficer ?? false;
formData.isDeputy = props.dataNode.isDeputy ?? false;
+ formData.misId = props.dataNode.misId;
orgLevelOption.value =
props.dataNode.orgTreeRank === "DEPARTMENT"
? orgLevelOptionMain.value
@@ -596,6 +599,18 @@ watch(
:class="classInput(false)"
/>
+
+
+
([]);
-const rowsData = ref([]);
+const rows = ref([]);
+const rowsData = ref([]);
const pagination = ref({
sortBy: "createdAt",
descending: true,
@@ -126,8 +129,6 @@ const columns = ref([
format: (val) => date2Thai(val),
},
]);
-
-/** คอลัมน์ที่แสดง */
const visibleColumns = ref([
"no",
"fullname",
@@ -140,6 +141,13 @@ const visibleColumns = ref([
"profileType",
]);
+const employeeClass = ref("");
+const employeeClassOp = ref([
+ { id: "", name: "ทั้งหมด" },
+ { id: "OFFICER", name: "ขรก.กทม. สามัญ" },
+ { id: "EMPLOYEE", name: "ลูกจ้างประจำ กทม." },
+]);
+
/**เรียกข้อมูลจาก APi */
async function fectListDecased() {
showLoader();
@@ -147,6 +155,8 @@ async function fectListDecased() {
.get(config.API.listDeceased())
.then((res) => {
const data = res.data.result;
+ console.log(data);
+
rows.value = data;
rowsData.value = data;
})
@@ -172,6 +182,12 @@ function onSearch() {
rowsData.value,
columns.value ? columns.value : []
);
+
+ if (employeeClass.value) {
+ rows.value = rows.value.filter(
+ (e: ResponseDececased) => e.profileType === employeeClass.value
+ );
+ }
}
/**Hook */
@@ -188,6 +204,24 @@ onMounted(() => {
+
+
+
+
([
const typeReport = ref("");
const optionReport = ref([
{
- id: "45",
+ id: "report1",
name: "บัญชีรายชื่อข้าราชการผู้ขอพระราชทานเครื่องราชอิสริยาภรณ์",
},
- { id: "44", name: " บัญชีระดับผลการประเมินผลการปฏิบัติราชการในรอบ 5 ปี" },
- { id: "43", name: " บัญชีแสดงจำนวนชั้นตราเครื่องราชฯ 5 ปี" },
+ {
+ id: "report2",
+ name: " บัญชีระดับผลการประเมินผลการปฏิบัติราชการในรอบ 5 ปี",
+ },
+ { id: "report3", name: " บัญชีแสดงจำนวนชั้นตราเครื่องราชฯ 5 ปี" },
]);
const roundId = ref("");
@@ -54,21 +60,11 @@ const pdfSrc = ref();
const isLoadPDF = ref(false);
-// /**
-// * ฟังก์ชัน Redirect ไปหน้ารายงานที่เลือก
-// * @param type ประเภทรายงาน
-// */
-// function nextPage(type: string) {
-// router.push(`/insignia/report/${type}`);
-// }
-
async function fetchDataTree() {
node.value = await fetchStructureTree(route.meta.Key as string, true);
}
-/**
- * ฟังก์ชันคึงข้อมูลรอบการเสนอขอ
- */
+/** ฟังก์ชันคึงข้อมูลรอบการเสนอขอ*/
async function fecthlistRound() {
showLoader();
await http
@@ -106,12 +102,19 @@ function filterSelector(val: string, update: Function, name: string) {
});
}
+/**
+ * function เลือกหน่วยงาน
+ * @param id id หน่วยงาน
+ * @param level ระดับหน่วยงาน
+ */
function onSelectedNode(id: string, level: number) {
nodeId.value = id;
nodeLevel.value = level;
onUpdateFilter();
}
+const detailReport = ref();
+
/**
* ฟังก์ชันโหลดไฟล์
* @param type ประเภทไฟล์
@@ -123,16 +126,19 @@ async function onUpdateFilter() {
pdfSrc.value = undefined;
await http
- .get(config.API.reportInsignia(typeReport.value, "pdf", roundId.value), {
- responseType: "blob",
- })
+ .post(
+ config.API.reportInsigniaNew +
+ `/${typeReport.value}/${employeeClass.value}`,
+ {
+ roundId: roundId.value,
+ node: nodeLevel.value,
+ nodeId: nodeId.value,
+ }
+ )
.then(async (res) => {
- const url = URL.createObjectURL(new Blob([res.data]));
- const pdfData = await usePDF(url);
- await setTimeout(() => {
- pdfSrc.value = pdfData.pdf.value;
- numOfPages.value = pdfData.pages.value;
- }, 1000);
+ const data = await res.data.result;
+ detailReport.value = data;
+ await fetchDocumentTemplate(data);
})
.catch(async (e) => {
messageError($q, JSON.parse(await e.response.data.text()));
@@ -143,6 +149,34 @@ async function onUpdateFilter() {
}
}
+/**
+ * function เรียกไฟล์ PDF
+ * @param data ข้อมูลบัญชีวันลา
+ */
+async function fetchDocumentTemplate(data: any) {
+ await axios
+ .post(`${config.API.reportTemplate}/docx`, data, {
+ headers: {
+ accept: "application/pdf",
+ "content-Type": "application/json",
+ },
+ responseType: "blob",
+ })
+ .then(async (res) => {
+ const blob = new Blob([res.data]);
+ const objectUrl = URL.createObjectURL(blob);
+ const pdfData = usePDF(`${objectUrl}`);
+
+ setTimeout(() => {
+ pdfSrc.value = pdfData.pdf.value;
+ numOfPages.value = pdfData.pages.value;
+ }, 1500);
+ })
+ .catch(async (e) => {
+ messageError($q, JSON.parse(await e.response.data.text()));
+ });
+}
+
/** ไปหน้าต่อไปของรายงาน */
function nextPage() {
if (page.value < numOfPages.value) {
@@ -157,7 +191,16 @@ function backPage() {
}
}
-function downloadReport(type: string) {}
+function downloadReport(type: string) {
+ const fileName =
+ optionReport.value.find((e) => e.id === typeReport.value)?.name || "";
+
+ if (type === "xlsx") {
+ genReportXLSX(detailReport.value, fileName, type);
+ } else {
+ genReport(detailReport.value, fileName, type);
+ }
+}
onMounted(async () => {
await Promise.all([fetchDataTree(), fecthlistRound()]);