import * as echarts from '../../ec-canvas/echarts'; let symbolImg = '../../images/circle.png'; let App = getApp(); // 设置数据,可以增加更多的数据参数 function setOption(chart, scatterData, mapData, type) { const option = { layoutCenter: ['50%', '30%'], layoutSize: '100%', series: [{ type: 'map', map: type, aspectScale: 0.75, roam: 'scale', zoom: 0.4, scaleLimit: { min: 1, max: 2.5 }, itemStyle: { normal: { areaColor: 'rgba(216,216,215,0.5)', borderColor: '#fff', borderWidth: 1, }, emphasis: { areaColor: null, }, }, label: { show: true, fontSize: 8, color: '#333' }, emphasis: { label: { show: true, color: '#333' }, }, data: mapData, markPoint: { symbol: 'circle', symbolSize: 5, label: { show: true, fontSize: 6, color: '#333', position: 'right' }, data: scatterData } } ], }; chart.setOption(option); } Page({ data: { ec: { lazyLoad: true, }, showAddMeBtn: !0, scrollTop: 0, showModal: false, step: 0, shouquan: 0, follow: 0, yunti: !0, sign: !0, indexData: { 'dhnum': 0 }, scatterData: [], mapData: [], activity: [], show: 0, today: "", canvasShow: 0, map:{} }, /** * 生命周期函数--监听页面初次渲染完成 */ onReady: function () { // 获取组件 this.ecComponent = this.selectComponent('#mychart-dom-area'); }, getMap(){ var that=this; wx.request({ url: `https://minipro.luochunlvshi.com/map/${this.data.type}.js`, success: function (res) { console.log(res); that.initChart(res.data); } }); }, // 初始化图表 initChart(mapItem) { this.ecComponent.init((canvas, width, height, dpr) => { // 获取组件的 canvas、width、height 后的回调函数 // 在这里初始化图表 const chart = echarts.init(canvas, null, { width: width, height: height, devicePixelRatio: dpr, // new }); console.log(this.data.mapData); console.log(this.data.type); // 注册中国地图数据包 echarts.registerMap(this.data.type, mapItem); // 设置数据 setOption(chart, this.data.scatterData, this.data.mapData, this.data.type); // 将图表实例绑定到 this 上,可以在其他成员函数(如 dispose)中访问 this.chart = chart; // 绑定点击事件 let that = this; chart.on('click', function (params) { that.handleChartClick(params); }); // 注意这里一定要返回 chart 实例,否则会影响事件处理等 return chart; }); }, handleChartClick(params) { // 可以通过参数去数据列表中获取完整数据 params.dataIndex console.log('chart click params:', { name: params.name, data: params.data, dataIndex: params.dataIndex, seriesIndex: params.seriesIndex, value: params.value }); }, onLoad: function () { // 设置页面标题 App.setTitle(); // 设置navbar标题、颜色 App.setNavigationBar(); let user_id = wx.getStorageSync('user_id'); if (user_id) { this.Updatestep(); this.getData(); } }, onShow: function () { this.setData({ showAddMeBtn: !0 }) let user_id = wx.getStorageSync('user_id'); if (!user_id) { this.setData({ showModal: true }) } }, goTop: function (t) { this.setData({ scrollTop: 0 }); }, /** * 获取首页数据 */ getIndexData: function () { let _this = this; App._get('index/page', { user_id: wx.getStorageSync('user_id') }, function (result) { _this.setData(result.data); }); }, onClickAddToMinProgramCloseBtn: function () { wx.setStorageSync("showAddMeFlag" + this.data.time, !0), this.setData({ showAddMeBtn: !1 }); }, onShareAppMessage: function () { return { title: "科大工会健步走小程序", desc: "", path: "/pages/index/index" }; }, goDuiHuan: async function (e) { let _this = this; let step = this.data.step; let time = parseInt(new Date().getTime() / 1000); console.log('step', this.data.step); if (this.data.step == 0) { var a = await this.getyundong(); console.log('运动授权结果:', a); if (a === 1) { // 授权成功后,立即更新步数 this.Updatestep(); } return; } if (time < _this.data.activity.starttime) { wx.showToast({ title: '活动未开始', icon: 'none', duration: 2000 }) return false; } if (time > _this.data.activity.endtime) { wx.showToast({ title: '活动已结束', icon: 'none', duration: 2000 }) return false; } var user_id = wx.getStorageSync('user_id'); App._post_form('footchina/goDuiHuan', { user_id: user_id, step: step }, function (result) { var rdata = result.data.data; console.log('goDuiHuan', rdata); if (result.data.code == -1) { wx.showToast({ title: '用户信息失效...', icon: 'none', duration: 2000 }) _this.setData({ showModal: true }) return; } if (rdata.status) { // let _this = this; _this.setData({ show: 1, today: new Date().toISOString().slice(0, 10) }) console.log('today', _this.data.today); // wx.showToast({ // title: '点亮成功', // icon: 'none', // duration: 2000 // }) _this.getData(); } }); }, getData: function (e) { let _this = this; App._post_form('footchina/getData', { user_id: wx.getStorageSync('user_id'), }, (result) => { var rdata = result.data.data; console.log(rdata); _this.setData({ indexData: rdata, scatterData: rdata.citySub, mapData: rdata.provinceAreaColor, type: rdata.type, activity: rdata.activity, }); console.log(rdata.provinceAreaColor); console.log(_this.data.mapData); _this.getMap(); }); }, goDuiHuanDis: function () { let time = parseInt(new Date().getTime() / 1000); if (time < this.data.activity.starttime) { wx.showToast({ title: '活动未开始', icon: 'none', duration: 2000 }) return false; } if (this.data.step < this.data.indexData.step) { wx.showToast({ title: '步数未达标,暂不能点亮城市', icon: 'none', duration: 2000 }) return false; } if (time > this.data.activity.endtime) { wx.showToast({ title: '活动已结束', icon: 'none', duration: 2000 }) return false; } if (this.data.indexData.dhnum == 1) { // let _this = this; // _this.setData({ // show:1 // }) wx.showToast({ title: '今日已点亮', icon: 'none', duration: 2000 }) return false; } }, guanzhu: function () { this.data.follow; this.setData({ follow: 1 }); }, xiao: function () { let _this = this; wx.showModal({ title: '提示', content: '确定要保存这张图片吗?', success: function (res) { if (res.confirm) { console.log('用户点击确定') wx.getImageInfo({ src: _this.data.imageSet.index_gz_gzh, success: function (res) { console.log(res); var path = res.path; wx.saveImageToPhotosAlbum({ filePath: path, success: function (res) { console.log('图片已保存'); _this.data.follow; _this.setData({ follow: 0 }); }, fail: function (res) { console.log('保存失败'); _this.data.follow; _this.setData({ follow: 0 }); } }) } }); } else if (res.cancel) { console.log('用户点击取消'); _this.data.follow; _this.setData({ follow: 0 }); } } }) }, bindIdCard: function (e) { this.setData({ idcard: e.detail.value }) }, checkIdCard: function () { let _this = this; let idCard = _this.data.idcard; if (idCard == undefined) { wx.showModal({ title: "提示", content: "身份证号不能为空", success: function (a) { } }); return false; } App.getUserInfoByIdCard(idCard, (user_id) => { _this.getUserProfile(user_id); _this.setData({ showModal: false }) }); }, //取消登录 loginClose: function () { let _this = this; _this.setData({ showModal: false }); }, /** * 获取用户微信信息 */ getUserProfile(user_id) { if (!user_id) { let user_id = wx.getStorageSync('user_id'); } console.log('user_id', user_id); const app = this try { wx.getUserProfile({ lang: 'zh_CN', desc: '获取用户相关信息', success({ userInfo }) { console.log('用户同意了授权') console.log('userInfo:', userInfo) App.getUserInfo(userInfo, user_id, () => { app.Updatestep(); }); }, fail() { console.log('用户拒绝了授权--微信授权') } }) } catch (e) { console.log('error:', e.message) if (e.message === 'wx.getUserProfile is not a function') { App.showError('wx.getUserProfile 接口无法使用,请升级到最新版微信') } else { App.showError(error.message) } } }, getyundong() { return new Promise((resolve, reject) => { // 可以通过 wx.getSetting 先查询一下用户是否授权了 "scope.werun" 这个 scope wx.getSetting({ success(res) { if (!res.authSetting['scope.werun']) { wx.openSetting({ success: (authResult) => { if (authResult.authSetting['scope.werun']) { resolve(1); } else { resolve(0); } }, fail: (err) => { console.error('打开设置页失败', err); reject(err); } }); } else { resolve(1); } }, fail: (err) => { console.error('wx.getSetting失败', err); reject(err); } }) }); }, // 读取用户的微信运动数据 Updatestep: function (t) { var e = this; wx.login({ success: function (t) { var a = t.code; e.setData({ code: a }), wx.getWeRunData({ success: function (t) { var a = t.encryptedData, o = t.iv; App._post_form('user/getStep', { wRunEncryptedData: a, iv: o, code: e.data.code, user_id: wx.getStorageSync('user_id') }, result => { e.getIndexData(); //wx.setStorageSync('step', result.data.data); e.setData({ step: result.data.data }) e.getData(); }); }, fail() { console.log('用户拒绝了授权--微信运动') } }); } }); }, guanbil: function () { var a = this.data.yunti; this.setData({ yunti: !a }); }, goInfo: function () { wx.navigateTo({ url: "/pages/rank/address" }); }, goRili: function () {}, goRili: function () { wx.navigateTo({ url: '/packageB/user/sign' }) }, /** * 拒绝授权 */ onNotLogin() { let _this = this; // 跳转回原页面 _this.onNavigateBack(); }, /** * 授权成功 跳转回原页面 */ onNavigateBack() { wx.navigateBack(); }, overdue: function () { var t = this; wx.getSetting({ success: function (a) { if (a.authSetting["scope.userInfo"]) wx.checkSession({ success: function (a) { }, fail: function (a) { t.data.shouquan; t.setData({ shouquan: 1 }); } }); else { t.data.shouquan; t.setData({ shouquan: 1 }); } } }); }, onPullDownRefresh: function () { let user_id = wx.getStorageSync('user_id'); if (user_id) { this.Updatestep(); } wx.stopPullDownRefresh() }, /** 点亮成功 */ goSuccess() { console.log('进来了', 111); let _this = this; _this.setData({ show: 1, today: new Date().toISOString().slice(0, 10) }) }, //关闭签到弹窗 guanbilsig: function () { let _this = this; _this.setData({ show: 0 }) // wx.navigateTo({ // url: "/pages/rank/address" // }); // var a = this.data.sign; // this.setData({ // sign: !a // }); }, });