Commit cfe60ce2 authored by 前端-钟卫鹏's avatar 前端-钟卫鹏

fix: 招标查询跳转专家抽取回显部分数据,投标详情中标金额比取后端返回字段,投标报名区号默认选中

parent b34983ce
......@@ -281,7 +281,7 @@ const bidRequestInfo: ISchema = {
hopeDate: {
type: 'string',
"x-component": 'date',
title: '期望交付日期',
title: '交付日期',
required: true,
"x-component-props": {
disabledDate: current => {
......
......@@ -51,6 +51,7 @@ const AddRemarkBidCommittee:React.FC<AddRemarkBidCommitteeProps> = (props) => {
const {
id,
code,
preview,
pageStatus
} = usePageStatus()
......@@ -63,7 +64,7 @@ const AddRemarkBidCommittee:React.FC<AddRemarkBidCommitteeProps> = (props) => {
useEffect(() => {
if(id) {
PublicApi.getPurchaseExpertExtractGetExpertExtract({id}).then(res => {
const { code, data } = res
const { code, data }: any = res
if(code === 1000) {
data.createTime = formatTimeString(data['createTime'])
data.remarkTime = `${formatTimeString(data['inviteTender']['evaluationStartTime'])} ~ ${formatTimeString(data['inviteTender']['evaluationEndTime'])}`
......@@ -77,6 +78,26 @@ const AddRemarkBidCommittee:React.FC<AddRemarkBidCommitteeProps> = (props) => {
}
}, [id])
// 招标查询跳转
useEffect(() => {
if(code) {
PublicApi.getPurchaseInviteTenderGetInviteTender({inviteTenderId: code}).then(res => {
const { code, data }: any = res
let initRender: any = {}
if(code === 1000) {
initRender.createTime = formatTimeString(data['createTime'])
initRender.remarkTime = `${formatTimeString(data['evaluationStartTime'])} ~ ${formatTimeString(data['evaluationEndTime'])}`
initRender.code = data['code']
initRender.projectName = data['projectName']
initRender.openTenderTime = formatTimeString(data['openTenderTime'])
initRender.status = data.status ? '待发送' : '已发送'
initRender.expertExtractQueryList = initConditionData
setInitFormValue(initRender)
}
})
}
}, [code])
const conditionColumns = buildColumns.concat([
{
dataIndex: 'ctl',
......
......@@ -47,9 +47,9 @@ const callForBidsSearch: React.FC<{}> = () => {
render: (text, record) => <>
<Button type='link' onClick={() => handleCopy(record.id)}>复制</Button>
{ record.isOpenTenderTime && <Button type='link' onClick={() => handleChangeTime(record)}>修改开标时间</Button> }
{ record.isExpert && <Button type='link' onClick={handleWithdraw}>抽取专家</Button> }
{ record.isExpert && <Button type='link' onClick={() => handleWithdraw(record.id)}>抽取专家</Button> }
{ record.isDiscardTender && <Button type='link' onClick={() => handleDestory(record.id)}>废标</Button> }
</>
</>
}
])
......@@ -60,8 +60,8 @@ const callForBidsSearch: React.FC<{}> = () => {
return data
}
const handleWithdraw = () => {
history.push('/memberCenter/procurementAbility/callForBids/remarkBidCommittee/add')
const handleWithdraw = (id) => {
history.push(`/memberCenter/procurementAbility/callForBids/remarkBidCommittee/add?code=${id}`)
}
// 复制 id存入本地存储跳转至新增页
......
......@@ -16,6 +16,7 @@ import { EditableCell, EditableRow } from '../remarkTableCell';
import { groupBy } from '@/pages/procurement/constants';
import { getAuth } from '@/utils/auth';
import { ExpertRectractStatus } from '@/constants/procurement';
import { PublicApi } from '@/services/api';
/**
* 评标报告
......@@ -35,15 +36,12 @@ const RemarkBidReport: React.FC<RemarkBidReportProps> = ({cardTitle, editable})
const currentRef = useRef<any>({})
const [transferRadio, setTransferRadio] = useState<number>(0)
const [loading, setLoading] = useState<boolean>(false)
// 存入context表单数据
// const [fileList, setFileList] = useState<any>([])
// const [recommandList, setRecommandList] = useState<any>()
// const [childTableData, setChildrenTableData] = useState<any>([])
const { fileList, recommandList, childTableData } = submitData
const { setFileList, setRecommandList, setChildrenTableData } = submitCtl
const [evaluationRecord, setEvaluationRecord] = useState<any>([])
const [childTableColumns, setChildrenTableColumns] = useState<any>([])
const [templateSort, setTemplateSort] = useState<any>([])
useEffect(() => {
if(data?.evaluationTenderRecommendList.length) {
......@@ -94,6 +92,16 @@ const RemarkBidReport: React.FC<RemarkBidReportProps> = ({cardTitle, editable})
console.log(dataSource, computedScore, dataBySort, 'computedScore')
setEvaluationRecord(dataBySort)
// 线下评标或者线上评标但是没有去评 评分项Radio来自评标模板接口
if(data?.templateId) {
PublicApi.getPurchaseTemplateGetTemplate({id: data.templateId}).then(res => {
const { code, data } = res
if(code === 1000 && data?.templateContentList?.length) {
setTemplateSort(data.templateContentList)
}
})
}
// 根据评标sort分类后的数据 遍历 分子表格
let childrenTableDataSource = [] // table data
let childTableDataColumns = [] // table columns
......
......@@ -53,7 +53,7 @@ const BidParticulars: React.FC<BidParticularsProps> = ({cardTitle}) => {
title: <span>金额(含税)<br />合计: ¥{totalMoney}</span>,
dataIndex: 'money',
key: 'money',
render: (t, r) => Number((r.price * r.count).toFixed(2))
render: (t, r) => `¥${Number((r.price * r.count).toFixed(2))}`
}
return tempCol
})
......
......@@ -44,6 +44,16 @@ const DescriptionsInfo: React.FC<BasicInfoProps> = ({cardTitle, type}) => {
}
// 基本信息——招标
const fieldList = apiType === 'tenderInCallForBid' ? [
{ title: '招标项目:', name: 'projectName' },
{ title: '招标会员:', name: 'memberName' },
{ title: '招标摘要:', name: 'remark' },
] : [{ title: '招标项目:', name: 'projectName' },
{ title: '项目预算:', name: 'budget', render: (t) => `¥${t}` },
{ title: '采购类型:', name: 'purchaseType', render: (text) => PURCHASE_TYPE[text] },
{ title: '招标会员:', name: 'memberName' },
{ title: '招标摘要:', name: 'remark' },
]
const basicColumnList = [
{
span: 8,
......@@ -56,13 +66,7 @@ const DescriptionsInfo: React.FC<BasicInfoProps> = ({cardTitle, type}) => {
},
{
span: 8,
fieldList: [
{ title: '招标项目:', name: 'projectName' },
{ title: '项目预算:', name: 'budget', render: (t) => `¥${t}` },
{ title: '采购类型:', name: 'purchaseType', render: (text) => PURCHASE_TYPE[text] },
{ title: '招标会员:', name: 'memberName' },
{ title: '招标摘要:', name: 'remark' },
]
fieldList: fieldList
},
{
span: 8,
......@@ -110,7 +114,7 @@ const DescriptionsInfo: React.FC<BasicInfoProps> = ({cardTitle, type}) => {
name: 'inviteTenderFile',
render: (t, r) => (<div>
{
_data?.submitTender?.file?.length && _data['submitTender']['file'].map((_item, _i) => <p><a key={`submitTenderFile${_i}`} target="_blank" href={_item.url}><FileFilled /> {_item.name}</a></p>)
_data?.submitTender?.file?.length ? _data['submitTender']['file'].map((_item, _i) => <p><a key={`submitTenderFile${_i}`} target="_blank" href={_item.url}><FileFilled /> {_item.name}</a></p>) : null
}
</div>)
},
......@@ -157,7 +161,7 @@ const DescriptionsInfo: React.FC<BasicInfoProps> = ({cardTitle, type}) => {
{
span: 8,
fieldList: [
{ title: '期望交付日期:', name: 'hopeDate', render: (text) => formatTimeString(text) },
{ title: '交付日期:', name: 'hopeDate', render: (text) => formatTimeString(text) },
{ title: '目标价:', name: 'targetPrice', render: (t) => `¥${t}` },
]
},
......@@ -178,6 +182,39 @@ const DescriptionsInfo: React.FC<BasicInfoProps> = ({cardTitle, type}) => {
}
]
// 投标要求
const tenderNeedList = [
{
span: 8,
fieldList: [
{ title: '投标截止时间:', name: 'createTime', render: (t, r) => formatTimeString(r['inviteTenderStartTime']) + '至' + formatTimeString(r['inviteTenderEndTime'])},
{ title: '开标时间:', name: 'openTenderTime', render: (text) => formatTimeString(text) },
]
},
{
span: 8,
fieldList: [
{ title: '交付日期:', name: 'hopeDate', render: (text) => formatTimeString(text) },
{ title: '目标价:', name: 'targetPrice', render: (t) => `¥${t}` },
]
},
{
span: 8,
fieldList: [
{ title: '投标摘要:', name: 'inviteTenderRequirement', render: (t) => _data['submitTender']['remark']},
{
title: '投标文件:',
name: 'inviteTenderFile',
render: (t, r) => (<div>
{
_data['submitTender']['file'].map((_item, _i) => <p><a key={`submitTenderFile${_i}`} target="_blank" href={_item.url}><FileFilled /> {_item.name}</a></p>)
}
</div>)
},
]
}
]
// 报名要求
const registerNeedList = [
{
......@@ -345,8 +382,10 @@ const DescriptionsInfo: React.FC<BasicInfoProps> = ({cardTitle, type}) => {
/** 投标区块 **/
// @todo 中标结果 根据后端数据控制
const result = _data.isWin
const sumPrice = _data?.submitTender ? _data.submitTender.submitTenderMateriel.reduce((a, b) => a + b.price * b.inviteTenderMateriel.count, 0) : 0
const alreadyPay = _data?.submitTender ? _data.submitTender.submitTenderMateriel.reduce((a, b) => a + b.price * b.inviteTenderMateriel.count * b.awardTenderRatio/100, 0) : 0
// const sumPrice = _data?.submitTender ? _data.submitTender.submitTenderMateriel.reduce((a, b) => a + b.price * b.inviteTenderMateriel.count, 0) : 0
// const alreadyPay = _data?.submitTender ? _data.submitTender.submitTenderMateriel.reduce((a, b) => a + b.price * b.inviteTenderMateriel.count * b.awardTenderRatio/100, 0) : 0
const sumPrice = _data?.allWinnerAmount
const alreadyPay = _data?.winnerAmount
const bidResultList = [
{
......@@ -443,7 +482,8 @@ const DescriptionsInfo: React.FC<BasicInfoProps> = ({cardTitle, type}) => {
const Type_Data_Map = {
// 招标大类显示招标信息 投标大类显示投标信息
'basicInfo': (apiType[0] === 'c' || apiType === 'tenderInCallForBid') ? basicColumnList : basicTenderColumnList,
'bidNeed': callForNeedList,
// 投标显示投标要求
'bidNeed': apiType[apiType.length - 1] === 'r' ? tenderNeedList : callForNeedList,
'registerNeed': registerNeedList,
'checkNeed': checkNeedList,
'remarkNeed': remarkNeedList,
......
......@@ -109,6 +109,11 @@ const AddBidRegister:React.FC<AddBidRegisterProps> = (props) => {
ele.style.marginBottom = '24px'
}
})
$('onFieldChange', 'phoneCode').subscribe(result => {
if(result.props.enum.length) {
ctx.setFieldValue('phoneCode', '86')
}
})
}}
expressionScope={{
beforeUpload,
......
......@@ -84,8 +84,14 @@ export const RelevanceTenderProduct: React.FC<RelateProductDrawerProps> = ({
properties: { "Text_0": tempSchema['properties']['Text_0'], "Text_99": tempSchema['properties']['Text_99'] }
}
})
setSelectRow([])
setSelectedRowKeys([])
// 没有关联商品清空相关回显信息
if(!currentMaterial?.commodityId && !currentMaterial?.commoditySkuId) {
setSelectRow([])
setSelectedRowKeys([])
} else {
setSelectedRowKeys([currentMaterial.commodityId])
}
console.log(currentMaterial, selectRow)
}
}, [visible])
......@@ -223,7 +229,6 @@ export const RelevanceTenderProduct: React.FC<RelateProductDrawerProps> = ({
formActions.submit(v => {
// 点击确定 设置商品id和商品文件到对应物料行中
let submitMateriel = schemaAction.getFieldValue('submitTenderMateriel')
console.log(v, submitMateriel, selectRow, currentMaterial)
submitMateriel.map(item => {
if(item.id === currentMaterial['id']) {
item.file = v['file']
......@@ -259,13 +264,8 @@ export const RelevanceTenderProduct: React.FC<RelateProductDrawerProps> = ({
</Button>
</div>)
// 子级抽屉点击确定 ~生成动态schema和dataList
const onConfirm = () => {
setChildVisible(false)
// console.log('确定', selectRow)//////////
formActions.setFieldValue('tenderProduct', selectRow[0])
PublicApi.getProductCommodityGetCommodityAttributeByUnitPriceAndPicId({ unitPriceAndPicId: selectRow[0]['id'] }).then(res => {
console.log(res.data)
const getCommodityUnitAndRender = (uid) => {
PublicApi.getProductCommodityGetCommodityAttributeByUnitPriceAndPicId({ unitPriceAndPicId: uid }).then(res => {
setDataIdList(() => {
let origin = [...dataIdList]
res.data.map((item, index) => {
......@@ -308,6 +308,13 @@ export const RelevanceTenderProduct: React.FC<RelateProductDrawerProps> = ({
})
}
// 子级抽屉点击确定 ~生成动态schema和dataList
const onConfirm = () => {
setChildVisible(false)
formActions.setFieldValue('tenderProduct', selectRow[0])
getCommodityUnitAndRender(selectRow[0]['id'])
}
const fetchData = (params: any) => {
return new Promise((resolve, reject) => {
PublicApi.getProductCommodityCommonGetCommodityListBySeller({
......
......@@ -5,12 +5,12 @@ import { BidInStateTexts, BidOutStateTexts } from '@/constants/procurement'
/** 对后端返回的投标数据转换为render数据 */
export const processTenderData = (tenderData) => {
let alreadyData = {
//--毫无意义 仅显示
//-- 仅显示
submitTenderCode: tenderData.code,
projectName: tenderData.inviteTender.projectName,
inviterTenderCode: tenderData.inviteTender.code,
memberName: tenderData.inviteTender.memberName,
inviteTenderAreaList: tenderData.inviteTender.inviteTenderAreaList,
inviteTenderAreaList: tenderData.inviteTender.inviteTenderAreaList.map(item => `${item.provinceName}${item.cityName}`).join('/'),
inviteTenderOutStatus: tenderData.submitTenderOutStatusValue,
inviteTenderInStatus: tenderData.submitTenderInStatusValue,
inviteTenderStartTime: unixChangeRender(tenderData.inviteTender.inviteTenderStartTime),
......
......@@ -50,15 +50,20 @@ export const formSchema: ISchema = {
title: '招标会员',
readOnly: true,
},
// inviteTenderAreaList: {
// type: 'array',
// title: '适用城市',
// 'x-component': 'MultAddress',
// 'x-component-props': {
// placeholder: '选择区域',
// warningText: '请完善适用地市',
// },
// default: [{ provinceCode: null, province: null, cityCode: null, city: null }],
// readOnly: true,
// },
inviteTenderAreaList: {
type: 'array',
type: 'string',
title: '适用城市',
'x-component': 'MultAddress',
'x-component-props': {
placeholder: '选择区域',
warningText: '请完善适用地市',
},
default: [{ provinceCode: null, province: null, cityCode: null, city: null }],
readOnly: true,
},
inviteTenderOutStatus: {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment