Browse Source

06/17 18:18

111
mo 5 years ago
parent
commit
f19caffc34

+ 15 - 4
src/api/buildTeam.js

@@ -1179,6 +1179,17 @@ export function addMusicGroupPaymentCalenderStudent (data) {
     data: qs.stringify(data)
   })
 }
+
+// 删除学生缴费
+export function delMusicGroupPaymentCalenderStudent (data) {
+  return request({
+    url: api + '/musicGroupPaymentCalenderDetail/batchDel',
+    method: 'post',
+    data: qs.stringify(data)
+  })
+}
+
+
 // 删除缴费周期 musicGroupPaymentCalender/del
 export function delMusicGroupPaymentCalender (data) {
   return request({
@@ -1225,12 +1236,12 @@ export function getMusicGroupPaymentCalenderDetail (data) {
   })
 }
 
-// 学员基础信息列表
+// 学员基础信息列表 /musicGroupStudentFee/queryPage
 export function getMusicGroupStudentFee (data) {
   return request({
-    url: api + '/musicGroupStudentFee/queryPage',
-    method: 'get',
-    params: data
+    url: api + '/musicGroupPaymentCalenderDetail/queryFeeStudents',
+    method: 'post',
+    data: qs.stringify(data)
   })
 }
 

+ 10 - 1
src/api/zeroManager.js

@@ -27,10 +27,19 @@ export function removeZero (data) {
 }
 
 // 根据用户编号获取用户信息
-export function getBasic(data) {
+export function getBasic (data) {
   return request({
     url: '/api-auth/user/getBasic',
     method: 'get',
     params: data
   })
+}
+
+// 修改缴费状态
+export function updateOpenFlag (data) {
+  return request({
+    url: api + '/sporadicChargeInfo/updateOpenFlag',
+    method: 'POST',
+    data: qs.stringify(data)
+  })
 }

+ 53 - 16
src/views/resetTeaming/components/resetPayList.vue

@@ -65,7 +65,6 @@
           <template slot-scope="scope">
             <div>
               <el-button type="text"
-                         v-if="scope.row.paymentStatus != 0"
                          @click="lookDetail(scope.row)"
                          v-permission="'/strudentPayInfo'">查看</el-button>
               <el-button type="text"
@@ -162,6 +161,20 @@
            v-if="codeUrl">{{ codeUrl }}</p>
       </div>
     </el-dialog>
+    <el-dialog title="学员选择"
+               :visible.sync="chioseStudentVisible"
+               width='800px'>
+      <setStudentFee @chioseStudent='chioseStudent'
+                     ref='setStudentFee'
+                     :clearTale="clearStduent"></setStudentFee>
+      <div slot="footer"
+           class="dialog-footer">
+        <el-button @click="chioseStudentVisible = false">取 消</el-button>
+        <el-button type="primary"
+                   @click="submitNewPay">确 定</el-button>
+
+      </div>
+    </el-dialog>
   </div>
 </template>
 <script>
@@ -172,8 +185,9 @@ import load from "@/utils/loading";
 import QRCode from 'qrcodejs2'
 import { vaildStudentUrl } from '@/utils/validate'
 import { addMusicGroupPaymentCalender, getMusicGroupPaymentCalender, resetMusicGroupPaymentCalender, delMusicGroupPaymentCalender } from "@/api/buildTeam";
+import setStudentFee from './studentPayBase'
 export default {
-  components: { pagination },
+  components: { pagination, setStudentFee },
   data () {
     return {
       searchForm: {
@@ -208,6 +222,9 @@ export default {
       qrcode: null,
       codeUrl: null,
       bigin: this.beginDate(),
+      chioseStudentVisible: false,
+      chioseStudentList: [],
+      clearStduent: true
     };
   },
   //生命周期 - 创建完成(可以访问当前this实例)
@@ -218,7 +235,6 @@ export default {
 
     this.init();
 
-
   },
   activated () {
     this.init();
@@ -253,6 +269,9 @@ export default {
         this.codeUrl = vaildStudentUrl() + '/#/SporadicLogin?type=renew&musicGroupId=' + id
       }, 500)
     },
+    chioseStudent (val) {
+      this.chioseStudentList = val;
+    },
     newPay () {
       this.diTitle = '新增缴费'
       this.isNew = true
@@ -301,22 +320,40 @@ export default {
       },
            * 
            */
-          let obj = {}
-          obj.musicGroupId = this.$route.query.id
-          obj.startPaymentDate = this.payForm.startPaymentDate + ' 00:00:00'
-          obj.deadlinePaymentDate = this.payForm.deadlinePaymentDate + ' 23:59:59'
-          obj.type = this.payForm.type
-          obj.memo = this.payForm.memo
-          addMusicGroupPaymentCalender(obj).then(res => {
-            if (res.code == 200) {
-              this.$message.success('恭喜你创建成功')
-              this.payVisible = false;
-              this.getList()
-            }
-          })
+          this.chioseStudentVisible = true
+          return
+
         }
       })
     },
+    submitNewPay () {
+      if (this.chioseStudentList.length < 1) {
+        this.$message.error('请至少选择一名学员')
+        return
+      }
+
+      let obj = {}
+      obj.studentIds = this.chioseStudentList.map(stu => {
+        return stu.userId
+      }).join(',')
+      console.log(obj)
+      obj.musicGroupId = this.$route.query.id
+      obj.startPaymentDate = this.payForm.startPaymentDate + ' 00:00:00'
+      obj.deadlinePaymentDate = this.payForm.deadlinePaymentDate + ' 23:59:59'
+      obj.type = this.payForm.type
+      obj.memo = this.payForm.memo
+      addMusicGroupPaymentCalender(obj).then(res => {
+        if (res.code == 200) {
+          this.$message.success('恭喜你创建成功')
+          this.$refs.setStudentFee.clearTable()
+          this.payVisible = false;
+          this.chioseStudentVisible = false;
+          this.getList()
+        }
+      })
+
+
+    },
     resetPayDate () {
       resetMusicGroupPaymentCalender({ id: this.activeRow.id, startTime: this.payForm.startPaymentDate }).then(res => {
         if (res.code == 200) {

+ 40 - 1
src/views/resetTeaming/components/strudentPayInfo.vue

@@ -19,6 +19,9 @@
            style="color:#ff6a6a"
            v-if="info.paymentStatus == 1">{{'进行中'}}</p>
         <p class="status"
+           style="color:#ff6a6a"
+           v-if="info.paymentStatus == 0">{{'未开始'}}</p>
+        <p class="status"
            style="color:#5ccdb8"
            v-if="info.paymentStatus == 2">{{'已结束'}}</p>
       </div>
@@ -105,7 +108,12 @@
              v-permission="'musicGroupPaymentCalenderDetail/openPayment'">开启缴费</div>
         <div class="newBand"
              @click="addStudentBtn"
+             v-if="info.paymentStatus != 2"
              v-permission="'musicGroupPaymentCalenderDetail/add'">新增学生</div>
+        <div class="newBand"
+             @click="delStudentBtn"
+             v-if="info.paymentStatus == 0"
+             v-permission="'musicGroupPaymentCalenderDetail/batchDel'">删除学生</div>
       </div>
 
       <div class="tableWrap">
@@ -114,6 +122,7 @@
                   :data="tableList"
                   @selection-change="handleSelectionChange">
           <el-table-column type="selection"
+                           :selectable='checkSelect'
                            width="55">
           </el-table-column>
           <el-table-column align="center"
@@ -270,6 +279,7 @@
     <el-dialog :visible.sync="studentVisible"
                width="600">
       <el-table :data="studentList"
+                class="studenTable"
                 ref='singleTable'
                 highlight-current-row
                 @current-change="handleCurrentChange">
@@ -301,7 +311,7 @@ import axios from "axios";
 import { getToken } from "@/utils/auth";
 import pagination from "@/components/Pagination/index";
 import load from "@/utils/loading";
-import { findSound, getmusicGroupPaymentCalenderDetail, openMusicGroupPaymentCalenderDetailPayment, resetMusicGroupPaymentCalenderDetail, getMusicGroupPaymentCalenderDetail, queryCanAddStudent, addMusicGroupPaymentCalenderStudent } from "@/api/buildTeam";
+import { findSound, getmusicGroupPaymentCalenderDetail, openMusicGroupPaymentCalenderDetailPayment, resetMusicGroupPaymentCalenderDetail, getMusicGroupPaymentCalenderDetail, queryCanAddStudent, addMusicGroupPaymentCalenderStudent, delMusicGroupPaymentCalenderStudent } from "@/api/buildTeam";
 
 export default {
   components: { pagination },
@@ -419,6 +429,9 @@ export default {
       }
       this.search()
     },
+    checkSelect (val) {
+      return val.paymentStatus == 'NON_PAYMENT'
+    },
     resetPay () {
       // this.activeRow = row;
       if (this.activeChiose.length < 1) {
@@ -483,6 +496,28 @@ export default {
       })
 
     },
+    delStudentBtn () {
+      if (this.activeChiose.length < 1) {
+        this.$message.error('请至少选择一名学生')
+        return
+      }
+      this.$confirm(`是否删除此学员`, '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      }).then(() => {
+        let musicGroupPaymentCalenderIds = this.activeChiose.map(stu => {
+          return stu.id
+        }).join(',')
+        delMusicGroupPaymentCalenderStudent({ musicGroupPaymentCalenderIds }).then(res => {
+          if (res.code == 200) {
+            this.$message.success(`删除成功`)
+            this.getList()
+          }
+        })
+      }).catch(() => {
+      });
+    },
     handleCurrentChange (val) {
       this.chioseStudent = val;
     },
@@ -523,6 +558,10 @@ export default {
 };
 </script>
 <style lang='scss' scoped>
+.studenTable {
+  height: 300px;
+  overflow: auto;
+}
 .infoMsg {
   margin: 30px 0;
   display: flex;

+ 23 - 12
src/views/resetTeaming/components/studentPayBase.vue

@@ -38,6 +38,7 @@
       <el-table style="width: 100%"
                 :header-cell-style="{background:'#EDEEF0',color:'#444'}"
                 :data="tableList"
+                ref='multipleTable'
                 @selection-change="handleSelectionChange">
         <el-table-column type="selection"
                          width="55">
@@ -46,15 +47,15 @@
                          prop="userId"
                          label="学员编号"></el-table-column>
         <el-table-column align="center"
-                         prop="studentId"
+                         prop="username"
                          label="学员姓名">
-          <template slot-scope="scope">
+          <!-- <template slot-scope="scope">
             <div v-if="scope.row.sysUser">
               {{scope.row.sysUser.username}}
             </div>
-          </template>
+          </template> -->
         </el-table-column>
-        <el-table-column align="center"
+        <!-- <el-table-column align="center"
                          prop="studentId"
                          label="联系电话">
           <template slot-scope="scope">
@@ -62,7 +63,7 @@
               {{scope.row.sysUser.phone}}
             </div>
           </template>
-        </el-table-column>
+        </el-table-column> -->
         <el-table-column align="center"
                          prop="courseFee"
                          label="缴费金额"></el-table-column>
@@ -77,13 +78,14 @@
           </template>
         </el-table-column>
       </el-table>
-      <pagination :total="rules.total"
+      <!-- <pagination :total="rules.total"
                   :page.sync="rules.page"
                   :limit.sync="rules.limit"
                   :page-sizes="rules.page_size"
-                  @pagination="getList" />
+                  @pagination="getList" /> -->
     </div>
     <el-dialog :visible.sync="resetPayVisible"
+               append-to-body
                width="500px"
                title="修改缴费金额">
       <el-form :model="resetPayForm"
@@ -125,6 +127,7 @@ import { findSound, getMusicGroupStudentFee, resetMusicGroupStudentFee } from "@
 
 export default {
   components: { pagination },
+  props: ['clearStduent'],
   data () {
     return {
       searchForm: {
@@ -136,7 +139,7 @@ export default {
       tableList: [{}],
       rules: {
         // 分页规则
-        limit: 10, // 限制显示条数
+        limit: 999, // 限制显示条数
         page: 1, // 当前页
         total: 0, // 总条数
         page_size: [10, 20, 40, 50] // 选择限制显示条数
@@ -186,13 +189,13 @@ export default {
       this.getList()
     },
     getList () {
-      this.searchForm.page = this.rules.page;
-      this.searchForm.rows = this.rules.limit;
+      // this.searchForm.page = this.rules.page;
+      // this.searchForm.rows = this.rules.limit;
       this.searchForm.musicGroupId = this.teamid;
       getMusicGroupStudentFee(this.searchForm).then(res => {
         if (res.code == 200) {
-          this.rules.total = res.data.total;
-          this.tableList = res.data.rows;
+          // this.rules.total = res.data.total;
+          this.tableList = res.data;
         }
       })
     },
@@ -207,6 +210,9 @@ export default {
       }
       this.getList()
     },
+    clearTable () {
+      this.$refs.multipleTable.clearSelection()
+    },
     startPay (row) { },
     resetPay (row) {
       this.activeRow = row;
@@ -233,6 +239,7 @@ export default {
     },
     handleSelectionChange (val) {
       this.activeChiose = val;
+      this.$emit('chioseStudent', val)
     },
     submitSigan (sigan) {
       let obj = {}
@@ -269,4 +276,8 @@ export default {
 };
 </script>
 <style lang='scss' scoped>
+.tableWrap {
+  height: 300px;
+  overflow: auto;
+}
 </style>

+ 2 - 2
src/views/resetTeaming/index.vue

@@ -21,11 +21,11 @@
                      name="2">
           <resetSound v-if="activeIndex == 2" />
         </el-tab-pane>
-        <el-tab-pane label="学员缴费设置"
+        <!-- <el-tab-pane label="学员缴费设置"
                      v-if="permission('/resetTeaming/studentPayBase')"
                      name="4">
           <studentPayBase v-if="activeIndex == 4" />
-        </el-tab-pane>
+        </el-tab-pane> -->
         <el-tab-pane label="缴费设置"
                      v-if="permission('/resetTeaming/resetPayList')"
                      name="3">

+ 1 - 1
src/views/setSilder/addSilder.vue

@@ -222,7 +222,7 @@ export default {
           type: form.type,
           parentPermission: form.parentPermission,
           keepAlive: form.keepAlive,
-          memo: rorm.memo
+          memo: form.memo
         }).then(res => {
           if (res.code == 200) {
             this.$message.success('添加成功')

+ 60 - 3
src/views/sporadicManager/sporadicList.vue

@@ -54,6 +54,16 @@
           </el-select>
         </el-form-item>
         <el-form-item>
+          <el-select v-model.trim="searchForm.openFlag"
+                     placeholder='收费状态'
+                     clearable>
+            <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.type"
                      placeholder='请选择订单类型'
                      clearable>
@@ -90,6 +100,14 @@
                            prop="title">
           </el-table-column>
           <el-table-column align='center'
+                           label="收费状态">
+            <template slot-scope="scope">
+              <div>
+                {{ scope.row.openFlag?'关闭':'开启'}}
+              </div>
+            </template>
+          </el-table-column>
+          <el-table-column align='center'
                            label="金额"
                            prop="amount">
           </el-table-column>
@@ -128,6 +146,14 @@
                 <el-button type="text"
                            v-permission="'sporadicChargeInfo/delete'"
                            @click="removeItem(scope.row)">删除</el-button>
+                <el-button type="text"
+                           v-if="scope.row.openFlag"
+                           v-permission="'sporadicChargeInfo/updateOpenFlag'"
+                           @click="setSporadic(scope.row)">开启</el-button>
+                <el-button type="text"
+                           v-else
+                           v-permission="'sporadicChargeInfo/updateOpenFlag'"
+                           @click="setSporadic(scope.row)">关闭</el-button>
               </div>
             </template>
           </el-table-column>
@@ -342,7 +368,7 @@
 import { getEmployeeOrgan } from '@/api/buildTeam'
 import pagination from '@/components/Pagination/index'
 import { vaildStudentUrl } from '@/utils/validate'
-import { addZero, getZero, removeZero, getBasic } from '@/api/zeroManager'
+import { addZero, getZero, removeZero, getBasic, updateOpenFlag } from '@/api/zeroManager'
 import QRCode from 'qrcodejs2'
 export default {
   name: 'sporadicList',
@@ -354,9 +380,10 @@ export default {
         organId: null,
         chargeType: null,
         type: null,
-        search: null
+        search: null,
+        openFlag: null
       },
-      tableList: [{}],
+      tableList: [],
       organList: [],
       maskForm: {
         organId: '',
@@ -436,6 +463,7 @@ export default {
         chargeType: searchForm.chargeType ? searchForm.chargeType : null,
         type: searchForm.type ? searchForm.type : null,
         search: searchForm.search ? searchForm.search : null,
+        openFlag: searchForm.openFlag ? searchForm.openFlag * 1 : null,
         page: this.pageInfo.page,
         rows: this.pageInfo.limit
       }
@@ -611,6 +639,35 @@ export default {
         })
       }).catch(() => {
       });
+    },
+    setSporadic (row) {
+      // openFlag
+      let str = ''
+      let openFlag = ''
+      if (row.openFlag) {
+        // 关闭=>开启 1是关闭
+        openFlag = 0;
+        str = '开启'
+      } else {
+        // 开启=>关闭 0是开启
+        openFlag = 1;
+        str = '关闭'
+      }
+
+      this.$confirm(`是否${str}该收费`, '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      }).then(() => {
+        updateOpenFlag({ sporadicId: row.id, openFlag }).then(res => {
+          if (res.code == 200) {
+            this.$message.success(`${str}成功`)
+            this.getList()
+          }
+        })
+      }).catch(() => {
+      });
+
     }
   },
   watch: {