- import Vue from 'vue'
 - import Vuex from 'vuex'
 - import * as api from '@/api'
 - 
 - // #ifdef H5
 - import share from '@/utils/share.js'
 - // #endif
 - 
 - Vue.use(Vuex)
 - 
 - const store = new Vuex.Store({
 -     state: {
 -         // 存放状态
 -         configList: [],
 -         departmentList: [],
 -         categoryList: [],
 -         userInfo: {},
 -         Qrcode: '',
 -         voiceList: [], // 音色列表
 -         defaultVoiceId: null // 默认音色ID
 -     },
 -     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
 -         },
 -         setUserInfo(state, data) {
 -             state.userInfo = data
 -             // #ifdef H5
 -             uni.setStorageSync('userInfo', data)
 -             share()
 -             // #endif
 -         },
 -         setQrcode(state, data) {
 -             state.Qrcode = data
 -         },
 -         setVoiceList(state, data) {
 -             state.voiceList = data
 -             // 如果有音色数据且还没有设置默认音色ID,则设置第一个音色为默认
 -             if (data && data.length > 0 && !state.defaultVoiceId) {
 -                 state.defaultVoiceId = Number(data[0].voiceType)
 -             }
 -         },
 -         setDefaultVoiceId(state, voiceId) {
 -             state.defaultVoiceId = Number(voiceId)
 -         },
 -         // 
 -     },
 -     actions: {
 -         // 查询配置列表
 -         async getConfig({ commit }) {
 -             const res = await api.config.queryConfigList()
 -             // 要求变成键值对的样子
 -             const config = res.result.reduce((acc, item) => {
 -                 if (!item.code) {
 -                     console.log('code为空', item);
 -                     return acc
 -                 }
 -                 acc[item.code] = item
 -                 return acc
 -             }, {})
 -             console.log('configList列表为:', config);
 - 
 -             // 事先永久存儲首屏圖片的數據
 -             if (config.creen_image) {
 -                 uni.setStorageSync('screen_image', config.creen_image.content)
 -             }
 -             if (config.login_logo) {
 -                 uni.setStorageSync('login_logo', config.login_logo.content)
 -             }
 - 
 -             commit('setConfigList', config)
 - 
 -             // #ifdef H5
 -             share()
 -             // #endif
 -         },
 -         // 查询部门列表
 -         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) {
 - 
 -                 console.log('配置数据已初始化,无需重复初始化')
 -                 return
 -             }
 - 
 -             try {
 -                 await Promise.all([
 -                     dispatch('getConfig'),
 -                     dispatch('getVoiceList'), // 添加音色列表初始化
 -                     // dispatch('getDepartment'),
 -                     // dispatch('getCategory'),
 -                 ])
 -                 console.log('所有配置数据初始化完成')
 -             } catch (error) {
 -                 console.error('配置数据初始化失败:', error)
 -             }
 -         },
 -         // 更新/存儲用戶最新數據
 -         updateUserInfo({ commit }, userInfo) {
 -             commit('setUserInfo', userInfo)
 -         },
 -         async getUserInfo({ commit }) {
 -             const res = await api.login.getUserInfo();
 -             if (res.code === 200) {
 -                 commit('setUserInfo', res.result);
 -             }
 -         },
 -         // 获取音色列表
 -         async getVoiceList({ commit }) {
 -             try {
 -                 const res = await api.music.list()
 -                 if (res.code === 200) {
 -                     console.log('音色列表加载成功:', res.result);
 -                     commit('setVoiceList', res.result)
 -                     return res.result
 -                 } else {
 -                     console.error('音色列表加载失败:', res);
 -                     return []
 -                 }
 -             } catch (error) {
 -                 console.error('音色列表加载异常:', error);
 -                 return []
 -             }
 -         },
 -         // 设置默认音色
 -         setDefaultVoice({ commit }, voiceId) {
 -             commit('setDefaultVoiceId', voiceId)
 -         },
 -     }
 - })
 - 
 - export default store
 
 
  |