| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- import dictEnum, { numberList } from '@/enum/dict';
- import Vue from 'vue';
- import { getByCode } from '@/api/system/dictionary-data';
- //非枚举定义
- // const otherDictConfig = {
- // // [dictEnum.物品类型]: {
- // // request: getSubListByParentId,
- // // dictCode: 'type',
- // // dictValue: 'name',
- // // resKey: '' //为空选 data
- // // }
- // };
- const state = {
- // 加载中的字典项
- dictLoading: []
- };
- const mutations = {
- //根据字典code 添加字典
- ADD_DICT: (state, { code, dict }) => {
- Vue.set(state, code, dict);
- },
- dictLoadingAdd: (state, code) => {
- state.dictLoading.push(code);
- },
- dictLoadingRemove: (state, code) => {
- state.dictLoading = state.dictLoading.filter((item) => item !== code);
- }
- };
- const actions = {
- // 根据字典enumName请求字典 已获取的不做重复请求
- async requestDict({ commit, state }, enumName) {
- const code = dictEnum[enumName];
- // 如果字典正在加载中,则不重复请求
- if (state.dictLoading.includes(code)) return;
- commit('dictLoadingAdd', code);
- if (state[code]?.length) return state[code];
- try {
- let res = await getByCode(code);
- if (res?.code == 0) {
- const isNumber = numberList.includes(code);
- commit('ADD_DICT', {
- code,
- dict: res.data.map((item) => {
- const arr = Object.entries(item)[0] || [];
- return {
- dictCode: isNumber ? Number(arr[0]) : arr[0],
- dictValue: arr[1]
- };
- })
- });
- commit('dictLoadingRemove', code);
- return res.data;
- }
- commit('dictLoadingRemove', code);
- return [];
- } catch (error) {
- commit('dictLoadingRemove', code);
- return [];
- }
- },
- // 更新字典
- async reloadRequestDict({ commit }, enumName) {
- const code = dictEnum[enumName];
- const res = await getByCode(code);
- const isNumber = numberList.includes(code);
- if (res?.code == 0) {
- commit('ADD_DICT', {
- code,
- dict: res.data.map((item) => {
- const arr = Object.entries(item);
- return {
- dictCode: isNumber ? Number(arr[0]) : arr[0],
- dictValue: arr[1]
- };
- })
- });
- return res.data;
- }
- return [];
- }
- };
- export default {
- namespaced: true,
- state,
- mutations,
- actions
- };
|