wangfukang 1 month ago
parent
commit
edae05fd85
  1. 5
      src/api/app.js
  2. 135
      src/views/app/shop/addEdit.vue
  3. 4
      vue.config.js

5
src/api/app.js

@ -412,6 +412,11 @@ export const editShopTakeway = (params) => {
export const editShop = (params) => { export const editShop = (params) => {
return putRequest('/app/shop/edit', params) return putRequest('/app/shop/edit', params)
} }
export const findShopWorkerByMobile = (params) => {
return getRequest('/app/shop/findWorkerByMobile', params)
}
//删除评论 //删除评论
export const deleteComment = (params) => { export const deleteComment = (params) => {
return postRequest('/app/comment/deleteByOrderId', params) return postRequest('/app/comment/deleteByOrderId', params)

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

@ -69,6 +69,52 @@
</FormItem> </FormItem>
</Col> </Col>
</Row> </Row>
<Divider>商家自配送</Divider>
<Row :gutter="32">
<Col span="12">
<FormItem label="是否支持商家自配送" prop="supportShopDelivery">
<RadioGroup v-model="form.supportShopDelivery">
<Radio :label="1"></Radio>
<Radio :label="0"></Radio>
</RadioGroup>
</FormItem>
</Col>
<Col span="12" v-if="form.supportShopDelivery == 1">
<FormItem label="自配送配送费" prop="orderBkge">
<InputNumber v-model="form.orderBkge" :min="0" :step="0.1" style="width: 100%" @on-change="handleOrderBkgeChange" />
</FormItem>
</Col>
</Row>
<Row :gutter="32" v-if="form.supportShopDelivery == 1">
<Col span="12">
<FormItem label="送达位置" prop="shopDeliveryLocation">
<Select v-model="form.shopDeliveryLocation" transfer>
<Option :value="1">送到宿舍</Option>
<Option :value="2">送到楼下</Option>
</Select>
</FormItem>
</Col>
<Col span="12">
<FormItem label="配送时长(分钟)" prop="shopDeliveryDuration">
<InputNumber v-model="form.shopDeliveryDuration" :min="1" :precision="0" style="width: 100%" />
</FormItem>
</Col>
</Row>
<Row :gutter="32" v-if="form.supportShopDelivery == 1">
<Col span="12">
<FormItem label="配送员手机号">
<Input v-model="workerMobile" autocomplete="off" :maxlength="16" placeholder="输入配送员手机号">
<Button slot="append" :loading="workerLoading" @click="findWorker">查询</Button>
</Input>
</FormItem>
</Col>
<Col span="12">
<FormItem label="已绑定配送员" prop="workerId">
<Input :value="boundWorkerText" readonly placeholder="暂未绑定配送员" />
</FormItem>
</Col>
</Row>
<Divider />
<Row :gutter="32"> <Row :gutter="32">
<Col span="24"> <Col span="24">
@ -108,6 +154,7 @@
import { import {
addShop, addShop,
editShop, editShop,
findShopWorkerByMobile,
initShopArea, initShopArea,
loadShopArea, loadShopArea,
} from "@/api/app"; } from "@/api/app";
@ -142,9 +189,13 @@
title: "", title: "",
passColor: "", passColor: "",
submitLoading: false, submitLoading: false,
workerLoading: false,
workerMobile: "",
maxHeight: 510, maxHeight: 510,
form: { form: {
address: [], address: [],
supportShopDelivery: 0,
orderBkge: 0,
}, },
formValidate: { formValidate: {
// //
@ -192,9 +243,45 @@
message: "邮箱格式不正确" 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: { methods: {
init(v) { init(v) {
this.getRoleList(v); this.getRoleList(v);
@ -237,10 +324,52 @@
handleSelectShopAreaTree(v) { handleSelectShopAreaTree(v) {
this.form.shopArea = 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) { changePass(v, grade, strength) {
this.form.passStrength = strength; this.form.passStrength = strength;
}, },
submit() { submit() {
this.normalizeSelfDeliveryForm();
this.$refs.form.validate((valid) => { this.$refs.form.validate((valid) => {
if (valid) { if (valid) {
if (typeof this.form.chargeTime == "object") { if (typeof this.form.chargeTime == "object") {
@ -330,6 +459,9 @@
this.$refs.shopAreaTree.setData(data.shopArea, data.shopAreaTitle); this.$refs.shopAreaTree.setData(data.shopArea, data.shopAreaTitle);
// //
this.form = data; 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 { } else {
// //
//this.$refs.shopAreaTree.setData("", ""); //this.$refs.shopAreaTree.setData("", "");
@ -337,7 +469,10 @@
/*type: 0, /*type: 0,
sex: "", sex: "",
address: [],*/ address: [],*/
supportShopDelivery: 0,
orderBkge: 0,
}; };
this.workerMobile = "";
} }
this.visible = value; this.visible = value;
}, },

4
vue.config.js

@ -7,8 +7,8 @@ module.exports = {
port: 8889, port: 8889,
proxy: { proxy: {
'/hiver': { '/hiver': {
//target: 'https://hbkuaishi.com', // 正式1 target: 'https://hbkuaishi.com', // 正式1
target: 'http://192.168.100.30:8888', // 本地 //target: 'http://192.168.100.30:8888', // 本地
ws: false ws: false
}, },
'/foo': { '/foo': {

Loading…
Cancel
Save