Newer
Older
smart_construction / miniprogram / pages / addDevice / addDevice.js
dutingting on 12 Dec 2022 16 KB first commit
// miniprogram/pages/addDevice/addDevice.js
// import  WxValidate from '../../utils/WxValidate.js'
var QQMapWX = require('../../libs/qqmap-wx-jssdk.js');
var qqmapsdk;
var app = getApp()
Page({

  /**
   * 页面的初始数据
   */
  data: {
    canvasHeight: '',
    canvasWidth: '',
    longitude: '',
    latitude: '',
    option1: [],
    personoption1: [],
    projectoption: [],
    devtypeList:[],
    show: false,
    form: {
      devcode: "",
      wellcode: "",
      welltype: "",
      welldepth: "",
      installheigt: "",
      installperson: "",
      installtimeFmt: "",
      photopath: "",
      factory: "",
      workmsg: "",
      position: "",
      description: "",
      longitude: "",
      latitude: "",
      longitude84: "",
      latitude84: "",
      devicetype: "",
      project: "",
      area: "",
      street: "",
      wellname: "",
      photopath1: '',
      photopath2: '',
      photopath3: '',
    },
    fileList: []
  },

  onDisplay() {
    this.setData({
      show: true
    });
  },
  onClose() {
    this.setData({
      show: false
    });
  },
  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;
    //初始化表单内容为上次填写值
    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)
    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);
      }
      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);
          }
          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
          })
        }
      }
    })
  },




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

  },

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

  },

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

  },

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

  },

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

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  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]
      })
    }
    //表单提交
    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) {
              //用于回显
              wx.setStorageSync('cacheList', that.data.form)
              //提交成功后提示用户操作
              if (res.confirm) {
                wx.switchTab({
                  url: '../earth/earth'
                })
              } else { //这里是点击了取消以后 
                console.log('用户点击取消')
              }
            }
          })
        }
      },
      fail(err) {
        wx.showToast({
          title: '提交失败!',
        })
      }
    })
  },

  //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
    })
  },

  //设置设备类型
  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
    })
  },
})