forked from gxwebsoft/mp-10550
fix(order): 优化收货地址及收货人信息处理逻辑
- 切换开发环境,方便本地调试 - 在订单模型中新增收货人姓名和手机号码字段 - 订单列表中优先显示收货人信息,fallback为客户昵称和电话 - 订单编辑与新建时优化收货地址选择逻辑 - 编辑模式优先使用默认地址,新建模式使用订单关联地址 - 异步获取地址失败时添加错误日志方便排查
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
|
||||
// ============ 环境切换开关(修改这里即可切换环境)============
|
||||
// 可选值: 'development' | 'test' | 'production'
|
||||
const CURRENT_ENV = 'production'
|
||||
const CURRENT_ENV = 'development'
|
||||
// ===========================================================
|
||||
|
||||
export const ENV_CONFIG = {
|
||||
|
||||
@@ -62,6 +62,10 @@ export interface GltTicketOrder {
|
||||
avatar?: string;
|
||||
// 手机号码
|
||||
phone?: string;
|
||||
// 收货人姓名
|
||||
receiverName?: string;
|
||||
// 收货人手机号码
|
||||
receiverPhone?: string;
|
||||
// 排序(数字越小越靠前)
|
||||
sortNumber?: number;
|
||||
// 备注
|
||||
|
||||
@@ -410,7 +410,7 @@ export default function RiderOrders() {
|
||||
<View className="mt-3 bg-white rounded-lg">
|
||||
<View className="text-sm text-gray-700">
|
||||
<Text className="text-gray-500">客户:</Text>
|
||||
<Text>{o.nickname || '-'} {o.phone ? `(${o.phone})` : ''}</Text>
|
||||
<Text>{o.receiverName || o.nickname} {o.receiverPhone ? `(${o.receiverPhone})` : o.phone}</Text>
|
||||
</View>
|
||||
<View className="text-sm text-gray-700 mt-1">
|
||||
<Text className="text-gray-500">收货地址:</Text>
|
||||
|
||||
@@ -834,22 +834,31 @@ const OrderConfirm = () => {
|
||||
}
|
||||
}
|
||||
|
||||
const addrId = Number(editingOrderRes.addressId)
|
||||
// 编辑模式下优先使用默认地址(用户刚从地址列表选择的)
|
||||
// 新下单模式使用订单关联的地址
|
||||
let targetAddr: ShopUserAddress | undefined = undefined
|
||||
if (isEditMode) {
|
||||
// 编辑模式:优先使用默认地址
|
||||
targetAddr = addressRes?.find(a => a.isDefault) || addressRes?.[0]
|
||||
} else {
|
||||
// 新下单模式:使用订单关联的地址
|
||||
const addrId = Number(editingOrderRes?.addressId)
|
||||
const addrIdSafe = Number.isFinite(addrId) && addrId > 0 ? addrId : undefined
|
||||
if (addrIdSafe) {
|
||||
const hit = addressRes?.find(a => Number(a?.id) === addrIdSafe)
|
||||
if (hit?.id) {
|
||||
setAddress(hit)
|
||||
} else {
|
||||
targetAddr = addressRes?.find(a => Number(a?.id) === addrIdSafe)
|
||||
if (!targetAddr?.id) {
|
||||
try {
|
||||
const addr = await getShopUserAddress(addrIdSafe)
|
||||
if (addr?.id) setAddress(addr)
|
||||
targetAddr = await getShopUserAddress(addrIdSafe)
|
||||
} catch (e) {
|
||||
console.error('加载订单收货地址失败:', e)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (targetAddr?.id) {
|
||||
setAddress(targetAddr)
|
||||
}
|
||||
}
|
||||
// Tickets are non-blocking for first paint; load in background.
|
||||
loadUserTickets()
|
||||
} catch (err) {
|
||||
|
||||
Reference in New Issue
Block a user