| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450 |
- import { defineStore } from 'pinia'
- import { dayjs } from 'wot-design-uni'
- import { StaticUrl } from '@/config'
- import router from '@/router'
- import type { wxpay } from '@/api/globals'
- 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')
- }
- },
- 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
- },
- /**
- * 检测当前用户是否登录,如果没有登录弹窗提示未登录
- */
- checkLogin() {
- return new Promise((resolve, reject) => {
- if (!this.token) {
- useGlobalMessage().confirm({
- title: '提示',
- msg: '检测到当前状态未登录,是否登录',
- confirmButtonText: '登录',
- cancelButtonText: '取消',
- zIndex: 99999999999,
- success() {
- router.replace({ name: 'smqjh-login' })
- setTimeout(() => { // 延迟1秒后抛错,防止立马抛错之后用户立即点击按钮会重复跳转登录页面
- reject(new Error('未登录'))
- }, 1000)
- },
- fail() {
- reject(new Error('未登录'))
- },
- })
- }
- else {
- resolve(1)
- }
- })
- },
- /**
- * 通用支付逻辑
- * @param orderNumber
- * @returns
- */
- handleCommonPayMent(orderNumber: string): Promise<wxpay> {
- return new Promise((resolve, reject) => {
- if (!orderNumber) {
- useGlobalToast().show({ msg: '订单号为空!请联系管理员' })
- reject(new Error('订单号为空!请联系管理员'))
- return
- }
- uni.showLoading({ mask: true })
- Apis.common.hybridPayment({ data: { orderNumber } }).then((res) => {
- resolve(res.data)
- uni.hideLoading()
- }).catch((err) => {
- uni.hideLoading()
- reject(err)
- })
- })
- }, /**
- *
- * @param freightFee
- * @param businessType
- * @param dvyType 配送类型 1:快递 2:自提 3:及时配送
- * @param shopId
- * @param orderItemList
- * @param remarks
- * @param allowanceId
- * @returns 下单获取待支付订单号
- */
- getOrderPayMent(freightFee: number, businessType: string, dvyType: number, shopId: number, orderItemList: {
- prodCount?: number
- skuId?: number
- }[], remarks?: string, allowanceId?: string): Promise<string> {
- uni.showLoading({ mask: true })
- return new Promise((resolve, reject) => {
- if (!this.selectedAddress) {
- reject(new Error('请选择收货地址'))
- return
- }
- Apis.common.addOrder({
- data: {
- channelId: Number(this.userInfo.channelId),
- businessType,
- addressId: this.selectedAddress.id,
- dvyType,
- freightAmount: freightFee,
- shopId,
- orderItemList,
- remarks,
- allowanceIds: allowanceId ? [allowanceId] : [],
- },
- }).then((res) => {
- resolve(res.data)
- uni.hideLoading()
- }).catch((err) => {
- uni.hideLoading()
- reject(err)
- })
- })
- },
- /**
- *
- * @param orderInfo
- * @returns 统一拉起微信支付
- * @param type 0是下单,1是列表下单
- */
- getWxCommonPayment(orderPay: wxpay) {
- uni.showLoading({ mask: true })
- return new Promise((resolve, reject) => {
- const orderInfo = {
- appid: orderPay.appId,
- timeStamp: orderPay.timeStamp,
- nonceStr: orderPay.nonceStr,
- package: orderPay.package,
- signType: orderPay.signType,
- paySign: orderPay.paySign,
- }
- uni.requestPayment({
- provider: 'wxpay',
- orderInfo,
- ...orderInfo,
- success: (res) => {
- resolve(res)
- },
- fail: (e) => {
- reject(e)
- },
- complete() {
- uni.hideLoading()
- },
- })
- })
- },
- /**
- *
- * 支付成功统一跳转
- * @param name 订单列表
- * @param idxPath 首页路径
- *
- */
- paySuccess(name: string, idxPath: string) {
- return new Promise((resolve) => {
- useSysStore().setPaySuccessPath(name, idxPath)
- router.replace({ name: 'common-paySuccess' })
- setTimeout(() => {
- resolve(1)
- }, 2000)
- })
- },
- /**
- *
- * 支付失败统一跳转
- * @param name 订单列表
- * @param idxPath 首页路径
- */
- payError(name: string, idxPath: string) {
- return new Promise((resolve) => {
- useSysStore().setPaySuccessPath(name, idxPath)
- router.replace({ name: 'common-payError' })
- setTimeout(() => {
- resolve(1)
- }, 2000)
- })
- }, /**
- * 支付成功清空购买的商品的购物车
- */
- clearCart(skuList: Api.CartSkuVo[]) {
- uni.showLoading({ mask: true })
- return new Promise((resolve) => {
- const skuids = skuList.map(item => item.id).join(',')
- if (skuids.length) {
- Apis.common.deleteShoppingCart({
- pathParams: {
- ids: skuids,
- },
- }).then(async (res) => {
- resolve(res)
- await useSmqjhCartStore().getCartList('XSB')
- uni.hideLoading()
- }).finally(() => resolve(1))
- }
- else {
- resolve(1)
- uni.hideLoading()
- }
- })
- },
- /**
- * 统一确认收货
- * @param order
- * @returns
- */
- handleCommonOrderReceive(order: Api.xsbOrderList) {
- return new Promise((resolve, reject) => {
- useGlobalMessage().confirm({
- title: '确认收货',
- msg: '确定要确认收货吗?',
- zIndex: 99999999999999,
- success: async () => {
- uni.showLoading({ mask: true })
- await Apis.xsb.confirmReceipt({
- data: {
- orderNumber: String(order.orderNumber),
- },
- })
- resolve(1)
- },
- fail: err => reject(err),
- })
- })
- },
- /**
- * 统一删除订单
- * @param order
- * @returns
- */
- handleCommonDeleteOrder(order: Api.xsbOrderList) {
- return new Promise((resolve, reject) => {
- useGlobalMessage().confirm({
- title: '删除订单',
- msg: '确定要删除该订单吗?',
- zIndex: 99999999999999,
- success: async () => {
- uni.showLoading({ mask: true })
- Apis.xsb.deleteOrder({
- pathParams: {
- ids: String(order.orderId),
- },
- }).then(res => resolve(res)).catch(err => reject(err)).finally(() => uni.hideLoading())
- },
- fail: async (err) => {
- reject(err)
- },
- })
- })
- },
- /**
- * 统一取消订单
- * @param order
- * @returns
- */
- handleCommonCancelOrder(order: Api.xsbOrderList) {
- return new Promise((resolve, reject) => {
- useGlobalMessage().confirm({
- title: '取消订单',
- msg: '确定要取消订单吗?',
- zIndex: 99999999999999,
- success: async () => {
- uni.showLoading({ mask: true })
- Apis.xsb.cancelOrder({
- data: {
- orderNo: String(order.orderNumber),
- },
- }).then(res => resolve(res)).catch(err => reject(err)).finally(() => uni.hideLoading())
- },
- fail: async (err) => {
- reject(err)
- },
- })
- })
- },
- handleXSBCommonOrderStatusText(order: Api.xsbOrderList): any {
- if (order.hbOrderStatus === OrderStatus.PaddingPay) {
- const endTime = dayjs(order.createTime).add(16, 'minutes')
- const remaining = dayjs(endTime).valueOf() - dayjs().valueOf()
- return Math.max(0, remaining) // 确保不会返回负数
- }
- if (order.hbOrderStatus === OrderStatus.OrderAccepted) {
- return '订单已接单'
- }
- if (order.hbOrderStatus === OrderStatus.OrderWaitDelivery) {
- return '订单待配送'
- }
- if (order.hbOrderStatus === OrderStatus.OrderDelivering) {
- return '订单配送中'
- }
- if (order.hbOrderStatus === OrderStatus.OrderCancelAudit) {
- return '订单取消审核'
- }
- if (order.hbOrderStatus === OrderStatus.OrderCancel) {
- return '订单取消'
- }
- if (order.hbOrderStatus === OrderStatus.OrderArrived) {
- return '订单已送达'
- }
- if (order.hbOrderStatus === OrderStatus.OrderCompleted) {
- return '订单完成'
- }
- return '未知订单状态'
- },
- handleFilmCommonOrderStatusText(order: Api.xsbOrderList): any {
- if (order.hbOrderStatus === OrderStatus.PaddingPay) {
- const endTime = dayjs(order.createTime).add(16, 'minutes')
- const remaining = dayjs(endTime).valueOf() - dayjs().valueOf()
- return Math.max(0, remaining) // 确保不会返回负数
- }
- if (order.hbOrderStatus === OrderStatus.OrderAccepted) {
- return '待出票'
- }
- if (order.hbOrderStatus === OrderStatus.OrderWaitDelivery) {
- return '订单待配送'
- }
- if (order.hbOrderStatus === OrderStatus.OrderDelivering) {
- return '出票中'
- }
- if (order.hbOrderStatus === OrderStatus.OrderCancelAudit) {
- return '订单取消审核'
- }
- if (order.hbOrderStatus === OrderStatus.OrderCancel) {
- return '订单取消'
- }
- if (order.hbOrderStatus === OrderStatus.OrderArrived) {
- return '订单完成'
- }
- if (order.hbOrderStatus === OrderStatus.OrderCompleted) {
- return '订单完成'
- }
- return '未知订单状态'
- },
- handleDjkCommonOrderStatusText(order: Api.xsbOrderList) {
- const textMap = {
- [OrderStatus.OrderAccepted]: '待使用',
- [OrderStatus.OrderCompleted]: '已完成',
- [OrderStatus.OrderCancel]: '已取消',
- [OrderStatus.OrderRefund]: '已退款',
- [OrderStatus.OrderExpired]: '已过期',
- }
- return textMap[order.hbOrderStatus as keyof typeof textMap] || '未知订单状态'
- },
- async getOrderNode(orderNumber: string) {
- uni.showLoading({
- mask: true,
- })
- return new Promise((resolve, reject) => {
- Apis.xsb.deliveryNode({
- data: {
- orderNumber,
- },
- }).then((res) => {
- // NodeList.value = res.data
- resolve(res.data)
- }).catch((err) => {
- reject(err)
- }).finally(() => uni.hideLoading())
- })
- },
- },
- })
|