diff --git a/static/js/app.js b/static/js/app.js
index 534e41f..43171b7 100644
--- a/static/js/app.js
+++ b/static/js/app.js
@@ -19749,6 +19749,10 @@ function loadOrderFollowers() {
_orderFollowersPromise = fetch('/api/users/followers').then(function(r){return r.json()}).then(function(res){
if (res.code === 0) domesticFollowers = res.data || [];
return domesticFollowers;
+ }).catch(function() {
+ // 人员接口异常不能阻塞订单列表;下单人下拉框随后使用空列表降级展示。
+ domesticFollowers = [];
+ return domesticFollowers;
});
return _orderFollowersPromise;
}
@@ -19799,6 +19803,7 @@ window.showSkuInfoModal = function(el, title) {
if (d.min_order_qty) fields.push(['最低起订量', d.min_order_qty]);
if (d.created_at) fields.push(['创建时间', d.created_at]);
var bomCount = (res.data.bom_materials || []).length;
+ var transitOrders = res.data.orders_in_transit || [];
if (bomCount > 0) fields.push(['关联包材', bomCount + ' 种']);
// 调试:记录API返回
@@ -19807,51 +19812,51 @@ window.showSkuInfoModal = function(el, title) {
console.log('[SKU] ' + code + ' 在途订单: ' + _debugTransit.length + ' 条');
}
- // 构建弹窗HTML
- var html = '
';
- html += '
';
- html += '
';
- fields.forEach(function(f, idx) {
- var k = f[0], v = f[1] !== undefined && f[1] !== null ? String(f[1]) : '-';
- if (idx % 2 === 0) html += '';
- html += '| ' + escHtml(k) + ' | ';
- html += '' + escHtml(v) + ' | ';
- if (idx % 2 === 1) html += '
';
+ // 构建订单 SKU 信息弹窗:标题、摘要卡片、字段卡片和在途表格分层展示。
+ var html = '';
+ html += '
';
+ html += '
' + escHtml(title || '订单 SKU 详情') + '
' + escHtml(code) + '
';
+ html += '
● 商品信息';
+ html += '
';
+ html += '
';
+ html += '
';
+ html += '
';
+ html += '
订单在途
' + transitOrders.length + ' 笔';
+ html += '
产品类型
' + escHtml(d.product_type || '-') + '';
+ html += '
';
+ html += '
📋 基础信息
';
+ fields.forEach(function(f) {
+ var k = f[0], v = f[1] !== undefined && f[1] !== null && f[1] !== '' ? String(f[1]) : '-';
+ html += '
' + escHtml(k) + '' + escHtml(v) + '
';
});
- if (fields.length % 2 === 1) html += '
| | ';
- html += '
';
+ html += '
';
// 订单在途列表
- var transitOrders = res.data.orders_in_transit || [];
- html += '
';
- html += '
📦 订单在途 (' + transitOrders.length + ')
';
- html += '
';
- html += '';
- html += '| 下单时间 | ';
- html += '编号 | ';
- html += '名称 | ';
- html += '下单数量 | ';
- html += '采购跟单 | ';
- html += '采购计划 | ';
+ html += '📦 订单在途
共 ' + transitOrders.length + ' 笔 ';
+ html += '';
+ html += '';
+ html += '| 下单时间 | ';
+ html += '编号 | ';
+ html += '名称 | ';
+ html += '下单数量 | ';
+ html += '采购跟单 | ';
+ html += '采购计划 | ';
html += '
';
if (transitOrders.length > 0) {
transitOrders.forEach(function(o) {
- html += '';
- html += '| ' + escHtml(o['下单时间'] || '-') + ' | ';
- html += '' + escHtml(o['编码'] || '') + ' | ';
- html += '' + escHtml(o['名称'] || '-') + ' | ';
- html += '' + (parseInt(o['下单数量']) || 0).toLocaleString() + ' | ';
- html += '' + escHtml(o['采购跟单'] || '-') + ' | ';
- html += '' + escHtml(o['采购计划'] || '-') + ' | ';
+ html += '
';
+ html += '| ' + escHtml(o['下单时间'] || '-') + ' | ';
+ html += '' + escHtml(o['编码'] || '') + ' | ';
+ html += '' + escHtml(o['名称'] || '-') + ' | ';
+ html += '' + (parseInt(o['下单数量']) || 0).toLocaleString() + ' | ';
+ html += '' + escHtml(o['采购跟单'] || '-') + ' | ';
+ html += '' + escHtml(o['采购计划'] || '-') + ' | ';
html += '
';
});
} else {
- html += '| - | - | - | 0 | - | - |
';
+ html += '| 暂无在途订单 |
';
}
- html += '
';
+ html += '
';
html += '
';
html += '