You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

90 lines
2.4 KiB
JavaScript

1 year ago
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
let moduleTrue = {};
// 为了兼容如果用户不按规范创建或者不使用vuex时就可略过导入用户的模块。
try {
const modulesList = require.context('@/store', true, /\.js$/);
if (typeof modulesList === 'function' && typeof modulesList !== 'undefined') {
// 加载modules目录下所有文件(分模块)
const modules = modulesList.keys().reduce((modules, modulePath) => {
const moduleName = modulePath.replace(/^\.\/(.*)\.\w+$/, '$1')
const value = modulesList(modulePath)
modules[moduleName] = { namespaced: true, ...value.default }
return modules
}, {});
moduleTrue = modules;
}
} catch (e) {
//TODO handle the exception
// console.warn('tmui提醒用户未使用vuex')
console.error('如果未使用vuex不用理会如果使用了vuex报错请检错误信息',e);
}
let pdefault_cookies_color = uni.getStorageSync('setTmVuetifyColor')
let pdefault_cookies_black = uni.getStorageSync('setTmVuetifyBlack')
const store = new Vuex.Store({
modules: {
...moduleTrue
},
state: {
tmVuetify: {
color: typeof pdefault_cookies_color === 'string' ? pdefault_cookies_color : '',
black: typeof pdefault_cookies_black === 'boolean' ? pdefault_cookies_black : false,
tmVueTifly_pages: '',
tmVueTifly_pagesIndex: '',
//这里是微信小程序和微信H5的配置资料。
wxshareConfig_miniMp: {
title: '', // 分享标题
desc: '', // 描述
imageUrl: '', // 分享图片
path: '', // 分享路径
copyLink: '', // 复制链接
query: {}, // 分享参数
}
},
},
getters: {
// $tm:state=>{
// return $tm;
// }
},
mutations: {
setTmVuetifyColor(state, color) {
Vue.set(state.tmVuetify, 'color', color)
},
setPageNow(state, url) {
Vue.set(state.tmVuetify, 'tmVueTifly_pages', url);
},
setPageNowIndex(state, index) {
Vue.set(state.tmVuetify, 'tmVueTifly_pagesIndex', index);
},
setTmVuetifyBlack(state, black) {
Vue.set(state.tmVuetify, 'black', black)
if (black === true) {
uni.setTabBarStyle({
backgroundColor: "#212121"
})
} else {
uni.setTabBarStyle({
backgroundColor: "#FFFFFF"
})
}
},
setWxShare(state, cfg) {
let pcf = cfg||{};
if(typeof pcf !=='object' || Array.isArray(cfg)) pcf = {};
Vue.set(state.tmVuetify, 'wxshareConfig_miniMp', { ...state.tmVuetify.wxshareConfig_miniMp,...pcf});
}
}
})
export default store;