Merge branch 'develop' into dev-tee

# Conflicts:
#	src/api/07_insignia/api.insignia.ts
This commit is contained in:
setthawutttty 2023-09-27 15:40:49 +07:00
commit 6bbec104de
9 changed files with 248 additions and 93 deletions

View file

@ -98,4 +98,8 @@ export default {
reportInsignia: (type: string, fileType: string, fileId: string) =>
`${report}/insignia/${type}/${fileType}/${fileId}`,
// เจ้าหน้าที่เป็นคนอัปโหลดไฟล์
uploadfileOnlyInsignia: (requestId: string) => `${insignia}/request/upload/${requestId}`,
// สกจ. ตีกลับให้หัวหน้าเขต
rejectRequest: (id: string, ocId: string) => `${insignia}/request/head/reject/${id}/${ocId}`
};

View file

@ -242,4 +242,6 @@ const uploadData = async () => {
const downloadData = async (path: string) => {
window.open(path);
};
</script>

View file

@ -1021,27 +1021,60 @@ const closeKp7Short = () => {
dialogShort.value = false;
};
const helpPost = () => {
const helpPost = async () => {
const formData = new FormData();
formData.append("id", profileId.value);
dialogConfirm($q, async () => {
const formData = new FormData();
formData.append("id", profileId.value);
await http.post(config.API.placemenHelpGov, formData);
showLoader();
await http
.post(config.API.placemenHelpGov, formData)
.then(() => {
success($q, "ดำเนินการสำเร็จ");
})
.catch((e) => {
messageError($q, e);
})
.finally(() => {
hideLoader();
});
});
};
const repatriationPost = async () => {
const formData = new FormData();
formData.append("id", profileId.value);
dialogConfirm($q, async () => {
const formData = new FormData();
formData.append("id", profileId.value);
await http.post(config.API.placemenRepatriation, formData);
showLoader();
await http
.post(config.API.placemenRepatriation, formData)
.then(() => {
success($q, "ดำเนินการสำเร็จ");
})
.catch((e) => {
messageError($q, e);
})
.finally(() => {
hideLoader();
});
});
};
const appointPost = async () => {
const formData = new FormData();
formData.append("id", profileId.value);
dialogConfirm($q, async () => {
const formData = new FormData();
formData.append("id", profileId.value);
await http.post(config.API.placemenAppointment, formData);
showLoader();
await http
.post(config.API.placemenAppointment, formData)
.then(() => {
success($q, "ดำเนินการสำเร็จ");
})
.catch((e) => {
messageError($q, e);
})
.finally(() => {
hideLoader();
});
});
};
@ -1054,34 +1087,78 @@ const appointPost = async () => {
// };
const outPost = async () => {
const formData = new FormData();
formData.append("id", profileId.value);
dialogConfirm($q, async () => {
const formData = new FormData();
formData.append("id", profileId.value);
await http.post(config.API.retirementOut, formData);
showLoader();
await http
.post(config.API.retirementOut, formData)
.then(() => {
success($q, "ดำเนินการสำเร็จ");
})
.catch((e) => {
messageError($q, e);
})
.finally(() => {
hideLoader();
});
});
};
const dischargePost = async () => {
const formData = new FormData();
formData.append("id", profileId.value);
dialogConfirm($q, async () => {
const formData = new FormData();
formData.append("id", profileId.value);
await http.post(config.API.retirementDischarge, formData);
showLoader();
await http
.post(config.API.retirementDischarge, formData)
.then(() => {
success($q, "ดำเนินการสำเร็จ");
})
.catch((e) => {
messageError($q, e);
})
.finally(() => {
hideLoader();
});
});
};
const expulsionPost = async () => {
const formData = new FormData();
formData.append("id", profileId.value);
dialogConfirm($q, async () => {
const formData = new FormData();
formData.append("id", profileId.value);
await http.post(config.API.retirementExpulsion, formData);
showLoader();
await http
.post(config.API.retirementExpulsion, formData)
.then(() => {
success($q, "ดำเนินการสำเร็จ");
})
.catch((e) => {
messageError($q, e);
})
.finally(() => {
hideLoader();
});
});
};
const otherPost = async () => {
const formData = new FormData();
formData.append("id", profileId.value);
dialogConfirm($q, async () => {
const formData = new FormData();
formData.append("id", profileId.value);
await http.post(config.API.placemenOther, formData);
showLoader();
await http
.post(config.API.placemenOther, formData)
.then(() => {
success($q, "ดำเนินการสำเร็จ");
})
.catch((e) => {
messageError($q, e);
})
.finally(() => {
hideLoader();
});
});
};

View file

@ -81,7 +81,7 @@ const FileDownload = async (type: string) => {
.then(async (res) => {
downloadFile(
res,
`แบบบันทึกผล(ผู้บัคับบัญชา)_${fullname.value}_ครั้งที่${numTab.no}.${type}`
`แบบบันทึกผล(ผู้บัคับบัญชา)_${fullname.value}_ครั้งที่${numTab.no}.${type}`
);
})
.catch((e) => {

View file

@ -7,6 +7,7 @@ import { useQuasar } from "quasar";
import type { FormProprsalsRound2 } from "@/modules/07_insignia/interface/request/Main";
import config from "@/app.config";
import http from "@/plugins/http";
import { useInsigniaDataStore } from "@/modules/07_insignia/store";
const mixin = useCounterMixin();
const {
@ -19,6 +20,7 @@ const {
dialogRemove,
} = mixin;
const $q = useQuasar(); // noti quasar
const storeInsignia = useInsigniaDataStore();
const visibleColumns = ref<string[]>([
"period_name",
@ -108,7 +110,7 @@ const fetchData = async () => {
period_isActive: e.period_isActive,
period_doc: e.period_doc,
period_status: e.period_status.result,
statusRoyal: 'กำลังดำเนินการ'
statusRoyal: storeInsignia.convertStatus(e.period_status),
}));
})
.catch((e) => {

View file

@ -816,7 +816,6 @@ const clickShowWarn = () => {
/>
<q-th v-else></q-th>
</q-tr>
</template>
<template v-slot:body="props">
<q-tr
@ -859,16 +858,14 @@ const clickShowWarn = () => {
</q-td>
<q-td key="note" class="text-center">
<q-btn
v-if="props.rowIndex == 2"
v-if="props.row.reason"
icon="mdi-information-outline"
size="12px"
color="blue"
flat
round
dense
@click.stop="
clickShowreson(props.row.name, 'จะได้เลื่อนเงินเดือน')
"
@click.stop="clickShowreson(props.row.name, props.row.reason)"
>
<q-tooltip>หมายเหต</q-tooltip>
</q-btn>

View file

@ -142,6 +142,8 @@ const changround = async () => {
};
const requestNote = ref<string>("");
const requestStatus = ref<string>("");
const requestId = ref<string>("");
const document = ref<string>("");
//
const fecthInsigniaByOc = async (
@ -156,6 +158,8 @@ const fecthInsigniaByOc = async (
.then(async (res) => {
requestNote.value = res.data.result.requestNote;
requestStatus.value = res.data.result.requestStatus;
requestId.value = res.data.result.requestId;
document.value = res.data.result.document;
await DataStore.fetchData(res.data.result.items); //
await DataStore.fetchDataInsignia(res.data.result); //
loading.value = true;
@ -279,11 +283,27 @@ const directorApproved = async () => {
);
};
// requestStatus st5 adminRole
const backToEditinsignia2Role = async () => {
const backToEditinsignia2Role = async (reason: string) => {
dialogConfirm($q, async () => {
console.log("รอ API");
closepopupBackToInsignia2Role();
success($q, " ตีกลับรอบการเสนอขอ รอ API");
await http
.put(config.API.rejectRequest(round.value, DataStore.typeOc), {
reason: reason,
})
.then(async () => {
await fecthInsigniaByOc(
round.value,
DataStore.typeOc,
"officer",
tab.value
);
success($q, "การตีกลับสำเร็จ");
})
.catch((err) => {
messageError($q, err);
})
.finally(() => {
closepopupBackToInsignia2Role();
});
});
};
//
@ -315,23 +335,32 @@ const requestSendNote = async () => {
});
});
};
//
//
const fileUpload = ref<any>(null);
const uploadFile = async (event: any) => {
dialogConfirm($q, () => {
dialogConfirm($q, async () => {
const selectedFile = event;
const formdata = new FormData();
formdata.append("file", selectedFile);
console.log("uploadFile :รอ API"),
formdata.append("Document", selectedFile);
await http
.put(config.API.uploadfileOnlyInsignia(requestId.value), formdata)
.then(async () => {
await fecthInsigniaByOc(
round.value,
DataStore.agency,
"officer",
tab.value
);
success($q, "อัปโหลดไฟล์สำเร็จ");
fileUpload.value = null;
})
.catch((err) => {
messageError($q, err);
}),
"ยืนยันการอัปโหลดไฟล์",
"ต้องการยืนยันการอัปโหลดไฟล์นี้หรือไม่ ?";
});
};
//
const downloadFile = async () => {
console.log("downloadFile : รอ API");
success($q, "downloadFile : รอ API");
};
</script>
<template>
@ -500,27 +529,31 @@ const downloadFile = async () => {
@click="uploadFile(fileUpload)"
v-if="fileUpload !== null"
/>
<q-btn
size="md"
icon="mdi-download"
flat
round
color="primary"
@click="downloadFile"
v-if="roleDataStore.insignia1Role"
>
<q-tooltip>ดาวนโหลด</q-tooltip>
</q-btn>
<q-btn
v-else
color="primary"
icon-right="mdi-download"
label="ดาวน์โหลดไฟล์"
@click="downloadFile"
outline
>
<q-tooltip>ดาวนโหลด</q-tooltip></q-btn
>
<div v-if="document">
<q-btn
size="md"
icon="mdi-download"
flat
round
color="primary"
v-if="roleDataStore.insignia1Role"
:href="document"
target="_blank"
>
<q-tooltip>ดาวนโหลด</q-tooltip>
</q-btn>
<q-btn
v-else
color="primary"
icon-right="mdi-download"
label="ดาวน์โหลดไฟล์"
outline
:href="document"
target="_blank"
>
<q-tooltip>ดาวนโหลด</q-tooltip></q-btn
>
</div>
<q-space />
<q-btn
v-if="
@ -553,7 +586,7 @@ const downloadFile = async () => {
@click="directorApproved"
/>
<q-btn
v-if="requestStatus == 'st5' && roleDataStore.adminRole"
v-if="requestStatus == 'st6' && roleDataStore.adminRole"
dense
unelevated
label="ตีกลับ"

View file

@ -36,12 +36,7 @@ export const useInsigniaDataStore = defineStore("insignia", () => {
{ id: '43', title: 'บัญชีระดับผลการประเมินผลการปฏิบัติราชการในรอบ 5 ปี' },
{ id: '44', title: 'บัญชีแสดงจำนวนชั้นตราเครื่องราชฯ' }
])
const mainTab = ref<string | undefined>("pending");
// เรียกราชชื่อการเสนอขอ
const fetchData = async (data: any) => {
if (data !== null) {
@ -60,6 +55,8 @@ export const useInsigniaDataStore = defineStore("insignia", () => {
dateSend: date2Thai(e.requestDate),
requestNote: e.requestNote,
employeeType: profileType(e.profileType),
reason: e.reason
}));
rows.value = await datalist;
listinsignia.value = await datalist;
@ -137,6 +134,17 @@ export const useInsigniaDataStore = defineStore("insignia", () => {
return "ลูกจ้างประจำ";
}
};
//แปลงสถานะ
function convertStatus(val: string) {
switch (val) {
case "WAITTING":
return "สร้างรอบ"
case "PENDING":
return "กำลังดำเนินการ"
case "DONE":
return "เสร็จสิ้น"
}
}
return {
roundId,
@ -159,5 +167,6 @@ export const useInsigniaDataStore = defineStore("insignia", () => {
roleUser,
requestStatus,
optionReport,
convertStatus
};
});

View file

@ -112,11 +112,15 @@ const conclusionFireNo = ref<string>("");
const conclusionFireDate = ref<Date>(new Date());
const conclusionFireResolution = ref<string>("");
const typeOrderFilter = ref<any>({
typeOrderOption: [],
});
onMounted(async () => {
if (orderId) {
fecthTypeOption("hasData");
await fecthTypeOption("hasData");
} else {
fecthTypeOption("noData");
await fecthTypeOption("noData");
}
});
//
@ -149,6 +153,13 @@ const fecthTypeOption = async (actions: string) => {
commandCode: e.commandCode,
fullname: e.commandCode + " " + e.name,
}));
typeOrderFilter.value = res.data.result.map((e: OrederResult) => ({
id: e.id,
name: e.name,
category: e.category,
commandCode: e.commandCode,
fullname: e.commandCode + " " + e.name,
}));
})
.catch((e) => {
messageError($q, e);
@ -249,11 +260,13 @@ const fecthCommand = async () => {
});
};
const selectCMP = (selectOrder: OrederResult) => {
fecthExamRoundOption(selectOrder.commandCode);
if (selectOrder.commandCode === "C-PM-10") {
nodeTree();
if (selectOrder != null) {
fecthExamRoundOption(selectOrder.commandCode);
if (selectOrder.commandCode === "C-PM-10") {
nodeTree();
}
nameOrder.value = DataStore.nameOrderFilter(selectOrder.commandCode);
}
nameOrder.value = DataStore.nameOrderFilter(selectOrder.commandCode);
//01-04
examRound.value = "";
conclusionRegisterNo.value = "";
@ -598,6 +611,14 @@ const clickSavelist = () => {
} else dialogMessageNotify($q, "โปรดเลือกรายชื่อ");
};
const filterSelector = (val: any, update: Function, fullname: any) => {
update(() => {
typeOrderOption.value = typeOrderFilter.value.filter(
(v: any) => v.fullname.toLowerCase().indexOf(val.toLowerCase()) > -1
);
});
};
/**
* class ดรปแบบแสดงระหวางขอมลทแกไขหรอแสดงเฉยๆ
* @param val อม input สำหรบแกไขหรอไม
@ -631,6 +652,9 @@ const getClass = (val: boolean) => {
use-input
input-debounce="0"
@update:model-value="selectCMP(typeOrder)"
@filter="(inputValue:any,
doneFn:Function) => filterSelector(inputValue, doneFn,'typeOrderOption'
) "
/>
</div>
<div class="col-xs-12 col-md-6">
@ -819,7 +843,10 @@ const getClass = (val: boolean) => {
hide-bottom-space
/>
</div>
<div class="col-12 q-mb-md" v-if="typeOrder.commandCode">
<div
class="col-12 q-mb-md"
v-if="typeOrder != null && typeOrder.commandCode"
>
<q-separator />
</div>
</div>
@ -828,10 +855,11 @@ const getClass = (val: boolean) => {
<div
class="row col-12 q-col-gutter-x-lg q-col-gutter-y-md"
v-if="
typeOrder.commandCode === 'C-PM-01' ||
typeOrder.commandCode === 'C-PM-02' ||
typeOrder.commandCode === 'C-PM-03' ||
typeOrder.commandCode === 'C-PM-04'
typeOrder != null &&
(typeOrder.commandCode === 'C-PM-01' ||
typeOrder.commandCode === 'C-PM-02' ||
typeOrder.commandCode === 'C-PM-03' ||
typeOrder.commandCode === 'C-PM-04')
"
>
<div class="col-xs-12 col-md-12">
@ -978,8 +1006,9 @@ const getClass = (val: boolean) => {
<div
class="row col-12 q-col-gutter-x-lg q-col-gutter-y-md"
v-if="
typeOrder.commandCode === 'C-PM-05' ||
typeOrder.commandCode === 'C-PM-06'
typeOrder != null &&
(typeOrder.commandCode === 'C-PM-05' ||
typeOrder.commandCode === 'C-PM-06')
"
>
<div class="col-xs-12 col-md-6">
@ -1037,7 +1066,7 @@ const getClass = (val: boolean) => {
<!-- C-PM-08 -->
<div
class="row col-12 q-col-gutter-x-lg q-col-gutter-y-md"
v-if="typeOrder.commandCode === 'C-PM-08'"
v-if="typeOrder != null && typeOrder.commandCode === 'C-PM-08'"
>
<div class="col-xs-12 col-md-6">
<q-input
@ -1101,7 +1130,7 @@ const getClass = (val: boolean) => {
<!-- C-PM-09 -->
<div
class="row col-12 q-col-gutter-x-lg q-col-gutter-y-md"
v-if="typeOrder.commandCode === 'C-PM-09'"
v-if="typeOrder != null && typeOrder.commandCode === 'C-PM-09'"
>
<div class="col-xs-12 col-md-12">
<q-input
@ -1220,7 +1249,7 @@ const getClass = (val: boolean) => {
<!-- C-PM-10 -->
<div
class="row col-12 q-col-gutter-x-lg q-col-gutter-y-md"
v-if="typeOrder.commandCode === 'C-PM-10'"
v-if="typeOrder != null && typeOrder.commandCode === 'C-PM-10'"
>
<div class="col-xs-12 col-md-4">
<q-input
@ -1452,8 +1481,9 @@ const getClass = (val: boolean) => {
<div
class="row col-12 q-col-gutter-x-lg q-col-gutter-y-md"
v-if="
typeOrder.commandCode === 'C-PM-11' ||
typeOrder.commandCode === 'C-PM-12'
typeOrder != null &&
(typeOrder.commandCode === 'C-PM-11' ||
typeOrder.commandCode === 'C-PM-12')
"
>
<div class="col-xs-12 col-md-4">
@ -1526,7 +1556,7 @@ const getClass = (val: boolean) => {
<!-- C-PM-13 -->
<div
class="row col-6 q-col-gutter-x-lg q-col-gutter-y-md"
v-if="typeOrder.commandCode === 'C-PM-13'"
v-if="typeOrder != null && typeOrder.commandCode === 'C-PM-13'"
>
<div class="col-xs-12 col-md-12">
<q-input
@ -1545,7 +1575,7 @@ const getClass = (val: boolean) => {
<!-- C-PM-14 -->
<div
class="row col-12 q-col-gutter-x-lg q-col-gutter-y-md"
v-if="typeOrder.commandCode === 'C-PM-14'"
v-if="typeOrder != null && typeOrder.commandCode === 'C-PM-14'"
>
<div class="col-xs-12 col-md-4">
<q-input
@ -1617,7 +1647,7 @@ const getClass = (val: boolean) => {
<!-- C-PM-16 -->
<div
class="row col-12 q-col-gutter-x-lg q-col-gutter-y-md"
v-if="typeOrder.commandCode === 'C-PM-16'"
v-if="typeOrder != null && typeOrder.commandCode === 'C-PM-16'"
>
<div class="col-xs-12 col-md-6">
<q-input
@ -1678,9 +1708,10 @@ const getClass = (val: boolean) => {
<div
class="row col-12 q-col-gutter-x-lg q-col-gutter-y-md"
v-if="
typeOrder.commandCode === 'C-PM-18' ||
typeOrder.commandCode === 'C-PM-19' ||
typeOrder.commandCode === 'C-PM-20'
typeOrder != null &&
(typeOrder.commandCode === 'C-PM-18' ||
typeOrder.commandCode === 'C-PM-19' ||
typeOrder.commandCode === 'C-PM-20')
"
>
<div class="col-xs-12 col-md-6">