Commit 3ca6cba1 authored by Mac's avatar Mac

新增班级收支统计

parent cb55f1f0
......@@ -203,5 +203,16 @@ export function setSellCommissionSendEmployee(data) {
}
// 获取月度班级收支统计
export function getAllClassNowMonthStatistics(data) {
return request({
url: '/finance/GetAllClassNowMonthStatistics',
method: 'post',
data
});
}
......@@ -238,9 +238,10 @@
});
},
gourlteacher2(path,row,item) {
let StudentName = encodeURI(row.StudentName)
this.OpenNewUrl('/financial/'+path, {
ClassId: this.ClassId,
StudentName:row.StudentName,
StudentName:StudentName,
datetype:'2',
StartMonth:item.Month,
EndMonth:item.Month,
......
......@@ -1425,7 +1425,7 @@
}
let userInfo = this.getLocalStorage();
if (this.$route.query.BranchId) {
this.msg.SchoolId = this.$route.query.BranchId != undefined ? this.$route.query.BranchId : '';
this.msg.SchoolId = this.$route.query.BranchId != undefined ? Number( this.$route.query.BranchId ): '';
} else {
if (userInfo.School_Id > 0) {
......
<style>
@import "../css/cssReset.css";
.baseSet_Title {
width: 120px !important;
padding: 18px 0 0 16px;
text-align: right;
}
.RecPayQueryTeam .border-bottom {
/* border-bottom: 1px dashed #EEE; */
padding-bottom: 5px;
margin-bottom: 5px;
}
.RecPayQueryTeam .text-bottom {
height: 32px;
line-height: 32px;
margin-bottom: 10px;
}
.RecPayQueryTeam ._icon_btn .icon-xueyuan {
background-color: #47BF8C;
}
.RecPayQueryTeam ._icon_btn .icon-jiaoshi {
background-color: #47BF8C;
}
.RecPayQueryTeam ._icon_btn i {
width: 26px;
height: 26px;
display: inline-block;
color: white !important;
border-radius: 50%;
text-align: center;
line-height: 26px;
margin-right: 10px;
cursor: pointer;
outline: none;
}
.RecPayQueryTeam .el-table td,
.el-table th {
padding: 5px 0;
}
.RecPayQueryTeam .el-input {
width: 100%;
border: none;
background-color: transparent;
}
.RecPayQueryTeam .el-date-editor .el-range-input{
width: 100%;
border: none;
background-color: transparent;
}
.RecPayQueryTeam .items-center .el-input__inner {
width: 100%;
border: none;
background-color: transparent;
}
.RecPayQueryTeam .singeRowTable tr th {
border: 1px solid #d2d2d2;
}
</style>
<template>
<div class="page-body RecPayQueryTeam">
<div class="page-search row items-center">
<div class="col row wrap q-mr-lg q-col-gutter-md">
<div class="col-3">
<q-select filled stack-label use-input input-debounce="0" option-value="ClassId" @input="getList"
option-label="ClassName" v-model="msg.ClassId" :options="ClassList" label="班级" :dense="false" emit-value
map-options @filter="filterFn">
<template v-slot:no-option>
<q-item>
<q-item-section class="text-grey">
未找到相关数据
</q-item-section>
</q-item>
</template>
</q-select>
</div>
<div class="col-3">
<q-input @input="getList()" clearable standout="bg-primary text-white" v-model="msg.ClassNo" label="班号"
@clear="getList()" maxlength="20" />
</div>
<div class="col-3" >
<q-field filled>
 <template v-slot:control>
<el-date-picker class="h34" @change="getList()" v-model="valuemonth" type="daterange" :clearable='false'
value-format="yyyy-MM-dd" range-separator="至" start-placeholder="开始时间"
end-placeholder="结束时间"></el-date-picker>
</template>
</q-field>
</div>
</div>
</div>
<div class="page-search row items-center" style="justify-content: space-between;">
<span style="font-size: 20px;font-weight: 400;">月度班级收支统计 <span style="font-size: 16px;"></span> </span>
<q-btn  color="primary"  size="11px"  label="导出"  @click="txexport"  style="margin-left:10px" />
</div>
<template>
<div class="cm_content" style="width: 100%;">
<table class="po_content singeRowTable" style="border:1px solid #E6E6E6;" cellspacing="1"
cellpadding="1" v-loading="loading">
<tr >
<th rowspan="2">班号</th>
<th rowspan="2">班级名称</th>
<th rowspan="2">总课时</th>
<th rowspan="2">总学生数量</th>
<th rowspan="2">收入金额</th>
<th colspan="3">学生列表</th>
<th rowspan="2">老师课时费</th>
<th rowspan="2">老师绩效金额</th>
<th rowspan="2">销售提成</th>
<th rowspan="2">其他收入</th>
<th rowspan="2">其他成本</th>
</tr>
<tr>
<th width="">学生名称</th>
<th width="">学习课时</th>
<th width="">耗费金额</th>
</tr>
<tr v-for=" ( item , index ) in tableData ">
<td><span>{{item.ClassNo}}</span></td>
<td><span>{{item.ClassName}}</span> <span>({{item.ClassType==1?'培':'留'}})</span> </td>
<td><span>{{item.THoursNum}}</span></td>
<td><span>{{item.TStuNum}}</span></td>
<td><span>{{item.TStuMoney}}</span></td>
<td>
<span v-if='item.show == true'>
<p v-for="( son , sIndex ) in item.StuList"><span style="cursor: pointer;text-decoration: underline;" @click="gourlteacher2('studentsClassfee',son,item)">{{son.StuName}}</span>
</p>
</span>
<span v-if='item.show == false'>
<p v-for="( son , sIndex ) in item.StuList"> <span v-if='sIndex<3'> <span
style="cursor: pointer;text-decoration: underline;" @click="gourlteacher2('studentsClassfee',son,item)">{{son.StuName}}</span></span>
</p>
</span>
</td>
<td>
<span v-if='item.show == true'>
<p v-for="( son , sIndex ) in item.StuList">{{son.KSNum}}</p>
</span>
<span v-if='item.show == false'>
<p v-for="( son , sIndex ) in item.StuList"> <span
v-if='sIndex<3'>{{son.KSNum}}</span></p>
</span>
</td>
<td style="position: relative;">
<span v-if='item.show == true'>
<p v-for="( son , sIndex ) in item.StuList">{{son.Money}}
<span
style="position: absolute;right: 5px;cursor: pointer;text-decoration: underline;color: #409EFF;"
v-if='(sIndex+1)==item.StuList.length && item.show == true && item.StuList.length>3'
@click="tableData[index].show = false,$forceUpdate()">
<i class="el-icon-top"></i>
收起
</span>
</p>
</span>
<span v-if='item.show == false'>
<p v-for="( son , sIndex ) in item.StuList"> <span
v-if='sIndex<3'>{{son.Money}}</span>
<span
style="position: absolute;right: 5px;cursor: pointer;text-decoration: underline;color: #409EFF;"
v-if='sIndex==2 && item.show == false'
@click="tableData[index].show = true,$forceUpdate()">
<i class="el-icon-bottom"></i>
展开
</span>
</p>
</span>
</td>
<td><span>{{item.BonusMoney}}</span></td>
<td><span>{{item.PerfMoney}}</span></td>
<td><span>{{item.SellMoney}}</span></td>
<td><span>{{item.OtherIncome}}</span></td>
<td><span>{{item.OtherCost}}</span></td>
</tr>
</table>
<div v-if='tableData.length==0'
style="width: 100%;border:1px solid #E6E6E6;display: flex;align-items: center;justify-content: center;height: 60px;">
暂无数据
</div>
</div>
</template>
</div>
</template>
<script>
import {
getClassDropDownList,
} from '../../../api/school/index'
import {
getAllClassNowMonthStatistics,
} from '../../../api/finance/index'
import {
EduDownLoad,
} from '../../../api/common/common';
export default {
meta: {
title: "月度班级收支统计"
},
props: {},
components: {},
data() {
return {
loading: false,
valuemonth: '',
//列表数据参数
msg: {
ClassId: 0,
ClassNo: '',
StartTime: '',
EndTime: '',
},
tableData: [],
ClassList: [],
allClassList: [],
}
},
created() {
if(this.$route.query){
if(this.$route.query.StartTime && this.$route.query.EndTime ){
this.valuemonth = [this.$route.query.StartTime,this.$route.query.EndTime]
}
}
},
mounted() {
this.getList();
this.setClass()
},
methods: {
getList() {
if (this.valuemonth !='' && this.valuemonth.length>0) {
this.msg.StartTime = this.valuemonth[0]
this.msg.EndTime = this.valuemonth[1]
} else{
this.msg.StartTime = ''
this.msg.EndTime = ''
}
this.loading = true;
getAllClassNowMonthStatistics(this.msg).then(res => {
if (res.Code == 1) {
this.loading = false;
this.tableData = res.Data
this.tableData.forEach(x => {
if (x.StuList.length > 3) {
x.show = false
} else {
x.show = true
}
});
}
})
},
setClass(item) {//班级
this.isShowClass = true;
getClassDropDownList({
CourseId: 0,
IsAddDefault: 1, //添加默认选项
}).then(res => {
if (res.Code == 1) {
var jsonData = res.Data;
if (jsonData && jsonData.length > 0) {
this.ClassList = JSON.parse(JSON.stringify(jsonData));
this.allClassList = JSON.parse(JSON.stringify(jsonData));;
}
}
});
},
//筛选员工
filterFn(val, update) {
update(() => {
if (val === '') {
this.ClassList = JSON.parse(JSON.stringify(this.allClassList))
} else {
const needle = val.toLowerCase()
this.ClassList = this.allClassList.filter(v => v.ClassName.toLowerCase().indexOf(needle) > -1)
}
})
},
txexport() {
let text = '';
if (this.datetype == 2) {
if(new Date(this.msg.StartMonth).getTime() == new Date(this.msg.EndMonth).getTime()){
text = this.msg.StartMonth+'课耗统计.xls'
}else{
text = this.msg.StartMonth+'-'+ this.msg.EndMonth +'课耗统计.xls'
}
} else if (this.datetype == 1) {
text = this.valueyear+'年课耗统计.xls'
}
var msg = JSON.parse(JSON.stringify(this.msg));
EduDownLoad("/finance/GetTeacherConsumptionHoursStatisticsToExcel", msg, text)
},
gourlteacher2(path,row,item) {
let StudentName = encodeURI(row.StuName)
this.OpenNewUrl('/financial/'+path, {
ClassId: item.ClassId,
StudentName:StudentName,
datetype:'2',
StartMonth:this.msg.StartTime.split('-')[0]+'-'+this.msg.StartTime.split('-')[1],
EndMonth:this.msg.EndTime.split('-')[0]+'-'+this.msg.EndTime.split('-')[1],
});
}
},
}
</script>
<style lang="sass">
@import url('~assets/css/table.sass')
</style>
\ No newline at end of file
......@@ -243,7 +243,7 @@
this.msg.ClassId = Number(this.$route.query.ClassId)
}
if(this.$route.query && this.$route.query.StudentName){
this.msg.StudentName = this.$route.query.StudentName
this.msg.StudentName = decodeURI(this.$route.query.StudentName)
}
},
......
......@@ -238,9 +238,10 @@
});
},
gourlteacher2(path,row,item) {
let StudentName = encodeURI(row.StudentName)
this.OpenNewUrl('/financial/'+path, {
ClassId: this.ClassId,
StudentName:row.StudentName,
StudentName:StudentName,
datetype:'2',
StartMonth:item.Month,
EndMonth:item.Month,
......
......@@ -537,6 +537,11 @@ const routes = [{
component: () =>
import("pages/financial/financalDocument/BasicDocuments.vue")
},
{
path: "/financial/reportform/RecPayQueryTeam", //财务报表 月度班级收支统计
component: () =>
import("pages/financial/reportform/RecPayQueryTeam.vue")
},
{
path: "/administration/document", //行政公告
component: () =>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment