Merge branch 'develop' into dev

* develop:
  roll back leave fix commander
  fix
  fix
  ระบบลา: ไม่บังคับเลือกผู้บังคับบัญชา
  fix:education
  fix: api
  fix: probation api
  fix(probation):status
  fix
  fix(probation): statusProbationMain
  fix(leave-report) diable  btn search
This commit is contained in:
Warunee Tamkoo 2025-12-02 17:22:16 +07:00
commit f737fe26b1
22 changed files with 92 additions and 53 deletions

View file

@ -30,7 +30,8 @@ export default {
`${reportProbation}/13/${type}/${id}`,
reportEvaluateRecord1: (type: string, id: string) =>
`${reportProbation}/14/${type}/${id}`,
// reportEvaluateRecord2:(type:string, id:string) => `${reportProbation}/15/${type}/${id}`,
reportEvaluateRecord2: (type: string, id: string) =>
`${reportProbation}/15/${type}/${id}`,
reportEvaluate: (type: string, id: string) =>
`${reportProbation}/16/${type}/${id}`,
reportEvaluateChairman: (type: string, id: string) =>

View file

@ -45,9 +45,11 @@ interface tableType {
}
const rows = ref<tableType[]>([]);
const rowsMain = ref<tableType[]>([]);
const type = ref<string>("citizenId");
const search = ref<string>("");
const selected = ref<any>([]);
const isSelect = ref<boolean>(false);
const employeeClass = ref<string>("officer");
const employeeClassOption = ref<typeOp[]>([
@ -105,6 +107,8 @@ const emit = defineEmits(["returnData"]);
async function close() {
modal.value = false;
rows.value = [];
rowsMain.value = [];
selected.value = [];
employeeClass.value = "officer";
search.value = "";
}
@ -196,24 +200,26 @@ async function getSearch() {
child3DnaId: e.child3DnaId,
child4DnaId: e.child4DnaId,
}));
rowsMain.value = list;
rows.value = list;
if (route.name == "disciplineInvestigatefactsEdit") {
const idIsSend = mainStore.rowsAdd
.filter(
(item: any) => item.isSend === "DONE" || item.isAncestorDNA === true
)
.map((item: any) => item.personId);
rows.value = list.filter(
(item: any) => !idIsSend.includes(item.personId)
);
} else {
const idIsSend = mainStore.rowsAdd
.filter((item: any) => item.isAncestorDNA === true)
.map((item: any) => item.personId);
rows.value = list.filter(
(item: any) => !idIsSend.includes(item.personId)
);
}
// if (route.name == "disciplineInvestigatefactsEdit") {
// const idIsSend = mainStore.rowsAdd
// .filter(
// (item: any) => item.isSend === "DONE" || item.isAncestorDNA === true
// )
// .map((item: any) => item.personId);
// rows.value = list.filter(
// (item: any) => !idIsSend.includes(item.personId)
// );
// } else {
// const idIsSend = mainStore.rowsAdd
// .filter((item: any) => item.isAncestorDNA === true)
// .map((item: any) => item.personId);
// rows.value = list.filter(
// (item: any) => !idIsSend.includes(item.personId)
// );
// }
})
.catch((err) => {
messageError($q, err);
@ -226,20 +232,33 @@ async function getSearch() {
function updateSelect() {
search.value = "";
}
watch(
() => props.selectedData,
() => {
if (props.selectedData) {
selected.value = props.selectedData;
}
}
);
// watch(
// () => props.selectedData,
// () => {
// if (props.selectedData) {
// selected.value = props.selectedData;
// }
// }
// );
function updatePagination(newPagination: any) {
pagination.value.page = 1;
pagination.value.rowsPerPage = newPagination.rowsPerPage;
}
function checkList(propsRow: tableType) {
// const filterCondition =
// route.name === "disciplineInvestigatefactsEdit"
// ? (item: any) => item.isSend === "DONE" || item.isAncestorDNA === true
// : (item: any) => item.isAncestorDNA === true;
const idIsSend = mainStore.rowsAdd
// .filter(filterCondition)
.map((item: any) => item.personId);
return !idIsSend.includes(propsRow.personId);
}
watch(
() => pagination.value.rowsPerPage,
async () => {
@ -384,11 +403,20 @@ watch(
<q-tr :props="props" class="cursor-pointer">
<td class="text-center">
<q-checkbox
v-if="checkList(props.row)"
keep-color
color="primary"
dense
v-model="props.selected"
/>
<q-checkbox
v-else
disable
keep-color
color="primary"
dense
v-model="isSelect"
/>
</td>
<q-td v-for="col in props.cols" :key="col.name" :props="props">
<div v-if="col.name == 'no'">

View file

@ -129,10 +129,7 @@ const getClass = (val: boolean) => {
<q-form ref="myform">
<div class="row col-12 items-center q-col-gutter-x-sm q-col-gutter-y-xs">
<div class="col-12 row q-col-gutter-sm">
<div
class="col-xs-12 col-sm-3"
v-if="positionLevelName !== 'ปฏิบัติงาน'"
>
<div class="col-xs-12 col-sm-3">
<q-select
:class="getClass(status == 'checkRegister' || status == 'payment')"
:readonly="!(status == 'checkRegister' || status == 'payment')"
@ -165,10 +162,7 @@ const getClass = (val: boolean) => {
:label="`${'ชื่อปริญญา'}`"
/>
</div>
<div
class="col-xs-12 col-sm-3"
v-if="positionLevelName !== 'ปฏิบัติงาน'"
>
<div class="col-xs-12 col-sm-3">
<q-input
:class="getClass(status == 'checkRegister' || status == 'payment')"
:outlined="status == 'checkRegister' || status == 'payment'"

View file

@ -203,7 +203,7 @@ async function getList() {
.get(
config.API.probationPersonalList() +
`?status=${
commandType.value ? (commandType.value == "C-PM-11" ? 3 : 2) : ""
commandType.value ? (commandType.value == "C-PM-11" ? 2 : 3) : ""
}&page=${pagination.value.page}&pageSize=${
pagination.value.rowsPerPage
}&keyword=${filter.value.trim()}`
@ -254,6 +254,7 @@ watch(
listCommand.value = data.filter(
(v: any) => v.code === "C-PM-11" || v.code === "C-PM-12"
);
console.log(listCommand.value);
}
}
}

View file

@ -132,6 +132,7 @@ onMounted(async () => {
:checkPermission="probationStore?.dataPermissions?.tab2?.isEdit as boolean"
:is-max="probationStore.tabs.length === 3"
/>
<q-tab-panels
v-model="tab"
animated

View file

@ -89,7 +89,7 @@ async function FileDownload(type: string) {
if (dataRole.value == "mentor") {
showLoader();
await http
.get(config.API.reportEvaluateRecord1(type, numTab.id))
.get(config.API.reportEvaluateRecord2(type, numTab.id))
.then(async (res) => {
const data = res.data.result;
await genReport(
@ -108,7 +108,7 @@ async function FileDownload(type: string) {
//
showLoader();
await http
.get(config.API.reportEvaluateRecord1(type, numTab.id))
.get(config.API.reportEvaluateRecord2(type, numTab.id))
.then(async (res) => {
const data = res.data.result;
await genReport(
@ -148,6 +148,7 @@ onMounted(async () => {
:checkPermission="probationStore?.dataPermissions?.tab3?.isEdit as boolean"
:is-max="probationStore.tabs.length === 3"
/>
<q-tab-panels
v-model="tab"
animated

View file

@ -957,12 +957,13 @@ onMounted(() => {
unelevated
color="public"
type="submit"
:disable="
:disable="!typeReport || !org"
/>
<!-- :disable="
typeReport &&
(typeReport == 2 || typeReport == 3 || typeReport == 4) &&
org
"
/>
" -->
</q-card-actions>
</q-card>
</div>

View file

@ -182,7 +182,7 @@ function handleSave(returnData: any) {
}
/**
* งกนสำหรบอโหลดไฟลเอกสารหลกฐาน
* งกนสำหรบอโหลดไฟลเอกสารหลกฐาน
*/
function upLoadFileDoc() {
const Data = new FormData();
@ -195,7 +195,7 @@ function upLoadFileDoc() {
countNum.value = 2;
formData.documentFile = null;
success($q, "อัโหลดไฟล์สำเร็จ");
success($q, "อัโหลดไฟล์สำเร็จ");
})
.catch((e) => {
messageError($q, e);
@ -960,7 +960,7 @@ onMounted(async () => {
<div class="row"><q-separator vertical /></div>
</div>
<!-- โหลดไฟล -->
<!-- โหลดไฟล -->
<div class="col-sm-12 col-md-3">
<div flat class="q-pa-md">
<div class="col-12 row q-col-gutter-md">

View file

@ -173,10 +173,12 @@ onMounted(() => {
@click="onDetail(props.row.id)"
><q-tooltip>รายละเอยด</q-tooltip></q-btn
>
<q-btn
v-if="
checkPermission($route)?.attrIsUpdate &&
checkPermission($route)?.attrIsGet
checkPermission($route)?.attrIsGet &&
props.row.statusMain != 'SEND_INVESTIGATE'
"
id="addComplaints"
for="addComplaints"

View file

@ -546,7 +546,7 @@ function onclickViewinfo(id: string, type: string) {
isEmpType.value = type;
}
/** อัเดต ปิด/เปิดเมนู ทะเบียนประวัติ */
/** อัเดต ปิด/เปิดเมนู ทะเบียนประวัติ */
function updatemodalPersonal(modal: boolean) {
modalPersonal.value = modal;
}
@ -1287,7 +1287,6 @@ onMounted(async () => {
</div>
</div>
<!-- นทบสวน (List Log) -->
<div
v-if="
formData.investigationExtendHistory !== null &&
@ -1761,7 +1760,7 @@ onMounted(async () => {
</q-form>
</div>
<!-- โหลดไฟล -->
<!-- โหลดไฟล -->
<DialogDuty
:modal="modalEditDirector"
:close-popup="closeEditDirector"

View file

@ -161,6 +161,8 @@ async function fetchDetailInvestigate() {
)
)
.then((res) => {
console.log(res);
const dataList = res.data.result;
dataInvestigatefacts.id = dataList.id;
dataInvestigatefacts.idComplaint = dataList.idComplaint;
@ -191,6 +193,8 @@ async function fetchDetailInvestigate() {
dataList.investigationDaysExtend;
dataInvestigatefacts.organizationId = dataList.organizationId;
dataInvestigatefacts.organization = dataList.organization;
dataInvestigatefacts.investigationExtendHistory =
dataList.investigationExtendHistory;
})
.catch((err) => {
messageError($q, err);

View file

@ -1849,7 +1849,7 @@ onMounted(async () => {
</div>
<div class="row"><q-separator vertical /></div>
</div>
<!-- โหลดไฟล -->
<!-- โหลดไฟล -->
<div class="col-xs-12 col-sm-12 col-md-3">
<div class="q-col-gutter-md row q-pa-md">
<!-- งไม api -->

View file

@ -244,7 +244,8 @@ function filterOptionFn(val: string, update: Function) {
<q-btn
v-if="
checkPermission($route)?.attrIsUpdate &&
checkPermission($route)?.attrIsGet
checkPermission($route)?.attrIsGet &&
props.row.startMain !== 'DONE'
"
flat
dense

View file

@ -633,7 +633,7 @@ watch(
<div class="row"><q-separator vertical /></div>
</div>
<!-- โหลดไฟล -->
<!-- โหลดไฟล -->
<div class="col-sm-12 col-md-3 q-pa-md">
<q-card bordered class="row col-12" style="border: 1px solid #d6dee1">
<div class="col-12 text-weight-medium bg-grey-1 q-py-sm q-px-md">

View file

@ -658,7 +658,7 @@ onMounted(() => {
</div>
<div class="row"><q-separator vertical /></div>
</div>
<!-- โหลดไฟล -->
<!-- โหลดไฟล -->
<div v-if="isReadonly" class="col-sm-12 col-md-3 q-pa-md">
<q-card
bordered

View file

@ -87,7 +87,7 @@ async function uploadFile() {
.then(() => {
file.value = null;
props.fetchData();
success($q, "บันทึกข้อมูลสำเร็จ");
success($q, "อัปโหลดไฟล์สำเร็จ");
})
.catch((e) => {
messageError($q, e);

View file

@ -9,6 +9,7 @@ interface DataListRow {
levelConsideration: string;
dateConsideration: string | null;
status: string;
statusMain?: string;
}
interface DataAdd {
id: string;

View file

@ -45,6 +45,7 @@ export const useComplainstDataStore = defineStore(
? date2Thai(e.dateConsideration)
: "-",
status: e.status ? statusTothai(e.status) : "-",
statusMain: e.status,
}));
rows.value = dataList;
}

View file

@ -277,6 +277,7 @@ export const useInvestigateDisStore = defineStore(
)}`
: "-",
status: convertStatus(e.status) ?? "-",
startMain: e.status,
dateReceived: e.dateReceived ? date2Thai(e.dateReceived) : "-",
}));

View file

@ -204,6 +204,7 @@ defineExpose({
label="จํานวนงบประมาณที่ขอรับการจัดสรร ฯ"
mask="###,###,###,###,###"
reverse-fill-mask
maxlength="18"
@update:model-value="props.onCheckChangeData()"
/>
</div>
@ -216,6 +217,7 @@ defineExpose({
v-model="formData.receive"
mask="###,###,###,###,###"
reverse-fill-mask
maxlength="18"
label="จํานวนงบประมาณที่ได้รับการจัดสรร ฯ"
@update:model-value="props.onCheckChangeData()"
/>

View file

@ -1028,6 +1028,7 @@ onMounted(async () => {
label="งบประมาณที่ได้รับอนุมัติตลอดหลักสูตร"
mask="###,###,###,###,###,###"
reverse-fill-mask
maxlength="18"
:rules="[
(val: any) => {
if (!val && !formBody.isNoUseBudget && formBody.fundType != 'FUND4') {

View file

@ -159,7 +159,7 @@ watch(
class="inputgreen"
:rules="[
(val:string) =>
!!val || `${'กรุณากรอกหนังสือรายงานตัวกลับเข้าปฏิบัติราชการลงวันที่'}`,
!!val || `${'กรุณาเลือกลงวันที่ของหนังสือรายงานตัวกลับเข้าปฏิบัติราชการ'}`,
]"
>
<template v-slot:prepend>