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 ProTable from "@ant-design/pro-table";
|
||||
import { getBidAssessmentResultList, getBidAssessmentResultsList, pushBidAssessmentResult, saveResult } from "./service"
|
||||
@ -11,19 +11,19 @@ import { isEmpty } from '@/utils/CommonUtils';
|
||||
const BidAssessmentResults: React.FC<{}> = (props) => {
|
||||
const [Refresh, setRefresh] = useState<number>(0);
|
||||
const { Panel } = Collapse;
|
||||
const [pageloading, setPageloading] = useState<boolean>(false);
|
||||
const [ListData, setListData] = useState<any>();
|
||||
const [assessRoomId, setAssessRoomId] = useState<any>();
|
||||
const [currentTable, setCurrentTable] = useState<boolean>(false);
|
||||
const [proID, setProID] = useState<any>(getProId);
|
||||
const [spintype, setSpintype] = useState<boolean>(false);
|
||||
//单一来源简化
|
||||
const [form] = Form.useForm();
|
||||
//查询条件-包件名称
|
||||
const [name, setName] = useState<string>('');
|
||||
|
||||
const FormItem = Form.Item;
|
||||
const { Option } = Select;
|
||||
const { Paragraph, Text } = Typography;
|
||||
const firstRvwResult = ['否', '是'];
|
||||
const [contractedMoney, contractedMoneySet] = useState('')
|
||||
const proID = getProId();//项目id
|
||||
let name1 = "中标";
|
||||
let name2 = "评标";
|
||||
let name3 = "标段";
|
||||
@ -69,10 +69,6 @@ const BidAssessmentResults: React.FC<{}> = (props) => {
|
||||
type4 = true;
|
||||
type5 = true;
|
||||
}
|
||||
//综合得分展开关闭
|
||||
const [expandTotalScore, setExpandTotalScore] = useState<boolean>(proDict == "procurement_mode_7" ? false : true);
|
||||
//查询条件-包件名称
|
||||
const [name, setName] = useState<string>('');
|
||||
|
||||
useEffect(() => {
|
||||
setSpintype(true);
|
||||
@ -82,26 +78,10 @@ const BidAssessmentResults: React.FC<{}> = (props) => {
|
||||
setListData(res.data);
|
||||
}
|
||||
}).finally(() => {
|
||||
setSpintype(false)
|
||||
setSpintype(false);
|
||||
})
|
||||
}, [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) => {
|
||||
setSpintype(true);
|
||||
@ -111,56 +91,379 @@ const BidAssessmentResults: React.FC<{}> = (props) => {
|
||||
setRefresh(Refresh + 1);
|
||||
}
|
||||
}).finally(() => {
|
||||
setSpintype(false)
|
||||
setSpintype(false);
|
||||
})
|
||||
}
|
||||
|
||||
/*推送列表查看*/
|
||||
const getResultList = (record: any) => {
|
||||
setAssessRoomId(record.assesRoomId);
|
||||
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) {
|
||||
let rule = [
|
||||
{ required: must },
|
||||
{ pattern: /^.{0,21}$/, message: '超长' }
|
||||
];
|
||||
pattern && rule.push({ pattern: /(^-?(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d{1,4})?$)/, message: '请输入正确数值(最多4位小数)' });
|
||||
return (
|
||||
<Form form={form}>
|
||||
<FormItem
|
||||
name={name}
|
||||
hidden={hid}
|
||||
messageVariables={{ label: name2 }}
|
||||
rules={rule}
|
||||
initialValue={val}
|
||||
>
|
||||
<Input
|
||||
readOnly={ListData[0].status == 3}
|
||||
placeholder={'请输入' + name2}
|
||||
/>
|
||||
</FormItem>
|
||||
</Form>
|
||||
)
|
||||
}
|
||||
function returnSelect(name: any, val: any) {
|
||||
return (
|
||||
<Form form={form}>
|
||||
<FormItem
|
||||
name={name}
|
||||
initialValue={val === 0 ? '否' : '是'}
|
||||
>
|
||||
<Select>
|
||||
<Option value="否" title='否'>否</Option>
|
||||
<Option value="是" title='是'>是</Option>
|
||||
</Select>
|
||||
</FormItem>
|
||||
</Form>
|
||||
|
||||
)
|
||||
}
|
||||
|
||||
//初审详审原因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>)
|
||||
}
|
||||
|
||||
//单一简化
|
||||
function returnInput(name: any, name2: any, val: any, must: boolean, pattern?: boolean, hid?: boolean) {
|
||||
let rule = [
|
||||
{ required: must },
|
||||
{ pattern: /^.{0,21}$/, message: '超长' }
|
||||
];
|
||||
pattern && rule.push({ pattern: /(^-?(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d{1,4})?$)/, message: '请输入正确数值(最多4位小数)' });
|
||||
return (
|
||||
<Form form={form}>
|
||||
<FormItem
|
||||
name={name}
|
||||
hidden={hid}
|
||||
messageVariables={{ label: name2 }}
|
||||
rules={rule}
|
||||
initialValue={val}
|
||||
>
|
||||
<Input
|
||||
readOnly={ListData[0].status == 3}
|
||||
placeholder={'请输入' + name2}
|
||||
/>
|
||||
</FormItem>
|
||||
</Form>
|
||||
<Collapse defaultActiveKey={index == 0 ? item.sectionId : ""} className="calibration-panel">
|
||||
<Panel
|
||||
header={item.sectionName} key={item.sectionId}>
|
||||
<List
|
||||
grid={{
|
||||
gutter: 16,
|
||||
xs: 1,
|
||||
sm: 1,
|
||||
md: 1,
|
||||
lg: 1,
|
||||
xl: 1,
|
||||
xxl: 1,
|
||||
}}
|
||||
itemLayout="vertical"
|
||||
rowKey="assesRoomId"
|
||||
dataSource={item.assesList}
|
||||
renderItem={(item1: any, index: any) => {
|
||||
//标段上的报价类型确认 1-% 0-元
|
||||
let sectionQuot = item?.quotationMethodDict == 'quotation_method_2' || item?.quotationMethodDict == 'quotation_method_3' ? '1' : '0'
|
||||
const columns: any = [
|
||||
{
|
||||
title: '排名',
|
||||
dataIndex: 'sort',
|
||||
valueType: 'text',
|
||||
width: 50,
|
||||
},
|
||||
{
|
||||
title: '供应商名称',
|
||||
dataIndex: 'companyName',
|
||||
valueType: 'text',
|
||||
width: 120,
|
||||
},
|
||||
{
|
||||
hideInTable: type1,
|
||||
title: proDict == 'procurement_mode_7' ? '报价总金额净价(元)' : sectionQuot == '1' ? '报价(%)' : '报价(元)',
|
||||
dataIndex: 'price',
|
||||
width: 100,
|
||||
render: (_: any, record: any) => {
|
||||
if (defId === 'negotiation_single_simple' && record.pushStatus == "0") {
|
||||
return returnInput('price', '报价', record.price, true, true)
|
||||
} else {
|
||||
return record.price
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
hideInTable: type2,
|
||||
title: proDict == 'procurement_mode_7' ? '报价总金额含税价(元)' : sectionQuot == '1' ? '评审价(%)' : '评审价(元)',
|
||||
dataIndex: 'priceReview',
|
||||
width: 100,
|
||||
render: (_: any, record: any) => {
|
||||
if (defId === 'negotiation_single_simple' && record.pushStatus == "0") {
|
||||
return returnInput('priceReview', '评审价', record.priceReview, true, true)
|
||||
} else {
|
||||
return record.priceReview
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '商务分',
|
||||
dataIndex: 'businessScore',
|
||||
width: 60,
|
||||
hideInTable: expandTotalScore,
|
||||
render: (_: any, record: any) => {
|
||||
if (defId === 'negotiation_single_simple' && record.pushStatus == "0") {
|
||||
return returnInput('businessScore', '商务分', record.businessScore, false, true)
|
||||
} else {
|
||||
return record.businessScore
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '技术分',
|
||||
width: 60,
|
||||
dataIndex: 'technicalScore',
|
||||
hideInTable: expandTotalScore,
|
||||
render: (_: any, record: any) => {
|
||||
if (defId === 'negotiation_single_simple' && record.pushStatus == "0") {
|
||||
return returnInput('technicalScore', '技术分', record.technicalScore, false, true)
|
||||
} else {
|
||||
return record.technicalScore
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '服务分',
|
||||
width: 60,
|
||||
dataIndex: 'serviceScore',
|
||||
hideInTable: expandTotalScore,
|
||||
render: (_: any, record: any) => {
|
||||
if (defId === 'negotiation_single_simple' && record.pushStatus == "0") {
|
||||
return returnInput('serviceScore', '服务分', record.serviceScore, false, true)
|
||||
} else {
|
||||
return record.serviceScore
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '价格分',
|
||||
width: 60,
|
||||
dataIndex: 'priceScore',
|
||||
hideInTable: expandTotalScore,
|
||||
render: (_: any, record: any) => {
|
||||
if (defId === 'negotiation_single_simple' && record.pushStatus == "0") {
|
||||
return returnInput('priceScore', '价格分', record.priceScore, false, true)
|
||||
} else {
|
||||
return record.priceScore
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
title: (
|
||||
<span>
|
||||
综合得分
|
||||
<Text keyboard onClick={() => setExpandTotalScore(!expandTotalScore)} style={{ cursor: 'pointer', color: '#1890ff' }}>{expandTotalScore ? "展开" : "收起"}</Text>
|
||||
</span>
|
||||
),
|
||||
dataIndex: 'totalScore',
|
||||
width: 120,
|
||||
render: (_: any, record: any) => {
|
||||
if (defId === 'negotiation_single_simple' && record.pushStatus == "0") {
|
||||
return returnInput('totalScore', '综合得分', record.totalScore, false, true)
|
||||
} else {
|
||||
return record.totalScore
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
hideInTable: defId === 'negotiation_single_simple',
|
||||
title: '是否通过初步评审',
|
||||
dataIndex: 'firstRvwResult',
|
||||
width: 100,
|
||||
render: (_: any, record: any) => rvwResultRender(_, record.firstRvwReason)
|
||||
},
|
||||
{
|
||||
hideInTable: type5 || defId === 'negotiation_single_simple',
|
||||
title: '是否通过详审',
|
||||
dataIndex: 'detailRvwResult',
|
||||
width: 100,
|
||||
render: (_: any, record: any) => rvwResultRender(_, record.detailRvwReason)
|
||||
},
|
||||
{
|
||||
hideInTable: type5 || defId === 'negotiation_single_simple',
|
||||
title: '应答是否有效',
|
||||
width: 80,
|
||||
dataIndex: 'answerValid',
|
||||
render: (_: any, record: any) => {
|
||||
return record.answerValid === 1 ? '是' : record.answerValid === 0 ? '否' : '-'
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '是否' + name1 + '候选人',
|
||||
dataIndex: 'winnerCandidate',
|
||||
width: 100,
|
||||
render: (_: any, record: any) => {
|
||||
if (defId === 'negotiation_single_simple' && record.pushStatus == "0") {
|
||||
return returnSelect('winnerCandidate', record.winnerCandidate)
|
||||
} else {
|
||||
return record.winnerCandidate === 1 ? '是' : '否'
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
hideInTable: type5 || defId === 'negotiation_single_simple',
|
||||
title: '是否拟' + name1 + '人',
|
||||
width: 80,
|
||||
dataIndex: 'winnerBidder',
|
||||
render: (_: any, record: any) => {
|
||||
return record.winnerBidder === 1 ? '是' : record.winnerBidder === 0 ? '否' : '-'
|
||||
}
|
||||
},
|
||||
{
|
||||
hideInTable: type3,
|
||||
title: '拟签约金额(不含增值税)(元)',
|
||||
width: 150,
|
||||
dataIndex: 'contractedMoney',
|
||||
render: (_: any, record: any) => {
|
||||
if (defId === 'negotiation_single_simple' && record.pushStatus == "0") {
|
||||
return (
|
||||
<>
|
||||
{returnInput('contractedMoney', '拟签约金额', record.contractedMoney, false, true)}
|
||||
{returnInput('id', '供应商id', record.id, false, false, true)}
|
||||
{returnInput('resultId', '结果id', record.resultId, false, false, true)}
|
||||
{returnInput('companyId', '公司id', record.companyId, false, false, true)}
|
||||
{returnInput('companyName', '公司名称', record.companyName, false, false, true)}
|
||||
</>
|
||||
)
|
||||
} else {
|
||||
return record.contractedMoney
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
hideInTable: type4,
|
||||
title: '增值税金额(元)',
|
||||
width: 150,
|
||||
dataIndex: 'taxRatePrice',
|
||||
render: (_: any, record: any) => {
|
||||
if (defId === 'negotiation_single_simple' && record.pushStatus == "0") {
|
||||
return returnInput('taxRatePrice', '增值税金额', record.taxRatePrice, false, true)
|
||||
} else {
|
||||
return record.taxRatePrice
|
||||
}
|
||||
}
|
||||
},
|
||||
]
|
||||
return (
|
||||
<ProTable
|
||||
size={"small"}
|
||||
key={index}
|
||||
scroll={{ x: true }}
|
||||
search={false}
|
||||
options={false}
|
||||
columns={columns}
|
||||
dataSource={item1.reviewList}
|
||||
toolbar={{
|
||||
title: item1.againEvaluationSort == 'null' || isEmpty(item1.againEvaluationSort) ? null : `第${item1.againEvaluationSort}次重审`,
|
||||
}}
|
||||
rowKey="id"
|
||||
toolBarRender={(record: any) => [
|
||||
<>
|
||||
<Button
|
||||
hidden={btnAuthority(['ebtp-agency-project-manager', 'ebtp-purchase']) || defId != 'negotiation_single_simple' || item1.pushStatus == "1"}
|
||||
type="primary"
|
||||
onClick={async () => {
|
||||
setSpintype(true);
|
||||
await form.validateFields().then(async () => {
|
||||
await saveResult({
|
||||
id: form.getFieldValue("resultId"),
|
||||
suppliers: [
|
||||
{
|
||||
...form.getFieldsValue(),
|
||||
"winnerCandidate": form.getFieldValue("winnerCandidate") == '是' ? '1' : '0',
|
||||
"firstRvwResult": form.getFieldValue("firstRvwResult") == '是' ? '1' : '0',
|
||||
"detailRvwResult": form.getFieldValue("detailRvwResult") == '是' ? '1' : '0',
|
||||
"answerValid": form.getFieldValue("answerValid") == '是' ? '1' : '0',
|
||||
"winnerBidder": form.getFieldValue("winnerBidder") == '是' ? '1' : '0',
|
||||
}
|
||||
]
|
||||
}).then((res) => {
|
||||
if (res.success) { message.success('保存成功!') }
|
||||
})
|
||||
}).finally(() => setSpintype(false));
|
||||
}}
|
||||
>保存</Button>
|
||||
{
|
||||
defId === 'negotiation_single_simple' ?
|
||||
<Button
|
||||
hidden={
|
||||
btnAuthority(['ebtp-agency-project-manager', 'ebtp-purchase']) ||
|
||||
!item1.reviewList[0].price ||
|
||||
!item1.reviewList[0].priceReview
|
||||
}
|
||||
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>
|
||||
}
|
||||
<Button key={"2"} onClick={() => getResultList(item1)}>查看日志</Button>
|
||||
</>
|
||||
]}
|
||||
pagination={{
|
||||
defaultPageSize: 10,
|
||||
showSizeChanger: false,
|
||||
}}
|
||||
/>
|
||||
)
|
||||
}}
|
||||
>
|
||||
</List>
|
||||
</Panel>
|
||||
</Collapse>
|
||||
)
|
||||
}
|
||||
function returnSelect(name: any, val: any) {
|
||||
return (
|
||||
<Form form={form}>
|
||||
<FormItem
|
||||
name={name}
|
||||
initialValue={val === 0 ? '否' : '是'}
|
||||
>
|
||||
<Select>
|
||||
<Option value="否" title='否'>否</Option>
|
||||
<Option value="是" title='是'>是</Option>
|
||||
</Select>
|
||||
</FormItem>
|
||||
</Form>
|
||||
|
||||
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}>
|
||||
@ -177,296 +480,7 @@ const BidAssessmentResults: React.FC<{}> = (props) => {
|
||||
}}>重置</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
|
||||
grid={{
|
||||
gutter: 16,
|
||||
xs: 1,
|
||||
sm: 1,
|
||||
md: 1,
|
||||
lg: 1,
|
||||
xl: 1,
|
||||
xxl: 1,
|
||||
}}
|
||||
itemLayout="vertical"
|
||||
rowKey="assesRoomId"
|
||||
dataSource={item.assesList}
|
||||
renderItem={(item1: any, index: any) => {
|
||||
//标段上的报价类型确认 1-% 0-元
|
||||
let sectionQuot = item?.quotationMethodDict == 'quotation_method_2' || item?.quotationMethodDict == 'quotation_method_3' ? '1' : '0'
|
||||
const columns: any = [
|
||||
{
|
||||
title: '排名',
|
||||
dataIndex: 'sort',
|
||||
valueType: 'text',
|
||||
width: 50,
|
||||
},
|
||||
{
|
||||
title: '供应商名称',
|
||||
dataIndex: 'companyName',
|
||||
valueType: 'text',
|
||||
width: 120,
|
||||
},
|
||||
{
|
||||
hideInTable: type1,
|
||||
title: proDict == 'procurement_mode_7' ? '报价总金额净价(元)' : sectionQuot == '1' ? '报价(%)' : '报价(元)',
|
||||
dataIndex: 'price',
|
||||
width: 100,
|
||||
render: (_: any, record: any) => {
|
||||
if (defId === 'negotiation_single_simple' && record.pushStatus == "0") {
|
||||
return returnInput('price', '报价', record.price, true, true)
|
||||
} else {
|
||||
return record.price
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
hideInTable: type2,
|
||||
title: proDict == 'procurement_mode_7' ? '报价总金额含税价(元)' : sectionQuot == '1' ? '评审价(%)' : '评审价(元)',
|
||||
dataIndex: 'priceReview',
|
||||
width: 100,
|
||||
render: (_: any, record: any) => {
|
||||
if (defId === 'negotiation_single_simple' && record.pushStatus == "0") {
|
||||
return returnInput('priceReview', '评审价', record.priceReview, true, true)
|
||||
} else {
|
||||
return record.priceReview
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '商务分',
|
||||
dataIndex: 'businessScore',
|
||||
width: 60,
|
||||
hideInTable: expandTotalScore,
|
||||
render: (_: any, record: any) => {
|
||||
if (defId === 'negotiation_single_simple' && record.pushStatus == "0") {
|
||||
return returnInput('businessScore', '商务分', record.businessScore, false, true)
|
||||
} else {
|
||||
return record.businessScore
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '技术分',
|
||||
width: 60,
|
||||
dataIndex: 'technicalScore',
|
||||
hideInTable: expandTotalScore,
|
||||
render: (_: any, record: any) => {
|
||||
if (defId === 'negotiation_single_simple' && record.pushStatus == "0") {
|
||||
return returnInput('technicalScore', '技术分', record.technicalScore, false, true)
|
||||
} else {
|
||||
return record.technicalScore
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '服务分',
|
||||
width: 60,
|
||||
dataIndex: 'serviceScore',
|
||||
hideInTable: expandTotalScore,
|
||||
render: (_: any, record: any) => {
|
||||
if (defId === 'negotiation_single_simple' && record.pushStatus == "0") {
|
||||
return returnInput('serviceScore', '服务分', record.serviceScore, false, true)
|
||||
} else {
|
||||
return record.serviceScore
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '价格分',
|
||||
width: 60,
|
||||
dataIndex: 'priceScore',
|
||||
hideInTable: expandTotalScore,
|
||||
render: (_: any, record: any) => {
|
||||
if (defId === 'negotiation_single_simple' && record.pushStatus == "0") {
|
||||
return returnInput('priceScore', '价格分', record.priceScore, false, true)
|
||||
} else {
|
||||
return record.priceScore
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
title: (
|
||||
<span>
|
||||
综合得分
|
||||
<Text keyboard onClick={() => setExpandTotalScore(!expandTotalScore)} style={{ cursor: 'pointer', color: '#1890ff' }}>{expandTotalScore ? "展开" : "收起"}</Text>
|
||||
</span>
|
||||
),
|
||||
dataIndex: 'totalScore',
|
||||
width: 120,
|
||||
render: (_: any, record: any) => {
|
||||
if (defId === 'negotiation_single_simple' && record.pushStatus == "0") {
|
||||
return returnInput('totalScore', '综合得分', record.totalScore, false, true)
|
||||
} else {
|
||||
return record.totalScore
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
hideInTable: defId === 'negotiation_single_simple',
|
||||
title: '是否通过初步评审',
|
||||
dataIndex: 'firstRvwResult',
|
||||
width: 100,
|
||||
render: (_: any, record: any) => rvwResultRender(_, record.firstRvwReason)
|
||||
},
|
||||
{
|
||||
hideInTable: type5 || defId === 'negotiation_single_simple',
|
||||
title: '是否通过详审',
|
||||
dataIndex: 'detailRvwResult',
|
||||
width: 100,
|
||||
render: (_: any, record: any) => rvwResultRender(_, record.detailRvwReason)
|
||||
},
|
||||
{
|
||||
hideInTable: type5 || defId === 'negotiation_single_simple',
|
||||
title: '应答是否有效',
|
||||
width: 80,
|
||||
dataIndex: 'answerValid',
|
||||
render: (_: any, record: any) => {
|
||||
return record.answerValid === 1 ? '是' : record.answerValid === 0 ? '否' : '-'
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '是否' + name1 + '候选人',
|
||||
dataIndex: 'winnerCandidate',
|
||||
width: 100,
|
||||
render: (_: any, record: any) => {
|
||||
if (defId === 'negotiation_single_simple' && record.pushStatus == "0") {
|
||||
return returnSelect('winnerCandidate', record.winnerCandidate)
|
||||
} else {
|
||||
return record.winnerCandidate === 1 ? '是' : '否'
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
hideInTable: type5 || defId === 'negotiation_single_simple',
|
||||
title: '是否拟' + name1 + '人',
|
||||
width: 80,
|
||||
dataIndex: 'winnerBidder',
|
||||
render: (_: any, record: any) => {
|
||||
return record.winnerBidder === 1 ? '是' : record.winnerBidder === 0 ? '否' : '-'
|
||||
}
|
||||
},
|
||||
{
|
||||
hideInTable: type3,
|
||||
title: '拟签约金额(不含增值税)(元)',
|
||||
width: 150,
|
||||
dataIndex: 'contractedMoney',
|
||||
render: (_: any, record: any) => {
|
||||
if (defId === 'negotiation_single_simple' && record.pushStatus == "0") {
|
||||
return (
|
||||
<>
|
||||
{returnInput('contractedMoney', '拟签约金额', record.contractedMoney, false, true)}
|
||||
{returnInput('id', '供应商id', record.id, false, false, true)}
|
||||
{returnInput('resultId', '结果id', record.resultId, false, false, true)}
|
||||
{returnInput('companyId', '公司id', record.companyId, false, false, true)}
|
||||
{returnInput('companyName', '公司名称', record.companyName, false, false, true)}
|
||||
</>
|
||||
)
|
||||
} else {
|
||||
return record.contractedMoney
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
hideInTable: type4,
|
||||
title: '增值税金额(元)',
|
||||
width: 150,
|
||||
dataIndex: 'taxRatePrice',
|
||||
render: (_: any, record: any) => {
|
||||
if (defId === 'negotiation_single_simple' && record.pushStatus == "0") {
|
||||
return returnInput('taxRatePrice', '增值税金额', record.taxRatePrice, false, true)
|
||||
} else {
|
||||
return record.taxRatePrice
|
||||
}
|
||||
}
|
||||
},
|
||||
]
|
||||
return (
|
||||
<ProTable
|
||||
size={"small"}
|
||||
loading={pageloading}
|
||||
scroll={{ x: true }}
|
||||
search={false}
|
||||
options={false}
|
||||
columns={columns}
|
||||
dataSource={item1.reviewList}
|
||||
toolbar={{
|
||||
title: item1.againEvaluationSort == 'null' || isEmpty(item1.againEvaluationSort) ? null : `第${item1.againEvaluationSort}次重审`,
|
||||
}}
|
||||
rowKey="id"
|
||||
toolBarRender={(record: any) => [
|
||||
<>
|
||||
<Button
|
||||
hidden={btnAuthority(['ebtp-agency-project-manager', 'ebtp-purchase']) || defId != 'negotiation_single_simple' || item1.pushStatus == "1"}
|
||||
type="primary"
|
||||
disabled={spintype}
|
||||
onClick={async () => {
|
||||
setSpintype(true);
|
||||
await form.validateFields().then(async () => {
|
||||
await saveResult({
|
||||
id: form.getFieldValue("resultId"),
|
||||
suppliers: [
|
||||
{
|
||||
...form.getFieldsValue(),
|
||||
"winnerCandidate": form.getFieldValue("winnerCandidate") == '是' ? '1' : '0',
|
||||
"firstRvwResult": form.getFieldValue("firstRvwResult") == '是' ? '1' : '0',
|
||||
"detailRvwResult": form.getFieldValue("detailRvwResult") == '是' ? '1' : '0',
|
||||
"answerValid": form.getFieldValue("answerValid") == '是' ? '1' : '0',
|
||||
"winnerBidder": form.getFieldValue("winnerBidder") == '是' ? '1' : '0',
|
||||
}
|
||||
]
|
||||
}).then((res) => {
|
||||
if (res.success) { message.success('保存成功!') }
|
||||
})
|
||||
}).finally(() => setSpintype(false));
|
||||
}}
|
||||
>保存</Button>
|
||||
{
|
||||
defId === 'negotiation_single_simple' ?
|
||||
<Button
|
||||
hidden={
|
||||
btnAuthority(['ebtp-agency-project-manager', 'ebtp-purchase']) ||
|
||||
!item1.reviewList[0].price ||
|
||||
!item1.reviewList[0].priceReview
|
||||
}
|
||||
disabled={item1.pushStatus == "1" ? true : false} key={"1"}
|
||||
onClick={() => pushResult(item1)} type="primary" loading={spintype}>确认{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 key={"2"} onClick={() => getResultList(item1)}>查看日志</Button>
|
||||
</>
|
||||
]}
|
||||
pagination={{
|
||||
defaultPageSize: 10,
|
||||
showSizeChanger: false,
|
||||
}}
|
||||
/>
|
||||
)
|
||||
}}
|
||||
>
|
||||
</List>
|
||||
</Panel>
|
||||
</Collapse>
|
||||
)}
|
||||
/>
|
||||
{list}
|
||||
<CurrentTable assessRoomId={assessRoomId} ChangeNoticeListVisible={currentTable}
|
||||
onCancel={() => setCurrentTable(false)} />
|
||||
</Card>
|
||||
|
Reference in New Issue
Block a user