ソースを参照

Signed-off-by: Changpeng Duan <838560574@qq.com>

Changpeng Duan 5 年 前
コミット
ed7e2c8bab
100 ファイル変更6546 行追加1358 行削除
  1. 2 1
      app/public/index.html
  2. 12 0
      app/src/App.vue
  3. 6 0
      app/src/api/getApiRes.js
  4. 703 584
      app/src/page/appoint.vue
  5. 506 498
      app/src/page/lesson.vue
  6. 36 17
      app/src/page/login.vue
  7. 2 0
      app/src/page/mainpage.vue
  8. 12 1
      app/src/page/mine.vue
  9. 92 14
      app/src/page/record.vue
  10. BIN
      genkey/GoAllOut.keystore
  11. 2 0
      genkey/readme.txt
  12. BIN
      hub/demo-0.0.1-SNAPSHOT.jar
  13. 2 0
      hub/start.bat
  14. BIN
      icon/144.png
  15. BIN
      icon/192.png
  16. BIN
      icon/72.png
  17. BIN
      icon/96.png
  18. BIN
      icon/启动页1242720.png
  19. BIN
      icon/启动页18821080.png
  20. BIN
      icon/启动页762480.png
  21. 12 10
      pc/public/index.html
  22. 2 2
      pc/src/api/Navs.js
  23. 1 1
      pc/src/components/preview.vue
  24. 10 0
      pc/src/views/Lesson.vue
  25. 2 1
      pc/src/views/LessonTable.vue
  26. 0 2
      pc/src/views/Login.vue
  27. 8 4
      pc/src/views/appoint.vue
  28. 190 85
      pc/src/views/heartLog.vue
  29. 6 3
      pc/src/views/region.vue
  30. 4 0
      tv/.idea/encodings.xml
  31. 6 0
      tv/.idea/misc.xml
  32. 543 22
      tv/.idea/workspace.xml
  33. 17 9
      tv/README.md
  34. 5 2
      tv/package.json
  35. 5 1
      tv/public/index.html
  36. 5 0
      tv/src/App.vue
  37. 1 1
      tv/src/Global.js
  38. 51 9
      tv/src/Mock/index.js
  39. 12 0
      tv/src/api/getApiRes.js
  40. 1217 0
      tv/src/assets/css/main.css
  41. 1197 0
      tv/src/assets/css/mainBk.css
  42. 1498 0
      tv/src/assets/css/mainBk2.css
  43. 93 83
      tv/src/components/Headside.vue
  44. 137 0
      tv/src/components/newRecord.vue
  45. 16 0
      tv/src/libs/rem.js
  46. 4 6
      tv/src/main.js
  47. 11 2
      tv/src/router/index.js
  48. 9 0
      tv/src/static/img/blue.svg
  49. BIN
      tv/src/static/img/ck.png
  50. 9 0
      tv/src/static/img/ck.svg
  51. BIN
      tv/src/static/img/fire.png
  52. BIN
      tv/src/static/img/foot.png
  53. 3 0
      tv/src/static/img/heart.svg
  54. BIN
      tv/src/static/img/kaluli.png
  55. 34 0
      tv/src/static/img/logo.svg
  56. BIN
      tv/src/static/img/mainBg.png
  57. BIN
      tv/src/static/img/newRecord/record.png
  58. BIN
      tv/src/static/img/newRecord/record_icon.png
  59. BIN
      tv/src/static/img/newRecord/record_title.png
  60. BIN
      tv/src/static/img/people.zip
  61. BIN
      tv/src/static/img/people/dcp.png
  62. BIN
      tv/src/static/img/people/gc.png
  63. BIN
      tv/src/static/img/people/jy.png
  64. BIN
      tv/src/static/img/people/jyq.png
  65. BIN
      tv/src/static/img/people/lhs.png
  66. BIN
      tv/src/static/img/people/lxl.png
  67. BIN
      tv/src/static/img/people/lyh.png
  68. BIN
      tv/src/static/img/people/slc.png
  69. BIN
      tv/src/static/img/people/sxf.png
  70. BIN
      tv/src/static/img/people/sxf2.png
  71. BIN
      tv/src/static/img/people/wfl.png
  72. BIN
      tv/src/static/img/people/wzx.png
  73. BIN
      tv/src/static/img/people/ydy.png
  74. BIN
      tv/src/static/img/people/zjh.png
  75. BIN
      tv/src/static/img/people/zr.png
  76. BIN
      tv/src/static/img/people/zw.png
  77. BIN
      tv/src/static/img/people/zy.png
  78. BIN
      tv/src/static/img/pingtai.png
  79. BIN
      tv/src/static/img/pk/bcube.png
  80. BIN
      tv/src/static/img/pk/bfight.png
  81. BIN
      tv/src/static/img/pk/blue.png
  82. BIN
      tv/src/static/img/pk/left_power.png
  83. BIN
      tv/src/static/img/pk/light.png
  84. BIN
      tv/src/static/img/pk/rcube.png
  85. BIN
      tv/src/static/img/pk/red.png
  86. BIN
      tv/src/static/img/pk/rfight.png
  87. BIN
      tv/src/static/img/pk/right_power.png
  88. BIN
      tv/src/static/img/pk/vs.png
  89. BIN
      tv/src/static/img/pkBg.png
  90. BIN
      tv/src/static/img/rank/boy.png
  91. BIN
      tv/src/static/img/rank/girl.png
  92. BIN
      tv/src/static/img/rankBg.png
  93. 3 0
      tv/src/static/img/s1.svg
  94. 14 0
      tv/src/static/img/s2.svg
  95. BIN
      tv/src/static/img/superfire.png
  96. 6 0
      tv/src/static/img/t1.svg
  97. 10 0
      tv/src/static/img/t2.svg
  98. 10 0
      tv/src/static/img/t3.svg
  99. 10 0
      tv/src/static/img/t4.svg
  100. 10 0
      tv/src/static/img/t5.svg

+ 2 - 1
app/public/index.html

@@ -3,7 +3,8 @@
 <head>
     <meta charset="utf-8">
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
-    <meta name="viewport" content="width=device-width,initial-scale=1.0">
+<!--    <meta name="viewport" content="width=device-width,initial-scale=1.0">-->
+    <meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" name="viewport"/>
     <link rel="icon" href="<%= BASE_URL %>favicon.ico">
     <title><%= htmlWebpackPlugin.options.title %></title>
     <link rel="stylesheet" href="https://cdn.bootcss.com/material-design-icons/3.0.1/iconfont/material-icons.css">

+ 12 - 0
app/src/App.vue

@@ -33,3 +33,15 @@
       float: left;
     }
 </style>
+<script>
+window.onload = function() {
+  document.addEventListener('touchstart', function(event) {
+    if (event.touches.length > 1) {
+      event.preventDefault()
+    }
+  })
+  document.addEventListener('gesturestart', function(event) {
+    event.preventDefault()
+  })
+}
+</script>

+ 6 - 0
app/src/api/getApiRes.js

@@ -151,4 +151,10 @@ export function VipUserCleCkSum(postdata) {
     let url = headapi + 'v1/Weixin/VipUserCleCkSum';
     return getApiBasic(url, postdata);
 }
+// 查询下周是否有课
+export function QueryNextWeek(postdata) {
+    let url = headapi + 'v1/Weixin/QueryNextWeek';
+    return getApiBasic(url, postdata);
+}
+
 

+ 703 - 584
app/src/page/appoint.vue

@@ -1,596 +1,715 @@
 <template>
-    <div class="pages">
-        <img src="../static/images/main/banner.png" height="121" width="414"/>
-        <mu-tabs :value.sync="active" color="#F2F2F2" indicator-color="#ffffff">
-            <mu-tab v-for="(day,i) in weeks">{{day.name}} <br> <em>{{day.data}}</em></mu-tab>
-        </mu-tabs>
-        <div class="context">
-                <span class="sum">
-                    当日预约名额剩余
-                    <em class="green" v-if="num > 0">{{num}}</em>
-                    <em class="red" v-else>{{num}}</em>
-                    人
-                </span>
-            <ul class="list">
-                <li v-for="l in list"
-                    v-show="l.WxVisible == 1"
-                    :class="[{'greenLi':l.remain > 0},{'redLi':l.Status == 1},{'yellowLi':l.remain == 0},{'whiteLi':l.WxOrder == 0}]">
-                    <div class="dotContainer">
-                        <!--                        正常-->
-                        <i class="dot" v-if="l.remain>0 && l.WxOrder != 0"></i>
-
-                        <i class="cubes" v-if="l.Status==1"></i>
-                        <!--                        已满-->
-                        <i class="tri" v-if="l.remain == 0 && l.remain == 0"></i>
-                        <!--                        不可约-->
-                        <i class="x" v-if="l.WxOrder==0"></i>
-                    </div>
-                    <div class="title">
-                        <h5><span class="lessons" :style="{ background:l.ClassColor }">{{l.ClassName}}</span></h5>
-                        <span>{{l.BeginStr}} - {{l.EndStr}}</span>
-                    </div>
-                    <div class="current">
-                        <h5>剩余
-                            <em class="green" v-if="l.remain > 0">{{l.remain}}</em>
-                            <em class="red" v-else>{{l.remain}}</em>
-                            人</h5>
-                        <span>总名额 {{l.OrderToplimit}} 人</span>
-                    </div>
-                    <mu-button class="appointBtn greenBtn" v-if="l.remain > 0 && l.OrderId == 0 && l.WxOrder != 0" @click="appointNow(l)">
-                        预约
-                    </mu-button>
-                    <mu-button class="appointBtn redBtn" v-if="l.remain == 0 && l.OrderId == 0" @click="isFulled">已满</mu-button>
-                    <mu-button class="appointBtn yellowBtn" v-if="l.OrderId != 0" @click="isAppointed(l)">已约</mu-button>
-                    <mu-button class="appointBtn disableBtn" v-if="l.WxOrder == 0" @click="isDisable">不可约</mu-button>
-                </li>
-                <div class="tips" v-if="list == ''">
-                    <p style="text-align: center">
-                        暂无可预约的课程
-                    </p>
-                </div>
-            </ul>
-            <mu-avatar color="rgb(231, 82, 150)" @click.native="goPage('lesson')">
-                <mu-icon value="reorder"></mu-icon>
-            </mu-avatar>
-        </div>
-        <bottomTab :curTab="thisTab"></bottomTab>
-        <div class="doalog">
-            <mu-dialog title="预约课程" width="600" max-width="80%" :esc-press-close="false"
-                       :overlay-close="false" :open.sync="openAlert">
-                <p>
-                    是否预约 课程:{{dialog.ClassName}} ,时间:{{dialog.BeginStr}} - {{dialog.EndStr}}
-                    <br>
-                </p>
-                <mu-button slot="actions" flat color="primary" @click="closeAlertDialog">取消</mu-button>
-                <mu-button slot="actions" flat color="primary" @click="confirmAppoint">确定</mu-button>
-            </mu-dialog>
+  <div class="pages">
+
+    <div class="as">
+      <img src="../static/images/main/banner.png" height="121" width="414"/>
+      <mu-tabs :value.sync="active" color="#F2F2F2" indicator-color="#ffffff">
+        <mu-tab v-for="(day,i) in weeks">{{ day.data }} <br> <em>{{ day.name }}</em></mu-tab>
+      </mu-tabs>
+      <span class="sum">
+        {{ today }} 预约名额剩余
+        <em class="green" v-if="num > 0">{{ num }}</em>
+        <em class="red" v-else>{{ num }}</em>
+        人
+    </span>
+    </div>
+    <div class="context">
+      <ul class="list">
+        <li v-for="l in list"
+            v-show="l.WxVisible == 1"
+            :class="[{'greenLi':l.remain > 0},{'redLi':l.Status == 1},{'yellowLi':l.remain == 0},{'whiteLi':l.WxOrder == 0}]">
+          <div class="dotContainer">
+            <!--                        正常-->
+            <i class="dot" v-if="l.remain>0 && l.WxOrder != 0"></i>
+
+            <i class="cubes" v-if="l.Status==1"></i>
+            <!--                        已满-->
+            <i class="tri" v-if="l.remain == 0 && l.remain == 0"></i>
+            <!--                        不可约-->
+            <i class="x" v-if="l.WxOrder==0"></i>
+          </div>
+          <div class="title">
+            <h5><span class="lessons" :style="{ background:l.ClassColor }">{{ l.ClassName }}</span></h5>
+            <span>{{ l.BeginStr }} - {{ l.EndStr }}</span>
+          </div>
+          <div class="current">
+            <h5>剩余
+              <em class="green" v-if="l.remain > 0">{{ l.remain }}</em>
+              <em class="red" v-else>{{ l.remain }}</em>
+              人</h5>
+            <span>总名额 {{ l.OrderToplimit }} 人</span>
+          </div>
+          <mu-button class="appointBtn greenBtn" v-if="l.remain > 0 && l.OrderId == 0 && l.WxOrder != 0"
+                     @click="appointNow(l)">
+            预约
+          </mu-button>
+          <mu-button class="appointBtn redBtn" v-if="l.remain == 0 && l.OrderId == 0" @click="isFulled">已满</mu-button>
+          <mu-button class="appointBtn yellowBtn" v-if="l.OrderId != 0" @click="isAppointed(l)">已约</mu-button>
+          <mu-button class="appointBtn disableBtn" v-if="l.WxOrder == 0" @click="isDisable">不可约</mu-button>
+        </li>
+        <div class="tips" v-if="list == ''">
+          <p style="text-align: center">
+            暂无可预约的课程
+          </p>
         </div>
-      <alert ref="alertPart"></alert>
+      </ul>
+      <mu-avatar color="rgb(231, 82, 150)" @click.native="goPage('lesson')">
+        <mu-icon value="reorder"></mu-icon>
+      </mu-avatar>
     </div>
+    <bottomTab :curTab="thisTab"></bottomTab>
+    <div class="doalog">
+      <mu-dialog title="预约课程" width="600" max-width="80%" :esc-press-close="false"
+                 :overlay-close="false" :open.sync="openAlert">
+        <p>
+          是否预约 课程:{{ dialog.ClassName }} ,时间:{{ dialog.BeginStr }} - {{ dialog.EndStr }}
+          <br>
+        </p>
+        <mu-button slot="actions" flat color="primary" @click="closeAlertDialog">取消</mu-button>
+        <mu-button slot="actions" flat color="primary" @click="confirmAppoint">确定</mu-button>
+      </mu-dialog>
+    </div>
+    <alert ref="alertPart"></alert>
+  </div>
 </template>
 
 <script>
-    import axios from 'axios';
-    import bottomTab from '../components/bottomTab'
-    import {
-        CanOrderSchoolTimeTableListQuery,
-        OderAddByVipUser,
-        OderCancelByVipUser,
-        testSelect,
-        testTable,
-    } from '../api/getApiRes.js'
-
-    import alert from '../components/alert'
-    let qs = require('qs');
-    import Global from '../Global.js'
-
-    export default {
-        data() {
-            return {
-                num: 0,
-                thisTab: '预约课程',
-                active: 0,
-                sum: 0,
-                openAlert: false,
-                list: [],
-                weeks: [],
-                dialog: {
-                    id: '',
-                    name: '',
-                    timeLong: '',
-                },
-            }
-        },
-        mounted() {
-            this.getFurtherDays();
-        },
-        methods: {
-          alertInfo(info){
-            this.$refs.alertPart.openSimpleDialog(info);
-          },
-            goPage(url) {
-                this.$router.push({path: '/' + url, query: {
-                        shopId: this.$route.query.shopId
-                    }});
-            },
-            // 获取未来7天的
-            getFurtherDays() {
-                let now = new Date();
-                let nowTime = now.getTime();
-                let oneDayTime = 24 * 60 * 60 * 1000;
-                let days = '';
-                let item = [];
-                let month = 0;
-                let day = 0;
-                for (let i = 0; i < 7; i++) {
-                    days = new Date(nowTime + (i) * oneDayTime);//显示周日
-                    month = days.getMonth() + 1;
-                    day = days.getDate();
-                    month = month < 10 ? '0' + month : month;
-                    day = day < 10 ? '0' + day : day;
-                    item = {
-                        name: this.numberToWeek(days.getDay()),
-                        data: days.getMonth() + 1 + '月' + days.getDate() + '日',
-                        orderDate: new Date().getFullYear() + '-' + month + '-' + day
-                    }
-                    this.weeks.push(item);
-                }
-                this.getList();
-            },
-            numberToWeek(val) {
-                switch (parseInt(val)) {
-                    case 1:
-                        return '星期一'
-                        break;
-                    case 2:
-                        return '星期二'
-                        break;
-                    case 3:
-                        return '星期三'
-                        break;
-                    case 4:
-                        return '星期四'
-                        break;
-                    case 5:
-                        return '星期五'
-                        break;
-                    case 6:
-                        return '星期六'
-                        break;
-                    case 0:
-                        return '星期天'
-                        break;
-                }
-            },
-            confirmAppoint() {
-                let that = this;
-                let param = {
-                    token: localStorage.token,
-                    stdId: that.dialog.StdId
-                };
-                let postdata = qs.stringify(param);
-                OderAddByVipUser(postdata).then(res => {
-                    let json = res;
-                    if (json.Code == 0) {
-                        that.alertInfo('已成功预约', 'success');
-                        that.openAlert = false;
-                        that.getList();
-                    } else {
-                        that.alertInfo(json.Memo + ',错误码:' + json.Code);
-                    }
-                })
-            },
-            closeAlertDialog() {
-                this.openAlert = false;
-            },
-            appointNow(row) {
-                this.dialog = row;
-                this.openAlert = true;
-            },
-            isFulled() {
-                let that = this;
-                that.$alert('当前课程已满,请选择其他课程或其他时间预约', '提示', {
-                    okLabel: '知道了'
-                }).then(() => {
-                    that.getList();
-                });
-            },
-            isAppointed(row) {
-                let that = this;
-                this.$confirm('是否取消前课程预约?', '提示', {
-                    type: 'warning'
-                }).then(({result}) => {
-                    if (result) {
-                        let param = {
-                            token: localStorage.token,
-                            orderId: row.OrderId,
-                        };
-                        let postdata = qs.stringify(param);
-                        OderCancelByVipUser(postdata).then(res => {
-                            let json = res;
-                            if (json.Code == 0) {
-                                that.alertInfo('当前课程已取消预约', 'success');
-                                that.getList();
-                            } else {
-                                that.alertInfo(json.Memo + ',错误码:' + json.Code);
-                            }
-                        })
-                    } else {
-                        this.alertInfo('点击了取消');
-                    }
-                });
-            },
-            isDisable(row) {
-                this.alertInfo('课程不可预约,请选择其他课程或其他时间预约', 'info');
-            },
-            getList() {
-                let that = this;
-                let curDay = this.weeks[this.active].orderDate;
-                let param = {
-                    token: localStorage.token,
-                    orderDate: curDay,
-                    shopId: this.$route.query.shopId,
-                };
-                let postdata = qs.stringify(param);
-                CanOrderSchoolTimeTableListQuery(postdata).then(res => {
-                    let json = res;
-                    if (json.Code == 0) {
-                        that.list = json.Rs;
-                        that.num = 0;
-                        if (that.list) {
-                            // 计算剩余
-                            that.list.map(function (item) {
-                                item.remain = parseInt(item.OrderToplimit) - parseInt(item.OrderCount);
-                                that.num = that.num + item.remain
-                            })
-                        }
-                    } else {
-                        that.alertInfo(json.Memo + ',错误码:' + json.Code);
-                    }
-                })
-            },
-        },
-        beforeRouteEnter(to, from, next) {
-            next(vm => {
-                //因为当钩子执行前,组件实例还没被创建
-                // vm 就是当前组件的实例相当于上面的 this,所以在 next 方法里你就可以把 vm 当 this 来用了。
-                if (to.name == 'appoint') {
-                    vm.getList();
-                }
-            });
-        },
-        watch: {
-            'active'() {
-                this.getList();
+import axios from 'axios';
+import bottomTab from '../components/bottomTab'
+import {
+  CanOrderSchoolTimeTableListQuery,
+  OderAddByVipUser,
+  OderCancelByVipUser,
+  QueryNextWeek,
+  testSelect,
+  testTable,
+} from '../api/getApiRes.js'
+
+import alert from '../components/alert'
+
+let qs = require('qs');
+import Global from '../Global.js'
+
+export default {
+  data() {
+    return {
+      num: 0,
+      thisTab: '预约课程',
+      active: 0,
+      sum: 0,
+      HaveDays: 0,
+      openAlert: false,
+      list: [],
+      weeks: [],
+      today: '',
+      dialog: {
+        id: '',
+        name: '',
+        timeLong: '',
+      },
+    }
+  },
+  mounted() {
+    this.getQueryNextWeek();
+    // this.alertInfo(document.body.clientWidth);
+    // this.alertInfo( window.screen.height);
+  },
+  methods: {
+    getQueryNextWeek(){
+      let that = this;
+      let param = {
+      token: localStorage.token,
+        shopId : this.$route.query.shopId,
+      };
+      let postdata = qs.stringify(param);
+      QueryNextWeek(postdata).then(res => {
+          let json = res;
+          if (json.Code == 0) {
+              this.HaveDays = json.Rs;
+            this.getFurtherDays(this.HaveDays);
+          } else {
+              that.$message.error(json.Memo);
+          }
+      })
+    },
+    alertInfo(info) {
+      this.$refs.alertPart.openSimpleDialog(info);
+    },
+    goPage(url) {
+      this.$router.push({
+        path: '/' + url, query: {
+          shopId: this.$route.query.shopId
+        }
+      });
+    },
+    // 计算距离11/8号还有集体那
+    calcHaveDays(sDate1) {
+      var date2 = new Date();
+      var date1 = new Date(Date.parse(sDate1.replace(/-/g, "/")));
+      var iDays = parseInt(Math.abs(date2.getTime() - date1.getTime()) / 1000 / 60 / 60 / 24) + 2;
+      return iDays;
+
+    },
+    // 获取未来7天的
+    getFurtherDays(HaveDays) {
+      let now = new Date();
+      let nowTime = now.getTime();
+      let oneDayTime = 24 * 60 * 60 * 1000;
+      let days = '';
+      let item = [];
+      let month = 0;
+      let day = 0;
+      this.weeks = [];
+      for (let i = 0; i < HaveDays; i++) {
+        days = new Date(nowTime + (i) * oneDayTime);//显示周日
+        month = days.getMonth() + 1;
+        day = days.getDate();
+        month = month < 10 ? '0' + month : month;
+        day = day < 10 ? '0' + day : day;
+        item = {
+          name: this.numberToWeek(days.getDay()),
+          data: days.getMonth() + 1 + '月' + days.getDate() + '日',
+          orderDate: new Date().getFullYear() + '-' + month + '-' + day
+        }
+        this.weeks.push(item);
+      }
+      this.today = this.weeks[0].name;
+      this.getList();
+    },
+    numberToWeek(val) {
+      switch (parseInt(val)) {
+        case 1:
+          return '星期一'
+          break;
+        case 2:
+          return '星期二'
+          break;
+        case 3:
+          return '星期三'
+          break;
+        case 4:
+          return '星期四'
+          break;
+        case 5:
+          return '星期五'
+          break;
+        case 6:
+          return '星期六'
+          break;
+        case 0:
+          return '星期天'
+          break;
+      }
+    },
+    confirmAppoint() {
+      let that = this;
+      let param = {
+        token: localStorage.token,
+        stdId: that.dialog.StdId
+      };
+      let postdata = qs.stringify(param);
+      OderAddByVipUser(postdata).then(res => {
+        let json = res;
+        if (json.Code == 0) {
+          that.alertInfo('已成功预约', 'success');
+          that.openAlert = false;
+          that.getList();
+        } else {
+          that.alertInfo(json.Memo + ',错误码:' + json.Code);
+        }
+      })
+    },
+    closeAlertDialog() {
+      this.openAlert = false;
+    },
+    appointNow(row) {
+      this.dialog = row;
+      this.openAlert = true;
+    },
+    isFulled() {
+      let that = this;
+      that.$alert('当前课程已满,请选择其他课程或其他时间预约', '提示', {
+        okLabel: '知道了'
+      }).then(() => {
+        that.getList();
+      });
+    },
+    isAppointed(row) {
+      let that = this;
+      this.$confirm('是否取消前课程预约?', '提示', {
+        type: 'warning'
+      }).then(({result}) => {
+        if (result) {
+          let param = {
+            token: localStorage.token,
+            orderId: row.OrderId,
+          };
+          let postdata = qs.stringify(param);
+          OderCancelByVipUser(postdata).then(res => {
+            let json = res;
+            if (json.Code == 0) {
+              that.alertInfo('当前课程已取消预约', 'success');
+              that.getList();
+            } else {
+              that.alertInfo(json.Memo + ',错误码:' + json.Code);
             }
-        },
-        components: {
-            bottomTab,alert
+          })
+        } else {
+          this.alertInfo('点击了取消');
         }
-    }
+      });
+    },
+    isDisable(row) {
+      this.alertInfo('课程不可预约,请选择其他课程或其他时间预约', 'info');
+    },
+    getList() {
+      let that = this;
+      this.today = this.weeks[this.active].name;
+      let curDay = this.weeks[this.active].orderDate;
+      let param = {
+        token: localStorage.token,
+        orderDate: curDay,
+        shopId: this.$route.query.shopId,
+      };
+      let postdata = qs.stringify(param);
+      CanOrderSchoolTimeTableListQuery(postdata).then(res => {
+        let json = res;
+        if (json.Code == 0) {
+          that.list = json.Rs;
+          that.num = 0;
+          if (that.list) {
+            // 计算剩余
+            that.list.map(function (item) {
+              item.remain = parseInt(item.OrderToplimit) - parseInt(item.OrderCount);
+              that.num = that.num + item.remain
+            })
+          }
+        } else {
+          that.alertInfo(json.Memo + ',错误码:' + json.Code);
+        }
+      })
+    },
+  },
+  beforeRouteEnter(to, from, next) {
+    next(vm => {
+      //因为当钩子执行前,组件实例还没被创建
+      // vm 就是当前组件的实例相当于上面的 this,所以在 next 方法里你就可以把 vm 当 this 来用了。
+      if (to.name == 'appoint') {
+        // vm.getList();
+        vm.getQueryNextWeek();
+      }
+    });
+  },
+  watch: {
+    'active'() {
+      this.getList();
+
+    }
+  },
+  components: {
+    bottomTab, alert
+  }
+}
 </script>
 
 <style scoped>
-    .pages {
-        overflow: hidden;
-        display: block;
-        margin: 0 auto;
-    }
-
-    /*mu-header*/
-    .mu-primary-color {
-        line-height: 60px;
-        height: 60px;
-        background: url("../static/images/comm/headerBg.png") top center no-repeat;
-        background-size: 100%;
-    }
-
-    /deep/ .mu-appbar-left {
-        padding-top: 15px;
-    }
-
-    /deep/ .material-icons {
-        color: #fff;
-    }
-
-    /deep/ .mu-appbar-title {
-        text-align: center;
-    }
-
-    /deep/ .mu-tabs {
-        display: flex;
-        overflow-x: scroll;
-        float: left;
-    }
-
-    /deep/ .mu-tab {
-        width: 85px;
-        min-width: 85px;
-        float: left;
-        height: 51px;
-        margin-right: 6px;
-    }
-
-    /*/deep/ .mu-tab:nth-child(5) {*/
-    /*    margin-right: 0px;*/
-    /*}*/
-
-    /deep/ .mu-tab-wrapper {
-        height: 51px;
-        background: #f4f4f4;
-        color: #363636;
-        box-shadow: 1px 0px 6px rgba(0, 0, 0, 0.16);
-        border-radius: 8px 8px 0px 0px;
-        font-size: 14px;
-    }
-
-    /deep/ .mu-tab-active .mu-tab-wrapper {
-        height: 56px;
-        border-radius: 8px 8px 0px 0px;
-        background: #ffffff;
-        box-shadow: 1px 0px 6px rgba(0, 0, 0, 0.16);
-        color: #000;
-    }
-
-    /deep/ .mu-tab-wrapper em {
-        font-size: 12px;
-    }
-
-    .sum {
-        width: 100%;
-        height: 55px;
-        line-height: 55px;
-        background: #fff;
-        font-family: "PingFang SC";
-        font-weight: 300;
-        font-size: 16px;
-        text-align: center;
-        color: #909090;
-        overflow: hidden;
-        display: block;
-        margin: 0 auto;
-    }
-
-    .green {
-        color: #37CB00;
-    }
-
-    .red {
-        color: #F8847F;
-    }
-
-    .list {
-        width: 100%;
-        overflow: hidden;
-        display: block;
-        margin: 0 auto;
-        margin-top: 8px;
-        padding-bottom: 30px;
-    }
-
-    .list li {
-        width: 100%;
-        height: 70px;
-        margin-bottom: 8px;
-        padding-top: 16px;
-        padding-bottom: 16px;
-    }
-
-    .list .dotContainer {
-        width: 50px;
-        float: left;
-        height: 60px;
-        padding-left: 22px;
-        padding-top: 10px;
-    }
-
-    .dotContainer .dot {
-        width: 12px;
-        height: 12px;
-        background: #37cb00;
-        border-radius: 250px;
-        float: left;
-    }
-
-    .cubes {
-        width: 12px;
-        height: 12px;
-        background: #f8847f;
-        float: left;
-    }
-
-    .tri {
-        width: 12px;
-        height: 12px;
-        background: url("../static/images/appoint/tri.png") top center no-repeat;
-        background-size: 100% 100%;
-        float: left;
-    }
-
-    .x {
-        width: 12px;
-        height: 12px;
-        background: url("../static/images/appoint/x.png") top center no-repeat;
-        background-size: 100% 100%;
-        float: left;
-    }
-
-
-    .yellowLi {
-        background: #FFFBED;
-    }
-
-    .redLi {
-        background: #FFF7F7;
-    }
-
-    .greenLi {
-        background: #F7FFF4;
-    }
-
-    .whiteLi {
-        background: #fff;
-    }
-
-    .list li .title {
-        width: 90px;
-        height: 60px;
-        float: left;
-    }
-
-    li .title h5 {
-        width: 100%;
-        overflow: hidden;
-        display: block;
-        margin: 0 auto;
-        font-weight: normal;
-        font-size: 14px;
-        text-align: left;
-        color: #3b3b3b;
-    }
-
-    li .title span {
-        width: 100%;
-        overflow: hidden;
-        display: block;
-        margin: 0 auto;
-        font-weight: normal;
-        font-size: 12px;
-        text-align: left;
-        color: #909090;
-    }
-
-    .list li .current {
-        width: 120px;
-        height: 60px;
-        float: left;
-    }
-
-    li .current h5 {
-        width: 100%;
-        overflow: hidden;
-        display: block;
-        margin: 0 auto;
-        font-family: "PingFang SC";
-        font-weight: normal;
-        font-size: 14px;
-        text-align: left;
-        color: #3b3b3b;
-    }
-
-    .current h5 em {
-        font-family: "PingFang SC";
-        font-weight: normal;
-        font-size: 14px;
-        text-align: left;
-    }
-
-    .current span {
-        font-family: "PingFang SC";
-        font-weight: normal;
-        font-size: 12px;
-        text-align: left;
-        color: #909090;
-    }
-
-    .appointBtn {
-        width: 79px;
-        height: 37px;
-        border-radius: 18.5px;
-        background: #fff;
-        float: right;
-        font-family: "PingFang SC";
-        font-weight: normal;
-        font-size: 18px;
-        margin-right: 2%;
-    }
-
-    .greenBtn {
-        border: 1px solid #37cb00;
-        color: #37cb00;
-    }
-
-    .redBtn {
-        border: 1px solid #F8847F;
-        color: #F8847F;
-    }
-
-    .yellowBtn {
-        border: 1px solid #FFB43C;
-        color: #fff;
-        background: #FFB43C;
-    }
-
-    .disableBtn {
-        border: 1px solid #C9C9C9;
-        color: #C9C9C9;
-    }
-
-    /deep/ .mu-tabs-center {
-        display: flex;
-        overflow-x: auto;
-        overflow-y: hidden;
-        white-space: nowrap;
-    }
-
-    /deep/ .mu-tabs-center::-webkit-scrollbar {
-        display: none;
-    }
-
-    /deep/ .mu-modal-inner {
-        width: 90%;
-        float: left;
-    }
-
-    /deep/ .mu-tab-link-highlight {
-        display: none !important;
-    }
-
-    li .title span.lessons {
-        width: auto;
-        padding: 1px 11px;
-        border-radius: 250px;
-        float: left;
-        text-align: center;
-        color: #000;
-        font-size: 14px;
-    }
-
-    /deep/ .mu-avatar {
-        position: fixed;
-        bottom: 10%;
-        float: right;
-        right: 10%;
-    }
-
-    @media only screen and (max-width: 640px) {
-
-    }
-
-    @media only screen and (max-width: 480px) {
-
-    }
-
-    @media only screen and (max-width: 375px) {
-
-    }
-
-    @media only screen and (max-width: 360px) {
-
-    }
-
-    @media only screen and (max-width: 320px) {
-        .list .dotContainer {
-            width: 20px;
-            padding-left: 5px;
-        }
-
-        .list li .title {
-            width: 85px;
-        }
-    }
-
-    @media only screen and (min-width: 641px) {
-
-    }
+.pages {
+  overflow: hidden;
+  display: block;
+  margin: 0 auto;
+}
+
+/*mu-header*/
+.mu-primary-color {
+  line-height: 60px;
+  height: 60px;
+  background: url("../static/images/comm/headerBg.png") top center no-repeat;
+  background-size: 100%;
+}
+
+/deep/ .mu-appbar-left {
+  padding-top: 15px;
+}
+
+/deep/ .material-icons {
+  color: #fff;
+}
+
+/deep/ .mu-appbar-title {
+  text-align: center;
+}
+
+/deep/ .mu-tabs {
+  /*display: flex;*/
+  /*width: 414px;*/
+  overflow-x: scroll;
+  overflow-y: hidden;
+  /*display:inline;*/
+  /*float: left;*/
+}
+
+/deep/ .mu-tab {
+  width: 85px;
+  min-width: 85px;
+  float: left;
+  height: 51px;
+  margin-right: 6px;
+}
+
+/*/deep/ .mu-tab:nth-child(5) {*/
+/*    margin-right: 0px;*/
+/*}*/
+
+/deep/ .mu-tab-wrapper {
+  height: 51px;
+  background: #f4f4f4;
+  color: #363636;
+  box-shadow: 1px 0px 6px rgba(0, 0, 0, 0.16);
+  border-radius: 8px 8px 0px 0px;
+  font-size: 14px;
+}
+
+/deep/ .mu-tab-active .mu-tab-wrapper {
+  height: 56px;
+  border-radius: 8px 8px 0px 0px;
+  background: #ffffff;
+  box-shadow: 1px 0px 6px rgba(0, 0, 0, 0.16);
+  color: #000;
+}
+
+/deep/ .mu-tab-wrapper em {
+  font-size: 12px;
+}
+
+.sum {
+  width: 100%;
+  height: 55px;
+  line-height: 55px;
+  background: #fff;
+  font-family: "PingFang SC";
+  font-weight: 300;
+  font-size: 16px;
+  text-align: center;
+  color: #909090;
+  overflow: hidden;
+  display: block;
+  margin: 0 auto;
+}
+
+.green {
+  color: #37CB00;
+}
+
+.red {
+  color: #F8847F;
+}
+
+.list {
+  width: 100%;
+  overflow: hidden;
+  display: block;
+  margin: 0 auto;
+  margin-top: 8px;
+  padding-bottom: 30px;
+}
+
+.list li {
+  width: 100%;
+  height: 70px;
+  margin-bottom: 8px;
+  padding-top: 16px;
+  padding-bottom: 16px;
+}
+
+.list .dotContainer {
+  width: 50px;
+  float: left;
+  height: 60px;
+  padding-left: 22px;
+  padding-top: 10px;
+}
+
+.dotContainer .dot {
+  width: 12px;
+  height: 12px;
+  background: #37cb00;
+  border-radius: 250px;
+  float: left;
+}
+
+.cubes {
+  width: 12px;
+  height: 12px;
+  background: #f8847f;
+  float: left;
+}
+
+.tri {
+  width: 12px;
+  height: 12px;
+  background: url("../static/images/appoint/tri.png") top center no-repeat;
+  background-size: 100% 100%;
+  float: left;
+}
+
+.x {
+  width: 12px;
+  height: 12px;
+  background: url("../static/images/appoint/x.png") top center no-repeat;
+  background-size: 100% 100%;
+  float: left;
+}
+
+
+.yellowLi {
+  background: #FFFBED;
+}
+
+.redLi {
+  background: #FFF7F7;
+}
+
+.greenLi {
+  background: #F7FFF4;
+}
+
+.whiteLi {
+  background: #fff;
+}
+
+.list li .title {
+  /*width: 90px;*/
+  width: 27%;
+  height: 60px;
+  float: left;
+}
+
+li .title h5 {
+  width: 100%;
+  overflow: hidden;
+  display: block;
+  margin: 0 auto;
+  font-weight: normal;
+  font-size: 14px;
+  text-align: left;
+  color: #3b3b3b;
+}
+
+li .title span {
+  width: 100%;
+  overflow: hidden;
+  display: block;
+  margin: 0 auto;
+  font-weight: normal;
+  font-size: 12px;
+  text-align: left;
+  color: #909090;
+}
+
+.list li .current {
+  width: 120px;
+  height: 60px;
+  float: left;
+}
+
+li .current h5 {
+  width: 100%;
+  overflow: hidden;
+  display: block;
+  margin: 0 auto;
+  font-family: "PingFang SC";
+  font-weight: normal;
+  font-size: 14px;
+  text-align: left;
+  color: #3b3b3b;
+}
+
+.current h5 em {
+  font-family: "PingFang SC";
+  font-weight: normal;
+  font-size: 14px;
+  text-align: left;
+}
+
+.current span {
+  font-family: "PingFang SC";
+  font-weight: normal;
+  font-size: 12px;
+  text-align: left;
+  color: #909090;
+}
+
+.appointBtn {
+  width: 79px;
+  height: 37px;
+  border-radius: 18.5px;
+  background: #fff;
+  float: right;
+  font-family: "PingFang SC";
+  font-weight: normal;
+  font-size: 18px;
+  margin-right: 2%;
+}
+
+.greenBtn {
+  border: 1px solid #37cb00;
+  color: #37cb00;
+}
+
+.redBtn {
+  border: 1px solid #F8847F;
+  color: #F8847F;
+}
+
+.yellowBtn {
+  border: 1px solid #FFB43C;
+  color: #fff;
+  background: #FFB43C;
+}
+
+.disableBtn {
+  border: 1px solid #C9C9C9;
+  color: #C9C9C9;
+}
+
+/deep/ .mu-tabs-center {
+  display: flex;
+  overflow-x: auto;
+  overflow-y: hidden;
+  white-space: nowrap;
+}
+
+/deep/ .mu-tabs-center::-webkit-scrollbar {
+  display: none;
+}
+
+/deep/ .mu-modal-inner {
+  width: 90%;
+  float: left;
+}
+
+/deep/ .mu-tab-link-highlight {
+  display: none !important;
+}
+
+li .title span.lessons {
+  width: auto;
+  padding: 1px 11px;
+  border-radius: 250px;
+  float: left;
+  text-align: center;
+  color: #000;
+  font-size: 14px;
+}
+
+/deep/ .mu-avatar {
+  position: fixed;
+  bottom: 9%;
+  float: left;
+  left: 1%;
+}
+
+.context {
+  position: absolute;
+  left: 0;
+  right: 0;
+  top: 30%;
+  bottom: 0;
+  overflow-y: scroll;
+  padding-bottom: 50px;
+}
+
+.as {
+  position: fixed;
+  width: 100%;
+  overflow: hidden;
+  display: block;
+  margin: 0 auto;
+  z-index: 222;
+  background: #F2F2F2;
+}
+
+/deep/ .mu-raised-button {
+  box-shadow: none;
+}
+
+@media only screen and (max-width: 640px) {
+
+}
+
+@media only screen and (max-width: 480px) {
+
+}
+
+@media only screen and (max-width: 375px) {
+  .context {
+    top: 34%;
+  }
+}
+
+@media only screen and (max-width: 414px) {
+  .context {
+    top: 38%;
+  }
+}
+@media only screen and (max-width: 414px) and (device-height: 739px) {
+  .context {
+    top: 36%;
+    /*background: red;*/
+  }
+}
+
+@media only screen and (max-width: 414px) and (device-height: 889px) {
+  .context {
+    top: 30%;
+    /*background: red;*/
+  }
+}@media only screen and (max-width: 414px) and (device-height: 896px) {
+  .context {
+    top: 33%;
+    /*background: red;*/
+  }
+}
+
+@media only screen and (max-width: 375px) and (device-height: 812px) {
+  .context {
+    top: 35%;
+    /*background: red;*/
+  }
+}
+
+@media only screen and (max-width: 360px) {
+  .list li .current {
+    width: 32%;
+  }
+
+  .context {
+    top: 34%;
+  }
+}
+
+@media only screen and (max-width: 320px) {
+  .list .dotContainer {
+    width: 20px;
+    padding-left: 5px;
+  }
+
+  .list li .title {
+    width: 30%;
+  }
+
+  .list li .current {
+    width: 32%;
+  }
+
+  .context {
+    top: 41%;
+  }
+}
+
+@media only screen and (min-width: 641px) {
+  .context {
+    top: 21%;
+  }
+}
 </style>

+ 506 - 498
app/src/page/lesson.vue

@@ -1,510 +1,518 @@
 <template>
-    <div class="pages">
-        <img src="../static/images/main/banner.png" height="121" width="414"/>
-        <h5 class="lessonName">
-            {{lessonName}}
-        </h5>
-        <mu-tabs :value.sync="active" color="#F2F2F2" indicator-color="#33CAF7">
-            <mu-tab v-for="(day,i) in weeks">{{day.name}} <br> <em>{{day.data}}</em></mu-tab>
-        </mu-tabs>
-
-        <bottomTab :curTab="thisTab"></bottomTab>
-        <div class="context">
-            <ul class="list">
-                <li  v-for="(l,index) in previewDate"
-                     :style="{background:l.ClassColor}"
-                >
-                    <em>
-                        {{l.BeginStr}} - {{l.EndStr}}
-                    </em>
-                    <span>
-                         {{l.ClassName}}
+  <div class="pages">
+    <img src="../static/images/main/banner.png" height="121" width="414"/>
+    <h5 class="lessonName">
+      {{ lessonName }}
+    </h5>
+    <mu-tabs :value.sync="active" color="#F2F2F2" indicator-color="#33CAF7">
+      <mu-tab v-for="(day,i) in weeks">{{ day.name }} <br> <em>{{ day.data }}</em></mu-tab>
+    </mu-tabs>
+
+    <bottomTab :curTab="thisTab"></bottomTab>
+    <div class="context">
+      <ul class="list">
+        <li v-for="(l,index) in previewDate"
+            :style="{background:l.ClassColor}"
+        >
+          <em>
+            {{ l.BeginStr }} - {{ l.EndStr }}
+          </em>
+          <span>
+                         {{ l.ClassName }}
                     </span>
-                </li>
-            </ul>
-        </div>
-
+        </li>
+      </ul>
     </div>
+
+  </div>
 </template>
 
 <script>
-    import axios from 'axios';
-    import bottomTab from '../components/bottomTab'
-    import {
-        SchoolTimeQueryByDate,
-    } from '../api/getApiRes.js'
-
-    let qs = require('qs');
-    import Global from '../Global.js'
-
-    export default {
-        data() {
-            return {
-                lessonName: '本周课程表',
-                num: 0,
-                thisTab: '预约课程',
-                active: 0,
-                sum: 0,
-                openAlert: false,
-                list: [],
-                previewDate: [],
-                weeks: [],
-                dialog: {
-                    id: '',
-                    name: '',
-                    timeLong: '',
-                },
-            }
-        },
-        mounted() {
-            this.getFurtherDays();
-        },
-        methods: {
-            // 获取未来7天的
-            getFurtherDays() {
-                let now = new Date();
-                let nowTime = now.getTime();
-                let oneDayTime = 24 * 60 * 60 * 1000;
-                let days = '';
-                let item = [];
-                let month = 0;
-                let day = 0;
-                for (let i = 0; i < 7; i++) {
-                    days = new Date(nowTime + (i) * oneDayTime);//显示周日
-                    month = days.getMonth() + 1;
-                    day = days.getDate();
-                    month = month < 10 ? '0' + month : month;
-                    day = day < 10 ? '0' + day : day;
-                    item = {
-                        name: this.numberToWeek(days.getDay()),
-                        data: days.getMonth() + 1 + '月' + days.getDate() + '日',
-                        orderDate: new Date().getFullYear() + '-' + month + '-' + day
-                    }
-                    this.weeks.push(item);
-                }
-                this.getList();
-            },
-            numberToWeek(val) {
-                switch (parseInt(val)) {
-                    case 1:
-                        return '星期一'
-                        break;
-                    case 2:
-                        return '星期二'
-                        break;
-                    case 3:
-                        return '星期三'
-                        break;
-                    case 4:
-                        return '星期四'
-                        break;
-                    case 5:
-                        return '星期五'
-                        break;
-                    case 6:
-                        return '星期六'
-                        break;
-                    case 0:
-                        return '星期天'
-                        break;
-                }
-            },
-            getList(){
-                let that = this;
-                let param = {
-                    token: localStorage.token,
-                    shopId : this.$route.query.shopId,
-                    queryDate : that.weeks[that.active].orderDate,//(字符串 年-月-日  格式)
-                };
-                let postdata = qs.stringify(param);
-                SchoolTimeQueryByDate(postdata).then(res => {
-                    let json = res;
-                    if (json.Code == 0) {
-                        // that.BigTitle = row.Name;
-                        // that.smallTitle = row.BeginDate + '至' + row.EndDate;
-                        that.previewDate = json.Rs;
-                        // 前台排序
-                        that.previewDate.sort((a,b)=>a.ClassIndex-b.ClassIndex);//升序
-                        that.previewShow = true;
-                    } else {
-                        that.$message.error(json.Memo);
-                    }
-                })
-            },
-        },
-        beforeRouteEnter(to, from, next) {
-            next(vm => {
-                //因为当钩子执行前,组件实例还没被创建
-                // vm 就是当前组件的实例相当于上面的 this,所以在 next 方法里你就可以把 vm 当 this 来用了。
-                if (to.name == 'appoint') {
-                    vm.getList();
-                }
-            });
-        },
-        watch: {
-            'active'() {
-                this.getList();
-            }
-        },
-        components: {
-            bottomTab
+import axios from 'axios';
+import bottomTab from '../components/bottomTab'
+import {
+  SchoolTimeQueryByDate,
+} from '../api/getApiRes.js'
+
+let qs = require('qs');
+import Global from '../Global.js'
+
+export default {
+  data() {
+    return {
+      lessonName: '本周课程表',
+      num: 0,
+      thisTab: '预约课程',
+      active: 0,
+      sum: 0,
+      openAlert: false,
+      list: [],
+      previewDate: [],
+      weeks: [],
+      dialog: {
+        id: '',
+        name: '',
+        timeLong: '',
+      },
+    }
+  },
+  mounted() {
+    this.getFurtherDays();
+  },
+  methods: {
+    // 获取未来7天的
+    getFurtherDays() {
+      let now = new Date();
+      let nowTime = now.getTime();
+      let oneDayTime = 24 * 60 * 60 * 1000;
+      let days = '';
+      let item = [];
+      let month = 0;
+      let day = 0;
+      for (let i = 0; i < 7; i++) {
+        days = new Date(nowTime + (i) * oneDayTime);//显示周日
+        month = days.getMonth() + 1;
+        day = days.getDate();
+        month = month < 10 ? '0' + month : month;
+        day = day < 10 ? '0' + day : day;
+        item = {
+          name: this.numberToWeek(days.getDay()),
+          data: days.getMonth() + 1 + '月' + days.getDate() + '日',
+          orderDate: new Date().getFullYear() + '-' + month + '-' + day
         }
-    }
+        this.weeks.push(item);
+      }
+      this.getList();
+    },
+    numberToWeek(val) {
+      switch (parseInt(val)) {
+        case 1:
+          return '星期一'
+          break;
+        case 2:
+          return '星期二'
+          break;
+        case 3:
+          return '星期三'
+          break;
+        case 4:
+          return '星期四'
+          break;
+        case 5:
+          return '星期五'
+          break;
+        case 6:
+          return '星期六'
+          break;
+        case 0:
+          return '星期天'
+          break;
+      }
+    },
+    getList() {
+      let that = this;
+      let param = {
+        token: localStorage.token,
+        shopId: this.$route.query.shopId,
+        queryDate: that.weeks[that.active].orderDate,//(字符串 年-月-日  格式)
+      };
+      let postdata = qs.stringify(param);
+      SchoolTimeQueryByDate(postdata).then(res => {
+        let json = res;
+        if (json.Code == 0) {
+          // that.BigTitle = row.Name;
+          // that.smallTitle = row.BeginDate + '至' + row.EndDate;
+          that.previewDate = json.Rs;
+          // 前台排序
+          that.previewDate.sort((a, b) => a.ClassIndex - b.ClassIndex);//升序
+          that.previewShow = true;
+        } else {
+          that.$message.error(json.Memo);
+        }
+      })
+    },
+  },
+  beforeRouteEnter(to, from, next) {
+    next(vm => {
+      //因为当钩子执行前,组件实例还没被创建
+      // vm 就是当前组件的实例相当于上面的 this,所以在 next 方法里你就可以把 vm 当 this 来用了。
+      if (to.name == 'appoint') {
+        vm.getList();
+      }
+    });
+  },
+  watch: {
+    'active'() {
+      this.getList();
+    }
+  },
+  components: {
+    bottomTab
+  }
+}
 </script>
 
 
 <style scoped>
-    .pages {
-        overflow: hidden;
-        display: block;
-        margin: 0 auto;
-    }
-    .lessonName {
-        width: 100%;
-        height: 40px;
-        overflow: hidden;
-        display: block;
-        margin: 0 auto;
-        text-align: center;
-        font-size: 18px;
-    }
-    /*mu-header*/
-    .mu-primary-color {
-        line-height: 60px;
-        height: 60px;
-        background: url("../static/images/comm/headerBg.png") top center no-repeat;
-        background-size: 100%;
-    }
-
-    /deep/ .mu-appbar-left {
-        padding-top: 15px;
-    }
-
-    /deep/ .material-icons {
-        color: #fff;
-    }
-
-    /deep/ .mu-appbar-title {
-        text-align: center;
-    }
-
-    /deep/ .mu-tabs {
-        display: flex;
-        overflow-x: scroll;
-        float: left;
-    }
-
-    /deep/ .mu-tab {
-        width: 85px;
-        min-width: 85px;
-        float: left;
-        height: 51px;
-        margin-right: 6px;
-    }
-
-    /*/deep/ .mu-tab:nth-child(5) {*/
-    /*    margin-right: 0px;*/
-    /*}*/
-
-    /deep/ .mu-tab-wrapper {
-        height: 51px;
-        background: #fff;
-        color: #363636;
-        box-shadow: 1px 0px 6px rgba(0, 0, 0, 0.16);
-        border-radius: 8px 8px 0px 0px;
-        font-size: 14px;
-    }
-
-    /deep/ .mu-tab-active .mu-tab-wrapper {
-        height: 56px;
-        border-radius: 8px 8px 0px 0px;
-        background: #33caf7;
-        box-shadow: 1px 0px 6px rgba(0, 0, 0, 0.16);
-        color: #fff;
-    }
-
-    /deep/ .mu-tab-wrapper em {
-        font-size: 12px;
-    }
-
-    .sum {
-        width: 100%;
-        height: 55px;
-        line-height: 55px;
-        background: #fff;
-        font-family: "PingFang SC";
-        font-weight: 300;
-        font-size: 16px;
-        text-align: center;
-        color: #909090;
-        overflow: hidden;
-        display: block;
-        margin: 0 auto;
-    }
-
-    .green {
-        color: #37CB00;
-    }
-
-    .red {
-        color: #F8847F;
-    }
-
-    .list {
-        width: 100%;
-        overflow: hidden;
-        display: block;
-        margin: 0 auto;
-        margin-top: 8px;
-        padding-bottom: 30px;
-        border-top: 5px solid #fff;
-    }
-
-    .list li {
-        width: 100%;
-        height: 50px;
-        margin: 0;
-        border-bottom: 1px solid #fff;
-        list-style: none;
-        line-height: 50px;
-        /*padding-top: 16px;*/
-        /*padding-bottom: 16px;*/
-    }
-    li em {
-        width: 50%;
-        float: left;
-        padding-left: 10%;
-        /*height: 40px;*/
-        /*line-height: 40px;*/
-        overflow: hidden;
-        border-right: 1px solid #fff;
-        color: #333;
-    }
-    li span {
-        width: 45%;
-        float: right;
-        padding-left: 3px;
-        /*height: 40px;*/
-        /*line-height: 40px;*/
-        overflow: hidden;
-        text-align: center;
-        color: #333;
-    }
-    .list .dotContainer {
-        width: 50px;
-        float: left;
-        height: 60px;
-        padding-left: 22px;
-        padding-top: 10px;
-    }
-
-    .dotContainer .dot {
-        width: 12px;
-        height: 12px;
-        background: #37cb00;
-        border-radius: 250px;
-        float: left;
-    }
-
-    .cubes {
-        width: 12px;
-        height: 12px;
-        background: #f8847f;
-        float: left;
-    }
-
-    .tri {
-        width: 12px;
-        height: 12px;
-        background: url("../static/images/appoint/tri.png") top center no-repeat;
-        background-size: 100% 100%;
-        float: left;
-    }
-
-    .x {
-        width: 12px;
-        height: 12px;
-        background: url("../static/images/appoint/x.png") top center no-repeat;
-        background-size: 100% 100%;
-        float: left;
-    }
-
-
-    .yellowLi {
-        background: #FFFBED;
-    }
-
-    .redLi {
-        background: #FFF7F7;
-    }
-
-    .greenLi {
-        background: #F7FFF4;
-    }
-
-    .whiteLi {
-        background: #fff;
-    }
-
-    .list li .title {
-        width: 90px;
-        height: 60px;
-        float: left;
-    }
-
-    li .title h5 {
-        width: 100%;
-        overflow: hidden;
-        display: block;
-        margin: 0 auto;
-        font-weight: normal;
-        font-size: 14px;
-        text-align: left;
-        color: #3b3b3b;
-    }
-
-    li .title span {
-        width: 100%;
-        overflow: hidden;
-        display: block;
-        margin: 0 auto;
-        font-weight: normal;
-        font-size: 12px;
-        text-align: left;
-        color: #909090;
-    }
-
-    .list li .current {
-        width: 120px;
-        height: 60px;
-        float: left;
-    }
-
-    li .current h5 {
-        width: 100%;
-        overflow: hidden;
-        display: block;
-        margin: 0 auto;
-        font-family: "PingFang SC";
-        font-weight: normal;
-        font-size: 14px;
-        text-align: left;
-        color: #3b3b3b;
-    }
-
-    .current h5 em {
-        font-family: "PingFang SC";
-        font-weight: normal;
-        font-size: 14px;
-        text-align: left;
-    }
-
-    .current span {
-        font-family: "PingFang SC";
-        font-weight: normal;
-        font-size: 12px;
-        text-align: left;
-        color: #909090;
-    }
-
-    .appointBtn {
-        width: 79px;
-        height: 37px;
-        border-radius: 18.5px;
-        background: #fff;
-        float: right;
-        font-family: "PingFang SC";
-        font-weight: normal;
-        font-size: 18px;
-        margin-right: 2%;
-    }
-
-    .greenBtn {
-        border: 1px solid #37cb00;
-        color: #37cb00;
-    }
-
-    .redBtn {
-        border: 1px solid #F8847F;
-        color: #F8847F;
-    }
-
-    .yellowBtn {
-        border: 1px solid #FFB43C;
-        color: #fff;
-        background: #FFB43C;
-    }
-
-    .disableBtn {
-        border: 1px solid #C9C9C9;
-        color: #C9C9C9;
-    }
-
-    /deep/ .mu-tabs-center {
-        display: flex;
-        overflow-x: auto;
-        overflow-y: hidden;
-        white-space: nowrap;
-    }
-
-    /deep/ .mu-tabs-center::-webkit-scrollbar {
-        display: none;
-    }
-
-    /deep/ .mu-modal-inner {
-        width: 90%;
-        float: left;
-    }
-
-    /deep/ .mu-tab-link-highlight {
-        display: none !important;
-    }
-
-    li .title span.lessons {
-        width: auto;
-        padding: 1px 11px;
-        border-radius: 250px;
-        float: left;
-        text-align: center;
-        color: #000;
-        font-size: 14px;
-    }
-    /deep/ .mu-avatar {
-        position: fixed;
-        bottom: 10%;
-        float: right;
-        right: 10%;
-    }
-
-
-    @media only screen and (max-width: 640px) {
-
-    }
-
-    @media only screen and (max-width: 480px) {
-
-    }
-
-    @media only screen and (max-width: 375px) {
-
-    }
-
-    @media only screen and (max-width: 360px) {
-
-    }
-
-    @media only screen and (max-width: 320px) {
-        .list .dotContainer {
-            width: 20px;
-            padding-left: 5px;
-        }
-
-        .list li .title {
-            width: 85px;
-        }
-    }
-
-    @media only screen and (min-width: 641px) {
-
-    }
+.pages {
+  overflow: hidden;
+  display: block;
+  margin: 0 auto;
+}
+
+.lessonName {
+  width: 100%;
+  height: 40px;
+  overflow: hidden;
+  display: block;
+  margin: 0 auto;
+  text-align: center;
+  font-size: 18px;
+}
+
+/*mu-header*/
+.mu-primary-color {
+  line-height: 60px;
+  height: 60px;
+  background: url("../static/images/comm/headerBg.png") top center no-repeat;
+  background-size: 100%;
+}
+
+/deep/ .mu-appbar-left {
+  padding-top: 15px;
+}
+
+/deep/ .material-icons {
+  color: #fff;
+}
+
+/deep/ .mu-appbar-title {
+  text-align: center;
+}
+
+/deep/ .mu-tabs {
+  display: flex;
+  overflow-x: scroll;
+  float: left;
+}
+
+/deep/ .mu-tab {
+  width: 85px;
+  min-width: 85px;
+  float: left;
+  height: 51px;
+  margin-right: 6px;
+}
+
+/*/deep/ .mu-tab:nth-child(5) {*/
+/*    margin-right: 0px;*/
+/*}*/
+
+/deep/ .mu-tab-wrapper {
+  height: 51px;
+  background: #fff;
+  color: #363636;
+  box-shadow: 1px 0px 6px rgba(0, 0, 0, 0.16);
+  border-radius: 8px 8px 0px 0px;
+  font-size: 14px;
+}
+
+/deep/ .mu-tab-active .mu-tab-wrapper {
+  height: 56px;
+  border-radius: 8px 8px 0px 0px;
+  background: #33caf7;
+  box-shadow: 1px 0px 6px rgba(0, 0, 0, 0.16);
+  color: #fff;
+}
+
+/deep/ .mu-tab-wrapper em {
+  font-size: 12px;
+}
+
+.sum {
+  width: 100%;
+  height: 55px;
+  line-height: 55px;
+  background: #fff;
+  font-family: "PingFang SC";
+  font-weight: 300;
+  font-size: 16px;
+  text-align: center;
+  color: #909090;
+  overflow: hidden;
+  display: block;
+  margin: 0 auto;
+}
+
+.green {
+  color: #37CB00;
+}
+
+.red {
+  color: #F8847F;
+}
+
+.list {
+  width: 100%;
+  overflow: hidden;
+  display: block;
+  margin: 0 auto;
+  margin-top: 8px;
+  padding-bottom: 30px;
+  border-top: 5px solid #fff;
+}
+
+.list li {
+  width: 100%;
+  height: 50px;
+  margin: 0;
+  border-bottom: 1px solid #fff;
+  list-style: none;
+  line-height: 50px;
+  /*padding-top: 16px;*/
+  /*padding-bottom: 16px;*/
+}
+
+li em {
+  width: 50%;
+  float: left;
+  padding-left: 10%;
+  /*height: 40px;*/
+  /*line-height: 40px;*/
+  overflow: hidden;
+  border-right: 1px solid #fff;
+  color: #333;
+  /*font-size: 16px;*/
+}
+
+li span {
+  width: 45%;
+  float: right;
+  padding-left: 3px;
+  /*height: 40px;*/
+  /*line-height: 40px;*/
+  overflow: hidden;
+  text-align: center;
+  color: #333;
+  /*font-size: 16px;*/
+}
+
+.list .dotContainer {
+  width: 50px;
+  float: left;
+  height: 60px;
+  padding-left: 22px;
+  padding-top: 10px;
+}
+
+.dotContainer .dot {
+  width: 12px;
+  height: 12px;
+  background: #37cb00;
+  border-radius: 250px;
+  float: left;
+}
+
+.cubes {
+  width: 12px;
+  height: 12px;
+  background: #f8847f;
+  float: left;
+}
+
+.tri {
+  width: 12px;
+  height: 12px;
+  background: url("../static/images/appoint/tri.png") top center no-repeat;
+  background-size: 100% 100%;
+  float: left;
+}
+
+.x {
+  width: 12px;
+  height: 12px;
+  background: url("../static/images/appoint/x.png") top center no-repeat;
+  background-size: 100% 100%;
+  float: left;
+}
+
+
+.yellowLi {
+  background: #FFFBED;
+}
+
+.redLi {
+  background: #FFF7F7;
+}
+
+.greenLi {
+  background: #F7FFF4;
+}
+
+.whiteLi {
+  background: #fff;
+}
+
+.list li .title {
+  width: 90px;
+  height: 60px;
+  float: left;
+}
+
+li .title h5 {
+  width: 100%;
+  overflow: hidden;
+  display: block;
+  margin: 0 auto;
+  font-weight: normal;
+  font-size: 14px;
+  text-align: left;
+  color: #3b3b3b;
+}
+
+li .title span {
+  width: 100%;
+  overflow: hidden;
+  display: block;
+  margin: 0 auto;
+  font-weight: normal;
+  font-size: 12px;
+  text-align: left;
+  color: #909090;
+}
+
+.list li .current {
+  width: 120px;
+  height: 60px;
+  float: left;
+}
+
+li .current h5 {
+  width: 100%;
+  overflow: hidden;
+  display: block;
+  margin: 0 auto;
+  font-family: "PingFang SC";
+  font-weight: normal;
+  font-size: 14px;
+  text-align: left;
+  color: #3b3b3b;
+}
+
+.current h5 em {
+  font-family: "PingFang SC";
+  font-weight: normal;
+  font-size: 14px;
+  text-align: left;
+}
+
+.current span {
+  font-family: "PingFang SC";
+  font-weight: normal;
+  font-size: 12px;
+  text-align: left;
+  color: #909090;
+}
+
+.appointBtn {
+  width: 79px;
+  height: 37px;
+  border-radius: 18.5px;
+  background: #fff;
+  float: right;
+  font-family: "PingFang SC";
+  font-weight: normal;
+  font-size: 18px;
+  margin-right: 2%;
+}
+
+.greenBtn {
+  border: 1px solid #37cb00;
+  color: #37cb00;
+}
+
+.redBtn {
+  border: 1px solid #F8847F;
+  color: #F8847F;
+}
+
+.yellowBtn {
+  border: 1px solid #FFB43C;
+  color: #fff;
+  background: #FFB43C;
+}
+
+.disableBtn {
+  border: 1px solid #C9C9C9;
+  color: #C9C9C9;
+}
+
+/deep/ .mu-tabs-center {
+  display: flex;
+  overflow-x: auto;
+  overflow-y: hidden;
+  white-space: nowrap;
+}
+
+/deep/ .mu-tabs-center::-webkit-scrollbar {
+  display: none;
+}
+
+/deep/ .mu-modal-inner {
+  width: 90%;
+  float: left;
+}
+
+/deep/ .mu-tab-link-highlight {
+  display: none !important;
+}
+
+li .title span.lessons {
+  width: auto;
+  padding: 1px 11px;
+  border-radius: 250px;
+  float: left;
+  text-align: center;
+  color: #000;
+  font-size: 14px;
+}
+
+/deep/ .mu-avatar {
+  position: fixed;
+  bottom: 10%;
+  float: right;
+  right: 10%;
+}
+
+
+@media only screen and (max-width: 640px) {
+
+}
+
+@media only screen and (max-width: 480px) {
+
+}
+
+@media only screen and (max-width: 375px) {
+
+}
+
+@media only screen and (max-width: 360px) {
+
+}
+
+@media only screen and (max-width: 320px) {
+  .list .dotContainer {
+    width: 20px;
+    padding-left: 5px;
+  }
+
+  .list li .title {
+    width: 85px;
+  }
+}
+
+@media only screen and (min-width: 641px) {
+
+}
 </style>

+ 36 - 17
app/src/page/login.vue

@@ -131,7 +131,9 @@ export default {
       this.overtime = new Date();
       let from = this.$route.query.from;//获取来源
       let userAgent = navigator.userAgent;
-      if (from == 'app') {//判断是否微信浏览器
+      let host = window.location.host;
+      console.log(host);
+      if (from == 'app' || host == '192.168.0.162:8080') {//判断是否微信浏览器
         // 浏览器测试
         console.log('from app & brower');
       } else {
@@ -242,7 +244,7 @@ export default {
         token: localStorage.token,
         width: 100,
         height: 30,
-        noiseCount: 10,
+        noiseCount: 1,
         length: 4,
         source: 123456789,
       };
@@ -316,6 +318,7 @@ export default {
           // test
           that.$router.push({path: '/'});
         } else {
+          this.getValImgSrc();
           if (res.Code == 10005) {
             that.$refs.userpwd.value = '';
             that.Toast('密码错误,请重新输入');
@@ -462,7 +465,8 @@ header p {
   position: relative;
   float: right;
   /*bottom: 54px;*/
-  width: 100px;
+  /*width: 100px;*/
+  width: 30%;
   height: 50px;
   background: #eee;
 }
@@ -538,7 +542,8 @@ header p {
 }
 
 #getValidSms {
-  width: 100px;
+  /*width: 100px;*/
+  width: 30%;
   height: 50px;
   background: #fff;
   border: 1px solid #fff;
@@ -550,10 +555,12 @@ header p {
   color: #E75296;
   line-height: 20px;
   font-size: 12px;
+  min-width: 30px;
 }
 
 #login .login_valid {
-  width: 173px;
+  /*width: 173px;*/
+  width:65%;
   float: left;
 }
 
@@ -568,32 +575,38 @@ header p {
 
 @media only screen and (max-width: 480px) {
   #login .login_valid {
-    width: 195px;
+    /*width: 195px;*/
+    width:65%;
   }
 
   #login .login_pwd {
-    width: 195px;
+    /*width: 195px;*/
+    width:65%;
   }
 }
 
 @media only screen and (max-width: 414px) {
   #login .login_valid {
-    width: 223px;
+    width:65%;
+    /*width: 223px;*/
   }
 
   #login .login_pwd {
-    width: 223px;
+    /*width: 223px;*/
+    width:65%;
   }
 }
 
 @media only screen and (max-width: 400px) {
 
   #login .login_valid {
-    width: 218px;
+    width:65%;
+    /*width: 218px;*/
   }
 
   #login .login_pwd {
-    width: 218px;
+    /*width: 218px;*/
+    width:65%;
   }
 
   #getValidSms {
@@ -603,11 +616,13 @@ header p {
 
 @media only screen and (max-width: 375px) {
   #login .login_valid {
-    width: 190px;
+    /*width: 190px;*/
+    width:65%;
   }
 
   #login .login_pwd {
-    width: 190px;
+    /*width: 190px;*/
+    width:65%;
   }
 
   #getValidSms {
@@ -617,11 +632,13 @@ header p {
 
 @media only screen and (max-width: 360px) {
   #login .login_valid {
-    width: 160px;
+    /*width: 160px;*/
+    width:65%;
   }
 
   #login .login_pwd {
-    width: 160px;
+    /*width: 160px;*/
+    width:65%;
   }
 
   #getValidSms {
@@ -631,11 +648,13 @@ header p {
 
 @media only screen and (max-width: 320px) {
   #login .login_valid {
-    width: 144px;
+    /*width: 144px;*/
+    width:65%;
   }
 
   #login .login_pwd {
-    width: 144px;
+    width:65%;
+    /*width: 144px;*/
   }
 
   #getValidSms {

+ 2 - 0
app/src/page/mainpage.vue

@@ -167,8 +167,10 @@ export default {
   display: block;
   margin: 0 auto;
   background: #f2f2f2;
+  overflow-y: scroll;
 }
 
+
 .goPage {
   overflow: hidden;
   display: block;

+ 12 - 1
app/src/page/mine.vue

@@ -8,7 +8,7 @@
       <div class="user">
         <img src="../static/images/mine/User.png" height="53" width="53"/>
         <span>{{ user.Name }}</span>
-        <em>{{ user.Phone }}</em>
+        <em>{{ user.Phone  | hidePhone}}</em>
       </div>
       <div class="value" v-for="s in schools" v-if="s.IsJoin == 1">
         <div class="vTitle year" v-if="s.VipType == 1"><i></i>年会员</div>
@@ -181,6 +181,17 @@ export default {
     },
   },
   filters: {
+    hidePhone:function (val){
+      var str = String(val)
+      var len = str.length;
+      if (len >= 7) {
+        var reg = str.slice(-8, -4)
+        return str.replace(reg, "****")
+      } else if (len < 7 && len >= 6) {
+        var reg = str.slice(-4, -2)
+        return str.replace(reg, "**")
+      }
+    },
     fmtTime: function (value) {
       if (!value) {
         return 0

+ 92 - 14
app/src/page/record.vue

@@ -16,6 +16,7 @@
           <li v-for="l in list">
             <div class="lt" v-if="active != 2">
               <h5>{{ l.CurrentDate }}</h5>
+              <em>{{ l.CurrentDate |filterWeek}}</em>
               <span>{{ l.BeginStr }}-{{ l.EndStr }}</span>
             </div>
             <div class="lt" v-if="active == 2">
@@ -28,18 +29,18 @@
                                      {{ l.ClassName }}
                                 </span>
               </em>
-              <span class="green" v-if="l.Status == 0">
-                            预约上课
-                        </span>
-              <span class="green" v-if="l.Status == 1 && active == 0">
-                            已预约
-                        </span>
+<!--              <span class="green" v-if="l.Status == 0">-->
+<!--                            预约上课-->
+<!--                        </span>-->
+<!--              <span class="green" v-if="l.Status == 1 && active == 0">-->
+<!--                            已预约-->
+<!--                        </span>-->
             </div>
             <div class="rt">
-              <mu-button color="error" v-if="l.Status == 0" round @click="cancleAppoint(l)">取消</mu-button>
+              <mu-button color="error" flat  v-if="l.Status == 0"  @click="cancleAppoint(l)">取消预约</mu-button>
               <span v-if="l.Status == 1" class="isFinish">
 <!--                            已预约-->
-                             <mu-button color="error" round @click="cancleAppoint(l)">取消</mu-button>
+                             <mu-button color="error" flat  @click="cancleAppoint(l)">取消预约</mu-button>
                         </span>
               <span class="red" v-if="l.Status == 2">
                             已取消
@@ -225,6 +226,31 @@ export default {
           break;
       }
     },
+    numberToWeek(val) {
+      switch (parseInt(val)) {
+        case 1:
+          return '星期一'
+          break;
+        case 2:
+          return '星期二'
+          break;
+        case 3:
+          return '星期三'
+          break;
+        case 4:
+          return '星期四'
+          break;
+        case 5:
+          return '星期五'
+          break;
+        case 6:
+          return '星期六'
+          break;
+        case 0:
+          return '星期天'
+          break;
+      }
+    },
   },
   beforeRouteEnter(to, from, next) {
     next(vm => {
@@ -243,6 +269,33 @@ export default {
         return globalfmtDate(value);
       }
     },
+    filterWeek:function (value){
+      if (!value) return false
+      let days = new Date(value).getDay();
+      switch (parseInt(days)) {
+        case 1:
+          return '星期一'
+          break;
+        case 2:
+          return '星期二'
+          break;
+        case 3:
+          return '星期三'
+          break;
+        case 4:
+          return '星期四'
+          break;
+        case 5:
+          return '星期五'
+          break;
+        case 6:
+          return '星期六'
+          break;
+        case 0:
+          return '星期天'
+          break;
+      }
+    }
   },
   watch: {
     '$route'(to) {
@@ -360,27 +413,45 @@ export default {
 }
 
 .list .lt h5 {
+  width: 100%;
+  overflow: hidden;
+  display: block;
+  margin: 0 auto;
   font-family: "PingFang SC";
   font-weight: normal;
-  font-size: 14px;
-  text-align: left;
+  font-size: 13px;
+  text-align: center;
   color: #4e4e4e;
   margin: 0;
 }
 
 .list .lt span {
+  width: 100%;
+  overflow: hidden;
+  display: block;
+  margin: 0 auto;
   font-family: "PingFang SC";
   font-weight: normal;
   font-size: 12px;
-  text-align: left;
+  text-align: center;
   color: #909090;
+
+}
+.list .lt em {
+  width: 100%;
+  overflow: hidden;
+  display: block;
+  margin: 0 auto;
+  font-size: 12px;
+  text-align: center;
 }
 
 .list .md {
   max-width: 200px;
   /*width: 220px;*/
   float: left;
-  padding-top: 5px;
+  margin-left: 10%;
+  padding-top: 14px;
 }
 
 .list .rt {
@@ -389,7 +460,7 @@ export default {
   overflow: hidden;
   display: block;
   margin: 0 auto;
-  padding-top: 4px;
+  padding-top: 9px;
 }
 
 .md em {
@@ -491,13 +562,20 @@ span.red {
 }
 
 .lessons {
-  width: auto;
+  width: 100%;
+  overflow: hidden;
   padding: 1px 11px;
   border-radius: 250px;
   float: left;
   text-align: center;
   color: #333;
 }
+/deep/ .mu-button-wrapper {
+  border: 1px solid #F8847F;
+  color: #F8847F;
+  background: #FFF7F7;
+  border-radius: 5px;
+}
 
 @media only screen and (max-width: 640px) {
 

BIN
genkey/GoAllOut.keystore


+ 2 - 0
genkey/readme.txt

@@ -0,0 +1,2 @@
+pwd
+asdf*123

BIN
hub/demo-0.0.1-SNAPSHOT.jar


+ 2 - 0
hub/start.bat

@@ -0,0 +1,2 @@
+@echo off
+java -jar ./demo-0.0.1-SNAPSHOT.jar

BIN
icon/144.png


BIN
icon/192.png


BIN
icon/72.png


BIN
icon/96.png


BIN
icon/启动页1242720.png


BIN
icon/启动页18821080.png


BIN
icon/启动页762480.png


+ 12 - 10
pc/public/index.html

@@ -1,17 +1,19 @@
 <!DOCTYPE html>
 <html lang="zh-CN">
-  <head>
+<head>
     <meta charset="utf-8">
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
-    <meta name="viewport" content="width=device-width,initial-scale=1.0">
+<!--    <meta name="viewport" content="width=device-width,initial-scale=1.0">-->
+    <meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" name="viewport"/>
     <link rel="icon" href="<%= BASE_URL %>favicon.ico">
     <title><%= htmlWebpackPlugin.options.title %></title>
-  </head>
-  <body>
-    <noscript>
-      <strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
-    </noscript>
-    <div id="app"></div>
-    <!-- built files will be auto injected -->
-  </body>
+</head>
+<body>
+<noscript>
+    <strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled.
+        Please enable it to continue.</strong>
+</noscript>
+<div id="app"></div>
+<!-- built files will be auto injected -->
+</body>
 </html>

+ 2 - 2
pc/src/api/Navs.js

@@ -223,7 +223,7 @@ let navs = [
         "clmname": "心率设备",
         "clmurl": "/heartEquip",
         "prname": "",
-        "show": 2,
+        "show": 99,//2
         "grouplist": "2,5",
         "icon": "el-icon-cpu",
     }, {
@@ -232,7 +232,7 @@ let navs = [
         "clmname": "区域管理",
         "clmurl": "/region",
         "prname": "",
-        "show": 2,
+        "show": 99,//2
         "grouplist": "2,5",
         "icon": "el-icon-map-location",
     },

+ 1 - 1
pc/src/components/preview.vue

@@ -168,7 +168,7 @@
         line-height:39px;
         font-family: "Source Han Sans CN";
         font-weight: normal;
-        font-size: 12px;
+        font-size: 16px;
         text-align: center;
         overflow: hidden;
         display: block;

+ 10 - 0
pc/src/views/Lesson.vue

@@ -336,6 +336,16 @@ export default {
         '#D9D9C4',
         '#FCECBE',
         '#E9E9E9',
+        '#FFA5FC',
+        '#B7BEFF',
+        '#91E5FF',
+        '#97FFF8',
+        '#A7FFB8',
+        '#75FF65',
+        '#FFFF94',
+        '#FFE0AC',
+        '#FFB770',
+        '#FFCCB5'
       ]
     }
   },

+ 2 - 1
pc/src/views/LessonTable.vue

@@ -16,7 +16,8 @@
                     :default-sort="{prop: 'date', order: 'descending'}"
                     element-loading-background="rgba(0, 0, 0, 0.8)"
                     class=""
-                    @selection-change="handleSelectionChange"                                   @current-change="clickChange"
+                    @selection-change="handleSelectionChange"
+                    @current-change="clickChange"
 >
             >
                 <el-table-column label="选择" width="55">

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

@@ -46,8 +46,6 @@ import {
 
 let qs = require('qs');
 import Global from '../Global.js'
-
-
 export default {
   data() {
     return {

+ 8 - 4
pc/src/views/appoint.vue

@@ -24,7 +24,7 @@
                 </el-col>
                 <el-col :span="5">
                   <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="5">
                   <em>预约课程:</em>
@@ -872,7 +872,6 @@ export default {
       })
     },
     confirmEditMember() {
-      console.log(123);
       let that = this;
       // checkNum
       if (!that.form.userCode) {
@@ -1203,7 +1202,6 @@ export default {
             that.allTableData2 = [];
             that.recordsTotal2 = 0;
           }
-
           // 设置分页数据
           that.setPaginations2();
         } else {
@@ -1295,6 +1293,7 @@ export default {
         this.weeks.push(item)
       }
     },
+
     // 获取未来7天的
     getFurtherDays() {
       let now = new Date();
@@ -1588,21 +1587,26 @@ em {
 .timeList li.active span, .timeList li.active em {
   color: #fff;
 }
+
 /*ipad only*/
 @media only screen and (max-width: 1366px) {
-  .panel-body em{
+  .panel-body em {
     font-size: 12px;
   }
+
   .timeList {
     width: 510px;
   }
+
   .timeList li {
     width: 60px;
     font-size: 12px;
   }
+
   .timeList em {
     font-size: 12px;
   }
+
   .timeList span {
     font-size: 12px;
   }

+ 190 - 85
pc/src/views/heartLog.vue

@@ -1,7 +1,12 @@
 <template>
   <div class="context">
     <div class="panel">
-      <h5>使用记录</h5>
+      <h5>所属设备 -- {{regionName}}</h5>
+    </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
@@ -19,29 +24,35 @@
             width="50">
         </el-table-column>
         <el-table-column
-            prop="CreatedAt"
-            label="日期"
-            :formatter="filterFmtDate"
-            sortable
+            prop="name"
+            label="序列号"
+        >
+        </el-table-column>
+        <el-table-column
+            prop="name"
+            label="类型"
         >
         </el-table-column>
         <el-table-column
-            prop="OptName"
-            label="操作者"
-            sortable
+            prop="date"
+            label="创建日期"
+            width="180"
+            :formatter="filterFmtDate"
         >
         </el-table-column>
         <el-table-column
-            prop="OptInfo"
-            label="操作信息"
-            sortable
+            prop="State"
+            label="状态"
         >
+        </el-table-column>
+        <el-table-column
+            prop="address"
+            label="操作">
           <template slot-scope="scope">
-            <span v-if="scope.row.AdminType  == 1" style="color: #005EA2">已领取</span>
-            <span v-else style="color: green">已归还</span>
+            <el-button type="success" @click="run(scope.row.id)" v-if="scope.row.State != 0">开启</el-button>
+            <el-button type="danger" @click="pause(scope.row.id)">暂停</el-button>
           </template>
         </el-table-column>
-        </el-table-column>
       </el-table>
       <br>
       <el-pagination
@@ -51,7 +62,26 @@
           @current-change="pageChange"
       ></el-pagination>
     </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="编号">
+              <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>
+        </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>
 
@@ -60,39 +90,18 @@ import Global from '../Global.js'
 import {
   OptLogListQuery,
   testTable,
-  testSelect, ShopManagerListQuery, ShopListQuery
+  testSelect, ShopManagerListQuery, ShopListQuery, ShopManagerStatusEdit
 } from "../api/getApiRes";
 
 let qs = require('qs');
 export default {
   data() {
     return {
+      regionName: this.$route.query.regionName,
       dialogVisible: false,
-      dialogTitle: '新增管理员',
-      times: globalBt2(7),
+      dialogMemberVisible: false,
+      dialogTitle: '新增区域设备',
       // panel 配置项目
-      panel: {
-        userCode: '',
-        tel: '',
-        userId: '',
-        shopList: 0,
-        shopId: '',
-        options: [],
-        shopOptions: [],
-        draw: 1,
-        start: 0,
-        recordsTotal: 0,
-        tableData: [],
-        allTableData: [],
-        limit: '10',
-        multipleSort: false,
-        loading: false,
-        fileList: [],
-        multipleSelection: [],
-        detectedmac: '',
-        time1: globalBt(),
-        timeScope: globalBt2(30),
-      },
       multipleSelection: [],
       pageination: {
         pageItem: 100,
@@ -104,6 +113,7 @@ export default {
         name: '',
         userCode: '',
         shopId: '',
+        btnType: 0,
       },
       shops: [],
       tableData: [],
@@ -111,71 +121,171 @@ export default {
     }
   },
   mounted() {
-    this.panelSelect();
-    this.shopPanelSelect();
     this.getTableQuery();
   },
   methods: {
-    shopPanelSelect(){
+    clearForm() {
+      // clear
+      this.form.name = '';
+      this.form.userCode = '';
+      this.form.shopId = '';
+    },
+    handleSelectionChange(val) {
+      this.multipleSelection = val;
+    },
+    // 新增心率设备
+    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,
+        userId: userId,
+        status: 9,//0禁用1启用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: '已取消删除'
+        });
+      });
+    },
+    // 编辑
+    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
+    },
+    // 确认提交新增心率设备
+    confirmMember() {
+      let that = this;
+      // checkNum
+      if (!that.form.phone) {
+        this.$message.error('错了哦,编号不能为空');
+        return false
+      }
+      if (!that.form.name) {
+        this.$message.error('错了哦,实体序列号不能为空');
+        return false
+      }
+
       let param = {
         token: localStorage.token,
+        shopId: localStorage.shopId,
+        name: that.form.name,
+        phone: that.form.phone,
       };
       let postdata = qs.stringify(param);
-      ShopListQuery(postdata).then(res => {
+      TeacherAdd(postdata).then(res => {
         let json = res;
         if (json.Code == 0) {
-          if (json.Rs == '') {
-            that.$message.error('当前没有可选的店铺,请先在店面管理中添加店铺!');
-            return false
-          }
-          that.panel.shopOptions = turnShopResToOption(json.Rs);
-          that.panel.shopOptions.unshift({value: '', label: "全部"});
+          // 关闭弹窗
+          that.dialogMemberVisible = false;
+          // 重载列表
+          that.getTableQuery();
+          that.$message({
+            showClose: true,
+            message: '心率设备添加成功!',
+            type: 'success'
+          });
         } else {
           that.$message.error(json.Memo);
         }
       })
     },
-    // 加载选项
-    panelSelect() {
+    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,
-        start: 1,
-        tableMax: 999,
+        shopId: localStorage.shopId,
+        teacherId: that.form.teacherId,
+        name: that.form.name,
+        phone: that.form.phone,
       };
       let postdata = qs.stringify(param);
-      ShopManagerListQuery(postdata).then(res => {
+      TeacherEdit(postdata).then(res => {
         let json = res;
         if (json.Code == 0) {
-          that.panel.options = this.turnResToOptionByUsers(json.Rs);
-          that.panel.options.unshift({value: '', label: "全部"});
-          console.log(that.panel.options);
+          // 关闭弹窗
+          that.dialogMemberVisible = false;
+          // 重载列表
+          that.getTableQuery();
+          that.$message({
+            showClose: true,
+            message: '心率设备信息编辑成功!',
+            type: 'success'
+          });
         } else {
           that.$message.error(json.Memo);
         }
       })
     },
-    turnResToOptionByUsers(data) {
-      if (!data) return false
-      let ids = data.map(item => {
-        return {
-          label: item.Name + ' ' + item.Phone,
-          key: parseInt(item.Id),
-          value: parseInt(item.Id),
-        }
-      })
-      return ids
-    },
-    clearForm() {
-      // clear
-      this.form.name = '';
-      this.form.userCode = '';
-      this.form.shopId = '';
-    },
-    handleSelectionChange(val) {
-      this.multipleSelection = val;
-    },
     // 查询按钮
     query() {
       // 按钮倒计时
@@ -201,17 +311,12 @@ export default {
       // 查询检测设备。上级区域id,区域id必传。regionid传0,查询supregionid对应所有子区域的检测设备。 如果supregionid,regionid都传0,默认查询企业ID下所有检测设备
       let param = {
         token: localStorage.token,
-        name: this.panel.name,
-        phone: this.panel.phone,
-        userId: this.panel.userId,
-        bt: nonTfmtDatetoLength(that.panel.timeScope[0], 10) + " 00:00:00",
-        et: nonTfmtDatetoLength(that.panel.timeScope[1], 10) + " 23:59:59",
         start: 1,//
         tableMax: 9999,//
-        optShopId:this.panel.shopId,
+        id:this.$route.query.id,
       };
       let postdata = qs.stringify(param);
-      OptLogListQuery(postdata).then(res => {
+      testTable(postdata).then(res => {
         let json = res;
         if (json.Code == 0) {
           that.loading = false;

+ 6 - 3
pc/src/views/region.vue

@@ -165,7 +165,7 @@ export default {
   },
   methods: {
     // 设备回收
-    takeBack(row){
+    takeBack(row) {
       let that = this;
       this.$confirm('是否回收用户' + row.name + '的区域?', '回收操作', {
         confirmButtonText: '确定',
@@ -199,8 +199,11 @@ export default {
         });
       });
     },
-    goPage(row){
-      this.$router.push({path:'/heartLog',id:row.id});
+    goPage(row) {
+      this.$router.push({path: '/heartLog', query: {
+        id: row.id,
+        regionName:row.name
+      }});
     },
     // 编辑
     editList() {

+ 4 - 0
tv/.idea/encodings.xml

@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="Encoding" addBOMForNewFiles="with NO BOM" />
+</project>

+ 6 - 0
tv/.idea/misc.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="JavaScriptSettings">
+    <option name="languageLevel" value="ES6" />
+  </component>
+</project>

+ 543 - 22
tv/.idea/workspace.xml

@@ -20,47 +20,296 @@
   </component>
   <component name="ChangeListManager">
     <list default="true" id="c813a37b-038b-4bb1-a925-c03a432a7638" name="Default Changelist" comment="">
-      <change afterPath="$PROJECT_DIR$/src/static/img/circle.png" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/src/static/img/dialog.png" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/src/static/img/rankBg.png" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/.idea/encodings.xml" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/.idea/misc.xml" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/assets/css/main.css" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/assets/css/mainBk.css" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/assets/css/mainBk2.css" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/components/newRecord.vue" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/libs/rem.js" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/static/img/blue.svg" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/static/img/ck.png" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/static/img/ck.svg" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/static/img/fire.png" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/static/img/foot.png" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/static/img/heart.svg" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/static/img/kaluli.png" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/static/img/logo.svg" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/static/img/newRecord/record.png" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/static/img/newRecord/record_icon.png" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/static/img/newRecord/record_title.png" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/static/img/people/dcp.png" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/static/img/people/gc.png" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/static/img/people/jy.png" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/static/img/people/jyq.png" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/static/img/people/lhs.png" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/static/img/people/lxl.png" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/static/img/people/lyh.png" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/static/img/people/slc.png" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/static/img/people/sxf.png" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/static/img/people/sxf2.png" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/static/img/people/wfl.png" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/static/img/people/wzx.png" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/static/img/people/ydy.png" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/static/img/people/zjh.png" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/static/img/people/zr.png" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/static/img/people/zw.png" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/static/img/people/zy.png" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/static/img/pingtai.png" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/static/img/pk/bcube.png" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/static/img/pk/bfight.png" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/static/img/pk/blue.png" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/static/img/pk/left_power.png" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/static/img/pk/light.png" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/static/img/pk/rcube.png" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/static/img/pk/red.png" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/static/img/pk/rfight.png" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/static/img/pk/right_power.png" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/static/img/pk/vs.png" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/static/img/pkBg.png" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/static/img/rank/boy.png" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/static/img/rank/girl.png" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/static/img/s1.svg" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/static/img/s2.svg" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/static/img/superfire.png" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/static/img/t1.svg" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/static/img/t2.svg" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/static/img/t3.svg" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/static/img/t4.svg" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/static/img/t5.svg" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/static/img/t6.svg" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/static/img/wifi.svg" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/static/img/yellowFire.png" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/src/views/pk.vue" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/../app/public/index.html" beforeDir="false" afterPath="$PROJECT_DIR$/../app/public/index.html" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/../app/src/App.vue" beforeDir="false" afterPath="$PROJECT_DIR$/../app/src/App.vue" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/../app/src/api/getApiRes.js" beforeDir="false" afterPath="$PROJECT_DIR$/../app/src/api/getApiRes.js" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/../app/src/page/appoint.vue" beforeDir="false" afterPath="$PROJECT_DIR$/../app/src/page/appoint.vue" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/../app/src/page/lesson.vue" beforeDir="false" afterPath="$PROJECT_DIR$/../app/src/page/lesson.vue" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/../app/src/page/login.vue" beforeDir="false" afterPath="$PROJECT_DIR$/../app/src/page/login.vue" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/../app/src/page/mainpage.vue" beforeDir="false" afterPath="$PROJECT_DIR$/../app/src/page/mainpage.vue" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/../app/src/page/mine.vue" beforeDir="false" afterPath="$PROJECT_DIR$/../app/src/page/mine.vue" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/../app/src/page/record.vue" beforeDir="false" afterPath="$PROJECT_DIR$/../app/src/page/record.vue" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/../pc/public/index.html" beforeDir="false" afterPath="$PROJECT_DIR$/../pc/public/index.html" 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/components/preview.vue" beforeDir="false" afterPath="$PROJECT_DIR$/../pc/src/components/preview.vue" 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/LessonTable.vue" beforeDir="false" afterPath="$PROJECT_DIR$/../pc/src/views/LessonTable.vue" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/../pc/src/views/Login.vue" beforeDir="false" afterPath="$PROJECT_DIR$/../pc/src/views/Login.vue" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/../pc/src/views/appoint.vue" beforeDir="false" afterPath="$PROJECT_DIR$/../pc/src/views/appoint.vue" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/../pc/src/views/heartLog.vue" beforeDir="false" afterPath="$PROJECT_DIR$/../pc/src/views/heartLog.vue" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/../pc/src/views/region.vue" beforeDir="false" afterPath="$PROJECT_DIR$/../pc/src/views/region.vue" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/README.md" beforeDir="false" afterPath="$PROJECT_DIR$/README.md" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/package.json" beforeDir="false" afterPath="$PROJECT_DIR$/package.json" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/public/index.html" beforeDir="false" afterPath="$PROJECT_DIR$/public/index.html" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/App.vue" beforeDir="false" afterPath="$PROJECT_DIR$/src/App.vue" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/Global.js" beforeDir="false" afterPath="$PROJECT_DIR$/src/Global.js" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/src/Mock/index.js" beforeDir="false" afterPath="$PROJECT_DIR$/src/Mock/index.js" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/src/api/getApiRes.js" beforeDir="false" afterPath="$PROJECT_DIR$/src/api/getApiRes.js" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/src/components/Headside.vue" beforeDir="false" afterPath="$PROJECT_DIR$/src/components/Headside.vue" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main.js" beforeDir="false" afterPath="$PROJECT_DIR$/src/main.js" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/src/router/index.js" beforeDir="false" afterPath="$PROJECT_DIR$/src/router/index.js" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/static/img/mainBg.png" beforeDir="false" afterPath="$PROJECT_DIR$/src/static/img/mainBg.png" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/static/img/rankBg.png" beforeDir="false" afterPath="$PROJECT_DIR$/src/static/img/rankBg.png" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/views/Index.vue" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/Index.vue" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/src/views/Main.vue" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/Main.vue" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/src/views/Wait.vue" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/Rank.vue" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/views/Rank.vue" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/Rank.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/" />
+    <ignored path="$PROJECT_DIR$/tmp/" />
+    <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
     <option name="SHOW_DIALOG" value="false" />
     <option name="HIGHLIGHT_CONFLICTS" value="true" />
     <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
     <option name="LAST_RESOLUTION" value="IGNORE" />
   </component>
+  <component name="FileEditorManager">
+    <leaf SIDE_TABS_SIZE_LIMIT_KEY="375">
+      <file pinned="false" current-in-tab="true">
+        <entry file="file://$PROJECT_DIR$/src/views/Main.vue">
+          <provider selected="true" editor-type-id="text-editor">
+            <state relative-caret-position="295">
+              <caret line="204" column="13" lean-forward="true" selection-start-line="204" selection-start-column="13" selection-end-line="204" selection-end-column="13" />
+              <folding>
+                <element signature="e#5171#5215#0" expanded="true" />
+              </folding>
+            </state>
+          </provider>
+        </entry>
+      </file>
+    </leaf>
+  </component>
   <component name="FileTemplateManagerImpl">
     <option name="RECENT_TEMPLATES">
       <list>
+        <option value="JavaScript File" />
         <option value="Vue Single File Component" />
+        <option value="CSS File" />
       </list>
     </option>
   </component>
+  <component name="FindInProjectRecents">
+    <findStrings>
+      <find>fastJump</find>
+      <find>bottomLi</find>
+      <find>.bottomLi span</find>
+      <find>four</find>
+      <find>width: 3rem</find>
+      <find>endTime</find>
+      <find>ClacClassTime</find>
+      <find>fakeNews</find>
+      <find>BluestudentsClassName</find>
+      <find>studentsClassName</find>
+      <find>Bluestudents</find>
+      <find>giveClassName</find>
+      <find>students</find>
+      <find>sumBg</find>
+      <find>sum</find>
+      <find>.name</find>
+      <find>move</find>
+      <find>slowJump</find>
+      <find>bottomLi img</find>
+      <find>six</find>
+      <find>.ten</find>
+      <find>cube</find>
+      <find>.levelIcon li em</find>
+      <find>.levelIcon li span</find>
+      <find>.levelIcon li span div</find>
+      <find>png</find>
+      <find>static/img/</find>
+      <find>box-shadow</find>
+      <find>twelve</find>
+      <find>heart</find>
+    </findStrings>
+    <replaceStrings>
+      <replace>0.2rem</replace>
+      <replace>parseInt(res.length)</replace>
+    </replaceStrings>
+  </component>
   <component name="Git.Settings">
     <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$/.." />
   </component>
+  <component name="IdeDocumentHistory">
+    <option name="CHANGED_PATHS">
+      <list>
+        <option value="$PROJECT_DIR$/src/Mock/index.js" />
+        <option value="$PROJECT_DIR$/src/lib/rem.js" />
+        <option value="$PROJECT_DIR$/src/assets/css/mainBk.css" />
+        <option value="$PROJECT_DIR$/src/components/newRecord.vue" />
+        <option value="$PROJECT_DIR$/src/App.vue" />
+        <option value="$PROJECT_DIR$/src/views/Index.vue" />
+        <option value="$PROJECT_DIR$/src/assets/css/mainBk2.css" />
+        <option value="$PROJECT_DIR$/README.md" />
+        <option value="$PROJECT_DIR$/src/api/getApiRes.js" />
+        <option value="$PROJECT_DIR$/package.json" />
+        <option value="$PROJECT_DIR$/src/main.js" />
+        <option value="$PROJECT_DIR$/src/router/index.js" />
+        <option value="$PROJECT_DIR$/vue.config.js" />
+        <option value="$PROJECT_DIR$/src/views/pk.vue" />
+        <option value="$PROJECT_DIR$/src/components/Headside.vue" />
+        <option value="$PROJECT_DIR$/src/views/Rank.vue" />
+        <option value="$PROJECT_DIR$/src/views/Main.vue" />
+      </list>
+    </option>
+  </component>
+  <component name="JsFlowSettings">
+    <service-enabled>true</service-enabled>
+    <exe-path />
+    <other-services-enabled>true</other-services-enabled>
+    <auto-save>true</auto-save>
+  </component>
+  <component name="ProjectFrameBounds" extendedState="6">
+    <option name="x" value="-2568" />
+    <option name="y" value="-8" />
+    <option name="width" value="2576" />
+    <option name="height" value="1395" />
+  </component>
   <component name="ProjectId" id="1jXXjXdwK5v7WohMBoZDModntXR" />
   <component name="ProjectLevelVcsManager" settingsEditedManually="true">
     <ConfirmationsSetting value="2" id="Add" />
   </component>
+  <component name="ProjectView">
+    <navigator proportions="" version="1">
+      <foldersAlwaysOnTop value="true" />
+    </navigator>
+    <panes>
+      <pane id="Scope" />
+      <pane id="ProjectPane">
+        <subPane>
+          <expand>
+            <path>
+              <item name="tv" type="b2602c69:ProjectViewProjectNode" />
+              <item name="tv" type="462c0819:PsiDirectoryNode" />
+            </path>
+            <path>
+              <item name="tv" type="b2602c69:ProjectViewProjectNode" />
+              <item name="tv" type="462c0819:PsiDirectoryNode" />
+              <item name="src" type="462c0819:PsiDirectoryNode" />
+            </path>
+            <path>
+              <item name="tv" type="b2602c69:ProjectViewProjectNode" />
+              <item name="tv" type="462c0819:PsiDirectoryNode" />
+              <item name="src" type="462c0819:PsiDirectoryNode" />
+              <item name="router" type="462c0819:PsiDirectoryNode" />
+            </path>
+            <path>
+              <item name="tv" type="b2602c69:ProjectViewProjectNode" />
+              <item name="tv" type="462c0819:PsiDirectoryNode" />
+              <item name="src" type="462c0819:PsiDirectoryNode" />
+              <item name="static" type="462c0819:PsiDirectoryNode" />
+            </path>
+            <path>
+              <item name="tv" type="b2602c69:ProjectViewProjectNode" />
+              <item name="tv" type="462c0819:PsiDirectoryNode" />
+              <item name="src" type="462c0819:PsiDirectoryNode" />
+              <item name="static" type="462c0819:PsiDirectoryNode" />
+              <item name="img" type="462c0819:PsiDirectoryNode" />
+            </path>
+            <path>
+              <item name="tv" type="b2602c69:ProjectViewProjectNode" />
+              <item name="tv" type="462c0819:PsiDirectoryNode" />
+              <item name="src" type="462c0819:PsiDirectoryNode" />
+              <item name="static" type="462c0819:PsiDirectoryNode" />
+              <item name="img" type="462c0819:PsiDirectoryNode" />
+              <item name="newRecord" type="462c0819:PsiDirectoryNode" />
+            </path>
+            <path>
+              <item name="tv" type="b2602c69:ProjectViewProjectNode" />
+              <item name="tv" type="462c0819:PsiDirectoryNode" />
+              <item name="src" type="462c0819:PsiDirectoryNode" />
+              <item name="static" type="462c0819:PsiDirectoryNode" />
+              <item name="img" type="462c0819:PsiDirectoryNode" />
+              <item name="people" type="462c0819:PsiDirectoryNode" />
+            </path>
+          </expand>
+          <select />
+        </subPane>
+      </pane>
+    </panes>
+  </component>
   <component name="ProjectViewState">
     <option name="hideEmptyMiddlePackages" value="true" />
     <option name="showLibraryContents" value="true" />
   </component>
   <component name="PropertiesComponent">
+    <property name="JavaScriptWeakerCompletionTypeGuess" value="true" />
     <property name="RunOnceActivity.OpenProjectViewOnStart" value="true" />
     <property name="WebServerToolWindowFactoryState" value="false" />
     <property name="dart.analysis.tool.window.visible" value="false" />
-    <property name="last_opened_file_path" value="$PROJECT_DIR$/src/static/img" />
+    <property name="last_opened_file_path" value="E:/wamp64/www/EVA-OS" />
+    <property name="list.type.of.created.stylesheet" value="CSS" />
+    <property name="node.js.detected.package.eslint" value="true" />
+    <property name="node.js.detected.package.standard" value="true" />
+    <property name="node.js.path.for.package.eslint" value="project" />
+    <property name="node.js.path.for.package.standard" value="project" />
+    <property name="node.js.selected.package.eslint" value="" />
+    <property name="node.js.selected.package.standard" value="" />
     <property name="nodejs_package_manager_path" value="npm" />
     <property name="restartRequiresConfirmation" value="false" />
+    <property name="settings.editor.selected.configurable" value="preferences.lookFeel" />
     <property name="vue.rearranger.settings.migration" value="true" />
   </component>
   <component name="RecentsManager">
@@ -68,10 +317,36 @@
       <recent name="D:\wwwroot\flyLong\tv\src\static\img" />
     </key>
     <key name="CopyFile.RECENT_KEYS">
+      <recent name="D:\wwwroot\flyLong\tv\src\static\img\people" />
       <recent name="D:\wwwroot\flyLong\tv\src\static\img" />
+      <recent name="D:\wwwroot\flyLong\tv\src\static\img\rank" />
+      <recent name="D:\wwwroot\flyLong\tv\src\static\img\newRecord" />
+      <recent name="D:\wwwroot\flyLong\tv\src\static\img\pk" />
     </key>
   </component>
-  <component name="RunManager">
+  <component name="RunDashboard">
+    <option name="ruleStates">
+      <list>
+        <RuleState>
+          <option name="name" value="ConfigurationTypeDashboardGroupingRule" />
+        </RuleState>
+        <RuleState>
+          <option name="name" value="StatusDashboardGroupingRule" />
+        </RuleState>
+      </list>
+    </option>
+  </component>
+  <component name="RunManager" selected="npm.serve">
+    <configuration name="build" type="js.build_tools.npm" nameIsGenerated="true">
+      <package-json value="$PROJECT_DIR$/package.json" />
+      <command value="run" />
+      <scripts>
+        <script value="build" />
+      </scripts>
+      <node-interpreter value="project" />
+      <envs />
+      <method v="2" />
+    </configuration>
     <configuration name="serve" type="js.build_tools.npm" nameIsGenerated="true">
       <package-json value="$PROJECT_DIR$/package.json" />
       <command value="run" />
@@ -82,8 +357,15 @@
       <envs />
       <method v="2" />
     </configuration>
+    <list>
+      <item itemvalue="npm.serve" />
+      <item itemvalue="npm.build" />
+    </list>
+  </component>
+  <component name="SpellCheckerSettings" BundledDictionaries="0" Folders="0" CustomDictionaries="0" Dictionaries="0" CorrectionsLimit="5" DefaultDictionary="application-level" UseSingleDictionary="true" />
+  <component name="SvnConfiguration">
+    <configuration />
   </component>
-  <component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="application-level" UseSingleDictionary="true" transferred="true" />
   <component name="TaskManager">
     <task active="true" id="Default" summary="Default task">
       <changelist id="c813a37b-038b-4bb1-a925-c03a432a7638" name="Default Changelist" comment="" />
@@ -95,49 +377,112 @@
       <workItem from="1604020412952" duration="1300000" />
       <workItem from="1604022872771" duration="1602000" />
       <workItem from="1604036567460" duration="34092000" />
+      <workItem from="1604298244052" duration="5840000" />
+      <workItem from="1604366618720" duration="37155000" />
+      <workItem from="1604539672735" duration="79000" />
+      <workItem from="1604540536502" duration="646000" />
+      <workItem from="1604541901536" duration="160559000" />
+      <workItem from="1605406240238" duration="799000" />
     </task>
     <servers />
   </component>
+  <component name="TimeTrackingManager">
+    <option name="totallyTimeSpent" value="162004000" />
+  </component>
+  <component name="ToolWindowManager">
+    <frame x="-2568" y="-8" width="2576" height="1395" extended-state="6" />
+    <editor active="true" />
+    <layout>
+      <window_info content_ui="combo" id="Project" order="0" weight="0.1539075" />
+      <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.32692307" />
+      <window_info anchor="bottom" id="Run" order="2" 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" />
+      <window_info anchor="bottom" id="TODO" order="6" />
+      <window_info anchor="bottom" id="PHP-CGI Server" order="7" />
+      <window_info anchor="bottom" id="Event Log" order="8" side_tool="true" weight="0.32940185" />
+      <window_info anchor="bottom" id="Version Control" order="9" weight="0.32918552" />
+      <window_info anchor="bottom" id="Terminal" order="10" weight="0.17354676" />
+      <window_info anchor="bottom" id="Database Changes" order="11" />
+      <window_info anchor="right" id="Commander" order="0" weight="0.4" />
+      <window_info anchor="right" id="Ant Build" order="1" weight="0.25" />
+      <window_info anchor="right" content_ui="combo" id="Hierarchy" order="2" weight="0.25" />
+      <window_info anchor="right" id="Database" order="3" />
+    </layout>
+  </component>
   <component name="TypeScriptGeneratedFilesManager">
-    <option name="version" value="3" />
+    <option name="version" value="1" />
   </component>
   <component name="Vcs.Log.Tabs.Properties">
     <option name="TAB_STATES">
       <map>
         <entry key="MAIN">
           <value>
-            <State />
+            <State>
+              <option name="RECENTLY_FILTERED_USER_GROUPS">
+                <collection />
+              </option>
+              <option name="RECENTLY_FILTERED_BRANCH_GROUPS">
+                <collection />
+              </option>
+            </State>
+          </value>
+        </entry>
+      </map>
+    </option>
+    <option name="RECENT_FILTERS">
+      <map>
+        <entry key="Branch">
+          <value>
+            <list />
+          </value>
+        </entry>
+        <entry key="User">
+          <value>
+            <list />
           </value>
         </entry>
       </map>
     </option>
-    <option name="oldMeFiltersMigrated" value="true" />
   </component>
   <component name="WindowStateProjectService">
     <state x="-1830" y="274" width="1099" height="859" key="#com.intellij.execution.impl.EditConfigurationsDialog" timestamp="1604022799787">
       <screen x="-2560" y="0" width="2560" height="1379" />
     </state>
     <state x="-1830" y="274" width="1099" height="859" key="#com.intellij.execution.impl.EditConfigurationsDialog/0.0.1920.1019/-2560.0.2560.1379@-2560.0.2560.1379" timestamp="1604022799787" />
-    <state width="1250" height="371" key="GridCell.Tab.0.bottom" timestamp="1604132708064">
-      <screen x="-2560" y="0" width="2560" height="1379" />
+    <state width="1252" height="367" key="GridCell.Tab.0.bottom" timestamp="1604539575798">
+      <screen x="0" y="0" width="1920" height="1050" />
     </state>
-    <state width="1250" height="371" key="GridCell.Tab.0.bottom/0.0.1920.1019/-2560.0.2560.1379@-2560.0.2560.1379" timestamp="1604132708064" />
-    <state width="1250" height="371" key="GridCell.Tab.0.center" timestamp="1604132708064">
-      <screen x="-2560" y="0" width="2560" height="1379" />
+    <state width="1252" height="367" key="GridCell.Tab.0.bottom/0.0.1920.1019/-2560.0.2560.1379@-2560.0.2560.1379" timestamp="1604372021381" />
+    <state width="1252" height="367" key="GridCell.Tab.0.bottom/0.0.1920.1050/-2560.0.2560.1379@0.0.1920.1050" timestamp="1604539575798" />
+    <state width="1252" height="367" key="GridCell.Tab.0.center" timestamp="1604539575798">
+      <screen x="0" y="0" width="1920" height="1050" />
     </state>
-    <state width="1250" height="371" key="GridCell.Tab.0.center/0.0.1920.1019/-2560.0.2560.1379@-2560.0.2560.1379" timestamp="1604132708064" />
-    <state width="1250" height="371" key="GridCell.Tab.0.left" timestamp="1604132708064">
-      <screen x="-2560" y="0" width="2560" height="1379" />
+    <state width="1252" height="367" key="GridCell.Tab.0.center/0.0.1920.1019/-2560.0.2560.1379@-2560.0.2560.1379" timestamp="1604372021380" />
+    <state width="1252" height="367" key="GridCell.Tab.0.center/0.0.1920.1050/-2560.0.2560.1379@0.0.1920.1050" timestamp="1604539575798" />
+    <state width="1252" height="367" key="GridCell.Tab.0.left" timestamp="1604539575797">
+      <screen x="0" y="0" width="1920" height="1050" />
     </state>
-    <state width="1250" height="371" key="GridCell.Tab.0.left/0.0.1920.1019/-2560.0.2560.1379@-2560.0.2560.1379" timestamp="1604132708064" />
-    <state width="1250" height="371" key="GridCell.Tab.0.right" timestamp="1604132708064">
-      <screen x="-2560" y="0" width="2560" height="1379" />
+    <state width="1252" height="367" key="GridCell.Tab.0.left/0.0.1920.1019/-2560.0.2560.1379@-2560.0.2560.1379" timestamp="1604372021380" />
+    <state width="1252" height="367" key="GridCell.Tab.0.left/0.0.1920.1050/-2560.0.2560.1379@0.0.1920.1050" timestamp="1604539575797" />
+    <state width="1252" height="367" key="GridCell.Tab.0.right" timestamp="1604539575798">
+      <screen x="0" y="0" width="1920" height="1050" />
     </state>
-    <state width="1250" height="371" key="GridCell.Tab.0.right/0.0.1920.1019/-2560.0.2560.1379@-2560.0.2560.1379" timestamp="1604132708064" />
+    <state width="1252" height="367" key="GridCell.Tab.0.right/0.0.1920.1019/-2560.0.2560.1379@-2560.0.2560.1379" timestamp="1604372021380" />
+    <state width="1252" height="367" key="GridCell.Tab.0.right/0.0.1920.1050/-2560.0.2560.1379@0.0.1920.1050" timestamp="1604539575798" />
     <state x="-2141" y="587" key="com.intellij.openapi.vcs.update.UpdateOrStatusOptionsDialogupdate-v2" timestamp="1604110672658">
       <screen x="-2560" y="0" width="2560" height="1379" />
     </state>
     <state x="-2141" y="587" key="com.intellij.openapi.vcs.update.UpdateOrStatusOptionsDialogupdate-v2/0.0.1920.1019/-2560.0.2560.1379@-2560.0.2560.1379" timestamp="1604110672658" />
+    <state x="0" y="0" width="1936" height="1166" key="dock-window-1" timestamp="1604458163281">
+      <screen x="0" y="0" width="1920" height="1050" />
+    </state>
+    <state x="0" y="0" width="1936" height="1166" key="dock-window-1/0.0.1920.1050/-2560.0.2560.1379@-2560.0.2560.1379" timestamp="1604458163281" />
     <state x="-1985" y="341" width="710" height="704" key="find.popup" timestamp="1603960641925">
       <screen x="-2560" y="0" width="2560" height="1379" />
     </state>
@@ -147,4 +492,180 @@
     </state>
     <state x="-2342" y="308" width="840" height="1034" key="search.everywhere.popup/0.0.1920.1019/-2560.0.2560.1379@-2560.0.2560.1379" timestamp="1604114774442" />
   </component>
+  <component name="editorHistoryManager">
+    <entry file="file://$PROJECT_DIR$/src/assets/css/mainBk.css">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="1076">
+          <caret line="1196" column="1" selection-start-line="1196" selection-start-column="1" selection-end-line="1196" selection-end-column="1" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/Global.js">
+      <provider selected="true" editor-type-id="text-editor" />
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/Mock/index.js">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="-415">
+          <caret line="69" column="18" selection-start-line="69" selection-start-column="3" selection-end-line="69" selection-end-column="18" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/static/img/newRecord/record.png">
+      <provider selected="true" editor-type-id="images" />
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/components/newRecord.vue">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="252">
+          <caret line="10" column="40" lean-forward="true" selection-start-line="10" selection-start-column="40" selection-end-line="10" selection-end-column="40" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/libs/rem.js">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="63">
+          <caret line="3" column="15" lean-forward="true" selection-start-line="3" selection-start-column="15" selection-end-line="3" selection-end-column="15" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/App.vue">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="588">
+          <caret line="28" column="5" selection-start-line="28" selection-start-column="5" selection-end-line="28" selection-end-column="5" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/views/Index.vue">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="253">
+          <caret line="26" column="28" selection-start-line="26" selection-start-column="28" selection-end-line="26" selection-end-column="28" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/assets/css/mainBk2.css">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="443">
+          <caret line="1286" column="19" lean-forward="true" selection-start-line="1285" selection-start-column="1" selection-end-line="1286" selection-end-column="19" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/README.md">
+      <provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]">
+        <state split_layout="SPLIT">
+          <first_editor relative-caret-position="483">
+            <caret line="23" column="39" lean-forward="true" selection-start-line="23" selection-start-column="39" selection-end-line="23" selection-end-column="39" />
+          </first_editor>
+          <second_editor />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/api/getApiRes.js">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="546">
+          <caret line="26" column="28" selection-start-line="26" selection-start-column="16" selection-end-line="26" selection-end-column="28" />
+          <folding>
+            <element signature="e#0#26#0" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/babel.config.js">
+      <provider selected="true" editor-type-id="text-editor" />
+    </entry>
+    <entry file="file://$PROJECT_DIR$/package.json">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="495">
+          <caret line="25" column="38" lean-forward="true" selection-start-line="25" selection-start-column="38" selection-end-line="25" selection-end-column="38" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/router/index.js">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="740">
+          <caret line="73" column="10" lean-forward="true" selection-start-line="73" selection-start-column="10" selection-end-line="73" selection-end-column="10" />
+          <folding>
+            <element signature="e#0#21#0" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/main.js">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="273">
+          <caret line="13" column="9" lean-forward="true" selection-start-line="13" selection-start-column="9" selection-end-line="13" selection-end-column="9" />
+          <folding>
+            <element signature="e#0#21#0" expanded="true" />
+            <element signature="e#136#171#0" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/static/img/fire.png">
+      <provider selected="true" editor-type-id="images" />
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/static/img/s2.svg">
+      <provider selected="true" editor-type-id="images" />
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/static/img/s1.svg">
+      <provider selected="true" editor-type-id="images" />
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/static/img/heart.svg">
+      <provider selected="true" editor-type-id="images" />
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/static/img/t6.svg">
+      <provider selected="true" editor-type-id="images" />
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/static/img/blue.svg">
+      <provider selected="true" editor-type-id="images" />
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/static/img/logo.svg">
+      <provider selected="true" editor-type-id="images" />
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/static/img/people/sxf.png">
+      <provider selected="true" editor-type-id="images" />
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/components/Headside.vue">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="840">
+          <caret line="83" column="20" selection-start-line="83" selection-start-column="20" selection-end-line="83" selection-end-column="20" />
+          <folding>
+            <element signature="e#394#424#0" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/vue.config.js">
+      <provider selected="true" editor-type-id="text-editor">
+        <state>
+          <caret line="21" column="32" selection-start-line="21" selection-start-column="32" selection-end-line="21" selection-end-column="32" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/views/Rank.vue">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="273">
+          <caret line="88" column="33" selection-start-line="88" selection-start-column="33" selection-end-line="88" selection-end-column="33" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/views/pk.vue">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="275">
+          <caret line="31" column="41" selection-start-line="31" selection-start-column="41" selection-end-line="31" selection-end-column="41" />
+          <folding>
+            <element signature="n#li#0;n#ul#0;n#div#2;n#div#1;n#div#0;n#template#0;n#!!top" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/src/views/Main.vue">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="295">
+          <caret line="204" column="13" lean-forward="true" selection-start-line="204" selection-start-column="13" selection-end-line="204" selection-end-column="13" />
+          <folding>
+            <element signature="e#5171#5215#0" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+  </component>
 </project>

+ 17 - 9
tv/README.md

@@ -14,21 +14,29 @@
                                                                                          
 ##常用的后台管理模板  
 
-小飞龙api服务
-http://192.168.0.3:19095/v1/docs/index.html
+小飞龙TV api服务
+http://192.168.0.162:9000/Hello
 
 
-基于 https://panjiachen.github.io/vue-element-admin-site/zh/guide/ 的版本, 只保留常用功能和修改部分UI效果  
 
-##安装:  
+临时文档
 
-###克隆项目  
+  target: 'http://192.168.0.162:9000/',
+// target: 'http://192.168.0.243:9000/',
+
+// 上课中学生信息
+getUserListInfo
+
+code 0 success
+    99  下课
+    
+// 是否开始上课的状态
+getClassStat
+
+"ClassOn":false//上课
 
-git clone git@git.beswell.com:duanchangpeng/PcBackStage.git  
 
-###进入项目目录  
 
-cd PcBackStage  
 
 
 ##安装淘宝源,已安装可忽略
@@ -176,4 +184,4 @@ order
 ========
 常用键值
 
-wxVisible 0不可见1可见
+wxVisible 0不可见1可见

+ 5 - 2
tv/package.json

@@ -13,6 +13,8 @@
     "mockjs": "^1.1.0",
     "moment": "^2.27.0",
     "nprogress": "^0.2.0",
+    "postcss-loader": "^4.0.4",
+    "postcss-pxtorem": "^5.1.1",
     "qs": "^6.9.4",
     "v-charts": "^1.19.0",
     "vue": "^2.6.11",
@@ -31,7 +33,8 @@
   },
   "browserslist": [
     "> 1%",
-    "last 2 versions",
-    "not dead"
+    "last 5 versions",
+    "Android >= 4.0",
+    "not ie <= 8"
   ]
 }

+ 5 - 1
tv/public/index.html

@@ -12,6 +12,10 @@
       <strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
     </noscript>
     <div id="app"></div>
-    <!-- built files will be auto injected -->
   </body>
+  <style>
+      body {
+          background: #028fe1;
+      }
+  </style>
 </html>

+ 5 - 0
tv/src/App.vue

@@ -22,4 +22,9 @@
         text-align: center;
         color: #2c3e50;
     }
+    ul, li {
+        list-style: none;
+        margin: 0;
+        padding: 0;
+    }
 </style>

+ 1 - 1
tv/src/Global.js

@@ -60,7 +60,7 @@ getHoursAndMin = function (datetime) {
 getHoursAndMinAndSec = function () {
     let date = new Date();
     h = date.getHours() < 10 ? '0' + date.getHours() + ':' : date.getHours() + ':';
-    m = date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes() + ':';
+    m = date.getMinutes() < 10 ? '0' + date.getMinutes()  + ':': date.getMinutes() + ':';
     s =  date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds();
     return h + m + s;
 }

+ 51 - 9
tv/src/Mock/index.js

@@ -65,20 +65,61 @@ let testTable = function () {
     };
     return res;
 };
+// "percent":  "@integer(0, 100)",
 let getUserList = function () {
     let item = [];
-    for (var i = 0; i < 5; i++) {
+
+    let nameList = [
+        {name:'杨东艳'},
+        {name:'隋小飞'},
+        {name:'刘晓蕾'},
+        {name:'刘海生'},
+        {name:'贾雨琦'},
+        {name:'李延海'},
+        {name:'宋凌晨'},
+        {name:'段长鹏'},
+        {name:'郑伟'},
+        {name:'周睿'},
+        {name:'贾奕'},
+        {name:'王正祥'},
+        {name:'高超'},
+        {name:'武发鲁'},
+        {name:'赵晋洪'},
+        {name:'张岩'},
+    ]
+
+    let img = [
+        {name:'ydy.png'},
+        {name:'sxf.png'},
+        {name:'lxl.png'},
+        {name:'lhs.png'},
+        {name:'jyq.png'},
+        {name:'lyh.png'},
+        {name:'slc.png'},
+        {name:'dcp.png'},
+        {name:'zw.png'},
+        {name:'zr.png'},
+        {name:'jy.png'},
+        {name:'wzx.png'},
+        {name:'gc.png'},
+        {name:'wfl.png'},
+        {name:'zjh.png'},
+        {name:'zy.png'},
+    ]
+
+    for (var i = 0; i < 16  ; i++) {
         item.push({
-            "name": "@region",
-            "percent":  "@integer(0, 100)",
-            "heartJump":  "@integer(70, 150)",
-            "calc":  "@integer(200, 1000)",
-            "ck": "@integer(100, 200)",
+            "name":nameList[i].name,
+            "activePercent":  "@integer(0, 54)",
+            "heartRate":  "@integer(70, 150)",
+            "calorie":  "@integer(200, 1000)",
+            "ck": "23.2",
             "topCk": "@integer(150, 200)",
-            "step":  "@integer(200, 10000)",
-            "id": "@guid",
+            "step":  "@integer(200, 20000)",
+            "hubId": "@guid",
+            "deviceId": "@guid",
             "userCode": "@integer(15253135600, 15253135699)",
-            "head":"@image"
+            "head":img[i].name,
         })
     }
     let res = {
@@ -90,5 +131,6 @@ let getUserList = function () {
 };
 Mock.mock('/api/testTable', 'post', testTable());
 Mock.mock('/api/getUserList', 'post', getUserList());
+// Mock.mock('/api/Hello', 'post', getUserList());
 
 export default Mock;

+ 12 - 0
tv/src/api/getApiRes.js

@@ -16,3 +16,15 @@ export function getUserList(postdata) {
     let url = headapi + 'getUserList';
     return getApiBasic(url, postdata);
 }
+
+// 上课中学生信息
+export function getHello(postdata) {
+    let url = headapi + 'getUserListInfo';
+    return getApiBasic(url, postdata);
+}
+
+// 是否开始上课的状态
+export function getClassStat(postdata) {
+    let url = headapi + 'getClassStat';
+    return getApiBasic(url, postdata);
+}

+ 1217 - 0
tv/src/assets/css/main.css

@@ -0,0 +1,1217 @@
+.pages {
+    position: absolute;
+    top: 0;
+    left: 0;
+    right: 0;
+    bottom: 0;
+    width: 100%;
+    overflow: hidden;
+    display: block;
+    margin: 0 auto;
+    background-color: #028fe1;
+    background: url("../static/img/mainBg.png");
+    background-size: 100%;
+    background-repeat: no-repeat;
+}
+
+ul, li {
+    list-style: none;
+    margin: 0;
+    padding: 0;
+}
+
+.userList {
+    width: 96%;
+    height: 80%;
+    overflow: hidden;
+    display: block;
+    margin: 0 auto;
+}
+
+.userList {
+    height: 100%;
+}
+
+.userList ul {
+    width: 100%;
+    overflow: hidden;
+    display: block;
+    margin: 0 auto;
+}
+
+.userList .max {
+    width: 80%;
+    height: 100%;
+    overflow: visible;
+    display: block;
+    margin: 0 auto;
+}
+
+.max .ltLi {
+    width: 5%;
+    height: 545px;
+    float: left;
+    background: url("../static/img/ltCube.png");
+    background-size: 100% 100%;
+    background-repeat: no-repeat;
+}
+
+.max .rtLi {
+    width: 5%;
+    height: 545px;
+    float: right;
+    background: url("../static/img/rtCube.png");
+    background-size: 100% 100%;
+    background-repeat: no-repeat;
+}
+
+.max .centerLi {
+    width: 90%;
+    float: left;
+    height: 545px;
+    background: #028FE1;
+}
+
+.blue .centerLi {
+    background: #028FE1;
+}
+
+.violet .centerLi {
+    background: #6D26FA;
+}
+
+.green .centerLi {
+    background: #0AB105;
+}
+
+.yellow .centerLi {
+    background: #BACC01;
+}
+
+.brown .centerLi {
+    background: #EA8813;
+}
+
+.red .centerLi {
+    background: #CF1122;
+}
+
+.centerLi .top {
+    width: 100%;
+    overflow: hidden;
+    display: block;
+    margin: 0 auto;
+}
+
+.centerLi .bottom {
+    width: 100%;
+    overflow: hidden;
+    display: block;
+    margin: 0 auto;
+}
+
+.centerLi .cla {
+    width: 30%;
+    float: left;
+    font-family: HeadLineA;
+    font-weight: normal;
+    font-size: 175px;
+    text-align: center;
+    color: #fff;
+    line-height: 360px;
+}
+
+
+.centerLi .cla s {
+    position: relative;
+    top: -100px;
+    font-family: "PingFang SC";
+    font-weight: 500;
+    font-size: 54px;
+    text-align: center;
+    color: #fff;
+    text-decoration: none;
+}
+
+.centerLi .heartJump {
+    width: 30%;
+    float: right;
+    font-family: HeadLineA;
+    font-weight: normal;
+    font-size: 175px;
+    text-align: center;
+    color: #fff;
+    line-height: 360px;
+}
+
+.centerLi .heartJump img {
+    position: relative;
+    top: -100px;
+    font-family: "PingFang SC";
+    font-weight: 500;
+    font-size: 54px;
+    text-align: center;
+    color: #fff;
+    text-decoration: none;
+
+    animation: mymove 2s infinite;
+    -webkit-animation: mymove 2s infinite; /*Safari and Chrome*/
+    animation-direction: alternate; /*轮流反向播放动画。*/
+    animation-timing-function: ease-in-out; /*动画的速度曲线*/
+    /* Safari 和 Chrome */
+    -webkit-animation: mymove 3s infinite;
+    -webkit-animation-direction: alternate; /*轮流反向播放动画。*/
+    -webkit-animation-timing-function: ease-in-out; /*动画的速度曲线*/
+}
+
+@keyframes mymove {
+    0% {
+        transform: scale(1); /*开始为原始大小*/
+    }
+    25% {
+        transform: scale(1.2); /*放大1.1倍*/
+    }
+    50% {
+        transform: scale(1);
+    }
+    75% {
+        transform: scale(1.2);
+    }
+
+}
+
+@-webkit-keyframes mymove /*Safari and Chrome*/
+{
+    0% {
+        transform: scale(1); /*开始为原始大小*/
+    }
+    25% {
+        transform: scale(1.2); /*放大1.1倍*/
+    }
+    50% {
+        transform: scale(1);
+    }
+    75% {
+        transform: scale(1.2);
+    }
+}
+
+.centerLi .human {
+    width: 39%;
+    float: left;
+    padding-top: 3%;
+    overflow: hidden;
+}
+
+.human img {
+    overflow: hidden;
+    display: block;
+    margin: 0 auto;
+    border-radius: 250px;
+    border: 1px solid #fff;
+}
+
+.human .name {
+    width: 40%;
+    height: 70px;
+    overflow: hidden;
+    display: block;
+    margin: 0 auto;
+    border-radius: 35px;
+    color: #fff;
+    font-family: "PingFang SC";
+    font-weight: 500;
+    font-size: 43px;
+    text-align: center;
+    color: #fff;
+}
+
+.bottomLi {
+    width: 100%;
+    overflow: hidden;
+    display: block;
+    margin: 0 auto;
+    font-family: HeadLineA;
+    font-weight: normal;
+    font-size: 50px;
+    text-align: left;
+    color: #fff;
+    text-align: center;
+}
+
+.bottomLi .btcla {
+    width: 30%;
+    float: left;
+}
+
+.bottomLi .btck {
+    width: 40%;
+    float: left;
+    text-align: left;
+    text-indent: 7px;
+}
+
+.bottomLi .step {
+    width: 30%;
+    float: left;
+}
+
+.levelIcon {
+    position: absolute;
+    bottom: 5px;
+    width: 100%;
+    overflow: hidden;
+    display: block;
+    margin: 0 auto;
+    height: 120px;
+    padding-bottom: 5px;
+}
+
+.levelIcon ul {
+    width: 96%;
+    height: 100%;
+    overflow: hidden;
+    display: block;
+    margin: 0 auto;
+}
+
+.levelIcon li {
+    width: 14.666666666667%;
+    height: 100%;
+    float: left;
+    padding-left: 2%;
+}
+
+.levelIcon li:nth-child(1) {
+    padding-left: 0;
+}
+
+.levelIcon li span {
+    width: 119px;
+    height: 119px;
+    overflow: hidden;
+    float: left;
+    background: url("../static/img/l1.png");
+    background-repeat: no-repeat;
+    background-size: 100% 100%;
+    background-position: top center;
+    font-family: "PingFang SC";
+    font-weight: normal;
+    font-size: 22px;
+    letter-spacing: -0.05em;
+    text-align: center;
+    color: #fff;
+    line-height: 35px;
+
+}
+
+.levelIcon li span div {
+    width: 100%;
+    overflow: hidden;
+    display: block;
+    margin: 0 auto;
+    padding-top: 17%;
+}
+
+.levelIcon li:nth-child(2) span {
+    background: url("../static/img/l2.png");
+    background-size: 100% 100%;
+    background-position: top center;
+}
+
+.levelIcon li:nth-child(3) span {
+    background: url("../static/img/l3.png");
+    background-size: 100% 100%;
+    background-position: top center;
+}
+
+.levelIcon li:nth-child(4) span {
+    background: url("../static/img/l4.png");
+    background-size: 100% 100%;
+    background-position: top center;
+}
+
+.levelIcon li:nth-child(5) span {
+    background: url("../static/img/l5.png");
+    background-size: 100% 100%;
+    background-position: top center;
+}
+
+.levelIcon li:nth-child(6) span {
+    background: url("../static/img/l6.png");
+    background-size: 100% 100%;
+    background-position: top center;
+}
+
+.levelIcon li:nth-child(6) span div {
+    margin-top: 13%;
+}
+
+.levelIcon li em {
+    float: right;
+    width: 130px;
+    height: 42px;
+    border-radius: 21px;
+    background: rgba(2, 143, 225, 0.16);
+    border: 1px solid #028fe1;
+    box-shadow: 0px 0px 5px #028fe1;
+    font-family: "PingFang SC";
+    font-weight: normal;
+    font-size: 24px;
+    text-align: center;
+    color: #fff;
+    font-style: normal;
+    line-height: 42px;
+    margin-top: 15%;
+    margin-left: 1%;
+}
+
+.levelIcon li:nth-child(2) em {
+    background: rgba(109, 38, 250, 0.16);
+    border: 1px solid #6d26fa;
+    box-shadow: 0px 0px 5px #6d26fa;
+}
+
+.levelIcon li:nth-child(3) em {
+    background: rgba(10, 177, 5, 0.16);
+    border: 1px solid #0ab105;
+    box-shadow: 0px 0px 5px #0ab105;
+
+}
+
+.levelIcon li:nth-child(4) em {
+    background: rgba(186, 204, 1, 0.16);
+    border: 1px solid #bacc01;
+    box-shadow: 0px 0px 5px #bacc01;
+}
+
+.levelIcon li:nth-child(5) em {
+    background: rgba(234, 136, 19, 0.16);
+    border: 1px solid #ea8813;
+    box-shadow: 0px 0px 5px #ea8813;
+}
+
+.levelIcon li:nth-child(6) em {
+    background: rgba(209, 17, 34, 0.16);
+    border: 1px solid #d11122;
+    box-shadow: 0px 0px 5px #d11122;
+}
+
+.long {
+    width: 198px;
+    position: relative;
+    bottom: 198px;
+    right: -70px;
+    float: right;
+    z-index: 222;
+    overflow: visible;
+}
+
+/*two*/
+.two {
+    width: 48%;
+    height: 475px;
+    float: left;
+    border: 1px solid #fff;
+}
+
+.two:nth-child(2) {
+    float: right;
+}
+
+.two .centerLi .cla {
+    font-family: HeadLineA;
+    font-weight: normal;
+    font-size: 180px;
+    letter-spacing: -0.05em;
+    height: 310px;
+    line-height: 310px;
+}
+
+.two .centerLi .cla s {
+    font-family: HeadLineA;
+    font-weight: normal;
+    font-size: 38px;
+    letter-spacing: -0.05em;
+    top: -120px;
+}
+
+.two .human {
+    padding-top: 8%;
+}
+
+.two img {
+    width: 280px;
+    height: 280px;
+}
+
+.two .name {
+    width: 290px;
+    height: 60px;
+    font-family: "PingFang SC";
+    font-weight: 500;
+    font-size: 40px;
+    text-align: center;
+    color: #fff;
+    line-height: 60px;
+}
+
+.two .centerLi .heartJump {
+    font-family: HeadLineA;
+    font-weight: normal;
+    font-size: 140px;
+    letter-spacing: -0.05em;
+    text-align: center;
+    color: #fff;
+    height: 310px;
+    line-height: 310px;
+}
+
+.two .centerLi .heartJump img {
+    width: 25px;
+    height: 25px;
+    top: -110px;
+}
+
+.two .bottomLi {
+    font-family: HeadLineA;
+    font-weight: normal;
+    font-size: 40px;
+    color: #fff;
+    padding-bottom: 5px;
+}
+
+
+/*six*/
+.six {
+    width: 31%;
+    float: left;
+    margin-right: 2%;
+    margin-bottom: 2%;
+    border: 1px solid #fff;
+}
+
+.six:nth-child(3) {
+    margin-right: 0
+}
+
+.six:nth-child(6) {
+    margin-right: 0
+}
+
+.six .centerLi .cla {
+    font-family: HeadLineA;
+    font-weight: normal;
+    font-size: 100px;
+    letter-spacing: -0.05em;
+    height: 220px;
+    line-height: 220px;
+}
+
+.six .centerLi .cla s {
+    font-family: HeadLineA;
+    font-weight: normal;
+    font-size: 40px;
+    letter-spacing: -0.05em;
+    top: -60px;
+}
+
+.six .human {
+    padding-top: 6%;
+}
+
+.six img {
+    width: 160px;
+    height: 160px;
+}
+
+.six .name {
+    width: 180px;
+    height: 40px;
+    font-family: "PingFang SC";
+    font-weight: 500;
+    font-size: 30px;
+    text-align: center;
+    color: #fff;
+    line-height: 40px;
+}
+
+.six .centerLi .heartJump {
+    font-family: HeadLineA;
+    font-weight: normal;
+    font-size: 100px;
+    letter-spacing: -0.05em;
+    text-align: center;
+    color: #fff;
+    height: 220px;
+    line-height: 220px;
+}
+
+.six .centerLi .heartJump img {
+    width: 25px;
+    height: 25px;
+    top: -60px;
+}
+
+.six .bottomLi {
+    font-family: HeadLineA;
+    font-weight: normal;
+    font-size: 32px;
+    color: #fff;
+    padding-bottom: 15px;
+}
+
+/*nine*/
+.nine {
+    width: 31.5%;
+    float: left;
+    margin-right: 2%;
+    margin-bottom: 2%;
+    border: 1px solid #fff;
+}
+
+.nine:nth-child(3) {
+    margin-right: 0
+}
+
+.nine:nth-child(6) {
+    margin-right: 0
+}
+
+.nine:nth-child(9) {
+    margin-right: 0
+}
+
+.nine .centerLi .cla {
+    font-family: HeadLineA;
+    font-weight: normal;
+    font-size: 79px;
+    letter-spacing: -0.05em;
+    height: 150px;
+    line-height: 150px;
+}
+
+.nine .centerLi .cla s {
+    font-family: HeadLineA;
+    font-weight: normal;
+    font-size: 36px;
+    letter-spacing: -0.05em;
+    top: -60px;
+}
+
+.nine .human {
+    padding-top: 2%;
+}
+
+.nine img {
+    width: 100px;
+    height: 100px;
+}
+
+.nine .name {
+    width: 120px;
+    height: 30px;
+    font-family: "PingFang SC";
+    font-weight: 500;
+    font-size: 24px;
+    text-align: center;
+    color: #fff;
+    line-height: 30px;
+}
+
+.nine .centerLi .heartJump {
+    font-family: HeadLineA;
+    font-weight: normal;
+    font-size: 79px;
+    letter-spacing: -0.05em;
+    text-align: center;
+    color: #fff;
+    height: 150px;
+    line-height: 150px;
+}
+
+.nine .centerLi .heartJump img {
+    width: 25px;
+    height: 25px;
+    top: -60px;
+}
+
+.nine .bottomLi {
+    font-family: HeadLineA;
+    font-weight: normal;
+    font-size: 24px;
+    color: #fff;
+    padding-bottom: 5px;
+}
+
+/*sixteen*/
+.sixteen {
+    width: 23.5%;
+    float: left;
+    margin-right: 0.3%;
+    margin-bottom: 0.3%;
+    border: 1px solid rgba(255, 255, 255, 0.5);
+}
+
+.sixteen .centerLi .cla {
+    font-family: HeadLineA;
+    font-weight: normal;
+    font-size: 49px;
+    letter-spacing: -0.05em;
+    height: 100px;
+    line-height: 120px;
+}
+
+.sixteen .centerLi .cla s {
+    font-family: HeadLineA;
+    font-weight: normal;
+    font-size: 30px;
+    letter-spacing: -0.05em;
+    top: -30px;
+}
+
+.sixteen .human {
+    padding-top: 2%;
+    height: 120px;
+    overflow: hidden;
+}
+
+.sixteen .head img {
+    width: 90px;
+    height: 90px;
+}
+
+.sixteen .name {
+    width: 100px;
+    height: 26px;
+    font-family: "PingFang SC";
+    font-weight: 500;
+    font-size: 20px;
+    text-align: center;
+    color: #fff;
+    line-height: 26px;
+}
+
+.sixteen .centerLi .heartJump {
+    font-family: HeadLineA;
+    font-weight: normal;
+    font-size: 49px;
+    letter-spacing: -0.05em;
+    text-align: center;
+    color: #fff;
+    height: 100px;
+    line-height: 120px;
+}
+
+.sixteen .centerLi .heartJump img {
+    width: 20px;
+    height: 20px;
+    top: -30px;
+    right: -5px;
+}
+
+.sixteen .bottomLi {
+    font-family: HeadLineA;
+    font-weight: normal;
+    font-size: 22px;
+    color: #fff;
+    line-height: 30px;
+    padding-bottom: 5px;
+}
+
+
+/*twenty*/
+.twenty {
+    width: 19.5%;
+    float: left;
+    margin-right: 10px;
+    margin-bottom: 0.3%;
+    border: 1px solid rgba(255, 255, 255, 0.5);
+}
+
+.twenty:nth-child(5) {
+    margin-right: 0
+}
+
+.twenty:nth-child(10) {
+    margin-right: 0
+}
+
+.twenty:nth-child(15) {
+    margin-right: 0
+}
+
+.twenty:nth-child(20) {
+    margin-right: 0
+}
+
+.twenty .centerLi .cla {
+    font-family: HeadLineA;
+    font-weight: normal;
+    font-size: 40px;
+    letter-spacing: -0.05em;
+    height: 90px;
+    line-height: 90px;
+}
+
+.twenty .centerLi .cla s {
+    font-family: HeadLineA;
+    font-weight: normal;
+    font-size: 16px;
+    letter-spacing: -0.05em;
+    top: -20px;
+}
+
+.twenty .human {
+    padding-top: 2%;
+    height: 110px;
+    overflow: hidden;
+}
+
+.twenty img {
+    width: 90px;
+    height: 90px;
+}
+
+.twenty .name {
+    width: 80px;
+    height: 24px;
+    font-family: "PingFang SC";
+    font-weight: 500;
+    font-size: 16px;
+    text-align: center;
+    color: #fff;
+    line-height: 24px;
+}
+
+.twenty .centerLi .heartJump {
+    font-family: HeadLineA;
+    font-weight: normal;
+    font-size: 40px;
+    letter-spacing: -0.05em;
+    text-align: center;
+    color: #fff;
+    height: 90px;
+    line-height: 90px;
+}
+
+.twenty .centerLi .heartJump img {
+    width: 14px;
+    height: 14px;
+    top: -20px;
+}
+
+.twenty .bottomLi {
+    font-family: HeadLineA;
+    font-weight: normal;
+    font-size: 18px;
+    color: #fff;
+    padding-bottom: 5px;
+}
+
+/*成就彩蛋*/
+/deep/ .el-dialog {
+    background: url("../static/img/dialog.png");
+    background-position: top center;
+    background-repeat: no-repeat;
+    background-size: 100%;
+    min-height: 50%;
+    box-shadow: none;
+}
+
+.eggContainer {
+    width: 87%;
+    overflow: hidden;
+    margin: 0 auto;
+    float: left;
+}
+
+.eggContainer h5 {
+    font-family: Roboto;
+    font-weight: normal;
+    font-size: 36px;
+    text-align: center;
+    color: #fff;
+    margin: 0;
+    margin-bottom: 5%;
+}
+
+.eggContainer .dgCenter {
+    width: 90%;
+    overflow: hidden;
+    display: block;
+    margin: 0 auto;
+}
+
+.dgCenter .dghead {
+    width: 40%;
+    float: left;
+}
+
+.dghead img {
+    width: 140px;
+    height: 140px;
+    overflow: hidden;
+    display: block;
+    margin: 0 auto;
+    padding: 3px;
+    border-radius: 250px;
+    border: 1px solid #fff;
+}
+
+.dghead s {
+    font-family: Roboto;
+    font-weight: normal;
+    font-size: 30px;
+    text-align: center;
+    color: #fff;
+    font-style: normal;
+    text-decoration: none;
+    margin-top: 10px;
+}
+
+.score {
+    width: 60%;
+    float: right;
+}
+
+.score em {
+    width: 100%;
+    overflow: hidden;
+    display: block;
+    margin: 0 auto;
+    font-family: Roboto;
+    font-weight: bold;
+    font-size: 90px;
+    text-align: center;
+    color: #fff;
+    font-style: normal;
+    height: 150px;
+    line-height: 150px;
+}
+
+.score span {
+    width: 100%;
+    overflow: hidden;
+    display: block;
+    margin: 0 auto;
+    font-family: Roboto;
+    font-weight: normal;
+    font-size: 30px;
+    color: #fff;
+    text-align: center;
+
+}
+
+
+@media only screen and (min-width: 1260px) {
+    .human img {
+        width: 100px;
+        height: 100px;
+    }
+
+    .levelIcon {
+        height: 70px;
+    }
+
+    .levelIcon li span {
+        width: 70px;
+        height: 70px;
+        font-size: 12px;
+    }
+
+    .userList .max {
+        position: absolute;
+        width: 78%;
+        left: 0;
+        right: 0;
+        overflow: visible;
+        display: block;
+        margin: 0 auto;
+        margin-top: 7%;
+    }
+
+    .levelIcon li span div {
+        font-size: 16px;
+        padding-top: 12px;
+        line-height: 22px;
+    }
+
+    .levelIcon ul {
+        width: 98%;
+    }
+
+    .levelIcon li em {
+        width: 45%;
+        height: 30px;
+        line-height: 30px;
+        font-size: 14px;
+        margin-top: 11%;
+        margin-left: 8%;
+        float: left;
+    }
+
+    .max .centerLi {
+        height: 360px;
+    }
+
+    .max .ltLi {
+        height: 360px;
+    }
+
+    .max .rtLi {
+        height: 360px;
+    }
+
+    .max .human .name {
+        height: 30px;
+        font-size: 14px;
+        line-height: 30px;
+    }
+
+    .max .longIcon {
+        width: 140px;
+        position: relative;
+        top: -20%;
+        right: -5%;
+        float: right;
+    }
+
+    .max .centerLi .topLi {
+        height: 280px;
+    }
+
+    .max .centerLi .cla, .max .centerLi .heartJump {
+        height: 229px;
+        line-height: 210px;
+        font-size: 120px;
+        padding-top: 4%;
+        text-align: center;
+    }
+
+    .max .human img {
+        width: 200px;
+        height: 200px;
+    }
+
+    .max .human .name {
+        height: 40px;
+        line-height: 40px;
+        font-size: 30px;
+    }
+
+    .max .centerLi .heartJump img {
+        width: 20px;
+        font-size: 20px;
+        top: -60px;
+    }
+
+    .max .centerLi .cla s {
+        font-size: 22px;
+        top: -60px;
+    }
+
+    .max .bottomLi {
+        font-size: 40px !important;
+    }
+
+
+    /*two*/
+    .two {
+        width: 48%;
+        height: 400px;
+        float: left;
+        overflow: hidden;
+        border: 1px solid #fff;
+        margin-top: 2%
+    }
+
+    .two:nth-child(2) {
+        float: right;
+    }
+
+    .two .centerLi {
+        height: 100%;
+    }
+
+    .two .human .name {
+        height: 30px;
+        font-size: 14px;
+        line-height: 30px;
+    }
+
+    .two .longIcon {
+        width: 140px;
+        position: relative;
+        top: -20%;
+        right: -5%;
+        float: right;
+    }
+
+    .two .centerLi .topLi {
+        height: 280px;
+    }
+
+    .two .centerLi .cla, .two .centerLi .heartJump {
+        height: 229px;
+        line-height: 210px;
+        font-size: 120px;
+        padding-top: 4%;
+        text-align: center;
+    }
+
+    .two .human img {
+        width: 200px;
+        height: 200px;
+    }
+
+    .two .human .name {
+        height: 40px;
+        line-height: 40px;
+        font-size: 30px;
+    }
+
+    .two .centerLi .heartJump img {
+        width: 20px;
+        font-size: 20px;
+        top: -60px;
+    }
+
+    .two .centerLi .cla s {
+        font-size: 22px;
+        top: -60px;
+    }
+
+    .two .bottomLi {
+        font-size: 40px !important;
+    }
+
+    /*sixteen*/
+    .sixteen {
+        width: 19%;
+        height: 120px;
+        float: left;
+        overflow: hidden;
+        border: 1px solid rgba(255, 255, 255, 0.35);
+        margin-top: 5px;
+        margin-right: 1%;
+    }
+
+    .sixteen:nth-child(5) {
+        float: right;
+        margin-right: 0;
+    }
+
+    .sixteen:nth-child(10) {
+        float: right;
+        margin-right: 0;
+    }
+
+    .sixteen:nth-child(15) {
+        float: right;
+        margin-right: 0;
+    }
+
+    .sixteen:nth-child(20) {
+        float: right;
+        margin-right: 0;
+    }
+
+    .sixteen .centerLi {
+        height: 100%;
+    }
+
+    .sixteen .human {
+        height: 80px;
+    }
+
+    .sixteen .human .name {
+        width: 60px;
+        height: 16px;
+        font-size: 12px;
+        line-height: 16px;
+    }
+
+    .sixteen .longIcon {
+        width: 140px;
+        position: relative;
+        top: -20%;
+        right: -5%;
+        float: right;
+    }
+
+    .sixteen .centerLi .topLi {
+        width: 100%;
+        overflow: hidden;
+        display: block;
+        margin: 0 auto;
+        /*height: 70px;*/
+    }
+
+    .sixteen .centerLi .cla, .sixteen .centerLi .heartJump {
+        height: 60px;
+        line-height: 90px;
+        font-size: 33px;
+        padding-top: 4%;
+        text-align: center;
+        font-weight: 800;
+    }
+
+    .sixteen .centerLi .cla span {
+        width: 100%;
+        overflow: hidden;
+        display: block;
+        margin: 0 auto;
+    }
+
+    .sixteen .human img {
+        width: 60px;
+        height: 60px;
+        margin-top: 2px;
+    }
+
+    .sixteen .centerLi .heartJump img {
+        width: 8px;
+        height: 8px;
+        top: -58px;
+        right: 3px;
+        float: right;
+    }
+
+    .sixteen .centerLi .heartJump span {
+        width: 80%;
+        padding-right: 20%;
+        overflow: hidden;
+        display: block;
+        margin: 0 auto;
+        text-align: right;
+    }
+
+    .sixteen .centerLi .heartJump {
+        float: left;
+        text-align: center;
+    }
+
+    .sixteen .centerLi .cla s {
+        font-size: 14px;
+        top: -100px;
+        right: 3px;
+        float: right;
+    }
+
+    .sixteen .bottomLi {
+        margin-top: 5px;
+        font-size: 14px !important;
+        line-height: 30px;
+    }
+
+    .bottomLi img {
+        padding-top: 5px;
+        float: left;
+        padding-left: 10px;
+    }
+    .bottomLi .btck {
+        width: 35%;
+    }
+
+}

+ 1197 - 0
tv/src/assets/css/mainBk.css

@@ -0,0 +1,1197 @@
+.pages {
+    position: absolute;
+    top: 0;
+    left: 0;
+    right: 0;
+    bottom: 0;
+    width: 100%;
+    overflow: hidden;
+    display: block;
+    margin: 0 auto;
+    background-color: #028fe1;
+    background: url("../static/img/mainBg.png");
+    background-size: 100%;
+    background-repeat: no-repeat;
+}
+
+ul, li {
+    list-style: none;
+    margin: 0;
+    padding: 0;
+}
+
+.userList {
+    width: 96%;
+    height: 80%;
+    overflow: hidden;
+    display: block;
+    margin: 0 auto;
+}
+
+.userList {
+    height: 100%;
+}
+
+.userList ul {
+    width: 100%;
+    overflow: hidden;
+    display: block;
+    margin: 0 auto;
+}
+
+.blue .centerLi {
+    background: #028FE1;
+}
+
+.violet .centerLi {
+    background: #6D26FA;
+}
+
+.green .centerLi {
+    background: #0AB105;
+}
+
+.yellow .centerLi {
+    background: #BACC01;
+}
+
+.brown .centerLi {
+    background: #EA8813;
+}
+
+.red .centerLi {
+    background: #CF1122;
+}
+
+.centerLi .top {
+    width: 100%;
+    overflow: hidden;
+    display: block;
+    margin: 0 auto;
+}
+
+.centerLi .bottom {
+    width: 100%;
+    overflow: hidden;
+    display: block;
+    margin: 0 auto;
+}
+
+.centerLi .cla {
+    width: 30%;
+    float: left;
+    font-family: HeadLineA;
+    font-weight: normal;
+    text-align: center;
+    color: #fff;
+}
+
+
+.centerLi .cla s {
+    position: relative;
+    font-family: "PingFang SC";
+    text-decoration: none;
+}
+
+.centerLi .heartJump {
+    width: 30%;
+    font-family: HeadLineA;
+    font-weight: normal;
+    text-align: center;
+    color: #fff;
+}
+
+.centerLi .heartJump img {
+    position: relative;
+    font-family: "PingFang SC";
+    text-align: center;
+    color: #fff;
+    text-decoration: none;
+
+    animation: mymove 2s infinite;
+    -webkit-animation: mymove 2s infinite; /*Safari and Chrome*/
+    animation-direction: alternate; /*轮流反向播放动画。*/
+    animation-timing-function: ease-in-out; /*动画的速度曲线*/
+    /* Safari 和 Chrome */
+    -webkit-animation: mymove 3s infinite;
+    -webkit-animation-direction: alternate; /*轮流反向播放动画。*/
+    -webkit-animation-timing-function: ease-in-out; /*动画的速度曲线*/
+}
+
+@keyframes mymove {
+    0% {
+        transform: scale(1); /*开始为原始大小*/
+    }
+    25% {
+        transform: scale(1.2); /*放大1.1倍*/
+    }
+    50% {
+        transform: scale(1);
+    }
+    75% {
+        transform: scale(1.2);
+    }
+
+}
+
+@-webkit-keyframes mymove /*Safari and Chrome*/
+{
+    0% {
+        transform: scale(1); /*开始为原始大小*/
+    }
+    25% {
+        transform: scale(1.2); /*放大1.1倍*/
+    }
+    50% {
+        transform: scale(1);
+    }
+    75% {
+        transform: scale(1.2);
+    }
+}
+
+.centerLi .human {
+    width: 39%;
+    float: left;
+    padding-top: 3%;
+    overflow: hidden;
+}
+
+.human img {
+    overflow: hidden;
+    display: block;
+    margin: 0 auto;
+    border-radius: 250px;
+    border: 1px solid #fff;
+}
+
+.human .name {
+    width: 40%;
+    overflow: hidden;
+    display: block;
+    margin: 0 auto;
+    color: #fff;
+    text-align: center;
+    color: #fff;
+}
+
+.bottomLi {
+    width: 100%;
+    overflow: hidden;
+    display: block;
+    margin: 0 auto;
+    font-family: HeadLineA;
+    font-weight: normal;
+    text-align: left;
+    color: #fff;
+    text-align: center;
+}
+
+.bottomLi .btcla {
+    width: 30%;
+    float: left;
+}
+
+.bottomLi .btck {
+    width: 40%;
+    float: left;
+    text-align: left;
+    text-indent: 7px;
+}
+
+.bottomLi .step {
+    width: 30%;
+    float: left;
+}
+
+.levelIcon {
+    position: absolute;
+    bottom: 5px;
+    width: 100%;
+    overflow: hidden;
+    display: block;
+    margin: 0 auto;
+    height: 120px;
+    padding-bottom: 5px;
+}
+
+.levelIcon ul {
+    width: 96%;
+    height: 100%;
+    overflow: hidden;
+    display: block;
+    margin: 0 auto;
+}
+
+.levelIcon li {
+    width: 14.666666666667%;
+    height: 100%;
+    float: left;
+    padding-left: 2%;
+}
+
+.levelIcon li:nth-child(1) {
+    padding-left: 0;
+}
+
+.levelIcon li span {
+    width: 119px;
+    height: 119px;
+    overflow: hidden;
+    float: left;
+    background: url("../static/img/l1.png");
+    background-repeat: no-repeat;
+    background-size: 100% 100%;
+    background-position: top center;
+    font-family: "PingFang SC";
+    font-weight: normal;
+    font-size: 22px;
+    letter-spacing: -0.05em;
+    text-align: center;
+    color: #fff;
+    line-height: 35px;
+
+}
+
+.levelIcon li span div {
+    width: 100%;
+    overflow: hidden;
+    display: block;
+    margin: 0 auto;
+    padding-top: 17%;
+}
+
+.levelIcon li:nth-child(2) span {
+    background: url("../static/img/l2.png");
+    background-size: 100% 100%;
+    background-position: top center;
+}
+
+.levelIcon li:nth-child(3) span {
+    background: url("../static/img/l3.png");
+    background-size: 100% 100%;
+    background-position: top center;
+}
+
+.levelIcon li:nth-child(4) span {
+    background: url("../static/img/l4.png");
+    background-size: 100% 100%;
+    background-position: top center;
+}
+
+.levelIcon li:nth-child(5) span {
+    background: url("../static/img/l5.png");
+    background-size: 100% 100%;
+    background-position: top center;
+}
+
+.levelIcon li:nth-child(6) span {
+    background: url("../static/img/l6.png");
+    background-size: 100% 100%;
+    background-position: top center;
+}
+
+.levelIcon li:nth-child(6) span div {
+    margin-top: 13%;
+}
+
+.levelIcon li em {
+    float: right;
+    width: 130px;
+    height: 42px;
+    border-radius: 21px;
+    background: rgba(2, 143, 225, 0.16);
+    border: 1px solid #028fe1;
+    box-shadow: 0px 0px 5px #028fe1;
+    font-family: "PingFang SC";
+    font-weight: normal;
+    font-size: 24px;
+    text-align: center;
+    color: #fff;
+    font-style: normal;
+    line-height: 42px;
+    margin-top: 15%;
+    margin-left: 1%;
+}
+
+.levelIcon li:nth-child(2) em {
+    background: rgba(109, 38, 250, 0.16);
+    border: 1px solid #6d26fa;
+    box-shadow: 0px 0px 5px #6d26fa;
+}
+
+.levelIcon li:nth-child(3) em {
+    background: rgba(10, 177, 5, 0.16);
+    border: 1px solid #0ab105;
+    box-shadow: 0px 0px 5px #0ab105;
+
+}
+
+.levelIcon li:nth-child(4) em {
+    background: rgba(186, 204, 1, 0.16);
+    border: 1px solid #bacc01;
+    box-shadow: 0px 0px 5px #bacc01;
+}
+
+.levelIcon li:nth-child(5) em {
+    background: rgba(234, 136, 19, 0.16);
+    border: 1px solid #ea8813;
+    box-shadow: 0px 0px 5px #ea8813;
+}
+
+.levelIcon li:nth-child(6) em {
+    background: rgba(209, 17, 34, 0.16);
+    border: 1px solid #d11122;
+    box-shadow: 0px 0px 5px #d11122;
+}
+
+.long {
+    width: 198px;
+    position: relative;
+    bottom: 198px;
+    right: -70px;
+    float: right;
+    z-index: 222;
+    overflow: visible;
+}
+
+/*成就彩蛋*/
+/deep/ .el-dialog {
+    background: url("../static/img/dialog.png");
+    background-position: top center;
+    background-repeat: no-repeat;
+    background-size: 100%;
+    min-height: 50%;
+    box-shadow: none;
+}
+
+.eggContainer {
+    width: 87%;
+    overflow: hidden;
+    margin: 0 auto;
+    float: left;
+}
+
+.eggContainer h5 {
+    font-family: Roboto;
+    font-weight: normal;
+    font-size: 36px;
+    text-align: center;
+    color: #fff;
+    margin: 0;
+    margin-bottom: 5%;
+}
+
+.eggContainer .dgCenter {
+    width: 90%;
+    overflow: hidden;
+    display: block;
+    margin: 0 auto;
+}
+
+.dgCenter .dghead {
+    width: 40%;
+    float: left;
+}
+
+.dghead img {
+    width: 140px;
+    height: 140px;
+    overflow: hidden;
+    display: block;
+    margin: 0 auto;
+    padding: 3px;
+    border-radius: 250px;
+    border: 1px solid #fff;
+}
+
+.dghead s {
+    font-family: Roboto;
+    font-weight: normal;
+    font-size: 30px;
+    text-align: center;
+    color: #fff;
+    font-style: normal;
+    text-decoration: none;
+    margin-top: 10px;
+}
+
+.score {
+    width: 60%;
+    float: right;
+}
+
+.score em {
+    width: 100%;
+    overflow: hidden;
+    display: block;
+    margin: 0 auto;
+    font-family: Roboto;
+    font-weight: bold;
+    font-size: 90px;
+    text-align: center;
+    color: #fff;
+    font-style: normal;
+    height: 150px;
+    line-height: 150px;
+}
+
+.score span {
+    width: 100%;
+    overflow: hidden;
+    display: block;
+    margin: 0 auto;
+    font-family: Roboto;
+    font-weight: normal;
+    font-size: 30px;
+    color: #fff;
+    text-align: center;
+
+}
+
+
+@media only screen and (min-width: 1260px) {
+
+    .levelIcon {
+        height: 70px;
+    }
+
+    .levelIcon li span {
+        width: 70px;
+        height: 70px;
+        font-size: 12px;
+    }
+
+    .levelIcon li span div {
+        font-size: 16px;
+        padding-top: 12px;
+        line-height: 22px;
+    }
+
+    .levelIcon ul {
+        width: 98%;
+    }
+
+    .levelIcon li em {
+        width: 45%;
+        height: 30px;
+        line-height: 30px;
+        font-size: 14px;
+        margin-top: 11%;
+        margin-left: 14%;
+        float: left;
+    }
+
+    .userList .max {
+        width: 80%;
+        height: 100%;
+        overflow: visible;
+        display: block;
+        margin: 0 auto;
+    }
+
+    .max .ltLi {
+        width: 5%;
+        height: 545px;
+        float: left;
+        background: url("../static/img/ltCube.png");
+        background-size: 100% 100%;
+        background-repeat: no-repeat;
+    }
+
+    .max .rtLi {
+        width: 5%;
+        height: 545px;
+        float: right;
+        background: url("../static/img/rtCube.png");
+        background-size: 100% 100%;
+        background-repeat: no-repeat;
+    }
+
+    .max .centerLi {
+        width: 90%;
+        float: left;
+        height: 545px;
+        background: #028FE1;
+    }
+
+
+    .userList .max {
+        position: absolute;
+        width: 78%;
+        left: 0;
+        right: 0;
+        overflow: visible;
+        display: block;
+        margin: 0 auto;
+        margin-top: 7%;
+    }
+
+
+    .max .centerLi {
+        height: 360px;
+    }
+
+    .max .ltLi {
+        height: 360px;
+    }
+
+    .max .rtLi {
+        height: 360px;
+    }
+
+    .max .human .name {
+        height: 30px;
+        font-size: 14px;
+        line-height: 30px;
+    }
+
+    .max .longIcon {
+        width: 140px;
+        position: relative;
+        top: -20%;
+        right: -5%;
+        float: right;
+    }
+
+    .max .centerLi .topLi {
+        height: 280px;
+    }
+
+    .max .centerLi .cla, .max .centerLi .heartJump {
+        height: 229px;
+        line-height: 210px;
+        font-size: 120px;
+        padding-top: 4%;
+        text-align: center;
+    }
+
+    .max .human img {
+        width: 200px;
+        height: 200px;
+    }
+
+    .max .human .name {
+        height: 40px;
+        line-height: 40px;
+        font-size: 30px;
+    }
+
+    .max .centerLi .heartJump img {
+        width: 20px;
+        font-size: 20px;
+        top: -60px;
+    }
+
+    .max .centerLi .cla s {
+        font-size: 22px;
+        top: -60px;
+    }
+
+    .max .bottomLi {
+        font-size: 40px !important;
+    }
+
+
+    /*two*/
+    .two {
+        width: 48%;
+        height: 475px;
+        float: left;
+        border: 1px solid #fff;
+    }
+
+    .two:nth-child(2) {
+        float: right;
+    }
+
+    .two .centerLi .cla {
+        font-family: HeadLineA;
+        font-weight: normal;
+        font-size: 180px;
+        letter-spacing: -0.05em;
+        height: 310px;
+        line-height: 310px;
+    }
+
+    .two .centerLi .cla s {
+        font-family: HeadLineA;
+        font-weight: normal;
+        font-size: 38px;
+        letter-spacing: -0.05em;
+        top: -120px;
+    }
+
+    .two .human {
+        padding-top: 8%;
+    }
+
+    .two img {
+        width: 280px;
+        height: 280px;
+    }
+
+    .two .name {
+        width: 290px;
+        height: 60px;
+        font-family: "PingFang SC";
+        font-weight: 500;
+        font-size: 40px;
+        text-align: center;
+        color: #fff;
+        line-height: 60px;
+    }
+
+    .two .centerLi .heartJump {
+        font-family: HeadLineA;
+        font-weight: normal;
+        font-size: 140px;
+        letter-spacing: -0.05em;
+        text-align: center;
+        color: #fff;
+        height: 310px;
+        line-height: 310px;
+    }
+
+    .two .centerLi .heartJump img {
+        width: 25px;
+        height: 25px;
+        top: -110px;
+    }
+
+    .two .bottomLi {
+        font-family: HeadLineA;
+        font-weight: normal;
+        font-size: 40px;
+        color: #fff;
+        padding-bottom: 5px;
+    }
+
+
+    /*six*/
+    .six {
+        width: 31%;
+        float: left;
+        margin-right: 2%;
+        margin-bottom: 2%;
+        border: 1px solid #fff;
+    }
+
+    .six:nth-child(3) {
+        margin-right: 0
+    }
+
+    .six:nth-child(6) {
+        margin-right: 0
+    }
+
+    .six .centerLi .cla {
+        font-family: HeadLineA;
+        font-weight: normal;
+        font-size: 100px;
+        letter-spacing: -0.05em;
+        height: 220px;
+        line-height: 220px;
+    }
+
+    .six .centerLi .cla s {
+        font-family: HeadLineA;
+        font-weight: normal;
+        font-size: 40px;
+        letter-spacing: -0.05em;
+        top: -60px;
+    }
+
+    .six .human {
+        padding-top: 6%;
+    }
+
+    .six img {
+        width: 160px;
+        height: 160px;
+    }
+
+    .six .name {
+        width: 180px;
+        height: 40px;
+        font-family: "PingFang SC";
+        font-weight: 500;
+        font-size: 30px;
+        text-align: center;
+        color: #fff;
+        line-height: 40px;
+    }
+
+    .six .centerLi .heartJump {
+        font-family: HeadLineA;
+        font-weight: normal;
+        font-size: 100px;
+        letter-spacing: -0.05em;
+        text-align: center;
+        color: #fff;
+        height: 220px;
+        line-height: 220px;
+    }
+
+    .six .centerLi .heartJump img {
+        width: 25px;
+        height: 25px;
+        top: -60px;
+    }
+
+    .six .bottomLi {
+        font-family: HeadLineA;
+        font-weight: normal;
+        font-size: 32px;
+        color: #fff;
+        padding-bottom: 15px;
+    }
+
+    /*nine*/
+    .nine {
+        width: 31.5%;
+        float: left;
+        margin-right: 2%;
+        margin-bottom: 2%;
+        border: 1px solid #fff;
+    }
+
+    .nine:nth-child(3) {
+        margin-right: 0
+    }
+
+    .nine:nth-child(6) {
+        margin-right: 0
+    }
+
+    .nine:nth-child(9) {
+        margin-right: 0
+    }
+
+    .nine .centerLi .cla {
+        font-family: HeadLineA;
+        font-weight: normal;
+        font-size: 79px;
+        letter-spacing: -0.05em;
+        height: 150px;
+        line-height: 150px;
+    }
+
+    .nine .centerLi .cla s {
+        font-family: HeadLineA;
+        font-weight: normal;
+        font-size: 36px;
+        letter-spacing: -0.05em;
+        top: -60px;
+    }
+
+    .nine .human {
+        padding-top: 2%;
+    }
+
+    .nine img {
+        width: 100px;
+        height: 100px;
+    }
+
+    .nine .name {
+        width: 120px;
+        height: 30px;
+        font-family: "PingFang SC";
+        font-weight: 500;
+        font-size: 24px;
+        text-align: center;
+        color: #fff;
+        line-height: 30px;
+    }
+
+    .nine .centerLi .heartJump {
+        font-family: HeadLineA;
+        font-weight: normal;
+        font-size: 79px;
+        letter-spacing: -0.05em;
+        text-align: center;
+        color: #fff;
+        height: 150px;
+        line-height: 150px;
+    }
+
+    .nine .centerLi .heartJump img {
+        width: 25px;
+        height: 25px;
+        top: -60px;
+    }
+
+    .nine .bottomLi {
+        font-family: HeadLineA;
+        font-weight: normal;
+        font-size: 24px;
+        color: #fff;
+        padding-bottom: 5px;
+    }
+
+    /*sixteen*/
+    .sixteen {
+        width: 23.5%;
+        float: left;
+        margin-right: 0.3%;
+        margin-bottom: 0.3%;
+        border: 1px solid rgba(255, 255, 255, 0.5);
+    }
+
+    .sixteen .centerLi .cla {
+        font-family: HeadLineA;
+        font-weight: normal;
+        font-size: 49px;
+        letter-spacing: -0.05em;
+        height: 100px;
+        line-height: 120px;
+    }
+
+    .sixteen .centerLi .cla s {
+        font-family: HeadLineA;
+        font-weight: normal;
+        font-size: 30px;
+        letter-spacing: -0.05em;
+        top: -30px;
+    }
+
+    .sixteen .human {
+        padding-top: 2%;
+        height: 120px;
+        overflow: hidden;
+    }
+
+    .sixteen .head img {
+        width: 90px;
+        height: 90px;
+    }
+
+    .sixteen .name {
+        width: 100px;
+        height: 26px;
+        font-family: "PingFang SC";
+        font-weight: 500;
+        font-size: 20px;
+        text-align: center;
+        color: #fff;
+        line-height: 26px;
+    }
+
+    .sixteen .centerLi .heartJump {
+        font-family: HeadLineA;
+        font-weight: normal;
+        font-size: 49px;
+        letter-spacing: -0.05em;
+        text-align: center;
+        color: #fff;
+        height: 100px;
+        line-height: 120px;
+    }
+
+    .sixteen .centerLi .heartJump img {
+        width: 20px;
+        height: 20px;
+        top: -30px;
+        right: -5px;
+    }
+
+    .sixteen .bottomLi {
+        font-family: HeadLineA;
+        font-weight: normal;
+        font-size: 22px;
+        color: #fff;
+        line-height: 30px;
+        padding-bottom: 5px;
+    }
+
+
+    /*twenty*/
+    .twenty {
+        width: 19.5%;
+        float: left;
+        margin-right: 10px;
+        margin-bottom: 0.3%;
+        border: 1px solid rgba(255, 255, 255, 0.5);
+    }
+
+    .twenty:nth-child(5) {
+        margin-right: 0
+    }
+
+    .twenty:nth-child(10) {
+        margin-right: 0
+    }
+
+    .twenty:nth-child(15) {
+        margin-right: 0
+    }
+
+    .twenty:nth-child(20) {
+        margin-right: 0
+    }
+
+    .twenty .centerLi .cla {
+        font-family: HeadLineA;
+        font-weight: normal;
+        font-size: 40px;
+        letter-spacing: -0.05em;
+        height: 90px;
+        line-height: 90px;
+    }
+
+    .twenty .centerLi .cla s {
+        font-family: HeadLineA;
+        font-weight: normal;
+        font-size: 16px;
+        letter-spacing: -0.05em;
+        top: -20px;
+    }
+
+    .twenty .human {
+        padding-top: 2%;
+        height: 110px;
+        overflow: hidden;
+    }
+
+    .twenty img {
+        width: 90px;
+        height: 90px;
+    }
+
+    .twenty .name {
+        width: 80px;
+        height: 24px;
+        font-family: "PingFang SC";
+        font-weight: 500;
+        font-size: 16px;
+        text-align: center;
+        color: #fff;
+        line-height: 24px;
+    }
+
+    .twenty .centerLi .heartJump {
+        font-family: HeadLineA;
+        font-weight: normal;
+        font-size: 40px;
+        letter-spacing: -0.05em;
+        text-align: center;
+        color: #fff;
+        height: 90px;
+        line-height: 90px;
+    }
+
+    .twenty .centerLi .heartJump img {
+        width: 14px;
+        height: 14px;
+        top: -20px;
+    }
+
+    .twenty .bottomLi {
+        font-family: HeadLineA;
+        font-weight: normal;
+        font-size: 18px;
+        color: #fff;
+        padding-bottom: 5px;
+    }
+
+    /*two*/
+    .two {
+        width: 48%;
+        height: 400px;
+        float: left;
+        overflow: hidden;
+        border: 1px solid #fff;
+        margin-top: 2%
+    }
+
+    .two:nth-child(2) {
+        float: right;
+    }
+
+    .two .centerLi {
+        height: 100%;
+    }
+
+    .two .human .name {
+        height: 30px;
+        font-size: 14px;
+        line-height: 30px;
+    }
+
+    .two .longIcon {
+        width: 140px;
+        position: relative;
+        top: -20%;
+        right: -5%;
+        float: right;
+    }
+
+    .two .centerLi .topLi {
+        height: 280px;
+    }
+
+    .two .centerLi .cla, .two .centerLi .heartJump {
+        height: 229px;
+        line-height: 210px;
+        font-size: 120px;
+        padding-top: 4%;
+        text-align: center;
+    }
+
+    .two .human img {
+        width: 200px;
+        height: 200px;
+    }
+
+    .two .human .name {
+        height: 40px;
+        line-height: 40px;
+        font-size: 30px;
+    }
+
+    .two .centerLi .heartJump img {
+        width: 20px;
+        font-size: 20px;
+        top: -60px;
+    }
+
+    .two .centerLi .cla s {
+        font-size: 22px;
+        top: -60px;
+    }
+
+    .two .bottomLi {
+        font-size: 40px !important;
+    }
+
+    /*sixteen*/
+    .sixteen {
+        width: 19%;
+        height: 120px;
+        float: left;
+        overflow: hidden;
+        border: 1px solid rgba(255, 255, 255, 0.35);
+        margin-top: 5px;
+        margin-right: 1%;
+    }
+
+    .sixteen:nth-child(5) {
+        float: right;
+        margin-right: 0;
+    }
+
+    .sixteen:nth-child(10) {
+        float: right;
+        margin-right: 0;
+    }
+
+    .sixteen:nth-child(15) {
+        float: right;
+        margin-right: 0;
+    }
+
+    .sixteen:nth-child(20) {
+        float: right;
+        margin-right: 0;
+    }
+
+    .sixteen .centerLi {
+        height: 100%;
+    }
+
+    .sixteen .human {
+        height: 80px;
+    }
+
+    .sixteen .human .name {
+        width: 60px;
+        height: 16px;
+        font-size: 12px;
+        line-height: 16px;
+    }
+
+    .sixteen .longIcon {
+        width: 140px;
+        position: relative;
+        top: -20%;
+        right: -5%;
+        float: right;
+    }
+
+    .sixteen .centerLi .topLi {
+        width: 100%;
+        overflow: hidden;
+        display: block;
+        margin: 0 auto;
+        /*height: 70px;*/
+    }
+
+    .sixteen .centerLi .cla, .sixteen .centerLi .heartJump {
+        height: 60px;
+        line-height: 90px;
+        font-size: 33px;
+        padding-top: 4%;
+        text-align: center;
+        font-weight: 800;
+    }
+
+    .sixteen .centerLi .cla span {
+        width: 100%;
+        overflow: hidden;
+        display: block;
+        margin: 0 auto;
+    }
+
+    .sixteen .human img {
+        width: 60px;
+        height: 60px;
+        margin-top: 2px;
+    }
+
+    .sixteen .centerLi .heartJump img {
+        width: 8px;
+        height: 8px;
+        top: -58px;
+        right: 4px;
+        float: right;
+    }
+
+    .sixteen .centerLi .heartJump span {
+        width: 80%;
+        padding-right: 20%;
+        overflow: hidden;
+        display: block;
+        margin: 0 auto;
+        text-align: right;
+    }
+
+    .sixteen .centerLi .heartJump {
+        float: left;
+        text-align: center;
+    }
+
+    .sixteen .centerLi .cla s {
+        font-size: 14px;
+        top: -100px;
+        right: 3px;
+        float: right;
+    }
+
+    .sixteen .bottomLi {
+        margin-top: 5px;
+        font-size: 14px !important;
+        line-height: 30px;
+    }
+
+    .bottomLi img {
+        padding-top: 5px;
+        float: left;
+        padding-left: 10px;
+    }
+
+    .bottomLi .btck {
+        width: 35%;
+    }
+
+}

+ 1498 - 0
tv/src/assets/css/mainBk2.css

@@ -0,0 +1,1498 @@
+.pages {
+    position: absolute;
+    top: 0;
+    left: 0;
+    right: 0;
+    bottom: 0;
+    width: 100%;
+    overflow: hidden;
+    display: block;
+    margin: 0 auto;
+    background-color: #028fe1;
+    background: url("../static/img/mainBg.png");
+    background-size: 100%;
+    background-repeat: no-repeat;
+}
+
+ul, li {
+    list-style: none;
+    margin: 0;
+    padding: 0;
+}
+
+.userList {
+    width: 98%;
+    height: 80%;
+    overflow: hidden;
+    display: block;
+    margin: 0 auto;
+}
+
+.userList {
+    height: 100%;
+}
+
+.userList ul {
+    width: 100%;
+    overflow: hidden;
+    display: block;
+    margin: 0 auto;
+    padding-bottom: 0.2rem;
+}
+
+.blue .centerLi {
+    background: #028FE1;
+}
+
+.violet .centerLi {
+    background: #6D26FA;
+}
+
+.green .centerLi {
+    background: #0AB105;
+}
+
+.yellow .centerLi {
+    background: #BACC01;
+}
+
+.brown .centerLi {
+    background: #EA8813;
+}
+
+.red .centerLi {
+    background: #CF1122;
+}
+
+.centerLi {
+    overflow: hidden;
+    display: block;
+    margin: 0 auto;
+    /*border: 3px solid rgba(0, 0, 0, 0.5);*/
+    box-shadow: inset 0 0 10px 3px rgba(0, 0, 0, 0.5);
+    /*box-shadow:inset 0px 0px 5px 1px #000;*/
+}
+
+.centerLi .top {
+    width: 100%;
+    overflow: hidden;
+    display: block;
+    margin: 0 auto;
+}
+
+.centerLi .bottom {
+    width: 100%;
+    overflow: hidden;
+    display: block;
+    margin: 0 auto;
+}
+
+.centerLi .cla {
+    width: 30%;
+    float: left;
+    font-family: HeadLineA;
+    font-weight: normal;
+    /*text-align: center;*/
+    color: #fff;
+    text-align: right !important;
+
+
+    /*animation: mymove 3s infinite;*/
+    /*-webkit-animation: mymove 3s infinite; !*Safari and Chrome*!*/
+    /*animation-direction: alternate; !*轮流反向播放动画。*!*/
+    /*animation-timing-function: ease-in-out; !*动画的速度曲线*!*/
+    /*!* Safari 和 Chrome *!*/
+    /*-webkit-animation: mymove 3s infinite;*/
+    /*-webkit-animation-direction: alternate; !*轮流反向播放动画。*!*/
+    /*-webkit-animation-timing-function: ease-in-out; !*动画的速度曲线*!*/
+}
+
+
+.centerLi .cla s {
+    position: relative;
+    font-family: "PingFang SC";
+    text-decoration: none;
+}
+
+.centerLi .heartJump {
+    width: 30%;
+    font-family: HeadLineA;
+    font-weight: normal;
+    text-align: right;
+    color: #fff;
+    float: right;
+    text-indent: -0.1rem;
+}
+
+.centerLi .heartJump img {
+    position: relative;
+    font-family: "PingFang SC";
+    text-align: center;
+    color: #fff;
+    text-decoration: none;
+}
+
+
+.centerLi .fastJump {
+    animation: mymove 1s infinite;
+    -webkit-animation: mymove 1s infinite; /*Safari and Chrome*/
+    animation-direction: alternate; /*轮流反向播放动画。*/
+    animation-timing-function: ease-in-out; /*动画的速度曲线*/
+    /* Safari 和 Chrome */
+    -webkit-animation: mymove 1s infinite;
+    -webkit-animation-direction: alternate; /*轮流反向播放动画。*/
+    -webkit-animation-timing-function: ease-in-out; /*动画的速度曲线*/
+}
+
+.centerLi .slowJump {
+    animation: mymove 2s infinite;
+    -webkit-animation: mymove 2s infinite; /*Safari and Chrome*/
+    animation-direction: alternate; /*轮流反向播放动画。*/
+    animation-timing-function: ease-in-out; /*动画的速度曲线*/
+    /* Safari 和 Chrome */
+    -webkit-animation: mymove 3s infinite;
+    -webkit-animation-direction: alternate; /*轮流反向播放动画。*/
+    -webkit-animation-timing-function: ease-in-out; /*动画的速度曲线*/
+}
+
+@keyframes mymove {
+    0% {
+        transform: scale(1); /*开始为原始大小*/
+    }
+    25% {
+        transform: scale(1.2); /*放大1.1倍*/
+    }
+    50% {
+        transform: scale(1);
+    }
+    75% {
+        transform: scale(1.2);
+    }
+
+}
+
+@-webkit-keyframes mymove /*Safari and Chrome*/
+{
+    0% {
+        transform: scale(1); /*开始为原始大小*/
+    }
+    25% {
+        transform: scale(1.2); /*放大1.1倍*/
+    }
+    50% {
+        transform: scale(1);
+    }
+    75% {
+        transform: scale(1.2);
+    }
+}
+
+.centerLi .human {
+    /*width: 36%;*/
+    width: 40%;
+    float: left;
+    padding-top: 0.1rem;
+    overflow: hidden;
+}
+
+.human img {
+    overflow: hidden;
+    display: block;
+    margin: 0 auto;
+    border-radius: 250px;
+    border: 2px solid #fff;
+}
+
+.human .name {
+    width: 100%;
+    overflow: hidden;
+    display: block;
+    margin: 0 auto;
+    color: #fff;
+    text-align: center;
+}
+
+.bottomLi {
+    width: 100%;
+    overflow: hidden;
+    display: block;
+    margin: 0 auto;
+    margin-top: 0.4rem;
+    font-weight: normal !important;
+    color: #fff;
+    text-align: left;
+    line-height: 0.7rem;
+}
+.bottomLi img {
+    float: left;
+    margin-left: 10%;
+}
+
+.bottomLi .btcla {
+    width: 31%;
+    float: left;
+}
+
+.bottomLi .btck {
+    width: 32%;
+    float: left;
+    /*text-indent: 0.8rem;*/
+}
+
+.bottomLi .step {
+    width: 30%;
+    float: right;
+}
+
+.levelIcon {
+    position: absolute;
+    bottom: 0.1rem;
+    width: 100%;
+    overflow: hidden;
+    display: block;
+    margin: 0 auto;
+    height: 5rem;
+    padding-bottom: 5px;
+}
+
+.levelIcon ul {
+    width: 94%;
+    height: 100%;
+    overflow: hidden;
+    display: block;
+    margin: 0 auto;
+}
+
+.levelIcon li {
+    width: 14.666666666667%;
+    height: 100%;
+    float: left;
+    padding-left: 2%;
+}
+
+.levelIcon li:nth-child(1) {
+    padding-left: 0;
+}
+
+.levelIcon li span {
+    width: 5rem;
+    height: 4rem;
+    overflow: hidden;
+    float: left;
+    background: url("../static/img/l1.png");
+    background-repeat: no-repeat;
+    background-size: 100% 100%;
+    background-position: top center;
+    font-family: "PingFang SC";
+    font-weight: normal;
+    font-size: 1.2rem;
+    letter-spacing: -0.05em;
+    text-align: center;
+    color: #fff;
+    line-height: 35px;
+
+}
+
+.levelIcon li span div {
+    width: 100%;
+    overflow: hidden;
+    display: block;
+    margin: 0 auto;
+    padding-top: 17%;
+}
+
+.levelIcon li:nth-child(2) span {
+    background: url("../static/img/l2.png");
+    background-size: 100% 100%;
+    background-position: top center;
+}
+
+.levelIcon li:nth-child(3) span {
+    background: url("../static/img/l3.png");
+    background-size: 100% 100%;
+    background-position: top center;
+}
+
+.levelIcon li:nth-child(4) span {
+    background: url("../static/img/l4.png");
+    background-size: 100% 100%;
+    background-position: top center;
+}
+
+.levelIcon li:nth-child(5) span {
+    background: url("../static/img/l5.png");
+    background-size: 100% 100%;
+    background-position: top center;
+}
+
+.levelIcon li:nth-child(6) span {
+    background: url("../static/img/l6.png");
+    background-size: 100% 100%;
+    background-position: top center;
+}
+
+.levelIcon li:nth-child(6) span div {
+    margin-top: 13%;
+}
+
+.levelIcon li em {
+    float: right;
+    width: 4rem;
+    height: 42px;
+    border-radius: 21px;
+    background: rgba(2, 143, 225, 0.16);
+    border: 1px solid #028fe1;
+    box-shadow: 0px 0px 5px #028fe1;
+    font-family: "PingFang SC";
+    font-weight: normal;
+    font-size: 24px;
+    text-align: center;
+    color: #fff;
+    font-style: normal;
+    line-height: 42px;
+    margin-top: 15%;
+    margin-left: 1%;
+}
+
+.levelIcon li:nth-child(2) em {
+    background: rgba(109, 38, 250, 0.16);
+    border: 1px solid #6d26fa;
+    box-shadow: 0px 0px 5px #6d26fa;
+}
+
+.levelIcon li:nth-child(3) em {
+    background: rgba(10, 177, 5, 0.16);
+    border: 1px solid #0ab105;
+    box-shadow: 0px 0px 5px #0ab105;
+
+}
+
+.levelIcon li:nth-child(4) em {
+    background: rgba(186, 204, 1, 0.16);
+    border: 1px solid #bacc01;
+    box-shadow: 0px 0px 5px #bacc01;
+}
+
+.levelIcon li:nth-child(5) em {
+    background: rgba(234, 136, 19, 0.16);
+    border: 1px solid #ea8813;
+    box-shadow: 0px 0px 5px #ea8813;
+}
+
+.levelIcon li:nth-child(6) em {
+    background: rgba(209, 17, 34, 0.16);
+    border: 1px solid #d11122;
+    box-shadow: 0px 0px 5px #d11122;
+}
+
+.long {
+    width: 2.772rem;
+    position: relative;
+    bottom: 1.772rem;
+    right: -1.4rem;
+    float: right;
+    z-index: 222;
+    overflow: visible;
+}
+
+
+.score {
+    width: 60%;
+    float: right;
+}
+
+.score em {
+    width: 100%;
+    overflow: hidden;
+    display: block;
+    margin: 0 auto;
+    font-family: Roboto;
+    font-weight: bold;
+    font-size: 90px;
+    text-align: center;
+    color: #fff;
+    font-style: normal;
+    height: 150px;
+    line-height: 150px;
+}
+
+.score span {
+    width: 100%;
+    overflow: hidden;
+    display: block;
+    margin: 0 auto;
+    font-family: Roboto;
+    font-weight: normal;
+    font-size: 30px;
+    color: #fff;
+    text-align: center;
+
+}
+
+.btck {
+    width: 35%;
+    float: left;
+    text-align: left;
+    text-indent: 0.05rem;
+}
+
+.btcla {
+    text-indent: 0.05rem;
+}
+
+.step {
+    text-indent: 0.05rem;
+}
+
+
+/*@media only screen and (min-width: 1260px) {*/
+
+.levelIcon {
+    height: 70px;
+}
+
+.levelIcon li span {
+    width: 70px;
+    height: 70px;
+    font-size: 12px;
+}
+
+.levelIcon li span div {
+    font-size: 16px;
+    padding-top: 12px;
+    line-height: 22px;
+}
+
+.levelIcon ul {
+    width: 98%;
+}
+
+.levelIcon li em {
+    width: 45%;
+    height: 30px;
+    line-height: 30px;
+    font-size: 0.2rem;
+    margin-top: 11%;
+    margin-left: 18%;
+    float: left;
+}
+
+.userList .max {
+    width: 80%;
+    height: 6rem;
+    overflow: visible;
+    display: block;
+    margin: 0 auto;
+    margin-top: 5%;
+}
+
+.max .ltLi {
+    width: 5%;
+    float: left;
+    background: url("../static/img/ltCube.png");
+    background-size: 100% 100%;
+    background-repeat: no-repeat;
+}
+
+.max .rtLi {
+    width: 5%;
+    float: right;
+    background: url("../static/img/rtCube.png");
+    background-size: 100% 100%;
+    background-repeat: no-repeat;
+}
+
+.max .centerLi {
+    width: 90%;
+    float: left;
+    height: 6rem;
+    border: none;
+}
+
+.max .ltLi {
+    height: 6rem;
+}
+
+.max .rtLi {
+    height: 6rem;
+}
+
+
+.max .human .name {
+    width: 100%;
+    font-size: 0.7rem;
+    height: 1rem;
+    line-height: 1rem;
+}
+
+.max .longIcon {
+    position: absolute;
+    width: 1.96rem;
+    overflow: hidden;
+    display: block;
+    margin: 0 auto;
+    top: 57%;
+    right: 8%;
+}
+
+.max .centerLi .topLi {
+    height: 4.5rem;
+}
+
+.max .centerLi .cla, .max .centerLi .heartJump {
+    height: 4rem;
+    line-height: 4rem;
+    font-size: 1.8rem;
+    padding-top: 4%;
+    text-align: center;
+    float: left;
+}
+.max .centerLi .heartJump {
+    text-align:left;
+}
+.max .human img {
+    width: 3rem;
+    height: 3rem;
+}
+
+
+.max .centerLi .heartJump img {
+    width: 0.5rem;
+    font-size: 20px;
+    top: -1rem;
+}
+
+.max .centerLi .cla s {
+    font-size: 0.6rem;
+    top: -1rem;
+}
+
+.max .bottomLi {
+    font-size: 0.7rem;
+    text-align: center;
+}
+
+.max .bottomLi .btck {
+    /*text-indent: 1.6rem;*/
+}
+
+.max .bottomLi img {
+    width: 0.5rem;
+    height: 0.5rem;
+}
+
+/*two*/
+.two {
+    width: 49%;
+    height: 5.33rem;
+    float: left;
+    overflow: hidden;
+    border: 1px solid #fff;
+    margin-top: 6%
+}
+
+.two:nth-child(2) {
+    float: right;
+}
+
+.two .human {
+    margin-top: 0.2rem;
+}
+
+.two .centerLi {
+    height: 100%;
+}
+
+.two .human .name {
+    width: 100%;
+    height: 0.4rem;
+    font-size: 0.2rem;
+    line-height: 0.4rem;
+}
+
+
+.two .centerLi .topLi {
+    height: 3.7rem;
+}
+
+.two .centerLi .cla, .two .centerLi .heartJump {
+    height: 3rem;
+    line-height: 4rem;
+    font-size: 1.2rem;
+    padding-top: 4%;
+    /*text-align: center;*/
+}
+
+.two .human img {
+    width: 2.8rem;
+    height: 2.8rem;
+    margin-top: 0.2rem;
+}
+
+.two .human .name {
+    height: 40px;
+    line-height: 40px;
+    font-size: 0.5rem;
+}
+
+.two .centerLi .heartJump img {
+    width: 0.3rem;
+    height: 0.3rem;
+    top: -60px;
+}
+
+.two .centerLi .cla s {
+    font-size: 0.4rem;
+    top: -60px;
+}
+
+.two .bottomLi {
+    width: 100%;
+    overflow: hidden;
+    display: block;
+    font-size: 0.5rem;
+    line-height: 1.4rem;
+}
+
+.two .bottomLi img {
+    width: 0.5rem;
+    height: 0.5rem;
+}
+
+/*three*/
+.three {
+    width: 49%;
+    height: 3.9rem;
+    float: left;
+    overflow: hidden;
+    margin-top: 2%
+}
+
+.three .human {
+    margin-top: 0rem;
+}
+
+.three .centerLi {
+    width: 92%;
+    /*height: 100%;*/
+    border: 1px solid #fff;
+}
+
+.three .human .name {
+    font-size: 0.4rem;
+    line-height: 0.4rem;
+    margin-top: 0.2rem;
+}
+
+
+.three .centerLi .topLi {
+    height: 3rem;
+}
+
+.three .centerLi .cla, .three .centerLi .heartJump {
+    height: 2.2rem;
+    line-height: 2.8rem;
+    font-size: 1rem;
+    padding-top: 4%;
+    /*text-align: center;*/
+}
+
+.three .human img {
+    width: 1.8rem;
+    height: 1.8rem;
+    margin-top: 0.2rem;
+}
+
+
+.three .centerLi .heartJump img {
+    width: 0.3rem;
+    height: 0.3rem;
+    top: -0.7rem;
+}
+
+.three .centerLi .cla s {
+    font-size: 0.4rem;
+    top: -0.7rem;
+}
+
+.three .bottomLi {
+    margin-top: 0;
+    font-size: 0.4rem;
+    font-weight: normal;
+}
+
+.three .bottomLi img {
+    width: 0.4rem;
+    height: 0.4rem;
+}
+
+/*six*/
+.six {
+    width: 33.3333%;
+    height: 3.6rem;
+    float: left;
+    margin-top: 0.5rem;
+
+}
+
+.six .centerLi {
+    width: 96%;
+    height: 100%;
+    border: 1px solid #fff;
+}
+
+.six .centerLi .cla {
+    font-family: HeadLineA;
+    font-weight: normal;
+    font-size: 1.1rem;
+    letter-spacing: -0.05em;
+    height: 2rem;
+    line-height: 3.2rem;
+}
+
+.six .centerLi .cla s {
+    font-family: HeadLineA;
+    font-weight: normal;
+    font-size: 0.4rem;
+    letter-spacing: -0.05em;
+    top: -0.5rem;
+}
+
+.six .human {
+    width: 41%;
+    padding-top: 0.1rem;
+    margin-top: 0.1rem;
+}
+
+.six .centerLi .cla, .six .centerLi .heartJump {
+    height: 1.9rem;
+    line-height: 2.7rem;
+    font-size: 0.7rem;
+    padding-top: 4%;
+    /*text-align: center;*/
+}
+
+
+.six .human img {
+    width: 1.6rem;
+    height: 1.6rem;
+    margin-top: 0.1rem;
+}
+
+.six .name {
+    width: 100%;
+    font-family: "PingFang SC";
+    font-weight: 500;
+    font-size: 0.4rem;
+    text-align: center;
+    color: #fff;
+    line-height: 0.6rem;
+}
+
+.six .topLi {
+    height: 2.2rem;
+}
+.six .centerLi .heartJump {
+    width: 29%;
+}
+.six .centerLi .heartJump img {
+    width: 0.25rem;
+    height: 0.25rem;
+    top: -0.5rem;
+}
+
+.six .bottomLi {
+    font-family: HeadLineA;
+    font-weight: normal;
+    font-size: 0.35rem;
+    color: #fff;
+    line-height: 1.2rem;
+}
+
+.six .bottomLi img {
+    width: 0.3rem;
+    height: 0.3rem;
+}
+
+/*nine*/
+.nine {
+    width: 33.3333%;
+    height: 2.7rem;
+    float: left;
+    margin-top: 0.1rem;
+}
+
+.nine .centerLi {
+    width: 98%;
+    height: 100%;
+    /*border: 1px solid #fff;*/
+}
+
+.nine .centerLi .cla {
+    font-family: HeadLineA;
+    font-weight: normal;
+    font-size: 1rem;
+    letter-spacing: -0.05em;
+    height: 1.6rem;
+    line-height: 2rem;
+}
+
+.nine .centerLi .cla s {
+    font-family: HeadLineA;
+    font-weight: normal;
+    font-size: 0.3rem;
+    letter-spacing: -0.05em;
+    top: -0.5rem;
+}
+
+.nine .human {
+    padding-top: 0.1rem;
+}
+
+.nine .human img {
+    width: 1.2rem;
+    height: 1.2rem;
+    margin-top: 0.1rem;
+}
+
+.nine .centerLi .cla, .nine .centerLi .heartJump {
+    height: 1.8rem;
+    line-height: 1.9rem;
+    font-size: 0.75rem;
+    padding-top: 4%;
+    /*text-align: center;*/
+}
+
+.nine .name {
+    width: 100%;
+    font-family: "PingFang SC";
+    font-weight: 500;
+    font-size: 0.3rem;
+    text-align: center;
+    color: #fff;
+    line-height: 0.5rem;
+}
+
+
+.nine .centerLi .heartJump img {
+    width: 0.2rem;
+    height: 0.2rem;
+    top: -0.5rem;
+}
+
+.nine .bottomLi {
+    font-family: HeadLineA;
+    font-weight: normal;
+    font-size: 0.3rem;
+    color: #fff;
+    margin-top: 0;
+    line-height: 0.7rem;
+}
+
+.nine .bottomLi img {
+    width: 0.3rem;
+    height: 0.3rem;
+}
+
+/*ten*/
+.ten {
+    width: 25%;
+    height: 2.5rem;
+    float: left;
+    margin-top: 0.3rem;
+}
+
+.ten .centerLi {
+    width: 96%;
+    height: 100%;
+}
+
+.ten .centerLi .cla {
+    font-family: HeadLineA;
+    font-weight: normal;
+    font-size: 1rem;
+    letter-spacing: -0.05em;
+    height: 1.6rem;
+    line-height: 2rem;
+}
+
+.ten .centerLi .cla s {
+    font-family: HeadLineA;
+    font-weight: normal;
+    font-size: 0.3rem;
+    letter-spacing: -0.05em;
+    top: -0.4rem;
+}
+
+.ten .human {
+    padding-top: 0.1rem;
+}
+
+.ten .human img {
+    width: 1.1rem;
+    height: 1.1rem;
+    margin-top: 0.1rem;
+}
+
+.ten .centerLi .cla, .ten .centerLi .heartJump {
+    height: 1.6rem;
+    line-height: 2rem;
+    font-size: 0.6rem;
+    padding-top: 4%;
+    /*text-align: center;*/
+}
+
+.ten .name {
+    width: 100%;
+    font-family: "PingFang SC";
+    font-weight: 500;
+    font-size: 0.3rem;
+    text-align: center;
+    color: #fff;
+    line-height: 0.5rem;
+}
+
+
+.ten .centerLi .heartJump img {
+    width: 0.2rem;
+    height: 0.2rem;
+    top: -0.4rem;
+}
+
+.ten .bottomLi {
+    font-family: HeadLineA;
+    font-weight: normal;
+    font-size: 0.25rem;
+    color: #fff;
+    padding-bottom: 5px;
+    margin-top: 0;
+    line-height: 0.8rem;
+}
+
+.ten .bottomLi img {
+    width: 0.25rem;
+    height: 0.25rem;
+}
+
+
+/*twelve*/
+.twelve {
+    width: 20%;
+    height: 2.3rem;
+    float: left;
+    margin-top: 0.3rem;
+}
+
+.twelve .centerLi {
+    width: 96%;
+    height: 100%;
+}
+
+.twelve .centerLi .cla {
+    font-family: HeadLineA;
+    font-weight: normal;
+    font-size: 0.8rem;
+    letter-spacing: -0.05em;
+    height: 1.6rem;
+    line-height: 2rem;
+}
+
+.twelve .centerLi .cla s {
+    font-family: HeadLineA;
+    font-weight: normal;
+    font-size: 0.2rem;
+    letter-spacing: -0.05em;
+    top: -0.25rem;
+    right: -0.05rem;
+}
+
+.twelve .human {
+    padding-top: 0.1rem;
+}
+
+.twelve .human img {
+    width: 0.9rem;
+    height: 0.9rem;
+    margin-top: 0.1rem;
+}
+
+.twelve .centerLi .cla, .twelve .centerLi .heartJump {
+    height: 1.6rem;
+    line-height: 1.9rem;
+    font-size: 0.45rem;
+    padding-top: 4%;
+    /*text-align: center;*/
+}
+
+.twelve .name {
+    width: 100%;
+    font-family: "PingFang SC";
+    font-weight: 500;
+    font-size: 0.25rem;
+    text-align: center;
+    color: #fff;
+    line-height: 0.4rem;
+}
+
+
+.twelve .centerLi .heartJump img {
+    width: 0.15rem;
+    height: 0.15rem;
+    top: -0.3rem;
+}
+
+.twelve .bottomLi {
+    font-family: HeadLineA;
+    font-weight: normal;
+    font-size: 0.25rem;
+    color: #fff;
+    line-height: 0.5rem;
+    padding-bottom: 5px;
+}
+
+.twelve .bottomLi img {
+    width: 0.2rem;
+    height: 0.2rem;
+}
+
+.twelve .bottomLi .step {
+    width: 35%;
+}
+
+/*sixteen*/
+.sixteen {
+    width: 20%;
+    height: 1.92rem;
+    float: left;
+    overflow: hidden;
+    margin: 0;
+    margin-top: 1%;
+}
+
+.sixteen .centerLi {
+    width: 96%;
+    height: 100%;
+}
+
+.sixteen .human {
+    width: 40%;
+    height: 1.28rem;
+}
+
+.sixteen .human .name {
+    width: 100%;
+    height: 0.3rem;
+    font-size: 0.25rem;
+    line-height: 0.25rem;
+    margin-top: 0.1rem;
+}
+
+.sixteen .centerLi .topLi {
+    /*height: 1.3rem;*/
+    height: 1.3rem;
+}
+
+.sixteen .centerLi .cla, .sixteen .centerLi .heartJump {
+    height: 1rem;
+    line-height: 1.9rem;
+    font-size: 0.42rem;
+    /*text-align: center;*/
+    font-weight: 800;
+}
+
+.sixteen .centerLi .cla span {
+    width: 100%;
+    overflow: hidden;
+    display: block;
+    margin: 0 auto;
+}
+
+.sixteen .human img {
+    width: 0.75rem;
+    height: 0.75rem;
+    margin-top: 0.1rem;
+}
+
+.sixteen .centerLi .heartJump img {
+    width: 0.15rem;
+    height: 0.15rem;
+    top: -1.2rem;
+    right: 0.25rem;
+    float: right;
+}
+
+.sixteen .centerLi .heartJump span {
+    width: 80%;
+    padding-right: 20%;
+    overflow: hidden;
+    display: block;
+    margin: 0 auto;
+    /*text-align: center;*/
+}
+
+.sixteen .centerLi .heartJump {
+    float: left;
+    /*text-align: left;*/
+}
+
+.sixteen .centerLi .cla s {
+    font-size: 0.2rem;
+    top: -2rem;
+    right: -0.2rem;
+    float: right;
+}
+
+.sixteen .bottomLi {
+    line-height: 0.5rem;
+    font-size: 0.22rem;
+    text-align: left;
+    margin-top: 0.15rem;
+}
+
+.sixteen .bottomLi img {
+    width: 0.25rem;
+    height: 0.25rem;
+    padding-top: 0.1rem;
+    padding-left: 4%;
+}
+
+.sixteen .bottomLi .btcla {
+    width: 35%;
+    text-align: center;
+    text-indent: 0;
+}
+
+.sixteen .bottomLi .btck {
+    width: 35%;
+    text-align: left;
+}
+
+
+/*twenty*/
+.twenty {
+    width: 16.66667%;
+    height: 1.85rem;
+    float: left;
+    overflow: hidden;
+    margin: 0;
+    margin-top: 0.2rem;
+}
+
+.twenty .centerLi {
+    width: 96%;
+    height: 100%;
+}
+
+.twenty .human {
+    width: 38%;
+    /*height: 1.1rem;*/
+}
+
+.twenty .human .name {
+    width: 100%;
+    height: 0.3rem;
+    font-size: 0.25rem;
+    line-height: 0.3rem;
+}
+
+.twenty .centerLi .topLi {
+    height: 1.3rem;
+}
+
+.twenty .centerLi .cla {
+    width: 32%;
+}
+
+.twenty .centerLi .cla, .twenty .centerLi .heartJump {
+    height: 1rem;
+    line-height: 1.75rem;
+    font-size: 0.35rem;
+    /*text-align: center;*/
+    font-weight: 800;
+}
+
+.twenty .centerLi .cla span {
+    width: 100%;
+    overflow: hidden;
+    display: block;
+    margin: 0 auto;
+    text-align: center;
+    text-indent: 0.2rem;
+    /*line-height: 1.75rem;*/
+}
+
+.twenty .human img {
+    width: 0.7rem;
+    height: 0.7rem;
+    margin-top: 0.1rem;
+}
+
+.twenty .centerLi .heartJump img {
+    width: 0.15rem;
+    height: 0.15rem;
+    top: -1.1rem;
+    right: 0.20rem;
+    float: right;
+}
+
+.twenty .centerLi .heartJump span {
+    width: 80%;
+    padding-right: 20%;
+    overflow: hidden;
+    display: block;
+    margin: 0 auto;
+    /*text-align: right;*/
+}
+
+.twenty .centerLi .heartJump {
+    float: left;
+    /*text-align: center;*/
+}
+
+.twenty .centerLi .cla s {
+    font-size: 0.2rem;
+    top: -1.9rem;
+    right: -0.15rem;
+    float: right;
+    text-align: right;
+}
+
+.twenty .bottomLi {
+    line-height: 0.5rem;
+    font-size: 0.21rem;
+    text-align: center;
+    margin-top: 0.1rem;
+
+}
+
+
+.twenty .bottomLi img {
+    width: 0.2rem;
+    height: 0.2rem;
+}
+
+.twenty .bottomLi .btck {
+    width: 35%;
+}
+
+.twenty .bottomLi .step {
+    float: left;
+    text-align: center;
+}
+
+/*twentyFour*/
+.twentyFour {
+    /*width: 20%;*/
+    width: 16.6667%;
+    height: 1.7rem;
+    /*height: 2rem;*/
+    float: left;
+    overflow: hidden;
+    margin: 0;
+    margin-top: 0.04rem;
+}
+
+
+.twentyFour .centerLi {
+    width: 96%;
+    height: 100%;
+}
+
+.twentyFour .human {
+    width: 38%;
+    /*height: 1.1rem;*/
+}
+
+.twentyFour .human .name {
+    width: 100%;
+    height: 0.3rem;
+    font-size: 0.25rem;
+    line-height: 0.3rem;
+}
+
+.twentyFour .centerLi .topLi {
+    height: 1.3rem;
+}
+
+.twentyFour .centerLi .cla {
+    width: 32%;
+}
+
+.twentyFour .centerLi .cla, .twentyFour .centerLi .heartJump {
+    height: 1rem;
+    line-height: 1.75rem;
+    font-size: 0.35rem;
+    /*text-align: center;*/
+    font-weight: 800;
+}
+
+.twentyFour .centerLi .cla span {
+    width: 100%;
+    overflow: hidden;
+    display: block;
+    margin: 0 auto;
+    text-align: center;
+    text-indent: 0.2rem;
+    /*line-height: 1.75rem;*/
+}
+
+.twentyFour .human img {
+    width: 0.7rem;
+    height: 0.7rem;
+    margin-top: 0.1rem;
+}
+
+.twentyFour .centerLi .heartJump img {
+    width: 0.15rem;
+    height: 0.15rem;
+    top: -1.1rem;
+    right: 0.20rem;
+    float: right;
+}
+
+.twentyFour .centerLi .heartJump span {
+    width: 80%;
+    padding-right: 20%;
+    overflow: hidden;
+    display: block;
+    margin: 0 auto;
+    /*text-align: right;*/
+}
+
+.twentyFour .centerLi .heartJump {
+    float: left;
+    /*text-align: center;*/
+}
+
+.twentyFour .centerLi .cla s {
+    font-size: 0.2rem;
+    top: -1.9rem;
+    right: -0.15rem;
+    float: right;
+    text-align: right;
+}
+
+.twentyFour .bottomLi {
+    line-height: 0.4rem;
+    font-size: 0.21rem;
+    text-align: center;
+    margin-top: 0rem;
+
+}
+
+
+.twentyFour .bottomLi img {
+    width: 0.2rem;
+    height: 0.2rem;
+}
+
+.twentyFour .bottomLi .btck {
+    width: 35%;
+}
+
+.twentyFour .bottomLi .step {
+    float: left;
+    text-align: center;
+}
+
+/*thirtyFive */
+/*.thirtyFive {*/
+/*width: 14.285%;*/
+/*height: 1.6rem;*/
+/*float: left;*/
+/*overflow: hidden;*/
+/*margin: 0;*/
+/*margin-top: 0.05rem;*/
+/*}*/
+
+/*.thirtyFive .centerLi {*/
+/*width: 98%;*/
+/*height: 100%;*/
+/*}*/
+
+/*.thirtyFive .human {*/
+/*height: 1rem;*/
+/*}*/
+
+/*.thirtyFive .human .name {*/
+/*width: 100%;*/
+/*height: 0.18rem;*/
+/*font-size: 0.2rem;*/
+/*line-height: 0.2rem;*/
+/*text-align: center;*/
+/*overflow: hidden;*/
+/*display: block;*/
+/*margin: 0 auto;*/
+/*}*/
+
+/*.thirtyFive .centerLi .topLi {*/
+/*height: 1rem;*/
+/*}*/
+
+/*.thirtyFive .centerLi .cla, .thirtyFive .centerLi .heartJump {*/
+/*height: 1rem;*/
+/*line-height: 1.4rem;*/
+/*font-size: 0.35rem;*/
+/*text-align: center;*/
+/*font-weight: 800;*/
+/*}*/
+
+/*.thirtyFive .centerLi .cla span {*/
+/*width: 100%;*/
+/*overflow: hidden;*/
+/*display: block;*/
+/*margin: 0 auto;*/
+/*}*/
+
+/*.thirtyFive .human img {*/
+/*width: 0.7rem;*/
+/*height: 0.7rem;*/
+/*margin-top: 0.1rem;*/
+/*}*/
+
+/*.thirtyFive .centerLi .heartJump img {*/
+/*width: 0.11rem;*/
+/*height: 0.11rem;*/
+/*top: -0.9rem;*/
+/*right: 4px;*/
+/*float: right;*/
+/*}*/
+
+/*.thirtyFive .centerLi .heartJump span {*/
+/*width: 80%;*/
+/*padding-right: 20%;*/
+/*overflow: hidden;*/
+/*display: block;*/
+/*margin: 0 auto;*/
+/*text-align: right;*/
+/*}*/
+
+/*.thirtyFive .centerLi .heartJump {*/
+/*float: left;*/
+/*text-align: center;*/
+/*}*/
+
+/*.thirtyFive .centerLi .cla s {*/
+/*font-size: 0.12rem;*/
+/*top: -1.5rem;*/
+/*right: 3px;*/
+/*float: right;*/
+/*}*/
+
+/*.thirtyFive .bottomLi {*/
+/*line-height: 0.5rem;*/
+/*font-size: 0.2rem;*/
+/*text-align: center;*/
+/*margin-top: 0.1rem;*/
+/*}*/
+
+/*.thirtyFive .bottomLi img {*/
+/*float: left;*/
+/*padding-top: 0.1rem;*/
+/*padding-left: 4%;*/
+/*}*/
+
+/*.thirtyFive .bottomLi .btck {*/
+/*width: 35%;*/
+/*text-indent: 0.1rem;*/
+/*}*/

+ 93 - 83
tv/src/components/Headside.vue

@@ -1,97 +1,107 @@
 <template>
-  <div class="headerContainer">
-    <div class="lt">
-      {{ nowDay }}
-    </div>
-    <div class="rt">
-      {{ nowTime }}
-      <img src="../static/img/blue.png" height="35" width="35"/>
-      <img src="../static/img/wifi.png" height="35" width="35"/>
-    </div>
+    <div class="headerContainer">
+        <div class="lt">
+            <em> {{nowWeeks}}</em> <span>  {{ nowDay }}</span>
+        </div>
+        <div class="rt">
+            {{ nowTime }}
+            <img src="../static/img/blue.svg" height="24" width="24"/>
+            <img src="../static/img/wifi.svg" height="24" width="24"/>
+        </div>
 
-  </div>
+    </div>
 </template>
 
 <script>
-import global from '../Global'
+    import global from '../Global'
+    import '../libs/rem';
 
-export default {
-  data() {
-    return {
-      nowDay: '',
-      nowTime: '',
-    }
-  },
-  mounted() {
-    this.timer = setInterval(() => {
-      this.nowDayFunc();
-      this.nowTimeFunc();
-    },1000);
-  },
-  beforeDestroy () {
-    clearInterval(this.timer);
-  },
-  methods: {
-    nowDayFunc() {
-      let days = new Date().getDay()
-      let wd = numberToWeekdays(days)
-      this.nowDay =  wd +'   ' + globalcurrent()
-    },
-    nowTimeFunc() {
-      this.nowTime = getHoursAndMinAndSec();
-    },
+    export default {
+        data() {
+            return {
+                nowWeeks: '',
+                nowDay: '',
+                nowTime: '',
+            }
+        },
+        mounted() {
+            this.timer = setInterval(() => {
+                this.nowDayFunc();
+                this.nowTimeFunc();
+            }, 1000);
+        },
+        beforeDestroy() {
+            clearInterval(this.timer);
+        },
+        methods: {
+            nowDayFunc() {
+                let days = new Date().getDay();
+                let wd = numberToWeekdays(days);
+                this.nowWeeks = wd;
+                this.nowDay = globalcurrent();
+            },
+            nowTimeFunc() {
+                this.nowTime = getHoursAndMinAndSec();
+            },
 
-  }
-}
+        }
+    }
 </script>
 
 <style scoped>
-.headerContainer {
-  height: 2%;
-  overflow: hidden;
-  display: block;
-  margin: 0 auto;
-  padding: 0;
-  padding: 2%;
-  background: url("../static/img/logo.png");
-  background-position: top center;
-  background-repeat: no-repeat;
-  background-size: 10%;
-}
+    .headerContainer {
+        height: 4%;
+        overflow: hidden;
+        display: block;
+        margin: 0 auto;
+        margin-top: 1%;
+        padding: 0;
+        padding: 2%;
+        background: url("../static/img/logo.svg");
+        background-position: top center;
+        background-repeat: no-repeat;
+        background-size: 16%;
+    }
 
-.lt {
-  width: 20%;
-  float: left;
-  font-family: Roboto;
-  font-weight: normal;
-  font-size: 24px;
-  text-align: left;
-  color: #fff;
-  line-height: 10%;
-}
+    .lt {
+        width: 40%;
+        float: left;
+        font-family: Roboto;
+        font-weight: normal;
+        font-size: 0.4rem;
+        text-align: left;
+        color: #fff;
+        line-height: 20%;
+    }
 
-.rt {
-  width: 20%;
-  float: right;
-  font-family: Roboto;
-  font-weight: normal;
-  font-size: 48px;
-  text-align: center;
-  color: #fff;
-  line-height: 10%;
-}
+    .rt {
+        width: 40%;
+        float: right;
+        font-family: Roboto;
+        font-weight: normal;
+        font-size: 0.4rem;
+        text-align: right;
+        color: #fff;
+        line-height: 20%;
+        padding-right: 7%;
+    }
 
-.rt img {
-  position: absolute;
-  top: 3%;
-  right: 10px;
-  padding: 0;
-  margin: 0;
-  float: right;
-  margin-right: 10px;
-}
+    .rt img {
+        position: absolute;
+        top: 4%;
+        right: 10px;
+        padding: 0;
+        margin: 0;
+        float: right;
+        margin-right: 10px;
+    }
 
-.rt img:nth-child(2) {
-  right: 3%;
-}
-</style>
+    .rt img:nth-child(2) {
+        right: 4%;
+    }
+    em {
+        float: left;
+        font-style: normal;
+        margin-right: 0.5rem;
+    }
+</style>

+ 137 - 0
tv/src/components/newRecord.vue

@@ -0,0 +1,137 @@
+<template>
+    <el-dialog title="" :visible.sync="toperInfo.dialogVisible" :close-on-click-modal="false" >
+        <div class="eggContainer">
+            <div class="toper">
+                <!--<img v-bind:src="require('../static/img/people/' + toperInfo.toper.head)" alt="">-->
+                <span>{{toperInfo.toper.userNmae}}</span>
+            </div>
+            <div class="info">
+                <div class="lt">
+                    <h5>个人单次卡路里记录</h5>
+                    <div class="detail">
+                        <em>{{toperInfo.toper.calorie}}</em>
+                        <span>千卡</span>
+                    </div>
+                    <img class="icons" src="../static/img/newRecord/record_icon.png"/>
+                </div>
+                <div class="rt">
+                    <h5>个人单次CK值记录</h5>
+                    <div class="detail">
+                        <em>{{toperInfo.toper.ck}}</em>
+                        <span>CK值</span>
+                    </div>
+                    <img class="icons" src="../static/img/newRecord/record_icon.png"/>
+                </div>
+            </div>
+        </div>
+    </el-dialog>
+
+</template>
+
+<script>
+    export default {
+        data() {
+            return {
+                dialogTableVisible: true,
+                dialogFormVisible: false,
+            };
+        },
+        props: ['toperInfo'],
+    }
+</script>
+
+<style scoped>
+    /*成就彩蛋*/
+    /deep/ .el-dialog {
+        width: 22rem;
+        height: 6rem;
+        background: url("../static/img/newRecord/record.png");
+        background-position: top center;
+        background-repeat: no-repeat;
+        background-size: 100% 100%;
+        box-shadow: none;
+        padding-bottom: 1rem;
+    }
+
+    .eggContainer {
+        width: 100%;
+        overflow: hidden;
+        margin: 0 auto;
+        float: left;
+    }
+
+    .toper {
+        width: 2.2rem;
+        overflow: hidden;
+        display: block;
+        margin: 0 auto;
+        color: #fff;
+        font-size: 0.3rem;
+        line-height: 0.9rem;
+    }
+    .toper img {
+        width: 0.7rem;
+        height: 0.7rem;
+        float: left;
+        border-radius: 250px;
+        border: 2px dotted #fff;
+        padding: 0.1rem;
+    }
+    .info {
+        width: 100%;
+        overflow: hidden;
+        display: block;
+        margin: 0 auto;
+    }
+    .info .lt {
+        width: 50%;
+        height: 4rem;
+        float: left;
+    }
+    .info .rt {
+        width: 50%;
+        height: 4rem;
+        float: left;
+    }
+    .info h5 {
+        width: 4rem;
+        height: 0.6rem;
+        overflow: hidden;
+        display: block;
+        margin: 0 auto;
+        background: url("../static/img/newRecord/record_title.png");
+        background-repeat: no-repeat;
+        background-size: 100%;
+        background-position: top center;
+        font-family: "Source Han Sans CN";
+        font-weight: normal;
+        font-size: 0.3rem;
+        color: #333;
+        text-align: center;
+        line-height: 0.6rem;
+    }
+
+    .info .detail {
+        width: 100%;
+        overflow: hidden;
+        display: block;
+        margin: 0 auto;
+    }
+    .detail em {
+        font-size: 1.8rem;
+        color: #fff;
+        font-style: normal;
+    }
+    .detail span {
+        color: #fff;
+        font-size: 0.3rem;
+    }
+    .info img {
+        position: relative;
+        width: 2rem;
+        height: 2rem;
+        float: left;
+        left: 0;
+        bottom: 1rem;
+    }
+</style>

+ 16 - 0
tv/src/libs/rem.js

@@ -0,0 +1,16 @@
+// 设置 rem 函数
+function setRem () {
+
+    // 320 默认大小16px; 320px = 20rem ;每个元素px基础上/16
+    let htmlWidth = document.documentElement.clientWidth || document.body.clientWidth;
+//得到html的Dom元素
+    let htmlDom = document.getElementsByTagName('html')[0];
+//设置根元素字体大小
+    htmlDom.style.fontSize= htmlWidth/20 + 'px';
+}
+// 初始化
+setRem();
+// 改变窗口大小时重新设置 rem
+window.onresize = function () {
+    setRem()
+}

+ 4 - 6
tv/src/main.js

@@ -2,23 +2,21 @@ import Vue from 'vue'
 import './plugins/axios'
 import App from './App.vue'
 import router from './router'
-import store from './store'
+// import store from './store'
 import ElementUI from 'element-ui';
 import 'element-ui/lib/theme-chalk/index.css';
 import axios from 'axios'
 
 
 Vue.config.productionTip = false;
-import VCharts from 'v-charts'
-Vue.use(VCharts);
 Vue.use(ElementUI);
 
 // 演示版本数据
-require('./Mock/index.js');
-
+// require('./Mock/index.js');
+// store,
 new Vue({
   router,
-  store,
+
   render: h => h(App)
 }).$mount('#app');
 

+ 11 - 2
tv/src/router/index.js

@@ -36,6 +36,14 @@ const routes = [
                     title: "排名",
                     clmid: "2",
                 }
+            },{
+                path: '/pk',
+                name: 'pk',
+                component: () => import('@/views/pk.vue'),
+                meta: {
+                    title: "pk",
+                    clmid: "3",
+                }
             },
         ]
     }, {
@@ -52,13 +60,14 @@ VueRouter.prototype.push = function push(location) {
 
 const router = new VueRouter({
     mode: 'history',
+    // mode: 'hash',
     base: process.env.BASE_URL,
     routes
 });
 
 // 路由守卫
 router.beforeEach((to,from,next)=>{
-    NProgress.start()
+    NProgress.start();
     const isLogin = localStorage.token? true : false;
     if(to.path == '/login' || to.path == '/register'){//'login'和'register'相当于是路由白名单
         next();
@@ -71,6 +80,6 @@ router.beforeEach((to,from,next)=>{
 
 router.afterEach(() => {
     NProgress.done()
-})
+});
 
 export default router

+ 9 - 0
tv/src/static/img/blue.svg

@@ -0,0 +1,9 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="35" height="35" viewBox="0 0 35 35">
+  <g id="信息" transform="translate(10 682.574)">
+    <rect id="矩形_55" data-name="矩形 55" width="35" height="35" transform="translate(-10 -682.574)" opacity="0.35"/>
+    <g id="组_72" data-name="组 72" transform="translate(-5 0)">
+      <path id="路径_31" data-name="路径 31" d="M306.653-542.309a2.734,2.734,0,0,0-2.731,2.731,2.717,2.717,0,0,0,1.772,2.557l-.666,12.347h3.263l-.666-12.347a2.723,2.723,0,0,0,1.772-2.557A2.754,2.754,0,0,0,306.653-542.309Z" transform="translate(-294.039 -129.899)" fill="#fff"/>
+      <path id="路径_32" data-name="路径 32" d="M6.061-669.091a6.462,6.462,0,0,1,1.052-3.556.964.964,0,0,0-.28-1.332.964.964,0,0,0-1.332.28,8.438,8.438,0,0,0-1.359,4.609,8.434,8.434,0,0,0,1.452,4.742.958.958,0,0,0,.8.426.96.96,0,0,0,.533-.16.948.948,0,0,0,.253-1.332A6.628,6.628,0,0,1,6.061-669.091Zm12.241-5a.949.949,0,0,0-.253,1.332,6.489,6.489,0,0,1,1.119,3.663,6.5,6.5,0,0,1-1.092,3.623.964.964,0,0,0,.266,1.332.961.961,0,0,0,.533.16.958.958,0,0,0,.8-.426,8.362,8.362,0,0,0,1.412-4.689,8.433,8.433,0,0,0-1.452-4.742A.949.949,0,0,0,18.3-674.086Zm4.769-2.065a.949.949,0,0,0-1.332-.253.949.949,0,0,0-.253,1.332,10.617,10.617,0,0,1,1.825,5.981,10.605,10.605,0,0,1-1.785,5.914.963.963,0,0,0,.266,1.332.96.96,0,0,0,.533.16.959.959,0,0,0,.8-.426,12.494,12.494,0,0,0,2.1-6.98A12.561,12.561,0,0,0,23.07-676.151Zm-21.152,7.06A10.581,10.581,0,0,1,3.636-674.9a.964.964,0,0,0-.28-1.332.967.967,0,0,0-1.332.28A12.491,12.491,0,0,0,0-669.091a12.562,12.562,0,0,0,2.158,7.06.959.959,0,0,0,.8.426.96.96,0,0,0,.533-.16.948.948,0,0,0,.253-1.332A10.8,10.8,0,0,1,1.918-669.091Z" transform="translate(0 0)" fill="#fff"/>
+    </g>
+  </g>
+</svg>

BIN
tv/src/static/img/ck.png


+ 9 - 0
tv/src/static/img/ck.svg

@@ -0,0 +1,9 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="305" height="305" viewBox="0 0 305 305">
+  <g id="组_83" data-name="组 83" transform="translate(-4212 -943)">
+    <g id="椭圆_17" data-name="椭圆 17" transform="translate(4212 943)" fill="none" stroke="#fff" stroke-width="22">
+      <circle cx="152.5" cy="152.5" r="152.5" stroke="none"/>
+      <circle cx="152.5" cy="152.5" r="141.5" fill="none"/>
+    </g>
+    <text id="CK" transform="translate(4360 1151)" fill="#fff" font-size="149" font-family="Arial-BoldMT, Arial" font-weight="700"><tspan x="-107.603" y="0">CK</tspan></text>
+  </g>
+</svg>

BIN
tv/src/static/img/fire.png


BIN
tv/src/static/img/foot.png


+ 3 - 0
tv/src/static/img/heart.svg

@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="302.916" height="272.861" viewBox="0 0 302.916 272.861">
+  <path id="路径_64" data-name="路径 64" d="M295.7,155.954A86.33,86.33,0,0,0,173.631,34.4a82.615,82.615,0,0,0-8.029,9.324,82.616,82.616,0,0,0-8.029-9.41A86.33,86.33,0,0,0,35.5,155.954L165,285.449Z" transform="translate(-13.979 -12.589)" fill="#fff"/>
+</svg>

BIN
tv/src/static/img/kaluli.png


ファイルの差分が大きいため隠しています
+ 34 - 0
tv/src/static/img/logo.svg


BIN
tv/src/static/img/mainBg.png


BIN
tv/src/static/img/newRecord/record.png


BIN
tv/src/static/img/newRecord/record_icon.png


BIN
tv/src/static/img/newRecord/record_title.png


BIN
tv/src/static/img/people.zip


BIN
tv/src/static/img/people/dcp.png


BIN
tv/src/static/img/people/gc.png


BIN
tv/src/static/img/people/jy.png


BIN
tv/src/static/img/people/jyq.png


BIN
tv/src/static/img/people/lhs.png


BIN
tv/src/static/img/people/lxl.png


BIN
tv/src/static/img/people/lyh.png


BIN
tv/src/static/img/people/slc.png


BIN
tv/src/static/img/people/sxf.png


BIN
tv/src/static/img/people/sxf2.png


BIN
tv/src/static/img/people/wfl.png


BIN
tv/src/static/img/people/wzx.png


BIN
tv/src/static/img/people/ydy.png


BIN
tv/src/static/img/people/zjh.png


BIN
tv/src/static/img/people/zr.png


BIN
tv/src/static/img/people/zw.png


BIN
tv/src/static/img/people/zy.png


BIN
tv/src/static/img/pingtai.png


BIN
tv/src/static/img/pk/bcube.png


BIN
tv/src/static/img/pk/bfight.png


BIN
tv/src/static/img/pk/blue.png


BIN
tv/src/static/img/pk/left_power.png


BIN
tv/src/static/img/pk/light.png


BIN
tv/src/static/img/pk/rcube.png


BIN
tv/src/static/img/pk/red.png


BIN
tv/src/static/img/pk/rfight.png


BIN
tv/src/static/img/pk/right_power.png


BIN
tv/src/static/img/pk/vs.png


BIN
tv/src/static/img/pkBg.png


BIN
tv/src/static/img/rank/boy.png


BIN
tv/src/static/img/rank/girl.png


BIN
tv/src/static/img/rankBg.png


+ 3 - 0
tv/src/static/img/s1.svg

@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="240.328" height="297.042" viewBox="0 0 240.328 297.042">
+  <path id="路径_63" data-name="路径 63" d="M3648.438,820.634s11.715,34.329,2.852,66.417-41.154,59.9-41.154,59.9-2.546-1.834-6.519-7.742-9.372-15.891-9.372-15.891-38.709,60.3-20.781,122.239,66.009,72.121,66.009,72.121-7.844-27.606,0-55.415,31.375-55.823,31.375-55.823,3.423,21.729,10.594,37.079a81,81,0,0,0,17.521,24.448s11.959,8.525,17.114,19.558,4.074,24.448,4.074,24.448,66.824,1.222,85.568-81.9S3758.046,911.5,3758.046,911.5s-1.731,10.8-6.927,19.151-13.854,14.261-13.854,14.261,7.334-43.6-19.558-78.641S3648.438,820.634,3648.438,820.634Z" transform="translate(-3568.725 -820.634)" fill="#fff"/>
+</svg>

+ 14 - 0
tv/src/static/img/s2.svg

@@ -0,0 +1,14 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="306.328" height="363.042" viewBox="0 0 306.328 363.042">
+  <defs>
+    <filter id="路径_62" x="0" y="0" width="306.328" height="363.042" filterUnits="userSpaceOnUse">
+      <feOffset input="SourceAlpha"/>
+      <feGaussianBlur stdDeviation="11" result="blur"/>
+      <feFlood flood-color="#fff"/>
+      <feComposite operator="in" in2="blur"/>
+      <feComposite in="SourceGraphic"/>
+    </filter>
+  </defs>
+  <g transform="matrix(1, 0, 0, 1, 0, 0)" filter="url(#路径_62)">
+    <path id="路径_62-2" data-name="路径 62" d="M3648.438,820.634s11.715,34.329,2.852,66.417-41.154,59.9-41.154,59.9-2.546-1.834-6.519-7.742-9.372-15.891-9.372-15.891-38.709,60.3-20.781,122.239,66.009,72.121,66.009,72.121-7.844-27.606,0-55.415,31.375-55.823,31.375-55.823,3.423,21.729,10.594,37.079a81,81,0,0,0,17.521,24.448s11.959,8.525,17.114,19.558,4.074,24.448,4.074,24.448,66.824,1.222,85.568-81.9S3758.046,911.5,3758.046,911.5s-1.731,10.8-6.927,19.151-13.854,14.261-13.854,14.261,7.334-43.6-19.558-78.641S3648.438,820.634,3648.438,820.634Z" transform="translate(-3535.72 -787.63)" fill="red"/>
+  </g>
+</svg>

BIN
tv/src/static/img/superfire.png


+ 6 - 0
tv/src/static/img/t1.svg

@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="139" height="139.002" viewBox="0 0 139 139.002">
+  <g id="_01" data-name="01" transform="translate(-282.002 -157.997)">
+    <path id="路径_38" data-name="路径 38" d="M-15669,1794a68.561,68.561,0,0,1-26.857-5.422,68.776,68.776,0,0,1-21.933-14.787,68.781,68.781,0,0,1-14.788-21.932A68.569,68.569,0,0,1-15738,1725a68.569,68.569,0,0,1,5.422-26.858,68.781,68.781,0,0,1,14.788-21.932,68.776,68.776,0,0,1,21.933-14.787A68.561,68.561,0,0,1-15669,1656a68.564,68.564,0,0,1,26.857,5.422,68.776,68.776,0,0,1,21.933,14.787,68.762,68.762,0,0,1,14.787,21.932A68.553,68.553,0,0,1-15600,1725a68.552,68.552,0,0,1-5.423,26.858,68.762,68.762,0,0,1-14.787,21.932,68.776,68.776,0,0,1-21.933,14.787A68.564,68.564,0,0,1-15669,1794Zm0-118.284a49.341,49.341,0,0,0-49.285,49.285,49.341,49.341,0,0,0,49.285,49.285,49.341,49.341,0,0,0,49.284-49.285A49.341,49.341,0,0,0-15669,1675.714Z" transform="translate(16020.004 -1496.999)" fill="#028fe1" opacity="0.36"/>
+    <path id="路径_36" data-name="路径 36" d="M-15601.073,1779.552h0l-12.873-15.342a49.932,49.932,0,0,0,17.783-38.21,50.054,50.054,0,0,0-50-50v-20a69.5,69.5,0,0,1,27.245,5.5,69.746,69.746,0,0,1,22.253,15,69.881,69.881,0,0,1,15,22.249,69.6,69.6,0,0,1,5.5,27.249,69.558,69.558,0,0,1-5.5,27.245,69.855,69.855,0,0,1-15,22.253c-1.417,1.416-2.9,2.78-4.411,4.055Z" transform="translate(15997.16 -1498.001)" fill="#028fe1"/>
+  </g>
+</svg>

+ 10 - 0
tv/src/static/img/t2.svg

@@ -0,0 +1,10 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="142.371" height="142.932" viewBox="0 0 142.371 142.932">
+  <g id="指标" transform="translate(2.548 -871.209)">
+    <g id="yuan" transform="translate(-166.044 27.55)">
+      <g id="_02" data-name="02" transform="translate(-116.926 687.244)">
+        <path id="路径_38" data-name="路径 38" d="M-15669,1794a68.561,68.561,0,0,1-26.857-5.422,68.776,68.776,0,0,1-21.933-14.787,68.781,68.781,0,0,1-14.788-21.932A68.569,68.569,0,0,1-15738,1725a68.569,68.569,0,0,1,5.422-26.858,68.781,68.781,0,0,1,14.788-21.932,68.776,68.776,0,0,1,21.933-14.787A68.561,68.561,0,0,1-15669,1656a68.564,68.564,0,0,1,26.857,5.422,68.776,68.776,0,0,1,21.933,14.787,68.762,68.762,0,0,1,14.787,21.932A68.553,68.553,0,0,1-15600,1725a68.552,68.552,0,0,1-5.423,26.858,68.762,68.762,0,0,1-14.787,21.932,68.776,68.776,0,0,1-21.933,14.787A68.564,68.564,0,0,1-15669,1794Zm0-118.284a49.341,49.341,0,0,0-49.285,49.285,49.341,49.341,0,0,0,49.285,49.285,49.341,49.341,0,0,0,49.284-49.285A49.341,49.341,0,0,0-15669,1675.714Z" transform="translate(16020.004 -1496.999)" fill="#6d26fa" opacity="0.36"/>
+        <path id="路径_51" data-name="路径 51" d="M-15981,1794.172l4.846-19.424a49.97,49.97,0,0,0,11.138,1.251,50.057,50.057,0,0,0,50-50,49.66,49.66,0,0,0-14.663-35.334,49.645,49.645,0,0,0-35.338-14.663v-20a69.54,69.54,0,0,1,27.248,5.5,69.782,69.782,0,0,1,22.252,15,69.82,69.82,0,0,1,15,22.251,69.6,69.6,0,0,1,5.5,27.245,69.619,69.619,0,0,1-5.5,27.249,69.777,69.777,0,0,1-15,22.251,69.8,69.8,0,0,1-22.252,15,69.54,69.54,0,0,1-27.248,5.5A70.181,70.181,0,0,1-15981,1794.172Z" transform="translate(16316.017 -1498)" fill="#6d26fa"/>
+      </g>
+    </g>
+  </g>
+</svg>

+ 10 - 0
tv/src/static/img/t3.svg

@@ -0,0 +1,10 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="142.372" height="142.931" viewBox="0 0 142.372 142.931">
+  <g id="指标" transform="translate(3.47 -871.21)">
+    <g id="yuan" transform="translate(-166.044 27.55)">
+      <g id="_03" data-name="03" transform="translate(-117.825 687.244)">
+        <path id="路径_38" data-name="路径 38" d="M-15669,1794a68.561,68.561,0,0,1-26.857-5.422,68.776,68.776,0,0,1-21.933-14.787,68.781,68.781,0,0,1-14.788-21.932A68.569,68.569,0,0,1-15738,1725a68.569,68.569,0,0,1,5.422-26.858,68.781,68.781,0,0,1,14.788-21.932,68.776,68.776,0,0,1,21.933-14.787A68.561,68.561,0,0,1-15669,1656a68.564,68.564,0,0,1,26.857,5.422,68.776,68.776,0,0,1,21.933,14.787,68.762,68.762,0,0,1,14.787,21.932A68.553,68.553,0,0,1-15600,1725a68.552,68.552,0,0,1-5.423,26.858,68.762,68.762,0,0,1-14.787,21.932,68.776,68.776,0,0,1-21.933,14.787A68.564,68.564,0,0,1-15669,1794Zm0-118.284a49.341,49.341,0,0,0-49.285,49.285,49.341,49.341,0,0,0,49.285,49.285,49.341,49.341,0,0,0,49.284-49.285A49.341,49.341,0,0,0-15669,1675.714Z" transform="translate(16020.004 -1496.999)" fill="#0ab105" opacity="0.36"/>
+        <path id="路径_44" data-name="路径 44" d="M-16067.585,1790.5a69.732,69.732,0,0,1-22.254-15,69.824,69.824,0,0,1-15-22.25c-.056-.125-.108-.255-.161-.38l18.56-7.5a50.079,50.079,0,0,0,46.1,30.633,50.056,50.056,0,0,0,50-50,50.06,50.06,0,0,0-50-50v-20a69.566,69.566,0,0,1,27.246,5.5,69.788,69.788,0,0,1,22.254,15,69.805,69.805,0,0,1,15,22.25,69.57,69.57,0,0,1,5.5,27.25,69.55,69.55,0,0,1-5.5,27.246,69.805,69.805,0,0,1-15,22.25,69.732,69.732,0,0,1-22.254,15,69.566,69.566,0,0,1-27.246,5.5A69.559,69.559,0,0,1-16067.585,1790.5Z" transform="translate(16391.34 -1497.998)" fill="#0ab105"/>
+      </g>
+    </g>
+  </g>
+</svg>

+ 10 - 0
tv/src/static/img/t4.svg

@@ -0,0 +1,10 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="143.398" height="142.929" viewBox="0 0 143.398 142.929">
+  <g id="指标" transform="translate(4.479 -871.214)">
+    <g id="yuan" transform="translate(-166.044 27.55)">
+      <g id="_04" data-name="04" transform="translate(-118.808 687.246)">
+        <path id="路径_38" data-name="路径 38" d="M-15669,1794a68.561,68.561,0,0,1-26.857-5.422,68.776,68.776,0,0,1-21.933-14.787,68.781,68.781,0,0,1-14.788-21.932A68.569,68.569,0,0,1-15738,1725a68.569,68.569,0,0,1,5.422-26.858,68.781,68.781,0,0,1,14.788-21.932,68.776,68.776,0,0,1,21.933-14.787A68.561,68.561,0,0,1-15669,1656a68.564,68.564,0,0,1,26.857,5.422,68.776,68.776,0,0,1,21.933,14.787,68.762,68.762,0,0,1,14.787,21.932A68.553,68.553,0,0,1-15600,1725a68.552,68.552,0,0,1-5.423,26.858,68.762,68.762,0,0,1-14.787,21.932,68.776,68.776,0,0,1-21.933,14.787A68.564,68.564,0,0,1-15669,1794Zm0-118.284a49.341,49.341,0,0,0-49.285,49.285,49.341,49.341,0,0,0,49.285,49.285,49.341,49.341,0,0,0,49.284-49.285A49.341,49.341,0,0,0-15669,1675.714Z" transform="translate(16020.004 -1496.999)" fill="rgba(185,203,1,0.16)"/>
+        <path id="路径_54" data-name="路径 54" d="M-16231,1796h0a69.562,69.562,0,0,1-27.242-5.5,69.742,69.742,0,0,1-22.256-15.006,69.844,69.844,0,0,1-15-22.247A69.589,69.589,0,0,1-16301,1726a70.121,70.121,0,0,1,1.968-16.577l19.421,4.844A49.958,49.958,0,0,0-16281,1726a50.057,50.057,0,0,0,50,50,50.053,50.053,0,0,0,50-50,50.061,50.061,0,0,0-50-50v-20a69.564,69.564,0,0,1,27.246,5.5,69.846,69.846,0,0,1,22.255,15,69.724,69.724,0,0,1,15,22.251,69.584,69.584,0,0,1,5.5,27.25,69.593,69.593,0,0,1-5.5,27.246,69.753,69.753,0,0,1-15,22.247,69.792,69.792,0,0,1-22.255,15.006A69.562,69.562,0,0,1-16231,1796h0Z" transform="translate(16583.004 -1497.998)" fill="#b9cb01"/>
+      </g>
+    </g>
+  </g>
+</svg>

+ 10 - 0
tv/src/static/img/t5.svg

@@ -0,0 +1,10 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="143.4" height="142.933" viewBox="0 0 143.4 142.933">
+  <g id="指标" transform="translate(4.5 -871.212)">
+    <g id="yuan" transform="translate(-166.044 27.55)">
+      <g id="_05" data-name="05" transform="translate(-117.823 687.244)">
+        <path id="路径_38" data-name="路径 38" d="M-15669,1794a68.561,68.561,0,0,1-26.857-5.422,68.776,68.776,0,0,1-21.933-14.787,68.781,68.781,0,0,1-14.788-21.932A68.569,68.569,0,0,1-15738,1725a68.569,68.569,0,0,1,5.422-26.858,68.781,68.781,0,0,1,14.788-21.932,68.776,68.776,0,0,1,21.933-14.787A68.561,68.561,0,0,1-15669,1656a68.564,68.564,0,0,1,26.857,5.422,68.776,68.776,0,0,1,21.933,14.787,68.762,68.762,0,0,1,14.787,21.932A68.553,68.553,0,0,1-15600,1725a68.552,68.552,0,0,1-5.423,26.858,68.762,68.762,0,0,1-14.787,21.932,68.776,68.776,0,0,1-21.933,14.787A68.564,68.564,0,0,1-15669,1794Zm0-118.284a49.341,49.341,0,0,0-49.285,49.285,49.341,49.341,0,0,0,49.285,49.285,49.341,49.341,0,0,0,49.284-49.285A49.341,49.341,0,0,0-15669,1675.714Z" transform="translate(16020.004 -1496.999)" fill="#ea8813" opacity="0.36"/>
+        <path id="路径_52" data-name="路径 52" d="M-16462.246,1790.5a69.769,69.769,0,0,1-22.256-15,69.9,69.9,0,0,1-15-22.252A69.545,69.545,0,0,1-16505,1726a69.559,69.559,0,0,1,5.5-27.247,69.9,69.9,0,0,1,15-22.252q2.133-2.131,4.412-4.055l12.873,15.343A49.92,49.92,0,0,0-16485,1726a50.056,50.056,0,0,0,50,50v0a50.057,50.057,0,0,0,50-50,50.06,50.06,0,0,0-50-50v-20a69.566,69.566,0,0,1,27.248,5.5,69.8,69.8,0,0,1,22.256,15,69.84,69.84,0,0,1,15,22.248A69.627,69.627,0,0,1-16365,1726a69.607,69.607,0,0,1-5.5,27.247,69.84,69.84,0,0,1-15,22.248,69.744,69.744,0,0,1-22.256,15A69.566,69.566,0,0,1-16435,1796v0A69.561,69.561,0,0,1-16462.246,1790.5Z" transform="translate(16786 -1497.998)" fill="#ea8813"/>
+      </g>
+    </g>
+  </g>
+</svg>

この差分においてかなりの量のファイルが変更されているため、一部のファイルを表示していません