202 lines
4.6 KiB
Vue
202 lines
4.6 KiB
Vue
<template>
|
|
<view class="app">
|
|
<view class="item" v-for="item in list" :key="item.date" @tap="tapstep(item)">
|
|
<view class="left">
|
|
<image v-if="item.step>=5000" mode="" :src="require('@/pagesC/images/greensport.png')"></image>
|
|
<image mode="" v-else :src="require('@/pagesC/images/sport.png')"></image>
|
|
<view class="time" :style="item.step>=5000?'color:#29AF2A':''">
|
|
{{item.date}}
|
|
</view>
|
|
</view>
|
|
<view class="right">
|
|
<view class="number" :style="item.step>=5000?'color:#29AF2A':''">
|
|
{{item.step}}
|
|
</view>
|
|
<view class="text" :style="item.step>=5000?'color:#29AF2A':''">
|
|
步数
|
|
</view>
|
|
</view>
|
|
</view>
|
|
<u-toast ref="uToast" />
|
|
</view>
|
|
</template>
|
|
|
|
<script>
|
|
import {
|
|
wxSportDecrypt,
|
|
wxsportadd,
|
|
wxsportaddV1
|
|
} from '@/api/pages/homepage/homepage.js'
|
|
export default {
|
|
data() {
|
|
return {
|
|
list: undefined,
|
|
userinfo: undefined,
|
|
sportlist: [],
|
|
};
|
|
},
|
|
onShow() {
|
|
this.userinfo = uni.getStorageSync('userinfo')
|
|
this.getStepInfo();
|
|
},
|
|
methods: {
|
|
tapstep(item) {
|
|
if (item.step >= 5000) {
|
|
wxsportaddV1(uni.getStorageSync('userinfo').cardNo, item.date, item.step).then(res => {
|
|
if (res.code == 200) {
|
|
this.$refs.uToast.show({
|
|
title: '新增积分成功',
|
|
duration: '1500',
|
|
type: 'success',
|
|
})
|
|
} else {
|
|
this.$refs.uToast.show({
|
|
title: res.msg,
|
|
duration: '1500',
|
|
type: 'error',
|
|
})
|
|
}
|
|
})
|
|
}
|
|
},
|
|
wxSport(res, resp) {
|
|
let currentDate = new Date();
|
|
let year = currentDate.getFullYear();
|
|
let month = currentDate.getMonth() + 1;
|
|
let day = currentDate.getDate();
|
|
month >= 1 && month <= 9 ? (month = "0" + month) : "";
|
|
day >= 0 && day <= 9 ? (day = "0" + day) : "";
|
|
let time = `${year}-${month}-${day}`
|
|
let identtime = `${this.userinfo.cardNo}${year}-${month}-${day}`
|
|
if (uni.getStorageSync('sportlist')) {
|
|
if (uni.getStorageSync('sportlist')[0].date != time) {
|
|
uni.removeStorageSync('sportlist');
|
|
} else {
|
|
this.sportlist = uni.getStorageSync('sportlist');
|
|
}
|
|
}
|
|
let obj = {
|
|
code: res.code,
|
|
encryptedData: resp.encryptedData,
|
|
iv: resp.iv
|
|
}
|
|
wxSportDecrypt(obj).then(Sportres => {
|
|
this.list = Sportres.data
|
|
if (!this.sportlist.some(e => e.text == identtime)) {
|
|
if (Sportres.data && Sportres.data[0].step >= 5000) {
|
|
wxsportadd(this.userinfo.cardNo, Sportres.data[0].step).then(sportaddres => {
|
|
if (sportaddres.code == 200) {
|
|
let sportitem = {
|
|
text: `${this.userinfo.cardNo}${Sportres.data[0].date}`,
|
|
date: Sportres.data[0].date
|
|
}
|
|
this.sportlist.unshift(sportitem)
|
|
uni.setStorageSync('sportlist', this.sportlist);
|
|
}
|
|
})
|
|
}
|
|
}
|
|
})
|
|
},
|
|
getStepInfo() {
|
|
let that = this
|
|
wx.getSetting({
|
|
success: function(res) {
|
|
// 未开启微信运动授权
|
|
if (!res.authSetting['scope.werun']) {
|
|
wx.showModal({
|
|
title: '提示',
|
|
content: '获取微信运动步数,需要开启计步权限',
|
|
success: function(resp) {
|
|
if (resp.confirm) {
|
|
//跳转去设置
|
|
wx.openSetting({
|
|
success: function(respp) {}
|
|
})
|
|
}
|
|
}
|
|
})
|
|
} else {
|
|
wx.login({
|
|
success: function(loginres) {
|
|
if (loginres.code) {
|
|
wx.getWeRunData({
|
|
success: function(WeRunDatares) {
|
|
that.wxSport(loginres,
|
|
WeRunDatares)
|
|
}
|
|
});
|
|
}
|
|
},
|
|
fail: function(err) {
|
|
wx.showModal({
|
|
title: '提示',
|
|
content: '未开通微信运动,请关注“微信运动”公众号后重试',
|
|
showCancel: false,
|
|
confirmText: '知道了'
|
|
})
|
|
}
|
|
});
|
|
}
|
|
}
|
|
})
|
|
},
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style lang="scss">
|
|
.app {
|
|
width: 100%;
|
|
padding-bottom: 50rpx;
|
|
|
|
.item {
|
|
width: 96%;
|
|
margin: 20rpx auto;
|
|
height: 200rpx;
|
|
background-color: #fff;
|
|
display: flex;
|
|
align-items: center;
|
|
border-radius: 10rpx;
|
|
|
|
.right {
|
|
width: 44%;
|
|
height: 160rpx;
|
|
margin: 20rpx 0;
|
|
font-weight: bold;
|
|
color: #333333;
|
|
text-align: center;
|
|
|
|
.text {
|
|
line-height: 60rpx;
|
|
}
|
|
|
|
.number {
|
|
line-height: 100rpx;
|
|
font-size: 56rpx;
|
|
}
|
|
}
|
|
|
|
.left {
|
|
width: 54%;
|
|
display: flex;
|
|
align-items: center;
|
|
height: 160rpx;
|
|
margin: 20rpx 0;
|
|
border-right: 2rpx solid #DBDBDB;
|
|
|
|
image {
|
|
width: 90rpx;
|
|
height: 90rpx;
|
|
margin-left: 30rpx;
|
|
}
|
|
|
|
.time {
|
|
font-size: 32rpx;
|
|
color: #999999;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
</style>
|