角色绑定增加提示语

master
LiuJiaNan 2026-03-17 15:27:17 +08:00
parent ad68d57037
commit b99e0542f4
1 changed files with 35 additions and 34 deletions

View File

@ -1,20 +1,20 @@
import useUrlState from "@ahooksjs/use-url-state"; import useUrlState from "@ahooksjs/use-url-state";
import { ApiOutlined } from "@ant-design/icons"; import {ApiOutlined} from "@ant-design/icons";
import { Connect } from "@cqsjjb/jjb-dva-runtime"; import {Connect} from "@cqsjjb/jjb-dva-runtime";
import { Button, Form, message, Modal, Space, Tabs, Tag } from "antd"; import {Button, Form, message, Modal, Space, Tabs, Tag} from "antd";
import { useEffect, useRef, useState } from "react"; import {useEffect, useRef, useState} from "react";
import FormBuilder from "zy-react-library/components/FormBuilder"; import FormBuilder from "zy-react-library/components/FormBuilder";
import AddIcon from "zy-react-library/components/Icon/AddIcon"; import AddIcon from "zy-react-library/components/Icon/AddIcon";
import Page from "zy-react-library/components/Page"; import Page from "zy-react-library/components/Page";
import Table from "zy-react-library/components/Table"; import Table from "zy-react-library/components/Table";
import { FORM_ITEM_RENDER_ENUM } from "zy-react-library/enum/formItemRender"; import {FORM_ITEM_RENDER_ENUM} from "zy-react-library/enum/formItemRender";
import useTable from "zy-react-library/hooks/useTable"; import useTable from "zy-react-library/hooks/useTable";
import { getLabelName, getMatchedItems } from "zy-react-library/utils"; import {getLabelName, getMatchedItems} from "zy-react-library/utils";
import { NS_APP_MENU } from "~/enumerate/namespace"; import {NS_APP_MENU} from "~/enumerate/namespace";
const MENU_TYPE_ENUM = [ const MENU_TYPE_ENUM = [
{ bianma: 1, name: "菜单" }, {bianma: 1, name: "菜单"},
{ bianma: 2, name: "按钮" }, {bianma: 2, name: "按钮"},
]; ];
function Menu(props) { function Menu(props) {
@ -32,18 +32,18 @@ function Menu(props) {
}, { }, {
navigateMode: "replace", navigateMode: "replace",
}); });
const { tableProps, getData } = useTable(props["appMenuListTree"], { const {tableProps, getData} = useTable(props["appMenuListTree"], {
params: { eqMenuAttribution: urlState.menuAttribution }, params: {eqMenuAttribution: urlState.menuAttribution},
usePagination: false, usePagination: false,
manual: true, manual: true,
}); });
const getMenuAppByTenantId = async () => { const getMenuAppByTenantId = async () => {
const { data } = await props["appMenuGetMenuAppByTenantId"](); const {data} = await props["appMenuGetMenuAppByTenantId"]();
setMenuAttribution(data); setMenuAttribution(data);
const menuAttribution = data?.[0]?.menuAttribution; const menuAttribution = data?.[0]?.menuAttribution;
const menuAttributionName = data?.[0]?.menuAttributionName; const menuAttributionName = data?.[0]?.menuAttributionName;
setUrlState({ menuAttribution, menuAttributionName }); setUrlState({menuAttribution, menuAttributionName});
menuAttribution && getData(); menuAttribution && getData();
}; };
@ -58,7 +58,7 @@ function Menu(props) {
okText: "确定", okText: "确定",
cancelText: "取消", cancelText: "取消",
onOk: async () => { onOk: async () => {
const { success } = await props["appMenuDelete"]({ id }); const {success} = await props["appMenuDelete"]({id});
if (success) { if (success) {
message.success("删除成功"); message.success("删除成功");
getData(); getData();
@ -78,7 +78,7 @@ function Menu(props) {
<> <>
<Button <Button
type="primary" type="primary"
icon={(<AddIcon />)} icon={(<AddIcon/>)}
onClick={() => { onClick={() => {
setAddModalVisible(true); setAddModalVisible(true);
setParentId(0); setParentId(0);
@ -91,7 +91,7 @@ function Menu(props) {
<Button <Button
type="primary" type="primary"
ghost ghost
icon={(<ApiOutlined />)} icon={(<ApiOutlined/>)}
onClick={() => { onClick={() => {
setRoleBindingModalVisible(true); setRoleBindingModalVisible(true);
}} }}
@ -105,7 +105,7 @@ function Menu(props) {
headerTitle={( headerTitle={(
<Tabs <Tabs
activeKey={urlState.menuAttribution} activeKey={urlState.menuAttribution}
items={menuAttribution.map(item => ({ key: item.menuAttribution, label: item.menuAttributionName }))} items={menuAttribution.map(item => ({key: item.menuAttribution, label: item.menuAttributionName}))}
onChange={(event) => { onChange={(event) => {
setUrlState({ setUrlState({
menuAttribution: event, menuAttribution: event,
@ -116,9 +116,9 @@ function Menu(props) {
/> />
)} )}
columns={[ columns={[
{ title: "名称", dataIndex: "menuName" }, {title: "名称", dataIndex: "menuName"},
{ title: "路径", dataIndex: "menuUrl" }, {title: "路径", dataIndex: "menuUrl"},
{ title: "标识", dataIndex: "menuPerms" }, {title: "标识", dataIndex: "menuPerms"},
{ {
title: "类型", title: "类型",
dataIndex: "menuType", dataIndex: "menuType",
@ -214,7 +214,7 @@ const AddModalComponent = (props) => {
const [form] = Form.useForm(); const [form] = Form.useForm();
const getData = async () => { const getData = async () => {
const { data } = await props["appMenuInfo"]({ id: props.id }); const {data} = await props["appMenuInfo"]({id: props.id});
form.setFieldsValue(data); form.setFieldsValue(data);
}; };
@ -225,7 +225,7 @@ const AddModalComponent = (props) => {
}, [props.id]); }, [props.id]);
const onSubmit = async (values) => { const onSubmit = async (values) => {
const { success } = await props[props.id ? "appMenuUpdate" : "appMenuAdd"]({ const {success} = await props[props.id ? "appMenuUpdate" : "appMenuAdd"]({
...values, ...values,
id: props.id, id: props.id,
parentId: props.parentId, parentId: props.parentId,
@ -251,7 +251,7 @@ const AddModalComponent = (props) => {
<FormBuilder <FormBuilder
showActionButtons={false} showActionButtons={false}
span={24} span={24}
labelCol={{ span: 6 }} labelCol={{span: 6}}
loading={props.appMenu.appMenuLoading} loading={props.appMenu.appMenuLoading}
form={form} form={form}
onFinish={onSubmit} onFinish={onSubmit}
@ -270,12 +270,12 @@ const AddModalComponent = (props) => {
name: "menuType", name: "menuType",
label: "类型", label: "类型",
render: FORM_ITEM_RENDER_ENUM.RADIO, render: FORM_ITEM_RENDER_ENUM.RADIO,
items: props.parentId === 0 ? getMatchedItems({ list: MENU_TYPE_ENUM, value: [1] }) : MENU_TYPE_ENUM, items: props.parentId === 0 ? getMatchedItems({list: MENU_TYPE_ENUM, value: [1]}) : MENU_TYPE_ENUM,
}, },
{ name: "menuName", label: "名称" }, {name: "menuName", label: "名称"},
{ name: "menuUrl", label: "路径", useConstraints: false }, {name: "menuUrl", label: "路径", useConstraints: false},
{ name: "menuPerms", label: "标识", useConstraints: false }, {name: "menuPerms", label: "标识", useConstraints: false},
{ name: "sort", label: "排序", onlyForLabel: true }, {name: "sort", label: "排序", onlyForLabel: true},
]} ]}
/> />
</Modal> </Modal>
@ -287,14 +287,14 @@ const RoleBindingModalComponent = (props) => {
const selectedRowsRef = useRef([]); const selectedRowsRef = useRef([]);
const { tableProps } = useTable(props["systemPermsGroupsList"], { const {tableProps} = useTable(props["systemPermsGroupsList"], {
useStorageQueryCriteria: false, useStorageQueryCriteria: false,
}); });
const getData = async () => { const getData = async () => {
const { data } = await props["appMenuGetMenuRoleByMenuAttribution"]({ menuAttribution: props.menuAttribution }); const {data} = await props["appMenuGetMenuRoleByMenuAttribution"]({menuAttribution: props.menuAttribution});
setSelectedRowKeys(data.map(item => item.roleId)); setSelectedRowKeys(data.map(item => item.roleId));
selectedRowsRef.current = data.map(item => ({ id: item.roleId, roleName: item.roleName })); selectedRowsRef.current = data.map(item => ({id: item.roleId, roleName: item.roleName}));
}; };
useEffect(() => { useEffect(() => {
@ -302,10 +302,10 @@ const RoleBindingModalComponent = (props) => {
}, []); }, []);
const onSubmit = async () => { const onSubmit = async () => {
const { success } = await props["appMenuGetMenuRoleByMenuAttributionSave"]({ const {success} = await props["appMenuGetMenuRoleByMenuAttributionSave"]({
menuAttribution: props.menuAttribution, menuAttribution: props.menuAttribution,
menuAttributionName: props.menuAttributionName, menuAttributionName: props.menuAttributionName,
roleList: selectedRowsRef.current.map(item => ({ roleId: item.id, roleName: item.roleName })), roleList: selectedRowsRef.current.map(item => ({roleId: item.id, roleName: item.roleName})),
}); });
if (success) { if (success) {
message.success("保存成功"); message.success("保存成功");
@ -323,6 +323,7 @@ const RoleBindingModalComponent = (props) => {
onOk={onSubmit} onOk={onSubmit}
confirmLoading={props.appMenu.appMenuLoading} confirmLoading={props.appMenu.appMenuLoading}
> >
<div style={{fontSize: 12, color: "red", marginBottom: 10}}>取消勾选会清空角色的APP使用权限请谨慎操作</div>
<Table <Table
rowSelection={{ rowSelection={{
preserveSelectedRowKeys: true, preserveSelectedRowKeys: true,
@ -335,7 +336,7 @@ const RoleBindingModalComponent = (props) => {
options={false} options={false}
disabledResizer={true} disabledResizer={true}
columns={[ columns={[
{ title: "角色名称(权限组)", dataIndex: "roleName" }, {title: "角色名称(权限组)", dataIndex: "roleName"},
]} ]}
{...tableProps} {...tableProps}
/> />