讲师管理bug

This commit is contained in:
zhangsir
2024-12-26 17:13:55 +08:00
parent 51022077b2
commit 9140481715
10 changed files with 143 additions and 70 deletions

View File

@@ -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 getPreviousTeacherFee= (obj) => http.post('/teacher/fee/getPreviousTeacherFee',obj)
//汇总上月讲师费月度数据 //汇总上月讲师费月度数据
export const CreateMonthSummary= (obj) => http.post('/admin/expenseSummary/createMonthSummary',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}) export const expenseSummaryList= (obj) => http.get('/admin/expenseSummary/list',{params:obj})
//提交/撤回 //提交/撤回

View File

@@ -4,9 +4,9 @@
:closable="false" :closable="false"
class="largeDrawerInside" class="largeDrawerInside"
placement="right" placement="right"
width="70%" width="80%"
> >
<div class="drawerMains" ref="drawerContent"> <div class="drawerMains">
<div class="headers" style="margin-top:-24px;"> <div class="headers" style="margin-top:-24px;">
<div class="headerTitle">{{ name }}</div> <div class="headerTitle">{{ name }}</div>
<img <img
@@ -22,9 +22,9 @@
<div class="item"> <div class="item">
<a-input @pressEnter="searchData(true)" style="border-radius: 8px;width:240px;height: 40px;" v-model:value="nameUserNo" placeholder="请输入工号/讲师名称进行搜索" allowClear /> <a-input @pressEnter="searchData(true)" style="border-radius: 8px;width:240px;height: 40px;" v-model:value="nameUserNo" placeholder="请输入工号/讲师名称进行搜索" allowClear />
</div> </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" /> <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"> <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="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> <a-button type="primary" @click="resetData()" style="border-radius:8px;width: 100px;height: 40px;">重置</a-button>
@@ -32,10 +32,11 @@
</div> </div>
<div class="table" style="padding-bottom:72px;"> <div class="table" style="padding-bottom:72px;">
<a-table <a-table
ref="drawerContent"
:columns="columns" :columns="columns"
:data-source="tableData" :data-source="tableData"
:pagination="false" :pagination="false"
:scroll="{ x: 'max-content' }" :scroll="{ x: 'max-content',y:tableData.length? pageHeight : null }"
row-key="id" row-key="id"
:loading="loading" :loading="loading"
:row-selection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }" :row-selection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
@@ -80,6 +81,9 @@ const customRow = (record) => {
}, },
}; };
}; };
const pageHeight = computed(() => {
return window.innerHeight - 360
});
watch(()=>props.visible,(val)=>{ watch(()=>props.visible,(val)=>{
if(val){ if(val){
loading.value = true loading.value = true
@@ -98,7 +102,7 @@ watch(()=>props.visible,(val)=>{
}else{ }else{
selectedRowKeys.value = [] selectedRowKeys.value = []
selectsData.value = [] selectsData.value = []
drawerContent.value.scrollTo({top:0,behavior: 'smooth'}) drawerContent.value?.$el.querySelector('.ant-table-body')?.scrollTo({top:0,behavior: 'smooth'})
resetData() resetData()
} }
}) })
@@ -115,7 +119,7 @@ const searchData = (val) => {
// drawerContent.value.scrollTo({top:200,behavior: 'smooth'}) // drawerContent.value.scrollTo({top:200,behavior: 'smooth'})
searchTrue.value = val searchTrue.value = val
if(!nameUserNo.value&&!dateValue.value){ if(!nameUserNo.value&&!dateValue.value){
// searchList.value = tableData.value; searchList.value = [];
return return
} }
//搜索 数组expenseList.value 参数名字或者工号nameUserNo.value 日期dateValue.value //搜索 数组expenseList.value 参数名字或者工号nameUserNo.value 日期dateValue.value
@@ -137,7 +141,7 @@ const searchData = (val) => {
let scrollHeight = null let scrollHeight = null
filteredList.length && (scrollHeight = tableData.value.findIndex(item => item.id === filteredList[0].id)) filteredList.length && (scrollHeight = tableData.value.findIndex(item => item.id === filteredList[0].id))
if(scrollHeight||scrollHeight==0){ if(scrollHeight||scrollHeight==0){
drawerContent.value.scrollTo({top:(scrollHeight+1)*50+200,behavior: 'smooth'}) drawerContent.value?.$el.querySelector('.ant-table-body')?.scrollTo({top:scrollHeight*55,behavior: 'smooth'})
} }
} }
const loading = ref(false) const loading = ref(false)
@@ -172,12 +176,14 @@ const columns = [
dataIndex: 'name', dataIndex: 'name',
key: 'name', key: 'name',
align: 'center', align: 'center',
width:120,
}, },
{ {
title: '讲师工号', title: '讲师工号',
dataIndex: 'userNo', dataIndex: 'userNo',
key: 'userNo', key: 'userNo',
align: 'center', align: 'center',
width:120
}, },
{ {
title: '所属组织', title: '所属组织',
@@ -185,6 +191,7 @@ const columns = [
key: 'orgName', key: 'orgName',
align: 'center', align: 'center',
ellipsis: true, ellipsis: true,
width:100,
customCell :() => {return {style: {maxWidth: '200px',overflow: 'hidden',whiteSpace: 'nowrap',textOverflow:'ellipsis',cursor:'pointer'}}}, customCell :() => {return {style: {maxWidth: '200px',overflow: 'hidden',whiteSpace: 'nowrap',textOverflow:'ellipsis',cursor:'pointer'}}},
}, },
@@ -193,12 +200,15 @@ const columns = [
dataIndex: 'tsystemName', dataIndex: 'tsystemName',
key: 'tsystemName', key: 'tsystemName',
align: 'center', align: 'center',
width:100,
customCell :() => {return {style: {maxWidth: '200px',overflow: 'hidden',whiteSpace: 'nowrap',textOverflow:'ellipsis',cursor:'pointer'}}},
}, },
{ {
title: '讲师等级', title: '讲师等级',
dataIndex: 'tlevelName', dataIndex: 'tlevelName',
key: 'tlevelName', key: 'tlevelName',
align: 'center', align: 'center',
width:100,
customRender: ({ text })=>{ customRender: ({ text })=>{
return text||'-' return text||'-'
} }
@@ -208,6 +218,7 @@ const columns = [
dataIndex: 'payrollPlace', dataIndex: 'payrollPlace',
key: 'payrollPlace', key: 'payrollPlace',
align: 'center', align: 'center',
width:120,
customRender: ({ text })=>{ customRender: ({ text })=>{
return text||'-' return text||'-'
} }
@@ -218,6 +229,7 @@ const columns = [
dataIndex: 'courseType', dataIndex: 'courseType',
key: 'courseType', key: 'courseType',
align: 'center', align: 'center',
width:120,
customRender: ({ text,record })=>{ customRender: ({ text,record })=>{
switch (text) { switch (text) {
case 0: case 0:
@@ -240,18 +252,22 @@ const columns = [
dataIndex: 'courseName', dataIndex: 'courseName',
key: 'courseName', key: 'courseName',
align: 'center', align: 'center',
width:100,
customCell :() => {return {style: {maxWidth: '200px',overflow: 'hidden',whiteSpace: 'nowrap',textOverflow:'ellipsis',cursor:'pointer'}}},
}, },
{ {
title: '授课/开发课程日期', title: '授课/开发课程日期',
dataIndex: 'teachingDate', dataIndex: 'teachingDate',
key: 'teachingDate', key: 'teachingDate',
align: 'center', align: 'center',
width:150
}, },
{ {
title: '授课/开发课程时长', title: '授课/开发课程时长',
dataIndex: 'teachingTime', dataIndex: 'teachingTime',
key: 'teachingTime', key: 'teachingTime',
align: 'center', align: 'center',
width:150,
customRender: ({ text,record })=>{ customRender: ({ text,record })=>{
return (text/60).toFixed(2)+'小时' return (text/60).toFixed(2)+'小时'
} }
@@ -261,6 +277,7 @@ const columns = [
dataIndex: 'studys', dataIndex: 'studys',
key: 'studys', key: 'studys',
align: 'center', align: 'center',
width:100,
customRender: ({ text })=>{ customRender: ({ text })=>{
return text||'0' return text||'0'
} }
@@ -270,6 +287,7 @@ const columns = [
dataIndex: 'score', dataIndex: 'score',
key: 'score', key: 'score',
align: 'center', align: 'center',
width:100,
customRender: (value) => { customRender: (value) => {
return ( return (
<div> <div>
@@ -283,12 +301,14 @@ const columns = [
dataIndex: 'levelPay', dataIndex: 'levelPay',
key: 'levelPay', key: 'levelPay',
align: 'center', align: 'center',
width:100
}, },
{ {
title: '计划费用', title: '计划费用',
dataIndex: 'expense', dataIndex: 'expense',
key: 'expense', key: 'expense',
align: 'center', align: 'center',
width:100
}, },
// { // {
// title: '应发费用', // title: '应发费用',
@@ -349,7 +369,10 @@ const queryDrawer = () => {
::v-deep .ant-table-row-selected td { ::v-deep .ant-table-row-selected td {
// background: none !important; // background: none !important;
} }
::v-deep .ant-table-thead > tr > th {
background-color: #eff4fc !important;
text-align: center !important;
}
.largeDrawerInside { .largeDrawerInside {
.drawerMains { .drawerMains {
@@ -425,7 +448,7 @@ const queryDrawer = () => {
} }
.table{ .table{
::v-deep .ant-table-cell-fix-right { ::v-deep .ant-table-cell-fix-right {
width: 160px !important; width: 120px !important;
} }
} }
} }

View File

@@ -4,10 +4,10 @@
:closable="false" :closable="false"
class="largeDrawerInside" class="largeDrawerInside"
placement="right" placement="right"
width="64%" width="76%"
:zIndex="1001" :zIndex="1001"
> >
<div class="drawerMains" ref="drawerContent"> <div class="drawerMains">
<div class="headers" style="margin-top:-24px;"> <div class="headers" style="margin-top:-24px;">
<div class="headerTitle">{{ name }}</div> <div class="headerTitle">{{ name }}</div>
<img <img
@@ -34,9 +34,9 @@
<div class="item"> <div class="item">
<a-input @pressEnter="searchData(true)" style="border-radius: 8px;width:240px;height: 40px;" v-model:value="nameUserNo" placeholder="请输入工号/讲师名称进行搜索" allowClear /> <a-input @pressEnter="searchData(true)" style="border-radius: 8px;width:240px;height: 40px;" v-model:value="nameUserNo" placeholder="请输入工号/讲师名称进行搜索" allowClear />
</div> </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" /> <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"> <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="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> <a-button type="primary" @click="resetData()" style="border-radius:8px;width: 100px;height: 40px;">重置</a-button>
@@ -44,10 +44,11 @@
</div> </div>
<div class="table"> <div class="table">
<a-table <a-table
ref="drawerContent"
:columns="columns" :columns="columns"
:data-source="expenseList" :data-source="expenseList"
:pagination="false" :pagination="false"
:scroll="{ x: 'max-content' }" :scroll="{ x: 'max-content',y:expenseList.length? pageHeight : null }"
:loading="loadingData" :loading="loadingData"
:custom-row="customRow" :custom-row="customRow"
> >
@@ -175,6 +176,9 @@ const clickItem = (item,i) => {
indexList.value = i indexList.value = i
resetData() resetData()
} }
const pageHeight = computed(() => {
return window.innerHeight - 450
});
watch(()=>props.visible,(val)=>{ watch(()=>props.visible,(val)=>{
if(val){ if(val){
loadingData.value = true loadingData.value = true
@@ -202,7 +206,7 @@ watch(()=>props.visible,(val)=>{
}else{ }else{
nameUserNo.value = null nameUserNo.value = null
dateValue.value = null dateValue.value = null
drawerContent.value.scrollTo({top:0,behavior: 'smooth'}) drawerContent.value?.$el.querySelector('.ant-table-body')?.scrollTo({top:0,behavior: 'smooth'})
} }
}) })
const removeId = (e,i) =>{ const removeId = (e,i) =>{
@@ -244,7 +248,7 @@ const customRow = (record) => {
const searchData = (val) => { const searchData = (val) => {
searchTrue.value = val searchTrue.value = val
if(!nameUserNo.value&&!dateValue.value){ if(!nameUserNo.value&&!dateValue.value){
// searchList.value = expenseList.value; searchList.value = [];
return return
} }
//搜索 数组expenseList.value 参数名字或者工号nameUserNo.value 日期dateValue.value //搜索 数组expenseList.value 参数名字或者工号nameUserNo.value 日期dateValue.value
@@ -266,7 +270,7 @@ const searchData = (val) => {
let scrollHeight = null let scrollHeight = null
filteredList.length && (scrollHeight = expenseList.value.findIndex(item => item.id === filteredList[0].id)) filteredList.length && (scrollHeight = expenseList.value.findIndex(item => item.id === filteredList[0].id))
if(scrollHeight||scrollHeight==0){ if(scrollHeight||scrollHeight==0){
drawerContent.value.scrollTo({top:(scrollHeight+1)*50+300,behavior: 'smooth'}) drawerContent.value?.$el.querySelector('.ant-table-body')?.scrollTo({top:scrollHeight*55,behavior: 'smooth'})
} }
} }
const resetData = () => { const resetData = () => {
@@ -281,12 +285,14 @@ const columns = [
dataIndex: 'name', dataIndex: 'name',
key: 'name', key: 'name',
align: 'center', align: 'center',
width:120,
}, },
{ {
title: '讲师工号', title: '讲师工号',
dataIndex: 'userNo', dataIndex: 'userNo',
key: 'userNo', key: 'userNo',
align: 'center', align: 'center',
width:120,
}, },
{ {
title: '所属组织', title: '所属组织',
@@ -294,6 +300,7 @@ const columns = [
key: 'orgName', key: 'orgName',
align: 'center', align: 'center',
ellipsis: true, ellipsis: true,
width:100,
customCell :() => {return {style: {maxWidth: '200px',overflow: 'hidden',whiteSpace: 'nowrap',textOverflow:'ellipsis',cursor:'pointer'}}}, customCell :() => {return {style: {maxWidth: '200px',overflow: 'hidden',whiteSpace: 'nowrap',textOverflow:'ellipsis',cursor:'pointer'}}},
}, },
@@ -302,12 +309,15 @@ const columns = [
dataIndex: 'tsystemName', dataIndex: 'tsystemName',
key: 'tsystemName', key: 'tsystemName',
align: 'center', align: 'center',
width:100,
customCell :() => {return {style: {maxWidth: '200px',overflow: 'hidden',whiteSpace: 'nowrap',textOverflow:'ellipsis',cursor:'pointer'}}},
}, },
{ {
title: '讲师等级', title: '讲师等级',
dataIndex: 'tlevelName', dataIndex: 'tlevelName',
key: 'tlevelName', key: 'tlevelName',
align: 'center', align: 'center',
width:100,
customRender: ({ text })=>{ customRender: ({ text })=>{
return text||'-' return text||'-'
} }
@@ -317,6 +327,7 @@ const columns = [
dataIndex: 'payrollPlace', dataIndex: 'payrollPlace',
key: 'payrollPlace', key: 'payrollPlace',
align: 'center', align: 'center',
width:120,
customRender: ({ text })=>{ customRender: ({ text })=>{
return text||'-' return text||'-'
} }
@@ -327,6 +338,7 @@ const columns = [
dataIndex: 'courseType', dataIndex: 'courseType',
key: 'courseType', key: 'courseType',
align: 'center', align: 'center',
width:120,
customRender: ({ text,record })=>{ customRender: ({ text,record })=>{
switch (text) { switch (text) {
case 0: case 0:
@@ -349,18 +361,22 @@ const columns = [
dataIndex: 'courseName', dataIndex: 'courseName',
key: 'courseName', key: 'courseName',
align: 'center', align: 'center',
width:100,
customCell :() => {return {style: {maxWidth: '200px',overflow: 'hidden',whiteSpace: 'nowrap',textOverflow:'ellipsis',cursor:'pointer'}}},
}, },
{ {
title: '授课/开发课程日期', title: '授课/开发课程日期',
dataIndex: 'teachingDate', dataIndex: 'teachingDate',
key: 'teachingDate', key: 'teachingDate',
align: 'center', align: 'center',
width:150,
}, },
{ {
title: '授课/开发课程时长', title: '授课/开发课程时长',
dataIndex: 'teachingTime', dataIndex: 'teachingTime',
key: 'teachingTime', key: 'teachingTime',
align: 'center', align: 'center',
width:150,
customRender: ({ text,record })=>{ customRender: ({ text,record })=>{
return (text/60).toFixed(2)+'小时' return (text/60).toFixed(2)+'小时'
} }
@@ -370,6 +386,7 @@ const columns = [
dataIndex: 'studys', dataIndex: 'studys',
key: 'studys', key: 'studys',
align: 'center', align: 'center',
width:100,
customRender: ({ text })=>{ customRender: ({ text })=>{
return text||'0' return text||'0'
} }
@@ -379,6 +396,7 @@ const columns = [
dataIndex: 'score', dataIndex: 'score',
key: 'score', key: 'score',
align: 'center', align: 'center',
width:100,
customRender: (value) => { customRender: (value) => {
return ( return (
<div> <div>
@@ -392,12 +410,14 @@ const columns = [
dataIndex: 'levelPay', dataIndex: 'levelPay',
key: 'levelPay', key: 'levelPay',
align: 'center', align: 'center',
width:100,
}, },
{ {
title: '计划费用', title: '计划费用',
dataIndex: 'expense', dataIndex: 'expense',
key: 'expense', key: 'expense',
align: 'center', align: 'center',
width:100,
}, },
// { // {
// title: '应发费用', // title: '应发费用',
@@ -409,6 +429,7 @@ const columns = [
title: '操作', title: '操作',
align: 'center', align: 'center',
fixed: 'right', fixed: 'right',
width:100,
customCell:()=>{return {style:{background:'#fff'}}}, customCell:()=>{return {style:{background:'#fff'}}},
slots: { customRender: "action" }, slots: { customRender: "action" },
}, },
@@ -459,6 +480,10 @@ const config = () => {
::v-deep .ant-table-tbody > tr:not(.ant-table-row-selected):not(:hover) > td { ::v-deep .ant-table-tbody > tr:not(.ant-table-row-selected):not(:hover) > td {
background: none; background: none;
} }
::v-deep .ant-table-thead > tr > th {
background-color: #eff4fc !important;
text-align: center !important;
}
.delete { .delete {
min-width: 424px; min-width: 424px;
background: #ffffff; background: #ffffff;
@@ -661,7 +686,7 @@ const config = () => {
} }
.table{ .table{
::v-deep .ant-table-cell-fix-right { ::v-deep .ant-table-cell-fix-right {
width: 160px !important; width: 120px !important;
} }
} }
} }

View File

@@ -757,18 +757,25 @@ export default {
ellipsis: true, align: "center", ellipsis: true, align: "center",
width: 120, width: 120,
}, },
{
title: '课程名称 ',
dataIndex: 'courseName',
key: 'courseName ',
ellipsis: true, align: "left",
width: 200,
},
{ {
title: '讲师体系 ', title: '讲师体系 ',
dataIndex: 'tsystemName', dataIndex: 'tsystemName',
key: 'tsystemName', key: 'tsystemName',
ellipsis: true, align: "center", ellipsis: true, align: "left",
width: 200, width: 200,
}, },
{ {
title: '培训发生组织 ', title: '培训发生组织 ',
dataIndex: 'trainOrgName', dataIndex: 'trainOrgName',
key: 'trainOrgName', key: 'trainOrgName',
ellipsis: true, align: "center", ellipsis: true, align: "left",
width: 200, width: 200,
customRender: (value, record) => { customRender: (value, record) => {
return ( return (
@@ -797,13 +804,7 @@ export default {
) )
} }
}, },
{
title: '课程名称 ',
dataIndex: 'courseName',
key: 'courseName ',
ellipsis: true, align: "center",
width: 120,
},
{ {
title: '课程类型 ', title: '课程类型 ',
dataIndex: 'type', dataIndex: 'type',

View File

@@ -851,7 +851,7 @@ export default {
key: 'name', key: 'name',
ellipsis: true, ellipsis: true,
align: "center", align: "center",
width: 160, width: 120,
}, },
{ {
title: '讲师工号', title: '讲师工号',
@@ -859,7 +859,7 @@ export default {
key: 'userNo', key: 'userNo',
align: "center", align: "center",
ellipsis: true, ellipsis: true,
width: 160, width: 120,
}, },
{ {
title: '所属组织 ', title: '所属组织 ',
@@ -867,7 +867,7 @@ export default {
key: 'orgName', key: 'orgName',
ellipsis: true, ellipsis: true,
align: "center", align: "center",
width: 200, width: 160,
slots: { customRender: "orgName" }, slots: { customRender: "orgName" },
}, },
{ {
@@ -876,7 +876,7 @@ export default {
key: 'tsystemName', key: 'tsystemName',
ellipsis: true, ellipsis: true,
align: "center", align: "center",
width: 160, width: 120,
}, },
{ {
title: '讲师级别', title: '讲师级别',
@@ -884,7 +884,7 @@ export default {
key: 'tlevelName', key: 'tlevelName',
ellipsis: true, ellipsis: true,
align: "center", align: "center",
width: 160, width: 100,
}, },
{ {
title: '发薪地', title: '发薪地',
@@ -892,7 +892,7 @@ export default {
key: 'payrollPlace', key: 'payrollPlace',
ellipsis: true, ellipsis: true,
align: "center", align: "center",
width: 160, width: 100,
customRender: ({text}) => { customRender: ({text}) => {
return text || '-' return text || '-'
} }
@@ -903,7 +903,7 @@ export default {
key: 'courseType', key: 'courseType',
ellipsis: true, ellipsis: true,
align: "center", align: "center",
width: 160, width: 100,
customRender: (value) => { customRender: (value) => {
return ( return (
<div> <div>
@@ -926,7 +926,7 @@ export default {
key: 'courseName', key: 'courseName',
ellipsis: true, ellipsis: true,
align: "center", align: "center",
width: 200, width: 160,
}, },
{ {
title: '授课/开发课程日期', title: '授课/开发课程日期',
@@ -934,7 +934,7 @@ export default {
key: 'teachingDate', key: 'teachingDate',
ellipsis: true, ellipsis: true,
align: "center", align: "center",
width: 200, width: 160,
}, },
{ {
title: '授课/开发课程时长 ', title: '授课/开发课程时长 ',
@@ -957,7 +957,7 @@ export default {
key: 'studys', key: 'studys',
ellipsis: true, ellipsis: true,
align: "center", align: "center",
width: 160, width: 100,
customRender: ({text}) => { customRender: ({text}) => {
return text || "0"; return text || "0";
} }
@@ -968,7 +968,7 @@ export default {
key: 'score', key: 'score',
ellipsis: true, ellipsis: true,
align: "center", align: "center",
width: 160, width: 100,
customRender: (value) => { customRender: (value) => {
return ( return (
<div> <div>
@@ -983,7 +983,7 @@ export default {
key: 'levelPay', key: 'levelPay',
ellipsis: true, ellipsis: true,
align: "center", align: "center",
width: 160, width: 120,
}, },
{ {
title: '计划费用 ', title: '计划费用 ',
@@ -991,7 +991,7 @@ export default {
key: 'expense', key: 'expense',
ellipsis: true, ellipsis: true,
align: "center", align: "center",
width: 160, width: 120,
}, },
// { // {
// title: '应发费用 ', // title: '应发费用 ',
@@ -1008,7 +1008,7 @@ export default {
ellipsis: true, ellipsis: true,
align: "center", align: "center",
fixed: "right", fixed: "right",
width: 160, width: 120,
slots: { customRender: "appEdit" }, slots: { customRender: "appEdit" },
}, },
]) ])
@@ -1259,7 +1259,7 @@ export default {
.table{ .table{
padding-bottom: 70px; padding-bottom: 70px;
::v-deep .ant-table-cell-fix-right { ::v-deep .ant-table-cell-fix-right {
width: 160px !important; width: 120px !important;
} }
} }
} }

View File

@@ -511,7 +511,7 @@
title: '操作 ', title: '操作 ',
dataIndex: 'operation', dataIndex: 'operation',
key: 'operation', key: 'operation',
ellipsis: true, align: "right", ellipsis: true, align: "center",
fixed: "right", fixed: "right",
width: 120, width: 120,
scopedSlots: { customRender: "action" }, scopedSlots: { customRender: "action" },

View File

@@ -18,7 +18,7 @@
</a-form-item> </a-form-item>
<a-form-item class="select"> <a-form-item class="select">
<a-select style="width: 235px ;margin-bottom:20px" v-model:value="searchParam.trainOrgId" placeholder="请选择培训发生组织" allowClear <a-select style="width: 235px ;margin-bottom:20px" v-model:value="searchParam.trainOrgId" placeholder="请选择培训发生组织" allowClear
:options="orgList" :options="orgListSearch"
v-on:keydown.enter="enterPressHadlerSearch"> v-on:keydown.enter="enterPressHadlerSearch">
</a-select> </a-select>
</a-form-item> </a-form-item>
@@ -611,6 +611,7 @@
tableDataSee: [], tableDataSee: [],
SeeLoading: false, SeeLoading: false,
orgList: [], orgList: [],
orgListSearch: [],
selectsIds: '', selectsIds: '',
visibleConfirm: false, visibleConfirm: false,
title:'导入讲师费记录', title:'导入讲师费记录',
@@ -699,7 +700,13 @@
value: item.id value: item.id
} }
}) })
state.orgList.unshift({ state.orgListSearch = res.data.data?.map(item=>{
return{
label: item.affiliationName,
value: item.id
}
})
state.orgListSearch.unshift({
label: '全部', value: '' label: '全部', value: ''
}) })
}) })
@@ -916,14 +923,14 @@ getAllLevelList().then((res) => {
dataIndex: 'courseName', dataIndex: 'courseName',
key: 'courseName', key: 'courseName',
ellipsis: true, ellipsis: true,
align: "center", align: "left",
width: 200, width: 200,
}, },
{ {
title: '培训发生组织', title: '培训发生组织',
dataIndex: 'trainOrgName', dataIndex: 'trainOrgName',
key: 'trainOrgName', key: 'trainOrgName',
ellipsis: true, align: "center", ellipsis: true, align: "left",
width: 200, width: 200,
}, },
@@ -953,8 +960,8 @@ getAllLevelList().then((res) => {
title: '讲师体系', title: '讲师体系',
dataIndex: 'tsystemName', dataIndex: 'tsystemName',
key: 'tsystemName', key: 'tsystemName',
ellipsis: true, align: "center", ellipsis: true, align: "left",
width: 120, width: 200,
customRender: ({ text })=>{ customRender: ({ text })=>{
return text||'-' return text||'-'
} }

View File

@@ -25,7 +25,7 @@
</div> </div>
</a-form> </a-form>
<div style="width: 100%;"></div> <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" > <a-button @click="searchResetPrevious()" type="primary" class="langbtn" style="width: 150px; height: 40px; border-radius: 8px" >
<FolderAddOutlined /> 重新汇总上月讲师费 <FolderAddOutlined /> 重新汇总上月讲师费
</a-button> </a-button>
@@ -171,7 +171,7 @@
<MonthlyStatistics v-model:visible="opendrawer" :id="drawerId" ></MonthlyStatistics> <MonthlyStatistics v-model:visible="opendrawer" :id="drawerId" ></MonthlyStatistics>
</template> </template>
<script lang="jsx"> <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 { message } from "ant-design-vue";
import dayjs from "dayjs"; import dayjs from "dayjs";
import { useStore } from "vuex"; import { useStore } from "vuex";
@@ -179,7 +179,7 @@ import { useRouter } from "vue-router";
import { getOrganization } from "../../api/Teaching"; import { getOrganization } from "../../api/Teaching";
import { queryTeacherFeeMonthly, getTeacherFeeDetailListByTeacherNo, getTeacherFeeListByTeacherNo,TeacherFeeTotalList,createMonthSummary} from "../../api/lecturerFeeStatistics" 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 dialog from '@/utils/dialog'
import MonthlyStatistics from './MonthlyStatistics' import MonthlyStatistics from './MonthlyStatistics'
export default { export default {
@@ -188,9 +188,22 @@ export default {
MonthlyStatistics, MonthlyStatistics,
}, },
setup() { 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 store = useStore();
const router = useRouter(); const router = useRouter();
const state = reactive({ const state = reactive({
isAdmin: false,
opendrawer: false, opendrawer: false,
drawerId: '', drawerId: '',
summaryDate: null, summaryDate: null,
@@ -243,11 +256,11 @@ export default {
width:'100px', width:'100px',
}, },
{ {
title: '资源归属 ', title: '培训发生组织 ',
dataIndex: 'trainOrgName', dataIndex: 'trainOrgName',
key: 'trainOrgName', key: 'trainOrgName',
ellipsis: true, ellipsis: true,
align: "center", align: "left",
width: '200px', width: '200px',
}, },
{ {

View File

@@ -258,7 +258,7 @@ export default {
key: 'name', key: 'name',
ellipsis: true, ellipsis: true,
align: "center", align: "center",
width: 160, width: 120,
}, },
{ {
title: '讲师工号', title: '讲师工号',
@@ -266,7 +266,7 @@ export default {
key: 'userNo', key: 'userNo',
align: "center", align: "center",
ellipsis: true, ellipsis: true,
width: 160, width: 120,
}, },
{ {
title: '所属组织 ', title: '所属组织 ',
@@ -274,7 +274,7 @@ export default {
key: 'orgName', key: 'orgName',
ellipsis: true, ellipsis: true,
align: "center", align: "center",
width: 200, width: 160,
customRender: ({text})=>{ customRender: ({text})=>{
return endOrg(text) return endOrg(text)
} }
@@ -285,7 +285,7 @@ export default {
key: 'payrollPlace', key: 'payrollPlace',
ellipsis: true, ellipsis: true,
align: "center", align: "center",
width: 160, width: 120,
}, },
{ {
title: '授课时长(系统 ) ', title: '授课时长(系统 ) ',
@@ -293,7 +293,7 @@ export default {
key: 'teachingSystem', key: 'teachingSystem',
ellipsis: true, ellipsis: true,
align: "center", align: "center",
width: 160, width: 140,
}, },
{ {
title: '授课时长(录入) ', title: '授课时长(录入) ',
@@ -301,7 +301,7 @@ export default {
key: 'teachingEnter', key: 'teachingEnter',
ellipsis: true, ellipsis: true,
align: "center", align: "center",
width: 160, width: 140,
}, },
{ {
title: '开发课程时长 ', title: '开发课程时长 ',
@@ -309,7 +309,7 @@ export default {
key: 'teachingDevelop', key: 'teachingDevelop',
ellipsis: true, ellipsis: true,
align: "center", align: "center",
width: 160, width: 120,
}, },
{ {
title: '计划费用 ', title: '计划费用 ',
@@ -317,7 +317,7 @@ export default {
key: 'expense', key: 'expense',
ellipsis: true, ellipsis: true,
align: "center", align: "center",
width: 160, width: 120,
}, },
{ {
title: '应发费用 ', title: '应发费用 ',
@@ -325,7 +325,7 @@ export default {
key: 'payableExpense', key: 'payableExpense',
ellipsis: true, ellipsis: true,
align: "center", align: "center",
width: 160, width: 120,
}, },
{ {
title: '操作 ', title: '操作 ',
@@ -334,7 +334,7 @@ export default {
ellipsis: true, ellipsis: true,
align: "center", align: "center",
fixed: "right", fixed: "right",
width: 160, width: 100,
scopedSlots: { customRender: "action" }, scopedSlots: { customRender: "action" },
}, },
]) ])

View File

@@ -150,11 +150,11 @@
是否为根节点 是否为根节点
</template> </template>
<div style="display: flex;align-items: center;"> <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="1"></a-radio>
<a-radio :value="0"></a-radio> <a-radio :value="0"></a-radio>
</a-radio-group> </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/> :options="!formParam.isParent?PlaceOfPayList:PlaceOfPayListTwo" allowClear showSearch/>
</div> </div>
</a-form-item> </a-form-item>
@@ -350,6 +350,7 @@ export default{
code: null, code: null,
isContains: '0', isContains: '0',
affiliationOrgList: [], affiliationOrgList: [],
locking: 1,
}, },
}) })
const PlaceOfPayList = ref([ const PlaceOfPayList = ref([
@@ -399,7 +400,7 @@ export default{
title: '培训发生组织名称 ', title: '培训发生组织名称 ',
dataIndex: 'affiliationName', dataIndex: 'affiliationName',
key: 'affiliationName', key: 'affiliationName',
ellipsis: true, align: "center", ellipsis: true, align: "left",
width: '200px', width: '200px',
}, },
{ {
@@ -429,7 +430,7 @@ export default{
title: '是否为根节点名称', title: '是否为根节点名称',
dataIndex: 'parentName', dataIndex: 'parentName',
key: 'parentName', key: 'parentName',
align: "center", align: "left",
width: '200px', width: '200px',
customRender: ({text,record})=>{ customRender: ({text,record})=>{
return ( return (
@@ -442,7 +443,7 @@ export default{
dataIndex: 'leaderName', dataIndex: 'leaderName',
key: 'leaderName', key: 'leaderName',
ellipsis: true, ellipsis: true,
align: "center", align: "left",
width: '200px', width: '200px',
}, },
@@ -759,6 +760,7 @@ const getTableDate = (obj) => {
code: null, code: null,
isContains: '0', isContains: '0',
affiliationOrgList: [], affiliationOrgList: [],
locking: 1,
} }
} }
async function validateField(name) { async function validateField(name) {