Commit 9fae74ed by tangjiale

更新代码

parent 01070a2a
......@@ -36,6 +36,14 @@
]
},
{
"root": "subPages/bluetooth",
"name": "bluetooth",
"pages": [
"skip/skip",
"share/share"
]
},
{
"root": "subPages/login",
"name": "login",
"pages": [
......
......@@ -410,7 +410,7 @@ page{
.ywqz-help{
position: absolute;
top: 50%;
left: 20px;
left: 40px;
transform: translateY(-50%);
width: 192px;
height: 140px;
......
......@@ -5,7 +5,7 @@
"include": []
},
"setting": {
"urlCheck": false,
"urlCheck": true,
"es6": false,
"enhance": true,
"postcss": true,
......
......@@ -53,6 +53,27 @@
"query": "type=1",
"launchMode": "default",
"scene": null
},
{
"name": "",
"pathName": "subPages/bluetooth/skip/skip",
"query": "",
"launchMode": "default",
"scene": null
},
{
"name": "蓝牙跳绳",
"pathName": "subPages/bluetooth/skip/skip",
"query": "mode=2",
"launchMode": "default",
"scene": null
},
{
"name": "",
"pathName": "subPages/bluetooth/share/share",
"query": "share=0&id=10774740&showMedal=1&sportTime=40",
"scene": null,
"launchMode": "default"
}
]
}
......
import WxCanvas from './wx-canvas';
import * as echarts from './echarts';
let ctx;
function compareVersion(v1, v2) {
v1 = v1.split('.')
v2 = v2.split('.')
const len = Math.max(v1.length, v2.length)
while (v1.length < len) {
v1.push('0')
}
while (v2.length < len) {
v2.push('0')
}
for (let i = 0; i < len; i++) {
const num1 = parseInt(v1[i])
const num2 = parseInt(v2[i])
if (num1 > num2) {
return 1
} else if (num1 < num2) {
return -1
}
}
return 0
}
Component({
properties: {
canvasId: {
type: String,
value: 'ec-canvas'
},
ec: {
type: Object
},
forceUseOldCanvas: {
type: Boolean,
value: false
}
},
data: {
isUseNewCanvas: false
},
ready: function () {
// Disable prograssive because drawImage doesn't support DOM as parameter
// See https://developers.weixin.qq.com/miniprogram/dev/api/canvas/CanvasContext.drawImage.html
echarts.registerPreprocessor(option => {
if (option && option.series) {
if (option.series.length > 0) {
option.series.forEach(series => {
series.progressive = 0;
});
}
else if (typeof option.series === 'object') {
option.series.progressive = 0;
}
}
});
if (!this.data.ec) {
console.warn('组件需绑定 ec 变量,例:<ec-canvas id="mychart-dom-bar" '
+ 'canvas-id="mychart-bar" ec="{{ ec }}"></ec-canvas>');
return;
}
if (!this.data.ec.lazyLoad) {
this.init();
}
},
methods: {
init: function (callback) {
const version = wx.getSystemInfoSync().SDKVersion
const canUseNewCanvas = compareVersion(version, '2.9.0') >= 0;
const forceUseOldCanvas = this.data.forceUseOldCanvas;
const isUseNewCanvas = canUseNewCanvas && !forceUseOldCanvas;
this.setData({ isUseNewCanvas });
if (forceUseOldCanvas && canUseNewCanvas) {
console.warn('开发者强制使用旧canvas,建议关闭');
}
if (isUseNewCanvas) {
// console.log('微信基础库版本大于2.9.0,开始使用<canvas type="2d"/>');
// 2.9.0 可以使用 <canvas type="2d"></canvas>
this.initByNewWay(callback);
} else {
const isValid = compareVersion(version, '1.9.91') >= 0
if (!isValid) {
console.error('微信基础库版本过低,需大于等于 1.9.91。'
+ '参见:https://github.com/ecomfe/echarts-for-weixin'
+ '#%E5%BE%AE%E4%BF%A1%E7%89%88%E6%9C%AC%E8%A6%81%E6%B1%82');
return;
} else {
console.warn('建议将微信基础库调整大于等于2.9.0版本。升级后绘图将有更好性能');
this.initByOldWay(callback);
}
}
},
initByOldWay(callback) {
// 1.9.91 <= version < 2.9.0:原来的方式初始化
ctx = wx.createCanvasContext(this.data.canvasId, this);
const canvas = new WxCanvas(ctx, this.data.canvasId, false);
echarts.setCanvasCreator(() => {
return canvas;
});
// const canvasDpr = wx.getSystemInfoSync().pixelRatio // 微信旧的canvas不能传入dpr
const canvasDpr = 1
var query = wx.createSelectorQuery().in(this);
query.select('.ec-canvas').boundingClientRect(res => {
if (typeof callback === 'function') {
this.chart = callback(canvas, res.width, res.height, canvasDpr);
}
else if (this.data.ec && typeof this.data.ec.onInit === 'function') {
this.chart = this.data.ec.onInit(canvas, res.width, res.height, canvasDpr);
}
else {
this.triggerEvent('init', {
canvas: canvas,
width: res.width,
height: res.height,
canvasDpr: canvasDpr // 增加了dpr,可方便外面echarts.init
});
}
}).exec();
},
initByNewWay(callback) {
// version >= 2.9.0:使用新的方式初始化
const query = wx.createSelectorQuery().in(this)
query
.select('.ec-canvas')
.fields({ node: true, size: true })
.exec(res => {
const canvasNode = res[0].node
this.canvasNode = canvasNode
const canvasDpr = wx.getSystemInfoSync().pixelRatio
const canvasWidth = res[0].width
const canvasHeight = res[0].height
const ctx = canvasNode.getContext('2d')
const canvas = new WxCanvas(ctx, this.data.canvasId, true, canvasNode)
echarts.setCanvasCreator(() => {
return canvas
})
if (typeof callback === 'function') {
this.chart = callback(canvas, canvasWidth, canvasHeight, canvasDpr)
} else if (this.data.ec && typeof this.data.ec.onInit === 'function') {
this.chart = this.data.ec.onInit(canvas, canvasWidth, canvasHeight, canvasDpr)
} else {
this.triggerEvent('init', {
canvas: canvas,
width: canvasWidth,
height: canvasHeight,
dpr: canvasDpr
})
}
})
},
canvasToTempFilePath(opt) {
if (this.data.isUseNewCanvas) {
// 新版
const query = wx.createSelectorQuery().in(this)
query
.select('.ec-canvas')
.fields({ node: true, size: true })
.exec(res => {
const canvasNode = res[0].node
opt.canvas = canvasNode
wx.canvasToTempFilePath(opt)
})
} else {
// 旧的
if (!opt.canvasId) {
opt.canvasId = this.data.canvasId;
}
ctx.draw(true, () => {
wx.canvasToTempFilePath(opt, this);
});
}
},
touchStart(e) {
if (this.chart && e.touches.length > 0) {
var touch = e.touches[0];
var handler = this.chart.getZr().handler;
handler.dispatch('mousedown', {
zrX: touch.x,
zrY: touch.y
});
handler.dispatch('mousemove', {
zrX: touch.x,
zrY: touch.y
});
handler.processGesture(wrapTouch(e), 'start');
}
},
touchMove(e) {
if (this.chart && e.touches.length > 0) {
var touch = e.touches[0];
var handler = this.chart.getZr().handler;
handler.dispatch('mousemove', {
zrX: touch.x,
zrY: touch.y
});
handler.processGesture(wrapTouch(e), 'change');
}
},
touchEnd(e) {
if (this.chart) {
const touch = e.changedTouches ? e.changedTouches[0] : {};
var handler = this.chart.getZr().handler;
handler.dispatch('mouseup', {
zrX: touch.x,
zrY: touch.y
});
handler.dispatch('click', {
zrX: touch.x,
zrY: touch.y
});
handler.processGesture(wrapTouch(e), 'end');
}
}
}
});
function wrapTouch(event) {
for (let i = 0; i < event.touches.length; ++i) {
const touch = event.touches[i];
touch.offsetX = touch.x;
touch.offsetY = touch.y;
}
return event;
}
{
"component": true,
"usingComponents": {}
}
\ No newline at end of file
<!-- 新的:接口对其了H5 -->
<canvas wx:if="{{isUseNewCanvas}}" type="2d" class="ec-canvas" canvas-id="{{ canvasId }}" bindinit="init" bindtouchstart="{{ ec.disableTouch ? '' : 'touchStart' }}" bindtouchmove="{{ ec.disableTouch ? '' : 'touchMove' }}" bindtouchend="{{ ec.disableTouch ? '' : 'touchEnd' }}"></canvas>
<!-- 旧的 -->
<canvas wx:else class="ec-canvas" canvas-id="{{ canvasId }}" bindinit="init" bindtouchstart="{{ ec.disableTouch ? '' : 'touchStart' }}" bindtouchmove="{{ ec.disableTouch ? '' : 'touchMove' }}" bindtouchend="{{ ec.disableTouch ? '' : 'touchEnd' }}"></canvas>
.ec-canvas {
width: 100%;
height: 100%;
}
This source diff could not be displayed because it is too large. You can view the blob instead.
export default class WxCanvas {
constructor(ctx, canvasId, isNew, canvasNode) {
this.ctx = ctx;
this.canvasId = canvasId;
this.chart = null;
this.isNew = isNew
if (isNew) {
this.canvasNode = canvasNode;
}
else {
this._initStyle(ctx);
}
// this._initCanvas(zrender, ctx);
this._initEvent();
}
getContext(contextType) {
if (contextType === '2d') {
return this.ctx;
}
}
// canvasToTempFilePath(opt) {
// if (!opt.canvasId) {
// opt.canvasId = this.canvasId;
// }
// return wx.canvasToTempFilePath(opt, this);
// }
setChart(chart) {
this.chart = chart;
}
attachEvent() {
// noop
}
detachEvent() {
// noop
}
_initCanvas(zrender, ctx) {
zrender.util.getContext = function () {
return ctx;
};
zrender.util.$override('measureText', function (text, font) {
ctx.font = font || '12px sans-serif';
return ctx.measureText(text);
});
}
_initStyle(ctx) {
var styles = ['fillStyle', 'strokeStyle', 'globalAlpha',
'textAlign', 'textBaseAlign', 'shadow', 'lineWidth',
'lineCap', 'lineJoin', 'lineDash', 'miterLimit', 'fontSize'];
styles.forEach(style => {
Object.defineProperty(ctx, style, {
set: value => {
if (style !== 'fillStyle' && style !== 'strokeStyle'
|| value !== 'none' && value !== null
) {
ctx['set' + style.charAt(0).toUpperCase() + style.slice(1)](value);
}
}
});
});
ctx.createRadialGradient = () => {
return ctx.createCircularGradient(arguments);
};
}
_initEvent() {
this.event = {};
const eventNames = [{
wxName: 'touchStart',
ecName: 'mousedown'
}, {
wxName: 'touchMove',
ecName: 'mousemove'
}, {
wxName: 'touchEnd',
ecName: 'mouseup'
}, {
wxName: 'touchEnd',
ecName: 'click'
}];
eventNames.forEach(name => {
this.event[name.wxName] = e => {
const touch = e.touches[0];
this.chart.getZr().handler.dispatch(name.ecName, {
zrX: name.wxName === 'tap' ? touch.clientX : touch.x,
zrY: name.wxName === 'tap' ? touch.clientY : touch.y
});
};
});
}
set width(w) {
if (this.canvasNode) this.canvasNode.width = w
}
set height(h) {
if (this.canvasNode) this.canvasNode.height = h
}
get width() {
if (this.canvasNode)
return this.canvasNode.width
return 0
}
get height() {
if (this.canvasNode)
return this.canvasNode.height
return 0
}
}
{
"navigationBarBackgroundColor": "#0099B0",
"navigationBarTitleText": "跳绳",
"navigationBarTextStyle": "white",
"usingComponents": {
"ec-canvas":"../ec-canvas/ec-canvas"
}
}
\ No newline at end of file
/**index.wxss**/
page{
background: #F8F8F8;
padding-bottom: 200rpx;
}
.share-top{
width:100%;
height:668rpx;
position: relative;
}
.share-top .bg{
width: 750rpx;
height: 670rpx;
position: absolute;
top: 40rpx;
left: 0;
}
.score{
position: absolute;
top: 310rpx;
right:120rpx;
color: #FFFFFF;
overflow: hidden;
}
.number{
font-size: 58rpx;
color: #FFFFFF;
font-weight: bold;
float: left;
}
.fen{
font-size: 24rpx;
font-weight: bold;
color: #FFFFFF;
float: right;
margin-left: 15rpx;
margin-top: 25rpx;
}
.share-user{
overflow: hidden;
width: 94%;
margin: 0 auto;
padding-top: 40rpx;
display: flex;
}
.user-info{
flex: 1;
}
.user-info image{
width: 60rpx;
height: 60rpx;
border-radius: 50%;
float: left;
background: #FFFFFF;
}
.jg-name{
float: left;
}
.name{
/* float: left; */
margin-left: 10rpx;
font-size: 34rpx;
color: #FFFFFF;
margin-top: 0rpx;
}
.stand{
flex: 1;
}
.stand image{
width: 24rpx;
height: 24rpx;
float: right;
text-align: right;
margin-right: 10rpx;
margin-top: 18rpx;
}
.text{
float: right;
color: #FFFFFF;
opacity: 0.6;
font-size: 24rpx;
margin-top: 14rpx;
}
.content{
width: 94%;
margin: 0 auto;
margin-left: 30rpx;
margin-top: 110rpx;
color: #FFFFFF;
}
.title{
font-size: 38rpx;
margin-top: 14rpx;
font-weight: bold;
padding-left: 20rpx;
}
.beyond{
font-size: 22rpx;
opacity: 0.6;
margin-top: 14rpx;
padding-left: 20rpx;
}
.movement-info{
position: relative;
background: #FFFFFF;
width: 94%;
margin:0 auto;
height: 496rpx;
margin-top: -228rpx;
border-radius:24rpx;
}
.movement-number{
width: 100%;
height: 50%;
text-align: center;
overflow: hidden;
}
.movement-numbers{
font-family: "Number";
color: #353535;
font-size: 120rpx;
line-height: 140rpx;
margin-top: 50rpx;
}
.movement-time{
color: #888888;
font-size: 24rpx;
}
.detailed{
width: 100%;
height: 50%;
display: flex;
}
.detailed-layel{
flex: 1;
text-align: center;
padding-top: 50rpx;
}
.detailed-layel image{
width: 40rpx;
height: 40rpx;
}
.layel-content{
font-family: "Number";
color: #353535;
font-size: 48rpx;
}
.layel-text{
color: #888888;
font-size: 22rpx;
}
.graph{
width: 94%;
margin:0 auto;
margin-top: 40rpx;
}
.graph-title{
color: #B2B2B2;
font-size: 28rpx;
margin-bottom: 20rpx;
}
.graph-layel{
width: 100%;
height: 380rpx;
background: #FFFFFF;
border-radius:24rpx;
}
.graph-layel-title{
width: 94%;
height: 76rpx;
margin:0 auto;
display: flex;
}
.top{
line-height: 76rpx;
flex: 1;
}
.top image{
width: 36rpx;
height: 36rpx;
float: left;
margin-top: 20rpx;
}
.layel-title-content{
color: #353535;
font-size: 22rpx;
float: left;
margin-left: 10rpx;
}
.briken-line{
position: relative;
width: 94%;
height: 246rpx;
margin:0 auto;
background: #F8F8F8;
border-radius:24rpx;
}
.briken-line .line{
position: absolute;
top: 50%;
height: 2rpx;
width: 100%;
background: #dcdcdc;
}
ec-canvas {
width: 100%;
height: 246rpx;
}
.tips{
margin-top: 20rpx;
}
.tips image{
width: 24rpx;
height: 24rpx;
float: left;
margin-top: 4rpx;
margin-left: 10rpx;
margin-right: 6rpx;
}
.tips-content{
color: #B2B2B2;
font-size: 22rpx;
float: left;
}
.footer{
position: fixed;
bottom: 0rpx;
left: 0;
z-index: 90;
width: 100%;
height: 138rpx;
background: #FFFFFF;
overflow: hidden;
}
.btn{
width: 94%;
margin:0 auto;
background: #FF9B4D;
height: 96rpx;
margin-top: 22rpx;
border-radius:48rpx;
text-align: center;
line-height: 96rpx;
color: #FFFFFF;
}
.pass-score{
position: absolute;
top: 170rpx;
right: 60rpx;
color: #FFFFFF;
overflow: hidden;
}
.pass-number{
font-size: 160rpx;
color: #FFFFFF;
font-weight: bold;
float: left;
}
.pass-fen{
font-size: 24rpx;
font-weight: bold;
color: #FFFFFF;
float: right;
margin-left: 15rpx;
margin-top: 50rpx;
}
.share{
position: absolute;
overflow: hidden;
top:20%;
left:50%;
border-radius: 5px;
transform:translate(-50%,-50%);
}
.share-ce{
float: left;
}
.share image{
width: 80rpx;
height: 80rpx;
border-radius: 50%;
}
.photo{
width: 80rpx;
height: 80rpx;
background: #FFFFFF;
border-radius: 50%;
}
.share-name{
color: #FFFFFF;
font-size: 34rpx;
margin-left: 10rpx;
}
.share-time{
color: #FFFFFF;
font-size: 24rpx;
margin-left: 10rpx;
margin-top: 4rpx;
opacity: 0.6;
}
.share-content{
width: 100%;
font-size: 36rpx;
color: #FFFFFF;
font-weight: bold;
text-align: center;
position: absolute;
top:35%;
}
.share-text{
width: 100%;
font-size: 22rpx;
color: #FFFFFF;
text-align: center;
position: absolute;
top:45%;
opacity: 0.6;
}
.unit{
font-size: 22rpx;
font-weight: 400;
}
.samll{
font-size: 26rpx;
}
.pt-tips{
color: #353535;
font-size: 24rpx;
width: 94%;
margin: 0 auto;
margin-top: 20rpx;
text-align: center;
}
.pt-tips .names{
font-weight: bold;
}
.pt-tips .go{
color: #2D97E8;
margin-left: 12rpx;
}
.pt-tips image{
width: 100%;
height: 116rpx;
border-radius: 24rpx;
}
.challenge-mask{
position: fixed;
width: 100%;
height: 100%;
top: 0rpx;
left: 0rpx;
background: #000000;
opacity: 0.7;
z-index: 100;
}
.my-medal{
position: absolute;
overflow: hidden;
width: 80%;
left: 10%;
top: 50%;
margin-top: -330rpx;
z-index: 101;
text-align: center;
background: #FFFFFF;
border-radius: 24rpx;
}
.my-medal .medal{
width: 256rpx;
height: 256rpx;
margin-top: 30rpx;
}
.medal-title{
font-size: 40rpx;
font-weight: bold;
color: #353535;
margin-top: 70rpx;
}
.medal-name{
font-size: 34rpx;
font-weight: bold;
color: #353535;
margin-top: 10rpx;
}
.medal-content{
font-size: 28rpx;
color: #888888;
margin-top: 8rpx;
}
.medal-number{
color: #353535;
font-size: 28rpx;
margin-top: 20rpx;
margin-bottom: 40rpx;
}
.medal-btn{
width: 80%;
height: 96rpx;
margin: 0 auto;
line-height: 96rpx;
border-radius: 50rpx;
color: #FFFFFF;
background: #FF9B4D;
margin-top: 60rpx;
}
.cy-btn{
width: 80%;
height: 96rpx;
margin: 0 auto;
line-height: 96rpx;
border-radius: 50rpx;
color: #FFFFFF;
background: #FF9B4D;
margin-top: 20rpx;
}
.medal-close{
position: absolute;
width: 68rpx;
height: 68rpx;
right: 20rpx;
top: 20rpx;
}
.fail{
position: absolute;
width: 80%;
left: 10%;
top: 50%;
margin-top: -250rpx;
height: 500rpx;
background: #FFFFFF;
border-radius: 24rpx;
z-index: 101;
text-align: center;
}
.fail .content{
margin-top: 76rpx;
}
.fail .fail-text{
font-weight: bold;
color: #353535;
}
.fail-again{
width: 80%;
height: 96rpx;
line-height: 96rpx;
margin: 0 auto;
color: #FFFFFF;
text-align: center;
background: #FF9B4D;
margin-top: 64rpx;
border-radius: 50rpx;
}
.fail-rest{
width: 80%;
height: 96rpx;
line-height: 96rpx;
margin: 0 auto;
color: #FF9B4D;
text-align: center;
background: #FFFFFF;
margin-top: 20rpx;
border-radius: 50rpx;
border: 2rpx solid #FF9B4D;
}
button::after{
border: none;
}
.cy{
padding-top: 40rpx;
}
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
{
"usingComponents": {},
"navigationBarBackgroundColor": "#FFFFFF",
"navigationBarTextStyle": "black",
"navigationBarTitleText": "跳绳"
}
\ No newline at end of file
<view class="{{num==='开始'?'go mix':'go '}}" wx:if="{{num && startFlag}}">{{num}}</view>
<view class="skip-2" wx:if="{{start}}">
<image class="skip-icon" src="https://cdn.xiaobentiyu.cn/sport_minapp_img/skip/ship-icon.png"></image>
<view class="mode">
<picker bindchange="bindPickerChange" value="{{index}}" range="{{modeList}}" disabled="{{isPicker}}">
<view class="mode-sel {{isPicker?'gray':''}}">
{{modeVal}}
<image src="https://cdn.xiaobentiyu.cn/sport_minapp_img/jt3.png" class="jt"></image>
</view>
</picker>
<view wx-if="{{isLevel}}" class="level">
<image src="/images/skip/level.png"></image>
<view class="level-show">
<view style="height:100%;" wx:if="{{levelWidth <= 20}}">
<view class="level-data level-red" style="width:{{levelWidth}}%"></view>
</view>
<view style="height:100%;" wx:else>
<view class="level-data" style="width:{{levelWidth}}%"></view>
</view>
</view>
</view>
<view wx:if="{{levelWidth <= 20}}">
<view wx-if="{{isLevel}}" class="level-num red">跳绳: {{levelWidth}}%</view>
</view>
<view wx:else>
<view wx-if="{{isLevel}}" class="level-num">跳绳: {{levelWidth}}%</view>
</view>
<view class="edit" bindtap="goEdit" wx:if="{{isSz}}">设置</view>
<view class="edit-no" wx:else>设置</view>
</view>
<!-- pk模式 -->
<view class="my" wx:if="{{pk == 1}}">
<view class="main">
<scroll-view class="tab" scroll-x="true">
<radio-group class='free-radios' bindchange="radioChange">
<label wx:for="{{familyList}}" wx:key="{{items}}">
<radio value="{{item.peopleId}}"
checked="{{item.checked}}" hidden='true'></radio>
<view class="{{familyList.length == 2 ? 'item2' : familyList.length == 3 ? 'item3' : 'item' }} {{item.checked ? 'action' : ''}}">
<image class="header" src="{{item.imgSrc}}"></image>
<view class="name">{{item.name}}</view>
<view class="prepare" wx:if="{{item.state == 1}}">
准备跳绳...
</view>
<view class="prepare" wx:elif="{{item.state == 2}}">
正在跳绳...
</view>
<view class="score" wx:else>{{item.sportValue || ''}}</view>
<view class="mon" wx:if="{{item.relationShip == 22}}">妈妈</view>
<view class="fat" wx:if="{{item.relationShip == 21}}">爸爸</view>
<view class="sun" wx:if="{{item.relationShip == 11}}">孩子</view>
<view class="icon" wx:if="{{item.checked}}">
<image class="sel" src="https://cdn.xiaobentiyu.cn/sport_minapp_img/parentChild/sel.png"></image>
</view>
</view>
</label>
</radio-group>
</scroll-view>
</view>
</view>
<!-- 挑战模式 -->
<view class="medal" wx:if="{{isMedalShow}}">
<view class="name">{{medalName}}</view>
<view class="content">{{medalContent}}</view>
</view>
<view class="card">
<view class="bfc"></view>
<view class="top">
<view class="val">{{info.count || 0}}</view>
</view>
<view class="data-wrap">
<view class="item">
<image src="/images/skip/icon_time.png"></image>
<view class="val">{{showTime || "00:00"}}</view>
<view class="key">用时</view>
</view>
<view class="item">
<image src="/images/skip/icon_calorie.png"></image>
<view class="val">{{ info.calorie || 0}}</view>
<view class="key">千卡</view>
</view>
</view>
</view>
</view>
<view class="bluetooth">
<image wx:if="{{is_connect}}" src="/images/skip/ly.png"></image>
<image wx:else src="/images/skip/ly_off.png"></image>
<view wx:if="{{is_connect}}">跳绳已连接</view>
<view wx:else>跳绳未连接</view>
</view>
<view class="btn" bindtap="clickBtn">
<image src="/images/skip/icon_lj.png" wx:if="{{btnStaus == '连接'}}"></image>
<image src="/images/skip/icon_ks.png" wx:if="{{btnStaus == '开始'}}"></image>
<image src="/images/skip/icon_bc.png" wx:if="{{btnStaus == '保存'}}"></image>
{{btnStaus}}
</view>
<!-- 搜索设备前 -->
<view class="search-before" wx:if="{{before}}">
<image class="before-title" src="https://cdn.xiaobentiyu.cn/sport_minapp_img/skip/skip-top.png"></image>
<view class="before-tips">请按以下步骤操作</view>
<view class="skip-type">
<view class="one">
<image src="https://cdn.xiaobentiyu.cn/sport_minapp_img/skip/one.png"></image>
</view>
<view class="two">
<image src="https://cdn.xiaobentiyu.cn/sport_minapp_img/skip/two.png"></image>
</view>
</view>
<view class="before-strip">
<view class="strip-num">1</view>
<view class="strip-content">
<view class="small-title">奔腾宝贝企鹅跳绳开机</view>
<view class="small-tips">一代:长按智能跳绳开关键5秒至指示灯闪烁</view>
<view class="small-tips">二代:长按智能跳绳开关键2秒,待屏幕亮起</view>
</view>
</view>
<view class="before-strip">
<view class="strip-num">2</view>
<view class="strip-content">
<view class="small-title">打开手机蓝牙</view>
<view class="small-tips">操作:在手机“设置-蓝牙”中打开蓝牙</view>
</view>
</view>
<view class="before-strip">
<view class="strip-num">3</view>
<view class="strip-content">
<view class="small-title">打开微信定位权限</view>
<view class="small-tips">{{tipsCount}}</view>
</view>
</view>
</view>
<!-- 搜索设备 -->
<view class="search" wx:if="{{search}}">
<view class="search-text">正在搜索跳绳...</view>
<image class="phone" src="https://ttxs01-10066525.file.myqcloud.com/sport/miniapp/mobile/skip/phone.png"></image>
<image class="search-gif" src="http://cdn.xiaobentiyu.cn/images/search.gif"></image>
<image class="rope-gif" src="https://ttxs01-10066525.file.myqcloud.com/sport/miniapp/mobile/skip/lamp.png"></image>
<image class="ind-gif" src="https://ttxs01-10066525.file.myqcloud.com/sport/miniapp/mobile/skip/ind.gif"></image>
</view>
<!-- 搜索设备失败 -->
<view class="search-fail" wx:if="{{fail}}">
<view class="fail-title">未找到设备?</view>
<view class="fail-tips">请按以下步骤操作</view>
<view class="fail-strip">
<view class="fail-strip-num">1</view>
<view class="fail-strip-content">
<view class="fail-small-title">奔腾宝贝企鹅跳绳开机</view>
<view class="fail-small-tips">操作:长按智能跳绳开关键5秒至指示灯闪烁</view>
</view>
</view>
<view class="fail-strip">
<view class="fail-strip-num">2</view>
<view class="fail-strip-content">
<view class="fail-small-title">确认手机蓝牙已开启</view>
<view class="fail-small-tips">操作:在手机“设置-蓝牙”中打开蓝牙</view>
</view>
</view>
<view class="fail-strip">
<view class="fail-strip-num">3</view>
<view class="fail-strip-content">
<view class="fail-small-title">确认微信定位权限已开启</view>
<view class="fail-small-tips">{{tipsCount}}</view>
</view>
</view>
<view catchtap="again" class="again">重新搜索</view>
</view>
<!-- 设备列表 -->
<view class="devices-list-info" hidden="{{actionSheetHidden}}">
<view class="title">连接跳绳</view>
<view class="content">搜索到奔腾宝贝跳绳</view>
<view class="devices-list">
<view class="item" hover-class="active" wx:for="{{devices}}" bindtap="connect" data-device="{{item}}">
奔腾宝贝-{{item.name}}
</view>
</view>
</view>
<!-- 离线数据 -->
<view class="sq" wx:if="{{isupload && offTotalNum > 0}}">
<view class="mask"></view>
<view class="content">
<view class="sq-tips">提示</view>
<view class="text">您的奔腾宝贝智能跳绳中有未上传的训练数据:</view>
<view class="text2">跳绳时间:{{offTotalTime || 0}}秒,跳绳数量{{offTotalNum || 0}}个</view>
<view class="text">现在同步吗?</view>
<view class="sq-btn">
<view class="nextTime" bindtap="cancel">取消</view>
<view class="ensure" bindtap="upload">上传</view>
</view>
</view>
</view>
<!-- 缓存数据 -->
<view class="sq" wx:if="{{iscache && skipInfo.count > 0}}">
<view class="mask"></view>
<view class="content">
<view class="sq-tips">提示</view>
<view class="text">您的奔腾宝贝智能跳绳中有未上传的训练数据:</view>
<view class="text2">跳绳时间:{{skipTime || 0}}秒,跳绳数量{{skipInfo.count || 0}}个</view>
<view class="text">现在上传吗?</view>
<view class="sq-btn">
<view class="nextTime" bindtap="cachecancel">取消</view>
<view class="ensure" bindtap="cacheupload">上传</view>
</view>
</view>
</view>
<!-- pk模式下断绳 -->
<view class="sq" wx:if="{{isPk}}">
<view class="mask"></view>
<view class="content">
<view class="sq-tips">提示</view>
<view class="text">抱歉,由于蓝牙连接异常,智能跳绳无法正常连接!</view>
<view class="sq-btn">
<view class="nextTime" bindtap="abandonPk">保存数据,放弃pk</view>
<view class="ensure" bindtap="againPk">再次连接,继续pk</view>
</view>
</view>
</view>
<audio src="{{src}}" id="myAudio" ></audio>
......@@ -230,7 +230,7 @@ Page({
start(){
var that = this;
var downTime = this.data.downTime;
that.palyLocal('/packageC/images/skip.mp3');
that.palyLocal('/images/ai/push.mp3');
that.data.prepare = setTimeout(()=>{
that.setData({
aiState:2
......
......@@ -3,7 +3,7 @@
</camera>
<view wx:if="{{aiState == 1 || aiState == 6}}">
<image class="ywqz-help-img" src="{{showImageUrl}}"></image>
<view class="ywqz-help">
<view class="help">
<view class="title">互动小提示</view>
<view class="content">手机竖屏固定放置,调整屏幕角度,训练者全身及双脚出现至屏幕内,识别更精准。</view>
</view>
......
......@@ -233,7 +233,7 @@ Page({
start(){
var that = this;
var downTime = this.data.downTime;
that.palyLocal('/packageC/images/skip.mp3');
that.palyLocal('/images/ai/highLegLifts.mp3');
that.data.prepare = setTimeout(()=>{
that.setData({
aiState:2
......
......@@ -231,7 +231,7 @@ Page({
start(){
var that = this;
var downTime = this.data.downTime;
that.palyLocal('/packageC/images/skip.mp3');
that.palyLocal('/images/ai/jump.mp3');
that.data.prepare = setTimeout(()=>{
that.setData({
aiState:2
......
......@@ -3,7 +3,7 @@
* @eMail: 932055106@qq.com
* @Date: 2022-05-11 09:53:47
* @LastEditors: tangjiale
* @LastEditTime: 2022-06-08 14:56:37
* @LastEditTime: 2022-06-10 10:37:45
*/
var API = require("../../../utils/request");
......@@ -17,8 +17,12 @@ var angle_boby = 0;
var angle_hand_l = 0;
module.exports = Behavior({
onLoad:function(option){
created:function(option){
count = 0
correct = 0
dir = 0
angle_boby = 0
angle_hand_l = 0
},
data: {
showImageUrl:'https://cdn.xiaobentiyu.cn/sport_minapp_img/sitUp/push-ups-bg.png'
......
......@@ -3,7 +3,7 @@
* @eMail: 932055106@qq.com
* @Date: 2022-05-11 09:53:47
* @LastEditors: tangjiale
* @LastEditTime: 2022-06-08 14:57:10
* @LastEditTime: 2022-06-10 10:37:48
*/
// 拐踢毽子计算配置
......@@ -20,8 +20,14 @@ var correct = 0;
module.exports = Behavior({
onLoad:function(option){
created:function(option){
left_foot = 0
right_foot = 0
count = 0
let_switch = 0
right_switch = 0
angle_hand = 0
correct = 0
},
data: {
......
......@@ -3,7 +3,7 @@
* @eMail: 932055106@qq.com
* @Date: 2022-05-11 09:53:47
* @LastEditors: tangjiale
* @LastEditTime: 2022-06-08 14:57:19
* @LastEditTime: 2022-06-10 10:37:50
*/
var API = require("../../../utils/request");
......@@ -17,8 +17,11 @@ var angle_l = 0;
var angle_r = 0;
module.exports = Behavior({
onLoad:function(option){
created:function(option){
count = 0
dirr = 0
angle_l = 0
angle_r = 0
},
data: {
showImageUrl:'https://cdn.xiaobentiyu.cn/sport_minapp_img/sitUp/squat-bg.png'
......
......@@ -3,13 +3,12 @@
* @eMail: 932055106@qq.com
* @Date: 2022-05-11 09:53:47
* @LastEditors: tangjiale
* @LastEditTime: 2022-06-08 15:07:12
* @LastEditTime: 2022-06-10 10:36:16
*/
var API = require("../../../utils/request");
// AI混淆
var count = 0;
var correct = 0;
var dir = 0;// 0躺下 1坐起
var angle_foot = 0;
......@@ -17,8 +16,12 @@ var angle_hand = 0;
var correct = 0;//识别成功次数
module.exports = Behavior({
onLoad:function(option){
created:function(option){
count = 0
correct = 0
dir = 0
angle_foot = 0
angle_hand = 0
},
data: {
showImageUrl:'https://cdn.xiaobentiyu.cn/sport_minapp_img/sitUp/jumping-jacks.png'
......
......@@ -3,7 +3,7 @@
* @eMail: 932055106@qq.com
* @Date: 2022-05-11 09:53:47
* @LastEditors: tangjiale
* @LastEditTime: 2022-06-08 14:57:38
* @LastEditTime: 2022-06-10 10:37:54
*/
var API = require("../../../utils/request");
......@@ -16,8 +16,12 @@ var angle_boby = 0;
var angle_tui = 0;
module.exports = Behavior({
onLoad:function(option){
created:function(option){
count = 0
correct = 0
dir = 0
angle_boby = 0
angle_tui = 0
},
data: {
showImageUrl:'https://cdn.xiaobentiyu.cn/sport_minapp_img/sitUp/squat-bg.png'
......
......@@ -3,7 +3,7 @@
* @eMail: 932055106@qq.com
* @Date: 2022-05-11 09:53:47
* @LastEditors: tangjiale
* @LastEditTime: 2022-06-08 14:57:46
* @LastEditTime: 2022-06-10 10:37:56
*/
var API = require("../../../utils/request");
......@@ -18,8 +18,13 @@ var angle_r = 0;
var angle_boby = 0;
module.exports = Behavior({
onLoad:function(option){
created:function(option){
count = 0
correct = 0
dir = 0
dirr = 0
angle_l = 0
angle_r = 0
},
data: {
showImageUrl:'https://cdn.xiaobentiyu.cn/sport_minapp_img/sitUp/jumping-jacks.png'
......
......@@ -3,7 +3,7 @@
* @eMail: 932055106@qq.com
* @Date: 2022-05-11 09:53:47
* @LastEditors: tangjiale
* @LastEditTime: 2022-06-08 14:57:52
* @LastEditTime: 2022-06-10 10:37:59
*/
var API = require("../../../utils/request");
// 拐踢毽子计算配置
......@@ -24,8 +24,8 @@ var hanld_a = 0;
var p = 0;
module.exports = Behavior({
onLoad:function(option){
created:function(option){
dir = 0;count = 0;angle_foot = 0;angle_knee = 0;correct = 0;lastAngle = 0; pointList = [];point = 0;equal = 0;equal = 0;equal = 0;prey = 0;hanld = 0;hanld_a = 0;p = 0
},
data: {
showImageUrl:'https://cdn.xiaobentiyu.cn/sport_minapp_img/sitUp/jumping-jacks.png',
......
......@@ -3,7 +3,7 @@
* @eMail: 932055106@qq.com
* @Date: 2022-05-11 09:53:47
* @LastEditors: tangjiale
* @LastEditTime: 2022-06-08 14:58:10
* @LastEditTime: 2022-06-10 10:38:00
*/
var API = require("../../../utils/request");
......@@ -19,8 +19,14 @@ var angle_r = 0;
module.exports = Behavior({
onLoad:function(option){
created:function(option){
count = 0
correct = 0
dir = 0
dirr = 0
angle_boby = 0
angle_l = 0
angle_r = 0
},
data: {
showImageUrl:'https://cdn.xiaobentiyu.cn/sport_minapp_img/sitUp/squat-bg.png'
......
......@@ -3,7 +3,7 @@
* @eMail: 932055106@qq.com
* @Date: 2022-05-11 09:53:47
* @LastEditors: tangjiale
* @LastEditTime: 2022-06-08 14:58:23
* @LastEditTime: 2022-06-10 10:37:25
*/
var API = require("../../../utils/request");
......@@ -18,8 +18,14 @@ var angle_l = 0;
var angle_r = 0;
module.exports = Behavior({
onLoad:function(option){
created:function(option){
count = 0
correct = 0
dir = 0
dirr = 0
angle_boby = 0
angle_l = 0
angle_r = 0
},
data: {
showImageUrl:'https://cdn.xiaobentiyu.cn/sport_minapp_img/sitUp/squat-bg.png'
......
......@@ -3,7 +3,7 @@
* @eMail: 932055106@qq.com
* @Date: 2022-05-11 09:53:47
* @LastEditors: tangjiale
* @LastEditTime: 2022-06-08 14:58:32
* @LastEditTime: 2022-06-10 10:37:38
*/
var API = require("../../../utils/request");
......@@ -14,8 +14,10 @@ var correct = 0;//识别成功次数
var dir = 0;// 0躺下 1坐起
module.exports = Behavior({
onLoad:function(option){
created:function(option){
count = 0
correct = 0
dir = 0
},
data: {
showImageUrl:'https://cdn.xiaobentiyu.cn/sport_minapp_img/sitUp/bg-sit.png'
......
......@@ -232,7 +232,7 @@ Page({
start(){
var that = this;
var downTime = this.data.downTime;
that.palyLocal('/packageC/images/skip.mp3');
that.palyLocal('/images/ai/deep.mp3');
that.data.prepare = setTimeout(()=>{
that.setData({
aiState:2
......
......@@ -232,7 +232,7 @@ Page({
start(){
var that = this;
var downTime = this.data.downTime;
that.palyLocal('/packageC/images/skip.mp3');
that.palyLocal('/images/ai/shuttlecock.mp3');
that.data.prepare = setTimeout(()=>{
that.setData({
aiState:2
......
......@@ -232,7 +232,7 @@ Page({
start(){
var that = this;
var downTime = this.data.downTime;
that.palyLocal('/packageC/images/skip.mp3');
that.palyLocal('/images/ai/skip.mp3');
that.data.prepare = setTimeout(()=>{
that.setData({
aiState:2
......
......@@ -232,7 +232,7 @@ Page({
start(){
var that = this;
var downTime = this.data.downTime;
that.palyLocal('/packageC/images/skip.mp3');
that.palyLocal('/images/ai/skip.mp3');
that.data.prepare = setTimeout(()=>{
that.setData({
aiState:2
......
......@@ -232,7 +232,7 @@ Page({
start(){
var that = this;
var downTime = this.data.downTime;
that.palyLocal('/packageC/images/skip.mp3');
that.palyLocal('/images/ai/hipKicked.mp3');
that.data.prepare = setTimeout(()=>{
that.setData({
aiState:2
......
......@@ -228,7 +228,7 @@ Page({
start(){
var that = this;
var downTime = this.data.downTime;
that.palyLocal('/packageC/images/skip.mp3');
that.palyLocal('/images/ai/sit.mp3');
that.data.prepare = setTimeout(()=>{
that.setData({
aiState:2
......
......@@ -57,7 +57,7 @@ Page({
mode = 4
}
wx.redirectTo({
// url: '../skip/skip/skip?mode=' + mode,
url: '../../bluetooth/skip/skip?mode=' + mode,
})
}else if(that.data.type == 2){
console.log('计数跳')
......@@ -75,12 +75,12 @@ Page({
mode = 14
}
wx.redirectTo({
// url: '../skip/skip/skip?mode=' + mode,
url: '../../bluetooth/skip/skip?mode=' + mode,
})
}else if(that.data.type == 3){
console.log('自由模式')
wx.redirectTo({
// url: '../skip/skip/skip?mode=1',
url: '../../bluetooth/skip/skip?mode=1',
})
}
},
......
This diff is collapsed. Click to expand it.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment