diff --git a/src/pages/department/index.tsx b/src/pages/department/index.tsx index 221cd7e..7a4ad65 100644 --- a/src/pages/department/index.tsx +++ b/src/pages/department/index.tsx @@ -32,6 +32,9 @@ const DepartmentPage = () => { const [updateVisible, setUpdateVisible] = useState(false); const [did, setDid] = useState(0); const [modal, contextHolder] = Modal.useModal(); + const ldapEnabled = useSelector( + (state: any) => state.systemConfig.value["ldap-enabled"] + ); const onSelect = (selectedKeys: any, info: any) => { setSelectKey(selectedKeys); @@ -45,11 +48,11 @@ const DepartmentPage = () => { }; useEffect(() => { + setLoading(true); getData(); }, [refresh, permissions]); const getData = () => { - setLoading(true); department.departmentList().then((res: any) => { const departments: DepartmentsBoxModel = res.data.departments; if (JSON.stringify(departments) !== "{}") { @@ -65,85 +68,108 @@ const DepartmentPage = () => { const arr = []; for (let i = 0; i < departments[id].length; i++) { if (!departments[departments[id][i].id]) { - arr.push({ - title: ( - <> -
{departments[id][i].name}
-
- - - - {through("department-cud") && ( - <> + if (ldapEnabled) { + arr.push({ + title: ( + <> +
{departments[id][i].name}
+ + ), + key: departments[id][i].id, + }); + } else { + arr.push({ + title: ( + <> +
{departments[id][i].name}
+
+ { - setDid(departments[id][i].id); - setUpdateVisible(true); - }} /> - - removeItem( - departments[id][i].id, - departments[id][i].name - ) - } - /> - - )} -
- - ), - key: departments[id][i].id, - }); + + {through("department-cud") && ( + <> + { + setDid(departments[id][i].id); + setUpdateVisible(true); + }} + /> + + removeItem( + departments[id][i].id, + departments[id][i].name + ) + } + /> + + )} +
+ + ), + key: departments[id][i].id, + }); + } } else { const new_arr: Option[] = checkArr(departments, departments[id][i].id); - arr.push({ - title: ( - <> -
{departments[id][i].name}
-
- - - - {through("department-cud") && ( - <> + if (ldapEnabled) { + arr.push({ + title: ( + <> +
{departments[id][i].name}
+ + ), + key: departments[id][i].id, + children: new_arr, + }); + } else { + arr.push({ + title: ( + <> +
{departments[id][i].name}
+
+ { - setDid(departments[id][i].id); - setUpdateVisible(true); - }} /> - - removeItem( - departments[id][i].id, - departments[id][i].name - ) - } - /> - - )} -
- - ), - key: departments[id][i].id, - children: new_arr, - }); + + {through("department-cud") && ( + <> + { + setDid(departments[id][i].id); + setUpdateVisible(true); + }} + /> + + removeItem( + departments[id][i].id, + departments[id][i].name + ) + } + /> + + )} +
+ + ), + key: departments[id][i].id, + children: new_arr, + }); + } } } return arr; @@ -365,22 +391,29 @@ const DepartmentPage = () => { return ( <> -
- {contextHolder} -
- } - p="department-cud" - onClick={() => setCreateVisible(true)} - disabled={null} - /> + {!ldapEnabled && ( +
+ {contextHolder} +
+ } + p="department-cud" + onClick={() => setCreateVisible(true)} + disabled={null} + /> +
-
+ )}
-
+ {loading && ( +
+ +
+ )} +
{treeData.length > 0 && ( { if (props.configData) { let config: SystemConfigStoreInterface = { + "ldap-enabled": props.configData["ldap-enabled"], systemName: props.configData["system.name"], systemLogo: props.configData["system.logo"], systemApiUrl: props.configData["system.api_url"], diff --git a/src/pages/login/index.tsx b/src/pages/login/index.tsx index e5d5fc8..a7918bd 100644 --- a/src/pages/login/index.tsx +++ b/src/pages/login/index.tsx @@ -1,4 +1,4 @@ -import { useState, useEffect } from "react"; +import { useState } from "react"; import styles from "./index.module.less"; import { Input, Button, message } from "antd"; import { login as loginApi, system } from "../../api/index"; @@ -59,6 +59,7 @@ const LoginPage = () => { const getSystemConfig = async () => { let res: any = await system.getSystemConfig(); let data: SystemConfigStoreInterface = { + "ldap-enabled": res.data["ldap-enabled"], systemName: res.data["system.name"], systemLogo: res.data["system.logo"], systemApiUrl: res.data["system.api_url"], diff --git a/src/pages/member/index.tsx b/src/pages/member/index.tsx index 14ca195..ece1195 100644 --- a/src/pages/member/index.tsx +++ b/src/pages/member/index.tsx @@ -21,6 +21,7 @@ import { import { user } from "../../api/index"; import { dateFormat } from "../../utils/index"; import { Link, Navigate, useLocation } from "react-router-dom"; +import { useSelector } from "react-redux"; import { TreeDepartment, PerButton } from "../../compenents"; import { MemberCreate } from "./compenents/create"; import { MemberUpdate } from "./compenents/update"; @@ -66,6 +67,9 @@ const MemberPage = () => { const [user_dep_ids, setUserDepIds] = useState({}); const [departments, setDepartments] = useState({}); const [did, setDid] = useState(Number(result.get("did"))); + const ldapEnabled = useSelector( + (state: any) => state.systemConfig.value["ldap-enabled"] + ); useEffect(() => { setDid(Number(result.get("did"))); @@ -180,19 +184,23 @@ const MemberPage = () => { disabled={null} /> -
- - - + {!ldapEnabled && ( + <> +
+ + + + + )} ); }, @@ -297,16 +305,18 @@ const MemberPage = () => {
- } - p="user-store" - onClick={() => setCreateVisible(true)} - disabled={null} - /> - {dep_ids.length === 0 && ( + {!ldapEnabled && ( + } + p="user-store" + onClick={() => setCreateVisible(true)} + disabled={null} + /> + )} + {!ldapEnabled && dep_ids.length === 0 && ( { (state: any) => state.loginUser.value.permissions ); const [loading, setLoading] = useState(true); + const [init, setInit] = useState(true); const [refresh, setRefresh] = useState(false); const [treeData, setTreeData] = useState([]); const [selectKey, setSelectKey] = useState([]); @@ -33,6 +34,7 @@ const ResourceCategoryPage = () => { const [modal, contextHolder] = Modal.useModal(); useEffect(() => { + setInit(true); getData(); }, [refresh, permissions]); @@ -56,6 +58,7 @@ const ResourceCategoryPage = () => { setTreeData(new_arr); } setLoading(false); + setInit(false); }); }; @@ -390,7 +393,12 @@ const ResourceCategoryPage = () => {
-
+ {init && ( +
+ +
+ )} +
{treeData.length > 0 && ( { + const dispatch = useDispatch(); const [form] = Form.useForm(); const [loading, setLoading] = useState(false); const [logo, setLogo] = useState(""); @@ -239,6 +244,23 @@ const SystemConfigPage = () => { message.success("保存成功!"); setLoading(false); getDetail(); + getSystemConfig(); + }); + }; + + const getSystemConfig = async () => { + system.getSystemConfig().then((res: any) => { + let data: SystemConfigStoreInterface = { + "ldap-enabled": res.data["ldap-enabled"], + systemName: res.data["system.name"], + systemLogo: res.data["system.logo"], + systemApiUrl: res.data["system.api_url"], + systemPcUrl: res.data["system.pc_url"], + systemH5Url: res.data["system.h5_url"], + memberDefaultAvatar: res.data["member.default_avatar"], + courseDefaultThumbs: res.data["default.course_thumbs"], + }; + dispatch(saveConfigAction(data)); }); }; diff --git a/src/store/system/systemConfigSlice.ts b/src/store/system/systemConfigSlice.ts index 300a1b9..f4a37c7 100644 --- a/src/store/system/systemConfigSlice.ts +++ b/src/store/system/systemConfigSlice.ts @@ -1,6 +1,7 @@ import { createSlice } from "@reduxjs/toolkit"; type SystemConfigStoreInterface = { + "ldap-enabled"?: boolean; systemApiUrl?: string; systemPcUrl?: string; systemH5Url?: string;