feat(leave): add delete
This commit is contained in:
parent
660fed8375
commit
ce9d8be1b2
2 changed files with 75 additions and 27 deletions
|
|
@ -1,17 +1,58 @@
|
||||||
<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 } =
|
||||||
|
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)
|
||||||
|
);
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
/** ข้อมูลหัวตาราง รายการลา */
|
/** ข้อมูลหัวตาราง รายการลา */
|
||||||
const columnsLeave = ref<QTableProps["columns"]>([
|
const columnsLeave = ref<QTableProps["columns"]>([
|
||||||
|
|
@ -212,31 +253,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 +280,24 @@ function getStatusColor(statusText: string) {
|
||||||
return statusMap[statusText.toUpperCase()] ?? "";
|
return statusMap[statusText.toUpperCase()] ?? "";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function handleDelete(id: string) {
|
||||||
|
dialogRemove(q, async () => {
|
||||||
|
try {
|
||||||
|
showLoader();
|
||||||
|
const API =
|
||||||
|
leaveStore.tabMenu === "1"
|
||||||
|
? config.API.leaveList()
|
||||||
|
: config.API.leaveListDelete();
|
||||||
|
await http.delete(API + `/${id}`);
|
||||||
|
await props.getList?.();
|
||||||
|
} catch (error) {
|
||||||
|
messageError(q, error);
|
||||||
|
} finally {
|
||||||
|
hideLoader();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
/** Hook*/
|
/** Hook*/
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
if (leaveStore.tabMenu === "1") {
|
if (leaveStore.tabMenu === "1") {
|
||||||
|
|
@ -313,6 +347,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