|
|
@ -320,8 +320,6 @@ |
|
|
bindShopPrinter, |
|
|
bindShopPrinter, |
|
|
getShopPrintConfig, |
|
|
getShopPrintConfig, |
|
|
findShopWorkerByMobile, |
|
|
findShopWorkerByMobile, |
|
|
initShopArea, |
|
|
|
|
|
loadShopArea, |
|
|
|
|
|
} from "@/api/app"; |
|
|
} from "@/api/app"; |
|
|
export default { |
|
|
export default { |
|
|
name: "addEdit", |
|
|
name: "addEdit", |
|
|
@ -350,6 +348,7 @@ |
|
|
roleList: [], |
|
|
roleList: [], |
|
|
roleList2: [], |
|
|
roleList2: [], |
|
|
shopAreaList: [], |
|
|
shopAreaList: [], |
|
|
|
|
|
shopType: [], |
|
|
businessDistrictLevelList: [], |
|
|
businessDistrictLevelList: [], |
|
|
userDepartmentId: userInfo.departmentId || "", |
|
|
userDepartmentId: userInfo.departmentId || "", |
|
|
visible: this.value, |
|
|
visible: this.value, |
|
|
@ -521,22 +520,9 @@ |
|
|
this.businessDistrictLevelList = res.result; |
|
|
this.businessDistrictLevelList = res.result; |
|
|
} |
|
|
} |
|
|
}); |
|
|
}); |
|
|
initShopArea().then((res) => { |
|
|
|
|
|
|
|
|
|
|
|
if (res.success) { |
|
|
|
|
|
res.result.forEach(function(e) { |
|
|
|
|
|
if (e.isParent) { |
|
|
|
|
|
e.loading = false; |
|
|
|
|
|
e.children = []; |
|
|
|
|
|
e._loading = false; |
|
|
|
|
|
} |
|
|
|
|
|
}); |
|
|
|
|
|
this.data = res.result; |
|
|
|
|
|
} |
|
|
|
|
|
}); |
|
|
|
|
|
getDictDataByType("shopType").then((res) => { |
|
|
getDictDataByType("shopType").then((res) => { |
|
|
if (res.success) { |
|
|
if (res.success) { |
|
|
this.shopType = res.result; |
|
|
this.shopType = Array.isArray(res.result) ? res.result : []; |
|
|
} |
|
|
} |
|
|
}); |
|
|
}); |
|
|
}, |
|
|
}, |
|
|
@ -681,7 +667,7 @@ |
|
|
}, |
|
|
}, |
|
|
applyShopImages(data) { |
|
|
applyShopImages(data) { |
|
|
const form = Object.assign({}, data); |
|
|
const form = Object.assign({}, data); |
|
|
if (form.shopImages) { |
|
|
if (typeof form.shopImages === "string" && form.shopImages) { |
|
|
const images = form.shopImages.split("@@"); |
|
|
const images = form.shopImages.split("@@"); |
|
|
form.zhengzhao = form.zhengzhao || images[0] || ""; |
|
|
form.zhengzhao = form.zhengzhao || images[0] || ""; |
|
|
form.fanzhao = form.fanzhao || images[1] || ""; |
|
|
form.fanzhao = form.fanzhao || images[1] || ""; |
|
|
@ -691,6 +677,55 @@ |
|
|
form.qita = this.parseOtherImages(form.qita); |
|
|
form.qita = this.parseOtherImages(form.qita); |
|
|
return form; |
|
|
return form; |
|
|
}, |
|
|
}, |
|
|
|
|
|
normalizeNumber(value, fallback) { |
|
|
|
|
|
if (value === null || value === undefined || value === "") return fallback; |
|
|
|
|
|
const numberValue = Number(value); |
|
|
|
|
|
return Number.isFinite(numberValue) ? numberValue : fallback; |
|
|
|
|
|
}, |
|
|
|
|
|
clearFormValidate() { |
|
|
|
|
|
const form = this.$refs.form; |
|
|
|
|
|
if (!form || !Array.isArray(form.fields)) return; |
|
|
|
|
|
form.fields.forEach((field) => { |
|
|
|
|
|
if (!field || field._isDestroyed) return; |
|
|
|
|
|
field.validateState = ""; |
|
|
|
|
|
field.validateMessage = ""; |
|
|
|
|
|
}); |
|
|
|
|
|
}, |
|
|
|
|
|
validateBeforeSubmit() { |
|
|
|
|
|
if (!this.form.shopLename) { |
|
|
|
|
|
this.$Message.warning("请输入联系人"); |
|
|
|
|
|
return false; |
|
|
|
|
|
} |
|
|
|
|
|
if (!this.form.shopArea) { |
|
|
|
|
|
this.$Message.warning("请选择所属区域"); |
|
|
|
|
|
return false; |
|
|
|
|
|
} |
|
|
|
|
|
if (this.form.merchantType == 1 && this.form.supportShopDelivery == 1) { |
|
|
|
|
|
if (!this.form.shopDeliveryLocation) { |
|
|
|
|
|
this.$Message.warning("请选择送达位置"); |
|
|
|
|
|
return false; |
|
|
|
|
|
} |
|
|
|
|
|
if (!this.form.shopDeliveryDuration || Number(this.form.shopDeliveryDuration) <= 0) { |
|
|
|
|
|
this.$Message.warning("请输入配送时长"); |
|
|
|
|
|
return false; |
|
|
|
|
|
} |
|
|
|
|
|
if (!this.form.workerId) { |
|
|
|
|
|
this.$Message.warning("请查询并绑定配送员"); |
|
|
|
|
|
return false; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
if (this.form.merchantType == 1 && this.form.supportTransferDelivery == 1) { |
|
|
|
|
|
if (!this.form.transferDeliveryDuration || Number(this.form.transferDeliveryDuration) <= 0) { |
|
|
|
|
|
this.$Message.warning("请输入中转配送时长"); |
|
|
|
|
|
return false; |
|
|
|
|
|
} |
|
|
|
|
|
if (!this.form.transferAddressId) { |
|
|
|
|
|
this.$Message.warning("请选择中转地点"); |
|
|
|
|
|
return false; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
return true; |
|
|
|
|
|
}, |
|
|
normalizeRegisterFields() { |
|
|
normalizeRegisterFields() { |
|
|
if (this.form.merchantType == null || this.form.merchantType === "") { |
|
|
if (this.form.merchantType == null || this.form.merchantType === "") { |
|
|
this.$set(this.form, "merchantType", 1); |
|
|
this.$set(this.form, "merchantType", 1); |
|
|
@ -758,78 +793,99 @@ |
|
|
this.form.transferDeliveryDuration = Number(this.form.transferDeliveryDuration || 0); |
|
|
this.form.transferDeliveryDuration = Number(this.form.transferDeliveryDuration || 0); |
|
|
} |
|
|
} |
|
|
}, |
|
|
}, |
|
|
cleanDisplayFields() { |
|
|
cleanDisplayFields(payload) { |
|
|
delete this.form.users |
|
|
const data = payload || {}; |
|
|
delete this.form.products |
|
|
delete data.users; |
|
|
delete this.form.shopTakeaway |
|
|
delete data.products; |
|
|
delete this.form.clerks |
|
|
delete data.shopTakeaway; |
|
|
delete this.form.keyWord |
|
|
delete data.clerks; |
|
|
delete this.form.isAdmin |
|
|
delete data.keyWord; |
|
|
delete this.form.saleCounts |
|
|
delete data.isAdmin; |
|
|
delete this.form.groupDeliveryTime |
|
|
delete data.saleCounts; |
|
|
|
|
|
delete data.groupDeliveryTime; |
|
|
|
|
|
// 旧项目复制过来的金额字段,当前页面不编辑。null 经表单编码会变成字符串 "null",无法转成 BigDecimal |
|
|
|
|
|
const unusedNumberFields = ["balance", "yearFee", "baseDeliveryFee", "shopScore"]; |
|
|
|
|
|
for (let i = 0; i < unusedNumberFields.length; i++) { |
|
|
|
|
|
const key = unusedNumberFields[i]; |
|
|
|
|
|
const value = data[key]; |
|
|
|
|
|
if (value === null || value === undefined || value === "" || value === "null") { |
|
|
|
|
|
delete data[key]; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
const keys = Object.keys(data); |
|
|
|
|
|
for (let i = 0; i < keys.length; i++) { |
|
|
|
|
|
const key = keys[i]; |
|
|
|
|
|
if (data[key] === null || data[key] === undefined) { |
|
|
|
|
|
delete data[key]; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
return data; |
|
|
|
|
|
}, |
|
|
|
|
|
formatSubmitDate(value) { |
|
|
|
|
|
if (!(value instanceof Date) || isNaN(value.getTime())) return value; |
|
|
|
|
|
return this.format(value, "yyyy-MM-dd"); |
|
|
|
|
|
}, |
|
|
|
|
|
buildSubmitPayload() { |
|
|
|
|
|
const payload = Object.assign({}, this.form); |
|
|
|
|
|
payload.chargeTime = this.formatSubmitDate(payload.chargeTime); |
|
|
|
|
|
payload.startTime = this.formatSubmitDate(payload.startTime); |
|
|
|
|
|
payload.endTime = this.formatSubmitDate(payload.endTime); |
|
|
|
|
|
const shopTypes = Array.isArray(this.shopType) ? this.shopType : []; |
|
|
|
|
|
if (payload.shopType !== "" && payload.shopType != null) { |
|
|
|
|
|
for (let i = 0; i < shopTypes.length; i++) { |
|
|
|
|
|
const item = shopTypes[i]; |
|
|
|
|
|
if (item && payload.shopType == item.value) { |
|
|
|
|
|
payload.shopTypeTitle = item.title; |
|
|
|
|
|
break; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
payload.shopMangerId = payload.shopOwnerId; |
|
|
|
|
|
this.cleanDisplayFields(payload); |
|
|
|
|
|
if (this.type == "1") { |
|
|
|
|
|
delete payload.saleCount; |
|
|
|
|
|
delete payload.storeFlag; |
|
|
|
|
|
delete payload.printingMethod; |
|
|
|
|
|
} |
|
|
|
|
|
return payload; |
|
|
}, |
|
|
}, |
|
|
changePass(v, grade, strength) { |
|
|
changePass(v, grade, strength) { |
|
|
this.form.passStrength = strength; |
|
|
this.form.passStrength = strength; |
|
|
}, |
|
|
}, |
|
|
submit() { |
|
|
submit() { |
|
|
this.normalizeRegisterFields(); |
|
|
if (this.submitLoading) return; |
|
|
this.normalizeSelfDeliveryForm(); |
|
|
try { |
|
|
this.normalizeTransferDeliveryForm(); |
|
|
this.normalizeRegisterFields(); |
|
|
this.$refs.form.validate((valid) => { |
|
|
this.normalizeSelfDeliveryForm(); |
|
|
if (valid) { |
|
|
this.normalizeTransferDeliveryForm(); |
|
|
if (typeof this.form.chargeTime == "object") { |
|
|
if (!this.validateBeforeSubmit()) return; |
|
|
this.form.chargeTime = this.format(this.form.chargeTime, "yyyy-MM-dd"); |
|
|
const payload = this.buildSubmitPayload(); |
|
|
} |
|
|
const finishSubmit = (res) => { |
|
|
if (typeof this.form.startTime == "object") { |
|
|
this.submitLoading = false; |
|
|
this.form.startTime = this.format(this.form.startTime, "yyyy-MM-dd"); |
|
|
if (res && res.success) { |
|
|
} |
|
|
this.$Message.success("操作成功"); |
|
|
if (typeof this.form.endTime == "object") { |
|
|
this.$emit("on-submit", true); |
|
|
this.form.endTime = this.format(this.form.endTime, "yyyy-MM-dd"); |
|
|
this.visible = false; |
|
|
} |
|
|
|
|
|
// 处理商品分类的名称 |
|
|
|
|
|
if (this.form.shopType != '' && this.form.shopType != null) { |
|
|
|
|
|
this.shopType.forEach(item => { |
|
|
|
|
|
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.saleCount |
|
|
|
|
|
delete this.form.storeFlag |
|
|
|
|
|
delete this.form.printingMethod |
|
|
|
|
|
delete this.form.printingMethod |
|
|
|
|
|
editShop(this.form).then((res) => { |
|
|
|
|
|
this.submitLoading = false; |
|
|
|
|
|
if (res.success) { |
|
|
|
|
|
this.$Message.success("操作成功"); |
|
|
|
|
|
this.$emit("on-submit", true); |
|
|
|
|
|
this.visible = false; |
|
|
|
|
|
} |
|
|
|
|
|
}); |
|
|
|
|
|
} else { |
|
|
|
|
|
// 添加 |
|
|
|
|
|
this.submitLoading = true; |
|
|
|
|
|
addShop(this.form).then((res) => { |
|
|
|
|
|
this.submitLoading = false; |
|
|
|
|
|
if (res.success) { |
|
|
|
|
|
this.$Message.success("操作成功"); |
|
|
|
|
|
this.$emit("on-submit", true); |
|
|
|
|
|
this.visible = false; |
|
|
|
|
|
} |
|
|
|
|
|
}); |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
}; |
|
|
}); |
|
|
this.submitLoading = true; |
|
|
|
|
|
const request = this.type == "1" ? editShop(payload) : addShop(payload); |
|
|
|
|
|
request.then(finishSubmit).catch(() => { |
|
|
|
|
|
this.submitLoading = false; |
|
|
|
|
|
}); |
|
|
|
|
|
} catch (e) { |
|
|
|
|
|
this.submitLoading = false; |
|
|
|
|
|
this.$Message.error((e && e.message) || "提交失败"); |
|
|
|
|
|
} |
|
|
}, |
|
|
}, |
|
|
setCurrentValue(value) { |
|
|
setCurrentValue(value) { |
|
|
if (value === this.visible) { |
|
|
if (value === this.visible) { |
|
|
return; |
|
|
return; |
|
|
} |
|
|
} |
|
|
|
|
|
if (!value) { |
|
|
|
|
|
this.visible = false; |
|
|
|
|
|
return; |
|
|
|
|
|
} |
|
|
if (this.type == "1") { |
|
|
if (this.type == "1") { |
|
|
this.title = "编辑店铺"; |
|
|
this.title = "编辑店铺"; |
|
|
this.maxHeight = |
|
|
this.maxHeight = |
|
|
@ -842,26 +898,23 @@ |
|
|
this.title = "店铺详情"; |
|
|
this.title = "店铺详情"; |
|
|
this.maxHeight = "100%"; |
|
|
this.maxHeight = "100%"; |
|
|
} |
|
|
} |
|
|
// 清空数据 |
|
|
|
|
|
this.$refs.form.resetFields(); |
|
|
|
|
|
if (this.type == "0" || this.type == "1") { |
|
|
if (this.type == "0" || this.type == "1") { |
|
|
// 回显数据 |
|
|
const data = Object.assign({}, this.data || {}); |
|
|
let data = this.data; |
|
|
if (Array.isArray(data.address)) { |
|
|
// 地址 |
|
|
data.address = data.address.slice(); |
|
|
if (data.address) { |
|
|
} else if (typeof data.address === "string" && data.address) { |
|
|
data.address = data.address.split(","); |
|
|
data.address = data.address.split(","); |
|
|
} else { |
|
|
} else { |
|
|
data.address = []; |
|
|
data.address = []; |
|
|
} |
|
|
} |
|
|
// 回显 |
|
|
|
|
|
const registerData = this.applyShopImages(data); |
|
|
const registerData = this.applyShopImages(data); |
|
|
this.form = Object.assign({}, registerData, { |
|
|
this.form = Object.assign({}, registerData, { |
|
|
merchantType: registerData.merchantType == null ? 1 : Number(registerData.merchantType), |
|
|
merchantType: this.normalizeNumber(registerData.merchantType, 1), |
|
|
isStudent: registerData.isStudent == null ? 0 : Number(registerData.isStudent), |
|
|
isStudent: this.normalizeNumber(registerData.isStudent, 0), |
|
|
startingPrice: registerData.startingPrice == null ? 0 : Number(registerData.startingPrice), |
|
|
startingPrice: this.normalizeNumber(registerData.startingPrice, 0), |
|
|
openKitchenVideoUrl: registerData.openKitchenVideoUrl || "", |
|
|
openKitchenVideoUrl: registerData.openKitchenVideoUrl || "", |
|
|
supportDineIn: registerData.supportDineIn == null ? 0 : Number(registerData.supportDineIn), |
|
|
supportDineIn: this.normalizeNumber(registerData.supportDineIn, 0), |
|
|
storeConsumeOnly: registerData.storeConsumeOnly == null ? 0 : Number(registerData.storeConsumeOnly), |
|
|
storeConsumeOnly: this.normalizeNumber(registerData.storeConsumeOnly, 0), |
|
|
contactPhone: registerData.contactPhone || registerData.mobile || "", |
|
|
contactPhone: registerData.contactPhone || registerData.mobile || "", |
|
|
mobile: registerData.mobile || registerData.contactPhone || "", |
|
|
mobile: registerData.mobile || registerData.contactPhone || "", |
|
|
zhengzhao: registerData.zhengzhao || "", |
|
|
zhengzhao: registerData.zhengzhao || "", |
|
|
@ -870,12 +923,12 @@ |
|
|
shopLename: registerData.shopLename || "", |
|
|
shopLename: registerData.shopLename || "", |
|
|
shopLecard: registerData.shopLecard || "", |
|
|
shopLecard: registerData.shopLecard || "", |
|
|
qita: registerData.qita || [], |
|
|
qita: registerData.qita || [], |
|
|
supportShopDelivery: data.supportShopDelivery == null ? 0 : Number(data.supportShopDelivery), |
|
|
supportShopDelivery: this.normalizeNumber(data.supportShopDelivery, 0), |
|
|
orderBkge: data.orderBkge == null ? 0 : Number(data.orderBkge), |
|
|
orderBkge: this.normalizeNumber(data.orderBkge, 0), |
|
|
shopDeliveryLocation: data.shopDeliveryLocation == null ? null : Number(data.shopDeliveryLocation), |
|
|
shopDeliveryLocation: this.normalizeNumber(data.shopDeliveryLocation, ""), |
|
|
shopDeliveryDuration: data.shopDeliveryDuration == null ? null : Number(data.shopDeliveryDuration), |
|
|
shopDeliveryDuration: this.normalizeNumber(data.shopDeliveryDuration, null), |
|
|
supportTransferDelivery: data.supportTransferDelivery == null ? 0 : Number(data.supportTransferDelivery), |
|
|
supportTransferDelivery: this.normalizeNumber(data.supportTransferDelivery, 0), |
|
|
transferDeliveryDuration: data.transferDeliveryDuration == null ? null : Number(data.transferDeliveryDuration), |
|
|
transferDeliveryDuration: this.normalizeNumber(data.transferDeliveryDuration, null), |
|
|
transferAddressId: data.transferAddressId || "", |
|
|
transferAddressId: data.transferAddressId || "", |
|
|
transferAddressName: data.transferAddressName || "", |
|
|
transferAddressName: data.transferAddressName || "", |
|
|
}); |
|
|
}); |
|
|
@ -887,18 +940,16 @@ |
|
|
this.loadPrintConfig(); |
|
|
this.loadPrintConfig(); |
|
|
this.workerMobile = this.form.workerPhone || ""; |
|
|
this.workerMobile = this.form.workerPhone || ""; |
|
|
this.$nextTick(() => { |
|
|
this.$nextTick(() => { |
|
|
// 商圈 |
|
|
this.clearFormValidate(); |
|
|
this.$refs.shopAreaTree.setData(this.form.shopArea, this.form.shopAreaTitle); |
|
|
if (this.$refs.shopAreaTree) { |
|
|
|
|
|
this.$refs.shopAreaTree.setData(this.form.shopArea, this.form.shopAreaTitle); |
|
|
|
|
|
} |
|
|
if (this.$refs.transferAddressTree) { |
|
|
if (this.$refs.transferAddressTree) { |
|
|
this.$refs.transferAddressTree.setData(this.form.transferAddressId, this.form.transferAddressName); |
|
|
this.$refs.transferAddressTree.setData(this.form.transferAddressId, this.form.transferAddressName); |
|
|
} |
|
|
} |
|
|
}); |
|
|
}); |
|
|
} else { |
|
|
} else { |
|
|
// 添加 |
|
|
|
|
|
this.form = { |
|
|
this.form = { |
|
|
/*type: 0, |
|
|
|
|
|
sex: "", |
|
|
|
|
|
address: [],*/ |
|
|
|
|
|
merchantType: 1, |
|
|
merchantType: 1, |
|
|
isStudent: 0, |
|
|
isStudent: 0, |
|
|
startingPrice: 0, |
|
|
startingPrice: 0, |
|
|
@ -917,7 +968,10 @@ |
|
|
}; |
|
|
}; |
|
|
this.workerMobile = ""; |
|
|
this.workerMobile = ""; |
|
|
this.$nextTick(() => { |
|
|
this.$nextTick(() => { |
|
|
this.$refs.shopAreaTree.setData("", ""); |
|
|
this.clearFormValidate(); |
|
|
|
|
|
if (this.$refs.shopAreaTree) { |
|
|
|
|
|
this.$refs.shopAreaTree.setData("", ""); |
|
|
|
|
|
} |
|
|
if (this.$refs.transferAddressTree) { |
|
|
if (this.$refs.transferAddressTree) { |
|
|
this.$refs.transferAddressTree.setData("", ""); |
|
|
this.$refs.transferAddressTree.setData("", ""); |
|
|
} |
|
|
} |
|
|
|