UNPKG

oadp-material

Version:
207 lines (201 loc) 6.83 kB
import _Box from "@alifd/next/es/box"; import _extends from "@babel/runtime/helpers/extends"; import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/objectWithoutPropertiesLoose"; var _excluded = ["children", "name", "id", "entity", "tableComponentRefId", "defaultValue", "label", "style", "type", "size", "onClick", "disabled", "__designMode"]; import React, { useEffect, useState } from 'react'; import "./index.scss"; import ConditionGroup from "./condition-group"; import { entityDataUtil } from 'oadp-common'; // oadp-filter 组件定义 // oadp-filter 组件实例 var OadpEntityButtonReadRule = function OadpEntityButtonReadRule(_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, 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 _useState2 = useState(), attributeDataSource = _useState2[0], setAttributeDataSource = _useState2[1]; // 初始化逻辑(类似类组件的 componentDidMount) useEffect(function () { // 1. 数据请求 try { var _condition = { "model": "attribute", "condition": { "attribute": "entityId", "operator": "equals", "value": entity }, "orderBy": [{ "attribute": "createAt", "operator": "desc" }], "pageNum": 1, "pageSize": 10000 }; entityDataUtil.selectPageListWithReferByCondition('attribute', _condition, function (response) { console.log('response', response); response.data.list.forEach(function (item) { item.label = item.name || ''; item.value = item.logicalName || ''; }); setAttributeDataSource(response.data.list); }); } catch (error) { console.error('OadpEntityButtonReadRule Failed to fetch field options:', error); } }, []); // 空依赖数组确保只运行一次 console.log('OadpEntityButtonReadRule props:', _extends({ children: children, name: name, id: id, entity: entity, tableComponentRefId: tableComponentRefId, // value, defaultValue: defaultValue, label: label, style: style, type: type, size: size, onClick: onClick, disabled: disabled, __designMode: __designMode }, otherProps)); if (__designMode === 'design') { onClick = function onClick(e) { console.log('design mode OadpEntityButtonReadRule click'); }; } // 处理 Button 的 onClick 事件 var handleButtonClick = function handleButtonClick() { if (onClick) { console.log('OadpEntityButtonReadRule 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('OadpEntityButtonReadRule removeItemById ', filterCondition, id); if (!filterCondition.value) { return filterCondition; } // 确保 filterCondition.value 是一个数组 if (!Array.isArray(filterCondition.value)) { return filterCondition; } console.log('OadpEntityButtonReadRule 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; }; return /*#__PURE__*/React.createElement(_Box, { direction: "column" }, /*#__PURE__*/React.createElement(ConditionGroup, { condition: condition, attributeDataSource: attributeDataSource, onAdd: handleAdd, onRemove: handleRemove, onChange: handleChange, handleButtonClick: handleButtonClick })); }; export default OadpEntityButtonReadRule;