mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/vue/fe-manage.git
synced 2025-12-10 03:16:44 +08:00
Merge branch 'zcwy-teacher-manage' into master_1202
This commit is contained in:
@@ -71,6 +71,8 @@ export const getApprovalResultByApprovalIdList = (approvalId) => http.post(`/adm
|
||||
export const recovery = (id) => http.post(`/admin/affiliation/recovery?id=${id}`)
|
||||
//删除培训发生组织
|
||||
export const affiliationDelById = (id)=>http.post(`/admin/affiliation/delById?id=${id}`)
|
||||
//停用启用培训发生组织
|
||||
export const isEnable = (obj) => http.post(`/admin/affiliation/isEnable`,obj)
|
||||
//撤回培训发生组织
|
||||
export const affiliatIsConfirm = (id) => http.post(`/admin/affiliation/isConfirm?id=${id}`)
|
||||
//讲师费统计详情
|
||||
|
||||
@@ -43,6 +43,8 @@ export const queryTeacherFeeTotalList= (obj) => http.post('/teacher/fee/queryTea
|
||||
export const getPreviousTeacherFee= (obj) => http.post('/teacher/fee/getPreviousTeacherFee',obj)
|
||||
//汇总上月讲师费月度数据
|
||||
export const CreateMonthSummary= (obj) => http.post('/admin/expenseSummary/createMonthSummary',obj)
|
||||
//是否显示重汇按钮
|
||||
export const isShowReimport= () => http.get('/admin/expenseSummary/isAdmin')
|
||||
//讲师费统计列表
|
||||
export const expenseSummaryList= (obj) => http.get('/admin/expenseSummary/list',{params:obj})
|
||||
//提交/撤回
|
||||
|
||||
@@ -295,7 +295,7 @@ import {getCookieForName} from "@/api/method";
|
||||
}
|
||||
};
|
||||
function downTemplate() {
|
||||
window.open(`${process.env.VUE_APP_BASE}/template/${props.template}.xlsx`);
|
||||
window.open(`${process.env.VUE_APP_BOE_API_URL}/upload/template/${props.template}`);
|
||||
}
|
||||
|
||||
return {
|
||||
|
||||
@@ -93,7 +93,7 @@ import * as lecturerApi from "@/api/Lecturer.js";
|
||||
notLists?.value?.some(i=>{
|
||||
if(i.orgId == item.id){
|
||||
item.disabled = true
|
||||
item.name = item.name + '(' + i.orgName + ')'
|
||||
item.name = item.name + '(' + i.affiliationName + ')'
|
||||
return true
|
||||
}
|
||||
})
|
||||
@@ -129,7 +129,7 @@ import * as lecturerApi from "@/api/Lecturer.js";
|
||||
notLists.value.some(i=>{
|
||||
if(i.orgId == item.id){
|
||||
item.disabled = true
|
||||
item.name = item.name + '(' + i.orgName + ')'
|
||||
item.name = item.name + '(' + i.affiliationName + ')'
|
||||
return true
|
||||
}
|
||||
})
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
:closable="false"
|
||||
class="largeDrawerInside"
|
||||
placement="right"
|
||||
width="70%"
|
||||
width="80%"
|
||||
>
|
||||
<div class="drawerMains">
|
||||
<div class="headers" style="margin-top:-24px;">
|
||||
@@ -22,9 +22,9 @@
|
||||
<div class="item">
|
||||
<a-input @pressEnter="searchData(true)" style="border-radius: 8px;width:240px;height: 40px;" v-model:value="nameUserNo" placeholder="请输入工号/讲师名称进行搜索" allowClear />
|
||||
</div>
|
||||
<div class="item">
|
||||
<!-- <div class="item">
|
||||
<a-range-picker format="YYYY-MM-DD" valueFormat="YYYY-MM-DD" style="border-radius: 8px;width:360px;height: 40px;" v-model:value="dateValue" />
|
||||
</div>
|
||||
</div> -->
|
||||
<div class="item">
|
||||
<a-button type="primary" @click="searchData(true)" style="margin-right:20px;border-radius:8px;width: 100px;height: 40px;">搜索</a-button>
|
||||
<a-button type="primary" @click="resetData()" style="border-radius:8px;width: 100px;height: 40px;">重置</a-button>
|
||||
@@ -32,13 +32,15 @@
|
||||
</div>
|
||||
<div class="table" style="padding-bottom:72px;">
|
||||
<a-table
|
||||
ref="drawerContent"
|
||||
:columns="columns"
|
||||
:data-source="searchTrue?searchList:tableData"
|
||||
:data-source="tableData"
|
||||
:pagination="false"
|
||||
:scroll="{ x: 'max-content' }"
|
||||
:scroll="{ x: 'max-content',y:tableData.length? pageHeight : null }"
|
||||
row-key="id"
|
||||
:loading="loading"
|
||||
:row-selection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
|
||||
:custom-row="customRow"
|
||||
>
|
||||
<template #action="{ record }">
|
||||
<div class="action">
|
||||
@@ -71,6 +73,17 @@ const props = defineProps({
|
||||
default: ""
|
||||
}
|
||||
});
|
||||
const drawerContent = ref(null)
|
||||
const customRow = (record) => {
|
||||
return {
|
||||
style:{
|
||||
backgroundColor: searchTrue.value && searchList.value.some(item => item.id === record.id) ? '#a6dff9' : '',
|
||||
},
|
||||
};
|
||||
};
|
||||
const pageHeight = computed(() => {
|
||||
return window.innerHeight - 360
|
||||
});
|
||||
watch(()=>props.visible,(val)=>{
|
||||
if(val){
|
||||
loading.value = true
|
||||
@@ -82,12 +95,15 @@ watch(()=>props.visible,(val)=>{
|
||||
}
|
||||
loading.value = false
|
||||
}).catch(err=>{
|
||||
message.error(err.data.msg)
|
||||
loading.value = false
|
||||
tableData.value = []
|
||||
message.error(err.data.msg)
|
||||
})
|
||||
}else{
|
||||
selectedRowKeys.value = []
|
||||
selectsData.value = []
|
||||
drawerContent.value?.$el.querySelector('.ant-table-body')?.scrollTo({top:0,behavior: 'smooth'})
|
||||
resetData()
|
||||
}
|
||||
})
|
||||
const nameUserNo = ref(null)
|
||||
@@ -100,9 +116,10 @@ const resetData = () => {
|
||||
searchData(false)
|
||||
}
|
||||
const searchData = (val) => {
|
||||
// drawerContent.value.scrollTo({top:200,behavior: 'smooth'})
|
||||
searchTrue.value = val
|
||||
if(!nameUserNo.value&&!dateValue.value){
|
||||
searchList.value = tableData.value;
|
||||
searchList.value = [];
|
||||
return
|
||||
}
|
||||
//搜索 数组expenseList.value 参数名字或者工号:nameUserNo.value 日期:dateValue.value
|
||||
@@ -121,6 +138,11 @@ const searchData = (val) => {
|
||||
return isNameMatch || isDateInRange;
|
||||
});
|
||||
searchList.value = filteredList;
|
||||
let scrollHeight = null
|
||||
filteredList.length && (scrollHeight = tableData.value.findIndex(item => item.id === filteredList[0].id))
|
||||
if(scrollHeight||scrollHeight==0){
|
||||
drawerContent.value?.$el.querySelector('.ant-table-body')?.scrollTo({top:scrollHeight*55,behavior: 'smooth'})
|
||||
}
|
||||
}
|
||||
const loading = ref(false)
|
||||
const selectedRowKeys = ref([])
|
||||
@@ -154,19 +176,30 @@ const columns = [
|
||||
dataIndex: 'name',
|
||||
key: 'name',
|
||||
align: 'center',
|
||||
width:100,
|
||||
},
|
||||
{
|
||||
title: '讲师工号',
|
||||
dataIndex: 'userNo',
|
||||
key: 'userNo',
|
||||
align: 'center',
|
||||
width:100
|
||||
},
|
||||
{
|
||||
title: '课程名称',
|
||||
dataIndex: 'courseName',
|
||||
key: 'courseName',
|
||||
align: 'left',
|
||||
width:160,
|
||||
customCell :() => {return {style: {maxWidth: '200px',overflow: 'hidden',whiteSpace: 'nowrap',textOverflow:'ellipsis',cursor:'pointer'}}},
|
||||
},
|
||||
{
|
||||
title: '所属组织',
|
||||
dataIndex: 'orgName',
|
||||
key: 'orgName',
|
||||
align: 'center',
|
||||
align: 'left',
|
||||
ellipsis: true,
|
||||
width:100,
|
||||
customCell :() => {return {style: {maxWidth: '200px',overflow: 'hidden',whiteSpace: 'nowrap',textOverflow:'ellipsis',cursor:'pointer'}}},
|
||||
},
|
||||
|
||||
@@ -174,13 +207,16 @@ const columns = [
|
||||
title: '讲师体系',
|
||||
dataIndex: 'tsystemName',
|
||||
key: 'tsystemName',
|
||||
align: 'center',
|
||||
align: 'left',
|
||||
width:100,
|
||||
customCell :() => {return {style: {maxWidth: '200px',overflow: 'hidden',whiteSpace: 'nowrap',textOverflow:'ellipsis',cursor:'pointer'}}},
|
||||
},
|
||||
{
|
||||
title: '讲师等级',
|
||||
dataIndex: 'tlevelName',
|
||||
key: 'tlevelName',
|
||||
align: 'center',
|
||||
width:100,
|
||||
customRender: ({ text })=>{
|
||||
return text||'-'
|
||||
}
|
||||
@@ -190,6 +226,7 @@ const columns = [
|
||||
dataIndex: 'payrollPlace',
|
||||
key: 'payrollPlace',
|
||||
align: 'center',
|
||||
width:120,
|
||||
customRender: ({ text })=>{
|
||||
return text||'-'
|
||||
}
|
||||
@@ -200,6 +237,7 @@ const columns = [
|
||||
dataIndex: 'courseType',
|
||||
key: 'courseType',
|
||||
align: 'center',
|
||||
width:120,
|
||||
customRender: ({ text,record })=>{
|
||||
switch (text) {
|
||||
case 0:
|
||||
@@ -217,23 +255,19 @@ const columns = [
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '课程名称',
|
||||
dataIndex: 'courseName',
|
||||
key: 'courseName',
|
||||
align: 'center',
|
||||
},
|
||||
{
|
||||
title: '授课/开发课程日期',
|
||||
dataIndex: 'teachingDate',
|
||||
key: 'teachingDate',
|
||||
align: 'center',
|
||||
width:150
|
||||
},
|
||||
{
|
||||
title: '授课/开发课程时长',
|
||||
dataIndex: 'teachingTime',
|
||||
key: 'teachingTime',
|
||||
align: 'center',
|
||||
width:150,
|
||||
customRender: ({ text,record })=>{
|
||||
return (text/60).toFixed(2)+'小时'
|
||||
}
|
||||
@@ -243,6 +277,7 @@ const columns = [
|
||||
dataIndex: 'studys',
|
||||
key: 'studys',
|
||||
align: 'center',
|
||||
width:100,
|
||||
customRender: ({ text })=>{
|
||||
return text||'0'
|
||||
}
|
||||
@@ -252,21 +287,28 @@ const columns = [
|
||||
dataIndex: 'score',
|
||||
key: 'score',
|
||||
align: 'center',
|
||||
customRender: ({ text })=>{
|
||||
return text||'-'
|
||||
}
|
||||
width:100,
|
||||
customRender: (value) => {
|
||||
return (
|
||||
<div>
|
||||
{value.record.score?Number(value.record.score).toFixed(0)==0?'-':Number(value.record.score).toFixed(0) : '-'}
|
||||
</div>
|
||||
)
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '课酬基准',
|
||||
dataIndex: 'levelPay',
|
||||
key: 'levelPay',
|
||||
align: 'center',
|
||||
width:100
|
||||
},
|
||||
{
|
||||
title: '计划费用',
|
||||
dataIndex: 'expense',
|
||||
key: 'expense',
|
||||
align: 'center',
|
||||
width:100
|
||||
},
|
||||
// {
|
||||
// title: '应发费用',
|
||||
@@ -279,6 +321,7 @@ const columns = [
|
||||
align: 'center',
|
||||
fixed: 'right',
|
||||
width: 100,
|
||||
customCell:()=>{return {style:{background:'#fff'}}},
|
||||
slots: { customRender: "action" },
|
||||
},
|
||||
]
|
||||
@@ -299,13 +342,44 @@ const queryDrawer = () => {
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
|
||||
.ant-table-wrapper{
|
||||
border-right: 1px solid #ecf5ff;
|
||||
}
|
||||
/* 重置表格行的悬停效果 */
|
||||
::v-deep .ant-table-tbody > tr:hover:not(.ant-table-expanded-row):not(.ant-table-row-selected) > td {
|
||||
background: none;
|
||||
}
|
||||
// 选中鼠标划入
|
||||
::v-deep .ant-table-tbody > tr.ant-table-row-selected:hover > td{
|
||||
background: none ;
|
||||
}
|
||||
/* 未选中行的鼠标划入样式 */
|
||||
::v-deep .ant-table-tbody > tr:not(.ant-table-row-selected):hover > td {
|
||||
background: none;
|
||||
}
|
||||
/* 未选中行的鼠标划出样式 */
|
||||
::v-deep .ant-table-tbody > tr:not(.ant-table-row-selected):not(:hover) > td {
|
||||
background: none;
|
||||
}
|
||||
// 选中
|
||||
::v-deep .ant-table-tbody > tr.ant-table-row-selected > td{
|
||||
background: none ;
|
||||
}
|
||||
/* 重置表格行的选中效果 */
|
||||
::v-deep .ant-table-row-selected td {
|
||||
// background: none !important;
|
||||
}
|
||||
::v-deep .ant-table-thead > tr > th {
|
||||
background-color: #eff4fc !important;
|
||||
text-align: center !important;
|
||||
}
|
||||
|
||||
.largeDrawerInside {
|
||||
.drawerMains {
|
||||
min-width: 600px;
|
||||
// margin: 0px 32px 0px 32px;
|
||||
overflow-x: auto;
|
||||
height:100%;
|
||||
overflow: auto;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
padding:24px;
|
||||
@@ -319,6 +393,7 @@ const queryDrawer = () => {
|
||||
margin-bottom: 20px;
|
||||
|
||||
.headerTitle {
|
||||
margin: 24px 0;
|
||||
font-size: 18px;
|
||||
font-weight: 600;
|
||||
color: #333333;
|
||||
@@ -373,7 +448,7 @@ const queryDrawer = () => {
|
||||
}
|
||||
.table{
|
||||
::v-deep .ant-table-cell-fix-right {
|
||||
width: 160px !important;
|
||||
width: 120px !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
:closable="false"
|
||||
class="largeDrawerInside"
|
||||
placement="right"
|
||||
width="64%"
|
||||
width="76%"
|
||||
:zIndex="1001"
|
||||
>
|
||||
<div class="drawerMains">
|
||||
@@ -30,25 +30,27 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="box">
|
||||
<!-- <div class="top">
|
||||
<div class="top">
|
||||
<div class="item">
|
||||
<a-input @pressEnter="searchData(true)" style="border-radius: 8px;width:240px;height: 40px;" v-model:value="nameUserNo" placeholder="请输入工号/讲师名称进行搜索" allowClear />
|
||||
</div>
|
||||
<div class="item">
|
||||
<!-- <div class="item">
|
||||
<a-range-picker format="YYYY-MM-DD" valueFormat="YYYY-MM-DD" style="border-radius: 8px;width:360px;height: 40px;" v-model:value="dateValue" />
|
||||
</div>
|
||||
</div> -->
|
||||
<div class="item">
|
||||
<a-button type="primary" @click="searchData(true)" style="margin-right:20px;border-radius:8px;width: 100px;height: 40px;">搜索</a-button>
|
||||
<a-button type="primary" @click="resetData()" style="border-radius:8px;width: 100px;height: 40px;">重置</a-button>
|
||||
</div>
|
||||
</div> -->
|
||||
</div>
|
||||
<div class="table">
|
||||
<a-table
|
||||
ref="drawerContent"
|
||||
:columns="columns"
|
||||
:data-source="searchTrue?searchList:expenseList"
|
||||
:data-source="expenseList"
|
||||
:pagination="false"
|
||||
:scroll="{ x: 'max-content' }"
|
||||
:scroll="{ x: 'max-content',y:expenseList.length? pageHeight : null }"
|
||||
:loading="loadingData"
|
||||
:custom-row="customRow"
|
||||
>
|
||||
<template #action="{ record,index }">
|
||||
<div class="action">
|
||||
@@ -60,8 +62,8 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="btnn">
|
||||
<button class="btn1" @click="config">确认提交审批</button>
|
||||
<button class="btn1" @click="qureyDrawer">确认至审批中心</button>
|
||||
<button class="btn1" @click="config">提交审批</button>
|
||||
<button class="btn1" @click="qureyDrawer">保存至审批中心</button>
|
||||
<button class="btn2" @click="closeDrawer">取消</button>
|
||||
</div>
|
||||
</div>
|
||||
@@ -174,6 +176,9 @@ const clickItem = (item,i) => {
|
||||
indexList.value = i
|
||||
resetData()
|
||||
}
|
||||
const pageHeight = computed(() => {
|
||||
return window.innerHeight - 450
|
||||
});
|
||||
watch(()=>props.visible,(val)=>{
|
||||
if(val){
|
||||
loadingData.value = true
|
||||
@@ -195,10 +200,14 @@ watch(()=>props.visible,(val)=>{
|
||||
}).catch(()=>{
|
||||
message.error('获取数据失败,请重新尝试')
|
||||
loadingData.value = false
|
||||
forData.value = []
|
||||
expenseList.value = []
|
||||
})
|
||||
}else{
|
||||
nameUserNo.value = null
|
||||
dateValue.value = null
|
||||
indexList.value = 0
|
||||
drawerContent.value?.$el.querySelector('.ant-table-body')?.scrollTo({top:0,behavior: 'smooth'})
|
||||
}
|
||||
})
|
||||
const removeId = (e,i) =>{
|
||||
@@ -218,7 +227,7 @@ const removeId = (e,i) =>{
|
||||
}else{
|
||||
expenseList.value = expenseList.value.filter(item=>item.id !== e.id)
|
||||
}
|
||||
forData.value[indexList.value].summaryTotal = forData.value[indexList.value]?.summaryTotal - e.payableExpense
|
||||
forData.value[indexList.value].summaryTotal = (forData.value[indexList.value]?.summaryTotal - e.expense).toFixed(2)
|
||||
if(!forData.value[indexList.value].expenseList.length){
|
||||
forData.value.splice(indexList.value,1)
|
||||
forData.value.length > 0 && clickItem(forData.value[0],0)
|
||||
@@ -229,10 +238,18 @@ const removeId = (e,i) =>{
|
||||
const nameUserNo = ref(null)
|
||||
const dateValue = ref(null)
|
||||
const searchTrue = ref(false)
|
||||
const drawerContent = ref(null)
|
||||
const customRow = (record) => {
|
||||
return {
|
||||
style:{
|
||||
backgroundColor: searchTrue.value && searchList.value.some(item => item.id === record.id) ? '#a6dff9' : '',
|
||||
}
|
||||
};
|
||||
};
|
||||
const searchData = (val) => {
|
||||
searchTrue.value = val
|
||||
if(!nameUserNo.value&&!dateValue.value){
|
||||
searchList.value = expenseList.value;
|
||||
searchList.value = [];
|
||||
return
|
||||
}
|
||||
//搜索 数组expenseList.value 参数名字或者工号:nameUserNo.value 日期:dateValue.value
|
||||
@@ -251,6 +268,11 @@ const searchData = (val) => {
|
||||
return isNameMatch || isDateInRange;
|
||||
});
|
||||
searchList.value = filteredList;
|
||||
let scrollHeight = null
|
||||
filteredList.length && (scrollHeight = expenseList.value.findIndex(item => item.id === filteredList[0].id))
|
||||
if(scrollHeight||scrollHeight==0){
|
||||
drawerContent.value?.$el.querySelector('.ant-table-body')?.scrollTo({top:scrollHeight*55,behavior: 'smooth'})
|
||||
}
|
||||
}
|
||||
const resetData = () => {
|
||||
nameUserNo.value = null
|
||||
@@ -264,19 +286,30 @@ const columns = [
|
||||
dataIndex: 'name',
|
||||
key: 'name',
|
||||
align: 'center',
|
||||
width:100,
|
||||
},
|
||||
{
|
||||
title: '讲师工号',
|
||||
dataIndex: 'userNo',
|
||||
key: 'userNo',
|
||||
align: 'center',
|
||||
width:100,
|
||||
},
|
||||
{
|
||||
title: '课程名称',
|
||||
dataIndex: 'courseName',
|
||||
key: 'courseName',
|
||||
align: 'left',
|
||||
width:160,
|
||||
customCell :() => {return {style: {maxWidth: '200px',overflow: 'hidden',whiteSpace: 'nowrap',textOverflow:'ellipsis',cursor:'pointer'}}},
|
||||
},
|
||||
{
|
||||
title: '所属组织',
|
||||
dataIndex: 'orgName',
|
||||
key: 'orgName',
|
||||
align: 'center',
|
||||
align: 'left',
|
||||
ellipsis: true,
|
||||
width:100,
|
||||
customCell :() => {return {style: {maxWidth: '200px',overflow: 'hidden',whiteSpace: 'nowrap',textOverflow:'ellipsis',cursor:'pointer'}}},
|
||||
},
|
||||
|
||||
@@ -284,13 +317,16 @@ const columns = [
|
||||
title: '讲师体系',
|
||||
dataIndex: 'tsystemName',
|
||||
key: 'tsystemName',
|
||||
align: 'center',
|
||||
align: 'left',
|
||||
width:100,
|
||||
customCell :() => {return {style: {maxWidth: '200px',overflow: 'hidden',whiteSpace: 'nowrap',textOverflow:'ellipsis',cursor:'pointer'}}},
|
||||
},
|
||||
{
|
||||
title: '讲师等级',
|
||||
dataIndex: 'tlevelName',
|
||||
key: 'tlevelName',
|
||||
align: 'center',
|
||||
width:100,
|
||||
customRender: ({ text })=>{
|
||||
return text||'-'
|
||||
}
|
||||
@@ -300,6 +336,7 @@ const columns = [
|
||||
dataIndex: 'payrollPlace',
|
||||
key: 'payrollPlace',
|
||||
align: 'center',
|
||||
width:120,
|
||||
customRender: ({ text })=>{
|
||||
return text||'-'
|
||||
}
|
||||
@@ -310,6 +347,7 @@ const columns = [
|
||||
dataIndex: 'courseType',
|
||||
key: 'courseType',
|
||||
align: 'center',
|
||||
width:120,
|
||||
customRender: ({ text,record })=>{
|
||||
switch (text) {
|
||||
case 0:
|
||||
@@ -327,23 +365,19 @@ const columns = [
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '课程名称',
|
||||
dataIndex: 'courseName',
|
||||
key: 'courseName',
|
||||
align: 'center',
|
||||
},
|
||||
{
|
||||
title: '授课/开发课程日期',
|
||||
dataIndex: 'teachingDate',
|
||||
key: 'teachingDate',
|
||||
align: 'center',
|
||||
width:150,
|
||||
},
|
||||
{
|
||||
title: '授课/开发课程时长',
|
||||
dataIndex: 'teachingTime',
|
||||
key: 'teachingTime',
|
||||
align: 'center',
|
||||
width:150,
|
||||
customRender: ({ text,record })=>{
|
||||
return (text/60).toFixed(2)+'小时'
|
||||
}
|
||||
@@ -353,6 +387,7 @@ const columns = [
|
||||
dataIndex: 'studys',
|
||||
key: 'studys',
|
||||
align: 'center',
|
||||
width:100,
|
||||
customRender: ({ text })=>{
|
||||
return text||'0'
|
||||
}
|
||||
@@ -362,21 +397,28 @@ const columns = [
|
||||
dataIndex: 'score',
|
||||
key: 'score',
|
||||
align: 'center',
|
||||
customRender: ({ text })=>{
|
||||
return text||'-'
|
||||
}
|
||||
width:100,
|
||||
customRender: (value) => {
|
||||
return (
|
||||
<div>
|
||||
{value.record.score?Number(value.record.score).toFixed(0)==0?'-':Number(value.record.score).toFixed(0) : '-'}
|
||||
</div>
|
||||
)
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '课酬基准',
|
||||
dataIndex: 'levelPay',
|
||||
key: 'levelPay',
|
||||
align: 'center',
|
||||
width:100,
|
||||
},
|
||||
{
|
||||
title: '计划费用',
|
||||
dataIndex: 'expense',
|
||||
key: 'expense',
|
||||
align: 'center',
|
||||
width:100,
|
||||
},
|
||||
// {
|
||||
// title: '应发费用',
|
||||
@@ -388,6 +430,8 @@ const columns = [
|
||||
title: '操作',
|
||||
align: 'center',
|
||||
fixed: 'right',
|
||||
width:100,
|
||||
customCell:()=>{return {style:{background:'#fff'}}},
|
||||
slots: { customRender: "action" },
|
||||
},
|
||||
]
|
||||
@@ -424,6 +468,23 @@ const config = () => {
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
/* 重置表格行的悬停效果 */
|
||||
::v-deep .ant-table-tbody > tr:hover:not(.ant-table-expanded-row):not(.ant-table-row-selected) > td {
|
||||
background: none;
|
||||
}
|
||||
/* 未选中行的鼠标划入样式 */
|
||||
::v-deep .ant-table-tbody > tr:not(.ant-table-row-selected):hover > td {
|
||||
background: none;
|
||||
}
|
||||
|
||||
/* 未选中行的鼠标划出样式 */
|
||||
::v-deep .ant-table-tbody > tr:not(.ant-table-row-selected):not(:hover) > td {
|
||||
background: none;
|
||||
}
|
||||
::v-deep .ant-table-thead > tr > th {
|
||||
background-color: #eff4fc !important;
|
||||
text-align: center !important;
|
||||
}
|
||||
.delete {
|
||||
min-width: 424px;
|
||||
background: #ffffff;
|
||||
@@ -541,7 +602,8 @@ const config = () => {
|
||||
.drawerMains {
|
||||
min-width: 600px;
|
||||
// margin: 0px 32px 0px 32px;
|
||||
overflow-x: auto;
|
||||
height:100%;
|
||||
overflow: auto;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
padding:24px;
|
||||
@@ -555,6 +617,7 @@ const config = () => {
|
||||
margin-bottom: 20px;
|
||||
|
||||
.headerTitle {
|
||||
margin: 24px 0;
|
||||
font-size: 18px;
|
||||
font-weight: 600;
|
||||
color: #333333;
|
||||
@@ -624,7 +687,7 @@ const config = () => {
|
||||
}
|
||||
.table{
|
||||
::v-deep .ant-table-cell-fix-right {
|
||||
width: 160px !important;
|
||||
width: 120px !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -227,6 +227,13 @@ export default{
|
||||
key: 'score',
|
||||
ellipsis: true, align: "center",
|
||||
width: 120,
|
||||
customRender: (value) => {
|
||||
return (
|
||||
<div>
|
||||
{value.record.score?Number(value.record.score).toFixed(0)==0?'-':Number(value.record.score).toFixed(0) : '-'}
|
||||
</div>
|
||||
)
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '开课状态',
|
||||
@@ -240,7 +247,7 @@ export default{
|
||||
{value.record.courseStatus == 0 || value.record.courseStatus == 1
|
||||
? {
|
||||
"0": "未开课",
|
||||
"1": "开课",
|
||||
"1": "已开课",
|
||||
}[value.record.courseStatus + ""] || ""
|
||||
: "-"}
|
||||
</div>
|
||||
|
||||
@@ -290,6 +290,13 @@ export default{
|
||||
key: 'score',
|
||||
ellipsis: true, align: "center",
|
||||
width: 120,
|
||||
customRender: (value) => {
|
||||
return (
|
||||
<div>
|
||||
{value.record.score?Number(value.record.score).toFixed(0)==0?'-':Number(value.record.score).toFixed(0) : '-'}
|
||||
</div>
|
||||
)
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '开课状态',
|
||||
@@ -303,7 +310,7 @@ export default{
|
||||
{value.record.courseStatus == 0 || value.record.courseStatus == 1
|
||||
? {
|
||||
"0": "未开课",
|
||||
"1": "开课",
|
||||
"1": "已开课",
|
||||
}[value.record.courseStatus + ""] || ""
|
||||
: "-"}
|
||||
</div>
|
||||
|
||||
@@ -64,11 +64,11 @@
|
||||
<a-tab-pane key="2" tab="审批记录" force-render>
|
||||
<div style="margin-bottom: 20px">
|
||||
<a-table :columns="columnsTwo" :loading="formData?.loadingTwo" :data-source="formData?.tableDataTwo" :pagination="pagination">
|
||||
<template #action="{ record }">
|
||||
<!-- <template #action="{ record }">
|
||||
<div class="action">
|
||||
<div style="color: #1890ff;cursor: pointer;" class="btn" @click="lookList(record)">查看</div>
|
||||
</div>
|
||||
</template>
|
||||
</template> -->
|
||||
</a-table>
|
||||
</div>
|
||||
<!-- <div style="margin-bottom: 100px">
|
||||
@@ -244,18 +244,18 @@ const columnsTwo = ref([
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '审批人',
|
||||
title: '提交人',
|
||||
dataIndex: 'employeeName',
|
||||
key: 'employeeName',
|
||||
align: 'center',
|
||||
},
|
||||
{
|
||||
title: '操作',
|
||||
dataIndex: 'address',
|
||||
key:'age',
|
||||
align: 'center',
|
||||
slots: { customRender: "action" },
|
||||
}
|
||||
// {
|
||||
// title: '操作',
|
||||
// dataIndex: 'address',
|
||||
// key:'age',
|
||||
// align: 'center',
|
||||
// slots: { customRender: "action" },
|
||||
// }
|
||||
])
|
||||
const approvalData = ref(null)
|
||||
const threeList = ref(false)
|
||||
|
||||
@@ -4080,7 +4080,7 @@ function onFocusEnd(){
|
||||
editPlan(postData)
|
||||
.then((res) => {
|
||||
if(res.data.code == 200){
|
||||
getTableDate3();
|
||||
handleSearchTable();
|
||||
handleCancelStu();
|
||||
rest();
|
||||
}else{
|
||||
@@ -4089,6 +4089,7 @@ function onFocusEnd(){
|
||||
state.addLoading = false;
|
||||
})
|
||||
.catch((err) => {
|
||||
handleSearchTable();
|
||||
message.destroy()
|
||||
message.error(err.data.msg)
|
||||
state.addLoading = false;
|
||||
@@ -4474,9 +4475,13 @@ function onFocusEnd(){
|
||||
dialog({
|
||||
content: "确定撤回吗?",
|
||||
ok: () => {
|
||||
message.success("撤回成功");
|
||||
record.publishStatus ? (state.tableData1[index].publishStatus = 0) : (state.tableData1[index].auditStatus = 0);
|
||||
handle({ offcourseId: id, type: 0 });
|
||||
handle({ offcourseId: id, type: 0 }).then(res=>{
|
||||
message.success("撤回成功");
|
||||
record.publishStatus ? (state.tableData1[index].publishStatus = 0) : (state.tableData1[index].auditStatus = 0);
|
||||
}).catch(err=>{
|
||||
message.destroy();
|
||||
message.error(err.data.msg);
|
||||
})
|
||||
},
|
||||
});
|
||||
};
|
||||
@@ -4860,10 +4865,14 @@ function onFocusEnd(){
|
||||
dialog({
|
||||
content: "确定删除该课程吗?",
|
||||
ok: async () => {
|
||||
message.success("删除成功");
|
||||
state.tableLoading = true;
|
||||
await handle({ offcourseId: id, type: -1 });
|
||||
getTableDate();
|
||||
await handle({ offcourseId: id, type: -1 }).then(res=>{
|
||||
message.success("删除成功");
|
||||
state.tableLoading = true;
|
||||
getTableDate();
|
||||
}).catch(err=>{
|
||||
message.destroy()
|
||||
message.error(err.data.msg)
|
||||
})
|
||||
},
|
||||
});
|
||||
};
|
||||
@@ -4912,9 +4921,14 @@ function onFocusEnd(){
|
||||
dialog({
|
||||
content: "确定停用该课程吗?",
|
||||
ok: () => {
|
||||
message.success("停用成功");
|
||||
record.status = 0;
|
||||
handle({ offcourseId: record.id, type: -2 });
|
||||
handle({ offcourseId: record.id, type: -2 }).then(res=>{
|
||||
console.log(res,'handleStop')
|
||||
message.success("停用成功");
|
||||
record.status = 0;
|
||||
}).catch(err=>{
|
||||
message.destroy()
|
||||
message.error(err.data.msg)
|
||||
})
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
@@ -142,7 +142,7 @@
|
||||
<a-row :gutter="16">
|
||||
<a-col :span="24">
|
||||
<a-form-item label="手机号码" name="mobile" prop="mobile">
|
||||
<a-input v-model:value.trim="formParam.mobile" class="draitem"
|
||||
<a-input type="number" v-model:value.trim="formParam.mobile" class="draitem"
|
||||
placeholder="请输入手机号码" allowClear showSearch :maxLength="11" @blur="sendPhone">
|
||||
</a-input>
|
||||
</a-form-item>
|
||||
@@ -155,8 +155,16 @@
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :span="24">
|
||||
<a-form-item label="初始授课时长" name="teaching">
|
||||
<a-input v-model:value="formParam.teaching" style="width:100%; height: 40px; border-radius: 8px ; "
|
||||
<a-form-item name="defaultTeachingTime">
|
||||
<template v-slot:label>
|
||||
<img
|
||||
style="margin-right:4px;width: 7px;height: 7px"
|
||||
src="@/assets/images/coursewareManage/asterisk.png"
|
||||
alt=""
|
||||
/>
|
||||
初始授课时长
|
||||
</template>
|
||||
<a-input v-model:value="formParam.defaultTeachingTime" style="width:100%; height: 40px; border-radius: 8px ; "
|
||||
placeholder="0" allowClear showSearch suffix="分钟" @blur="clearNonNumber" @focus="focusTeaching">
|
||||
</a-input>
|
||||
<!-- <span style="margin-left: 5px ;" v-if="formParam.teaching !== null">{{ (formParam.teaching / 60
|
||||
@@ -316,6 +324,8 @@ export default {
|
||||
const router = useRouter();
|
||||
const userInfo = computed(() => store.state.userInfo);
|
||||
const state = reactive({
|
||||
phoneEmil: 0,
|
||||
phoneEmilTwo: 0,
|
||||
lookExternalVisi:false,
|
||||
lookExterId: null,
|
||||
currentPage1: 1,
|
||||
@@ -348,7 +358,7 @@ export default {
|
||||
teacherType:'2',
|
||||
photo:null,
|
||||
status:1,
|
||||
teaching:0,
|
||||
defaultTeachingTime:0,
|
||||
},
|
||||
vf:true,
|
||||
searchParam: {
|
||||
@@ -397,8 +407,8 @@ export default {
|
||||
};
|
||||
const AccountStatusList = ref([
|
||||
{ value: '', label: "全部" },
|
||||
{ value: 1, label: "启用" },
|
||||
{ value: 2, label: "停用" },
|
||||
{ value: '1', label: "启用" },
|
||||
{ value: '2', label: "停用" },
|
||||
])
|
||||
const columns = ref([
|
||||
{
|
||||
@@ -527,6 +537,8 @@ export default {
|
||||
// 新增讲师
|
||||
const addTeacher = () => {
|
||||
cancel()
|
||||
state.phoneEmil = 0
|
||||
state.phoneEmilTwo = 0
|
||||
state.teacherdialog = true;
|
||||
state.teacherdialogtitle = '新增讲师'
|
||||
// state.formParam.photo =userInfo.value?.avatar
|
||||
@@ -538,6 +550,8 @@ export default {
|
||||
|
||||
//修改讲师信息弹窗
|
||||
const handleModify = (record) => {
|
||||
state.phoneEmil = 0
|
||||
state.phoneEmilTwo = 0
|
||||
state.teacherdialog = true;
|
||||
state.teacherdialogtitle = '编辑讲师'
|
||||
state.id = record.id
|
||||
@@ -558,6 +572,9 @@ export default {
|
||||
//保存
|
||||
const createTeacherDialog = async () => {
|
||||
state.formParam.supplier = state.formParam?.supplier?.trim()
|
||||
if(state.formParam.defaultTeachingTime||state.formParam.defaultTeachingTime==0){
|
||||
state.formParam.defaultTeachingTime = String(state.formParam.defaultTeachingTime)
|
||||
}
|
||||
const formItemNames = Object.keys(rules);
|
||||
for(let i=0;i<formItemNames.length;i++){
|
||||
// const result = await validateField(formItemNames[i]);
|
||||
@@ -566,6 +583,14 @@ export default {
|
||||
return message.error(rules[formItemNames[i]][0].log)
|
||||
}
|
||||
}
|
||||
if(state.phoneEmil){
|
||||
message.destroy()
|
||||
return message.warning( '手机号格式不正确')
|
||||
}
|
||||
if(state.phoneEmilTwo){
|
||||
message.destroy()
|
||||
return message.warning( '邮箱格式不正确')
|
||||
}
|
||||
state.formParam.description = repl(state.formParam.description)
|
||||
state.formParam = {...state.formParam}
|
||||
if (state.vf == false) {
|
||||
@@ -624,6 +649,7 @@ export default {
|
||||
}
|
||||
})
|
||||
.catch((err) => {
|
||||
message.error(err.data.msg)
|
||||
state.deleteTeacherdialog = false
|
||||
});
|
||||
}
|
||||
@@ -669,7 +695,7 @@ export default {
|
||||
status:1,
|
||||
teacherType:2,
|
||||
photo:null,
|
||||
teaching:0,
|
||||
defaultTeachingTime:0,
|
||||
name: null,
|
||||
mobile: null,
|
||||
email: null,
|
||||
@@ -684,6 +710,7 @@ export default {
|
||||
const rules = {
|
||||
name: [{ required: true, message: '',log: '讲师不能为空' }],
|
||||
supplier:[{ required: true, message: '',log:'供应商不能为空' }],
|
||||
defaultTeachingTime:[{ required: true, message: '',log:'初始授课时长不能为空' }],
|
||||
// email:[
|
||||
// {
|
||||
// type: "email",
|
||||
@@ -745,34 +772,38 @@ export default {
|
||||
state.formParam.name = state.formParam?.name?.replace(/\s/g, '');
|
||||
}
|
||||
const sendPhone=()=>{
|
||||
state.phoneEmil = 0
|
||||
console.log(state.formParam.mobile)
|
||||
const reg = /^1[3|4|5|6|7|8|9][0-9]\d{8}$/;
|
||||
if (!state.formParam.mobile) {
|
||||
} else if (!reg.test(state.formParam.mobile)) {
|
||||
message.warning( '手机号格式不正确')
|
||||
state.formParam.mobile=''
|
||||
// state.formParam.mobile=''
|
||||
state.phoneEmil = 1
|
||||
// state.formParam.mobile = state.formParam.mobile.replace(/\D/g, '');
|
||||
}
|
||||
|
||||
}
|
||||
const sendEmail=()=>{
|
||||
state.phoneEmilTwo = 0
|
||||
const reg = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+.\w{2,}$/;
|
||||
if(!state.formParam.email){
|
||||
return
|
||||
}
|
||||
if (!reg.test(state.formParam.email)) {
|
||||
message.warning( '邮箱格式不正确')
|
||||
state.formParam.email=''
|
||||
// state.formParam.email=''
|
||||
state.phoneEmilTwo = 2
|
||||
// state.formParam.email = state.formParam.email.replace( /[\u4e00-\u9fa5]/g, '');
|
||||
}
|
||||
}
|
||||
const clearNonNumber = () => {
|
||||
state.formParam.teaching = state.formParam.teaching?.replace(/\D/g, '');
|
||||
state.formParam.teaching = state.formParam.teaching?.slice(0,8)
|
||||
!state.formParam.teaching && (state.formParam.teaching = 0)
|
||||
state.formParam.defaultTeachingTime = state.formParam.defaultTeachingTime?.replace(/\D/g, '');
|
||||
state.formParam.defaultTeachingTime = state.formParam.defaultTeachingTime?.slice(0,8)
|
||||
!state.formParam.defaultTeachingTime && (state.formParam.defaultTeachingTime = 0)
|
||||
}
|
||||
const focusTeaching = () => {
|
||||
state.formParam.teaching == 0 && (state.formParam.teaching = null)
|
||||
state.formParam.defaultTeachingTime == 0 && (state.formParam.defaultTeachingTime = null)
|
||||
}
|
||||
const sendRemark=()=>{
|
||||
state.formParam.remark = state.formParam.remark?.replace(/\s/g, '');
|
||||
@@ -788,8 +819,7 @@ export default {
|
||||
//导出功能
|
||||
const handleExport = () => {
|
||||
window.open(
|
||||
`${process.env.VUE_APP_BASE_API}/admin/export/exportOutTeacher?pageNo=${state.searchParam.pageNo
|
||||
}&pageSize=${state.searchParam.pageSize}&name=${state.searchParam.name ? state.searchParam.name : ""}&status=${state.searchParam.status ? state.searchParam.status : ""}`
|
||||
`${process.env.VUE_APP_BASE_API}/admin/export/exportOutTeacher?name=${state.searchParam.name || ""}&status=${state.searchParam.status || ""}`
|
||||
);
|
||||
// this.download('lesson_records/export', {
|
||||
// ...state.searchParam
|
||||
|
||||
@@ -341,7 +341,7 @@
|
||||
<span style="margin-left: 10px ;" v-if="formParam.teaching != '0'">({{ (formParam.teaching / 60
|
||||
).toFixed(2) }}小时)</span>
|
||||
</a-descriptions-item>
|
||||
<a-descriptions-item label="评分 ">{{ formParam.score ||'-'}}</a-descriptions-item>
|
||||
<a-descriptions-item label="评分 ">{{ formParam.score?Number(formParam.score).toFixed(0)==0?'-':Number(formParam.score).toFixed(0):'-'}}</a-descriptions-item>
|
||||
<a-descriptions-item label="参训人数 ">{{ formParam.studys ||'-'}}</a-descriptions-item>
|
||||
<a-descriptions-item label="备注 " :span="2">{{ formParam.remark ||'-' }}</a-descriptions-item>
|
||||
</a-descriptions>
|
||||
@@ -520,18 +520,22 @@ export default {
|
||||
label:item
|
||||
}
|
||||
})
|
||||
supperList.value.unshift({
|
||||
value: '',
|
||||
label: '全部'
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
const AuthenticationStatusList = ref([
|
||||
{ value: '', label: "全部" },
|
||||
{ value: 0, label: "未开课" },
|
||||
{ value: 1, label: "已开课" },
|
||||
{ value: '0', label: "未开课" },
|
||||
{ value: '1', label: "已开课" },
|
||||
])
|
||||
const entryTypeList = ref([
|
||||
{ value: '', label: "全部" },
|
||||
{ value: 0, label: "系统生成" },
|
||||
{ value: 1, label: "手动录入" },
|
||||
{ value: '0', label: "系统生成" },
|
||||
{ value: '1', label: "手动录入" },
|
||||
])
|
||||
const columns = ref([
|
||||
|
||||
@@ -700,6 +704,13 @@ export default {
|
||||
key: 'score',
|
||||
ellipsis: true, align: "center",
|
||||
width: 120,
|
||||
customRender: (value) => {
|
||||
return (
|
||||
<div>
|
||||
{value.record.score?Number(value.record.score).toFixed(0)==0?'-':Number(value.record.score).toFixed(0) : '-'}
|
||||
</div>
|
||||
)
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
@@ -963,7 +974,7 @@ export default {
|
||||
//导出功能
|
||||
const handleExport = () => {
|
||||
window.open(
|
||||
`${process.env.VUE_APP_BASE_API}/admin/export/exportOutTeacherRecord?pageNo=${state.searchParam.pageNo}&pageSize=${state.searchParam.pageSize}&recordType=2&name=${state.searchParam.name ? state.searchParam.name : ""}&courseName=${state.searchParam.courseName ? state.searchParam.courseName : ""}&createFrom=${state.searchParam.createFrom ? state.searchParam.createFrom : ""}&beginTime=${state.searchParam.beginTime ? state.searchParam.beginTime : ""}&endTime=${state.searchParam.endTime ? state.searchParam.endTime : ""}&courseTypeId=${state.searchParam.courseTypeId ? state.searchParam.courseTypeId : ""}&courseStatus=${state.searchParam.courseStatus ? state.searchParam.courseStatus : ""}`
|
||||
`${process.env.VUE_APP_BASE_API}/admin/export/exportOutTeacherRecord?recordType=2&name=${state.searchParam.name || ""}&courseName=${state.searchParam.courseName || ""}&createFrom=${state.searchParam.createFrom || ""}&beginTime=${state.searchParam.beginTime|| ""}&endTime=${state.searchParam.endTime || ""}&courseTypeId=${state.searchParam.courseTypeId || ""}&courseStatus=${state.searchParam.courseStatus || ""}&supplier=${state.searchParam.supplier || ""}`
|
||||
);
|
||||
}
|
||||
const clearstudysNumber = () => {
|
||||
|
||||
@@ -77,7 +77,7 @@
|
||||
<template #bodyCell="{ record, column }">
|
||||
|
||||
<template v-if="column.key === 'orgName'">
|
||||
<a-space style="display:flex ;justify-content: space-around; ">
|
||||
<a-space style="display:flex ;justify-content: left; ">
|
||||
<!-- <a-popover>
|
||||
<template #content>
|
||||
<p>{{ record.orgName}}</p>
|
||||
@@ -674,6 +674,10 @@ export default {
|
||||
array.push(obj);
|
||||
});
|
||||
LecturerSystemList.value = array;
|
||||
LecturerSystemList.value.unshift({
|
||||
value: "",
|
||||
label: "全部"
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
@@ -706,19 +710,23 @@ export default {
|
||||
array.push(obj);
|
||||
});
|
||||
getLevelList.value = array;
|
||||
getLevelList.value.unshift({
|
||||
value: "",
|
||||
label: "全部"
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
changetlevel()
|
||||
const OnTheJobStatusList = ref([
|
||||
{ value:"", label: "全部" },
|
||||
{ value: 0, label: "在职" },
|
||||
{ value: 1, label: "离职" },
|
||||
{ value: '0', label: "在职" },
|
||||
{ value: '1', label: "离职" },
|
||||
])
|
||||
const AuthenticationStatusList = ref([
|
||||
{ value: "", label: "全部" },
|
||||
{ value: 0, label: "未认证" },
|
||||
{ value: 1, label: "已认证" },
|
||||
{ value: '0', label: "未认证" },
|
||||
{ value: '1', label: "已认证" },
|
||||
])
|
||||
// const PlaceOfPayList = ref([
|
||||
// // { value: 0, label: "发薪地B1" },
|
||||
@@ -783,7 +791,7 @@ export default {
|
||||
title: '所属组织 ',
|
||||
dataIndex: 'orgName',
|
||||
key: 'orgName',
|
||||
ellipsis: true, align: "center",
|
||||
ellipsis: true, align: "left",
|
||||
scopedSlots: { customRender: "orgName" },
|
||||
width: 200,
|
||||
// customRender: (value, record) => {
|
||||
@@ -798,7 +806,7 @@ export default {
|
||||
title: '讲师体系 ',
|
||||
dataIndex: 'tsystemName',
|
||||
key: 'tsystemName',
|
||||
ellipsis: true, align: "center",
|
||||
ellipsis: true, align: "left",
|
||||
width: 200,
|
||||
},
|
||||
{
|
||||
@@ -1343,7 +1351,7 @@ export default {
|
||||
//导出功能
|
||||
const handleExport = () => {
|
||||
window.open(
|
||||
`${process.env.VUE_APP_BASE_API}/admin/export/exportInTeacher?pageNo=${state.searchParam.pageNo}&pageSize=${state.searchParam.pageSize}&name=${state.searchParam.name ? state.searchParam.name : ""}&tsystemId=${state.searchParam.tsystemId ? state.searchParam.tsystemId : ""}&tLevelName=${state.searchParam.tLevelName ? state.searchParam.tLevelName : "" }&waitStatus=${state.searchParam.waitStatus ? state.searchParam.waitStatus : ""}&certStatus=${state.searchParam.certStatus ? state.searchParam.certStatus : ""}&courses=${state.searchParam.courses ? state.searchParam.courses : ""}`
|
||||
`${process.env.VUE_APP_BASE_API}/admin/export/exportInTeacher?name=${state.searchParam.name || ""}&tSystemId=${state.searchParam.tSystemId || ""}&tLevelName=${state.searchParam.tLevelName || "" }&waitStatus=${state.searchParam.waitStatus || ""}&certStatus=${state.searchParam.certStatus || ""}&courses=${state.searchParam.courses || ""}`
|
||||
);
|
||||
// this.download('lesson_records/export', {
|
||||
// ...state.searchParam
|
||||
|
||||
@@ -64,7 +64,7 @@
|
||||
</a-form-item>
|
||||
<!-- <div style="width: 100%;"></div> -->
|
||||
<a-form-item class="select" v-if="moreid == 2">
|
||||
<a-select style="min-width: 200px ; 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="请选择评分" showArrow
|
||||
:options="scoreList" allowClear showSearch mode="multiple" @change="scoreChange"
|
||||
v-on:keydown.enter="enterPressHadlerSearch">
|
||||
</a-select>
|
||||
@@ -423,7 +423,7 @@
|
||||
).toFixed(2) }}小时)</span> </a-descriptions-item>
|
||||
<a-descriptions-item label="授课/课程日期 ">{{ formParam.teachingDate||'-' }}</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.score?Number(formParam.score).toFixed(0)==0?'-':Number(formParam.score).toFixed(0):'-' }}</a-descriptions-item>
|
||||
<a-descriptions-item label="内容分类">{{ formParam.courseTypeName||'-' }}</a-descriptions-item>
|
||||
<a-descriptions-item label="备注 ">{{ formParam.remark||'-' }}</a-descriptions-item>
|
||||
</a-descriptions>
|
||||
@@ -486,7 +486,7 @@
|
||||
</div>
|
||||
</a-modal>
|
||||
</div>
|
||||
<ImportWork v-model:showWork="showWork" :template="'内部授课记录导入模板'" :url="'/admin/export/importInTeacherRecord'" :title="title"></ImportWork>
|
||||
<ImportWork v-model:showWork="showWork" :template="'内部讲师授课记录导入模板-20241220.xlsx'" :url="'/admin/export/importInTeacherRecord'" :title="title"></ImportWork>
|
||||
<!-- <div> <Upload/> </div> -->
|
||||
</div>
|
||||
</template>
|
||||
@@ -659,6 +659,10 @@ export default {
|
||||
array.push(obj);
|
||||
});
|
||||
LecturerSystemList.value = array;
|
||||
LecturerSystemList.value.unshift({
|
||||
value: '',
|
||||
label: '全部'
|
||||
})
|
||||
}
|
||||
console.log("获取讲师", LecturerSystemList);
|
||||
})
|
||||
@@ -678,13 +682,13 @@ export default {
|
||||
])
|
||||
const AuthenticationStatusList = ref([
|
||||
{ value: '', label: "全部" },
|
||||
{ value: 0, label: "未开课" },
|
||||
{ value: 1, label: "已开课" },
|
||||
{ value: '0', label: "未开课" },
|
||||
{ value: '1', label: "已开课" },
|
||||
])
|
||||
const entryTypeList = ref([
|
||||
{ value: '', label: "全部" },
|
||||
{ value: 0, label: "系统生成" },
|
||||
{ value: 1, label: "手动录入" },
|
||||
{ value: '0', label: "系统生成" },
|
||||
{ value: '1', label: "手动录入" },
|
||||
])
|
||||
const scoreList = ref([
|
||||
{ value: '', label: "全部" },
|
||||
@@ -699,13 +703,15 @@ export default {
|
||||
{ value: '10~20', label: "10~20" },
|
||||
])
|
||||
const studysList = ref([
|
||||
{ value: '', label: "全部" },
|
||||
{ value: '0-30', label: "0~30" },
|
||||
{ value: '0-50', label: "0~50" },
|
||||
{ value: '0-70', label: "0~70" },
|
||||
{ value: '0-100', label: "0~100" },
|
||||
{ value: '0-150', label: "0~150" },
|
||||
// { value: '0-150', label: "0~150" },
|
||||
{ value: '0-200', label: "0~200" },
|
||||
{ value: '0-300', label: "0~300 " },
|
||||
{ value: '300以上', label: "300以上" },
|
||||
])
|
||||
const scoreChange = (e) => {
|
||||
if (e.length !== 0) {
|
||||
@@ -751,18 +757,25 @@ export default {
|
||||
ellipsis: true, align: "center",
|
||||
width: 120,
|
||||
},
|
||||
{
|
||||
title: '课程名称 ',
|
||||
dataIndex: 'courseName',
|
||||
key: 'courseName ',
|
||||
ellipsis: true, align: "left",
|
||||
width: 200,
|
||||
},
|
||||
{
|
||||
title: '讲师体系 ',
|
||||
dataIndex: 'tsystemName',
|
||||
key: 'tsystemName',
|
||||
ellipsis: true, align: "center",
|
||||
ellipsis: true, align: "left",
|
||||
width: 200,
|
||||
},
|
||||
{
|
||||
title: '培训发生组织 ',
|
||||
dataIndex: 'trainOrgName',
|
||||
key: 'trainOrgName',
|
||||
ellipsis: true, align: "center",
|
||||
ellipsis: true, align: "left",
|
||||
width: 200,
|
||||
customRender: (value, record) => {
|
||||
return (
|
||||
@@ -791,13 +804,7 @@ export default {
|
||||
)
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '课程名称 ',
|
||||
dataIndex: 'courseName',
|
||||
key: 'courseName ',
|
||||
ellipsis: true, align: "center",
|
||||
width: 120,
|
||||
},
|
||||
|
||||
{
|
||||
title: '课程类型 ',
|
||||
dataIndex: 'type',
|
||||
@@ -881,6 +888,13 @@ export default {
|
||||
key: 'score',
|
||||
ellipsis: true, align: "center",
|
||||
width: 120,
|
||||
customRender: (value) => {
|
||||
return (
|
||||
<div>
|
||||
{value.record.score?Number(value.record.score).toFixed(0)==0?'-':Number(value.record.score).toFixed(0) : '-'}
|
||||
</div>
|
||||
)
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '是否生成课时费 ',
|
||||
@@ -905,8 +919,9 @@ export default {
|
||||
title: '操作 ',
|
||||
dataIndex: 'operation',
|
||||
key: 'operation',
|
||||
ellipsis: true, align: "right",
|
||||
width: 200,
|
||||
// ellipsis: true,
|
||||
align: "center",
|
||||
width: 100,
|
||||
fixed: "right",
|
||||
scopedSlots: { customRender: "action" },
|
||||
},
|
||||
@@ -1024,7 +1039,23 @@ export default {
|
||||
tableData.value = res.data.data.records
|
||||
state.tableDataTotal = Number(res.data.data.total);
|
||||
state.tableLoading = false
|
||||
console.log("获取tableData", tableData);
|
||||
// console.log("获取tableData", tableData);
|
||||
let findValue = false;
|
||||
tableData.value.some(item=>{
|
||||
if(item.createFrom == 1 && item.isSuperPermission === 'true'){
|
||||
columns.value[14].width = 160
|
||||
findValue = true
|
||||
return true
|
||||
}
|
||||
})
|
||||
if(!findValue){
|
||||
const text = tableData.value.find(item=>item.createFrom == 1)
|
||||
if(text){
|
||||
columns.value[14].width = 120
|
||||
}else{
|
||||
columns.value[14].width = 100
|
||||
}
|
||||
}
|
||||
})
|
||||
.catch(err => {
|
||||
state.tableLoading = false
|
||||
@@ -1298,13 +1329,13 @@ export default {
|
||||
ellipsis: true, align: "center",
|
||||
width: 120,
|
||||
},
|
||||
{
|
||||
title: '应发费用 ',
|
||||
dataIndex: 'payableExpense',
|
||||
key: 'payableExpense',
|
||||
ellipsis: true, align: "center",
|
||||
width: 120,
|
||||
},
|
||||
// {
|
||||
// title: '应发费用 ',
|
||||
// dataIndex: 'payableExpense',
|
||||
// key: 'payableExpense',
|
||||
// ellipsis: true, align: "center",
|
||||
// width: 120,
|
||||
// },
|
||||
{
|
||||
title: '状态 ',
|
||||
dataIndex: 'status',
|
||||
@@ -1313,14 +1344,15 @@ export default {
|
||||
width: 120,
|
||||
customRender: (value) => {
|
||||
return (
|
||||
<div >
|
||||
{value.record.status == "A10" || value.record.status == "A20" || value.record.status == "A30" || value.record.status == "E10" || value.record.status == "S20"
|
||||
<div>
|
||||
{String(value.record.status)
|
||||
? {
|
||||
"A10": "待审核",
|
||||
"A20": "已提交",
|
||||
"A30": "审核中",
|
||||
"E10": "审核打回",
|
||||
"S20": "审核通过",
|
||||
"0": "待确认",
|
||||
"1": "待提交",
|
||||
"2": "审核中",
|
||||
"3": "审核通过",
|
||||
'4': '审核拒绝',
|
||||
'5': '待提交',
|
||||
}[value.record.status + ""] || ""
|
||||
: "-"}
|
||||
</div>
|
||||
@@ -1337,11 +1369,11 @@ export default {
|
||||
// },
|
||||
])
|
||||
const gettableDatas = (record) => {
|
||||
getExpenseByCourseId({ courseId: record.courseId })
|
||||
getExpenseByCourseId({ courseId: record.courseId,teacherId:record.teacherId })
|
||||
.then((res) => {
|
||||
console.log(res)
|
||||
tableDatas.value = res.data.data.records
|
||||
state.tableDataTotal = Number(res.data.data.total);
|
||||
tableDatas.value = res.data.data
|
||||
// state.tableDataTotal = Number(res.data.data.total);
|
||||
}).catch(err => {
|
||||
message.destroy()
|
||||
})
|
||||
@@ -1357,7 +1389,7 @@ export default {
|
||||
//导出功能
|
||||
const handleExport = () => {
|
||||
window.open(
|
||||
`${process.env.VUE_APP_BASE_API}/admin/export/exportInTeacherRecord?pageNo=${state.searchParam.pageNo}&pageSize=${state.searchParam.pageSize}&recordType=1&name=${state.searchParam.name ? state.searchParam.name : ''}&courseName=${state.searchParam.courseName ? state.searchParam.courseName : ''}&createFrom=${state.searchParam.createFrom ? state.searchParam.createFrom : ''}&courseStatus=${state.searchParam.courseStatus ? state.searchParam.courseStatus : ''}&tSystemId=${state.searchParam.tSystemId ? state.searchParam.tSystemId : ''}&beginTime=${state.searchParam.beginTime ? state.searchParam.beginTime : ''}&endTime=${state.searchParam.endTime ? state.searchParam.endTime : ''}&orgId=${state.searchParam.orgId ? state.searchParam.orgId : ''}&courseTypeId=${state.searchParam.courseTypeId ? state.searchParam.courseTypeId : ''}&score=${state.searchParam.score ? state.searchParam.score : ''}&studys=${state.searchParam.studys ? state.searchParam.studys : ' '}
|
||||
`${process.env.VUE_APP_BASE_API}/admin/export/exportInTeacherRecord?recordType=1&name=${state.searchParam.name || ''}&courseName=${state.searchParam.courseName || ''}&createFrom=${state.searchParam.createFrom || ''}&courseStatus=${state.searchParam.courseStatus || ''}&tSystemId=${state.searchParam.tSystemId || ''}&beginTime=${state.searchParam.beginTime || ''}&endTime=${state.searchParam.endTime || ''}&orgId=${state.searchParam.orgId || ''}&courseTypeId=${state.searchParam.courseTypeId || ''}&score=${state.searchParam.score || ''}&studys=${state.searchParam.studys || ''}
|
||||
`)
|
||||
console.log(state.searchParam.name, state.searchParam, '参数')
|
||||
}
|
||||
|
||||
@@ -62,7 +62,7 @@
|
||||
text-overflow: ellipsis;">{{flipData(record.orgName)||'-'}}</div>
|
||||
</template>
|
||||
<template #appEdit="{ record }">
|
||||
<a-button type="link" :disabled="record.createFrom==1 ?false :true" @click="edit(record)">编辑</a-button>
|
||||
<a-button type="link" v-if="record.createFrom" @click="edit(record)">编辑</a-button>
|
||||
<a-button type="link" @click="recome(record)">移除</a-button>
|
||||
</template>
|
||||
</a-table>
|
||||
@@ -837,7 +837,7 @@ export default {
|
||||
}).then(res=>{
|
||||
message.success('移除成功')
|
||||
search()
|
||||
state.formData.summaryTotal = Number(state.formData.summaryTotal) - Number(record.expense)
|
||||
state.formData.summaryTotal = (Number(state.formData.summaryTotal) - Number(record.expense)).toFixed(2)
|
||||
}).catch(err=>{
|
||||
message.error(err.msg)
|
||||
})
|
||||
@@ -851,7 +851,7 @@ export default {
|
||||
key: 'name',
|
||||
ellipsis: true,
|
||||
align: "center",
|
||||
width: 160,
|
||||
width: 120,
|
||||
},
|
||||
{
|
||||
title: '讲师工号',
|
||||
@@ -859,7 +859,7 @@ export default {
|
||||
key: 'userNo',
|
||||
align: "center",
|
||||
ellipsis: true,
|
||||
width: 160,
|
||||
width: 120,
|
||||
},
|
||||
{
|
||||
title: '所属组织 ',
|
||||
@@ -867,7 +867,7 @@ export default {
|
||||
key: 'orgName',
|
||||
ellipsis: true,
|
||||
align: "center",
|
||||
width: 200,
|
||||
width: 160,
|
||||
slots: { customRender: "orgName" },
|
||||
},
|
||||
{
|
||||
@@ -876,7 +876,7 @@ export default {
|
||||
key: 'tsystemName',
|
||||
ellipsis: true,
|
||||
align: "center",
|
||||
width: 160,
|
||||
width: 120,
|
||||
},
|
||||
{
|
||||
title: '讲师级别',
|
||||
@@ -884,7 +884,7 @@ export default {
|
||||
key: 'tlevelName',
|
||||
ellipsis: true,
|
||||
align: "center",
|
||||
width: 160,
|
||||
width: 100,
|
||||
},
|
||||
{
|
||||
title: '发薪地',
|
||||
@@ -892,7 +892,10 @@ export default {
|
||||
key: 'payrollPlace',
|
||||
ellipsis: true,
|
||||
align: "center",
|
||||
width: 160,
|
||||
width: 100,
|
||||
customRender: ({text}) => {
|
||||
return text || '-'
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '课程类型',
|
||||
@@ -900,7 +903,7 @@ export default {
|
||||
key: 'courseType',
|
||||
ellipsis: true,
|
||||
align: "center",
|
||||
width: 160,
|
||||
width: 100,
|
||||
customRender: (value) => {
|
||||
return (
|
||||
<div>
|
||||
@@ -923,7 +926,7 @@ export default {
|
||||
key: 'courseName',
|
||||
ellipsis: true,
|
||||
align: "center",
|
||||
width: 200,
|
||||
width: 160,
|
||||
},
|
||||
{
|
||||
title: '授课/开发课程日期',
|
||||
@@ -931,7 +934,7 @@ export default {
|
||||
key: 'teachingDate',
|
||||
ellipsis: true,
|
||||
align: "center",
|
||||
width: 200,
|
||||
width: 160,
|
||||
},
|
||||
{
|
||||
title: '授课/开发课程时长 ',
|
||||
@@ -954,7 +957,7 @@ export default {
|
||||
key: 'studys',
|
||||
ellipsis: true,
|
||||
align: "center",
|
||||
width: 160,
|
||||
width: 100,
|
||||
customRender: ({text}) => {
|
||||
return text || "0";
|
||||
}
|
||||
@@ -965,9 +968,13 @@ export default {
|
||||
key: 'score',
|
||||
ellipsis: true,
|
||||
align: "center",
|
||||
width: 160,
|
||||
customRender: ({text}) => {
|
||||
return text || "-";
|
||||
width: 100,
|
||||
customRender: (value) => {
|
||||
return (
|
||||
<div>
|
||||
{value.record.score?Number(value.record.score).toFixed(0)==0?'-':Number(value.record.score).toFixed(0) : '-'}
|
||||
</div>
|
||||
)
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -976,7 +983,7 @@ export default {
|
||||
key: 'levelPay',
|
||||
ellipsis: true,
|
||||
align: "center",
|
||||
width: 160,
|
||||
width: 120,
|
||||
},
|
||||
{
|
||||
title: '计划费用 ',
|
||||
@@ -984,7 +991,7 @@ export default {
|
||||
key: 'expense',
|
||||
ellipsis: true,
|
||||
align: "center",
|
||||
width: 160,
|
||||
width: 120,
|
||||
},
|
||||
// {
|
||||
// title: '应发费用 ',
|
||||
@@ -1001,7 +1008,7 @@ export default {
|
||||
ellipsis: true,
|
||||
align: "center",
|
||||
fixed: "right",
|
||||
width: 160,
|
||||
width: 120,
|
||||
slots: { customRender: "appEdit" },
|
||||
},
|
||||
])
|
||||
@@ -1252,7 +1259,7 @@ export default {
|
||||
.table{
|
||||
padding-bottom: 70px;
|
||||
::v-deep .ant-table-cell-fix-right {
|
||||
width: 160px !important;
|
||||
width: 120px !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -95,7 +95,7 @@
|
||||
<!-- <a-button type="link" @click="() => handleOperate(record, String(record.courseform))">审批</a-button> -->
|
||||
<!-- <a-button type="link" @click="() => deleteModal(record, String(record.courseform))">删除</a-button> -->
|
||||
<!-- <a-button v-if="record.status == 4" type="link" @click="submit(record)">提交</a-button> -->
|
||||
<a-button v-if="record.status == 2" type="link" @click="withdraw(record)">撤回</a-button>
|
||||
<a-button v-if="record.status == 2&&false" type="link" @click="withdraw(record)">撤回</a-button>
|
||||
</a-space>
|
||||
</template>
|
||||
</template>
|
||||
@@ -136,9 +136,9 @@
|
||||
<a-descriptions style="margin-top:16px" bordered :column="2" :contentStyle="rowCenter" :labelStyle="rowCenter">
|
||||
<a-descriptions-item label="审批编号">{{formParam?.approvalNumber||'-'}}</a-descriptions-item>
|
||||
<a-descriptions-item label="培训发生组织">{{formParam?.trainOrgName||'-'}}</a-descriptions-item>
|
||||
<a-descriptions-item v-if="activeKey==2" label="汇总周期" >{{formParam?.summaryDate||'-'}}</a-descriptions-item>
|
||||
<a-descriptions-item label="提交时间">{{formParam?.approvalSubmitTime||'-'}}</a-descriptions-item>
|
||||
<a-descriptions-item label="汇总时间" >{{formParam?.summaryTime||'-'}}</a-descriptions-item>
|
||||
<a-descriptions-item label="汇总金额">{{formParam?.summaryTotal||'-'}}</a-descriptions-item>
|
||||
<a-descriptions-item label="提交时间">{{formParam?.approvalSubmitTime||'-'}}</a-descriptions-item>
|
||||
<a-descriptions-item label="状态">{{{0:'待确认' ,1:'待提交' ,2:'审核中', 3:'已完成', 4:'审核拒绝',5:'待提交'}[formParam?.status]}}</a-descriptions-item>
|
||||
</a-descriptions>
|
||||
<!-- <span>审批详情</span> -->
|
||||
@@ -165,7 +165,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</a-tab-pane>
|
||||
<a-tab-pane key="2" tab="讲师费审批记录" force-render>
|
||||
<a-tab-pane key="2" tab="讲师费审批记录" force-render v-if="false">
|
||||
<div style="padding-bottom:70px">
|
||||
<a-table :header-cell-style="{ 'text-align': 'center' }" style="border: 1px solid #f2f6fe" :columns="columnsExamineTwo"
|
||||
:data-source="tableDataExamineTwo" :loading="tableDataExamineLoading" @expand="expandTable" :pagination="false">
|
||||
@@ -387,6 +387,10 @@
|
||||
array.push(obj);
|
||||
});
|
||||
trainOrglist.value = array;
|
||||
trainOrglist.value.unshift({
|
||||
value: '',
|
||||
label: "全部"
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
@@ -400,7 +404,7 @@
|
||||
])
|
||||
//认证状态0待确认 1待提交 2审核中 3审核通过 4.审核拒绝
|
||||
const AuthenticationStatusList = ref([
|
||||
// { value: 0, label: "待确认" },
|
||||
{ value: '', label: "全部" },
|
||||
{ value: 1, label: "待提交" },
|
||||
{ value: 2, label: "审核中" },
|
||||
{ value: 4, label: "审核拒绝" },
|
||||
@@ -448,7 +452,7 @@
|
||||
dataIndex: 'trainOrgName',
|
||||
key: 'trainOrgName',
|
||||
ellipsis: true, align: "center",
|
||||
width: 120,
|
||||
width: 200,
|
||||
},
|
||||
{
|
||||
title: '汇总时间 ',
|
||||
@@ -507,9 +511,9 @@
|
||||
title: '操作 ',
|
||||
dataIndex: 'operation',
|
||||
key: 'operation',
|
||||
ellipsis: true, align: "right",
|
||||
ellipsis: true, align: "center",
|
||||
fixed: "right",
|
||||
width: 200,
|
||||
width: 120,
|
||||
scopedSlots: { customRender: "action" },
|
||||
},
|
||||
|
||||
@@ -959,6 +963,9 @@
|
||||
ellipsis: true,
|
||||
align: "center",
|
||||
width: 120,
|
||||
customRender: ({text}) => {
|
||||
return text || '-'
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '基准课酬 ',
|
||||
@@ -994,9 +1001,13 @@
|
||||
ellipsis: true,
|
||||
align: "center",
|
||||
width: 120,
|
||||
customRender: ({text}) => {
|
||||
return text || "-";
|
||||
}
|
||||
customRender: (value) => {
|
||||
return (
|
||||
<div>
|
||||
{value.record.score?Number(value.record.score).toFixed(0)==0?'-':Number(value.record.score).toFixed(0) : '-'}
|
||||
</div>
|
||||
)
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '课程类型 ',
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
</a-form-item>
|
||||
<a-form-item class="select">
|
||||
<a-select style="width: 235px ;margin-bottom:20px" v-model:value="searchParam.trainOrgId" placeholder="请选择培训发生组织" allowClear
|
||||
:options="orgList"
|
||||
:options="orgListSearch"
|
||||
v-on:keydown.enter="enterPressHadlerSearch">
|
||||
</a-select>
|
||||
</a-form-item>
|
||||
@@ -528,7 +528,7 @@
|
||||
<a-descriptions-item label="授课时间 ">{{(formParam.teachingDate) || '-'}}</a-descriptions-item>
|
||||
<a-descriptions-item label="授课时长 ">{{formParam.teachingTime || '-'}}分 <span v-if="formParam.teachingTime">({{(formParam.teachingTime/60).toFixed(2)}}小时)</span></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.score?Number(formParam.score).toFixed(0)==0?'-':Number(formParam.score).toFixed(0):'-' }}</a-descriptions-item>
|
||||
<a-descriptions-item label="课酬基准 ">{{formParam.levelPay || '-'}}</a-descriptions-item>
|
||||
<a-descriptions-item label="计划费用 ">{{formParam.expense || '-'}}</a-descriptions-item>
|
||||
<!-- <a-descriptions-item label="应发费用 ">{{formParam.payableExpense || '-'}}</a-descriptions-item> -->
|
||||
@@ -536,11 +536,11 @@
|
||||
<a-descriptions-item label="状态">{{{0:'待确认' ,1:'待提交' ,2:'审核中', 3:'已完成', 4:'拒绝',5:'待提交'}[formParam?.status]}}</a-descriptions-item>
|
||||
<a-descriptions-item label="备注 ">{{formParam.remark || '-'}}</a-descriptions-item>
|
||||
</a-descriptions>
|
||||
<div style="margin-bottom: 20px;">
|
||||
<div style="margin-bottom: 20px;" v-if="false">
|
||||
<span class="line"></span>
|
||||
<span style="font-weight: 600;">讲师费审批</span>
|
||||
</div>
|
||||
<div style="margin-bottom:32px;">
|
||||
<div style="margin-bottom:32px;" v-if="false">
|
||||
<a-table :columns="columnSee" :loading="SeeLoading" :data-source="tableDataSee" :pagination="false" />
|
||||
</div>
|
||||
<!-- <span class="line"></span> -->
|
||||
@@ -561,7 +561,7 @@
|
||||
</div> -->
|
||||
</div>
|
||||
</a-drawer>
|
||||
<ImportWork v-model:showWork="showWork" :template="'讲师费导入模板'" :url="'/admin/export/importTeacherExpense'" :fileName="uploadFile" :title="title"></ImportWork>
|
||||
<ImportWork v-model:showWork="showWork" :template="'讲师费导入模板-20241220.xlsx'" :url="'/admin/export/importTeacherExpense'" :fileName="uploadFile" :title="title"></ImportWork>
|
||||
</div>
|
||||
<!-- 一键确认讲师费 -->
|
||||
<ConfirmLecturer @visibleFalse="visibleAll" :ids="selectsIds" v-model:visible="visibleConfirm" :name="'确认讲师费'" />
|
||||
@@ -611,6 +611,7 @@
|
||||
tableDataSee: [],
|
||||
SeeLoading: false,
|
||||
orgList: [],
|
||||
orgListSearch: [],
|
||||
selectsIds: '',
|
||||
visibleConfirm: false,
|
||||
title:'导入讲师费记录',
|
||||
@@ -699,6 +700,15 @@
|
||||
value: item.id
|
||||
}
|
||||
})
|
||||
state.orgListSearch = res.data.data?.map(item=>{
|
||||
return{
|
||||
label: item.affiliationName,
|
||||
value: item.id
|
||||
}
|
||||
})
|
||||
state.orgListSearch.unshift({
|
||||
label: '全部', value: ''
|
||||
})
|
||||
})
|
||||
}
|
||||
//费用类型
|
||||
@@ -717,15 +727,16 @@
|
||||
{ value: '0', label: "在线课" },
|
||||
{ value: '2', label: "课程开发" },
|
||||
{ value: '3', label: "作业员入模培训" },
|
||||
{ value: '4', label: "其他" },
|
||||
// { value: '4', label: "其他" },
|
||||
])
|
||||
//认证状态
|
||||
const AuthenticationStatusList = ref([
|
||||
{ value: 0, label: "待确认" },
|
||||
{ value: 1, label: "待审核" },
|
||||
{ value: 2, label: "审核中" },
|
||||
{ value: 4, label: "审核拒绝" },
|
||||
{ value: 3, label: "审核通过" },
|
||||
{ value: '', label: "全部" },
|
||||
{ value: '0', label: "待确认" },
|
||||
{ value: '1', label: "待提交" },
|
||||
{ value: '2', label: "审核中" },
|
||||
{ value: '4', label: "审核拒绝" },
|
||||
{ value: '3', label: "审核通过" },
|
||||
])
|
||||
|
||||
const lecturerSystemList = ref([
|
||||
@@ -748,6 +759,10 @@
|
||||
array.push(obj);
|
||||
});
|
||||
lecturerSystemList.value = array;
|
||||
lecturerSystemList.value.unshift({
|
||||
value: '',
|
||||
label: '全部'
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
@@ -768,6 +783,10 @@ getAllLevelList().then((res) => {
|
||||
array.push(obj);
|
||||
});
|
||||
getLevelList.value = array;
|
||||
getLevelList.value.unshift({
|
||||
value: "",
|
||||
label: "全部"
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
@@ -904,14 +923,14 @@ getAllLevelList().then((res) => {
|
||||
dataIndex: 'courseName',
|
||||
key: 'courseName',
|
||||
ellipsis: true,
|
||||
align: "center",
|
||||
align: "left",
|
||||
width: 200,
|
||||
},
|
||||
{
|
||||
title: '培训发生组织',
|
||||
dataIndex: 'trainOrgName',
|
||||
key: 'trainOrgName',
|
||||
ellipsis: true, align: "center",
|
||||
ellipsis: true, align: "left",
|
||||
width: 200,
|
||||
},
|
||||
|
||||
@@ -941,8 +960,8 @@ getAllLevelList().then((res) => {
|
||||
title: '讲师体系',
|
||||
dataIndex: 'tsystemName',
|
||||
key: 'tsystemName',
|
||||
ellipsis: true, align: "center",
|
||||
width: 120,
|
||||
ellipsis: true, align: "left",
|
||||
width: 200,
|
||||
customRender: ({ text })=>{
|
||||
return text||'-'
|
||||
}
|
||||
@@ -997,9 +1016,13 @@ getAllLevelList().then((res) => {
|
||||
key: 'score',
|
||||
ellipsis: true, align: "center",
|
||||
width: 120,
|
||||
customRender: ({ text })=>{
|
||||
return text||'-'
|
||||
}
|
||||
customRender: (value) => {
|
||||
return (
|
||||
<div>
|
||||
{value.record.score?Number(value.record.score).toFixed(0)==0?'-':Number(value.record.score).toFixed(0) : '-'}
|
||||
</div>
|
||||
)
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '课程类型 ',
|
||||
@@ -1640,9 +1663,13 @@ const column = ref([
|
||||
key: 'courseAssess',
|
||||
ellipsis: true, align: "center",
|
||||
width: 120,
|
||||
customRender: ({ text })=>{
|
||||
return text||'-'
|
||||
}
|
||||
customRender: (value) => {
|
||||
return (
|
||||
<div>
|
||||
{value.record.score?Number(value.record.score).toFixed(0)==0?'-':Number(value.record.score).toFixed(0) : '-'}
|
||||
</div>
|
||||
)
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '课程类型 ',
|
||||
@@ -1726,8 +1753,8 @@ const column = ref([
|
||||
//导出功能
|
||||
const handleExport = ()=>{
|
||||
window.open (
|
||||
`${process.env.VUE_APP_BASE_API}/admin/export/exportTeacherExpense?pageNo=${state.searchParam.pageNo}&pageSize=${state.searchParam.pageSize}&name=${state.searchParam.name ? state.searchParam.name : ""
|
||||
}&trainOrgId=${ state.searchParam.trainOrgId ? state.searchParam.trainOrgId : ""}&type=${state.searchParam.type ? state.searchParam.type : ""}&tsystemId=${ state.searchParam.tSystemId ? state.searchParam.tSystemId : ""}&tLevelName=${ state.searchParam.tLevelName ? state.searchParam.tLevelName : ""}&beginTime=${state.searchParam.beginTime ? state.searchParam.beginTime : ""}&endTime=${state.searchParam.endTime ? state.searchParam.endTime : ""}`
|
||||
`${process.env.VUE_APP_BASE_API}/admin/export/exportTeacherExpense?name=${state.searchParam.name || ""
|
||||
}&status=${ state.searchParam.status || ""}&trainOrgId=${ state.searchParam.trainOrgId || ""}&type=${state.searchParam.type || ""}&tSystemId=${ state.searchParam.tSystemId || ""}&tLevelName=${ state.searchParam.tLevelName || ""}&beginTime=${state.searchParam.beginTime || ""}&endTime=${state.searchParam.endTime || ""}`
|
||||
);
|
||||
// this.download('lesson_records/export', {
|
||||
// ...state.searchParam
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
</div>
|
||||
</a-form>
|
||||
<div style="width: 100%;"></div>
|
||||
<div style="display: flex; margin-bottom: 20px">
|
||||
<div v-if="isAdmin" style="display: flex; margin-bottom: 20px">
|
||||
<a-button @click="searchResetPrevious()" type="primary" class="langbtn" style="width: 150px; height: 40px; border-radius: 8px" >
|
||||
<FolderAddOutlined /> 重新汇总上月讲师费
|
||||
</a-button>
|
||||
@@ -171,7 +171,7 @@
|
||||
<MonthlyStatistics v-model:visible="opendrawer" :id="drawerId" ></MonthlyStatistics>
|
||||
</template>
|
||||
<script lang="jsx">
|
||||
import { reactive, toRefs, ref, watch } from "vue";
|
||||
import { reactive, toRefs, ref, watch,onMounted } from "vue";
|
||||
import { message } from "ant-design-vue";
|
||||
import dayjs from "dayjs";
|
||||
import { useStore } from "vuex";
|
||||
@@ -179,7 +179,7 @@ import { useRouter } from "vue-router";
|
||||
import { getOrganization } from "../../api/Teaching";
|
||||
import { queryTeacherFeeMonthly, getTeacherFeeDetailListByTeacherNo, getTeacherFeeListByTeacherNo,TeacherFeeTotalList,createMonthSummary} from "../../api/lecturerFeeStatistics"
|
||||
;
|
||||
import {expenseSummaryList,getTrainOrg,CreateMonthSummary} from "../../api/lecturerFeeManagement";
|
||||
import {expenseSummaryList,getTrainOrg,CreateMonthSummary,isShowReimport} from "../../api/lecturerFeeManagement";
|
||||
import dialog from '@/utils/dialog'
|
||||
import MonthlyStatistics from './MonthlyStatistics'
|
||||
export default {
|
||||
@@ -188,9 +188,22 @@ export default {
|
||||
MonthlyStatistics,
|
||||
},
|
||||
setup() {
|
||||
onMounted(() => {
|
||||
isShowReimport().then(res=>{
|
||||
if(res.data.code == 200){
|
||||
state.isAdmin = res.data.data
|
||||
}else{
|
||||
state.isAdmin = false
|
||||
}
|
||||
}).catch(err=>{
|
||||
state.isAdmin = false
|
||||
message.error(err.data.msg)
|
||||
})
|
||||
})
|
||||
const store = useStore();
|
||||
const router = useRouter();
|
||||
const state = reactive({
|
||||
isAdmin: false,
|
||||
opendrawer: false,
|
||||
drawerId: '',
|
||||
summaryDate: null,
|
||||
@@ -243,11 +256,11 @@ export default {
|
||||
width:'100px',
|
||||
},
|
||||
{
|
||||
title: '资源归属 ',
|
||||
title: '培训发生组织 ',
|
||||
dataIndex: 'trainOrgName',
|
||||
key: 'trainOrgName',
|
||||
ellipsis: true,
|
||||
align: "center",
|
||||
align: "left",
|
||||
width: '200px',
|
||||
},
|
||||
{
|
||||
@@ -378,6 +391,10 @@ export default {
|
||||
array.push(obj);
|
||||
});
|
||||
TrainOrglist.value = array;
|
||||
TrainOrglist.value.unshift({
|
||||
value: '',
|
||||
label: "全部"
|
||||
})
|
||||
}
|
||||
console.log("获取发薪地",TrainOrglist);
|
||||
})
|
||||
|
||||
@@ -258,7 +258,7 @@ export default {
|
||||
key: 'name',
|
||||
ellipsis: true,
|
||||
align: "center",
|
||||
width: 160,
|
||||
width: 120,
|
||||
},
|
||||
{
|
||||
title: '讲师工号',
|
||||
@@ -266,7 +266,7 @@ export default {
|
||||
key: 'userNo',
|
||||
align: "center",
|
||||
ellipsis: true,
|
||||
width: 160,
|
||||
width: 120,
|
||||
},
|
||||
{
|
||||
title: '所属组织 ',
|
||||
@@ -274,7 +274,7 @@ export default {
|
||||
key: 'orgName',
|
||||
ellipsis: true,
|
||||
align: "center",
|
||||
width: 200,
|
||||
width: 160,
|
||||
customRender: ({text})=>{
|
||||
return endOrg(text)
|
||||
}
|
||||
@@ -285,7 +285,7 @@ export default {
|
||||
key: 'payrollPlace',
|
||||
ellipsis: true,
|
||||
align: "center",
|
||||
width: 160,
|
||||
width: 120,
|
||||
},
|
||||
{
|
||||
title: '授课时长(系统 ) ',
|
||||
@@ -293,7 +293,7 @@ export default {
|
||||
key: 'teachingSystem',
|
||||
ellipsis: true,
|
||||
align: "center",
|
||||
width: 160,
|
||||
width: 140,
|
||||
},
|
||||
{
|
||||
title: '授课时长(录入) ',
|
||||
@@ -301,15 +301,15 @@ export default {
|
||||
key: 'teachingEnter',
|
||||
ellipsis: true,
|
||||
align: "center",
|
||||
width: 160,
|
||||
width: 140,
|
||||
},
|
||||
{
|
||||
title: '开发课程时长 ',
|
||||
dataIndex: 'expense',
|
||||
key: 'expense',
|
||||
dataIndex: 'teachingDevelop',
|
||||
key: 'teachingDevelop',
|
||||
ellipsis: true,
|
||||
align: "center",
|
||||
width: 160,
|
||||
width: 120,
|
||||
},
|
||||
{
|
||||
title: '计划费用 ',
|
||||
@@ -317,7 +317,7 @@ export default {
|
||||
key: 'expense',
|
||||
ellipsis: true,
|
||||
align: "center",
|
||||
width: 160,
|
||||
width: 120,
|
||||
},
|
||||
{
|
||||
title: '应发费用 ',
|
||||
@@ -325,7 +325,7 @@ export default {
|
||||
key: 'payableExpense',
|
||||
ellipsis: true,
|
||||
align: "center",
|
||||
width: 160,
|
||||
width: 120,
|
||||
},
|
||||
{
|
||||
title: '操作 ',
|
||||
@@ -334,7 +334,7 @@ export default {
|
||||
ellipsis: true,
|
||||
align: "center",
|
||||
fixed: "right",
|
||||
width: 160,
|
||||
width: 100,
|
||||
scopedSlots: { customRender: "action" },
|
||||
},
|
||||
])
|
||||
|
||||
@@ -39,8 +39,10 @@
|
||||
<div style="color: #1890ff;cursor: pointer;">查看</div>
|
||||
</lockLecturer>
|
||||
<a-button v-if="record.status!=2" type="link" @click="() => handleModify(record, String(record.courseform))">编辑</a-button>
|
||||
<a-button v-if="record.status==2" type="link" @click="() => updateModal(record)">撤回</a-button>
|
||||
<a-button type="link" @click="() => deleteModal(record, String(record.courseform))">删除</a-button>
|
||||
<a-button v-if="record.status==2&&false" type="link" @click="() => updateModal(record)">撤回</a-button>
|
||||
<!-- <a-button type="link" @click="() => deleteModal(record, String(record.courseform))">删除</a-button> -->
|
||||
<a-button @click="isEnablePost(record,0)" v-if="record.enable" type="link" >启用</a-button>
|
||||
<a-button @click="isEnablePost(record,1)" v-if="!record.enable" type="link" >停用</a-button>
|
||||
</a-space>
|
||||
</template>
|
||||
</template>
|
||||
@@ -148,11 +150,11 @@
|
||||
是否为根节点:
|
||||
</template>
|
||||
<div style="display: flex;align-items: center;">
|
||||
<a-radio-group style="min-width:126px;" @change="selectRadio" v-model:value="formParam.isParent" name="radioGroup">
|
||||
<a-radio-group :disabled="!formParam.locking" style="min-width:126px;" @change="selectRadio" v-model:value="formParam.isParent" name="radioGroup">
|
||||
<a-radio :value="1">否</a-radio>
|
||||
<a-radio :value="0">是</a-radio>
|
||||
</a-radio-group>
|
||||
<a-select v-model:value="formParam.code" :placeholder="!formParam.isParent?'请选择审批层级':'请选择根节点'"
|
||||
<a-select :disabled="!formParam.locking" v-model:value="formParam.code" :placeholder="!formParam.isParent?'请选择审批层级':'请选择根节点'"
|
||||
:options="!formParam.isParent?PlaceOfPayList:PlaceOfPayListTwo" allowClear showSearch/>
|
||||
</div>
|
||||
</a-form-item>
|
||||
@@ -348,6 +350,7 @@ export default{
|
||||
code: null,
|
||||
isContains: '0',
|
||||
affiliationOrgList: [],
|
||||
locking: 1,
|
||||
},
|
||||
})
|
||||
const PlaceOfPayList = ref([
|
||||
@@ -385,19 +388,19 @@ export default{
|
||||
state.formParam.code = null
|
||||
}
|
||||
const columns = ref([
|
||||
{
|
||||
title: '培训发生组织编号 ',
|
||||
dataIndex: 'affiliationCode',
|
||||
key: 'affiliationCode',
|
||||
ellipsis: true,
|
||||
align: "center",
|
||||
width: '100px',
|
||||
},
|
||||
// {
|
||||
// title: '培训发生组织编号 ',
|
||||
// dataIndex: 'affiliationCode',
|
||||
// key: 'affiliationCode',
|
||||
// ellipsis: true,
|
||||
// align: "center",
|
||||
// width: '100px',
|
||||
// },
|
||||
{
|
||||
title: '培训发生组织名称 ',
|
||||
dataIndex: 'affiliationName',
|
||||
key: 'affiliationName',
|
||||
ellipsis: true, align: "center",
|
||||
ellipsis: true, align: "left",
|
||||
width: '200px',
|
||||
},
|
||||
{
|
||||
@@ -427,7 +430,7 @@ export default{
|
||||
title: '是否为根节点名称',
|
||||
dataIndex: 'parentName',
|
||||
key: 'parentName',
|
||||
align: "center",
|
||||
align: "left",
|
||||
width: '200px',
|
||||
customRender: ({text,record})=>{
|
||||
return (
|
||||
@@ -440,7 +443,7 @@ export default{
|
||||
dataIndex: 'leaderName',
|
||||
key: 'leaderName',
|
||||
ellipsis: true,
|
||||
align: "center",
|
||||
align: "left",
|
||||
width: '200px',
|
||||
},
|
||||
|
||||
@@ -581,6 +584,24 @@ const getTableDate = (obj) => {
|
||||
}
|
||||
})
|
||||
};
|
||||
const isEnablePost = (record,status) => {
|
||||
dialog({
|
||||
content: `是否确认${!status?'启用':'停用'}该培训发生组织?`,
|
||||
ok: () => {
|
||||
lecturer.isEnable({id:record.id,status}).then(res=>{
|
||||
if(typeof (res.data.data) != 'object'){
|
||||
message.error(res.data.data)
|
||||
return
|
||||
}
|
||||
message.success(`${!status?'启用':'停用'}成功`)
|
||||
searchSubmit();
|
||||
}).catch(err=>{
|
||||
message.destroy()
|
||||
message.error(err.data.msg)
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
//确认删除
|
||||
const closeDeleteTeacher = () => {
|
||||
//调用删除接口
|
||||
@@ -689,7 +710,7 @@ const getTableDate = (obj) => {
|
||||
...item
|
||||
};
|
||||
});
|
||||
state.formParam.leveTwoValue = state.formParam.leveTwoArray.map(item => item.label).join(',');
|
||||
state.formParam.leveTwoValue = state.formParam.leveTwoArray.map(item => item.label).join(',')||null;
|
||||
state.formParam.leveThreeArray = leveThreeArray.map(item => {
|
||||
return {
|
||||
label: item.userName + item.userNo,
|
||||
@@ -698,7 +719,7 @@ const getTableDate = (obj) => {
|
||||
...item
|
||||
};
|
||||
});
|
||||
state.formParam.leveThreeValue = state.formParam.leveThreeArray.map(item => item.label).join(',');
|
||||
state.formParam.leveThreeValue = state.formParam.leveThreeArray.map(item => item.label).join(',')||null;
|
||||
state.formParam.orglistName = state.formParam.affiliationOrgList?.map(item=>item.id).join(',')
|
||||
state.formParam.selectOrgList?.map(item=>{
|
||||
state.formParam.affiliationOrgList.some(item2=>{
|
||||
@@ -739,6 +760,7 @@ const getTableDate = (obj) => {
|
||||
code: null,
|
||||
isContains: '0',
|
||||
affiliationOrgList: [],
|
||||
locking: 1,
|
||||
}
|
||||
}
|
||||
async function validateField(name) {
|
||||
@@ -786,6 +808,9 @@ const getTableDate = (obj) => {
|
||||
}
|
||||
}
|
||||
}
|
||||
if(!state.formParam.leveTwoValue&&state.formParam.leveThreeValue&&state.formParam.isParent){
|
||||
return message.error('请选择二级审批人')
|
||||
}
|
||||
state.formParam.remark = state.formParam?.remark?.trim()
|
||||
state.formParam.submitStatus = val
|
||||
dialog({
|
||||
@@ -859,6 +884,7 @@ const getTableDate = (obj) => {
|
||||
searchReset,
|
||||
searchList,
|
||||
deleteModal,
|
||||
isEnablePost,
|
||||
updateModal,
|
||||
cancelTeacherDialog,
|
||||
addTeacher,
|
||||
|
||||
Reference in New Issue
Block a user