refactor ออกคำสั่ง

This commit is contained in:
DESKTOP-1R2VSQH\Lenovo ThinkPad E490 2023-09-22 10:47:31 +07:00
parent 8dfa5ca02e
commit 3802d5d5a2
8 changed files with 526 additions and 916 deletions

View file

@ -30,10 +30,8 @@ const orderId = ref<string>("");
onUnmounted(() => { onUnmounted(() => {
destroyLocalStorage(); destroyLocalStorage();
}); });
//
const nextStep = async () => { const nextStep = async () => {
// stepper.value!.next();
localStorage.setItem("currentStep", step.value.toString()); localStorage.setItem("currentStep", step.value.toString());
if (orderId.value) { if (orderId.value) {
await http await http
@ -47,7 +45,6 @@ const nextStep = async () => {
} }
}; };
const previousStep = async () => { const previousStep = async () => {
// stepper.value!.previous();
localStorage.setItem("currentStep", step.value.toString()); localStorage.setItem("currentStep", step.value.toString());
if (orderId.value) { if (orderId.value) {
await http await http
@ -75,7 +72,6 @@ onMounted(() => {
step.value = 1; step.value = 1;
} }
} }
if (orderId_params !== undefined) { if (orderId_params !== undefined) {
orderId.value = orderId_params.toString(); orderId.value = orderId_params.toString();
} }

View file

@ -121,7 +121,6 @@ const columns = ref<QTableProps["columns"]>([
style: "font-size: 14px", style: "font-size: 14px",
}, },
]); ]);
// () // ()
const rows = ref<FormOrderPlacementMainData[]>([]); const rows = ref<FormOrderPlacementMainData[]>([]);
@ -135,7 +134,7 @@ onMounted(async () => {
OrderStatusFilter(); OrderStatusFilter();
OrderTypeFilter(); OrderTypeFilter();
}); });
//
const OriginalDataFetch = async () => { const OriginalDataFetch = async () => {
showLoader(); showLoader();
await http await http
@ -186,61 +185,23 @@ const redirectToPage = (id?: string, status?: string) => {
} }
router.push(`/order/detail/${id}?step=${step}`); router.push(`/order/detail/${id}?step=${step}`);
}; };
//
// const clickDelete = (id: string) => {
// dialogRemove(
// $q,
// () => deleteData(id),
// );
// };
// const deleteData = async (id: string) => {
// showLoader();
// await http
// .delete(config.API.deleteOrder(id))
// .then((res) => {
// success($q, "");
// })
// .catch((e) => {
// messageError($q, e);
// })
// .finally(async () => {
// hideLoader();
// await OriginalDataFetch();
// fiscalYearFilter();
// searchFilterTable();
// OrderStatusFilter();
// OrderTypeFilter();
// });
// };
const clickAdd = () => { const clickAdd = () => {
router.push({ name: "OrderAdd" }); router.push({ name: "OrderAdd" });
}; };
// const viewDetail = (id: string, status: string) => {
// if (status == "checkPayment") {
// router.push(`${route.fullPath}/payment/${id}`);
// } else {
// router.push(`${route.fullPath}/profile/${id}`);
// }
// };
// //
const fiscalyear = ref<number | null>(0); const fiscalyear = ref<number | null>(0);
const fiscalyearOP = reactive<DataOption[]>([{ id: 0, name: "ทั้งหมด" }]); const fiscalyearOP = reactive<DataOption[]>([{ id: 0, name: "ทั้งหมด" }]);
const addedfiscalYearValues: number[] = [];
const fiscalYearFilter = async () => { const fiscalYearFilter = async () => {
await http.get(config.API.yearOptionsOrder()).then((res) => { await http.get(config.API.yearOptionsOrder()).then((res) => {
const response = res.data.result; const response = res.data.result;
fiscalyearOP.push(...response); fiscalyearOP.push(...response);
}); });
}; };
//
const OrderType = ref<string>(""); const OrderType = ref<string>("");
const OrderTypeOption = reactive<DataOption1[]>([{ id: "", name: "ทั้งหมด" }]); const OrderTypeOption = reactive<DataOption1[]>([{ id: "", name: "ทั้งหมด" }]);
const addedOrderTypeValues: string[] = [];
const OrderTypeFilter = async () => { const OrderTypeFilter = async () => {
await http await http
.get(config.API.typeOrder()) .get(config.API.typeOrder())
@ -253,9 +214,6 @@ const OrderTypeFilter = async () => {
}); });
}; };
const OrderStatus = ref<string>(""); const OrderStatus = ref<string>("");
const OrderStatusText = ref<FormOrderPlacementMainData[]>(
DataStore.DataMainOrigOrder
);
const OrderStatusOption = reactive<DataOption1[]>([ const OrderStatusOption = reactive<DataOption1[]>([
{ id: "", name: "ทั้งหมด" }, { id: "", name: "ทั้งหมด" },
]); ]);
@ -263,7 +221,6 @@ const addedOrderStatusValues: string[] = [];
const OrderStatusFilter = async () => { const OrderStatusFilter = async () => {
for (let data of OriginalData.value) { for (let data of OriginalData.value) {
const OrderStatusValue = data.OrderStatus; const OrderStatusValue = data.OrderStatus;
if ( if (
OrderStatusValue === null || OrderStatusValue === null ||
parseInt(OrderStatusValue) > parseInt(OrderStatusValue) parseInt(OrderStatusValue) > parseInt(OrderStatusValue)
@ -290,7 +247,7 @@ const resetFilter = () => {
}; };
const attrs = ref<any>(useAttrs()); const attrs = ref<any>(useAttrs());
//
const searchFilterTable = async () => { const searchFilterTable = async () => {
if (OrderType.value == "ทั้งหมด") { if (OrderType.value == "ทั้งหมด") {
OrderType.value = ""; OrderType.value = "";
@ -298,7 +255,6 @@ const searchFilterTable = async () => {
if (OrderStatus.value == "ทั้งหมด") { if (OrderStatus.value == "ทั้งหมด") {
OrderStatus.value = ""; OrderStatus.value = "";
} }
await DataStore.DataUpdateOrder( await DataStore.DataUpdateOrder(
OrderType.value, OrderType.value,
OrderStatus.value, OrderStatus.value,
@ -489,12 +445,6 @@ const paginationLabel = (start: string, end: string, total: string) => {
<q-td key="OrderStatus" :props="props"> <q-td key="OrderStatus" :props="props">
{{ props.row.OrderStatus }} {{ props.row.OrderStatus }}
</q-td> </q-td>
<!-- <q-td auto-width>
<q-btn dense size="12px" flat round color="red" @click.stop="clickDelete(props.row.orderId)"
icon="mdi-delete">
<q-tooltip>ลบขอม</q-tooltip>
</q-btn>
</q-td> -->
</q-tr> </q-tr>
</template> </template>
<template v-slot:pagination="scope"> <template v-slot:pagination="scope">

View file

@ -1,6 +1,5 @@
<script setup lang="ts"> <script setup lang="ts">
import { ref } from "vue"; import { ref } from "vue";
import type { DataOption } from "@/modules/04_registry/components/profileType";
import http from "@/plugins/http"; import http from "@/plugins/http";
import config from "@/app.config"; import config from "@/app.config";
import type { QForm } from "quasar"; import type { QForm } from "quasar";
@ -10,7 +9,7 @@ import { useRouter } from "vue-router";
const myForm = ref<QForm>(); const myForm = ref<QForm>();
const mixin = useCounterMixin(); const mixin = useCounterMixin();
const { showLoader, hideLoader, messageError, date2Thai, notifyError } = mixin; const { showLoader, hideLoader, messageError } = mixin;
const $q = useQuasar(); const $q = useQuasar();
const router = useRouter(); const router = useRouter();
@ -69,7 +68,7 @@ const columns = ref<any["columns"]>([
}, },
]); ]);
const rows = ref<any>([]); const rows = ref<any>([]);
// popup
const clickOpenpopup = () => { const clickOpenpopup = () => {
modal.value = true; modal.value = true;
employeeClass.value = ""; employeeClass.value = "";
@ -85,6 +84,7 @@ const clickOpenpopup = () => {
reportNo.value = ""; reportNo.value = "";
} }
}; };
//
const clickSearch = async () => { const clickSearch = async () => {
await myForm.value!.validate().then((result: boolean) => { await myForm.value!.validate().then((result: boolean) => {
if (result) { if (result) {
@ -98,7 +98,6 @@ const clickSearch = async () => {
.post(config.API.searchOrderprofile(), body) .post(config.API.searchOrderprofile(), body)
.then((res) => { .then((res) => {
let data = res.data.result; let data = res.data.result;
if (data.length !== 0) { if (data.length !== 0) {
rows.value = data.map((e: any) => ({ rows.value = data.map((e: any) => ({
id: e.id, id: e.id,
@ -108,7 +107,6 @@ const clickSearch = async () => {
position: e.position, position: e.position,
})); }));
} else { } else {
// notifyError($q, "");
rows.value = []; rows.value = [];
} }
}) })
@ -122,12 +120,12 @@ const clickSearch = async () => {
} }
}); });
}; };
// Redirect to
const clickRedirect = (id: string) => { const clickRedirect = (id: string) => {
router.push(`/registry/${id}`); router.push(`/registry/${id}`);
}; };
const paging = ref<boolean>(true); const paging = ref<boolean>(true);
const pagination = ref({ const pagination = ref({
sortBy: "citizenId",
descending: false, descending: false,
page: 1, page: 1,
rowsPerPage: 10, rowsPerPage: 10,
@ -319,10 +317,6 @@ const paginationLabel = (start: number, end: number, total: number) => {
</template> </template>
</q-table> </q-table>
</q-card-section> </q-card-section>
<!-- <q-card-actions align="right">
<q-btn flat label="OK" color="primary" v-close-popup />
</q-card-actions> -->
</q-card> </q-card>
</q-dialog> </q-dialog>
</template> </template>

File diff suppressed because it is too large Load diff

View file

@ -109,7 +109,7 @@ const conditionData = async () => {
await fetchOrder(id); await fetchOrder(id);
} }
}; };
//
const getData = async (id: string) => { const getData = async (id: string) => {
showLoader(); showLoader();
await http await http
@ -141,6 +141,7 @@ const getData = async (id: string) => {
hideLoader(); hideLoader();
}); });
}; };
//
const fetchOrder = async (id: string) => { const fetchOrder = async (id: string) => {
await http await http
.get(config.API.detailOrder(id)) .get(config.API.detailOrder(id))
@ -152,6 +153,7 @@ const fetchOrder = async (id: string) => {
messageError($q, err); messageError($q, err);
}); });
}; };
//
const statuscode = computed(() => { const statuscode = computed(() => {
if ( if (
orderTypeCode.value === "c-pm-01" || orderTypeCode.value === "c-pm-01" ||
@ -170,10 +172,11 @@ const statuscode = computed(() => {
} }
return true; return true;
}); });
//
const dialogDeleteData = async (id: string) => { const dialogDeleteData = async (id: string) => {
dialogRemove($q, () => deleteData(id)); dialogRemove($q, () => deleteData(id));
}; };
// API
const deleteData = async (id: string) => { const deleteData = async (id: string) => {
await http await http
.delete(config.API.personsOrder(id)) .delete(config.API.personsOrder(id))
@ -188,9 +191,8 @@ const deleteData = async (id: string) => {
await conditionData(); await conditionData();
}); });
}; };
//
const swapUp = async (id: string) => { const swapUp = async (id: string) => {
// id = personalId
await http await http
.put(config.API.swapUpOrder(id)) .put(config.API.swapUpOrder(id))
.catch((e) => { .catch((e) => {
@ -201,9 +203,8 @@ const swapUp = async (id: string) => {
hideLoader(); hideLoader();
}); });
}; };
//
const swapDown = async (id: string) => { const swapDown = async (id: string) => {
// id = personalId
await http await http
.put(config.API.swapDownOrder(id)) .put(config.API.swapDownOrder(id))
.catch((e) => { .catch((e) => {
@ -216,14 +217,13 @@ const swapDown = async (id: string) => {
}; };
const upDown = async (value: any, up: boolean = true) => { const upDown = async (value: any, up: boolean = true) => {
const indexCurrent = value.rowIndex;
if (up) { if (up) {
await swapUp(value.row.personalId); await swapUp(value.row.personalId);
} else { } else {
await swapDown(value.row.personalId); await swapDown(value.row.personalId);
} }
}; };
//
const saveModal = () => { const saveModal = () => {
if (myForm.value !== null) { if (myForm.value !== null) {
myForm.value.validate().then(async (result: boolean) => { myForm.value.validate().then(async (result: boolean) => {
@ -234,12 +234,13 @@ const saveModal = () => {
} }
}; };
const personalId = ref<string>(""); const personalId = ref<string>("");
// popup
const selectModal = (e: any) => { const selectModal = (e: any) => {
titleName.value = e.name; titleName.value = e.name;
personalId.value = e.personalId; personalId.value = e.personalId;
modalOpenClose(e.personalId); modalOpenClose(e.personalId);
}; };
// popup
const modalOpenClose = async (personalId: string) => { const modalOpenClose = async (personalId: string) => {
modal.value = !modal.value; modal.value = !modal.value;
if (modal.value) { if (modal.value) {
@ -249,6 +250,7 @@ const modalOpenClose = async (personalId: string) => {
} }
myForm.value?.reset(); myForm.value?.reset();
}; };
// personalId
const fetchSalary = async (personalId: string) => { const fetchSalary = async (personalId: string) => {
showLoader(); showLoader();
await http await http
@ -283,7 +285,7 @@ const fetchSalary = async (personalId: string) => {
hideLoader(); hideLoader();
}); });
}; };
//
const putSalary = async (salary: any) => { const putSalary = async (salary: any) => {
dialogConfirm($q, async () => { dialogConfirm($q, async () => {
showLoader(); showLoader();
@ -298,7 +300,7 @@ const putSalary = async (salary: any) => {
} }
await http await http
.put(config.API.salaryOrder(personalId.value), modalData.value) .put(config.API.salaryOrder(personalId.value), modalData.value)
.then((res: any) => { .then((any) => {
success($q, "บันทึกข้อมูลสำเร็จ"); success($q, "บันทึกข้อมูลสำเร็จ");
}) })
.catch((e) => { .catch((e) => {
@ -311,7 +313,7 @@ const putSalary = async (salary: any) => {
}); });
}); });
}; };
// popup
const modalAddChange = async () => { const modalAddChange = async () => {
modalAdd.value = !modalAdd.value; modalAdd.value = !modalAdd.value;
if (modalAdd.value == true) { if (modalAdd.value == true) {
@ -325,7 +327,7 @@ const modalAddChange = async () => {
} }
} else await conditionData(); } else await conditionData();
}; };
//
const fetchaddlist = async (id: string) => { const fetchaddlist = async (id: string) => {
showLoader(); showLoader();
await http await http
@ -344,7 +346,6 @@ const fetchaddlist = async (id: string) => {
})); }));
rows2.value = list; rows2.value = list;
selected.value = rows.value; selected.value = rows.value;
// rows2.value = list.filter((e: any) => e.selectStatus === false);
}) })
.catch((e) => { .catch((e) => {
messageError($q, e); messageError($q, e);
@ -353,7 +354,7 @@ const fetchaddlist = async (id: string) => {
hideLoader(); hideLoader();
}); });
}; };
//
const saveModalAdd = () => { const saveModalAdd = () => {
if (myFormAdd.value !== null) { if (myFormAdd.value !== null) {
myFormAdd.value.validate().then(async (result: boolean) => { myFormAdd.value.validate().then(async (result: boolean) => {
@ -372,7 +373,7 @@ const saveModalAdd = () => {
}); });
} }
}; };
// API
const addlist = async (data: Object) => { const addlist = async (data: Object) => {
const id = route.params.orderid const id = route.params.orderid
? route.params.orderid.toString() ? route.params.orderid.toString()
@ -393,7 +394,7 @@ const addlist = async (data: Object) => {
}); });
} }
}; };
// step 2
const save = async () => { const save = async () => {
const check = rows.value.find((x: any) => x.salaryAmount == 0); const check = rows.value.find((x: any) => x.salaryAmount == 0);
if ( if (
@ -725,8 +726,7 @@ const pagination = ref({
color="public" color="public"
@click="saveModalAdd" @click="saveModalAdd"
class="q-px-md" class="q-px-md"
><!-- icon="mdi-content-save-outline" >
<q-tooltip>นท</q-tooltip> -->
</q-btn> </q-btn>
</q-card-actions> </q-card-actions>
</q-form> </q-form>

View file

@ -187,7 +187,7 @@ const listModal = async (id: string) => {
hideLoader(); hideLoader();
}); });
}; };
// orderid
const conditionId = async () => { const conditionId = async () => {
const id = route.params.orderid const id = route.params.orderid
? route.params.orderid.toString() ? route.params.orderid.toString()
@ -198,7 +198,7 @@ const conditionId = async () => {
await getData(id); await getData(id);
} }
}; };
// Table
const getData = async (id: string) => { const getData = async (id: string) => {
showLoader(); showLoader();
await http await http
@ -214,7 +214,6 @@ const getData = async (id: string) => {
if (r.inboxChannel) { if (r.inboxChannel) {
selectCopyOrder.push(2); selectCopyOrder.push(2);
} }
list.push({ list.push({
personalId: r.personalId ?? "", personalId: r.personalId ?? "",
name: r.name ?? "", name: r.name ?? "",
@ -243,7 +242,7 @@ const getData = async (id: string) => {
hideLoader(); hideLoader();
}); });
}; };
//
const saveData = async () => { const saveData = async () => {
const id = route.params.orderid const id = route.params.orderid
? route.params.orderid.toString() ? route.params.orderid.toString()
@ -281,7 +280,7 @@ const getClass = (val: boolean) => {
const clickClose = async () => { const clickClose = async () => {
modal.value = false; modal.value = false;
}; };
// popup
const clickAdd = async () => { const clickAdd = async () => {
await nodeTree(); await nodeTree();
selected.value = ""; selected.value = "";
@ -292,11 +291,11 @@ const clickAdd = async () => {
myForm.value.reset(); myForm.value.reset();
} }
}; };
//
const clickDelete = (id: string) => { const clickDelete = (id: string) => {
dialogRemove($q, () => deleteData(id)); dialogRemove($q, () => deleteData(id));
}; };
// tree
const nodeTree = async () => { const nodeTree = async () => {
showLoader(); showLoader();
await http await http
@ -315,11 +314,11 @@ const nodeTree = async () => {
hideLoader(); hideLoader();
}); });
}; };
//
const onSelected = async (id: string) => { const onSelected = async (id: string) => {
await listModal(id); await listModal(id);
}; };
//
const deleteData = async (id: string) => { const deleteData = async (id: string) => {
await http await http
.delete(config.API.copyOrderId(id)) .delete(config.API.copyOrderId(id))
@ -334,7 +333,7 @@ const deleteData = async (id: string) => {
await conditionId(); await conditionId();
}); });
}; };
// step 3
const saveDataCopyOrder = async () => { const saveDataCopyOrder = async () => {
if (myForm.value !== null) { if (myForm.value !== null) {
myForm.value.validate().then(async (result: boolean) => { myForm.value.validate().then(async (result: boolean) => {
@ -344,7 +343,7 @@ const saveDataCopyOrder = async () => {
}); });
} }
}; };
// step 3 API
const fetchSaveCopyOrder = async () => { const fetchSaveCopyOrder = async () => {
let list: RequestCopyOrder[] = []; let list: RequestCopyOrder[] = [];
rows.value.map((r: DataCopyOrder) => { rows.value.map((r: DataCopyOrder) => {
@ -522,12 +521,8 @@ const updateData = (row: DataCopyOrder) => {
color="public" color="public"
@click="saveDataCopyOrder" @click="saveDataCopyOrder"
class="q-px-md" class="q-px-md"
><!-- icon="mdi-content-save-outline" >
<q-tooltip>นท</q-tooltip> -->
</q-btn> </q-btn>
<!-- <q-btn flat round color="primary" icon="chevron_right" @click="next">
<q-tooltip>อไป</q-tooltip>
</q-btn> -->
</div> </div>
</div> </div>
@ -626,20 +621,6 @@ const updateData = (row: DataCopyOrder) => {
</template> </template>
<template v-slot:body-selection="scope"> <template v-slot:body-selection="scope">
<!-- <q-checkbox
keep-color
color="primary"
dense
:model-value="scope.selected"
@update:model-value="
(val, evt) => {
Object.getOwnPropertyDescriptor(scope, 'selected').set(
val,
evt
);
}
"
/> -->
<q-checkbox <q-checkbox
keep-color keep-color
color="primary" color="primary"
@ -665,15 +646,6 @@ const updateData = (row: DataCopyOrder) => {
</q-card-section> </q-card-section>
<q-separator /> <q-separator />
<q-card-actions align="right"> <q-card-actions align="right">
<!-- <q-btn
flat
round
color="public"
icon="mdi-content-save-outline"
@click="clickClose"
>
<q-tooltip>นท</q-tooltip>
</q-btn> -->
<q-btn <q-btn
dense dense
unelevated unelevated

View file

@ -55,7 +55,7 @@ onMounted(async () => {
hideLoader(); hideLoader();
} }
}); });
//
const getCommandDetail = async () => { const getCommandDetail = async () => {
await http await http
.get(config.API.detailOrder(orderId.value)) .get(config.API.detailOrder(orderId.value))
@ -85,7 +85,7 @@ const getCommandDetail = async () => {
messageError($q, e); messageError($q, e);
}); });
}; };
//
const downloadCover = async (type: string) => { const downloadCover = async (type: string) => {
showLoader(); showLoader();
await http await http
@ -102,7 +102,7 @@ const downloadCover = async (type: string) => {
hideLoader(); hideLoader();
}); });
}; };
//
const downloadAttachment = async (type: string) => { const downloadAttachment = async (type: string) => {
showLoader(); showLoader();
await http await http
@ -119,7 +119,7 @@ const downloadAttachment = async (type: string) => {
hideLoader(); hideLoader();
}); });
}; };
//
const fetchReportCover = async (type: string, orderId: string) => { const fetchReportCover = async (type: string, orderId: string) => {
await http await http
.get(config.API.reportOrderCover(type, orderId, code.value), { .get(config.API.reportOrderCover(type, orderId, code.value), {
@ -137,7 +137,7 @@ const fetchReportCover = async (type: string, orderId: string) => {
messageError($q, e); messageError($q, e);
}); });
}; };
//
const fetchReportAttachment = async (type: string, orderId: string) => { const fetchReportAttachment = async (type: string, orderId: string) => {
await http await http
.get(config.API.reportOrderAttachment(type, orderId, code.value), { .get(config.API.reportOrderAttachment(type, orderId, code.value), {
@ -159,7 +159,6 @@ const fetchAttachment = async (orderId: string) => {
.get(config.API.attachmentOrder(orderId)) .get(config.API.attachmentOrder(orderId))
.then(async (res) => { .then(async (res) => {
let response = res.data.result; let response = res.data.result;
order.value = response.orderNo; order.value = response.orderNo;
years.value = Number(response.orderYear); years.value = Number(response.orderYear);
if (response.date !== undefined) { if (response.date !== undefined) {
@ -176,7 +175,7 @@ const fetchAttachment = async (orderId: string) => {
messageError($q, e); messageError($q, e);
}); });
}; };
//
const fecthstatusOrder = async () => { const fecthstatusOrder = async () => {
await http await http
.get(config.API.orderReady(orderId.value)) .get(config.API.orderReady(orderId.value))
@ -188,7 +187,7 @@ const fecthstatusOrder = async () => {
messageError($q, e); messageError($q, e);
}); });
}; };
// PDF
const viewPDF = async (pdf: string) => { const viewPDF = async (pdf: string) => {
const pdfData = await usePDF(`${pdf}`); const pdfData = await usePDF(`${pdf}`);
showLoader(); showLoader();
@ -198,7 +197,7 @@ const viewPDF = async (pdf: string) => {
hideLoader(); hideLoader();
}, 1500); }, 1500);
}; };
// PDF
const viewPDFUpload = async (pdf: string) => { const viewPDFUpload = async (pdf: string) => {
const pdfData = await usePDF(`${pdf}`); const pdfData = await usePDF(`${pdf}`);
showLoader(); showLoader();
@ -246,7 +245,7 @@ const onchangePage = (val: any) => {
vuePDFRef.value.reload(); vuePDFRef.value.reload();
} }
}; };
//
const downloadFile = (response: any, filename: string) => { const downloadFile = (response: any, filename: string) => {
const link = document.createElement("a"); const link = document.createElement("a");
var fileName = filename; var fileName = filename;
@ -317,7 +316,6 @@ const saveDetail = () => {
// //
await viewPDF(orderAttachmentPdf.value); await viewPDF(orderAttachmentPdf.value);
} }
} }
// (Y = , N = ) // (Y = , N = )
@ -346,7 +344,7 @@ const putOrderData = async () => {
messageError($q, e); messageError($q, e);
}); });
}; };
//
const postfileOrder = async () => { const postfileOrder = async () => {
const formData = new FormData(); const formData = new FormData();
formData.append("File", fileOrder.value); formData.append("File", fileOrder.value);
@ -359,7 +357,7 @@ const postfileOrder = async () => {
messageError($q, e); messageError($q, e);
}); });
}; };
//
const postfileTailer = async () => { const postfileTailer = async () => {
const formData = new FormData(); const formData = new FormData();
formData.append("File", fileTailer.value); formData.append("File", fileTailer.value);
@ -372,7 +370,7 @@ const postfileTailer = async () => {
messageError($q, e); messageError($q, e);
}); });
}; };
//
const clickExecute = async (id: string) => { const clickExecute = async (id: string) => {
dialogConfirm( dialogConfirm(
$q, $q,
@ -396,7 +394,6 @@ const clickExecute = async (id: string) => {
"ต้องการยืนยันการออกคำสั่งนี้ใช่หรือไม่?" "ต้องการยืนยันการออกคำสั่งนี้ใช่หรือไม่?"
); );
}; };
const validateFormUpload = () => { const validateFormUpload = () => {
if ( if (
code.value != "c-pm-10" && code.value != "c-pm-10" &&
@ -446,61 +443,96 @@ const viewFileUpload = async (url: string) => {
<template> <template>
<div> <div>
<div style="min-height: 70vh"> <div style="min-height: 70vh">
<q-splitter v-model="splitterModel" style="height: 70vh" @update:model-value="onchangePage"> <q-splitter
v-model="splitterModel"
style="height: 70vh"
@update:model-value="onchangePage"
>
<template v-slot:before> <template v-slot:before>
<div class="space"> <div class="space">
<div @click="setTab('main')" :class="getClass(tab == 'main')"> <div @click="setTab('main')" :class="getClass(tab == 'main')">
<div class="q-pr-sm">คำส</div> <div class="q-pr-sm">คำส</div>
<q-btn v-if="orderStatusName != 'ออกคำสั่งแล้ว'" size="12px" flat dense icon="mdi-download" <q-btn
:disable="tab !== 'main'" :color="tab !== 'main' ? 'grey' : 'add'"> v-if="orderStatusName != 'ออกคำสั่งแล้ว'"
size="12px"
flat
dense
icon="mdi-download"
:disable="tab !== 'main'"
:color="tab !== 'main' ? 'grey' : 'add'"
>
<q-tooltip>ดาวนโหลด</q-tooltip> <q-tooltip>ดาวนโหลด</q-tooltip>
<q-menu> <q-menu>
<q-list style="min-width: 150px"> <q-list style="min-width: 150px">
<q-item clickable v-close-popup @click="downloadCover('pdf')"> <q-item
<!-- type="a" clickable
:href="orderCoverPdf" v-close-popup
target="_blank" --> @click="downloadCover('pdf')"
<q-item-section avatar><q-icon color="red" name="mdi-file-pdf" /></q-item-section> >
<q-item-section avatar
><q-icon color="red" name="mdi-file-pdf"
/></q-item-section>
<q-item-section>ไฟล .PDF</q-item-section> <q-item-section>ไฟล .PDF</q-item-section>
</q-item> </q-item>
<q-item clickable v-close-popup @click="downloadCover('docx')"> <q-item
<!-- type="a" clickable
:href="orderCoverDocs" v-close-popup
target="_blank" --> @click="downloadCover('docx')"
<q-item-section avatar><q-icon color="blue" name="mdi-file-word" /></q-item-section> >
<q-item-section avatar
><q-icon color="blue" name="mdi-file-word"
/></q-item-section>
<q-item-section>ไฟล .docx</q-item-section> <q-item-section>ไฟล .docx</q-item-section>
</q-item> </q-item>
</q-list> </q-list>
</q-menu> </q-menu>
</q-btn> </q-btn>
</div> </div>
<div v-if="code != 'c-pm-10' && <div
code != 'c-pm-11' && v-if="
code != 'c-pm-12' && code != 'c-pm-10' &&
code != 'c-pm-16' && code != 'c-pm-11' &&
code != 'c-pm-18' && code != 'c-pm-12' &&
code != 'c-pm-19' && code != 'c-pm-16' &&
code != 'c-pm-20' && code != 'c-pm-18' &&
code != 'c-pm-21' code != 'c-pm-19' &&
" @click="setTab('second')" :class="getClass(tab == 'second')"> code != 'c-pm-20' &&
code != 'c-pm-21'
"
@click="setTab('second')"
:class="getClass(tab == 'second')"
>
<div class="q-pr-sm">เอกสารแนบทาย</div> <div class="q-pr-sm">เอกสารแนบทาย</div>
<q-btn v-if="orderStatusName != 'ออกคำสั่งแล้ว'" size="12px" flat dense <q-btn
:color="tab !== 'second' ? 'grey' : 'add'" icon="mdi-download" :disable="tab !== 'second'"> v-if="orderStatusName != 'ออกคำสั่งแล้ว'"
size="12px"
flat
dense
:color="tab !== 'second' ? 'grey' : 'add'"
icon="mdi-download"
:disable="tab !== 'second'"
>
<q-tooltip>ดาวนโหลด</q-tooltip> <q-tooltip>ดาวนโหลด</q-tooltip>
<q-menu> <q-menu>
<q-list style="min-width: 150px"> <q-list style="min-width: 150px">
<q-item clickable v-close-popup @click="downloadAttachment('pdf')"> <q-item
<!-- type="a" clickable
:href="orderAttachmentPdf" v-close-popup
target="_blank" --> @click="downloadAttachment('pdf')"
<q-item-section avatar><q-icon color="red" name="mdi-file-pdf" /></q-item-section> >
<q-item-section avatar
><q-icon color="red" name="mdi-file-pdf"
/></q-item-section>
<q-item-section>ไฟล .PDF</q-item-section> <q-item-section>ไฟล .PDF</q-item-section>
</q-item> </q-item>
<q-item clickable v-close-popup @click="downloadAttachment('xlsx')"> <q-item
<!-- type="a" clickable
:href="orderAttachmentXlsx" v-close-popup
target="_blank" --> @click="downloadAttachment('xlsx')"
<q-item-section avatar><q-icon color="green-7" name="mdi-file-excel" /></q-item-section> >
<q-item-section avatar
><q-icon color="green-7" name="mdi-file-excel"
/></q-item-section>
<q-item-section>ไฟล .xls</q-item-section> <q-item-section>ไฟล .xls</q-item-section>
</q-item> </q-item>
</q-list> </q-list>
@ -508,12 +540,24 @@ const viewFileUpload = async (url: string) => {
</q-btn> </q-btn>
</div> </div>
<q-space /> <q-space />
<q-btn class="text-dark" flat dense icon="mdi-fullscreen" color="add" @click="dialog = true" /> <q-btn
class="text-dark"
flat
dense
icon="mdi-fullscreen"
color="add"
@click="dialog = true"
/>
</div> </div>
<q-separator style="margin-top: -1px; z-index: 1" /> <q-separator style="margin-top: -1px; z-index: 1" />
<q-card bordered class="card-pdf q-ma-md q-pa-md"> <q-card bordered class="card-pdf q-ma-md q-pa-md">
<div class="justify-between items-center align-center q-pb-sm row"> <div class="justify-between items-center align-center q-pb-sm row">
<q-btn class="text-dark bg-grey-4" flat dense @click="page = page > 1 ? page - 1 : page"> <q-btn
class="text-dark bg-grey-4"
flat
dense
@click="page = page > 1 ? page - 1 : page"
>
<q-icon name="mdi-chevron-left" /> <q-icon name="mdi-chevron-left" />
</q-btn> </q-btn>
@ -521,16 +565,25 @@ const viewFileUpload = async (url: string) => {
หนาท {{ page }} จาก {{ numOfPages }} หนาท {{ page }} จาก {{ numOfPages }}
</span> </span>
<q-btn class="text-dark bg-grey-4" flat dense @click="page = page < numOfPages ? page + 1 : page"> <q-btn
class="text-dark bg-grey-4"
flat
dense
@click="page = page < numOfPages ? page + 1 : page"
>
<q-icon name="mdi-chevron-right" /> <q-icon name="mdi-chevron-right" />
</q-btn> </q-btn>
</div> </div>
<div class="pdfWidth"> <div class="pdfWidth">
<VuePDF ref="vuePDFRef" :pdf="pdfSrc" :page="page" fit-parent /> <VuePDF ref="vuePDFRef" :pdf="pdfSrc" :page="page" fit-parent />
<!-- <VuePdf :key="page" :src="pdfSrc" :page="page" /> -->
</div> </div>
<div class="justify-between items-center align-center q-pt-sm row"> <div class="justify-between items-center align-center q-pt-sm row">
<q-btn class="text-dark bg-grey-4" flat dense @click="page = page > 1 ? page - 1 : page"> <q-btn
class="text-dark bg-grey-4"
flat
dense
@click="page = page > 1 ? page - 1 : page"
>
<q-icon name="mdi-chevron-left" /> <q-icon name="mdi-chevron-left" />
</q-btn> </q-btn>
@ -538,7 +591,12 @@ const viewFileUpload = async (url: string) => {
หนาท {{ page }} จาก {{ numOfPages }} หนาท {{ page }} จาก {{ numOfPages }}
</span> </span>
<q-btn class="text-dark bg-grey-4" flat dense @click="page = page < numOfPages ? page + 1 : page"> <q-btn
class="text-dark bg-grey-4"
flat
dense
@click="page = page < numOfPages ? page + 1 : page"
>
<q-icon name="mdi-chevron-right" /> <q-icon name="mdi-chevron-right" />
</q-btn> </q-btn>
</div> </div>
@ -546,7 +604,12 @@ const viewFileUpload = async (url: string) => {
</template> </template>
<template v-slot:separator> <template v-slot:separator>
<q-avatar color="primary" text-color="white" size="30px" icon="drag_indicator" /> <q-avatar
color="primary"
text-color="white"
size="30px"
icon="drag_indicator"
/>
</template> </template>
<template v-slot:after> <template v-slot:after>
@ -558,47 +621,94 @@ const viewFileUpload = async (url: string) => {
<div> <div>
<label class="text-file">คำส</label> <label class="text-file">คำส</label>
<div v-if="OrderPDFUpload != ''" class="text-right"> <div v-if="OrderPDFUpload != ''" class="text-right">
<q-btn size="12px" flat dense color="primary" icon="mdi-eye" <q-btn
@click="viewFileUpload(OrderPDFUpload)"> size="12px"
flat
dense
color="primary"
icon="mdi-eye"
@click="viewFileUpload(OrderPDFUpload)"
>
<q-tooltip>ไฟลคำส</q-tooltip> <q-tooltip>ไฟลคำส</q-tooltip>
</q-btn> </q-btn>
<q-btn type="a" :href="OrderPDFUpload" size="12px" flat dense color="red" icon="mdi-download" <q-btn
target="_blank"> type="a"
:href="OrderPDFUpload"
size="12px"
flat
dense
color="red"
icon="mdi-download"
target="_blank"
>
<q-tooltip>ดาวนโหลดไฟลคำส</q-tooltip> <q-tooltip>ดาวนโหลดไฟลคำส</q-tooltip>
</q-btn> </q-btn>
</div> </div>
<q-file v-if="orderStatusName != 'ออกคำสั่งแล้ว'" outlined dense v-model="fileOrder" <q-file
label="เลือกไฟล์คำสั่ง" hide-bottom-space lazy-rules v-if="orderStatusName != 'ออกคำสั่งแล้ว'"
:rules="[(val) => val || 'กรุณาเลือกไฟล์ไฟล์คำสั่ง']" accept=".pdf"> outlined
dense
v-model="fileOrder"
label="เลือกไฟล์คำสั่ง"
hide-bottom-space
lazy-rules
:rules="[(val) => val || 'กรุณาเลือกไฟล์ไฟล์คำสั่ง']"
accept=".pdf"
>
<template v-slot:prepend> <template v-slot:prepend>
<q-icon name="attach_file" /> <q-icon name="attach_file" />
</template> </template>
</q-file> </q-file>
</div> </div>
<div v-if="code != 'c-pm-10' && <div
code != 'c-pm-11' && v-if="
code != 'c-pm-12' && code != 'c-pm-10' &&
code != 'c-pm-16' && code != 'c-pm-11' &&
code != 'c-pm-18' && code != 'c-pm-12' &&
code != 'c-pm-19' && code != 'c-pm-16' &&
code != 'c-pm-20' && code != 'c-pm-18' &&
code != 'c-pm-21' code != 'c-pm-19' &&
"> code != 'c-pm-20' &&
code != 'c-pm-21'
"
>
<label class="text-file">เอกสารแนบทาย</label> <label class="text-file">เอกสารแนบทาย</label>
<div v-if="TailerPDFUpload != ''" class="text-right"> <div v-if="TailerPDFUpload != ''" class="text-right">
<q-btn size="12px" flat dense color="primary" icon="mdi-eye" <q-btn
@click="viewFileUpload(TailerPDFUpload)"> size="12px"
flat
dense
color="primary"
icon="mdi-eye"
@click="viewFileUpload(TailerPDFUpload)"
>
<q-tooltip>เอกสารแนบทาย</q-tooltip> <q-tooltip>เอกสารแนบทาย</q-tooltip>
</q-btn> </q-btn>
<q-btn type="a" :href="TailerPDFUpload" size="12px" flat dense color="red" icon="mdi-download" <q-btn
target="_blank"> type="a"
:href="TailerPDFUpload"
size="12px"
flat
dense
color="red"
icon="mdi-download"
target="_blank"
>
<q-tooltip>ดาวนโหลดเอกสารแนบทาย</q-tooltip> <q-tooltip>ดาวนโหลดเอกสารแนบทาย</q-tooltip>
</q-btn> </q-btn>
</div> </div>
<q-file v-if="orderStatusName != 'ออกคำสั่งแล้ว'" outlined dense v-model="fileTailer" <q-file
label="เลือกไฟล์เอกสารแนบท้าย" hide-bottom-space lazy-rules v-if="orderStatusName != 'ออกคำสั่งแล้ว'"
:rules="[(val) => val || 'กรุณาเลือกไฟล์เอกสารแนบท้าย']" accept=".pdf"> outlined
dense
v-model="fileTailer"
label="เลือกไฟล์เอกสารแนบท้าย"
hide-bottom-space
lazy-rules
:rules="[(val) => val || 'กรุณาเลือกไฟล์เอกสารแนบท้าย']"
accept=".pdf"
>
<template v-slot:prepend> <template v-slot:prepend>
<q-icon name="attach_file" /> <q-icon name="attach_file" />
</template> </template>
@ -606,15 +716,26 @@ const viewFileUpload = async (url: string) => {
</div> </div>
<!-- นทกอพโหลดเอกสาร --> <!-- นทกอพโหลดเอกสาร -->
<div v-if="orderStatusName != 'ออกคำสั่งแล้ว'" class="row col-12 q-mt-md"> <div
v-if="orderStatusName != 'ออกคำสั่งแล้ว'"
class="row col-12 q-mt-md"
>
<q-space></q-space> <q-space></q-space>
<q-btn unelevated label="บันทึก" :color="validateFormUpload() && <q-btn
orderStatusName != 'ออกคำสั่งแล้ว' unelevated
? 'public' label="บันทึก"
: 'grey' :color="
" :disable="!validateFormUpload() || validateFormUpload() &&
orderStatusName == 'ออกคำสั่งแล้ว' orderStatusName != 'ออกคำสั่งแล้ว'
" @click="saveUpload"> ? 'public'
: 'grey'
"
:disable="
!validateFormUpload() ||
orderStatusName == 'ออกคำสั่งแล้ว'
"
@click="saveUpload"
>
</q-btn> </q-btn>
</div> </div>
</div> </div>
@ -627,25 +748,54 @@ const viewFileUpload = async (url: string) => {
<div class="q-gutter-y-md q-mb-md"> <div class="q-gutter-y-md q-mb-md">
<div> <div>
<label class="text-file">เลขทคำส</label> <label class="text-file">เลขทคำส</label>
<q-input :outlined="true" dense lazy-rules :readonly="!true" :borderless="!true" v-model="order" <q-input
:rules="[(val) => !!val || `${'กรุณากรอกเลขที่คำสั่ง'}`]" hide-bottom-space :outlined="true"
:label="`${'เลขที่คำสั่ง'}`" :disable="orderStatusName == 'ออกคำสั่งแล้ว'" /> dense
lazy-rules
:readonly="!true"
:borderless="!true"
v-model="order"
:rules="[(val) => !!val || `${'กรุณากรอกเลขที่คำสั่ง'}`]"
hide-bottom-space
:label="`${'เลขที่คำสั่ง'}`"
:disable="orderStatusName == 'ออกคำสั่งแล้ว'"
/>
</div> </div>
<div> <div>
<label class="text-file">ออกคำส</label> <label class="text-file">ออกคำส</label>
<datepicker :disabled="orderStatusName == 'ออกคำสั่งแล้ว'" menu-class-name="modalfix" v-model="years" <datepicker
:locale="'th'" autoApply year-picker :enableTimePicker="false" week-start="0"> :disabled="orderStatusName == 'ออกคำสั่งแล้ว'"
menu-class-name="modalfix"
v-model="years"
:locale="'th'"
autoApply
year-picker
:enableTimePicker="false"
week-start="0"
>
<template #year="{ year }">{{ year + 543 }}</template> <template #year="{ year }">{{ year + 543 }}</template>
<template #year-overlay-value="{ value }">{{ <template #year-overlay-value="{ value }">{{
parseInt(value + 543) parseInt(value + 543)
}}</template> }}</template>
<template #trigger> <template #trigger>
<q-input :disable="orderStatusName == 'ออกคำสั่งแล้ว'" outlined dense lazy-rules <q-input
:model-value="years + 543" :rules="[ :disable="orderStatusName == 'ออกคำสั่งแล้ว'"
outlined
dense
lazy-rules
:model-value="years + 543"
:rules="[
(val) => !!val || `${'กรุณาเลือกปีที่ออกคำสั่ง'}`, (val) => !!val || `${'กรุณาเลือกปีที่ออกคำสั่ง'}`,
]" hide-bottom-space :label="`${'ปีที่ออกคำสั่ง'}`"> ]"
hide-bottom-space
:label="`${'ปีที่ออกคำสั่ง'}`"
>
<template v-slot:prepend> <template v-slot:prepend>
<q-icon name="event" class="cursor-pointer" style="color: var(--q-grey)"> <q-icon
name="event"
class="cursor-pointer"
style="color: var(--q-grey)"
>
</q-icon> </q-icon>
</template> </template>
</q-input> </q-input>
@ -654,8 +804,16 @@ const viewFileUpload = async (url: string) => {
</div> </div>
<div> <div>
<label class="text-file">นทลงนาม</label> <label class="text-file">นทลงนาม</label>
<datepicker :disabled="orderStatusName == 'ออกคำสั่งแล้ว'" menu-class-name="modalfix" v-model="date" <datepicker
:locale="'th'" autoApply borderless :enableTimePicker="false" week-start="0"> :disabled="orderStatusName == 'ออกคำสั่งแล้ว'"
menu-class-name="modalfix"
v-model="date"
:locale="'th'"
autoApply
borderless
:enableTimePicker="false"
week-start="0"
>
<template #year="{ year }"> <template #year="{ year }">
{{ year + 543 }} {{ year + 543 }}
</template> </template>
@ -663,13 +821,24 @@ const viewFileUpload = async (url: string) => {
{{ parseInt(value + 543) }} {{ parseInt(value + 543) }}
</template> </template>
<template #trigger> <template #trigger>
<q-input :disable="orderStatusName == 'ออกคำสั่งแล้ว'" outlined dense <q-input
class="full-width datepicker" hide-bottom-space :disable="orderStatusName == 'ออกคำสั่งแล้ว'"
:model-value="date != null ? date2Thai(date) : null" :label="`${'วันที่ลงนาม'}`" :rules="[ outlined
dense
class="full-width datepicker"
hide-bottom-space
:model-value="date != null ? date2Thai(date) : null"
:label="`${'วันที่ลงนาม'}`"
:rules="[
(val) => !!val || `${'กรุณาเลือกวันที่ลงนาม'}`, (val) => !!val || `${'กรุณาเลือกวันที่ลงนาม'}`,
]"> ]"
>
<template v-slot:prepend> <template v-slot:prepend>
<q-icon name="event" class="cursor-pointer" style="color: var(--q-grey)"> <q-icon
name="event"
class="cursor-pointer"
style="color: var(--q-grey)"
>
</q-icon> </q-icon>
</template> </template>
</q-input> </q-input>
@ -678,13 +847,24 @@ const viewFileUpload = async (url: string) => {
</div> </div>
<!-- นทกรายละเอยดคำส --> <!-- นทกรายละเอยดคำส -->
<div v-if="orderStatusName != 'ออกคำสั่งแล้ว'" class="row col-12 q-mt-md"> <div
v-if="orderStatusName != 'ออกคำสั่งแล้ว'"
class="row col-12 q-mt-md"
>
<q-space></q-space> <q-space></q-space>
<q-btn unelevated label="บันทึก" :color="validateForm() && orderStatusName != 'ออกคำสั่งแล้ว' <q-btn
? 'public' unelevated
: 'grey' label="บันทึก"
" :disable="!validateForm() || orderStatusName == 'ออกคำสั่งแล้ว' :color="
" @click="saveDetail"> validateForm() && orderStatusName != 'ออกคำสั่งแล้ว'
? 'public'
: 'grey'
"
:disable="
!validateForm() || orderStatusName == 'ออกคำสั่งแล้ว'
"
@click="saveDetail"
>
</q-btn> </q-btn>
</div> </div>
</div> </div>
@ -696,13 +876,26 @@ const viewFileUpload = async (url: string) => {
</div> </div>
<q-separator /> <q-separator />
<div class="flex justify-end q-pa-sm q-gutter-sm"> <div class="flex justify-end q-pa-sm q-gutter-sm">
<q-btn v-if="orderStatusName !== 'ออกคำสั่งแล้ว'" dense outline color="primary" icon="chevron_left" <q-btn
@click="previous" class="q-pr-md" label="เลือกรายชื่อส่งสำเนา"> v-if="orderStatusName !== 'ออกคำสั่งแล้ว'"
dense
outline
color="primary"
icon="chevron_left"
@click="previous"
class="q-pr-md"
label="เลือกรายชื่อส่งสำเนา"
>
</q-btn> </q-btn>
<!-- ออกคำส --> <!-- ออกคำส -->
<q-btn v-if="orderStatusName !== 'ออกคำสั่งแล้ว'" :disable="statusOrder == 'N'" unelevated label="ออกคำสั่ง" <q-btn
:color="statusOrder == 'Y' ? 'public' : 'grey'"> v-if="orderStatusName !== 'ออกคำสั่งแล้ว'"
:disable="statusOrder == 'N'"
unelevated
label="ออกคำสั่ง"
:color="statusOrder == 'Y' ? 'public' : 'grey'"
>
<q-menu> <q-menu>
<q-list style="min-width: 150px"> <q-list style="min-width: 150px">
<q-item clickable v-close-popup @click="clickExecute(orderId)"> <q-item clickable v-close-popup @click="clickExecute(orderId)">
@ -715,18 +908,42 @@ const viewFileUpload = async (url: string) => {
</q-menu> </q-menu>
</q-btn> </q-btn>
<q-btn v-else disable unelevated label="ออกคำสั่งเสร็จสิ้น" color="green"></q-btn> <q-btn
v-else
disable
unelevated
label="ออกคำสั่งเสร็จสิ้น"
color="green"
></q-btn>
</div> </div>
<q-dialog v-model="dialog" persistent :maximized="true" transition-show="slide-up" transition-hide="slide-down"> <q-dialog
v-model="dialog"
persistent
:maximized="true"
transition-show="slide-up"
transition-hide="slide-down"
>
<q-card class="bg-white text-white"> <q-card class="bg-white text-white">
<div class="flex justify-end items-center align-center q-mr-md q-mt-sm"> <div class="flex justify-end items-center align-center q-mr-md q-mt-sm">
<q-btn icon="close" unelevated round dense style="color: #ff8080; background-color: #ffdede" size="12px" <q-btn
v-close-popup /> icon="close"
unelevated
round
dense
style="color: #ff8080; background-color: #ffdede"
size="12px"
v-close-popup
/>
</div> </div>
<q-card-section bordered class="card-pdf q-ma-md q-pa-md"> <q-card-section bordered class="card-pdf q-ma-md q-pa-md">
<div class="justify-between items-center align-center q-pb-sm row"> <div class="justify-between items-center align-center q-pb-sm row">
<q-btn class="text-dark bg-grey-4" flat dense @click="page = page > 1 ? page - 1 : page"> <q-btn
class="text-dark bg-grey-4"
flat
dense
@click="page = page > 1 ? page - 1 : page"
>
<q-icon name="mdi-chevron-left" /> <q-icon name="mdi-chevron-left" />
</q-btn> </q-btn>
@ -734,16 +951,31 @@ const viewFileUpload = async (url: string) => {
หนาท {{ page }} จาก {{ numOfPages }} หนาท {{ page }} จาก {{ numOfPages }}
</span> </span>
<q-btn class="text-dark bg-grey-4" flat dense @click="page = page < numOfPages ? page + 1 : page"> <q-btn
class="text-dark bg-grey-4"
flat
dense
@click="page = page < numOfPages ? page + 1 : page"
>
<q-icon name="mdi-chevron-right" /> <q-icon name="mdi-chevron-right" />
</q-btn> </q-btn>
</div> </div>
<div class="pdfWidth"> <div class="pdfWidth">
<VuePDF ref="vuePDFRef" :pdf="pdfSrc" :page="page" fit-parent :scale="0.1" /> <VuePDF
<!-- <VuePdf :key="page" :src="pdfSrc" :page="page" /> --> ref="vuePDFRef"
:pdf="pdfSrc"
:page="page"
fit-parent
:scale="0.1"
/>
</div> </div>
<div class="justify-between items-center align-center q-pt-sm row"> <div class="justify-between items-center align-center q-pt-sm row">
<q-btn class="text-dark bg-grey-4" flat dense @click="page = page > 1 ? page - 1 : page"> <q-btn
class="text-dark bg-grey-4"
flat
dense
@click="page = page > 1 ? page - 1 : page"
>
<q-icon name="mdi-chevron-left" /> <q-icon name="mdi-chevron-left" />
</q-btn> </q-btn>
@ -751,7 +983,12 @@ const viewFileUpload = async (url: string) => {
หนาท {{ page }} จาก {{ numOfPages }} หนาท {{ page }} จาก {{ numOfPages }}
</span> </span>
<q-btn class="text-dark bg-grey-4" flat dense @click="page = page < numOfPages ? page + 1 : page"> <q-btn
class="text-dark bg-grey-4"
flat
dense
@click="page = page < numOfPages ? page + 1 : page"
>
<q-icon name="mdi-chevron-right" /> <q-icon name="mdi-chevron-right" />
</q-btn> </q-btn>
</div> </div>
@ -759,16 +996,33 @@ const viewFileUpload = async (url: string) => {
</q-card> </q-card>
</q-dialog> </q-dialog>
<q-dialog v-model="dialogFileUpload" persistent :maximized="true" transition-show="slide-up" <q-dialog
transition-hide="slide-down"> v-model="dialogFileUpload"
persistent
:maximized="true"
transition-show="slide-up"
transition-hide="slide-down"
>
<q-card class="bg-white text-white"> <q-card class="bg-white text-white">
<div class="flex justify-end items-center align-center q-mr-md q-mt-sm"> <div class="flex justify-end items-center align-center q-mr-md q-mt-sm">
<q-btn icon="close" unelevated round dense style="color: #ff8080; background-color: #ffdede" size="12px" <q-btn
v-close-popup /> icon="close"
unelevated
round
dense
style="color: #ff8080; background-color: #ffdede"
size="12px"
v-close-popup
/>
</div> </div>
<q-card-section bordered class="card-pdf q-ma-md q-pa-md"> <q-card-section bordered class="card-pdf q-ma-md q-pa-md">
<div class="justify-between items-center align-center q-pb-sm row"> <div class="justify-between items-center align-center q-pb-sm row">
<q-btn class="text-dark bg-grey-4" flat dense @click="page = page > 1 ? page - 1 : page"> <q-btn
class="text-dark bg-grey-4"
flat
dense
@click="page = page > 1 ? page - 1 : page"
>
<q-icon name="mdi-chevron-left" /> <q-icon name="mdi-chevron-left" />
</q-btn> </q-btn>
@ -776,16 +1030,31 @@ const viewFileUpload = async (url: string) => {
หนาท {{ page }} จาก {{ numOfPages }} หนาท {{ page }} จาก {{ numOfPages }}
</span> </span>
<q-btn class="text-dark bg-grey-4" flat dense @click="page = page < numOfPages ? page + 1 : page"> <q-btn
class="text-dark bg-grey-4"
flat
dense
@click="page = page < numOfPages ? page + 1 : page"
>
<q-icon name="mdi-chevron-right" /> <q-icon name="mdi-chevron-right" />
</q-btn> </q-btn>
</div> </div>
<div class="pdfWidth"> <div class="pdfWidth">
<VuePDF ref="vuePDFRef" :pdf="pdfFileUploadSrc" :page="page" fit-parent :scale="0.1" /> <VuePDF
<!-- <VuePdf :key="page" :src="pdfSrc" :page="page" /> --> ref="vuePDFRef"
:pdf="pdfFileUploadSrc"
:page="page"
fit-parent
:scale="0.1"
/>
</div> </div>
<div class="justify-between items-center align-center q-pt-sm row"> <div class="justify-between items-center align-center q-pt-sm row">
<q-btn class="text-dark bg-grey-4" flat dense @click="page = page > 1 ? page - 1 : page"> <q-btn
class="text-dark bg-grey-4"
flat
dense
@click="page = page > 1 ? page - 1 : page"
>
<q-icon name="mdi-chevron-left" /> <q-icon name="mdi-chevron-left" />
</q-btn> </q-btn>
@ -793,7 +1062,12 @@ const viewFileUpload = async (url: string) => {
หนาท {{ page }} จาก {{ numOfPages }} หนาท {{ page }} จาก {{ numOfPages }}
</span> </span>
<q-btn class="text-dark bg-grey-4" flat dense @click="page = page < numOfPages ? page + 1 : page"> <q-btn
class="text-dark bg-grey-4"
flat
dense
@click="page = page < numOfPages ? page + 1 : page"
>
<q-icon name="mdi-chevron-right" /> <q-icon name="mdi-chevron-right" />
</q-btn> </q-btn>
</div> </div>

View file

@ -87,6 +87,55 @@ export const useOrderPlacementDataStore = defineStore("placementOrder", () => {
} }
}; };
const nameOrderFilter = (selectOrder: any) => {
switch (selectOrder) {
case "C-PM-01":
return "บรรจุและแต่งตั้งผู้สอบแข่งขันได้";
case "C-PM-02":
return "บรรจุและแต่งตั้งผู้ได้รับคัดเลือก";
case "C-PM-03":
return "แต่งตั้งข้าราชการ";
case "C-PM-04":
return "ย้ายข้าราชการ";
case "C-PM-05":
return "แต่งตั้งข้าราชการ";
case "C-PM-06":
return "แต่งตั้งข้าราชการ";
case "C-PM-07":
return "ย้ายข้าราชการ";
case "C-PM-08":
return "บรรจุและแต่งตั้งข้าราชการกรุงเทพมหานครสามัญกลับเข้ารับราชการ";
case "C-PM-09":
return "บรรจุและแต่งตั้งผู้ออกไปรับราชการทหารกลับเข้ารับราชการ";
case "C-PM-10":
return "แต่งตั้งคณะกรรมการประเมินผลการทดลองปฏิบัติหน้าที่ราชการ";
case "C-PM-11":
return "ให้ข้าราชการกรุงเทพมหานครสามัญซึ่งมีผลการทดลองปฏิบัติหน้าที่ราชการไม่ต่ำกว่ามาตรฐานที่กำหนดรับราชการต่อไป";
case "C-PM-12":
return "ให้ข้าราชการกรุงเทพมหานครสามัญออกจากราชการเพราะผลการทดลองปฏิบัติหน้าที่ราชการต่ำกว่ามาตรฐานที่กำหนด";
case "C-PM-13":
return "ให้โอนข้าราชการกรุงเทพมหานครสามัญ";
case "C-PM-14":
return "รับโอนข้าราชการกรุงเทพมหานครสามัญ";
case "C-PM-15":
return "ให้ข้าราชการช่วยราชการ";
case "C-PM-16":
return "ให้ข้าราชการกลับไปปฎิบัติงานทางต้นสังกัดเดิม";
case "C-PM-17":
return "อนุญาตให้ข้าราชการลาออกจากราชการ";
case "C-PM-18":
return "ลงโทษให้ออกจากราชการ";
case "C-PM-19":
return "ลงโทษปลดออกจากราชการ";
case "C-PM-20":
return "ลงโทษไล่ออกจากราชการ";
case "C-PM-21":
return "จ้างและแต่งตั้งลูกจ้างประจำ";
default:
return "error";
}
};
return { return {
placementOrderData, placementOrderData,
changePlacementColumns, changePlacementColumns,
@ -96,5 +145,6 @@ export const useOrderPlacementDataStore = defineStore("placementOrder", () => {
DataUpdateOrder, DataUpdateOrder,
DataMainYearSetOrder, DataMainYearSetOrder,
DataMainOrder, DataMainOrder,
nameOrderFilter
}; };
}); });