This commit is contained in:
DESKTOP-1R2VSQH\Lenovo ThinkPad E490 2026-06-11 18:17:21 +07:00
parent 5bcf07c306
commit 5aed5699b9
2 changed files with 66 additions and 3 deletions

View file

@ -59,6 +59,7 @@ const changeNameData = reactive<FormChangeName>({
profileId: profileId.value, profileId: profileId.value,
prefixId: "", // id prefixId: "", // id
prefix: "", // prefix: "", //
rank: "", //
firstName: "", // firstName: "", //
lastName: "", // lastName: "", //
status: "", // status: "", //
@ -69,11 +70,13 @@ const selection = ref<string[]>([]); // ตัวเลือก
const prefixChange = ref<string | null | undefined>(""); // const prefixChange = ref<string | null | undefined>(""); //
const firstNameChange = ref<string | null | undefined>(""); // const firstNameChange = ref<string | null | undefined>(""); //
const lastNameChange = ref<string | null | undefined>(""); // const lastNameChange = ref<string | null | undefined>(""); //
const rankChange = ref<string | null | undefined>(""); //
const profileInfo = ref<DataProfile>(); // Profile const profileInfo = ref<DataProfile>(); // Profile
const statusOption = ref<string[]>([ const statusOption = ref<string[]>([
"เปลี่ยนคำนำหน้าชื่อ", "เปลี่ยนคำนำหน้าชื่อ",
"เปลี่ยนยศ",
"เปลี่ยนชื่อ", "เปลี่ยนชื่อ",
"เปลี่ยนนามสกุล", "เปลี่ยนนามสกุล",
"เปลี่ยนชื่อ-นามสกุล", "เปลี่ยนชื่อ-นามสกุล",
@ -84,6 +87,7 @@ const statusOption = ref<string[]>([
const statusOptionFilter = ref<string[]>([ const statusOptionFilter = ref<string[]>([
"เปลี่ยนคำนำหน้าชื่อ", "เปลี่ยนคำนำหน้าชื่อ",
"เปลี่ยนชื่อ", "เปลี่ยนชื่อ",
"เปลี่ยนยศ",
"เปลี่ยนนามสกุล", "เปลี่ยนนามสกุล",
"เปลี่ยนชื่อ-นามสกุล", "เปลี่ยนชื่อ-นามสกุล",
"เปลี่ยนคำนำหน้าชื่อ และชื่อ", "เปลี่ยนคำนำหน้าชื่อ และชื่อ",
@ -107,6 +111,17 @@ 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" }),
}, },
{
name: "rank",
align: "left",
label: "ยศ",
sortable: true,
field: "rank",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
sort: (a: string, b: string) =>
a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }),
},
{ {
name: "firstName", name: "firstName",
align: "left", align: "left",
@ -156,6 +171,7 @@ const columns = ref<QTableProps["columns"]>([
]); ]);
const visibleColumns = ref<string[]>([ const visibleColumns = ref<string[]>([
"prefix", "prefix",
"rank",
"firstName", "firstName",
"lastName", "lastName",
"lastUpdateFullName", "lastUpdateFullName",
@ -215,6 +231,7 @@ function onSubmit() {
firstName: changeNameData.firstName, firstName: changeNameData.firstName,
lastName: changeNameData.lastName, lastName: changeNameData.lastName,
status: changeNameData.status, status: changeNameData.status,
rank: changeNameData.rank,
documentId: changeNameData.documentId, documentId: changeNameData.documentId,
}) })
.then(async (res) => { .then(async (res) => {
@ -346,6 +363,14 @@ function filterSelector(val: string, update: Function, refData: string) {
); );
}); });
break; break;
case "rankOps":
update(() => {
store.Ops.rankOps = store.OpsFilter.rankOps.filter(
(v: DataOption) => v.name.indexOf(val) > -1
);
});
break;
default: default:
break; break;
} }
@ -390,12 +415,14 @@ watch(
changeNameData.prefix, changeNameData.prefix,
changeNameData.firstName, changeNameData.firstName,
changeNameData.lastName, changeNameData.lastName,
changeNameData.rank,
], ],
() => { () => {
submitDisable.value = submitDisable.value =
changeNameData.prefix === prefixChange.value && changeNameData.prefix === prefixChange.value &&
changeNameData.firstName === firstNameChange.value && changeNameData.firstName === firstNameChange.value &&
changeNameData.lastName === lastNameChange.value; changeNameData.lastName === lastNameChange.value &&
changeNameData.rank === rankChange.value;
} }
); );
@ -411,6 +438,9 @@ watch(
if (!selection.value.includes("lastname")) { if (!selection.value.includes("lastname")) {
changeNameData.lastName = lastNameChange.value; changeNameData.lastName = lastNameChange.value;
} }
if (!selection.value.includes("rank")) {
changeNameData.rank = rankChange.value;
}
} }
); );
/** ทำงานเมื่อ Components ถูกเรียกใช้งาน*/ /** ทำงานเมื่อ Components ถูกเรียกใช้งาน*/
@ -445,12 +475,14 @@ onMounted(async () => {
icon="add" icon="add"
@click=" @click="
() => { () => {
changeNameData.prefix = profileInfo?.prefixMain; changeNameData.prefix = profileInfo?.prefix;
changeNameData.firstName = profileInfo?.firstName; changeNameData.firstName = profileInfo?.firstName;
changeNameData.lastName = profileInfo?.lastName; changeNameData.lastName = profileInfo?.lastName;
changeNameData.rank = profileInfo?.rank;
prefixChange = changeNameData.prefix; prefixChange = changeNameData.prefix;
firstNameChange = changeNameData.firstName; firstNameChange = changeNameData.firstName;
lastNameChange = changeNameData.lastName; lastNameChange = changeNameData.lastName;
rankChange = changeNameData.rank;
changeNameData.status = ''; changeNameData.status = '';
dialogStatus = 'create'; dialogStatus = 'create';
submitDisable = true; submitDisable = true;
@ -563,12 +595,17 @@ onMounted(async () => {
<div class="row q-mb-sm"> <div class="row q-mb-sm">
<div class="col-12"> <div class="col-12">
<div class="row"> <div class="row">
<div class="q-gutter-sm"> <div class="q-col-gutter-sm">
<q-checkbox <q-checkbox
v-model="selection" v-model="selection"
val="prefix" val="prefix"
label="เปลี่ยนคำนำหน้าชื่อ" label="เปลี่ยนคำนำหน้าชื่อ"
/> />
<q-checkbox
v-model="selection"
val="rank"
label="เปลี่ยนยศ"
/>
<q-checkbox <q-checkbox
v-model="selection" v-model="selection"
val="firstname" val="firstname"
@ -609,6 +646,31 @@ onMounted(async () => {
) " ) "
/> />
</div> </div>
<div class="col">
<q-select
:readonly="!selection.includes('rank')"
v-model="changeNameData.rank"
:options="store.Ops.rankOps"
label="ยศ"
dense
:class="!selection.includes('rank') ? '' : 'inputgreen'"
outlined
use-input
hide-selected
fill-input
lazy-rules
emit-value
map-options
:rules="[(val:string) => !!val || `${'กรุณาเลือกยศ'}`]"
hide-bottom-space
input-debounce="0"
option-label="name"
option-value="name"
@filter="(inputValue:string,
doneFn:Function) => filterSelector(inputValue, doneFn,'rankOps'
) "
/>
</div>
<div class="col"> <div class="col">
<q-input <q-input
:readonly="!selection.includes('firstname')" :readonly="!selection.includes('firstname')"

View file

@ -66,6 +66,7 @@ interface FormChangeName {
profileId: string; profileId: string;
prefixId: string | null | undefined; prefixId: string | null | undefined;
prefix: string | null | undefined; prefix: string | null | undefined;
rank: string | null | undefined;
firstName: string | null | undefined; firstName: string | null | undefined;
lastName: string | null | undefined; lastName: string | null | undefined;
status: string | null | undefined; status: string | null | undefined;