评审规则设置
This commit is contained in:
@ -33,6 +33,11 @@ export default {
|
|||||||
changeOrigin: true,
|
changeOrigin: true,
|
||||||
pathRewrite: { '/api/biz-service-ebtp-project': '' },
|
pathRewrite: { '/api/biz-service-ebtp-project': '' },
|
||||||
},
|
},
|
||||||
|
'/api/biz-service-ebtp-process': {
|
||||||
|
target: 'http://localhost:18011',
|
||||||
|
changeOrigin: true,
|
||||||
|
pathRewrite: { '/api/biz-service-ebtp-process': '' },
|
||||||
|
},
|
||||||
'/api/sys-manager-ebtp-project': {
|
'/api/sys-manager-ebtp-project': {
|
||||||
target: 'http://localhost:18030',
|
target: 'http://localhost:18030',
|
||||||
changeOrigin: true,
|
changeOrigin: true,
|
||||||
|
@ -66,7 +66,10 @@ const Promenu: React.FC<{}> = () => {
|
|||||||
const open = Boolean(anchorEl);
|
const open = Boolean(anchorEl);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
menuList({ defId: defId, projectId: projectId }).then(res => {
|
//TODO zyx假数据-start
|
||||||
|
menuList({ defId: 'bid_qualification', projectId: '1920644626460389376' }).then(res => {
|
||||||
|
// menuList({ defId: defId, projectId: projectId }).then(res => {
|
||||||
|
//TODO zyx假数据-end
|
||||||
if (res.code === 200) {
|
if (res.code === 200) {
|
||||||
let data = res.data;
|
let data = res.data;
|
||||||
setData(data);
|
setData(data);
|
||||||
|
@ -397,7 +397,44 @@ const DetailedMain: React.FC<detailType> = (props) => {
|
|||||||
}
|
}
|
||||||
}} value={parseInt(record.effectiveType)}>
|
}} value={parseInt(record.effectiveType)}>
|
||||||
<Radio className={styles.radioStyle} value={1}>全部报价</Radio>
|
<Radio className={styles.radioStyle} value={1}>全部报价</Radio>
|
||||||
<Radio className={styles.radioStyle} value={2}>去掉最高和最低各一家后的<a className={styles.orange}>报价</a></Radio>
|
<Radio className={styles.radioStyle} value={2} >
|
||||||
|
<div style={{ float: "right" }}>
|
||||||
|
<div style={{ float: "left" }}>去掉最高:
|
||||||
|
{returnInput(record, 'removeMaxNumber', 1, parseInt(record.effectiveType), record.removeMaxNumber, 2)} 家<a className={styles.orange}>报价</a>
|
||||||
|
</div>
|
||||||
|
<div style={{ float: "left", marginLeft: '100px' }}>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div >
|
||||||
|
<div style={{ float: "left", marginLeft: '24px' }}>去掉最低:
|
||||||
|
{returnInput(record, 'removeMinNumber', 1, parseInt(record.effectiveType), record.removeMinNumber, 2)} 家<a className={styles.orange}>报价</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</Radio>
|
||||||
|
<div style={{ clear: 'both' }} />
|
||||||
|
<Radio className={styles.radioStyle} value={6}>
|
||||||
|
<div style={{ float: "right" }}>
|
||||||
|
<div style={{ float: "left" , marginLeft: '-7px' }}>高于拦标价的报价:
|
||||||
|
{returnInput(record, 'includeLowPrice', 1, parseInt(record.effectiveType), record.includeLowPrice, 6)} 元{/*TODO zyx-获取币种*/}
|
||||||
|
</div>
|
||||||
|
<div style={{ float: "left", marginLeft: '2px' }}>
|
||||||
|
<Radio.Group
|
||||||
|
disabled={hideOffer || dis}
|
||||||
|
value={parseInt(record.effectiveType) == 6 ? parseInt(record.includeLowStatus) : null}
|
||||||
|
onChange={(event) => {
|
||||||
|
const value = event.target.value;
|
||||||
|
if (value != undefined) {
|
||||||
|
record.includeLowStatus = value;
|
||||||
|
reTable();
|
||||||
|
}
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<Radio className={styles.radioStyle} value={1} checked >含税</Radio>
|
||||||
|
</Radio.Group>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</Radio>
|
||||||
|
{/* <Radio className={styles.radioStyle} value={2}>去掉最高和最低各一家后的<a className={styles.orange}>报价</a></Radio>
|
||||||
<Radio className={styles.radioStyle} value={3}>去掉最两家高和最低各一家后的<a className={styles.orange}>报价</a></Radio>
|
<Radio className={styles.radioStyle} value={3}>去掉最两家高和最低各一家后的<a className={styles.orange}>报价</a></Radio>
|
||||||
<Radio className={styles.radioStyle} value={4}>去掉最低一家后的<a className={styles.orange}>报价</a></Radio>
|
<Radio className={styles.radioStyle} value={4}>去掉最低一家后的<a className={styles.orange}>报价</a></Radio>
|
||||||
<Radio className={styles.radioStyle} value={5}>去掉最高一家后的<a className={styles.orange}>报价</a></Radio>
|
<Radio className={styles.radioStyle} value={5}>去掉最高一家后的<a className={styles.orange}>报价</a></Radio>
|
||||||
@ -444,7 +481,7 @@ const DetailedMain: React.FC<detailType> = (props) => {
|
|||||||
</Radio.Group>
|
</Radio.Group>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</Radio>
|
</Radio> */}
|
||||||
<div style={{ clear: 'both' }} />
|
<div style={{ clear: 'both' }} />
|
||||||
<Radio className={styles.radioStyle} value={7}>{showNameT.pb}专家手动勾选</Radio>
|
<Radio className={styles.radioStyle} value={7}>{showNameT.pb}专家手动勾选</Radio>
|
||||||
</Radio.Group>
|
</Radio.Group>
|
||||||
@ -675,7 +712,7 @@ const DetailedMain: React.FC<detailType> = (props) => {
|
|||||||
initialValue="请选择"
|
initialValue="请选择"
|
||||||
rules={[{ required: true, message: '请选择类别' }]}
|
rules={[{ required: true, message: '请选择类别' }]}
|
||||||
>
|
>
|
||||||
<Select style={{ width: "80%" }}>
|
<Select style={{ width: "80%" }} placeholder="请选择">
|
||||||
<Option value="商务" key="addCateKey1">商务</Option>
|
<Option value="商务" key="addCateKey1">商务</Option>
|
||||||
<Option value="技术" key="addCateKey2">技术</Option>
|
<Option value="技术" key="addCateKey2">技术</Option>
|
||||||
<Option value="服务" key="addCateKey3">服务</Option>
|
<Option value="服务" key="addCateKey3">服务</Option>
|
||||||
@ -687,7 +724,7 @@ const DetailedMain: React.FC<detailType> = (props) => {
|
|||||||
{({ getFieldValue }) => {
|
{({ getFieldValue }) => {
|
||||||
const selectedType = getFieldValue('type');
|
const selectedType = getFieldValue('type');
|
||||||
return (
|
return (
|
||||||
selectedType !== '报价' && (
|
selectedType !== '报价' && selectedType!='请选择' && (
|
||||||
<Row>
|
<Row>
|
||||||
<Col span={24}><FormItem
|
<Col span={24}><FormItem
|
||||||
name="calculationMethod"
|
name="calculationMethod"
|
||||||
@ -1063,9 +1100,12 @@ const DetailedMain: React.FC<detailType> = (props) => {
|
|||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (show !== '1') {
|
if (show !== '1') {
|
||||||
queryDetData();
|
queryDetData();
|
||||||
detailTem().then(res => {
|
//TODO zyx 假数据-start
|
||||||
res?.code == 200 ? oidSet(res.data.documentCenterId) : null;
|
oidSet("1673219453012992001");
|
||||||
});
|
// detailTem().then(res => {
|
||||||
|
// res?.code == 200 ? oidSet(res.data.documentCenterId) : null;
|
||||||
|
// });
|
||||||
|
//TODO zyx 假数据-end
|
||||||
}
|
}
|
||||||
}, [show]);
|
}, [show]);
|
||||||
|
|
||||||
@ -1256,6 +1296,8 @@ const DetailedMain: React.FC<detailType> = (props) => {
|
|||||||
includeHighPrice: '',
|
includeHighPrice: '',
|
||||||
includeLowStatus: 1,//最低价 含税不含税
|
includeLowStatus: 1,//最低价 含税不含税
|
||||||
includeLowPrice: '',
|
includeLowPrice: '',
|
||||||
|
removeMaxNumber: '',
|
||||||
|
removeMinNumber: '',
|
||||||
}]
|
}]
|
||||||
}
|
}
|
||||||
let data1T: any = [...data1]
|
let data1T: any = [...data1]
|
||||||
@ -1416,6 +1458,8 @@ const DetailedMain: React.FC<detailType> = (props) => {
|
|||||||
case 'priceMultiplierSecond': now.priceMultiplierSecond = value; break;
|
case 'priceMultiplierSecond': now.priceMultiplierSecond = value; break;
|
||||||
case 'lowScore': now.lowScore = value; break;
|
case 'lowScore': now.lowScore = value; break;
|
||||||
case 'lowScoreSecond': now.lowScoreSecond = value; break;
|
case 'lowScoreSecond': now.lowScoreSecond = value; break;
|
||||||
|
case 'removeMaxNumber': now.removeMaxNumber = value; break;
|
||||||
|
case 'removeMinNumber': now.removeMinNumber = value; break;
|
||||||
default: break;
|
default: break;
|
||||||
}
|
}
|
||||||
setData4(data);
|
setData4(data);
|
||||||
|
@ -240,37 +240,39 @@ export const getTreeDataOut = async (assessRoomId: any, turnSort: any) => {
|
|||||||
let data: any = [];
|
let data: any = [];
|
||||||
let rootT: any = [];
|
let rootT: any = [];
|
||||||
let childT: any = [];
|
let childT: any = [];
|
||||||
await getTree({ assessRoomId: assessRoomId, turnSort: turnSort }).then((res) => {
|
//TODO zyx假数据-start
|
||||||
if (res.data != undefined) {
|
// await getTree({ assessRoomId: assessRoomId, turnSort: turnSort }).then((res) => {
|
||||||
res.data.map((item: any, index: any) => {
|
// if (res.data != undefined) {
|
||||||
const title1 = item.name;
|
// res.data.map((item: any, index: any) => {
|
||||||
const key1 = item.id;
|
// const title1 = item.name;
|
||||||
let children1: any = [];
|
// const key1 = item.id;
|
||||||
if (item.children != undefined) {
|
// let children1: any = [];
|
||||||
const children = item.children.map((item: any, index: any) => {
|
// if (item.children != undefined) {
|
||||||
const title2 = item.name;
|
// const children = item.children.map((item: any, index: any) => {
|
||||||
const key2 = item.id;
|
// const title2 = item.name;
|
||||||
let children2: any = [];
|
// const key2 = item.id;
|
||||||
if (item.children != undefined) {
|
// let children2: any = [];
|
||||||
const children = item.children.map((item: any, index: any) => {
|
// if (item.children != undefined) {
|
||||||
const title3 = item.name;
|
// const children = item.children.map((item: any, index: any) => {
|
||||||
const key3 = item.id;
|
// const title3 = item.name;
|
||||||
childT.push(key3)
|
// const key3 = item.id;
|
||||||
return { title: title3, key: key3, pId: key2 }
|
// childT.push(key3)
|
||||||
});
|
// return { title: title3, key: key3, pId: key2 }
|
||||||
children2 = children;
|
// });
|
||||||
}
|
// children2 = children;
|
||||||
childT.push(key2)
|
// }
|
||||||
return { title: title2, key: key2, children: children2, pId: key1 }
|
// childT.push(key2)
|
||||||
});
|
// return { title: title2, key: key2, children: children2, pId: key1 }
|
||||||
children1 = children;
|
// });
|
||||||
}
|
// children1 = children;
|
||||||
const first = { title: title1, key: key1, children: children1, pId: null }
|
// }
|
||||||
rootT.push(key1)
|
// const first = { title: title1, key: key1, children: children1, pId: null }
|
||||||
data.push(first);
|
// rootT.push(key1)
|
||||||
});
|
// data.push(first);
|
||||||
}
|
// });
|
||||||
})
|
// }
|
||||||
|
// })
|
||||||
|
//TODO zyx假数据-end
|
||||||
return { roots: rootT, childs: childT, treeData: data }
|
return { roots: rootT, childs: childT, treeData: data }
|
||||||
}
|
}
|
||||||
export default FileTree;
|
export default FileTree;
|
||||||
|
@ -246,7 +246,7 @@ const FirstMain: React.FC<FirstType> = (props) => {
|
|||||||
onClick={showConfirm}
|
onClick={showConfirm}
|
||||||
>
|
>
|
||||||
继承上轮
|
继承上轮
|
||||||
</Button>
|
</Button>
|
||||||
|
|
||||||
}
|
}
|
||||||
<FileTree
|
<FileTree
|
||||||
|
@ -33,17 +33,35 @@ const Config: React.FC<{}> = () => {
|
|||||||
roomType = getURLInformation("roomType");
|
roomType = getURLInformation("roomType");
|
||||||
}
|
}
|
||||||
//查评分办法和采购方式
|
//查评分办法和采购方式
|
||||||
getBizInfo(bizId).then((res) => {
|
//TODO zyx假数据 start
|
||||||
let methodT = false;
|
// getBizInfo(bizId).then((res) => {
|
||||||
if (res.code == 200) {
|
let methodT = false;
|
||||||
const data = res.data;
|
// if (res.code == 200) {
|
||||||
if (roomType == '2') {
|
// const data = res.data;
|
||||||
data.evalMethodDict === 'eval_method_2' ? methodT = true : null;//评分办法 1最低价 2综合评估
|
const data = {
|
||||||
}
|
"createBy": "ex-wanghy623", "createDate": "2025-05-09 08:58:57",
|
||||||
data.ptcpMode === 'ptcp_mode_2' ? methodT = true : null;//采购方式 1合格制 2有限数量制
|
"updateBy": "ex-wanghy623", "updateDate": null, "tenantId": "ebtp_mall", "tenantName": "ebtp_mall", "deleteFlag": "normal",
|
||||||
}
|
"lastUpdateTime": "2024-10-28 15:56:21", "id": "1920644626720436224", "projectId": "1920644626460389376",
|
||||||
methodSet(methodT);
|
"bidSectBizNum": "ZX36102410002138", "bidSectCode": 1, "bidSectName": "测试001", "bidSectContent": null, "bidSectTypeDict": null,
|
||||||
});
|
"bidSectContractPrice": 1000.00000, "contractPriceCurrencyDict": null, "selectionMethod": null, "reviewRules": null,
|
||||||
|
"priceUnitDict": null, "bidderQual": null, "quotationMethodDict": "quotation_method_2", "tenderOpeningTime": null,
|
||||||
|
"ptcpMode": null, "ptcpCount": null, "businessModule": 8, "status": 2, "attDatasetId": null, "checkMethodDict": null,
|
||||||
|
"chooseProcess": "choose_process_4", "reviewReportId": null, "sectionNumber": null, "evalMethodDict": "eval_method_2",
|
||||||
|
"procurementTypeDict": null, "miitSectionId": null, "monetaryUnit": null, "remarks": null, "parentSectionId": "1916736930678689792",
|
||||||
|
"projectPlanId": "1850785019690168356", "subprojectId": "1850783951401635842", "isAnnouncement": null, "priceCeiling": 800.00000,
|
||||||
|
"priceCeilingExplain": null, "isStructureQuote": "1", "structureQuoteModel": "003", "structureQuoteLimitType": "002",
|
||||||
|
"bidNumberIsDefinite": "1", "projBidRatioInfoVoList": [], "bidDefiniteNumber": "2", "structureNote": null,
|
||||||
|
"basePriceUnitLimit": null, "materialList": [], "purcModel": null, "preBidAnalysisFlag": 0, "quotePreResultFlag": "0"
|
||||||
|
};
|
||||||
|
//TODO zyx假数据 end
|
||||||
|
if (roomType == '2') {
|
||||||
|
data.evalMethodDict === 'eval_method_2' ? methodT = true : null;//评分办法 1最低价 2综合评估
|
||||||
|
}
|
||||||
|
data.ptcpMode === 'ptcp_mode_2' ? methodT = true : null;//采购方式 1合格制 2有限数量制
|
||||||
|
// }
|
||||||
|
methodSet(methodT);
|
||||||
|
// });
|
||||||
|
//TODO zyx假数据 end
|
||||||
|
|
||||||
}, [])
|
}, [])
|
||||||
return (
|
return (
|
||||||
|
@ -194,7 +194,7 @@ const List: React.FC<{}> = () => {
|
|||||||
//查询已有配置的标段
|
//查询已有配置的标段
|
||||||
const getHaveConfigSections = async (evalMethod: any) => {
|
const getHaveConfigSections = async (evalMethod: any) => {
|
||||||
let secs: any[] = []
|
let secs: any[] = []
|
||||||
await usePage({ projectId: getProId(), roomType: roomType, evalMethod: evalMethod }).then((res) => {
|
await usePage({ projectId: proId, roomType: roomType, evalMethod: evalMethod }).then((res) => {
|
||||||
if (res.code == 200) {
|
if (res.code == 200) {
|
||||||
const data = res.data;
|
const data = res.data;
|
||||||
secs = [...data];
|
secs = [...data];
|
||||||
@ -205,7 +205,8 @@ const List: React.FC<{}> = () => {
|
|||||||
}
|
}
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
//取项目id
|
//取项目id
|
||||||
proIdSet(getProId());
|
//proIdSet(getProId());//TODO zyx-假数据
|
||||||
|
proIdSet("1920644626460389376");
|
||||||
// getHaveConfigSections();
|
// getHaveConfigSections();
|
||||||
}, []);
|
}, []);
|
||||||
return (
|
return (
|
||||||
@ -220,7 +221,7 @@ const List: React.FC<{}> = () => {
|
|||||||
// tableAlertRender={false}
|
// tableAlertRender={false}
|
||||||
params={pageData}
|
params={pageData}
|
||||||
request={(params) =>
|
request={(params) =>
|
||||||
getPage({ ...params, projectId: getProId(), roomType: roomType }).then((res) => {
|
getPage({ ...params, projectId: proId, roomType: roomType }).then((res) => {
|
||||||
const result = {
|
const result = {
|
||||||
data: res.data.records,
|
data: res.data.records,
|
||||||
total: res.data.total,
|
total: res.data.total,
|
||||||
|
Reference in New Issue
Block a user