| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- import dictEnum 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 = {};
- const mutations = {
- //根据字典code 添加字典
- ADD_DICT: (state, { code, dict }) => {
- Vue.set(state, code, dict);
- }
- // // 根据字典enumName 和 dictCode 获取字典项
- // GET_DICT (state, { enumName, dictCode }) {
- // return (
- // (state[dictEnum[enumName]] || []).find(
- // item => item.dictCode === dictCode
- // ) || {}
- // )
- // },
- // // 根据字典enumName 和 dictCode 获取字典 值(名称
- // GET_DICT_VALUE (state, { enumName, dictCode }) {
- // const obj = (state[dictEnum[enumName]] || []).find(
- // item => item.dictCode === dictCode
- // )
- // return obj && obj.dictValue
- // }
- };
- const actions = {
- // 根据字典enumName请求字典 已获取的不做重复请求
- async requestDict ({ commit, state }, enumName) {
- const code = dictEnum[enumName];
- if (state[code]?.length) return state[code];
- let res;
- if (otherDictConfig[dictEnum[enumName]]) {
- const config = otherDictConfig[dictEnum[enumName]];
- console.log(config);
- //非枚举定义
- res = await config.request();
- if (res?.code == 0) {
- let list = config.resKey ? res.data[config.resKey] : res.data;
- commit('ADD_DICT', {
- code,
- dict: list.map((item) => ({
- ...item,
- dictCode: item[config.dictCode],
- dictValue: item[config.dictValue]
- }))
- });
- return res.list;
- }
- } else {
- res = await getByCode(code);
- if (res?.code == 0) {
- commit('ADD_DICT', {
- code,
- dict: res.data.map((item) => {
- const arr = Object.entries(item)[0] || [];
- return {
- dictCode: arr[0],
- dictValue: arr[1]
- };
- })
- });
- return res.data;
- }
- }
- return [];
- },
- // 更新字典
- async reloadRequestDict ({ commit }, enumName) {
- const code = dictEnum[enumName];
- const res = await getByCode(code);
- if (res?.code == 0) {
- commit('ADD_DICT', {
- code,
- dict: res.data.map((item) => {
- const arr = Object.entries(item);
- return {
- dictCode: arr[0],
- dictValue: arr[1]
- };
- })
- });
- return res.data;
- }
- return [];
- }
- };
- export default {
- namespaced: true,
- state,
- mutations,
- actions
- };
|