refactor(superManagement): 提取合并单元格计算逻辑
- 将 ckProjectDetail 和 deductedDetail 函数中的合并单元格计算逻辑提取到单独的函数 calculationMergeSpan 中- 在 assessmentRecord/index.tsx 中添加 calculationMergeSpan 函数实现合并单元格计算 - 通过提取公共逻辑,提高代码复用性和可维护性
This commit is contained in:
parent
0604beef06
commit
28bbc32efb
|
@ -7,6 +7,7 @@ import {deleteDataModal, submitSimpleFormModal} from "@/components/tsx/ModalPro.
|
|||
import api from "@/axios";
|
||||
import {message} from "ant-design-vue";
|
||||
import {dictSelectNodes} from "@/config/dict.ts";
|
||||
import {calculationMergeSpan} from "@/views/unitManage/police/assessmentRecord";
|
||||
|
||||
export const saveOrUpdateCkProject = (params: SaveOrUpdateCkProjectParams = {
|
||||
name: '',
|
||||
|
@ -62,35 +63,7 @@ export const deleteCkProjectById = (name: string, ckProjectId: string, callback:
|
|||
|
||||
export const ckProjectDetail = async (ckProjectId: string): Promise<CkProjectDetailRes[]> => {
|
||||
const {data} = await api.get<CkProjectDetailRes[]>('/assessmentCriteria/ckProjectDetail', {ckProjectId})
|
||||
|
||||
const groupRowSpan: Record<string, { firstIndex: number, count: number }> = {}
|
||||
const itemRowSpan: Record<string, { firstIndex: number, count: number }> = {}
|
||||
|
||||
data.forEach((item, index) => {
|
||||
//如果第一次没有值
|
||||
if (item.ckGroupId) {
|
||||
if (!groupRowSpan[item.ckGroupId]) {
|
||||
groupRowSpan[item.ckGroupId] = {count: 1, firstIndex: index}
|
||||
} else {
|
||||
groupRowSpan[item.ckGroupId].count++;
|
||||
data[index].groupRowSpan = 0
|
||||
}
|
||||
}
|
||||
|
||||
if (item.ckItemId) {
|
||||
if (!itemRowSpan[item.ckItemId]) {
|
||||
itemRowSpan[item.ckItemId] = {count: 1, firstIndex: index}
|
||||
} else {
|
||||
itemRowSpan[item.ckItemId].count++;
|
||||
data[index].itemRowSpan = 0
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
Object.values(groupRowSpan).forEach(({count, firstIndex}) => data[firstIndex].groupRowSpan = count)
|
||||
|
||||
Object.values(itemRowSpan).forEach(({count, firstIndex}) => data[firstIndex].itemRowSpan = count)
|
||||
|
||||
calculationMergeSpan(data)
|
||||
return data
|
||||
}
|
||||
|
||||
|
|
|
@ -5,37 +5,8 @@ import {Modal, Table} from "ant-design-vue";
|
|||
|
||||
export const deductedDetail = async (assessmentRecord: AssessmentRecordPagerVo) => {
|
||||
const {data} = await api.get<DeductedDetailRes[]>('/assessmentRecord/deductedDetail', {assessmentRecordId: assessmentRecord.snowFlakeId})
|
||||
const groupRowSpan: Record<string, { firstIndex: number, count: number }> = {}
|
||||
const itemRowSpan: Record<string, { firstIndex: number, count: number }> = {}
|
||||
|
||||
data.forEach((item, index) => {
|
||||
//如果第一次没有值
|
||||
if (item.ckGroupId) {
|
||||
if (!groupRowSpan[item.ckGroupId]) {
|
||||
groupRowSpan[item.ckGroupId] = {count: 1, firstIndex: index}
|
||||
} else {
|
||||
groupRowSpan[item.ckGroupId].count++;
|
||||
data[index].groupRowSpan = 0
|
||||
}
|
||||
}
|
||||
|
||||
if (item.ckItemId) {
|
||||
if (!itemRowSpan[item.ckItemId]) {
|
||||
itemRowSpan[item.ckItemId] = {count: 1, firstIndex: index}
|
||||
} else {
|
||||
itemRowSpan[item.ckItemId].count++;
|
||||
data[index].itemRowSpan = 0
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
Object.values(groupRowSpan).forEach(({count, firstIndex}) => {
|
||||
data[firstIndex].groupRowSpan = count;
|
||||
})
|
||||
|
||||
Object.values(itemRowSpan).forEach(({count, firstIndex}) => {
|
||||
data[firstIndex].itemRowSpan = count;
|
||||
})
|
||||
calculationMergeSpan(data)
|
||||
|
||||
const ckProjectDetailTableColumns: ColumnsType<DeductedDetailRes> = [
|
||||
{
|
||||
|
@ -99,5 +70,37 @@ export const deductedDetail = async (assessmentRecord: AssessmentRecordPagerVo)
|
|||
></Table>
|
||||
</div>
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 计算合并数值
|
||||
* @param data
|
||||
*/
|
||||
export const calculationMergeSpan = (data: Record<string, any>[]) => {
|
||||
const groupRowSpan: Record<string, { firstIndex: number, count: number }> = {}
|
||||
const itemRowSpan: Record<string, { firstIndex: number, count: number }> = {}
|
||||
|
||||
data.forEach((item, index) => {
|
||||
//如果第一次没有值
|
||||
if (item.ckGroupId) {
|
||||
if (!groupRowSpan[item.ckGroupId]) {
|
||||
groupRowSpan[item.ckGroupId] = {count: 1, firstIndex: index}
|
||||
} else {
|
||||
groupRowSpan[item.ckGroupId].count++;
|
||||
data[index].groupRowSpan = 0
|
||||
}
|
||||
}
|
||||
|
||||
if (item.ckItemId) {
|
||||
if (!itemRowSpan[item.ckItemId]) {
|
||||
itemRowSpan[item.ckItemId] = {count: 1, firstIndex: index}
|
||||
} else {
|
||||
itemRowSpan[item.ckItemId].count++;
|
||||
data[index].itemRowSpan = 0
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
Object.values(groupRowSpan).forEach(({count, firstIndex}) => data[firstIndex].groupRowSpan = count)
|
||||
Object.values(itemRowSpan).forEach(({count, firstIndex}) => data[firstIndex].itemRowSpan = count)
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue