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