glhcp/uniapp/store/modules/app.js

203 lines
5.2 KiB
JavaScript
Raw Normal View History

2023-08-10 06:59:52 +00:00
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
};