แก้ popup เป็น page

This commit is contained in:
setthawutttty 2024-10-29 14:41:01 +07:00
parent fb9ee230b6
commit 9fd73ec8db
5 changed files with 274 additions and 266 deletions

View file

@ -1,5 +1,6 @@
<script setup lang="ts"> <script setup lang="ts">
import { ref, onMounted, watch } from "vue"; import { ref, onMounted, watch } from "vue";
import { useRouter } from "vue-router";
import { useQuasar } from "quasar"; import { useQuasar } from "quasar";
import { useCounterMixin } from "@/stores/mixin"; import { useCounterMixin } from "@/stores/mixin";
@ -14,9 +15,8 @@ import type {
} from "@/modules/04_registryPerson/interface/index/Main"; } from "@/modules/04_registryPerson/interface/index/Main";
import type { DataListsIDP } from "@/modules/04_registryPerson/interface/response/Main"; import type { DataListsIDP } from "@/modules/04_registryPerson/interface/response/Main";
import DialogEditIDP from "@/modules/04_registryPerson/components/requestEdit/Dialog02_EditIDP.vue";
const $q = useQuasar(); const $q = useQuasar();
const router = useRouter();
const store = useRequestEditStore(); const store = useRequestEditStore();
const { showLoader, hideLoader, messageError, date2Thai } = useCounterMixin(); const { showLoader, hideLoader, messageError, date2Thai } = useCounterMixin();
@ -24,8 +24,6 @@ const { showLoader, hideLoader, messageError, date2Thai } = useCounterMixin();
const status = ref<string>("PENDING"); // const status = ref<string>("PENDING"); //
const keyword = ref<string>(""); // const keyword = ref<string>(""); //
const statusOption = ref<DataOption[]>(store.optionStatusIDP); // const statusOption = ref<DataOption[]>(store.optionStatusIDP); //
const modalEdit = ref<boolean>(false); //
const requestId = ref<string>(""); //id
//Table //Table
const rows = ref<DataListsIDP[]>([]); // const rows = ref<DataListsIDP[]>([]); //
@ -208,8 +206,7 @@ function updatePageSizePagination(newPagination: Pagination) {
* @param id รายการคำรอง * @param id รายการคำรอง
*/ */
function onclickEdit(id: string) { function onclickEdit(id: string) {
modalEdit.value = true; router.push(`/registry-officer/request-edit-page/${id}`);
requestId.value = id;
} }
/** /**
@ -427,12 +424,6 @@ onMounted(() => {
</d-table> </d-table>
</div> </div>
</q-card> </q-card>
<DialogEditIDP
v-model:modal="modalEdit"
v-model:request-id="requestId"
:fetch-data-list="fetchData"
/>
</template> </template>
<style scoped></style> <style scoped></style>

View file

@ -1,6 +1,7 @@
<script setup lang="ts"> <script setup lang="ts">
import { reactive, ref, watch } from "vue"; import { onMounted, reactive, ref, watch } from "vue";
import { useQuasar } from "quasar"; import { useQuasar } from "quasar";
import { useRouter, useRoute } from "vue-router";
import { useCounterMixin } from "@/stores/mixin"; import { useCounterMixin } from "@/stores/mixin";
import { useRequestEditStore } from "@/modules/04_registryPerson/stores/RequestEdit"; import { useRequestEditStore } from "@/modules/04_registryPerson/stores/RequestEdit";
@ -16,6 +17,8 @@ import type { FormDataIDP } from "@/modules/04_registryPerson/interface/request/
import DialogHeader from "@/components/DialogHeader.vue"; import DialogHeader from "@/components/DialogHeader.vue";
const $q = useQuasar(); const $q = useQuasar();
const router = useRouter();
const route = useRoute();
const store = useRequestEditStore(); const store = useRequestEditStore();
const { const {
dialogConfirm, dialogConfirm,
@ -26,14 +29,10 @@ const {
date2Thai, date2Thai,
} = useCounterMixin(); } = useCounterMixin();
const modal = defineModel<boolean>("modal", { required: true }); //, popup const requestId = ref<string>(route.params.id as string);
const requestId = defineModel<string>("requestId", { required: true }); // id
const { fetchDataList } = defineProps({
fetchDataList: { type: Function, require: true },
});
const isReadOnly = ref<boolean>(false); // const isReadOnly = ref<boolean>(false); //
const isDone = ref<string>('') const isDone = ref<string>("");
// //
const formData = reactive<FormDataIDP>({ const formData = reactive<FormDataIDP>({
topic: "", //// topic: "", ////
@ -162,7 +161,7 @@ function fetchDataByid(id: string) {
formData.createdFullName = data.createdFullName; formData.createdFullName = data.createdFullName;
formData.createdAt = data.createdAt; formData.createdAt = data.createdAt;
isDone.value = data.status isDone.value = data.status;
}) })
.catch((err) => { .catch((err) => {
messageError($q, err); messageError($q, err);
@ -196,9 +195,8 @@ function onSubmit() {
reason: formData.reason, reason: formData.reason,
}) })
.then(async () => { .then(async () => {
await fetchDataList?.(); router.push("/registry-officer/request-edit");
success($q, "บันทึกข้อมูลสำเร็จ"); success($q, "บันทึกข้อมูลสำเร็จ");
closeDialog();
}) })
.catch((err) => { .catch((err) => {
messageError($q, err); messageError($q, err);
@ -214,7 +212,6 @@ function onSubmit() {
* และกำหนด formData เปนค Defult * และกำหนด formData เปนค Defult
*/ */
function closeDialog() { function closeDialog() {
modal.value = false;
formData.topic = ""; formData.topic = "";
formData.developmentProjects = []; formData.developmentProjects = [];
formData.reasonDevelopment70 = ""; formData.reasonDevelopment70 = "";
@ -244,26 +241,34 @@ function classInput(val: boolean) {
* การเปลยนแปลงของ modal เม modal เป True * การเปลยนแปลงของ modal เม modal เป True
* fetch อมลการพฒนารายบคคลตาม ID องการ * fetch อมลการพฒนารายบคคลตาม ID องการ
*/ */
watch(modal, (val) => { onMounted(() => {
if (val) {
fetchDataByid(requestId.value); fetchDataByid(requestId.value);
}
}); });
</script> </script>
<template> <template>
<q-dialog v-model="modal" persistent> <div class="row items-center">
<q-card style="min-width: 65%"> <div class="toptitle text-dark row items-center q-py-xs">
<DialogHeader <q-btn
:tittle="`${formData.createdFullName} icon="mdi-arrow-left"
(ขอแกไขเม ${ unelevated
formData.createdAt ? date2Thai(formData.createdAt, true, true) : '' round
})`" dense
:close="closeDialog" flat
color="primary"
class="q-mr-sm"
@click="router.go(-1)"
/> />
<q-separator /> {{
`${formData.createdFullName}
(ขอแกไขเม ${
formData.createdAt ? date2Thai(formData.createdAt, true, true) : ""
})`
}}
</div>
</div>
<!-- สถานะคำรอง --> <q-card flat>
<q-form greedy @submit.prevent @validation-success="onSubmit"> <q-form greedy @submit.prevent @validation-success="onSubmit">
<q-card-section v-if="isDone == 'PENDING'"> <q-card-section v-if="isDone == 'PENDING'">
<q-card bordered class="col-12"> <q-card bordered class="col-12">
@ -488,7 +493,6 @@ watch(modal, (val) => {
</q-card> </q-card>
</q-card-section> </q-card-section>
</q-card> </q-card>
</q-dialog>
</template> </template>
<style scoped></style> <style scoped></style>

View file

@ -8,6 +8,8 @@ const detailPage = () =>
// รายการคำร้องขอแก้ไขทะเบียนประวัติ // รายการคำร้องขอแก้ไขทะเบียนประวัติ
const requestEdit = () => const requestEdit = () =>
import("@/modules/04_registryPerson/views/requestEditView.vue"); import("@/modules/04_registryPerson/views/requestEditView.vue");
const requestEditPage = () =>
import("@/modules/04_registryPerson/components/requestEdit/requestEditPage.vue");
const Page01_Detail = () => const Page01_Detail = () =>
import( import(
"@/modules/04_registryPerson/components/requestEdit/Page01_Detail.vue" "@/modules/04_registryPerson/components/requestEdit/Page01_Detail.vue"
@ -64,6 +66,16 @@ export default [
Role: "STAFF", Role: "STAFF",
}, },
}, },
{
path: "/registry-officer/request-edit-page/:id",
name: "registryNewRequestEditPage",
component: requestEditPage,
meta: {
Auth: true,
Key: "SYS_REGISTRY_OFFICER",
Role: "STAFF",
},
},
{ {
path: "/registry-officer/request-edit/personal/:id", path: "/registry-officer/request-edit/personal/:id",
name: "registryNewRequestEdit/personal", name: "registryNewRequestEdit/personal",

View file

@ -25,8 +25,12 @@ export const useRegistryNewDataStore = defineStore("registryNew", () => {
const posLevelOps = ref<DataOption[]>([]); const posLevelOps = ref<DataOption[]>([]);
const yearOps = ref<DataOption[]>([]); const yearOps = ref<DataOption[]>([]);
const mode = ref<string>("table"); const mode = ref<string>("table");
const isLeave = ref<boolean>(false) const isLeave = ref<boolean>(false);
const tabs = ref<string>("Main");
const tabsManu = ref<DataOption[]>([
{ name: "ข้อมูลส่วนตัว", id: "Main" },
{ name: "ข้อมูลการพัฒนารายบุคคล (IDP)", id: "IDP" },
]);
function fetchType(data: DataType[]) { function fetchType(data: DataType[]) {
posTypeMain.value = data; posTypeMain.value = data;
const list: DataOption[] = data.map((e: DataType) => ({ const list: DataOption[] = data.map((e: DataType) => ({
@ -88,6 +92,8 @@ export const useRegistryNewDataStore = defineStore("registryNew", () => {
mode, mode,
formFilter, formFilter,
labelOption, labelOption,
isLeave isLeave,
tabs,
tabsManu,
}; };
}); });

View file

@ -3,18 +3,13 @@ import { ref } from "vue";
import { useRouter } from "vue-router"; import { useRouter } from "vue-router";
import type { DataOption } from "@/modules/04_registryPerson/interface/index/Main"; import { useRegistryNewDataStore } from "@/modules/04_registryPerson/store";
import TabInformation from "@/modules/04_registryPerson/components/requestEdit/01_TabInformation.vue"; import TabInformation from "@/modules/04_registryPerson/components/requestEdit/01_TabInformation.vue";
import TabIDP from "@/modules/04_registryPerson/components/requestEdit/02_TabIDP.vue"; import TabIDP from "@/modules/04_registryPerson/components/requestEdit/02_TabIDP.vue";
const router = useRouter(); const router = useRouter();
const store = useRegistryNewDataStore();
const tabs = ref<string>("Main");
const tabsManu = ref<DataOption[]>([
{ name: "ข้อมูลส่วนตัว", id: "Main" },
{ name: "ข้อมูลการพัฒนารายบุคคล (IDP)", id: "IDP" },
]);
</script> </script>
<template> <template>
@ -38,14 +33,14 @@ const tabsManu = ref<DataOption[]>([
<q-card-section style="padding: 0px"> <q-card-section style="padding: 0px">
<q-separator /> <q-separator />
<q-tabs <q-tabs
v-model="tabs" v-model="store.tabs"
inline-label inline-label
align="left" align="left"
indicator-color="primary" indicator-color="primary"
active-color="primary bg-teal-1" active-color="primary bg-teal-1"
> >
<q-tab <q-tab
v-for="(tab, index) in tabsManu" v-for="(tab, index) in store.tabsManu"
:key="index" :key="index"
:name="tab.id" :name="tab.id"
:label="tab.name" :label="tab.name"
@ -53,7 +48,7 @@ const tabsManu = ref<DataOption[]>([
</q-tabs> </q-tabs>
<q-separator /> <q-separator />
<q-tab-panels v-model="tabs" animated> <q-tab-panels v-model="store.tabs" animated>
<q-tab-panel style="padding: 0px" name="Main"> <q-tab-panel style="padding: 0px" name="Main">
<TabInformation /> <TabInformation />
</q-tab-panel> </q-tab-panel>