Merge remote-tracking branch 'zcwy/zcwy-teacher-manage' into zcwy-teacher-manage

# Conflicts:
#	src/views/lecturer/LecturerFeeStatistics.vue
#	src/views/lecturer/MonthlyStatistics.vue
This commit is contained in:
zhangsir
2024-10-30 14:43:04 +08:00
12 changed files with 155 additions and 114 deletions

View File

@@ -1,12 +1,19 @@
import http from "./config";
// 列表查看讲师费月度统计
// export const queryTeacherFeeTotalList = (params) => http.get('teacher/fee/queryTeacherFeeTotalList',{ params })
export const queryTeacherFeeTotalList = (obj) => http.post ('teacher/fee/queryTeacherFeeTotalList',obj)
// 列表查看讲师费统计
export const TeacherFeeTotalList = (params) => http.get('/admin/expenseSummary/list',{ params })
//讲师费统计详情
export const TeacherFeequeryById = (params) => http.get('/admin/expenseSummary/queryById',{ params })
//查看月度讲师费详情
export const TeacherFeequeryDetailId = (params) => http.get('/admin/expenseSummary/queryDetailId',{ params })
//讲师费汇总上月数据
export const createMonthSummary = (obj) => http.post('/admin/expenseSummary/CreateMonthSummary', obj)
// export const queryTeacherFeeTotalList = (obj) => http.post ('/admin/expenseSummary/list',obj)
// 列表查看讲师费月度统计详情
export const queryTeacherFeeMonthly = (obj) => http.post('teacher/fee/queryTeacherFeeMonthly', obj)
export const queryTeacherFeeMonthly = (obj) => http.get('/admin/expenseSummary/queryDetailId', obj)
////讲师费月度统计--明细
export const getTeacherFeeDetailListByTeacherNo = (params) => http.get('teacher/fee/getTeacherFeeDetailListByTeacherNo',{ params })
//讲师费明细
export const getTeacherFeeListByTeacherNo = (obj) => http.post('teacher/fee/getTeacherFeeListByTeacherNo', obj)
export const getTeacherFeeListByTeacherNo = (obj) => http.get('teacher/fee/getTeacherFeeListByTeacherNo', { params })
//讲师费汇总上月数据
export const getPreviousTeacherfee = (params) => http.get('teacher/fee/getPreviousTeacherFee', {params})
export const getPreviousTeacherfee = (obj) => http.post('teacher/fee/getPreviousTeacherFee', obj)

View File

@@ -2,8 +2,8 @@
<template>
<div>
<!-- 搜索框及按钮 -->
<div class="filter" style="min-width: 1380px;">
<a-form layout="inline">
<div class="filter" >
<a-form layout="inline" style="min-width: 1380px;">
<a-form-item class="select">
<!-- v-model:value="searchParam.name" -->
<!-- <a-input v-model:value="searchParam.userNo" style="width: 276px; height: 40px; border-radius: 8px"
@@ -98,8 +98,7 @@
<!-- 表格 -->
<div style="padding: 10px 0">
<a-table :header-cell-style="{ 'text-align': 'center' }" style="border: 1px solid #f2f6fe" :columns="columns"
:scroll="{ x: 1500 }" :data-source="tableData" :loading="tableLoading" @expand="expandTable"
:pagination="false">
:scroll="{ x: 1500 }" :data-source="tableData" :loading="tableLoading" @expand="expandTable" :pagination="false">
<template #bodyCell="{ record, column }">
<template v-if="column.key === 'operation'">
<a-space >
@@ -121,8 +120,7 @@
</div>
</div>
<!-- 弹窗组件 -->
<a-drawer v-model:visible="teacherdialog" placement="right" @closa="cancelTeacherDialog" :maskClosable="true" style="min-width: 1380px"
dropdown-style="drawaer" width="60%" :title="teacherdialogtitle">
<a-drawer v-model:visible="teacherdialog" placement="right" @closa="cancelTeacherDialog" :maskClosable="true" width="60%" :title="teacherdialogtitle">
<a-form :model="formParam" :rules="rules" layout="vertical" ref="formRef">
<!--讲师名称 teacherName 内容分类 coursetypeid -->
<a-row :gutter="16">
@@ -357,7 +355,8 @@ export default {
formParam: {
status: 1,
entryType:1,
teaching:null
teaching:null,
teachingDate:null,
},
searchdate: undefined, //选择时间
searchParam: {
@@ -631,6 +630,8 @@ export default {
// // 翻页
const changePagination = (page) => {
state.searchParam.pageNo = page;
// state.pageNo = page;
state.searchParam.pageSize = pageSize;
getTableDate();
};
// 新增讲师
@@ -775,6 +776,7 @@ export default {
const TeacherSystem = () => {
getTeacherCourseList({id:state.lookTeacherId}).then((res) => {
state.formParam = res.data.data
state.teachingDate=dayjs(res.data.data.teachingDate, 'YYYY-MM-DD'),
console.log( state.formParam);
})
.catch((err) => {

View File

@@ -145,8 +145,8 @@
</div>
</div>
<!-- 弹窗组件 -->
<a-drawer v-model:visible="teacherdialog" placement="right" @closa="cancelTeacherDialog" :maskClosable="true" style="min-width: 1380px"
dropdown-style="drawaer" width="60%" :title="teacherdialogtitle">
<a-drawer v-model:visible="teacherdialog" placement="right" @closa="cancelTeacherDialog" :maskClosable="true"
width="60%" :title="teacherdialogtitle">
<a-form :model="formParam" :rules="rules" layout="vertical" ref="formRef">
<!-- 讲师姓名 teacher 组织 orgName-->
<a-row :gutter="16">
@@ -209,8 +209,8 @@
</a-form-item>
</a-col>
<a-col :span="12">
<a-form-item label="课程名称:" name="coursename">
<a-input class="draitem" v-model:value="formParam.coursename" placeholder="请输入后搜索面授课" allowClear showSearch>
<a-form-item label="课程名称:" name="courseName">
<a-input class="draitem" v-model:value="formParam.courseName" placeholder="请输入后搜索面授课" allowClear showSearch>
</a-input>
</a-form-item>
</a-col>
@@ -304,7 +304,7 @@
{{ formParam.createFrom == 0 ? '系统生成' : formParam.createFrom == 1 ? '手动录入' : '' }}</a-descriptions-item>
<a-descriptions-item label="课程类型">{{ formParam.type == 1 ? '项目开课' : formParam.type == 2 ? '路径开课' : formParam.type == 3
? '面授开课' : '' }}</a-descriptions-item>
<a-descriptions-item label="课程名称">{{ formParam.coursename }}</a-descriptions-item>
<a-descriptions-item label="课程名称">{{ formParam.courseName }}</a-descriptions-item>
<a-descriptions-item label="开课状态">{{ formParam.courseStatus == 1? '未开课' : formParam.courseStatus == 0
? '已开课' : '' }}</a-descriptions-item>
<a-descriptions-item label="授课时长 "><span style="margin-left: 5px ;" v-if="formParam.teaching != null">{{
@@ -448,11 +448,12 @@ export default {
levelVoList: []
},
formParam: {
courseStatus: 1,
courseStatus: '1',
createFrom: 1,
teaching: null,
name:null,
teacherName: null
teacherName: null,
teachingDate:null
},
startTime:null,
searchParam:
@@ -649,16 +650,15 @@ export default {
title: '课程类型 ',
dataIndex: 'type',
key: 'type',
elipsis: true, align: "center",
elipsis: true, align: "center",
width: 120,
customRender: (value) => {
return (
<div>
{value.record.type == "1" || value.record.type == "2" || value.record.type == "3"
{value.record.type == "1" || value.record.type == "0"
? {
"1": "项目开课",
"2": "路径开课",
"3": "面授开课",
"1": "在线课",
"0": "面授课",
}[value.record.type + ""] || ""
: "-"}
</div>
@@ -760,7 +760,7 @@ export default {
else if (state.moreid == 2) {
state.moreid = 1
state.searchParam.createFrom = null
state.searchParam.courseStatus = '0'
state.searchParam.courseStatus =null
state.searchParam.orgId = null
state.searchParam.tSystemId = null
state.searchParam.id = null
@@ -831,8 +831,8 @@ export default {
// // 翻页
const changePagination = (page, pageSize) => {
state.searchParam.pageNo = page;
state.currentPage1 = page;
state.pageSize1 = pageSize;
// state.pageNo = page;
state.searchParam.pageSize = pageSize;
getTableDate();
};
// 新增授课
@@ -936,7 +936,7 @@ export default {
const cancel = () => {
state.formParam = {
recordType: 1,
courseStatus:1,
courseStatus:'1',
teacher: null,
orgName: null,
tsystemName: null,
@@ -1024,6 +1024,7 @@ export default {
state.formParam.tlevelId = res.data.data.tlevelId
state.formParam.name = res.data.data.teacherName+'/'+res.data.data.userNo
state.formParam.orgLists = res.data.data.expertiseNames?.split(',').map(item=>({ name: item }))
state.teachingDate=dayjs(res.data.data.teachingDate, 'YYYY-MM-DD'),
console.log( state.formParam);
})
.catch((err) => {
@@ -1077,7 +1078,7 @@ export default {
width: 120,
customRender: (value) => {
return (
<div>
<div >
{value.record.status == "A10" || value.record.status == "A20" || value.record.status == "A30" || value.record.status == "E10" || value.record.status == "S20"
? {
"A10": "待审核",
@@ -1091,14 +1092,14 @@ export default {
)
}
},
{
title: '操作 ',
dataIndex: 'operation',
key: 'operation',
elipsis: true, align: "right",
width: 400,
scopedSlots: { customRender: "action" },
},
// {
// title: '操作 ',
// dataIndex: 'operation',
// key: 'operation',
// elipsis: true, align: "right",
// width: 400,
// scopedSlots: { customRender: "action" },
// },
])
const gettableDatas = (record) => {
getTeacherFeeDetail({ id: record.id })

View File

@@ -101,8 +101,8 @@
<div style="float: right;">
<a-pagination
v-if="tableDataTotal > 10"
:showSizeChanger="false"
:showQuickJumper="true"
:showSizeChanger="true "
:showQuickJumper="false"
:hideOnSinglePage="true"
:pageSize="searchParam.pageSize"
:current="searchParam.pageNo"
@@ -489,9 +489,9 @@
// // 翻页
const changePagination = (page,pageSize) => {
state.searchParam.pageNo = page;
state.currentPage1 = page;
state.pageSize1 = pageSize;
getTableDate();
// state.pageNo = page;
state.searchParam.pageSize = pageSize;
getTableDate();
};
// 新增讲师
const addTeacher = () => {
@@ -628,9 +628,7 @@
//导出功能
const handleExport = ()=>{
window.open (
`${process.env.VUE_APP_BASE_API}/teacher/fee/exportTeacherFee?pageNo=${
state.currentPage1
}&pageSize=${state.pageSize1}&teacherNo=${
`${process.env.VUE_APP_BASE_API}/teacher/fee/exportTeacherFee?pageNo=${state.searchParam.pageNo}&pageSize=${state.searchParam.pageSize}&teacherNo=${
state.searchParam.teacherNo ? state.searchParam.teacherNo : ""
}&tsystemName=${ state.searchParam.tsystemName ? state.searchParam.tsystemName : ""}&levelId=${
state.searchParam.levelId ? state.searchParam.levelId : ""

View File

@@ -839,9 +839,9 @@ console.log( "讲师体系id" +val);
// // 翻页
const changePagination = (page,pageSize) => {
state.searchParam.pageNo = page;
state.currentPage1 = page;
state.pageSize1 = pageSize;
getTableDate();
// state.pageNo = page;
state.searchParam.pageSize = pageSize;
getTableDate();
};
// 添加讲师费
const addTeacher = () => {

View File

@@ -46,18 +46,10 @@
</div>
<!-- 翻页 -->
<div class="tableBox ">
<div style="float: right;">
<a-pagination
v-if="tableDataTotal > 10"
:showSizeChanger="false"
:showQuickJumper="true"
:hideOnSinglePage="true"
:pageSize="searchParam.pageSize"
:current="searchParam.pageNo"
:total="tableDataTotal"
class="pagination"
@change="changePagination"
/>
<div class="pa">
<a-pagination v-if="tableDataTotal > 10" :showSizeChanger="true" :showQuickJumper="false"
:hideOnSinglePage="true" :pageSize="searchParam.pageSize" :current="searchParam.pageNo" :total="tableDataTotal"
class="pagination" @change="changePagination" />
</div>
</div>
<!-- 二级页面弹窗组件 -->
@@ -181,7 +173,7 @@ import { message } from "ant-design-vue";
import dayjs from "dayjs";
import { useRouter } from "vue-router";
import { getOrganization } from "../../api/Teaching";
import { queryTeacherFeeMonthly, getTeacherFeeDetailListByTeacherNo, getTeacherFeeListByTeacherNo} from "../../api/lecturerFeeStatistics"
import { queryTeacherFeeMonthly, getTeacherFeeDetailListByTeacherNo, getTeacherFeeListByTeacherNo,TeacherFeeTotalList,createMonthSummary} from "../../api/lecturerFeeStatistics"
;
import {expenseSummaryList,getTrainOrg,CreateMonthSummary} from "../../api/lecturerFeeManagement";
import dialog from '@/utils/dialog'
@@ -259,8 +251,8 @@ export default {
},
{
title: '汇总日期 ',
dataIndex: 'summaryTime',
key: 'summaryTime',
dataIndex: 'summaryDate',
key: 'summaryDate',
elipsis: true,
align: "center",
width: 200,
@@ -341,6 +333,8 @@ export default {
// // 翻页
const changePagination = (page, pageSize) => {
state.searchParam.pageNo = page;
// state.pageNo = page;
state.searchParam.pageSize = pageSize;
getTableDate();
};
//二级列表翻页
@@ -1128,5 +1122,23 @@ export default {
border: 0px !important;
border-radius: 50%!important;
}
.tableBox {
padding-bottom: 20px;
margin: 20px 38px 30px;
::v-deep .ant-select-dropdown{
display: inline-block;
}
::v-deep .ant-select-selection-item{
margin-left: 3px;
}
::v-deep .ant-pagination-options-size-changer.ant-select{
width: 84px;
}
.pa {
width: 100%;
display: flex;
justify-content: right;
}
}
</style>

View File

@@ -301,7 +301,9 @@ export default {
};
// // 翻页
const changePagination = (page, pageSize) => {
state.searchParam.pageNo = page;
state.searchParam.pageNo = page;
// state.pageNo = page;
state.searchParam.pageSize = pageSize;
getTableDate();
};
//删除弹窗

View File

@@ -254,6 +254,8 @@ export default{
//授课翻页
const teacherchangePagination = (page) => {
state.teacherrecords.pageNo = page;
// state.pageNo = page;
state.teacherrecords.pageSize = pageSize;
getteacherrecordstableData();
};
return{

View File

@@ -309,6 +309,8 @@ export default{
//授课翻页
const teacherchangePagination = (page) => {
state.teacherrecords.pageNo = page;
// state.pageNo = page;
state.teacherrecords.pageSize = pageSize;
getteacherrecordstableData();
};
//晋级记录翻页

View File

@@ -159,6 +159,8 @@ export default{
//翻页
const teacherchangePagination = (page) => {
state.teacherrecords.pageNo = page;
// state.pageNo = page;
state.teacherrecords.pageSize = pageSize;
getteacherrecordstableData();
};
return{

View File

@@ -15,21 +15,30 @@
<div class="filter" style="min-width: 1380px;">
<a-form layout="inline" >
<a-form-item class="select">
<div style="width: 276px; height: 40px; border-radius: 8px" >
<ProjectManager v-model:value="searchParam.managerId"
v-model:name="searchParam.manager"
placeholder="请输入工号/讲师姓名进行检索"
@onChange="managerChange" mode="multiple"></ProjectManager>
</div>
<a-input v-model:value="searchParam.name" style="width: 276px; height: 40px; border-radius: 8px"
placeholder="请输入工号/讲师姓名进行检索" allowClear showSearch>
</a-input>
</a-form-item>
<a-form-item class="select">
<a-select style="width: 230px" v-model:value="searchParam.payrollPlaceId" placeholder="发薪地"
:options="PlaceOfPayList" allowClear showSearch/>
</a-form-item>
<a-form-item class="select " >
<a-select style="width: 276px" v-model:value="searchParam.trainorgId" placeholder="培训发生组织"
:options="trainOrglist" allowClear showSearch>
</a-select>
<a-tree-select style="width: 230px"
:fieldNames="{
children: 'children',
label: 'name',
value: 'code',
}"
allow-clear
:getPopupContainer="triggerNode => triggerNode.parentNode || document.body"
v-model:value="searchParam.courseTypeId"
show-search
:dropdown-style="{ maxHeight: '400px', overflow: 'auto' }"
placeholder="请选择内容分类"
tree-default-expand-all
:tree-data="sysTypeOptions">
</a-tree-select>
</a-form-item>
<div style="display: flex; margin-bottom: 20px">
<a-button @click="searchSubmit()" type="primary" class="resetbtn">查询 </a-button>
@@ -71,8 +80,8 @@
<div style="float: right;">
<a-pagination
v-if="tableDataTotal > 10"
:showSizeChanger="false"
:showQuickJumper="true"
:showSizeChanger="true"
:showQuickJumper="false"
:hideOnSinglePage="true"
:pageSize="searchParam.pageSize"
:current="searchParam.pageNo"
@@ -124,18 +133,18 @@
</div>
</template>
<script lang="jsx">
import { reactive, toRefs, ref, watch } from "vue";
import {useRouter, useRoute} from "vue-router";
import { reactive, toRefs, ref, watch,computed } from "vue";
import { useStore } from "vuex";
import { useRouter,useRoute } from "vue-router";
import {
UploadOutlined,
} from '@ant-design/icons-vue';
import { getPayRollPlace } from "../../api/Lecturer";
import { getOrganization } from "../../api/Teaching";
import ProjectManager from "@/components/project/ProjectManagerNew";
import {getTrainOrg} from "../../api/lecturerFeeManagement";
import { queryTeacherFeeTotalList, queryTeacherFeeMonthly, getTeacherFeeDetailListByTeacherNo, getTeacherFeeListByTeacherNo ,getPreviousTeacherfee} from "../../api/lecturerFeeStatistics";
import {queryTeacherFeeMonthly} from "../../api/lecturerFeeStatistics";
import {CostDetails} from "../lecturer/CostDetails.vue"
import * as api from '@/api/Lecturer'
// import * as api from '@/api/Lecturer'
export default {
name: "MonthlyStatistics",
components: {
@@ -165,7 +174,7 @@ export default {
searchParam: {
pageNo: "1",
pageSize: "10",
teacherNo: null,
name: null,
payrollPlaceId: null,
departId: null,
summaryDate:null,
@@ -173,7 +182,7 @@ export default {
name: '',
trainOrgId: '',
},
teacherNo:null,
name:null,
drawer: {
name: null,
drawersearchdate: null,
@@ -183,6 +192,9 @@ export default {
})
watch(
)
//获取内容分类
const store = useStore();
const sysTypeOptions = computed(() => store.state.content_type);
const columns = ref([
{
title: '讲师姓名 ',
@@ -266,25 +278,7 @@ export default {
const searchSubmit = () => {
getTableDate();
};
const trainOrglist=ref([])
//获取培训发生组织
const trainOrglista =() => {
getTrainOrg().then((res)=>{
if (res.data.code === 200) {
let arr = res.data.data;
let array = [];
arr.map((value) => {
let obj = {
value: value.trainorgId,
label: value.trainOrg,
};
array.push(obj);
});
trainOrglist.value = array;
}
})
}
trainOrglista()
const PlaceOfPayList = ref([
])
//获取讲师发薪地列表
@@ -309,7 +303,7 @@ export default {
// List接口数据
const getTableDate = (obj) => {
state.tableLoading = true
api.expenseSummaryById(state.searchParam)
queryTeacherFeeMonthly(state.searchParam)
.then((res) => {
console.log(res,'resssss')
tableData.value = res.data.data.records
@@ -348,23 +342,23 @@ export default {
}
const changePagination = (page, pageSize) => {
state.searchParam.pageNo = page;
// state.pageNo = page;
state.searchParam.pageSize = pageSize;
getTableDate();
};
// 导出
const handleFeeMonthly = () => {
window.open(
`${process.env.VUE_APP_BASE_API}/teacher/fee/exportTeacherMonthlyFee?pageNo=${state.searchParam.currentPage
}&pageSize=${state.searchParam.pageSize}
&userNo=${state.searchParam.payrollPlaceId ? state.searchParam.payrollPlaceId : ""}
&teacherNo=${state.searchParam.teacherNo ? state.searchParam.teacherNo : ""}
&departId=${state.searchParam.trainorgId ? state.searchParam.trainorgId : ""}`)
`${process.env.VUE_APP_BASE_API}/admin/export/exportTeacherSummary?pageNo=${state.searchParam.pageNo}&pageSize=${state.searchParam.pageSize}
&name=${state.searchParam.name ? state.searchParam.name : ""}
&payrollPlaceId=${state.searchParam.payrollPlaceId ? state.searchParam.payrollPlaceId : ""}`)
}
//重置
const searchReset = () => {
state.searchParam = {
pageNo: "1",
pageSize: "10",
teacherNo: null,
name : null,
payrollPlaceId: null,
departId: null,
summaryDate:null,
@@ -499,13 +493,11 @@ export default {
state.opendrawer = false
};
return {
...toRefs(state),
trainOrglist,
...toRefs(state),
tableDatas,
column,
cancelTeachingDialog,
searchReset,
trainOrglista,
handleFeeMonthly,
handleLook,
changePagination,
@@ -517,7 +509,8 @@ export default {
PlaceOfPayLista,
getOrganizationList,
getOrganizationLista,
searchResetdrawer
searchResetdrawer,
sysTypeOptions,
}
},
};
@@ -900,5 +893,23 @@ export default {
font-size: 14px;
}
}
tableBox {
padding-bottom: 20px;
margin: 20px 38px 30px;
::v-deep .ant-select-dropdown{
display: inline-block;
}
::v-deep .ant-select-selection-item{
margin-left: 3px;
}
::v-deep .ant-pagination-options-size-changer.ant-select{
width: 84px;
}
.pa {
width: 100%;
display: flex;
justify-content: right;
}
}
</style>

View File

@@ -400,7 +400,9 @@ const getTableDate = (obj) => {
};
// // 翻页
const changePagination = (page, pageSize) => {
state.searchParam.pageNo = page;
state.searchParam.pageNo = page;
// state.pageNo = page;
state.searchParam.pageSize = pageSize;
getTableDate();
};
//删除弹窗