<template>
  <div class="stu-container">
    <!-- 头部展示 -->
    <div class="headWrap">
      <div class="left">
        <div class="headItem">
          <p>
            在读人数:
            <span>{{studentListInfo.studying}}</span>
          </p>
        </div>
        <div class="headItem">
          <p>
            退团人数:
            <span>{{studentListInfo.quit}}</span>
          </p>
        </div>
        <div class="headItem">
          <p>
            新增人数:
            <span>{{studentListInfo.add}}</span>
          </p>
        </div>
      </div>
      <div class="right">
        <div class="newStudent" style="margin-bottom:10px;" @click="addStudentVisible = true">新增学员</div>
        <div class="newStudent" style="margin-bottom:10px;" @click="onCreateQRCode">报名连接</div>
        <div class="newStudent" @click="gotoSignin">点名总览</div>
      </div>
    </div>

    <!-- 搜索类型 -->
    <el-form :inline="true" class="searchForm" v-model.trim="searchForm">
      <el-form-item>
        <el-input v-model.trim="searchForm.search" placeholder="学生姓名或电话" @keyup.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item>
        <el-select v-model.trim="searchForm.studentStatus" clearable filterable placeholder="学员状态">
          <el-option label="在读" value="NORMAL"></el-option>
          <el-option label="请假" value="LEAVE"></el-option>
          <el-option label="退团" value="QUIT"></el-option>
        </el-select>
      </el-form-item>
      <el-form-item>
        <el-select v-model.trim="searchForm.classGroupId" clearable filterable placeholder="请选择班级">
          <el-option
            v-for="(item,index) in classList"
            :key="index"
            :value="item.id"
            :label="item.name"
          ></el-option>
        </el-select>
      </el-form-item>
      <el-form-item>
        <el-select v-model.trim="searchForm.major" clearable filterable placeholder="所选专业">
          <el-option
            v-for="(item,index) in soundList"
            :key="index"
            :value="item.id"
            :label="item.name"
          ></el-option>
        </el-select>
      </el-form-item>
      <el-form-item>
        <el-select v-model.trim="searchForm.isPay" clearable filterable placeholder="报名缴费">
          <el-option label="完成缴费" value="PAID_COMPLETED"></el-option>
          <el-option label="未缴费" value="NON_PAYMENT"></el-option>
          <el-option label="缴费中" value="PROCESSING"></el-option>
        </el-select>
      </el-form-item>
      <el-form-item>
        <el-select v-model.trim="searchForm.isActive" clearable filterable placeholder="是否激活">
          <el-option label="是" value="1"></el-option>
          <el-option label="否" value="0"></el-option>
        </el-select>
      </el-form-item>

      <!-- <el-form-item>
        <el-select v-model.trim="searchForm.school"
                   placeholder="所在学校">
          <el-option label="item.text"
                     value="1"></el-option>
        </el-select>
      </el-form-item>-->
      <el-form-item>
        <div class="searchBtn" @click="search">搜索</div>
      </el-form-item>
      <el-form-item>
        <div
          class="searchBtn export"
          v-permission="'export/musicGroupStudent'"
          @click="onMusicGroupExport"
        >导出</div>
      </el-form-item>
    </el-form>

    <!-- 列表 -->
    <div class="tableWrap">
      <el-table :data="tableList" :header-cell-style="{background:'#EDEEF0',color:'#444'}">
        <el-table-column label="学员编号" width="120px;" prop="userId"></el-table-column>
        <el-table-column label="学员姓名" width="120px;" prop="realName"></el-table-column>
        <el-table-column align="center" prop="gender" width="50px;" label="性别">
          <template slot-scope="scope">
            <div>{{scope.row.gender| sex }}</div>
          </template>
        </el-table-column>
        <el-table-column align="center" prop="phone" label="联系电话"></el-table-column>
        <!-- <el-table-column align='center'
        prop=""
                         label="所在学校">
        </el-table-column>-->
        <el-table-column align="center" label="年级班级">
          <template slot-scope="scope">
            <div>{{scope.row.currentGrade+scope.row.currentClass}}</div>
          </template>
        </el-table-column>
        <el-table-column align="center" label="专业" prop="subjectName"></el-table-column>
        <!-- <el-table-column align='center'
                         label="乐团班级">
        </el-table-column>
        <el-table-column align='center'
                         label="合奏班">
        </el-table-column>-->
        <el-table-column align="center" prop="studentStatus" label="学员状态">
          <template slot-scope="scope">
            <div>{{ scope.row.studentStatus | musicGroupStudentType}}</div>
          </template>
        </el-table-column>
        <el-table-column align="center" label="新增学员">
          <template slot-scope="scope">
            <div>{{ scope.row.isNewStudent | yesOrNo}}</div>
          </template>
        </el-table-column>
        <el-table-column align="center" label="批量修改缴费">
          <template slot-scope="scope">
            <div>{{ scope.row.isLock?'已锁定':'可修改'}}</div>
          </template>
        </el-table-column>

        <el-table-column align="center" label="下次缴费日期" prop="nextPaymentDate">
          <template slot-scope="scope">{{ scope.row.nextPaymentDate | formatTimer }}</template>
        </el-table-column>
        <el-table-column align="center" label="缴费金额" prop="courseFee"></el-table-column>
        <el-table-column align="center" label="报名缴费">
          <template slot-scope="scope">
            <div>{{ scope.row.paymentStatus | studentPays}}</div>
          </template>
        </el-table-column>
        <el-table-column align="center" label="是否激活">
          <template slot-scope="scope">
            <div>{{ scope.row.isActive?'是':'否'}}</div>
          </template>
        </el-table-column>
        <el-table-column align="center" fixed="right" width="250px;" label="操作">
          <template slot-scope="scope">
            <div v-if="scope.row.studentStatus != 'QUIT'">
              <!-- <el-popover placement="top"
                          v-model.trim="scope.row.typeVisible">
                <el-input v-model.trim="remark"
                          placeholder="请输入退团原因"></el-input>

                <el-button type="text"
                           slot='reference'
                           class='chiose'>
                  退团
                </el-button>
                <div style="text-align: right; margin-top: 20px">
                  <el-button size="mini"
                             type="text"
                             @click="scope.row.typeVisible  = false">取消</el-button>
                  <el-button type="primary"
                             size="mini"
                             @click="chioseType(scope.row)">确定</el-button>
                </div>
              </el-popover>-->

              <el-button type="text" @click="lookClass(scope.row)">查看班级</el-button>
              <el-button type="text" v-if="!scope.row.isLock" @click="lockStudent(scope.row)">锁定</el-button>
              <el-button v-else type="text" @click="lockStudent(scope.row)">解锁</el-button>
              <el-button type="text" @click="resetPay(scope.row)">修改缴费</el-button>
              <el-button type="text" @click="quieTeamMask(scope.row)">退团</el-button>
            </div>
          </template>
        </el-table-column>
      </el-table>
      <pagination
        :total="rules.total"
        :page.sync="rules.page"
        :limit.sync="rules.limit"
        :page-sizes="rules.page_size"
        @pagination="getList"
      />
    </div>
    <el-dialog title="新增学员" width="640px" class="studentInfo" :visible.sync="addStudentVisible">
      <el-form
        :model="maskForm"
        label-position="right"
        label-width="100px"
        ref="maskForm"
        :rules="maskRules"
        :inline="true"
      >
        <el-divider>基本信息</el-divider>
        <el-form-item
          label="联系电话"
          prop="phone"
          :rules="[{ required: true, message: '请输入手机号' }, { pattern: /^1[3456789]\d{9}$/, message: '请输入正确的手机号', trigger: 'blur' }]"
        >
          <el-input v-model.trim="maskForm.phone" placeholder="联系电话" @blur="checkPhone(maskForm.phone)"></el-input>
        </el-form-item>
        <el-form-item label="学员姓名" prop="studentName">
          <el-input v-model.trim="maskForm.studentName" placeholder="学员姓名"></el-input>
        </el-form-item>
        <el-form-item label="学员性别" prop="sex">
          <el-select v-model.trim="maskForm.sex" clearable>
            <el-option label="男" :value="1"></el-option>
            <el-option label="女" :value="0"></el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="家长姓名" prop="parentName">
          <el-input v-model.trim="maskForm.parentName" placeholder="家长姓名"></el-input>
        </el-form-item>

        <el-form-item label="年级" prop="startClass">
          <el-select placeholder="起始年级" filterable clearable v-model.trim="maskForm.startClass">
            <el-option value="一年级" label="一年级"></el-option>
            <el-option value="二年级" label="二年级"></el-option>
            <el-option value="三年级" label="三年级"></el-option>
            <el-option value="四年级" label="四年级"></el-option>
            <el-option value="五年级" label="五年级"></el-option>
            <el-option value="六年级" label="六年级"></el-option>
            <el-option value="初一" label="初一"></el-option>
            <el-option value="初二" label="初二"></el-option>
            <el-option value="初三" label="初三"></el-option>
            <el-option value="高一" label="高一"></el-option>
            <el-option value="高二" label="高二"></el-option>
            <el-option value="高三" label="高三"></el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="班级" prop="course">
          <el-input v-model.trim="maskForm.course" placeholder="班级"></el-input>
        </el-form-item>
        <el-form-item label="学员声部" prop="sound">
          <el-select v-model.trim="maskForm.sound" clearable filterable @change="onSoundChange">
            <el-option
              v-for="(item,index) in soundList"
              :key="index"
              :value="item.id"
              :label="item.name"
            ></el-option>
          </el-select>
        </el-form-item>

        <!-- <el-form-item label="证件号"
                      prop="id">
          <el-input v-model.trim="maskForm.id"></el-input>
        </el-form-item>-->
        <el-form-item label="出生日期" style="margin-right: 0;" prop="timer">
          <el-col :span="24">
            <el-date-picker
              v-model.trim="maskForm.timer"
              value-format="yyyy-MM-dd"
              type="date"
              placeholder="选择日期"
            ></el-date-picker>
          </el-col>
        </el-form-item>
        <el-form-item label="课程费用" prop="courseFee">
          <el-input
            v-model.trim="maskForm.courseFee"
            type="number"
            @mousewheel.native.prevent
            placeholder="续费金额"
          ></el-input>
        </el-form-item>
        <br />
        <el-form-item label="单技班">
          <el-select v-model.trim="maskForm.signClass" filterable clearable>
            <el-option
              v-for="(item,index) in signList"
              :key="index"
              :value="item.id"
              :label="item.name"
            ></el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="合奏班">
          <el-select v-model.trim="maskForm.mixClass" filterable clearable>
            <el-option
              v-for="(item,index) in mixList"
              :key="index"
              :value="item.id"
              :label="item.name"
            ></el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="基础技能班">
          <el-select v-model.trim="maskForm.highClass" filterable clearable>
            <el-option
              v-for="(item,index) in highList"
              :key="index"
              :value="item.id"
              :label="item.name"
            ></el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="临时班">
          <el-select v-model.trim="maskForm.snapClass" filterable clearable multiple>
            <el-option
              v-for="(item,index) in snapList"
              :key="index"
              :value="item.id"
              :label="item.name"
            ></el-option>
          </el-select>
        </el-form-item>

        <el-divider>首缴订单信息</el-divider>
        <el-form-item label="课程费用" prop="temporaryCourseFee">
          <el-input
            type="number"
            @mousewheel.native.prevent
            v-model.trim="maskForm.temporaryCourseFee"
            placeholder="首缴课程金额"
          ></el-input>
        </el-form-item>

        <el-form-item label="乐器" class="instrList">
          <el-col :span="11" style="width: auto;">
            <el-form-item>
              <el-select
                placeholder="选择乐器"
                filterable
                clearable
                @change="onInstrumentChange"
                v-model.trim="maskForm.musicGoodsIdList"
              >
                <el-option
                  v-for="(item, index) in INSTRUMENTLIST"
                  :key="index"
                  :value="item.value"
                  :label="item.label"
                ></el-option>
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="1">&nbsp;</el-col>
          <el-col :span="11">
            <el-form-item>
              <el-input
                type="number"
                @mousewheel.native.prevent
                :disabled="kitStatus"
                v-model.trim="maskForm.musicPrice"
                placeholder="输入金额"
              >
                <el-select
                  v-model.trim="maskForm.kitGroupPurchaseType"
                  style="width: 80px !important;"
                  @change="onKitGroupChnage"
                  slot="prepend"
                >
                  <el-option label="免费" value="FREE"></el-option>
                  <el-option label="团购" value="GROUP"></el-option>
                  <el-option label="租赁" value="LEASE"></el-option>
                </el-select>
              </el-input>
            </el-form-item>
          </el-col>
        </el-form-item>
        <el-form-item label="辅件">
          <el-col :span="11" style="width: auto;">
            <el-form-item>
              <el-select
                filterable
                clearable
                multiple
                placeholder="选择辅件"
                v-model.trim="maskForm.instrGoodsIdList"
              >
                <el-option
                  v-for="(item, index) in ACCESSORIESLIST"
                  :key="index"
                  :value="item.value"
                  :label="item.label"
                ></el-option>
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="1">&nbsp;</el-col>
          <el-col :span="11">
            <el-form-item>
              <el-input v-model.trim="maskForm.instrPrice" placeholder="输入金额"></el-input>
            </el-form-item>
          </el-col>
        </el-form-item>
      </el-form>
      <div slot="footer" class="dialog-footer">
        <!-- <el-button @click="addStudentVisible = false">取 消</el-button> -->
        <el-button type="primary" @click="addStudent">确 定</el-button>
      </div>
    </el-dialog>
    <el-dialog title="学员所在班级" width="640px" :visible.sync="studentClassVisible">
      <el-form :model="classMask">
        <el-form-item label="学生姓名">{{ classMask.studentName }}</el-form-item>
        <el-form-item label="所在班级" v-for="(item,index) in classList" :key="index">{{ item.name }}</el-form-item>
      </el-form>
    </el-dialog>
    <!-- 退团弹窗 -->
    <el-dialog title="退团信息确认" width="640px" :visible.sync="quitVisible">
      <el-form :model="quitForm" ref="quitForm" :rules="quitRules">
        <el-form-item label="退还课程费用" prop="isRefundCourseFee">
          <el-radio v-model.trim="quitForm.isRefundCourseFee" :label="true">是</el-radio>
          <el-radio v-model.trim="quitForm.isRefundCourseFee" :label="false">否</el-radio>
        </el-form-item>
        <el-form-item label="退还乐器费用" prop="isRefundInstrumentFee">
          <el-radio v-model.trim="quitForm.isRefundInstrumentFee" :label="true">是</el-radio>
          <el-radio v-model.trim="quitForm.isRefundInstrumentFee" :label="false">否</el-radio>
        </el-form-item>
        <el-form-item label="退还教辅费用" prop="isRefundTeachingAssistantsFee">
          <el-radio v-model.trim="quitForm.isRefundTeachingAssistantsFee" :label="true">是</el-radio>
          <el-radio v-model.trim="quitForm.isRefundTeachingAssistantsFee" :label="false">否</el-radio>
        </el-form-item>
        <el-form-item label="退团原因">
          <el-input type="textarea" v-model.trim="quitForm.reason"></el-input>
        </el-form-item>
      </el-form>
      <span slot="footer" class="dialog-footer">
        <el-button @click="quitVisible = false">取 消</el-button>
        <el-button type="primary" @click="chioseType">确 定</el-button>
      </span>
    </el-dialog>

    <el-dialog title="报名二维码" :visible.sync="qrcodeStatus" width="300px">
      <div class="left-code">
        <h2>学员报名连接</h2>
        <div id="qrcode" class="qrcode code" ref="qrCodeUrl"></div>
        <p class="code-url" v-if="codeUrl">{{ codeUrl }}</p>
      </div>
    </el-dialog>
    <el-dialog
      title="修改缴费周期"
      :before-close="closePayVisible"
      width="600px"
      :visible.sync="payVisible"
    >
      <el-form :model="payForm" ref="payForm" :inline="true">
        <el-form-item label="学生姓名" prop="studentName">
          <el-input v-model.trim="payForm.studentName" disabled></el-input>
        </el-form-item>
        <br />
        <el-form-item label="缴费金额" prop="payMoney">
          <el-input type="number" v-model.trim="payForm.payMoney" @mousewheel.native.prevent></el-input>
        </el-form-item>
        <el-form-item label="缴费月份" prop="payMonth">
          <el-checkbox-group v-model.trim="payForm.payMonth" fill="#14928A" text-color="#474747">
            <el-checkbox label="1">一月</el-checkbox>
            <el-checkbox label="2">二月</el-checkbox>
            <el-checkbox label="3">三月</el-checkbox>
            <el-checkbox label="4">四月</el-checkbox>
            <el-checkbox label="5">五月</el-checkbox>
            <el-checkbox label="6">六月</el-checkbox>
            <el-checkbox label="7">七月</el-checkbox>
            <el-checkbox label="8">八月</el-checkbox>
            <el-checkbox label="9">九月</el-checkbox>
            <el-checkbox label="10">十月</el-checkbox>
            <el-checkbox label="11">十一月</el-checkbox>
            <el-checkbox label="12">十二月</el-checkbox>
          </el-checkbox-group>
        </el-form-item>

        <!--  studentName: '',
        payMoney: '',
        payMonth-->
      </el-form>
      <div slot="footer" class="dialog-footer">
        <el-button @click="quitVisible = false">取 消</el-button>
        <el-button type="primary" @click="submitPay">确 定</el-button>
      </div>
    </el-dialog>
  </div>
</template>
<script>
import {
  getTeamStudentList,
  getTeamStudentInfo,
  getSingleClass,
  findSound,
  StudentQuit,
  findSubjectPlan,
  getGoods,
  getSubject,
  getMusicGroupAllClass,
  StudentFeeIsLock,
  updateStudentFee
} from "@/api/buildTeam";
import {
  addStudent,
  getStudentClass,
  getStudentInfoByPhone
} from "@/api/studentManager";
import pagination from "@/components/Pagination/index";
import { vaildStudentUrl } from "@/utils/validate";
import QRCode from "qrcodejs2";
import axios from "axios";
import { getToken } from "@/utils/auth";
export default {
  name: "tstudentList",
  props: ["teamid"],
  data() {
    return {
      payVisible: false,
      quitVisible: false, // 退团信息确认的弹窗
      studentClassVisible: false, // 学员所在班级弹窗
      addStudentVisible: false, //新增学员弹窗
      topFrom: {
        // 顶部的禁选框集合
        expect: "2", // 预期招生
        studing: "5", // 在读人数
        allmoney: "100", //实收总额
        students: "5", // 实际招生人数
        signout: "10" // 退团总数
      },
      searchForm: {
        studentStatus: "", // 学生状态
        major: "", // 报名专业
        isPay: "", // 是否缴费
        search: "",
        isActive: "",
        classGroupId: null
      },
      quitForm: {
        // 退团信息确认
        isRefundCourseFee: null,
        isRefundInstrumentFee: null,
        isRefundTeachingAssistantsFee: null,
        reason: ""
      },
      classMask: {
        studentName: ""
      },
      searchLsit: [],
      tableList: [], //
      rules: {
        // 分页规则
        limit: 10, // 限制显示条数
        page: 1, // 当前页
        total: 0, // 总条数
        page_size: [10, 20, 40, 50] // 选择限制显示条数
      },
      studentListInfo: {
        add: "",
        quit: "",
        studying: ""
      },
      signList: [],
      mixList: [],
      highList: [],
      snapList: [],
      soundList: [],
      qrcodeStatus: false, // 生成二维码
      qrcodes: true,
      qrcode: null,
      codeUrl: null,
      maskForm: {
        studentName: "",
        sex: "",
        parentName: "",
        course: "",
        phone: "",
        sound: "",
        timer: "",
        signClass: "",
        mixClass: "",
        highClass: "",
        snapClass: [],
        // price: '',
        startClass: "",
        id: "",
        courseFee: null, // 声部费用
        temporaryCourseFee: null, // 本次课程费用
        musicGoodsIdList: null, // 乐器商品编号
        kitGroupPurchaseType: "GROUP", // 乐器购买方式
        musicPrice: null, // 乐器购买金额
        instrGoodsIdList: [], // 辅件商品编号
        instrPrice: null // 辅件购买金额
      },
      remark: "", // 退团原因
      classList: [],
      quitRules: {
        isRefundCourseFee: [
          { required: true, message: "请选择是否退还课程费用" }
        ],
        isRefundInstrumentFee: [
          { required: true, message: "选择是否退还乐器费用" }
        ],
        isRefundTeachingAssistantsFee: [
          { required: true, message: "选择是否退还教辅费用" }
        ]
      },
      maskRules: {
        studentName: [{ required: true, message: "请输入学生姓名" }],
        sex: [{ required: true, message: "请选择学生姓名" }],
        parentName: [{ required: true, message: "请输入家长姓名" }],
        course: [{ required: true, message: "请输入班级" }],
        // phone: [{ required: true, message: '请输入手机号' }, { pattern: /^1[3456789]\d{9}$/, message: '请输入正确的手机号', trigger: 'blur' }],
        sound: [{ required: true, message: "请选择声部" }],
        timer: [{ required: true, message: "请选择出生日期" }],
        signClass: [{ required: true, message: "请选择单技班" }],
        // price: [{ required: true, message: '请输入首缴金额' },],
        startClass: [{ required: true, message: "请选择年级" }],
        id: [{ required: true, message: "请输入证件号" }],
        courseFee: [{ required: true, message: "请输入声部费用" }],
        temporaryCourseFee: [{ required: true, message: "请输课程费用" }],
        musicGoodsIdList: [
          { required: true, message: "请选择乐器", trigger: "change" }
        ],
        musicPrice: [{ required: true, message: "请输入乐器购买金额" }],
        instrGoodsIdList: [{ required: true, message: "请选择辅件" }],
        instrPrice: [{ required: true, message: "请输入辅件金额" }]
      },
      INSTRUMENTLIST: [], // 乐器列表
      ACCESSORIESLIST: [], // 辅件列表
      activeRow: null,
      Fsearch: null,
      Frules: null,
      payForm: {
        studentName: "",
        payMoney: "",
        payMonth: []
      },
      kitStatus: false // 乐器提供方式
    };
  },
  components: {
    pagination
  },
  created() {
    // 判断是否带缓存参数
    if (this.$route.query.search) {
      this.Fsearch = this.$route.query.search;
    }
    if (this.$route.query.rules) {
      this.Frules = this.$route.query.rules;
    }
  },
  /**  <el-option label="已开启缴费"
                     value="1"></el-option>
          <el-option label="未缴费"
                     value="0"></el-option>
          <el-option label="已缴费"
                     value="2"></el-option> */
  filters: {
    studentPays(val) {
      let template = {
        PAID_COMPLETED: "完成缴费",
        NON_PAYMENT: "未缴费",
        PROCESSING: "缴费中"
      };
      return template[val];
    }
  },
  mounted() {
    this.init();
  },
  activated() {
    this.init();
  },
  methods: {
    init() {
      // 获取汇总数据
      getTeamStudentInfo({ musicGroupId: this.teamid }).then(res => {
        if (res.code == 200) {
          this.studentListInfo = res.data;
        }
      });
      this.getList();
      // 获取乐团内所有声部
      findSound({ musicGroupId: this.teamid }).then(res => {
        if (res.code == 200) {
          this.soundList = res.data;
        }
      });

      // getSubject().then(res => {
      //   if (res.code == 200) {
      //     this.soundList = res.data;
      //   }
      // })
      // 获取乐团所有单技课班
      // getSingleClass({ musicGroupId: this.teamid }).then(res => {
      //   if (res.code == 200) {
      //     this.signList = res.data;
      //   }
      // })
      // 获取乐团所有合奏课
      getMusicGroupAllClass({ musicGroupId: this.teamid }).then(res => {
        if (res.code == 200) {
          this.classList = res.data;
          this.signList = [];
          this.mixList = [];
          this.highList = [];
          this.snapList = [];
          this.classList.forEach(item => {
            if (item.type == "NORMAL") {
              this.signList.push(item);
            } else if (item.type == "MIX") {
              this.mixList.push(item);
            } else if (item.type == "HIGH") {
              this.highList.push(item);
            } else if (item.type == "SNAP") {
              this.snapList.push(item);
            }
          });
        }
      });
    },
    onInstrumentChange() {
      // 乐器切换时
      // let tempkitType = this.maskForm.kitGroupPurchaseType
      // if(tempkitType == 'GROUP') {
      //   this.INSTRUMENTLIST.forEach(item => {
      //     if(item.value == value) {
      //       this.maskForm.musicPrice = item.marketPrice
      //     }
      //   })
      // }
    },
    onKitGroupChnage(value) {
      // 乐器提供方式
      this.kitStatus = false;
      if (value == "FREE") {
        this.kitStatus = true;
        this.maskForm.musicPrice = 0;
      } else {
        this.maskForm.musicPrice = null;
      }
    },
    onMusicGroupExport() {
      let url = "/api-web/export/musicGroupStudent";
      let data = {
        musicGroupId: this.teamid,
        studentStatus: this.searchForm.studentStatus || null,
        paymentStatus: this.searchForm.isPay || null,
        subjectId: this.searchForm.major || null,
        search: this.searchForm.search || null,
        isActive: this.searchForm.isActive || null,
        classGroupId: this.searchForm.classGroupId || null
      };
      const options = {
        method: "get",
        headers: {
          Authorization: getToken()
        },
        url,
        params: data,
        responseType: "blob"
      };

      this.$confirm("您确定导出学员列表?", "提示", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning"
      })
        .then(() => {
          axios(options).then(res => {
            let blob = new Blob([res.data], {
              // type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8',
              type: "application/vnd.ms-excel;charset=utf-8"
              // word文档为application/msword,pdf文档为application/pdf,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8
            });
            let objectUrl = URL.createObjectURL(blob);
            let link = document.createElement("a");
            let fname = this.$route.query.name + "学员列表";
            link.href = objectUrl;
            link.setAttribute("download", fname);
            document.body.appendChild(link);
            link.click();
          });
        })
        .catch(() => {});
    },
    search() {
      this.rules.page = 1;
      this.getList();
    },
    onCreateQRCode() {
      // 生成报名二维码
      this.qrcodeStatus = true;
      let id = this.$route.query.id;
      if (this.qrcodes) {
        this.qrcodes = false;
        setTimeout(() => {
          this.qrcode = new QRCode("qrcode", {
            width: 200,
            height: 200,
            colorDark: "#000000",
            colorLight: "#ffffff",
            correctLevel: QRCode.CorrectLevel.H
          });
          this.qrcode.makeCode(
            vaildStudentUrl() + "/#/login?musicGroupId=" + id
          );
          this.codeUrl = vaildStudentUrl() + "/#/login?musicGroupId=" + id;
        }, 500);
      }
    },
    getList() {
      let obj = {
        musicGroupId: this.teamid,
        page: this.rules.page,
        rows: this.rules.limit,
        studentStatus: this.searchForm.studentStatus || null,
        paymentStatus: this.searchForm.isPay || null,
        subjectId: this.searchForm.major || null,
        search: this.searchForm.search || null,
        isActive: this.searchForm.isActive || null,
        classGroupId: this.searchForm.classGroupId || null
      };
      getTeamStudentList(obj).then(res => {
        if (res.code == 200) {
          this.tableList = res.data.rows;
          this.rules.total = res.data.total;
        }
      });
    },
    gotoSignin() {
      this.$router.push({
        path: "/business/studentSignin",
        query: {
          id: this.teamid,
          status: this.$route.query.status,
          name: this.$route.query.name,
          rules: this.Frules,
          search: this.Fsearch
        }
      });
    },
    chioseType() {
      this.$refs["quitForm"].validate(res => {
        if (res) {
          this.$confirm("确定退团?", "提示", {
            confirmButtonText: "确定",
            cancelButtonText: "取消",
            type: "warning"
          })
            .then(() => {
              let row = this.activeRow;
              // 发请求 退团
              StudentQuit({
                musicGroupId: this.teamid,
                userId: row.userId,
                reason: this.quitForm.reason,
                isRefundCourseFee: this.quitForm.isRefundCourseFee,
                isRefundInstrumentFee: this.quitForm.isRefundInstrumentFee,
                isRefundTeachingAssistantsFee: this.quitForm
                  .isRefundTeachingAssistantsFee
              }).then(res => {
                this.quitForm = {
                  // 退团信息确认
                  isRefundCourseFee: null,
                  isRefundInstrumentFee: null,
                  isRefundTeachingAssistantsFee: null,
                  reason: ""
                };
                if (res.code == 200) {
                  this.$message.success("退团成功");
                  this.getList();
                  this.quitVisible = false;
                }
              });
            })
            .catch(() => {});
        } else {
        }
      });

      // row.typeVisible = false;
    },
    //
    addStudent() {
      // 发请求添加学员
      this.$refs["maskForm"].validate(res => {
        if (res) {
          // this.maskForm.parentName.timer  少个生日的字段
          // classGroupId: maskForm.signClass
          /**  <!--  signClass: '',
        mixClass: '',
        highClass: '',
        snapClass: [], --> */
          let maskForm = this.maskForm;
          if (
            !maskForm.signClass &&
            !maskForm.mixClass &&
            !maskForm.highClass
          ) {
            if (
              !maskForm.snapClass ||
              !(maskForm.snapClass && maskForm.snapClass.length >= 1)
            ) {
              this.$message.error("该学生必须加入一个班级");
              return;
            }
          }

          if (
            maskForm.musicGoodsIdList &&
            (maskForm.musicPrice === "" || maskForm.musicPrice === null)
          ) {
            this.$message.error("请输入乐器金额");
            return;
          }

          if (
            maskForm.instrGoodsIdList &&
            maskForm.instrGoodsIdList.length > 0 &&
            (maskForm.instrPrice === "" || maskForm.instrPrice === null)
          ) {
            this.$message.error("请输入辅件金额");
            return;
          }

          let snapClassIds;

          maskForm.snapClass
            ? (snapClassIds = maskForm.snapClass.join(","))
            : (snapClassIds = null);
          let params = {
            signClassId: maskForm.signClass,
            mixClassId: maskForm.mixClass,
            snapClassIds,
            highClassId: maskForm.highClass,
            courseFee: maskForm.courseFee,
            temporaryCourseFee: maskForm.temporaryCourseFee,
            studentRegistration: {
              name: maskForm.studentName,
              gender: maskForm.sex,
              birthdate: maskForm.timer,
              parentsName: maskForm.parentName,
              parentsPhone: maskForm.phone,
              currentGrade: maskForm.startClass,
              currentClass: maskForm.course,
              subjectId: maskForm.sound,
              musicGroupId: this.teamid
            }
          };
          params.studentPaymentOrderDetails = [];
          if (maskForm.musicGoodsIdList) {
            params.studentPaymentOrderDetails.push({
              goodsIdList: maskForm.musicGoodsIdList,
              kitGroupPurchaseType: maskForm.kitGroupPurchaseType,
              type: "MUSICAL",
              price: maskForm.musicPrice
            });
          }

          if (maskForm.instrGoodsIdList && maskForm.instrGoodsIdList != "") {
            params.studentPaymentOrderDetails.push({
              goodsIdList: maskForm.instrGoodsIdList.join(","),
              type: "ACCESSORIES",
              price: maskForm.instrPrice
            });
          }

          addStudent(params).then(res => {
            if (res.code == 200) {
              this.$message.success("添加学生成功");
              this.getList();
              this.addStudentVisible = false;
            }

            this.$refs.maskForm.resetFields();
          });
        }
      });
    },
    onSoundChange(value) {
      // 学员声部切换时
      // this.findSubjectPlan(value)
      this.ACCESSORIESLIST = [];
      this.maskForm.instrGoodsIdList = [];
      this.maskForm.instrPrice = null;
      this.INSTRUMENTLIST = [];
      this.maskForm.musicPrice = null;
      this.maskForm.musicGoodsIdList = null;
      this.getGoodsList(value, "INSTRUMENT"); // 乐器
      this.getGoodsList(value, "ACCESSORIES"); // 辅件
    },
    // 获取购买方式
    findSubjectPlan(subjectId) {
      findSubjectPlan({
        musicGroupId: this.teamid,
        subjectId: subjectId
      }).then(res => {
        let result = res.data;
        if (res.code == 200) {
          this.maskForm.musicMode = this.getBranchType(
            result.kitGroupPurchaseType
          );
        }
      });
    },
    getGoodsList(subjectId, type) {
      getGoods({
        subjectId: subjectId,
        type: type
      }).then(res => {
        let result = res.data;
        if (res.code == 200) {
          let tempArr = [];
          result.forEach(item => {
            tempArr.push({
              label: item.name,
              value: item.id,
              marketPrice: item.marketPrice
            });
          });
          if (type == "ACCESSORIES") {
            this.ACCESSORIESLIST = tempArr;
          }
          if (type == "INSTRUMENT") {
            this.INSTRUMENTLIST = tempArr;
          }
        }
      });
    },
    getBranchType(status) {
      let common = {
        FREE: "免费",
        GROUP: "团购",
        LEASE: "租赁"
      };
      return common[status];
    },
    lookClass(row) {
      this.classMask.studentName = row.realName;
      getStudentClass({
        musicGroupId: this.teamid,
        teacherId: row.userId
      }).then(res => {
        if (res.code == 200) {
          this.classList = res.data;
          this.studentClassVisible = true;
        }
      });
    },
    quieTeamMask(row) {
      this.activeRow = row;
      this.quitVisible = true;
    },
    checkPhone(val) {
      var regu = /^1[3456789]\d{9}$/;
      var re = new RegExp(regu);
      if (re.test(val)) {
        getStudentInfoByPhone({ mobile: this.maskForm.phone }).then(res => {
          if (res.code == 200) {
            if (res.data) {
              this.maskForm.studentName = res.data.name;
              this.maskForm.sex = res.data.gender;
              this.maskForm.parentName = res.data.parentsName;
              this.maskForm.course = res.data.currentClass;
              this.maskForm.startClass = res.data.currentGrade;
              this.maskForm.phone = val;
              this.maskForm.timer = res.data.birthdate;
            }
          }
        });
      }
    },
    lockStudent(row) {
      this.$confirm("是否锁定/解锁学生缴费周期?", "提示", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning"
      })
        .then(() => {
          let musicGroupId = this.teamid;
          let studentId = row.userId;
          let isLock;
          row.isLock == 0 ? (isLock = 1) : (isLock = 0);

          StudentFeeIsLock({ musicGroupId, studentId, isLock }).then(res => {
            if (res.code == 200) {
              this.$message.success("修改成功");
              this.getList();
            }
          });
        })
        .catch(() => {});
    },
    resetPay(row) {
      this.activeRow = row;
      this.payVisible = true;
      this.payForm.studentName = row.realName;
      this.payForm.payMoney = row.courseFee;
      this.payForm.payMonth = row.paymentPeriodList.split(",");
      if (this.payForm.payMonth[0] == "") {
        this.payForm.payMonth = [];
      }
    },
    submitPay() {
      let studentId = this.activeRow.userId;
      let musicGroupId = this.teamid;
      let month = this.payForm.payMonth.join(",") || null;
      let amount = this.payForm.payMoney;
      let obj = {
        studentId,
        musicGroupId,
        month,
        amount
      };
      updateStudentFee(obj).then(res => {
        if (res.code == 200) {
          this.$message.success("修改成功");
          this.payVisible = false;
          this.getList();
        }
      });
    },
    closePayVisible() {
      this.$refs["payForm"].resetFields();
      this.payVisible = false;
    }
  }
};
</script>
<style lang="scss" scoped>
// .moreInput {
//   width: 100%;
//   display: flex;
//   /deep/.el-form-item__content {
//     display: flex;
//     flex-direction: row;
//   }
// }
.el-select {
  width: 180px !important;
}

.headWrap {
  padding: 20px 0;
}
/deep/.el-date-editor.el-input {
  width: auto;
  .el-input__inner {
    padding-right: 0;
  }
}

.studentInfo {
  /deep/.el-dialog__body {
    padding-top: 0;
    padding-bottom: 0;
  }
}
// .instrList {
//   display: flex;
//   /deep/.el-form-item__content {
//     width: 80%;
//   }
//   .el-col {
//     /deep/.el-form-item__content {
//       width: 100%;
//     }
//   }
// }
.stu-container {
  .topFrom {
    margin: 20px 30px 0;
    width: 1000px;
  }
  .newStudent {
    width: 121px;
    height: 40px;
    background: rgba(20, 146, 138, 1);
    border-radius: 4px;
    color: #fff;
    text-align: center;
    line-height: 40px;
    font-size: 14px;
    cursor: pointer;
  }
}
.left-code,
.right-code {
  // width: 50%;
  // float: left;
  h2 {
    display: block;
    font-size: 18px;
    text-align: center;
    padding-bottom: 8px;
    line-height: 1;
    height: 30px;
    margin-bottom: 0;
  }

  .qrcode {
    display: flex;
    justify-content: center;
    img {
      width: 200px;
      height: 200px;
      // margin: 0 auto;
    }
  }
  .code-url {
    font-size: 18px;
    text-align: center;
    padding: 15px 15px 0 15px;
  }
}
.export {
  background: #14928a;
}
</style>