发货后页面展示。

This commit is contained in:
Dev
2026-10-14 16:43:39 +08:00
parent 645a037126
commit cc0c6729a7
7 changed files with 103 additions and 17 deletions
@@ -3,7 +3,7 @@
return [
'Id' => '主键ID',
'Order_no' => '订单号',
'Order_goods_id' => '订单商品ID',
'Order_goods_spu_id' => '商品ID',
'Code' => '激活码',
'Images' => '多图',
'Files' => '多文件',
@@ -7,9 +7,9 @@
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('Order_goods_id')}:</label>
<label class="control-label col-xs-12 col-sm-2">{:__('Order_goods_spu_id')}:</label>
<div class="col-xs-12 col-sm-8">
<input id="c-order_goods_id" min="0" data-rule="required" data-field="goods_name" data-format-item="{id}-{order_no}-{goods_name}" data-source="order/goods/index" class="form-control selectpage" name="row[order_goods_id]" type="text" value="">
<input id="c-order_goods_spu_id" min="0" data-rule="required" data-primary-key="spu_id" data-field="goods_name" data-format-item="{spu_id}-{order_no}-{goods_name}" data-source="order/goods/index" class="form-control selectpage" name="row[order_goods_spu_id]" type="text" value="">
</div>
</div>
<div class="form-group">
@@ -7,9 +7,9 @@
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('Order_goods_id')}:</label>
<label class="control-label col-xs-12 col-sm-2">{:__('Order_goods_spu_id')}:</label>
<div class="col-xs-12 col-sm-8">
<input id="c-order_goods_id" min="0" data-rule="required" data-field="goods_name" data-format-item="{id}-{order_no}-{goods_name}" data-source="order/goods/index" class="form-control selectpage" name="row[order_goods_id]" type="text" value="{$row.order_goods_id|htmlentities}">
<input id="c-order_goods_spu_id" min="0" data-rule="required" data-primary-key="spu_id" data-field="goods_name" data-format-item="{spu_id}-{order_no}-{goods_name}" data-source="order/goods/index" class="form-control selectpage" name="row[order_goods_spu_id]" type="text" value="{$row.order_goods_spu_id|htmlentities}">
</div>
</div>
<div class="form-group">
@@ -27,7 +27,7 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
{checkbox: true},
{field: 'id', title: __('Id')},
{field: 'order_no', title: __('Order_no'), operate: 'LIKE'},
{field: 'order_goods_id', title: __('Order_goods_id')},
{field: 'order_goods_spu_id', title: __('Order_goods_spu_id')},
{field: 'code', title: __('Code'), operate: 'LIKE'},
{field: 'images', title: __('Images'), operate: false, events: Table.api.events.image, formatter: Table.api.formatter.images},
{field: 'files', title: __('Files'), operate: false, formatter: Table.api.formatter.files},
@@ -50,7 +50,7 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
},
api: {
bindevent: function () {
$("#c-order_goods_id").data("params", function (obj) {
$("#c-order_goods_spu_id").data("params", function (obj) {
//obj为SelectPage对象
return {custom: {order_no: $("#c-order_no").val()}};
});
@@ -18,6 +18,8 @@ Page({
backRefresh: false, // 用于接收其他页面back时的状态
formatCreateTime: '', //格式化订单创建时间
logisticsNodes: [],
shipFiles: [], // 发货附件 [{url, name}],为空时隐藏
shipImages: [], // 发货凭证图片 URL 列表,为空时隐藏
/** 订单评论状态 */
orderHasCommented: true,
},
@@ -115,6 +117,8 @@ Page({
this.setData({
order,
_order,
shipFiles: this.getShipFiles(order),
shipImages: (order.orderShip?.imagesList || []).map((item) => item.url).filter(Boolean),
formatCreateTime: order.formatCreateTime, // 格式化订单创建时间
countDownTime: this.computeCountDownTime(order),
addressEditable: false,
@@ -128,6 +132,29 @@ Page({
});
},
// 发货附件:优先取发货单上传的附件,旧订单没有时回退到商品的下载文件
getShipFiles(order) {
const files = (order.orderShip?.filesList || []).filter((item) => item.url);
if (files.length) {
return files;
}
const goodsInfo = order.orderGoods?.[0]?.goodsInfo;
if (goodsInfo?.downloadFile) {
return [{ url: goodsInfo.downloadFile, name: goodsInfo.downloadFileBasename || goodsInfo.downloadFile }];
}
return [];
},
// 凭证图片预览
onShipImagePreview(e) {
const { index } = e.currentTarget.dataset;
const { shipImages } = this.data;
wx.previewImage({
current: shipImages[index],
urls: shipImages,
});
},
// 展开物流节点
flattenNodes(nodes) {
return (nodes || []).reduce((res, node) => {
@@ -224,14 +251,17 @@ Page({
copyText(e) {
const { text } = e.currentTarget.dataset;
if (!text) {
return;
}
wx.setClipboardData({
data: text,
success(res) {
data: String(text),
success() {
wx.showToast({
title: '复制成功',
icon: 'success',
duration: 2000
})
});
}
});
},
@@ -58,14 +58,27 @@
</view>
</view> -->
<block wx:if="{{order.orderShip}}">
<view class="pay-item">
<text>下载地址</text>
<view class="pay-item__right">
<text class="order-no normal-color">{{order.orderGoods[0].goodsInfo.downloadFileBasename}}</text>
<view class="pay-item__right__copy" data-text="{{order.orderGoods[0].goodsInfo.downloadFile}}" bind:tap="copyText">复制</view>
<block wx:if="{{shipFiles.length}}">
<view class="pay-item">
<text>附件下载</text>
<text class="pay-item__tips">点击复制地址,在浏览器中打开下载</text>
</view>
</view>
<view class="border-bottom border-bottom-margin" />
<view class="ship-file" wx:for="{{shipFiles}}" wx:key="url" data-text="{{item.url}}" bind:tap="copyText">
<t-icon name="file" size="32rpx" color="#787878" />
<text class="ship-file__name">{{item.name}}</text>
<view class="ship-file__copy">复制</view>
</view>
<view class="border-bottom border-bottom-margin" />
</block>
<block wx:if="{{shipImages.length}}">
<view class="pay-item">
<text>凭证图片</text>
</view>
<view class="ship-images">
<image wx:for="{{shipImages}}" wx:key="*this" class="ship-images__item" mode="aspectFill" src="{{item}}" data-index="{{index}}" bind:tap="onShipImagePreview" />
</view>
<view class="border-bottom border-bottom-margin" />
</block>
<view class="pay-item">
<text>激活码</text>
<view class="pay-item__right">
@@ -199,6 +199,49 @@
color: var(--text-primary);
}
.order-detail .pay-detail .pay-item .pay-item__tips {
font-size: 22rpx;
color: var(--text-placeholder);
}
.order-detail .ship-file {
display: flex;
align-items: center;
padding: 16rpx 20rpx;
margin-bottom: 16rpx;
border-radius: 12rpx;
background-color: var(--bg-page);
}
.order-detail .ship-file__name {
flex: 1;
margin: 0 16rpx;
font-size: 24rpx;
line-height: 36rpx;
color: var(--text-primary);
word-break: break-all;
}
.order-detail .ship-file__copy {
flex-shrink: 0;
font-size: 24rpx;
color: var(--brand);
}
.order-detail .ship-images {
display: flex;
flex-wrap: wrap;
gap: 16rpx;
padding-bottom: 8rpx;
}
.order-detail .ship-images__item {
width: 160rpx;
height: 160rpx;
border-radius: 12rpx;
background-color: var(--bg-page);
}
.order-detail .pay-detail .pay-service {
width: 100%;
height: 72rpx;