Compare commits

..

No commits in common. "5b124ca8210e3443c2b0bf0c339f5af6787a7c8a" and "da6fc9639f917d8f7c6d34ec6a66210377bf5108" have entirely different histories.

6 changed files with 212 additions and 144 deletions

View File

@ -413,6 +413,16 @@ const DepartmentPage = () => {
<div className="playedu-main-top mb-24"> <div className="playedu-main-top mb-24">
{contextHolder} {contextHolder}
<div className="d-flex"> <div className="d-flex">
<PerButton
type="primary"
text="新建部门"
class="mr-16"
icon={<PlusOutlined />}
p="department-cud"
onClick={() => setCreateVisible(true)}
disabled={null}
/>
{ldapEnabled ? ( {ldapEnabled ? (
<PerButton <PerButton
type="primary" type="primary"
@ -423,17 +433,7 @@ const DepartmentPage = () => {
onClick={() => ldapSync()} onClick={() => ldapSync()}
disabled={null} disabled={null}
/> />
) : ( ) : null}
<PerButton
type="primary"
text="新建部门"
class="mr-16"
icon={<PlusOutlined />}
p="department-cud"
onClick={() => setCreateVisible(true)}
disabled={null}
/>
)}
</div> </div>
</div> </div>
} }

View File

@ -59,6 +59,7 @@ export const MemberLearnProgressDialog: React.FC<PropInterface> = ({
{ {
title: "课时标题", title: "课时标题",
dataIndex: "title", dataIndex: "title",
render: (title: string) => ( render: (title: string) => (
<> <>
<span>{title}</span> <span>{title}</span>
@ -67,6 +68,7 @@ export const MemberLearnProgressDialog: React.FC<PropInterface> = ({
}, },
{ {
title: "总时长", title: "总时长",
width: 120,
dataIndex: "duration", dataIndex: "duration",
render: (duration: number) => ( render: (duration: number) => (
<> <>
@ -76,6 +78,7 @@ export const MemberLearnProgressDialog: React.FC<PropInterface> = ({
}, },
{ {
title: "已学习时长", title: "已学习时长",
width: 120,
dataIndex: "finished_duration", dataIndex: "finished_duration",
render: (_, record: any) => ( render: (_, record: any) => (
<> <>
@ -93,6 +96,7 @@ export const MemberLearnProgressDialog: React.FC<PropInterface> = ({
}, },
{ {
title: "是否学完", title: "是否学完",
width: 100,
dataIndex: "is_finished", dataIndex: "is_finished",
render: (_, record: any) => ( render: (_, record: any) => (
<> <>
@ -108,6 +112,7 @@ export const MemberLearnProgressDialog: React.FC<PropInterface> = ({
}, },
{ {
title: "开始时间", title: "开始时间",
width: 150,
dataIndex: "created_at", dataIndex: "created_at",
render: (_, record: any) => ( render: (_, record: any) => (
<> <>
@ -121,6 +126,7 @@ export const MemberLearnProgressDialog: React.FC<PropInterface> = ({
}, },
{ {
title: "学完时间", title: "学完时间",
width: 150,
dataIndex: "finished_at", dataIndex: "finished_at",
render: (_, record: any) => ( render: (_, record: any) => (
<> <>
@ -136,6 +142,7 @@ export const MemberLearnProgressDialog: React.FC<PropInterface> = ({
title: "操作", title: "操作",
key: "action", key: "action",
fixed: "right", fixed: "right",
width: 70,
render: (_, record: any) => ( render: (_, record: any) => (
<> <>
{records && records[record.id] ? ( {records && records[record.id] ? (
@ -215,7 +222,7 @@ export const MemberLearnProgressDialog: React.FC<PropInterface> = ({
maskClosable={false} maskClosable={false}
footer={null} footer={null}
> >
<div className="mt-24"> <div className="w-100 d-flex mt-24">
<PerButton <PerButton
type="primary" type="primary"
text="重置学习记录" text="重置学习记录"
@ -228,7 +235,10 @@ export const MemberLearnProgressDialog: React.FC<PropInterface> = ({
disabled={null} disabled={null}
/> />
</div> </div>
<div className="mt-24" style={{ maxHeight: 800, overflowY: "auto" }}> <div
className="w-100 d-flex mt-24"
style={{ maxHeight: 800, overflowY: "auto" }}
>
<Table <Table
columns={column} columns={column}
dataSource={list} dataSource={list}

View File

@ -89,13 +89,13 @@ const MemberPage = () => {
); );
useEffect(() => { useEffect(() => {
if (result.get("refresh")) { setDid(Number(result.get("did")));
resetLocalSearchParams({ if (Number(result.get("did"))) {
page: 1, let arr = [];
}); arr.push(Number(result.get("did")));
setRefresh(!refresh); setDepIds(arr);
} }
}, [result.get("refresh")]); }, [result.get("did")]);
const columns: ColumnsType<DataType> = [ const columns: ColumnsType<DataType> = [
{ {

View File

@ -1,14 +1,5 @@
import { useEffect, useState } from "react"; import { useEffect, useState } from "react";
import { import { Modal, Table, message, Space, Dropdown, Button } from "antd";
Modal,
Table,
message,
Space,
Dropdown,
Typography,
Input,
Button,
} from "antd";
import type { MenuProps } from "antd"; import type { MenuProps } from "antd";
import { resource } from "../../../api"; import { resource } from "../../../api";
import { useLocation } from "react-router-dom"; import { useLocation } from "react-router-dom";
@ -72,7 +63,6 @@ const ResourceVideosPage = () => {
const [multiConfig, setMultiConfig] = useState(false); const [multiConfig, setMultiConfig] = useState(false);
const [updateId, setUpdateId] = useState(0); const [updateId, setUpdateId] = useState(0);
const [playUrl, setPlayUrl] = useState(""); const [playUrl, setPlayUrl] = useState("");
const [title, setTitle] = useState("");
useEffect(() => { useEffect(() => {
setCateId(Number(result.get("cid"))); setCateId(Number(result.get("cid")));
@ -241,7 +231,7 @@ const ResourceVideosPage = () => {
setLoading(true); setLoading(true);
let categoryIds = category_ids.join(","); let categoryIds = category_ids.join(",");
resource resource
.resourceList(page, size, "", "", title, "VIDEO", categoryIds) .resourceList(page, size, "", "", "", "VIDEO", categoryIds)
.then((res: any) => { .then((res: any) => {
setTotal(res.data.result.total); setTotal(res.data.result.total);
setVideoList(res.data.result.data); setVideoList(res.data.result.data);
@ -260,7 +250,6 @@ const ResourceVideosPage = () => {
setSize(10); setSize(10);
setVideoList([]); setVideoList([]);
setSelectedRowKeys([]); setSelectedRowKeys([]);
setTitle("");
setRefresh(!refresh); setRefresh(!refresh);
}; };
@ -339,34 +328,7 @@ const ResourceVideosPage = () => {
</Button> </Button>
</div> </div>
<div className="d-flex"> <div className="d-flex"></div>
<div className="d-flex mr-24">
<Typography.Text></Typography.Text>
<Input
value={title}
onChange={(e) => {
setTitle(e.target.value);
}}
allowClear
style={{ width: 160 }}
placeholder="请输入名称关键字"
/>
</div>
<div className="d-flex">
<Button className="mr-16" onClick={resetVideoList}>
</Button>
<Button
type="primary"
onClick={() => {
setPage(1);
setRefresh(!refresh);
}}
>
</Button>
</div>
</div>
</div> </div>
<div className="float-left"> <div className="float-left">
{multiConfig ? ( {multiConfig ? (

View File

@ -39,53 +39,101 @@ export const SystemAdminrolesCreate: React.FC<PropInterface> = ({
const getParams = () => { const getParams = () => {
adminRole.createAdminRole().then((res: any) => { adminRole.createAdminRole().then((res: any) => {
const arr: any = []; const arr: Option[] = [
const arr2: any = []; {
title: "学员",
value: "学员-n",
children: [],
},
{
title: "管理员",
value: "管理员-n",
children: [],
},
];
const arr2: Option[] = [
{
title: "学员",
value: "学员-n",
children: [],
},
{
title: "管理员",
value: "管理员-n",
children: [],
},
{
title: "管理员日志",
value: "管理员日志-n",
children: [],
},
{
title: "管理员角色",
value: "管理员角色-n",
children: [],
},
{
title: "线上课",
value: "线上课-n",
children: [],
},
{
title: "分类管理",
value: "分类管理-n",
children: [],
},
{
title: "资源管理",
value: "资源管理-n",
children: [],
},
{
title: "资源分类",
value: "资源分类-n",
children: [],
},
{
title: "部门",
value: "部门-n",
children: [],
},
{
title: "系统配置",
value: "系统配置-n",
children: [],
},
{
title: "其它",
value: "其它-n",
children: [],
},
{
title: "其它权限",
value: "其它权限-n",
children: [],
},
];
let actions = res.data.perm_action.action; let actions = res.data.perm_action.action;
let permissions = res.data.perm_action.data; let permissions = res.data.perm_action.data;
for (let i = 0; i < permissions.length; i++) { for (let i = 0; i < permissions.length; i++) {
const key = arr.findIndex( arr.map((item: any) => {
(it: any) => it.title === permissions[i].group_name if (item.title === permissions[i].group_name) {
); item.children.push({
if (key >= 0) {
arr[key].children.push({
title: permissions[i].name, title: permissions[i].name,
value: permissions[i].id, value: permissions[i].id,
}); });
} else {
arr.push({
title: permissions[i].group_name,
value: permissions[i].group_name + "-n",
children: [
{
title: permissions[i].name,
value: permissions[i].id,
},
],
});
} }
});
} }
for (let j = 0; j < actions.length; j++) { for (let j = 0; j < actions.length; j++) {
const key = arr2.findIndex( arr2.map((item: any) => {
(it: any) => it.title === actions[j].group_name if (item.title === actions[j].group_name) {
); item.children.push({
if (key >= 0) {
arr2[key].children.push({
title: actions[j].name, title: actions[j].name,
value: actions[j].id, value: actions[j].id,
}); });
} else {
arr2.push({
title: actions[j].group_name,
value: actions[j].group_name + "-n",
children: [
{
title: actions[j].name,
value: actions[j].id,
},
],
});
} }
});
} }
setPermissions(arr); setPermissions(arr);
setActions(arr2); setActions(arr2);

View File

@ -53,53 +53,101 @@ export const SystemAdminrolesUpdate: React.FC<PropInterface> = ({
const getParams = () => { const getParams = () => {
adminRole.createAdminRole().then((res: any) => { adminRole.createAdminRole().then((res: any) => {
const arr: any = []; const arr: Option[] = [
const arr2: any = []; {
title: "学员",
value: "学员-n",
children: [],
},
{
title: "管理员",
value: "管理员-n",
children: [],
},
];
const arr2: Option[] = [
{
title: "学员",
value: "学员-n",
children: [],
},
{
title: "管理员",
value: "管理员-n",
children: [],
},
{
title: "管理员日志",
value: "管理员日志-n",
children: [],
},
{
title: "管理员角色",
value: "管理员角色-n",
children: [],
},
{
title: "线上课",
value: "线上课-n",
children: [],
},
{
title: "分类管理",
value: "分类管理-n",
children: [],
},
{
title: "资源管理",
value: "资源管理-n",
children: [],
},
{
title: "资源分类",
value: "资源分类-n",
children: [],
},
{
title: "部门",
value: "部门-n",
children: [],
},
{
title: "系统配置",
value: "系统配置-n",
children: [],
},
{
title: "其它",
value: "其它-n",
children: [],
},
{
title: "其它权限",
value: "其它权限-n",
children: [],
},
];
let actions = res.data.perm_action.action; let actions = res.data.perm_action.action;
let permissions = res.data.perm_action.data; let permissions = res.data.perm_action.data;
for (let i = 0; i < permissions.length; i++) { for (let i = 0; i < permissions.length; i++) {
const key = arr.findIndex( arr.map((item: any) => {
(it: any) => it.title === permissions[i].group_name if (item.title === permissions[i].group_name) {
); item.children.push({
if (key >= 0) {
arr[key].children.push({
title: permissions[i].name, title: permissions[i].name,
value: permissions[i].id, value: permissions[i].id,
}); });
} else {
arr.push({
title: permissions[i].group_name,
value: permissions[i].group_name + "-n",
children: [
{
title: permissions[i].name,
value: permissions[i].id,
},
],
});
} }
});
} }
for (let j = 0; j < actions.length; j++) { for (let j = 0; j < actions.length; j++) {
const key = arr2.findIndex( arr2.map((item: any) => {
(it: any) => it.title === actions[j].group_name if (item.title === actions[j].group_name) {
); item.children.push({
if (key >= 0) {
arr2[key].children.push({
title: actions[j].name, title: actions[j].name,
value: actions[j].id, value: actions[j].id,
}); });
} else {
arr2.push({
title: actions[j].group_name,
value: actions[j].group_name + "-n",
children: [
{
title: actions[j].name,
value: actions[j].id,
},
],
});
} }
});
} }
setPermissions(arr); setPermissions(arr);
setActions(arr2); setActions(arr2);