细节调整

This commit is contained in:
wangxuemei
2024-09-10 14:37:22 +08:00
parent a881058e44
commit 1b0d87221f
10 changed files with 5268 additions and 925 deletions

View File

@@ -1,4 +1,5 @@
import http from "./config";
import {getCookieForName} from "@/api/method";
//列表查询内部讲师授课记录
export const getNewInTeacherCourseList = (obj) => http.post('/admin/teacher/getNewInTeacherCourseList', obj)
//内部讲师授课记录详情
@@ -25,4 +26,9 @@ export const getOuterTeacherCourseDetail = (obj) => http.post(`/admin/teacher/ge
//新增外部授课记录
export const insertOutTeaherCourse = (obj) => http.post('/admin/teacher/insertOutTeaherCourse', obj)
//讲师费发放情况
export const getCharges = (obj) => http.post('/teacher/fee/getCharges', obj)
export const getCharges = (obj) => http.post('/admin/teacher/fee/getCharges', obj)
//上传组件
export const teacherUpload = (data) =>
http.post("/admin/teacher/teacherUpload", data, {
headers: { "Content-Type": "multipart/form-data",token:getCookieForName("token") },
});

View File

@@ -1,6 +1,6 @@
import http from "./config";
// 获取讲师费列表
export const getTeacherFeeList = (params) => http.get('/teacher/fee/getTeacherFeeList', {params})
export const getTeacherFeeList = (obj) => http.post('/teacher/fee/getTeacherFeeList',obj)
//获取讲师费详情
export const getTeacherFeeDetail= (obj) => http.post('/teacher/fee/getTeacherFeeDetail',obj)
//添加讲师费

View File

@@ -109,7 +109,7 @@
];
}
if (
n.indexOf("/insidelecturer") !== -1
n.indexOf("/lecturerlist") !== -1
) {
state.list = [
{
@@ -117,51 +117,23 @@
href: "",
},
{
name: "内部讲师",
name: "讲师列表",
href: "",
},
];
}
if (
n.indexOf("/externallecturer") !== -1
n.indexOf("/teachingrecord") !== -1
) {
state.list = [
{
name: "讲师管理",
href: "",
},
{
name: "外部讲师",
href: "",
},
];
}
if (
n.indexOf("/insideteaching") !== -1
) {
state.list = [
{
name: "授课记录",
href: "",
},
{
name: "内部授课",
href: "",
},
];
}
if (
n.indexOf("/externalteaching") !== -1
) {
state.list = [
{
name: "授课记录",
href: "",
},
{
name: "外部授课",
href: "",
},
];
}
if (
@@ -169,7 +141,7 @@
) {
state.list = [
{
name: "讲师",
name: "讲师管理",
href: "",
},
{
@@ -177,12 +149,13 @@
href: "",
},
];
}if (
}
if (
n.indexOf("/lecturerfeestatistics") !== -1
) {
state.list = [
{
name: "讲师",
name: "讲师管理",
href: "",
},
{
@@ -191,6 +164,33 @@
},
];
}
if (
n.indexOf("/organization") !== -1
) {
state.list = [
{
name: "讲师管理",
href: "",
},
{
name: "归属组织管理",
href: "",
},
];
}if (
n.indexOf("/lecturerSystem") !== -1
) {
state.list = [
{
name: "讲师管理",
href: "",
},
{
name: "讲师体系管理",
href: "",
},
];
}
if (
n.indexOf("/projectadd") !== -1 ||
n.indexOf("/ProjectAdd") !== -1

View File

@@ -123,7 +123,7 @@
<template #title>修改头像</template>
<a-upload name="avatar" list-type="picture-card" class="avatar-uploader" :show-upload-list="false"
:headers="headers" :before-upload="beforeUpload">
<img class="i_upload_img" v-if="formParam.photo" :src="formParam.photo" alt="avatar" />
<img class="i_upload_img" v-if="formParam.photo" :src="formParam.photo" alt="avatar" />
<div class="i_upload" v-else>
<div class="addimg">
<div class="heng"></div>
@@ -158,11 +158,10 @@
<a-form-item label="讲师组织" name="orgName">
<a-popover>
<template #content>
{{ formParam.orgName }}
{{ formParam.neworgName }}
{{ formParam.orgName }}.
</template>
<a-input disabled v-model:value="formParam.neworgName" class="draitem"
<a-input disabled v-model:value="formParam.orgName" class="draitem"
placeholder="自动带出讲师的组织,展示主要部分,鼠标浮上去展示所有" allowClear showSearch>
</a-input>
</a-popover>
@@ -261,7 +260,8 @@
<a-button type="primary">上传导入文件</a-button>
</a-upload>
</a-form-item>
<a-form-item style="color: #999999;" v-for="(item, index) in filesList">{{ item.name }}</a-form-item>
<a-form-item>{{ formParam.filesList }}</a-form-item>
<!-- <a-form-item style="color: #999999;" v-for="(item, index) in formParam.filesList">{{ item }}</a-form-item> -->
<span></span>
</a-form>
<div class="del_btnbox">
@@ -540,7 +540,8 @@ import SearchTeacher from "@/components/project/SearchTeacher";
import { message } from "ant-design-vue";
import { useRouter } from "vue-router";
import { getTeacherSystemList, getTeacherList, getPayRollPlace, getLevel, insertTeacher, deleteInTeacher, updateInTeacher, getTeacherById, updateTeacherState } from "../../api/Lecturer";
import { fileUp } from "../../api/indexEval";
import { fileUp } from "../../api/indexEval";
import { teacherUpload } from "../../api/Teaching";
import { getCookieForName } from "@/api/method";
// import {getProjSt} from "../../api/indexProjStu";
import AddContent from "../../components/project/AddContent.vue"
@@ -593,7 +594,7 @@ export default {
name: null,
certStatus: 0,//认证状态
defaultteachingTime: '0',
// photo: 'https://p0.itc.cn/q_70/images01/20211013/f45d91616a364d6ea9c42a8db69734aa.png'
photo: 'https://p0.itc.cn/q_70/images01/20211013/f45d91616a364d6ea9c42a8db69734aa.png'
},
searchParam: {
currentPage: 1,
@@ -614,21 +615,7 @@ export default {
},
activeName: 'first'
})
const headers = { token: getCookieForName("token") };
//图片上传
// const photo = ref('')
const beforeUpload = (file) => {
const isJpgOrPng =
file.type === "image/jpg" ||
file.type === "image/jpeg" ||
file.type === "image/png" ||
file.type === "image/bmp" ||
file.type === "image/gif";
if (!isJpgOrPng) {
message.error("仅支持jpg、gif、png、jpeg、bmp格式!");
return false;
}
watch(() => state.formParam.description, (val) => {
watch(() => state.formParam.description, (val) => {
console.log(val, 'description')
})
watch(() => state.formParam.workExperience, (val) => {
@@ -644,6 +631,20 @@ export default {
// state.formParam.neworgName= state.formParam.neworgName[state.formParam.neworgName.length-1]
// }
})
const headers = { token: getCookieForName("token") };
//图片上传
// const photo = ref('')
const beforeUpload = (file) => {
const isJpgOrPng =
file.type === "image/jpg" ||
file.type === "image/jpeg" ||
file.type === "image/png" ||
file.type === "image/bmp" ||
file.type === "image/gif";
if (!isJpgOrPng) {
message.error("仅支持jpg、gif、png、jpeg、bmp格式!");
return false;
}
let isLt1M = file.size < 500000;
console.log(file.size, isLt1M)
if (!isLt1M) {
@@ -667,8 +668,6 @@ export default {
};
//附件上传
const beforeUpload2 = (file) => {
console.log(6765555);
console.log(file);
const fileType = [
"pdf",
];
@@ -682,15 +681,17 @@ export default {
const formData = new FormData();
formData.append("file", file);
console.log(file);
fileUp(formData).then((res) => {
teacherUpload(formData).then((res) => {
if (res.data.code === 200) {
state.formParam.filesList = [res.data.data];
// state.formParam.filesList = [res.data.data];
state.formParam.filesList = file.name
console.log(state.formParam.filesList);
// state.hasImgName = res.data.data;
}
});
return false;
};
//附件上传交互
const handleupdialog = () => {
state.updialog = true

View File

@@ -77,9 +77,9 @@
</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="内容分类"
<!-- <a-select style="width: 230px" v-model:value="searchParam.sysType1" placeholder="内容分类"
:options="getTeacherExpertiseList" allowClear showSearch>
</a-select>
</a-select> -->
</a-form-item>
<div style="width: 100%;"></div>
<a-form-item class="select" v-if="moreid == 2">
@@ -144,7 +144,7 @@
<a-col :span="12">
<a-form-item label="讲师名称" name="teacher">
<SearchTeacher v-model:value="formParam.teacher" v-model:lable="formParam.orgName"
<SearchTeacher v-model:value="formParam.name" v-model:lable="formParam.orgName"
v-model:newlable="formParam.neworgName"></SearchTeacher>
</a-form-item>
</a-col>
@@ -270,11 +270,11 @@
<span class="line"></span>
<span>讲师信息</span>
<a-descriptions bordered :column="2" :contentStyle="rowCenter" :labelStyle="rowCenter">
<a-descriptions-item label="讲师名称">{{ formParam.teacher }}</a-descriptions-item>
<a-descriptions-item label="讲师名称">{{ formParam.teacherName }}</a-descriptions-item>
<a-descriptions-item label="讲师工号">{{ formParam.userNo }}</a-descriptions-item>
<a-descriptions-item label="讲师组织" :span="2">{{ formParam.departId }}</a-descriptions-item>
<a-descriptions-item label="讲师体系">{{ formParam.systemId }}</a-descriptions-item>
<a-descriptions-item label="讲师级别">{{ formParam.levelId }}</a-descriptions-item>
<a-descriptions-item label="讲师组织" :span="2">{{ formParam.organizationName }}</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.entryType == 0 ? '系统生成' : formParam.entryType == 1 ? '手动录入' : '' }}</a-descriptions-item>
<a-descriptions-item label="课程类型">{{ formParam.type == 1 ? '项目开课' : formParam.type == 2 ? '路径开课' : formParam.type == 3
@@ -287,7 +287,7 @@
<a-descriptions-item label="授课/课程日期 ">{{ formParam.beginTime }}</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.id }}</a-descriptions-item>
<a-descriptions-item label="内容分类 ">{{ formParam.sysType1 }}</a-descriptions-item>
<a-descriptions-item label="备注 ">{{ formParam.remark }}</a-descriptions-item>
</a-descriptions>
<div style="margin-top:20px ;line-height: 24px;" >
@@ -667,8 +667,8 @@ export default {
},
{
title: '内容分类',
dataIndex: 'teaching',
key: 'teaching',
dataIndex: 'sysType1',
key: 'sysType1',
elipsis: true, align: "center",
width: 120,
},
@@ -931,7 +931,7 @@ export default {
// state.userNoid = record.userNo
state.lookTeacherId = record.teacherId
// // alert(record.grade)
TeacherSystem(record)
TeacherSystem1(record)
gettableDatas(record)
// let id = record.userNo
// router.push({ path: '/insideteachingdetail', query: { id } })
@@ -942,16 +942,9 @@ export default {
}
//内部授课详情
const TeacherSystem = (record) => {
// getTeacherCourseList( state.lookTeacherId).then((res) => {
// console.log("内部授课详情", res.data);
// state.formParam= res.data.data
// })
// .catch((err) => {
// console.log("内部授课详情", err);
// });
state.formParam = {
teacherType: '0',
teacher: record.teacher,
teacherName: record.teacherName,
userNo: record.userNo,
departId: record.departId,
systemId: record.systemId,
@@ -969,6 +962,29 @@ export default {
entryType: record.entryType
}
console.log(state.formParam)
}
//内部授课详情
const TeacherSystem1 = (record) => {
state.formParam = {
teacherType: '0',
teacherName: record.teacherName,
userNo: record.userNo,
organizationName: record.organizationName,
systemName: record.systemName,
levelName: record.levelName,
type: record.type,
name: record.name,
status:record.status,
beginTime:record.beginTime,
// ref< moment.Moment >(moment(record.beginTime,'YYYY-MM-DD')),
// record.beginTime,
duration: record.duration,
score: record.score,
studys: record.studys,
remark: record.remark,
entryType: record.entryType
}
console.log(state.formParam)
}
const column = ref([{
title: '基准课酬 ',
@@ -1176,6 +1192,7 @@ export default {
// getStu
LecturerSystemLista,
TeacherSystem,
TeacherSystem1,
getOrganizationLista,
getOrganizationList, searchTimeChange,
cancelTeachingDialog,

View File

@@ -10,10 +10,9 @@
placeholder="请输入工号/讲师姓名进行检索" allowClear showSearch>
</a-input>
--> <div style="width: 276px; height: 40px; border-radius: 8px" >
<ProjectManager v-model:value="searchParam.teacherNo"
v-model:name="searchParam.teacherName"
placeholder="请输入工号/讲师姓名进行检索"
@onChange="managerChange" mode="multiple"></ProjectManager>
<a-input v-model:value="searchParam.teacherNameOrUserNo" style="width: 276px; height: 40px; border-radius: 8px"
placeholder="请输入工号/讲师姓名进行检索" allowClear showSearch>
</a-input>
</div>
</a-form-item>
<a-form-item class="select">
@@ -158,10 +157,8 @@
<a-row :gutter="16">
<a-col :span="12">
<a-form-item label="讲师名称" name="teacher">
<ProjectManager v-model:value="formParam.teacherNo"
v-model:name="formParam.teacherName"
placeholder="请输入工号/讲师姓名进行检索"
@onChange="managerChange" mode="multiple"></ProjectManager>
<SearchTeacher v-model:value="formParam.name" v-model:lable="formParam.orgName"
v-model:newlable="formParam.neworgName"></SearchTeacher>
</a-form-item>
</a-col>
@@ -410,7 +407,7 @@
DownloadOutlined
} from '@ant-design/icons-vue';
import ImportWork from "../../components/project/ImportWork.vue";
import ProjectManager from "@/components/project/ProjectManagerNew"
import SearchTeacher from "@/components/project/SearchTeacher";
import {getTeacherFeeList,getTeacherFeeDetail,addTeacherFee ,updateTeacherFee,updateStatusSubmit,approveTeacherFee,getTrainOrg,getTeacherLevel} from "../../api/lecturerFeeManagement";4
import { getTeacherExpertise,getTeacherSystemList,getLevel,getPayRollPlace,fileUp } from "../../api/Lecturer";
// lecturerFeeManagement
@@ -424,7 +421,7 @@
UploadOutlined,//图标--导出
DownloadOutlined,//图标-导入
FolderAddOutlined,//图标--新增
ProjectManager
SearchTeacher
},
setup() {
const formRef = ref();

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,130 @@
<template>
<a-select
:getPopupContainer="
(triggerNode) => {
return triggerNode.parentNode || document.body;
}
"
v-model:value="managerArray"
:placeholder="placeholder"
:filterOption="false"
:options="isOpen?options:selectOptions"
allowClear
showSearch
:disabled="disabled"
@popupScroll="memberScroll"
@search="searchMember"
:open="isOpen"
@change="change"
@blur="blur"
:show-arrow="false"
style="width: 100%"
>
<template v-if="loading" #notFoundContent>
<a-spin size="small"/>
</template>
</a-select>
</template>
<script setup>
import {computed, defineEmits, defineProps, onMounted, ref, watch} from "vue";
import {useThrottlePage} from "@/api/request";
import { getTeacherList } from "@/api/Lecturer";
const props = defineProps({
value: {
type: String,
default: ''
},
name: {
type: String,
default: ''
},
disabled: Boolean,
placeholder: {
type: String,
default: "请输入搜索关键字",
},
mode: String
})
const selectOptions = ref([])
const managerArray = computed(() => props.value === '' ? null : props.value)
const emit = defineEmits({})
const isOpen = ref(false)
function debounce(func, wait) {
let timeout;
return function(...args) {
clearTimeout(timeout);
timeout = setTimeout(() => func.apply(this, args), wait);
};
}
const memberParam = ref({teacherNameOrUserNo: '', pageNo:1, pageSize: 20})
const userList = ref([])
const loading = ref(false)
const getOutTeacher = () => {
getTeacherList(memberParam.value).then(res=>{
if(res.data.code == 200){
userList.value = res.data.data.records
loading.value = false
}
})
}
const options = computed(() => userList.value.map(e => ({
label: e.name + '(' + e.userNo + ')' + e.organizationName,
value: e.name,
...e,
audienceList: null
})))
watch(props, init)
function init() {
//第一次进来 编辑赋值
// if (props.value && (props.value + '') !== selectOptions.value.map(e => e.value).join(',')) {
// selectOptions.value = (props.value + '').split(',').map((e, i) => ({label: props.name.split(',')[i], value: e}))
// }
}
onMounted(() => {
console.log('onMounted')
init()
getOutTeacher()
})
const memberScroll = ({target: {scrollHeight, scrollTop, clientHeight}}) => {
scrollHeight === (clientHeight + scrollTop) && memberParam.value.pageNo++
};
const debounceObject = debounce(getOutTeacher,1000)
//搜索学员
const searchMember = (keyword) => {
console.log('searchMember', keyword)
loading.value = true
isOpen.value = true
userList.value = []
memberParam.value.pageNo = 1
memberParam.value.teacherNameOrUserNo = keyword
console.log('searchMember', memberParam.value)
debounceObject()
};
function blur() {
isOpen.value = false
memberParam.value.teacherNameOrUserNo = ''
memberParam.value.pageNo = 1
}
function change(e, l) {
memberParam.value.teacherNameOrUserNo = ''
memberParam.value.pageNo = 1
isOpen.value = false
Array.isArray(l) && (selectOptions.value = l)
Array.isArray(selectOptions.value) && emit('onChange', e, l)
emit('update:name', l?.label)
emit('update:value', l?.value)
}
</script>

View File

@@ -56,14 +56,19 @@ shan<!-- 评估管理页面 -->
<!-- 搜索框及按钮 -->
<!-- 表格 -->
<div class="tableBox">
<a-table
<!-- <a-table
style="border: 1px solid #f2f6fe"
:columns="column"
:data-source="data"
:loading="loading"
:scroll="{ x: 1500 }"
:pagination="false"
>
> -->
<a-table :header-cell-style="{ 'text-align': 'center' }" style="border: 1px solid #f2f6fe" :columns="column"
:scroll="{ x: 2100 }"
:data-source="data"
:loading="loading"
:pagination="false">
<template #operation="{ record }">
<a-space style="padding-right: 10px">
<a-button