choerodon-ui
Version:
An enterprise-class UI design language and React-based implementation
1,300 lines (1,061 loc) • 46.4 kB
JavaScript
"use strict";
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard")["default"];
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = exports.MemoModalContent = void 0;
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _createForOfIteratorHelper2 = _interopRequireDefault(require("@babel/runtime/helpers/createForOfIteratorHelper"));
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _react = _interopRequireWildcard(require("react"));
var _mobx = require("mobx");
var _mobxReactLite = require("mobx-react-lite");
var _map = _interopRequireDefault(require("lodash/map"));
var _isObject = _interopRequireDefault(require("lodash/isObject"));
var _isEmpty = _interopRequireDefault(require("lodash/isEmpty"));
var _isArray = _interopRequireDefault(require("lodash/isArray"));
var _noop = _interopRequireDefault(require("lodash/noop"));
var _omit = _interopRequireDefault(require("lodash/omit"));
var _ConfigContext = _interopRequireDefault(require("../../../../../lib/config-provider/ConfigContext"));
var _icon = _interopRequireDefault(require("../../../../../lib/icon"));
var _tag = _interopRequireDefault(require("../../../../../lib/tag"));
var _isEmpty2 = _interopRequireDefault(require("../../../_util/isEmpty"));
var _localeContext = require("../../../locale-context");
var _button = _interopRequireDefault(require("../../../button"));
var _select = _interopRequireDefault(require("../../../select"));
var _modal = _interopRequireDefault(require("../../../modal"));
var _textField = _interopRequireDefault(require("../../../text-field"));
var _enum = require("../../../text-field/enum");
var _dropdown = _interopRequireDefault(require("../../../dropdown"));
var _menu = _interopRequireDefault(require("../../../menu"));
var _form = _interopRequireDefault(require("../../../form"));
var _switch = _interopRequireDefault(require("../../../switch"));
var _selectBox = _interopRequireDefault(require("../../../select-box"));
var _Record = _interopRequireDefault(require("../../../data-set/Record"));
var _enum2 = require("../../../data-set/enum");
var _singleton = require("../../../tooltip/singleton");
var _util = _interopRequireDefault(require("../../../overflow-tip/util"));
var _TableDynamicFilterBar = require("../TableDynamicFilterBar");
var _QuickFilterMenuContext = _interopRequireDefault(require("./QuickFilterMenuContext"));
var _QuickFilterDataSet = require("./QuickFilterDataSet");
var modalKey = _modal["default"].key();
/**
* 判断查询值是否为空
* @param value
*/
function isEmpty(value) {
return (0, _isArray["default"])(value) ? !value.length : (0, _isEmpty2["default"])(value);
}
/**
* 根据数据查找需要处理的字段对象
* @param queryDataSet
* @param data
*/
function findFieldObj(queryDataSet, data) {
var name = data[0];
var value = data[1];
if (!queryDataSet.fields.has(data[0]) && (0, _isObject["default"])(data[1]) && !(0, _isEmpty["default"])(data[1]) && !(0, _isArray["default"])(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 = {}, (0, _defineProperty2["default"])(_ref, valueField, obj[valueField]), (0, _defineProperty2["default"])(_ref, textField, obj[textField]), _ref;
});
return {
name: name,
value: multipleValue
};
}
if ((0, _isObject["default"])(value)) {
var _value;
return {
name: name,
value: (_value = {}, (0, _defineProperty2["default"])(_value, valueField, value[valueField]), (0, _defineProperty2["default"])(_value, textField, value[textField]), _value)
};
}
return {
name: name,
value: (_value2 = {}, (0, _defineProperty2["default"])(_value2, valueField, value), (0, _defineProperty2["default"])(_value2, textField, value), _value2)
};
}
if (field && field.get('ignore') !== 'always') {
return {
name: name,
value: value
};
}
}
/**
* 当前数据是否有值并需要选中
* @param data
*/
function isSelect(data) {
if ((0, _isObject["default"])(data[1])) {
return !(0, _isEmpty["default"])(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 = (0, _react.useContext)(_ConfigContext["default"]),
getConfig = _useContext.getConfig;
modal.handleOk( /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
var putData, statusKey, statusAdd, statusUpdate, shouldSaveValue, status, fuzzySrearchValue, fuzzySrearchData, conditionData, hasValueFields, filterData, otherRecord, res;
return _regenerator["default"].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(_TableDynamicFilterBar.SEARCHTEXT);
fuzzySrearchData = [(0, _objectSpread2["default"])({
fieldName: _TableDynamicFilterBar.SEARCHTEXT,
comparator: 'EQUAL',
value: fuzzySrearchValue
}, status)];
if (type !== 'edit') {
conditionData = Object.entries((0, _omit["default"])(queryDataSet.current.toData(), ['__dirty']));
(0, _map["default"])(conditionData, function (data) {
if (isSelect(data)) {
var fieldObj = findFieldObj(queryDataSet, data);
if (fieldObj && fieldObj.name) {
putData.push((0, _objectSpread2["default"])({
comparator: 'EQUAL',
fieldName: fieldObj.name,
value: shouldSaveValue ? (0, _TableDynamicFilterBar.stringifyValue)(fieldObj.value) : ''
}, status));
}
}
});
hasValueFields = putData.map(function (pt) {
return pt.fieldName;
});
(0, _map["default"])(selectFields, function (fieldName) {
var value = queryDataSet.current.get(fieldName); // 加入空值勾选字段
if (!hasValueFields.includes(fieldName)) {
putData.push((0, _objectSpread2["default"])({
comparator: 'EQUAL',
fieldName: fieldName,
value: shouldSaveValue ? (0, _TableDynamicFilterBar.stringifyValue)(value) : ''
}, status));
}
});
} // 处理过滤条件
filterData = [];
if (newFilterDataSet) {
filterData = newFilterDataSet.map(function (filterRecord) {
if (filterRecord.status !== _enum2.RecordStatus.sync) {
var _status = {};
_status[statusKey] = filterRecord.status === _enum2.RecordStatus.add ? statusAdd : statusUpdate;
return (0, _objectSpread2["default"])({
fieldName: filterRecord.get(_QuickFilterDataSet.AdvancedFieldSet.fieldName),
comparator: filterRecord.get(_QuickFilterDataSet.AdvancedFieldSet.comparator),
conditionType: filterRecord.get(_QuickFilterDataSet.AdvancedFieldSet.conditionType),
value: filterRecord.get('value')
}, _status);
}
return null;
});
} // 另存为
if (type === 'save') {
otherRecord = menuDataSet.current.clone();
otherRecord.set('conditionList', [].concat(putData, (0, _toConsumableArray2["default"])(filterData)));
otherRecord.set('queryList', fuzzySrearchData);
menuDataSet.current.reset();
menuDataSet.create((0, _objectSpread2["default"])({}, (0, _TableDynamicFilterBar.omitData)(otherRecord.toData()))); // 新建
} else if (type === 'create') {
menuDataSet.current.set('conditionList', [].concat(putData, (0, _toConsumableArray2["default"])(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["default"].createElement(_form["default"], {
record: record || menuDataSet.current
}, /*#__PURE__*/_react["default"].createElement(_textField["default"], {
style: {
width: '100%'
},
name: "searchName",
placeholder: (0, _localeContext.$l)('Table', 'please_enter'),
showLengthInfo: true,
valueChangeAction: _enum.ValueChangeAction.input
}), /*#__PURE__*/_react["default"].createElement(_selectBox["default"], {
name: "saveFilterValue"
}, /*#__PURE__*/_react["default"].createElement(_selectBox["default"].Option, {
value: 1
}, (0, _localeContext.$l)('Table', 'query_option_yes')), /*#__PURE__*/_react["default"].createElement(_selectBox["default"].Option, {
value: 0
}, (0, _localeContext.$l)('Table', 'query_option_no'))), /*#__PURE__*/_react["default"].createElement(_switch["default"], {
name: "defaultFlag",
hidden: type === 'edit'
}));
};
ModalContent.displayName = 'ModalContent';
var MemoModalContent = /*#__PURE__*/(0, _react.memo)(ModalContent);
/**
* 快速筛选下拉
*/
exports.MemoModalContent = MemoModalContent;
var QuickFilterMenu = function QuickFilterMenu() {
var _useContext2 = (0, _react.useContext)(_ConfigContext["default"]),
getConfig = _useContext2.getConfig;
var _useContext3 = (0, _react.useContext)(_QuickFilterMenuContext["default"]),
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["default"] : _useContext3$onChange,
conditionStatus = _useContext3.conditionStatus,
_useContext3$onStatus = _useContext3.onStatusChange,
onStatusChange = _useContext3$onStatus === void 0 ? _noop["default"] : _useContext3$onStatus,
selectFields = _useContext3.selectFields,
_useContext3$onOrigin = _useContext3.onOriginalChange,
onOriginalChange = _useContext3$onOrigin === void 0 ? _noop["default"] : _useContext3$onOrigin,
_useContext3$initCond = _useContext3.initConditionFields,
initConditionFields = _useContext3$initCond === void 0 ? _noop["default"] : _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["default"] : _useContext3$loadCond,
defaultActiveKey = _useContext3.defaultActiveKey,
_useContext3$onReset = _useContext3.onReset,
onReset = _useContext3$onReset === void 0 ? _noop["default"] : _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 (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, condition), {}, {
name: condition.fieldName,
defaultValue: condition.value
});
});
(0, _mobx.runInAction)(function () {
queryDataSet.fields = _mobx.observable.map(conditionList ? queryDataSet.initFields(fields) : undefined);
});
};
/**
* queryDS 筛选赋值并更新初始勾选项
* @param init
*/
var conditionAssign = /*#__PURE__*/function () {
var _ref4 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(init) {
var current, shouldQuery, orgObj, conditionList, initData, tenantSelectFields, _isTenant, currentQueryRecord, emptyRecord, _emptyRecord, hasFocus, _iterator, _step, _step$value, key, value;
return _regenerator["default"].wrap(function _callee2$(_context2) {
while (1) {
switch (_context2.prev = _context2.next) {
case 0:
onOriginalChange();
current = menuDataSet.current;
shouldQuery = false; // 重置模糊搜素并判断是否查询
orgObj = dataSet.getState(_TableDynamicFilterBar.ORIGINALVALUEOBJ);
shouldQuery = dataSet.getState(_TableDynamicFilterBar.SEARCHTEXT) !== orgObj.fuzzy;
dataSet.setState(_TableDynamicFilterBar.SEARCHTEXT, orgObj.fuzzy);
dataSet.setQueryParameter(searchText, orgObj.fuzzy); // 重置高级搜索并判断是否查询
shouldQuery = shouldQuery || newFilterDataSet.dirty;
if (newFilterDataSet.dirty) {
newFilterDataSet.reset();
(0, _TableDynamicFilterBar.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) {
(0, _mobx.runInAction)(function () {
queryDataSet.fields = tempQueryFields;
});
}
currentQueryRecord = queryDataSet.current;
if (conditionList && conditionList.length) {
(0, _map["default"])(conditionList, function (condition) {
if (condition.comparator === 'EQUAL') {
var fieldName = condition.fieldName,
value = condition.value;
initData[fieldName] = (0, _TableDynamicFilterBar.parseValue)(value);
onChange(fieldName);
}
if (condition.usedFlag) {
tenantSelectFields.push(condition.fieldName);
}
});
onOriginalChange(Object.keys(initData));
emptyRecord = new _Record["default"]((0, _objectSpread2["default"])({}, initData), queryDataSet);
dataSet.setState(_TableDynamicFilterBar.SELECTFIELDS, _isTenant ? tenantSelectFields : Object.keys(initData));
queryDataSet.setState(_TableDynamicFilterBar.SELECTFIELDS, _isTenant ? tenantSelectFields : Object.keys(initData));
shouldQuery = shouldQuery || !(0, _TableDynamicFilterBar.isEqualDynamicProps)(initData, currentQueryRecord ? (0, _omit["default"])(currentQueryRecord.toData(true), ['__dirty']) : {}, queryDataSet, currentQueryRecord);
(0, _mobx.runInAction)(function () {
queryDataSet.records.push(emptyRecord);
queryDataSet.current = emptyRecord;
});
if (_isTenant) {
initConditionFields({
dataSet: queryDataSet,
record: queryDataSet.current
});
}
onStatusChange(_enum2.RecordStatus.sync, emptyRecord.toData());
} else {
shouldQuery = shouldQuery || !(0, _TableDynamicFilterBar.isEqualDynamicProps)(initData, currentQueryRecord ? (0, _omit["default"])(currentQueryRecord.toData(true), ['__dirty']) : {}, queryDataSet, currentQueryRecord);
_emptyRecord = new _Record["default"]({}, queryDataSet);
dataSet.setState(_TableDynamicFilterBar.SELECTFIELDS, []);
queryDataSet.setState(_TableDynamicFilterBar.SELECTFIELDS, []);
(0, _mobx.runInAction)(function () {
queryDataSet.records.push(_emptyRecord);
queryDataSet.current = _emptyRecord;
});
onStatusChange(_enum2.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 = (0, _createForOfIteratorHelper2["default"])(refEditors.entries());
try {
for (_iterator.s(); !(_step = _iterator.n()).done;) {
_step$value = (0, _slicedToArray2["default"])(_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 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3() {
var first, hasFocus, _iterator2, _step2, _step2$value, key, value;
return _regenerator["default"].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) {
(0, _mobx.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();
(0, _TableDynamicFilterBar.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 = (0, _createForOfIteratorHelper2["default"])(refEditors.entries());
try {
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
_step2$value = (0, _slicedToArray2["default"])(_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(_enum2.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 === _TableDynamicFilterBar.SEARCHTEXT;
});
return searchObj ? searchObj.value !== dataSet.getState(_TableDynamicFilterBar.SEARCHTEXT) : false;
}
return dataSet.getState(_TableDynamicFilterBar.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 === _TableDynamicFilterBar.SEARCHTEXT;
});
searchTextValue = searchObj ? searchObj.value : null;
} // 切换数据更新初始化模糊搜索
var newObj = dataSet.getState(_TableDynamicFilterBar.ORIGINALVALUEOBJ);
dataSet.setState(_TableDynamicFilterBar.ORIGINALVALUEOBJ, (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, newObj), {}, {
fuzzy: searchTextValue
}));
dataSet.setState(_TableDynamicFilterBar.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 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4(searchId) {
var result, menuRecord, current;
return _regenerator["default"].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 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee7(record) {
var searchId, menuRecord, currentId, delRecord;
return _regenerator["default"].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((0, _localeContext.$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 (0, _localeContext.$l)('Table', 'save_filter');
case 'edit':
return (0, _localeContext.$l)('Table', 'filter_edit');
default:
return (0, _localeContext.$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["default"].open({
key: modalKey,
closable: true,
title: getTitle(type),
children: /*#__PURE__*/_react["default"].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 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee5() {
var filterMenuRecord, current, conditionData, putData, statusKey, statusAdd, statusUpdate, menuRecord, filterData, fuzzySrearchValue, fuzzySrearchData, res;
return _regenerator["default"].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(_TableDynamicFilterBar.SEARCHEXP) ? dataSet.getState(_TableDynamicFilterBar.SEARCHEXP) : dataSet.getState(_TableDynamicFilterBar.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((0, _omit["default"])(current.toData(), ['__dirty']));
conditionDataSet.reset();
conditionDataSet.map(function (record) {
if (!selectFields || !selectFields.includes(record.get('fieldName'))) {
conditionDataSet.remove(record);
}
return null;
});
(0, _map["default"])(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;
(0, _map["default"])(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((0, _objectSpread2["default"])({
comparator: 'EQUAL',
fieldName: fieldName,
value: value
}, status));
}
});
menuRecord = menuDataSet.current;
if (menuRecord) {
filterData = [];
if (newFilterDataSet) {
filterData = newFilterDataSet.map(function (filterRecord) {
if (filterRecord.status !== _enum2.RecordStatus.sync) {
var status = {};
status[statusKey] = filterRecord.status === _enum2.RecordStatus.add ? statusAdd : statusUpdate;
return (0, _objectSpread2["default"])({
fieldName: filterRecord.get(_QuickFilterDataSet.AdvancedFieldSet.fieldName),
comparator: filterRecord.get(_QuickFilterDataSet.AdvancedFieldSet.comparator),
conditionType: filterRecord.get(_QuickFilterDataSet.AdvancedFieldSet.conditionType),
value: filterRecord.get('value')
}, status);
}
return null;
});
}
menuRecord.set('conditionList', [].concat((0, _toConsumableArray2["default"])(conditionDataSet.toJSONData()), putData, (0, _toConsumableArray2["default"])(filterData))); // 保存模糊搜素值
fuzzySrearchValue = dataSet.getState(_TableDynamicFilterBar.SEARCHTEXT);
fuzzySrearchData = [{
fieldName: _TableDynamicFilterBar.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');
};
(0, _react.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 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee6(defaultFlag, record) {
var currentRecord, res, result;
return _regenerator["default"].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') === (0, _localeContext.$l)('Table', 'preset');
var menu = /*#__PURE__*/_react["default"].createElement(_menu["default"], {
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["default"].createElement(_menu["default"].Item, {
key: 'filter_default'
}, record.get('defaultFlag') ? (0, _localeContext.$l)('Table', 'cancel_default') : (0, _localeContext.$l)('Table', 'set_default')), /*#__PURE__*/_react["default"].createElement(_menu["default"].Item, {
key: 'filter_edit'
}, (0, _localeContext.$l)('Table', 'filter_edit')), /*#__PURE__*/_react["default"].createElement(_menu["default"].Item, {
key: 'filter_delete'
}, (0, _localeContext.$l)('Table', 'delete_button')));
return /*#__PURE__*/_react["default"].createElement("div", {
className: "".concat(prefixCls, "-filter-menu-option")
}, /*#__PURE__*/_react["default"].createElement("span", {
className: "".concat(prefixCls, "-filter-menu-option-content"),
onMouseEnter: function onMouseEnter(e) {
var currentTarget = e.currentTarget;
if ((0, _util["default"])(currentTarget)) {
(0, _singleton.show)(currentTarget, {
title: text
});
}
},
onMouseLeave: function onMouseLeave() {
return (0, _singleton.hide)();
}
}, text), isDefault && /*#__PURE__*/_react["default"].createElement(_tag["default"], null, (0, _localeContext.$l)('Table', 'default_flag')), isSelected && /*#__PURE__*/_react["default"].createElement("div", {
className: "".concat(prefixCls, "-filter-menu-option-selected")
}, /*#__PURE__*/_react["default"].createElement(_icon["default"], {
type: "check"
})), !isTenant && /*#__PURE__*/_react["default"].createElement("div", {
className: "".concat(prefixCls, "-filter-menu-option-icons")
}, /*#__PURE__*/_react["default"].createElement(_dropdown["default"], {
overlay: menu
}, /*#__PURE__*/_react["default"].createElement("span", {
style: {
userSelect: 'none'
}
}, /*#__PURE__*/_react["default"].createElement(_icon["default"], {
type: "more_horiz"
})))));
}; // 租户预置筛选,无保存按钮和另存为
return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_select["default"], {
isFlat: true,
placeholder: (0, _localeContext.$l)('Table', 'fast_filter'),
className: "".concat(prefixCls, "-filterName-select"),
dataSet: filterMenuDataSet,
name: "filterName",
dropdownMatchSelectWidth: false,
dropdownMenuStyle: {
width: '1.72rem'
},
optionRenderer: optionRenderer,
onChange: handleChange,
notFoundContent: (0, _localeContext.$l)('Table', 'no_save_filter')
}), conditionStatus === _enum2.RecordStatus.update ? /*#__PURE__*/_react["default"].createElement(_tag["default"], {
className: "".concat(prefixCls, "-filter-status")
}, /*#__PURE__*/_react["default"].createElement("span", null, (0, _localeContext.$l)('Table', 'modified'))) : null, conditionStatus === _enum2.RecordStatus.update && /*#__PURE__*/_react["default"].createElement("div", {
className: "".concat(prefixCls, "-filter-buttons")
}, isChooseMenu && (isTenant ? null : /*#__PURE__*/_react["default"].createElement(_button["default"], {
onClick: handleSaveOther
}, (0, _localeContext.$l)('Table', 'save_as'))), !isFuzzyQueryChange() && (isChooseMenu ? isTenant || conditionStatus === _enum2.RecordStatus.update && dataSet.getState(_TableDynamicFilterBar.SELECTCHANGE) && !shouldSaveValue && menuDataSet && menuDataSet.length : false) ? null : /*#__PURE__*/_react["default"].createElement(_button["default"], {
onClick: handleSave,
hidden: isTenant
}, (0, _localeContext.$l)('Table', 'save_button')), /*#__PURE__*/_react["default"].createElement(_button["default"], {
onClick: handleQueryReset
}, (0, _localeContext.$l)('Table', 'reset_button'))));
};
QuickFilterMenu.displayName = 'QuickFilterMenu';
var _default = (0, _mobxReactLite.observer)(QuickFilterMenu);
exports["default"] = _default;
//# sourceMappingURL=QuickFilterMenu.js.map