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

fix: 处理招投标问题

parent b48afabd
......@@ -154,17 +154,17 @@ export const RelevanceGoodDrawer:React.FC<RelevanceGoodDrawerProps> = ({
const onConfirm = async () => {
setChildVisible(false)
console.log(selectRow[0])
await schemaAction.setFieldState('*(code, name, type, brandName, unitId, categoryId, brandName)', state => state.props["x-component-props"].disabled = true)
// await schemaAction.setFieldState('*(code, name, type, brandName, unitId, categoryId, brandName)', state => state.props["x-component-props"].disabled = true)
await schemaAction.setFieldValue('code', selectRow[0]['code'])
await schemaAction.setFieldValue('name', selectRow[0]['name'])
await schemaAction.setFieldValue('type', selectRow[0]['type'])
await schemaAction.setFieldValue('categoryName', selectRow[0]['customerCategory']['name'])
await schemaAction.setFieldValue('brandName', selectRow[0]['brand'] ? selectRow[0]['brand']['name'] : null)
setTimeout(async () => {
await schemaAction.setFieldValue('categoryName', selectRow[0]['customerCategory']['name'])
await schemaAction.setFieldValue('categoryId', selectRow[0]['customerCategory']['fullId'].split('.').map(item => Number(item).toString()))
await schemaAction.setFieldValue('unitId', selectRow[0]['unitId'])
}, 200);
await schemaAction.setFieldValue('unitName', selectRow[0]['unitName'])
await schemaAction.setFieldValue('unitName', selectRow[0]['unitName'])
}, 300);
await schemaAction.setFieldValue('has', true)
setSelectRow([])
setSelectedRowKeys([])
......
......@@ -119,8 +119,8 @@ export const paramsRenderFn = (value) => {
value['createTime'] = unixChangeRender(_value['createTime'])
// 状态转换
value['inviteTenderInStatus'] = BidInStateTexts[_value['inviteTenderInStatus']]
value['inviteTenderOutStatus'] = BidOutStateTexts[_value['inviteTenderOutStatus']]
value['inviteTenderInStatus'] = _value['inviteTenderInStatusValue']
value['inviteTenderOutStatus'] = _value['inviteTenderOutStatusValue']
value['addMode'] = 1
......
......@@ -127,10 +127,10 @@ const basicInfo: ISchema = {
}
},
"x-rules": [
{
required: true,
message: '请输入预算金额'
},
// {
// required: true,
// message: '请输入预算金额'
// },
{
validator: value => {
return value > Number.MAX_SAFE_INTEGER
......
......@@ -78,6 +78,7 @@ export const goodFormSchema: ISchema = {
type: 'string',
title: '货品名称',
"x-component-props": {
disabled: true,
placeholder: '最长60个字符,30个汉字'
},
"x-rules": [
......@@ -95,6 +96,7 @@ export const goodFormSchema: ISchema = {
type: 'string',
title: '规格型号',
"x-component-props": {
disabled: true,
placeholder: '最长60个字符,30个汉字'
},
"x-rules": [
......@@ -113,6 +115,7 @@ export const goodFormSchema: ISchema = {
title: '品类',
'x-component': 'Cascader',
'x-component-props': {
disabled: true,
placeholder: '请选择品类',
showSearch: false,
notFoundContent: null,
......@@ -132,6 +135,7 @@ export const goodFormSchema: ISchema = {
type: 'string',
title: '品牌',
"x-component-props": {
disabled: true,
placeholder: '最长24个字符,12个汉字'
},
"x-rules": [
......@@ -170,6 +174,7 @@ export const goodFormSchema: ISchema = {
type: 'string',
enum: [],
"x-component-props": {
disabled: true,
placeholder: '请选择单位'
},
required: true,
......
......@@ -17,7 +17,7 @@ import DrawerTable from '@/components/DrawerTable'
import { PublicApi } from '@/services/api'
import { buildColumns, expertColumns, initConditionData, selectExpertColumns, selectItemColumns, transformAreaField, transformSelectExpertField } from './constant'
import { selectBidSchema } from './schema/modal'
import { formatTimeString } from '@/utils'
import { formatTimeString, omit } from '@/utils'
import DateRangePickerUnix from '@/components/NiceForm/components/DateRangePickerUnix'
import { BidInsideWorkState, BidOuterWorkState } from '@/constants/procurement'
......@@ -82,9 +82,9 @@ const AddRemarkBidCommittee:React.FC<AddRemarkBidCommitteeProps> = (props) => {
useEffect(() => {
if(code) {
PublicApi.getPurchaseInviteTenderGetInviteTender({inviteTenderId: code}).then(res => {
const { code, data }: any = res
const { code: _code, data }: any = res
let initRender: any = {}
if(code === 1000) {
if(_code === 1000) {
initRender.createTime = formatTimeString(data['createTime'])
initRender.remarkTime = `${formatTimeString(data['evaluationStartTime'])} ~ ${formatTimeString(data['evaluationEndTime'])}`
initRender.code = data['code']
......@@ -92,6 +92,7 @@ const AddRemarkBidCommittee:React.FC<AddRemarkBidCommitteeProps> = (props) => {
initRender.openTenderTime = formatTimeString(data['openTenderTime'])
initRender.status = data.status ? '待发送' : '已发送'
initRender.expertExtractQueryList = initConditionData
initRender.inviteTender = { id: code}
setInitFormValue(initRender)
}
})
......@@ -136,8 +137,19 @@ const AddRemarkBidCommittee:React.FC<AddRemarkBidCommitteeProps> = (props) => {
const handleSubmit = async (value) => {
console.log(value)
setBtnLoading(true)
if(value.expertExtractRecordList?.length) {
PublicApi.postPurchaseExpertExtractSaveOrUpdateExpertExtract(value).then(res => {
const inviteTenderId = value['inviteTender']['id']
let _value = omit(value, ['code', 'createTime', 'openTenderTime', 'projectName', 'remarkTime', 'status', 'inviteTender'])
_value.inviteTender = { id: inviteTenderId }
_value.expertExtractRecordList = value?.expertExtractRecordListvalue?.length ? value.expertExtractRecordList.map(item => ({
id: item.id,
expert: { id: item.expert.id },
source: item.source,
status: item.status
})) : []
_value.expertExtractQueryList = value.expertExtractQueryList.map(item => omit(item, ['excludeArea', 'needArea']))
if(_value.expertExtractRecordList?.length) {
PublicApi.postPurchaseExpertExtractSaveOrUpdateExpertExtract(_value).then(res => {
setBtnLoading(false)
if(res.code === 1000) {
history.goBack()
......@@ -237,6 +249,7 @@ const AddRemarkBidCommittee:React.FC<AddRemarkBidCommitteeProps> = (props) => {
setProjectVisible(false)
console.log('确定', selectRow)
addSchemaAction.setFieldValue('inviteTender', { id: selectRow[0]['id'] })
addSchemaAction.setFieldValue('status', selectRow[0]['inviteTenderInStatusValue'])
addSchemaAction.setFieldValue('code', selectRow[0]['code'])
addSchemaAction.setFieldValue('projectName', selectRow[0]['projectName'])
addSchemaAction.setFieldValue('openTenderTime', formatTimeString(selectRow[0]['openTenderTime']))
......
......@@ -17,6 +17,7 @@ import Search from '@/components/NiceForm/components/Search'
import Submit from '@/components/NiceForm/components/Submit'
import { useStateFilterSearchLinkageEffect } from '@/formSchema/effects/useFilterSearch'
import { unixChangeRender } from '../addNewBid/constant'
import { omit } from '@/utils'
export interface AddRemarkBidExpertProps {}
......@@ -43,7 +44,7 @@ const AddRemarkBidExpert:React.FC<AddRemarkBidExpertProps> = (props) => {
if(id) {
PublicApi.getPurchaseExpertGetExpert({ id }).then(res => {
if(res.code === 1000) {
let value = {...res.data}
let value: any = {...res.data}
value['address'] = [{
provinceCode: value.provinceCode,
province: value.provinceName,
......@@ -63,13 +64,14 @@ const AddRemarkBidExpert:React.FC<AddRemarkBidExpertProps> = (props) => {
const handleSubmit = async (value) => {
setBtnLoading(true)
PublicApi.postPurchaseExpertSaveOrUpdateExpert({
let params = {
...value,
...value['address'][0],
provinceName: value['address'][0]['province'],
cityName: value['address'][0]['city'],
areaName: value['address'][0]['area'],
}).then(res => {
}
PublicApi.postPurchaseExpertSaveOrUpdateExpert(omit(params, ['address', 'area', 'city', 'province', 'createTime', 'status', 'updateTime'])).then(res => {
if(res.code === 1000) {
history.goBack()
}
......
......@@ -268,13 +268,13 @@ export const noticeSchema: ISchema = {
type: "object",
"x-component": "CustomTitle",
"x-component-props": {
text: "感谢"
text: "感谢"
},
properties: {
winTenderThanks: {
type: 'string',
"x-component-props": {
children: "发送感谢"
children: "发送感谢"
},
"x-component": "checkboxsingle",
default: true,
......@@ -283,7 +283,7 @@ export const noticeSchema: ISchema = {
type: 'textarea',
title: '',
'x-component-props': {
placeholder: '请填写感谢',
placeholder: '请填写感谢',
rows: 4
}
},
......
......@@ -20,9 +20,9 @@ const TenderSearchDetail: React.FC = () => {
{ title: '中标结果', id: 'bidResult', type: "bidResult" },
{ title: '中标明细', id: 'bidParticulars', componentName: "BidParticulars" },
{ title: '基本信息', id: 'baseicInfo', type: "basicInfo" },
{ title: '投标要求', id: 'tenderNeed', type: "bidNeed" },
{ title: '投标其他要求', id: 'tenderOtherNeed', type: "bidNeed" },
{ title: '投标商品', id: 'tenderParticulars', componentName: "BidParticulars" },
// { title: '投标要求', id: 'tenderNeed', type: "bidNeed" },
// { title: '投标其他要求', id: 'tenderOtherNeed', type: "otherNeed" },
{ title: '投标物料', id: 'tenderParticulars', componentName: "BidParticulars" },
{ title: '流转记录', id: 'transferRecord', componentName: "BidTransformRecord" },
]
......@@ -31,6 +31,11 @@ const TenderSearchDetail: React.FC = () => {
// anchorTitleList.splice(1, 2)
// }
// 没有完成的标 隐藏中标结果、中标明细
if(data?.isWin === null) {
anchorTitleList.splice(1, 2)
}
return (
<div>
<BidDetailContext.Provider value={formContext}>
......
......@@ -126,7 +126,7 @@ const DescriptionsInfo: React.FC<BasicInfoProps> = ({cardTitle, type}) => {
{ title: '招标编号:', name: 'code' },
{ title: '招标会员:', name: 'memberName' },
{
title: '适用地址:',
title: '适用城市:',
name: 'inviteTenderAreaList',
render: (t, r) => {
const showDataSource = showMore ? data['inviteTenderAreaList'] : [...data['inviteTenderAreaList']].splice(0, 3)
......@@ -161,8 +161,8 @@ const DescriptionsInfo: React.FC<BasicInfoProps> = ({cardTitle, type}) => {
{
span: 8,
fieldList: [
{ title: '交付日期:', name: 'hopeDate', render: (text) => formatTimeString(text) },
{ title: '目标价:', name: 'targetPrice', render: (t) => `¥${t}` },
{ title: '交付日期:', name: 'hopeDate', render: (text) => formatTimeString(text, 'YYYY-MM-DD') },
{ title: '目标价:', name: 'targetPrice', render: (t) => t ? `¥${t}` : null },
]
},
{
......@@ -194,8 +194,8 @@ const DescriptionsInfo: React.FC<BasicInfoProps> = ({cardTitle, type}) => {
{
span: 8,
fieldList: [
{ title: '交付日期:', name: 'hopeDate', render: (text) => formatTimeString(text) },
{ title: '目标价:', name: 'targetPrice', render: (t) => `¥${t}` },
{ title: '交付日期:', name: 'hopeDate', render: (text) => formatTimeString(text, 'YYYY-MM-DD') },
{ title: '目标价:', name: 'targetPrice', render: (t) => t ? `¥${t}` : null },
]
},
{
......@@ -401,7 +401,7 @@ const DescriptionsInfo: React.FC<BasicInfoProps> = ({cardTitle, type}) => {
</Col>
<Col>
<div><span className={style['card-list_title']}>中标金额(含税):</span></div>
<div><span>{alreadyPay}</span></div>
<div><span style={{fontSize: 18, lineHeight: 2, fontWeight: 'bold'}}>{Number(alreadyPay).toFixed(2).replace(/\B(?=(\d{3})+(?!\d))/g, ',')}</span></div>
</Col>
</Row>,
},
......@@ -481,7 +481,7 @@ const DescriptionsInfo: React.FC<BasicInfoProps> = ({cardTitle, type}) => {
/** 类型数据映射 */
const Type_Data_Map = {
// 招标大类显示招标信息 投标大类显示投标信息
'basicInfo': (apiType[0] === 'c' || apiType === 'tenderInCallForBid') ? basicColumnList : basicTenderColumnList,
'basicInfo': apiType[apiType.length - 1] === 'r' ? basicTenderColumnList : basicColumnList,
// 投标显示投标要求
'bidNeed': apiType[apiType.length - 1] === 'r' ? tenderNeedList : callForNeedList,
'registerNeed': registerNeedList,
......
......@@ -103,7 +103,7 @@ const AddTender:React.FC<AddTenderProps> = (props) => {
}
let param = {
...item,
inviteTenderMateriel: { id: item.id },
inviteTenderMateriel: { id: item.inviteTenderMateriel.id },
}
if(!value?.id) delete param.id
return param
......
......@@ -148,7 +148,7 @@ export const useProductTable = (ctx: ISchemaFormActions | ISchemaFormAsyncAction
// 嵌套子表格
const productChildren = {
expandedRowRender: record => <p style={{ margin: 0 }}>{ record.description || <Spin size="small" style={{margin: '15px auto', width: '100%'}} />}</p>,
expandedRowRender: record => <p style={{ margin: 0 }}>{ record?.commodityId ? (record.description || <Spin size="small" style={{margin: '15px auto', width: '100%'}} />) : null}</p>,
rowExpandable: record => record.name !== 'Not Expandable',
expandIcon: ({ expanded, onExpand, record }) =>
expanded ? (
......@@ -159,7 +159,8 @@ export const useProductTable = (ctx: ISchemaFormActions | ISchemaFormAsyncAction
onExpand: (expanded, record) => {
console.log('通过商品Id 查询商品信息显示在嵌套中', record, expanded)
if(!record?.commodityId && expanded) {
return message.error('请先选择关联商品')
// return message.error('请先选择关联商品')
return null
}
if(expanded) {
renderDescription(record)
......
......@@ -80,140 +80,140 @@ export const formSchema: ISchema = {
}
}
},
"tab-2": {
"type": "object",
"x-component": "tabpane",
"x-component-props": {
"tab": "投标要求"
},
properties: {
MEGA_LAYOUT2: {
type: 'object',
"x-component": 'mega-layout',
"x-component-props": {
labelCol: 4,
wrapperCol: 8,
labelAlign: 'left'
},
properties: {
'[inviteTenderStartTime, inviteTenderEndTime]': {
type: 'string',
"x-component": 'daterange',
title: '投标要求时间',
readOnly: true,
"x-component-props": {
showTime: true,
style: { width: "100%" }
}
},
hopeDate: {
type: 'string',
"x-component": 'date',
title: '期望交付日期',
readOnly: true,
"x-component-props": {
showTime: true,
style: { width: "100%" }
}
},
targetPrice: {
type: 'string',
title: '目标价',
readOnly: true,
'x-component-props': {
addonBefore: "¥",
},
},
inviteTenderRequirement: {
type: 'string',
title: '招标要求',
readOnly: true,
},
inviteTenderFile: {
title: '招标文件',
'x-component': 'FixUpload',
'x-component-props': {
action: '/api/file/file/upload/prefix',
data: {
fileType: 1,
prefix: '',
},
beforeUpload: '{{beforeUpload}}',
accept: '.xls, .xlsx, .doc, .docx, .wps, .pdf, .jpg, .png, .jpeg',
},
'x-rules': [
{
required: false,
message: '请上传附件',
},
],
readOnly: true,
},
}
}
}
},
"tab-3": {
type: "object",
"x-component": "tabpane",
"x-component-props": {
"tab": "其他投标要求"
},
properties: {
MEGA_LAYOUT3: {
type: 'object',
"x-component": 'mega-layout',
"x-component-props": {
labelCol: 4,
wrapperCol: 8,
labelAlign: 'left'
},
properties: {
payType: {
type: 'string',
title: '付款方式',
readOnly: true,
},
deliverAddress: {
type: 'string',
title: '交付地址ID',
visible: false,
readOnly: true,
},
fullAddress: {
type: 'string',
title: '交付地址',
readOnly: true,
},
deliverRequirement: {
type: 'string',
title: '交付要求',
readOnly: true,
},
taxationRequirement: {
type: 'string',
title: '税费要求',
readOnly: true,
},
logisticsRequirement: {
type: 'string',
title: '物流要求',
readOnly: true,
},
packingRequirement: {
type: 'string',
title: '包装要求',
readOnly: true,
},
otherRequirement: {
type: 'string',
title: '其他要求',
readOnly: true,
},
}
}
}
},
// "tab-2": {
// "type": "object",
// "x-component": "tabpane",
// "x-component-props": {
// "tab": "投标要求"
// },
// properties: {
// MEGA_LAYOUT2: {
// type: 'object',
// "x-component": 'mega-layout',
// "x-component-props": {
// labelCol: 4,
// wrapperCol: 8,
// labelAlign: 'left'
// },
// properties: {
// '[inviteTenderStartTime, inviteTenderEndTime]': {
// type: 'string',
// "x-component": 'daterange',
// title: '投标要求时间',
// readOnly: true,
// "x-component-props": {
// showTime: true,
// style: { width: "100%" }
// }
// },
// hopeDate: {
// type: 'string',
// "x-component": 'date',
// title: '期望交付日期',
// readOnly: true,
// "x-component-props": {
// showTime: true,
// style: { width: "100%" }
// }
// },
// targetPrice: {
// type: 'string',
// title: '目标价',
// readOnly: true,
// 'x-component-props': {
// addonBefore: "¥",
// },
// },
// inviteTenderRequirement: {
// type: 'string',
// title: '招标要求',
// readOnly: true,
// },
// inviteTenderFile: {
// title: '招标文件',
// 'x-component': 'FixUpload',
// 'x-component-props': {
// action: '/api/file/file/upload/prefix',
// data: {
// fileType: 1,
// prefix: '',
// },
// beforeUpload: '{{beforeUpload}}',
// accept: '.xls, .xlsx, .doc, .docx, .wps, .pdf, .jpg, .png, .jpeg',
// },
// 'x-rules': [
// {
// required: false,
// message: '请上传附件',
// },
// ],
// readOnly: true,
// },
// }
// }
// }
// },
// "tab-3": {
// type: "object",
// "x-component": "tabpane",
// "x-component-props": {
// "tab": "其他投标要求"
// },
// properties: {
// MEGA_LAYOUT3: {
// type: 'object',
// "x-component": 'mega-layout',
// "x-component-props": {
// labelCol: 4,
// wrapperCol: 8,
// labelAlign: 'left'
// },
// properties: {
// payType: {
// type: 'string',
// title: '付款方式',
// readOnly: true,
// },
// deliverAddress: {
// type: 'string',
// title: '交付地址ID',
// visible: false,
// readOnly: true,
// },
// fullAddress: {
// type: 'string',
// title: '交付地址',
// readOnly: true,
// },
// deliverRequirement: {
// type: 'string',
// title: '交付要求',
// readOnly: true,
// },
// taxationRequirement: {
// type: 'string',
// title: '税费要求',
// readOnly: true,
// },
// logisticsRequirement: {
// type: 'string',
// title: '物流要求',
// readOnly: true,
// },
// packingRequirement: {
// type: 'string',
// title: '包装要求',
// readOnly: true,
// },
// otherRequirement: {
// type: 'string',
// title: '其他要求',
// readOnly: true,
// },
// }
// }
// }
// },
"tab-4": {
type: "object",
"x-component": "tabpane",
......
......@@ -32,6 +32,12 @@ const CallForBidsSearchDetailInTender: React.FC = () => {
// anchorTitleList.splice(5, 2)
// }
// 勾选资格预审 才有资格预审信息
if(!data?.inviteTender?.isQualificationCheck) {
anchorTitleList.forEach((ele, index) => ele['title'] === '资格预审要求' && anchorTitleList.splice(index, 1))
anchorTitleList.forEach((ele, index) => ele['title'] === '资格证明文件' && anchorTitleList.splice(index, 1))
}
return (
<div>
<BidDetailContext.Provider value={formContext}>
......
......@@ -21,8 +21,8 @@ const FirstCheckedTenderDetail: React.FC = () => {
const anchorTitleList = [
{ title: '流转进度', id: 'transferProcess', componentName: "TransferProcess" },
{ title: '基本信息', id: 'baseicInfo', type: "basicInfo" },
{ title: '投标要求', id: 'bidNeed', type: "bidNeed" },
{ title: '投标其他要求', id: 'otherNeed', type: "otherNeed" },
// { title: '投标要求', id: 'bidNeed', type: "bidNeed" },
// { title: '投标其他要求', id: 'otherNeed', type: "otherNeed" },
{ title: '投标商品', id: 'bidParticulars', componentName: "BidParticulars" },
{ title: '流转记录', id: 'transferRecord', componentName: "BidTransformRecord" },
]
......
......@@ -21,8 +21,8 @@ const ReadySubmitTenderDetail: React.FC = () => {
const anchorTitleList = [
{ title: '流转进度', id: 'transferProcess', componentName: "TransferProcess" },
{ title: '基本信息', id: 'baseicInfo', type: "basicInfo" },
{ title: '投标要求', id: 'bidNeed', type: "bidNeed" },
{ title: '投标其他要求', id: 'otherNeed', type: "otherNeed" },
// { title: '投标要求', id: 'bidNeed', type: "bidNeed" },
// { title: '投标其他要求', id: 'otherNeed', type: "otherNeed" },
{ title: '投标商品', id: 'bidParticulars', componentName: "BidParticulars" },
{ title: '流转记录', id: 'transferRecord', componentName: "BidTransformRecord" },
]
......
......@@ -22,8 +22,8 @@ const SecondCheckedTenderDetail: React.FC = () => {
const anchorTitleList = [
{ title: '流转进度', id: 'transferProcess', componentName: "TransferProcess" },
{ title: '基本信息', id: 'baseicInfo', type: "basicInfo" },
{ title: '投标要求', id: 'bidNeed', type: "bidNeed" },
{ title: '投标其他要求', id: 'otherNeed', type: "otherNeed" },
// { title: '投标要求', id: 'bidNeed', type: "bidNeed" },
// { title: '投标其他要求', id: 'otherNeed', type: "otherNeed" },
{ title: '投标商品', id: 'bidParticulars', componentName: "BidParticulars" },
{ title: '流转记录', id: 'transferRecord', componentName: "BidTransformRecord" },
]
......
......@@ -19,9 +19,9 @@ const TenderSearchDetail: React.FC = () => {
{ title: '中标结果', id: 'bidResult', type: "bidResult" },
{ title: '中标明细', id: 'bidParticulars', componentName: "BidParticulars" },
{ title: '基本信息', id: 'baseicInfo', type: "basicInfo" },
{ title: '投标要求', id: 'tenderNeed', type: "bidNeed" },
{ title: '投标其他要求', id: 'tenderOtherNeed', type: "otherNeed" },
{ title: '投标商品', id: 'tenderParticulars', componentName: "BidParticulars" },
// { title: '投标要求', id: 'tenderNeed', type: "bidNeed" },
// { title: '投标其他要求', id: 'tenderOtherNeed', type: "otherNeed" },
{ title: '投标物料', id: 'tenderParticulars', componentName: "BidParticulars" },
{ title: '流转记录', id: 'transferRecord', componentName: "BidTransformRecord" },
]
......@@ -29,6 +29,10 @@ const TenderSearchDetail: React.FC = () => {
if(data?.isWin === null) {
anchorTitleList.splice(1, 2)
}
// 未中标隐藏中标明细
if(data?.isWin === false) {
anchorTitleList.splice(2, 1)
}
return (
<div>
......
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