Jelajahi Sumber

提交测试

1
mo 3 tahun lalu
induk
melakukan
52cf030d7b

+ 19 - 0
src/api/buildTeam.js

@@ -1628,4 +1628,23 @@ export function confirmPreCourseSchedule(data) {
   })
 }
 
+// 查询退费详情
+export function getRefundsDetail(data) {
+  return request2({
+    url: api + `/musicGroupQuit/queryRefundsDetail`,
+    method: 'get',
+    params:data,
+
+  })
+}
+
+// 发起退团申请 musicGroupQuit/apply
+export function applyMusicGroupQuit(data) {
+  return request2({
+    url: api + `/musicGroupQuit/apply`,
+    method: 'post',
+    data:data,
+    requestType:'json'
+  })
+}
 

+ 3 - 2
src/api/journal.js

@@ -80,7 +80,8 @@ export function quitMusicGroup (data) {
   return request({
     url: api + '/musicGroupQuit/quitMusicGroup',
     method: 'POST',
-    data: qs.stringify(data)
+    data,
+    requestType:'json'
   })
 }
 
@@ -200,4 +201,4 @@ export function rejectTeacherAttendanceComplaints (data) {
     method: 'post',
     data: qs.stringify(data)
   })
-}
+}

+ 2 - 0
src/store/getters.js

@@ -12,6 +12,8 @@ const getters = {
   checkinfo: state => state.buildTeam.checkinfo,
   payList: state => state.buildTeam.payList,
   phone: state => state.user.phone,
+  isSuperAdmin:state=>state.user.isSuperAdmin,
+  roles:state=>state.user.roles,
   newStudentinfo: state => state.buildTeam.newStudentList,
   reactClassStudentList:state=>state.reactClassStudent.classList ,
   buildIndex:state=>state.buildTeam.buildIndex,

+ 15 - 2
src/store/modules/user.js

@@ -8,7 +8,9 @@ const state = {
   avatar: '',
   organ: '',
   organName: '',
-  phone: ''
+  phone: '',
+  isSuperAdmin:false,
+  roles:[]
 }
 // organName
 const mutations = {
@@ -35,6 +37,12 @@ const mutations = {
   },
   SET_PHONE: (state, phone) => {
     state.phone = phone
+  },
+  SET_SUPERADMIN: (state, isSuperAdmin) => {
+    state.isSuperAdmin = isSuperAdmin
+  },
+  SET_ROLES:(state,roles)=>{
+    state.roles = roles
   }
 }
 
@@ -48,7 +56,6 @@ const actions = {
       login({ username: username.trim(), password: password, clientId: 'system', clientSecret: 'system' }).then(response => {
         const { data } = response
         if (response.code == 200) {
-
           let token = data.authentication.token_type + ' ' + data.authentication.access_token;
           commit('SET_REFRESH_TOKEN', data.authentication.refresh_token)
           commit('SET_EXPIRES_IN', data.authentication.expires_in)
@@ -64,7 +71,9 @@ const actions = {
   },
   // get 获取用户信息
   getInfo ({ commit, state }) {
+
     return new Promise((resolve, reject) => {
+
       getInfo(state.token).then(response => {
         if (response.code == 200) {
           const data = response
@@ -76,12 +85,16 @@ const actions = {
           const organ = data.data.organId;
           const organName = data.data.organName;
           const phone = data.data.phone
+          const isSuperAdmin = data.data.isSuperAdmin
+          const roles = data.data.roles
           // const { name, avatar } = data
           commit('SET_NAME', username)
           commit('SET_AVATAR', avatar)
           commit('SET_ORGAN', organ)
           commit('SET_ORGANNAME', organName)
           commit('SET_PHONE', phone)
+          commit('SET_SUPERADMIN',isSuperAdmin)
+          commit('SET_ROLES',roles)
           resolve(data)
         }
       }).catch(error => {

+ 142 - 81
src/views/teamBuild/signupList.vue

@@ -516,7 +516,7 @@
           <template slot-scope="props">
             <el-form label-position="left" class="demo-table-expand">
               <el-row style="margin-left: 64px">
-                 <el-col :span="4">
+                <el-col :span="4">
                   <el-form-item label="入团年份">
                     <span>
                       {{ props.row.createTime | dayjsFormat("YYYY年") }}</span
@@ -525,7 +525,7 @@
                 </el-col>
                 <el-col :span="4">
                   <el-form-item label="报名专业">
-                    <span>{{props.row.subjectName }}</span>
+                    <span>{{ props.row.subjectName }}</span>
                   </el-form-item>
                 </el-col>
                 <el-col :span="4">
@@ -578,7 +578,6 @@
                       :text="props.row.remark"
                     ></overflow-text> </el-form-item
                 ></el-col> -->
-
               </el-row>
             </el-form>
           </template>
@@ -645,11 +644,15 @@
         </el-table-column> -->
         <!-- <el-table-column label="报名专业" prop="subjectName" align="center">
         </el-table-column> -->
-        <el-table-column label="调剂专业" prop="actualSubjectName" align="center">
+        <el-table-column
+          label="调剂专业"
+          prop="actualSubjectName"
+          align="center"
+        >
           <template slot-scope="scope">
             <div>
               <p>
-               {{ scope.row.actualSubjectName }}
+                {{ scope.row.actualSubjectName }}
               </p>
               <!-- <p>报名:{{ scope.row.subjectName }}</p> -->
             </div>
@@ -775,21 +778,21 @@
                 >
               </auth>
               <auth
-                :auths="'musicGroupQuit/directQuitMusicGroup2'"
+                :auths="'musicGroupQuit/apply2'"
                 v-show="scope.row.paymentStatus == 2"
               >
                 <el-button type="text" @click="quitTeam(scope.row)"
-                  >退团退费</el-button
+                  >退团</el-button
                 >
               </auth>
-              <auth
+              <!-- <auth
                 :auths="'musicGroupQuit/directQuitMusicGroup3'"
                 v-show="scope.row.paymentStatus == 2"
               >
                 <el-button type="text" @click="quieTeams(scope.row)"
                   >退团</el-button
                 >
-              </auth>
+              </auth> -->
               <auth
                 :auths="'visit/add/teamSignupList'"
                 v-if="scope.row.visitNum <= 0"
@@ -1067,8 +1070,9 @@ import {
   StudentQuit,
   getMusicGroupGradeList,
   checkCanReg,
+  getRefundsDetail,
+  applyMusicGroupQuit,
 } from "@/api/buildTeam";
-
 import { setNoneCloudTeacher, setCloudTeacherToFailed } from "./api";
 import mergeMusic from "./components/merge-music";
 import forecastList from "./components/forecast-list";
@@ -1131,12 +1135,13 @@ export default {
         isRefundCourseFee: null,
         isRefundInstrumentFee: null,
         isRefundTeachingAssistantsFee: null,
-        isMaintenanceFee: null,
-        cloudTeacherAmount: null,
-        isCloudTeacherAmount: null,
-        isRefundMemberFee: null,
-        maintenanceFee: 0,
+        courseViewType: null,
+        hasMaintenance: null,
+        studentName: null,
+        musicGroupName: null,
+        isVisit: false,
         reason: "",
+        userComment: null,
       },
       stepImgs: {
         APPLY: require("@/assets/images/base/clock.png"),
@@ -1237,11 +1242,23 @@ export default {
       gradeList: [],
       ischeckCanReg: false,
       courseViewType: null, // 乐团模式
+      isManage: false,
     };
   },
   created() {},
   mounted() {
     // 通过乐团状态判断显示隐藏的东西
+    let isSuperAdmin = this.$store.getters.isSuperAdmin;
+    let roles = this.$store.getters.roles;
+    if (isSuperAdmin) {
+      this.isManage = true;
+    } else {
+      if (roles.indexof(3) != -1) {
+        this.isManage = true;
+      } else {
+        this.isManage = false;
+      }
+    }
     this.init();
   },
   activated() {
@@ -1720,51 +1737,70 @@ export default {
       this.isEdit = false;
       resetPlanNum(this.leftList).then((res) => {});
     },
-    quitTeam(row) {
-      this.activeRow = row;
-      this.quitVisible = true;
-      this.activeRow.courseViewType = this.courseViewType;
-      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,
-            isRefundMemberFee: 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(() => {});
+    async quitTeam(row) {
+      try {
+        const res = await getRefundsDetail({
+          musicGroupId: this.$route.query.id,
+          userId: row.studentId,
+        });
+        this.quitForm = {
+          ...this.quitForm,
+          ...res.data,
+          courseViewType: this.courseViewType,
+          studentName: row.studentName,
+          musicGroupName: this.teamName,
+          hasMaintenance:row.hasMaintenance
+        };
+
+        this.activeRow = {...row,...res.data};
+
+        this.activeRow.courseViewType = this.courseViewType;
+        this.quitVisible = true;
+        // this.quitForm.cloudTeacherAmount = row.cloudTeacherAmount;
+      } catch (e) {
+        console.log(e);
+      }
+      //  查询退团费用
     },
+    // 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,
+    //         isRefundMemberFee: 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) {
@@ -1775,7 +1811,9 @@ export default {
           })
             .then(() => {
               let row = this.activeRow;
+
               let params = {
+                ...this.quitForm,
                 musicGroupId: this.id,
                 userId: row.studentId,
                 reason: this.quitForm.reason,
@@ -1786,27 +1824,49 @@ export default {
                 maintenanceFee: this.quitForm.maintenanceFee,
                 isRefundMemberFee: this.quitForm.isRefundMemberFee,
               };
-              // 退还乐器练习云教练费用
-              if (this.quitForm.isRefundMemberFee) {
-                params.cloudTeacherAmount = this.quitForm.cloudTeacherAmount;
+              params.returnFeeDto = {
+                accessoriesFee: params.accessoriesFee,
+                courseFee: params.courseFee,
+                isReturnAccessoriesFee: params.isReturnAccessoriesFee,
+                isReturnCourseFee: params.isReturnCourseFee,
+                isReturnMaintenanceFee: params.isReturnMaintenanceFee,
+                isReturnMemberFee: params.isReturnMemberFee,
+                isReturnMusicalFee: params.isReturnMusicalFee,
+                maintenanceFee: params.maintenanceFee,
+                memberFee: params.memberFee,
+                musicalFee: params.musicalFee,
+              };
+              if (this.isManage) {
+                params.status = 'APPROVED'
               } else {
-                params.cloudTeacherAmount = 0;
+                params.status = 'PROCESSING'
+              }
+              if( this.activeRow.memberFee < parseFloat(params.returnFeeDto.memberFee)){
+                this.$message.error('会员金额不能超过默认金额')
+                return
+              }
+              if(this.activeRow.maintenanceFee < parseFloat(params.returnFeeDto.maintenanceFee)){
+                 this.$message.error('乐保金额不能超过默认金额')
+                return
               }
               // 发请求 退团
-              StudentQuit(params).then((res) => {
-                this.quitForm = {
-                  // 退团信息确认
-                  isRefundCourseFee: null,
-                  isRefundInstrumentFee: null,
-                  isRefundTeachingAssistantsFee: null,
-                  isMaintenanceFee: null,
-                  cloudTeacherAmount: null,
-                  isCloudTeacherAmount: null,
-                  maintenanceFee: 0,
-                  reason: "",
-                };
+              applyMusicGroupQuit(params).then((res) => {
                 if (res.code == 200) {
-                  this.$message.success("退团成功");
+                  this.quitForm = {
+                    // 退团信息确认
+                    isRefundCourseFee: null,
+                    isRefundInstrumentFee: null,
+                    isRefundTeachingAssistantsFee: null,
+                    reason: "",
+                    courseViewType: null,
+                    hasMaintenance: null,
+                    studentName: null,
+                    musicGroupName: null,
+                    isVisit: false,
+                    reason: "",
+                    userComment: null,
+                  };
+                  this.$message.success("退团申请成功");
                   this.getList();
                   this.quitVisible = false;
                 }
@@ -2054,12 +2114,13 @@ export default {
           isRefundCourseFee: null,
           isRefundInstrumentFee: null,
           isRefundTeachingAssistantsFee: null,
-          isMaintenanceFee: null,
-          cloudTeacherAmount: null,
-          isCloudTeacherAmount: null,
-          maintenanceFee: 0,
+          courseViewType: null,
+          hasMaintenance: null,
+          studentName: null,
+          musicGroupName: null,
+          isVisit: false,
           reason: "",
-          isRefundMemberFee: null,
+          userComment: null,
         };
         this.$refs["quitForm"].$refs["quitForm"].resetFields();
       }

+ 69 - 52
src/views/teamDetail/components/modals/quite-team.vue

@@ -10,27 +10,29 @@
       <el-row>
         <el-col :span="10">
           <el-form-item label="学员姓名" >
-            <span>张三</span>
+            <span>{{quitForm.studentName}}</span>
           </el-form-item>
         </el-col>
         <el-col :span="12">
           <el-form-item label="乐团名称">
-            <span>张三专属团</span>
+            <span>{{quitForm.musicGroupName}}</span>
           </el-form-item>
         </el-col>
       </el-row>
 
       <el-row>
-        <el-form-item label="是否回访" prop="isVisit">
-          <el-radio v-model.trim="quitForm.isVisit" label="true"
+        <el-form-item label="是否回访" prop="isVisit"   >
+          <el-radio v-model.trim="quitForm.isVisit" :label="true"
+          :disabled='isDisabled'
             >是</el-radio
           >
-          <el-radio v-model.trim="quitForm.isVisit" label="false"
+          <el-radio  :disabled='isDisabled' v-model.trim="quitForm.isVisit" :label="false"
             >否</el-radio
           >
         </el-form-item>
-        <el-form-item label="回访时间" v-if="quitForm.isVisit=='true'">
+        <el-form-item label="回访时间" v-if="quitForm.isVisit" :rules="[{required: true, message: '请选择回访回访时间'}]">
           <el-date-picker
+           :disabled='isDisabled'
             v-model.trim="quitForm.visitTime"
             align="right"
             type="date"
@@ -41,41 +43,44 @@
           ></el-date-picker>
         </el-form-item>
       </el-row>
-      <el-row>
+      <!-- <el-row>
         <el-form-item label="是否退费">
-          <el-radio v-model.trim="quitForm.isQuiteFee" label="true"
+          <el-radio v-model.trim="quitForm.isQuiteFee" :label="true"
             >是</el-radio
           >
-          <el-radio v-model.trim="quitForm.isQuiteFee" label="false"
+          <el-radio v-model.trim="quitForm.isQuiteFee" :label="false"
             >否</el-radio
           >
         </el-form-item>
-      </el-row>
-      <div v-if="quitForm.isQuiteFee == 'true'">
+      </el-row> -->
+      <!-- v-if="quitForm.isQuiteFee" -->
+      <div>
         <el-row>
           <el-form-item
             label="退还会员费用"
-            prop="isRefundMemberFee"
-            v-if="activeRow.courseViewType == 2"
+            prop="isReturnMemberFee"
+            v-if="quitForm.courseViewType == 2"
+            :rules="[{required: true, message: '请选择是否退还会员费用'}]"
           >
-            <el-radio v-model.trim="quitForm.isRefundMemberFee" label="true"
+            <el-radio  :disabled='isDisabled' v-model.trim="quitForm.isReturnMemberFee" :label="true"
               >是</el-radio
             >
-            <el-radio v-model.trim="quitForm.isRefundMemberFee" label="false"
+            <el-radio  :disabled='isDisabled' v-model.trim="quitForm.isReturnMemberFee" :label="false"
               >否</el-radio
             >
           </el-form-item>
           <el-form-item
             label="退还会员金额"
-            prop="cloudTeacherAmount"
+             :rules="[{required: true, message: '请输入会员金额'}]"
+            prop="memberFee"
             v-if="
-              quitForm.isRefundMemberFee &&
-              quitForm.isRefundMemberFee != 'false'
+              quitForm.isReturnMemberFee
             "
           >
             <el-input
+             :disabled='isDisabled'
               type="number"
-              v-model.trim="quitForm.cloudTeacherAmount"
+              v-model.trim="quitForm.memberFee"
               style="width: 180px"
             >
               <template slot="append">元</template>
@@ -86,25 +91,25 @@
         <!-- v-if="activeRow.cloudTeacherAmount > 0" -->
 
         <el-row>
-          <el-form-item label="退还课程费用" prop="isRefundCourseFee">
-            <el-radio v-model.trim="quitForm.isRefundCourseFee" :label="true"
+          <el-form-item label="退还课程费用" prop="isReturnCourseFee"   :rules="[{required: true, message: '请选择是否退还课程费用'}]">
+            <el-radio  :disabled='isDisabled' v-model.trim="quitForm.isReturnCourseFee" :label="true"
               >是</el-radio
             >
-            <el-radio v-model.trim="quitForm.isRefundCourseFee" :label="false"
+            <el-radio  :disabled='isDisabled' v-model.trim="quitForm.isReturnCourseFee" :label="false"
               >否</el-radio
             >
           </el-form-item>
           <el-form-item
             label="退还课程金额"
-            prop="cloudTeacherAmount"
+            prop="courseFee"
             v-if="
-              quitForm.isRefundMemberFee &&
-              quitForm.isRefundMemberFee != 'false'
+            quitForm.isReturnCourseFee
             "
           >
             <el-input
+            disabled
               type="number"
-              v-model.trim="quitForm.cloudTeacherAmount"
+              v-model.trim="quitForm.courseFee"
               style="width: 180px"
             >
               <template slot="append">元</template>
@@ -112,29 +117,31 @@
           </el-form-item>
         </el-row>
         <el-row>
-          <el-form-item label="退还乐器费用" prop="isRefundInstrumentFee">
+          <el-form-item label="退还乐器费用" prop="isReturnMusicalFee"  :rules="[{required: true, message: '请选择是否退还乐器费用'}]">
             <el-radio
-              v-model.trim="quitForm.isRefundInstrumentFee"
+             :disabled='isDisabled'
+              v-model.trim="quitForm.isReturnMusicalFee"
               :label="true"
               >是</el-radio
             >
             <el-radio
-              v-model.trim="quitForm.isRefundInstrumentFee"
+             :disabled='isDisabled'
+              v-model.trim="quitForm.isReturnMusicalFee"
               :label="false"
               >否</el-radio
             >
           </el-form-item>
           <el-form-item
             label="退还乐器金额"
-            prop="cloudTeacherAmount"
+            prop="musicalFee"
             v-if="
-              quitForm.isRefundMemberFee &&
-              quitForm.isRefundMemberFee != 'false'
+              quitForm.isReturnMusicalFee
             "
           >
             <el-input
               type="number"
-              v-model.trim="quitForm.cloudTeacherAmount"
+              disabled
+              v-model.trim="quitForm.musicalFee"
               style="width: 180px"
             >
               <template slot="append">元</template>
@@ -143,31 +150,32 @@
         </el-row>
         <el-row>
           <el-form-item
+          :rules="[{required: true, message: '请选择是否退还教辅费用'}]"
             label="退还教辅费用"
-            prop="isRefundTeachingAssistantsFee"
+            prop="isReturnAccessoriesFee"
           >
             <el-radio
-              v-model.trim="quitForm.isRefundTeachingAssistantsFee"
+             :disabled='isDisabled'
+              v-model.trim="quitForm.isReturnAccessoriesFee"
               :label="true"
               >是</el-radio
             >
             <el-radio
-              v-model.trim="quitForm.isRefundTeachingAssistantsFee"
+             :disabled='isDisabled'
+              v-model.trim="quitForm.isReturnAccessoriesFee"
               :label="false"
               >否</el-radio
             >
           </el-form-item>
           <el-form-item
             label="退还教辅金额"
-            prop="cloudTeacherAmount"
-            v-if="
-              quitForm.isRefundMemberFee &&
-              quitForm.isRefundMemberFee != 'false'
-            "
+            prop="accessoriesFee"
+            v-if="quitForm.isReturnAccessoriesFee"
           >
             <el-input
+               disabled
               type="number"
-              v-model.trim="quitForm.cloudTeacherAmount"
+              v-model.trim="quitForm.accessoriesFee"
               style="width: 180px"
             >
               <template slot="append">元</template>
@@ -177,23 +185,30 @@
         <el-row>
           <el-form-item
             label="退还乐保费用"
-            prop="isMaintenanceFee"
-            v-if="activeRow.hasMaintenance"
+            :rules="[{required: true, message: '请选择是否退还乐保费用'}]"
+            prop="isReturnMaintenanceFee"
+            v-if="quitForm.hasMaintenance"
           >
-            <el-radio v-model.trim="quitForm.isMaintenanceFee" :label="true"
+            <el-radio
+             :disabled='isDisabled'
+             v-model.trim="quitForm.isReturnMaintenanceFee" :label="true"
               >是</el-radio
             >
-            <el-radio v-model.trim="quitForm.isMaintenanceFee" :label="false"
+            <el-radio
+             :disabled='isDisabled'
+             v-model.trim="quitForm.isReturnMaintenanceFee" :label="false"
               >否</el-radio
             >
           </el-form-item>
           <el-form-item
             label="退还乐保金额"
+            :rules="[{required: true, message: '请输入乐保金额'}]"
             prop="maintenanceFee"
-            v-if="quitForm.isMaintenanceFee"
+            v-if="quitForm.hasMaintenance&&quitForm.isReturnMaintenanceFee"
           >
             <el-input
               type="number"
+              disabled
               v-model="quitForm.maintenanceFee"
               style="width: 180px"
             >
@@ -203,17 +218,19 @@
         </el-row>
       </div>
       <el-row>
-        <el-form-item label="申请理由" prop="reason">
+        <el-form-item label="申请理由" prop="userComment">
           <el-input
             type="textarea"
             :rows="3"
-            v-model.trim="quitForm.reason"
+             :disabled='isDisabled'
+            v-model.trim="quitForm.userComment"
             style="width: 455px !important"
           ></el-input>
         </el-form-item>
       </el-row>
-      <el-form-item label="退团原因" prop="reason">
+      <el-form-item label="审批理由" prop="reason">
         <el-input
+         :disabled='isDisabled'
           type="textarea"
           :rows="3"
           v-model.trim="quitForm.reason"
@@ -225,9 +242,9 @@
 </template>
 <script>
 export default {
-  props: ["quitForm", "activeRow"],
+  props: ["quitForm",'isDisabled'],
   mounted() {
-    console.log("quitForm", this.quitForm, "activeRow", this.activeRow);
+    console.log("quitForm", this.quitForm);
   },
   data() {
     return {

+ 160 - 105
src/views/teamDetail/components/studentList.vue

@@ -471,38 +471,38 @@
           align="center"
           width="120px;"
         >
-        <template slot-scope="scope">
-              <div v-if="scope.row.membershipEndTime">
-                <div v-if="scope.row.membershipDay >= 0">
-                  {{ scope.row.membershipEndTime | dayjsFormat }}
-                  <p class="red">剩余{{ scope.row.membershipDay }}天</p>
+          <template slot-scope="scope">
+            <div v-if="scope.row.membershipEndTime">
+              <div v-if="scope.row.membershipDay >= 0">
+                {{ scope.row.membershipEndTime | dayjsFormat }}
+                <p class="red">剩余{{ scope.row.membershipDay }}天</p>
+              </div>
+              <!-- 已过期 -->
+              <div v-else>
+                <!-- 有未生效 -->
+                <div v-if="scope.row.hasNoStartCloudTeacher">
+                  <p>会员未生效</p>
                 </div>
-                <!-- 已过期 -->
+                <!-- 无未生效 -->
                 <div v-else>
-                  <!-- 有未生效 -->
-                  <div v-if="scope.row.hasNoStartCloudTeacher">
-                    <p>会员未生效</p>
-                  </div>
-                  <!-- 无未生效 -->
-                  <div v-else>
-                    {{ scope.row.membershipEndTime | dayjsFormat }}
-                    <p class="red" v-if="scope.row.membershipDay < 0">
-                      已过期{{ Math.abs(scope.row.membershipDay) }}天
-                    </p>
-                  </div>
+                  {{ scope.row.membershipEndTime | dayjsFormat }}
+                  <p class="red" v-if="scope.row.membershipDay < 0">
+                    已过期{{ Math.abs(scope.row.membershipDay) }}天
+                  </p>
                 </div>
+              </div>
 
-                <!-- <div></div>
+              <!-- <div></div>
                 <p v-if="scope.row.hasNoStartCloudTeacher">
                   {{ scope.row.membershipEndTime | dayjsFormat }}
                 </p> -->
-              </div>
+            </div>
 
-              <div v-else class="red">
-                <div v-if="scope.row.hasNoStartCloudTeacher">会员未生效</div>
-                <div v-else>未购买会员</div>
-              </div>
-            </template>
+            <div v-else class="red">
+              <div v-if="scope.row.hasNoStartCloudTeacher">会员未生效</div>
+              <div v-else>未购买会员</div>
+            </div>
+          </template>
         </el-table-column>
         <el-table-column label="备注" prop="remark" align="center">
           <template slot-scope="scope">
@@ -538,13 +538,13 @@
               <el-button
                 type="text"
                 v-if="
-                  permission('musicGroupQuit/directQuitMusicGroup/3852') &&
+                  permission('musicGroupQuit/apply/3852') &&
                   scope.row.studentStatus != 'QUIT'
                 "
                 @click="quieTeamMask(scope.row)"
-                >退团退费</el-button
+                >退团</el-button
               >
-              <el-button
+              <!-- <el-button
                 type="text"
                 v-if="
                   permission('musicGroupQuit/directQuitMusicGroup/3851') &&
@@ -552,7 +552,7 @@
                 "
                 @click="quieTeam(scope.row)"
                 >退团</el-button
-              >
+              > -->
 
               <el-button
                 type="text"
@@ -763,7 +763,7 @@
     </el-dialog>
     <!-- 退团弹窗 -->
     <el-dialog title="退团信息确认" width="700px" :visible.sync="quitVisible">
-      <quiteTeam :quitForm="quitForm" :activeRow="activeRow" ref="quitForm" />
+      <quiteTeam :quitForm="quitForm" ref="quitForm" />
       <span slot="footer" class="dialog-footer question">
         <div>
           <el-popover placement="right" width="500" trigger="click">
@@ -959,6 +959,8 @@ import {
   StudentFeeIsLock,
   updateStudentFee,
   getMusicGroupGradeList,
+  getRefundsDetail,
+  applyMusicGroupQuit,
 } from "@/api/buildTeam";
 import {
   addStudent,
@@ -1027,14 +1029,16 @@ export default {
       organizationCourseUnitPriceSettings: [],
       quitForm: {
         // 退团信息确认
-        isCloudTeacherAmount: null,
-        cloudTeacherAmount: null,
         isRefundCourseFee: null,
         isRefundInstrumentFee: null,
         isRefundTeachingAssistantsFee: null,
-        isMaintenanceFee: null,
-        maintenanceFee: 0,
+        courseViewType: null,
+        hasMaintenance: null,
+        studentName: null,
+        musicGroupName: null,
+        isVisit: false,
         reason: "",
+        userComment: null,
       },
       classMask: {
         studentName: "",
@@ -1176,6 +1180,7 @@ export default {
       organId: "",
       addTryVisible: false,
       memberRankList: [],
+      isManage:false
     };
   },
   components: {
@@ -1206,6 +1211,17 @@ export default {
   //   this.init();
   // },
   async mounted() {
+      let isSuperAdmin = this.$store.getters.isSuperAdmin;
+    let roles = this.$store.getters.roles;
+    if (isSuperAdmin) {
+      this.isManage = true;
+    } else {
+      if (roles.indexof(3) != -1) {
+        this.isManage = true;
+      } else {
+        this.isManage = false;
+      }
+    }
     try {
       const res = await getOrganizationCourseUnitPriceSettings({
         rows: 9999,
@@ -1471,6 +1487,7 @@ export default {
             .then(() => {
               let row = this.activeRow;
               let params = {
+                ...this.quitForm,
                 musicGroupId: this.teamid,
                 userId: row.userId,
                 reason: this.quitForm.reason,
@@ -1481,27 +1498,54 @@ export default {
                 maintenanceFee: this.quitForm.maintenanceFee,
                 isRefundMemberFee: this.quitForm.isRefundMemberFee,
               };
-              // 退还乐器练习云教练费用
-              if (this.quitForm.isRefundMemberFee) {
-                params.cloudTeacherAmount = this.quitForm.cloudTeacherAmount;
+              params.returnFeeDto = {
+                accessoriesFee: params.accessoriesFee,
+                courseFee: params.courseFee,
+                isReturnAccessoriesFee: params.isReturnAccessoriesFee,
+                isReturnCourseFee: params.isReturnCourseFee,
+                isReturnMaintenanceFee: params.isReturnMaintenanceFee,
+                isReturnMemberFee: params.isReturnMemberFee,
+                isReturnMusicalFee: params.isReturnMusicalFee,
+                maintenanceFee: params.maintenanceFee,
+                memberFee: params.memberFee,
+                musicalFee: params.musicalFee,
+              };
+              if (this.isManage) {
+                params.status = "APPROVED";
               } else {
-                params.cloudTeacherAmount = 0;
+                params.status = "PROCESSING";
+              }
+              // 退还乐器练习云教练费用
+              if (
+                this.activeRow.memberFee <
+                parseFloat(params.returnFeeDto.memberFee)
+              ) {
+                this.$message.error("会员金额不能超过默认金额");
+                return;
+              }
+              if (
+                this.activeRow.maintenanceFee <
+                parseFloat(params.returnFeeDto.maintenanceFee)
+              ) {
+                this.$message.error("乐保金额不能超过默认金额");
+                return;
               }
               // 发请求 退团
-              StudentQuit(params).then((res) => {
-                this.quitForm = {
-                  // 退团信息确认
-                  isRefundCourseFee: null,
-                  isRefundInstrumentFee: null,
-                  isRefundTeachingAssistantsFee: null,
-                  isMaintenanceFee: null,
-                  cloudTeacherAmount: null,
-                  isCloudTeacherAmount: null,
-                  isRefundMemberFee: null,
-                  maintenanceFee: 0,
-                  reason: "",
-                };
+              applyMusicGroupQuit(params).then((res) => {
                 if (res.code == 200) {
+                  this.quitForm = {
+                    // 退团信息确认
+                    isRefundCourseFee: null,
+                    isRefundInstrumentFee: null,
+                    isRefundTeachingAssistantsFee: null,
+                    courseViewType: null,
+                    hasMaintenance: null,
+                    studentName: null,
+                    musicGroupName: null,
+                    isVisit: false,
+                    reason: "",
+                    userComment: null,
+                  };
                   this.$message.success("退团成功");
                   this.getList();
                   this.quitVisible = false;
@@ -1688,50 +1732,68 @@ export default {
         }
       });
     },
-    quieTeamMask(row) {
-      this.activeRow = row;
+    async quieTeamMask(row) {
       this.activeRow.courseViewType = this.baseInfo.courseViewType;
+
       this.quitVisible = true;
-      this.quitForm.cloudTeacherAmount = row.cloudTeacherAmount;
-    },
-    quieTeam(row) {
-      this.$prompt("请输入退团原因", "提示", {
-        confirmButtonText: "确定",
-        cancelButtonText: "取消",
-        type: "warning",
-        inputPattern: /\S/,
-        inputErrorMessage: "请输入退团原因",
-      })
-        .then((val) => {
-          // 发请求 退团
-          StudentQuit({
-            musicGroupId: this.teamid,
-            userId: row.userId,
-            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(() => {});
+      try {
+        const res = await getRefundsDetail({
+          musicGroupId: this.$route.query.id,
+          userId: row.userId,
+        });
+        this.quitForm = {
+          ...this.quitForm,
+          ...res.data,
+          courseViewType: this.baseInfo.courseViewType,
+          studentName: row.realName,
+          musicGroupName: this.baseInfo.name,
+          hasMaintenance: row.hasMaintenance,
+        };
+        this.activeRow = {...row,...res.data};
+        this.quitVisible = true;
+        // this.quitForm.cloudTeacherAmount = row.cloudTeacherAmount;
+      } catch (e) {
+        console.log(e);
+      }
     },
+    // quieTeam(row) {
+    //   this.$prompt("请输入退团原因", "提示", {
+    //     confirmButtonText: "确定",
+    //     cancelButtonText: "取消",
+    //     type: "warning",
+    //     inputPattern: /\S/,
+    //     inputErrorMessage: "请输入退团原因",
+    //   })
+    //     .then((val) => {
+    //       // 发请求 退团
+    //       StudentQuit({
+    //         musicGroupId: this.teamid,
+    //         userId: row.userId,
+    //         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(() => {});
+    // },
     checkPhone(val) {
       var regu = /^1[3456789]\d{9}$/;
       var re = new RegExp(regu);
@@ -1821,7 +1883,6 @@ export default {
       this.visitForm.purpose = val[1];
     },
     submitAddVisit() {
-      console.log(this.$refs.visitForm);
       this.$refs.visitForm.validate((res) => {
         if (res) {
           addVisit(cleanDeep(this.visitForm)).then((res) => {
@@ -1912,13 +1973,6 @@ export default {
         this.getMusicClass();
       }
     },
-    "quitForm.isMaintenanceFee"(val) {
-      if (val) {
-        this.quitForm.maintenanceFee = 300;
-      } else {
-        this.quitForm.maintenanceFee = 0;
-      }
-    },
     quitVisible(val) {
       if (!val) {
         this.quitForm = {
@@ -1926,12 +1980,13 @@ export default {
           isRefundCourseFee: null,
           isRefundInstrumentFee: null,
           isRefundTeachingAssistantsFee: null,
-          isMaintenanceFee: null,
-          cloudTeacherAmount: null,
-          isCloudTeacherAmount: null,
-          isRefundMemberFee: null,
-          maintenanceFee: 0,
+          courseViewType: null,
+          hasMaintenance: null,
+          studentName: null,
+          musicGroupName: null,
+          isVisit: false,
           reason: "",
+          userComment: null,
         };
         this.$refs["quitForm"].$refs["quitForm"].resetFields();
       }
@@ -2125,6 +2180,6 @@ export default {
   padding: 20px 0 20px 110px;
 }
 .red {
-  color:red;
+  color: red;
 }
 </style>

+ 145 - 23
src/views/withdrawal-application/index.vue

@@ -71,19 +71,17 @@
         <el-table-column prop="createTime" label="申请时间">
           <template slot-scope="scope">
             <div>
-              {{ scope.row.createTime|dateForMinFormat}}
+              {{ scope.row.createTime | dateForMinFormat }}
             </div>
           </template>
         </el-table-column>
         <el-table-column prop="createTime" label="申请人"></el-table-column>
         <el-table-column prop="createTime" label="退费金额">
-                 <template slot-scope="scope">
+          <template slot-scope="scope">
             <div>
-              <p v-if="scope.row.status=='PROCESSING'">
-                --
-              </p>
+              <p v-if="scope.row.status == 'PROCESSING'">--</p>
               <p v-else>
-                 {{ scope.row.returnTotalFee|moneyFormat}}
+                {{ scope.row.returnTotalFee | moneyFormat }}
               </p>
             </div>
           </template>
@@ -115,9 +113,16 @@
             <el-button
               type="text"
               v-if="permission('musicGroupQuit/quitMusicGroup/quit')"
-              :disabled="scope.row.status != 'PROCESSING'"
+              :disabled="(scope.row.status != 'PROCESSING'||scope.row.status =='DENIED'||scope.row.status =='CANCELED')||!isManage&&currentApproveRole=='4'"
               @click="quieTeamMask(scope.row)"
-              >审核</el-button
+              >立即处理</el-button
+            >
+            <el-button
+              type="text"
+              v-if="permission('musicGroupQuit/quitMusicGroup/quit')"
+              :disabled="scope.row.status == 'PROCESSING'"
+              @click="quieTeamMask(scope.row,'look')"
+              >查看</el-button
             >
             <!-- <el-button
               type="text"
@@ -143,13 +148,14 @@
         @pagination="FetchList"
       />
     </div>
-    <el-dialog title="审核" width="700px" :visible.sync="quitVisible">
+    <el-dialog :title="isDisabled?'查看':'立即处理'" width="700px" :visible.sync="quitVisible">
       <quitModal
-        v-if="quitVisible && detail"
-        :activeRow="detail"
+        v-if="quitVisible"
         :quitForm="quitForm"
         @close="quitVisible = false"
         @submited="FetchList"
+        :isDisabled="isDisabled"
+        ref="musicForm"
       />
       <span slot="footer" class="dialog-footer question">
         <div>
@@ -171,9 +177,27 @@
             >
           </el-popover>
         </div>
-        <div>
-          <el-button @click="quitVisible = false">取 消</el-button>
-          <el-button type="primary" @click="submitInfo">确 定</el-button>
+        <div v-if="!isDisabled">
+          <el-button
+            type="primary"
+            v-permission="'musicGroupQuit/quitMusicGroup'"
+            v-if="!isManage"
+            @click="submitInfo('PROCESSING')"
+            >提交审核</el-button
+          >
+          <el-button
+            v-else
+            type="primary"
+            v-permission="'musicGroupQuit/quitMusicGroup'"
+            @click="submitInfo('APPROVED')"
+            >同意</el-button
+          >
+          <el-button
+            type="danger"
+            v-permission="'musicGroupQuit/quitMusicGroup'"
+            @click="submitInfo('DENIED')"
+            >拒绝</el-button
+          >
         </div>
       </span>
     </el-dialog>
@@ -202,8 +226,11 @@ import quitModal from "@/views/teamDetail/components/modals/quite-team";
 import quitOnlyModal from "./modals/quitOnly";
 import visit from "./modals/visit";
 import { Export } from "@/utils/downLoadFile";
+import { quitMusicGroup } from "@/api/journal";
 import qs from "qs";
 import { musicGroupQuitQeryPage } from "./api";
+import cleanDeep from "clean-deep";
+import { musicGroupQuit } from "@/api/journal";
 import { withdrawalStatus } from "@/constant";
 const initSearch = {
   search: "",
@@ -234,16 +261,30 @@ export default {
         isRefundCourseFee: null,
         isRefundInstrumentFee: null,
         isRefundTeachingAssistantsFee: null,
-        isMaintenanceFee: null,
-        cloudTeacherAmount: null,
-        isCloudTeacherAmount: null,
-        isRefundMemberFee: null,
-        maintenanceFee: 0,
         reason: "",
+        courseViewType: null,
+        hasMaintenance: null,
+        studentName: null,
+        musicGroupName: null,
+        isVisit: false,
+        userComment: null,
       },
+      isManage: false,
+      isDisabled:false
     };
   },
   mounted() {
+    let isSuperAdmin = this.$store.getters.isSuperAdmin;
+    let roles = this.$store.getters.roles;
+    if (isSuperAdmin) {
+      this.isManage = true;
+    } else {
+      if (roles.indexof(3) != -1) {
+        this.isManage = true;
+      } else {
+        this.isManage = false;
+      }
+    }
     this.FetchList();
   },
   methods: {
@@ -260,9 +301,34 @@ export default {
       this.searchForm = { ...initSearch };
       this.submit();
     },
-    quieTeamMask(row) {
-      this.quitVisible = true;
-      this.detail = row;
+    async quieTeamMask(row,look) {
+      await musicGroupQuit({ id: row.id }).then((res) => {
+        if (res.code == 200) {
+          if(look=='look'){
+            this.isDisabled = true
+          }else{
+            this.isDisabled = false
+          }
+          this.musicForm = res.data;
+          console.log(res.data.userComment)
+          this.activeRow = { ...row, ...res.data.returnFeeDto };
+          this.quitForm.courseViewType = res.data.musicGroup.courseViewType;
+          this.quitForm.userComment = res.data.userComment;
+          this.quitForm.isVisit = res.data.isVisit;
+          this.quitForm.visitTime = res.data.visitTime;
+          this.quitForm.studentName = res.data.user?.username;
+          this.quitForm.musicGroupName = res.data.musicGroup?.name;
+          this.quitForm.hasMaintenance = res.data.hasMaintenance;
+          this.quitForm.reason = res.data.reason
+          this.quitForm.id = res.data.id;
+          this.quitForm = { ...this.quitForm, ...res.data.returnFeeDto };
+          this.quitVisible = true;
+        } else {
+          this.$message.error(res.msg);
+        }
+      });
+
+      // this.detail = row;
     },
     quieTeam(row) {
       this.quitOnlyVisible = true;
@@ -300,7 +366,63 @@ export default {
         "您确定导出退团申请列表?"
       );
     },
-    submitInfo() {},
+    submitInfo(status) {
+      this.$confirm("确定此操作吗?", "提示", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning",
+      })
+        .then(async () => {
+          let query = this.quitForm;
+          query.status = status;
+          query.returnFeeDto = {
+            accessoriesFee: query.accessoriesFee,
+            courseFee: query.courseFee,
+            isReturnAccessoriesFee: query.isReturnAccessoriesFee,
+            isReturnCourseFee: query.isReturnCourseFee,
+            isReturnMaintenanceFee: query.isReturnMaintenanceFee,
+            isReturnMemberFee: query.isReturnMemberFee,
+            isReturnMusicalFee: query.isReturnMusicalFee,
+            maintenanceFee: query.maintenanceFee,
+            memberFee: query.memberFee,
+            musicalFee: query.musicalFee,
+          };
+          if (
+            this.activeRow.memberFee < parseFloat(query.returnFeeDto.memberFee)
+          ) {
+            this.$message.error("会员金额不能超过默认金额");
+            return;
+          }
+          if (
+            this.activeRow.maintenanceFee <
+            parseFloat(query.returnFeeDto.maintenanceFee)
+          ) {
+            this.$message.error("乐保金额不能超过默认金额");
+            return;
+          }
+          await quitMusicGroup(cleanDeep(query)).then((res) => {
+            this.$message.success("处理成功");
+            this.activeRow = null;
+            if (this.$refs["musicForm"].$refs.quitForm) {
+              this.$refs["musicForm"].$refs.quitForm.resetFields();
+            }
+            this.quitVisible = false;
+            this.FetchList();
+          });
+        })
+        .catch((e) => {
+          console.log(e);
+        });
+      // 乐团主管这里
+    },
   },
 };
 </script>
+<style lang="scss" scoped>
+.dialog-footer.question {
+  display: flex;
+  flex-direction: row;
+  justify-content: space-between;
+}
+
+</style>

+ 175 - 57
src/views/workBenchManager/journal/model/musicGroup.vue

@@ -1,41 +1,41 @@
 <template>
   <div>
-    <el-form
+    <el-alert
+      title="已拒绝"
+      show-icon
+      center
+      v-if="musicForm.status == 'DENIED'"
+      :closable="false"
+      class="alert"
+      type="error"
+    ></el-alert>
+    <el-alert
+      title="已处理"
+      show-icon
+      center
+      v-if="musicForm.status == 'APPROVED'"
+      :closable="false"
+      class="alert"
+      type="success"
+    ></el-alert>
+    <el-alert
+      title="已取消"
+      show-icon
+      center
+      v-if="musicForm.status == 'CANCELED'"
+      :closable="false"
+      class="alert"
+      type="info"
+    ></el-alert>
+    <!-- <el-form
       ref="musicForm"
       :model="quitForm"
       :rules="quitRules"
       status-icon
       class="musicForm"
       label-width="120px"
-    >
-      <el-alert
-        title="已拒绝"
-        show-icon
-        center
-        v-if="musicForm.status == 'DENIED'"
-        :closable="false"
-        class="alert"
-        type="error"
-      ></el-alert>
-      <el-alert
-        title="已处理"
-        show-icon
-        center
-        v-if="musicForm.status == 'APPROVED'"
-        :closable="false"
-        class="alert"
-        type="success"
-      ></el-alert>
-      <el-alert
-        title="已取消"
-        show-icon
-        center
-        v-if="musicForm.status == 'CANCELED'"
-        :closable="false"
-        class="alert"
-        type="info"
-      ></el-alert>
-      <el-form-item label="学员姓名">
+    > -->
+    <!-- <el-form-item label="学员姓名">
         <el-input disabled v-model.trim="musicForm.user.username"></el-input>
       </el-form-item>
       <el-form-item label="乐团名称">
@@ -59,9 +59,9 @@
         <el-radio v-model.trim="quitForm.isRefundMemberFee" label="false"
           >否</el-radio
         >
-      </el-form-item>
+      </el-form-item> -->
 
-      <el-form-item
+    <!-- <el-form-item
         label="退还云教练金额"
         prop="cloudTeacherAmount"
         v-if="
@@ -149,9 +149,57 @@
           :disabled="musicForm.status != 'PROCESSING'"
           v-model.trim="quitForm.reason"
         ></el-input>
-      </el-form-item>
-    </el-form>
-    <div
+      </el-form-item> -->
+    <!-- </el-form> -->
+    <quiteTeam :quitForm="quitForm" ref="musicForm" />
+    <span
+      slot="footer"
+      class="dialog-footer question"
+      v-if="musicForm.status == 'PROCESSING'"
+    >
+      <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
+          type="primary"
+          v-permission="'musicGroupQuit/quitMusicGroup/conform'"
+          v-if="!isManage"
+          @click="onSubmitGroup(musicForm, 'PROCESSING')"
+          >提交审核</el-button
+        >
+        <el-button
+          v-else
+          type="primary"
+          v-permission="'musicGroupQuit/quitMusicGroup/conform'"
+          @click="onSubmitGroup(musicForm, 'APPROVED')"
+          >同意</el-button
+        >
+        <el-button
+          type="danger"
+          v-permission="'musicGroupQuit/quitMusicGroup'"
+          @click="onSubmitGroup(musicForm, 'DENIED')"
+          >拒绝</el-button
+        >
+      </div>
+    </span>
+    <!-- <div
       slot="footer"
       class="dialog-footer"
       v-if="musicForm.status == 'PROCESSING'"
@@ -168,7 +216,7 @@
         @click="onSubmitGroup(musicForm, 'DENIED')"
         >拒绝</el-button
       >
-    </div>
+    </div> -->
   </div>
 </template>
 
@@ -180,10 +228,11 @@ import {
 } from "@/api/journal";
 import Tooltip from "@/components/Tooltip";
 import cleanDeep from "clean-deep";
+import quiteTeam from "@/views/teamDetail/components/modals/quite-team";
 import dayjs from "dayjs";
 export default {
   props: ["dialogDetail"],
-  components: { Tooltip },
+  components: { Tooltip, quiteTeam },
   data() {
     var validateReason = (rule, value, callback) => {
       if (value === "") {
@@ -226,37 +275,65 @@ export default {
         isRefundInstrumentFee: null,
         isRefundTeachingAssistantsFee: null,
         reason: "",
+        courseViewType: null,
+        hasMaintenance: null,
+        studentName: null,
+        musicGroupName: null,
+        isVisit: false,
+        reason: "",
+        userComment: null,
       },
       quitRules: {
         isRefundCourseFee: [
-          { validator: validateFee1, trigger: "change, blur" },
+          { required: true, message: "请选择是否退还课程费用" },
         ],
         isRefundInstrumentFee: [
-          { validator: validateFee2, trigger: "change, blur" },
+          { required: true, message: "请选择是否退还乐器费用" },
         ],
         isRefundTeachingAssistantsFee: [
-          { validator: validateFee3, trigger: "change, blur" },
+          { required: true, message: "请选择是否退还教辅费用" },
+        ],
+        isReturnMemberFee: [
+          { required: true, message: "请选择是否退还会员费用" },
         ],
         isMaintenanceFee: [{ required: true, message: "选择是否退还乐保费用" }],
         maintenanceFee: [{ required: true, message: "请输入退还乐保金额" }],
+        memberFee: [{ required: true, message: "请输入退还会员金额" }],
         reason: [{ validator: validateReason, trigger: "blur" }],
+        userComment: [{ required: true, message: "请输入申请理由" }],
       },
+      isManage: false,
     };
   },
   mounted() {
     this.__init();
   },
   watch: {
-    "quitForm.isMaintenanceFee"(val) {
-      if (val) {
-        this.quitForm.maintenanceFee = 300;
-      } else {
-        this.quitForm.maintenanceFee = 0;
-      }
-    },
+    // "quitForm.isMaintenanceFee"(val) {
+    //   if (val) {
+    //     this.quitForm.maintenanceFee = 300;
+    //   } else {
+    //     this.quitForm.maintenanceFee = 0;
+    //   }
+    // },
   },
   methods: {
     async __init() {
+      // 获取权限
+      let isSuperAdmin = this.$store.getters.isSuperAdmin;
+      let roles = this.$store.getters.roles;
+      if (isSuperAdmin) {
+        this.isManage = true;
+      } else {
+        if (roles.indexof(3) != -1) {
+          this.isManage = true;
+        } else {
+          this.isManage = false;
+        }
+      }
+      //   isSuperAdmin:state=>state.user.isSuperAdmin,
+      // roles:state=>state.user.roles,
+
       let { memo } = this.dialogDetail;
       memo = memo ? JSON.parse(memo) : null;
       if (!memo) {
@@ -281,11 +358,18 @@ export default {
         await musicGroupQuit({ id: memo.Id }).then((res) => {
           if (res.code == 200) {
             this.musicForm = res.data;
-            console.log(this.musicForm)
-            if (this.$refs.quitForm) {
-              this.$refs.quitForm.resetFields();
+            if (this.$refs["musicForm"].$refs.quitForm) {
+              this.$refs["musicForm"].$refs.quitForm.resetFields();
             }
-            this.quitForm.reason = res.data.reason;
+            this.activeRow = {...res.data.returnFeeDto }
+            this.quitForm.courseViewType = res.data.musicGroup.courseViewType;
+            this.quitForm.userComment = res.data.userComment;
+            this.quitForm.isVisit = res.data.isVisit;
+            this.quitForm.visitTime = res.data.visitTime;
+            this.quitForm.studentName = res.data.user?.username;
+            this.quitForm.musicGroupName = res.data.musicGroup?.name;
+            this.quitForm.hasMaintenance = res.data.hasMaintenance;
+            this.quitForm = { ...this.quitForm, ...res.data.returnFeeDto };
           } else {
             this.$message.error(res.msg);
           }
@@ -294,14 +378,18 @@ export default {
     },
     onSubmitGroup(params, status) {
       if (status == "DENIED") {
-        this.$refs["musicForm"].clearValidate();
-        this.$refs["musicForm"].validateField("reason", (res) => {
-          if (!res) {
-            this.onSubmitGroups(params, status);
+        this.$refs["musicForm"].$refs.quitForm.clearValidate();
+        this.$refs["musicForm"].$refs.quitForm.validateField(
+          "reason",
+          (res) => {
+            if (!res) {
+              this.onSubmitGroups(params, status);
+            }
           }
-        });
+        );
       } else {
-        this.$refs["musicForm"].validate((res) => {
+        // console.log(this.$refs.musicForm)
+        this.$refs["musicForm"].$refs.quitForm.validate((res) => {
           if (res) {
             this.onSubmitGroups(params, status);
           }
@@ -317,6 +405,31 @@ export default {
         .then(async () => {
           let query = this.quitForm;
           (query.id = params.id), (query.status = status);
+          query.returnFeeDto = {
+            accessoriesFee: query.accessoriesFee,
+            courseFee: query.courseFee,
+            isReturnAccessoriesFee: query.isReturnAccessoriesFee,
+            isReturnCourseFee: query.isReturnCourseFee,
+            isReturnMaintenanceFee: query.isReturnMaintenanceFee,
+            isReturnMemberFee: query.isReturnMemberFee,
+            isReturnMusicalFee: query.isReturnMusicalFee,
+            maintenanceFee: query.maintenanceFee,
+            memberFee: query.memberFee,
+            musicalFee: query.musicalFee,
+          };
+                 if (
+            this.activeRow.memberFee < parseFloat(query.returnFeeDto.memberFee)
+          ) {
+            this.$message.error("会员金额不能超过默认金额");
+            return;
+          }
+          if (
+            this.activeRow.maintenanceFee <
+            parseFloat(query.returnFeeDto.maintenanceFee)
+          ) {
+            this.$message.error("乐保金额不能超过默认金额");
+            return;
+          }
           await quitMusicGroup(cleanDeep(query)).then((res) => {
             this.$message.success("处理成功");
             this.$listeners.close();
@@ -338,4 +451,9 @@ export default {
 .alert {
   margin-bottom: 10px;
 }
+.dialog-footer.question {
+  display: flex;
+  flex-direction: row;
+  justify-content: space-between;
+}
 </style>