jinghaibing 2689ecca8e
Some checks are pending
Actions / Litemall-all (11) (push) Waiting to run
Actions / Litemall-all (11.0.3) (push) Waiting to run
Actions / Litemall-all (8) (push) Waiting to run
Actions / Litemall-all (8.0.192) (push) Waiting to run
Actions / Litemall-admin (10.x) (push) Waiting to run
Actions / Litemall-admin (12.x) (push) Waiting to run
Actions / Litemall-admin (14.x) (push) Waiting to run
Actions / Litemall-vue (10.x) (push) Waiting to run
Actions / Litemall-vue (12.x) (push) Waiting to run
Actions / Litemall-vue (14.x) (push) Waiting to run
Initial commit
2025-04-14 14:25:41 +08:00

370 lines
8.5 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

var util = require('../../../utils/util.js');
var api = require('../../../config/api.js');
var check = require('../../../utils/check.js');
var area = require('../../../utils/area.js');
var app = getApp();
Page({
data: {
address: {
id: 0,
areaCode: 0,
address: '',
name: '',
tel: '',
isDefault: 0,
province: '',
city: '',
county: ''
},
addressId: 0,
openSelectRegion: false,
selectRegionList: [{
code: 0,
name: '省份'
},
{
code: 0,
name: '城市'
},
{
code: 0,
name: '区县'
}
],
regionType: 1,
regionList: [],
selectRegionDone: false
},
bindinputMobile(event) {
let address = this.data.address;
address.tel = event.detail.value;
this.setData({
address: address
});
},
bindinputName(event) {
let address = this.data.address;
address.name = event.detail.value;
this.setData({
address: address
});
},
bindinputAddress(event) {
let address = this.data.address;
address.addressDetail = event.detail.value;
this.setData({
address: address
});
},
bindIsDefault() {
let address = this.data.address;
address.isDefault = !address.isDefault;
this.setData({
address: address
});
},
getAddressDetail() {
let that = this;
util.request(api.AddressDetail, {
id: that.data.addressId
}).then(function(res) {
if (res.errno === 0) {
if (res.data) {
that.setData({
address: res.data
});
}
}
});
},
setRegionDoneStatus() {
let that = this;
let doneStatus = that.data.selectRegionList.every(item => {
return item.code != 0;
});
that.setData({
selectRegionDone: doneStatus
})
},
chooseRegion() {
let that = this;
this.setData({
openSelectRegion: !this.data.openSelectRegion
});
//设置区域选择数据
let address = this.data.address;
if (address.areaCode > 0) {
let selectRegionList = this.data.selectRegionList;
selectRegionList[0].code = address.areaCode.slice(0, 2) + '0000';
selectRegionList[0].name = address.province;
selectRegionList[1].code = address.areaCode.slice(0, 4) + '00';
selectRegionList[1].name = address.city;
selectRegionList[2].code = address.areaCode;
selectRegionList[2].name = address.county;
let regionList = area.getList('county', address.areaCode.slice(0, 4));
regionList = regionList.map(item => {
//标记已选择的
if (address.areaCode === item.code) {
item.selected = true;
} else {
item.selected = false;
}
return item;
})
this.setData({
selectRegionList: selectRegionList,
regionType: 3,
regionList: regionList
});
} else {
let selectRegionList = [{
code: 0,
name: '省份',
},
{
code: 0,
name: '城市',
},
{
code: 0,
name: '区县',
}
];
this.setData({
selectRegionList: selectRegionList,
regionType: 1,
regionList: area.getList('province')
});
}
this.setRegionDoneStatus();
},
onLoad: function(options) {
// 页面初始化 options为页面跳转所带来的参数
console.log(options)
if (options.id && options.id != 0) {
this.setData({
addressId: options.id
});
this.getAddressDetail();
}
},
onReady: function() {
},
selectRegionType(event) {
let that = this;
let regionTypeIndex = event.target.dataset.regionTypeIndex;
let selectRegionList = that.data.selectRegionList;
//判断是否可点击
if (regionTypeIndex + 1 == this.data.regionType || (regionTypeIndex - 1 >= 0 && selectRegionList[regionTypeIndex - 1].code <= 0)) {
return false;
}
let selectRegionItem = selectRegionList[regionTypeIndex];
let code = selectRegionItem.code;
let regionList;
if (regionTypeIndex === 0) {
// 点击省级,取省级
regionList = area.getList('province');
}
else if (regionTypeIndex === 1) {
// 点击市级,取市级
regionList = area.getList('city', code.slice(0, 2));
}
else{
// 点击县级,取县级
regionList = area.getList('county', code.slice(0, 4));
}
regionList = regionList.map(item => {
//标记已选择的
if (that.data.selectRegionList[regionTypeIndex].code == item.code) {
item.selected = true;
} else {
item.selected = false;
}
return item;
})
this.setData({
regionList: regionList,
regionType: regionTypeIndex + 1
})
this.setRegionDoneStatus();
},
selectRegion(event) {
let that = this;
let regionIndex = event.target.dataset.regionIndex;
let regionItem = this.data.regionList[regionIndex];
let regionType = this.data.regionType;
let selectRegionList = this.data.selectRegionList;
selectRegionList[regionType - 1] = regionItem;
if (regionType == 3) {
this.setData({
selectRegionList: selectRegionList
})
let regionList = that.data.regionList.map(item => {
//标记已选择的
if (that.data.selectRegionList[that.data.regionType - 1].code == item.code) {
item.selected = true;
} else {
item.selected = false;
}
return item;
})
this.setData({
regionList: regionList
})
this.setRegionDoneStatus();
return
}
//重置下级区域为空
selectRegionList.map((item, index) => {
if (index > regionType - 1) {
item.code = 0;
item.name = index == 1 ? '城市' : '区县';
}
return item;
});
this.setData({
selectRegionList: selectRegionList,
regionType: regionType + 1
})
let code = regionItem.code;
let regionList = [];
if (regionType === 1) {
// 点击省级,取市级
regionList= area.getList('city', code.slice(0, 2))
}
else {
// 点击市级,取县级
regionList= area.getList('county', code.slice(0, 4))
}
this.setData({
regionList: regionList
})
this.setRegionDoneStatus();
},
doneSelectRegion() {
if (this.data.selectRegionDone === false) {
return false;
}
let address = this.data.address;
let selectRegionList = this.data.selectRegionList;
address.province = selectRegionList[0].name;
address.city = selectRegionList[1].name;
address.county = selectRegionList[2].name;
address.areaCode = selectRegionList[2].code;
this.setData({
address: address,
openSelectRegion: false
});
},
cancelSelectRegion() {
this.setData({
openSelectRegion: false,
regionType: this.data.regionDoneStatus ? 3 : 1
});
},
cancelAddress() {
wx.navigateBack();
},
saveAddress() {
console.log(this.data.address)
let address = this.data.address;
if (address.name == '') {
util.showErrorToast('请输入姓名');
return false;
}
if (address.tel == '') {
util.showErrorToast('请输入手机号码');
return false;
}
if (address.areaCode == 0) {
util.showErrorToast('请输入省市区');
return false;
}
if (address.addressDetail == '') {
util.showErrorToast('请输入详细地址');
return false;
}
let that = this;
util.request(api.AddressSave, {
id: address.id,
name: address.name,
tel: address.tel,
province: address.province,
city: address.city,
county: address.county,
areaCode: address.areaCode,
addressDetail: address.addressDetail,
isDefault: address.isDefault
}, 'POST').then(function(res) {
if (res.errno === 0) {
//返回之前先取出上一页对象并设置addressId
var pages = getCurrentPages();
var prevPage = pages[pages.length - 2];
console.log(prevPage);
if (prevPage.route == "pages/checkout/checkout") {
prevPage.setData({
addressId: res.data
})
try {
wx.setStorageSync('addressId', res.data);
} catch (e) {
}
console.log("set address");
}
wx.navigateBack();
}
});
},
onShow: function() {
// 页面显示
},
onHide: function() {
// 页面隐藏
},
onUnload: function() {
// 页面关闭
}
})