UNPKG

choerodon-ui

Version:

An enterprise-class UI design language and React-based implementation

1,243 lines (1,052 loc) 42.2 kB
import _slicedToArray from "@babel/runtime/helpers/slicedToArray"; import _createForOfIteratorHelper from "@babel/runtime/helpers/createForOfIteratorHelper"; import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray"; import _objectSpread from "@babel/runtime/helpers/objectSpread2"; import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator"; import _defineProperty from "@babel/runtime/helpers/defineProperty"; import _regeneratorRuntime from "@babel/runtime/regenerator"; import React, { memo, useContext, useEffect } from 'react'; import { observable, runInAction } from 'mobx'; import { observer } from 'mobx-react-lite'; import map from 'lodash/map'; import isObject from 'lodash/isObject'; import isEnumEmpty from 'lodash/isEmpty'; import isArray from 'lodash/isArray'; import noop from 'lodash/noop'; import omit from 'lodash/omit'; import ConfigContext from '../../../../../es/config-provider/ConfigContext'; import Icon from '../../../../../es/icon'; import Tag from '../../../../../es/tag'; import isSampleEmpty from '../../../_util/isEmpty'; import { $l } from '../../../locale-context'; import Button from '../../../button'; import Select from '../../../select'; import Modal from '../../../modal'; import TextField from '../../../text-field'; import { ValueChangeAction } from '../../../text-field/enum'; import Dropdown from '../../../dropdown'; import Menu from '../../../menu'; import Form from '../../../form'; import Switch from '../../../switch'; import SelectBox from '../../../select-box'; import Record from '../../../data-set/Record'; import { RecordStatus } from '../../../data-set/enum'; import { hide, show } from '../../../tooltip/singleton'; import isOverflow from '../../../overflow-tip/util'; import { EXPTYPE, isEqualDynamicProps, omitData, ORIGINALVALUEOBJ, parseValue, processFilterParam, SEARCHEXP, SEARCHTEXT, SELECTCHANGE, SELECTFIELDS, stringifyValue } from '../TableDynamicFilterBar'; import Store from './QuickFilterMenuContext'; import { AdvancedFieldSet } from './QuickFilterDataSet'; var modalKey = Modal.key(); /** * 判断查询值是否为空 * @param value */ function isEmpty(value) { return isArray(value) ? !value.length : isSampleEmpty(value); } /** * 根据数据查找需要处理的字段对象 * @param queryDataSet * @param data */ function findFieldObj(queryDataSet, data) { var name = data[0]; var value = data[1]; if (!queryDataSet.fields.has(data[0]) && isObject(data[1]) && !isEnumEmpty(data[1]) && !isArray(data[1])) { name = "".concat(data[0], ".").concat(Object.keys(data[1])[0]); value = Object.values(data[1])[0]; } var field = queryDataSet.getField(name); if (field && field.get('lovCode')) { var _value2; var textField = field.get('textField'); var valueField = field.get('valueField'); var multipleValue = []; if (field.get('multiple')) { multipleValue = value.map(function (obj) { var _ref; return _ref = {}, _defineProperty(_ref, valueField, obj[valueField]), _defineProperty(_ref, textField, obj[textField]), _ref; }); return { name: name, value: multipleValue }; } if (isObject(value)) { var _value; return { name: name, value: (_value = {}, _defineProperty(_value, valueField, value[valueField]), _defineProperty(_value, textField, value[textField]), _value) }; } return { name: name, value: (_value2 = {}, _defineProperty(_value2, valueField, value), _defineProperty(_value2, textField, value), _value2) }; } if (field && field.get('ignore') !== 'always') { return { name: name, value: value }; } } /** * 当前数据是否有值并需要选中 * @param data */ function isSelect(data) { if (isObject(data[1])) { return !isEnumEmpty(data[1]); } return data[0] !== '__dirty' && !isEmpty(data[1]); } /** * 编辑/新建筛选弹窗 * @param modal * @param menuDataSet * @param queryDataSet * @param onLoadData * @param type * @param selectFields * @constructor */ var ModalContent = function ModalContent(_ref2) { var modal = _ref2.modal, newFilterDataSet = _ref2.newFilterDataSet, menuDataSet = _ref2.menuDataSet, record = _ref2.record, queryDataSet = _ref2.queryDataSet, dataSet = _ref2.dataSet, onLoadData = _ref2.onLoadData, type = _ref2.type, selectFields = _ref2.selectFields; var _useContext = useContext(ConfigContext), getConfig = _useContext.getConfig; modal.handleOk( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() { var putData, statusKey, statusAdd, statusUpdate, shouldSaveValue, status, fuzzySrearchValue, fuzzySrearchData, conditionData, hasValueFields, filterData, otherRecord, res; return _regeneratorRuntime.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: putData = []; statusKey = getConfig('statusKey'); statusAdd = getConfig('status').add; statusUpdate = getConfig('status').update; shouldSaveValue = menuDataSet.current.get('saveFilterValue'); status = {}; status[statusKey] = statusAdd; fuzzySrearchValue = dataSet.getState(SEARCHTEXT); fuzzySrearchData = [_objectSpread({ fieldName: SEARCHTEXT, comparator: 'EQUAL', value: fuzzySrearchValue }, status)]; if (type !== 'edit') { conditionData = Object.entries(omit(queryDataSet.current.toData(), ['__dirty'])); map(conditionData, function (data) { if (isSelect(data)) { var fieldObj = findFieldObj(queryDataSet, data); if (fieldObj && fieldObj.name) { putData.push(_objectSpread({ comparator: 'EQUAL', fieldName: fieldObj.name, value: shouldSaveValue ? stringifyValue(fieldObj.value) : '' }, status)); } } }); hasValueFields = putData.map(function (pt) { return pt.fieldName; }); map(selectFields, function (fieldName) { var value = queryDataSet.current.get(fieldName); // 加入空值勾选字段 if (!hasValueFields.includes(fieldName)) { putData.push(_objectSpread({ comparator: 'EQUAL', fieldName: fieldName, value: shouldSaveValue ? stringifyValue(value) : '' }, status)); } }); } // 处理过滤条件 filterData = []; if (newFilterDataSet) { filterData = newFilterDataSet.map(function (filterRecord) { if (filterRecord.status !== RecordStatus.sync) { var _status = {}; _status[statusKey] = filterRecord.status === RecordStatus.add ? statusAdd : statusUpdate; return _objectSpread({ fieldName: filterRecord.get(AdvancedFieldSet.fieldName), comparator: filterRecord.get(AdvancedFieldSet.comparator), conditionType: filterRecord.get(AdvancedFieldSet.conditionType), value: filterRecord.get('value') }, _status); } return null; }); } // 另存为 if (type === 'save') { otherRecord = menuDataSet.current.clone(); otherRecord.set('conditionList', [].concat(putData, _toConsumableArray(filterData))); otherRecord.set('queryList', fuzzySrearchData); menuDataSet.current.reset(); menuDataSet.create(_objectSpread({}, omitData(otherRecord.toData()))); // 新建 } else if (type === 'create') { menuDataSet.current.set('conditionList', [].concat(putData, _toConsumableArray(filterData))); if (fuzzySrearchValue) menuDataSet.current.set('queryList', fuzzySrearchData); } _context.next = 15; return menuDataSet.submit(); case 15: res = _context.sent; if (!(res && res.success)) { _context.next = 19; break; } onLoadData(res.content ? res.content[0].searchId : undefined); return _context.abrupt("return", true); case 19: return _context.abrupt("return", !(res && res.failed || !res)); case 20: case "end": return _context.stop(); } } }, _callee); }))); modal.handleCancel(function () { menuDataSet.reset(); }); return /*#__PURE__*/React.createElement(Form, { record: record || menuDataSet.current }, /*#__PURE__*/React.createElement(TextField, { style: { width: '100%' }, name: "searchName", placeholder: $l('Table', 'please_enter'), showLengthInfo: true, valueChangeAction: ValueChangeAction.input }), /*#__PURE__*/React.createElement(SelectBox, { name: "saveFilterValue" }, /*#__PURE__*/React.createElement(SelectBox.Option, { value: 1 }, $l('Table', 'query_option_yes')), /*#__PURE__*/React.createElement(SelectBox.Option, { value: 0 }, $l('Table', 'query_option_no'))), /*#__PURE__*/React.createElement(Switch, { name: "defaultFlag", hidden: type === 'edit' })); }; ModalContent.displayName = 'ModalContent'; export var MemoModalContent = /*#__PURE__*/memo(ModalContent); /** * 快速筛选下拉 */ var QuickFilterMenu = function QuickFilterMenu() { var _useContext2 = useContext(ConfigContext), getConfig = _useContext2.getConfig; var _useContext3 = useContext(Store), tempQueryFields = _useContext3.tempQueryFields, autoQuery = _useContext3.autoQuery, dataSet = _useContext3.dataSet, menuDataSet = _useContext3.menuDataSet, prefixCls = _useContext3.prefixCls, queryDataSet = _useContext3.queryDataSet, filterMenuDataSet = _useContext3.filterMenuDataSet, conditionDataSet = _useContext3.conditionDataSet, newFilterDataSet = _useContext3.newFilterDataSet, _useContext3$onChange = _useContext3.onChange, onChange = _useContext3$onChange === void 0 ? noop : _useContext3$onChange, conditionStatus = _useContext3.conditionStatus, _useContext3$onStatus = _useContext3.onStatusChange, onStatusChange = _useContext3$onStatus === void 0 ? noop : _useContext3$onStatus, selectFields = _useContext3.selectFields, _useContext3$onOrigin = _useContext3.onOriginalChange, onOriginalChange = _useContext3$onOrigin === void 0 ? noop : _useContext3$onOrigin, _useContext3$initCond = _useContext3.initConditionFields, initConditionFields = _useContext3$initCond === void 0 ? noop : _useContext3$initCond, optionDataSet = _useContext3.optionDataSet, shouldLocateData = _useContext3.shouldLocateData, refEditors = _useContext3.refEditors, _useContext3$searchTe = _useContext3.searchText, searchText = _useContext3$searchTe === void 0 ? 'params' : _useContext3$searchTe, _useContext3$loadCond = _useContext3.loadConditionData, loadConditionData = _useContext3$loadCond === void 0 ? noop : _useContext3$loadCond, defaultActiveKey = _useContext3.defaultActiveKey, _useContext3$onReset = _useContext3.onReset, onReset = _useContext3$onReset === void 0 ? noop : _useContext3$onReset; var isChooseMenu = filterMenuDataSet && filterMenuDataSet.current && filterMenuDataSet.current.get('filterName'); var isTenant = menuDataSet && menuDataSet.current && menuDataSet.current.get('isTenant'); var shouldSaveValue = menuDataSet && menuDataSet.current && menuDataSet.current.get('saveFilterValue'); /** * 替换个性化字段 * @param conditionList */ var initCustomFields = function initCustomFields(conditionList) { var fields = conditionList.map(function (condition) { return _objectSpread(_objectSpread({}, condition), {}, { name: condition.fieldName, defaultValue: condition.value }); }); runInAction(function () { queryDataSet.fields = observable.map(conditionList ? queryDataSet.initFields(fields) : undefined); }); }; /** * queryDS 筛选赋值并更新初始勾选项 * @param init */ var conditionAssign = /*#__PURE__*/function () { var _ref4 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(init) { var current, shouldQuery, orgObj, conditionList, initData, tenantSelectFields, _isTenant, currentQueryRecord, emptyRecord, _emptyRecord, hasFocus, _iterator, _step, _step$value, key, value; return _regeneratorRuntime.wrap(function _callee2$(_context2) { while (1) { switch (_context2.prev = _context2.next) { case 0: onOriginalChange(); current = menuDataSet.current; shouldQuery = false; // 重置模糊搜素并判断是否查询 orgObj = dataSet.getState(ORIGINALVALUEOBJ); shouldQuery = dataSet.getState(SEARCHTEXT) !== orgObj.fuzzy; dataSet.setState(SEARCHTEXT, orgObj.fuzzy); dataSet.setQueryParameter(searchText, orgObj.fuzzy); // 重置高级搜索并判断是否查询 shouldQuery = shouldQuery || newFilterDataSet.dirty; if (newFilterDataSet.dirty) { newFilterDataSet.reset(); processFilterParam(dataSet); } if (!current) { _context2.next = 36; break; } conditionList = current.get('conditionList'); initData = {}; tenantSelectFields = []; _isTenant = current.get('isTenant'); if (_isTenant) { initCustomFields(conditionList); } else if (tempQueryFields) { runInAction(function () { queryDataSet.fields = tempQueryFields; }); } currentQueryRecord = queryDataSet.current; if (conditionList && conditionList.length) { map(conditionList, function (condition) { if (condition.comparator === 'EQUAL') { var fieldName = condition.fieldName, value = condition.value; initData[fieldName] = parseValue(value); onChange(fieldName); } if (condition.usedFlag) { tenantSelectFields.push(condition.fieldName); } }); onOriginalChange(Object.keys(initData)); emptyRecord = new Record(_objectSpread({}, initData), queryDataSet); dataSet.setState(SELECTFIELDS, _isTenant ? tenantSelectFields : Object.keys(initData)); queryDataSet.setState(SELECTFIELDS, _isTenant ? tenantSelectFields : Object.keys(initData)); shouldQuery = shouldQuery || !isEqualDynamicProps(initData, currentQueryRecord ? omit(currentQueryRecord.toData(true), ['__dirty']) : {}, queryDataSet, currentQueryRecord); runInAction(function () { queryDataSet.records.push(emptyRecord); queryDataSet.current = emptyRecord; }); if (_isTenant) { initConditionFields({ dataSet: queryDataSet, record: queryDataSet.current }); } onStatusChange(RecordStatus.sync, emptyRecord.toData()); } else { shouldQuery = shouldQuery || !isEqualDynamicProps(initData, currentQueryRecord ? omit(currentQueryRecord.toData(true), ['__dirty']) : {}, queryDataSet, currentQueryRecord); _emptyRecord = new Record({}, queryDataSet); dataSet.setState(SELECTFIELDS, []); queryDataSet.setState(SELECTFIELDS, []); runInAction(function () { queryDataSet.records.push(_emptyRecord); queryDataSet.current = _emptyRecord; }); onStatusChange(RecordStatus.sync); } if (!(!init && shouldQuery && autoQuery)) { _context2.next = 36; break; } _context2.next = 20; return dataSet.modifiedCheck(undefined, dataSet, 'query'); case 20: _context2.t2 = _context2.sent; if (!_context2.t2) { _context2.next = 23; break; } _context2.t2 = queryDataSet; case 23: _context2.t1 = _context2.t2; if (!_context2.t1) { _context2.next = 26; break; } _context2.t1 = queryDataSet.current; case 26: _context2.t0 = _context2.t1; if (!_context2.t0) { _context2.next = 31; break; } _context2.next = 30; return queryDataSet.current.validate(); case 30: _context2.t0 = _context2.sent; case 31: if (!_context2.t0) { _context2.next = 35; break; } dataSet.query(); _context2.next = 36; break; case 35: if (refEditors) { hasFocus = false; _iterator = _createForOfIteratorHelper(refEditors.entries()); try { for (_iterator.s(); !(_step = _iterator.n()).done;) { _step$value = _slicedToArray(_step.value, 2), key = _step$value[0], value = _step$value[1]; if (value && !value.valid && !hasFocus) { refEditors.get(key).focus(); hasFocus = true; } } } catch (err) { _iterator.e(err); } finally { _iterator.f(); } } case 36: case "end": return _context2.stop(); } } }, _callee2); })); return function conditionAssign(_x) { return _ref4.apply(this, arguments); }; }(); var handleQueryReset = /*#__PURE__*/function () { var _ref5 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3() { var first, hasFocus, _iterator2, _step2, _step2$value, key, value; return _regeneratorRuntime.wrap(function _callee3$(_context3) { while (1) { switch (_context3.prev = _context3.next) { case 0: if (!(filterMenuDataSet && filterMenuDataSet.current && filterMenuDataSet.current.get('filterName'))) { _context3.next = 4; break; } // 筛选项重置重新赋值 conditionAssign(); _context3.next = 28; break; case 4: /** * 未选择或清除筛选项 * 重置初始勾选项及初始赋值 */ if (tempQueryFields) { runInAction(function () { queryDataSet.fields = tempQueryFields; }); } queryDataSet.locate(0); menuDataSet.current = undefined; first = queryDataSet.get(0); if (first) { first.reset(); } onOriginalChange(); setFuzzyQuery(); if (newFilterDataSet.dirty) { newFilterDataSet.reset(); processFilterParam(dataSet); } if (!autoQuery) { _context3.next = 28; break; } _context3.next = 15; return dataSet.modifiedCheck(undefined, dataSet, 'query'); case 15: _context3.t1 = _context3.sent; if (!_context3.t1) { _context3.next = 18; break; } _context3.t1 = queryDataSet.current; case 18: _context3.t0 = _context3.t1; if (!_context3.t0) { _context3.next = 23; break; } _context3.next = 22; return queryDataSet.current.validate(); case 22: _context3.t0 = _context3.sent; case 23: if (!_context3.t0) { _context3.next = 27; break; } dataSet.query(); _context3.next = 28; break; case 27: if (refEditors) { hasFocus = false; _iterator2 = _createForOfIteratorHelper(refEditors.entries()); try { for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { _step2$value = _slicedToArray(_step2.value, 2), key = _step2$value[0], value = _step2$value[1]; if (value && !value.valid && !hasFocus) { refEditors.get(key).focus(); hasFocus = true; } } } catch (err) { _iterator2.e(err); } finally { _iterator2.f(); } } case 28: onStatusChange(RecordStatus.sync); onReset(); case 30: case "end": return _context3.stop(); } } }, _callee3); })); return function handleQueryReset() { return _ref5.apply(this, arguments); }; }(); /** * 模糊搜索是否变更 * @returns */ var isFuzzyQueryChange = function isFuzzyQueryChange() { var menuRecord = menuDataSet && menuDataSet.current; if (menuRecord && menuRecord.get('queryList') && menuRecord.get('queryList').length) { var searchObj = menuRecord.get('queryList').find(function (ql) { return ql.fieldName === SEARCHTEXT; }); return searchObj ? searchObj.value !== dataSet.getState(SEARCHTEXT) : false; } return dataSet.getState(SEARCHTEXT) === null; }; /** * 赋值模糊搜索 * @param menuRecord */ var setFuzzyQuery = function setFuzzyQuery(menuRecord) { var searchTextValue = null; if (menuRecord && menuRecord.get('queryList') && menuRecord.get('queryList').length) { var searchObj = menuRecord.get('queryList').find(function (ql) { return ql.fieldName === SEARCHTEXT; }); searchTextValue = searchObj ? searchObj.value : null; } // 切换数据更新初始化模糊搜索 var newObj = dataSet.getState(ORIGINALVALUEOBJ); dataSet.setState(ORIGINALVALUEOBJ, _objectSpread(_objectSpread({}, newObj), {}, { fuzzy: searchTextValue })); dataSet.setState(SEARCHTEXT, searchTextValue); dataSet.setQueryParameter(searchText, searchTextValue); }; /** * 定位数据源 * @param searchId * @param init 初始化 */ var locateData = function locateData(searchId, init) { var current = filterMenuDataSet ? filterMenuDataSet.current : undefined; if (searchId) { menuDataSet.locate(menuDataSet.findIndex(function (menu) { return menu.get('searchId').toString() === searchId.toString(); })); var menuRecord = menuDataSet.current; if (menuRecord) { loadConditionData({ menuRecord: menuRecord, conditionDataSet: conditionDataSet, newFilterDataSet: newFilterDataSet, dataSet: dataSet, searchText: searchText }); } if (current) { current.set('filterName', searchId); } conditionAssign(init); } else if (searchId === null) { handleQueryReset(); } else { var defaultMenus = menuDataSet ? menuDataSet.filter(function (menu) { return defaultActiveKey ? menu.get('searchId') === defaultActiveKey : menu.get('defaultFlag'); }) : []; var defaultMenu = defaultMenus.length > 1 ? defaultMenus.find(function (menu) { return menu.get('isTenant') !== 1; }).index : defaultMenus.length && defaultMenus[0].index; if (defaultMenus.length && defaultMenu !== -1) { menuDataSet.locate(defaultMenu); var _menuRecord = menuDataSet.current; if (_menuRecord) { loadConditionData({ menuRecord: _menuRecord, conditionDataSet: conditionDataSet, newFilterDataSet: newFilterDataSet, dataSet: dataSet, searchText: searchText }); if (current) { current.set('filterName', _menuRecord.get('searchId')); } } conditionAssign(init); } else if (current) { current.set('filterName', undefined); setFuzzyQuery(); } } }; /** * 加载筛选数据并赋值查询 * @param searchId */ var loadData = /*#__PURE__*/function () { var _ref6 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee4(searchId) { var result, menuRecord, current; return _regeneratorRuntime.wrap(function _callee4$(_context4) { while (1) { switch (_context4.prev = _context4.next) { case 0: _context4.next = 2; return menuDataSet.query(); case 2: result = _context4.sent; if (optionDataSet) { optionDataSet.loadData(result); } menuRecord = menuDataSet.current; if (menuRecord) { loadConditionData({ menuRecord: menuRecord, conditionDataSet: conditionDataSet, newFilterDataSet: newFilterDataSet, dataSet: dataSet, searchText: searchText }); } if (result && result.length) { locateData(searchId); } else { current = filterMenuDataSet.current; if (current) current.set('filterName', undefined); locateData(searchId); if (dataSet.props.autoQuery) { dataSet.query(); } } case 7: case "end": return _context4.stop(); } } }, _callee4); })); return function loadData(_x2) { return _ref6.apply(this, arguments); }; }(); var handleChange = function handleChange(value) { var current = queryDataSet.current; if (current) { current.reset(); } locateData(value); }; /** * 删除该条筛选 * @param record 下拉数据源 */ function handleDelete(_x3) { return _handleDelete.apply(this, arguments); } function _handleDelete() { _handleDelete = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee7(record) { var searchId, menuRecord, currentId, delRecord; return _regeneratorRuntime.wrap(function _callee7$(_context7) { while (1) { switch (_context7.prev = _context7.next) { case 0: searchId = record.get('searchId'); menuRecord = menuDataSet.current; if (menuRecord) { currentId = menuRecord.get('searchId').toString(); searchId = record.get('searchId').toString() === currentId ? null : currentId; } else if (typeof menuRecord === 'undefined') { searchId = undefined; } delRecord = menuDataSet.find(function (menu) { return menu.get('searchId').toString() === record.get('searchId').toString(); }); _context7.next = 6; return menuDataSet["delete"](delRecord, "".concat($l('Table', 'whether_delete_filter'), "\uFF1A").concat(record.get('searchName'), "\uFF1F")); case 6: loadData(searchId); case 7: case "end": return _context7.stop(); } } }, _callee7); })); return _handleDelete.apply(this, arguments); } function getTitle(type) { switch (type) { case 'create': return $l('Table', 'save_filter'); case 'edit': return $l('Table', 'filter_edit'); default: return $l('Table', 'save_filter_as'); } } function openModal(type, searchId, record) { if (searchId) { menuDataSet.locate(menuDataSet.findIndex(function (menu) { return menu.get('searchId').toString() === searchId.toString(); })); var menuRecord = menuDataSet.current; if (menuRecord) { loadConditionData({ menuRecord: menuRecord, conditionDataSet: conditionDataSet, newFilterDataSet: newFilterDataSet, dataSet: dataSet, searchText: searchText }); } } Modal.open({ key: modalKey, closable: true, title: getTitle(type), children: /*#__PURE__*/React.createElement(MemoModalContent, { type: type, menuDataSet: menuDataSet, conditionDataSet: conditionDataSet, newFilterDataSet: newFilterDataSet, onLoadData: loadData, queryDataSet: queryDataSet, dataSet: dataSet, record: record, selectFields: selectFields }), okFirst: false, destroyOnClose: true }); } var handleSave = /*#__PURE__*/function () { var _ref7 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee5() { var filterMenuRecord, current, conditionData, putData, statusKey, statusAdd, statusUpdate, menuRecord, filterData, fuzzySrearchValue, fuzzySrearchData, res; return _regeneratorRuntime.wrap(function _callee5$(_context5) { while (1) { switch (_context5.prev = _context5.next) { case 0: filterMenuRecord = filterMenuDataSet ? filterMenuDataSet.current : undefined; if (!((!filterMenuRecord || !filterMenuRecord.get('filterName')) && menuDataSet)) { _context5.next = 6; break; } openModal('create', '', menuDataSet.create({ conExpression: dataSet.getState(SEARCHEXP) ? dataSet.getState(SEARCHEXP) : dataSet.getState(EXPTYPE) || 'all' })); menuDataSet.setState('noLocate', true); _context5.next = 26; break; case 6: current = queryDataSet.current; if (!(current && conditionDataSet)) { _context5.next = 25; break; } conditionData = Object.entries(omit(current.toData(), ['__dirty'])); conditionDataSet.reset(); conditionDataSet.map(function (record) { if (!selectFields || !selectFields.includes(record.get('fieldName'))) { conditionDataSet.remove(record); } return null; }); map(conditionData, function (data) { var fieldObj = findFieldObj(queryDataSet, data); if (fieldObj) { var name = fieldObj.name; if (name) { var currentRecord = conditionDataSet.find(function (record) { return record.get('fieldName') === name; }); if (currentRecord) { currentRecord.set('value', fieldObj.value); } else if (isSelect(data)) { conditionDataSet.create({ fieldName: name, value: fieldObj.value }); } } } }); putData = []; statusKey = getConfig('statusKey'); statusAdd = getConfig('status').add; statusUpdate = getConfig('status').update; map(selectFields, function (fieldName) { var value = current.get(fieldName); var status = {}; var toJSONFields = conditionDataSet.toJSONData().map(function (condition) { return condition.fieldName; }); status[statusKey] = statusAdd; // 处理空值已勾选条件 if (!toJSONFields.includes(fieldName)) { putData.push(_objectSpread({ comparator: 'EQUAL', fieldName: fieldName, value: value }, status)); } }); menuRecord = menuDataSet.current; if (menuRecord) { filterData = []; if (newFilterDataSet) { filterData = newFilterDataSet.map(function (filterRecord) { if (filterRecord.status !== RecordStatus.sync) { var status = {}; status[statusKey] = filterRecord.status === RecordStatus.add ? statusAdd : statusUpdate; return _objectSpread({ fieldName: filterRecord.get(AdvancedFieldSet.fieldName), comparator: filterRecord.get(AdvancedFieldSet.comparator), conditionType: filterRecord.get(AdvancedFieldSet.conditionType), value: filterRecord.get('value') }, status); } return null; }); } menuRecord.set('conditionList', [].concat(_toConsumableArray(conditionDataSet.toJSONData()), putData, _toConsumableArray(filterData))); // 保存模糊搜素值 fuzzySrearchValue = dataSet.getState(SEARCHTEXT); fuzzySrearchData = [{ fieldName: SEARCHTEXT, comparator: 'EQUAL', value: fuzzySrearchValue, status: statusUpdate }]; menuRecord.set('queryList', fuzzySrearchData); } _context5.next = 21; return menuDataSet.submit(); case 21: res = _context5.sent; if (res && res.success) { loadData(res.content ? res.content[0].searchId : undefined); } _context5.next = 26; break; case 25: dataSet.query(); case 26: case "end": return _context5.stop(); } } }, _callee5); })); return function handleSave() { return _ref7.apply(this, arguments); }; }(); /** * 重命名,定位到重命名记录 * @param record */ var handleEdit = function handleEdit(record) { locateData(record.get('searchId')); openModal('edit', record.get('searchId')); }; var handleSaveOther = function handleSaveOther() { var current = menuDataSet.current; if (current) { var searchName = current.get('searchName'); current.set('searchName', "".concat(searchName, "_copy")); } openModal('save'); }; useEffect(function () { var status = menuDataSet ? !menuDataSet.getState('noLocate') : true; if (shouldLocateData && status) { locateData(undefined, true); } }, [shouldLocateData, menuDataSet && menuDataSet.length]); /** * 默认设置 * @param defaultFlag * @param record */ var setDefaultFlag = /*#__PURE__*/function () { var _ref8 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee6(defaultFlag, record) { var currentRecord, res, result; return _regeneratorRuntime.wrap(function _callee6$(_context6) { while (1) { switch (_context6.prev = _context6.next) { case 0: record.set('defaultFlag', defaultFlag); currentRecord = menuDataSet.find(function (menu) { return menu.get('searchId').toString() === record.get('searchId').toString(); }); if (currentRecord) { currentRecord.set('defaultFlag', defaultFlag); } _context6.next = 5; return menuDataSet.submit(); case 5: res = _context6.sent; _context6.next = 8; return menuDataSet.query(); case 8: result = _context6.sent; if (optionDataSet) { optionDataSet.loadData(result); } if (res && res.failed || !res) { record.reset(); if (currentRecord) { currentRecord.reset(); } } case 11: case "end": return _context6.stop(); } } }, _callee6); })); return function setDefaultFlag(_x4, _x5) { return _ref8.apply(this, arguments); }; }(); /** * 渲染下拉选项 * @param record * @param text */ var optionRenderer = function optionRenderer(_ref9) { var record = _ref9.record, text = _ref9.text; var filterMenuRecord = filterMenuDataSet ? filterMenuDataSet.current : undefined; var isSelected = String(filterMenuRecord && filterMenuRecord.get('filterName')) === String(record.get('searchId')); var isDefault = record.get('defaultFlag') === 1; var isTenant = record.get('isTenant') === $l('Table', 'preset'); var menu = /*#__PURE__*/React.createElement(Menu, { onClick: function onClick(_ref10) { var key = _ref10.key, domEvent = _ref10.domEvent; domEvent.preventDefault(); domEvent.stopPropagation(); if (key === 'filter_default') { setDefaultFlag(record.get('defaultFlag') ? 0 : 1, record); } else if (key === 'filter_edit') { handleEdit(record); } else { handleDelete(record); } } }, /*#__PURE__*/React.createElement(Menu.Item, { key: 'filter_default' }, record.get('defaultFlag') ? $l('Table', 'cancel_default') : $l('Table', 'set_default')), /*#__PURE__*/React.createElement(Menu.Item, { key: 'filter_edit' }, $l('Table', 'filter_edit')), /*#__PURE__*/React.createElement(Menu.Item, { key: 'filter_delete' }, $l('Table', 'delete_button'))); return /*#__PURE__*/React.createElement("div", { className: "".concat(prefixCls, "-filter-menu-option") }, /*#__PURE__*/React.createElement("span", { className: "".concat(prefixCls, "-filter-menu-option-content"), onMouseEnter: function onMouseEnter(e) { var currentTarget = e.currentTarget; if (isOverflow(currentTarget)) { show(currentTarget, { title: text }); } }, onMouseLeave: function onMouseLeave() { return hide(); } }, text), isDefault && /*#__PURE__*/React.createElement(Tag, null, $l('Table', 'default_flag')), isSelected && /*#__PURE__*/React.createElement("div", { className: "".concat(prefixCls, "-filter-menu-option-selected") }, /*#__PURE__*/React.createElement(Icon, { type: "check" })), !isTenant && /*#__PURE__*/React.createElement("div", { className: "".concat(prefixCls, "-filter-menu-option-icons") }, /*#__PURE__*/React.createElement(Dropdown, { overlay: menu }, /*#__PURE__*/React.createElement("span", { style: { userSelect: 'none' } }, /*#__PURE__*/React.createElement(Icon, { type: "more_horiz" }))))); }; // 租户预置筛选,无保存按钮和另存为 return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Select, { isFlat: true, placeholder: $l('Table', 'fast_filter'), className: "".concat(prefixCls, "-filterName-select"), dataSet: filterMenuDataSet, name: "filterName", dropdownMatchSelectWidth: false, dropdownMenuStyle: { width: '1.72rem' }, optionRenderer: optionRenderer, onChange: handleChange, notFoundContent: $l('Table', 'no_save_filter') }), conditionStatus === RecordStatus.update ? /*#__PURE__*/React.createElement(Tag, { className: "".concat(prefixCls, "-filter-status") }, /*#__PURE__*/React.createElement("span", null, $l('Table', 'modified'))) : null, conditionStatus === RecordStatus.update && /*#__PURE__*/React.createElement("div", { className: "".concat(prefixCls, "-filter-buttons") }, isChooseMenu && (isTenant ? null : /*#__PURE__*/React.createElement(Button, { onClick: handleSaveOther }, $l('Table', 'save_as'))), !isFuzzyQueryChange() && (isChooseMenu ? isTenant || conditionStatus === RecordStatus.update && dataSet.getState(SELECTCHANGE) && !shouldSaveValue && menuDataSet && menuDataSet.length : false) ? null : /*#__PURE__*/React.createElement(Button, { onClick: handleSave, hidden: isTenant }, $l('Table', 'save_button')), /*#__PURE__*/React.createElement(Button, { onClick: handleQueryReset }, $l('Table', 'reset_button')))); }; QuickFilterMenu.displayName = 'QuickFilterMenu'; export default observer(QuickFilterMenu); //# sourceMappingURL=QuickFilterMenu.js.map