Procházet zdrojové kódy

12.图片上传服务器地址更换 √
14.app课程表查看,在router加刷新 √
15.静态心率设置放开 √
17.pk的圆环加粗 √
11.跨店会员使用穿梭框管理 √
18.添加上课成员的时候带入birthday √
16.先选教练后开始上课 √

Changpeng Duan před 5 roky
rodič
revize
6e8765a78d

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

@@ -1,518 +1,523 @@
 <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>
+    <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>
+    </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
+    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();
+        },
+        watch: {
+            '$route'(to) {
+                if (to.name == 'lesson') {
+                    this.getList();
+                }
+            },
+            'active'() {
+                this.getList();
+            }
+        },
+        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();
+                }
+            });
+        },
+        components: {
+            bottomTab
         }
-        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;
-  /*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>
+    .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>

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 44 - 17
pc/src/views/AcrossVip.vue


+ 15 - 15
pc/src/views/Member.vue

@@ -275,9 +275,9 @@
                         <el-form-item label="体重" :required="true">
                             <el-input v-model="form.weight" placeholder="kg" type="number"></el-input>
                         </el-form-item>
-                        <!--<el-form-item label="静态心率" :required="true">-->
-                        <!--<el-input v-model="form.staticHr " placeholder="请输入" type="number"></el-input>-->
-                        <!--</el-form-item>-->
+                        <el-form-item label="静态心率" :required="true">
+                        <el-input v-model="form.staticHr " placeholder="请输入" type="number"></el-input>
+                        </el-form-item>
                         <el-form-item label="性别" :required="true">
                             <el-select v-model="form.sex " placeholder="">
                                 <el-option
@@ -420,7 +420,7 @@
                 imageUrl: '',
                 token: {}, // 七牛云的上传地址,根据自己所在地区选择,我这里是华南区
                 domain: 'https://up-z1.qiniup.com', // 这是七牛云空间的外链默认域名
-                qiniuaddr: 'qjzpcd34v.hb-bkt.clouddn.com',//xhead.beswell.com
+                qiniuaddr: 'xhead.beswell.com',//xhead.beswell.com 旧的 qjzpcd34v.hb-bkt.clouddn.com
                 pullRight: true,//其他dialog
                 addDisabled: true,//禁止添加新用户
                 dialogVisible: false,//其他dialog
@@ -692,7 +692,7 @@
                 this.imageUrl = row.UserInfo.Head;
                 this.form.height = row.UserInfo.Height;
                 this.form.weight = parseInt(row.UserInfo.Weight) / 10;
-                // this.form.staticHr = row.UserInfo.StaticHr;
+                this.form.staticHr = row.UserInfo.StaticHr;
                 this.form.sex = row.UserInfo.Sex;
                 this.form.birthday = row.UserInfo.Birthday;
                 this.form.ubId = row.UserInfo.UbId;
@@ -893,10 +893,10 @@
                     this.$message.error('错了哦,体重不能为空');
                     return false
                 }
-                // if (!that.form.staticHr) {
-                //     this.$message.error('错了哦,静态心率不能为空');
-                //     return false
-                // }
+                if (!that.form.staticHr) {
+                    this.$message.error('错了哦,静态心率不能为空');
+                    return false
+                }
                 if (!that.form.birthday) {
                     this.$message.error('错了哦,出生年份不能为空');
                     return false
@@ -920,7 +920,7 @@
                     memo: that.form.memo,
                     height: that.form.height,
                     weight: that.form.weight,
-                    // staticHr: that.form.staticHr,
+                    staticHr: that.form.staticHr,
                     sex: that.form.sex,
                     head: that.form.head,
                     birthday: nonTfmtDatetoLength(that.form.birthday, 10),
@@ -977,10 +977,10 @@
                     this.$message.error('错了哦,体重不能为空');
                     return false
                 }
-                // if (!that.form.staticHr) {
-                //     this.$message.error('错了哦,静态心率不能为空');
-                //     return false
-                // }
+                if (!that.form.staticHr) {
+                    this.$message.error('错了哦,静态心率不能为空');
+                    return false
+                }
                 if (!that.form.birthday) {
                     this.$message.error('错了哦,出生年份不能为空');
                     return false
@@ -994,7 +994,7 @@
                     head: that.form.head,
                     height: that.form.height,
                     weight: that.form.weight,
-                    // staticHr: that.form.staticHr,
+                    staticHr: that.form.staticHr,
                     sex: that.form.sex,
                     birthday: nonTfmtDatetoLength(that.form.birthday, 10),
                     ubId: that.form.ubId

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

@@ -226,8 +226,15 @@
             <div class="dialogContent">
                 <span class="blueTitle">{{ClassName}} {{BeginTime}}</span>
                 <div>
-                    <el-transfer filterable v-model="dialogCoachValue" :data="form.dialogCoachdata"
-                                 :titles="['教练列表', '已添加教练']"></el-transfer>
+                    <!--<el-transfer filterable v-model="dialogCoachValue" :data="form.dialogCoachdata"-->
+                                 <!--:titles="['教练列表', '已添加教练']"></el-transfer>-->
+                   <p>
+                       您是否确认下课?
+                       <br>
+                       <br>
+                       (确定后将不可再编辑上课学员的信息)
+                   </p>
+                    <br>
                 </div>
             </div>
             <div class="dialogFooter">
@@ -566,6 +573,7 @@
                         user_id: row.UserId,
                         weight: row.Weight,
                         user_md5: row.UserMd5,
+                        birthday: row.Birthday,
                     }
                 }
                 // 确认上课
@@ -925,6 +933,7 @@
                     user_id: row.UserId,
                     weight: row.Weight,
                     user_md5: row.UserMd5,
+                    birthday: row.Birthday,
                 };
                 duRs = '{"Rs":' + JSON.stringify(duRs).toString() + '}';
                 let that = this;

+ 52 - 4
pc/src/views/courses.vue

@@ -17,7 +17,6 @@
                                 start-placeholder="开始日期"
                                 end-placeholder="结束日期">
                         </el-date-picker>
-
                         <el-col :span="4">
                             <el-button size="" type="primary" @click="query" :disabled="serachBtnStatus" plain>查询
                             </el-button>
@@ -155,7 +154,7 @@
                     @current-change="pageChange"
             ></el-pagination>
         </div>
-        <el-dialog :title="dialogTitle" :visible.sync="dialogMemberVisible" width="650px">
+        <el-dialog :title="dialogTitle" :visible.sync="dialogMemberVisible" width="960px">
             <div class="dialogContent">
                 <h5 class="classNames">{{className}}</h5>
                 <div class="">
@@ -190,6 +189,11 @@
                                 </el-option>
                             </el-select>
                         </el-form-item>
+                        <!--选教练,非必选-->
+                        <el-form-item label="上课教练">
+                            <el-transfer filterable v-model="dialogCoachValue" :data="form.dialogCoachdata"
+                                         :titles="['教练列表', '已添加教练']"></el-transfer>
+                        </el-form-item>
                     </el-form>
                 </div>
             </div>
@@ -214,6 +218,7 @@
         QueryShopVenue,
         ClassStartPrepare,
         DispPlanInfoEdit,
+        ShopManagerListQuery,
     } from "../api/getApiRes";
 
     let qs = require('qs');
@@ -229,6 +234,7 @@
                 dialogExpTime: false,//有效期调整
                 dialogLessonTable: false,//会员课程
                 dialogTitle: '上课准备',
+                dialogCoachValue: [],
                 className: '',
                 current: getNowDate(),
                 dialogValue: [],
@@ -295,6 +301,7 @@
                     svList: [],//区域列表
                     dialogdata: [],//穿梭待选
                     dialogValue: [],//穿梭已选
+                    dialogCoachdata: [],//穿梭已选
                     ClassTypeOptions: [
                         {value: 1, label: '团课'},
                         {value: 2, label: '竞技PK'},
@@ -341,7 +348,7 @@
                 }
                 // 不是竞技pk的时候为0
                 let uppkNum = that.form.classType == 2 ? that.form.pkNum : 0;
-
+                let tid = that.dialogCoachValue.toString();
                 let param = {
                     token: localStorage.token,
                     stdId: that.form.StdId,
@@ -349,6 +356,7 @@
                     svName: that.form.svName,
                     classType: that.form.classType,
                     pkNum: uppkNum,
+                    tid: tid,//教练id
                 };
                 let postdata = qs.stringify(param);
                 ClassStartPrepare(postdata).then(res => {
@@ -443,7 +451,7 @@
                     key: localStorage.ServiceKey,
                     shopId: localStorage.ServiceId,
                 };
-                if(!localStorage.ServiceKey){
+                if (!localStorage.ServiceKey) {
                     that.$message.error('还未与心率系统对接,请联系管理员');
                     return false
                 }
@@ -498,8 +506,31 @@
 
                 this.className = row.ClassName + ' ' + row.BeginStr + ' - ' + row.EndStr;
                 this.form.StdId = row.StdId;
+                this.getCoachOption();
                 this.getQueryShopVenue();
             },
+            // 获取教练选项
+            getCoachOption() {
+                let that = this;
+                let param = {
+                    token: localStorage.token,
+                    name: this.panel.name,//
+                    phone: this.panel.phone,//
+                    shopId: localStorage.ShopId,//
+                    adminType: 4,//
+                    start: 1,//
+                    tableMax: 299,//
+                };
+                let postdata = qs.stringify(param);
+                ShopManagerListQuery(postdata).then(res => {
+                    let json = res;
+                    if (json.Code == 0) {
+                        that.form.dialogCoachdata = turnResToOptionByUsers(json.Rs);
+                    } else {
+                        that.$message.error(json.Memo + '错误码:' + json.Code);
+                    }
+                })
+            },
             // 检测当前课是否处于可改变状态
             // 固定下当前已预约人数列表
             checkClassOverPrepare(row) {
@@ -794,4 +825,21 @@
     .likeTab button.pull-right {
         float: right;
     }
+    .el-dialog__body .el-date-editor.el-input__inner {
+        width: 156px;
+    }
+    .el-transfer-panel__item.el-checkbox .el-checkbox__label{
+        width: 156px;
+    }
+    /deep/ .el-dialog__body .el-transfer-panel__item .el-checkbox__input {
+        left: 10px;
+    }
+    /deep/  .el-dialog__body .el-form-item__content .el-select {
+        float: left;
+        margin-left: 50px;
+    }
+    /deep/  .el-dialog__body .el-transfer {
+        float: left;
+        margin-left: 50px;
+    }
 </style>

+ 18 - 8
tv/README.md

@@ -16,6 +16,10 @@
                                                                                          
 ##GoAllOut  for tv
 
+小飞龙线上链接
+
+http://tv.iyoogo.com:85/
+
 部署步骤
 
 前端篇
@@ -55,16 +59,22 @@ http://192.168.0.162:9000/Hello
 6.运动强度最大显示是100  √  
 7.颜色色块太亮了 ---------------绿色 #059F00  黄色#A6B700 √  
 8.等待页面右侧要该成果8个人,去掉边框 √  
+9.排名页面根据人数多少显示时间   √  
+12.图片上传服务器地址更换  √  
+14.app课程表查看,在router加刷新  √  
+15.静态心率设置放开 √   
+17.pk的圆环加粗 √  
+11.跨店会员使用穿梭框管理  √  
+18.添加上课成员的时候带入birthday √ 
+16.先选教练后开始上课   √ 
+
 
+5.生日的时候学生有个生日小帽子     IsBirthday 1 过生日 0 不过生日
+10.新学员上课时有个倒数15秒的欢迎页面  -欢迎入伙  
 
-9.排名页面根据人数多少显示时间  
-10.新学员上课时有个倒数15秒的欢迎页面  
-11.跨店会员使用穿梭框管理  
-12.图片上传服务器地址更换  
-14.app课程表查看,在router加刷新
-15.静态心率设置放开
-16.先选教练后开始上课
-5.生日的时候学生有个生日小帽子  
+
+
+ 
 
 
 // 上课中学生信息

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 0
tv/src/assets/img/comm/hat.svg


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

@@ -98,7 +98,7 @@
             return {
                 eqSn: '30:9C:23:0C:8B:1E',
                 pageStyle: RandomBg(),
-                trueDate: false,//真实数据 true false
+                trueDate: true,//真实数据 true false
                 totalTime: 4,
                 times: 1,
                 thisClassName: '',

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

@@ -238,7 +238,7 @@
                 let Dp = json.Dp;
                 that.ReadLessonInfo(Dp);
                 // 载入学生信息
-                let Rs = fakeNews(18, 2);
+                let Rs = fakeNews(12, 2);
                 that.UniteBreak(Rs);
 
                 // 人口总数
@@ -770,8 +770,8 @@
     }
 
     .circle {
-        width: 1.65rem;
-        height: 1.65rem;
+        width: 1.7rem;
+        height: 1.7rem;
         overflow: hidden;
         display: block;
         margin: 0 auto;
@@ -786,7 +786,7 @@
         display: block;
         margin: 0 auto;
         border-radius: 250px;
-        border: 5px solid #B9CB01;
+        border: 0.1rem solid #B9CB01;
     }
 
 

+ 8 - 8
tv/src/views/threepk.vue

@@ -304,7 +304,7 @@
                 let Dp = json.Dp;
                 that.ReadLessonInfo(Dp);
                 // 载入学生信息
-                let Rs = fakeNews(25, 3);
+                let Rs = fakeNews(21, 3);
                 that.UniteBreak(Rs);
 
                 // 人口总数
@@ -1049,8 +1049,8 @@
     }
 
     .circle {
-        width: 1.65rem;
-        height: 1.65rem;
+        width: 1.73rem;
+        height: 1.73rem;
         overflow: hidden;
         display: block;
         margin: 0 auto;
@@ -1059,13 +1059,13 @@
     }
 
     .user .umd img {
-        width: 1.5rem;
-        height: 1.5rem;
+        width: 1.45rem;
+        height: 1.45rem;
         overflow: hidden;
         display: block;
         margin: 0 auto;
         border-radius: 250px;
-        border: 5px solid #B9CB01;
+        border: 0.1rem solid #B9CB01;
     }
 
 
@@ -1522,8 +1522,8 @@
     }
 
     .eight .user .umd img {
-        width: 0.6rem;
-        height: 0.6rem;
+        width: 0.5rem;
+        height: 0.5rem;
     }
 
     .eight .urt img {

+ 2 - 1
tv/vue.config.js

@@ -42,6 +42,7 @@ module.exports = {
         }
     },
     // 输出文件目录
-    outputDir: 'D:\\wwwroot\\flyong\\hbuild\\GoAllOutTv\\build',
+    // outputDir: 'D:\\wwwroot\\flyong\\hbuild\\GoAllOutTv\\build',
+    outputDir: 'D:\\wwwroot\\flyLongStaticTv\\build',
     publicPath:'./',
 };

Některé soubory nejsou zobrazeny, neboť je v těchto rozdílových datech změněno mnoho souborů