2025-08-07 09:22:49 +08:00
|
|
|
import React, { useState, useEffect } from 'react';
|
|
|
|
import ResultModal from './components/ResultModal';
|
|
|
|
import ViewModal from './components/ViewModal';
|
2025-08-12 14:52:14 +08:00
|
|
|
import BlacklistApproval from './components/BlacklistApproval';
|
|
|
|
import ExitApproval from './components/ExitApproval';
|
|
|
|
import CategoryLibraryApproval from './components/CategoryLibraryApproval';
|
|
|
|
import CategoryLibrarySupplierApproval from './components/CategoryLibrarySupplierApproval';
|
|
|
|
import SupplierCategoryAccessApproval from './components/SupplierCategoryAccessApproval';
|
|
|
|
import SupplierInfoChangeApproval from './components/SupplierInfoChangeApproval';
|
2025-08-12 16:26:24 +08:00
|
|
|
import EvaluationApproval from './components/EvaluationApproval';
|
2025-08-07 14:41:00 +08:00
|
|
|
import { refreshDictCache } from '@/servers/api/login';
|
2025-08-11 10:17:43 +08:00
|
|
|
import { encryptWithRsa } from '@/utils/encryptWithRsa';
|
2025-08-07 09:22:49 +08:00
|
|
|
|
2025-08-12 14:52:14 +08:00
|
|
|
|
2025-08-07 09:22:49 +08:00
|
|
|
const ViewReviewPage: React.FC = () => {
|
2025-08-11 10:17:43 +08:00
|
|
|
const [modalVisible, setModalVisible] = useState<boolean>(false);
|
|
|
|
const [modalRecord, setModalRecord] = useState<{ id: string } | null>(null);
|
|
|
|
const [type, setType] = useState<string>(''); // 空串即可
|
2025-08-07 09:22:49 +08:00
|
|
|
|
|
|
|
useEffect(() => {
|
2025-08-11 10:17:43 +08:00
|
|
|
const params = new URLSearchParams(window.location.search);
|
2025-08-07 14:41:00 +08:00
|
|
|
const base64 = params.get('code');
|
|
|
|
if (!base64) return;
|
2025-08-12 14:52:14 +08:00
|
|
|
const b64 = base64.replace(/-/g, '+').replace(/_/g, '/');
|
2025-08-11 10:17:43 +08:00
|
|
|
try {
|
|
|
|
// 解码
|
2025-08-12 14:52:14 +08:00
|
|
|
const decodedStr = atob(b64);
|
|
|
|
const query = /%[0-9A-F]{2}/i.test(decodedStr) ? decodeURIComponent(decodedStr) : decodedStr;
|
|
|
|
const p2 = new URLSearchParams(query);
|
2025-08-11 10:17:43 +08:00
|
|
|
const id = p2.get('id') ?? '';
|
|
|
|
const code = p2.get('code') ?? '';
|
|
|
|
const userId = p2.get('userId') ?? '';
|
|
|
|
if (!id) return;
|
|
|
|
setType(code); // code 现在一定是 string
|
|
|
|
// 初始化字典
|
2025-08-07 14:41:00 +08:00
|
|
|
if (!sessionStorage.getItem('dict')) {
|
|
|
|
refreshDictCache().then((res) => {
|
2025-08-11 10:17:43 +08:00
|
|
|
if (res?.code === 200) {
|
|
|
|
sessionStorage.setItem('dict', JSON.stringify(res.data));
|
2025-08-07 14:41:00 +08:00
|
|
|
}
|
2025-08-11 10:17:43 +08:00
|
|
|
});
|
|
|
|
}
|
|
|
|
// 只有在 userId 存在时再加密保存
|
|
|
|
if (userId) {
|
|
|
|
sessionStorage.setItem('userId', encryptWithRsa(userId));
|
2025-08-07 14:41:00 +08:00
|
|
|
}
|
2025-08-11 10:17:43 +08:00
|
|
|
setModalRecord({ id });
|
2025-08-07 09:22:49 +08:00
|
|
|
setModalVisible(true);
|
2025-08-11 10:17:43 +08:00
|
|
|
} catch (err) {
|
|
|
|
// atob 或者 URLSearchParams 解析失败
|
|
|
|
console.error('解析 code 失败:', err);
|
2025-08-07 09:22:49 +08:00
|
|
|
}
|
2025-08-07 14:41:00 +08:00
|
|
|
}, []);
|
2025-08-07 09:22:49 +08:00
|
|
|
|
2025-08-11 10:17:43 +08:00
|
|
|
/**
|
|
|
|
* SUPPLIER_ACCESS_APPROVAL("supplierAccessApproval", "供应商准入审批"),
|
|
|
|
* SUPPLIER_CATEGORY_ACCESS_APPROVAL("supplierCategoryAccessApproval", "供应商品类准入审批"),
|
|
|
|
* SUPPLIER_INFO_CHANGE_APPROVAL("supplierInfoChangeApproval", "供应商信息变更审批"),
|
|
|
|
* BLACKLIST_APPROVAL("blacklistApproval", "黑名单审批"),
|
|
|
|
* EXIT_APPROVAL("exitApproval", "退出审批"),
|
|
|
|
* CATEGORY_LIBRARY_APPROVAL("categoryLibraryApproval", "品类库审批"),
|
|
|
|
* CATEGORY_LIBRARY_SUPPLIER_APPROVAL("categoryLibrarySupplierApproval","品类库供应商入库审批"),
|
|
|
|
* EVALUATION_APPROVAL("evaluationApproval", "评价审批");
|
|
|
|
*/
|
|
|
|
|
2025-08-07 09:22:49 +08:00
|
|
|
return (
|
2025-08-07 14:41:00 +08:00
|
|
|
<div style={{ padding: '20px' }}>
|
2025-08-12 14:52:14 +08:00
|
|
|
{/* 供应商准入审批 */}
|
|
|
|
{['supplierAccessApproval'].includes(type) && (
|
2025-08-11 10:17:43 +08:00
|
|
|
<>
|
|
|
|
<ViewModal
|
|
|
|
visible={modalVisible}
|
|
|
|
record={modalRecord ?? undefined}
|
|
|
|
/>
|
|
|
|
<ResultModal
|
|
|
|
visible={modalVisible}
|
|
|
|
record={modalRecord ?? undefined}
|
|
|
|
/>
|
|
|
|
</>
|
|
|
|
)}
|
2025-08-12 14:52:14 +08:00
|
|
|
{/* 供应商品类准入审批 */}
|
|
|
|
{['supplierCategoryAccessApproval'].includes(type) && (
|
|
|
|
<>
|
|
|
|
<SupplierCategoryAccessApproval
|
|
|
|
visible={modalVisible}
|
|
|
|
record={modalRecord ?? undefined}
|
|
|
|
/>
|
|
|
|
</>
|
|
|
|
)}
|
|
|
|
{/* 供应商信息变更审批*/}
|
|
|
|
{['supplierInfoChangeApproval'].includes(type) && (
|
|
|
|
<>
|
|
|
|
<SupplierInfoChangeApproval
|
|
|
|
visible={modalVisible}
|
|
|
|
record={modalRecord}
|
|
|
|
/>
|
|
|
|
</>
|
|
|
|
)}
|
|
|
|
{/* 黑名单审批*/}
|
|
|
|
{['blacklistApproval'].includes(type) && (
|
|
|
|
<>
|
|
|
|
<BlacklistApproval
|
|
|
|
visible={modalVisible}
|
|
|
|
record={modalRecord}
|
|
|
|
/>
|
|
|
|
</>
|
|
|
|
)}
|
|
|
|
{/* 退出审批 ----*/}
|
|
|
|
{['exitApproval'].includes(type) && (
|
|
|
|
<>
|
|
|
|
<ExitApproval
|
|
|
|
visible={modalVisible}
|
|
|
|
record={modalRecord}
|
|
|
|
/>
|
|
|
|
</>
|
|
|
|
)}
|
|
|
|
{/* 品类库审批 */}
|
|
|
|
{['categoryLibraryApproval'].includes(type) && (
|
|
|
|
<>
|
|
|
|
<CategoryLibraryApproval
|
|
|
|
visible={modalVisible}
|
|
|
|
record={modalRecord}
|
|
|
|
/>
|
|
|
|
</>
|
|
|
|
)}
|
|
|
|
{/* 品类库供应商入库审批 */}
|
|
|
|
{['categoryLibrarySupplierApproval'].includes(type) && (
|
|
|
|
<>
|
|
|
|
<CategoryLibrarySupplierApproval
|
|
|
|
visible={modalVisible}
|
|
|
|
record={modalRecord}
|
|
|
|
/>
|
|
|
|
</>
|
|
|
|
)}
|
|
|
|
{/* 评价审批 */}
|
|
|
|
{['evaluationApproval'].includes(type) && (
|
|
|
|
<>
|
2025-08-12 16:26:24 +08:00
|
|
|
<EvaluationApproval
|
2025-08-12 14:52:14 +08:00
|
|
|
visible={modalVisible}
|
|
|
|
record={modalRecord}
|
2025-08-12 16:26:24 +08:00
|
|
|
/>
|
2025-08-12 14:52:14 +08:00
|
|
|
</>
|
|
|
|
)}
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-08-07 09:22:49 +08:00
|
|
|
</div>
|
|
|
|
);
|
|
|
|
};
|
|
|
|
|
|
|
|
export default ViewReviewPage;
|