import React from 'react' import * as mobx from 'mobx' import { inject, observer, } from 'mobx-react' import { WeaTop, WeaTab, WeaInput, WeaFormItem, WeaRightMenu, WeaLeftRightLayout, WeaOrgTree, WeaDropdown, WeaSelect, WeaSearchGroup } from 'ecCom' import { Row, Col, Spin, Modal, Button, message, Switch, Select, Menu, Dropdown, Icon } from 'antd' import { WeaSwitch, WeaTableNew } from 'comsMobx' import { i18n } from '../../public/i18n'; import '../../style/common.less'; import NewAndEditDialog from '../NewAndEditDialog'; import { renderNoright } from '../../util'; import DatasImport from '../import/datasImport'; import SearchCustomDialog from './SearchCustomDialog'; import NewWeaTableEditDialog from '../NewWeaTableEditDialog'; const toJS = mobx.toJS; const confirm = Modal.confirm; const WeaTable = WeaTableNew.WeaTable; const { ButtonSelect } = WeaDropdown; @inject('resource') @inject('datasImport') @observer export default class Resource extends React.Component { constructor(props) { super(props); } componentWillMount() { } componentDidMount() { this.init(); } componentWillReceiveProps(nextProps) { const { resource } = this.props; if (this.props.location.key !== nextProps.location.key) { this.init(); } } init() { const { resource } = this.props; resource.getHasRight(); let { hash } = window.location; hash = hash.split("?")[1].split("&"); if (hash.length >= 2) { let params = {}; let arr = hash[0].split("="); params[arr[0]] = arr[1]; resource.doSearch(params); } else { resource.getTableInfo(); } } //左侧树 getTree = () => { const { resource } = this.props; const { companysId, } = resource let tree = ( ${i18n.label.organization()}`} treeNodeClick={this.treeNodeClick} expandAllChildrenOnSearch={true} renderNode={item => this.renderNode(item)} /> ) return tree; } renderNode(item) { return
{item.name} {item.canceled && ({i18n.label.forbidden()})}
} treeNodeClick = (event, ids, nodeids, nodes) => { const { resource } = this.props; const { form2, companysId } = resource; const type = event.node.props.type || '0'; const id = event.node.props.id || ''; let params = {}; form2.resetConditionValue(); resource.setPanelStatus(false) // resource.tabkey = 'default_3'; resource.nodeType = type; if (type == '0') { params['virtualtype'] = companysId; } if (type == '1') { params['companyId'] = id; } if (type == '2') { params['departmentId'] = id; } if (type == '3') { params['jobTitle'] = id; } resource.doSearch(params); } getTopMenuBtns() { const { resource } = this.props; const { topMenu, tableStore } = resource; let btns = []; topMenu.map((item, i) => { if (item.menuFun !== 'batchDelete') { btns.push(); } else { btns.push(); } }); const datas = [ { key: "1", show: (全部导出), text: "全部导出", selected: true }, { key: "2", show: (批量导出), text: "批量导出" } ]; btns.push( { if (key == "1") { resource.export(); } if (key == "2") { tableStore.selectedRowKeys.length > 0 ? resource.export() : message.error("请选择需要导出的数据") } }} menuOnClick={(key, e) => key == '1' ? tableStore.selectedRowKeys = [] : ''} />) return btns; } handleClick(item) { const { resource } = this.props; const { isPanelShow } = resource; isPanelShow && resource.setPanelStatus(false); this[item.menuFun] && this[item.menuFun](); } log = () => { window.setLogViewProp({ logMoudleType: 11, keys: new Date().getTime(), }); } new() { const { resource } = this.props; // resource.setNeDialogTitle(i18n.label.newPeople()); // resource.setIsNew(true); // resource.setVisible(true); // resource.getForm(); window.open("/spa/hrm/index_mobx.html#/main/hrm/add", "_blank") } import() { const { datasImport } = this.props; datasImport.visible = true; datasImport.title = i18n.button.importResource(); datasImport.importType = 'resource'; datasImport.getImportForm(); } getDropMenuDatas() { const { resource } = this.props; const { rightMenu } = resource; let menus = []; toJS(rightMenu).map((item, index) => { let obj = { key: item.menuFun, icon: , content: item.menuName, } if (item.menuFun == 'collection' || item.menuFun == 'help' || item.menuFun == 'pageAddress') { obj.disabled = true; } menus.push(obj); }) return menus; } handleMenuClick(key) { const { resource } = this.props; const { isPanelShow } = resource; isPanelShow && resource.setPanelStatus(false); this[key] && this[key](); } //列定制 customization() { const { resource } = this.props; resource.customization(); } //存为模板 saveTemplate() { const { resource } = this.props, { searchTemplateName } = resource; confirm({ title: "存为模板", content: resource.searchTemplateName = v} /> , okText: i18n.button.save(), cancelText: i18n.button.cancel(), onOk() { resource.saveTemplate(); }, onCancel() { return false; }, }); } getTabBtn() { const { resource } = this.props; const { form2 } = resource; const btn = [ (), (), (), (), (), ]; return btn; } custom = () => { const { resource } = this.props, { tableStore, } = resource; tableStore.setColSetVisible(true); tableStore.tableColSet(true); } onSearchChange(val) { const { resource } = this.props; const { form2 } = resource; resource.setLastName(val); !this.isEmptyObject(form2.getFormParams()) && resource.updateFields(val); } reRenderColumns(columns) { let _this = this; columns.forEach((c, index) => { c.className = "wea-table-indent" if (c.dataIndex == 'lastname') { c.render = function (text, record) { return { window.open(`/spa/organization/static/index.html#/main/organization/resourceCard/${record.id}`); }}>{text} } } }) } onOperatesClick(record, rowIndex, operate) { const { index } = operate; (index == '0') && this.view(record.randomFieldId); (index == '1') && this.version(record); } view(id) { window.open(`/spa/organization/static/index.html#/main/organization/resourceCard/${id}`); } version(record) { const { resource } = this.props; confirm({ title: i18n.confirm.defaultTitle(), content: `确认将{${record.lastname}}存为新版本?`, okText: i18n.button.ok(), cancelText: i18n.button.cancel(), onOk() { resource.version(record.id); }, onCancel() { return false; }, }); } handleSave() { const { resource } = this.props; const { isNew } = resource; isNew && resource.save(); !isNew && resource.edit(); } getPanelComponents() { const { resource } = this.props; const { defaultCondition, form2, searchConditionLoading, templates, searchTemplateId } = resource; let arr = []; let formParams = form2.getFormParams(); const { isFormInit } = form2; arr.push( 选择过滤模板 { resource.changeSearchTemplate(v) }} /> ) isFormInit && defaultCondition.map((c, i) => { let _arr = []; c.items.map((field, index) => { _arr.push({ com: ( {} ), }) }) arr.push() }) if (searchConditionLoading) { return (
) } else { return
{ if (e.keyCode == 13 && e.target.tagName === "INPUT") { rankScheme.getTableInfo(); rankScheme.setPanelStatus(false) } }}>{arr}
} } isEmptyObject(obj) { for (let key in obj) { return false; } return true; } render() { const { resource, resource: store } = this.props; const { isPanelShow, form2, lastName, conditionNum, tableStore, nEdialogTitle, visible, condition, form, dialogLoading, isEdit, date, hasRight, defaultShowLeft } = resource; if (hasRight === false) { return renderNoright(); } const width = tableStore.columns.filter(c => c.display === "true").length * 50; return ( hasRight &&
this.handleMenuClick(key)} > } iconBgcolor='#217346' loading={true} buttons={this.getTopMenuBtns()} showDropIcon={true} dropMenuDatas={this.getDropMenuDatas()} onDropMenuClick={(e) => this.handleMenuClick(e)} > resource.setPanelStatus(bool)} hideSearchAd={() => resource.setPanelStatus(false)} searchsAd={isPanelShow ? this.getPanelComponents() :
} advanceHeight={Math.ceil(conditionNum / 2) * 52 + 20} hasMask={false} buttonsAd={this.getTabBtn()} onSearch={() => resource.getTableInfo()} onSearchChange={val => this.onSearchChange(val)} /> this.reRenderColumns(c)} onOperatesClick={(record, index, operate) => this.onOperatesClick(record, index, operate)} tableWidth={width} />
this.handleSave()} onCancel={() => resource.setVisible(false)} />
) } }