zmdms-webui 1.9.7 → 1.9.8

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.
@@ -1 +1 @@
1
- .zt-sortable-new{cursor:move;font-size:13px;line-height:1.5;overflow:hidden;padding:8px 0;text-align:left}.zt-sortable-new .zt-sortable--item{align-items:center;display:flex;justify-content:space-between;padding:0 16px}.zt-sortable-new .zt-sortable--children{display:flex}.zt-sortable-new .zt-sortable--children .zt-sortable-new{border-bottom:none;padding:8px 26px}.zt-sortable-new.no-move{cursor:no-drop}.zt-sortable-new .zt-checkbox{font-size:13px}.zt-sortable-new:hover{background-color:#ebf3fe}.ztxk-dynamic--more{cursor:pointer;height:20px}.ant-dropdown-show-arrow.ztxk-dynamic--more--drop{padding-top:0}.ztxk-dynamic--more--drop.ant-dropdown-placement-bottomRight>.ant-dropdown-arrow{top:-5px}.dynamic-drawer .ant-drawer-header{padding:10px 12px}.dynamic-drawer .ant-drawer-header .ant-drawer-title>div{align-items:center;color:#768696;display:flex;font-size:16px}.dynamic-drawer .ant-drawer-header .ant-drawer-title>div .search-drawer--title-text{font-size:14px;margin-left:10px}.dynamic-drawer .ant-drawer-header .ant-drawer-title>div .search-drawer--title-text>span{font-size:13px}.dynamic-drawer .ant-drawer-body{padding:0}.dynamic-drawer .ant-drawer-body .ant-checkbox-group{width:100%}.dynamic-drawer .ant-drawer-footer{border-top:none;display:flex;justify-content:space-between;padding:0}.dynamic-drawer .ant-drawer-footer>button{border:none;border-radius:0;height:40px;width:33%}.dynamic-drawer-section-title{background:#f5f5f5;border-radius:6px;font-size:14px;font-weight:700;padding:4px}
1
+ .zt-sortable-new{cursor:move;font-size:13px;line-height:1.5;overflow:hidden;padding:8px 0;text-align:left}.zt-sortable-new .zt-sortable--item{align-items:center;display:flex;justify-content:space-between;padding:0 16px}.zt-sortable-new .zt-sortable--item span{white-space:break-spaces}.zt-sortable-new .zt-sortable--children{display:flex}.zt-sortable-new .zt-sortable--children .zt-sortable-new{border-bottom:none;padding:8px 26px}.zt-sortable-new .zt-sortable--children span{white-space:break-spaces}.zt-sortable-new.no-move{cursor:no-drop}.zt-sortable-new .zt-checkbox{font-size:13px}.zt-sortable-new:hover{background-color:#ebf3fe}.ztxk-dynamic--more{cursor:pointer;height:20px}.ant-dropdown-show-arrow.ztxk-dynamic--more--drop{padding-top:0}.ztxk-dynamic--more--drop.ant-dropdown-placement-bottomRight>.ant-dropdown-arrow{top:-5px}.dynamic-drawer .ant-drawer-header{padding:10px 12px}.dynamic-drawer .ant-drawer-header .ant-drawer-title>div{align-items:center;color:#768696;display:flex;font-size:16px}.dynamic-drawer .ant-drawer-header .ant-drawer-title>div .search-drawer--title-text{font-size:14px;margin-left:10px}.dynamic-drawer .ant-drawer-header .ant-drawer-title>div .search-drawer--title-text>span{font-size:13px}.dynamic-drawer .ant-drawer-body{padding:0}.dynamic-drawer .ant-drawer-body .ant-checkbox-group{width:100%}.dynamic-drawer .ant-drawer-footer{border-top:none;display:flex;justify-content:space-between;padding:0}.dynamic-drawer .ant-drawer-footer>button{border:none;border-radius:0;height:40px;width:33%}.dynamic-drawer-section-title{background:#f5f5f5;border-radius:6px;font-size:14px;font-weight:700;padding:4px}
@@ -1,15 +1,16 @@
1
1
  import { __spreadArray, __assign, __awaiter, __generator } from '../_virtual/_tslib.js';
2
2
  import ExcelJS from '../node_modules/exceljs/dist/exceljs.min.js';
3
- import { useMergeKeys } from './hooks.js';
4
- import { useMemo } from 'react';
3
+ import { useMergeKeys, useNumKeys } from './hooks.js';
5
4
  import { useMemoizedFn } from 'ahooks';
6
5
  import { IS_SUMMARY, MERGE_ROW_SPANS } from './constant.js';
6
+ import { exactRound } from 'zmdms-utils';
7
+ import dayjs from 'dayjs';
7
8
 
8
9
  /**
9
10
  * 使用 ExcelJS + 后处理添加批注
10
11
  * 导出Excel,支持维度合并和小计,以及批注功能
11
12
  */
12
- function exportToExcelWithMergeAndComments(records, columns, mergeKeys, summaryKeys, fileName, sheetName, columnHeaders, summaryConfig) {
13
+ function exportToExcelWithMergeAndComments(records, columns, mergeKeys, numKeys, fileName, sheetName, columnHeaders, summaryConfig, topDescription, topDescriptionRowHeight) {
13
14
  var _a;
14
15
  var _this = this;
15
16
  if (fileName === void 0) { fileName = "export.xlsx"; }
@@ -17,9 +18,9 @@ function exportToExcelWithMergeAndComments(records, columns, mergeKeys, summaryK
17
18
  if (!records || records.length === 0) {
18
19
  throw new Error("没有数据可导出");
19
20
  }
20
- var processedData = records;
21
+ var processedData = applyPrecisionToRecords(records, columns);
21
22
  // 准备Excel数据
22
- var excelData = prepareExcelData(processedData, columns, columnHeaders);
23
+ var excelData = prepareExcelData(processedData, columns, columnHeaders, topDescription);
23
24
  // 创建工作簿
24
25
  var workbook = new ExcelJS.Workbook();
25
26
  // 计算末尾合计行
@@ -62,7 +63,7 @@ function exportToExcelWithMergeAndComments(records, columns, mergeKeys, summaryK
62
63
  // 设置冻结窗格
63
64
  setWorksheetFreeze(worksheet, excelData.leafColumns, excelData.headerRowCount);
64
65
  // 添加样式
65
- applyExcelStyles(worksheet, dataForStyles, mergeKeys, summaryKeys, excelData.leafColumns, excelData.headerRowCount);
66
+ applyExcelStyles(worksheet, dataForStyles, numKeys, excelData.leafColumns, excelData.headerRowCount, !!excelData.topDescription, topDescriptionRowHeight);
66
67
  // 添加批注 - 使用改进的方法
67
68
  addCommentsToWorksheet(worksheet, dataForStyles, excelData.leafColumns, excelData.headerRowCount);
68
69
  // 导出文件
@@ -101,6 +102,36 @@ function exportToExcelWithMergeAndComments(records, columns, mergeKeys, summaryK
101
102
  fileName: fileName,
102
103
  };
103
104
  }
105
+ /**
106
+ * 根据列上的 precision 配置,格式化记录中的数值字段
107
+ */
108
+ function applyPrecisionToRecords(records, columns) {
109
+ if (!Array.isArray(records) || !Array.isArray(columns))
110
+ return records || [];
111
+ var precisionMap = {};
112
+ columns.forEach(function (col) {
113
+ if (col && typeof col.dataIndex === "string") {
114
+ var precision = col.precision;
115
+ if (typeof precision === "number") {
116
+ precisionMap[col.dataIndex] = { precision: precision };
117
+ }
118
+ }
119
+ });
120
+ if (Object.keys(precisionMap).length === 0)
121
+ return records;
122
+ return records.map(function (record) {
123
+ if (record == null || typeof record !== "object")
124
+ return record;
125
+ var next = __assign({}, record);
126
+ for (var key in precisionMap) {
127
+ if (!Object.prototype.hasOwnProperty.call(next, key))
128
+ continue;
129
+ var precision = precisionMap[key].precision;
130
+ next[key] = exactRound(next[key], precision);
131
+ }
132
+ return next;
133
+ });
134
+ }
104
135
  /**
105
136
  * 改进的批注添加函数 - 使用 ExcelJS 的正确方法
106
137
  */
@@ -196,7 +227,7 @@ function setWorksheetFreeze(worksheet, leafColumns, headerRowCount) {
196
227
  console.error("设置冻结窗格失败:", e);
197
228
  }
198
229
  }
199
- function prepareExcelData(processedData, columns, columnHeaders) {
230
+ function prepareExcelData(processedData, columns, columnHeaders, topDescription) {
200
231
  var getMaxDepth = function (cols) {
201
232
  var max = 0;
202
233
  var dfs = function (nodes, depth) {
@@ -220,10 +251,6 @@ function prepareExcelData(processedData, columns, columnHeaders) {
220
251
  }
221
252
  return 1;
222
253
  };
223
- var maxDepth = getMaxDepth(columns);
224
- var headerRows = Array.from({ length: maxDepth }, function () { return []; });
225
- var headerMerges = [];
226
- var leafColumns = [];
227
254
  var walkHeader = function (nodes, depth, startColIndexRef) {
228
255
  nodes.forEach(function (node) {
229
256
  var text = node.dynamicTitle || node.title;
@@ -265,13 +292,38 @@ function prepareExcelData(processedData, columns, columnHeaders) {
265
292
  }
266
293
  });
267
294
  };
295
+ var maxDepth = getMaxDepth(columns);
296
+ var headerRows = Array.from({ length: maxDepth }, function () { return []; });
297
+ var headerMerges = [];
298
+ var leafColumns = [];
268
299
  walkHeader(columns, 1, { value: 0 });
300
+ // 顶部说明行:插入到表头之前,并横向合并至所有叶子列
301
+ if (topDescription) {
302
+ var totalLeafCols = Math.max(1, leafColumns.length);
303
+ var topRow = Array.from({ length: totalLeafCols }, function () { return ""; });
304
+ topRow[0] = topDescription;
305
+ // 现有表头合并坐标整体下移一行
306
+ headerMerges.forEach(function (m) {
307
+ m.s.r += 1;
308
+ m.e.r += 1;
309
+ });
310
+ // 插入到最前面
311
+ headerRows.unshift(topRow);
312
+ // 新增顶行的横向合并(从第1列到最后一列)
313
+ if (totalLeafCols > 1) {
314
+ headerMerges.push({
315
+ s: { r: 0, c: 0 },
316
+ e: { r: 0, c: totalLeafCols - 1 },
317
+ });
318
+ }
319
+ }
269
320
  return {
270
321
  headerRows: headerRows,
271
322
  headerMerges: headerMerges,
272
323
  headerRowCount: headerRows.length,
273
324
  data: processedData,
274
325
  leafColumns: leafColumns,
326
+ topDescription: topDescription,
275
327
  };
276
328
  }
277
329
  function createWorksheetWithMerge(workbook, excelData, mergeKeys, sheetName) {
@@ -324,9 +376,10 @@ function createWorksheetWithMerge(workbook, excelData, mergeKeys, sheetName) {
324
376
  }
325
377
  return worksheet;
326
378
  }
327
- function applyExcelStyles(worksheet, data, mergeKeys, summaryKeys, columns, headerRowCount) {
328
- var _a, _b;
379
+ function applyExcelStyles(worksheet, data, numKeys, columns, headerRowCount, hasTopDescription, topDescriptionRowHeight) {
380
+ var _a, _b, _c;
329
381
  if (headerRowCount === void 0) { headerRowCount = 1; }
382
+ if (hasTopDescription === void 0) { hasTopDescription = false; }
330
383
  var headerStyle = {
331
384
  font: { bold: true, color: { argb: "FFFFFFFF" } },
332
385
  fill: {
@@ -349,7 +402,7 @@ function applyExcelStyles(worksheet, data, mergeKeys, summaryKeys, columns, head
349
402
  pattern: "solid",
350
403
  fgColor: { argb: "FFE6F3FF" },
351
404
  },
352
- alignment: { horizontal: "center", vertical: "middle" },
405
+ alignment: { horizontal: "left", vertical: "middle" },
353
406
  border: {
354
407
  top: { style: "thin", color: { argb: "FF000000" } },
355
408
  bottom: { style: "thin", color: { argb: "FF000000" } },
@@ -364,7 +417,7 @@ function applyExcelStyles(worksheet, data, mergeKeys, summaryKeys, columns, head
364
417
  pattern: "solid",
365
418
  fgColor: { argb: "FFFFFFFF" },
366
419
  },
367
- alignment: { horizontal: "center", vertical: "middle" },
420
+ alignment: { horizontal: "left", vertical: "middle" },
368
421
  border: {
369
422
  top: { style: "thin", color: { argb: "FF000000" } },
370
423
  bottom: { style: "thin", color: { argb: "FF000000" } },
@@ -372,19 +425,50 @@ function applyExcelStyles(worksheet, data, mergeKeys, summaryKeys, columns, head
372
425
  right: { style: "thin", color: { argb: "FF000000" } },
373
426
  },
374
427
  };
428
+ var descriptionStyle = {
429
+ font: { bold: true, size: 12, color: { argb: "FF333333" } },
430
+ alignment: { horizontal: "center", vertical: "middle", wrapText: true },
431
+ border: {
432
+ top: { style: "thin", color: { argb: "FF000000" } },
433
+ bottom: { style: "thin", color: { argb: "FF000000" } },
434
+ left: { style: "thin", color: { argb: "FF000000" } },
435
+ right: { style: "thin", color: { argb: "FF000000" } },
436
+ },
437
+ fill: undefined,
438
+ };
375
439
  var totalCols = Math.max(1, (columns === null || columns === void 0 ? void 0 : columns.length) || 1);
376
- // 表头样式
377
440
  for (var r = 1; r <= headerRowCount; r++) {
378
441
  for (var c = 1; c <= totalCols; c++) {
379
442
  var cell = worksheet.getCell(r, c);
380
443
  var currentColumn = columns && Array.isArray(columns) ? columns[c - 1] : undefined;
381
- var customHeaderBgColor = (_a = currentColumn === null || currentColumn === void 0 ? void 0 : currentColumn.excelConfig) === null || _a === void 0 ? void 0 : _a.headerBgColor;
382
- cell.font = headerStyle.font;
383
- cell.alignment = headerStyle.alignment;
384
- cell.fill = __assign(__assign({}, headerStyle.fill), { fgColor: { argb: customHeaderBgColor || "FF4F81BD" } });
385
- cell.border = headerStyle.border;
444
+ var isDescriptionRow = hasTopDescription && r === 1;
445
+ if (isDescriptionRow) {
446
+ cell.font = descriptionStyle.font;
447
+ cell.alignment = descriptionStyle.alignment;
448
+ cell.fill = descriptionStyle.fill;
449
+ cell.border = descriptionStyle.border;
450
+ }
451
+ else {
452
+ var customHeaderBgColor = (_a = currentColumn === null || currentColumn === void 0 ? void 0 : currentColumn.excelConfig) === null || _a === void 0 ? void 0 : _a.headerBgColor;
453
+ var customHeaderFontColor = (_b = currentColumn === null || currentColumn === void 0 ? void 0 : currentColumn.excelConfig) === null || _b === void 0 ? void 0 : _b.headerFontColor;
454
+ cell.font = __assign(__assign({}, headerStyle.font), { color: { argb: customHeaderFontColor || headerStyle.font.color.argb } });
455
+ cell.alignment = headerStyle.alignment;
456
+ cell.fill = __assign(__assign({}, headerStyle.fill), { fgColor: {
457
+ argb: customHeaderBgColor || headerStyle.fill.fgColor.argb,
458
+ } });
459
+ cell.border = headerStyle.border;
460
+ }
386
461
  }
387
462
  }
463
+ // 如果外部传入了顶端描述行高度,则强制设置第1行高度
464
+ if (hasTopDescription &&
465
+ typeof topDescriptionRowHeight === "number" &&
466
+ topDescriptionRowHeight > 0) {
467
+ try {
468
+ worksheet.getRow(1).height = topDescriptionRowHeight;
469
+ }
470
+ catch (_d) { }
471
+ }
388
472
  // 数据行样式
389
473
  for (var rowIndex = 0; rowIndex < data.length; rowIndex++) {
390
474
  var rowData = data[rowIndex];
@@ -394,7 +478,7 @@ function applyExcelStyles(worksheet, data, mergeKeys, summaryKeys, columns, head
394
478
  var currentColumn = columns && Array.isArray(columns) ? columns[c - 1] : undefined;
395
479
  var base = isSubtotal ? summaryStyle : normalStyle;
396
480
  var columnAlign = columns && Array.isArray(columns)
397
- ? (_b = columns[c - 1]) === null || _b === void 0 ? void 0 : _b.align
481
+ ? (_c = columns[c - 1]) === null || _c === void 0 ? void 0 : _c.align
398
482
  : undefined;
399
483
  var alignment = __assign({}, base.alignment);
400
484
  if (columnAlign === "left" ||
@@ -409,23 +493,23 @@ function applyExcelStyles(worksheet, data, mergeKeys, summaryKeys, columns, head
409
493
  }
410
494
  }
411
495
  // 数值列格式
412
- if (summaryKeys && summaryKeys.length > 0 && columns) {
496
+ if (numKeys && numKeys.length > 0 && columns) {
413
497
  for (var rowIndex = 0; rowIndex < data.length; rowIndex++) {
414
498
  var rowData = data[rowIndex];
415
- var _loop_2 = function (summaryKey) {
416
- var colIndex = columns.findIndex(function (col) { return col.dataIndex === summaryKey; });
499
+ var _loop_2 = function (numKey) {
500
+ var colIndex = columns.findIndex(function (col) { return col.dataIndex === numKey; });
417
501
  if (colIndex === -1)
418
502
  return "continue";
419
503
  var cell = worksheet.getCell(headerRowCount + rowIndex + 1, colIndex + 1);
420
- var cellValue = rowData[summaryKey];
504
+ var cellValue = rowData[numKey];
421
505
  if (typeof cellValue === "number" || !isNaN(Number(cellValue))) {
422
506
  cell.value = Number(cellValue);
423
507
  cell.numFmt = "#,##0.00";
424
508
  }
425
509
  };
426
- for (var _i = 0, summaryKeys_1 = summaryKeys; _i < summaryKeys_1.length; _i++) {
427
- var summaryKey = summaryKeys_1[_i];
428
- _loop_2(summaryKey);
510
+ for (var _i = 0, numKeys_1 = numKeys; _i < numKeys_1.length; _i++) {
511
+ var numKey = numKeys_1[_i];
512
+ _loop_2(numKey);
429
513
  }
430
514
  }
431
515
  }
@@ -433,16 +517,16 @@ function applyExcelStyles(worksheet, data, mergeKeys, summaryKeys, columns, head
433
517
  /**
434
518
  * 主要的导出函数,使用改进的批注功能
435
519
  */
436
- function exportToExcelWithMerge(records, columns, mergeKeys, summaryKeys, fileName, sheetName, columnHeaders, summaryConfig) {
520
+ function exportToExcelWithMerge(records, columns, mergeKeys, numKeys, fileName, sheetName, columnHeaders, summaryConfig, topDescription, topDescriptionRowHeight) {
437
521
  if (fileName === void 0) { fileName = "export.xlsx"; }
438
522
  if (sheetName === void 0) { sheetName = "Sheet1"; }
439
- return exportToExcelWithMergeAndComments(records, columns, mergeKeys, summaryKeys, fileName, sheetName, columnHeaders, summaryConfig);
523
+ return exportToExcelWithMergeAndComments(records, columns, mergeKeys, numKeys, fileName, sheetName, columnHeaders, summaryConfig, topDescription, topDescriptionRowHeight);
440
524
  }
441
525
  /**
442
526
  * 简化版本的导出函数
443
527
  */
444
528
  function exportToExcelSimple(records, config) {
445
- return exportToExcelWithMerge(records, config.columns || [], config.mergeKeys, config.summaryKeys || [], config.fileName || "export.xlsx", config.sheetName || "Sheet1", config.columnHeaders, config.summaryConfig);
529
+ return exportToExcelWithMerge(records, config.columns || [], config.mergeKeys, config.numKeys || [], config.fileName || "export.xlsx", config.sheetName || "Sheet1", config.columnHeaders, config.summaryConfig, config.topDescription, config.topDescriptionRowHeight);
446
530
  }
447
531
  /**
448
532
  * Hook 版本,支持选择导出方式
@@ -450,19 +534,24 @@ function exportToExcelSimple(records, config) {
450
534
  function useExcelExport(records, config) {
451
535
  var columns = config.columns, isAutoMerge = config.isAutoMerge, columnHeaders = config.columnHeaders, summaryConfig = config.summaryConfig;
452
536
  var mergeKeys = useMergeKeys(columns, isAutoMerge);
453
- var summaryKeys = useMemo(function () {
454
- return columns
455
- .filter(function (item) { return item.isSummary; })
456
- .map(function (item) { return item.dataIndex; });
457
- }, [columns]);
458
- var exportFunction = useMemoizedFn(function (fileName) {
537
+ var numKeys = useNumKeys(columns);
538
+ var exportFunction = useMemoizedFn(function (fileName, _a) {
539
+ var topDescription = _a.topDescription, time = _a.time, topDescriptionRowHeight = _a.topDescriptionRowHeight;
540
+ if (!fileName.includes(".xlsx")) {
541
+ fileName = fileName + ".xlsx";
542
+ }
543
+ if (time) {
544
+ fileName = dayjs(time).format("YYYYMMDD") + "-" + fileName;
545
+ }
459
546
  exportToExcelSimple(records, {
460
547
  columns: columns,
461
548
  mergeKeys: mergeKeys,
462
- summaryKeys: summaryKeys,
549
+ numKeys: numKeys,
463
550
  fileName: fileName,
464
551
  columnHeaders: columnHeaders,
465
552
  summaryConfig: summaryConfig,
553
+ topDescription: topDescription,
554
+ topDescriptionRowHeight: topDescriptionRowHeight,
466
555
  });
467
556
  });
468
557
  return exportFunction;
@@ -385,6 +385,15 @@ var useMergeKeys = function (columns, isAutoMerge) {
385
385
  }, [isAutoMerge, columns]);
386
386
  return mergeKeys;
387
387
  };
388
+ var useNumKeys = function (columns) {
389
+ var numKeys = useMemo(function () {
390
+ var leafColumns = getLeafColumns(columns);
391
+ return Array.from(new Set(leafColumns
392
+ .filter(function (item) { return item.precision !== undefined; })
393
+ .map(function (item) { return item.key; })));
394
+ }, [columns]);
395
+ return numKeys;
396
+ };
388
397
  /**
389
398
  * 自动合并的一些处理
390
399
  */
@@ -510,4 +519,4 @@ function useMergeAddAndDel(_a) {
510
519
  return [newRowSelection, newAddAndDelProps];
511
520
  }
512
521
 
513
- export { useAddAndDelChange, useAutoMerge, useCalcScrollY, useCustomSort, useEditChange, useMergeAddAndDel, useMergeKeys, useMoveRowChange, useScuRfresh };
522
+ export { useAddAndDelChange, useAutoMerge, useCalcScrollY, useCustomSort, useEditChange, useMergeAddAndDel, useMergeKeys, useMoveRowChange, useNumKeys, useScuRfresh };
@@ -237,7 +237,14 @@ interface IColumnType<RecordType> extends Omit<ColumnType<RecordType>, "render">
237
237
  * 表头背景色
238
238
  */
239
239
  headerBgColor?: string;
240
+ /**
241
+ * 表头字体颜色
242
+ */
243
+ headerFontColor?: string;
240
244
  };
245
+ dateFormat?: string;
246
+ precision?: number;
247
+ thousand?: boolean;
241
248
  }
242
249
  interface IRenderOptions {
243
250
  insertTableFromClipboard: IFuncInsertTableFromClipboard;
@@ -296,7 +303,11 @@ interface ITableRefHandel {
296
303
  /**
297
304
  * 导出excel
298
305
  */
299
- exportExcel?: (fileName: string) => void;
306
+ exportExcel?: (fileName: string, config?: {
307
+ topDescription?: string;
308
+ time?: string;
309
+ topDescriptionRowHeight?: number;
310
+ }) => void;
300
311
  }
301
312
  interface ITableProps<RecordType> extends Omit<TableProps<RecordType>, "columns"> {
302
313
  /**
@@ -15,6 +15,8 @@ import FilterDropdown, { createFilterValue, filterHandle } from './components/Fi
15
15
  import Badge from './components/Badge.js';
16
16
  import { PLACEHOLDER_NULL } from '../config/constant.js';
17
17
  import { useMergeAddAndDel } from './hooks.js';
18
+ import dayjs from 'dayjs';
19
+ import { exactRound, addThousedSeparator } from 'zmdms-utils';
18
20
  import SearchOutlined from '../node_modules/@ant-design/icons/es/icons/SearchOutlined.js';
19
21
  import ModalComponent from '../modal/modal.js';
20
22
 
@@ -317,7 +319,15 @@ function useColumns(columns, options) {
317
319
  if (typeof text === "object") {
318
320
  return PLACEHOLDER_NULL;
319
321
  }
320
- return text == null || text === "" ? PLACEHOLDER_NULL : text;
322
+ if (text == null || text === "")
323
+ return PLACEHOLDER_NULL;
324
+ if (_column.dateFormat)
325
+ return dayjs(text).format(_column.dateFormat);
326
+ if (_column.precision)
327
+ text = exactRound(text, _column.precision);
328
+ if (_column.thousand)
329
+ text = addThousedSeparator(text);
330
+ return text;
321
331
  };
322
332
  }
323
333
  if (_column.render) {