3.10 工程代码同步master
This commit is contained in:
211
src/pages/Evaluation/FileDecode/index.tsx
Normal file
211
src/pages/Evaluation/FileDecode/index.tsx
Normal file
@ -0,0 +1,211 @@
|
||||
import React, { useEffect, useState } from "react";
|
||||
import ProTable, { ProColumns, } from "@ant-design/pro-table";
|
||||
import { Button, Card, message, Modal, Progress, Spin } from "antd";
|
||||
import { getRoomId, } from '@/utils/session';
|
||||
import { getList, jieMi, jmRate } from "./service";
|
||||
import { ipassDecrypt } from "@/utils/IpassVerification";
|
||||
import { AsymDecrypt } from "@/utils/zwPlugin";
|
||||
const FileDecode: React.FC<{}> = () => {
|
||||
const [spin, spinSet] = useState<any>(false);
|
||||
const [dis, disSet] = useState<boolean>(false);
|
||||
const [count, countSet] = useState<number>(0);
|
||||
const [tdocId, tdocIdSet] = useState<any>('');//tdocId
|
||||
const [rateVis, handleRateVis] = useState<boolean>(false); //进度显隐
|
||||
const [rateCount, rateCountSet] = useState<number>(0); //查询进度启动器
|
||||
const [jmFileCount, jmFileCountSet] = useState<number>(0);//文件总数
|
||||
const [jmComplete, jmCompleteSet] = useState<number>(0);//已解密成功
|
||||
const [jm, jmSet] = useState<boolean>();//是否解密 控制解密按钮
|
||||
const [jmWait, jmWaitSet] = useState<number>(0);//未解密
|
||||
const [jmFail, jmFailSet] = useState<number>(0);//解密失败
|
||||
const [dataSource, dataSourceSet] = useState<any>([{}]);
|
||||
//页面加载
|
||||
useEffect(() => {
|
||||
if (!rateVis) {
|
||||
getPage();
|
||||
setTimeout(async () => {
|
||||
countSet(count + 1);
|
||||
}, 2000);
|
||||
}
|
||||
}, [count]);
|
||||
//查询进度
|
||||
useEffect(() => {
|
||||
if (rateVis) {
|
||||
queryRate();
|
||||
setTimeout(async () => {
|
||||
rateCountSet(rateCount + 1);
|
||||
}, 2000);
|
||||
}
|
||||
}, [rateCount]);
|
||||
//查页面数据
|
||||
async function getPage() {
|
||||
let tdocIdT = '';
|
||||
let jm = false;
|
||||
await getList({ assessRoomId: getRoomId(), type: 1 }).then((res) => {
|
||||
if (res?.code == 200 && res?.data != undefined) {
|
||||
dataSourceSet(res.data);
|
||||
jmSet(res.data[res.data.length - 1].decryptStatus);
|
||||
tdocIdT = res.data[res.data.length - 1].id;
|
||||
}
|
||||
})
|
||||
if (!rateVis) {
|
||||
let all: number, comp: number, fail: number, wait: number = 0;
|
||||
await jmRate({ tdocId: tdocIdT }).then((res) => {
|
||||
if (res?.code == 200) {
|
||||
let data = res.data;
|
||||
all = data['-1'] != undefined ? parseInt(data['-1']) : 0;
|
||||
comp = data['1'] != undefined ? parseInt(data['1']) : 0;
|
||||
fail = data['2'] != undefined ? parseInt(data['2']) : 0;
|
||||
wait = data['0'] != undefined ? parseInt(data['0']) : 0;
|
||||
}
|
||||
jmCompleteSet(comp);
|
||||
jmFailSet(fail);
|
||||
jmFileCountSet(all);
|
||||
jmWaitSet(wait);
|
||||
});
|
||||
}
|
||||
spinSet(false);
|
||||
}
|
||||
//查询解密进度
|
||||
async function queryRate() {
|
||||
let all: number, comp: number, fail: number, wait: number = 0;
|
||||
await jmRate({ tdocId: tdocId }).then((res) => {
|
||||
if (res?.code == 200) {
|
||||
let data = res.data;
|
||||
all = data['-1'] != undefined ? parseInt(data['-1']) : 0;
|
||||
comp = data['1'] != undefined ? parseInt(data['1']) : 0;
|
||||
fail = data['2'] != undefined ? parseInt(data['2']) : 0;
|
||||
wait = data['0'] != undefined ? parseInt(data['0']) : 0;
|
||||
}
|
||||
jmCompleteSet(comp);
|
||||
jmFailSet(fail);
|
||||
jmFileCountSet(all);
|
||||
jmWaitSet(wait);
|
||||
});
|
||||
}
|
||||
const columns: ProColumns<any>[] = [
|
||||
{ title: '序号', dataIndex: 'index', valueType: 'index', width: 80 },
|
||||
{
|
||||
title: '应答轮次', width: 80,
|
||||
render: (_: any, record: any) => {
|
||||
if (JSON.stringify(record) == "{}") {
|
||||
return '';
|
||||
} else {
|
||||
return record?.registerInfoVOList[0].reviewTurnSort;
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '解密状态', width: 80,
|
||||
render: (_: any, record: any) => {
|
||||
if (JSON.stringify(record) == "{}") {
|
||||
return '';
|
||||
} else {
|
||||
const status = record?.registerInfoVOList[0].decryptStatus;
|
||||
if (status == null || status === '1') { return '未解密' }
|
||||
else if (status === '2') { return '解密成功' }
|
||||
else if (status === '3') { return '解密失败' }
|
||||
else { return '' }
|
||||
}
|
||||
}
|
||||
},
|
||||
{ title: '解密截止时间', dataIndex: 'decryptEndDate', valueType: 'dateTime', width: 80 },
|
||||
{
|
||||
title: '解密时间', valueType: 'dateTime', width: 80,
|
||||
render: (_: any, record: any) => {
|
||||
if (JSON.stringify(record) == "{}") {
|
||||
return '';
|
||||
} else {
|
||||
const date = record?.registerInfoVOList[0].decryptTime;
|
||||
return date;
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '操作', width: 80,
|
||||
render: (_: any, record: any) => {
|
||||
if (JSON.stringify(record) !== "{}" && jm) {
|
||||
const status = record?.registerInfoVOList[0].decryptStatus;
|
||||
if (record?.decryptEndDate !== '' && record?.decryptEndDate !== null && status !== '2') {
|
||||
return <Button type='primary' disabled={dis} onClick={async () => {
|
||||
spinSet(true); disSet(true);
|
||||
tdocIdSet(record?.id)
|
||||
let secretKeyMap: any = {};
|
||||
if (record.tfileList.length > 0) {
|
||||
if (ipassDecrypt(record.tfileList[0].secretKey) != null) {
|
||||
await record.tfileList.map((item: any) => {
|
||||
secretKeyMap[item.id] = AsymDecrypt(item.secretKey);
|
||||
})
|
||||
}
|
||||
} else {
|
||||
message.error('没有可以解密的文件!')
|
||||
}
|
||||
if (Object.keys(secretKeyMap).length > 0) {
|
||||
const success = await jieMi({ tdocId: record?.id, secretKeyMap: secretKeyMap }).then((res) => {//roomType: roomType
|
||||
return res.success
|
||||
});
|
||||
if (success) {
|
||||
handleRateVis(true);
|
||||
rateCountSet(rateCount + 1);
|
||||
}
|
||||
}
|
||||
spinSet(false); disSet(false);
|
||||
}}>解密</Button>
|
||||
} else {
|
||||
if (status === '2') {
|
||||
return ''
|
||||
} else {
|
||||
return '请等待项目经理开启解密'
|
||||
}
|
||||
}
|
||||
} else { return '' }
|
||||
}
|
||||
},
|
||||
];
|
||||
//解密进度
|
||||
const jmjd = () => {
|
||||
return (
|
||||
<Modal
|
||||
title="解密进度"
|
||||
width={'800px'}
|
||||
destroyOnClose
|
||||
centered
|
||||
bodyStyle={{ padding: '32px 40px 48px', overflowY: 'auto' }}
|
||||
visible={rateVis}
|
||||
footer={false}
|
||||
onCancel={() => { spinSet(true); countSet(count + 1); handleRateVis(false); }}
|
||||
>
|
||||
<Card bordered={false} style={{ textAlign: 'center', fontSize: '30px', }}>
|
||||
{jmComplete + jmFail == jmFileCount ? `解 密 结 束` : `正 在 解 密...`}
|
||||
</Card>
|
||||
<Progress percent={Math.floor((jmComplete / jmFileCount) * 100)} status="active" />
|
||||
<div style={{ textAlign: "center" }}>
|
||||
文件总数:<span style={{ fontSize: 30, color: 'rgb(0,144,255)' }}>{jmFileCount}</span> 个
|
||||
</div>
|
||||
<div style={{ textAlign: "center" }}>
|
||||
解密成功:<span style={{ fontSize: 30, color: 'rgb(61,169,92)' }}>{jmComplete}</span> 个,
|
||||
{/* 排队解密中:<span style={{ fontSize: 30, color: 'red' }}>{100 - rate}</span> 个, */}
|
||||
尚未解密:<span style={{ fontSize: 30, color: 'rgb(0,144,255)' }}>{jmWait}</span> 个,
|
||||
解密失败:<span style={{ fontSize: 30, color: 'red' }}>{jmFail}</span> 个
|
||||
</div>
|
||||
</Modal>
|
||||
)
|
||||
}
|
||||
return (
|
||||
<Card>
|
||||
<Spin spinning={spin}>
|
||||
{/* {ipassDecode ? <div key='jmsxTip' className='mR8 xsy-red floatLeft h32 ftSz20' hidden={endTimeVis}>投标人解密时限: {endTime}</div> : null} */}
|
||||
<ProTable
|
||||
columns={columns}//表格
|
||||
search={false}
|
||||
size={'small'}
|
||||
rowSelection={false}
|
||||
options={false}
|
||||
pagination={false}//默认显示条数
|
||||
dataSource={dataSource}
|
||||
/>
|
||||
{jmjd()}
|
||||
</Spin>
|
||||
</Card>
|
||||
)
|
||||
}
|
||||
export default FileDecode;
|
29
src/pages/Evaluation/FileDecode/service.ts
Normal file
29
src/pages/Evaluation/FileDecode/service.ts
Normal file
@ -0,0 +1,29 @@
|
||||
import request from '@/utils/request';
|
||||
|
||||
//获取列表
|
||||
export async function getList(params?: any) {
|
||||
return request(`/api/biz-service-ebtp-tender/v1/supplier_register/select_supplier_by_roomid_and_turnsort`,{
|
||||
params:params
|
||||
});
|
||||
}
|
||||
|
||||
//解密
|
||||
export async function jieMi(params?: any) {
|
||||
return request(`/api/biz-service-ebtp-resps/v1/tfile/executeDecryptBySupplier`,{
|
||||
method:'POST',
|
||||
data:{
|
||||
...params
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
//解密进度
|
||||
export async function jmRate(params?: any) {
|
||||
let url = '/api/biz-service-ebtp-resps/v1/tfile/getDecryptProgressBySupplier';
|
||||
return request(url,{
|
||||
method:'POST',
|
||||
data:{
|
||||
...params
|
||||
}
|
||||
});
|
||||
}
|
Reference in New Issue
Block a user