Ver Fonte

Merge branch 'master' of http://git.dayaedu.com/molingzhide/dy-admin-manager

lex-xin há 5 anos atrás
pai
commit
2956a476ba

+ 50 - 1
src/api/buildTeam.js

@@ -35,7 +35,7 @@ export function getAddress (data) {
 // 获取所有老师信息
 export function getTeacher (data) {
   return request({
-    url: '/web-server/teacher/queryPage',
+    url: '/web-server/teacher/findTeachers',
     method: 'get',
     params: qs.stringify(data)
   })
@@ -194,4 +194,53 @@ export function removeAllClass (data) {
     data: qs.stringify(data)
 
   })
+}
+
+// 确认是否所有学生和单技能班都被分配完成
+export function checkAllStudent (data) {
+  return request({
+    url: '/web-server/classGroup/findAllClassGroupByMusicGroup',
+    method: 'get',
+    params: data
+
+  })
+}
+
+
+// 获取乐团所有班级
+export function getEveryClass (data) {
+  return request({
+    url: '/web-server/classGroup/findAllClassGroupByMusicGroup',
+    method: 'get',
+    params: data
+  })
+}
+
+// 设置乐团老师
+
+export function setTeamTeacher (data) {
+  return request({
+    url: '/web-server/classGroup/addClassGroupTeacher',
+    method: 'get',
+    params: data
+  })
+}
+
+// // 获取所有的节假日 
+// export function getHolidays (data) {
+//   return request({
+//     url: '/jiari/',
+//     method: 'post',
+//     data: qs.stringify(data)
+//   })
+// }
+
+// 根据合奏班获取合奏班下的所有单技能班
+
+export function getAllSignClass (data) {
+  return request({
+    url: '/web-server/classGroup/findClassGroupAboutMix',
+    method: 'get',
+    params: data
+  })
 }

+ 11 - 2
src/utils/vueFilter.js

@@ -2,10 +2,10 @@ import Vue from 'vue'
 
 // 合并数组
 Vue.filter('joinArray', (value, type) => {
-    if(!type) {
+    if (!type) {
         type = ' '
     }
-    if(typeof value == 'object' && value != null) {
+    if (typeof value == 'object' && value != null) {
         return value.join(type)
     } else {
         return value
@@ -108,4 +108,13 @@ Vue.filter('clockingIn', value => {
         DROP_OUT: "退学"
     }
     return templateStatus[value]
+})
+
+// 时间处理
+Vue.filter('formatTimer', (value) => {
+    if (value) {
+        return value.split(' ')[0]
+    } else {
+        return value
+    }
 })

+ 2 - 2
src/views/buildVip/index.vue

@@ -376,9 +376,9 @@ export default {
 
     })
     // 获取所有老师的接口
-    getTeacher({ subjectId: this.leftForm.subject }).then(res => {
+    getTeacher().then(res => {
       if (res.code == 200) {
-        this.teacherList = res.data.rows;
+        this.teacherList = res.data;
       }
     })
     // 获取课程类型的接口

+ 1 - 1
src/views/teamBuild/components/teamBaseInfo.vue

@@ -399,7 +399,7 @@ export default {
     // 4.获取老师选项卡
     getTeacher({ 'rows': 1000 }).then(res => {
       if (res.code == 200) {
-        this.teacherList = res.data.rows;
+        this.teacherList = res.data;
       }
     })
     // 5.获取教学地点选项卡

+ 252 - 194
src/views/teamBuild/teamSeting/components/coursePlan.vue

@@ -2,22 +2,30 @@
   <div class='course-container'>
     <div class="left">
       <el-form :model="leftFrom"
+               ref='leftFrom'
+               :rules="leftRules"
                :inline="true">
-        <el-form-item label="合奏班">
-          <el-select v-model="leftFrom.all">
-            <el-option label="11"
-                       value='1'></el-option>
+        <el-form-item label="合奏班"
+                      prop='all'>
+          <el-select v-model="leftFrom.all"
+                     @change="changeMixClass">
+            <el-option v-for="(item,index) in maxClassList"
+                       :key='index'
+                       :value="item.id"
+                       :label="item.name"></el-option>
           </el-select>
         </el-form-item>
-        <el-form-item label="排课起始时间">
+        <el-form-item label="排课起始时间"
+                      prop="time">
+          <!-- value-format="yyyy-MM-dd" -->
           <el-date-picker v-model="leftFrom.time"
                           align="right"
                           type="date"
-                          placeholder="选择日期"
-                          :picker-options="pickerOptions">
+                          placeholder="选择日期">
           </el-date-picker>
         </el-form-item>
-        <el-form-item label="排课次数">
+        <el-form-item label="排课次数"
+                      prop="num">
           <el-input type="number"
                     v-model="leftFrom.num"></el-input>
         </el-form-item>
@@ -25,10 +33,13 @@
       <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>
+          <div class="chioseday"
+               v-for="(item,index) in week"
+               :key="index">
+            <el-checkbox :label="index"
+                         v-model="item.isCheck">{{item.name}}</el-checkbox>
             <el-time-select placeholder="起始"
-                            v-model="week.Monday.startTime"
+                            v-model="item.startTime"
                             :picker-options="{
                              start: '06:30',
                              step: '00:05',
@@ -37,137 +48,12 @@
             </el-time-select>
 
             <el-time-select placeholder="结束"
-                            v-model="week.Monday.endTime"
+                            v-model="item.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
+                            minTime: item.startTime
                                             }">
             </el-time-select>
           </div>
@@ -177,22 +63,53 @@
         </div>
         <div class="btnWrap">
           <div class="closeBtn">取消排课</div>
-          <div class="okBtn">一件排课</div>
+          <div class="okBtn"
+               @click="classCard">一件排课</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">
+      <el-table :data='tableList'>
+        <el-table-column label="课次">
+          <template slot-scope="scope">
+            <div>
+              {{ scope.$index+1 }}
+            </div>
+          </template>
+        </el-table-column>
+        <el-table-column prop="dateString"
+                         label="日期"
+                         width="180">
+        </el-table-column>
+        <el-table-column prop="week"
+                         label="星期"
+                         width="180">
+        </el-table-column>
+        <el-table-column prop="type"
+                         label="课程类型"
+                         width="180">
+        </el-table-column>
+        <el-table-column prop="name"
+                         label="课程名称"
+                         width="180">
+        </el-table-column>
+        <el-table-column prop="classTime"
+                         label="上课时间"
+                         width="180">
+        </el-table-column>
+        <el-table-column label="操作"
+                         width="180">
+          <template slot-scope="scope">
+            <div>
+              <el-button type="text">展开</el-button>
+              <el-button type="text">修改</el-button>
+            </div>
+          </template>
+        </el-table-column>
+      </el-table>
+      <div class="btnWrap"
+           style="margin-top:40px;">
         <div class="nextBtn">下一步</div>
         <div class="okBtn">确定</div>
       </div>
@@ -200,7 +117,16 @@
   </div>
 </template>
 <script>
+import { getAllClass, getAllSignClass } from '@/api/buildTeam'
+import axios from 'axios'
+import qs from 'qs'
 export default {
+  props: {
+    teamid: {
+      type: String,
+      required: true
+    }
+  },
   data () {
     return {
       leftFrom: {
@@ -208,65 +134,197 @@ export default {
         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);
-          }
-        }]
-      },
+      tableList: [],
       checkList: [],
-      week: {
-        Monday: {
+      week: [
+        {
           startTime: '',
-          endTime: ''
+          endTime: '',
+          isCheck: false,
+          name: '星期日'
         },
-        Tuesday: {
+        {
           startTime: '',
-          endTime: ''
+          endTime: '',
+          isCheck: false,
+          name: '星期一'
         },
-        Wednesday: {
+        {
           startTime: '',
-          endTime: ''
+          endTime: '',
+          isCheck: false,
+          name: '星期二'
         },
-        Thursday: {
+        {
           startTime: '',
-          endTime: ''
+          endTime: '',
+          isCheck: false,
+          name: '星期三'
         },
-        Friday: {
+        {
           startTime: '',
-          endTime: ''
+          endTime: '',
+          isCheck: false,
+          name: '星期四'
         },
-        Saturday: {
+        {
           startTime: '',
-          endTime: ''
+          endTime: '',
+          isCheck: false,
+          name: '星期五'
         },
-        Sunday: {
+        {
           startTime: '',
-          endTime: ''
+          endTime: '',
+          isCheck: false,
+          name: '星期六'
+        },
+
+      ],
+      weekDay: ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"],
+      maxClassList: [], // 所有的合奏班
+      activeSingleList: [], // 合奏班下的所有单技班
+      isholiday: false,
+      classCardList: [], //这个是传给后台的真正数据集合
+      allChioseDate: [], // 记录所有准备排课的日期
+      holidayList: [],
+      leftRules: {
+        all: [{ required: true, message: '请输选择合奏班', trigger: 'blur' }],
+        time: [{ required: true, message: '请选择排课时间', trigger: 'blur' }],
+        num: [{ required: true, message: '请输入排课次数', trigger: 'blur' }]
+      }
+    }
+  },
+  mounted () {
+    // 根据乐团id 查询 此乐团所有的合奏班
+    getAllClass({ musicGroupId: this.teamid }).then(res => {
+      if (res.code == 200) {
+        this.maxClassList = res.data;
+      }
+    })
+    // getHolidays({ d: '20191016' }).then(res => {
+
+    // })
+    let year = new Date().getFullYear();
+    axios.post('/jiari/', qs.stringify({ d: year })).then(res => {
+      this.holidayList = Object.keys(res.data[year])
+      // this.holidayList = res.data[year]
+      // console.log(this.holidayList)
+    })
+
+  },
+  methods: {
+    classCard () {
+      let flag = false
+      this.$refs['leftFrom'].validate(val => {
+        if (val) {
+          flag = true
         }
-      },
-      isholiday: false
+      })
+      if (!flag) {
+        this.$message.error('请填写必要参数在进行排课')
+        return;
+      }
+
+      let classCount = parseInt(this.leftFrom.num);
+      let date = this.leftFrom.time;
+      let startWeekday = this.leftFrom.time.getDay();
+      // 第一次循环把所有要排的时间记录下来 请求接口 判断是否节假日 
+      while (classCount && classCount > 0) {
+
+        for (let i in this.checkList) {
+          let num; // 下次上课上几天后
+          this.checkList[i] - date.getDay() >= 0 ? num = this.checkList[i] : num = this.checkList[i] - date.getDay() + 7
+          let dataStr = this.getThinkDate(date, num);
+          let monthDay = this.getThinkDate(date, num, 2)
+          if (this.isholiday) {
+            if (this.holidayList.indexOf(monthDay) != -1) {
+              // 这里说明有节假日
+              continue
+            }
+          }
+          let className;
+          this.maxClassList.map(item => {
+            if (item.id == this.leftFrom.all) {
+              className = item.name;
+              return item.name
+            }
+          })
+          // 排的是合奏班 
+          this.tableList.push({
+            'dateString': dataStr,
+            'week': this.week[this.checkList[i]].name,
+            'type': 'SINGLE',
+            'id': this.leftFrom.all,
+            date,
+            'name': className,
+            'classTime': this.week[this.checkList[i]].startTime + '-' + this.week[this.checkList[i]].endTime
+          })
+          // 这里我排单技课
+          for (let j in this.activeSingleList) {
+            this.classCardList.push({
+              'classDate': dataStr,
+              'classGroupId': this.activeSingleList[j].id,
+              'startClassTime': this.week[this.checkList[i]].startTime,
+              'endClassTime': this.week[this.checkList[i]].endTime,
+              'type': 'SINGLE',
+              'mixid': this.activeSingleList[j].mixid
+            })
+          }
+          classCount--
+          if (classCount == 0) break
+        }
+      }
+      // console.log(this.tableList)
+      // 清除现在所选的值
+      this.$refs['leftFrom'].resetFields();
+      this.week = this.$options.data().week;
+      this.checkList = [];
+    },
+    chioseWeek (val) {
+    },
+    getThinkDate (date, num, type = 1) {
+
+      let Stamp = date;
+      Stamp.setDate(date.getDate() + num) // 获取当前月数的第几天
+      // console.log(date.getMonth() + 1)
+      // console.log(Stamp.getMonth() + 1)
+      var year = Stamp.getFullYear(); //获取完整的年份(4位,1970-????)
+      var month = Stamp.getMonth() + 1; //获取当前月份(0-11,0代表1月)
+      var mvar = '';
+      if (month < 10) {
+        mvar = '0' + month;
+      } else {
+        mvar = month + '';
+      }
+      var day = Stamp.getDate();
+      var dvar = '';
+      if (day < 10) {
+        dvar = '0' + day;
+      } else {
+        dvar = day + '';
+      }
+      if (type == 2) {
+        return mvar + dvar;
+      } else {
+        return year + "-" + mvar + '-' + dvar;
+      }
+
+    },
+
+    changeMixClass (val) {
+      // 根据合奏班id获取合奏班下的所有单技班
+      this.activeSingleList = [];
+      getAllSignClass({ musicGroupId: this.teamid, mixClassGroupId: val }).then(res => {
+        if (res.code == 200) {
+          this.activeSingleList = res.data.map(item => {
+            item.mixid = val
+            return item;
+          });
+        }
+      })
     }
-  }
+  },
 
 }
 </script>
@@ -278,8 +336,8 @@ export default {
   flex-direction: row;
   justify-content: flex-start;
   .left {
-    width: 300px;
-    min-width: 300px;
+    width: 330px;
+    min-width: 330px;
     margin-right: 90px;
     .chioseday {
       margin-top: 20px;

+ 79 - 8
src/views/teamBuild/teamSeting/components/setClass.vue

@@ -80,7 +80,8 @@
         <div class="btnWrap">
           <div class="setBtn"
                @click="getNoclassSign">添加</div>
-          <div class="okBtn">下一步</div>
+          <div class="okBtn"
+               @click="setBossTeacher">下一步</div>
         </div>
       </div>
     </div>
@@ -127,7 +128,8 @@
                         prop='name'>
             <el-input v-model="className.name"></el-input>
           </el-form-item>
-          <el-form-item label="已选声部">
+          <el-form-item label="已选声部"
+                        prop="sound">
             <el-input :disabled="true"
                       v-model="className.sound"></el-input>
           </el-form-item>
@@ -170,10 +172,36 @@
                    @click="addAllClass">确 定</el-button>
       </div>
     </el-dialog>
+
+    <el-dialog title="教务老师"
+               width="600px"
+               :visible.sync="teacherVisible">
+      <el-form :inline="true"
+               ref='teacherForm'
+               :model="teacherForm">
+        <el-form-item label="教学主任"
+                      prop='name'
+                      :rules="[{required: true, message: '请选择教学主任', trigger: 'blur'}]">
+          <el-select v-model="teacherForm.name"
+                     clearable>
+            <el-option v-for="(item,index) in teacherList"
+                       :key="index"
+                       :value="item.id"
+                       :label="item.username"></el-option>
+          </el-select>
+        </el-form-item>
+      </el-form>
+      <div slot="footer"
+           class="dialog-footer">
+        <el-button @click="teacherVisible = false">取 消</el-button>
+        <el-button type="primary"
+                   @click="gotoNext">确 定</el-button>
+      </div>
+    </el-dialog>
   </div>
 </template>
 <script>
-import { getTeamRecruit, getSingleClass, getNoClassStudent, addSingleClass, removeSingleClass, addAllClass, getAllClass, findNoClassSingle, removeAllClass } from "@/api/buildTeam"
+import { getTeamRecruit, getSingleClass, getNoClassStudent, addSingleClass, removeSingleClass, addAllClass, getAllClass, findNoClassSingle, removeAllClass, getTeacher, checkAllStudent } from "@/api/buildTeam"
 export default {
   props: {
     teamid: {
@@ -185,6 +213,7 @@ export default {
     return {
       classVisible: false, // 班级设置弹窗
       allVisible: false, // 合奏班弹窗设置
+      teacherVisible: false,
       leftList: [],
       centerList: [],
       rightList: [],
@@ -220,20 +249,30 @@ export default {
           { min: 1, max: 10, message: '长度在 1 到 10 个字符', trigger: 'blur' }
         ]
       },
-      NoClassSingle: []
+      NoClassSingle: [],
+      teacherList: [],
+      teacherForm: {
+        name: ''
+      }
 
     }
   },
   mounted () {
     getTeamRecruit({ musicGroupId: this.teamid }).then(res => {
       // 获取乐团声部集合
-      console.log(res);
       if (res.code == 200) {
         this.leftList = res.data;
       }
     })
     this.getSingleClass();
     this.getAllClass();
+    // 获取所有老师的列表
+    getTeacher({ organId: this.$store.getters.organ, rows: 1000 }).then(res => {
+      if (res.code == 200) {
+        this.teacherList = res.data;
+        // console.log(this.teacherList)
+      }
+    })
 
   }, methods: {
     getAllClass () {
@@ -339,7 +378,12 @@ export default {
               // 成功刷新班级列表 清空数据
               this.$message.success('添加成功');
               this.classVisible = false;
+              this.maskList.subjectCheckList = [];
+              this.studentsGroup = [];
+              this.activeStudents = [];
+              this.$refs['className'].resetFields();
               this.getSingleClass();
+
             }
           })
         } else {
@@ -373,9 +417,11 @@ export default {
         classGroupIds: this.allMaskList.signClassList.join(',')
       }).then(res => {
         if (res.code == 200) {
-          this.$message.success('恭喜您创建成功')
+          this.$message.success('恭喜您创建成功');
+
           this.allVisible = false;
           this.getAllClass();
+          this.$refs['allRules'].resetFields();
         }
       })
     },
@@ -387,9 +433,34 @@ export default {
           this.getAllClass();
         }
       });
-    }
-  },
+    },
+    setBossTeacher () {
+      this.teacherVisible = true;
 
+    },
+    gotoNext () {
+      // 跳转到下一步
+      this.$refs['teacherForm'].validate(res => {
+        if (res) {
+          // 发请求
+
+          checkAllStudent({ musicGroupId: this.teamid, teacherId: this.teacherForm.name }).then(res => {
+            if (res.code == 200) {
+              this.$refs['teacherForm'].resetFields()
+              this.teacherVisible = false;
+              this.$emit('gotoNav', 1);
+            }
+
+          }).catch(res => {
+            this.teacherVisible = false;
+            this.$refs['teacherForm'].resetFields();
+            console.log('验证失败')
+          })
+        }
+
+      });
+    },
+  }
 }
 </script>
 <style lang="scss" scoped>

+ 152 - 48
src/views/teamBuild/teamSeting/components/setTeacher.vue

@@ -1,28 +1,31 @@
 <template>
   <div class='set-teacher'>
-    <div class="allClassLis">
-      <div class="allClassBtn">
-        合奏1班
+    <!-- <div class="allClassLis">
+      <div class="allClassBtn"
+           @click="getAllClassInfo(item.id)"
+           :class="activeAllClass==item.id?'active':''"
+           v-for="(item,index) in allList"
+           :key='index'>
+        {{ item.name }}
       </div>
-      <div class="allClassBtn active">
-        合奏2班
-      </div>
-    </div>
+    </div> -->
     <div class="tableWrap">
       <el-table :data='singinList'
                 :header-cell-style="{background:'#EDEEF0',color:'#444'}">
         <el-table-column label="单技课班级名称"
                          prop='name'
-                         width="180px">
-
+                         width="160px">
         </el-table-column>
         <el-table-column label="主教老师"
                          width="200px">
           <template slot-scope="scope">
             <div>
-              <el-select v-model="scope.row.coreTeacher">
-                <el-option label="张老师"
-                           value="1"></el-option>
+              <el-select v-model="scope.row.teacherList.coreTeacher"
+                         v-if='scope.row.teacherList'>
+                <el-option v-for='(item,index) in teacherList'
+                           :label="item.username"
+                           :key='index'
+                           :value="item.id"></el-option>
               </el-select>
             </div>
           </template>
@@ -32,19 +35,14 @@
           <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>
+                         v-if='scope.row.teacherList'
+                         multiple
+                         v-model="scope.row.teacherList.assistant">
+                <el-option v-for='(item,index) in teacherList'
+                           :label="item.username"
+                           :key='index'
+                           :value="item.id"></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>
@@ -59,12 +57,15 @@
 
         </el-table-column>
         <el-table-column label="主教老师"
-                         width="160px">
+                         width="200px;">
           <template slot-scope="scope">
             <div>
-              <el-select v-model="scope.row.coreTeacher">
-                <el-option label="张老师"
-                           value="1"></el-option>
+              <el-select v-model="scope.row.teacherList.coreTeacher"
+                         v-if='scope.row.teacherList'>
+                <el-option v-for='(item,index) in teacherList'
+                           :label="item.username"
+                           :key='index'
+                           :value="item.id"></el-option>
               </el-select>
             </div>
           </template>
@@ -74,19 +75,14 @@
           <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>
+                         multiple
+                         v-if='scope.row.teacherList'
+                         v-model="scope.row.teacherList.assistant">
+                <el-option v-for='(item,index) in teacherList'
+                           :label="item.username"
+                           :key='index'
+                           :value="item.id"></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>
@@ -94,22 +90,127 @@
     </div>
     <div class="footer">
       <div class="reset">返回修改</div>
-      <div class="next">下一步</div>
+      <div class="next"
+           @click="gotoNext">下一步</div>
     </div>
   </div>
 </template>
 <script>
+import { getEveryClass, getTeacher, setTeamTeacher } from '@/api/buildTeam'
 export default {
+  props: {
+    teamid: {
+      type: String,
+      required: true
+    }
+  },
   data () {
     return {
-      singinList: [{
-        name: '长笛',
-        coreTeacher: '', // 主教
-        assistant: ['1', '2', '3'] // 助教
-      }],
-      allList: []
+      singinList: [],
+      allList: [],
+      teacherList: [],
+      classGroupTeacherMapperList: []
+      // activeAllClass: ''
     }
-  }
+  },
+  mounted () {
+    // 该乐团里所有的单技班与合奏班
+    this.getEveryClass();
+    // 获取所有的老师列表
+    getTeacher().then(res => {
+      if (res.code == 200) {
+        this.teacherList = res.data;
+      }
+    })
+
+  },
+  methods: {
+    // 根据合奏班id获取合奏班信息
+    getEveryClass () {
+      getEveryClass({ musicGroupId: this.teamid }).then(res => {
+        let singinList = [];
+        let allList = [];
+        res.data.map(item => {
+          item.teacherList = {
+            coreTeacher: '',
+            assistant: []
+          }
+          if (item.classGroupTeacherMapperList && item.classGroupTeacherMapperList.length > 0) {
+            //循环老师列表分配到不同的
+            for (let i in item.classGroupTeacherMapperList) {
+              if (item.classGroupTeacherMapperList[i].teacherRole == 'BISHOP') {
+                item.teacherList.coreTeacher = item.classGroupTeacherMapperList[i].userId
+              } else if (item.classGroupTeacherMapperList[i].teacherRole == 'TEACHING') {
+                item.teacherList.assistant.push(item.classGroupTeacherMapperList[i].userId)
+              }
+            }
+          }
+          if (item.type == 'NORMAL') {
+            singinList.push(item)
+          }
+          if (item.type == 'MIX') {
+            allList.push(item)
+          }
+        })
+        this.singinList = singinList;
+        this.allList = allList;
+      })
+    },
+    gotoNext () {
+      // 点击下一步
+
+      let isTeacher = true;
+      let isTeachers = []
+      // 验证单技班主教老师是否指认
+      for (let i in this.singinList) {
+
+        if (this.singinList[i].teacherList.coreTeacher == '') {
+          isTeachers.push(false)
+        }
+      }
+      for (let j in this.allList) {
+        if (this.allList[j].teacherList.coreTeacher == '') {
+          isTeachers.push(false)
+        }
+      }
+
+      isTeachers.filter(item => {
+        isTeacher = isTeacher && item
+      })
+      if (!isTeacher) {
+        this.$message.error('请确定每个班级都有主教老师')
+        return;
+      }
+      // 开始拼接数据
+      this.addDate(this.singinList);
+      this.addDate(this.allList);
+      console.log(this.classGroupTeacherMapperList);
+      setTeamTeacher(this.classGroupTeacherMapperList).then(res => {
+        if (res.code == 200) {
+          this.classGroupTeacherMapperList = [];
+        }
+      })
+    },
+    addDate (arr) {
+      for (let i in arr) {
+        let obj = {}
+        obj.classGroupId = arr[i].id;
+        obj.musicGroupId = this.teamid;
+        obj.teacherRole = 'BISHOP';
+        obj.userId = arr[i].teacherList.coreTeacher;
+        this.classGroupTeacherMapperList.push(obj)
+        for (let j in arr[i].teacherList.assistant) {
+          let obj = {}
+          obj.classGroupId = arr[i].id;
+          obj.musicGroupId = this.teamid;
+          obj.teacherRole = 'TEACHING';
+          obj.userId = arr[i].teacherList.assistant[j];
+          this.classGroupTeacherMapperList.push(obj)
+        }
+      }
+    }
+  },
+
 }
 </script>
 <style lang="scss" scope>
@@ -178,4 +279,7 @@ export default {
     }
   }
 }
+.tableClass.el-select {
+  width: 100% !important;
+}
 </style>

+ 15 - 18
src/views/teamBuild/teamSeting/index.vue

@@ -55,23 +55,17 @@
     <!-- 下面显示的内容 -->
     <div class="stepcontent">
       <div v-show='activeIndex==0'>
-        <classSeting :teamid='id' />
+        <classSeting :teamid='id'
+                     @gotoNav='gotoNav' />
       </div>
-      <div v-show='activeIndex==1'>
-        <keep-alive>
-          <teacherSeting />
-        </keep-alive>
+      <div v-if='activeIndex==1'>
+        <teacherSeting :teamid='id' />
       </div>
-      <div v-show='activeIndex==2'>
-        <keep-alive>
-          <coursePlan />
-        </keep-alive>
+      <div v-if='activeIndex==2'>
+        <coursePlan :teamid='id' />
       </div>
-      <div v-show='activeIndex==3'>
-        <keep-alive>
-          <salarySet />
-        </keep-alive>
-
+      <div v-if='activeIndex==3'>
+        <salarySet />
       </div>
     </div>
   </div>
@@ -90,7 +84,7 @@ export default {
   },
   data () {
     return {
-      activeIndex: '0',
+      activeIndex: '2',
       stepImgs: {
         nol: require('@/assets/images/base/step-arrow-active.png'),
         active: require('@/assets/images/base/step-arrow.png')
@@ -104,9 +98,12 @@ export default {
     this.id = this.$route.query.id || '191015094822001';
   },
   mounted () {
-
-
-  }
+  },
+  methods: {
+    gotoNav (val) {
+      this.activeIndex = val;
+    }
+  },
 }
 </script>
 <style lang="scss" scoped>

+ 23 - 10
src/views/teamDetail/teamList.vue

@@ -81,7 +81,7 @@
                            label="乐团名称">
           </el-table-column>
           <el-table-column align='center'
-                           prop="schoolId"
+                           prop="schoolName"
                            max-width='274'
                            label="学校名称">
           </el-table-column>
@@ -90,32 +90,45 @@
                            label="乐团状态">
           </el-table-column>
           <el-table-column align='center'
-                           prop="chargeTypeId"
+                           prop="chargeTypeName"
                            label="收费类型">
           </el-table-column>
-          <el-table-column prop="educationalTeacherId"
+          <el-table-column prop="educationalTeacherName"
                            align='center'
                            label="教务老师">
           </el-table-column>
-          <el-table-column prop="captain"
+          <el-table-column prop="teamTeacherName"
                            align='center'
-                           label="乐团团长">
+                           label="教学主管">
           </el-table-column>
-          <el-table-column prop="captain"
+          <el-table-column prop="improventClassesNum"
                            align='center'
                            label="成团人数">
           </el-table-column>
-          <el-table-column prop="readers"
+          <el-table-column prop="payNum"
                            align='center'
                            label="在读人数">
           </el-table-column>
-          <el-table-column prop="course"
+          <!-- <el-table-column prop="course"
                            align='center'
                            label="当前课时">
-          </el-table-column>
-          <el-table-column prop="timer"
+          </el-table-column> -->
+          <el-table-column prop="createTime"
                            align='center'
+                           label="申请时间">
+            <template slot-scope="scope">
+              <div>
+                {{ scope.row.createTime | formatTimer}}
+              </div>
+            </template>
+          </el-table-column>
+          <el-table-column align='center'
                            label="成团时间">
+            <template slot-scope="scope">
+              <div>
+                {{ scope.row.billStartDate | formatTimer}}
+              </div>
+            </template>
           </el-table-column>
           <el-table-column align='center'
                            width='200px'

+ 1 - 1
src/views/vipClass/vipList.vue

@@ -189,7 +189,7 @@ export default {
       // 'organId': this.$store.getters.organ,
       getVipList({ 'page': this.rules.page, 'rows': this.rules.limit, }).then(res => {
         if (res.code == 200) {
-          this.tableData = res.data.rows
+          this.tableData = res.data
         }
       })
     },

+ 4 - 0
vue.config.js

@@ -60,6 +60,10 @@ module.exports = {
           '^web-server': ''
         }
       },
+      '/jiari': {
+        target: 'http://tool.bitefu.net',
+        changeOrigin: true,
+      }
     },
   },
   configureWebpack: {