// miniprogram/pages/addDevice/addDevice.js
// import  WxValidate from '../../utils/WxValidate.js'
var QQMapWX = require('../../libs/qqmap-wx-jssdk.js');
var qqmapsdk;
var app = getApp()
const installTypeMap = {
    '1': '初次安装',
    '2': '初次拆走',
    '3': '二次安装',
    '4': '二次拆走',
    '5': '正在维护',
    '6': '其他',
}
Page({

  /**
   * 页面的初始数据
   */
  data: {
    wellActions: [], // 选择井编号
    wellShow: false, // 是否显示选择井编号
    projectName: '', // 项目名称
    canvasHeight: '',
    canvasWidth: '',
    longitude: '',
    latitude: '',
    option1: [],
    personoption1: [],
    projectoption: [],
    devtypeList:[],
    installTypeList:[
        {
            text: '初次安装',
            value: '1',
        },
        {
            text: '初次拆走',
            value: '2',
        },
        {
            text: '二次安装',
            value: '3',
        },
        {
            text: '二次拆走',
            value: '4',
        },
        {
            text: '正在维护',
            value: '5',
        },
        {
            text: '其他',
            value: '6',
        },
    ],
    show: false,
    form: {
      devcode: "",
      wellcode: "",
      welltype: "",
      welldepth: "",
      installheigt: "",
      installperson: "",
      installtimeFmt: "",
      photopath: "",
      factory: "",
      workmsg: "",
      position: "",
      longitude: "",
      latitude: "",
      longitude84: "",
      latitude84: "",
      devicetype: "",
      project: '',
      area: "",
      street: "",
      wellname: "",
      photopath1: '',
      photopath2: '',
      photopath3: '',
      installType: '1', // 设备安装情况
      description: "初次安装", // 备注
    },
    fileList: [],
    listQuery: {
        wellCode: '', // wellCode
        wellType: '', // 井类型
        position: '', // 位置
        projectId: '', // 所在项目
    },
    showSelectProject: false,
  },

  onDisplay() {
    this.setData({
      show: true
    });
  },
  onClose() {
    this.setData({
      show: false
    });
  },
  //   cleaable 清除经度
  clearLongitude() {
    var _this = this;
    _this.setData({
      'form.longitude': '',
    });
  },
//   清除纬度
  clearclearLatitude() {
    var _this = this;
    _this.setData({
      'form.latitude': '',
    });
  },
  formatDate() {
    var date = new Date();
    // return `${date.getFullYear()}/${date.getMonth() + 1}/${date.getDate()}`;
    var seperator1 = "-";
    var month = date.getMonth() + 1;
    var strDate = date.getDate();
    var hour = date.getHours()
    var minute = date.getMinutes()
    var second = date.getSeconds()
    month = month > 9 ? month : "0" + month;
    strDate = strDate > 9 ? strDate : "0" + strDate;
    hour = hour > 9 ? hour : "0" + hour;
    minute = minute > 9 ? minute : "0" + minute;
    second = second > 9 ? second : "0" + second;
    var currentdate =
      date.getFullYear() +
      seperator1 +
      month +
      seperator1 +
      strDate +
      " " +
      hour + ":" +
      minute + ":" +
      second;
    return currentdate;

  },
  onConfirm(event) {
    var installtime = 'form.installtimeFmt';
    this.setData({
      show: false,
      installtimeFmt: this.formatDate(event.detail),
      [installtime]: this.formatDate(event.detail),
    });
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    var that = this;
    if(app.globalData.role === 'repair' && app.globalData.isConfigProject === '0') {
        that.setData({
            'showSelectProject': true,
        })
    } else {
        that.setData({
            'showSelectProject': false,
        })
    }
    
    console.log(app.globalData.selectProjectId, '===');
    that.setData({
        'form.project': app.globalData.selectProjectName,
        'projectName': app.globalData.selectProjectName,
    })
    console.log('-----------------------3333', options);
    //=========初始化表单内容为上次填写值==========
    // var cacheForms = wx.getStorageSync('cacheList')
    // if (cacheForms) {
    //   cacheForms.photopath1=''
    //   cacheForms.photopath2=''
    //   cacheForms.photopath3=''
    //   that.data.fileList=[]
    //   that.setData({
    //     form: cacheForms,
    //     devcode: cacheForms.devcode,
    //   })
    // }
    // var form = that.data.form
    //默认安装经纬度为当前位置(gcj02)
    if(options.fromPage !== 'defineMap') {
        wx.getLocation({
            type: "gcj02",
            altitude: true,
            success: function (res) {
                var longitude = 'form.longitude';
                var latitude = 'form.latitude';
                that.setData({
                [longitude]: parseFloat(res.longitude).toFixed(6),
                [latitude]: parseFloat(res.latitude).toFixed(6),
                longitude: parseFloat(res.longitude).toFixed(6),
                latitude: parseFloat(res.latitude).toFixed(6),
                });
                //获取当前坐标（wgs84）,特别注意需要放在加载里面，否则获取有误
                wx.getLocation({
                type: "wgs84",
                altitude: true,
                success: function (res) {
                    var longitude84 = 'form.longitude84';
                    var latitude84 = 'form.latitude84';
                    that.setData({
                    [latitude84]: parseFloat(res.latitude).toFixed(6),
                    [longitude84]: parseFloat(res.longitude).toFixed(6)
                    })
                }
                })
            }
        })
    }


    //获取井类型下拉列表
    wx.request({
    method: "POST",
    url: app.globalData.httpsUrl + "appDeviceAdd/getWellTypeList",   
    header: {
    'content-type': 'application/x-www-form-urlencoded;charset=utf-8'
    },
    success(res){
    if (res.data) {
        var welltype = res.data
        var welltypeArr = [];
        for (var i = 0; i < welltype.length; i++) {
        var type = {
            text: welltype[i].text,
            value: welltype[i].value
        };
        welltypeArr.push(type);
        }
        console.log('------', welltypeArr)
        that.setData({
        option1: welltypeArr
        })
    }
    }
    })

    //获取人员下拉列表
    wx.request({
      method: "POST",
      url: app.globalData.httpsUrl + "deviceType/getUser",   
      data:{
        tips:'repair'
      },
      header: {
        'content-type': 'application/x-www-form-urlencoded;charset=utf-8'
      },
      success(res){
        if (res.data.code == 200) {
          var users = res.data.data
          var personArr = [];
          for (var i = 0; i < users.length; i++) {
            var person = {
              text: users[i].name,
              value: users[i].name
            };
            personArr.push(person);
          }
          personArr.push({
            text: app.globalData.currentUserName,
            value: app.globalData.currentUserName
          });

          that.setData({
            personoption1: personArr
          })
        }
      }
   })
    


    //获取项目下拉列表
    wx.request({
      method: "POST",
      url: app.globalData.httpsUrl + "project/getProject",    
      header: {
        'content-type': 'application/x-www-form-urlencoded;charset=utf-8'
      },
      success(res){
        if (res.data.code == 200) {
          var projectList = res.data.data
          var projectArr = [];
          for (var i = 0; i < projectList.length; i++) {
            var project = {
              text: projectList[i].projectName,
              value: projectList[i].projectName
            };
            projectArr.push(project);
          }
          that.setData({
            projectoption: projectArr
          })
        } 
      }
   })
    
    var installtime = 'form.installtimeFmt';
    var dateNow = this.formatDate();
    this.setData({
      show: false,
      installtimeFmt: dateNow,
      [installtime]: dateNow,
    });



    /**
     * 获取设备类型下拉列表
     */
    wx.request({
      method: "POST",
      url: app.globalData.httpsUrl + "deviceType/deviceType",
      header: {
        'content-type': 'application/x-www-form-urlencoded;charset=utf-8'
      },
      success(res) {
        if (res.data.code == 200) {
          var TypeList = res.data.data
          var typeArr = [];
          for (var i = 0; i < TypeList.length; i++) {
            var type = {
              text: TypeList[i].productName,
              value: TypeList[i].productName
            };
            typeArr.push(type);
          }
          that.setData({
            devtypeList: typeArr
          })
        }
      }
    })

    // 粘贴经纬度
    if(options.fromPage !== 'defineMap') {
        this.paste()
    }
    // 处理备注的默认
    var description = 'form.description';
    that.setData({
        [description]: installTypeMap[that.data.form.installType]
    })
    console.log('options', options);
    if(options.fromPage === 'defineMap') { // 从自定义地图页面跳转过来
        console.log('-09999999999', app.globalData.currentUserName);
        that.setData({
            'form.wellType': options.wellType, // 井类型
            'form.wellcode': options.wellCode, // 井编号
            'form.position': options.position, // 位置
            'form.devicetype': '井盖状态监测仪', // 设备类型
            'form.installperson': app.globalData.currentUserName,
            'form.project': '2025-NBJ', // 所属项目
            'form.latitude': parseFloat(options.latitude).toFixed(6),
            'form.longitude': parseFloat(options.longitude).toFixed(6),
            latitude: parseFloat(options.latitude).toFixed(6),
            longitude: parseFloat(options.longitude).toFixed(6),
        })
    }

  },




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

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

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

  },

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

  },

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

  },

  //   监听页面滚动
  onPageScroll(e) {
    console.log('监听页面滚动');
    var that = this
    console.log(that.selectComponent('#selectPersonDropdown'));
    // that.selectComponent('#selectPersonDropdown').triggerEvent(false)
},

toggle() {

},
  //   点击检索
  searchWellCode() {
    if(!this.data.form.wellcode) {
        wx.showToast({
            icon: 'error',
            title: '请先输入井编号',
          })
        return false
    }
    this.setData({
        'listQuery.wellCode': this.data.form.wellcode
    })
    this.fetchWellPre()
  },
  //获取井列表
  fetchWellPre() {
    return new Promise((resolve, reject) => {
        var that = this
        wx.showLoading({
            mask: true
        })
        wx.request({
            method: "POST",
            url: app.globalData.httpsUrl + "well/pre/listPage" + `?offset=${1}&limit=${9999}`,   
            // header: {
            //   'content-type': 'application/x-www-form-urlencoded;charset=utf-8'
            // },
            data: {
                ...that.data.listQuery,
                offset: 1,
                limit: 9999
            },
            success(res) {
                wx.hideLoading()
                if (res.data) {
                    if(!res.data.data.rows.length) {
                        wx.showToast({
                            icon: 'error',
                            title: '查无结果'
                        })
                    } else {
                        const tempList = res.data.data.rows.map(item => {
                            return {
                                ...item,
                                name: item.wellName,
                            }
                        })
                        that.setData({
                            wellActions: tempList,
                            wellShow: true
                        })
                    }
                }
            },
            fail(res) {
                wx.hideLoading()
                wx.showToast({
                    icon: 'none',
                    title: '查询失败，请手动输入'
                })
            }
        })
    })
  },
  // 点击选择器的取消
  cancleWellShow() {
    this.setData({
        wellShow: false,
    })
  },
  // 选择好井
  selectWells(e) {
    var that = this
    const val = e.detail
    console.log(val);
    that.setData({
        'form.wellcode': val.wellCode, // 井编号
        'form.wellname': val.wellName, // 井名称
        'form.welltype': val.wellType, // 井类型
        'form.position': val.position, //位置描述
    })
    that.cancleWellShow()
  },

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

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  },



  /**
   * 校验只要是数字（包含正负整数，0以及正负浮点数）就返回true
   **/

  isNumber: function (val) {

    var regPos = /^[0-9]*$/; //非负浮点数
    var regNeg = /^(-?\d+)(\.\d+)?$/; //负浮点数
    if (regPos.test(val) || regNeg.test(val)) {
      return false;
    } else {
      return true;
    }

  },

  //验证表单
  formValidate() {

    if (this.data.form.devcode == "") {
      wx.showToast({
        icon: 'none',
        title: '设备编号不能为空！',
      })
      return false
    }
    if (this.data.form.longitude == "" || this.data.form.latitude == "") {
        wx.showToast({
          icon: 'none',
          title: '经纬度不能为空！',
        })
        return false
      }
    if (this.data.form.position == "") {
        wx.showToast({
          icon: 'none',
          title: '位置描述不能为空！',
        })
        return false
      }
    if (this.data.form.wellcode == "") {
      wx.showToast({
        icon: 'none',
        title: '井编号不能为空！',
      })
      return false
    }

    if (this.data.form.devicetype == "") {
      wx.showToast({
        icon: 'none',
        title: '设备类型不能为空！',
      })
      return false
    }
    

    
    if (this.data.form.installperson == "") {
      wx.showToast({
        icon: 'none',
        title: '安装人员不能为空！',
      })
      return false
    }


    if (this.data.form.welldepth != null) {
      if (this.isNumber(this.data.form.welldepth)) {
        wx.showToast({
          icon: 'none',
          title: '井深必须为数值！',
        })
        return false
      }
    }
    if (this.data.form.installheigt != null) {
      if (this.isNumber(this.data.form.installheigt)) {
        wx.showToast({
          icon: 'none',
          title: '到井口距离必须为数值！',
        })
        return false
      }
    }

    if (this.data.form.project == "") {
      wx.showToast({
        icon: 'none',
        title: '所属项目不能为空！',
      })
      return false
    }

    if (this.data.form.installtimeFmt == null) {
      wx.showToast({
        icon: 'none',
        title: '安装时间不能为空！',
      })
      return false
    }
    return true;
  },
  //提交表单
  formSubmit: function (event) {
      console.log(this.data.form)
    //表单参数验证
    if (!this.formValidate()) {
      return false;
    }
    var that = this;
    //验证设备编号长度
    wx.request({
      method: 'POST',
      url: app.globalData.httpsUrl + "appDeviceAdd/getDevTypeLength",
      data: {
        code: encodeURI(this.data.form.devicetype)
      },
      header: {
        'content-type': 'application/x-www-form-urlencoded;charset=utf-8'
      },
      success(res) {
        if (""==res.data.data ||res.data.data == that.data.form.devcode.length) {
          that.saveDevice()
        } else { //编号位数不对提示
          wx.showToast({
            icon: 'none',
            title: '设备编号位数不对！',
            duration: 1000
          })
          return false
        }
      }
    })
  },

  //保存设备基本信息
  saveDevice() {
    var that = this;
    //设置照片路径
    var fileList = that.data.fileList;
    for (var i = 0; i < fileList.length; i++) {
      var photopathForm = 'form.photopath' + [Number(i) + 1]
      this.setData({
        [photopathForm]: fileList[i].url.split("static/")[1]
      })
    }
    that.setData({
        'form.project': that.data.form.project,
        'projectName': that.data.form.project,
    })
    //表单提交
    wx.request({
      method: "POST",
      url: app.globalData.httpsUrl + "appDeviceAdd/add",
      data: that.data.form,
      header: {
        'content-type': 'application/x-www-form-urlencoded;charset=utf-8'
      },
      success(res) {
        if (res.data.code == 500) {
          wx.showToast({
            title: '设备编号已安装！',
          })
        } else if (res.data.code == 200) {
          wx.showModal({
            content: '提交成功，是否返回？',
            success: function (res) {
                console.log('用户点击了返回')
                //用于回显
                console.log('lll', that.data.form);
                wx.setStorageSync('cacheList', that.data.form)
              //提交成功后提示用户操作
              if (res.confirm) {
                // wx.switchTab({
                //   url: '../earth/earth'
                // })
                console.log('lleeel', that.data.form);
                app.globalData.addsuccessWellCode = that.data.form.wellcode
                wx.navigateBack({ // 返回上一页
                    delta: 1
                });
              } else { //这里是点击了取消以后 
                console.log('用户点击取消')
              }
            }
          })
        }
      },
      fail(err) {
        wx.showToast({
          title: '提交失败！',
        })
      }
    })
  },
  // 井编号输入框点击清除按钮
//   clickClearable() {
//     this.setData({
//         'form.wellcode': ''
//     })
//   },
    //   井编号改变
    changeWellCode(e) {
        console.log(e);
        this.setData({
            'form.wellcode': e.detail
        })
    },

  //input 输入框设置值
  confirm(event) {
    var that = this;
    var formValue = event.detail.value;
    var formName = event.target.dataset.id;
    var fromN = 'form.' + [formName];
    that.setData({
      [fromN]: formValue,
    })
    //若输入是设备编号，自动获取设备类型
    if('devcode'==formName){
      wx.request({
        method: 'POST',
        url: app.globalData.httpsUrl + "appDeviceAdd/findModeCodeByCode",
        data: {
          devcode: formValue,
        },
        header: {
          'content-type': 'application/x-www-form-urlencoded;charset=utf-8'
        },
        success(res) {
          if (res.data) {
            var formDevicetype = 'form.devicetype'
            that.setData({
              [formDevicetype]: res.data
            });
          }
        }
      })
    }
  },

  //扫描设备获取编号和设备类型
  scan() {
    var _this = this;
    wx.scanCode({
      success(res) {
        var devcode = res.result
        var formdevcode = 'form.devcode'
        _this.setData({
          [formdevcode]: devcode
        });
        wx.request({
          method: 'POST',
          url: app.globalData.httpsUrl + "appDeviceAdd/findModeCodeByCode",
          data: {
            devcode: devcode,
          },
          header: {
            'content-type': 'application/x-www-form-urlencoded;charset=utf-8'
          },
          success(res) {
            if (res.data) {
              var formDevicetype = 'form.devicetype'
              _this.setData({
                [formDevicetype]: res.data
              });
            }
          }
        })
      }
    })
  },
  //粘贴经纬度
  paste() {
    var _this = this;
    wx.getClipboardData({
      success: function (res) {
        var longitude = 'form.longitude';
        var latitude = 'form.latitude';
        var longitude84 = 'form.longitude84';
        var latitude84 = 'form.latitude84';
        _this.setData({
          [longitude]: parseFloat(res.data.split(",", 4)[1]).toFixed(6),
          [latitude]: parseFloat(res.data.split(",", 4)[0]).toFixed(6),
          [longitude84]: "" == (res.data.split(",", 4)[3]) ? "" : parseFloat(res.data.split(",", 4)[3]).toFixed(6),
          [latitude84]: "" == (res.data.split(",", 4)[2]) ? "" : parseFloat(res.data.split(",", 4)[2]).toFixed(6),
          longitude: parseFloat(res.data.split(",", 4)[1]).toFixed(6),
          latitude: parseFloat(res.data.split(",", 4)[0]).toFixed(6),
        });
        _this.showAddress(_this.data.form.longitude,_this.data.form.latitude,_this)
      }
    })
  },
  //设置经类型
  selectValue(value) {

    var that = this;
    var wellType = 'form.welltype';
    that.setData({
      [wellType]: value.detail
    })
  },
  //   设置设备安装情况
  selectInstallType(value) {
    var that = this;
    var installType = 'form.installType';
    var description = 'form.description';
    that.setData({
      [installType]: value.detail,
      [description]: installTypeMap[value.detail]
    })
  },

  //设置设备类型
  selectDevType(event) {
    var that = this;
    var devtype = 'form.devicetype';
    that.setData({
      [devtype]: event.detail
    })
  },
  //设置运维人员
  selectpersonValue(event) {
    var that = this;
    var installPerson = 'form.installperson';
    that.setData({
      [installPerson]: event.detail
    })
  },
  //设置项目
  selectprojectValue(event) {
    var that = this;
    var project = 'form.project';
    that.setData({
      [project]: event.detail
    })
  },
   showAddress :function(longitude, latitude, self) {
    // 实例化腾讯地图API核心类  
    qqmapsdk = new QQMapWX({
      key: 'BGPBZ-C5O3P-ROUDR-LWC4J-63EKH-V5FRX'//此处使用你自己申请的key  
    })
    // 腾讯地图调用接口  
    qqmapsdk.reverseGeocoder({
      location: {
        latitude: latitude,
        longitude: longitude
      },
      success: function (res) {
        self.setData({
          'form.area':res.result.address.slice(0,res.result.address.indexOf('区')+1),
          'form.street':res.result.address.slice(res.result.address.indexOf('区')+1)
        })
      },
      fail: function (res) {
        console.log(res);
      },
      complete: function (res) {
      }
    });
  },
  //上传照片
  afterRead(event) {
    var _this = this;
    if (_this.data.form.devcode == "") {
      wx.showToast({
        icon: 'none',
        title: '请先填写设备编号！\r\n否则水印中无编号',
        duration: 2000
      })
      return false
    }
    const {
      file
    } = event.detail;
    const {
      fileList = []
    } = this.data;
    var convertpath = "";
    // 压缩图片
    wx.compressImage({
      src: event.detail.file.path,
      quality: 25,
      success: function (res) {
        convertpath = res.tempFilePath;
        wx.uploadFile({
          url: app.globalData.httpsUrl + "appDeviceAdd/fileUploadMarker",
          filePath: convertpath,
          name: 'file',
          formData: {
            'text': "编号:" + _this.data.form.devcode + "经度:" + _this.data.form.longitude + "纬度:" + _this.data.form.latitude
          },
          header: {
            "Content-Type": "multipart/form-data",
            'accept': 'application/json',
          },
          success(res) {
            if (res.data) {
              var url = JSON.parse(res.data);
              fileList.push({
                ...file,
                url: app.globalData.httpsUrl + "static/" + url.data.replace(/\\/g, "/")
              });
              _this.setData({
                fileList
              });
            }
          }
        })
      }
    })
  },
  //删除照片
  deletePhoto(event) {
    var image_index = event.detail.index
    var fileList_new = this.data.fileList;
    fileList_new.splice(image_index, 1);
    this.setData({
      fileList: fileList_new
    })
  },
})