You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
330 lines
8.5 KiB
330 lines
8.5 KiB
// pages/user/address/add/index.js
|
|
import util from "../../../../utils/util.js"
|
|
import user from "../../../../utils/https/user.js"
|
|
import common from "../../../../utils/https/common.js"
|
|
let app = getApp()
|
|
Page({
|
|
|
|
/**
|
|
* 页面的初始数据
|
|
*/
|
|
data: {
|
|
is_default:true,
|
|
region: [],
|
|
customItem: '',
|
|
formData:{
|
|
},
|
|
id:null,// 为null的时候是新增,否则是编辑
|
|
multiArray: [],
|
|
multiIndex: [],
|
|
province: [],
|
|
areaList:[],
|
|
safeBottom:app.globalData.safeBottom
|
|
},
|
|
|
|
/**
|
|
* 生命周期函数--监听页面加载
|
|
*/
|
|
onLoad: function (options) {
|
|
// 如果id存在那么需要获取地址详情
|
|
// 获取省市区列表
|
|
this.setData({
|
|
id:options.id || null
|
|
})
|
|
user._post("user/getAreas").then(res=>{
|
|
this.setData({
|
|
areaList: res.data
|
|
})
|
|
if(this.data.id){
|
|
// 获取当前收货地址详情
|
|
user.user_post("user/getContactInfoById",{id:this.data.id}).then(res=>{
|
|
res.data.is_default = res.data.is_default=='1';
|
|
res.data.mobile = res.data.tel;
|
|
res.data.username = res.data.name;
|
|
res.data.address = res.data.detail_addr;
|
|
res.data.areaId = res.data.district_id;
|
|
res.data.cityId = res.data.city_id;
|
|
res.data.provinceId = res.data.province_id;
|
|
this.setData({
|
|
formData:res.data
|
|
})
|
|
this.setArea(res.data.provinceId,res.data.cityId,res.data.areaId);
|
|
})
|
|
}
|
|
else {
|
|
this.initArea();
|
|
}
|
|
|
|
})
|
|
},
|
|
// 给省市区赋值
|
|
setArea:function(pid,cid,aid){
|
|
var province = [], city = [], area = [], areaList = this.data.areaList;
|
|
province = areaList.filter(item => {
|
|
return item.pid == 100000;
|
|
})
|
|
city = areaList.filter(item => {
|
|
return item.pid == pid;
|
|
})
|
|
area = areaList.filter(item => {
|
|
return item.pid == cid;
|
|
})
|
|
let provinceIndex = province.findIndex((item, index) => item.id == pid)
|
|
let cityIndex = city.findIndex((item, index) => item.id == cid && item.pid==pid)
|
|
let areaIndex = area.findIndex((item,index) =>item.id==aid && item.pid==cid)
|
|
var provinceList = province.map(item => {
|
|
return item.name
|
|
})
|
|
var cityList = city.map(item => {
|
|
return item.name;
|
|
})
|
|
var quyuList = area.map(item => {
|
|
return item.name;
|
|
})
|
|
this.setData({
|
|
multiArray: [provinceList, cityList, quyuList],
|
|
multiIndex: [provinceIndex, cityIndex, areaIndex],
|
|
province
|
|
})
|
|
},
|
|
// 初始化省市区
|
|
initArea: function (provinceId){
|
|
var province = [], city = [], area = [], areaList = this.data.areaList;
|
|
province = areaList.filter(item => {
|
|
return item.pid == 100000;
|
|
})
|
|
city = areaList.filter(item => {
|
|
return item.pid == province[0].id;
|
|
})
|
|
area = areaList.filter(item => {
|
|
return item.pid == city[0].id;
|
|
})
|
|
var provinceList = province.map(item => {
|
|
return item.name
|
|
})
|
|
var cityList = city.map(item => {
|
|
return item.name;
|
|
})
|
|
var quyuList = area.map(item => {
|
|
return item.name;
|
|
})
|
|
console.log(province)
|
|
this.setData({
|
|
multiArray: [provinceList, cityList, quyuList],
|
|
province
|
|
})
|
|
},
|
|
// 设为默认
|
|
setDefault:function(e){
|
|
var formData = this.data.formData;
|
|
formData.is_default = e.detail.value;
|
|
this.setData({
|
|
formData: formData
|
|
})
|
|
},
|
|
// 选择省市区
|
|
bindMultiPickerChange: function (e) {
|
|
// console.log(this.data.multiArray)
|
|
console.log('picker发送选择改变,携带值为', e.detail.value)
|
|
this.setData({
|
|
multiIndex: e.detail.value
|
|
})
|
|
},
|
|
bindMultiPickerColumnChange: function (e) {
|
|
console.log('修改的列为', e.detail.column, ',值为', e.detail.value);
|
|
var areaList = this.data.areaList;
|
|
var data = {
|
|
multiArray: this.data.multiArray,
|
|
multiIndex: this.data.multiIndex
|
|
};
|
|
data.multiIndex[e.detail.column] = e.detail.value;
|
|
const provinceName = data.multiArray[0][data.multiIndex[0]];
|
|
let provinceId = "";
|
|
let province = this.data.province;
|
|
let quyuList = [], cityList = [], provinceList = [], city = [], area = [];
|
|
try {
|
|
province.forEach(item => {
|
|
if (item.name === provinceName) {
|
|
provinceId = item.id;
|
|
throw (new Error('find item'))
|
|
}
|
|
})
|
|
} catch (err) {
|
|
}
|
|
city = areaList.filter(item => {
|
|
return item.pid == provinceId;
|
|
})
|
|
if (e.detail.column == 0) {
|
|
data.multiIndex = [e.detail.value, 0, 0];
|
|
try {
|
|
area = areaList.filter(item => {
|
|
return item.pid == city[data.multiIndex[1]].id;
|
|
})
|
|
} catch (err) { }
|
|
} else if (e.detail.column == 1) {
|
|
data.multiIndex[2] = 0;
|
|
area = areaList.filter(item => {
|
|
return item.pid == city[e.detail.value].id;
|
|
})
|
|
} else {
|
|
const cityName = data.multiArray[1][data.multiIndex[1]];
|
|
let cityId = '';
|
|
try {
|
|
areaList.forEach(item => {
|
|
if (item.name === cityName) {
|
|
cityId = item.id;
|
|
throw (new Error('find item'));
|
|
}
|
|
})
|
|
} catch (err) { }
|
|
area = areaList.filter(item => {
|
|
return item.pid == cityId;
|
|
})
|
|
}
|
|
provinceList = province.map(item => {
|
|
return item.name
|
|
})
|
|
cityList = city.map(item => {
|
|
return item.name;
|
|
})
|
|
quyuList = area.map(item => {
|
|
return item.name;
|
|
})
|
|
data.multiArray = [provinceList, cityList, quyuList],
|
|
this.setData(data);
|
|
},
|
|
bindRegionChange: function (e) {
|
|
console.log('picker发送选择改变,携带值为', e.detail.value)
|
|
this.setData({
|
|
region: e.detail.value
|
|
})
|
|
},
|
|
// 输入监听 不是双向绑定啊 绝望
|
|
nameInput:function(e){
|
|
var formData = this.data.formData;
|
|
formData.username = e.detail.value;
|
|
this.setData({
|
|
formData: formData
|
|
})
|
|
},
|
|
telInput:function(e){
|
|
var formData = this.data.formData;
|
|
formData.mobile = e.detail.value;
|
|
this.setData({
|
|
formData: formData
|
|
})
|
|
},
|
|
addressInput:function(e){
|
|
var formData = this.data.formData;
|
|
formData.address = e.detail.value;
|
|
this.setData({
|
|
formData: formData
|
|
})
|
|
},
|
|
// 保存
|
|
save:function(){
|
|
// console.log()
|
|
const areaList = this.data.areaList;
|
|
let province = this.data.multiArray[0][this.data.multiIndex[0]],
|
|
city = this.data.multiArray[1][this.data.multiIndex[1]],
|
|
area = this.data.multiArray[2][this.data.multiIndex[2]];
|
|
|
|
if(!this.data.formData.username){
|
|
wx.showToast({
|
|
title: '请输入姓名!',
|
|
icon:"none"
|
|
})
|
|
return false;
|
|
}
|
|
if (!this.data.formData.mobile) {
|
|
wx.showToast({
|
|
title: '请输入手机号码!',
|
|
icon: "none"
|
|
})
|
|
return false;
|
|
}
|
|
if (!util.isTel(this.data.formData.mobile)) {
|
|
wx.showToast({
|
|
title: '请输入正确的手机号码!',
|
|
icon: "none"
|
|
})
|
|
return false;
|
|
}
|
|
if (!province || !city || !area) {
|
|
wx.showToast({
|
|
title: '请选择地区!',
|
|
icon: "none"
|
|
})
|
|
return false;
|
|
}
|
|
if (!this.data.formData.address) {
|
|
wx.showToast({
|
|
title: '请输入详细地址!',
|
|
icon: "none"
|
|
})
|
|
return false;
|
|
}
|
|
var data = this.data.formData;
|
|
data.province_id = areaList.filter(item => item.name == province)[0].id;
|
|
data.city_id = areaList.filter(item => item.name == city && item.pid == data.province_id)[0].id;
|
|
data.district_id = areaList.filter(item => item.name == area && item.pid == data.city_id)[0].id;
|
|
data.is_default = data.is_default?'1':'0';
|
|
data.detail_addr = data.address
|
|
let service ="addNewConsignee";
|
|
if(this.data.id){
|
|
data.id = this.data.id;
|
|
service ="editConsignee";
|
|
}
|
|
user.user_post("user/" + service,data).then(res=>{
|
|
if(res.data){
|
|
wx.showToast({
|
|
title: '保存成功',
|
|
icon:'success'
|
|
})
|
|
util.back()
|
|
}
|
|
})
|
|
},
|
|
|
|
/**
|
|
* 生命周期函数--监听页面初次渲染完成
|
|
*/
|
|
onReady: function () {
|
|
|
|
},
|
|
|
|
/**
|
|
* 生命周期函数--监听页面显示
|
|
*/
|
|
onShow: function () {
|
|
|
|
},
|
|
|
|
/**
|
|
* 生命周期函数--监听页面隐藏
|
|
*/
|
|
onHide: function () {
|
|
|
|
},
|
|
|
|
/**
|
|
* 生命周期函数--监听页面卸载
|
|
*/
|
|
onUnload: function () {
|
|
|
|
},
|
|
|
|
/**
|
|
* 页面相关事件处理函数--监听用户下拉动作
|
|
*/
|
|
onPullDownRefresh: function () {
|
|
|
|
},
|
|
|
|
/**
|
|
* 页面上拉触底事件的处理函数
|
|
*/
|
|
onReachBottom: function () {
|
|
|
|
}
|
|
})
|