|
@@ -7,6 +7,7 @@ import { useEffect, useMemo, useState } from 'react';
|
|
|
export interface ProductRoleInfo {
|
|
export interface ProductRoleInfo {
|
|
|
productName: string;
|
|
productName: string;
|
|
|
productCode: string;
|
|
productCode: string;
|
|
|
|
|
+ productStatus?: number;
|
|
|
memberType?: string;
|
|
memberType?: string;
|
|
|
roleNames: string[];
|
|
roleNames: string[];
|
|
|
}
|
|
}
|
|
@@ -14,6 +15,7 @@ export interface ProductRoleInfo {
|
|
|
export interface ProductRolesBase {
|
|
export interface ProductRolesBase {
|
|
|
roleMap: Map<number, { productName: string; roleName: string }>;
|
|
roleMap: Map<number, { productName: string; roleName: string }>;
|
|
|
memberMap: Map<number, { productName: string; memberType: string }[]>;
|
|
memberMap: Map<number, { productName: string; memberType: string }[]>;
|
|
|
|
|
+ productStatusMap: Map<string, number>;
|
|
|
loading: boolean;
|
|
loading: boolean;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -24,6 +26,7 @@ export const useProductRolesBase = (): ProductRolesBase => {
|
|
|
const [memberMap, setMemberMap] = useState<
|
|
const [memberMap, setMemberMap] = useState<
|
|
|
Map<number, { productName: string; memberType: string }[]>
|
|
Map<number, { productName: string; memberType: string }[]>
|
|
|
>(new Map());
|
|
>(new Map());
|
|
|
|
|
+ const [productStatusMap, setProductStatusMap] = useState<Map<string, number>>(new Map());
|
|
|
const [loading, setLoading] = useState(false);
|
|
const [loading, setLoading] = useState(false);
|
|
|
|
|
|
|
|
useEffect(() => {
|
|
useEffect(() => {
|
|
@@ -33,6 +36,10 @@ export const useProductRolesBase = (): ProductRolesBase => {
|
|
|
const productRes = await fetchProductList({ pageSize: 999 });
|
|
const productRes = await fetchProductList({ pageSize: 999 });
|
|
|
const products = productRes.data ?? [];
|
|
const products = productRes.data ?? [];
|
|
|
|
|
|
|
|
|
|
+ const statusMap = new Map<string, number>();
|
|
|
|
|
+ products.forEach((p) => statusMap.set(p.name, p.status));
|
|
|
|
|
+ setProductStatusMap(statusMap);
|
|
|
|
|
+
|
|
|
const [memberResults, roleResults] = await Promise.all([
|
|
const [memberResults, roleResults] = await Promise.all([
|
|
|
Promise.all(
|
|
Promise.all(
|
|
|
products.map((p) => fetchMemberList({ productCode: p.code, pageSize: 9999 })),
|
|
products.map((p) => fetchMemberList({ productCode: p.code, pageSize: 9999 })),
|
|
@@ -64,7 +71,7 @@ export const useProductRolesBase = (): ProductRolesBase => {
|
|
|
load();
|
|
load();
|
|
|
}, []);
|
|
}, []);
|
|
|
|
|
|
|
|
- return { roleMap, memberMap, loading };
|
|
|
|
|
|
|
+ return { roleMap, memberMap, productStatusMap, loading };
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
export const useUserProductRoles = (
|
|
export const useUserProductRoles = (
|
|
@@ -72,7 +79,7 @@ export const useUserProductRoles = (
|
|
|
base: ProductRolesBase,
|
|
base: ProductRolesBase,
|
|
|
refreshKey?: number,
|
|
refreshKey?: number,
|
|
|
) => {
|
|
) => {
|
|
|
- const { roleMap, memberMap } = base;
|
|
|
|
|
|
|
+ const { roleMap, memberMap, productStatusMap } = base;
|
|
|
const [userRoleIds, setUserRoleIds] = useState<Map<number, number[]>>(new Map());
|
|
const [userRoleIds, setUserRoleIds] = useState<Map<number, number[]>>(new Map());
|
|
|
|
|
|
|
|
useEffect(() => {
|
|
useEffect(() => {
|
|
@@ -104,6 +111,7 @@ export const useUserProductRoles = (
|
|
|
productRoles.set(roleInfo.productName, {
|
|
productRoles.set(roleInfo.productName, {
|
|
|
productName: roleInfo.productName,
|
|
productName: roleInfo.productName,
|
|
|
productCode: '',
|
|
productCode: '',
|
|
|
|
|
+ productStatus: productStatusMap.get(roleInfo.productName),
|
|
|
roleNames: [],
|
|
roleNames: [],
|
|
|
});
|
|
});
|
|
|
}
|
|
}
|
|
@@ -116,6 +124,7 @@ export const useUserProductRoles = (
|
|
|
productRoles.set(m.productName, {
|
|
productRoles.set(m.productName, {
|
|
|
productName: m.productName,
|
|
productName: m.productName,
|
|
|
productCode: '',
|
|
productCode: '',
|
|
|
|
|
+ productStatus: productStatusMap.get(m.productName),
|
|
|
memberType: m.memberType,
|
|
memberType: m.memberType,
|
|
|
roleNames: [],
|
|
roleNames: [],
|
|
|
});
|
|
});
|
|
@@ -127,7 +136,7 @@ export const useUserProductRoles = (
|
|
|
map.set(userId, [...productRoles.values()]);
|
|
map.set(userId, [...productRoles.values()]);
|
|
|
}
|
|
}
|
|
|
return map;
|
|
return map;
|
|
|
- }, [userIds, userRoleIds, roleMap, memberMap]);
|
|
|
|
|
|
|
+ }, [userIds, userRoleIds, roleMap, memberMap, productStatusMap]);
|
|
|
|
|
|
|
|
return { userProductInfo };
|
|
return { userProductInfo };
|
|
|
};
|
|
};
|