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.

340 lines
8.8 KiB

5 years ago
// 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: {
3 years ago
is_default:true,
5 years ago
region: [],
customItem: '',
formData:{
},
id:null,// 为null的时候是新增,否则是编辑
multiArray: [],
multiIndex: [],
province: [],
areaList:[],
safeBottom:app.globalData.safeBottom
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
// 如果id存在那么需要获取地址详情
// 获取省市区列表
this.setData({
id:options.id || null
})
5 years ago
user._post("user/getAreas").then(res=>{
5 years ago
this.setData({
areaList: res.data
})
if(this.data.id){
// 获取当前收货地址详情
5 years ago
user.user_post("user/getContactInfoById",{id:this.data.id}).then(res=>{
3 years ago
res.data.is_default = res.data.is_default=='1';
5 years ago
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;
5 years ago
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;
3 years ago
formData.is_default = e.detail.value;
5 years ago
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 {
11 months ago
//区级滚动时不用重置数据
return
5 years ago
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;
})
}
11 months ago
console.log(this.data.multiArray, area)
5 years ago
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;
5 years ago
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;
3 years ago
data.is_default = data.is_default?'1':'0';
5 years ago
data.detail_addr = data.address
let service ="addNewConsignee";
5 years ago
if(this.data.id){
5 years ago
data.id = this.data.id;
service ="editConsignee";
5 years ago
}
2 years ago
let address = province+city+area+" "+data.address
let name = data.username
let tel = data.mobile
5 years ago
user.user_post("user/" + service,data).then(res=>{
5 years ago
if(res.data){
wx.showToast({
title: '保存成功',
icon:'success'
})
2 years ago
wx.setStorageSync('linkMan',{
...data,address:address,name:name,tel:tel
// ...data,address:data.seldAdd+data.address
})
5 years ago
util.back()
}
})
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {
}
})