讲师管理

This commit is contained in:
zhangsir
2024-11-01 11:01:07 +08:00
parent 3778c721cc
commit 8a6d8edca0
7 changed files with 81 additions and 33 deletions

View File

@@ -1,4 +1,5 @@
import http from "./config";
import https from "./confign";
/*
* @Author: lixg lixg@dongwu-inc.com
* @Date: 2022-11-18 14:09:43
@@ -46,7 +47,7 @@ export const fileUp = (obj) => http.post('/file/upload', obj)
//组织树查询讲师
export const getTeacherByDepartId = (obj) => http.get(`/admin/thirdApi/user/list?departId=${obj.organizationId}&pageNo=1&pageSize=1000&keyword=`)
//根据姓名工号查询讲师
export const getTeacherByNameOrUserNo = (obj) => http.get(`/admin/thirdApi/user/list?keyword=${obj.nameOrUserNo}&pageNo=1&pageSize=50&departId=`)
export const getTeacherByNameOrUserNo = (obj) => https.get(`/user/tacherList?keyword=${obj.nameOrUserNo}&pageNo=1&pageSize=50&departId=`)
//根据userid获取讲师体系信息
export const getSystemInfoByUserId = (id) => http.get(`/admin/system/getSystemInfoByUserId?id=${id}`)
//讲师搜索

View File

@@ -134,15 +134,21 @@ const handleConfirm = () => {
}
numTime.value+=1
localStorage.setItem('numTime',numTime.value)
const obj = {
id: '1',
status: 1
}
api.isConfirm(obj).then(res=>{
const ids = expenseList.value.map(item=>item.id)
api.teacherExpenseConfirm(ids).then(res=>{
console.log(res,'resssss')
message.success('提交成功')
close()
closeDrawer()
const obj = ids.map(item=>{
return {
id: item,
status: 1
}
})
api.isConfirm(obj).then(res=>{
console.log(res,'resssss')
message.success('提交成功')
close()
closeDrawer()
})
})
}
const forData = ref()

View File

@@ -31,7 +31,7 @@
<div class="text">上传</div>
<div class="right">
<div style="height: 176px; margin-bottom: 20px">
<a-upload-dragger v-model:fileList="fileList" :action="importHomeWork" name="file" :multiple="true"
<a-upload-dragger v-model:fileList="fileList" :action="importHomeWork" :name="fileName" :multiple="true"
:headers="headers"
@change="handleChange" :showUploadList="false">
<p class="ant-upload-drag-icon">
@@ -159,7 +159,11 @@ import {getCookieForName} from "@/api/method";
title:{
type: String,
default: null,
}
},
fileName:{
type: String,
default: 'file',
},
},
setup(props, ctx) {
const state = reactive({

View File

@@ -97,9 +97,17 @@ const props = defineProps({
id:{
type: String,
default: '',
}
},
payrollPlaceCode: {
type: String,
default: '',
},
payrollPlaceName: {
type: String,
default: '',
},
})
const emit = defineEmits(['update:value','update:lable','update:system','update:level','update:newlable','update:orgId','update:id'])
const emit = defineEmits(['update:value','update:lable','update:system','update:level','update:newlable','update:orgId','update:id','update:payrollPlaceCode','update:payrollPlaceName'])
const visible = ref(false);
const selectData = ref(null);
watch(()=>props.value,(val)=>{
@@ -120,6 +128,8 @@ function blur() {
}
const orgName = ref('')
const orgId = ref('')
const payrollPlaceCode = ref('')
const payrollPlaceName = ref('')
const systemName = ref(null)
const levelName = ref('')
const neworgName = ref('')
@@ -133,6 +143,8 @@ const handleChange = (e,l) => {
levelName.value = l.levelName
teacherId.value = l.key
orgId.value = l.orgId
payrollPlaceCode.value = l.payrollPlaceCode
payrollPlaceName.value = l.payrollPlaceName
if( l.orgName !==null ){
neworgName.value= orgName.value.split('/')
neworgName.value= neworgName.value[ neworgName.value.length-1]
@@ -171,7 +183,9 @@ const searchMember = (keyword) => {
orgName: item.orgName,
orgId: item.departId,
tSystemName:item.tSystemName,
sLevelName:item.sLevelName
sLevelName:item.sLevelName,
payrollPlaceCode: item.payrollPlaceCode,
payrollPlaceName:item.payrollPlaceName
}
})
}else{
@@ -234,6 +248,8 @@ function stuStuOrgSelect(e, {selected: bool, selectedNodes, node, event}) {
systemName.value = null
levelName.value = ''
teacherId.value = ''
payrollPlaceCode.value = ''
payrollPlaceName.value = ''
if(selectedNodes[0].isLeaf){
teacherName.value = selectedNodes[0].name
orgName.value = selectedNodes[0].orgName
@@ -242,6 +258,8 @@ function stuStuOrgSelect(e, {selected: bool, selectedNodes, node, event}) {
levelName.value = selectedNodes[0].levelName
teacherId.value = selectedNodes[0].id
// emit('update:value',selectedNodes[0].realName)
payrollPlaceCode.value = selectedNodes[0].payrollPlaceCode
payrollPlaceName.value = selectedNodes[0].payrollPlaceName
}
}
watch(()=>visible.value,(val)=>{
@@ -260,6 +278,8 @@ watch(()=>visible.value,(val)=>{
loadingChange.value = false
// teacherId.value = '1012311820121276416'
// changeneworg()
payrollPlaceCode.value = ''
payrollPlaceName.value = ''
}
})
const notChange = () => {
@@ -272,6 +292,8 @@ const notChange = () => {
neworgName.value=''
teacherId.value = ''
loadingChange.value = false
payrollPlaceCode.value = ''
payrollPlaceName.value = ''
}
const loadingChange = ref(false)
watch(()=>teacherId.value,(val)=>{
@@ -320,6 +342,8 @@ const changeOut = () => {
emit('update:level',levelName.value)
emit('update:newlable',neworgName.value)
emit('update:id',teacherId.value)
emit('update:payrollPlaceCode',payrollPlaceCode.value)
emit('update:payrollPlaceName',payrollPlaceName.value)
notChange()
}
</script>

View File

@@ -307,12 +307,12 @@
}
getTrainOrg(obj).then((res)=>{
if (res.data.code === 200) {
let arr = res.data.data;
let arr = res.data.data.records;
let array = [];
arr.map((value) => {
let obj = {
value: value.trainorgId,
label: value.trainOrg,
value: value.affiliationCode,
label: value.affiliationName,
};
array.push(obj);
});

View File

@@ -110,9 +110,9 @@
<template v-if="column.key === 'operation'">
<a-space >
<a-button type="link" @click="() => handleLook(record, String(record.courseform))">查看</a-button>
<a-button type="link" :disabled="record.status==='A10' || record.status==='E10' ?false :true" @click="() => handleModify(record, String(record.courseform))">编辑</a-button>
<a-button :disabled="record.status==='A20' || record.status==='A30'||record.status==='S20' ?true :false" type="link" @click="() => handleOperate(record, String(record.courseform))">提交</a-button>
<a-button :disabled="record.status==='A10' && record.status!=='A20' || record.status==='A30'||record.status==='S20' ||record.status==='E10' ?true :false" type="link" @click="() => handleOperate(record, String(record.courseform))">撤回</a-button>
<a-button type="link" :disabled="record.status==='A10' || record.status==='E10' ?false :true" @click="() => handleModify(record, String(record.courseform))">编辑</a-button>
<!-- <a-button :disabled="record.status==='A20' || record.status==='A30'||record.status==='S20' ?true :false" type="link" @click="() => handleOperate(record, String(record.courseform))">提交</a-button>
<a-button :disabled="record.status==='A10' && record.status!=='A20' || record.status==='A30'||record.status==='S20' ||record.status==='E10' ?true :false" type="link" @click="() => handleOperate(record, String(record.courseform))">撤回</a-button> -->
<!-- <a-button type="link" @click="() => deleteModal(record, String(record.courseform))">删除</a-button> -->
</a-space>
</template>
@@ -355,13 +355,13 @@
@closa="cancelTeachingDialog" :maskClosable="true" width="60%" title="查看讲师费用">
<span class="line"></span>
<span>讲师费用详情</span>
<a-descriptions bordered :column="2" :contentStyle="rowCenter" :labelStyle="rowCenter">
<a-descriptions style="padding-bottom: 35px;" bordered :column="2" :contentStyle="rowCenter" :labelStyle="rowCenter">
<a-descriptions-item label="讲师名称">{{formParam.name}}</a-descriptions-item>
<a-descriptions-item label="讲师工号">{{formParam.userNo}}</a-descriptions-item>
<a-descriptions-item label="讲师组织" :span="2">{{formParam.teacherOrg}}</a-descriptions-item>
<a-descriptions-item label="讲师体系">{{formParam.systemName}}</a-descriptions-item>
<a-descriptions-item label="讲师级别">{{formParam.levelName }}</a-descriptions-item>
<a-descriptions-item label="发薪地">{{formParam.teacherpayrollPlace}}</a-descriptions-item>
<a-descriptions-item label="讲师组织" :span="2">{{formParam.orgName}}</a-descriptions-item>
<a-descriptions-item label="讲师体系">{{formParam.tsystemName}}</a-descriptions-item>
<a-descriptions-item label="讲师级别">{{formParam.tlevelName }}</a-descriptions-item>
<a-descriptions-item label="发薪地">{{formParam.payrollPlace}}</a-descriptions-item>
<a-descriptions-item label="费用类型">"费用类型(未命名)"</a-descriptions-item>
<a-descriptions-item label="课程类型">{{formParam.courseType==1?'项目开课' :formParam.courseType==2 ?'路径开课':formParam.courseType==3 ?'面授开课':''}}</a-descriptions-item>
<a-descriptions-item label="课程名称">{{formParam.courseName}}</a-descriptions-item>
@@ -369,7 +369,7 @@
<a-descriptions-item label="授课/课程日期 ">{{formParam.teachingDate}}</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.teacherlevelPay}}</a-descriptions-item>
<a-descriptions-item label="课酬基准 ">{{formParam.levelPay}}</a-descriptions-item>
<a-descriptions-item label="计划费用 ">{{formParam.expense}}</a-descriptions-item>
<a-descriptions-item label="应发费用 ">{{formParam.payableExpense}}</a-descriptions-item>
<a-descriptions-item label="状态">{{formParam.status=="0"?'待确认' :formParam.status=="1"?'待提交':formParam.status== "2" ?'审核中':formParam.status== "3"?'审核通过':''}}</a-descriptions-item>
@@ -392,7 +392,7 @@
</a-button>
</div>
</a-drawer>
<ImportWork v-model:showWork="showWork" :url="'/admin/export/exportTeacherExpense'" :title="title"></ImportWork>
<ImportWork v-model:showWork="showWork" :url="'/admin/export/importTeacherExpense'" :fileName="uploadFile" :title="title"></ImportWork>
</div>
<!-- 一键确认讲师费 -->
<ConfirmLecturer :ids="selectsIds" v-model:visible="visibleConfirm" :name="'确认讲师费'" />
@@ -635,8 +635,9 @@ console.log( "讲师体系id" +val);
title: '课程名称 ',
dataIndex: 'courseName',
key: 'courseName',
elipsis: true, align: "center",
width: 120,
elipsis: true,
align: "center",
width: 200,
},
{
title: '培训发生组织',
@@ -778,9 +779,9 @@ console.log( "讲师体系id" +val);
title: '操作 ',
dataIndex: 'operation',
key: 'operation',
elipsis: true, align: "right",
elipsis: true, align: "center",
fixed: "right",
width: 400,
width: 160,
scopedSlots: { customRender: "action" },
},
@@ -1017,6 +1018,17 @@ console.log( "讲师体系id" +val);
// state.formParam=Object.assign({} ,res.data.data)
state.formParam=res.data.data
// tableDataFeeDetail.value = res.data.data.records
state.formParam.courseType = String(res.data.data.courseType)
state.formParam.levelPay = String(res.data.data.levelPay)
state.tSystemNames.systemName = res.data.data.tsystemName
state.tSystemNames.systemId = res.data.data.tsystemId
state.tSystemNames.systemCode = res.data.data.systemCode
state.tSystemNames.levelVoList = res.data.data.levelVoList
state.formParam.tlevelName = res.data.data.tlevelName
state.formParam.tlevelId = res.data.data.tlevelId
state.formParam.name = res.data.data.name+'/'+res.data.data.userNo
state.teachingDate = dayjs(res.data.data.teachingDate)
})
.catch((err) => {
console.log("详情", err);

View File

@@ -366,9 +366,10 @@ export default {
// 导出
const handleFeeMonthly = () => {
window.open(
`${process.env.VUE_APP_BASE_API}/admin/export/exportTeacherSummary?pageNo=${state.searchParam.pageNo}&pageSize=${state.searchParam.pageSize}
`${process.env.VUE_APP_BASE_API}/admin/export/exportTeacherSummary?
&name=${state.searchParam.name ? state.searchParam.name : ""}
&payrollPlaceId=${state.searchParam.payrollPlaceId ? state.searchParam.payrollPlaceId : ""}`)
&billId=${state.searchParam.payrollPlaceId ? state.searchParam.payrollPlaceId : ""}
&trainOrgId=${state.searchParam.courseTypeId || ''}`)
}
//重置
const searchReset = () => {