zmdms-webui 3.5.1 → 3.5.3

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.
Files changed (148) hide show
  1. package/dist/es/applayoutheader/setting/fullCom.js +5 -1
  2. package/dist/es/applayoutheader/setting/userInfo.js +9 -5
  3. package/dist/es/applayoutheader/setting/userInfoModal.js +18 -12
  4. package/dist/es/applayoutheader/setting/userPwdModal.js +19 -13
  5. package/dist/es/applayoutheader/tabs/index.js +10 -6
  6. package/dist/es/applayoutsider/menu/Logo.js +5 -1
  7. package/dist/es/applayoutsider/menu/SearchInput.js +6 -2
  8. package/dist/es/applayoutsider/menu/SubMenu.js +6 -2
  9. package/dist/es/asyncdynamicsetting/asyncDynamicDrawer.js +2 -0
  10. package/dist/es/asyncdynamicsetting/useAsyncDrawer.js +2 -0
  11. package/dist/es/button/button.js +4 -2
  12. package/dist/es/button/buttonDownload.js +6 -4
  13. package/dist/es/button/buttonExport.js +8 -4
  14. package/dist/es/button/buttonPreview.js +6 -3
  15. package/dist/es/canvastable/canvasTable.js +33 -29
  16. package/dist/es/canvastable/components/CanvasTableMenu.js +5 -1
  17. package/dist/es/canvastable/components/FilterPopover.js +15 -11
  18. package/dist/es/canvastable/hooks/useProcessedColumns.js +7 -2
  19. package/dist/es/canvastable/hooks/useSummaryRow.js +6 -2
  20. package/dist/es/canvastable/hooks/useTableRender.js +5 -1
  21. package/dist/es/chatroom/chat-room.js +8 -3
  22. package/dist/es/config/i18n/en/appLayoutHeader.js +70 -0
  23. package/dist/es/config/i18n/en/appLayoutSider.js +14 -0
  24. package/dist/es/config/i18n/en/asyncDynamicSetting.js +42 -0
  25. package/dist/es/config/i18n/en/authLoading.js +6 -0
  26. package/dist/es/config/i18n/en/button.js +14 -0
  27. package/dist/es/config/i18n/en/canvasTable.js +50 -0
  28. package/dist/es/config/i18n/en/chatRoom.js +14 -0
  29. package/dist/es/config/i18n/en/datePicker.js +22 -0
  30. package/dist/es/config/i18n/en/detailList.js +6 -0
  31. package/dist/es/config/i18n/en/differences.js +6 -0
  32. package/dist/es/config/i18n/en/dynamicSetting.js +72 -0
  33. package/dist/es/config/i18n/en/electronSignatures.js +173 -0
  34. package/dist/es/config/i18n/en/enhanceSelect.js +8 -0
  35. package/dist/es/config/i18n/en/footer.js +8 -0
  36. package/dist/es/config/i18n/en/form.js +26 -0
  37. package/dist/es/config/i18n/en/formItem.js +8 -0
  38. package/dist/es/config/i18n/en/inputNumber.js +7 -0
  39. package/dist/es/config/i18n/en/login.js +76 -0
  40. package/dist/es/config/i18n/en/modal.js +8 -0
  41. package/dist/es/config/i18n/en/notAuthPage.js +8 -0
  42. package/dist/es/config/i18n/en/notRoutePage.js +8 -0
  43. package/dist/es/config/i18n/en/operationBtn.js +10 -0
  44. package/dist/es/config/i18n/en/print.js +16 -0
  45. package/dist/es/config/i18n/en/select.js +6 -0
  46. package/dist/es/config/i18n/en/table.js +65 -0
  47. package/dist/es/config/i18n/en/tabs.js +10 -0
  48. package/dist/es/config/i18n/en/translationButton.js +26 -0
  49. package/dist/es/config/i18n/en/tree.js +6 -0
  50. package/dist/es/config/i18n/en/uploadList.js +82 -0
  51. package/dist/es/config/i18n/en/ztTransfer.js +14 -0
  52. package/dist/es/config/i18n/en.js +65 -1
  53. package/dist/es/config/i18n/i18nInstance.js +33 -0
  54. package/dist/es/config/i18n/zh_cn/appLayoutHeader.js +70 -0
  55. package/dist/es/config/i18n/zh_cn/appLayoutSider.js +14 -0
  56. package/dist/es/config/i18n/zh_cn/asyncDynamicSetting.js +42 -0
  57. package/dist/es/config/i18n/zh_cn/authLoading.js +6 -0
  58. package/dist/es/config/i18n/zh_cn/button.js +14 -0
  59. package/dist/es/config/i18n/zh_cn/canvasTable.js +50 -0
  60. package/dist/es/config/i18n/zh_cn/chatRoom.js +14 -0
  61. package/dist/es/config/i18n/zh_cn/datePicker.js +22 -0
  62. package/dist/es/config/i18n/zh_cn/detailList.js +6 -0
  63. package/dist/es/config/i18n/zh_cn/differences.js +6 -0
  64. package/dist/es/config/i18n/zh_cn/dynamicSetting.js +72 -0
  65. package/dist/es/config/i18n/zh_cn/electronSignatures.js +342 -0
  66. package/dist/es/config/i18n/zh_cn/enhanceSelect.js +8 -0
  67. package/dist/es/config/i18n/zh_cn/footer.js +8 -0
  68. package/dist/es/config/i18n/zh_cn/form.js +26 -0
  69. package/dist/es/config/i18n/zh_cn/formItem.js +8 -0
  70. package/dist/es/config/i18n/zh_cn/inputNumber.js +7 -0
  71. package/dist/es/config/i18n/zh_cn/login.js +76 -0
  72. package/dist/es/config/i18n/zh_cn/modal.js +8 -0
  73. package/dist/es/config/i18n/zh_cn/notAuthPage.js +8 -0
  74. package/dist/es/config/i18n/zh_cn/notRoutePage.js +8 -0
  75. package/dist/es/config/i18n/zh_cn/operationBtn.js +10 -0
  76. package/dist/es/config/i18n/zh_cn/print.js +16 -0
  77. package/dist/es/config/i18n/zh_cn/select.js +6 -0
  78. package/dist/es/config/i18n/zh_cn/table.js +65 -0
  79. package/dist/es/config/i18n/zh_cn/tabs.js +10 -0
  80. package/dist/es/config/i18n/zh_cn/translationButton.js +26 -0
  81. package/dist/es/config/i18n/zh_cn/tree.js +6 -0
  82. package/dist/es/config/i18n/zh_cn/uploadList.js +82 -0
  83. package/dist/es/config/i18n/zh_cn/ztTransfer.js +14 -0
  84. package/dist/es/config/i18n/zh_cn.d.ts +538 -0
  85. package/dist/es/config/i18n/zh_cn.js +65 -1
  86. package/dist/es/config/index.js +1 -1
  87. package/dist/es/config/useLocale.d.ts +554 -0
  88. package/dist/es/config/useLocale.js +41 -8
  89. package/dist/es/datepicker/index.js +9 -3
  90. package/dist/es/datepicker/utils.js +32 -26
  91. package/dist/es/detaillist/item.js +7 -2
  92. package/dist/es/detaillist/list.js +2 -0
  93. package/dist/es/differences/differences.js +8 -1
  94. package/dist/es/dynamicsetting/dynamicDrawer.js +41 -24
  95. package/dist/es/dynamicsetting/hooks.js +2 -0
  96. package/dist/es/dynamicsetting/moreConfig.js +6 -2
  97. package/dist/es/dynamicsetting/useSearch.js +5 -1
  98. package/dist/es/dynamicsetting/useTemplate.js +19 -15
  99. package/dist/es/electronsignatures/content.js +52 -31
  100. package/dist/es/electronsignatures/filecomponents/file-upload.js +2 -0
  101. package/dist/es/electronsignatures/filecomponents/useFetchFileTypeData.js +2 -0
  102. package/dist/es/enhanceselect/enhance-select.js +7 -3
  103. package/dist/es/enhanceselect/list-query.js +2 -0
  104. package/dist/es/enhanceselect/page-query.js +2 -0
  105. package/dist/es/form/common-search-list.js +7 -2
  106. package/dist/es/form/form.js +9 -5
  107. package/dist/es/form/resetButton.js +16 -11
  108. package/dist/es/form/useCommonSearch.js +12 -9
  109. package/dist/es/formitem/formItem.js +4 -2
  110. package/dist/es/inputnumber/inputNumber.js +11 -2
  111. package/dist/es/inputnumber/utils.js +41 -8
  112. package/dist/es/login/forget-password.js +9 -5
  113. package/dist/es/login/index.js +12 -8
  114. package/dist/es/modal/modal.js +6 -2
  115. package/dist/es/operationbtn/operationBtn.js +5 -3
  116. package/dist/es/select/hooks.js +5 -1
  117. package/dist/es/table/components/ColumnAddDel.js +11 -5
  118. package/dist/es/table/components/EnhanceBodyCell.js +7 -5
  119. package/dist/es/table/components/FilterDropdown.js +67 -17
  120. package/dist/es/table/components/SortTitle.js +8 -4
  121. package/dist/es/table/components/TableMenu.js +5 -1
  122. package/dist/es/table/components/TitleOperation.js +5 -1
  123. package/dist/es/table/components/table-header-operation/FillDown.js +7 -3
  124. package/dist/es/table/excel.js +8 -4
  125. package/dist/es/table/hooks/useSelectSubtotal.js +8 -1
  126. package/dist/es/table/table.js +6 -4
  127. package/dist/es/table/useColumns.js +8 -4
  128. package/dist/es/table/useSummary.js +6 -2
  129. package/dist/es/table/useTableValidate.js +39 -7
  130. package/dist/es/table/utils.js +10 -5
  131. package/dist/es/tabs/tab-type.js +10 -1
  132. package/dist/es/title/title.js +2 -0
  133. package/dist/es/translationbutton/DownFile.js +8 -4
  134. package/dist/es/translationbutton/PreviewFile.js +5 -3
  135. package/dist/es/translationbutton/hooks.js +5 -1
  136. package/dist/es/translationbutton/translationButton.js +15 -12
  137. package/dist/es/tree/tree.js +8 -2
  138. package/dist/es/uploadlist/hooks.js +17 -11
  139. package/dist/es/uploadlist/uploadList.js +39 -26
  140. package/dist/es/uploadlist/uploadListDetail.js +15 -11
  141. package/dist/es/uploadlist/uploadTable.js +23 -19
  142. package/dist/es/uploadlist/utils.js +8 -1
  143. package/dist/es/zttransfer/Container.js +5 -1
  144. package/dist/es/zttransfer/SelectContainer.js +5 -1
  145. package/dist/es/zttransfer/zt-transfer.js +5 -1
  146. package/dist/index.build.d.ts +1 -0
  147. package/dist/index.es.js +1 -0
  148. package/package.json +5 -2
@@ -39,10 +39,14 @@ import { useExcelExport } from '../table/excel.js';
39
39
  import { getTableColumns } from '../table/utils.js';
40
40
  import DynamicSetting from '../dynamicsetting/dynamicSetting.js';
41
41
  import '../dynamicsetting/useTemplate.js';
42
+ import useLocale from '../config/useLocale.js';
43
+ import '../config/ZtxkContext.js';
44
+ import '../config/MyStorage.js';
42
45
 
43
46
  function CanvasTable(props) {
44
47
  var _a;
45
- var _b = props.dataSource, dataSource = _b === void 0 ? [] : _b, _c = props.columns, columns = _c === void 0 ? [] : _c, _d = props.rowKey, rowKey = _d === void 0 ? "id" : _d, _e = props.height, height = _e === void 0 ? 600 : _e, width = props.width, _f = props.rowHeight, rowHeight = _f === void 0 ? 36 : _f, _g = props.headerHeight, headerHeight = _g === void 0 ? 36 : _g, rowSelection = props.rowSelection, onSortChange = props.onSortChange, onFilterChange = props.onFilterChange, onScroll = props.onScroll, onRowClick = props.onRowClick, onColumnResize = props.onColumnResize, _h = props.bordered, bordered = _h === void 0 ? true : _h, _j = props.striped, striped = _j === void 0 ? false : _j, _k = props.emptyText, emptyText = _k === void 0 ? "暂无数据" : _k, style = props.style, className = props.className, _l = props.loading, loading = _l === void 0 ? false : _l, _m = props.isContextMenu, isContextMenu = _m === void 0 ? true : _m, isFullscreenHandle = props.isFullscreenHandle, mode = props.mode, dynamicKey = props.dynamicKey, dynamicVersion = props.dynamicVersion, customDynamicListHandle = props.customDynamicListHandle, isDimensionDynamic = props.isDimensionDynamic, _o = props.isDimensionMergeChildren, isDimensionMergeChildren = _o === void 0 ? true : _o, dimensionCustomSumKeys = props.dimensionCustomSumKeys, isAutoMerge = props.isAutoMerge, _p = props.isIndexMerge, isIndexMerge = _p === void 0 ? true : _p, _q = props.isSelectionMerge, isSelectionMerge = _q === void 0 ? false : _q, _r = props.renderMode, renderMode = _r === void 0 ? "object" : _r, fixedRowsCount = props.fixedRowsCount, fixedRowsConfig = props.fixedRowsConfig, _s = props.summaryFixed, summaryFixed = _s === void 0 ? false : _s, _t = props.isAutoScrollY, isAutoScrollY = _t === void 0 ? false : _t, _u = props.autoScrollYMarginBottom, autoScrollYMarginBottom = _u === void 0 ? 65 : _u, canvasTableId = props.canvasTableId, headerWrap = props.headerWrap, _v = props.headerAlign, headerAlign = _v === void 0 ? "center" : _v, tableRefHandle = props.tableRefHandle, exportExcelConfig = props.exportExcelConfig, _w = props.maxHeight, maxHeight = _w === void 0 ? 3000 : _w, expandable = props.expandable;
48
+ var locale = useLocale().CanvasTable;
49
+ var _b = props.dataSource, dataSource = _b === void 0 ? [] : _b, _c = props.columns, columns = _c === void 0 ? [] : _c, _d = props.rowKey, rowKey = _d === void 0 ? "id" : _d, _e = props.height, height = _e === void 0 ? 600 : _e, width = props.width, _f = props.rowHeight, rowHeight = _f === void 0 ? 36 : _f, _g = props.headerHeight, headerHeight = _g === void 0 ? 36 : _g, rowSelection = props.rowSelection, onSortChange = props.onSortChange, onFilterChange = props.onFilterChange, onScroll = props.onScroll, onRowClick = props.onRowClick, onColumnResize = props.onColumnResize, _h = props.bordered, bordered = _h === void 0 ? true : _h, _j = props.striped, striped = _j === void 0 ? false : _j, emptyText = props.emptyText, style = props.style, className = props.className, _k = props.loading, loading = _k === void 0 ? false : _k, _l = props.isContextMenu, isContextMenu = _l === void 0 ? true : _l, isFullscreenHandle = props.isFullscreenHandle, mode = props.mode, dynamicKey = props.dynamicKey, dynamicVersion = props.dynamicVersion, customDynamicListHandle = props.customDynamicListHandle, isDimensionDynamic = props.isDimensionDynamic, _m = props.isDimensionMergeChildren, isDimensionMergeChildren = _m === void 0 ? true : _m, dimensionCustomSumKeys = props.dimensionCustomSumKeys, isAutoMerge = props.isAutoMerge, _o = props.isIndexMerge, isIndexMerge = _o === void 0 ? true : _o, _p = props.isSelectionMerge, isSelectionMerge = _p === void 0 ? false : _p, _q = props.renderMode, renderMode = _q === void 0 ? "object" : _q, fixedRowsCount = props.fixedRowsCount, fixedRowsConfig = props.fixedRowsConfig, _r = props.summaryFixed, summaryFixed = _r === void 0 ? false : _r, _s = props.isAutoScrollY, isAutoScrollY = _s === void 0 ? false : _s, _t = props.autoScrollYMarginBottom, autoScrollYMarginBottom = _t === void 0 ? 65 : _t, canvasTableId = props.canvasTableId, headerWrap = props.headerWrap, _u = props.headerAlign, headerAlign = _u === void 0 ? "center" : _u, tableRefHandle = props.tableRefHandle, exportExcelConfig = props.exportExcelConfig, _v = props.maxHeight, maxHeight = _v === void 0 ? 3000 : _v, expandable = props.expandable;
46
50
  var actualMode = "mode" in props ? mode : "index";
47
51
  var canvasRef = useRef(null);
48
52
  var containerRef = useRef(null);
@@ -65,17 +69,17 @@ function CanvasTable(props) {
65
69
  return String((_a = record[rowKey]) !== null && _a !== void 0 ? _a : index);
66
70
  }, [rowKey]);
67
71
  // 动态列配置
68
- var _x = useDynamicListByColumns(columns, {
72
+ var _w = useDynamicListByColumns(columns, {
69
73
  dynamicKey: dynamicKey,
70
74
  dynamicVersion: dynamicVersion,
71
75
  customDynamicListHandle: customDynamicListHandle,
72
- }), defaultDynamicList = _x.defaultDynamicList, currentDynamicList = _x.currentDynamicList, onCurrentListChange = _x.onCurrentListChange, dynamicSettingRef = _x.dynamicSettingRef;
76
+ }), defaultDynamicList = _w.defaultDynamicList, currentDynamicList = _w.currentDynamicList, onCurrentListChange = _w.onCurrentListChange, dynamicSettingRef = _w.dynamicSettingRef;
73
77
  // 根据动态列配置处理columns
74
78
  var dynamicColumns = useMemo(function () { return getTableColumns(columns, currentDynamicList); }, [columns, currentDynamicList]).columns;
75
79
  // 内部列宽状态(未开启动态配置时使用)
76
- var _y = useState({}), internalColumnWidths = _y[0], setInternalColumnWidths = _y[1];
80
+ var _x = useState({}), internalColumnWidths = _x[0], setInternalColumnWidths = _x[1];
77
81
  // 跟踪用户手动调整过宽度的列(用于排除自动宽度分配)
78
- var _z = useState(new Set()), manuallyResizedColumnKeys = _z[0], setManuallyResizedColumnKeys = _z[1];
82
+ var _y = useState(new Set()), manuallyResizedColumnKeys = _y[0], setManuallyResizedColumnKeys = _y[1];
79
83
  // 处理选中框列、序号列等
80
84
  var processedColumnsOld = useProcessedColumns({
81
85
  columns: columns,
@@ -90,31 +94,31 @@ function CanvasTable(props) {
90
94
  headerAlign: headerAlign,
91
95
  });
92
96
  // 表格状态管理
93
- var _0 = useTableState({
97
+ var _z = useTableState({
94
98
  dataSource: dataSource,
95
99
  columns: processedColumnsOld,
96
100
  rowSelection: rowSelection,
97
101
  onFilterChange: onFilterChange,
98
102
  isAutoMerge: isAutoMerge,
99
- }), state = _0.state, setState = _0.setState, handleFilterChange = _0.handleFilterChange, closeFilterPopover = _0.closeFilterPopover;
103
+ }), state = _z.state, setState = _z.setState, handleFilterChange = _z.handleFilterChange, closeFilterPopover = _z.closeFilterPopover;
100
104
  // 树形展开管理
101
- var _1 = useExpandable({
105
+ var _0 = useExpandable({
102
106
  dataSource: dataSource,
103
107
  expandable: expandable,
104
108
  rowKey: rowKey,
105
- }), expandedKeys = _1.expandedKeys, flattenedData = _1.flattenedData, toggleExpand = _1.toggleExpand, expandRow = _1.expandRow, collapseRow = _1.collapseRow, setExpandedRowKeys = _1.setExpandedRowKeys, hasExpandable = _1.hasExpandable;
109
+ }), expandedKeys = _0.expandedKeys, flattenedData = _0.flattenedData, toggleExpand = _0.toggleExpand, expandRow = _0.expandRow, collapseRow = _0.collapseRow, setExpandedRowKeys = _0.setExpandedRowKeys, hasExpandable = _0.hasExpandable;
106
110
  var order = useMemo(function () {
107
111
  return state.sortOrder && state.sortField
108
112
  ? { field: state.sortField, order: state.sortOrder }
109
113
  : undefined;
110
114
  }, [state.sortOrder, state.sortField]);
111
- var _2 = useAutoMerge(dataSource, processedColumnsOld, {
115
+ var _1 = useAutoMerge(dataSource, processedColumnsOld, {
112
116
  isAutoMerge: isAutoMerge,
113
117
  isDimensionDynamic: isDimensionDynamic,
114
118
  isDimensionMergeChildren: isDimensionMergeChildren,
115
119
  order: order,
116
120
  dimensionCustomSumKeys: dimensionCustomSumKeys,
117
- }), newDataSource = _2[0], processedColumns = _2[1];
121
+ }), newDataSource = _1[0], processedColumns = _1[1];
118
122
  // 如果开启了树形展开,使用扁平化后的数据源
119
123
  var expandedDataSource = useMemo(function () {
120
124
  if (hasExpandable) {
@@ -123,10 +127,10 @@ function CanvasTable(props) {
123
127
  return newDataSource;
124
128
  }, [hasExpandable, flattenedData, newDataSource]);
125
129
  // 生成合计行和最终数据源(基于全量数据,合计值不随筛选变化)
126
- var _3 = useSummaryRow({
130
+ var _2 = useSummaryRow({
127
131
  columns: processedColumns,
128
132
  dataSource: expandedDataSource,
129
- }), finalDataSource = _3.finalDataSource, hasSummaryRowConfig = _3.hasSummaryRow;
133
+ }), finalDataSource = _2.finalDataSource, hasSummaryRowConfig = _2.hasSummaryRow;
130
134
  // 基于含合计行的全量数据筛选
131
135
  // 末尾合计行(总计)始终保留在最后,不参与筛选
132
136
  var processedDataSource = useMemo(function () {
@@ -161,9 +165,9 @@ function CanvasTable(props) {
161
165
  // 基于含合计行的全量数据源生成筛选候选值
162
166
  var autoGeneratedFilters = useMemo(function () { return generateAutoFilters(finalDataSource, processedColumns); }, [finalDataSource, processedColumns]);
163
167
  // 用于存储计算后的表头高度(用于自动高度的精确计算)
164
- var _4 = useState(undefined), preciseHeaderHeight = _4[0], setPreciseHeaderHeight = _4[1];
168
+ var _3 = useState(undefined), preciseHeaderHeight = _3[0], setPreciseHeaderHeight = _3[1];
165
169
  // 用于存储是否需要横向滚动条(用于自动高度的精确计算)
166
- var _5 = useState(false), needHorizontalScrollbar = _5[0], setNeedHorizontalScrollbar = _5[1];
170
+ var _4 = useState(false), needHorizontalScrollbar = _4[0], setNeedHorizontalScrollbar = _4[1];
167
171
  // 自动高度计算(需要在容器尺寸计算之前)
168
172
  var autoHeight = useCanvasTableAutoHeight(isAutoScrollY, autoScrollYMarginBottom, canvasTableId, processedDataSource.length, // 数据行数(用于 content 模式)
169
173
  headerHeight, // 表头基础高度(用于 content 模式的初始计算)
@@ -230,7 +234,7 @@ function CanvasTable(props) {
230
234
  return calculateTotalHeight(calculatedHeaderHeight, processedDataSource.length, rowHeight);
231
235
  }, [calculatedHeaderHeight, processedDataSource.length, rowHeight]);
232
236
  // 计算滚动条指标
233
- var _6 = useScrollbarMetrics({
237
+ var _5 = useScrollbarMetrics({
234
238
  containerWidth: containerWidth,
235
239
  containerHeight: containerHeight,
236
240
  totalWidth: totalWidth,
@@ -238,14 +242,14 @@ function CanvasTable(props) {
238
242
  headerHeight: calculatedHeaderHeight,
239
243
  scrollTop: 0,
240
244
  scrollLeft: 0,
241
- }), maxScrollTop = _6.maxScrollTop, maxScrollLeft = _6.maxScrollLeft;
245
+ }), maxScrollTop = _5.maxScrollTop, maxScrollLeft = _5.maxScrollLeft;
242
246
  // 滚动管理(使用预先计算的maxScrollTop和maxScrollLeft)
243
- var _7 = useTableScroll({
247
+ var _6 = useTableScroll({
244
248
  containerRef: containerRef,
245
249
  maxScrollTop: maxScrollTop,
246
250
  maxScrollLeft: maxScrollLeft,
247
251
  onScroll: onScroll,
248
- }), scrollState = _7.scrollState, setScrollState = _7.setScrollState;
252
+ }), scrollState = _6.scrollState, setScrollState = _6.setScrollState;
249
253
  // 使用 ref 保存最新的滚动位置,确保在组件卸载过程中仍能访问
250
254
  var scrollPositionRef = useRef({ x: 0, y: 0 });
251
255
  useEffect(function () {
@@ -289,12 +293,12 @@ function CanvasTable(props) {
289
293
  needHorizontalScrollbar,
290
294
  ]);
291
295
  // 单元格框选
292
- var _8 = useTableSelection({
296
+ var _7 = useTableSelection({
293
297
  state: state,
294
298
  setState: setState,
295
299
  }),
296
300
  // selectionStartRef,
297
- startSelection = _8.startSelection, updateSelection = _8.updateSelection, extendSelection = _8.extendSelection;
301
+ startSelection = _7.startSelection, updateSelection = _7.updateSelection, extendSelection = _7.extendSelection;
298
302
  // 处理列宽调整
299
303
  var handleColumnResize = useCallback(function (columnKey, newWidth) {
300
304
  var _a;
@@ -349,20 +353,20 @@ function CanvasTable(props) {
349
353
  onCurrentListChange,
350
354
  ]);
351
355
  // 列宽调整
352
- var _9 = useColumnResize({
356
+ var _8 = useColumnResize({
353
357
  columnRenderInfos: columnRenderInfos,
354
358
  containerWidth: containerWidth,
355
359
  headerHeight: calculatedHeaderHeight,
356
360
  scrollLeft: scrollState.scrollLeft,
357
361
  onColumnResize: handleColumnResize,
358
- }), resizeState = _9.resizeState, checkResizeHandle = _9.checkResizeHandle, startResize = _9.startResize, updateResize = _9.updateResize, endResize = _9.endResize, setHoverResizeColumn = _9.setHoverResizeColumn, getColumnWidth = _9.getColumnWidth, RESIZE_HANDLE_WIDTH = _9.RESIZE_HANDLE_WIDTH;
362
+ }), resizeState = _8.resizeState, checkResizeHandle = _8.checkResizeHandle, startResize = _8.startResize, updateResize = _8.updateResize, endResize = _8.endResize, setHoverResizeColumn = _8.setHoverResizeColumn, getColumnWidth = _8.getColumnWidth, RESIZE_HANDLE_WIDTH = _8.RESIZE_HANDLE_WIDTH;
359
363
  // 复制到剪贴板
360
- var _10 = useCopyToClipboard({
364
+ var _9 = useCopyToClipboard({
361
365
  cellSelection: state.cellSelection,
362
366
  processedDataSource: processedDataSource,
363
367
  columns: processedColumns,
364
368
  containerRef: containerRef,
365
- }), getSelectedCellsText = _10.getSelectedCellsText, copyToClipboard = _10.copyToClipboard;
369
+ }), getSelectedCellsText = _9.getSelectedCellsText, copyToClipboard = _9.copyToClipboard;
366
370
  // 处理右键菜单的复制操作
367
371
  var handleCopy = useCallback(function () {
368
372
  var text = getSelectedCellsText();
@@ -382,7 +386,7 @@ function CanvasTable(props) {
382
386
  childrenColumnName: (_a = props.expandable) === null || _a === void 0 ? void 0 : _a.childrenColumnName,
383
387
  });
384
388
  // 交互事件处理(使用baseScrollbarMetrics的maxScrollTop/maxScrollLeft以保持稳定)
385
- var _11 = useTableInteraction({
389
+ var _10 = useTableInteraction({
386
390
  state: state,
387
391
  setState: setState,
388
392
  scrollState: scrollState,
@@ -432,7 +436,7 @@ function CanvasTable(props) {
432
436
  fixedRowsCount: fixedRowsCount,
433
437
  fixedRowsConfig: fixedRowsConfig,
434
438
  summaryFixed: summaryFixed,
435
- }), handleCanvasMouseDown = _11.handleCanvasMouseDown, handleCanvasMouseMove = _11.handleCanvasMouseMove, handleCanvasMouseUp = _11.handleCanvasMouseUp, handleCanvasMouseLeave = _11.handleCanvasMouseLeave, handleCanvasContextMenu = _11.handleCanvasContextMenu;
439
+ }), handleCanvasMouseDown = _10.handleCanvasMouseDown, handleCanvasMouseMove = _10.handleCanvasMouseMove, handleCanvasMouseUp = _10.handleCanvasMouseUp, handleCanvasMouseLeave = _10.handleCanvasMouseLeave, handleCanvasContextMenu = _10.handleCanvasContextMenu;
436
440
  // 渲染表格
437
441
  useTableRender(__assign(__assign({ canvasRef: canvasRef, processedDataSource: processedDataSource, columnRenderInfos: columnRenderInfos, columns: processedColumns, // 传递原始columns用于渲染多级表头
438
442
  state: state, scrollState: scrollState, rowSelection: rowSelection, containerWidth: containerWidth, containerHeight: containerHeight, headerHeight: calculatedHeaderHeight, baseHeaderHeight: headerHeight, // 传入原始基础高度用于计算每层高度
@@ -603,8 +607,8 @@ function CanvasTable(props) {
603
607
  WebkitFontSmoothing: "antialiased",
604
608
  MozOsxFontSmoothing: "grayscale",
605
609
  textRendering: "optimizeLegibility",
606
- } }), dynamicKey ? (jsx(DynamicSetting, { parentDynamicKey: TABLE_DYNAMIC_KEY, dynamicKey: dynamicKey, defaultList: defaultDynamicList, onCurrentListChange: onCurrentListChange, ref: dynamicSettingRef, hiddenOperationIcon: true, isMore: true, isFixed: true, isDimensionDynamic: isDimensionDynamic })) : null, jsx(EmptyPlaceholder, { visible: processedDataSource.length === 0, text: emptyText, headerHeight: calculatedHeaderHeight }), jsx(HeaderOverlay, { overlays: headerOverlays }), jsx(CellOverlay, { overlays: cellOverlays }), filterPopoverElement, jsx(Tooltip, { visible: state.tooltip.visible, content: state.tooltip.content, position: state.tooltip.position }), jsx(BadgePopover, { visible: state.badgePopover.visible, content: state.badgePopover.content, position: state.badgePopover.position, popoverRef: badgePopoverRef }), menuId ? (jsx(CanvasTableMenu, { menuId: menuId, containerRef: containerRef, isFullscreenHandle: isFullscreenHandle, tableMenuRef: tableMenuRef, onCopy: handleCopy, onExport: function () {
607
- return exportExcel((exportExcelConfig === null || exportExcelConfig === void 0 ? void 0 : exportExcelConfig.fileName) || "表格数据.xlsx", exportExcelConfig);
610
+ } }), dynamicKey ? (jsx(DynamicSetting, { parentDynamicKey: TABLE_DYNAMIC_KEY, dynamicKey: dynamicKey, defaultList: defaultDynamicList, onCurrentListChange: onCurrentListChange, ref: dynamicSettingRef, hiddenOperationIcon: true, isMore: true, isFixed: true, isDimensionDynamic: isDimensionDynamic })) : null, jsx(EmptyPlaceholder, { visible: processedDataSource.length === 0, text: emptyText || locale.emptyText, headerHeight: calculatedHeaderHeight }), jsx(HeaderOverlay, { overlays: headerOverlays }), jsx(CellOverlay, { overlays: cellOverlays }), filterPopoverElement, jsx(Tooltip, { visible: state.tooltip.visible, content: state.tooltip.content, position: state.tooltip.position }), jsx(BadgePopover, { visible: state.badgePopover.visible, content: state.badgePopover.content, position: state.badgePopover.position, popoverRef: badgePopoverRef }), menuId ? (jsx(CanvasTableMenu, { menuId: menuId, containerRef: containerRef, isFullscreenHandle: isFullscreenHandle, tableMenuRef: tableMenuRef, onCopy: handleCopy, onExport: function () {
611
+ return exportExcel((exportExcelConfig === null || exportExcelConfig === void 0 ? void 0 : exportExcelConfig.fileName) || locale.exportFileName, exportExcelConfig);
608
612
  } })) : null] })) })));
609
613
  }
610
614
 
@@ -4,9 +4,13 @@ import { useState, useEffect, useImperativeHandle } from 'react';
4
4
  import { Menu as it, Item as pt } from '../../node_modules/react-contexify/dist/index.js';
5
5
  import screenfull from '../../node_modules/screenfull/index.js';
6
6
  import { useLatest } from 'ahooks';
7
+ import useLocale from '../../config/useLocale.js';
8
+ import '../../config/ZtxkContext.js';
9
+ import '../../config/MyStorage.js';
7
10
 
8
11
  var CanvasTableMenu = function (_a) {
9
12
  var menuId = _a.menuId, containerRef = _a.containerRef, isFullscreenHandle = _a.isFullscreenHandle, tableMenuRef = _a.tableMenuRef, onCopy = _a.onCopy, onExport = _a.onExport;
13
+ var locale = useLocale().CanvasTable;
10
14
  var _b = useState(false), isFull = _b[0], setIsFull = _b[1];
11
15
  var isFullscreenHandleRef = useLatest(isFullscreenHandle);
12
16
  function toggleFullscreen() {
@@ -67,7 +71,7 @@ var CanvasTableMenu = function (_a) {
67
71
  useImperativeHandle(tableMenuRef, function () { return ({
68
72
  toggleFullscreen: toggleFullscreen,
69
73
  }); });
70
- return (jsxs(Fragment, { children: [jsxs(it, __assign({ id: menuId, className: "canvas-table-menu" }, { children: [jsx(pt, __assign({ data: "copy", onClick: onMenuItemClick }, { children: "\u590D\u5236" })), onExport ? (jsx(pt, __assign({ data: "export", onClick: onMenuItemClick }, { children: "\u5BFC\u51FAExcel" }))) : null, jsx(pt, __assign({ data: "fullscreen", onClick: onMenuItemClick }, { children: isFull ? "退出全屏" : "全屏" }))] })), isFull ? (jsx("div", __assign({ className: "canvas-table--exit-fullscreen", onClick: toggleFullscreen }, { children: "\u9000\u51FA\u5168\u5C4F" }))) : null] }));
74
+ return (jsxs(Fragment, { children: [jsxs(it, __assign({ id: menuId, className: "canvas-table-menu" }, { children: [jsx(pt, __assign({ data: "copy", onClick: onMenuItemClick }, { children: locale.copy })), onExport ? (jsx(pt, __assign({ data: "export", onClick: onMenuItemClick }, { children: locale.exportExcel }))) : null, jsx(pt, __assign({ data: "fullscreen", onClick: onMenuItemClick }, { children: isFull ? locale.exitFullscreen : locale.fullscreen }))] })), isFull ? (jsx("div", __assign({ className: "canvas-table--exit-fullscreen", onClick: toggleFullscreen }, { children: locale.exitFullscreen }))) : null] }));
71
75
  };
72
76
 
73
77
  export { CanvasTableMenu as default };
@@ -2,10 +2,14 @@ import { __assign, __spreadArray } from '../../_virtual/_tslib.js';
2
2
  import { jsxs, jsx } from 'react/jsx-runtime';
3
3
  import { useState, useEffect, useMemo } from 'react';
4
4
  import { Select, Tabs, Space, Input, Button, Checkbox } from 'antd';
5
+ import useLocale, { formatLocaleText } from '../../config/useLocale.js';
6
+ import '../../config/ZtxkContext.js';
7
+ import '../../config/MyStorage.js';
5
8
 
6
9
  var Option = Select.Option;
7
10
  var FilterPopover = function (_a) {
8
11
  var visible = _a.visible; _a.columnKey; _a.columnTitle; var _b = _a.dataType, dataType = _b === void 0 ? "text" : _b, precision = _a.precision, thousand = _a.thousand, position = _a.position, filterOptions = _a.filterOptions, selectedValues = _a.selectedValues, onConfirm = _a.onConfirm, onReset = _a.onReset, onClose = _a.onClose, popoverRef = _a.popoverRef;
12
+ var locale = useLocale().CanvasTable;
9
13
  // 临时选中值(点击确认才生效)
10
14
  var _c = useState([]), tempSelectedValues = _c[0], setTempSelectedValues = _c[1];
11
15
  // 搜索关键词
@@ -217,27 +221,27 @@ var FilterPopover = function (_a) {
217
221
  } }, { children: [jsx(Tabs, { activeKey: activeTab, onChange: setActiveTab, size: "small", items: [
218
222
  {
219
223
  key: "single",
220
- label: "单值",
221
- children: (jsx("div", { children: jsxs(Space.Compact, __assign({ style: { width: "100%", marginBottom: "12px" } }, { children: [jsxs(Select, __assign({ value: numberOperator, onChange: setNumberOperator, style: { width: "80px" } }, { children: [jsx(Option, __assign({ value: "=" }, { children: "=" })), jsx(Option, __assign({ value: "!=" }, { children: "!=" })), jsx(Option, __assign({ value: ">" }, { children: ">" })), jsx(Option, __assign({ value: "<" }, { children: "<" })), jsx(Option, __assign({ value: ">=" }, { children: ">=" })), jsx(Option, __assign({ value: "<=" }, { children: "<=" }))] })), jsx(Input, { type: "number", placeholder: "\u8F93\u5165\u6570\u503C", value: numberValue, onChange: function (e) { return setNumberValue(e.target.value); }, onPressEnter: handleNumberFilter, style: { flex: 1 } })] })) })),
224
+ label: locale.filterSingle,
225
+ children: (jsx("div", { children: jsxs(Space.Compact, __assign({ style: { width: "100%", marginBottom: "12px" } }, { children: [jsxs(Select, __assign({ value: numberOperator, onChange: setNumberOperator, style: { width: "80px" } }, { children: [jsx(Option, __assign({ value: "=" }, { children: "=" })), jsx(Option, __assign({ value: "!=" }, { children: "!=" })), jsx(Option, __assign({ value: ">" }, { children: ">" })), jsx(Option, __assign({ value: "<" }, { children: "<" })), jsx(Option, __assign({ value: ">=" }, { children: ">=" })), jsx(Option, __assign({ value: "<=" }, { children: "<=" }))] })), jsx(Input, { type: "number", placeholder: locale.filterNumberPlaceholder, value: numberValue, onChange: function (e) { return setNumberValue(e.target.value); }, onPressEnter: handleNumberFilter, style: { flex: 1 } })] })) })),
222
226
  },
223
227
  {
224
228
  key: "range",
225
- label: "区间",
229
+ label: locale.filterRange,
226
230
  children: (jsxs("div", { children: [jsxs("div", __assign({ style: { marginBottom: "8px" } }, { children: [jsx("div", __assign({ style: {
227
231
  fontSize: "12px",
228
232
  color: "#666",
229
233
  marginBottom: "4px",
230
- } }, { children: "\u6700\u5C0F\u503C\uFF1A" })), jsxs(Space.Compact, __assign({ style: { width: "100%" } }, { children: [jsxs(Select, __assign({ value: minOperator, onChange: setMinOperator, style: { width: "70px" } }, { children: [jsx(Option, __assign({ value: ">=" }, { children: ">=" })), jsx(Option, __assign({ value: ">" }, { children: ">" }))] })), jsx(Input, { type: "number", placeholder: "\u6700\u5C0F\u503C", value: minValue, onChange: function (e) { return setMinValue(e.target.value); }, onPressEnter: handleNumberFilter, style: { flex: 1 } })] }))] })), jsxs("div", __assign({ style: { marginBottom: "12px" } }, { children: [jsx("div", __assign({ style: {
234
+ } }, { children: locale.filterMinLabel })), jsxs(Space.Compact, __assign({ style: { width: "100%" } }, { children: [jsxs(Select, __assign({ value: minOperator, onChange: setMinOperator, style: { width: "70px" } }, { children: [jsx(Option, __assign({ value: ">=" }, { children: ">=" })), jsx(Option, __assign({ value: ">" }, { children: ">" }))] })), jsx(Input, { type: "number", placeholder: locale.filterMinPlaceholder, value: minValue, onChange: function (e) { return setMinValue(e.target.value); }, onPressEnter: handleNumberFilter, style: { flex: 1 } })] }))] })), jsxs("div", __assign({ style: { marginBottom: "12px" } }, { children: [jsx("div", __assign({ style: {
231
235
  fontSize: "12px",
232
236
  color: "#666",
233
237
  marginBottom: "4px",
234
- } }, { children: "\u6700\u5927\u503C\uFF1A" })), jsxs(Space.Compact, __assign({ style: { width: "100%" } }, { children: [jsxs(Select, __assign({ value: maxOperator, onChange: setMaxOperator, style: { width: "70px" } }, { children: [jsx(Option, __assign({ value: "<=" }, { children: "<=" })), jsx(Option, __assign({ value: "<" }, { children: "<" }))] })), jsx(Input, { type: "number", placeholder: "\u6700\u5927\u503C", value: maxValue, onChange: function (e) { return setMaxValue(e.target.value); }, onPressEnter: handleNumberFilter, style: { flex: 1 } })] }))] })), jsx("div", __assign({ style: { fontSize: "12px", color: "#1890ff" } }, { children: "\u793A\u4F8B\uFF1A\u8BBE\u7F6E >=10 \u548C <=20 \u8868\u793A 10-20 \u4E4B\u95F4" }))] })),
238
+ } }, { children: locale.filterMaxLabel })), jsxs(Space.Compact, __assign({ style: { width: "100%" } }, { children: [jsxs(Select, __assign({ value: maxOperator, onChange: setMaxOperator, style: { width: "70px" } }, { children: [jsx(Option, __assign({ value: "<=" }, { children: "<=" })), jsx(Option, __assign({ value: "<" }, { children: "<" }))] })), jsx(Input, { type: "number", placeholder: locale.filterMaxPlaceholder, value: maxValue, onChange: function (e) { return setMaxValue(e.target.value); }, onPressEnter: handleNumberFilter, style: { flex: 1 } })] }))] })), jsx("div", __assign({ style: { fontSize: "12px", color: "#1890ff" } }, { children: locale.filterRangeExample }))] })),
235
239
  },
236
240
  ] }), jsx("div", __assign({ style: {
237
241
  borderTop: "1px solid #f0f0f0",
238
242
  paddingTop: "12px",
239
243
  marginTop: "12px",
240
- } }, { children: jsxs(Space, { children: [jsx(Button, __assign({ size: "small", type: "primary", onClick: handleNumberFilter, disabled: !numberValue && !minValue && !maxValue }, { children: "\u786E\u5B9A" })), jsx(Button, __assign({ size: "small", onClick: handleResetAndClose }, { children: "\u91CD\u7F6E" }))] }) }))] })));
244
+ } }, { children: jsxs(Space, { children: [jsx(Button, __assign({ size: "small", type: "primary", onClick: handleNumberFilter, disabled: !numberValue && !minValue && !maxValue }, { children: locale.filterOk })), jsx(Button, __assign({ size: "small", onClick: handleResetAndClose }, { children: locale.filterReset }))] }) }))] })));
241
245
  }
242
246
  // 文本类型的筛选界面
243
247
  return (jsxs("div", __assign({ ref: popoverRef, className: "canvas-table-filter-popover", style: {
@@ -251,24 +255,24 @@ var FilterPopover = function (_a) {
251
255
  padding: "8px",
252
256
  minWidth: "200px",
253
257
  maxWidth: "300px",
254
- } }, { children: [jsxs("div", __assign({ style: { padding: "4px 8px", marginBottom: "8px" } }, { children: [jsx(Input, { placeholder: "\u8F93\u5165\u5173\u952E\u8BCD\u6A21\u7CCA\u67E5\u8BE2", value: searchText, onChange: function (e) { return setSearchText(e.target.value); }, allowClear: true, size: "small", onPressEnter: handleConfirm }), searchText && (jsxs("div", __assign({ style: {
258
+ } }, { children: [jsxs("div", __assign({ style: { padding: "4px 8px", marginBottom: "8px" } }, { children: [jsx(Input, { placeholder: locale.filterSearchPlaceholder, value: searchText, onChange: function (e) { return setSearchText(e.target.value); }, allowClear: true, size: "small", onPressEnter: handleConfirm }), searchText && (jsx("div", __assign({ style: {
255
259
  fontSize: "12px",
256
260
  color: "#1890ff",
257
261
  marginTop: "4px",
258
262
  padding: "0 4px",
259
- } }, { children: ["\u6309\u56DE\u8F66\u6216\u70B9\u51FB\u786E\u5B9A\u4EE5\u6A21\u7CCA\u67E5\u8BE2\"", searchText, "\""] })))] })), jsx("div", __assign({ style: {
263
+ } }, { children: formatLocaleText(locale.filterFuzzyTip, { text: searchText }) })))] })), jsx("div", __assign({ style: {
260
264
  padding: "5px 12px",
261
265
  borderBottom: "1px solid #f0f0f0",
262
266
  marginBottom: "4px",
263
- } }, { children: jsx(Checkbox, __assign({ indeterminate: isIndeterminate, checked: isAllSelected, onChange: handleSelectAll }, { children: "\u5168\u9009" })) })), jsx("div", __assign({ style: { maxHeight: "300px", overflowY: "auto" } }, { children: filteredOptions.length > 0 ? (filteredOptions.map(function (filter) { return (jsx("div", __assign({ style: { padding: "5px 12px", cursor: "pointer" }, onClick: function () { return handleCheckboxChange(filter.value); } }, { children: jsx(Checkbox, __assign({ checked: tempSelectedValues.includes(filter.value) }, { children: filter.text })) }), filter.value)); })) : (jsx("div", __assign({ style: {
267
+ } }, { children: jsx(Checkbox, __assign({ indeterminate: isIndeterminate, checked: isAllSelected, onChange: handleSelectAll }, { children: locale.filterSelectAll })) })), jsx("div", __assign({ style: { maxHeight: "300px", overflowY: "auto" } }, { children: filteredOptions.length > 0 ? (filteredOptions.map(function (filter) { return (jsx("div", __assign({ style: { padding: "5px 12px", cursor: "pointer" }, onClick: function () { return handleCheckboxChange(filter.value); } }, { children: jsx(Checkbox, __assign({ checked: tempSelectedValues.includes(filter.value) }, { children: filter.text })) }), filter.value)); })) : (jsx("div", __assign({ style: {
264
268
  padding: "20px",
265
269
  textAlign: "center",
266
270
  color: "#999",
267
- } }, { children: "\u6682\u65E0\u5339\u914D\u9879" }))) })), jsx("div", __assign({ style: {
271
+ } }, { children: locale.filterNoMatch }))) })), jsx("div", __assign({ style: {
268
272
  borderTop: "1px solid #f0f0f0",
269
273
  marginTop: "8px",
270
274
  paddingTop: "8px",
271
- } }, { children: jsxs(Space, { children: [jsx(Button, __assign({ size: "small", type: "primary", onClick: handleConfirm }, { children: "\u786E\u5B9A" })), jsx(Button, __assign({ size: "small", onClick: handleResetAndClose }, { children: "\u91CD\u7F6E" }))] }) }))] })));
275
+ } }, { children: jsxs(Space, { children: [jsx(Button, __assign({ size: "small", type: "primary", onClick: handleConfirm }, { children: locale.filterOk })), jsx(Button, __assign({ size: "small", onClick: handleResetAndClose }, { children: locale.filterReset }))] }) }))] })));
272
276
  };
273
277
 
274
278
  export { FilterPopover as default };
@@ -9,6 +9,9 @@ import { MERGE_INDEX } from '../../table/constant.js';
9
9
  import 'lodash/isEqual';
10
10
  import 'ahooks';
11
11
  import '../../node_modules/immutability-helper/index.js';
12
+ import useLocale from '../../config/useLocale.js';
13
+ import '../../config/ZtxkContext.js';
14
+ import '../../config/MyStorage.js';
12
15
  import '../../node_modules/exceljs/dist/exceljs.min.js';
13
16
  import '../components/FilterPopover.js';
14
17
  import '../../node_modules/react-contexify/dist/index.js';
@@ -16,19 +19,20 @@ import '../../node_modules/screenfull/index.js';
16
19
  import ColumnDynamic from '../components/ColumnDynamic.js';
17
20
 
18
21
  var useProcessedColumns = function (params) {
22
+ var locale = useLocale().CanvasTable;
19
23
  var columns = params.columns, dynamicColumns = params.dynamicColumns, mode = params.mode, rowSelection = params.rowSelection, internalColumnWidths = params.internalColumnWidths, dynamicKey = params.dynamicKey, _a = params.renderMode, renderMode = _a === void 0 ? "object" : _a, dynamicSettingRef = params.dynamicSettingRef, headerWrap = params.headerWrap, _b = params.headerAlign, headerAlign = _b === void 0 ? "center" : _b;
20
24
  return useMemo(function () {
21
25
  var cols = __spreadArray([], (dynamicColumns || columns), true);
22
26
  // 添加序号列
23
27
  if (mode === "index") {
24
- var title = "序号";
28
+ var title = locale.serialNumber;
25
29
  if (dynamicKey && dynamicSettingRef) {
26
30
  title = jsx(ColumnDynamic, { dynamicSettingRef: dynamicSettingRef });
27
31
  }
28
32
  cols.unshift({
29
33
  key: "__index__",
30
34
  title: title,
31
- dynamicTitle: "序号",
35
+ dynamicTitle: locale.serialNumber,
32
36
  width: 60,
33
37
  fixed: "left",
34
38
  align: "center",
@@ -100,6 +104,7 @@ var useProcessedColumns = function (params) {
100
104
  dynamicSettingRef,
101
105
  headerWrap,
102
106
  headerAlign,
107
+ locale,
103
108
  ]);
104
109
  };
105
110
 
@@ -5,6 +5,9 @@ import 'lodash/isEqual';
5
5
  import 'ahooks';
6
6
  import '../../node_modules/immutability-helper/index.js';
7
7
  import 'react/jsx-runtime';
8
+ import useLocale from '../../config/useLocale.js';
9
+ import '../../config/ZtxkContext.js';
10
+ import '../../config/MyStorage.js';
8
11
  import { plus, exactRound, addThousedSeparator } from 'zmdms-utils';
9
12
  import '../../node_modules/exceljs/dist/exceljs.min.js';
10
13
  import 'dayjs';
@@ -15,6 +18,7 @@ import { getAllLeafColumns } from '../utils/columnHelpers.js';
15
18
  */
16
19
  var useSummaryRow = function (params) {
17
20
  var columns = params.columns, dataSource = params.dataSource;
21
+ var locale = useLocale().CanvasTable;
18
22
  var summaryRow = useMemo(function () {
19
23
  // 先扁平化多级表头,获取所有叶子列
20
24
  var leafColumns = getAllLeafColumns(columns);
@@ -65,7 +69,7 @@ var useSummaryRow = function (params) {
65
69
  }
66
70
  else if (colIndex === firstColIndex) {
67
71
  // 第一列显示"合计"(可以是序号列、选择框列或数据列)
68
- summaryRecord[dataIndex] = "合计";
72
+ summaryRecord[dataIndex] = locale.total;
69
73
  }
70
74
  else {
71
75
  summaryRecord[dataIndex] = "";
@@ -79,7 +83,7 @@ var useSummaryRow = function (params) {
79
83
  });
80
84
  summaryRecord[IS_SUMMARY] = true;
81
85
  return summaryRecord;
82
- }, [columns, dataSource]);
86
+ }, [columns, dataSource, locale]);
83
87
  // 包含合计行的数据源
84
88
  var finalDataSource = useMemo(function () {
85
89
  if (summaryRow) {
@@ -4,6 +4,9 @@ import 'zmdms-utils';
4
4
  import 'dayjs';
5
5
  import '../../_virtual/_tslib.js';
6
6
  import { useMemoizedFn } from 'ahooks';
7
+ import useLocale from '../../config/useLocale.js';
8
+ import '../../config/ZtxkContext.js';
9
+ import '../../config/MyStorage.js';
7
10
  import './renderers/BadgeRenderer.js';
8
11
  import './renderers/ExpandIconRenderer.js';
9
12
  import { HeaderRenderer } from './renderers/HeaderRenderer.js';
@@ -19,6 +22,7 @@ import { FixedColumnRenderer } from './renderers/FixedColumnRenderer.js';
19
22
  * 重构版本:使用渲染器模式,职责分离
20
23
  */
21
24
  var useTableRender = function (params) {
25
+ var locale = useLocale().CanvasTable;
22
26
  // 添加节流机制,避免频繁重绘
23
27
  var rafIdRef = useRef(null);
24
28
  var isDrawingRef = useRef(false);
@@ -273,7 +277,7 @@ var useTableRender = function (params) {
273
277
  ctx.fillStyle = "#ff4d4f";
274
278
  ctx.font = "14px Arial";
275
279
  ctx.textAlign = "center";
276
- ctx.fillText("表格渲染异常,请检查数据或刷新页面", canvas.width / 2, canvas.height / 2);
280
+ ctx.fillText(locale.renderError, canvas.width / 2, canvas.height / 2);
277
281
  }
278
282
  }
279
283
  }
@@ -1,19 +1,24 @@
1
1
  import { __assign } from '../_virtual/_tslib.js';
2
2
  import { jsxs, jsx } from 'react/jsx-runtime';
3
3
  import classNames from '../node_modules/classnames/index.js';
4
+ import useLocale from '../config/useLocale.js';
5
+ import 'react';
6
+ import '../config/ZtxkContext.js';
7
+ import '../config/MyStorage.js';
4
8
  import Input from '../input/input.js';
5
9
  import MemoTag from '../tag/tag.js';
6
10
 
7
11
  var ChatRoom = function (props) {
8
- var bordered = props.bordered, _a = props.height, height = _a === void 0 ? "88vh" : _a, _b = props.title, title = _b === void 0 ? "会议列表" : _b;
12
+ var locale = useLocale().ChatRoom;
13
+ var bordered = props.bordered, _a = props.height, height = _a === void 0 ? "88vh" : _a, _b = props.title, title = _b === void 0 ? locale.defaultTitle : _b;
9
14
  var containerClassName = classNames("ztxk-chat-room--container", {
10
15
  "ztxk-chat-room--container--bordered": bordered,
11
16
  });
12
- return (jsxs("div", __assign({ className: containerClassName, style: { height: height } }, { children: [jsxs("div", __assign({ className: "ztxk-chat-room--left" }, { children: [jsx("div", __assign({ className: "ztxk-chat-room--title", title: title }, { children: title })), jsx("div", __assign({ className: "ztxk-chat-room--search" }, { children: jsx(Input.Search, { placeholder: "\u641C\u7D22\u4F1A\u8BAE" }) })), jsx("div", __assign({ className: "ztxk-chat-room--list" }, { children: Array(10)
17
+ return (jsxs("div", __assign({ className: containerClassName, style: { height: height } }, { children: [jsxs("div", __assign({ className: "ztxk-chat-room--left" }, { children: [jsx("div", __assign({ className: "ztxk-chat-room--title", title: title }, { children: title })), jsx("div", __assign({ className: "ztxk-chat-room--search" }, { children: jsx(Input.Search, { placeholder: locale.searchPlaceholder }) })), jsx("div", __assign({ className: "ztxk-chat-room--list" }, { children: Array(10)
13
18
  .fill(1)
14
19
  .map(function (item, index) { return (jsxs("div", __assign({ className: classNames("ztxk-chat-room--list__item", {
15
20
  active: index === 0,
16
- }) }, { children: [jsx("div", __assign({ className: "ztxk-chat-room--item__name" }, { children: jsx("span", { children: "\u963F\u677E\u5927\u963F\u677E\u5927\u963F\u677E\u5927" }) })), jsxs("div", __assign({ className: "ztxk-chat-room--item__text" }, { children: [jsxs("div", __assign({ className: "ztxk-chat-room--item__text--top" }, { children: [jsx("div", __assign({ className: "ztxk-chat-room--item__text--room" }, { children: "\u623F\u95F4\u53F7" })), jsx(MemoTag, __assign({ className: "" }, { children: "\u6807\u7B7E" }))] })), jsx("div", __assign({ className: "ztxk-chat-room--item__text--bottom" }, { children: "\u6D88\u606F\u63D0\u793A\u5BCC\u6587\u672C" }))] })), jsxs("div", __assign({ className: "ztxk-chat-room--item__other" }, { children: [jsx("div", __assign({ className: "ztxk-chat-room--item__other--name" }, { children: "\u4E1A\u52A1\u5458\u6C47\u62A5" })), jsx("div", __assign({ className: "ztxk-chat-room--item__other--time" }, { children: "\u65F6\u95F4" }))] }))] }), index)); }) }))] })), jsxs("div", __assign({ className: "ztxk-chat-room--right" }, { children: [jsx("div", __assign({ className: "ztxk-chat-room--title" }, { children: "\u4F1A\u8BAE\u8BE6\u60C5" })), jsx("div", __assign({ className: "ztxk-chat-room--content" }, { children: jsx("div", __assign({ className: "ztxk-chat-room--content--item" }, { children: "\u4F1A\u8BAE\u540D\u79F0\uFF1A\u4F1A\u8BAE1" })) }))] }))] })));
21
+ }) }, { children: [jsx("div", __assign({ className: "ztxk-chat-room--item__name" }, { children: jsx("span", { children: "\u963F\u677E\u5927\u963F\u677E\u5927\u963F\u677E\u5927" }) })), jsxs("div", __assign({ className: "ztxk-chat-room--item__text" }, { children: [jsxs("div", __assign({ className: "ztxk-chat-room--item__text--top" }, { children: [jsx("div", __assign({ className: "ztxk-chat-room--item__text--room" }, { children: locale.roomNumber })), jsx(MemoTag, __assign({ className: "" }, { children: "\u6807\u7B7E" }))] })), jsx("div", __assign({ className: "ztxk-chat-room--item__text--bottom" }, { children: "\u6D88\u606F\u63D0\u793A\u5BCC\u6587\u672C" }))] })), jsxs("div", __assign({ className: "ztxk-chat-room--item__other" }, { children: [jsx("div", __assign({ className: "ztxk-chat-room--item__other--name" }, { children: "\u4E1A\u52A1\u5458\u6C47\u62A5" })), jsx("div", __assign({ className: "ztxk-chat-room--item__other--time" }, { children: "\u65F6\u95F4" }))] }))] }), index)); }) }))] })), jsxs("div", __assign({ className: "ztxk-chat-room--right" }, { children: [jsx("div", __assign({ className: "ztxk-chat-room--title" }, { children: locale.meetingDetail })), jsx("div", __assign({ className: "ztxk-chat-room--content" }, { children: jsxs("div", __assign({ className: "ztxk-chat-room--content--item" }, { children: [locale.meetingNameLabel, "\u4F1A\u8BAE1"] })) }))] }))] })));
17
22
  };
18
23
 
19
24
  export { ChatRoom as default };
@@ -0,0 +1,70 @@
1
+ var appLayoutHeaderLocale = {
2
+ /** 页签右键菜单:关闭当前页签 */
3
+ close: "Close",
4
+ /** 页签右键菜单:关闭其他页签 */
5
+ closeOther: "Close others",
6
+ /** 页签右键菜单:关闭右侧页签 */
7
+ closeRight: "Close to the right",
8
+ /** 最后一页不可关闭提示 */
9
+ lastTabCannotClose: "The last tab cannot be closed!",
10
+ /** 全屏 */
11
+ fullscreen: "Fullscreen",
12
+ /** 退出全屏 */
13
+ exitFullscreen: "Exit fullscreen",
14
+ /** 用户下拉菜单:账号信息 */
15
+ accountInfo: "Account Info",
16
+ /** 用户下拉菜单:修改密码 */
17
+ changePassword: "Change Password",
18
+ /** 用户下拉菜单:退出系统 */
19
+ logout: "Sign out",
20
+ /** 退出登录加载提示 */
21
+ loggingOut: "Signing out",
22
+ /** 用户信息弹窗标题 */
23
+ userInfoTitle: "User Info",
24
+ /** 编辑按钮 */
25
+ edit: "Edit",
26
+ /** 保存按钮 */
27
+ save: "Save",
28
+ /** 取消按钮 */
29
+ cancel: "Cancel",
30
+ /** 保存失败提示 */
31
+ saveFailed: "Save failed!",
32
+ /** 表单项:账号 */
33
+ account: "Account",
34
+ /** 账号必填校验提示 */
35
+ accountRequired: "Please enter an account",
36
+ /** 表单项:姓名 */
37
+ realName: "Name",
38
+ /** 姓名必填校验提示 */
39
+ realNameRequired: "Please enter a name",
40
+ /** 表单项:电话 */
41
+ phone: "Phone",
42
+ /** 电话必填校验提示 */
43
+ phoneRequired: "Please enter a phone number",
44
+ /** 表单项:邮箱 */
45
+ email: "Email",
46
+ /** 表单项:身份证号 */
47
+ identityCard: "ID Card No.",
48
+ /** 修改密码弹窗标题 */
49
+ changePasswordTitle: "Change Password",
50
+ /** 表单项:原密码 */
51
+ oldPassword: "Current Password",
52
+ /** 原密码必填校验提示 */
53
+ oldPasswordRequired: "Please enter the current password",
54
+ /** 表单项:新密码 */
55
+ newPassword: "New Password",
56
+ /** 新密码必填校验提示 */
57
+ newPasswordRequired: "Please enter a new password",
58
+ /** 新密码规则提示 */
59
+ passwordRuleTip: "The password must be longer than 8 characters and contain at least 3 of the following: digits, uppercase letters, lowercase letters, and special characters!",
60
+ /** 表单项:确认新密码 */
61
+ confirmPassword: "Confirm New Password",
62
+ /** 确认密码必填校验提示 */
63
+ confirmPasswordRequired: "Please confirm the password",
64
+ /** 两次密码输入不一致提示 */
65
+ passwordInconsistent: "The two passwords do not match",
66
+ /** 密码修改成功提示 */
67
+ passwordChangeSuccess: "Password changed successfully!",
68
+ };
69
+
70
+ export { appLayoutHeaderLocale as default };
@@ -0,0 +1,14 @@
1
+ var appLayoutSiderLocale = {
2
+ /** logo 未传 title 时的默认悬停标题 */
3
+ defaultLogoTitle: "Zhejiang Communications Group",
4
+ /** 菜单搜索框默认占位提示 */
5
+ searchPlaceholder: "Search menu",
6
+ /** 二级菜单浮动按钮 */
7
+ float: "Float",
8
+ /** 二级菜单固定按钮 */
9
+ fixed: "Fixed",
10
+ /** 二级菜单 logo 悬停标题 */
11
+ subMenuLogoTitle: "HR System",
12
+ };
13
+
14
+ export { appLayoutSiderLocale as default };
@@ -0,0 +1,42 @@
1
+ var asyncDynamicSettingLocale = {
2
+ /** 抽屉默认标题 */
3
+ customConfigTitle: "Custom Configuration",
4
+ /** 标题栏拖拽排序提示 */
5
+ dragSortHint: " (drag to sort)",
6
+ /** 拖拽排序限制提示:不能排到某项前面 */
7
+ cannotSortToFront: "{dragLabel} cannot be sorted before {targetLabel}",
8
+ /** 拖拽排序限制提示:不能排到某项后面 */
9
+ cannotSortToBack: "{dragLabel} cannot be sorted after {targetLabel}",
10
+ /** 互斥项勾选冲突提示 */
11
+ exclusiveConflictError: "The selected items are mutually exclusive and cannot be checked together!",
12
+ /** 底部按钮:取消 */
13
+ cancel: "Cancel",
14
+ /** 底部按钮:重置 */
15
+ reset: "Reset",
16
+ /** 底部按钮:确定 */
17
+ ok: "OK",
18
+ /** 搜索框占位符 */
19
+ searchPlaceholder: "Search",
20
+ /** 全选按钮 */
21
+ selectAll: "Select all",
22
+ /** 反选按钮 */
23
+ selectInverse: "Invert",
24
+ /** 维度配置区块标题 */
25
+ dimensionConfig: "Dimensions",
26
+ /** 字段配置区块标题 */
27
+ fieldConfig: "Fields",
28
+ /** 更多配置:固定标签 */
29
+ fixedLabel: "Fixed:",
30
+ /** 更多配置:固定位置-左 */
31
+ fixedLeft: "Left",
32
+ /** 更多配置:固定位置-右 */
33
+ fixedRight: "Right",
34
+ /** 更多配置:不固定 */
35
+ fixedNone: "None",
36
+ /** 更多配置:合计标签 */
37
+ sumLabel: "Total:",
38
+ /** 维度列不支持全选/反选提示 */
39
+ dimensionNoSelectAll: "Select all / invert is not supported for dimension columns",
40
+ };
41
+
42
+ export { asyncDynamicSettingLocale as default };
@@ -0,0 +1,6 @@
1
+ var authLoadingLocale = {
2
+ /** 用户权限加载提示 */
3
+ loading: "Loading user permissions...",
4
+ };
5
+
6
+ export { authLoadingLocale as default };
@@ -0,0 +1,14 @@
1
+ var buttonLocale = {
2
+ /** 二次确认弹窗确认按钮文字 */
3
+ confirm: "OK",
4
+ /** 二次确认弹窗取消按钮文字 */
5
+ cancel: "Cancel",
6
+ /** 附件下载失败提示 */
7
+ downloadFail: "Download failed!",
8
+ /** 导出失败提示 */
9
+ exportFail: "Export failed!",
10
+ /** 附件超出大小限制时的在线预览提示 */
11
+ previewSizeLimit: "Files larger than {size} cannot be previewed online. Please download the file first.",
12
+ };
13
+
14
+ export { buttonLocale as default };