Commit e989bf9a authored by 前端-黄佳鑫's avatar 前端-黄佳鑫

feat: 采购能力国际化

parent 95bc8620
......@@ -487,7 +487,7 @@ export default {
'detail.purchase.tips19': '最长',
'detail.purchase.tips20': '个字符,',
'detail.purchase.label': '中标金额(含税',
'detail.purchase.label': '中标金额(含税)',
'detail.purchase.label1': '中标理由',
'detail.purchase.label2': '价格最低',
'detail.purchase.label3': '至',
......@@ -749,7 +749,7 @@ export default {
'table.purchase.gengduo': '更多',
'table.purchase.xiugaidekaibiao': '修改的开标时间必须大于等于投标截止时间且小于评标开始时间',
'table.purchase.dangqianid': '当前id',
'table.purchase.zaicishuruni': '在此输入你的原因, 最多50个汉字',
100: '在此输入你的原因, 最多50个汉字',
'table.purchase.feibiaoyuanyin': '废标原因',
'table.purchase.qingshurufeibiao': '请输入废标原因',
'table.purchase.xiugaikaibiaoshi': '修改开标时间',
......@@ -833,4 +833,73 @@ export default {
'table.purchase.shifoushenhetong': '是否审核通过',
'table.purchase.zaicishuruni60': '在此输入你的原因, 最多60个汉字',
'table.purchase.shenhedingbiao': '审核定标',
'table.purchase.daishenhebaoming': '待审核报名',
'table.purchase.qingshuruliyou': '请输入理由',
'table.purchase.qingshoubiao': '请授标',
'table.purchase.qingzhengqueshoubiao': '请正确授标,授标比例为100%',
'table.purchase.tijiaodingbiao': '提交定标',
'table.purchase.toubiaohuiyuanbei': '投标会员备用',
'table.purchase.pingfenxizebei': '评分细则备用',
'table.purchase.tijiaoshenhe': '提交审核',
'table.purchase.tuijianzhongbiao': '推荐中标',
'table.purchase.tuijianliyou': '推荐理由',
'table.purchase.qingshurutuijian': '请输入推荐理由',
'table.purchase.cixiangbixutian': '此项必须填写',
'table.purchase.xiaoshudianhoumian': '小数点后面仅限两位小数',
'table.purchase.pingbiaohuiyuan': '评标会员',
'table.purchase.zongjidefen': '总计得分',
'table.purchase.tijiaopingbiao': '提交评标',
'table.purchase.qingzhengquetianxie': '请正确填写评标分值',
'table.purchase.pingbiao': '评标',
'table.purchase.querendingbiao': '确认定标',
'table.purchase.zigezhengmingwen': '资格证明文件',
'table.purchase.daishenhezige': '待审核资格预审',
'table.purchase.huiyuanzhongbiaoxin': '会员中标信息',
'table.purchase.fasongzhongbiaogong': '发送中标公示',
'table.purchase.qingtianxiezhongbiao': '请填写中标公示',
'table.purchase.zhongbiaogongshifu': '中标公示附件',
'table.purchase.fasongzhongbiaotong': '发送中标通知',
'table.purchase.qingtianxiezhongbiao1': '请填写中标通知',
'table.purchase.zhongbiaotongzhifu': '中标通知附件',
'table.purchase.fasongganxiehan': '发送感谢函',
'table.purchase.qingtianxieganxie': '请填写感谢函',
'table.purchase.zhongbiaohuiyuanxin': '中标会员信息',
'table.purchase.zhongbiaohuiyuan': '中标会员',
'table.purchase.yizhongbiao': '已中标',
'table.purchase.pingbiaogongzuoyi': '评标工作已经结束,中标人已经确定。现将中标结果公布如下',
'table.purchase.zhongbiaogongyingshang': '中标供应商',
'table.purchase.guigongsicanyu': '贵公司参与了我公司',
'table.purchase.jingbiaoaiwo':
'竞标。在我公司综合各投标单位的基本情况,并进行充分技术交流后,经评标委员会综合评定,贵公司未能中标。我公司对贵公司的积极参与和支持深表感谢!希望下次合作成功。',
'table.purchase.zhongbiaozongjine': '中标总金额',
'table.purchase.shangchuanshibai': '上传失败',
'table.purchase.wenjianmingguochang': '文件名过长',
'table.purchase.zhuanjiatouxiang': '专家头像',
'table.purchase.pingweizhuanjiabian': '评委专家编号:',
'table.purchase.xinzengtuijianzhong': '新增推荐中标',
'table.purchase.shangchuanfujian': '上传附件',
'table.purchase.xinzengtuijianhui': '新增推荐会员',
'table.purchase.shurutuijianzhong': '输入推荐中标会员',
'table.purchase.shurutuijianren': '输入推荐人',
'table.purchase.zaicishuruni100': '在此输入你的理由, 最多100个字符',
'table.purchase.tijiaobaogao': '提交报告',
'table.purchase.tijiaopinggubao': '提交评估报告',
'table.purchase.toubiaobianhao': '投标编号',
'table.purchase.toubiaoxiangmu': '投标项目',
'table.purchase.toubiaozhaiyao': '投标摘要',
'table.purchase.toubiaowenjian': '投标文件',
'table.purchase.shiyongchengshi': '适用城市',
'table.purchase.toubiaojiezhishi': '投标截止时间',
'table.purchase.toubiaohuiyuan': '投标会员',
'table.purchase.lianxirendianhua': '联系人电话',
'table.purchase.zigeyushenyao1': '资格预审要求附件',
'table.purchase.zhongbiaojine': '中标金额',
'table.purchase.zhongbiaoshibai': '中标失败',
'table.purchase.zhakanganxiehan': '查看感谢函',
'table.purchase.weizhongjine': '未中金额',
'table.purchase.pingbiaozhuanjialie': '评标专家列表',
'table.purchase.guigongsicici': '贵公司此次未中标!非常感谢贵公司的积极参与,希望下次合作成功!',
'table.purchase.fasongtongzhi': '发送通知',
'table.purchase.quedingyaozhixing': '确定要执行该操作?',
'table.purchase.zaicifasongtong': '再次发送通知',
}
......@@ -62,7 +62,7 @@ export const ProductTableCell:React.FC<ProductTableCellProps> = ({
values[idx] = idx === 'count' ? Number(values.count) : values[idx]
handleSave({ ...record, ...values });
} catch (errInfo) {
console.log('Save failed:', errInfo);
console.log('Save failed', errInfo);
}
};
......@@ -75,7 +75,7 @@ export const ProductTableCell:React.FC<ProductTableCellProps> = ({
values['unitId'] = op['value']
handleSave({ ...record, ...values });
} catch (errInfo) {
console.log('Save failed:', errInfo);
console.log('Save failed', errInfo);
}
}
......
......@@ -166,7 +166,7 @@ export const paramsRenderFn = (value) => {
// export const memberColumns: any[] = [
// {
// title: '会员ID',
// title: intl.formatMessage({ id: 'detail.purchase.memberId' }),
// dataIndex: 'memberId',
// align: 'center',
// key: 'memberId',
......
......@@ -88,7 +88,7 @@ const AddRemarkBidCommittee: React.FC<AddRemarkBidCommitteeProps> = (props) => {
initRender.code = data['code']
initRender.projectName = data['projectName']
initRender.openTenderTime = formatTimeString(data['openTenderTime'])
// initRender.status = data.status ? '待发送' : '已发送'
// initRender.status = data.status ? intl.formatMessage({ id: 'table.purchase.daifasong' }) : intl.formatMessage({ id: 'table.purchase.yifasong' })
initRender.status = intl.formatMessage({ id: 'table.purchase.daifasong' })
initRender.expertExtractQueryList = initConditionData
initRender.inviteTender = { id: code }
......
......@@ -37,7 +37,7 @@ export const tableListSchema: ISchema = {
type: 'array',
"x-component": 'DateRangePickerUnix',
'x-component-props': {
placeholder: ['评标开始时间','评标结束时间'],
placeholder: [intl.formatMessage({ id: 'table.purchase.pingbiaokaishishi' }),intl.formatMessage({ id: 'table.purchase.pingbiaojieshushi' })],
},
},
submit: {
......
......@@ -29,7 +29,7 @@ export const TotalAmount:React.FC<TotalAmountProps> = ({
<Row>
<Col span={8}><p className={style['card-list_title']}>{intl.formatMessage({ id: 'detail.purchase.label34' })}:</p></Col>
<Col>
<p>¥{ (datas.reduce((a, b) => a + b[item.dataIndex]['price'] * b.count, 0)).toFixed(2) }(含税)</p>
<p>¥{ (datas.reduce((a, b) => a + b[item.dataIndex]['price'] * b.count, 0)).toFixed(2) }({intl.formatMessage({ id: 'detail.purchase.isTax' })})</p>
</Col>
</Row>
</div>
......@@ -57,7 +57,7 @@ export const TotalAmount:React.FC<TotalAmountProps> = ({
<div className={style['card-list']}>
<Row>
<Col span={8}><p className={style['card-list_title']}>{intl.formatMessage({ id: 'table.purchase.shoubiaozonge' })}:</p></Col>
<Col><p>¥{(datas.reduce((a, b) => a + (b[item.dataIndex]['isAwardTender'] ? (b[item.dataIndex]['price'] * b.count * b[item.dataIndex]['awardRate'] / 100) : 0), 0)).toFixed(2)}(含税)</p></Col>
<Col><p>¥{(datas.reduce((a, b) => a + (b[item.dataIndex]['isAwardTender'] ? (b[item.dataIndex]['price'] * b.count * b[item.dataIndex]['awardRate'] / 100) : 0), 0)).toFixed(2)}({intl.formatMessage({ id: 'detail.purchase.isTax' })})</p></Col>
</Row>
</div>
</Col>) : null)
......
......@@ -235,7 +235,7 @@ const BidConfirm: React.FC<BidConfirmProps> = ({cardTitle}) => {
<Row>
<Col span={8}><p className={style['card-list_title']}>{intl.formatMessage({ id: 'detail.purchase.label34' })}:</p></Col>
<Col>
<p>¥{ (tableDataSource.reduce((a, b) => a + b[item.dataIndex]['price'] * b.count, 0)).toFixed(2) }(含税)</p>
<p>¥{ (tableDataSource.reduce((a, b) => a + b[item.dataIndex]['price'] * b.count, 0)).toFixed(2) }({intl.formatMessage({ id: 'detail.purchase.isTax' })})</p>
</Col>
</Row>
</div>
......@@ -269,7 +269,7 @@ const BidConfirm: React.FC<BidConfirmProps> = ({cardTitle}) => {
<div className={style['card-list']}>
<Row>
<Col span={8}><p className={style['card-list_title']}>{intl.formatMessage({ id: 'table.purchase.shoubiaozonge' })}:</p></Col>
<Col><p>¥{(tableDataSource.reduce((a, b) => a + (b[item.dataIndex]['isAwardTender'] ? (b[item.dataIndex]['price'] * b.count * b[item.dataIndex]['awardTenderRatio'] / 100) : 0), 0)).toFixed(2)}(含税)</p></Col>
<Col><p>¥{(tableDataSource.reduce((a, b) => a + (b[item.dataIndex]['isAwardTender'] ? (b[item.dataIndex]['price'] * b.count * b[item.dataIndex]['awardTenderRatio'] / 100) : 0), 0)).toFixed(2)}({intl.formatMessage({ id: 'detail.purchase.isTax' })})</p></Col>
</Row>
</div>
</div>
......
......@@ -49,7 +49,7 @@ const ParticipateInfo: React.FC<ParticipateInfoProps> = ({cardTitle}) => {
<div className={style.participateContent}>
<div className={style.topWrapper}>
<h3>{item.company}</h3>
<p className={style.amount}>{(item.amount).toFixed(2)}<span>{item.isTax ? ' (含税)' : ' (不含税)'}</span></p>
<p className={style.amount}>{(item.amount).toFixed(2)}<span>{item.isTax ? `(${intl.formatMessage({ id: 'detail.purchase.isTax' })})` : `(${intl.formatMessage({ id: 'table.purchase.buhanshui' })})`}</span></p>
</div>
<div className={style.contentWrapper}>
<Row className={style['card-list']}>
......
......@@ -89,7 +89,7 @@ export const useSelfTable = () => {
align: 'left',
dataIndex: 'ctl',
key: 'ctl',
render: (text, record) => <Button type='link' onClick={() => handleSubmit(record)}>审核</Button>
render: (text, record) => <Button type='link' onClick={() => handleSubmit(record)}>{intl.formatMessage({ id: 'table.purchase.shenhe' })}</Button>
}
])
......
......@@ -38,7 +38,7 @@ export const tableListSchema: ISchema = {
type: 'array',
"x-component": 'DateRangePickerUnix',
'x-component-props': {
placeholder: ['评标开始时间','评标结束时间'],
placeholder: [intl.formatMessage({ id: 'table.purchase.pingbiaokaishishi' }),intl.formatMessage({ id: 'table.purchase.pingbiaojieshushi' })],
},
},
submit: {
......
......@@ -48,8 +48,8 @@ const ReadyCheckedRegisterDetail: React.FC = () => {
// { title: intl.formatMessage({ id: 'table.purchase.zhaobiaowuliao' }), id: 'bidMaterial', componentName: "BidMaterial" },
// { title: intl.formatMessage({ id: 'table.purchase.zhaobiaoyaoqiu' }), id: 'bidNeed', type: "bidNeed" },
{ title: intl.formatMessage({ id: 'table.purchase.baomingyaoqiu' }), id: 'registerNeed', type: "registerNeed" },
{ title: '报名信息', id: 'registerInfo', type: 'registerInfo' },
{ title: '报名文件', id: 'baseicInfo', type: "registerFile" },
{ title: intl.formatMessage({ id: 'detail.purchase.signUpMsgLayout' }), id: 'registerInfo', type: 'registerInfo' },
{ title: intl.formatMessage({ id: 'detail.purchase.signUpFileLayout' }), id: 'baseicInfo', type: "registerFile" },
// { title: intl.formatMessage({ id: 'table.purchase.zigeyushenyao' }), id: 'checkNeed', type: "checkNeed" },
// { title: intl.formatMessage({ id: 'table.purchase.pingbiaoyaoqiu' }), id: 'remarkNeed', type: "remarkNeed" },
// { title: intl.formatMessage({ id: 'table.purchase.qitayaoqiu' }), id: 'otherNeed', type: "otherNeed" },
......
......@@ -52,14 +52,14 @@ export const useSelfTable = () => {
render: (t, r) => CALLFORBID_TYPE[r.inviteTender.inviteTenderType]
},
{
title: '报名会员',
title: intl.formatMessage({ id: 'table.purchase.inviteMemberName' }),
align: 'left',
dataIndex: 'inviteTender',
key: 'inviteTender',
render: (text, record) => record.memberName,
},
{
title: '提交时间',
title: intl.formatMessage({ id: 'table.purchase.inviteTenderCreateTime' }),
align: 'left',
dataIndex: 'inviteTender',
key: 'inviteTender',
......@@ -67,7 +67,7 @@ export const useSelfTable = () => {
width: 180
},
{
title: '报名开始/截止时间',
title: intl.formatMessage({ id: 'table.purchase.baomingkaishi/' }),
align: 'left',
dataIndex: 'memberRoleId',
key: 'memberRoleId',
......@@ -89,7 +89,7 @@ export const useSelfTable = () => {
align: 'left',
dataIndex: 'submitTenderInStatusValue',
key: 'submitTenderInStatusValue',
render: (text, r) => <CustomBadge text={'待审核报名'} color={r.submitTenderInStatusColor} />
render: (text, r) => <CustomBadge text={intl.formatMessage({ id: 'table.purchase.daishenhebaoming' })} color={r.submitTenderInStatusColor} />
},
]
......@@ -99,7 +99,7 @@ export const useSelfTable = () => {
align: 'left',
dataIndex: 'ctl',
key: 'ctl',
render: (text, record) => <Button type='link' onClick={() => handleSubmit(record.id)}>审核</Button>
render: (text, record) => <Button type='link' onClick={() => handleSubmit(record.id)}>{intl.formatMessage({ id: 'table.purchase.shenhe' })}</Button>
}
])
......
......@@ -41,7 +41,7 @@ export const TotalAmount:React.FC<TotalAmountProps> = ({
<Row>
<Col span={8}><p className={style['card-list_title']}>{intl.formatMessage({ id: 'detail.purchase.label34' })}:</p></Col>
<Col>
<p>¥{ (datas.reduce((a, b) => a + b[item.dataIndex]['price'] * b.count, 0)).toFixed(2) }(含税)</p>
<p>¥{ (datas.reduce((a, b) => a + b[item.dataIndex]['price'] * b.count, 0)).toFixed(2) }({intl.formatMessage({ id: 'detail.purchase.isTax' })})</p>
</Col>
</Row>
</div>
......@@ -79,7 +79,7 @@ export const TotalAmount:React.FC<TotalAmountProps> = ({
<div className={style['card-list']}>
<Row>
<Col span={8}><p className={style['card-list_title']}>{intl.formatMessage({ id: 'table.purchase.shoubiaozonge' })}:</p></Col>
<Col><p>¥{(datas.reduce((a, b) => a + (b[item.dataIndex]['isAwardTender'] ? (b[item.dataIndex]['price'] * b.count * b[item.dataIndex]['awardRate'] / 100) : 0), 0)).toFixed(2)}(含税)</p></Col>
<Col><p>¥{(datas.reduce((a, b) => a + (b[item.dataIndex]['isAwardTender'] ? (b[item.dataIndex]['price'] * b.count * b[item.dataIndex]['awardRate'] / 100) : 0), 0)).toFixed(2)}({intl.formatMessage({ id: 'detail.purchase.isTax' })})</p></Col>
</Row>
</div>
</Col>) : null)
......
......@@ -209,7 +209,7 @@ const BidConfirm: React.FC<BidConfirmProps> = ({cardTitle}) => {
<Row>
<Col span={8}><p className={style['card-list_title']}>{intl.formatMessage({ id: 'detail.purchase.label34' })}:</p></Col>
<Col>
<p>¥{ (tableDataSource.reduce((a, b) => a + b[item.dataIndex]['price'] * b.count, 0)).toFixed(2) }(含税)</p>
<p>¥{ (tableDataSource.reduce((a, b) => a + b[item.dataIndex]['price'] * b.count, 0)).toFixed(2) }({intl.formatMessage({ id: 'detail.purchase.isTax' })})</p>
</Col>
</Row>
</div>
......@@ -243,7 +243,7 @@ const BidConfirm: React.FC<BidConfirmProps> = ({cardTitle}) => {
<div className={style['card-list']}>
<Row>
<Col span={8}><p className={style['card-list_title']}>{intl.formatMessage({ id: 'table.purchase.shoubiaozonge' })}:</p></Col>
<Col><p>¥{(tableDataSource.reduce((a, b) => a + (b[item.dataIndex]['isAward'] ? (b[item.dataIndex]['price'] * b.count * b[item.dataIndex]['awardRate'] / 100) : 0), 0)).toFixed(2)}(含税)</p></Col>
<Col><p>¥{(tableDataSource.reduce((a, b) => a + (b[item.dataIndex]['isAward'] ? (b[item.dataIndex]['price'] * b.count * b[item.dataIndex]['awardRate'] / 100) : 0), 0)).toFixed(2)}({intl.formatMessage({ id: 'detail.purchase.isTax' })})</p></Col>
</Row>
</div>
</div>
......
......@@ -50,7 +50,7 @@ const ParticipateInfo: React.FC<ParticipateInfoProps> = ({cardTitle}) => {
<div className={style.participateContent}>
<div className={style.topWrapper}>
<h3>{item.company}</h3>
<p className={style.amount}>{item.amount.toFixed(2)}<span>{item.isTax ? ' (含税)' : ' (不含税)'}</span></p>
<p className={style.amount}>{item.amount.toFixed(2)}<span>{item.isTax ? intl.formatMessage({ id: 'detail.purchase.isTax' }) : intl.formatMessage({ id: 'table.purchase.buhanshui' })}</span></p>
</div>
<div className={style.contentWrapper}>
<Row className={style['card-list']}>
......
......@@ -125,13 +125,13 @@ export const submitSchema = {
type: 'textarea',
"x-component-props": {
rows: 4,
placeholder: '在此输入你的理由, 最多50个汉字'
placeholder: intl.formatMessage({ id: 'table.purchase.zaicishuruni' })
},
title: intl.formatMessage({ id: 'detail.purchase.label1' }),
"x-rules": [
{
required: true,
message: '请输入理由'
message: intl.formatMessage({ id: 'table.purchase.qingshuruliyou' })
},
{
limitByte: true,
......@@ -154,10 +154,10 @@ export const submitSchema = {
'x-rules': [
{
required: false,
message: '请上传附件',
message: intl.formatMessage({ id: 'detail.purchase.message57' }),
},
],
description: '一次上传一个文件,每个附件大小不能超过20M',
description: intl.formatMessage({ id: 'table.purchase.yicishangchuanyi' }),
},
}
}
......
......@@ -50,10 +50,10 @@ const ReadyQualifityCheckedDetail: React.FC = () => {
rigthRate.push(rate === 100)
})
if(!errorValidate) {
return message.error('请授标')
return message.error(intl.formatMessage({ id: 'table.purchase.qingshoubiao' }))
}
if(rigthRate.some(item => !item)) {
return message.error('请正确授标,授标比例为100%')
return message.error(intl.formatMessage({ id: 'table.purchase.qingzhengqueshoubiao' }))
}
currentRef.current.setVisible(true)
}
......@@ -108,7 +108,7 @@ const ReadyQualifityCheckedDetail: React.FC = () => {
const beforeUpload = file => {
if (file.size / 1024 / 1024 > 20) {
message.warning('附件大小超过20M');
message.warning(intl.formatMessage({ id: 'table.purchase.yicishangchuanyi' }));
return Promise.reject();
}
}
......@@ -121,7 +121,7 @@ const ReadyQualifityCheckedDetail: React.FC = () => {
anchorList={anchorTitleList}
extraRight={
<Button type='primary' onClick={onSubmit} icon={<SendOutlined />}>
提交定标
{intl.formatMessage({ id: 'table.purchase.tijiaodingbiao' })}
</Button>
}
/>
......@@ -201,7 +201,7 @@ const ReadyQualifityCheckedDetail: React.FC = () => {
</OrderDetailWrapper>
<ModalForm
modalTitle='提交定标'
modalTitle={intl.formatMessage({ id: 'table.purchase.tijiaodingbiao' })}
currentRef={currentRef}
confirm={onConfirm}
actions={modalActions}
......
......@@ -24,7 +24,7 @@ export const useSelfTable = () => {
align: 'left',
dataIndex: 'ctl',
key: 'ctl',
render: (text, record) => <Button type='link' onClick={() => handleSubmit(record)}>提交审核</Button>
render: (text, record) => <Button type='link' onClick={() => handleSubmit(record)}>{intl.formatMessage({ id: 'table.purchase.tijiaoshenhe' })}</Button>
}
])
......
......@@ -37,7 +37,7 @@ export const tableListSchema: ISchema = {
type: 'array',
"x-component": 'DateRangePickerUnix',
'x-component-props': {
placeholder: ['评标开始时间','评标结束时间'],
placeholder: [intl.formatMessage({ id: 'table.purchase.pingbiaokaishishi' }),intl.formatMessage({ id: 'table.purchase.pingbiaojieshushi' })],
},
},
submit: {
......
......@@ -11,7 +11,7 @@ import { getIntl } from 'umi';
/**
* 评标报告
*/
const intl = getIntl();
const intl = getIntl();
export interface RemarkBidReportProps {
cardTitle?: string;
......@@ -20,8 +20,8 @@ export interface RemarkBidReportProps {
}
const OnlineRemark: React.FC<RemarkBidReportProps> = ({cardTitle, addSchemaAction, onConfirm}) => {
const { formContext, id } = useRemarkDetail({type: 'callForBid'})
const OnlineRemark: React.FC<RemarkBidReportProps> = ({ cardTitle, addSchemaAction, onConfirm }) => {
const { formContext, id } = useRemarkDetail({ type: 'callForBid' })
const { data } = formContext
const { remarkColumns, remarkComponents } = useRemarkTable(addSchemaAction, data)
......@@ -39,16 +39,16 @@ const OnlineRemark: React.FC<RemarkBidReportProps> = ({cardTitle, addSchemaActio
const onBlurInput = (v, index) => {
const hasValues = addSchemaAction.getFieldValue('evaluationTenderList')
if(hasValues.length) {
if (hasValues.length) {
addSchemaAction.setFieldValue('evaluationTenderList', hasValues.map((item, _i) => {
if(index === _i) {
if (index === _i) {
return {
...item,
isRecommend: true,
reason: v.target.value
}
} else {
return {...item}
return { ...item }
}
}))
}
......@@ -57,7 +57,7 @@ const OnlineRemark: React.FC<RemarkBidReportProps> = ({cardTitle, addSchemaActio
const chanegChecked = (e) => {
const ev: any = window.event || e;
const path = ev.path || (ev.composedPath && ev.composedPath());
if(e.target.checked) {
if (e.target.checked) {
path[6].style.border = '1px solid #00B37A'
path[6].nextSibling.style.display = 'inline-block'
} else {
......@@ -69,7 +69,7 @@ const OnlineRemark: React.FC<RemarkBidReportProps> = ({cardTitle, addSchemaActio
return (
<MellowCard
title={cardTitle}
style={{marginTop: 24}}
style={{ marginTop: 24 }}
bordered={false}
fullHeight
>
......@@ -99,12 +99,12 @@ const OnlineRemark: React.FC<RemarkBidReportProps> = ({cardTitle, addSchemaActio
},
memberList: {
type: 'array',
title: '投标会员备用',
title: intl.formatMessage({ id: 'table.purchase.toubiaohuiyuanbei' }),
visible: false,
},
templateContentList: {
type: 'array',
title: '评分细则备用',
title: intl.formatMessage({ id: 'table.purchase.pingfenxizebei' }),
visible: false,
}
}
......@@ -131,22 +131,22 @@ const OnlineRemark: React.FC<RemarkBidReportProps> = ({cardTitle, addSchemaActio
evaluationTenderList?.length ? evaluationTenderList.map((item, index) => (<Col span={4} key={item.memberId}>
<div className={style['card-list']}>
<Row>
<Col span={20}><p style={{fontWeight: "bold"}}>{item.memberName}</p></Col>
<Col><p style={{fontWeight: "bold"}}>{item.totalScore}</p></Col>
<Col span={20}><p style={{ fontWeight: "bold" }}>{item.memberName}</p></Col>
<Col><p style={{ fontWeight: "bold" }}>{item.totalScore}</p></Col>
</Row>
<Row>
<Col span={20}><p className={style['card-list_title']}>推荐中标:</p></Col>
<Col span={20}><p className={style['card-list_title']}>{intl.formatMessage({ id: 'table.purchase.tuijianzhongbiao' })}:</p></Col>
<Col>
<p>
<Checkbox defaultChecked={false} style={{marginRight: 16}} onChange={chanegChecked} />
<Checkbox defaultChecked={false} style={{ marginRight: 16 }} onChange={chanegChecked} />
</p>
</Col>
</Row>
</div>
<div style={{marginTop: 12, display: 'none', width: '100%'}}>
<p className={style['card-list_title']}>&nbsp;&nbsp;推荐理由:</p>
<div style={{ marginTop: 12, display: 'none', width: '100%' }}>
<p className={style['card-list_title']}>&nbsp;&nbsp;{intl.formatMessage({ id: 'table.purchase.tuijianliyou' })}:</p>
<Input
placeholder="请输入推荐理由"
placeholder={intl.formatMessage({ id: 'table.purchase.qingshurutuijian' })}
onChange={(e) => onChangeInput(e, index)}
onBlur={(e) => onBlurInput(e, index)}
/>
......
......@@ -57,7 +57,7 @@ export const RemarkTableCell:React.FC<TableCellProps> = ({
values.totalScore = Number(score).toFixed(2)
handleSave({ ...record, ...values })
} catch (errInfo) {
console.log('Save failed:', errInfo)
console.log('Save failed', errInfo)
handleSave({ ...record, ...errInfo.values })
}
};
......@@ -89,11 +89,11 @@ export const RemarkTableCell:React.FC<TableCellProps> = ({
rules={[
{
required: true,
message: '此项必须填写',
message: intl.formatMessage({ id: 'table.purchase.cixiangbixutian' }),
},
{
pattern: /^\d+(\.\d{1,2})?$/,
message: '小数点后面仅限两位小数',
message: intl.formatMessage({ id: 'table.purchase.xiaoshudianhoumian' }),
},
]}
>
......
......@@ -41,15 +41,15 @@ export const evaluationColumnList = [
{
span: 8,
fieldList: [
{ title: '评标要求时间:', name: 'createTime', render: (t, r) => formatTimeString(r['evaluationStartTime']) + '至' + formatTimeString(r['evaluationEndTime'])},
{ title: '评标要求:', name: 'evaluationRequirement' },
{ title:intl.formatMessage({ id: 'table.purchase.pingbiaoyaoqiushi' }), name: 'createTime', render: (t, r) => formatTimeString(r['evaluationStartTime']) + '至' + formatTimeString(r['evaluationEndTime'])},
{ title: intl.formatMessage({ id: 'table.purchase.pingbiaoyaoqiu' }), name: 'evaluationRequirement' },
]
},
{
span: 8,
fieldList: [
{
title: '评标要求附件:',
title: intl.formatMessage({ id: 'table.purchase.pingbiaoyaoqiufu' }),
name: 'evaluationFile',
render: (t, r) => (<div>
{
......@@ -62,8 +62,8 @@ export const evaluationColumnList = [
{
span: 8,
fieldList: [
{ title: '是否在线评标:', name: 'isOnlineEvaluation', render: (text) => text ? intl.formatMessage({ id: 'table.purchase.shi' }) : intl.formatMessage({ id: 'table.purchase.fou' }) },
{ title: '评标项模板:', name: 'templateName' },
{ title: intl.formatMessage({ id: 'table.purchase.shifouzaixianping' }), name: 'isOnlineEvaluation', render: (text) => text ? intl.formatMessage({ id: 'table.purchase.shi' }) : intl.formatMessage({ id: 'table.purchase.fou' }) },
{ title: intl.formatMessage({ id: 'table.purchase.pingbiaoxiangmuban' }), name: 'templateName' },
]
},
]
......@@ -172,10 +172,10 @@ export const insideRecordCols: any[] = [
export const generateRemarkTable = (memeberList, contentList) => {
// 初始列
const columns: any[] = [
{ title: '会员ID', dataIndex: 'memberId', key: 'memberId', className: 'commonHide' },
{ title: '评标会员', dataIndex: 'memberName', key: 'memberName' },
{ title: '总计得分', dataIndex: 'totalScore', key: 'totalScore' },
{ title: '评标分类', dataIndex: 'sort', key: 'sort', className: 'commonHide' },
{ title: intl.formatMessage({ id: 'detail.purchase.memberId' }), dataIndex: 'memberId', key: 'memberId', className: 'commonHide' },
{ title: intl.formatMessage({ id: 'table.purchase.pingbiaohuiyuan' }), dataIndex: 'memberName', key: 'memberName' },
{ title: intl.formatMessage({ id: 'table.purchase.zongjidefen' }), dataIndex: 'totalScore', key: 'totalScore' },
{ title: intl.formatMessage({ id: 'table.purchase.pingbiaofenlei' }), dataIndex: 'sort', key: 'sort', className: 'commonHide' },
]
// 新增字段以 字符term+细则id组合而成
......
......@@ -67,7 +67,7 @@ const ReadyExpertRemarkDetail: React.FC = () => {
let content = templateContentList.filter(_ => _.id === Number(contentId))[0]
// 判断分值是否有null或者""
if(item[_item] === null || item[_item] === "") {
throw "请正确填写评标分值"
throw intl.formatMessage({ id: 'table.purchase.qingzhengquetianxie' })
}
evaluationList.push({
inviteTenderMemberId: item.memberId,
......@@ -104,7 +104,7 @@ const ReadyExpertRemarkDetail: React.FC = () => {
anchorList={anchorTitleList}
extraRight={
<Button type='primary' onClick={()=>addSchemaAction.submit()} icon={<SendOutlined rotate={-45} />}>
提交评标
{intl.formatMessage({ id: 'table.purchase.tijiaopingbiao' })}
</Button>
}
/>
......@@ -157,7 +157,7 @@ const ReadyExpertRemarkDetail: React.FC = () => {
</div>
{/* 在线评标 */}
<div id="remarkBidReport">
<OnlineRemark cardTitle="在线评标" addSchemaAction={addSchemaAction} onConfirm={onConfirm} />
<OnlineRemark cardTitle={intl.formatMessage({ id: 'table.purchase.zaixianpingbiao' })} addSchemaAction={addSchemaAction} onConfirm={onConfirm} />
</div>
{/* 在线评标 */}
<div id="transferRecord">
......
......@@ -30,13 +30,13 @@ const baseBidListColumns: any[] = [
</>
},
{
title: '专家号码',
title: intl.formatMessage({ id: 'table.purchase.expertNumber' }),
align: 'left',
dataIndex: 'id',
key: 'id',
},
{
title: '评标开始/结束时间',
title: intl.formatMessage({ id: 'table.purchase.evaluationStartTime' }),
align: 'left',
dataIndex: ['inviteTender', 'evaluationStartTime'],
key: ['inviteTender', 'evaluationEndTime'],
......@@ -76,7 +76,7 @@ export const useSelfTable = () => {
align: 'left',
dataIndex: 'ctl',
key: 'ctl',
render: (text, record) => new Date().getTime() < record.inviteTender.evaluationEndTime && <Button type='link' onClick={() => handleSubmit(record)}>评标</Button>
render: (text, record) => new Date().getTime() < record.inviteTender.evaluationEndTime && <Button type='link' onClick={() => handleSubmit(record)}>{intl.formatMessage({ id: 'table.purchase.pingbiao' })}</Button>
}
])
......
......@@ -37,7 +37,7 @@ export const tableListSchema: ISchema = {
type: 'array',
"x-component": 'DateRangePickerUnix',
'x-component-props': {
placeholder: ['评标开始时间','评标结束时间'],
placeholder: [intl.formatMessage({ id: 'table.purchase.pingbiaokaishishi' }),intl.formatMessage({ id: 'table.purchase.pingbiaojieshushi' })],
},
},
submit: {
......
......@@ -29,7 +29,7 @@ export const TotalAmount:React.FC<TotalAmountProps> = ({
<Row>
<Col span={8}><p className={style['card-list_title']}>{intl.formatMessage({ id: 'detail.purchase.label34' })}:</p></Col>
<Col>
<p>¥{ (datas.reduce((a, b) => a + b[item.dataIndex]['price'] * b.count, 0)).toFixed(2) }(含税)</p>
<p>¥{ (datas.reduce((a, b) => a + b[item.dataIndex]['price'] * b.count, 0)).toFixed(2) }({intl.formatMessage({ id: 'detail.purchase.isTax' })})</p>
</Col>
</Row>
</div>
......@@ -57,7 +57,7 @@ export const TotalAmount:React.FC<TotalAmountProps> = ({
<div className={style['card-list']}>
<Row>
<Col span={8}><p className={style['card-list_title']}>{intl.formatMessage({ id: 'table.purchase.shoubiaozonge' })}:</p></Col>
<Col><p>¥{(datas.reduce((a, b) => a + (b[item.dataIndex]['isAwardTender'] ? (b[item.dataIndex]['price'] * b.count * b[item.dataIndex]['awardTenderRatio'] / 100) : 0), 0)).toFixed(2)}(含税)</p></Col>
<Col><p>¥{(datas.reduce((a, b) => a + (b[item.dataIndex]['isAwardTender'] ? (b[item.dataIndex]['price'] * b.count * b[item.dataIndex]['awardTenderRatio'] / 100) : 0), 0)).toFixed(2)}({intl.formatMessage({ id: 'detail.purchase.isTax' })})</p></Col>
</Row>
</div>
</Col>) : null)
......
......@@ -237,7 +237,7 @@ const BidConfirm: React.FC<BidConfirmProps> = ({cardTitle}) => {
<Row>
<Col span={8}><p className={style['card-list_title']}>{intl.formatMessage({ id: 'detail.purchase.label34' })}:</p></Col>
<Col>
<p>¥{ (tableDataSource.reduce((a, b) => a + b[item.dataIndex]['price'] * b.count, 0)).toFixed(2) }(含税)</p>
<p>¥{ (tableDataSource.reduce((a, b) => a + b[item.dataIndex]['price'] * b.count, 0)).toFixed(2) }({intl.formatMessage({ id: 'detail.purchase.isTax' })})</p>
</Col>
</Row>
</div>
......@@ -271,7 +271,7 @@ const BidConfirm: React.FC<BidConfirmProps> = ({cardTitle}) => {
<div className={style['card-list']}>
<Row>
<Col span={8}><p className={style['card-list_title']}>{intl.formatMessage({ id: 'table.purchase.shoubiaozonge' })}:</p></Col>
<Col><p>¥{(tableDataSource.reduce((a, b) => a + (b[item.dataIndex]['isAwardTender'] ? (b[item.dataIndex]['price'] * b.count * b[item.dataIndex]['awardTenderRatio'] / 100) : 0), 0)).toFixed(2)}(含税)</p></Col>
<Col><p>¥{(tableDataSource.reduce((a, b) => a + (b[item.dataIndex]['isAwardTender'] ? (b[item.dataIndex]['price'] * b.count * b[item.dataIndex]['awardTenderRatio'] / 100) : 0), 0)).toFixed(2)}({intl.formatMessage({ id: 'detail.purchase.isTax' })})</p></Col>
</Row>
</div>
</div>
......
......@@ -49,7 +49,7 @@ const ParticipateInfo: React.FC<ParticipateInfoProps> = ({cardTitle}) => {
<div className={style.participateContent}>
<div className={style.topWrapper}>
<h3>{item.company}</h3>
<p className={style.amount}>{item.amount.toFixed(2)}<span>{item.isTax ? ' (含税)' : ' (不含税)'}</span></p>
<p className={style.amount}>{item.amount.toFixed(2)}<span>{item.isTax ? intl.formatMessage({ id: 'detail.purchase.isTax' }) : intl.formatMessage({ id: 'table.purchase.buhanshui' })}</span></p>
</div>
<div className={style.contentWrapper}>
<Row className={style['card-list']}>
......
......@@ -40,7 +40,7 @@ const ReadyPassBidDetail: React.FC = () => {
// })
// })
// if(!validate) {
// return message.error('请授标')
// return message.error(intl.formatMessage({ id: 'table.purchase.qingshoubiao' }))
// }
setLoading(true)
......@@ -89,7 +89,7 @@ const ReadyPassBidDetail: React.FC = () => {
anchorList={anchorTitleList}
extraRight={
<Button type='primary' onClick={onSubmit} icon={<SendOutlined rotate={-45} />} loading={loading}>
确认定标
{intl.formatMessage({ id: 'table.purchase.querendingbiao' })}
</Button>
}
/>
......
......@@ -24,7 +24,7 @@ export const useSelfTable = () => {
align: 'left',
dataIndex: 'ctl',
key: 'ctl',
render: (text, record) => <Button type='link' onClick={() => handleSubmit(record)}>确认定标</Button>
render: (text, record) => <Button type='link' onClick={() => handleSubmit(record)}>{intl.formatMessage({ id: 'table.purchase.querendingbiao' })}</Button>
}
])
......
......@@ -37,7 +37,7 @@ export const tableListSchema: ISchema = {
type: 'array',
"x-component": 'DateRangePickerUnix',
'x-component-props': {
placeholder: ['评标开始时间','评标结束时间'],
placeholder: [intl.formatMessage({ id: 'table.purchase.pingbiaokaishishi' }),intl.formatMessage({ id: 'table.purchase.pingbiaojieshushi' })],
},
},
submit: {
......
......@@ -66,7 +66,7 @@ const ReadyQualifityCheckedDetail: React.FC = () => {
{ title: intl.formatMessage({ id: 'table.purchase.liuzhuanjindu' }), id: 'transferProcess' },
{ title: intl.formatMessage({ id: 'table.purchase.jibenxinxi' }), id: 'baseicInfo' },
{ title: intl.formatMessage({ id: 'table.purchase.zigeyushenyao' }), id: 'checkNeed' },
{ title: '资格证明文件', id: 'qualifityNeed' },
{ title: intl.formatMessage({ id: 'table.purchase.zigezhengmingwen' }), id: 'qualifityNeed' },
{ title: intl.formatMessage({ id: 'table.purchase.liuzhuanjilu' }), id: 'transferRecord' },
]
......@@ -139,7 +139,7 @@ const ReadyQualifityCheckedDetail: React.FC = () => {
<PreLoading loading={!formContext.data} active paragraph={{rows: 6}}>
<div id="transferProcess">
<TransferProcess
cardTitle="流转进度"
cardTitle={intl.formatMessage({ id: 'detail.purchase.progressLayout' })}
customTitleKey='name'
customKey='id'
outerVerifyCurrent={findLastIndexFlowState(formContext?.externalWorkflowFlowRecordLogResponses || [])}
......@@ -166,18 +166,18 @@ const ReadyQualifityCheckedDetail: React.FC = () => {
<DescriptionsInfo cardTitle={intl.formatMessage({ id: 'table.purchase.jibenxinxi' })} type="basicInfo" />
</div>
<div id="checkNeed">
<DescriptionsInfo cardTitle="资格预审要求" type="checkNeed" />
<DescriptionsInfo cardTitle={intl.formatMessage({ id: 'table.purchase.zigeyushenyao' })} type="checkNeed" />
</div>
<div id="qualifityNeed">
<MellowCard
title="资格证明文件"
title={intl.formatMessage({ id: 'table.purchase.zigezhengmingwen' })}
style={{marginTop: 24}}
bordered={false}
fullHeight
>
<div className={style['card-list']}>
<Row>
<Col span={2}><p className={style['card-list_title']}>资格证明文件:</p></Col>
<Col span={2}><p className={style['card-list_title']}>{intl.formatMessage({ id: 'table.purchase.zigezhengmingwen' })}:</p></Col>
<Col>
{
data && data.qualificationsFile.map(item => (<div key={item.id}>
......@@ -190,7 +190,7 @@ const ReadyQualifityCheckedDetail: React.FC = () => {
</MellowCard>
</div>
<div id="transferRecord">
<BidTransformRecord cardTitle="流转记录" />
<BidTransformRecord cardTitle={intl.formatMessage({ id: 'table.purchase.liuzhuanjilu' })}/>
</div>
</PreLoading>
</OrderDetailWrapper>
......
......@@ -45,7 +45,7 @@ export const useSelfTable = () => {
render: (t, r) => CALLFORBID_TYPE[r.inviteTender.inviteTenderType]
},
{
title: '资格预审会员/提交时间',
title: intl.formatMessage({ id: 'table.purchase.submitQualificationsCheckTime' }),
align: 'left',
dataIndex: 'inviteTender',
key: 'inviteTender',
......@@ -56,7 +56,7 @@ export const useSelfTable = () => {
width: 180
},
{
title: '资格预审开始/截止时间',
title: intl.formatMessage({ id: 'table.purchase.zigeyushenkai' }),
align: 'left',
dataIndex: 'createTime',
key: 'createTime',
......@@ -78,7 +78,7 @@ export const useSelfTable = () => {
align: 'left',
dataIndex: 'submitTenderInStatusValue',
key: 'submitTenderInStatusValue',
render: (text, r) => <CustomBadge text={'待审核资格预审'} color={r.submitTenderInStatusColor} />
render: (text, r) => <CustomBadge text={intl.formatMessage({ id: 'table.purchase.daishenhezige' })} color={r.submitTenderInStatusColor} />
},
]
......@@ -89,7 +89,7 @@ export const useSelfTable = () => {
dataIndex: 'ctl',
key: 'ctl',
render: (text, record) => <>
<Button type='link' onClick={() => handleSubmit(record)}>资格预审</Button>
<Button type='link' onClick={() => handleSubmit(record)}>{intl.formatMessage({ id: 'table.purchase.zigeyushen' })}</Button>
</>
}
])
......
......@@ -8,21 +8,21 @@ const intl = getIntl();
export const anchorTitleList = [
{ title: intl.formatMessage({ id: 'table.purchase.liuzhuanjindu' }), id: 'transferProcess', componentName: 'TransferProcess' },
{ title: intl.formatMessage({ id: 'table.purchase.jibenxinxi' }), id: 'baseicInfo', type: 'basicInfo' },
{ title: '会员中标信息', id: 'memberWinInfo', componentName: 'MemberWinInfo' },
{ title: intl.formatMessage({ id: 'table.purchase.huiyuanzhongbiaoxin' }), id: 'memberWinInfo', componentName: 'MemberWinInfo' },
{ title: intl.formatMessage({ id: 'table.purchase.liuzhuanjilu' }), id: 'transferRecord', componentName: "BidTransformRecord" },
]
export const dataIdList = [
{
title: '中标公示',
title: intl.formatMessage({ id: 'detail.purchase.awardResults' }),
idName: 'bidNotice',
},
{
title: '中标通知',
title: intl.formatMessage({ id: 'detail.purchase.bidLayout1' }),
idName: 'bidMessage',
},
{
title: '感谢函',
title: intl.formatMessage({ id: 'detail.purchase.thanks' }),
idName: 'thankLetter',
}
]
......@@ -41,8 +41,8 @@ export const basicColumnList = [
span: 8,
fieldList: [
{ title: intl.formatMessage({ id: 'table.purchase.projectName' }), name: 'projectName' },
{ title: intl.formatMessage({ id: 'table.purchase.zhaobiaohuiyuan'}), name: 'memberName' },
{ title: intl.formatMessage({ id: 'table.purchase.zhaobiaozhaiyao'}), name: 'remark' },
{ title: intl.formatMessage({ id: 'table.purchase.zhaobiaohuiyuan' }), name: 'memberName' },
{ title: intl.formatMessage({ id: 'table.purchase.zhaobiaozhaiyao' }), name: 'remark' },
]
},
{
......@@ -50,13 +50,13 @@ export const basicColumnList = [
fieldList: [
{ title: intl.formatMessage({ id: 'table.purchase.bidCreateTime' }), name: 'createTime', render: (text) => formatTimeString(text) },
{
title: intl.formatMessage({ id: 'table.purchase.shiyongdizhi'}),
title: intl.formatMessage({ id: 'table.purchase.shiyongdizhi' }),
name: 'inviteTenderAreaList',
render: (t, r) => <p>
{
t.map((_item, _i) => <p key={`address${_i}`}>{_item.provinceName+'/'+(_item.cityName||'')}</p>)
}
</p>
{
t.map((_item, _i) => <p key={`address${_i}`}>{_item.provinceName + '/' + (_item.cityName || '')}</p>)
}
</p>
},
]
},
......@@ -167,7 +167,7 @@ export const noticeSchema: ISchema = {
type: "object",
"x-component": "CustomTitle",
"x-component-props": {
text: "中标公示"
text: intl.formatMessage({ id: 'detail.purchase.awardResults' })
},
properties: {
NO_SUBMIT_LAYOUT_1: {
......@@ -177,11 +177,11 @@ export const noticeSchema: ISchema = {
labelAlign: "top",
full: true
},
properties:{
properties: {
winTenderAnnounce: {
type: 'string',
"x-component-props": {
children: "发送中标公示"
children: intl.formatMessage({ id: 'table.purchase.fasongzhongbiaogong' })
},
"x-component": "checkboxsingle",
default: true,
......@@ -192,12 +192,12 @@ export const noticeSchema: ISchema = {
title: '',
required: true,
'x-component-props': {
placeholder: '请填写中标公示',
placeholder: intl.formatMessage({ id: 'table.purchase.qingtianxiezhongbiao' }),
rows: 4
}
},
winTenderAnnounceFile: {
title: '中标公示附件',
title: intl.formatMessage({ id: 'table.purchase.zhongbiaogongshifu' }),
'x-component': 'FixUpload',
'x-component-props': {
action: '/api/file/file/upload/prefix',
......@@ -211,10 +211,10 @@ export const noticeSchema: ISchema = {
'x-rules': [
{
required: false,
message: '请上传附件',
message: intl.formatMessage({ id: 'detail.purchase.message57' }),
},
],
// description: '一次上传一个文件,每个附件大小不能超过20M',
// description: intl.formatMessage({ id: 'table.purchase.yicishangchuanyi' }),
},
}
}
......@@ -224,13 +224,13 @@ export const noticeSchema: ISchema = {
type: "object",
"x-component": "CustomTitle",
"x-component-props": {
text: "中标通知"
text: intl.formatMessage({ id: 'detail.purchase.bidLayout1' })
},
properties: {
winTenderNotice: {
type: 'string',
"x-component-props": {
children: "发送中标通知"
children: intl.formatMessage({ id: 'table.purchase.fasongzhongbiaotong' })
},
"x-component": "checkboxsingle",
default: true,
......@@ -239,12 +239,12 @@ export const noticeSchema: ISchema = {
type: 'textarea',
title: '',
'x-component-props': {
placeholder: '请填写中标通知',
placeholder: intl.formatMessage({ id: 'table.purchase.qingtianxiezhongbiao1' }),
rows: 4
}
},
winTenderNoticeFile: {
title: '中标通知附件',
title: intl.formatMessage({ id: 'table.purchase.zhongbiaotongzhifu' }),
'x-component': 'FixUpload',
'x-component-props': {
action: '/api/file/file/upload/prefix',
......@@ -258,10 +258,10 @@ export const noticeSchema: ISchema = {
'x-rules': [
{
required: false,
message: '请上传附件',
message: intl.formatMessage({ id: 'detail.purchase.message57' }),
},
],
// description: '一次上传一个文件,每个附件大小不能超过20M',
// description: intl.formatMessage({ id: 'table.purchase.yicishangchuanyi' }),
},
}
},
......@@ -269,13 +269,13 @@ export const noticeSchema: ISchema = {
type: "object",
"x-component": "CustomTitle",
"x-component-props": {
text: "感谢函"
text: intl.formatMessage({ id: 'detail.purchase.thanks' })
},
properties: {
winTenderThanks: {
type: 'string',
"x-component-props": {
children: "发送感谢函"
children: intl.formatMessage({ id: 'table.purchase.fasongganxiehan' })
},
"x-component": "checkboxsingle",
default: true,
......@@ -284,7 +284,7 @@ export const noticeSchema: ISchema = {
type: 'textarea',
title: '',
'x-component-props': {
placeholder: '请填写感谢函',
placeholder: intl.formatMessage({ id: 'table.purchase.qingtianxieganxie' }),
rows: 4
}
},
......
......@@ -22,7 +22,7 @@ const intl = getIntl();
const formActions = createFormActions();
const ReadySendBidNoticeDetail: React.FC = () => {
const { formContext, id } = useNoticeDetail({type: 'callForBid'})
const { formContext, id } = useNoticeDetail({ type: 'callForBid' })
const { data, externalProcurementOrderLogResponses, interiorProcurementOrderLogResponses } = formContext
const {
action, // 1操作 null查看
......@@ -35,7 +35,7 @@ const ReadySendBidNoticeDetail: React.FC = () => {
const RenderBasicInfoColumns = ({ infoList = [], dataSource }) => <Row>
{
infoList.map(({span, fieldList = []}, index) => (<Col key={index} span={span}>
infoList.map(({ span, fieldList = [] }, index) => (<Col key={index} span={span}>
{
fieldList.length ? fieldList.map((_v, _i) => <Row key={_v.name} className={style['card-list']} style={_v.rowStyle}>
{_v?.noTitle ? null : <Col span={6} className={style['card-list_title']}>{_v.title}</Col>}
......@@ -54,10 +54,10 @@ const ReadySendBidNoticeDetail: React.FC = () => {
// setVisible(false)
setLoading(true)
formActions.validate().then((res) => {
if(res['errors']['length'] === 0) {
if (res['errors']['length'] === 0) {
formActions.submit(async v => {
const { code } = await postPurchaseInviteTenderWinTenderNotice({id, ...v})
if(code === 1000) {
const { code } = await postPurchaseInviteTenderWinTenderNotice({ id, ...v })
if (code === 1000) {
history.goBack()
}
setLoading(false)
......@@ -68,7 +68,7 @@ const ReadySendBidNoticeDetail: React.FC = () => {
const beforeUpload = file => {
if (file.size / 1024 / 1024 > 20) {
message.warning('附件大小超过20M')
message.warning(intl.formatMessage({ id: 'table.purchase.yicishangchuanyi' }))
return Promise.reject()
}
}
......@@ -78,11 +78,11 @@ const ReadySendBidNoticeDetail: React.FC = () => {
textAlign: 'right',
}}
>
<Button onClick={()=>setVisible(false)} style={{ marginRight: 8 }}>
取消
<Button onClick={() => setVisible(false)} style={{ marginRight: 8 }}>
{intl.formatMessage({ id: 'table.purchase.quxiao' })}
</Button>
<Button onClick={confirmSubmit} type="primary" loading={loading}>
确定
{intl.formatMessage({ id: 'detail.purchase.confirm' })}
</Button>
</div>)
......@@ -93,19 +93,19 @@ const ReadySendBidNoticeDetail: React.FC = () => {
<BidDetailHeader
formContext={formContext}
anchorList={anchorTitleList}
extraRight={ action && [
<Button type='primary' onClick={() => setVisible(true)} icon={<SendOutlined rotate={-45} />}>
发送中标公示
</Button>
]
extraRight={action && [
<Button type='primary' onClick={() => setVisible(true)} icon={<SendOutlined rotate={-45} />}>
{intl.formatMessage({ id: 'table.purchase.fasongzhongbiaogong' })}
</Button>
]
}
/>
<OrderDetailWrapper>
<PreLoading loading={!formContext.data} active paragraph={{rows: 6}}>
<PreLoading loading={!formContext.data} active paragraph={{ rows: 6 }}>
<div id="transferProcess">
<TransferProcess
cardTitle={intl.formatMessage({ id: 'table.purchase.liuzhuanjindu' })
} customTitleKey='name'
} customTitleKey='name'
customKey='id'
outerVerifyCurrent={findLastIndexFlowState(formContext.externalWorkflowFlowRecordLogResponses)}
innerVerifyCurrent={findLastIndexFlowState(formContext.interiorWorkflowFlowRecordLogResponses)}
......@@ -130,7 +130,7 @@ const ReadySendBidNoticeDetail: React.FC = () => {
<div id="baseicInfo">
<MellowCard
title={intl.formatMessage({ id: 'table.purchase.jibenxinxi' })}
style={{marginTop: 24}}
style={{ marginTop: 24 }}
bordered={false}
fullHeight
>
......@@ -139,24 +139,24 @@ const ReadySendBidNoticeDetail: React.FC = () => {
</div>
<div id="memberWinInfo">
<MellowCard
title="中标会员信息"
style={{marginTop: 24}}
title={intl.formatMessage({ id: 'table.purchase.zhongbiaohuiyuanxin' })}
style={{ marginTop: 24 }}
bordered={false}
fullHeight
>
<div className={style.winBidWrapper}>
<div className={style.winBidContainer}>
<h3 className="commonPanelTitle">中标会员</h3>
<h3 className="commonPanelTitle">{intl.formatMessage({ id: 'table.purchase.zhongbiaohuiyuan' })}</h3>
<Row gutter={[16, 0]}>
{
data?.memberList?.length ? data.memberList.map((item, index) => <Col span={6} key={item.memberId}>
<div className={style['card-list']}>
<h4>{item.memberName}</h4>
<Row>
<Col span={8}><p className={style['card-list_title']}>中标总金额(含税):</p></Col>
<Col span={8}><p className={style['card-list_title']}>{intl.formatMessage({ id: 'detail.purchase.message25' })}:</p></Col>
<Col><p className={style.amount}>¥{(item.amount).toFixed(2)}</p></Col>
</Row>
<img src={winBid} alt="已中标"/>
<img src={winBid} alt={intl.formatMessage({ id: 'table.purchase.yizhongbiao' })} />
</div>
</Col>) : null
}
......@@ -190,7 +190,7 @@ const ReadySendBidNoticeDetail: React.FC = () => {
<div id="transferRecord">
<MellowCard
title={intl.formatMessage({ id: 'table.purchase.liuzhuanjilu' })}
style={{marginTop: 24}}
style={{ marginTop: 24 }}
bordered={false}
extra={
<Radio.Group value={transferRadio} buttonStyle="solid" size="small" onChange={handleChangeType}>
......@@ -224,38 +224,38 @@ const ReadySendBidNoticeDetail: React.FC = () => {
</OrderDetailWrapper>
<AnchorDrawer
title="发送中标公示"
title={intl.formatMessage({ id: 'table.purchase.fasongzhongbiaogong' })}
visible={visible}
dataIdList={dataIdList}
footer={footer}
onClose={() => setVisible(false)}
isForm = {true}
isForm={true}
actions={formActions}
schema={noticeSchema}
expressionScope={{
beforeUpload
}}
effects={($, ctx) => {
const applyBuines = data.memberList.map(item => `${item.memberName}(中标总金额¥${item.amount})`)
const text = `${data.memberName}《${data.projectName}》评标工作已经结束,中标人已经确定。现将中标结果公布如下
中标供应商:${applyBuines.toString()}。
const applyBuines = data.memberList.map(item => `${item.memberName}(${intl.formatMessage({ id: 'table.purchase.zhongbiaozongjine' })}¥${item.amount})`)
const text = `${data.memberName}《${data.projectName}》${intl.formatMessage({ id: 'table.purchase.pingbiaogongzuoyi' })}
${intl.formatMessage({ id: 'table.purchase.zhongbiaogongyingshang' })}:${applyBuines.toString()}。
{intl.formatMessage({ id: 'detail.purchase.label1' })}:${data.winTenderReason}。`
$('onFieldInit', 'winTenderAnnounceContent').subscribe(() => {
ctx.setFieldValue('winTenderAnnounceContent', text)
})
$('onFieldInit', 'winTenderAnnounceContent').subscribe(() => {
ctx.setFieldValue('winTenderAnnounceContent', text)
})
ctx.setFieldValue('winTenderAnnounceContent', text)
$('onFieldInit', 'winTenderNoticeContent').subscribe(() => {
ctx.setFieldValue('winTenderNoticeContent', text)
})
$('onFieldInit', 'winTenderNoticeContent').subscribe(() => {
ctx.setFieldValue('winTenderNoticeContent', text)
})
ctx.setFieldValue('winTenderNoticeContent', text)
const thinkText = `贵公司参与了我公司《${data.projectName}》竞标。在我公司综合各投标单位的基本情况,并进行充分技术交流后,经评标委员会综合评定,贵公司未能中标。我公司对贵公司的积极参与和支持深表感谢!希望下次合作成功。`
$('onFieldInit', 'winTenderThanksContent').subscribe(() => {
ctx.setFieldValue('winTenderThanksContent', thinkText)
})
const thinkText = `${intl.formatMessage({ id: 'table.purchase.guigongsicanyu' })}《${data.projectName}》${intl.formatMessage({ id: 'table.purchase.jingbiaoaiwo' })}`
$('onFieldInit', 'winTenderThanksContent').subscribe(() => {
ctx.setFieldValue('winTenderThanksContent', thinkText)
})
ctx.setFieldValue('winTenderThanksContent', thinkText)
}}
/>
</ReadySendBidNoticeContext.Provider>
......
......@@ -64,7 +64,7 @@ export const useSelfTable = () => {
align: 'left',
dataIndex: 'ctl',
key: 'ctl',
render: (text, record) => <Button type='link' onClick={() => handleSubmit(record)}>发送中标公示</Button>
render: (text, record) => <Button type='link' onClick={() => handleSubmit(record)}>{intl.formatMessage({ id: 'table.purchase.fasongzhongbiaogong' })}</Button>
}
])
......
......@@ -37,7 +37,7 @@ export const tableListSchema: ISchema = {
// type: 'array',
// "x-component": 'DateRangePickerUnix',
// 'x-component-props': {
// placeholder: ['评标开始时间','评标结束时间'],
// placeholder: [intl.formatMessage({ id: 'table.purchase.pingbiaokaishishi' }),intl.formatMessage({ id: 'table.purchase.pingbiaojieshushi' })],
// },
// },
submit: {
......
......@@ -37,7 +37,7 @@ const ReadySubmitBid:React.FC<ReadySubmitBidProps> = (props) => {
const handleSubmitBatch = async () => {
if (rowSelectionCtl.selectRow.length === 0) {
message.error('请先选择招标')
message.error(intl.formatMessage({ id: 'table.purchase.qingxianxuanzezhao' }))
return ;
}
// const canBitch = !rowSelectionCtl.selectRow.some(v => v.inviteTenderInStatus !== BidInsideWorkState.Tender_Check_Pass)
......
......@@ -19,7 +19,7 @@ export const useSelfTable = () => {
align: 'left',
dataIndex: 'ctl',
key: 'ctl',
render: (text, record) => <Button type='link' onClick={() => handleSubmit(record)}>提交</Button>
render: (text, record) => <Button type='link' onClick={() => handleSubmit(record)}>{intl.formatMessage({ id: 'table.purchase.submit' })}</Button>
}
])
......
......@@ -295,17 +295,17 @@ const RemarkBidReport: React.FC<RemarkBidReportProps> = ({editable}) => {
name: item.response.data.name.split('/').pop()
})))
} else if (info.file.status === 'error') {
message.error(`${info.file.name} 上传失败`);
message.error(`${info.file.name} ${intl.formatMessage({ id: 'table.purchase.shangchuanshibai' })}`);
}
},
beforeUpload(file) {
if(file.name.length > 100) {
message.warning('文件名过长');
return Promise.reject('文件名过长');
message.warning(intl.formatMessage({ id: 'table.purchase.wenjianmingguochang' }));
return Promise.reject(intl.formatMessage({ id: 'table.purchase.wenjianmingguochang' }));
}
if (file.size / 1024 / 1024 > 20) {
message.warning('附件大小超过20M');
return Promise.reject('附件大小超过20M');
message.warning(intl.formatMessage({ id: 'table.purchase.yicishangchuanyi' }));
return Promise.reject(intl.formatMessage({ id: 'table.purchase.yicishangchuanyi' }));
}
},
}
......@@ -383,7 +383,7 @@ const RemarkBidReport: React.FC<RemarkBidReportProps> = ({editable}) => {
return (<>
<div id="extractExpertList">
<MellowCard
title='专家抽取列表'
title={intl.formatMessage({ id: 'table.purchase.zhuanjiachouqulie' })}
style={{marginTop: 24}}
bordered={false}
fullHeight
......@@ -393,10 +393,10 @@ const RemarkBidReport: React.FC<RemarkBidReportProps> = ({editable}) => {
data?.expertExtractList.length ? data.expertExtractList.map(item => (<Col span={4} key={item.id}>
<div className={style.committeeItem}>
<div className={style.avater}>
<img src={imgLink} alt="专家头像"/>
<p>{item.source === 1 ? '系统抽取' : '人工抽取'}</p>
<img src={imgLink} alt={intl.formatMessage({ id: 'table.purchase.zhuanjiatouxiang' })}/>
<p>{item.source === 1 ? intl.formatMessage({ id: 'table.purchase.xitongchouqu' }) : intl.formatMessage({ id: 'table.purchase.rengongchouqu' })}</p>
</div>
<p><span className={style['card-list_title']}>评委专家编号</span>{item.id}</p>
<p><span className={style['card-list_title']}>{intl.formatMessage({ id: 'table.purchase.pingweizhuanjiabian' })}</span>{item.id}</p>
{
item.status === 2 ? <span className={cx(style.status, style.statusInfo)}>{ExpertRectractStatus[item.status]}</span> : null
}
......@@ -418,7 +418,7 @@ const RemarkBidReport: React.FC<RemarkBidReportProps> = ({editable}) => {
</div>
<div id="remarkBidRecord" className={style.remarkRecordContainer}>
<MellowCard
title='评标记录'
title={intl.formatMessage({ id: 'table.purchase.pingbiaojilu' })}
style={{marginTop: 24}}
bordered={false}
fullHeight
......@@ -498,7 +498,7 @@ const RemarkBidReport: React.FC<RemarkBidReportProps> = ({editable}) => {
</div>
<div id='recommandBidMember'>
<MellowCard
title='推荐中标会员'
title={intl.formatMessage({ id: 'table.purchase.tuijianzhongbiaohui' })}
style={{marginTop: 24}}
bordered={false}
fullHeight
......@@ -531,15 +531,15 @@ const RemarkBidReport: React.FC<RemarkBidReportProps> = ({editable}) => {
<div className={style['card-list-dash']} onClick={handleAddMember}>
<Row>
<Col span={8}><p className={style['card-list_title']}></p></Col>
<Col><p style={{opacity: 0}}>新增推荐中标</p></Col>
<Col><p style={{opacity: 0}}>{intl.formatMessage({ id: 'table.purchase.xinzengtuijianzhong' })}</p></Col>
</Row>
<Row>
<Col span={8}><p className={style['card-list_title']}></p></Col>
<Col><p><PlusOutlined />&nbsp;新增推荐中标</p></Col>
<Col><p><PlusOutlined />&nbsp;{intl.formatMessage({ id: 'table.purchase.xinzengtuijianzhong' })}</p></Col>
</Row>
<Row>
<Col span={8}><p className={style['card-list_title']}></p></Col>
<Col><p style={{opacity: 0}}>新增推荐中标</p></Col>
<Col><p style={{opacity: 0}}>{intl.formatMessage({ id: 'table.purchase.xinzengtuijianzhong' })}</p></Col>
</Row>
</div>
</Col> }
......@@ -548,19 +548,19 @@ const RemarkBidReport: React.FC<RemarkBidReportProps> = ({editable}) => {
</div>
<div id='remarkBidFiles'>
<MellowCard
title='评标附件'
title={intl.formatMessage({ id: 'table.purchase.pingbiaofujian' })}
style={{marginTop: 24}}
bordered={false}
fullHeight
>
<Row>
<Col span={2}><p className={style['card-list_title']}>评标附件:</p></Col>
<Col span={2}><p className={style['card-list_title']}>{intl.formatMessage({ id: 'table.purchase.pingbiaofujian' })}:</p></Col>
<Col>
{
editable && <Upload
{...uploadProps}
>
<Button icon={<UploadOutlined />}>上传附件</Button>
<Button icon={<UploadOutlined />}>{intl.formatMessage({ id: 'table.purchase.shangchuanfujian' })}</Button>
</Upload>
}
</Col>
......@@ -569,7 +569,7 @@ const RemarkBidReport: React.FC<RemarkBidReportProps> = ({editable}) => {
</div>
{/* 新增推荐会员 */}
<ModalForm
modalTitle='新增推荐会员'
modalTitle={intl.formatMessage({ id: 'table.purchase.xinzengtuijianhui' })}
currentRef={currentRef}
confirm={onConfirm}
onSubmit={handleSubmit}
......
......@@ -46,7 +46,7 @@ export const EditableCell: React.FC<EditableCellProps> = ({
const values = await form.validateFields()
handleSave({ ...record, ...values })
} catch (errInfo) {
console.log('Save failed:', errInfo)
console.log('Save failed', errInfo)
}
};
......
......@@ -12,10 +12,10 @@ export const anchorTitleList = [
{ title: intl.formatMessage({ id: 'table.purchase.jibenxinxi' }), id: 'baseicInfo', type: "basicInfo" },
{ title: intl.formatMessage({ id: 'table.purchase.pingbiaoyaoqiu' }), id: 'remarkNeed', type: "remarkNeed" },
// { title: intl.formatMessage({ id: 'table.purchase.pingbiaobaogao' }), id: 'remarkBidReport', componentName: "RemarkBidReport" },
{ title: '专家抽取列表', id: 'extractExpertList', componentName: "ExtractExpertList" },
{ title: '评标记录', id: 'remarkBidRecord', componentName: "RemarkBidRecord" },
{ title: '推荐中标会员', id: 'recommandBidMember', componentName: "RecommandBidMember" },
{ title: '评标附件', id: 'remarkBidFiles', componentName: "RemarkBidFiles" },
{ title: intl.formatMessage({ id: 'table.purchase.zhuanjiachouqulie' }), id: 'extractExpertList', componentName: "ExtractExpertList" },
{ title: intl.formatMessage({ id: 'table.purchase.pingbiaojilu' }), id: 'remarkBidRecord', componentName: "RemarkBidRecord" },
{ title: intl.formatMessage({ id: 'table.purchase.tuijianzhongbiaohui' }), id: 'recommandBidMember', componentName: "RecommandBidMember" },
{ title: intl.formatMessage({ id: 'table.purchase.pingbiaofujian' }), id: 'remarkBidFiles', componentName: "RemarkBidFiles" },
{ title: intl.formatMessage({ id: 'table.purchase.liuzhuanjilu' }), id: 'transferRecord', componentName: "BidTransformRecord" },
]
......@@ -47,15 +47,15 @@ export const evaluationColumnList = [
{
span: 8,
fieldList: [
{ title: '评标要求时间:', name: 'createTime', render: (t, r) => formatTimeString(r['evaluationStartTime']) + '至' + formatTimeString(r['evaluationEndTime'])},
{ title: '评标要求:', name: 'evaluationRequirement' },
{ title:intl.formatMessage({ id: 'table.purchase.pingbiaoyaoqiushi' }), name: 'createTime', render: (t, r) => formatTimeString(r['evaluationStartTime']) + '至' + formatTimeString(r['evaluationEndTime'])},
{ title: intl.formatMessage({ id: 'table.purchase.pingbiaoyaoqiu' }), name: 'evaluationRequirement' },
]
},
{
span: 8,
fieldList: [
{
title: '评标要求附件:',
title: intl.formatMessage({ id: 'table.purchase.pingbiaoyaoqiufu' }),
name: 'evaluationFile',
render: (t, r) => (<div>
{
......@@ -68,8 +68,8 @@ export const evaluationColumnList = [
{
span: 8,
fieldList: [
{ title: '是否在线评标:', name: 'isOnlineEvaluation', render: (text) => text ? intl.formatMessage({ id: 'table.purchase.shi' }) : intl.formatMessage({ id: 'table.purchase.fou' }) },
{ title: '评标项模板:', name: 'templateName' },
{ title: intl.formatMessage({ id: 'table.purchase.shifouzaixianping' }), name: 'isOnlineEvaluation', render: (text) => text ? intl.formatMessage({ id: 'table.purchase.shi' }) : intl.formatMessage({ id: 'table.purchase.fou' }) },
{ title: intl.formatMessage({ id: 'table.purchase.pingbiaoxiangmuban' }), name: 'templateName' },
]
},
]
......@@ -184,31 +184,31 @@ export const addRecommandMemberSchema: ISchema = {
properties: {
memberName: {
type: 'string',
title: '推荐中标会员',
title: intl.formatMessage({ id: 'table.purchase.tuijianzhongbiaohui' }),
required: true,
"x-component-props": {
placeholder: '输入推荐中标会员'
placeholder: intl.formatMessage({ id: 'table.purchase.shurutuijianzhong' })
},
},
userName: {
type: 'string',
title: '推荐人',
title: intl.formatMessage({ id: 'table.purchase.tuijianren' }),
required: true,
"x-component-props": {
placeholder: '输入推荐人'
placeholder: intl.formatMessage({ id: 'table.purchase.shurutuijianren' })
},
},
reason: {
type: 'textarea',
"x-component-props": {
rows: 4,
placeholder: '在此输入你的理由, 最多100个字符'
placeholder: intl.formatMessage({ id: 'table.purchase.zaicishuruni100' })
},
title: intl.formatMessage({ id: 'table.purchase.tuijianzhongbiaoli' }),
"x-rules": [
{
required: true,
message: '请输入理由'
message: intl.formatMessage({ id: 'table.purchase.qingshuruliyou' })
},
{
limitByte: true,
......
......@@ -85,7 +85,7 @@ const readySubmitReportDetail: React.FC = () => {
anchorList={anchorTitleList}
extraRight={
action && <Button type='primary' onClick={handleSubmit} loading={loading} icon={<SendOutlined rotate={-45} />}>
提交报告
{intl.formatMessage({ id: 'table.purchase.tijiaobaogao'})}
</Button>
}
/>
......@@ -137,7 +137,7 @@ const readySubmitReportDetail: React.FC = () => {
</MellowCard>
</div>
{/* 评标报告 */}
<RemarkBidReport cardTitle="在线评标" addSchemaAction={addSchemaAction} editable={!!action} />
<RemarkBidReport cardTitle={intl.formatMessage({ id: 'table.purchase.zaixianpingbiao' })} addSchemaAction={addSchemaAction} editable={!!action} />
{/* 评标报告 */}
<div id="transferRecord">
<MellowCard
......
......@@ -73,7 +73,7 @@ const baseBidListColumns: any[] = [
export const useSelfTable = () => {
const ref = useRef<any>({})
const [rowSelection, rowSelectionCtl] = useRowSelectionTable({customKey: 'id'})
const [rowSelection, rowSelectionCtl] = useRowSelectionTable({ customKey: 'id' })
const handleSubmit = async (record) => {
history.push(`/memberCenter/procurementAbility/callForBids/readySubmitReport/detail?id=${record.id}&action=1`)
......@@ -90,8 +90,8 @@ export const useSelfTable = () => {
dataIndex: 'ctl',
key: 'ctl',
render: (text, record) => <>
<Button type='link' onClick={() => handleSubmit(record)}>提交评估报告</Button>
<Button type="link" onClick={() => handlePreview(record)}>查看</Button>
<Button type='link' onClick={() => handleSubmit(record)}>{intl.formatMessage({ id: 'table.purchase.tijiaopinggubao' })}</Button>
<Button type="link" onClick={() => handlePreview(record)}>{intl.formatMessage({ id: 'table.purchase.zhakan' })}</Button>
</>
}
])
......
......@@ -35,7 +35,7 @@ export const tableListSchema: ISchema = {
type: 'array',
"x-component": 'DateRangePickerUnix',
'x-component-props': {
placeholder: ['评标开始时间','评标结束时间'],
placeholder: [intl.formatMessage({ id: 'table.purchase.pingbiaokaishishi' }),intl.formatMessage({ id: 'table.purchase.pingbiaojieshushi' })],
},
},
submit: {
......
......@@ -51,7 +51,7 @@ export const useSelfTable = () => {
render: (t, r, i) => ++i
},
{
title: '主题名称',
title: intl.formatMessage({ id: 'table.purchase.zhutimingcheng' }),
align: 'left',
dataIndex: 'name',
key: 'name',
......@@ -62,13 +62,13 @@ export const useSelfTable = () => {
</>
},
{
title: '招标编号',
title: intl.formatMessage({ id: 'table.purchase.numbering' }),
align: 'left',
dataIndex: ['inviteTender', 'code'],
key: ['inviteTender', 'code'],
},
{
title: '开标时间',
title: intl.formatMessage({ id: 'table.purchase.kaibiaoshijian' }),
align: 'left',
dataIndex: ['inviteTender', 'openTenderTime'],
key: ['inviteTender', 'openTenderTime'],
......@@ -76,7 +76,7 @@ export const useSelfTable = () => {
width: 200
},
{
title: '评标开始/截止时间',
title: intl.formatMessage({ id: 'table.purchase.pingbiaokaishi/' }),
align: 'left',
dataIndex: ['inviteTender', 'evaluationStartTime'],
key: ['inviteTender', 'evaluationEndTime'],
......@@ -87,13 +87,13 @@ export const useSelfTable = () => {
width: 200
},
{
title: '专家抽取数',
title: intl.formatMessage({ id: 'table.purchase.expertCount' }),
align: 'left',
dataIndex: 'expertCount',
key: 'expertCount',
},
{
title: '专家确认数',
title: intl.formatMessage({ id: 'table.purchase.expertConfirmCount' }),
align: 'left',
dataIndex: 'expertConfirmCount',
key: 'expertConfirmCount',
......@@ -103,7 +103,7 @@ export const useSelfTable = () => {
align: 'left',
dataIndex: 'status',
key: 'status',
render: (t, r) => t ? '已发送' : '待发送'
render: (t, r) => t ? intl.formatMessage({ id: 'table.purchase.yifasong' }) : intl.formatMessage({ id: 'table.purchase.daifasong' })
},
]
......@@ -118,20 +118,20 @@ export const useSelfTable = () => {
!record.status
?
<>
<Button type='link' onClick={() => handelSend(record.id)}>发送通知</Button>
<Button type='link' onClick={() => handelSend(record.id)}>{intl.formatMessage({ id: 'table.purchase.fasongtongzhi' })}</Button>
<Popconfirm
title="确定要执行该操作?"
title={intl.formatMessage({ id: 'table.purchase.quedingyaozhixing' })}
onConfirm={() => handleDelete(record.id)}
okText="是"
cancelText="否"
okText={intl.formatMessage({ id: 'table.purchase.shi' })}
cancelText={intl.formatMessage({ id: 'table.purchase.fou' })}
>
<Button type='link'>删除</Button>
<Button type='link'>{intl.formatMessage({ id: 'table.purchase.shanchu' })}</Button>
</Popconfirm>
</>
:
<Button type='link' onClick={() => handleAgainMessage(record.id)}>再次发送通知</Button>
<Button type='link' onClick={() => handleAgainMessage(record.id)}>{intl.formatMessage({ id: 'table.purchase.zaicifasongtong' })}</Button>
}
<Button type='link' onClick={() => handelEdit(record.id)}>编辑</Button>
<Button type='link' onClick={() => handelEdit(record.id)}>{intl.formatMessage({ id: 'detail.purchase.edit' })}</Button>
</>
}
])
......
......@@ -50,7 +50,7 @@ export const useSelfTable = () => {
width: 200
},
{
title: '开标时间',
title: intl.formatMessage({ id: 'table.purchase.kaibiaoshijian' }),
align: 'left',
dataIndex: 'inviteTender',
key: 'inviteTender',
......
......@@ -29,7 +29,7 @@ export const TotalAmount:React.FC<TotalAmountProps> = ({
<Row>
<Col span={8}><p className={style['card-list_title']}>{intl.formatMessage({ id: 'detail.purchase.label34' })}:</p></Col>
<Col>
<p>¥{ (datas.reduce((a, b) => a + b[item.dataIndex]['price'] * b.count, 0)).toFixed(2) }(含税)</p>
<p>¥{ (datas.reduce((a, b) => a + b[item.dataIndex]['price'] * b.count, 0)).toFixed(2) }({intl.formatMessage({ id: 'detail.purchase.isTax' })})</p>
</Col>
</Row>
</div>
......@@ -57,7 +57,7 @@ export const TotalAmount:React.FC<TotalAmountProps> = ({
<div className={style['card-list']}>
<Row>
<Col span={8}><p className={style['card-list_title']}>{intl.formatMessage({ id: 'table.purchase.shoubiaozonge' })}:</p></Col>
<Col><p>¥{(datas.reduce((a, b) => a + (b[item.dataIndex]['isAwardTender'] ? (b[item.dataIndex]['price'] * b.count * b[item.dataIndex]['awardRate'] / 100) : 0), 0)).toFixed(2)}(含税)</p></Col>
<Col><p>¥{(datas.reduce((a, b) => a + (b[item.dataIndex]['isAwardTender'] ? (b[item.dataIndex]['price'] * b.count * b[item.dataIndex]['awardRate'] / 100) : 0), 0)).toFixed(2)}({intl.formatMessage({ id: 'detail.purchase.isTax' })})</p></Col>
</Row>
</div>
</Col>) : null)
......
......@@ -130,7 +130,7 @@ const BidConfirm: React.FC<BidConfirmProps> = ({cardTitle}) => {
<div className={style['card-list']}>
<h4>{item.memberName}</h4>
<Row>
<Col span={8}><p className={style['card-list_title']}>中标总金额(含税):</p></Col>
<Col span={8}><p className={style['card-list_title']}>中标总金额({intl.formatMessage({ id: 'detail.purchase.isTax' })}):</p></Col>
<Col><p className={style.amount}>¥{
item.submitTender.submitTenderMateriel.reduce((a, b) => a + b.price * b.inviteTenderMateriel.count, 0)
}</p></Col>
......
......@@ -94,7 +94,7 @@ const ParticipateInfo: React.FC<ParticipateInfoProps> = ({cardTitle}) => {
<div className={style.participateContent}>
<div className={style.topWrapper}>
<h3>{item.company}</h3>
<p className={style.amount}>{item.amount}<span>{item.isTax ? ' (含税)' : ' (不含税)'}</span></p>
<p className={style.amount}>{item.amount}<span>{item.isTax ? intl.formatMessage({ id: 'detail.purchase.isTax' }) : intl.formatMessage({ id: 'table.purchase.buhanshui' })}</span></p>
</div>
<div className={style.contentWrapper}>
<Row className={style['card-list']}>
......
......@@ -67,7 +67,7 @@ const AddBidRegister:React.FC<AddBidRegisterProps> = (props) => {
const beforeUpload = file => {
if (file.size / 1024 / 1024 > 20) {
message.warning('附件大小超过20M');
message.warning(intl.formatMessage({ id: 'table.purchase.yicishangchuanyi' }));
return Promise.reject();
}
}
......
......@@ -40,7 +40,7 @@ export const formSchema: ISchema = {
},
inviteTenderCode: {
type: 'string',
title: '招标编号',
title: intl.formatMessage({ id: 'table.purchase.numbering' }),
readOnly: true,
},
remark: {
......@@ -135,7 +135,7 @@ export const formSchema: ISchema = {
properties: {
inviteTenderMember: {
type: 'string',
title: '报名会员',
title: intl.formatMessage({ id: 'table.purchase.inviteMemberName' }),
readOnly: true,
},
name: {
......@@ -290,7 +290,7 @@ export const formSchema: ISchema = {
},
properties: {
registerFile: {
title: '报名文件',
title: intl.formatMessage({ id: 'detail.purchase.signUpFileLayout' }),
'x-component': 'FixUpload',
'x-component-props': {
action: '/api/file/file/upload/prefix',
......@@ -304,10 +304,10 @@ export const formSchema: ISchema = {
'x-rules': [
{
required: false,
message: '请上传附件',
message: intl.formatMessage({ id: 'detail.purchase.message57' }),
},
],
description: '一次上传一个文件,每个附件大小不能超过20M',
description: intl.formatMessage({ id: 'table.purchase.yicishangchuanyi' }),
},
}
}
......
......@@ -56,7 +56,7 @@ export const ProductTableCell:React.FC<ProductTableCellProps> = ({
values.price = Number(values.price) || 0
handleSave({ ...record, ...values });
} catch (errInfo) {
console.log('Save failed:', errInfo);
console.log('Save failed', errInfo);
}
};
......
......@@ -248,7 +248,7 @@ export const RelevanceTenderProduct: React.FC<RelateProductDrawerProps> = ({
const beforeUpload = file => {
if (file.size / 1024 / 1024 > 20) {
message.warning('附件大小超过20M');
message.warning(intl.formatMessage({ id: 'table.purchase.yicishangchuanyi' }));
return Promise.reject();
}
}
......
......@@ -109,7 +109,7 @@ const AddTender:React.FC<AddTenderProps> = (props) => {
const beforeUpload = file => {
if (file.size / 1024 / 1024 > 20) {
message.warning('附件大小超过20M');
message.warning(intl.formatMessage({ id: 'table.purchase.yicishangchuanyi' }));
return Promise.reject();
}
}
......
......@@ -44,7 +44,7 @@ export const formSchema: ISchema = {
},
inviterTenderCode: {
type: 'string',
title: '招标编号',
title: intl.formatMessage({ id: 'table.purchase.numbering' }),
readOnly: true,
'x-component': 'InviterCodeJump',
},
......@@ -147,7 +147,7 @@ export const formSchema: ISchema = {
// 'x-rules': [
// {
// required: false,
// message: '请上传附件',
// message: intl.formatMessage({ id: 'detail.purchase.message57' }),
// },
// ],
// readOnly: true,
......@@ -292,10 +292,10 @@ export const formSchema: ISchema = {
'x-rules': [
{
required: false,
message: '请上传附件',
message: intl.formatMessage({ id: 'detail.purchase.message57' }),
},
],
description: '一次上传一个文件,每个附件大小不能超过20M',
description: intl.formatMessage({ id: 'table.purchase.yicishangchuanyi' }),
},
}
}
......
......@@ -70,10 +70,10 @@ export const relevanceSchema: ISchema = {
'x-rules': [
{
required: false,
message: '请上传附件',
message: intl.formatMessage({ id: 'detail.purchase.message57' }),
},
],
// description: '一次上传一个文件,每个附件大小不能超过20M',
// description: intl.formatMessage({ id: 'table.purchase.yicishangchuanyi' }),
},
}
},
......
......@@ -21,8 +21,8 @@ const CallForBidsSearchDetailInTender: React.FC = () => {
{ title: intl.formatMessage({ id: 'table.purchase.zhaobiaowuliao' }), id: 'bidMaterial', componentName: "BidMaterial" },
{ title: intl.formatMessage({ id: 'table.purchase.zhaobiaoyaoqiu' }), id: 'bidNeed', type: "bidNeed" },
{ title: intl.formatMessage({ id: 'table.purchase.baomingyaoqiu' }), id: 'registerNeed', type: "registerNeed" },
{ title: '报名信息', id: 'registerInfo', type: "registerInfo" },
{ title: '报名文件', id: 'registerFile', type: "registerFile" },
{ title: intl.formatMessage({ id: 'detail.purchase.signUpMsgLayout' }), id: 'registerInfo', type: "registerInfo" },
{ title: intl.formatMessage({ id: 'detail.purchase.signUpFileLayout' }), id: 'registerFile', type: "registerFile" },
{ title: intl.formatMessage({ id: 'table.purchase.zigeyushenyao' }), id: 'checkNeed', type: "checkNeed" },
{ title: '资格证明文件', id: 'checkQualifyFile', type: "checkQualifyFile" },
{ title: intl.formatMessage({ id: 'table.purchase.qitayaoqiu' }), id: 'otherNeed', type: "otherNeed" },
......
......@@ -52,7 +52,7 @@ export const useSelfTable = () => {
key: 'memberName',
},
{
title: '开标时间',
title: intl.formatMessage({ id: 'table.purchase.kaibiaoshijian' }),
align: 'left',
dataIndex: 'openTenderTime',
key: 'openTenderTime',
......@@ -67,7 +67,7 @@ export const useSelfTable = () => {
width: 180
},
{
title: '报名开始/截止时间',
title: intl.formatMessage({ id: 'table.purchase.baomingkaishi/' }),
align: 'left',
dataIndex: 'registerStartTime',
key: 'registerStartTime',
......
......@@ -50,7 +50,7 @@ export const useSelfTable = () => {
width: 180
},
{
title: '报名开始/截止时间',
title: intl.formatMessage({ id: 'table.purchase.baomingkaishi/' }),
align: 'left',
dataIndex: 'memberRoleId',
key: 'memberRoleId',
......
......@@ -103,7 +103,7 @@ const ReadyQualifityCheckedDetail: React.FC = () => {
return Promise.reject();
}
if (file.size / 1024 / 1024 > 20) {
message.warning('附件大小超过20M');
message.warning(intl.formatMessage({ id: 'table.purchase.yicishangchuanyi' }));
return Promise.reject();
}
},
......
......@@ -49,7 +49,7 @@ export const useSelfTable = () => {
width: 180
},
// {
// title: '报名开始/截止时间',
// title: intl.formatMessage({ id: 'table.purchase.baomingkaishi/' }),
// align: 'left',
// dataIndex: 'memberRoleId',
// key: 'memberRoleId',
......
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