Browse Source

修复bug 展开后排课

1
mo 4 năm trước cách đây
mục cha
commit
fdd17b9770

+ 3 - 1
src/router/index.js

@@ -429,7 +429,9 @@ export const asyncRoutes = {
   // 会员排课列表
   memberClassList:()=>import('@/views/teamDetail/components/memberClassList'),
   // 设备号管理
-  deviceNum:()=>import('@/views/deviceNumManager')
+  deviceNum:()=>import('@/views/deviceNumManager'),
+  // 乐团会员列表
+  teamMemberList:()=>import('@/views/studentManager/memberList')
 }
 
 export default router

+ 330 - 0
src/views/studentManager/memberList.vue

@@ -0,0 +1,330 @@
+<!--  -->
+<template>
+  <div class="m-container">
+    <h2>
+      <div class="squrt"></div>
+      乐团会员列表
+    </h2>
+    <div class="m-core">
+      <save-form
+        :inline="true"
+        :model="searchForm"
+        @submit="search"
+        @reset="onReSet"
+      >
+        <el-form-item>
+          <el-input
+            v-model.trim="searchForm.search"
+            clearable
+            @keyup.enter.native="search"
+            placeholder="乐团名称、编号"
+          ></el-input>
+        </el-form-item>
+        <el-form-item>
+          <el-input
+            v-model.trim="searchForm.search"
+            @keyup.enter.native="search"
+            placeholder="学员姓名、编号"
+          ></el-input>
+        </el-form-item>
+        <el-form-item prop="organId">
+          <el-select
+            class="multiple"
+            filterable
+            v-model.trim="searchForm.organId"
+            clearable
+            placeholder="请选择分部"
+          >
+            <el-option
+              v-for="(item, index) in selects.branchs"
+              :key="index"
+              :label="item.name"
+              :value="item.id"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+
+        <el-form-item prop="isActive">
+          <el-select
+            class="multiple"
+            v-model.trim="searchForm.isActive"
+            clearable
+            placeholder="会员是否过期"
+          >
+            <el-option label="是" value="true"></el-option>
+            <el-option label="否" value="false"></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item prop="isActive">
+          <el-select
+            class="multiple"
+            v-model.trim="searchForm.isActive"
+            clearable
+            placeholder="会员是否即将过期"
+          >
+            <el-option label="是" value="true"></el-option>
+            <el-option label="否" value="false"></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item>
+          <el-button native-type="submit" type="primary">搜索</el-button>
+          <el-button native-type="reset" type="danger">重置</el-button>
+        </el-form-item>
+      </save-form>
+      <div class="tableWrap">
+        <el-table
+          style="width: 100%"
+          :header-cell-style="{ background: '#EDEEF0', color: '#444' }"
+          :data="tableList"
+        >
+          <el-table-column
+            align="center"
+            prop="studentId"
+            label="学员编号"
+          ></el-table-column>
+          <el-table-column
+            align="center"
+            prop="studentId"
+            label="学员姓名"
+          ></el-table-column>
+          <el-table-column
+            align="center"
+            prop="studentId"
+            label="所属分部"
+          ></el-table-column>
+          <el-table-column
+            align="center"
+            prop="studentId"
+            label="所属乐团"
+          ></el-table-column>
+          <el-table-column
+            align="center"
+            prop="studentId"
+            label="会员是否过期"
+          ></el-table-column>
+          <el-table-column
+            align="center"
+            prop="studentId"
+            label="会员有效期剩余天数"
+          ></el-table-column>
+          <el-table-column align="center" prop="studentId" label="操作">
+            <template slot-scope="scope">
+              <div>
+                         <auth
+                :auths="'musicGroupQuit/directQuitMusicGroup4463'"
+              >
+                <el-button type="text" @click="quitTeam(scope.row)"
+                  >退团退费</el-button
+                >
+              </auth>
+              <auth
+                :auths="'musicGroupQuit/directQuitMusicGroup4462'"
+              >
+                <el-button type="text" @click="quieTeams(scope.row)"
+                  >退团</el-button
+                >
+              </auth>
+              </div>
+            </template>
+          </el-table-column>
+        </el-table>
+        <pagination
+          sync
+          :total.sync="rules.total"
+          :page.sync="rules.page"
+          :limit.sync="rules.limit"
+          :page-sizes="rules.page_size"
+          @pagination="getList"
+        />
+      </div>
+    </div>
+        <!-- 退团弹窗 -->
+    <el-dialog title="退团信息确认" width="640px" :visible.sync="quitVisible">
+      <quiteTeam :quitForm="quitForm" :activeRow="activeRow"  ref="quitForm"/>
+      <span slot="footer" class="dialog-footer question">
+        <div>
+          <el-popover placement="right" width="500" trigger="click">
+            <div class="popoverWrap">
+              <p>乐团退团退费规则:</p>
+              <p>退还乐器练习云教练费用:报名缴费时缴费的乐器练习云教练费用</p>
+              <p>退还课程费用:缴费总额-已结束课时单价之和</p>
+              <p>退还乐器费用:报名缴费时缴纳的乐器费用(团购、租金)</p>
+              <p>退还教辅费用:报名缴费时缴费的教辅费用</p>
+              <p>退还乐保费用:报名缴费时缴费的乐保费用</p>
+            </div>
+            <el-button
+              type="text"
+              icon="el-icon-question"
+              slot="reference"
+              style="color: red"
+              >退团退费说明</el-button
+            >
+          </el-popover>
+        </div>
+        <div>
+          <el-button @click="quitVisible = false">取 消</el-button>
+          <el-button type="primary" @click="chioseType">确 定</el-button>
+        </div>
+      </span>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import axios from "axios";
+import { getToken } from "@/utils/auth";
+import pagination from "@/components/Pagination/index";
+import quiteTeam from "@/views/teamDetail/components/modals/quite-team"
+import {
+  StudentQuit,
+} from "@/api/buildTeam";
+import load from "@/utils/loading";
+export default {
+  components: { pagination,quiteTeam },
+  data() {
+    return {
+      searchForm: {
+        search: null,
+      },
+
+      tableList: [{}],
+      organList: [],
+      rules: {
+        // 分页规则
+        limit: 10, // 限制显示条数
+        page: 1, // 当前页
+        total: 0, // 总条数
+        page_size: [10, 20, 40, 50], // 选择限制显示条数
+      },
+      quitForm: {
+        // 退团信息确认
+        isRefundCourseFee: null,
+        isRefundInstrumentFee: null,
+        isRefundTeachingAssistantsFee: null,
+        isMaintenanceFee: null,
+        cloudTeacherAmount: null,
+        isCloudTeacherAmount: null,
+        maintenanceFee: 0,
+        reason: "",
+      },
+      quitVisible:false,
+      activeRow:null,
+    };
+  },
+  //生命周期 - 创建完成(可以访问当前this实例)
+  created() {},
+  //生命周期 - 挂载完成(可以访问DOM元素)
+  mounted() {
+    // 获取分部
+    this.$store.dispatch("setBranchs");
+    this.init();
+  },
+  methods: {
+    init() {},
+    getList() {},
+    search() {
+      this.rules.page = 1;
+      this.getList();
+    },
+    onReSet() {},
+    quitTeam(row) {
+      this.activeRow = row;
+      this.quitVisible = true;
+      this.quitForm.cloudTeacherAmount = row.cloudTeacherAmount;
+    },
+    quieTeams(row) {
+      this.$prompt("请输入退团原因", "提示", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        inputPattern: /\S/,
+        inputErrorMessage: "请输入退团原因",
+        type: "warning",
+      })
+        .then((val) => {
+          // 发请求 退团
+          StudentQuit({
+            musicGroupId: this.id,
+            userId: row.studentId,
+            reason: val.value,
+            isRefundCourseFee: false,
+            isRefundInstrumentFee: false,
+            isRefundTeachingAssistantsFee: false,
+          }).then((res) => {
+            this.quitForm = {
+              // 退团信息确认
+              isRefundCourseFee: null,
+              isRefundInstrumentFee: null,
+              isRefundTeachingAssistantsFee: null,
+              isMaintenanceFee: null,
+              cloudTeacherAmount: null,
+              isCloudTeacherAmount: null,
+              maintenanceFee: 0,
+              reason: "",
+            };
+            if (res.code == 200) {
+              this.$message.success("退团成功");
+              this.getList();
+              this.quitVisible = false;
+            }
+          });
+        })
+        .catch(() => {});
+    },
+    chioseType() {
+      this.$refs["quitForm"].$refs["quitForm"].validate((res) => {
+        if (res) {
+          this.$confirm("确定退团?", "提示", {
+            confirmButtonText: "确定",
+            cancelButtonText: "取消",
+            type: "warning",
+          })
+            .then(() => {
+              let row = this.activeRow;
+              let params = {
+                musicGroupId: this.id,
+                userId: row.studentId,
+                reason: this.quitForm.reason,
+                isRefundCourseFee: this.quitForm.isRefundCourseFee,
+                isRefundInstrumentFee: this.quitForm.isRefundInstrumentFee,
+                isRefundTeachingAssistantsFee:
+                  this.quitForm.isRefundTeachingAssistantsFee,
+                maintenanceFee: this.quitForm.maintenanceFee,
+              };
+              // 退还乐器练习云教练费用
+              if (this.quitForm.isCloudTeacherAmount) {
+                params.cloudTeacherAmount = this.quitForm.cloudTeacherAmount;
+              } else {
+                params.cloudTeacherAmount = 0;
+              }
+              // 发请求 退团
+              StudentQuit(params).then((res) => {
+                this.quitForm = {
+                  // 退团信息确认
+                  isRefundCourseFee: null,
+                  isRefundInstrumentFee: null,
+                  isRefundTeachingAssistantsFee: null,
+                  isMaintenanceFee: null,
+                  cloudTeacherAmount: null,
+                  isCloudTeacherAmount: null,
+                  maintenanceFee: 0,
+                  reason: "",
+                };
+                if (res.code == 200) {
+                  this.$message.success("退团成功");
+                  this.getList();
+                  this.quitVisible = false;
+                }
+              });
+            })
+            .catch(() => {});
+        } else {
+        }
+      });
+
+      // row.typeVisible = false;
+    },
+  },
+};
+</script>
+<style lang='scss' scoped>
+</style>

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

@@ -794,94 +794,7 @@
       width="640px"
       :visible.sync="quitVisible"
     >
-      <el-form
-        :model="quitForm"
-        ref="quitForm"
-        label-width="150px"
-        :rules="quitRules"
-      >
-        <el-form-item
-          label="退还云教练费用"
-          prop="isCloudTeacherAmount"
-          v-if="activeRow.cloudTeacherAmount > 0"
-        >
-          <el-radio v-model.trim="quitForm.isCloudTeacherAmount" :label="true"
-            >是</el-radio
-          >
-          <el-radio v-model.trim="quitForm.isCloudTeacherAmount" :label="false"
-            >否</el-radio
-          >
-        </el-form-item>
-        <el-form-item
-          label="退还云教练金额"
-          prop="cloudTeacherAmount"
-          v-if="quitForm.isCloudTeacherAmount"
-        >
-          <el-input
-            type="number"
-            v-model.trim="quitForm.cloudTeacherAmount"
-            style="width: 180px"
-          >
-            <template slot="append">元</template>
-          </el-input>
-        </el-form-item>
-        <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="退还乐保费用"
-          prop="isMaintenanceFee"
-          v-if="activeRow.hasMaintenance"
-        >
-          <el-radio v-model.trim="quitForm.isMaintenanceFee" :label="true"
-            >是</el-radio
-          >
-          <el-radio v-model.trim="quitForm.isMaintenanceFee" :label="false"
-            >否</el-radio
-          >
-        </el-form-item>
-        <el-form-item
-          label="退还乐保金额"
-          prop="maintenanceFee"
-          v-if="quitForm.isMaintenanceFee"
-        >
-          <el-input
-            type="number"
-            v-model.trim="quitForm.maintenanceFee"
-            style="width: 180px"
-          >
-            <template slot="append">元</template>
-          </el-input>
-        </el-form-item>
-        <el-form-item label="退团原因" prop="reason">
-          <el-input type="textarea" v-model.trim="quitForm.reason"> </el-input>
-        </el-form-item>
-      </el-form>
+       <quiteTeam :quitForm="quitForm" :activeRow="activeRow"  ref="quitForm"/>
       <span slot="footer" class="dialog-footer question">
         <div>
           <el-popover placement="right" width="500" trigger="click">
@@ -977,6 +890,7 @@ import { permission } from "@/utils/directivePage";
 import cleanDeep from "clean-deep";
 import changeVoice from "./modals/change-voice";
 import visit from "@/views/withdrawal-application/modals/visit";
+import quiteTeam from "@/views/teamDetail/components/modals/quite-team"
 export default {
   name: "signupList",
   components: {
@@ -987,6 +901,7 @@ export default {
     forecastList,
     visit,
     newForecastList,
+    quiteTeam
   },
   data() {
     return {
@@ -1671,7 +1586,7 @@ export default {
         .catch(() => {});
     },
     chioseType() {
-      this.$refs["quitForm"].validate((res) => {
+      this.$refs["quitForm"].$refs["quitForm"].validate((res) => {
         if (res) {
           this.$confirm("确定退团?", "提示", {
             confirmButtonText: "确定",

+ 19 - 8
src/views/teamDetail/components/memberClassList.vue

@@ -48,6 +48,7 @@
         row-key="id"
         :header-cell-style="{ background: '#EDEEF0', color: '#444' }"
         tooltip-effect="dark"
+        :row-class-name="getClassName"
         ><el-table-column type="expand">
           <template slot-scope="props">
             <el-table
@@ -155,9 +156,9 @@
             <div>{{ scope.row.preTotalClassTimes }}</div>
           </template>
         </el-table-column>
-               <el-table-column align="center" label="已预排课时长(分钟)">
+        <el-table-column align="center" label="已预排课时长(分钟)">
           <template slot-scope="scope">
-            <div>{{ scope.row.preMinutes  }}</div>
+            <div>{{ scope.row.preMinutes }}</div>
           </template>
         </el-table-column>
         <el-table-column align="center" label="剩余可排课时长(分钟)">
@@ -295,7 +296,7 @@ export default {
   },
   mounted() {
     this.init();
-     this.$route.meta.nogo = true
+    this.$route.meta.nogo = true;
     // console.log()
   },
   methods: {
@@ -378,7 +379,6 @@ export default {
         path: "/business/resetTeaming",
         query: { ...this.$route.query },
       });
-
     },
     setStartTime() {
       this.$refs.form.validate(async (res) => {
@@ -484,10 +484,9 @@ export default {
           this.activeSingleList.forEach((item, index) => {
             if (item.id == row.id) {
               // this.activeSingleList[index].courseData = res.data;
-              this.$set( this.activeSingleList[index],'courseData',res.data)
+              this.$set(this.activeSingleList[index], "courseData", res.data);
             }
           });
-
         } catch (e) {
           console.log(e);
         }
@@ -521,6 +520,9 @@ export default {
         dayjs(row.endClassTime).format("HH:mm")
       );
     },
+    getClassName({ row, index }) {
+      return row.preTotalClassTimes ? "" : "noShow";
+    },
   },
   async beforeRouteLeave(to, from, next) {
     let flag = false;
@@ -538,13 +540,13 @@ export default {
         type: "warning",
       })
         .then(async () => {
-            this.$store.dispatch("delVisitedViews", this.$route);
+          this.$store.dispatch("delVisitedViews", this.$route);
           next();
           // musicGroupSchoolTermCourseDetailId
         })
         .catch(() => {});
     } else {
-        this.$store.dispatch("delVisitedViews", this.$route);
+      this.$store.dispatch("delVisitedViews", this.$route);
       next();
     }
   },
@@ -559,4 +561,13 @@ export default {
   justify-content: flex-end;
   margin-right: 1%;
 }
+/deep/ .el-table .noShow .cell .el-table__expand-icon {
+	display: none;
+}
+
+// /deep/.el-table__row.noShow {
+//   /deep/.el-table__expand-column {
+//     visibility:hidden;
+//   }
+// }
 </style>

+ 121 - 0
src/views/teamDetail/components/modals/quite-team.vue

@@ -0,0 +1,121 @@
+<template>
+  <div>
+    <el-form
+      :model="quitForm"
+      ref="quitForm"
+      label-width="150px"
+      :rules="quitRules"
+    >
+      <el-form-item
+        label="退还云教练费用"
+        prop="isCloudTeacherAmount"
+        v-if="activeRow.cloudTeacherAmount > 0"
+      >
+        <el-radio v-model.trim="quitForm.isCloudTeacherAmount" :label="true"
+          >是</el-radio
+        >
+        <el-radio v-model.trim="quitForm.isCloudTeacherAmount" :label="false"
+          >否</el-radio
+        >
+      </el-form-item>
+      <el-form-item
+        label="退还云教练金额"
+        prop="cloudTeacherAmount"
+        v-if="quitForm.isCloudTeacherAmount"
+      >
+        <el-input
+          type="number"
+          v-model.trim="quitForm.cloudTeacherAmount"
+          style="width: 180px"
+        >
+          <template slot="append">元</template>
+        </el-input>
+      </el-form-item>
+      <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="退还乐保费用"
+        prop="isMaintenanceFee"
+        v-if="activeRow.hasMaintenance"
+      >
+        <el-radio v-model.trim="quitForm.isMaintenanceFee" :label="true"
+          >是</el-radio
+        >
+        <el-radio v-model.trim="quitForm.isMaintenanceFee" :label="false"
+          >否</el-radio
+        >
+      </el-form-item>
+      <el-form-item
+        label="退还乐保金额"
+        prop="maintenanceFee"
+        v-if="quitForm.isMaintenanceFee"
+      >
+        <el-input
+          type="number"
+          v-model="quitForm.maintenanceFee"
+          style="width: 180px"
+        >
+          <template slot="append">元</template>
+        </el-input>
+      </el-form-item>
+      <el-form-item label="退团原因" prop="reason">
+        <el-input type="textarea" v-model.trim="quitForm.reason"></el-input>
+      </el-form-item>
+    </el-form>
+  </div>
+</template>
+<script>
+export default {
+  props: ["quitForm","activeRow"],
+  data() {
+    return {
+      quitRules: {
+        isCloudTeacherAmount: [{ required: true, message: "请输入云教练费用" }],
+        cloudTeacherAmount: [
+          { required: true, message: "请输入云教练金额", trigger: "blur" },
+        ],
+        isRefundCourseFee: [
+          { required: true, message: "请选择是否退还课程费用" },
+        ],
+        isRefundInstrumentFee: [
+          { required: true, message: "选择是否退还乐器费用" },
+        ],
+        isRefundTeachingAssistantsFee: [
+          { required: true, message: "选择是否退还教辅费用" },
+        ],
+        isMaintenanceFee: [{ required: true, message: "选择是否退还乐保费用" }],
+        maintenanceFee: [{ required: true, message: "请输入退还乐保金额" }],
+        reason: [{ required: true, message: "请填写退团退费原因" }],
+      },
+    };
+  },
+};
+</script>
+<style lang="scss" scoped>
+</style>

+ 8 - 109
src/views/teamDetail/components/studentList.vue

@@ -444,12 +444,12 @@
             <el-option label="女" :value="0"></el-option>
           </el-select>
         </el-form-item>
-        <el-form-item label="家长姓名" prop="parentName">
+        <!-- <el-form-item label="家长姓名" prop="parentName">
           <el-input
             v-model.trim="maskForm.parentName"
             placeholder="家长姓名"
           ></el-input>
-        </el-form-item>
+        </el-form-item> -->
 
         <el-form-item label="年级" prop="currentGradeNum">
           <el-select
@@ -542,94 +542,7 @@
     </el-dialog>
     <!-- 退团弹窗 -->
     <el-dialog title="退团信息确认" width="640px" :visible.sync="quitVisible">
-      <el-form
-        :model="quitForm"
-        ref="quitForm"
-        label-width="150px"
-        :rules="quitRules"
-      >
-        <el-form-item
-          label="退还云教练费用"
-          prop="isCloudTeacherAmount"
-          v-if="activeRow.cloudTeacherAmount > 0"
-        >
-          <el-radio v-model.trim="quitForm.isCloudTeacherAmount" :label="true"
-            >是</el-radio
-          >
-          <el-radio v-model.trim="quitForm.isCloudTeacherAmount" :label="false"
-            >否</el-radio
-          >
-        </el-form-item>
-        <el-form-item
-          label="退还云教练金额"
-          prop="cloudTeacherAmount"
-          v-if="quitForm.isCloudTeacherAmount"
-        >
-          <el-input
-            type="number"
-            v-model.trim="quitForm.cloudTeacherAmount"
-            style="width: 180px"
-          >
-            <template slot="append">元</template>
-          </el-input>
-        </el-form-item>
-        <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="退还乐保费用"
-          prop="isMaintenanceFee"
-          v-if="activeRow.hasMaintenance"
-        >
-          <el-radio v-model.trim="quitForm.isMaintenanceFee" :label="true"
-            >是</el-radio
-          >
-          <el-radio v-model.trim="quitForm.isMaintenanceFee" :label="false"
-            >否</el-radio
-          >
-        </el-form-item>
-        <el-form-item
-          label="退还乐保金额"
-          prop="maintenanceFee"
-          v-if="quitForm.isMaintenanceFee"
-        >
-          <el-input
-            type="number"
-            v-model="quitForm.maintenanceFee"
-            style="width: 180px"
-          >
-            <template slot="append">元</template>
-          </el-input>
-        </el-form-item>
-        <el-form-item label="退团原因" prop="reason">
-          <el-input type="textarea" v-model.trim="quitForm.reason"></el-input>
-        </el-form-item>
-      </el-form>
+      <quiteTeam :quitForm="quitForm" :activeRow="activeRow"  ref="quitForm"/>
       <span slot="footer" class="dialog-footer question">
         <div>
           <el-popover placement="right" width="500" trigger="click">
@@ -853,6 +766,7 @@ import changeVoice from "@/views/teamBuild/modals/change-voice";
 //import changeVoice from "./modals/change-voice";
 import visit from "@/views/withdrawal-application/modals/visit";
 import mergeMusic from "@/views/teamBuild/components/merge-music";
+import quiteTeam from "@/views/teamDetail/components/modals/quite-team"
 export default {
   name: "tstudentList",
   data() {
@@ -959,24 +873,7 @@ export default {
       },
       remark: "", // 退团原因
       classList: [],
-      quitRules: {
-        isCloudTeacherAmount: [{ required: true, message: "请输入云教练费用" }],
-        cloudTeacherAmount: [
-          { required: true, message: "请输入云教练金额", trigger: "blur" },
-        ],
-        isRefundCourseFee: [
-          { required: true, message: "请选择是否退还课程费用" },
-        ],
-        isRefundInstrumentFee: [
-          { required: true, message: "选择是否退还乐器费用" },
-        ],
-        isRefundTeachingAssistantsFee: [
-          { required: true, message: "选择是否退还教辅费用" },
-        ],
-        isMaintenanceFee: [{ required: true, message: "选择是否退还乐保费用" }],
-        maintenanceFee: [{ required: true, message: "请输入退还乐保金额" }],
-        reason: [{ required: true, message: "请填写退团退费原因" }],
-      },
+
       maskRules: {
         studentName: [{ required: true, message: "请输入学生姓名" }],
         sex: [{ required: true, message: "请选择学生姓名" }],
@@ -1069,6 +966,7 @@ export default {
     qrCode,
     changeVoice,
     mergeMusic,
+    quiteTeam
   },
   created() {},
   filters: {
@@ -1331,7 +1229,8 @@ export default {
       });
     },
     chioseType() {
-      this.$refs["quitForm"].validate((res) => {
+      // 父级验证子集表单
+      this.$refs["quitForm"].$refs["quitForm"].validate((res) => {
         if (res) {
           this.$confirm("确定退团?", "提示", {
             confirmButtonText: "确定",