Files
sk_fems_ui/store/modules/menu.js
2025-07-25 12:36:03 +09:00

125 lines
3.3 KiB
JavaScript

//const DOMAIN = "http://dotest.kfems.kr:9997/";
const DOMAIN = '';
// const DOMAIN = "/";
const ROUTE_URL = {
myIndex: '/',
};
export const state = () => Object.assign({}, ROUTE_URL);
export const actions = {
// 사업장 목록 조회 selectBlocMstrCodeList
// getBlocMstrList({ state, dispatch, commit }, payload) {
// const res = this.$axios.post(
// DOMAIN + "comm/MenuMngCtr/selectMenu",
// payload || {}
// );
// res
// .then(value => {
// // dispatch("addInx", value.data.dataset.blocCodeLists).then(list => {
// // commit(
// // "setPageData",
// // { blocMstrList: list, blocCd: 0 },
// // { root: true }
// // );
// // });
// })
// .catch(error => console.log(error));
// // .finally(() => console.log("end"));
// },
async getMenu({ state, dispatch, commit }, payload) {
// console.log(payload);
const headers = {
headers: {
'X-Fems-MenuId': 'MNU0001',
},
};
const params = { params: payload || {} };
const res = await this.$axios.post(
DOMAIN + 'comm/base/MenuMngCtr/selectAuthMenu',
params,
headers,
);
// const params = { params: payload || {} };
// const res = await this.$axios.post(
// DOMAIN + "comm/MenuMngCtr/selectMenu",
// params
// );
// console.log(res);
const list = res.data.dataset.menuList;
let myMenu = [];
if (list.length > 0) {
myMenu = list
// .filter(ele => {
// return ele.useFg === "1";
// }) // 사용 설정된것만 => 실제로 사용되는 값만 들어오면 삭제
.map((item, i) => ({
...item,
id: item.prgmId || i,
upMenuId: item.upMenuId || item.menuNm,
// title: item.menuNm
// icon: '', // 아이콘은,. 값을 받아오지 않는 이상 별도로 상수화해서 prgmId 값을 키로 꺼내써야 할듯,
to: state[item.prgmId],
// to: '' // 경로는,. 값을 받아오지 않는 이상 아이콘과 마찬가지로 짝지어 상수화 하거나 sysDivCd, prgmId 값 등을 이용해 조합해서 route를 구성해야 할듯,
}));
// console.log("myMenu::", myMenu);
}
dispatch('setMenuTree', myMenu);
commit(
'setMenuItems',
myMenu.reduce(
(acc, it) => ({
...acc,
[it.prgmId]: it,
}),
{},
),
{ root: true },
);
},
// 메뉴 트리 세팅
async setMenuTree({ commit }, payload) {
// console.log("setTree::res = ", res);
let tmpLsit = [];
if (payload.length > 0) {
tmpLsit = payload
.map(item => ({
...item,
children: [],
}))
.reduce(
// 동일한 부모를 가진 object 끼리 묶기
(acc, it) => ({
...acc,
[it.upMenuId]: acc[it.upMenuId] ? [...acc[it.upMenuId], it] : [it],
}),
{},
);
Object.getOwnPropertyNames(tmpLsit)
.reverse()
.forEach(function(val, idx, array) {
array.map(obj => {
tmpLsit[obj].filter(v => {
if (val === v.menuId) {
// 부모 키와 동일한 값을 가지고 있는 목록의 children 에 추가
v.children = tmpLsit[val];
}
if (val === obj && v.children.length === 0) {
// 자식이 없느면 삭제
delete v.children;
}
});
});
});
}
// console.log(tmpLsit["0"]);
commit('setTreevieItems', tmpLsit['0'], { root: true });
},
};