更新版本库
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@ -1,148 +1,159 @@
|
||||
import { UnorderedListOutlined } from "@ant-design/icons"
|
||||
import {UnorderedListOutlined} from "@ant-design/icons"
|
||||
import ProTable, {ActionType, ProColumns} from "@ant-design/pro-table"
|
||||
import {Button, Card, Divider, Drawer, message, Modal, Spin, Table} from "antd"
|
||||
import React, {useEffect, useRef, useState} from "react"
|
||||
import BiddingAnnouncement from "./BiddingAnnouncement"
|
||||
import {GetfileList, GetNoticeList, removeNotice, releaseNotice, releaseNoticeAgain, ApprovalNotice} from "../service"
|
||||
import {
|
||||
GetfileList,
|
||||
GetNoticeList,
|
||||
removeNotice,
|
||||
releaseNotice,
|
||||
releaseNoticeAgain,
|
||||
ApprovalNotice,
|
||||
GetNoticeUsablePackage
|
||||
} from "../service"
|
||||
import style from "./style.less"
|
||||
import {getProId} from "@/utils/session";
|
||||
import {GetPublicityUsablePackage} from "@/pages/Calibration/BidPublicityResult/service";
|
||||
|
||||
/*
|
||||
* 招标公告开始
|
||||
*/
|
||||
interface DataItem {
|
||||
key:number,
|
||||
announcementName: string,
|
||||
associatedPackage: string,
|
||||
writeTime: Date,
|
||||
announcementState: string,
|
||||
onSubmit: (values: any) => void;//点击保存的回调
|
||||
key: number,
|
||||
announcementName: string,
|
||||
associatedPackage: string,
|
||||
writeTime: Date,
|
||||
announcementState: string,
|
||||
onSubmit: (values: any) => void;//点击保存的回调
|
||||
}
|
||||
|
||||
|
||||
const BiddingAnnouncementList: React.FC<{}> = (props) => {
|
||||
const [selectedRowsState, setSelectedRows] = useState<DataItem[]>([]);
|
||||
const [updateVisible, setUpdateVisible] = useState<boolean>(false)
|
||||
const [updateChange, setUpdateChange] = useState<string>('');//弹窗名
|
||||
const [type, setType] = useState<any>('cease');//弹窗类型
|
||||
const [pkId,setPkId] =useState<string>();//公告/邀请函id
|
||||
const [tpId,setTpId] = useState<any>('4419993030303037111');//项目id
|
||||
const [dataSource,setdataSource]= useState<any[]>([]); //公告列表数据
|
||||
const [dataSourcePage,setDataSourcePage] = useState<any>(1);//当前页数
|
||||
const [dataSourceAllNum,setDataSourceAllNum] = useState<any>();//总行数
|
||||
const [dataSourceNum,setDataSourceNum] = useState<any>(20);//当前每页行数
|
||||
const [ChangeNoticeListVisible,setChangeNoticeListVisible] =useState<boolean>(false); //变更公告列表窗状态
|
||||
const [ChangeNoticeListdataSource,setChangeNoticeListdataSource]= useState<any[]>([]); //变更公告列表数据
|
||||
const [Refresh, setRefresh] = useState<any>(Math.random);
|
||||
|
||||
const [pageloading,setPageloading]=useState<boolean>(false);//加载遮罩
|
||||
const [selectedRowsState, setSelectedRows] = useState<DataItem[]>([]);
|
||||
const [updateVisible, setUpdateVisible] = useState<boolean>(false)
|
||||
const [updateChange, setUpdateChange] = useState<string>('');//弹窗名
|
||||
const [type, setType] = useState<any>('cease');//弹窗类型
|
||||
const [pkId, setPkId] = useState<string>();//公告/邀请函id
|
||||
const [tpId, setTpId] = useState<any>(getProId);//项目id
|
||||
const [dataSource, setdataSource] = useState<any[]>([]); //公告列表数据
|
||||
const [dataSourcePage, setDataSourcePage] = useState<any>(1);//当前页数
|
||||
const [dataSourceAllNum, setDataSourceAllNum] = useState<any>();//总行数
|
||||
const [dataSourceNum, setDataSourceNum] = useState<any>(20);//当前每页行数
|
||||
const [ChangeNoticeListVisible, setChangeNoticeListVisible] = useState<boolean>(false); //变更公告列表窗状态
|
||||
const [ChangeNoticeListdataSource, setChangeNoticeListdataSource] = useState<any[]>([]); //变更公告列表数据
|
||||
|
||||
const [FpkId,setFpkId] = useState<string>("");//变更公告父id
|
||||
|
||||
const [pageloading, setPageloading] = useState<boolean>(false);//加载遮罩
|
||||
|
||||
|
||||
const columns: ProColumns<DataItem>[] = [
|
||||
{
|
||||
title: '公告名称',
|
||||
dataIndex: 'annoTitle',
|
||||
key:'annoTitle',
|
||||
align:'center',
|
||||
{
|
||||
title: '公告名称',
|
||||
dataIndex: 'annoTitle',
|
||||
key: 'annoTitle',
|
||||
align: 'center',
|
||||
|
||||
},
|
||||
{
|
||||
title: '关联标段',
|
||||
dataIndex: 'sectionNames',
|
||||
key:'sectionNames',
|
||||
align:'center',
|
||||
},
|
||||
{
|
||||
title: '起草时间',
|
||||
dataIndex: 'annoStartTime',
|
||||
key:"annoStartTime",
|
||||
align:'center',
|
||||
valueType: 'dateTime',
|
||||
},
|
||||
{
|
||||
title: '公告状态',
|
||||
dataIndex: 'status',
|
||||
key:"status",
|
||||
align:'center',
|
||||
valueEnum: {
|
||||
1: { text: '起草', status: '' },
|
||||
2: { text: '已提交', status: '' },
|
||||
3: { text: '已审批', status: '' },
|
||||
4: { text: '已拒绝', status: '' },
|
||||
5: { text: '已发布', status: '' },
|
||||
6: { text: '发布失败', status: '' },
|
||||
},
|
||||
},
|
||||
{
|
||||
title: '操作',
|
||||
dataIndex: 'status',
|
||||
key:"",
|
||||
align:'center',
|
||||
render: (_:any, record: any) => {
|
||||
let btn1= (
|
||||
<>
|
||||
<a onClick={() => toEdit(record)}>编辑</a><Divider type="vertical"/>
|
||||
<a onClick={() => handleApproval(record)}>提交审批</a><Divider type="vertical"/>
|
||||
<a onClick={() => handleRemove(record)}>删除</a>
|
||||
</>
|
||||
);
|
||||
let btn2= (
|
||||
<>
|
||||
<a onClick={() => toRead(record)}>查看</a><Divider type="vertical"/>
|
||||
</>
|
||||
);
|
||||
let btn3= (
|
||||
<>
|
||||
<a onClick={() => handleRelease(record)}>发布</a><Divider type="vertical"/>
|
||||
<a onClick={() => toRead(record)}>查看</a>
|
||||
</>
|
||||
);
|
||||
let btn4= (
|
||||
<>
|
||||
<a onClick={() => toEdit(record)}>编辑</a><Divider type="vertical"/>
|
||||
<a onClick={() => handleApproval(record)}>提交审批</a><Divider type="vertical"/>
|
||||
<a onClick={() => handleRemove(record)}>删除</a>
|
||||
</>
|
||||
);
|
||||
let btn5= (
|
||||
<>
|
||||
<a onClick={() => toRead(record)}>查看</a><Divider type="vertical"/>
|
||||
<a onClick={() => handleReleaseAgain(record)}>再次发布</a><Divider type="vertical"/>
|
||||
<a onClick={() => toChange(record)}>变更</a>
|
||||
</>
|
||||
);
|
||||
let btn6= (
|
||||
<>
|
||||
<a onClick={() => handleRelease(record)}>发布</a><Divider type="vertical"/>
|
||||
<a onClick={() => toRead(record)}>查看</a>
|
||||
</>
|
||||
);
|
||||
},
|
||||
{
|
||||
title: '关联标段',
|
||||
dataIndex: 'sectionNames',
|
||||
key: 'sectionNames',
|
||||
align: 'center',
|
||||
},
|
||||
{
|
||||
title: '起草时间',
|
||||
dataIndex: 'annoStartTime',
|
||||
key: "annoStartTime",
|
||||
align: 'center',
|
||||
valueType: 'dateTime',
|
||||
},
|
||||
{
|
||||
title: '公告状态',
|
||||
dataIndex: 'status',
|
||||
key: "status",
|
||||
align: 'center',
|
||||
valueEnum: {
|
||||
1: {text: '起草', status: ''},
|
||||
2: {text: '已提交', status: ''},
|
||||
3: {text: '已审批', status: ''},
|
||||
4: {text: '已拒绝', status: ''},
|
||||
5: {text: '已发布', status: ''},
|
||||
6: {text: '发布失败', status: ''},
|
||||
},
|
||||
},
|
||||
{
|
||||
title: '操作',
|
||||
dataIndex: 'status',
|
||||
key: "",
|
||||
align: 'center',
|
||||
render: (_: any, record: any) => {
|
||||
let btn1 = (
|
||||
<>
|
||||
<a onClick={() => toEdit(record)}>编辑</a><Divider type="vertical"/>
|
||||
<a onClick={() => handleApproval(record)}>提交审批</a><Divider type="vertical"/>
|
||||
<a onClick={() => handleRemove(record)}>删除</a>
|
||||
</>
|
||||
);
|
||||
let btn2 = (
|
||||
<>
|
||||
<a onClick={() => toRead(record)}>查看</a><Divider type="vertical"/>
|
||||
</>
|
||||
);
|
||||
let btn3 = (
|
||||
<>
|
||||
<a onClick={() => handleRelease(record)}>发布</a><Divider type="vertical"/>
|
||||
<a onClick={() => toRead(record)}>查看</a>
|
||||
</>
|
||||
);
|
||||
let btn4 = (
|
||||
<>
|
||||
<a onClick={() => toEdit(record)}>编辑</a><Divider type="vertical"/>
|
||||
<a onClick={() => handleApproval(record)}>提交审批</a><Divider type="vertical"/>
|
||||
<a onClick={() => handleRemove(record)}>删除</a>
|
||||
</>
|
||||
);
|
||||
let btn5 = (
|
||||
<>
|
||||
<a onClick={() => toRead(record)}>查看</a><Divider type="vertical"/>
|
||||
<a onClick={() => handleReleaseAgain(record)}>再次发布</a><Divider type="vertical"/>
|
||||
<a onClick={() => toChange(record)}>变更</a>
|
||||
</>
|
||||
);
|
||||
let btn6 = (
|
||||
<>
|
||||
<a onClick={() => handleRelease(record)}>发布</a><Divider type="vertical"/>
|
||||
<a onClick={() => toRead(record)}>查看</a>
|
||||
</>
|
||||
);
|
||||
|
||||
/*if(true){
|
||||
return btn3;
|
||||
}else*/ if(record.status==1){
|
||||
return btn1;
|
||||
}else if(record.status==2){
|
||||
return btn2;
|
||||
}else if(record.status==3){
|
||||
return btn3;
|
||||
}else if(record.status==4){
|
||||
return btn4;
|
||||
}else if(record.status==5){
|
||||
return btn5;
|
||||
}else if(record.status==6){
|
||||
return btn6;
|
||||
} else {
|
||||
return (<></>)
|
||||
}
|
||||
},
|
||||
/*if(true){
|
||||
return btn3;
|
||||
}else*/
|
||||
if (record.status == 1) {
|
||||
return btn1;
|
||||
} else if (record.status == 2) {
|
||||
return btn2;
|
||||
} else if (record.status == 3) {
|
||||
return btn3;
|
||||
} else if (record.status == 4) {
|
||||
return btn4;
|
||||
} else if (record.status == 5) {
|
||||
return btn5;
|
||||
} else if (record.status == 6) {
|
||||
return btn6;
|
||||
} else {
|
||||
return (<></>)
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
},
|
||||
];
|
||||
const ChangeNoticeListcolumns = [
|
||||
},
|
||||
];
|
||||
const ChangeNoticeListcolumns :ProColumns<DataItem>[]= [
|
||||
{
|
||||
title: '公告标题',
|
||||
dataIndex: 'annoTitle',
|
||||
@ -156,44 +167,53 @@ const BiddingAnnouncementList: React.FC<{}> = (props) => {
|
||||
},
|
||||
{
|
||||
title: '公告状态',
|
||||
dataIndex: 'docStartTime',
|
||||
|
||||
dataIndex: 'status',
|
||||
key: "status",
|
||||
align: 'center',
|
||||
valueEnum: {
|
||||
1: {text: '起草', status: '一'},
|
||||
2: {text: '已提交', status: ''},
|
||||
3: {text: '已审批', status: ''},
|
||||
4: {text: '已拒绝', status: ''},
|
||||
5: {text: '已发布', status: ''},
|
||||
6: {text: '发布失败', status: ''},
|
||||
},
|
||||
},
|
||||
{
|
||||
title: '操作',
|
||||
dataIndex: 'status',
|
||||
render: (_: any, record: any) => {
|
||||
let btn1= (
|
||||
<>
|
||||
<a onClick={() => toEdit4Change(record)}>编辑</a><Divider type="vertical"/>
|
||||
<a onClick={() => handleApproval(record)}>提交审批</a><Divider type="vertical"/>
|
||||
<a onClick={() => handleRemove(record)}>删除</a>
|
||||
</>
|
||||
);
|
||||
let btn2= (
|
||||
<>
|
||||
<a onClick={() => toRead(record)}>查看</a><Divider type="vertical"/>
|
||||
</>
|
||||
);
|
||||
let btn3= (
|
||||
<>
|
||||
<a onClick={() => handleRelease(record)}>发布</a><Divider type="vertical"/>
|
||||
<a onClick={() => toRead(record)}>查看</a>
|
||||
</>
|
||||
);
|
||||
let btn4= (
|
||||
let btn1 = (
|
||||
<>
|
||||
<a onClick={() => toEdit4Change(record)}>编辑</a><Divider type="vertical"/>
|
||||
<a onClick={() => handleApproval(record)}>提交审批</a><Divider type="vertical"/>
|
||||
<a onClick={() => handleRemove(record)}>删除</a>
|
||||
</>
|
||||
);
|
||||
let btn5= (
|
||||
let btn2 = (
|
||||
<>
|
||||
<a onClick={() => toRead(record)}>查看</a><Divider type="vertical"/>
|
||||
<a onClick={() => toRead(record)}>查看</a>
|
||||
</>
|
||||
);
|
||||
let btn6= (
|
||||
let btn3 = (
|
||||
<>
|
||||
<a onClick={() => handleRelease(record)}>发布</a><Divider type="vertical"/>
|
||||
<a onClick={() => toRead(record)}>查看</a>
|
||||
</>
|
||||
);
|
||||
let btn4 = (
|
||||
<>
|
||||
<a onClick={() => toEdit4Change(record)}>编辑</a><Divider type="vertical"/>
|
||||
<a onClick={() => handleApproval(record)}>提交审批</a><Divider type="vertical"/>
|
||||
<a onClick={() => handleRemove(record)}>删除</a>
|
||||
</>
|
||||
);
|
||||
let btn5 = (
|
||||
<>
|
||||
<a onClick={() => toRead(record)}>查看</a>
|
||||
</>
|
||||
);
|
||||
let btn6 = (
|
||||
<>
|
||||
<a onClick={() => handleRelease(record)}>发布</a><Divider type="vertical"/>
|
||||
<a onClick={() => toRead(record)}>查看</a>
|
||||
@ -202,17 +222,18 @@ const BiddingAnnouncementList: React.FC<{}> = (props) => {
|
||||
|
||||
/*if(true){
|
||||
return btn3;
|
||||
}else*/ if(record.status==1){
|
||||
}else*/
|
||||
if (record.status == 1) {
|
||||
return btn1;
|
||||
}else if(record.status==2){
|
||||
} else if (record.status == 2) {
|
||||
return btn2;
|
||||
}else if(record.status==3){
|
||||
} else if (record.status == 3) {
|
||||
return btn3;
|
||||
}else if(record.status==4){
|
||||
} else if (record.status == 4) {
|
||||
return btn4;
|
||||
}else if(record.status==5){
|
||||
} else if (record.status == 5) {
|
||||
return btn5;
|
||||
}else if(record.status==6){
|
||||
} else if (record.status == 6) {
|
||||
return btn6;
|
||||
} else {
|
||||
return (<></>)
|
||||
@ -221,102 +242,110 @@ const BiddingAnnouncementList: React.FC<{}> = (props) => {
|
||||
},
|
||||
];
|
||||
|
||||
/*拉取数据 beg*/
|
||||
useEffect(()=>{
|
||||
GetList("page")
|
||||
},[tpId,dataSourceNum,dataSourcePage])
|
||||
|
||||
const GetList = (props: any)=>{
|
||||
setPageloading(true);
|
||||
if(props=="page"){//初始化页面
|
||||
GetNoticeList({
|
||||
"annoNature": 1,
|
||||
"annoTitle": "",
|
||||
"csAnnoId": "",
|
||||
"pageNo": dataSourcePage,
|
||||
"pageSize":dataSourceNum,
|
||||
"source": 11,
|
||||
"tpId": tpId
|
||||
}).then(res => {
|
||||
if(res!=null&&res.message=="success"){
|
||||
setdataSource(res.data.records)
|
||||
setDataSourceAllNum(res.total)
|
||||
} else{
|
||||
message.error('程序出错,亲您稍后在世');
|
||||
}
|
||||
setPageloading(false);
|
||||
})
|
||||
}else {
|
||||
GetNoticeList({
|
||||
"annoNature": 7,
|
||||
"annoTitle": "",
|
||||
"csAnnoId": props,
|
||||
"pageNo": 1,
|
||||
"pageSize": 100,
|
||||
"source": 11,
|
||||
"tpId": tpId
|
||||
}).then(res => {
|
||||
if (res.message== "success"&&res.data!=null) {
|
||||
setChangeNoticeListdataSource(res.data.records);
|
||||
setPageloading(false);
|
||||
}else {
|
||||
message.error('程序出错,亲您稍后在世');
|
||||
setChangeNoticeListVisible(false);
|
||||
setPageloading(false);
|
||||
}
|
||||
|
||||
|
||||
})
|
||||
/*拉取数据 beg*/
|
||||
useEffect(() => {
|
||||
GetList("page")
|
||||
}, [tpId, dataSourceNum, dataSourcePage,Refresh])
|
||||
|
||||
const GetList = (props: any) => {
|
||||
setPageloading(true);
|
||||
if (props == "page") {//初始化页面
|
||||
GetNoticeList({
|
||||
"annoNature": 1,
|
||||
"annoTitle": "",
|
||||
"csAnnoId": "",
|
||||
"pageNo": dataSourcePage,
|
||||
"pageSize": dataSourceNum,
|
||||
"source": 11,
|
||||
"tpId": tpId
|
||||
}).then(res => {
|
||||
if (res != null && res.message == "success") {
|
||||
setdataSource(res.data.records)
|
||||
setDataSourceAllNum(res.total)
|
||||
} else {
|
||||
message.error(res.message);
|
||||
}
|
||||
setPageloading(false);
|
||||
})
|
||||
} else {
|
||||
GetNoticeList({
|
||||
"annoNature": 7,
|
||||
"annoTitle": "",
|
||||
"csAnnoId": props,
|
||||
"pageNo": 1,
|
||||
"pageSize": 100,
|
||||
"source": 11,
|
||||
"tpId": tpId
|
||||
}).then(res => {
|
||||
if (res.message == "success" && res.data != null) {
|
||||
setChangeNoticeListdataSource(res.data.records);
|
||||
setPageloading(false);
|
||||
} else {
|
||||
message.error(res.message);
|
||||
setChangeNoticeListVisible(false);
|
||||
setPageloading(false);
|
||||
}
|
||||
|
||||
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
/*拉取数据 end*/
|
||||
|
||||
/*新增招标公告*/
|
||||
const toEditAdd = (props: any) => {
|
||||
setUpdateVisible(true);
|
||||
setUpdateChange('新建招标公告')
|
||||
setType("new");
|
||||
}
|
||||
/*编辑招标公告*/
|
||||
const toEdit = (props: any) => {
|
||||
setUpdateVisible(true);
|
||||
setUpdateChange('编辑招标公告')
|
||||
setPkId(props.id);
|
||||
setType("edit");
|
||||
}
|
||||
/*查看招标公告*/
|
||||
const toRead = (props: any) => {
|
||||
setUpdateVisible(true);
|
||||
setUpdateChange('查看招标公告')
|
||||
setType("read");
|
||||
setPkId(props.id);
|
||||
}
|
||||
/*查询变更招标公告列表数据*/
|
||||
const toChange = (props: any) => {
|
||||
setChangeNoticeListVisible(true);
|
||||
setPkId( props.id);
|
||||
GetList(props.id);
|
||||
}
|
||||
/*创建变更公告*/
|
||||
const creatChangeNotice = () => {
|
||||
setUpdateVisible(true);
|
||||
setUpdateChange('创建变更公告')
|
||||
setType("changeNew");
|
||||
}
|
||||
/*编辑招标公告*/
|
||||
const toEdit4Change = (props: any) => {
|
||||
setUpdateVisible(true);
|
||||
setUpdateChange('编辑招标公告')
|
||||
setPkId(props.id);
|
||||
setType("edit");
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
/*拉取数据 end*/
|
||||
|
||||
/*新增招标公告*/
|
||||
const toEditAdd = (props: any) => {
|
||||
GetNoticeUsablePackage(tpId).then(res=>{
|
||||
if (res != null && res.message == "success") {
|
||||
if (res.data.length == 0) {
|
||||
message.warn("没有可关联的标包!")
|
||||
}else{
|
||||
setUpdateVisible(true);
|
||||
setUpdateChange('新建招标公告')
|
||||
setType("new");
|
||||
}
|
||||
}else {
|
||||
message.error("查询标包信息失败:"+res.message)
|
||||
}
|
||||
})
|
||||
}
|
||||
/*编辑招标公告*/
|
||||
const toEdit = (props: any) => {
|
||||
setUpdateVisible(true);
|
||||
setUpdateChange('编辑招标公告')
|
||||
setPkId(props.id);
|
||||
setType("edit");
|
||||
}
|
||||
/*查看招标公告*/
|
||||
const toRead = (props: any) => {
|
||||
setUpdateVisible(true);
|
||||
setUpdateChange('查看招标公告')
|
||||
setType("read");
|
||||
setPkId(props.id);
|
||||
}
|
||||
/*查询变更招标公告列表数据*/
|
||||
const toChange = (props: any) => {
|
||||
setChangeNoticeListVisible(true);
|
||||
setPkId(props.id);
|
||||
setFpkId(props.id)
|
||||
GetList(props.id);
|
||||
}
|
||||
/*创建变更公告*/
|
||||
const creatChangeNotice = () => {
|
||||
setUpdateVisible(true);
|
||||
setUpdateChange('创建变更公告');
|
||||
setType("changeNew");
|
||||
}
|
||||
/*编辑变更公告*/
|
||||
const toEdit4Change = (props: any) => {
|
||||
setUpdateVisible(true);
|
||||
setUpdateChange('编辑变更公告')
|
||||
setPkId(props.id);
|
||||
setType("change");
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
@ -325,12 +354,18 @@ const BiddingAnnouncementList: React.FC<{}> = (props) => {
|
||||
*/
|
||||
const handleRemove = async (record: any) => {
|
||||
setPageloading(true);
|
||||
removeNotice(record.id).then(res=>{
|
||||
if(res!=null&&res=="success"){
|
||||
removeNotice(record.id).then(res => {
|
||||
if (res != null && res.message== "success") {
|
||||
message.success('删除成功');
|
||||
}else {
|
||||
message.error('删除失败');
|
||||
if(type == "change"||type == "changeNew"){
|
||||
GetList(FpkId);
|
||||
}else{
|
||||
setRefresh(Math.random()+1)
|
||||
}
|
||||
} else {
|
||||
message.error('删除失败:'+res.message);
|
||||
}
|
||||
setRefresh(Math.random()+1)
|
||||
setPageloading(false);
|
||||
});
|
||||
|
||||
@ -339,18 +374,24 @@ const BiddingAnnouncementList: React.FC<{}> = (props) => {
|
||||
* 批量删除
|
||||
* */
|
||||
const handleRemoveMore = async () => {
|
||||
if(selectedRowsState.length!=0){
|
||||
if (selectedRowsState.length != 0) {
|
||||
setPageloading(true);
|
||||
let param=[]
|
||||
for(const item of selectedRowsState){
|
||||
let param = []
|
||||
for (const item of selectedRowsState) {
|
||||
param.push(item.id);
|
||||
}
|
||||
removeNotice(param).then(res=>{
|
||||
if(res!=null&&res=="success"){
|
||||
removeNotice(param).then(res => {
|
||||
if (res != null && res.message == "success") {
|
||||
message.success('删除成功');
|
||||
}else {
|
||||
message.error('删除失败');
|
||||
if(type == "change"||type == "changeNew"){
|
||||
GetList(FpkId);
|
||||
}else{
|
||||
setRefresh(Math.random()+1)
|
||||
};
|
||||
} else {
|
||||
message.error('删除失败:'+res.message);
|
||||
}
|
||||
setRefresh(Math.random()+1)
|
||||
setPageloading(false);
|
||||
});
|
||||
}
|
||||
@ -358,103 +399,132 @@ const BiddingAnnouncementList: React.FC<{}> = (props) => {
|
||||
/**
|
||||
* 发布
|
||||
* */
|
||||
const handleRelease = async (record:any) => {
|
||||
const handleRelease = async (record: any) => {
|
||||
setPageloading(true);
|
||||
releaseNotice(record.id).then(res=>{
|
||||
if(res!=null&&res=="success"){
|
||||
releaseNotice(record.id).then(res => {
|
||||
if (res != null && res.message == "success") {
|
||||
message.success('发布成功');
|
||||
}else {
|
||||
message.error('发布失败');
|
||||
if(type == "change"||type == "changeNew"){
|
||||
GetList(FpkId);
|
||||
}else{
|
||||
setRefresh(Math.random()+1)
|
||||
}
|
||||
} else {
|
||||
message.error('发布失败:'+res.message);
|
||||
}
|
||||
|
||||
setPageloading(false);
|
||||
});
|
||||
};
|
||||
/**
|
||||
* 再次发布
|
||||
* */
|
||||
const handleReleaseAgain = async (record:any) => {
|
||||
const handleReleaseAgain = async (record: any) => {
|
||||
|
||||
setPageloading(true);
|
||||
releaseNoticeAgain(record.id).then(res=>{
|
||||
if(res!=null&&res=="success"){
|
||||
releaseNoticeAgain(record.id).then(res => {
|
||||
if (res != null && res.message == "success") {
|
||||
message.success('发布成功');
|
||||
}else {
|
||||
message.error('发布失败');
|
||||
if(type == "change"||type == "changeNew"){
|
||||
GetList(FpkId);
|
||||
}else{
|
||||
setRefresh(Math.random()+1)
|
||||
}
|
||||
} else {
|
||||
message.error('发布失败:'+res.message);
|
||||
}
|
||||
setRefresh(Math.random()+1)
|
||||
setPageloading(false);
|
||||
});
|
||||
};
|
||||
/**
|
||||
* 发起审批
|
||||
* */
|
||||
const handleApproval = async (record:any) => {
|
||||
const handleApproval = async (record: any) => {
|
||||
setPageloading(true);
|
||||
ApprovalNotice(record.id).then(res=>{
|
||||
if(res!=null&&res=="success"){
|
||||
ApprovalNotice(record.id).then(res => {
|
||||
if (res != null && res.message == "success") {
|
||||
message.success('发起审批成功');
|
||||
}else {
|
||||
message.error('发起审批失败');
|
||||
if(type == "change"||type == "changeNew"){
|
||||
GetList(FpkId);
|
||||
}else{
|
||||
setRefresh(Math.random()+1)
|
||||
}
|
||||
} else {
|
||||
message.error('发起审批失败:'+res.message);
|
||||
}
|
||||
setRefresh(Math.random()+1)
|
||||
setPageloading(false);
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
return (
|
||||
<>
|
||||
return (
|
||||
<>
|
||||
<Card>
|
||||
<Divider style={{margin: "8px 0px"}}/>
|
||||
<div className={style.label}>
|
||||
<UnorderedListOutlined style={{marginRight: "8px"}}/>招标公告信息
|
||||
</div>
|
||||
<ProTable
|
||||
loading={pageloading}
|
||||
toolBarRender={() => [
|
||||
<Button type="primary" onClick={() => toEditAdd([])}>新增招标公告</Button>,
|
||||
<Button onClick={() => {
|
||||
handleRemoveMore()
|
||||
}}>批量删除</Button>,
|
||||
]}
|
||||
search={false}
|
||||
options={false}
|
||||
columns={columns}
|
||||
dataSource={dataSource}
|
||||
rowKey={"id"}
|
||||
rowSelection={{
|
||||
onChange: (_, selectedRows) => setSelectedRows(selectedRows),
|
||||
}}
|
||||
pagination={{
|
||||
hideOnSinglePage:true,
|
||||
pageSize: dataSourceNum,
|
||||
current: dataSourcePage,
|
||||
total: dataSourceAllNum,
|
||||
pageSizeOptions: ['10', '20', '50'],
|
||||
onShowSizeChange: ((current, size) => setDataSourceNum(size)),
|
||||
onChange: ((page, pageSize) => setDataSourcePage(page))
|
||||
}}
|
||||
|
||||
<Card>
|
||||
<Divider style={{margin: "8px 0px"}}/>
|
||||
<div className={style.label}>
|
||||
<UnorderedListOutlined style={{marginRight: "8px"}}/>招标公告信息
|
||||
</div>
|
||||
<ProTable
|
||||
loading={pageloading}
|
||||
toolBarRender={() => [
|
||||
<Button type="primary" onClick={() => toEditAdd([])}>新增招标公告</Button>,
|
||||
<Button onClick={()=>{handleRemoveMore()}}>批量删除</Button>,
|
||||
]}
|
||||
search={false}
|
||||
options={false}
|
||||
columns={columns}
|
||||
dataSource={dataSource}
|
||||
rowKey={"id"}
|
||||
rowSelection={{
|
||||
onChange: (_, selectedRows) => setSelectedRows(selectedRows),
|
||||
}}
|
||||
pagination={{
|
||||
pageSize:dataSourceNum,
|
||||
current:dataSourcePage,
|
||||
total: dataSourceAllNum,
|
||||
pageSizeOptions:['10','20','50'],
|
||||
onShowSizeChange:((current, size)=>setDataSourceNum(size)),
|
||||
onChange:((page, pageSize)=>setDataSourcePage(page))
|
||||
}}
|
||||
/>
|
||||
|
||||
/>
|
||||
</Card>
|
||||
{ChangeNoticeListVisible?(
|
||||
<Modal
|
||||
destroyOnClose
|
||||
title={"招标文件变更列表"}
|
||||
visible={ChangeNoticeListVisible}
|
||||
onOk={() => {
|
||||
setChangeNoticeListVisible(false)
|
||||
}}
|
||||
onCancel={() => setChangeNoticeListVisible(false)}
|
||||
width={1000}
|
||||
closable={false}
|
||||
>
|
||||
<Button type="primary" onClick={() => creatChangeNotice()}>新增变更公告</Button>,
|
||||
<ProTable
|
||||
search={false}
|
||||
options={false}
|
||||
columns={ChangeNoticeListcolumns}
|
||||
dataSource={ChangeNoticeListdataSource}
|
||||
pagination={{ hideOnSinglePage:true,pageSize: 50}} scroll={{y: 240}}
|
||||
loading={pageloading}
|
||||
/>
|
||||
</Modal>
|
||||
):null}
|
||||
|
||||
</Card>
|
||||
<Modal
|
||||
destroyOnClose
|
||||
title={"招标文件变更列表"}
|
||||
visible={ChangeNoticeListVisible}
|
||||
onOk={()=>{setChangeNoticeListVisible(false)}}
|
||||
onCancel={()=>setChangeNoticeListVisible(false)}
|
||||
width={1000}
|
||||
closable={false}
|
||||
>
|
||||
<Button type="primary" onClick={()=>creatChangeNotice()} >新增招标公告</Button>,
|
||||
<Table
|
||||
|
||||
columns={ChangeNoticeListcolumns}
|
||||
dataSource={ChangeNoticeListdataSource}
|
||||
pagination={{ pageSize: 50 }} scroll={{ y: 240 }}
|
||||
loading={pageloading}
|
||||
/>
|
||||
</Modal>
|
||||
<BiddingAnnouncement titleName={updateChange} pkId={pkId} type={type} tpId={tpId} onCancel={() => setUpdateVisible(false)} modalVisible={updateVisible} />
|
||||
</>
|
||||
)
|
||||
{updateVisible?(
|
||||
<BiddingAnnouncement key={Math.random()} SX={()=>setRefresh(Math.random()+1)} titleName={updateChange} pkId={pkId} type={type} tpId={tpId}
|
||||
onCancel={() => setUpdateVisible(false)} modalVisible={updateVisible} FpkId={FpkId} ChangeSX={()=>GetList(FpkId)}/>
|
||||
):null}
|
||||
</>
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
|
@ -1,216 +1,343 @@
|
||||
import { BarsOutlined, UploadOutlined } from "@ant-design/icons"
|
||||
import {BarsOutlined, UploadOutlined} from "@ant-design/icons"
|
||||
import {Button, Card, Checkbox, Col, Collapse, Form, Input, message, Modal, Row, Spin, Upload} from "antd"
|
||||
import React, {useEffect, useState} from "react"
|
||||
import React, {useEffect, useRef, useState} from "react"
|
||||
import style from './style.less'
|
||||
import {GetfileUsablePackage, GetfileMsg, creatfile, creatNotice} from "../service";
|
||||
import Weboffice from "@/pages/webOffice/weboffice";
|
||||
|
||||
import {deleteFileObjId, getFileBidList, SnowflakeID} from "@/services/untilService";
|
||||
|
||||
interface BiddingDocumentProps {
|
||||
modalVisible: boolean;
|
||||
titleName:string;
|
||||
onCancel: () => void;
|
||||
type:string;
|
||||
tpId:string;
|
||||
pkId:string;
|
||||
}
|
||||
const layout = {
|
||||
labelCol: { span: 7 },
|
||||
wrapperCol: { span: 10 },
|
||||
};
|
||||
modalVisible: boolean;
|
||||
titleName: string;
|
||||
onCancel: () => void;
|
||||
type: string;
|
||||
tpId: string;
|
||||
pkId: string;
|
||||
SX: () => void;
|
||||
}
|
||||
|
||||
const layout = {
|
||||
labelCol: {span: 7},
|
||||
wrapperCol: {span: 10},
|
||||
};
|
||||
const BiddingDocument: React.FC<BiddingDocumentProps> = (props) => {
|
||||
const { Panel } = Collapse;
|
||||
const { titleName , modalVisible , onCancel,type ,tpId,pkId} = props;
|
||||
const [TpPackageId,setTpPackageId] = useState<any[]>([]); //标包信息
|
||||
const [spinning,setSping]=useState<boolean>();//加载遮罩
|
||||
const [editInformation,setEditInformation]=useState<boolean>(false);//是否可编
|
||||
const [form] =Form.useForm();
|
||||
const {Panel} = Collapse;
|
||||
const {titleName, modalVisible, onCancel, type, tpId, pkId, SX} = props;
|
||||
const [TpPackageId, setTpPackageId] = useState<any[]>([]); //标包信息
|
||||
const [spinning, setSping] = useState<boolean>();//加载遮罩
|
||||
const [editInformation, setEditInformation] = useState<boolean>(false);//是否可编
|
||||
const [form] = Form.useForm();
|
||||
const [docFileCode, setDocFileCode] = useState<string>("");//文档id
|
||||
const [docBtnName, setDocBtnName] = useState<any>("");//文档按钮文字
|
||||
const [docReadOnly, setDocReadOnly] = useState<string>("false");//是否可编辑
|
||||
const [docSaveBtn, setDocSaveBtn] = useState<string>("compact");//保存按钮是否展示
|
||||
const [UploadList, setUploadList] = useState<any>(); //存upload列表
|
||||
const [UploadID, setUploadID] = useState<any>(); //upload 业务id
|
||||
|
||||
/*weboffice 相关*/
|
||||
const WebofficeRef = useRef<Weboffice>(null);
|
||||
const onRef = (ref) => {
|
||||
/* this.child= ref;*/
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
useEffect(()=>{
|
||||
Int();
|
||||
useEffect(() => {
|
||||
SnowflakeID().then(res => {
|
||||
Int();
|
||||
});
|
||||
form.resetFields();//清除form中数据
|
||||
},[type,pkId]);
|
||||
|
||||
}, [type, pkId]);
|
||||
useEffect(() => {
|
||||
UploadMethod();
|
||||
}, [UploadID]);
|
||||
const Int = () => {
|
||||
setSping(true);
|
||||
if(type=="cease"){
|
||||
return ;
|
||||
}else if(type=="new") {//==========================================================新建
|
||||
GetfileUsablePackage (tpId).then(res => {
|
||||
if(res!=null&&res.message=="success"){
|
||||
let thisData= [];
|
||||
if (type == "cease") {
|
||||
return;
|
||||
} else if (type == "new") {//==========================================================新建
|
||||
GetfileUsablePackage(tpId).then(res => {
|
||||
if (res != null && res.message == "success") {
|
||||
let thisData = [];
|
||||
if (res.data.length == 0) {
|
||||
message.warn("没有可关联的标包!")
|
||||
onCancel();
|
||||
}
|
||||
for (const item of res.data) {
|
||||
thisData.push({"label": item.bsName, "value": item.bsId})
|
||||
}
|
||||
|
||||
SnowflakeID().then(res => {
|
||||
setUploadID(res.id);
|
||||
});
|
||||
setTpPackageId(thisData);
|
||||
}else {
|
||||
message.error('程序出错,亲您稍后在世');
|
||||
setDocReadOnly("false")
|
||||
setDocSaveBtn("compact")
|
||||
setDocBtnName("新建")
|
||||
} else {
|
||||
message.error('程序出错,请您稍后再试:'+res.message);
|
||||
onCancel();
|
||||
}
|
||||
setSping(false);
|
||||
setEditInformation(false);//可编辑
|
||||
});
|
||||
|
||||
} else if(type=="edit") {//=========================================================修改
|
||||
GetfileUsablePackage (tpId).then(res => {
|
||||
if(res!=null&&res.message=="success"){
|
||||
let thisData1 = [];
|
||||
} else if (type == "edit") {//=========================================================修改
|
||||
let thisData1:any [];
|
||||
GetfileUsablePackage(tpId).then(res => {
|
||||
if (res != null && res.message == "success") {
|
||||
let thisData2 = [];
|
||||
for (const item of res.data) {
|
||||
thisData1.push({"label": item.bsName, "value": item.bsId})
|
||||
thisData2.push({"label": item.bsName, "value": item.bsId})
|
||||
}
|
||||
GetfileMsg (pkId).then(res => {
|
||||
if(res!=null&&res.message=="success"){
|
||||
const data = res.data;
|
||||
for(const item of data.sections){
|
||||
thisData1.push({"label":item.bsName,"value":item.bsId})
|
||||
}
|
||||
setTpPackageId(thisData1);
|
||||
form.setFieldsValue({
|
||||
"documentName":data.documentName,
|
||||
"documentSetId":data.documentSetId,
|
||||
"sectionIds":data.sectionIds
|
||||
},
|
||||
)
|
||||
setSping(false);
|
||||
setEditInformation(false);//可编辑
|
||||
}else {
|
||||
message.error('程序出错,亲您稍后在世');
|
||||
onCancel();
|
||||
}
|
||||
});
|
||||
}else {
|
||||
message.error('程序出错,亲您稍后在世');
|
||||
thisData1=thisData2;
|
||||
} else {
|
||||
message.error('程序出错,请您稍后再试:'+res.message);
|
||||
onCancel();
|
||||
}
|
||||
GetfileMsg(pkId).then(res => {
|
||||
if (res != null && res.message == "success") {
|
||||
const data = res.data;
|
||||
let defPak=[];
|
||||
for (const item of data.sections) {
|
||||
thisData1.push({"label": item.bsName, "value": item.bsId})
|
||||
defPak.push(item.bsId);
|
||||
}
|
||||
setTpPackageId(thisData1);
|
||||
form.setFieldsValue({
|
||||
"documentName": data.documentName,
|
||||
"documentSetId": data.documentSetId,
|
||||
"sectionIds":defPak,
|
||||
},
|
||||
)
|
||||
|
||||
setUploadID(data.documentSetId);
|
||||
setSping(false);
|
||||
setEditInformation(false);//可编辑
|
||||
setDocFileCode(data.contentFileId);
|
||||
setDocReadOnly("false")
|
||||
setDocSaveBtn("compact")
|
||||
setDocBtnName("编辑")
|
||||
} else {
|
||||
message.error('程序出错,请您稍后再试:'+res.message);
|
||||
onCancel();
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
} else if(type=="read") {//=========================================================查看
|
||||
GetfileMsg (pkId).then(res => {
|
||||
if(res!=null&&res.message=="success"){
|
||||
} else if (type == "read") {//=========================================================查看
|
||||
GetfileMsg(pkId).then(res => {
|
||||
if (res != null && res.message == "success") {
|
||||
const data = res.data;
|
||||
let thisData1=[];
|
||||
for(const item of data.sections){
|
||||
thisData1.push({"label":item.bsName,"value":item.bsId})
|
||||
let thisData1 = [];
|
||||
let defPak=[];
|
||||
for (const item of data.sections) {
|
||||
thisData1.push({"label": item.bsName, "value": item.bsId})
|
||||
defPak.push(item.bsId);
|
||||
}
|
||||
setTpPackageId(thisData1);
|
||||
form.setFieldsValue({
|
||||
"documentName":data.documentName,
|
||||
"documentSetId":data.documentSetId,
|
||||
"sectionIds":data.sectionIds
|
||||
"documentName": data.documentName,
|
||||
"documentSetId": data.documentSetId,
|
||||
"sectionIds":defPak,
|
||||
},
|
||||
)
|
||||
|
||||
|
||||
setSping(false);
|
||||
setEditInformation(true)
|
||||
}else {
|
||||
message.error('程序出错,亲您稍后在世');
|
||||
setDocFileCode(data.contentFileId);
|
||||
setUploadID(data.documentSetId);
|
||||
setDocReadOnly("true")
|
||||
setDocSaveBtn("none")
|
||||
setDocBtnName("查看")
|
||||
} else {
|
||||
message.error('程序出错,请您稍后再试:'+res.message);
|
||||
onCancel();
|
||||
}
|
||||
});
|
||||
}
|
||||
/*upload*/
|
||||
|
||||
}
|
||||
const onFinish = (values: any) => {
|
||||
const packageMsg=[];
|
||||
for (const item of TpPackageId){//包数据
|
||||
for (const item1 of form.getFieldValue("sectionIds"))
|
||||
if(item.value== item1)
|
||||
packageMsg.push({"bsId":item.value,"bsName":item.label})
|
||||
}
|
||||
const fromData ={
|
||||
"documentName":form.getFieldValue("documentName"),
|
||||
"documentSetId":form.getFieldValue("documentSetId")==null?"132456879":form.getFieldValue("documentSetId"),//附件id
|
||||
"sectionIds":packageMsg,
|
||||
|
||||
}
|
||||
creatfile(type,fromData).then(res => {
|
||||
console.log(res.data);
|
||||
});
|
||||
|
||||
console.log('Success:', fromData);
|
||||
const onFinish = async (values: any) => {
|
||||
form.validateFields().then(res => {
|
||||
if (type == "new") {//==========================================================新建
|
||||
if (WebofficeRef.current!.uninitialized == true) {//
|
||||
message.warn("您未编辑office文件!");
|
||||
return;
|
||||
} else {
|
||||
if (WebofficeRef.current!.uploadDOCType != "success") {
|
||||
message.warn("您未保存office文件!");
|
||||
return;
|
||||
}
|
||||
}
|
||||
} else if (type == "edit") {//=========================================================修改
|
||||
if (WebofficeRef.current!.uninitialized == false) {//
|
||||
if (WebofficeRef.current!.uploadDOCType != "success") {
|
||||
message.warn("您未保存office文件!");
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
const packageMsg = [];
|
||||
for (const item of TpPackageId) {//包数据
|
||||
for (const item1 of form.getFieldValue("sectionIds"))
|
||||
if (item.value == item1)
|
||||
packageMsg.push({"bsId": item.value, "bsName": item.label})
|
||||
}
|
||||
|
||||
const fromData = {
|
||||
"tpId": tpId,
|
||||
"documentName": form.getFieldValue("documentName"),
|
||||
"documentSetId": UploadID,
|
||||
"sections": packageMsg,
|
||||
"contentFileId": WebofficeRef.current!.DocfileCode,
|
||||
"id": pkId
|
||||
}
|
||||
setSping(true);
|
||||
creatfile(type, fromData).then(res => {
|
||||
if (res != null && res.message == "success") {
|
||||
message.success("成功");
|
||||
setSping(true);
|
||||
onCancel();
|
||||
SX();
|
||||
} else {
|
||||
message.error("保存失败:"+res.message);
|
||||
setSping(true);
|
||||
}
|
||||
});
|
||||
}).catch(res => {
|
||||
message.warn("您有未填写的选项!")
|
||||
})
|
||||
};
|
||||
const renderFooter = () => {
|
||||
if (type=="read") {
|
||||
if (type == "read") {
|
||||
return (
|
||||
<>
|
||||
<Button onClick={onCancel}>确认</Button>
|
||||
<Button onClick={onCancel}>确认</Button>
|
||||
</>
|
||||
);
|
||||
}else {
|
||||
} else {
|
||||
return (
|
||||
<>
|
||||
<Button onClick={onFinish}>确认</Button>
|
||||
<Button onClick={onFinish}>确认</Button>
|
||||
<Button onClick={onCancel}>取消</Button>
|
||||
</>
|
||||
);
|
||||
}
|
||||
}
|
||||
return (
|
||||
<Modal
|
||||
mask={true}
|
||||
destroyOnClose
|
||||
title={titleName}
|
||||
visible={modalVisible}
|
||||
onCancel={() => onCancel()}
|
||||
className="返回"
|
||||
width={1000}
|
||||
bodyStyle={{ padding: '32px 40px 48px',height: "600px", overflowY: 'auto' }}
|
||||
footer={renderFooter()}
|
||||
>
|
||||
<Spin spinning={spinning}>
|
||||
<Card>
|
||||
<Form
|
||||
{...layout}
|
||||
name="basic"
|
||||
form={form}
|
||||
>
|
||||
<Form.Item
|
||||
label="文件名称"
|
||||
name="documentName"
|
||||
>
|
||||
<Input readOnly={editInformation} />
|
||||
</Form.Item>
|
||||
<Form.Item
|
||||
label="关联标段"
|
||||
name="sectionIds"
|
||||
>
|
||||
<Checkbox.Group
|
||||
options={TpPackageId}
|
||||
style={{ width: '100%' }}
|
||||
disabled={editInformation}
|
||||
>
|
||||
</Checkbox.Group>
|
||||
</Form.Item>
|
||||
<Form.Item
|
||||
label="招标文件附件"
|
||||
name="documentSetId"
|
||||
>
|
||||
<div className={style.bidding}>
|
||||
<div className="uploadTotal">
|
||||
<Upload>
|
||||
<Button type="primary" disabled={editInformation} className="upload"><UploadOutlined />上传</Button>
|
||||
</Upload>
|
||||
<p className="uploadLabel">最大能上传100M文件!</p>
|
||||
</div>
|
||||
</div>
|
||||
</Form.Item>
|
||||
</Form>
|
||||
<Collapse defaultActiveKey={['1']} ghost expandIcon={() => <BarsOutlined />}>
|
||||
<Panel header="招标文件内容" key="1">
|
||||
<Card style={{textAlign: "center"}}>
|
||||
<div >
|
||||
<Button>请点此安装PageOffice控件</Button>
|
||||
<p style={{color: '#ff7070'}}>安装完毕后请重启浏览器浏览本页即可</p>
|
||||
</div>
|
||||
</Card>
|
||||
</Panel>
|
||||
</Collapse>
|
||||
</Card>
|
||||
</Spin>
|
||||
</Modal>
|
||||
|
||||
)
|
||||
|
||||
const UploadMethod = () => {
|
||||
getFileBidList(UploadID).then(res => {
|
||||
setUploadList(res)
|
||||
})
|
||||
}
|
||||
const UploadOnchange = async (file:any) => {
|
||||
let fileMsg = file.file;
|
||||
if (fileMsg.status === 'removed') {
|
||||
await deleteFileObjId(fileMsg.uid)
|
||||
setUploadList(file.fileList)
|
||||
}
|
||||
if (fileMsg.status === 'done') {
|
||||
message.success("上传成功");
|
||||
await UploadMethod();
|
||||
} else if (fileMsg.status === 'error') {
|
||||
message.error("上传失败");
|
||||
}
|
||||
}
|
||||
|
||||
// @ts-ignore
|
||||
return (
|
||||
<Modal
|
||||
mask={true}
|
||||
destroyOnClose
|
||||
title={titleName}
|
||||
visible={modalVisible}
|
||||
onCancel={() => onCancel()}
|
||||
className="返回"
|
||||
width={1000}
|
||||
bodyStyle={{padding: '32px 40px 48px', height: "600px", overflowY: 'auto'}}
|
||||
footer={renderFooter()}
|
||||
>
|
||||
<Spin spinning={spinning}>
|
||||
<Card>
|
||||
<Form
|
||||
{...layout}
|
||||
name="basic"
|
||||
form={form}
|
||||
>
|
||||
<Form.Item
|
||||
label="文件名称"
|
||||
name="documentName"
|
||||
rules={[
|
||||
{
|
||||
required: true,
|
||||
message: '当前项不可为空',
|
||||
},
|
||||
]}
|
||||
>
|
||||
<Input readOnly={editInformation}/>
|
||||
</Form.Item>
|
||||
<Form.Item
|
||||
label="关联标段"
|
||||
name="sectionIds"
|
||||
rules={[
|
||||
{
|
||||
required: true,
|
||||
message: '当前项不可为空',
|
||||
},
|
||||
]}
|
||||
>
|
||||
<Checkbox.Group
|
||||
|
||||
options={TpPackageId}
|
||||
style={{width: '100%'}}
|
||||
disabled={editInformation}
|
||||
>
|
||||
</Checkbox.Group>
|
||||
</Form.Item>
|
||||
<Form.Item
|
||||
label="招标文件附件"
|
||||
name="documentSetId"
|
||||
>
|
||||
<div className={style.bidding}>
|
||||
<div className="uploadTotal">
|
||||
<Upload
|
||||
{...UploadMethod}
|
||||
action={'/api/core-service-ebtp-updownload/v1/attachment/upload'}
|
||||
data={{"businessId": UploadID}}
|
||||
fileList={UploadList}
|
||||
onChange={UploadOnchange}
|
||||
>
|
||||
<Button type="primary" disabled={editInformation} className="upload"><UploadOutlined/>上传</Button>
|
||||
</Upload>
|
||||
<p className="uploadLabel">最大能上传100M文件!</p>
|
||||
</div>
|
||||
</div>
|
||||
</Form.Item>
|
||||
</Form>
|
||||
<Collapse defaultActiveKey={['1']} ghost expandIcon={() => <BarsOutlined/>}>
|
||||
<Panel header="招标文件内容" key="1">
|
||||
<Card style={{textAlign: "center"}}>
|
||||
<div>
|
||||
{docBtnName != "" ?
|
||||
<Weboffice memberBtnName={docBtnName} readonly={docReadOnly} btnStyle={docSaveBtn} btnName={"保存"}
|
||||
DocfileCode={docFileCode} ref={WebofficeRef} onRef={onRef}/>
|
||||
: null
|
||||
}
|
||||
</div>
|
||||
</Card>
|
||||
</Panel>
|
||||
</Collapse>
|
||||
</Card>
|
||||
</Spin>
|
||||
</Modal>
|
||||
|
||||
)
|
||||
}
|
||||
export default BiddingDocument
|
||||
|
@ -1,11 +1,19 @@
|
||||
import { UnorderedListOutlined } from "@ant-design/icons"
|
||||
import ProTable, { ProColumns } from "@ant-design/pro-table"
|
||||
import ProTable, {ActionType, ProColumns} from "@ant-design/pro-table"
|
||||
import {Button, Card, Divider, message} from "antd"
|
||||
import React, {useEffect, useState} from "react"
|
||||
import React, {useEffect, useRef, useState} from "react"
|
||||
import BiddingDocument from "./BiddingDocument"
|
||||
import {GetfileList, removefile, RemoveList, removeNotice} from "../service"
|
||||
import {
|
||||
GetfileList,
|
||||
GetfileUsablePackage,
|
||||
GetNoticeUsablePackage,
|
||||
removefile,
|
||||
RemoveList,
|
||||
removeNotice
|
||||
} from "../service"
|
||||
|
||||
import style from "./style.less"
|
||||
import {getProId} from "@/utils/session";
|
||||
|
||||
|
||||
interface DataItem {
|
||||
@ -24,14 +32,15 @@ interface DataItem {
|
||||
|
||||
|
||||
const BiddingDocumentList: React.FC<{}> = (props) => {
|
||||
const [Refresh,setRefresh] = useState<any>(Math.random);
|
||||
const [selectedRowsState, setSelectedRows] = useState<DataItem[]>([]);
|
||||
const [updateVisible, setUpdateVisible] = useState<boolean>(false)
|
||||
const [updateChange, setUpdateChange] = useState<string>('')
|
||||
/*列表数据*/
|
||||
const [dataSource,setDataSource]= useState<any[]>([]);
|
||||
const [type,setType] = useState<any>();// 状态 编辑or 查看
|
||||
const [tpId,setTpId] = useState<any>("4419993030303037111");//项目id
|
||||
const [pkId, setPkId] = useState<any>({});//公告id
|
||||
const [tpId,setTpId] = useState<any>(getProId);//项目id
|
||||
const [pkId, setPkId] = useState<any>("");//公告id
|
||||
|
||||
|
||||
const [dataSourcePage,setDataSourcePage] = useState<any>(1);//当前页数
|
||||
@ -39,6 +48,7 @@ const BiddingDocumentList: React.FC<{}> = (props) => {
|
||||
const [dataSourceNum,setDataSourceNum] = useState<any>(20);//当前每页行数
|
||||
|
||||
const [pageloading,setPageloading]=useState<boolean>(false);//加载遮罩
|
||||
|
||||
const columns: ProColumns<DataItem>[] = [
|
||||
{
|
||||
title: '招标文件',
|
||||
@ -69,7 +79,7 @@ const BiddingDocumentList: React.FC<{}> = (props) => {
|
||||
);
|
||||
let btn2= (
|
||||
<>
|
||||
<a onClick={() => toRead(record)}>查看</a><Divider type="vertical"/>
|
||||
<a onClick={() => toRead(record)}>查看</a>
|
||||
</>
|
||||
);
|
||||
/*if(true){
|
||||
@ -85,6 +95,7 @@ const BiddingDocumentList: React.FC<{}> = (props) => {
|
||||
},
|
||||
];
|
||||
useEffect(()=>{
|
||||
|
||||
setPageloading(true);
|
||||
GetfileList({
|
||||
"pageNo": dataSourcePage,
|
||||
@ -95,40 +106,53 @@ const BiddingDocumentList: React.FC<{}> = (props) => {
|
||||
setDataSource(res.data.records)
|
||||
setDataSourceAllNum(res.data.total)
|
||||
}else {
|
||||
message.error('程序出错,亲您稍后在世');
|
||||
message.error('程序出错,请您稍后再试:'+res.message);
|
||||
}
|
||||
setPageloading(false);
|
||||
|
||||
})
|
||||
},[tpId,dataSourcePage,dataSourceNum])
|
||||
},[tpId,dataSourcePage,dataSourceNum,Refresh])
|
||||
const toAdd = (props: any) => {
|
||||
setUpdateVisible(true);
|
||||
setUpdateChange('新建招标文件')
|
||||
setType("new");
|
||||
GetfileUsablePackage(tpId).then(res=>{
|
||||
if (res != null && res.message == "success") {
|
||||
if (res.data.length == 0) {
|
||||
message.warn("没有可关联的标包!")
|
||||
}else{
|
||||
setUpdateChange('新建招标文件')
|
||||
setType("new");
|
||||
setUpdateVisible(true);
|
||||
}
|
||||
}else {
|
||||
message.error("查询标包信息失败:"+res.message)
|
||||
}
|
||||
})
|
||||
}
|
||||
const toEdit = (props: any) => {
|
||||
setUpdateVisible(true);
|
||||
setUpdateChange('修改招标文件')
|
||||
setPkId(props.id)
|
||||
setType("edit");
|
||||
setUpdateVisible(true);
|
||||
}
|
||||
|
||||
const toRead = (props: any) => {
|
||||
setUpdateVisible(true);
|
||||
setUpdateChange('查看招标文件')
|
||||
setPkId(props.id)
|
||||
setType("read");
|
||||
setUpdateVisible(true);
|
||||
|
||||
}
|
||||
const toRemove = (props: any) => {
|
||||
setPageloading(true);
|
||||
removefile(props.id).then(res=>{
|
||||
if(res!=null&&res.message=="success"){
|
||||
message.success('删除成功');
|
||||
|
||||
}else {
|
||||
message.error("删除失败");
|
||||
message.error("删除失败:"+res.message);
|
||||
|
||||
}
|
||||
setPageloading(false);
|
||||
setRefresh(Math.random()+1)
|
||||
})
|
||||
|
||||
}
|
||||
@ -140,18 +164,20 @@ const BiddingDocumentList: React.FC<{}> = (props) => {
|
||||
param.push(item.id);
|
||||
}
|
||||
removefile(param).then(res => {
|
||||
console.log(res)
|
||||
if (res != null && res.message == "success") {
|
||||
message.success('删除成功');
|
||||
} else {
|
||||
message.error("删除失败");
|
||||
message.error("删除失败:"+res.message);
|
||||
}
|
||||
|
||||
setPageloading(false);
|
||||
setRefresh(Math.random()+1)
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
const updateChangeProps =['新增招标文件','修改招标文件']
|
||||
return (
|
||||
<Card>
|
||||
@ -175,6 +201,7 @@ const BiddingDocumentList: React.FC<{}> = (props) => {
|
||||
onChange: (_, selectedRows) => setSelectedRows(selectedRows),
|
||||
}}
|
||||
pagination={{
|
||||
hideOnSinglePage:true,
|
||||
pageSize:dataSourceNum,
|
||||
current:dataSourcePage,
|
||||
total: dataSourceAllNum,
|
||||
@ -182,10 +209,11 @@ const BiddingDocumentList: React.FC<{}> = (props) => {
|
||||
onShowSizeChange:((current, size)=>setDataSourceNum(size)),
|
||||
onChange:((page, pageSize)=>setDataSourcePage(page))
|
||||
}}
|
||||
|
||||
|
||||
/>
|
||||
<BiddingDocument titleName={updateChange} type={type} tpId={tpId} pkId={pkId} onCancel={() => setUpdateVisible(false)} modalVisible={updateVisible}/>
|
||||
{updateVisible?(
|
||||
<BiddingDocument key={Math.random()} SX={()=>setRefresh(Math.random()+1)} titleName={updateChange} type={type} tpId={tpId} pkId={pkId} onCancel={() => setUpdateVisible(false)} modalVisible={updateVisible}/>
|
||||
):null}
|
||||
|
||||
</Card>
|
||||
)
|
||||
}
|
||||
|
@ -30,7 +30,7 @@ interface BiddingAnnouncementProps {
|
||||
titleName:string;
|
||||
onCancel: () => void;
|
||||
type:string;
|
||||
tpId:"4419993030303037111";
|
||||
tpId:string;
|
||||
pkId:string;
|
||||
}
|
||||
|
||||
@ -75,7 +75,7 @@ const BiddingInvitation: React.FC<BiddingAnnouncementProps> = (props) => {
|
||||
setTpPackageId(value);
|
||||
setSping(false);
|
||||
}else{
|
||||
message.error('程序出错,亲您稍后在世');
|
||||
message.error('程序出错,请您稍后再试');
|
||||
onCancel();
|
||||
}
|
||||
});
|
||||
@ -109,12 +109,12 @@ const BiddingInvitation: React.FC<BiddingAnnouncementProps> = (props) => {
|
||||
setSping(false);
|
||||
}else{
|
||||
onCancel();
|
||||
message.error('程序出错,亲您稍后在世');
|
||||
message.error('程序出错,请您稍后再试');
|
||||
}
|
||||
});
|
||||
}else{
|
||||
onCancel();
|
||||
message.error('程序出错,亲您稍后在世');
|
||||
message.error('程序出错,请您稍后再试');
|
||||
}
|
||||
|
||||
|
||||
@ -142,7 +142,7 @@ const BiddingInvitation: React.FC<BiddingAnnouncementProps> = (props) => {
|
||||
});
|
||||
setSping(false);
|
||||
}else{
|
||||
message.error('程序出错,亲您稍后在世');
|
||||
message.error('程序出错,请您稍后再试');
|
||||
onCancel();
|
||||
}
|
||||
});
|
||||
@ -191,7 +191,13 @@ const BiddingInvitation: React.FC<BiddingAnnouncementProps> = (props) => {
|
||||
"sections":packageMsg,
|
||||
}
|
||||
creatNotice(type,fromData).then(res => {
|
||||
console.log(res.data);
|
||||
if(res!=null&&res.message=="success"){
|
||||
message.success("成功");
|
||||
onCancel();
|
||||
}else{
|
||||
message.error("失败");
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
@ -200,7 +206,6 @@ const BiddingInvitation: React.FC<BiddingAnnouncementProps> = (props) => {
|
||||
/*提交数据校验 beg*/
|
||||
const check = (data:any) => {
|
||||
let msg="false";
|
||||
console.log("",form.validateFields);
|
||||
// docStartTime 招标文件获取开始时间
|
||||
// docEndTime 招标文件获取截止时间
|
||||
// replyEndTime 投标截止时间
|
||||
@ -290,7 +295,7 @@ const BiddingInvitation: React.FC<BiddingAnnouncementProps> = (props) => {
|
||||
setChoiceHallData(res.data)
|
||||
setChoiceHallType(true);
|
||||
}else{
|
||||
message.error('程序出错,亲您稍后在世');
|
||||
message.error('程序出错,请您稍后再试');
|
||||
}
|
||||
|
||||
})
|
||||
@ -308,7 +313,6 @@ num: "0"
|
||||
openDate: "2020-12-09 (14:30~16:00)"
|
||||
ruleId: "1322091125061713920"
|
||||
startTime: "14:30"*/
|
||||
console.log("确认",data);
|
||||
}
|
||||
return (
|
||||
<Modal
|
||||
|
@ -5,6 +5,7 @@ import React, {useEffect, useRef, useState} from "react"
|
||||
import BiddingInvitation from "./BiddingInvitation"
|
||||
import {GetfileList, GetNoticeList, removeNotice, releaseNotice, releaseNoticeAgain, ApprovalNotice} from "../service"
|
||||
import style from "./style.less"
|
||||
import {getProId} from "@/utils/session";
|
||||
|
||||
/*
|
||||
* 招标公告开始
|
||||
@ -25,7 +26,7 @@ const BiddingInvitationList: React.FC<{}> = (props) => {
|
||||
const [updateChange, setUpdateChange] = useState<string>('');//弹窗名
|
||||
const [type, setType] = useState<any>('cease');//弹窗类型
|
||||
const [pkId,setPkId] =useState<string>();//公告/邀请函id
|
||||
const [tpId,setTpId] = useState<any>('4419993030303037111');//项目id
|
||||
const [tpId,setTpId] = useState<any>(getProId);//项目id
|
||||
const [dataSource,setdataSource]= useState<any[]>([]); //公告列表数据
|
||||
const [dataSourcePage,setDataSourcePage] = useState<any>(1);//当前页数
|
||||
const [dataSourceAllNum,setDataSourceAllNum] = useState<any>();//总行数
|
||||
@ -153,7 +154,7 @@ const BiddingInvitationList: React.FC<{}> = (props) => {
|
||||
setdataSource(res.data.records)
|
||||
setDataSourceAllNum(res.total)
|
||||
} else{
|
||||
message.error('程序出错,亲您稍后在世');
|
||||
message.error('程序出错,请您稍后再试');
|
||||
}
|
||||
setPageloading(false);
|
||||
})
|
||||
|
1
src/pages/Bid/BiddingAnnouncement/data.d.ts
vendored
1
src/pages/Bid/BiddingAnnouncement/data.d.ts
vendored
@ -1,3 +1,4 @@
|
||||
|
||||
export interface NoticeData {
|
||||
key?: number;
|
||||
annoEndTime?:string;//结束日期
|
||||
|
@ -106,6 +106,6 @@ export async function removefile(params?:any){
|
||||
/*开标大厅选择*/
|
||||
export async function getChooseRoom(params?:any){
|
||||
let method="get";
|
||||
return request('/api/biz-service-ebtp-bid/v1/bizbidopenhall/list?opendate'+params,{method:method})
|
||||
return request('/api/biz-service-ebtp-opening/v1/bizbidopenhall/list?openDate='+params,{method:method})
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user