137 lines
3.8 KiB
TypeScript
137 lines
3.8 KiB
TypeScript
import { defineStore } from "pinia";
|
|
import { reactive, ref } from "vue";
|
|
|
|
/** importType*/
|
|
import type {
|
|
DataActive,
|
|
SumPosition,
|
|
PosMaster,
|
|
} from "@/modules/02_organizationalNew/interface/response/organizational";
|
|
|
|
export const useOrganizational = defineStore("organizationalStore", () => {
|
|
const typeOrganizational = ref<string>("current");
|
|
const statusView = ref<string>("list");
|
|
|
|
const dataActive = ref<DataActive>();
|
|
const activeId = ref<string>();
|
|
const draftId = ref<string>();
|
|
const treeId = ref<string>();
|
|
const level = ref<number>();
|
|
const isPublic = ref<boolean>(false);
|
|
const orgPublishDate = ref<Date | null>(null);
|
|
const sumPosition = reactive({
|
|
total: 0,
|
|
use: 0,
|
|
vacant: 0,
|
|
totalRoot: 0,
|
|
useRoot: 0,
|
|
vacantRoot: 0,
|
|
});
|
|
|
|
function getSumPosition(data: SumPosition) {
|
|
sumPosition.total = data.totalPosition;
|
|
sumPosition.totalRoot = data.totalRootPosition ? data.totalRootPosition : 0;
|
|
|
|
if (typeOrganizational.value == "draft") {
|
|
sumPosition.use = data.totalPositionNextUse;
|
|
sumPosition.useRoot = data.totalRootPositionNextUse
|
|
? data.totalRootPositionNextUse
|
|
: 0;
|
|
|
|
sumPosition.vacant = data.totalPositionNextVacant;
|
|
sumPosition.vacantRoot = data.totalRootPositionNextVacant
|
|
? data.totalRootPositionNextVacant
|
|
: 0;
|
|
} else {
|
|
sumPosition.use = data.totalPositionCurrentUse;
|
|
sumPosition.useRoot = data.totalRootPositionCurrentUse
|
|
? data.totalRootPositionCurrentUse
|
|
: 0;
|
|
|
|
sumPosition.vacant = data.totalPositionCurrentVacant;
|
|
sumPosition.vacantRoot = data.totalRootPositionCurrentVacant
|
|
? data.totalRootPositionCurrentVacant
|
|
: 0;
|
|
}
|
|
}
|
|
|
|
function fetchDataActive(data: DataActive) {
|
|
activeId.value = data.activeId;
|
|
draftId.value = data.draftId;
|
|
dataActive.value = data;
|
|
isPublic.value = data.isPublic;
|
|
orgPublishDate.value = data.orgPublishDate;
|
|
}
|
|
|
|
function fetchPosMaster(data: PosMaster[]) {
|
|
const newPosMaster = data.map((e: PosMaster) => ({
|
|
...e,
|
|
positionIsSelected:
|
|
typeOrganizational.value === "draft" && e.fullNameNextHolder !== null
|
|
? e.fullNameNextHolder
|
|
: typeOrganizational.value !== "draft" &&
|
|
e.fullNameCurrentHolder !== null
|
|
? e.fullNameCurrentHolder
|
|
: "ว่าง",
|
|
posMasterNo:
|
|
e.orgShortname +
|
|
e.posMasterNoPrefix +
|
|
e.posMasterNo +
|
|
e.posMasterNoSuffix,
|
|
positionName: e.positionName ? e.positionName : "-",
|
|
posTypeName: e.posTypeName ? e.posTypeName : "-",
|
|
posLevelName: e.posLevelName ? e.posLevelName : "-",
|
|
posExecutiveName: e.posExecutiveName ? e.posExecutiveName : "-",
|
|
}));
|
|
return newPosMaster;
|
|
}
|
|
|
|
function checkLevel(type: number) {
|
|
switch (type) {
|
|
case 0:
|
|
return "Root";
|
|
case 1:
|
|
return "Child1";
|
|
case 2:
|
|
return "Child2";
|
|
case 3:
|
|
return "Child3";
|
|
default:
|
|
return "Child4";
|
|
}
|
|
}
|
|
|
|
function convertType(type: string) {
|
|
switch (type) {
|
|
case "DEPARTMENT":
|
|
return "ระดับสำนัก";
|
|
case "OFFICE":
|
|
return "ระดับกอง/สำนักงาน/ส่วนราชการ/โรงพยาบาล/เทียบเท่ากอง";
|
|
case "DIVISION":
|
|
return "ระดับส่วน/กลุ่มภารกิจ";
|
|
case "SECTION":
|
|
return "ระดับฝ่าย/กลุ่มงาน";
|
|
default:
|
|
return "-";
|
|
}
|
|
}
|
|
|
|
return {
|
|
typeOrganizational,
|
|
statusView,
|
|
|
|
//
|
|
fetchDataActive,
|
|
checkLevel,
|
|
convertType,
|
|
draftId,
|
|
activeId,
|
|
treeId,
|
|
level,
|
|
isPublic,
|
|
orgPublishDate,
|
|
fetchPosMaster,
|
|
sumPosition,
|
|
getSumPosition,
|
|
};
|
|
});
|