// pages/editAddress/editAddress.js
const app = getApp();
import {editAddress,addAddress,getAddressDetail} from "../../../api/address"
import {getProvince,getCity,getCountry} from "../../../api/consultExpert"
let provinceArr=[];
let cityArr=[];
import {throttle} from "../../../utils/util"
Page({
  data: {
    show: false,
    navName:"添加地址",
    address_id:'',
    isEdit:false,
    consignee_name:'',
    hideConsignee_name:false,
    consignee_tel:'',
    hideConsignee_tel:false,
    consignee_zip_code:'',
    order_prescription_id:'',
    area:"",
    is_default:0,
    address:'',
    hideAddress:false,
    province_id:'',
    province_name:'',
    city_id:'',
    city_name:'',
    county_id:'',
    county_name:'',
    tag:"",
    img_host:'https://oss.prod.applets.igandanyiyuan.com/applet/patient/static',
    columns: [
      {
        values:[],
        className: 'column1',
      },
      {
        values: [],
        className: 'column2',
        defaultIndex: 1,
      },
      {
        values: [],
        className: 'column3',
        defaultIndex: 1,
      }
    ]
  },
  /**
   * 页面的初始数据
   */
  goBack(){
    wx.navigateBack({
      delta: 1,
    })
   },
  selectTag(event){
   let index=event.currentTarget.dataset.tag;
   if(index==this.data.tag){
    this.setData({
      tag:''
    })
   }else{
    this.setData({
      tag:index
    })
   }
  
  },
  onConfirm(event) {
    const { picker, value, index } = event.detail;
    let currentPosition=''
    for (let index = 0; index < value.length; index++) {
      currentPosition+=value[index].area_name
      if(index===0){
        this.setData({
          province_id:value[index].area_id,
          province_name:value[index].area_name
        })
      }else if(index==1){
        this.setData({
          city_id:value[index].area_id,
          city_name:value[index].area_name
        })
      }else{
        this.setData({
          county_id:value[index].area_id,
          county_name:value[index].area_name,
          consignee_zip_code:value[index].zip
        })
      }
    }
   this.setData({
     show:false,
     area:currentPosition
   })
  },
  onChangePicker(event) {
    const { picker, value, index } = event.detail;
   if(index===0){
      let currentIndex=picker.getIndexes()[0]
      this.cityList(provinceArr[currentIndex].area_id);
   }else if(index===1){
     let currentIndex=picker.getIndexes()[1]
     this.countryList(cityArr[currentIndex].area_id);
   }
  },
  onCancel() {
    this.setData({
      show:false
    })
  },
  provinceList(){
    getProvince().then((res)=>{
       provinceArr= res;
      let province=[];
       for (let i = 0; i < res.length; i++) {
        province.push(res[i]);   
       };
       this.setData({
        'columns[0].values':province,
      })
      this.cityList(res[0].area_id);

    })
  },
  cityList(area_id){
    getCity({
      area_id:area_id
    }).then((res)=>{
      this.isLoding=true;
      cityArr=res;
      let city=[];
      for (let i = 0; i < res.length; i++) {
         city.push(res[i]);   
       };
       this.setData({
        'columns[1].values':city
      })
      this.countryList(res[0].area_id);  
    })
  },
  countryList(area_id){
    getCountry({
      area_id:area_id
    }).then((res)=>{
      let area=[];
      for (let i = 0; i < res.length; i++) {
        area.push(res[i]);   
       };
       this.setData({
        'columns[2].values':area
      })
    })
  },
  handleAddress:throttle(function(){
    this.data.isEdit?this.handleEditAddress():this.handleAddAddress()
  }),
  validate(){
    if (!/^[\u4E00-\u9FA5A-Za-z0-9_]{2,10}$/.test(this.data.consignee_name)) {
      wx.showToast({
        title: `姓名要求在2-10个字符`,
        icon: 'none',
      });
      return false;
    };
    if(!/^1[3456789]\d{9}$/.test(this.data.consignee_tel)){
      wx.showToast({
        title: `请输入有效的手机号码！`,
        icon: 'none',
      });
      return false;    
    }
    if(!this.data.area){
      wx.showToast({
        title: `请选择地区`,
        icon: 'none',
      });
      return false;    
    }
    if(!this.data.address){
      wx.showToast({
        title: `请输入详细地址`,
        icon: 'none',
      });
      return false;    
    }
    return true
  },
  handleGetAddressDetail(id){
    getAddressDetail(id).then(data=>{
        for (const key in this.data){
          if(data[key]!=undefined){
            this.setData({
              [key]:data[key]
            })
          }
        };
        this.setData({
          area:data.province+data.city+data.county,
          province_name:data.province,
          city_name:data.city,
          county_name:data.county
        });
        if(data.consignee_name){
          this.setData({
            "hideConsignee_name":true
          })
        };
        if(data.consignee_tel){
          this.setData({
            "hideConsignee_tel":true
          })
        };
        if(data.address){
          this.setData({
            "hideAddress":true
          })
        }
    })
  },
  handleEditAddress(){
    let {consignee_name,consignee_tel,consignee_zip_code,is_default,address,province_id,city_id,county_id,tag,address_id,order_prescription_id,province_name,city_name,county_name}=this.data;
    let dataObj={};
    if(tag){
      dataObj={
        consignee_name,
        consignee_tel,
        province_id,
        city_id,
        county_id,
        tag,
        consignee_zip_code,
        is_default,
        address:address
      }
    }else{
      dataObj={
        consignee_name,
        consignee_tel,
        province_id,
        city_id,
        county_id,
        consignee_zip_code,
        is_default,
        address:address
      }
    };
    if(this.validate()){
      editAddress(address_id,dataObj).then(data=>{
            wx.showToast({
              title:"地址修改成功",
              icon:"none"
            });
            if(order_prescription_id){
              let pages = getCurrentPages();
              let prevPage = pages[pages.length - 3]; //上上一页
                 prevPage.setData({
                prevData:JSON.stringify({
                  name:consignee_name,
                  phone:consignee_tel,
                  province:province_name,
                  city:city_name,
                  country:county_name,
                  address,
                  address_id
                })
              });
              wx.navigateBack({
                delta: 2,
              })
            }else{
              wx.navigateBack({
                delta: 1,
              })
            }
           
      })
    }
    
  },
  inputChange(e){
    let value=e.currentTarget.dataset.value;
    console.log(value)
    if(!e.detail.value){
      this.setData({
        [value]:false,
      })
    }else{
      this.setData({
        [value]:true,
      })
    }
    this.setData({
      [e.target.dataset.id]: e.detail.value
  })
  },
  handleAddAddress(){
    let {consignee_name,consignee_tel,consignee_zip_code,is_default,address,area,province_id,city_id,county_id,tag,order_prescription_id,province_name,city_name,county_name}=this.data;
    let dataObj={};
    if(tag){
      dataObj={
        consignee_name,
        consignee_tel,
        province_id,
        city_id,
        county_id,
        tag,
        consignee_zip_code,
        is_default,
        address:address
      }
    }else{
      dataObj={
        consignee_name,
        consignee_tel,
        province_id,
        city_id,
        county_id,
        consignee_zip_code,
        is_default,
        address:address
      }
    };
    if(this.validate()){
      addAddress(dataObj).then(data=>{
        wx.showToast({
          title:"地址添加成功",
          icon:"none"
        });
        if(order_prescription_id){
          let pages = getCurrentPages();
          let prevPage = pages[pages.length - 3]; //上上一页
          prevPage.setData({
            prevData:JSON.stringify({
              name:consignee_name,
              phone:consignee_tel,
              province:province_name,
              city:city_name,
              country:county_name,
              address,
              address_id:data.address_id
            })
          });
          wx.navigateBack({
            delta: 2,
          })
        }else{
          wx.navigateBack({
            delta: 1,
          })
        }
      })
    }
  },
  onChange({detail}) {
    // 需要手动对 checked 状态进行更新
    this.setData({
      is_default: detail?1:0
    });
  },
  handleClose() {
    this.setData({
      show: false
    })
  },
  showArea() {
    this.setData({
      show: true
    })
  },
  handleConfirm(event) {
    let arr = event.detail.values;
    let add = '';
    for (let i = 0; i < arr.length; i++) {
      add += arr[i].name;
    };
    this.setData({
      show: false,
      area:add
    });

  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    let address_id=options.address_id;
    if(options.order_prescription_id){
      this.setData({
        order_prescription_id:options.order_prescription_id
      })
    }
    if(address_id){
      wx.setNavigationBarTitle({
        title: "编辑地址",
      });
      this.setData({
        isEdit:true,
        navName:"编辑地址",
        address_id
      })
      this.handleGetAddressDetail(address_id)
    }
    this.provinceList();
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
    this.setData({
      img_host:app.hostConfig().imghost
    });
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  
})