h5手机端-福利选择:关闭h5手机端选择福利时的取货门店栏,限制收获地址在哈尔滨指定的辖区;

This commit is contained in:
dd3s_206
2026-06-02 11:38:24 +08:00
parent 93eac307ec
commit 4ce837abdf
3 changed files with 169 additions and 35 deletions
@@ -323,7 +323,7 @@ layout("/layouts/platform.html"){
</div>
</div>
<span style="color: #ac3111">
温馨提示:填写默认收货地址后,系统会自动选择默认地址;如未设置默认,请您在添加收货地址后在此下拉框进行选择
温馨提示:填写默认收货地址后,系统会自动选择默认地址;如未设置默认,请您在添加收货地址后在此下拉框进行选择。可配送辖区:哈尔滨市{{receiveAddressAreaText}}
</span>
</el-form-item>
</el-col>
@@ -461,6 +461,9 @@ layout("/layouts/platform.html"){
addressList: [],
descData: "",
descDialogVisible: false,
selectedAddressCity: null,
selectedAddressCounty: null,
receiveAddressAreaList: ["道里区", "南岗区", "道外区", "香坊区", "呼兰区", "松北区", "阿城区", "双城区", "平房区"],
projectInfo: {},
welfareSubject: {},
@@ -505,6 +508,9 @@ layout("/layouts/platform.html"){
}
},
computed: {
receiveAddressAreaText() {
return this.receiveAddressAreaList.join("、")
},
sumSelectNum() {
if (this.projectInfo && this.projectInfo.welfareProjectSubjects) {
return this.projectInfo.welfareProjectSubjects[0].options
@@ -596,14 +602,6 @@ layout("/layouts/platform.html"){
},
//数量更改
numChange(value, option, optionIndex) {
this.$nextTick(() => {
// 查找+1按钮
const plusButton = document.querySelector(".el-input-number__increase")
// 添加点击事件监听器
plusButton.addEventListener("click", this.handlePlusButtonClick(value, option, optionIndex))
})
},
handlePlusButtonClick(value, option, optionIndex) {
const {
isIntegralMode,
isCheckBox,
@@ -612,11 +610,7 @@ layout("/layouts/platform.html"){
} = this.projectInfo
//积分模式
if (isIntegralMode) {
let totalIntegral = 0
this.projectInfo.welfareProjectSubjects[0].options.forEach(v => {
totalIntegral = totalIntegral + (v.integral * v.selectNum)
})
this.totalIntegral = totalIntegral
this.calcTotalIntegral()
} else {
if (isCheckBox === "checkBox") {
//判断是否支持单个多选
@@ -636,6 +630,13 @@ layout("/layouts/platform.html"){
}
}
},
calcTotalIntegral() {
let totalIntegral = 0
this.projectInfo.welfareProjectSubjects[0].options.forEach(v => {
totalIntegral = totalIntegral + (v.integral * v.selectNum)
})
this.totalIntegral = totalIntegral
},
async getProjectInfo(id) {
const resp = await $.get("/platform/welfare/common/findOne", {projectId: id})
@@ -664,6 +665,11 @@ layout("/layouts/platform.html"){
const address = this.addressOptions.find((a) => a.id === val)
if (address) {
this.$set(this.formData, "receiveAddress", address.name)
this.selectedAddressCity = address.city
this.selectedAddressCounty = address.county
if (!this.isReceiveAddressArea(address.city, address.county)) {
this.$message.warning("该地址不在可配送辖区内,可配送辖区:哈尔滨市" + this.receiveAddressAreaText)
}
}
},
doChoose() {
@@ -713,6 +719,9 @@ layout("/layouts/platform.html"){
this.$message.warning("请填写收货地址")
return
}
if (!this.validateReceiveAddressArea()) {
return
}
}
if (![1, 4].includes(this.projectInfo.signMode)) {
@@ -766,22 +775,45 @@ layout("/layouts/platform.html"){
}
await this.getProjectInfo(row.id)
if (!this.addressOptions || this.addressOptions.length === 0) {
await this.selectUserAddress()
}
this.$set(this.formData, "userName", "${@shiro.getPrincipalProperty('username')}")
this.$set(this.formData, "tel", "${@shiro.getPrincipalProperty('mobile')}")
let receiveAddress = ""
let addressId = null
let addressCity = null
let addressCounty = null
//如果已选择
if (row.isChoose > 0) {
this.$set(this.formData, "receiveAddress", this.userSelection[0].receiveAddress)
this.$set(this.formData, "addressId", null)
if (row.isChoose > 0 && this.userSelection && this.userSelection.length > 0) {
receiveAddress = this.userSelection[0].receiveAddress
const address = this.addressOptions.find((a) => a.name === receiveAddress)
if (address) {
addressId = address.id
addressCity = address.city
addressCounty = address.county
} else {
addressCity = this.getReceiveAddressCity(receiveAddress)
addressCounty = this.getReceiveAddressCounty(receiveAddress)
}
this.$set(this.formData, "sign", this.userSelection[0].userSign)
} else {
const address = this.addressOptions.find((a) => a.isDefault)
const address = this.getDefaultAddress()
if (address) {
this.$set(this.formData, "receiveAddress", address.name)
this.$set(this.formData, "addressId", address.id)
receiveAddress = address.name
addressId = address.id
addressCity = address.city
addressCounty = address.county
}
}
this.$refs.guava.edit()
this.$nextTick(() => {
this.$set(this.formData, "receiveAddress", receiveAddress)
this.$set(this.formData, "addressId", addressId)
this.selectedAddressCity = addressCity
this.selectedAddressCounty = addressCounty
})
},
//获取用户选择的数据
async getUserSelection(projectId) {
@@ -802,26 +834,55 @@ layout("/layouts/platform.html"){
this.$set(v, "receiveAddress", "")
}
})
if (this.projectInfo.isIntegralMode) {
this.calcTotalIntegral()
}
},
async getChoice() {
const resp = await $.get("/mobile/welfare/mine/isChoice", {projectId: this.projectInfo.id})
this.isChoice = resp.data
},
isDefaultAddress(address) {
return address && (address.isDefault === true || address.isDefault === 1 || address.isDefault === "1")
},
getDefaultAddress() {
if (!this.addressOptions || this.addressOptions.length === 0) {
return null
}
return this.addressOptions.find((address) => this.isDefaultAddress(address))
},
isReceiveAddressArea(city, county) {
return city && city.trim() === "哈尔滨市" && county && this.receiveAddressAreaList.includes(county.trim())
},
getReceiveAddressCity(receiveAddress) {
if (!receiveAddress) {
return null
}
return receiveAddress.includes("哈尔滨市") ? "哈尔滨市" : null
},
getReceiveAddressCounty(receiveAddress) {
if (!receiveAddress) {
return null
}
return this.receiveAddressAreaList.find((county) => receiveAddress.includes("哈尔滨市" + county))
},
validateReceiveAddressArea() {
const city = this.selectedAddressCity || this.getReceiveAddressCity(this.formData.receiveAddress)
const county = this.selectedAddressCounty || this.getReceiveAddressCounty(this.formData.receiveAddress)
if (this.isReceiveAddressArea(city, county)) {
return true
}
this.$message.warning("收货地址仅支持哈尔滨市下辖9个市辖区:" + this.receiveAddressAreaText)
return false
},
async selectUserAddress() {
const resp = await $.get("/platform/welfare/addressManage/selectUserAddress")
resp.data.map((r) => {
let defaultName = r.isDefault ? "默认地址" : ""
let defaultName = this.isDefaultAddress(r) ? "默认地址" : ""
r.defaultName = defaultName
r.name = "收货地址:" + r.province + r.city + r.county + r.addressDetail + ",收件人:" + r.userName + ",联系方式:" + r.tel
})
this.addressOptions = resp.data
this.$nextTick(() => {
const address = this.addressOptions.find((v) => v.isDefault)
if (address) {
this.$set(this.formData, "addressId", address.id)
this.$set(this.formData, "receiveAddress", address.name)
}
})
},
// 获取供应商
async getShoppingType() {