203 lines
5.2 KiB
JavaScript
203 lines
5.2 KiB
JavaScript
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
|
||
};
|