1 line
9.8 KiB
Plaintext
1 line
9.8 KiB
Plaintext
{"version":3,"sources":["pages/mall/consumer/bank-cards/index.uvue","pages/user/login.uvue","pages/main/cart.uvue","uni_modules/ak-req/ak-req.uts"],"sourcesContent":["<template>\r\n <view class=\"bank-cards-page\">\r\n <view class=\"card-list\">\r\n <view v-for=\"card in cards\" :key=\"card.id\" class=\"card-item\" :class=\"getCardClass(card.bank_name)\">\r\n <view class=\"card-bg-mask\"></view>\r\n <view class=\"card-content\">\r\n <view class=\"card-header\">\r\n <text class=\"bank-name\">{{ card.bank_name }}</text>\r\n <text class=\"card-type\">{{ card.card_type === 'credit' ? '信用卡' : '储蓄卡' }}</text>\r\n </view>\r\n <view class=\"card-number\">\r\n <text class=\"dots\">**** **** ****</text>\r\n <text class=\"last-digits\">{{ card.card_no_last4 }}</text>\r\n </view>\r\n <view class=\"delete-btn\" @click.stop=\"deleteCard(card)\">\r\n <text class=\"del-text\">✕</text>\r\n </view>\r\n </view>\r\n </view>\r\n \r\n <view class=\"add-card-btn\" @click=\"addCard\">\r\n <text class=\"plus-icon\">+</text>\r\n <text>添加银行卡</text>\r\n </view>\r\n </view>\r\n </view>\r\n</template>\r\n\r\n<script setup lang=\"uts\">\r\nimport { ref, onMounted } from 'vue'\r\nimport { supabaseService } from '@/utils/supabaseService.uts'\r\n\r\ntype BankCard = {\r\n id: string\r\n user_id: string\r\n bank_name: string\r\n card_no_last4: string\r\n card_type: string\r\n holder_name: string\r\n is_default: boolean\r\n}\r\n\r\nconst cards = ref<BankCard[]>([])\r\nconst loading = ref(true)\r\n\r\nconst loadData = async () => {\r\n loading.value = true\r\n try {\r\n const rawList = await supabaseService.getUserBankCards()\r\n const cardList: BankCard[] = []\r\n \r\n // Use for loop instead of map to avoid complex closure typing issues\r\n for (let i = 0; i < rawList.length; i++) {\r\n const item = rawList[i]\r\n let id = ''\r\n let bankName = ''\r\n let last4 = ''\r\n let type = 'debit'\r\n let holder = ''\r\n let isDef = false\r\n \r\n if (item instanceof UTSJSONObject) {\r\n id = item.getString('id') ?? ''\r\n bankName = item.getString('bank_name') ?? ''\r\n last4 = item.getString('card_no_last4') ?? ''\r\n type = item.getString('card_type') ?? 'debit'\r\n holder = item.getString('holder_name') ?? ''\r\n isDef = item.getBoolean('is_default') ?? false\r\n } else {\r\n const obj = JSON.parse(JSON.stringify(item)) as UTSJSONObject\r\n id = obj.getString('id') ?? ''\r\n bankName = obj.getString('bank_name') ?? ''\r\n last4 = obj.getString('card_no_last4') ?? ''\r\n type = obj.getString('card_type') ?? 'debit'\r\n holder = obj.getString('holder_name') ?? ''\r\n isDef = obj.getBoolean('is_default') ?? false\r\n }\r\n \r\n cardList.push({\r\n id: id,\r\n user_id: '',\r\n bank_name: bankName,\r\n card_no_last4: last4,\r\n card_type: type,\r\n holder_name: holder,\r\n is_default: isDef\r\n } as BankCard)\r\n }\r\n \r\n cards.value = cardList\r\n } catch (e) {\r\n console.error(e)\r\n } finally {\r\n loading.value = false\r\n }\r\n}\r\n\r\nonShow(() => {\r\n loadData()\r\n})\r\n\r\nconst addCard = () => {\r\n uni.navigateTo({\r\n url: '/pages/mall/consumer/bank-cards/add'\r\n })\r\n}\r\n\r\nconst deleteCard = (card: BankCard) => {\r\n uni.showModal({\r\n title: '删除银行卡',\r\n content: `确认删除尾号${card.card_no_last4}的${card.bank_name}卡片吗?`,\r\n success: (res) => {\r\n if (res.confirm) {\r\n supabaseService.deleteBankCard(card.id).then((success) => {\r\n if (success) {\r\n uni.showToast({ title: '已删除' })\r\n loadData()\r\n } else {\r\n uni.showToast({ title: '删除失败', icon: 'none' })\r\n }\r\n })\r\n }\r\n }\r\n })\r\n}\r\n\r\nconst getCardClass = (bankName: string): string => {\r\n if (bankName.includes('招商')) return 'cmb'\r\n if (bankName.includes('建设')) return 'ccb'\r\n if (bankName.includes('工商')) return 'icbc'\r\n if (bankName.includes('农业')) return 'abc'\r\n return 'default-bank'\r\n}\r\n\r\n</script>\r\n\r\n<style>\r\n.bank-cards-page {\r\n padding: 15px;\r\n background-color: #f5f5f5;\r\n flex: 1;\r\n height: 140px;\r\n border-radius: 12px;\r\n margin-bottom: 15px;\r\n color: #fff;\r\n position: relative;\r\n overflow: hidden;\r\n box-shadow: 0 4px 8px rgba(0,0,0,0.1);\r\n}\r\n\r\n.cmb { background: linear-gradient(135deg, #f55, #c00); }\r\n.ccb { background: linear-gradient(135deg, #09f, #00609c); }\r\n.icbc { background: linear-gradient(135deg, #f66, #c00); }\r\n.abc { background: linear-gradient(135deg, #0b9, #086); }\r\n.default-bank { background: linear-gradient(135deg, #666, #333); }\r\n\r\n.card-content {\r\n padding: 20px;\r\n z-index: 2;\r\n position: relative;\r\n height: 100%;\r\n box-sizing: border-box;\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: space-between;\r\n}\r\n\r\n.card-header {\r\n display: flex;\r\n align-items: center; \r\n}\r\n\r\n.bank-name {\r\n font-size: 18px;\r\n font-weight: bold;\r\n margin-right: 10px;\r\n}\r\n\r\n.card-type {\r\n font-size: 12px;\r\n background-color: rgba(255,255,255,0.2);\r\n padding: 2px 6px;\r\n border-radius: 4px;\r\n}\r\n\r\n.card-number {\r\n display: flex;\r\n align-items: center;\r\n justify-content: flex-end; /* 右对齐 */\r\n margin-bottom: 10px;\r\n}\r\n\r\n.dots {\r\n font-size: 24px;\r\n margin-right: 15px;\r\n line-height: 1;\r\n}\r\n\r\n.last-digits {\r\n font-size: 24px;\r\n font-family: monospace;\r\n}\r\n\r\n.add-card-btn {\r\n background-color: #fff;\r\n height: 60px;\r\n border-radius: 8px;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n color: #666;\r\n font-size: 16px;\r\n border: 1px dashed #ccc;\r\n}\r\n\r\n.plus-icon {\r\n font-size: 24px;\r\n margin-right: 5px;\r\n /* font-weight: 300; removed */\r\n}\r\n\r\n.delete-btn {\r\n position: absolute;\r\n top: 15px;\r\n right: 15px;\r\n width: 24px;\r\n height: 24px;\r\n background-color: rgba(0,0,0,0.2);\r\n border-radius: 12px;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n}\r\n\r\n.del-text {\r\n color: #fff;\r\n font-size: 14px;\r\n font-weight: bold;\r\n}\r\n</style>",null,null,null],"names":[],"mappings":"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"} |