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

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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;