Files
xgy-oa/klp-ui/src/store/modules/category.js
2025-07-30 10:53:06 +08:00

75 lines
1.8 KiB
JavaScript

import { listCategory } from '@/api/wms/category';
import { listProduct } from '@/api/wms/product';
import { listRawMaterial } from '@/api/wms/rawMaterial';
const state = {
categoryList: [],
productMap: {},
rawMaterialMap: {},
productList: [],
rawMaterialList: []
};
const mutations = {
SET_CATEGORY_LIST(state, list) {
state.categoryList = list;
},
SET_PRODUCT_MAP(state, map) {
state.productMap = map;
},
SET_RAW_MATERIAL_MAP(state, map) {
state.rawMaterialMap = map;
},
SET_PRODUCT_LIST(state, list) {
state.productList = list;
},
SET_RAW_MATERIAL_LIST(state, list) {
state.rawMaterialList = list;
}
};
const actions = {
getCategoryList({ state, commit }) {
if (state.categoryList.length > 0) {
return Promise.resolve(state.categoryList);
}
return listCategory().then(res => {
commit('SET_CATEGORY_LIST', res.rows || []);
return res.rows || [];
});
},
getProductMap({ state, commit }) {
if (Object.keys(state.productMap).length > 0) {
return Promise.resolve(state.productMap);
}
return listProduct().then(res => {
const map = {};
res.rows.forEach(item => {
map[item.productId] = item;
});
commit('SET_PRODUCT_MAP', map);
commit('SET_PRODUCT_LIST', res.rows || []);
return map;
});
},
getRawMaterialMap({ state, commit }) {
if (Object.keys(state.rawMaterialMap).length > 0) {
return Promise.resolve(state.rawMaterialMap);
}
return listRawMaterial().then(res => {
const map = {};
res.rows.forEach(item => {
map[item.rawMaterialId] = item;
});
commit('SET_RAW_MATERIAL_MAP', map);
commit('SET_RAW_MATERIAL_LIST', res.rows || []);
return map;
});
}
};
export default {
namespaced: true,
state,
mutations,
actions,
};