import { defineStore } from 'pinia' import { StaticUrl } from '@/config' interface userStroe { token: string /** * 重定向路由名称 */ redirectName: string /** * 用户登录信息 */ userInfo: Api.userInfo /** * 用户收货地址 */ addresses: Api.addressList[] /** * 星闪爆用户选择的收货地址 * */ selectedAddress: Api.addressList | null /** * 市民请集合购物车用户选中的收货地址 */ smqjhSelectedAddress: Api.addressList | null } export const useUserStore = defineStore('user', { state: (): userStroe => ({ token: '', redirectName: '', userInfo: { id: 0, channelId: 0, channelName: '', }, addresses: [], selectedAddress: null, smqjhSelectedAddress: null, }), getters: { getUserAvatar(): string { if (this.userInfo.avatarUrl) { return this.userInfo.avatarUrl } return `${StaticUrl}/avator.png` }, }, actions: { async getUserInfo() { if (this.token) { const { data } = await api.sys.userInfo({}) this.userInfo = data await this.getuserAddresslist() this.getSelectedAddress() await useSmqjhCartStore().getCartList('XSB') const { getTotalNum } = storeToRefs(useSmqjhCartStore()) useTabbar().setTabbarItem('smqjh-cart', getTotalNum.value) } }, async updataUserInfo(data: Api.userInfo) { uni.showLoading({ mask: true }) await Apis.sys.updateUserInfo({ pathParams: { memberId: data.id }, data }) uni.hideLoading() useGlobalToast().show({ msg: '修改成功' }) this.getUserInfo() }, /** * 获取用户收货地址列表 */ async getuserAddresslist() { return new Promise((resolve, reject) => { uni.showLoading({ mask: true }) Apis.sys.addresses({}).then((res) => { this.addresses = res.data || [] resolve(res) }).catch(err => reject(err)).finally(() => uni.hideLoading()) }) }, /** * * 更新用户选择的收货地址 */ updateSelectedAddress(address: Api.addressList) { this.selectedAddress = address }, /** * 获取用户收货地址 * @description 默认选择默认地址,如无默认地址则不选择 */ getSelectedAddress() { this.selectedAddress = this.addresses.find(it => it.defaulted === 1) ?? null }, /** * 获取市民请集合购物车用户选择的收货地址 * @description 默认选择默认地址,如无默认地址则不选择 */ getSmqjhSelectedAddress() { this.smqjhSelectedAddress = this.addresses.find(it => it.defaulted === 1) ?? null }, /** * 更新市民请集合购物车用户选择的收货地址 */ updateSmqjhSelectedAddress(address: Api.addressList) { this.smqjhSelectedAddress = address }, }, })