UNPKG

linkmore-design

Version:

🌈 🚀lm组件库。🚀

185 lines (177 loc) 5.26 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _react = _interopRequireWildcard(require("react")); var _index = require("../../index"); var _Controls = _interopRequireDefault(require("../Controls")); // 第二层抽屉,弹出数据选择 const ValueDrawer = ({ instance }) => { const { state, dispatch, dataSource, locale } = instance; const { valueDrawer, complexDrawer } = state; const [form] = _index.Form.useForm(); const onClose = () => { dispatch({ type: 'changeValueDrawer', valueDrawer: { ...valueDrawer, visible: false } }); form.resetFields(); }; /* * customModal.data.type === 'nested' 时,处理不同(未增加) * */ const onSave = async () => { try { const { mode, value } = await form.validateFields(); // 选中的筛选数据 const filterValues = { ...complexDrawer.data }; // 查找当前筛选的值 const currentItem = valueDrawer.data; // 是否嵌套筛选 const isNested = currentItem.type === 'nested'; // 嵌套筛选的键值不同 let nField = valueDrawer.data.field; let nValue = value; if (isNested) { // 删除原有筛选 delete filterValues[currentItem.field]; currentItem.data.forEach(element => { delete filterValues[element.value]; }); // 存在子级嵌套时,改变键值 if (value?.subValue?.children) { nField = value.subValue.value; } nValue = value?.value || []; } // 判断是新增还是编辑 Object.assign(filterValues, { [nField]: { mode, value: nValue, originField: currentItem.field } }); dispatch({ type: 'changeComplexDrawer', complexDrawer: { ...complexDrawer, data: filterValues } }); onClose(); } catch (error) { console.log('校验错误!', error); } }; const onValuesChange = values => { if (values.field) { form.setFieldsValue({ value: [] }); } if (values.value) { // 嵌套筛选双击触发 if (values?.value?.type === 'dbclick') { onSave(); } } }; // 动态展示选择框 const DynamicSelect = (0, _react.useCallback)(({ getFieldValue }) => { const field = getFieldValue('field'); const findItem = dataSource?.find(v => v.field === field) || {}; const options = findItem?.data || []; if (field) { return /*#__PURE__*/_react.default.createElement(_index.Form.Item, { name: "value", label: locale.selectField, noStyle: true }, /*#__PURE__*/_react.default.createElement(_Controls.default, { item: findItem, options: options })); } return false; }, [dataSource]); const config = { title: valueDrawer.data.title, visible: valueDrawer.visible, onClose, className: 'lm_det_drawer', extra: /*#__PURE__*/_react.default.createElement(_index.Space, { size: 8 }, /*#__PURE__*/_react.default.createElement(_index.Button, { key: "cancel", onClick: onClose, size: "small" }, locale.cancel), /*#__PURE__*/_react.default.createElement(_index.Button, { type: "primary", key: "back", onClick: onSave, size: "small" }, locale.ok)) }; // 初始化重置数据 (0, _react.useEffect)(() => { if (valueDrawer.visible) { form.setFieldsValue(valueDrawer.data); } }, [form, valueDrawer]); return /*#__PURE__*/_react.default.createElement(_index.Drawer, config, /*#__PURE__*/_react.default.createElement(_index.Form, { form: form, initialValues: { mode: 'or' }, onValuesChange: onValuesChange, layout: "vertical", className: "custom_form" }, /*#__PURE__*/_react.default.createElement("div", { className: "custom_group" }, /*#__PURE__*/_react.default.createElement("div", { className: "custom_label" }, locale.queryMethods), /*#__PURE__*/_react.default.createElement(_index.Form.Item, { name: "mode", label: locale.queryMethods, noStyle: true }, /*#__PURE__*/_react.default.createElement(_index.Radio.Group, { direction: "column" }, /*#__PURE__*/_react.default.createElement(_index.Radio, { value: "and" }, locale.queryMethodsAnd), /*#__PURE__*/_react.default.createElement(_index.Radio, { value: "or" }, locale.queryMethodsOr)))), /*#__PURE__*/_react.default.createElement("div", { className: "custom_group custom_full" }, /*#__PURE__*/_react.default.createElement("div", { className: "custom_label" }, locale.selectField), /*#__PURE__*/_react.default.createElement(_index.Form.Item, { noStyle: true, shouldUpdate: (prevValues, currentValues) => prevValues.field !== currentValues.field }, DynamicSelect)))); }; var _default = ValueDrawer; exports.default = _default;