UNPKG

nsn-comp

Version:

NSN核心组件

170 lines (148 loc) 5.68 kB
import "antd/es/modal/style"; import _Modal from "antd/es/modal"; function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } import ProTable from '@ant-design/pro-table'; import { Operation } from 'nsn-enum'; import { NLocale, NStr, NType } from 'nsn-util'; import React from 'react'; import { HeaderTitle } from './_comp'; import { getColumns, requestPage } from './_util'; var getSaveTNype = function getSaveTNype(editForm) { var saveNType = undefined; var beforeSubmit = undefined; var defaultValues = {}; var postRecord = undefined; if (NType.isString(editForm)) { saveNType = editForm; } else if (editForm) { saveNType = editForm.dtype; beforeSubmit = editForm.beforeSubmit; defaultValues = editForm.defaultValues || {}; postRecord = editForm.postRecord; } return { saveNType: saveNType, beforeSubmit: beforeSubmit, defaultValues: defaultValues, postRecord: postRecord }; }; var ModalTitle = function ModalTitle(props) { var type = props.type; var subTitle = NLocale.getText(NStr.isEqual(type, Operation.NEW) ? 'operation.new' : 'operation.edit'); return React.createElement(React.Fragment, null, subTitle, NLocale.isEN() ? " " : '', React.createElement(HeaderTitle, null)); }; var onSubmitEditForm = function onSubmitEditForm(comp, payload) { var _comp$props = comp.props, dispatch = _comp$props.dispatch, editForm = _comp$props.editForm; var editFormProps = getSaveTNype(editForm); var submit = { pass: true, params: payload }; if (editFormProps.beforeSubmit) { var newPayload = editFormProps.beforeSubmit(payload, comp); if (newPayload) { submit.params = newPayload; } else { submit.pass = false; } } // Object.keys(editFormProps.defaultValues).forEach(function (k) { var submitValue = submit.params[k]; if (NStr.isTrimEmpty(submitValue)) { submit.params[k] = editFormProps.defaultValues[k]; } }); // if (submit.pass && dispatch && editFormProps.saveNType) { var _submit$params$id, _submit$params; var _comp$state$record = comp.state.record, record = _comp$state$record === void 0 ? { id: undefined } : _comp$state$record; dispatch({ message: { success: true }, type: editFormProps.saveNType, payload: _objectSpread(_objectSpread({}, submit.params), {}, { id: (_submit$params$id = (_submit$params = submit.params) === null || _submit$params === void 0 ? void 0 : _submit$params.id) !== null && _submit$params$id !== void 0 ? _submit$params$id : record.id }), callback: function callback(_ref) { var success = _ref.success; if (success) { comp.setState({ editVisible: false, record: undefined }); requestPage(comp); } } }); } }; var EditForm = function EditForm(props) { var comp = props.comp; var _comp$state = comp.state, editVisible = _comp$state.editVisible, editType = _comp$state.editType, _comp$state$record2 = _comp$state.record, record = _comp$state$record2 === void 0 ? {} : _comp$state$record2, editFormRef = _comp$state.editFormRef; var _comp$props2 = comp.props, loading = _comp$props2.loading, editForm = _comp$props2.editForm; var editFormProps = getSaveTNype(editForm); // var saveLoading = false; if (editFormProps.saveNType) { saveLoading = loading.effects[editFormProps.saveNType]; } return React.createElement(_Modal, { destroyOnClose: true, visible: editVisible, title: React.createElement(ModalTitle, { type: editType }), maskClosable: false, bodyStyle: { maxHeight: '500px', overflowY: 'auto' }, onCancel: function onCancel() { return comp.setState({ editVisible: false, record: undefined }); }, onOk: function onOk() { return editFormRef === null || editFormRef === void 0 ? void 0 : editFormRef.submit(); }, okButtonProps: { loading: saveLoading } }, React.createElement(ProTable, { type: "form", form: { layout: 'vertical', initialValues: editFormProps.postRecord ? editFormProps.postRecord(record) : record }, columns: getColumns(comp), onSubmit: function onSubmit(params) { return onSubmitEditForm(comp, params); }, actionRef: function actionRef(ref) { return comp.setState({ editActionRef: ref }); }, formRef: function formRef(ref) { return comp.setState({ editFormRef: ref }); } })); }; export { EditForm };