UNPKG

yyuap-template

Version:

template project which is based on tinper

320 lines (292 loc) 13.3 kB
(function (global, factory) { if (typeof define === "function" && define.amd) { define(['module', 'exports', 'react', './Td', '../../view/index', '../../EventController/index'], factory); } else if (typeof exports !== "undefined") { factory(module, exports, require('react'), require('./Td'), require('../../view/index'), require('../../EventController/index')); } else { var mod = { exports: {} }; factory(mod, mod.exports, global.react, global.Td, global.index, global.index); global.TableLayout = mod.exports; } })(this, function (module, exports, _react, _Td, _index, _index3) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _react2 = _interopRequireDefault(_react); var _Td2 = _interopRequireDefault(_Td); var _index2 = _interopRequireDefault(_index); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } } 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 tablelayout = function (_Component) { _inherits(tablelayout, _Component); function tablelayout(props) { _classCallCheck(this, tablelayout); var _this = _possibleConstructorReturn(this, (tablelayout.__proto__ || Object.getPrototypeOf(tablelayout)).call(this, props)); _this.state = { isEdit: false, rows: {}, addRowData: {}, // 数据是否发生改变 changed: false, viewModel: _this.props.viewModel, dataModel: _this.props.dataModel }; _this.TabelLayout = {}; return _this; } _createClass(tablelayout, [{ key: 'componentWillMount', value: function componentWillMount() { this.generateTdViewModel(); } }, { key: 'componentWillReceiveProps', value: function componentWillReceiveProps(nextProps) { // console.log(nextProps) this.generateTdViewModel(); } }, { key: 'setReferenceParam', value: function setReferenceParam(params) { var tempRows = []; var colCount = 2; this.state.viewModel.layoutDetail.map(function (layout, index) { if (layout.isDisplay) { var tempLayout = layout; if (layout.itemCode === params.itemCode) { tempLayout.contMeta['clientParam'] = { "bank": params.bank }; } tempRows.push({ layoutDetail: [tempLayout] }); } else if (layout.componentKey === 'TdLayout' && layout.layoutDetail[0].isDisplay) { var tempLayout = layout; if (tempLayout.layoutDetail[0].itemCode === params.itemCode) { tempLayout.layoutDetail[0].contMeta['clientParam'] = { "bank": params.bank }; } tempRows.push(tempLayout); } }); this.setState({ rows: tempRows }); } }, { key: 'generateTdViewModel', value: function generateTdViewModel() { var tempRows = []; var colCount = 2; this.state.viewModel.layoutDetail.map(function (layout, index) { if (layout.isDisplay) { tempRows.push({ layoutDetail: [layout] }); } else if (layout.componentKey === 'TdLayout' && layout.layoutDetail[0] && layout.layoutDetail[0].isDisplay) { tempRows.push(layout); } }); this.setState({ rows: tempRows }); } }, { key: 'createFlowLayout', value: function createFlowLayout() { var cols = []; // 判断该控件是否隐藏 if (!this.props.viewModel.isDisplay) { return; } for (var j = 0; j < this.state.rows.length; j++) { cols.push(_react2.default.createElement( 'div', { key: j, rowSpan: this.state.rows[j].rowSpan || 1, colSpan: this.state.rows[j].colSpan || 1, style: { display: "inline-block", minWidth: "330px", height: "80px", float: "left" } }, _react2.default.createElement(_Td2.default, { viewModel: this.state.rows[j], isEdit: this.props.isEdit, config: this.props.config, labelDisp: false, dataModel: this.props.dataModel, form: this.props.form, handleValue: this.handleValue.bind(this), handleComponentCallback: this.props.handleComponentCallback }) )); } return cols; } }, { key: 'createNotFlowLayout', value: function createNotFlowLayout() { var _this2 = this; var cols = void 0; var rows = []; // 判断该控件是否隐藏 if (!this.props.viewModel.isDisplay) { return; } //将一行全空的数据处理掉,一行中有个别为空的数据保留 var arr = this.props.viewModel; var detailArr = arr.layoutDetail; var result = []; var _loop = function _loop(i) { rowArr = detailArr.filter(function (e) { return e.coordinate[0] == i; }); bool = rowArr.some(function (e) { if (e.layoutDetail) { return e.layoutDetail.length > 0; } }); if (bool) { result = [].concat(_toConsumableArray(result), _toConsumableArray(rowArr)); } }; for (var i = 0; i < arr.rows; i++) { var rowArr; var bool; _loop(i); } // console.log(result); for (var j = 0; j < this.props.viewModel.rows; j++) { cols = []; result.map(function (td, index) { if (td.rowSpan > 0 && td.colSpan > 0) { if (parseInt(td.coordinate.split("_")[0]) === j) { cols.push(_react2.default.createElement( 'td', { key: index + "_" + td.rowSpan + "_" + td.colSpan, rowSpan: td.rowSpan, colSpan: td.colSpan, style: { paddingLeft: "10px", paddingRight: "10px", minHeight: "50px", height: "50px", maxHeight: "300px" } }, _this2.construct(td) )); } } }); rows.push(_react2.default.createElement( 'tr', { key: j }, cols )); } return _react2.default.createElement( 'table', { className: 'table table-bordered', style: { border: "none", tableLayout: "fixed", width: "100%", display: "table" } }, _react2.default.createElement( 'tbody', null, rows ) ); } }, { key: 'construct', value: function construct(viewModel) { var self = this; return viewModel.layoutDetail.map(function (layout, index) { if (layout.componentKey && (0, _index2.default)(layout.componentKey, self.props.config.templateType)) { if (layout.componentKey == "Label" && !self.props.config.templateType) { layout.componentKey = "LabelNoEdit"; } return _react2.default.createElement((0, _index2.default)(layout.componentKey, self.props.config.templateType), { viewModel: layout, key: index, isEdit: self.props.isEdit, config: self.props.config, labelDisp: true, form: self.props.form, dataModel: self.props.dataModel, handleValue: self.handleValue.bind(self), handleComponentCallback: self.props.handleComponentCallback }); } }); } }, { key: 'handleValue', value: function handleValue(_ref) { var value = _ref.value, fieldId = _ref.fieldId, itemCode = _ref.itemCode, currentRef = _ref.currentRef; this.props.handleValue({ value: value, fieldId: fieldId, itemCode: itemCode, currentRef: currentRef }); } }, { key: 'render', value: function render() { var _state$viewModel = this.state.viewModel, tableFlowlayout = _state$viewModel.tableFlowlayout, layoutDetail = _state$viewModel.layoutDetail, title = _state$viewModel.title, borderColor = _state$viewModel.borderColor; var showLabel = this.props.showLabel; var _props$form = this.props.form, getFieldProps = _props$form.getFieldProps, getFieldError = _props$form.getFieldError; return this.props.viewModel.tableFlowlayout === "flowLayout" ? _react2.default.createElement( 'div', { style: { overflow: "hidden", paddingBottom: "10px", paddingTop: "10px" } }, this.createFlowLayout() ) : _react2.default.createElement( 'div', { style: { overflow: "hidden", paddingBottom: "10px", paddingTop: "10px", display: "table", tableLayout: "fixed", width: "100%" } }, this.createNotFlowLayout() ); } }]); return tablelayout; }(_react.Component); exports.default = tablelayout; module.exports = exports['default']; });