Merge branch '20220720-单一简化流程结果录入' into 'release_20220812'

8.12 单一简化流程结果录入

See merge request eshop/fe_service_ebtp_frontend!225
This commit is contained in:
周建龙
2022-08-12 17:09:03 +08:00

View File

@ -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,21 @@ 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 [collapseActiveKeys, setCollapseActiveKeys] = useState<any[]>(['0']);
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 +71,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 +80,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 +93,28 @@ 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);
} }
//折叠面板change
const onCollapseChange = (key: any) => {
setCollapseActiveKeys(key);
};
//确认评审结果ListRender封装
const ResultListRender = (props: { item: any, setRefresh: () => void, getResultList: (record: any) => void, ListData: any, pushResult: (record: any) => void }) => {
const { item, setRefresh, 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,40 +156,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">
<Panel
header={item.sectionName} key={item.sectionId}>
<List <List
grid={{ grid={{
gutter: 16, gutter: 16,
@ -401,7 +380,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,10 +395,8 @@ 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={() => {
onClick={async () => { form.validateFields().then(async () => {
setSpintype(true);
await form.validateFields().then(async () => {
await saveResult({ await saveResult({
id: form.getFieldValue("resultId"), id: form.getFieldValue("resultId"),
suppliers: [ suppliers: [
@ -433,9 +410,9 @@ const BidAssessmentResults: React.FC<{}> = (props) => {
} }
] ]
}).then((res) => { }).then((res) => {
if (res.success) { message.success('保存成功!') } if (res.success) { message.success('保存成功!'); setRefresh(); }
})
}) })
}).finally(() => setSpintype(false));
}} }}
></Button> ></Button>
{ {
@ -447,7 +424,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>
} }
@ -463,10 +440,32 @@ const BidAssessmentResults: React.FC<{}> = (props) => {
}} }}
> >
</List> </List>
)
}
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>
<Collapse activeKey={collapseActiveKeys} onChange={onCollapseChange} className="calibration-panel">
{ListData.map((item, index) => (
<Panel header={item.sectionName} key={index}>
<ResultListRender item={item} setRefresh={() => { setRefresh(Refresh + 1); }} getResultList={getResultList} ListData={ListData} pushResult={pushResult} />
</Panel> </Panel>
))}
</Collapse> </Collapse>
)}
/>
<CurrentTable assessRoomId={assessRoomId} ChangeNoticeListVisible={currentTable} <CurrentTable assessRoomId={assessRoomId} ChangeNoticeListVisible={currentTable}
onCancel={() => setCurrentTable(false)} /> onCancel={() => setCurrentTable(false)} />
</Card> </Card>