import { BASEURL } from '../../../../utils/config'; var QQMapWX = require('../../utils/qqmap-wx-jssdk.js'); const api = require('../../../../utils/api') Page({ /** * 页面的初始数据 */ data: { BASEURL: BASEURL(), qqmapsdk:"", signin: {},//活动打卡地点详情 actId: "",//活动ID operationDesc: "",//打卡描述 operationDesc_:"", locationLongitude: Number,//打卡位置经度 locationLatitude: Number,// 打卡位置纬度 operationAddress:"",//打卡地址 images: [],//图片 clockType: Number,//打卡类型(0-打卡,1-更新打卡) effectiveFlag: Number,//打卡是否有效(0-否,1-是) phraseList:[],//常用于列表 phraseId:"",//常用语id }, /** * 生命周期函数--监听页面加载 */ onLoad: function (options) { const qqmapsdk = new QQMapWX({ key: 'CMJBZ-4DECI-JXGGN-5B4WU-QLV2H-B5BEJ' }) if (options.currentUserStatus == "4") {//0-打卡 this.setData({ clockType: 0 }) }else{//更新打卡 this.setData({ clockType: 1 }) } this.setData({ qqmapsdk, id: options.id, effectiveFlag:1 }) this.getPhraseList();//常用语列表 this.getPosition(); this.clockAddressDetail(); }, getPhraseList(){ let that = this; api.getPhraseList().then(function (res) {//常用语列表 console.log('常用语列表:' + JSON.stringify(res.data)) that.setData({ phraseList: res.data, }) }) }, toOperationDesc(phrase){//常用于点击事件 // console.log(phrase.currentTarget.dataset.phrase) this.setData({ operationDesc: this.data.operationDesc + phrase.currentTarget.dataset.phrase, phraseId: phrase.currentTarget.dataset.id }) // console.log(phrase.currentTarget.dataset.phrase) }, //获取经纬度 getPosition() { wx.showLoading({ title: '正在获取位置', }) wx.getLocation({ type: 'gcj02', success: (res) => { this.reverseGeocoder(res) this.setData({ location: { locationLongitude: res.latitude, locationLatitude: res.longitude } }) } }) }, // 逆地址解析 reverseGeocoder({ latitude, longitude }) { var that = this; that.data.qqmapsdk.reverseGeocoder({ location: { latitude, longitude }, success: (res) => { wx.hideLoading(); if (res.message === 'query ok') { that.setData({ operationAddress: res.result.address }) } } }) }, // 上传图片 onChange(e) { // console.log('onChange', e) const { file } = e.detail if (file.status === 'uploading') { this.setData({ progress: 0, }) wx.showLoading() } else if (file.status === 'done') { this.setData({ imageUrl: file.url, }) } let images = [] e.detail.fileList.forEach((item, index, array) => { if (item.res !== undefined) { const imageUrl = JSON.parse(e.detail.fileList[index].res.data).data images.push(imageUrl) } }) this.setData({ images: images }) // console.log("~~~~~~@@@@@@@@" + JSON.stringify(images)) }, onSuccess(e) { // console.log('onSuccess', e) }, onFail(e) { // console.log('onFail', e) }, // 上传完成 onComplete(e) { // console.log('onComplete', e) wx.hideLoading() }, // 点击图片放大 onPreview(e) { // console.log('onPreview', e) const { file, fileList } = e.detail wx.previewImage({ current: file.url, urls: fileList.map((n) => n.url), }) }, // 填写意见 // bindInput: function (e) { // this.setData({ // operationDesc: e.detail.value + this.data.operationDesc, // operationDesc_: e.detail.value // }) // if (this.data.operationDesc_.length == 0){ // this.setData({ // operationDesc: e.detail.value, // operationDesc_: e.detail.value // }) // } // console.log(this.data.operationDesc_) // }, getbindinput(e) { this.setData({ operationDesc: e.detail.value, }) }, /** * 数据提交方法 */ submission() { if (this.data.operationDesc === '') { wx.showToast({ title: '请先输入打卡描述', icon: 'none', duration: 3000 }) return false } if (this.data.images.length==0){ wx.showToast({ title: '请上传打卡图片', icon: 'none', duration: 3000 }) return false } if (this.data.phraseId) { api.sagenumAddOne(this.data.phraseId).then(function (res) { console.log('常用语言:' + res) }) } const signinLongitude = this.data.signin.signinLongitude;//经度 const signinLatitude = this.data.signin.signinLatitude;//纬度 const clockLongitude = this.data.location.locationLatitude;//经度 const clockLatitude = this.data.location.locationLongitude;//纬度 // console.log("signinLongitude" + signinLongitude + "signinLatitude" + signinLatitude) // console.log("clockLongitude" + clockLongitude + "clockLatitude" + clockLatitude) // Lat1 Lung1 表示A点纬度和经度,Lat2 Lung2 表示B点纬度和经度; // a = Lat1 – Lat2 为两点纬度之差 b = Lung1 - Lung2 为两点经度之差; // 6378.137为地球半径,单位为公里;计算出来的结果单位为公里; var radLat1 = this.Rad(signinLatitude); var radLat2 = this.Rad(clockLatitude); var a = radLat1 - radLat2; var b = this.Rad(signinLongitude) - this.Rad(clockLongitude); var s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2))); s = s * 6378.137;// EARTH_RADIUS; s = Math.round(s * 10000) / 10000 *1000; //s=s.toFixed(4); if (s > this.data.signin.clockRadius){ this.setData({ effectiveFlag:0 }) }else{ this.setData({ effectiveFlag: 1 }) } const params={ actId: this.data.id, clockDesc: this.data.operationDesc, clockLongitude: this.data.location.locationLongitude, clockLatitude: this.data.location.locationLatitude, clockAddress: this.data.operationAddress, images: this.data.images, clockType: this.data.clockType,//打卡类型(0-打卡,1-更新打卡) effectiveFlag: this.data.effectiveFlag//打卡是否有效(0-否,1-是) } // console.log('~~~~~~~":::::' + JSON.stringify(params)) api.clock(params).then(function (res) { if (res.code == 0) { wx.showToast({ title: '打卡成功', icon: 'none', duration: 3000, complete: function () { setTimeout(function () { wx.navigateBack() }, 1000); } }) } }) }, Rad(d) {//经纬度转换成三角函数中度分表形式。 return d * Math.PI / 180.0; }, clockAddressDetail() {//活动打卡地点详情 let that = this; const id = that.data.id; api.clockAddressDetail(id).then(function (res) { if (res.code == 0) { that.setData({ signin: res.data }) } }) }, /** * 生命周期函数--监听页面初次渲染完成 */ onReady: function () { }, /** * 生命周期函数--监听页面显示 */ onShow: function () { }, /** * 生命周期函数--监听页面隐藏 */ onHide: function () { }, /** * 生命周期函数--监听页面卸载 */ onUnload: function () { }, /** * 页面相关事件处理函数--监听用户下拉动作 */ onPullDownRefresh: function () { }, /** * 页面上拉触底事件的处理函数 */ onReachBottom: function () { }, /** * 用户点击右上角分享 */ onShareAppMessage: function () { } })