diff --git a/public/template/内部授课记录导入模板.xlsx b/public/template/内部授课记录导入模板.xlsx index e97b3242..32242ccf 100644 Binary files a/public/template/内部授课记录导入模板.xlsx and b/public/template/内部授课记录导入模板.xlsx differ diff --git a/public/template/讲师费导入模板.xlsx b/public/template/讲师费导入模板.xlsx index 2dc50102..731d8286 100644 Binary files a/public/template/讲师费导入模板.xlsx and b/public/template/讲师费导入模板.xlsx differ diff --git a/src/components/project/BatchLecturer.vue b/src/components/project/BatchLecturer.vue index ff6a0c8f..dd618892 100644 --- a/src/components/project/BatchLecturer.vue +++ b/src/components/project/BatchLecturer.vue @@ -16,7 +16,7 @@
-
选择讲师费汇总:{{levelPay||0}}元
+
选择讲师费汇总:{{payableExpense||0}}元
{ selectedRowKeys.value.push(item.id) selectsData.value.push(item) } -const levelPay = ref(0) +const payableExpense = ref(0) watch(()=>selectsData.value.length,(val)=>{ if(val){ - levelPay.value = selectsData.value.reduce((a,b)=>{ - return a + b.levelPay + payableExpense.value = selectsData.value.reduce((a,b)=>{ + return a + b.payableExpense },0) }else{ - levelPay.value = 0 + payableExpense.value = 0 } }) const removeList = (item) => { @@ -115,35 +115,51 @@ const columns = [ }, { title: '所属组织', - dataIndex: 'name', - key: 'name', + dataIndex: 'orgName', + key: 'orgName', align: 'center', }, { title: '讲师体系', - dataIndex: 'name', - key: 'name', + dataIndex: 'tsystemName', + key: 'tsystemName', align: 'center', }, { title: '讲师等级', - dataIndex: 'name', - key: 'name', + dataIndex: 'tlevelName', + key: 'tlevelName', align: 'center', }, { title: '发薪地', - dataIndex: 'name', - key: 'name', + dataIndex: 'payrollPlace', + key: 'payrollPlace', align: 'center', }, { title: '课程类型', - dataIndex: 'name', - key: 'name', + dataIndex: 'courseType', + key: 'courseType', align: 'center', + customRender: ({ text,record })=>{ + switch (text) { + case 0: + return "在线课" + case 1: + return "面授课" + case 2: + return "课程开发" + case 3: + return "作业员入模培训" + case 4: + return "其他" + default: + return "-" + } + } }, { title: '课程名称', @@ -153,44 +169,47 @@ const columns = [ }, { title: '授课/开发课程日期', - dataIndex: 'name', - key: 'name', + dataIndex: 'teachingDate', + key: 'teachingDate', align: 'center', }, { title: '授课/开发课程时长', - dataIndex: 'name', - key: 'name', + dataIndex: 'teachingTime', + key: 'teachingTime', align: 'center', + customRender: ({ text,record })=>{ + return (text/60).toFixed(2)+'小时' + } }, { title: '参训人数', - dataIndex: 'name', - key: 'name', + dataIndex: 'studys', + key: 'studys', align: 'center', }, { title: '评分', - dataIndex: 'name', - key: 'name', + dataIndex: 'score', + key: 'score', align: 'center', }, { title: '课酬基准', - dataIndex: 'name', - key: 'name', + dataIndex: 'levelPay', + key: 'levelPay', align: 'center', }, { title: '计划费用', - dataIndex: 'name', - key: 'name', + dataIndex: 'expense', + key: 'expense', align: 'center', }, { title: '应发费用', - dataIndex: 'name', - key: 'name', + dataIndex: 'payableExpense', + key: 'payableExpense', align: 'center', }, { diff --git a/src/components/project/ConfirmLecturer.vue b/src/components/project/ConfirmLecturer.vue index c16fae32..22e4d30c 100644 --- a/src/components/project/ConfirmLecturer.vue +++ b/src/components/project/ConfirmLecturer.vue @@ -4,6 +4,7 @@ class="drawerStyle RouterFaceStus" placement="right" width="60%" + :zIndex="1001" >
@@ -23,14 +24,14 @@
{{item?.trainOrgName}}
-
{{item?.summaryTotal}}
+
{{item?.summaryTotal}}
- +
@@ -148,6 +149,11 @@ const handleConfirm = () => { close() closeDrawer() }) + }).catch(err=>{ + message.destroy() + message.error(err.data.msg) + close() + closeDrawer() }) } const forData = ref() @@ -186,19 +192,25 @@ watch(()=>props.visible,(val)=>{ } }) const removeId = (e,i) =>{ - forData.value?.forEach(item=>{ - item.expenseList?.some((i,l)=>{ - if(i.id == e.id){ - return item.expenseList.splice(l,1) + dialog({ + content: "是否确认移除", + ok: () =>{ + forData.value?.forEach(item=>{ + item.expenseList?.some((i,l)=>{ + if(i.id == e.id){ + return item.expenseList.splice(l,1) + } + }) + }) + if(searchTrue.value){ + searchList.value = searchList.value.filter(item=>item.id !== e.id) + expenseList.value = expenseList.value.filter(item=>item.id !== e.id) + }else{ + expenseList.value = expenseList.value.filter(item=>item.id !== e.id) } - }) + forData.value[indexList.value].summaryTotal = forData.value[indexList.value]?.summaryTotal - e.payableExpense + } }) - if(searchTrue.value){ - searchList.value = searchList.value.filter(item=>item.id !== e.id) - expenseList.value = expenseList.value.filter(item=>item.id !== e.id) - }else{ - expenseList.value = expenseList.value.filter(item=>item.id !== e.id) - } } const nameUserNo = ref(null) const dateValue = ref(null) @@ -244,15 +256,15 @@ const columns = [ }, { title: '所属组织', - dataIndex: 'name', - key: 'name', + dataIndex: 'orgName', + key: 'orgName', align: 'center', }, { title: '讲师体系', - dataIndex: 'name', - key: 'name', + dataIndex: 'tsystemName', + key: 'tsystemName', align: 'center', }, { @@ -276,15 +288,15 @@ const columns = [ customRender: ({ text,record })=>{ switch (text) { case 0: - return "在线" + return "在线课" case 1: - return "面授" + return "面授课" case 2: - return "授课" - case 3: return "课程开发" + case 3: + return "作业员入模培训" case 4: - return "作业员如模培训" + return "其他" default: return "-" } @@ -307,6 +319,9 @@ const columns = [ dataIndex: 'teachingTime', key: 'teachingTime', align: 'center', + customRender: ({ text,record })=>{ + return (text/60).toFixed(2)+'小时' + } }, { title: '参训人数', @@ -528,6 +543,7 @@ const config = () => { margin-bottom: 20px; .left{ width: 35%; + min-width: 86px; text-align:right; margin-right:30px; color: rgba(116, 120, 141, 0.603921568627451); @@ -538,7 +554,7 @@ const config = () => { .right{ color: #646C9A; .org{ - max-width: 180px; + max-width: 148px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; diff --git a/src/views/lecturer/InsideLecturer.vue b/src/views/lecturer/InsideLecturer.vue index 91e48289..97775a94 100644 --- a/src/views/lecturer/InsideLecturer.vue +++ b/src/views/lecturer/InsideLecturer.vue @@ -17,7 +17,7 @@ - @@ -473,7 +473,7 @@ export default { // pageSize1: "10", name: null, tsystemName: null, - tLevelId: null, + tLevelName: null, waitStatus: null, certStatus: null, courses: null, @@ -646,7 +646,7 @@ export default { let array = []; arr.map((value) => { let obj = { - value: value.id, + value: value.levelName, label: value.levelName, }; array.push(obj); @@ -868,7 +868,7 @@ export default { userNo: null, newdepartId: null, tsystemName: null, - tlevelId: null, + tLevelName: null, waitStatus: null, certStatus: null, salaryName: null, @@ -1267,7 +1267,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 : ""}&tLevelId=${state.searchParam.tLevelId ? state.searchParam.tLevelId : "" }&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?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 : ""}` ); // this.download('lesson_records/export', { // ...state.searchParam diff --git a/src/views/lecturer/LecturerAPPEdit.vue b/src/views/lecturer/LecturerAPPEdit.vue index bd72e8e1..f017ea64 100644 --- a/src/views/lecturer/LecturerAPPEdit.vue +++ b/src/views/lecturer/LecturerAPPEdit.vue @@ -31,7 +31,7 @@
- +
@@ -205,18 +205,17 @@ - - + + - - + + @@ -231,9 +230,9 @@ - - + + @@ -448,8 +447,10 @@ export default { }); } const clearlevelPayNumber = () => { - state.formParam.levelPay = state.formParam?.levelPay.replace(/\D/g, ''); - state.formParam.expense = state.formParam?.levelPay*state.formParam?.teachingTime + // state.formParam.levelPay = state.formParam?.levelPay.replace(/\D/g, ''); + // state.formParam.expense = state.formParam?.levelPay*state.formParam?.teachingTime + state.formParam.levelPay == 0 && (state.formParam.levelPay = null); + state.formParam.levelPay&&state.formParam.teachingTime && (state.formParam.expense = (state.formParam.levelPay*(state.formParam.teachingTime/60)).toFixed(2)) } const clearscoreNumber= () => { state.formParam.score = state.formParam?.score?.replace(/\D/g, ''); @@ -515,6 +516,13 @@ export default { state.formParam.teachingDate=state.teachingDate ? dayjs(state.teachingDate).format("YYYY-MM-DD HH:mm").toString() : "" state.formParam.tsystemName = state.tSystemNames.systemName state.formParam.tsystemId = state.tSystemNames.systemId + state.formParam.courseName = state.formParam.courseName?.trim() + if(state.formParam.score){ + state.formParam.score = String(state.formParam.score) + } + if(state.formParam.levelPay){ + state.formParam.levelPay = String(state.formParam.levelPay) + } const formItemNames = Object.keys(rules); for(let i=0;i{ message.destroy() state.teacherdialog = false; @@ -639,6 +647,7 @@ export default { state.teachingDate = dayjs(res.data.data.teachingDate) state.formParam.payrollPlaceId = res.data.data.payrollPlaceId state.formParam.orgNames = state.formParam.orgName + state.formParam.teachingDate = dayjs(state.formParam.teachingDate).format("YYYY-MM-DD HH:mm") }).catch((err) => { console.log("详情", err); }); @@ -667,7 +676,7 @@ export default { key: 'name', ellipsis: true, align: "center", - width: 200, + width: 160, }, { title: '讲师工号', @@ -675,7 +684,7 @@ export default { key: 'userNo', align: "center", ellipsis: true, - width: 200, + width: 160, }, { title: '所属组织 ', @@ -683,88 +692,109 @@ export default { key: 'orgName', ellipsis: true, align: "center", - width: 300, - scopedSlots: { customRender: "teacherOrg" }, + width: 200, }, { title: '讲师体系', - dataIndex: 'trainOrgName', - key: 'trainOrgName', + dataIndex: 'tsystemName', + key: 'tsystemName', ellipsis: true, align: "center", - width: 200, + width: 160, }, { - title: '讲师等级', - dataIndex: 'trainOrgName', - key: 'trainOrgName', + title: '讲师级别', + dataIndex: 'tlevelName', + key: 'tlevelName', ellipsis: true, align: "center", - width: 200, + width: 160, }, { title: '发薪地', - dataIndex: 'trainOrgName', - key: 'trainOrgName', + dataIndex: 'payrollPlace', + key: 'payrollPlace', ellipsis: true, align: "center", - width: 200, + width: 160, }, { title: '课程类型', - dataIndex: 'trainOrgName', - key: 'trainOrgName', + dataIndex: 'courseType', + key: 'courseType', ellipsis: true, align: "center", - width: 200, + width: 160, + customRender: (value) => { + return ( +
+ {String(value.record. courseType) + ? { + "0": "在线课", + "1": "面授课", + "2": "课程开发", + "3": "作业员入模培训", + "4": "其他", + }[value.record. courseType + ""] + : "-"} +
+ ) + } }, { title: '课程名称', - dataIndex: 'trainOrgName', - key: 'trainOrgName', + dataIndex: 'courseName', + key: 'courseName', ellipsis: true, align: "center", width: 200, }, { title: '授课/开发课程日期', - dataIndex: 'teachingSystem', - key: 'teachingSystem', + dataIndex: 'teachingDate', + key: 'teachingDate', ellipsis: true, align: "center", width: 200, }, { title: '授课/开发课程时长 ', - dataIndex: 'teachingEnter', - key: 'teachingEnter', + dataIndex: 'teachingTime', + key: 'teachingTime', ellipsis: true, align: "center", - width: 200, + width: 160, + customRender:(value)=>{ + return ( +
+ {(value.record?.teachingTime/60).toFixed(2)}小时 +
+ ) + } }, { title: '参训人数 ', - dataIndex: 'trainOrgName', - key: 'trainOrgName', + dataIndex: 'studys', + key: 'studys', ellipsis: true, align: "center", - width: 200, + width: 160, }, { title: '评分 ', - dataIndex: 'trainOrgName', - key: 'trainOrgName', + dataIndex: 'score', + key: 'score', ellipsis: true, align: "center", - width: 200, + width: 160, }, { title: '课程基准 ', - dataIndex: 'trainOrgName', - key: 'trainOrgName', + dataIndex: 'levelPay', + key: 'levelPay', ellipsis: true, align: "center", - width: 200, + width: 160, }, { title: '计划费用 ', @@ -772,7 +802,7 @@ export default { key: 'expense', ellipsis: true, align: "center", - width: 200, + width: 160, }, { title: '应发费用 ', @@ -780,7 +810,7 @@ export default { key: 'payableExpense', ellipsis: true, align: "center", - width: 200, + width: 160, }, { title: '操作 ', @@ -789,7 +819,7 @@ export default { ellipsis: true, align: "center", fixed: "right", - width: 200, + width: 160, slots: { customRender: "appEdit" }, }, ]) @@ -841,6 +871,24 @@ export default { ::v-deep .ant-descriptions-bordered .ant-descriptions-item-label{ width: 200px; } +.headers { + height: 73px; + border-bottom: 1px solid #e8e8e8; + display: flex; + justify-content: space-between; + align-items: center; + // background-color: red; + margin-bottom: 20px; + flex-shrink: 0; + + .headerTitle { + font-size: 18px; + font-weight: 600; + color: #333333; + line-height: 25px; + // margin-left: 24px; + } +} .delete { min-width: 424px; background: #ffffff; diff --git a/src/views/lecturer/LecturerApproval.vue b/src/views/lecturer/LecturerApproval.vue index 8d4c6d68..a1b8152b 100644 --- a/src/views/lecturer/LecturerApproval.vue +++ b/src/views/lecturer/LecturerApproval.vue @@ -12,7 +12,7 @@
-
创建时间:
+
汇总时间: