From cad23a159909e0651cc4c6e6adc28adf30c30974 Mon Sep 17 00:00:00 2001 From: zhangsir Date: Wed, 8 Jan 2025 11:50:21 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=B2=E5=B8=88=E7=AE=A1=E7=90=86bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/Lecturer.js | 4 +- src/assets/icon.png | Bin 0 -> 5972 bytes src/assets/iconnot.png | Bin 0 -> 5618 bytes src/components/project/AddOrgContent.vue | 11 ++++- src/components/project/ConfirmLecturer.vue | 53 +++++++++++++++++---- src/views/lecturer/MonthlyStatistics.vue | 38 +++++++++++++-- src/views/lecturer/Organization.vue | 2 +- 7 files changed, 92 insertions(+), 16 deletions(-) create mode 100644 src/assets/icon.png create mode 100644 src/assets/iconnot.png diff --git a/src/api/Lecturer.js b/src/api/Lecturer.js index 24ae116e..ffe4cebc 100644 --- a/src/api/Lecturer.js +++ b/src/api/Lecturer.js @@ -56,7 +56,7 @@ export const getUserList = (keyword) => http.get(`/admin/thirdApi/user/list?page //查询弹框选择的组织信息 export const getSelectOrg = (id) => http.get(`/admin/affiliation/getSelectOrg?id=${id}`) //查询弹框不可选择组织(审核中的组织) -export const getUnSelectOrg = () => http.get(`/admin/affiliation/getUnSelectOrg`) +export const getUnSelectOrg = (isParent) => http.get(`/admin/affiliation/getUnSelectOrg?isParent=${isParent}`) //获取培训发生组织编号 export const getAffiliationCode = () => http.get('/admin/affiliation/getAffiliationCode') //查看或编辑回显培训发生组织 @@ -79,6 +79,8 @@ export const affiliatIsConfirm = (id) => http.post(`/admin/affiliation/isConfirm export const expenseSummaryById = (obj) => http.get( `/admin/expenseSummary/queryById?id=${obj.id}&name=${obj.name}&trainOrgId=${obj.trainOrgId||''}&pageNo=${obj.pageNo}&pageSize=${obj.pageSize}`) //撤回讲师费统计详情 export const removeBySummaryId = (obj) => http.post(`/admin/expenseSummary/removeBySummaryId?summaryId=${obj.summaryId}`,obj) +//撤回讲师费统计详情二级页面 +export const removeBySummaryDetailId = (obj) => http.post(`/admin/expenseSummary/removeBySummaryDetailId?detailId=${obj.detailId}`,obj) //查看月度讲师费详情 export const queryDetailId = (obj) => http.get(`/admin/expenseSummary/queryDetailId?summaryId=${obj.summaryId}&name=${obj.name}&startTime=${obj.startTime}&endTime=${obj.endTime}`) //查询未汇总的数据(批量确认弹框) diff --git a/src/assets/icon.png b/src/assets/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..6d9a512011d00a3ca6abaf4731858aca17a4944a GIT binary patch literal 5972 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[], + }, + isParent:{ + type:String, + default: '', } }) const emit = defineEmits({}) @@ -119,7 +123,7 @@ import * as lecturerApi from "@/api/Lecturer.js"; }); const notLists = ref([]) const getNot = () => { - lecturerApi.getUnSelectOrg().then(res=>{ + lecturerApi.getUnSelectOrg(props.isParent).then(res=>{ if(res.data.code == 200){ notLists.value = res.data.data } @@ -144,7 +148,10 @@ import * as lecturerApi from "@/api/Lecturer.js"; const onCheck = async (checkedKey, {checked: bool, checkedNodes, node, event}) => { // "965356037047586816" let length = treeAddData.value.length - if(checkedNodes.length > length){ + const checkedNodeIds = checkedNodes.map(item => item.id); + const treeAddDataOrgIds = treeAddData.value.map(item => item.orgId); + const combinedUniqueIds = [...new Set([...checkedNodeIds, ...treeAddDataOrgIds])]; + if(combinedUniqueIds.length > length){ await lecturerApi.getSelectOrg(node.id).then(res=>{ const targetNode = checkedNodes.find(item=>item.id == res?.data?.data[0]?.orgId) if(targetNode){ diff --git a/src/components/project/ConfirmLecturer.vue b/src/components/project/ConfirmLecturer.vue index 1231e3c4..474fdd67 100644 --- a/src/components/project/ConfirmLecturer.vue +++ b/src/components/project/ConfirmLecturer.vue @@ -27,6 +27,7 @@
{{item?.trainOrgName||'-'}}
{{item?.summaryTotal?Number(item?.summaryTotal).toFixed(2)+'元':'-'}}
+
@@ -140,16 +141,16 @@ const handleConfirm = () => { // } // numTime.value+=1 // localStorage.setItem('numTime',numTime.value) - const ids = forData.value.flatMap(item => item.expenseList.map(item => item.id)); + // const ids = forData.value.flatMap(item => item.expenseList.map(item => item.id)); // let ids = [] // if(searchTrue.value){ // ids = timesList.value.map(item=>item.id) // }else{ // ids = expenseList.value.map(item=>item.id) // } - if(!ids.length){ - return message.error('暂无可提交的数据') - } + // if(!ids.length){ + // return message.error('暂无可提交的数据') + // } modalVisible.value = false; emit('example',true) api.teacherExpenseConfirm({ids:ids?.join(',')}).then(res=>{ @@ -218,6 +219,7 @@ watch(()=>props.visible,(val)=>{ nameUserNo.value = null dateValue.value = null indexList.value = 0 + activeList.value = [] drawerContent.value?.$el.querySelector('.ant-table-body')?.scrollTo({top:0,behavior: 'smooth'}) } }) @@ -482,8 +484,20 @@ const columns = [ }, ] const closeDrawer = () => emit("update:visible", false); +const activeList = ref([]) +const setList = (item) => { + const index = activeList.value.findIndex(listItem => listItem === item.trainOrgId); + if (index > -1) { + activeList.value.splice(index, 1); + } else { + activeList.value.push(item.trainOrgId); + } +} const qureyDrawer = () => { - const ids = forData.value.flatMap(item => item.expenseList.map(item => item.id)); + const filterList = forData.value.filter(item=>{ + return activeList.value.includes(item.trainOrgId) + }) + const ids = filterList?.flatMap(item => item.expenseList?.map(item => item.id)); // let ids = [] // if(searchTrue.value){ // ids = timesList.value.map(item=>item.id) @@ -493,7 +507,6 @@ const qureyDrawer = () => { if(!ids.length){ return message.error('暂无可提交的数据') } - console.log(ids,'idssssss') dialog({ content: '是否确认讲师费信息无误?提交后按“培训发生组织”汇总至审批中心,等待验证后“提交”进入审批流程。', ok: () => { @@ -515,7 +528,11 @@ const qureyDrawer = () => { }) } const config = () => { - if(!expenseList.value.length){ + const filterList = forData.value.filter(item=>{ + return activeList.value.includes(item.trainOrgId) + }) + const ids = filterList?.flatMap(item => item.expenseList?.map(item => item.id)); + if(!ids.length){ message.error('暂无可提交的数据') return } @@ -679,7 +696,7 @@ const config = () => { justify-content: space-between; align-items: center; // background-color: red; - margin-bottom: 20px; + // margin-bottom: 20px; .headerTitle { margin: 24px 0; @@ -696,6 +713,7 @@ const config = () => { display: flex; align-items: center; overflow-x: auto; + padding-top: 20px; .list{ display: flex; align-items: center; @@ -706,6 +724,25 @@ const config = () => { border-radius:6px; margin-right: 20px; margin-bottom: 20px; + position: relative; + .icon{ + position: absolute; + right: -10px; + top: -10px; + width:24px; + height:24px; + cursor: pointer; + // background: url('@/assets/icon.png') no-repeat; + // background-size: 100% 100%; + } + .active{ + background: url('@/assets/icon.png') no-repeat; + background-size: 100% 100%; + } + .not{ + background: url('@/assets/iconnot.png') no-repeat; + background-size: 100% 100%; + } .left{ width: 35%; min-width: 86px; diff --git a/src/views/lecturer/MonthlyStatistics.vue b/src/views/lecturer/MonthlyStatistics.vue index 5ba7f779..8ca19765 100644 --- a/src/views/lecturer/MonthlyStatistics.vue +++ b/src/views/lecturer/MonthlyStatistics.vue @@ -133,7 +133,8 @@ -