consumerm模块完成度90%,完善消费者和商家端数据库表,商品、聊天、订单数据对接好了supabase,和商家端对接了聊天功能,安卓端编译通过了css样式,剩余几个页面在处理函数规范问题

This commit is contained in:
cyh666666
2026-02-24 17:17:49 +08:00
parent e2f1dfb097
commit e606c597ca
174 changed files with 37917 additions and 4444 deletions

View File

@@ -28,7 +28,6 @@
<script setup lang="uts">
import { ref, onMounted } from 'vue'
import { onShow } from '@dcloudio/uni-app'
import { supabaseService } from '@/utils/supabaseService.uts'
type BankCard = {
@@ -44,15 +43,15 @@ type BankCard = {
const cards = ref<BankCard[]>([])
const loading = ref(true)
onShow(() => {
loadData()
})
const loadData = async () => {
loading.value = true
try {
const rawList = await supabaseService.getUserBankCards()
cards.value = rawList.map((item: any): BankCard => {
const cardList: BankCard[] = []
// Use for loop instead of map to avoid complex closure typing issues
for (let i = 0; i < rawList.length; i++) {
const item = rawList[i]
let id = ''
let bankName = ''
let last4 = ''
@@ -61,22 +60,23 @@ const loadData = async () => {
let isDef = false
if (item instanceof UTSJSONObject) {
id = item.getString('id') || ''
bankName = item.getString('bank_name') || ''
last4 = item.getString('card_no_last4') || ''
type = item.getString('card_type') || 'debit'
holder = item.getString('holder_name') || ''
isDef = item.getBoolean('is_default') || false
id = item.getString('id') ?? ''
bankName = item.getString('bank_name') ?? ''
last4 = item.getString('card_no_last4') ?? ''
type = item.getString('card_type') ?? 'debit'
holder = item.getString('holder_name') ?? ''
isDef = item.getBoolean('is_default') ?? false
} else {
id = (item['id'] as string) || ''
bankName = (item['bank_name'] as string) || ''
last4 = (item['card_no_last4'] as string) || ''
type = (item['card_type'] as string) || 'debit'
holder = (item['holder_name'] as string) || ''
isDef = (item['is_default'] as boolean) || false
const obj = JSON.parse(JSON.stringify(item)) as UTSJSONObject
id = obj.getString('id') ?? ''
bankName = obj.getString('bank_name') ?? ''
last4 = obj.getString('card_no_last4') ?? ''
type = obj.getString('card_type') ?? 'debit'
holder = obj.getString('holder_name') ?? ''
isDef = obj.getBoolean('is_default') ?? false
}
return {
cardList.push({
id: id,
user_id: '',
bank_name: bankName,
@@ -84,8 +84,10 @@ const loadData = async () => {
card_type: type,
holder_name: holder,
is_default: isDef
} as BankCard
})
} as BankCard)
}
cards.value = cardList
} catch (e) {
console.error(e)
} finally {
@@ -93,6 +95,10 @@ const loadData = async () => {
}
}
onShow(() => {
loadData()
})
const addCard = () => {
uni.navigateTo({
url: '/pages/mall/consumer/bank-cards/add'
@@ -103,15 +109,16 @@ const deleteCard = (card: BankCard) => {
uni.showModal({
title: '删除银行卡',
content: `确认删除尾号${card.card_no_last4}的${card.bank_name}卡片吗?`,
success: async (res) => {
success: (res) => {
if (res.confirm) {
const success = await supabaseService.deleteBankCard(card.id)
if (success) {
uni.showToast({ title: '已删除' })
loadData()
} else {
uni.showToast({ title: '删除失败', icon: 'none' })
}
supabaseService.deleteBankCard(card.id).then((success) => {
if (success) {
uni.showToast({ title: '已删除' })
loadData()
} else {
uni.showToast({ title: '删除失败', icon: 'none' })
}
})
}
}
})
@@ -131,10 +138,7 @@ const getCardClass = (bankName: string): string => {
.bank-cards-page {
padding: 15px;
background-color: #f5f5f5;
min-height: 100vh;
}
.card-item {
flex: 1;
height: 140px;
border-radius: 12px;
margin-bottom: 15px;
@@ -212,7 +216,7 @@ const getCardClass = (bankName: string): string => {
.plus-icon {
font-size: 24px;
margin-right: 5px;
font-weight: 300;
/* font-weight: 300; removed */
}
.delete-btn {
@@ -222,7 +226,7 @@ const getCardClass = (bankName: string): string => {
width: 24px;
height: 24px;
background-color: rgba(0,0,0,0.2);
border-radius: 50%;
border-radius: 12px;
display: flex;
align-items: center;
justify-content: center;