oadp-material
Version:
oadp-material
207 lines (201 loc) • 6.83 kB
JavaScript
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;