Skip to content

Commit d09933a

Browse files
committed
chore(cart,coins): fixed cart num change, coins refrash
1 parent 2e9f6bd commit d09933a

3 files changed

Lines changed: 28 additions & 6 deletions

File tree

src/stores/cart-store.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { defineStore } from 'pinia'
33
import { ElMessage, ElMessageBox } from 'element-plus'
44
import { useRouter } from 'vue-router'
55
import { cartApi, type CartBalance, type CartItem } from '@/api/cart.api'
6+
import { useUserStore } from '@/stores/user-store'
67

78
interface PendingQuantityUpdate {
89
quantity: number
@@ -13,6 +14,7 @@ const UPDATE_DEBOUNCE_MS = 400
1314

1415
export const useCartStore = defineStore('cartStore', () => {
1516
const router = useRouter()
17+
const userStore = useUserStore()
1618

1719
const cartItems = ref<CartItem[]>([])
1820
const filteredItems = computed(() => cartItems.value)
@@ -196,18 +198,19 @@ export const useCartStore = defineStore('cartStore', () => {
196198
}
197199

198200
if (response.code === 500) {
199-
await ElMessageBox.alert(response.message || '结算失败', '结算失败', {
201+
await ElMessageBox.alert(response.msg || '结算失败', '结算失败', {
200202
confirmButtonText: '确定',
201203
type: 'warning',
202204
})
203205
return
204206
}
205207

206-
ElMessage.warning(response.message || '结算失败,请稍后重试')
208+
ElMessage.warning(response.msg || '结算失败,请稍后重试')
207209
} catch (error) {
208210
console.error('结算失败:', error)
209211
ElMessage.error('结算失败,请稍后重试')
210212
} finally {
213+
await userStore.fetchNavBarData(true)
211214
isSettling.value = false
212215
}
213216
}

src/stores/user-store.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -138,14 +138,12 @@ export const useUserStore = defineStore('user', () => {
138138
message: '登录成功',
139139
})
140140
} else {
141-
console.error('Login failed:', msg)
142141
return Promise.reject({
143142
success: false,
144143
message: msg,
145144
})
146145
}
147146
} catch (error) {
148-
console.error('Login error:', error)
149147
return Promise.reject({
150148
success: false,
151149
message: error instanceof Error ? error.message : String((error as { msg?: unknown }).msg),

src/views/home/components/cartoon-stepper.vue

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
<template>
22
<div class="cartoon-stepper-box">
3-
<button class="stepper-btn" @click="decrease" :disabled="modelValue <= min || disabled">
3+
<button
4+
class="stepper-btn"
5+
@click="throttledDecrease"
6+
:disabled="modelValue <= min || disabled"
7+
>
48
<el-icon><Minus /></el-icon>
59
</button>
610
<input
@@ -11,7 +15,11 @@
1115
@keyup.enter="handleInput"
1216
:disabled="disabled"
1317
/>
14-
<button class="stepper-btn" @click="increase" :disabled="modelValue >= max || disabled">
18+
<button
19+
class="stepper-btn"
20+
@click="throttledIncrease"
21+
:disabled="modelValue >= max || disabled"
22+
>
1523
<el-icon><Plus /></el-icon>
1624
</button>
1725
</div>
@@ -42,6 +50,16 @@ const props = defineProps({
4250
4351
const emit = defineEmits(['update:modelValue'])
4452
53+
const createThrottle = (fn: () => void, delay = 200) => {
54+
let lastExecuteTime = 0
55+
return () => {
56+
const now = Date.now()
57+
if (now - lastExecuteTime < delay) return
58+
lastExecuteTime = now
59+
fn()
60+
}
61+
}
62+
4563
const decrease = () => {
4664
if (props.modelValue > props.min) {
4765
emit('update:modelValue', props.modelValue - 1)
@@ -54,6 +72,9 @@ const increase = () => {
5472
}
5573
}
5674
75+
const throttledDecrease = createThrottle(decrease)
76+
const throttledIncrease = createThrottle(increase)
77+
5778
const handleInput = (e: Event) => {
5879
const target = e.target as HTMLInputElement
5980
let value = parseInt(target.value)

0 commit comments

Comments
 (0)