mirror of
https://github.com/PlayEdu/backend
synced 2025-06-28 13:04:40 +08:00
优化学员列表的部门
This commit is contained in:
parent
3459016134
commit
1fd4f20ab0
@ -10,19 +10,18 @@ interface Option {
|
|||||||
}
|
}
|
||||||
|
|
||||||
interface PropInterface {
|
interface PropInterface {
|
||||||
type: string;
|
|
||||||
text: string;
|
text: string;
|
||||||
refresh: boolean;
|
|
||||||
showNum: boolean;
|
showNum: boolean;
|
||||||
selected: any;
|
selected: any;
|
||||||
|
depUserCount?: KeyNumberObject;
|
||||||
|
userCount?: number;
|
||||||
onUpdate: (keys: any, title: any) => void;
|
onUpdate: (keys: any, title: any) => void;
|
||||||
}
|
}
|
||||||
|
|
||||||
export const TreeDepartment = (props: PropInterface) => {
|
export const TreeDepartment = (props: PropInterface) => {
|
||||||
const [treeData, setTreeData] = useState<any>([]);
|
const [treeData, setTreeData] = useState<any>([]);
|
||||||
const [loading, setLoading] = useState<boolean>(true);
|
|
||||||
const [selectKey, setSelectKey] = useState<number[]>([]);
|
const [selectKey, setSelectKey] = useState<number[]>([]);
|
||||||
const [userTotal, setUserTotal] = useState(0);
|
// 本地缓存
|
||||||
const localDepartments = useSelector(
|
const localDepartments = useSelector(
|
||||||
(state: any) => state.systemConfig.value.departments
|
(state: any) => state.systemConfig.value.departments
|
||||||
);
|
);
|
||||||
@ -34,44 +33,25 @@ export const TreeDepartment = (props: PropInterface) => {
|
|||||||
}, [props.selected]);
|
}, [props.selected]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
setLoading(true);
|
if (JSON.stringify(localDepartments) !== "{}") {
|
||||||
if (props.showNum) {
|
let data: any[] = [];
|
||||||
department.departmentList().then((res: any) => {
|
if (props.depUserCount) {
|
||||||
const departments: DepartmentsBoxModel = res.data.departments;
|
data = checkNewArr(localDepartments, 0, props.depUserCount);
|
||||||
const departCount: DepIdsModel = res.data.dep_user_count;
|
|
||||||
setUserTotal(res.data.user_total);
|
|
||||||
if (JSON.stringify(departments) !== "{}") {
|
|
||||||
const new_arr: any[] = checkNewArr(departments, 0, departCount);
|
|
||||||
setTreeData(new_arr);
|
|
||||||
} else {
|
|
||||||
const new_arr: Option[] = [
|
|
||||||
{
|
|
||||||
key: "",
|
|
||||||
title: "全部",
|
|
||||||
children: [],
|
|
||||||
},
|
|
||||||
];
|
|
||||||
setTreeData(new_arr);
|
|
||||||
}
|
|
||||||
setLoading(false);
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
if (JSON.stringify(localDepartments) !== "{}") {
|
|
||||||
const new_arr: any[] = checkArr(localDepartments, 0);
|
|
||||||
setTreeData(new_arr);
|
|
||||||
} else {
|
} else {
|
||||||
const new_arr: Option[] = [
|
data = checkArr(localDepartments, 0);
|
||||||
{
|
|
||||||
key: "",
|
|
||||||
title: "全部",
|
|
||||||
children: [],
|
|
||||||
},
|
|
||||||
];
|
|
||||||
setTreeData(new_arr);
|
|
||||||
}
|
}
|
||||||
setLoading(false);
|
setTreeData(data);
|
||||||
|
} else {
|
||||||
|
const data: Option[] = [
|
||||||
|
{
|
||||||
|
key: "",
|
||||||
|
title: "全部",
|
||||||
|
children: [],
|
||||||
|
},
|
||||||
|
];
|
||||||
|
setTreeData(data);
|
||||||
}
|
}
|
||||||
}, [props.refresh, localDepartments]);
|
}, [localDepartments, props.depUserCount]);
|
||||||
|
|
||||||
const checkNewArr = (
|
const checkNewArr = (
|
||||||
departments: DepartmentsBoxModel,
|
departments: DepartmentsBoxModel,
|
||||||
@ -173,7 +153,7 @@ export const TreeDepartment = (props: PropInterface) => {
|
|||||||
onClick={() => onSelect([], "")}
|
onClick={() => onSelect([], "")}
|
||||||
>
|
>
|
||||||
全部{props.text}
|
全部{props.text}
|
||||||
{props.showNum && userTotal ? "(" + userTotal + ")" : ""}
|
{props.showNum && props.userCount ? "(" + props.userCount + ")" : ""}
|
||||||
</div>
|
</div>
|
||||||
{treeData.length > 0 && (
|
{treeData.length > 0 && (
|
||||||
<Tree
|
<Tree
|
||||||
|
@ -139,9 +139,7 @@ const CoursePage = () => {
|
|||||||
<div className="float-left">
|
<div className="float-left">
|
||||||
<TreeDepartment
|
<TreeDepartment
|
||||||
selected={dep_ids}
|
selected={dep_ids}
|
||||||
refresh={refresh}
|
|
||||||
showNum={false}
|
showNum={false}
|
||||||
type="no-course"
|
|
||||||
text={"部门"}
|
text={"部门"}
|
||||||
onUpdate={(keys: any, title: any) => {
|
onUpdate={(keys: any, title: any) => {
|
||||||
resetLocalSearchParams({
|
resetLocalSearchParams({
|
||||||
|
@ -70,7 +70,9 @@ const MemberPage = () => {
|
|||||||
const [loading, setLoading] = useState(false);
|
const [loading, setLoading] = useState(false);
|
||||||
const [list, setList] = useState<DataType[]>([]);
|
const [list, setList] = useState<DataType[]>([]);
|
||||||
const [total, setTotal] = useState(0);
|
const [total, setTotal] = useState(0);
|
||||||
|
const [pureTotal, setPureTotal] = useState(0);
|
||||||
const [refresh, setRefresh] = useState(false);
|
const [refresh, setRefresh] = useState(false);
|
||||||
|
const [depUserCount, setDepUserCount] = useState<KeyNumberObject>();
|
||||||
|
|
||||||
const [dep_ids, setDepIds] = useState<number[]>([]);
|
const [dep_ids, setDepIds] = useState<number[]>([]);
|
||||||
const [selLabel, setLabel] = useState<string>(
|
const [selLabel, setLabel] = useState<string>(
|
||||||
@ -252,6 +254,8 @@ const MemberPage = () => {
|
|||||||
setDepartments(res.data.departments);
|
setDepartments(res.data.departments);
|
||||||
setUserDepIds(res.data.user_dep_ids);
|
setUserDepIds(res.data.user_dep_ids);
|
||||||
setTotal(res.data.total);
|
setTotal(res.data.total);
|
||||||
|
setPureTotal(res.data.pure_total);
|
||||||
|
setDepUserCount(res.data.dep_user_count);
|
||||||
setLoading(false);
|
setLoading(false);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
@ -333,9 +337,9 @@ const MemberPage = () => {
|
|||||||
<div className="left-box">
|
<div className="left-box">
|
||||||
<TreeDepartment
|
<TreeDepartment
|
||||||
selected={dep_ids}
|
selected={dep_ids}
|
||||||
refresh={refresh}
|
|
||||||
showNum={true}
|
showNum={true}
|
||||||
type=""
|
userCount={pureTotal}
|
||||||
|
depUserCount={depUserCount}
|
||||||
text={"部门"}
|
text={"部门"}
|
||||||
onUpdate={(keys: any, title: any) => {
|
onUpdate={(keys: any, title: any) => {
|
||||||
resetLocalSearchParams({
|
resetLocalSearchParams({
|
||||||
|
4
src/playedu.d.ts
vendored
4
src/playedu.d.ts
vendored
@ -1,4 +1,8 @@
|
|||||||
declare global {
|
declare global {
|
||||||
|
interface KeyNumberObject {
|
||||||
|
[key: number]: number;
|
||||||
|
}
|
||||||
|
|
||||||
interface FileItem {
|
interface FileItem {
|
||||||
id: string; //上传文件的唯一id
|
id: string; //上传文件的唯一id
|
||||||
file: File; //上传的文件资源
|
file: File; //上传的文件资源
|
||||||
|
Loading…
x
Reference in New Issue
Block a user