Merge branch 'develop' into devTee

This commit is contained in:
setthawutttty 2025-03-19 17:41:58 +07:00
commit 94b3d48a91
15 changed files with 314 additions and 183 deletions

View file

@ -48,16 +48,16 @@ const props = defineProps({
const isReadonly = ref<boolean>(false); //
const dataLevel = ref<DataPosType[]>([]); //
const dataLevel = ref<DataPosType[]>([]); //
const posExecutive = ref<string>(""); //
const isSpecial = ref<boolean>(false); //
const shape = ref<string>("false"); //
const isDisValidate = ref<boolean>(false);
const typeOpsMain = ref<DataOption[]>([]); //
const typeOpsMain = ref<DataOption[]>([]); //
const levelOpsMain = ref<DataOption[]>([]); //
const executiveOpsMain = ref<DataOption[]>([]); //
const typeOps = ref<DataOption[]>([]); //
const typeOps = ref<DataOption[]>([]); //
const levelOps = ref<DataOption[]>([]); //
const executiveOps = ref<DataOption[]>([]); //
const shapeOp = ref<DataOption[]>([
@ -118,7 +118,7 @@ function saveSelectEdit() {
? {
posDictName: formPositionSelect.positionName,
posDictField: formPositionSelect.positionField, //
posTypeId: formPositionSelect.positionType, //*
posTypeId: formPositionSelect.positionType, //*
posLevelId: formPositionSelect.positionLevel, //*
posExecutiveId: dataExecutive ?? "", //
posDictExecutiveField:
@ -129,7 +129,7 @@ function saveSelectEdit() {
: {
posDictName: formPositionSelect.positionName,
posDictField: formPositionSelect.positionField, //
posTypeId: formPositionSelect.positionType, //*
posTypeId: formPositionSelect.positionType, //*
posLevelId: formPositionSelect.positionLevel, //*
posExecutive: dataExecutive ?? "", //
posDictExecutiveField: formPositionSelect.positionExecutiveField, //
@ -176,7 +176,7 @@ function onSubmitSelectEdit() {
? {
posDictName: formPositionSelect.positionName,
posDictField: formPositionSelect.positionField, //
posTypeId: formPositionSelect.positionType, //*
posTypeId: formPositionSelect.positionType, //*
posLevelId: formPositionSelect.positionLevel, //*
posExecutiveId: dataExecutive ?? "", //
posDictExecutiveField: formPositionSelect.positionExecutiveField, //
@ -186,7 +186,7 @@ function onSubmitSelectEdit() {
: {
posDictName: formPositionSelect.positionName,
posDictField: formPositionSelect.positionField, //
posTypeId: formPositionSelect.positionType, //*
posTypeId: formPositionSelect.positionType, //*
posLevelId: formPositionSelect.positionLevel, //*
posExecutive: dataExecutive ?? "", //
posDictExecutiveField: formPositionSelect.positionExecutiveField, //
@ -241,7 +241,7 @@ async function clearFormPositionSelect() {
}
/**
* งกเรยกขอมลรายการประเภทตำแหน
* งกเรยกขอมลรายการตำแหนประเภท
*/
async function fetchType() {
await http
@ -260,8 +260,8 @@ async function fetchType() {
}
/**
* งกนกำหนดตวเลอกประเภทตำแหนตาม id ประเภทตำแหน
* @param val id ประเภทตำแหน
* งกนกำหนดตวเลอกตำแหนประเภทตาม id ตำแหนประเภท
* @param val id ตำแหนประเภท
*/
async function updateSelectType(val: string) {
//
@ -320,7 +320,7 @@ function inputEdit(val: boolean) {
/**
* การเปลยนแปลงของ modal.value
*
* าเป true ทำการเรยกขอมลรายการประเภทตำแหน และ อมลรายการตำแหนงทางการบรหาร
* าเป true ทำการเรยกขอมลรายการตำแหนประเภท และ อมลรายการตำแหนงทางการบรหาร
* และถาม props.data จะกำหนด formPositionSelect เปนตาม props.data
*/
watch(
@ -418,7 +418,7 @@ watch(
<q-select
ref="positionTypeRef"
:class="inputEdit(isReadonly)"
label="ประเภทตำแหน่ง"
label="ตำแหน่งประเภท"
v-model="formPositionSelect.positionType"
:options="typeOps"
emit-value
@ -432,7 +432,7 @@ watch(
hide-bottom-space
:rules="
!isDisValidate
? [(val:string) => !!val || `${'กรุณาเลือกประเภทตำแหน่ง'}`]
? [(val:string) => !!val || `${'กรุณาเลือกตำแหน่งประเภท'}`]
: []
"
/>

View file

@ -69,7 +69,7 @@ const type = ref<string>("positionName"); //ประเภทค้นหา
const optionFilter = ref<DataOption[]>([
{ id: "positionName", name: "ตำแหน่งในสายงาน" },
{ id: "positionField", name: "สายงาน" },
{ id: "positionType", name: "ประเภทตำแหน่ง" },
{ id: "positionType", name: "ตำแหน่งประเภท" },
{ id: "positionLevel", name: "ระดับตำแหน่ง" },
{ id: "positionExecutive", name: "ตำแหน่งทางการบริหาร" },
{ id: "positionExecutiveField", name: "ด้านทางการบริหาร" },
@ -252,7 +252,7 @@ function onSubmit() {
const positionsData = rows.value.map((e: RowDetailPositions) => ({
posDictName: e.positionName, // ()
posDictField: e.positionField, //
posTypeId: e.posTypeId, //*
posTypeId: e.posTypeId, //*
posLevelId: e.posLevelId, //*
posExecutiveId: e.posExecutiveId ? e.posExecutiveId : "", //
posDictExecutiveField: e.positionExecutiveField, //
@ -261,10 +261,10 @@ function onSubmit() {
positionIsSelected: e.positionIsSelected,
}));
const body = {
posMasterNoPrefix: formData.prefixNo, //*Prefix Optional (/)
posMasterNo: Number(formData.positionNo), //*
posMasterNoSuffix: formData.suffixNo, //Suffix .
reason: formData.reason, //Suffix .
posMasterNoPrefix: formData.prefixNo, //*Prefix Optional (/)
posMasterNo: Number(formData.positionNo), //*
posMasterNoSuffix: formData.suffixNo, //Suffix .
reason: formData.reason, //Suffix .
isDirector: formData.isDirector,
// isStaff: formData.isStaff ? formData.isStaff : false,
isStaff: false,
@ -554,11 +554,11 @@ watch(
dense
outlined
for="#positionNo"
label="ตำแหน่งเลขที่"
label="เลขที่ตำแหน่ง"
lazy-rules
hide-bottom-space
:rules="[
(val:string) => !!val || `${'กรุณากรอกตำแหน่งเลขที่'}`,
(val:string) => !!val || `${'กรุณากรอกเลขที่ตำแหน่ง'}`,
]"
mask="########################"
/>
@ -570,7 +570,7 @@ watch(
dense
outlined
for="#suffixNo"
label="Suffix ตำแหน่งเลขที่"
label="Suffix เลขที่ตำแหน่ง"
/>
</div>
</div>

View file

@ -72,7 +72,7 @@ const columns = ref<QTableProps["columns"]>([
{
name: "posMasterNoPrefix",
align: "left",
label: " Prefix ตำแหน่งเลขที่",
label: " Prefix เลขที่ตำแหน่ง",
sortable: true,
field: "posMasterNoPrefix",
headerStyle: "font-size: 14px",
@ -83,7 +83,7 @@ const columns = ref<QTableProps["columns"]>([
{
name: "posMasterNo",
align: "left",
label: "ตำแหน่งเลขที่",
label: "เลขที่ตำแหน่ง",
sortable: true,
field: "posMasterNo",
headerStyle: "font-size: 14px",
@ -96,7 +96,7 @@ const columns = ref<QTableProps["columns"]>([
{
name: "posMasterNoSuffix",
align: "left",
label: "Suffix ตำแหน่งเลขที่",
label: "Suffix เลขที่ตำแหน่ง",
sortable: true,
field: "posMasterNoSuffix",
headerStyle: "font-size: 14px",
@ -118,7 +118,7 @@ const columns = ref<QTableProps["columns"]>([
{
name: "posType",
align: "left",
label: "ประเภทตำแหน่ง",
label: "ตำแหน่งประเภท",
sortable: true,
field: "posType",
format(val, row) {

View file

@ -30,8 +30,8 @@ const prosp = defineProps({
/** formData*/
const formData = reactive<FormDetailPosition>({
positionNo: "", //*
positionType: "", //*
positionNo: "", //*
positionType: "", //*
positionPathSide: "", //*
positionLine: "", //*
positionSide: "", //*/
@ -49,7 +49,7 @@ function close() {
}
/**
* callblack function ทำเมอเป popup set ตำแหนเลขท และสถานะตำแหน
* callblack function ทำเมอเป popup set เลขทตำแหน และสถานะตำแหน
*/
watch(
() => modal.value,
@ -93,7 +93,7 @@ watch(
<div class="row q-col-gutter-sm q-mb-xs">
<div class="col-4 text-bold">
<div>
<p>ตำแหนเลขท</p>
<p>เลขทตำแหน</p>
</div>
</div>
<div class="col-8 text-grey-8">
@ -103,7 +103,7 @@ watch(
<div class="row q-col-gutter-sm q-mb-xs">
<div class="col-4 text-bold">
<div>
<p>ประเภทตำแหน</p>
<p>ตำแหนประเภท</p>
</div>
</div>
<div class="col-8 text-grey-8">

View file

@ -67,20 +67,20 @@ const props = defineProps({
});
const isReadonly = ref<boolean>(false); //
const typeOpsMain = ref<DataOption[]>([]); //
const typeOpsMain = ref<DataOption[]>([]); //
const levelOpsMain = ref<DataOption[]>([]); //
const typeOps = ref<DataOption[]>([]); //
const typeOps = ref<DataOption[]>([]); //
const levelOps = ref<DataOption[]>([]); //
const dataLevel = ref<TypePos[]>([]); //
const dataLevel = ref<TypePos[]>([]); //
const selected = ref<Position[]>([]); //
const isSit = ref<boolean>(false); //
const formData = reactive<FormPositionFilter>({
positionNo: "", //*
positionType: "", //*
positionLevel: "", //*
personal: "", //*
position: "", //*
positionNo: "", //*
positionType: "", //*
positionLevel: "", //*
personal: "", //*
position: "", //*
status: "",
});
@ -228,7 +228,7 @@ const columnsResult = ref<QTableProps["columns"]>([
]);
/**
* function เรยกขอมประเภทตำแหน
* function เรยกขอมตำแหนประเภท
*/
function fetchType() {
showLoader();
@ -321,7 +321,7 @@ const selectedProfile = ref<SeaechResult[]>([]);
function searchData() {
showLoader();
const reqBody = {
posTypeId: formData.positionType, // id
posTypeId: formData.positionType, // id
posLevelId: formData.positionLevel, // id
position: formData.position, //
page: page.value, //*
@ -375,7 +375,7 @@ function clearForm() {
}
/**
* function เคลยรประเภทตำแหนและระดบตำแหน
* function เคลยรตำแหนประเภทและระดบตำแหน
*/
function clearPosition() {
formData.positionType = "";
@ -457,7 +457,7 @@ watch(
<div class="q-px-md">
<div class="row q-col-gutter-sm q-mb-xs">
<div class="text-bold text-body1">
<p>ตำแหนเลขท</p>
<p>เลขทตำแหน</p>
</div>
<div class="text-grey-8 q-ml-sm text-body1">
<p>{{ formData.positionNo }}</p>
@ -582,7 +582,7 @@ watch(
<q-select
ref="positionTypeRef"
:class="inputEdit(isReadonly)"
label="ประเภทตำแหน่ง"
label="ตำแหน่งประเภท"
v-model="formData.positionType"
:options="typeOps"
emit-value

View file

@ -101,7 +101,7 @@ const columns = ref<QTableProps["columns"]>([
{
name: "posMasterNo",
align: "left",
label: "ตำแหน่งเลขที่",
label: "เลขที่ตำแหน่ง",
sortable: true,
field: "posMasterNo",
headerStyle: "font-size: 14px",

View file

@ -159,7 +159,7 @@ const columns = ref<QTableProps["columns"]>([
{
name: "posMasterNo",
align: "left",
label: "ตำแหน่งเลขที่",
label: "เลขที่ตำแหน่ง",
sortable: false,
field: "posMasterNo",
headerStyle: "font-size: 14px",
@ -177,7 +177,7 @@ const columns = ref<QTableProps["columns"]>([
{
name: "posTypeName",
align: "left",
label: "ประเภทตำแหน่ง",
label: "ตำแหน่งประเภท",
sortable: false,
field: "posTypeName",
headerStyle: "font-size: 14px",

View file

@ -81,8 +81,8 @@ interface Position {
id: string; // id ตำแหน่ง
positionName: string; // ชื่อตำแหน่งในสายงาน (ชื่อตำแหน่ง)
positionField: string; // สายงาน
posTypeId: string; // ประเภทตำแหน่ง
posTypeName: string; // ประเภทตำแหน่ง
posTypeId: string; // ตำแหน่งประเภท
posTypeName: string; // ตำแหน่งประเภท
posLevelId: string; // ระดับตำแหน่ง
posLevelName: string; // ระดับตำแหน่ง
posExecutiveId: string; // ตำแหน่งทางการบริหาร
@ -95,13 +95,13 @@ interface Position {
interface PosMaster {
id: string; // id อัตรากำลัง posmaster
orgShortname: string; // อักษรย่อตำแหน่ง
posMasterNoPrefix: string; // Prefix นำหน้าตำแหน่งเลขที่ เป็น Optional (ไม่ใช่อักษรย่อของหน่วยงาน/ส่วนราชการ)
posMasterNo: number | string; // ตำแหน่งเลขที่ เป็นตัวเลข
posMasterNoSuffix: string | null; // Suffix หลังตำแหน่งเลขที่ เช่น ช.
posMasterNoPrefix: string; // Prefix นำหน้าเลขที่ตำแหน่ง เป็น Optional (ไม่ใช่อักษรย่อของหน่วยงาน/ส่วนราชการ)
posMasterNo: number | string; // เลขที่ตำแหน่ง เป็นตัวเลข
posMasterNoSuffix: string | null; // Suffix หลังเลขที่ตำแหน่ง เช่น ช.
positionName: string; // ชื่อตำแหน่งในสายงาน (ชื่อตำแหน่ง)
positionField: string; // สายงาน
posTypeId: string; // ประเภทตำแหน่ง
posTypeName: string; // ประเภทตำแหน่ง
posTypeId: string; // ตำแหน่งประเภท
posTypeName: string; // ตำแหน่งประเภท
posLevelId: string; // ระดับตำแหน่ง
posLevelName: string; // ระดับตำแหน่ง
posExecutiveId: string; // ตำแหน่งทางการบริหาร
@ -124,8 +124,8 @@ interface Position2 {
id: string; // id ตำแหน่ง
positionName: string; // ชื่อตำแหน่งในสายงาน (ชื่อตำแหน่ง)
positionField: string; // สายงาน
posTypeId: string; // ประเภทตำแหน่ง
posTypeName: string; // ประเภทตำแหน่ง
posTypeId: string; // ตำแหน่งประเภท
posTypeName: string; // ตำแหน่งประเภท
posLevelId: string; // ระดับตำแหน่ง
posLevelName: string; // ระดับตำแหน่ง
posExecutiveId: string; // ตำแหน่งทางการบริหาร
@ -138,13 +138,13 @@ interface Position2 {
interface PosMaster2 {
id: string; // id อัตรากำลัง posmaster
orgShortname: string; // อักษรย่อตำแหน่ง
posMasterNoPrefix: string; // Prefix นำหน้าตำแหน่งเลขที่ เป็น Optional (ไม่ใช่อักษรย่อของหน่วยงาน/ส่วนราชการ)
posMasterNo: number | string; // ตำแหน่งเลขที่ เป็นตัวเลข
posMasterNoSuffix: string | null; // Suffix หลังตำแหน่งเลขที่ เช่น ช.
posMasterNoPrefix: string; // Prefix นำหน้าเลขที่ตำแหน่ง เป็น Optional (ไม่ใช่อักษรย่อของหน่วยงาน/ส่วนราชการ)
posMasterNo: number | string; // เลขที่ตำแหน่ง เป็นตัวเลข
posMasterNoSuffix: string | null; // Suffix หลังเลขที่ตำแหน่ง เช่น ช.
positionName: string; // ชื่อตำแหน่งในสายงาน (ชื่อตำแหน่ง)
positionField: string; // สายงาน
posTypeId: string; // ประเภทตำแหน่ง
posTypeName: string; // ประเภทตำแหน่ง
posTypeId: string; // ตำแหน่งประเภท
posTypeName: string; // ตำแหน่งประเภท
posLevelId: string; // ระดับตำแหน่ง
posLevelName: string; // ระดับตำแหน่ง
posExecutiveId: string; // ตำแหน่งทางการบริหาร
@ -165,9 +165,9 @@ interface HistoryPos {
id: string; //id node
orgShotName: string; //ชื่อย่อส่วนราชการ
lastUpdatedAt: Date; //วันที่แก้ไข
posMasterNoPrefix: string; //Prefix นำหน้าตำแหน่งเลขที่ เป็น Optional (ไม่ใช่อักษรย่อของหน่วยงาน/ส่วนราชการ)
posMasterNo: number; //ตำแหน่งเลขที่ เป็นตัวเลข
posMasterNoSuffix: string; //Suffix หลังตำแหน่งเลขที่ เช่น ช.
posMasterNoPrefix: string; //Prefix นำหน้าเลขที่ตำแหน่ง เป็น Optional (ไม่ใช่อักษรย่อของหน่วยงาน/ส่วนราชการ)
posMasterNo: number; //เลขที่ตำแหน่ง เป็นตัวเลข
posMasterNoSuffix: string; //Suffix หลังเลขที่ตำแหน่ง เช่น ช.
}
interface SelectPerson {

View file

@ -71,10 +71,24 @@ const baseColumns = ref<QTableColumn[]>([
.toString()
.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }),
},
{
name: "commandDateSign",
align: "left",
label: "วันที่ลงนาม",
sortable: true,
field: "commandDateSign",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
format: (v) => date2Thai(v),
sort: (a: string, b: string) =>
a
.toString()
.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }),
},
{
name: "posNo",
align: "left",
label: empType.value === "" ? "เลขที่ตำแหน่ง" : "ตำแหน่งเลขที่",
label: empType.value === "-employee" ? "ตำแหน่งเลขที่" : "เลขที่ตำแหน่ง",
sortable: true,
field: "posNo",
headerStyle: "font-size: 14px",
@ -107,7 +121,7 @@ const baseColumns = ref<QTableColumn[]>([
{
name: "positionType",
align: "left",
label: empType.value === "-employee" ? "กลุ่มงาน" : "ประเภทตำแหน่ง",
label: empType.value === "-employee" ? "กลุ่มงาน" : "ตำแหน่งประเภท",
sortable: true,
field: "positionType",
headerStyle: "font-size: 14px",
@ -148,28 +162,6 @@ const baseColumns = ref<QTableColumn[]>([
sort: (a: string, b: string) =>
a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }),
},
{
name: "amount",
align: "left",
label: empType.value === "-employee" ? "ค่าจ้าง" : "เงินเดือน",
sortable: true,
field: "amount",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
format(v, row) {
return row.amount
? `${row.amount.toLocaleString()}${
row.amountSpecial !== 0 && row.amountSpecial
? ` (${row.amountSpecial.toLocaleString()})`
: ""
}`
: "-";
},
sort: (a: string, b: string) =>
a
.toString()
.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }),
},
{
name: "commandNo",
align: "left",
@ -194,26 +186,9 @@ const baseColumns = ref<QTableColumn[]>([
field: "commandCode",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
format(val, row) {
return store.convertCommandCodeName(val);
},
sort: (a: string, b: string) =>
a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }),
},
{
name: "commandDateSign",
align: "left",
label: "วันที่ลงนาม",
sortable: true,
field: "commandDateSign",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
format: (v) => date2Thai(v),
sort: (a: string, b: string) =>
a
.toString()
.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }),
},
{
name: "organization",
align: "left",
@ -234,6 +209,28 @@ const baseColumns = ref<QTableColumn[]>([
sort: (a: string, b: string) =>
a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }),
},
{
name: "amount",
align: "left",
label: empType.value === "-employee" ? "ค่าจ้าง" : "เงินเดือน",
sortable: true,
field: "amount",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
format(v, row) {
return row.amount
? `${row.amount.toLocaleString()}${
row.amountSpecial !== 0 && row.amountSpecial
? ` (${row.amountSpecial.toLocaleString()})`
: ""
}`
: "-";
},
sort: (a: string, b: string) =>
a
.toString()
.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }),
},
{
name: "remark",
align: "left",
@ -243,7 +240,9 @@ const baseColumns = ref<QTableColumn[]>([
headerStyle: "font-size: 14px",
style: "font-size: 14px",
sort: (a: string, b: string) =>
a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }),
a
.toString()
.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }),
},
{
name: "lastUpdateFullName",
@ -298,12 +297,23 @@ const modalCommand = ref<boolean>(false);
const command = ref<string>("");
const commandId = ref<string>("");
const columns = ref<QTableColumn[]>(
baseColumns.value.filter(
const columns = computed<QTableColumn[]>(() => {
if (empType.value === "-employee") {
if (baseColumns.value) {
return baseColumns.value.filter(
(column) =>
column.name !== "positionExecutive" &&
column.name !== "lastUpdateFullName" &&
column.name !== "lastUpdatedAt"
);
}
}
return baseColumns.value.filter(
(e: QTableColumn) =>
e.name !== "lastUpdateFullName" && e.name !== "lastUpdatedAt"
)
);
);
});
const visibleColumns = ref<String[]>(
baseVisibleColumns.value.filter(
(e: string) => e !== "lastUpdateFullName" && e !== "lastUpdatedAt"
@ -339,7 +349,16 @@ const formData = reactive<FormPostition>({
remark: "", //
});
const columnsHistory = ref<QTableColumn[]>(baseColumns.value);
const columnsHistory = computed<QTableColumn[]>(() => {
if (empType.value === "-employee") {
if (baseColumns.value) {
return baseColumns.value.filter(
(column) => column.name !== "positionExecutive"
);
}
}
return baseColumns.value;
});
const visibleColumnsHistory = ref<string[]>(baseVisibleColumns.value);
const modalDialogSalary = ref<boolean>(false); // popup

View file

@ -76,10 +76,24 @@ const baseColumns = ref<QTableColumn[]>([
.toString()
.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }),
},
{
name: "commandDateSign",
align: "left",
label: "วันที่ลงนาม",
sortable: true,
field: "commandDateSign",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
format: (v) => date2Thai(v),
sort: (a: string, b: string) =>
a
.toString()
.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }),
},
{
name: "posNo",
align: "left",
label: empType.value === "" ? "เลขที่ตำแหน่ง" : "ตำแหน่งเลขที่",
label: empType.value === "-employee" ? "ตำแหน่งเลขที่" : "เลขที่ตำแหน่ง",
sortable: true,
field: "posNo",
headerStyle: "font-size: 14px",
@ -112,7 +126,7 @@ const baseColumns = ref<QTableColumn[]>([
{
name: "positionType",
align: "left",
label: empType.value === "-employee" ? "กลุ่มงาน" : "ประเภทตำแหน่ง",
label: empType.value === "-employee" ? "กลุ่มงาน" : "ตำแหน่งประเภท",
sortable: true,
field: "positionType",
headerStyle: "font-size: 14px",
@ -153,56 +167,6 @@ const baseColumns = ref<QTableColumn[]>([
sort: (a: string, b: string) =>
a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }),
},
{
name: "amount",
align: "left",
label: empType.value === "-employee" ? "ค่าจ้าง" : "เงินเดือน",
sortable: true,
field: "amount",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
format(v, row) {
return row.amount
? `${row.amount.toLocaleString()}${
row.amountSpecial !== 0 && row.amountSpecial
? ` (${row.amountSpecial.toLocaleString()})`
: ""
}`
: "-";
},
sort: (a: string, b: string) =>
a
.toString()
.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }),
},
{
name: "positionSalaryAmount",
align: "left",
label: "เงินประจำตำแหน่ง",
sortable: true,
field: "positionSalaryAmount",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
format: (v) => Number(v).toLocaleString(),
sort: (a: string, b: string) =>
a
.toString()
.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }),
},
{
name: "mouthSalaryAmount",
align: "left",
label: "เงินค่าตอบแทนรายเดือน",
sortable: true,
field: "mouthSalaryAmount",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
format: (v) => Number(v).toLocaleString(),
sort: (a: string, b: string) =>
a
.toString()
.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }),
},
{
name: "commandNo",
align: "left",
@ -227,27 +191,9 @@ const baseColumns = ref<QTableColumn[]>([
field: "commandCode",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
format(val, row) {
return store.convertCommandCodeName(val);
},
sort: (a: string, b: string) =>
a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }),
},
{
name: "commandDateSign",
align: "left",
label: "วันที่ลงนาม",
sortable: true,
field: "commandDateSign",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
format: (v) => date2Thai(v),
sort: (a: string, b: string) =>
a
.toString()
.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }),
},
{
name: "organization",
align: "left",
@ -268,6 +214,57 @@ const baseColumns = ref<QTableColumn[]>([
sort: (a: string, b: string) =>
a.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }),
},
{
name: "amount",
align: "left",
label: empType.value === "-employee" ? "ค่าจ้าง" : "เงินเดือน",
sortable: true,
field: "amount",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
format(v, row) {
return row.amount
? `${row.amount.toLocaleString()}${
row.amountSpecial !== 0 && row.amountSpecial
? ` (${row.amountSpecial.toLocaleString()})`
: ""
}`
: "-";
},
sort: (a: string, b: string) =>
a
.toString()
.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }),
},
{
name: "mouthSalaryAmount",
align: "left",
label: "เงินค่าตอบแทนรายเดือน",
sortable: true,
field: "mouthSalaryAmount",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
format: (v) => Number(v).toLocaleString(),
sort: (a: string, b: string) =>
a
.toString()
.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }),
},
{
name: "positionSalaryAmount",
align: "left",
label: "เงินประจำตำแหน่ง",
sortable: true,
field: "positionSalaryAmount",
headerStyle: "font-size: 14px",
style: "font-size: 14px",
format: (v) => Number(v).toLocaleString(),
sort: (a: string, b: string) =>
a
.toString()
.localeCompare(b, undefined, { numeric: true, sensitivity: "base" }),
},
{
name: "remark",
align: "left",

View file

@ -17,6 +17,12 @@ const Page01_Detail = () =>
"@/modules/04_registryPerson/components/requestEdit/Page01_Detail.vue"
);
// edit
const EditListPage = () =>
import("@/modules/04_registryPerson/views/edit/list.vue");
const EditListSalaryPage = () =>
import("@/modules/04_registryPerson/views/edit/salary.vue");
export default [
{
path: "/registry-officer",
@ -120,4 +126,25 @@ export default [
Role: "STAFF",
},
},
// edit registry
{
path: "/registry/edit/list",
name: "registryEdit",
component: EditListPage,
meta: {
Auth: true,
Key: "SYS_REGISTRY_EDIT",
Role: "STAFF",
},
},
{
path: "/registry/edit/salary/:id",
name: "registryEditSalary",
component: EditListSalaryPage,
meta: {
Auth: true,
Key: "SYS_REGISTRY_EDIT",
Role: "STAFF",
},
},
];

View file

@ -0,0 +1,44 @@
<script setup lang="ts">
import { ref, reactive, onMounted, watch, defineAsyncComponent } from "vue";
import { useQuasar } from "quasar";
import http from "@/plugins/http";
import config from "@/app.config";
import { useRegistryNewDataStore } from "@/modules/04_registryPerson/store";
import { useCounterMixin } from "@/stores/mixin";
import { useRoute, useRouter } from "vue-router";
/** importType*/
import type {
DataNodeData,
QueryParams,
} from "@/modules/04_registryPerson/interface/request/Main";
import type {
DataPerson,
DataType,
} from "@/modules/04_registryPerson/interface/response/Main";
const $q = useQuasar();
const store = useRegistryNewDataStore();
const { showLoader, hideLoader, messageError } = useCounterMixin();
const route = useRoute();
const router = useRouter();
const empType = ref<string>("officer"); // officer / employee / perm
const dataPersonMain = ref<DataPerson[]>([]); //
const isLoad = ref<boolean>(false); //
/** hook เมื่อมีการเรียกใช้ Components*/
onMounted(async () => {});
</script>
<template>
<div class="row items-center q-gutter-sm q-mb-xs">
<div class="toptitle text-dark row items-center q-py-xs">
แกไขทะเบยนประว ตำแหน/เงนเดอน
</div>
</div>
</template>
<style scoped></style>

View file

@ -0,0 +1,44 @@
<script setup lang="ts">
import { ref, reactive, onMounted, watch, defineAsyncComponent } from "vue";
import { useQuasar } from "quasar";
import http from "@/plugins/http";
import config from "@/app.config";
import { useRegistryNewDataStore } from "@/modules/04_registryPerson/store";
import { useCounterMixin } from "@/stores/mixin";
import { useRoute, useRouter } from "vue-router";
/** importType*/
import type {
DataNodeData,
QueryParams,
} from "@/modules/04_registryPerson/interface/request/Main";
import type {
DataPerson,
DataType,
} from "@/modules/04_registryPerson/interface/response/Main";
const $q = useQuasar();
const store = useRegistryNewDataStore();
const { showLoader, hideLoader, messageError } = useCounterMixin();
const route = useRoute();
const router = useRouter();
const empType = ref<string>("officer"); // officer / employee / perm
const dataPersonMain = ref<DataPerson[]>([]); //
const isLoad = ref<boolean>(false); //
/** hook เมื่อมีการเรียกใช้ Components*/
onMounted(async () => {});
</script>
<template>
<div class="row items-center q-gutter-sm q-mb-xs">
<div class="toptitle text-dark row items-center q-py-xs">
รายการประวตำแหน/เงนเดอน
</div>
</div>
</template>
<style scoped></style>

View file

@ -118,7 +118,7 @@ const columns = ref<QTableProps["columns"]>([
{
name: "posNo",
align: "left",
label: "ตำแหน่งเลขที่",
label: "เลขที่ตำแหน่ง",
sortable: false,
field: "posNo",
headerStyle: "font-size: 14px",

View file

@ -83,7 +83,7 @@ const columns = ref<QTableProps["columns"]>([
{
name: "profilePostype",
align: "left",
label: "ประเภทตำแหน่ง",
label: "ตำแหน่งประเภท",
sortable: false,
field: "profilePostype",
headerStyle: "font-size: 14px",