| 
						 | 
						<template><view id="address-add">	<lf-nav :title="page_title" :showIcon="true" bgColor="#fff"></lf-nav>	<view class="indetify-img" v-show="parseResult" @tap="closeImg">		<image src="https://cdn.guojiang.club/%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87_20200403161800.png" mode="widthFix"></image>	</view>   <view class="address-info">        <view class="info-item">            <label for="name">姓名:</label>            <view class="form-control">                <input type="text" id="name" placeholder="请输入收货人姓名" data-type="accept_name" :value="detail.accept_name" @input="input" />            </view>        </view>		<view class="info-item">		    <radio-group class="lf-flex">				<label>					<radio-group @change="radioChange">						<radio :checked="detail.sex == '男'" value="男"></radio>					</radio-group>					<text class="lf-m-l-15">先生</text>				</label>				<label>					<radio-group @change="radioChange">						<radio :checked="detail.sex == '女'" value="女"></radio>					</radio-group>					<text class="lf-m-l-15">女士</text>				</label>			</radio-group>		</view>        <view class="info-item">            <label for="phone">联系电话:</label>            <view class="form-control">                <input type="number" maxlength="11" placeholder="请输入联系电话" id="phone" data-type="mobile" :value="detail.mobile" @input="input" />            </view>        </view>				<!-- #ifdef MP-WEIXIN -->		<view class="info-item">		    <label>所在地:</label>				<view class="form-control select">					<picker mode="region" @change="bindRegionChange" :value="detail.address_name">						<view class="picker">							{{detail.address_name[0] || ''}} {{detail.address_name[1] || ''}} {{detail.address_name[2] || ''}}						</view>					</picker>				</view>		</view>       <!-- #endif -->	   	   <!--  #ifdef APP-PLUS || H5 -->	   <view class="mpvue-picker">	   	<view class="info-item uni-btn-v" @click="showMulLinkageThreePicker">	   		<label>所在地:</label>	   		<view class="form-control select">	   			<view class="picker uni-common-mt">	   				{{pickerText.label || ''}}	   			</view>	   		</view>	   	</view>	   	<mpvue-city-picker :themeColor="themeColor" ref="mpvueCityPicker" :pickerValueDefault="cityPickerValueDefault"	   	 @onConfirm="onConfirm"></mpvue-city-picker>	   </view>	   	   	   <!-- #endif -->	   						        <view class="info-item">            <label for="address">详细地址:</label>            <view class="form-control">                <input type="text" id="address" data-type="address" placeholder="请输入详细地址" :value="detail.address" @input="input" />            </view>        </view>		<view class="info-item">		    <label for="name">门牌号:</label>		    <view class="form-control">		        <input type="text" id="name" placeholder="请输入门牌号(选填)" data-type="house_num" :value="detail.house_num" @input="input" />		    </view>		</view>        <view class="info-item lf-m-t-10">            <label class="checkbox" @tap="check">                <!-- #ifdef H5 -->                <checkbox color="red" :checked="detail.is_default"></checkbox>                <!-- #endif -->				<!-- #ifdef APP-PLUS -->				<checkbox color="#FFFFFF" :checked="detail.is_default"></checkbox>				<!-- #endif -->				<!-- #ifdef MP-WEIXIN -->				<checkbox color="#FFFFFF" :checked="detail.is_default"></checkbox>				<!-- #endif -->                <text class="lf-m-l-10">设为默认地址</text>            </label>        </view>    </view>	<!-- <view class="identify-address">		<textarea @input="changeIdentify" :value="address_text" placeholder-class="textarea-placeholder" placeholder="粘贴或输入整段地址,点击“识别”自动拆分姓名、电话和地址。" />		<view class="btn-box" v-if="address_text">			<view class="clear" @tap="clearInfo">清空</view>			<view class="sure" @tap="sureAddress">识别</view>		</view>	</view> -->   <view class="button-box">        <button type="primary" :style="'background: ' + config.mainColor" class="submit" @tap="submit" :loading="loading">保存</button>        <!-- <button type="warn" class="delete" :style="'background: ' + config.secColor" v-if="id" @tap="deleteAddress" :loading="deleteLoading">删除</button> -->    </view></view>
</template><script>import {pageLogin, getUrl,config,is} from '@/common/js/utils.js';
// #ifdef H5
import wPicker from "@/components/w-picker/w-picker.vue";// #endif
// #ifdef APP-PLUS || H5
	import mpvueCityPicker from '@/components/mpvue-citypicker/mpvueCityPicker.vue';	import provinceData from '@/components/mpvue-citypicker/city-data/province.js';	import cityData from '@/components/mpvue-citypicker/city-data/city.js';	// #endif 
	import AddressParse from '@/common/js/zh-address-parse.min.js'
export default {  data() {    return {      detail: {        is_default: false,        address_name: [			'','',''		],        area: 430105,        city: 430100,        province: 430000,		sex: '男',		house_num: ''      },      order_no: '',      id: '',      loading: false,      deleteLoading: false,      config: '',	 	  	   title: 'Hello',		/* mode:"range", */		defaultVal:[0,0,0,0,0,0,0],		tabList:[		{			mode:"region",			name:"省市区"		}		],		tabIndex:0,		resultInfo:{			result:""		},		// #ifdef H5
		mulLinkageTwoPicker:cityData,		// #endif
		cityPickerValueDefault: [0, 0, 1],		themeColor: '#007AFF',		pickerText:{			label:'',			value:'',			cityCode:''		},		mode: '',		deepLength: 1,		pickerValueDefault: [0],		pickerValueArray: [],		address_text:'',		parseResult:'',		page_title: ''	};	  },    components:{	  // #ifdef H5
	  /* wPicker */	  // #endif
	  	  // #ifdef APP-PLUS || H5
	  mpvueCityPicker	  // #endif
  },  onShow() {// let app =getApp();
    // app.isBirthday().then(()=>{
    //     if(this.$cookieStorage.get("birthday_gift")){
    //         var giftData=this.$cookieStorage.get("birthday_gift").data;
    //         new app.ToastPannel().__page.showText(giftData);
    //     }
    // });
		  },     onLoad(e) {    // 第三方平台配置颜色
    var config = this.$cookieStorage.get('globalConfig') || '';    this.setData({      config: config    });    // pageLogin(getUrl());
    this.setData({      id: e.id    });
    if (e.id) {      // wx.setNavigationBarTitle({
      //   title: '修改收货地址'
      // });
	  this.page_title = '修改收货地址';      this.queryAddress(e.id);    } else {		 this.page_title = '新增收货地址';      // wx.setNavigationBarTitle({
      //   title: '新增收货地址'
      // });
    }  },
  methods: {	  radioChange(e){		  this.detail['sex'] = e.target.value;	  },	  //清楚图片
	  closeImg(){		  this.parseResult = '';	  },		  	  //清空所有地址
	  clearInfo(){		  this.address_text = '';	  },	  //识别地址
	  sureAddress(){		 if(this.address_text){			 const options = {			   type: 0, // 哪种方式解析,0:正则,1:树查找
			   textFilter: [], // 预清洗的字段
			   nameMaxLength: 4, // 查找最大的中文名字长度
			 }			 let parseResult = AddressParse(this.address_text,options); 			 this.parseResult = parseResult;			 this.detail.accept_name = parseResult.name;			 this.detail.mobile = parseResult.phone;			 this.detail.address = parseResult.detail;			 // #ifdef MP-WEIXIN
			  this.detail.address_name = [parseResult.province,parseResult.city,parseResult.area];			 // #endif
			// #ifdef APP-PLUS || H5
			this.detail.address_name = [parseResult.province,parseResult.city,parseResult.area];			let address =  [parseResult.province,parseResult.city,parseResult.area];			 this.pickerText.label = address.join(' ');			// #endif
		 } else{			 return		 } 		  	  },	  changeIdentify(e){		  this.address_text = e.detail.value;	  },	  showMulLinkageThreePicker() {	  	this.$refs.mpvueCityPicker.show()	  },	  onConfirm(e) {	  	this.pickerText = e;	  	var index = e.value;	  	var province_code = provinceData[index[0]].value+"0000";	  	var city_code = cityData[index[0]][index[1]].value+"00";	  	var label = e.label;	  	var address_name = label.split('-');	  	// 设置传给后台的参数
	  	this.detail.address_name = address_name;	  	this.detail.city = city_code;	  	this.detail.province = province_code;	  	this.detail.area = e.cityCode;	  		  },     bindRegionChange(e) {      this.setData({        'detail.address_name': e.detail.value      });    },
    check(e) {      this.setData({        "detail.is_default": !this.detail.is_default      });    },
    input(e) {      var type = e.currentTarget.dataset.type;      var value = e.detail.value;   //    this.setData({
   //      [`detail.${type}`]: value
   //    });
	  // 
	  this.detail[type]=value;    },
    deleteAddress() {      this.setData({        deleteLoading: true      });      this.removeAddress(this.id);    },
    /* onConfirm(val){				console.log(val);				//如果页面需要调用多个mode类型,可以根据mode处理结果渲染到哪里;
				// switch(this.mode){
				// 	case "date":
				// 		break;
				// }
				
				this.detail.address_name[0]=val.checkArr[0];				this.detail.address_name[1]=val.checkArr[1];				this.detail.address_name[2]=val.checkArr[2];							this.resultInfo.result=val.result;									}, */	toggleTab(item,index){					this.tabIndex=index;					this.mode=item.mode;					this.defaultVal=item.value;					this.$refs[item.mode].show();	},
    submit() {      this.setData({        loading: true      });      var message = null;	        if (!is.has(this.detail.accept_name)) {        message = '请输入姓名';      } else if (!is.has(this.detail.mobile)) {        message = '请输入手机号码';      } else if (!is.mobile(this.detail.mobile)) {        message = '请输入正确的手机号码';      } else if (!is.has(this.detail.address_name)||!is.has(this.detail.address_name[0]) ) {        message = '请选择地址';      } else if (!is.has(this.detail.address)) {        message = '请输入详细地址';      }      if (message) {        this.setData({          loading: false        });        wx.showModal({          title: '',          content: message,          showCancel: false        });      } else {        if (this.id) {          this.updateAddress(this.detail);        } else {          this.createAddress(this.detail);        }      }    },
    // 获取收货地址详情
    queryAddress(id) {		uni.showLoading({			title: '正在获取中'		})      var token = this.$cookieStorage.get('user_token');      this.$http.get({        api: 'api/address/' + id,        header: {          Authorization: token        }      }).then(res => {        if (res.statusCode == 200) {          res = res.data;          var data = res.data;          data.is_default = !!data.is_default;          data.address_value = [data.province, data.city, data.area].join(' ');		 		  this.resultInfo.result=data.address_name;		  data.address_name = data.address_name.split(' ');		                  if (res.status) {            this.setData({              detail: data            });			// #ifndef MP-WEIXIN
			this.pickerText.label = res.data.address_name.join(' ')			// #endif
			
          } else {            wx.showToast({              title: res.message,              image: '../../../static/error.png'            });          }        } else {          wx.showToast({            title: '获取信息失败',            image: '../../../static/error.png'          });        }		uni.hideLoading();      }).catch(err => uni.hideLoading())    },
    // 新增收货地址
    createAddress(data) {      var address = {        accept_name: data.accept_name,        mobile: data.mobile,        province: data.province,        city: data.city,        area: data.area,        address_name: data.address_name.join(" "),        address: data.address,		house_num: data.house_num,		sex: data.sex,        is_default: data.is_default ? 1 : 0      };      var token = this.$cookieStorage.get('user_token');      this.$http.post({        api: 'api/address/create',        header: {          Authorization: token        },        data: address      }).then(res => {        if (res.statusCode == 200) {          res = res.data;
          if (res.status) {			              wx.showModal({              title: '',			  content:'新增收货地址成功',              showCancel: false,              success: res => {                if (res.confirm) {                  wx.navigateBack();                }              }            });          } else {            wx.showToast({              title: '新增收货地址失败',              image: '../../../static/error.png',              complete: err => {                setTimeout(() => {                  wx.navigateBack();                }, 1600);              }            });          }        } else {          wx.showToast({            title: '请求错误',            image: '../../../static/error.png',            complete: err => {              setTimeout(() => {                wx.navigateBack();              }, 1600);            }          });        }
        this.setData({          loading: false        });      }).catch(rej => {        this.setData({          loading: false        });      });    },
    // 修改收货地址
    updateAddress(data) {      var address = {        id: data.id,        accept_name: data.accept_name,        mobile: data.mobile,        province: data.province,        city: data.city,        area: data.area,        address_name: data.address_name.join(" "),        address: data.address,		house_num: data.house_num,		sex: data.sex,        is_default: data.is_default ? 1 : 0      };      var token = this.$cookieStorage.get('user_token');      this.$http.ajax({        api: 'api/address/'+data.id,        method: 'PUT',        header: {          Authorization: token        },        data: address      }).then(res => {          res = res.data;
          if (res.status) {            wx.showModal({              title: '',              content: '修改收货地址成功',              showCancel: false,              success: res => {                if (res.confirm) {                  wx.navigateBack();                }              }            });          } else {            wx.showToast({              title: '修改收货地址失败',              image: '../../../static/error.png',              complete: err => {                setTimeout(() => {                  wx.navigateBack();                }, 1600);              }            });          }
        this.setData({          loading: false        });      }).catch(rej => {        this.setData({          loading: false        });      });    },
    // 删除收货地址
    removeAddress(id) {      var token = this.$cookieStorage.get('user_token');      this.$http.ajax({        api: 'api/address/' + id,        header: {          Authorization: token        },        method: 'DELETE'      }).then(res => {        if (res.statusCode == 200) {          res = res.data;
          if (res.status) {            wx.showModal({              title: '',              content: '删除收货地址成功',              showCancel: false,              success: res => {                if (res.confirm) {                  wx.navigateBack();                }              }            });          } else {            wx.showToast({              title: '删除收货地址失败',              image: '../../../static/error.png',              complete: err => {                setTimeout(() => {                  wx.navigateBack();                }, 1600);              }            });          }        } else {          wx.showToast({            title: '请求错误',            image: '../../../static/error.png',            complete: err => {              setTimeout(() => {                wx.navigateBack();              }, 1600);            }          });        }
        this.setData({          deleteLoading: false        });      }).catch(rej => {        this.setData({          deleteLoading: false        });      });    },
    setData: function (obj) {      let that = this;      let keys = [];      let val, data;      Object.keys(obj).forEach(function (key) {        keys = key.split('.');        val = obj[key];        data = that.$data;        keys.forEach(function (key2, index) {          if (index + 1 == keys.length) {            that.$set(data, key2, val);          } else {            if (!data[key2]) {              that.$set(data, key2, {});            }          }
          data = data[key2];        });      });    }  },  computed: {},  watch: {}};</script><style lang="less" scoped>    @import "add";	.identify-address>textarea{		border-color: #e5e5e5 !important;	}	/deep/.input-placeholder{		font-weight: initial;	}</style>
  |