import { inject, observer } from 'mobx-react'; import { Button, Form, Modal, message, Spin } from 'antd'; import isEmpty from 'lodash/isEmpty' import debounce from 'lodash/debounce' import { WeaTop, WeaTab, WeaOrgTree, WeaLeftRightLayout, WeaRightMenu, WeaErrorPage, WeaTools, WeaSearchGroup, WeaDialog, WeaInput, WeaInputSearch, WeaDropMenu, WeaFormItem, WeaTransfer, WeaSelect, WeaLocaleProvider, } from 'ecCom'; import trim from 'lodash/trim' import { WeaTableNew, WeaSwitch } from 'comsMobx'; const { WeaTable } = WeaTableNew; import '../style/addressBook.less'; import * as PublicFunc from '../util/pulic-func'; import { jumpToHrmCard, jumpToHrmSubCompany, jumpToHrmDept, jumpToHrmPost } from '../util/pulic-func' import cloneDeep from 'lodash/cloneDeep'; import AddressBookExportSetting from './resourceExportTemplate/AddressBookExportSetting'; import { i18n } from '../public/i18n'; import uuid from 'uuid/v1'; import OrgTree from '../public/components/OrgTree.js'; import ColsetDialog from './addressBookPlus/ColsetDialog.js'; import LogDialog from './addressBookPlus/LogDialog.js'; import SyncDetailDialog from './addressBookPlus/SyncDetailDialog.js'; const getLabel = WeaLocaleProvider.getLabel; const toJS = mobx.toJS; @inject('hrmAddressBook') @observer export default class AddressBook extends React.Component { constructor(props) { super(props); this.state = { transferVisible: false } } componentDidMount() { const { from, lastname } = this.props.location.query; const { hrmAddressBook } = this.props; hrmAddressBook.searchFrom = from || ''; hrmAddressBook.searchKeyWord = lastname || ''; this.init(); } componentWillReceiveProps(nextProps) { if (this.props.location.key !== nextProps.location.key) { const { from, lastname } = nextProps.location.query; const { hrmAddressBook } = this.props; hrmAddressBook.searchFrom = from || ''; hrmAddressBook.searchKeyWord = lastname || ''; this.refs.WeaOrgTree && this.refs.WeaOrgTree.reset(() => { this.refs.WeaOrgTree.fetchData(); }); this.init(); } } init = () => { const { type, id } = this.props.location.query; const { hrmAddressBook } = this.props; hrmAddressBook.showAllLevel = true; hrmAddressBook.rightMenus = [] hrmAddressBook.defaultShowLeft = false; hrmAddressBook.virtualtype =''; hrmAddressBook.companysId='1'; if (hrmAddressBook.searchFrom && hrmAddressBook.searchFrom == 'quickSearch') { hrmAddressBook.tabkey = 'default_3'; } else { hrmAddressBook.tabkey = 'default_3'; } let params = {} if (type && type != '' && id && id != '') { if (type == '1') { params['subcompanyid1'] = id; } if (type == '2') { params['departmentid'] = id; } } hrmAddressBook.getData(params); hrmAddressBook.getRightMenuConfig(); hrmAddressBook.updateShowSearchAd(false); hrmAddressBook.updateVisible1(false); hrmAddressBook.updateVisible2(false); //重置左侧页签 const { hrmAddressBookPlus: plusStore } = hrmAddressBook; plusStore.leftTab.selectedKey = '0'; } onTabEdit = (targetKey, action) => { const { hrmAddressBook } = this.props; if (action === 'remove') { let params = {}; params.opera = "delete"; params.mouldid = targetKey; hrmAddressBook.deleteTabs(params); } } reRenderColumns = (columns) => { let __this = this; const { hrmAddressBook } = this.props; const { virtualtype } = hrmAddressBook; columns.forEach(c => { if (c.dataIndex == 'lastname') { c.render = function(text, record) { return jumpToHrmCard(record.id)}>{record.lastname} } } else if (c.dataIndex == 'managerid') { c.render = function(text, record) { return jumpToHrmCard(record.managerid)} dangerouslySetInnerHTML={{__html: record.manageridspan}}> } } else if (c.dataIndex == 'subcompanyid1' && !(virtualtype.indexOf("-") > -1)) { c.render = function(text, record) { return jumpToHrmSubCompany(record.subcompanyid1)} dangerouslySetInnerHTML={{__html: record.subcompanyid1span}}> } } else if (c.dataIndex == 'departmentid' && !(virtualtype.indexOf("-") > -1)) { c.render = function(text, record) { return jumpToHrmDept(record.departmentid)} dangerouslySetInnerHTML={{__html: record.departmentidspan}}> } } else if (c.dataIndex == 'jobtitle') { c.render = function(text, record) { return jumpToHrmPost(record.jobtitle)} dangerouslySetInnerHTML={{__html: record.jobtitlespan}}> } } else { // c.render = function(text, record) { // let valueSpan = record[c.dataIndex + "span"] !== undefined ? record[c.dataIndex + "span"] : record[c.dataIndex]; // return // } } }) return columns; } onOperatesClick = (record, index, operate, flag, argumentString) => { const fn = operate.href ? operate.href.split(':')[1].split('(')[0] : ''; const id = record.id ? record.id : ''; PublicFunc[fn](id); } getTabButtonsAd = () => { const { hrmAddressBook } = this.props; const { tabkey, form, companysId } = hrmAddressBook; const btns = []; if (companysId && companysId < 0) { } else { tabkey == 'default_3' && btns.push(); tabkey == 'default_3' && btns.push(); btns.push(); btns.push(); } return btns; } getSearchs = () => { const { hrmAddressBook } = this.props; const { conditioninfo, conditioninfoAll, form, showAllCondition } = hrmAddressBook; const { isFormInit } = form; let ci = showAllCondition ? conditioninfoAll : conditioninfo; const group = []; isFormInit && ci.forEach((c, i) => { let items = []; c.items.forEach((field, j) => { if (field.isQuickSearch) { this.quickSearchPara = field.domkey[0]; } items.push({ com: ( ), colSpan: 1, }); }); group.push( ); }); return
{group} {!showAllCondition &&
hrmAddressBook.updateShowAllCondition(true)} style={{marginRight: 12}}> {i18n.label.allCondition()}
}
} getRightMenu = () => { const { hrmAddressBook } = this.props; const { rightMenus } = hrmAddressBook; let btns = []; const keys = this.getSelectedRowKeys(); !isEmpty(rightMenus) && rightMenus.forEach((c) => { let item = { icon: , content: c.menuName, } if (c.menuFun == 'sendEmessage') item.disabled = keys.length == 0; btns.push(item); }) return btns; } onRightMenuClick = (key) => { const { hrmAddressBook } = this.props; const { rightMenus } = hrmAddressBook; const menuFun = rightMenus[key].menuFun; this[menuFun] && this[menuFun](); } getTree = () => { const { hrmAddressBook } = this.props; const { companysId, hrmAddressBookPlus: plusStore } = hrmAddressBook, { leftTabDatas, leftTab, ORGTREE, } = plusStore; Object.assign(ORGTREE,{ expandAllChildrenOnSearch:true }); let tree; if (leftTab.selectedKey === '0') { tree = ( ${i18n.label.organization()} ) } else { tree = ; } const leftCom = (
{ tree }
) return leftCom; } selectVirtual = (v) => { const { hrmAddressBook } = this.props; let params = {} params['virtualtype'] = v.key; hrmAddressBook.virtualtype = v.key; hrmAddressBook.selectVirtual(v.key); hrmAddressBook.getData(params); hrmAddressBook.getRightMenuConfig(); hrmAddressBook.updateShowSearchAd(false); hrmAddressBook.updateVisible1(false); hrmAddressBook.updateVisible2(false); } treeNodeClick = (event) => { const { hrmAddressBook } = this.props; const { form, companysId } = hrmAddressBook; const type = event.node.props.type || '0'; const id = event.node.props.id || ''; let params = {}; form.resetConditionValue(); hrmAddressBook.updateShowSearchAd(false); hrmAddressBook.tabkey = 'default_3'; hrmAddressBook.nodeType=type; if (type == '0') { params['virtualtype'] = companysId; } if (type == '1') { params['subcompanyid1'] = id; } if (type == '2') { params['departmentid'] = id; } hrmAddressBook.doSearch(params); } getDialogBtns1 = () => { const { hrmAddressBook } = this.props; const btns = []; return btns; } getDialogBtns2 = () => { const { hrmAddressBook } = this.props; const btns = []; return btns; } filterLeft = (items) => { let leftItems = cloneDeep(items) const { hrmAddressBook } = this.props; const { transferleftIptVal, transferSelectedKey } = hrmAddressBook; if (transferSelectedKey) { leftItems = leftItems.filter((item) => item.idx == transferSelectedKey) } if (trim(transferleftIptVal)) { leftItems = leftItems.filter((item) => item.label.indexOf(trim(transferleftIptVal)) > -1) } return leftItems } filterRight = (items) => { let rightItems = cloneDeep(items) const { hrmAddressBook } = this.props; const { transferRightIptVal } = hrmAddressBook; if (trim(transferRightIptVal)) { rightItems = rightItems.filter((item) => item.label.indexOf(trim(transferRightIptVal)) > -1) } return rightItems } renderItem = (item) => { return
{item.label}
{item.title}
} renderTransfer = () => { const { hrmAddressBook } = this.props; let { transferDatas, transferKeys, transferOptions, transferleftIptVal, transferRightIptVal, transferSelectedKey } = hrmAddressBook; transferDatas = toJS(transferDatas); transferKeys = toJS(transferKeys); transferOptions = toJS(transferOptions); return (
{ !isEmpty(transferDatas) && {i18n.label.toBeSelected()}
} rightHeader = {
{i18n.label.selected()}
} renderItem = { this.renderItem } data = { transferDatas } selectedKeys = { transferKeys } onChange={hrmAddressBook.updateTransferKeys} /> } ) } getTopButtons = () => { const { hrmAddressBook } = this.props; const { showAllLevel, tabkey, rightMenus } = hrmAddressBook; const keys = this.getSelectedRowKeys(); let btns = []; const btnShowAllLevel = ; // if(tabkey=='default_2'){ // btns.push(btnShowAllLevel); // } btns.push(btnShowAllLevel); rightMenus.map((item, index) => { if (item.isTop && item.isTop == '1') { btns.push(); } }); return btns; } changeShowAllLevel = () => { const { hrmAddressBook } = this.props; hrmAddressBook.changeShowAllLevel(); } sendEmessage = () => { const keys = this.getSelectedRowKeys(); const ids = keys ? keys.join(',') : ''; PublicFunc.sendEmessage(ids); } exportExcel = () => { const { hrmAddressBook } = this.props; hrmAddressBook.exportExcel(); } doExportSetting = () => { const { hrmAddressBook } = this.props; hrmAddressBook.initExportSetting(); return; hrmAddressBook.exportExcel(); } doSearch = (params) => { const { hrmAddressBook } = this.props; hrmAddressBook.doSearch(params); } reSearch = () => { const { hrmAddressBook } = this.props; hrmAddressBook.reSearch(); } definedColumn = () => { const { hrmAddressBook } = this.props, { hrmAddressBookPlus: plusStore } = hrmAddressBook; plusStore.openColsetDialog('colset'); // const { // hrmAddressBook // } = this.props; // const { // table // } = hrmAddressBook; // table.setColSetVisible(true); // table.tableColSet(true); } doLog = () => { const { hrmAddressBook } = this.props, { hrmAddressBookPlus: plusStore } = hrmAddressBook; plusStore.openSynclogDialog('excel'); } doSortSetting = () => { const { hrmAddressBook } = this.props, { hrmAddressBookPlus: plusStore } = hrmAddressBook; plusStore.openColsetDialog('sortSetting'); } getSelectedRowKeys = () => { const { hrmAddressBook } = this.props; const { table } = hrmAddressBook; const selectedRowKeys = table.selectedRowKeys; return selectedRowKeys; } onCancel = () => { this.props.hrmAddressBook.updateVisible1(false) } onCancel1 = () => { this.props.hrmAddressBook.updateVisible2(false); this.props.hrmAddressBook.updateTempleteValue('') } onKeyDown = (e) =>{ if (e.keyCode == 13&& e.target.tagName === "INPUT") { this.props.hrmAddressBook.getSearchList() this.props.hrmAddressBook.updateShowSearchAd(false); } } hideSearchAd = () => { this.props.hrmAddressBook.updateShowSearchAd(false); } onSearchChange = value => { this.props.hrmAddressBook.form.updateFields({ [this.quickSearchPara || 'lastname']: { value } }) } render() { const { hrmAddressBook } = this.props; const { title, tabs, tabkey, showSearchAd, loading, // comsWeaTableStore, form, table, visible1, visible2, templeteValue, defaultShowLeft, spinning } = hrmAddressBook; const formParams = form.getFormParams(); const width = table.columns.filter(c => c.display === "true").length * 50; return (
{this.renderTransfer()}
} iconBgcolor='#217346' buttons={this.getTopButtons()} buttonSpace={10} showDropIcon={true} dropMenuDatas={this.getRightMenu()} onDropMenuClick={this.onRightMenuClick} > {this.getSearchs()}
} showSearchAd={showSearchAd} setShowSearchAd={hrmAddressBook.updateShowSearchAd} hideSearchAd={this.hideSearchAd} keyParam='typeid' datas={tabs} selectedKey={tabkey} onChange={hrmAddressBook.updateTabkey} onSearch={(value)=>{ this.onSearchChange(value); hrmAddressBook.getSearchList(); }} onSearchChange={debounce(this.onSearchChange,1000) } onEdit={this.onTabEdit} /> ); } }