<template>
  <!-- m-container -->
  <div class="">
    <!-- <h2>
      <div class='squrt'></div>
      班级调整
    </h2> -->
    <div class="m-core">
      <el-form :inline="true"
               :model="topForm">
        <el-form-item label="班级类型">
          <el-select v-model="topForm.classType"
                     clearable
                     filterable
                     @change="changeMixClass">
            <el-option v-for='(item,index) in classTypeList'
                       :key="index"
                       :label="item.label"
                       :value="item.value"></el-option>
          </el-select>
        </el-form-item>
      </el-form>
      <div class="tableWrap"
           style="">
        <el-table :data='activeSingleList'
                  style=""
                  :header-cell-style="{background:'#EDEEF0',color:'#444'}">
          <el-table-column align='center'
                           prop="name"
                           label="班级名称">
          </el-table-column>
          <el-table-column align='center'
                           prop="type"
                           label="班级类型">
            <template slot-scope="scope">
              <div>
                {{ scope.row.type | classType }}
              </div>
            </template>
          </el-table-column>
          <el-table-column align='center'
                           prop="studentNum"
                           label="班级人数">
          </el-table-column>
          <el-table-column align='center'
                           prop=""
                           label="主教老师">
            <template slot-scope="scope">
              <div v-if="scope.row.classGroupTeacherMapperList">
                <p v-for="(item,index) in scope.row.classGroupTeacherMapperList"
                   v-if="item.teacherRole == 'BISHOP'"
                   :key='index'>{{item.userName}}</p>

              </div>
            </template>
          </el-table-column>
          <el-table-column align='center'
                           label="助教老师">
            <template slot-scope="scope">
              <div v-if="scope.row.classGroupTeacherMapperList">
                <p v-for="(item,index) in scope.row.classGroupTeacherMapperList"
                   v-if="item.teacherRole == 'TEACHING'"
                   :key='index'>{{item.userName}}</p>

              </div>
            </template>
          </el-table-column>
          <el-table-column align='center'
                           label="是否排课">
            <template slot-scope="scope">
              <div>
                <p v-if="scope.row.totalClassTimes > 0"> 是</p>
                <p v-if="scope.row.totalClassTimes <= 0"> 否</p>
              </div>
            </template>
          </el-table-column>
          <el-table-column align='center'
                           width="400px"
                           label="操作">
            <template slot-scope="scope">
              <div>
                <!-- v-if="scope.row.type !='MIX'" -->
                <el-button type="text"
                           @click="resetClass(scope.row)">学员调整</el-button>
                <el-button type="text"
                           @click="classAdjustment(scope.row)">班级调整</el-button>
                <!--<el-button type="text"
                           @click="recourse(scope.row)">重新排课</el-button> -->
                <el-popover placement="top"
                            width="160"
                            :ref="scope.$index">
                  <p>确定删除?</p>
                  <div style="text-align: right; margin: 0">
                    <el-button size="mini"
                               type="text"
                               @click="scope._self.$refs[scope.$index].doClose()">取消</el-button>
                    <el-button type="primary"
                               size="mini"
                               @click="removeClass(scope)">确定</el-button>
                  </div>
                  <!-- v-if="scope.row.type !='MIX'" -->
                  <el-button type="text"
                             slot="reference">删除</el-button>
                </el-popover>
              </div>
            </template>
          </el-table-column>
        </el-table>
        <div class="floor">
          <div class="add"
               @click="temporary">新建临时班</div>
          <div class='add'
               @click="addNewClass('NORMAL')">新建单技班</div>
          <div class='add'
               @click="addNewClass('MIX')">新建合奏班</div>
          <div class='add'
               @click="addNewClass('HIGH')">基础技能班</div>
        </div>
      </div>
    </div>
    <!-- 学员选择 -->
    <el-dialog title="学员选择"
               width="700px"
               :visible.sync="studentVisible"
               :modal-append-to-body="false">
      <div class="studentMask">
        <div class="left">
          <div class="wrap">
            <el-input placeholder="请输入班级名称"
                      :disabled="!isNewClass"
                      v-model="className"></el-input>
          </div>
          <div class="chioseStudentList">
            <h4 style="padding-left:10px;">当前已选学员</h4>
            <div class="studentItem"
                 v-for="(item,index) in activeListStudent"
                 :key="index">
              {{ item.name }}
              <el-popover v-if="!isNewClass"
                          placement="top"
                          v-model="item.isVisible"
                          width="160">
                <p>确定删除?</p>
                <div style="text-align: right; margin: 0">
                  <el-button size="mini"
                             type="text"
                             @click="item.isVisible = false">取消</el-button>
                  <el-button type="primary"
                             size="mini"
                             @click="removeStudent(item)">确定</el-button>
                </div>
                <el-button type="text"
                           slot="reference">删除</el-button>
              </el-popover>
              <el-button v-if="isNewClass"
                         type='text'
                         @click="temporaryRemoveStudent(item)">删除</el-button>
            </div>
          </div>
        </div>
        <div class="right">
          <!--  multiple
                     collapse-tags -->
          <el-select v-if="isSearch"
                     v-model="activeChioseSound"
                     style="width:180px"
                     @change="searchStudent"
                     clearable
                     filterable
                     placeholder="声部选择">
            <el-option v-for='(item,index) in soundList'
                       :key='index'
                       :label="item.name"
                       :value="item.id"></el-option>
          </el-select>
          <!-- <el-button v-if="isSearch"
                     type="danger"
                     style="margin-left:20px;"
                     @click="searchStudent">搜索</el-button> -->

          <!--   列表开始  -->
          <div class="tableList">
            <el-table tooltip-effect="dark"
                      v-if="!isNewClass"
                      style="width: 100%; margin-top:10px;"
                      :data='studentList'
                      ref='studentList'
                      @selection-change="SelectionStudent">
              <el-table-column type="selection"
                               align='center'
                               width="55">
              </el-table-column>
              <el-table-column prop="name"
                               align='center'
                               width="120"
                               label="姓名">
              </el-table-column>
              <el-table-column prop="gender"
                               align='center'
                               width="100"
                               label="性别">
                <template slot-scope="scope">
                  <div>
                    {{ scope.row.gender | sex }}
                  </div>
                </template>
              </el-table-column>
              <el-table-column prop="subjectName"
                               width="100"
                               align='center'
                               label="学员声部">
              </el-table-column>
            </el-table>
            <!-- 临时调整table -->
            <el-table tooltip-effect="dark"
                      v-if="isNewClass"
                      style="width: 100%; margin-top:10px;"
                      :data='studentList'
                      ref='temporaryStudentList'
                      @selection-change="NewselectionStudent">
              <el-table-column type="selection"
                               align='center'
                               width="55">
              </el-table-column>
              <el-table-column prop="name"
                               align='center'
                               width="120"
                               label="姓名">
              </el-table-column>
              <el-table-column prop="gender"
                               align='center'
                               width="100"
                               label="性别">
                <template slot-scope="scope">
                  <div>
                    {{ scope.row.gender | sex }}
                  </div>
                </template>
              </el-table-column>
              <el-table-column prop="subjectName"
                               width="100"
                               align='center'
                               label="学员声部">
              </el-table-column>
            </el-table>
          </div>
        </div>
      </div>
      <div slot="footer"
           class="dialog-footer">
        <el-button @click="studentVisible = false">取 消</el-button>
        <!-- 班级学员修改 -->
        <el-button type="primary"
                   v-if="!isNewClass"
                   @click="addSomeStudent">确 定</el-button>
        <!-- 临时调整或者新建班级 -->
        <el-button type="primary"
                   v-if="isNewClass"
                   @click="setInfoMsg">确 定</el-button>
      </div>
    </el-dialog>
    <!-- 老师以及课程设置 -->
    <el-dialog title="班级设置"
               width="700px"
               :visible.sync="infoVisible"
               :modal-append-to-body="false">
      <el-form :inline="true"
               :model='teacherForm'
               ref='teacherForm'
               :rules="teacherRules"
               label-position='right'
               label-width="100px;">
        <!-- <el-form-item label="合奏班"
                      v-if='!isTemporary&&activeType=="NORMAL"'
                      prop="mixClassGroupId">
          <el-select v-model="teacherForm.mixClassGroupId">
            <el-option v-for="(item,index) in maxClassList"
                       :label="item.name"
                       :key="index"
                       :value="item.id"></el-option>
          </el-select>
        </el-form-item> -->
        <el-form-item label="调整方式"
                      v-if="!isNewClass"
                      prop="isAdd">
          <el-radio v-model="teacherForm.isAdd"
                    label="new">班级加课</el-radio>
          <el-radio v-model="teacherForm.isAdd"
                    label="renew">重新排课</el-radio>
        </el-form-item>
        <br>
        <el-form-item label="主教老师"
                      prop='coreTeacher'>
          <el-select v-model="teacherForm.coreTeacher"
                     clearable
                     filterable>
            <el-option v-for="(item,index) in teacherList"
                       :key="index"
                       :label="item.realName"
                       :value="item.id"></el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="助教老师"
                      prop="assistant">
          <el-select v-model="teacherForm.assistant"
                     filterable
                     clearable
                     @change="setAssistant"
                     multiple>
            <el-option v-for="(item,index) in cooperationList"
                       :key="index"
                       :label="item.realName"
                       :value="item.id"></el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="课程类型"
                      prop="courseType">
          <el-select v-model="teacherForm.courseType"
                     clearable
                     filterable>
            <el-option v-for="(item,index) in courseTypeList"
                       :key="index"
                       :value="item.value"
                       :label="item.label"></el-option>
          </el-select>
        </el-form-item>
        <br>
        <el-form-item label="排课次数"
                      prop="courseNum">
          <el-input type='number'
                    v-model="teacherForm.courseNum"></el-input>
        </el-form-item>
        <el-form-item label="排课起始时间"
                      prop="courseTime">
          <el-date-picker v-model="teacherForm.courseTime"
                          style="width:200px!important;"
                          type="date"
                          value-format="yyyy-MM-dd"
                          placeholder="选择日期">
          </el-date-picker>
          <el-checkbox style='margin-left:10px;'
                       v-model="teacherForm.checked">是否跳过节假日</el-checkbox>
        </el-form-item>
      </el-form>
      <div class="WeekWrap">
        <h3 style="margin-bottom:20px;">循环次数 <el-button type="text"
                     style='margin-left:10px;'
                     @click="addWeek">添加</el-button>
        </h3>
        <div class="countWrap"
             style="margin-bottom:10px;">
          <div class="countItem"
               style="margin-bottom:20px;"
               v-for="(item,index) in weekList"
               :key="index">
            <span>循环周期: </span>
            <el-select v-model="item.dayOfWeek"
                       clearable
                       filterable>
              <el-option v-for="(item,index) in weekDateList"
                         :key='index'
                         :label="item.label"
                         :value="item.value"></el-option>
            </el-select>
            <span>开始时间</span>
            <el-time-select placeholder=""
                            v-model="item.startClassTime"
                            :picker-options="{
                               start: '04:30',
                               step: '00:05',
                               end: '23:55'
            }">
            </el-time-select>
            <span>结束时间</span>
            <el-time-select placeholder=""
                            v-model="item.endClassTime"
                            :picker-options="{
                              start: '04:30',
                              step: '00:05',
                              end: '23:55',
                              minTime:item.startClassTime
            }">
            </el-time-select>
            <el-button type="danger"
                       @click="removeWeek(item)"
                       icon="el-icon-delete"
                       circle></el-button>
          </div>
        </div>

      </div>
      <div slot="footer"
           class="dialog-footer">
        <!-- 1为临时班级 -->
        <el-button type="primary"
                   v-if="isTemporary&&isNewClass"
                   @click="submitTemporary(1)">确 定</el-button>
        <!-- 2为新增班级 -->
        <el-button type="primary"
                   v-if="!isTemporary&&isNewClass"
                   @click="submitTemporary(2)">确 定</el-button>
        <!-- 修改班级信息 -->
        <el-button type="primary"
                   v-if="!isNewClass"
                   @click="submitTemporary(3)">确 定</el-button>
      </div>
    </el-dialog>
    <!-- 新增合奏班 -->
    <el-dialog title="新增合奏班"
               width="700px"
               :visible.sync="MixVisible"
               :modal-append-to-body="false">
      <div class="studentMask">
        <div class="left">
          <div class="wrap">
            <!-- :disabled="!isNewClass" -->
            <el-input placeholder="请输入合奏班名称"
                      v-model="className"></el-input>
          </div>
          <div class="chioseStudentList">
            <h4 style="padding-left:10px;">当前已选学生</h4>
            <div class="studentItem"
                 v-for="(item,index) in activeListStudent"
                 :key="index">
              {{ item.name }}
              <el-button type='text'
                         @click="removeSiginforMix(item)">删除</el-button>
            </div>
          </div>
        </div>
        <div class="right">
          <!--   列表开始  -->
          <div class="tableList">
            <el-table tooltip-effect="dark"
                      style="width: 100%; margin-top:10px;"
                      :data='singleList'
                      ref='mixList'
                      @selection-change="SelectionMix">
              <el-table-column type="selection"
                               align='center'
                               width="55">
              </el-table-column>
              <el-table-column prop="name"
                               align='center'
                               width="120"
                               label="姓名">
              </el-table-column>
              <el-table-column prop="gender"
                               align='center'
                               width="100"
                               label="性别">
                <template slot-scope="scope">
                  <div>
                    {{ scope.row.gender | sex }}
                  </div>
                </template>
              </el-table-column>
              <el-table-column prop="subjectName"
                               width="120"
                               align='center'
                               label="学员声部">
              </el-table-column>
            </el-table>
          </div>
        </div>
      </div>
      <div slot="footer"
           class="dialog-footer">
        <el-button @click="studentVisible = false">取 消</el-button>
        <!-- 班级学员修改 -->
        <el-button type="primary"
                   v-if="!isNewClass"
                   @click="addSomeStudent">确 定</el-button>
        <!-- 临时调整或者新建班级 -->
        <el-button type="primary"
                   v-if="isNewClass"
                   @click="setInfoMsg">确 定</el-button>
      </div>
    </el-dialog>
    <!-- 班级调整 -->
    <!-- <el-dialog title="班级调整"
               width="500px"
               :visible.sync="resetClassVisible"
               :modal-append-to-body="false">
      <el-form :model="resetClassForm"
               class="resetClassForm">
        <el-form-item label="主教老师">
          <el-select v-model="resetClassForm.coreTeacher">
            <el-option v-for="(item,index) in teacherList"
                       :key="index"
                       :label="item.realName"
                       :value="item.id"></el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="助教老师">
          <el-select v-model="resetClassForm.assistant"
                     filterable
                     @change="setAssistant"
                     multiple>
            <el-option v-for="(item,index) in cooperationList"
                       :key="index"
                       :label="item.realName"
                       :value="item.id"></el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="开始时间">
          <el-time-select placeholder="开始时间"
                          v-model="resetClassForm.startTime"
                          :picker-options="{
                            start: '06:30',
                            step: '00:05',
                            end: '23:30'
                            }">
          </el-time-select>
        </el-form-item>
        <el-form-item label="结束时间">
          <el-time-select placeholder="结束时间"
                          v-model="resetClassForm.endTime"
                          :picker-options="{
                            start: '06:30',
                            step: '00:05',
                            end: '23:30',
                            minTime:resetClassForm.startTime
                            }">
          </el-time-select>
        </el-form-item>
      </el-form>
      <div slot="footer"
           class="dialog-footer">
        <el-button @click="resetClassVisible = false">取 消</el-button>
        <el-button type="primary"
                   @click="">确 定</el-button>
      </div>
    </el-dialog> -->
    <!-- 重新排课 -->
    <!-- <el-dialog title="重新排课"
               width="700px"
               :visible.sync="resetCourseVisible"
               :modal-append-to-body="false">
      <el-form :model="recourseForm"
               label-width="120px"
               label-position="right">
        <p style="border-bottom:1px solid #ccc; padding-bottom:10px; font-size:16px; margin-bottom:30px;">上课时间设置</p>
        <el-form-item label="课程类型">
          <el-select v-model="recourseForm.courseType">
            <el-option v-for="(item,index) in courseTypeList"
                       :key="index"
                       :value="item.value"
                       :label="item.label"></el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="排课起始时间">
          <el-date-picker v-model="recourseForm.courseTime"
                          style="width:200px;"
                          type="date"
                          value-format="yyyy-MM-dd"
                          placeholder="选择日期">
          </el-date-picker>
          <el-checkbox style='margin-left:10px;'
                       v-model="recourseForm.checked">是否跳过节假日</el-checkbox>
        </el-form-item>
      </el-form>
      <div class="WeekWrap">
        <p style="border-bottom:1px solid #ccc; padding-bottom:10px; font-size:16px; margin-bottom:30px;">
          循环次数 <el-button type="text"
                     style='margin-left:10px;'
                     @click="addWeek">添加</el-button>
        </p>
        <div class="countWrap"
             style="margin-bottom:10px;">
          <div class="countItem"
               style="margin-bottom:20px;"
               v-for="(item,index) in weekList"
               :key="index">
            <span>循环周期: </span>
            <el-select v-model="item.dayOfWeek">
              <el-option v-for="(item,index) in weekDateList"
                         :key='index'
                         :label="item.label"
                         :value="item.value"></el-option>
            </el-select>
            <span>开始时间</span>
            <el-time-select placeholder=""
                            v-model="item.startClassTime"
                            :picker-options="{
                               start: '08:30',
                               step: '00:05',
                               end: '23:55'
            }">
            </el-time-select>
            <span>结束时间</span>
            <el-time-select placeholder=""
                            v-model="item.endClassTime"
                            :picker-options="{
                              start: '08:30',
                              step: '00:05',
                              end: '23:55',
                              minTime:item.startClassTime
            }">
            </el-time-select>
            <el-button type="danger"
                       @click="removeWeek(item)"
                       icon="el-icon-delete"
                       circle></el-button>
          </div>
        </div>
      </div>
      <div slot="footer"
           class="dialog-footer">
        <el-button @click="resetCourseVisible = false">取 消</el-button>
        <el-button type="primary"
                   @click="">确 定</el-button>
      </div>
    </el-dialog> -->
  </div>
</template>
<script>
import { getAllClass, getAllSignClassandTeacher, getAllSignClass, removeSingleClass, getNoClassStudentAll, findSound, teamSoundStudent, findMusicGroupClassTeacher, revisionClassGroup, revisionAddClassGroup, getEmployeeOrgan, getTeacher, findNoClassSingle, getMusicGroupStuNoClassType, classGroupUpdate, getTeamBaseInfo } from '@/api/buildTeam'
import { getClassAllStudent, removeStudents, addStudents } from '@/api/studentManager'
import { queryEmployByOrganId } from '@/api/systemManage'

import axios from 'axios'
import qs from 'qs'
export default {
  data () {
    return {
      teamid: '',
      topForm: {
        classType: ''
      },
      tableList: [],
      maxClassList: [],
      activeSingleList: [],
      resetCourseVisible: false, // 重新排课弹窗
      resetClassVisible: false, // 班级调整弹窗
      studentVisible: false,
      MixVisible: false,// 新增合奏班弹窗
      activeListStudent: [], // 当前选中的学生列表
      activeChioseSound: '', //选择的声部
      chioseSoundList: [], //当前的所有声部
      studentList: [], //列表里的学生集合
      activeMixClass: '', // 选中的合奏班
      chioseStudent: [],// 勾选的学生信息
      isNewClass: false, // 是否为新建班级
      isSearch: false, // 是否需要搜索
      isTemporary: false, // 是否为临时班级
      className: '', // 班级名称
      activeClass: '', // 当前操作的班级
      soundList: [],
      infoVisible: false, // 判断是否需要显示老师设置
      teacherForm: {
        isAdd: null,
        coreTeacher: '',
        assistant: [],
        courseType: '',
        courseTime: '',
        checked: false,
        courseNum: '',
        mixClassGroupId: ''
      },
      teacherRules: {
        isAdd: [{ required: true, message: '请选择调整类型' }],
        coreTeacher: [{ required: true, message: '请选择主教老师' }],
        courseType: [{ required: true, message: '请选择上课类型' }],
        courseTime: [{ required: true, message: '请选择开始时间' }],
        courseNum: [{ required: true, message: '请输入排课次数' }],
        mixClassGroupId: [{ required: true, message: '请选择合奏班' }]
      },
      weekList: [{
        week: '',
        startTime: '',
        endTime: '',
        id: new Date()
      }],
      teacherList: [], // 存储的老师列表
      courseTypeList: [
      ],
      weekDateList: [
        { value: '1', label: '星期一' },
        { value: '2', label: '星期二' },
        { value: '3', label: '星期三' },
        { value: '4', label: '星期四' },
        { value: '5', label: '星期五' },
        { value: '6', label: '星期六' },
        { value: '7', label: '星期日' },
      ],
      // 班级类型
      classTypeList: [
        { value: 'NORMAL', label: '单技班' },
        { value: 'MIX', label: '合奏班' },
        { value: 'HIGH', label: '基础技能班' },
        { value: 'SNAP', label: '临时班' },
      ],
      cooperationList: [],
      singleList: [],
      activeSingleLists: [],
      activeType: '',
      resetClassForm: { // 班级调整form对象
        startTime: '',
        endTime: '',
        assistant: [],
        coreTeacher: ''
      },
      recourseForm: {
        courseType: '',
        checked: false,
        courseTime: '',
        courseNum: ''
      },
      organId: ''
    }
  },
  created () {
    this.teamid = this.$route.query.id;
    // 根据乐团id获取乐团所属分部
    getTeamBaseInfo({ musicGroupId: this.teamid }).then(res => {
      if (res.code == 200) {
        this.organId = res.data.musicGroup.organId
        getTeacher({ organId: this.organId }).then(res => {
          if (res.code == 200) {
            this.cooperationList = res.data;
            this.teacherList = res.data;
          }
        })

        // queryEmployByOrganId({ organId: this.organId, rows: 10000 }).then(res => {
        //   if (res.code == 200) {

        //   }
        // })

      }
    })

  },
  mounted () {
    sessionStorage.setItem('resetCode', 3)
    // // 获取乐团下未分班的单技班
    // findNoClassSingle({ musicGroupId: this.teamid }).then(res => {
    //   if (res.code == 200) {
    //     this.singleList = res.data;
    //   }
    // })
    // getMusicGroupStuNoClassType
    // 获取合奏班下
    // 1.获取乐团下所有的合奏班
    // 2.根据合奏班获取所有的单技班
    // 3.根据乐团id 查询 此乐团所有的合奏班
    // 4.获取当年的所有节假日
    getAllClass({ musicGroupId: this.teamid }).then(res => {
      if (res.code == 200) {
        this.maxClassList = res.data;
      }
    })
    // let year = new Date().getFullYear();
    // axios.post('/jiari/', qs.stringify({ d: year })).then(res => {
    //   this.holidayList = Object.keys(res.data[year])
    // })
    // getNoClassStudentAll({ musicGroupId: this.teamid }).then(res => {
    // })


    // 获取默认乐团内的所有班
    this.changeMixClass()
    // 根据乐团id获取乐团的所有声部
    findSound({ musicGroupId: this.teamid }).then(res => {
      if (res.code == 200) {
        this.soundList = res.data
      }
    })

    // 获取分部所有老师
    // findMusicGroupClassTeacher({
    //   musicGroupId: this.teamid
    // }).then(res => {
    //   if (res.code == 200) {
    //     this.teacherList = res.data
    //   }
    // })
    // 获取分部所有老师
    // 助教是从员工表里选

  },
  methods: {
    recourse (row) {
      this.weekList = [{
        week: '',
        startTime: '',
        endTime: '',
        id: new Date()
      }],
        this.resetCourseVisible = true;
    },
    addMix () {
      this.MixVisible = true;
    },
    setAssistant (val) {
      for (let i in val) {
        if (val[i] == this.teacherForm.coreTeacher) {
          val.splice(i, 1);
        }
      }
    },
    changeMixClass (val) {
      // 根据合奏班id获取合奏班下的所有单技班
      this.getList(val);
      this.activeMixClass = val;
    },
    getList (val) {
      getAllSignClassandTeacher({ musicGroupId: this.teamid, type: val }).then(res => {
        if (res.code == 200) {
          this.activeSingleList = res.data;
          // this.topForm.count = this.activeSingleList.length
        }
      })
    },
    // 临时调整
    temporary () {

      this.activeClass = '';
      this.activeListStudent = [];
      this.studentList = [];
      this.isNewClass = true;
      this.studentVisible = true;
      this.isSearch = true;
      this.className = '';
      this.isTemporary = true;
      this.setType('SNAP');
      this.getNoClassStudent('SNAP')
    },
    setType (type) {
      switch (type) {
        case 'NORMAL': {
          this.courseTypeList = [
            { value: 'SINGLE', label: '单技课' },
            { value: 'TRAINING_SINGLE', label: '集训单技课' },
            { value: 'COMPREHENSIVE', label: '综合课' },
            { value: 'CLASSROOM', label: '课堂课' },
          ]
          break;
        }
        case 'MIX': {
          this.courseTypeList = [
            { value: 'MIX', label: '合奏课' },
            { value: 'TRAINING_MIX', label: '集训合奏课' },
            { value: 'COMPREHENSIVE', label: '综合课' },
            { value: 'CLASSROOM', label: '课堂课' },
          ]
          break;
        }
        case 'HIGH': {
          this.courseTypeList = [
            { value: 'SINGLE', label: '单技课' },
            { value: 'TRAINING_SINGLE', label: '集训单技课' },
            { value: 'HIGH', label: '基础技能课' },
            { value: 'COMPREHENSIVE', label: '综合课' },
            { value: 'CLASSROOM', label: '课堂课' },
          ]
          break;
        }
        case 'SNAP': {
          this.courseTypeList = [
            { value: 'SINGLE', label: '单技课' },
            { value: 'MIX', label: '合奏课' },
            { value: 'TRAINING_SINGLE', label: '集训单技课' },
            { value: 'TRAINING_MIX', label: '集训合奏课' },
            { value: 'HIGH', label: '基础技能课' },
            { value: 'COMPREHENSIVE', label: '综合课' },
            { value: 'CLASSROOM', label: '课堂课' },
          ]
        }
      }
    },
    // 新增班级
    addNewClass (type) {
      /**
       *      { value: 'NORMAL', label: '单技班' },
        { value: 'MIX', label: '合奏班' },
        { value: 'HIGH', label: '基础技能班' },
        { value: 'SNAP', label: '临时班' },
       */
      this.setType(type);
      this.activeType = type;
      this.activeClass = '';
      this.activeListStudent = [];
      this.studentList = [];
      this.isNewClass = true;
      this.studentVisible = true;
      this.isSearch = false;
      this.className = '';
      this.isTemporary = false;
      this.getNoClassStudent(type)

    },
    searchStudent () {
      // 搜索学生
      // 根据声部id  乐团id搜索学生
      teamSoundStudent({ musicGroupId: this.teamid, actualSubjectId: this.activeChioseSound }).then(res => {
        if (res.code == 200) {
          this.studentList = res.data;
        }
      })
    },
    // 选择学生的方法修改
    SelectionStudent (val) {
      this.chioseStudent = val;

    },
    // 新增选中的学生
    NewselectionStudent (val) {

      this.chioseStudent = val;
      // 这里新增的添加到选中的学生列表  根据学生id去重
      if (this.chioseStudent.length > 0) {
        this.chioseStudent = this.chioseStudent.concat(val);
      } else {
        this.chioseStudent = val;
      }
      // 联动版
      // this.activeListStudent = this.objArrayRemoval(this.chioseStudent, 'userId')
      // 非联动多选版
      this.activeListStudent = this.activeListStudent.concat(this.chioseStudent);
      // // 去重
      this.activeListStudent = this.objArrayRemoval(this.activeListStudent, 'userId');
      // 将其填入选中的学生
    },
    // 删除班级
    removeClass (scope) {
      removeSingleClass({ classGroupId: scope.row.id }).then(res => {
        if (res.code == 200) {
          this.$message.success('删除成功')
          scope._self.$refs[scope.$index].doClose();
          // 重新请求列表
          this.getList(this.activeMixClass);
        } else {
          this.$message.error(res.msg)
          scope._self.$refs[scope.$index].doClose();
        }
      }).catch(res => {
        scope._self.$refs[scope.$index].doClose();
      })
    },
    // 修改班级
    resetClass (row) {
      this.isNewClass = false;
      this.className = row.name;
      this.studentVisible = true;
      this.activeClass = row.id
      this.isSearch = false;
      this.activeType = row.type;
      // 根据单机班id 查询单技班内的所有学生
      getClassAllStudent({ classGroupId: row.id }).then(res => {
        if (res.code == 200) {
          this.activeListStudent = res.data.map(item => {
            item.isVisible = false;
            return item;
          });
        }
      })
      this.getNoClassStudent(row.type)

    },
    // 班级调整
    classAdjustment (row) {
      this.activeType = row.type;
      this.activeClass = row.id;
      // this.activeListStudent = row.subjectIdList.split(',')
      this.setType(row.type)
      // activeListStudent
      this.isNewClass = false;
      this.teacherForm.assistant = [];
      for (let i in row.classGroupTeacherMapperList) {
        if (row.classGroupTeacherMapperList[i].teacherRole == 'BISHOP') {
          this.teacherForm.coreTeacher = row.classGroupTeacherMapperList[i].userId;
        }
        if (row.classGroupTeacherMapperList[i].teacherRole == 'TEACHING') {
          this.teacherForm.assistant.push(row.classGroupTeacherMapperList[i].userId)
        }
      }
      this.infoVisible = true;
    },
    getNoClassStudent (type) {
      // 获取乐团内所有未分班的学生
      // if (type && type == 'SNAP') {
      //   teamSoundStudent({ musicGroupId: this.teamid }).then(res => {
      //     if (res.code == 200) {
      //       this.studentList = res.data
      //     }
      //   })
      // } else {
      //   getMusicGroupStuNoClassType({ musicGroupId: this.teamid, type }).then(res => {
      //     if (res.code == 200) {
      //       this.studentList = res.data
      //     }
      //   })
      // }
      // res.data - activeListStudent
      getMusicGroupStuNoClassType({ musicGroupId: this.teamid, type }).then(res => {
        if (res.code == 200) {
          // this.studentList = res.data.concat(this.activeListStudent).filter(item=>{
          //   return res.data
          // });
          if (this.activeType == 'SNAP') {
            let idarr1 = [];
            let idarr2 = [];
            let arr3 = res.data.concat(this.activeListStudent);
            for (let i in res.data) {
              idarr1.push(res.data[i].userId);
            }
            for (let j in this.activeListStudent) {
              idarr2.push(this.activeListStudent[j].userId);
            }
            this.studentList = arr3.filter(item => {
              return idarr1.indexOf(item.userId) === -1 || (idarr2.indexOf(item.userId) === -1)
            })
          } else {
            this.studentList = res.data;
          }

        }
      })

    },
    // 删除学生 调整
    removeStudent (item) {
      // removeStudents({ classGroupId:}).then(res => {
      removeStudents({ classGroupId: this.activeClass, userId: item.userId }).then(res => {
        if (res.code == 200) {
          this.$message.success('删除成功');
          item.isVisible = false;
          // 这里刷新 this.studentList this.activeListStudent 
          this.getList(this.activeMixClass);
          getClassAllStudent({ classGroupId: this.activeClass }).then(res => {
            if (res.code == 200) {
              this.activeListStudent = res.data;
            }
          })
          this.getNoClassStudent(this.activeType);
          // getNoClassStudentAll({ musicGroupId: this.teamid }).then(res => {
          //   if (res.code == 200) {
          //     this.$message.success('删除成功');
          //     this.studentList = res.data.map(item => {
          //       item.isVisible = false;
          //       return item;
          //     });
          //   }
          // })
        }
      })
    },
    // 批量添加学生
    addSomeStudent () {
      // 获取勾选的学生
      let arr = this.chioseStudent.map(item => {
        return item.userId;
      });
      if (arr.length <= 0) {
        this.$message.error('至少添加一名学员')
        return;
      }
      addStudents({ classGroupId: this.activeClass, userIdsStr: arr.join(',') }).then(res => {
        if (res.code == 200) {
          this.studentVisible = false;
          this.$message.success('添加成功')
          this.getList()
        }
      })
    },
    SelectionMix (val) {
      this.activeSingleLists = val;
    },
    removeSiginforMix (item) {
      for (let k in this.activeSingleLists) {
        if (this.activeSingleLists[k].id == item.id) {
          this.$refs['mixList'].toggleRowSelection(item, false)
        }
      }
    },
    temporaryRemoveStudent (item) {
      // 列表中删除
      for (let i in this.activeListStudent) {
        if (this.activeListStudent[i].userId == item.userId) {
          this.activeListStudent.splice(i, 1);
        }
      }
      // 查询列表中的项 取消勾选 temporaryStudentList  toggleRowSelection
      // 循环列表 找到相应的行取消勾选
      for (let k in this.studentList) {
        if (this.studentList[k].userId == item.userId) {
          this.$refs['temporaryStudentList'].toggleRowSelection(item, false)
        }
      }
      // this.$refs['temporaryStudentList'].toggleRowSelection(row, selected);

    },
    // 对象数组去重
    objArrayRemoval (arr, attr) {
      let obj = {};
      let result = [];
      for (let x in arr) {
        if (!obj[arr[x][attr]]) {
          result.push(arr[x]);
          obj[arr[x][attr]] = true;
        }
      }
      return result;
    },
    setInfoMsg () {
      // 判断班级名称是否输入
      if (!this.className) {
        this.$message.error('请输入班级名称')
        return
      }
      // 判断有没有勾选学生
      if (this.activeListStudent.length <= 0) {
        // 没有勾学生
        this.$message.error('班级里至少要有一名学生')
        return
      }
      this.infoVisible = true;
    },
    addWeek () {
      // 添加循环周期
      this.weekList.push({
        dayOfWeek: '',
        startClassTime: '',
        endClassTime: '',
        id: new Date()
      })
    },
    // 删除循环周
    removeWeek (item) {
      for (let i in this.weekList) {
        if (this.weekList[i].id == item.id) {
          this.weekList.splice(i, 1)
        }
      }
    },
    // 提交临时班的信息
    submitTemporary (type) {
      // 参数是一样  type为1 新增临时班
      // type为2  新增单技班
      // type为3 修改班级信息
      if (type == 1) {
        this.isTemporary = true;
      } else {
        this.isTemporary = false;
      }
      this.$refs['teacherForm'].validate(item => {
        if (item) {
          let week = this.weekList;
          if (!week[0] || !week[0].startClassTime || !week[0].endClassTime || !week[0].dayOfWeek) {
            this.$message.error('至少排一节课');
            return
          }
          // 这里代表排课成功  发请求  新增临时班
          let classGroupName = this.className;
          let classGroupTeacherMapperList = [{ userId: this.teacherForm.coreTeacher, teacherRole: 'BISHOP' }]
          for (let i in this.teacherForm.assistant) {
            classGroupTeacherMapperList.push({ userId: this.teacherForm.assistant[i], teacherRole: 'TEACHING' })
          }
          // let mixClassGroupId = this.teacherForm.mixClassGroupId;
          let musicGroupId = this.teamid;
          let startDate = this.teacherForm.courseTime;
          let courseType = this.teacherForm.courseType;
          let courseTimes = this.teacherForm.courseNum
          let students = this.activeListStudent.map(item => {
            return item.userId;
          })
          let holiday = this.teacherForm.checked;
          let courseList = [];
          for (let i in this.weekList) {
            courseList.push(this.weekList[i])
          }
          if (courseList.length <= 0) {
            this.$message.error('新增班级至少排一节课')
            return
          }
          //       mixClassGroupId,
          let mineType = this.activeType;
          let obj = {
            classGroupName,
            classGroupTeacherMapperList,
            musicGroupId,
            startDate,
            courseType,
            students,
            holiday,
            courseTimes,
            courseTimeDtoList: courseList,
            type: mineType,
            courseAddType: this.teacherForm.isAdd
          }
          if (type == 1) {
            // 新增临时班级
            revisionClassGroup(obj).then(res => {
              if (res.code == 200) {
                // 提示修改成功
                this.$message.success('修改成功')
                this.infoVisible = false;
                this.studentVisible = false;
                this.getList();
              }
            })
          } else if (type == 2) {

            // 新增单技班
            revisionAddClassGroup(obj).then(res => {
              if (res.code == 200) {
                // 修改成功
                this.$message.success('修改成功');
                this.infoVisible = false;
                this.studentVisible = false;
                this.getList();
              }
            })
          } else if (type == 3) {
            // activeClass
            obj.classGroupId = this.activeClass;
            classGroupUpdate(obj).then(res => {
              if (res.code == 200) {
                this.$message.success('修改成功');
                this.infoVisible = false;
                this.getList();
              }
            })
          }

        } else {
          this.$message.error('请填写必要信息')
          return;
        }
      })
    },
  },
  watch: {
    infoVisible (val) {
      if (!val) {
        this.$refs['teacherForm'].resetFields();
        this.weekList = [];
      }
    }
  }
}
</script>
<style lang="scss" scoped>
.floor {
  padding-right: 20px;
  display: flex;
  flex-direction: row;
  justify-content: flex-end;
  width: 100%;
  height: 48px;
  line-height: 48px;
  background: rgba(237, 238, 240, 1);
  font-size: 14px;
  color: #444;
  align-items: center;
  position: relative;
  z-index: 1;
  .remove {
    width: 98px;
    height: 32px;
    background: rgba(248, 80, 67, 1);
    border-radius: 3px;
    color: #fff;
    line-height: 32px;
    text-align: center;
    margin-left: 164px;
    cursor: pointer;
  }
  .add {
    width: 98px;
    height: 32px;
    background: rgba(20, 146, 138, 1);
    border-radius: 3px;
    color: #fff;
    line-height: 32px;
    text-align: center;
    margin-left: 20px;
    cursor: pointer;
  }
}
.studentMask {
  display: flex;
  flex-direction: row;
  justify-content: flex-start;
  .left {
    width: 200px;
    margin-right: 20px;
    .wrap {
      margin-bottom: 20px;
    }
    h4 {
      font-size: 16px;
      color: #444;
      line-height: 38px;
    }
    .chioseStudentList {
      height: 500px;
      overflow-y: auto;
      border: 1px solid #ccc;
      .studentItem {
        padding-left: 10px;
        line-height: 25px;
      }
    }
  }
  .right {
    width: calc(100% - 200px);
    .tableList {
      max-height: 500px;
      overflow-y: auto;
    }
  }
}
.resetClassForm {
  /deep/.el-date-editor.el-input,
  /deep/.el-date-editor.el-input__inner {
    width: 180px !important;
  }
}
/deep/.el-date-editor.el-input,
/deep/.el-date-editor.el-input__inner {
  width: 100px !important;
}
</style>
