Merge branch 'develop' into dev-tee

This commit is contained in:
setthawutttty 2023-09-01 11:51:29 +07:00
commit 5fecf45e88
4 changed files with 147 additions and 167 deletions

View file

@ -138,9 +138,8 @@ const changround = async () => {
const roundFilter = await optionRound.value.find(
(x: any) => round.value === x.id
);
roundName.value = `รอบการเสนอขอพระราชทานเครื่องราชปี ${
roundFilter.year + 543
}`;
roundName.value = `รอบการเสนอขอพระราชทานเครื่องราชปี ${roundFilter.year + 543
}`;
};
const requestNote = ref<string>("");
const requestStatus = ref<string>("");
@ -292,174 +291,78 @@ const requestSendNote = async () => {
รายชอขาราชการสามญฯ ทธนขอพระราชทานเครองราชอสรยาภรณ
</div>
<q-card bordered class="row col-12 q-mt-sm">
<div class="bg-grey-1 col-12 row items-center">
<div class="row col-12 items-center bg-grey-1">
<div class="q-pl-md q-pr-sm text-weight-medium text-grey-7">รอบ</div>
<q-select
borderless
dense
v-model="round"
:options="optionRound"
map-options
emit-value
option-value="id"
option-label="name"
@update:model-value="changround"
/>
<q-select borderless dense v-model="round" :options="optionRound" map-options emit-value option-value="id"
option-label="name" @update:model-value="changround" />
<q-space />
<!-- สกจ. Freez อม -->
<q-btn v-if="roleUser == 'admin'" dense unelevated label="ล็อกข้อมูล" color="public" class="q-px-md q-ml-md"
@click="requestSendNote">
<q-tooltip>อกขอม</q-tooltip>
</q-btn>
</div>
<div class="col-12"><q-separator /></div>
<div v-if="roleUser == 'admin'" class="col-12 row bg-white">
<div class="fit q-px-md q-py-sm">
<div class="row col-12 q-col-gutter-sm fit">
<cardTop
:amount="stat.orgAllCount"
label="หน่วยงานทั้งหมด"
color="#016987"
/>
<cardTop
:amount="stat.orgSendCount"
label="หน่วยงานที่ส่งรายชื่อเเล้ว"
color="#02A998"
/>
<cardTop
:amount="stat.orgNoSendCount"
label="หน่วยงานที่ยังไม่ได้ส่งรายชื่อ"
color="#2EA0FF"
/>
<cardTop
:amount="stat.allUserUser"
label="จำนวนคนที่ยื่นขอ"
color="#4154B3"
/>
<cardTop :amount="stat.orgAllCount" label="หน่วยงานทั้งหมด" color="#016987" />
<cardTop :amount="stat.orgSendCount" label="หน่วยงานที่ส่งรายชื่อเเล้ว" color="#02A998" />
<cardTop :amount="stat.orgNoSendCount" label="หน่วยงานที่ยังไม่ได้ส่งรายชื่อ" color="#2EA0FF" />
<cardTop :amount="stat.allUserUser" label="จำนวนคนที่ยื่นขอ" color="#4154B3" />
</div>
</div>
</div>
</q-card>
<q-card flat bordered class="col-12 q-mt-sm" v-if="loading">
<div
v-if="roleUser == 'insignia1' && requestStatus == 'st4'"
class="q-pa-md q-gutter-sm"
>
<q-banner
inline-actions
bordered
class="bg-orange-1 text-orange border-orange"
>
<div v-if="roleUser == 'insignia1' && requestStatus == 'st4'" class="q-pa-md q-gutter-sm">
<q-banner inline-actions bordered class="bg-orange-1 text-orange border-orange">
<q-icon name="mdi-information-outline" size="20px" /> หมายเหต กล
{{ requestNote }}
</q-banner>
</div>
<div class="row col-12">
<q-tabs
v-model="tab"
dense
class="text-grey"
active-color="primary"
active-class="bg-teal-1"
indicator-color="primary"
align="left"
>
<q-tabs v-model="tab" dense class="text-grey" active-color="primary" active-class="bg-teal-1"
indicator-color="primary" align="left">
<q-tab name="pending" label="คนที่ยื่นขอ" />
<q-tab name="reject" label="คนที่ไม่ยื่นขอ" />
<q-tab name="delete" label="คนที่ถูกลบออก" />
<q-tab
v-if="roleUser == 'admin'"
name="organization"
label="หน่วยงานที่ยังไม่ได้ส่งรายชื่อ"
/>
<q-tab v-if="roleUser == 'admin'" name="organization" label="หน่วยงานที่ยังไม่ได้ส่งรายชื่อ" />
</q-tabs>
</div>
<q-separator />
<q-tab-panels v-model="tab" animated>
<q-tab-panel name="pending" class="q-pa-none">
<tab1
:tab="tab"
:roundId="round"
:roundName="roundName"
:fecthInsigniaByOc="fecthInsigniaByOc"
:role-user="roleUser"
:request-status="requestStatus"
/>
<tab1 :tab="tab" :roundId="round" :roundName="roundName" :fecthInsigniaByOc="fecthInsigniaByOc"
:role-user="roleUser" :request-status="requestStatus" />
</q-tab-panel>
<q-tab-panel name="reject" class="q-pa-none">
<tab2
:tab="tab"
:roundId="round"
:fecthInsigniaByOc="fecthInsigniaByOc"
:role-user="roleUser"
/>
<tab2 :tab="tab" :roundId="round" :fecthInsigniaByOc="fecthInsigniaByOc" :role-user="roleUser" />
</q-tab-panel>
<q-tab-panel name="delete" class="q-pa-none">
<tab3
:tab="tab"
:roundId="round"
:fecthInsigniaByOc="fecthInsigniaByOc"
:role-user="roleUser"
/>
<tab3 :tab="tab" :roundId="round" :fecthInsigniaByOc="fecthInsigniaByOc" :role-user="roleUser" />
</q-tab-panel>
<q-tab-panel
v-if="roleUser == 'admin'"
name="organization"
class="q-pa-none"
>
<q-tab-panel v-if="roleUser == 'admin'" name="organization" class="q-pa-none">
<tab4 :tab="tab" :roundId="round" :role-user="roleUser" />
</q-tab-panel>
</q-tab-panels>
<q-toolbar class="q-py-md text-right">
<q-space />
<q-btn
v-if="
roleUser == 'insignia1' &&
(requestStatus == 'st1' || requestStatus == 'st4')
"
dense
unelevated
label="บันทึกข้อมูล"
color="public"
class="q-px-md"
@click="sendToDirector"
/>
<q-btn
v-if="roleUser == 'insignia2' && requestStatus == 'st3'"
dense
unelevated
label="ตีกลับ"
color="orange"
class="q-px-md"
@click="popupBackToEdit"
/>
<q-btn
v-if="roleUser == 'insignia2' && requestStatus == 'st3'"
dense
unelevated
label="อนุมัติ"
color="positive"
class="q-px-md q-ml-md"
@click="directorApproved"
/>
<!-- สกจ. Freez อม -->
<q-btn
v-if="roleUser == 'admin'"
dense
unelevated
label="ล็อกข้อมูล"
color="public"
class="q-px-md q-ml-md"
@click="requestSendNote"
>
<q-tooltip>อกขอม</q-tooltip>
</q-btn>
<q-btn v-if="roleUser == 'insignia1' &&
(requestStatus == 'st1' || requestStatus == 'st4')
" dense unelevated label="นทกขอม" color="public" class="q-px-md" @click="sendToDirector" />
<q-btn v-if="roleUser == 'insignia2' && requestStatus == 'st3'" dense unelevated label="ตีกลับ" color="orange"
class="q-px-md" @click="popupBackToEdit" />
<q-btn v-if="roleUser == 'insignia2' && requestStatus == 'st3'" dense unelevated label="อนุมัติ" color="positive"
class="q-px-md q-ml-md" @click="directorApproved" />
</q-toolbar>
<DialogPopupReason
:modal="modalPopupBackToEdit"
title="หมายเหตุการตีกลับ"
label="หมายเหตุ"
:click-close="closeModalPopupBackToEdit"
:savaForm="backToEdit"
/>
<DialogPopupReason :modal="modalPopupBackToEdit" title="หมายเหตุการตีกลับ" label="หมายเหตุ"
:click-close="closeModalPopupBackToEdit" :savaForm="backToEdit" />
</q-card>
</template>

View file

@ -10,20 +10,16 @@ const route = useRoute();
const orderId_params = route.params.orderid;
const step01 = defineAsyncComponent(
() =>
import("@/modules/10_order/components/step/step01.vue")
() => import("@/modules/10_order/components/step/step01.vue")
);
const step02 = defineAsyncComponent(
() =>
import("@/modules/10_order/components/step/step02.vue")
() => import("@/modules/10_order/components/step/step02.vue")
);
const step03 = defineAsyncComponent(
() =>
import("@/modules/10_order/components/step/step03.vue")
() => import("@/modules/10_order/components/step/step03.vue")
);
const step04 = defineAsyncComponent(
() =>
import("@/modules/10_order/components/step/step04.vue")
() => import("@/modules/10_order/components/step/step04.vue")
);
const router = useRouter();
@ -37,12 +33,12 @@ onUnmounted(() => {
const nextStep = async () => {
stepper.value!.next();
localStorage.setItem("currentStep", (step.value + 1).toString());
localStorage.setItem("currentStep", step.value.toString());
if (orderId.value) {
await http
.put(config.API.nextStep(orderId.value))
.then((res) => {
console.log(res);
.then(() => {
router.push(`/order/detail/${orderId.value}?step=${step.value}`);
})
.catch((e) => {
console.log(e);
@ -51,12 +47,12 @@ const nextStep = async () => {
};
const previousStep = async () => {
stepper.value!.previous();
localStorage.setItem("currentStep", (step.value - 1).toString());
localStorage.setItem("currentStep", step.value.toString());
if (orderId.value) {
await http
.put(config.API.prevStep(orderId.value))
.then((res) => {
console.log(res);
.then(() => {
router.push(`/order/detail/${orderId.value}?step=${step.value}`);
})
.catch((e) => {
console.log(e);
@ -70,7 +66,7 @@ const destroyLocalStorage = () => {
onMounted(() => {
// console.log("route query===>", route.query)
if (route.query.step) {
step.value = Number(route.query.step)
step.value = Number(route.query.step);
localStorage.setItem("currentStep", step.value.toString());
} else {
const currentStep = localStorage.getItem("currentStep");
@ -90,16 +86,55 @@ onMounted(() => {
<template>
<div class="toptitle text-dark col-12 row items-center">
<q-btn icon="mdi-arrow-left" unelevated round dense flat color="primary" class="q-mr-sm"
@click="router.push('/order'), destroyLocalStorage()" />
<q-btn
icon="mdi-arrow-left"
unelevated
round
dense
flat
color="primary"
class="q-mr-sm"
@click="router.push('/order'), destroyLocalStorage()"
/>
ออกคำส
</div>
<q-card flat bordered class="col-12 q-my-sm q-mt-sm">
<q-stepper v-model="step" ref="stepper" color="primary" animated class="step" header-class="bg-grey-1">
<q-step :name="1" title="รายละเอียดการออกคำสั่ง" prefix="1" :done="step > 1" :header-nav="step > 1" />
<q-step :name="2" title="เลือกรายชื่อ" prefix="2" :done="step > 2" :header-nav="step > 2" />
<q-step :name="3" title="เลือกรายชื่อส่งสำเนาคำสั่ง" prefix="3" :done="step > 3" :header-nav="step > 3" />
<q-step :name="4" title="รายละเอียดคำสั่งและแนบท้าย" prefix="4" :done="step > 4" :header-nav="step > 4" />
<q-stepper
v-model="step"
ref="stepper"
color="primary"
animated
class="step"
header-class="bg-grey-1"
>
<q-step
:name="1"
title="รายละเอียดการออกคำสั่ง"
prefix="1"
:done="step > 1"
:header-nav="step > 1"
/>
<q-step
:name="2"
title="เลือกรายชื่อ"
prefix="2"
:done="step > 2"
:header-nav="step > 2"
/>
<q-step
:name="3"
title="เลือกรายชื่อส่งสำเนาคำสั่ง"
prefix="3"
:done="step > 3"
:header-nav="step > 3"
/>
<q-step
:name="4"
title="รายละเอียดคำสั่งและแนบท้าย"
prefix="4"
:done="step > 4"
:header-nav="step > 4"
/>
<template v-slot:message>
<step01 v-if="step === 1" :next="nextStep" :previous="previousStep" />
<step02 v-if="step === 2" :next="nextStep" :previous="previousStep" />

View file

@ -247,10 +247,10 @@ const fecthTypeOption = async (actions: string) => {
messageError($q, e);
})
.finally(async () => {
await fecthCommand();
if (actions == "hasData") {
await fetchdetailOrder();
}
await fecthCommand();
hideLoader();
});
};
@ -260,6 +260,8 @@ const fetchdetailOrder = async () => {
await http
.get(config.API.detailOrder(orderIdString))
.then((res: any) => {
console.log(res);
const data = res.data.result;
console.log(data);
typeOrder.value = typeOrderOption.value.find(
@ -336,7 +338,7 @@ const fetchdetailOrder = async () => {
messageError($q, e);
})
.finally(async () => {
await fecthCommand();
// await fecthCommand();
hideLoader();
});
};
@ -344,6 +346,8 @@ const fecthCommand = async () => {
await http
.get(config.API.organizationsOrder())
.then((res: any) => {
console.log(res);
byOrderOption.value = res.data.result;
})
.catch((e: any) => {
@ -412,12 +416,15 @@ const fecthExamRoundOption = async (commandCode: string) => {
};
const submit = async () => {
console.log(nameCommand.value);
console.log(CommandOption.value);
let signBy = null;
if (!nameCommand.value.length) {
signBy = await nameCommand.value.name;
} else {
const name2 = await CommandOption.value.find(
(x: any) => x.id == nameCommand.value.id
(x: any) => x.name == nameCommand.value
);
signBy = await name2?.name;
console.log("signBy", signBy);
@ -437,7 +444,7 @@ const submit = async () => {
orderBy: byOrder.value,
orderByOrganizationName: orderByOrganizationName,
registerPosition: "",
signatoryBy: signBy,
signatoryBy: signBy === "" ? nameCommand.value : signBy,
signatoryPosition: positionCommand.value,
};
if (
@ -525,7 +532,7 @@ const submit = async () => {
});
}
console.log(formdata);
// console.log(formdata);
await myForm.value!.validate().then((result: boolean) => {
if (result) {
@ -564,6 +571,7 @@ const updateOrder = async (formData: Object, orderId: string, type: string) => {
.put(config.API.orderCPMUpdate(type, orderId), formData)
.then((res) => {
console.log(res);
next();
success($q, "บันทึกข้อมูลสำเร็จ");
})

View file

@ -1,5 +1,5 @@
<script setup lang="ts">
import { ref, onMounted } from "vue";
import { ref, onMounted, computed } from "vue";
import { useQuasar } from "quasar";
import { useCounterMixin } from "@/stores/mixin";
import { useRoute } from "vue-router";
@ -94,6 +94,7 @@ const columns = ref<QTableProps["columns"]>([
const rows = ref<ResponseData[]>([]);
const rows2 = ref<ResponseData[]>([]);
const selected = ref<ResponseData[]>([]);
const orderTypeCode = ref<string>("");
onMounted(async () => {
await conditionData();
@ -107,6 +108,7 @@ const conditionData = async () => {
: null;
if (id !== null) {
await getData(id);
await fetchOrder(id);
}
};
@ -145,7 +147,35 @@ const getData = async (id: string) => {
hideLoader();
});
};
const fetchOrder = async (id: string) => {
await http
.get(config.API.detailOrder(id))
.then((res) => {
let data = res.data.result;
orderTypeCode.value = data.orderTypeCode;
})
.catch((err) => {
messageError($q, err);
});
};
const statuscode = computed(() => {
if (
orderTypeCode.value === "c-pm-01" ||
orderTypeCode.value === "c-pm-02" ||
orderTypeCode.value === "c-pm-03" ||
orderTypeCode.value === "c-pm-04" ||
orderTypeCode.value === "c-pm-05" ||
orderTypeCode.value === "c-pm-06" ||
orderTypeCode.value === "c-pm-07" ||
orderTypeCode.value === "c-pm-08" ||
orderTypeCode.value === "c-pm-09" ||
orderTypeCode.value === "c-pm-14" ||
orderTypeCode.value === "c-pm-21"
) {
return true;
}
return false;
});
const dialogDeleteData = async (id: string) => {
dialogRemove($q, () => deleteData(id));
};
@ -374,14 +404,18 @@ const addlist = async (data: Object) => {
};
const save = async () => {
// console.log("save===>", rows.value)
// console.log("save===>", rows.value);
// console.log(statuscode.value);
const check = rows.value.find((x: any) => x.salaryAmount == null);
if (selected.value.length > 0 && !check) {
if (
(selected.value.length > 0 && !check) ||
(statuscode.value === true && selected.value.length > 0)
) {
dialogConfirm($q, () => {
success($q, "บันทึกข้อมูลสำเร็จ");
next();
});
} else if (check) {
} else if (check && statuscode.value === false) {
dialogMessageNotify($q, "ระบุรายละเอียดการเงินไม่ครบ");
} else {
dialogMessageNotify($q, "กรุณาเลือกรายชื่อ");
@ -472,7 +506,7 @@ const getClass = (val: boolean) => {
<q-th auto-width />
<q-th auto-width />
<q-th auto-width />
<q-th auto-width />
<q-th auto-width v-if="statuscode !== true" />
</q-tr>
</template>
<template v-slot:body="props">
@ -508,7 +542,7 @@ const getClass = (val: boolean) => {
<!-- <q-tooltip>เลอนลำดบลง</q-tooltip> -->
</q-btn>
</q-td>
<q-td auto-width>
<q-td auto-width v-if="statuscode !== true">
<q-btn
v-if="props.row.salaryAmount === null"
dense