UNPKG

yyuap-template

Version:

template project which is based on tinper

522 lines (491 loc) 26.1 kB
(function (global, factory) { if (typeof define === "function" && define.amd) { define(['module', 'exports', 'react', 'bee-form', 'bee-panel', 'bee-layout', './RowContent', '../TableLayout/TableLayout', '../../EventController/index'], factory); } else if (typeof exports !== "undefined") { factory(module, exports, require('react'), require('bee-form'), require('bee-panel'), require('bee-layout'), require('./RowContent'), require('../TableLayout/TableLayout'), require('../../EventController/index')); } else { var mod = { exports: {} }; factory(mod, mod.exports, global.react, global.beeForm, global.beePanel, global.beeLayout, global.RowContent, global.TableLayout, global.index); global.Table = mod.exports; } })(this, function (module, exports, _react, _beeForm, _beePanel, _beeLayout, _RowContent, _TableLayout, _index) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _react2 = _interopRequireDefault(_react); var _beeForm2 = _interopRequireDefault(_beeForm); var _RowContent2 = _interopRequireDefault(_RowContent); var _TableLayout2 = _interopRequireDefault(_TableLayout); 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 values = {}; var Table = function (_Component) { _inherits(Table, _Component); function Table(props) { _classCallCheck(this, Table); var _this = _possibleConstructorReturn(this, (Table.__proto__ || Object.getPrototypeOf(Table)).call(this, props)); _this.state = { currentIsEditRowIndex: 0, isAddRow: false, expanded: true, checkFormNow: false, addRowData: {}, viewModel: _this.props.viewModel, dataModel: _this.props.dataModel }; return _this; } /** * 生成table标题 */ _createClass(Table, [{ key: 'generateRowTitle', value: function generateRowTitle() { var total = 1; var titleTotal = 0; var title = []; var self = this; // 如果dataModel中有数据则生成title if (this.props.dataModel && this.props.dataModel['bodyform_' + this.props.viewModel.subFormId] && this.props.dataModel['bodyform_' + this.props.viewModel.subFormId].length > 0) { this.props.viewModel.layoutDetail.map(function (layout, index) { if (layout.islist && total < self.props.titleListTotal) { total++; } }); this.props.viewModel.layoutDetail.map(function (layout, index) { if (layout.islist && titleTotal < self.props.titleListTotal) { title.push(_react2.default.createElement( 'span', { key: "title_" + index, title: layout.mul_language && layout.mul_language[uiTemplateMultilingual.uiTemplateLanguage] && layout.mul_language[uiTemplateMultilingual.uiTemplateLanguage] !== "" ? layout.mul_language[uiTemplateMultilingual.uiTemplateLanguage] : layout.title, className: 'row-title-col uit-col-' + total }, layout.mul_language && layout.mul_language[uiTemplateMultilingual.uiTemplateLanguage] && layout.mul_language[uiTemplateMultilingual.uiTemplateLanguage] !== "" ? layout.mul_language[uiTemplateMultilingual.uiTemplateLanguage] : layout.title )); titleTotal++; } }); return _react2.default.createElement( 'div', { className: 'row-title' }, title ); } } }, { key: 'generateRowContent', value: function generateRowContent() { var _this2 = this; var rows = []; var rowTableLayoutViewModel = this.props.viewModel; rowTableLayoutViewModel.tableFlowlayout = "flowLayout"; // 如果dataModel中有数据则回填数据进行展示 if (this.state.dataModel && this.state.dataModel.length > 0) { this.state.dataModel.map(function (rowData, index) { rows.push(_react2.default.createElement(_RowContent2.default, { key: index, showLabel: false, dataModel: rowData, form: _this2.props.form, currentRowIndex: index, config: _this2.props.config, viewModel: rowTableLayoutViewModel // 使用装配过得viewModel , editStatus: _this2.props.editStatus, handleIsAddRow: _this2.handleAddRow, handleIsEdit: _this2.props.handleIsEdit, handleValue: _this2.handleValue.bind(_this2), setEditRowIndex: _this2.setEditRowIndex.bind(_this2), titleListTotal: _this2.props.titleListTotal, bodyformId: 'bodyform_' + _this2.props.viewModel.subFormId, saveRow: _this2.saveRow.bind(_this2), deleteRow: _this2.deleteRow.bind(_this2) })); }); } return rows; } }, { key: 'componentWillMount', value: function componentWillMount() { if (this.props.dataModel && this.props.dataModel['bodyform_' + this.props.viewModel.subFormId]) { this.setState({ dataModel: this.props.dataModel['bodyform_' + this.props.viewModel.subFormId] }); this.generateNewRowDataModel(); } else { this.setState({ dataModel: [] }); this.generateNewRowDataModel(); } } }, { key: 'handleValue', value: function handleValue(_ref) { var _this3 = this; var value = _ref.value, fieldId = _ref.fieldId; var dataTables = null; if (this.state.isAddRow) { dataTables = this.state.addRowData; dataTables[fieldId] = value; } else { dataTables = this.state.dataModel; dataTables[this.state.currentIsEditRowIndex][fieldId] = value; } var componentList = this.props.viewModel.layoutDetail; var itemCodeValue = void 0; if (componentList && componentList instanceof Array) { componentList.forEach(function (item) { if (fieldId == item.fieldId) { itemCodeValue = item.itemCode; } }); } this.setState({ dataModel: dataTables }, function () { _this3.onComponentCallback({ itemCode: itemCodeValue, currentRef: value }); }); // this.checkValueIsChange(); } }, { key: 'checkValueIsChange', value: function checkValueIsChange() { var dataTable = this.state.dataModel; for (var key in dataTable) { if (dataTable[key] && dataTable[key].newValue !== '' && dataTable[key].newValue !== dataTable[key].value) { this.setState({ changed: true }); } } } }, { key: 'checkFormNow', value: function checkFormNow(e, params) { e.preventDefault(); var self = this; this.props.form.validateFields(function (err, values) { if (err) { console.log('校验失败', values); } else { // console.log('提交成功', values) if (params.type == "add") { var bodyForm = self.generateSaveValue(self.state.addRowData); _index.callbackController.onSave({ rowData: { "head": null, "body": { bodys: [bodyForm] } }, editType: params.type, fullname: self.state.addRowData.fullname, metaDefinedName: self.state.addRowData.metaDefinedName, nameSpace: self.state.addRowData.nameSpace, doSave: function doSave() { params.callback(); } }); } else { var bodyForm = self.generateSaveValue(self.state.dataModel[params.index]); _index.callbackController.onSave({ rowData: { "head": null, "body": { bodys: [bodyForm] } }, editType: params.type, fullname: self.state.dataModel[params.index].fullname, metaDefinedName: self.state.dataModel[params.index].metaDefinedName, nameSpace: self.state.dataModel[params.index].nameSpace, doSave: function doSave() { params.callback(); } }); } } }); } }, { key: 'generateSaveValue', value: function generateSaveValue(rowData) { var saveVal = {}; for (var item in rowData) { if (_typeof(rowData[item]) == "object") { if (item == "pk") { saveVal[item] = rowData[item]; } else { saveVal[item] = rowData[item].pk; } } if (typeof rowData[item] == "string") { saveVal[item] = rowData[item]; } } return saveVal; } }, { key: 'onComponentCallback', value: function onComponentCallback(params) { var _this4 = this; params.setValue = function (setViewParams) { _this4.setValue(setViewParams); }; _index.callbackController.handleComponentCallback(params); } }, { key: 'setValue', value: function setValue(setViewParams) { //this.setReferenceParam(setViewParams) if (setViewParams.nextComponent && setViewParams.nextComponent.itemCode !== "") { this.onComponentCallback({ itemCode: setViewParams.nextComponent.itemCode, value: setViewParams.nextComponent.value, setValue: this.setValue }); } else { for (var i = 0; i < this.state.viewModel.layoutDetail.length; i++) { if (this.state.viewModel.layoutDetail[i].itemCode === setViewParams.itemCode) { this.handleValue({ value: setViewParams.value, fieldId: this.state.viewModel.layoutDetail[i].fieldId }); } } } } }, { key: 'expandFunc', value: function expandFunc() { this.setState({ expanded: !this.state.expanded }); } }, { key: 'handleIsAddRow', value: function handleIsAddRow(isAddRow) { this.setState({ isAddRow: isAddRow, expanded: true }); this.props.handleIsEdit(isAddRow); } }, { key: 'setEditRowIndex', value: function setEditRowIndex(index) { this.setState({ currentIsEditRowIndex: index }); } }, { key: 'handleSubmitAddRow', value: function handleSubmitAddRow(newRowData) { this.setState({ isAddRow: false }); this.props.handleBodyFormData(newRowData); } }, { key: 'generateNewRowDataModel', value: function generateNewRowDataModel() { var newAddRowData = { pk: { subFormId: "bodyform_" + this.props.viewModel.subFormId } }; if (this.props.dataModel && this.props.dataModel['bodyform_' + this.props.viewModel.subFormId]) { if (this.props.dataModel['bodyform_' + this.props.viewModel.subFormId].length > 0) { newAddRowData.fullname = this.props.dataModel['bodyform_' + this.props.viewModel.subFormId][0].fullname; newAddRowData.metaDefinedName = this.props.dataModel['bodyform_' + this.props.viewModel.subFormId][0].metaDefinedName; newAddRowData.nameSpace = this.props.dataModel['bodyform_' + this.props.viewModel.subFormId][0].nameSpace; } } this.state.viewModel.layoutDetail.map(function (layout, index) { if (layout.isDisplay) { //newAddRowData[layout.fieldId] = {value:'',name:'',pk:''} if (layout.componentKey == "Select") { var combos = layout.options; combos.map(function (combo, index) { if (combo.defOption) { newAddRowData[layout.fieldId] = { pk: combo.selectionId, name: combo.name, value: combo.selectionId }; } }); } else { newAddRowData[layout.fieldId] = { value: '', name: '', pk: '' }; } } else if (layout.componentKey === 'TdLayout' && layout.layoutDetail[0].isDisplay) { newAddRowData[layout.layoutDetail[0].fieldId] = { value: '', name: '', pk: '' }; } }); this.setState({ addRowData: newAddRowData }); } }, { key: 'rowAddBtnClick', value: function rowAddBtnClick(e) { var _this5 = this; this.checkFormNow(e, { type: "add", callback: function callback() { _this5.setState({ isAddRow: false }); _this5.props.handleIsEdit(false); } }); } }, { key: 'saveRow', value: function saveRow(e, rowIndex, _callback) { this.checkFormNow(e, { type: "edit", index: rowIndex, callback: function callback() { _callback(); } }); } }, { key: 'deleteRow', value: function deleteRow(e, rowIndex) { var bodyForm = this.generateSaveValue(this.state.dataModel[rowIndex]); _index.callbackController.onDelete({ rowData: { "head": null, "body": { bodys: [bodyForm] } }, fullname: this.state.dataModel[rowIndex].fullname, metaDefinedName: this.state.dataModel[rowIndex].metaDefinedName, nameSpace: this.state.dataModel[rowIndex].nameSpace, doDelete: function doDelete() {} }); } }, { key: 'rowAddCancelBtnClick', value: function rowAddCancelBtnClick() { if (this.props.dataModel && this.props.dataModel['bodyform_' + this.props.viewModel.subFormId]) { if (this.props.dataModel['bodyform_' + this.props.viewModel.subFormId].length > 0) { this.setState({ dataModel: this.props.dataModel['bodyform_' + this.props.viewModel.subFormId] }); } } this.setState({ isAddRow: false }); this.props.handleIsEdit(false); } }, { key: 'render', value: function render() { var _this6 = this; var _props$viewModel = this.props.viewModel, isLabelDisplay = _props$viewModel.isLabelDisplay, titleLayout = _props$viewModel.titleLayout, fieldId = _props$viewModel.fieldId, title = _props$viewModel.title, mul_language = _props$viewModel.mul_language; return _react2.default.createElement( 'div', null, _react2.default.createElement( 'div', { className: 'uit-tablelayout-label' }, _react2.default.createElement( 'label', { className: 'labelitem' }, _react2.default.createElement( 'div', { id: 'div_headform', className: 'labelitem-title', title: mul_language && mul_language[uiTemplateMultilingual.uiTemplateLanguage] && mul_language[uiTemplateMultilingual.uiTemplateLanguage] !== "" ? mul_language[uiTemplateMultilingual.uiTemplateLanguage] : title, style: { padding: "0 5px", borderBottom: "2px solid #E14C46" } }, mul_language && mul_language[uiTemplateMultilingual.uiTemplateLanguage] && mul_language[uiTemplateMultilingual.uiTemplateLanguage] !== "" ? mul_language[uiTemplateMultilingual.uiTemplateLanguage] : title ), _react2.default.createElement( 'div', { style: { float: "left" } }, this.state.dataModel && this.state.dataModel.length > 0 ? _react2.default.createElement( 'span', { className: 'colap', onClick: function onClick() { _this6.expandFunc(); }, style: { marginLeft: "10px", color: "#757F8C", marginRight: "10px", width: "18px", height: "18px", lineHeight: "54px" } }, _react2.default.createElement('i', { className: 'cl ' + (!this.state.expanded ? 'cl-gridcaretarrowup' : 'cl-treearrow-down'), style: { color: "#757F8C", padding: "2px 2px 2px 2px", fontSize: "11px" } }) ) : null, _react2.default.createElement( 'span', { className: 'colap', onClick: function onClick() { _this6.handleIsAddRow(true); }, style: { marginLeft: "10px", color: "#757F8C", width: "18px", height: "18px", lineHeight: "54px" } }, _react2.default.createElement('i', { className: 'cl cl-thinAdd', style: { color: "#757F8C", display: "inline", padding: "2px 2px 2px 2px", fontSize: "11px" } }) ) ) ) ), _react2.default.createElement( _beePanel.Panel, { collapsible: true, expanded: this.props.allExpand && this.state.expanded }, !this.state.isAddRow ? _react2.default.createElement( 'div', { className: 'uit-table-row' }, this.generateRowTitle(), this.generateRowContent() ) : _react2.default.createElement( 'div', { className: 'row-add-content', style: { background: "rgb(239, 239, 239)" } }, _react2.default.createElement(_TableLayout2.default, { key: 0, viewModel: this.props.viewModel, dataModel: this.state.addRowData, showLabel: this.props.showLabel, headFormExpand: true, allExpand: this.props.allExpand, form: this.props.form, isEdit: true, isAddRow: true, config: this.props.config, handleValue: this.handleValue.bind(this), handleIsAddRow: this.handleIsAddRow.bind(this), handleSubmitAddRow: this.handleSubmitAddRow.bind(this), handleComponentCallback: this.onComponentCallback.bind(this) }), _react2.default.createElement( 'div', { style: { position: "absolute", right: "10px", bottom: "10px" } }, _react2.default.createElement( 'div', { style: { display: "inline-block" } }, _react2.default.createElement( 'button', { className: "uit-button", onClick: function onClick(e) { _this6.rowAddBtnClick(e); }, style: { marginRight: "10px" }, id: 'bodyform_add' }, uiTemplateMultilingual.template('save') ) ), _react2.default.createElement( 'div', { style: { display: "inline-block" } }, _react2.default.createElement( 'button', { className: "uit-button", onClick: function onClick(e) { _this6.rowAddCancelBtnClick(e); }, style: { marginRight: "10px" }, id: 'bodyform_add' }, uiTemplateMultilingual.template('cancel') ) ) ) ) ) ); } }]); return Table; }(_react.Component); exports.default = _beeForm2.default.createForm()(Table); module.exports = exports['default']; });