You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

370 lines
8.4 KiB
JavaScript

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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 () {
// 页面关闭
}
})