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

feat: 采购能力国际化

parent 1735357f
......@@ -871,7 +871,7 @@ export default {
'table.purchase.guigongsicanyu': '贵公司参与了我公司',
'table.purchase.jingbiaoaiwo':
'竞标。在我公司综合各投标单位的基本情况,并进行充分技术交流后,经评标委员会综合评定,贵公司未能中标。我公司对贵公司的积极参与和支持深表感谢!希望下次合作成功。',
'table.purchase.zhongbiaozongjine': '中标总金额',
'1': '中标总金额',
'table.purchase.shangchuanshibai': '上传失败',
'table.purchase.wenjianmingguochang': '文件名过长',
'table.purchase.zhuanjiatouxiang': '专家头像',
......@@ -902,4 +902,76 @@ export default {
'table.purchase.fasongtongzhi': '发送通知',
'table.purchase.quedingyaozhixing': '确定要执行该操作?',
'table.purchase.zaicifasongtong': '再次发送通知',
'table.purchase.tijiaozhaobiao': '提交招标',
'table.purchase.qingshuruzhuti': '请输入主题名称',
'table.purchase.qingshuruzhaobiao': '请输入招标编码',
'table.purchase.daoru': '导入',
'table.purchase.qingxuanzezhuanjia1': '请选择专家类型',
'table.purchase.zhongbiaomingxi': '中标明细',
'table.purchase.toubiaowuliao': '投标物料',
'table.purchase.toubiaoshangpin': '投标商品',
'table.purchase.qingxiangouxuandan': '请先勾选单据',
'table.purchase.piliangtijiaotou': '批量提交投标',
'table.purchase.qingxianxuanzetou': '请先选择投标',
'table.purchase.chongxintijiao': '重新提交',
'table.purchase.qingshangchuanzige': '请上传资格证明文件',
'table.purchase.gaipingbiaomuban': '该评标模板已经被使用,不能删除',
'table.purchase.gaipingbiaomuban1': '该评标模板已经被使用,不能修改',
'table.purchase.bianji': '编辑',
'table.purchase.quedingyaozhixing1': '确定要执行该操作?',
'table.purchase.caigoushuliangdanwei': '采购数量/单位',
'table.purchase.duiyingzhaobiaowu': '对应招标物料',
'table.purchase.toubiaoqitaxin': '投标其他信息',
'table.purchase.qingxiangouxuanding': '请先勾选订单',
'table.purchase.wuliaobianhao': '物料编号',
'table.purchase.wuliaomingcheng': '物料名称',
'table.purchase.queding': '确定',
'table.purchase.wuliaoxiangqing': '物料详情',
'table.purchase.guanliantoubiaoshang': '关联投标商品',
'table.purchase.zongji': '总计',
'table.purchase.shangpinbianhao': '商品编号',
'table.purchase.shangpinmingcheng': '商品名称',
'table.purchase.xuanzeshangpin': '选择商品',
'table.purchase.shangpinbianma': '商品编码',
'table.purchase.bixutianxie': '必须填写',
'table.purchase.danjiajinxiansi': '单价仅限四位小数',
'table.purchase.shuilüjinxianliang': '税率仅限两位小数',
'table.purchase.xinjiantoubiao': '新建投标',
'table.purchase.qingtianxieshangpin': '请填写商品单价',
'table.purchase.baomingwenjian': '报名文件',
'table.purchase.qingtianxiexiangxi': '请填写详细地址',
'table.purchase.xuanzedanweidi': '选择单位地址',
'table.purchase.dizhi': '地址',
'table.purchase.qingshuruzhengque': '请输入正确格式的邮箱',
'table.purchase.qingshurudianzi': '请输入电子邮箱',
'table.purchase.dianziyouxiang': '电子邮箱',
'table.purchase.qingshuruzhengque1': '请输入正确格式的手机号',
'table.purchase.qingshurushouji': '请输入手机号码',
'table.purchase.qingxuanze': '请选择',
'table.purchase.qingtianxielianxi': '请填写联系人姓名,最长12个字符',
'table.purchase.qingtianxielianxi2': '请填写联系人姓名',
'table.purchase.lianxirenxingming': '联系人姓名',
'table.purchase.baomingyaoqiufu': '报名要求附件',
'table.purchase.baomingyaoqiushuo': '报名要求说明',
'table.purchase.baomingshijianyao': '报名时间要求',
'table.purchase.zhaobiaoID': '招标ID',
'table.purchase.zhaobiaobaoming': '招标报名',
'table.purchase.waibuliuzhuan': '外部流转',
'table.purchase.lianxirenshouji': '联系人手机',
'table.purchase.lianxirenyouxiang': '联系人邮箱',
'table.purchase.zigeyushenwen': '资格预审文件',
'table.purchase.toubiaobianhao/': '投标编号/会员',
'table.purchase.qingshurutoubiao1': '请输入投标项目',
'table.purchase.qingshurutoubiao2': '请输入投标会员',
'table.purchase.qingshurushenhe': '请输入审核不通过原因',
'table.purchase.tishi': '提示',
'table.purchase.dakaikaiguan': '打开开关,审核通过后,将招标发至对应的会员',
'table.purchase.fabushangcheng': '发布商城',
'table.purchase.guangzhoushijiange': '广州室间隔度过后工地',
'table.purchase.zhongbiaozongjine1': '中标总金额(含税)',
'table.purchase.qitianwuliyou': '七天无理由中标',
'table.purchase.hanshui/shuilü': '含税/税率',
'table.purchase.zhongbiaoshuliang': '中标数量',
'table.purchase.duiying': '对应',
'table.purchase.zhi': '至',
}
......@@ -172,7 +172,7 @@ export const paramsRenderFn = (value) => {
// key: 'memberId',
// },
// {
// title: '会员名称',
// title: intl.formatMessage({ id: 'detail.purchase.memberName' }),
// dataIndex: 'name',
// align: 'center',
// key: 'name',
......@@ -338,25 +338,25 @@ export const inviteMemberColumns: any[] = [
// key: 'memberId',
// },
// {
// title: '会员名称',
// title: intl.formatMessage({ id: 'detail.purchase.memberName' }),
// dataIndex: 'name',
// align: 'center',
// key: 'name',
// },
// {
// title: '会员类型',
// title: intl.formatMessage({ id: 'detail.purchase.memberType' }),
// dataIndex: 'memberTypeName',
// align: 'center',
// key: 'memberTypeName',
// },
// {
// title: '会员角色',
// title: intl.formatMessage({ id: 'detail.purchase.role' }),
// dataIndex: 'roleName',
// align: 'center',
// key: 'roleName',
// },
// {
// title: '会员等级',
// title: intl.formatMessage({ id: 'detail.purchase.leveTag' }),
// dataIndex: 'levelTag',
// align: 'center',
// key: 'levelTag',
......
......@@ -76,7 +76,7 @@ const ReadySubmitBidDetail: React.FC = () => {
anchorList={anchorTitleList}
extraRight={
action ? <Button type='primary' onClick={handleClick} icon={<SendOutlined rotate={-45} />}>
提交招标
{intl.formatMessage({ id: 'table.purchase.tijiaozhaobiao' })}
</Button> : null
}
/>
......
......@@ -10,7 +10,7 @@ export const tableListSchema: ISchema = {
type: 'string',
"x-component": 'SearchFilter',
'x-component-props': {
placeholder: '请输入主题名称',
placeholder: intl.formatMessage({ id: 'table.purchase.qingshuruzhuti' }),
align: 'flex-end',
},
},
......@@ -27,7 +27,7 @@ export const tableListSchema: ISchema = {
inviteTenderCode: {
type: 'string',
'x-component-props': {
placeholder: '请输入招标编码',
placeholder: intl.formatMessage({ id: 'table.purchase.qingshuruzhaobiao' }),
}
},
submit: {
......
......@@ -16,14 +16,14 @@ const intl = getIntl();
// 评标专家库 招标
export interface RemarkBidExpertProps {}
export interface RemarkBidExpertProps { }
const fetchTableData = async (params) => {
const { data } = await getPurchaseExpertGetExpertList(params)
return data
}
const RemarkBidExpert:React.FC<RemarkBidExpertProps> = (props) => {
const RemarkBidExpert: React.FC<RemarkBidExpertProps> = (props) => {
const {
columns,
ref,
......@@ -64,13 +64,13 @@ const RemarkBidExpert:React.FC<RemarkBidExpertProps> = (props) => {
formilyChilds={{
children: <Space>
<Button
icon={<PlusCircleOutlined/>}
icon={<PlusCircleOutlined />}
type='primary'
onClick={() => history.push('/memberCenter/procurementAbility/callForBids/remarkBidExpert/add')}
>
{intl.formatMessage({ id: 'table.purchase.added' })}
</Button>
<Button>导入</Button>
<Button>{intl.formatMessage({ id: 'table.purchase.daoru' })}</Button>
</Space>,
layouts: {
span: 8
......
......@@ -19,13 +19,13 @@ export const useSelfTable = () => {
render: (t, r, i) => ++i
},
{
title: '专家',
title: intl.formatMessage({ id: 'table.purchase.expert' }),
align: 'left',
dataIndex: 'name',
key: 'name',
},
{
title: '所属机构',
title: intl.formatMessage({ id: 'table.purchase.orgName' }),
align: 'left',
dataIndex: 'userOrgName',
key: 'userOrgName',
......@@ -37,32 +37,32 @@ export const useSelfTable = () => {
key: 'userJobTitle',
},
{
title: '专业类别',
title: intl.formatMessage({ id: 'table.purchase.speciality' }),
align: 'left',
dataIndex: 'speciality',
key: 'speciality',
render: (t, r) => SpecialityTypeMap[t]
},
{
title: '资格证书',
title: intl.formatMessage({ id: 'table.purchase.qualification' }),
align: 'left',
dataIndex: 'qualification',
key: 'qualification',
},
{
title: '专业职称',
title: intl.formatMessage({ id: 'table.purchase.title' }),
align: 'left',
dataIndex: 'title',
key: 'title',
},
{
title: '从事年限',
title: intl.formatMessage({ id: 'table.purchase.years' }),
align: 'left',
dataIndex: 'years',
key: 'years',
},
{
title: '专家类型',
title: intl.formatMessage({ id: 'table.purchase.type' }),
align: 'left',
dataIndex: 'type',
key: 'type',
......@@ -109,17 +109,18 @@ export const useSelfTable = () => {
dataIndex: 'ctl',
key: 'ctl',
render: (text, record) => <>
<Button type='link' onClick={() => handleEdit(record.id)}>编辑</Button>
<Button type='link' onClick={() => handleEdit(record.id)}>{
intl.formatMessage({ id: 'detail.purchase.edit' })}</Button>
<Popconfirm
title="确定要执行该操作?"
title={intl.formatMessage({ id: 'table.purchase.quedingyaozhixing' })}
onConfirm={() => handleDelete(record.id)}
okText="是"
cancelText="否"
okText={intl.formatMessage({ id: 'table.purchase.okText' })}
cancelText={intl.formatMessage({ id: 'table.purchase.cancelText' })}
>
<Button
type='link'
// onClick={() => handleDelete(record.id)}
>删除</Button>
>{intl.formatMessage({ id: 'table.purchase.delete' })}</Button>
</Popconfirm>
</>
}
......
......@@ -11,7 +11,8 @@ export const tableListSchema: ISchema = {
type: 'string',
"x-component": 'SearchFilter',
'x-component-props': {
placeholder: '请输入专家名称',
placeholder: intl.formatMessage({ id: 'table.purchase.qingshuruzhuanjia' })
,
align: 'flex-end',
},
},
......@@ -28,19 +29,19 @@ export const tableListSchema: ISchema = {
userOrgName: {
type: 'string',
'x-component-props': {
placeholder: '请输入所属机构',
placeholder: intl.formatMessage({ id: 'table.purchase.qingshurusuoshu1' }),
}
},
userJobTitle: {
type: 'string',
"x-component-props": {
placeholder: '请输入职位'
placeholder: intl.formatMessage({ id: 'table.purchase.qingshuruzhiwei' })
}
},
speciality: {
type: 'string',
"x-component-props": {
placeholder: '请选择专业类别'
placeholder: intl.formatMessage({ id: 'table.purchase.qingxuanzezhuanye' })
},
enum: Object.keys(SpecialityTypeMap).map(item => ({
label: SpecialityTypeMap[item],
......@@ -50,19 +51,20 @@ export const tableListSchema: ISchema = {
qualification: {
type: 'string',
"x-component-props": {
placeholder: '请输入资格证书'
placeholder:
intl.formatMessage({ id: 'table.purchase.qingshuruzige' })
}
},
title: {
type: 'string',
"x-component-props": {
placeholder: '请输入专业职称'
placeholder: intl.formatMessage({ id: 'table.purchase.qingshuruzhuanye' })
}
},
type: {
type: 'string',
"x-component-props": {
placeholder: '请选择专家类型'
placeholder: intl.formatMessage({ id: 'table.purchase.qingxuanzezhuanjia1' })
},
enum: Object.keys(ExpertTypeMap).map(item => ({
label: ExpertTypeMap[item],
......
......@@ -52,7 +52,7 @@ const RemarkBidTemplate:React.FC<RemarkBidTemplateProps> = (props) => {
name: {
type: 'string',
'x-component-props': {
placeholder: '模板名称',
placeholder: intl.formatMessage({ id: 'table.purchase.name' }),
},
'x-component': 'Search'
}
......
......@@ -19,7 +19,7 @@ export const useSelfTable = () => {
render: (t, r, i) => ++i
},
{
title: '模板名称',
title: intl.formatMessage({ id: 'table.purchase.name' }),
align: 'left',
dataIndex: 'name',
key: 'name',
......@@ -32,13 +32,13 @@ export const useSelfTable = () => {
),
},
{
title: '版本号',
title: intl.formatMessage({ id: 'table.purchase.version' }),
align: 'left',
dataIndex: 'version',
key: 'version',
},
{
title: '模板说明',
title: intl.formatMessage({ id: 'table.purchase.remark' }),
align: 'left',
dataIndex: 'remark',
key: 'remark',
......@@ -61,34 +61,34 @@ export const useSelfTable = () => {
const handleUpdateState = (record) => {
postPurchaseTemplateUpdateTemplateStatus({ id: record.id, status: !record.status }).then(res => {
if(res.code === 1000) {
if (res.code === 1000) {
ref.current.reload()
}
})
}
const handleDelete = (id) => {
if(!verifyCorrelation(id)) {
if (!verifyCorrelation(id)) {
postPurchaseTemplateDeleteBatchTemplate({ idList: [id] }).then(res => {
if(res.code === 1000) {
if (res.code === 1000) {
ref.current.reload()
}
})
} else {
return message.error('该评标模板已经被使用,不能删除')
return message.error(intl.formatMessage({ id: 'table.purchase.gaipingbiaomuban' }))
}
}
const handleEdit = (id) => {
if(!verifyCorrelation(id)) {
if (!verifyCorrelation(id)) {
history.push(`/memberCenter/procurementAbility/callForBids/remarkBidTemplate/edit?id=${id}`)
} else {
return message.error('该评标模板已经被使用,不能修改')
return message.error(intl.formatMessage({ id: 'table.purchase.gaipingbiaomuban1' }))
}
}
const verifyCorrelation = async (id) => {
const { data } = await getPurchaseTemplateGetTemplateIsUse({id})
const { data } = await getPurchaseTemplateGetTemplateIsUse({ id })
return data
}
......@@ -99,16 +99,16 @@ export const useSelfTable = () => {
dataIndex: 'ctl',
key: 'ctl',
render: (text, record) => <>
<Button type='link' onClick={() => handleEdit(record.id)}>编辑</Button>
<Button type='link' onClick={() => handleEdit(record.id)}>{intl.formatMessage({ id: 'table.purchase.bianji' })}</Button>
<Popconfirm
title="确定要执行该操作?"
title={intl.formatMessage({ id: 'table.purchase.quedingyaozhixing1' })}
onConfirm={() => handleDelete(record.id)}
okText="是"
cancelText="否"
okText={intl.formatMessage({ id: 'table.purchase.okText' })}
cancelText={intl.formatMessage({ id: 'table.purchase.cancelText' })}
>
<Button
type='link'
>删除</Button>
>{intl.formatMessage({ id: 'detail.purchase.detele' })}</Button>
</Popconfirm>
</>
}
......
......@@ -26,7 +26,7 @@ export const tableListSchema: ISchema = {
type: 'string',
'x-component': 'Search',
'x-component-props': {
placeholder: '模板名称',
placeholder: intl.formatMessage({ id: 'table.purchase.name' }),
advanced: false,
},
},
......
......@@ -16,7 +16,7 @@ const intl = getIntl();
// 二级待审核 招标
export interface SecondCheckedBidProps {}
export interface SecondCheckedBidProps { }
const fetchTableData = async (params) => {
const { data } = await postPurchaseInviteTenderGetCheckInviteTenderList2(params, { ctlType: "none" })
......@@ -24,7 +24,7 @@ const fetchTableData = async (params) => {
}
// TODO
const SecondCheckedBid:React.FC<SecondCheckedBidProps> = (props) => {
const SecondCheckedBid: React.FC<SecondCheckedBidProps> = (props) => {
const {
columns,
ref,
......@@ -36,17 +36,17 @@ const SecondCheckedBid:React.FC<SecondCheckedBidProps> = (props) => {
const handleSubmitBatch = async () => {
if (rowSelectionCtl.selectRow.length === 0) {
message.error('请先勾选订单')
return ;
message.error(intl.formatMessage({ id: 'table.purchase.qingxiangouxuanding' }))
return;
}
// const canBitch = !rowSelectionCtl.selectRow.some(v => v.interiorState !== PurchaseOrderInsideWorkState.ONE_LEVEL_AUDIT_ORDER)
// if (canBitch) {
const { code } = await run({idList: rowSelectionCtl.selectedRowKeys})
if (code === 1000) {
ref.current.reload()
rowSelectionCtl.setSelectRow([])
rowSelectionCtl.setSelectedRowKeys([])
}
const { code } = await run({ idList: rowSelectionCtl.selectedRowKeys })
if (code === 1000) {
ref.current.reload()
rowSelectionCtl.setSelectRow([])
rowSelectionCtl.setSelectedRowKeys([])
}
// } else {
// message.error('只能批量提交内部状态为审核中的订单')
// }
......
......@@ -19,12 +19,12 @@ const TenderSearchDetail: React.FC = () => {
const anchorTitleList = [
{ title: intl.formatMessage({ id: 'table.purchase.liuzhuanjindu' }), id: 'transferProcess', componentName: "TransferProcess" },
{ title: '中标结果', id: 'bidResult', type: "bidResult" },
{ title: '中标明细', id: 'bidParticulars', componentName: "BidParticulars" },
{ title: intl.formatMessage({ id: 'detail.purchase.winBidResultLayout' }), id: 'bidResult', type: "bidResult" },
{ title: intl.formatMessage({ id: 'table.purchase.zhongbiaomingxi' }), id: 'bidParticulars', componentName: "BidParticulars" },
{ title: intl.formatMessage({ id: 'table.purchase.jibenxinxi' }), id: 'baseicInfo', type: "basicInfo" },
// { title: '投标要求', id: 'tenderNeed', type: "bidNeed" },
// { title: '投标其他要求', id: 'tenderOtherNeed', type: "otherNeed" },
{ title: '投标物料', id: 'tenderParticulars', componentName: "BidParticulars" },
{ title: intl.formatMessage({ id: 'table.purchase.toubiaowuliao' }), id: 'tenderParticulars', componentName: "BidParticulars" },
{ title: intl.formatMessage({ id: 'table.purchase.liuzhuanjilu' }), id: 'transferRecord', componentName: "BidTransformRecord" },
]
......
......@@ -30,7 +30,7 @@ export const useSelfTable = () => {
</>
},
{
title: '投标编号/会员',
title: intl.formatMessage({ id: 'table.purchase.toubiaobianhao/' }),
align: 'left',
dataIndex: 'code',
key: 'code',
......
......@@ -39,7 +39,7 @@ export const tableListSchema: any = () => {
projectName: {
type: 'string',
'x-component-props': {
placeholder: '请输入投标项目',
placeholder: intl.formatMessage({ id: 'table.purchase.qingshurutoubiao1' }),
}
},
submitTenderCode: {
......@@ -52,14 +52,14 @@ export const tableListSchema: any = () => {
type: 'string',
"x-component": 'data',
'x-component-props': {
placeholder: '开标开始时间',
placeholder: intl.formatMessage({ id: 'table.purchase.kaibiaokaishishi' }),
showTime: true,
},
},
submitTenderMemberName: {
type: 'string',
'x-component-props': {
placeholder: '请输入投标会员',
placeholder: intl.formatMessage({ id: 'table.purchase.qingshurutoubiao2' }),
}
},
submitTenderOutStatusList: {
......
......@@ -51,7 +51,7 @@ const ApproveSchema = {
"x-rules": [
{
required: true,
message: '请输入审核不通过原因'
message: intl.formatMessage({ id: 'table.purchase.qingshurushenhe' })
},
{
limitByte: true,
......@@ -78,7 +78,7 @@ const ApprovedModal:React.FC<ApprovedModalProps> = (props) => {
}, [currentRef])
return <ModalForm
modalTitle={title || '提示'}
modalTitle={title || intl.formatMessage({ id: 'table.purchase.tishi' })}
currentRef={currentRef}
confirm={onConfirm}
actions={approvedActions}
......
......@@ -123,19 +123,19 @@ const BidConfirm: React.FC<BidConfirmProps> = ({cardTitle}) => {
fullHeight
>
<div className={style['winContainer']}>
<h3 className="commonPanelTitle">中标会员</h3>
<h3 className="commonPanelTitle">{intl.formatMessage({ id: 'table.purchase.zhongbiaohuiyuan' })}</h3>
<Row gutter={[16, 0]}>
{
data.memberList.filter(m => m.isWin).map(item => (<Col key={item.id} span={6}>
<div className={style['card-list']}>
<h4>{item.memberName}</h4>
<Row>
<Col span={8}><p className={style['card-list_title']}>中标总金额({intl.formatMessage({ id: 'detail.purchase.isTax' })}):</p></Col>
<Col span={8}><p className={style['card-list_title']}>{intl.formatMessage({ id: 'table.purchase.zhongbiaozongjine' })}({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>
</Row>
<img src={winBid} alt="已中标"/>
<img src={winBid} alt={intl.formatMessage({ id: 'table.purchase.yizhongbiao' })}/>
</div>
</Col>))
}
......
......@@ -141,7 +141,7 @@ const BidMaterial: React.FC<BidMaterialProps> = ({cardTitle}) => {
// </>)
// },
{
title: '附件',
title: intl.formatMessage({ id: 'table.purchase.fujian' }),
name: '',
id: 'file',
render: (data) => (<>
......@@ -161,7 +161,7 @@ const BidMaterial: React.FC<BidMaterialProps> = ({cardTitle}) => {
id: 'purchaseAmount',
render: (data) => (<>
<Row className={style['card-list']}>
<Col span={4} className={style['card-list_title']}>单位:</Col>
<Col span={4} className={style['card-list_title']}>{intl.formatMessage({ id: 'table.purchase.danwei' })}:</Col>
<Col>{currentRow['unitName']}</Col>
</Row>
<Row className={style['card-list']}>
......@@ -174,7 +174,7 @@ const BidMaterial: React.FC<BidMaterialProps> = ({cardTitle}) => {
const columns = [
{
title: '物料编号',
title: intl.formatMessage({ id: 'table.purchase.wuliaobianhao' }),
dataIndex: 'code',
key: 'code',
render: (text, record) => <>
......@@ -184,27 +184,27 @@ const BidMaterial: React.FC<BidMaterialProps> = ({cardTitle}) => {
</>
},
{
title: '物料名称',
title: intl.formatMessage({ id: 'table.purchase.wuliaomingcheng' }),
dataIndex: 'name',
key: 'name',
},
{
title: '规格型号',
title: intl.formatMessage({ id: 'table.purchase.guigexinghao' }),
dataIndex: 'type',
key: 'type',
},
{
title: '品类',
title: intl.formatMessage({ id: 'table.purchase.pinlei' }),
dataIndex: 'categoryName',
key: 'categoryName',
},
{
title: '品牌',
title: intl.formatMessage({ id: 'table.purchase.pinpai' }),
dataIndex: 'brandName',
key: 'brandName',
},
{
title: '单位',
title: intl.formatMessage({ id: 'table.purchase.danwei' }),
dataIndex: 'unitName',
key: 'unitName',
},
......@@ -227,10 +227,10 @@ const BidMaterial: React.FC<BidMaterialProps> = ({cardTitle}) => {
}}
>
<Button onClick={()=>setVisible(false)} style={{ marginRight: 8 }}>
取消
{intl.formatMessage({ id: 'table.purchase.quxiao' })}
</Button>
<Button onClick={()=>setVisible(false)} type="primary">
确定
{intl.formatMessage({ id: 'table.purchase.queding' })}
</Button>
</div>)
......@@ -245,7 +245,7 @@ const BidMaterial: React.FC<BidMaterialProps> = ({cardTitle}) => {
</MellowCard>
<AnchorDrawer
title="物料详情"
title={intl.formatMessage({ id: 'table.purchase.wuliaoxiangqing' })}
visible={visible}
dataRenderList={dataList}
footer={footer}
......
......@@ -34,28 +34,28 @@ const BidMethod: React.FC<BidMethodProps> = ({cardTitle}) => {
render: (t, r, i) => ++i
},
{
title: '会员名称',
title: intl.formatMessage({ id: 'detail.purchase.memberName' }),
dataIndex: 'memberName',
key: 'memberName',
},
{
title: '会员类型',
title: intl.formatMessage({ id: 'detail.purchase.memberType' }),
dataIndex: 'memberTypeName',
key: 'memberTypeName',
},
{
title: '会员角色',
title: intl.formatMessage({ id: 'detail.purchase.role' }),
dataIndex: 'memberRoleName',
key: 'memberRoleName',
},
{
title: '是否归属会员',
title: intl.formatMessage({ id: 'detail.purchase.isSubMember' }),
dataIndex: 'isSubMember',
key: 'isSubMember',
render: (t, r) => t ? intl.formatMessage({ id: 'table.purchase.shi' }) : intl.formatMessage({ id: 'table.purchase.fou' }),
},
{
title: <>状态<Tooltip title="打开开关,审核通过后,将招标发至对应的会员"><span>&nbsp;<QuestionCircleOutlined /></span></Tooltip></>,
title: <>{intl.formatMessage({ id: 'table.purchase.zhuangtai' })}<Tooltip title={intl.formatMessage({ id: 'table.purchase.dakaikaiguan' })}><span>&nbsp;<QuestionCircleOutlined /></span></Tooltip></>,
dataIndex: 'isSend',
key: 'isSend',
render: (text, record) => <Switch disabled defaultChecked={text} onChange={() => onChange(record)} />
......@@ -81,7 +81,7 @@ const BidMethod: React.FC<BidMethodProps> = ({cardTitle}) => {
>
<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.zhaobiaofangshi' })}</p></Col>
<Col><p>{CALLFORBID_TYPE[data.inviteTenderType]}</p></Col>
</Row>
</div>
......@@ -91,7 +91,7 @@ const BidMethod: React.FC<BidMethodProps> = ({cardTitle}) => {
:
<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.fabushangcheng' })}</p></Col>
<Col>
<p>
{
......
......@@ -4,40 +4,40 @@ const intl = getIntl();
export const columns = [
{
title: '物料编号/名称',
title: intl.formatMessage({ id: 'detail.purchase.type' }),
dataIndex: 'name',
key: 'name',
render: (t, r) => <><div>{r.code}</div><div>{t}</div></>
},
{
title: '规格型号',
title: intl.formatMessage({ id: 'table.purchase.guigexinghao' }),
dataIndex: 'type',
key: 'type'
},
{
title: '品类',
title: intl.formatMessage({ id: 'table.purchase.pinlei' }),
dataIndex: 'categoryName',
key: 'categoryName'
},
{
title: '品牌',
title: intl.formatMessage({ id: 'table.purchase.pinpai' }),
dataIndex: 'brandName',
key: 'brandName'
},
{
title: '采购数量/单位',
title: intl.formatMessage({ id: 'table.purchase.caigoushuliangdanwei' }),
dataIndex: 'count',
key: 'count',
render: (t, r) => <><div>{t}</div><div>{r.unitName}</div></>
},
{
title: '含税/税率',
title: intl.formatMessage({ id: 'table.purchase.hanshui/shuilü' }),
dataIndex: 'isTax',
key: 'isTax',
render: (t, r) => <><div>{t ? intl.formatMessage({ id: 'table.purchase.shi' }) : intl.formatMessage({ id: 'table.purchase.fou' })}</div><div>{r.taxRate}%</div></>
},
{
title: '单价(含税)',
title: intl.formatMessage({ id: 'detail.purchase.taxUnitPrice' }),
dataIndex: 'price',
key: 'price',
render: t => `¥${t}`
......@@ -49,7 +49,7 @@ export const columns = [
// render: (t, r) => (Number(t)/100 * Number(r.count)).toFixed(2)
// },
{
title: '金额(含税)',
title: intl.formatMessage({ id: 'detail.purchase.taxPrice' }),
dataIndex: 'money',
key: 'money',
render: (t, r) => `¥${Number((r.price * r.count).toFixed(2))}`
......
......@@ -17,7 +17,7 @@ export interface BidParticularsProps {
cardTitle?: string;
}
const BidParticulars: React.FC<BidParticularsProps> = ({cardTitle}) => {
const BidParticulars: React.FC<BidParticularsProps> = ({ cardTitle }) => {
const bidDetailContext = useContext(BidDetailContext)
const { data, ctl } = bidDetailContext
......@@ -49,28 +49,28 @@ const BidParticulars: React.FC<BidParticularsProps> = ({cardTitle}) => {
const [tableColumn, setTableColumn] = useState<any>(() => {
let totalMoney = 0;
data.submitTender ? data.submitTender.submitTenderMateriel.forEach(item => {
if(cardTitle === '中标明细') {
totalMoney += (item.isAwardTender ? item.price * item.inviteTenderMateriel.count * Number(item.awardTenderRatio)/100 : 0)
if (cardTitle === intl.formatMessage({ id: 'table.purchase.zhongbiaomingxi' })) {
totalMoney += (item.isAwardTender ? item.price * item.inviteTenderMateriel.count * Number(item.awardTenderRatio) / 100 : 0)
} else {
totalMoney += item.price * item.inviteTenderMateriel.count
}
}) : []
let tempCol: any = [...columns]
// 中标数量
if(cardTitle === '中标明细') {
tempCol[tempCol.length-1] = {
title: '中标数量',
if (cardTitle === intl.formatMessage({ id: 'table.purchase.zhongbiaomingxi' })) {
tempCol[tempCol.length - 1] = {
title: intl.formatMessage({ id: 'table.purchase.zhongbiaoshuliang' }),
dataIndex: 'awardTenderRatio',
key: 'awardTenderRatio',
render: (t, r) => (Number(t)/100 * Number(r.count)).toFixed(2)
render: (t, r) => (Number(t) / 100 * Number(r.count)).toFixed(2)
}
}
// 总计
tempCol[tempCol.length] = {
title: <span>{cardTitle === '中标明细' ? '中标金额(含税)' : '金额(含税)'}<br />合计: ¥{totalMoney.toFixed(2)}</span>,
title: <span>{cardTitle === intl.formatMessage({ id: 'table.purchase.zhongbiaomingxi' }) ? intl.formatMessage({ id: 'detail.purchase.label' }) : intl.formatMessage({ id: 'detail.purchase.taxPrice' })}<br />{intl.formatMessage({ id: 'detail.purchase.totalAmount' })}: ¥{totalMoney.toFixed(2)}</span>,
dataIndex: 'money',
key: 'money',
render: (t, r) => cardTitle === '中标明细' ? `¥${Number((r.price * Number(r.awardTenderRatio)/100 * r.count).toFixed(2))}` : `¥${Number((r.price * r.count).toFixed(2))}`
render: (t, r) => cardTitle === intl.formatMessage({ id: 'table.purchase.zhongbiaomingxi' }) ? `¥${Number((r.price * Number(r.awardTenderRatio) / 100 * r.count).toFixed(2))}` : `¥${Number((r.price * r.count).toFixed(2))}`
}
return tempCol
})
......@@ -78,11 +78,11 @@ const BidParticulars: React.FC<BidParticularsProps> = ({cardTitle}) => {
const renderDescription = async (record) => {
// 商品信息
let res = await getProductCommodityGetCommodity({id: record.commodityId})
let res = await getProductCommodityGetCommodity({ id: record.commodityId })
// 商品规格信息
let spec = await getProductCommodityGetCommodityAttributeByUnitPriceAndPicId({ unitPriceAndPicId: record.commoditySkuId })
const { code , data } = res
if(code === 1000) {
const { code, data } = res
if (code === 1000) {
const newData = [...tableData];
const index = newData.findIndex(item => record.id === item.id);
const item = newData[index];
......@@ -90,22 +90,22 @@ const BidParticulars: React.FC<BidParticularsProps> = ({cardTitle}) => {
<Row>
<Col span={3}>
<div className={style.childrenTitle}>
<p>对应</p>
<p>投标商品</p>
<p>{intl.formatMessage({ id: 'table.purchase.duiying' })}</p>
<p>{intl.formatMessage({ id: 'table.purchase.toubiaoshangpin' })}</p>
</div>
</Col>
<Col span={6}>
<div className={style.childrenContent}>
<p><span>商品编号:</span>{data.code}</p>
<p><span>商品名称:</span>{data.name}</p>
<p><span>{intl.formatMessage({ id: 'table.purchase.shangpinbianhao' })}:</span>{data.code}</p>
<p><span>{intl.formatMessage({ id: 'table.purchase.shangpinmingcheng' })}:</span>{data.name}</p>
</div>
</Col>
<Col span={6}>
<div className={style.childrenContent}>
<p><span>{intl.formatMessage({ id: 'table.purchase.guigexinghao' })}:</span>
{
spec.data.length ? spec.data.map(item => item.customerAttributeValueList[0].value).join('/') : null
}
{
spec.data.length ? spec.data.map(item => item.customerAttributeValueList[0].value).join('/') : null
}
</p>
<p><span>{intl.formatMessage({ id: 'table.purchase.pinlei' })}:</span>{data.customerCategory.fullName}</p>
</div>
......@@ -132,12 +132,12 @@ const BidParticulars: React.FC<BidParticularsProps> = ({cardTitle}) => {
bordered={false}
fullHeight
className={style.particulars}
style={{marginTop: 24}}
style={{ marginTop: 24 }}
>
<Table
columns={tableColumn}
expandable={{
expandedRowRender: record => <p style={{ margin: 0 }}>{ record?.commodityId ? (record.description || <Spin size="small" style={{margin: '15px auto', width: '100%'}} />) : null}</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 ? (
......@@ -147,18 +147,18 @@ const BidParticulars: React.FC<BidParticularsProps> = ({cardTitle}) => {
),
onExpand: (expanded, record) => {
console.log('通过商品Id 查询商品信息显示在嵌套中', record, expanded)
if(!record?.commodityId && expanded) {
if (!record?.commodityId && expanded) {
// return message.error('您没有关联商品')
return null
}
if(expanded) {
if (expanded) {
renderDescription(record)
}
}
}}
dataSource={cardTitle === '中标明细' ? tableData.filter(item => item.isAwardTender) : tableData}
dataSource={cardTitle === intl.formatMessage({ id: 'table.purchase.zhongbiaomingxi' }) ? tableData.filter(item => item.isAwardTender) : tableData}
rowKey="id"
pagination={{size: "small"}}
pagination={{ size: "small" }}
/>
</MellowCard>
</>)
......
......@@ -160,7 +160,7 @@ const DescriptionsInfo: React.FC<BasicInfoProps> = ({ cardTitle, type }) => {
{
span: 8,
fieldList: [
{ title: intl.formatMessage({ id: 'table.purchase.toubiaojiezhishi' }), name: 'createTime', render: (t, r) => formatTimeString(r['inviteTenderStartTime']) + '至' + formatTimeString(r['inviteTenderEndTime']) },
{ title: intl.formatMessage({ id: 'table.purchase.toubiaojiezhishi' }), name: 'createTime', render: (t, r) => formatTimeString(r['inviteTenderStartTime']) + intl.formatMessage({ id: 'table.purchase.zhi' }) + formatTimeString(r['inviteTenderEndTime']) },
{ title: intl.formatMessage({ id: 'table.purchase.openTenderTime' }), name: 'openTenderTime', render: (text) => formatTimeString(text) },
]
},
......@@ -196,7 +196,7 @@ const DescriptionsInfo: React.FC<BasicInfoProps> = ({ cardTitle, type }) => {
{
span: 8,
fieldList: [
{ title: intl.formatMessage({ id: 'table.purchase.toubiaojiezhishi' }), name: 'createTime', render: (t, r) => formatTimeString(r['inviteTenderStartTime']) + '至' + formatTimeString(r['inviteTenderEndTime']) },
{ title: intl.formatMessage({ id: 'table.purchase.toubiaojiezhishi' }), name: 'createTime', render: (t, r) => formatTimeString(r['inviteTenderStartTime']) + intl.formatMessage({ id: 'table.purchase.zhi' }) + formatTimeString(r['inviteTenderEndTime']) },
{ title: intl.formatMessage({ id: 'table.purchase.openTenderTime' }), name: 'openTenderTime', render: (text) => formatTimeString(text) },
]
},
......@@ -229,7 +229,7 @@ const DescriptionsInfo: React.FC<BasicInfoProps> = ({ cardTitle, type }) => {
{
span: 8,
fieldList: [
{ title: intl.formatMessage({ id: 'detail.purchase.startSignUp' }), name: 'createTime', render: (t, r) => formatTimeString(r['registerStartTime']) + '至' + formatTimeString(r['registerEndTime']) },
{ title: intl.formatMessage({ id: 'detail.purchase.startSignUp' }), name: 'createTime', render: (t, r) => formatTimeString(r['registerStartTime']) + intl.formatMessage({ id: 'table.purchase.zhi' }) + formatTimeString(r['registerEndTime']) },
{ title: intl.formatMessage({ id: 'detail.purchase.signUpLayout' }), name: 'registerRequirement' },
]
},
......@@ -292,7 +292,7 @@ const DescriptionsInfo: React.FC<BasicInfoProps> = ({ cardTitle, type }) => {
{
span: 8,
fieldList: [
{ title: intl.formatMessage({ id: 'table.purchase.zigeyushenshi' }), name: 'createTime', render: (t, r) => formatTimeString(r['preCheckStartTime']) + '至' + formatTimeString(r['preCheckEndTime']) },
{ title: intl.formatMessage({ id: 'table.purchase.zigeyushenshi' }), name: 'createTime', render: (t, r) => formatTimeString(r['preCheckStartTime']) + intl.formatMessage({ id: 'table.purchase.zhi' }) + formatTimeString(r['preCheckEndTime']) },
{ title: intl.formatMessage({ id: 'table.purchase.zigeyushenyao1' }), name: 'preCheckRequirement' },
]
},
......@@ -318,7 +318,7 @@ const DescriptionsInfo: React.FC<BasicInfoProps> = ({ cardTitle, type }) => {
span: 8,
fieldList: [
{
title: intl.formatMessage({ id: 'table.purchase.zigeyushenyao', defaultMessage: '资格预审要求附件' }),
title: intl.formatMessage({ id: 'table.purchase.zigeyushenyao' }),
name: 'qualificationsFile',
render: (t, r) => (<div>
{
......@@ -335,7 +335,7 @@ const DescriptionsInfo: React.FC<BasicInfoProps> = ({ cardTitle, type }) => {
{
span: 8,
fieldList: [
{ title: intl.formatMessage({ id: 'table.purchase.pingbiaoyaoqiushi' }), name: 'createTime', render: (t, r) => formatTimeString(r['evaluationStartTime']) + '至' + formatTimeString(r['evaluationEndTime']) },
{ title: intl.formatMessage({ id: 'table.purchase.pingbiaoyaoqiushi' }), name: 'createTime', render: (t, r) => formatTimeString(r['evaluationStartTime']) + intl.formatMessage({ id: 'table.purchase.zhi' }) + formatTimeString(r['evaluationEndTime']) },
{ title: intl.formatMessage({ id: 'table.purchase.pingbiaoyaoqiu' }), name: 'evaluationRequirement' },
]
},
......
......@@ -16,7 +16,7 @@ export interface MemberWinInfoProps {
cardTitle?: string;
}
const MemberWinInfo: React.FC<MemberWinInfoProps> = ({cardTitle}) => {
const MemberWinInfo: React.FC<MemberWinInfoProps> = ({ cardTitle }) => {
const bidDetailContext = useContext(BidDetailContext)
const { data, ctl } = bidDetailContext
......@@ -25,32 +25,32 @@ const MemberWinInfo: React.FC<MemberWinInfoProps> = ({cardTitle}) => {
return (
<MellowCard
title={cardTitle}
style={{marginTop: 24}}
style={{ marginTop: 24 }}
bordered={false}
fullHeight
>
<div className={style.remarkBidReportWrapper}>
<div className={style.bidMemberContainer}>
<h3 className="commonPanelTitle">中标会员</h3>
<h3 className="commonPanelTitle">{intl.formatMessage({ id: 'table.purchase.zhongbiaohuiyuan' })}</h3>
<Row gutter={[16, 0]}>
<Col span={6}>
<div className={style['card-list']}>
<h4>广州室间隔度过后工地</h4>
<h4>{intl.formatMessage({ id: 'table.purchase.guangzhoushijiange' })}</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: 'table.purchase.zhongbiaozongjine1' })}:</p></Col>
<Col><p className={style.amount}>¥160,000.00</p></Col>
</Row>
<img src={winBid} alt="已中标"/>
<img src={winBid} alt={intl.formatMessage({ id: 'table.purchase.yizhongbiao' })} />
</div>
</Col>
<Col span={6}>
<div className={style['card-list']}>
<h4>广州室间隔度过后工地</h4>
<h4>{intl.formatMessage({ id: 'table.purchase.guangzhoushijiange' })}</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: 'table.purchase.zhongbiaozongjine1' })}:</p></Col>
<Col><p className={style.amount}>¥160,000.00</p></Col>
</Row>
<img src={winBid} alt="已中标"/>
<img src={winBid} alt={intl.formatMessage({ id: 'table.purchase.yizhongbiao' })} />
</div>
</Col>
</Row>
......@@ -63,7 +63,7 @@ const MemberWinInfo: React.FC<MemberWinInfoProps> = ({cardTitle}) => {
<div className={style['card-list']}>
<Row>
<Col span={8}><p className={style['card-list_title']}>{intl.formatMessage({ id: 'detail.purchase.label1' })}</p></Col>
<Col><p>七天无理由中标</p></Col>
<Col><p>{intl.formatMessage({ id: 'table.purchase.qitianwuliyou' })}</p></Col>
</Row>
<Row>
<Col span={8}><p className={style['card-list_title']}>{intl.formatMessage({ id: 'table.purchase.zhongbiaofujian' })}</p></Col>
......
......@@ -16,14 +16,14 @@ export interface RegisterInfoListProps {
type?: string;
}
const RegisterInfoList: React.FC<RegisterInfoListProps> = ({cardTitle, type="registerList"}) => {
const RegisterInfoList: React.FC<RegisterInfoListProps> = ({ cardTitle, type = "registerList" }) => {
const bidDetailContext = useContext(BidDetailContext)
const { data, ctl } = bidDetailContext
return (
<MellowCard
title={cardTitle}
style={{marginTop: 24}}
style={{ marginTop: 24 }}
bordered={false}
fullHeight
>
......@@ -36,23 +36,23 @@ const RegisterInfoList: React.FC<RegisterInfoListProps> = ({cardTitle, type="reg
<div className={style['card-list']}>
<h4><span className={style['badge']}>{++index}</span>{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: 'table.purchase.lianxirenxingming' })}:</p></Col>
<Col><p>{item.submitTenderRegister.name}</p></Col>
</Row>
<Row>
<Col span={8}><p className={style['card-list_title']}>联系人手机:</p></Col>
<Col span={8}><p className={style['card-list_title']}>{intl.formatMessage({ id: 'table.purchase.lianxirenshouji' })}:</p></Col>
<Col><p>{item.submitTenderRegister.phone}</p></Col>
</Row>
<Row>
<Col span={8}><p className={style['card-list_title']}>联系人邮箱:</p></Col>
<Col span={8}><p className={style['card-list_title']}>{intl.formatMessage({ id: 'table.purchase.lianxirenyouxiang' })}:</p></Col>
<Col><p>{item.submitTenderRegister.email}</p></Col>
</Row>
<Row>
<Col span={8}><p className={style['card-list_title']}>地址:</p></Col>
<Col span={8}><p className={style['card-list_title']}>{intl.formatMessage({ id: 'table.purchase.dizhi' })}:</p></Col>
<Col><p>{`${item.submitTenderRegister.provinceName}${item.submitTenderRegister.cityName}${item.submitTenderRegister.regionName}${item.submitTenderRegister.address}`}</p></Col>
</Row>
<Row>
<Col span={8}><p className={style['card-list_title']}>报名文件:</p></Col>
<Col span={8}><p className={style['card-list_title']}>{intl.formatMessage({ id: 'table.purchase.baomingwenjian' })}:</p></Col>
<Col>
<p>
{
......@@ -66,28 +66,28 @@ const RegisterInfoList: React.FC<RegisterInfoListProps> = ({cardTitle, type="reg
}
</Row>
</div>
:
<div className={style.bidMemberContainer}>
<Row gutter={[16, 0]}>
{
data && data.memberList.length ? data.memberList.map((item, index) => (<Col span={6}>
<div className={style['card-list']}>
<h4><span className={style['badge']}>{++index}</span>{item.memberName}</h4>
<Row>
<Col span={8}><p className={style['card-list_title']}>资格预审文件:</p></Col>
<Col>
<p>
{
item?.qualificationsFile?.length ? item.qualificationsFile.map(_item => (<a key={_item.id} href={_item.url} target="_blank">{_item.name}</a>)) : null
}
</p>
</Col>
</Row>
</div>
</Col>)) : null
}
</Row>
</div>
:
<div className={style.bidMemberContainer}>
<Row gutter={[16, 0]}>
{
data && data.memberList.length ? data.memberList.map((item, index) => (<Col span={6}>
<div className={style['card-list']}>
<h4><span className={style['badge']}>{++index}</span>{item.memberName}</h4>
<Row>
<Col span={8}><p className={style['card-list_title']}>{intl.formatMessage({ id: 'table.purchase.zigeyushenwen' })}:</p></Col>
<Col>
<p>
{
item?.qualificationsFile?.length ? item.qualificationsFile.map(_item => (<a key={_item.id} href={_item.url} target="_blank">{_item.name}</a>)) : null
}
</p>
</Col>
</Row>
</div>
</Col>)) : null
}
</Row>
</div>
}
</div>
</MellowCard>)
......
......@@ -72,7 +72,7 @@ const TransferProcess: React.FC<TransferProcessProp> = ({
bordered={false}
extra={
<Radio.Group value={transferRadio} buttonStyle="solid" size="small" onChange={handleChangeType}>
{outerVerifySteps?.length ? <Radio.Button value={TransferEnum.Outer}>外部流转</Radio.Button> : null}
{outerVerifySteps?.length ? <Radio.Button value={TransferEnum.Outer}>{intl.formatMessage({ id: 'table.purchase.waibuliuzhuan' })}</Radio.Button> : null}
{innerVerifySteps?.length ? <Radio.Button value={TransferEnum.Interior}>{intl.formatMessage({ id: 'detail.purchase.interiorLogStates' })}</Radio.Button> : null}
</Radio.Group>
}
......
......@@ -119,7 +119,7 @@ export const baseBidListColumns: any[] = [
width: 200
},
{
title: '投标开始/截止时间',
title: intl.formatMessage({ id: 'table.purchase.inviteTenderStartTime' }),
align: 'left',
dataIndex: 'createTime',
key: 'createTime',
......@@ -172,7 +172,7 @@ export const baseTenderListColumns: any[] = [
</>
},
{
title: '投标开始/截止时间',
title: intl.formatMessage({ id: 'table.purchase.inviteTenderStartTime' }),
align: 'left',
dataIndex: 'inviteTender',
key: 'inviteTender',
......
......@@ -49,25 +49,25 @@ export const columnsSetMember: any[] = [
key: 'memberId',
},
{
title: '会员名称',
title: intl.formatMessage({ id: 'detail.purchase.memberName' }),
dataIndex: 'name',
align: 'center',
key: 'name',
},
{
title: '会员类型',
title: intl.formatMessage({ id: 'detail.purchase.memberType' }),
dataIndex: 'memberTypeName',
align: 'center',
key: 'memberTypeName',
},
{
title: '会员角色',
title: intl.formatMessage({ id: 'detail.purchase.role' }),
dataIndex: 'roleName',
align: 'center',
key: 'roleName',
},
{
title: '会员等级',
title: intl.formatMessage({ id: 'detail.purchase.leveTag' }),
dataIndex: 'levelTag',
align: 'center',
key: 'levelTag',
......
......@@ -76,11 +76,11 @@ const AddBidRegister:React.FC<AddBidRegisterProps> = (props) => {
<PageHeaderWrapper
style={{margin: 0}}
onBack={() => history.goBack()}
backIcon={<ReutrnEle description="返回"/>}
title="招标报名"
backIcon={<ReutrnEle description={intl.formatMessage({ id: 'table.purchase.fanhui' })}/>}
title={intl.formatMessage({ id: 'table.purchase.zhaobiaobaoming' })}
extra={[
<Button key="1" onClick={() => addSchemaAction.submit()} loading={btnLoading} type="primary" icon={<SaveOutlined />}>
保存
{intl.formatMessage({ id: 'table.purchase.baocun' })}
</Button>,
]}
>
......
......@@ -34,7 +34,7 @@ export const formSchema: ISchema = {
properties: {
inviteTenderId: {
type: 'string',
title: '招标ID',
title: intl.formatMessage({ id: 'table.purchase.zhaobiaoID' }),
readOnly: true,
visible: false,
},
......@@ -45,17 +45,17 @@ export const formSchema: ISchema = {
},
remark: {
type: 'string',
title: '招标摘要',
title: intl.formatMessage({ id: 'table.purchase.zhaobiaozhaiyao' }),
readOnly: true,
},
memberName: {
type: 'string',
title: '招标会员',
title: intl.formatMessage({ id: 'table.purchase.zhaobiaohuiyuan' }),
readOnly: true,
},
inviteTenderArea: {
type: 'string',
title: '适用城市',
title: intl.formatMessage({ id: 'table.purchase.shiyongchengshi' }),
readOnly: true,
},
createTime: {
......@@ -81,7 +81,7 @@ export const formSchema: ISchema = {
"type": "object",
"x-component": "tabpane",
"x-component-props": {
"tab": "报名要求"
"tab": intl.formatMessage({ id: 'table.purchase.baomingyaoqiu' })
},
properties: {
MEGA_LAYOUT2: {
......@@ -95,7 +95,7 @@ export const formSchema: ISchema = {
properties: {
'[registerStartTime, registerEndTime]': {
type: 'string',
title: '报名时间要求',
title: intl.formatMessage({ id: 'table.purchase.baomingshijianyao'}),
"x-component": 'daterange',
"x-component-props": {
showTime: true,
......@@ -105,11 +105,11 @@ export const formSchema: ISchema = {
},
registerRequirement: {
type: 'string',
title: '报名要求说明',
title: intl.formatMessage({ id: 'table.purchase.baomingyaoqiushuo' }),
readOnly: true,
},
registerNeedFile: {
title: '报名要求附件',
title: intl.formatMessage({ id: 'table.purchase.baomingyaoqiufu' }),
'x-component': 'FixUpload',
readOnly: true,
},
......@@ -121,7 +121,7 @@ export const formSchema: ISchema = {
type: "object",
"x-component": "tabpane",
"x-component-props": {
"tab": "报名信息"
"tab": intl.formatMessage({ id: 'table.purchase.baomingxinxi' })
},
properties: {
MEGA_LAYOUT3: {
......@@ -140,11 +140,11 @@ export const formSchema: ISchema = {
},
name: {
type: 'string',
title: '联系人姓名',
title: intl.formatMessage({ id: 'table.purchase.lianxirenxingming' }),
"x-rules": [
{
required: true,
message: '请填写联系人姓名'
message: intl.formatMessage({ id: 'table.purchase.qingtianxielianxi2' })
},
{
limitByte: true,
......@@ -152,14 +152,14 @@ export const formSchema: ISchema = {
}
],
"x-component-props": {
placeholder: "请填写联系人姓名,最长12个字符",
placeholder: intl.formatMessage({ id: 'table.purchase.qingtianxielianxi' }),
}
},
MEGA_LAYOUT3_1: {
type: 'object',
'x-component': 'Mega-Layout',
'x-component-props': {
label: '联系人电话',
label: intl.formatMessage({ id: 'table.purchase.lianxirendianhua' }),
required: true,
wrapperCol: 24,
className: "clearParentMargin"
......@@ -177,7 +177,7 @@ export const formSchema: ISchema = {
type: 'string',
enum: [],
'x-component-props': {
placeholder: '请选择',
placeholder: intl.formatMessage({ id: 'table.purchase.qingxuanze' }),
},
required: true,
},
......@@ -188,13 +188,13 @@ export const formSchema: ISchema = {
span: 2,
},
'x-component-props': {
placeholder: '请输入手机号码',
placeholder: intl.formatMessage({ id: 'table.purchase.qingshurushouji' }),
maxLength: 11,
},
'x-rules': [
{
pattern: PATTERN_MAPS.phone,
message: '请输入正确格式的手机号',
message: intl.formatMessage({ id: 'table.purchase.qingshuruzhengque1' }),
},
],
},
......@@ -204,15 +204,15 @@ export const formSchema: ISchema = {
},
email: {
type: 'string',
title: '电子邮箱',
title: intl.formatMessage({ id: 'table.purchase.dianziyouxiang' }),
required: true,
'x-component-props': {
placeholder: '请输入电子邮箱',
placeholder: intl.formatMessage({ id: 'table.purchase.qingshurudianzi' }),
},
'x-rules': [
{
pattern: PATTERN_MAPS.email,
message: '请输入正确格式的邮箱',
message: intl.formatMessage({ id: 'table.purchase.qingshuruzhengque' }),
},
],
},
......@@ -220,7 +220,7 @@ export const formSchema: ISchema = {
type: 'object',
'x-component': 'Mega-Layout',
'x-component-props': {
label: '地址',
label: intl.formatMessage({ id: 'table.purchase.dizhi' }),
required: true,
wrapperCol: 24,
},
......@@ -239,8 +239,8 @@ export const formSchema: ISchema = {
},
'x-component': 'CustomAddress',
'x-component-props': {
placeholder: '选择单位地址',
warningText: '请完善所在地区',
placeholder: intl.formatMessage({ id: 'table.purchase.xuanzedanweidi' }),
warningText: intl.formatMessage({ id: 'table.purchase.qingwanshansuozai' }),
},
// default: [{ provinceCode: null, province: null, cityCode: null, city: null, areaCode: null, area: null }],
required: true,
......@@ -251,13 +251,13 @@ export const formSchema: ISchema = {
span: 1
},
'x-component-props': {
placeholder: '请填写详细地址,路名、门牌号等,最长100个字符,50个汉字',
placeholder: intl.formatMessage({ id: 'detail.purchase.placeholder15' }),
},
required: true,
"x-rules": [
{
required: true,
message: '请填写详细地址',
message: intl.formatMessage({ id: 'table.purchase.qingtianxiexiangxi' }),
},
{
limitByte: true,
......@@ -277,7 +277,7 @@ export const formSchema: ISchema = {
type: "object",
"x-component": "tabpane",
"x-component-props": {
"tab": "报名文件"
"tab": intl.formatMessage({ id: 'table.purchase.baomingwenjian' })
},
properties: {
MEGA_LAYOUT4: {
......
......@@ -11,7 +11,7 @@ export const formSearch: ISchema = {
type: 'string',
'x-component': 'ModalSearch',
'x-component-props': {
placeholder: '请输入会员名字',
placeholder: intl.formatMessage({ id: 'table.purchase.qingshuruhuiyuan' }),
align: 'flex-left',
advanced: false,
},
......
......@@ -87,14 +87,14 @@ export const ProductTableCell:React.FC<ProductTableCellProps> = ({
rules={[
{
required: true,
message: `${title}必须填写`,
message: `${title}${intl.formatMessage({ id: 'table.purchase.bixutianxie' })}}`,
},
dataIndex === 'price' ? {
pattern: /^\d+(\.\d{1,4})?$/,
message: `单价仅限四位小数`,
message: intl.formatMessage({ id: 'table.purchase.danjiajinxiansi' }),
} : {
pattern: /^\d+(\.\d{1,2})?$/,
message: `税率仅限两位小数`,
message: intl.formatMessage({ id: 'table.purchase.shuilüjinxianliang' }),
},
]}
>
......
......@@ -70,25 +70,25 @@ export const columnsSetMember: any[] = [
key: 'memberId',
},
{
title: '会员名称',
title: intl.formatMessage({ id: 'detail.purchase.memberName' }),
dataIndex: 'name',
align: 'center',
key: 'name',
},
{
title: '会员类型',
title: intl.formatMessage({ id: 'detail.purchase.memberType' }),
dataIndex: 'memberTypeName',
align: 'center',
key: 'memberTypeName',
},
{
title: '会员角色',
title: intl.formatMessage({ id: 'detail.purchase.role' }),
dataIndex: 'roleName',
align: 'center',
key: 'roleName',
},
{
title: '会员等级',
title: intl.formatMessage({ id: 'detail.purchase.leveTag' }),
dataIndex: 'levelTag',
align: 'center',
key: 'levelTag',
......@@ -107,46 +107,46 @@ export const productInfoColumns: any[] = [
className: 'commonHide',
},
{
title: '物料编号/名称',
title: intl.formatMessage({ id: 'detail.purchase.type' }),
dataIndex: 'code',
align: 'left',
key: 'code',
render: (t, r) => <><div>{t}</div><div>{r.name}</div></>
},
{
title: '规格',
title: intl.formatMessage({ id: 'detail.purchase.size' }),
dataIndex: 'type',
align: 'left',
key: 'type',
},
{
title: '品类',
title: intl.formatMessage({ id: 'table.purchase.pinlei' }),
dataIndex: 'categoryName',
align: 'left',
key: 'categoryName',
},
{
title: '品牌',
title: intl.formatMessage({ id: 'table.purchase.pinpai' }),
dataIndex: 'brandName',
align: 'left',
key: 'brandName',
},
{
title: '采购数量/单位',
title: intl.formatMessage({ id: 'table.purchase.caigoushuliangdanwei' }),
dataIndex: 'count',
align: 'left',
key: 'count',
render: (t, r) => <><div>{t}</div><div>{r.unitName}</div></>
},
{
title: '含税',
title: intl.formatMessage({ id: 'detail.purchase.isTax' }),
dataIndex: 'isTax',
align: 'left',
key: 'isTax',
render: (t, r) => t ? intl.formatMessage({ id: 'table.purchase.shi' }) : intl.formatMessage({ id: 'table.purchase.fou' })
},
{
title: '税率',
title: intl.formatMessage({ id: 'detail.purchase.taxProbability' }),
dataIndex: 'taxRate',
align: 'left',
key: 'taxRate',
......@@ -158,7 +158,7 @@ export const productInfoColumns: any[] = [
},
},
{
title: '单价(含税)',
title: intl.formatMessage({ id: 'detail.purchase.taxUnitPrice' }),
dataIndex: 'price',
align: 'left',
key: 'price',
......@@ -170,7 +170,7 @@ export const productInfoColumns: any[] = [
},
},
{
title: '金额(含税)',
title: intl.formatMessage({ id: 'detail.purchase.taxPrice' }),
dataIndex: 'money',
align: 'left',
key: 'money',
......
......@@ -93,7 +93,7 @@ const AddTender:React.FC<AddTenderProps> = (props) => {
})
if(!judgementByCount || judgementByCount.includes(false)){
setBtnLoading(false)
return message.error('请填写商品单价')
return message.error(intl.formatMessage({ id: 'table.purchase.qingtianxieshangpin' }))
}
if(value?.id) params.id = value.id
const res = await postPurchaseSubmitTenderSaveSubmitTender(params)
......@@ -120,11 +120,11 @@ const AddTender:React.FC<AddTenderProps> = (props) => {
<PageHeaderWrapper
style={{margin: 0}}
onBack={() => history.goBack()}
backIcon={<ReutrnEle description="返回"/>}
title="新建投标"
backIcon={<ReutrnEle description={intl.formatMessage({ id: 'table.purchase.fanhui' })}/>}
title={intl.formatMessage({ id: 'table.purchase.xinjiantoubiao' })}
extra={[
<Button key="1" onClick={() => addSchemaAction.submit()} loading={btnLoading} type="primary" icon={<SaveOutlined />}>
保存
{intl.formatMessage({ id: 'table.purchase.baocun' })}
</Button>,
]}
>
......@@ -170,7 +170,7 @@ const AddTender:React.FC<AddTenderProps> = (props) => {
{/* 关联投标商品 */}
<RelevanceTenderProduct
title="关联投标商品"
title={intl.formatMessage({ id: 'table.purchase.guanliantoubiaoshang' })}
currentRef={productRef}
schemaAction={addSchemaAction}
/>
......
......@@ -42,7 +42,7 @@ export const useProductTable = (ctx: ISchemaFormActions | ISchemaFormAsyncAction
const [productColumns, setProductColumns] = useState(() => {
productInfoColumns[productInfoColumns.length - 1].render = (t, r) => {
return <Button type='link' onClick={() => clickRelevance(r)}>关联投标商品</Button>
return <Button type='link' onClick={() => clickRelevance(r)}>{intl.formatMessage({ id: 'table.purchase.guanliantoubiaoshang' })}</Button>
}
return productInfoColumns
......@@ -70,8 +70,8 @@ export const useProductTable = (ctx: ISchemaFormActions | ISchemaFormAsyncAction
// thead总计变动
let _ = [...productInfoColumns]
_[_.length - 2]['title'] = <>
<div>金额(含税)</div>
<div>总计:¥<span style={{fontWeight: 'bolder'}}>{newData.reduce((prev, next) => (prev*100 + (next.money || 0)*100)/100, 0)}</span></div>
<div>{intl.formatMessage({ id: 'detail.purchase.taxPrice' })}</div>
<div>{intl.formatMessage({ id: 'table.purchase.zongji' })}:¥<span style={{fontWeight: 'bolder'}}>{newData.reduce((prev, next) => (prev*100 + (next.money || 0)*100)/100, 0)}</span></div>
</>
setProductColumns(_)
......@@ -114,14 +114,14 @@ export const useProductTable = (ctx: ISchemaFormActions | ISchemaFormAsyncAction
<Row>
<Col span={3}>
<div className={style.childrenTitle}>
<p>对应</p>
<p>投标商品</p>
<p>{intl.formatMessage({ id: 'detail.purchase.correspondence' })}</p>
<p>{intl.formatMessage({ id: 'table.purchase.toubiaoshangpin' })}</p>
</div>
</Col>
<Col span={6}>
<div className={style.childrenContent}>
<p><span>商品编号:</span>{data.code}</p>
<p><span>商品名称:</span>{data.name}</p>
<p><span>{intl.formatMessage({ id: 'table.purchase.shangpinbianhao' })}:</span>{data.code}</p>
<p><span>{intl.formatMessage({ id: 'table.purchase.shangpinmingcheng' })}:</span>{data.name}</p>
</div>
</Col>
<Col span={6}>
......
......@@ -34,12 +34,12 @@ export const formSchema: ISchema = {
properties: {
submitTenderCode: {
type: 'string',
title: '投标编号',
title: intl.formatMessage({ id: 'table.purchase.toubiaobianhao' }),
readOnly: true,
},
projectName: {
type: 'string',
title: '投标项目',
title: intl.formatMessage({ id: 'table.purchase.toubiaoxiangmu' }),
readOnly: true,
},
inviterTenderCode: {
......@@ -50,7 +50,7 @@ export const formSchema: ISchema = {
},
memberName: {
type: 'string',
title: '招标会员',
title: intl.formatMessage({ id: 'table.purchase.zhaobiaohuiyuan' }),
readOnly: true,
},
// inviteTenderAreaList: {
......@@ -66,7 +66,7 @@ export const formSchema: ISchema = {
// },
inviteTenderAreaList: {
type: 'string',
title: '适用城市',
title: intl.formatMessage({ id: 'table.purchase.shiyongchengshi' }),
readOnly: true,
},
inviteTenderOutStatus: {
......@@ -221,7 +221,7 @@ export const formSchema: ISchema = {
type: "object",
"x-component": "tabpane",
"x-component-props": {
"tab": "投标商品"
"tab": intl.formatMessage({ id: 'table.purchase.toubiaoshangpin' })
},
properties: {
MEGA_LAYOUT4: {
......@@ -252,7 +252,7 @@ export const formSchema: ISchema = {
type: "object",
"x-component": "tabpane",
"x-component-props": {
"tab": "投标其他信息"
"tab": intl.formatMessage({ id: 'table.purchase.toubiaoqitaxin' })
},
properties: {
MEGA_LAYOUT5: {
......@@ -265,10 +265,10 @@ export const formSchema: ISchema = {
},
properties: {
remark: {
title: '投标摘要',
title: intl.formatMessage({ id: 'table.purchase.toubiaozhaiyao' }),
type: 'textarea',
'x-component-props': {
placeholder: '最长200个字符,100个汉字'
placeholder: intl.formatMessage({ id: 'detail.purchase.placeholder8' })
},
"x-rules": [
{
......@@ -278,7 +278,7 @@ export const formSchema: ISchema = {
]
},
file: {
title: '投标文件',
title: intl.formatMessage({ id: 'table.purchase.toubiaowenjian' }),
'x-component': 'FixUpload',
'x-component-props': {
action: '/api/file/file/upload/prefix',
......
......@@ -25,7 +25,7 @@ export const relevanceSchema: ISchema = {
properties:{
bidMaterial: {
type: "object",
title: "对应招标物料",
title: intl.formatMessage({ id: 'table.purchase.duiyingzhaobiaowu' }),
"x-component": "CustomLayout",
"x-component-props": {
headerBackgroundColor: '#E4F7EF',
......@@ -34,7 +34,7 @@ export const relevanceSchema: ISchema = {
},
tenderProduct: {
type: "object",
title: "投标商品",
title: intl.formatMessage({ id: 'table.purchase.toubiaoshangpin' }),
"x-component": "CustomLayout",
"x-component-props": {
showStar: true,
......@@ -52,11 +52,11 @@ export const relevanceSchema: ISchema = {
"x-index": 99,
"x-component": "CustomTitle",
"x-component-props": {
text: "附件"
text: intl.formatMessage({ id: 'table.purchase.fujian' })
},
properties: {
file: {
title: '附件',
title: intl.formatMessage({ id: 'table.purchase.fujian' }),
'x-component': 'FixUpload',
'x-component-props': {
action: '/api/file/file/upload/prefix',
......@@ -88,7 +88,7 @@ export const productSearch: ISchema = {
type: 'string',
'x-component': 'ModalSearch',
'x-component-props': {
placeholder: '商品名称',
placeholder: intl.formatMessage({ id: 'detail.purchase.goodstName' }),
align: 'flex-left',
},
},
......@@ -113,7 +113,7 @@ export const productSearch: ISchema = {
type: 'string',
'x-component': 'CustomInputSearch',
'x-component-props': {
placeholder: '商品品牌',
placeholder: intl.formatMessage({ id: 'table.purchase.shangpinpinpai' }),
showSearch: true,
showArrow: true,
defaultActiveFirstOption: false,
......@@ -128,7 +128,7 @@ export const productSearch: ISchema = {
type: 'string',
'x-component': 'CustomCategorySearch',
'x-component-props': {
placeholder: '商品品类',
placeholder: intl.formatMessage({ id: 'table.purchase.shangpinpinlei' }),
showSearch: true,
notFoundContent: null,
style: { width: '174px' },
......
......@@ -24,7 +24,7 @@ const CallForBidsSearchDetailInTender: React.FC = () => {
{ 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.zigezhengmingwen' }), id: 'checkQualifyFile', type: "checkQualifyFile" },
{ title: intl.formatMessage({ id: 'table.purchase.qitayaoqiu' }), id: 'otherNeed', type: "otherNeed" },
{ title: intl.formatMessage({ id: 'table.purchase.liuzhuanjilu' }), id: 'transferRecord', componentName: "BidTransformRecord" },
]
......@@ -37,7 +37,7 @@ const CallForBidsSearchDetailInTender: React.FC = () => {
// 勾选资格预审 才有资格预审信息
if(!data?.inviteTender?.isQualificationCheck) {
anchorTitleList.forEach((ele, index) => ele['title'] === intl.formatMessage({ id: 'table.purchase.zigeyushenyao' }) && anchorTitleList.splice(index, 1))
anchorTitleList.forEach((ele, index) => ele['title'] === '资格证明文件' && anchorTitleList.splice(index, 1))
anchorTitleList.forEach((ele, index) => ele['title'] === intl.formatMessage({ id: 'table.purchase.zigezhengmingwen' }) && anchorTitleList.splice(index, 1))
}
return (
......
......@@ -46,7 +46,7 @@ export const useSelfTable = () => {
// render: (t) => CALLFORBID_TYPE[t]
// },
{
title: '招标会员',
title: intl.formatMessage({ id: 'table.purchase.zhaobiaohuiyuan' }),
align: 'left',
dataIndex: 'memberName',
key: 'memberName',
......@@ -78,7 +78,7 @@ export const useSelfTable = () => {
width: 180
},
// {
// title: '资格预审开始/截止时间',
// title: intl.formatMessage({ id: 'table.purchase.preCheckStartTime' }),
// align: 'left',
// dataIndex: 'checkStartTime',
// key: 'checkStartTime',
......@@ -89,7 +89,7 @@ export const useSelfTable = () => {
// width: 180
// },
{
title: '投标开始/截止时间',
title: intl.formatMessage({ id: 'table.purchase.inviteTenderStartTime' }),
align: 'left',
dataIndex: 'inviteTenderStartTime',
key: 'inviteTenderStartTime',
......
......@@ -24,7 +24,7 @@ const FirstCheckedTenderDetail: React.FC = () => {
{ title: intl.formatMessage({ id: 'table.purchase.jibenxinxi' }), id: 'baseicInfo', type: "basicInfo" },
// { title: '投标要求', id: 'bidNeed', type: "bidNeed" },
// { title: '投标其他要求', id: 'otherNeed', type: "otherNeed" },
{ title: '投标商品', id: 'bidParticulars', componentName: "BidParticulars" },
{ title: intl.formatMessage({ id: 'table.purchase.toubiaoshangpin' }), id: 'bidParticulars', componentName: "BidParticulars" },
{ title: intl.formatMessage({ id: 'table.purchase.liuzhuanjilu' }), id: 'transferRecord', componentName: "BidTransformRecord" },
]
......
......@@ -16,7 +16,7 @@ const intl = getIntl();
// 一级待审核 投标
export interface FirstCheckedTenderProps {}
export interface FirstCheckedTenderProps { }
const fetchTableData = async (params) => {
const { data } = await postPurchaseSubmitTenderGetCheckSubmitTenderList({
......@@ -25,7 +25,7 @@ const fetchTableData = async (params) => {
return data
}
const FirstCheckedTender:React.FC<FirstCheckedTenderProps> = (props) => {
const FirstCheckedTender: React.FC<FirstCheckedTenderProps> = (props) => {
const {
columns,
ref,
......@@ -37,17 +37,17 @@ const FirstCheckedTender:React.FC<FirstCheckedTenderProps> = (props) => {
const handleSubmitBatch = async () => {
if (rowSelectionCtl.selectRow.length === 0) {
message.error('请先选择投标')
return ;
message.error(intl.formatMessage({ id: 'table.purchase.qingxianxuanzetou' }))
return;
}
// const canBitch = !rowSelectionCtl.selectRow.some(v => v.submitTenderInStatus !== TenderInsideWorkState.Submitted_Check_Submit_Tender)
// if (canBitch) {
const { code } = await run({idList: rowSelectionCtl.selectedRowKeys})
if (code === 1000) {
ref.current.reload()
rowSelectionCtl.setSelectRow([])
rowSelectionCtl.setSelectedRowKeys([])
}
const { code } = await run({ idList: rowSelectionCtl.selectedRowKeys })
if (code === 1000) {
ref.current.reload()
rowSelectionCtl.setSelectRow([])
rowSelectionCtl.setSelectedRowKeys([])
}
// } else {
// message.error('只能批量提交内部状态为已提交审核投标的招标')
// }
......
......@@ -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.audit' })}</Button>
}
])
......
......@@ -33,7 +33,7 @@ const ReadyAddTender:React.FC<ReadyAddTenderProps> = () => {
const handleBitchPush = async () => {
// const canBitch = !rowSelectionCtl.selectRow.some(v => v.submitTenderInStatus !== TenderInsideWorkState.Not_Submitted_Check_Submit_Tender)
if(!rowSelectionCtl.selectRow.length) return message.error('请先选择投标')
if(!rowSelectionCtl.selectRow.length) return message.error(intl.formatMessage({ id: 'table.purchase.qingxianxuanzetou' }))
// if (canBitch) {
const { code } = await run({idList: rowSelectionCtl.selectedRowKeys})
if (code === 1000) {
......
......@@ -36,9 +36,9 @@ export const useSelfTable = () => {
return <>
{
record.isSubmitCheck && <Button type='link' onClick={() => handleSubmit(record)}>提交</Button>
record.isSubmitCheck && <Button type='link' onClick={() => handleSubmit(record)}>{intl.formatMessage({ id: 'table.purchase.submit' })}</Button>
}
<Button type='link' onClick={() => handleEdit(record)}>修改</Button>
<Button type='link' onClick={() => handleEdit(record)}>{intl.formatMessage({ id: 'table.purchase.eidt' })}</Button>
</>
}
}
......
......@@ -35,7 +35,7 @@ export const useSelfTable = () => {
</>
},
{
title: '招标会员',
title: intl.formatMessage({ id: 'table.purchase.zhaobiaohuiyuan' }),
align: 'left',
dataIndex: 'inviteTender',
key: 'inviteTender',
......@@ -90,10 +90,10 @@ export const useSelfTable = () => {
render: (text, record) => {
return <>
{
record.isRegister && <Button type='link' onClick={() => handleSubmit(record.inviteTender.id)}>报名</Button>
record.isRegister && <Button type='link' onClick={() => handleSubmit(record.inviteTender.id)}>{intl.formatMessage({ id: 'detail.purchase.label14' })}</Button>
}
{
record.isReRegister && <Button type='link' onClick={() => handleSubmit(record.inviteTender.id)}>重新报名</Button>
record.isReRegister && <Button type='link' onClick={() => handleSubmit(record.inviteTender.id)}>{intl.formatMessage({ id: 'detail.purchase.label15' })}</Button>
}
</>
}
......
......@@ -64,7 +64,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' },
]
......@@ -82,7 +82,7 @@ const ReadyQualifityCheckedDetail: React.FC = () => {
fileList,
onChange(info) {
if (info.file.status === 'error') {
message.error(`${info.file.name} 上传失败`);
message.error(`${info.file.name} ${intl.formatMessage({ id: 'table.purchase.shangchuanshibai' })}`);
}
setFileList(() => info.fileList.map(item => {
if(item?.response) {
......@@ -99,7 +99,7 @@ const ReadyQualifityCheckedDetail: React.FC = () => {
},
beforeUpload(file) {
if(file.name.length > 100) {
message.warning('文件名过长');
message.warning(intl.formatMessage({ id: 'table.purchase.wenjianmingguochang' }));
return Promise.reject();
}
if (file.size / 1024 / 1024 > 20) {
......@@ -123,7 +123,7 @@ const ReadyQualifityCheckedDetail: React.FC = () => {
}
}).finally(() => setLoading(false))
} else {
message.error('请上传资格证明文件')
message.error(intl.formatMessage({ id: 'table.purchase.qingshangchuanzige' }))
}
}
......@@ -162,7 +162,7 @@ const ReadyQualifityCheckedDetail: React.FC = () => {
</Col>
<Col span={2}>
<Button type='primary' onClick={handleSubmit} loading={loading}>
提交
{intl.formatMessage({ id: 'table.purchase.tijiao' })}
</Button>
</Col>
</>
......@@ -176,7 +176,7 @@ const ReadyQualifityCheckedDetail: React.FC = () => {
<PreLoading loading={!formContext.data} active paragraph={{rows: 6}}>
<div id="transferProcess">
<TransferProcess
cardTitle="流转进度"
cardTitle={intl.formatMessage({ id: 'table.purchase.liuzhuanjindu' })}
customTitleKey='name'
customKey='id'
outerVerifyCurrent={findLastIndexFlowState(formContext?.externalWorkflowFlowRecordLogResponses || [])}
......@@ -203,18 +203,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>
{
fileList.map((item, index) => (<p key={index} className={style.fileItem}><a href={item.url}><FileFilled /> {item.name}</a> <span onClick={() => removeItem(item)}><DeleteOutlined /></span></p>))
......@@ -222,7 +222,7 @@ const ReadyQualifityCheckedDetail: React.FC = () => {
<Upload
{...uploadProps}
>
<Button icon={<UploadOutlined />}>上传附件</Button>
<Button icon={<UploadOutlined />}>{intl.formatMessage({ id: 'table.purchase.shangchuanfujian' })}</Button>
</Upload>
</Col>
</Row>
......@@ -230,7 +230,7 @@ const ReadyQualifityCheckedDetail: React.FC = () => {
</MellowCard>
</div>
<div id="transferRecord">
<BidTransformRecord cardTitle="流转记录" />
<BidTransformRecord cardTitle={intl.formatMessage({ id: 'table.purchase.liuzhuanjilu' })} />
</div>
</PreLoading>
</OrderDetailWrapper>
......
......@@ -34,7 +34,7 @@ export const useSelfTable = () => {
</>
},
{
title: '招标会员',
title: intl.formatMessage({ id: 'table.purchase.zhaobiaohuiyuan' }),
align: 'left',
dataIndex: 'inviteTender',
key: 'inviteTender',
......@@ -60,7 +60,7 @@ export const useSelfTable = () => {
// width: 180
// },
{
title: '资格预审开始/截止时间',
title: intl.formatMessage({ id: 'table.purchase.preCheckStartTime' }),
align: 'left',
dataIndex: 'createTime',
key: 'createTime',
......@@ -100,10 +100,10 @@ export const useSelfTable = () => {
render: (text, record) => {
return <>
{
record.isSubmitQualifications && <Button type='link' onClick={() => handleSubmit(record.id)}>提交</Button>
record.isSubmitQualifications && <Button type='link' onClick={() => handleSubmit(record.id)}>{intl.formatMessage({ id: 'table.purchase.tijiao' })}</Button>
}
{
record.isReSubmitQualifications && <Button type='link' onClick={() => handleSubmit(record.id)}>重新提交</Button>
record.isReSubmitQualifications && <Button type='link' onClick={() => handleSubmit(record.id)}>{intl.formatMessage({ id: 'table.purchase.chongxintijiao' })}</Button>
}
</>
}
......
......@@ -23,7 +23,7 @@ const ReadySubmitTenderDetail: React.FC = () => {
{ title: intl.formatMessage({ id: 'table.purchase.jibenxinxi' }), id: 'baseicInfo', type: "basicInfo" },
// { title: '投标要求', id: 'bidNeed', type: "bidNeed" },
// { title: '投标其他要求', id: 'otherNeed', type: "otherNeed" },
{ title: '投标商品', id: 'bidParticulars', componentName: "BidParticulars" },
{ title: intl.formatMessage({ id: 'table.purchase.toubiaoshangpin' }), id: 'bidParticulars', componentName: "BidParticulars" },
{ title: intl.formatMessage({ id: 'table.purchase.liuzhuanjilu' }), id: 'transferRecord', componentName: "BidTransformRecord" },
]
......
......@@ -37,7 +37,7 @@ const ReadySubmitTender:React.FC<ReadySubmitTenderProps> = (props) => {
const handleSubmitBatch = async () => {
if (rowSelectionCtl.selectRow.length === 0) {
message.error('请先选择投标')
message.error(intl.formatMessage({ id: 'table.purchase.qingxianxuanzetou' }))
return ;
}
// const canBitch = !rowSelectionCtl.selectRow.some(v => v.submitTenderInStatus !== TenderInsideWorkState.Not_Submitted_Submit_Tender)
......@@ -87,7 +87,7 @@ const ReadySubmitTender:React.FC<ReadySubmitTenderProps> = (props) => {
}}
formilyChilds={{
children: <Space>
<Button onClick={handleSubmitBatch} loading={loading}>批量提交投标</Button>
<Button onClick={handleSubmitBatch} loading={loading}>{intl.formatMessage({ id: 'table.purchase.piliangtijiaotou' })}</Button>
</Space>,
layouts: {
span: 8
......
......@@ -20,7 +20,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>
}
])
......
......@@ -25,7 +25,7 @@ const SecondCheckedTenderDetail: React.FC = () => {
{ title: intl.formatMessage({ id: 'table.purchase.jibenxinxi' }), id: 'baseicInfo', type: "basicInfo" },
// { title: '投标要求', id: 'bidNeed', type: "bidNeed" },
// { title: '投标其他要求', id: 'otherNeed', type: "otherNeed" },
{ title: '投标商品', id: 'bidParticulars', componentName: "BidParticulars" },
{ title: intl.formatMessage({ id: 'table.purchase.toubiaoshangpin' }), id: 'bidParticulars', componentName: "BidParticulars" },
{ title: intl.formatMessage({ id: 'table.purchase.liuzhuanjilu' }), id: 'transferRecord', componentName: "BidTransformRecord" },
]
......
......@@ -35,7 +35,7 @@ const SecondCheckedTender:React.FC<SecondCheckedTenderProps> = (props) => {
const handleSubmitBatch = async () => {
if (rowSelectionCtl.selectRow.length === 0) {
message.error('请先勾选单据')
message.error(intl.formatMessage({ id: 'table.purchase.qingxiangouxuandan' }))
return ;
}
// const canBitch = !rowSelectionCtl.selectRow.some(v => v.interiorState !== PurchaseOrderInsideWorkState.ONE_LEVEL_AUDIT_ORDER)
......
......@@ -23,7 +23,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.audit' })}</Button>
}
])
......
......@@ -18,12 +18,12 @@ const TenderSearchDetail: React.FC = () => {
const anchorTitleList = [
{ title: intl.formatMessage({ id: 'table.purchase.liuzhuanjindu' }), id: 'transferProcess', componentName: "TransferProcess" },
{ title: '中标结果', id: 'bidResult', type: "bidResult" },
{ title: '中标明细', id: 'bidParticulars', componentName: "BidParticulars" },
{ title: intl.formatMessage({ id: 'detail.purchase.winBidResultLayout' }), id: 'bidResult', type: "bidResult" },
{ title: intl.formatMessage({ id: 'table.purchase.zhongbiaomingxi' }), id: 'bidParticulars', componentName: "BidParticulars" },
{ title: intl.formatMessage({ id: 'table.purchase.jibenxinxi' }), id: 'baseicInfo', type: "basicInfo" },
// { title: '投标要求', id: 'tenderNeed', type: "bidNeed" },
// { title: '投标其他要求', id: 'tenderOtherNeed', type: "otherNeed" },
{ title: '投标物料', id: 'tenderParticulars', componentName: "BidParticulars" },
{ title: intl.formatMessage({ id: 'table.purchase.toubiaowuliao' }), id: 'tenderParticulars', componentName: "BidParticulars" },
{ title: intl.formatMessage({ id: 'table.purchase.liuzhuanjilu' }), id: 'transferRecord', componentName: "BidTransformRecord" },
]
......
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