hrms-mgt/src/stores/structureTree.ts

56 lines
1.4 KiB
TypeScript
Raw Normal View History

import { defineStore } from "pinia";
import { ref } from "vue";
import { useQuasar } from "quasar";
import http from "@/plugins/http";
import config from "@/app.config";
import { useCounterMixin } from "@/stores/mixin";
const $q = useQuasar();
const { showLoader, hideLoader, messageError } = useCounterMixin();
export const useStructureTree = defineStore("structureTree", () => {
const activeId = ref<string>("");
const dataStore = ref<{ [key: string]: any[] }>({});
async function fetchStructureTree(sysKey: string) {
if (dataStore.value[sysKey]) {
return dataStore.value[sysKey] || [];
} else {
activeId.value === "" && (await fetchActive());
const data = await fetchData(sysKey);
return data || [];
}
}
async function fetchActive() {
try {
const res = await http.get(config.API.activeOrganization);
const data = res.data.result;
activeId.value = data.activeId;
} catch (err) {
messageError($q, err);
}
}
async function fetchData(sysKey: string) {
// showLoader();
try {
const res = await http.get(
config.API.orgByIdSystem(activeId.value, sysKey)
);
const data = res.data.result;
dataStore.value[sysKey] = data;
return data;
} catch (err) {
messageError($q, err);
} finally {
hideLoader();
}
}
return {
fetchStructureTree,
};
});