mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/vue/fe-manage.git
synced 2025-12-20 08:16:46 +08:00
讲师管理bug
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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()
|
||||
}
|
||||
|
||||
@@ -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%;"
|
||||
|
||||
@@ -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 ;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -949,7 +949,7 @@ export default {
|
||||
//修改讲师信息弹窗
|
||||
const handleModify = (record) => {
|
||||
state.teacherdialog = true;
|
||||
state.teacherdialogtitle = '修改信息'
|
||||
state.teacherdialogtitle = '编辑讲师'
|
||||
state.id = record.id
|
||||
state.vf = false
|
||||
TeacherSystem()
|
||||
|
||||
@@ -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>
|
||||
)
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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) => {
|
||||
|
||||
Reference in New Issue
Block a user