UNPKG

ming-demo3

Version:
340 lines (284 loc) 10.9 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"] = exports.DimensionNavTreeControl = void 0; 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 _react = _interopRequireDefault(require("react")); var _baseui = require("@mdf/baseui"); var eChartCommon = _interopRequireWildcard(require("../echart/eChartCommon")); var _util = require("@mdf/cube/lib/helpers/util"); var Search = _baseui.Input.Search; var TreeNode = _baseui.Tree.TreeNode; var DimensionNavTreeControl = function (_React$Component) { (0, _inherits2["default"])(DimensionNavTreeControl, _React$Component); function DimensionNavTreeControl(props) { var _this; (0, _classCallCheck2["default"])(this, DimensionNavTreeControl); _this = (0, _possibleConstructorReturn2["default"])(this, (0, _getPrototypeOf2["default"])(DimensionNavTreeControl).call(this, props)); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onExpand", function (expandedKeys, e) { _this.expandedKeys = expandedKeys; if (e) { _this.setState({ autoExpandParent: false }); } else { _this.setState({ autoExpandParent: true }); } }); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onChange", function (e) { var value = e.target.value; var expandedKeys = []; if (value != "") { _this.getExpandedKeys(_this.state.treeData.recordList, value, expandedKeys); } _this.expandedKeys = expandedKeys; _this.setState({ searchValue: value, autoExpandParent: true }); }); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onFilterClick", function (params) { if (!params.bFromNav && _this.state.firstQueryDone) { _this.state.condition = params.condition; _this.getData(); } }); _this.state = { billnum: props.viewModel.getParams().billNo || "ct_costdetail", searchValue: '', autoExpandParent: true, treeData: {}, firstQueryDone: false }; _this.expandedKeys = []; _this.selectedKeys = []; _this.bSetDefaultOpenEle = false; _this.TreeHeadKey = "all"; _this.dimensionId = undefined; _this.defaultOpenEle = undefined; return _this; } (0, _createClass2["default"])(DimensionNavTreeControl, [{ key: "doProxy", value: function doProxy(url, method, params, callback, noUniform) { var config = { url: url, method: method, params: params }; if (noUniform) { config.options = { uniform: false }; } (0, _util.proxy)(config).then(function (json) { callback(json); }); } }, { key: "getData", value: function getData() { var _this2 = this; var self = this; if (this.dimensionId) { var callback = function callback(json) { if (json.code === 200) { if (json.data && json.data.recordList && json.data.recordList.length > 0) { self.bSetDefaultOpenEle = true; self.setState({ treeData: json.data }); } else { self.setState({ treeData: [] }); _this2.filterViewModel.execute('navClick', {}); } } }; self.doProxy('/report/list', 'POST', { billnum: this.state.billnum, condition: self.state.condition, dimensionId: this.dimensionId }, callback); } } }, { key: "getTitle", value: function getTitle(navKey, title) { var searchValue = this.state.searchValue; if (searchValue != "") { var index = title.indexOf(searchValue); var beforeStr = title.substr(0, index); var afterStr = title.substr(index + searchValue.length); if (index > -1) { return _react["default"].createElement("span", null, beforeStr, _react["default"].createElement("span", { style: { color: '#f50' } }, searchValue), afterStr); } else { if (this.expandedKeys.indexOf(navKey) >= 0) return _react["default"].createElement("span", null, title);else return undefined; } } return _react["default"].createElement("span", null, title); } }, { key: "getTreeNodes", value: function getTreeNodes(recordList, parentFilter, parentKey, parentKeys) { var _this3 = this; var self = this; if (parentKey == this.TreeHeadKey) { this.defaultEle = undefined; } var treeNodes; if (recordList && recordList.length > 0) { treeNodes = []; recordList.forEach(function (ele) { var filter = _.cloneDeep(parentFilter); ele.field && ele.field.forEach(function (item, index) { if (ele.caption[index] != "null") filter[item] = ele.caption[index]; }); if (!ele.navKey) { ele.navKey = "navKey_" + Math.random().toString().replace(".", ""); ele.parentKey = parentKey; ele.parentKeys = parentKeys; ele.joinedCaption = ele.caption && ele.caption.join("_"); ele.joinedCaption = ele.joinedCaption || "空分组项"; ele.filter = filter; } if (ele.joinedCaption) { if (!self.defaultEle) { self.defaultEle = ele; } else if (ele.parentKey == self.defaultEle.navKey) { self.defaultEle = ele; } var title = _this3.getTitle(ele.navKey, ele.joinedCaption); if (title) { var childrenNodes = undefined; ele.bLeaf = true; if (ele.children && ele.children.length > 0) { ele.bLeaf = false; childrenNodes = _this3.getTreeNodes(ele.children, filter, ele.navKey, parentKeys + "," + ele.navKey); } treeNodes.push(_react["default"].createElement(TreeNode, { title: title, key: ele.navKey, filter: filter, ele: ele }, childrenNodes)); } } else { eChartCommon.LogChartInfo("维度导航树 查询返回的数据存在空树节点。行数据 ", JSON.stringify(ele), 999); } }); } return treeNodes; } }, { key: "onSelect", value: function onSelect(selectedKeys, e) { var bExecute = true; if (this.props.viewModel.hasEvent("DimensionNavTreeClicked")) { bExecute = this.props.viewModel.execute('DimensionNavTreeClicked', e.node.props.ele); } if (bExecute) { eChartCommon.LogChartInfo("维度导航树 选择点的过滤项目 ", JSON.stringify(e.node.props.filter), 901); this.selectedKeys = selectedKeys; this.forceUpdate(); this.filterViewModel.execute('navClick', e.node && e.node.props.filter || {}); } return bExecute; } }, { key: "getExpandedKeys", value: function getExpandedKeys(recordList, value, expandedKeys) { var _this4 = this; if (recordList && recordList.length > 0) { recordList.forEach(function (ele) { if (ele.joinedCaption.indexOf(value) > -1) { if (expandedKeys.indexOf(ele.parentKey) == -1) expandedKeys.push(ele.parentKey); } if (ele.children && ele.children.length > 0) { _this4.getExpandedKeys(ele.children, value, expandedKeys); } }); } } }, { key: "render", value: function render() { var _this5 = this; var treeNodes = this.getTreeNodes(this.state.treeData.recordList, {}, this.TreeHeadKey, this.TreeHeadKey); if (this.bSetDefaultOpenEle == true) { if (this.defaultEle) { this.expandedKeys = this.defaultEle.parentKeys.split(",") || []; this.selectedKeys = [this.defaultEle.navKey]; this.filterViewModel.execute('navClick', this.defaultEle.filter || {}); } this.bSetDefaultOpenEle = false; } return _react["default"].createElement("div", null, _react["default"].createElement(Search, { style: { marginBottom: 5 }, placeholder: "Search", onChange: this.onChange }), _react["default"].createElement(_baseui.Tree, { onSelect: function onSelect(selectedKeys, e) { return _this5.onSelect(selectedKeys, e); }, onExpand: this.onExpand, expandedKeys: this.expandedKeys, autoExpandParent: this.state.autoExpandParent, selectedKeys: this.selectedKeys }, _react["default"].createElement(TreeNode, { title: "\u5168\u90E8\u7C7B\u522B", key: this.TreeHeadKey }, treeNodes))); } }, { key: "componentDidMount", value: function componentDidMount() { var self = this; var viewModel = self.props.viewModel; viewModel.on("filterClick", self.onFilterClick); viewModel.on('firstQueryDone', function (params) { self.state.firstQueryDone = params; }); viewModel.on('dimensionChanged', function (params) { self.dimensionId = params.dimensionId; if (params.dimensionId) { if (self.state.firstQueryDone) self.getData(); } }); this.filterViewModel = viewModel.getCache('FilterViewModel'); } }, { key: "componentDidUpdate", value: function componentDidUpdate() {} }, { key: "componentWillReceiveProps", value: function componentWillReceiveProps(nextProps) {} }, { key: "componentWillUnmount", value: function componentWillUnmount() {} }]); return DimensionNavTreeControl; }(_react["default"].Component); exports.DimensionNavTreeControl = DimensionNavTreeControl; ; var _default = DimensionNavTreeControl; exports["default"] = _default; //# sourceMappingURL=DimensionNavTree.js.map