更新版本库

This commit is contained in:
ajaxfan
2021-01-16 11:29:42 +08:00
parent b42e0c1ddd
commit ff889c3db4
352 changed files with 39993 additions and 15507 deletions

View File

@ -0,0 +1,94 @@
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 {checkFileExist} from "../service"
interface PreviewJgtzsModalProps {
fileId:string,
downLoadFileName:string,
modalVisible:boolean,
onCancel:any
}
const PreviewJgtzsModal: React.FC<PreviewJgtzsModalProps> = (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);
useEffect(() => {
checkFileExist(fileId).then(res => {
if (res !== undefined&&res.length>0){
setFileExist(true);
}else{
setFileExist(false);
}
})
},[fileId])
const onDocumentComplete = (pages:any) => {
setPage(1);
setPages(pages);
}
const handlePrevious = () => {
setPage(page-1);
}
const handleNext = () => {
setPage(page+1);
}
const downLoadFile =(fileId:string)=>{
const returnUrl = "/api/core-service-ebtp-updownload/v1/attachment/download/bid/"+fileId;
return returnUrl;
}
return (
<Modal
destroyOnClose
title={"预览"}
visible={modalVisible}
onCancel={() => onCancel()}
width={800}
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>
</>
]}
>
<ProCard
layout="center"
direction="column"
ghost
>
{fileExist?(
<>
<PDF
file={downLoadFile(fileId)}
scale={0.7}
onDocumentComplete={onDocumentComplete}
page={page}
/>
</>
):"对不起,您所查看的文件不存在,请与系统管理员联系!"}
</ProCard>
</Modal>
);
};
export default PreviewJgtzsModal;

View File

@ -0,0 +1,310 @@
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 PreviewJgtzsModal from './PreviewJgtzsModal';
import {getSessionUserData,getProId} from "@/utils/session";
import { digitalConversionAmount } from '@/utils/NumberUtils';
import { isNotEmpty } from '@/utils/CommonUtils';
import { cancelOrder, getByOrderId, woPay } from '@/pages/Tender/supplier/IParticipate/service';
const SubPayServiceFee: React.FC<any> = (props) => {
const projectId = getProId();
// const projectId = "1111111";
const actionRef = useRef<ActionType>();
//预览窗口显示
const [previewJgtzsFormVisible, setPreviewJgtzsFormVisible] = useState<any>(false);
const [fileId, setFileId] = useState<any>("");
const [downLoadFileName, setDownLoadFileName] = useState<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 columns: any = [
{
title: '序号',
dataIndex: 'sortNumber',
valueType: 'index'
},
{
title: '标段名称',
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: '支付类型',
dataIndex: 'payType',
valueEnum: {
"0": { text: '线上支付', status: '' },
"2": { text: '线下支付', status: '' },
},
},
{
title: '支付状态',
dataIndex: 'payState',
valueEnum: {
"0": { text: '未支付', status: '' },
"1": { text: '支付中', status: '' },
"2": { text: '支付成功', status: '' },
"3": { text: '到账待审核', status: '' },
"4": { text: '确认到账', status: '' },
"-1": { text: '已失效', status: '' },
"-2": { text: '审核驳回', status: '' },
},
},{
title: '操作',
dataIndex: 'option',
width: 180,
valueType: 'option',
render: (_: any, record: any) => {
return (
<>
<Button size='small' type="primary" onClick={() => paymentOfBiddingServiceFee(record)}></Button>
</>
)
}
}
]
/**
* 缴纳中标服务费
* @param data
*/
const paymentOfBiddingServiceFee = (data:any) => {
generateOrder(data.shoppingCartId).then(res => {
if (isNotEmpty(res.data)) {
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);
})
}
})
}
const reload = () => {
if(actionRef.current !== void 0){
actionRef.current.reload();
}
}
/**
* 缴纳中标服务费弹出层
*/
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 settlementOnCancel = () => {
setSettlementVisible(false);
reload();
}
/**
* 沃支付
*/
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 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={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>
</>
)
}
return (
<>
<ProTable
rowKey="id"
actionRef={actionRef}//action触发后更新表格
search={false}
options={false}
columns={columns}
request={(params) =>
getSubPayServiceFeeList({...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;
})
}
/>
{previewJgtzsFormVisible?
<PreviewJgtzsModal
fileId={fileId}
downLoadFileName={downLoadFileName}
modalVisible={previewJgtzsFormVisible}
onCancel={() => {
setFileId("");
setPreviewJgtzsFormVisible(!previewJgtzsFormVisible);
}}
>
</PreviewJgtzsModal>
:null}
{modalSettlement()}
</>
);
};
export default SubPayServiceFee;

View File

@ -0,0 +1,102 @@
import React, { useRef,useState } from 'react';
import { Button } from 'antd';
import ProTable, { ActionType } from '@ant-design/pro-table';
import {getSubViewNoticeList} from "../service"
import PreviewJgtzsModal from './PreviewJgtzsModal';
import {getSessionUserData,getProId} from "@/utils/session";
const SubViewNotice: React.FC<any> = (props) => {
const projectId = getProId();
// const projectId = "1111111";
const actionRef = useRef<ActionType>();
//预览窗口显示
const [previewJgtzsFormVisible, setPreviewJgtzsFormVisible] = useState<any>(false);
const [fileId, setFileId] = useState<any>("");
const [downLoadFileName, setDownLoadFileName] = useState<any>("");
const clickJgtzs=(noticePdfFileId:any,fileName:any)=>{
setFileId(noticePdfFileId);
setDownLoadFileName(fileName);
// setFileId("8d40d4ec-cacb-4917-b5e2-80e38b3d4803");
setPreviewJgtzsFormVisible(true);
}
const columns: any = [
{
title: '序号',
dataIndex: 'sortNumber',
valueType: 'index'
},
{
title: '标段名称',
dataIndex: 'sectionName',
},
{
title: '标段编号',
dataIndex: 'bidSectBizNum',
},{
title: '操作',
dataIndex: 'option',
width: 180,
valueType: 'option',
render: (_: any, record: any) => {
let jgBtnName = "预览结果通知书";
let fileName="";
if (record.noticeType==="1"){
jgBtnName = "预览中标通知书";
fileName="中标通知书";
}else{
jgBtnName = "预览结果通知书";
fileName="结果通知书";
}
return (
<>
<Button size='small' type="primary" onClick={() => clickJgtzs(record.noticePdfFileId,fileName)}>{jgBtnName}</Button>
</>
)
}
}
]
return (
<>
<ProTable
rowKey="id"
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;
})
}
/>
{previewJgtzsFormVisible?
<PreviewJgtzsModal
fileId={fileId}
downLoadFileName={downLoadFileName}
modalVisible={previewJgtzsFormVisible}
onCancel={() => {
setFileId("");
setPreviewJgtzsFormVisible(!previewJgtzsFormVisible);
}}
>
</PreviewJgtzsModal>
:null}
</>
);
};
export default SubViewNotice;

View File

@ -1,195 +1,37 @@
import React, {useEffect, useState} from 'react';
import {Button, Card, Collapse, Divider, List,Modal} from "antd";
import ProTable from "@ant-design/pro-table";
import {getBidAssessmentResultsList} from "./service"
import React, { useState } from 'react';
import { Card, Tabs} from "antd";
interface ResultNoticeProps {
projectId: "1331563848498413568";/*?项目id*/
}
const ResultNotice: React.FC<ResultNoticeProps> = (props) => {
const [pageloading, setPageloading] = useState<boolean>(false);
const [ListData, setListData] = useState<any>();
const [zbtzsFormVisible, setZbtzsFormVisible] = useState<any>(false);
const [jgtzsFormVisible, setJgtzsFormVisible] = useState<any>(false);
const [activeKey, setActiveKey] = useState<any>([]);
import SubViewNotice from './components/SubViewNotice';
import SubPayServiceFee from './components/SubPayServiceFee';
const columns: any = [
{
title: '排名',
dataIndex: 'xuhao',
valueType: 'index'
},
{
title: '应答人',
dataIndex: 'mingcheng',
valueType: 'index'
},
{
title: '通知书类别',
dataIndex: 'xuhao',
valueType: 'index'
},
{
title: '价格',
dataIndex: 'mingcheng',
valueType: 'index'
},
{
title: '状态',
dataIndex: 'xuhao',
valueType: 'index'
},
{
title: '中选服务费通知书',
dataIndex: 'mingcheng',
valueType: 'index'
},
{
title: '备注',
dataIndex: 'xuhao',
valueType: 'index'
},{
title: '操作',
dataIndex: 'option',
width: 180,
valueType: 'option',
render: (_: any, record: any) => {
return (
<>
<Button size='small' type="primary" onClick={() => { }}></Button>
<Button size='small' type="primary" onClick={() => { }}></Button>
</>
)
}
},
]
const data: any = [
{
mingcheng: "ddddd",
},
{
mingcheng: "ssss",
}
const ViewNotice: React.FC<any> = (props) => {
]
const changeActiveKey=(param:string)=>{
console.log(activeKey);
let arr=activeKey.concat();
if(arr.indexOf(param) > -1){
arr.splice(arr.indexOf(param), 1);
} else{
arr.push(param);
}
setActiveKey([...arr]);
}
useEffect(() => {
getBidAssessmentResultsList("1111111").then(res => {
if (res != undefined && res.message == "success"){
setListData(res.data);
}
})
}, [props.projectId])
const {Panel} = Collapse;
const {TabPane} = Tabs;
const [activeKey, setActiveKey] = useState<any>("SubViewNotice");
return (
<>
<List
grid={{
gutter: 16,
xs: 1,
sm: 1,
md: 1,
lg: 1,
xl: 1,
xxl: 1,
}}
itemLayout="vertical"
dataSource={ListData}
renderItem={item => (
<List.Item>
<Card
title={item.sectionName}
extra={
<>
<Button onClick={() => changeActiveKey(item.sectionId)}> /</Button>
</>
}
>
<Collapse
activeKey={activeKey}
bordered={false}
ghost={true}
>
<Panel
header={""} showArrow={false} key={item.sectionId}>
<List
grid={{
gutter: 16,
xs: 1,
sm: 1,
md: 1,
lg: 1,
xl: 1,
xxl: 1,
}}
itemLayout="vertical"
dataSource={item.assesList}
renderItem={item1 => (
<List.Item>
<ProTable
bordered={true}
loading={pageloading}
search={false}
options={false}
columns={columns}
dataSource={item1.reviewList}
toolbar={{
title: "第:"+item1.sectionId+"轮",
}}
toolBarRender={() => [
<>
<Button type="primary"> </Button>
<Button> </Button>
<Button> </Button>
</>
]}
/>
</List.Item>
)}
>
</List>
</Panel>
</Collapse>
</Card>
</List.Item>
<Card bordered={false}>
<Tabs
defaultActiveKey="SubViewNotice"
onChange={(key)=>setActiveKey(key)}
>
)}
/>
<Modal
destroyOnClose
title={"编辑中标通知书"}
visible={zbtzsFormVisible}
onCancel={() => {
setZbtzsFormVisible(false)
}}
onOk={() => {
setZbtzsFormVisible(false)
}}
okText="保存"
cancelText="取消"
width={800}
>
</Modal>
<TabPane tab="查看结果通知书" key="SubViewNotice">
{activeKey==="SubViewNotice"?
<SubViewNotice />
:null}
</TabPane>
<TabPane tab="查看服务费通知书" key="SubPayServiceFee">
{activeKey==="SubPayServiceFee"?
<SubPayServiceFee />
:null}
</TabPane>
</Tabs>
</Card>
</>
)
}
export default ResultNotice
export default ViewNotice

View File

@ -1,12 +1,37 @@
import request from '@/utils/request';
// import {demo} from './data.d';
export async function getBidAssessmentResultsList(params?:any) {
alert(params)
return request('/api/biz-service-ebtp-calibration/v1/bizbidreviewresult/getSectionAsseslist',{
method:'post' ,
//获取通知书列表
export async function getSubViewNoticeList(params:any) {
console.log(params);
return request('/api/biz-service-ebtp-calibration/v1/bizbidresultnotice/getSupplierPagelist',{
method:'POST' ,
data:{
"projectId":params
...params
}
})
}
//获取服务费通知书列表
export async function getSubPayServiceFeeList(params:any) {
return request('/api/biz-service-ebtp-calibration/v1/bizbidwinningnotice/getSupplierPagelist',{
method:'POST' ,
data:{
...params
}
})
}
//检验文档中心是否存在该文档
export async function checkFileExist(fileId?:any) {
return request('/api/core-service-ebtp-updownload/v1/attachment/find/bid/'+fileId,{
method:'GET' ,
})
}
/**
* 缴纳中标服务费
* @param id
*/
export function generateOrder(id:any){
return request('/api/biz-service-ebtp-expenses/v1/bizbidshoppingcart/generateOrder?shoppingCartId=' + id);
}