UNPKG

ming-demo3

Version:
877 lines (800 loc) 30.3 kB
"use strict"; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard"); var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof")); var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn")); var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf")); var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized")); var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits")); var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _cloneDeep2 = _interopRequireDefault(require("lodash/cloneDeep")); var _get2 = _interopRequireDefault(require("lodash/get")); var _react = _interopRequireDefault(require("react")); var _baseui = require("@mdf/baseui"); var BasicComponents = _interopRequireWildcard(require("../basic")); var _FilterScheme = _interopRequireDefault(require("./FilterScheme")); var _addEventListener = _interopRequireDefault(require("rc-util/lib/Dom/addEventListener")); var _uuid = _interopRequireDefault(require("uuid")); var Row = BasicComponents.Row, Col = BasicComponents.Col, Button = BasicComponents.Button, Label = BasicComponents.Label, Tag2 = BasicComponents.Tag2; var BasicComponentsMap = {}; for (var attr in BasicComponents) { BasicComponentsMap[attr.toLocaleLowerCase()] = BasicComponents[attr]; } var ConvenientQuery = function (_React$Component) { (0, _inherits2["default"])(ConvenientQuery, _React$Component); function ConvenientQuery(props) { var _this; (0, _classCallCheck2["default"])(this, ConvenientQuery); _this = (0, _possibleConstructorReturn2["default"])(this, (0, _getPrototypeOf2["default"])(ConvenientQuery).call(this, props)); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "handleSchemeChange", function (solutionId) { _this.vm.fireEvent('loadScheme', solutionId); }); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "handleSchemeListChange", function (solutionList) { _this.vm.setCache('schemeList', solutionList); }); var params = {}; if (props.model && props.model.getParams) { params = props.model.getParams(); } var filterId = props.config && props.config.filterid || params.filterId; var cardKey = params.cardKey || params.where && params.where.billData && params.where.billData.billnum; var Id = props.model ? props.model.id : ""; var cStyle = props.cStyle && JSON.parse(props.cStyle) || {}; _this.bHideFilterScheme = cStyle.bHideFilterScheme || false; console.log(filterId); _this.state = { filterId: filterId, cardKey: cardKey, modelId: Id, schemeData: [], current: '', schemeName: '', showMore: false, popFlag: false, filterModel: [], tag2FilterCount: 0, commonFilterCount: 0, filterAreaCount: 0, firstRowOnlyTag2: false, cacheFilterData: {}, itemStates: {} }; _this.showFields = new Array(); _this.filterModel_Tmp = []; _this.state.isInPanel = params.isInPanel ? params.isInPanel : false; _this.state.isInDesign = params.isInDesign ? params.isInDesign : false; _this.state.panelType = params.panelType || 0; _this.vm = cb.loader.initMetaCommonViewModel('FilterViewModel', 'filterViewModel', { filterId: filterId, domain: params.domain, condition: params.condition, cardKey: cardKey, isInPanel: _this.state.isInPanel, isInDesign: _this.state.isInDesign, solutionId: params.solutionId, viewid: props.model && props.model.getParams && (0, _get2["default"])(props.model.getParams(), 'query.viewid'), bHasNullDate: props.model && props.model.getParams && props.model.getParams().bHasNullDate || false }, _this.props.model ? _this.props.model : {}, ['filterClick', 'filterSearch']); _this._DocumentMouseDown = _this._DocumentMouseDown.bind((0, _assertThisInitialized2["default"])(_this)); _this.props.model && _this.props.model.on('updateCondition', function (condition) { if (!condition || !condition.commonVOs || !condition.commonVOs.length) return; var flag = true; _this.vm.setCache('condition', condition); condition.commonVOs.forEach(function (a) { var attr = a.itemName; var itemModel = _this.vm.get(attr); if (!itemModel) return; itemModel.getFromModel().setValue(a.value1); var ctrlType = itemModel.getState('ctrlType'); if (ctrlType && ctrlType.trim().toLocaleLowerCase() === 'tagbutton') flag = false; }); if (flag) _this.SearchEvent(); }); _this.props.model && _this.props.model.on('eChartPanel_GetCondition', function () { _this.SearchEvent(); }); return _this; } (0, _createClass2["default"])(ConvenientQuery, [{ key: "componentDidMount", value: function componentDidMount() { var _this2 = this; if (this.vm) { this.vm.addListener(this); this.vm.on('updateViewMeta', function (args) { var itemStates = _this2.state.itemStates; itemStates[args.code] = { visible: args.visible }; _this2.setState({ itemStates: itemStates }); }); } this.mousedownHandler = (0, _addEventListener["default"])(document, 'mousedown', this._DocumentMouseDown); var cacheFilterData = this.props.model ? this.props.model.getParams().cacheFilterData : {}; this.setState({ cacheFilterData: cacheFilterData }); } }, { key: "componentDidUpdate", value: function componentDidUpdate() { this.props.model && this.props.model.execute('filterHeightUpdate'); } }, { key: "componentWillUnmount", value: function componentWillUnmount() { this.vm.removeListener(this); this.mousedownHandler.remove(); this.mousedownHandler = null; } }, { key: "_DocumentMouseDown", value: function _DocumentMouseDown(e) { var p1 = cb.dom(event.target).parents('.filterSetting'); var p2 = cb.dom(event.target).parents('.ant-popover'); if (p1.length == 0 && p2.length == 0 && this.state.popFlag) { this.setState({ popFlag: false }); } } }, { key: "initFilterFields", value: function initFilterFields(args) { var self = this; var filterModel = []; var cacheFilterData = this.state.cacheFilterData; var CommonModel = args.filterDetail.CommonModel; var AllFilterModel = args.filterDetail.AllFilterModel; AllFilterModel.forEach(function (eleAll) { CommonModel.forEach(function (eleCommon) { if (eleAll.id && eleCommon.itemId && eleCommon.itemId == eleAll.id) { var tmp = {}; Object.assign(tmp, eleAll, eleCommon); filterModel.push(tmp); } }, this); }, this); this.vm.fireEvent('initFilterViewModel', { filterModel: filterModel }); for (var key in cacheFilterData) { var model = this.vm.get(key); var value = cacheFilterData[key]; if (model) { if ((0, _typeof2["default"])(value) == 'object') { var value1 = value.value1, value2 = value.value2; if (model.getFromModel()) model.getFromModel().setValue(value1); if (model.getToModel()) model.getToModel().setValue(value2); } else { model.setValue(value); } } } this.setState({ schemeData: args.schemeData, current: args.current, schemeName: args.schemeName, filterModel: filterModel.sort(function (a, b) { return a.orderId - b.orderId; }), showSearch: args.allAutoFilter ? false : true, filterAreaCount: 0 }); } }, { key: "SaveSchemeEvent", value: function SaveSchemeEvent(e) { this.state.popFlag = false; if (this.vm) { var args = {}; args.schemeId = this.state.current; args.filterModel = this.filterModel_Tmp; args.filterId = this.vm.getParams().filterId; args.isDefault = 0; args.isPublic = 0; args.solutionName = this.state.schemeName; this.vm.get('save').fireEvent('click', args); } } }, { key: "SearchEvent", value: function SearchEvent() { if (this.vm) { this.vm.fireEvent('searchEvent', { model: this.props.model, solutionid: this.state.current }); this.vm.get('search').fireEvent('click', { model: this.props.model, solutionid: this.state.current }); } } }, { key: "buttonClick", value: function buttonClick(e, type) { if (type == 'search') { if (this.props.handleClick) { var cacheFilterData = this.vm.collectData(); var vmparams = this.props.model.getParams(); vmparams.cacheFilterData = cacheFilterData; this.props.handleClick(null); } else { this.SearchEvent(); } } else { var showMore = false; if (type == 'more') showMore = true; this.setState({ showMore: showMore }); } } }, { key: "showPopClick", value: function showPopClick() { var filterModel = this.state.filterModel; if (filterModel.length > 0) { var relatedTag = filterModel.filter(function (v) { return v.related; }).map(function (ele) { return ele.related; }); filterModel = filterModel.filter(function (v) { return !relatedTag.includes(v.itemName); }); } this.filterModel_Tmp = (0, _cloneDeep2["default"])(filterModel); this.setState({ popFlag: !this.state.popFlag }); } }, { key: "onMouseEnter", value: function onMouseEnter(e, index) { this.filterModel_Tmp[index].bShowUpDown = true; this.setState({ popFlag: this.state.popFlag }); } }, { key: "onMouseLeave", value: function onMouseLeave(e, index) { this.filterModel_Tmp.forEach(function (ele) { ele.bShowUpDown = false; }); this.setState({ popFlag: this.state.popFlag }); } }, { key: "onChecked", value: function onChecked(e, element, index) { var checked = e.target.checked; var num = 0; if (checked == false) { this.filterModel_Tmp.forEach(function (element, index) { if (element.isCommon == true) { num = num + 1; } }); if (num > 1) this.filterModel_Tmp[index].isCommon = checked; } else { this.filterModel_Tmp[index].isCommon = checked; } } }, { key: "sortClick", value: function sortClick(type, index) { var maxLen = this.filterModel_Tmp.length - 1; var pre = cb.utils.extend(true, {}, this.filterModel_Tmp[index - 1]); var next = cb.utils.extend(true, {}, this.filterModel_Tmp[index + 1]); var now = cb.utils.extend(true, {}, this.filterModel_Tmp[index]); if (type == 'up') { if (index != 0) { var orderId = pre.orderId; pre.orderId = now.orderId; now.orderId = orderId; this.filterModel_Tmp[index] = pre; this.filterModel_Tmp[index - 1] = now; } } else { if (index < maxLen) { var _orderId = next.orderId; next.orderId = now.orderId; now.orderId = _orderId; this.filterModel_Tmp[index] = next; this.filterModel_Tmp[index + 1] = now; } } this.setState(); } }, { key: "cancelClick", value: function cancelClick(type) { this.setState({ popFlag: false }); } }, { key: "getFilterContent", value: function getFilterContent() { var _this4 = this; var filterContent = []; this.filterModel_Tmp.forEach(function (element, index) { var _this3 = this; var item; var bShowUpDown = element.bShowUpDown ? element.bShowUpDown : false; var isCommon = element.isCommon; item = bShowUpDown ? _react["default"].createElement(Row, { style: { minHeight: "25px" }, onMouseEnter: function onMouseEnter(e) { return _this3.onMouseEnter(e, index); }, onMouseLeave: function onMouseLeave(e) { return _this3.onMouseLeave(e, index); } }, _react["default"].createElement("div", { className: "pull-left", title: element.cShowCaption }, _react["default"].createElement(_baseui.Checkbox, { checked: isCommon, onChange: function onChange(e) { return _this3.onChecked(e, element, index); } }, element.cShowCaption)), _react["default"].createElement("div", { className: "pull-right" }, _react["default"].createElement(Button, { style: { borderWidth: 0 }, icon: "arrow-up", onClick: function onClick() { return _this3.sortClick('up', index); } }), _react["default"].createElement(Button, { style: { borderWidth: 0 }, icon: "arrow-down", onClick: function onClick() { return _this3.sortClick('down', index); } }))) : _react["default"].createElement(Row, { style: { minHeight: "25px" }, onMouseEnter: function onMouseEnter(e) { return _this3.onMouseEnter(e, index); }, onMouseLeave: function onMouseLeave(e) { return _this3.onMouseLeave(e, index); } }, _react["default"].createElement("div", { className: "pull-left", title: element.cShowCaption }, _react["default"].createElement(_baseui.Checkbox, { checked: isCommon, onChange: function onChange(e) { return _this3.onChecked(e, element, index); } }, element.cShowCaption)), _react["default"].createElement("div", { className: "pull-right" })); filterContent.push(item); }, this); var buttonClass = 'filter-btn-fixed'; return _react["default"].createElement("div", { className: buttonClass, style: { overflow: "auto", height: "250px" } }, _react["default"].createElement("div", { className: "filter-txt" }, filterContent), _react["default"].createElement("div", { className: "filter-btn-1" }, _react["default"].createElement(Button, { type: "primary", onClick: function onClick() { return _this4.SaveSchemeEvent('save'); } }, "\u4FDD\u5B58"), _react["default"].createElement(Button, { type: "default", onClick: function onClick() { return _this4.cancelClick('cancel'); } }, "\u53D6\u6D88"))); } }, { key: "checkTagAndFilterInfo", value: function checkTagAndFilterInfo() { this.state.tag2FilterCount = 0; this.state.commonFilterCount = 0; this.state.filterModel.forEach(function (ele, index) { if (ele.isCommon == 1 || ele.isCommon == true) { if (ele.ctrlType.toLocaleLowerCase() == "tagbutton" && ele.autoFlt == true) { this.state.tag2FilterCount = this.state.tag2FilterCount + 1; } else { this.state.commonFilterCount = this.state.commonFilterCount + 1; } } }, this); } }, { key: "render", value: function render() { var _this5 = this; this.checkTagAndFilterInfo(); var tag2FilterCount = this.state.tag2FilterCount; var commonFilterCount = this.state.commonFilterCount; var tags; var controls = []; var content = null; var _this$state = this.state, showMore = _this$state.showMore, filterId = _this$state.filterId, cardKey = _this$state.cardKey, modelId = _this$state.modelId; if (commonFilterCount > 0 || tag2FilterCount > 0) { var tmpShowMoreStr = showMore ? _react["default"].createElement(Button, { style: { borderWidth: 0 }, className: "showMore", type: "ghost", size: "small", onClick: function onClick(e) { return _this5.buttonClick(e, ''); } }, _react["default"].createElement(_baseui.Icon, { type: "up-circle" })) : _react["default"].createElement(Button, { style: { borderWidth: 0 }, className: "showMore", type: "ghost", size: "small", onClick: function onClick(e) { return _this5.buttonClick(e, 'more'); } }, _react["default"].createElement(_baseui.Icon, { type: "down-circle" })); controls = this.getControls(tmpShowMoreStr); } if (this.filterModel_Tmp && this.filterModel_Tmp.length > 0) { content = this.getFilterContent(); } var filterAreaCount = this.state.filterAreaCount; var showMoreStr; var rowNum = this.props.cols ? this.props.cols : 3; if (filterAreaCount > rowNum && !this.props.autoExpand) { showMoreStr = showMore ? _react["default"].createElement(Button, { style: { borderWidth: 0 }, className: "showMore", type: "ghost", size: "small", onClick: function onClick(e) { return _this5.buttonClick(e, ''); } }, _react["default"].createElement(_baseui.Icon, { type: "up-circle" })) : _react["default"].createElement(Button, { style: { borderWidth: 0 }, className: "showMore", type: "ghost", size: "small", onClick: function onClick(e) { return _this5.buttonClick(e, 'more'); } }, _react["default"].createElement(_baseui.Icon, { type: "down-circle" })); } else { showMoreStr = _react["default"].createElement("span", { style: { paddingLeft: 5 } }); } var showSearchStr; if (this.state.firstRowOnlyTag2 == false || commonFilterCount > 0 && showMore || this.props.autoExpand) { if (this.state.isInDesign == false && this.state.showSearch) { showSearchStr = _react["default"].createElement(Button, { delay: true, type: "ghost", style: { "float": "right" }, className: "up-search", onClick: function onClick(e) { return _this5.buttonClick(e, 'search'); } }, "\u641C\u7D22"); } } else { showSearchStr = _react["default"].createElement("span", { style: { paddingLeft: 5 } }); } var showFilterSetting; var panelType = this.props.panelType; if (this.state.filterModel.length > rowNum && !this.state.autoExpand && (this.state.isInPanel == false || this.state.isInPanel == true && this.state.isInDesign == true && panelType == 2)) { showFilterSetting = _react["default"].createElement(_baseui.Popover, { overlayStyle: { width: "200px" }, getPopupContainer: function getPopupContainer(triggerNode) { return document.getElementById('yxyweb-support-mount-popover') || document.body || triggerNode.parentNode; }, placement: "bottomRight", content: content, trigger: "click", visible: this.state.popFlag }, _react["default"].createElement("div", { className: "ant-popover-open-count" }, _react["default"].createElement(Button, { className: "filterSetting", style: { borderWidth: 1 }, onClick: function onClick() { return _this5.showPopClick(); }, type: "ghost", size: "small" }, "\u8BBE\u7F6E"))); } else { showFilterSetting = _react["default"].createElement("span", { style: { paddingLeft: 5 } }); } var filterscheme = this.props.showScheme == false || this.bHideFilterScheme == true ? null : _react["default"].createElement(_FilterScheme["default"], { filterVM: this.vm, filterId: filterId, Id: modelId, cardKey: cardKey, schemeChange: this.handleSchemeChange, schemeListChange: this.handleSchemeListChange, model: this.props.model }); return _react["default"].createElement(Row, { className: "".concat(this.props.config && this.props.config.classname, " ").concat(this.props.autoExpand === false && 'voucher-filter') }, filterscheme, _react["default"].createElement(Col, { className: "filter-controls" }, _react["default"].createElement("div", null, _react["default"].createElement(Row, { colCount: rowNum }, controls))), _react["default"].createElement(Col, { className: "up-show" }, this.state.panelType == 3 ? "" : showMoreStr, showFilterSetting, showSearchStr)); } }, { key: "parseControls", value: function parseControls(filterItems, viewModel) { var _this6 = this; var relatedFields = [], relatedControls = {}, controls = []; filterItems.forEach(function (control) { if (!control.extendField) return; try { var config = JSON.parse(control.extendField); var related = config.related; if (!related) return; if (!control.related) { control.related = related; control.config = config; } if (cb.utils.isArray(related)) { related.forEach(function (item) { relatedFields.push(item); }); } else { relatedFields.push(related); } } catch (e) {} }); var itemStates = this.state.itemStates; filterItems.forEach(function (control) { if (itemStates[control.itemName] && itemStates[control.itemName].visible === false) return; if (!control.isCommon) return; var index = relatedFields.indexOf(control.itemName); if (index > -1) { relatedControls[control.itemName] = _this6.getControl(control, viewModel.get(control.itemName), control.config); } else { controls.push(control); } }); return { controls: controls, relatedControls: relatedControls }; } }, { key: "getControls", value: function getControls(tmpShowMoreStr) { var controls = []; var control, filterVMField; var tag_rowNum = 0; var tmp_FilterAreaCount = 0; var cur_FilterAreaCount = 0; var cur_FirstRowOnlyTag2 = true; var rowNum = this.props.cols ? this.props.cols : 3; var filterObj = this.parseControls(this.state.filterModel, this.vm); filterObj.controls.forEach(function (ele, index) { var ctrlType = ele.ctrlType.trim().toLocaleLowerCase(); if (ele.isCommon == 1 || ele.isCommon == true) { control = undefined; var config = null; try { config = JSON.parse(ele.extendField); } catch (e) { config = {}; } var related = ele.related; var relatedControl = []; if (related) { if (cb.utils.isArray(related)) { related.forEach(function (item) { relatedControl.push(filterObj.relatedControls[item]); }); } else { relatedControl.push(filterObj.relatedControls[related]); } } if (!relatedControl.length) relatedControl = null; if (ctrlType === 'tagbutton') { cur_FilterAreaCount = config.cols || rowNum; tmp_FilterAreaCount = tmp_FilterAreaCount + cur_FilterAreaCount; filterVMField = this.vm.get(ele.itemName); var fromModel = filterVMField.getFromModel(); control = _react["default"].createElement(Row, { key: ele.itemName }, _react["default"].createElement(Col, null, _react["default"].createElement(Tag2, { TagTitle: ele.cShowCaption, TagData: ele.enumString, TagCanMultSel: ele.multSelect == 0 ? false : true, TagClicked: this.Tag2Clicked, model: fromModel, relatedControl: relatedControl }))); } else if (ctrlType === 'predicatedatepicker') { cur_FilterAreaCount = rowNum; tmp_FilterAreaCount += cur_FilterAreaCount; tag_rowNum += 1; var ComName = BasicComponentsMap[ctrlType]; var model = this.vm.get(ele.itemName).getFromModel(); control = _react["default"].createElement(Row, { key: ele.itemName }, _react["default"].createElement(ComName, { model: model, isInPanel: this.state.isInPanel, isInDesign: this.state.isInDesign, panelType: this.state.panelType, cShowCaption: ele.cShowCaption, isInFilterJSX: true })); } else { tag_rowNum += 1; cur_FilterAreaCount = 1; tmp_FilterAreaCount = tmp_FilterAreaCount + cur_FilterAreaCount; filterVMField = this.vm.get(ele.itemName); if (!!filterVMField) control = this.getControl(ele, filterVMField, config); } if (tmp_FilterAreaCount <= rowNum && tag_rowNum > 0) { cur_FirstRowOnlyTag2 = false; } if (control) { var tmpClassName = ""; var tmp; if (this.state.panelType == 3 && controls.length == 0) { tmpClassName = "UpDown_Location"; tmp = tmpShowMoreStr; } if (this.state.showMore || this.props.autoExpand) { controls.push(_react["default"].createElement(Col, { key: ele.itemName, span: cur_FilterAreaCount, className: tmpClassName }, control, tmp)); } else { if (tmp_FilterAreaCount <= rowNum) { controls.push(_react["default"].createElement(Col, { key: ele.itemName, span: cur_FilterAreaCount, className: tmpClassName }, control, tmp)); } } } } }, this); this.state.filterAreaCount = tmp_FilterAreaCount; this.state.firstRowOnlyTag2 = cur_FirstRowOnlyTag2; return controls; } }, { key: "getComponent", value: function getComponent(ComName, model) { var config = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; var ctrlType = arguments.length > 3 ? arguments[3] : undefined; var cShowCaption = arguments.length > 4 ? arguments[4] : undefined; var id = arguments.length > 5 ? arguments[5] : undefined; if (config.cStyle) { config.cStyle = JSON.stringify(config.cStyle); } return ComName ? _react["default"].createElement(ComName, (0, _extends2["default"])({ key: id, model: model, title: cShowCaption, isInFilterJSX: true }, config)) : _react["default"].createElement("h1", null, ctrlType); } }, { key: "getControl", value: function getControl(ele, filterVMField, config) { var compareLogic = ele.compareLogic; var fromModel = filterVMField.getFromDisplayModel() || filterVMField.getFromModel(); var toModel = filterVMField.getToModel(); var ctrlType; if (ele.ctrlType) ctrlType = ele.ctrlType.trim().toLocaleLowerCase();else ctrlType = "input"; var ComName = BasicComponentsMap[ctrlType]; var control; if (compareLogic === 'between') { control = _react["default"].createElement("div", { className: "Test-time-two" }, _react["default"].createElement(Col, { span: 11 }, this.getComponent(ComName, fromModel, config, ctrlType, null, 'fromModel' + ele.id)), _react["default"].createElement(Col, { span: 2, className: "sp-range-txt" }, _react["default"].createElement("span", null, "\u81F3")), _react["default"].createElement(Col, { span: 11 }, this.getComponent(ComName, toModel, config, ctrlType, 'toModel' + ele.id))); } else { control = this.getComponent(ComName, fromModel, config, ctrlType, ele.cShowCaption, 'fromModel' + ele.id); } var title = ele.mustInput ? _react["default"].createElement("label", null, _react["default"].createElement(_baseui.Icon, { type: "star" }), ele.cShowCaption) : ele.cShowCaption; return _react["default"].createElement("div", { className: "filter-hide" }, _react["default"].createElement(Label, { isInFilterJSX: true, control: control, title: title })); } }]); return ConvenientQuery; }(_react["default"].Component); exports["default"] = ConvenientQuery; ; //# sourceMappingURL=index.js.map