Merge branch 'phatt_dev' into develop

This commit is contained in:
puriphatt 2024-03-13 10:36:20 +07:00
commit 635726e4a7
3 changed files with 241 additions and 109 deletions

View file

@ -10,14 +10,17 @@ import HistoryTable from "@/components/TableHistory.vue";
import DialogHeader from "@/components/DialogHeader.vue"; import DialogHeader from "@/components/DialogHeader.vue";
import type { import type {
InformationOps, InformationOps,
Information,
DataOption, DataOption,
} from "@/modules/04_registryNew/interface/index/Main"; } from "@/modules/04_registryNew/interface/index/Main";
import { defaultInformation } from "@/modules/04_registryNew/interface/index/Main";
import type { RequestItemsHistoryObject } from "@/modules/04_registryNew/interface/request/Information"; import type { RequestItemsHistoryObject } from "@/modules/04_registryNew/interface/request/Information";
const $q = useQuasar(); const $q = useQuasar();
const mixin = useCounterMixin(); const mixin = useCounterMixin();
const { showLoader, hideLoader, date2Thai, messageError } = mixin; const { showLoader, hideLoader, date2Thai, messageError } = mixin;
const informaData = ref<Information>(defaultInformation);
const modal = ref<boolean>(false); const modal = ref<boolean>(false);
const myForm = ref<any>(); const myForm = ref<any>();
const rowsHistory = ref<RequestItemsHistoryObject[]>([]); const rowsHistory = ref<RequestItemsHistoryObject[]>([]);
@ -300,6 +303,26 @@ const visibleColumnsHistory = ref<String[]>([
"createdAt", "createdAt",
]); ]);
async function fetchData() {
informaData.value.cardid = resultData.value.citizenId;
informaData.value.prefixId = resultData.value.prefixId;
informaData.value.prefix = resultData.value.prefix;
informaData.value.firstname = resultData.value.firstName;
informaData.value.lastname = resultData.value.lastName;
informaData.value.birthDate = resultData.value.birthDate;
informaData.value.age = resultData.value.age;
informaData.value.genderId = resultData.value.genderId;
informaData.value.bloodId = resultData.value.bloodGroupId;
informaData.value.nationality = resultData.value.nationality;
informaData.value.ethnicity = resultData.value.race;
informaData.value.statusId = resultData.value.relationshipId;
informaData.value.religionId = resultData.value.religionId;
informaData.value.tel = resultData.value.telephoneNumber;
informaData.value.employeeType = resultData.value.employeeType;
informaData.value.employeeClass = resultData.value.employeeClass;
informaData.value.profileType = resultData.value.profileType;
}
// get person detail list // get person detail list
async function fetchPerson() { async function fetchPerson() {
// showLoader(); // showLoader();
@ -478,6 +501,7 @@ function onSubmit() {
onMounted(async () => { onMounted(async () => {
await fetchPerson(); await fetchPerson();
await fetchData();
}); });
</script> </script>
<template> <template>
@ -513,29 +537,35 @@ onMounted(async () => {
<!-- data --> <!-- data -->
<div class="col-md-8 col-7"> <div class="col-md-8 col-7">
<div class="q-py-xs"> <div class="q-py-xs">
{{ resultData.citizenId }} {{ informaData.cardid }}
</div> </div>
<div class="q-py-xs"> <div class="q-py-xs">
{{ {{
`${resultData.prefix} ${resultData.firstName} ${resultData.lastName}` `${informaData.prefix} ${informaData.firstname} ${informaData.lastname}`
}} }}
</div> </div>
<div class="q-py-xs"> <div class="q-py-xs">
{{ date2Thai(resultData.birthDate) }} {{ date2Thai(informaData.birthDate) }}
</div> </div>
<div class="q-py-xs"> <div class="q-py-xs">
{{ resultData.age ? resultData.age : "-" }} {{ informaData.age ? informaData.age : "-" }}
</div>
<div class="q-py-xs">
{{ resultData.gender ? resultData.gender : "-" }}
</div> </div>
<div class="q-py-xs"> <div class="q-py-xs">
{{ {{
resultData.relationshipId informaData.genderId
? ( ? (
Ops.statusOps.find( Ops.genderOps.find((r) => r.id === informaData.genderId) ||
(r) => r.id === resultData.relationshipId {}
) || {} ).name
: "-"
}}
</div>
<div class="q-py-xs">
{{
informaData.statusId
? (
Ops.statusOps.find((r) => r.id === informaData.statusId) ||
{}
).name ).name
: "-" : "-"
}} }}
@ -556,17 +586,17 @@ onMounted(async () => {
<!-- data --> <!-- data -->
<div class="col-md-8 col-7"> <div class="col-md-8 col-7">
<div class="q-py-xs"> <div class="q-py-xs">
{{ resultData.nationality ? resultData.nationality : "-" }} {{ informaData.nationality ? informaData.nationality : "-" }}
</div> </div>
<div class="q-py-xs"> <div class="q-py-xs">
{{ resultData.race ? resultData.race : "-" }} {{ informaData.ethnicity ? informaData.ethnicity : "-" }}
</div> </div>
<div class="q-py-xs"> <div class="q-py-xs">
{{ {{
resultData.religionId informaData.religionId
? ( ? (
Ops.religionOps.find( Ops.religionOps.find(
(r) => r.id === resultData.religionId (r) => r.id === informaData.religionId
) || {} ) || {}
).name ).name
: "-" : "-"
@ -574,17 +604,14 @@ onMounted(async () => {
</div> </div>
<div class="q-py-xs"> <div class="q-py-xs">
{{ {{
resultData.bloodGroupId informaData.bloodId
? ( ? (Ops.bloodOps.find((b) => b.id === informaData.bloodId) || {})
Ops.bloodOps.find( .name
(b) => b.id === resultData.bloodGroupId
) || {}
).name
: "-" : "-"
}} }}
</div> </div>
<div class="q-py-xs"> <div class="q-py-xs">
{{ resultData.telephoneNumber ? resultData.telephoneNumber : "-" }} {{ informaData.tel ? informaData.tel : "-" }}
</div> </div>
</div> </div>
</div> </div>
@ -610,7 +637,7 @@ onMounted(async () => {
hide-bottom-space hide-bottom-space
maxlength="13" maxlength="13"
mask="#############" mask="#############"
v-model="resultData.citizenId" v-model="informaData.cardid"
:label="dataLabel.citizenId" :label="dataLabel.citizenId"
:rules="[ :rules="[
(val: string) => !!val || `${'กรุณากรอก เลขประจำตัวประชาชน'}`, (val: string) => !!val || `${'กรุณากรอก เลขประจำตัวประชาชน'}`,
@ -621,7 +648,7 @@ onMounted(async () => {
/> />
</div> </div>
<div class="col-xs-6 col-sm-6 col-md-6"> <div class="col-xs-6 col-sm-6 col-md-6">
<selector <q-select
dense dense
outlined outlined
use-input use-input
@ -632,7 +659,7 @@ onMounted(async () => {
option-value="id" option-value="id"
option-label="name" option-label="name"
input-debounce="0" input-debounce="0"
v-model="resultData.prefixId" v-model="informaData.prefixId"
:options="Ops.prefixOps" :options="Ops.prefixOps"
:label="dataLabel.prefix" :label="dataLabel.prefix"
:rules="[(val: string) => !!val || `${'กรุณาเลือก คำนำหน้าชื่อ'}`]" :rules="[(val: string) => !!val || `${'กรุณาเลือก คำนำหน้าชื่อ'}`]"
@ -647,7 +674,7 @@ onMounted(async () => {
outlined outlined
lazy-rules lazy-rules
hide-bottom-space hide-bottom-space
v-model="resultData.firstName" v-model="informaData.firstname"
:label="dataLabel.firstName" :label="dataLabel.firstName"
:rules="[(val: string) => !!val || `${'กรุณากรอก ชื่อ'}`]" :rules="[(val: string) => !!val || `${'กรุณากรอก ชื่อ'}`]"
/> />
@ -658,7 +685,7 @@ onMounted(async () => {
outlined outlined
lazy-rules lazy-rules
hide-bottom-space hide-bottom-space
v-model="resultData.lastName" v-model="informaData.lastname"
:label="dataLabel.lastName" :label="dataLabel.lastName"
:rules="[(val: string) => !!val || `${'กรุณากรอก นามสกุล'}`]" :rules="[(val: string) => !!val || `${'กรุณากรอก นามสกุล'}`]"
/> />
@ -669,7 +696,7 @@ onMounted(async () => {
borderless borderless
week-start="0" week-start="0"
menu-class-name="modalfix" menu-class-name="modalfix"
v-model="resultData.birthDate" v-model="informaData.birthDate"
:locale="'th'" :locale="'th'"
> >
<template #year="{ year }"> <template #year="{ year }">
@ -686,8 +713,8 @@ onMounted(async () => {
dense dense
hide-bottom-space hide-bottom-space
:model-value=" :model-value="
resultData.birthDate != null informaData.birthDate != null
? date2Thai(resultData.birthDate) ? date2Thai(informaData.birthDate)
: null : null
" "
:label="dataLabel.birthDate" :label="dataLabel.birthDate"
@ -714,12 +741,12 @@ onMounted(async () => {
lazy-rules lazy-rules
hide-bottom-space hide-bottom-space
readonly readonly
v-model="resultData.age" v-model="informaData.age"
:label="dataLabel.age" :label="dataLabel.age"
/> />
</div> </div>
<div class="col-xs-6 col-sm-6 col-md-6"> <div class="col-xs-6 col-sm-6 col-md-6">
<selector <q-select
dense dense
outlined outlined
use-input use-input
@ -730,7 +757,7 @@ onMounted(async () => {
option-value="id" option-value="id"
option-label="name" option-label="name"
input-debounce="0" input-debounce="0"
v-model="resultData.genderId" v-model="informaData.genderId"
:options="Ops.genderOps" :options="Ops.genderOps"
:label="dataLabel.gender" :label="dataLabel.gender"
@filter="(inputValue: any, @filter="(inputValue: any,
@ -739,7 +766,7 @@ onMounted(async () => {
/> />
</div> </div>
<div class="col-xs-6 col-sm-6 col-md-6"> <div class="col-xs-6 col-sm-6 col-md-6">
<selector <q-select
dense dense
outlined outlined
use-input use-input
@ -750,7 +777,7 @@ onMounted(async () => {
option-value="id" option-value="id"
option-label="name" option-label="name"
input-debounce="0" input-debounce="0"
v-model="resultData.relationshipId" v-model="informaData.statusId"
:options="Ops.statusOps" :options="Ops.statusOps"
:label="dataLabel.relationship" :label="dataLabel.relationship"
@filter="(inputValue: any, @filter="(inputValue: any,
@ -764,7 +791,7 @@ onMounted(async () => {
outlined outlined
lazy-rules lazy-rules
hide-bottom-space hide-bottom-space
v-model="resultData.nationality" v-model="informaData.nationality"
:label="dataLabel.nationality" :label="dataLabel.nationality"
/> />
</div> </div>
@ -774,12 +801,12 @@ onMounted(async () => {
outlined outlined
lazy-rules lazy-rules
hide-bottom-space hide-bottom-space
v-model="resultData.race" v-model="informaData.ethnicity"
:label="dataLabel.race" :label="dataLabel.race"
/> />
</div> </div>
<div class="col-xs-6 col-sm-6 col-md-6"> <div class="col-xs-6 col-sm-6 col-md-6">
<selector <q-select
dense dense
outlined outlined
use-input use-input
@ -790,7 +817,7 @@ onMounted(async () => {
option-value="id" option-value="id"
option-label="name" option-label="name"
input-debounce="0" input-debounce="0"
v-model="resultData.religionId" v-model="informaData.religionId"
:options="Ops.religionOps" :options="Ops.religionOps"
:label="dataLabel.religion" :label="dataLabel.religion"
@filter="(inputValue: any, @filter="(inputValue: any,
@ -799,7 +826,7 @@ onMounted(async () => {
/> />
</div> </div>
<div class="col-xs-6 col-sm-6 col-md-6"> <div class="col-xs-6 col-sm-6 col-md-6">
<selector <q-select
dense dense
outlined outlined
use-input use-input
@ -810,7 +837,7 @@ onMounted(async () => {
option-value="id" option-value="id"
option-label="name" option-label="name"
input-debounce="0" input-debounce="0"
v-model="resultData.bloodGroupId" v-model="informaData.bloodId"
:options="Ops.bloodOps" :options="Ops.bloodOps"
:label="dataLabel.bloodGroup" :label="dataLabel.bloodGroup"
@filter="(inputValue: any, @filter="(inputValue: any,
@ -825,7 +852,7 @@ onMounted(async () => {
lazy-rules lazy-rules
hide-bottom-space hide-bottom-space
mask="##########" mask="##########"
v-model="resultData.telephoneNumber" v-model="informaData.tel"
:label="dataLabel.telephoneNumber" :label="dataLabel.telephoneNumber"
/> />
</div> </div>

View file

@ -47,7 +47,7 @@ const resultData = ref({
currentDistrictId: "ce9a2984-938f-454c-a758-26dcf8176afe", currentDistrictId: "ce9a2984-938f-454c-a758-26dcf8176afe",
currentSubDistrictId: "97dba284-7cdc-45c6-863c-9590810fe8e2", currentSubDistrictId: "97dba284-7cdc-45c6-863c-9590810fe8e2",
currentZipCode: "50100", currentZipCode: "50100",
registrationSame: "1", registrationSame: "0",
}); });
const dataLabel = { const dataLabel = {
@ -262,6 +262,20 @@ function defaultAdd() {
} }
async function fetchData() { async function fetchData() {
// mock data
addressData.value.address = resultData.value.registrationAddress;
addressData.value.provinceId = resultData.value.registrationProvinceId;
addressData.value.districtId = resultData.value.registrationDistrictId;
addressData.value.subdistrictId = resultData.value.registrationSubDistrictId;
addressData.value.codep = resultData.value.registrationZipCode;
addressData.value.same = resultData.value.registrationSame;
addressData.value.addressC = resultData.value.currentAddress;
addressData.value.provinceIdC = resultData.value.currentProvinceId;
addressData.value.districtIdC = resultData.value.currentDistrictId;
addressData.value.subdistrictIdC = resultData.value.currentSubDistrictId;
addressData.value.codec = resultData.value.currentZipCode;
// if (route.params.id) { // if (route.params.id) {
// // showLoader(); // // showLoader();
// await http // await http
@ -464,13 +478,57 @@ async function fetchSubDistrict(id: string | null, position: string) {
} else isLoad.value++; } else isLoad.value++;
} }
async function selectProvince(e: string | null, name: string) {
if (e != null) {
if (name == "1") {
addressData.value.districtId = "";
addressData.value.subdistrictId = "";
addressData.value.codep = "";
} else {
addressData.value.districtIdC = "";
addressData.value.subdistrictIdC = "";
addressData.value.codec = "";
}
myForm.value.resetValidation();
await fetchDistrict(e, name);
}
};
async function selectDistrict(e: string | null, name: string) {
if (e != null) {
if (name == "1") {
addressData.value.subdistrictId = "";
addressData.value.codep = "";
} else {
addressData.value.subdistrictIdC = "";
addressData.value.codec = "";
}
myForm.value.resetValidation();
await fetchSubDistrict(e, name);
}
};
function selectSubDistrict(e: string | null, name: string) {
if (e != null) {
if (name == "1") {
const findcode = Ops.value.subdistrictOps.filter((r) => r.id == e);
const namecode = findcode.length > 0 ? findcode[0].zipCode : "";
addressData.value.codep = namecode;
} else {
const findcode = Ops.value.subdistrictCOps.filter((r) => r.id == e);
const namecode = findcode.length > 0 ? findcode[0].zipCode : "";
addressData.value.codec = namecode;
}
}
};
async function getNewData() { async function getNewData() {
await fetchData(); await fetchData();
await fetchProvince(); await fetchProvince();
await fetchDistrict(resultData.value.registrationProvinceId, "1"); await fetchDistrict(addressData.value.provinceId, "1");
await fetchDistrict(resultData.value.currentProvinceId, "2"); await fetchDistrict(addressData.value.provinceIdC, "2");
await fetchSubDistrict(resultData.value.registrationDistrictId, "1"); await fetchSubDistrict(addressData.value.districtId, "1");
await fetchSubDistrict(resultData.value.currentDistrictId, "2"); await fetchSubDistrict(addressData.value.districtIdC, "2");
} }
function filterSelector(val: any, update: Function, refData: string) { function filterSelector(val: any, update: Function, refData: string) {
@ -554,15 +612,14 @@ function onSubmit() {
myForm.value.validate().then(async (result: boolean) => { myForm.value.validate().then(async (result: boolean) => {
if (result) { if (result) {
// await saveData(); // await saveData();
console.log("Hello");
modal.value = false; modal.value = false;
} }
}); });
} }
onMounted(async () => { onMounted(async () => {
await getNewData();
defaultAdd(); defaultAdd();
await getNewData();
}); });
</script> </script>
<template> <template>
@ -587,7 +644,7 @@ onMounted(async () => {
<div :class="$q.screen.gt.xs ? 'row' : 'column'"> <div :class="$q.screen.gt.xs ? 'row' : 'column'">
<!-- column 1 --> <!-- column 1 -->
<div class="col-md-6 col-12 row"> <div class="col-md-6 col-12 row">
<div class="col-4 text-grey-6 text-weight-medium"> <div class="col-5 text-grey-6 text-weight-medium">
<div <div
v-for="label in Object.keys(dataLabel).slice(0, 5)" v-for="label in Object.keys(dataLabel).slice(0, 5)"
class="q-py-xs" class="q-py-xs"
@ -596,16 +653,16 @@ onMounted(async () => {
</div> </div>
</div> </div>
<!-- data --> <!-- data -->
<div class="col-8"> <div class="col-7">
<div class="q-py-xs"> <div class="q-py-xs">
{{ resultData.registrationAddress }} {{ addressData.address }}
</div> </div>
<div class="q-py-xs"> <div class="q-py-xs">
{{ {{
resultData.registrationProvinceId addressData.provinceId
? ( ? (
Ops.provinceOps.find( Ops.provinceOps.find(
(r) => r.id === resultData.registrationProvinceId (r) => r.id === addressData.provinceId
) || {} ) || {}
).name ).name
: "-" : "-"
@ -613,10 +670,10 @@ onMounted(async () => {
</div> </div>
<div class="q-py-xs"> <div class="q-py-xs">
{{ {{
resultData.registrationDistrictId addressData.districtId
? ( ? (
Ops.districtOps.find( Ops.districtOps.find(
(r) => r.id === resultData.registrationDistrictId (r) => r.id === addressData.districtId
) || {} ) || {}
).name ).name
: "-" : "-"
@ -624,17 +681,17 @@ onMounted(async () => {
</div> </div>
<div class="q-py-xs"> <div class="q-py-xs">
{{ {{
resultData.registrationSubDistrictId addressData.subdistrictId
? ( ? (
Ops.subdistrictOps.find( Ops.subdistrictOps.find(
(r) => r.id === resultData.registrationSubDistrictId (r) => r.id === addressData.subdistrictId
) || {} ) || {}
).name ).name
: "-" : "-"
}} }}
</div> </div>
<div class="q-py-xs"> <div class="q-py-xs">
{{ resultData.registrationZipCode }} {{ addressData.codep }}
</div> </div>
</div> </div>
</div> </div>
@ -642,12 +699,12 @@ onMounted(async () => {
<!-- column 2 --> <!-- column 2 -->
<div <div
class="text-grey-6 text-weight-medium" class="text-grey-6 text-weight-medium"
v-if="resultData.registrationSame === '1'" v-if="addressData.same === '1'"
> >
อยจจนตรงกบทอยตามทะเบยนบาน อยจจนตรงกบทอยตามทะเบยนบาน
</div> </div>
<div class="col-md-6 col-12 row" v-else> <div class="col-md-6 col-12 row" v-else>
<div class="col-4 text-grey-6 text-weight-medium"> <div class="col-5 text-grey-6 text-weight-medium">
<div <div
v-for="label in Object.keys(dataLabel).slice(5, 10)" v-for="label in Object.keys(dataLabel).slice(5, 10)"
class="q-py-xs" class="q-py-xs"
@ -656,16 +713,16 @@ onMounted(async () => {
</div> </div>
</div> </div>
<!-- data --> <!-- data -->
<div class="col-8"> <div class="col-7">
<div class="q-py-xs"> <div class="q-py-xs">
{{ resultData.currentAddress }} {{ addressData.addressC }}
</div> </div>
<div class="q-py-xs"> <div class="q-py-xs">
{{ {{
resultData.currentProvinceId addressData.provinceIdC
? ( ? (
Ops.provinceOps.find( Ops.provinceOps.find(
(r) => r.id === resultData.currentProvinceId (r) => r.id === addressData.provinceIdC
) || {} ) || {}
).name ).name
: "-" : "-"
@ -673,10 +730,10 @@ onMounted(async () => {
</div> </div>
<div class="q-py-xs"> <div class="q-py-xs">
{{ {{
resultData.currentDistrictId addressData.districtIdC
? ( ? (
Ops.districtOps.find( Ops.districtCOps.find(
(r) => r.id === resultData.currentDistrictId (r) => r.id === addressData.districtIdC
) || {} ) || {}
).name ).name
: "-" : "-"
@ -684,17 +741,17 @@ onMounted(async () => {
</div> </div>
<div class="q-py-xs"> <div class="q-py-xs">
{{ {{
resultData.currentSubDistrictId addressData.subdistrictIdC
? ( ? (
Ops.subdistrictOps.find( Ops.subdistrictCOps.find(
(r) => r.id === resultData.currentSubDistrictId (r) => r.id === addressData.subdistrictIdC
) || {} ) || {}
).name ).name
: "-" : "-"
}} }}
</div> </div>
<div class="q-py-xs"> <div class="q-py-xs">
{{ resultData.registrationZipCode }} {{ addressData.codec }}
</div> </div>
</div> </div>
</div> </div>
@ -719,14 +776,14 @@ onMounted(async () => {
lazy-rules lazy-rules
hide-bottom-space hide-bottom-space
type="textarea" type="textarea"
v-model="resultData.registrationAddress" v-model="addressData.address"
:label="dataLabel.registrationAddress" :label="dataLabel.registrationAddress"
:rules="[(val:string) => !!val || `${'กรุณากรอก ที่อยู่ตามทะเบียนบ้าน'}`]" :rules="[(val:string) => !!val || `${'กรุณากรอก ที่อยู่ตามทะเบียนบ้าน'}`]"
/> />
</div> </div>
<div class="row col-12 q-col-gutter-x-xs q-col-gutter-y-xs"> <div class="row col-12 q-col-gutter-x-xs q-col-gutter-y-xs">
<div class="col-xs-6 col-sm-6 col-md-6"> <div class="col-xs-6 col-sm-6 col-md-6">
<selector <q-select
dense dense
outlined outlined
use-input use-input
@ -737,17 +794,18 @@ onMounted(async () => {
option-value="id" option-value="id"
option-label="name" option-label="name"
input-debounce="0" input-debounce="0"
v-model="resultData.registrationProvinceId" v-model="addressData.provinceId"
:options="Ops.provinceOps" :options="Ops.provinceOps"
:label="dataLabel.registrationProvince" :label="dataLabel.registrationProvince"
:rules="[(val:string) => !!val || `${'กรุณาเลือก จังหวัด'}`]" :rules="[(val:string) => !!val || `${'กรุณาเลือก จังหวัด'}`]"
@update:model-value="(value:string) => selectProvince(value, '1')"
@filter="(inputValue:string, @filter="(inputValue:string,
doneFn:Function) => filterSelector(inputValue, doneFn,'provinceOps' doneFn:Function) => filterSelector(inputValue, doneFn,'provinceOps'
) " ) "
/> />
</div> </div>
<div class="col-xs-6 col-sm-6 col-md-6"> <div class="col-xs-6 col-sm-6 col-md-6">
<selector <q-select
dense dense
outlined outlined
use-input use-input
@ -758,17 +816,18 @@ onMounted(async () => {
option-value="id" option-value="id"
option-label="name" option-label="name"
input-debounce="0" input-debounce="0"
v-model="resultData.registrationDistrictId" v-model="addressData.districtId"
:options="Ops.districtOps" :options="Ops.districtOps"
:label="dataLabel.registrationDistrict" :label="dataLabel.registrationDistrict"
:rules="[(val:string) => !!val || `${'กรุณาเลือก เขต / อำเภอ'}`]" :rules="[(val:string) => !!val || `${'กรุณาเลือก เขต / อำเภอ'}`]"
@update:model-value="(value:string) => selectDistrict(value, '1')"
@filter="(inputValue:string, @filter="(inputValue:string,
doneFn:Function) => filterSelector(inputValue, doneFn,'districtOps' doneFn:Function) => filterSelector(inputValue, doneFn,'districtOps'
) " ) "
/> />
</div> </div>
<div class="col-xs-6 col-sm-6 col-md-6"> <div class="col-xs-6 col-sm-6 col-md-6">
<selector <q-select
dense dense
outlined outlined
use-input use-input
@ -779,10 +838,11 @@ onMounted(async () => {
option-value="id" option-value="id"
option-label="name" option-label="name"
input-debounce="0" input-debounce="0"
v-model="resultData.registrationSubDistrictId" v-model="addressData.subdistrictId"
:options="Ops.subdistrictOps" :options="Ops.subdistrictOps"
:label="dataLabel.registrationSubDistrict" :label="dataLabel.registrationSubDistrict"
:rules="[(val:string) => !!val || `${'กรุณาเลือก เขต / อำเภอ'}`]" :rules="[(val:string) => !!val || `${'กรุณาเลือก แขวง / ตำบล'}`]"
@update:model-value="(value:string) => selectSubDistrict(value, '1')"
@filter="(inputValue:string, @filter="(inputValue:string,
doneFn:Function) => filterSelector(inputValue, doneFn,'subdistrictOps' doneFn:Function) => filterSelector(inputValue, doneFn,'subdistrictOps'
) " ) "
@ -795,7 +855,7 @@ onMounted(async () => {
outlined outlined
lazy-rules lazy-rules
hide-bottom-space hide-bottom-space
v-model="resultData.registrationZipCode" v-model="addressData.codep"
:label="dataLabel.registrationZipCode" :label="dataLabel.registrationZipCode"
/> />
</div> </div>
@ -806,24 +866,24 @@ onMounted(async () => {
>อยจจนตรงกบทอยตามทะเบยนบาน</label >อยจจนตรงกบทอยตามทะเบยนบาน</label
> >
<q-radio <q-radio
v-model="resultData.registrationSame" dense
checked-icon="task_alt"
unchecked-icon="panorama_fish_eye"
val="1" val="1"
label="ใช่" label="ใช่"
dense checked-icon="task_alt"
v-model="addressData.same"
unchecked-icon="panorama_fish_eye"
/> />
<q-radio <q-radio
v-model="resultData.registrationSame" dense
checked-icon="task_alt"
unchecked-icon="panorama_fish_eye"
val="0" val="0"
label="ไม่" label="ไม่"
dense checked-icon="task_alt"
v-model="addressData.same"
unchecked-icon="panorama_fish_eye"
/> />
</div> </div>
<!-- current address --> <!-- current address -->
<div v-if="resultData.registrationSame === '0'"> <div v-if="addressData.same === '0'">
<div class="col-12 q-pb-xs"> <div class="col-12 q-pb-xs">
<q-input <q-input
dense dense
@ -831,14 +891,14 @@ onMounted(async () => {
lazy-rules lazy-rules
hide-bottom-space hide-bottom-space
type="textarea" type="textarea"
v-model="resultData.currentAddress" v-model="addressData.addressC"
:label="dataLabel.currentAddress" :label="dataLabel.currentAddress"
:rules="[(val:string) => !!val || `${'กรุณากรอก ที่อยู่ปัจจุบัน'}`]" :rules="[(val:string) => !!val || `${'กรุณากรอก ที่อยู่ปัจจุบัน'}`]"
/> />
</div> </div>
<div class="row col-12 q-col-gutter-x-xs q-col-gutter-y-xs"> <div class="row col-12 q-col-gutter-x-xs q-col-gutter-y-xs">
<div class="col-xs-6 col-sm-6 col-md-6"> <div class="col-xs-6 col-sm-6 col-md-6">
<selector <q-select
dense dense
outlined outlined
use-input use-input
@ -849,17 +909,18 @@ onMounted(async () => {
option-value="id" option-value="id"
option-label="name" option-label="name"
input-debounce="0" input-debounce="0"
v-model="resultData.currentProvinceId" v-model="addressData.provinceIdC"
:options="Ops.provinceOps" :options="Ops.provinceOps"
:label="dataLabel.currentProvince" :label="dataLabel.currentProvince"
:rules="[(val:string) => !!val || `${'กรุณาเลือก จังหวัด'}`]" :rules="[(val:string) => !!val || `${'กรุณาเลือก จังหวัด'}`]"
@update:model-value="(value:string) => selectProvince(value, '2')"
@filter="(inputValue:string, @filter="(inputValue:string,
doneFn:Function) => filterSelector(inputValue, doneFn,'provinceOps' doneFn:Function) => filterSelector(inputValue, doneFn,'provinceOps'
) " ) "
/> />
</div> </div>
<div class="col-xs-6 col-sm-6 col-md-6"> <div class="col-xs-6 col-sm-6 col-md-6">
<selector <q-select
dense dense
outlined outlined
use-input use-input
@ -870,17 +931,18 @@ onMounted(async () => {
option-value="id" option-value="id"
option-label="name" option-label="name"
input-debounce="0" input-debounce="0"
v-model="resultData.currentDistrictId" v-model="addressData.districtIdC"
:options="Ops.districtOps" :options="Ops.districtCOps"
:label="dataLabel.currentDistrict" :label="dataLabel.currentDistrict"
:rules="[(val:string) => !!val || `${'กรุณาเลือก เขต / อำเภอ'}`]" :rules="[(val:string) => !!val || `${'กรุณาเลือก เขต / อำเภอ'}`]"
@update:model-value="(value:string) => selectDistrict(value, '2')"
@filter="(inputValue:string, @filter="(inputValue:string,
doneFn:Function) => filterSelector(inputValue, doneFn,'districtOps' doneFn:Function) => filterSelector(inputValue, doneFn,'districtOps'
) " ) "
/> />
</div> </div>
<div class="col-xs-6 col-sm-6 col-md-6"> <div class="col-xs-6 col-sm-6 col-md-6">
<selector <q-select
dense dense
outlined outlined
use-input use-input
@ -891,10 +953,11 @@ onMounted(async () => {
option-value="id" option-value="id"
option-label="name" option-label="name"
input-debounce="0" input-debounce="0"
v-model="resultData.currentSubDistrictId" v-model="addressData.subdistrictIdC"
:options="Ops.subdistrictOps" :options="Ops.subdistrictCOps"
:label="dataLabel.currentSubDistrict" :label="dataLabel.currentSubDistrict"
:rules="[(val:string) => !!val || `${'กรุณาเลือก เขต / อำเภอ'}`]" :rules="[(val:string) => !!val || `${'กรุณาเลือก แขวง / ตำบล'}`]"
@update:model-value="(value:string) => selectSubDistrict(value, '2')"
@filter="(inputValue:string, @filter="(inputValue:string,
doneFn:Function) => filterSelector(inputValue, doneFn,'subdistrictOps' doneFn:Function) => filterSelector(inputValue, doneFn,'subdistrictOps'
) " ) "
@ -907,7 +970,7 @@ onMounted(async () => {
outlined outlined
lazy-rules lazy-rules
hide-bottom-space hide-bottom-space
v-model="resultData.registrationZipCode" v-model="addressData.codec"
:label="dataLabel.registrationZipCode" :label="dataLabel.registrationZipCode"
/> />
</div> </div>
@ -917,10 +980,10 @@ onMounted(async () => {
<q-separator /> <q-separator />
<div class="text-right q-pa-sm"> <div class="text-right q-pa-sm">
<q-btn <q-btn
id="onSubmit"
type="submit"
dense dense
unelevated unelevated
id="onSubmit"
type="submit"
label="บันทึก" label="บันทึก"
color="public" color="public"
class="q-px-md" class="q-px-md"
@ -933,14 +996,14 @@ onMounted(async () => {
</q-dialog> </q-dialog>
<HistoryTable <HistoryTable
:rows="rowsHistory"
:columns="columnsHistory"
:filter="filterHistory"
:visible-columns="visibleColumnsHistory"
v-model:modal="modalHistory" v-model:modal="modalHistory"
v-model:tittle="tittleHistory"
v-model:inputfilter="filterHistory" v-model:inputfilter="filterHistory"
v-model:inputvisible="visibleColumnsHistory" v-model:inputvisible="visibleColumnsHistory"
v-model:tittle="tittleHistory" :rows="rowsHistory"
:filter="filterHistory"
:columns="columnsHistory"
:visible-columns="visibleColumnsHistory"
> >
<template #columns="props"> <template #columns="props">
<q-tr :props="props"> <q-tr :props="props">

View file

@ -28,6 +28,26 @@ interface InformationOps {
employeeTypeOps: DataOption[]; employeeTypeOps: DataOption[];
} }
interface Information {
cardid: string | null;
prefix: string | null;
age: string | null;
prefixId: string | null;
firstname: string | null;
lastname: string | null;
birthDate: Date | null;
genderId: string | null;
bloodId: string | null;
nationality: string | null;
ethnicity: string | null;
statusId: string | null;
religionId: string | null;
tel: string | null;
employeeType: string | null;
employeeClass: string | null;
profileType: string | null;
}
interface AddressOps { interface AddressOps {
provinceOps: DataOption[]; provinceOps: DataOption[];
districtOps: DataOption[]; districtOps: DataOption[];
@ -50,6 +70,26 @@ interface Address {
codep: string | null; codep: string | null;
} }
const defaultInformation: Information = {
cardid: null,
age: null,
prefix: null,
prefixId: null,
firstname: null,
lastname: null,
birthDate: null,
genderId: null,
bloodId: null,
nationality: null,
ethnicity: null,
statusId: null,
religionId: null,
tel: null,
employeeType: null,
employeeClass: null,
profileType: null,
};
const defaultAddress: Address = { const defaultAddress: Address = {
address: null, address: null,
provinceId: null, provinceId: null,
@ -63,13 +103,15 @@ const defaultAddress: Address = {
codep: null, codep: null,
same: "0", same: "0",
}; };
export { defaultAddress };
export { defaultAddress, defaultInformation };
export type { export type {
Pagination, Pagination,
DataOption, DataOption,
DataOption2, DataOption2,
zipCodeOption, zipCodeOption,
InformationOps, InformationOps,
Information,
AddressOps, AddressOps,
Address, Address,
}; };