zmdms-webui 3.1.8 → 3.2.0

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 (71) hide show
  1. package/dist/es/applayoutsider/menu/MainMenu.js +1 -1
  2. package/dist/es/applayoutsider/menu/SubMenu.js +8 -1
  3. package/dist/es/canvastable/canvasTable.js +1 -0
  4. package/dist/es/config/MyStorage.js +11 -5
  5. package/dist/es/config/ZtxkContext.d.ts +10 -0
  6. package/dist/es/config/ZtxkContext.js +2 -0
  7. package/dist/es/config/index.js +1 -0
  8. package/dist/es/config/utils.js +58 -1
  9. package/dist/es/dynamicsetting/dynamicDrawer.js +61 -19
  10. package/dist/es/dynamicsetting/dynamicSetting.js +4 -4
  11. package/dist/es/dynamicsetting/hooks.js +4 -4
  12. package/dist/es/dynamicsetting/index.css +1 -1
  13. package/dist/es/dynamicsetting/index.js +1 -0
  14. package/dist/es/dynamicsetting/interface.d.ts +5 -0
  15. package/dist/es/dynamicsetting/useDynamic.js +5 -1
  16. package/dist/es/dynamicsetting/useSearch.js +26 -6
  17. package/dist/es/dynamicsetting/useTemplate.d.ts +4 -0
  18. package/dist/es/dynamicsetting/useTemplate.js +428 -0
  19. package/dist/es/electronsignatures/content.js +974 -0
  20. package/dist/es/electronsignatures/dgcomponents/contract-comparison.js +2 -2
  21. package/dist/es/electronsignatures/dgcomponents/file-comparison-btn.js +136 -0
  22. package/dist/es/electronsignatures/dgcomponents/new-contract-comparison.js +54 -0
  23. package/dist/es/electronsignatures/dgcomponents/useContractColumns.js +110 -39
  24. package/dist/es/electronsignatures/electron-signatures-fragment.js +11 -3
  25. package/dist/es/electronsignatures/electroncomponents/electron-seal-batch-download.js +179 -67
  26. package/dist/es/electronsignatures/electroncomponents/electron-seal-detail.js +5 -5
  27. package/dist/es/electronsignatures/electroncomponents/electron-seal-item-detail.js +15 -0
  28. package/dist/es/electronsignatures/electroncomponents/electron-seal-item.js +9 -6
  29. package/dist/es/electronsignatures/electroncomponents/useElectronColumns.js +330 -154
  30. package/dist/es/electronsignatures/electroncomponents/useFetchElectronData.js +60 -10
  31. package/dist/es/electronsignatures/electroncomponents/utils.js +119 -28
  32. package/dist/es/electronsignatures/filecomponents/file-operation.js +6 -4
  33. package/dist/es/electronsignatures/filecomponents/new-file-operation.js +56 -0
  34. package/dist/es/electronsignatures/filecomponents/useFileColumns.js +179 -102
  35. package/dist/es/electronsignatures/hooks/useGetQjVerifyCode.js +134 -0
  36. package/dist/es/electronsignatures/hooks/useMergeRecords.js +4 -3
  37. package/dist/es/electronsignatures/hooks/useParseElectronSetting.js +5 -3
  38. package/dist/es/electronsignatures/hooks/useParseIsNeedElectronData.js +21 -2
  39. package/dist/es/electronsignatures/hooks/useParseQunjSingleData.js +6 -1
  40. package/dist/es/electronsignatures/hooks/useParseRecords.js +41 -34
  41. package/dist/es/electronsignatures/index.css +1 -1
  42. package/dist/es/electronsignatures/index.js +18 -833
  43. package/dist/es/electronsignatures/interface.d.ts +129 -5
  44. package/dist/es/electronsignatures/interface.js +9 -4
  45. package/dist/es/electronsignatures/qunjcomponents/qunj-check.js +2 -2
  46. package/dist/es/electronsignatures/qunjcomponents/qunj-detail.js +135 -14
  47. package/dist/es/electronsignatures/qunjcomponents/qunj-list.js +33 -13
  48. package/dist/es/electronsignatures/qunjcomponents/useFetchQunjData.js +8 -3
  49. package/dist/es/electronsignatures/qunjcomponents/useQunjColumns.js +202 -202
  50. package/dist/es/electronsignatures/translatecomponents/TranslateButton.js +27 -0
  51. package/dist/es/electronsignatures/translatecomponents/useTranslateCom.js +35 -0
  52. package/dist/es/form/common-search-list.js +28 -9
  53. package/dist/es/form/form.js +13 -11
  54. package/dist/es/form/useCommonSearch.js +3 -4
  55. package/dist/es/table/components/EnhanceBodyBasicCell.js +9 -0
  56. package/dist/es/table/components/useDragRef.js +6 -0
  57. package/dist/es/table/constant.js +4 -1
  58. package/dist/es/table/hooks/useCtrl.js +44 -0
  59. package/dist/es/table/hooks/useSelectSubtotal.js +376 -0
  60. package/dist/es/table/index.css +1 -1
  61. package/dist/es/table/interface.d.ts +2 -0
  62. package/dist/es/table/table.js +14 -2
  63. package/dist/index.build.d.ts +1 -0
  64. package/dist/index.dark.css +1 -1
  65. package/dist/index.default.css +1 -1
  66. package/dist/index.es.js +1 -0
  67. package/dist/less/components/DynamicSetting/style/index.less +38 -0
  68. package/dist/less/components/ElectronSignatures/style/index.less +37 -5
  69. package/dist/less/components/Table/style/index.less +32 -0
  70. package/package.json +2 -2
  71. package/dist/es/electronsignatures/electroncomponents/electron-seal-download.js +0 -74
@@ -104,7 +104,7 @@ var MainMenu = function (props) {
104
104
  : null,
105
105
  };
106
106
  });
107
- }, [userMenus, getLabel]);
107
+ }, [userMenus, getLabel, filterMenuHandle]);
108
108
  // 主菜单选中时调用
109
109
  var onSelectHandle = useCallback(function (info) {
110
110
  var _a, _b;
@@ -172,7 +172,14 @@ var SubMenu = function (props, ref) {
172
172
  };
173
173
  var newSubMenusItems = dfn(subMenus);
174
174
  return newSubMenusItems;
175
- }, [subMenus, addTab, getPrefixByAppId, getNewPath, renderItem]);
175
+ }, [
176
+ subMenus,
177
+ addTab,
178
+ getPrefixByAppId,
179
+ getNewPath,
180
+ renderItem,
181
+ filterMenuHandle,
182
+ ]);
176
183
  var classes = classNames("zmdms-menu--sub", {
177
184
  "zmdms-menu--sub-margin": !drawerTitle,
178
185
  "zmdms-menu--sub-hide-bg": hideSubMenuBg,
@@ -38,6 +38,7 @@ import { useAutoMerge } from '../table/hooks.js';
38
38
  import { useExcelExport } from '../table/excel.js';
39
39
  import { getTableColumns } from '../table/utils.js';
40
40
  import DynamicSetting from '../dynamicsetting/dynamicSetting.js';
41
+ import '../dynamicsetting/useTemplate.js';
41
42
 
42
43
  function CanvasTable(props) {
43
44
  var _a;
@@ -3,11 +3,17 @@ import localforage from '../node_modules/localforage/dist/localforage.js';
3
3
 
4
4
  var MyStorage = /** @class */ (function () {
5
5
  function MyStorage(option) {
6
- var tableKey = option.tableKey;
7
- this.storageInstance = localforage.createInstance({
8
- driver: [localforage.INDEXEDDB, localforage.LOCALSTORAGE],
9
- name: tableKey,
10
- });
6
+ var name = option.name, storeName = option.storeName;
7
+ this.storageInstance = storeName
8
+ ? localforage.createInstance({
9
+ driver: [localforage.INDEXEDDB, localforage.LOCALSTORAGE],
10
+ name: name,
11
+ storeName: storeName,
12
+ })
13
+ : localforage.createInstance({
14
+ driver: [localforage.INDEXEDDB, localforage.LOCALSTORAGE],
15
+ name: name,
16
+ });
11
17
  }
12
18
  /**
13
19
  * 设置存储值
@@ -82,6 +82,16 @@ interface IZtxkConfig {
82
82
  * 附件组件公用请求头配置
83
83
  */
84
84
  fileListRequestHeaders?: Record<string, string>;
85
+ /**
86
+ * 自定义配置的搜索逻辑是否是过滤还是高亮
87
+ * true: 过滤,false: 高亮显示(默认)
88
+ * @description 2026-03-31 过滤逻辑改成,不过滤显示,只高亮显示
89
+ */
90
+ enableSearchFilter?: boolean;
91
+ /**
92
+ * 自定义配置是否增加模板设置功能
93
+ */
94
+ enableTemplateSetting?: boolean;
85
95
  }
86
96
  declare const ZtxkContext: React__default.Context<IZtxkConfig>;
87
97
 
@@ -20,6 +20,8 @@ var ztxkConfig = {
20
20
  enableTableExpandIcon: false,
21
21
  dictApiUrl: "/api/zmdms-mdm-data/dict-biz/dictionary",
22
22
  fileListRequestHeaders: undefined,
23
+ enableSearchFilter: false,
24
+ enableTemplateSetting: true,
23
25
  };
24
26
  var ZtxkContext = React__default.createContext(ztxkConfig);
25
27
 
@@ -3,3 +3,4 @@ export { default as useBaseContext } from './useBaseContext.js';
3
3
  export { default as ZtxkContext } from './ZtxkContext.js';
4
4
  export { default as isEqual } from './isEqual.js';
5
5
  export { default as MyStorage } from './MyStorage.js';
6
+ export { getFinalValue } from './utils.js';
@@ -32,6 +32,63 @@ function accessObjValue(obj, path) {
32
32
  }
33
33
  }
34
34
  return result;
35
+ }
36
+ /**
37
+ * 在元素内查找匹配选择器的第一个子元素
38
+ * @param el 父元素
39
+ * @param selector CSS 选择器
40
+ * @returns 匹配的元素,未找到返回 null
41
+ * @example
42
+ * domFind(document.body, '.my-class'); // 返回第一个 .my-class 元素
43
+ */
44
+ function domFind(el, selector) {
45
+ if (!el) {
46
+ return null;
47
+ }
48
+ try {
49
+ return el.querySelector(selector);
50
+ }
51
+ catch (error) {
52
+ console.warn("Invalid selector:", selector);
53
+ return null;
54
+ }
55
+ }
56
+ /**
57
+ * 从当前元素开始,向上查找第一个匹配选择器的父元素
58
+ * @param el 起始元素
59
+ * @param selector CSS 选择器
60
+ * @param options 可选配置
61
+ * @param options.maxDepth 最大向上查找层级,默认 100,防止无限循环
62
+ * @param options.untilSelector 在遇到此选择器时停止查找(不包含该元素)
63
+ * @returns 匹配的父元素,未找到返回 null
64
+ * @example
65
+ * // 查找最近的 .parent 类元素
66
+ * domParentsUntil(element, '.parent');
67
+ * // 查找最多 10 层
68
+ * domParentsUntil(element, '.parent', { maxDepth: 10 });
69
+ * // 查找但在遇到 .container 时停止
70
+ * domParentsUntil(element, '.item', { untilSelector: '.container' });
71
+ */
72
+ function domParentsUntil(el, selector, options) {
73
+ if (!el) {
74
+ return null;
75
+ }
76
+ var _a = options || {}, _b = _a.maxDepth, maxDepth = _b === void 0 ? 100 : _b, untilSelector = _a.untilSelector;
77
+ var depth = 0;
78
+ var currentEl = el.parentElement;
79
+ while (currentEl && depth < maxDepth) {
80
+ // 如果设置了停止选择器,先检查是否遇到
81
+ if (untilSelector && currentEl.matches(untilSelector)) {
82
+ break;
83
+ }
84
+ // 检查是否匹配目标选择器
85
+ if (currentEl.matches(selector)) {
86
+ return currentEl;
87
+ }
88
+ currentEl = currentEl.parentElement;
89
+ depth++;
90
+ }
91
+ return null;
35
92
  }
36
93
 
37
- export { accessObjValue, getFinalValue };
94
+ export { accessObjValue, domFind, domParentsUntil, getFinalValue };
@@ -1,6 +1,6 @@
1
- import { __assign, __spreadArray } from '../_virtual/_tslib.js';
2
- import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
3
- import { memo, forwardRef, useImperativeHandle, useMemo, useCallback } from 'react';
1
+ import { __assign, __spreadArray, __awaiter, __generator } from '../_virtual/_tslib.js';
2
+ import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
3
+ import { memo, forwardRef, useState, useRef, useImperativeHandle, useMemo, useCallback } from 'react';
4
4
  import update from '../node_modules/immutability-helper/index.js';
5
5
  import { useDynamic } from './useDynamic.js';
6
6
  import { useDrawer } from './hooks.js';
@@ -9,11 +9,13 @@ import useSearch from './useSearch.js';
9
9
  import '../config/ZtxkContext.js';
10
10
  import useBaseContext from '../config/useBaseContext.js';
11
11
  import '../config/MyStorage.js';
12
+ import { getFinalValue } from '../config/utils.js';
12
13
  import { useLatest } from 'ahooks';
14
+ import useTemplate, { TemplateModalConfirm } from './useTemplate.js';
13
15
  import myMessage from '../message/index.js';
14
16
  import SettingOutlined from '../node_modules/@ant-design/icons/es/icons/SettingOutlined.js';
15
- import Input from '../input/input.js';
16
17
  import ButtonCom from '../button/button.js';
18
+ import Input from '../input/input.js';
17
19
  import Sortable from '../sortable/sortable.js';
18
20
  import { Drawer, Checkbox } from 'antd';
19
21
 
@@ -28,18 +30,34 @@ var sortDynamicListByType = function (list) {
28
30
  };
29
31
  // 这里操作的一直都是内部设置的list
30
32
  var DynamicDrawer = function (props, ref) {
31
- var list = props.list, dynamicKey = props.dynamicKey, parentDynamicKey = props.parentDynamicKey, _a = props.title, title = _a === void 0 ? "自定义配置" : _a, onCurrentListChange = props.onCurrentListChange, isMore = props.isMore, isFixed = props.isFixed, isDimensionDynamic = props.isDimensionDynamic, isSearch = props.isSearch;
32
- var enableDynamicColumnSearch = useBaseContext().enableDynamicColumnSearch;
33
+ var list = props.list, dynamicKey = props.dynamicKey, parentDynamicKey = props.parentDynamicKey, _a = props.title, title = _a === void 0 ? "自定义配置" : _a, onCurrentListChange = props.onCurrentListChange, isMore = props.isMore, isFixed = props.isFixed, isDimensionDynamic = props.isDimensionDynamic, isSearch = props.isSearch, isSearchFilter = props.isSearchFilter, isTemplateSetting = props.isTemplateSetting, storeName = props.storeName;
34
+ var _b = useBaseContext(), enableDynamicColumnSearch = _b.enableDynamicColumnSearch, enableTemplateSetting = _b.enableTemplateSetting, enableSearchFilter = _b.enableSearchFilter;
33
35
  // 是否开启搜索功能
34
36
  // 如果全局开启了默认添加,那么只要没有单独配置关闭,都认为需要打开
35
37
  var isDynamicColumnSearchEnabled = enableDynamicColumnSearch
36
38
  ? isSearch !== false
37
39
  : !!isSearch;
40
+ // 20260331: 搜索过滤逻辑改成,不过滤显示,只高亮显示
41
+ var isSearchFilterEnabled = getFinalValue(enableSearchFilter, isSearchFilter);
42
+ // 自定义配置是否增加模板配置功能
43
+ var isTemplateSettingEnabled = getFinalValue(enableTemplateSetting, isTemplateSetting);
44
+ console.log(isSearchFilterEnabled, isTemplateSettingEnabled);
38
45
  // 根据外部传入的list 和本地存储信息 生成一个内部的currentDynamicList
39
46
  // 这个currentDynamicList 是可以是负责显示最终结果的
40
47
  // tempDynamicList 是操作时的临时变量 可能操作后不点击确认 直接点击取消 那么需要重置到之前的状态
41
- var _b = useDynamic(dynamicKey, parentDynamicKey, list), currentDynamicList = _b.currentDynamicList, setCurrentDynamicList = _b.setCurrentDynamicList, tempDynamicList = _b.tempDynamicList, setTempDynamicList = _b.setTempDynamicList;
42
- var _c = useDrawer(currentDynamicList, setCurrentDynamicList, dynamicKey, parentDynamicKey, setTempDynamicList, list, onCurrentListChange), visible = _c.visible, setVisible = _c.setVisible, onClose = _c.onClose, onReset = _c.onReset, onSure = _c.onSure;
48
+ var _c = useDynamic(dynamicKey, parentDynamicKey, list), currentDynamicList = _c.currentDynamicList, setCurrentDynamicList = _c.setCurrentDynamicList, tempDynamicList = _c.tempDynamicList, setTempDynamicList = _c.setTempDynamicList;
49
+ var _d = useTemplate(dynamicKey, {
50
+ storeName: storeName,
51
+ isTemplateSetting: isTemplateSettingEnabled,
52
+ currentTemplateData: tempDynamicList,
53
+ onChange: function (data) {
54
+ // 更新配置
55
+ setTempDynamicList(data);
56
+ },
57
+ }), renderTemplateModal = _d.renderTemplateModal, openTemplateModal = _d.openTemplateModal, saveCurrentTemplate = _d.saveCurrentTemplate, getCurrentTemplateData = _d.getCurrentTemplateData;
58
+ var _e = useState(""), currentTemplateTitle = _e[0], setCurrentTemplateTitle = _e[1];
59
+ var confirmModalRef = useRef(null);
60
+ var _f = useDrawer(currentDynamicList, setCurrentDynamicList, dynamicKey, parentDynamicKey, setTempDynamicList, list, onCurrentListChange), visible = _f.visible, setVisible = _f.setVisible, onClose = _f.onClose, onReset = _f.onReset, onSure = _f.onSure;
43
61
  // 像外部暴露方法
44
62
  useImperativeHandle(ref, function () {
45
63
  return {
@@ -58,13 +76,13 @@ var DynamicDrawer = function (props, ref) {
58
76
  });
59
77
  return _checkedValues;
60
78
  }, [tempDynamicList]);
61
- var _d = useSearch(tempDynamicList, checkedValues, isDimensionDynamic), onSearchHandle = _d.onSearchHandle, onCheckBtn = _d.onCheckBtn, filterDynamicColumns = _d.filterDynamicColumns;
79
+ var _g = useSearch(tempDynamicList, checkedValues, isDimensionDynamic, isSearchFilterEnabled), onSearchHandle = _g.onSearchHandle, onCheckBtn = _g.onCheckBtn, filterDynamicColumns = _g.filterDynamicColumns, onSearchHandleDebounce = _g.onSearchHandleDebounce;
62
80
  var filterDynamicColumnsRef = useLatest(filterDynamicColumns);
63
81
  // 根据isDimension分区
64
- var _e = useMemo(function () {
82
+ var _h = useMemo(function () {
65
83
  var dynamicList = tempDynamicList;
66
84
  // 这里为什么不直接赋值 filterDynamicColumns 是因为某些地方是直接使用item的引用去查找索引的
67
- if (filterDynamicColumns) {
85
+ if (filterDynamicColumns && isSearchFilterEnabled) {
68
86
  dynamicList = tempDynamicList.filter(function (item) {
69
87
  return filterDynamicColumns.find(function (i) { return i.key === item.key; });
70
88
  });
@@ -72,7 +90,7 @@ var DynamicDrawer = function (props, ref) {
72
90
  var dimensionList = dynamicList.filter(function (item) { return item.isDimension; });
73
91
  var fieldList = dynamicList.filter(function (item) { return !item.isDimension; });
74
92
  return { dimensionList: dimensionList, fieldList: fieldList };
75
- }, [tempDynamicList, filterDynamicColumns]), dimensionList = _e.dimensionList, fieldList = _e.fieldList;
93
+ }, [tempDynamicList, filterDynamicColumns, isSearchFilterEnabled]), dimensionList = _h.dimensionList, fieldList = _h.fieldList;
76
94
  // 排序优先级判断
77
95
  var isDimensionPriority = useCallback(function (dragIndex, hoverIndex) {
78
96
  // 从上到下还是从下到上拖动
@@ -99,7 +117,7 @@ var DynamicDrawer = function (props, ref) {
99
117
  // 拖拽
100
118
  var onMoveItem = useCallback(function (dragIndex, hoverIndex) {
101
119
  // 这里认为如果搜索了,不支持排序。
102
- if (filterDynamicColumnsRef.current) {
120
+ if (filterDynamicColumnsRef.current && isSearchFilterEnabled) {
103
121
  return;
104
122
  }
105
123
  if (!isDimensionPriority(dragIndex, hoverIndex)) {
@@ -117,12 +135,17 @@ var DynamicDrawer = function (props, ref) {
117
135
  // 处理左浮动 右浮动数据。需要重新排序
118
136
  return sortDynamicListByType(currentList);
119
137
  });
120
- }, [setTempDynamicList, isDimensionPriority, filterDynamicColumnsRef]);
138
+ }, [
139
+ setTempDynamicList,
140
+ isDimensionPriority,
141
+ filterDynamicColumnsRef,
142
+ isSearchFilterEnabled,
143
+ ]);
121
144
  // 子元素拖拽
122
145
  var onChildMoveItem = useCallback(function (pIndex, pKey) {
123
146
  return function (dragIndex, hoverIndex) {
124
- // 这里认为如果搜索了,不支持排序。
125
- if (filterDynamicColumnsRef.current) {
147
+ // 这里认为如果搜索了,不支持排序。20260331:搜索改成高亮,不是过滤
148
+ if (filterDynamicColumnsRef.current && isSearchFilterEnabled) {
126
149
  return;
127
150
  }
128
151
  // 由于对于固定列,不能进行拖拽排序,所以需要找出所有包含固定列的属性出来
@@ -145,7 +168,7 @@ var DynamicDrawer = function (props, ref) {
145
168
  return __spreadArray(__spreadArray(__spreadArray([], leftList, true), middleList, true), rightList, true);
146
169
  });
147
170
  };
148
- }, [setTempDynamicList, filterDynamicColumnsRef]);
171
+ }, [setTempDynamicList, filterDynamicColumnsRef, isSearchFilterEnabled]);
149
172
  // 确认
150
173
  var onSureHandle = function () {
151
174
  onSure && onSure(tempDynamicList);
@@ -290,7 +313,10 @@ var DynamicDrawer = function (props, ref) {
290
313
  var allChecked = childrenCheckedValues.length === children.length;
291
314
  isIndeterminate = hasChecked && !allChecked;
292
315
  }
293
- return (jsxs(Sortable.Item, __assign({ type: "search-drawer", index: indexOffset + index, id: key, onMoveItem: onMoveItem, className: "zt-sortable-new" }, { children: [jsxs("div", __assign({ className: "zt-sortable--item dynamic-drawer-card" }, { children: [jsx(Checkbox, __assign({ value: key, disabled: disabled, indeterminate: isIndeterminate }, { children: label || key })), isMore && (!children || children.length === 0) && (jsx(MoreConfig, { fixed: fixed || "", isDimensionSum: isDimensionSum, onChange: function (result) {
316
+ return (jsxs(Sortable.Item, __assign({ type: "search-drawer", index: indexOffset + index, id: key, onMoveItem: onMoveItem, className: "zt-sortable-new ".concat(!isSearchFilterEnabled &&
317
+ (filterDynamicColumns === null || filterDynamicColumns === void 0 ? void 0 : filterDynamicColumns.find(function (i) { return i.key === key; }))
318
+ ? "zt-sortable-new--active"
319
+ : "") }, { children: [jsxs("div", __assign({ className: "zt-sortable--item dynamic-drawer-card" }, { children: [jsx(Checkbox, __assign({ value: key, disabled: disabled, indeterminate: isIndeterminate }, { children: label || key })), isMore && (!children || children.length === 0) && (jsx(MoreConfig, { fixed: fixed || "", isDimensionSum: isDimensionSum, onChange: function (result) {
294
320
  onMoreChange(key, result);
295
321
  }, isSum: isDimension, isFixed: isFixed }))] })), Array.isArray(children) && children.length > 0 ? (jsx("div", __assign({ className: "zt-sortable--children dynamic-drawer-children", style: { marginLeft: 32, marginBottom: 8 } }, { children: jsx(Checkbox.Group, __assign({ value: childrenCheckedValues, onChange: function (checkedValues) {
296
322
  onChildCheckboxChange(checkedValues, tempDynamicList.indexOf(item));
@@ -302,7 +328,23 @@ var DynamicDrawer = function (props, ref) {
302
328
  };
303
329
  /**底部按钮 */
304
330
  var renderFooter = function () { return (jsxs(Fragment, { children: [jsx(ButtonCom, __assign({ type: "default", onClick: onClose }, { children: "\u53D6\u6D88" })), jsx(ButtonCom, __assign({ type: "default", onClick: onReset }, { children: "\u91CD\u7F6E" })), jsx(ButtonCom, __assign({ type: "primary", onClick: onSureHandle }, { children: "\u786E\u5B9A" }))] })); };
305
- return (jsx(Drawer, __assign({ className: "dynamic-drawer", title: jsxs("div", { children: [jsx(SettingOutlined, { style: { fontSize: 16 } }), jsxs("span", __assign({ className: "search-drawer--title-text" }, { children: [title, jsx("span", { children: "\uFF08\u62D6\u62FD\u6392\u5E8F\uFF09" })] }))] }), width: 300, placement: "right", open: visible, closable: false, maskClosable: false, footer: renderFooter() }, { children: jsxs("div", __assign({ className: "search-drawer--filter" }, { children: [isDynamicColumnSearchEnabled ? (jsxs("div", __assign({ className: "search-drawer--filter-input" }, { children: [jsx(Input.Search, { placeholder: "\u641C\u7D22", onSearch: onSearchHandle }), jsx(ButtonCom, __assign({ type: "default", className: "selector-all", loading: false, onClick: function () { return onCheckBtn("all", onCheckboxChange); } }, { children: "\u5168\u9009" })), jsx(ButtonCom, __assign({ type: "default", className: "selector-inverse", loading: false, onClick: function () { return onCheckBtn("inverse", onCheckboxChange); } }, { children: "\u53CD\u9009" }))] }))) : null, jsx(Checkbox.Group, __assign({ value: checkedValues, onChange: onCheckboxChange }, { children: jsxs(Sortable, { children: [isDimensionDynamic && renderSection(dimensionList, 0, "维度配置"), renderSection(fieldList, dimensionList.length, isDimensionDynamic ? "字段配置" : undefined)] }) }))] })) })));
331
+ return (jsxs(Fragment, { children: [jsx(Drawer, __assign({ className: "dynamic-drawer", title: jsxs("div", { children: [jsx(SettingOutlined, { style: { fontSize: 16 } }), jsxs("span", __assign({ className: "search-drawer--title-text" }, { children: [title, jsx("span", { children: "\uFF08\u62D6\u62FD\u6392\u5E8F\uFF09" })] }))] }), width: 300, placement: "right", open: visible, closable: false, maskClosable: false, footer: renderFooter() }, { children: jsxs("div", __assign({ className: "search-drawer--filter" }, { children: [isTemplateSettingEnabled && storeName ? (jsxs("div", __assign({ className: "search-drawer--template" }, { children: [jsx(ButtonCom, __assign({ type: "default", onClick: function () { return __awaiter(void 0, void 0, void 0, function () {
332
+ var currentTemplateTitle;
333
+ var _a, _b, _c;
334
+ return __generator(this, function (_d) {
335
+ currentTemplateTitle = ((_a = getCurrentTemplateData()) === null || _a === void 0 ? void 0 : _a.title) || "";
336
+ if (!currentTemplateTitle) {
337
+ openTemplateModal();
338
+ return [2 /*return*/];
339
+ }
340
+ setCurrentTemplateTitle(currentTemplateTitle);
341
+ (_c = (_b = confirmModalRef.current) === null || _b === void 0 ? void 0 : _b.open) === null || _c === void 0 ? void 0 : _c.call(_b);
342
+ return [2 /*return*/];
343
+ });
344
+ }); } }, { children: "\u4FDD\u5B58\u6A21\u677F" })), jsx(ButtonCom, __assign({ type: "default", onClick: openTemplateModal }, { children: "\u6A21\u677F\u8BBE\u7F6E" }))] }))) : null, isDynamicColumnSearchEnabled ? (jsxs("div", __assign({ className: "search-drawer--filter-input" }, { children: [jsx(Input.Search, { placeholder: "\u641C\u7D22", onSearch: onSearchHandle, onChange: function (e) {
345
+ onSearchHandleDebounce(e);
346
+ } }), jsx(ButtonCom, __assign({ type: "default", className: "selector-all", loading: false, onClick: function () { return onCheckBtn("all", onCheckboxChange); } }, { children: "\u5168\u9009" })), jsx(ButtonCom, __assign({ type: "default", className: "selector-inverse", loading: false, onClick: function () { return onCheckBtn("inverse", onCheckboxChange); } }, { children: "\u53CD\u9009" }))] }))) : null, jsx(Checkbox.Group, __assign({ value: checkedValues, onChange: onCheckboxChange }, { children: jsxs(Sortable, { children: [isDimensionDynamic &&
347
+ renderSection(dimensionList, 0, "维度配置"), renderSection(fieldList, dimensionList.length, isDimensionDynamic ? "字段配置" : undefined)] }) }))] })) })), renderTemplateModal(), jsx(TemplateModalConfirm, { currentTemplateTitle: currentTemplateTitle, confirmModalRef: confirmModalRef, openTemplateModal: openTemplateModal, saveCurrentTemplate: saveCurrentTemplate })] }));
306
348
  };
307
349
  DynamicDrawer.displayName = "ZTXK_WEBUI_DynamicDrawer";
308
350
  var DynamicDrawer$1 = memo(forwardRef(DynamicDrawer));
@@ -11,7 +11,7 @@ import SettingOutlined from '../node_modules/@ant-design/icons/es/icons/SettingO
11
11
  // 内部根据这个list初始值,生成一个内部的currentDynamicList 作为操作 显示的数据
12
12
  // 当内部的currentDynamicList 发生改变的时候 触发currentDynamicListChange事件 通知外部,数据发生改变了
13
13
  var DynamicSetting = function (props, ref) {
14
- var dynamicKey = props.dynamicKey, parentDynamicKey = props.parentDynamicKey, defaultList = props.defaultList, children = props.children, title = props.title, onCurrentListChange = props.onCurrentListChange, hiddenOperationIcon = props.hiddenOperationIcon, isMore = props.isMore, isFixed = props.isFixed, isDimensionDynamic = props.isDimensionDynamic;
14
+ var dynamicKey = props.dynamicKey, parentDynamicKey = props.parentDynamicKey, defaultList = props.defaultList, children = props.children, title = props.title, onCurrentListChange = props.onCurrentListChange, hiddenOperationIcon = props.hiddenOperationIcon, isMore = props.isMore, isFixed = props.isFixed, isDimensionDynamic = props.isDimensionDynamic, isTemplateSetting = props.isTemplateSetting, storeName = props.storeName;
15
15
  // 内部初始list
16
16
  var _a = useState(defaultList), list = _a[0], setList = _a[1];
17
17
  var drawerRef = useRef({});
@@ -29,9 +29,9 @@ var DynamicSetting = function (props, ref) {
29
29
  (_a = drawerRef.current) === null || _a === void 0 ? void 0 : _a.setVisible(visible);
30
30
  },
31
31
  // 外部更新数据
32
- updateList: function (list) {
32
+ updateList: function (list, options) {
33
33
  var _a;
34
- (_a = drawerRef.current) === null || _a === void 0 ? void 0 : _a.onSure(list);
34
+ (_a = drawerRef.current) === null || _a === void 0 ? void 0 : _a.onSure(list, options);
35
35
  },
36
36
  // 重置数据
37
37
  resetList: function () {
@@ -40,7 +40,7 @@ var DynamicSetting = function (props, ref) {
40
40
  },
41
41
  };
42
42
  });
43
- return Array.isArray(list) && list.length > 0 ? (jsxs("div", __assign({ className: "ztxk-dynamic-setting" }, { children: [hiddenOperationIcon ? null : (jsx("div", __assign({ onClick: function () { var _a; return (_a = drawerRef.current) === null || _a === void 0 ? void 0 : _a.setVisible(true); } }, { children: children ? (children) : (jsx(SettingOutlined, { style: { fontSize: 18, color: "#768696" } })) }))), jsx(DynamicDrawer, { list: list, dynamicKey: dynamicKey, parentDynamicKey: parentDynamicKey, ref: drawerRef, title: title, onCurrentListChange: onCurrentListChange, isFixed: isFixed, isMore: isMore, isDimensionDynamic: isDimensionDynamic })] }))) : null;
43
+ return Array.isArray(list) && list.length > 0 ? (jsxs("div", __assign({ className: "ztxk-dynamic-setting" }, { children: [hiddenOperationIcon ? null : (jsx("div", __assign({ onClick: function () { var _a; return (_a = drawerRef.current) === null || _a === void 0 ? void 0 : _a.setVisible(true); } }, { children: children ? (children) : (jsx(SettingOutlined, { style: { fontSize: 18, color: "#768696" } })) }))), jsx(DynamicDrawer, { list: list, dynamicKey: dynamicKey, parentDynamicKey: parentDynamicKey, ref: drawerRef, title: title, onCurrentListChange: onCurrentListChange, isFixed: isFixed, isMore: isMore, isDimensionDynamic: isDimensionDynamic, isTemplateSetting: isTemplateSetting, storeName: storeName })] }))) : null;
44
44
  };
45
45
  DynamicSetting.displayName = "ZTXK_WEBUI_DynamicSetting";
46
46
  var DynamicSetting$1 = memo(forwardRef(DynamicSetting));
@@ -9,8 +9,8 @@ function useDrawer(currentDynamicList, setCurrentDynamicList, dynamicKey, parent
9
9
  var _a = useState(false), visible = _a[0], setVisible = _a[1];
10
10
  var customConfigFetch = useBaseContext().customConfigFetch;
11
11
  // 设置缓存数据的方法
12
- var setDynamicKey = useCallback(function () {
13
- return getSetDynamicKey(parentDynamicKey, "".concat(parentDynamicKey, "_lru_key"), customConfigFetch);
12
+ var setDynamicKey = useCallback(function (options) {
13
+ return getSetDynamicKey(parentDynamicKey, "".concat(parentDynamicKey, "_lru_key"), customConfigFetch, options);
14
14
  }, [parentDynamicKey, customConfigFetch]);
15
15
  // 关闭
16
16
  var onClose = useCallback(function () {
@@ -33,12 +33,12 @@ function useDrawer(currentDynamicList, setCurrentDynamicList, dynamicKey, parent
33
33
  setTempDynamicList,
34
34
  ]);
35
35
  // 确认修改
36
- var onSure = useCallback(function (newList) {
36
+ var onSure = useCallback(function (newList, options) {
37
37
  setVisible(false);
38
38
  setCurrentDynamicList(newList);
39
39
  setTempDynamicList(newList);
40
40
  onCurrentListChange(newList);
41
- setDynamicKey()(dynamicKey, newList);
41
+ setDynamicKey(options)(dynamicKey, newList);
42
42
  },
43
43
  // eslint-disable-next-line react-hooks/exhaustive-deps
44
44
  [setCurrentDynamicList, dynamicKey, setDynamicKey, setTempDynamicList]);
@@ -1 +1 @@
1
- .zt-sortable-new{cursor:move;font-size:13px;height:auto;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 .search-drawer--filter{display:flex;flex-direction:column;height:100%}.dynamic-drawer .ant-drawer-body .search-drawer--filter .search-drawer--filter-input{align-items:center;display:flex}.dynamic-drawer .ant-drawer-body .search-drawer--filter .search-drawer--filter-input .ant-input-group-wrapper.ant-input-search{width:100%}.dynamic-drawer .ant-drawer-body .search-drawer--filter .search-drawer--filter-input .ant-input-group-wrapper.ant-input-search .ant-input-wrapper input{background:#f0f0f0;border:0;border-radius:0 0 0 0;color:#333;text-align:center}.dynamic-drawer .ant-drawer-body .search-drawer--filter .search-drawer--filter-input .ant-input-group-wrapper.ant-input-search .ant-input-wrapper input:focus{box-shadow:none;outline:0}.dynamic-drawer .ant-drawer-body .search-drawer--filter .search-drawer--filter-input .ant-input-group-wrapper.ant-input-search .ant-input-wrapper .ant-input-group-addon>button{background:#f0f0f0;border:0;border-radius:0 0 0 0;height:28px;outline:none}.dynamic-drawer .ant-drawer-body .search-drawer--filter .search-drawer--filter-input>.selector-all{border-radius:0;border-right:0}.dynamic-drawer .ant-drawer-body .search-drawer--filter .search-drawer--filter-input>.selector-inverse{border-radius:0}.dynamic-drawer .ant-drawer-body .search-drawer--filter .ant-checkbox-group{flex:1;overflow:auto}.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;height:auto;line-height:1.5;overflow:hidden;padding:8px 0;text-align:left}.zt-sortable-new.zt-sortable-new--active,.zt-sortable-new.zt-sortable-new--active:hover{background-color:#fcecc8}.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 .search-drawer--filter{display:flex;flex-direction:column;height:100%}.dynamic-drawer .ant-drawer-body .search-drawer--filter .search-drawer--template{align-items:center;display:flex;gap:5px;height:34px}.dynamic-drawer .ant-drawer-body .search-drawer--filter .search-drawer--template>button{flex:1;height:30px}.dynamic-drawer .ant-drawer-body .search-drawer--filter .search-drawer--filter-input{align-items:center;display:flex}.dynamic-drawer .ant-drawer-body .search-drawer--filter .search-drawer--filter-input .ant-input-group-wrapper.ant-input-search{width:100%}.dynamic-drawer .ant-drawer-body .search-drawer--filter .search-drawer--filter-input .ant-input-group-wrapper.ant-input-search .ant-input-wrapper input{background:#f0f0f0;border:0;border-radius:0 0 0 0;color:#333;text-align:center}.dynamic-drawer .ant-drawer-body .search-drawer--filter .search-drawer--filter-input .ant-input-group-wrapper.ant-input-search .ant-input-wrapper input:focus{box-shadow:none;outline:0}.dynamic-drawer .ant-drawer-body .search-drawer--filter .search-drawer--filter-input .ant-input-group-wrapper.ant-input-search .ant-input-wrapper .ant-input-group-addon>button{background:#f0f0f0;border:0;border-radius:0 0 0 0;height:28px;outline:none}.dynamic-drawer .ant-drawer-body .search-drawer--filter .search-drawer--filter-input>.selector-all{border-radius:0;border-right:0}.dynamic-drawer .ant-drawer-body .search-drawer--filter .search-drawer--filter-input>.selector-inverse{border-radius:0}.dynamic-drawer .ant-drawer-body .search-drawer--filter .ant-checkbox-group{flex:1;overflow:auto}.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}.dynamic-template--list{display:flex;flex-direction:column}.dynamic-template--list .dynamic-template--item{align-items:center;cursor:pointer;display:flex;margin-top:6px;padding:4px 8px}.dynamic-template--list .dynamic-template--item.dynamic-template--item-active{background-color:#e6f7ff}.dynamic-template--list .dynamic-template--item .dynamic-template--item-title{flex:1}.dynamic-template-confirm--item-title{font-weight:400}
@@ -1,4 +1,5 @@
1
1
  import DynamicSetting from './dynamicSetting.js';
2
+ export { TemplateDatasetName } from './useTemplate.js';
2
3
 
3
4
 
4
5
 
@@ -31,6 +31,11 @@ interface IDynamicSettingProps {
31
31
  isMore?: boolean;
32
32
  isFixed?: boolean;
33
33
  isDimensionDynamic?: boolean;
34
+ isTemplateSetting?: boolean;
35
+ /**
36
+ * 模板设置的表名
37
+ */
38
+ storeName?: string;
34
39
  }
35
40
  interface IRef {
36
41
  getCurrentDynamicList: (list: IDynamicItem[]) => IDynamicItem[];
@@ -143,7 +143,8 @@ function getCurrentDynamicItems(dynamicKey, parentDynamicKey, list) {
143
143
  * @param dynamicStorageKey 保留的key值
144
144
  * @param value 值
145
145
  */
146
- function getSetDynamicKey(LOCALSTORAGE_KEY, LOCALSTORAGE_LRU_KEY, customConfigFetch) {
146
+ function getSetDynamicKey(LOCALSTORAGE_KEY, LOCALSTORAGE_LRU_KEY, customConfigFetch, options) {
147
+ var isNotSaveToServer = (options || {}).isNotSaveToServer;
147
148
  return function (dynamicStorageKey, value) {
148
149
  var obj = {};
149
150
  var lruKeys = [];
@@ -190,6 +191,9 @@ function getSetDynamicKey(LOCALSTORAGE_KEY, LOCALSTORAGE_LRU_KEY, customConfigFe
190
191
  localStorage.setItem(LOCALSTORAGE_LRU_KEY, lruData);
191
192
  // 持久化存储
192
193
  try {
194
+ if (isNotSaveToServer) {
195
+ return;
196
+ }
193
197
  customConfigFetch === null || customConfigFetch === void 0 ? void 0 : customConfigFetch({
194
198
  customKey: LOCALSTORAGE_KEY,
195
199
  customValue: data,
@@ -1,8 +1,19 @@
1
1
  import { __spreadArray } from '../_virtual/_tslib.js';
2
2
  import { useState } from 'react';
3
+ import { useMemoizedFn } from 'ahooks';
4
+ import debounce from 'lodash/debounce';
3
5
  import myMessage from '../message/index.js';
4
6
 
5
- function useSearch(dynamicList, checkedValues, isDimensionDynamic) {
7
+ /**
8
+ * @change 2026-03-31 过滤逻辑改成,不过滤显示,只高亮显示
9
+ * @description 搜索过滤列
10
+ * @param dynamicList 原始完整表格列集合(包含所有列)
11
+ * @param checkedValues 已选中的列 key 集合(状态变量)
12
+ * @param isDimensionDynamic 是否开启维度动态列配置
13
+ * @param isSearchFilterEnabled 过滤行为是否是过滤还是高亮 true为过滤展示,false为高亮展示
14
+ * @returns
15
+ */
16
+ function useSearch(dynamicList, checkedValues, isDimensionDynamic, isSearchFilterEnabled) {
6
17
  // 过滤后的可见列集合(仅操作此集合中的列)
7
18
  var _a = useState(null), filterDynamicColumns = _a[0], setFilterDynamicColumns = _a[1];
8
19
  // 未参与过滤的列,但是选中了的值
@@ -27,7 +38,10 @@ function useSearch(dynamicList, checkedValues, isDimensionDynamic) {
27
38
  return;
28
39
  }
29
40
  // 1. 确定操作的目标列集合:仅对「过滤后可见列」操作(优先 filterDynamicColumns,无则用 dynamicColumns)
30
- var targetColumns = filterDynamicColumns !== null && filterDynamicColumns !== void 0 ? filterDynamicColumns : dynamicList;
41
+ // const targetColumns: any = filterDynamicColumns ?? dynamicList;
42
+ var targetColumns = isSearchFilterEnabled
43
+ ? filterDynamicColumns !== null && filterDynamicColumns !== void 0 ? filterDynamicColumns : dynamicList
44
+ : dynamicList;
31
45
  // 2. 拆分目标列中的两类列(仅在可见列范围内处理)
32
46
  // 2.1 「可操作列」:过滤后可见 + 允许动态隐藏(isNoDynamicHide: false)→ 参与全选/反选
33
47
  var operableKeys = targetColumns
@@ -40,8 +54,7 @@ function useSearch(dynamicList, checkedValues, isDimensionDynamic) {
40
54
  .map(function (column) { return column.key; });
41
55
  // 3. 拆分当前已选中的 keys(确保「过滤后隐藏的列」状态不变)
42
56
  // 3.1 已选中的「过滤后隐藏的列」:无论是否可动态,均保留原状态(不参与本次操作)
43
- var hiddenCheckedKeys = checkedValues.filter(function (key) { return !targetColumns.some(function (column) { return column.key === key; }); } // 不在目标列(过滤后隐藏)的选中项
44
- );
57
+ var hiddenCheckedKeys = checkedValues.filter(function (key) { return !targetColumns.some(function (column) { return column.key === key; }); });
45
58
  // 3.2 已选中的「可见不可操作列」:保留原选中状态
46
59
  var visibleNonOperableCheckedKeys = checkedValues.filter(function (key) {
47
60
  return visibleNonOperableKeys.includes(key);
@@ -50,17 +63,19 @@ function useSearch(dynamicList, checkedValues, isDimensionDynamic) {
50
63
  var operableCheckedKeys = checkedValues.filter(function (key) {
51
64
  return operableKeys.includes(key);
52
65
  });
66
+ // 保留过滤后隐藏列的原选中状态
67
+ var filterHiddenCheckedKeys = Array.from(new Set(__spreadArray(__spreadArray([], filterCheckedValues, true), hiddenCheckedKeys, true)));
53
68
  // 4. 全选逻辑:仅选中「可见可操作列」,其他列(隐藏列、可见不可操作列)保持原状态
54
69
  if (type === "all") {
55
70
  // 边界判断:仅当「已选中的可操作列数 ≠ 可操作列总数」时才更新(避免无效渲染)
56
71
  if (operableCheckedKeys.length !== operableLen) {
57
- onCheckboxChange(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], filterCheckedValues, true), operableKeys, true), visibleNonOperableCheckedKeys, true), hiddenCheckedKeys, true));
72
+ onCheckboxChange(__spreadArray(__spreadArray(__spreadArray([], filterHiddenCheckedKeys, true), operableKeys, true), visibleNonOperableCheckedKeys, true));
58
73
  }
59
74
  return;
60
75
  }
61
76
  // 5. 反选逻辑:仅反选「可见可操作列」,其他列保持原状态
62
77
  var inversedOperableKeys = operableKeys.filter(function (key) { return !operableCheckedKeys.includes(key); });
63
- onCheckboxChange(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], filterCheckedValues, true), inversedOperableKeys, true), visibleNonOperableCheckedKeys, true), hiddenCheckedKeys, true));
78
+ onCheckboxChange(__spreadArray(__spreadArray(__spreadArray([], filterHiddenCheckedKeys, true), inversedOperableKeys, true), visibleNonOperableCheckedKeys, true));
64
79
  };
65
80
  /**
66
81
  * @description 搜索过滤触发的回调
@@ -81,6 +96,9 @@ function useSearch(dynamicList, checkedValues, isDimensionDynamic) {
81
96
  setFilterCheckedValues(checkedValues.filter(function (key) { return !filterColumns.find(function (column) { return column.key === key; }); }));
82
97
  setFilterDynamicColumns(filterColumns);
83
98
  };
99
+ var onSearchHandleDebounce = useMemoizedFn(debounce(function (e) {
100
+ onSearchHandle(e.target.value);
101
+ }, 500, { trailing: true }));
84
102
  return {
85
103
  onSearchHandle: onSearchHandle,
86
104
  onCheckBtn: onCheckBtn,
@@ -92,6 +110,8 @@ function useSearch(dynamicList, checkedValues, isDimensionDynamic) {
92
110
  filterDynamicColumns: filterDynamicColumns,
93
111
  /** 设置过滤后的列 */
94
112
  setFilterDynamicColumns: setFilterDynamicColumns,
113
+ /** 搜索输入框的防抖回调 */
114
+ onSearchHandleDebounce: onSearchHandleDebounce,
95
115
  };
96
116
  }
97
117
 
@@ -0,0 +1,4 @@
1
+ /** 模板设置库的名称 */
2
+ declare const TemplateDatasetName = "ztxk-webui-template-setting";
3
+
4
+ export { TemplateDatasetName };