nsn-comp
Version:
NSN核心组件
170 lines (148 loc) • 5.68 kB
JavaScript
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 };