weaver_trunk_cli/pc4mobx/hrm/components/card/RoleSet.js

270 lines
8.3 KiB
JavaScript

import {Button, Spin} from 'antd'
import isEmpty from 'lodash/isEmpty'
import forEach from 'lodash/forEach'
import {WeaSearchGroup,WeaRightMenu,WeaDialog,WeaNewScroll, WeaFormItem, WeaAlertPage} from 'ecCom'
import {WeaSwitch} from 'comsMobx';
import { inject, observer} from 'mobx-react';
import * as mobx from 'mobx';
import '../../style/roleset.less';
import {WeaTableNew} from 'comsMobx';
import {i18n} from '../../public/i18n';
const WeaTable = WeaTableNew.WeaTable;
const toJS = mobx.toJS;
@inject('hrmRoleSet')
@inject('hrmCard')
@observer
class HrmRoleSet extends React.Component {
constructor(props) {
super(props);
}
componentDidMount(){
const {hrmCard} = this.props;
hrmCard.setTopButtons(this.getTopButtons.bind(this));
hrmCard.setTopRightMenus(this.getRightMenu.bind(this));
hrmCard.setTopShowDropIcon(true);
this.init();
}
init() {
const {hrmRoleSet} = this.props;
let hrmId = this.props.params.hrmId || '';
hrmRoleSet.init();
hrmRoleSet.getData({id:hrmId});
}
getHrmRoleSetForm() {
const { hrmRoleSet } = this.props;
const { form,formFields } = hrmRoleSet;
const {isFormInit} = form;
let group = [];
const formParams = form.getFormParams();
isFormInit && !isEmpty(formFields) && toJS(formFields).map((c, i) =>{
c.items.map((fields, j) => {
let dom = <WeaSwitch ecId={`${this && this.props && this.props.ecId || ''}_WeaSwitch@f2m9ad@${j}`} fieldConfig={fields} form={form} formParams={formParams}/>;
group.push(<WeaFormItem ecId={`${this && this.props && this.props.ecId || ''}_WeaFormItem@tzsfpv@${j}`}
label={`${fields.label}`}
labelCol={{span: `${fields.labelcol}`}}
wrapperCol={{span: `${fields.fieldcol}`}}>
{dom}
</WeaFormItem>);
});
});
return group;
}
reRenderColumns(columns){
let _this = this;
columns.forEach(c=>{
if (c.dataIndex=='roleid'){
c.render = function(text, record){
return <span style={{cursor:'pointer'}} className='wea-hrm-linkstyle' onClick={()=>_this.edit(record.id)} dangerouslySetInnerHTML={{__html: record.roleidspan}}></span>
}
}else {
c.render = function(text, record){
let valueSpan = record[c.dataIndex + "span"] !== undefined ? record[c.dataIndex + "span"] : record[c.dataIndex];
return <span dangerouslySetInnerHTML={{__html: valueSpan}}></span>
}
}
})
return columns;
}
onOperatesClick=(record,index,operate,flag,argumentString)=>{
const func = operate.href ? operate.href.split(':')[1].split('(')[0] : '';
let id = record.id ? record.id : '';
if(func=='showLog'){
id = record.roleid ? record.roleid : '';
}
this[func] && this[func](id);
}
doSave() {
let hrmId = this.props.params.hrmId || '';
const {hrmRoleSet} = this.props;
hrmRoleSet.save(hrmId);
}
onCancel(){
const {hrmRoleSet} = this.props;
hrmRoleSet.onCancel();
}
update(){
const {hrmRoleSet} = this.props;
hrmRoleSet.update();
}
edit(id){
const {hrmRoleSet} = this.props;
let hrmId = this.props.params.hrmId || '';
hrmRoleSet.edit(id, hrmId);
}
add(){
const {hrmRoleSet} = this.props;
let hrmId = this.props.params.hrmId || '';
hrmRoleSet.add({id: hrmId});
}
delBatch(){
const {hrmRoleSet} = this.props;
const keys = this.getSelectedRowKeys();
const ids = keys ? keys.join(',') : '';
hrmRoleSet.delBatch(ids);
}
del(id){
const {hrmRoleSet} = this.props;
hrmRoleSet.delBatch(id);
}
showLog(id){
let params = {targetId:id};
params.logType = '4';
params.logSmallType = '1012';
window.setLogViewProps(params);
}
getSelectedRowKeys(){
const { hrmRoleSet } = this.props;
const { table } = hrmRoleSet;
const selectedRowKeys = table.selectedRowKeys;
return selectedRowKeys;
}
definedColumn() {
const { hrmRoleSet } = this.props;
const { table} = hrmRoleSet;
table.setColSetVisible(true);
table.tableColSet(true);
}
getRightMenu(){
const keys = this.getSelectedRowKeys();
const {hrmRoleSet} = this.props;
const {hasRight, buttons} = hrmRoleSet;
const opMenus = [];
if (hasRight) {
opMenus.push({
icon: <i className='icon-coms-New-Flow'/>,
content:i18n.button.add(),
key: 'add',
onClick: key =>{
this.add();
}
});
opMenus.push({
icon: <i className='icon-coms-Batch-delete'/>,
content:i18n.button.multiDelete(),
key: 'delBatch',
onClick: key =>{
this.delBatch();
}
});
}
const arr = [...opMenus, {
icon: <i className='icon-coms-task-list'/>,
content:i18n.button.columnVisibleSetting(),
key: 'definedColumn',
onClick: key =>{
this.definedColumn();
}
}
];
arr.push(
{
icon: <i className='icon-coms-Print-log'/>,
content:i18n.button.log(),
key: 'showLog',
onClick: key =>{
this.showLog();
}
}
)
return arr;
}
getTopButtons() {
const {hrmRoleSet} = this.props;
const {hasRight, buttons} = hrmRoleSet;
const btnAdd = <Button ecId={`${this && this.props && this.props.ecId || ''}_Button@ljjd98`} type="primary" onClick={()=>{this.add()}}>{i18n.button.add()}</Button>;
const btns = [];
if (hasRight) {
btns.push(btnAdd);
}
return btns;
}
render() {
const {hrmRoleSet} = this.props;
const {dialogShow, isEditor, hasRight, verified,formFields,table,} = hrmRoleSet;
const keys = this.getSelectedRowKeys();
const ids = keys ? keys.join(',') : '';
let customComponent = <div className="customComponent">
<i style={{margin: '0 10px'}}
className="icon-coms-Add-to-hot detailBtn"
title={i18n.button.add()}
onClick={() => this.add()}/>
<i
style={ids ? {color: '#34a2ff'} : {}}
className="icon-coms-form-delete-hot detailBtn"
title={i18n.button.delete()}
onClick={()=>this.delBatch()} />
</div>;
if (verified && !hasRight) {
return (<WeaAlertPage ecId={`${this && this.props && this.props.ecId || ''}_WeaAlertPage@jqqm22`} >
<div style={{color : '#000'}}>
{i18n.message.authFailed()}
</div>
</WeaAlertPage>
)
}
if (verified && hasRight) {
return (
<div className='wea-myhrm-roleset' style={{background: '#ffffff',height:'100%', position: 'relative'}}>
<div style={{height: '100%'}}>
<WeaSearchGroup ecId={`${this && this.props && this.props.ecId || ''}_WeaSearchGroup@t5dovn`} needTigger={true} title={i18n.label.role()} showGroup={true} customComponent={customComponent}>
<WeaTable ecId={`${this && this.props && this.props.ecId || ''}_WeaTable@oxpksq`}
comsWeaTableStore={table}
hasOrder={true}
needScroll={true}
//getColumns={c=>this.reRenderColumns(c)}
onOperatesClick={this.onOperatesClick}
/>
</WeaSearchGroup>
<WeaDialog ecId={`${this && this.props && this.props.ecId || ''}_WeaDialog@xrycwm`}
title={isEditor?i18n.label.editRole():i18n.label.addRole()}
icon="icon-coms-hrm"
iconBgcolor="#217346"
visible={dialogShow}
onCancel={() => this.onCancel()}
buttons={<Button ecId={`${this && this.props && this.props.ecId || ''}_Button@vrrst5`} type="primary" onClick={() => this.doSave()}>{i18n.button.save()}</Button>}
style={{width: 500, height: 160}}
>
<WeaNewScroll ecId={`${this && this.props && this.props.ecId || ''}_WeaNewScroll@6aammo`} height={180} ref="scrollBar">
<div style={{paddingLeft:50,paddingTop:30}}>
{this.getHrmRoleSetForm()}
</div>
</WeaNewScroll>
</WeaDialog>
</div>
</div>
)
}
return (
<div></div>
)
}
}
export default HrmRoleSet;