|
@@ -2,46 +2,87 @@
|
|
|
<div class="wrap" id="remuneration">
|
|
|
<m-header v-if="headerStatus" />
|
|
|
|
|
|
- <div class="monthMoney">{{ appealDate }}课酬</div>
|
|
|
+ <div class="monthMoney">{{ appealDate }}课酬 <br/><span>总计:{{ allMoney }}元</span></div>
|
|
|
<div class="monthCount" v-if="statistics.length > 0">
|
|
|
<div class="item" v-for="(item, index) in statistics" :key="index">
|
|
|
- <span class="title" v-if="item.groupType == 'ALL'">本月合计</span>
|
|
|
- <span class="title" v-if="item.groupType == 'MUSIC'">乐团课合计</span>
|
|
|
- <span class="title" v-if="item.groupType == 'VIP'">VIP课合计</span>
|
|
|
- <span class="title" v-if="item.groupType == 'PRACTICE'">网管课合计</span>
|
|
|
- <span>{{ item.courseTimes }}节</span>
|
|
|
+ <!-- <span class="title" v-if="item.groupType == 'ALL'">本月合计</span> -->
|
|
|
+ <span class="title" v-if="item.statType == 'MUSIC'">乐团课合计</span>
|
|
|
+ <span class="title" v-if="item.statType == 'VIP'">VIP课合计</span>
|
|
|
+ <span class="title" v-if="item.statType == 'PRACTICE'">网管课合计</span>
|
|
|
+ <span class="title" v-if="item.statType == 'REWARD'">转结奖励合计</span>
|
|
|
+ <span>{{ item.courseTimes }}{{ item.statType == 'REWARD' ? '组' : '节' }}</span>
|
|
|
<span class="money">{{ item.totalActualSalary }}元</span>
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
<div :class="confirmStatus == 0 ? 'paddingB80' : 'paddingB16'">
|
|
|
- <van-list v-model="loading" :finished="finished" finished-text=" " @load="getList">
|
|
|
- <van-cell-group v-for="(item, index) in dataList" :key="index">
|
|
|
- <van-cell>
|
|
|
- <template #icon>
|
|
|
- <i class="icon icon_audition" v-if="item.groupType == 'PRACTICE'"></i>
|
|
|
- <i class="icon icon_vip" v-if="item.groupType == 'VIP'"></i>
|
|
|
- <i class="icon icon_music" v-if="item.groupType == 'MUSIC'"></i>
|
|
|
- </template>
|
|
|
- <template #title>
|
|
|
- <div class="title">{{ item.courseName }}</div>
|
|
|
- <div class="baseInfo">
|
|
|
- <p>排课:{{ item.startClassTime | getMonthDay }} {{ item.startClassTime | getHourMin }}-{{ item.endClassTime | getHourMin }}</p>
|
|
|
- <p>签到:{{ item.signInTime | getHourMin }} 签退:{{ item.signOutTime | getHourMin }}</p>
|
|
|
- </div>
|
|
|
- </template>
|
|
|
- <template #default>
|
|
|
- <p class="money" :class="[item.reduceSalary > 0 ? 'error' : '']">
|
|
|
- ¥<span>{{ item.finalSalary }}</span>
|
|
|
- </p>
|
|
|
- <div class="moneyInfo" v-if="item.reduceSalary > 0">
|
|
|
- 课酬:¥{{ item.actualSalary }}
|
|
|
- <br />扣款:¥{{ item.reduceSalary }}
|
|
|
- </div>
|
|
|
- </template>
|
|
|
- </van-cell>
|
|
|
- </van-cell-group>
|
|
|
- </van-list>
|
|
|
+ <van-tabs v-model="active">
|
|
|
+ <van-tab title="课酬明细">
|
|
|
+ <div v-if="dataShow" key="data">
|
|
|
+ <van-list v-model="loading" :finished="finished" finished-text=" " @load="getList">
|
|
|
+ <van-cell-group v-for="(item, index) in dataList" :key="index">
|
|
|
+ <van-cell>
|
|
|
+ <template #icon>
|
|
|
+ <i class="icon icon_audition" v-if="item.groupType == 'PRACTICE'"></i>
|
|
|
+ <i class="icon icon_vip" v-if="item.groupType == 'VIP'"></i>
|
|
|
+ <i class="icon icon_music" v-if="item.groupType == 'MUSIC'"></i>
|
|
|
+ </template>
|
|
|
+ <template #title>
|
|
|
+ <div class="title">{{ item.courseName }}</div>
|
|
|
+ <div class="baseInfo">
|
|
|
+ <p>排课:{{ item.startClassTime | getMonthDay }} {{ item.startClassTime | getHourMin }}-{{ item.endClassTime | getHourMin }}</p>
|
|
|
+ <p>签到:{{ item.signInTime | getHourMin }} 签退:{{ item.signOutTime | getHourMin }}</p>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ <template #default>
|
|
|
+ <p class="money" :class="[item.reduceSalary > 0 ? 'error' : '']">
|
|
|
+ ¥<span>{{ item.finalSalary }}</span>
|
|
|
+ </p>
|
|
|
+ <div class="moneyInfo" v-if="item.reduceSalary > 0">
|
|
|
+ 课酬:¥{{ item.actualSalary }}
|
|
|
+ <br />扣款:¥{{ item.reduceSalary }}
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ </van-cell>
|
|
|
+ </van-cell-group>
|
|
|
+ </van-list>
|
|
|
+ </div>
|
|
|
+ <m-empty class="empty" v-else key="data" />
|
|
|
+ </van-tab>
|
|
|
+ <van-tab title="转结奖励明细">
|
|
|
+ <div v-if="dataShow2" key="data2">
|
|
|
+ <van-list v-model="loading2" :finished="finished2" finished-text=" " @load="getList2">
|
|
|
+ <van-cell-group v-for="(item, index) in dataList2" :key="index">
|
|
|
+ <van-cell>
|
|
|
+ <template #icon>
|
|
|
+ <!-- <i class="icon icon_audition" v-if="item.groupType == 'PRACTICE'"></i>
|
|
|
+ <i class="icon icon_vip" v-if="item.groupType == 'VIP'"></i>
|
|
|
+ <i class="icon icon_music" v-if="item.groupType == 'MUSIC'"></i> -->
|
|
|
+ <i class="icon icon_reword"></i>
|
|
|
+ </template>
|
|
|
+ <template #title>
|
|
|
+ <div class="title">{{ item.courseName }}</div>
|
|
|
+ <div class="baseInfo">
|
|
|
+ <p>排课:{{ item.startClassTime | getMonthDay }} {{ item.startClassTime | getHourMin }}-{{ item.endClassTime | getHourMin }}</p>
|
|
|
+ <p>签到:{{ item.signInTime | getHourMin }} 签退:{{ item.signOutTime | getHourMin }}</p>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ <template #default>
|
|
|
+ <p class="money" :class="[item.reduceSalary > 0 ? 'error' : '']">
|
|
|
+ ¥<span>{{ item.finalSalary }}</span>
|
|
|
+ </p>
|
|
|
+ <div class="moneyInfo" v-if="item.reduceSalary > 0">
|
|
|
+ 课酬:¥{{ item.actualSalary }}
|
|
|
+ <br />扣款:¥{{ item.reduceSalary }}
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ </van-cell>
|
|
|
+ </van-cell-group>
|
|
|
+ </van-list>
|
|
|
+ </div>
|
|
|
+ <m-empty class="empty" v-else key="data2" />
|
|
|
+ </van-tab>
|
|
|
+ </van-tabs>
|
|
|
</div>
|
|
|
|
|
|
<!-- <m-empty class="empty" v-else key="data" /> -->
|
|
@@ -55,11 +96,11 @@
|
|
|
<script>
|
|
|
import MHeader from "@/components/MHeader";
|
|
|
import { browser, getSTD } from "@/common/common";
|
|
|
-// import MEmpty from "@/components/MEmpty";
|
|
|
-import { findTeacherSettlementCourseSalarys, confirmTeacherMonthSalary } from "@/api/audition";
|
|
|
+import MEmpty from "@/components/MEmpty";
|
|
|
+import { findTeacherSettlementCourseSalarys, confirmTeacherMonthSalary, findTeacherRewards } from "@/api/audition";
|
|
|
export default {
|
|
|
name: "remuneration",
|
|
|
- components: { MHeader },
|
|
|
+ components: { MHeader, MEmpty },
|
|
|
data() {
|
|
|
let query = this.$route.query
|
|
|
let tempDate = new Date(query.month + '-01')
|
|
@@ -70,12 +111,14 @@ export default {
|
|
|
let tempAppealDate = tempDate.getFullYear() + '年' + getSTD(tempDate.getMonth() + 1) + '月'
|
|
|
let tempAppealDateStr = tempDate.getFullYear() + '-' + getSTD(tempDate.getMonth() + 1)
|
|
|
return {
|
|
|
+ active: 0,
|
|
|
headerStatus: true,
|
|
|
appealDate: tempAppealDate,
|
|
|
appealDateStr: tempAppealDateStr,
|
|
|
loading: false,
|
|
|
finished: false,
|
|
|
statistics: [],
|
|
|
+ allMoney: 0, // 总计金额
|
|
|
dataList: [],
|
|
|
dataShow: true, // 是否有数据
|
|
|
confirmStatus: 1, // 是否确认
|
|
@@ -84,7 +127,16 @@ export default {
|
|
|
month: query.month ? query.month : null,
|
|
|
page: 1,
|
|
|
rows: 20
|
|
|
- }
|
|
|
+ },
|
|
|
+ loading2: false,
|
|
|
+ finished2: false,
|
|
|
+ dataList2: [],
|
|
|
+ dataShow2: true, // 是否有数据
|
|
|
+ params2: {
|
|
|
+ month: query.month ? query.month : null,
|
|
|
+ page: 1,
|
|
|
+ rows: 20
|
|
|
+ },
|
|
|
};
|
|
|
},
|
|
|
mounted() {
|
|
@@ -97,6 +149,7 @@ export default {
|
|
|
if (browser().android || browser().iPhone) {
|
|
|
this.headerStatus = false;
|
|
|
}
|
|
|
+
|
|
|
},
|
|
|
methods: {
|
|
|
getList() {
|
|
@@ -108,7 +161,7 @@ export default {
|
|
|
if (result.code == 200) {
|
|
|
// 判断是否有统计数据
|
|
|
if(result.data.stat && result.data.stat.length > 0) {
|
|
|
- let tempStatistics = result.data.stat
|
|
|
+ this.statistics = result.data.stat
|
|
|
let counts = {
|
|
|
courseTimes: 0,
|
|
|
totalActualSalary: 0
|
|
@@ -117,9 +170,7 @@ export default {
|
|
|
counts.courseTimes += item.courseTimes
|
|
|
counts.totalActualSalary += item.totalActualSalary
|
|
|
})
|
|
|
- counts.groupType = 'ALL'
|
|
|
- tempStatistics.unshift(counts)
|
|
|
- this.statistics = tempStatistics
|
|
|
+ this.allMoney = counts.totalActualSalary
|
|
|
}
|
|
|
let pageInfo = result.data.pageInfo
|
|
|
params.page = pageInfo.pageNo
|
|
@@ -139,6 +190,29 @@ export default {
|
|
|
}
|
|
|
});
|
|
|
},
|
|
|
+ getList2() {
|
|
|
+ // this.finished = true
|
|
|
+ let params = this.params2;
|
|
|
+ findTeacherRewards(params).then(res => {
|
|
|
+ let result = res.data;
|
|
|
+ this.loading2 = false;
|
|
|
+ if (result.code == 200) {
|
|
|
+ let pageInfo = result.data
|
|
|
+ params.page = pageInfo.pageNo
|
|
|
+ this.dataList2 = this.dataList2.concat(pageInfo.rows)
|
|
|
+ if (params.page >= pageInfo.totalPage) {
|
|
|
+ this.finished2 = true;
|
|
|
+ }
|
|
|
+ this.params2.page++;
|
|
|
+ } else {
|
|
|
+ this.finished2 = true;
|
|
|
+ }
|
|
|
+ // 判断是否有数据
|
|
|
+ if (this.dataList.length <= 0) {
|
|
|
+ this.dataShow2 = false;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
onAppeal(haveComplaints) {
|
|
|
this.$router.push({
|
|
|
path: "appealDetail",
|
|
@@ -211,13 +285,16 @@ export default {
|
|
|
color: #1a1a1a;
|
|
|
background: #fff;
|
|
|
text-align: center;
|
|
|
- line-height: 0.5rem;
|
|
|
+ padding: .1rem 0;
|
|
|
+ span {
|
|
|
+ font-size: .18rem;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
.monthCount {
|
|
|
border: 1px solid rgba(204, 204, 204, 1);
|
|
|
border-radius: 0.04rem;
|
|
|
- margin: 0.16rem 0.16rem 0;
|
|
|
+ margin: 0.16rem 0.16rem .12rem;
|
|
|
background: #fff;
|
|
|
padding: 0.12rem;
|
|
|
.item {
|
|
@@ -227,7 +304,7 @@ export default {
|
|
|
font-size: 0.14rem;
|
|
|
padding: 0.05rem 0.1rem;
|
|
|
.title {
|
|
|
- width: 0.8rem;
|
|
|
+ width: 1rem;
|
|
|
}
|
|
|
.money {
|
|
|
width: 0.8rem;
|
|
@@ -239,6 +316,13 @@ export default {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+/deep/.van-tabs {
|
|
|
+ background: #fff;
|
|
|
+ padding-bottom: .12rem;
|
|
|
+}
|
|
|
+/deep/.van-tabs__line {
|
|
|
+ background-color: #14928A;
|
|
|
+}
|
|
|
/deep/.van-cell-group {
|
|
|
margin: 0.16rem 0.16rem 0;
|
|
|
border: 1px solid #71bdb8;
|
|
@@ -301,6 +385,10 @@ export default {
|
|
|
background: url("../../assets/images/audition/vip_icon.png") no-repeat center;
|
|
|
background-size: contain;
|
|
|
}
|
|
|
+.icon_reword {
|
|
|
+ background: url("../../assets/images/audition/reword_icon.png") no-repeat center;
|
|
|
+ background-size: contain;
|
|
|
+}
|
|
|
.paddingB80 {
|
|
|
padding-bottom: .8rem
|
|
|
}
|