优化学员列表的部门

This commit is contained in:
xxx 2023-09-23 21:33:51 +08:00
parent 3459016134
commit 1fd4f20ab0
4 changed files with 30 additions and 44 deletions

View File

@ -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 (props.showNum) {
department.departmentList().then((res: any) => {
const departments: DepartmentsBoxModel = res.data.departments;
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) !== "{}") { if (JSON.stringify(localDepartments) !== "{}") {
const new_arr: any[] = checkArr(localDepartments, 0); let data: any[] = [];
setTreeData(new_arr); if (props.depUserCount) {
data = checkNewArr(localDepartments, 0, props.depUserCount);
} else { } else {
const new_arr: Option[] = [ data = checkArr(localDepartments, 0);
}
setTreeData(data);
} else {
const data: Option[] = [
{ {
key: "", key: "",
title: "全部", title: "全部",
children: [], children: [],
}, },
]; ];
setTreeData(new_arr); setTreeData(data);
} }
setLoading(false); }, [localDepartments, props.depUserCount]);
}
}, [props.refresh, localDepartments]);
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

View File

@ -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({

View File

@ -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
View File

@ -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; //上传的文件资源