mo 5 роки тому
батько
коміт
8dde8e6018

+ 5 - 1
src/App.vue

@@ -1,5 +1,6 @@
 <template>
-  <div id="app">
+  <div id="app"
+       v-cloak>
     <router-view />
   </div>
 </template>
@@ -15,6 +16,9 @@ export default {
   padding: 0;
   touch-action: none !important;
 }
+[v-cloak] {
+  display: none !important;
+}
 body {
   background-color: #eef4f9;
 }

+ 4 - 4
src/main.js

@@ -25,10 +25,10 @@ import '@/permission' // permission control
  * Currently MockJs will be used in the production environment,
  * please remove it before going online! ! !
  */
-import { mockXHR } from '../mock'
-if (process.env.NODE_ENV === 'production') {
-  mockXHR()
-}
+// import { mockXHR } from '../mock'
+// if (process.env.NODE_ENV === 'production') {
+//   mockXHR()
+// }
 
 // 高德地址
 import VueAMap from 'vue-amap'

+ 48 - 0
src/router/index.js

@@ -82,6 +82,7 @@ export const constantRoutes = [
   {
     path: '/teamBuild', // 创建乐团
     component: Layout,
+    meta: { title: '乐团管理' },
     children: [
       {
         path: 'teamBuild',
@@ -95,8 +96,55 @@ export const constantRoutes = [
         component: () => import('@/views/teamBuild/signupList'),
         meta: { title: '乐团报名' }
       },
+      {
+        path: 'teamSeting',
+        name: 'teamSeting',
+        component: () => import('@/views/teamBuild/teamSeting/index'),
+        meta: { title: '报名设置' }
+      },
+      {
+        path: 'teamDetail',
+        name: 'teamDetail',
+        component: () => import('@/views/teamDetail/index'),
+        meta: { title: '乐团详情' },
+      },
     ]
   },
+  {
+    path: '/vipBuild',
+    component: Layout,
+    meta: { title: 'vip申请' },
+    children: [{
+      path: 'baseVip',
+      component: () => import('@/views/buildVip/index'),
+      meta: { title: 'vip详情' }
+    }]
+  },
+  // {
+  //   path: '/vipClass', // 小课
+  //   component: Layout,
+  //   meta: { title: 'vip管理' },
+  //   children: [
+  //     {
+  //       path: 'vipClass',
+  //       name: 'vipClass',
+  //       component: () => import('@/views/vipClass/vipList'),
+  //       meta: { title: 'vip课列表' }
+  //     },
+  //     {
+  //       path: 'vipDetail',
+  //       name: 'vipDetail',
+  //       component: () => import('@/views/vipClass/vipDetail/index'),
+  //       meta: { title: '调整记录' }
+  //     },
+  //     {
+  //       path: 'resetClass',
+  //       name: 'resetClass',
+  //       component: () => import('@/views/vipClass/resetClasss'),
+  //       meta: { title: 'vip课详情' }
+  //     }
+  //   ]
+  // },
 
   // 临时侧边栏结束-----------------------------------
   // {

+ 109 - 0
src/views/buildVip/components/vipBaseInfo.vue

@@ -0,0 +1,109 @@
+<template>
+  <div class='vipinfo-container'>
+    <el-form :inline="true"
+             :model="vipForm">
+      <el-form-item label="指导老师">
+        <el-input v-model="vipForm.teacher"></el-input>
+      </el-form-item>
+      <el-form-item label="课程名称">
+        <el-input v-model="vipForm.course"></el-input>
+      </el-form-item>
+      <el-form-item label="班级人数">
+        <el-input v-model="vipForm.classnum"></el-input>
+      </el-form-item>
+      <el-form-item label="每课时长">
+        <el-select v-model="vipForm.classtime">
+          <el-option label="30"
+                     value="1"></el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item label="科目名称">
+        <el-select v-model="vipForm.classname">
+          <el-option label="30"
+                     value="1"></el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item label="报名时间">
+        <el-date-picker v-model="vipForm.goTime"
+                        type="date"
+                        placeholder="选择日期">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item label="开始时间">
+        <el-date-picker v-model="vipForm.startTime"
+                        type="date"
+                        placeholder="选择日期">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item label="截止时间">
+        <el-date-picker v-model="vipForm.endTime"
+                        type="date"
+                        placeholder="选择日期">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item label="活动方案">
+        <el-select v-model="vipForm.active">
+          <el-option label="30"
+                     value="1"></el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item label="课程类型">
+        <el-select v-model="vipForm.classType">
+          <el-option label="30"
+                     value="1"></el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item label="课时安排">
+        <el-input v-model="vipForm.plan"></el-input>
+      </el-form-item>
+      <el-form-item label="教学点">
+        <el-input v-model="vipForm.address"></el-input>
+      </el-form-item>
+      <el-form-item label="老师课酬(节)">
+        <el-input v-model="vipForm.money"></el-input>
+      </el-form-item>
+      <el-form-item label="购买价格(节)">
+        <el-input v-model="vipForm.price"></el-input>
+      </el-form-item>
+      <el-form-item label="线上">
+        <el-input v-model="vipForm.online"></el-input>
+      </el-form-item>
+      <el-form-item label="线下">
+        <el-input v-model="vipForm.offline"></el-input>
+      </el-form-item>
+    </el-form>
+  </div>
+</template>
+<script>
+export default {
+  data () {
+    return {
+      vipForm: {
+        teacher: '',
+        course: '',
+        classnum: '',
+        classtime: '',
+        classname: '',
+        goTime: '',
+        startTime: '',
+        endTime: '',
+        active: '',
+        classType: '',
+        plan: '',
+        address: '',
+        money: '',
+        price: '',
+        online: '',
+        offline: ''
+      }
+    }
+  }
+}
+</script>
+<style lang="scss" scope>
+.vipinfo-container {
+  .el-select {
+    width: 180px !important;
+  }
+}
+</style>

+ 45 - 0
src/views/buildVip/index.vue

@@ -0,0 +1,45 @@
+<template>
+  <div class="m-container">
+    <h2>
+      <div class="squrt"></div>
+      VIP课申请
+    </h2>
+    <div class="m-core">
+      <el-tabs v-model="activeIndex"
+               type="card"
+               @tab-click="handleClick">
+        <el-tab-pane label="基本信息"
+                     name="1">
+          <vipbase />
+        </el-tab-pane>
+        <el-tab-pane label="老师列表"
+                     name="2">
+          2222
+        </el-tab-pane>
+      </el-tabs>
+    </div>
+  </div>
+</template>
+<script>
+import vipbase from '@/views/buildVip/components/vipBaseInfo'
+export default {
+  components: {
+    vipbase
+  },
+  data () {
+    return {
+      activeIndex: '1'
+    }
+  },
+  methods: {
+    handleClick (val) {
+      this.activeIndex = val.name;
+    }
+  },
+}
+</script>
+<style lang="scss" scope>
+.m-core {
+  margin-top: 30px;
+}
+</style>

+ 1 - 1
src/views/login/index.vue

@@ -277,7 +277,7 @@ $light_gray: #eee;
   width: 100%;
   // background-color: $bg;
   background: url("../../assets/images/base/login-bg.png") no-repeat 100% 100%;
-  background-size: cover;
+  // background-size: cover;
   overflow: hidden;
 
   .login-form {

+ 1 - 1
src/views/teamBuild/index.vue

@@ -68,7 +68,7 @@ export default {
   }
 }
 </script>
-<style lang="scss">
+<style lang="scss" scope>
 .stepbox {
   display: flex;
   flex-direction: row;

+ 51 - 4
src/views/teamBuild/signupList.vue

@@ -13,13 +13,19 @@
       </div>
       <p class='msg'> <img src="@/assets/images/base/clock.png"
              alt=""> 报名中</p>
-
+    </div>
+    <div class="searchList">
+      <el-form :inline="true"
+               :model="searchFrom">
+        <el-form-item label="乐团名称">
+          <el-input v-model="searchFrom.name"></el-input>
+        </el-form-item>
+      </el-form>
     </div>
     <div class="sigup-core">
       <div class="left">
         <el-table :data='leftList'
                   :header-cell-style="{background:'#EDEEF0',color:'#444'}">
-          >
           <el-table-column label="
                   乐团声部"
                            align='center'>
@@ -33,7 +39,36 @@
         </el-table>
       </div>
       <div class="right">
-
+        <el-table :data='rightList'
+                  :header-cell-style="{background:'#EDEEF0',color:'#444'}">
+          <el-table-column label="学员姓名"
+                           align='center'>
+          </el-table-column>
+          <el-table-column label="家长姓名"
+                           align='center'>
+          </el-table-column>
+          <el-table-column label="年级班级"
+                           align='center'>
+          </el-table-column>
+          <el-table-column label="性别"
+                           align='center'>
+          </el-table-column>
+          <el-table-column label="服从调剂"
+                           align='center'>
+          </el-table-column>
+          <el-table-column label="报名专业"
+                           align='center'>
+          </el-table-column>
+          <el-table-column label="调剂专业"
+                           align='center'>
+          </el-table-column>
+          <el-table-column label="联系电话"
+                           align='center'>
+          </el-table-column>
+          <el-table-column label="操作"
+                           align='center'>
+          </el-table-column>
+        </el-table>
       </div>
     </div>
 
@@ -43,7 +78,11 @@
 export default {
   data () {
     return {
-      leftList: []
+      leftList: [],
+      rightList: [],
+      searchFrom: {
+        name: ''
+      }
     }
   }
 }
@@ -126,6 +165,10 @@ export default {
       border: 1px solid #777;
     }
   }
+  .searchList {
+    background-color: #fff;
+    padding: 0 58px;
+  }
   .sigup-core {
     margin-top: 12px;
     display: flex;
@@ -137,6 +180,10 @@ export default {
       height: 80vh;
       overflow: auto;
     }
+    .right {
+      margin-left: 12px;
+      flex-grow: 1;
+    }
   }
 }
 </style>

+ 351 - 0
src/views/teamBuild/teamSeting/components/coursePlan.vue

@@ -0,0 +1,351 @@
+<template>
+  <div class='course-container'>
+    <div class="left">
+      <el-form :model="leftFrom"
+               :inline="true">
+        <el-form-item label="合奏班">
+          <el-select v-model="leftFrom.all">
+            <el-option label="11"
+                       value='1'></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="排课起始时间">
+          <el-date-picker v-model="leftFrom.time"
+                          align="right"
+                          type="date"
+                          placeholder="选择日期"
+                          :picker-options="pickerOptions">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="排课次数">
+          <el-input type="number"
+                    v-model="leftFrom.num"></el-input>
+        </el-form-item>
+      </el-form>
+      <p>周次循环<span style="margin-left:10px;">上课时间</span></p>
+      <div class="checkWrap">
+        <el-checkbox-group v-model="checkList">
+          <div class="chioseday">
+            <el-checkbox label="周一"></el-checkbox>
+            <el-time-select placeholder="起始"
+                            v-model="week.Monday.startTime"
+                            :picker-options="{
+                             start: '06:30',
+                             step: '00:05',
+                             end: '18:30'
+                                            }">
+            </el-time-select>
+
+            <el-time-select placeholder="结束"
+                            v-model="week.Monday.endTime"
+                            :picker-options="{
+                            start: '08:30',
+                            step: '00:15',
+                            end: '23:30',
+                            minTime: week.Monday.startTime
+                                            }">
+            </el-time-select>
+          </div>
+          <div class="chioseday">
+            <el-checkbox label="周二"></el-checkbox>
+            <el-time-select placeholder="起始"
+                            v-model="week.Tuesday.startTime"
+                            :picker-options="{
+                             start: '06:30',
+                             step: '00:05',
+                             end: '18:30'
+                                            }">
+            </el-time-select>
+            <el-time-select placeholder="结束"
+                            v-model="week.Tuesday.endTime"
+                            :picker-options="{
+                            start: '08:30',
+                            step: '00:15',
+                            end: '23:30',
+                            minTime: week.Tuesday.startTime
+                                            }">
+            </el-time-select>
+          </div>
+          <div class="chioseday">
+            <el-checkbox label="周三"></el-checkbox>
+            <el-time-select placeholder="起始"
+                            v-model="week.Wednesday.startTime"
+                            :picker-options="{
+                             start: '06:30',
+                             step: '00:05',
+                             end: '18:30'
+                                            }">
+            </el-time-select>
+
+            <el-time-select placeholder="结束"
+                            v-model="week.Wednesday.endTime"
+                            :picker-options="{
+                            start: '08:30',
+                            step: '00:15',
+                            end: '23:30',
+                            minTime: week.Monday.startTime
+                                            }">
+            </el-time-select>
+          </div>
+          <div class="chioseday">
+            <el-checkbox label="周四"></el-checkbox>
+            <el-time-select placeholder="起始"
+                            v-model="week.Thursday.startTime"
+                            :picker-options="{
+                             start: '06:30',
+                             step: '00:05',
+                             end: '18:30'
+                                            }">
+            </el-time-select>
+
+            <el-time-select placeholder="结束"
+                            v-model="week.Thursday.endTime"
+                            :picker-options="{
+                            start: '08:30',
+                            step: '00:15',
+                            end: '23:30',
+                            minTime: week.Thursday.startTime
+                                            }">
+            </el-time-select>
+          </div>
+          <div class="chioseday">
+            <el-checkbox label="周五"></el-checkbox>
+            <el-time-select placeholder="起始"
+                            v-model="week.Friday.startTime"
+                            :picker-options="{
+                             start: '06:30',
+                             step: '00:05',
+                             end: '18:30'
+                                            }">
+            </el-time-select>
+
+            <el-time-select placeholder="结束"
+                            v-model="week.Friday.endTime"
+                            :picker-options="{
+                            start: '08:30',
+                            step: '00:15',
+                            end: '23:30',
+                            minTime: week.Friday.startTime
+                                            }">
+            </el-time-select>
+          </div>
+          <div class="chioseday">
+            <el-checkbox label="周六"></el-checkbox>
+            <el-time-select placeholder="起始"
+                            v-model="week.Saturday.startTime"
+                            :picker-options="{
+                             start: '06:30',
+                             step: '00:05',
+                             end: '18:30'
+                                            }">
+            </el-time-select>
+
+            <el-time-select placeholder="结束"
+                            v-model="week.Saturday.endTime"
+                            :picker-options="{
+                            start: '08:30',
+                            step: '00:15',
+                            end: '23:30',
+                            minTime: week.Saturday.startTime
+                                            }">
+            </el-time-select>
+          </div>
+          <div class="chioseday">
+            <el-checkbox label="周日"></el-checkbox>
+            <el-time-select placeholder="起始"
+                            v-model="week.Sunday.startTime"
+                            :picker-options="{
+                             start: '06:30',
+                             step: '00:05',
+                             end: '18:30'
+                                            }">
+            </el-time-select>
+
+            <el-time-select placeholder="结束"
+                            v-model="week.Sunday.endTime"
+                            :picker-options="{
+                            start: '08:30',
+                            step: '00:15',
+                            end: '23:30',
+                            minTime: week.Sunday.startTime
+                                            }">
+            </el-time-select>
+          </div>
+        </el-checkbox-group>
+        <div class="holidayWrap">
+          <el-checkbox v-model="isholiday">跳过节假日</el-checkbox>
+        </div>
+        <div class="btnWrap">
+          <div class="closeBtn">取消排课</div>
+          <div class="okBtn">一件排课</div>
+        </div>
+      </div>
+
+    </div>
+    <div class="right">
+      <el-calendar>
+        <!-- 这里使用的是 2.5 slot 语法,对于新项目请使用 2.6 slot 语法-->
+        <template slot="dateCell"
+                  slot-scope="{date, data}">
+          <p :class="data.isSelected ? 'is-selected' : ''">
+            {{ data.day.split('-').slice(1).join('-') }} {{ data.isSelected ? '✔️' : ''}}
+          </p>
+        </template>
+      </el-calendar>
+      <div class="btnWrap">
+        <div class="nextBtn">下一步</div>
+        <div class="okBtn">确定</div>
+      </div>
+    </div>
+  </div>
+</template>
+<script>
+export default {
+  data () {
+    return {
+      leftFrom: {
+        all: '',
+        time: '',
+        num: ''
+      },
+      pickerOptions: {
+        disabledDate (time) {
+          return time.getTime() > Date.now();
+        },
+        shortcuts: [{
+          text: '今天',
+          onClick (picker) {
+            picker.$emit('pick', new Date());
+          }
+        }, {
+          text: '昨天',
+          onClick (picker) {
+            const date = new Date();
+            date.setTime(date.getTime() - 3600 * 1000 * 24);
+            picker.$emit('pick', date);
+          }
+        }, {
+          text: '一周前',
+          onClick (picker) {
+            const date = new Date();
+            date.setTime(date.getTime() - 3600 * 1000 * 24 * 7);
+            picker.$emit('pick', date);
+          }
+        }]
+      },
+      checkList: [],
+      week: {
+        Monday: {
+          startTime: '',
+          endTime: ''
+        },
+        Tuesday: {
+          startTime: '',
+          endTime: ''
+        },
+        Wednesday: {
+          startTime: '',
+          endTime: ''
+        },
+        Thursday: {
+          startTime: '',
+          endTime: ''
+        },
+        Friday: {
+          startTime: '',
+          endTime: ''
+        },
+        Saturday: {
+          startTime: '',
+          endTime: ''
+        },
+        Sunday: {
+          startTime: '',
+          endTime: ''
+        }
+      },
+      isholiday: false
+    }
+  }
+
+}
+</script>
+<style lang="scss">
+.course-container {
+  padding: 47px 58px;
+  background-color: #fff;
+  display: flex;
+  flex-direction: row;
+  justify-content: flex-start;
+  .left {
+    width: 300px;
+    min-width: 300px;
+    margin-right: 90px;
+    .chioseday {
+      margin-top: 20px;
+      .el-date-editor.el-input,
+      .el-date-editor.el-input__inner {
+        width: 100px;
+        margin-left: 20px;
+      }
+    }
+    .holidayWrap {
+      margin-top: 34px;
+      margin-bottom: 40px;
+      display: flex;
+      flex-direction: column;
+      justify-items: center;
+      align-items: center;
+    }
+    .btnWrap {
+      display: flex;
+      flex-direction: row;
+      justify-content: space-around;
+      div {
+        width: 120px;
+        height: 40px;
+        border-radius: 4px;
+        text-align: center;
+        line-height: 40px;
+        cursor: pointer;
+        color: #fff;
+      }
+      .closeBtn {
+        background-color: #777;
+      }
+      .okBtn {
+        background-color: #14928a;
+      }
+    }
+  }
+  .right {
+    .is-selected {
+      color: #1989fa;
+    }
+    .el-calendar {
+      max-width: 950px;
+    }
+    .btnWrap {
+      display: flex;
+      flex-direction: row;
+      justify-content: flex-end;
+      div {
+        width: 120px;
+        height: 40px;
+        line-height: 40px;
+        text-align: center;
+        color: #fff;
+        border-radius: 4px;
+        margin-right: 20px;
+        cursor: pointer;
+      }
+      .nextBtn {
+        background-color: #444;
+      }
+      .okBtn {
+        background-color: #f97215;
+      }
+    }
+  }
+}
+</style>

+ 53 - 0
src/views/teamBuild/teamSeting/components/salarySet.vue

@@ -0,0 +1,53 @@
+<template>
+  <div class='salary-container'>
+    <el-form :inline="true"
+             :model="searchForm">
+      <el-form-item label="班级名称">
+        <el-select v-model="searchForm.class">
+          <el-option label="1"
+                     value="1"></el-option>
+        </el-select>
+      </el-form-item>
+    </el-form>
+    <div class="tableWrap">
+      <el-table :data="tableList"
+                :header-cell-style="{background:'#EDEEF0',color:'#444'}">
+        <el-table-column label="班级名称">
+        </el-table-column>
+        <el-table-column label="主教老师">
+        </el-table-column>
+        <el-table-column label="老师课酬">
+        </el-table-column>
+        <el-table-column label="助教老师">
+        </el-table-column>
+        <el-table-column label="老师课酬">
+        </el-table-column>
+        <el-table-column label="助教老师">
+        </el-table-column>
+        <el-table-column label="老师课酬">
+        </el-table-column>
+        <el-table-column label="操作">
+        </el-table-column>
+      </el-table>
+    </div>
+  </div>
+</template>
+<script>
+export default {
+  data () {
+    return {
+      searchForm: {
+        class: ''
+      },
+      tableList: []
+    }
+  }
+}
+</script>
+<style lang="scss">
+.salary-container {
+  padding: 47px 58px;
+  background-color: #fff;
+  min-height: 75vh;
+}
+</style>

+ 123 - 0
src/views/teamBuild/teamSeting/components/setClass.vue

@@ -0,0 +1,123 @@
+<template>
+  <div class="classWrap">
+    <div class="left">
+      <el-table :data='leftList'
+                :header-cell-style="{background:'#EDEEF0',color:'#444'}">
+        <el-table-column label="
+                  乐团声部"
+                         align='center'>
+        </el-table-column>
+        <el-table-column label="计划招生"
+                         align='center'>
+        </el-table-column>
+        <el-table-column label="已报名"
+                         align='center'>
+        </el-table-column>
+      </el-table>
+    </div>
+    <div class="center">
+      <el-table :data='centertList'
+                :header-cell-style="{background:'#EDEEF0',color:'#444'}">
+        <el-table-column label="
+                  班级名称"
+                         align='center'>
+        </el-table-column>
+        <el-table-column label="声部"
+                         align='center'>
+        </el-table-column>
+        <el-table-column label="班级人数"
+                         align='center'>
+        </el-table-column>
+        <el-table-column label="操作"
+                         align='center'>
+        </el-table-column>
+      </el-table>
+      <div class="centerInfo">
+        <p>当前班级总数(个):30</p>
+        <div class="btnWrap">
+          <div class="setBtn">设置单技课班</div>
+          <div class="okBtn">确定</div>
+        </div>
+      </div>
+    </div>
+    <div class="right">
+      <el-table :data='centertList'
+                :header-cell-style="{background:'#EDEEF0',color:'#444'}">
+        <el-table-column label="
+                  合奏班"
+                         align='center'>
+        </el-table-column>
+        <el-table-column label="班级组成"
+                         align='center'>
+        </el-table-column>
+        <el-table-column label="操作"
+                         align='center'>
+        </el-table-column>
+      </el-table>
+    </div>
+  </div>
+</template>
+<script>
+export default {
+  data () {
+    return {
+      leftList: [],
+      centertList: [],
+      rightList: []
+    }
+  }
+}
+</script>
+<style lang="scss">
+.classWrap {
+  display: flex;
+  flex-direction: row;
+  justify-content: flex-start;
+  .left {
+    width: 275px;
+    background-color: #fff;
+    height: 80vh;
+    overflow: auto;
+  }
+  .center {
+    // background-color: #fff;
+    width: 400px;
+    margin-left: 12px;
+    .centerInfo {
+      background-color: #fff;
+      color: #444;
+      padding: 15px;
+      .btnWrap {
+        margin-top: 38px;
+        display: flex;
+        flex-direction: row;
+        justify-content: space-around;
+        .setBtn {
+          width: 120px;
+          height: 40px;
+          background: rgba(68, 68, 68, 1);
+          border-radius: 4px;
+          color: #fff;
+          line-height: 40px;
+          text-align: center;
+          cursor: pointer;
+        }
+        .okBtn {
+          width: 120px;
+          height: 40px;
+          background: rgba(249, 114, 21, 1);
+          border-radius: 4px;
+          color: #fff;
+          line-height: 40px;
+          text-align: center;
+          cursor: pointer;
+        }
+      }
+    }
+  }
+  .right {
+    flex-grow: 1;
+    margin-left: 12px;
+  }
+}
+</style>

+ 181 - 0
src/views/teamBuild/teamSeting/components/setTeacher.vue

@@ -0,0 +1,181 @@
+<template>
+  <div class='set-teacher'>
+    <div class="allClassLis">
+      <div class="allClassBtn">
+        合奏1班
+      </div>
+      <div class="allClassBtn active">
+        合奏2班
+      </div>
+    </div>
+    <div class="tableWrap">
+      <el-table :data='singinList'
+                :header-cell-style="{background:'#EDEEF0',color:'#444'}">
+        <el-table-column label="单技课班级名称"
+                         prop='name'
+                         width="160px">
+
+        </el-table-column>
+        <el-table-column label="主教老师"
+                         width="160px">
+          <template slot-scope="scope">
+            <div>
+              <el-select v-model="scope.row.coreTeacher">
+                <el-option label="张老师"
+                           value="1"></el-option>
+              </el-select>
+            </div>
+          </template>
+        </el-table-column>
+        <el-table-column label="
+                         助教老师">
+          <template slot-scope="scope">
+            <div>
+              <el-select class='tableClass'
+                         v-model="scope.row.assistant[index]"
+                         v-for="(item,index) in scope.row.assistant"
+                         :key='index'>
+                <el-option label="张老师"
+                           value="1"></el-option>
+                <el-option label="李老师"
+                           value="2"></el-option>
+              </el-select>
+              <span style="font-size:20px;">
+                <i class="el-icon-circle-plus-outline"></i>
+                <i class="el-icon-remove-outline"></i>
+              </span>
+
+            </div>
+          </template>
+        </el-table-column>
+      </el-table>
+    </div>
+    <div class="tableWrap">
+      <el-table :data='allList'
+                :header-cell-style="{background:'#EDEEF0',color:'#444'}">
+        <el-table-column label="合奏班课程名称"
+                         prop='name'
+                         width="160px">
+
+        </el-table-column>
+        <el-table-column label="主教老师"
+                         width="160px">
+          <template slot-scope="scope">
+            <div>
+              <el-select v-model="scope.row.coreTeacher">
+                <el-option label="张老师"
+                           value="1"></el-option>
+              </el-select>
+            </div>
+          </template>
+        </el-table-column>
+        <el-table-column label="
+                         助教老师">
+          <template slot-scope="scope">
+            <div>
+              <el-select class='tableClass'
+                         v-model="scope.row.assistant[index]"
+                         v-for="(item,index) in scope.row.assistant"
+                         :key='index'>
+                <el-option label="张老师"
+                           value="1"></el-option>
+                <el-option label="李老师"
+                           value="2"></el-option>
+              </el-select>
+              <span style="font-size:20px;">
+                <i class="el-icon-circle-plus-outline"></i>
+                <i class="el-icon-remove-outline"></i>
+              </span>
+
+            </div>
+          </template>
+        </el-table-column>
+      </el-table>
+    </div>
+    <div class="footer">
+      <div class="reset">返回修改</div>
+      <div class="next">下一步</div>
+    </div>
+  </div>
+</template>
+<script>
+export default {
+  data () {
+    return {
+      singinList: [{
+        name: '长笛',
+        coreTeacher: '', // 主教
+        assistant: ['1', '2', '3'] // 助教
+      }],
+      allList: []
+    }
+  }
+}
+</script>
+<style lang="scss" scope>
+.set-teacher {
+  box-sizing: border-box;
+  padding: 30px 42px;
+  background-color: #fff;
+  min-height: 80vh;
+  .allClassLis {
+    display: inline-block;
+    // flex-direction: row;
+    // justify-content: flex-start;
+    border: 4px solid #f97215;
+    align-items: center;
+    border-radius: 4px;
+    margin-bottom: 24px;
+    clear: both;
+    .allClassBtn {
+      width: 91px;
+      height: 32px;
+      line-height: 32px;
+      background-color: #f97215;
+      color: #fff;
+      text-align: center;
+      font-size: 14px;
+      float: left;
+      cursor: pointer;
+    }
+    .allClassBtn.active {
+      width: 91px;
+      height: 32px;
+      line-height: 32px;
+      background-color: #fff;
+      color: #f97215;
+      text-align: center;
+      font-size: 14px;
+      float: left;
+    }
+  }
+  .tableClass {
+    margin-right: 10px;
+  }
+  i {
+    cursor: pointer;
+  }
+  .footer {
+    margin-top: 50px;
+    display: flex;
+    flex-direction: row;
+    justify-content: flex-end;
+    > div {
+      width: 150px;
+      height: 40px;
+      line-height: 40px;
+      text-align: center;
+      border-radius: 4px;
+      color: #fff;
+      cursor: pointer;
+    }
+    .reset {
+      background-color: #14928a;
+      margin-right: 20px;
+    }
+    .next {
+      background-color: #444;
+    }
+  }
+}
+</style>

+ 226 - 0
src/views/teamBuild/teamSeting/index.vue

@@ -0,0 +1,226 @@
+<template>
+  <div class='set-container'>
+    <div class="topWrap">
+      <h2>
+        <div class="squrt"></div>
+        武汉小学乐团
+      </h2>
+      <div class="stepbox">
+        <span class='stepspan'
+              @click="activeIndex=0">
+          <div class="step1 sptep"
+               :class="activeIndex >= 0?'activestep':''">
+            基本信息
+          </div>
+          <img :src="activeIndex >= 0?stepImgs.nol:stepImgs.active"
+               alt=""
+               class="arrow">
+        </span>
+        <span class='stepspan  stepspan2'
+              @click="activeIndex=1">
+          <div class="step2 sptep"
+               :class="activeIndex >= 1?'activestep':''">
+            老师设置
+          </div>
+          <img :src="activeIndex >= 1?stepImgs.nol:stepImgs.active"
+               alt=""
+               class="
+               arrow">
+        </span>
+        <span class='stepspan  stepspan2'
+              @click="activeIndex=2">
+          <div class="step2 sptep"
+               :class="activeIndex >= 2?'activestep':''">
+            排课
+          </div>
+          <img :src="activeIndex >= 2?stepImgs.nol:stepImgs.active"
+               alt=""
+               class="
+               arrow">
+        </span>
+        <span class='stepspan  stepspan2'
+              @click="activeIndex=3">
+          <div class="step2 sptep"
+               :class="activeIndex >= 3?'activestep':''">
+            课酬
+          </div>
+          <img :src="activeIndex >= 3?stepImgs.nol:stepImgs.active"
+               alt=""
+               class="
+               arrow">
+        </span>
+      </div>
+    </div>
+
+    <!-- 下面显示的内容 -->
+    <div class="stepcontent">
+      <div v-show='activeIndex==0'>
+        <classSeting />
+      </div>
+      <div v-show='activeIndex==1'>
+        <teacherSeting />
+      </div>
+      <div v-show='activeIndex==2'>
+        <coursePlan />
+      </div>
+      <div v-show='activeIndex==3'>
+        <salarySet />
+      </div>
+    </div>
+  </div>
+</template>
+<script>
+import classSeting from '@/views/teamBuild/teamSeting/components/setClass'
+import teacherSeting from '@/views/teamBuild/teamSeting/components/setTeacher'
+import coursePlan from '@/views/teamBuild/teamSeting/components/coursePlan'
+import salarySet from '@/views/teamBuild/teamSeting/components/salarySet'
+export default {
+  components: {
+    classSeting,
+    teacherSeting,
+    coursePlan,
+    salarySet
+  },
+  data () {
+    return {
+      activeIndex: '3',
+      stepImgs: {
+        nol: require('@/assets/images/base/step-arrow-active.png'),
+        active: require('@/assets/images/base/step-arrow.png')
+      }
+    }
+  }
+}
+</script>
+<style lang="scss" scope>
+.set-container {
+  margin-left: 12px;
+  .topWrap {
+    padding: 18px 58px 0;
+    // height: 136px;
+    background-color: #fff;
+    // display: flex;
+    // flex-direction: row;
+    // justify-content: space-between;
+    .msg {
+      text-align: right;
+      color: #f97215;
+      font-size: 32px;
+      font-weight: bold;
+      padding-top: 30px;
+      box-sizing: border-box;
+      img {
+        width: 36px;
+        height: 36px;
+        position: relative;
+        top: 5px;
+        margin-right: 8px;
+      }
+    }
+    h2 {
+      height: 48px;
+      line-height: 48px;
+      position: relative;
+      // padding-left: 30px;
+      font-size: 32px;
+      font-weight: 600;
+      margin-bottom: 10px;
+      display: flex;
+      flex-direction: row;
+      justify-content: flex-start;
+      align-items: center;
+      .term {
+        height: 32px;
+        line-height: 32px;
+        border-radius: 24px;
+        width: 100px;
+        color: #14928a;
+        border: 1px solid rgba(20, 146, 138, 1);
+        font-size: 14px;
+        text-align: center;
+        margin-right: 12px;
+        &:nth-child(1) {
+          margin-left: 47px;
+        }
+      }
+      .term.active {
+        color: #fff;
+        background-color: #14928a;
+      }
+      .squrt {
+        position: absolute;
+        left: -25px;
+        top: 8px;
+        height: 34px;
+        width: 8px;
+        background-color: #14928a;
+      }
+    }
+    .btnList {
+      display: flex;
+      flex-direction: row;
+      justify-content: flex-start;
+      align-items: center;
+      div {
+        margin-right: 15px;
+      }
+    }
+    .newBand.close {
+      background-color: #777;
+      border: 1px solid #777;
+    }
+  }
+  .stepbox {
+    display: flex;
+    flex-direction: row;
+    justify-content: flex-start;
+    margin-top: 30px;
+    .stepspan {
+      cursor: pointer;
+      font-size: 14px;
+      display: block;
+      line-height: 40px;
+      // position: relative;
+      // z-index: 100;
+      display: flex;
+      flex-direction: row;
+      // justify-content: space-between;
+      margin-left: -17px !important;
+
+      .sptep {
+        width: 110px;
+        height: 40px;
+        border: 1px solid #dcdfe6;
+        border-right: none;
+        border-bottom: none;
+        padding-left: 25px;
+        border-radius: 4px 0 0 0;
+        text-align: center;
+      }
+      .arrow {
+        height: 40px;
+        width: 17px;
+        position: relative;
+        top: 1px;
+        z-index: 20;
+      }
+    }
+    .stepspan.stepspan2 {
+      position: relative;
+      .sptep {
+        padding-left: 12px !important;
+        border-radius: 0 !important;
+      }
+    }
+    .sptep.activestep {
+      color: #fff;
+      font-weight: bold;
+      background-color: #4eada7;
+    }
+  }
+  .stepcontent {
+    border-top: 1px solid #dcdfe6;
+    padding-top: 12px;
+  }
+}
+</style>

+ 146 - 0
src/views/teamDetail/components/baseInfo.vue

@@ -0,0 +1,146 @@
+<template>
+  <div class='base-container'>
+    <div class="baseTop">
+      <div class="left">
+        <el-form :inline="true"
+                 :model="topForm">
+          <el-form-item label="乐团编号">
+            <el-input v-model="topForm.num"
+                      disabled></el-input>
+          </el-form-item>
+          <el-form-item label="教务老师">
+            <el-select v-model="topForm.teacher">
+              <el-option label="啦啦啦"
+                         value="1"></el-option>
+            </el-select>
+          </el-form-item>
+          <el-form-item label="所属分部">
+            <el-select v-model="topForm.section">
+              <el-option label="啦啦啦"
+                         value="1"></el-option>
+            </el-select>
+          </el-form-item>
+          <el-form-item label="教学主管">
+            <el-select v-model="topForm.boss">
+              <el-option label="啦啦啦"
+                         value="1"></el-option>
+            </el-select>
+          </el-form-item>
+          <el-form-item label="合作单位">
+            <el-select v-model="topForm.cooperate">
+              <el-option label="啦啦啦"
+                         value="1"></el-option>
+            </el-select>
+          </el-form-item>
+          <el-form-item label="上课地点">
+            <el-input v-model="topForm.add"
+                      style="width:370px;"></el-input>
+          </el-form-item>
+          <el-form-item label="收费类型">
+            <el-select v-model="topForm.type">
+              <el-option label="啦啦啦"
+                         value="1"></el-option>
+            </el-select>
+          </el-form-item>
+        </el-form>
+      </div>
+      <div class="right">
+        <ul>
+          <li>2019-09-07 17:00 徐老师 建团申请</li>
+          <li>2019-09-07 17:00 徐老师 建团申请</li>
+          <li>2019-09-07 17:00 徐老师 建团申请</li>
+          <li>2019-09-07 17:00 徐老师 建团申请</li>
+          <li>2019-09-07 17:00 徐老师 建团申请</li>
+        </ul>
+      </div>
+    </div>
+    <div class="baseBottom">
+      <img src=""
+           alt=""
+           class='code'>
+      <a href="#">www.baidu.com</a>
+      <div class="btnList">
+        <div class="closeBtn">取消</div>
+        <div class="okBtn">确定</div>
+      </div>
+    </div>
+  </div>
+</template>
+<script>
+export default {
+  data () {
+    return {
+      topForm: {
+        num: '',
+        teacher: '',
+        section: '',
+        boss: '',
+        cooperate: '',
+        add: '',
+        type: ''
+      }
+    }
+  }
+}
+</script>
+<style lang="scss" scope>
+.base-container {
+  margin-top: 35px;
+  .baseTop {
+    display: flex;
+    flex-direction: row;
+    justify-content: space-between;
+    .left {
+      max-width: 750px;
+      .el-select {
+        width: 180px !important;
+      }
+    }
+    .right {
+      ul {
+        li {
+          list-style: none;
+          line-height: 22px;
+          font-size: 14px;
+          color: #aaa;
+        }
+      }
+    }
+  }
+  .baseBottom {
+    margin-top: 40px;
+    display: flex;
+    flex-direction: column;
+    justify-content: center;
+    align-items: center;
+    .code {
+      width: 300px;
+      height: 300px;
+      background-color: red;
+      margin-bottom: 20px;
+    }
+    .btnList {
+      width: 300px;
+      display: flex;
+      flex-direction: row;
+      justify-content: space-between;
+      margin-top: 60px;
+      div {
+        cursor: pointer;
+        width: 120px;
+        height: 40px;
+        line-height: 40px;
+        border-radius: 4px;
+        color: #fff;
+        text-align: center;
+      }
+      .closeBtn {
+        background-color: #777;
+      }
+      .okBtn {
+        background-color: #f97215;
+      }
+    }
+  }
+}
+</style>

+ 5 - 2
src/views/teamDetail/index.vue

@@ -15,6 +15,7 @@
                @tab-click="handleClick">
         <el-tab-pane label="基本信息"
                      name="1">
+          <baseinfo />
         </el-tab-pane>
         <el-tab-pane label="老师列表"
                      name="2">
@@ -49,10 +50,11 @@ import teacherList from '@/views/teamDetail/components/teacherList'
 import courseList from '@/views/teamDetail/components/courseList'
 import classList from '@/views/teamDetail/components/classList'
 import salaryList from '@/views/teamDetail/components/salaryList'
+import baseinfo from '@/views/teamDetail/components/baseInfo'
 export default {
   data () {
     return {
-      activeIndex: '3',
+      activeIndex: '1',
     }
   },
   methods: {
@@ -65,7 +67,8 @@ export default {
     teacherList,
     courseList,
     classList,
-    salaryList
+    salaryList,
+    baseinfo
   }
 }
 </script>

+ 15 - 15
tests/unit/utils/validate.spec.js

@@ -1,17 +1,17 @@
 import { validUsername, isExternal } from '@/utils/validate.js'
 
-describe('Utils:validate', () => {
-  it('validUsername', () => {
-    expect(validUsername('admin')).toBe(true)
-    expect(validUsername('editor')).toBe(true)
-    expect(validUsername('xxxx')).toBe(false)
-  })
-  it('isExternal', () => {
-    expect(isExternal('https://github.com/PanJiaChen/vue-element-admin')).toBe(true)
-    expect(isExternal('http://github.com/PanJiaChen/vue-element-admin')).toBe(true)
-    expect(isExternal('github.com/PanJiaChen/vue-element-admin')).toBe(false)
-    expect(isExternal('/dashboard')).toBe(false)
-    expect(isExternal('./dashboard')).toBe(false)
-    expect(isExternal('dashboard')).toBe(false)
-  })
-})
+// describe('Utils:validate', () => {
+//   it('validUsername', () => {
+//     expect(validUsername('admin')).toBe(true)
+//     expect(validUsername('editor')).toBe(true)
+//     expect(validUsername('xxxx')).toBe(false)
+//   })
+//   it('isExternal', () => {
+//     expect(isExternal('https://github.com/PanJiaChen/vue-element-admin')).toBe(true)
+//     expect(isExternal('http://github.com/PanJiaChen/vue-element-admin')).toBe(true)
+//     expect(isExternal('github.com/PanJiaChen/vue-element-admin')).toBe(false)
+//     expect(isExternal('/dashboard')).toBe(false)
+//     expect(isExternal('./dashboard')).toBe(false)
+//     expect(isExternal('dashboard')).toBe(false)
+//   })
+// })