Merge branch 'develop' into dev
All checks were successful
Build & Deploy on Dev / build (push) Successful in 3m5s
All checks were successful
Build & Deploy on Dev / build (push) Successful in 3m5s
This commit is contained in:
commit
dcfb5ab1a0
7 changed files with 238 additions and 61 deletions
|
|
@ -10,25 +10,25 @@ import type {
|
||||||
} from "@/modules/05_placement/interface/request/Main";
|
} from "@/modules/05_placement/interface/request/Main";
|
||||||
import type { FormOrderPlacementMainData } from "@/modules/05_placement/interface/request/Main";
|
import type { FormOrderPlacementMainData } from "@/modules/05_placement/interface/request/Main";
|
||||||
|
|
||||||
export const useProfileDataStore = defineStore("profilePlacenent", () => {
|
interface profile {
|
||||||
interface profile {
|
main: { columns: String[] };
|
||||||
main: { columns: String[] };
|
education: { columns: String[] };
|
||||||
education: { columns: String[] };
|
certicate: { columns: String[] };
|
||||||
certicate: { columns: String[] };
|
train: { columns: String[] };
|
||||||
train: { columns: String[] };
|
insignia: { columns: String[] };
|
||||||
insignia: { columns: String[] };
|
coined: { columns: String[] };
|
||||||
coined: { columns: String[] };
|
assessment: { columns: String[] };
|
||||||
assessment: { columns: String[] };
|
salary: { columns: String[] };
|
||||||
salary: { columns: String[] };
|
discipline: { columns: String[] };
|
||||||
discipline: { columns: String[] };
|
leave: { columns: String[] };
|
||||||
leave: { columns: String[] };
|
talent: { columns: String[] };
|
||||||
talent: { columns: String[] };
|
work: { columns: String[] };
|
||||||
work: { columns: String[] };
|
record: { columns: String[] };
|
||||||
record: { columns: String[] };
|
other: { columns: String[] };
|
||||||
other: { columns: String[] };
|
document: { columns: String[] };
|
||||||
document: { columns: String[] };
|
}
|
||||||
}
|
|
||||||
|
|
||||||
|
export const useProfileDataStore = defineStore("profilePlacenent", () => {
|
||||||
const birthDate = ref<Date>(new Date());
|
const birthDate = ref<Date>(new Date());
|
||||||
const retireText = ref<string | null>(null);
|
const retireText = ref<string | null>(null);
|
||||||
const changeRetireText = (val: string | null) => {
|
const changeRetireText = (val: string | null) => {
|
||||||
|
|
@ -87,15 +87,15 @@ export const useProfileDataStore = defineStore("profilePlacenent", () => {
|
||||||
changeRetireText,
|
changeRetireText,
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
interface placement {
|
||||||
|
mappingPosition: { columns: String[] };
|
||||||
|
}
|
||||||
export const usePlacementDataStore = defineStore("placement", () => {
|
export const usePlacementDataStore = defineStore("placement", () => {
|
||||||
const mixin = useCounterMixin(); //เรียกฟังก์ชันกลาง
|
const mixin = useCounterMixin(); //เรียกฟังก์ชันกลาง
|
||||||
const tabsMain = ref<string>("probation");
|
const tabsMain = ref<string>("probation");
|
||||||
const isOfficer = ref<boolean | null>(null);
|
const isOfficer = ref<boolean | null>(null);
|
||||||
const isStaff = ref<boolean | null>(null);
|
const isStaff = ref<boolean | null>(null);
|
||||||
const { hideLoader } = mixin;
|
const { hideLoader } = mixin;
|
||||||
interface placement {
|
|
||||||
mappingPosition: { columns: String[] };
|
|
||||||
}
|
|
||||||
const placementData = ref<placement>({
|
const placementData = ref<placement>({
|
||||||
mappingPosition: { columns: [] },
|
mappingPosition: { columns: [] },
|
||||||
});
|
});
|
||||||
|
|
@ -218,10 +218,10 @@ export const usePlacementDataStore = defineStore("placement", () => {
|
||||||
isStaff,
|
isStaff,
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
interface placementOrder {
|
||||||
|
mappingPosition: { columns: String[] };
|
||||||
|
}
|
||||||
export const useOrderPlacementDataStore = defineStore("placementOrder", () => {
|
export const useOrderPlacementDataStore = defineStore("placementOrder", () => {
|
||||||
interface placementOrder {
|
|
||||||
mappingPosition: { columns: String[] };
|
|
||||||
}
|
|
||||||
const placementOrderData = ref<placementOrder>({
|
const placementOrderData = ref<placementOrder>({
|
||||||
mappingPosition: { columns: [] },
|
mappingPosition: { columns: [] },
|
||||||
});
|
});
|
||||||
|
|
@ -369,6 +369,8 @@ export const useTransferDataStore = defineStore("transferDataStore", () => {
|
||||||
]);
|
]);
|
||||||
const statusOp = ref<DataOptions[]>(statusMainOp.value);
|
const statusOp = ref<DataOptions[]>(statusMainOp.value);
|
||||||
|
|
||||||
|
const statusDelete = ["REPORT", "WAITING", "DONE"];
|
||||||
|
|
||||||
const statusText = (val: string) => {
|
const statusText = (val: string) => {
|
||||||
switch (val) {
|
switch (val) {
|
||||||
case "WAITTING":
|
case "WAITTING":
|
||||||
|
|
@ -438,5 +440,6 @@ export const useTransferDataStore = defineStore("transferDataStore", () => {
|
||||||
statusOp,
|
statusOp,
|
||||||
statusMainOp,
|
statusMainOp,
|
||||||
filterOption,
|
filterOption,
|
||||||
|
statusDelete,
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
import { ref, onMounted, computed } from "vue";
|
import { ref, onMounted, computed } from "vue";
|
||||||
import { useQuasar } from "quasar";
|
import { useQuasar } from "quasar";
|
||||||
|
|
||||||
import { useRouter } from "vue-router";
|
import { useRouter, useRoute } from "vue-router";
|
||||||
import {
|
import {
|
||||||
checkPermission,
|
checkPermission,
|
||||||
checkPermissionList,
|
checkPermissionList,
|
||||||
|
|
@ -20,11 +20,19 @@ import DialogOrders from "@/modules/05_placement/components/Transfer/DialogOrder
|
||||||
|
|
||||||
const $q = useQuasar();
|
const $q = useQuasar();
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
|
const route = useRoute();
|
||||||
const mixin = useCounterMixin();
|
const mixin = useCounterMixin();
|
||||||
const store = useTransferDataStore();
|
const store = useTransferDataStore();
|
||||||
const { statusText, filterOption } = useTransferDataStore();
|
const { statusText, filterOption } = useTransferDataStore();
|
||||||
const { date2Thai, messageError, showLoader, hideLoader, onSearchDataTable } =
|
const {
|
||||||
mixin;
|
date2Thai,
|
||||||
|
messageError,
|
||||||
|
showLoader,
|
||||||
|
hideLoader,
|
||||||
|
onSearchDataTable,
|
||||||
|
dialogRemove,
|
||||||
|
success,
|
||||||
|
} = mixin;
|
||||||
|
|
||||||
const modal = ref<boolean>(false); //ส่งไปออกคำสั่ง
|
const modal = ref<boolean>(false); //ส่งไปออกคำสั่ง
|
||||||
const dataTransfer = ref<ResponseData[]>([]); //ช่อมูลรายการขอโอน
|
const dataTransfer = ref<ResponseData[]>([]); //ช่อมูลรายการขอโอน
|
||||||
|
|
@ -141,6 +149,15 @@ const visibleColumns = ref<string[]>([
|
||||||
"createdAt",
|
"createdAt",
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
const isPermissionDelete = computed(() => {
|
||||||
|
return (status: string) => {
|
||||||
|
return (
|
||||||
|
checkPermission(route)?.attrOwnership === "OWNER" &&
|
||||||
|
!store.statusDelete.includes(status)
|
||||||
|
);
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
/** ฟังก์ชันดึงข้อมูรายการขอโอน*/
|
/** ฟังก์ชันดึงข้อมูรายการขอโอน*/
|
||||||
async function fetchData() {
|
async function fetchData() {
|
||||||
showLoader();
|
showLoader();
|
||||||
|
|
@ -194,6 +211,21 @@ function onSearch() {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function handleDelete(id: string) {
|
||||||
|
dialogRemove($q, async () => {
|
||||||
|
try {
|
||||||
|
showLoader();
|
||||||
|
await http.delete(config.API.transfer + `/admin/${id}`);
|
||||||
|
await fetchData();
|
||||||
|
success($q, "ลบข้อมูลสำเร็จ");
|
||||||
|
} catch (error) {
|
||||||
|
messageError($q, error);
|
||||||
|
} finally {
|
||||||
|
hideLoader();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ทำงานเมื่อ Components ถูกเรียกใช้งาน
|
* ทำงานเมื่อ Components ถูกเรียกใช้งาน
|
||||||
* จะเรียกใช้ fetchData เพื่อดึงข้อมูลรายการขอโอน
|
* จะเรียกใช้ fetchData เพื่อดึงข้อมูลรายการขอโอน
|
||||||
|
|
@ -337,6 +369,18 @@ onMounted(async () => {
|
||||||
>
|
>
|
||||||
<q-tooltip>รายละเอียด</q-tooltip>
|
<q-tooltip>รายละเอียด</q-tooltip>
|
||||||
</q-btn>
|
</q-btn>
|
||||||
|
|
||||||
|
<q-btn
|
||||||
|
v-if="isPermissionDelete(props.row.status)"
|
||||||
|
flat
|
||||||
|
round
|
||||||
|
dense
|
||||||
|
icon="mdi-delete"
|
||||||
|
color="red"
|
||||||
|
@click.prevent="handleDelete(props.row.id)"
|
||||||
|
>
|
||||||
|
<q-tooltip>ลบข้อมูล</q-tooltip>
|
||||||
|
</q-btn>
|
||||||
</q-td>
|
</q-td>
|
||||||
<q-td v-for="col in props.cols" :key="col.id">
|
<q-td v-for="col in props.cols" :key="col.id">
|
||||||
<div v-if="col.name === 'no'">
|
<div v-if="col.name === 'no'">
|
||||||
|
|
|
||||||
|
|
@ -313,7 +313,7 @@ function openDelete(id: string) {
|
||||||
dialogRemove($q, async () => {
|
dialogRemove($q, async () => {
|
||||||
showLoader();
|
showLoader();
|
||||||
await http
|
await http
|
||||||
.delete(config.API.receiveDataId(id))
|
.delete(config.API.receiveData() + `/admin/${id}`)
|
||||||
.then(async () => {
|
.then(async () => {
|
||||||
await fecthlistRecevice();
|
await fecthlistRecevice();
|
||||||
await success($q, "ลบข้อมูลสำเร็จ");
|
await success($q, "ลบข้อมูลสำเร็จ");
|
||||||
|
|
@ -606,8 +606,10 @@ onMounted(async () => {
|
||||||
|
|
||||||
<q-item
|
<q-item
|
||||||
v-if="
|
v-if="
|
||||||
checkPermission($route)?.attrIsDelete &&
|
checkPermission($route)?.attrOwnership ===
|
||||||
|
'OWNER' &&
|
||||||
props.row.status !== 'REPORT' &&
|
props.row.status !== 'REPORT' &&
|
||||||
|
props.row.status !== 'WAITING' &&
|
||||||
props.row.status !== 'DONE'
|
props.row.status !== 'DONE'
|
||||||
"
|
"
|
||||||
clickable
|
clickable
|
||||||
|
|
|
||||||
|
|
@ -33,7 +33,8 @@ const {
|
||||||
showLoader,
|
showLoader,
|
||||||
hideLoader,
|
hideLoader,
|
||||||
onSearchDataTable,
|
onSearchDataTable,
|
||||||
findOrgName,
|
dialogRemove,
|
||||||
|
success,
|
||||||
} = mixin;
|
} = mixin;
|
||||||
|
|
||||||
/** Table */
|
/** Table */
|
||||||
|
|
@ -257,6 +258,21 @@ function onSearch() {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function handleDelete(id: string) {
|
||||||
|
dialogRemove($q, async () => {
|
||||||
|
try {
|
||||||
|
showLoader();
|
||||||
|
await http.delete(config.API.listResign() + `/admin/${id}`);
|
||||||
|
await fecthlist();
|
||||||
|
success($q, "ลบข้อมูลสำเร็จ");
|
||||||
|
} catch (error) {
|
||||||
|
messageError($q, error);
|
||||||
|
} finally {
|
||||||
|
hideLoader();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
/**Hook */
|
/**Hook */
|
||||||
onMounted(async () => {
|
onMounted(async () => {
|
||||||
status.value = stroeResign.formQurey.status;
|
status.value = stroeResign.formQurey.status;
|
||||||
|
|
@ -308,7 +324,11 @@ onMounted(async () => {
|
||||||
color="primary"
|
color="primary"
|
||||||
icon="mdi-account-arrow-right"
|
icon="mdi-account-arrow-right"
|
||||||
>
|
>
|
||||||
<q-tooltip>{{ `ส่งไปออกคำสั่ง${stroeResign.mainTabs == '2'?"ยกเลิกการ":''}ลาออก` }}</q-tooltip>
|
<q-tooltip>{{
|
||||||
|
`ส่งไปออกคำสั่ง${
|
||||||
|
stroeResign.mainTabs == "2" ? "ยกเลิกการ" : ""
|
||||||
|
}ลาออก`
|
||||||
|
}}</q-tooltip>
|
||||||
</q-btn>
|
</q-btn>
|
||||||
</div>
|
</div>
|
||||||
<q-space />
|
<q-space />
|
||||||
|
|
@ -393,6 +413,26 @@ onMounted(async () => {
|
||||||
>
|
>
|
||||||
<q-tooltip>แก้ไขข้อมูล</q-tooltip>
|
<q-tooltip>แก้ไขข้อมูล</q-tooltip>
|
||||||
</q-btn>
|
</q-btn>
|
||||||
|
|
||||||
|
<q-btn
|
||||||
|
v-if="
|
||||||
|
checkPermission($route)?.attrOwnership === 'OWNER' &&
|
||||||
|
props.row.status !== 'REPORT' &&
|
||||||
|
props.row.status !== 'WAITING' &&
|
||||||
|
props.row.status !== 'DONE' &&
|
||||||
|
props.row.status !== 'CANCELING' &&
|
||||||
|
props.row.status !== 'CANCEL' &&
|
||||||
|
stroeResign.mainTabs === '1'
|
||||||
|
"
|
||||||
|
flat
|
||||||
|
dense
|
||||||
|
round
|
||||||
|
color="red"
|
||||||
|
icon="delete"
|
||||||
|
@click.prevent="handleDelete(props.row.id)"
|
||||||
|
>
|
||||||
|
<q-tooltip>ลบข้อมูล</q-tooltip>
|
||||||
|
</q-btn>
|
||||||
</q-td>
|
</q-td>
|
||||||
<q-td v-for="col in props.cols" :key="col.id">
|
<q-td v-for="col in props.cols" :key="col.id">
|
||||||
<div
|
<div
|
||||||
|
|
|
||||||
|
|
@ -27,8 +27,15 @@ const stroeResign = useDataStore();
|
||||||
const { statusText } = stroe;
|
const { statusText } = stroe;
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
const mixin = useCounterMixin();
|
const mixin = useCounterMixin();
|
||||||
const { messageError, date2Thai, showLoader, hideLoader, onSearchDataTable } =
|
const {
|
||||||
mixin;
|
messageError,
|
||||||
|
date2Thai,
|
||||||
|
showLoader,
|
||||||
|
hideLoader,
|
||||||
|
onSearchDataTable,
|
||||||
|
dialogRemove,
|
||||||
|
success,
|
||||||
|
} = mixin;
|
||||||
|
|
||||||
/** Table */
|
/** Table */
|
||||||
const rows = ref<ResponseItems[]>([]);
|
const rows = ref<ResponseItems[]>([]);
|
||||||
|
|
@ -129,7 +136,7 @@ const columns = ref<QTableProps["columns"]>([
|
||||||
sortable: true,
|
sortable: true,
|
||||||
field: "status",
|
field: "status",
|
||||||
format(val, row) {
|
format(val, row) {
|
||||||
return stroeResign.mainTabs === "1"
|
return stroeResign.mainTabsEMP === "1"
|
||||||
? statusText(row.status)
|
? statusText(row.status)
|
||||||
: statusText(row.status, "อนุญาต");
|
: statusText(row.status, "อนุญาต");
|
||||||
},
|
},
|
||||||
|
|
@ -252,6 +259,21 @@ function onSearch() {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function handleDelete(id: string) {
|
||||||
|
dialogRemove($q, async () => {
|
||||||
|
try {
|
||||||
|
showLoader();
|
||||||
|
await http.delete(config.API.listResignEMP() + `/admin/${id}`);
|
||||||
|
await fecthlist();
|
||||||
|
success($q, "ลบข้อมูลสำเร็จ");
|
||||||
|
} catch (error) {
|
||||||
|
messageError($q, error);
|
||||||
|
} finally {
|
||||||
|
hideLoader();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
/**Hook */
|
/**Hook */
|
||||||
onMounted(async () => {
|
onMounted(async () => {
|
||||||
statusEMP.value = stroeResign.formQureyEMP.status;
|
statusEMP.value = stroeResign.formQureyEMP.status;
|
||||||
|
|
@ -391,6 +413,26 @@ onMounted(async () => {
|
||||||
>
|
>
|
||||||
<q-tooltip>แก้ไขข้อมูล</q-tooltip>
|
<q-tooltip>แก้ไขข้อมูล</q-tooltip>
|
||||||
</q-btn>
|
</q-btn>
|
||||||
|
|
||||||
|
<q-btn
|
||||||
|
v-if="
|
||||||
|
checkPermission($route)?.attrOwnership === 'OWNER' &&
|
||||||
|
props.row.status !== 'REPORT' &&
|
||||||
|
props.row.status !== 'WAITING' &&
|
||||||
|
props.row.status !== 'DONE' &&
|
||||||
|
props.row.status !== 'CANCELING' &&
|
||||||
|
props.row.status !== 'CANCEL' &&
|
||||||
|
stroeResign.mainTabsEMP === '1'
|
||||||
|
"
|
||||||
|
flat
|
||||||
|
dense
|
||||||
|
round
|
||||||
|
color="red"
|
||||||
|
icon="delete"
|
||||||
|
@click.prevent="handleDelete(props.row.id)"
|
||||||
|
>
|
||||||
|
<q-tooltip>ลบข้อมูล</q-tooltip>
|
||||||
|
</q-btn>
|
||||||
</q-td>
|
</q-td>
|
||||||
<q-td v-for="col in props.cols" :key="col.id">
|
<q-td v-for="col in props.cols" :key="col.id">
|
||||||
<div
|
<div
|
||||||
|
|
|
||||||
|
|
@ -1,17 +1,59 @@
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { ref, onMounted, watch } from "vue";
|
import { ref, onMounted, computed } from "vue";
|
||||||
|
import { useQuasar } from "quasar";
|
||||||
import type { QTableProps } from "quasar";
|
import type { QTableProps } from "quasar";
|
||||||
import { useRouter } from "vue-router";
|
import { useRouter, useRoute } from "vue-router";
|
||||||
|
|
||||||
import { checkPermission } from "@/utils/permissions";
|
import { checkPermission } from "@/utils/permissions";
|
||||||
import { useLeavelistDataStore } from "@/modules/09_leave/stores/LeaveStore";
|
import { useLeavelistDataStore } from "@/modules/09_leave/stores/LeaveStore";
|
||||||
|
import { useCounterMixin } from "@/stores/mixin";
|
||||||
|
import http from "@/plugins/http";
|
||||||
|
import config from "@/app.config";
|
||||||
|
|
||||||
|
const $q = useQuasar();
|
||||||
const leaveStore = useLeavelistDataStore();
|
const leaveStore = useLeavelistDataStore();
|
||||||
|
const route = useRoute();
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
|
const { showLoader, hideLoader, messageError, dialogRemove, success } =
|
||||||
|
useCounterMixin();
|
||||||
|
|
||||||
const total = defineModel<number>("total", { required: true });
|
const total = defineModel<number>("total", { required: true });
|
||||||
const totalList = defineModel<number>("totalList", { required: true });
|
const totalList = defineModel<number>("totalList", { required: true });
|
||||||
const pagination = defineModel<any>("pagination", { required: true });
|
const pagination = defineModel<any>("pagination", { required: true });
|
||||||
|
const props = defineProps({
|
||||||
|
getList: Function,
|
||||||
|
rows: {
|
||||||
|
type: Object,
|
||||||
|
require: true,
|
||||||
|
},
|
||||||
|
page: {
|
||||||
|
type: Number,
|
||||||
|
require: true,
|
||||||
|
},
|
||||||
|
rowsPerPage: {
|
||||||
|
type: Number,
|
||||||
|
require: true,
|
||||||
|
},
|
||||||
|
maxPage: {
|
||||||
|
type: Number,
|
||||||
|
require: true,
|
||||||
|
},
|
||||||
|
totalList: {
|
||||||
|
type: Number,
|
||||||
|
require: true,
|
||||||
|
},
|
||||||
|
dataToobar: Object,
|
||||||
|
});
|
||||||
|
|
||||||
|
const isPermissionDelete = computed(() => {
|
||||||
|
return (status: string) => {
|
||||||
|
return (
|
||||||
|
checkPermission(route)?.attrOwnership === "OWNER" &&
|
||||||
|
!leaveStore.statusDelete.includes(status) &&
|
||||||
|
leaveStore.tabMenu === "1"
|
||||||
|
);
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
/** ข้อมูลหัวตาราง รายการลา */
|
/** ข้อมูลหัวตาราง รายการลา */
|
||||||
const columnsLeave = ref<QTableProps["columns"]>([
|
const columnsLeave = ref<QTableProps["columns"]>([
|
||||||
|
|
@ -212,31 +254,6 @@ const visibleReject = ref<string[]>([
|
||||||
"status",
|
"status",
|
||||||
]);
|
]);
|
||||||
|
|
||||||
const props = defineProps({
|
|
||||||
getList: Function,
|
|
||||||
rows: {
|
|
||||||
type: Object,
|
|
||||||
require: true,
|
|
||||||
},
|
|
||||||
page: {
|
|
||||||
type: Number,
|
|
||||||
require: true,
|
|
||||||
},
|
|
||||||
rowsPerPage: {
|
|
||||||
type: Number,
|
|
||||||
require: true,
|
|
||||||
},
|
|
||||||
maxPage: {
|
|
||||||
type: Number,
|
|
||||||
require: true,
|
|
||||||
},
|
|
||||||
totalList: {
|
|
||||||
type: Number,
|
|
||||||
require: true,
|
|
||||||
},
|
|
||||||
dataToobar: Object,
|
|
||||||
});
|
|
||||||
|
|
||||||
/** ไปหน้ารายละเอียด */
|
/** ไปหน้ารายละเอียด */
|
||||||
function redirectToDetail(id: string) {
|
function redirectToDetail(id: string) {
|
||||||
const routePrefix = leaveStore.tabMenu === "1" ? "/leave" : "/leave-reject";
|
const routePrefix = leaveStore.tabMenu === "1" ? "/leave" : "/leave-reject";
|
||||||
|
|
@ -264,6 +281,21 @@ function getStatusColor(statusText: string) {
|
||||||
return statusMap[statusText.toUpperCase()] ?? "";
|
return statusMap[statusText.toUpperCase()] ?? "";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function handleDelete(id: string) {
|
||||||
|
dialogRemove($q, async () => {
|
||||||
|
try {
|
||||||
|
showLoader();
|
||||||
|
await http.delete(config.API.leaveList() + `/${id}`);
|
||||||
|
await props.getList?.();
|
||||||
|
success($q, "ลบข้อมูลสำเร็จ");
|
||||||
|
} catch (error) {
|
||||||
|
messageError($q, error);
|
||||||
|
} finally {
|
||||||
|
hideLoader();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
/** Hook*/
|
/** Hook*/
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
if (leaveStore.tabMenu === "1") {
|
if (leaveStore.tabMenu === "1") {
|
||||||
|
|
@ -313,6 +345,17 @@ onMounted(() => {
|
||||||
>
|
>
|
||||||
<q-tooltip>รายละเอียด</q-tooltip>
|
<q-tooltip>รายละเอียด</q-tooltip>
|
||||||
</q-btn>
|
</q-btn>
|
||||||
|
<q-btn
|
||||||
|
v-if="isPermissionDelete(props.row.statusText)"
|
||||||
|
flat
|
||||||
|
round
|
||||||
|
dense
|
||||||
|
icon="mdi-delete"
|
||||||
|
color="red"
|
||||||
|
@click.prevent="handleDelete(props.row.id)"
|
||||||
|
>
|
||||||
|
<q-tooltip>ลบข้อมูล</q-tooltip>
|
||||||
|
</q-btn>
|
||||||
</q-td>
|
</q-td>
|
||||||
<q-td
|
<q-td
|
||||||
v-for="col in props.cols"
|
v-for="col in props.cols"
|
||||||
|
|
|
||||||
|
|
@ -44,6 +44,8 @@ export const useLeavelistDataStore = defineStore("leave", () => {
|
||||||
|
|
||||||
const leaveType = ref<LeaveType[]>([]);
|
const leaveType = ref<LeaveType[]>([]);
|
||||||
|
|
||||||
|
const statusDelete = ["APPROVE", "DELETING", "DELETE"];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ฟังก์ชั่น fetchListLeave
|
* ฟังก์ชั่น fetchListLeave
|
||||||
* @param data รับข้อมูลจาก Page
|
* @param data รับข้อมูลจาก Page
|
||||||
|
|
@ -264,5 +266,6 @@ export const useLeavelistDataStore = defineStore("leave", () => {
|
||||||
leaveTypeOption,
|
leaveTypeOption,
|
||||||
leaveTypeList,
|
leaveTypeList,
|
||||||
fetchKeycloakPosition,
|
fetchKeycloakPosition,
|
||||||
|
statusDelete,
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue