@nokecy/qc-ui 1.1.22 → 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.
@@ -19,6 +19,8 @@ var _toolBar = _interopRequireDefault(require("./toolBar"));
19
19
  var _settingItem = _interopRequireDefault(require("./settingItem"));
20
20
  var _icons = require("@ant-design/icons");
21
21
  var _utils = require("./utils");
22
+ var _AdvancedQueryBuilder = _interopRequireDefault(require("./queryForm/AdvancedQueryBuilder"));
23
+ var _uuid = require("uuid");
22
24
  var _setting = _interopRequireDefault(require("./setting"));
23
25
  var _ = require(".");
24
26
  var _customGroupCellRenderer = _interopRequireDefault(require("./_utils/customGroupCellRenderer"));
@@ -226,6 +228,23 @@ function AgGridPlus(props) {
226
228
  queryItemsOrder = _useState18[0],
227
229
  setQueryItemsOrder = _useState18[1];
228
230
 
231
+ // 高级查询状态
232
+ var _useState19 = (0, _react.useState)(false),
233
+ _useState20 = _slicedToArray(_useState19, 2),
234
+ advancedPopoverOpen = _useState20[0],
235
+ setAdvancedPopoverOpen = _useState20[1];
236
+ var createEmptyRuleGroup = function createEmptyRuleGroup() {
237
+ return {
238
+ id: (0, _uuid.v4)(),
239
+ logic: 'AND',
240
+ children: []
241
+ };
242
+ };
243
+ var _useState21 = (0, _react.useState)(createEmptyRuleGroup),
244
+ _useState22 = _slicedToArray(_useState21, 2),
245
+ advancedQueryRules = _useState22[0],
246
+ setAdvancedQueryRules = _useState22[1];
247
+
229
248
  /**
230
249
  * 【P1 架构优化】使用单向数据流架构
231
250
  *
@@ -684,7 +703,19 @@ function AgGridPlus(props) {
684
703
  pagination: pagination
685
704
  });
686
705
  try {
687
- var filter = (0, _utils.convertFilterModel)(queryFilter, allColDefsRef.current);
706
+ // 处理高级查询模式
707
+ var filter;
708
+ if (queryFilter.__advancedMode__ && queryFilter.__rules__) {
709
+ // 高级模式:使用规则转换
710
+ filter = (0, _utils.convertRulesToFilterString)(queryFilter.__rules__, allColDefsRef.current);
711
+ _logger.logger.debug('高级模式 Filter', {
712
+ rules: queryFilter.__rules__,
713
+ filter: filter
714
+ });
715
+ } else {
716
+ // 简单模式:使用原有的转换逻辑
717
+ filter = (0, _utils.convertFilterModel)(queryFilter, allColDefsRef.current);
718
+ }
688
719
  var params = _objectSpread(_objectSpread({
689
720
  filter: filter
690
721
  }, stableGridParams), {}, {
@@ -1189,16 +1220,33 @@ function AgGridPlus(props) {
1189
1220
  defaultExpand: defaultSearchExpand,
1190
1221
  gridApi: apiRef.current,
1191
1222
  onQuery: function onQuery(formValues) {
1223
+ // 优先使用高级搜索:如果存在高级搜索条件,忽略简单查询
1224
+ if (advancedQueryRules.children.length > 0) {
1225
+ var filter = {
1226
+ __advancedMode__: true,
1227
+ __rules__: advancedQueryRules
1228
+ };
1229
+ setQueryFilter(filter);
1230
+ if (pagination.current !== 1) {
1231
+ setPagination(function (prev) {
1232
+ return _objectSpread(_objectSpread({}, prev), {}, {
1233
+ current: 1
1234
+ });
1235
+ });
1236
+ }
1237
+ onRequest && onRequest(filter);
1238
+ return;
1239
+ }
1192
1240
  setQueryFilter(_objectSpread({}, formValues));
1193
- setPagination(function (prev) {
1194
- if (prev.current !== 1) {
1241
+ // 始终使用传入的 formValues 发起请求
1242
+ if (pagination.current !== 1) {
1243
+ setPagination(function (prev) {
1195
1244
  return _objectSpread(_objectSpread({}, prev), {}, {
1196
1245
  current: 1
1197
1246
  });
1198
- }
1199
- onRequest && onRequest(formValues);
1200
- return prev;
1201
- });
1247
+ });
1248
+ }
1249
+ onRequest && onRequest(formValues);
1202
1250
  },
1203
1251
  onInit: function onInit(defaultValues) {
1204
1252
  setQueryFilter(defaultValues);
@@ -1236,7 +1284,79 @@ function AgGridPlus(props) {
1236
1284
  gridKey: gridKey,
1237
1285
  gridApi: apiRef.current,
1238
1286
  onSaveColumnState: onColumnStateChanged
1239
- })]
1287
+ }),
1288
+ /*#__PURE__*/
1289
+ // 高级搜索(图标风格,位于设置右边)
1290
+ _react.default.createElement(_antd.Popover, {
1291
+ key: "advanced-search-setting",
1292
+ content: /*#__PURE__*/_react.default.createElement("div", {
1293
+ style: {
1294
+ width: 600,
1295
+ maxHeight: 400,
1296
+ overflow: 'auto'
1297
+ }
1298
+ }, /*#__PURE__*/_react.default.createElement(_AdvancedQueryBuilder.default, {
1299
+ rootGroup: advancedQueryRules,
1300
+ onChange: setAdvancedQueryRules,
1301
+ colDefs: allColDefs
1302
+ }), /*#__PURE__*/_react.default.createElement("div", {
1303
+ style: {
1304
+ marginTop: 12,
1305
+ textAlign: 'right',
1306
+ borderTop: '1px solid #f0f0f0',
1307
+ paddingTop: 12
1308
+ }
1309
+ }, /*#__PURE__*/_react.default.createElement(_antd.Button, {
1310
+ size: "small",
1311
+ onClick: function onClick() {
1312
+ setAdvancedQueryRules(createEmptyRuleGroup());
1313
+ setQueryFilter({});
1314
+ onRequest && onRequest({});
1315
+ setAdvancedPopoverOpen(false);
1316
+ },
1317
+ style: {
1318
+ marginRight: 8
1319
+ }
1320
+ }, "\u91CD\u7F6E"), /*#__PURE__*/_react.default.createElement(_antd.Button, {
1321
+ size: "small",
1322
+ type: "primary",
1323
+ onClick: function onClick() {
1324
+ var filter = {
1325
+ __advancedMode__: true,
1326
+ __rules__: advancedQueryRules
1327
+ };
1328
+ setQueryFilter(filter);
1329
+ if (pagination.current !== 1) {
1330
+ setPagination(function (prev) {
1331
+ return _objectSpread(_objectSpread({}, prev), {}, {
1332
+ current: 1
1333
+ });
1334
+ });
1335
+ }
1336
+ onRequest && onRequest(filter);
1337
+ setAdvancedPopoverOpen(false);
1338
+ }
1339
+ }, "\u67E5\u8BE2"))),
1340
+ title: "\u9AD8\u7EA7\u641C\u7D22",
1341
+ trigger: "click",
1342
+ open: advancedPopoverOpen,
1343
+ onOpenChange: setAdvancedPopoverOpen,
1344
+ placement: "bottomRight",
1345
+ overlayStyle: {
1346
+ maxWidth: 'none'
1347
+ }
1348
+ }, /*#__PURE__*/_react.default.createElement(_antd.Badge, {
1349
+ count: advancedQueryRules.children.length,
1350
+ size: "small",
1351
+ offset: [-2, 2]
1352
+ }, /*#__PURE__*/_react.default.createElement("div", {
1353
+ style: {
1354
+ margin: "0 4px",
1355
+ color: advancedQueryRules.children.length > 0 ? '#1890ff' : '#000',
1356
+ fontSize: 16,
1357
+ cursor: "pointer"
1358
+ }
1359
+ }, /*#__PURE__*/_react.default.createElement(_icons.FilterOutlined, null))))]
1240
1360
  }), /*#__PURE__*/_react.default.createElement(_agGridReact.AgGridReact, _extends({
1241
1361
  theme: _theme.agGridTheme
1242
1362
  }, rest, {
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ import { QueryRuleGroup } from '../shared/storage/schemeStorageAdapter';
3
+ import { ExtendedColDef } from '../types';
4
+ interface AdvancedQueryBuilderProps {
5
+ rootGroup: QueryRuleGroup;
6
+ onChange: (group: QueryRuleGroup) => void;
7
+ colDefs: ExtendedColDef[];
8
+ }
9
+ declare const AdvancedQueryBuilder: React.FC<AdvancedQueryBuilderProps>;
10
+ export default AdvancedQueryBuilder;