import { createStore } from 'vuex'; import deliver from './deliver/index.js'; import finance from './finance/index.js'; import project from './project/index.js'; import role from './role/index.js'; import socket from './socket/index.js'; import task from './task/index.js'; import user from './user/index.js'; import Config from '@/common/js/config.js'; // 不属于具体模块的 应用级的 store内容 const state = { theme: 'theme-default', networkConnected: true, // 网络是否连接 forceUseStorage: true, // 强制启用storage systemInfo: null, // 系统设备信息 count: 3, // 后台出错,多次返回错误的token信息导致的死循环,用count来阻止死循环 domain: `${Config.apiUrl}/defaultwbs`, // 项目跳转域名 guide: '', // 引导页图片json advs: '', // 广告图片json businessPlugin: '', // 所有服务 allPlugin: '', // 所有插件 firstOpenApp: false, // 是否是第一次打开APP或者引导页有更新,false表示从未打开过,true表示打开过 isOpenApp: true, // 是否打开APP longitude: '', // 经度 latitude: '', // 纬度 }; const getters = { // 是否启用本地存储 // 设置了强制启用本地存储 或者 没有网络连接的时候 useStorage({ networkConnected, forceUseStorage }) { return forceUseStorage || !networkConnected; }, }; const mutations = { /** * 设置网络是否连接的变量 * @param {*} state * @param {boolean} networkConnected */ setNetworkConnected(state, networkConnected) { state.networkConnected = networkConnected; }, /** * 设置系统信息的数据 * @param {object} state * @param {object | null} data 获取到的数据 */ setSystemInfo(state, data) { state.systemInfo = data; }, /** * 设置当前位置经度 * @param {object} state * @param {object | null} data 获取到的数据 */ setLongitude(state, data) { state.longitude = data; }, /** * 设置当前位置纬度 * @param {object} state * @param {object | null} data 获取到的数据 */ setLatitude(state, data) { state.latitude = data; }, /** * 设置主题 * @param {object} state * @param {string} theme 主题名称 默认theme-default */ setTheme(state, theme) { state.theme = theme || 'theme-default'; }, /** * 设置count * 后台出错,多次返回错误的token信息导致的死循环,用count来阻止死循环 * @param {Object} state * @param {Object} data */ setCount(state, data) { state.count = data; }, /** * 设置域名 * @param {Object} state * @param {Object} data */ setDomain(state, data) { state.domain = data; }, /** * 设置引导页图片 * @param {Object} state * @param {Object} data */ setGuide(state, data) { state.guide = data; }, /** * 设置广告页图片 * @param {Object} state * @param {Object} data */ setAdvs(state, data) { state.advs = data; }, /** * 设置服务列表 * @param {Object} state * @param {Object} data */ setBusinessPlugin(state, data) { state.businessPlugin = data; }, /** * 设置插件列表 * @param {Object} state * @param {Object} data */ setAllPlugin(state, data) { state.allPlugin = data; }, setFirstOpenApp(state, data) { state.firstOpenApp = uni.$storage.getStorageSync('firstOpenApp'); }, setIsOpenApp(state, data) { state.isOpenApp = data; } }; const actions = { async getBusinessPlugin({ commit }, param) { try { const res = await uni.$u.api.getBusinessPlugin(); uni.$storage.setStorageSync('businessPlugin', JSON.stringify(res) || ''); commit('setBusinessPlugin', JSON.stringify(res) || ''); return res; } catch (error) { uni.$ui.showToast(error.msg); throw error; } }, async getAllPlugin({ commit }, param) { try { const res = await uni.$u.api.getAllPlugin(); uni.$storage.setStorageSync('allPlugin', JSON.stringify(res) || ''); commit('setAllPlugin', JSON.stringify(res) || ''); return res; } catch (error) { uni.$ui.showToast(error.msg); throw error; } } }; export default createStore({ state, getters, mutations, actions, modules: { user, socket, project, role, task, deliver, finance }, });