mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/vue/fe-manage.git
synced 2025-12-16 14:26:45 +08:00
Merge branch 'zcwy-teacher-manage' into master_1202
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)
|
||||
|
||||
@@ -67,16 +67,16 @@
|
||||
<a-progress :percent="uploadpercent" />
|
||||
</div>
|
||||
|
||||
<div class="curloading">
|
||||
<!-- <div class="curloading">
|
||||
<div style="color: #387df7; margin-left: 20px; cursor: pointer">
|
||||
下载失败数据
|
||||
</div>
|
||||
</div>
|
||||
<div class="defeat" style="display: flex; align-items: center">
|
||||
</div> -->
|
||||
<!-- <div class="defeat" style="display: flex; align-items: center">
|
||||
<div style="color: #ff7474">
|
||||
{{ succNum }}条数据导入成功,{{ errNum }}条数据导入失败
|
||||
</div>
|
||||
</div>
|
||||
</div> -->
|
||||
</div>
|
||||
</div>
|
||||
<div class="loadborder" v-if="uploadpercent === 100">
|
||||
@@ -201,14 +201,13 @@ import {getCookieForName} from "@/api/method";
|
||||
}
|
||||
}
|
||||
let isLt1M = info.file.size < 512000000;
|
||||
console.log(info.file.size, isLt1M)
|
||||
if (!isLt1M) {
|
||||
state.fileList = [];
|
||||
state.uploadpercent = -1;
|
||||
message.destroy();
|
||||
message.error("文件大小超出500M,请重新上传");
|
||||
return;
|
||||
}
|
||||
if (!isLt1M) {
|
||||
state.fileList = [];
|
||||
state.uploadpercent = -1;
|
||||
message.destroy();
|
||||
message.error("文件大小超出500M,请重新上传");
|
||||
return;
|
||||
}
|
||||
|
||||
state.addLoading = true;
|
||||
state.uploadpercent = parseInt(info.file.percent);
|
||||
@@ -220,16 +219,25 @@ import {getCookieForName} from "@/api/method";
|
||||
}
|
||||
if (status === "done") {
|
||||
state.fileName = info.file.name;
|
||||
if(!info.file.response.data){
|
||||
message.error(`${info.file.name}上传失败`);
|
||||
if(info.file.response.code == 200){
|
||||
state.succNum = Number(info.file.response.data.success);
|
||||
state.errNum = Number(info.file.response.data.failed);
|
||||
state.downloadErrUrl = info.file.response.data.path;
|
||||
}else{
|
||||
state.uploadErr = true;
|
||||
state.fileList = [];
|
||||
state.uploadpercent = -1
|
||||
message.destroy();
|
||||
message.error(info.file.response.msg);
|
||||
}
|
||||
let i = 0;
|
||||
let timeouts = setTimeout(() => {
|
||||
// clearInterval(timer)
|
||||
state.addLoading = false;
|
||||
message.destroy();
|
||||
message.error(`文件导入超时`);
|
||||
}, 30000);
|
||||
|
||||
// let i = 0;
|
||||
// let timeouts = setTimeout(() => {
|
||||
// // clearInterval(timer)
|
||||
// state.addLoading = false;
|
||||
// message.destroy();
|
||||
// message.error(`文件导入超时`);
|
||||
// }, 30000);
|
||||
// let timer = setInterval(() => {
|
||||
// let uid = info.file.response.data;
|
||||
// api
|
||||
|
||||
@@ -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%;"
|
||||
@@ -74,7 +74,7 @@ import { reactive, toRefs, ref,computed,watch } from "vue"
|
||||
import {getTeacherById} from "../../api/Lecturer";
|
||||
import { getNewInTeacherCourseList } from "../../api/Teaching";
|
||||
// import boe from '@/assets/boe.jpg'
|
||||
import avatar from '@/assets/avatar.png'
|
||||
import avatar from '@/assets/Avatarman.png'
|
||||
import dayjs from "dayjs";
|
||||
export default{
|
||||
name :"LookExternalLecturer",
|
||||
|
||||
@@ -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 />
|
||||
@@ -185,7 +185,7 @@ export default{
|
||||
state.formParam = objA
|
||||
state.formParam.photo = state.formParam.photo ==null ?
|
||||
state.formParam.gender == 1 ? Avatarman :
|
||||
state.formParam.gender ==2 ? Avatarwoman : avatar : state.formParam.photo
|
||||
state.formParam.gender ==2 ? Avatarwoman : Avatarman : (state.formParam.photo.includes('upload')?state.formParam.photo:'/upload'+state.formParam.photo)
|
||||
state.teacherrepromo.userId=res.data.data.id
|
||||
console.log(state.teacherrepromo.id);
|
||||
isOrgNames(state.formParam.orgName)
|
||||
@@ -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 ;
|
||||
|
||||
@@ -30,6 +30,7 @@
|
||||
:disabled="disabled"
|
||||
@change="change"
|
||||
dropdownClassName="treeDropdown"
|
||||
@keydown.enter="keydownEnter"
|
||||
>
|
||||
</a-tree-select>
|
||||
</template>
|
||||
@@ -57,7 +58,11 @@ const { data: options, loading: orgLoading } = useArrayRequest(
|
||||
ORG_LIST,
|
||||
{ keyword: "" },
|
||||
);
|
||||
|
||||
const keydownEnter = (e) => {
|
||||
if(e.keyCode == 13){
|
||||
emit('enter',true)
|
||||
}
|
||||
}
|
||||
watch(props, () => {
|
||||
stuTreeExpandedKeys.value = [];
|
||||
if (labelValue.value.value !== props.value) {
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -1,6 +1,10 @@
|
||||
<template>
|
||||
<div>
|
||||
<a-popover v-model:visible="visible" placement="bottom" trigger="click">
|
||||
<a-popover :getPopupContainer="
|
||||
(triggerNode) => {
|
||||
return triggerNode.parentNode || document.body;
|
||||
}
|
||||
" v-model:visible="visible" placement="bottom" trigger="click">
|
||||
<template #content v-if="!disabled">
|
||||
<div class="pover">
|
||||
<div class="search">
|
||||
@@ -26,13 +30,13 @@
|
||||
</div>
|
||||
<div class="tree">
|
||||
<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" @expand="onExpand" v-model:selectedKeys="stuTreeSelectKeys"
|
||||
v-model:expandedKeys="stuTreeExpandedKeys" :fieldNames="{
|
||||
children: 'treeChildList',
|
||||
key: 'id',
|
||||
title: 'name',
|
||||
value: 'name',
|
||||
}" @select="stuStuOrgSelect" style="max-height: 260px;overflow-y: auto;width: 250px;">
|
||||
}" @select="stuStuOrgSelect" style="height: 300px;max-height: 300px;overflow-y: auto;width: 266px;">
|
||||
<template #smile>
|
||||
<UserOutlined />
|
||||
</template>
|
||||
@@ -143,6 +147,7 @@ const systemName = ref(null)
|
||||
const levelName = ref('')
|
||||
const neworgName = ref('')
|
||||
const teacherId = ref('')
|
||||
const changeValue = ref({})
|
||||
const handleChange = (e,l) => {
|
||||
isOpen.value = false
|
||||
// emit('update:value',e)
|
||||
@@ -157,8 +162,9 @@ const handleChange = (e,l) => {
|
||||
if( l.orgName !==null ){
|
||||
neworgName.value= orgName.value.split('/')
|
||||
neworgName.value= neworgName.value[ neworgName.value.length-1]
|
||||
}
|
||||
emit('tlevel',l)
|
||||
}
|
||||
changeValue.value = l
|
||||
// emit('tlevel',l)
|
||||
};
|
||||
function debounce(func, wait) {
|
||||
let timeout;
|
||||
@@ -259,6 +265,9 @@ const { data: treeData, loading: orgLoading } = useRequest(
|
||||
ORG_LIST,
|
||||
{ keyword: "" },
|
||||
);
|
||||
const onExpand = (expandedKeys, aaa) => {
|
||||
console.log(expandedKeys, aaa,'xixixiiixi')
|
||||
}
|
||||
function onLoadData(treeNode) {
|
||||
teacherById.value = treeNode.id
|
||||
const promises = [];
|
||||
@@ -293,7 +302,12 @@ function onLoadData(treeNode) {
|
||||
});
|
||||
}
|
||||
function stuStuOrgSelect(e, {selected: bool, selectedNodes, node, event}) {
|
||||
console.log(selectedNodes)
|
||||
const index = stuTreeExpandedKeys.value.indexOf(node.id);
|
||||
if (index === -1) {
|
||||
stuTreeExpandedKeys.value.push(node.id);
|
||||
} else {
|
||||
stuTreeExpandedKeys.value.splice(index, 1);
|
||||
}
|
||||
teacherName.value = ''
|
||||
orgName.value = ''
|
||||
orgId.value = ''
|
||||
@@ -302,7 +316,7 @@ function stuStuOrgSelect(e, {selected: bool, selectedNodes, node, event}) {
|
||||
teacherId.value = ''
|
||||
payrollPlaceCode.value = ''
|
||||
payrollPlaceName.value = ''
|
||||
if(selectedNodes[0].isLeaf){
|
||||
if(selectedNodes[0]?.isLeaf){
|
||||
teacherName.value = selectedNodes[0].name
|
||||
orgName.value = selectedNodes[0].orgName
|
||||
orgId.value = selectedNodes[0].departId
|
||||
@@ -323,6 +337,7 @@ watch(()=>visible.value,(val)=>{
|
||||
orgId.value = ''
|
||||
systemName.value = null
|
||||
levelName.value = ''
|
||||
changeValue.value = {}
|
||||
neworgName.value=''
|
||||
selectName.value = null
|
||||
// selectData.value = ''
|
||||
@@ -340,7 +355,8 @@ const notChange = () => {
|
||||
orgName.value = ''
|
||||
orgId.value = ''
|
||||
systemName.value = null
|
||||
levelName.value = ''
|
||||
levelName.value = ''
|
||||
changeValue.value = {}
|
||||
neworgName.value=''
|
||||
teacherId.value = ''
|
||||
loadingChange.value = false
|
||||
@@ -367,7 +383,7 @@ watch(()=>teacherId.value,(val)=>{
|
||||
}
|
||||
}
|
||||
loadingChange.value = false
|
||||
emit('update:system',systemName.value)
|
||||
// emit('update:system',systemName.value)
|
||||
}).catch(err=>{
|
||||
message.error('讲师体系获取失败,请重新选择')
|
||||
loadingChange.value = false
|
||||
@@ -386,6 +402,7 @@ const changeOut = () => {
|
||||
|
||||
// neworgName= neworgName[neworgName.length-1]
|
||||
// }
|
||||
emit('tlevel',changeValue.value)
|
||||
selectData.value = teacherName.value
|
||||
emit('update:value',teacherName.value)
|
||||
emit('update:lable',orgName.value)
|
||||
@@ -401,13 +418,25 @@ const changeOut = () => {
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
::v-deep .ant-popover{
|
||||
width: 300px;
|
||||
hight: 400px;
|
||||
top: 35px !important;
|
||||
left: 0px !important;
|
||||
}
|
||||
.pover{
|
||||
::v-deep .ant-select-selector{
|
||||
height: 30px !important;
|
||||
border-radius: 4px !important;
|
||||
line-height: 30px !important;
|
||||
}
|
||||
.search{
|
||||
margin-top: 10px;
|
||||
}
|
||||
.tree{
|
||||
margin-top: 5px;
|
||||
border: 1px solid rgba(215, 215, 215, 1);
|
||||
border-radius: 4px;
|
||||
}
|
||||
.btn{
|
||||
margin-top: 10px;
|
||||
@@ -418,10 +447,11 @@ const changeOut = () => {
|
||||
height: 25px;
|
||||
color: #FFFFFF;
|
||||
text-align: center;
|
||||
line-height: 25px;
|
||||
// line-height: 25px;
|
||||
cursor: pointer;
|
||||
}
|
||||
.btn1{
|
||||
line-height: 25px;
|
||||
margin-right: 10px;
|
||||
background-color: rgba(170, 170, 170, 1);
|
||||
}
|
||||
|
||||
@@ -6,13 +6,13 @@
|
||||
<a-form layout="inline">
|
||||
<a-form-item class="select">
|
||||
<!-- v-model:value="searchParam.name" -->
|
||||
<a-input v-model:value="searchParam.name" style="width: 276px; height: 40px; border-radius: 8px"
|
||||
<a-input v-model:value="searchParam.name" style="width: 250px; height: 40px; border-radius: 8px"
|
||||
placeholder="请输入讲师姓名/手机号进行检索" allowClear showSearch
|
||||
v-on:keydown.enter="enterPressHadlerSearch">
|
||||
</a-input>
|
||||
</a-form-item >
|
||||
<a-form-item class="select">
|
||||
<a-select style="width: 276px" v-model:value="searchParam.status" placeholder="账号状态"
|
||||
<a-select style="width: 220px" v-model:value="searchParam.status" placeholder="账号状态"
|
||||
:options="AccountStatusList"
|
||||
v-on:keydown.enter="enterPressHadlerSearch">
|
||||
</a-select>
|
||||
@@ -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"
|
||||
/>
|
||||
@@ -87,7 +87,7 @@
|
||||
<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" title="更换头像" />
|
||||
<img class="i_upload_img" v-else src="../../assets/avatar.png" alt="avatar" title="更换头像" />
|
||||
<img class="i_upload_img" v-else src="../../assets/Avatarman.png" alt="avatar" title="更换头像" />
|
||||
<!-- <div class="i_upload" v-else>
|
||||
<div class="addimg">
|
||||
<div class="heng"></div>
|
||||
@@ -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
|
||||
|
||||
@@ -9,33 +9,38 @@
|
||||
<!-- <a-input v-model:value="searchParam.userNo" style="width: 276px; height: 40px; border-radius: 8px"
|
||||
placeholder="请输入工号/讲师姓名进行检索" allowClear showSearch>
|
||||
</a-input> -->
|
||||
<a-input style="width: 276px; height: 40px; border-radius: 8px" placeholder="请输入讲师姓名/手机号进行检索" showSearch
|
||||
<a-input style="width: 235px; height: 40px; border-radius: 8px" placeholder="请输入姓名/手机号进行检索" showSearch
|
||||
allowClear v-model:value="searchParam.name"
|
||||
v-on:keydown.enter="enterPressHadlerSearch"></a-input>
|
||||
</a-form-item>
|
||||
<a-form-item class="select">
|
||||
<a-input v-model:value="searchParam.courseName" style="width: 276px; height: 40px; border-radius: 8px"
|
||||
<a-select style="width: 235px ;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: 235px; height: 40px; border-radius: 8px"
|
||||
placeholder="请输入课程名称进行搜索" allowClear showSearch
|
||||
v-on:keydown.enter="enterPressHadlerSearch">
|
||||
</a-input>
|
||||
</a-form-item>
|
||||
<a-form-item class="select ">
|
||||
<div class="select addTimeBox">
|
||||
<div class="addTime">授课日期:</div>
|
||||
<a-range-picker v-model:value="searchdate" style="width: 420px" format="YYYY-MM-DD" valueFormat="YYYY-MM-DD"
|
||||
separator="至" :placeholder="[' 开始时间', ' 结束时间']
|
||||
<!-- <div class="select addTimeBox">
|
||||
<div class="addTime">授课日期:</div> -->
|
||||
<a-range-picker v-model:value="searchdate" style="width: 340px !important;" format="YYYY-MM-DD" valueFormat="YYYY-MM-DD"
|
||||
separator="至" :placeholder="['授课日期开始时间', '授课日期结束时间']
|
||||
"
|
||||
v-on:keydown.enter="enterPressHadlerSearch" />
|
||||
</div>
|
||||
<!-- </div> -->
|
||||
</a-form-item>
|
||||
<a-form-item class="select">
|
||||
<a-select style="width: 230px ;margin-bottom:20px" v-model:value="searchParam.createFrom" placeholder="录入类型"
|
||||
<a-select style="width: 200px ;margin-bottom:20px" v-model:value="searchParam.createFrom" placeholder="录入类型"
|
||||
:options="entryTypeList" allowClear
|
||||
v-on:keydown.enter="enterPressHadlerSearch">
|
||||
</a-select>
|
||||
</a-form-item>
|
||||
<a-form-item class="select">
|
||||
<a-tree-select style="width: 230px" :fieldNames="{
|
||||
<a-tree-select style="width: 235px" :fieldNames="{
|
||||
children: 'children',
|
||||
label: 'name',
|
||||
value: 'code',
|
||||
@@ -47,7 +52,7 @@
|
||||
</a-tree-select>
|
||||
</a-form-item>
|
||||
<a-form-item class="select">
|
||||
<a-select style="width: 230px" v-model:value="searchParam.courseStatus" placeholder="开课状态"
|
||||
<a-select style="width: 200px" v-model:value="searchParam.courseStatus" placeholder="开课状态"
|
||||
:options="AuthenticationStatusList" allowClear
|
||||
v-on:keydown.enter="enterPressHadlerSearch">
|
||||
</a-select>
|
||||
@@ -193,13 +198,13 @@
|
||||
</a-col>
|
||||
<a-col :span="12">
|
||||
<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="分钟"
|
||||
:maxLength="8" @blur="clearNonNumber">
|
||||
:maxLength="8" @change="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>
|
||||
@@ -216,7 +221,7 @@
|
||||
<a-form-item label="评分" name="score">
|
||||
<!-- <a-input class="draitem" v-model:value="formParam.score" @blur="clearscoreNumber" placeholder="" allowClear showSearch>
|
||||
</a-input> -->
|
||||
<a-input-number v-model:value="formParam.score" :precision="2" :min="0" :max="10"
|
||||
<a-input-number v-model:value="formParam.score" :precision="2" :min="0" :max="100"
|
||||
style="width:100%; height: 40px; border-radius: 8px ; " />
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
@@ -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();
|
||||
@@ -392,7 +398,8 @@ export default {
|
||||
teaching: null,
|
||||
teachingDate: null,
|
||||
teacherId:null,
|
||||
mobile:null
|
||||
mobile:null,
|
||||
score: 0
|
||||
},
|
||||
searchdate: undefined, //选择时间
|
||||
searchParam: {
|
||||
@@ -441,6 +448,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 +487,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 +692,7 @@ export default {
|
||||
systemId: null,
|
||||
endTime: null,
|
||||
beginTime: null,
|
||||
supplier: null,
|
||||
};
|
||||
getTableDate();
|
||||
};
|
||||
@@ -729,7 +759,7 @@ export default {
|
||||
if(state.formParam.studys==0){
|
||||
state.formParam.studys = null
|
||||
}
|
||||
if(state.formParam.score){
|
||||
if(state.formParam.score||state.formParam.score==0){
|
||||
state.formParam.score = String(state.formParam.score)
|
||||
}else{
|
||||
state.formParam.score = null
|
||||
@@ -807,7 +837,7 @@ export default {
|
||||
name: null,
|
||||
type: null,
|
||||
teaching: null,
|
||||
score: null,
|
||||
score: 0,
|
||||
remark: null,
|
||||
teachingDate: null,
|
||||
teacherId:null
|
||||
@@ -914,6 +944,8 @@ const sendName=()=>{
|
||||
AddressList,
|
||||
OnTheJobStatusList,
|
||||
AuthenticationStatusList,
|
||||
supperList,
|
||||
getSupplier,
|
||||
searchSubmit,
|
||||
searchReset,
|
||||
columns,
|
||||
|
||||
@@ -6,30 +6,30 @@
|
||||
<a-form layout="inline">
|
||||
<a-form-item class="select">
|
||||
<!-- v-model:value="searchParam.name" -->
|
||||
<a-input v-model:value="searchParam.name" style="width: 276px; height: 40px; border-radius: 8px"
|
||||
<a-input v-model:value="searchParam.name" style="width: 235px; height: 40px; border-radius: 8px"
|
||||
placeholder="请输入工号/讲师姓名进行检索" allowClear showSearch @pressEnter="searchSubmit">
|
||||
</a-input>
|
||||
</a-form-item>
|
||||
<a-form-item class="select">
|
||||
<a-select style="width: 276px" placeholder="请选择讲师体系" v-model:value="searchParam.tSystemId" allowClear
|
||||
:options="LecturerSystemList">
|
||||
<a-select style="width: 235px" placeholder="请选择讲师体系" v-model:value="searchParam.tSystemId" allowClear
|
||||
:options="LecturerSystemList" @keydown.enter="enterPressHadlerSearch">
|
||||
</a-select>
|
||||
</a-form-item>
|
||||
<!-- <div @click="handlesearchlevel"> -->
|
||||
<a-form-item class="select" >
|
||||
<a-select style="width: 200px" v-model:value="searchParam.tLevelName" placeholder="请选择讲师级别" allowClear
|
||||
:options="getLevelList" >
|
||||
:options="getLevelList" @keydown.enter="enterPressHadlerSearch" >
|
||||
<!-- :disabled="getLevelList.length !== 0 ? false : true" 禁用状态 -->
|
||||
</a-select>
|
||||
</a-form-item>
|
||||
<a-form-item class="select">
|
||||
<a-select style="width: 200px ;margin-bottom:20px" v-model:value="searchParam.waitStatus" placeholder="在职状态"
|
||||
:options="OnTheJobStatusList" allowClear>
|
||||
<a-select style="width: 170px ;margin-bottom:20px" v-model:value="searchParam.waitStatus" placeholder="在职状态"
|
||||
:options="OnTheJobStatusList" @keydown.enter="enterPressHadlerSearch" allowClear>
|
||||
</a-select>
|
||||
</a-form-item>
|
||||
<a-form-item class="select">
|
||||
<a-select style="width: 200px ;" v-model:value="searchParam.certStatus" placeholder="认证状态" allowClear
|
||||
:options="AuthenticationStatusList">
|
||||
<a-select style="width: 170px ;" v-model:value="searchParam.certStatus" placeholder="认证状态" allowClear
|
||||
:options="AuthenticationStatusList" @keydown.enter="enterPressHadlerSearch">
|
||||
</a-select>
|
||||
</a-form-item>
|
||||
<a-form-item class="select">
|
||||
@@ -115,10 +115,10 @@
|
||||
<!-- 弹窗组件 -->
|
||||
<a-drawer v-model:visible="teacherdialog" placement="right" :closable="false" :maskClosable="false"
|
||||
width="700" :title="false">
|
||||
<div class="headers" style="margin-top:-24px;">
|
||||
<div class="headers" style="margin-top:-24px;margin-left: -25px;width: 110%;">
|
||||
<div class="headerTitle" style="margin-left: 14px;">{{ 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"
|
||||
/>
|
||||
@@ -127,7 +127,7 @@
|
||||
<a-form :model="formParam" :rules="rules" layout="vertical" ref="formRef">
|
||||
<a-row>
|
||||
<a-col :span="24">
|
||||
<span class="line"></span><span style="color:#333333;font-weight: 600;">基本信息</span>
|
||||
<span class="line"></span><span style="color:#333333;font-weight: 600;font-size:16px;">基本信息</span>
|
||||
</a-col>
|
||||
</a-row>
|
||||
<a-row :gutter="16">
|
||||
@@ -139,7 +139,7 @@
|
||||
<img class="i_upload_img" v-if="formParam.photo" :src="formParam.photo" alt="avatar" title="更换头像" />
|
||||
<img class="i_upload_img" v-else-if="formParam.gender==1" src="../../assets/Avatarman.png" alt="avatar" title="更换头像" />
|
||||
<img class="i_upload_img" v-else-if="formParam.gender==2" src="../../assets/Avatarwoman.png" alt="avatar" title="更换头像" />
|
||||
<img class="i_upload_img" v-else src="../../assets/avatar.png" alt="avatar" title="更换头像" />
|
||||
<img class="i_upload_img" v-else src="../../assets/Avatarman.png" alt="avatar" title="更换头像" />
|
||||
<!-- <div class="i_upload" v-else>
|
||||
<div class="addimg">
|
||||
<div class="heng"></div>
|
||||
@@ -198,13 +198,13 @@
|
||||
<a-row :gutter="16">
|
||||
<a-col :span="24">
|
||||
<a-form-item label="初始授课时长" name="defaultTeachingTime">
|
||||
<a-input v-model:value="formParam.defaultTeachingTime" style="width:80%; height: 40px; border-radius: 8px; "
|
||||
<a-input v-model:value="formParam.defaultTeachingTime" style="width:100%; height: 40px; border-radius: 8px; "
|
||||
:maxLength="8"
|
||||
@change="clearNonNumber" placeholder="请输入初始授课时长" allowClear suffix="分钟">
|
||||
</a-input>
|
||||
<span style="margin-left: 5px ;" v-if="formParam.defaultTeachingTime === null">0.00小时</span>
|
||||
<!-- <span style="margin-left: 5px ;" v-if="formParam.defaultTeachingTime === null">0.00小时</span>
|
||||
<span style="margin-left: 5px ;" v-if="formParam.defaultTeachingTime != null">{{
|
||||
(formParam.defaultTeachingTime / 60).toFixed(2) }}小时</span>
|
||||
(formParam.defaultTeachingTime / 60).toFixed(2) }}小时</span> -->
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :span="24">
|
||||
@@ -222,7 +222,7 @@
|
||||
</a-row>
|
||||
<a-row>
|
||||
<a-col :span="24">
|
||||
<span class="line" style="margin-bottom:10px;"></span><span style="color:#333333;font-weight: 600;">其他信息</span>
|
||||
<span class="line" style="margin-bottom:24px;"></span><span style="color:#333333;font-weight: 600;font-size:16px;">其他信息</span>
|
||||
</a-col>
|
||||
</a-row>
|
||||
<a-row :gutter="16">
|
||||
@@ -318,7 +318,7 @@
|
||||
textAlign: 'right',
|
||||
zIndex: 1,
|
||||
display: 'flex',
|
||||
justifyContent: 'center',
|
||||
justifyContent: 'end',
|
||||
}">
|
||||
<a-button class="drabtn" @click="cancelTeacherDialog">取消</a-button>
|
||||
<a-button class="drabtn" type="primary" @click="createTeacherDialog" :loading="buttonLoading">保存
|
||||
@@ -475,7 +475,7 @@ export default {
|
||||
formParam: {
|
||||
name: null,
|
||||
certStatus: 0,//认证状态
|
||||
defaultTeachingTime: null,
|
||||
defaultTeachingTime: 0,
|
||||
teacherType:1,
|
||||
photo: null,
|
||||
gender: 0,
|
||||
@@ -874,6 +874,11 @@ export default {
|
||||
const tableData = ref([
|
||||
|
||||
])
|
||||
const enterPressHadlerSearch = (e) => {
|
||||
if(e.keyCode==13){
|
||||
searchSubmit()
|
||||
}
|
||||
}
|
||||
// 搜索
|
||||
const searchSubmit = () => {
|
||||
state.searchParam.pageNo = 1
|
||||
@@ -944,7 +949,7 @@ export default {
|
||||
//修改讲师信息弹窗
|
||||
const handleModify = (record) => {
|
||||
state.teacherdialog = true;
|
||||
state.teacherdialogtitle = '修改信息'
|
||||
state.teacherdialogtitle = '编辑讲师'
|
||||
state.id = record.id
|
||||
state.vf = false
|
||||
TeacherSystem()
|
||||
@@ -963,6 +968,7 @@ export default {
|
||||
const teacherTlevel = (val) => {
|
||||
console.log(val,'vallll')
|
||||
if(val?.avatar){
|
||||
val.avatar = val.avatar.includes('upload') ? val.avatar : '/upload' + val.avatar
|
||||
state.formParam.photo = val.avatar
|
||||
}
|
||||
state.formParam.gender = val?.gender
|
||||
@@ -1150,7 +1156,7 @@ export default {
|
||||
name: null,
|
||||
newdepartId: null,
|
||||
tlevelId: null,
|
||||
defaultTeachingTime:null,
|
||||
defaultTeachingTime:0,
|
||||
tsystemName: null,
|
||||
certStatus: 0,
|
||||
description: '',
|
||||
@@ -1329,6 +1335,7 @@ export default {
|
||||
// PlaceOfPayList,
|
||||
AccountStatusList,
|
||||
searchSubmit,
|
||||
enterPressHadlerSearch,
|
||||
searchReset,
|
||||
columns,
|
||||
tableData,
|
||||
@@ -1371,6 +1378,9 @@ export default {
|
||||
};
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.ant-form-item{
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
.headers {
|
||||
height: 56px;
|
||||
border-bottom: 1px solid #e8e8e8;
|
||||
@@ -1762,31 +1772,32 @@ export default {
|
||||
}
|
||||
}
|
||||
.add_list{
|
||||
width: 150%;
|
||||
width: 136%;
|
||||
margin-right:20px;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
margin-top: 10px;
|
||||
margin-bottom: 20px;
|
||||
// overflow: auto;
|
||||
.add_item{
|
||||
padding: 0 10px;
|
||||
padding: 5px 15px;
|
||||
color: #096dd9;
|
||||
background: #e6f7ff;
|
||||
border: 1px solid #91d5ff;
|
||||
margin-left: 10px;
|
||||
width: 66px;
|
||||
height: 22px;
|
||||
line-height: 22px;
|
||||
text-align: center;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
// width: 66px;
|
||||
// height: 22px;
|
||||
// line-height: 22px;
|
||||
// text-align: center;
|
||||
// white-space: nowrap;
|
||||
// overflow: hidden;
|
||||
// text-overflow: ellipsis;
|
||||
margin-bottom: 20px;
|
||||
font-size: 12px;
|
||||
}
|
||||
.add_content {
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
cursor: pointer;
|
||||
border-radius: 50%;
|
||||
background-color: #4ea6ff;
|
||||
@@ -2025,10 +2036,10 @@ export default {
|
||||
.line {
|
||||
float: left;
|
||||
width: 3px;
|
||||
height: 17px;
|
||||
height: 16px;
|
||||
background: #4ea6ff;
|
||||
margin-left: -14px;
|
||||
margin-top: 3px;
|
||||
margin-left: -10px;
|
||||
margin-top: 5px;
|
||||
}
|
||||
|
||||
//抽屉功能
|
||||
|
||||
@@ -5,12 +5,12 @@
|
||||
<div class="filter">
|
||||
<a-form layout="inline" style="min-width: 1380px;">
|
||||
<a-form-item class="select">
|
||||
<a-input v-model:value="searchParam.name" style="width: 276px; height: 40px; border-radius: 8px"
|
||||
<a-input v-model:value="searchParam.name" style="width: 235px; height: 40px; border-radius: 8px"
|
||||
placeholder="请输入工号/讲师姓名进行检索" allowClear showSearch v-on:keydown.enter="enterPressHadlerSearch">
|
||||
</a-input>
|
||||
</a-form-item>
|
||||
<a-form-item class="select">
|
||||
<a-input v-model:value="searchParam.courseName" style="width: 276px; height: 40px; border-radius: 8px"
|
||||
<a-input v-model:value="searchParam.courseName" style="width: 235px; height: 40px; border-radius: 8px"
|
||||
placeholder="请输入课程名称进行搜索" allowClear showSearch v-on:keydown.enter="enterPressHadlerSearch">
|
||||
</a-input>
|
||||
</a-form-item>
|
||||
@@ -19,21 +19,21 @@
|
||||
:placeholder="[' 开始时间', ' 结束时间']" @change="searchTimeChange" />
|
||||
</a-form-item> -->
|
||||
<a-form-item class="select ">
|
||||
<div class="select addTimeBox">
|
||||
<div class="addTime">授课日期</div>
|
||||
<a-range-picker v-model:value="searchdate" style="width: 420px" format="YYYY-MM-DD" valueFormat="YYYY-MM-DD"
|
||||
separator="至" :placeholder="[' 开始时间', ' 结束时间']" v-on:keydown.enter="enterPressHadlerSearch" />
|
||||
<!-- <div class="select addTimeBox"> -->
|
||||
<!-- <div class="addTime">授课日期</div> -->
|
||||
<a-range-picker v-model:value="searchdate" style="width: 340px !important;" format="YYYY-MM-DD" valueFormat="YYYY-MM-DD"
|
||||
separator="至" :placeholder="['授课日期开始时间', '授课日期结束时间']" v-on:keydown.enter="enterPressHadlerSearch" />
|
||||
<!-- @change="searchTimeChange" -->
|
||||
</div>
|
||||
<!-- </div> -->
|
||||
</a-form-item>
|
||||
<!-- <div style="width:100%"></div> -->
|
||||
<a-form-item class="select" v-if="moreid == 2">
|
||||
<a-select style="width: 235px ;margin-bottom:20px" v-model:value="searchParam.createFrom" placeholder="录入类型"
|
||||
<a-form-item class="select">
|
||||
<a-select style="width: 200px ;margin-bottom:20px" v-model:value="searchParam.createFrom" placeholder="录入类型"
|
||||
:options="entryTypeList" allowClear v-on:keydown.enter="enterPressHadlerSearch">
|
||||
</a-select>
|
||||
</a-form-item>
|
||||
<a-form-item class="select" v-if="moreid == 2">
|
||||
<a-select style="width: 235px" v-model:value="searchParam.courseStatus" placeholder="开课状态"
|
||||
<a-form-item class="select">
|
||||
<a-select style="width: 200px" v-model:value="searchParam.courseStatus" placeholder="开课状态"
|
||||
:options="AuthenticationStatusList" a llowClear showSearch v-on:keydown.enter="enterPressHadlerSearch">
|
||||
</a-select>
|
||||
</a-form-item>
|
||||
@@ -47,7 +47,7 @@
|
||||
<!-- <a-select style="width: 235px" placeholder="请选择所属组织" v-model:value="searchParam.sourceBelongId"
|
||||
:options="getOrganizationList" allowClear showSearch v-on:keydown.enter="enterPressHadlerSearch">
|
||||
</a-select> -->
|
||||
<OrgClass v-model:value="searchParam.orgId" :placeholder="'请选择讲师组织'"
|
||||
<OrgClass @enter="searchSubmit()" v-model:value="searchParam.orgId" :placeholder="'请选择讲师组织'"
|
||||
style="width: 235px"
|
||||
></OrgClass>
|
||||
</a-form-item>
|
||||
@@ -64,13 +64,13 @@
|
||||
</a-form-item>
|
||||
<!-- <div style="width: 100%;"></div> -->
|
||||
<a-form-item class="select" v-if="moreid == 2">
|
||||
<a-select style="min-width: 235px ; height: auto ;margin-bottom:20px" v-model:value="score" placeholder="请选择评分"
|
||||
<a-select style="min-width: 200px ; height: auto ;margin-bottom:20px" v-model:value="score" placeholder="请选择评分"
|
||||
:options="scoreList" allowClear showSearch mode="multiple" @change="scoreChange"
|
||||
v-on:keydown.enter="enterPressHadlerSearch">
|
||||
</a-select>
|
||||
</a-form-item>
|
||||
<a-form-item class="select" v-if="moreid == 2">
|
||||
<a-select style="width: 235px" v-model:value="searchParam.studys" placeholder="授课人数" :options="studysList"
|
||||
<a-select style="width: 200px" v-model:value="searchParam.studys" placeholder="授课人数" :options="studysList"
|
||||
allowClear showSearch v-on:keydown.enter="enterPressHadlerSearch">
|
||||
</a-select>
|
||||
<!-- <a-input v-model:value="searchParam.name" style="width: 276px; height: 40px; border-radius: 8px"
|
||||
@@ -81,12 +81,12 @@
|
||||
<a-button @click="searchSubmit()" type="primary" class="resetbtn">查询 </a-button>
|
||||
<a-button class="resetbtn " @click="searchReset">重置</a-button>
|
||||
<div v-if="moreid == 1">
|
||||
<a-button style="line-height:32px;" @click="handlemoreid()" class="moreidbtn" type="text"> 展开
|
||||
<a-button style="line-height:40px;" @click="handlemoreid()" class="moreidbtn" type="text"> 展开
|
||||
<DownOutlined />
|
||||
</a-button>
|
||||
</div>
|
||||
<div v-if="moreid == 2">
|
||||
<a-button style="line-height:32px;" @click="handlemoreid()" class="moreidbtn"> 收起
|
||||
<a-button style="line-height:40px;" @click="handlemoreid()" class="moreidbtn"> 收起
|
||||
<UpOutlined />
|
||||
</a-button>
|
||||
</div>
|
||||
@@ -241,19 +241,19 @@
|
||||
|
||||
<a-col :span="12">
|
||||
<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="请输入授课时长" allowClear showSearch suffix="分钟" :maxLength="8" @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-col :span="12">
|
||||
<a-form-item label="评分" name="score">
|
||||
<!-- <a-input class="draitem" v-model:value="formParam.score" @blur="clearscoreNumber" placeholder="" allowClear showSearch>
|
||||
</a-input> -->
|
||||
<a-input-number v-model:value="formParam.score" :precision="2" :min="0" :max="10"
|
||||
<a-input-number v-model:value="formParam.score" :precision="2" :min="0" :max="100"
|
||||
style="width:100%; height: 40px; border-radius: 8px ; " placeholder="请输入评分" />
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
@@ -487,6 +487,7 @@ export default {
|
||||
teachingDate: null,
|
||||
// sourceBelongId: null,
|
||||
sourceBelongFullName: null,
|
||||
score: 0,
|
||||
},
|
||||
startTime: null,
|
||||
searchParam:
|
||||
@@ -789,9 +790,9 @@ export default {
|
||||
<div>
|
||||
{value.record.createdFee == 0 || value.record.createdFee == 1
|
||||
? {
|
||||
"0": "否",
|
||||
"1": "是",
|
||||
}[value.record.feeCreated + ""] || ""
|
||||
"0": "未提交",
|
||||
"1": "已提交",
|
||||
}[value.record.createdFee + ""] || ""
|
||||
: "-"}
|
||||
</div>
|
||||
)
|
||||
@@ -964,7 +965,7 @@ export default {
|
||||
state.formParam.userNo = state.formParam.name?.split('/')[1]
|
||||
state.formParam.tsystemName = state.tSystemNames.systemName
|
||||
state.formParam.tsystemId = state.tSystemNames?.systemId
|
||||
if(state.formParam.score){
|
||||
if(state.formParam.score||state.formParam.score==0){
|
||||
state.formParam.score = String(state.formParam.score)
|
||||
}else{
|
||||
state.formParam.score = null
|
||||
@@ -1049,7 +1050,7 @@ export default {
|
||||
courseName: null,
|
||||
teaching: null,
|
||||
studys: null,
|
||||
score: null,
|
||||
score: 0,
|
||||
type: null,
|
||||
remark: null,
|
||||
// sourceBelongId: null,
|
||||
@@ -1678,7 +1679,8 @@ export default {
|
||||
.moreidbtn {
|
||||
border: none;
|
||||
color: #4ea6ff;
|
||||
width: 80px
|
||||
// width: 80px
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
//小竖线
|
||||
|
||||
@@ -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"
|
||||
@@ -74,7 +76,7 @@
|
||||
</div>
|
||||
<a-drawer v-model:visible="teacherdialog" placement="right" :closable="false" :maskClosable="false" dropdown-style="drawaer"
|
||||
width="60%" :title="false">
|
||||
<div class="headers">
|
||||
<div class="headers" style="margin-top:-24px;">
|
||||
<div class="headerTitle">编辑讲师费</div>
|
||||
<img
|
||||
style="width: 29px; height: 29px; cursor: pointer"
|
||||
@@ -236,7 +238,7 @@
|
||||
<a-col :span="12">
|
||||
<a-form-item label="应发费用" name="payableExpense">
|
||||
<a-input-number :max="99999999" :controls="false" :min="0" :precision="2" v-model:value="formParam.payableExpense" class="draitem"
|
||||
placeholder="请输入应发费用" allowClear>
|
||||
placeholder="请输入应发费用" @change="clearPayableExpense" allowClear>
|
||||
</a-input-number>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
@@ -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,17 +381,22 @@ export default {
|
||||
dataList: [],
|
||||
loading: false,
|
||||
})
|
||||
watch(()=>props.visible, (val) => {
|
||||
if(val){
|
||||
queryById({id: props.id}).then(res=>{
|
||||
state.formData = res.data.data
|
||||
})
|
||||
getTableList()
|
||||
orgLists()
|
||||
}
|
||||
})
|
||||
onMounted(()=>{
|
||||
queryById({id: state.paramsId}).then(res=>{
|
||||
state.formData = res.data.data
|
||||
})
|
||||
getTableList()
|
||||
orgLists()
|
||||
|
||||
})
|
||||
const getTableList = () => {
|
||||
state.loading = true
|
||||
queryExpnseByBillId({
|
||||
billId: state.paramsId,
|
||||
billId: props.id,
|
||||
pageNo: state.params.pageNo,
|
||||
pageSize: state.params.pageSize,
|
||||
name: state.params.userNoName,
|
||||
@@ -431,8 +449,8 @@ export default {
|
||||
dialog({
|
||||
content: '确定要重新汇总数据吗?',
|
||||
ok: () => {
|
||||
CreateSummaryAgain(route.query.id).then(res=>{
|
||||
queryById({id: state.paramsId}).then(res=>{
|
||||
CreateSummaryAgain(props.id).then(res=>{
|
||||
queryById({id: props.id}).then(res=>{
|
||||
state.formData = res.data.data
|
||||
})
|
||||
search();
|
||||
@@ -451,11 +469,17 @@ export default {
|
||||
message.error('复制失败,请重新尝试')
|
||||
});
|
||||
}
|
||||
const clearPayableExpense = () => {
|
||||
state.formParam.payableExpense == 0 && (state.formParam.payableExpense = null);
|
||||
state.formParam.payableExpense && (state.formParam.payableExpense = String(state.formParam.payableExpense))
|
||||
}
|
||||
const clearlevelPayNumber = () => {
|
||||
// state.formParam.levelPay = state.formParam?.levelPay.replace(/\D/g, '');
|
||||
// state.formParam.expense = state.formParam?.levelPay*state.formParam?.teachingTime
|
||||
state.formParam.levelPay == 0 && (state.formParam.levelPay = null);
|
||||
state.formParam.levelPay&&state.formParam.teachingTime && (state.formParam.expense = (state.formParam.levelPay*(state.formParam.teachingTime/60)).toFixed(2))
|
||||
state.formParam.levelPay&&state.formParam.teachingTime && (state.formParam.payableExpense = (state.formParam.levelPay*(state.formParam.teachingTime/60)).toFixed(2))
|
||||
state.formParam.levelPay&&(state.formParam.levelPay=String(state.formParam.levelPay))
|
||||
}
|
||||
const clearscoreNumber= () => {
|
||||
state.formParam.score = state.formParam?.score?.replace(/\D/g, '');
|
||||
@@ -469,6 +493,7 @@ export default {
|
||||
state.formParam.teachingTime = state.formParam.teachingTime?.slice(0,8);
|
||||
state.formParam.teachingTime == 0 && (state.formParam.teachingTime = null);
|
||||
state.formParam.teachingTime && state.formParam.levelPay && (state.formParam.expense = (state.formParam.levelPay*(state.formParam.teachingTime/60)).toFixed(2));
|
||||
state.formParam.teachingTime&&state.formParam.levelPay && (state.formParam.payableExpense = (state.formParam.levelPay*(state.formParam.teachingTime/60)).toFixed(2))
|
||||
}
|
||||
const courseTypeList = ref([
|
||||
{ value: '0', label: "在线" },
|
||||
@@ -536,6 +561,9 @@ export default {
|
||||
if(state.formParam.levelPay){
|
||||
state.formParam.levelPay = String(state.formParam.levelPay)
|
||||
}
|
||||
if(state.formParam.payableExpense){
|
||||
state.formParam.payableExpense = String(state.formParam.payableExpense)
|
||||
}
|
||||
const formItemNames = Object.keys(rules);
|
||||
for(let i=0;i<formItemNames.length;i++){
|
||||
const result = await validateField(formItemNames[i]);
|
||||
@@ -604,20 +632,25 @@ export default {
|
||||
score: [{ required: true, message:'',log: ' 评分不能为空' }],
|
||||
levelPay: [{ required: true, message:'',log: '课酬基准 不能为空' }],
|
||||
expense: [{ required: true, message: '',log:'计划费用不能为空' }],
|
||||
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){
|
||||
@@ -678,7 +711,7 @@ export default {
|
||||
content: '确定要移除此条数据吗?',
|
||||
ok: () => {
|
||||
withdrawRecord({
|
||||
billId: route.query.id,
|
||||
billId: props.id,
|
||||
ids: [record.id]
|
||||
}).then(res=>{
|
||||
message.success('移除成功')
|
||||
@@ -863,6 +896,7 @@ export default {
|
||||
formRef,
|
||||
courseTypeList,
|
||||
clearlevelPayNumber,
|
||||
clearPayableExpense,
|
||||
clearscoreNumber,
|
||||
clearstudysNumber,
|
||||
clearNonNumber,
|
||||
@@ -894,7 +928,7 @@ export default {
|
||||
width: 200px;
|
||||
}
|
||||
.headers {
|
||||
height: 73px;
|
||||
height: 57px;
|
||||
border-bottom: 1px solid #e8e8e8;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
@@ -1043,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;
|
||||
@@ -1088,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;
|
||||
|
||||
@@ -5,27 +5,27 @@
|
||||
<div class="filter" >
|
||||
<a-form layout="inline" style="min-width: 1380px;">
|
||||
<a-form-item class="select">
|
||||
<a-select style="width: 276px" v-model:value="searchParam.trainOrgId" placeholder="培训发生组织" allowClear
|
||||
<a-select style="width: 235px" v-model:value="searchParam.trainOrgId" placeholder="培训发生组织" allowClear
|
||||
:options="trainOrglist"
|
||||
v-on:keydown.enter="enterPressHadlerSearch">
|
||||
</a-select>
|
||||
</a-form-item>
|
||||
<a-form-item class="select ">
|
||||
<div class="select addTimeBox">
|
||||
<div class="addTime" >汇总时间:</div>
|
||||
<!-- <div class="select addTimeBox">
|
||||
<div class="addTime" >汇总时间:</div> -->
|
||||
<a-range-picker
|
||||
v-model:value="searchdate"
|
||||
style="width: 420px"
|
||||
style="width: 340px !important;"
|
||||
format="YYYY-MM-DD"
|
||||
valueFormat="YYYY-MM-DD"
|
||||
separator="至"
|
||||
:placeholder="[' 开始时间', ' 结束时间']"
|
||||
:placeholder="['汇总时间开始时间', '汇总时间结束时间']"
|
||||
v-on:keydown.enter="enterPressHadlerSearch"
|
||||
/>
|
||||
</div>
|
||||
<!-- </div> -->
|
||||
</a-form-item>
|
||||
<a-form-item class="select">
|
||||
<a-select style="width: 230px ;margin-bottom:20px" v-model:value="searchParam.status" placeholder="请选择状态" allowClear
|
||||
<a-select style="width: 200px ;margin-bottom:20px" v-model:value="searchParam.status" placeholder="请选择状态" allowClear
|
||||
:options="AuthenticationStatusList"
|
||||
v-on:keydown.enter="enterPressHadlerSearch">
|
||||
</a-select>
|
||||
@@ -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) => {
|
||||
|
||||
@@ -9,8 +9,8 @@
|
||||
<!-- <a-input v-model:value="searchParam.name" style="width: 276px; height: 40px; border-radius: 8px"
|
||||
placeholder="请输入工号/讲师姓名进行检索" allowClear showSearch>
|
||||
</a-input>
|
||||
--> <div style="width: 276px; height: 40px; border-radius: 8px" >
|
||||
<a-input v-model:value="searchParam.name" style="width: 276px; height: 40px; border-radius: 8px"
|
||||
--> <div style="width: 235px; height: 40px; border-radius: 8px" >
|
||||
<a-input v-model:value="searchParam.name" style="width: 235px; height: 40px; border-radius: 8px"
|
||||
placeholder="请输入工号/讲师姓名进行检索" allowClear showSearch
|
||||
v-on:keydown.enter="enterPressHadlerSearch">
|
||||
</a-input>
|
||||
@@ -23,38 +23,38 @@
|
||||
</a-select>
|
||||
</a-form-item>
|
||||
<a-form-item class="select ">
|
||||
<div class="select addTimeBox">
|
||||
<div class="addTime" >授课日期:</div>
|
||||
<!-- <div class="select addTimeBox">
|
||||
<div class="addTime" >授课日期:</div> -->
|
||||
<a-range-picker
|
||||
v-model:value="searchdate"
|
||||
style="width: 420px"
|
||||
style="width: 340px !important;"
|
||||
format="YYYY-MM-DD"
|
||||
valueFormat="YYYY-MM-DD"
|
||||
separator="至"
|
||||
:placeholder="[' 开始时间', ' 结束时间']"
|
||||
:placeholder="['授课日期开始时间', '授课日期结束时间']"
|
||||
v-on:keydown.enter="enterPressHadlerSearch"
|
||||
/>
|
||||
</div>
|
||||
<!-- </div> -->
|
||||
</a-form-item>
|
||||
<a-form-item class="select">
|
||||
<a-select style="width: 235px ;margin-bottom:20px" v-model:value="searchParam.type" placeholder="请选择课程类型" allowClear
|
||||
<a-select style="width: 200px ;margin-bottom:20px" v-model:value="searchParam.type" placeholder="请选择课程类型" allowClear
|
||||
:options="OnTheJobStatusList"
|
||||
v-on:keydown.enter="enterPressHadlerSearch">
|
||||
</a-select>
|
||||
</a-form-item>
|
||||
<a-form-item class="select" >
|
||||
<a-select style="width: 235px ;margin-bottom:20px" v-model:value="searchParam.status" placeholder="请选择状态" allowClear
|
||||
<a-select style="width: 200px ;margin-bottom:20px" v-model:value="searchParam.status" placeholder="请选择状态" allowClear
|
||||
:options="AuthenticationStatusList"
|
||||
v-on:keydown.enter="enterPressHadlerSearch">
|
||||
</a-select>
|
||||
</a-form-item>
|
||||
<a-form-item class="select">
|
||||
<a-form-item class="select" v-if="moreid==2">
|
||||
<a-select style="width: 235px ;margin-bottom:20px" placeholder="请选择讲师体系" v-model:value="searchParam.tSystemId" allowClear
|
||||
:options="lecturerSystemList"
|
||||
v-on:keydown.enter="enterPressHadlerSearch">
|
||||
</a-select>
|
||||
</a-form-item>
|
||||
<a-form-item class="select" >
|
||||
<a-form-item class="select" v-if="moreid==2">
|
||||
<a-select style="width: 235px ;margin-bottom:20px" v-model:value="searchParam.tLevelName" placeholder="请选择讲师级别" allowClear
|
||||
:options="getLevelList"
|
||||
v-on:keydown.enter="enterPressHadlerSearch">
|
||||
@@ -67,16 +67,16 @@
|
||||
<a-button class="resetbtn " @click="searchReset">重置</a-button>
|
||||
|
||||
<!-- 更多筛选-->
|
||||
<!-- <div v-if="moreid == 1">
|
||||
<div v-if="moreid == 1">
|
||||
<a-button @click="handlemoreid()" class="moreidbtn" type="text"> 展开
|
||||
<RightOutlined />
|
||||
<DownOutlined />
|
||||
</a-button>
|
||||
</div>
|
||||
<div v-if="moreid == 2">
|
||||
<a-button @click="handlemoreid()" class="moreidbtn"> 返回
|
||||
<a-button @click="handlemoreid()" class="moreidbtn"> 收起
|
||||
<UpOutlined />
|
||||
</a-button>
|
||||
</div> -->
|
||||
</div>
|
||||
</div>
|
||||
<div style="width:100%"></div>
|
||||
<!-- <a-form-item class="select" v-if="moreid == 2">
|
||||
@@ -266,7 +266,7 @@
|
||||
<a-col :span="12">
|
||||
<a-form-item label="授课/课程日期 :" name="teachingDate">
|
||||
<a-date-picker class="draitem" v-model:value="teachingDate" style="width:100%" :show-time="{ format: 'HH:mm' }" format="YYYY-MM-DD HH:mm" valueFormat="YYYY-MM-DD HH:mm"
|
||||
placeholder="请选择课程日期" />
|
||||
placeholder="请选择课程日期" @select="handleSelect" />
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
</a-row>
|
||||
@@ -295,7 +295,7 @@
|
||||
<a-col :span="12">
|
||||
<a-form-item label="评分" name="score">
|
||||
<a-input-number class="draitem" v-model:value="formParam.score" :defaultValue="null" :max="10" :controls="false" :min="0" :precision="2" placeholder="请输入评分"
|
||||
allowClear >
|
||||
allowClear @change="scoreNumber">
|
||||
</a-input-number>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
@@ -320,7 +320,7 @@
|
||||
<a-col :span="12">
|
||||
<a-form-item label="应发费用" name="payableExpense">
|
||||
<a-input-number :max="99999999" :controls="false" :min="0" :precision="2" v-model:value="formParam.payableExpense" class="draitem"
|
||||
placeholder="请输入应发费用" allowClear>
|
||||
placeholder="请输入应发费用" @change="clearPayableExpense" allowClear>
|
||||
</a-input-number>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
@@ -449,7 +449,7 @@
|
||||
import { message } from "ant-design-vue";
|
||||
import dayjs from "dayjs";
|
||||
import {
|
||||
RightOutlined,
|
||||
DownOutlined,
|
||||
UpOutlined,
|
||||
UploadOutlined,
|
||||
FolderAddOutlined,
|
||||
@@ -470,7 +470,7 @@
|
||||
export default {
|
||||
name: "LecturerFee",
|
||||
components: {
|
||||
RightOutlined, //图标--展开
|
||||
DownOutlined, //图标--展开
|
||||
UpOutlined,//图标--收起
|
||||
UploadOutlined,//图标--导出
|
||||
DownloadOutlined,//图标-导入
|
||||
@@ -693,9 +693,11 @@ getAllLevelList().then((res) => {
|
||||
}
|
||||
else if(state.moreid == 2){
|
||||
state.moreid=1
|
||||
state.searchParam.certStatus=null
|
||||
state.searchParam.salaryName=null
|
||||
state.searchParam.status=null
|
||||
// state.searchParam.certStatus=null
|
||||
// state.searchParam.salaryName=null
|
||||
// state.searchParam.status=null
|
||||
state.searchParam.tSystemId = null
|
||||
state.searchParam.tLevelName = null
|
||||
}
|
||||
}
|
||||
const columnSee = ref([
|
||||
@@ -1068,6 +1070,9 @@ getAllLevelList().then((res) => {
|
||||
if(state.formParam.levelPay){
|
||||
state.formParam.levelPay = String(state.formParam.levelPay)
|
||||
}
|
||||
if(state.formParam.payableExpense){
|
||||
state.formParam.payableExpense = String(state.formParam.payableExpense)
|
||||
}
|
||||
const formItemNames = Object.keys(rules);
|
||||
for(let i=0;i<formItemNames.length;i++){
|
||||
const result = await validateField(formItemNames[i]);
|
||||
@@ -1319,6 +1324,7 @@ getAllLevelList().then((res) => {
|
||||
state.formParam.teachingTime = state.formParam.teachingTime?.slice(0,8);
|
||||
state.formParam.teachingTime == 0 && (state.formParam.teachingTime = null);
|
||||
state.formParam.teachingTime && state.formParam.levelPay && (state.formParam.expense = (state.formParam.levelPay*(state.formParam.teachingTime/60)).toFixed(2));
|
||||
state.formParam.teachingTime && state.formParam.levelPay && (state.formParam.payableExpense = (state.formParam.levelPay*(state.formParam.teachingTime/60)).toFixed(2));
|
||||
}
|
||||
const clearstudysNumber = () => {
|
||||
state.formParam.studys = state.formParam.studys.replace(/\D/g, '');
|
||||
@@ -1334,14 +1340,24 @@ getAllLevelList().then((res) => {
|
||||
state.formParam.payableExpense = state.formParam.payableExpense?.slice(0,8);
|
||||
state.formParam.payableExpense == 0 && (state.formParam.payableExpense = null);
|
||||
}
|
||||
const scoreNumber = () => {
|
||||
state.formParam.score&&(state.formParam.score=String(state.formParam.score))
|
||||
}
|
||||
const clearlevelPayNumber = () => {
|
||||
// state.formParam.levelPay = state.formParam.levelPay?.replace(/\D/g, '');
|
||||
// state.formParam.levelPay = state.formParam.levelPay?.slice(0,8);
|
||||
state.formParam.levelPay == 0 && (state.formParam.levelPay = null);
|
||||
state.formParam.levelPay&&state.formParam.teachingTime && (state.formParam.expense = (state.formParam.levelPay*(state.formParam.teachingTime/60)).toFixed(2))
|
||||
state.formParam.levelPay&&state.formParam.teachingTime && (state.formParam.payableExpense = (state.formParam.levelPay*(state.formParam.teachingTime/60)).toFixed(2))
|
||||
state.formParam.levelPay&&(state.formParam.levelPay=String(state.formParam.levelPay))
|
||||
}
|
||||
const clearPayableExpense = () => {
|
||||
state.formParam.payableExpense == 0 && (state.formParam.payableExpense = null);
|
||||
state.formParam.payableExpense && (state.formParam.payableExpense = String(state.formParam.payableExpense))
|
||||
}
|
||||
watch(()=>state.formParam.levelPay,(val)=>{
|
||||
state.formParam.levelPay&&state.formParam.teachingTime && (state.formParam.expense = (state.formParam.levelPay*(state.formParam.teachingTime/60)).toFixed(2))
|
||||
state.formParam.levelPay&&state.formParam.teachingTime && (state.formParam.payableExpense = (state.formParam.levelPay*(state.formParam.teachingTime/60)).toFixed(2))
|
||||
})
|
||||
const rules = {
|
||||
name: [{ required: true, message:'',log: '讲师不能为空' }],
|
||||
@@ -1359,7 +1375,7 @@ getAllLevelList().then((res) => {
|
||||
score: [{ required: true, message:'',log: ' 评分不能为空' }],
|
||||
levelPay: [{ required: true, message:'',log: '课酬基准不能为空' }],
|
||||
expense: [{ required: true, message: '',log:'计划费用不能为空' }],
|
||||
|
||||
payableExpense: [{ required: true, message: '',log:'应发费用不能为空' }],
|
||||
}
|
||||
|
||||
const handleImport = () => {
|
||||
@@ -1680,6 +1696,8 @@ const column = ref([
|
||||
clearstudysNumber,
|
||||
clearscoreNumber,
|
||||
clearlevelPayNumber,
|
||||
scoreNumber,
|
||||
clearPayableExpense,
|
||||
payExpense,
|
||||
}
|
||||
},
|
||||
@@ -1690,7 +1708,7 @@ const column = ref([
|
||||
width: 410px !important;
|
||||
}
|
||||
.headers {
|
||||
height: 73px;
|
||||
height: 57px;
|
||||
border-bottom: 1px solid #e8e8e8;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
@@ -2005,7 +2023,9 @@ const column = ref([
|
||||
.moreidbtn {
|
||||
border: none;
|
||||
color: #4ea6ff;
|
||||
width: 80px
|
||||
// width: 80px;
|
||||
line-height: 40px;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
//小竖线
|
||||
|
||||
@@ -5,13 +5,13 @@
|
||||
<div class="filter" >
|
||||
<a-form layout="inline">
|
||||
<a-form-item class="select">
|
||||
<a-select style="width: 276px" v-model:value="searchParam.trainOrgId" placeholder="请选择资源归属" allowClear
|
||||
<a-select style="width: 235px" v-model:value="searchParam.trainOrgId" placeholder="请选择资源归属" allowClear
|
||||
:options="TrainOrglist"
|
||||
v-on:keydown.enter="enterPressHadlerSearch"/>
|
||||
</a-form-item>
|
||||
<a-form-item class="select " >
|
||||
<a-date-picker picker="month" style="width: 260px; height: 40px; border-radius: 8px" v-model:value="searchdate"
|
||||
:placeholder="[ '请选择汇总周期']" @change="searchTimeChange"
|
||||
<a-date-picker picker="month" style="width: 235px; height: 40px; border-radius: 8px" v-model:value="searchdate"
|
||||
:placeholder="[ '请选择汇总周期']" @change="searchTimeChange" format="YYYY-MM" valueFormat="YYYY-MM"
|
||||
v-on:keydown.enter="enterPressHadlerSearch" />
|
||||
</a-form-item >
|
||||
<!-- <a-form-item class="select">
|
||||
@@ -303,7 +303,7 @@ export default {
|
||||
const getTableDate = (obj) => {
|
||||
state.tableLoading = true
|
||||
let objA = { ...state.searchParam };
|
||||
objA.summaryDate = state.searchdate ? dayjs(state.searchdate).format("YYYY-MM-DD") : "",
|
||||
objA.summaryDate = state.searchdate ? dayjs(state.searchdate).format("YYYY-MM") : "",
|
||||
console.log(objA)
|
||||
expenseSummaryList(objA)
|
||||
.then((res) => {
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
<div class="filter">
|
||||
<a-form layout="inline" >
|
||||
<a-form-item class="select">
|
||||
<a-input v-model:value="searchParam.name" style="width: 276px; height: 40px; border-radius: 8px"
|
||||
<a-input v-model:value="searchParam.name" style="width: 235px; height: 40px; border-radius: 8px"
|
||||
placeholder="请输入工号/讲师姓名进行检索" allowClear showSearch
|
||||
v-on:keydown.enter="enterPressHadlerSearch">
|
||||
</a-input>
|
||||
@@ -51,7 +51,7 @@
|
||||
:tree-data="sysTypeOptions"
|
||||
v-on:keydown.enter="enterPressHadlerSearch">
|
||||
</a-tree-select> -->
|
||||
<a-select style="width: 230px" placeholder="请选择培训发生组织" v-model:value="searchParam.trainOrgId"
|
||||
<a-select style="width: 235px" placeholder="请选择培训发生组织" v-model:value="searchParam.trainOrgId"
|
||||
:options="getOrganizationList">
|
||||
</a-select>
|
||||
</a-form-item>
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
<a-form layout="inline">
|
||||
<a-form-item class="select">
|
||||
<div>
|
||||
<a-input style="width: 276px; height: 40px; border-radius: 8px" v-model:value="searchParam.name" placeholder="请输入编号/名称进行搜索"
|
||||
<a-input style="width: 235px; height: 40px; border-radius: 8px" v-model:value="searchParam.name" placeholder="请输入编号/名称进行搜索"
|
||||
v-on:keydown.enter="enterPressHadlerSearch" />
|
||||
</div>
|
||||
</a-form-item>
|
||||
@@ -221,7 +221,7 @@
|
||||
>
|
||||
<a-button class="drabtn" @click="cancelTeacherDialog" >取消</a-button>
|
||||
<a-button class="drabtn" type="primary" @click="createTeacherDialog(0)" :loading="buttonLoading">保存</a-button>
|
||||
<a-button class="drabtn" type="primary" @click="createTeacherDialog(1)" :loading="buttonLoading">提交</a-button>
|
||||
<a-button v-if="editParams||editIndex>1" class="drabtn" type="primary" @click="createTeacherDialog(1)" :loading="buttonLoading">提交</a-button>
|
||||
</div>
|
||||
</a-drawer>
|
||||
<AddOrgContent :Addtitle="'选择组织'" v-model:showContent="showContent" v-model:AddContentList="formParam.affiliationOrgList" />
|
||||
@@ -252,6 +252,8 @@ export default{
|
||||
setup() {
|
||||
const formRef = ref();
|
||||
const state = reactive({
|
||||
editParams: true,
|
||||
editIndex: 0,
|
||||
tableDataTotal: 0,
|
||||
vf:true,
|
||||
showContent: false,
|
||||
@@ -476,7 +478,8 @@ const getTableDate = (obj) => {
|
||||
getTableDate();
|
||||
}).catch(err=>{
|
||||
console.log(err,'errr')
|
||||
message.error(err.msg)
|
||||
message.destroy()
|
||||
message.error(err.data.msg)
|
||||
})
|
||||
}
|
||||
})
|
||||
@@ -530,6 +533,9 @@ const getTableDate = (obj) => {
|
||||
watch(()=>state.teacherdialog,(val)=>{
|
||||
if(val){
|
||||
placeData()
|
||||
}else{
|
||||
state.editParams = true
|
||||
state.editIndex = 0
|
||||
}
|
||||
})
|
||||
const addTeacher=()=>{
|
||||
@@ -548,10 +554,16 @@ const getTableDate = (obj) => {
|
||||
const addContentData = () => {
|
||||
state.showContent = true
|
||||
}
|
||||
watch(()=>state.formParam,(val)=>{
|
||||
if(!state.editParams){
|
||||
state.editIndex++
|
||||
}
|
||||
},{deep:true})
|
||||
//修改信息弹窗
|
||||
const handleModify = (record) => {
|
||||
lecturer.getAffiliationById(record.id).then(res=>{
|
||||
console.log(res,'resssss')
|
||||
state.editParams = false
|
||||
state.formParam = res.data.data
|
||||
const actArray = res.data.data.affiliationUserList.filter(item=>item.type == 0)
|
||||
const leveOneArray = res.data.data.affiliationUserList.filter(item=>item.type == 1)
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
<a-input
|
||||
v-model:value="searchParam.name"
|
||||
style="width: 270px; height: 40px; border-radius: 8px"
|
||||
placeholder="请输入项目名称1"
|
||||
placeholder="请输入项目名称"
|
||||
allowClear
|
||||
showSearch
|
||||
>
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
<a-input
|
||||
v-model:value="searchParam.name"
|
||||
style="width: 270px; height: 40px; border-radius: 8px"
|
||||
placeholder="请输入项目名称1"
|
||||
placeholder="请输入项目名称"
|
||||
allowClear
|
||||
showSearch
|
||||
>
|
||||
|
||||
Reference in New Issue
Block a user