展品维保小程序前端代码接口
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

109 lines
3.3 KiB

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