Merge branch 'develop' into devTee
This commit is contained in:
commit
94b3d48a91
15 changed files with 314 additions and 183 deletions
|
|
@ -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 || `${'กรุณาเลือกตำแหน่งประเภท'}`]
|
||||
: []
|
||||
"
|
||||
/>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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">
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -101,7 +101,7 @@ const columns = ref<QTableProps["columns"]>([
|
|||
{
|
||||
name: "posMasterNo",
|
||||
align: "left",
|
||||
label: "ตำแหน่งเลขที่",
|
||||
label: "เลขที่ตำแหน่ง",
|
||||
sortable: true,
|
||||
field: "posMasterNo",
|
||||
headerStyle: "font-size: 14px",
|
||||
|
|
|
|||
|
|
@ -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",
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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 ตำแหน่งเงินเดือน
|
||||
|
|
|
|||
|
|
@ -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",
|
||||
|
|
|
|||
|
|
@ -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",
|
||||
},
|
||||
},
|
||||
];
|
||||
|
|
|
|||
44
src/modules/04_registryPerson/views/edit/list.vue
Normal file
44
src/modules/04_registryPerson/views/edit/list.vue
Normal 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>
|
||||
44
src/modules/04_registryPerson/views/edit/salary.vue
Normal file
44
src/modules/04_registryPerson/views/edit/salary.vue
Normal 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>
|
||||
|
|
@ -118,7 +118,7 @@ const columns = ref<QTableProps["columns"]>([
|
|||
{
|
||||
name: "posNo",
|
||||
align: "left",
|
||||
label: "ตำแหน่งเลขที่",
|
||||
label: "เลขที่ตำแหน่ง",
|
||||
sortable: false,
|
||||
field: "posNo",
|
||||
headerStyle: "font-size: 14px",
|
||||
|
|
|
|||
|
|
@ -83,7 +83,7 @@ const columns = ref<QTableProps["columns"]>([
|
|||
{
|
||||
name: "profilePostype",
|
||||
align: "left",
|
||||
label: "ประเภทตำแหน่ง",
|
||||
label: "ตำแหน่งประเภท",
|
||||
sortable: false,
|
||||
field: "profilePostype",
|
||||
headerStyle: "font-size: 14px",
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue