UNPKG

yylib-quick-mobile

Version:

yylib-quick-mobile

798 lines (719 loc) 35.9 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _wingBlank = require('antd-mobile/lib/wing-blank'); var _wingBlank2 = _interopRequireDefault(_wingBlank); var _modal = require('antd-mobile/lib/modal'); var _modal2 = _interopRequireDefault(_modal); var _pagination = require('antd-mobile/lib/pagination'); var _pagination2 = _interopRequireDefault(_pagination); var _list = require('antd-mobile/lib/list'); var _list2 = _interopRequireDefault(_list); var _searchBar = require('antd-mobile/lib/search-bar'); var _searchBar2 = _interopRequireDefault(_searchBar); var _whiteSpace = require('antd-mobile/lib/white-space'); var _whiteSpace2 = _interopRequireDefault(_whiteSpace); var _activityIndicator = require('antd-mobile/lib/activity-indicator'); var _activityIndicator2 = _interopRequireDefault(_activityIndicator); var _navBar = require('antd-mobile/lib/nav-bar'); var _navBar2 = _interopRequireDefault(_navBar); var _accordion = require('antd-mobile/lib/accordion'); var _accordion2 = _interopRequireDefault(_accordion); var _toast = require('antd-mobile/lib/toast'); var _toast2 = _interopRequireDefault(_toast); var _radio = require('antd-mobile/lib/radio'); var _radio2 = _interopRequireDefault(_radio); var _checkbox = require('antd-mobile/lib/checkbox'); var _checkbox2 = _interopRequireDefault(_checkbox); 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; }; }(); require('antd-mobile/lib/wing-blank/style/css'); require('antd-mobile/lib/modal/style/css'); require('antd-mobile/lib/pagination/style/css'); require('antd-mobile/lib/list/style/css'); require('antd-mobile/lib/search-bar/style/css'); require('antd-mobile/lib/white-space/style/css'); require('antd-mobile/lib/activity-indicator/style/css'); require('antd-mobile/lib/nav-bar/style/css'); require('antd-mobile/lib/accordion/style/css'); require('antd-mobile/lib/toast/style/css'); require('antd-mobile/lib/radio/style/css'); require('antd-mobile/lib/checkbox/style/css'); var _react = require('react'); var _react2 = _interopRequireDefault(_react); require('./refer.less'); var _ajax = require('../../utils/ajax'); var _ajax2 = _interopRequireDefault(_ajax); var _RestUrl = require('../../common/RestUrl'); var _RestUrl2 = _interopRequireDefault(_RestUrl); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 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; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 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 CheckboxItem = _checkbox2.default.CheckboxItem; var RadioItem = _radio2.default.RadioItem; var page = void 0; var referUrl = []; var treereferUrl = []; var relyfield = []; var referTreeListParams = {}; var referParams = void 0; var data = []; var pageCount = []; var referstyle = ''; var listcontent = ''; var YYRefer = function (_React$Component) { _inherits(YYRefer, _React$Component); function YYRefer(props) { _classCallCheck(this, YYRefer); var _this = _possibleConstructorReturn(this, (YYRefer.__proto__ || Object.getPrototypeOf(YYRefer)).call(this, props)); _this.onMultiChange = function (e, selectedNode) { var selectedNodes = _this.state.selectedNodes; if (!selectedNodes.some(function (item) { return item.id === selectedNode.id; })) { console.log('1'); selectedNodes.push(selectedNode); _this.setState({ selectedNodes: selectedNodes }); } else { console.log('2'); var newNodes = []; selectedNodes.map(function (item) { if (item.id !== selectedNode.id) { newNodes.push(item); } }); _this.setState({ selectedNodes: newNodes }); } }; _this.onSingleChange = function (e, selectedNode) { if (selectedNode.id === _this.state.selectedId) { _this.setState({ selectedId: null, selectedNode: {} }); } else { _this.setState({ selectedId: selectedNode.id, selectedNode: selectedNode }); }; }; _this.onTreeChange = function (e, selectedNode) { e.stopPropagation(); e.preventDefault(); if (selectedNode.id === _this.state.selectedTreeId) { console.log('1'); _this.setState({ selectedTreeId: null, showList: true }); } else { console.log('2'); _this.setState({ selectedTreeId: selectedNode.id, showList: true }); } referTreeListParams.relyCondition = relyfield[_this.props.referName] + '=' + selectedNode.id; referTreeListParams.condition = _this.props.listCondition; referTreeListParams.pageSize = 10; _this.getListData(referUrl[_this.props.referName], referTreeListParams, 1, _this.props.referName); }; _this.onChangePageNumber = function (value) { _this.setState({ pageNumber: value }); var referParams = {}; referParams.condition = _this.props.condition; if (_this.state.searchText !== '') { referParams.searchText = _this.state.searchText; referTreeListParams.searchText = _this.state.searchText; } referParams.pageSize = 10; switch (_this.props.referStyle) { case 'list': _this.getListData(referUrl[_this.props.referName], referParams, value, _this.props.referName); break; case 'tree-list': _this.getListData(referUrl[_this.props.referName], referTreeListParams, value, _this.props.referName); break; default: _toast2.default.fail('请填写正确的referStyle', 2); break; } }; _this.showModal = function (key) { return function (e) { e.preventDefault(); _this.setState(_defineProperty({}, key, true)); }; }; _this.onClose = function (key) { return function (e) { var referParams = {}; referParams.condition = _this.props.condition; _this.setState({ showList: false }); switch (_this.props.referStyle) { case 'list': _this.getListData(referUrl[_this.props.referName], referParams, 1, _this.props.referName); break; case 'tree': _this.getTreeData(referUrl[_this.props.referName], referParams, _this.props.referName); break; case 'tree-list': _this.getTreeData(treereferUrl[_this.props.referName], referParams, _this.props.referName); break; default: _toast2.default.fail('请填写正确的referStyle', 2); break; } _this.setState({ pageNumber: 1, searchText: '' }); _this.props.onClose(key); }; }; _this.onOk = function (key) { return function (e) { var _self = _this; _this.setState({ pageNumber: 1, searchText: '', showList: false }); var referParams = {}; referParams.condition = _this.props.condition; switch (_self.props.referStyle) { case 'list': _this.getListData(referUrl[_this.props.referName], referParams, 1, _this.props.referName); break; case 'tree-list': _this.getTreeData(treereferUrl[_this.props.referName], referParams, _this.props.referName); break; default: break; } if (_this.props.onOk && _.isFunction(_this.props.onOk)) { if (!_this.props.multiMode) { _this.props.onOk(_this.state.selectedNode, key); _this.setState({ selectedId: null }); } else { _this.props.onOk(_this.state.selectedNodes, key); _this.setState({ selectedNodes: [] }); } } }; }; _this.onSearchSubmit = function (value) { _this.setState({ searchText: value }); var referParams = {}; referParams.searchText = value; referTreeListParams.searchText = value; referTreeListParams.pageSize = 10; referParams.condition = _this.props.condition; switch (page.props.referStyle) { case 'list': _this.getListData(referUrl[_this.props.referName], referParams, 1, _this.props.referName); break; case 'tree-list': _this.getListData(referUrl[_this.props.referName], referTreeListParams, 1, _this.props.referName); referTreeListParams = {}; break; default: _toast2.default.fail('请填写正确的referStyle', 5); break; } }; _this.listContent = function (data, selectedId) { if (_this.props.multiMode) { if (data) { return data.map(function (item) { return _react2.default.createElement( CheckboxItem, { key: item.id, onChange: function onChange(e) { return _this.onMultiChange(e, item); } }, item[_this.props.displayField] ); }); } } else { if (data) { return data.map(function (item) { return _react2.default.createElement( RadioItem, { key: item.id, checked: selectedId === item.id, onChange: function onChange(e) { return _this.onSingleChange(e, item); } }, item[_this.props.displayField] ); }); } } }; _this.treeContent = function (treeData, selectedId) { if (!_this.props.multiMode) { if (treeData) { return treeData.map(function (item) { if (item.children && item.children.length > 0) { item.isLeaf = false; return _react2.default.createElement( _accordion2.default, { onChange: _this.onChange, className: 'refer-accordion', key: item.id }, _react2.default.createElement( _accordion2.default.Panel, { className: 'refer-pad', key: item.id, header: _react2.default.createElement( CheckboxItem, { checked: selectedId === item.id, onChange: function onChange(e) { return _this.onSingleChange(e, item); }, key: item.id }, item[_this.props.displayField] ) }, _this.treeContent(item.children, selectedId) ) ); } else { item.isLeaf = true; return _react2.default.createElement( CheckboxItem, { checked: selectedId === item.id, className: 'refer-check-box', onChange: function onChange(e) { return _this.onSingleChange(e, item); }, key: item.id }, item[_this.props.displayField] ); } }); } } else { if (treeData) { return treeData.map(function (item) { if (item.children && item.children.length > 0) { return _react2.default.createElement( _accordion2.default, { onChange: _this.onChange, className: 'refer-accordion', key: item.id }, _react2.default.createElement( _accordion2.default.Panel, { className: 'refer-pad', key: item.id, header: _react2.default.createElement( CheckboxItem, { onChange: function onChange(e) { return _this.onMultiChange(e, item); }, key: item.id }, item[_this.props.displayField] ) }, _this.treeContent(item.children, selectedId) ) ); } else { return _react2.default.createElement( CheckboxItem, { className: 'refer-check-box', onChange: function onChange(e) { return _this.onMultiChange(e, item); }, key: item.id }, item[_this.props.displayField] ); } }); } } }; _this.treeListContent = function (treeData, selectedId) { if (treeData) { return treeData.map(function (item) { if (item.children && item.children.length > 0) { return _react2.default.createElement( _accordion2.default, { onChange: _this.onChange, className: 'refer-accordion', key: item.id }, _react2.default.createElement( _accordion2.default.Panel, { className: 'refer-pad', key: item.id, header: _react2.default.createElement( CheckboxItem, { onChange: function onChange(e) { return _this.onTreeChange(e, item); }, key: item.id }, item[_this.props.displayField] ) }, _this.treeListContent(item.children, selectedId) ) ); } else { return _react2.default.createElement( CheckboxItem, { className: 'refer-check-box', onChange: function onChange(e) { return _this.onTreeChange(e, item); }, key: item.id }, item[_this.props.displayField] ); } }); } }; _this.state = { data: [], value: '', selectedId: null, pageNumber: 1, selectedNode: {}, selectedNodes: [], animating: false, pageCount: '', searchText: '', showList: false }; return _this; } _createClass(YYRefer, [{ key: 'componentWillMount', value: function componentWillMount() { page = this; var name = this.props.referName; var open = this.props.open; page.setState(_defineProperty({}, name, open)); var referCode = page.props.referCode; var referStyle = page.props.referStyle; _ajax2.default.getJSON(_RestUrl2.default.REF_SERVER_URL + _RestUrl2.default.GET_REFINFO_BYCODE, { refCode: referCode }, function (result) { if (result.success) { if (result.data !== null) { referUrl[name] = result.data.dataurl; treereferUrl[name] = result.data.treerelyurl; relyfield[name] = result.data.relyfield; referParams = {}; page.setState({ referName: result.data.refName, referUrl: referUrl }); referParams.condition = page.props.condition; referParams.pageSize = 10; switch (referStyle) { case 'list': page.getListData(referUrl[name], referParams, 1, name); break; case 'tree': page.getTreeData(referUrl[name], referParams, name); break; case 'tree-list': page.getTreeData(treereferUrl[name], referParams, name); break; default: _toast2.default.fail('请填写正确的referStyle', 2); break; } } else { _toast2.default.fail(result.msg, 2); } } else { _toast2.default.fail("请检查参照编码!", 3); } }, function (err) { _toast2.default.fail("服务器通讯异常!", 3); }); } }, { key: 'componentWillReceiveProps', value: function componentWillReceiveProps(nextprops) { if (nextprops.open !== this.props.open) { console.log(nextprops); var nextopen = nextprops.open; } } }, { key: 'getListData', value: function getListData(referUrl, referParams, pageNumber, contentname) { var self = this; self.setState({ animating: true }); _ajax2.default.getJSON(referUrl, _.assign({}, referParams, { pageNumber: pageNumber }), function (result) { if (result.code === 'success') { data[contentname + 'list'] = result.data.content; pageCount[contentname] = result.data.pageCount; self.setState({ pageNumber: pageNumber, pageCount: result.data.pageCount, animating: false }); } else { self.setState({ animating: false }); } }, function (err) { self.setState({ animating: false }); _toast2.default.fail("服务器通讯异常!", 1); }); } }, { key: 'getTreeData', value: function getTreeData(referUrl, referParams, contentname) { var _self = this; _self.setState({ animating: true }); _ajax2.default.getText(referUrl, referParams, function (result) { result = JSON.parse(result); data[contentname] = result; _self.setState({ animating: false }); }, function (err) { _self.setState({ animating: false }); _toast2.default.fail("服务器通讯异常!", 1); }); } }, { key: 'render', value: function render() { var _this2 = this; var self = this; var _state = this.state, value = _state.value, selectedId = _state.selectedId, animating = _state.animating, pageNumber = _state.pageNumber, showList = _state.showList; var _props = this.props, referlabel = _props.referlabel, referCode = _props.referCode, multiMode = _props.multiMode, displayField = _props.displayField, disabled = _props.disabled, referStyle = _props.referStyle, referName = _props.referName, open = _props.open, modalHeight = _props.modalHeight; var modalStyle = void 0; if (referStyle === 'list') { modalStyle = _react2.default.createElement( _modal2.default, { popup: true, visible: disabled ? '' : open, maskClosable: false, animationType: 'slide-up' }, _react2.default.createElement( 'div', { style: modalHeight == 'part' ? { height: '93vh', width: '100vw' } : { height: '100vh', width: '100vw' } }, _react2.default.createElement( _navBar2.default, { leftContent: '\u8FD4\u56DE', key: 'nav', mode: 'light', onLeftClick: this.onClose(referName), rightContent: [_react2.default.createElement( 'a', { key: 'nav', onClick: this.onOk(referName) }, '\u786E\u5B9A' )] }, referlabel ), _react2.default.createElement(_activityIndicator2.default, { toast: true, text: '\u52A0\u8F7D\u4E2D...', animating: animating }), _react2.default.createElement(_whiteSpace2.default, null), _react2.default.createElement(_searchBar2.default, { placeholder: '\u641C\u7D22', onSubmit: this.onSearchSubmit }), _react2.default.createElement( _list2.default, { className: 'list-content' }, self.listContent(data[referName + 'list'], selectedId) ), _react2.default.createElement(_pagination2.default, { total: pageCount[referName], onChange: this.onChangePageNumber, className: 'custom-pagination-with-icon', current: pageCount[referName] > 0 ? pageNumber : -1, locale: { prevText: _react2.default.createElement( 'span', { className: 'arrow-align' }, '\u4E0A\u4E00\u9875' ), nextText: _react2.default.createElement( 'span', { className: 'arrow-align' }, '\u4E0B\u4E00\u9875' ) } }) ) ); } else if (referStyle === 'tree') { modalStyle = _react2.default.createElement( _modal2.default, { popup: true, visible: disabled ? '' : open, maskClosable: false, animationType: 'slide-up' }, _react2.default.createElement( 'div', { style: modalHeight == 'part' ? { height: '93vh', width: '100vw' } : { height: '100vh', width: '100vw' } }, _react2.default.createElement( _navBar2.default, { leftContent: '\u8FD4\u56DE', key: 'nav', mode: 'light', onLeftClick: this.onClose(referName), rightContent: [_react2.default.createElement( 'a', { key: 'nav', onClick: this.onOk(referName) }, '\u786E\u5B9A' )] }, referlabel ), _react2.default.createElement(_activityIndicator2.default, { toast: true, text: '\u52A0\u8F7D\u4E2D...', animating: animating }), _react2.default.createElement(_whiteSpace2.default, null), _react2.default.createElement(_searchBar2.default, { placeholder: '\u641C\u7D22', onSubmit: this.onSearchSubmit }), _react2.default.createElement( 'div', { className: 'refer-tree-content' }, this.treeContent(data[referName], selectedId) ) ) ); } else if (referStyle === 'tree-list') { modalStyle = _react2.default.createElement( _modal2.default, { popup: true, visible: disabled ? '' : open, maskClosable: false, animationType: 'slide-up' }, _react2.default.createElement( 'div', { style: modalHeight == 'part' ? { height: '93vh', width: '100vw' } : { height: '100vh', width: '100vw' } }, _react2.default.createElement( _navBar2.default, { leftContent: '\u8FD4\u56DE', key: 'nav', mode: 'light', onLeftClick: this.onClose(referName) }, referlabel ), _react2.default.createElement(_activityIndicator2.default, { toast: true, text: '\u52A0\u8F7D\u4E2D...', animating: animating }), _react2.default.createElement(_whiteSpace2.default, null), _react2.default.createElement(_searchBar2.default, { placeholder: '\u641C\u7D22', onSubmit: this.onSearchSubmit }), _react2.default.createElement( 'div', { className: 'refer-tree-content' }, this.treeListContent(data[referName], selectedId) ), _react2.default.createElement( _modal2.default, { popup: true, visible: showList, maskClosable: false, animationType: 'slide-up' }, _react2.default.createElement( 'div', { style: modalHeight == 'part' ? { height: '93vh', width: '100vw' } : { height: '100vh', width: '100vw' } }, _react2.default.createElement( _navBar2.default, { leftContent: '\u8FD4\u56DE', key: 'nav', mode: 'light', onLeftClick: function onLeftClick() { _this2.setState({ selectedTreeId: null, showList: false }); }, rightContent: [_react2.default.createElement( 'a', { key: 'nav', onClick: this.onOk(referName) }, '\u786E\u5B9A' )] }, referlabel ), _react2.default.createElement(_activityIndicator2.default, { toast: true, text: '\u52A0\u8F7D\u4E2D...', animating: animating }), _react2.default.createElement(_whiteSpace2.default, null), _react2.default.createElement(_searchBar2.default, { placeholder: '\u641C\u7D22', onSubmit: this.onSearchSubmit }), _react2.default.createElement( _list2.default, { className: 'list-content' }, self.listContent(data[referName + 'list'], selectedId) ), _react2.default.createElement(_pagination2.default, { total: pageCount[referName], onChange: this.onChangePageNumber, className: 'custom-pagination-with-icon', current: pageCount[referName] > 0 ? pageNumber : -1, locale: { prevText: _react2.default.createElement( 'span', { className: 'arrow-align' }, '\u4E0A\u4E00\u9875' ), nextText: _react2.default.createElement( 'span', { className: 'arrow-align' }, '\u4E0B\u4E00\u9875' ) } }) ) ) ) ); } else { _toast2.default.fail('请传入正确的referStyle', 2); } return _react2.default.createElement( _wingBlank2.default, null, _react2.default.createElement(_whiteSpace2.default, null), modalStyle ); } }]); return YYRefer; }(_react2.default.Component); exports.default = YYRefer; YYRefer.defaultProps = { referlabel: '参照', referCode: '00026', modalHeight: 'all', displayField: 'name', referParams: {}, multiMode: true, disabled: false, open: false, onOk: {}, referName: 'key', referStyle: 'list', condition: {}, listCondition: {} };