// pages/sign/sign.js var myRequest = require("../../utils/api.js"); var utils = require("../../utils/utils.js"); var QQMapWX = require('../../utils/qqmap-wx-jssdk.min.js') Page({ /** * 页面的初始数据 */ data: { latitude: '', longitude: '', deviceLat: '', deviceLong: '', address: '', label: '请选择站点', singleSelect: { value: '', options: [], }, userInfo: [], keys: { value: 'code', label: 'name', }, projectId: '', isSing: false, isSingOut: false, deviceCode: '', }, /** * 生命周期函数--监听页面加载 */ onLoad: function (options) { this.getLocation(); this.getTime(); var projectId = wx.getStorageSync('projectId'); this.setData({ projectId: projectId, }) }, getTime() { var that = this; var interval = setInterval(function() { var time = utils.getTime(); that.setData({ time: time }) }, 1000); }, handleSingleSelect(e) { this.setData({ 'singleSelect.value': e.detail.value, deviceCode: e.detail.value }); // wx.setStorageSync('deviceCode', e.detail.value) this.isUserSign(); this.isUserSignOut(); this.setSelectLabel(e.detail.value) }, setSelectLabel(value) { var options = this.data.singleSelect.options; for (let i = 0; i < options.length; i++) { if(options[i].code == value) { this.setData({ label: options[i].name, deviceLat: options[i].latitude, deviceLong: options[i].longitude, }) // wx.setStorageSync('deviceName', options[i].name) // wx.setStorageSync('deviceLat', options[i].latitude) // wx.setStorageSync('deviceLong', options[i].longitude) } } }, //获取距离 // getDistance: function(latitude = '',longitude = '') { // if (latitude == '' || longitude == '') { // var lat1 = wx.getStorageSync('deviceLat') // var lng1 = wx.getStorageSync('deviceLong') // } else { // var lat1 = latitude // var lng1 = longitude // } // var lat2 = this.data.latitude; // var lng2 = this.data.longitude; // lat1 = lat1 || 0; // lng1 = lng1 || 0; // lat2 = lat2 || 0; // lng2 = lng2 || 0; // var rad1 = lat1 * Math.PI / 180.0; // var rad2 = lat2 * Math.PI / 180.0; // var a = rad1 - rad2; // var b = lng1 * Math.PI / 180.0 - lng2 * Math.PI / 180.0; // var r = 6378137; // var distance = r * 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(rad1) * Math.cos(rad2) * Math.pow(Math.sin(b / 2), 2))); // return distance; // }, //签到 singIn() { var that = this; if (!that.isSeleckDev) { wx.showToast({ title: '请选择站点', icon: 'none', }) return false; } if (that.data.deviceCode == '') { wx.showToast({ title: '附近没有站点', icon: 'none', }) return false; } var url = 'sign/in?deviceCode=' + that.data.deviceCode + '&location=' + that.data.address; myRequest.myRequest(url, {}, 'post').then(function(res){ wx.showToast({ title: '签到成功', icon: 'none', }) that.setData({ isSing: true }) that.isUserSign(); that.isUserSignOut(); }).catch(function(res){ console.log(res); }) }, //签退 singOut() { var that = this; if (!that.isSeleckDev) { wx.showToast({ title: '请选择站点', icon: 'none', }) return false; } if (that.data.deviceCode == '') { wx.showToast({ title: '附近没有站点', icon: 'none', }) return false; } // if (this.getDistance() > 2000 ) { // wx.showToast({ // title: '目前不在打卡范围', // icon: 'none', // }) // return false; // } var url = 'sign/out?deviceCode=' + that.data.deviceCode; myRequest.myRequest(url, {}, 'post').then(function(res){ wx.showToast({ title: '签退成功', icon: 'none', }) that.setData({ isSing: false }) that.isUserSign(); that.isUserSignOut(); }).catch(function(res){ console.log(res); }) }, isSeleckDev() { if (this.data.singleSelect.value == '') { return false; } return true; }, // 计算两个坐标间的距离 //获取站点 getDevicesData: function() { var that = this; myRequest.myRequest('system/devicesLocation', { projectId: that.data.projectId, latitude: that.data.latitude, longitude: that.data.longitude, }, 'get').then(function(res){ var devicesList = res.data.data; that.setData({ 'singleSelect.options': devicesList, }); if (undefined != devicesList[0]) { that.setData({ 'singleSelect.value': devicesList[0].code, label: devicesList[0].name, deviceCode: devicesList[0].code }) } else { that.setData({ 'singleSelect.value': '', label: '请选择站点', deviceCode: '' }) } that.isUserSign(); that.isUserSignOut(); }).catch(function(res){ console.log(res); }) }, //判断当日是否签到 isUserSign() { var that = this; console.log(1, that.data.deviceCode) if (that.data.deviceCode == '') { wx.showToast({ title: '附近没有站点', icon: 'none', }) return false; } myRequest.myRequest('sign/isSign', { deviceCode: that.data.deviceCode }, 'get').then(function(res){ that.setData({ isSing: res.data.data }) }).catch(function(res){ console.log(res); }) }, //判断当日是否签退 isUserSignOut() { var that = this; console.log(2, that.data.deviceCode) if (that.data.deviceCode == '') { wx.showToast({ title: '附近没有站点', icon: 'none', }) return false; } myRequest.myRequest('sign/isSignOut', { deviceCode: that.data.deviceCode }, 'get').then(function(res){ that.setData({ isSingOut: res.data.data }) }).catch(function(res){ console.log(res); }) }, //获取位置信息 getLocation() { var that = this wx.getLocation({//调用API得到经纬度 type: 'gcj02', isHighAccuracy: true, success: function (res) { var latitude = res.latitude var longitude = res.longitude that.setData({ latitude: res.latitude, longitude: res.longitude }) that.getDevicesData(); //地址解析 var demo = new QQMapWX({ key: 'D6LBZ-45P3N-3V2FH-S2YBM-6ISH3-7LF7W' }); demo.reverseGeocoder({//地址解析 location: { latitude: latitude, longitude: longitude }, success: function (res) { console.log(res); //获得地址 that.setData({ address: res.result.address }) }, fail: function (res) { console.log(res); }, complete: function (res) { console.log(res); } }); } }) }, /** * 生命周期函数--监听页面初次渲染完成 */ onReady: function () { }, /** * 生命周期函数--监听页面显示 */ onShow: function () { // this.getDevicesData(); }, /** * 生命周期函数--监听页面隐藏 */ onHide: function () { }, /** * 生命周期函数--监听页面卸载 */ onUnload: function () { }, /** * 页面相关事件处理函数--监听用户下拉动作 */ onPullDownRefresh: function () { }, /** * 页面上拉触底事件的处理函数 */ onReachBottom: function () { }, /** * 用户点击右上角分享 */ onShareAppMessage: function () { } })