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] 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 {