|                                                                                                             |  | import Vue from 'vue'import Vuex from 'vuex'import * as api from '@/api'
Vue.use(Vuex)
const store = new Vuex.Store({  state: {    // 存放状态
    configList: [],    departmentList: [],    categoryList: []  },  mutations: {    // 构造用于uv-picker的树状结构数组
    setCategoryList(state, data) {      // 将返回的平面数组data 根据pid和hasChild组装成两个数组,其一为pid为0的父级一维数组,其二为pid不为0的子级二维数组,其中pid相同的排一起 不同的分为不同子数组,并且按顺序排序,比如第一个为[中国,美国] 第二个按顺序为[[上海,福建],[纽约,华盛顿]]
            // 分离父级和子级数据
      const parentCategories = data.filter(item => item.pid === 0 || item.pid === '0')      const childCategories = data.filter(item => item.pid !== 0 && item.pid !== '0')            // 构建父级一维数组
      const parentArray = parentCategories.map((item) => {        return {          label: item.name || item.title || item.categoryName,          value: item.id        }      })            // 构建子级二维数组
      const childArray = []      parentCategories.forEach(parent => {        const children = childCategories          .filter(child => child.pid === parent.id)          .map(child => {            return {              label: child.name || child.title || child.categoryName,              value: child.id            }          })        childArray.push(children.length > 0 ? children : [{          label: '全部',          value: 0        }])      })            // 组装最终结果
      state.categoryList = [parentArray, childArray]          },    setConfigList(state, data) {      state.configList = data    },    setDepartmentList(state, data) {      state.departmentList = data    },      // 
  },  actions: {    // 查询配置列表
    async getConfig({ commit }) {      const res = await api.config.queryConfigList()      // 要求变成键值对的样子
      const config = res.result.records.reduce((acc, item) => {        if (!item.paramCode) {          console.log('paramCode为空', item);          return acc        }        acc[item.paramCode] = item        return acc      }, {})      commit('setConfigList', config)    },    // 查询部门列表
    async getDepartment({ commit }) {      const res = await api.config.queryDepartmentList()      commit('setDepartmentList', res.result.records)    },    // 获取分类列表
    async getCategory({ commit }) {      const res = await api.config.queryCategoryList()      commit('setCategoryList', res.result.records)    },    // 初始化数据
    async initData({ dispatch, state }) {      // 检查是否已初始化
      if (state.configList.length > 0 && state.departmentList.length > 0 && state.categoryList.length > 0) {
        console.log('配置数据已初始化,无需重复初始化')        return      }
      try {        await Promise.all([          dispatch('getConfig'),          dispatch('getDepartment'),          dispatch('getCategory'),          ])        console.log('所有配置数据初始化完成')      } catch (error) {        console.error('配置数据初始化失败:', error)      }    },  }})
export default store
 |