UNPKG

oadp-material

Version:
234 lines (229 loc) 8.76 kB
import _Box from "@alifd/next/es/box"; import _Button from "@alifd/next/es/button"; import _extends from "@babel/runtime/helpers/extends"; import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator"; import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/objectWithoutPropertiesLoose"; var _excluded = ["children", "name", "id", "entity", "tableComponentRefId", "defaultValue", "label", "style", "type", "size", "onClick", "queryAttributeList", "disabled", "__designMode"]; import _regeneratorRuntime from "@babel/runtime/regenerator"; import React, { useEffect, useState } from 'react'; import "./index.scss"; import { entityMetadataUtil } from 'oadp-common'; import OadpAttributeSettingTransfer from "../common/oadp-attribute-setting-transfer"; import ConditionGroup from "../oadp-entity-button-read-condition/condition-group"; // oadp-filter 组件定义 // oadp-filter 组件实例 var OadpEntityButtonReadCondition = function OadpEntityButtonReadCondition(_ref) { var children = _ref.children, name = _ref.name, id = _ref.id, entity = _ref.entity, tableComponentRefId = _ref.tableComponentRefId, defaultValue = _ref.defaultValue, label = _ref.label, style = _ref.style, type = _ref.type, size = _ref.size, onClick = _ref.onClick, queryAttributeList = _ref.queryAttributeList, disabled = _ref.disabled, __designMode = _ref.__designMode, otherProps = _objectWithoutPropertiesLoose(_ref, _excluded); // 使用 useState 管理 condition 的值 var _useState = useState(defaultValue || { id: '0', operator: 'and', value: [{ id: String(Date.now() + 1), attribute: '', operator: 'equals', valueType: 'MEMBER', value: '' }] }), condition = _useState[0], setConditionValue = _useState[1]; var _React$useState = React.useState(queryAttributeList), attributeShowDataSource = _React$useState[0], setAttributeShowDataSource = _React$useState[1]; var _React$useState2 = React.useState([]), attributeDataSource = _React$useState2[0], setAttributeDataSource = _React$useState2[1]; var _React$useState3 = React.useState("and"), operator = _React$useState3[0], setOperator = _React$useState3[1]; // 初始化逻辑(类似类组件的 componentDidMount) useEffect(function () { var fetchAttributeData = /*#__PURE__*/function () { var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() { var attributeData; return _regeneratorRuntime.wrap(function _callee$(_context) { while (1) switch (_context.prev = _context.next) { case 0: _context.prev = 0; console.log('OadpEntityButtonReadCondition componentDidMount props', { entity: entity, tableComponentRefId: tableComponentRefId }); if (entity) { _context.next = 5; break; } console.log('OadpEntityButtonReadCondition componentDidMount entity is undefined'); return _context.abrupt("return"); case 5: _context.next = 7; return entityMetadataUtil.asyncSelectAttributeListWithReferByEntityId(entity); case 7: attributeData = _context.sent; attributeData.list.forEach(function (item) { item.label = item.name || ''; item.value = item.id || ''; }); console.log('OadpEntityButtonReadCondition componentDidMount attributeData', attributeData.list); setAttributeDataSource(attributeData.list); _context.next = 16; break; case 13: _context.prev = 13; _context.t0 = _context["catch"](0); console.error('OadpEntityButtonReadCondition componentDidMount Failed to fetch field options:', _context.t0); case 16: case "end": return _context.stop(); } }, _callee, null, [[0, 13]]); })); return function fetchAttributeData() { return _ref2.apply(this, arguments); }; }(); fetchAttributeData(); }, [entity]); // 处理 Button 的 onClick 事件 var handleButtonClick = function handleButtonClick() { if (__designMode === 'design') { console.log('design mode OadpEntityButtonReadCondition click'); return; } if (onClick) { console.log('OadpEntityButtonReadCondition click condition', condition); onClick(condition); } }; var handleAdd = function handleAdd(parentId, isGroup) { var newItem = isGroup ? { id: String(Date.now()), operator: 'and', value: [{ id: String(Date.now() + 1), attribute: '', operator: 'equals', valueType: 'MEMBER', value: '' }, { id: String(Date.now() + 2), attribute: '', operator: 'equals', valueType: 'MEMBER' }] } : { id: String(Date.now()), attribute: '', operator: 'equals', valueType: 'MEMBER', value: '' }; console.log("handleAdd newItem", newItem); var newData = addItemToParent(condition, parentId, newItem); console.log("handleAdd newData", newData); setConditionValue(newData); }; var handleRemove = function handleRemove(id) { var newData = removeItemById(condition, id); setConditionValue(newData); }; var handleChange = function handleChange(id, updates) { console.log('handleChange with updates ', updates); var newData = updateConditionById(condition, id, updates); console.log('handleChange with newData ', newData); setConditionValue(newData); }; // 工具方法 var addItemToParent = function addItemToParent(filterCondition, parentId, newItem) { if (filterCondition.id === parentId) { return _extends({}, filterCondition, { value: [].concat(filterCondition.value || [], [newItem]) }); } if (filterCondition.value) { return _extends({}, filterCondition, { value: addItemToParent(filterCondition.value, parentId, newItem) }); } return filterCondition; }; var removeItemById = function removeItemById(filterCondition, id) { console.log('OadpEntityButtonReadCondition removeItemById ', filterCondition, id); if (!filterCondition.value) { return filterCondition; } // 确保 filterCondition.value 是一个数组 if (!Array.isArray(filterCondition.value)) { return filterCondition; } console.log('OadpEntityButtonReadCondition removeItemById filterCondition.value ', filterCondition.value); return _extends({}, filterCondition, { value: filterCondition.value.reduce(function (acc, item) { if (item.id === id) { return acc; } if (item.value && Array.isArray(item.value)) { return [].concat(acc, [_extends({}, item, { value: removeItemById(item, id).value })]); } return [].concat(acc, [item]); }, []) }); }; var updateConditionById = function updateConditionById(filterCondition, id, updates) { console.log('updateConditionById with updates ', updates, filterCondition); var newFilterCondition = _extends({}, filterCondition); if (filterCondition.id === id) { newFilterCondition = _extends({}, filterCondition, updates); } if (newFilterCondition.value && Array.isArray(newFilterCondition.value)) { newFilterCondition.value = newFilterCondition.value.map(function (item) { return updateConditionById(item, id, updates); }); } return newFilterCondition; }; var handleDialogOk = function handleDialogOk() { console.log('OadpEntityButtonReadCondition handleDialogOk'); }; return /*#__PURE__*/React.createElement(_Box, { direction: "row", justify: "start", align: "center" }, /*#__PURE__*/React.createElement(ConditionGroup, { condition: condition, attributeDataSource: attributeDataSource, onAdd: handleAdd, onRemove: handleRemove, onChange: handleChange, handleButtonClick: handleButtonClick }), /*#__PURE__*/React.createElement(_Button, { type: 'primary', size: 'medium' // style={ style || { width: '60%' }} , onClick: handleButtonClick }, " \u6761\u4EF6\u67E5\u8BE2"), /*#__PURE__*/React.createElement(OadpAttributeSettingTransfer, { attributeDataSource: attributeDataSource, attributeShowDataSource: attributeShowDataSource, onConfirm: handleDialogOk, __designMode: __designMode })); }; export default OadpEntityButtonReadCondition;