From 6ca854aab1bbbf2b07cc9c96c9dd76d9685b9df2 Mon Sep 17 00:00:00 2001 From: zhangsir Date: Mon, 30 Dec 2024 17:42:03 +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/components/project/BatchLecturer.vue | 44 +++++++++---- src/components/project/ConfirmLecturer.vue | 72 +++++++++++++++++----- src/views/lecturer/LecturerAPPEdit.vue | 20 +++++- src/views/lecturer/LecturerFee.vue | 2 +- 4 files changed, 109 insertions(+), 29 deletions(-) diff --git a/src/components/project/BatchLecturer.vue b/src/components/project/BatchLecturer.vue index 4d43d048..5c4d0702 100644 --- a/src/components/project/BatchLecturer.vue +++ b/src/components/project/BatchLecturer.vue @@ -22,9 +22,9 @@
- +
搜索 重置 @@ -34,7 +34,7 @@ { watch(()=>props.visible,(val)=>{ if(val){ loading.value = true + tableData.value = [] api.getListByStatus().then(res=>{ if(res.data.code == 200 ){ tableData.value = res.data.data @@ -96,7 +97,6 @@ watch(()=>props.visible,(val)=>{ loading.value = false }).catch(err=>{ loading.value = false - tableData.value = [] message.error(err.data.msg) }) }else{ @@ -110,6 +110,7 @@ const nameUserNo = ref(null) const dateValue = ref(null) const searchTrue = ref(false) const searchList = ref([]) +const timesList = ref([]) const resetData = () => { nameUserNo.value = null dateValue.value = null @@ -120,26 +121,45 @@ const searchData = (val) => { searchTrue.value = val if(!nameUserNo.value&&!dateValue.value){ searchList.value = []; + timesList.value = tableData.value return } //搜索 数组expenseList.value 参数名字或者工号:nameUserNo.value 日期:dateValue.value - const filteredList = tableData.value.filter(item => { - const isNameMatch = (item.name + item.userNo).includes(nameUserNo.value); + // const filteredList = tableData.value.filter(item => { + // const isNameMatch = (item.name + item.userNo).includes(nameUserNo.value); + // const teachingDateTimestamp = new Date(item.teachingDate).getTime(); + // if(dateValue.value==null){ + // return isNameMatch + // } + // const startDateTimestamp = new Date(dateValue.value[0]).getTime(); + // const endDateTimestamp = new Date(dateValue.value[1]).getTime(); + // const isDateInRange = teachingDateTimestamp >= startDateTimestamp && teachingDateTimestamp <= endDateTimestamp; + // if(nameUserNo.value&&startDateTimestamp&&endDateTimestamp){ + // return isNameMatch && isDateInRange; + // } + // return isNameMatch || isDateInRange; + // }); + const timesLists = tableData.value.filter(item => { const teachingDateTimestamp = new Date(item.teachingDate).getTime(); if(dateValue.value==null){ - return isNameMatch + return tableData.value } const startDateTimestamp = new Date(dateValue.value[0]).getTime(); const endDateTimestamp = new Date(dateValue.value[1]).getTime(); const isDateInRange = teachingDateTimestamp >= startDateTimestamp && teachingDateTimestamp <= endDateTimestamp; - if(nameUserNo.value&&startDateTimestamp&&endDateTimestamp){ - return isNameMatch && isDateInRange; - } - return isNameMatch || isDateInRange; + return isDateInRange; + }); + selectedRowKeys.value = selectedRowKeys.value.filter(id => + timesLists.some(item => item.id === id) + ); + const filteredList = timesLists.filter(item => { + const isNameMatch = (item.name + item.userNo).includes(nameUserNo.value); + return isNameMatch }); searchList.value = filteredList; + timesList.value = timesLists let scrollHeight = null - filteredList.length && (scrollHeight = tableData.value.findIndex(item => item.id === filteredList[0].id)) + filteredList.length && (scrollHeight = timesLists.findIndex(item => item.id === filteredList[0].id)) if(scrollHeight||scrollHeight==0){ drawerContent.value?.$el.querySelector('.ant-table-body')?.scrollTo({top:scrollHeight*55,behavior: 'smooth'}) } diff --git a/src/components/project/ConfirmLecturer.vue b/src/components/project/ConfirmLecturer.vue index 67b57fd7..69d851d5 100644 --- a/src/components/project/ConfirmLecturer.vue +++ b/src/components/project/ConfirmLecturer.vue @@ -25,7 +25,7 @@
{{item?.trainOrgName||'-'}}
-
{{item?.summaryTotal?item?.summaryTotal+'元':'-'}}
+
{{item?.summaryTotal?Number(item?.summaryTotal).toFixed(2)+'元':'-'}}
@@ -46,7 +46,7 @@ { // numTime.value+=1 // localStorage.setItem('numTime',numTime.value) 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('暂无可提交的数据') } @@ -171,6 +177,7 @@ const forData = ref() const indexList = ref(0) const expenseList = ref([]) const searchList = ref([]) +const timesList = ref([]) const clickItem = (item,i) => { expenseList.value = item.expenseList indexList.value = i @@ -182,6 +189,8 @@ const pageHeight = computed(() => { watch(()=>props.visible,(val)=>{ if(val){ loadingData.value = true + forData.value = [] + expenseList.value = [] // numTime.value = Number(localStorage.getItem('numTime')||0) api.getListByAffiliation( { @@ -200,8 +209,6 @@ watch(()=>props.visible,(val)=>{ }).catch(()=>{ message.error('获取数据失败,请重新尝试') loadingData.value = false - forData.value = [] - expenseList.value = [] }) }else{ nameUserNo.value = null @@ -222,7 +229,8 @@ const removeId = (e,i) =>{ }) }) if(searchTrue.value){ - searchList.value = searchList.value.filter(item=>item.id !== e.id) + // searchList.value = searchList.value.filter(item=>item.id !== e.id) + timesList.value = timesList.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) @@ -250,26 +258,44 @@ const searchData = (val) => { searchTrue.value = val if(!nameUserNo.value&&!dateValue.value){ searchList.value = []; + timesList.value = expenseList.value + forData.value[indexList.value].summaryTotal = expenseList.value.reduce((sum, item) => sum + (Number(item.expense) || 0), 0); return } //搜索 数组expenseList.value 参数名字或者工号:nameUserNo.value 日期:dateValue.value - const filteredList = expenseList.value.filter(item => { - const isNameMatch = (item.name + item.userNo).includes(nameUserNo.value); + // const filteredList = expenseList.value.filter(item => { + // const isNameMatch = (item.name + item.userNo).includes(nameUserNo.value); + // const teachingDateTimestamp = new Date(item.teachingDate).getTime(); + // if(dateValue.value==null){ + // return isNameMatch + // } + // const startDateTimestamp = new Date(dateValue.value[0]).getTime(); + // const endDateTimestamp = new Date(dateValue.value[1]).getTime(); + // const isDateInRange = teachingDateTimestamp >= startDateTimestamp && teachingDateTimestamp <= endDateTimestamp; + // if(nameUserNo.value&&startDateTimestamp&&endDateTimestamp){ + // return isNameMatch && isDateInRange; + // } + // return isNameMatch || isDateInRange; + // }); + const timesLists = expenseList.value.filter(item => { const teachingDateTimestamp = new Date(item.teachingDate).getTime(); if(dateValue.value==null){ - return isNameMatch + return expenseList.value } const startDateTimestamp = new Date(dateValue.value[0]).getTime(); const endDateTimestamp = new Date(dateValue.value[1]).getTime(); const isDateInRange = teachingDateTimestamp >= startDateTimestamp && teachingDateTimestamp <= endDateTimestamp; - if(nameUserNo.value&&startDateTimestamp&&endDateTimestamp){ - return isNameMatch && isDateInRange; - } - return isNameMatch || isDateInRange; + return isDateInRange; + }); + const filteredList = timesLists.filter(item => { + const isNameMatch = (item.name + item.userNo).includes(nameUserNo.value); + return isNameMatch }); searchList.value = filteredList; + timesList.value = timesLists + forData.value[indexList.value].summaryTotal = timesLists.reduce((sum, item) => sum + (Number(item.expense) || 0), 0); let scrollHeight = null - filteredList.length && (scrollHeight = expenseList.value.findIndex(item => item.id === filteredList[0].id)) + filteredList.length && (scrollHeight = timesLists.findIndex(item => item.id === filteredList[0].id)) if(scrollHeight||scrollHeight==0){ drawerContent.value?.$el.querySelector('.ant-table-body')?.scrollTo({top:scrollHeight*55,behavior: 'smooth'}) } @@ -446,9 +472,16 @@ const columns = [ const closeDrawer = () => emit("update:visible", false); const qureyDrawer = () => { 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('暂无可提交的数据') } + console.log(ids,'idssssss') dialog({ content: '是否确认讲师费信息无误?提交后按“培训发生组织”汇总至审批中心,等待验证后“提交”进入审批流程。', ok: () => { @@ -471,6 +504,15 @@ const config = () => { message.error('暂无可提交的数据') return } + // 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('暂无可提交的数据') + // } modalVisible.value = true; } @@ -686,11 +728,13 @@ const config = () => { padding-bottom: 80px; .top{ display: flex; + flex-wrap: wrap; align-items: center; - margin-bottom: 20px; + // margin-bottom: 20px; margin-top: 10px; .item{ margin-right: 20px; + margin-bottom: 20px; } } .table{ diff --git a/src/views/lecturer/LecturerAPPEdit.vue b/src/views/lecturer/LecturerAPPEdit.vue index c2c720a6..d4049f82 100644 --- a/src/views/lecturer/LecturerAPPEdit.vue +++ b/src/views/lecturer/LecturerAPPEdit.vue @@ -1,6 +1,8 @@