@nokecy/qc-ui 1.1.21 → 1.1.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/ag-grid-plus/ag-gridPlus.js +128 -8
- package/dist/cjs/ag-grid-plus/context/useSchemeDataFlow.d.ts +2 -1
- package/dist/cjs/ag-grid-plus/context/useSchemeDataFlow.js +6 -5
- package/dist/cjs/ag-grid-plus/queryForm/AdvancedQueryBuilder.d.ts +10 -0
- package/dist/cjs/ag-grid-plus/queryForm/AdvancedQueryBuilder.js +547 -0
- package/dist/cjs/ag-grid-plus/queryForm/index.js +3 -6
- package/dist/cjs/ag-grid-plus/setting/columnGroupUtils.d.ts +7 -2
- package/dist/cjs/ag-grid-plus/setting/columnGroupUtils.js +196 -4
- package/dist/cjs/ag-grid-plus/shared/storage/schemeStorageAdapter.d.ts +36 -0
- package/dist/cjs/ag-grid-plus/utils.d.ts +6 -0
- package/dist/cjs/ag-grid-plus/utils.js +86 -1
- package/dist/cjs/formDesigner/FormDesigner.js +4 -2
- package/dist/esm/ag-grid-plus/ag-gridPlus.js +131 -11
- package/dist/esm/ag-grid-plus/context/useSchemeDataFlow.d.ts +2 -1
- package/dist/esm/ag-grid-plus/context/useSchemeDataFlow.js +6 -5
- package/dist/esm/ag-grid-plus/queryForm/AdvancedQueryBuilder.d.ts +10 -0
- package/dist/esm/ag-grid-plus/queryForm/AdvancedQueryBuilder.js +541 -0
- package/dist/esm/ag-grid-plus/queryForm/index.js +3 -6
- package/dist/esm/ag-grid-plus/setting/columnGroupUtils.d.ts +7 -2
- package/dist/esm/ag-grid-plus/setting/columnGroupUtils.js +196 -4
- package/dist/esm/ag-grid-plus/shared/storage/schemeStorageAdapter.d.ts +36 -0
- package/dist/esm/ag-grid-plus/utils.d.ts +6 -0
- package/dist/esm/ag-grid-plus/utils.js +85 -0
- package/dist/esm/formDesigner/FormDesigner.js +4 -2
- package/dist/umd/qc-ui.min.js +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,547 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _react = _interopRequireDefault(require("react"));
|
|
8
|
+
var _antd = require("antd");
|
|
9
|
+
var _icons = require("@ant-design/icons");
|
|
10
|
+
var _uuid = require("uuid");
|
|
11
|
+
var _dayjs = _interopRequireDefault(require("dayjs"));
|
|
12
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
13
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
14
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
15
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
16
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
|
17
|
+
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
18
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
19
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
|
|
20
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
21
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
22
|
+
// 字段类型枚举
|
|
23
|
+
|
|
24
|
+
// 根据字段类型获取可用操作符
|
|
25
|
+
var getOperatorsByFieldType = function getOperatorsByFieldType(fieldType) {
|
|
26
|
+
var common = [{
|
|
27
|
+
label: '等于',
|
|
28
|
+
value: '='
|
|
29
|
+
}, {
|
|
30
|
+
label: '不等于',
|
|
31
|
+
value: '!='
|
|
32
|
+
}, {
|
|
33
|
+
label: '为空',
|
|
34
|
+
value: 'isEmpty'
|
|
35
|
+
}, {
|
|
36
|
+
label: '不为空',
|
|
37
|
+
value: 'isNotEmpty'
|
|
38
|
+
}];
|
|
39
|
+
switch (fieldType) {
|
|
40
|
+
case 'string':
|
|
41
|
+
return [].concat(common, [{
|
|
42
|
+
label: '包含',
|
|
43
|
+
value: 'contains'
|
|
44
|
+
}, {
|
|
45
|
+
label: '开头是',
|
|
46
|
+
value: 'startsWith'
|
|
47
|
+
}, {
|
|
48
|
+
label: '结尾是',
|
|
49
|
+
value: 'endsWith'
|
|
50
|
+
}]);
|
|
51
|
+
case 'number':
|
|
52
|
+
return [].concat(common, [{
|
|
53
|
+
label: '大于',
|
|
54
|
+
value: '>'
|
|
55
|
+
}, {
|
|
56
|
+
label: '大于等于',
|
|
57
|
+
value: '>='
|
|
58
|
+
}, {
|
|
59
|
+
label: '小于',
|
|
60
|
+
value: '<'
|
|
61
|
+
}, {
|
|
62
|
+
label: '小于等于',
|
|
63
|
+
value: '<='
|
|
64
|
+
}, {
|
|
65
|
+
label: '区间',
|
|
66
|
+
value: 'between'
|
|
67
|
+
}]);
|
|
68
|
+
case 'date':
|
|
69
|
+
return [].concat(common, [{
|
|
70
|
+
label: '大于',
|
|
71
|
+
value: '>'
|
|
72
|
+
}, {
|
|
73
|
+
label: '大于等于',
|
|
74
|
+
value: '>='
|
|
75
|
+
}, {
|
|
76
|
+
label: '小于',
|
|
77
|
+
value: '<'
|
|
78
|
+
}, {
|
|
79
|
+
label: '小于等于',
|
|
80
|
+
value: '<='
|
|
81
|
+
}, {
|
|
82
|
+
label: '区间',
|
|
83
|
+
value: 'between'
|
|
84
|
+
}]);
|
|
85
|
+
case 'enum':
|
|
86
|
+
case 'boolean':
|
|
87
|
+
// 枚举和布尔只支持等于/不等于
|
|
88
|
+
return common;
|
|
89
|
+
default:
|
|
90
|
+
return common;
|
|
91
|
+
}
|
|
92
|
+
};
|
|
93
|
+
|
|
94
|
+
// 推断字段类型
|
|
95
|
+
var inferFieldType = function inferFieldType(colDef) {
|
|
96
|
+
if (!colDef) return 'string';
|
|
97
|
+
|
|
98
|
+
// 有枚举值定义
|
|
99
|
+
if (colDef.valueEnum && colDef.valueEnum.length > 0) {
|
|
100
|
+
return 'enum';
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
// 根据 type 判断
|
|
104
|
+
var type = colDef.type;
|
|
105
|
+
if (type === 'numberColumn' || type === 'numericColumn') {
|
|
106
|
+
return 'number';
|
|
107
|
+
}
|
|
108
|
+
if (type === 'dateColumn' || type === 'dateTimeColumn') {
|
|
109
|
+
return 'date';
|
|
110
|
+
}
|
|
111
|
+
if (type === 'bool' || type === 'boolColumn') {
|
|
112
|
+
return 'boolean';
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
// 根据 filter 判断
|
|
116
|
+
if (colDef.filter === 'agNumberColumnFilter') {
|
|
117
|
+
return 'number';
|
|
118
|
+
}
|
|
119
|
+
if (colDef.filter === 'agDateColumnFilter') {
|
|
120
|
+
return 'date';
|
|
121
|
+
}
|
|
122
|
+
if (colDef.filter === 'boolFilter') {
|
|
123
|
+
return 'boolean';
|
|
124
|
+
}
|
|
125
|
+
return 'string';
|
|
126
|
+
};
|
|
127
|
+
var AdvancedQueryBuilder = function AdvancedQueryBuilder(_ref) {
|
|
128
|
+
var rootGroup = _ref.rootGroup,
|
|
129
|
+
onChange = _ref.onChange,
|
|
130
|
+
colDefs = _ref.colDefs;
|
|
131
|
+
var updateGroup = function updateGroup(newGroup) {
|
|
132
|
+
onChange(newGroup);
|
|
133
|
+
};
|
|
134
|
+
|
|
135
|
+
// 更加精确的增删改查
|
|
136
|
+
var modifyTree = function modifyTree(callback) {
|
|
137
|
+
var newRoot = JSON.parse(JSON.stringify(rootGroup));
|
|
138
|
+
callback(newRoot);
|
|
139
|
+
updateGroup(newRoot);
|
|
140
|
+
};
|
|
141
|
+
var findGroup = function findGroup(root, id) {
|
|
142
|
+
if (root.id === id) return root;
|
|
143
|
+
if (root.children) {
|
|
144
|
+
var _iterator = _createForOfIteratorHelper(root.children),
|
|
145
|
+
_step;
|
|
146
|
+
try {
|
|
147
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
148
|
+
var child = _step.value;
|
|
149
|
+
// @ts-ignore
|
|
150
|
+
if (child.logic) {
|
|
151
|
+
// @ts-ignore
|
|
152
|
+
var found = findGroup(child, id);
|
|
153
|
+
if (found) return found;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
} catch (err) {
|
|
157
|
+
_iterator.e(err);
|
|
158
|
+
} finally {
|
|
159
|
+
_iterator.f();
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
return null;
|
|
163
|
+
};
|
|
164
|
+
var addRule = function addRule(groupId) {
|
|
165
|
+
var firstCol = colDefs.find(function (c) {
|
|
166
|
+
return !c.hide && !c.hideInSearch;
|
|
167
|
+
});
|
|
168
|
+
var fieldType = inferFieldType(firstCol);
|
|
169
|
+
var operators = getOperatorsByFieldType(fieldType);
|
|
170
|
+
modifyTree(function (root) {
|
|
171
|
+
var group = findGroup(root, groupId);
|
|
172
|
+
if (group) {
|
|
173
|
+
var _operators$;
|
|
174
|
+
group.children.push({
|
|
175
|
+
id: (0, _uuid.v4)(),
|
|
176
|
+
field: (firstCol === null || firstCol === void 0 ? void 0 : firstCol.field) || '',
|
|
177
|
+
operator: ((_operators$ = operators[0]) === null || _operators$ === void 0 ? void 0 : _operators$.value) || '=',
|
|
178
|
+
value: null
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
});
|
|
182
|
+
};
|
|
183
|
+
var addGroup = function addGroup(groupId) {
|
|
184
|
+
modifyTree(function (root) {
|
|
185
|
+
var group = findGroup(root, groupId);
|
|
186
|
+
if (group) {
|
|
187
|
+
group.children.push({
|
|
188
|
+
id: (0, _uuid.v4)(),
|
|
189
|
+
logic: 'AND',
|
|
190
|
+
children: []
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
});
|
|
194
|
+
};
|
|
195
|
+
var removeChild = function removeChild(parentId, childId) {
|
|
196
|
+
modifyTree(function (root) {
|
|
197
|
+
var group = findGroup(root, parentId);
|
|
198
|
+
if (group) {
|
|
199
|
+
group.children = group.children.filter(function (c) {
|
|
200
|
+
return c.id !== childId;
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
});
|
|
204
|
+
};
|
|
205
|
+
var updateRule = function updateRule(parentId, ruleId, updates) {
|
|
206
|
+
modifyTree(function (root) {
|
|
207
|
+
var group = findGroup(root, parentId);
|
|
208
|
+
if (group) {
|
|
209
|
+
var rule = group.children.find(function (c) {
|
|
210
|
+
return c.id === ruleId;
|
|
211
|
+
});
|
|
212
|
+
if (rule) {
|
|
213
|
+
Object.assign(rule, updates);
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
});
|
|
217
|
+
};
|
|
218
|
+
var updateGroupLogic = function updateGroupLogic(groupId, logic) {
|
|
219
|
+
modifyTree(function (root) {
|
|
220
|
+
var group = findGroup(root, groupId);
|
|
221
|
+
if (group) {
|
|
222
|
+
group.logic = logic;
|
|
223
|
+
}
|
|
224
|
+
});
|
|
225
|
+
};
|
|
226
|
+
var renderValueInput = function renderValueInput(rule, colDef, onValueChange) {
|
|
227
|
+
if (rule.operator === 'isEmpty' || rule.operator === 'isNotEmpty') {
|
|
228
|
+
return /*#__PURE__*/_react.default.createElement(_antd.Input, {
|
|
229
|
+
disabled: true,
|
|
230
|
+
placeholder: "\u65E0\u9700\u8F93\u5165\u503C",
|
|
231
|
+
style: {
|
|
232
|
+
width: '100%'
|
|
233
|
+
}
|
|
234
|
+
});
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
// 优先使用列定义的自定义搜索组件
|
|
238
|
+
if (colDef !== null && colDef !== void 0 && colDef.searchComponent) {
|
|
239
|
+
var CustomComponent = colDef.searchComponent;
|
|
240
|
+
// 如果 searchComponent 是 React 组件(函数或类)
|
|
241
|
+
if (typeof CustomComponent === 'function' || CustomComponent && _typeof(CustomComponent) === 'object') {
|
|
242
|
+
var componentProps = _objectSpread({
|
|
243
|
+
value: rule.value,
|
|
244
|
+
onChange: onValueChange,
|
|
245
|
+
style: {
|
|
246
|
+
width: '100%'
|
|
247
|
+
},
|
|
248
|
+
allowClear: true,
|
|
249
|
+
placeholder: colDef.headerName ? "\u8BF7\u9009\u62E9".concat(colDef.headerName) : '请选择'
|
|
250
|
+
}, colDef.searchComponentProps || {});
|
|
251
|
+
|
|
252
|
+
// 渲染自定义组件
|
|
253
|
+
try {
|
|
254
|
+
return /*#__PURE__*/_react.default.createElement(CustomComponent, componentProps);
|
|
255
|
+
} catch (e) {
|
|
256
|
+
// 如果创建失败,继续使用默认逻辑
|
|
257
|
+
console.warn('Failed to render custom search component:', e);
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
var fieldType = inferFieldType(colDef);
|
|
262
|
+
|
|
263
|
+
// 枚举类型 - 下拉选择
|
|
264
|
+
if (fieldType === 'enum' && colDef !== null && colDef !== void 0 && colDef.valueEnum) {
|
|
265
|
+
// 获取默认值
|
|
266
|
+
var defaultItems = colDef.valueEnum.filter(function (item) {
|
|
267
|
+
return item.default;
|
|
268
|
+
});
|
|
269
|
+
var isMultiple = defaultItems.length > 1;
|
|
270
|
+
return /*#__PURE__*/_react.default.createElement(_antd.Select, {
|
|
271
|
+
style: {
|
|
272
|
+
width: '100%'
|
|
273
|
+
},
|
|
274
|
+
value: rule.value,
|
|
275
|
+
onChange: onValueChange,
|
|
276
|
+
allowClear: true,
|
|
277
|
+
mode: isMultiple ? 'multiple' : undefined,
|
|
278
|
+
placeholder: "\u8BF7\u9009\u62E9"
|
|
279
|
+
}, colDef.valueEnum.map(function (item) {
|
|
280
|
+
return /*#__PURE__*/_react.default.createElement(_antd.Select.Option, {
|
|
281
|
+
key: item.value,
|
|
282
|
+
value: item.value
|
|
283
|
+
}, item.label);
|
|
284
|
+
}));
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
// 布尔类型
|
|
288
|
+
if (fieldType === 'boolean') {
|
|
289
|
+
return /*#__PURE__*/_react.default.createElement(_antd.Select, {
|
|
290
|
+
style: {
|
|
291
|
+
width: '100%'
|
|
292
|
+
},
|
|
293
|
+
value: rule.value,
|
|
294
|
+
onChange: onValueChange,
|
|
295
|
+
allowClear: true,
|
|
296
|
+
placeholder: "\u8BF7\u9009\u62E9"
|
|
297
|
+
}, /*#__PURE__*/_react.default.createElement(_antd.Select.Option, {
|
|
298
|
+
value: true
|
|
299
|
+
}, "\u662F"), /*#__PURE__*/_react.default.createElement(_antd.Select.Option, {
|
|
300
|
+
value: false
|
|
301
|
+
}, "\u5426"));
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
// 数字类型
|
|
305
|
+
if (fieldType === 'number') {
|
|
306
|
+
if (rule.operator === 'between') {
|
|
307
|
+
var rangeValue = Array.isArray(rule.value) ? rule.value : [null, null];
|
|
308
|
+
return /*#__PURE__*/_react.default.createElement(_antd.Space.Compact, {
|
|
309
|
+
style: {
|
|
310
|
+
width: '100%'
|
|
311
|
+
}
|
|
312
|
+
}, /*#__PURE__*/_react.default.createElement(_antd.InputNumber, {
|
|
313
|
+
style: {
|
|
314
|
+
width: '50%'
|
|
315
|
+
},
|
|
316
|
+
placeholder: "\u6700\u5C0F\u503C",
|
|
317
|
+
value: rangeValue[0],
|
|
318
|
+
onChange: function onChange(val) {
|
|
319
|
+
return onValueChange([val, rangeValue[1]]);
|
|
320
|
+
}
|
|
321
|
+
}), /*#__PURE__*/_react.default.createElement(_antd.InputNumber, {
|
|
322
|
+
style: {
|
|
323
|
+
width: '50%'
|
|
324
|
+
},
|
|
325
|
+
placeholder: "\u6700\u5927\u503C",
|
|
326
|
+
value: rangeValue[1],
|
|
327
|
+
onChange: function onChange(val) {
|
|
328
|
+
return onValueChange([rangeValue[0], val]);
|
|
329
|
+
}
|
|
330
|
+
}));
|
|
331
|
+
}
|
|
332
|
+
return /*#__PURE__*/_react.default.createElement(_antd.InputNumber, {
|
|
333
|
+
style: {
|
|
334
|
+
width: '100%'
|
|
335
|
+
},
|
|
336
|
+
value: rule.value,
|
|
337
|
+
onChange: onValueChange,
|
|
338
|
+
placeholder: "\u8BF7\u8F93\u5165\u6570\u5B57"
|
|
339
|
+
});
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
// 日期类型
|
|
343
|
+
if (fieldType === 'date') {
|
|
344
|
+
if (rule.operator === 'between') {
|
|
345
|
+
return /*#__PURE__*/_react.default.createElement(_antd.DatePicker.RangePicker, {
|
|
346
|
+
style: {
|
|
347
|
+
width: '100%'
|
|
348
|
+
},
|
|
349
|
+
value: Array.isArray(rule.value) ? [rule.value[0] ? (0, _dayjs.default)(rule.value[0]) : null, rule.value[1] ? (0, _dayjs.default)(rule.value[1]) : null] : [null, null],
|
|
350
|
+
onChange: function onChange(dates) {
|
|
351
|
+
if (dates) {
|
|
352
|
+
var _dates$, _dates$2;
|
|
353
|
+
onValueChange([(_dates$ = dates[0]) === null || _dates$ === void 0 ? void 0 : _dates$.format('YYYY-MM-DD'), (_dates$2 = dates[1]) === null || _dates$2 === void 0 ? void 0 : _dates$2.format('YYYY-MM-DD')]);
|
|
354
|
+
} else {
|
|
355
|
+
onValueChange(null);
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
});
|
|
359
|
+
}
|
|
360
|
+
return /*#__PURE__*/_react.default.createElement(_antd.DatePicker, {
|
|
361
|
+
style: {
|
|
362
|
+
width: '100%'
|
|
363
|
+
},
|
|
364
|
+
value: rule.value ? (0, _dayjs.default)(rule.value) : null,
|
|
365
|
+
onChange: function onChange(date) {
|
|
366
|
+
return onValueChange(date === null || date === void 0 ? void 0 : date.format('YYYY-MM-DD'));
|
|
367
|
+
}
|
|
368
|
+
});
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
// 默认:字符串输入
|
|
372
|
+
return /*#__PURE__*/_react.default.createElement(_antd.Input, {
|
|
373
|
+
style: {
|
|
374
|
+
width: '100%'
|
|
375
|
+
},
|
|
376
|
+
value: rule.value,
|
|
377
|
+
onChange: function onChange(e) {
|
|
378
|
+
return onValueChange(e.target.value);
|
|
379
|
+
},
|
|
380
|
+
allowClear: true,
|
|
381
|
+
placeholder: "\u8BF7\u8F93\u5165"
|
|
382
|
+
});
|
|
383
|
+
};
|
|
384
|
+
var renderRule = function renderRule(rule, parentGroup, index) {
|
|
385
|
+
var colDef = colDefs.find(function (c) {
|
|
386
|
+
return c.field === rule.field;
|
|
387
|
+
});
|
|
388
|
+
var fieldType = inferFieldType(colDef);
|
|
389
|
+
var operators = getOperatorsByFieldType(fieldType);
|
|
390
|
+
|
|
391
|
+
// 当切换字段时,需要重置操作符(如果当前操作符在新类型中不可用)
|
|
392
|
+
var handleFieldChange = function handleFieldChange(newField) {
|
|
393
|
+
var _newOperators$;
|
|
394
|
+
var newColDef = colDefs.find(function (c) {
|
|
395
|
+
return c.field === newField;
|
|
396
|
+
});
|
|
397
|
+
var newFieldType = inferFieldType(newColDef);
|
|
398
|
+
var newOperators = getOperatorsByFieldType(newFieldType);
|
|
399
|
+
|
|
400
|
+
// 检查当前操作符是否在新类型中可用
|
|
401
|
+
var currentOpAvailable = newOperators.some(function (op) {
|
|
402
|
+
return op.value === rule.operator;
|
|
403
|
+
});
|
|
404
|
+
updateRule(parentGroup.id, rule.id, {
|
|
405
|
+
field: newField,
|
|
406
|
+
operator: currentOpAvailable ? rule.operator : ((_newOperators$ = newOperators[0]) === null || _newOperators$ === void 0 ? void 0 : _newOperators$.value) || '=',
|
|
407
|
+
value: null // 重置值
|
|
408
|
+
});
|
|
409
|
+
};
|
|
410
|
+
return /*#__PURE__*/_react.default.createElement(_antd.Row, {
|
|
411
|
+
gutter: 8,
|
|
412
|
+
style: {
|
|
413
|
+
marginBottom: 8,
|
|
414
|
+
flexWrap: 'nowrap'
|
|
415
|
+
},
|
|
416
|
+
align: "middle",
|
|
417
|
+
wrap: false
|
|
418
|
+
}, /*#__PURE__*/_react.default.createElement(_antd.Col, {
|
|
419
|
+
flex: "200px"
|
|
420
|
+
}, /*#__PURE__*/_react.default.createElement(_antd.Select, {
|
|
421
|
+
style: {
|
|
422
|
+
width: '100%'
|
|
423
|
+
},
|
|
424
|
+
placeholder: "\u9009\u62E9\u5B57\u6BB5",
|
|
425
|
+
showSearch: true,
|
|
426
|
+
optionFilterProp: "children",
|
|
427
|
+
value: rule.field,
|
|
428
|
+
onChange: handleFieldChange
|
|
429
|
+
}, colDefs.filter(function (c) {
|
|
430
|
+
return !c.hide && !c.hideInSearch;
|
|
431
|
+
}).map(function (c) {
|
|
432
|
+
return /*#__PURE__*/_react.default.createElement(_antd.Select.Option, {
|
|
433
|
+
key: c.field,
|
|
434
|
+
value: c.field
|
|
435
|
+
}, c.headerName || c.field);
|
|
436
|
+
}))), /*#__PURE__*/_react.default.createElement(_antd.Col, {
|
|
437
|
+
flex: "120px"
|
|
438
|
+
}, /*#__PURE__*/_react.default.createElement(_antd.Select, {
|
|
439
|
+
style: {
|
|
440
|
+
width: '100%'
|
|
441
|
+
},
|
|
442
|
+
value: rule.operator,
|
|
443
|
+
onChange: function onChange(val) {
|
|
444
|
+
return updateRule(parentGroup.id, rule.id, {
|
|
445
|
+
operator: val
|
|
446
|
+
});
|
|
447
|
+
}
|
|
448
|
+
}, operators.map(function (op) {
|
|
449
|
+
return /*#__PURE__*/_react.default.createElement(_antd.Select.Option, {
|
|
450
|
+
key: op.value,
|
|
451
|
+
value: op.value
|
|
452
|
+
}, op.label);
|
|
453
|
+
}))), /*#__PURE__*/_react.default.createElement(_antd.Col, {
|
|
454
|
+
flex: "auto"
|
|
455
|
+
}, renderValueInput(rule, colDef, function (val) {
|
|
456
|
+
return updateRule(parentGroup.id, rule.id, {
|
|
457
|
+
value: val
|
|
458
|
+
});
|
|
459
|
+
})), /*#__PURE__*/_react.default.createElement(_antd.Col, {
|
|
460
|
+
flex: "32px"
|
|
461
|
+
}, /*#__PURE__*/_react.default.createElement(_antd.Button, {
|
|
462
|
+
type: "text",
|
|
463
|
+
danger: true,
|
|
464
|
+
icon: /*#__PURE__*/_react.default.createElement(_icons.DeleteOutlined, null),
|
|
465
|
+
onClick: function onClick() {
|
|
466
|
+
return removeChild(parentGroup.id, rule.id);
|
|
467
|
+
}
|
|
468
|
+
})));
|
|
469
|
+
};
|
|
470
|
+
var renderGroup = function renderGroup(group, parentGroup, indexInParent) {
|
|
471
|
+
return /*#__PURE__*/_react.default.createElement(_antd.Card, {
|
|
472
|
+
size: "small",
|
|
473
|
+
style: {
|
|
474
|
+
marginBottom: 8,
|
|
475
|
+
borderLeft: "3px solid ".concat(group.logic === 'AND' ? '#1890ff' : '#52c41a')
|
|
476
|
+
},
|
|
477
|
+
bodyStyle: {
|
|
478
|
+
padding: '8px 12px'
|
|
479
|
+
}
|
|
480
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
481
|
+
style: {
|
|
482
|
+
display: 'flex',
|
|
483
|
+
alignItems: 'center',
|
|
484
|
+
marginBottom: group.children.length > 0 ? 8 : 0
|
|
485
|
+
}
|
|
486
|
+
}, /*#__PURE__*/_react.default.createElement(_antd.Space, {
|
|
487
|
+
size: "small"
|
|
488
|
+
}, /*#__PURE__*/_react.default.createElement(_antd.Select, {
|
|
489
|
+
value: group.logic,
|
|
490
|
+
onChange: function onChange(val) {
|
|
491
|
+
return updateGroupLogic(group.id, val);
|
|
492
|
+
},
|
|
493
|
+
style: {
|
|
494
|
+
width: 80
|
|
495
|
+
},
|
|
496
|
+
size: "small"
|
|
497
|
+
}, /*#__PURE__*/_react.default.createElement(_antd.Select.Option, {
|
|
498
|
+
value: "AND"
|
|
499
|
+
}, "\u4E14"), /*#__PURE__*/_react.default.createElement(_antd.Select.Option, {
|
|
500
|
+
value: "OR"
|
|
501
|
+
}, "\u6216")), /*#__PURE__*/_react.default.createElement(_antd.Button, {
|
|
502
|
+
type: "dashed",
|
|
503
|
+
size: "small",
|
|
504
|
+
icon: /*#__PURE__*/_react.default.createElement(_icons.PlusOutlined, null),
|
|
505
|
+
onClick: function onClick() {
|
|
506
|
+
return addRule(group.id);
|
|
507
|
+
}
|
|
508
|
+
}, "\u89C4\u5219"), /*#__PURE__*/_react.default.createElement(_antd.Button, {
|
|
509
|
+
type: "dashed",
|
|
510
|
+
size: "small",
|
|
511
|
+
icon: /*#__PURE__*/_react.default.createElement(_icons.PartitionOutlined, null),
|
|
512
|
+
onClick: function onClick() {
|
|
513
|
+
return addGroup(group.id);
|
|
514
|
+
}
|
|
515
|
+
}, "\u5206\u7EC4")), /*#__PURE__*/_react.default.createElement("div", {
|
|
516
|
+
style: {
|
|
517
|
+
flex: 1
|
|
518
|
+
}
|
|
519
|
+
}), parentGroup && /*#__PURE__*/_react.default.createElement(_antd.Button, {
|
|
520
|
+
type: "text",
|
|
521
|
+
danger: true,
|
|
522
|
+
size: "small",
|
|
523
|
+
icon: /*#__PURE__*/_react.default.createElement(_icons.DeleteOutlined, null),
|
|
524
|
+
onClick: function onClick() {
|
|
525
|
+
return removeChild(parentGroup.id, group.id);
|
|
526
|
+
}
|
|
527
|
+
})), group.children.length > 0 && /*#__PURE__*/_react.default.createElement("div", {
|
|
528
|
+
style: {
|
|
529
|
+
paddingLeft: 12,
|
|
530
|
+
borderLeft: '1px dashed #d9d9d9',
|
|
531
|
+
marginLeft: 8
|
|
532
|
+
}
|
|
533
|
+
}, group.children.map(function (child, idx) {
|
|
534
|
+
return /*#__PURE__*/_react.default.createElement("div", {
|
|
535
|
+
key: child.id
|
|
536
|
+
}, child.logic ? renderGroup(child, group, idx) : renderRule(child, group, idx));
|
|
537
|
+
})));
|
|
538
|
+
};
|
|
539
|
+
return /*#__PURE__*/_react.default.createElement("div", {
|
|
540
|
+
style: {
|
|
541
|
+
background: '#fafafa',
|
|
542
|
+
borderRadius: 4,
|
|
543
|
+
padding: 8
|
|
544
|
+
}
|
|
545
|
+
}, renderGroup(rootGroup, null, 0));
|
|
546
|
+
};
|
|
547
|
+
var _default = exports.default = AdvancedQueryBuilder;
|
|
@@ -35,7 +35,7 @@ var FormRender = function FormRender(props) {
|
|
|
35
35
|
columnStates = props.columnStates,
|
|
36
36
|
onQuery = props.onQuery,
|
|
37
37
|
_props$defaultRows = props.defaultRows,
|
|
38
|
-
defaultRows = _props$defaultRows === void 0 ? 1 : _props$defaultRows;
|
|
38
|
+
defaultRows = _props$defaultRows === void 0 ? 1 : _props$defaultRows;
|
|
39
39
|
var _useState = (0, _react2.useState)({
|
|
40
40
|
type: 'object',
|
|
41
41
|
properties: {}
|
|
@@ -80,7 +80,6 @@ var FormRender = function FormRender(props) {
|
|
|
80
80
|
};
|
|
81
81
|
var onReset = function onReset() {
|
|
82
82
|
// 使用 forceClear: true 强制清空所有字段,包括有默认值的字段
|
|
83
|
-
// 这样可以确保点击重置时,表单组件显示被完全清空
|
|
84
83
|
form.reset('*', {
|
|
85
84
|
forceClear: true
|
|
86
85
|
});
|
|
@@ -199,11 +198,9 @@ var FormRender = function FormRender(props) {
|
|
|
199
198
|
setSchema(new_schema);
|
|
200
199
|
}, [columnStates === null || columnStates === void 0 ? void 0 : columnStates.map(function (c) {
|
|
201
200
|
return c.colId;
|
|
202
|
-
}).join('|'),
|
|
203
|
-
colDefs === null || colDefs === void 0 ? void 0 : colDefs.map(function (c) {
|
|
201
|
+
}).join('|'), colDefs === null || colDefs === void 0 ? void 0 : colDefs.map(function (c) {
|
|
204
202
|
return "".concat(c.field, "|").concat(c.headerName);
|
|
205
|
-
}).join('|')
|
|
206
|
-
]);
|
|
203
|
+
}).join('|')]);
|
|
207
204
|
return /*#__PURE__*/_react2.default.createElement("div", {
|
|
208
205
|
className: (0, _classnames.default)(className, "ag-grid-table-search ag-grid-table-search-query-filter")
|
|
209
206
|
}, /*#__PURE__*/_react2.default.createElement(_antdV.Form, {
|
|
@@ -24,8 +24,10 @@ export declare function gridStateToFlatConfig(columnDefs: (ColDef | ColGroupDef)
|
|
|
24
24
|
* 【重要】如果提供了 originalColumnDefs,会合并原始列定义中的所有属性
|
|
25
25
|
* 这样可以保留 cellRenderer、valueFormatter、valueEnum 等自定义渲染属性
|
|
26
26
|
*
|
|
27
|
+
* 【重要】会自动检测并追加代码中新增的列(在 originalColumnDefs 中存在但 flatConfig 中不存在的列)
|
|
28
|
+
*
|
|
27
29
|
* @param flatConfig 扁平化配置数组
|
|
28
|
-
* @param originalColumnDefs
|
|
30
|
+
* @param originalColumnDefs 原始列定义数组(可选),用于保留自定义属性和检测新增列
|
|
29
31
|
* @returns AG-Grid 列定义数组
|
|
30
32
|
*/
|
|
31
33
|
export declare function flatConfigToGridState(flatConfig: FlatColumnItem[], originalColumnDefs?: (ColDef | ColGroupDef)[]): (ColDef | ColGroupDef)[];
|
|
@@ -74,7 +76,10 @@ export declare function isOldSchemeData(data: any[]): boolean;
|
|
|
74
76
|
* 扁平化配置 → AG-Grid Column State
|
|
75
77
|
* 将扁平化数组转换为 AG-Grid 的 columnState 格式,用于控制列的顺序和属性
|
|
76
78
|
*
|
|
79
|
+
* 【重要】会自动检测并追加代码中新增的列(在 originalColumnDefs 中存在但 flatConfig 中不存在的列)
|
|
80
|
+
*
|
|
77
81
|
* @param flatConfig 扁平化配置数组
|
|
82
|
+
* @param originalColumnDefs 原始列定义数组(可选),用于检测新增列
|
|
78
83
|
* @returns AG-Grid columnState 数组
|
|
79
84
|
*/
|
|
80
|
-
export declare function flatConfigToColumnState(flatConfig: FlatColumnItem[]): any[];
|
|
85
|
+
export declare function flatConfigToColumnState(flatConfig: FlatColumnItem[], originalColumnDefs?: (ColDef | ColGroupDef)[]): any[];
|