
const app = getApp();
const webSocket = require('../../utils/websocket.js');
Page({

  data: {


    heightid: 0,
    heightArray: [], // 身高-数据
    heightindex: [0, 0],  // 身高-下标


    Ageid: 0,
    AgeArray: [],    //  年龄-数据
    AgeIndex: [0, 0],    //  年龄-下标

    MarriageArray: [], // 婚史-数据
    Marriageindex: '',  // 婚史-下标

    EducationArray: [], // 学历-数据
    Educationindex: '',  // 学历-下标

    inputValue: '', //用户ID
    sex: 0,   //  性别  
    age: 0,      //  年龄  
    height: 0,      //  身高  



    education: 0,    //  学历  
    educationid: 0,
    marry: 0,    //   婚史 
    idmarry: 0,
    income: 0,
    // income: '',     //  收入 
    // occupation: '',     //  职业  

    // home: '', //列表信息

    // tab: [true, true, true, true],

    home: [], //定义列表信息数组

    // tabTxt: ['性别', '年龄', '婚史', '特色'],//tab文案
    page: 1,//当前页码
    limit: 10,//获取条数
    morehide: true,   //暂无更多信息显示隐藏
    moreTxt: '',



    // 省市区
    city: 0,     // 市  要传的数据
    provinceName: '',     // 省 要传的数据
    cityName: '',     // 市  要传的数据
    areaName: '',     // 区 要传的数据

    provincedata: '', //省数据
    provinceid: 1,   //省选中ID
    provincetext: '北京', //省 名字
    citydata: '', //市数据
    cityidx: '', //市选中ID
    citytext: '', //市 名字
    areadata: '', //区数据

    scrolltop: '', //市区滚动条
    hiddenName: true, //显示隐藏

  },


  onShow: function (options) {
    var that = this;
    // webSocket.connectSocket();
    var _trigger = app.globalData.trigger      //    搜索或清空
    // console.log(_trigger);
    if (_trigger == true){
      that.onLoad();
    } 
    app.globalData.trigger = false;
  },
 
 
//  触发聊天
  onReady: function (options){
    webSocket.connectSocket();
  },

  onLoad: function (options) {
    var that = this;



    that.Getlocation();   //获取地理位置

    that.setData({
      page: 1,//当前页码
    })


    var _Selection = app.globalData.Selection      //  是否选中     1选中 0没选中
    var _income = app.globalData.income      //  收入  


    if (app.globalData.idmarry) {
      that.setData({
        idmarry: app.globalData.idmarry
      })
    }

    if (app.globalData.educationid) {
      that.setData({
        educationid: app.globalData.educationid
      })
    }

    if (app.globalData.inputValue) {    //用户ID
      that.setData({
        inputValue: app.globalData.inputValue
      })
    }



    if (app.globalData.income) {
      that.setData({
        income: _income,
      })
    } else if (app.globalData.income == 0 && _Selection == 1) {     //判断筛选页面  是否清空数据   同时 是否选中，而不是返回
      that.setData({
        income: _income,
      })
    }
    // console.log(_Selection)

    var _city = app.globalData.city      //  市 
    var _provincename = app.globalData.provinceName  //  省 名称
    var _cityname = app.globalData.cityName   //  市 名称
    var _areaname = app.globalData.areaName      //  区  名称

    if (_provincename ||  _cityname && _Selection == 1) {
      that.setData({
        city: _city,
        provinceName: _provincename,  // 省名称
        cityName: _cityname, // 市名称
        areaName: _areaname,  // 区名称
      })
      console.log(_provincename)
      console.log(_cityname)
    } else if (_provincename == '' && _cityname == '' &&  _Selection == 1){
      that.setData({
        city: _city,
        provinceName: _provincename,  // 省名称
        cityName: _cityname, // 市名称
        areaName: _areaname,  // 区名称
      })

    }




    //  年龄 ajax
    let Age_url = 'public/paramsgather?type=age';
    let Age_data = {};


    if (app.globalData.age) {    //判断 是否从筛选页面传来的参数

      var _age = app.globalData.age      //  年龄  

      var agenewArry = _age.split("-");  //转成数组
      var _age_min = agenewArry[0]
      var _age_max = agenewArry[1]

      // console.log(_age_min)
      // console.log(_age_max)
      that.setData({
        Ageid: 0,
        age: _age
      })
    } else if (app.globalData.age == 0 && _Selection == 1) {     //判断筛选页面  是否清空数据   同时 是否选中，而不是返回
      var _age = app.globalData.age      //  年龄  

      that.setData({
        age: _age,
        Ageid: 0,
        AgeIndex: ['', '']
      })
    }

    app.postRequest(Age_url, Age_data, function (res) {   //  年龄 ajax
      if (res.code == 201) {

        if (app.globalData.age) {

          let newarray = ['不限'];
          var res_data = newarray.concat(res.data);      //在原有的数据上 凭借上 不限

          let newarray1 = ['以上'];
          var res_data1 = newarray1.concat(res.data);      //在原有的数据上 凭借上 以上


          let min = data_processing(res_data, _age_min);      //已选中的数据处理  min
          let max = data_processing(res_data1, _age_max);   //已选中的数据处理  max

          that.setData({
            AgeIndex: [min, max]
          })
        }

        let dictObject = res.data;    //对象不能直接使用  以下转成数组
        // 对象转成数组
        var createArr = []
        for (let i in dictObject) {
          createArr.push(dictObject[i] + "岁");
        }

        let bx = ['不限'];
        var Unlimited = bx.concat(createArr);

        let ys = ['以上'];
        var Above = ys.concat(createArr);

        that.setData({
          AgeArray: [Unlimited, Above],
        })

        // console.log(createArr);           
      }

    })


    //  身高 ajax
    let height_url = 'public/paramsgather?type=height';
    let height_data = {
      pid: '0'
    };

    if (app.globalData.height) {    //判断 是否从筛选页面传来的参数
      // console.log(app.globalData.height);
      var _height = app.globalData.height      //  身高  

      var heightnewArry = _height.split("-");  //转成数组
      var heightSmall = heightnewArry[0]
      var heightlarge = heightnewArry[1]

      // console.log(heightSmall)
      // console.log(heightlarge)
      that.setData({
        height: _height,
        heightid: 0
      })
    } else if (app.globalData.height == 0 && _Selection == 1) {     //判断筛选页面  是否清空数据   同时 是否选中，而不是返回
      var _height = app.globalData.height      //  身高  
      that.setData({
        height: _height,
        heightid: 0,
        heightindex: ['', ''],  // 身高-下标
      })
    }

    app.postRequest(height_url, height_data, function (res) {      //  身高 ajax
      if (res.code == 201) {

        if (app.globalData.height) {

          let newarray = ['不限'];
          var res_data = newarray.concat(res.data);      //在原有的数据上 凭借上 不限

          let newarray1 = ['以上'];
          var res_data1 = newarray1.concat(res.data);      //在原有的数据上 凭借上 以上


          let min = data_processing(res_data, heightSmall);      //已选中的数据处理  min
          let max = data_processing(res_data1, heightlarge);   //已选中的数据处理  max

          that.setData({
            heightindex: [min, max]
          })

        }


        let dictObject = res.data;        //对象不能直接使用  以下转成数组
        // 对象转成数组
        var createArr = []
        for (let i in dictObject) {
          createArr.push(dictObject[i] + "cm");
        }

        let bx = ['不限'];
        var Unlimited = bx.concat(createArr);

        let ys = ['以上'];
        var Above = ys.concat(createArr);

        // console.log(createArr);
        that.setData({
          heightArray: [Unlimited, Above],
        })

      }

    })


    //  婚史 ajax
    let Marriage_url = 'public/paramsgather?type=marriage';
    let Marriage_data = {};

    if (app.globalData.marry) {    //判断 是否从筛选页面传来的参数
      // console.log(app.globalData.marry);
      var _marry = app.globalData.marry      //  婚姻 

      that.setData({
        marry: _marry
      })
    } else if (app.globalData.marry == 0 && _Selection == 1) {     //判断筛选页面  是否清空数据   同时 是否选中，而不是返回
      var _marry = app.globalData.marry   //  婚姻 
      that.setData({
        marry: _marry,
        Marriageindex: "",  // 身高-下标
      })
    }

    app.postRequest(Marriage_url, Marriage_data, function (res) {      //  婚史 ajax
      if (res.code == 201) {
        if (app.globalData.marry) {
          for (let i = 0; i < res.data.length; i++) {    //已选中的数据处理
            if (i == _marry) {
              that.setData({
                Marriageindex: i,
              })
            }
          }
        }

        that.setData({
          MarriageArray: res.data,
          idmarry: that.data.idmarry,
        })
      }
    })


    //  学历 ajax
    let Education_url = 'public/paramsgather?type=xueli';
    let Education_data = {};

    if (app.globalData.education) {    //判断 是否从筛选页面传来的参数
      // console.log(app.globalData.marry);
      var _education = app.globalData.education      //  学历 

      that.setData({
        education: _education
      })
    } else if (app.globalData.education == 0 && _Selection == 1) {     //判断筛选页面  是否清空数据   同时 是否选中，而不是返回
      var _education = app.globalData.education   //  学历 
      that.setData({
        education: _education,
        Educationindex: "",  // 学历-下标
      })
    }

    app.postRequest(Education_url, Education_data, function (res) {      //  学历 ajax
      if (res.code == 201) {

        var obj = { id: 0, education_name: '不限' };
        var datares = res.data;
        datares.unshift(obj)

        if (app.globalData.education) {


          for (let i = 0; i < datares.length; i++) {    //已选中的数据处理
            if (datares[i].id == _education) {
              that.setData({
                Educationindex: i,
              })
            }
          }
        }

        that.setData({
          EducationArray: datares,
          educationid: that.data.educationid,
        })
      }
    })





    that.list();
  },




  heightEvent: function (e) {   //  身高   
    var that = this;
    // console.log(this);
    // console.log(e);
    // console.log(this.data.heightArray[e.detail.value]);
    // console.log('picker发送选择改变，携带值为', e.detail.value)
    var _value = e.detail.value;  //发送选择改变，携带值为
    var heightSmall = this.data.heightArray[0][e.detail.value[0]].substring(0, 3);
    var heightlarge = this.data.heightArray[1][e.detail.value[1]].substring(0, 3);

    // console.log(heightdata)
    if (heightSmall > heightlarge && heightSmall != '不限' && heightlarge != '以上') {     //判断  最小值  大于  最大值  数据互换
      //  console.log('调换')
      var heightdata = heightlarge + '-' + heightSmall;
      that.Exchange(_value);    // 调用数组调换

    } else {

      var heightdata = heightSmall + '-' + heightlarge;

    }


    that.setData({
      heightindex: _value,
      height: heightdata,
      heightid: 1,
    })

    that.list();

    app.globalData.Selection = 0;    //  是否选中  
    app.globalData.height = 0;    //  身高  
  },



  // 年龄双选
  AgeEvent: function (e) {
    var that = this;
    var _value = e.detail.value;  //发送选择改变，携带值为
    // console.log('picker发送选择改变，携带值为', e.detail.value)
    var Small = this.data.AgeArray[0][e.detail.value[0]].substring(0, 2);
    var large = this.data.AgeArray[1][e.detail.value[1]].substring(0, 2);

    // console.log(Agedata);
    if (Small > large && Small != '不限' && large != '以上') {     //判断  最小值  大于  最大值  数据互换
      //  console.log('调换')
      var Agedata = large + '-' + Small;
      that.Exchange(_value);    // 调用数组调换

    } else {

      var Agedata = Small + '-' + large;    //否则正常选中

    }





    that.setData({
      AgeIndex: _value,
      age: Agedata,
      Ageid: 1,
      page: 1,

    })

    that.list();  //调用筛选

    app.globalData.Selection = 0;    //  是否选中  
    app.globalData.age = 0;    //  年龄  
  },



  // 数组数据调换
  Exchange: function (data) {
    for (var i = 0; i < data.length / 2; i++) {
      var data_i = data[i];
      data[i] = data[data.length - 1 - i];
      data[data.length - 1 - i] = data_i;
    }
    return;
  },


  MarriageEvent: function (e) {   //  婚史    单项选择器
    var that = this;
    // console.log(this);
    // console.log(e);
    // console.log(this.data.MarriageArray[e.detail.value]);
    // console.log('picker发送选择改变，携带值为', e.detail.value)
    this.setData({
      Marriageindex: e.detail.value,
      marry: e.detail.value,
      page: 1,
      idmarry: 1,
    })

    that.list(); //调用筛选

    app.globalData.Selection = 0;    //  是否选中  
    app.globalData.marry = 0  //  婚史  
  },



  EducationEvent: function (e) {   //  学历    单项选择器
    var that = this;
    // console.log(this);
    // console.log(e);
    // console.log(this.data.EducationArray[e.detail.value].id);
    // console.log('picker发送选择改变，携带值为', e.detail.value)
    this.setData({
      Educationindex: e.detail.value,
      education: this.data.EducationArray[e.detail.value].id,
      page: 1,
      educationid: 1,
    })

    that.list(); //调用筛选


    app.globalData.Selection = 0;    //  是否选中  
    app.globalData.education = 0  //  学历  
  },





  More: function () {
    var that = this;
    // console.log(that.data.age);



    // console.log(that.data.provinceName);
    // console.log(that.data.cityName);
    // console.log(that.data.areaName);


    wx.navigateTo({
      url: '/pages/index_screen/index_screen?age=' + that.data.age + '&height=' + that.data.height + '&marry=' + that.data.marry + '&idmarry=' + that.data.idmarry + '&education=' + that.data.education + '&income=' + that.data.income + '&educationid=' + that.data.educationid +'&city=' + that.data.city +  '&provinceName=' + that.data.provinceName + '&cityName=' + that.data.cityName + '&areaName=' + that.data.areaName +  ''
    })


  },



  //  上拉加载更多
  onReachBottom() {
    var that = this;

    let _age = transformation(that.data.age)      //不限以上 转换成0
    let _height = transformation(that.data.height)      //不限以上 转换成0
    let _income = transformation(that.data.income)      //不限以上 转换成0


    that.showLoading();   //提示加载中
    //  列表信息


    var home_url = 'circle/friend/home';

    if (that.data.inputValue) {    //判断 搜索用户ID存在  只传用户ID

      var home_data = {
        page: (that.data.page++) + 1,
        limit: that.data.limit,
        number: that.data.inputValue,   //  性别  
      };

      // console.log('用户ID');


    } else {     //否则 传常规选择

      var home_data = {
        page: (that.data.page++) + 1,
        limit: that.data.limit,
        age: _age,      //  年龄  
        height: _height,   //  身高  
        marry: that.data.marry,    //   婚史 
        education: that.data.education,    //  学历  
        income: _income,  //收入
        city: that.data.city,                    // 市
      };

      // console.log('选择');

    }


    app.postRequest(home_url, home_data, function (res) {

      if (res.code == 201) {
        // console.log(res.data);
        var home = that.data.home

        // var moreTxt = '';
        // if (0 < (res.data.length < 10)) {
        //   moreTxt = res.msg;
        //   // console.log('无')
        // } else {
        //   moreTxt = ''
        //   // console.log('有')
        // }

        // 设置数据
        for (var i = 0; i < res.data.length; i++) {
          home.push(res.data[i]);
        }

        that.setData({
          home: home,
          morehide: true,
        })

        that.cancelLoading();   //数据加载完关闭
        return;
      }


      that.cancelLoading();   //数据加载完关闭

      that.setData({
        home_code: res.code,
        morehide: false,
        moreTxt: res.msg,
      })



    })
  },





  list: function () {
    var that = this;

    let _age = transformation(that.data.age)       //不限以上 转换成0
    let _height = transformation(that.data.height)       //不限以上 转换成0
    let _income = transformation(that.data.income)      //不限以上 转换成0

    that.showLoading();   //提示加载中
    //  列表信息
    let home_url = 'circle/friend/home';

    if (that.data.inputValue) {    //判断 搜索用户ID存在  只传用户ID

      var home_data = {
        page: that.data.page,
        limit: that.data.limit,
        number: that.data.inputValue,   //  性别  
      };

    } else {     //否则 传常规选择

      var home_data = {
        page: that.data.page,
        limit: that.data.limit,
        age: _age,      //  年龄  
        height: _height,   //  身高  
        marry: that.data.marry,    //   婚史 
        education: that.data.education,    //  学历  
        income: _income,  //收入
        city: that.data.city,                    // 市
      };

    }


    app.postRequest(home_url, home_data, function (res) {
      that.setData({
        inputValue: '',
      })

      var moreTxt = '';
      
      if (res.code == 201) {

   
        // if (res.data.length < 10) {
        //   moreTxt = res.msg
        // } else {
        //   moreTxt = ''
        // }

        // console.log(res.data);
        that.setData({
          home: res.data,
          morehide: true,
          home_code: res.code,
        })

        that.cancelLoading();   //数据加载完关闭

        return;
      }

      that.cancelLoading();   //数据加载完关闭



      that.setData({
        home: res.data,
        morehide: false,
        moreTxt: res.msg,
      })



  


    })

  },

  // 加载
  showLoading: function () {

    wx.showLoading({

      title: '加载中',

      icon: 'loading'

    });

  },
  // 关闭加载
  cancelLoading: function () {
    wx.hideLoading();
  },




  // 省市区三级联动 点击弹窗
  linkage: function (e) {
    var that = this;
    let citypid_url = 'public/citypid';
    let citypid_data = {};
    app.postRequest(citypid_url, citypid_data, function (res) {      //  省市区三级联动 ajax
      if (res.code == 201) {

        that.setData({
          provincedata: res.data,   // 省数据
        })

        // console.log(res.data)
        that.provinceOn();
      }
    })

  },


  // 省事件
  provinceOn: function (e) {
    var that = this;
    // console.log(e);
    if (e) {
      that.setData({
        provinceid: e.currentTarget.dataset.id,    //省ID
        provincetext: e.currentTarget.dataset.text,   //省名字
      })
    }
    // console.log(that.data.provinceid);
    // console.log(that.data.provincetext)

    let citypid_url = 'public/citypid';
    let citypid_data = {
      pid: that.data.provinceid,
    };
    app.postRequest(citypid_url, citypid_data, function (res) {      //  省市区三级联动 ajax
      if (res.code == 201) {

        that.setData({
          hiddenName: false,
          citydata: res.data,   // 市数据
          scrolltop: 0,    //市区滚动条
          areadata: '',    //区域数据清空
          cityidx: '',   // idx  选中清空
        })

        // console.log(res.data)

      }
    })

  },

  // 市事件
  cityOn: function (e) {
    var that = this;
    var _cityidx = that.data.cityidx
    var cityid = e.currentTarget.dataset.id;     //市ID
    var citytext = e.currentTarget.dataset.text;     //市名字
    var _index = e.currentTarget.dataset.index + 1;     //下标
    // console.log(_index);
    // console.log(_index*42,);
    // console.log(_cityidx);
    // console.log(cityid);
    that.setData({
      cityidx: cityid,  // 市  选中
      citytext: citytext, // 市 选中名字
      areadata: '',    //区域数据清空
    })

    let citypid_url = 'public/citypid';
    let citypid_data = {
      pid: cityid,
    };
    app.postRequest(citypid_url, citypid_data, function (res) {      //  省市区三级联动 ajax
      if (res.code == 201) {

        if (_cityidx == cityid) {
          that.setData({
            areadata: '',   // 区数据
            cityidx: '',   // idx  选中清空
          })
        } else {
          that.setData({
            areadata: res.data,   // 区数据
            scrolltop: _index * 42,
          })
          // console.log('执行')
          //   console.log(_index * 42);
        }
        // console.log(res.data)
      }

    })

  },


  //区选中事件
  areaOn: function (e) {
    var that = this;

    var _style = e.currentTarget.dataset.style;
    // console.log(_style);


    var regionid = e.currentTarget.dataset.id;     //传递地区ID
    // console.log(regionid);


    switch (_style) {

      case 'provinceLx':
        // console.log('省');
        that.setData({
          city: regionid,
          provinceName: that.data.provincetext, // 省名字
          cityName: '',   // 市名字清空
          areaName: "",  //  区名字
          page: 1,
        })
        break;

      case 'cityLx':
        // console.log('市');
        that.setData({
          city: regionid,
          provinceName: that.data.provincetext, // 省名字
          cityName: that.data.citytext, // 省名字
          areaName: "",  //  区名字
          page: 1,
        })
        break;

      case 'areaLx':
        // console.log('区');
        var areatext = e.currentTarget.dataset.text;     //区名字
        that.setData({
          city: regionid,
          provinceName: that.data.provincetext, // 省名字
          cityName: that.data.citytext, // 省名字
          areaName: areatext,   //  区名字
          page: 1,
        })
        break;

    }
    
    // console.log(that.data.city)
    // console.log(that.data.provinceName)
    // console.log(that.data.cityName)
    // console.log(that.data.areaName)

    that.list(); //调用筛选

    that.setData({
      hiddenName: true,
      provinceid: 1,
      provincetext: '北京', //省 名字
      cityidx: 0,
      citytext: '',
    })

    app.globalData.Selection = 0;    //  是否选中  
  },

  //省市区不限
  regionBx: function () {
    var that = this;
    that.setData({
      hiddenName: true,
      provinceid: 1,
      provincetext: '北京', //省 名字
      cityidx: 0,
      citytext: '',

      provinceName:'', // 省名字
      city: 0,   // 市数据清空
      cityName: '',   // 市名字清空
      areaName: "",  //  区名字
      page: 1,//当前页码
    })

    that.list(); //调用筛选
  },


  //省市区关闭
  Close: function () {
    var that = this;
    that.setData({
      hiddenName: true,
      provinceid: 1,
      provincetext: '北京', //省 名字
      cityidx: 0,
      citytext: '',

    })
  },



  Getlocation: function () {

    wx.getSetting({
      success: (res) => {
        // console.log(JSON.stringify(res))
        // console.log(res)
        // console.log(res.authSetting['scope.userLocation'])
        // res.authSetting['scope.userLocation'] == undefined    表示 初始化进入该页面
        // res.authSetting['scope.userLocation'] == false    表示 非初始化进入该页面,且未授权
        // res.authSetting['scope.userLocation'] == true    表示 地理位置授权
        if (!res.authSetting['scope.userLocation']) {
          wx.showModal({
            title: '请求授权当前位置',
            content: '需要获取您的地理位置，请前往授权',
            success: function (res) {
              if (res.cancel) {
                wx.showToast({
                  title: '拒绝授权',
                  icon: 'none',
                  duration: 1000
                })
              } else if (res.confirm) {

                wx.getLocation({

                  success: function (res) {
                    // console.log(res.latitude)
                    // console.log(res.longitude)
                    getApp().getDistrict(res.latitude, res.longitude);

                  },

                })


              }
            }
          })
        } else if (res.authSetting['scope.userLocation'] == undefined) {
          //调用wx.getLocation的API
        }
        else {
          //调用wx.getLocation的API
        }
      }
    })

  },


})

var data_processing = function (data, min_max, ) {
  for (let i = 0; i < data.length; i++) {    //已选中的数据处理
    if (data[i] == min_max) {
      return i;
    }
  }
}


var transformation = function (resdata) {
  if (resdata) {
    let newArry = resdata.split("-");  //转成数组

    if (newArry[0] == '不限' || newArry[0] == undefined) {
      var _min = 0
    } else {
      var _min = newArry[0];
    }

    if (newArry[1] == '以上' || newArry[1] == undefined) {
      var _max = 0
    } else {
      var _max = newArry[1];
    }

    resdata = _min + '-' + _max
  }
  return resdata;


}