UNPKG

yyuap-template

Version:

template project which is based on tinper

448 lines (421 loc) 21.1 kB
(function (global, factory) { if (typeof define === "function" && define.amd) { define(['module', 'exports', 'react', 'bee-form', '../../view/index', '../index', '../../EventController/index'], factory); } else if (typeof exports !== "undefined") { factory(module, exports, require('react'), require('bee-form'), require('../../view/index'), require('../index'), require('../../EventController/index')); } else { var mod = { exports: {} }; factory(mod, mod.exports, global.react, global.beeForm, global.index, global.index, global.index); global.HeadForm = mod.exports; } })(this, function (module, exports, _react, _beeForm, _index, _index3, _index5) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _react2 = _interopRequireDefault(_react); var _beeForm2 = _interopRequireDefault(_beeForm); var _index2 = _interopRequireDefault(_index); var _index4 = _interopRequireDefault(_index3); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } var HeadForm = function (_Component) { _inherits(HeadForm, _Component); function HeadForm(props) { _classCallCheck(this, HeadForm); var _this = _possibleConstructorReturn(this, (HeadForm.__proto__ || Object.getPrototypeOf(HeadForm)).call(this, props)); _this.state = {}; return _this; } _createClass(HeadForm, [{ key: 'componentWillMount', value: function componentWillMount() { this.setState({ originDataModel: this.copyDataModel(this.props.dataModel), currentDataModel: this.copyDataModel(this.props.dataModel), blockDataModel: this.createDataModel(this.props.config.originTemplate)['head'] }); } }, { key: 'copyDataModel', value: function copyDataModel(data) { // var mDataModel = {} // for (var key in this.props.dataModel) { // if (this.props.dataModel[key] instanceof Object) { // mDataModel[key] = {} // for (var o in this.props.dataModel[key]) { // mDataModel[key][o] = this.props.dataModel[key][o] // } // } else { // mDataModel[key] = this.props.dataModel[key] // } // } return JSON.parse(JSON.stringify(data || {})); } }, { key: 'createBlockDataModel', value: function createBlockDataModel() { var mDataModel = {}; for (var key in this.props.dataModel) { if (this.props.dataModel[key] instanceof Object) { mDataModel[key] = { pk: "", name: "", value: "", subFormId: "headform" }; } else { mDataModel[key] = this.props.dataModel[key]; } } return mDataModel; } }, { key: 'createDataModel', value: function createDataModel(viewModel) { var dataTable = {}; dataTable['head'] = {}; dataTable['bodys'] = {}; for (var key in viewModel.componentInfo) { // 如果有主表head则直接复制保存。 if (key === "headform") { var head = viewModel.componentInfo[key]; for (var _key in head) { if (head[_key].itemCode) { dataTable['head'][_key] = { pk: "", name: "", value: "" }; } } } if (key === "bodyform") { for (var o in viewModel.componentInfo[key]) { dataTable['bodys'][o] = []; } } } return dataTable; } }, { key: 'checkFormNow', value: function checkFormNow(e, type) { var _this2 = this; var self = this; e.preventDefault(); if (!this.props.headFormIsEdit) { console.log("当前处于未编辑状态!"); return false; } this.props.form.validateFields(function (err, values) { if (err) { console.log(JSON.stringify(err)); console.log('校验失败', values); } else { // console.log('提交成功', values) _index5.callbackController.onSave({ options: self.props.config, rowData: { "head": self.generateSaveValue(), "body": { bodys: [] } }, fullname: self.generateSaveValue().fullname, metaDefinedName: self.generateSaveValue().metaDefinedName, nameSpace: self.generateSaveValue().nameSpace, doSave: function doSave() { // 编辑当前子表内容 if (type === 'edit') { self.props.handleIsEdit(false); self.setState({ originDataModel: self.copyDataModel(self.state.currentDataModel) }); } // 新增一条记录 if (type === 'add') { _this2.props.handleSubmitAddRow(_this2.state.dataModel); } } }); } }); } }, { key: 'generateSaveValue', value: function generateSaveValue() { var saveVal = {}; for (var item in this.state.currentDataModel) { if (_typeof(this.state.currentDataModel[item]) == "object") { saveVal[item] = this.state.currentDataModel[item].pk; } if (typeof this.state.currentDataModel[item] == "string") { saveVal[item] = this.state.currentDataModel[item]; } } return saveVal; } }, { key: 'handleValue', value: function handleValue(_ref) { var _this3 = this; var value = _ref.value, fieldId = _ref.fieldId; var dataTable = JSON.parse(JSON.stringify(this.state.currentDataModel)); dataTable[fieldId] = value; var componentList = this.props.config.componentsLists; var itemCodeValue = void 0; if (componentList && componentList instanceof Array) { componentList.forEach(function (item) { if (fieldId == item.fieldId) { itemCodeValue = item.itemCode; } }); } this.setState({ currentDataModel: dataTable }, function () { //目前只有参照才传itemCode,也就只有参照才有回调 if (itemCodeValue) { _this3.onComponentCallback({ itemCode: itemCodeValue, currentRef: value }); } }); this.props.config.dataModel['head'][fieldId] = value; // this.checkValueIsChange(); } }, { key: 'cancelEdit', value: function cancelEdit() { var self = this; _index5.callbackController.onCancel({ changed: this.state.changed, doCancel: function doCancel() { if (self.props.handleIsAddRow) { self.props.handleIsAddRow(false); } if (self.props.handleIsEdit) { self.props.handleIsEdit(false); self.setState({ currentDataModel: self.copyDataModel(self.state.originDataModel) }); } } }); } }, { key: 'onComponentCallback', value: function onComponentCallback(params) { var _this4 = this; params.setValue = function (setViewParams) { _this4.setValue(setViewParams); }; params.options = this.props.config; _index5.callbackController.handleComponentCallback(params); } }, { key: 'setValue', value: function setValue(setViewParams) { if (setViewParams.nextComponent && setViewParams.nextComponent.itemCode !== "") { this.onComponentCallback({ itemCode: setViewParams.itemCode, value: setViewParams.nextComponent.value }); } else { for (var i = 0; i < this.props.config.componentsLists.length; i++) { if (this.props.config.componentsLists[i].itemCode === setViewParams.itemCode) { this.handleValue({ value: setViewParams.value, fieldId: this.props.config.componentsLists[i].fieldId }); } } } } }, { key: 'clearFormValue', value: function clearFormValue() { var self = this; // this.setState({ // currentDataModel : this.copyDataModel(this.state.blockDataModel) // }) for (var o in this.state.blockDataModel) { // this.props.form.resetFields() this.props.config.componentsLists.forEach(function (element) { if (element.fieldId === o && element.isDisplay) { var obj = {}; obj[element.itemCode] = self.state.blockDataModel[o].value; self.props.form.setFieldsValue(obj); } }); } } }, { key: 'generateColumnpanel', value: function generateColumnpanel() { var viewContent = []; var self = this; this.props.viewModel.map(function (layout, index) { if (layout.componentKey === 'Label') { viewContent.push(_react2.default.createElement((0, _index2.default)(layout.componentKey, self.props.config.templateType), { viewModel: layout, dataModel: self.state.currentDataModel, key: index, config: self.props.config, labelDisp: true, headFormIsEdit: self.props.headFormIsEdit, headFormExpand: self.props.headFormExpand, editStatus: self.props.editStatus, allExpand: self.props.allExpand, handleHeadFormExpand: self.props.handleHeadFormExpand, handleIsEdit: self.props.handleIsEdit, handleAllExpand: self.props.handleAllExpand })); } else if (layout.componentKey === 'TableLayout') { viewContent.push(_react2.default.createElement((0, _index4.default)(layout.componentKey, self.props.config.templateType), { viewModel: layout, dataModel: self.state.currentDataModel, dataStore: self.props.dataStore, typeId: "head", key: index, form: self.props.form, config: self.props.config, allExpand: self.props.allExpand, headFormExpand: self.props.headFormExpand, isEdit: self.props.headFormIsEdit, handleIsEdit: self.props.handleIsEdit, handleValue: self.handleValue.bind(self), handleComponentCallback: self.onComponentCallback.bind(self) })); } else if (layout.componentKey === 'ColumnPanel') { viewContent.push(_react2.default.createElement((0, _index4.default)(layout.componentKey, self.props.config.templateType), { viewModel: layout, dataModel: self.state.currentDataModel, key: index, config: self.props.config, allExpand: self.props.allExpand, form: self.props.form, headFormExpand: self.props.headFormExpand, isEdit: self.props.headFormIsEdit, handleIsEdit: self.props.handleIsEdit, handleValue: self.handleValue.bind(self), handleComponentCallback: self.onComponentCallback.bind(self) })); } else if (layout.componentKey === 'GroupTable') { viewContent.push(_react2.default.createElement((0, _index4.default)(layout.componentKey, self.props.config.templateType), { viewModel: layout, dataModel: self.state.currentDataModel, key: index, form: self.props.form, config: self.props.config, allExpand: self.props.allExpand, headFormExpand: self.props.headFormExpand, isEdit: self.props.headFormIsEdit, handleIsEdit: self.props.handleIsEdit, handleValue: self.handleValue.bind(self), handleComponentCallback: self.onComponentCallback.bind(self) })); } }); return viewContent; } }, { key: 'render', value: function render() { var _this5 = this; return _react2.default.createElement( 'div', null, _react2.default.createElement( 'button', { id: "headForm_save_" + this.props.config.uuid, style: { display: "none" }, onClick: function onClick(e) { _this5.checkFormNow(e, 'edit'); } }, uiTemplateMultilingual.template('save') ), _react2.default.createElement( 'button', { id: "headForm_edit_" + this.props.config.uuid, style: { display: "none" }, onClick: function onClick(e) { _this5.props.handleIsEdit(true); } }, uiTemplateMultilingual.template('edit') ), _react2.default.createElement( 'button', { id: "headForm_cancel_" + this.props.config.uuid, style: { display: "none" }, onClick: function onClick(e) { _this5.cancelEdit(e); } }, uiTemplateMultilingual.template('cancel') ), _react2.default.createElement( 'button', { id: "headForm_reset_" + this.props.config.uuid, style: { display: "none" }, onClick: function onClick(e) { _this5.clearFormValue(e); } }, uiTemplateMultilingual.template('empty') ), this.generateColumnpanel(), !this.props.config.hideButton ? _react2.default.createElement( 'div', { style: { backgroundColor: "white", paddingBottom: "0px", display: this.props.headFormIsEdit ? "block" : "none" } }, _react2.default.createElement( 'div', { style: { margin: "10px 45px", textAlign: 'right' } }, this.props.isAddRow ? _react2.default.createElement( 'button', { className: "uit-button", onClick: function onClick(e) { _this5.checkFormNow(e, 'add'); }, style: { marginRight: "10px" }, id: 'add' }, uiTemplateMultilingual.template('add') ) : _react2.default.createElement( 'button', { className: "uit-button", onClick: function onClick(e) { _this5.checkFormNow(e, 'edit'); }, style: { marginRight: "10px" }, id: 'save' }, uiTemplateMultilingual.template('save') ), _react2.default.createElement( 'button', { className: "uit-button", onClick: function onClick(e) { _this5.cancelEdit(e); }, id: 'cancel' }, uiTemplateMultilingual.template('cancel') ) ) ) : null ); } }]); return HeadForm; }(_react.Component); exports.default = _beeForm2.default.createForm()(HeadForm); module.exports = exports['default']; });