Commit 42a04715 authored by 罗超's avatar 罗超

Merge branch 'master' of http://gitlab.oytour.com/luochao/confucius into master

# Conflicts:
#	src/App.vue
parents 8db64d34 7bea99e9
...@@ -12,7 +12,11 @@ export default { ...@@ -12,7 +12,11 @@ export default {
<style> <style>
@import url('~assets/css/font.css'); @import url('~assets/css/font.css');
<<<<<<< HEAD
@import url('//at.alicdn.com/t/font_2077629_byb6agikplo.css'); @import url('//at.alicdn.com/t/font_2077629_byb6agikplo.css');
=======
@import url('//at.alicdn.com/t/font_2077629_ogegjt0w5at.css');
>>>>>>> 7bea99e9854df27288c97b9448c94a6e43507a67
html, html,
body, body,
......
...@@ -147,5 +147,42 @@ export function getSellCommissionPeriodsList(data) { ...@@ -147,5 +147,42 @@ export function getSellCommissionPeriodsList(data) {
}); });
} }
// 财务报表 获取老师课耗统计
export function getTeacherConsumptionHoursStatistics(data) {
return request({
url: '/finance/GetTeacherConsumptionHoursStatistics',
method: 'post',
data
});
}
// 财务报表 获取老师课时消费明细列表
export function getTeacherConsumptionHoursDetialPageList(data) {
return request({
url: '/finance/GetTeacherConsumptionHoursDetialPageList',
method: 'post',
data
});
}
// 财务报表 学生课耗明细列表
export function getStudentConsumptionHoursDetialPageList(data) {
return request({
url: '/finance/GetStudentConsumptionHoursDetialPageList',
method: 'post',
data
});
}
// 财务报表 销售业绩排名统计
export function getSaleAchievementsRankStatistics(data) {
return request({
url: '/finance/GetSaleAchievementsRankStatistics',
method: 'post',
data
});
}
...@@ -601,7 +601,9 @@ ...@@ -601,7 +601,9 @@
</template> </template>
<template v-else> <template v-else>
<template v-if="HandoverObj&&HandoverObj.CreateByName"> <template v-if="HandoverObj&&HandoverObj.CreateByName">
{{HandoverObj.CreateByName}}创建于{{HandoverObj.CreateTimeStr}} {{HandoverObj.CreateByName}}创建于
<template v-if="HandoverObj.IsOperate==2">{{HandoverObj.CreateTimeStr2}}</template>
<template v-else>{{HandoverObj.CreateTimeStr}}</template>
</template> </template>
</template> </template>
</div> </div>
...@@ -751,7 +753,13 @@ ...@@ -751,7 +753,13 @@
if (this.EmergenciesList.length > 0) { if (this.EmergenciesList.length > 0) {
obj.IsBurst=1 obj.IsBurst=1
} }
if (this.HandoverList.length > 0) { let HandArr = [];
this.HandoverList.forEach(x=>{
if(x.IsOperate==1){
HandArr.push(x);
}
})
if (HandArr.length > 0) {
obj.IsHandover=1 obj.IsHandover=1
} }
return obj; return obj;
......
<style> <style>
.baseSet_Title { .baseSet_Title {
width: 120px !important; width: 120px !important;
padding: 18px 0 0 16px; padding: 18px 0 0 16px;
text-align: right; text-align: right;
} }
.lessonCostStatistics .border-bottom {
.lessonCostStatistics .border-bottom {
/* border-bottom: 1px dashed #EEE; */ /* border-bottom: 1px dashed #EEE; */
padding-bottom: 5px; padding-bottom: 5px;
margin-bottom: 5px; margin-bottom: 5px;
} }
.lessonCostStatistics .text-bottom{
height: 32px;line-height: 32px; margin-bottom: 10px; .lessonCostStatistics .text-bottom {
height: 32px;
line-height: 32px;
margin-bottom: 10px;
}
.lessonCostStatistics ._icon_btn .icon-xueyuan {
background-color: #47BF8C;
}
.lessonCostStatistics ._icon_btn .icon-jiaoshi {
background-color: #47BF8C;
}
.lessonCostStatistics ._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;
}
.lessonCostStatistics .el-table td,
.el-table th {
padding: 5px 0;
}
.lessonCostStatistics .el-input {
width: 100%;
border: none;
background-color: transparent;
} }
.lessonCostStatistics ._icon_btn i.icon-sousuo {
background-color: #47BF8C;
}
.lessonCostStatistics ._icon_btn .icon-add{
background-color: #47BF8C;
}
.lessonCostStatistics ._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;
}
.lessonCostStatistics .el-table td,.el-table th{
padding: 5px 0;
}
.lessonCostStatistics .el-input__inner {
</style> width: 100%;
<template> border: none;
background-color: transparent;
}
</style>
<template>
<div class="page-body lessonCostStatistics"> <div class="page-body lessonCostStatistics">
<div class="page-search row items-center"> <div class="page-search row items-center">
<div class="col row wrap q-mr-lg q-col-gutter-md"> <div class="col row wrap q-mr-lg q-col-gutter-md">
<div style="margin-right: 20px;" v-if='iscMaker==true'> <div class="col-3">
<div class="block"> <q-select filled stack-label @input="handleCurrentChanges(1)" option-value="SId"
<span style="margin-right: 5px;">校区</span> option-label="SName" v-model="msg.SchoolId" ref="SId" :options="CompanyList" label="校区"
<el-select v-model="msg.SchoolId" filterable @change="handleCurrentChanges(1)"> :dense="false" emit-value map-options />
<el-option value="-1" label="不限"></el-option>
<el-option v-for='item in CompanyList' :label='item.SName' :value='item.SId' :key='item.SId'></el-option>
</el-select>
</div> </div>
</div> <div class="col-3">
<div v-if='isgenerate==true'> <q-select filled stack-label @input="handleCurrentChanges(1)" option-value="TId"
<div class="block" style="display:flex"> option-label="TeacherName" v-model="msg.TeacherId" ref="TId" :options="TeacherList" label="老师"
<span style="margin-right: 5px;">选择月份</span> :dense="false" emit-value map-options />
<el-date-picker
v-model="value2"
type="month"
placeholder="选择月">
</el-date-picker>
<q-btn :loading="loading1" color="primary" size="11px" label="生成提成" @click="scCommission" style="margin-left:10px"/>
</div> </div>
</div> <div class="col-3">
<q-select filled stack-label @input="handleCurrentChanges(1)" option-value="Id" option-label="Name" v-model="datetype" ref="Id"
</div> :options="datetypelist" label="日期类型" :dense="false" emit-value map-options />
</div> </div>
<template > <div class="col-3" v-if='datetype==1'>
<el-table <q-field filled>
ref="filterTable"  <template v-slot:control>
:data="tableData" <el-date-picker v-model="valueyear" type="year" placeholder="选择年份" value-format="yyyy"
v-loading = 'loading' @change="handleCurrentChanges(1)">
:header-cell-style="{backgroundColor:'#f5f6f7', color: '#a8a8b3'}" </el-date-picker>    
border </template>
style="width: 100%"> </q-field>
<!-- <el-table-column prop="Id" label="ID" ></el-table-column> -->
<el-table-column prop="Periods" label="周期" ></el-table-column>
<el-table-column prop="SumPrice" label="提成总金额" > </el-table-column>
<el-table-column prop="SchooldCommission" label="校区提成总金额" >
<template slot-scope="scope">
<div style="display: flex;flex-wrap: wrap;" v-if='scope.row.SchooldCommission>=0'>
{{scope.row.SchooldCommission>=0?scope.row.SchooldCommission:'-'}}
</div> </div>
</template> <div class="col-3" v-if='datetype==2'>
</el-table-column> <q-field filled>
<el-table-column prop="FrIdList" label="财务单据" >  <template v-slot:control>
<template slot-scope="scope"> <el-date-picker v-model="valuemonth" type="month" placeholder="选择月份" value-format="yyyy-MM"
<div style="display: flex;flex-wrap: wrap;" v-if='scope.row.FrIdList.length>0'> @change="handleCurrentChanges(1)">
<span v-for="(x,y) in scope.row.FrIdList" @click="gocaiwuxiangq(x)" style="cursor: pointer;text-decoration: underline;margin-right: 5px; color: #409EFF;">{{x}}</span> </el-date-picker>    
</template>
</q-field>
</div> </div>
<div v-else></div> </div>
</div>
</template> <div class="page-search row items-center" style="justify-content: space-between;">
</el-table-column> <span style="font-size: 20px;font-weight: 400;">老师课耗统计 <span style="font-size: 16px;"></span> </span>
<el-table-column prop="CreateByName" label="创建人" > </el-table-column> <q-btn  color="primary"  size="11px"  label="导出"  @click="txexport"  style="margin-left:10px" />
<el-table-column prop="CreateTime" label="创建时间" > </el-table-column>
<el-table-column label="操作" >
<template slot-scope="scope">
<div class="_icon_btn">
<el-tooltip class="item" effect="dark" content="查看" placement="top">
<i class="iconfont icon-sousuo"
@click="goUrl('CommissionDetail',scope.row.Id)"></i>
</el-tooltip>
<el-tooltip class="item" effect="dark" content="制单" placement="top" v-if='iscMaker==true'>
<i class="iconfont icon-add" v-if='iscMaker==true'
@click="generalFinancacls(scope.row)"></i>
</el-tooltip>
</div>
</template>
</el-table-column>
</el-table>
<div style="margin-top: 10px;text-align: center;">
<el-pagination background @current-change="handleCurrentChanges" layout="total,prev, pager, next, jumper" :current-page.sync="msg.PageIndex"
:page-size="msg.PageSize" :total='total'>
</el-pagination>
</div> </div>
<template>
</template> <el-table ref="filterTable" :data="tableData" v-loading='loading'
:header-cell-style="{backgroundColor:'#f5f6f7', color: '#a8a8b3'}" border style="width: 100%">
<el-table-column prop="SchoolName" label="校区"></el-table-column>
<el-table-column prop="LeaveStatus" label="职务"> </el-table-column>
<el-table-column prop="EmployeeName" label="老师名称"></el-table-column>
<el-table-column prop="KSNum" label="上课课时"> </el-table-column>
<el-table-column prop="Hours" label="课时转换/小时"></el-table-column>
<el-table-column prop="KSMoney" label="课时费"> </el-table-column>
<el-table-column prop="StuLearnMoney" label="学生上课金额"> </el-table-column>
<el-table-column label="操作">
<template slot-scope="scope">
<div class="_icon_btn">
<el-tooltip class="item" effect="dark" content="查看老师" placement="top">
<i class="iconfont icon-jiaoshi"
@click="goUrl('teacherclassfee',scope.row.AccountId)"></i>
</el-tooltip>
<el-tooltip class="item" effect="dark" content="查看学生" placement="top">
<i class="iconfont icon-xueyuan"
@click="goUrl('studentsClassfee',scope.row.AccountId)"></i>
</el-tooltip>
</div>
</template>
</el-table-column>
</el-table>
<div style="margin-top: 10px;text-align: center;">
<el-pagination background @current-change="handleCurrentChanges"
layout="total,prev, pager, next, jumper" :current-page.sync="msg.pageIndex"
:page-size="msg.pageSize" :total='total'>
</el-pagination>
</div>
</template>
</div> </div>
</template> </template>
<script> <script>
import {
getSchoolDropdown
} from '../../api/school/index'
import { import {
GetClassTypePageList, getSchoolDropdown,
} from '../../api/system/index'; getTeacherDropDownList
import{ } from '../../api/school/index'
getSellCommissionPeriodsPageList, import {
setSellCommissionRule, getTeacherConsumptionHoursStatistics,
setSellCommissionInfo
} from '../../api/finance/index' } from '../../api/finance/index'
import {
EduDownLoad,
} from '../../api/common/common';
export default { export default {
meta: { meta: {
title: "课耗统计汇总表" title: "课耗统计汇总表"
},
props: {},
components: {},
data() {
return {
loading: false,
loading1: false,
value2:'',
//列表数据参数
msg: {
PageIndex: 1,
PageSize: 15,
Name:'',
SchoolId:'-1'
},
pageCount: 0,
persistent: false,
listData:{},
tableData:[],
total:0,
CompanyList:[],
isgenerate:false,//是否有生成的权限
iscMaker:false,//是否有制单的权限
}
},
created() {
let userinfo = this.getLocalStorage();
userinfo.ActionMenuList.map(x=>{//判断权限
if(x.FunctionCode == "Generate_Commission"){//判断是否有生成的权限
this.isgenerate = true;
}
if(x.FunctionCode == "Commission_maker"){//判断是否有制单的权限
this.iscMaker = true;
}
})
var myDate=new Date();
myDate.setMonth(myDate.getMonth()-1);
this.value2 = myDate.getFullYear() + "-" + (myDate.getMonth()+1)
},
mounted() {
this.getList();//获取提成周期列表
this.getBranchList()
},
methods: {
getList(){
this.loading = true;
getSellCommissionPeriodsPageList(this.msg).then(res => {
if (res.Code == 1) {
this.loading = false;
this.tableData = res.Data.PageData
this.total = res.Data.Count
}
})
},
scCommission(){//生成提成
if(this.loading1 == false){
this.loading1= true;
setSellCommissionInfo({Month:this.value2}).then(res => {
if (res.Code == 1) {
this.$q.notify({
icon: 'iconfont icon-chenggong',
color: 'accent',
timeout: 2000,
message: '生成提成成功',
position: 'top'
})
this.getList()
}
this.loading1= false;
}).catch(err=>{
this.loading1= false;
})
}
},
getBranchList(){//获取校区
getSchoolDropdown({}).then(res => {
this.CompanyList = res.Data;
}).catch(() => {
})
}, },
goUrl(path, id ) { props: {},
this.$router.push({ components: {},
path: '/financial/' + path, data() {
query: { return {
"id": id, loading: false,
blank: 'y', valuemonth: '',
valueyear: '',
//列表数据参数
msg: {
pageIndex: 1,
pageSize: 15,
TeacherId: '-1',
SchoolId: '-1',
StartMonth: '',
EndMonth: '',
},
datetype: '2',
pageCount: 0,
listData: {},
tableData: [],
total: 0,
CompanyList: [],
TeacherList: [],
datetypelist: [
{ Id: '2', Name: '月份' },
{ Id: '1', Name: '年份' },
]
} }
})
}, },
gocaiwuxiangq(id){ created() {
this.OpenNewUrl("/financial/financalDocument/FinancialDocumentsDetail", { let userinfo = this.getLocalStorage();
id: id var myDate = new Date();
}); this.valuemonth = myDate.getFullYear() + "-" + (myDate.getMonth() + 1)
}, this.valueyear = myDate.getFullYear().toString()
generalFinancacls(item) {
if(this.msg.SchoolId == -1){
if(item.SumPrice>0){
this.tishi(item.SumPrice,item.Id)
}else{
this.$message.error('提成总金额为0')
}
}else{
if(item.SchooldCommission>0){
this.goaddFinancial(item.SchooldCommission,item.Id)
}else{
this.$message.error('校区提成总金额为0')
}
}
}, },
goaddFinancial(Money,Id){ mounted() {
let School_Id = 0; this.getList();//获取提成周期列表
this.getBranchList()
let obj = { this.GetTeacherList();//老师下拉
CostType: 316,
Money: Money,
CurrencyId: 21,
XSTC: 1,
School_Id:this.msg.SchoolId == -1?0:this.msg.SchoolId,
OtherType:39,
ReFinanceId:Id,
ReFinanceId2:this.msg.SchoolId
}
let query = {
blank: "y",
tab: "新增付款单据",
Type: 2,
IsUploadPic: 1,
Name:'销售提成单',
id:143,
orderObj: JSON.stringify(obj)
}
this.$router.push({
path: "/financial/financalDocument/addFinancialDocuments",
query
});
}, },
tishi(Money,Id){ methods: {
let that = this getList() {
this.$q.dialog({ if(this.valuemonth ==null || this.valueyear==null){
title: "销售制单", this.$q.notify({
message: "你正在进行所有校区一起制单操作?", type: 'negative',
persistent: true, position: "top",
cancel: { message: `请选择日期`
label: "取消", })
flat: true return
}, }
ok: { if (this.datetype == 2) {
label: "确认", this.msg.StartMonth = this.valuemonth;
flat: true, this.msg.EndMonth = this.valuemonth;
focus: true } else if (this.datetype == 1) {
} this.msg.StartMonth = this.valueyear + '-01';
}).onOk(() => { this.msg.EndMonth = this.valueyear + '-12';
this.goaddFinancial(Money,Id) }
this.loading = true;
getTeacherConsumptionHoursStatistics(this.msg).then(res => {
if (res.Code == 1) {
this.loading = false;
this.tableData = res.Data.PageData
this.total = res.Data.Count
}
})
},
//获取教师下拉
GetTeacherList() {
getTeacherDropDownList({}).then(res => {
if (res.Code == 1) {
this.TeacherList = res.Data;
var obj = {
TeacherName: '全部',
TId: '-1'
}
this.TeacherList.unshift(obj);
}
})
},
getBranchList() {//获取校区
getSchoolDropdown({}).then(res => {
this.CompanyList = res.Data;
var obj = {
SName: '全部',
SId: '-1'
}
this.CompanyList.unshift(obj);
}).catch(() => {
})
},
goUrl(path, id) {
this.OpenNewUrl('/financial/' + path, {
id: id
}); });
// this.$router.push({
// path: '/financial/' + path,
// query: {
// id: id,
// blank: 'y',
// }
// })
},
handleCurrentChanges(val) {
this.msg.pageIndex = val;
this.getList()
},
txexport() {
var msg = JSON.parse(JSON.stringify(this.msg));
EduDownLoad("/finance/GetTeacherConsumptionHoursStatisticsToExcel", msg, "课耗统计.xls")
}
}, },
handleCurrentChanges(val){
this.msg.PageIndex= val;
this.getList()
},
},
} }
</script> </script>
<style lang="sass"> <style lang="sass">
@import url('~assets/css/table.sass') @import url('~assets/css/table.sass')
</style>
</style> \ No newline at end of file
\ No newline at end of file
<style>
.baseSet_Title {
width: 120px !important;
padding: 18px 0 0 16px;
text-align: right;
}
.lessonCostStatistics .border-bottom {
/* border-bottom: 1px dashed #EEE; */
padding-bottom: 5px;
margin-bottom: 5px;
}
.lessonCostStatistics .text-bottom {
height: 32px;
line-height: 32px;
margin-bottom: 10px;
}
.lessonCostStatistics ._icon_btn i.icon-sousuo {
background-color: #47BF8C;
}
.lessonCostStatistics ._icon_btn .icon-add {
background-color: #47BF8C;
}
.lessonCostStatistics ._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;
}
.lessonCostStatistics .el-table td,
.el-table th {
padding: 5px 0;
}
.lessonCostStatistics .el-input {
width: 100%;
border: none;
background-color: transparent;
}
.lessonCostStatistics .el-input__inner {
width: 100%;
border: none;
background-color: transparent;
}
</style>
<template>
<div class="page-body lessonCostStatistics">
<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 @input="handleCurrentChanges(1)" option-value="SId"
option-label="SName" v-model="msg.SchoolId" ref="SId" :options="CompanyList" label="校区"
:dense="false" emit-value map-options />
</div>
<div class="col-3">
<q-select filled stack-label @input="handleCurrentChanges(1)" option-value="Id" use-input
option-label="EmployeeName" v-model="msg.SaleId" ref="TId" :options="EmployeeList" label="业务员"
:dense="false" emit-value map-options @filter="filterFn2" />
</div>
<div class="col-3">
<q-select filled stack-label @input="handleCurrentChanges(1)" option-value="Id" option-label="Name"
v-model="datetype" ref="Id" :options="datetypelist" label="日期类型" :dense="false" emit-value
map-options />
</div>
<div class="col-3" v-if='datetype==1'>
<q-field filled>
 <template v-slot:control>
<el-date-picker v-model="valueyear" type="year" placeholder="选择年份" value-format="yyyy"
@change="handleCurrentChanges(1)">
</el-date-picker>    
</template>
</q-field>
</div>
<div class="col-3" v-if='datetype==2'>
<q-field filled>
 <template v-slot:control>
<el-date-picker v-model="valuemonth" type="month" placeholder="选择月份" value-format="yyyy-MM"
@change="handleCurrentChanges(1)">
</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>
<q-btn  color="primary"  size="11px"  label="导出"  @click="txexport"  style="margin-left:10px" />
</div>
<template>
<el-table ref="filterTable" :data="tableData" v-loading='loading'
:header-cell-style="{backgroundColor:'#f5f6f7', color: '#a8a8b3'}" border style="width: 100%">
<el-table-column prop="EnterName" label="业务员"></el-table-column>
<el-table-column prop="PreferPrice" label="应收"> </el-table-column>
<el-table-column prop="Income" label="实收"></el-table-column>
<el-table-column prop="PlatformTax" label="平台税金"> </el-table-column>
<el-table-column prop="Refund" label="退款"></el-table-column>
<el-table-column prop="RIncome" label="退后实收"> </el-table-column>
<el-table-column prop="YSKMoney" label="已上课金额"> </el-table-column>
<el-table-column prop="GuestNum" label="报名人数"> </el-table-column>
<el-table-column prop="JKNum" label="结课人数"> </el-table-column>
<el-table-column prop="OrderNum" label="订单数量"> </el-table-column>
<!-- <el-table-column label="操作">
<template slot-scope="scope">
<div class="_icon_btn">
<el-tooltip class="item" effect="dark" content="查看老师" placement="top">
<i class="iconfont icon-sousuo"
@click="goUrl('teacherclassfee',scope.row.AccountId)"></i>
</el-tooltip>
<el-tooltip class="item" effect="dark" content="查看学生" placement="top">
<i class="iconfont icon-sousuo"
@click="goUrl('studentsClassfee',scope.row.AccountId)"></i>
</el-tooltip>
</div>
</template>
</el-table-column> -->
</el-table>
<div style="margin-top: 10px;text-align: center;">
<el-pagination background @current-change="handleCurrentChanges"
layout="total,prev, pager, next, jumper" :current-page.sync="msg.pageIndex"
:page-size="msg.pageSize" :total='total'>
</el-pagination>
</div>
</template>
</div>
</template>
<script>
import {
getSchoolDropdown,
getTeacherDropDownList
} from '../../api/school/index'
import {
getSaleAchievementsRankStatistics,
} from '../../api/finance/index'
import {
EduDownLoad,
} from '../../api/common/common';
import { queryEmployee } from '../../api/users/user'
export default {
meta: {
title: "课耗统计汇总表"
},
props: {},
components: {},
data() {
return {
loading: false,
valuemonth: '',
valueyear: '',
//列表数据参数
msg: {
pageIndex: 1,
pageSize: 15,
SaleId: '-1',
SchoolId: '-1',
StartMonth: '',
EndMonth: '',
},
datetype: '2',
pageCount: 0,
listData: {},
tableData: [],
total: 0,
CompanyList: [],
TeacherList: [],
EmployeeList: [],
AllemployeeList: [],
datetypelist: [
{ Id: '2', Name: '月份' },
{ Id: '1', Name: '年份' },
]
}
},
created() {
let userinfo = this.getLocalStorage();
var myDate = new Date();
this.valuemonth = myDate.getFullYear() + "-" + (myDate.getMonth() + 1)
this.valueyear = myDate.getFullYear().toString()
},
mounted() {
this.getList();//获取提成周期列表
this.getBranchList()
this.GetTeacherList();//老师下拉
this.getEmployee(0);
},
methods: {
getList() {
if (this.valuemonth == null || this.valueyear == null) {
this.$q.notify({
type: 'negative',
position: "top",
message: `请选择日期`
})
return
}
if (this.datetype == 2) {
this.msg.StartMonth = this.valuemonth;
this.msg.EndMonth = this.valuemonth;
} else if (this.datetype == 1) {
this.msg.StartMonth = this.valueyear + '-01';
this.msg.EndMonth = this.valueyear + '-12';
}
this.loading = true;
getSaleAchievementsRankStatistics(this.msg).then(res => {
if (res.Code == 1) {
this.loading = false;
this.tableData = res.Data.PageData
this.total = res.Data.Count
}
})
},
//获取教师下拉
GetTeacherList() {
getTeacherDropDownList({}).then(res => {
if (res.Code == 1) {
this.TeacherList = res.Data;
var obj = {
TeacherName: '全部',
TId: '-1'
}
this.TeacherList.unshift(obj);
}
})
},
getBranchList() {//获取校区
getSchoolDropdown({}).then(res => {
this.CompanyList = res.Data;
var obj = {
SName: '全部',
SId: '-1'
}
this.CompanyList.unshift(obj);
}).catch(() => {
})
},
//业务员
getEmployee(id) {
var qMsg = {
Dept_Id: 0
}
qMsg.Dept_Id = id;
queryEmployee(qMsg).then(res => {
if (res.Code == 1) {
this.EmployeeList = res.Data;
let obj = {
Id: "-1",
EmployeeName: "不限"
}
this.EmployeeList.unshift(obj)
this.AllemployeeList = JSON.parse(JSON.stringify(this.EmployeeList));
}
}).catch(() => {
})
},
//筛选业务员
filterFn2(val, update) {
update(() => {
if (val === '') {
this.EmployeeList = JSON.parse(JSON.stringify(this.AllemployeeList))
} else {
const needle = val.toLowerCase()
this.EmployeeList = this.AllemployeeList.filter(v => v.EmployeeName.toLowerCase().indexOf(needle) > -1)
}
})
},
goUrl(path, id) {
this.OpenNewUrl('/financial/' + path, {
id: id
});
},
handleCurrentChanges(val) {
this.msg.pageIndex = val;
this.getList()
},
txexport() {
var msg = JSON.parse(JSON.stringify(this.msg));
EduDownLoad("/finance/GetSaleAchievementsRankStatisticsToExcel", msg, "销售业绩排名.xls")
}
},
}
</script>
<style lang="sass">
@import url('~assets/css/table.sass')
</style>
\ No newline at end of file
<style>
.baseSet_Title {
width: 120px !important;
padding: 18px 0 0 16px;
text-align: right;
}
.studentsClassfee .border-bottom {
/* border-bottom: 1px dashed #EEE; */
padding-bottom: 5px;
margin-bottom: 5px;
}
.studentsClassfee .text-bottom {
height: 32px;
line-height: 32px;
margin-bottom: 10px;
}
.studentsClassfee ._icon_btn i.icon-sousuo {
background-color: #47BF8C;
}
.studentsClassfee ._icon_btn .icon-add {
background-color: #47BF8C;
}
.studentsClassfee ._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;
}
.studentsClassfee .el-table td,
.el-table th {
padding: 5px 0;
}
.studentsClassfee .el-input {
width: 100%;
border: none;
background-color: transparent;
}
.studentsClassfee .el-input__inner {
width: 100%;
border: none;
background-color: transparent;
}
</style>
<template>
<div class="page-body studentsClassfee">
<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 @input="handleCurrentChanges(1)" option-value="SId"
option-label="SName" v-model="msg.SchoolId" ref="SId" :options="CompanyList" label="校区"
:dense="false" emit-value map-options />
</div>
<div class="col-3">
<q-select filled stack-label @input="handleCurrentChanges(1)" option-value="TId"
option-label="TeacherName" v-model="msg.TeacherId" ref="TId" :options="TeacherList" label="老师"
:dense="false" emit-value map-options />
</div>
<div class="col-3">
<q-input @input="handleCurrentChanges(1)" clearable standout="bg-primary text-white" v-model="msg.OrderId" label="订单号"
@clear="handleCurrentChanges(1)" maxlength="20" />
</div>
<div class="col-3">
<q-input @input="handleCurrentChanges(1)" clearable standout="bg-primary text-white" v-model="msg.StudentName" label="学生名称"
@clear="handleCurrentChanges(1)" maxlength="20" />
</div>
<div class="col-3">
<q-input @input="handleCurrentChanges(1)" clearable standout="bg-primary text-white" v-model="msg.ContractNo" label="合同编号"
@clear="handleCurrentChanges(1)" maxlength="20" />
</div>
<div class="col-3">
<q-select filled stack-label @input="handleCurrentChanges(1)" option-value="Id" option-label="Name" v-model="datetype" ref="Id"
:options="datetypelist" label="日期类型" :dense="false" emit-value map-options />
</div>
<div class="col-3" v-if='datetype==1'>
<q-field filled>
 <template v-slot:control>
<el-date-picker v-model="valueyear" type="year" placeholder="选择年份" value-format="yyyy"
@change="handleCurrentChanges(1)">
</el-date-picker>    
</template>
</q-field>
</div>
<div class="col-3" v-if='datetype==2'>
<q-field filled>
 <template v-slot:control>
<el-date-picker v-model="valuemonth" type="month" placeholder="选择月份" value-format="yyyy-MM"
@change="handleCurrentChanges(1)">
</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>
<q-btn  color="primary" size="11px" label="导出" @click="txexport" style="margin-left:10px"/>
</div>
<template>
<el-table ref="filterTable" :data="tableData" v-loading='loading'
:header-cell-style="{backgroundColor:'#f5f6f7', color: '#a8a8b3'}" border style="width: 100%">
<el-table-column prop="OrderId" label="订单号">
<template slot-scope="scope">
<div style="text-decoration: underline;cursor: pointer;" @click='gobaoming(scope.row.OrderId)'>
{{scope.row.OrderId}}
</div>
</template>
</el-table-column>
<el-table-column prop="ContractNo" width='150' label="合同号"></el-table-column>
<el-table-column prop="ClassDate" label="上课日期"></el-table-column>
<el-table-column prop="TimeBucket" label="上课时间段"> </el-table-column>
<el-table-column prop="GuestName" label="学生名称"> </el-table-column>
<el-table-column prop="ClassName" label="上课班级"> </el-table-column>
<el-table-column prop="CourseName" label="课程"></el-table-column>
<el-table-column prop="TeacherName" label="老师名称"></el-table-column>
<el-table-column prop="CurrentDeductionHours" label="课时"></el-table-column>
<el-table-column prop="UnitPrice">
<template slot="header">
<div>合同单价</div>
<div>(元/课时)</div>
</template>
</el-table-column>
<el-table-column prop="XHMoney" label="课耗(消耗合同金额)"> </el-table-column>
<el-table-column prop="SaleName" label="提成销售"></el-table-column>
<el-table-column prop="HelpEnterName" label="提成老师"></el-table-column>
</el-table>
<div style="margin-top: 10px;text-align: center;">
<el-pagination background @current-change="handleCurrentChanges"
layout="total,prev, pager, next, jumper" :current-page.sync="msg.pageIndex"
:page-size="msg.pageSize" :total='total'>
</el-pagination>
</div>
</template>
</div>
</template>
<script>
import {
getSchoolDropdown,
getTeacherDropDownList
} from '../../api/school/index'
import {
getStudentConsumptionHoursDetialPageList,
} from '../../api/finance/index'
import {
EduDownLoad,
} from '../../api/common/common';
export default {
meta: {
title: "学生课耗明细列表"
},
props: {},
components: {},
data() {
return {
loading: false,
valuemonth: '',
valueyear: '',
//列表数据参数
msg: {
pageIndex: 1,
pageSize: 15,
TeacherId: '-1',
SchoolId: '-1',
StartMonth: '',
EndMonth: '',
StudentName:'',
OrderId:'',
ContractNo:'',
},
datetype: '2',
pageCount: 0,
listData: {},
tableData: [],
total: 0,
CompanyList: [],
TeacherList: [],
datetypelist: [
{ Id: '2', Name: '月份' },
{ Id: '1', Name: '年份' },
]
}
},
created() {
let userinfo = this.getLocalStorage();
var myDate = new Date();
this.valuemonth = myDate.getFullYear() + "-" + (myDate.getMonth() + 1)
this.valueyear = myDate.getFullYear().toString()
if(this.$route.query && this.$route.query.id){
this.msg.TeacherId = Number(this.$route.query.id)
}
},
mounted() {
this.getList();//获取提成周期列表
this.getBranchList()
this.GetTeacherList();//老师下拉
},
methods: {
getList() {
if(this.valuemonth ==null || this.valueyear==null){
this.$q.notify({
type: 'negative',
position: "top",
message: `请选择日期`
})
return
}
if (this.datetype == 2) {
this.msg.StartMonth = this.valuemonth;
this.msg.EndMonth = this.valuemonth;
} else if (this.datetype == 1) {
this.msg.StartMonth = this.valueyear + '-01';
this.msg.EndMonth = this.valueyear + '-12';
}
this.loading = true;
getStudentConsumptionHoursDetialPageList(this.msg).then(res => {
if (res.Code == 1) {
this.loading = false;
this.tableData = res.Data.PageData
this.total = res.Data.Count
}
})
},
//获取教师下拉
GetTeacherList() {
getTeacherDropDownList({}).then(res => {
if (res.Code == 1) {
this.TeacherList = res.Data;
var obj = {
TeacherName: '全部',
TId: '-1'
}
this.TeacherList.unshift(obj);
}
})
},
getBranchList() {//获取校区
getSchoolDropdown({}).then(res => {
this.CompanyList = res.Data;
var obj = {
SName: '全部',
SId: '-1'
}
this.CompanyList.unshift(obj);
}).catch(() => {
})
},
goUrl(path, id) {
this.$router.push({
path: '/financial/' + path,
query: {
"id": id,
blank: 'y',
}
})
},
handleCurrentChanges(val) {
this.msg.pageIndex = val;
this.getList()
},
txexport(){
var msg = JSON.parse(JSON.stringify(this.msg));
EduDownLoad("/finance/GetStudentConsumptionHoursDetialPageListToExcel", msg, "课耗学生明细.xls")
},
gobaoming(Id){
this.OpenNewUrl('/sale/orderStatistics', {
OrderId: Id
});
}
},
}
</script>
<style lang="sass">
@import url('~assets/css/table.sass')
</style>
\ No newline at end of file
<style>
.baseSet_Title {
width: 120px !important;
padding: 18px 0 0 16px;
text-align: right;
}
.teacherclassfee .border-bottom {
/* border-bottom: 1px dashed #EEE; */
padding-bottom: 5px;
margin-bottom: 5px;
}
.teacherclassfee .text-bottom {
height: 32px;
line-height: 32px;
margin-bottom: 10px;
}
.teacherclassfee ._icon_btn i.icon-sousuo {
background-color: #47BF8C;
}
.teacherclassfee ._icon_btn .icon-add {
background-color: #47BF8C;
}
.teacherclassfee ._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;
}
.teacherclassfee .el-table td,
.el-table th {
padding: 5px 0;
}
.teacherclassfee .el-input {
width: 100%;
border: none;
background-color: transparent;
}
.teacherclassfee .el-input__inner {
width: 100%;
border: none;
background-color: transparent;
}
</style>
<template>
<div class="page-body teacherclassfee">
<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 @input="handleCurrentChanges(1)" option-value="SId"
option-label="SName" v-model="msg.SchoolId" ref="SId" :options="CompanyList" label="校区"
:dense="false" emit-value map-options />
</div>
<div class="col-3">
<q-select filled stack-label @input="handleCurrentChanges(1)" option-value="TId"
option-label="TeacherName" v-model="msg.TeacherId" ref="TId" :options="TeacherList" label="老师"
:dense="false" emit-value map-options />
</div>
<div class="col-3">
<q-select filled stack-label @input="handleCurrentChanges(1)" option-value="Id" option-label="Name" v-model="datetype" ref="Id"
:options="datetypelist" label="日期类型" :dense="false" emit-value map-options />
</div>
<div class="col-3" v-if='datetype==1'>
<q-field filled>
 <template v-slot:control>
<el-date-picker v-model="valueyear" type="year" placeholder="选择年份" value-format="yyyy"
@change="handleCurrentChanges(1)">
</el-date-picker>    
</template>
</q-field>
</div>
<div class="col-3" v-if='datetype==2'>
<q-field filled>
 <template v-slot:control>
<el-date-picker v-model="valuemonth" type="month" placeholder="选择月份" value-format="yyyy-MM"
@change="handleCurrentChanges(1)">
</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>
<q-btn  color="primary" size="11px" label="导出" @click="txexport" style="margin-left:10px"/>
</div>
<template>
<el-table ref="filterTable" :data="tableData" v-loading='loading'
:header-cell-style="{backgroundColor:'#f5f6f7', color: '#a8a8b3'}" border style="width: 100%">
<el-table-column prop="ClassDate" label="上课日期"></el-table-column>
<el-table-column prop="TimeBucket" label="上课时间段"> </el-table-column>
<el-table-column prop="TeacherName" label="老师名称"></el-table-column>
<el-table-column prop="ClassName" label="上课班级"> </el-table-column>
<el-table-column prop="CourseName" label="课程"></el-table-column>
<el-table-column prop="KSNum" label="上课课时"></el-table-column>
<el-table-column prop="Hours" label="课时转换/小时"> </el-table-column>
<el-table-column prop="HourMoney" label="课时费单价元/小时"></el-table-column>
<el-table-column prop="KSMoney" label="老师课时费"></el-table-column>
</el-table>
<div style="margin-top: 10px;text-align: center;">
<el-pagination background @current-change="handleCurrentChanges"
layout="total,prev, pager, next, jumper" :current-page.sync="msg.pageIndex"
:page-size="msg.pageSize" :total='total'>
</el-pagination>
</div>
</template>
</div>
</template>
<script>
import {
getSchoolDropdown,
getTeacherDropDownList
} from '../../api/school/index'
import {
getTeacherConsumptionHoursDetialPageList,
} from '../../api/finance/index'
import {
EduDownLoad,
} from '../../api/common/common';
export default {
meta: {
title: "老师课时消费明细列表"
},
props: {},
components: {},
data() {
return {
loading: false,
valuemonth: '',
valueyear: '',
//列表数据参数
msg: {
pageIndex: 1,
pageSize: 15,
TeacherId: '-1',
SchoolId: '-1',
StartMonth: '',
EndMonth: '',
},
datetype: '2',
pageCount: 0,
listData: {},
tableData: [],
total: 0,
CompanyList: [],
TeacherList: [],
datetypelist: [
{ Id: '2', Name: '月份' },
{ Id: '1', Name: '年份' },
]
}
},
created() {
let userinfo = this.getLocalStorage();
var myDate = new Date();
this.valuemonth = myDate.getFullYear() + "-" + (myDate.getMonth() + 1)
this.valueyear = myDate.getFullYear().toString()
if(this.$route.query && this.$route.query.id){
this.msg.TeacherId = Number(this.$route.query.id)
}
},
mounted() {
this.getList();//获取提成周期列表
this.getBranchList()
this.GetTeacherList();//老师下拉
},
methods: {
getList() {
if(this.valuemonth ==null || this.valueyear==null){
this.$q.notify({
type: 'negative',
position: "top",
message: `请选择日期`
})
return
}
if (this.datetype == 2) {
this.msg.StartMonth = this.valuemonth;
this.msg.EndMonth = this.valuemonth;
} else if (this.datetype == 1) {
this.msg.StartMonth = this.valueyear + '-01';
this.msg.EndMonth = this.valueyear + '-12';
}
this.loading = true;
getTeacherConsumptionHoursDetialPageList(this.msg).then(res => {
if (res.Code == 1) {
this.loading = false;
this.tableData = res.Data.PageData
this.total = res.Data.Count
}
})
},
//获取教师下拉
GetTeacherList() {
getTeacherDropDownList({}).then(res => {
if (res.Code == 1) {
this.TeacherList = res.Data;
var obj = {
TeacherName: '全部',
TId: '-1'
}
this.TeacherList.unshift(obj);
}
})
},
getBranchList() {//获取校区
getSchoolDropdown({}).then(res => {
this.CompanyList = res.Data;
var obj = {
SName: '全部',
SId: '-1'
}
this.CompanyList.unshift(obj);
}).catch(() => {
})
},
goUrl(path, id) {
this.$router.push({
path: '/financial/' + path,
query: {
"id": id,
blank: 'y',
}
})
},
handleCurrentChanges(val) {
this.msg.pageIndex = val;
this.getList()
},
txexport(){
var msg = JSON.parse(JSON.stringify(this.msg));
EduDownLoad("/finance/GetTeacherConsumptionHoursDetialPageListToExcel", msg, "课耗老师明细.xls")
}
},
}
</script>
<style lang="sass">
@import url('~assets/css/table.sass')
</style>
\ No newline at end of file
...@@ -40,7 +40,7 @@ ...@@ -40,7 +40,7 @@
<template v-slot:top="props"> <template v-slot:top="props">
<div class="col-2 q-table__title">试听班级管理</div> <div class="col-2 q-table__title">试听班级管理</div>
<q-space /> <q-space />
<div class="page-option"> <div class="page-option" style="display:none;">
<q-btn color="accent" size="sm" class="q-mr-md" icon="add" label="添加试听" @click="editVisitor(null)" /> <q-btn color="accent" size="sm" class="q-mr-md" icon="add" label="添加试听" @click="editVisitor(null)" />
</div> </div>
</template> </template>
......
...@@ -280,7 +280,7 @@ ...@@ -280,7 +280,7 @@
<div class="text-h6">值班交接</div> <div class="text-h6">值班交接</div>
</q-card-section> </q-card-section>
<q-card-section class="q-pt-none"> <q-card-section class="q-pt-none">
<div class="q-gutter-sm" style="width:280px;" v-if="isShowOne"> <div class="q-gutter-sm" style="width:300px;" v-if="isShowOne">
<span style="position:relative;top:6px;">突发事件:</span> <span style="position:relative;top:6px;">突发事件:</span>
<q-radio v-model="isHaveTufa" :val="2" label="有" /> <q-radio v-model="isHaveTufa" :val="2" label="有" />
<q-radio v-model="isHaveTufa" :val="1" label="无" /> <q-radio v-model="isHaveTufa" :val="1" label="无" />
...@@ -292,6 +292,7 @@ ...@@ -292,6 +292,7 @@
</div> </div>
</q-card-section> </q-card-section>
<q-card-actions align="right"> <q-card-actions align="right">
<q-btn flat label="关闭" color="primary" @click="isShowTuFA=false" />
<q-btn flat label="确定" color="primary" @click="submitHand" /> <q-btn flat label="确定" color="primary" @click="submitHand" />
</q-card-actions> </q-card-actions>
</q-card> </q-card>
...@@ -345,8 +346,8 @@ ...@@ -345,8 +346,8 @@
isShowEditAndDelete: false, //是否显示编辑和删除按钮【默认不显示】 isShowEditAndDelete: false, //是否显示编辑和删除按钮【默认不显示】
}, },
isShowTuFA: false, isShowTuFA: false,
isHaveTufa: 2, //是否有突发 isHaveTufa: 1, //是否有突发
isHaveHand: 2, //是否有交接 isHaveHand: 1, //是否有交接
isShowOne: false, isShowOne: false,
isShowTwo: false, isShowTwo: false,
status: 0 status: 0
...@@ -383,11 +384,15 @@ ...@@ -383,11 +384,15 @@
if (this.$refs.schOrder.getTufaHand().IsBurst == 0) { if (this.$refs.schOrder.getTufaHand().IsBurst == 0) {
this.isShowOne = true; this.isShowOne = true;
this.isShowTuFA = true; this.isShowTuFA = true;
}else{
this.isShowOne = false;
} }
//交接工作 //交接工作
if (this.$refs.schOrder.getTufaHand().IsHandover == 0) { if (this.$refs.schOrder.getTufaHand().IsHandover == 0) {
this.isShowTwo = true; this.isShowTwo = true;
this.isShowTuFA = true; this.isShowTuFA = true;
}else{
this.isShowTwo = false;
} }
if (this.$refs.schOrder.getTufaHand().IsBurst > 0 && this.$refs.schOrder.getTufaHand().IsHandover > 0) { if (this.$refs.schOrder.getTufaHand().IsBurst > 0 && this.$refs.schOrder.getTufaHand().IsHandover > 0) {
this.saveInfo() this.saveInfo()
...@@ -424,6 +429,7 @@ ...@@ -424,6 +429,7 @@
message: '数据保存成功!', message: '数据保存成功!',
position: 'top' position: 'top'
}) })
this.$refs.schOrder.getWorkList();
} else { } else {
this.$q.notify({ this.$q.notify({
icon: 'iconfont icon-chenggong', icon: 'iconfont icon-chenggong',
...@@ -459,11 +465,8 @@ ...@@ -459,11 +465,8 @@
this.isShowTuFA = false; this.isShowTuFA = false;
return return
} }
if (this.isHaveTufa == 1) { if (this.isHaveTufa == 1&&this.isHaveHand == 1) {
this.checkMsg.IsBurst = 1; this.checkMsg.IsBurst = 1;
this.saveInfo();
}
if (this.isHaveHand == 1) {
this.checkMsg.IsHandover = 1; this.checkMsg.IsHandover = 1;
this.saveInfo(); this.saveInfo();
} }
......
...@@ -161,7 +161,7 @@ ...@@ -161,7 +161,7 @@
.sche_midList { .sche_midList {
width: 31.6%; width: 31.6%;
height: 300px; height: 320px;
background: #fff; background: #fff;
border-radius: 16px; border-radius: 16px;
border: 1px solid #EBEBEB; border: 1px solid #EBEBEB;
......
...@@ -248,6 +248,22 @@ const routes = [{ ...@@ -248,6 +248,22 @@ const routes = [{
component: () => component: () =>
import("pages/financial/lessonCostStatistics.vue") import("pages/financial/lessonCostStatistics.vue")
}, },
{
path: "/financial/teacherclassfee", //老师课时消费明细列表
component: () =>
import("pages/financial/teacherclassfee.vue")
},
{
path: "/financial/saleAchievementsRank", //销售业绩排名统计
component: () =>
import("pages/financial/saleAchievementsRank.vue")
},
{
path: "/financial/studentsClassfee", //学生课耗明细列表
component: () =>
import("pages/financial/studentsClassfee.vue")
},
{ {
path: "/financial/salesCommission", //提成周期列表 path: "/financial/salesCommission", //提成周期列表
component: () => 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