fix: commander popup

This commit is contained in:
Warunee Tamkoo 2026-02-25 13:30:30 +07:00
parent e7e767e7f9
commit cb7f021834
9 changed files with 231 additions and 172 deletions

View file

@ -36,15 +36,6 @@ const rejectName = computed(() =>
const selected = ref<any[]>([]);
const rows = ref<any[]>([]);
const columns = ref<QTableProps["columns"]>([
{
name: "posNo",
align: "left",
label: "เลขที่ตำแหน่ง",
sortable: true,
field: "posNo",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
},
{
name: "fullName",
align: "left",
@ -58,11 +49,20 @@ const columns = ref<QTableProps["columns"]>([
style: "font-size: 14px",
},
{
name: "posExecutiveName",
name: "posNo",
align: "left",
label: "ตำแหน่งทางการบริหาร",
label: "เลขที่ตำแหน่ง",
sortable: true,
field: "posExecutiveName",
field: "posNo",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
},
{
name: "positionSign",
align: "left",
label: "ตำแหน่งใต้ลายเซ็น",
sortable: true,
field: "positionSign",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
},

View file

@ -103,14 +103,14 @@ const visibleColumns = ref<string[]>([
"positionType",
"actFullName",
]);
const visibleColumnsMember = ref<string[]>([
"no",
const visibleColumnsMemberBase = ref<string[]>([
// "no",
"posNo",
"name",
"position",
"posLevel",
"posType",
"actFullName",
"positionSign",
]);
/** หัวตาราง */
const columns = ref<QTableProps["columns"]>([
@ -173,24 +173,33 @@ const columns = ref<QTableProps["columns"]>([
}`;
},
},
{
name: "actFullName",
align: "left",
label: "รักษาการแทน",
sortable: true,
field: "actFullName",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
},
// {
// name: "actFullName",
// align: "left",
// label: "",
// sortable: true,
// field: "actFullName",
// headerStyle: "font-size: 14px",
// style: "font-size: 14px",
// },
]);
const baseColumnsMember = ref<QTableProps["columns"]>([
// {
// name: "no",
// align: "left",
// label: "",
// sortable: false,
// field: "no",
// headerStyle: "font-size: 14px",
// style: "font-size: 14px",
// },
{
name: "no",
name: "name",
align: "left",
label: "ลำดับ",
sortable: false,
field: "no",
label: "ชื่อ-นามสกุล",
sortable: true,
field: "name",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
},
@ -203,16 +212,6 @@ const baseColumnsMember = ref<QTableProps["columns"]>([
headerStyle: "font-size: 14px",
style: "font-size: 14px",
},
{
name: "name",
align: "left",
label: "ชื่อ-นามสกุล",
sortable: true,
field: "name",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
},
{
name: "position",
align: "left",
@ -236,6 +235,15 @@ const baseColumnsMember = ref<QTableProps["columns"]>([
}`;
},
},
{
name: "positionSign",
align: "left",
label: "ตำแหน่งใต้ลายเซ็น",
sortable: true,
field: "positionSign",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
},
]);
const columnsMember = computed(() => {
@ -250,6 +258,13 @@ const columnsMember = computed(() => {
return baseColumnsMember.value;
});
const visibleColumnsMember = computed(() => {
if (isAct.value || isDirector.value) {
return ["name", "posNo", "positionSign"];
}
return ["name", "posNo", "position", "posLevel", "posType"];
});
/** เพิ่ม คณะกรรมการ */
function onAdd() {
modal.value = true;

View file

@ -31,15 +31,15 @@ const pageSize = ref<number>(10);
const maxPaeg = ref<number>(1);
const total = ref<number>(0);
const columns = ref<QTableProps["columns"]>([
{
name: "citizenId",
align: "left",
label: "เลขประจำตัวประชาชน",
sortable: true,
field: "citizenId",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
},
// {
// name: "citizenId",
// align: "left",
// label: "",
// sortable: true,
// field: "citizenId",
// headerStyle: "font-size: 14px",
// style: "font-size: 14px",
// },
{
name: "posNo",
align: "left",
@ -86,6 +86,39 @@ const columns = ref<QTableProps["columns"]>([
},
]);
const columnsAct = ref<QTableProps["columns"]>([
{
name: "fullName",
align: "left",
label: "ชื่อ-นามสกุล",
sortable: true,
field: "fullName",
format(val, row) {
return `${row.prefix}${row.firstName} ${row.lastName}`;
},
headerStyle: "font-size: 14px",
style: "font-size: 14px",
},
{
name: "posNo",
align: "left",
label: "เลขที่ตำแหน่ง",
sortable: true,
field: "posNo",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
},
{
name: "positionSign",
align: "left",
label: "ตำแหน่งใต้ลายเซ็น",
sortable: true,
field: "positionSign",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
},
]);
function onCloseDialog() {
modal.value = false;
isAct.value = false;
@ -197,7 +230,7 @@ watch(modal, (val) => {
<div class="col-12">
<d-table
flat
:columns="columns"
:columns="isAct ? columnsAct : columns"
:rows="rows"
row-key="key"
dense
@ -246,7 +279,7 @@ watch(modal, (val) => {
:props="props"
>
<div>
{{ col.value ?? "-" }}
{{ col.value ? col.value : "-" }}
</div>
</q-td>
</q-tr>

View file

@ -48,15 +48,6 @@ const pagination = ref({
const rows = ref<any[]>([]);
const columns = ref<QTableProps["columns"]>([
{
name: "posNo",
align: "left",
label: "เลขที่ตำแหน่ง",
sortable: true,
field: "posNo",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
},
{
name: "fullName",
align: "left",
@ -70,11 +61,20 @@ const columns = ref<QTableProps["columns"]>([
style: "font-size: 14px",
},
{
name: "posExecutiveName",
name: "posNo",
align: "left",
label: "ตำแหน่งทางการบริหาร",
label: "เลขที่ตำแหน่ง",
sortable: true,
field: "posExecutiveName",
field: "posNo",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
},
{
name: "positionSign",
align: "left",
label: "ตำแหน่งใต้ลายเซ็น",
sortable: true,
field: "positionSign",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
},
@ -127,60 +127,61 @@ async function getData() {
}
function onSubmit() {
if (selected.value.length !== 0) {
dialogConfirm($q, async () => {
if (props.keycloakUserId) {
const body = selected.value.map((items: any, index: any) => ({
seq: index,
prefix: items.prefix,
firstName: items.firstName,
lastName: items.lastName,
positionName: items.position,
profileId: items.id,
keycloakId: items.keycloakId,
...(items.posExecutiveName
? { PositionExecutiveName: items.posExecutiveName }
: {}),
}));
showLoader();
const profileSuffix =
(props.profileType?.toLocaleLowerCase() as string) === "officer"
? ""
: "-employee";
// if (selected.value.length !== 0) {
dialogConfirm($q, async () => {
if (props.keycloakUserId) {
const body = selected.value.map((items: any, index: any) => ({
seq: index,
prefix: items.prefix,
firstName: items.firstName,
lastName: items.lastName,
positionName: items.position,
profileId: items.id,
keycloakId: items.keycloakId,
PositionExecutiveName: items.positionSign,
// ...(items.positionSign
// ? { PositionExecutiveName: items.positionSign }
// : {}),
}));
showLoader();
const profileSuffix =
(props.profileType?.toLocaleLowerCase() as string) === "officer"
? ""
: "-employee";
const apiEndpoint =
routeName.value === "resignReject" ||
routeName.value === "resignRejectEMP"
? config.API.addResignCancel(
profileSuffix,
props.type?.toLocaleLowerCase() as string,
pageId.value
)
: config.API.addResign(
profileSuffix,
props.type?.toLocaleLowerCase() as string,
pageId.value
);
await http
.post(apiEndpoint, body)
.then(async () => {
await props.getData?.(pageId.value);
closeDialog();
success($q, "บันทึกสำเร็จ");
})
.catch((e) => {
messageError($q, e);
})
.finally(() => {
hideLoader();
});
} else {
closeDialog();
}
});
} else {
dialogMessageNotify($q, "กรุณาเลือกอย่างน้อย 1 คน");
}
const apiEndpoint =
routeName.value === "resignReject" ||
routeName.value === "resignRejectEMP"
? config.API.addResignCancel(
profileSuffix,
props.type?.toLocaleLowerCase() as string,
pageId.value
)
: config.API.addResign(
profileSuffix,
props.type?.toLocaleLowerCase() as string,
pageId.value
);
await http
.post(apiEndpoint, body)
.then(async () => {
await props.getData?.(pageId.value);
closeDialog();
success($q, "บันทึกสำเร็จ");
})
.catch((e) => {
messageError($q, e);
})
.finally(() => {
hideLoader();
});
} else {
closeDialog();
}
});
// } else {
// dialogMessageNotify($q, " 1 ");
// }
}
function closeDialog() {

View file

@ -48,15 +48,6 @@ const pagination = ref({
const rows = ref<any[]>([]);
const columns = ref<QTableProps["columns"]>([
{
name: "posNo",
align: "left",
label: "เลขที่ตำแหน่ง",
sortable: true,
field: "posNo",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
},
{
name: "fullName",
align: "left",
@ -69,6 +60,15 @@ const columns = ref<QTableProps["columns"]>([
headerStyle: "font-size: 14px",
style: "font-size: 14px",
},
{
name: "posNo",
align: "left",
label: "เลขที่ตำแหน่ง",
sortable: true,
field: "posNo",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
},
{
name: "positionSign",
align: "left",
@ -136,7 +136,7 @@ function onSubmit() {
firstName: items.firstName ?? "",
lastName: items.lastName ?? "",
positionName: items.position ?? "",
positionSign: items.positionSign ?? items.posExecutiveName ?? "",
positionSign: items.positionSign,
profileId: items.id,
keycloakId: items.keycloakId,
positionLeaveName:

View file

@ -31,19 +31,10 @@ const rows = ref<DataOperators[]>([]);
const visibleColumns = ref<string[]>([
"posNo",
"fullName",
"posExecutiveName",
"actFullName",
"positionSign",
// "actFullName",
]);
const columns = ref<QTableProps["columns"]>([
{
name: "posNo",
align: "left",
label: "เลขที่ตำแหน่ง",
sortable: true,
field: "posNo",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
},
{
name: "fullName",
align: "left",
@ -57,11 +48,20 @@ const columns = ref<QTableProps["columns"]>([
style: "font-size: 14px",
},
{
name: "posExecutiveName",
name: "posNo",
align: "left",
label: "ตำแหน่งทางการบริหาร",
label: "เลขที่ตำแหน่ง",
sortable: true,
field: "posExecutiveName",
field: "posNo",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
},
{
name: "positionSign",
align: "left",
label: "ตำแหน่งใต้ลายเซ็น",
sortable: true,
field: "positionSign",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
},
@ -95,7 +95,7 @@ function onSubmit() {
posType: data.posType ?? "",
posLevel: data.posLevel ?? "",
position: data.position ?? "",
positionExecutive: data.posExecutiveName ?? "",
positionExecutive: data.positionSign ?? "",
roleName: roleName.value.trim(),
};
showLoader();
@ -274,7 +274,9 @@ watch(modal, (newVal) => {
:key="col.name"
:props="props"
>
<span class="text-weight-medium">{{ getColumnLabel(col, isAct) }}</span>
<span class="text-weight-medium">{{
getColumnLabel(col, isAct)
}}</span>
</q-th>
</q-tr>
</template>
@ -293,7 +295,7 @@ watch(modal, (newVal) => {
:key="col.name"
:props="props"
>
{{ col.value ?? "-" }}
{{ col.value ? col.value : "-" }}
</q-td>
</q-tr>
</template>

View file

@ -59,25 +59,15 @@ const search = ref<string>("");
const rows = ref<DataDirector[]>([]); ///
const selected = ref<DataDirector[]>([]); ///
const columns = ref<QTableProps["columns"]>([
{
name: "citizenId",
align: "left",
label: "เลขประจำตัวประชาชน",
sortable: true,
field: "citizenId",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
},
{
name: "posNo",
align: "left",
label: "เลขที่ตำแหน่ง",
sortable: true,
field: "posNo",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
},
// {
// name: "citizenId",
// align: "left",
// label: "",
// sortable: true,
// field: "citizenId",
// headerStyle: "font-size: 14px",
// style: "font-size: 14px",
// },
{
name: "firstName",
align: "left",
@ -90,25 +80,42 @@ const columns = ref<QTableProps["columns"]>([
headerStyle: "font-size: 14px",
style: "font-size: 14px",
},
{
name: "position",
name: "posNo",
align: "left",
label: "ตำแหน่ง",
label: "เลขที่ตำแหน่ง",
sortable: true,
field: "position",
field: "posNo",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
},
// {
// name: "position",
// align: "left",
// label: "",
// sortable: true,
// field: "position",
// headerStyle: "font-size: 14px",
// style: "font-size: 14px",
// },
// {
// name: "posType",
// align: "left",
// label: "",
// sortable: true,
// field: "posType",
// format(val, row) {
// return `${row.posType} ${row.posLevel ? `(${row.posLevel})` : ""} `;
// },
// headerStyle: "font-size: 14px",
// style: "font-size: 14px",
// },
{
name: "posType",
name: "positionSign",
align: "left",
label: "ประเภทตำแหน่ง",
label: "ตำแหน่งใต้ลายเซ็น",
sortable: true,
field: "posType",
format(val, row) {
return `${row.posType} ${row.posLevel ? `(${row.posLevel})` : ""} `;
},
field: "positionSign",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
},
@ -790,7 +797,7 @@ onMounted(async () => {
:props="props"
>
<div>
{{ col.value ?? "-" }}
{{ col.value ? col.value : "-" }}
</div>
</q-td>
</q-tr>

View file

@ -119,6 +119,7 @@ interface DataOperators {
profileId: string;
roleName: string;
posExecutiveName?: string;
positionSign?: string;
}
export type {

View file

@ -69,7 +69,7 @@ export function calculateAge(birthDate: Date | null) {
*/
export function getColumnLabel(col: any, isAct: boolean) {
if (col.name === "posNo" && isAct) {
return `${col.label} (รักษาการแทน)`;
return `${col.label}รักษาการแทน`;
}
return col.label;
}