Merge branch 'feat/receive' into develop
This commit is contained in:
commit
762ed36190
5 changed files with 141 additions and 18 deletions
|
|
@ -43,9 +43,9 @@ async function fetchDataProfile(data: DataProfile) {
|
||||||
profile.avatar = data?.avatar ? data.avatar : "";
|
profile.avatar = data?.avatar ? data.avatar : "";
|
||||||
}
|
}
|
||||||
profile.id = data.profileId;
|
profile.id = data.profileId;
|
||||||
profile.fullName = `${data.prefix ?? ""}${data.firstName ?? ""} ${
|
profile.fullName = `${data.rank ? data.rank : data.prefix ?? ""}${
|
||||||
data.lastName ?? ""
|
data.firstName ?? ""
|
||||||
} `;
|
} ${data.lastName ?? ""} `;
|
||||||
|
|
||||||
if (data["posTypeNameOld"] !== undefined) {
|
if (data["posTypeNameOld"] !== undefined) {
|
||||||
profile.position =
|
profile.position =
|
||||||
|
|
|
||||||
|
|
@ -48,6 +48,7 @@ const informaData = ref<FormAddPerson>({
|
||||||
employeeType: null,
|
employeeType: null,
|
||||||
employeeClass: null,
|
employeeClass: null,
|
||||||
profileType: null,
|
profileType: null,
|
||||||
|
rank: "",
|
||||||
});
|
});
|
||||||
|
|
||||||
// รายการข้อมูลทั้งหมด
|
// รายการข้อมูลทั้งหมด
|
||||||
|
|
@ -60,6 +61,7 @@ const Ops = ref<InformationOps>({
|
||||||
religionOps: [],
|
religionOps: [],
|
||||||
employeeClassOps: [],
|
employeeClassOps: [],
|
||||||
employeeTypeOps: [],
|
employeeTypeOps: [],
|
||||||
|
rankOps: [],
|
||||||
});
|
});
|
||||||
// ข้อมูลเมื่อเลือกแล้ว
|
// ข้อมูลเมื่อเลือกแล้ว
|
||||||
const OpsFilter = ref<InformationOps>({
|
const OpsFilter = ref<InformationOps>({
|
||||||
|
|
@ -71,6 +73,7 @@ const OpsFilter = ref<InformationOps>({
|
||||||
religionOps: [],
|
religionOps: [],
|
||||||
employeeClassOps: [],
|
employeeClassOps: [],
|
||||||
employeeTypeOps: [],
|
employeeTypeOps: [],
|
||||||
|
rankOps: [],
|
||||||
});
|
});
|
||||||
|
|
||||||
// รูป profile
|
// รูป profile
|
||||||
|
|
@ -135,6 +138,16 @@ async function fetchPerson() {
|
||||||
});
|
});
|
||||||
Ops.value.religionOps = optionreligions;
|
Ops.value.religionOps = optionreligions;
|
||||||
OpsFilter.value.religionOps = optionreligions;
|
OpsFilter.value.religionOps = optionreligions;
|
||||||
|
|
||||||
|
let rank: DataOption[] = [];
|
||||||
|
data.rank.map((r: DataOptioninfo) => {
|
||||||
|
rank.push({
|
||||||
|
id: r.id.toString(),
|
||||||
|
name: r.name.toString(),
|
||||||
|
});
|
||||||
|
});
|
||||||
|
Ops.value.rankOps = rank;
|
||||||
|
OpsFilter.value.rankOps = rank;
|
||||||
})
|
})
|
||||||
.catch((e) => {
|
.catch((e) => {
|
||||||
messageError($q, e);
|
messageError($q, e);
|
||||||
|
|
@ -204,7 +217,13 @@ function filterSelector(val: string, update: Function, refData: string) {
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
|
case "rankOps":
|
||||||
|
update(() => {
|
||||||
|
Ops.value.rankOps = OpsFilter.value.rankOps.filter(
|
||||||
|
(v: DataOption) => v.name.toLowerCase().indexOf(newVal) > -1
|
||||||
|
);
|
||||||
|
});
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
@ -227,7 +246,7 @@ function onSubmit() {
|
||||||
if (fileData.value != null) formData.append("File", fileData.value); //แก้ไขรูป
|
if (fileData.value != null) formData.append("File", fileData.value); //แก้ไขรูป
|
||||||
if (informaData.value.citizenId != undefined)
|
if (informaData.value.citizenId != undefined)
|
||||||
formData.append("citizenId", informaData.value.citizenId);
|
formData.append("citizenId", informaData.value.citizenId);
|
||||||
if (informaData.value.prefix != undefined)
|
if (informaData.value.prefix != undefined && informaData.value.prefix != "")
|
||||||
formData.append("prefix", informaData.value.prefix);
|
formData.append("prefix", informaData.value.prefix);
|
||||||
if (informaData.value.firstName != undefined)
|
if (informaData.value.firstName != undefined)
|
||||||
formData.append("firstName", informaData.value.firstName);
|
formData.append("firstName", informaData.value.firstName);
|
||||||
|
|
@ -256,6 +275,8 @@ function onSubmit() {
|
||||||
formData.append("employeeType", informaData.value.employeeType);
|
formData.append("employeeType", informaData.value.employeeType);
|
||||||
if (informaData.value.employeeClass != undefined)
|
if (informaData.value.employeeClass != undefined)
|
||||||
formData.append("employeeClass", informaData.value.employeeClass);
|
formData.append("employeeClass", informaData.value.employeeClass);
|
||||||
|
if (informaData.value.rank != undefined && informaData.value.rank != "")
|
||||||
|
formData.append("rank", informaData.value.rank);
|
||||||
|
|
||||||
dialogConfirm($q, async () => {
|
dialogConfirm($q, async () => {
|
||||||
showLoader();
|
showLoader();
|
||||||
|
|
@ -289,6 +310,15 @@ function updateBirthDate(v: Date) {
|
||||||
age.value = calculateAge(v);
|
age.value = calculateAge(v);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function prefixRankRule() {
|
||||||
|
return [
|
||||||
|
() =>
|
||||||
|
!!informaData.value.rank ||
|
||||||
|
!!informaData.value.prefix ||
|
||||||
|
"กรุณาเลือกคำนำหน้าชื่อ หรือยศ",
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ทำงานเมื่อมีการเรียกใช้ Components
|
* ทำงานเมื่อมีการเรียกใช้ Components
|
||||||
*/
|
*/
|
||||||
|
|
@ -383,7 +413,7 @@ onMounted(async () => {
|
||||||
</div>
|
</div>
|
||||||
<q-card-section class="q-px-lg">
|
<q-card-section class="q-px-lg">
|
||||||
<div class="row q-col-gutter-sm">
|
<div class="row q-col-gutter-sm">
|
||||||
<div class="col-3">
|
<div class="col-2">
|
||||||
<q-input
|
<q-input
|
||||||
bg-color="white"
|
bg-color="white"
|
||||||
outlined
|
outlined
|
||||||
|
|
@ -404,13 +434,14 @@ onMounted(async () => {
|
||||||
mask="#############"
|
mask="#############"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-3">
|
<div class="col-2">
|
||||||
<q-select
|
<q-select
|
||||||
bg-color="white"
|
bg-color="white"
|
||||||
v-model="informaData.prefix"
|
v-model="informaData.prefix"
|
||||||
label="คำนำหน้าชื่อ"
|
label="คำนำหน้าชื่อ"
|
||||||
outlined
|
outlined
|
||||||
dense
|
dense
|
||||||
|
clearable
|
||||||
lazy-rules
|
lazy-rules
|
||||||
class="inputgreen"
|
class="inputgreen"
|
||||||
:options="Ops.prefixOps"
|
:options="Ops.prefixOps"
|
||||||
|
|
@ -418,11 +449,8 @@ onMounted(async () => {
|
||||||
option-value="name"
|
option-value="name"
|
||||||
map-options
|
map-options
|
||||||
hide-bottom-space
|
hide-bottom-space
|
||||||
:rules="[
|
:rules="prefixRankRule()"
|
||||||
(val:string) => {
|
reactive-rules
|
||||||
return val.length > 0 || 'กรุณาเลือกคำนำหน้าชื่อ';
|
|
||||||
},
|
|
||||||
]"
|
|
||||||
emit-value
|
emit-value
|
||||||
use-input
|
use-input
|
||||||
hide-selected
|
hide-selected
|
||||||
|
|
@ -432,6 +460,32 @@ onMounted(async () => {
|
||||||
)"
|
)"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="col-2">
|
||||||
|
<q-select
|
||||||
|
bg-color="white"
|
||||||
|
v-model="informaData.rank"
|
||||||
|
label="ยศ"
|
||||||
|
outlined
|
||||||
|
dense
|
||||||
|
lazy-rules
|
||||||
|
clearable
|
||||||
|
class="inputgreen"
|
||||||
|
:options="Ops.rankOps"
|
||||||
|
option-label="name"
|
||||||
|
option-value="name"
|
||||||
|
map-options
|
||||||
|
hide-bottom-space
|
||||||
|
:rules="prefixRankRule()"
|
||||||
|
reactive-rules
|
||||||
|
emit-value
|
||||||
|
use-input
|
||||||
|
hide-selected
|
||||||
|
fill-input
|
||||||
|
@filter="(inputValue:string,
|
||||||
|
doneFn: Function) => filterSelector(inputValue, doneFn, 'rankOps'
|
||||||
|
)"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
<div class="col-3">
|
<div class="col-3">
|
||||||
<q-input
|
<q-input
|
||||||
bg-color="white"
|
bg-color="white"
|
||||||
|
|
|
||||||
|
|
@ -113,6 +113,7 @@ const Ops = ref<InformationOps>({
|
||||||
{ id: "gov", name: "งบประมาณเงินอุดหนุนรัฐบาล" },
|
{ id: "gov", name: "งบประมาณเงินอุดหนุนรัฐบาล" },
|
||||||
{ id: "bkk", name: "งบประมาณกรุงเทพมหานคร" },
|
{ id: "bkk", name: "งบประมาณกรุงเทพมหานคร" },
|
||||||
],
|
],
|
||||||
|
rankOps: [],
|
||||||
});
|
});
|
||||||
const OpsFilter = ref<InformationOps>({
|
const OpsFilter = ref<InformationOps>({
|
||||||
prefixOps: [],
|
prefixOps: [],
|
||||||
|
|
@ -129,6 +130,7 @@ const OpsFilter = ref<InformationOps>({
|
||||||
{ id: "gov", name: "งบประมาณเงินอุดหนุนรัฐบาล" },
|
{ id: "gov", name: "งบประมาณเงินอุดหนุนรัฐบาล" },
|
||||||
{ id: "bkk", name: "งบประมาณกรุงเทพมหานคร" },
|
{ id: "bkk", name: "งบประมาณกรุงเทพมหานคร" },
|
||||||
],
|
],
|
||||||
|
rankOps: [],
|
||||||
});
|
});
|
||||||
|
|
||||||
/** ฟังก์ชันดึงข้อมูลรายการข้อมูลเกี่ยวกับบุคคล (dropdown list)*/
|
/** ฟังก์ชันดึงข้อมูลรายการข้อมูลเกี่ยวกับบุคคล (dropdown list)*/
|
||||||
|
|
@ -186,6 +188,16 @@ async function fetchPerson() {
|
||||||
});
|
});
|
||||||
Ops.value.religionOps = optionreligions;
|
Ops.value.religionOps = optionreligions;
|
||||||
OpsFilter.value.religionOps = optionreligions;
|
OpsFilter.value.religionOps = optionreligions;
|
||||||
|
|
||||||
|
let rank: DataOption[] = [];
|
||||||
|
data.rank.map((r: DataOptioninfo) => {
|
||||||
|
rank.push({
|
||||||
|
id: r.id.toString(),
|
||||||
|
name: r.name.toString(),
|
||||||
|
});
|
||||||
|
});
|
||||||
|
Ops.value.rankOps = rank;
|
||||||
|
OpsFilter.value.rankOps = rank;
|
||||||
})
|
})
|
||||||
.catch((e) => {
|
.catch((e) => {
|
||||||
messageError($q, e);
|
messageError($q, e);
|
||||||
|
|
@ -215,9 +227,9 @@ async function getData() {
|
||||||
}
|
}
|
||||||
rows.value = list;
|
rows.value = list;
|
||||||
profileId.value = data.profileId;
|
profileId.value = data.profileId;
|
||||||
title.value.fullname = `${data.prefix ?? ""}${data.firstName ?? ""} ${
|
title.value.fullname = `${data.rank ? data.rank : data.prefix ?? ""}${
|
||||||
data.lastName ?? ""
|
data.firstName ?? ""
|
||||||
}`;
|
} ${data.lastName ?? ""}`;
|
||||||
title.value.organizationPositionOld = data.organizationPositionOld ?? "-";
|
title.value.organizationPositionOld = data.organizationPositionOld ?? "-";
|
||||||
title.value.positionLevelOld = data.positionLevelOld ?? "-";
|
title.value.positionLevelOld = data.positionLevelOld ?? "-";
|
||||||
title.value.positionTypeOld = data.positionTypeOld ?? "-";
|
title.value.positionTypeOld = data.positionTypeOld ?? "-";
|
||||||
|
|
@ -230,6 +242,7 @@ async function getData() {
|
||||||
(data.prefix == "00000000-0000-0000-0000-000000000000"
|
(data.prefix == "00000000-0000-0000-0000-000000000000"
|
||||||
? null
|
? null
|
||||||
: data.prefix) ?? "",
|
: data.prefix) ?? "",
|
||||||
|
rank: data.rank ?? "",
|
||||||
firstname: data.firstName ?? "",
|
firstname: data.firstName ?? "",
|
||||||
lastname: data.lastName ?? "",
|
lastname: data.lastName ?? "",
|
||||||
birthDate:
|
birthDate:
|
||||||
|
|
@ -295,6 +308,7 @@ async function fetchData(data: any) {
|
||||||
(data.prefix == "00000000-0000-0000-0000-000000000000"
|
(data.prefix == "00000000-0000-0000-0000-000000000000"
|
||||||
? null
|
? null
|
||||||
: data.prefix) ?? "",
|
: data.prefix) ?? "",
|
||||||
|
rank: data.rank ?? "",
|
||||||
firstname: data.firstName ?? "",
|
firstname: data.firstName ?? "",
|
||||||
lastname: data.lastName ?? "",
|
lastname: data.lastName ?? "",
|
||||||
birthDate: data.dateOfBirth !== null ? new Date(data.dateOfBirth) : null,
|
birthDate: data.dateOfBirth !== null ? new Date(data.dateOfBirth) : null,
|
||||||
|
|
@ -436,6 +450,14 @@ function filterSelector(val: string, update: Function, refData: string) {
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case "rankOps":
|
||||||
|
update(() => {
|
||||||
|
Ops.value.rankOps = OpsFilter.value.rankOps.filter(
|
||||||
|
(v: DataOption) => v.name.toLowerCase().indexOf(newVal) > -1
|
||||||
|
);
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
@ -470,6 +492,7 @@ function saveData() {
|
||||||
positionNumberOld: posNo.value,
|
positionNumberOld: posNo.value,
|
||||||
amount: 0,
|
amount: 0,
|
||||||
amountOld: salary.value,
|
amountOld: salary.value,
|
||||||
|
rank: informaData.value.rank,
|
||||||
};
|
};
|
||||||
showLoader();
|
showLoader();
|
||||||
http
|
http
|
||||||
|
|
@ -517,6 +540,15 @@ function updateBirthDate(v: Date) {
|
||||||
informaData.value.age = calculateAge(v);
|
informaData.value.age = calculateAge(v);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function prefixRankRule() {
|
||||||
|
return [
|
||||||
|
() =>
|
||||||
|
!!informaData.value.rank ||
|
||||||
|
!!informaData.value.prefixId ||
|
||||||
|
"กรุณาเลือกคำนำหน้าชื่อ หรือยศ",
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
/** ทำงานเมื่อมีการเรียกใช้ Components*/
|
/** ทำงานเมื่อมีการเรียกใช้ Components*/
|
||||||
onMounted(async () => {
|
onMounted(async () => {
|
||||||
await fetchPerson();
|
await fetchPerson();
|
||||||
|
|
@ -598,7 +630,7 @@ onMounted(async () => {
|
||||||
<div class="col-xs-12">
|
<div class="col-xs-12">
|
||||||
<div class="text-weight-bold text-grey">ข้อมูลส่วนตัว</div>
|
<div class="text-weight-bold text-grey">ข้อมูลส่วนตัว</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-xs-6 col-sm-3 col-md-3">
|
<div class="col-xs-6 col-sm-2 col-md-2">
|
||||||
<q-input
|
<q-input
|
||||||
:class="getClass(edit)"
|
:class="getClass(edit)"
|
||||||
hide-bottom-space
|
hide-bottom-space
|
||||||
|
|
@ -614,7 +646,7 @@ onMounted(async () => {
|
||||||
mask="#############"
|
mask="#############"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-xs-6 col-sm-3 col-md-3">
|
<div class="col-xs-6 col-sm-2 col-md-2">
|
||||||
<selector
|
<selector
|
||||||
:hide-dropdown-icon="!edit"
|
:hide-dropdown-icon="!edit"
|
||||||
hide-bottom-space
|
hide-bottom-space
|
||||||
|
|
@ -634,10 +666,42 @@ onMounted(async () => {
|
||||||
option-value="name"
|
option-value="name"
|
||||||
:label="`${'คำนำหน้าชื่อ'}`"
|
:label="`${'คำนำหน้าชื่อ'}`"
|
||||||
use-input
|
use-input
|
||||||
|
clearable
|
||||||
input-debounce="0"
|
input-debounce="0"
|
||||||
|
:rules="prefixRankRule()"
|
||||||
|
reactive-rules
|
||||||
@filter="(inputValue:string, doneFn:Function) => filterSelector(inputValue, doneFn,'prefixOps' ) "
|
@filter="(inputValue:string, doneFn:Function) => filterSelector(inputValue, doneFn,'prefixOps' ) "
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="col-xs-6 col-sm-2 col-md-2">
|
||||||
|
<selector
|
||||||
|
:hide-dropdown-icon="!edit"
|
||||||
|
hide-bottom-space
|
||||||
|
:class="getClass(edit)"
|
||||||
|
:readonly="!edit"
|
||||||
|
:borderless="!edit"
|
||||||
|
:outlined="edit"
|
||||||
|
dense
|
||||||
|
lazy-rules
|
||||||
|
v-model="informaData.rank"
|
||||||
|
emit-value
|
||||||
|
map-options
|
||||||
|
hide-selected
|
||||||
|
fill-input
|
||||||
|
:rules="prefixRankRule()"
|
||||||
|
option-label="name"
|
||||||
|
:options="Ops.rankOps"
|
||||||
|
option-value="name"
|
||||||
|
:label="`${'ยศ'}`"
|
||||||
|
reactive-rules
|
||||||
|
use-input
|
||||||
|
input-debounce="0"
|
||||||
|
@filter="(inputValue:string, doneFn:Function) => filterSelector(inputValue, doneFn,'rankOps' ) "
|
||||||
|
clearable
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="col-xs-6 col-sm-3 col-md-3">
|
<div class="col-xs-6 col-sm-3 col-md-3">
|
||||||
<q-input
|
<q-input
|
||||||
:class="getClass(edit)"
|
:class="getClass(edit)"
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@ interface InformationOps {
|
||||||
religionOps: DataOption[];
|
religionOps: DataOption[];
|
||||||
employeeClassOps: DataOption[];
|
employeeClassOps: DataOption[];
|
||||||
employeeTypeOps: DataOption[];
|
employeeTypeOps: DataOption[];
|
||||||
|
rankOps: DataOption[];
|
||||||
}
|
}
|
||||||
|
|
||||||
//ข้อมูลส่วนตัว
|
//ข้อมูลส่วนตัว
|
||||||
|
|
@ -63,6 +64,7 @@ interface FormAddPerson {
|
||||||
employeeType: string | null;
|
employeeType: string | null;
|
||||||
employeeClass: string | null;
|
employeeClass: string | null;
|
||||||
profileType: string | null;
|
profileType: string | null;
|
||||||
|
rank?: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
const defaultInformation: Information = {
|
const defaultInformation: Information = {
|
||||||
|
|
@ -83,6 +85,7 @@ const defaultInformation: Information = {
|
||||||
employeeType: null,
|
employeeType: null,
|
||||||
employeeClass: null,
|
employeeClass: null,
|
||||||
profileType: null,
|
profileType: null,
|
||||||
|
rank: null,
|
||||||
};
|
};
|
||||||
|
|
||||||
export { defaultInformation };
|
export { defaultInformation };
|
||||||
|
|
|
||||||
|
|
@ -110,7 +110,9 @@ const columns = ref<QTableProps["columns"]>([
|
||||||
sort: (a: string, b: string) =>
|
sort: (a: string, b: string) =>
|
||||||
a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }),
|
a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }),
|
||||||
format(val, row) {
|
format(val, row) {
|
||||||
return `${row.prefix ?? ""}${row.firstName ?? ""} ${row.lastName ?? ""}`;
|
return ` ${row.rank ? row.rank : row.prefix ?? ""}${
|
||||||
|
row.firstName ?? ""
|
||||||
|
} ${row.lastName ?? ""}`;
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue