// package/startInspectiocurPlann/startInspection.js import { addPatrolRecord, getPatrolRecord, getPatrolPlan } from "../../utils/getApiUrl"; import { Request } from "../../common"; const moment = require("../../utils/moment"); Page({ /** * 页面的初始数据 */ data: { scenePointId: null, planList: null, planListVisible: true, dataList: '', imgs: [], //上传图片 imgUrl: getApp().globalData.imgUrl, msgInp: '', //巡查详情 itemData: '', //单条数据 changeTwo: '', //是否异常 changeThree: '', //严重等级 address: '', //当前位置 }, onPickerChange(e) { const { key } = e.currentTarget.dataset; const { value } = e.detail; this.setData({ [`${key}Visible`]: false, [`${key}Value`]: value, [`${key}Text`]: value.join(' '), }); const curPlan = this.data.planList[e.detail.columns[0].index]; let points = curPlan.points.map(e => { return e.name }).join('、') this.setData({ dataList: curPlan, points, showModal: true, itemData: curPlan.points.find(p => p.id == this.data.scenePointId) }) this.getPatrolRecord(); }, onPickerCancel(e) { const { key } = e.currentTarget.dataset; this.setData({ [`${key}Visible`]: false, }); }, onPlanListPicker() { this.setData({ planListVisible: true }); }, handleChangeTwo(e) { this.setData({ changeTwo: e.detail.value }) if (e.detail.value == 'normal') { this.setData({ msgInp: '', //巡查详情 changeThree: '', //严重等级 imgs: [] }) return; } }, handleChangeThree(e) { this.setData({ changeThree: e.detail.value }) }, showModal(e) { this.setData({ showModal: true, itemData: e.currentTarget.dataset.itemdata }) }, bindCancel() { this.setData({ showModal: false, itemData: '', msgInp: '', //巡查详情 changeTwo: '', //是否异常 changeThree: '', //严重等级 imgs: [], address: '' }) }, // 上传图片 chooseImg: function (e) { //这里是选取图片的方法 var that = this; var pics = []; var detailPics = that.data.imgs; if (detailPics.length >= 20) { wx.showToast({ title: '最多选择20张图片上传', icon: 'none' }); return; } wx.chooseMedia({ count: 20, // 基础库2.25.0前,最多可支持9个文件,2.25.0及以后最多可支持20个文件 mediaType: ['image'], // 文件类型 sizeType: ['original', 'compressed'], // original 原图,compressed 压缩图,默认二者都有 sourceType: ['album', 'camera'], // album 从相册选图,camera 使用相机,默认二者都有 success: function (res) { var imgs = res.tempFiles; for (var i = 0; i < imgs.length; i++) { if (res.tempFiles[i].size > 15728640) { commonJs.showToast('图片大于15M,不可上传'); return; } pics.push(imgs[i].tempFilePath) } that.uploadimg({ url: getApp().globalData.webUrl + '_upload/attachments/project', //这里是你图片上传的接口 path: pics, //这里是选取的图片的地址数组 }); }, }) }, //多张图片上传 uploadimg: function (data) { wx.showLoading({ title: '上传中...', mask: true, }) var that = this, i = data.i ? data.i : 0, success = data.success ? data.success : 0, fail = data.fail ? data.fail : 0; let imgs = that.data.imgs; wx.uploadFile({ url: data.url, filePath: data.path[i], name: 'file', success: (resp) => { wx.hideLoading(); success++; var str = JSON.parse(resp.data) //返回的结果,可能不同项目结果不一样 str = str.uploaded console.log(str); if (imgs.length >= 20) { that.setData({ imgs: imgs }); return false; } else { imgs.push(that.data.imgUrl + str); that.setData({ imgs: imgs }) } }, fail: (res) => { fail++; console.log('fail:' + i + "fail:" + fail); }, complete: () => { i++; if (i == data.path.length) { //当图片传完时,停止调用 console.log('执行完毕'); console.log('成功:' + success + " 失败:" + fail); } else { //若图片还没有传完,则继续调用函数 data.i = i; data.success = success; data.fail = fail; that.uploadimg(data); //递归,回调自己 } } }); }, // 删除图片 deleteImg: function (e) { var imgs = this.data.imgs; var index = e.currentTarget.dataset.index; imgs.splice(index, 1); this.setData({ imgs: imgs }); }, // 预览图片 previewImg: function (e) { //获取当前图片的下标 var index = e.currentTarget.dataset.index; //所有图片 var imgs = this.data.imgs; wx.previewImage({ //当前显示图片 current: imgs[index], //所有图片 urls: imgs }) }, // 巡查详情 bindInput: function (e) { this.setData({ msgInp: e.detail.value }) }, // 开始巡检录入 addPatrolRecord: function () { let that = this; let { itemData, imgs, msgInp, changeTwo, changeThree, dataList, imgUrl, address } = that.data; let newImgs = imgs.map(i => { i = i.replace(imgUrl, ''); return i; }) if (changeTwo == 'abnormal') { if (msgInp == '') { wx.showToast({ title: '请填写巡查详情', icon: 'none' }) return; } if (changeThree == '') { wx.showToast({ title: '请选择严重等级', icon: 'none' }) return; } if (address == '') { wx.showToast({ title: '请获取当前位置', icon: 'none' }) return; } let data = { patrolPlanId: dataList.id, pointId: itemData.id, lastInspectionTime: itemData.lastInspectionTime, inspectionTime: moment().format('YYYY-MM-DD HH:mm:ss'), points: { user: dataList.user, project: dataList.project, frequency: dataList.frequency, itemData: itemData, msgInp: msgInp, changeThree: changeThree == 'slight' ? '轻微' : changeThree == 'moderate' ? '中度' : '严重', imgs: newImgs, address: address }, alarm: true } Request.post(addPatrolRecord(), data).then(res => { wx.showToast({ title: '提交成功', icon: 'success' }) that.bindCancel(); setTimeout(() => { that.getPatrolRecord() }, 1500) }) } else { if (changeTwo == 'normal') { if (address == '') { wx.showToast({ title: '请获取当前位置', icon: 'none' }) return; } let data = { patrolPlanId: dataList.id, pointId: itemData.id, lastInspectionTime: itemData.lastInspectionTime, inspectionTime: moment().format('YYYY-MM-DD HH:mm:ss'), points: { user: dataList.user, project: dataList.project, frequency: dataList.frequency, itemData: itemData, address: address }, alarm: false } Request.post(addPatrolRecord(), data).then(res => { wx.showToast({ title: '提交成功', icon: 'success' }) that.bindCancel(); setTimeout(() => { that.getPatrolRecord() }, 1500) }) return; } wx.showToast({ title: '提交信息不全,请检查', icon: 'none' }) } }, // 获取巡检记录 getPatrolRecord: function () { let that = this; let { dataList } = that.data; let pointId = dataList.points.map(i => { return i.id; }) wx.showLoading({ title: '加载中' }) Request.get(getPatrolRecord(dataList.id, 'null', 'null', 'null', pointId)).then(res => { wx.hideLoading(); dataList.points.map(e => { res.map(i => { if (i == null) { e.lastInspectionTime = moment().format('YYYY-MM-DD'); e.inspectionTime = moment().format('YYYY-MM-DD'); } else { e.lastInspectionTime = moment(i.lastInspectionTime).format('YYYY-MM-DD'); e.inspectionTime = moment(i.inspectionTime).format('YYYY-MM-DD'); } }) return e; }) that.setData({ dataList }) }) }, // 解析经纬度 ToDegrees(val) { if (typeof (val) == "undefined" || val == "") { return ""; } var i = val.indexOf('.'); var strDu = i < 0 ? val : val.substring(0, i); //获取度 var strFen = 0; var strMiao = 0; if (i > 0) { var strFen = "0" + val.substring(i); strFen = strFen * 60 + ""; i = strFen.indexOf('.'); if (i > 0) { strMiao = "0" + strFen.substring(i); strFen = strFen.substring(0, i); //获取分 strMiao = strMiao * 60 + ""; i = strMiao.indexOf('.'); strMiao = strMiao.substring(0, i + 4); //取到小数点后面三位 strMiao = parseFloat(strMiao).toFixed(2); //精确小数点后面两位 } } return strDu + "°" + strFen + "′" + strMiao + "″"; }, // 获取当前位置 selfLocation() { const that = this wx.showLoading({ title: '定位中', mask: true, }); wx.getLocation({ type: 'wgs84', success: (res) => { wx.request({ url: `https://apis.map.qq.com/ws/geocoder/v1/?location=${res.latitude},${res.longitude}&key=${getApp().globalData.key}`, success: function (res) { wx.hideLoading(); //根据自己项目需求获取res内容 that.setData({ address: res.data.result.address }) } }) }, fail: (res) => { console.log(res) wx.hideLoading(); wx.showToast({ title: res.errMsg, icon: 'none', duration: 1000 }); } }); }, // 获取巡检计划 getPatrolPlan: function (scenePointId) { let that = this; wx.showLoading({ title: '加载中', }) const userInfo = wx.getStorageSync('userInfo'); Request.get(getPatrolPlan(), { userId: userInfo.id }).then(res => { wx.hideLoading(); let pointPlan = res.rows.filter(plan => { for (const point of plan.points) { if (point.id == scenePointId) { return true; } } return false; }).map(p => ({ label: p.name, value: p.name, ...p })) if (!pointPlan.length) { wx.showModal({ title: '提示', content: '你没有当前点位的巡检权限,请联系管理员进行授权', showCancel: false, success: function () { wx.switchTab({ url: '/pages/index/index', }) } }) } that.setData({ planList: pointPlan }) }) }, /** * 生命周期函数--监听页面加载 */ onLoad(options) { let that = this; const scenePointId = options.scene; if (scenePointId) { // 扫小程序码进入 const userInfo = wx.getStorageSync('userInfo'); if (!userInfo || !userInfo.id) { // 如果没登录,先登录 wx.showToast({ title: '请先登录' }) wx.reLaunch({ url: `/pages/login/login?scene=${scenePointId}` }); return; } that.setData({ scenePointId }) that.getPatrolPlan(scenePointId); } else { // 正常点击进入 let data = JSON.parse(decodeURIComponent(options.data)); let points = data.points.map(e => { return e.name }).join('、') that.setData({ dataList: data, points }) that.getPatrolRecord(); } }, /** * 生命周期函数--监听页面初次渲染完成 */ onReady() { }, /** * 生命周期函数--监听页面显示 */ onShow() { }, /** * 生命周期函数--监听页面隐藏 */ onHide() { }, /** * 生命周期函数--监听页面卸载 */ onUnload() { }, /** * 页面相关事件处理函数--监听用户下拉动作 */ onPullDownRefresh() { }, /** * 页面上拉触底事件的处理函数 */ onReachBottom() { }, /** * 用户点击右上角分享 */ onShareAppMessage() { } })