/* * @Author: your name * @Date: 2021-07-26 10:13:13 * @LastEditTime: 2022-02-28 16:14:22 * @LastEditors: Please set LastEditors * @Description: In User Settings Edit * @FilePath: /TracerMethodology_PC/src/pages/UserMana/index.js */ import { PlusOutlined } from '@ant-design/icons'; import { Button, Popconfirm,Form} from 'antd'; import React, { useState, useRef } from 'react'; import { PageContainer } from '@ant-design/pro-layout'; import ProTable from '@ant-design/pro-table'; import { ModalForm, ProFormText,ProFormDateRangePicker } from '@ant-design/pro-form'; import UpdateForm from './updateForm'; import DrawerContent from './component/drawer'; import { getRoleList, roleBindUser, addList, editList, delList,roleBindMenu,roleHasBindUsers,roleHasBindMenus } from './service'; import { getUserList } from '@/pages/PlatformMana/userMana/service'; import moment from 'moment'; import 'moment/locale/zh-cn'; import locale from 'antd/es/date-picker/locale/zh_CN'; import { getMenuList } from '@/pages/PlatformMana/menuManage/service'; import './style.less'; const UserMana = () => { const columns = [ { title: '角色名', dataIndex: 'roleName', key: 'roleName', }, { title: '变更人', dataIndex: 'modifyUserName', key: 'modifyUserName', hideInSearch: true, }, { title: '变更日期', dataIndex: 'modifyTime', key: 'modifyTime', renderFormItem: (item, { type, defaultRender, formItemProps, fieldProps, ...rest }, form) => { if (type === 'form') { return null; } return ( {console.log(moment)} }} name="modifyTime" /> ) }, }, { title: '操作', dataIndex: 'option', valueType: 'option', render: (_, record) => [ { bindInitHandle(record,'user'); }} > 用户 , { bindInitHandle(record,'menu'); }} > 权限 , { handleUpdateModalVisible(true); setCurrentRow(record); }} > 编辑 , { delUserHandler(record); }} > 删除 , ], }, ]; const DrawerTableUsersColumns = [ { title: 'Id', dataIndex: 'id', key: 'id', hideInSearch: true, }, { title: '姓名', dataIndex: 'name', key: 'name', }, { title: '用户名', dataIndex: 'account', key: 'account', hideInSearch: true, }, { title: '在职状态', dataIndex: 'hospitalStatus', key: 'hospitalStatus', hideInSearch: true, render:num=><>{num==0?'离职':'在职'} }, ]; const DrawerTableMenusColumns = [ { title: 'Id', dataIndex: 'menuId', key: 'menuId', hideInSearch: true, }, { title: '菜单名称', dataIndex: 'name', key: 'name', } ]; const [createModalVisible, handleModalVisible] = useState(false); const [updateModalVisible, handleUpdateModalVisible] = useState(false); const actionRef = useRef(); const [currentRow, setCurrentRow] = useState({}); const [editRoleBindUsers, setEditRoleBindUsers] = useState(false); const [drawerVisible, setDrawerVisible] = useState(false); const [selectedUsers,setSelectedUsers] = useState([]); const [selectedMenus,setSelectedMenus] = useState([]); // const [shareParamsSetting,setShareParamsSetting] = useState(false); //是否分摊参数设置 /** * * @param {Boolean} bool 弹窗展示状态 */ const updateModalVisibleChange = (bool) => { handleUpdateModalVisible(bool); if (!bool) setCurrentRow(undefined); }; // 获取列表 const getList = async (params = {}, sort, filter) => { // format: (value) => { return [value[0].format('YYYY-MM-DD'),value[1].format('YYYY-MM-DD')] } const {pageSize,current,modifyTime,roleName:keyword} = params; const query = modifyTime?{pageSize,current,keyword,startDate:moment(modifyTime[0]).format('YYYY-MM-DD'),endDate:moment(modifyTime[1]).format('YYYY-MM-DD')}:{pageSize,current,keyword} const res = await getRoleList(query); if(res){ return { data: res.list, total: res.totalCount, success:true, }; } }; // 获取Drawer用户列表 const getUsers = async (params = {}, sort, filter) => { const {roleId} = currentRow; const resp = await roleHasBindUsers({roleId}); if(resp){ const tempArr = resp.map(item=>item.id); setSelectedUsers(tempArr); } const res = await getUserList({...params,roleId:currentRow.roleId}); if(res){ return { data: res.list, total: res.totalCount, success: true, }; } }; // 获取Drawer菜单列表 const getMenus = async (params = {}, sort, filter) => { const res = await getMenuList(params); if(res){ return { data: res.list, total: res.totalCount, success:true, }; } }; /** * * @param {Object} value 删除项数据 */ const delUserHandler = async (value) => { const ids = [value.roleId]; const resp = await delList({ ids }); if (resp) { if (actionRef.current) { actionRef.current.reload(); } } }; // 绑定初始化 /** * * @param {Object} record * @param {String} type user/menu */ const bindInitHandle = async (record,type)=>{ const {roleId} = record; setCurrentRow(record); if(type == 'user'){ const resp = await roleHasBindUsers({roleId}); if(resp){ const tempArr = resp.map(item=>item.id); setSelectedUsers(tempArr); } setEditRoleBindUsers(true); } if(type == 'menu'){ const resp = await roleHasBindMenus({roleId}); if(resp){ const tempArr = resp.map(item=>item.id); setSelectedMenus(tempArr); } setEditRoleBindUsers(false); } setDrawerVisible(true); setCurrentRow(record); } return ( [ , ]} pagination={{ pageSize: 10, }} /> { const success = await addList(value); // console.log({ success }); if (success) { handleModalVisible(false); if (actionRef.current) { actionRef.current.reload(); } } return true; }} > {/* 更新 */} { // console.log({value}); const { roleId, roleName, remark } = value; const success = await editList({ roleId, roleName, remark }); if (success) { handleUpdateModalVisible(false); setCurrentRow(undefined); if (actionRef.current) { actionRef.current.reload(); } } }} onCancel={() => { handleUpdateModalVisible(false); setCurrentRow(undefined); }} updateModalVisible={updateModalVisible} updateModalVisibleChange={updateModalVisibleChange} values={currentRow || {}} /> {editRoleBindUsers ? ( // 编辑用户 setDrawerVisible(bool)} renderListFunc={getUsers} config={{tableSearch:true}} onFinishFunc={async (value, selectedRowKeys) => { const { roleId } = currentRow; const resp = await roleBindUser({ roleId, userIds: selectedRowKeys }); const { status } = resp; if (status == 200) { setDrawerVisible(false); setCurrentRow(undefined); if (actionRef.current) { actionRef.current.reload(); } } }} /> ) : ( // 编辑权限 setDrawerVisible(bool)} renderListFunc={getMenus} config={{rowKeys:'menuId',tableSearch:false}} tableSearch={false} onFinishFunc={async (value, selectedRowKeys) => { const { roleId } = currentRow; const resp = await roleBindMenu({ roleId, menuIds: selectedRowKeys }); const { status } = resp; if (status == 200) { setDrawerVisible(false); setCurrentRow(undefined); if (actionRef.current) { actionRef.current.reload(); } } }} /> )} ); }; export default UserMana;