UNPKG

wui-print

Version:

前端打印插件,包含打印设计器、打印表单、打印API

130 lines (129 loc) 4.15 kB
import { deepCopy } from "../../print-designer-utils"; const getHeaderCellId = ({ rowIndex, colIndex } = {}) => { return `${rowIndex}-${colIndex}`; }; const createHeaderSpanDetails = ({ complexTableDetails } = {}) => { let spanHeaderCellDict = {}; let spanHeaderCellList = []; if (!complexTableDetails.headerLayout || complexTableDetails.headerLayout.length <= 0) { return { spanHeaderCellDict, spanHeaderCellList }; } complexTableDetails.headerLayout.forEach((item, index) => { let rowspan = !!item.rowspan ? item.rowspan : 1; let colspan = !!item.colspan ? item.colspan : 1; let minRowIndex = item.rowIndex; let maxRowIndex = item.rowIndex + rowspan - 1; let minColIndex = item.colIndex; let maxColIndex = item.colIndex + colspan - 1; let itemSpanCellList = []; for (let rowIndex = minRowIndex; rowIndex <= maxRowIndex; rowIndex++) { for (let colIndex = minColIndex; colIndex <= maxColIndex; colIndex++) { let newCellDetails; if (rowIndex === item.rowIndex && colIndex === item.colIndex) { newCellDetails = { rowIndex, colIndex, rowspan, colspan, show: true }; } else { newCellDetails = { rowIndex, colIndex, rowspan, colspan, startRowIndex: item.rowIndex, startColIndex: item.colIndex, show: false }; } itemSpanCellList.push(newCellDetails); } } spanHeaderCellDict[getHeaderCellId({ rowIndex: item.rowIndex, colIndex: item.colIndex })] = itemSpanCellList; spanHeaderCellList.push(...itemSpanCellList); }); return { spanHeaderCellDict, spanHeaderCellList }; }; const getHeaderCellShow = ({ rowIndex, colIndex, spanHeaderCellList }) => { if (!spanHeaderCellList || spanHeaderCellList.length <= 0) { return true; } let cellItem = spanHeaderCellList.find((item, index) => { return rowIndex === item.rowIndex && item.colIndex === colIndex; }); if (!cellItem) { return true; } if (!!cellItem) { return cellItem.show; } }; const getRowspan = ({ rowIndex, colIndex, headerLayout } = {}) => { let nowRowspan = 1; if (!headerLayout || headerLayout.length <= 0) { return nowRowspan; } let cellItem = headerLayout.find((item, index) => { return rowIndex === item.rowIndex && item.colIndex === colIndex; }); if (!cellItem) { return nowRowspan; } if (!!cellItem && !!cellItem.rowspan) { return cellItem.rowspan; } return nowRowspan; }; const getColspan = ({ rowIndex, colIndex, headerLayout } = {}) => { let nowColspan = 1; if (!headerLayout || headerLayout.length <= 0) { return nowColspan; } let cellItem = headerLayout.find((item, index) => { return rowIndex === item.rowIndex && item.colIndex === colIndex; }); if (!cellItem) { return nowColspan; } if (!!cellItem && !!cellItem.colspan) { return cellItem.colspan; } return nowColspan; }; const getTableData = ({ complexTableDetails, printData } = {}) => { if (!complexTableDetails.props || !complexTableDetails.props.field) { return []; } let field = complexTableDetails.props.field; if (Array.isArray(printData[field])) { return deepCopy(printData[field]); } return []; }; const formatHeaderRules = ({ complexTableDetails }) => { let headerRules = complexTableDetails.headerRules; if (!headerRules) { return; } let { spanHeaderCellDict, spanHeaderCellList } = createHeaderSpanDetails({ complexTableDetails }); spanHeaderCellList.forEach((item, index) => { if (!!item.show) { return; } let headerCellId = getHeaderCellId({ rowIndex: item.rowIndex, colIndex: item.colIndex }); if (!!headerRules[headerCellId]) { delete headerRules[headerCellId]; } }); }; export default { getHeaderCellId, createHeaderSpanDetails, getHeaderCellShow, getRowspan, getColspan, getTableData, formatHeaderRules };