瀏覽代碼

关闭乐团

wolyshaw 4 年之前
父節點
當前提交
1575d76e28

+ 1 - 0
src/utils/searchArray.js

@@ -107,6 +107,7 @@ export const musicGroupStatus = [
   { value: 'AUDIT_FAILED', text: '审核失败' },
   { value: 'CANCELED', text: '取消' },
   { value: 'FEE_AUDIT', text: '费用审核中' },
+  { value: 'CLOSE', text: '已关闭' },
 ]
 
 export const vipGroupStatus = [

+ 2 - 1
src/utils/vueFilter.js

@@ -325,7 +325,8 @@ Vue.filter('teamStatus', value => {
     AUDIT: '乐团审核中',
     DRAFT: '编辑中',
     AUDIT_FAILED: '审核失败',
-    FEE_AUDIT: '费用审核中'
+    FEE_AUDIT: '费用审核中',
+    CLOSE: '已关闭',
   }
   return template[value]
 })

+ 8 - 0
src/views/teamBuild/api.js

@@ -23,3 +23,11 @@ export const batchDelStudentRegistration = data => request2({
   method: 'post',
   requestType: 'json'
 })
+
+// 关闭乐团
+export const closeMusicGroup = data => request2({
+  url: '/api-web/musicGroup/closeMusicGroup',
+  data,
+  method: 'post',
+  requestType: 'json'
+})

+ 104 - 0
src/views/teamBuild/modals/close-studens.vue

@@ -0,0 +1,104 @@
+<template>
+  <div>
+    <el-form :model="moneys" ref="form">
+      <el-table
+        style="width: 100%"
+        max-height="300px"
+        :header-cell-style="{ background: '#EDEEF0', color: '#444' }"
+        :data="list"
+      >
+        <el-table-column prop="name" align="center" label="学员姓名">
+          <template slot-scope="scope">
+            <copy-text>{{ scope.row.name }}</copy-text>
+          </template>
+        </el-table-column>
+        <el-table-column prop="parentsName" align="center" label="家长姓名">
+          <template slot-scope="scope">
+            <copy-text>{{ scope.row.parentsName }}</copy-text>
+          </template>
+        </el-table-column>
+        <el-table-column prop="parentsPhone" align="center" label="手机号码" width="130">
+          <template slot-scope="scope">
+            <copy-text>{{ scope.row.parentsPhone }}</copy-text>
+          </template>
+        </el-table-column>
+        <el-table-column prop="classGroupName" align="center" label="班级">
+        </el-table-column>
+        <el-table-column prop="subjectName" align="center" label="声部">
+          <template slot-scope="scope">
+            <copy-text>{{ scope.row.subjectName }}</copy-text>
+          </template>
+        </el-table-column>
+        <el-table-column prop="surplusCourseFee" align="center" label="退费金额(元)" width="150">
+          <template slot-scope="scope">
+            <el-form-item :prop="'' + scope.row.userId">
+              <el-input-number
+                :min="0"
+                :max="scope.row.surplusCourseFee"
+                size="mini"
+                :controls="false"
+                :precision="0"
+                v-model="moneys[scope.row.userId]"
+                placeholder="请输入退费金额"
+              />
+            </el-form-item>
+          </template>
+        </el-table-column>
+      </el-table>
+    </el-form>
+    <div slot="footer" class="dialog-footer">
+      <el-button @click="$emit('close')">取 消</el-button>
+      <el-button type="primary" @click="submit">确认</el-button>
+    </div>
+  </div>
+</template>
+<script>
+import { teamSoundStudent } from '@/api/buildTeam'
+import { closeMusicGroup } from '../api'
+export default {
+  props: ['detail'],
+  mounted() {
+    this.FetchList()
+  },
+  data() {
+    return {
+       list: [],
+       moneys: {}
+    }
+  },
+  methods: {
+    async FetchList() {
+      const res = await teamSoundStudent({
+        musicGroupId: this.detail?.id,
+      })
+      this.list = res.data
+      const data = {}
+      for (const item of res.data) {
+        data[item.userId] = item.surplusCourseFee
+      }
+      this.moneys = data
+    },
+    async submit() {
+      try {
+        await this.$confirm('是否确认关闭乐团', '提示', {
+          type: 'warning'
+        })
+        await closeMusicGroup({
+          musicGroupId: this.detail?.id,
+          userReBack: this.moneys
+        })
+        this.$message.success('关闭成功')
+        this.$emit('submited')
+        this.$emit('close')
+      } catch (error) {}
+    }
+  }
+}
+</script>
+<style lang="less" scoped>
+  .dialog-footer{
+    margin-top: 20px;
+    display: block;
+    text-align: right;
+  }
+</style>

+ 1 - 1
src/views/teamBuild/signupList.vue

@@ -65,7 +65,7 @@
           </div>
         </div>
       </div>
-      <el-dialog title="选择合并乐团" :visible.sync="mergeVisible" width="900px">
+      <el-dialog title="选择合并乐团" :visible.sync="mergeVisible" width="950px">
         <mergeMusic v-if="mergeVisible" style="padding: 0 20px;" :organId="organId" @close="mergeVisible = false"/>
       </el-dialog>
       <!--  stepImgs: {

+ 16 - 1
src/views/teamDetail/teamList.vue

@@ -192,6 +192,10 @@
                 <el-button v-if="permission('recharge/findAll')"
                            type="text"
                            @click="lookSteam(scope.row)">乐团日志</el-button>
+                <!-- 进行中 关闭 -->
+                <el-button type="text"
+                           v-if="scope.row.status == 'PROGRESS' && permission('musicGroup/closeMusicGroup')"
+                           @click="closeTeamDetail(scope.row)">关闭乐团</el-button>
                 <!-- 进行中 查看 -->
                 <el-button type="text"
                            v-if="scope.row.status == 'PROGRESS' && permission('/teamDetails')"
@@ -272,6 +276,9 @@
                      @click="showSteam=false">确 定</el-button>
         </div>
       </el-dialog>
+      <el-dialog :visible.sync="closeVisible" title="确认学员" width="800px">
+        <closeStudens v-if="closeVisible" :detail="closeDetail" @close="closeVisible = false" @submited="getList"/>
+      </el-dialog>
 
     </div>
   </div>
@@ -284,10 +291,13 @@ import { musicGroupStatus } from '@/utils/searchArray'
 import { isObject } from 'util'
 import { permission } from '@/utils/directivePage'
 import teamSteam from './teamListComponent/teamSteam'
+import closeStudens from '../teamBuild/modals/close-studens'
 export default {
   name: "teamList",
   data () {
     return {
+      closeDetail: {},
+      closeVisible: false,
       topForm: {
         teamName: '',
         status: '',
@@ -314,7 +324,8 @@ export default {
   },
   components: {
     pagination,
-    teamSteam
+    teamSteam,
+    closeStudens
   },
   mounted () {
     this.init();
@@ -450,6 +461,10 @@ export default {
 
       }
     },
+    closeTeamDetail(row) {
+      this.closeVisible = true
+      this.closeDetail = {...row}
+    },
     onTeamOpeation (type, row) {
       if (type == 'start') {
         this.$confirm('是否确定开启乐团?', '提示', {