Changpeng Duan 5 лет назад
Родитель
Сommit
2d3b4f127d

+ 0 - 1
pc/src/views/Member.vue

@@ -1094,7 +1094,6 @@
             confirmExpTime() {
                 let that = this;
                 // checkNum
-
                 let param = {
                     token: localStorage.token,
                     userId: that.form.userId,

+ 2 - 0
pc/src/views/courseEdit.vue

@@ -221,6 +221,7 @@
                 </div>
             </div>
             <div class="dialogFooter">
+                <el-button type="primary" size="small" :disabled="BtnConfirmMember" :loading="BtnConfirmMember" @click="confirmMember">确定</el-button>
                 <el-button size="small" @click="dialogVisible = false">取消</el-button>
             </div>
         </el-dialog>
@@ -233,6 +234,7 @@
                 </div>
             </div>
             <div class="dialogFooter">
+
                 <el-button size="small" @click="dialogTempVisible = false">取消</el-button>
             </div>
         </el-dialog>

+ 375 - 20
pc/src/views/tempUser.vue

@@ -66,18 +66,35 @@
                     </template>
                 </el-table-column>
                 <el-table-column
-                        prop="Name"
+                        prop="UserName"
                         label="会员名"
                         width="90"
                 >
                 </el-table-column>
                 <el-table-column
-                        prop="Phone"
-                        label="手机号"
+                        prop="StaticHr"
+                        label="静态心率"
                         width="110"
                         sortable
                 >
                 </el-table-column>
+                <el-table-column
+                        prop="Height"
+                        label="身高(CM)"
+                        width="110"
+                        sortable
+                >
+                </el-table-column>
+                <el-table-column
+                        prop="Weight"
+                        label="体重(KG)"
+                        width="110"
+                        sortable
+                >
+                    <template slot-scope="scope">
+                        <span>{{scope.row.Weight / 10}}</span>
+                    </template>
+                </el-table-column>
                 <el-table-column
                         prop="Sex"
                         label="类型"
@@ -99,14 +116,14 @@
                 >
                 </el-table-column>
                 <!--<el-table-column-->
-                        <!--prop="ClassInfo"-->
-                        <!--label="会员课程"-->
-                        <!--width="220px"-->
+                <!--prop="ClassInfo"-->
+                <!--label="会员课程"-->
+                <!--width="220px"-->
                 <!--&gt;-->
-                    <!--<template slot-scope="scope">-->
-                        <!--<span class="lessonSpan" :style="{background:lesson.ClassColor}"-->
-                              <!--v-for="lesson in scope.row.ClassInfo">{{ lesson.ClassName }}</span>-->
-                    <!--</template>-->
+                <!--<template slot-scope="scope">-->
+                <!--<span class="lessonSpan" :style="{background:lesson.ClassColor}"-->
+                <!--v-for="lesson in scope.row.ClassInfo">{{ lesson.ClassName }}</span>-->
+                <!--</template>-->
                 <!--</el-table-column>-->
                 <el-table-column
                         prop="UserInfo.Memo"
@@ -124,6 +141,17 @@
                         <span v-if="scope.row.Memo.length <= 6">{{ scope.row.Memo }}</span>
                     </template>
                 </el-table-column>
+                <el-table-column
+                        prop="UserInfo.Status"
+                        label="操作"
+                        width="160px"
+                >
+                    <template slot-scope="scope">
+                        <el-button class="btn" type="default" size="mini" @click="editMember(scope.row)"
+                                   v-if="userLevel != 4">编辑
+                        </el-button>
+                    </template>
+                </el-table-column>
             </el-table>
             <br>
             <el-pagination
@@ -133,18 +161,84 @@
                     @current-change="pageChange"
             ></el-pagination>
         </div>
+
+        <el-dialog :title="dialogTitle" :visible.sync="dialogMemberVisible"
+                   :width="form.btnType == 1 ?'650px':'650px'">
+            <div class="dialogContent">
+                <div :class="['pull-left',{'tabwild':form.btnType == 1}]">
+                    <el-form ref="form" :model="form" label-width="80px">
+                        <el-form-item label="会员名" :required="true">
+                            <el-input v-model="form.name"></el-input>
+                        </el-form-item>
+                        <el-form-item label="备注">
+                            <el-input v-model="form.memo"></el-input>
+                        </el-form-item>
+                        <el-form-item label="身高" :required="true">
+                            <el-input v-model="form.height" placeholder="cm" type="number"></el-input>
+                        </el-form-item>
+                        <el-form-item label="体重" :required="true">
+                            <el-input v-model="form.weight" placeholder="kg" type="number"></el-input>
+                        </el-form-item>
+                        <el-form-item label="静态心率" >
+                            <el-input v-model="form.staticHr" placeholder="请输入" type="number"></el-input>
+                        </el-form-item>
+                        <el-form-item label="性别" :required="true">
+                            <el-select v-model="form.sex " placeholder="">
+                                <el-option
+                                        v-for="item in sexOptions"
+                                        :key="item.value"
+                                        :label="item.label"
+                                        :value="item.value"
+                                ></el-option>
+                            </el-select>
+                        </el-form-item>
+                        <el-form-item label="头像" :required="true">
+                            <div class="upload">
+                                <el-upload
+                                        class="avatar-uploader"
+                                        :action=domain
+                                        :http-request=upqiniu
+                                        :show-file-list="false"
+                                        :before-upload="beforeUpload">
+                                    <!--<i v-else class="el-icon-plus avatar-uploader-icon"></i>-->
+                                </el-upload>
+                                <img v-if="imageUrl" :src="imageUrl" class="avatar">
+                                <ImgCutter v-on:cutDown="cutDown"></ImgCutter>
+                            </div>
+                        </el-form-item>
+                        <el-form-item label="出生年份" :required="true">
+                            <el-date-picker
+                                    v-model="form.birthday"
+                                    align="right"
+                                    type="date"
+                                    placeholder="选择日期"
+                            >
+                            </el-date-picker>
+                        </el-form-item>
+                    </el-form>
+                </div>
+            </div>
+            <div class="dialogFooter">
+                <el-button :disabled="addDisabled" :loading="addDisabled" 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 ImgCutter from 'vue-img-cutter'
-        import {
-            TmpUserQuery,
-            testTable,
-            testSelect
-        } from "../api/getApiRes";
+    import Global from '../Global.js'
+    import ImgCutter from 'vue-img-cutter'
+    import {
+        TmpUserQuery,
+        testTable,
+        testSelect
+    } from "../api/getApiRes";
 
     let qs = require('qs');
     export default {
@@ -158,8 +252,11 @@
                 tableRadio: [],
                 userLevel: localStorage.userLevel,
                 serachBtnStatus: false,
+                addDisabled: false,
                 start: 0,
                 draw: 1,
+                dialogTitle: '新增临时会员',
+                dialogMemberVisible: false,//新增会员dialog
                 sexOptions: [
                     {value: 1, label: '男'},//性别 1:男, 2:女
                     {value: 2, label: '女'},
@@ -196,6 +293,31 @@
                     total: 100,
                     pageIndex: 1,
                 },
+                form: {
+                    phone: '',
+                    name: '',
+                    userCode: '',
+                    shopId: '',
+                    Id: '',
+                    userId: '',
+                    height: '',
+                    weight: '',
+                    staticHr: '',
+                    head: '',
+                    birthday: '',
+                    sex: 1,
+                    vipType: 1,
+                    normalhour: 0,
+                    newnormalhour: 0,
+                    gifthour: 0,
+                    newgifthour: 0,
+                    btnType: 0,//0新建,1编辑编辑
+                    memo: '',
+                    expTime: '',
+                    classlist: [],
+                    dialogdata: [],//穿梭待选
+                    dialogValue: [],//穿梭已选
+                },
             }
         },
         mounted() {
@@ -211,15 +333,230 @@
             },
         },
         methods: {
-            addMember(){
+            addMember() {
+                this.clearForm();
+                this.dialogMemberVisible = true;
+                this.btnType = 0;
+                this.form.btnType = 0;
+                this.dialogTitle = '新增临时会员'
+            },
+            editMember() {
 
             },
-            delList(){
+            delList() {
 
             },
             clickChange(item) {
                 this.tableRadio = item
             },
+            // 确认提交新增会员
+            confirmMember() {
+                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
+                }
+                if (that.form.memo) {
+                    if (that.form.memo.length > 200) {
+                        this.$message.error('错了哦,备注字数超过200个字');
+                        return false
+                    }
+                }
+
+                if (!that.form.height) {
+                    this.$message.error('错了哦,身高不能为空');
+                    return false
+                }
+                if (!that.form.weight) {
+                    this.$message.error('错了哦,体重不能为空');
+                    return false
+                }
+                // if (!that.form.staticHr) {
+                //     this.$message.error('错了哦,静态心率不能为空');
+                //     return false
+                // }
+                if (!that.form.birthday) {
+                    this.$message.error('错了哦,出生年份不能为空');
+                    return false
+                }
+
+                // 课程添加使用字符串形式
+                let curClasslist = '';
+                if (that.form.classlist) {
+                    curClasslist = that.form.classlist.toString();
+                }
+
+                let param = {
+                    token: localStorage.token,
+                    shopId: localStorage.shopId,
+                    phone: that.form.phone,
+                    name: that.form.name,
+                    vipType: that.form.vipType,
+                    normalhour: that.form.normalhour,
+                    gifthour: that.form.gifthour,
+                    classlist: curClasslist,
+                    memo: that.form.memo,
+                    height: that.form.height,
+                    weight: that.form.weight,
+                    staticHr: that.form.staticHr,
+                    sex: that.form.sex,
+                    head: that.form.head,
+                    birthday: nonTfmtDatetoLength(that.form.birthday, 10),
+                };
+                let postdata = qs.stringify(param);
+                VipUserAdd(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 + '错误码:' + json.Code);
+                    }
+                })
+            },
+            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
+                }
+                if (that.form.memo) {
+                    if (that.form.memo.length > 200) {
+                        this.$message.error('错了哦,备注字数超过200个字');
+                        return false
+                    }
+                }
+
+                if (!that.form.height) {
+                    this.$message.error('错了哦,身高不能为空');
+                    return false
+                }
+                if (!that.form.weight) {
+                    this.$message.error('错了哦,体重不能为空');
+                    return false
+                }
+                // if (!that.form.staticHr) {
+                //     this.$message.error('错了哦,静态心率不能为空');
+                //     return false
+                // }
+                if (!that.form.birthday) {
+                    this.$message.error('错了哦,出生年份不能为空');
+                    return false
+                }
+                let param = {
+                    token: localStorage.token,
+                    userId: that.form.Id,
+                    phone: that.form.phone,
+                    name: that.form.name,
+                    memo: that.form.memo,
+                    head: that.form.head,
+                    height: that.form.height,
+                    weight: that.form.weight,
+                    staticHr: that.form.staticHr,
+                    sex: that.form.sex,
+                    birthday: nonTfmtDatetoLength(that.form.birthday, 10),
+                    ubId: that.form.ubId
+                };
+                let postdata = qs.stringify(param);
+                console.log(param);
+                VipUserEdit(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 + '错误码:' + json.Code);
+                    }
+                })
+            },
+            // 验证文件合法性
+            beforeUpload(file) {
+                const isJPG = file.type === 'image/jpeg' || file.type === 'image/png';
+                const isLt2M = file.size / 1024 / 1024 < 70;
+                if (!isJPG) {
+                    this.$message.error('上传头像图片只能是 JPG 格式!')
+                }
+                if (!isLt2M) {
+                    this.$message.error('上传头像图片大小不能超过 70MB!')
+                }
+                return isJPG && isLt2M
+            },
+            cutDown(e){
+                console.log(e);
+                this.imageUrl = e.dataURL;
+                this.upqiniu(e);
+            },
+            // 上传文件到七牛云
+            upqiniu(req) {
+                let that = this;
+                const config = {
+                    headers: {'Content-Type': 'multipart/form-data'}
+                };
+                let filetype = '';
+                if (req.file.type === 'image/png') {
+                    filetype = 'png'
+                } else {
+                    filetype = 'jpg'
+                }
+                // 重命名要上传的文件
+                const keyname = 'GoAllOut' + new Date().valueOf() + Math.floor(Math.random() * 100) + '.' + filetype;
+                // 从后端获取上传凭证token
+                let param = {
+                    token: localStorage.token,
+                };
+                let postdata = qs.stringify(param);
+                this.axios.post(headapi + 'v1/QiNiu/GetSimpleQiNiuToken', postdata).then(res => {
+                    const formdata = new FormData();
+                    formdata.append('file', req.file);
+                    formdata.append('token', res.data.QiNinToken);
+                    formdata.append('key', keyname);
+                    // 获取到凭证之后再将文件上传到七牛云空间
+                    this.axios.post(this.domain, formdata, config).then(res => {
+                        this.imageUrl = 'http://' + this.qiniuaddr + '/' + res.data.key;
+                        this.form.head = 'http://' + this.qiniuaddr + '/' + keyname;
+                    })
+                })
+            },
             // 查询按钮
             query() {
                 let that = this;
@@ -329,9 +666,11 @@
             },
             //            过滤时间
             filterFmtDate(value, row, column) {
-                let that = this;
                 return nonTfmtDatetoLength(column, 11);
             },
+        },
+        components: {
+            ImgCutter
         }
     }
 </script>
@@ -371,4 +710,20 @@
     .change button.pull-right {
         float: right;
     }
+    .dialogContent {
+        width: 100%;
+        overflow: hidden;
+        display: block;
+        margin: 0 auto;
+    }
+
+    .dialogContent .pull-left {
+        width: 40%;
+        float: left;
+    }
+
+    .dialogContent .pull-right {
+        width: 60%;
+        float: right;
+    }
 </style>

+ 4 - 3
tv/src/Mock/index.js

@@ -136,6 +136,7 @@ let testStudent = function (num, team) {
             IsBreaking: 0,
             IsNewUser: 0,
             MaxHr: 80,
+            PowerPercent: "@integer(1, 100)",
             Name: "@cname",
             PkSucessnum: '1',//胜场数
             PkTotalnum: '1',//总场数
@@ -363,17 +364,17 @@ if (t == 0) {
     // 1:团课/私教
     // 2:竞技课2PK
     // 3:竞技课threepk
-    let LessonDp = 2;
+    let LessonDp = 3;
 
 
     if (LessonClass == 1) {
         // 上团课
         Mock.mock(curheadapi + 'ClassStatQuery', 'post', getClassStat(1, 1));
-        Mock.mock(curheadapi + 'UserListInfo', 'post', testStudent(6, 1));
+        Mock.mock(curheadapi + 'UserListInfo', 'post', testStudent(12, 1));
     } else if (LessonClass == 2) {
         // 上2队PK课
         Mock.mock(curheadapi + 'ClassStatQuery', 'post', getClassStat(1, 2));
-        Mock.mock(curheadapi + 'UserListInfo', 'post', testStudent(6, 2));
+        Mock.mock(curheadapi + 'UserListInfo', 'post', testStudent(12, 2));
     } else if (LessonClass == 3) {
         // 上3队PK课
         Mock.mock(curheadapi + 'ClassStatQuery', 'post', getClassStat(1, 3));

+ 33 - 0
tv/src/components/power.vue

@@ -0,0 +1,33 @@
+<template>
+    <div class="powerContainer" v-if="parseInt(curPower) > 0">
+        <img src="../static/img/power/power_full.svg" alt="" v-if="parseInt(curPower) >= 81">
+        <img src="../static/img/power/power_half.svg" alt="" v-if="parseInt(curPower) >= 41 && parseInt(curPower) < 81">
+        <img src="../static/img/power/power_low.svg" alt="" v-if="parseInt(curPower) <= 40">
+        <span>{{curPower}}%</span>
+    </div>
+</template>
+
+<script>
+    import '../libs/rem';
+    export default {
+        props: ['curPower'],
+    }
+</script>
+
+<style scoped>
+    .powerContainer {
+        float: right!important;
+        color: #fff;
+        font-size: 0.23rem;
+        width: 1.2rem!important;
+        overflow: hidden;
+    }
+    .powerContainer img {
+        width: 0.3rem;
+        line-height: 0.3rem;
+    }
+    .powerContainer span {
+        display: inline-block;
+        line-height: 0.2rem;
+    }
+</style>

+ 6 - 0
tv/src/static/img/power/power_full.svg

@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="27" height="18" viewBox="0 0 27 18">
+  <g id="组_176" data-name="组 176" transform="translate(-557 -105)">
+    <path id="路径_15" data-name="路径 15" d="M4.571,7.571V20.429h18V7.571ZM3.286,5H23.857a1.286,1.286,0,0,1,1.286,1.286V21.714A1.286,1.286,0,0,1,23.857,23H3.286A1.286,1.286,0,0,1,2,21.714V6.286A1.286,1.286,0,0,1,3.286,5Zm23.143,5.143H29v7.714H26.429Z" transform="translate(555 100)" fill="#fff"/>
+    <rect id="矩形_118" data-name="矩形 118" width="15" height="10" transform="translate(561 109)" fill="#fff"/>
+  </g>
+</svg>

+ 6 - 0
tv/src/static/img/power/power_half.svg

@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="27" height="18" viewBox="0 0 27 18">
+  <g id="组_177" data-name="组 177" transform="translate(-554 -108)">
+    <path id="路径_15" data-name="路径 15" d="M4.571,7.571V20.429h18V7.571ZM3.286,5H23.857a1.286,1.286,0,0,1,1.286,1.286V21.714A1.286,1.286,0,0,1,23.857,23H3.286A1.286,1.286,0,0,1,2,21.714V6.286A1.286,1.286,0,0,1,3.286,5Zm23.143,5.143H29v7.714H26.429Z" transform="translate(552 103)" fill="#fff"/>
+    <rect id="矩形_118" data-name="矩形 118" width="12" height="10" transform="translate(558 112)" fill="#fff"/>
+  </g>
+</svg>

+ 6 - 0
tv/src/static/img/power/power_low.svg

@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="27" height="18" viewBox="0 0 27 18">
+  <g id="组_178" data-name="组 178" transform="translate(-554 -108)">
+    <path id="路径_15" data-name="路径 15" d="M4.571,7.571V20.429h18V7.571ZM3.286,5H23.857a1.286,1.286,0,0,1,1.286,1.286V21.714A1.286,1.286,0,0,1,23.857,23H3.286A1.286,1.286,0,0,1,2,21.714V6.286A1.286,1.286,0,0,1,3.286,5Zm23.143,5.143H29v7.714H26.429Z" transform="translate(552 103)" fill="#fff"/>
+    <rect id="矩形_118" data-name="矩形 118" width="6" height="10" transform="translate(558 112)" fill="#fff"/>
+  </g>
+</svg>

+ 3 - 1
tv/src/views/Main.vue

@@ -16,6 +16,7 @@
                                     </div>
                                     <div class="nameMd">{{ s.Name }}</div>
                                     <div class="namert">
+                                        <power :cur-power="s.PowerPercent"></power>
                                           <!--<img src="../static/img/comm/isPrivate.svg" alt="" v-if="s.isPrivate" style="float: right;margin-right: 0.2rem;margin-top: 0.1rem">-->
                                     </div>
                                 </span>
@@ -92,6 +93,7 @@
     import newRecord from '@/components/newRecord'
     import newStudent from '@/components/newStudent'
     import levelIcon from '@/components/levelIcon'
+    import power from '@/components/power'
     import
     {
         getHello,
@@ -461,7 +463,7 @@
             }
         },
         components: {
-            Headside, levelIcon, newRecord, newStudent
+            Headside, levelIcon, newRecord, newStudent,power
         }
     }
 </script>

+ 4 - 1
tv/src/views/pk.vue

@@ -23,6 +23,7 @@
                                 </div>
                                 <div class="nameMd">{{ s.Name }}</div>
                                 <div class="namert">
+                                    <power :cur-power="s.PowerPercent"></power>
                                     <!--<img src="../static/img/comm/isPrivate.svg" alt="" v-if="s.isPrivate" style="float: right;margin-right: 0.2rem;margin-top: 0.1rem">-->
                                 </div>
                             </h5>
@@ -123,6 +124,7 @@
                                 </div>
                                 <div class="nameMd">{{ s.Name }}</div>
                                 <div class="namert">
+                                    <power :cur-power="s.PowerPercent"></power>
                                     <!--<img src="../static/img/comm/isPrivate.svg" alt="" v-if="s.isPrivate" style="float: right;margin-right: 0.2rem;margin-top: 0.1rem">-->
                                 </div>
                             </h5>
@@ -188,6 +190,7 @@
     import Headside from '@/components/Headside'
     import newRecord from '@/components/newRecord'
     import newStudent from '@/components/newStudent'
+    import power from '@/components/power'
     import {
         getHello,
         getClassStat,
@@ -638,7 +641,7 @@
             }
         },
         components: {
-            Headside, newRecord,newStudent
+            Headside, newRecord,newStudent,power
         }
     }
 </script>

+ 5 - 1
tv/src/views/threepk.vue

@@ -62,6 +62,7 @@
                                 </div>
                                 <div class="nameMd">{{ s.Name }}</div>
                                 <div class="namert">
+                                    <power :cur-power="s.PowerPercent"></power>
                                     <!--<img src="../static/img/comm/isPrivate.svg" alt="" v-if="s.isPrivate" style="float: right;margin-right: 0.2rem;margin-top: 0.1rem">-->
                                 </div>
                             </h5>
@@ -127,6 +128,7 @@
                                 </div>
                                 <div class="nameMd">{{ s.Name }}</div>
                                 <div class="namert">
+                                    <power :cur-power="s.PowerPercent"></power>
                                     <!--<img src="../static/img/comm/isPrivate.svg" alt="" v-if="s.isPrivate" style="float: right;margin-right: 0.2rem;margin-top: 0.1rem">-->
                                 </div>
                             </h5>
@@ -192,6 +194,7 @@
                                 </div>
                                 <div class="nameMd">{{ s.Name }}</div>
                                 <div class="namert">
+                                    <power :cur-power="s.PowerPercent"></power>
                                     <!--<img src="../static/img/comm/isPrivate.svg" alt="" v-if="s.isPrivate" style="float: right;margin-right: 0.2rem;margin-top: 0.1rem">-->
                                 </div>
                             </h5>
@@ -265,6 +268,7 @@
         getNewUser
     } from '@/api/getApiRes'
     import '../libs/rem';
+    import power from '@/components/power'
 
     let qs = require('qs');
 
@@ -736,7 +740,7 @@
         },
 
         components: {
-            Headside, newRecord,newStudent
+            Headside, newRecord,newStudent,power
         }
     }
 </script>

+ 4 - 3
tv/需求修改和debug.md

@@ -113,12 +113,13 @@ let url = '';
 3.关联手机号左侧选中的栏不对√  
 4.关联手机号增加用户名√  
 6.TV PK的间距调整回以前那种√ 
- 
+  8. app 预约界面的上边距问题√ 
+   9.心率带电量显示√ 
+  
  1.临时会员管理-添加/删除
  2.课程管理 单独添加,绑定,删除访客
  *downloadwgt下的还是旧的包是为什么?
  7.上课学生分组,改由后台进行第一次分组,每次改队上传后台处理
- 8. app 预约界面的上边距问题
- 9.心率带电量显示
+