UNPKG

choerodon-ui

Version:

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

1,377 lines (1,108 loc) 111 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"]; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard")["default"]; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = exports.SELECTFIELDS = exports.SELECTCHANGE = exports.SEARCHTEXT = exports.SEARCHEXP = exports.ORIGINALVALUEOBJ = exports.OPTIONDATASET = exports.NEWFILTERDATASET = exports.MENURESULT = exports.MENUDATASET = exports.FILTERMENUDATASET = exports.EXPTYPE = exports.CONDITIONSTATUS = exports.CONDITIONDATASET = void 0; exports.fieldIsDisabled = fieldIsDisabled; exports.isEqualDynamicProps = isEqualDynamicProps; exports.isSelect = isSelect; exports.omitData = omitData; exports.parseValue = parseValue; exports.processFilterParam = processFilterParam; exports.stringifyValue = stringifyValue; var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); var _createForOfIteratorHelper2 = _interopRequireDefault(require("@babel/runtime/helpers/createForOfIteratorHelper")); var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties")); var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _objectSpread3 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2")); var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray")); var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits")); var _createSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/createSuper")); var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof")); var _tslib = require("tslib"); var _react = _interopRequireWildcard(require("react")); var _mobxReact = require("mobx-react"); var _mobx = require("mobx"); var _uniq = _interopRequireDefault(require("lodash/uniq")); var _pull = _interopRequireDefault(require("lodash/pull")); var _noop = _interopRequireDefault(require("lodash/noop")); var _map = _interopRequireDefault(require("lodash/map")); var _isObject = _interopRequireDefault(require("lodash/isObject")); var _isEmpty2 = _interopRequireDefault(require("lodash/isEmpty")); var _isNumber = _interopRequireDefault(require("lodash/isNumber")); var _isFunction = _interopRequireDefault(require("lodash/isFunction")); var _isEqual = _interopRequireDefault(require("lodash/isEqual")); var _isArray = _interopRequireDefault(require("lodash/isArray")); var _isString = _interopRequireDefault(require("lodash/isString")); var _omit = _interopRequireDefault(require("lodash/omit")); var _defer = _interopRequireDefault(require("lodash/defer")); var _difference = _interopRequireDefault(require("lodash/difference")); var _isUndefined = _interopRequireDefault(require("lodash/isUndefined")); var _isNil = _interopRequireDefault(require("lodash/isNil")); var _classnames = _interopRequireDefault(require("classnames")); var _ConfigContext = _interopRequireDefault(require("../../../../lib/config-provider/ConfigContext")); var _utils = require("../../../../lib/configure/utils"); var _UnitConvertor = require("../../../../lib/_util/UnitConvertor"); var _icon = _interopRequireDefault(require("../../../../lib/icon")); var _enum = require("../../../../lib/trigger/enum"); var _popover = _interopRequireDefault(require("../../../../lib/popover")); var _tag = _interopRequireDefault(require("../../../../lib/tag")); var _DataSet = _interopRequireDefault(require("../../data-set/DataSet")); var _enum2 = require("../../data-set/enum"); var _button = _interopRequireDefault(require("../../button")); var _dropdown = _interopRequireDefault(require("../../dropdown")); var _textField = _interopRequireDefault(require("../../text-field")); var _enum3 = require("../../text-field/enum"); var _tooltip = _interopRequireDefault(require("../../tooltip")); var _enum4 = require("../../core/enum"); var _localeContext = require("../../locale-context"); var _autobind = _interopRequireDefault(require("../../_util/autobind")); var _isEmpty3 = _interopRequireDefault(require("../../_util/isEmpty")); var _FieldList = _interopRequireDefault(require("./FieldList")); var _TableButtons = _interopRequireDefault(require("./TableButtons")); var _ColumnFilter = _interopRequireDefault(require("./ColumnFilter")); var _QuickFilterMenu = _interopRequireDefault(require("./quick-filter/QuickFilterMenu")); var _QuickFilterMenuContext = _interopRequireDefault(require("./quick-filter/QuickFilterMenuContext")); var _QuickFilterDataSet = require("./quick-filter/QuickFilterDataSet"); var _singleton = require("../../tooltip/singleton"); var _enum5 = require("../../field/enum"); var _utils2 = require("../../field/utils"); var _select = _interopRequireDefault(require("../../select")); var _tree = _interopRequireDefault(require("../../tree")); var _enum6 = require("../../button/enum"); var _Operator = require("./quick-filter/Operator"); var _utils3 = require("../utils"); var _enum7 = require("../../form/enum"); var _enum8 = require("../../trigger-field/enum"); var _CombineSort = _interopRequireDefault(require("./CombineSort")); var _excluded = ["fieldName", "value", "conditionType", "comparator"]; /** * 当前数据是否有值并需要选中 * @param data */ function isSelect(data) { if ((0, _isObject["default"])(data[1])) { return !(0, _isEmpty2["default"])(data[1]); } return data[0] !== '__dirty' && !(0, _isEmpty3["default"])(data[1]); } function isEqualDynamicProps(originalValue, newValue, dataSet, record, name) { if ((0, _isEqual["default"])(newValue, originalValue)) { return true; } if ((0, _isObject["default"])(newValue) && (0, _isObject["default"])(originalValue) && Object.keys(newValue).length) { var combineKeys = (0, _uniq["default"])(Object.keys(newValue).concat(Object.keys(originalValue))); return combineKeys.every(function (key) { var value = (0, _mobx.toJS)(newValue[key]); var oldValue = (0, _mobx.toJS)(originalValue[key]); if (oldValue === value) { return true; } if ((0, _isEmpty3["default"])(oldValue) && (0, _isEmpty3["default"])(value)) { return true; } if (name && name.includes('.')) { return (0, _isEmpty3["default"])(oldValue) && (0, _isEmpty3["default"])(record.get(name)); } if ((0, _isNumber["default"])(oldValue) || (0, _isNumber["default"])(value)) { var oEp = (0, _isNumber["default"])(oldValue) ? (0, _isEmpty3["default"])(oldValue) : (0, _isEmpty2["default"])(oldValue); var nEp = (0, _isNumber["default"])(value) ? (0, _isEmpty3["default"])(value) : (0, _isEmpty2["default"])(value); if (oEp && nEp) { return true; } return String(oldValue) === String(value); } var field = dataSet.getField(key); if (field && field.get('range', record)) { var rangeValue = value ? (0, _isArray["default"])(value) ? value.join('') : Object.values(value).join('') : ''; var rangeOldValue = oldValue ? (0, _isArray["default"])(oldValue) ? oldValue.join('') : Object.values(oldValue).join('') : ''; return rangeValue === rangeOldValue; } if (field && field.get('lovCode') && oldValue && value) { var valueField = dataSet.getField(key).get('valueField', record); var textField = dataSet.getField(key).get('textField', record); return value[valueField] === oldValue[valueField] && value[textField] === oldValue[textField]; } return (0, _isEqual["default"])(oldValue, value); }); } return (0, _isEqual["default"])(newValue, originalValue); } /** * 提交副本数据 * @param data */ function omitData(data) { return (0, _omit["default"])(data, 'creationDate', 'createdBy', 'lastUpdateDate', 'lastUpdatedBy', 'objectVersionNumber', '_token', 'searchId', 'searchConditionId', 'searchQueryId', 'searchOrderId'); } /** * obj 值使用 JSON 保存、获取赋值转化 * @param value */ function parseValue(value) { try { var res = JSON.parse(value); if ((0, _typeof2["default"])(res) === 'object') { return res; } return value; } catch (e) { return value; } } function stringifyValue(value) { if ((0, _typeof2["default"])(value) === 'object') { return JSON.stringify(value); } return value; } /** * 处理查询过滤条件 * @params */ function processFilterParam(dataSet) { var newFilterDataSet = dataSet.getState(NEWFILTERDATASET); // 处理公式参数 var searchExp = ''; var expType = dataSet.getState(EXPTYPE); if (expType !== 'customize') { var joinStr = expType === 'all' || expType === undefined ? 'AND' : 'OR'; for (var i = 1; i <= newFilterDataSet.length; i++) { if (i === newFilterDataSet.length) { searchExp += i; } else { searchExp += i + joinStr; } } } else { searchExp = dataSet.getState(SEARCHEXP).toLocaleUpperCase().replace(/\s+/g, ''); } dataSet.setQueryParameter('search.exp', searchExp); // 处理字段参数 var searchFld = []; newFilterDataSet.map(function (record, index) { var dataObj = record.toData(); var name = dataObj[_QuickFilterDataSet.AdvancedFieldSet.fieldName]; var comparator = dataObj[_QuickFilterDataSet.AdvancedFieldSet.comparator]; var tableName = newFilterDataSet.getField(name).get('help', record); var value = ''; if ((0, _isObject["default"])(dataObj[name])) { if (!(0, _isArray["default"])(dataObj[name])) { value = dataObj[name][name]; } else { value = dataObj[name].map(function (arr) { return (0, _isObject["default"])(arr) ? arr[name] : arr; }); } } else { value = dataObj[name]; } var paramFieldName = tableName ? "".concat(tableName, ".").concat(name) : name; var searchValue = []; if ([_Operator.OPERATOR.IS_NULL.value, _Operator.OPERATOR.IS_NOT_NULL.value].includes(comparator) || value) { var enCodeValue = (0, _isNumber["default"])(value) ? value : value ? encodeURIComponent(value) : value; searchValue = [index + 1, paramFieldName, dataObj[_QuickFilterDataSet.AdvancedFieldSet.comparator], enCodeValue].filter(Boolean); } if (searchValue && searchValue.length) { searchFld.push(searchValue.join('@')); } return null; }); var searchFilParam = searchFld.join(','); dataSet.setQueryParameter('search.fld', searchFilParam); } /** * 查询字段是否禁用 * @param field 查询字段 * @param queryDataSet 查询dataSet * @returns */ function fieldIsDisabled(field, queryDataSet) { var record = queryDataSet.current; if (field) { var disabled = field.get('disabled', record); if (disabled) { return true; } var cascadeMap = field.get('cascadeMap', record); if (cascadeMap && (!record || Object.keys(cascadeMap).some(function (cascade) { if ((0, _isObject["default"])(record.get(cascadeMap[cascade]))) { return (0, _isEmpty2["default"])(record.get(cascadeMap[cascade])); } return (0, _isNil["default"])(record.get(cascadeMap[cascade])); }))) { return true; } } return false; } var CONDITIONSTATUS = '__CONDITIONSTATUS__'; exports.CONDITIONSTATUS = CONDITIONSTATUS; var SELECTFIELDS = '__SELECTFIELDS__'; exports.SELECTFIELDS = SELECTFIELDS; var MENUDATASET = '__MENUDATASET__'; exports.MENUDATASET = MENUDATASET; var CONDITIONDATASET = '__CONDITIONDATASET__'; exports.CONDITIONDATASET = CONDITIONDATASET; var OPTIONDATASET = '__OPTIONDATASET__'; exports.OPTIONDATASET = OPTIONDATASET; var FILTERMENUDATASET = '__FILTERMENUDATASET__'; exports.FILTERMENUDATASET = FILTERMENUDATASET; var MENURESULT = '__MENURESULT__'; exports.MENURESULT = MENURESULT; var SEARCHTEXT = '__SEARCHTEXT__'; exports.SEARCHTEXT = SEARCHTEXT; var SELECTCHANGE = '__SELECTCHANGE__'; exports.SELECTCHANGE = SELECTCHANGE; var EXPTYPE = '__EXPTYPE__'; exports.EXPTYPE = EXPTYPE; var SEARCHEXP = '__SEARCHEXP__'; exports.SEARCHEXP = SEARCHEXP; var NEWFILTERDATASET = '__NEWFILTERDATASET__'; exports.NEWFILTERDATASET = NEWFILTERDATASET; var ORIGINALVALUEOBJ = '__ORIGINALVALUEOBJ__'; exports.ORIGINALVALUEOBJ = ORIGINALVALUEOBJ; var TableDynamicFilterBar = /*#__PURE__*/function (_Component) { (0, _inherits2["default"])(TableDynamicFilterBar, _Component); var _super = (0, _createSuper2["default"])(TableDynamicFilterBar); function TableDynamicFilterBar(props, context) { var _this; (0, _classCallCheck2["default"])(this, TableDynamicFilterBar); _this = _super.call(this, props, context); _this.refAdvancedFilterContainer = null; _this.refDropdown = null; _this.refSingleWrapper = null; _this.refEditors = new Map(); _this.refFilterItems = new Map(); _this.refCustomizeExpTypeEditor = null; _this.originalConditionFields = []; _this.handleMouseDownOut = function (e) { if (_this.refDropdown && !_this.refDropdown.contains(e.target)) { _this.fieldSelectHidden = true; } }; _this.setOriginalConditionFields = function (code) { var _this$props = _this.props, queryDataSet = _this$props.queryDataSet, dataSet = _this$props.dataSet; if (!code) { if (queryDataSet) { _this.initConditionFields({ dataSet: queryDataSet, record: queryDataSet.get(0) }); } } else { _this.originalConditionFields = Array.isArray(code) ? code : [code]; } dataSet.setState(SELECTFIELDS, (0, _toConsumableArray2["default"])(_this.originalConditionFields)); }; /** * 勾选 * @param code * @param record */ _this.handleSelect = function (code, record) { var dataSet = _this.props.dataSet; var codes = Array.isArray(code) ? code : [code]; var selectFields = dataSet.getState(SELECTFIELDS) || []; dataSet.setState(SELECTFIELDS, (0, _uniq["default"])([].concat((0, _toConsumableArray2["default"])(selectFields), (0, _toConsumableArray2["default"])(codes)))); var shouldUpdate = dataSet.getState(SELECTFIELDS).length !== _this.originalConditionFields.length || !!(0, _difference["default"])((0, _mobx.toJS)(dataSet.getState(SELECTFIELDS)), (0, _mobx.toJS)(_this.originalConditionFields)).length; var isDirty = record ? record.dirty : false; _this.setConditionStatus(shouldUpdate || isDirty ? _enum2.RecordStatus.update : _enum2.RecordStatus.sync); dataSet.setState(SELECTCHANGE, shouldUpdate); }; /** * 取消勾选 * @param code */ _this.handleUnSelect = function (code) { var _this$props2 = _this.props, queryDataSet = _this$props2.queryDataSet, dataSet = _this$props2.dataSet; var codes = Array.isArray(code) ? code : [code]; var isDirty = false; if (queryDataSet) { var current = queryDataSet.current; if (current) { codes.forEach(function (name) { return current.set(name, undefined); }); isDirty = current.dirty; } } var selectFields = dataSet.getState(SELECTFIELDS) || []; dataSet.setState(SELECTFIELDS, _pull["default"].apply(void 0, [(0, _toConsumableArray2["default"])(selectFields)].concat((0, _toConsumableArray2["default"])(codes)))); var shouldUpdate = dataSet.getState(SELECTFIELDS).length !== _this.originalConditionFields.length || !!(0, _difference["default"])((0, _mobx.toJS)(dataSet.getState(SELECTFIELDS)), (0, _mobx.toJS)(_this.originalConditionFields)).length; _this.setConditionStatus(shouldUpdate || isDirty ? _enum2.RecordStatus.update : _enum2.RecordStatus.sync); dataSet.setState(SELECTCHANGE, shouldUpdate); }; (0, _mobx.runInAction)(function () { _this.fieldSelectHidden = true; _this.expand = true; }); return _this; } (0, _createClass2["default"])(TableDynamicFilterBar, [{ key: "prefixCls", get: function get() { var prefixCls = this.props.prefixCls; var _this$context$getProP = this.context.getProPrefixCls, getProPrefixCls = _this$context$getProP === void 0 ? _utils.getProPrefixCls : _this$context$getProP; return getProPrefixCls('table', prefixCls); } }, { key: "queryFields", get: function get() { var _this$props3 = this.props, queryFields = _this$props3.queryFields, queryDataSet = _this$props3.queryDataSet, dataSet = _this$props3.dataSet; var menuDataSet = dataSet.getState(MENUDATASET); var isTenant = menuDataSet && menuDataSet.current && menuDataSet.current.get('isTenant'); return queryFields.filter(function (component) { if (component.props.hidden) { return !component.props.hidden; } if (isTenant && queryDataSet && queryDataSet.getField(component.props.name)) { return queryDataSet.getField(component.props.name).get('fieldVisible') !== 0; } return !component.props.hidden; }); } }, { key: "componentDidMount", value: function componentDidMount() { var _this2 = this; var _this$props4 = this.props, fuzzyQueryOnly = _this$props4.fuzzyQueryOnly, queryDataSet = _this$props4.queryDataSet, dataSet = _this$props4.dataSet; if (!fuzzyQueryOnly) { this.processDataSetListener(true); document.addEventListener('mousedown', this.handleMouseDownOut); if (this.isSingleLineOpt() && this.refSingleWrapper) { var _this$refSingleWrappe = this.refSingleWrapper.getBoundingClientRect(), height = _this$refSingleWrappe.height; var _this$refSingleWrappe2 = this.refSingleWrapper.children[0].children[0].getBoundingClientRect(), childHeight = _this$refSingleWrappe2.height; (0, _mobx.runInAction)(function () { _this2.showExpandIcon = height > childHeight + 18; }); } var autoQuery = dataSet.props.autoQuery; if (!autoQuery || autoQuery && dataSet.status === _enum2.DataSetStatus.ready) { this.handleDataSetQuery({ dataSet: dataSet }); } } var shouldInit = dataSet.getState(ORIGINALVALUEOBJ) ? dataSet.getState(ORIGINALVALUEOBJ).query === undefined : true; if (shouldInit && queryDataSet && queryDataSet.current) { this.initConditionFields({ dataSet: queryDataSet, record: queryDataSet.current }); } if (queryDataSet && queryDataSet.current && !this.tableFilterAdapter) { dataSet.setState(CONDITIONSTATUS, queryDataSet.current.dirty ? _enum2.RecordStatus.update : _enum2.RecordStatus.sync); } this.setFilterVisiable(); } }, { key: "componentWillUnmount", value: function componentWillUnmount() { var fuzzyQueryOnly = this.props.fuzzyQueryOnly; if (!fuzzyQueryOnly) { document.removeEventListener('mousedown', this.handleMouseDownOut); this.processDataSetListener(false); } if (this.isTooltipShown) { (0, _singleton.hide)(); delete this.isTooltipShown; } } }, { key: "componentWillReceiveProps", value: function componentWillReceiveProps(nextProps) { var _this3 = this; var dataSet = nextProps.dataSet, fuzzyQueryOnly = nextProps.fuzzyQueryOnly, queryDataSet = nextProps.queryDataSet; // eslint-disable-next-line react/destructuring-assignment if (dataSet !== this.props.dataSet || fuzzyQueryOnly !== this.props.fuzzyQueryOnly) { (0, _mobx.runInAction)(function () { _this3.fieldSelectHidden = true; _this3.expand = true; }); if (!fuzzyQueryOnly) { // 移除原有实例监听 this.processDataSetListener(false); this.processDataSetListener(true, nextProps); if (this.isSingleLineOpt() && this.refSingleWrapper) { var _this$refSingleWrappe3 = this.refSingleWrapper.getBoundingClientRect(), height = _this$refSingleWrappe3.height; var _this$refSingleWrappe4 = this.refSingleWrapper.children[0].children[0].getBoundingClientRect(), childHeight = _this$refSingleWrappe4.height; (0, _mobx.runInAction)(function () { _this3.showExpandIcon = height > childHeight + 18; }); } } var shouldInit = dataSet.getState(ORIGINALVALUEOBJ) ? dataSet.getState(ORIGINALVALUEOBJ).query === undefined : true; if (shouldInit && queryDataSet && queryDataSet.current) { this.initConditionFields({ dataSet: queryDataSet, record: queryDataSet.current, tableDs: dataSet }); } if (queryDataSet && queryDataSet.current && !this.tableFilterAdapter) { dataSet.setState(CONDITIONSTATUS, queryDataSet.current.dirty ? _enum2.RecordStatus.update : _enum2.RecordStatus.sync); } } } }, { key: "processDataSetListener", value: function processDataSetListener(flag, nextProps) { var _ref = nextProps || this.props, queryDataSet = _ref.queryDataSet, dataSet = _ref.dataSet; if (queryDataSet) { var handler = flag ? queryDataSet.addEventListener : queryDataSet.removeEventListener; var dsHandler = flag ? dataSet.addEventListener : dataSet.removeEventListener; handler.call(queryDataSet, _enum2.DataSetEvents.validate, this.handleDataSetValidate); handler.call(queryDataSet, _enum2.DataSetEvents.update, this.handleDataSetUpdate); handler.call(queryDataSet, _enum2.DataSetEvents.create, this.handleDataSetCreate); handler.call(queryDataSet, _enum2.DataSetEvents.reset, this.handleDataSetReset); handler.call(queryDataSet, _enum2.DataSetEvents.load, this.handleDataSetLoad); dsHandler.call(dataSet, _enum2.DataSetEvents.query, this.handleDataSetQuery); } } }, { key: "handleDataSetQuery", value: function () { var _handleDataSetQuery = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(_ref2) { var dataSet, res, defaultMenus, _ref3, conditionList, initQueryData, queryDataSet; return _regenerator["default"].wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: dataSet = _ref2.dataSet; if (!(!dataSet.getState(MENURESULT) && this.tableFilterAdapter)) { _context.next = 16; break; } _context.next = 4; return this.initMenuDataSet(); case 4: res = dataSet.getState(MENURESULT); if (!(res && res.length && res.filter(function (menu) { return menu.defaultFlag; }).length)) { _context.next = 16; break; } defaultMenus = res.filter(function (menu) { return menu.defaultFlag; }); _ref3 = defaultMenus.length > 1 ? defaultMenus.find(function (menu) { return menu.isTenant !== 1; }) : defaultMenus[0], conditionList = _ref3.conditionList; initQueryData = {}; if (!(conditionList && conditionList.length)) { _context.next = 16; break; } (0, _map["default"])(conditionList, function (condition) { if (condition.comparator === 'EQUAL') { var fieldName = condition.fieldName, value = condition.value; initQueryData[fieldName] = parseValue(value); } }); queryDataSet = this.props.queryDataSet; if (!(queryDataSet && queryDataSet.current && dataSet.props.autoQuery)) { _context.next = 16; break; } if (!Object.keys(initQueryData).length) { _context.next = 16; break; } dataSet.query(); return _context.abrupt("return", false); case 16: case "end": return _context.stop(); } } }, _callee, this); })); function handleDataSetQuery(_x) { return _handleDataSetQuery.apply(this, arguments); } return handleDataSetQuery; }() /** * queryDataSet 查询前校验事件 触发展开动态字段 * @param dataSet 查询DS * @param result */ }, { key: "handleDataSetValidate", value: function () { var _handleDataSetValidate = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(_ref4) { var _this4 = this; var dataSet, result, refSingleWrapper; return _regenerator["default"].wrap(function _callee2$(_context2) { while (1) { switch (_context2.prev = _context2.next) { case 0: dataSet = _ref4.dataSet, result = _ref4.result; _context2.next = 3; return result; case 3: if (_context2.sent) { _context2.next = 7; break; } (0, _mobx.runInAction)(function () { var current = dataSet.current; dataSet.fields.forEach(function (field, key) { if (!field.isValid(current)) { _this4.handleSelect(key); } }); _this4.expand = true; }); refSingleWrapper = this.refSingleWrapper; if (refSingleWrapper) { refSingleWrapper.style.height = ''; refSingleWrapper.style.overflow = ''; } case 7: case "end": return _context2.stop(); } } }, _callee2, this); })); function handleDataSetValidate(_x2) { return _handleDataSetValidate.apply(this, arguments); } return handleDataSetValidate; }() }, { key: "setConditionStatus", value: function setConditionStatus(value, orglValue) { var dataSet = this.props.dataSet; dataSet.setState(CONDITIONSTATUS, value); if (value === _enum2.RecordStatus.sync && orglValue) { var oriObj = dataSet.getState(ORIGINALVALUEOBJ); dataSet.setState(ORIGINALVALUEOBJ, (0, _objectSpread3["default"])((0, _objectSpread3["default"])({}, oriObj), {}, { query: orglValue })); } } /** * 筛选条件更新 触发表格查询 */ }, { key: "handleDataSetUpdate", value: function () { var _handleDataSetUpdate = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(_ref5) { var record, name, oldValue, value, _this$props5, dataSet, queryDataSet, _this$props5$onQuery, onQuery, autoQuery, field, shouldQuery, rangeKeys, _record$set, _record$set2, rangeValue, rangeOldValue, status, hasFocus, i, queryField, editor; return _regenerator["default"].wrap(function _callee3$(_context3) { while (1) { switch (_context3.prev = _context3.next) { case 0: record = _ref5.record, name = _ref5.name, oldValue = _ref5.oldValue, value = _ref5.value; _this$props5 = this.props, dataSet = _this$props5.dataSet, queryDataSet = _this$props5.queryDataSet, _this$props5$onQuery = _this$props5.onQuery, onQuery = _this$props5$onQuery === void 0 ? _noop["default"] : _this$props5$onQuery, autoQuery = _this$props5.autoQuery; field = queryDataSet && queryDataSet.getField(name); shouldQuery = true; if (field && field.get('range', record)) { // 处理 range 失焦对象 undefined,bind 字段无处理的情况 if (value) { rangeKeys = Object.keys(value); if (rangeKeys.length) { if (value[rangeKeys[0]] === undefined && value[rangeKeys[1]] === undefined) { record.set(name, null); } else if (value[rangeKeys[1]] === undefined) { record.set(name, (_record$set = {}, (0, _defineProperty2["default"])(_record$set, rangeKeys[0], value[rangeKeys[0]]), (0, _defineProperty2["default"])(_record$set, rangeKeys[1], null), _record$set)); } else if (value[rangeKeys[0]] === undefined) { record.set(name, (_record$set2 = {}, (0, _defineProperty2["default"])(_record$set2, rangeKeys[0], null), (0, _defineProperty2["default"])(_record$set2, rangeKeys[1], value[rangeKeys[1]]), _record$set2)); } } } rangeValue = value ? (0, _isArray["default"])(value) ? value.join('') : Object.values(value).join('') : ''; rangeOldValue = oldValue ? (0, _isArray["default"])(oldValue) ? oldValue.join('') : Object.values(oldValue).join('') : ''; shouldQuery = rangeValue !== rangeOldValue; } status = _enum2.RecordStatus.update; if (record) { this.handleSelect(name, record); status = isEqualDynamicProps(dataSet.getState(ORIGINALVALUEOBJ).query, (0, _omit["default"])(record.toData(), ['__dirty']), queryDataSet, record, name) ? _enum2.RecordStatus.sync : _enum2.RecordStatus.update; } this.setConditionStatus(status); if (!(autoQuery && shouldQuery)) { _context3.next = 27; break; } _context3.next = 11; return dataSet.modifiedCheck(undefined, dataSet, 'query'); case 11: if (!_context3.sent) { _context3.next = 26; break; } _context3.t0 = queryDataSet && queryDataSet.current; if (!_context3.t0) { _context3.next = 17; break; } _context3.next = 16; return queryDataSet.current.validate(); case 16: _context3.t0 = _context3.sent; case 17: if (!_context3.t0) { _context3.next = 22; break; } dataSet.query(); onQuery(); _context3.next = 24; break; case 22: hasFocus = false; for (i = 0; i < this.queryFields.length; i++) { queryField = this.queryFields[i]; editor = this.refEditors.get(String(queryField.key)); if (editor && !editor.valid && !hasFocus && field && !field.get('multiple', record) && (0, _isFunction["default"])(editor.focus)) { editor.focus(); hasFocus = true; } } case 24: _context3.next = 27; break; case 26: record.init(name, oldValue); case 27: case "end": return _context3.stop(); } } }, _callee3, this); })); function handleDataSetUpdate(_x3) { return _handleDataSetUpdate.apply(this, arguments); } return handleDataSetUpdate; }() /** * queryDS 新建,初始勾选值 */ }, { key: "handleDataSetCreate", value: function handleDataSetCreate() { var queryDataSet = this.props.queryDataSet; if (queryDataSet) { this.initConditionFields({ dataSet: queryDataSet, record: queryDataSet.current }); } } /** * queryDS reset,初始记录 */ }, { key: "handleDataSetReset", value: function handleDataSetReset() { var queryDataSet = this.props.queryDataSet; if (queryDataSet && !this.tableFilterAdapter) { queryDataSet.create(); } } /** * queryDS load,兼容项目loadData([])的处理,初始化记录 */ }, { key: "handleDataSetLoad", value: function handleDataSetLoad(_ref6) { var dataSet = _ref6.dataSet; if (!this.tableFilterAdapter && !dataSet.length) { dataSet.create(); } } /** * 初始化勾选值、条件字段 * @param props */ }, { key: "initConditionFields", value: function initConditionFields(props) { var _this5 = this; var tableDS = this.props.dataSet; var dataSet = props.dataSet, record = props.record, _props$tableDs = props.tableDs, tableDs = _props$tableDs === void 0 ? tableDS : _props$tableDs; var originalValue = (0, _omit["default"])(record.toData(), ['__dirty']); var conditionData = Object.entries(originalValue); var newObj = tableDs.getState(ORIGINALVALUEOBJ) || {}; tableDs.setState(ORIGINALVALUEOBJ, (0, _objectSpread3["default"])((0, _objectSpread3["default"])({}, newObj), {}, { query: originalValue })); this.originalConditionFields = []; var fields = dataSet.fields; (0, _map["default"])(conditionData, function (data) { var name = data[0]; if (!fields.has(data[0]) && (0, _isObject["default"])(data[1]) && !(0, _isEmpty2["default"])(data[1]) && !(0, _isArray["default"])(data[1])) { name = "".concat(data[0], ".").concat(Object.keys(data[1])[0]); } if (isSelect(data) && !(dataSet.getState(SELECTFIELDS) || []).includes(name)) { var field = dataSet.getField(name); if (!field || !field.get('bind', record) || field.get('usedFlag')) { _this5.originalConditionFields.push(name); _this5.handleSelect(name, record); } } }); } /** * 高级搜索字段集 */ }, { key: "advancedSearchFieldProps", get: function get() { var _this$props6 = this.props, queryDataSet = _this$props6.queryDataSet, dataSet = _this$props6.dataSet, advancedSearchFields = _this$props6.advancedSearchFields; if (advancedSearchFields && advancedSearchFields.length) { var omitPropsArr = ['dynamicProps', 'computedProps', 'order', 'pattern', 'maxLength', 'minLength', 'max', 'min', 'validator', 'required', 'readOnly', 'disabled', 'defaultValue', 'cascadeMap', 'ignore']; return advancedSearchFields.map(function (field) { var name = field.name, source = field.source, alias = field.alias, tableName = field.tableName, _field$fieldProps = field.fieldProps, fieldProps = _field$fieldProps === void 0 ? {} : _field$fieldProps; var fieldName = alias || name; var dynamicRequired = function dynamicRequired(_ref7) { var record = _ref7.record; var isNullOperater = [_Operator.OPERATOR.IS_NULL.value, _Operator.OPERATOR.IS_NOT_NULL.value].includes(record.get(_QuickFilterDataSet.AdvancedFieldSet.comparator)); if (fieldName === record.get(_QuickFilterDataSet.AdvancedFieldSet.fieldName) && !isNullOperater) { return true; } return false; }; var required = fieldProps.required, computedProps = fieldProps.computedProps; if (required) delete fieldProps.required; if (computedProps && 'required' in computedProps) delete computedProps.required; if (fieldProps.dynamicProps) { fieldProps.dynamicProps.required = dynamicRequired; } else { fieldProps.dynamicProps = { required: dynamicRequired }; } if (source === 'fields' && dataSet.props.fields) { var dsFiedlsProps = dataSet.props.fields.find(function (f) { return f.name === name; }); return (0, _objectSpread3["default"])((0, _objectSpread3["default"])((0, _objectSpread3["default"])({}, (0, _omit["default"])(dsFiedlsProps, omitPropsArr)), fieldProps), {}, { help: tableName, name: fieldName }); } if (source === 'queryFields' && queryDataSet && queryDataSet.props.fields) { var _dsFiedlsProps = queryDataSet.props.fields.find(function (f) { return f.name === name; }); return (0, _objectSpread3["default"])((0, _objectSpread3["default"])((0, _objectSpread3["default"])({}, (0, _omit["default"])(_dsFiedlsProps, omitPropsArr)), fieldProps), {}, { help: tableName, name: fieldName }); } return (0, _objectSpread3["default"])((0, _objectSpread3["default"])({}, fieldProps), {}, { // multiple: fieldProps && fieldProps.multiple ? '|' : false, help: tableName, name: fieldName }); }); } return []; } /** * 加载动态筛选条相关初始数据 & 存储初始值 * 1.筛选条 * 2.高级搜索 * 3.模糊搜索 * @param param */ }, { key: "loadConditionData", value: function loadConditionData(_ref8) { var conditionDataSet = _ref8.conditionDataSet, newFilterDataSet = _ref8.newFilterDataSet, menuRecord = _ref8.menuRecord, dataSet = _ref8.dataSet, searchText = _ref8.searchText; var comparatorData = []; var regularData = []; var newObj = dataSet.getState(ORIGINALVALUEOBJ) || {}; var searchTextValue = null; menuRecord.get('conditionList').forEach(function (condition) { if (condition.conditionType !== 'comparator') { regularData.push(condition); } else { var _objectSpread2; var fieldName = condition.fieldName, value = condition.value, conditionType = condition.conditionType, comparator = condition.comparator, rest = (0, _objectWithoutProperties2["default"])(condition, _excluded); comparatorData.push((0, _objectSpread3["default"])((_objectSpread2 = {}, (0, _defineProperty2["default"])(_objectSpread2, _QuickFilterDataSet.AdvancedFieldSet.fieldName, fieldName), (0, _defineProperty2["default"])(_objectSpread2, fieldName, value), (0, _defineProperty2["default"])(_objectSpread2, _QuickFilterDataSet.AdvancedFieldSet.conditionType, conditionType), (0, _defineProperty2["default"])(_objectSpread2, _QuickFilterDataSet.AdvancedFieldSet.comparator, comparator), _objectSpread2), rest)); } }); // 加载筛选条数据 conditionDataSet.loadData(regularData); // 加载高级搜索面板数据 newFilterDataSet.loadData(comparatorData); // 初始高级搜索 dataSet.setState(ORIGINALVALUEOBJ, (0, _objectSpread3["default"])((0, _objectSpread3["default"])({}, newObj), {}, { advance: comparatorData })); // 加载模糊搜索数据 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; dataSet.setState(SEARCHTEXT, searchTextValue); // 初始模糊搜索 dataSet.setState(ORIGINALVALUEOBJ, (0, _objectSpread3["default"])((0, _objectSpread3["default"])({}, newObj), {}, { advance: comparatorData, fuzzy: searchTextValue })); dataSet.setQueryParameter(searchText, searchTextValue); } } /** * 初始筛选条数据源状态 */ }, { key: "initMenuDataSet", value: function () { var _initMenuDataSet = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4() { var _this6 = this; var _this$props7, queryDataSet, dataSet, dynamicFilterBar, searchCode, getConfig, searchCodes, menuDataSet, conditionDataSet, newFilterDataSet, optionDataSet, filterMenuDataSet, status, result, menuRecord, current; return _regenerator["default"].wrap(function _callee4$(_context4) { while (1) { switch (_context4.prev = _context4.next) { case 0: _this$props7 = this.props, queryDataSet = _this$props7.queryDataSet, dataSet = _this$props7.dataSet, dynamicFilterBar = _this$props7.dynamicFilterBar, searchCode = _this$props7.searchCode; getConfig = this.context.getConfig; searchCodes = dynamicFilterBar && dynamicFilterBar.searchCode || searchCode; if (!this.tableFilterAdapter) { _context4.next = 25; break; } menuDataSet = new _DataSet["default"]((0, _QuickFilterDataSet.QuickFilterDataSet)({ searchCode: searchCodes, queryDataSet: queryDataSet, tableFilterAdapter: this.tableFilterAdapter }), { getConfig: getConfig }); conditionDataSet = new _DataSet["default"]((0, _QuickFilterDataSet.ConditionDataSet)(), { getConfig: getConfig }); newFilterDataSet = new _DataSet["default"]((0, _QuickFilterDataSet.NewFilterDataSet)({ propFields: this.advancedSearchFieldProps }), { getConfig: getConfig }); optionDataSet = new _DataSet["default"]({ paging: false, selection: _enum2.DataSetSelection.single, fields: [{ // 是否租户默认配置 name: 'isTenant', type: _enum2.FieldType.string, transformResponse: function transformResponse(value) { return value ? (0, _localeContext.$l)('Table', 'preset') : (0, _localeContext.$l)('Table', 'user'); }, group: true }] }, { getConfig: getConfig }); filterMenuDataSet = new _DataSet["default"]({ autoCreate: true, fields: [{ name: 'filterName', type: _enum2.FieldType.string, textField: 'searchName', valueField: 'searchId', options: optionDataSet, ignore: _enum2.FieldIgnore.always }] }, { getConfig: getConfig }); status = _enum2.RecordStatus.update; if (queryDataSet && queryDataSet.current && dataSet.getState(ORIGINALVALUEOBJ)) { status = isEqualDynamicProps(dataSet.getState(ORIGINALVALUEOBJ).query, (0, _omit["default"])(queryDataSet.current.toData(), ['__dirty']), queryDataSet, queryDataSet.current) ? _enum2.RecordStatus.sync : _enum2.RecordStatus.update; } else { status = _enum2.RecordStatus.sync; } // 初始化状态 dataSet.setState(MENUDATASET, menuDataSet); dataSet.setState(CONDITIONDATASET, conditionDataSet); dataSet.setState(NEWFILTERDATASET, newFilterDataSet); dataSet.setState(OPTIONDATASET, optionDataSet); dataSet.setState(FILTERMENUDATASET, filterMenuDataSet); dataSet.setState(CONDITIONSTATUS, status); // dataSet.setState(SEARCHTEXT, null); _context4.next = 19; return menuDataSet.query(); case 19: result = _context4.sent; dataSet.setState(MENURESULT, result); if (optionDataSet) { optionDataSet.loadData(result); } menuRecord = menuDataSet.current; if (menuRecord) { this.loadConditionData({ menuRecord: menuRecord, conditionDataSet: conditionDataSet, newFilterDataSet: newFilterDataSet, dataSet: dataSet, searchText: this.searchText }); } if (result && result.length) { (0, _mobx.runInAction)(function () { _this6.shouldLocateData = true; }); if (queryDataSet && queryDataSet.fields && !this.tempFields) { this.tempFields = queryDataSet.snapshot().dataSet.fields; } } else { current = filterMenuDataSet.current; if (current) current.set('filterName', undefined); (0, _mobx.runInAction)(function () { _this6.shouldLocateData = true; }); } case 25: return _context4.abrupt("return", true); case 26: case "end": return _context4.stop(); } } }, _callee4, this); })); function initMenuDataSet() { return _initMenuDataSet.apply(this, arguments); } return initMenuDataSet; }() /** * tableFilterSuffix 预留自定义区域 */ }, { key: "renderSuffix", value: function renderSuffix() { var _this$props8 = this.props, dynamicFilterBar = _this$props8.dynamicFilterBar, queryDataSet = _this$props8.queryDataSet, dataSet = _this$props8.dataSet, _this$props8$buttons = _this$props8.buttons, buttons = _this$props8$buttons === void 0 ? [] : _this$props8$buttons; var getConfig = this.context.getConfig; var prefixCls = this.prefixCls; var suffixes = dynamicFilterBar && dynamicFilterBar.suffixes || getConfig('tableFilterSuffix'); var children = []; var suffixesDom = null; var tableButtons = buttons.length ? /*#__PURE__*/_react["default"].createElement(_TableButtons["default"], { key: "".concat(buttons.length, "-toolbar"), prefixCls: "".concat(prefixCls, "-dynamic-filter"), buttons: buttons }) : null; if (suffixes && suffixes.length) { suffixes.forEach(function (suffix) { if (suffix === 'filter') { children.push( /*#__PURE__*/_react["default"].createElement(_ColumnFilter["default"], { prefixCls: prefixCls, key: 'prefix-column-filter' })); } else if ( /*#__PURE__*/(0, _react.isValidElement)(suffix)) { children.push(suffix); } else if ((0, _isFunction["default"])(suffix)) { children.push(suffix({ queryDataSet: queryDataSet, dataSet: dataSet })); } }); suffixesDom = /*#__PURE__*/_react["default"].createElement("div", { className: "".concat(prefixCls, "-dynamic-filter-bar-suffix") }, children); } return [tableButtons, suffixesDom]; } }, { key: "getPrefix", value: function getPrefix() { var _this$props9 = this.props, dynamicFilterBar = _this$props9.dynamicFilterBar, queryDataSet = _this$props9.queryDataSet, dataSet = _this$props9.dataSet; var prefixCls = this.prefixCls; var prefixes = dynamicFilterBar && dynamicFilterBar.prefixes; var children = []; if (prefixes && prefixes.length) { prefixes.forEach(function (prefix) { if ((0, _isString["default"])(prefix) && prefix === 'filter') { children.push( /*#__PURE__*/_react["default"].createElement(_ColumnFilter["default"], { prefixCls: prefixCls, key: 'prefix-column-filter' })); } else if ( /*#__PURE__*/(0, _react.isValidElement)(prefix)) { children.push(prefix); } else if ((0, _isFunction["default"])(prefix)) { children.push(prefix({ queryDataSet: queryDataSet, dataSet: dataSet })); } }); return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("div", { className: "".concat(prefixCls, "-dynamic-filter-bar-prefix") }, children), /*#__PURE__*/_react["default"].createElement("span", { className: "".concat(prefixCls, "-filter-search-divide") })); } return null; } /** * 注入 refEditors * @param element * @param name */ }, { key: "createFields", value: function createFields(element, name) { var _this7 = this; var _this$props$onFieldEn = this.props.onFieldEnterDown, onFieldEnterDown = _this$props$onFieldEn === void 0 ? _noop["default"] : _this$props$onFieldEn; var onEnterDown = element.props.onEnterDown; var props = { ref: function ref(node) { return _this7