feat(admin): 完成门店核销功能
- 新增管理员页面和相关组件 - 实现用户认证和权限控制 - 添加用户订单、积分等功能 - 优化用户卡片和用户页面布局 - 实现礼品卡核销功能
This commit is contained in:
@@ -6,15 +6,15 @@ import Taro from '@tarojs/taro'
|
||||
import dayjs from 'dayjs'
|
||||
import {getShopGiftByCode, updateShopGift} from "@/api/shop/shopGift";
|
||||
|
||||
interface VerificationData {
|
||||
type: string
|
||||
giftId: number
|
||||
giftCode: string
|
||||
verificationCode: string
|
||||
faceValue: string
|
||||
timestamp: number
|
||||
expireTime?: string
|
||||
}
|
||||
// interface VerificationData {
|
||||
// type: string
|
||||
// giftId: number
|
||||
// giftCode: string
|
||||
// verificationCode: string
|
||||
// faceValue: string
|
||||
// timestamp: number
|
||||
// expireTime?: string
|
||||
// }
|
||||
|
||||
interface GiftCardInfo {
|
||||
id: number
|
||||
@@ -40,7 +40,8 @@ const StoreVerification: React.FC = () => {
|
||||
success: (res) => {
|
||||
console.log('扫码结果:', res.result)
|
||||
setScanResult(res.result)
|
||||
parseQRCode(res.result)
|
||||
verificationQRCode(res.result)
|
||||
// parseQRCode(res.result)
|
||||
},
|
||||
fail: (err) => {
|
||||
console.error('扫码失败:', err)
|
||||
@@ -53,41 +54,57 @@ const StoreVerification: React.FC = () => {
|
||||
}
|
||||
|
||||
// 解析二维码数据
|
||||
const parseQRCode = (qrData: string) => {
|
||||
try {
|
||||
const data: VerificationData = JSON.parse(qrData)
|
||||
// const parseQRCode = (qrData: string) => {
|
||||
// try {
|
||||
// const data: VerificationData = JSON.parse(qrData)
|
||||
//
|
||||
// if (data.type === 'gift_card_verification') {
|
||||
// setVerificationCode(data.verificationCode)
|
||||
// console.log(data.verificationCode,'...vaerrr')
|
||||
// } else {
|
||||
// throw new Error('无效的二维码格式')
|
||||
// }
|
||||
// } catch (error) {
|
||||
// console.error('解析二维码失败:', error)
|
||||
// Taro.showToast({
|
||||
// title: '无效的二维码',
|
||||
// icon: 'error'
|
||||
// })
|
||||
// }
|
||||
// }
|
||||
|
||||
if (data.type === 'gift_card_verification') {
|
||||
setVerificationCode(data.verificationCode)
|
||||
// 模拟获取礼品卡信息
|
||||
mockGetGiftInfo(data)
|
||||
} else {
|
||||
throw new Error('无效的二维码格式')
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('解析二维码失败:', error)
|
||||
Taro.showToast({
|
||||
title: '无效的二维码',
|
||||
// 扫码核销操作
|
||||
const verificationQRCode = async (code:string) => {
|
||||
const gift = await getShopGiftByCode(code)
|
||||
|
||||
if(gift.status == 1){
|
||||
return Taro.showToast({
|
||||
title: '此礼品码已使用',
|
||||
icon: 'error'
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
// 模拟获取礼品卡信息(实际应该调用API)
|
||||
const mockGetGiftInfo = (data: VerificationData) => {
|
||||
// 这里应该调用后端API验证礼品卡信息
|
||||
const mockGiftInfo: GiftCardInfo = {
|
||||
id: data.giftId,
|
||||
name: '礼品卡',
|
||||
goodsName: '星巴克咖啡券',
|
||||
faceValue: data.faceValue,
|
||||
type: 20,
|
||||
status: 0,
|
||||
expireTime: data.expireTime,
|
||||
code: data.giftCode
|
||||
if(gift.status == 2){
|
||||
return Taro.showToast({
|
||||
title: '此礼品码已失效',
|
||||
icon: 'error'
|
||||
})
|
||||
}
|
||||
|
||||
setGiftInfo(mockGiftInfo)
|
||||
if(gift.userId == 0){
|
||||
return Taro.showToast({
|
||||
title: '此礼品码未认领',
|
||||
icon: 'error'
|
||||
})
|
||||
}
|
||||
updateShopGift({
|
||||
...gift,
|
||||
status: 1,
|
||||
takeTime: dayjs.unix(Date.now() / 1000).format('YYYY-MM-DD HH:mm:ss')
|
||||
}).then(() => {
|
||||
Taro.showToast({
|
||||
title: '核销成功',
|
||||
icon: 'success'
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
// 手动输入核销码验证
|
||||
@@ -106,7 +123,8 @@ const StoreVerification: React.FC = () => {
|
||||
const giftCard = await getShopGiftByCode(verificationCode.trim())
|
||||
await updateShopGift({
|
||||
...giftCard,
|
||||
status: 1
|
||||
status: 1,
|
||||
takeTime: dayjs.unix(Date.now() / 1000).format('YYYY-MM-DD HH:mm:ss')
|
||||
})
|
||||
Taro.showToast({
|
||||
title: '核销成功',
|
||||
|
||||
Reference in New Issue
Block a user