讲师管理bug

This commit is contained in:
zhangsir
2024-12-09 16:28:16 +08:00
parent e84fc4b3af
commit 30ee0c4a06
11 changed files with 148 additions and 57 deletions

View File

@@ -12,7 +12,8 @@ export const updateInTeacherCourse = (obj) => http.post('/admin/teacherRecord/ed
export const getTeacherCourseList = (obj) => http.get('/admin/teacherRecord/queryById', {params: obj})
//获取培训组织
export const getOrganization = (obj) => http.get ('/admin/affiliation/list', {params: obj})
//供应商数据
export const selectSupplier = (obj) => http.get('/admin/teacher/selectSupplier', {params: obj})
//授课记录导出
export const getexport = (obj) => http.post('/lesson_records/export', obj)

View File

@@ -141,7 +141,7 @@ import * as lecturerApi from "@/api/Lecturer.js";
})
}
const orgLists = ref([])
const onCheck = async (checkedKeys, {checked: bool, checkedNodes, node, event}) => {
const onCheck = async (checkedKey, {checked: bool, checkedNodes, node, event}) => {
// "965356037047586816"
let length = treeAddData.value.length
if(checkedNodes.length > length){
@@ -154,7 +154,7 @@ import * as lecturerApi from "@/api/Lecturer.js";
message.error('获取被占用组织失败,请重新尝试')
})
}
treeAddData.value = checkedNodes.map(item => {
const checkLists = checkedNodes.map(item => {
if (!item || !item.id) {
return item;
}
@@ -176,6 +176,14 @@ import * as lecturerApi from "@/api/Lecturer.js";
return item;
}
});
const endLists = [...checkLists,...orgLists.value]
const seen = new Set();
const uniqueEndLists = endLists.filter(item => {
const isDuplicate = seen.has(item.orgId);
seen.add(item.orgId);
return !isDuplicate;
});
treeAddData.value = uniqueEndLists?.filter(item => checkedKeys.value?.checked?.includes(item.orgId));
// treeAddData.value = checkedNodes;
console.log(treeAddData.value,'checkedNodes',orgLists.value)
}
@@ -193,6 +201,13 @@ import * as lecturerApi from "@/api/Lecturer.js";
clearTree()
};
const queryCreate = () => {
treeAddData.value?.map(item=>{
props?.AddContentList?.map(i=>{
if(item.orgId === i.orgId){
item.affiliationOrgId = i.affiliationOrgId
}
})
})
emit("update:AddContentList", treeAddData.value);
closeCodeModal()
}

View File

@@ -19,7 +19,7 @@
<!-- 讲师信息 -->
<div style="width: 100%;margin-top: 10px;">
<span class="line" style="margin-left:12px;"></span>
<a-descriptions title="讲师信息" style="padding:0 20px;" bordered :column="3" :contentStyle="rowCenters" :labelStyle="rowCenter">
<a-descriptions title="基本信息" style="padding:0 20px;" bordered :column="3" :contentStyle="rowCenters" :labelStyle="rowCenter">
<!-- 一层 -->
<a-descriptions-item label="讲师头像"> <a-image
:width="55" style="border-radius: 50%;"

View File

@@ -3,7 +3,7 @@
width="80%" :title="false">
<!-- 内部讲师查看详情 -->
<div class="LookInsideLecturer">
<div class="header" style="margin-top: -24px;">
<div class="header" style="margin-top: -24px;margin-left: -24px;">
<div class="headerTitle">查看讲师</div>
<!-- <router-link :to="{ path: '/lecturerList', query: { activeKey: '1', } }"> -->
<img
@@ -17,7 +17,7 @@
<!-- 讲师信息 -->
<div style="width: 100%;margin-top: 10px;padding: 20px;">
<span class="line"></span>
<a-descriptions title="讲师信息" bordered :column="4" :contentStyle="rowCenter" :labelStyle="rowCenters">
<a-descriptions title="基本信息" bordered :column="4" :contentStyle="rowCenter" :labelStyle="rowCenters">
<!-- 一层 -->
<a-descriptions-item label="讲师头像">
<a-image :width="55" style="border-radius: 50%;" :src=formParam.photo />
@@ -507,7 +507,13 @@ const handleup = ()=>{
}
//小竖线
.line{
float:left; width: 3px; height: 25px; background: #4ea6ff;border-radius: 30%; margin-right: 5px;
float:left;
width: 3px;
height: 16px;
background: #4ea6ff;
border-radius: 30%;
margin-left: -10px;
margin-top: 5px;
}
::v-deep .ant-descriptions-header{
margin-bottom: 18px ;

View File

@@ -79,7 +79,7 @@ const getOutTeacher = () => {
const options = computed(() => userList.value.map(e => ({
// label: e.name + '(' + e.userNo + ')' + e.organizationName,
label:e.name,
label:e.name+ '(' +e.supplier + ')',
value: e.name,
...e,
audienceList: null

View File

@@ -65,10 +65,10 @@
<!-- 弹窗组件 -->
<a-drawer v-model:visible="teacherdialog" placement="right" :closable="false" :maskClosable="false"
width="700px" :title="false">
<div class="headers" style="margin-top:-24px;">
<div class="headers" style="margin-top:-24px;width: 110%;margin-left: -24px;">
<div class="headerTitle">{{ teacherdialogtitle }}</div>
<img
style="width: 29px; height: 29px; cursor: pointer"
style="width: 29px; height: 29px; cursor: pointer;margin-right: 24px;"
src="@/assets/images/basicinfo/close.png"
@click="cancelTeacherDialog"
/>
@@ -139,18 +139,18 @@
</a-col>
<a-col :span="24">
<a-form-item label="初始授课时长" name="teaching">
<a-input v-model:value="formParam.teaching" style="width:80%; height: 40px; border-radius: 8px ; "
<a-input v-model:value="formParam.teaching" style="width:100%; height: 40px; border-radius: 8px ; "
placeholder="0" allowClear showSearch suffix="分钟" @blur="clearNonNumber">
</a-input>
<span style="margin-left: 5px ;" v-if="formParam.teaching !== null">{{ (formParam.teaching / 60
<!-- <span style="margin-left: 5px ;" v-if="formParam.teaching !== null">{{ (formParam.teaching / 60
).toFixed(2) }}小时</span>
<span style="margin-left: 5px ;" v-if="formParam.teaching === null">0.00小时</span>
<span style="margin-left: 5px ;" v-if="formParam.teaching === null">0.00小时</span> -->
</a-form-item>
</a-col>
</a-row>
<!-- 其他信息 -->
<a-row>
<a-col :span="24" style="margin-bottom: 15px;">
<a-col :span="24" style="margin-bottom: 24px;margin-top: 12px;">
<span class="line"></span><span style="font-weight: 600;">其他信息</span>
</a-col>
</a-row>
@@ -194,7 +194,7 @@
} "
>
<a-button class="drabtn" @click="cancelTeacherDialog" >取消</a-button>
<a-button class="drabtn" type="primary" @click="createTeacherDialog" :loading="buttonLoading">保存
<a-button style="margin-right: 20px;" class="drabtn" type="primary" @click="createTeacherDialog" :loading="buttonLoading">保存
</a-button>
</div>
</a-drawer>
@@ -521,7 +521,7 @@ export default {
//修改讲师信息弹窗
const handleModify = (record) => {
state.teacherdialog = true;
state.teacherdialogtitle = '修改信息'
state.teacherdialogtitle = '编辑讲师'
state.id = record.id
state.vf = false
TeacherSystem()
@@ -826,6 +826,9 @@ export default {
};
</script>
<style lang="scss" scoped>
.ant-form-item {
margin-bottom: 12px;
}
::v-deep .ant-upload.ant-upload-select-picture-card {
border-radius: 50% !important;
width: 90px;
@@ -846,7 +849,7 @@ export default {
font-weight: 600;
color: #333333;
line-height: 25px;
// margin-left: 24px;
margin-left: 14px;
}
}
//导出按钮icon

View File

@@ -13,6 +13,11 @@
allowClear v-model:value="searchParam.name"
v-on:keydown.enter="enterPressHadlerSearch"></a-input>
</a-form-item>
<a-form-item class="select">
<a-select style="width: 230px ;margin-bottom:20px" v-model:value="searchParam.supplier" placeholder="请输入供应商" :options="supperList" allowClear
v-on:keydown.enter="enterPressHadlerSearch" showSearch >
</a-select>
</a-form-item>
<a-form-item class="select">
<a-input v-model:value="searchParam.courseName" style="width: 276px; height: 40px; border-radius: 8px"
placeholder="请输入课程名称进行搜索" allowClear showSearch
@@ -341,7 +346,7 @@ import { message } from "ant-design-vue";
import ProjectManager from "@/components/project/ProjectManagerNew";
import ProjectManagerOutTeacher from "@/components/project/ProjectManagerOutTeacher";
import dayjs from "dayjs";
import { getTeacherCourseList, updateInTeacherCourse, getNewInTeacherCourseList, deleteInTeacherCourse, insertInTeacherCourse } from "../../api/Teaching";
import { getTeacherCourseList, updateInTeacherCourse, getNewInTeacherCourseList, deleteInTeacherCourse, insertInTeacherCourse,selectSupplier } from "../../api/Teaching";
// import {getProjSt} from "../../api/indexProjStu";
// import AddTeacher from "../../components/drawers/project/AddTeacher"
export default {
@@ -363,6 +368,7 @@ export default {
state.searchParam = JSON.parse(search)
}
searchSubmit()
getSupplier()
})
const route = useRoute()
const formRef = ref();
@@ -441,6 +447,19 @@ export default {
{ value: 2, label: "路径开课" },
{ value: 3, label: "面授开课" },
])
const supperList = ref([])
const getSupplier = ()=>{
selectSupplier().then(res=>{
if(res.data.code == 200){
supperList.value = res.data.data.map(item=>{
return {
value:item,
label:item
}
})
}
})
}
const AuthenticationStatusList = ref([
{ value: '', label: "全部" },
{ value: 0, label: "未开课" },
@@ -467,12 +486,21 @@ export default {
ellipsis: true, align: "center",
width: 150,
},
{
title: '供应商',
dataIndex: 'supplier',
key: 'supplier',
ellipsis: true, align: "center",
width: 150,
customRender: ({text})=> text||'-'
},
{
title: '手机号码 ',
dataIndex: 'mobile',
key: 'mobile',
ellipsis: true, align: "center",
width: 150,
customRender: ({text}) => text||'-'
},
{
title: '课程类型 ',
@@ -663,6 +691,7 @@ export default {
systemId: null,
endTime: null,
beginTime: null,
supplier: null,
};
getTableDate();
};
@@ -914,6 +943,8 @@ const sendName=()=>{
AddressList,
OnTheJobStatusList,
AuthenticationStatusList,
supperList,
getSupplier,
searchSubmit,
searchReset,
columns,

View File

@@ -949,7 +949,7 @@ export default {
//修改讲师信息弹窗
const handleModify = (record) => {
state.teacherdialog = true;
state.teacherdialogtitle = '修改信息'
state.teacherdialogtitle = '编辑讲师'
state.id = record.id
state.vf = false
TeacherSystem()

View File

@@ -789,9 +789,9 @@ export default {
<div>
{value.record.createdFee == 0 || value.record.createdFee == 1
? {
"0": "",
"1": "",
}[value.record.feeCreated + ""] || ""
"0": "未提交",
"1": "已提交",
}[value.record.createdFee + ""] || ""
: "-"}
</div>
)

View File

@@ -1,6 +1,8 @@
<template>
<a-drawer :visible="visible" placement="right" :closable="false" :maskClosable="false"
width="60%" :title="false">
<div class="appedit">
<div class="header">
<div class="header" style="margin-top: -24px;">
<div class="headerTitle">编辑讲师费审批</div>
<img
style="width: 29px; height: 29px; cursor: pointer"
@@ -303,6 +305,7 @@
</div>
</div>
</a-modal>
</a-drawer>
</template>
<script lang="jsx">
@@ -318,7 +321,17 @@ export default {
components: {
SearchTeacher,
},
setup () {
props: {
visible: {
type: Boolean,
default: false,
},
id: {
type: String,
default: "",
},
},
setup (props,emits) {
const router = useRouter()
const route = useRoute()
const state = reactive({
@@ -331,7 +344,7 @@ export default {
startTime: null,
endTime: null,
},
paramsId: route.query.id,
paramsId: props.id,
copyName: null,
modalVisible: false,
tSystemNames:{
@@ -368,12 +381,17 @@ export default {
dataList: [],
loading: false,
})
onMounted(()=>{
watch(()=>props.visible, (val) => {
if(val){
queryById({id: state.paramsId}).then(res=>{
state.formData = res.data.data
})
getTableList()
orgLists()
}
})
onMounted(()=>{
})
const getTableList = () => {
state.loading = true
@@ -431,7 +449,7 @@ export default {
dialog({
content: '确定要重新汇总数据吗?',
ok: () => {
CreateSummaryAgain(route.query.id).then(res=>{
CreateSummaryAgain(props.id).then(res=>{
queryById({id: state.paramsId}).then(res=>{
state.formData = res.data.data
})
@@ -617,18 +635,22 @@ export default {
payableExpense: [{ required: true, message: '',log:'应发费用不能为空' }],
}
const closeDrawer = () => {
reset()
router.push({
path: '/lecturerfeemanagement',
query:{activeKey:true}
})
state.params.userNoName = null
state.params.startTime = null
state.params.endTime = null
state.dateValue = []
emits.emit('update:visible',false)
// router.push({
// path: '/lecturerfeemanagement',
// query:{activeKey:true}
// })
}
const paramsDrawer = () => {
dialog({
content: '请仔细核对讲师费信息,确认无误后,将自动进入(BPM系统)审批流程',
ok: ()=>{
isConfirm({
id: route.query.id,
id: props.id,
status: 2
}).then(res=>{
if(res.data.code == 200){
@@ -689,7 +711,7 @@ export default {
content: '确定要移除此条数据吗?',
ok: () => {
withdrawRecord({
billId: route.query.id,
billId: props.id,
ids: [record.id]
}).then(res=>{
message.success('移除成功')
@@ -1055,8 +1077,8 @@ export default {
flex-direction: column;
.header {
padding: 0px 32px;
height: 73px;
padding: 0px 15px;
height: 68px;
border-bottom: 1px solid #e8e8e8;
display: flex;
justify-content: space-between;
@@ -1100,12 +1122,18 @@ export default {
}
}
.table{
// padding-bottom: 70px;
padding-bottom: 70px;
}
}
}
.btnn {
position: absolute;
bottom: 0;
width: 100%;
left: -6px;
z-index: 9;
background: #fff;
padding: 0px 32px;
min-height: 70px;
border-top: 1px solid #e6e6e6;

View File

@@ -225,6 +225,7 @@
</a-modal>
</div>
<!-- <div> <Upload/> </div> -->
<LecturerAppEdit v-model:visible="editTeacherDialog" :id="editId" ></LecturerAppEdit>
</div>
</template>
<script lang="jsx">
@@ -247,6 +248,7 @@
// lecturerFeeManagement
// import {getProjSt} from "../../api/indexProjStu";
// import AddTeacher from "../../components/drawers/project/AddTeacher"
import LecturerAppEdit from "./LecturerAPPEdit"
export default {
name: "LecturerApproval",
components: {
@@ -256,22 +258,25 @@
DownloadOutlined,//图标-导入
FolderAddOutlined,//图标--新增
ProjectManager,
LecturerAppEdit,
},
setup(props,emit) {
watch(()=>props.key,(val)=>{
console.log(val,'valllllll')
})
onMounted(()=>{
const search = sessionStorage.getItem('searchApprlval')
console.log(search,'search')
if(search){
state.searchParam = JSON.parse(search)
state.searchdate = state.searchParam.searchdate
}
// const search = sessionStorage.getItem('searchApprlval')
// console.log(search,'search')
// if(search){
// state.searchParam = JSON.parse(search)
// state.searchdate = state.searchParam.searchdate
// }
getTableDate()
})
const router = useRouter()
const state = reactive({
editId: null,
editTeacherDialog: false,
tableDataExamineLoading: false,
tableDataExamineTwo: [],
tableDataParams:{
@@ -514,7 +519,7 @@
const searchSubmit = () => {
state.searchParam.pageNo = 1;
getTableDate();
sessionStorage.removeItem('searchApprlval')
// sessionStorage.removeItem('searchApprlval')
};
//重置
const searchReset = () => {
@@ -534,7 +539,7 @@
pageSize: 10 ,
};
getTableDate();
sessionStorage.removeItem('searchApprlval')
// sessionStorage.removeItem('searchApprlval')
};
// //修改时间
// function searchTimeChange(time, timeStr) {
@@ -627,14 +632,16 @@
}
}
const goDdit = (record) => {
state.searchParam.searchdate = state.searchdate
sessionStorage.setItem('searchApprlval', JSON.stringify(state.searchParam))
router.push({
path:'/LecturerAppEdit',
query:{
id: record.id
}
})
state.editTeacherDialog = true
state.editId = record.id
// state.searchParam.searchdate = state.searchdate
// sessionStorage.setItem('searchApprlval', JSON.stringify(state.searchParam))
// router.push({
// path:'/LecturerAppEdit',
// query:{
// id: record.id
// }
// })
}
//表格内查看数据操作
const handleLook = (record) => {