1 line
22 KiB
Plaintext
1 line
22 KiB
Plaintext
{"version":3,"sources":["pages/mall/consumer/points/index.uvue","pages/user/login.uvue"],"sourcesContent":["<template>\n <scroll-view class=\"points-page\" direction=\"vertical\">\n <view class=\"points-header\">\n <view class=\"points-info\">\n <text class=\"points-label\">当前积分</text>\n <text class=\"points-value\">{{ totalPoints }}</text>\n </view>\n <view class=\"points-actions\">\n <button class=\"exchange-btn\" @click=\"handleExchange\">积分兑换</button>\n </view>\n </view>\n\n <view class=\"quick-actions\">\n <view class=\"action-item\" @click=\"goToSignin\">\n <view class=\"action-icon signin-icon\">📅</view>\n <text class=\"action-text\">每日签到</text>\n <view class=\"action-badge\" v-if=\"!signedToday\">\n <text class=\"badge-text\">+5</text>\n </view>\n <view class=\"signed-badge\" v-else>\n <text class=\"signed-text\">已签</text>\n </view>\n </view>\n <view class=\"action-item\" @click=\"handleExchange\">\n <view class=\"action-icon exchange-icon\">🎁</view>\n <text class=\"action-text\">积分兑换</text>\n </view>\n <view class=\"action-item\" @click=\"goToMyReviews\">\n <view class=\"action-icon review-icon\">⭐</view>\n <text class=\"action-text\">我的评价</text>\n </view>\n </view>\n\n <view class=\"signin-card\" v-if=\"!signedToday\">\n <view class=\"signin-info\">\n <text class=\"signin-title\">今日未签到</text>\n <text class=\"signin-desc\">连续签到可获得额外奖励</text>\n </view>\n <button class=\"signin-btn\" @click=\"goToSignin\">去签到</button>\n </view>\n\n <view class=\"signin-card signed\" v-else>\n <view class=\"signin-info\">\n <text class=\"signin-title\">今日已签到</text>\n <text class=\"signin-desc\">已连续签到 {{ continuousDays }} 天</text>\n </view>\n <text class=\"signed-icon\">✓</text>\n </view>\n\n <view class=\"expiring-card\" v-if=\"expiringPoints > 0\" @click=\"showExpiringDetails\">\n <view class=\"expiring-icon\">⚠️</view>\n <view class=\"expiring-info\">\n <text class=\"expiring-title\">{{ expiringPoints }} 积分即将过期</text>\n <text class=\"expiring-date\">过期日期:{{ expiringDate }}</text>\n </view>\n <text class=\"expiring-arrow\">›</text>\n </view>\n\n <view class=\"records-section\">\n <text class=\"section-title\">积分明细</text>\n \n <view v-if=\"loading\" class=\"loading-state\">\n <text>加载中...</text>\n </view>\n \n <view v-else-if=\"records.length === 0\" class=\"empty-state\">\n <text class=\"empty-text\">暂无积分记录</text>\n </view>\n \n <view v-else class=\"record-list\">\n <view v-for=\"item in records\" :key=\"item.id\" class=\"record-item\">\n <view class=\"record-left\">\n <text class=\"record-title\">{{ item.description ?? getTypeText(item.type) }}</text>\n <text class=\"record-time\">{{ formatTime(item.created_at) }}</text>\n </view>\n <view class=\"record-right\">\n <text class=\"record-amount\" :class=\"{ positive: item.points > 0, negative: item.points < 0 }\">\n {{ item.points > 0 ? '+' : '' }}{{ item.points }}\n </text>\n </view>\n </view>\n </view>\n </view>\n\n <view class=\"expiring-popup\" v-if=\"showExpiringPopup\" @click=\"closeExpiringPopup\">\n <view class=\"popup-content\" @click.stop>\n <view class=\"popup-header\">\n <text class=\"popup-title\">即将过期积分</text>\n <text class=\"popup-close\" @click=\"closeExpiringPopup\">×</text>\n </view>\n <view class=\"popup-list\">\n <view class=\"popup-item\" v-for=\"(detail, index) in expiringDetails\" :key=\"index\">\n <view class=\"popup-item-info\">\n <text class=\"popup-item-points\">+{{ detail.points }} 积分</text>\n <text class=\"popup-item-desc\">{{ detail.description ?? '积分获取' }}</text>\n </view>\n <view class=\"popup-item-expire\">\n <text class=\"popup-item-date\">{{ formatDate(detail.expires_at) }}</text>\n <text class=\"popup-item-label\">过期</text>\n </view>\n </view>\n </view>\n <view class=\"popup-tip\">\n <text class=\"tip-text\">积分有效期为获取后365天,请及时使用避免过期</text>\n </view>\n </view>\n </view>\n </scroll-view>\n</template>\n\n<script setup lang=\"uts\">\nimport { ref, onMounted } from 'vue'\nimport { supabaseService } from '@/utils/supabaseService.uts'\n\ntype PointRecord = {\n id: string\n user_id: string\n points: number\n type: string\n description: string\n created_at: string\n}\n\ntype ExpiringDetail = {\n points: number\n description: string | null\n expires_at: string\n created_at: string\n}\n\nconst totalPoints = ref<number>(0)\nconst records = ref<PointRecord[]>([])\nconst loading = ref<boolean>(true)\nconst signedToday = ref<boolean>(false)\nconst continuousDays = ref<number>(0)\nconst expiringPoints = ref<number>(0)\nconst expiringDate = ref<string>('')\nconst expiringDetails = ref<ExpiringDetail[]>([])\nconst showExpiringPopup = ref<boolean>(false)\n\nconst loadPoints = async (): Promise<void> => {\n try {\n const points = await supabaseService.getUserPoints()\n totalPoints.value = points\n } catch (e) {\n console.error('获取积分失败', e)\n }\n}\n\nconst loadRecords = async (): Promise<void> => {\n try {\n const list = await supabaseService.getPointRecords()\n records.value = list as PointRecord[]\n } catch (e) {\n console.error('获取积分记录失败', e)\n }\n}\n\nconst loadSigninStatus = async (): Promise<void> => {\n try {\n const status = await supabaseService.getTodaySigninStatus()\n signedToday.value = status.getBoolean('signed') ?? false\n continuousDays.value = status.getNumber('continuous_days') ?? 0\n } catch (e) {\n console.error('获取签到状态失败', e)\n }\n}\n\nconst loadExpiringPoints = async (): Promise<void> => {\n try {\n const result = await supabaseService.getExpiringPoints()\n expiringPoints.value = result.getNumber('expiring_points') ?? 0\n expiringDate.value = result.getString('expiring_date') ?? ''\n \n const detailsRaw = result.get('details')\n if (detailsRaw != null && Array.isArray(detailsRaw)) {\n const details: ExpiringDetail[] = []\n const arr = detailsRaw as any[]\n for (let i = 0; i < arr.length; i++) {\n const item = arr[i]\n let itemObj: UTSJSONObject\n if (item instanceof UTSJSONObject) {\n itemObj = item\n } else {\n itemObj = JSON.parse(JSON.stringify(item)) as UTSJSONObject\n }\n details.push({\n points: itemObj.getNumber('points') ?? 0,\n description: itemObj.getString('description'),\n expires_at: itemObj.getString('expires_at') ?? '',\n created_at: itemObj.getString('created_at') ?? ''\n })\n }\n expiringDetails.value = details\n }\n } catch (e) {\n console.error('获取即将过期积分失败', e)\n }\n}\n\nconst loadData = async (): Promise<void> => {\n loading.value = true\n await Promise.all([\n loadPoints(),\n loadRecords(),\n loadSigninStatus(),\n loadExpiringPoints()\n ])\n loading.value = false\n}\n\nonMounted(() => {\n loadData()\n})\n\nconst handleExchange = (): void => {\n uni.navigateTo({\n url: '/pages/mall/consumer/points/exchange'\n })\n}\n\nconst goToSignin = (): void => {\n uni.navigateTo({\n url: '/pages/mall/consumer/points/signin'\n })\n}\n\nconst goToMyReviews = (): void => {\n uni.navigateTo({\n url: '/pages/mall/consumer/my-reviews'\n })\n}\n\nconst showExpiringDetails = (): void => {\n showExpiringPopup.value = true\n}\n\nconst closeExpiringPopup = (): void => {\n showExpiringPopup.value = false\n}\n\nconst getTypeText = (type: string): string => {\n if (type == 'signin') {\n return '每日签到'\n } else if (type == 'shopping') {\n return '购物奖励'\n } else if (type == 'redeem') {\n return '积分兑换'\n } else if (type == 'admin') {\n return '系统调整'\n } else if (type == 'register') {\n return '注册赠送'\n } else if (type == 'expire') {\n return '积分过期'\n } else {\n return '积分变动'\n }\n}\n\nconst formatTime = (timeStr: string): string => {\n if (timeStr == '') return ''\n const date = new Date(timeStr)\n const y = date.getFullYear()\n const m = (date.getMonth() + 1).toString().padStart(2, '0')\n const d = date.getDate().toString().padStart(2, '0')\n const hh = date.getHours().toString().padStart(2, '0')\n const mm = date.getMinutes().toString().padStart(2, '0')\n return `${y}-${m}-${d} ${hh}:${mm}`\n}\n\nconst formatDate = (dateStr: string): string => {\n if (dateStr == '') return ''\n const date = new Date(dateStr)\n const y = date.getFullYear()\n const m = (date.getMonth() + 1).toString().padStart(2, '0')\n const d = date.getDate().toString().padStart(2, '0')\n return `${y}-${m}-${d}`\n}\n</script>\n\n<style>\n.points-page {\n flex: 1;\n height: 100%;\n background-color: #f5f5f5;\n}\n\n.points-header {\n background: linear-gradient(135deg, #ff6b35 0%, #ff8c42 100%);\n padding: 30px 20px;\n color: white;\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n\n.points-info {\n display: flex;\n flex-direction: column;\n}\n\n.points-label {\n font-size: 14px;\n opacity: 0.9;\n margin-bottom: 8px;\n}\n\n.points-value {\n font-size: 36px;\n font-weight: bold;\n}\n\n.exchange-btn {\n background-color: rgba(255,255,255,0.2);\n color: white;\n border: 1px solid rgba(255,255,255,0.4);\n font-size: 14px;\n border-radius: 20px;\n padding: 0 15px;\n height: 32px;\n line-height: 32px;\n}\n\n.quick-actions {\n display: flex;\n flex-direction: row;\n background-color: white;\n padding: 16px 0;\n margin-bottom: 8px;\n}\n\n.action-item {\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n position: relative;\n}\n\n.action-icon {\n width: 44px;\n height: 44px;\n border-radius: 22px;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 20px;\n margin-bottom: 6px;\n}\n\n.signin-icon {\n background-color: #fff5f0;\n}\n\n.exchange-icon {\n background-color: #f0f5ff;\n}\n\n.review-icon {\n background-color: #fff5f0;\n}\n\n.action-text {\n font-size: 12px;\n color: #666;\n}\n\n.action-badge {\n position: absolute;\n top: 0;\n right: 20px;\n background-color: #ff6b35;\n border-radius: 8px;\n padding: 2px 6px;\n}\n\n.badge-text {\n font-size: 10px;\n color: white;\n}\n\n.signed-badge {\n position: absolute;\n top: 0;\n right: 20px;\n background-color: #52c41a;\n border-radius: 8px;\n padding: 2px 6px;\n}\n\n.signed-text {\n font-size: 10px;\n color: white;\n}\n\n.signin-card {\n background-color: white;\n margin: 0 12px 8px;\n border-radius: 12px;\n padding: 16px;\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n}\n\n.signin-card.signed {\n background: linear-gradient(135deg, #f6ffed 0%, #e6fffb 100%);\n}\n\n.signin-info {\n display: flex;\n flex-direction: column;\n}\n\n.signin-title {\n font-size: 16px;\n font-weight: bold;\n color: #333;\n}\n\n.signin-desc {\n font-size: 12px;\n color: #999;\n margin-top: 4px;\n}\n\n.signin-btn {\n background-color: #ff6b35;\n color: white;\n font-size: 14px;\n border-radius: 16px;\n padding: 0 20px;\n height: 32px;\n line-height: 32px;\n}\n\n.signed-icon {\n width: 32px;\n height: 32px;\n background-color: #52c41a;\n border-radius: 16px;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 16px;\n color: white;\n}\n\n.expiring-card {\n background: linear-gradient(135deg, #fff7e6 0%, #ffe7ba 100%);\n margin: 0 12px 8px;\n border-radius: 12px;\n padding: 14px 16px;\n display: flex;\n flex-direction: row;\n align-items: center;\n}\n\n.expiring-icon {\n font-size: 24px;\n margin-right: 12px;\n}\n\n.expiring-info {\n flex: 1;\n display: flex;\n flex-direction: column;\n}\n\n.expiring-title {\n font-size: 14px;\n font-weight: bold;\n color: #d48806;\n}\n\n.expiring-date {\n font-size: 12px;\n color: #ad8b00;\n margin-top: 2px;\n}\n\n.expiring-arrow {\n font-size: 20px;\n color: #d48806;\n}\n\n.records-section {\n background-color: white;\n padding: 0 16px;\n min-height: 300px;\n}\n\n.section-title {\n font-size: 16px;\n font-weight: bold;\n padding: 16px 0;\n border-bottom: 1px solid #f0f0f0;\n display: flex;\n}\n\n.record-item {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 16px 0;\n border-bottom: 1px solid #f9f9f9;\n}\n\n.record-left {\n display: flex;\n flex-direction: column;\n}\n\n.record-title {\n margin-bottom: 4px;\n font-size: 15px;\n color: #333;\n}\n\n.record-time {\n font-size: 12px;\n color: #999;\n}\n\n.record-amount {\n font-size: 16px;\n font-weight: bold;\n color: #333;\n}\n\n.record-amount.positive {\n color: #ff6b35;\n}\n\n.record-amount.negative {\n color: #333;\n}\n\n.empty-state {\n padding: 40px 0;\n display: flex;\n justify-content: center;\n}\n\n.empty-text {\n color: #999;\n font-size: 14px;\n}\n\n.loading-state {\n padding: 40px 0;\n display: flex;\n justify-content: center;\n}\n\n.expiring-popup {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-color: rgba(0, 0, 0, 0.5);\n display: flex;\n align-items: flex-end;\n justify-content: center;\n z-index: 1000;\n}\n\n.popup-content {\n background-color: white;\n border-radius: 16px 16px 0 0;\n width: 100%;\n max-height: 400px;\n padding: 16px;\n}\n\n.popup-header {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 16px;\n}\n\n.popup-title {\n font-size: 18px;\n font-weight: bold;\n color: #333;\n}\n\n.popup-close {\n font-size: 24px;\n color: #999;\n}\n\n.popup-list {\n max-height: 300px;\n}\n\n.popup-item {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n padding: 12px 0;\n border-bottom: 1px solid #f0f0f0;\n}\n\n.popup-item-info {\n display: flex;\n flex-direction: column;\n}\n\n.popup-item-points {\n font-size: 14px;\n font-weight: bold;\n color: #ff6b35;\n}\n\n.popup-item-desc {\n font-size: 12px;\n color: #999;\n margin-top: 2px;\n}\n\n.popup-item-expire {\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n}\n\n.popup-item-date {\n font-size: 12px;\n color: #d48806;\n}\n\n.popup-item-label {\n font-size: 10px;\n color: #999;\n}\n\n.popup-tip {\n margin-top: 16px;\n padding: 12px;\n background-color: #f9f9f9;\n border-radius: 8px;\n}\n\n.tip-text {\n font-size: 12px;\n color: #666;\n}\n</style>\n",null],"names":[],"mappings":"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"} |