From edae05fd8582bc1001fbcb209969ca1bdd0eef7a Mon Sep 17 00:00:00 2001 From: wangfukang <15630117759@163.com> Date: Wed, 17 Jun 2026 10:01:17 +0800 Subject: [PATCH 1/2] 1 --- src/api/app.js | 5 ++ src/views/app/shop/addEdit.vue | 135 +++++++++++++++++++++++++++++++++ vue.config.js | 4 +- 3 files changed, 142 insertions(+), 2 deletions(-) diff --git a/src/api/app.js b/src/api/app.js index 16c17d7..ea20bfd 100644 --- a/src/api/app.js +++ b/src/api/app.js @@ -412,6 +412,11 @@ export const editShopTakeway = (params) => { export const editShop = (params) => { return putRequest('/app/shop/edit', params) } + +export const findShopWorkerByMobile = (params) => { + return getRequest('/app/shop/findWorkerByMobile', params) +} + //删除评论 export const deleteComment = (params) => { return postRequest('/app/comment/deleteByOrderId', params) diff --git a/src/views/app/shop/addEdit.vue b/src/views/app/shop/addEdit.vue index 37164da..ee0a502 100644 --- a/src/views/app/shop/addEdit.vue +++ b/src/views/app/shop/addEdit.vue @@ -69,6 +69,52 @@ + 商家自配送 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -108,6 +154,7 @@ import { addShop, editShop, + findShopWorkerByMobile, initShopArea, loadShopArea, } from "@/api/app"; @@ -142,9 +189,13 @@ title: "", passColor: "", submitLoading: false, + workerLoading: false, + workerMobile: "", maxHeight: 510, form: { address: [], + supportShopDelivery: 0, + orderBkge: 0, }, formValidate: { // 表单验证规则 @@ -192,9 +243,45 @@ message: "邮箱格式不正确" }, ], + workerId: [{ + validator: (rule, value, callback) => { + if (this.form.supportShopDelivery == 1 && !this.form.workerId) { + callback(new Error("请查询并绑定配送员")); + } else { + callback(); + } + }, + trigger: "change" + }], + shopDeliveryLocation: [{ + validator: (rule, value, callback) => { + if (this.form.supportShopDelivery == 1 && !value) { + callback(new Error("请选择送达位置")); + } else { + callback(); + } + }, + trigger: "change" + }], + shopDeliveryDuration: [{ + validator: (rule, value, callback) => { + if (this.form.supportShopDelivery == 1 && (!value || value <= 0)) { + callback(new Error("请输入配送时长")); + } else { + callback(); + } + }, + trigger: "change" + }], }, }; }, + computed: { + boundWorkerText() { + if (!this.form.workerId) return ""; + return `${this.form.workerName || ""} ${this.form.workerPhone || ""}`; + }, + }, methods: { init(v) { this.getRoleList(v); @@ -237,10 +324,52 @@ handleSelectShopAreaTree(v) { this.form.shopArea = v; }, + handleOrderBkgeChange(value) { + const numberValue = Number(value || 0); + this.$set(this.form, "orderBkge", Number(numberValue.toFixed(1))); + }, + findWorker() { + if (!this.workerMobile) { + this.$Message.warning("请输入配送员手机号"); + return; + } + this.workerLoading = true; + findShopWorkerByMobile({ + mobile: this.workerMobile + }).then((res) => { + this.workerLoading = false; + if (res.success) { + this.$set(this.form, "workerId", res.result.workerId); + this.$set(this.form, "workerName", res.result.workerName); + this.$set(this.form, "workerPhone", res.result.workerPhone || res.result.mobile); + this.$Message.success("配送员绑定成功"); + } else { + this.$Message.error(res.message || "未查询到配送员"); + } + }).catch(() => { + this.workerLoading = false; + }); + }, + normalizeSelfDeliveryForm() { + if (this.form.supportShopDelivery == null) { + this.$set(this.form, "supportShopDelivery", 0); + } + this.form.supportShopDelivery = Number(this.form.supportShopDelivery); + this.form.orderBkge = Number(Number(this.form.orderBkge || 0).toFixed(1)); + if (this.form.supportShopDelivery != 1) { + this.form.orderBkge = 0; + this.form.shopDeliveryLocation = null; + this.form.shopDeliveryDuration = null; + this.form.workerId = ""; + this.form.workerName = ""; + this.form.workerPhone = ""; + } + }, changePass(v, grade, strength) { this.form.passStrength = strength; }, submit() { + this.normalizeSelfDeliveryForm(); this.$refs.form.validate((valid) => { if (valid) { if (typeof this.form.chargeTime == "object") { @@ -330,6 +459,9 @@ this.$refs.shopAreaTree.setData(data.shopArea, data.shopAreaTitle); // 回显 this.form = data; + this.form.supportShopDelivery = data.supportShopDelivery == null ? 0 : Number(data.supportShopDelivery); + this.form.orderBkge = data.orderBkge == null ? 0 : Number(data.orderBkge); + this.workerMobile = data.workerPhone || ""; } else { // 添加 //this.$refs.shopAreaTree.setData("", ""); @@ -337,7 +469,10 @@ /*type: 0, sex: "", address: [],*/ + supportShopDelivery: 0, + orderBkge: 0, }; + this.workerMobile = ""; } this.visible = value; }, diff --git a/vue.config.js b/vue.config.js index 4fbad80..2e93c3b 100644 --- a/vue.config.js +++ b/vue.config.js @@ -7,8 +7,8 @@ module.exports = { port: 8889, proxy: { '/hiver': { - //target: 'https://hbkuaishi.com', // 正式1 - target: 'http://192.168.100.30:8888', // 本地 + target: 'https://hbkuaishi.com', // 正式1 + //target: 'http://192.168.100.30:8888', // 本地 ws: false }, '/foo': { From ba7690a64f9025e955e3b54e500ae6eee8cb8c88 Mon Sep 17 00:00:00 2001 From: wangfukang <15630117759@163.com> Date: Wed, 17 Jun 2026 16:43:59 +0800 Subject: [PATCH 2/2] 1 --- src/views/app/shop/addEdit.vue | 145 +++++++++++++++--- .../hiver/shopArea-tree-choose.vue | 16 +- 2 files changed, 141 insertions(+), 20 deletions(-) diff --git a/src/views/app/shop/addEdit.vue b/src/views/app/shop/addEdit.vue index ee0a502..8768a51 100644 --- a/src/views/app/shop/addEdit.vue +++ b/src/views/app/shop/addEdit.vue @@ -114,6 +114,32 @@ + 中转配送 + + + + + + + + + + + + + + + + + + + + + + @@ -196,6 +222,7 @@ address: [], supportShopDelivery: 0, orderBkge: 0, + supportTransferDelivery: 0, }, formValidate: { // 表单验证规则 @@ -273,6 +300,36 @@ }, trigger: "change" }], + transferDeliveryDuration: [{ + validator: (rule, value, callback) => { + if (this.form.supportTransferDelivery == 1 && (!value || value <= 0)) { + callback(new Error("请输入中转配送时长")); + } else { + callback(); + } + }, + trigger: "change" + }], + transferAddressId: [{ + validator: (rule, value, callback) => { + if (this.form.supportTransferDelivery == 1 && !value) { + callback(new Error("请输入中转地点ID")); + } else { + callback(); + } + }, + trigger: "change" + }], + transferAddressName: [{ + validator: (rule, value, callback) => { + if (this.form.supportTransferDelivery == 1 && !value) { + callback(new Error("请输入中转地点名称")); + } else { + callback(); + } + }, + trigger: "change" + }], }, }; }, @@ -322,7 +379,24 @@ }); }, handleSelectShopAreaTree(v) { - this.form.shopArea = v; + this.form.shopArea = Array.isArray(v) ? (v[0] || "") : v; + }, + handleSelectTransferAddress(v) { + const value = Array.isArray(v) ? v[0] : v; + this.form.transferAddressId = value || ""; + if (!value) { + this.form.transferAddressName = ""; + return; + } + this.$nextTick(() => { + if (this.$refs.transferAddressTree) { + this.form.transferAddressName = this.$refs.transferAddressTree.shopAreaTitle || this.form.transferAddressName || ""; + } + }); + }, + handleClearTransferAddress() { + this.form.transferAddressId = ""; + this.form.transferAddressName = ""; }, handleOrderBkgeChange(value) { const numberValue = Number(value || 0); @@ -358,18 +432,42 @@ this.form.orderBkge = Number(Number(this.form.orderBkge || 0).toFixed(1)); if (this.form.supportShopDelivery != 1) { this.form.orderBkge = 0; - this.form.shopDeliveryLocation = null; - this.form.shopDeliveryDuration = null; + this.form.shopDeliveryLocation = ""; + this.form.shopDeliveryDuration = ""; this.form.workerId = ""; this.form.workerName = ""; this.form.workerPhone = ""; } }, + normalizeTransferDeliveryForm() { + if (this.form.supportTransferDelivery == null) { + this.$set(this.form, "supportTransferDelivery", 0); + } + this.form.supportTransferDelivery = Number(this.form.supportTransferDelivery); + if (this.form.supportTransferDelivery != 1) { + this.form.transferDeliveryDuration = ""; + this.form.transferAddressId = ""; + this.form.transferAddressName = ""; + } else { + this.form.transferDeliveryDuration = Number(this.form.transferDeliveryDuration || 0); + } + }, + cleanDisplayFields() { + delete this.form.users + delete this.form.products + delete this.form.shopTakeaway + delete this.form.clerks + delete this.form.keyWord + delete this.form.isAdmin + delete this.form.saleCounts + delete this.form.groupDeliveryTime + }, changePass(v, grade, strength) { this.form.passStrength = strength; }, submit() { this.normalizeSelfDeliveryForm(); + this.normalizeTransferDeliveryForm(); this.$refs.form.validate((valid) => { if (valid) { if (typeof this.form.chargeTime == "object") { @@ -381,30 +479,23 @@ if (typeof this.form.endTime == "object") { this.form.endTime = this.format(this.form.endTime, "yyyy-MM-dd"); } - debugger; - if (this.form.users == '' || this.form.users == null) { - delete this.form.users; - } // 处理商品分类的名称 if (this.form.shopType != '' && this.form.shopType != null) { this.shopType.forEach(item => { - debugger; if (this.form.shopType == item.value) { this.form.shopTypeTitle = item.title; } }); } this.form.shopMangerId = this.form.shopOwnerId + this.cleanDisplayFields() if (this.type == "1") { // 编辑 this.submitLoading = true; - delete this.form.products delete this.form.saleCount - delete this.form.shopTakeaway delete this.form.storeFlag delete this.form.printingMethod delete this.form.printingMethod - editShop(this.form).then((res) => { this.submitLoading = false; if (res.success) { @@ -455,24 +546,42 @@ } else { data.address = []; } - // 商圈 - this.$refs.shopAreaTree.setData(data.shopArea, data.shopAreaTitle); // 回显 - this.form = data; - this.form.supportShopDelivery = data.supportShopDelivery == null ? 0 : Number(data.supportShopDelivery); - this.form.orderBkge = data.orderBkge == null ? 0 : Number(data.orderBkge); - this.workerMobile = data.workerPhone || ""; + this.form = Object.assign({}, data, { + supportShopDelivery: data.supportShopDelivery == null ? 0 : Number(data.supportShopDelivery), + orderBkge: data.orderBkge == null ? 0 : Number(data.orderBkge), + shopDeliveryLocation: data.shopDeliveryLocation == null ? null : Number(data.shopDeliveryLocation), + shopDeliveryDuration: data.shopDeliveryDuration == null ? null : Number(data.shopDeliveryDuration), + supportTransferDelivery: data.supportTransferDelivery == null ? 0 : Number(data.supportTransferDelivery), + transferDeliveryDuration: data.transferDeliveryDuration == null ? null : Number(data.transferDeliveryDuration), + transferAddressId: data.transferAddressId || "", + transferAddressName: data.transferAddressName || "", + }); + this.workerMobile = this.form.workerPhone || ""; + this.$nextTick(() => { + // 商圈 + this.$refs.shopAreaTree.setData(this.form.shopArea, this.form.shopAreaTitle); + if (this.$refs.transferAddressTree) { + this.$refs.transferAddressTree.setData(this.form.transferAddressId, this.form.transferAddressName); + } + }); } else { // 添加 - //this.$refs.shopAreaTree.setData("", ""); this.form = { /*type: 0, sex: "", address: [],*/ supportShopDelivery: 0, orderBkge: 0, + supportTransferDelivery: 0, }; this.workerMobile = ""; + this.$nextTick(() => { + this.$refs.shopAreaTree.setData("", ""); + if (this.$refs.transferAddressTree) { + this.$refs.transferAddressTree.setData("", ""); + } + }); } this.visible = value; }, diff --git a/src/views/my-components/hiver/shopArea-tree-choose.vue b/src/views/my-components/hiver/shopArea-tree-choose.vue index 6355920..1f67e21 100644 --- a/src/views/my-components/hiver/shopArea-tree-choose.vue +++ b/src/views/my-components/hiver/shopArea-tree-choose.vue @@ -3,13 +3,13 @@
- +
-
+
@@ -62,6 +62,18 @@ type: String, default: "点击选择区域", }, + placement: { + type: String, + default: "right", + }, + width: { + type: [Number, String], + default: 250, + }, + treeMaxHeight: { + type: String, + default: "500px", + }, }, data() { return {