From 757e9ace1a47a0484af24b628a8c09e8216e3e9f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=A6=BA=E7=8B=A8?= <18119604035@163.com>
Date: Mon, 10 Apr 2023 09:09:05 +0800
Subject: [PATCH 01/12] =?UTF-8?q?=E5=90=8E=E5=8F=B0=E6=A0=87=E9=A2=98?=
=?UTF-8?q?=E6=96=87=E6=A1=88=E4=BC=98=E5=8C=96?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
index.html | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/index.html b/index.html
index 603b93b..0df34e5 100644
--- a/index.html
+++ b/index.html
@@ -7,7 +7,7 @@
name="viewport"
content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0"
/>
-
PlayEdu
+ 管理后台
From 7bc01276b58e1a6d5231c00de501490f36cac4cc Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=A6=BA=E7=8B=A8?= <18119604035@163.com>
Date: Mon, 10 Apr 2023 09:11:41 +0800
Subject: [PATCH 02/12] =?UTF-8?q?=E5=90=8E=E5=8F=B0=E7=99=BB=E5=BD=95?=
=?UTF-8?q?=E9=AA=8C=E8=AF=81=E7=A0=81=E5=AD=97=E6=95=B0=E9=AA=8C=E8=AF=81?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/pages/login/index.tsx | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/src/pages/login/index.tsx b/src/pages/login/index.tsx
index 768afdc..55dfb3c 100644
--- a/src/pages/login/index.tsx
+++ b/src/pages/login/index.tsx
@@ -43,6 +43,10 @@ const LoginPage = () => {
message.error("请输入图形验证码");
return;
}
+ if (captchaVal.length < 4) {
+ message.error("图形验证码错误");
+ return;
+ }
if (loading) {
return;
}
From 86964737d39ef7211f46a425ec8fb8785eca30a2 Mon Sep 17 00:00:00 2001
From: none
Date: Tue, 11 Apr 2023 11:01:15 +0800
Subject: [PATCH 03/12] =?UTF-8?q?=E7=99=BB=E5=BD=95=E6=88=90=E5=8A=9F?=
=?UTF-8?q?=E8=AF=B7=E6=B1=82=E7=B3=BB=E7=BB=9F=E9=85=8D=E7=BD=AE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/api/system.ts | 4 ++
src/pages/login/index.tsx | 76 +++++++++++++++++----------
src/store/system/systemConfigSlice.ts | 22 +++-----
3 files changed, 59 insertions(+), 43 deletions(-)
diff --git a/src/api/system.ts b/src/api/system.ts
index 233aa16..0ff970c 100644
--- a/src/api/system.ts
+++ b/src/api/system.ts
@@ -3,3 +3,7 @@ import client from "./internal/httpClient";
export function getImageCaptcha() {
return client.get("/backend/v1/system/image-captcha", {});
}
+
+export function getSystemConfig() {
+ return client.get("/backend/v1/system/config", {});
+}
\ No newline at end of file
diff --git a/src/pages/login/index.tsx b/src/pages/login/index.tsx
index 55dfb3c..a52dff2 100644
--- a/src/pages/login/index.tsx
+++ b/src/pages/login/index.tsx
@@ -1,7 +1,7 @@
-import React, { useState, useEffect } from "react";
+import { useState, useEffect } from "react";
import styles from "./index.module.less";
import { Spin, Input, Button, message } from "antd";
-import { login, system } from "../../api/index";
+import { login as loginApi, system } from "../../api/index";
import { setToken } from "../../utils/index";
import { useDispatch } from "react-redux";
import { useNavigate } from "react-router-dom";
@@ -9,6 +9,10 @@ import banner from "../../assets/images/login/banner.png";
import icon from "../../assets/images/login/icon.png";
import "./login.less";
import { loginAction } from "../../store/user/loginUserSlice";
+import {
+ SystemConfigStoreInterface,
+ saveConfigAction,
+} from "../../store/system/systemConfigSlice";
const LoginPage = () => {
const dispatch = useDispatch();
@@ -22,6 +26,7 @@ const LoginPage = () => {
const [captchaLoading, setCaptchaLoading] = useState(true);
const fetchImageCaptcha = () => {
+ setCaptchaVal("");
setCaptchaLoading(true);
system.getImageCaptcha().then((res: any) => {
setImage(res.data.image);
@@ -30,7 +35,7 @@ const LoginPage = () => {
});
};
- const loginSubmit = (e: any) => {
+ const loginSubmit = async () => {
if (!email) {
message.error("请输入管理员邮箱账号");
return;
@@ -43,47 +48,60 @@ const LoginPage = () => {
message.error("请输入图形验证码");
return;
}
- if (captchaVal.length < 4) {
+ if (captchaVal.length !== 4) {
message.error("图形验证码错误");
return;
}
- if (loading) {
- return;
- }
- handleSubmit();
+ await handleSubmit();
};
- const handleSubmit = () => {
+ const handleSubmit = async () => {
if (loading) {
return;
}
setLoading(true);
- login
- .login(email, password, captchaKey, captchaVal)
- .then((res: any) => {
- const token = res.data.token;
- setToken(token);
- getUser();
- })
- .catch((e) => {
- setLoading(false);
- setCaptchaVal("");
- fetchImageCaptcha();
- });
+ try {
+ let res: any = await loginApi.login(
+ email,
+ password,
+ captchaKey,
+ captchaVal
+ );
+ setToken(res.data.token); //将token写入本地
+ await getSystemConfig(); //获取系统配置并写入store
+ await getUser(); //获取登录用户的信息并写入store
+
+ navigate("/");
+ } catch (e) {
+ message.error("登录出现错误");
+ console.error("错误信息", e);
+ setLoading(false);
+ fetchImageCaptcha(); //刷新图形验证码
+ }
};
- const getUser = () => {
- login.getUser().then((res: any) => {
- const data = res.data;
- dispatch(loginAction(data));
- setLoading(false);
- navigate("/");
- });
+ const getUser = async () => {
+ let res: any = await loginApi.getUser();
+ dispatch(loginAction(res.data));
+ };
+
+ const getSystemConfig = async () => {
+ let res: any = await system.getSystemConfig();
+ let data: SystemConfigStoreInterface = {
+ 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));
};
const keyUp = (e: any) => {
if (e.keyCode === 13) {
- loginSubmit(e);
+ loginSubmit();
}
};
diff --git a/src/store/system/systemConfigSlice.ts b/src/store/system/systemConfigSlice.ts
index eab6dfe..300a1b9 100644
--- a/src/store/system/systemConfigSlice.ts
+++ b/src/store/system/systemConfigSlice.ts
@@ -1,25 +1,19 @@
import { createSlice } from "@reduxjs/toolkit";
type SystemConfigStoreInterface = {
- systemApiUrl: string;
- systemPcUrl: string;
- systemH5Url: string;
- systemLogo: string;
- systemName: string;
-};
-
-let defaultValue: SystemConfigStoreInterface = {
- systemApiUrl: "",
- systemPcUrl: "",
- systemH5Url: "",
- systemLogo: "",
- systemName: "",
+ systemApiUrl?: string;
+ systemPcUrl?: string;
+ systemH5Url?: string;
+ systemLogo?: string;
+ systemName?: string;
+ memberDefaultAvatar?: string;
+ courseDefaultThumbs?: string[];
};
const systemConfigSlice = createSlice({
name: "systemConfig",
initialState: {
- value: defaultValue,
+ value: {},
},
reducers: {
saveConfigAction(stage, e) {
From f05a696941a0416856dfe22d5948247b5efc1e93 Mon Sep 17 00:00:00 2001
From: none
Date: Tue, 11 Apr 2023 11:08:56 +0800
Subject: [PATCH 04/12] =?UTF-8?q?=E5=AE=8C=E6=88=90=E7=B3=BB=E7=BB=9F?=
=?UTF-8?q?=E9=85=8D=E7=BD=AE=E7=9A=84=E5=8A=A0=E8=BD=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/pages/init/index.tsx | 20 ++++++++++++++++-
src/routes/index.tsx | 48 +++++++++++++---------------------------
2 files changed, 34 insertions(+), 34 deletions(-)
diff --git a/src/pages/init/index.tsx b/src/pages/init/index.tsx
index 76f9f0d..cf99b4f 100644
--- a/src/pages/init/index.tsx
+++ b/src/pages/init/index.tsx
@@ -1,9 +1,14 @@
import { useDispatch } from "react-redux";
import { Outlet } from "react-router-dom";
import { loginAction } from "../../store/user/loginUserSlice";
+import {
+ SystemConfigStoreInterface,
+ saveConfigAction,
+} from "../../store/system/systemConfigSlice";
interface Props {
- loginData: any | null;
+ loginData?: any;
+ configData?: any;
}
const InitPage = (props: Props) => {
@@ -12,6 +17,19 @@ const InitPage = (props: Props) => {
dispatch(loginAction(props.loginData));
}
+ if (props.configData) {
+ let config: SystemConfigStoreInterface = {
+ systemName: props.configData["system.name"],
+ systemLogo: props.configData["system.logo"],
+ systemApiUrl: props.configData["system.api_url"],
+ systemPcUrl: props.configData["system.pc_url"],
+ systemH5Url: props.configData["system.h5_url"],
+ memberDefaultAvatar: props.configData["member.default_avatar"],
+ courseDefaultThumbs: props.configData["default.course_thumbs"],
+ };
+ dispatch(saveConfigAction(config));
+ }
+
return (
<>
diff --git a/src/routes/index.tsx b/src/routes/index.tsx
index e27405b..42e9f92 100644
--- a/src/routes/index.tsx
+++ b/src/routes/index.tsx
@@ -1,6 +1,6 @@
import { lazy } from "react";
import { RouteObject } from "react-router-dom";
-import { login } from "../api";
+import { login, system } from "../api";
import InitPage from "../pages/init";
import { getToken } from "../utils";
@@ -23,52 +23,34 @@ import DepartmentPage from "../pages/department";
import TestPage from "../pages/test";
import ErrorPage from "../pages/error";
-// 异步加载页面
// const LoginPage = lazy(() => import("../pages/login"));
-// const HomePage = lazy(() => import("../pages/home"));
-// const DashboardPage = lazy(() => import("../pages/dashboard"));
-// const ErrorPage = lazy(() => import("../pages/error"));
-// const CoursePage = lazy(() => import("../pages/course"));
-// const TestPage = lazy(() => import("../pages/test"));
-// const MemberPage = lazy(() => import("../pages/member"));
-// const MemberImportPage = lazy(() => import("../pages/member/import"));
-// const SystemAdministratorPage = lazy(
-// () => import("../pages/system/administrator")
-// );
-// const SystemAdminrolesPage = lazy(() => import("../pages/system/adminroles"));
-// const DepartmentPage = lazy(() => import("../pages/department"));
-// const ChangePasswordPage = lazy(() => import("../pages/change-password"));
-// const ResourceImagesPage = lazy(() => import("../pages/resource/images"));
-// const ResourceCategoryPage = lazy(
-// () => import("../pages/resource/resource-category")
-// );
-// const ResourceVideosPage = lazy(() => import("../pages/resource/videos"));
-// const SystemConfigPage = lazy(() => import("../pages/system/config"));
let RootPage: any = null;
if (getToken()) {
RootPage = lazy(async () => {
- return new Promise((resolve) => {
- let userLoginToken = getToken();
- if (!userLoginToken) {
+ return new Promise(async (resolve) => {
+ try {
+ let configRes: any = await system.getSystemConfig();
+ let userRes: any = await login.getUser();
+
resolve({
- default: InitPage,
+ default: (
+
+ ),
+ });
+ } catch (e) {
+ console.error("系统初始化失败", e);
+ resolve({
+ default: ,
});
- return;
}
- login.getUser().then((res: any) => {
- resolve({
- default: ,
- });
- });
- // todo token过期处理
});
});
} else {
if (window.location.pathname !== "/login") {
window.location.href = "/login";
}
- RootPage = ;
+ RootPage = ;
}
const routes: RouteObject[] = [
From 72a91d642a31e783e692fe1b6b16f7d8353a17a0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=A6=BA=E7=8B=A8?= <18119604035@163.com>
Date: Tue, 11 Apr 2023 16:11:22 +0800
Subject: [PATCH 05/12] =?UTF-8?q?=E9=83=A8=E9=97=A8=E9=BB=98=E8=AE=A4?=
=?UTF-8?q?=E5=B1=95=E5=BC=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/pages/course/compenents/create.tsx | 1 +
src/pages/course/compenents/update.tsx | 1 +
src/pages/department/index.tsx | 21 +++++++++++--------
src/pages/member/compenents/create.tsx | 1 +
src/pages/member/compenents/update.tsx | 1 +
.../administrator/compenents/update.tsx | 4 +++-
.../system/adminroles/compenents/update.tsx | 4 +++-
7 files changed, 22 insertions(+), 11 deletions(-)
diff --git a/src/pages/course/compenents/create.tsx b/src/pages/course/compenents/create.tsx
index 412f1fd..815ffce 100644
--- a/src/pages/course/compenents/create.tsx
+++ b/src/pages/course/compenents/create.tsx
@@ -486,6 +486,7 @@ export const CourseCreate: React.FC = ({
treeData={departments}
multiple
allowClear
+ treeDefaultExpandAll
placeholder="请选择部门"
/>
diff --git a/src/pages/course/compenents/update.tsx b/src/pages/course/compenents/update.tsx
index e4b6532..4b1d218 100644
--- a/src/pages/course/compenents/update.tsx
+++ b/src/pages/course/compenents/update.tsx
@@ -242,6 +242,7 @@ export const CourseUpdate: React.FC = ({
treeData={departments}
multiple
allowClear
+ treeDefaultExpandAll
placeholder="请选择部门"
/>
diff --git a/src/pages/department/index.tsx b/src/pages/department/index.tsx
index 4da7247..e3d669b 100644
--- a/src/pages/department/index.tsx
+++ b/src/pages/department/index.tsx
@@ -364,15 +364,18 @@ const DepartmentPage = () => {
- }
- />
+ {treeData.length > 0 && (
+ }
+ />
+ )}
= ({ open, onCancel }) => {
treeData={departments}
multiple
allowClear
+ treeDefaultExpandAll
placeholder="请选择学员所属部门"
/>
diff --git a/src/pages/member/compenents/update.tsx b/src/pages/member/compenents/update.tsx
index 9a8f322..17d9f8c 100644
--- a/src/pages/member/compenents/update.tsx
+++ b/src/pages/member/compenents/update.tsx
@@ -202,6 +202,7 @@ export const MemberUpdate: React.FC = ({
treeData={departments}
multiple
allowClear
+ treeDefaultExpandAll
placeholder="请选择学员所属部门"
/>
diff --git a/src/pages/system/administrator/compenents/update.tsx b/src/pages/system/administrator/compenents/update.tsx
index ff5b8e6..c87be6c 100644
--- a/src/pages/system/administrator/compenents/update.tsx
+++ b/src/pages/system/administrator/compenents/update.tsx
@@ -30,7 +30,9 @@ export const SystemAdministratorUpdate: React.FC = ({
if (id === 0) {
return;
}
- getDetail();
+ if (open) {
+ getDetail();
+ }
}, [id, open]);
const getParams = () => {
diff --git a/src/pages/system/adminroles/compenents/update.tsx b/src/pages/system/adminroles/compenents/update.tsx
index b177382..555cae1 100644
--- a/src/pages/system/adminroles/compenents/update.tsx
+++ b/src/pages/system/adminroles/compenents/update.tsx
@@ -35,7 +35,9 @@ export const SystemAdminrolesUpdate: React.FC = ({
if (id === undefined) {
return;
}
- getDetail();
+ if (open) {
+ getDetail();
+ }
}, [id, open]);
const getParams = () => {
From e2a0aaf6955b904bbcc19ddcb7319e417dc84a86 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=A6=BA=E7=8B=A8?= <18119604035@163.com>
Date: Tue, 11 Apr 2023 16:14:28 +0800
Subject: [PATCH 06/12] =?UTF-8?q?=E9=83=A8=E9=97=A8=E9=BB=98=E8=AE=A4?=
=?UTF-8?q?=E5=B1=95=E5=BC=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/compenents/tree-department/index.tsx | 17 ++++++++++-------
1 file changed, 10 insertions(+), 7 deletions(-)
diff --git a/src/compenents/tree-department/index.tsx b/src/compenents/tree-department/index.tsx
index 1644b9d..573105a 100644
--- a/src/compenents/tree-department/index.tsx
+++ b/src/compenents/tree-department/index.tsx
@@ -90,13 +90,16 @@ export const TreeDepartment = (props: PropInterface) => {
>
全部{props.text}
- }
- />
+ {treeData.length > 0 && (
+ }
+ />
+ )}
);
};
From dfc33aa754893b31e2c689ca36365f916f1b5ac3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=A6=BA=E7=8B=A8?= <18119604035@163.com>
Date: Tue, 11 Apr 2023 16:17:49 +0800
Subject: [PATCH 07/12] =?UTF-8?q?=E8=B7=B3=E8=BD=AC=E9=93=BE=E6=8E=A5?=
=?UTF-8?q?=E4=BC=98=E5=8C=96?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/compenents/footer/index.tsx | 2 +-
src/pages/dashboard/index.tsx | 6 +++++-
2 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/src/compenents/footer/index.tsx b/src/compenents/footer/index.tsx
index 3da1d19..4dbc669 100644
--- a/src/compenents/footer/index.tsx
+++ b/src/compenents/footer/index.tsx
@@ -13,7 +13,7 @@ export const Footer: React.FC = () => {
textAlign: "center",
}}
>
-
+
{
产品文档

-
+
点击查看产品文档,快速玩转Playedu!

From d90afcc08b71931ed1620419000b10f67fabb15f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=A6=BA=E7=8B=A8?= <18119604035@163.com>
Date: Tue, 11 Apr 2023 16:28:49 +0800
Subject: [PATCH 08/12] =?UTF-8?q?=E5=AD=A6=E5=91=98=E9=A1=B5=E9=9D=A2?=
=?UTF-8?q?=E9=87=8D=E5=A4=8D=E8=AF=B7=E6=B1=82api=E5=92=8C=E5=88=86?=
=?UTF-8?q?=E7=B1=BB=E9=BB=98=E8=AE=A4=E5=B1=95=E5=BC=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/compenents/tree-category/index.tsx | 17 ++++++++-------
src/compenents/upload-image-button/index.tsx | 6 ++++--
src/pages/course/compenents/create.tsx | 1 +
src/pages/course/compenents/update.tsx | 1 +
.../resource/resource-category/index.tsx | 21 +++++++++++--------
5 files changed, 28 insertions(+), 18 deletions(-)
diff --git a/src/compenents/tree-category/index.tsx b/src/compenents/tree-category/index.tsx
index af7f36b..7e4cb67 100644
--- a/src/compenents/tree-category/index.tsx
+++ b/src/compenents/tree-category/index.tsx
@@ -89,13 +89,16 @@ export const TreeCategory = (props: PropInterface) => {
全部{props.text}
- }
- />
+ {treeData.length > 0 && (
+ }
+ />
+ )}
);
};
diff --git a/src/compenents/upload-image-button/index.tsx b/src/compenents/upload-image-button/index.tsx
index 545a0ab..2eb4a20 100644
--- a/src/compenents/upload-image-button/index.tsx
+++ b/src/compenents/upload-image-button/index.tsx
@@ -71,8 +71,10 @@ export const UploadImageButton = (props: PropsInterface) => {
// 加载图片列表
useEffect(() => {
- getImageList();
- }, [category_ids, refresh, page, size]);
+ if (showModal) {
+ getImageList();
+ }
+ }, [category_ids, refresh, page, size, showModal]);
return (
<>
diff --git a/src/pages/course/compenents/create.tsx b/src/pages/course/compenents/create.tsx
index 815ffce..2a2db6f 100644
--- a/src/pages/course/compenents/create.tsx
+++ b/src/pages/course/compenents/create.tsx
@@ -434,6 +434,7 @@ export const CourseCreate: React.FC = ({
style={{ width: 424 }}
treeData={categories}
placeholder="请选择课程分类"
+ treeDefaultExpandAll
/>
= ({
style={{ width: 424 }}
treeData={categories}
placeholder="请选择课程分类"
+ treeDefaultExpandAll
/>
{
- }
- />
+ {treeData.length > 0 && (
+ }
+ />
+ )}
Date: Tue, 11 Apr 2023 16:32:50 +0800
Subject: [PATCH 09/12] =?UTF-8?q?=E9=A6=96=E9=A1=B5=E6=A6=82=E8=A7=88?=
=?UTF-8?q?=E6=98=BE=E7=A4=BA=E4=BC=98=E5=8C=96?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/pages/dashboard/index.tsx | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/pages/dashboard/index.tsx b/src/pages/dashboard/index.tsx
index 67929ba..1fa89ef 100644
--- a/src/pages/dashboard/index.tsx
+++ b/src/pages/dashboard/index.tsx
@@ -181,7 +181,7 @@ const DashboardPage = () => {
{basicData.user_total}
较昨日
- {compareNum(basicData.user_today, basicData.user_yesterday)}
+ {compareNum(basicData.user_today, 0)}
From 060d686ceebca259d143005f52c1e057aa4b6003 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=A6=BA=E7=8B=A8?= <18119604035@163.com>
Date: Tue, 11 Apr 2023 16:40:54 +0800
Subject: [PATCH 10/12] =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E5=9B=BE=E7=89=87?=
=?UTF-8?q?=E6=8C=89=E9=92=AE=E6=96=87=E6=A1=88=E6=9B=BF=E6=8D=A2?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/compenents/upload-image-button/index.tsx | 3 ++-
src/pages/course/compenents/create.tsx | 1 +
src/pages/course/compenents/update.tsx | 1 +
src/pages/member/compenents/create.tsx | 1 +
src/pages/member/compenents/update.tsx | 1 +
src/pages/system/config/index.tsx | 4 ++++
6 files changed, 10 insertions(+), 1 deletion(-)
diff --git a/src/compenents/upload-image-button/index.tsx b/src/compenents/upload-image-button/index.tsx
index 2eb4a20..8c6cdb8 100644
--- a/src/compenents/upload-image-button/index.tsx
+++ b/src/compenents/upload-image-button/index.tsx
@@ -36,6 +36,7 @@ interface ImageItem {
}
interface PropsInterface {
+ text: any;
onSelected: (url: string) => void;
}
@@ -83,7 +84,7 @@ export const UploadImageButton = (props: PropsInterface) => {
setShowModal(true);
}}
>
- 上传图片
+ {props.text ? props.text : "上传图片"}
{showModal && (
diff --git a/src/pages/course/compenents/create.tsx b/src/pages/course/compenents/create.tsx
index 2a2db6f..359bc03 100644
--- a/src/pages/course/compenents/create.tsx
+++ b/src/pages/course/compenents/create.tsx
@@ -574,6 +574,7 @@ export const CourseCreate: React.FC = ({
{
setThumb(url);
form.setFieldsValue({ thumb: url });
diff --git a/src/pages/course/compenents/update.tsx b/src/pages/course/compenents/update.tsx
index a846f2d..43c90d5 100644
--- a/src/pages/course/compenents/update.tsx
+++ b/src/pages/course/compenents/update.tsx
@@ -330,6 +330,7 @@ export const CourseUpdate: React.FC = ({
{
setThumb(url);
form.setFieldsValue({ thumb: url });
diff --git a/src/pages/member/compenents/create.tsx b/src/pages/member/compenents/create.tsx
index 89355d9..9dac651 100644
--- a/src/pages/member/compenents/create.tsx
+++ b/src/pages/member/compenents/create.tsx
@@ -129,6 +129,7 @@ export const MemberCreate: React.FC = ({ open, onCancel }) => {
)}
{
setAvatar(url);
form.setFieldsValue({ avatar: url });
diff --git a/src/pages/member/compenents/update.tsx b/src/pages/member/compenents/update.tsx
index 17d9f8c..f29fd89 100644
--- a/src/pages/member/compenents/update.tsx
+++ b/src/pages/member/compenents/update.tsx
@@ -163,6 +163,7 @@ export const MemberUpdate: React.FC = ({
)}
{
setAvatar(url);
form.setFieldsValue({ avatar: url });
diff --git a/src/pages/system/config/index.tsx b/src/pages/system/config/index.tsx
index 7666293..3c4447d 100644
--- a/src/pages/system/config/index.tsx
+++ b/src/pages/system/config/index.tsx
@@ -198,6 +198,7 @@ const SystemConfigPage = () => {
{
setLogo(url);
form.setFieldsValue({ "system.logo": url });
@@ -219,6 +220,7 @@ const SystemConfigPage = () => {
{
setLogo(url);
form.setFieldsValue({ "system.logo": url });
@@ -363,6 +365,7 @@ const SystemConfigPage = () => {
/>
{
setThumb(url);
form.setFieldsValue({ "player.poster": url });
@@ -384,6 +387,7 @@ const SystemConfigPage = () => {
{
setThumb(url);
form.setFieldsValue({ "player.poster": url });
From 9b4e53176c2489f02cd38831f66eb9a14e1d0027 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=A6=BA=E7=8B=A8?= <18119604035@163.com>
Date: Thu, 13 Apr 2023 10:12:13 +0800
Subject: [PATCH 11/12] =?UTF-8?q?=E5=BC=95=E5=85=A5=E9=BB=98=E8=AE=A4?=
=?UTF-8?q?=E5=A4=B4=E5=83=8F=E3=80=81=E5=B0=81=E9=9D=A2?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/pages/course/compenents/create.tsx | 11 +++++++----
src/pages/course/compenents/update.tsx | 11 +++++++----
src/pages/member/compenents/create.tsx | 12 ++++++++----
src/pages/member/compenents/update.tsx | 10 +++++++---
4 files changed, 29 insertions(+), 15 deletions(-)
diff --git a/src/pages/course/compenents/create.tsx b/src/pages/course/compenents/create.tsx
index 359bc03..2c4b399 100644
--- a/src/pages/course/compenents/create.tsx
+++ b/src/pages/course/compenents/create.tsx
@@ -12,10 +12,10 @@ import {
TreeSelect,
} from "antd";
import styles from "./create.module.less";
+import { useSelector } from "react-redux";
import { course, department } from "../../../api/index";
import { UploadImageButton, SelectResource } from "../../../compenents";
import { ExclamationCircleFilled } from "@ant-design/icons";
-import { getHost } from "../../../utils/index";
import { TreeHours } from "./hours";
const { confirm } = Modal;
@@ -40,9 +40,12 @@ export const CourseCreate: React.FC = ({
onCancel,
}) => {
const [form] = Form.useForm();
- const defaultThumb1 = getHost() + "thumb/thumb1.png";
- const defaultThumb2 = getHost() + "thumb/thumb2.png";
- const defaultThumb3 = getHost() + "thumb/thumb3.png";
+ const courseDefaultThumbs = useSelector(
+ (state: any) => state.systemConfig.value.courseDefaultThumbs
+ );
+ const defaultThumb1 = courseDefaultThumbs[0];
+ const defaultThumb2 = courseDefaultThumbs[1];
+ const defaultThumb3 = courseDefaultThumbs[2];
const [loading, setLoading] = useState(true);
const [departments, setDepartments] = useState([]);
const [categories, setCategories] = useState([]);
diff --git a/src/pages/course/compenents/update.tsx b/src/pages/course/compenents/update.tsx
index 43c90d5..e8530b2 100644
--- a/src/pages/course/compenents/update.tsx
+++ b/src/pages/course/compenents/update.tsx
@@ -12,9 +12,9 @@ import {
Image,
} from "antd";
import styles from "./update.module.less";
+import { useSelector } from "react-redux";
import { course, department } from "../../../api/index";
import { UploadImageButton } from "../../../compenents";
-import { getHost } from "../../../utils/index";
const { confirm } = Modal;
@@ -36,9 +36,12 @@ export const CourseUpdate: React.FC = ({
onCancel,
}) => {
const [form] = Form.useForm();
- const defaultThumb1 = getHost() + "thumb/thumb1.png";
- const defaultThumb2 = getHost() + "thumb/thumb2.png";
- const defaultThumb3 = getHost() + "thumb/thumb3.png";
+ const courseDefaultThumbs = useSelector(
+ (state: any) => state.systemConfig.value.courseDefaultThumbs
+ );
+ const defaultThumb1 = courseDefaultThumbs[0];
+ const defaultThumb2 = courseDefaultThumbs[1];
+ const defaultThumb3 = courseDefaultThumbs[2];
const [loading, setLoading] = useState(true);
const [departments, setDepartments] = useState([]);
const [categories, setCategories] = useState([]);
diff --git a/src/pages/member/compenents/create.tsx b/src/pages/member/compenents/create.tsx
index 9dac651..2dc214d 100644
--- a/src/pages/member/compenents/create.tsx
+++ b/src/pages/member/compenents/create.tsx
@@ -1,9 +1,10 @@
import React, { useState, useEffect } from "react";
import { Modal, Form, TreeSelect, Input, message } from "antd";
import styles from "./create.module.less";
+import { useSelector } from "react-redux";
import { user, department } from "../../../api/index";
import { UploadImageButton } from "../../../compenents";
-import { ValidataCredentials, getHost } from "../../../utils/index";
+import { ValidataCredentials } from "../../../utils/index";
interface PropInterface {
open: boolean;
@@ -20,7 +21,10 @@ export const MemberCreate: React.FC = ({ open, onCancel }) => {
const [form] = Form.useForm();
const [loading, setLoading] = useState(true);
const [departments, setDepartments] = useState([]);
- const [avatar, setAvatar] = useState(getHost() + "avatar/avatar.png");
+ const memberDefaultAvatar = useSelector(
+ (state: any) => state.systemConfig.value.memberDefaultAvatar
+ );
+ const [avatar, setAvatar] = useState(memberDefaultAvatar);
useEffect(() => {
if (open) {
@@ -33,11 +37,11 @@ export const MemberCreate: React.FC = ({ open, onCancel }) => {
email: "",
name: "",
password: "",
- avatar: getHost() + "avatar/avatar.png",
+ avatar: memberDefaultAvatar,
idCard: "",
dep_ids: [],
});
- setAvatar(getHost() + "avatar/avatar.png");
+ setAvatar(memberDefaultAvatar);
}, [form, open]);
const getParams = () => {
diff --git a/src/pages/member/compenents/update.tsx b/src/pages/member/compenents/update.tsx
index f29fd89..477f77f 100644
--- a/src/pages/member/compenents/update.tsx
+++ b/src/pages/member/compenents/update.tsx
@@ -1,9 +1,10 @@
import React, { useState, useEffect } from "react";
import { Modal, Form, TreeSelect, Input, message } from "antd";
-import styles from "./create.module.less";
+import styles from "./update.module.less";
+import { useSelector } from "react-redux";
import { user, department } from "../../../api/index";
import { UploadImageButton } from "../../../compenents";
-import { ValidataCredentials, getHost } from "../../../utils/index";
+import { ValidataCredentials } from "../../../utils/index";
interface PropInterface {
id: number;
@@ -25,7 +26,10 @@ export const MemberUpdate: React.FC = ({
const [form] = Form.useForm();
const [loading, setLoading] = useState(true);
const [departments, setDepartments] = useState([]);
- const [avatar, setAvatar] = useState(getHost() + "avatar/avatar.png");
+ const memberDefaultAvatar = useSelector(
+ (state: any) => state.systemConfig.value.memberDefaultAvatar
+ );
+ const [avatar, setAvatar] = useState(memberDefaultAvatar);
useEffect(() => {
if (id == 0) {
From facbaad8f5ef65efb78563795656d7b022e303c7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=A6=BA=E7=8B=A8?= <18119604035@163.com>
Date: Thu, 13 Apr 2023 14:20:28 +0800
Subject: [PATCH 12/12] =?UTF-8?q?=E7=BA=BF=E4=B8=8A=E8=AF=BE=E9=80=89?=
=?UTF-8?q?=E6=8B=A9=E9=83=A8=E9=97=A8=E6=98=BE=E7=A4=BA=E6=95=B0=E9=87=8F?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/pages/course/compenents/create.tsx | 34 +++++++++++++++++++++-----
src/pages/course/compenents/update.tsx | 34 +++++++++++++++++++++-----
2 files changed, 56 insertions(+), 12 deletions(-)
diff --git a/src/pages/course/compenents/create.tsx b/src/pages/course/compenents/create.tsx
index 2c4b399..ed61adb 100644
--- a/src/pages/course/compenents/create.tsx
+++ b/src/pages/course/compenents/create.tsx
@@ -85,8 +85,9 @@ export const CourseCreate: React.FC = ({
const getParams = () => {
department.departmentList().then((res: any) => {
const departments = res.data.departments;
+ const departCount = res.data.dep_user_count;
if (JSON.stringify(departments) !== "{}") {
- const new_arr: Option[] = checkArr(departments, 0);
+ const new_arr: any = checkArr(departments, 0, departCount);
setDepartments(new_arr);
}
let type = "open";
@@ -134,7 +135,7 @@ export const CourseCreate: React.FC = ({
course.createCourse().then((res: any) => {
const categories = res.data.categories;
if (JSON.stringify(categories) !== "{}") {
- const new_arr: Option[] = checkArr(categories, 0);
+ const new_arr: any = checkArr(categories, 0, null);
setCategories(new_arr);
}
@@ -163,18 +164,39 @@ export const CourseCreate: React.FC = ({
});
};
- const checkArr = (departments: any[], id: number) => {
+ const getNewTitle = (title: any, id: number, counts: any) => {
+ if (counts) {
+ let value = counts[id] || 0;
+ return title + "(" + value + ")";
+ } else {
+ return title;
+ }
+ };
+
+ const checkArr = (departments: any[], id: number, counts: any) => {
const arr = [];
for (let i = 0; i < departments[id].length; i++) {
if (!departments[departments[id][i].id]) {
arr.push({
- title: departments[id][i].name,
+ title: getNewTitle(
+ departments[id][i].name,
+ departments[id][i].id,
+ counts
+ ),
value: departments[id][i].id,
});
} else {
- const new_arr: Option[] = checkArr(departments, departments[id][i].id);
+ const new_arr: any = checkArr(
+ departments,
+ departments[id][i].id,
+ counts
+ );
arr.push({
- title: departments[id][i].name,
+ title: getNewTitle(
+ departments[id][i].name,
+ departments[id][i].id,
+ counts
+ ),
value: departments[id][i].id,
children: new_arr,
});
diff --git a/src/pages/course/compenents/update.tsx b/src/pages/course/compenents/update.tsx
index e8530b2..8ad8853 100644
--- a/src/pages/course/compenents/update.tsx
+++ b/src/pages/course/compenents/update.tsx
@@ -66,7 +66,7 @@ export const CourseUpdate: React.FC = ({
course.createCourse().then((res: any) => {
const categories = res.data.categories;
if (JSON.stringify(categories) !== "{}") {
- const new_arr: Option[] = checkArr(categories, 0);
+ const new_arr: any = checkArr(categories, 0, null);
setCategories(new_arr);
}
});
@@ -74,8 +74,9 @@ export const CourseUpdate: React.FC = ({
const getParams = () => {
department.departmentList().then((res: any) => {
const departments = res.data.departments;
+ const departCount = res.data.dep_user_count;
if (JSON.stringify(departments) !== "{}") {
- const new_arr: Option[] = checkArr(departments, 0);
+ const new_arr: any = checkArr(departments, 0, departCount);
setDepartments(new_arr);
}
});
@@ -101,18 +102,39 @@ export const CourseUpdate: React.FC = ({
});
};
- const checkArr = (departments: any[], id: number) => {
+ const getNewTitle = (title: any, id: number, counts: any) => {
+ if (counts) {
+ let value = counts[id] || 0;
+ return title + "(" + value + ")";
+ } else {
+ return title;
+ }
+ };
+
+ const checkArr = (departments: any[], id: number, counts: any) => {
const arr = [];
for (let i = 0; i < departments[id].length; i++) {
if (!departments[departments[id][i].id]) {
arr.push({
- title: departments[id][i].name,
+ title: getNewTitle(
+ departments[id][i].name,
+ departments[id][i].id,
+ counts
+ ),
value: departments[id][i].id,
});
} else {
- const new_arr: Option[] = checkArr(departments, departments[id][i].id);
+ const new_arr: any = checkArr(
+ departments,
+ departments[id][i].id,
+ counts
+ );
arr.push({
- title: departments[id][i].name,
+ title: getNewTitle(
+ departments[id][i].name,
+ departments[id][i].id,
+ counts
+ ),
value: departments[id][i].id,
children: new_arr,
});