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 = (
)
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}
/>
);
}
}