370 lines
8.4 KiB
JavaScript
Raw Normal View History

2025-04-14 14:25:41 +08:00
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 () {
// 页面关闭
}
})