liyu-pc-base 1.0.921 → 1.0.925
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{FieldRender-BOg7nm5z.js → FieldRender-DnOLSXTl.js} +1 -1
- package/dist/{FieldRender2-_MtcDkI5.js → FieldRender2-CvxGe238.js} +2 -2
- package/dist/{FormRender3-BtY9d91e.js → FormRender3-CAxOQgue.js} +1 -1
- package/dist/{RemoteSelectPro-CcWTS4f6.js → RemoteSelectPro-CcL_vU1K.js} +1 -1
- package/dist/{SearchRender-ByarFel1.js → SearchRender-Dr_qnvZM.js} +1 -1
- package/dist/components/index.js +7 -7
- package/dist/{dbViewConfig-RGSyUx3F.js → dbViewConfig-BF0QZ_mT.js} +1 -1
- package/dist/{detailTablePro-CqcVbn8O.js → detailTablePro-DxgfGYN3.js} +1 -1
- package/dist/index.js +1 -1
- package/dist/liyu-pc-base.css +1 -1
- package/dist/{tableModal-DSKuV-hn.js → tableModal-DZE5wntG.js} +1 -1
- package/dist/{tablePageHost-B_BOlBNA.js → tablePageHost-hE_1hQv4.js} +82 -44
- package/dist/{tablePro-IAcxxAGI.js → tablePro-t2yDX9oW.js} +16 -11
- package/package.json +1 -1
- package/dist/AttributeNomTable-DHED22ju.js.map +0 -1
- package/dist/AttributeTable-muxdKpWW.js.map +0 -1
- package/dist/FieldRender-BOg7nm5z.js.map +0 -1
- package/dist/FieldRender2-_MtcDkI5.js.map +0 -1
- package/dist/FormRender3-BtY9d91e.js.map +0 -1
- package/dist/ImportExcelModal-Dds857L2.js.map +0 -1
- package/dist/JsonObj-CmylW4Or.js.map +0 -1
- package/dist/JsonStr-JwOPdAYW.js.map +0 -1
- package/dist/RemoteCascader-B2ytkZp7.js.map +0 -1
- package/dist/RemoteFilterSelect-BthY6Fyt.js.map +0 -1
- package/dist/RemoteModal-Dqy32RFN.js.map +0 -1
- package/dist/RemoteSelect-27xLYvyg.js.map +0 -1
- package/dist/RemoteSelectPro-CcWTS4f6.js.map +0 -1
- package/dist/RemoteTable-D_12PvNS.js.map +0 -1
- package/dist/RemoteTable2-DF7gWHYf.js.map +0 -1
- package/dist/RemoteText-DwRLI0xq.js.map +0 -1
- package/dist/RemoteTreeSelectPro-CXMOariR.js.map +0 -1
- package/dist/SearchRender-ByarFel1.js.map +0 -1
- package/dist/TinymceEditor-waI-dlC5.js.map +0 -1
- package/dist/aiGenModel-C9E1ahu8.js.map +0 -1
- package/dist/api/api-model.js.map +0 -1
- package/dist/api/typing.js.map +0 -1
- package/dist/batchCreateUser-B4zAXSR6.js.map +0 -1
- package/dist/boldenText-Bv8Zo7Vh.js.map +0 -1
- package/dist/components/FormRender/utils.js.map +0 -1
- package/dist/components/gridPage/utils.js.map +0 -1
- package/dist/components/index.js.map +0 -1
- package/dist/components/remotePages/utils.js.map +0 -1
- package/dist/dbDataSourceConfig-Hj90tvTR.js.map +0 -1
- package/dist/dbViewConfig-RGSyUx3F.js.map +0 -1
- package/dist/default-DmCqrYQi.js.map +0 -1
- package/dist/detailTablePro-CqcVbn8O.js.map +0 -1
- package/dist/exceljs.min-BPhBd8yF.js.map +0 -1
- package/dist/function-BhYSb8ls.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/init-plugin-CvgtEpwY.js.map +0 -1
- package/dist/lodash-CMVwnWxD.js.map +0 -1
- package/dist/md5-WIoeWMjT.js.map +0 -1
- package/dist/modal-tools-CrXdI5sg.js.map +0 -1
- package/dist/props-util-D7nkeN4W.js.map +0 -1
- package/dist/remotePages-CvjMLjTh.js.map +0 -1
- package/dist/role-manage-C7O8b2SF.js.map +0 -1
- package/dist/syncDataSourceConfig-OZ2mJCJs.js.map +0 -1
- package/dist/syncExportRawData-Dpi-VJuu.js.map +0 -1
- package/dist/syncModelTypeConfig-B2vV_kKb.js.map +0 -1
- package/dist/tableModal-DSKuV-hn.js.map +0 -1
- package/dist/tablePageHost-B_BOlBNA.js.map +0 -1
- package/dist/tablePro-IAcxxAGI.js.map +0 -1
- package/dist/utils/excel.js.map +0 -1
- package/dist/utils/hooks/useFetchData.js.map +0 -1
- package/dist/utils/hooks/useTableColumn.js.map +0 -1
package/dist/utils/excel.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"excel.js","names":[],"sources":["../../src/utils/excel.ts"],"sourcesContent":["import type { BookType } from 'xlsx';\nimport { SSF, utils, writeFile } from 'xlsx';\n\nfunction datenum(v: any, date1904?: boolean) {\n if (date1904) v += 1462;\n const epoch = Date.parse(v);\n return (epoch - (new Date(Date.UTC(1899, 11, 30)) as unknown as number)) / (24 * 60 * 60 * 1000);\n}\n\nasync function sheetFromArrayOfArrays(data: any, ws: any, percent: any) {\n return new Promise(resolve => {\n const range = {\n s: {\n c: 10000000,\n r: 10000000,\n },\n e: {\n c: 0,\n r: 0,\n },\n };\n\n const batchSize = 1000; // 每批的大小\n const batches = [];\n for (let i = 0; i < data.length; i += batchSize) {\n const batch = data.slice(i, i + batchSize);\n batches.push(batch);\n }\n async function export_excel_data(batch, i) {\n return new Promise(resolve1 => {\n setTimeout(() => {\n if (i === 0) {\n console.log('开始export_xlsx');\n }\n for (let R = 0; R !== batch.length; ++R) {\n for (let C = 0; C !== batch[R].length; ++C) {\n const row = R + batchSize * i;\n if (range.s.r > row) range.s.r = row;\n if (range.s.c > C) range.s.c = C;\n if (range.e.r < row) range.e.r = row;\n if (range.e.c < C) range.e.c = C;\n const cell: Record<string, any> = {\n v: batch[R][C],\n };\n if (cell.v == null) continue;\n const cellRef = utils.encode_cell({\n c: C,\n r: row,\n });\n\n if (typeof cell.v === 'number') cell.t = 'n';\n else if (typeof cell.v === 'boolean') cell.t = 'b';\n else if (cell.v instanceof Date) {\n cell.t = 'n';\n cell.z = (SSF as any)._table[14];\n cell.v = datenum(cell.v);\n } else cell.t = 's';\n\n // ws[cellRef] = cell;\n console.log(row, C);\n utils.sheet_add_aoa(ws, [[cell.v]], { origin: { r: row, c: C } });\n }\n }\n batch.length = 0;\n percent.value = Number(((i / batches.length) * 100 * 0.95).toFixed(0));\n console.log(`batch ${i + 1} done`);\n resolve1(true);\n }, 10);\n });\n }\n async function processArray(array) {\n for (let i = 0; i < array.length; i++) {\n await export_excel_data(array[i], i);\n }\n if (range.s.c < 10000000) ws['!ref'] = utils.encode_range(range);\n resolve(ws);\n }\n processArray(batches);\n });\n}\n\nclass Workbook {\n SheetNames: any[];\n Sheets: any;\n\n constructor() {\n this.SheetNames = [];\n this.Sheets = {};\n if (!(this instanceof Workbook)) {\n return new Workbook();\n }\n }\n}\n\nfunction s2ab(s: string) {\n const buf = new ArrayBuffer(s.length);\n const view = new Uint8Array(buf);\n for (let i = 0; i !== s.length; ++i) {\n view[i] = s.charCodeAt(i) & 0xff;\n }\n return buf;\n}\n\nexport type ExportJsonToExcelType = {\n multiHeader?: any[];\n header: string[];\n data: any[][];\n filename: string;\n merges?: any[];\n autoWidth: boolean;\n bookType: BookType;\n percent?: any;\n};\n\nexport async function exportJsonToExcel(options: ExportJsonToExcelType) {\n const {\n multiHeader = [],\n header,\n data,\n filename,\n merges = [],\n autoWidth = true,\n bookType = 'xlsx',\n percent,\n } = options || {};\n const downloadFilename = filename || 'excel-list';\n const cloneData = data.slice();\n if (multiHeader && multiHeader.length > 0) {\n for (let i = multiHeader.length - 1; i > -1; i--) {\n cloneData.unshift(multiHeader[i]);\n }\n } else {\n cloneData.unshift(header);\n }\n const wsName = 'SheetJS';\n const wb = new Workbook();\n // const ws: any = {};\n const ws = utils.aoa_to_sheet([[]]);\n await sheetFromArrayOfArrays(cloneData, ws, percent);\n if (merges.length > 0) {\n if (!ws['!merges']) ws['!merges'] = [];\n merges.forEach(item => {\n ws['!merges'].push(item);\n });\n }\n\n if (autoWidth) {\n /* 设置worksheet每列的最大宽度*/\n const colWidth = cloneData.map(row =>\n row.map(val => {\n /* 先判断是否为null/undefined*/\n if (val == null) {\n return {\n wch: 10,\n };\n } else if (val.toString().charCodeAt(0) > 255) {\n /* 再判断是否为中文*/\n return {\n wch: val.toString().length * 2,\n };\n }\n return {\n wch: val.toString().length,\n };\n }),\n );\n /* 以第一行为初始值*/\n const result = colWidth[0];\n for (let i = 1; i < colWidth.length; i++) {\n for (let j = 0; j < colWidth[i].length; j++) {\n if (result[j].wch < colWidth[i][j].wch) {\n result[j].wch = colWidth[i][j].wch;\n }\n }\n }\n ws['!cols'] = result;\n }\n\n /* add worksheet to workbook */\n wb.SheetNames.push(wsName);\n wb.Sheets[wsName] = ws;\n console.log('start write xlsx ');\n\n /* export to file */\n writeFile(wb, `${downloadFilename}.${bookType}`);\n}\n\nexport type ExcelExportHeaderToken = string | { text: string; color?: string };\nexport type ExcelExportHeaderItem = {\n title: ExcelExportHeaderToken[];\n children?: ExcelExportHeaderItem[];\n};\n// header 改为树形结构,函数会自动展开成多层表头并计算单元格合并:\n// 1. title 表示当前表头单元格显示内容,支持 token 富文本颜色;\n// 2. children 表示下级表头,叶子节点不传 children;\n// 3. data 的列顺序按 header 深度优先遍历后的叶子节点顺序对应。\nexport type ExportJsonToExcelByTokenHeaderType = Omit<\n ExportJsonToExcelType,\n 'header' | 'bookType' | 'multiHeader' | 'merges'\n> & {\n header: ExcelExportHeaderItem[];\n};\n\nfunction getExcelCellText(value: any) {\n if (value == null) {\n return '';\n }\n return String(value);\n}\n\nfunction getExcelTextWidth(value: any) {\n const text = getExcelCellText(value);\n if (!text) {\n return 10;\n }\n return text.charCodeAt(0) > 255 ? text.length * 2 : text.length;\n}\n\nfunction getHeaderItemText(item: ExcelExportHeaderItem) {\n return (item?.title || [])\n .map(token => {\n if (typeof token === 'string') {\n return token;\n }\n return token?.text || '';\n })\n .join('');\n}\n\nfunction downloadExcelBuffer(buffer: ArrayBuffer, filename: string) {\n const blob = new Blob([buffer], {\n type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n });\n const url = URL.createObjectURL(blob);\n const link = document.createElement('a');\n link.href = url;\n link.download = `${filename}.xlsx`;\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n URL.revokeObjectURL(url);\n}\n\nfunction getHeaderDepth(header: ExcelExportHeaderItem[]) {\n if (!header || header.length === 0) {\n return 0;\n }\n return Math.max(\n ...header.map(item => {\n if (item.children && item.children.length > 0) {\n return 1 + getHeaderDepth(item.children);\n }\n return 1;\n }),\n );\n}\n\nfunction getHeaderLeafCount(item: ExcelExportHeaderItem): number {\n if (!item.children || item.children.length === 0) {\n return 1;\n }\n return item.children.reduce((sum, child) => sum + getHeaderLeafCount(child), 0);\n}\n\nfunction buildHeaderLayout(header: ExcelExportHeaderItem[]) {\n const depth = getHeaderDepth(header);\n const leafCount = header.reduce((sum, item) => sum + getHeaderLeafCount(item), 0);\n const rows = Array.from({ length: depth }, () => Array.from({ length: leafCount }, () => ''));\n const richCells = [];\n const merges = [];\n const columnWidths = Array.from({ length: leafCount }, () => 10);\n\n const walk = (items: ExcelExportHeaderItem[], rowIndex: number, colStart: number) => {\n let currentCol = colStart;\n items.forEach(item => {\n const titleText = getHeaderItemText(item);\n const colSpan = getHeaderLeafCount(item);\n const hasChildren = !!(item.children && item.children.length > 0);\n const rowSpan = hasChildren ? 1 : depth - rowIndex;\n rows[rowIndex][currentCol] = titleText;\n richCells.push({\n row: rowIndex + 1,\n col: currentCol + 1,\n title: item.title || [],\n });\n const avgWidth = Math.max(10, Math.ceil(getExcelTextWidth(titleText) / Math.max(colSpan, 1)));\n for (let i = currentCol; i < currentCol + colSpan; i++) {\n columnWidths[i] = Math.max(columnWidths[i], avgWidth);\n }\n if (colSpan > 1 || rowSpan > 1) {\n merges.push({\n startRow: rowIndex + 1,\n startCol: currentCol + 1,\n endRow: rowIndex + rowSpan,\n endCol: currentCol + colSpan,\n });\n }\n if (hasChildren) {\n walk(item.children || [], rowIndex + 1, currentCol);\n }\n currentCol += colSpan;\n });\n };\n\n walk(header, 0, 0);\n return {\n depth,\n rows,\n richCells,\n merges,\n columnWidths,\n };\n}\n\n/**\n * 导出支持 token 富文本和多级表头的 xlsx 文件。\n *\n * 使用方式:\n * 1. `header` 传树形结构,每个节点都是一个表头单元格:\n * - `title` 为当前单元格显示内容,类型是 token 数组;\n * - `children` 为下级表头,不传时表示叶子节点。\n * 2. `title` 里的 token 支持两种格式:\n * - 普通字符串:`'姓名'`\n * - 带颜色对象:`{ text: '[必填]', color: 'FFFF0000' }`\n * 3. `data` 的列顺序,必须与 `header` 按从左到右展开后的叶子节点顺序一致。\n * 4. 函数内部会自动计算多级表头的横向/纵向合并,不需要再传 `multiHeader` 或 `merges`。\n *\n * 单级表头示例:\n * ```ts\n * exportJsonToExcelByTokenHeader({\n * filename: '导入模板',\n * header: [\n * { title: ['姓名', { text: '[必填]', color: 'FFFF0000' }] },\n * { title: ['手机号'] },\n * ],\n * data: [['张三', '13800000000']],\n * autoWidth: true,\n * });\n * ```\n *\n * 多级表头示例:\n * ```ts\n * exportJsonToExcelByTokenHeader({\n * filename: '导入模板',\n * header: [\n * {\n * title: ['基础信息'],\n * children: [\n * { title: ['姓名', { text: '[必填]', color: 'FFFF0000' }] },\n * { title: ['手机号'] },\n * ],\n * },\n * {\n * title: ['扩展信息'],\n * children: [\n * { title: ['备注'] },\n * ],\n * },\n * ],\n * data: [['张三', '13800000000', '测试']],\n * autoWidth: true,\n * });\n * ```\n */\nexport async function exportJsonToExcelByTokenHeader(options: ExportJsonToExcelByTokenHeaderType) {\n const { header, data, filename, autoWidth = true } = options || {};\n const ExcelJSModule: any = await import('exceljs');\n const ExcelJS = ExcelJSModule.default || ExcelJSModule;\n const downloadFilename = filename || 'excel-list';\n const workbook = new ExcelJS.Workbook();\n const worksheet = workbook.addWorksheet('SheetJS');\n const headerLayout = buildHeaderLayout(header || []);\n\n headerLayout.rows.forEach(row => {\n worksheet.addRow((row || []).map(item => (item == null ? '' : item)));\n });\n headerLayout.richCells.forEach(item => {\n worksheet.getCell(item.row, item.col).value = {\n richText: item.title.map(token => {\n if (typeof token === 'string') {\n return { text: token };\n }\n return {\n text: token?.text || '',\n ...(token?.color\n ? {\n font: {\n color: {\n argb: token.color,\n },\n },\n }\n : {}),\n };\n }),\n };\n });\n\n (data || []).forEach(row => {\n worksheet.addRow((row || []).map(item => (item == null ? '' : item)));\n });\n\n headerLayout.merges.forEach(item => {\n worksheet.mergeCells(item.startRow, item.startCol, item.endRow, item.endCol);\n });\n\n if (autoWidth) {\n const result = headerLayout.columnWidths.map(width => ({ width: width + 2 }));\n (data || []).forEach(row => {\n (row || []).forEach((val, index) => {\n const width = getExcelTextWidth(val);\n if (!result[index] || result[index].width < width + 2) {\n result[index] = { width: Math.max(width, 10) + 2 };\n }\n });\n });\n worksheet.columns = result;\n }\n\n const buffer = await workbook.xlsx.writeBuffer();\n downloadExcelBuffer(buffer as ArrayBuffer, downloadFilename);\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useFetchData.js","names":[],"sources":["../../../src/utils/hooks/useFetchData.ts"],"sourcesContent":["import type { MaybeRef, UnwrapRef } from 'vue';\nimport { isReactive, isRef, onMounted, reactive, ref, unref, watch } from 'vue';\nimport type { ColumnType } from 'ant-design-vue/lib/table';\nimport { filterNullAndEmptyKeys } from '../function';\nimport { getApiData } from '../../api/api-model';\n\nexport interface PageInfo {\n current: number;\n pageSize: number;\n total: number;\n\n [key: string]: any;\n}\n\nexport interface ReponseData<T> {\n data: T[];\n success?: boolean;\n total?: number;\n\n [key: string]: any;\n}\n\nexport type RequestParams =\n | {\n pageSize: number;\n current: number;\n [key: string]: any;\n }\n | undefined;\n\nexport interface UseFetchDataAction<T extends ReponseData<any>> {\n stripe: (record: any, index: number) => string | undefined;\n cancel: () => void;\n reload: (auto_refresh?: boolean) => Promise<void>;\n resetPageIndex: () => void;\n reset: () => void;\n context: Context<T>;\n setPageInfo: (pageInfo: Partial<PageInfo>) => void;\n}\n\nexport interface Context<T extends ReponseData<any>> {\n current: number;\n pageSize: number;\n dataSource: T['data'];\n loading: boolean;\n total: number;\n requestParams?: MaybeRef<{\n [key: string]: any;\n }>;\n\n [key: string]: any;\n}\n\nexport const defaultContext: Context<any> = {\n stripe: false,\n loading: false,\n current: 1,\n pageSize: 50,\n total: 0,\n dataSource: [],\n};\n\n// 如果请求数据中,没有分页,仅单列表数据,可以使用该方法进行包装,免去重复写请求方法\nexport const wrap = (req: () => Promise<any[]>): (() => Promise<ReponseData<any>>) => {\n return () =>\n req().then(res => {\n const data = res;\n return {\n data,\n total: data.length,\n success: true,\n };\n });\n};\n\nexport const useFetchData = <T extends ReponseData<any>>(\n getData: MaybeRef<string>,\n context: MaybeRef<{\n stripe?: boolean;\n current?: number;\n pageSize?: number;\n dataSource?: T['data'];\n loading?: boolean;\n requestParams?: MaybeRef<{\n [key: string]: any;\n }>;\n [key: string]: any;\n }> = reactive({ ...defaultContext }),\n options?: {\n current?: number;\n pageSize?: number;\n onLoad?: (dataSource: T['data']) => void;\n onRequestError?: (e: Error) => void;\n pagination?: boolean;\n },\n processData?: (raw_data_list: T[]) => T[],\n processColumn?: (data_list: T[], raw_data_list: T[]) => ColumnType[],\n replace_column?: (tmp_columns: ColumnType[]) => void,\n callback?: () => void,\n): UseFetchDataAction<T> => {\n const state = reactive({ ...defaultContext } as Context<T>);\n const mergeContext = isReactive(context) || isRef(context) ? context : ref(context);\n watch(\n mergeContext,\n () => {\n Object.assign(state, unref(context));\n },\n { immediate: true },\n );\n\n const fetchList = async (auto_refresh: boolean = false) => {\n // 请求中禁止重复请求\n if (state.loading || state.init_request === false) {\n state.init_request = true;\n return;\n }\n const url = unref(getData);\n if (!url) {\n return;\n }\n state.loading = true;\n const { pageSize = 50, current = 1 } = state;\n try {\n const params: RequestParams =\n options?.pagination !== false\n ? {\n current,\n pageSize,\n ...state.requestParams,\n // ...filterNoValidValue(unref(mergeContext).requestParams),\n }\n : undefined;\n if (!auto_refresh) {\n state.dataSource = [] as UnwrapRef<T['data']>;\n }\n await getApiData(params, url.replace('__tree', ''), url.includes('__tree'))\n .then(res => {\n const data = res.data;\n const column_data = res.columns;\n const success = res.success as boolean;\n const dataTotal = res.total as number;\n // const { data = [], success, total: dataTotal = 0 } = await\n if (success !== false) {\n const processed_data = processData ? processData(data) : data;\n if (processColumn && replace_column && column_data) {\n replace_column(processColumn(data, column_data));\n }\n state.dataSource = [].concat(processed_data) as UnwrapRef<T['data']>;\n state.total = dataTotal;\n state.current = res.current as number;\n state.tableHead = res.table_head ? res.table_head : null;\n state.sum_data = res.sum_data ?? null;\n if (options?.onLoad) {\n options?.onLoad(processed_data);\n }\n }\n })\n .finally(() => {\n state.loading = false;\n });\n } catch (e: any) {\n state.loading = false;\n // 如果没有传递这个方法的话,需要把错误抛出去,以免吞掉错误\n if (options?.onRequestError === undefined) {\n throw new Error(e);\n } else {\n options.onRequestError(e);\n }\n }\n };\n\n const cancel = () => {};\n\n const reset = () => {};\n\n const reload = (auto_refresh: boolean = false): Promise<void> => {\n return new Promise(resolve => {\n resolve(fetchList(auto_refresh));\n });\n };\n\n const setPageInfo = (pageInfo: Partial<PageInfo>) => {\n pageInfo.current && (state.current = pageInfo.current);\n pageInfo.pageSize && (state.pageSize = pageInfo.pageSize);\n state.requestParams = filterNullAndEmptyKeys(pageInfo);\n };\n\n const resetPageIndex = (): void => {\n state.current = 1;\n };\n // watch(\n // [() => state.current, () => state.pageSize, () => ({ ...state.requestParams })],\n // (nextValue, preValue) => {\n // if (!isEqual(nextValue, preValue)) {\n // fetchList().catch(e => {\n // throw new Error(e);\n // }).finally(() => {\n // if (callback) {\n // callback();\n // }\n // });\n // }\n // },\n // { immediate: true, deep: true },\n // );\n\n const stripe = (_: any, index: number) =>\n index % 2 === 1 && state.stripe && 'ant-pro-table-row-striped';\n\n onMounted(() => {\n // if (state.init_request === false) {\n // return;\n // }\n // fetchList()\n // .catch(e => {\n // throw new Error(e);\n // })\n // .finally(() => {\n // if (callback) {\n // callback();\n // }\n // });\n });\n\n return {\n stripe,\n cancel,\n reset,\n reload,\n resetPageIndex,\n setPageInfo: info => {\n setPageInfo({\n current: state.current,\n pageSize: state.pageSize,\n ...info,\n });\n },\n context: state,\n };\n};\n"],"mappings":";;;;AAqDA,IAAa,IAA+B;CAC1C,QAAQ;CACR,SAAS;CACT,SAAS;CACT,UAAU;CACV,OAAO;CACP,YAAY,CAAC;AACf,GAGa,KAAQ,YAEjB,EAAI,CAAC,CAAC,MAAK,MAAO;CAChB,IAAM,IAAO;CACb,OAAO;EACL;EACA,OAAO,EAAK;EACZ,SAAS;CACX;AACF,CAAC,GAGQ,KACX,GACA,IAUK,EAAS,EAAE,GAAG,EAAe,CAAC,GACnC,GAOA,GACA,GACA,GACA,MAC0B;CAC1B,IAAM,IAAQ,EAAS,EAAE,GAAG,EAAe,CAAe;CAE1D,EADqB,EAAW,CAAO,KAAK,EAAM,CAAO,IAAI,IAAU,EAAI,CAAO,SAG1E;EACJ,OAAO,OAAO,GAAO,EAAM,CAAO,CAAC;CACrC,GACA,EAAE,WAAW,GAAK,CACpB;CAEA,IAAM,IAAY,OAAO,IAAwB,OAAU;EAEzD,IAAI,EAAM,WAAW,EAAM,iBAAiB,IAAO;GACjD,EAAM,eAAe;GACrB;EACF;EACA,IAAM,IAAM,EAAM,CAAO;EACzB,IAAI,CAAC,GACH;EAEF,EAAM,UAAU;EAChB,IAAM,EAAE,cAAW,IAAI,aAAU,MAAM;EACvC,IAAI;GACF,IAAM,IACJ,GAAS,eAAe,KAOpB,KAAA,IANA;IACE;IACA;IACA,GAAG,EAAM;GAEX;GAKN,AAHK,MACH,EAAM,aAAa,CAAC,IAEtB,MAAM,EAAW,GAAQ,EAAI,QAAQ,UAAU,EAAE,GAAG,EAAI,SAAS,QAAQ,CAAC,CAAC,CACxE,MAAK,MAAO;IACX,IAAM,IAAO,EAAI,MACX,IAAc,EAAI,SAClB,IAAU,EAAI,SACd,IAAY,EAAI;IAEtB,IAAI,MAAY,IAAO;KACrB,IAAM,IAAiB,IAAc,EAAY,CAAI,IAAI;KASzD,AARI,KAAiB,KAAkB,KACrC,EAAe,EAAc,GAAM,CAAW,CAAC,GAEjD,EAAM,aAAa,CAAC,CAAC,CAAC,OAAO,CAAc,GAC3C,EAAM,QAAQ,GACd,EAAM,UAAU,EAAI,SACpB,EAAM,YAAY,EAAI,aAAa,EAAI,aAAa,MACpD,EAAM,WAAW,EAAI,YAAY,MAC7B,GAAS,UACX,GAAS,OAAO,CAAc;IAElC;GACF,CAAC,CAAC,CACD,cAAc;IACb,EAAM,UAAU;GAClB,CAAC;EACL,SAAS,GAAQ;GAGf,IAFA,EAAM,UAAU,IAEZ,GAAS,mBAAmB,KAAA,GAC9B,MAAU,MAAM,CAAC;GAEjB,EAAQ,eAAe,CAAC;EAE5B;CACF,GAEM,UAAe,CAAC,GAEhB,UAAc,CAAC,GAEf,KAAU,IAAwB,OAC/B,IAAI,SAAQ,MAAW;EAC5B,EAAQ,EAAU,CAAY,CAAC;CACjC,CAAC,GAGG,KAAe,MAAgC;EAGnD,AAFA,EAAS,YAAY,EAAM,UAAU,EAAS,UAC9C,EAAS,aAAa,EAAM,WAAW,EAAS,WAChD,EAAM,gBAAgB,EAAuB,CAAQ;CACvD;CAuCA,OAfA,QAAgB,CAahB,CAAC,GAEM;EACL,SAnBc,GAAQ,MACtB,IAAQ,KAAM,KAAK,EAAM,UAAU;EAmBnC;EACA;EACA;EACA,sBA1CiC;GACjC,EAAM,UAAU;EAClB;EAyCE,cAAa,MAAQ;GACnB,EAAY;IACV,SAAS,EAAM;IACf,UAAU,EAAM;IAChB,GAAG;GACL,CAAC;EACH;EACA,SAAS;CACX;AACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useTableColumn.js","names":[],"sources":["../../../src/utils/hooks/useTableColumn.ts"],"sourcesContent":["import type { ComputedRef, MaybeRef, Ref, UnwrapRef } from 'vue';\nimport { computed, reactive, ref, unref, watch } from 'vue';\nimport type { CheckboxChangeEvent } from 'ant-design-vue/es/checkbox/interface';\nimport type { RadioChangeEvent } from 'ant-design-vue/es/radio/interface';\nimport type { ColumnType } from 'ant-design-vue/lib/table';\nimport { debounce } from 'lodash-es';\n\ntype Key = number | string;\nexport type TableOptions = {\n needRowIndex?: boolean | Ref<boolean>;\n checkedList?: Ref<Key[]>;\n checkAll?: boolean;\n tableWidth?: number;\n defaultCheckedList?: MaybeRef<Key[]>;\n};\n\nexport type DynamicColumnItem = {\n key: Key;\n label: string;\n checked: boolean;\n fixed?: boolean | string;\n width?: number;\n autoHeight?: boolean;\n};\n\nexport type DynamicColumnState = {\n checkAll: boolean;\n checkedList: Key[];\n needRowIndex: boolean;\n indeterminate: boolean;\n tableWidth: number;\n tableMinWidth: number;\n};\n\nexport type DynamicColumnConfigState = {\n checkAll: boolean;\n showCheckAction: boolean;\n checkAction: boolean;\n is_column_config: boolean;\n};\n\nexport interface DynamicColumns {\n dynamicColumns: Ref<ColumnType[]>;\n mergedColumns: Ref<UnwrapRef<ColumnType[]>>;\n dynamicColumnItems: ComputedRef<DynamicColumnItem[]>;\n state: DynamicColumnState;\n configState: DynamicColumnConfigState;\n reset: () => void;\n handleColumnChange: (\n e: CheckboxChangeEvent,\n column: DynamicColumnItem,\n columnChildren: any,\n ) => void;\n handleColumnFixedChange: (e: RadioChangeEvent, column: DynamicColumnItem) => void;\n handleColumnAutoHeightChange: (\n checked: boolean,\n column: DynamicColumnItem,\n columnChildren: any,\n ) => void;\n handleColumnAllClick: (e: CheckboxChangeEvent) => void;\n move: (index: number, targetIndex: number, column: any, children: any) => void;\n change_mode: (mode: any, org_mode: any) => void;\n resizeColumn: (width: number, column: any) => void;\n columnAction: () => void;\n column_change: (column: any) => void;\n replace_column: (tmp_columns: ColumnType[]) => void;\n handleFiltersSorterChange: (filters: any, sorter: any, getFilterKey: any) => void;\n}\n\n// columns 支持响应式,排序会影响原数组,所以,不同表格不能也不该使用同一份 columns,如果你需要共用,建议你使用函数返回,确保每一个 table 使用的都是独立的配置\nexport const useTableDynamicColumns = (\n columns: ColumnType[] | Ref<ColumnType[]>,\n defOptions: TableOptions = {},\n column_list_change?: () => Promise<any>,\n): DynamicColumns => {\n const version = ref(1);\n const getKey = (column: ColumnType) =>\n column?.key ??\n (Array.isArray(column.dataIndex)\n ? (column.dataIndex as []).join('$$')\n : (column.dataIndex as string));\n\n const mergedColumns: Ref<UnwrapRef<ColumnType[]>> = ref<ColumnType[]>([]);\n\n let defaultCheckedList =\n unref(defOptions.defaultCheckedList) ?? mergedColumns.value.map(column => column.key) ?? [];\n\n // const checkedList = ref(defaultCheckedList);\n const state = reactive<DynamicColumnState>({\n checkAll: false,\n needRowIndex: false,\n checkedList: defaultCheckedList,\n indeterminate: true,\n tableWidth: defOptions.tableWidth as number,\n tableMinWidth: defOptions.tableWidth as number,\n });\n\n const change_mode = (mode: any) => {\n if (!mode) {\n return;\n }\n mergedColumns.value.map((item: any, index: number) => {\n item.sort_num = index;\n if (mode[item.key]) {\n if (mode[item.key]['index'] != undefined) {\n item.sort_num = mode[item.key]['index'];\n }\n if (mode[item.key]['checked'] !== false) {\n item.checked = true;\n } else {\n item.checked = false;\n }\n\n if (mode[item.key]['width'] != undefined) {\n item.width = mode[item.key]['width'];\n }\n if (mode[item.key]['fixed'] != undefined) {\n item.fixed = mode[item.key]['fixed'];\n } else {\n item.fixed = undefined;\n }\n if (mode[item.key]['autoHeight'] != undefined) {\n item.autoHeight = mode[item.key]['autoHeight'];\n } else {\n item.autoHeight = undefined;\n }\n if (mode[item.key]['children'] != undefined) {\n item.children = JSON.parse(JSON.stringify(mode[item.key]['children']));\n }\n }\n });\n\n mergedColumns.value = mergedColumns.value.sort((a: any, b: any) => a.sort_num - b.sort_num);\n\n // change_column(0);\n mergedColumns.value.map((column: any) => {\n if (column.checked !== false) {\n if (!state.checkedList.includes(column.key)) {\n // state.checkedList.push(column.key);\n state.checkedList = [...state.checkedList, column.key];\n }\n } else if (state.checkedList.includes(column.key)) {\n state.checkedList = state.checkedList.filter(item => item !== column.key);\n }\n });\n };\n\n watch(\n () => columns,\n () => {\n mergedColumns.value = unref(columns || [])\n .slice()\n .map(column => {\n return { ...column, key: getKey(column) };\n });\n mergedColumns.value.forEach((column: any) => {\n if (column.checked !== false) {\n if (!state.checkedList.includes(column.key)) {\n // state.checkedList.push(column.key);\n state.checkedList = [...state.checkedList, column.key];\n }\n } else if (state.checkedList.includes(column.key)) {\n state.checkedList = state.checkedList.filter(item => item !== column.key);\n }\n });\n },\n { immediate: true },\n );\n\n const dynamicColumns = ref(columns);\n const get_children_column = (column: any, list: any, is_children: any) => {\n if (column?.children && column?.children.length > 0) {\n column?.children.map((column1: any) => {\n get_children_column(column1, list, true);\n });\n } else {\n list.push({\n key: getKey(column),\n label: column.title,\n fixed: column.fixed == undefined ? false : column.fixed == true ? 'left' : column.fixed,\n checked: is_children\n ? true\n : defOptions.checkAll\n ? true\n : state.checkedList.includes(column.key),\n width: column.width ? column.width : 150,\n autoHeight: column.autoHeight ? column.autoHeight : false,\n } as DynamicColumnItem);\n }\n };\n const dynamicColumnItems = computed<DynamicColumnItem[]>(() => {\n const list: any = [];\n mergedColumns.value.forEach((column: any) => {\n get_children_column(column, list, false);\n });\n return list;\n });\n // const dynamicColumnValues = computed(() => dynamicColumnItems.value.map(column => column.key));\n\n // state.checkedList = checkedList.value.filter((key: string) => state.checkedList.includes(key));\n // state.checkAll = defOptions.checkAll as boolean;\n // state.indeterminate = !defOptions.checkAll;\n\n const planColumns = () => {\n // let newColumns = mergedColumns.value.slice();\n dynamicColumns.value = mergedColumns.value\n .slice()\n .filter((item: any) => {\n return state.checkedList.includes(item.key);\n })\n .map((item: any) => {\n // const ditems = dynamicColumnItems.value.filter(oitem => oitem.key == item.key);\n // if (ditems.length > 0 && ditems[0].width != undefined && item['width'] != undefined) {\n // item['width'] = ditems[0].width;\n // }\n // item.checked = true;\n const obj: any = {};\n Object.assign(obj, { ...item });\n if (obj.children && obj.children.length > 0) {\n obj.children = obj.children.filter((child: any) => {\n return child.checked !== false;\n });\n }\n return obj;\n });\n // state.tableWidth = sum(\n // dynamicColumns.value.map(item => (isNumber(item.width) ? item.width : 150)),\n // );\n // if (state.tableWidth < state.tableMinWidth) {\n // state.tableWidth = state.tableMinWidth;\n // }\n // console.error(dynamicColumns.value);\n };\n watch(\n [() => state.checkedList, mergedColumns],\n () => {\n state.checkAll = state.checkedList.length === mergedColumns.value.length;\n state.indeterminate =\n !!state.checkedList.length && state.checkedList.length < mergedColumns.value.length;\n planColumns();\n },\n { immediate: true, deep: true },\n );\n\n const handleColumnChange = (\n e: CheckboxChangeEvent,\n column: DynamicColumnItem,\n columnChildren: any,\n ) => {\n const checked = (e.target as HTMLInputElement).checked;\n if (columnChildren) {\n mergedColumns.value = mergedColumns.value.map((item: any) => {\n if (item.key == column.key) {\n item.children.map((item1: any) => {\n if (item1.dataIndex == columnChildren.key) {\n item1.checked = checked;\n }\n return item1;\n });\n }\n return item;\n });\n columnChildren.checked = checked;\n } else {\n mergedColumns.value = mergedColumns.value.map((item: any) => {\n if (item.key == column.key) {\n item.checked = checked;\n }\n return item;\n });\n if (checked) {\n if (!state.checkedList.includes(column.key)) {\n state.checkedList = [...state.checkedList, column.key];\n }\n } else {\n state.checkedList = state.checkedList.filter(item => item !== column.key);\n }\n }\n };\n\n const handleColumnFixedChange = (e: RadioChangeEvent, column: DynamicColumnItem) => {\n const value = (e.target as HTMLInputElement).value;\n mergedColumns.value = mergedColumns.value.map((item: any) => {\n if (item.key == column.key) {\n item.fixed = value;\n }\n return item;\n });\n column.fixed = value;\n };\n\n const handleColumnAutoHeightChange = (\n checked: boolean,\n column: DynamicColumnItem,\n columnChildren: any,\n ) => {\n if (columnChildren) {\n mergedColumns.value = mergedColumns.value.map((item: any) => {\n if (item.key == column.key) {\n item.children.map((item1: any) => {\n if (item1.dataIndex == columnChildren.key) {\n item1.autoHeight = checked;\n }\n return item1;\n });\n }\n return item;\n });\n columnChildren.autoHeight = checked;\n } else {\n mergedColumns.value = mergedColumns.value.map((item: any) => {\n if (item.key == column.key) {\n item.autoHeight = checked;\n }\n return item;\n });\n column.autoHeight = checked;\n }\n };\n\n const handleColumnAllClick = (e: CheckboxChangeEvent) => {\n const checked = (e.target as HTMLInputElement).checked;\n state.checkedList = checked ? dynamicColumnItems.value.map(column => column.key) : [];\n };\n\n const reset = () => {\n state.checkedList = defaultCheckedList;\n mergedColumns.value = mergedColumns.value\n .sort((a, b) => defaultCheckedList.indexOf(a.key) - defaultCheckedList.indexOf(b.key))\n .slice();\n };\n\n const move = (index: number, targetIndex: number, column: any, children: any) => {\n if (children) {\n const newData = children.children.slice();\n const dataItem = newData[index];\n newData.splice(index, 1);\n if (targetIndex === 0) {\n newData.unshift(dataItem);\n } else {\n newData.splice(targetIndex, 0, dataItem);\n }\n children.children = newData;\n mergedColumns.value = mergedColumns.value.map((item: any) => {\n if (item.key == children.key) {\n item.children = newData;\n }\n return item;\n });\n } else {\n let mergedIndex = 0;\n let mergedTargetIndex = 0;\n mergedColumns.value.forEach((item: any, index1: any) => {\n if (column[index - 1].key == item.key) {\n mergedIndex = index1;\n }\n if (column[targetIndex - 1].key == item.key) {\n mergedTargetIndex = index1;\n }\n });\n const newColumns = mergedColumns.value.slice();\n const columnItem = newColumns[mergedIndex];\n newColumns.splice(mergedIndex, 1);\n if (mergedTargetIndex === 0) {\n newColumns.unshift(columnItem);\n } else {\n newColumns.splice(mergedTargetIndex, 0, columnItem);\n }\n mergedColumns.value = newColumns;\n }\n };\n\n /**\n * 更新列的配置,上传到服务器,先判断是否有改变,没有改变则不上传\n */\n\n const resizeColumn = debounce((width: number, column: any) => {\n mergedColumns.value.map(item => {\n if (item.key == column.key) {\n item.width = width;\n }\n });\n }, 500);\n\n const columnAction = () => {\n mergedColumns.value.forEach((column: any) => {\n if (column.key == 'action') {\n column.checked = configState.checkAction;\n const b: any = {\n ...column,\n checked: configState.checkAction,\n };\n const a: any = {};\n a.target = b;\n handleColumnChange(a, b, null);\n }\n });\n };\n\n // 视图的切换 列改变\n const column_change = column => {\n change_mode(column);\n };\n\n const configState = reactive<DynamicColumnConfigState>({\n checkAction:\n dynamicColumnItems.value.filter(item => item.key == 'action' && item.checked).length > 0,\n showCheckAction: dynamicColumnItems.value.filter(item => item.key == 'action').length > 0,\n checkAll: true,\n is_column_config: false,\n });\n\n const replace_column = (tmp_columns: ColumnType[]) => {\n unref(columns || []).length = 0;\n tmp_columns.forEach(item => {\n unref(columns || []).push(item);\n });\n // version.value += 1;\n // columns.concat(tmp_columns);\n // init();\n\n mergedColumns.value = unref(columns || [])\n .slice()\n .map(column => {\n const newColumn = { ...column, key: getKey(column), checked: true };\n if (state.checkedList.length == 0) {\n newColumn.checked = true;\n } else {\n newColumn.checked = state.checkedList.includes(column.key);\n }\n return newColumn;\n });\n // state.checkedList = [];\n mergedColumns.value.forEach((column: any) => {\n if (column.checked !== false) {\n if (!state.checkedList.includes(column.key)) {\n // state.checkedList.push(column.key);\n state.checkedList = [...state.checkedList, column.key];\n }\n } else if (!state.checkedList.includes(column.key)) {\n state.checkedList = state.checkedList.filter(item => item !== column.key);\n }\n });\n };\n\n const handleFiltersSorterChange = (filters: any, sorter: any, getFilterKey: any) => {\n mergedColumns.value.forEach((item: any) => {\n if (item?.children && item.children.length > 0) {\n item.children.forEach((child: any) => {\n if (\n filters?.[getFilterKey(child.dataIndex)] &&\n filters?.[getFilterKey(child.dataIndex)].length > 0\n ) {\n child.filteredValue = filters[getFilterKey(child.dataIndex)];\n } else {\n child.filteredValue = null;\n }\n if (sorter && sorter.length > 0) {\n if (child?.sorter) {\n child.sortOrder = false;\n sorter.forEach((item1: any) => {\n if (item1.field == child.dataIndex) {\n child.sortOrder = item1.order;\n }\n });\n }\n } else {\n if (child?.sorter) {\n child.sortOrder = false;\n }\n }\n });\n } else {\n if (filters?.[getFilterKey(item.key)] && filters?.[getFilterKey(item.key)].length > 0) {\n item.filteredValue = filters[getFilterKey(item.key)];\n } else {\n item.filteredValue = null;\n }\n if (sorter && sorter.length > 0) {\n if (item?.sorter) {\n item.sortOrder = false;\n sorter.forEach((item1: any) => {\n if (item1.field == item.key) {\n item.sortOrder = item1.order;\n }\n });\n }\n } else {\n if (item?.sorter) {\n item.sortOrder = false;\n }\n }\n }\n });\n };\n // init();\n return {\n dynamicColumns,\n mergedColumns,\n dynamicColumnItems,\n state,\n configState,\n reset,\n handleColumnAllClick,\n handleColumnChange,\n handleColumnFixedChange,\n handleColumnAutoHeightChange,\n move,\n change_mode,\n resizeColumn,\n columnAction,\n column_change,\n replace_column,\n handleFiltersSorterChange,\n };\n};\n"],"mappings":"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"}
|