浏览代码

05/19 13:51

11
mo 5 年之前
父节点
当前提交
6206d82012

+ 51 - 0
src/api/buildTeam.js

@@ -1126,4 +1126,55 @@ export function updateCoursesExpireDate (data) {
   })
 }
 
+// 新建缴费周期
+export function addMusicGroupPaymentCalender (data) {
+  return request({
+    url: api + '/musicGroupPaymentCalender/add',
+    method: 'post',
+    data: qs.stringify(data)
+  })
+}
+// 查询周期(缴费日历)
+export function getMusicGroupPaymentCalender (data) {
+  return request({
+    url: api + '/musicGroupPaymentCalender/queryPage',
+    method: 'get',
+    params: data
+  })
+}
+
+// 修改缴费周期
+export function resetMusicGroupPaymentCalender (data) {
+  return request({
+    url: api + '/musicGroupPaymentCalender/updateStartTime',
+    method: 'post',
+    data: qs.stringify(data)
+  })
+}
 
+// 删除缴费周期 musicGroupPaymentCalender/del
+export function delMusicGroupPaymentCalender (data) {
+  return request({
+    url: api + '/musicGroupPaymentCalender/del',
+    method: 'post',
+    data: qs.stringify(data)
+  })
+}
+
+// 根据缴费id查询学生列表 musicGroupPaymentCalenderDetail/queryPage
+export function getmusicGroupPaymentCalenderDetail (data) {
+  return request({
+    url: api + '/musicGroupPaymentCalenderDetail/queryPage',
+    method: 'get',
+    params: data
+  })
+}
+
+// 开启缴费
+export function openMusicGroupPaymentCalenderDetailPayment (data) {
+  return request({
+    url: api + '/musicGroupPaymentCalenderDetail/openPayment',
+    method: 'get',
+    params: data
+  })
+}

+ 29 - 0
src/utils/vueFilter.js

@@ -476,4 +476,33 @@ Vue.filter('transTypeFilter', value => {
     'MANUAL_SUB': "系统扣除",
   }
   return template[value]
+})
+
+// paymentType
+Vue.filter('paymentType', value => {
+  let template = {
+    'OFFLINE': "线下",
+    'ONLINE': "线上",
+    'ALL': "全部",
+  }
+  return template[value]
+})
+
+Vue.filter('paymentStatus', value => {
+  let template = {
+    0: "未开始",
+    1: "缴费中",
+    2: "已缴费",
+  }
+  return template[value]
+})
+
+// paymentStatus
+Vue.filter('paymentStatusDetall', value => {
+  let template = {
+    'PAID_COMPLETED': "已缴费",
+    'PROCESSING': "缴费中",
+    'NON_PAYMENT': "未缴费",
+  }
+  return template[value]
 })

+ 0 - 1
src/views/login/index.vue

@@ -133,7 +133,6 @@ export default {
         localStorage.setItem('password', '');
       }
       this.$refs.loginForm.validate(valid => {
-
         if (valid) {
 
           this.$store

+ 132 - 20
src/views/resetTeaming/components/resetPayList.vue

@@ -12,32 +12,63 @@
                 :header-cell-style="{background:'#EDEEF0',color:'#444'}"
                 :data="tableList">
         <el-table-column align="center"
-                         prop="studentId"
-                         label="缴费开始日期"></el-table-column>
+                         prop="startPaymentDate"
+                         label="缴费开始日期">
+          <template slot-scope="scope">
+            <div>
+              {{scope.row.startPaymentDate | formatTimer}}
+            </div>
+          </template>
+        </el-table-column>
         <el-table-column align="center"
-                         prop="studentId"
-                         label="缴费结束日期"></el-table-column>
+                         prop="deadlinePaymentDate"
+                         label="缴费结束日期">
+
+          <template slot-scope="scope">
+            <div>
+              {{scope.row.deadlinePaymentDate | formatTimer}}
+            </div>
+          </template>
+        </el-table-column>
         <el-table-column align="center"
-                         prop="studentId"
+                         prop="expectNum"
                          label="预计缴费人数"></el-table-column>
         <el-table-column align="center"
-                         prop="studentId"
+                         prop="actualNum"
                          label="实际缴费人数"></el-table-column>
         <el-table-column align="center"
-                         prop="studentId"
-                         label="状态"></el-table-column>
+                         prop="type"
+                         label="状态">
+          <template slot-scope="scope">
+            <div>
+              {{scope.row.type | paymentType}}
+            </div>
+          </template>
+        </el-table-column>
         <el-table-column align="center"
-                         prop="studentId"
-                         label="备注"></el-table-column>
+                         prop="type"
+                         label="缴费状态">
+          <template slot-scope="scope">
+            <div>
+              {{scope.row.paymentStatus | paymentStatus}}
+            </div>
+          </template>
+        </el-table-column>
         <el-table-column align="center"
-                         label="操作">
+                         prop="memo"
+                         label="备注"></el-table-column>
+        <el-table-column label="操作">
           <template slot-scope="scope">
             <div>
               <el-button type="text"
+                         v-if="scope.row.paymentStatus != 0"
                          @click="lookDetail(scope.row)">查看</el-button>
               <el-button type="text"
+                         v-if="scope.row.paymentStatus == 0"
                          @click="resetPay(scope.row)">修改</el-button>
-              <el-button type="text">删除</el-button>
+              <el-button type="text"
+                         v-if="scope.row.paymentStatus == 0"
+                         @click="detelePay(scope.row)">删除</el-button>
             </div>
           </template>
         </el-table-column>
@@ -52,26 +83,55 @@
                width="500px"
                :title="diTitle">
       <el-form :model="payForm"
+               :inline="true"
+               label-width="120px"
+               label-position="right"
                ref='payForm'>
         <el-form-item label="缴费开始日期"
                       :rules="[{ required: true, message: '请设置缴费开始日期',trigger: 'blur'}]"
-                      prop="startDate">
-          <el-date-picker v-model.trim="payForm.startDate"
+                      prop="startPaymentDate">
+          <el-date-picker v-model.trim="payForm.startPaymentDate"
                           type="date"
                           :picker-options="pickerOptions"
                           value-format="yyyy-MM-dd"
                           placeholder="开始日期"></el-date-picker>
         </el-form-item>
+        <el-form-item label="收费类型"
+                      v-if='isNew'
+                      :rules="[{ required: true, message: '请选择收费类型',trigger: 'blur'}]"
+                      prop="type">
+          <el-select v-model.trim="payForm.type"
+                     style="width:220px!important;"
+                     placeholder="课程类型">
+            <el-option label="线上"
+                       value="ONLINE"></el-option>
+            <el-option label="线下"
+                       value="OFFLINE"></el-option>
+            <el-option label="全部"
+                       value="ALL"></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="备注"
+                      v-if='isNew'
+                      :rules="[{ required: true, message: '请填写备注',trigger: 'blur'}]"
+                      prop="memo">
+          <el-input type="textarea"
+                    style="width:220px!important;"
+                    :rows="4"
+                    placeholder="请填写备注"
+                    v-model="payForm.memo"></el-input>
+
+        </el-form-item>
       </el-form>
       <div slot="footer"
            class="dialog-footer">
         <el-button @click="payVisible = false">取 消</el-button>
         <el-button type="primary"
                    v-if="isNew"
-                   @click="">确 定</el-button>
+                   @click="newPayInfo">确 定</el-button>
         <el-button type="primary"
                    v-else
-                   @click="">确 定</el-button>
+                   @click="resetPayDate">确 定</el-button>
       </div>
     </el-dialog>
   </div>
@@ -81,7 +141,7 @@ import axios from "axios";
 import { getToken } from "@/utils/auth";
 import pagination from "@/components/Pagination/index";
 import load from "@/utils/loading";
-import { getTeacher, getEmployeeOrgan } from "@/api/buildTeam";
+import { getTeacher, getEmployeeOrgan, addMusicGroupPaymentCalender, getMusicGroupPaymentCalender, resetMusicGroupPaymentCalender, delMusicGroupPaymentCalender } from "@/api/buildTeam";
 
 export default {
   components: { pagination },
@@ -104,7 +164,9 @@ export default {
       diTitle: '新增缴费',
       payVisible: false,
       payForm: {
-        startDate: null
+        startPaymentDate: null,
+        type: null,
+        memo: null
       },
       isNew: false,
       activeRow: null,
@@ -130,8 +192,16 @@ export default {
   },
   methods: {
     init () {
+      this.getList()
+    },
+    getList () {
+      getMusicGroupPaymentCalender({ page: this.rules.page, rows: this.rules.limit, musicGroupId: this.$route.query.id }).then(res => {
+        if (res.code == 200) {
+          this.rules.total = res.data.total
+          this.tableList = res.data.rows;
+        }
+      })
     },
-    getList () { },
     newPay () {
       this.diTitle = '新增缴费'
       this.isNew = true
@@ -143,20 +213,62 @@ export default {
       this.activeRow = row
       this.payVisible = true;
     },
+    detelePay (row) {
+      let id = row.id;
+      this.$confirm(`确定删除该缴费周期?`, '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      }).then(() => {
+        delMusicGroupPaymentCalender({ id }).then(res => {
+          if (res.code == 200) {
+            this.$message.success('删除成功')
+            this.getList();
+          }
+        })
+      }).catch(() => { })
+
+    },
     lookDetail (row) {
       let query = this.$route.query
+      this.$route.query.paymentId = row.id;
       this.$router.push({ path: '/business/strudentPayInfo', query })
     },
     setStudentPay () {
       let query = this.$route.query
       this.$router.push({ path: '/business/studentPayBase', query })
+    },
+    newPayInfo () {
+      this.$refs['payForm'].validate(res => {
+        if (res) {
+          this.payForm.musicGroupId = this.$route.query.id
+          addMusicGroupPaymentCalender(this.payForm).then(res => {
+            if (res.code == 200) {
+              this.$message.success('恭喜你创建成功')
+              this.payVisible = false;
+              this.getList()
+            }
+          })
+        }
+      })
+    },
+    resetPayDate () {
+      resetMusicGroupPaymentCalender({ id: this.activeRow.id, startTime: this.payForm.startPaymentDate }).then(res => {
+        if (res.code == 200) {
+          this.$message.success('修改成功')
+          this.payVisible = false;
+          this.getList()
+        }
+      })
     }
   },
   watch: {
     payVisible (val) {
       if (!val) {
         this.payForm = {
-          startDate: null
+          startPaymentDate: null,
+          type: null,
+          memo: null
         }
         this.$refs['payForm'].resetFields()
       }

+ 94 - 25
src/views/resetTeaming/components/strudentPayInfo.vue

@@ -33,12 +33,12 @@
       <el-form :inline="true"
                :model="searchForm">
         <el-form-item>
-          <el-input v-model.trim="searchForm.search"
+          <el-input v-model.trim="searchForm.userId"
                     @keyup.enter.native="search"
                     placeholder='学生编号'></el-input>
         </el-form-item>
         <el-form-item>
-          <el-select v-model.trim="searchForm.sound"
+          <el-select v-model.trim="searchForm.subjectId"
                      style="width:180px"
                      clearable
                      filterable
@@ -50,15 +50,17 @@
           </el-select>
         </el-form-item>
         <el-form-item>
-          <el-select v-model.trim="searchForm.status"
+          <el-select v-model.trim="searchForm.paymentStatus"
                      style="width:180px"
                      clearable
                      filterable
                      placeholder="请选择状态">
-            <el-option v-for="(item,index) in soundList"
-                       :key="index"
-                       :label="item.name"
-                       :value="item.id"></el-option>
+            <el-option label="未开始"
+                       value="0"></el-option>
+            <el-option label="缴费中"
+                       value="1"></el-option>
+            <el-option label="已缴费"
+                       value="2"></el-option>
           </el-select>
         </el-form-item>
         <el-form-item>
@@ -68,8 +70,13 @@
                      type="primary">重置</el-button>
         </el-form-item>
       </el-form>
-      <div class="newBand"
-           @click="resetPay">修改缴费金额</div>
+      <div class="wrap">
+        <div class="newBand"
+             @click="resetPay">修改缴费金额</div>
+        <div class="newBand"
+             @click="startPay">开启缴费</div>
+      </div>
+
       <div class="tableWrap">
         <el-table style="width: 100%"
                   :header-cell-style="{background:'#EDEEF0',color:'#444'}"
@@ -79,23 +86,40 @@
                            width="55">
           </el-table-column>
           <el-table-column align="center"
-                           prop="studentId"
+                           prop="userId"
                            label="学员编号"></el-table-column>
           <el-table-column align="center"
                            prop="studentId"
-                           label="学员姓名"></el-table-column>
+                           label="学员姓名">
+            <template slot-scope="scope">
+              <div v-if="scope.row.sysUser">
+                {{scope.row.sysUser.username}}
+              </div>
+            </template>
+          </el-table-column>
           <el-table-column align="center"
                            prop="studentId"
                            label="学员声部"></el-table-column>
           <el-table-column align="center"
-                           prop="studentId"
+                           prop="expectAmount"
                            label="预计缴费金额"></el-table-column>
           <el-table-column align="center"
-                           prop="studentId"
-                           label="缴费状态"></el-table-column>
+                           label="缴费状态">
+            <template slot-scope="scope">
+              <div>
+                {{scope.row.paymentStatus | paymentStatusDetall}}
+              </div>
+            </template>
+          </el-table-column>
           <el-table-column align="center"
                            prop="studentId"
-                           label="支付时间"></el-table-column>
+                           label="支付时间">
+            <template slot-scope="scope">
+              <div>
+                {{scope.row.payTime | dateForMinFormat}}
+              </div>
+            </template>
+          </el-table-column>
           <!-- <el-table-column align="center"
                            label="操作">
             <template slot-scope="scope">
@@ -173,16 +197,16 @@ import axios from "axios";
 import { getToken } from "@/utils/auth";
 import pagination from "@/components/Pagination/index";
 import load from "@/utils/loading";
-import { findSound, } from "@/api/buildTeam";
+import { findSound, getmusicGroupPaymentCalenderDetail, openMusicGroupPaymentCalenderDetailPayment } from "@/api/buildTeam";
 
 export default {
   components: { pagination },
   data () {
     return {
       searchForm: {
-        search: null,
-        sound: null,
-        status: null
+        userId: null,
+        subjectId: null,
+        paymentStatus: null
       },
       teacherList: [],
       soundList: [],
@@ -208,7 +232,8 @@ export default {
         momey: null
       },
       activeChiose: [],
-
+      id: null,
+      ids: null
     };
   },
   //生命周期 - 创建完成(可以访问当前this实例)
@@ -233,23 +258,41 @@ export default {
   },
   methods: {
     init () {
-      this.isInit = true;
-      this.isInit = false;
+      this.id = this.$route.query.paymentId
+      this.getList()
+    },
+    getList () {
+      this.searchForm.id = this.id;
+      this.searchForm.page = this.rules.page;
+      this.searchForm.rows = this.rules.limit
+      getmusicGroupPaymentCalenderDetail(this.searchForm).then(res => {
+        if (res.code == 200) {
+          this.rules.total = res.data.total;
+          this.tableList = res.data.rows;
+        }
+      })
     },
-    getList () { },
     search () {
       this.rules.page = 1;
       this.getList()
     },
     onReSet () { },
-    startPay (row) { },
+    startPay () {
+      if (this.activeChiose.length < 1) {
+        this.$message.error('请至少选择一名学生')
+        return
+      }
+    },
     resetPay () {
       // this.activeRow = row;
       if (this.activeChiose.length < 1) {
         this.$message.error('请至少选择一名学生')
         return
       }
-
+      let ids = this.activeChiose.map(item => {
+        return item.id
+      })
+      this.ids = ids.join(',')
       this.resetPayVisible = true
     },
     // resetTime () {
@@ -262,6 +305,25 @@ export default {
     },
     handleSelectionChange (val) {
       this.activeChiose = val;
+    },
+    startPay () {
+      if (this.activeChiose.length < 1) {
+        this.$message.error('请至少选择一名学生')
+        return
+      }
+
+      // console.log(this.activeChiose)
+      let ids = this.activeChiose.map(item => {
+        return item.id
+      })
+      ids = ids.join(',')
+      // console.log(ids)
+      openMusicGroupPaymentCalenderDetailPayment({ ids }).then(res => {
+        if (res.code == 200) {
+          this.$message.success('开启成功')
+          this.getList();
+        }
+      })
     }
   }, watch: {
     payVisible (val) {
@@ -317,4 +379,11 @@ export default {
     }
   }
 }
+.wrap {
+  display: flex;
+  flex-direction: row;
+  div {
+    margin-right: 20px;
+  }
+}
 </style>

+ 11 - 4
src/views/resetTeaming/components/studentPayBase.vue

@@ -24,7 +24,11 @@
       <div class="tableWrap">
         <el-table style="width: 100%"
                   :header-cell-style="{background:'#EDEEF0',color:'#444'}"
-                  :data="tableList">
+                  :data="tableList"
+                  @selection-change="handleSelectionChange">
+          <el-table-column type="selection"
+                           width="55">
+          </el-table-column>
           <el-table-column align="center"
                            prop="studentId"
                            label="学员编号"></el-table-column>
@@ -62,12 +66,12 @@
                label-width="120px"
                label-position="right"
                ref='resetPayForm'>
-        <el-form-item label="学生姓名"
+        <!-- <el-form-item label="学生姓名"
                       :rules="[{ required: true, message: '学生姓名',trigger: 'blur'}]"
                       prop="startDate">
           <el-input disabled
                     value="张三"></el-input>
-        </el-form-item>
+        </el-form-item> -->
         <el-form-item label="预计缴费金额"
                       :rules="[{ required: true, message: '请输入预计缴费金额',trigger: 'blur'},{pattern: /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/, message: '请输入正确的金额',trigger: 'blur' }]"
                       prop="momey">
@@ -123,7 +127,7 @@ export default {
       resetPayForm: {
         momey: null
       },
-      activeRow: null,
+      activeChiose: [],
 
     };
   },
@@ -170,6 +174,9 @@ export default {
       let query = this.$route.query
       sessionStorage.setItem('resetCode', 3)
       this.$router.push({ path: '/business/resetTeaming', query })
+    },
+    handleSelectionChange (val) {
+      this.activeChiose = val;
     }
   }, watch: {
     payVisible (val) {