讲师管理新建讲师修改

This commit is contained in:
zhangsir
2024-10-16 13:44:53 +08:00
parent 3f1d4758f9
commit a13b6c27db
3 changed files with 64 additions and 17 deletions

View File

@@ -59,3 +59,5 @@ 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 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) => http.get(`/admin/thirdApi/user/list?keyword=${obj.nameOrUserNo}&pageNo=1&pageSize=50&departId=`)
//根据userid获取讲师体系信息
export const getSystemInfoByUserId = (id) => http.get(`/admin/ststem/getSystemInfoByUserId?id=${id}`)

View File

@@ -25,7 +25,7 @@
</a-select> </a-select>
</div> </div>
<div class="tree"> <div class="tree">
<a-tree allow-clear tree-default-expand-all :tree-data="treeData" :loading="orgLoading" <a-tree show-icon allow-clear tree-default-expand-all :tree-data="treeData" :loading="orgLoading"
:load-data="onLoadData" v-model:selectedKeys="stuTreeSelectKeys" :load-data="onLoadData" v-model:selectedKeys="stuTreeSelectKeys"
v-model:expandedKeys="stuTreeExpandedKeys" :fieldNames="{ v-model:expandedKeys="stuTreeExpandedKeys" :fieldNames="{
children: 'treeChildList', children: 'treeChildList',
@@ -33,11 +33,15 @@
title: 'name', title: 'name',
value: 'name', value: 'name',
}" @select="stuStuOrgSelect" style="max-height: 260px;overflow-y: auto;width: 250px;"> }" @select="stuStuOrgSelect" style="max-height: 260px;overflow-y: auto;width: 250px;">
<template #smile>
<UserOutlined />
</template>
</a-tree> </a-tree>
</div> </div>
<div class="btn"> <div class="btn">
<div class="btn0 btn1" @click="notChange">取消</div> <div class="btn0 btn1" @click="notChange">取消</div>
<div class="btn0 btn2" @click="changeOut">确定</div> <!-- <div class="btn0 btn2" @click="changeOut">确定</div> -->
<a-button :loading="loadingChange" @click="changeOut" class="btn0 btn2" type="primary">确定</a-button>
</div> </div>
</div> </div>
</template> </template>
@@ -63,8 +67,8 @@ import { ref,defineProps,defineEmits,watch,onMounted } from 'vue';
import { request, useRequest} from "@/api/request"; import { request, useRequest} from "@/api/request";
import { message } from "ant-design-vue" import { message } from "ant-design-vue"
import { ORG_CHILD_LIST, ORG_LIST,USER_LIST_PAGE} from "@/api/apis"; import { ORG_CHILD_LIST, ORG_LIST,USER_LIST_PAGE} from "@/api/apis";
import { getTeacherByDepartId,getTeacherByNameOrUserNo } from "@/api/Lecturer"; import { getTeacherByDepartId,getTeacherByNameOrUserNo,getSystemInfoByUserId } from "@/api/Lecturer";
import { ZoomInOutlined } from '@ant-design/icons-vue'; import { ZoomInOutlined,UserOutlined } from '@ant-design/icons-vue';
const props = defineProps({ const props = defineProps({
value:{ value:{
type: String, type: String,
@@ -79,8 +83,8 @@ const props = defineProps({
default: '', default: '',
}, },
system:{ system:{
type: String, type: Object,
default: '', default: ()=>{},
}, },
level:{ level:{
type: String, type: String,
@@ -105,16 +109,18 @@ function blur() {
isOpen.value = false isOpen.value = false
} }
const orgName = ref('') const orgName = ref('')
const systemName = ref('') const systemName = ref(null)
const levelName = ref('') const levelName = ref('')
const neworgName = ref('') const neworgName = ref('')
const teacherId = ref('')
const handleChange = (e,l) => { const handleChange = (e,l) => {
isOpen.value = false isOpen.value = false
// emit('update:value',e) // emit('update:value',e)
teacherName.value = e teacherName.value = e
orgName.value = l.orgName orgName.value = l.orgName
systemName.value = l.systemName // systemName.value = l.systemName
levelName.value = l.levelName levelName.value = l.levelName
teacherId.value = l.key
if( l.orgName !==null ){ if( l.orgName !==null ){
neworgName.value= orgName.value.split('/') neworgName.value= orgName.value.split('/')
neworgName.value= neworgName.value[ neworgName.value.length-1] neworgName.value= neworgName.value[ neworgName.value.length-1]
@@ -145,7 +151,7 @@ const searchMember = (keyword) => {
loading.value = false loading.value = false
options.value = res.data.data.list.map((item) => { options.value = res.data.data.list.map((item) => {
return { return {
value: item.realName, value: item.realName+'/'+item.userNo,
label: item.realName+'('+item.userNo+')'+item.orgName, label: item.realName+'('+item.userNo+')'+item.orgName,
system: item.realName+'('+item.userNo+')'+item.tSystemName, system: item.realName+'('+item.userNo+')'+item.tSystemName,
level: item.realName+'('+item.userNo+')'+item.sLevelName, level: item.realName+'('+item.userNo+')'+item.sLevelName,
@@ -184,7 +190,8 @@ function onLoadData(treeNode) {
res.data.data.list.map(item=>{ res.data.data.list.map(item=>{
return ( return (
item.isLeaf = true, item.isLeaf = true,
item.name = item.realName item.name = item.realName + '/' + item.userNo,
item.slots = {icon:'smile'}
) )
}) })
childDatas.unshift(...res.data.data.list) childDatas.unshift(...res.data.data.list)
@@ -210,13 +217,15 @@ function stuStuOrgSelect(e, {selected: bool, selectedNodes, node, event}) {
console.log(selectedNodes) console.log(selectedNodes)
teacherName.value = '' teacherName.value = ''
orgName.value = '' orgName.value = ''
systemName.value = '' systemName.value = null
levelName.value = '' levelName.value = ''
teacherId.value = ''
if(selectedNodes[0].isLeaf){ if(selectedNodes[0].isLeaf){
teacherName.value = selectedNodes[0].name teacherName.value = selectedNodes[0].name
orgName.value = selectedNodes[0].orgName orgName.value = selectedNodes[0].orgName
systemName.value = selectedNodes[0].systemName // systemName.value = selectedNodes[0].systemName
levelName.value = selectedNodes[0].levelName levelName.value = selectedNodes[0].levelName
teacherId.value = selectedNodes[0].id
// emit('update:value',selectedNodes[0].realName) // emit('update:value',selectedNodes[0].realName)
} }
} }
@@ -226,10 +235,13 @@ watch(()=>visible.value,(val)=>{
stuTreeExpandedKeys.value = [] stuTreeExpandedKeys.value = []
teacherName.value = '' teacherName.value = ''
orgName.value = '' orgName.value = ''
systemName.value = '' systemName.value = null
levelName.value = '' levelName.value = ''
neworgName.value='' neworgName.value=''
selectName.value = null selectName.value = null
selectData.value = ''
teacherId.value = ''
loadingChange.value = false
// changeneworg() // changeneworg()
} }
}) })
@@ -237,10 +249,32 @@ const notChange = () => {
visible.value = false visible.value = false
teacherName.value = '' teacherName.value = ''
orgName.value = '' orgName.value = ''
systemName.value = '' systemName.value = null
levelName.value = '' levelName.value = ''
neworgName.value='' neworgName.value=''
teacherId.value = ''
loadingChange.value = false
} }
const loadingChange = ref(false)
watch(()=>teacherId.value,(val)=>{
if(val){
loadingChange.value = true
getSystemInfoByUserId(teacherId.value).then(res=>{
if(res.data.code == 200){
systemName.value = {
systemId:res.data.data.id,
systemName:res.data.data.systemName,
systemCode:res.data.data.systemCode
}
}
loadingChange.value = false
emit('update:system',systemName.value)
}).catch(err=>{
message.error('讲师体系获取失败,请重新选择')
loadingChange.value = false
})
}
})
const changeOut = () => { const changeOut = () => {
if(!teacherName.value){ if(!teacherName.value){
message.error('请选择讲师') message.error('请选择讲师')
@@ -290,6 +324,7 @@ const changeOut = () => {
} }
.btn2{ .btn2{
background-color: rgba(50, 107, 250, 1); background-color: rgba(50, 107, 250, 1);
padding: 0;
} }
} }
} }

View File

@@ -145,7 +145,7 @@
<a-col :span="24"> <a-col :span="24">
<a-form-item label="讲师名称" name="name"> <a-form-item label="讲师名称" name="name">
<SearchTeacher v-model:value="formParam.name" v-model:lable="formParam.orgName" <SearchTeacher v-model:value="formParam.name" v-model:lable="formParam.orgName"
v-model:system="formParam.tSystemName" v-model:level="formParam.tLevelId"></SearchTeacher> v-model:system="tSystemNames" v-model:level="formParam.tLevelId"></SearchTeacher>
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :span="24"> <a-col :span="24">
@@ -167,7 +167,7 @@
<!-- <a-select class="draitem" v-model:value="formParam.tSystemName" placeholder="请选择讲师体系" allowClear <!-- <a-select class="draitem" v-model:value="formParam.tSystemName" placeholder="请选择讲师体系" allowClear
@change="changetlevel" .:options="LecturerSystemList"> @change="changetlevel" .:options="LecturerSystemList">
</a-select> --> </a-select> -->
<a-input disabled v-model:value="formParam.tSystemName" class="draitem" <a-input disabled v-model:value="tSystemNames.systemName" class="draitem"
placeholder="自动带出讲师的体系" allowClear showSearch> placeholder="自动带出讲师的体系" allowClear showSearch>
</a-input> </a-input>
</a-form-item> </a-form-item>
@@ -411,6 +411,9 @@ export default {
pageSize: 10, pageSize: 10,
tableDataTotal: -1,//table列表总条数 tableDataTotal: -1,//table列表总条数
vf: false, vf: false,
tSystemNames:{
systemName:null
},
formParam: { formParam: {
name: null, name: null,
certStatus: 0,//认证状态 certStatus: 0,//认证状态
@@ -870,6 +873,7 @@ export default {
return message.error(rules[formItemNames[i]][0].log) return message.error(rules[formItemNames[i]][0].log)
} }
} }
state.formParam = {...state.formParam,...state.tSystemNames}
if (state.vf == false) { if (state.vf == false) {
updateInTeacher(state.formParam).then(response => { updateInTeacher(state.formParam).then(response => {
message.success("修改成功"); message.success("修改成功");
@@ -1011,6 +1015,9 @@ export default {
workExperience: '', workExperience: '',
courses: '', courses: '',
} }
state.tSystemNames = {
systemName:null
}
} }
const clearNonNumber = () => { const clearNonNumber = () => {
state.formParam.defaultteachingTime = state.formParam.defaultteachingTime.replace(/\D/g, ''); state.formParam.defaultteachingTime = state.formParam.defaultteachingTime.replace(/\D/g, '');
@@ -1019,7 +1026,7 @@ export default {
name: [{ required: true, message: '',log:'讲师不能为空' }], name: [{ required: true, message: '',log:'讲师不能为空' }],
// newdepartId: [{ required: true, message: '组织不能为空' }], // newdepartId: [{ required: true, message: '组织不能为空' }],
tLevelId: [{ required: true, message: '',log:'讲师级别不能为空' }], tLevelId: [{ required: true, message: '',log:'讲师级别不能为空' }],
// tSystemName: [{ required: true, message: '讲师体系不能为空' }], tSystemName: [{ required: true, message: '讲师体系不能为空' }],
defaultteachingTime: [{ required: true, message: '',log:'初始授课时长不能为空' }], defaultteachingTime: [{ required: true, message: '',log:'初始授课时长不能为空' }],
// certStatus: [{ required: true, message: '认证状态不能为空' }], // certStatus: [{ required: true, message: '认证状态不能为空' }],
@@ -1078,6 +1085,9 @@ export default {
state.formParam.workExp0erience = state.formParam.workExperience === null ? '' : state.formParam.workExperience state.formParam.workExp0erience = state.formParam.workExperience === null ? '' : state.formParam.workExperience
state.formParam.courses = state.formParam.courses === null ? '' : state.formParam.courses state.formParam.courses = state.formParam.courses === null ? '' : state.formParam.courses
state.formParam.photo = state.formParam.photo === null ? 'https://p0.itc.cn/q_70/images01/20211013/f45d91616a364d6ea9c42a8db69734aa.png' : state.formParam.photo state.formParam.photo = state.formParam.photo === null ? 'https://p0.itc.cn/q_70/images01/20211013/f45d91616a364d6ea9c42a8db69734aa.png' : state.formParam.photo
state.tSystemNames.systemName = res.data.data.systemName
state.tSystemNames.systemCode = res.data.data.systemCode
state.tSystemNames.systemId = res.data.data.systemId
} }