讲师管理页面调整

This commit is contained in:
wangxuemei
2024-08-05 17:38:10 +08:00
parent b0f6f56759
commit 36200b08ef
11 changed files with 330 additions and 94 deletions

View File

@@ -1,6 +1,7 @@
import http from "./config"; import http from "./config";
// 列表查看讲师费月度统计 // 列表查看讲师费月度统计
export const queryTeacherFeeTotalList = (params) => http.get('teacher/fee/queryTeacherFeeTotalList',{ params }) // export const queryTeacherFeeTotalList = (params) => http.get('teacher/fee/queryTeacherFeeTotalList',{ params })
export const queryTeacherFeeTotalList = (obj) => http.post ('teacher/fee/queryTeacherFeeTotalList',obj)
// 列表查看讲师费月度统计详情 // 列表查看讲师费月度统计详情
export const queryTeacherFeeMonthly = (obj) => http.post('teacher/fee/queryTeacherFeeMonthly', obj) export const queryTeacherFeeMonthly = (obj) => http.post('teacher/fee/queryTeacherFeeMonthly', obj)
////讲师费月度统计--明细 ////讲师费月度统计--明细

View File

@@ -278,6 +278,7 @@ import {
} from '@ant-design/icons-vue'; } from '@ant-design/icons-vue';
import { message } from "ant-design-vue"; import { message } from "ant-design-vue";
import ProjectManager from "@/components/project/ProjectManagerNew"; import ProjectManager from "@/components/project/ProjectManagerNew";
import dayjs from "dayjs";
import { updateInTeacher, getTeacherExpertise } from "../../api/Lecturer"; import { updateInTeacher, getTeacherExpertise } from "../../api/Lecturer";
import { getOuterTeacherCourseList, getAddress, updateInTeacherCourse, deleteInTeacherCourse, insertOutTeaherCourse,getOuterTeacherCourseDetail } from "../../api/Teaching"; import { getOuterTeacherCourseList, getAddress, updateInTeacherCourse, deleteInTeacherCourse, insertOutTeaherCourse,getOuterTeacherCourseDetail } from "../../api/Teaching";
// import {getProjSt} from "../../api/indexProjStu"; // import {getProjSt} from "../../api/indexProjStu";
@@ -561,6 +562,8 @@ export default {
const getTableDate = (obj) => { const getTableDate = (obj) => {
state.tableLoading = true state.tableLoading = true
let objA = { ...state.searchParam }; let objA = { ...state.searchParam };
objA.startDate = state.searchParam.startDate !== null ? dayjs(new Date(state.searchParam.startDate).getTime()).format("YYYY-MM-DD") : "",
objA.endDate = state.searchParam.endDate !== null ? dayjs(new Date(state.searchParam.endDate).getTime()).format("YYYY-MM-DD") : "",
getOuterTeacherCourseList(objA) getOuterTeacherCourseList(objA)
.then((res) => { .then((res) => {
tableData.value = res.data.data.records tableData.value = res.data.data.records
@@ -587,6 +590,7 @@ export default {
const handleModify = (record) => { const handleModify = (record) => {
state.teacherdialog = true; state.teacherdialog = true;
state.teacherdialogtitle = '修改授课记录' state.teacherdialogtitle = '修改授课记录'
state.lookTeacherId = record.teacherId
TeacherSystem(record) TeacherSystem(record)
} }
//保存 //保存

View File

@@ -179,13 +179,12 @@
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :span="12"> <a-col :span="12">
<a-form-item label="讲师组织" name="userNo"> <a-form-item label="讲师组织" name="departId">
<a-popover title="讲师组织"> <a-popover title="讲师组织">
<template #content> <template #content>
<p>自动带出讲师的组织,展示主要部分,鼠标浮上去展示所有</p> {{ formParam.departId }}
{{ formParam.userNo }}
</template> </template>
<a-input disabled v-model:value="formParam.userNo" class="draitem" <a-input disabled v-model:value="formParam.departId" class="draitem"
placeholder="自动带出讲师的组织,展示主要部分,鼠标浮上去展示所有" allowClear showSearch> placeholder="自动带出讲师的组织,展示主要部分,鼠标浮上去展示所有" allowClear showSearch>
</a-input> </a-input>
</a-popover> </a-popover>
@@ -218,7 +217,7 @@
<a-input v-model:value="formParam.defaultTeachingTime" style="width:80%; height: 40px; border-radius: 8px; " placeholder="0" <a-input v-model:value="formParam.defaultTeachingTime" style="width:80%; height: 40px; border-radius: 8px; " placeholder="0"
allowClear showSearch suffix="分钟"> allowClear showSearch suffix="分钟">
</a-input> </a-input>
<span style="margin-left: 5px ;">{{ (formParam.defaultTeachingTime /60 ).toFixed(2)}}小时</span> <span style="margin-left: 5px ;" v-if="formParam.defaultTeachingTime!= null">{{ (formParam.defaultTeachingTime /60 ).toFixed(2)}}小时</span>
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :span="12"> <a-col :span="12">
@@ -407,7 +406,8 @@ export default {
formParam: { formParam: {
userNo:null, userNo:null,
certStatus: 0,//认证状态 certStatus: 0,//认证状态
defaultTeachingTime: '0' defaultTeachingTime: '0',
}, },
searchParam: { searchParam: {
name:null, name:null,
@@ -475,7 +475,7 @@ export default {
let array = []; let array = [];
arr.map((value) => { arr.map((value) => {
let obj = { let obj = {
value: value.systemid, value: value.kid,
label: value.systemName, label: value.systemName,
}; };
array.push(obj); array.push(obj);
@@ -649,7 +649,7 @@ console.log( "讲师体系id" +val);
} }
const columns = ref([ const columns = ref([
{ {
title: '姓名 ', title: '讲师姓名 ',
dataIndex: 'name', dataIndex: 'name',
key: 'name', key: 'name',
elipsis: true, elipsis: true,
@@ -657,7 +657,7 @@ console.log( "讲师体系id" +val);
width: 100, width: 100,
}, },
{ {
title: '工号 ', title: '讲师工号 ',
dataIndex: 'userNo', dataIndex: 'userNo',
key: 'userNo', key: 'userNo',
elipsis: true, elipsis: true,
@@ -787,6 +787,7 @@ console.log( "讲师体系id" +val);
state.searchParam = { state.searchParam = {
name:null, name:null,
userNo: null, userNo: null,
departId:null,
systemid: null, systemid: null,
tlevelId: null, tlevelId: null,
waitStatus: null, waitStatus: null,

View File

@@ -51,24 +51,38 @@
</a-form-item> </a-form-item>
<a-form-item class="select" v-if="moreid == 2"> <a-form-item class="select" v-if="moreid == 2">
<a-select style="width: 230px" v-model:value="searchParam.status" placeholder="开课状态" <a-select style="width: 230px" v-model:value="searchParam.status" placeholder="开课状态"
:options="AuthenticationStatusList" allowClear> :options="AuthenticationStatusList" allowClear showSearch>
</a-select> </a-select>
</a-form-item> </a-form-item>
<a-form-item class="select" v-if="moreid == 2"> <a-form-item class="select" v-if="moreid == 2">
<a-select style="width: 230px" placeholder="请选择所属组织" v-model:value="searchParam.trainorgId" <a-select style="width: 230px" placeholder="请选择所属组织" v-model:value="searchParam.trainorgId"
:options="getOrganizationList" allowClear> :options="getOrganizationList" allowClear showSearch>
</a-select> </a-select>
</a-form-item> </a-form-item>
<a-form-item class="select" v-if="moreid == 2"> <a-form-item class="select" v-if="moreid == 2">
<a-select style="width: 230px" placeholder="请选择讲师体系" v-model:value="searchParam.systemId" <a-select style="width: 230px" placeholder="请选择讲师体系" v-model:value="searchParam.systemId"
:options="LecturerSystemList" allowClear> :options="LecturerSystemList" allowClear showSearch>
</a-select> </a-select>
</a-form-item> </a-form-item>
<a-form-item class="select" v-if="moreid == 2"> <a-form-item class="select" v-if="moreid == 2">
<a-select style="width: 230px" v-model:value="searchParam.id" placeholder="内容分类" <a-select style="width: 230px" v-model:value="searchParam.id" placeholder="内容分类"
:options="getTeacherExpertiseList" allowClear> :options="getTeacherExpertiseList" allowClear showSearch>
</a-select> </a-select>
</a-form-item> </a-form-item>
<div style="width: 100%;"></div>
<a-form-item class="select" v-if="moreid == 2">
<a-select style="width: 230px ;margin-bottom:20px" v-model:value="searchParam.id" placeholder="请选择授课满意度"
:options="getTeacherExpertiseList" allowClear showSearch >
</a-select>
</a-form-item>
<a-form-item class="select" v-if="moreid == 2">
<a-select style="width: 230px" v-model:value="searchParam.id" placeholder="授课人数"
:options="getTeacherExpertiseList" allowClear showSearch>
</a-select>
<!-- <a-input v-model:value="searchParam.name" style="width: 260px; height: 40px; border-radius: 8px"
placeholder="授课人数" allowClear showSearch>
</a-input> -->
</a-form-item>
</a-form> </a-form>
<div style="width: 100%;"></div> <div style="width: 100%;"></div>
<div style="display: flex; margin-bottom: 20px"> <div style="display: flex; margin-bottom: 20px">
@@ -201,11 +215,11 @@
<!-- 授课时长defaultTeachingTime 评分 score--> <!-- 授课时长defaultTeachingTime 评分 score-->
<a-row :gutter="16"> <a-row :gutter="16">
<a-col :span="12"> <a-col :span="12">
<a-form-item label="初始授课时长" name="defaultTeachingTime"> <a-form-item label="授课时长" name="duration">
<a-input v-model:value="formParam.defaultTeachingTime" style="width:80%; height: 40px; border-radius: 8px ; " placeholder="0" <a-input v-model:value="formParam.duration" style="width:80%; height: 40px; border-radius: 8px ; " placeholder="0"
allowClear showSearch suffix="分钟"> allowClear showSearch suffix="分钟">
</a-input> </a-input>
<span style="margin-left: 5px ;">{{ (formParam.defaultTeachingTime /60 ).toFixed(2)}}小时</span> <span style="margin-left: 5px ;" v-if="formParam.duration!= null">{{ (formParam.duration /60 ).toFixed(2)}}小时</span>
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :span="12"> <a-col :span="12">
@@ -268,7 +282,7 @@
<a-descriptions-item label="课程类型">{{formParam.type==1?'项目开课' :formParam.type==2 ?'路径开课':formParam.type==3 ?'面授开课':''}}</a-descriptions-item> <a-descriptions-item label="课程类型">{{formParam.type==1?'项目开课' :formParam.type==2 ?'路径开课':formParam.type==3 ?'面授开课':''}}</a-descriptions-item>
<a-descriptions-item label="课程名称">{{formParam.name}}</a-descriptions-item> <a-descriptions-item label="课程名称">{{formParam.name}}</a-descriptions-item>
<a-descriptions-item label="开课状态">{{formParam.status==0?'未开课' :formParam.status==1 ?'已开课':''}}</a-descriptions-item> <a-descriptions-item label="开课状态">{{formParam.status==0?'未开课' :formParam.status==1 ?'已开课':''}}</a-descriptions-item>
<a-descriptions-item label="授课时长 ">{{formParam.duration}}</a-descriptions-item> <a-descriptions-item label="授课时长 "><span style="margin-left: 5px ;" v-if="formParam.duration!= null">{{ (formParam.duration /60 ).toFixed(2)}}小时</span> </a-descriptions-item>
<a-descriptions-item label="授课/课程日期 ">{{formParam.beginTime}}</a-descriptions-item> <a-descriptions-item label="授课/课程日期 ">{{formParam.beginTime}}</a-descriptions-item>
<a-descriptions-item label="参训人数 ">{{formParam.studys}}</a-descriptions-item> <a-descriptions-item label="参训人数 ">{{formParam.studys}}</a-descriptions-item>
<a-descriptions-item label="评分 ">{{formParam.score}}</a-descriptions-item> <a-descriptions-item label="评分 ">{{formParam.score}}</a-descriptions-item>
@@ -370,6 +384,7 @@ export default {
setup() { setup() {
const router = useRouter(); const router = useRouter();
const state = reactive({ const state = reactive({
moreid:1,
showWork: false, showWork: false,
currentPage1: 1, currentPage1: 1,
pageSize1: 10, pageSize1: 10,
@@ -391,7 +406,7 @@ export default {
formParam: { formParam: {
status: 1, status: 1,
entryType:1, entryType:1,
defaultTeachingTime:0 duration:0
}, },
searchParam: { searchParam: {
userNo: null,//工号姓名 userNo: null,//工号姓名
@@ -798,7 +813,7 @@ export default {
systemId:null, systemId:null,
levelId: null, levelId: null,
name:null, name:null,
defaultTeachingTime:0, duration:0,
endDate:null, endDate:null,
startDate:null, startDate:null,
studys: null, studys: null,
@@ -861,7 +876,7 @@ export default {
// ref< moment.Moment >(moment(record.beginTime,'YYYY-MM-DD')), // ref< moment.Moment >(moment(record.beginTime,'YYYY-MM-DD')),
// record.beginTime, // record.beginTime,
duration: record.duration, duration: record.duration,
defaultTeachingTime: record.defaultTeachingTime, duration: record.duration,
score: record.score, score: record.score,
studys: record.studys, studys: record.studys,
remark: record.remark, remark: record.remark,
@@ -921,13 +936,11 @@ export default {
}, },
]) ])
const gettableDatas =(record)=>{ const gettableDatas =(record)=>{
state.tableLoadings = true
getCharges({kid:record.kid}) getCharges({kid:record.kid})
.then((res) => { .then((res) => {
console.log(res) console.log(res)
tableDatas.value = res.data.data.records tableDatas.value = res.data.data.records
state.tableDataTotal = Number(res.data.data.total); state.tableDataTotal = Number(res.data.data.total);
state.tableLoadings = false
}) })
} }
const tableDatas = ref([]) const tableDatas = ref([])
@@ -939,7 +952,7 @@ export default {
id: [{ required: true, message: '内容分类不能为空' }], id: [{ required: true, message: '内容分类不能为空' }],
name: [{ required: true, message: '课程名称不能为空' }], name: [{ required: true, message: '课程名称不能为空' }],
beginTime: [{ required: true, message: '授课/课程日期不能为空' }], beginTime: [{ required: true, message: '授课/课程日期不能为空' }],
defaultTeachingTime: [{ required: true, message: '授课时长不能为空' }], duration: [{ required: true, message: '授课时长不能为空' }],
certStatus: [{ required: true, message: '认证状态不能为空' }], certStatus: [{ required: true, message: '认证状态不能为空' }],
} }

View File

@@ -72,9 +72,11 @@
</a-form> </a-form>
<div style="width: 100%;"></div> <div style="width: 100%;"></div>
<div style="display: flex; margin-bottom: 20px"> <div style="display: flex; margin-bottom: 20px">
<a-button @click="handleExport()" class="resetbtn"> <a-button @click="handleExport()" class="resetbtn">
<UploadOutlined /> 导出 <UploadOutlined /> 导出
</a-button> </a-button>
<div v-if="moreid == 2" style="line-height: 40px;" >当前页面汇总金额:<span style="line-height: 40px; font-size: 26px; color: rgb(207, 34, 34) ;font-weight: 600;">1,230,490</span>元 当前总汇总金额:<span style="line-height: 40px; font-size: 26px; color: rgb(207, 34, 34) ;font-weight: 600;">9,230,490</span></div>
</div> </div>
<!-- 表格 --> <!-- 表格 -->
<div style="padding: 10px 0"> <div style="padding: 10px 0">
@@ -157,8 +159,9 @@
zIndex: 1, zIndex: 1,
}"> }">
<a-button class="drabtn" @click="cancelTeachingDialog">取消</a-button> <a-button class="drabtn" @click="cancelTeachingDialog">取消</a-button>
<a-button class="drabtn" type="primary" @click="cancelTeachingDialog" :loading="buttonLoading">返回 <a-button class="drabtn" type="primary" @click="cancelTeachingDialog" :loading="buttonLoading">通过
</a-button> </a-button>
<a-button class="drabtn" @click="cancelTeachingDialog" type="primary" danger>拒绝</a-button>
</div> </div>
</a-drawer> </a-drawer>
<!-- 修改状态功能弹窗 --> <!-- 修改状态功能弹窗 -->

View File

@@ -86,7 +86,9 @@
<a-button @click="handleExport()" class="resetbtn"> <a-button @click="handleExport()" class="resetbtn">
<UploadOutlined /> 导出 <UploadOutlined /> 导出
</a-button> </a-button>
</div>
<div v-if="moreid == 2" style="line-height: 40px;" >当前页面汇总金额:<span style="line-height: 40px; font-size: 26px; color: rgb(207, 34, 34) ;font-weight: 600;">1,230,490</span>元 当前总汇总金额:<span style="line-height: 40px; font-size: 26px; color: rgb(207, 34, 34) ;font-weight: 600;">9,230,490</span></div>
</div>
<!-- 表格 --> <!-- 表格 -->
<div style="padding: 10px 0"> <div style="padding: 10px 0">
<a-table :header-cell-style="{ 'text-align': 'center' }" style="border: 1px solid #f2f6fe" :columns="columns" <a-table :header-cell-style="{ 'text-align': 'center' }" style="border: 1px solid #f2f6fe" :columns="columns"
@@ -139,8 +141,8 @@
<a-row :gutter="16"> <a-row :gutter="16">
<a-col :span="12"> <a-col :span="12">
<a-form-item label="讲师名称" name="teacher"> <a-form-item label="讲师名称" name="teacher">
<ProjectManager v-model:value="searchParam.teacherNo" <ProjectManager v-model:value="formParam.teacherNo"
v-model:name="searchParam.teacherName" v-model:name="formParam.teacherName"
placeholder="请输入工号/讲师姓名进行检索" placeholder="请输入工号/讲师姓名进行检索"
@onChange="managerChange" mode="multiple"></ProjectManager> @onChange="managerChange" mode="multiple"></ProjectManager>
@@ -861,16 +863,16 @@ console.log( "讲师体系id" +val);
state.kid= record.kid state.kid= record.kid
}; };
// //确认删除 // //确认删除
// const closeDeleteTeacher=()=>{ const closeDeleteTeacher=()=>{
// //调用删除接口 //调用删除接口
// deleteInTeacher(state.delTeacherId).then((res)=>{ deleteInTeacher(state.delTeacherId).then((res)=>{
// if(res.data.code == 200 ){ if(res.data.code == 200 ){
// // message.success("删除成功"); // message.success("删除成功");
// state.deleteInTeacherdialog = false state.deleteInTeacherdialog = false
// getTableDate(); getTableDate();
// } }
// }) })
// } }
//提交撤回状态 //提交撤回状态
const closehandleOperate= ()=>{ const closehandleOperate= ()=>{
//调用接口 //调用接口
@@ -1041,6 +1043,7 @@ console.log( "讲师体系id" +val);
return { return {
...toRefs(state), ...toRefs(state),
rules, rules,
closeDeleteTeacher,
cancelTeachingDialog, cancelTeachingDialog,
managerChange, managerChange,
courseTypeList, courseTypeList,

View File

@@ -9,9 +9,12 @@
:options="PlaceOfPayList"> :options="PlaceOfPayList">
</a-select> </a-select>
</a-form-item> </a-form-item>
<a-form-item class="select " > <!-- <a-form-item class="select " >
<a-range-picker style="width: 260px; height: 40px; border-radius: 8px" v-model:value="searchdate" separator="" <a-range-picker style="width: 260px; height: 40px; border-radius: 8px" v-model:value="searchdate" separator=""
:placeholder="['重新汇总上月周期']" @change="searchTimeChange" /> :placeholder="['重新汇总上月周期']" @change="searchTimeChange" />
</a-form-item> -->
<a-form-item class="select">
<a-month-picker placeholder="重新汇总上月周期" @change="onChange" style="width: 260px; height: 40px; border-radius: 8px" v-model:value="searchdate" />
</a-form-item> </a-form-item>
<div style="display: flex; margin-bottom: 20px"> <div style="display: flex; margin-bottom: 20px">
<a-button @click="searchSubmit()" type="primary" class="resetbtn">查询 </a-button> <a-button @click="searchSubmit()" type="primary" class="resetbtn">查询 </a-button>
@@ -25,6 +28,7 @@
<a-button @click="searchResetPrevious()" type="primary" class="langbtn" style="width: 150px; height: 40px; border-radius: 8px" > <a-button @click="searchResetPrevious()" type="primary" class="langbtn" style="width: 150px; height: 40px; border-radius: 8px" >
<FolderAddOutlined /> 重新汇总上月讲师费 <FolderAddOutlined /> 重新汇总上月讲师费
</a-button> </a-button>
<div style="line-height: 40px;" >当前页面汇总金额<span style="line-height: 40px; font-size: 26px; color: rgb(207, 34, 34) ;font-weight: 600;">1,230,490</span> 当前总汇总金额<span style="line-height: 40px; font-size: 26px; color: rgb(207, 34, 34) ;font-weight: 600;">9,230,490</span></div>
</div> </div>
<!-- 表格 --> <!-- 表格 -->
<div style="padding: 10px 0"> <div style="padding: 10px 0">
@@ -326,6 +330,17 @@ export default {
state.tableLoading = false state.tableLoading = false
}) })
} }
//重置
const searchReset = () => {
state.searchParam = {
pageNo: "1",
pageSize: "10",
startDate: null,
endDate: null,
payrollPlaceId: null,
};
getTableDate();
};
// // 翻页 // // 翻页
const changePagination = (page, pageSize) => { const changePagination = (page, pageSize) => {
state.searchParam.pageNo = page; state.searchParam.pageNo = page;
@@ -744,6 +759,7 @@ export default {
return { return {
...toRefs(state), ...toRefs(state),
router, router,
searchReset,
searchTimeChange, searchTimeChange,
handleFeeMonthly, handleFeeMonthly,
TeacherSystem, TeacherSystem,

View File

@@ -124,7 +124,7 @@
</div> </div>
</a-col> </a-col>
</a-row> </a-row>
<div v-for="(item,index) in formParam.levelList " :key="index"> <div v-for="(item,index) in formParam.levelList " :key="index" >
<a-row :gutter="16"> <a-row :gutter="16">
<a-col :span="4"> <a-col :span="4">
<a-input v-model:value="item.levelName" class="draitem" placeholder="" allowClear showSearch> <a-input v-model:value="item.levelName" class="draitem" placeholder="" allowClear showSearch>
@@ -187,7 +187,7 @@ import {
import dialog from "@/utils/dialog"; import dialog from "@/utils/dialog";
import { message } from "ant-design-vue"; import { message } from "ant-design-vue";
import ProjectManager from "@/components/project/ProjectManagerNew"; import ProjectManager from "@/components/project/ProjectManagerNew";
import { systemList,addLecturerSystem ,deleteLecturerSystem,updateSystem} from "../../api/organization"; import { systemList,addLecturerSystem ,deleteLecturerSystem,querySystemLevelByKid,updateSystem} from "../../api/organization";
export default { export default {
name: "LecturerSystem", name: "LecturerSystem",
components: { components: {
@@ -347,7 +347,14 @@ export default {
}) })
.catch((err) => { .catch((err) => {
}); });
getteacherrecordstableData()
} }
const getteacherrecordstableData = () => {
// api接口
querySystemLevelByKid({systemId: state.delId}).then((res) => {
state.formParam.levelList = res.data.data
})
};
const cancel = () => { const cancel = () => {
state.formParam = { state.formParam = {
kid:null, kid:null,
@@ -366,34 +373,21 @@ export default {
} }
//保存 //保存
const createTeacherDialog = () => { const createTeacherDialog = () => {
let a ={
kid:11111111, console.log(state.formParam)
systemCode: 888, if (state.formParam.kid != undefined) {
systemName: 'cesceshi', updateSystem(state.formParam).then(response => {
remark: 'cesceshi', message.success("修改成功");
levelList:[{ });
levelName:'cesceshi', }
levelTime:'222', else {
sort:1, addLecturerSystem(state.formParam)
levelPay:'56',
upperLimit:'186'
}, ]
}
console.log(a)
// console.log(state.formParam)
// if (state.formParam.kid != undefined) {
// updateSystem(state.formParam).then(response => {
// message.success("修改成功");
// });
// }
// else {
addLecturerSystem(a)
.then((res) => { .then((res) => {
message.success("保存成功"); message.success("保存成功");
}).catch((err) => { }).catch((err) => {
console.log(err); console.log(err);
}); });
// } }
cancel() cancel()
state.teacherdialog = false; state.teacherdialog = false;
getTableDate(); getTableDate();
@@ -427,6 +421,7 @@ export default {
return { return {
...toRefs(state), ...toRefs(state),
rules, rules,
getteacherrecordstableData,
inputRemove, inputRemove,
inputAdd, inputAdd,
managerChange, managerChange,

View File

@@ -18,7 +18,11 @@
<a-descriptions title="讲师信息" bordered :column="4" :contentStyle="rowCenter" :labelStyle="rowCenter"> <a-descriptions title="讲师信息" bordered :column="4" :contentStyle="rowCenter" :labelStyle="rowCenter">
<!-- 一层 --> <!-- 一层 -->
<a-descriptions-item label="讲师头像"> <a-descriptions-item label="讲师头像">
<a-avatar :src="formParam.photo" /></a-descriptions-item> <!-- <a-avatar :src="formParam.photo" /> -->
<a-image
:width="60" style="border-radius: 50%;"
src="https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png"
/></a-descriptions-item>
<a-descriptions-item label="讲师工号">{{formParam.userNo}}</a-descriptions-item> <a-descriptions-item label="讲师工号">{{formParam.userNo}}</a-descriptions-item>
<a-descriptions-item label="讲师姓名">{{formParam.name}}</a-descriptions-item> <a-descriptions-item label="讲师姓名">{{formParam.name}}</a-descriptions-item>
<a-descriptions-item label="讲师体系">{{formParam.tsystemName}}</a-descriptions-item> <a-descriptions-item label="讲师体系">{{formParam.tsystemName}}</a-descriptions-item>
@@ -26,7 +30,8 @@
<a-descriptions-item label="讲师级别">{{formParam.tlevelName <a-descriptions-item label="讲师级别">{{formParam.tlevelName
}}</a-descriptions-item> }}</a-descriptions-item>
<a-descriptions-item label="认证状态">{{ formParam.certStatus==0?'未认证' :formParam.certStatus==1 ?'已认证':''}}</a-descriptions-item> <a-descriptions-item label="认证状态">{{ formParam.certStatus==0?'未认证' :formParam.certStatus==1 ?'已认证':''}}</a-descriptions-item>
<a-descriptions-item label="授课时长">{{formParam.teaching}}</a-descriptions-item> <a-descriptions-item label="授课时长"> <span v-if="formParam.defaultTeachingTime!= null" >{{ (formParam.defaultTeachingTime /60 ).toFixed(2)}}小时</span>
</a-descriptions-item>
<a-descriptions-item label="发薪地 ">{{formParam.payrollPlaceName}}</a-descriptions-item> <a-descriptions-item label="发薪地 ">{{formParam.payrollPlaceName}}</a-descriptions-item>
<!-- 三层 --> <!-- 三层 -->
<a-descriptions-item label="在职">{{formParam.waitStatus==0?'在职' :formParam.waitStatus==1 ?'离职':''}}</a-descriptions-item> <a-descriptions-item label="在职">{{formParam.waitStatus==0?'在职' :formParam.waitStatus==1 ?'离职':''}}</a-descriptions-item>

View File

@@ -24,11 +24,11 @@
</a-form-item> </a-form-item>
<a-form-item class="select"> <a-form-item class="select">
<a-select style="width: 230px" v-model:value="searchParam.payrollPlaceId" placeholder="发薪地" <a-select style="width: 230px" v-model:value="searchParam.payrollPlaceId" placeholder="发薪地"
:options="PlaceOfPayList"/> :options="PlaceOfPayList" allowClear showSearch/>
</a-form-item> </a-form-item>
<a-form-item class="select " > <a-form-item class="select " >
<a-select style="width: 276px" v-model:value="searchParam.trainorgId" placeholder="培训发生组织" <a-select style="width: 276px" v-model:value="searchParam.trainorgId" placeholder="培训发生组织"
:options="trainOrglist"> :options="trainOrglist" allowClear showSearch>
</a-select> </a-select>
</a-form-item> </a-form-item>
<div style="display: flex; margin-bottom: 20px"> <div style="display: flex; margin-bottom: 20px">
@@ -82,8 +82,45 @@
/> />
</div> </div>
</div> </div>
<CostDetails v-model:visible="opendrawer" :teacherNo="teacherNo"> <!-- 抽屉 -->
</CostDetails> <a-drawer v-model:visible="opendrawer" placement="right"
@closa="cancelTeachingDialog" :maskClosable="true" width="60%" title="查看详情">
<a-form layout="inline">
<a-form-item class="select">
<a-input v-model:value="drawer.name" style="width: 260px; height: 40px; border-radius: 8px"
placeholder="请输入课程名称进行搜索" allowClear showSearch>
</a-input>
</a-form-item>
<a-form-item class="select ">
<a-range-picker style="width: 260px; height: 40px; margin-bottom: 20px; border-radius: 8px" v-model:value="drawersearchdate" separator="至"
:placeholder="[' 开始时间', ' 结束时间']" @change="searchTimeChange" />
</a-form-item>
<div style="display: flex; margin-bottom: 20px">
<a-button @click="searchSubmitdrawer()" type="primary" class="resetbtn">查询 </a-button>
<a-button class="resetbtn " @click="searchResetdrawer">重置</a-button>
</div>
</a-form>
<span>讲师费发放情况</span>
<a-table :header-cell-style="{ 'text-align': 'center' }" style="border: 1px solid #f2f6fe" :columns="column" :data-source="tableDatas" :loading="tableLoadings" :pagination="false">
<template #bodyCell="{ record, column }">
</template>
</a-table>
<div :style="{
position: 'absolute',
right: 0,
bottom: 0,
width: '100%',
borderTop: '1px solid #e9e9e9',
padding: '10px 16px',
background: '#fff',
textAlign: 'right',
zIndex: 1,
}">
<a-button class="drabtn" @click="cancelTeachingDialog">取消</a-button>
<a-button class="drabtn" type="primary" @click="cancelTeachingDialog" :loading="buttonLoading">返回
</a-button>
</div>
</a-drawer>>
</div> </div>
</template> </template>
<script lang="jsx"> <script lang="jsx">
@@ -107,9 +144,8 @@ export default {
setup() { setup() {
const router=useRouter(); const router=useRouter();
const { query: { id }} = useRoute(); const { query: { id }} = useRoute();
const opendrawer=ref(false)
const state = reactive({ const state = reactive({
open:true, opendrawer:false,
id, id,
summaryDate: null, summaryDate: null,
resbgTxt: null, resbgTxt: null,
@@ -132,21 +168,10 @@ export default {
departId: null, departId: null,
summaryDate:null, summaryDate:null,
}, },
queryFeeMonthly: {
teacherNo: null,
payrollPlaceId: null,
departId: null,
pageNo: "1",
pageSize: "10"
},
queryTeacherFeeDetail: {
teacherNo: null,
teachingDate: null
},
teacherNo:null, teacherNo:null,
querytableFee: { drawer: {
teacherNo: null, name: null,
teachingDate: null, drawersearchdate: null,
pageNo: '1', pageNo: '1',
pageSize: '10', pageSize: '10',
} }
@@ -314,25 +339,162 @@ export default {
getOrganizationLista() getOrganizationLista()
//表格内查看数据操作 //表格内查看数据操作
const handleLook = (record) => { const handleLook = (record) => {
opendrawer.value=true state.opendrawer=true
} }
const changePagination = (page, pageSize) => { const changePagination = (page, pageSize) => {
state.searchParam.pageNo = page; state.searchParam.pageNo = page;
getTableDate(); getTableDate();
}; };
// 二级页面导出 // 导出
const handleFeeMonthly = () => { const handleFeeMonthly = () => {
window.open( window.open(
`${process.env.VUE_APP_BASE_API}/teacher/fee/exportTeacherMonthlyFee?pageNo=${state.currentPage2 `${process.env.VUE_APP_BASE_API}/teacher/fee/exportTeacherMonthlyFee?pageNo=${state.searchParam.currentPage
}&pageSize=${state.pageSize2} }&pageSize=${state.searchParam.pageSize}
&userNo=${state.queryFeeMonthly.payrollPlaceId ? state.queryFeeMonthly.payrollPlaceId : ""} &userNo=${state.searchParam.payrollPlaceId ? state.searchParam.payrollPlaceId : ""}
&teacherNo=${state.queryFeeMonthly.teacherNo ? state.queryFeeMonthly.teacherNo : ""} &teacherNo=${state.searchParam.teacherNo ? state.searchParam.teacherNo : ""}
&departId=${state.queryFeeMonthly.departId ? state.queryFeeMonthly.departId : ""}`) &departId=${state.searchParam.trainorgId ? state.searchParam.trainorgId : ""}`)
} }
//重置
const searchReset = () => {
state.searchParam = {
pageNo: "1",
pageSize: "10",
teacherNo: null,
payrollPlaceId: null,
departId: null,
summaryDate:null,
};
getTableDate();
};
//二级页面重置
const searchResetdrawer =()=>{
state. drawer={
name: null,
drawersearchdate: null,
pageNo: '1',
pageSize: '10',
}
}
//二级页面查询
const searchSubmitdrawer=()=>{
}
const tableDatas = ref[{}]
const column = ref([
{
title: '讲师姓名 ',
dataIndex: 'teacherName',
key: 'teacherName',
elipsis: true,
align: "center",
width: 200,
},
{
title: '讲师工号',
dataIndex: 'teacherNo',
key: 'teacherNo',
align: "center",
elipsis: true,
width: 200,
},
{
title: '课程名称 ',
dataIndex: 'courseName',
key: 'courseName',
elipsis: true, align: "center",
width: 120,
},
{
title: '课程类型 ',
dataIndex: ' courseType',
key: ' courseType',
elipsis: true, align: "center",
width: 120,
customRender: (value) => {
return (
<div>
{value.record. courseType == "1" || value.record. courseType == "2"|| value.record.courseTypeype == "3"
? {
"1": "项目开课",
"2": "路径开课",
"3": "面授开课",
}[value.record. courseType + ""] || ""
: "-"}
</div>
)
}
},
{
title: '授课时长 ',
dataIndex: 'teachingTime',
key: 'teachingTime',
elipsis: true, align: "center",
width: 120,
},
{
title: '授课日期 ',
dataIndex: 'teacherOrg',
key: 'teacherOrg',
elipsis: true,
align: "center",
width: 300,
scopedSlots: { customRender: "teacherOrg" },
},
{
title: '讲师体系',
dataIndex: 'systemName',
key: 'systemName',
elipsis: true, align: "center",
width: 120,
},
{
title: '讲师级别 ',
dataIndex: 'levelName',
key: 'levelName',
elipsis: true, align: "center",
width: 120,
},
{
title: '讲师发薪地 ',
dataIndex: 'teacherpayrollPlace',
key: 'teacherpayrollPlace',
elipsis: true,
align: "center",
width: 200,
},
{
title: '基准课酬 ',
dataIndex: 'teacherlevelPay',
key: 'teacherlevelPay',
elipsis: true, align: "center",
width: 120,
},
{
title: '计划费用 ',
dataIndex: 'expense',
key: 'expense',
elipsis: true,
align: "center",
width: 200,
},
{
title: '应发费用 ',
dataIndex: 'payableExpense',
key: 'payableExpense',
elipsis: true,
align: "center",
width: 200,
},
])
return { return {
...toRefs(state), ...toRefs(state),
trainOrglist, trainOrglist,
tableDatas,
column,
searchReset,
trainOrglista, trainOrglista,
handleFeeMonthly, handleFeeMonthly,
handleLook, handleLook,
@@ -345,6 +507,7 @@ export default {
PlaceOfPayLista, PlaceOfPayLista,
getOrganizationList, getOrganizationList,
getOrganizationLista, getOrganizationLista,
searchResetdrawer
} }
}, },
}; };

View File

@@ -102,6 +102,34 @@
</a-form-item> </a-form-item>
</a-col> </a-col>
</a-row> </a-row>
<a-row :gutter="16">
<a-col :span="12">
<a-form-item label="组织负责人" name="zzfzr">
<a-select v-model:value="formParam.zzfzr" placeholder="请选择组织负责人"
:options="PlaceOfPayList" allowClear showSearch/>
</a-form-item>
</a-col>
<a-col :span="12">
<a-form-item label="一级审批人" name="yjspr">
<a-select v-model:value="formParam.yjspr" placeholder="请选择一级审批人"
:options="PlaceOfPayList" allowClear showSearch/>
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="16">
<a-col :span="12">
<a-form-item label="二级审批人" name="zzfzr">
<a-select v-model:value="formParam.zzfzr" placeholder="请选择二级审批人"
:options="PlaceOfPayList" allowClear showSearch/>
</a-form-item>
</a-col>
<a-col :span="12">
<a-form-item label="三级审批人" name="sjspr">
<a-select v-model:value="formParam.sjspr" placeholder="请选择三级审批人"
:options="PlaceOfPayList" allowClear showSearch/>
</a-form-item>
</a-col>
</a-row>
<a-form-item label="选中组织"> <a-form-item label="选中组织">
<a-row :gutter="50" style="margin-bottom: 10px;"> <a-row :gutter="50" style="margin-bottom: 10px;">
<a-col :span="2"> <a-col :span="2">
@@ -333,6 +361,10 @@ const getTableDate = (obj) => {
const rules = { const rules = {
trainorgId: [{ required: true, message: '归属组织编号不能为空' }], trainorgId: [{ required: true, message: '归属组织编号不能为空' }],
trainorgName: [{ required: true, message: '归属组织名称不能为空' }], trainorgName: [{ required: true, message: '归属组织名称不能为空' }],
zzfzr: [{ required: true, message: '组织负责人不能为空' }],
yjspr: [{ required: true, message: '"一级审批人不能为空' }],
zzfzr: [{ required: true, message: '二级审批人不能为空' }],
sjspr: [{ required: true, message: '三级审批人不能为空' }],
} }