/** * 用户分组 */ import React from 'react'; import { Layout, Input, Table, Button, Icon, Menu } from 'antd' import { connect } from 'dva' import './userGroupManagement.less' import DetailBox from './userGroupDetailBox' import AddMemberBox from '../common/selectUserBox' const { Sider, Content } = Layout const { Search } = Input class UserGroupManagement extends React.Component { constructor(props) { super(props); this.state = { visibleAddMemberBox: false } } componentDidMount() { const { dispatch } = this.props; dispatch({ type: 'userGroup/fetchList' }); } onSort(list) { return list.sort((a, b) => { return new Date(b.createTime) - new Date(a.createTime); }); } showDetailBox = (operate) => { const { userGroup, dispatch } = this.props; const { selectedGroup } = userGroup; if(operate === 'create') { dispatch({ type: 'userGroup/setNewModel', model: { visibleDetailBox: true, operate }}); }else { dispatch({ type: 'userGroup/setNewModel', model: { ...selectedGroup, visibleDetailBox: true, operate } }); } } showAddMemberBox = () => { const { dispatch } = this.props; dispatch({ type: 'userGroup/setNewModelField', name: 'visibleAddMemberBox', value: true }); } render() { const { userGroup, dispatch } = this.props; const { selectedGroup } = userGroup; const reg = new RegExp('([+ \\- & | ! ( ) { } \\[ \\] ^ \" ~ * ? : ( ) \/])', 'g'); // 需要转义的字符 let filterLabel = (userGroup.filterLabel || '').replace(new RegExp('(\\\\)', 'g'), '\\$1').replace(reg, '\\$1'); // 添加转义符号 const columns = [{ title: '用户', dataIndex: 'name', width: 200 }, { title: '操作', width: 50, render: (text, record, index) => ( { dispatch({ type: 'userGroup/remoteMemberDelete', userCode: record.code, groupCode: selectedGroup.code }); }}>删除 ), }] const selectedKeys = selectedGroup ? [selectedGroup.code] : []; return (
{ dispatch({ type: 'userGroup/setFilterLabel', label: e.target.value }); }} />
{userGroup.list.map(l => { let reg = new RegExp('(' + filterLabel + '){1}', 'ig'); if((l.name || '').search(reg) !== -1) { return { ...l, visible: true }; }else { return { ...l, visible: false }; } }).map(l => ( { dispatch({ type: 'userGroup/chageSelectedGroup', group: l }); }} > { filterLabel ? ((l.name || '').split(new RegExp(`(${filterLabel})`, 'i')).map((fragment, i) => { return ( fragment.toLowerCase().replace(new RegExp('(\\\\)', 'g'), '\\$1').replace(reg, '\\$1') === filterLabel.toLowerCase() ? {fragment} : fragment ) } )) : l.name } ))}
{selectedGroup ? selectedGroup.name : ''} {selectedGroup && } {selectedGroup && }
({...d, key: i})) || []) : []} size='small' />
{selectedGroup && } { this.setState({ visibleAddMemberBox: false }); }} multiple={false} okHandler={(selectedUser) => { dispatch({ type: 'userGroup/remoteMemberAdd', user: selectedUser, group: selectedGroup }); }} />
) } } export default connect(( { present: { userGroup } } ) => ({ userGroup }))(UserGroupManagement);