594 lines
14 KiB
JavaScript
594 lines
14 KiB
JavaScript
|
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
|
|||
|
// });
|
|||
|
},
|
|||
|
|
|||
|
|
|||
|
});
|