-import { ref, onMounted, watch } from "vue";
+import { ref, onMounted, computed } from "vue";
+import { useQuasar } from "quasar";
import type { QTableProps } from "quasar";
-import { useRouter } from "vue-router";
+import { useRouter, useRoute } from "vue-router";
import { checkPermission } from "@/utils/permissions";
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 route = useRoute();
const router = useRouter();
+const { showLoader, hideLoader, messageError, dialogRemove, success } =
+ useCounterMixin();
const total = defineModel
("total", { required: true });
const totalList = defineModel("totalList", { required: true });
const pagination = defineModel("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([
@@ -212,31 +254,6 @@ const visibleReject = ref([
"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) {
const routePrefix = leaveStore.tabMenu === "1" ? "/leave" : "/leave-reject";
@@ -264,6 +281,21 @@ function getStatusColor(statusText: string) {
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*/
onMounted(() => {
if (leaveStore.tabMenu === "1") {
@@ -313,6 +345,17 @@ onMounted(() => {
>
รายละเอียด
+
+ ลบข้อมูล
+
{
const leaveType = ref([]);
+ const statusDelete = ["APPROVE", "DELETING", "DELETE"];
+
/**
* ฟังก์ชั่น fetchListLeave
* @param data รับข้อมูลจาก Page
@@ -264,5 +266,6 @@ export const useLeavelistDataStore = defineStore("leave", () => {
leaveTypeOption,
leaveTypeList,
fetchKeycloakPosition,
+ statusDelete,
};
});