mh-lcmk-sms-web/src/components/CustomPages/FM/RoleGroupEditPage.js
2024-05-27 09:25:22 +08:00

278 lines
7.8 KiB
JavaScript

import React from 'react';
import { connect } from 'dva';
import { Button, Row, Col, Form, Input,Select,Checkbox,Modal,Transfer,Spin,message } from 'antd';
import {
extend,
extendRule,
initFilter,
initQueryFilter,
getOnlyPropertyData,
extendInclude
} from "../../../utils/common";
import DropDownPagination from '../../common/DropDownPaginationEx';
const FormItem = Form.Item;
const Option = Select.Option;
const { TextArea } = Input;
class RoleGroupEditPage extends React.Component {
constructor(props) {
super(props);
this.state = {
data: {},
btns:[],
userGroupTargetKeys:[],
roleTargetKeys:[],
roleGroupTargetKeys:[],
};
};
componentDidMount() {
this.props.form.resetFields();
this.loadData();
}
componentWillReceiveProps(NextProps) {
const {data}=this.props;
let {id}=data?data:{};
if(!id)
id='';
if (NextProps.custom['roleGroupEditClick'+id] ) {
this.props.form.resetFields();
this.loadData();
this.props.dispatch({
type: 'custom/save',
payload: {
['roleGroupEditClick'+id]:false
},
});
}
}
loadDataSource=(orgId)=>{
const {dispatch}=this.props;
const roleJson = initFilter(orgId,'','CODE',1);
extendRule(roleJson,'ENABLE_STATUS',1,0);
roleJson.OrgType=1;
dispatch({
type: 'FMBase/getRoleDatasource',
payload: roleJson,
});
};
loadData=()=> {
const {data,formId,login,dispatch}=this.props;
const {id}=data?data:{};
if(id){
const userGroupJson = initFilter(this.props.login.OrgId);
extendInclude(userGroupJson,'Nav_BelongRoles');
extendRule(userGroupJson, 'ID', 1, id);
this.props.dispatch({
type: 'FMRoleGroupEdit/getRoleGroup',
payload: userGroupJson,
onComplete: (ret) => {
if(ret){
let role=[];
if(ret.Nav_BelongRoles){
ret.Nav_BelongRoles.map(item=>{
role.push(item.BELONG_ROLE_ID.toString().toUpperCase());
})
}
this.setState({
data: ret,
roleTargetKeys:role,
});
this.loadDataSource(ret.ORG_ID);
}
}
});
}
else{
this.loadDataSource(login.OrgId);
this.setState({
data:{
...this.state.data,
ORG_ID:this.props.login.OrgId,
}
});
const {form,} = this.props;
const { setFieldsValue} = form;
if(this.props.login.OrgCode){
setFieldsValue({
CODE:(this.props.login.OrgCode),
})
}
}
if(formId){
const btnJson = initFilter(this.props.login.OrgId,'','NUM',0);
extendRule(btnJson, 'PAGE_CUSTOM_FORM_ID', 1, formId);
this.props.dispatch({
type: 'FMUserGroupEdit/getBtnList',
payload: btnJson,
onComplete: (ret) => {
if(ret){
this.setState({
btns: ret,
});
}
}
});
}
};
getBtns=()=>{
if(this.state.btns){
return this.state.btns.map(item=>{
if (item.BTN_TYPE == 1) {
return <Button type={item.CSS} icon={item.ICON} key={item.ID} onClick={() => this.handleOk()}>{item.LABEL}</Button>;
}
});
}
};
handleOk = () => {
const {form,dispatch,data} = this.props;
const {getFieldValue, getFieldDecorator, validateFields, validateFieldsAndScroll, setFieldsValue} = form;
validateFieldsAndScroll((errors, values) => {
if (errors) return;
extend(this.state.data,values);
let updateData=getOnlyPropertyData(this.state.data);
const ret=this.state.data;
let role=[];
if(this.state.roleTargetKeys){
this.state.roleTargetKeys.map(item=>{
let isGet=false;
if(ret.Nav_BelongRoles){
ret.Nav_BelongRoles.map(t=>{
if(t.BELONG_ROLE_ID.toString().toUpperCase()==item) {
role.push(t);
isGet = true;
}
});
}
if(!isGet){
role.push({BELONG_ROLE_ID:item,ORG_ID:updateData.ORG_ID});
}
});
}
updateData['Nav_BelongRoles']=role;
dispatch({
type: 'FMRoleGroupEdit/updateRoleGroup',
payload: updateData,
onComplete: (ret) => {
if(ret) {
if(data.close){
data.close();
}
message.success('执行成功');
}
}
});
})
};
render() {
const {form, location, dispatch, match,loading} = this.props;
const {getFieldValue, getFieldDecorator, validateFields, validateFieldsAndScroll, setFieldsValue} = form;
const handleRoleChange = (nextTargetKeys, direction, moveKeys) => {
this.setState({roleTargetKeys: nextTargetKeys});
}
const formItemLayout = {
labelCol: {span: 6},
wrapperCol: {span: 14},
};
return (
<div>
<Form>
<Row>
<Col span={12}>
<Form.Item
label={'角色组名称'}
{...formItemLayout}
>
{getFieldDecorator('NAME', {
validateTrigger: 'onBlur',
initialValue: this.state.data.NAME,
rules: [{required: true, message: '请输入角色组名称'}],
})(<Input maxLength={30} placeholder={'请输入角色组名称'}/>)}
</Form.Item>
</Col>
<Col span={12}>
<Form.Item
label={'角色组编码'}
{...formItemLayout}
>
{getFieldDecorator('CODE', {
validateTrigger: 'onBlur',
initialValue: this.state.data.CODE,
rules: [{required: true, message: '请输入角色组编码'}],
})(<Input maxLength={30} placeholder={'请输入角色组编码'}/>)}
</Form.Item>
</Col>
<Col span={12}>
<FormItem label={'启用标志'} {...formItemLayout}>
{getFieldDecorator('ENABLE_STATUS', {
validateTrigger: 'onBlur',
initialValue: this.state.data.ENABLE_STATUS?this.state.data.ENABLE_STATUS.toString():"0",
rules: [],
})(<Select placeholder="数据类型" >
<Option value="0">启用</Option>
<Option value="1">不启用</Option>
</Select>)}
</FormItem>
</Col>
<Col span={12}>
<Form.Item
label={'备注'}
{...formItemLayout}
>
{getFieldDecorator('REMARK', {
initialValue: this.state.data.REMARK,
})(<TextArea rows={4} placeholder={'请输入备注'} />)}
</Form.Item>
</Col>
</Row>
<Row style={{'display': 'flex','flexDirection': 'column'}}>
<Col style={{ 'margin': '15px auto' }}>
<Transfer
dataSource={this.props.FMBase.roleDatasource}
titles={['角色', '已选择']}
targetKeys={this.state.roleTargetKeys}
onChange={handleRoleChange}
render={item => item.title}
/>
</Col>
</Row>
<Row>
<Col style={{ textAlign: 'right',marginTop: '20px' }}>
{
this.getBtns()
}
</Col>
</Row>
</Form>
</div>
);
}
}
RoleGroupEditPage.propTypes = {
};
export default connect(({ login, loading, FMBase,FMRoleGroupEdit,custom }) => ({ login, loading, FMBase,FMRoleGroupEdit,custom }))(Form.create()(RoleGroupEditPage));