wangfukang 1 month ago
parent
commit
ba7690a64f
  1. 145
      src/views/app/shop/addEdit.vue
  2. 16
      src/views/my-components/hiver/shopArea-tree-choose.vue

145
src/views/app/shop/addEdit.vue

@ -114,6 +114,32 @@
</FormItem>
</Col>
</Row>
<Divider>中转配送</Divider>
<Row :gutter="32">
<Col span="12">
<FormItem label="是否支持中转配送" prop="supportTransferDelivery">
<RadioGroup v-model="form.supportTransferDelivery">
<Radio :label="1"></Radio>
<Radio :label="0"></Radio>
</RadioGroup>
</FormItem>
</Col>
<Col span="12" v-if="form.supportTransferDelivery == 1">
<FormItem label="中转配送时长(分钟)" prop="transferDeliveryDuration">
<InputNumber v-model="form.transferDeliveryDuration" :min="1" :precision="0" style="width: 100%" />
</FormItem>
</Col>
</Row>
<Row :gutter="32" v-if="form.supportTransferDelivery == 1">
<Col span="24">
<FormItem label="中转地点" prop="transferAddressId" class="form-noheight">
<shopArea-tree-choose @on-change="handleSelectTransferAddress"
@on-clear="handleClearTransferAddress" ref="transferAddressTree"
text="选择中转地点" placeholder="点击选择中转地点"
placement="top" tree-max-height="260px"></shopArea-tree-choose>
</FormItem>
</Col>
</Row>
<Divider />
<Row :gutter="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;
},

16
src/views/my-components/hiver/shopArea-tree-choose.vue

@ -3,13 +3,13 @@
<div style="display: flex;">
<Input v-model="shopAreaTitle" readonly :size="size" :disabled="disabled" :prefix="prefix" :suffix="suffix"
style="margin-right: 10px" :placeholder="placeholder" :clearable="clearable" @on-clear="clearSelect" />
<Poptip transfer trigger="click" placement="right" title="选择区域" width="250">
<Poptip transfer trigger="click" :placement="placement" title="选择区域" :width="width">
<Button :size="size" :disabled="disabled" :icon="icon" :type="type" :shape="shape"
:ghost="ghost">{{ text }}</Button>
<div slot="content">
<Input v-model="searchKey" suffix="ios-search" @on-change="searchDep" placeholder="输入区域名搜索"
clearable />
<div class="dep-tree-bar">
<div class="dep-tree-bar" :style="{ maxHeight: treeMaxHeight }">
<Tree :data="dataDep" :load-data="loadData" @on-select-change="selectTree" :multiple="multiple">
</Tree>
<Spin size="large" fix v-if="depLoading"></Spin>
@ -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 {

Loading…
Cancel
Save