From 212ed891eba94c59d663c7bbbb156acdbc3a0f12 Mon Sep 17 00:00:00 2001
From: Jacob <hlnie@tohours.com>
Date: 星期二, 20 十月 2026 15:12:13 +0800
Subject: [PATCH] fix: 订单列表及商品组件处理空值展示并统一数字转换避免显示 null/NaN
---
components/orderListGoods/index.vue | 8 ++++----
pages/users/order_list/index.vue | 18 +++++++++++-------
main.js | 17 +++++++++++------
3 files changed, 26 insertions(+), 17 deletions(-)
diff --git a/components/orderListGoods/index.vue b/components/orderListGoods/index.vue
index 58b62ed..3ad3220 100644
--- a/components/orderListGoods/index.vue
+++ b/components/orderListGoods/index.vue
@@ -9,8 +9,8 @@
</view>
<view class='text acea-row row-between'>
<view class="acea-row row-between-wrapper name_box">
- <view class='name line2'>{{ items.storeName }}</view>
- <view class="num">{{ items.sku }} x{{ items.cartNum }}</view>
+ <view class='name line2'>{{ items.storeName || '' }}</view>
+ <view class="num">{{ items.sku || '' }} x{{ toNumber(items.cartNum) }}</view>
</view>
<view class='info'></view>
<view class='money'>
@@ -34,8 +34,8 @@
<view class="gift-tag">璧犲搧</view>
</view>
<view class='text' style="margin-left: 20rpx;">
- <view class='line1'>{{ gift.giftName }}</view>
- <view class='infor'>x{{ gift.giftNum }}</view>
+ <view class='line1'>{{ gift.giftName || '' }}</view>
+ <view class='infor'>x{{ toNumber(gift.giftNum) }}</view>
</view>
</view>
</view>
diff --git a/main.js b/main.js
index 7755f77..06ff883 100644
--- a/main.js
+++ b/main.js
@@ -228,16 +228,21 @@
Vue.mixin(pageLog);
import BigNumber from 'bignumber.js';
Vue.prototype.toNumber = function(number) {
- if (isNaN(number)) {
- return number;
- } else {
- return BigNumber(number).toNumber();
+ // null / undefined / 绌哄�� / 闈炴暟瀛楃粺涓�杩斿洖 0锛岄伩鍏嶉〉闈㈡樉绀� null銆乽ndefined銆丯aN
+ if (number === null || number === undefined || number === '' || isNaN(number)) {
+ return 0;
}
+ const result = BigNumber(number).toNumber();
+ return isNaN(result) ? 0 : result;
}
Vue.prototype.toThousands = function(num) {
- if (num < 1000) return num;
- if (Number.isInteger(num)) {
+ // null / undefined / 绌哄�� / 闈炴暟瀛楃粺涓�杩斿洖 0锛岄伩鍏嶉〉闈㈡樉绀� null銆乽ndefined銆丯aN
+ if (num === null || num === undefined || num === '' || isNaN(num)) {
+ return 0;
+ }
+ if (Number(num) < 1000) return num;
+ if (Number.isInteger(Number(num))) {
return String(num).replace(/(?!^)(?=(\d{3})+$)/g, ',')
} else {
return String(num).replace(/(?!^)(?=(\d{3})+\.)/g, ',')
diff --git a/pages/users/order_list/index.vue b/pages/users/order_list/index.vue
index 111602b..03bc685 100644
--- a/pages/users/order_list/index.vue
+++ b/pages/users/order_list/index.vue
@@ -37,14 +37,14 @@
<view class='title acea-row row-between-wrapper'>
<view class="acea-row row-middle">
<text class="sign cart-color acea-row row-center-wrapper"
- v-if="item.activityType !== '鏅��' && item.activityType !== '鏍搁攢'">{{ item.activityType
- }}</text>
+ v-if="item.activityType && item.activityType !== '鏅��' && item.activityType !== '鏍搁攢'">{{
+ item.activityType }}</text>
<!-- <text class="sign cart-color acea-row row-center-wrapper" v-if="item.bargainId != 0">鐮嶄环</text>
<text class="sign cart-color acea-row row-center-wrapper" v-else-if="item.storeOrder.combinationId != 0">鎷煎洟</text>
<text class="sign cart-color acea-row row-center-wrapper" v-else-if="item.storeOrder.seckillId != 0">绉掓潃</text> -->
<view>{{ item.createTime }}</view>
</view>
- <view class='font-color'>{{ item.orderStatus }}</view>
+ <view class='font-color'>{{ item.orderStatus || '' }}</view>
<!-- <view v-if="item.status?item.status.type == 0:0" class='font-color'>寰呬粯娆�</view>
<view v-else-if="item.status?item.status.type == 1:0 && item.storeOrder.shippingType==1" class='font-color'>寰呭彂璐�</view>
<view v-else-if="item.status?item.status.type == 2:0 && item.storeOrder.shippingType==1" class='font-color'>寰呮敹璐�</view>
@@ -54,8 +54,7 @@
</view>
<orderListGoods :orderInfoList="item.orderInfoList"
:zonePromotionList="item.zonePromotionList || []"></orderListGoods>
- <view class='totalPrice'>鍏眥{ item.totalNum + getGiftCount(item.zonePromotionList || [])
- }}浠跺晢鍝侊紝鎬婚噾棰�
+ <view class='totalPrice'>鍏眥{ getTotalNum(item) }}浠跺晢鍝侊紝鎬婚噾棰�
<text class='money font-color' v-if="getPayWay(item.payPrice, item.payCareBean) == 1">
<text class="color-blue">锟{ toNumber(item.payPrice) }}</text>
<text class="color-blue">+{{ toThousands(toNumber(item.payCareBean)) }}鎮﹀吇璞�</text>
@@ -254,6 +253,9 @@
});
return count;
},
+ getTotalNum(item) {
+ return (Number(item.totalNum) || 0) + this.getGiftCount(item.zonePromotionList || []);
+ },
getPayWay(price, payCareBean) {
console.log('闃挎柉椤垮彂閫佸埌鍙戦�佸湴鏂�', Number(price) > 0 && Number(payCareBean) > 0);
if (Number(price) > 0 && Number(payCareBean) > 0) {
@@ -312,7 +314,9 @@
getOrderData: function () {
let that = this;
orderData().then(res => {
- that.$set(that, 'orderData', res.data);
+ that.$set(that, 'orderData', (res && res.data) || {});
+ }).catch(() => {
+ that.$set(that, 'orderData', {});
})
},
/**
@@ -447,7 +451,7 @@
page: that.page,
limit: that.limit,
}).then(res => {
- let list = res.data.list || [];
+ let list = (res && res.data && res.data.list) || [];
let loadend = list.length < that.limit;
that.orderList = that.$util.SplitArray(list, that.orderList);
that.$set(that, 'orderList', that.orderList);
--
Gitblit v1.4.0