UNPKG

jc-biz-components

Version:

jc component library based on Antd

324 lines (267 loc) 10.7 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _row = require('antd/lib/row'); var _row2 = _interopRequireDefault(_row); var _button = require('antd/lib/button'); var _button2 = _interopRequireDefault(_button); var _col = require('antd/lib/col'); var _col2 = _interopRequireDefault(_col); var _input = require('antd/lib/input'); var _input2 = _interopRequireDefault(_input); var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck'); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); var _createClass2 = require('babel-runtime/helpers/createClass'); var _createClass3 = _interopRequireDefault(_createClass2); var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn'); var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); var _inherits2 = require('babel-runtime/helpers/inherits'); var _inherits3 = _interopRequireDefault(_inherits2); var _treeSelect = require('antd/lib/tree-select'); var _treeSelect2 = _interopRequireDefault(_treeSelect); var _form = require('antd/lib/form'); var _form2 = _interopRequireDefault(_form); var _select = require('antd/lib/select'); var _select2 = _interopRequireDefault(_select); var _datePicker = require('antd/lib/date-picker'); var _datePicker2 = _interopRequireDefault(_datePicker); require('antd/lib/row/style'); require('antd/lib/button/style'); require('antd/lib/col/style'); require('antd/lib/input/style'); require('antd/lib/tree-select/style'); require('antd/lib/form/style'); require('antd/lib/select/style'); require('antd/lib/date-picker/style'); var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _propTypes = require('prop-types'); var _propTypes2 = _interopRequireDefault(_propTypes); var _lang = require('../jc-_utils/lang'); var _reactRouterDom = require('react-router-dom'); var _moment = require('moment'); var _moment2 = _interopRequireDefault(_moment); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } var RangePicker = _datePicker2['default'].RangePicker; var Option = _select2['default'].Option; var FormItem = _form2['default'].Item; var TreeNode = _treeSelect2['default'].TreeNode; var JcFilter = function (_Component) { (0, _inherits3['default'])(JcFilter, _Component); function JcFilter() { var _ref; var _temp, _this, _ret; (0, _classCallCheck3['default'])(this, JcFilter); for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } return _ret = (_temp = (_this = (0, _possibleConstructorReturn3['default'])(this, (_ref = JcFilter.__proto__ || Object.getPrototypeOf(JcFilter)).call.apply(_ref, [this].concat(args))), _this), _this._renderInput = function (formItem) { var getFieldDecorator = _this.props.form.getFieldDecorator; return getFieldDecorator(formItem.fieldName, { initialValue: formItem.initialValue || '', rules: formItem.rules })(_react2['default'].createElement(_input2['default'], { style: { width: '100%' }, placeholder: '请输入' + formItem.label, autoComplete: 'off' })); }, _this._filterOption = function (input, option) { return option.props.children.toLowerCase().indexOf(input.toLowerCase()) >= 0; }, _this._renderSelect = function (formItem) { var getFieldDecorator = _this.props.form.getFieldDecorator; return getFieldDecorator(formItem.fieldName, { initialValue: formItem.initialValue || undefined, rules: formItem.rules })(_react2['default'].createElement( _select2['default'], { allowClear: true, style: { width: '100%' }, showSearch: formItem.showSearch || false, placeholder: '请选择' + formItem.label, getPopupContainer: function getPopupContainer() { return document.getElementById('form'); }, filterOption: _this._filterOption }, _this._renderOption(formItem.dictionary) )); }, _this._renderOption = function (obj) { if ((0, _lang.isArray)(obj)) { return obj.map(function (item) { return _react2['default'].createElement( Option, { key: item.key, value: item.key }, item.value ); }); } else { return Object.keys(obj).map(function (key) { return _react2['default'].createElement( Option, { key: key, value: key }, obj[key] ); }); } }, _this._renderTreeSelect = function (formItem) { var getFieldDecorator = _this.props.form.getFieldDecorator; return getFieldDecorator(formItem.fieldName, { initialValue: formItem.initialValue || undefined, rules: formItem.rules })(_react2['default'].createElement( _treeSelect2['default'], { showSearch: false, allowClear: true, dropdownStyle: { maxHeight: 200, overflow: 'auto' }, getPopupContainer: function getPopupContainer() { return document.getElementById('form'); }, placeholder: '请选择' + formItem.label, treeDefaultExpandAll: true }, _this._loopTree(formItem.treeData) )); }, _this._loopTree = function (treeData) { if (!treeData || treeData.length === 0) { return; } return treeData.map(function (item, index) { if (item.childrens && item.childrens.length > 0) { return _react2['default'].createElement( TreeNode, { title: item.categoryName, value: item.categoryId, key: item.categoryId + '-' + index, disabled: !item.categoryId }, _this._loopTree(item.childrens) ); } else { return _react2['default'].createElement(TreeNode, { title: item.categoryName, value: item.categoryId, key: item.categoryId }); } }); }, _this._renderRangePicker = function (formItem) { var getFieldDecorator = _this.props.form.getFieldDecorator; return getFieldDecorator(formItem.fieldName, { initialValue: formItem.initialValue.length > 0 ? [(0, _moment2['default'])(formItem.initialValue[0]), (0, _moment2['default'])(formItem.initialValue[1])] : [], rules: formItem.rules })(_react2['default'].createElement(RangePicker, { style: { width: '100%' }, format: formItem.format || 'YYYY-MM-DD HH:mm:ss', placeholder: ['开始日期', '结束日期'], showTime: { hideDisabledOptions: false } })); }, _this._renderFormItem = function (formItems) { return formItems.map(function (formItem, index) { return _react2['default'].createElement( _col2['default'], { md: 8, sm: 24, key: index }, _react2['default'].createElement( FormItem, { label: formItem.label }, function () { switch (formItem.componentType) { case 'Input': return _this._renderInput(formItem); case 'Select': return _this._renderSelect(formItem); case 'RangePicker': return _this._renderRangePicker(formItem); case 'ClassifyTree': return _this._renderClassifyTree(formItem); case 'TreeSelect': return _this._renderTreeSelect(formItem); default: return _react2['default'].createElement( 'p', null, '\u6682\u4E0D\u652F\u6301' ); } }() ) ); }); }, _this._renderButtons = function (buttons) { return _react2['default'].createElement( 'span', { className: 'jc-filter-btn' }, buttons.map(function (button, index) { if (button.type === 'action') { return _react2['default'].createElement( _button2['default'], { style: { marginLeft: index === 0 ? 0 : 8 }, key: index, type: button.btnType || 'default', onClick: function onClick() { return button.onClick(_this.props.form.getFieldsValue()); }, disabled: button.btnDisabled }, button.desc ); } else if (button.type === 'link') { return _react2['default'].createElement( _reactRouterDom.Link, { key: index, to: button.url }, _react2['default'].createElement( _button2['default'], { type: 'default', style: { marginLeft: index === 0 ? 0 : 8 } }, button.desc ) ); } }) ); }, _temp), (0, _possibleConstructorReturn3['default'])(_this, _ret); } (0, _createClass3['default'])(JcFilter, [{ key: 'render', value: function render() { var _props = this.props, fields = _props.fields, buttons = _props.buttons; return _react2['default'].createElement( 'div', { className: 'jc-filter' }, _react2['default'].createElement( _form2['default'], { id: 'form', layout: 'inline' }, _react2['default'].createElement( _row2['default'], { gutter: { md: 8, lg: 24, xl: 48 }, type: 'flex', align: 'middle' }, this._renderFormItem(fields), fields.length % 3 !== 0 && _react2['default'].createElement( 'div', { style: { overflow: 'hidden', flex: '1' } }, _react2['default'].createElement( 'div', { style: { float: 'right' } }, this._renderButtons(buttons) ) ) ), fields.length % 3 === 0 && _react2['default'].createElement( 'div', { style: { overflow: 'hidden' } }, _react2['default'].createElement( 'div', { style: { float: 'right' } }, this._renderButtons(buttons) ) ) ) ); } }]); return JcFilter; }(_react.Component); JcFilter.propTypes = { fields: _propTypes2['default'].array, buttons: _propTypes2['default'].array }; exports['default'] = _form2['default'].create()(JcFilter); module.exports = exports['default'];