import { getUser } from '@/api/user' import { getCartNum } from '@/api/store'; import { USER_INFO, TOKEN, CONFIG } from '@/config/cachekey'; import Cache from '@/utils/cache' import wechath5 from '@/utils/wechath5' import { isWeixinClient } from '@/utils/tools' import { baseURL, basePath } from '@/config/app' const state = { config: Cache.get(CONFIG) || { center_setting: {}, index_setting: {}, navigation_menu: [], navigation_setting: {}, share: {} }, userInfo: { user_money: 0, user_integral: 0, coupon: 0 }, token: Cache.get(TOKEN) || null, cartNum: "", sysInfo: {}, communityItem: {} }; const mutations = { login(state, opt) { state.token = opt.token; Cache.set(TOKEN, opt.token, 59 * 24 * 60 * 60); this.dispatch('getUser') }, logout(state) { state.token = undefined; state.userInfo = { user_money: 0, user_integral: 0, coupon: 0 } Cache.remove(TOKEN); }, setCartNum(state, num) { state.cartNum = num }, setUserInfo(state, user) { state.userInfo = user }, setConfig(state, data) { state.config = Object.assign(state.config, data) Cache.set(CONFIG, state.config); }, setSystemInfo(state, data) { state.sysInfo = data }, setCommunity(state, data) { state.communityItem = data } }; const actions = { getCartNum({ state, commit }) { return new Promise(resolve => { if (!state.token) return uni.removeTabBarBadge({ index: 3 }) getCartNum().then(res => { if (res.code == 1) { commit('setCartNum', res.data.num) if (!res.data.num) return uni.removeTabBarBadge({ index: 3 }) uni.setTabBarBadge({ index: 3, text: String(res.data.num) }) resolve() } }) }) }, getUser({ state, commit }) { return new Promise(resolve => { getUser().then(res => { if (res.code == 1) { commit('setUserInfo', res.data) } resolve() }) }) }, getSystemInfo({ state, commit }) { uni.getSystemInfo({ success: res => { let { statusBarHeight, platform, } = res; let navHeight; if (platform == 'ios' || platform == 'devtools') { navHeight = statusBarHeight + 44; } else { navHeight = statusBarHeight + 48; } commit('setSystemInfo', { ...res, navHeight, }) console.log(state) }, fail(err) { console.log(err); } }); }, wxShare({ state }, opt) { // #ifdef H5 const shareInfo = state.config.share const inviteCode = state.userInfo.distribution_code const href = window.location.href const sym = href.includes('?') ? '&' : '?' const option = { shareTitle: shareInfo.h5_share_title, shareLink: inviteCode ? `${href}${sym}invite_code=${inviteCode}` : href, shareImage: shareInfo.h5_share_image, shareDesc: shareInfo.h5_share_intro } wechath5.share(Object.assign(option, opt)) // #endif }, // 分享种草文章 communityShare({ state, commit }) { const item = state.communityItem; console.log(item) // #ifdef H5 if (isWeixinClient()) { const option = { shareTitle: `${item.user.nickname},TA的内容超级棒`, shareLink: `${baseURL}${basePath}/${item.url}?id=${item.id}`, shareImage: item.image, shareDesc: item.content } wechath5.share(option) } // #endif // #ifdef APP-PLUS uni.share({ provider: "weixin", scene: "WXSceneSession", type: 0, href: `${baseURL}${basePath}/${item.url}?id=${item.id}`, title: `${item.user.nickname},TA的内容超级棒`, summary: item.content, imageUrl: item.image, success: (res) => { console.log('分享成功'); }, fail: (err) => { console.log(err) uni.showToast({ icon: 'none', title: err.errMsg }) } }); // #endif } }; export default { state, mutations, actions };