/* eslint-disable */ import React, { PureComponent, Fragment } from 'react'; import { connect } from 'dva'; import {Card, Form, Input, Button, Modal, message, Table, Divider, Tree, Spin, Row, Col, Select, Icon} from 'antd'; import { checkTypeWithEnglishAndNumbers } from '../../../helpers/validator' import PageHeaderWrapper from '@/components/PageHeaderWrapper'; import styles from './AdminList.less'; import moment from "moment"; import Pagination from "antd/es/pagination"; const FormItem = Form.Item; const { TreeNode } = Tree; const status = ['未知', '正常', '禁用']; // 添加 form 表单 const CreateForm = Form.create()(props => { const { modalVisible, form, handleAdd, handleModalVisible, modalType, initValues } = props; const okHandle = () => { form.validateFields((err, fieldsValue) => { if (err) return; form.resetFields(); handleAdd({ fields: fieldsValue, modalType, initValues, }); }); }; const selectStyle = { width: 200, }; const title = modalType === 'add' ? '新建管理员' : '更新管理员'; return ( handleModalVisible()} > {form.getFieldDecorator('username', { rules: [{ required: true, message: '请输入用户名!'}, {max: 16, min:6, message: '长度为6-16位'}, { validator: (rule, value, callback) => checkTypeWithEnglishAndNumbers(rule, value, callback, '数字以及字母')} ], initialValue: initValues.username, })()} {form.getFieldDecorator('nickname', { rules: [{ required: true, message: '请输入昵称!'}, {max: 10, message: '姓名最大长度为10'}], initialValue: initValues.nickname, })()} {form.getFieldDecorator('password', { rules: [{ required: modalType === 'add', message: '请填写密码'}, // 添加时,必须输入密码 {max: 16, min: 6, message: '长度为6-18位'}], initialValue: initValues.password, })()} ); }); // 角色分配 const RoleAssignModal = Form.create()(props => { const { modalVisible, form, handleOk, handleModalVisible, treeData, checkedKeys, loading, handleCheckBoxClick, } = props; const renderTreeNodes = data => { return data.map(item => { if (item.children) { return ( {renderTreeNodes(item.children)} ); } return ; }); }; const renderModalContent = treeData => { const RenderTreeNodes = renderTreeNodes(treeData); if (RenderTreeNodes) { return ( {form.getFieldDecorator('name', {})( {renderTreeNodes(treeData)} )} ); } else { return null; } }; const okHandle = () => { form.validateFields((err, fieldsValue) => { if (err) return; form.resetFields(); handleOk({ fields: fieldsValue, }); }); }; return ( handleModalVisible()} > {renderModalContent(treeData)} ); }); @connect(({ adminList, loading }) => ({ list: adminList.list, data: adminList, loading: loading.models.resourceList, })) @Form.create() class ResourceList extends PureComponent { state = { modalVisible: false, modalType: 'add', //add update initValues: {}, modalRoleVisible: false, modalRoleRow: {}, }; componentDidMount() { const { dispatch } = this.props; dispatch({ type: 'adminList/query', payload: {}, }); } handleModalVisible = (flag, modalType, initValues) => { this.setState({ modalVisible: !!flag, initValues: initValues || {}, modalType: modalType || 'add', }); }; handleAdd = ({ fields, modalType, initValues }) => { const { dispatch, data } = this.props; const queryParams = { pageNo: data.pageNo, pageSize: data.pageSize, }; if (modalType === 'add') { dispatch({ type: 'adminList/add', payload: { body: { ...fields, }, queryParams, callback: () => { message.success('添加成功'); this.handleModalVisible(); }, }, }); } else { dispatch({ type: 'adminList/update', payload: { body: { ...initValues, ...fields, }, queryParams, callback: () => { message.success('更新成功'); this.handleModalVisible(); }, }, }); } }; handleStatus(row) { const { dispatch, data } = this.props; const queryParams = { pageNo: data.pageNo, pageSize: data.pageSize, }; const title = row.status === 1 ? '确认禁用' : '取消禁用'; const updateStatus = row.status === 1 ? 2 : 1; Modal.confirm({ title: `${title}?`, content: `${row.username}`, onOk() { dispatch({ type: 'adminList/updateStatus', payload: { body: { id: row.id, status: updateStatus, }, queryParams, }, }); }, onCancel() {}, }); } handleDelete(row) { const { dispatch, data } = this.props; const queryParams = { pageNo: data.pageNo, pageSize: data.pageSize, }; Modal.confirm({ title: `确认删除?`, content: `${row.username}`, onOk() { dispatch({ type: 'adminList/delete', payload: { body: { id: row.id, }, queryParams, }, }); }, onCancel() {}, }); } handleRoleAssign = row => { const { dispatch } = this.props; this.setState({ modalRoleVisible: !!true, modalRoleRow: row, }); dispatch({ type: 'adminList/queryRoleList', payload: { id: row.id, }, }); }; handleRoleAssignCheckBoxClick = checkedKeys => { const { dispatch } = this.props; const newCheckedKeys = checkedKeys.map(item => { return parseInt(item); }); dispatch({ type: 'adminList/changeRoleCheckedKeys', payload: newCheckedKeys, }); }; handleRoleAssignOK = () => { const { dispatch, data } = this.props; const { modalRoleRow } = this.state; dispatch({ type: 'adminList/roleAssign', payload: { id: modalRoleRow.id, roleIds: data.roleCheckedKeys, }, }); this.handleRoleAssignModalVisibleClose(false); }; handleRoleAssignModalVisibleClose = fag => { this.setState({ modalRoleVisible: !!fag, }); }; onPageChange = (page = {}) => { const { dispatch } = this.props; // debugger; dispatch({ type: 'adminList/query', payload: { pageNo: page - 1, pageSize: 10, } }); } renderSimpleForm() { // TODO 芋艿,搜索功能未完成 const { form: { getFieldDecorator }, } = this.props; return (
{getFieldDecorator('name')()}
); } render() { let that = this; const { list, data } = this.props; const { count, pageNo, pageSize, roleList, roleCheckedKeys, roleAssignLoading } = data; const { modalVisible, modalType, initValues, defaultExpandAllRows, modalRoleVisible, } = this.state; const parentMethods = { handleAdd: this.handleAdd, handleModalVisible: this.handleModalVisible, modalType, initValues, }; const columns = [ { title: '用户名', dataIndex: 'username' }, { title: '昵称', dataIndex: 'nickname', }, { title: '状态', dataIndex: 'status', render(val) { return {status[val]}; // TODO 芋艿,此处要改 }, }, { title: '创建时间', dataIndex: 'createTime', render: val => {moment(val).format('YYYY-MM-DD HH:mm')}, }, { title: '操作', width: 360, render: (text, record) => { const statusText = record.status === 1 ? '禁用' : '禁用'; return ( this.handleModalVisible(true, 'update', record)}>编辑 this.handleRoleAssign(record)}>角色分配 this.handleStatus(record)}> {statusText} this.handleDelete(record)}> 删除 ); }, }, ]; return (
{that.renderSimpleForm()}
this.handleRoleAssignModalVisibleClose(false)} /> ); } } export default ResourceList;