From 4c232284f83350703779544f786018e1060c9f6c Mon Sep 17 00:00:00 2001 From: "pikachu1995@126.com" Date: Fri, 2 Oct 2026 15:28:25 +0800 Subject: [PATCH] =?UTF-8?q?feat(goods,=20order):=20=E5=AE=8C=E5=96=84?= =?UTF-8?q?=E9=A2=84=E7=BA=A6=E4=B8=8E=E8=AE=A2=E5=8D=95=E8=AF=A6=E6=83=85?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 预约规则区域的说明中补充可预约时段 - 价格区域的标题和说明改为根据商品类型动态展示 - 优化订单详情中配送信息的展示,仅在实物订单中显示 - 核销记录新增搜索功能,支持按商品名称和核销人筛选 - 精简订单列表搜索表单,移除不必要的字段,界面更简洁 --- .../components/AppointmentPublishPanel.vue | 2 +- .../goods/goods-seller/goodsOperationSec.vue | 57 +++++++++--- seller/src/views/order/order/orderDetail.vue | 91 +++++-------------- seller/src/views/order/order/orderList.vue | 14 +-- .../views/order/order/orderVerification.vue | 62 ++++++++++++- 5 files changed, 130 insertions(+), 96 deletions(-) diff --git a/seller/src/views/goods/goods-seller/components/AppointmentPublishPanel.vue b/seller/src/views/goods/goods-seller/components/AppointmentPublishPanel.vue index b1035f9a1..f35d3d7a8 100644 --- a/seller/src/views/goods/goods-seller/components/AppointmentPublishPanel.vue +++ b/seller/src/views/goods/goods-seller/components/AppointmentPublishPanel.vue @@ -159,7 +159,7 @@ - + {{ sectionNo("appointment") }}

预约规则

-

服务模式、可约日期与预约政策

+

服务模式、可约日期、时段与预约政策

@@ -237,19 +237,23 @@ :sku-info="skuInfo" division-target="#appointment-slot-mount" /> +
+
时段划分
+
+
{{ sectionNo("price") }}
-

价格库存

-

销售模式、时段、规格与库存

+

{{ priceSectionTitle }}

+

{{ priceSectionDesc }}

- +
-
-
时段划分
- -
-
+
@@ -569,7 +576,7 @@ {{ sectionNo("other") }}

其他信息

-

上架状态、运费模板与店内分类

+

{{ otherSectionDesc }}

@@ -715,6 +722,24 @@ export default { needsLogistics() { return this.baseInfoForm.goodsType === "PHYSICAL_GOODS"; }, + /** 预约、卡券固定零售,不展示销售模式切换 */ + showSalesModel() { + return !this.isECouponGoods && !this.isAppointmentGoods; + }, + priceSectionTitle() { + if (this.isAppointmentGoods) return "规格与可约数量"; + if (this.isECouponGoods) return "规格价格"; + return "价格库存"; + }, + priceSectionDesc() { + if (this.isAppointmentGoods) return "规格、售价与各时段可预约数量"; + if (this.isECouponGoods) return "规格与售价,库存由卡池管理"; + return "销售模式、规格与库存"; + }, + otherSectionDesc() { + if (this.needsLogistics) return "上架状态、运费模板与店内分类"; + return "上架状态与店内分类"; + }, sectionTabs() { const tabs = [ { name: "basic", label: "基础信息" }, @@ -1568,7 +1593,11 @@ export default { this.wholesaleData = response.result.wholesaleList; } - if (response.result.salesModel === "WHOLESALE") { + if (this.isECouponGoods || this.isAppointmentGoods) { + this.baseInfoForm.salesModel = "RETAIL"; + } + + if (response.result.salesModel === "WHOLESALE" && this.showSalesModel) { this.baseInfoForm.weight = response.result.skuList[0].weight; } @@ -2228,11 +2257,11 @@ export default { } if (this.isAppointmentGoods) { pushData.push({ - title: "预约规则", + title: "可预约数量", slot: "appointmentCapacity", minWidth: 160, }); - } else { + } else if (!this.isECouponGoods) { pushData.push({ title: "库存", slot: "quantity", @@ -2569,7 +2598,7 @@ export default { } if (!this.$refs.appointmentPanel?.validateDivision()) { this.submitLoading = false; - this.jumpToTab("price"); + this.jumpToTab("appointment"); return; } Object.assign(submit, this.$refs.appointmentPanel.buildSubmitPayload()); diff --git a/seller/src/views/order/order/orderDetail.vue b/seller/src/views/order/order/orderDetail.vue index 368e2405b..8172da052 100644 --- a/seller/src/views/order/order/orderDetail.vue +++ b/seller/src/views/order/order/orderDetail.vue @@ -4,9 +4,9 @@
调整价格 - 修改收货地址 + 修改收货地址 查看物流 @@ -14,22 +14,22 @@ {{ isAppointmentOrder ? "预约核销" : "订单核销" }} - 发货 + 发货 添加备注 下载面单 打印电子面单
-
+
核验码:
{{ orderInfo.order.verificationCode }}
@@ -96,7 +96,7 @@
-
+
发票信息:
暂无发票信息
@@ -148,7 +148,7 @@
-
+
收货信息:
{{ orderInfo.order.consigneeName }} @@ -157,7 +157,7 @@ {{ orderInfo.order.consigneeDetail }}
-
+
自提信息:
{{ orderInfo.order.storeAddressPath }} @@ -176,61 +176,7 @@
{{ orderInfo.order.remark }}
- - - - -
+
配送方式:
{{ orderInfo.deliveryMethodValue }} @@ -239,7 +185,7 @@
- + 发货记录 @@ -434,7 +380,7 @@ {{item.promotionName}}:| ¥{{ $filters.unitPrice(item.discountPrice) }} --> -
  • +
  • 运费: {{ $filters.unitPrice(orderInfo.order.freightPrice, "¥") @@ -1098,6 +1044,17 @@ export default { isNonPhysicalOrder() { return this.isVirtualOrder || this.isECouponOrder || this.isAppointmentOrder; }, + /** 实物订单才展示收货、配送、运费和发货记录 */ + showDelivery() { + return !this.isNonPhysicalOrder; + }, + /** 实物订单始终展示发票;卡密、预约、虚拟仅在买家索取发票时展示 */ + showInvoice() { + const order = this.orderInfo && this.orderInfo.order; + if (!order) return false; + if (order.needReceipt == true) return true; + return this.showDelivery; + }, isAppointmentOrder() { const t = this.orderInfo?.order?.orderType; // 详情未回时用路由 query 兜底 diff --git a/seller/src/views/order/order/orderList.vue b/seller/src/views/order/order/orderList.vue index 89d43732c..36fe89b23 100644 --- a/seller/src/views/order/order/orderList.vue +++ b/seller/src/views/order/order/orderList.vue @@ -11,16 +11,13 @@ - - - @@ -29,16 +26,12 @@ - - - - @@ -205,9 +198,7 @@ export default { orderType: "", orderSn: "", keywords: "", - goodsName: "", goodsType: "", - shipName: "", orderStatus: "", paymentMethod: "", orderPromotionType: "", @@ -460,8 +451,7 @@ export default { this.getDataList(); }, getOrderNumData() { - // orderNum 接口仅查 li_order;keywords/goodsName 会引用 oi 字段。goodsType 用 EXISTS,可以带上。 - const { orderStatus, keywords, goodsName, ...searchParams } = this.searchForm; + const { orderStatus, pageNumber, pageSize, sort, order, ...searchParams } = this.searchForm; API_Order.getOrderNum(searchParams) .then((res) => { if (res.success) { diff --git a/seller/src/views/order/order/orderVerification.vue b/seller/src/views/order/order/orderVerification.vue index cfa4263cd..7ba235eef 100644 --- a/seller/src/views/order/order/orderVerification.vue +++ b/seller/src/views/order/order/orderVerification.vue @@ -20,6 +20,37 @@ + + + + + + + + + + + + 搜索 + + @@ -104,6 +135,11 @@ export default { total: 0, pageNumber: 1, pageSize: 20, + verifiedRange: null, + recordQuery: { + goodsName: "", + verifierName: "", + }, }; }, methods: { @@ -175,12 +211,24 @@ export default { this.pageNumber = 1; this.loadRecords(); }, + searchRecords() { + this.pageNumber = 1; + this.loadRecords(); + }, loadRecords() { this.loading = true; - getVerificationRecords({ + const range = this.verifiedRange; + const params = { pageNumber: this.pageNumber, pageSize: this.pageSize, - }) + goodsName: (this.recordQuery.goodsName || "").trim(), + verifierName: (this.recordQuery.verifierName || "").trim(), + }; + if (range && range.length === 2) { + params.startTime = range[0]; + params.endTime = range[1]; + } + getVerificationRecords(params) .then((res) => { this.loading = false; if (res.success) { @@ -203,6 +251,16 @@ export default { gap: 16px; padding: 12px 0 4px; } +.record-search { + display: flex; + flex-wrap: wrap; + align-items: center; + gap: 8px 16px; + margin-bottom: 12px; +} +.record-search :deep(.el-form-item) { + margin-bottom: 0; +} .preview-meta { display: flex; gap: 24px;