|
@@ -1,9 +1,7 @@
|
|
|
<!-- -->
|
|
|
<template>
|
|
|
<div class="m-container">
|
|
|
- <el-page-header @back="goBack"
|
|
|
- content="学员缴费记录">
|
|
|
- </el-page-header>
|
|
|
+ <el-page-header @back="goBack" content="学员缴费记录"> </el-page-header>
|
|
|
<!-- this.info = {
|
|
|
paymentStatus: res.data.calender.paymentStatus,
|
|
|
startPaymentDate: res.data.calender.startPaymentDate,
|
|
@@ -15,176 +13,238 @@
|
|
|
<div class="infoMsg">
|
|
|
<div class="left">
|
|
|
<p class="title">状态</p>
|
|
|
- <p class="status"
|
|
|
- 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>
|
|
|
+
|
|
|
+ <p
|
|
|
+ class="status"
|
|
|
+ style="color: #ff6a6a"
|
|
|
+ v-if="info.paymentStatus == 'OPEN'"
|
|
|
+ >
|
|
|
+ {{ "已开启" }}
|
|
|
+ </p>
|
|
|
+ <p
|
|
|
+ class="status"
|
|
|
+ style="color: #ff6a6a"
|
|
|
+ v-if="info.paymentStatus == 'NO'"
|
|
|
+ >
|
|
|
+ {{ "未开始" }}
|
|
|
+ </p>
|
|
|
+ <p
|
|
|
+ class="status"
|
|
|
+ style="color: #5ccdb8"
|
|
|
+ v-if="info.paymentStatus == 'OVER'"
|
|
|
+ >
|
|
|
+ {{ "已结束" }}
|
|
|
+ </p>
|
|
|
</div>
|
|
|
<div class="right">
|
|
|
<div class="expectBox first">
|
|
|
<p class="title">预计缴费日期</p>
|
|
|
- <p class="status">{{info.startPaymentDate|formatTimer}}~{{info.deadlinePaymentDate|formatTimer}}</p>
|
|
|
+ <p class="status">
|
|
|
+ {{ info.startPaymentDate | formatTimer }}~{{
|
|
|
+ info.deadlinePaymentDate | formatTimer
|
|
|
+ }}
|
|
|
+ </p>
|
|
|
</div>
|
|
|
- <div class='expectBox'>
|
|
|
+ <div class="expectBox">
|
|
|
<p class="title">预计缴费人数</p>
|
|
|
- <p class="status">{{info.expectNum?info.expectNum:0}}</p>
|
|
|
+ <p class="status">{{ info.expectNum ? info.expectNum : 0 }}</p>
|
|
|
</div>
|
|
|
- <div class='expectBox'>
|
|
|
+ <div class="expectBox">
|
|
|
<p class="title">实际缴费人数</p>
|
|
|
- <p class="status">{{info.actualNum?info.actualNum:0}}</p>
|
|
|
+ <p class="status">{{ info.actualNum ? info.actualNum : 0 }}</p>
|
|
|
</div>
|
|
|
- <div class='expectBox'>
|
|
|
+ <div class="expectBox">
|
|
|
<p class="title">收款金额</p>
|
|
|
- <p class="status">{{info.sumActualAmount?info.sumActualAmount:0}}</p>
|
|
|
+ <p class="status">
|
|
|
+ {{ info.sumActualAmount ? info.sumActualAmount : 0 }}
|
|
|
+ </p>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
+ <el-form
|
|
|
+ ref="titleForm"
|
|
|
+ :model="titleForm"
|
|
|
+ :inline="true"
|
|
|
+ label-width="80px"
|
|
|
+ >
|
|
|
+ <el-form-item label="缴费类型">
|
|
|
+ <div class="inputStyle">{{ titleForm.paymentType| auditPaymentType}}</div>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="收费标准">
|
|
|
+ <div class="inputStyle">{{ titleForm.musicGroupOrganizationCourseSettingId }}</div>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="缴费方式">
|
|
|
+ <div class="inputStyle">{{ titleForm.paymentPattern }}</div>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="缴费周期">
|
|
|
+ <div class="inputStyle">
|
|
|
+ {{ titleForm.paymentValidStartDate|formatTimer }}~{{
|
|
|
+ titleForm.paymentValidEndDate|formatTimer
|
|
|
+ }}
|
|
|
+ </div>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="收费内容">
|
|
|
+ <div class="inputStyle">{{ titleForm.calenderSettingsName }}</div>
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
<div class="m-core">
|
|
|
- <el-form :inline="true"
|
|
|
- :model="searchForm">
|
|
|
+ <el-form :inline="true" :model="searchForm">
|
|
|
<el-form-item>
|
|
|
- <el-input v-model.trim="searchForm.search"
|
|
|
- @keyup.enter.native="search"
|
|
|
- placeholder='学员编号,手机号'></el-input>
|
|
|
+ <el-input
|
|
|
+ v-model.trim="searchForm.search"
|
|
|
+ @keyup.enter.native="search"
|
|
|
+ placeholder="学员编号,手机号"
|
|
|
+ ></el-input>
|
|
|
</el-form-item>
|
|
|
<el-form-item>
|
|
|
- <el-select v-model.trim="searchForm.subjectId"
|
|
|
- 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-select
|
|
|
+ v-model.trim="searchForm.subjectId"
|
|
|
+ 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-select>
|
|
|
</el-form-item>
|
|
|
<el-form-item>
|
|
|
- <el-select v-model.trim="searchForm.paymentStatus"
|
|
|
- style="width:180px"
|
|
|
- clearable
|
|
|
- filterable
|
|
|
- placeholder="请选择状态">
|
|
|
- <el-option label="未缴费"
|
|
|
- value="NON_PAYMENT"></el-option>
|
|
|
- <el-option label="缴费中"
|
|
|
- value="PROCESSING"></el-option>
|
|
|
- <el-option label="已缴费"
|
|
|
- value="PAID_COMPLETED"></el-option>
|
|
|
+ <el-select
|
|
|
+ v-model.trim="searchForm.paymentStatus"
|
|
|
+ style="width: 180px"
|
|
|
+ clearable
|
|
|
+ filterable
|
|
|
+ placeholder="请选择状态"
|
|
|
+ >
|
|
|
+ <el-option label="未缴费" value="NON_PAYMENT"></el-option>
|
|
|
+ <el-option label="缴费中" value="PROCESSING"></el-option>
|
|
|
+ <el-option label="已缴费" value="PAID_COMPLETED"></el-option>
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
<el-form-item>
|
|
|
- <el-select v-model.trim="searchForm.musicGroupStatus"
|
|
|
- style="width:180px"
|
|
|
- clearable
|
|
|
- filterable
|
|
|
- placeholder="请选择学员状态">
|
|
|
- <el-option label="在读"
|
|
|
- value="NORMAL"></el-option>
|
|
|
- <el-option label="退团"
|
|
|
- value="QUIT"></el-option>
|
|
|
- <el-option label="休学"
|
|
|
- value="QUIT_SCHOOL"></el-option>
|
|
|
- <el-option label="报名"
|
|
|
- value="APPLY"></el-option>
|
|
|
-
|
|
|
+ <el-select
|
|
|
+ v-model.trim="searchForm.musicGroupStatus"
|
|
|
+ style="width: 180px"
|
|
|
+ clearable
|
|
|
+ filterable
|
|
|
+ placeholder="请选择学员状态"
|
|
|
+ >
|
|
|
+ <el-option label="在读" value="NORMAL"></el-option>
|
|
|
+ <el-option label="退团" value="QUIT"></el-option>
|
|
|
+ <el-option label="休学" value="QUIT_SCHOOL"></el-option>
|
|
|
+ <el-option label="报名" value="APPLY"></el-option>
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
<el-form-item>
|
|
|
- <el-button @click="search"
|
|
|
- type="danger">搜索</el-button>
|
|
|
- <el-button @click="onReSet"
|
|
|
- type="primary">重置</el-button>
|
|
|
+ <el-button @click="search" type="danger">搜索</el-button>
|
|
|
+ <el-button @click="onReSet" type="primary">重置</el-button>
|
|
|
</el-form-item>
|
|
|
</el-form>
|
|
|
+ <!-- NO: '未开启缴费',
|
|
|
+ OPEN: '开启缴费',
|
|
|
+ OVER: '缴费已结束', -->
|
|
|
<div class="wrap">
|
|
|
- <div class="newBand"
|
|
|
+ <!-- <div class="newBand"
|
|
|
@click="resetPay"
|
|
|
- v-permission="'musicGroupPaymentCalenderDetail/updateExpectAmount'">修改缴费金额</div>
|
|
|
- <div class="newBand"
|
|
|
+ v-permission="'musicGroupPaymentCalenderDetail/updateExpectAmount'">修改缴费金额</div> -->
|
|
|
+ <!-- <div class="newBand"
|
|
|
@click="startPay"
|
|
|
- v-if="info.paymentStatus != 0"
|
|
|
- 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 class="newBand"
|
|
|
- v-permission="'export/musicGroupPaymentCalenderDetail'"
|
|
|
- @click="onMusicGroupPaymentCalenderDetail">缴费记录导出</div>
|
|
|
+ v-if="info.paymentStatus != 'OPEN'"
|
|
|
+ v-permission="'musicGroupPaymentCalenderDetail/openPayment'">开启缴费</div> -->
|
|
|
+ <div
|
|
|
+ class="newBand"
|
|
|
+ @click="addStudentBtn"
|
|
|
+ v-if="info.paymentStatus != 'OVER'"
|
|
|
+ v-permission="'musicGroupPaymentCalenderDetail/add'"
|
|
|
+ >
|
|
|
+ 新增学员
|
|
|
+ </div>
|
|
|
+ <div
|
|
|
+ class="newBand"
|
|
|
+ @click="delStudentBtn"
|
|
|
+ v-if="info.paymentStatus == 'NO'"
|
|
|
+ v-permission="'musicGroupPaymentCalenderDetail/batchDel'"
|
|
|
+ >
|
|
|
+ 删除学员
|
|
|
+ </div>
|
|
|
+ <div
|
|
|
+ class="newBand"
|
|
|
+ v-permission="'export/musicGroupPaymentCalenderDetail'"
|
|
|
+ @click="onMusicGroupPaymentCalenderDetail"
|
|
|
+ >
|
|
|
+ 缴费记录导出
|
|
|
+ </div>
|
|
|
</div>
|
|
|
|
|
|
<div class="tableWrap">
|
|
|
- <el-table style="width: 100%"
|
|
|
- :header-cell-style="{background:'#EDEEF0',color:'#444'}"
|
|
|
- :data="tableList"
|
|
|
- @selection-change="handleSelectionChange">
|
|
|
- <el-table-column type="selection"
|
|
|
- :selectable='checkSelect'
|
|
|
- width="55">
|
|
|
+ <el-table
|
|
|
+ style="width: 100%"
|
|
|
+ :header-cell-style="{ background: '#EDEEF0', color: '#444' }"
|
|
|
+ :data="tableList"
|
|
|
+ @selection-change="handleSelectionChange"
|
|
|
+ >
|
|
|
+ <el-table-column
|
|
|
+ type="selection"
|
|
|
+ :selectable="checkSelect"
|
|
|
+ width="55"
|
|
|
+ >
|
|
|
</el-table-column>
|
|
|
- <el-table-column align="center"
|
|
|
- prop="userId"
|
|
|
- label="学员编号"></el-table-column>
|
|
|
- <el-table-column align="center"
|
|
|
- prop="studentId"
|
|
|
- label="学员姓名">
|
|
|
+ <el-table-column
|
|
|
+ align="center"
|
|
|
+ prop="userId"
|
|
|
+ label="学员编号"
|
|
|
+ ></el-table-column>
|
|
|
+ <el-table-column align="center" prop="studentId" label="学员姓名">
|
|
|
<template slot-scope="scope">
|
|
|
<div v-if="scope.row.sysUser">
|
|
|
- {{scope.row.sysUser.username}}
|
|
|
+ {{ scope.row.sysUser.username }}
|
|
|
</div>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column align="center"
|
|
|
- label="学员声部">
|
|
|
+ <el-table-column align="center" label="学员声部">
|
|
|
<template slot-scope="scope">
|
|
|
<div v-if="scope.row.studentRegistration">
|
|
|
- {{scope.row.studentRegistration.subjectName}}
|
|
|
+ {{ scope.row.studentRegistration.subjectName }}
|
|
|
</div>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column align="center"
|
|
|
- label="学员状态">
|
|
|
+ <el-table-column align="center" label="学员状态">
|
|
|
<template slot-scope="scope">
|
|
|
<div v-if="scope.row.studentRegistration">
|
|
|
- {{scope.row.studentRegistration.musicGroupStatus | studentTeamStatus}}
|
|
|
+ {{
|
|
|
+ scope.row.studentRegistration.musicGroupStatus
|
|
|
+ | studentTeamStatus
|
|
|
+ }}
|
|
|
</div>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column align="center"
|
|
|
- prop="studentId"
|
|
|
- label="手机号">
|
|
|
+ <el-table-column align="center" prop="studentId" label="手机号">
|
|
|
<template slot-scope="scope">
|
|
|
<div v-if="scope.row.sysUser">
|
|
|
- {{scope.row.sysUser.phone}}
|
|
|
+ {{ scope.row.sysUser.phone }}
|
|
|
</div>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column align="center"
|
|
|
- prop="expectAmount"
|
|
|
- label="预计缴费金额"></el-table-column>
|
|
|
- <el-table-column align="center"
|
|
|
- label="缴费开始日期">
|
|
|
+ <el-table-column
|
|
|
+ align="center"
|
|
|
+ prop="expectAmount"
|
|
|
+ label="预计缴费金额"
|
|
|
+ ></el-table-column>
|
|
|
+ <el-table-column align="center" label="缴费开始日期">
|
|
|
<template slot-scope="scope">
|
|
|
<div>
|
|
|
- {{scope.row.startPaymentDateMgpc | formatTimer}}
|
|
|
+ {{ scope.row.startPaymentDateMgpc | formatTimer }}
|
|
|
</div>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column align="center"
|
|
|
- label="缴费截止日期">
|
|
|
+ <el-table-column align="center" label="缴费截止日期">
|
|
|
<template slot-scope="scope">
|
|
|
<div>
|
|
|
- {{scope.row.deadlinePaymentDateMgpc | formatTimer}}
|
|
|
+ {{ scope.row.deadlinePaymentDateMgpc | formatTimer }}
|
|
|
</div>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
@@ -196,20 +256,17 @@
|
|
|
</div>
|
|
|
</template>
|
|
|
</el-table-column> -->
|
|
|
- <el-table-column align="center"
|
|
|
- label="缴费状态">
|
|
|
+ <el-table-column align="center" label="缴费状态">
|
|
|
<template slot-scope="scope">
|
|
|
<div>
|
|
|
- {{scope.row.paymentStatus | paymentStatusDetall}}
|
|
|
+ {{ scope.row.paymentStatus | paymentStatusDetall }}
|
|
|
</div>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column align="center"
|
|
|
- prop="studentId"
|
|
|
- label="支付时间">
|
|
|
+ <el-table-column align="center" prop="studentId" label="支付时间">
|
|
|
<template slot-scope="scope">
|
|
|
<div>
|
|
|
- {{scope.row.payTime | dateForMinFormat}}
|
|
|
+ {{ scope.row.payTime | dateForMinFormat }}
|
|
|
</div>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
@@ -225,11 +282,13 @@
|
|
|
</template>
|
|
|
</el-table-column> -->
|
|
|
</el-table>
|
|
|
- <pagination :total="rules.total"
|
|
|
- :page.sync="rules.page"
|
|
|
- :limit.sync="rules.limit"
|
|
|
- :page-sizes="rules.page_size"
|
|
|
- @pagination="getList" />
|
|
|
+ <pagination
|
|
|
+ :total="rules.total"
|
|
|
+ :page.sync="rules.page"
|
|
|
+ :limit.sync="rules.limit"
|
|
|
+ :page-sizes="rules.page_size"
|
|
|
+ @pagination="getList"
|
|
|
+ />
|
|
|
</div>
|
|
|
</div>
|
|
|
<!-- <el-dialog :visible.sync="payVisible"
|
|
@@ -255,59 +314,75 @@
|
|
|
</div>
|
|
|
</el-dialog> -->
|
|
|
|
|
|
- <el-dialog :visible.sync="resetPayVisible"
|
|
|
- width="500px"
|
|
|
- title="修改缴费金额">
|
|
|
- <el-form :model="resetPayForm"
|
|
|
- :inline="true"
|
|
|
- label-width="120px"
|
|
|
- label-position="right"
|
|
|
- ref='resetPayForm'>
|
|
|
+ <el-dialog
|
|
|
+ :visible.sync="resetPayVisible"
|
|
|
+ width="500px"
|
|
|
+ title="修改缴费金额"
|
|
|
+ >
|
|
|
+ <el-form
|
|
|
+ :model="resetPayForm"
|
|
|
+ :inline="true"
|
|
|
+ label-width="120px"
|
|
|
+ label-position="right"
|
|
|
+ ref="resetPayForm"
|
|
|
+ >
|
|
|
<!-- <el-form-item label="学员姓名"
|
|
|
:rules="[{ required: true, message: '学员姓名',trigger: 'blur'}]"
|
|
|
prop="startDate">
|
|
|
<el-input disabled
|
|
|
value="张三"></el-input>
|
|
|
</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">
|
|
|
+ <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"
|
|
|
+ >
|
|
|
<el-input v-model="resetPayForm.momey"></el-input>
|
|
|
</el-form-item>
|
|
|
</el-form>
|
|
|
- <div slot="footer"
|
|
|
- class="dialog-footer">
|
|
|
+ <div slot="footer" class="dialog-footer">
|
|
|
<el-button @click="resetPayVisible = false">取 消</el-button>
|
|
|
- <el-button type="primary"
|
|
|
- @click="submitReset">确 定</el-button>
|
|
|
+ <el-button type="primary" @click="submitReset">确 定</el-button>
|
|
|
</div>
|
|
|
</el-dialog>
|
|
|
|
|
|
- <el-dialog :visible.sync="studentVisible"
|
|
|
- width="600">
|
|
|
- <el-table :data="studentList"
|
|
|
- class="studenTable"
|
|
|
- ref='singleTable'
|
|
|
- highlight-current-row
|
|
|
- @current-change="handleCurrentChange">
|
|
|
+ <el-dialog :visible.sync="studentVisible" width="600">
|
|
|
+ <el-table
|
|
|
+ :data="studentList"
|
|
|
+ class="studenTable"
|
|
|
+ ref="singleTable"
|
|
|
+ highlight-current-row
|
|
|
+ @current-change="handleCurrentChange"
|
|
|
+ >
|
|
|
<!-- <el-table-column type="selection"
|
|
|
width="55">
|
|
|
</el-table-column> -->
|
|
|
- <el-table-column property="userId"
|
|
|
- align="center"
|
|
|
- label="学员编号"></el-table-column>
|
|
|
- <el-table-column property="name"
|
|
|
- align="center"
|
|
|
- label="学员姓名"></el-table-column>
|
|
|
- <el-table-column property="phone"
|
|
|
- align="center"
|
|
|
- label="手机号"></el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ property="userId"
|
|
|
+ align="center"
|
|
|
+ label="学员编号"
|
|
|
+ ></el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ property="name"
|
|
|
+ align="center"
|
|
|
+ label="学员姓名"
|
|
|
+ ></el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ property="phone"
|
|
|
+ align="center"
|
|
|
+ label="手机号"
|
|
|
+ ></el-table-column>
|
|
|
</el-table>
|
|
|
- <div slot="footer"
|
|
|
- class="dialog-footer">
|
|
|
+ <div slot="footer" class="dialog-footer">
|
|
|
<el-button @click="cancleAdd">取 消</el-button>
|
|
|
- <el-button type="primary"
|
|
|
- @click="submitAddStudent">确 定</el-button>
|
|
|
+ <el-button type="primary" @click="submitAddStudent">确 定</el-button>
|
|
|
</div>
|
|
|
</el-dialog>
|
|
|
</div>
|
|
@@ -318,19 +393,28 @@ import axios from "axios";
|
|
|
import { getToken } from "@/utils/auth";
|
|
|
import pagination from "@/components/Pagination/index";
|
|
|
import load from "@/utils/loading";
|
|
|
-import cleanDeep from 'clean-deep';
|
|
|
-import qs from 'qs';
|
|
|
-import { findSound, getmusicGroupPaymentCalenderDetail, openMusicGroupPaymentCalenderDetailPayment, resetMusicGroupPaymentCalenderDetail, getMusicGroupPaymentCalenderDetail, queryCanAddStudent, addMusicGroupPaymentCalenderStudent, delMusicGroupPaymentCalenderStudent } from "@/api/buildTeam";
|
|
|
+import cleanDeep from "clean-deep";
|
|
|
+import qs from "qs";
|
|
|
+import {
|
|
|
+ findSound,
|
|
|
+ getmusicGroupPaymentCalenderDetail,
|
|
|
+ openMusicGroupPaymentCalenderDetailPayment,
|
|
|
+ resetMusicGroupPaymentCalenderDetail,
|
|
|
+ getMusicGroupPaymentCalenderDetail,
|
|
|
+ queryCanAddStudent,
|
|
|
+ addMusicGroupPaymentCalenderStudent,
|
|
|
+ delMusicGroupPaymentCalenderStudent,
|
|
|
+} from "@/api/buildTeam";
|
|
|
|
|
|
export default {
|
|
|
components: { pagination },
|
|
|
- data () {
|
|
|
+ data() {
|
|
|
return {
|
|
|
searchForm: {
|
|
|
search: null,
|
|
|
subjectId: null,
|
|
|
paymentStatus: null,
|
|
|
- musicGroupStatus: null
|
|
|
+ musicGroupStatus: null,
|
|
|
},
|
|
|
teacherList: [],
|
|
|
soundList: [],
|
|
@@ -340,7 +424,7 @@ export default {
|
|
|
limit: 10, // 限制显示条数
|
|
|
page: 1, // 当前页
|
|
|
total: 0, // 总条数
|
|
|
- page_size: [10, 20, 40, 50] // 选择限制显示条数
|
|
|
+ page_size: [10, 20, 40, 50], // 选择限制显示条数
|
|
|
},
|
|
|
payVisible: false,
|
|
|
resetPayVisible: false,
|
|
@@ -348,15 +432,15 @@ export default {
|
|
|
chioseStudent: null,
|
|
|
studentList: [],
|
|
|
pickerOptions: {
|
|
|
- disabledDate (time) {
|
|
|
+ disabledDate(time) {
|
|
|
return time.getTime() + 86400000 <= new Date().getTime();
|
|
|
- }
|
|
|
+ },
|
|
|
},
|
|
|
payForm: {
|
|
|
- startDate: null
|
|
|
+ startDate: null,
|
|
|
},
|
|
|
resetPayForm: {
|
|
|
- momey: null
|
|
|
+ momey: null,
|
|
|
},
|
|
|
activeChiose: [],
|
|
|
id: null,
|
|
@@ -367,17 +451,25 @@ export default {
|
|
|
deadlinePaymentDate: null,
|
|
|
expectNum: null,
|
|
|
actualNum: null,
|
|
|
- sumActualAmount: null
|
|
|
- }
|
|
|
+ sumActualAmount: null,
|
|
|
+ },
|
|
|
+ titleForm: {
|
|
|
+ paymentType: "",
|
|
|
+ musicGroupOrganizationCourseSettingId: "",
|
|
|
+ paymentPattern: "",
|
|
|
+ paymentValidStartDate: "",
|
|
|
+ paymentValidEndDate: "",
|
|
|
+ calenderSettingsName: "",
|
|
|
+ },
|
|
|
};
|
|
|
},
|
|
|
//生命周期 - 创建完成(可以访问当前this实例)
|
|
|
- created () { },
|
|
|
+ created() {},
|
|
|
//生命周期 - 挂载完成(可以访问DOM元素)
|
|
|
- mounted () {
|
|
|
+ mounted() {
|
|
|
// 获取声部
|
|
|
this.teamid = this.$route.query.id;
|
|
|
- findSound({ musicGroupId: this.teamid }).then(res => {
|
|
|
+ findSound({ musicGroupId: this.teamid }).then((res) => {
|
|
|
if (res.code == 200) {
|
|
|
this.soundList = res.data;
|
|
|
}
|
|
@@ -385,9 +477,9 @@ export default {
|
|
|
// 获取分部
|
|
|
this.init();
|
|
|
},
|
|
|
- activated () {
|
|
|
+ activated() {
|
|
|
this.teamid = this.$route.query.id;
|
|
|
- findSound({ musicGroupId: this.teamid }).then(res => {
|
|
|
+ findSound({ musicGroupId: this.teamid }).then((res) => {
|
|
|
if (res.code == 200) {
|
|
|
this.soundList = res.data;
|
|
|
}
|
|
@@ -395,228 +487,254 @@ export default {
|
|
|
this.init();
|
|
|
},
|
|
|
methods: {
|
|
|
- init () {
|
|
|
- this.getList()
|
|
|
-
|
|
|
+ init() {
|
|
|
+ this.getList();
|
|
|
},
|
|
|
- getList () {
|
|
|
- this.id = this.$route.query.paymentId
|
|
|
+ getList() {
|
|
|
+ this.id = this.$route.query.paymentId;
|
|
|
// 获取缴费状态
|
|
|
- getMusicGroupPaymentCalenderDetail({ id: this.id }).then(res => {
|
|
|
+ getMusicGroupPaymentCalenderDetail({ id: this.id }).then((res) => {
|
|
|
if (res.code == 200) {
|
|
|
this.info = {
|
|
|
- paymentStatus: res.data.calender.paymentStatus,
|
|
|
+ paymentStatus: res.data.calender.status,
|
|
|
startPaymentDate: res.data.calender.startPaymentDate,
|
|
|
deadlinePaymentDate: res.data.calender.deadlinePaymentDate,
|
|
|
expectNum: res.data.calender.expectNum,
|
|
|
actualNum: res.data.calender.actualNum,
|
|
|
- sumActualAmount: res.data.sumActualAmount
|
|
|
+ sumActualAmount: res.data.sumActualAmount,
|
|
|
}
|
|
|
+ this.titleForm = {
|
|
|
+ paymentType: res.data.calender.paymentType,
|
|
|
+ musicGroupOrganizationCourseSettingId:res.data.calender.musicGroupOrganizationCourseSettingId,
|
|
|
+ paymentPattern: res.data.calender.paymentPattern,
|
|
|
+ paymentValidStartDate:res.data.calender.paymentValidStartDate,
|
|
|
+ paymentValidEndDate: res.data.calender.paymentValidEndDate,
|
|
|
+ calenderSettingsName: res.data.calenderSettingsName,
|
|
|
+ };
|
|
|
this.searchForm.id = this.id;
|
|
|
this.searchForm.page = this.rules.page;
|
|
|
- this.searchForm.rows = this.rules.limit
|
|
|
- getmusicGroupPaymentCalenderDetail(this.searchForm).then(payment => {
|
|
|
- if (payment.code == 200) {
|
|
|
- this.rules.total = payment.data.total;
|
|
|
- this.tableList = payment.data.rows;
|
|
|
+ this.searchForm.rows = this.rules.limit;
|
|
|
+ getmusicGroupPaymentCalenderDetail(this.searchForm).then(
|
|
|
+ (payment) => {
|
|
|
+ if (payment.code == 200) {
|
|
|
+ this.rules.total = payment.data.total;
|
|
|
+ this.tableList = payment.data.rows;
|
|
|
+ }
|
|
|
}
|
|
|
- })
|
|
|
+ );
|
|
|
}
|
|
|
- })
|
|
|
-
|
|
|
+ });
|
|
|
},
|
|
|
- search () {
|
|
|
+ search() {
|
|
|
this.rules.page = 1;
|
|
|
- this.getList()
|
|
|
+ this.getList();
|
|
|
},
|
|
|
- onReSet () {
|
|
|
+ onReSet() {
|
|
|
this.searchForm = {
|
|
|
search: null,
|
|
|
subjectId: null,
|
|
|
- paymentStatus: null
|
|
|
- }
|
|
|
- this.search()
|
|
|
+ paymentStatus: null,
|
|
|
+ };
|
|
|
+ this.search();
|
|
|
},
|
|
|
- checkSelect (val) {
|
|
|
- return val.paymentStatus == 'NON_PAYMENT'
|
|
|
+ checkSelect(val) {
|
|
|
+ return val.paymentStatus == "NON_PAYMENT";
|
|
|
},
|
|
|
- resetPay () {
|
|
|
+ resetPay() {
|
|
|
// this.activeRow = row;
|
|
|
if (this.activeChiose.length < 1) {
|
|
|
- this.$message.error('请至少选择一名学员')
|
|
|
- return
|
|
|
+ this.$message.error("请至少选择一名学员");
|
|
|
+ return;
|
|
|
}
|
|
|
- let ids = this.activeChiose.map(item => {
|
|
|
- return item.id
|
|
|
- })
|
|
|
- this.ids = ids.join(',')
|
|
|
- this.resetPayVisible = true
|
|
|
+ let ids = this.activeChiose.map((item) => {
|
|
|
+ return item.id;
|
|
|
+ });
|
|
|
+ this.ids = ids.join(",");
|
|
|
+ this.resetPayVisible = true;
|
|
|
},
|
|
|
// resetTime () {
|
|
|
// this.payVisible = true;
|
|
|
// },
|
|
|
- goBack () {
|
|
|
- let query = this.$route.query
|
|
|
- sessionStorage.setItem('resetCode', 3)
|
|
|
- this.$router.push({ path: '/business/resetTeaming', query })
|
|
|
+ goBack() {
|
|
|
+ let query = this.$route.query;
|
|
|
+ sessionStorage.setItem("resetCode", 3);
|
|
|
+ this.$router.push({ path: "/business/resetTeaming", query });
|
|
|
},
|
|
|
- handleSelectionChange (val) {
|
|
|
+ handleSelectionChange(val) {
|
|
|
this.activeChiose = val;
|
|
|
},
|
|
|
- startPay () {
|
|
|
+ startPay() {
|
|
|
if (this.activeChiose.length < 1) {
|
|
|
- this.$message.error('请至少选择一名学员')
|
|
|
- return
|
|
|
+ this.$message.error("请至少选择一名学员");
|
|
|
+ return;
|
|
|
}
|
|
|
|
|
|
// console.log(this.activeChiose)
|
|
|
- let ids = this.activeChiose.map(item => {
|
|
|
- return item.id
|
|
|
- })
|
|
|
- ids = ids.join(',')
|
|
|
+ let ids = this.activeChiose.map((item) => {
|
|
|
+ return item.id;
|
|
|
+ });
|
|
|
+ ids = ids.join(",");
|
|
|
// console.log(ids)
|
|
|
- openMusicGroupPaymentCalenderDetailPayment({ ids }).then(res => {
|
|
|
+ openMusicGroupPaymentCalenderDetailPayment({ ids }).then((res) => {
|
|
|
if (res.code == 200) {
|
|
|
- this.$message.success(res.msg)
|
|
|
+ this.$message.success(res.msg);
|
|
|
this.getList();
|
|
|
}
|
|
|
- })
|
|
|
+ });
|
|
|
},
|
|
|
- submitReset () {
|
|
|
+ submitReset() {
|
|
|
let obj = {};
|
|
|
obj.expectAmount = this.resetPayForm.momey;
|
|
|
obj.ids = this.ids;
|
|
|
- resetMusicGroupPaymentCalenderDetail(obj).then(res => {
|
|
|
+ resetMusicGroupPaymentCalenderDetail(obj).then((res) => {
|
|
|
if (res.code == 200) {
|
|
|
- this.$message.success('修改成功')
|
|
|
+ this.$message.success("修改成功");
|
|
|
this.resetPayVisible = false;
|
|
|
this.getList();
|
|
|
}
|
|
|
- })
|
|
|
+ });
|
|
|
},
|
|
|
- addStudentBtn () {
|
|
|
- console.log('musicGroupId:', this.teamid, 'musicGroupPaymentCalenderId:', this.id)
|
|
|
+ addStudentBtn() {
|
|
|
+ console.log(
|
|
|
+ "musicGroupId:",
|
|
|
+ this.teamid,
|
|
|
+ "musicGroupPaymentCalenderId:",
|
|
|
+ this.id
|
|
|
+ );
|
|
|
// 获取无缴费学员
|
|
|
- queryCanAddStudent({ musicGroupId: this.teamid, musicGroupPaymentCalenderId: this.id }).then(res => {
|
|
|
+ queryCanAddStudent({
|
|
|
+ musicGroupId: this.teamid,
|
|
|
+ musicGroupPaymentCalenderId: this.id,
|
|
|
+ }).then((res) => {
|
|
|
if (res.code == 200) {
|
|
|
this.studentList = res.data;
|
|
|
this.studentVisible = true;
|
|
|
}
|
|
|
- })
|
|
|
-
|
|
|
+ });
|
|
|
},
|
|
|
- delStudentBtn () {
|
|
|
+ delStudentBtn() {
|
|
|
if (this.activeChiose.length < 1) {
|
|
|
- this.$message.error('请至少选择一名学员')
|
|
|
- return
|
|
|
+ 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()
|
|
|
- }
|
|
|
+ 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(() => {
|
|
|
- });
|
|
|
+ .catch(() => {});
|
|
|
},
|
|
|
- handleCurrentChange (val) {
|
|
|
+ handleCurrentChange(val) {
|
|
|
this.chioseStudent = val;
|
|
|
},
|
|
|
- submitAddStudent () {
|
|
|
+ submitAddStudent() {
|
|
|
if (!this.chioseStudent) {
|
|
|
- this.$message.error('请选择学员')
|
|
|
- return
|
|
|
+ this.$message.error("请选择学员");
|
|
|
+ return;
|
|
|
}
|
|
|
- addMusicGroupPaymentCalenderStudent({ musicGroupPaymentCalenderId: this.id, userId: this.chioseStudent.userId }).then(res => {
|
|
|
+ addMusicGroupPaymentCalenderStudent({
|
|
|
+ musicGroupPaymentCalenderId: this.id,
|
|
|
+ userId: this.chioseStudent.userId,
|
|
|
+ }).then((res) => {
|
|
|
if (res.code == 200) {
|
|
|
- this.$message.success('添加成功')
|
|
|
+ this.$message.success("添加成功");
|
|
|
this.studentVisible = false;
|
|
|
this.getList();
|
|
|
}
|
|
|
- })
|
|
|
+ });
|
|
|
},
|
|
|
- onMusicGroupPaymentCalenderDetail () {
|
|
|
- let searchForm = this.searchForm
|
|
|
+ onMusicGroupPaymentCalenderDetail() {
|
|
|
+ let searchForm = this.searchForm;
|
|
|
// 报表导出
|
|
|
let url = "/api-web/export/musicGroupPaymentCalenderDetail";
|
|
|
let data = {
|
|
|
id: this.$route.query.paymentId,
|
|
|
- musicGroupId: this.$route.query.id
|
|
|
- }
|
|
|
+ musicGroupId: this.$route.query.id,
|
|
|
+ };
|
|
|
const options = {
|
|
|
method: "POST",
|
|
|
headers: {
|
|
|
- Authorization: getToken()
|
|
|
+ Authorization: getToken(),
|
|
|
},
|
|
|
data: qs.stringify(cleanDeep(data)),
|
|
|
url,
|
|
|
- responseType: "blob"
|
|
|
+ responseType: "blob",
|
|
|
};
|
|
|
this.$confirm("您确定导出缴费记录", "提示", {
|
|
|
confirmButtonText: "确定",
|
|
|
cancelButtonText: "取消",
|
|
|
- type: "warning"
|
|
|
+ type: "warning",
|
|
|
})
|
|
|
.then(() => {
|
|
|
- load.startLoading()
|
|
|
- axios(options).then(res => {
|
|
|
- let blob = new Blob([res.data], {
|
|
|
- type: "application/vnd.ms-excel;charset=utf-8"
|
|
|
- });
|
|
|
- let text = (new Response(blob)).text()
|
|
|
- text.then(res => {
|
|
|
- // 判断是否报错
|
|
|
- if (res.indexOf('code') != -1) {
|
|
|
- let json = JSON.parse(res)
|
|
|
- this.$message.error(json.msg)
|
|
|
- } else {
|
|
|
- let objectUrl = URL.createObjectURL(blob);
|
|
|
- let link = document.createElement("a");
|
|
|
- let fname = "缴费导出" + new Date().getTime(); //下载文件的名字
|
|
|
- link.href = objectUrl;
|
|
|
- link.setAttribute("download", fname);
|
|
|
- document.body.appendChild(link);
|
|
|
- link.click();
|
|
|
- }
|
|
|
- })
|
|
|
+ load.startLoading();
|
|
|
+ axios(options)
|
|
|
+ .then((res) => {
|
|
|
+ let blob = new Blob([res.data], {
|
|
|
+ type: "application/vnd.ms-excel;charset=utf-8",
|
|
|
+ });
|
|
|
+ let text = new Response(blob).text();
|
|
|
+ text.then((res) => {
|
|
|
+ // 判断是否报错
|
|
|
+ if (res.indexOf("code") != -1) {
|
|
|
+ let json = JSON.parse(res);
|
|
|
+ this.$message.error(json.msg);
|
|
|
+ } else {
|
|
|
+ let objectUrl = URL.createObjectURL(blob);
|
|
|
+ let link = document.createElement("a");
|
|
|
+ let fname = "缴费导出" + new Date().getTime(); //下载文件的名字
|
|
|
+ link.href = objectUrl;
|
|
|
+ link.setAttribute("download", fname);
|
|
|
+ document.body.appendChild(link);
|
|
|
+ link.click();
|
|
|
+ }
|
|
|
+ });
|
|
|
|
|
|
- load.endLoading();
|
|
|
- }).catch(error => {
|
|
|
- this.$message.error('导出数据失败,请联系管理员');
|
|
|
- load.endLoading();
|
|
|
- });
|
|
|
+ load.endLoading();
|
|
|
+ })
|
|
|
+ .catch((error) => {
|
|
|
+ this.$message.error("导出数据失败,请联系管理员");
|
|
|
+ load.endLoading();
|
|
|
+ });
|
|
|
})
|
|
|
- .catch(() => { });
|
|
|
+ .catch(() => {});
|
|
|
},
|
|
|
- cancleAdd (row) {
|
|
|
+ cancleAdd(row) {
|
|
|
this.$refs.singleTable.setCurrentRow(row);
|
|
|
this.studentVisible = false;
|
|
|
- }
|
|
|
- }, watch: {
|
|
|
- payVisible (val) {
|
|
|
+ },
|
|
|
+ },
|
|
|
+ watch: {
|
|
|
+ payVisible(val) {
|
|
|
if (!val) {
|
|
|
this.payForm = {
|
|
|
- startDate: null
|
|
|
- }
|
|
|
- this.$refs['payForm'].resetFields()
|
|
|
+ startDate: null,
|
|
|
+ };
|
|
|
+ this.$refs["payForm"].resetFields();
|
|
|
}
|
|
|
},
|
|
|
- resetPayVisible (val) {
|
|
|
+ resetPayVisible(val) {
|
|
|
if (!val) {
|
|
|
this.resetPayForm = {
|
|
|
- momey: null
|
|
|
- }
|
|
|
+ momey: null,
|
|
|
+ };
|
|
|
}
|
|
|
},
|
|
|
- }
|
|
|
+ },
|
|
|
};
|
|
|
</script>
|
|
|
<style lang='scss' scoped>
|
|
@@ -673,4 +791,7 @@ export default {
|
|
|
margin-right: 20px;
|
|
|
}
|
|
|
}
|
|
|
+.inputStyle {
|
|
|
+ width: 180px;
|
|
|
+}
|
|
|
</style>
|