From a375c6922e6560387cee039513f4045b033cae12 Mon Sep 17 00:00:00 2001 From: zhangsir Date: Thu, 9 Jan 2025 13:39:42 +0800 Subject: [PATCH 1/7] =?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/AddOrgContent.vue | 7 +- src/components/project/ConfirmLecturer.vue | 144 ++++++++------------- src/views/lecturer/Organization.vue | 5 +- 3 files changed, 63 insertions(+), 93 deletions(-) diff --git a/src/components/project/AddOrgContent.vue b/src/components/project/AddOrgContent.vue index b8058096..7fd8fc81 100644 --- a/src/components/project/AddOrgContent.vue +++ b/src/components/project/AddOrgContent.vue @@ -131,15 +131,18 @@ import * as lecturerApi from "@/api/Lecturer.js"; lecturerApi.getUnSelectOrg(props.isParent).then(res=>{ if(res.data.code == 200){ notLists.value = res.data.data + notLists.value = notLists.value.filter(item=>{ + return !treeAddData.value.some(item2=>item2.orgId == item.orgId) + }) } if(treeData.value.length){ treeData.value.map(item=>{ item.name = item.name?.split('(')[0] notLists.value.some(i=>{ - if(i.orgId == item.id){ + if(i.orgId == item.id ){ item.disabled = true item.name = item.name + '(' + i.affiliationName + ')' - // return true + return true } }) return item diff --git a/src/components/project/ConfirmLecturer.vue b/src/components/project/ConfirmLecturer.vue index 474fdd67..d8532182 100644 --- a/src/components/project/ConfirmLecturer.vue +++ b/src/components/project/ConfirmLecturer.vue @@ -27,29 +27,29 @@
{{item?.trainOrgName||'-'}}
{{item?.summaryTotal?Number(item?.summaryTotal).toFixed(2)+'元':'-'}}
-
+
- +
- +
- 搜索 - 重置 + 搜索 + 重置
@@ -135,24 +135,13 @@ const close = () => { modalVisible.value = false; } const handleConfirm = () => { - // if(numTime.value >= 10){ - // message.error('提交审批次数已达上限') - // return - // } - // 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('暂无可提交的数据') - // } modalVisible.value = false; emit('example',true) + const idList = [] + activeList.value?.map(item=>{ + idList.push(...timesList.value[item]) + }) + const ids = idList?.map(item=>item.id) api.teacherExpenseConfirm({ids:ids?.join(',')}).then(res=>{ console.log(res,'resssss') api.submitApproval({ids:res.data?.data?.join(',')}).then(res=>{ @@ -184,13 +173,13 @@ const expenseList = ref([]) const searchList = ref([]) const timesList = ref([]) const clickItem = (item,i) => { - expenseList.value = item.expenseList indexList.value = i - resetData() + resetData(i,false) } const pageHeight = computed(() => { return window.innerHeight - 450 }); +const searchConditions = ref([{ nameUserNo: '', dateValue: [] }]) watch(()=>props.visible,(val)=>{ if(val){ loadingData.value = true @@ -207,17 +196,21 @@ watch(()=>props.visible,(val)=>{ ).then(res=>{ if(res.data.code === 200){ forData.value = res.data.data - expenseList.value = res.data.data[indexList.value]?.expenseList || [] + forData.value.forEach((item,i) => { + searchConditions.value.push({ nameUserNo: '', dateValue: [] }); + expenseList.value.push(forData.value[i]?.expenseList || []) + timesList.value.push(forData.value[i]?.expenseList || []) + }); } loadingData.value = false - resetData() - }).catch(()=>{ + resetData(indexList.value,true) + }).catch((err)=>{ message.error('获取数据失败,请重新尝试') loadingData.value = false }) }else{ - nameUserNo.value = null - dateValue.value = null + searchConditions.value = [{ nameUserNo: '', dateValue: [] }] + timesList.value = [] indexList.value = 0 activeList.value = [] drawerContent.value?.$el.querySelector('.ant-table-body')?.scrollTo({top:0,behavior: 'smooth'}) @@ -235,11 +228,10 @@ const removeId = (e,i) =>{ }) }) if(searchTrue.value){ - // 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) + timesList.value[indexList.value] = timesList.value[indexList.value].filter(item=>item.id !== e.id) + expenseList.value[indexList.value] = expenseList.value[indexList.value].filter(item=>item.id !== e.id) }else{ - expenseList.value = expenseList.value.filter(item=>item.id !== e.id) + expenseList.value[indexList.value] = expenseList.value[indexList.value].filter(item=>item.id !== e.id) } forData.value[indexList.value].summaryTotal = (forData.value[indexList.value]?.summaryTotal - e.expense).toFixed(2) if(!forData.value[indexList.value].expenseList.length){ @@ -249,8 +241,6 @@ const removeId = (e,i) =>{ } }) } -const nameUserNo = ref(null) -const dateValue = ref(null) const searchTrue = ref(false) const drawerContent = ref(null) const customRow = (record) => { @@ -261,7 +251,7 @@ const customRow = (record) => { }; }; let timeout = null -const searchData = (val) => { +const searchData = (val,index) => { searchTrue.value = val loadingData.value = true if (timeout) { @@ -269,43 +259,32 @@ const searchData = (val) => { } timeout = setTimeout(() => { loadingData.value = false; - if(!nameUserNo.value&&!dateValue.value){ + const { nameUserNo, dateValue } = searchConditions.value[index]; + if(!nameUserNo&&!dateValue.length){ searchList.value = []; - timesList.value = expenseList.value - forData.value[indexList.value].summaryTotal = expenseList.value.reduce((sum, item) => sum + (Number(item.expense) || 0), 0); + timesList.value[indexList.value] = expenseList.value[indexList.value] + forData.value[indexList.value].summaryTotal = expenseList.value[indexList.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 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 timesLists = expenseList.value[indexList.value].filter(item => { const teachingDateTimestamp = new Date(item.teachingDate).getTime(); - if(dateValue.value==null){ - return expenseList.value + if(dateValue==null||!dateValue.length){ + return expenseList.value[indexList.value] } - const startDateTimestamp = new Date(dateValue.value[0]).getTime(); - const endDateTimestamp = new Date(dateValue.value[1]).getTime(); + const startDateTimestamp = new Date(dateValue[0]).getTime(); + const endDateTimestamp = new Date(dateValue[1]).getTime(); const isDateInRange = teachingDateTimestamp >= startDateTimestamp && teachingDateTimestamp <= endDateTimestamp; return isDateInRange; }); const filteredList = timesLists.filter(item => { - const isNameMatch = (item.name + item.userNo).includes(nameUserNo.value); + if(!nameUserNo){ + return + } + const isNameMatch = (item.name + item.userNo).includes(nameUserNo); return isNameMatch }); searchList.value = filteredList; - timesList.value = timesLists + timesList.value[indexList.value] = timesLists forData.value[indexList.value].summaryTotal = timesLists.reduce((sum, item) => sum + (Number(item.expense) || 0), 0); let scrollHeight = null filteredList.length && (scrollHeight = timesLists.findIndex(item => item.id === filteredList[0].id)) @@ -314,10 +293,9 @@ const searchData = (val) => { } }, 500); } -const resetData = () => { - nameUserNo.value = null - dateValue.value = null - searchData(false) +const resetData = (index,val) => { + val && (searchConditions.value[index] = { nameUserNo: '', dateValue: [] }); + searchData(true,index); } const emit = defineEmits(['update:visible']) const columns = [ @@ -341,6 +319,7 @@ const columns = [ key: 'courseName', align: 'left', width:160, + ellipsis:true, customCell :() => {return {style: {maxWidth: '200px',overflow: 'hidden',whiteSpace: 'nowrap',textOverflow:'ellipsis',cursor:'pointer'}}}, }, { @@ -486,24 +465,19 @@ const columns = [ const closeDrawer = () => emit("update:visible", false); const activeList = ref([]) const setList = (item) => { - const index = activeList.value.findIndex(listItem => listItem === item.trainOrgId); + const index = activeList.value.findIndex(listItem => listItem === item); if (index > -1) { activeList.value.splice(index, 1); } else { - activeList.value.push(item.trainOrgId); + activeList.value.push(item); } } const qureyDrawer = () => { - const filterList = forData.value.filter(item=>{ - return activeList.value.includes(item.trainOrgId) + const idList = [] + activeList.value?.map(item=>{ + idList.push(...timesList.value[item]) }) - const ids = filterList?.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) - // } + const ids = idList?.map(item=>item.id) if(!ids.length){ return message.error('暂无可提交的数据') } @@ -528,23 +502,15 @@ const qureyDrawer = () => { }) } const config = () => { - const filterList = forData.value.filter(item=>{ - return activeList.value.includes(item.trainOrgId) + const idList = [] + activeList.value?.map(item=>{ + idList.push(...timesList.value[item]) }) - const ids = filterList?.flatMap(item => item.expenseList?.map(item => item.id)); + const ids = idList?.map(item=>item.id) if(!ids.length){ 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; } diff --git a/src/views/lecturer/Organization.vue b/src/views/lecturer/Organization.vue index 4b84f830..1c6e0d5d 100644 --- a/src/views/lecturer/Organization.vue +++ b/src/views/lecturer/Organization.vue @@ -293,7 +293,7 @@
- +