diff --git a/config/routes.ts b/config/routes.ts
index 1216828c49906804fe7f6ff813ea72d6db87c1aa..3a0d944a88e3f1f2f5cf18cbeb1186fb49c39140 100644
--- a/config/routes.ts
+++ b/config/routes.ts
@@ -91,7 +91,7 @@
}, */
{
path: "user",
- name: "user",
+ name: "user-list",
access: "canTestAdmin",
hideInMenu: true,
component: "./Sys/Users"
diff --git a/src/app.tsx b/src/app.tsx
index 5a181076f71ce025c753f9812b5e0f3adda70d8d..c6a43e5250b2758bc2ecfd6eff6f6e7503d10935 100644
--- a/src/app.tsx
+++ b/src/app.tsx
@@ -11,6 +11,8 @@ import { HeaderCls } from './components/Header/headerStyled';
import { getUserInfo } from './pages/Auth/Login/services';
import { request as requestInject } from "./request"
import { toLoginPage } from "@/utils"
+import { ConfigProvider } from 'antd';
+import zhCN from 'antd/lib/locale/zh_CN';
const isDev = process.env.NODE_ENV === 'development';
const ignorePathname = ["/login", "/regist"]
@@ -77,6 +79,9 @@ export const layout: RunTimeLayoutConfig = (props) => {
}
},
headerTheme: "dark",
+ childrenRender(dom, props) {
+ return {dom}
+ },
headerRender: (props, dom) => ,
menuItemRender,
contentStyle: {
diff --git a/src/components/RightContent/AvatarDropdown.tsx b/src/components/RightContent/AvatarDropdown.tsx
index cc679199d694eaeb0364cd59cde79683856622d0..3dc0433b49b821229fe8a005d2b31029cf143c8e 100644
--- a/src/components/RightContent/AvatarDropdown.tsx
+++ b/src/components/RightContent/AvatarDropdown.tsx
@@ -29,7 +29,8 @@ const loginOut = async () => {
localStorage.setItem("auth_token", "")
// Note: There may be security issues, please note
- if (((window as any).webSiteEnv) === "openanolis") {
+ //@ts-ignore
+ if (["openanolis", "opensource"].includes(window.webSiteEnv)) {
window.location.href = `/api/user/logout`
return
}
diff --git a/src/locales/zh-CN/menu.ts b/src/locales/zh-CN/menu.ts
index 085479747f2b49806d259fdd7471262cee9cd330..99ed866f89a5649682d3585f40d168edf2135108 100644
--- a/src/locales/zh-CN/menu.ts
+++ b/src/locales/zh-CN/menu.ts
@@ -11,7 +11,7 @@ export default {
"menu.task": "测试任务",
"menu.server": "测试设备",
"menu.sys": "设置",
- "menu.sys.user": "用户管理",
+ "menu.sys.user-list": "用户管理",
"menu.sys.tag": "标签管理",
"menu.sys.suite": "测试套管理",
"menu.sys.approval": "审批管理",
diff --git a/src/pages/Sys/Users/index.tsx b/src/pages/Sys/Users/index.tsx
index a4f8ec4c2aace3e4030b7d652b8d094ff95f9d0f..650990192806349f721e0a22a840e8907c8a5280 100644
--- a/src/pages/Sys/Users/index.tsx
+++ b/src/pages/Sys/Users/index.tsx
@@ -35,10 +35,25 @@ const TableList: React.FC = (props) => {
refresh()
}
+ const roleMap = new Map([
+ ["admin", 4],
+ ["senior", 3],
+ ["junior", 2],
+ ["common", 1]
+ ])
+
const handleUserRoleChange = async (role: string, row: any) => {
if (pendding) return
setPendding(true)
- const { code, msg } = await updateUserRole({ user_id: row.id, role, method: role === "senior" ? "upgrade" : "downgrade" })
+
+ const selectRole: any = roleMap.get(role)
+ const oldRole: any = roleMap.get(row.role)
+
+ const { code, msg } = await updateUserRole({
+ user_id: row.id,
+ role,
+ method: (selectRole - oldRole) > 0 ? "downgrade" : "upgrade"
+ })
setPendding(false)
if (code !== 200) return message.error(msg)
message.success("操作成功!")
@@ -100,7 +115,15 @@ const TableList: React.FC = (props) => {
style={{ width: 200 }}
selectedKeys={[row.role]}
>
-
+
+
+
+ 测试管理员
+ 所有测试资源的管理
+
+
+
+
测试人员
@@ -108,7 +131,7 @@ const TableList: React.FC = (props) => {
-
+
普通用户
diff --git a/src/pages/Sys/index.tsx b/src/pages/Sys/index.tsx
index 9ae66eff298e36a739aa7f95f2f938c85d7bf91d..10df8a877c10e8d038595cbd85a706632d3a9caf 100644
--- a/src/pages/Sys/index.tsx
+++ b/src/pages/Sys/index.tsx
@@ -1,6 +1,6 @@
import React from "react"
import { Layout, Menu } from "antd"
-import { Link, useIntl, useLocation } from "umi"
+import { Link, useIntl, useLocation, useAccess } from "umi"
type IProps = {
[k: string]: any
@@ -8,8 +8,10 @@ type IProps = {
const SysContainer: React.FC = (props) => {
const { children, route } = props
+
const intl = useIntl()
const { pathname } = useLocation()
+ const access = useAccess()
const currentPath = React.useMemo(() => {
for (const child of route.children)
@@ -29,6 +31,12 @@ const SysContainer: React.FC = (props) => {
{
route.children
.filter((i: any) => "path" in i && !i.hideInLeftMenu)
+ .filter((i: any) => {
+ if (i.access) {
+ return access[i.access]()
+ }
+ return true
+ })
.map(
(item: any) => (