3.10 工程代码同步master

This commit is contained in:
jl-zhoujl2
2022-03-10 14:24:13 +08:00
parent 41ab55a4ac
commit 62f6b07ee2
914 changed files with 143121 additions and 29110 deletions

View File

@ -1,91 +1,100 @@
import React , { useEffect,useState } from 'react';
import { Modal,Button } from 'antd';
import React, { useEffect, useState } from 'react';
import { Modal, Button } from 'antd';
import PDF from 'react-pdf-js';
import ProCard from '@ant-design/pro-card';
import FileDown from '@/utils/Download';
import FileDown from '@/utils/Download';
import {checkFileExist} from "../service"
import { checkFileExist } from "../service"
interface PreviewJgtzsModalProps {
fileId:string,
downLoadFileName:string,
modalVisible:boolean,
onCancel:any
fileId: string,
downLoadFileName: string,
modalVisible: boolean,
onCancel: any
}
const PreviewJgtzsModal: React.FC<PreviewJgtzsModalProps> = (props) => {
const {fileId,downLoadFileName,modalVisible,onCancel}=props
const { fileId, downLoadFileName, modalVisible, onCancel } = props
const [page, setPage] = useState<number>(1);
const [pages, setPages] = useState<number>(0);
const [fileExist, setFileExist] = useState<boolean>(false);
const [fileExist, setFileExist] = useState<string>("0");//0未验证1验证后有2验证后没有
useEffect(() => {
checkFileExist(fileId).then(res => {
if (res !== undefined&&res.length>0){
setFileExist(true);
}else{
setFileExist(false);
if (res !== undefined && res.length > 0) {
setFileExist("1");
} else {
setFileExist("2");
}
})
},[fileId])
const onDocumentComplete = (pages:any) => {
}, [fileId])
const onDocumentComplete = (pages: any) => {
setPage(1);
setPages(pages);
}
const handlePrevious = () => {
setPage(page-1);
setPage(page - 1);
}
const handleNext = () => {
setPage(page+1);
setPage(page + 1);
}
const downLoadFile =(fileId:string)=>{
const returnUrl = "/api/core-service-ebtp-updownload/v1/attachment/download/bid/"+fileId;
const downLoadFile = (fileId: string) => {
const returnUrl = "/api/core-service-ebtp-updownload/v1/attachment/download/bid/" + fileId;
return returnUrl;
}
const modalHeight = window.innerHeight * 96 / 100;
return (
<Modal
destroyOnClose
title={"预览"}
visible={modalVisible}
title="预览"
onCancel={() => onCancel()}
width={800}
width={"80%"}
centered
style={{ maxHeight: modalHeight }}
bodyStyle={{ maxHeight: modalHeight - 107, overflowY: 'auto' }}
footer={[
<>
<FileDown
key="downLoadFile"
type="pdf"
apiUrl={downLoadFile(fileId)}
style={{"float":"left"}}
fileName={downLoadFileName}
btnName="下载"
method="GET"
form={null}
/>,
<Button disabled={page===1} key="preBtn" onClick={() => handlePrevious()}> </Button>
<Button disabled={page===pages} key="nextBtn" onClick={() => handleNext()}> </Button>
<Button key="close" onClick={() => onCancel()}></Button>
</>
<Button key="close" onClick={() => onCancel()}></Button>
{fileExist ?
<>
<Button disabled={page === pages} key="nextBtn" onClick={() => handleNext()}> </Button>
<Button disabled={page === 1} key="preBtn" onClick={() => handlePrevious()}> </Button>
<FileDown
key="downLoadFile"
type="pdf"
apiUrl={downLoadFile(fileId)}
style={{ "float": "left" }}
fileName={downLoadFileName}
btnName="下载"
method="GET"
form={null}
/>
</>
: null}
</>
]}
>
<ProCard
layout="center"
direction="column"
ghost
<ProCard
layout="center"
direction="column"
ghost
>
{fileExist?(
{fileExist == "0" ? (
<div />
) : fileExist == "1" ? (
<>
<PDF
file={downLoadFile(fileId)}
scale={0.7}
scale={1.6}
onDocumentComplete={onDocumentComplete}
page={page}
/>
</>
):"对不起,您所查看的文件不存在,请与系统管理员联系!"}
) : "对不起,您所查看的文件不存在,请与系统管理员联系!"}
</ProCard>
</Modal>
);

View File

@ -1,13 +1,22 @@
import React, { useRef,useState } from 'react';
import { Button, Card, Col, Descriptions, message, Modal, Popconfirm, Row, Spin } from 'antd';
import ProTable, { ActionType } from '@ant-design/pro-table';
import {generateOrder, getSubPayServiceFeeList} from "../service"
import React, { useRef, useState } from 'react';
import { Button, Card, Col, Descriptions, Form, Input, message, Modal, Popconfirm, Row, Spin } from 'antd';
import ProTable, { ActionType } from '@ant-design/pro-table';
import { generateOrder, getSubPayServiceFeeList } from "../service"
import PreviewJgtzsModal from './PreviewJgtzsModal';
import {getSessionUserData,getProId} from "@/utils/session";
import { getSessionUserData, getProId, getProMethod, getDefId } from "@/utils/session";
import { digitalConversionAmount } from '@/utils/NumberUtils';
import { isNotEmpty } from '@/utils/CommonUtils';
import { cancelOrder, getByOrderId, woPay } from '@/pages/Tender/supplier/IParticipate/service';
import ExtendUpload from '@/utils/ExtendUpload';
import { commonMessage } from '@/utils/MessageUtils';
import { upoladVoucher } from '@/pages/Tender/supplier/EarnestMoney/service';
const layout = {
labelCol: { span: 7 },
wrapperCol: { span: 10 },
};
const modalHeight = window.innerHeight * 96 / 100;
const SubPayServiceFee: React.FC<any> = (props) => {
@ -19,25 +28,86 @@ const SubPayServiceFee: React.FC<any> = (props) => {
//预览窗口显示
const [previewJgtzsFormVisible, setPreviewJgtzsFormVisible] = useState<any>(false);
const [fileId, setFileId] = useState<any>("");
const [bid, bidSet] = useState<any>("");
const [downLoadFileName, setDownLoadFileName] = useState<any>("");
const clickJgtzs=(noticePdfFileId:any,fileName:any)=>{
const clickJgtzs = (noticePdfFileId: any, fileName: any) => {
setFileId(noticePdfFileId);
setDownLoadFileName(fileName);
// setFileId("8d40d4ec-cacb-4917-b5e2-80e38b3d48031");
setPreviewJgtzsFormVisible(true);
}
const [indentTableData, setIndentTableData] = useState();
//结算弹窗
const [settlementVisible, setSettlementVisible] = useState<boolean>(false);
//订单遮罩
const [orderSpinning, setOrderSpinning] = useState<boolean>(false);
//订单数据
const [orderData, setOrderData] = useState<any>({});
//订单
const [orderNumber, setOrderNumber] = useState<string>();
//订单总计金额
const [totalOrderAmount, setTotalOrderAmount] = useState<string>('');
const [indentTableData, setIndentTableData] = useState<any>([]);
//结算弹窗
const [settlementVisible, setSettlementVisible] = useState<boolean>(false);
//上传结算弹窗
const [uploadSettlementVisible, setUploadSettlementVisible] = useState<boolean>(false);
//订单遮罩
const [orderSpinning, setOrderSpinning] = useState<boolean>(false);
//订单数据
const [orderData, setOrderData] = useState<any>({});
//订单
const [orderNumber, setOrderNumber] = useState<string>();
//购物车号
const [shoppingCartId, shoppingCartIdSet] = useState<string>();
//订单总计金额
const [totalOrderAmount, setTotalOrderAmount] = useState<string>('');
//上传凭证弹窗
const [uploadDocuments, setUploadDocuments] = useState<boolean>(false);
// 2021.8.10 增加当前行数据存储
const [recordData, setRecordData] = useState<any>({});
// 2021.8.10 查看服务费通知书弹窗
const [modalVisible, setModalVisible] = useState<boolean>(false);
// 2021.12.8 上传凭证 dis
const [uploadDis, uploadDisSet] = useState<boolean>(true);
const [form] = Form.useForm();
const [fwftzsForm] = Form.useForm();
let name1 = "招标";
let name2 = "投标";
let name3 = "开标";
let name4 = "标段";
let name5 = "中标";
let TpPackageName = "";
let kbdt = false;
let proDict = getProMethod();
let defId = getDefId();
if (proDict == "procurement_mode_1" || proDict == "procurement_mode_2") {
TpPackageName = "招标";
name1 = "招标";
name2 = "投标";
name3 = "开标";
name4 = "标段";
name5 = "中标";
kbdt = true;
} else if (proDict == "procurement_mode_3") {
TpPackageName = "比选";
name1 = "采购";
name2 = "应答";
name3 = "评审开始"
name4 = "采购包";
name5 = "中选";
} else if (proDict == "procurement_mode_5" || proDict == "procurement_mode_6") {
TpPackageName = "谈判";
name1 = "采购";
name2 = "应答";
name3 = "评审开始";
name4 = "采购包";
name5 = "中选";
} else if (proDict == "procurement_mode_4") {
TpPackageName = "招募";
name1 = "招募";
name2 = "应答";
name3 = "评审开始"
name4 = "包件";
name5 = "中选";
}
const columns: any = [
{
@ -46,26 +116,14 @@ const SubPayServiceFee: React.FC<any> = (props) => {
valueType: 'index'
},
{
title: '标段名称',
title: name4 + '名称',
dataIndex: 'sectionName',
},
{
title: '标段编号',
dataIndex: 'sectionName',
},{
title: '中标服务费通知书',
dataIndex: 'option',
width: 180,
valueType: 'option',
render: (_: any, record: any) => {
return (
<>
<Button size='small' type="primary" onClick={() => clickJgtzs(record.noticePdfFileId,"服务费通知书")}></Button>
</>
)
}
title: name4 + '编号',
dataIndex: 'bidSectBizNum',
},
{
title: '支付类型',
@ -74,7 +132,7 @@ const SubPayServiceFee: React.FC<any> = (props) => {
"0": { text: '线上支付', status: '' },
"2": { text: '线下支付', status: '' },
},
},
{
title: '支付状态',
@ -87,47 +145,92 @@ const SubPayServiceFee: React.FC<any> = (props) => {
"4": { text: '确认到账', status: '' },
"-1": { text: '已失效', status: '' },
"-2": { text: '审核驳回', status: '' },
"9": { text: '异常', status: '' },
},
},{
title: '操作',
dataIndex: 'option',
width: 180,
}, {
title: '操作',
dataIndex: 'option',
valueType: 'option',
render: (_: any, record: any) => {
return (
<>
<Button size='small' type="primary" onClick={() => paymentOfBiddingServiceFee(record)}></Button>
<Button size='small' type="text" key="viewFwftzs" onClick={() => viewFwftzsClick(record)}></Button>
<Button size='small' type="text" key="payFee"
onClick={() => {
payment(record);
shoppingCartIdSet(record.shoppingCartId)
}}
>{name5}</Button>
</>
)
}
}
]
const payment = (data: any) => {
//线下支付
if (String(data.payType) === "2") {
payDeposit(data.shoppingCartId);
} else {
paymentOfBiddingServiceFee(data.shoppingCartId);
}
}
/**
* 缴纳中标服务费
* @param data
* @param data
*/
const paymentOfBiddingServiceFee = (data:any) => {
generateOrder(data.shoppingCartId).then(res => {
if (isNotEmpty(res.data)) {
const paymentOfBiddingServiceFee = (shoppingCartId: any) => {
setOrderSpinning(true);
generateOrder(shoppingCartId).then(res => {
if (res.code === 200) {
let data = res.data;
setOrderNumber(data.id);
getByOrderId(data.id).then(res => {
setOrderSpinning(false);
setIndentTableData(res.data.cartList);
setOrderData(res.data);
setTotalOrderAmount(digitalConversionAmount(res.data.amount, 2));
setSettlementVisible(true);
if (res?.code == 200) {
setIndentTableData(res?.data?.cartList);
setOrderData(res?.data);
setTotalOrderAmount(digitalConversionAmount(res?.data?.amount, 2));
setSettlementVisible(true);
}
})
}
}).finally(() => {
setOrderSpinning(false);
})
}
const reload = () => {
if(actionRef.current !== void 0){
actionRef.current.reload();
/**
* 上传中标服务费
*/
const payDeposit = (shoppingCartId: any) => {
generateOrder(shoppingCartId).then(res => {
if (res.code === 200) {
setUploadSettlementVisible(true);
// setSpinningModelLoading(true);
setOrderSpinning(true);
let id = res.data.id;
setOrderNumber(id);
form.setFieldsValue({ orderId: id, fileId: '' });
getByOrderId(id).then(res => {
// setSpinningModelLoading(false);
uploadDisSet(res?.data?.state == '2' || res?.data?.state == '3' || res?.data?.state == '4' || res?.data?.state == '-1' || res?.data?.state == '9')
bidSet(res.data?.paymentDocumentsId)
setIndentTableData(res.data?.cartList);
setOrderData(res.data);
setTotalOrderAmount(digitalConversionAmount(res.data?.amount, 2));
}).finally(() => {
setOrderSpinning(false);
})
}
});
}
const reload = () => {
if (actionRef.current !== void 0) {
actionRef.current.reload();
}
}
@ -135,140 +238,403 @@ const SubPayServiceFee: React.FC<any> = (props) => {
* 缴纳中标服务费弹出层
*/
const modalSettlement = () => {
const indentColumns: any = [
{
title: '序号',
valueType: 'index',
width: 70,
},
{
title: '项目名称',
dataIndex: 'projectName',
width: 160,
},
{
title: '费用类别',
dataIndex: 'commodityName',
width: 140,
},
{
title: '费用描述',
dataIndex: 'commodityDescribe',
},
{
title: '金额(元)',
dataIndex: 'amount',
width: 120,
render: (_: any, record: any, index: number) => digitalConversionAmount(record.amount, 2)
}
]
const indentColumns: any = [
{
title: '序号',
valueType: 'index',
width: 70,
},
{
title: '项目名称',
dataIndex: 'projectName',
width: 160,
},
{
title: '费用类别',
dataIndex: 'commodityName',
width: 140,
},
{
title: '费用描述',
dataIndex: 'commodityDescribe',
},
{
title: '金额(元)',
dataIndex: 'amount',
width: 120,
render: (_: any, record: any, index: number) => digitalConversionAmount(record.amount, 2)
},
]
/**
* 返回
*/
const settlementOnCancel = () => {
/**
* 返回
*/
const settlementOnCancel = () => {
setSettlementVisible(false);
reload();
}
/**
* 沃支付
*/
const settlementOnOk = () => {
const confirm = () => {
Modal.confirm({
title: '支付等待提示',
content: `请在新打开的页面上完成支付工作,支付成功前请不要关闭本窗口。
说明:如果因为某种原因支付失败,您可以到系统功能[我的费用支付]中继续支付,如果您是因为订单内容问题没有完成支付,可以在[我的费用支付]中进行[取消]操作。`,
okText: '确认',
cancelText: '取消',
keyboard: false,
centered: true,
onCancel: () => reload(),
onOk: () => reload()
});
};
woPay(orderNumber).then(res => {
if (isNotEmpty(res.data)) {
setSettlementVisible(false);
window.open(res.data);
confirm();
}
})
}
/**
* 取消订单
*/
const cancellationOfOrder = () => {
cancelOrder(orderNumber).then(res => {
if (res.data) {
message.success('取消成功!');
setSettlementVisible(false);
reload();
}
} else {
message.error('操作失败!');
}
})
}
const formInfo = (
<Card bordered={false}>
<Descriptions size="small" column={2}>
<Descriptions.Item label="付款人名称">{orderData?.payerName}</Descriptions.Item>
<Descriptions.Item label="收款人名称">{orderData?.agencyName}</Descriptions.Item>
<Descriptions.Item label="订单编号">{orderData?.orderNumber}</Descriptions.Item>
</Descriptions>
</Card>
);
return (
<>
<Modal visible={settlementVisible}
title="订单详细信息"
onCancel={settlementOnCancel}
width={'57%'}
closable={false}
maskClosable={false}
centered
footer={[
<Popconfirm key="popconfirm" title="确定要取消订单吗?" onConfirm={cancellationOfOrder}>
<Button key="cancellationOfOrder">
</Button>
</Popconfirm>,
<Button key="submit" type="primary" onClick={settlementOnOk}>
</Button>,
<Button key="settlementOnCancel" onClick={settlementOnCancel}>
</Button>,
]}
>
<Spin spinning={orderSpinning}>
{formInfo}
<ProTable
columns={indentColumns}
dataSource={indentTableData}
rowKey="id"
search={false}
options={false}
pagination={false}
/>
</Spin>
<Row>
<Col span={12} offset={18}>
<div style={{ margin: '8px 0px -10px 0px' }}>
{totalOrderAmount} {isNotEmpty(totalOrderAmount) ? '(元)' : ''}
</div>
</Col>
</Row>
</Modal>
</>
)
}
const viewFwftzsClick = (record: any) => {
setRecordData(record)
fwftzsForm.setFieldsValue({
"serviceCharge": record?.serviceCharge + " 元",
});
setModalVisible(true)
}
const viewFwftzsModal = () => {
return (
<Modal
destroyOnClose
title="查看服务费通知书"
visible={modalVisible}
onCancel={() => {
setRecordData({})
setModalVisible(false)
}}
width={800}
okButtonProps={{ hidden: true }}
cancelText="返回"
style={{ maxHeight: modalHeight }}
bodyStyle={{ maxHeight: modalHeight - 107, overflowY: 'auto', }}
centered
>
<Form
{...layout}
name="basic"
form={fwftzsForm}
preserve={false}
>
{recordData?.noticePdfFileId == null || recordData?.noticePdfFileId == '' ? null : (
<Form.Item
label="服务费通知书正文"
name="noticePdfFileId"
style={{ alignItems: 'center' }}
>
<Button key="noticeClick" style={{ margin: '4px 11px' }} onClick={() => clickJgtzs(recordData?.noticePdfFileId, "服务费通知书")}></Button>
</Form.Item>
)}
<Form.Item
label="服务费金额"
name="serviceCharge"
>
<Input readOnly bordered={false} />
</Form.Item>
{recordData?.fileId == null || recordData?.fileId == '' ? null : (
<Form.Item
label="附件"
name="noticeFile"
>
<ExtendUpload btnName="上传" bid={recordData?.fileId} uploadProps={{ disabled: true }}>
</ExtendUpload>
</Form.Item>
)}
</Form>
</Modal>
);
}
/**
* 沃支付
* 上传凭证弹出层
*/
const modalUploadVoucher = () => {
const indentColumns: any = [
{
title: '序号',
valueType: 'index',
width: 70,
},
{
title: '项目名称',
dataIndex: 'projectName',
width: 160,
},
{
title: '费用类别',
dataIndex: 'commodityName',
width: 140,
},
{
title: '费用描述',
dataIndex: 'commodityDescribe',
},
{
title: '金额(元)',
dataIndex: 'amount',
width: 120,
render: (_: any, record: any, index: number) => digitalConversionAmount(record.amount, 2)
},
{
title: '状态', dataIndex: 'state', width: 80,
valueEnum: {
"0": { text: '未支付', status: 'Warning' },
"1": { text: '支付中', status: 'Processing' },
"2": { text: '支付成功', status: 'Success' },
"3": { text: '待审核', status: 'Processing' },
"4": { text: '确认到账', status: 'Success' },
"-2": { text: '审核驳回', status: 'Error' },
"-1": { text: '已失效', status: 'Error' },
"9": { text: '异常', status: 'Error' },
},
},
]
/**
* 上传凭证
*/
const settlementOnOk = () => {
const confirm = () => {
Modal.confirm({
title: '支付等待提示',
content: `请在新打开的页面上完成支付工作,支付成功前请不要关闭本窗口。
说明:如果因为某种原因支付失败,您可以到系统功能[我的费用支付]中继续支付,如果您是因为订单内容问题没有完成支付,可以在[我的费用支付]中进行[取消]操作。`,
okText: '确认',
cancelText: '取消',
keyboard: false,
onCancel: () => reload(),
onOk: () => reload()
});
};
woPay(orderNumber).then(res => {
if (isNotEmpty(res.data)) {
setSettlementVisible(false);
window.open(res.data);
confirm();
const settlementOnOk = () => {
setUploadDocuments(true);
}
/**
* 返回
*/
const settlementOnCancel = () => {
setUploadSettlementVisible(false);
reload();
}
/**
* 取消订单
*/
const cancellationOfOrder = () => {
cancelOrder(orderNumber).then(res => {
if (res.data) {
reload();
message.success('取消成功!');
setUploadSettlementVisible(false);
} else {
message.error('操作失败!');
}
})
}
})
}
const formInfo = (
<Card bordered={false}>
<Descriptions size="small" column={2}>
<Descriptions.Item label="付款人名称">{orderData?.payerName}</Descriptions.Item>
<Descriptions.Item label="收款人名称">{orderData?.agencyName}</Descriptions.Item>
<Descriptions.Item label="订单编号">{orderData?.orderNumber}</Descriptions.Item>
</Descriptions>
</Card>
);
/**
* 上传确定
*/
const uploadConfirm = () => {
setUploadDocuments(true);
form.submit();
}
/**
* 上传返回
*/
const uploadReturn = () => {
setUploadDocuments(false);
}
/**
* 表单提交
* @param data
*/
const onFinish = (data: any) => {
upoladVoucher({ ...data, orderId: orderNumber }).then(res => {
if (res.code === 200) {
commonMessage(res);
}
setUploadDocuments(false);
setUploadSettlementVisible(false);
payDeposit(shoppingCartId);
reload();
})
/**
* 取消订单
*/
const cancellationOfOrder = () => {
cancelOrder(orderNumber).then(res => {
if (res.data) {
message.success('取消成功!');
setSettlementVisible(false);
reload();
} else {
message.error('操作失败!');
}
})
}
}
const formInfo = (
<Card>
<Descriptions size="small" column={2}>
<Descriptions.Item label="付款人名称">{orderData.payerName}</Descriptions.Item>
<Descriptions.Item label="收款人名称">{orderData.agencyName}</Descriptions.Item>
<Descriptions.Item label="订单编号">{orderData.orderNumber}</Descriptions.Item>
</Descriptions>
</Card>
);
return (
<>
<Modal visible={uploadSettlementVisible}
title="订单详细信息"
onCancel={settlementOnCancel}
width={'57%'}
closable={false}
maskClosable={false}
centered
footer={[
// <Popconfirm key="popconfirm" title="确定要取消订单吗?" onConfirm={cancellationOfOrder}>
// <Button key="cancellationOfOrder">
// 取消订单
// </Button>
// </Popconfirm>,
<Button key="submit" type="primary" disabled={uploadDis} loading={orderSpinning} onClick={settlementOnOk}>
</Button>,
<Button key="settlementOnCancel" onClick={settlementOnCancel}>
</Button>,
]}
>
<Spin spinning={orderSpinning}>
{formInfo}
<ProTable
columns={indentColumns}
dataSource={indentTableData}
rowKey="id"
size="small"
search={false}
options={false}
pagination={false}
/>
</Spin>
<Row>
<Col span={12} offset={18}>
<div style={{ margin: '8px 0px -10px 0px' }}>
{totalOrderAmount} {isNotEmpty(totalOrderAmount) ? '(元)' : ''}
</div>
</Col>
</Row>
</Modal>
return (
<>
<Modal visible={settlementVisible}
title="订单详细信息"
onCancel={settlementOnCancel}
width={'57%'}
closable={false}
maskClosable={false}
footer={[
<Popconfirm key="popconfirm" title="确定要取消订单吗?" onConfirm={cancellationOfOrder}>
<Button key="cancellationOfOrder">
</Button>
</Popconfirm>,
<Button key="submit" type="primary" onClick={settlementOnOk}>
</Button>,
<Button key="settlementOnCancel" onClick={settlementOnCancel}>
</Button>,
]}
>
<Spin spinning={orderSpinning}>
{formInfo}
<ProTable
columns={indentColumns}
dataSource={indentTableData}
rowKey="id"
search={false}
options={false}
pagination={false}
/>
</Spin>
<Row>
<Col span={12} offset={18}>
<div style={{ margin: '8px 0px -10px 0px' }}>
{totalOrderAmount} {isNotEmpty(totalOrderAmount) ? '(元)' : ''}
</div>
</Col>
</Row>
</Modal>
<Modal
destroyOnClose
visible={uploadDocuments}
title="上传凭证"
closable={false}
maskClosable={false}
centered
footer={[
<Button key="uploadConfirm" type="primary" onClick={uploadConfirm}>
</Button>,
<Button key="uploadReturn" onClick={uploadReturn}>
</Button>,
]}
>
<h2></h2>
</>
)
<Form
labelCol={{ span: 7 }}
form={form}
onFinish={onFinish}
>
<Form.Item name="orderId" hidden>
<Input />
</Form.Item>
<Form.Item
label="电汇底联影印件"
name="fileId"
rules={[{
required: true,
message: '请上传!'
}]}
>
<ExtendUpload bid={bid} btnName="上传" uploadProps={{ name: "fileId" }} maxCount={1} />
</Form.Item>
</Form>
</Modal>
</>
)
}
return (
<>
<ProTable
@ -278,7 +644,7 @@ const SubPayServiceFee: React.FC<any> = (props) => {
options={false}
columns={columns}
request={(params) =>
getSubPayServiceFeeList({...params,pageNo:params.current,projectId}).then((res) => {
getSubPayServiceFeeList({ ...params, pageNo: params.current, projectId }).then((res) => {
const result = {
data: res.data?.records,
total: res.data?.total,
@ -289,8 +655,10 @@ const SubPayServiceFee: React.FC<any> = (props) => {
return result;
})
}
size="small"
pagination={{ defaultPageSize: 10, showSizeChanger: false }}
/>
{previewJgtzsFormVisible?
{previewJgtzsFormVisible ?
<PreviewJgtzsModal
fileId={fileId}
downLoadFileName={downLoadFileName}
@ -301,8 +669,10 @@ const SubPayServiceFee: React.FC<any> = (props) => {
}}
>
</PreviewJgtzsModal>
:null}
: null}
{modalSettlement()}
{modalUploadVoucher()}
{viewFwftzsModal()}
</>
);
};

View File

@ -1,100 +1,227 @@
import React, { useRef,useState } from 'react';
import { Button } from 'antd';
import ProTable, { ActionType } from '@ant-design/pro-table';
import {getSubViewNoticeList} from "../service"
import React, { useRef, useState } from 'react';
import { Button, Form, Input, Modal, Space } from 'antd';
import ProTable, { ActionType } from '@ant-design/pro-table';
import { getSubViewNoticeList, getJgtzsValues } from '../service';
import PreviewJgtzsModal from './PreviewJgtzsModal';
import {getSessionUserData,getProId} from "@/utils/session";
import { getProId, getProMethod, getDefId } from '@/utils/session';
import { getURLInformation } from '@/utils/CommonUtils';
import ExtendUpload from "@/utils/ExtendUpload";
const { TextArea } = Input;
const layout = {
labelCol: { span: 7 },
wrapperCol: { span: 10 },
};
const modalHeight=window.innerHeight*96/100;
const SubViewNotice: React.FC<any> = (props) => {
const projectId = getProId();
// const projectId = "1111111";
let roomType: string | null = '2';
if (
getURLInformation('roomType') !== undefined &&
getURLInformation('roomType') !== null &&
getURLInformation('roomType') !== ''
) {
roomType = getURLInformation('roomType');
}
const actionRef = useRef<ActionType>();
//预览窗口显示
const [previewJgtzsFormVisible, setPreviewJgtzsFormVisible] = useState<any>(false);
const [fileId, setFileId] = useState<any>("");
const [downLoadFileName, setDownLoadFileName] = useState<any>("");
const [fileId, setFileId] = useState<any>('');
const [downLoadFileName, setDownLoadFileName] = useState<any>('');
const [modalVisible, setModalVisible] = useState<any>(false);
const [form] = Form.useForm();
const [filePath, setFilePath] = useState<any>(); // 文件回显
const [recordData, setRecordData] = useState<any>({}); // 2021.8.9 增加当前行数据存储
const [recordName, setRecordName] = useState<any>('结果通知书'); // 2021.8.9 增加当前行中标(中选)通知书或结果通知书名称存储
const clickJgtzs=(noticePdfFileId:any,fileName:any)=>{
const clickJgtzs = (noticePdfFileId: any, fileName: any) => {
setFileId(noticePdfFileId);
setDownLoadFileName(fileName);
// setFileId("8d40d4ec-cacb-4917-b5e2-80e38b3d4803");
setPreviewJgtzsFormVisible(true);
};
const lookReason = (val: any,name: any) => { //查看中标(中选)通知书或者结果通知书
getJgtzsValues(val.id).then((res) => {
if (res?.success === true && res?.code == 200) {
setModalVisible(true)
form.setFieldsValue({
"noticeText": res.data.noticeText,
});
setFilePath(res.data.fileId)
setRecordName(name)
setRecordData(val)
}
});
}
let name1 = "招标";
let name2 = "投标";
let name3 = "开标";
let name4 = "标段";
let name5 = "中标";
let TpPackageName = "";
let kbdt = false;
let proDict = getProMethod();
let defId = getDefId();
if (proDict == "procurement_mode_1" || proDict == "procurement_mode_2") {
TpPackageName = "招标";
name1 = "招标";
name2 = "投标";
name3 = "开标";
name4 = "标段";
name5 = "中标";
kbdt = true;
} else if (proDict == "procurement_mode_3") {
TpPackageName = "比选";
name1 = "采购";
name2 = "应答";
name3 = "评审开始"
name4 = "采购包";
name5 = "中选";
} else if (proDict == "procurement_mode_5" || proDict == "procurement_mode_6") {
TpPackageName = "谈判";
name1 = "采购";
name2 = "应答";
name3 = "评审开始";
name4 = "采购包";
name5 = "中选";
} else if (proDict == "procurement_mode_4") {
TpPackageName = "招募";
name1 = "招募";
name2 = "应答";
name3 = "评审开始"
name4 = "包件";
name5 = "中选";
}
const columns: any = [
{
title: '序号',
dataIndex: 'sortNumber',
valueType: 'index'
valueType: 'index',
},
{
title: '标段名称',
title: name4 + '名称',
dataIndex: 'sectionName',
},
{
title: '标段编号',
title: name4 + '编号',
dataIndex: 'bidSectBizNum',
},{
title: '操作',
dataIndex: 'option',
width: 180,
},
{
title: '操作',
dataIndex: 'option',
width: 320,
valueType: 'option',
render: (_: any, record: any) => {
let jgBtnName = "预览结果通知书";
let fileName="";
if (record.noticeType==="1"){
jgBtnName = "预览中标通知书";
fileName="中标通知书";
}else{
jgBtnName = "预览结果通知书";
fileName="结果通知书";
let fileName = '';
if (record.noticeType === '1') {
fileName = name5 + '通知书';
} else {
fileName = '结果通知书';
}
return (
<>
<Button size='small' type="primary" onClick={() => clickJgtzs(record.noticePdfFileId,fileName)}>{jgBtnName}</Button>
<Button key="viewJgtzs" size="small" type="text" onClick={() => lookReason(record,fileName)}>{fileName}</Button>
</>
)
}
}
]
);
},
},
];
return (
<>
<ProTable
rowKey="id"
actionRef={actionRef}//action触发后更新表格
actionRef={actionRef} //action触发后更新表格
search={false}
options={false}
columns={columns}
request={(params) =>
getSubViewNoticeList({...params,pageNo:params.current,projectId}).then((res) => {
const result = {
data: res.data.records,
total: res.data.total,
success: res.success,
pageSize: res.data.size,
current: res.data.current
}
return result;
})
getSubViewNoticeList({ ...params, pageNo: params.current, projectId, roomType }).then(
(res) => {
const result = {
data: res.data.records,
total: res.data.total,
success: res.success,
pageSize: res.data.size,
current: res.data.current,
};
return result;
},
)
}
size="small"
pagination={{defaultPageSize: 10,showSizeChanger: false}}
/>
{previewJgtzsFormVisible?
{previewJgtzsFormVisible ? (
<PreviewJgtzsModal
fileId={fileId}
downLoadFileName={downLoadFileName}
modalVisible={previewJgtzsFormVisible}
onCancel={() => {
setFileId("");
setFileId('');
setPreviewJgtzsFormVisible(!previewJgtzsFormVisible);
}}
></PreviewJgtzsModal>
) : null}
<Modal
destroyOnClose
title={`查看${recordName}`}
visible={modalVisible}
onCancel={() => {
setRecordData({})
setRecordName('结果通知书')
setModalVisible(false)
}}
width={800}
okButtonProps={{hidden: true}}
cancelText="返回"
style={{ maxHeight: modalHeight }}
bodyStyle={{ maxHeight: modalHeight - 107, overflowY: 'auto', }}
centered
>
<Form
{...layout}
name="basic"
form={form}
preserve={false}
>
</PreviewJgtzsModal>
:null}
{recordData?.noticePdfFileId == null || recordData?.noticePdfFileId == '' ? null : (
<Form.Item
label={`${recordName}正文`}
name="noticePdfFileId"
style={{alignItems: 'center'}}
>
<Button key="noticeClick" style={{margin:'4px 11px'}} onClick={() => clickJgtzs(recordData?.noticePdfFileId,recordName)}></Button>
</Form.Item>
)}
<Form.Item
label={`${recordName}说明`}
name="noticeText"
>
<TextArea readOnly bordered={false} autoSize={{ minRows: 1 }} />
</Form.Item>
{recordData?.fileId == null || recordData?.fileId == '' ? null : (
<Form.Item
label="附件"
name="noticeFile"
>
<ExtendUpload btnName="上传" bid={filePath} uploadProps={{ disabled: true }}>
</ExtendUpload>
</Form.Item>
)}
</Form>
</Modal>
</>
);
};

View File

@ -13,7 +13,7 @@ const ViewNotice: React.FC<any> = (props) => {
return (
<>
<Card bordered={false}>
<Card bordered={false} bodyStyle={{padding: '0px 24px'}}>
<Tabs
defaultActiveKey="SubViewNotice"
onChange={(key)=>setActiveKey(key)}

View File

@ -3,7 +3,6 @@ import request from '@/utils/request';
//获取通知书列表
export async function getSubViewNoticeList(params:any) {
console.log(params);
return request('/api/biz-service-ebtp-calibration/v1/bizbidresultnotice/getSupplierPagelist',{
method:'POST' ,
data:{
@ -35,3 +34,13 @@ export async function checkFileExist(fileId?:any) {
export function generateOrder(id:any){
return request('/api/biz-service-ebtp-expenses/v1/bizbidshoppingcart/generateOrder?shoppingCartId=' + id);
}
/**
* 获取单条结果通知书数据
* @param id
*/
export async function getJgtzsValues(jgtzsId?:any) {
return request('/api/biz-service-ebtp-calibration/v1/bizbidresultnotice/getById/'+jgtzsId,{
method:'GET' ,
})
}