Browse Source

心率带管理

Changpeng Duan 5 năm trước cách đây
mục cha
commit
533c68c423

+ 10 - 9
pc/src/api/Navs.js

@@ -91,16 +91,17 @@ let navs = [
         "grouplist": "2,5",
         "icon": "el-icon-bank-card",
     },
+    // {
+    //     "clmid": "10",
+    //     "clmcode": "finish",
+    //     "clmname": "下课管理",
+    //     "clmurl": "/finish",
+    //     "prname": "",
+    //     "show": 3,
+    //     "grouplist": "2,5",
+    //     "icon": "el-icon-bell",
+    // },
     {
-        "clmid": "10",
-        "clmcode": "finish",
-        "clmname": "下课管理",
-        "clmurl": "/finish",
-        "prname": "",
-        "show": 3,
-        "grouplist": "2,5",
-        "icon": "el-icon-bell",
-    }, {
         "clmid": "11",
         "clmcode": "setting",
         "clmname": "系统设置",

+ 42 - 0
pc/src/api/getApiRes.js

@@ -635,7 +635,49 @@ export function ClassStartPrepare(postdata) {
     return getApiBasic(url, postdata);
 }
 
+// HrSensors
+// 添加商家公共心率设备
+export function AddHrSensors(postdata) {
+    let url = headapi + 'v1/HrSensors/AddHrSensors ';
+    return getApiBasic(url, postdata);
+}
+
+//
+// 心率带绑定用户
+export function BindHrSensorsToUser(postdata) {
+    let url = headapi + 'v1/HrSensors/BindHrSensorsToUser ';
+    return getApiBasic(url, postdata);
+}
+
+// 修改商家公共心率设备信息
+export function EditHrSensors(postdata) {
+    let url = headapi + 'v1/HrSensors/EditHrSensors ';
+    return getApiBasic(url, postdata);
+}
+
+//
+// 修改商家公共心率设备状态
+export function HrSensorsStatusEdit(postdata) {
+    let url = headapi + 'v1/HrSensors/HrSensorsStatusEdit ';
+    return getApiBasic(url, postdata);
+}
+
+// 查询商家公共心率设备
+export function QueryHrSensors(postdata) {
+    let url = headapi + 'v1/HrSensors/QueryHrSensors ';
+    return getApiBasic(url, postdata);
+}
 
+// 查询未绑定的心率带--下拉框用
+export function SelectHrSensors(postdata) {
+    let url = headapi + 'v1/HrSensors/SelectHrSensors ';
+    return getApiBasic(url, postdata);
+}
 
+// 心率带解绑用户
+export function UnBindHrSensorsToUser(postdata) {
+    let url = headapi + 'v1/HrSensors/UnBindHrSensorsToUser ';
+    return getApiBasic(url, postdata);
+}
 
 

+ 1 - 1
pc/src/views/Lesson.vue

@@ -581,7 +581,7 @@ export default {
       VipUserListQuery(postdata).then(res => {
         let json = res;
         if (json.Code == 0) {
-          if (json.Rs == null) return false
+          if (json.Rs == null) return false;
           // that.dialogdata = json.Rs;
           that.form.dialogdata = turnResToOption(json.Rs)
         } else {

+ 5 - 5
pc/src/views/Main.vue

@@ -317,11 +317,11 @@
             },
             goFinish(row) {
                 this.$router.push({
-                    path: '/finishDetail', query: {
-                        id: row.StdId,
-                        classId: row.ClassId,
-                        ClassName: row.ClassName,
-                        BeginTime: row.BeginTime,
+                    path: '/courses', query: {
+                        // id: row.StdId,
+                        // classId: row.ClassId,
+                        // ClassName: row.ClassName,
+                        // BeginTime: row.BeginTime,
                     }
                 });
             },

+ 305 - 8
pc/src/views/courseEdit.vue

@@ -1,15 +1,35 @@
-课程管理
 <template>
     <div class="context">
         <div class="panel">
             <div class="panel-body">
                 <br>
-                <el-page-header @back="goBack" content="课程成绩">
+                <el-page-header @back="goBack" content="课程管理">
                     <br>
                 </el-page-header>
                 <span class="classNames">
                     {{title}}
                 </span>
+                <br>
+                <div class="panel_control">
+                    <el-row :gutter="20">
+                        <el-col :span="4">
+                            <em>会员名:</em>
+                            <el-input v-model="panel.name" placeholder="请输入会员名"></el-input>
+                        </el-col>
+                        <el-col :span="4">
+                            <em>手机号:</em>
+                            <el-input v-model="panel.phone" placeholder="请输入手机号" type="number"></el-input>
+                        </el-col>
+                        <el-col :span="4">
+                            <el-button size="" type="primary" @click="query" plain :disabled="serachBtnStatus">查询
+                            </el-button>
+                        </el-col>
+                    </el-row>
+                </div>
+            </div>
+            <div class="change">
+                <el-button @click="addFinish">确认下课</el-button>
+                <el-button @click="addFinishMember">添加上课会员</el-button>
             </div>
         </div>
         <div class="table">
@@ -46,16 +66,57 @@
                 >
                 </el-table-column>
                 <el-table-column
-                        prop="Cle"
-                        label="卡路里"
+                        prop="ClassName"
+                        label="课程"
+                        sortable
+                >
+                    <template slot-scope="scope">
+                        <span class="lessons"
+                              :style="{ background:scope.row.ClassColor }">{{scope.row.ClassName}}</span>
+                    </template>
+                </el-table-column>
+                <el-table-column
+                        prop="OrderTime"
+                        label="预约时间"
+                        :formatter="filterFmtDate"
+                        sortable
+                >
+                </el-table-column>
+                <el-table-column
+                        prop="RemainTotalhour"
+                        label="剩余全部课时"
                         sortable
                 >
                 </el-table-column>
                 <el-table-column
-                        prop="Ck"
-                        label="ck值"
+                        prop="Status"
+                        label="状态"
                         sortable
                 >
+                    <template slot-scope="scope">
+                        <span v-if="scope.row.Status == 1">预约上课 </span>
+                        <span v-if="scope.row.Status == 2">预约未到</span>
+                        <span v-if="scope.row.Status == 3">上课未预约</span>
+                    </template>
+                </el-table-column>
+                <el-table-column
+                        prop="Status"
+                        label="操作"
+                >
+                    <template slot-scope="scope">
+                        <el-button type="primary" round v-if="scope.row.Status == 1" size="mini"
+                                   @click="pauseRow(scope.row,2)">
+                            预约未到
+                        </el-button>
+                        <el-button type="warning" round v-if="scope.row.Status == 2" size="mini"
+                                   @click="pauseRow(scope.row,1)">
+                            撤销
+                        </el-button>
+                        <el-button type="danger" round v-if="scope.row.Status == 3" size="mini"
+                                   @click="getClassOverDetailDel(scope.row)">
+                            删除
+                        </el-button>
+                    </template>
                 </el-table-column>
             </el-table>
             <br>
@@ -66,6 +127,19 @@
                     @current-change="pageChange"
             ></el-pagination>
         </div>
+        <el-dialog title="添加上课会员" :visible.sync="dialogVisible" width="650px">
+            <div class="dialogContent viplist">
+                <span class="blueTitle">{{ClassName}} {{BeginTime}}</span>
+                <div>
+                    <el-transfer filterable v-model="dialogValue" :data="form.dialogdata"
+                                 :titles="['会员列表', '已添加会员']"></el-transfer>
+                </div>
+            </div>
+            <div class="dialogFooter">
+                <el-button type="primary" size="small" @click="confirmMember">确定</el-button>
+                <el-button size="small" @click="dialogVisible = false">取消</el-button>
+            </div>
+        </el-dialog>
     </div>
 </template>
 
@@ -73,15 +147,88 @@
 
     import Global from '../Global.js'
     import {
+        ClassDetailQuery,
         ClassOverDetailListQuery,
+        VipUserSimpleQuery,
+        ClassOverDetailAdd,
     } from "../api/getApiRes";
 
     let qs = require('qs');
     export default {
         data() {
             return {
+                serachBtnStatus: false,
                 tableData: [],
                 title: '',
+                dialogVisible: false,//添加下课会员
+                dialogFinishVisible: false,//确认下课dialog
+                dialogLesson: false,//课时调整
+                dialogGift: false,//赠送课时调整
+                dialogExpTime: false,//有效期调整
+                dialogLessonTable: false,//会员课程
+                dialogTitle: '新增会员',
+                current: getNowDate(),
+                dialogValue: [],
+                dialogCoachValue: [],
+                BeginTime: '',
+                ClassName: '',
+                // panel 配置项目
+                panel: {
+                    name: '',
+                    phone: '',
+                    usercode: '',
+                    username: '',
+                    compname: '',
+                    keyword: '',
+                    USERCODE: '',
+                    endType: '',
+                    taskstatus: 99,
+                    draw: 1,
+                    start: 0,
+                    recordsTotal: 0,
+                    tableData: [],
+                    allTableData: [],
+                    limit: '10',
+                    multipleSort: false,
+                    loading: false,
+                    fileList: [],
+                    multipleSelection: [],
+                    detectedmac: '',
+                    BeginTime: '',
+                    ClassName: '',
+                    options: [
+                        {value: 99, label: '全部'},
+                        {value: 1, label: '进行中'},
+                        {value: 2, label: '已完成'},
+                    ],
+                    endTypeOptions: [
+                        {value: 99, label: '全部'},
+                        {value: 30, label: '近一个月'},
+                        {value: 7, label: '近一周'},
+                        {value: 1, label: '当日'},
+                    ],
+                    time1: globalBt(),
+                },
+                form: {
+                    name: '',
+                    userCode: '',
+                    coach: '',
+                    coachOptions: [],
+                    shopId: '',
+                    memberType: 1,
+                    lesson: 1,
+                    gift: 1,
+                    btnType: 0,//0新建,1编辑编辑
+                    memo: '',
+                    expTime: '',
+                    dialogdata: [],//穿梭待选
+                    dialogValue: [],//穿梭已选
+                    dialogCoachdata: [],//穿梭已选
+                },
+                memberTypes: [
+                    {value: 1, label: '年会员'},
+                    {value: 2, label: '充值会员'},
+                ],
                 pageination: {
                     pageItem: 100,
                     pageoptions: pageOptions(),
@@ -95,6 +242,105 @@
             this.title = this.$route.query.ClassName + ' ' + this.$route.query.BeginStr + '-' + this.$route.query.EndStr;
         },
         methods: {
+            // 确认下课
+            addFinish() {
+                // this.clearForm();
+                // // 重新获得教练名单
+                // this.getCoachOption();
+                // this.dialogFinishVisible = true
+                // this.btnType = 0;
+                this.dialogTitle = '确认下课'
+            },
+            // 添加下课会员
+            addFinishMember() {
+                let that = this;
+                this.clearForm();
+                this.getClassVipuserQuery();
+                this.dialogValue = [];
+                let std = [];
+                if (this.tableData) {
+                    this.tableData.map(function (item) {
+                        std.push(item.UserId)
+                    })
+                }
+                that.dialogValue = std;
+                this.dialogVisible = true
+            },
+            clearForm() {
+                // clear
+                this.form.name = '';
+                this.form.userCode = '';
+                this.form.shopId = '';
+                this.dialogCoachValue = [];
+            },
+            // 获取本课程下的会员列表
+            getClassVipuserQuery() {
+                let that = this;
+                let param = {
+                    token: localStorage.token,
+                    // classId: this.$route.query.classId,
+                };
+                let postdata = qs.stringify(param);
+                // ClassVipuserQuery(postdata).then(res => {
+                VipUserSimpleQuery(postdata).then(res => {
+                    let json = res;
+                    if (json.Code == 0) {
+                        // that.form.dialogdata = turnResToOptionByViper(json.Rs);
+                        that.form.dialogdata = turnResToOptionBySimViper(json.Rs);
+                        console.log(that.form.dialogdata);
+                    } else {
+                        that.$message.error(json.Memo);
+                    }
+                })
+            },
+            // 确认提交下课会员
+            confirmMember() {
+                let that = this;
+                // checkNum
+                let userlist = that.dialogValue.toString();
+                let param = {
+                    token: localStorage.token,
+                    stdId: this.$route.query.StdId,
+                    userlist: userlist
+                };
+                let postdata = qs.stringify(param);
+                // 下课记录详情添加
+                ClassOverDetailAdd(postdata).then(res => {
+                    let json = res;
+                    if (json.Code == 0) {
+                        // 关闭弹窗
+                        that.dialogVisible = false;
+                        // 重载列表
+                        that.getTableQuery();
+                        that.$message({
+                            showClose: true,
+                            message: '下课会员修改成功!',
+                            type: 'success'
+                        });
+                    } else {
+                        that.$message.error(json.Memo);
+                    }
+                })
+            },
+            pauseRow() {
+            },
+            getClassOverDetailDel() {
+            },
+            // 查询按钮
+            query() {
+                let that = this;
+                that.serachBtnStatus = true;
+                let totalTime = 2
+                let clock = window.setInterval(() => {
+                    totalTime--
+                    if (totalTime < 0) {
+                        totalTime = 2;
+                        that.serachBtnStatus = false;
+                    }
+                }, 1000)
+                this.getTableQuery();
+                this.$message.success('查询完毕');
+            },
             goBack() {
                 this.$router.push({
                     path: '/courses', query: {}
@@ -167,13 +413,21 @@
                 that.start = index * that.draw;
                 // that.getTableQuery();
             },
+            // 过滤时间
+            filterFmtDate(value, row, column) {
+                let that = this;
+                if (column == "0001-01-01T08:05:43+08:05" || column == "0001-01-01T00:00:00Z") {
+                    return '未预约';
+                } else {
+                    return nonTfmtDate(column, 11);
+                }
+            },
         },
         watch: {
             $route(to) {
-                if (to.name == 'classInfoDetail') {
+                if (to.name == 'courseEdit') {
                     this.getTableQuery();
                     this.title = this.$route.query.ClassName + ' ' + this.$route.query.BeginStr + '-' + this.$route.query.EndStr;
-
                 }
             },
         },
@@ -206,10 +460,53 @@
         margin-bottom: 3px;
         float: left;
     }
+
     .head {
         overflow: hidden;
         display: block;
         margin: 0 auto;
         border-radius: 250px;
     }
+
+    .panel_control {
+        width: 100%;
+        overflow: hidden;
+        display: block;
+        margin: 0 auto;
+    }
+
+    /deep/ .el-transfer-panel__item .el-checkbox__input {
+        float: left;
+        left: 20%;
+    }
+
+    /*.panel-body {*/
+    .panel_control {
+        padding: 20px;
+        background: #F0F2F5;
+    }
+
+    .change {
+        width: 100%;
+        overflow: hidden;
+        display: block;
+        margin: 0 auto;
+        padding-top: 10px;
+        padding-bottom: 10px;
+    }
+
+    .change button {
+        float: left;
+    }
+
+    .change button.pull-right {
+        float: right;
+    }
+
+    .lessons {
+        padding: 1px 7px;
+        border-radius: 250px;
+        float: left;
+        color: #000;
+    }
 </style>

+ 71 - 20
pc/src/views/courses.vue

@@ -81,7 +81,7 @@
                         sortable
                 >
                     <template slot-scope="scope">
-                        <span v-if="scope.row.FinishClass == 0">未上课</span>
+                        <span v-if="scope.row.FinishClass == 0" style="color: red">未上课</span>
                         <span v-if="scope.row.FinishClass == 1">已下课</span>
                         <span v-if="scope.row.FinishClass == 2" style="color: yellowgreen">已上课</span>
                         <span v-if="scope.row.FinishClass == 3">准备上课</span>
@@ -100,11 +100,14 @@
                             上课
                         </el-button>
                         <el-button type="primary" round size="mini"
-                                   v-if="scope.row.FinishClass == 3 && scope.row.FinishClass == 2">
+                                   v-if="scope.row.FinishClass == 3 || scope.row.FinishClass == 2"
+                                   @click="seeEdit(scope.row)"
+                        >
                             管理
                         </el-button>
+                        <!--修改区域 todo-->
                         <el-button type="primary" round plain size="mini" v-if="scope.row.FinishClass == 3"
-                                   @click="seeEdit(scope.row)"
+                                   @click="changeShopVenue(scope.row)"
                         >
                             编辑
                         </el-button>
@@ -140,7 +143,7 @@
                                 </el-option>
                             </el-select>
                         </el-form-item>
-                        <el-form-item label="类型">
+                        <el-form-item label="类型" :required="true">
                             <el-select v-model="form.classType" filterable placeholder="请选择">
                                 <el-option
                                         v-for="item in form.ClassTypeOptions"
@@ -164,11 +167,14 @@
                 </div>
             </div>
             <div class="dialogFooter">
-                <el-button type="primary" size="small" @click="getClassStartPrepare()">确定</el-button>
+                <el-button type="primary" size="small" v-if="form.btnType == 0" @click="getClassStartPrepare()">确定
+                </el-button>
+                <el-button type="primary" size="small" v-if="form.btnType == 1" @click="getClassStartPrepareForEdit()">
+                    确定
+                </el-button>
                 <el-button size="small" @click="dialogMemberVisible = false">取消</el-button>
             </div>
         </el-dialog>
-
     </div>
 </template>
 
@@ -244,7 +250,7 @@
                     name: '',
                     svId: '',
                     svName: '',
-                    classType: '',
+                    classType: 1,
                     userCode: '',
                     coach: '',
                     coachOptions: [],
@@ -254,7 +260,7 @@
                     gift: 1,
                     pktype: 1,
                     pkNum: 2,
-                    btnType: 0,//0新建,1编辑编辑
+                    btnType: 0,//0新建,1编辑
                     memo: '',
                     expTime: '',
                     StdId: '',
@@ -282,17 +288,28 @@
             this.getTableQuery();
         },
         methods: {
+            // 更改上课区域
+            changeShopVenue(row) {
+                this.dialogMemberVisible = true;
+                this.form.btnType = 1;//0新建,1编辑
+                // 读取本行信息
+                this.dialogMemberVisible = true;
+                this.className = row.ClassName + ' ' + row.BeginStr + ' - ' + row.EndStr;
+                this.form.StdId = row.StdId;
+                this.getQueryShopVenue();
+                this.form.svList = row.SvId;
+                this.form.classType = row.ClassType;
+                this.form.pkNum = row.PkNum;
+            },
             // 准备上课
             getClassStartPrepare() {
                 let that = this;
-
                 if (!that.form.svId) {
                     that.$message.error('上课区域不能为空');
                     return false
                 }
-
                 // 不是竞技pk的时候为0
-                let uppkNum = that.form.classType != 2 ? that.form.pkNum : 0;
+                let uppkNum = that.form.classType == 2 ? that.form.pkNum : 0;
 
                 let param = {
                     token: localStorage.token,
@@ -303,6 +320,8 @@
                     pkNum: uppkNum,
                 };
                 let postdata = qs.stringify(param);
+                console.log(that.form.BeginStr);
+                return false
                 ClassStartPrepare(postdata).then(res => {
                     let json = res;
                     if (json.Code == 0) {
@@ -310,11 +329,11 @@
                         that.dialogMemberVisible = false;
                         this.getTableQuery();
                         this.$router.push({
-                            path: '/finishDetail', query: {
-                                id: row.StdId,
-                                // classId: row.ClassId,
-                                // ClassName: row.ClassName,
-                                // BeginTime: row.BeginTime,
+                            path: '/courseEdit', query: {
+                                StdId:  that.form.StdId,
+                                ClassName:  that.form.ClassName,
+                                BeginStr:  that.form.BeginStr,
+                                EndStr:  that.form.EndStr,
                             }
                         });
                     } else {
@@ -322,6 +341,36 @@
                     }
                 })
             },
+            // 编辑
+            getClassStartPrepareForEdit() {
+                let that = this;
+                if (!that.form.svId) {
+                    that.$message.error('上课区域不能为空');
+                    return false
+                }
+                // 不是竞技pk的时候为0
+                let uppkNum = that.form.classType == 2 ? that.form.pkNum : 0;
+
+                let param = {
+                    token: localStorage.token,
+                    stdId: that.form.StdId,
+                    svId: that.form.svId,
+                    svName: that.form.svName,
+                    classType: that.form.classType,
+                    pkNum: uppkNum,
+                };
+                let postdata = qs.stringify(param);
+                ClassStartPrepare(postdata).then(res => {
+                    let json = res;
+                    if (json.Code == 0) {
+                        // NewId: 0
+                        that.dialogMemberVisible = false;
+                        this.getTableQuery();
+                    } else {
+                        that.$message.error(json.Memo);
+                    }
+                })
+            },
             seeDetail(row) {
                 this.$router.push({
                     path: '/classInfoDetail', query: {
@@ -351,8 +400,6 @@
                 });
                 this.form.svName = obj.Name;
             },
-
-
             // 获取区域列表
             getQueryShopVenue() {
                 let that = this;
@@ -394,12 +441,16 @@
                 })
             },
             showDialogMemberVisible(row) {
-                console.log(row);
                 this.dialogMemberVisible = true;
+                this.form.btnType = 0;//0新建,1编辑编辑
+                // clear
+                this.form.svList = "";
+                this.form.classType = 1;
+                this.form.pkNum = "";
+
                 this.className = row.ClassName + ' ' + row.BeginStr + ' - ' + row.EndStr;
                 this.form.StdId = row.StdId;
                 this.getQueryShopVenue();
-
             },
             // 检测当前课是否处于可改变状态
             // 固定下当前已预约人数列表

+ 23 - 21
pc/src/views/finishDetail.vue

@@ -13,10 +13,11 @@
                         </el-col>
                         <el-col :span="4">
                             <em>手机号:</em>
-                            <el-input v-model="panel.phone" placeholder="请输入手机号" type="number" ></el-input>
+                            <el-input v-model="panel.phone" placeholder="请输入手机号" type="number"></el-input>
                         </el-col>
                         <el-col :span="4">
-                            <el-button size="" type="primary" @click="query" plain :disabled="serachBtnStatus">查询</el-button>
+                            <el-button size="" type="primary" @click="query" plain :disabled="serachBtnStatus">查询
+                            </el-button>
                         </el-col>
                     </el-row>
                 </div>
@@ -35,8 +36,8 @@
                     element-loading-background="rgba(0, 0, 0, 0.8)"
                     class=""
                     @selection-change="handleSelectionChange"
->
             >
+                >
                 <el-table-column
                         type="index"
                         label="序号"
@@ -61,7 +62,8 @@
                         sortable
                 >
                     <template slot-scope="scope">
-                        <span class="lessons" :style="{ background:scope.row.ClassColor }">{{scope.row.ClassName}}</span>
+                        <span class="lessons"
+                              :style="{ background:scope.row.ClassColor }">{{scope.row.ClassName}}</span>
                     </template>
                 </el-table-column>
                 <el-table-column
@@ -169,7 +171,7 @@
     export default {
         data() {
             return {
-              serachBtnStatus: false,
+                serachBtnStatus: false,
                 dialogVisible: false,//添加下课会员
                 dialogFinishVisible: false,//确认下课dialog
                 dialogLesson: false,//课时调整
@@ -263,9 +265,9 @@
                     name: this.panel.name,//
                     phone: this.panel.phone,//
                     shopId: localStorage.ShopId,//
-                    adminType : 4,//
-                    start : 1,//
-                    tableMax  : 299,//
+                    adminType: 4,//
+                    start: 1,//
+                    tableMax: 299,//
                 };
                 let postdata = qs.stringify(param);
                 ShopManagerListQuery(postdata).then(res => {
@@ -557,16 +559,16 @@
             },
             // 查询按钮
             query() {
-              let that = this;
-              that.serachBtnStatus = true;
-              let totalTime = 2
-              let clock = window.setInterval(() => {
-                totalTime--
-                if (totalTime < 0) {
-                  totalTime = 2;
-                  that.serachBtnStatus = false;
-                }
-              }, 1000)
+                let that = this;
+                that.serachBtnStatus = true;
+                let totalTime = 2
+                let clock = window.setInterval(() => {
+                    totalTime--
+                    if (totalTime < 0) {
+                        totalTime = 2;
+                        that.serachBtnStatus = false;
+                    }
+                }, 1000)
                 this.getTableQuery();
                 this.$message.success('查询完毕');
             },
@@ -680,9 +682,7 @@
 
     .context {
         height: 770px;
-
         overflow-y: scroll;
-
         display: block;
         margin: 0 auto;
         background-color: #fff !important;
@@ -792,9 +792,11 @@
     /deep/ .el-checkbox__inner {
         left: -20px;
     }
-    .viplist /deep/ .el-transfer__buttons button:nth-child(1){
+
+    .viplist /deep/ .el-transfer__buttons button:nth-child(1) {
         display: none;
     }
+
     .lessons {
         padding: 1px 7px;
         border-radius: 250px;

+ 727 - 670
pc/src/views/heartEquip.vue

@@ -1,705 +1,762 @@
 <template>
-  <div class="context">
-    <div class="panel">
-      <h5>心率设备</h5>
-      <div class="panel-body">
-        <div class="panel_control">
-          <el-row :gutter="20">
-            <el-col :span="4">
-              <em>心率设备:</em>
-              <el-input v-model="panel.phone" placeholder="请输入编号" type="number"></el-input>
-            </el-col>
-            <el-col :span="4">
-              <el-button size="" type="primary" @click="query" plain>查询</el-button>
-            </el-col>
-          </el-row>
+    <div class="context">
+        <div class="panel">
+            <h5>心率设备</h5>
+            <div class="panel-body">
+                <div class="panel_control">
+                    <el-row :gutter="20">
+                        <el-col :span="4">
+                            <em>心率设备:</em>
+                            <el-input v-model="panel.str" placeholder="请输入编号" type="number"></el-input>
+                        </el-col>
+                        <el-col :span="4">
+                            <em>设备状态:</em>
+                            <!--status-->
+                            <el-select v-model="panel.status" placeholder="请选择">
+                                <el-option
+                                        v-for="item in panel.statusOptions"
+                                        :key="item.value"
+                                        :label="item.label"
+                                        :value="item.value">
+                                </el-option>
+                            </el-select>
+                        </el-col>
+                        <el-col :span="4">
+                            <el-button size="" type="primary" @click="query" plain>查询</el-button>
+                        </el-col>
+                    </el-row>
+                </div>
+            </div>
         </div>
-      </div>
-    </div>
-    <div class="change">
-      <el-button @click="addMember" type="primary">新增心率设备</el-button>
-      <el-button @click="editList">编辑心率设备</el-button>
-      <el-button @click="delList" type="danger">删除心率设备</el-button>
-    </div>
-    <div class="table">
-      <el-table
-          :data="tableData"
-          border
-          is-horizontal-resize
-          :default-sort="{prop: 'date', order: 'descending'}"
-          element-loading-background="rgba(0, 0, 0, 0.8)"
-          class=""
-          @selection-change="handleSelectionChange" @current-change="clickChange"
-      >
-        >
-        <el-table-column label="选择" width="55">
-          <template slot-scope="scope">
-            <el-radio v-model="tableRadio" :label="scope.row"><i></i></el-radio>
-          </template>
-        </el-table-column>
-        <el-table-column
-            type="index"
-            label="序号"
-            align="center"
+        <div class="change">
+            <el-button @click="addMember" type="primary">新增心率设备</el-button>
+            <el-button @click="editList">编辑心率设备</el-button>
+            <el-button @click="delList" type="danger">删除心率设备</el-button>
+        </div>
+        <div class="table">
+            <el-table
+                    :data="tableData"
+                    border
+                    is-horizontal-resize
+                    :default-sort="{prop: 'date', order: 'descending'}"
+                    element-loading-background="rgba(0, 0, 0, 0.8)"
+                    class=""
+                    @selection-change="handleSelectionChange" @current-change="clickChange"
+            >
+                >
+                <el-table-column label="选择" width="55">
+                    <template slot-scope="scope">
+                        <el-radio v-model="tableRadio" :label="scope.row"><i></i></el-radio>
+                    </template>
+                </el-table-column>
+                <el-table-column
+                        type="index"
+                        label="序号"
+                        align="center"
 
-            width="50">
-        </el-table-column>
-        <el-table-column
-            prop="tel"
-            label="序列号"
-            align="center"
-        >
-        </el-table-column>
-        <el-table-column
-            prop="shop"
-            label="会员"
-            align="center"
-            sortable
-        >
+                        width="50">
+                </el-table-column>
+                <el-table-column
+                        prop="Sn"
+                        label="序列号"
+                        align="center"
+                >
+                </el-table-column>
+                <el-table-column
+                        prop="Sn"
+                        label="实体编号"
+                        align="InVenueNo"
+                >
+                </el-table-column>
+                <el-table-column
+                        prop="UserName"
+                        label="用户"
+                        align="center"
+                        sortable
+                >
 
-          <template slot-scope="scope">
-<!--            <el-select v-model="scope.row.shop" @change="getRowTop(scope.row)" filterable v-if="scope.row.shop">-->
-<!--              <el-option-->
-<!--                  v-for="item in panel.options"-->
-<!--                  :key="item.value"-->
-<!--                  :label="item.label"-->
-<!--                  :value="item.value">-->
-<!--              </el-option>-->
-<!--            </el-select>-->
-            <el-button @click="takeBack(scope.row)" type="danger">{{scope.row.shop}}   设备收回</el-button>
-          </template>
-        </el-table-column>
-        <el-table-column
-            prop="id"
-            label="操作"
-        >
-          <template slot-scope="scope">
-            <el-button type="text" @click="goPage(scope.row)">记录</el-button>
-          </template>
-        </el-table-column>
-      </el-table>
-      <br>
-      <el-pagination
-          background
-          :total="pageination.total"
-          :page-size="pageination.pageItem"
-          @current-change="pageChange"
-      ></el-pagination>
-    </div>
+                    <template slot-scope="scope">
+                        {{scope.row.UserName}}
+                        <!--<el-select v-model="scope.row.BindUserId" @change="getRowTop(scope.row)" filterable v-if="scope.row.BindUserId">-->
+                        <!--<el-option-->
+                        <!--v-for="item in panel.options"-->
+                        <!--:key="item.value"-->
+                        <!--:label="item.label"-->
+                        <!--:value="item.value">-->
+                        <!--</el-option>-->
+                        <!--</el-select>-->
 
-    <el-dialog :title="dialogTitle" :visible.sync="dialogMemberVisible" width="650px">
-      <div class="dialogContent">
-        <div class="">
-          <el-form ref="form" :model="form" label-width="160px">
-            <el-form-item label="编号">
-              <el-input v-model="form.phone"></el-input>
-            </el-form-item>
-            <el-form-item label="实体序列号">
-              <el-input v-model="form.name"></el-input>
-            </el-form-item>
-          </el-form>
+                        <!--<el-button @click="takeBack(scope.row)" type="danger" v-if="!scope.row.BindUserId">{{scope.row.UserName}} 设备收回</el-button>-->
+                    </template>
+                </el-table-column>
+                <el-table-column
+                        prop="Status"
+                        label="状态"
+                        align="center"
+                >
+                    <template slot-scope="scope">
+                        <!--1:启用  8:暂停  9:删除-->
+                        <span v-if="scope.row.Status == 1" style="color: #67c23a">已启用</span>
+                        <span v-if="scope.row.Status == 8" style="color: yellow">已暂停</span>
+                        <span v-if="scope.row.Status == 9" style="color: red">已删除</span>
+                    </template>
+                </el-table-column>
+                <el-table-column
+                        prop="id"
+                        label="操作"
+                >
+                    <template slot-scope="scope">
+                        <el-button type="text" @click="goPage(scope.row)">记录</el-button>
+                    </template>
+                </el-table-column>
+            </el-table>
+            <br>
+            <el-pagination
+                    background
+                    :total="pageination.total"
+                    :page-size="pageination.pageItem"
+                    @current-change="pageChange"
+            ></el-pagination>
         </div>
-      </div>
-      <div class="dialogFooter">
-        <el-button type="primary" size="small" v-if="form.btnType == 0" @click="confirmMember">确定</el-button>
-        <el-button type="primary" size="small" v-if="form.btnType == 1" @click="confirmEditMember">确定
-        </el-button>
-        <el-button size="small" @click="dialogMemberVisible = false">取消</el-button>
-      </div>
-    </el-dialog>
-  </div>
+
+        <el-dialog :title="dialogTitle" :visible.sync="dialogMemberVisible" width="650px">
+            <div class="dialogContent">
+                <div class="">
+                    <el-form ref="form" :model="form" label-width="160px">
+                        <el-form-item label="编号" :required="true">
+                            <el-input v-model="form.sn"></el-input>
+                        </el-form-item>
+                        <el-form-item label="实体编号">
+                            <el-input v-model="form.venueNo"></el-input>
+                        </el-form-item>
+                    </el-form>
+                </div>
+            </div>
+            <div class="dialogFooter">
+                <el-button type="primary" size="small" v-if="form.btnType == 0" @click="confirmMember">确定</el-button>
+                <el-button type="primary" size="small" v-if="form.btnType == 1" @click="confirmEditMember">确定
+                </el-button>
+                <el-button size="small" @click="dialogMemberVisible = false">取消</el-button>
+            </div>
+        </el-dialog>
+    </div>
 </template>
 
 <script>
-import Global from '../Global.js'
-import {
-  testTable,
-  testSelect, ShopManagerStatusEdit, ClassDetailOne
-} from "../api/getApiRes";
+    import Global from '../Global.js'
+    import {
+        testTable,
+        testSelect,
+        ShopManagerStatusEdit,
+        ClassDetailOne,
+        QueryHrSensors,
+        AddHrSensors,
+        HrSensorsStatusEdit,
+        EditHrSensors,
+        UnBindHrSensorsToUser,
+    } from "../api/getApiRes";
 
-let qs = require('qs');
-export default {
-  data() {
-    return {
-      dialogVisible: false,//其他dialog
-      dialogMemberVisible: false,//新增心率设备dialog
-      dialogLesson: false,//课时调整
-      dialogGift: false,//赠送课时调整
-      dialogExpTime: false,//有效期调整
-      dialogLessonTable: false,//心率设备课程
-      dialogTitle: '新增心率设备',
-      dialogValue: [],
-      tableRadio: [],
-      // panel 配置项目
-      panel: {
-        name: '',
-        phone: '',
-        compname: '',
-        keyword: '',
-        USERCODE: '',
-        endType: '',
-        taskstatus: 99,
-        draw: 1,
-        start: 0,
-        recordsTotal: 0,
-        tableData: [],
-        allTableData: [],
-        limit: '10',
-        multipleSort: false,
-        loading: false,
-        fileList: [],
-        multipleSelection: [],
-        detectedmac: '',
-        options: [
-          {value: 99, label: '全部'},
-          {value: 1, label: '进行中'},
-          {value: 2, label: '已完成'},
-        ],
-        endTypeOptions: [
-          {value: 99, label: '全部'},
-          {value: 30, label: '近一个月'},
-          {value: 7, label: '近一周'},
-          {value: 1, label: '当日'},
-        ],
-        time1: globalBt(),
-      },
-      multipleSelection: [],
-      pageination: {
-        pageItem: 100,
-        pageoptions: pageOptions(),
-        total: 100,
-        pageIndex: 1,
-      },
-      form: {
-        name: '',
-        userCode: '',
-        shopId: '',
-        teacherId: 0,
-        memberType: 1,
-        lesson: 1,
-        gift: 1,
-        btnType: 0,//0新建,1编辑编辑
-        memo: '',
-        phone: '',
-        expTime: '',
-        dialogdata: [],//穿梭待选
-        dialogValue: [],//穿梭已选
-      },
-      memberTypes: [
-        {value: 1, label: '年心率设备'},
-        {value: 2, label: '充值心率设备'},
-      ],
-      tableData: []
-    }
-  },
-  mounted() {
-    this.getTableQuery();
-  },
-  methods: {
-    // 设备回收
-    takeBack(row){
-      let that = this;
-      this.$confirm('是否回收用户' + row.name + '的心率设备?', '回收操作', {
-        confirmButtonText: '确定',
-        cancelButtonText: '取消',
-        type: 'warning'
-      }).then(() => {
-        let param = {
-          token: localStorage.token,
-          Id: row.Id,
-          status: 0,
-        };
-        let postdata = qs.stringify(param);
-        testTable(postdata).then(res => {
-          let json = res;
-          if (json.Code == 0) {
-            that.$message({
-              showClose: true,
-              message: row.name + '回收成功!',
-              type: 'success'
-            });
-            // table 重载
-            that.getTableQuery();
-          } else {
-            that.$message.error(json.Memo);
-          }
-        })
-      }).catch(() => {
-        this.$message({
-          type: 'info',
-          message: '已取消回收'
-        });
-      });
-    },
-    goPage(row){
-      this.$router.push({path:'/heartLog',id:row.id});
-    },
-    // 编辑
-    editList() {
-      let that = this;
-      this.clearForm();
-      console.log(this.tableRadio);
-      if (this.tableRadio.length == 0) {
-        this.$message.error("请先选中一条记录");
-        return false
-      }
-      let row = this.tableRadio;
-      this.form.shopid = row.ShopId;
-      this.form.userId = row.Id;
-      this.form.name = row.Name;
-      this.form.userCode = row.Usercode;
-      this.form.password = '';
-      this.form.phone = row.Phone;
-      this.form.memo = row.Memo;
-      this.form.adminType = row.AdminType;
-      this.dialogVisible = true;
-      this.dialogTitle = '编辑心率设备'
-      this.form.btnState = 1;
-      this.dialogMemberVisible = true
-    },
-    clickChange(item) {
-      this.tableRadio = item
-    },
-    // 选择课程后,获取当前课程的建议上课人数和课时消耗
-    getRowTop(row) {
-      let that = this;
-      console.log(row);
-      let param = {
-        token: localStorage.token,
-        classId: row.ClassId,
-      };
-      let postdata = qs.stringify(param);
-      ClassDetailOne(postdata).then(res => {
-        let json = res;
-        if (json.Code == 0) {
-          row.TopLimit = json.Rs.TopLimit;
-          row.ConsumeHour = json.Rs.ConsumeHour;
-        } else {
-          that.$message.error(json.Memo);
-        }
-      })
-    },
-    // 编辑
-    editMember(row) {
-      this.clearForm();
-      this.form.name = row.Name;
-      this.form.phone = row.Phone;
-      this.form.shopId = row.ShopId;
-      this.form.teacherId = row.TeacherId;
-      this.form.btnType = 1;
-      this.dialogMemberVisible = true
-      this.dialogTitle = '编辑心率设备'
-    },
-    // 禁用
-    pauseRow(row) {
-      let that = this;
-      this.$confirm('是否禁用用户' + row.name + '?', '禁用操作', {
-        confirmButtonText: '确定',
-        cancelButtonText: '取消',
-        type: 'warning'
-      }).then(() => {
-        let param = {
-          token: localStorage.token,
-          Id: row.Id,
-          status: 0,
-        };
-        let postdata = qs.stringify(param);
-        testTable(postdata).then(res => {
-          let json = res;
-          if (json.Code == 0) {
-            that.$message({
-              showClose: true,
-              message: row.name + '禁用成功!',
-              type: 'success'
-            });
-            // table 重载
-            that.getTableQuery();
-          } else {
-            that.$message.error(json.Memo);
-          }
-        })
-      }).catch(() => {
-        this.$message({
-          type: 'info',
-          message: '已取消禁用'
-        });
-      });
-    },
-    // 启用
-    runRow(row) {
-      let that = this;
-      this.$confirm('是否启用用户' + row.name + '?', '启用操作', {
-        confirmButtonText: '确定',
-        cancelButtonText: '取消',
-        type: 'warning'
-      }).then(() => {
-        let param = {
-          token: localStorage.token,
-          Id: row.Id,
-          status: 1,
-        };
-        let postdata = qs.stringify(param);
-        testTable(postdata).then(res => {
-          let json = res;
-          if (json.Code == 0) {
-            that.$message({
-              showClose: true,
-              message: row.name + '启用成功!',
-              type: 'success'
-            });
-            // table 重载
-            that.getTableQuery();
-          } else {
-            that.$message.error(json.Memo);
-          }
-        })
-      }).catch(() => {
-        this.$message({
-          type: 'info',
-          message: '已取消启用'
-        });
-      });
-    },
-    // 关闭所有
-    allDialogClose() {
-      this.dialogVisible = false;
-      this.dialogGift = false;
-      this.dialogLesson = false;
-      this.dialogExpTime = false;
-      this.dialogLessonTable = false;
-    },
-    // 确认提交新增心率设备
-    confirmMember() {
-      let that = this;
-      // checkNum
-      if (!that.form.phone) {
-        this.$message.error('错了哦,编号不能为空');
-        return false
-      }
-      if (!that.form.name) {
-        this.$message.error('错了哦,实体序列号不能为空');
-        return false
-      }
+    let qs = require('qs');
+    export default {
+        data() {
+            return {
+                dialogVisible: false,//其他dialog
+                dialogMemberVisible: false,//新增心率设备dialog
+                dialogLesson: false,//课时调整
+                dialogGift: false,//赠送课时调整
+                dialogExpTime: false,//有效期调整
+                dialogLessonTable: false,//心率设备课程
+                dialogTitle: '新增心率设备',
+                dialogValue: [],
+                tableRadio: [],
+                // panel 配置项目
+                panel: {
+                    str: '',
+                    phone: '',
+                    compname: '',
+                    keyword: '',
+                    USERCODE: '',
+                    endType: '',
+                    taskstatus: 99,
+                    status: 1,
+                    draw: 1,
+                    start: 0,
+                    recordsTotal: 0,
+                    tableData: [],
+                    allTableData: [],
+                    limit: '10',
+                    multipleSort: false,
+                    loading: false,
+                    fileList: [],
+                    multipleSelection: [],
+                    detectedmac: '',
+                    statusOptions: [
+                        {value: 1, label: '启用'},
+                        {value: 8, label: '暂停'},
+                        {value: 9, label: '删除'},
+                    ], options: [
+                        {value: 99, label: '全部'},
+                        {value: 1, label: '进行中'},
+                        {value: 2, label: '已完成'},
+                    ],
+                    endTypeOptions: [
+                        {value: 99, label: '全部'},
+                        {value: 30, label: '近一个月'},
+                        {value: 7, label: '近一周'},
+                        {value: 1, label: '当日'},
+                    ],
+                    time1: globalBt(),
+                },
+                multipleSelection: [],
+                pageination: {
+                    pageItem: 100,
+                    pageoptions: pageOptions(),
+                    total: 100,
+                    pageIndex: 1,
+                },
+                form: {
+                    name: '',
+                    userCode: '',
+                    sn: '',
+                    venueNo: '',
+                    shopId: '',
+                    teacherId: 0,
+                    memberType: 1,
+                    lesson: 1,
+                    gift: 1,
+                    btnType: 0,//0新建,1编辑编辑
+                    memo: '',
+                    phone: '',
+                    expTime: '',
+                    dialogdata: [],//穿梭待选
+                    dialogValue: [],//穿梭已选
+                },
+                memberTypes: [
+                    {value: 1, label: '年心率设备'},
+                    {value: 2, label: '充值心率设备'},
+                ],
+                tableData: []
+            }
+        },
+        mounted() {
+            this.getTableQuery();
+        },
+        methods: {
+            // 设备回收
+            takeBack(row) {
+                let that = this;
+                this.$confirm('是否回收用户' + row.name + '的心率设备?', '回收操作', {
+                    confirmButtonText: '确定',
+                    cancelButtonText: '取消',
+                    type: 'warning'
+                }).then(() => {
+                    let param = {
+                        token: localStorage.token,
+                        Id: row.Id,
+                        status: 0,
+                    };
+                    let postdata = qs.stringify(param);
+                    UnBindHrSensorsToUser(postdata).then(res => {
+                        let json = res;
+                        if (json.Code == 0) {
+                            that.$message({
+                                showClose: true,
+                                message: row.name + '回收成功!',
+                                type: 'success'
+                            });
+                            // table 重载
+                            that.getTableQuery();
+                        } else {
+                            that.$message.error(json.Memo);
+                        }
+                    })
+                }).catch(() => {
+                    this.$message({
+                        type: 'info',
+                        message: '已取消回收'
+                    });
+                });
+            },
+            goPage(row) {
+                // 查看绑定记录
+                this.$router.push({path: '/bindRecord', id: row.id});
+            },
+            // 编辑
+            editList() {
+                let that = this;
+                this.clearForm();
+                console.log(this.tableRadio);
+                if (this.tableRadio.length == 0) {
+                    this.$message.error("请先选中一条记录");
+                    return false
+                }
+                let row = this.tableRadio;
+                this.form.shopid = row.ShopId;
+                this.form.userId = row.Id;
+                this.form.name = row.Name;
+                this.form.userCode = row.Usercode;
+                this.form.password = '';
+                this.form.hrId = row.HrId;
+                this.form.sn = row.Sn;
+                this.form.venueNo = row.InVenueNo;
+                this.dialogVisible = true;
+                this.dialogTitle = '编辑心率设备';
+                this.form.btnType = 1;
+                this.dialogMemberVisible = true
+            },
+            clickChange(item) {
+                this.tableRadio = item
+            },
+            // 选择课程后,获取当前课程的建议上课人数和课时消耗
+            getRowTop(row) {
+                let that = this;
+                console.log(row);
+                let param = {
+                    token: localStorage.token,
+                    classId: row.ClassId,
+                };
+                let postdata = qs.stringify(param);
+                ClassDetailOne(postdata).then(res => {
+                    let json = res;
+                    if (json.Code == 0) {
+                        row.TopLimit = json.Rs.TopLimit;
+                        row.ConsumeHour = json.Rs.ConsumeHour;
+                    } else {
+                        that.$message.error(json.Memo);
+                    }
+                })
+            },
+            // 编辑
+            editMember(row) {
+                this.clearForm();
+                this.form.name = row.Name;
+                this.form.phone = row.Phone;
+                this.form.shopId = row.ShopId;
+                this.form.teacherId = row.TeacherId;
+                this.form.btnType = 1;
+                this.dialogMemberVisible = true
+                this.dialogTitle = '编辑心率设备'
+            },
+            // 禁用
+            pauseRow(row) {
+                let that = this;
+                this.$confirm('是否禁用用户' + row.name + '?', '禁用操作', {
+                    confirmButtonText: '确定',
+                    cancelButtonText: '取消',
+                    type: 'warning'
+                }).then(() => {
+                    let param = {
+                        token: localStorage.token,
+                        Id: row.Id,
+                        status: 0,
+                    };
+                    let postdata = qs.stringify(param);
+                    testTable(postdata).then(res => {
+                        let json = res;
+                        if (json.Code == 0) {
+                            that.$message({
+                                showClose: true,
+                                message: row.name + '禁用成功!',
+                                type: 'success'
+                            });
+                            // table 重载
+                            that.getTableQuery();
+                        } else {
+                            that.$message.error(json.Memo);
+                        }
+                    })
+                }).catch(() => {
+                    this.$message({
+                        type: 'info',
+                        message: '已取消禁用'
+                    });
+                });
+            },
+            // 启用
+            runRow(row) {
+                let that = this;
+                this.$confirm('是否启用用户' + row.name + '?', '启用操作', {
+                    confirmButtonText: '确定',
+                    cancelButtonText: '取消',
+                    type: 'warning'
+                }).then(() => {
+                    let param = {
+                        token: localStorage.token,
+                        Id: row.Id,
+                        status: 1,
+                    };
+                    let postdata = qs.stringify(param);
+                    testTable(postdata).then(res => {
+                        let json = res;
+                        if (json.Code == 0) {
+                            that.$message({
+                                showClose: true,
+                                message: row.name + '启用成功!',
+                                type: 'success'
+                            });
+                            // table 重载
+                            that.getTableQuery();
+                        } else {
+                            that.$message.error(json.Memo);
+                        }
+                    })
+                }).catch(() => {
+                    this.$message({
+                        type: 'info',
+                        message: '已取消启用'
+                    });
+                });
+            },
+            // 关闭所有
+            allDialogClose() {
+                this.dialogVisible = false;
+                this.dialogGift = false;
+                this.dialogLesson = false;
+                this.dialogExpTime = false;
+                this.dialogLessonTable = false;
+            },
+            // 确认提交新增心率设备
+            confirmMember() {
+                let that = this;
+                // checkNum
+                if (!that.form.sn) {
+                    this.$message.error('错了哦,编号不能为空');
+                    return false
+                }
+                if (that.form.sn.length > 20) {
+                    this.$message.error('错了哦,编号不能超过20个字符');
+                    return false
+                }
+                if (!that.form.venueNo) {
+                    this.$message.error('错了哦,实体序列号不能为空');
+                    return false
+                }
+                if (that.form.venueNo.length > 30) {
+                    this.$message.error('错了哦,实体序列号不能超过30个字符');
+                    return false
+                }
+
+                let param = {
+                    token: localStorage.token,
+                    shopId: localStorage.shopId,
+                    sn: that.form.sn,
+                    venueNo: that.form.venueNo,
+                };
+                let postdata = qs.stringify(param);
+                AddHrSensors(postdata).then(res => {
+                    let json = res;
+                    if (json.Code == 0) {
+                        // 关闭弹窗
+                        that.dialogMemberVisible = false;
+                        // 重载列表
+                        that.getTableQuery();
+                        that.$message({
+                            showClose: true,
+                            message: '心率设备添加成功!',
+                            type: 'success'
+                        });
+                    } else {
+                        that.$message.error(json.Memo);
+                    }
+                })
+            },
+            confirmEditMember() {
+                let that = this;
+                // checkNum
+                if (!that.form.sn) {
+                    this.$message.error('错了哦,编号不能为空');
+                    return false
+                }
+                if (that.form.sn.length > 20) {
+                    this.$message.error('错了哦,编号不能超过20个字符');
+                    return false
+                }
+                if (!that.form.venueNo) {
+                    this.$message.error('错了哦,实体序列号不能为空');
+                    return false
+                }
+                if (that.form.venueNo.length > 30) {
+                    this.$message.error('错了哦,实体序列号不能超过30个字符');
+                    return false
+                }
 
-      let param = {
-        token: localStorage.token,
-        shopId: localStorage.shopId,
-        name: that.form.name,
-        phone: that.form.phone,
-      };
-      let postdata = qs.stringify(param);
-      TeacherAdd(postdata).then(res => {
-        let json = res;
-        if (json.Code == 0) {
-          // 关闭弹窗
-          that.dialogMemberVisible = false;
-          // 重载列表
-          that.getTableQuery();
-          that.$message({
-            showClose: true,
-            message: '心率设备添加成功!',
-            type: 'success'
-          });
-        } else {
-          that.$message.error(json.Memo);
-        }
-      })
-    },
-    confirmEditMember() {
-      let that = this;
-      // checkNum
-      if (!that.form.phone) {
-        this.$message.error('错了哦,手机号不能为空');
-        return false
-      }
-      if (!globalCheckPhone(that.form.phone)) {
-        this.$message.error('错了哦,手机号格式不正确');
-        return false
-      }
-      if (!that.form.name) {
-        this.$message.error('错了哦,心率设备名不能为空');
-        return false
-      }
-      if (that.form.name.length > 8) {
-        this.$message.error('错了哦,心率设备名字数超过8个字');
-        return false
-      }
-      let param = {
-        token: localStorage.token,
-        shopId: localStorage.shopId,
-        teacherId: that.form.teacherId,
-        name: that.form.name,
-        phone: that.form.phone,
-      };
-      let postdata = qs.stringify(param);
-      TeacherEdit(postdata).then(res => {
-        let json = res;
-        if (json.Code == 0) {
-          // 关闭弹窗
-          that.dialogMemberVisible = false;
-          // 重载列表
-          that.getTableQuery();
-          that.$message({
-            showClose: true,
-            message: '心率设备信息编辑成功!',
-            type: 'success'
-          });
-        } else {
-          that.$message.error(json.Memo);
-        }
-      })
-    },
-    // 确认提交课时
-    confirmLesson() {
-      let that = this;
-      // checkNum
+                let param = {
+                    token: localStorage.token,
+                    shopId: localStorage.shopId,
+                    hrId: that.form.hrId,
+                    sn: that.form.sn,
+                    venueNo: that.form.venueNo,
+                };
+                let postdata = qs.stringify(param);
+                EditHrSensors(postdata).then(res => {
+                    let json = res;
+                    if (json.Code == 0) {
+                        // 关闭弹窗
+                        that.dialogMemberVisible = false;
+                        // 重载列表
+                        that.getTableQuery();
+                        that.$message({
+                            showClose: true,
+                            message: '心率设备信息编辑成功!',
+                            type: 'success'
+                        });
+                    } else {
+                        that.$message.error(json.Memo);
+                    }
+                })
+            },
+            // 确认提交课时
+            confirmLesson() {
+                let that = this;
+                // checkNum
 
-      let param = {
-        token: localStorage.token,
-        userCode: that.form.userCode,
-        lesson: that.form.lesson,
-      };
-      let postdata = qs.stringify(param);
-      testSelect(postdata).then(res => {
-        let json = res;
-        if (json.Code == 0) {
-          // 关闭弹窗
-          that.dialogVisible = false;
-          // 重载列表
-          that.getTableQuery();
-          that.$message({
-            showClose: true,
-            message: '课时调整成功!',
-            type: 'success'
-          });
-        } else {
-          that.$message.error(json.Memo);
-        }
-      })
-    },
-    // 新增心率设备
-    addMember() {
-      this.clearForm();
-      this.dialogMemberVisible = true
-      this.btnType = 0;
-      this.dialogTitle = '新增心率设备'
-    },
-    // 删除
-    delList() {
-      let that = this;
-      if (this.tableRadio.length == 0) {
-        this.$message.error("请先选中一条记录");
-        return false
-      }
-      let userId = this.tableRadio.Id;
+                let param = {
+                    token: localStorage.token,
+                    userCode: that.form.userCode,
+                    lesson: that.form.lesson,
+                };
+                let postdata = qs.stringify(param);
+                testSelect(postdata).then(res => {
+                    let json = res;
+                    if (json.Code == 0) {
+                        // 关闭弹窗
+                        that.dialogVisible = false;
+                        // 重载列表
+                        that.getTableQuery();
+                        that.$message({
+                            showClose: true,
+                            message: '课时调整成功!',
+                            type: 'success'
+                        });
+                    } else {
+                        that.$message.error(json.Memo);
+                    }
+                })
+            },
+            // 新增心率设备
+            addMember() {
+                this.clearForm();
+                this.dialogMemberVisible = true;
+                this.btnType = 0;
+                this.dialogTitle = '新增心率设备'
+            },
+            // 删除
+            delList() {
+                let that = this;
+                if (this.tableRadio.length == 0) {
+                    this.$message.error("请先选中一条记录");
+                    return false
+                }
+                let hrId = this.tableRadio.HrId;
 
-      let param = {
-        token: localStorage.token,
-        userId: userId,
-        status: 9,//0禁用1启用9删除
-      };
-      let postdata = qs.stringify(param);
+                let param = {
+                    token: localStorage.token,
+                    hrId: hrId,
+                    status: 9,//1启用,8:暂停,9删除
+                };
+                let postdata = qs.stringify(param);
 
-      this.$confirm('此操作将永久删除该心率设备, 是否继续?', '提示', {
-        confirmButtonText: '确定',
-        cancelButtonText: '取消',
-        type: 'warning'
-      }).then(() => {
-        ShopManagerStatusEdit(postdata).then(res => {
-          let json = res;
-          if (json.Code == 0) {
-            that.$message({
-              showClose: true,
-              message: '选中的心率设备已删除!',
-              type: 'success'
-            });
-            // 重载列表
-            that.getTableQuery();
-          } else {
-            that.$message.error(json.Memo);
-          }
-        });
-      }).catch(() => {
-        this.$message({
-          type: 'info',
-          message: '已取消删除'
-        });
-      });
-    },
+                this.$confirm('此操作将永久删除该心率设备, 是否继续?', '提示', {
+                    confirmButtonText: '确定',
+                    cancelButtonText: '取消',
+                    type: 'warning'
+                }).then(() => {
+                    HrSensorsStatusEdit(postdata).then(res => {
+                        let json = res;
+                        if (json.Code == 0) {
+                            that.$message({
+                                showClose: true,
+                                message: '选中的心率设备已删除!',
+                                type: 'success'
+                            });
+                            // 重载列表
+                            that.getTableQuery();
+                        } else {
+                            that.$message.error(json.Memo);
+                        }
+                    });
+                }).catch(() => {
+                    this.$message({
+                        type: 'info',
+                        message: '已取消删除'
+                    });
+                });
+            },
 
-    handleSelectionChange(val) {
-      this.multipleSelection = val;
-    },
-    // 查询按钮
-    query() {
-      this.getTableQuery();
-      this.$message.success('查询完毕');
-    },
-    clearForm() {
-      // clear
-      this.form.name = '';
-      this.form.phone = '';
-      this.form.userCode = '';
-      this.form.shopId = '';
-    },
-    // 页面数据查询
-    getTableQuery() {
-      let that = this;
-      that.loading = true;
-      let param = {
-        token: localStorage.token,
-        name: this.panel.name,//
-        phone: this.panel.phone,//
-      };
-      let postdata = qs.stringify(param);
-      testTable(postdata).then(res => {
-        let json = res;
-        if (json.Code == 0) {
-          that.loading = false;
-          if (json.Rs) {
-            that.allTableData = json.Rs;
-            that.recordsTotal = json.Rs.length;
-          } else {
-            that.allTableData = [];
-            that.recordsTotal = 0;
-          }
+            handleSelectionChange(val) {
+                this.multipleSelection = val;
+            },
+            // 查询按钮
+            query() {
+                this.getTableQuery();
+                this.$message.success('查询完毕');
+            },
+            clearForm() {
+                // clear
+                this.form.name = '';
+                this.form.phone = '';
+                this.form.userCode = '';
+                this.form.shopId = '';
+            },
+            // 页面数据查询
+            getTableQuery() {
+                let that = this;
+                that.loading = true;
+                let param = {
+                    token: localStorage.token,
+                    str: this.panel.str,//
+                    status: this.panel.status,//
+                    shopId: localStorage.shopId,//
+                };
+                let postdata = qs.stringify(param);
+                QueryHrSensors(postdata).then(res => {
+                    let json = res;
+                    if (json.Code == 0) {
+                        that.loading = false;
+                        if (json.Rs) {
+                            that.allTableData = json.Rs;
+                            that.recordsTotal = json.Rs.length;
+                        } else {
+                            that.allTableData = [];
+                            that.recordsTotal = 0;
+                        }
 
-          // 设置分页数据
-          that.setPaginations();
-        } else {
-          that.$message.error(json.Memo);
-        }
-      })
-    },
-    // 设置分页数据
-    setPaginations() {
-      // 分页属性
-      let that = this;
-      that.pageination.total = that.recordsTotal;
+                        // 设置分页数据
+                        that.setPaginations();
+                    } else {
+                        that.$message.error(json.Memo);
+                    }
+                })
+            },
+            // 设置分页数据
+            setPaginations() {
+                // 分页属性
+                let that = this;
+                that.pageination.total = that.recordsTotal;
 
-      // 默认分页
-      that.tableData = that.allTableData.filter((item, index) => {
-        return index < that.pageination.pageItem;
-      });
-    },
-    // 每页显示数量
-    handleSizeChange() {
-      let that = this;
-      that.tableData = that.allTableData.filter((item, index) => {
-        return index < that.pageination.pageItem;
-      });
-      that.draw = that.pageination.pageItem;
-      // that.getTableQuery();
-    },
-    // 翻页
-    pageChange(pageIndex) {
-      let that = this;
-      // 获取当前页
-      let index = that.pageination.pageItem * (pageIndex - 1);
-      // 数据总数
-      let nums = that.pageination.pageItem * pageIndex;
-      // 容器
-      let tables = [];
-      for (var i = index; i < nums; i++) {
-        if (that.allTableData[i]) {
-          tables.push(that.allTableData[i])
-        }
-        this.tableData = tables;
-      }
-      that.start = index * that.draw;
-      // that.getTableQuery();
-    },
-    // 自动排序
-    sortChange(params) {
-      console.log(params)
-    },
-  },
-}
+                // 默认分页
+                that.tableData = that.allTableData.filter((item, index) => {
+                    return index < that.pageination.pageItem;
+                });
+            },
+            // 每页显示数量
+            handleSizeChange() {
+                let that = this;
+                that.tableData = that.allTableData.filter((item, index) => {
+                    return index < that.pageination.pageItem;
+                });
+                that.draw = that.pageination.pageItem;
+                // that.getTableQuery();
+            },
+            // 翻页
+            pageChange(pageIndex) {
+                let that = this;
+                // 获取当前页
+                let index = that.pageination.pageItem * (pageIndex - 1);
+                // 数据总数
+                let nums = that.pageination.pageItem * pageIndex;
+                // 容器
+                let tables = [];
+                for (var i = index; i < nums; i++) {
+                    if (that.allTableData[i]) {
+                        tables.push(that.allTableData[i])
+                    }
+                    this.tableData = tables;
+                }
+                that.start = index * that.draw;
+                // that.getTableQuery();
+            },
+            // 自动排序
+            sortChange(params) {
+                console.log(params)
+            },
+        },
+    }
 </script>
 
 <style scoped>
-@import "../assets/css/panel.css";
+    @import "../assets/css/panel.css";
 
-.context {
-  height: 770px;
-  overflow-y: scroll;
+    .context {
+        height: 770px;
+        overflow-y: scroll;
 
-  display: block;
-  margin: 0 auto;
-  background-color: #fff !important;
-  padding: 30px;
-}
+        display: block;
+        margin: 0 auto;
+        background-color: #fff !important;
+        padding: 30px;
+    }
 
-.panel-body {
-  padding: 20px;
-  background: #F0F2F5;
-}
+    .panel-body {
+        padding: 20px;
+        background: #F0F2F5;
+    }
 
-.change {
-  width: 100%;
-  overflow: hidden;
-  display: block;
-  margin: 0 auto;
-  padding-top: 10px;
-  padding-bottom: 10px;
-}
+    .change {
+        width: 100%;
+        overflow: hidden;
+        display: block;
+        margin: 0 auto;
+        padding-top: 10px;
+        padding-bottom: 10px;
+    }
 
-.change button {
-  float: left;
-}
+    .change button {
+        float: left;
+    }
 
-.change button.pull-right {
-  float: right;
-}
+    .change button.pull-right {
+        float: right;
+    }
 
-.dialogTitle {
-  width: 100%;
-  overflow: hidden;
-  display: block;
-  margin: 0 auto;
-  color: #000000;
-  font-size: 18px;
-  text-align: center;
-}
+    .dialogTitle {
+        width: 100%;
+        overflow: hidden;
+        display: block;
+        margin: 0 auto;
+        color: #000000;
+        font-size: 18px;
+        text-align: center;
+    }
 
-.dialogTitle em {
-  float: none;
-  font-style: normal;
-  color: #3799FF;
-  margin: 0;
-}
+    .dialogTitle em {
+        float: none;
+        font-style: normal;
+        color: #3799FF;
+        margin: 0;
+    }
 
-/deep/ .el-transfer-panel__item .el-checkbox__input {
-  left: 40px;
-}
+    /deep/ .el-transfer-panel__item .el-checkbox__input {
+        left: 40px;
+    }
 
-.dialogFooter {
-  width: 90%;
-  overflow: hidden;
-  display: block;
-  margin: 0 auto;
-  margin-top: 10px;
-}
+    .dialogFooter {
+        width: 90%;
+        overflow: hidden;
+        display: block;
+        margin: 0 auto;
+        margin-top: 10px;
+    }
 
-.dialogFooter button {
-  float: right;
-  margin-left: 10px;
-}
+    .dialogFooter button {
+        float: right;
+        margin-left: 10px;
+    }
 
-.dialogContent {
-  width: 100%;
-  overflow: hidden;
-  display: block;
-  margin: 0 auto;
-}
+    .dialogContent {
+        width: 100%;
+        overflow: hidden;
+        display: block;
+        margin: 0 auto;
+    }
 
-.dialogContent .pull-left {
-  width: 30%;
-  float: left;
-}
+    .dialogContent .pull-left {
+        width: 30%;
+        float: left;
+    }
 
-.dialogContent .pull-right {
-  width: 70%;
-  float: right;
-}
+    .dialogContent .pull-right {
+        width: 70%;
+        float: right;
+    }
 </style>

+ 94 - 45
tv/.idea/workspace.xml

@@ -23,15 +23,19 @@
   </component>
   <component name="ChangeListManager">
     <list default="true" id="c813a37b-038b-4bb1-a925-c03a432a7638" name="Default Changelist" comment="">
-      <change afterPath="$PROJECT_DIR$/../pc/src/views/classInfoDetail.vue" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/../pc/src/views/classPrepare.vue" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/../pc/src/views/courseEdit.vue" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/../pc/src/views/courses.vue" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/../pc/src/views/bindRecord.vue" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/../pc/src/api/Navs.js" beforeDir="false" afterPath="$PROJECT_DIR$/../pc/src/api/Navs.js" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/../pc/src/api/getApiRes.js" beforeDir="false" afterPath="$PROJECT_DIR$/../pc/src/api/getApiRes.js" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/../pc/src/router/index.js" beforeDir="false" afterPath="$PROJECT_DIR$/../pc/src/router/index.js" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/../pc/src/views/Lesson.vue" beforeDir="false" afterPath="$PROJECT_DIR$/../pc/src/views/Lesson.vue" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/../pc/src/views/Main.vue" beforeDir="false" afterPath="$PROJECT_DIR$/../pc/src/views/Main.vue" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/../pc/src/views/courseEdit.vue" beforeDir="false" afterPath="$PROJECT_DIR$/../pc/src/views/courseEdit.vue" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/../pc/src/views/courses.vue" beforeDir="false" afterPath="$PROJECT_DIR$/../pc/src/views/courses.vue" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/../pc/src/views/finishDetail.vue" beforeDir="false" afterPath="$PROJECT_DIR$/../pc/src/views/finishDetail.vue" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/../pc/src/views/heartEquip.vue" beforeDir="false" afterPath="$PROJECT_DIR$/../pc/src/views/heartEquip.vue" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/views/Wait.vue" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/Wait.vue" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/vue.config.js" beforeDir="false" afterPath="$PROJECT_DIR$/vue.config.js" afterDir="false" />
     </list>
     <ignored path="$PROJECT_DIR$/.tmp/" />
     <ignored path="$PROJECT_DIR$/temp/" />
@@ -44,11 +48,11 @@
   </component>
   <component name="FileEditorManager">
     <leaf>
-      <file pinned="false" current-in-tab="true">
+      <file pinned="false" current-in-tab="false">
         <entry file="file://$PROJECT_DIR$/src/views/Rank.vue">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="253">
-              <caret line="17" lean-forward="true" selection-start-line="17" selection-end-line="17" />
+            <state relative-caret-position="190">
+              <caret line="69" column="30" selection-start-line="69" selection-start-column="30" selection-end-line="69" selection-end-column="30" />
               <folding>
                 <element signature="e#2820#2864#0" expanded="true" />
               </folding>
@@ -56,6 +60,36 @@
           </provider>
         </entry>
       </file>
+      <file pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/src/views/Main.vue">
+          <provider selected="true" editor-type-id="text-editor">
+            <state relative-caret-position="296">
+              <caret line="325" column="41" lean-forward="true" selection-start-line="325" selection-start-column="41" selection-end-line="325" selection-end-column="41" />
+              <folding>
+                <element signature="e#5168#5212#0" expanded="true" />
+              </folding>
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/vue.config.js">
+          <provider selected="true" editor-type-id="text-editor">
+            <state relative-caret-position="483">
+              <caret line="23" column="61" lean-forward="true" selection-start-line="23" selection-start-column="61" selection-end-line="23" selection-end-column="61" />
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file pinned="false" current-in-tab="true">
+        <entry file="file://$PROJECT_DIR$/src/views/Wait.vue">
+          <provider selected="true" editor-type-id="text-editor">
+            <state relative-caret-position="446">
+              <caret line="330" column="20" selection-start-line="330" selection-start-column="20" selection-end-line="330" selection-end-column="20" />
+            </state>
+          </provider>
+        </entry>
+      </file>
     </leaf>
   </component>
   <component name="FileTemplateManagerImpl">
@@ -70,8 +104,6 @@
   </component>
   <component name="FindInProjectRecents">
     <findStrings>
-      <find>border</find>
-      <find>centerLi</find>
       <find>.two</find>
       <find>students</find>
       <find>fly</find>
@@ -93,13 +125,15 @@
       <find>getClassStat</find>
       <find>UserListInfo</find>
       <find>pageStyle</find>
-      <find>rank</find>
       <find>fmt</find>
       <find>then</find>
       <find>fmtFloat</find>
       <find>eqSn</find>
       <find>ClassUserRank</find>
       <find>ClassStatQuery</find>
+      <find>ClassDetailQuery</find>
+      <find>rank</find>
+      <find>curgetClassStat</find>
     </findStrings>
     <replaceStrings>
       <replace>0.2rem</replace>
@@ -129,7 +163,6 @@
         <option value="$PROJECT_DIR$/src/App.vue" />
         <option value="$PROJECT_DIR$/src/components/Headside.vue" />
         <option value="$PROJECT_DIR$/src/views/gropePk.vue" />
-        <option value="$PROJECT_DIR$/vue.config.js" />
         <option value="$PROJECT_DIR$/src/views/Index.vue" />
         <option value="$PROJECT_DIR$/src/api/test.js" />
         <option value="$PROJECT_DIR$/src/Global.js" />
@@ -137,9 +170,10 @@
         <option value="$PROJECT_DIR$/src/router/index.js" />
         <option value="$PROJECT_DIR$/src/views/pk.vue" />
         <option value="$PROJECT_DIR$/src/assets/css/bg.css" />
+        <option value="$PROJECT_DIR$/src/views/Rank.vue" />
         <option value="$PROJECT_DIR$/src/views/Main.vue" />
+        <option value="$PROJECT_DIR$/vue.config.js" />
         <option value="$PROJECT_DIR$/src/views/Wait.vue" />
-        <option value="$PROJECT_DIR$/src/views/Rank.vue" />
       </list>
     </option>
   </component>
@@ -149,7 +183,7 @@
     <other-services-enabled>true</other-services-enabled>
     <auto-save>true</auto-save>
   </component>
-  <component name="ProjectFrameBounds">
+  <component name="ProjectFrameBounds" extendedState="7">
     <option name="x" value="-2568" />
     <option name="y" value="-8" />
     <option name="width" value="1296" />
@@ -300,7 +334,7 @@
       <workItem from="1605406240238" duration="51039000" />
       <workItem from="1605668164423" duration="15041000" />
       <workItem from="1605747566783" duration="13000" />
-      <workItem from="1605775278675" duration="15574000" />
+      <workItem from="1605775278675" duration="17943000" />
     </task>
     <task id="LOCAL-00001" summary="test web">
       <created>1605431368250</created>
@@ -372,23 +406,37 @@
       <option name="project" value="LOCAL" />
       <updated>1605855418790</updated>
     </task>
-    <option name="localTasksCounter" value="11" />
+    <task id="LOCAL-00011" summary="more and more">
+      <created>1605938844930</created>
+      <option name="number" value="00011" />
+      <option name="presentableId" value="LOCAL-00011" />
+      <option name="project" value="LOCAL" />
+      <updated>1605938844930</updated>
+    </task>
+    <task id="LOCAL-00012" summary="test">
+      <created>1605938984285</created>
+      <option name="number" value="00012" />
+      <option name="presentableId" value="LOCAL-00012" />
+      <option name="project" value="LOCAL" />
+      <updated>1605938984285</updated>
+    </task>
+    <option name="localTasksCounter" value="13" />
     <servers />
   </component>
   <component name="TimeTrackingManager">
-    <option name="totallyTimeSpent" value="245666000" />
+    <option name="totallyTimeSpent" value="248035000" />
   </component>
   <component name="ToolWindowManager">
-    <frame x="-2568" y="-8" width="1296" height="1395" extended-state="1" />
+    <frame x="-2568" y="-8" width="2576" height="1395" extended-state="7" />
     <editor active="true" />
     <layout>
-      <window_info active="true" content_ui="combo" id="Project" order="0" visible="true" weight="0.030944625" />
+      <window_info content_ui="combo" id="Project" order="0" visible="true" weight="0.14513557" />
       <window_info id="Structure" order="1" side_tool="true" weight="0.24973656" />
       <window_info id="Favorites" order="2" side_tool="true" weight="0.32982087" />
       <window_info id="npm" order="3" side_tool="true" />
       <window_info anchor="bottom" id="Message" order="0" />
       <window_info anchor="bottom" id="Find" order="1" weight="0.32687446" />
-      <window_info anchor="bottom" id="Run" order="2" weight="0.31086773" />
+      <window_info active="true" anchor="bottom" id="Run" order="2" visible="true" weight="0.31086773" />
       <window_info anchor="bottom" id="Debug" order="3" weight="0.21468298" />
       <window_info anchor="bottom" id="Cvs" order="4" weight="0.25" />
       <window_info anchor="bottom" id="Inspection" order="5" weight="0.4" />
@@ -457,7 +505,9 @@
     <MESSAGE value="del unuse" />
     <MESSAGE value="auto upload" />
     <MESSAGE value="1.原来的排名页面改为等待页面&#10;2.等待页面按照开课类型跳转不同的课程页面&#10;3.团课结束后跳转专属的排名页面&#10;4.排名页面的渲染和1分钟后跳入等待页面" />
-    <option name="LAST_COMMIT_MESSAGE" value="1.原来的排名页面改为等待页面&#10;2.等待页面按照开课类型跳转不同的课程页面&#10;3.团课结束后跳转专属的排名页面&#10;4.排名页面的渲染和1分钟后跳入等待页面" />
+    <MESSAGE value="more and more" />
+    <MESSAGE value="test" />
+    <option name="LAST_COMMIT_MESSAGE" value="test" />
   </component>
   <component name="WindowStateProjectService">
     <state x="-1830" y="274" width="1099" height="859" key="#com.intellij.execution.impl.EditConfigurationsDialog" timestamp="1604022799787">
@@ -613,13 +663,6 @@
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/vue.config.js">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="756">
-          <caret line="36" column="13" lean-forward="true" selection-start-line="36" selection-start-column="13" selection-end-line="36" selection-end-column="13" />
-        </state>
-      </provider>
-    </entry>
     <entry file="file://$PROJECT_DIR$/src/main.js">
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="294">
@@ -684,17 +727,6 @@
     <entry file="file://$PROJECT_DIR$/src/static/img/rank/recordIcon.svg">
       <provider selected="true" editor-type-id="images" />
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/views/Main.vue">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="863">
-          <caret line="352" column="66" lean-forward="true" selection-start-line="352" selection-start-column="27" selection-end-line="352" selection-end-column="66" />
-          <folding>
-            <element signature="e#5168#5212#0" expanded="true" />
-            <element signature="e#9545#10485#0" />
-          </folding>
-        </state>
-      </provider>
-    </entry>
     <entry file="file://$PROJECT_DIR$/src/api/getApiRes.js">
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="573">
@@ -712,22 +744,39 @@
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/views/Wait.vue">
+    <entry file="file://$PROJECT_DIR$/src/views/Rank.vue">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="190">
+          <caret line="69" column="30" selection-start-line="69" selection-start-column="30" selection-end-line="69" selection-end-column="30" />
+          <folding>
+            <element signature="e#2820#2864#0" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/vue.config.js">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="800">
-          <caret line="335" column="35" lean-forward="true" selection-start-line="335" selection-start-column="35" selection-end-line="335" selection-end-column="35" />
+        <state relative-caret-position="483">
+          <caret line="23" column="61" lean-forward="true" selection-start-line="23" selection-start-column="61" selection-end-line="23" selection-end-column="61" />
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/src/views/Rank.vue">
+    <entry file="file://$PROJECT_DIR$/src/views/Main.vue">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="253">
-          <caret line="17" lean-forward="true" selection-start-line="17" selection-end-line="17" />
+        <state relative-caret-position="296">
+          <caret line="325" column="41" lean-forward="true" selection-start-line="325" selection-start-column="41" selection-end-line="325" selection-end-column="41" />
           <folding>
-            <element signature="e#2820#2864#0" expanded="true" />
+            <element signature="e#5168#5212#0" expanded="true" />
           </folding>
         </state>
       </provider>
     </entry>
+    <entry file="file://$PROJECT_DIR$/src/views/Wait.vue">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="446">
+          <caret line="330" column="20" selection-start-line="330" selection-start-column="20" selection-end-line="330" selection-end-column="20" />
+        </state>
+      </provider>
+    </entry>
   </component>
 </project>

+ 2 - 0
tv/src/views/Wait.vue

@@ -322,6 +322,8 @@
                 getClassStat(postdata).then(res => {
                     let json = res;
                     if (json.Code == 0) {
+                        // 没开课
+                        if(!json.ClassOn)return false
                         // 上课了
                         // 1:团课
                         // 2:竞技课PK

+ 2 - 2
tv/vue.config.js

@@ -18,9 +18,9 @@ module.exports = {
     devServer: {
         proxy: {
             '/api': {
-                target: 'http://192.168.0.105:8080/',//小飞龙的
+                // target: 'http://192.168.0.105:8080/',//小飞龙的
                 // target: 'http://192.168.0.162:9000/',//PC的
-                // target: 'http://192.168.0.110:8080',//公司公用的
+                target: 'http://192.168.0.110:8080',//公司公用的
                 // target: 'http://192.168.0.243:9000/',//郑伟机器的
                 // target: ' http://192.168.0.222:9000/',//redmi的
                 changeOrigin: true,