373 lines
11 KiB
JavaScript
373 lines
11 KiB
JavaScript
var util = require('../../../utils/util.js');
|
|
var api = require('../../../config/api.js');
|
|
var app = getApp();
|
|
Page({
|
|
data: {
|
|
|
|
address: {
|
|
id: 0,
|
|
province_id: 0,
|
|
city_id: 0,
|
|
district_id: 0,
|
|
address: '',
|
|
full_region: '',
|
|
name: '',
|
|
mobile: '',
|
|
is_default: 0
|
|
},
|
|
addressId: 0,
|
|
openSelectRegion: false,
|
|
selectRegionList: [{
|
|
id: 0,
|
|
name: '省份',
|
|
parent_id: 1,
|
|
type: 1
|
|
},
|
|
{
|
|
id: 0,
|
|
name: '城市',
|
|
parent_id: 1,
|
|
type: 2
|
|
},
|
|
{
|
|
id: 0,
|
|
name: '区县',
|
|
parent_id: 1,
|
|
type: 3
|
|
}
|
|
],
|
|
regionType: 1,
|
|
regionList: [],
|
|
selectRegionDone: false
|
|
},
|
|
mobilechange(e) {
|
|
let mobile = e.detail.value;
|
|
let address = this.data.address;
|
|
if (util.testMobile(mobile)) {
|
|
address.mobile = mobile;
|
|
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.address = event.detail.value;
|
|
this.setData({
|
|
address: address
|
|
});
|
|
},
|
|
switchChange(e) {
|
|
let status = e.detail.value;
|
|
let is_default = 0;
|
|
if (status == true) {
|
|
is_default = 1;
|
|
}
|
|
let address = 'address.is_default';
|
|
this.setData({
|
|
[address]: is_default
|
|
});
|
|
},
|
|
getAddressDetail() {
|
|
let that = this;
|
|
util.request(api.AddressDetail, {
|
|
id: that.data.addressId
|
|
}).then(function(res) {
|
|
if (res.code === 0) {
|
|
that.setData({
|
|
address: res.data
|
|
});
|
|
}
|
|
});
|
|
},
|
|
deleteAddress: function() {
|
|
let id = this.data.addressId;
|
|
wx.showModal({
|
|
title: '提示',
|
|
content: '您确定要删除么?',
|
|
success: function(res) {
|
|
if (res.confirm) {
|
|
util.request(api.DeleteAddress, {
|
|
id: id
|
|
}, 'POST').then(function(res) {
|
|
if (res.code === 0) {
|
|
wx.removeStorageSync('addressId');
|
|
util.showErrorToast('删除成功');
|
|
wx.navigateBack();
|
|
} else {
|
|
util.showErrorToast(res.errmsg);
|
|
}
|
|
});
|
|
}
|
|
}
|
|
})
|
|
},
|
|
setRegionDoneStatus() {
|
|
let that = this;
|
|
let doneStatus = that.data.selectRegionList.every(item => {
|
|
return item.id != 0;
|
|
});
|
|
|
|
that.setData({
|
|
selectRegionDone: doneStatus
|
|
})
|
|
|
|
},
|
|
chooseRegion() {
|
|
let that = this;
|
|
this.setData({
|
|
openSelectRegion: !this.data.openSelectRegion
|
|
});
|
|
|
|
//设置区域选择数据
|
|
let address = this.data.address;
|
|
if (address.province_id > 0 && address.city_id > 0 && address.district_id > 0) {
|
|
let selectRegionList = this.data.selectRegionList;
|
|
selectRegionList[0].id = address.province_id;
|
|
selectRegionList[0].name = address.province_name;
|
|
selectRegionList[0].parent_id = 1;
|
|
|
|
selectRegionList[1].id = address.city_id;
|
|
selectRegionList[1].name = address.city_name;
|
|
selectRegionList[1].parent_id = address.province_id;
|
|
|
|
selectRegionList[2].id = address.district_id;
|
|
selectRegionList[2].name = address.district_name;
|
|
selectRegionList[2].parent_id = address.city_id;
|
|
|
|
this.setData({
|
|
selectRegionList: selectRegionList,
|
|
regionType: 3
|
|
});
|
|
|
|
this.getRegionList(address.city_id);
|
|
} else {
|
|
this.setData({
|
|
selectRegionList: [{
|
|
id: 0,
|
|
name: '省份',
|
|
parent_id: 1,
|
|
type: 1
|
|
},
|
|
{
|
|
id: 0,
|
|
name: '城市',
|
|
parent_id: 1,
|
|
type: 2
|
|
},
|
|
{
|
|
id: 0,
|
|
name: '区县',
|
|
parent_id: 1,
|
|
type: 3
|
|
}
|
|
],
|
|
regionType: 1
|
|
})
|
|
this.getRegionList(1);
|
|
}
|
|
|
|
this.setRegionDoneStatus();
|
|
|
|
},
|
|
onLoad: function(options) {
|
|
// 页面初始化 options为页面跳转所带来的参数
|
|
if (options.id) {
|
|
this.setData({
|
|
addressId: options.id
|
|
});
|
|
this.getAddressDetail();
|
|
}
|
|
this.getRegionList(1);
|
|
},
|
|
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].id <= 0)) {
|
|
return false;
|
|
}
|
|
|
|
this.setData({
|
|
regionType: regionTypeIndex + 1
|
|
})
|
|
|
|
let selectRegionItem = selectRegionList[regionTypeIndex];
|
|
|
|
this.getRegionList(selectRegionItem.parent_id);
|
|
|
|
this.setRegionDoneStatus();
|
|
|
|
},
|
|
selectRegion(event) {
|
|
let that = this;
|
|
let regionIndex = event.target.dataset.regionIndex;
|
|
let regionItem = this.data.regionList[regionIndex];
|
|
let regionType = regionItem.type;
|
|
let selectRegionList = this.data.selectRegionList;
|
|
selectRegionList[regionType - 1] = regionItem;
|
|
|
|
|
|
if (regionType != 3) {
|
|
this.setData({
|
|
selectRegionList: selectRegionList,
|
|
regionType: regionType + 1
|
|
})
|
|
this.getRegionList(regionItem.id);
|
|
} else {
|
|
this.setData({
|
|
selectRegionList: selectRegionList
|
|
})
|
|
}
|
|
|
|
//重置下级区域为空
|
|
selectRegionList.map((item, index) => {
|
|
if (index > regionType - 1) {
|
|
item.id = 0;
|
|
item.name = index == 1 ? '城市' : '区县';
|
|
item.parent_id = 0;
|
|
}
|
|
return item;
|
|
});
|
|
|
|
this.setData({
|
|
selectRegionList: selectRegionList
|
|
})
|
|
|
|
|
|
that.setData({
|
|
regionList: that.data.regionList.map(item => {
|
|
|
|
//标记已选择的
|
|
if (that.data.regionType == item.type && that.data.selectRegionList[that.data.regionType - 1].id == item.id) {
|
|
item.selected = true;
|
|
} else {
|
|
item.selected = false;
|
|
}
|
|
|
|
return item;
|
|
})
|
|
});
|
|
|
|
this.setRegionDoneStatus();
|
|
|
|
},
|
|
doneSelectRegion() {
|
|
if (this.data.selectRegionDone === false) {
|
|
return false;
|
|
}
|
|
|
|
let address = this.data.address;
|
|
let selectRegionList = this.data.selectRegionList;
|
|
address.province_id = selectRegionList[0].id;
|
|
address.city_id = selectRegionList[1].id;
|
|
address.district_id = selectRegionList[2].id;
|
|
address.province_name = selectRegionList[0].name;
|
|
address.city_name = selectRegionList[1].name;
|
|
address.district_name = selectRegionList[2].name;
|
|
address.full_region = selectRegionList.map(item => {
|
|
return item.name;
|
|
}).join('');
|
|
|
|
this.setData({
|
|
address: address,
|
|
openSelectRegion: false
|
|
});
|
|
|
|
},
|
|
cancelSelectRegion() {
|
|
this.setData({
|
|
openSelectRegion: false,
|
|
regionType: this.data.regionDoneStatus ? 3 : 1
|
|
});
|
|
},
|
|
getRegionList(regionId) {
|
|
let that = this;
|
|
let regionType = that.data.regionType;
|
|
util.request(api.RegionList, {
|
|
parentId: regionId
|
|
}).then(function(res) {
|
|
if (res.code === 0) {
|
|
that.setData({
|
|
regionList: res.data.map(item => {
|
|
|
|
//标记已选择的
|
|
if (regionType == item.type && that.data.selectRegionList[regionType - 1].id == item.id) {
|
|
item.selected = true;
|
|
} else {
|
|
item.selected = false;
|
|
}
|
|
|
|
return item;
|
|
})
|
|
});
|
|
}
|
|
});
|
|
},
|
|
saveAddress() {
|
|
let address = this.data.address;
|
|
if (address.name == '' || address.name == undefined) {
|
|
util.showErrorToast('请输入姓名');
|
|
return false;
|
|
}
|
|
if (address.mobile == '' || address.mobile == undefined) {
|
|
util.showErrorToast('请输入手机号码');
|
|
return false;
|
|
}
|
|
if (address.district_id == 0 || address.district_id == undefined) {
|
|
util.showErrorToast('请输入省市区');
|
|
return false;
|
|
}
|
|
if (address.address == '' || address.address == undefined) {
|
|
util.showErrorToast('请输入详细地址');
|
|
return false;
|
|
}
|
|
let that = this;
|
|
util.request(api.SaveAddress, {
|
|
id: address.id,
|
|
name: address.name,
|
|
mobile: address.mobile,
|
|
province_id: address.province_id,
|
|
city_id: address.city_id,
|
|
district_id: address.district_id,
|
|
address: address.address,
|
|
is_default: address.is_default,
|
|
}, 'POST').then(function(res) {
|
|
if (res.code === 0) {
|
|
wx.navigateBack()
|
|
}
|
|
});
|
|
},
|
|
onShow: function() {
|
|
let id = this.data.addressId;
|
|
if (id > 0) {
|
|
wx.setNavigationBarTitle({
|
|
title: '编辑地址',
|
|
})
|
|
} else {
|
|
wx.setNavigationBarTitle({
|
|
title: '新增地址',
|
|
})
|
|
}
|
|
},
|
|
onHide: function() {
|
|
// 页面隐藏
|
|
|
|
},
|
|
onUnload: function() {
|
|
// 页面关闭
|
|
|
|
}
|
|
}) |