UNPKG

@beisen/ethos

Version:

beisencloud pc react components

1,108 lines (1,031 loc) 38.9 kB
'use strict'; var _extends2 = require('babel-runtime/helpers/extends'); var _extends3 = _interopRequireDefault(_extends2); var _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of'); var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf); 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 _class, _temp; /* eslint-disable */ var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _reactDom = require('react-dom'); var _reactDom2 = _interopRequireDefault(_reactDom); var _ParItems = require('./ParItems'); var _ParItems2 = _interopRequireDefault(_ParItems); var _UserItems = require('./UserItems'); var _UserItems2 = _interopRequireDefault(_UserItems); var _search = require('../search'); var _search2 = _interopRequireDefault(_search); var _tabComponent = require('../tab-component'); var _tabComponent2 = _interopRequireDefault(_tabComponent); var _baseButton = require('../base-button'); var _baseButton2 = _interopRequireDefault(_baseButton); var _loading = require('../loading'); var _loading2 = _interopRequireDefault(_loading); var _commonFunc = require('../common-func'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } // import BeisenScrollBar from '@beisen/beisen-scroll-bar'; var MultiModel = (_temp = _class = function (_Component) { (0, _inherits3.default)(MultiModel, _Component); function MultiModel(props) { (0, _classCallCheck3.default)(this, MultiModel); var _this = (0, _possibleConstructorReturn3.default)(this, (MultiModel.__proto__ || (0, _getPrototypeOf2.default)(MultiModel)).call(this, props)); _this.clickEmptyItem = function (event) { _this.cancelBubble(event); var _this$state = _this.state, status = _this$state.status, isSearch = _this$state.isSearch; var dataNow = ''; if (isSearch) { dataNow = 'searchs'; } else { switch (status) { case 0: dataNow = 'usedusers'; break; case 1: dataNow = 'staffs'; break; case 2: dataNow = 'departments'; break; default: break; } } // 这里做控制添加 右侧滚动条置底的操作 setTimeout(function () { _this.refs.usResultsCon.scrollTop = _this.refs.usResultsCon.scrollHeight; }, 0); _this.props.addResults && _this.props.addResults('#AllowSearchNull#', dataNow, undefined); }; _this.deleteEmptyItem = function (event) { _this.cancelBubble(event); _this.props.clearResults && _this.props.clearResults(false, '#AllowSearchNull#'); }; _this.cancelBubble = function (e) { var evt = e || window.event; if (evt.cancelBubble) { // IE evt.preventDefault(); evt.cancelBubble = true; } else { // W3C evt.preventDefault(); evt.stopPropagation(); } }; _this.renderEmptySel = function () { if (_this.state.showEmptyItem) { return _react2.default.createElement( 'div', { className: 'user_select_empty_sel', onClick: _this.clickEmptyItem }, _this.props.translation.emptyText ); } else { return ''; } }; _this.mouseActive = function (str, event) { if (str == 'mouseOut') { event.target.setAttribute('class', 'closeButton pc-sys-guanbi-nomal-svg'); } else if (str == 'mouseOver') { event.target.setAttribute('class', 'closeButton pc-sys-guanbi-active-svg'); } }; _this.selectItemIsEmpty = function () { if (_this.props.emptyResult.length == 1) { return _react2.default.createElement( 'div', { className: 'user_select_empty_isSel' }, _react2.default.createElement( 'span', null, _this.props.translation.emptyText ), _react2.default.createElement('a', { href: 'javascript:void(0)', className: 'closeButton pc-sys-guanbi-nomal-svg', onClick: _this.deleteEmptyItem, onMouseOut: _this.mouseActive.bind(_this, 'mouseOut'), onMouseOver: _this.mouseActive.bind(_this, 'mouseOver') }) ); } else { return ''; } }; _this.state = { status: 0, // 默认常用部门 1,2,3 isSearch: false, index: -1, indexRight: -1, select: false, fetchingFlag: true, showEmptyItem: true }; _this.currentEventKey = 0; _this.searchVal = null; _this.renderUsedStaffText = _this.renderUsedStaffText.bind(_this); _this.depClick = _this.depClick.bind(_this); _this.renderContents = _this.renderContents.bind(_this); _this.removeItem = _this.removeItem.bind(_this); _this.renderResults = _this.renderResults.bind(_this); _this.clearAll = _this.clearAll.bind(_this); _this.selectDep = _this.selectDep.bind(_this); _this.userKeyDown = _this.userKeyDown.bind(_this); _this.userRightKeyDown = _this.userRightKeyDown.bind(_this); _this.changeLen = _this.changeLen.bind(_this); _this.scrollOrNot = _this.scrollOrNot.bind(_this); _this.onMouseOver = _this.onMouseOver.bind(_this); _this.onMouseOut = _this.onMouseOut.bind(_this); return _this; } (0, _createClass3.default)(MultiModel, [{ key: 'scrollOrNot', //是否滚动--真对部门部分 value: function scrollOrNot(direction, trueIndex) { var lists = void 0, totalHeight = 0; if (direction == 'left') { var listParent = _reactDom2.default.findDOMNode(this.refs.partNodes); lists = listParent.getElementsByClassName('us-item-list'); } else { var _listParent = _reactDom2.default.findDOMNode(this.refs.resultPart); lists = _listParent.getElementsByClassName('us-item-list'); } for (var i = 0; i < trueIndex; i++) { totalHeight += lists[i].clientHeight; } return totalHeight > 255 ? true : false; } //部门左侧监听键盘事件 }, { key: 'userKeyDown', value: function userKeyDown(e) { e.stopPropagation(); var trueIndex = void 0; var usData = void 0; var props = this.props; switch (this.state.status) { case 0: //常用 usData = props.usedusers; break; case 1: // 下属 usData = props.staffs; break; case 2: // 部门 var listParent = _reactDom2.default.findDOMNode(this.refs.partNodes); var lists = listParent.getElementsByClassName('us-item-list'); var _trueIndex = this.state.index; var listLen = lists.length; var targetDom = listParent.getElementsByClassName('dep-hold-on')[0] || listParent.getElementsByClassName('user-hold-on')[0]; var usDepCon = this.refs.usDepCon; switch (e.keyCode) { case 13: //回车 //调用父部门的click事件。 targetDom && targetDom.parentNode.click(); break; case 38: //up if (_trueIndex <= 0) { _trueIndex = listLen - 1; usDepCon.scrollTop = usDepCon.scrollHeight; } else { _trueIndex = --_trueIndex % listLen; usDepCon.scrollTop -= targetDom.clientHeight; } var preIndex = _trueIndex + 1; if (preIndex >= listLen) { preIndex = 0; } var preTarDepUser = lists[_trueIndex]; lists[preIndex].className = lists[preIndex].className.indexOf('us-department') > 0 ? 'us-item-list us-department ' : 'us-item-list us-user clearfix'; lists[_trueIndex].className += preTarDepUser.className.indexOf('us-department') > 0 ? ' dep-hold-on' : ' user-hold-on'; this.setState({ index: _trueIndex }); break; case 40: //down if (this.state.index < 0) { _trueIndex = 0; } else { _trueIndex = ++this.state.index % listLen; } if (_trueIndex == 0) { usDepCon.scrollTop = 0; } else if (this.scrollOrNot('left', _trueIndex)) { usDepCon.scrollTop += targetDom.clientHeight; } var lastIndex = _trueIndex - 1; if (lastIndex < 0) { lastIndex = listLen - 1; } var tarDepUser = lists[_trueIndex]; lists[lastIndex].className = lists[lastIndex].className.indexOf('us-department') > 0 ? 'us-item-list us-department ' : 'us-item-list us-user clearfix'; lists[_trueIndex].className += tarDepUser.className.indexOf('us-department') > 0 ? ' dep-hold-on' : ' user-hold-on'; this.setState({ index: _trueIndex }); break; default: break; } return; default: break; } // 只适用于非部门情况下 switch (e.keyCode) { case 13: //回车 if (e.target.tagName != 'INPUT') { var tarData = usData[this.state.index]; var dataNow = this.state.status == 0 ? 'usedusers' : 'staffs'; this.props.addResults(parseInt(tarData.Id), dataNow); } break; case 38: //up if (this.state.index <= 0) { trueIndex = usData.length - 1; } else { trueIndex = --this.state.index % usData.length; } this.refs.usDepCon.scrollTop = trueIndex > 3 ? 50 * (trueIndex - 4) : void 0; this.setState({ index: trueIndex }); break; case 40: //down if (this.state.index < 0) { trueIndex = 0; } else { trueIndex = ++this.state.index % usData.length; this.refs.usDepCon.scrollTop = trueIndex > 3 ? 50 * (trueIndex - 4) : void 0; } this.setState({ index: trueIndex }); break; default: break; } } }, { key: 'onMouseOver', value: function onMouseOver(e, index) { this.setState({ index: index }); } }, { key: 'onMouseOut', value: function onMouseOut(e, index) { this.setState({ index: index }); } //部门右侧键盘事件监听 }, { key: 'userRightKeyDown', value: function userRightKeyDown(e) { e.stopPropagation(); e.nativeEvent.stopImmediatePropagation(); var trueIndex = this.state.indexRight; var listParent = _reactDom2.default.findDOMNode(this.refs.resultPart); var lists = listParent.getElementsByClassName('us-item-list'); var listLen = lists.length; var targetDom = listParent.getElementsByClassName('dep-hold-on')[0] || listParent.getElementsByClassName('user-hold-on')[0]; var usResultsCon = this.refs.usResultsCon; switch (e.keyCode) { case 38: //up if (trueIndex <= 0) { trueIndex = listLen - 1; usResultsCon.scrollTop = usResultsCon.scrollHeight; } else { trueIndex = --trueIndex % listLen; usResultsCon.scrollTop -= targetDom.clientHeight; } var preIndex = trueIndex + 1; if (preIndex >= listLen) { preIndex = 0; } var preTarDepUser = lists[trueIndex]; lists[preIndex].className = lists[preIndex].className.indexOf('us-department') > 0 ? 'us-item-list us-department ' : 'us-item-list us-user clearfix'; lists[trueIndex].className += preTarDepUser.className.indexOf('us-department') > 0 ? ' dep-hold-on' : ' user-hold-on'; this.setState({ indexRight: trueIndex }); break; case 40: //down if (this.state.indexRight < 0) { trueIndex = 0; } else { trueIndex = ++this.state.indexRight % listLen; // this.refs.usResultsCon.scrollTop } if (trueIndex == 0) { usResultsCon.scrollTop = 0; } else if (this.scrollOrNot('right', trueIndex)) { usResultsCon.scrollTop += targetDom.clientHeight; } var lastIndex = trueIndex - 1; if (lastIndex < 0) { lastIndex = listLen - 1; } var tarDepUser = lists[trueIndex]; lists[lastIndex].className = lists[lastIndex].className.indexOf('us-department') > 0 ? 'us-item-list us-department ' : 'us-item-list us-user clearfix'; lists[trueIndex].className += tarDepUser.className.indexOf('us-department') > 0 ? ' dep-hold-on' : ' user-hold-on'; this.setState({ indexRight: trueIndex }); break; case 13: //回车--只有部门响应该事件 //非部门,返回 if (targetDom.className.indexOf('us-user') > -1) return; //调用父部门的click事件。 targetDom && targetDom.parentNode.click(); break; default: break; } } //改变index||indexRight }, { key: 'changeLen', value: function changeLen(that) { //在这里setState === die if (!this.refs.partNodes) return; var listParent = void 0; var lists = void 0; if (that) { var clickDomLi = _reactDom2.default.findDOMNode(that); var right = false; if (clickDomLi.parentNode.parentNode.className == 'us-results-con') { //右侧 listParent = _reactDom2.default.findDOMNode(this.refs.resultPart); right = true; } else { //left listParent = _reactDom2.default.findDOMNode(this.refs.partNodes); } lists = listParent.getElementsByClassName('us-item-list'); //把原来的选中类清空, var selectDep = listParent.getElementsByClassName('dep-hold-on'); var selectUser = listParent.getElementsByClassName('user-hold-on'); for (var i = 0; i < selectDep.length; i++) { selectDep[i].className = 'us-item-list us-department '; } for (var _i = 0; _i < selectUser.length; _i++) { selectUser[_i].className = 'us-item-list us-user clearfix '; } //并获取点击的item的index var clickDomDiv = clickDomLi.getElementsByClassName('us-item-list')[0]; clickDomDiv.className = clickDomDiv.className.indexOf('us-department') > -1 ? 'us-item-list us-department dep-hold-on' : 'us-item-list us-user clearfix user-hold-on'; for (var _i2 = 0; _i2 < lists.length; _i2++) { if (lists[_i2] === clickDomDiv) { if (right) { this.state.indexRight = _i2; } else { this.state.index = _i2; } return; } } } } // 左侧点击 事件代理 添加到右侧 }, { key: 'depClick', value: function depClick(event) { event.stopPropagation(); event.nativeEvent.stopImmediatePropagation(); var _state = this.state, status = _state.status, isSearch = _state.isSearch; var node = event.target; var id = void 0, pid = void 0, dataNow = void 0; var getParNode = function getParNode(node, target, className) { if (node.className == 'us-item-top') return; if (node.tagName == target.toUpperCase() && node.className == className) return node; return getParNode(node.parentNode, target, className); }; if (node.className == 'sys-icon-add') { var parNode = getParNode(node, 'li', 'us-item us-item-department'); id = parNode.getAttribute('data-id'); dataNow = 'departments'; } var userNode = getParNode(node, 'li', 'us-item us-item-user'); if (userNode) { id = userNode.getAttribute('data-id'); if (status == 2 && !isSearch) { var userParDepNode = getParNode(userNode, 'li', 'us-item us-item-department'); pid = userParDepNode.getAttribute('data-id'); } if (isSearch) { dataNow = 'searchs'; } else { switch (status) { case 0: dataNow = 'usedusers'; break; case 1: dataNow = 'staffs'; break; case 2: dataNow = 'departments'; break; default: break; } } } this.props.addResults && this.props.addResults(parseInt(id), dataNow, parseInt(pid)); } /** * 递归选出departments中的item */ }, { key: 'selectDep', value: function selectDep(dep, Id, myItem) { myItem = myItem; if (dep.Id == Id) { myItem.push(dep); } else { var self = this; var childDep = dep.childDep; if (childDep && childDep.length > 0) { for (var i = 0; i < childDep.length; i++) { self.selectDep(childDep[i], Id, myItem); } } } return myItem; } // 右侧渲染结果 }, { key: 'renderResults', value: function renderResults() { var _this2 = this; var selfs = this; var _props = this.props, results = _props.results, getDepInfo = _props.getDepInfo, self = _props.self, addDepartment = _props.addDepartment, departments = _props.departments, isUseInitial = _props.isUseInitial, apiType = _props.apiType, urls = _props.urls, translation = _props.translation, isShowDepartmentName = _props.isShowDepartmentName; if (results.length == 0 && this.props.emptyResult.length == 0) return _react2.default.createElement( 'div', { className: 'us-no-data' }, _react2.default.createElement('span', { className: 'empty-con', 'data-bg-text': translation.emptyBgText }) ); var temp = results && results.map(function (item, index) { var myItem = []; if (item && item.PId >= -1) { //递归选出目标部门 for (var i = 0; i < departments.length; i++) { _this2.selectDep(departments[i], item.Id, myItem); } var holdOn = index == _this2.state.indexRight ? true : false; return _react2.default.createElement(_ParItems2.default, (0, _extends3.default)({}, myItem[0], { changeLen: _this2.changeLen, select: _this2.state.select, holdOn: holdOn, userKeyDown: _this2.userKeyDown, getDepInfo: getDepInfo, urls: urls, isUseInitial: isUseInitial, apiType: apiType, addDepartment: addDepartment, key: index, isDelete: true, self: self, translation: translation })); } else { var _holdOn = index == _this2.state.indexRight ? true : false; return _react2.default.createElement(_UserItems2.default, (0, _extends3.default)({}, item, { translation: translation, holdOn: _holdOn, userKeyDown: _this2.userKeyDown, key: index, isDelete: true, isShowDepartmentName: isShowDepartmentName })); } }); return temp; } // 右侧事件代理 移除单个 }, { key: 'removeItem', value: function removeItem(event) { event.stopPropagation(); event.nativeEvent.stopImmediatePropagation(); if (this.props.results.length == 0) return; var node = event.target; if (node.className != 'sys-icon-close') return; var getParNode = function getParNode(node, target) { if (node.tagName == target.toUpperCase()) return node; return getParNode(node.parentNode, target); }; var parNode = getParNode(node, 'li'); var id = parNode.getAttribute('data-id'); this.props.clearResults && this.props.clearResults(false, parseInt(id)); } // 清空所有 }, { key: 'clearAll', value: function clearAll(event) { event.stopPropagation(); event.nativeEvent.stopImmediatePropagation(); if (this.props.results.length == 0 && this.props.emptyResult.length == 0) return; this.props.clearResults && this.props.clearResults(true); } }, { key: 'componentWillReceiveProps', value: function componentWillReceiveProps(nextProps) { if (!nextProps.isFetching && nextProps.isFetching == false && this.state.fetchingFlag == true) { this.setState({ fetchingFlag: false }); } } // 根据当前渲染 }, { key: 'renderContents', value: function renderContents() { var _this3 = this; var _state2 = this.state, status = _state2.status, isSearch = _state2.isSearch, fetchingFlag = _state2.fetchingFlag; var _props2 = this.props, addDepartment = _props2.addDepartment, usedusers = _props2.usedusers, staffs = _props2.staffs, departments = _props2.departments, getDepInfo = _props2.getDepInfo, searchs = _props2.searchs, apiType = _props2.apiType, isUseInitial = _props2.isUseInitial, urls = _props2.urls, hiddenTip = _props2.hiddenTip, sideTip = _props2.sideTip, translation = _props2.translation, isShowDepartmentName = _props2.isShowDepartmentName; if (isSearch) { if (searchs.length == 0) { return _react2.default.createElement( 'div', { className: 'us-no-data' }, _react2.default.createElement('span', { className: 'empty-con', 'data-bg-text': translation.emptyBgText }) ); } else { return searchs && searchs.map(function (item, index) { return _react2.default.createElement(_UserItems2.default, (0, _extends3.default)({}, item, { onMouseOut: _this3.onMouseOut, onMouseOver: _this3.onMouseOver, userKeyDown: _this3.userKeyDown, key: index, searchs: searchs, isSearch: _this3.state.isSearch, searchVal: _this3.searchVal, index: index, translation: translation, isShowDepartmentName: isShowDepartmentName })); }); } } else { switch (status) { case 0: if (usedusers.length == 0) return _react2.default.createElement( 'div', { className: 'us-no-data' }, _react2.default.createElement('span', { className: 'empty-con', 'data-bg-text': translation.emptyBgText }) ); return usedusers && usedusers.map(function (item, index) { var holdOn = index == _this3.state.index ? true : false; return _react2.default.createElement(_UserItems2.default, (0, _extends3.default)({ holdOn: holdOn, onMouseOut: _this3.onMouseOut, onMouseOver: _this3.onMouseOver, userKeyDown: _this3.userKeyDown }, item, { key: index, index: index, translation: translation, isShowDepartmentName: isShowDepartmentName })); }); case 1: if (staffs.length == 0) return _react2.default.createElement( 'div', { className: 'us-no-data' }, _react2.default.createElement('span', { className: 'empty-con', 'data-bg-text': translation.emptyBgText }) ); return staffs && staffs.map(function (item, index) { var holdOn = index == _this3.state.index ? true : false; return _react2.default.createElement(_UserItems2.default, (0, _extends3.default)({ holdOn: holdOn, onMouseOut: _this3.onMouseOut, onMouseOver: _this3.onMouseOver, userKeyDown: _this3.userKeyDown }, item, { key: index, index: index, translation: translation, isShowDepartmentName: isShowDepartmentName })); }); case 2: //需要将当前页面的数据(包括部门信息和人员信息)扁平化去匹配index // if(this.state.index>=0) { // document.getElementsByClassName('us-item-list')[this.state.index].className += ' user-hold-on'; // } var style = { position: 'relative', width: '310px', height: '260px', "borderRadius": "5px" }; var isWin10 = navigator.userAgent.indexOf("Windows NT 10.0") > -1 && !!window.ActiveXObject || "ActiveXObject" in window; if (fetchingFlag && !isWin10) { return _react2.default.createElement(_loading2.default, { type: 'small', style: style }); } else if (departments.length == 0) { return _react2.default.createElement( 'div', { className: 'us-no-data' }, _react2.default.createElement('span', { className: 'empty-con', 'data-bg-text': translation.emptyBgText }) ); } return departments && departments.map(function (item, index) { var holdOn = index == _this3.state.index ? true : false; return _react2.default.createElement(_ParItems2.default, (0, _extends3.default)({ ref: 'partNodes' }, item, { changeLen: _this3.changeLen, select: false, holdOn: holdOn, userKeyDown: _this3.userKeyDown, addDepartment: addDepartment, key: index, getDepInfo: getDepInfo, urls: urls, isUseInitial: isUseInitial, apiType: apiType, hiddenTip: hiddenTip, sideTip: sideTip, translation: translation })); }); default: break; } } } /* */ }, { key: 'renderUsedStaffText', value: function renderUsedStaffText() { var _state3 = this.state, status = _state3.status, isSearch = _state3.isSearch; var _props3 = this.props, usedusers = _props3.usedusers, staffs = _props3.staffs, searchs = _props3.searchs, translation = _props3.translation; if (isSearch == true) { return _react2.default.createElement( 'p', { className: 'us-multi-tip' }, translation.searchResultText, '\xA0', searchs.length == 0 ? undefined : (0, _commonFunc.transFormat)(translation.personCount, searchs.length), _react2.default.createElement('a', { href: 'javascript:void(0)', className: 'sys-icon-add', onClick: this.addAll.bind(this, 'searchs') }) ); } if (status == 0) { if (usedusers.length == 0) { return null; } else { return _react2.default.createElement( 'p', { className: 'us-multi-tip' }, translation.commonContactsText, '\xA0', usedusers.length == 0 ? undefined : (0, _commonFunc.transFormat)(translation.personCount, usedusers.length), _react2.default.createElement('a', { href: 'javascript:void(0)', className: 'sys-icon-add', onClick: this.addAll.bind(this, 'usedusers') }) ); } } else if (status == 1) { if (staffs.length == 0) { return null; } else { return _react2.default.createElement( 'p', { className: 'us-multi-tip' }, translation.commonSubordinateText, '\xA0', staffs.length == 0 ? undefined : (0, _commonFunc.transFormat)(translation.personCount, staffs.length), _react2.default.createElement('a', { href: 'javascript:void(0)', className: 'sys-icon-add', onClick: this.addAll.bind(this, 'staffs') }) ); } } } /* tab切换回调 */ }, { key: 'tabClick', value: function tabClick(eventKey, event) { event.stopPropagation(); event.nativeEvent.stopImmediatePropagation(); this.refs.scrollBar && this.refs.scrollBar.reset(); this.state.index = -1; var _props4 = this.props, isUseInitial = _props4.isUseInitial, apiType = _props4.apiType, urls = _props4.urls, staffs = _props4.staffs, departments = _props4.departments; if (eventKey == 1) { // 下属 if (staffs.length == 0) { if (isUseInitial) { var tempStaffUrl = urls['get' + apiType]('staffUrl'); this.props.getStaff && this.props.getStaff(tempStaffUrl); } else { this.props.getStaff && this.props.getStaff(); } } } else if (eventKey == 2) { // 部门 if (departments.length == 0) { if (isUseInitial) { var tempDepartmentUrl = urls['get' + apiType]('departmentUrl'); this.props.getDepartments && this.props.getDepartments(tempDepartmentUrl); } else { this.props.getDepartments && this.props.getDepartments(); } } } this.searchVal = null; this.setState({ status: eventKey, isSearch: false, showEmptyItem: true }); this.currentEventKey = eventKey; } /* 添加所有 */ }, { key: 'addAll', value: function addAll(val, event) { event.stopPropagation(); event.nativeEvent.stopImmediatePropagation(); this.props.addAllUsers && this.props.addAllUsers(val); } /* 确定回调 */ }, { key: 'sureClick', value: function sureClick(val) { val.stopPropagation(); this.props.onSure && this.props.onSure(this.props.results.concat(this.props.emptyResult)); this.props.closeComponent(); } /* 取消回调 */ }, { key: 'closeClick', value: function closeClick(val) { val.stopPropagation(); this.props.onClose && this.props.onClose(); this.props.closeComponent(); } /* 搜索回调 */ }, { key: 'getSearch', value: function getSearch(val) { if (val.value.length == 0) { this.setState({ isSearch: false, showEmptyItem: true, status: this.currentEventKey }); } else { //对外提供一个对数据format的方法,允许外界对输入对数据进行修改删减,将会在发送请求前处理,此方法需要返回处理后的数据 var searchDataFormat = this.props.searchDataFormat; if (typeof searchDataFormat === "function") { val.event.target.value = val.value = searchDataFormat(val.value, val.event); } this.searchVal = val.value; var _props5 = this.props, apiType = _props5.apiType, isUseInitial = _props5.isUseInitial, urls = _props5.urls; val.value = encodeURIComponent(val.value); if (isUseInitial) { var tempUrl = urls['get' + apiType]('searchUrl') + '&filters=' + val.value; this.props.getSearchInfo && this.props.getSearchInfo(val.value, tempUrl); } else { this.props.getSearchInfo && this.props.getSearchInfo(val.value); } this.setState({ isSearch: true, status: 0, showEmptyItem: false }); } } /* search 失去焦点 */ }, { key: 'searchBlur', value: function searchBlur() { // this.setState({isSearch: false}); } }, { key: 'componentDidMount', value: function componentDidMount() { if (this.props.usedusers.length == 0) { this.props.getUsedInfo && this.props.getUsedInfo(); } this.props.advancedModeMounted && this.props.advancedModeMounted(); } /* render scrollBar here */ // renderScrollBar(){ // return ( // <div className="us-dep-con"> // <BeisenScrollBar // style={{'height':'inherit'}} > // {this.renderUsedStaffText()} // <ul className="us-item-top" onClick={this.depClick}> // {this.renderContents()} // </ul> // </BeisenScrollBar> // </div> // ) // } /* */ }, { key: 'componentDidUpdate', value: function componentDidUpdate(prevProps) { this.changeLen(); // 当结果发生增加时,滚动到底部,其他情况不变 if (prevProps.results && this.props.results && this.props.results.length > prevProps.results.length) { this.refs.usResultsCon.scrollTop = 99999; } } // 这个是空值搜索的选项 }, { key: 'render', value: function render() { var _props6 = this.props, results = _props6.results, hiddenTabDepartment = _props6.hiddenTabDepartment, searchPlaceholde = _props6.searchPlaceholde, translation = _props6.translation, staffs = _props6.staffs; var status = this.state.status; var TabData = { hidden: false, bsStyle: 'tabs', activeKey: this.state.status, tabItems: [{ idx: 'tab0', eventKey: 0, title: translation.tabItemTitleCommon, active: this.state.status == 0 }, { idx: 'tab1', eventKey: 1, title: translation.tabItemTitleSubordinate, active: this.state.status == 1 }, { idx: 'tab2', eventKey: 2, title: translation.tabItemTitleDepartment, active: this.state.status == 2 }], callBack: this.tabClick.bind(this) }; if (hiddenTabDepartment && TabData.tabItems.filter(function (item) { return item.title == translation.tabItemTitleDepartment; }).length > 0) { TabData.tabItems.pop(); } var SearchData = { "placeholder": searchPlaceholde, "iconName": "sys-icon-sousuo", active: true, onChange: this.getSearch.bind(this), onBlur: this.searchBlur.bind(this) }; var sureButton = { bsStyle: "default", bsSize: "small", active: true, title: translation.sureButtonTitle, onClick: this.sureClick.bind(this) }; var cancelButton = { bsStyle: "weaken", bsSize: "small", active: true, title: translation.cancelButtonTitle, onClick: this.closeClick.bind(this) }; var usersCount = 0, depCount = 0; results && results.forEach(function (item, index) { if (item && item.PId >= -1) { depCount++; } else { usersCount++; } }); return _react2.default.createElement( 'div', { className: 'us-multi-container', tabIndex: '0', onKeyDown: this.userKeyDown }, _react2.default.createElement( 'div', { className: 'us-search' }, _react2.default.createElement(_search2.default, SearchData) ), _react2.default.createElement( 'div', { className: 'us-content clearfix' }, _react2.default.createElement( 'div', { className: 'us-left' }, _react2.default.createElement(_tabComponent2.default, TabData), _react2.default.createElement( 'div', { className: 'us-dep-con', ref: 'usDepCon' }, this.props.allowSearchNull ? this.renderEmptySel() : '', this.renderUsedStaffText(), _react2.default.createElement( 'ul', { className: 'us-item-top', onClick: this.depClick }, this.renderContents() ) ) ), _react2.default.createElement( 'div', { className: 'us-right', tabIndex: '1', onKeyDown: this.userRightKeyDown }, _react2.default.createElement( 'div', { className: 'us-multi-result' }, _react2.default.createElement( 'p', { className: 'us-multi-human' }, translation.multiHumanTitle, '\xA0\xA0', usersCount == 0 ? undefined : (0, _commonFunc.transFormat)(translation.personCount, usersCount), '\xA0\xA0', depCount == 0 ? undefined : (0, _commonFunc.transFormat)(translation.groupName, depCount), _react2.default.createElement( 'a', { className: results.length == 0 && this.props.emptyResult.length == 0 ? 'us-multi-clearall us-multi-clearall-disabled' : 'us-multi-clearall', onClick: this.clearAll }, translation.clearAllSelectedText ) ), _react2.default.createElement( 'div', { className: 'us-results-con', ref: 'usResultsCon' }, _react2.default.createElement( 'ul', { className: 'us-item-top', onClick: this.removeItem, ref: 'resultPart' }, this.renderResults() ), this.selectItemIsEmpty() ) ) ) ), _react2.default.createElement( 'div', { className: 'us-footer clearfix' }, _react2.default.createElement(_baseButton2.default, sureButton), _react2.default.createElement(_baseButton2.default, cancelButton) ) ); } }]); return MultiModel; }(_react.Component), _class.defaultProps = { searchPlaceholde: '请搜索' }, _temp); module.exports = MultiModel;