7.20 单一简化流程结果录入
This commit is contained in:
@ -1,4 +1,4 @@
|
|||||||
import React, { useEffect, useState } from 'react';
|
import React, { useEffect, useMemo, useState } from 'react';
|
||||||
import { Button, Card, Collapse, Form, Input, List, message, Popover, Select, Space, Spin, Typography } from "antd";
|
import { Button, Card, Collapse, Form, Input, List, message, Popover, Select, Space, Spin, Typography } from "antd";
|
||||||
import ProTable from "@ant-design/pro-table";
|
import ProTable from "@ant-design/pro-table";
|
||||||
import { getBidAssessmentResultList, getBidAssessmentResultsList, pushBidAssessmentResult, saveResult } from "./service"
|
import { getBidAssessmentResultList, getBidAssessmentResultsList, pushBidAssessmentResult, saveResult } from "./service"
|
||||||
@ -11,19 +11,19 @@ import { isEmpty } from '@/utils/CommonUtils';
|
|||||||
const BidAssessmentResults: React.FC<{}> = (props) => {
|
const BidAssessmentResults: React.FC<{}> = (props) => {
|
||||||
const [Refresh, setRefresh] = useState<number>(0);
|
const [Refresh, setRefresh] = useState<number>(0);
|
||||||
const { Panel } = Collapse;
|
const { Panel } = Collapse;
|
||||||
const [pageloading, setPageloading] = useState<boolean>(false);
|
|
||||||
const [ListData, setListData] = useState<any>();
|
const [ListData, setListData] = useState<any>();
|
||||||
const [assessRoomId, setAssessRoomId] = useState<any>();
|
const [assessRoomId, setAssessRoomId] = useState<any>();
|
||||||
const [currentTable, setCurrentTable] = useState<boolean>(false);
|
const [currentTable, setCurrentTable] = useState<boolean>(false);
|
||||||
const [proID, setProID] = useState<any>(getProId);
|
|
||||||
const [spintype, setSpintype] = useState<boolean>(false);
|
const [spintype, setSpintype] = useState<boolean>(false);
|
||||||
//单一来源简化
|
//查询条件-包件名称
|
||||||
const [form] = Form.useForm();
|
const [name, setName] = useState<string>('');
|
||||||
|
|
||||||
const FormItem = Form.Item;
|
const FormItem = Form.Item;
|
||||||
const { Option } = Select;
|
const { Option } = Select;
|
||||||
const { Paragraph, Text } = Typography;
|
const { Paragraph, Text } = Typography;
|
||||||
const firstRvwResult = ['否', '是'];
|
const firstRvwResult = ['否', '是'];
|
||||||
const [contractedMoney, contractedMoneySet] = useState('')
|
const [contractedMoney, contractedMoneySet] = useState('')
|
||||||
|
const proID = getProId();//项目id
|
||||||
let name1 = "中标";
|
let name1 = "中标";
|
||||||
let name2 = "评标";
|
let name2 = "评标";
|
||||||
let name3 = "标段";
|
let name3 = "标段";
|
||||||
@ -69,10 +69,6 @@ const BidAssessmentResults: React.FC<{}> = (props) => {
|
|||||||
type4 = true;
|
type4 = true;
|
||||||
type5 = true;
|
type5 = true;
|
||||||
}
|
}
|
||||||
//综合得分展开关闭
|
|
||||||
const [expandTotalScore, setExpandTotalScore] = useState<boolean>(proDict == "procurement_mode_7" ? false : true);
|
|
||||||
//查询条件-包件名称
|
|
||||||
const [name, setName] = useState<string>('');
|
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
setSpintype(true);
|
setSpintype(true);
|
||||||
@ -82,26 +78,10 @@ const BidAssessmentResults: React.FC<{}> = (props) => {
|
|||||||
setListData(res.data);
|
setListData(res.data);
|
||||||
}
|
}
|
||||||
}).finally(() => {
|
}).finally(() => {
|
||||||
setSpintype(false)
|
setSpintype(false);
|
||||||
})
|
})
|
||||||
}, [proID, Refresh])
|
}, [proID, Refresh])
|
||||||
|
|
||||||
//初审详审原因render
|
|
||||||
const rvwResultRender = (field: any, reason: any) => {
|
|
||||||
const content = (
|
|
||||||
<Paragraph>
|
|
||||||
<blockquote style={{ width: '300px' }}>{reason}</blockquote>
|
|
||||||
</Paragraph>
|
|
||||||
)
|
|
||||||
return isEmpty(field) || field == '-' ? '-' : (
|
|
||||||
<span>
|
|
||||||
{firstRvwResult[field]}
|
|
||||||
{field == 0 && <Popover content={content} trigger="hover" placement="topLeft">
|
|
||||||
<Text code style={{ cursor: 'pointer' }}>说明</Text>
|
|
||||||
</Popover>}
|
|
||||||
</span>)
|
|
||||||
}
|
|
||||||
|
|
||||||
/*推送评标结果*/
|
/*推送评标结果*/
|
||||||
const pushResult = (record: any) => {
|
const pushResult = (record: any) => {
|
||||||
setSpintype(true);
|
setSpintype(true);
|
||||||
@ -111,15 +91,23 @@ const BidAssessmentResults: React.FC<{}> = (props) => {
|
|||||||
setRefresh(Refresh + 1);
|
setRefresh(Refresh + 1);
|
||||||
}
|
}
|
||||||
}).finally(() => {
|
}).finally(() => {
|
||||||
setSpintype(false)
|
setSpintype(false);
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/*推送列表查看*/
|
/*推送列表查看*/
|
||||||
const getResultList = (record: any) => {
|
const getResultList = (record: any) => {
|
||||||
setAssessRoomId(record.assesRoomId);
|
setAssessRoomId(record.assesRoomId);
|
||||||
setCurrentTable(true);
|
setCurrentTable(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//确认评审结果ListRender封装
|
||||||
|
const ResultListRender = (props: { item: any, index: any, setSpintype: (value: boolean) => void, getResultList: (record: any) => void, ListData: any, pushResult: (record: any) => void }) => {
|
||||||
|
const { item, index, setSpintype, getResultList, ListData, pushResult } = props;
|
||||||
|
//单一来源简化
|
||||||
|
const [form] = Form.useForm();
|
||||||
|
//综合得分展开关闭
|
||||||
|
const [expandTotalScore, setExpandTotalScore] = useState<boolean>(proDict == "procurement_mode_7" ? false : true);
|
||||||
|
|
||||||
//单一简化
|
//单一简化
|
||||||
function returnInput(name: any, name2: any, val: any, must: boolean, pattern?: boolean, hid?: boolean) {
|
function returnInput(name: any, name2: any, val: any, must: boolean, pattern?: boolean, hid?: boolean) {
|
||||||
@ -161,37 +149,24 @@ const BidAssessmentResults: React.FC<{}> = (props) => {
|
|||||||
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//初审详审原因render
|
||||||
|
const rvwResultRender = (field: any, reason: any) => {
|
||||||
|
const content = (
|
||||||
|
<Paragraph>
|
||||||
|
<blockquote style={{ width: '300px' }}>{reason}</blockquote>
|
||||||
|
</Paragraph>
|
||||||
|
)
|
||||||
|
return isEmpty(field) || field == '-' ? '-' : (
|
||||||
|
<span>
|
||||||
|
{firstRvwResult[field]}
|
||||||
|
{field == 0 && <Popover content={content} trigger="hover" placement="topLeft">
|
||||||
|
<Text code style={{ cursor: 'pointer' }}>说明</Text>
|
||||||
|
</Popover>}
|
||||||
|
</span>)
|
||||||
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
|
||||||
<Spin spinning={spintype}>
|
|
||||||
<Card bordered={false} bodyStyle={{ padding: '0px 24px' }}>
|
|
||||||
<div style={{ textAlign: 'right' }}>
|
|
||||||
<Space style={{ margin: '16px 0px' }}>
|
|
||||||
<Input type="text" placeholder={`${name3}名称`} value={name} onChange={(event) => setName(event.target.value)} />
|
|
||||||
<Button type="primary" key='c' onClick={() => {
|
|
||||||
setRefresh(Refresh + 1);
|
|
||||||
}}>查询</Button>
|
|
||||||
<Button key='reload' onClick={() => {
|
|
||||||
setName('');
|
|
||||||
setRefresh(Refresh + 1);
|
|
||||||
}}>重置</Button>
|
|
||||||
</Space>
|
|
||||||
</div>
|
|
||||||
<List
|
|
||||||
grid={{
|
|
||||||
gutter: 16,
|
|
||||||
xs: 1,
|
|
||||||
sm: 1,
|
|
||||||
md: 1,
|
|
||||||
lg: 1,
|
|
||||||
xl: 1,
|
|
||||||
xxl: 1,
|
|
||||||
}}
|
|
||||||
style={{ paddingTop: "24px;" }}
|
|
||||||
itemLayout="vertical"
|
|
||||||
rowKey="sectionId"
|
|
||||||
dataSource={ListData}
|
|
||||||
renderItem={(item: any, index: any) => (
|
|
||||||
<Collapse defaultActiveKey={index == 0 ? item.sectionId : ""} className="calibration-panel">
|
<Collapse defaultActiveKey={index == 0 ? item.sectionId : ""} className="calibration-panel">
|
||||||
<Panel
|
<Panel
|
||||||
header={item.sectionName} key={item.sectionId}>
|
header={item.sectionName} key={item.sectionId}>
|
||||||
@ -401,7 +376,7 @@ const BidAssessmentResults: React.FC<{}> = (props) => {
|
|||||||
return (
|
return (
|
||||||
<ProTable
|
<ProTable
|
||||||
size={"small"}
|
size={"small"}
|
||||||
loading={pageloading}
|
key={index}
|
||||||
scroll={{ x: true }}
|
scroll={{ x: true }}
|
||||||
search={false}
|
search={false}
|
||||||
options={false}
|
options={false}
|
||||||
@ -416,7 +391,6 @@ const BidAssessmentResults: React.FC<{}> = (props) => {
|
|||||||
<Button
|
<Button
|
||||||
hidden={btnAuthority(['ebtp-agency-project-manager', 'ebtp-purchase']) || defId != 'negotiation_single_simple' || item1.pushStatus == "1"}
|
hidden={btnAuthority(['ebtp-agency-project-manager', 'ebtp-purchase']) || defId != 'negotiation_single_simple' || item1.pushStatus == "1"}
|
||||||
type="primary"
|
type="primary"
|
||||||
disabled={spintype}
|
|
||||||
onClick={async () => {
|
onClick={async () => {
|
||||||
setSpintype(true);
|
setSpintype(true);
|
||||||
await form.validateFields().then(async () => {
|
await form.validateFields().then(async () => {
|
||||||
@ -447,7 +421,7 @@ const BidAssessmentResults: React.FC<{}> = (props) => {
|
|||||||
!item1.reviewList[0].priceReview
|
!item1.reviewList[0].priceReview
|
||||||
}
|
}
|
||||||
disabled={item1.pushStatus == "1" ? true : false} key={"1"}
|
disabled={item1.pushStatus == "1" ? true : false} key={"1"}
|
||||||
onClick={() => pushResult(item1)} type="primary" loading={spintype}>确认{name2}结果</Button>
|
onClick={() => pushResult(item1)} type="primary">确认{name2}结果</Button>
|
||||||
:
|
:
|
||||||
<Button hidden={btnAuthority(['ebtp-agency-project-manager', 'ebtp-purchase'])} disabled={item1.pushStatus == "1" ? true : false} key={"1"} onClick={() => pushResult(item1)} type="primary"> 确认{name2}结果 </Button>
|
<Button hidden={btnAuthority(['ebtp-agency-project-manager', 'ebtp-purchase'])} disabled={item1.pushStatus == "1" ? true : false} key={"1"} onClick={() => pushResult(item1)} type="primary"> 确认{name2}结果 </Button>
|
||||||
}
|
}
|
||||||
@ -465,8 +439,48 @@ const BidAssessmentResults: React.FC<{}> = (props) => {
|
|||||||
</List>
|
</List>
|
||||||
</Panel>
|
</Panel>
|
||||||
</Collapse>
|
</Collapse>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
const list = useMemo(() => {
|
||||||
|
return (
|
||||||
|
<List
|
||||||
|
grid={{
|
||||||
|
gutter: 16,
|
||||||
|
xs: 1,
|
||||||
|
sm: 1,
|
||||||
|
md: 1,
|
||||||
|
lg: 1,
|
||||||
|
xl: 1,
|
||||||
|
xxl: 1,
|
||||||
|
}}
|
||||||
|
style={{ paddingTop: "24px;" }}
|
||||||
|
itemLayout="vertical"
|
||||||
|
rowKey="sectionId"
|
||||||
|
dataSource={ListData}
|
||||||
|
renderItem={(item: any, index: any) => (
|
||||||
|
<ResultListRender item={item} index={index} key={index} setSpintype={(value) => { setSpintype(value); }} getResultList={getResultList} ListData={ListData} pushResult={pushResult} />
|
||||||
)}
|
)}
|
||||||
/>
|
/>
|
||||||
|
)
|
||||||
|
}, [ListData])
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<Spin spinning={spintype}>
|
||||||
|
<Card bordered={false} bodyStyle={{ padding: '0px 24px' }}>
|
||||||
|
<div style={{ textAlign: 'right' }}>
|
||||||
|
<Space style={{ margin: '16px 0px' }}>
|
||||||
|
<Input type="text" placeholder={`${name3}名称`} value={name} onChange={(event) => setName(event.target.value)} />
|
||||||
|
<Button type="primary" key='c' onClick={() => {
|
||||||
|
setRefresh(Refresh + 1);
|
||||||
|
}}>查询</Button>
|
||||||
|
<Button key='reload' onClick={() => {
|
||||||
|
setName('');
|
||||||
|
setRefresh(Refresh + 1);
|
||||||
|
}}>重置</Button>
|
||||||
|
</Space>
|
||||||
|
</div>
|
||||||
|
{list}
|
||||||
<CurrentTable assessRoomId={assessRoomId} ChangeNoticeListVisible={currentTable}
|
<CurrentTable assessRoomId={assessRoomId} ChangeNoticeListVisible={currentTable}
|
||||||
onCancel={() => setCurrentTable(false)} />
|
onCancel={() => setCurrentTable(false)} />
|
||||||
</Card>
|
</Card>
|
||||||
|
Reference in New Issue
Block a user