import React, { FC, useEffect, useRef, useState } from 'react' import { isAuthorized, makeTree, makeTreeSelectData } from '@/assets/js/publicFunc' import { Button, Table, Modal, Form, Switch, Input, TreeSelect, message, Spin } from 'antd' import { modalLayoutSm } from '@/package/SimpleTrade/config/layout' import AdminPermissionApi from '@/package/SimpleTrade/api/admin-permission' import SearchForm from '@/components/SearchForm' interface AdminPermission { id: number; name: string; code: string; isHelp: boolean; parentId: number; updateTime: string; createTime: string; } const AdminPermissionList: FC = () => { const [loading, setLoading] = useState(false) const [btnLoading, setBtnLoading] = useState(false) const [visible, setVisible] = useState(false) const [title, setTitle] = useState('新增权限') const [permissionId, setPermissionId] = useState(0) const [permissionList, setPermissionList] = useState>([]) const [treeSelectList, setTreeSelectList] = useState>([]) const [form] = Form.useForm() const { setFieldsValue, getFieldsValue, resetFields } = form const searchForm = useRef() const getAdminPermissions = (search: object = {}) => { AdminPermissionApi.getAdminPermissions(search).then((res: any) => { const permissions = res.data ? res.data : [] const adminPermissionsTree = makeTree(permissions) setPermissionList(adminPermissionsTree) }) } const setTreeSelectData = () => { const root = [{ value: 0, title: '根所属' }] const treeSelectData = root.concat( makeTreeSelectData(permissionList, 'id', 'name') ) setTreeSelectList(treeSelectData) } useEffect(() => { getAdminPermissions() // eslint-disable-next-line }, []) const add = () => { resetFields() setPermissionId(0) setVisible(true) setTitle('新增权限') setFieldsValue({ parentId: 0, code: '' }) setTreeSelectData() } const edit = (record: any) => { setPermissionId(record.id) setFieldsValue({ ...record }) setVisible(true) setTitle('编辑权限') setTreeSelectData() } const handleSearch = (values) => { getAdminPermissions(values) } const cancelModel = () => { setVisible(false) } const delAdminPermission = (record: AdminPermission) => { setBtnLoading(true) const ids = [record.id] AdminPermissionApi.deleteAdminPermission(ids) .then((res) => { message.success(res.message) getAdminPermissions() }) .finally(() => { setBtnLoading(false) }) } const handleSubmit = () => { setLoading(true) if (permissionId) { AdminPermissionApi.updateAdminPermission(permissionId, getFieldsValue()) .then((res) => { message.success(res.message) setVisible(false) getAdminPermissions() }) .finally(() => { setLoading(false) }) } else { AdminPermissionApi.addAdminPermission(getFieldsValue()) .then((res) => { message.success(res.message) setVisible(false) getAdminPermissions() }) .finally(() => { setLoading(false) }) } } const AddBtn = () => ( ) const columns: any = [ { title: '名称', dataIndex: 'name' }, { title: '权限标识', dataIndex: 'code' }, { title: '操作', dataIndex: 'operations', align: 'center', render: (text, record) => ( <> {isAuthorized('adminpermission:list:del') && ( )} {isAuthorized('adminpermission:list:edit') && ( )} ) } ] // 搜索栏配置项 const searchConfigList = [ { key: 'name', slot: , initialValue: '' } ] const nameValidator = (rule, value) => { if (!value) { return Promise.reject(new Error('请输入名称')) } return Promise.resolve() } const codeValidator = (rule, value) => { const parentId = form.getFieldValue('parentId') const isHelp = form.getFieldValue('isHelp') if (isHelp) { return Promise.resolve() } if (!parentId && !value) { return Promise.reject(new Error('请输入权限标识')) } if (!parentId && !/^[a-zA-Z0-9:]+$/.test(value)) { return Promise.reject(new Error('权限标识格式不正确')) } return Promise.resolve() } return ( <> {isAuthorized('adminpermission:list:add') && } {visible && (
)} record.id} columns={columns} dataSource={permissionList} pagination={false} /> ) } export default AdminPermissionList