Commit 57693b79 authored by 卢均锐's avatar 卢均锐

feat:加入在线竞价页面&对接采购竞价部分字段

parent 1f6f178b
......@@ -4,6 +4,7 @@ import { purchaseInquiryRoute } from './purchaseInquiry';
import { confirmOfferRoute } from './confirmOffer';
import { tenderRoute } from './tender';
import { purchaseBidRoute } from './purchaseBid';
import { onlineBidRoute } from './onlineBid';
/**
* 采购能力路由
......@@ -25,6 +26,8 @@ const ProcurementRoute = {
...confirmOfferRoute,
/** 采购竞价 */
...purchaseBidRoute,
/** 在线竞价 */
...onlineBidRoute,
],
}
......
/**
* @description: 采购能力 在线竞价
* @param {type}
* @return {type}
*/
export const onlineBidRoute = [
// 在线竞价
{
path: '/memberCenter/procurementAbility/onlineBid',
name: '采购竞价',
routes: [
// 采购竞价单查询
{
path: '/memberCenter/procurementAbility/onlineBid/search',
name: '采购竞价单查询',
component: '@/pages/transaction/purchaseAbility/onlineBid/search'
},
// 待竞价报名
{
path: '/memberCenter/procurementAbility/onlineBid/readySignUp',
name: '待竞价报名',
component: '@/pages/transaction/purchaseAbility/onlineBid/readySignUp'
},
// 待竞价
{
path: '/memberCenter/procurementAbility/onlineBid/readyBid',
name: '待竞价',
component: '@/pages/transaction/purchaseAbility/onlineBid/readyBid'
},
]
},
]
.resultItem {
height: 131px;
background: #FAFBFC;
padding: 12px 14px;
.resultItemRow {
display: flex;
margin-bottom: 6px;
font-size: 12px;
color: #909399;
height: 131px;
background: #FAFBFC;
padding: 12px 14px;
position: absolute;
.money{
color: #303133;
font-size: 16px;
flex: 1;
span{
color: #909399;
font-size: 12px;
}
}
.badge {
width: 24px;
height: 24px;
background: #EBECF0;
border-radius: 12px;
text-align: center;
line-height: 24px;
.resultItemWinBid{
position: absolute;
width: 40px;
right: 8px;
top: -8px;
}
.resultItemRow {
display: flex;
margin-bottom: 6px;
font-size: 12px;
color: #909399;
.money {
color: #303133;
font-size: 16px;
flex: 1;
span {
color: #909399;
font-size: 12px;
margin-left: 4px;
display: inline-block;
}
.title {
font-size: 12px;
color: #303133;
flex: 1;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
word-break: break-all;
}
.label{
width: 40%;
}
.badge {
width: 24px;
height: 24px;
background: #EBECF0;
border-radius: 12px;
text-align: center;
line-height: 24px;
color: #909399;
font-size: 12px;
margin-left: 4px;
display: inline-block;
}
.title {
font-size: 12px;
color: #303133;
flex: 1;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
word-break: break-all;
img {
margin-left: 4px;
width: 24px;
}
}
.label {
width: 40%;
}
}
\ No newline at end of file
}
import React from 'react';
import { Divider, Table, Row, Col, Space, Typography, Button, Tooltip } from 'antd';
import level1 from '@/assets/icons/the_first.png';
import level2 from '@/assets/icons/the_second.png';
import level3 from '@/assets/icons/the_third.png';
import winBig from '@/assets/imgs/win-bid.png';
import styles from './index.less';
export interface ResultItemPrpos {
itemIndex: number,
detail?: any,
checkDetailFunc? : Function
checkDetailFunc?: Function
}
const ResultItem: React.FC<ResultItemPrpos> = (props: any) => {
const { itemIndex, detial, checkDetailFunc } = props;
const _returnBadge = (number) => {
switch (number) {
case 1:
return <img src={level1} alt='第一名' />;
case 2:
return <img src={level2} alt='第二名' />;
case 3:
return <img src={level3} alt='第三名' />;
default:
return <div className={styles.badge}>number</div>
}
}
return (
<div key={`msgItem_key_${itemIndex}`} className={styles.resultItem}>
<img src={winBig} alt="授标" className={styles.resultItemWinBid}/>
<div className={styles.resultItemRow}>
<div className={styles.title}>广州白马皮具交易中心<div className={styles.badge}>1</div></div>
<div className={styles.title}>广州白马皮具交易中心{_returnBadge(1)}</div>
</div>
<div className={styles.resultItemRow}>
<div className={styles.money}>¥900.00<span>(含税)</span></div>
......
import React, { useContext, useEffect, useState } from 'react';
import { Row, Col, Table, Button } from 'antd';
import { ColumnType } from 'antd/lib/table/interface';
import Card from '../../../card';
import BtnItem from './btnItem';
const BidDetailLayout = () => {
const columns = [
const columns: ColumnType<any>[] = [
{ title: '物料编号/名称', dataIndex: 'materielNo', align: 'center', },
{ title: '规格型号', dataIndex: 'type', align: 'center', },
{ title: '品类', dataIndex: 'category', align: 'center', },
......@@ -17,12 +19,7 @@ const BidDetailLayout = () => {
{ title: '金额(含税)', dataIndex: 'price', align: 'center', },
]
const dataSource = [
{
key: '1',
materielNo: 'Q89YTE1',
},
]
const dataSource = []
return (
<div style={{ width: '100%' }}>
<Card
......@@ -34,7 +31,7 @@ const BidDetailLayout = () => {
<BtnItem />
</Col>
</Row>
{/* <Table dataSource={dataSource} columns={columns} />; */}
<Table dataSource={dataSource} columns={columns} />;
<Button type="link" block>显示更多</Button>
</Card>
</div>
......
......@@ -26,6 +26,12 @@ import {
PURCHASEBIDOSIGNUP_SCHEMA,
} from '../../schema/purchaseBid';
import {
ONLINEBIDORDER_SCHEMA,
ONLINEBIDREADYBID_SCHEMA,
ONLINEBIDREADYSIGN_SCHEMA,
} from '../../schema/onlineBid';
interface Iprops {
fetch?: () => Promise<unknown>,
fetchRowkeys?(e: any),
......@@ -43,7 +49,10 @@ interface Iprops {
'CONFIRMOFFERAUDIT_SCHEMA' |
'PURCHASEBIDORDER_SCHEMA' |
'PURCHASEBIDREADYADD_SCHEMA' |
'PURCHASEBIDOSIGNUP_SCHEMA'
'PURCHASEBIDOSIGNUP_SCHEMA' |
'ONLINEBIDORDER_SCHEMA' |
'ONLINEBIDREADYBID_SCHEMA' |
'ONLINEBIDREADYSIGN_SCHEMA'
columns: ColumnType<any>[],
effects?: string,
selectedRow?: boolean,
......@@ -91,6 +100,12 @@ const Table: React.FC<Iprops> = (props: any) => {
return PURCHASEBIDREADYADD_SCHEMA;
case 'PURCHASEBIDOSIGNUP_SCHEMA':
return PURCHASEBIDOSIGNUP_SCHEMA;
case 'ONLINEBIDORDER_SCHEMA':
return ONLINEBIDORDER_SCHEMA;
case 'ONLINEBIDREADYBID_SCHEMA':
return ONLINEBIDREADYBID_SCHEMA;
case 'ONLINEBIDREADYSIGN_SCHEMA':
return ONLINEBIDREADYSIGN_SCHEMA;
}
}
/** 列表数据 */
......
/** 筛选竞价单外部状态 */
export const FILTEREXTERNALBIDSTATE = [
{
label: '待提交竞价单', value: 1
},
{
label: '待审核竞价单', value: 2
},
{
label: '待提交报价单', value: 3
},
{
label: '待确认授标结果', value: 4
},
{
label: '已完成', value: 99
},
{
label: '已作废', value: '-1'
},
]
/** 筛选竞价单内部状态 */
export const FILTERINTERNALBIDSTATE = [
{
label: '待提交审核', value: 1
},
{
label: '待审核(一级)', value: 2
},
{
label: '待审核(二级)', value: 3
},
{
label: '待提交报价单', value: 4
},
{
label: '待比价', value: 5
},
{
label: '审核通过(一级)', value: 6
},
{
label: '审核通过(二级)', value: 7
},
{
label: '.审核不通过(一级)', value: 8
},
{
label: '审核不通过(二级)', value: 9
},
{
label: '已完成', value: 99
},
{
label: '已作废', value: '-1'
},
]
\ No newline at end of file
/** 筛选竞价单外部状态 */
export const FILTEREXTERNALBIDSTATE = [
{
label: '待提交采购竞价单', value: -1
label: '待提交竞价单', value: 1
},
{
label: '待审核采购竞价单', value: 1
label: '待审核竞价单', value: 2
},
{
label: '采购竞价单审核不通过', value: 2
label: '待提交报价单', value: 3
},
{
label: '待竞价报名', value: 3
},
{
label: '待审核竞价报名', value: 4
},
{
label: '竞价报名审核不通过', value: 5
},
{
label: '待竞价', value: 99
},
{
label: '待确认竞价结果', value: 99
label: '待确认授标结果', value: 4
},
{
label: '已完成', value: 99
},
{
label: '已作废', value: 99
label: '已作废', value: '-1'
},
]
/** 价单外部状态 */
export const BID_EXTERNALSTATE = {
'-1': '作废',
99: '已完成',
1: '待提交竞价单',
2: '待审核竞价单',
3: '待提交报价单',
4: '待确认授标结果'
}
/** 价单外部状态颜色 */
export const BID_EXTERNALSTATE_COLOR = {
'-1': 'error',
99: 'success',
1: 'default',
2: 'warning',
3: 'warning',
4: 'warning',
}
/** 筛选竞价单内部状态 */
export const FILTERINTERNALBIDSTATE = [
{
label: '待提交审核采购竞价单', value: -1
},
{
label: '待审核采购竞价单(一级)', value: 1
},
{
label: '采购竞价单审核不通过(一级)', value: 2
},
{
label: '待审核采购竞价单(二级)', value: 3
},
{
label: '采购竞价单审核不通过(二级)', value: 4
},
{
label: '待提交采购竞价单', value: 5
},
{
label: '已提交采购竞价单', value: 6
label: '待提交审核', value: 1
},
{
label: '待审核竞价报名', value: 7
label: '待审核(一级)', value: 2
},
{
label: '竞价报名审核不通过', value: 8
label: '待审核(二级)', value: 3
},
{
label: '已审核竞价报名', value: 9
label: '待提交报价单', value: 4
},
{
label: '待管理竞价', value: 10
label: '待比价', value: 5
},
{
label: '待提交审核竞价结果', value: 11
label: '审核通过(一级)', value: 6
},
{
label: '待审核竞价结果(一级)', value: 12
label: '审核通过(二级)', value: 7
},
{
label: '竞价结果审核不通过(一级)', value: 13
label: '.审核不通过(一级)', value: 8
},
{
label: '待审核竞价结果(二级)', value: 14
label: '审核不通过(二级)', value: 9
},
{
label: '竞价结果审核不通过(二级)', value: 15
},
{
label: '待确认竞价结果', value: 16
},
{
label: '已完成', value: 17
label: '已完成', value: 99
},
{
label: '已作废', value: 99
label: '已作废', value: '-1'
},
]
\ No newline at end of file
]
/** 报价内部状态 */
export const BID_INTERNALSTATE = {
'-1': '作废',
99: '已完成',
1: '待提交审核',
2: '待审核(一级)',
3: '待审核(二级)',
4: '待提交报价单',
5: '待比价',
6: '审核通过(一级)',
7: '审核通过(二级)',
8: '审核不通过(一级)',
9: '审核不通过(二级)',
}
/** 报价内部状态颜色 */
export const BID_INTERNALSTATE_COLOR = {
'-1': 'error',
99: 'success',
1: 'default',
2: 'warning',
3: 'warning',
4: 'warning',
5: 'default',
6: 'success',
7: 'success',
8: 'error',
9: 'error',
}
\ No newline at end of file
import React, { useRef, useState } from 'react';
import { history } from 'umi';
import { Button, Tag, Badge, Typography, Space } from 'antd';
import { ColumnType } from 'antd/lib/table/interface';
import { PlayCircleOutlined, PoweroffOutlined } from '@ant-design/icons'
import { formatTimeString } from '@/utils'
import EyePreview from '@/components/EyePreview';
import { PublicApi } from '@/services/api';
import Table from '../../components/table'
import ModalOperate from '../../components/modalOperate';
import {
BID_EXTERNALSTATE_COLOR,
BID_INTERNALSTATE_COLOR
} from '../../constants/purchaseBid';
const { Text } = Typography;
const ReadyBid = () => {
const ref = useRef<any>({});
const [id, setId] = useState<number>();
const [visible, setVisible] = useState<boolean>(false);
const columns: ColumnType<any>[] = [{
title: '序号',
align: 'center',
dataIndex: 'id',
key: 'id',
render: (t, r, i) => ++i
}, {
title: '竞价单号/摘要',
key: 'biddingNo',
dataIndex: 'biddingNo',
render: (text: any, record: any) => (
<Space direction='vertical'>
<EyePreview
url={`/memberCenter/procurementAbility/purchaseBid/search/detail?id=${record.id}&number=${record.biddingNo}`}>{text}</EyePreview>
<Text type="secondary">{record.details}</Text>
</Space>
)
}, {
title: '采购会员',
key: 'createMemberName',
dataIndex: 'createMemberName',
render: (text: any, record: any) => (
<EyePreview
url={`/memberCenter/procurementAbility/purchaseBid/search/detail?id=${record.id}&number=${record.biddingNo}`}>{text}</EyePreview>
)
}, {
title: '竞价开始/结束时间',
key: 'biddingStartTime',
dataIndex: 'biddingStartTime',
render: (text: any, record: any) => <>
<div><PlayCircleOutlined />&nbsp;{formatTimeString(record.biddingStartTime)}</div>
<div><PoweroffOutlined />&nbsp;{formatTimeString(record.biddingEndTime)}</div>
</>,
width: 180
}, {
title: '竞价开始/结束时间',
key: 'startSignUp',
dataIndex: 'startSignUp',
render: (text: any, record: any) => <>
<div><PlayCircleOutlined />&nbsp;{formatTimeString(record.startSignUp)}</div>
<div><PoweroffOutlined />&nbsp;{formatTimeString(record.endSignUp)}</div>
</>,
width: 180
}, {
title: '外部状态',
key: 'externalState',
dataIndex: 'externalState',
render: (text: any, record: any) => <Tag color={BID_EXTERNALSTATE_COLOR[text]}>{record.externalStateName}</Tag>
}, {
title: '内部状态',
key: 'interiorState',
dataIndex: 'interiorState',
render: (text: any, record: any) => <Badge status={BID_INTERNALSTATE_COLOR[text]} text={record.interiorStateName} />
}, {
title: '操作',
key: 'operate',
dataIndex: 'operate',
align: 'center',
render: (text: any, record: any) => <>
{
<>
<Button
onClick={() => history.push(`/memberCenter/procurementAbility/offter/edit?id=${record.id}&number=${record.quotedPriceNo}`)}
type='link'
>开始竞价</Button>
</>
}
</>
}];
const handleSubmit = () => {
setVisible(false);
ref.current.reload();
}
return (
<>
<Table
schemaType="ONLINEBIDREADYBID_SCHEMA"
columns={columns}
effects="biddingNo"
fetch={PublicApi.getPurchaseBiddingList}
reload={ref}
/>
<ModalOperate
id={id}
title="作废原因"
visible={visible}
modalType='abandon'
onOk={() => handleSubmit()}
onCancel={() => setVisible(false)}
fetch={PublicApi.postPurchaseBiddingDiscard}
/>
</>
)
}
export default ReadyBid
\ No newline at end of file
import React, { useRef, useState } from 'react';
import { history } from 'umi';
import { Button, Tag, Badge, Typography, Space } from 'antd';
import { ColumnType } from 'antd/lib/table/interface';
import { PlayCircleOutlined, PoweroffOutlined } from '@ant-design/icons'
import { formatTimeString } from '@/utils'
import EyePreview from '@/components/EyePreview';
import { PublicApi } from '@/services/api';
import Table from '../../components/table'
import ModalOperate from '../../components/modalOperate';
import {
BID_EXTERNALSTATE_COLOR,
BID_INTERNALSTATE_COLOR
} from '../../constants/purchaseBid';
const { Text } = Typography;
const ReadySignUp = () => {
const ref = useRef<any>({});
const [id, setId] = useState<number>();
const [visible, setVisible] = useState<boolean>(false);
const columns: ColumnType<any>[] = [{
title: '序号',
align: 'center',
dataIndex: 'id',
key: 'id',
render: (t, r, i) => ++i
}, {
title: '竞价单号/摘要',
key: 'biddingNo',
dataIndex: 'biddingNo',
render: (text: any, record: any) => (
<Space direction='vertical'>
<EyePreview
url={`/memberCenter/procurementAbility/purchaseBid/search/detail?id=${record.id}&number=${record.biddingNo}`}>{text}</EyePreview>
<Text type="secondary">{record.details}</Text>
</Space>
)
}, {
title: '采购会员',
key: 'createMemberName',
dataIndex: 'createMemberName',
render: (text: any, record: any) => (
<EyePreview
url={`/memberCenter/procurementAbility/purchaseBid/search/detail?id=${record.id}&number=${record.biddingNo}`}>{text}</EyePreview>
)
}, {
title: '竞价开始/结束时间',
key: 'biddingStartTime',
dataIndex: 'biddingStartTime',
render: (text: any, record: any) => <>
<div><PlayCircleOutlined />&nbsp;{formatTimeString(record.biddingStartTime)}</div>
<div><PoweroffOutlined />&nbsp;{formatTimeString(record.biddingEndTime)}</div>
</>,
width: 180
}, {
title: '竞价开始/结束时间',
key: 'startSignUp',
dataIndex: 'startSignUp',
render: (text: any, record: any) => <>
<div><PlayCircleOutlined />&nbsp;{formatTimeString(record.startSignUp)}</div>
<div><PoweroffOutlined />&nbsp;{formatTimeString(record.endSignUp)}</div>
</>,
width: 180
}, {
title: '外部状态',
key: 'externalState',
dataIndex: 'externalState',
render: (text: any, record: any) => <Tag color={BID_EXTERNALSTATE_COLOR[text]}>{record.externalStateName}</Tag>
}, {
title: '内部状态',
key: 'interiorState',
dataIndex: 'interiorState',
render: (text: any, record: any) => <Badge status={BID_INTERNALSTATE_COLOR[text]} text={record.interiorStateName} />
}, {
title: '操作',
key: 'operate',
dataIndex: 'operate',
align: 'center',
render: (text: any, record: any) => <>
{
<>
<Button
onClick={() => history.push(`/memberCenter/procurementAbility/offter/edit?id=${record.id}&number=${record.quotedPriceNo}`)}
type='link'
>报名</Button>
</>
}
</>
}];
const handleSubmit = () => {
setVisible(false);
ref.current.reload();
}
return (
<>
<Table
schemaType="ONLINEBIDREADYSIGN_SCHEMA"
columns={columns}
effects="biddingNo"
fetch={PublicApi.getPurchaseBiddingList}
reload={ref}
/>
<ModalOperate
id={id}
title="作废原因"
visible={visible}
modalType='abandon'
onOk={() => handleSubmit()}
onCancel={() => setVisible(false)}
fetch={PublicApi.postPurchaseBiddingDiscard}
/>
</>
)
}
export default ReadySignUp
\ No newline at end of file
import React, { useRef, useState } from 'react';
import { history } from 'umi';
import { Button, Tag, Badge, Typography, Space } from 'antd';
import { ColumnType } from 'antd/lib/table/interface';
import { PlayCircleOutlined, PoweroffOutlined } from '@ant-design/icons'
import { formatTimeString } from '@/utils'
import EyePreview from '@/components/EyePreview';
import { PublicApi } from '@/services/api';
import Table from '../../components/table'
import ModalOperate from '../../components/modalOperate';
import {
BID_EXTERNALSTATE_COLOR,
BID_INTERNALSTATE_COLOR
} from '../../constants/purchaseBid';
const { Text } = Typography;
const Search = () => {
const ref = useRef<any>({});
const [id, setId] = useState<number>();
const [visible, setVisible] = useState<boolean>(false);
const columns: ColumnType<any>[] = [{
title: '序号',
align: 'center',
dataIndex: 'id',
key: 'id',
render: (t, r, i) => ++i
}, {
title: '竞价单号/摘要',
key: 'biddingNo',
dataIndex: 'biddingNo',
render: (text: any, record: any) => (
<Space direction='vertical'>
<EyePreview
url={`/memberCenter/procurementAbility/purchaseBid/search/detail?id=${record.id}&number=${record.biddingNo}`}>{text}</EyePreview>
<Text type="secondary">{record.details}</Text>
</Space>
)
}, {
title: '采购会员',
key: 'createMemberName',
dataIndex: 'createMemberName',
render: (text: any, record: any) => text
}, {
title: '竞价开始/结束时间',
key: 'biddingStartTime',
dataIndex: 'biddingStartTime',
render: (text: any, record: any) => <>
<div><PlayCircleOutlined />&nbsp;{formatTimeString(record.biddingStartTime)}</div>
<div><PoweroffOutlined />&nbsp;{formatTimeString(record.biddingEndTime)}</div>
</>,
width: 180
}, {
title: '竞价开始/结束时间',
key: 'startSignUp',
dataIndex: 'startSignUp',
render: (text: any, record: any) => <>
<div><PlayCircleOutlined />&nbsp;{formatTimeString(record.startSignUp)}</div>
<div><PoweroffOutlined />&nbsp;{formatTimeString(record.endSignUp)}</div>
</>,
width: 180
}, {
title: '是否中标',
key: 'isPrize',
dataIndex: 'isPrize',
render: (text: any, record: any) => <>
{(text !== 1 || text !== 0) ? null : <Tag color={BID_EXTERNALSTATE_COLOR[text]}>{record.externalStateName}</Tag> }
</>,
width: 180
}, {
title: '外部状态',
key: 'externalState',
dataIndex: 'externalState',
render: (text: any, record: any) => <Tag color={BID_EXTERNALSTATE_COLOR[text]}>{record.externalStateName}</Tag>
}, {
title: '内部状态',
key: 'interiorState',
dataIndex: 'interiorState',
render: (text: any, record: any) => <Badge status={BID_INTERNALSTATE_COLOR[text]} text={record.interiorStateName} />
}];
const handleSubmit = () => {
setVisible(false);
ref.current.reload();
}
return (
<>
<Table
schemaType="ONLINEBIDORDER_SCHEMA"
columns={columns}
effects="biddingNo"
fetch={PublicApi.getPurchaseBiddingList}
reload={ref}
/>
<ModalOperate
id={id}
title="作废原因"
visible={visible}
modalType='abandon'
onOk={() => handleSubmit()}
onCancel={() => setVisible(false)}
fetch={PublicApi.postPurchaseBiddingDiscard}
/>
</>
)
}
export default Search
\ No newline at end of file
......@@ -2,13 +2,18 @@ import React, { useState, useRef, useEffect } from 'react';
import { history } from 'umi';
import { PageHeaderWrapper } from '@ant-design/pro-layout';
import { Tabs, Card, Button, Badge } from 'antd';
import ReutrnEle from '@/components/ReturnEle';
import Material from '../../purchaseInquiry/addInquiry/components/material';
import Demand from '../../purchaseInquiry/addInquiry/components/demand';
import Basic from './components/basic';
import BidRules from './components/bidRules';
import BidRequirement from './components/bidRequirement';
import Material from '../../purchaseInquiry/addInquiry/components/material';
import Condition from './components/condition';
import Demand from '../../purchaseInquiry/addInquiry/components/demand';
import ReutrnEle from '@/components/ReturnEle';
import File from './components/file';
import {
PostPurchasePurchaseInquiryAddRequest,
GetPurchasePurchaseInquiryDetailsResponse
......@@ -40,6 +45,8 @@ const AddForm = () => {
const [condition, setCondition] = useState<any>({});
/** 需求对接 */
const [demand, setDemand] = useState<any>({});
/** 附件 */
const [file, setfile] = useState<any>([]);
const [badge, setbadge] = useState<any>([0, 0, 0, 0, 0, 0]);
const [loading, setLoading] = useState<boolean>(false);
......@@ -50,6 +57,8 @@ const AddForm = () => {
const currentMaterial = useRef<any>({});
const currentCondition = useRef<any>({});
const currentDemand = useRef<any>({});
const currentFile = useRef<any>({});
/** 提交&修改 */
const handleSubmit = async () => {
......@@ -58,18 +67,23 @@ const AddForm = () => {
const materialRef = await currentMaterial.current.get();
const conditionRef = await currentCondition.current.get();
const demandRef = await currentDemand.current.get();
if (basicRef.state && materialRef.state && conditionRef.state && demandRef.state && fileRef.state) {
const fileRef = await currentFile.current.get();
const ruleRef = await currentRules.current.get();
const requirementRef = await currentRequirement.current.get();
if (basicRef.state && materialRef.state && conditionRef.state && demandRef.state && fileRef.state && ruleRef.state && requirementRef.state) {
const params: PostPurchasePurchaseInquiryAddRequest = {
memberId,
memberRoleId,
memberName: name,
details: basicRef.data.details,
areas: basicRef.data.requisitionFormAddress,
priceContrast: basicRef.data.priceContrast,
purchaseType: basicRef.data.purchaseType,
isAreas : basicRef.data.isAreas,
areas: basicRef.data.areas,
...materialRef.data,
...conditionRef.data,
...demandRef.data,
...ruleRef.data,
...requirementRef.data,
urls : [...fileRef.data]
}
let res: {
code: number,
......@@ -77,9 +91,9 @@ const AddForm = () => {
time: number,
} = null;
if (id) {
res = await PublicApi.postPurchasePurchaseInquiryUpdate({ id, ...params })
res = await PublicApi.postPurchaseBiddingUpdate({ id, ...params })
} else {
res = await PublicApi.postPurchasePurchaseInquiryAdd({ ...params });
res = await PublicApi.postPurchaseBiddingAdd({ ...params });
}
if (res.code !== 1000) {
setLoading(false);
......@@ -211,6 +225,12 @@ const AddForm = () => {
onBadge={getError}
/>
</TabPane>
<TabPane key='7' tab='附件' forceRender>
<File
fetchdata={file}
currentRef={currentFile}
/>
</TabPane>
</Tabs>
</Card>
</PageHeaderWrapper>
......
......@@ -10,17 +10,24 @@ import {
Button,
Typography
} from 'antd';
import style from './index.less';
import { QuestionCircleOutlined } from '@ant-design/icons';
import { PublicApi } from '@/services/api';
import {
GetPurchasePurchaseInquiryDetailsResponse
} from '@/services/PurchaseApi/id4177';
import { PublicApi } from '@/services/api';
import { formatTimeString } from '@/utils'
import style from './index.less';
import {
OFFTER_EXTERNALSTATE,
OFFTER_INTERNALSTATE,
} from '../../../constants';
import moment from 'moment';
BID_EXTERNALSTATE,
BID_INTERNALSTATE
} from '../../../constants/purchaseBid';
const { Option } = Select;
const { Text } = Typography;
......@@ -38,9 +45,6 @@ interface Iprops {
}
const BasicInfo: React.FC<Iprops> = (props: any) => {
const format = (text) => {
return <>{moment(text).format("YYYY-MM-DD HH:mm:ss")}</>
}
const { currentRef, fetchdata, onBadge } = props;
const [form] = Form.useForm();
/** 省列表 */
......@@ -180,8 +184,6 @@ const BasicInfo: React.FC<Iprops> = (props: any) => {
setcode([...code, item.cityCode])
form.setFieldsValue({
details: fetchdata.details,
purchaseType: fetchdata.purchaseType,
priceContrast: fetchdata.priceContrast,
['province_' + index]: item.provinceCode,
['city_' + index]: item.cityCode,
});
......@@ -201,7 +203,8 @@ const BasicInfo: React.FC<Iprops> = (props: any) => {
name: 'basic',
data: {
...res,
requisitionFormAddress,
isAreas : 1,
areas : [...requisitionFormAddress],
},
})
onBadge(0, 0)
......@@ -296,7 +299,7 @@ const BasicInfo: React.FC<Iprops> = (props: any) => {
label='单据时间'
name='createTime'
>
<Text strong>{(fetchdata && fetchdata.createTime) && format(fetchdata.createTime)}</Text>
<Text strong>{(fetchdata && fetchdata.createTime) && formatTimeString(fetchdata.createTime)}</Text>
</Form.Item>
<Form.Item
label='竞价单号'
......@@ -308,13 +311,13 @@ const BasicInfo: React.FC<Iprops> = (props: any) => {
label='外部状态'
name='externalState'
>
<Text type="warning" strong>{(fetchdata && fetchdata.externalState) && OFFTER_EXTERNALSTATE[fetchdata.externalState]}</Text>
<Text type="warning" strong>{(fetchdata && fetchdata.externalState) && BID_EXTERNALSTATE[fetchdata.externalState]}</Text>
</Form.Item>
<Form.Item
label='内部状态'
name='interiorState'
>
<Text type="warning" strong>{(fetchdata && fetchdata.interiorState) && OFFTER_INTERNALSTATE[fetchdata.interiorState]}</Text>
<Text type="warning" strong>{(fetchdata && fetchdata.interiorState) && BID_INTERNALSTATE[fetchdata.interiorState]}</Text>
</Form.Item>
</Form>
</>
......
......@@ -13,11 +13,11 @@ import {
Upload,
Space
} from 'antd';
import style from './index.less';
import styles from './index.less';
import { UPLOAD_TYPE } from '@/constants'
import { UploadOutlined } from '@ant-design/icons';
import { UploadOutlined, DeleteOutlined, LinkOutlined } from '@ant-design/icons';
import { PublicApi } from '@/services/api';
import File from '../../../purchaseInquiry/addInquiry/components/file';
import moment from 'moment';
const { TextArea } = Input;
const layout: any = {
......@@ -34,19 +34,50 @@ interface Iprops {
}
const BidRequirement: React.FC<Iprops> = (props: any) => {
const { currentRef, fetchdata, onBadge } = props;
const [files, setFiles] = useState<any>([]);
const [loading, setloading] = useState(false);
const currentFile = useRef<any>({});
const format = (text) => {
return <>{moment(text).format("YYYY-MM-DD HH:mm:ss")}</>
}
const { currentRef, fetchdata, onBadge } = props;
const [form] = Form.useForm();
useEffect(() => {
currentRef.current = {
get: () => new Promise((resolve: any) => {
form.validateFields().then(res => {
let _formData = { ...res };
resolve({
state: true,
name: 'requirement',
data: {
startSignUp: moment(_formData.signUpTime[0]).format('x'),
endSignUp: moment(_formData.signUpTime[1]).format('x'),
demand: _formData.demand,
demandUrls: files
},
})
onBadge(0, 3)
}).catch(error => {
if (error && error.errorFields) {
onBadge(error.errorFields.length, 3)
}
})
})
}
})
useEffect(() => {
fetchdata.demandUrls && setFiles([...fetchdata.demandUrls])
form.setFieldsValue({
signUpTime : [fetchdata.startSignUp ? moment(fetchdata.startSignUp) : '',fetchdata.endSignUp ? moment(fetchdata.endSignUp) : ''],
demand : fetchdata.demand,
demandUrls : fetchdata.demandUrls
})
},[fetchdata])
/**判断文件类型和大小 */
const beforeDocUpload = (file: any) => {
const isLt20M = file.size / 1024 / 1024 < 20;
if (!isLt20M) {
message.error('上传文件大小不超过 20M!');
message.error('上传文件大小不超过 20M!');
}
return isLt20M;
}
......@@ -55,40 +86,65 @@ const BidRequirement: React.FC<Iprops> = (props: any) => {
const arr: any = files;
setloading(true);
if (file.response) {
if (file.response.code === 1000) {
arr.push({
name: file.name,
url: file.response.data
})
setloading(false);
}
if (file.response.code === 1000) {
arr.push({
name: file.name,
url: file.response.data
})
setloading(false);
}
}
setFiles([...arr])
form.setFieldsValue({demandUrls : [...arr]})
}
// 删除附件
const removeFiles = (index: any) => {
const arr = [...files];
arr.splice(index, 1);
setFiles(arr);
form.setFieldsValue({demandUrls : [...arr]})
}
return (
<>
<Form
{...layout}
form={form}
className={style.form}
className={styles.revise_style}
>
<Form.Item
label='报名要求时间'
name='details'
name='signUpTime'
rules={[{ required: true, message: '报名要求时间' }]}
>
<DatePicker.RangePicker showTime format="YYYY-MM-DD HH:mm:ss" placeholder={['开始时间', '结束时间']} />
</Form.Item>
<Form.Item
label="报名要求"
name="offer"
name="demand"
>
<TextArea rows={3} maxLength={200} placeholder="最长1200个字符,100个汉字" />
<TextArea rows={3} maxLength={200} placeholder="最长200个字符,100个汉字" />
</Form.Item>
<Form.Item
label="报名要求附件"
name="file"
name="demandUrls"
rules={[{ required: true, message: '请上传报名要求附件' }]}
>
<div className={styles.upload_data}>
{files.length > 0 && files.map((v, index) => (
<div key={index} className={styles.upload_item}>
<div className={styles.upload_left}>
<LinkOutlined />
<span>{v.name}</span>
</div>
<div className={styles.upload_right} onClick={() => removeFiles(index)}>
<DeleteOutlined />
</div>
</div>
))}
</div>
<Upload
action="/api/file/file/upload"
data={{ fileType: UPLOAD_TYPE }}
......
......@@ -13,11 +13,15 @@ import {
Checkbox,
Space
} from 'antd';
import style from './index.less';
import { QuestionCircleOutlined } from '@ant-design/icons';
import { PublicApi } from '@/services/api';
import moment from 'moment';
import { PublicApi } from '@/services/api';
import styles from './index.less';
const layout: any = {
colon: false,
labelCol: { style: { width: '174px' } },
......@@ -32,91 +36,138 @@ interface Iprops {
}
const BidRules: React.FC<Iprops> = (props: any) => {
const format = (text) => {
return <>{moment(text).format("YYYY-MM-DD HH:mm:ss")}</>
}
const { currentRef, fetchdata, onBadge } = props;
const [isStartingPrice, setIsStartingPrice] = useState<boolean>(true)
const [isTargetPrice, setIsTargetPrice] = useState<boolean>(true)
const [isMinPrice, setIsMinPrice] = useState<boolean>(true)
const [isOpenPurchase, setIsOpenPurchase] = useState<boolean>(false)
const [isOpenRanking, setIsOpenRanking] = useState<boolean>(false)
const [form] = Form.useForm();
useEffect(() => {
currentRef.current = {
get: () => new Promise((resolve: any) => {
form.validateFields().then(res => {
let _formData = {...res };
resolve({
state: true,
name: 'rules',
data: {
biddingStartTime : moment(_formData.biddingTime[0]).format('x'),
biddingEndTime : moment(_formData.biddingTime[1]).format('x'),
isStartingPrice : _formData.isStartingPrice ? 1 : 0,
isTargetPrice : _formData.isTargetPrice ? 1 : 0,
isMinPrice : _formData.isMinPrice ? 1 : 0,
isOpenPurchase : _formData.sOpenPurchase ? 1 : 0,
isOpenRanking : _formData.isOpenRanking ? 1 : 0,
startingPrice : _formData.startingPrice,
targetPrice : _formData.targetPrice,
allowPurchaseCount : _formData.allowPurchaseCount,
minPrice : _formData.minPrice,
},
})
onBadge(0, 2)
}).catch(error => {
if (error && error.errorFields) {
onBadge(error.errorFields.length, 2)
}
})
})
}
}, [])
useEffect(() => {
form.setFieldsValue({
biddingTime : [fetchdata.biddingStartTime ? moment(fetchdata.biddingStartTime) : '',fetchdata.biddingEndTime ? moment(fetchdata.biddingEndTime) : ''],
isStartingPrice : !!fetchdata.isStartingPrice,
isTargetPrice : !!fetchdata.isTargetPrice,
isMinPrice : !!fetchdata.isMinPrice,
isOpenPurchase : !!fetchdata.isOpenPurchase,
isOpenRanking : !!fetchdata.isOpenRanking,
startingPrice : fetchdata.startingPrice,
targetPrice : fetchdata.targetPrice,
allowPurchaseCount : fetchdata.allowPurchaseCount,
minPrice : fetchdata.minPrice
})
},[fetchdata])
const onCheckboxChange = (e: { target: { checked: boolean } }, func: Function) => {
func(e.target.checked);
};
return (
<>
<Form
{...layout}
form={form}
className={style.form}
className={styles.form}
>
<Form.Item
label='竞价时间'
name='details'
name='biddingTime'
rules={[{ required: true, message: '请选择竞价时间' }]}
>
<DatePicker.RangePicker showTime format="YYYY-MM-DD HH:mm:ss" placeholder={['开始时间', '结束时间']} />
</Form.Item>
<Form.Item
name='isStartingPrice'
label={<Tooltip placement="right" title='初始起拍价,首次报价要低于或等于起拍价'>起拍价<QuestionCircleOutlined style={{ marginLeft: '5px' }} /></Tooltip>}
>
<Row style={{marginBottom: '9px'}}>
<Checkbox
>
是否有起拍价
</Checkbox>
</Row>
<Row>
<Input addonBefore={'¥'} />
</Row>
<Checkbox checked={isStartingPrice} onChange={(e) => { onCheckboxChange(e, setIsStartingPrice) }}>是否有起拍价</Checkbox>
</Form.Item>
<Form.Item
label=" "
name='startingPrice'
className={styles.hidden}
rules={[{ required: true, message: '请输入起拍价' }]}
>
<Input addonBefore={'¥'} />
</Form.Item>
<Form.Item
label={<Tooltip placement="right" title='期望成交价格'>目标价<QuestionCircleOutlined style={{ marginLeft: '5px' }} /></Tooltip>}
name='isTargetPrice'
>
<Row style={{marginBottom: '9px'}}>
<Checkbox
>
是否有目标价
</Checkbox>
</Row>
<Row>
<Input addonBefore={'¥'} />
</Row>
<Checkbox checked={isTargetPrice} onChange={(e) => { onCheckboxChange(e, setIsTargetPrice) }}>是否有目标价</Checkbox>
</Form.Item>
<Form.Item
label=" "
name='targetPrice'
className={styles.hidden}
rules={[{ required: true, message: '请输入目标价' }]}
>
<Input addonBefore={'¥'} />
</Form.Item>
<Form.Item
label={<Tooltip placement="right" title='每次报价降价幅度须大于或等于最小价差'>最小价差<QuestionCircleOutlined style={{ marginLeft: '5px' }} /></Tooltip>}
name='isMinPrice'
>
<Row style={{marginBottom: '9px'}}>
<Checkbox
>
是否有最小价差
</Checkbox>
</Row>
<Row>
<Input addonBefore={'¥'} />
</Row>
<Checkbox checked={isMinPrice} onChange={(e) => { onCheckboxChange(e, setIsMinPrice) }}>是否有最小价差</Checkbox>
</Form.Item>
<Form.Item
name='minPrice'
label=" "
className={styles.hidden}
rules={[{ required: true, message: '请输入最小价差' }]}
>
<Input addonBefore={'¥'} />
</Form.Item>
<Form.Item
label={<Tooltip placement="right" title='允许每个供应商最多可以报价的次数'>允许报价次数<QuestionCircleOutlined style={{ marginLeft: '5px' }} /></Tooltip>}
name="bidnumber"
name='allowPurchaseCount'
rules={[{ required: true, message: '请输入允许报价次数' }]}
>
<Input />
</Form.Item>
<Form.Item
label={<Tooltip placement="right" title='选择公开当前最低报价,竞价过程中将供应商所报当前最低价在竞价页面即时公开。'>公开当前最低报价<QuestionCircleOutlined style={{ marginLeft: '5px' }} /></Tooltip>}
name='isOpenPurchase'
>
<Checkbox
>
是否公开当前最低报价
</Checkbox>
<Checkbox checked={isOpenPurchase} onChange={(e) => { onCheckboxChange(e, setIsOpenPurchase) }}>是否公开当前最低报价</Checkbox>
</Form.Item>
<Form.Item
label={<Tooltip placement="right" title='选择公开报价排名,竞价过程中将供应商当前报价排名在竞价页面即时公开。'>公开报价排名<QuestionCircleOutlined style={{ marginLeft: '5px' }} /></Tooltip>}
name='isOpenRanking'
>
<Checkbox
>
是否公开报价排名
</Checkbox>
<Checkbox checked={isOpenRanking} onChange={(e) => { onCheckboxChange(e, setIsOpenRanking) }}>是否公开报价排名</Checkbox>
</Form.Item>
</Form>
</>
......
......@@ -63,8 +63,7 @@ const Condition: React.FC<Iprops> = (props: any) => {
state: true,
name: 'condition',
data: {
deliveryTime: moment(res.deliveryTime).format('x'),
offerEndTime: moment(res.offerEndTime).format('x'),
deliver: moment(res.deliver).format('x'),
logistics: res.logistics,
offer: res.offer,
otherRequire: res.otherRequire,
......@@ -74,10 +73,10 @@ const Condition: React.FC<Iprops> = (props: any) => {
...selAddress,
},
})
onBadge(0, 2)
onBadge(0, 4)
}).catch(error => {
if (error && error.errorFields) {
onBadge(error.errorFields.length, 2)
onBadge(error.errorFields.length, 4)
}
})
})
......@@ -89,9 +88,8 @@ const Condition: React.FC<Iprops> = (props: any) => {
console.log(fetchdata)
if (fetchdata) {
form.setFieldsValue({
deliveryTime: fetchdata.deliveryTime ? moment(fetchdata.deliveryTime) : undefined,
deliver: fetchdata.deliver ? moment(fetchdata.deliver) : undefined,
addressId: fetchdata.addressId,
offerEndTime: fetchdata.offerEndTime ? moment(fetchdata.offerEndTime) : undefined,
offer: fetchdata.offer,
paymentType: fetchdata.paymentType,
taxes: fetchdata.taxes,
......@@ -116,7 +114,7 @@ const Condition: React.FC<Iprops> = (props: any) => {
>
<Form.Item
label="交付日期"
name="deliveryTime"
name="deliver"
rules={[{ required: true, message: '请选择支付日期' }]}
>
<DatePicker style={{ width: '100%' }} />
......@@ -141,7 +139,7 @@ const Condition: React.FC<Iprops> = (props: any) => {
<TextArea rows={3} maxLength={100} placeholder="最长100个字符,50个汉字" />
</Form.Item>
<Form.Item
label="付款要求"
label="付款方式"
name="paymentType"
>
<TextArea rows={3} maxLength={100} placeholder="最长100个字符,50个汉字" />
......
import React, { useState, useEffect } from 'react';
import { Form, Button, Upload, message } from 'antd';
import { UPLOAD_TYPE } from '@/constants'
import styles from './index.less';
import { UploadOutlined, DeleteOutlined, LinkOutlined } from '@ant-design/icons';
const layout: any = {
colon: false,
labelCol: { style: { width: '174px' } },
wrapperCol: { span: 9 },
labelAlign: "left"
};
export interface IProps {
fetchdata: any,
currentRef: any
}
const File: React.FC<IProps> = (props) => {
const { fetchdata, currentRef } = props;
const [form] = Form.useForm();
const [files, setFiles] = useState([]);
const [loading, setloading] = useState(false);
/**判断文件类型和大小 */
const beforeDocUpload = (file: any) => {
const isLt20M = file.size / 1024 / 1024 < 20;
if (!isLt20M) {
message.error('上传文件大小不超过 20M!');
}
return isLt20M;
}
// 上传回调
const handleChange = ({ file }) => {
const arr: any = files;
setloading(true);
if (file.response) {
if (file.response.code === 1000) {
arr.push({
name: file.name,
url: file.response.data
})
setloading(false);
}
}
setFiles([...arr])
}
// 删除附件
const removeFiles = (index: any) => {
const arr = [...files];
arr.splice(index, 1);
setFiles(arr);
}
// useEffect(() => {
// if (Object.keys(editData).length > 0) {
// setFiles(editData.enclosureUrls)
// }
// }, [editData])
useEffect(() => {
currentRef.current = {
get: () => new Promise((resolve: any) => {
form.validateFields().then(res => {
resolve({
state: true,
name: 'explain',
data: files,
})
}).catch(error => {
if (error && error.errorFields) {
}
})
})
}
})
return (
<Form
form={form}
{...layout}
className={styles.revise_style}
>
<Form.Item label='附件' name='upload'>
<div className={styles.upload_data}>
{files.length > 0 && files.map((v, index) => (
<div key={index} className={styles.upload_item}>
<div className={styles.upload_left}>
<LinkOutlined />
<span>{v.name}</span>
</div>
<div className={styles.upload_right} onClick={() => removeFiles(index)}>
<DeleteOutlined />
</div>
</div>
))}
</div>
<Upload
action="/api/file/file/upload"
data={{ fileType: UPLOAD_TYPE }}
showUploadList={false}
accept='.doc,.docx,.pdf,.ppt,.pptx,.xls,.xlsx'
beforeUpload={beforeDocUpload}
onChange={handleChange}
>
<Button loading={loading} icon={<UploadOutlined />}>上传文件</Button>
<div style={{ marginTop: '8px' }}>一次上传一个文件,每个附件大小不能超过 20M</div>
</Upload>
</Form.Item>
</Form>
)
}
export default File;
......@@ -21,6 +21,17 @@
}
}
}
.hidden{
:global{
.ant-form-item-label-left{
.ant-form-item-required{
&::before{
content: '';
}
}
}
}
}
}
.editableRow {
:global {
......
import React, { useRef, useState } from 'react';
import Table from '../../components/table'
import { history } from 'umi';
import { ColumnType } from 'antd/lib/table/interface';
import { Row, Col, Space, Button, Typography, Popconfirm, Badge, Tag, Menu, Dropdown } from 'antd';
import { PlusOutlined, PlayCircleOutlined, PoweroffOutlined, CaretDownOutlined } from '@ant-design/icons';
import { formatTimeString } from '@/utils'
import EyePreview from '@/components/EyePreview';
import { PublicApi } from '@/services/api';
import { Row, Col, Space, Button, Typography, Popconfirm, Badge, Tag,Menu,Dropdown } from 'antd';
import { PlusOutlined, PlayCircleOutlined, PoweroffOutlined,CaretDownOutlined } from '@ant-design/icons';
import { formatTimeString } from '@/utils'
import Table from '../../components/table'
import {
OFFTER_EXTERNALSTATE,
OFFTER_EXTERNALSTATE_COLOR,
OFFTER_INTERNALSTATE,
OFFTER_INTERNALSTATE_COLOR,
OFFTER_INTERNALSTATE_TYPE,
CHNUM_TYPE
} from '../../constants';
BID_EXTERNALSTATE_COLOR,
BID_INTERNALSTATE_COLOR
} from '../../constants/purchaseBid';
const { Text } = Typography;
......@@ -26,21 +24,21 @@ const ReadyAdd = () => {
const [rowkeys, setRowKeys] = useState<Array<number>>([]);
const columns: ColumnType<any>[] = [{
title: '竞价单号/摘要',
key: 'quotedPriceNo',
dataIndex: 'quotedPriceNo',
key: 'biddingNo',
dataIndex: 'biddingNo',
render: (text: any, record: any) => (
<Space direction='vertical'>
<EyePreview url={`/memberCenter/procurementAbility/offter/addOffter/view?id=${record.id}&number=${record.quotedPriceNo}`}>{text}</EyePreview>
<EyePreview url={`/memberCenter/procurementAbility/offter/addOffter/view?id=${record.id}&number=${text}`}>{text}</EyePreview>
<Text type='secondary'>{record.details}</Text>
</Space>
)
}, {
title: '竞价开始/结束时间',
key: 'offerEndTime',
dataIndex: 'offerEndTime',
key: 'biddingStartTime',
dataIndex: 'biddingStartTime',
render: (text: any, record: any) => <>
<div><PlayCircleOutlined />&nbsp;{formatTimeString(record.createTime)}</div>
<div><PoweroffOutlined />&nbsp;{formatTimeString(record.createTime)}</div>
<div><PlayCircleOutlined />&nbsp;{formatTimeString(record.biddingStartTime)}</div>
<div><PoweroffOutlined />&nbsp;{formatTimeString(record.biddingEndTime)}</div>
</>,
width: 180
}, {
......@@ -53,49 +51,46 @@ const ReadyAdd = () => {
title: '外部状态',
key: 'externalState',
dataIndex: 'externalState',
render: (text: any, record: any) => <Tag color={OFFTER_EXTERNALSTATE_COLOR[text]}>{OFFTER_EXTERNALSTATE[text]}</Tag>
render: (text: any, record: any) => <Tag color={BID_EXTERNALSTATE_COLOR[text]}>{record.externalStateName}</Tag>
}, {
title: '内部状态',
key: 'interiorState',
dataIndex: 'interiorState',
render: (text: any, record: any) => <Badge status={OFFTER_INTERNALSTATE_COLOR[text]} text={OFFTER_INTERNALSTATE[text]} />
render: (text: any, record: any) => <Badge status={BID_INTERNALSTATE_COLOR[text]} text={record.interiorStateName} />
}, {
title: '操作',
key: 'operate',
dataIndex: 'operate',
render: (text: any, record: any) => <>
{
record.interiorState === OFFTER_INTERNALSTATE_TYPE.WAITSUBMITAUDIT_TYPE
&& (
<>
<Popconfirm title="确定要提交审核吗?" okText="是" cancelText="否" onConfirm={() => fetchSubmitBatch(record.id)}>
<Button type='link'>
提交
</Button>
</Popconfirm>
<Dropdown overlay={() => (
<Menu onClick={(e) => handleMenuClick(e)}>
<Menu.Item key="1">
修改
</Menu.Item>
<Menu.Item key="2">
<>
<Popconfirm title="确定要提交审核吗?" okText="是" cancelText="否" onConfirm={() => fetchSubmitBatch(record.id)}>
<Button type='link'>
提交
</Button>
</Popconfirm>
<Dropdown overlay={() => (
<Menu onClick={(e) => handleMenuClick(e)}>
<Menu.Item key="1">
修改
</Menu.Item>
<Menu.Item key="2">
删除
</Menu.Item>
</Menu>
)}>
<Button type='link'>更多<CaretDownOutlined /></Button>
</Dropdown>
{/* <Button
onClick={() => history.push(`/memberCenter/procurementAbility/offter/edit?id=${record.id}&number=${record.quotedPriceNo}`)}
type='link'
>修改</Button>
<Popconfirm title="确定要删除吗?" okText="是" cancelText="否" onConfirm={() => fetchDeleteBatch(record.id)}>
<Button type='link'>
删除
</Button>
</Popconfirm> */}
</>
)
</Menu.Item>
</Menu>
)}>
<Button type='link'>更多<CaretDownOutlined /></Button>
</Dropdown>
{/* <Button
onClick={() => history.push(`/memberCenter/procurementAbility/offter/edit?id=${record.id}&number=${record.quotedPriceNo}`)}
type='link'
>修改</Button>
<Popconfirm title="确定要删除吗?" okText="是" cancelText="否" onConfirm={() => fetchDeleteBatch(record.id)}>
<Button type='link'>
删除
</Button>
</Popconfirm> */}
</>
}
</>
}];
......
import React, { useRef, useState } from 'react';
import Table from '../../components/table'
import { history } from 'umi';
import { ColumnType } from 'antd/lib/table/interface';
import EyePreview from '@/components/EyePreview';
import { PublicApi } from '@/services/api';
import { Row, Col, Space, Button, Typography, Badge, Tag } from 'antd';
import { PlayCircleOutlined, PoweroffOutlined } from '@ant-design/icons';
import {
OFFTER_EXTERNALSTATE,
OFFTER_EXTERNALSTATE_COLOR,
OFFTER_INTERNALSTATE,
OFFTER_INTERNALSTATE_COLOR,
OFFTER_INTERNALSTATE_TYPE,
CHNUM_TYPE
} from '../../constants';
import EyePreview from '@/components/EyePreview';
import { PublicApi } from '@/services/api';
import { formatTimeString } from '@/utils'
import Table from '../../components/table'
import {
BID_EXTERNALSTATE_COLOR,
BID_INTERNALSTATE_COLOR
} from '../../constants/purchaseBid';
const { Text } = Typography;
const ReadyBid = () => {
......@@ -29,21 +28,21 @@ const ReadyBid = () => {
render: (t, r, i) => ++i
}, {
title: '竞价单号/摘要',
key: 'quotedPriceNo',
dataIndex: 'quotedPriceNo',
key: 'biddingNo',
dataIndex: 'biddingNo',
render: (text: any, record: any) => (
<Space direction='vertical'>
<EyePreview url={`/memberCenter/procurementAbility/offter/addOffter/view?id=${record.id}&number=${record.quotedPriceNo}`}>{text}</EyePreview>
<EyePreview url={`/memberCenter/procurementAbility/offter/addOffter/view?id=${record.id}&number=${text}`}>{text}</EyePreview>
<Text type='secondary'>{record.details}</Text>
</Space>
)
}, {
title: '竞价开始/结束时间',
key: 'offerEndTime',
dataIndex: 'offerEndTime',
key: 'biddingStartTime',
dataIndex: 'biddingStartTime',
render: (text: any, record: any) => <>
<div><PlayCircleOutlined />&nbsp;{formatTimeString(record.createTime)}</div>
<div><PoweroffOutlined />&nbsp;{formatTimeString(record.createTime)}</div>
<div><PlayCircleOutlined />&nbsp;{formatTimeString(record.biddingStartTime)}</div>
<div><PoweroffOutlined />&nbsp;{formatTimeString(record.biddingEndTime)}</div>
</>,
width: 180
}, {
......@@ -56,12 +55,12 @@ const ReadyBid = () => {
title: '外部状态',
key: 'externalState',
dataIndex: 'externalState',
render: (text: any, record: any) => <Tag color={OFFTER_EXTERNALSTATE_COLOR[text]}>{OFFTER_EXTERNALSTATE[text]}</Tag>
render: (text: any, record: any) => <Tag color={BID_EXTERNALSTATE_COLOR[text]}>{record.externalStateName}</Tag>
}, {
title: '内部状态',
key: 'interiorState',
dataIndex: 'interiorState',
render: (text: any, record: any) => <Badge status={OFFTER_INTERNALSTATE_COLOR[text]} text={OFFTER_INTERNALSTATE[text]} />
render: (text: any, record: any) => <Badge status={BID_INTERNALSTATE_COLOR[text]} text={record.interiorStateName} />
}, {
title: '操作',
key: 'operate',
......@@ -69,15 +68,12 @@ const ReadyBid = () => {
align: 'center',
render: (text: any, record: any) => <>
{
record.interiorState === OFFTER_INTERNALSTATE_TYPE.WAITSUBMITAUDIT_TYPE
&& (
<>
<Button
onClick={() => history.push(`/memberCenter/procurementAbility/offter/edit?id=${record.id}&number=${record.quotedPriceNo}`)}
type='link'
>竞价管理</Button>
</>
)
<>
<Button
onClick={() => history.push(`/memberCenter/procurementAbility/offter/edit?id=${record.id}&number=${record.quotedPriceNo}`)}
type='link'
>竞价管理</Button>
</>
}
</>
}];
......
......@@ -4,6 +4,7 @@
color: #FFFFFF;
font-size: 12px;
border-radius: 2px;
padding: 0 2px;
.directionTriangle{
width: 0;
height: 0;
......
import React, { useRef, useState } from 'react';
import Table from '../../components/table'
import { history } from 'umi';
import { ColumnType } from 'antd/lib/table/interface';
import EyePreview from '@/components/EyePreview';
import { PublicApi } from '@/services/api';
import { Row, Col, Space, Button, Typography, Badge, Tag } from 'antd';
import { PlayCircleOutlined, PoweroffOutlined } from '@ant-design/icons';
import {
OFFTER_EXTERNALSTATE,
OFFTER_EXTERNALSTATE_COLOR,
OFFTER_INTERNALSTATE,
OFFTER_INTERNALSTATE_COLOR,
OFFTER_INTERNALSTATE_TYPE,
CHNUM_TYPE
} from '../../constants';
import EyePreview from '@/components/EyePreview';
import { PublicApi } from '@/services/api';
import { formatTimeString } from '@/utils'
import Table from '../../components/table'
import {
BID_EXTERNALSTATE_COLOR,
BID_INTERNALSTATE_COLOR
} from '../../constants/purchaseBid';
const { Text } = Typography;
const ReadyConfirm = () => {
......@@ -29,28 +28,28 @@ const ReadyConfirm = () => {
render: (t, r, i) => ++i
}, {
title: '竞价单号/摘要',
key: 'quotedPriceNo',
dataIndex: 'quotedPriceNo',
key: 'biddingNo',
dataIndex: 'biddingNo',
render: (text: any, record: any) => (
<Space direction='vertical'>
<EyePreview url={`/memberCenter/procurementAbility/offter/addOffter/view?id=${record.id}&number=${record.quotedPriceNo}`}>{text}</EyePreview>
<EyePreview url={`/memberCenter/procurementAbility/offter/addOffter/view?id=${record.id}&number=${text}`}>{text}</EyePreview>
<Text type='secondary'>{record.details}</Text>
</Space>
)
}, {
title: '授标会员',
key: 'quotedPriceNo',
dataIndex: 'quotedPriceNo',
key: 'createMemberName',
dataIndex: 'createMemberName',
render: (text: any, record: any) => (
<EyePreview url={`/memberCenter/procurementAbility/offter/addOffter/view?id=${record.id}&number=${record.quotedPriceNo}`}>{text}</EyePreview>
<EyePreview url={`/memberCenter/procurementAbility/offter/addOffter/view?id=${record.id}&number=${text}`}>{text}</EyePreview>
)
}, {
title: '竞价开始/结束时间',
key: 'offerEndTime',
dataIndex: 'offerEndTime',
key: 'biddingStartTime',
dataIndex: 'biddingStartTime',
render: (text: any, record: any) => <>
<div><PlayCircleOutlined />&nbsp;{formatTimeString(record.createTime)}</div>
<div><PoweroffOutlined />&nbsp;{formatTimeString(record.createTime)}</div>
<div><PlayCircleOutlined />&nbsp;{formatTimeString(record.biddingStartTime)}</div>
<div><PoweroffOutlined />&nbsp;{formatTimeString(record.biddingEndTime)}</div>
</>,
width: 180
}, {
......@@ -63,12 +62,12 @@ const ReadyConfirm = () => {
title: '外部状态',
key: 'externalState',
dataIndex: 'externalState',
render: (text: any, record: any) => <Tag color={OFFTER_EXTERNALSTATE_COLOR[text]}>{OFFTER_EXTERNALSTATE[text]}</Tag>
render: (text: any, record: any) => <Tag color={BID_EXTERNALSTATE_COLOR[text]}>{record.externalStateName}</Tag>
}, {
title: '内部状态',
key: 'interiorState',
dataIndex: 'interiorState',
render: (text: any, record: any) => <Badge status={OFFTER_INTERNALSTATE_COLOR[text]} text={OFFTER_INTERNALSTATE[text]} />
render: (text: any, record: any) => <Badge status={BID_INTERNALSTATE_COLOR[text]} text={record.interiorStateName} />
}, {
title: '操作',
key: 'operate',
......@@ -76,15 +75,12 @@ const ReadyConfirm = () => {
align: 'center',
render: (text: any, record: any) => <>
{
record.interiorState === OFFTER_INTERNALSTATE_TYPE.WAITSUBMITAUDIT_TYPE
&& (
<>
<Button
onClick={() => history.push(`/memberCenter/procurementAbility/offter/edit?id=${record.id}&number=${record.quotedPriceNo}`)}
type='link'
>确认</Button>
</>
)
<>
<Button
onClick={() => history.push(`/memberCenter/procurementAbility/offter/edit?id=${record.id}&number=${record.quotedPriceNo}`)}
type='link'
>确认</Button>
</>
}
</>
}];
......
import React, { useRef, useState } from 'react';
import Table from '../../components/table'
import { history } from 'umi';
import { ColumnType } from 'antd/lib/table/interface';
import EyePreview from '@/components/EyePreview';
import { PublicApi } from '@/services/api';
import { Row, Col, Space, Button, Typography, Badge, Tag } from 'antd';
import { PlayCircleOutlined, PoweroffOutlined } from '@ant-design/icons';
import EyePreview from '@/components/EyePreview';
import { PublicApi } from '@/services/api';
import { formatTimeString } from '@/utils'
import Table from '../../components/table'
import {
OFFTER_EXTERNALSTATE,
OFFTER_EXTERNALSTATE_COLOR,
OFFTER_INTERNALSTATE,
OFFTER_INTERNALSTATE_COLOR,
OFFTER_INTERNALSTATE_TYPE,
CHNUM_TYPE
} from '../../constants';
BID_EXTERNALSTATE_COLOR,
BID_INTERNALSTATE_COLOR
} from '../../constants/purchaseBid';
const { Text } = Typography;
import { formatTimeString } from '@/utils'
const ReadyExamineOne = () => {
/** 多选操作 */
......@@ -24,21 +25,21 @@ const ReadyExamineOne = () => {
const [rowkeys, setRowKeys] = useState<Array<number>>([]);
const columns: ColumnType<any>[] = [{
title: '竞价单号/摘要',
key: 'quotedPriceNo',
dataIndex: 'quotedPriceNo',
key: 'biddingNo',
dataIndex: 'biddingNo',
render: (text: any, record: any) => (
<Space direction='vertical'>
<EyePreview url={`/memberCenter/procurementAbility/offter/addOffter/view?id=${record.id}&number=${record.quotedPriceNo}`}>{text}</EyePreview>
<EyePreview url={`/memberCenter/procurementAbility/offter/addOffter/view?id=${record.id}&number=${text}`}>{text}</EyePreview>
<Text type='secondary'>{record.details}</Text>
</Space>
)
}, {
title: '竞价开始/结束时间',
key: 'offerEndTime',
dataIndex: 'offerEndTime',
key: 'biddingStartTime',
dataIndex: 'biddingStartTime',
render: (text: any, record: any) => <>
<div><PlayCircleOutlined />&nbsp;{formatTimeString(record.createTime)}</div>
<div><PoweroffOutlined />&nbsp;{formatTimeString(record.createTime)}</div>
<div><PlayCircleOutlined />&nbsp;{formatTimeString(record.biddingStartTime)}</div>
<div><PoweroffOutlined />&nbsp;{formatTimeString(record.biddingEndTime)}</div>
</>,
width: 180
}, {
......@@ -51,12 +52,12 @@ const ReadyExamineOne = () => {
title: '外部状态',
key: 'externalState',
dataIndex: 'externalState',
render: (text: any, record: any) => <Tag color={OFFTER_EXTERNALSTATE_COLOR[text]}>{OFFTER_EXTERNALSTATE[text]}</Tag>
render: (text: any, record: any) => <Tag color={BID_EXTERNALSTATE_COLOR[text]}>{record.externalStateName}</Tag>
}, {
title: '内部状态',
key: 'interiorState',
dataIndex: 'interiorState',
render: (text: any, record: any) => <Badge status={OFFTER_INTERNALSTATE_COLOR[text]} text={OFFTER_INTERNALSTATE[text]} />
render: (text: any, record: any) => <Badge status={BID_INTERNALSTATE_COLOR[text]} text={record.interiorStateName} />
}, {
title: '操作',
key: 'operate',
......@@ -64,15 +65,12 @@ const ReadyExamineOne = () => {
align: 'center',
render: (text: any, record: any) => <>
{
record.interiorState === OFFTER_INTERNALSTATE_TYPE.WAITSUBMITAUDIT_TYPE
&& (
<>
<Button
onClick={() => history.push(`/memberCenter/procurementAbility/offter/edit?id=${record.id}&number=${record.quotedPriceNo}`)}
type='link'
>审核</Button>
</>
)
<>
<Button
onClick={() => history.push(`/memberCenter/procurementAbility/offter/edit?id=${record.id}&number=${record.quotedPriceNo}`)}
type='link'
>审核</Button>
</>
}
</>
}];
......
import React, { useRef, useState } from 'react';
import Table from '../../components/table'
import { history } from 'umi';
import { ColumnType } from 'antd/lib/table/interface';
import EyePreview from '@/components/EyePreview';
import { PublicApi } from '@/services/api';
import { Row, Col, Space, Button, Typography, Badge, Tag } from 'antd';
import { PlayCircleOutlined, PoweroffOutlined } from '@ant-design/icons';
import {
OFFTER_EXTERNALSTATE,
OFFTER_EXTERNALSTATE_COLOR,
OFFTER_INTERNALSTATE,
OFFTER_INTERNALSTATE_COLOR,
OFFTER_INTERNALSTATE_TYPE,
CHNUM_TYPE
} from '../../constants';
import EyePreview from '@/components/EyePreview';
import { PublicApi } from '@/services/api';
import { formatTimeString } from '@/utils'
import Table from '../../components/table'
import {
BID_EXTERNALSTATE_COLOR,
BID_INTERNALSTATE_COLOR
} from '../../constants/purchaseBid';
const { Text } = Typography;
const ReadyExamineResultOne = () => {
......@@ -24,28 +23,28 @@ const ReadyExamineResultOne = () => {
const [rowkeys, setRowKeys] = useState<Array<number>>([]);
const columns: ColumnType<any>[] = [{
title: '竞价单号/摘要',
key: 'quotedPriceNo',
dataIndex: 'quotedPriceNo',
key: 'biddingNo',
dataIndex: 'biddingNo',
render: (text: any, record: any) => (
<Space direction='vertical'>
<EyePreview url={`/memberCenter/procurementAbility/offter/addOffter/view?id=${record.id}&number=${record.quotedPriceNo}`}>{text}</EyePreview>
<EyePreview url={`/memberCenter/procurementAbility/offter/addOffter/view?id=${record.id}&number=${text}`}>{text}</EyePreview>
<Text type='secondary'>{record.details}</Text>
</Space>
)
}, {
title: '授标会员',
key: 'quotedPriceNo',
dataIndex: 'quotedPriceNo',
key: 'createMemberId',
dataIndex: 'createMemberId',
render: (text: any, record: any) => (
<EyePreview url={`/memberCenter/procurementAbility/offter/addOffter/view?id=${record.id}&number=${record.quotedPriceNo}`}>{text}</EyePreview>
<EyePreview url={`/memberCenter/procurementAbility/offter/addOffter/view?id=${record.id}&number=${text}`}>{record.createMemberName}</EyePreview>
)
}, {
title: '竞价开始/结束时间',
key: 'offerEndTime',
dataIndex: 'offerEndTime',
key: 'biddingStartTime',
dataIndex: 'biddingStartTime',
render: (text: any, record: any) => <>
<div><PlayCircleOutlined />&nbsp;{formatTimeString(record.createTime)}</div>
<div><PoweroffOutlined />&nbsp;{formatTimeString(record.createTime)}</div>
<div><PlayCircleOutlined />&nbsp;{formatTimeString(record.biddingStartTime)}</div>
<div><PoweroffOutlined />&nbsp;{formatTimeString(record.biddingEndTime)}</div>
</>,
width: 180
}, {
......@@ -58,28 +57,25 @@ const ReadyExamineResultOne = () => {
title: '外部状态',
key: 'externalState',
dataIndex: 'externalState',
render: (text: any, record: any) => <Tag color={OFFTER_EXTERNALSTATE_COLOR[text]}>{OFFTER_EXTERNALSTATE[text]}</Tag>
render: (text: any, record: any) => <Tag color={BID_EXTERNALSTATE_COLOR[text]}>{record.externalStateName}</Tag>
}, {
title: '内部状态',
key: 'interiorState',
dataIndex: 'interiorState',
render: (text: any, record: any) => <Badge status={OFFTER_INTERNALSTATE_COLOR[text]} text={OFFTER_INTERNALSTATE[text]} />
render: (text: any, record: any) => <Badge status={BID_INTERNALSTATE_COLOR[text]} text={record.interiorStateName} />
}, {
title: '操作',
key: 'operate',
dataIndex: 'operate',
align : 'center',
align: 'center',
render: (text: any, record: any) => <>
{
record.interiorState === OFFTER_INTERNALSTATE_TYPE.WAITSUBMITAUDIT_TYPE
&& (
<>
<Button
onClick={() => history.push(`/memberCenter/procurementAbility/offter/edit?id=${record.id}&number=${record.quotedPriceNo}`)}
type='link'
>审核</Button>
</>
)
<>
<Button
onClick={() => history.push(`/memberCenter/procurementAbility/offter/edit?id=${record.id}&number=${record.quotedPriceNo}`)}
type='link'
>审核</Button>
</>
}
</>
}];
......
import React, { useRef, useState } from 'react';
import Table from '../../components/table'
import { history } from 'umi';
import { ColumnType } from 'antd/lib/table/interface';
import EyePreview from '@/components/EyePreview';
import { PublicApi } from '@/services/api';
import { Row, Col, Space, Button, Typography, Badge, Tag } from 'antd';
import { PlayCircleOutlined, PoweroffOutlined } from '@ant-design/icons';
import {
OFFTER_EXTERNALSTATE,
OFFTER_EXTERNALSTATE_COLOR,
OFFTER_INTERNALSTATE,
OFFTER_INTERNALSTATE_COLOR,
OFFTER_INTERNALSTATE_TYPE,
CHNUM_TYPE
} from '../../constants';
import EyePreview from '@/components/EyePreview';
import { PublicApi } from '@/services/api';
import { formatTimeString } from '@/utils'
import Table from '../../components/table'
import {
BID_EXTERNALSTATE_COLOR,
BID_INTERNALSTATE_COLOR
} from '../../constants/purchaseBid';
const { Text } = Typography;
......@@ -25,28 +24,28 @@ const ReadyExamineResultTwo = () => {
const [rowkeys, setRowKeys] = useState<Array<number>>([]);
const columns: ColumnType<any>[] = [{
title: '竞价单号/摘要',
key: 'quotedPriceNo',
dataIndex: 'quotedPriceNo',
key: 'biddingNo',
dataIndex: 'biddingNo',
render: (text: any, record: any) => (
<Space direction='vertical'>
<EyePreview url={`/memberCenter/procurementAbility/offter/addOffter/view?id=${record.id}&number=${record.quotedPriceNo}`}>{text}</EyePreview>
<EyePreview url={`/memberCenter/procurementAbility/offter/addOffter/view?id=${record.id}&number=${text}`}>{text}</EyePreview>
<Text type='secondary'>{record.details}</Text>
</Space>
)
}, {
title: '授标会员',
key: 'quotedPriceNo',
dataIndex: 'quotedPriceNo',
key: 'createMemberId',
dataIndex: 'createMemberId',
render: (text: any, record: any) => (
<EyePreview url={`/memberCenter/procurementAbility/offter/addOffter/view?id=${record.id}&number=${record.quotedPriceNo}`}>{text}</EyePreview>
<EyePreview url={`/memberCenter/procurementAbility/offter/addOffter/view?id=${record.id}&number=${text}`}>{record.createMemberName}</EyePreview>
)
}, {
title: '竞价开始/结束时间',
key: 'offerEndTime',
dataIndex: 'offerEndTime',
key: 'biddingStartTime',
dataIndex: 'biddingStartTime',
render: (text: any, record: any) => <>
<div><PlayCircleOutlined />&nbsp;{formatTimeString(record.createTime)}</div>
<div><PoweroffOutlined />&nbsp;{formatTimeString(record.createTime)}</div>
<div><PlayCircleOutlined />&nbsp;{formatTimeString(record.biddingStartTime)}</div>
<div><PoweroffOutlined />&nbsp;{formatTimeString(record.biddingEndTime)}</div>
</>,
width: 180
}, {
......@@ -59,12 +58,12 @@ const ReadyExamineResultTwo = () => {
title: '外部状态',
key: 'externalState',
dataIndex: 'externalState',
render: (text: any, record: any) => <Tag color={OFFTER_EXTERNALSTATE_COLOR[text]}>{OFFTER_EXTERNALSTATE[text]}</Tag>
render: (text: any, record: any) => <Tag color={BID_EXTERNALSTATE_COLOR[text]}>{record.externalStateName}</Tag>
}, {
title: '内部状态',
key: 'interiorState',
dataIndex: 'interiorState',
render: (text: any, record: any) => <Badge status={OFFTER_INTERNALSTATE_COLOR[text]} text={OFFTER_INTERNALSTATE[text]} />
render: (text: any, record: any) => <Badge status={BID_INTERNALSTATE_COLOR[text]} text={record.interiorStateName} />
}, {
title: '操作',
key: 'operate',
......@@ -72,15 +71,12 @@ const ReadyExamineResultTwo = () => {
align: 'center',
render: (text: any, record: any) => <>
{
record.interiorState === OFFTER_INTERNALSTATE_TYPE.WAITSUBMITAUDIT_TYPE
&& (
<>
<Button
onClick={() => history.push(`/memberCenter/procurementAbility/offter/edit?id=${record.id}&number=${record.quotedPriceNo}`)}
type='link'
>审核</Button>
</>
)
<>
<Button
onClick={() => history.push(`/memberCenter/procurementAbility/offter/edit?id=${record.id}&number=${record.quotedPriceNo}`)}
type='link'
>审核</Button>
</>
}
</>
}];
......
import React, { useRef, useState } from 'react';
import Table from '../../components/table'
import { history } from 'umi';
import { ColumnType } from 'antd/lib/table/interface';
import EyePreview from '@/components/EyePreview';
import { PublicApi } from '@/services/api';
import { Row, Col, Space, Button, Typography, Badge, Tag } from 'antd';
import { PlayCircleOutlined, PoweroffOutlined } from '@ant-design/icons';
import {
OFFTER_EXTERNALSTATE,
OFFTER_EXTERNALSTATE_COLOR,
OFFTER_INTERNALSTATE,
OFFTER_INTERNALSTATE_COLOR,
OFFTER_INTERNALSTATE_TYPE,
CHNUM_TYPE
} from '../../constants';
import EyePreview from '@/components/EyePreview';
import { PublicApi } from '@/services/api';
import { formatTimeString } from '@/utils'
import Table from '../../components/table'
import {
BID_EXTERNALSTATE_COLOR,
BID_INTERNALSTATE_COLOR
} from '../../constants/purchaseBid';
const { Text } = Typography;
const ReadyExamineSignUp = () => {
......@@ -27,33 +26,33 @@ const ReadyExamineSignUp = () => {
dataIndex: 'id',
key: 'id',
render: (t, r, i) => ++i
}, {
}, {
title: '竞价单号/摘要',
key: 'quotedPriceNo',
dataIndex: 'quotedPriceNo',
key: 'biddingNo',
dataIndex: 'biddingNo',
render: (text: any, record: any) => (
<Space direction='vertical'>
<EyePreview url={`/memberCenter/procurementAbility/offter/addOffter/view?id=${record.id}&number=${record.quotedPriceNo}`}>{text}</EyePreview>
<EyePreview url={`/memberCenter/procurementAbility/offter/addOffter/view?id=${record.id}&number=${text}`}>{text}</EyePreview>
<Text type='secondary'>{record.details}</Text>
</Space>
)
}, {
title: '报名会员/时间',
key: 'createTime',
dataIndex: 'createTime',
key: 'signUpTime',
dataIndex: 'signUpTime',
render: (text: any, record: any) => (
<Space direction='vertical'>
<EyePreview url={`/memberCenter/procurementAbility/offter/addOffter/view?id=${record.id}&number=${record.quotedPriceNo}`}>{text}</EyePreview>
<Text type='secondary'>{formatTimeString(record.createTime)}</Text>
<EyePreview url={`/memberCenter/procurementAbility/offter/addOffter/view?id=${record.id}&number=${record.biddingNo}`}>{record.createMemberName}</EyePreview>
<Text type='secondary'>{formatTimeString(record.signUpTime)}</Text>
</Space>
)
}, {
title: '报名开始/结束时间',
key: 'offerEndTime',
dataIndex: 'offerEndTime',
key: 'startSignUp',
dataIndex: 'startSignUp',
render: (text: any, record: any) => <>
<div><PlayCircleOutlined />&nbsp;{formatTimeString(record.createTime)}</div>
<div><PoweroffOutlined />&nbsp;{formatTimeString(record.createTime)}</div>
<div><PlayCircleOutlined />&nbsp;{formatTimeString(record.startSignUp)}</div>
<div><PoweroffOutlined />&nbsp;{formatTimeString(record.endSignUp)}</div>
</>,
width: 180
}, {
......@@ -66,12 +65,12 @@ const ReadyExamineSignUp = () => {
title: '外部状态',
key: 'externalState',
dataIndex: 'externalState',
render: (text: any, record: any) => <Tag color={OFFTER_EXTERNALSTATE_COLOR[text]}>{OFFTER_EXTERNALSTATE[text]}</Tag>
render: (text: any, record: any) => <Tag color={BID_EXTERNALSTATE_COLOR[text]}>{record.externalStateName}</Tag>
}, {
title: '内部状态',
key: 'interiorState',
dataIndex: 'interiorState',
render: (text: any, record: any) => <Badge status={OFFTER_INTERNALSTATE_COLOR[text]} text={OFFTER_INTERNALSTATE[text]} />
render: (text: any, record: any) => <Badge status={BID_INTERNALSTATE_COLOR[text]} text={record.interiorStateName} />
}, {
title: '操作',
key: 'operate',
......@@ -79,15 +78,12 @@ const ReadyExamineSignUp = () => {
align: 'center',
render: (text: any, record: any) => <>
{
record.interiorState === OFFTER_INTERNALSTATE_TYPE.WAITSUBMITAUDIT_TYPE
&& (
<>
<Button
onClick={() => history.push(`/memberCenter/procurementAbility/offter/edit?id=${record.id}&number=${record.quotedPriceNo}`)}
type='link'
>审核</Button>
</>
)
<>
<Button
onClick={() => history.push(`/memberCenter/procurementAbility/offter/edit?id=${record.id}&number=${record.quotedPriceNo}`)}
type='link'
>审核</Button>
</>
}
</>
}];
......
import React, { useRef, useState } from 'react';
import Table from '../../components/table'
import { history } from 'umi';
import { ColumnType } from 'antd/lib/table/interface';
import EyePreview from '@/components/EyePreview';
import { PublicApi } from '@/services/api';
import { Row, Col, Space, Button, Typography, Badge, Tag } from 'antd';
import { PlayCircleOutlined, PoweroffOutlined } from '@ant-design/icons';
import EyePreview from '@/components/EyePreview';
import { PublicApi } from '@/services/api';
import { formatTimeString } from '@/utils'
import Table from '../../components/table'
import {
OFFTER_EXTERNALSTATE,
OFFTER_EXTERNALSTATE_COLOR,
OFFTER_INTERNALSTATE,
OFFTER_INTERNALSTATE_COLOR,
OFFTER_INTERNALSTATE_TYPE,
CHNUM_TYPE
} from '../../constants';
BID_EXTERNALSTATE_COLOR,
BID_INTERNALSTATE_COLOR
} from '../../constants/purchaseBid';
const { Text } = Typography;
import { formatTimeString } from '@/utils'
const ReadyExamineTwo = () => {
/** 多选操作 */
......@@ -24,21 +24,21 @@ const ReadyExamineTwo = () => {
const [rowkeys, setRowKeys] = useState<Array<number>>([]);
const columns: ColumnType<any>[] = [{
title: '竞价单号/摘要',
key: 'quotedPriceNo',
dataIndex: 'quotedPriceNo',
key: 'biddingNo',
dataIndex: 'biddingNo',
render: (text: any, record: any) => (
<Space direction='vertical'>
<EyePreview url={`/memberCenter/procurementAbility/offter/addOffter/view?id=${record.id}&number=${record.quotedPriceNo}`}>{text}</EyePreview>
<EyePreview url={`/memberCenter/procurementAbility/offter/addOffter/view?id=${record.id}&number=${text}`}>{text}</EyePreview>
<Text type='secondary'>{record.details}</Text>
</Space>
)
}, {
title: '竞价开始/结束时间',
key: 'offerEndTime',
dataIndex: 'offerEndTime',
key: 'biddingStartTime',
dataIndex: 'biddingStartTime',
render: (text: any, record: any) => <>
<div><PlayCircleOutlined />&nbsp;{formatTimeString(record.createTime)}</div>
<div><PoweroffOutlined />&nbsp;{formatTimeString(record.createTime)}</div>
<div><PlayCircleOutlined />&nbsp;{formatTimeString(record.biddingStartTime)}</div>
<div><PoweroffOutlined />&nbsp;{formatTimeString(record.biddingEndTime)}</div>
</>,
width: 180
}, {
......@@ -51,12 +51,12 @@ const ReadyExamineTwo = () => {
title: '外部状态',
key: 'externalState',
dataIndex: 'externalState',
render: (text: any, record: any) => <Tag color={OFFTER_EXTERNALSTATE_COLOR[text]}>{OFFTER_EXTERNALSTATE[text]}</Tag>
render: (text: any, record: any) => <Tag color={BID_EXTERNALSTATE_COLOR[text]}>{record.externalStateName}</Tag>
}, {
title: '内部状态',
key: 'interiorState',
dataIndex: 'interiorState',
render: (text: any, record: any) => <Badge status={OFFTER_INTERNALSTATE_COLOR[text]} text={OFFTER_INTERNALSTATE[text]} />
render: (text: any, record: any) => <Badge status={BID_INTERNALSTATE_COLOR[text]} text={record.interiorStateName} />
}, {
title: '操作',
key: 'operate',
......@@ -64,15 +64,12 @@ const ReadyExamineTwo = () => {
align: 'center',
render: (text: any, record: any) => <>
{
record.interiorState === OFFTER_INTERNALSTATE_TYPE.WAITSUBMITAUDIT_TYPE
&& (
<>
<Button
onClick={() => history.push(`/memberCenter/procurementAbility/offter/edit?id=${record.id}&number=${record.quotedPriceNo}`)}
type='link'
>审核</Button>
</>
)
<>
<Button
onClick={() => history.push(`/memberCenter/procurementAbility/offter/edit?id=${record.id}&number=${record.quotedPriceNo}`)}
type='link'
>审核</Button>
</>
}
</>
}];
......
import React, { useRef, useState } from 'react';
import Table from '../../components/table'
import { history } from 'umi';
import { ColumnType } from 'antd/lib/table/interface';
import EyePreview from '@/components/EyePreview';
import { PublicApi } from '@/services/api';
import { Row, Col, Space, Button, Typography, Badge, Tag } from 'antd';
import { PlayCircleOutlined, PoweroffOutlined } from '@ant-design/icons';
import EyePreview from '@/components/EyePreview';
import { PublicApi } from '@/services/api';
import { formatTimeString } from '@/utils'
import Table from '../../components/table'
import {
OFFTER_EXTERNALSTATE,
OFFTER_EXTERNALSTATE_COLOR,
OFFTER_INTERNALSTATE,
OFFTER_INTERNALSTATE_COLOR,
OFFTER_INTERNALSTATE_TYPE,
CHNUM_TYPE
} from '../../constants';
BID_EXTERNALSTATE_COLOR,
BID_INTERNALSTATE_COLOR
} from '../../constants/purchaseBid';
const { Text } = Typography;
import { formatTimeString } from '@/utils'
const ReadySubmit = () => {
/** 多选操作 */
......@@ -24,21 +24,21 @@ const ReadySubmit = () => {
const [rowkeys, setRowKeys] = useState<Array<number>>([]);
const columns: ColumnType<any>[] = [{
title: '竞价单号/摘要',
key: 'quotedPriceNo',
dataIndex: 'quotedPriceNo',
key: 'biddingNo',
dataIndex: 'biddingNo',
render: (text: any, record: any) => (
<Space direction='vertical'>
<EyePreview url={`/memberCenter/procurementAbility/offter/addOffter/view?id=${record.id}&number=${record.quotedPriceNo}`}>{text}</EyePreview>
<EyePreview url={`/memberCenter/procurementAbility/offter/addOffter/view?id=${record.id}&number=${text}`}>{text}</EyePreview>
<Text type='secondary'>{record.details}</Text>
</Space>
)
}, {
title: '竞价开始/结束时间',
key: 'offerEndTime',
dataIndex: 'offerEndTime',
key: 'biddingStartTime',
dataIndex: 'biddingStartTime',
render: (text: any, record: any) => <>
<div><PlayCircleOutlined />&nbsp;{formatTimeString(record.createTime)}</div>
<div><PoweroffOutlined />&nbsp;{formatTimeString(record.createTime)}</div>
<div><PlayCircleOutlined />&nbsp;{formatTimeString(record.biddingStartTime)}</div>
<div><PoweroffOutlined />&nbsp;{formatTimeString(record.biddingEndTime)}</div>
</>,
width: 180
}, {
......@@ -51,12 +51,12 @@ const ReadySubmit = () => {
title: '外部状态',
key: 'externalState',
dataIndex: 'externalState',
render: (text: any, record: any) => <Tag color={OFFTER_EXTERNALSTATE_COLOR[text]}>{OFFTER_EXTERNALSTATE[text]}</Tag>
render: (text: any, record: any) => <Tag color={BID_EXTERNALSTATE_COLOR[text]}>{record.externalStateName}</Tag>
}, {
title: '内部状态',
key: 'interiorState',
dataIndex: 'interiorState',
render: (text: any, record: any) => <Badge status={OFFTER_INTERNALSTATE_COLOR[text]} text={OFFTER_INTERNALSTATE[text]} />
render: (text: any, record: any) => <Badge status={BID_INTERNALSTATE_COLOR[text]} text={record.interiorStateName} />
}, {
title: '操作',
key: 'operate',
......@@ -64,15 +64,12 @@ const ReadySubmit = () => {
align: 'center',
render: (text: any, record: any) => <>
{
record.interiorState === OFFTER_INTERNALSTATE_TYPE.WAITSUBMITAUDIT_TYPE
&& (
<>
<Button
onClick={() => history.push(`/memberCenter/procurementAbility/offter/edit?id=${record.id}&number=${record.quotedPriceNo}`)}
type='link'
>提交</Button>
</>
)
<>
<Button
onClick={() => history.push(`/memberCenter/procurementAbility/offter/edit?id=${record.id}&number=${record.quotedPriceNo}`)}
type='link'
>提交</Button>
</>
}
</>
}];
......
import React, { useRef, useState } from 'react';
import Table from '../../components/table'
import { history } from 'umi';
import { ColumnType } from 'antd/lib/table/interface';
import EyePreview from '@/components/EyePreview';
import { PublicApi } from '@/services/api';
import { Row, Col, Space, Button, Typography, Badge, Tag } from 'antd';
import { PlayCircleOutlined, PoweroffOutlined } from '@ant-design/icons';
import {
OFFTER_EXTERNALSTATE,
OFFTER_EXTERNALSTATE_COLOR,
OFFTER_INTERNALSTATE,
OFFTER_INTERNALSTATE_COLOR,
OFFTER_INTERNALSTATE_TYPE,
CHNUM_TYPE
} from '../../constants';
import EyePreview from '@/components/EyePreview';
import { PublicApi } from '@/services/api';
import { formatTimeString } from '@/utils'
import Table from '../../components/table'
import {
BID_EXTERNALSTATE_COLOR,
BID_INTERNALSTATE_COLOR
} from '../../constants/purchaseBid';
const { Text } = Typography;
const ReadySubmitExamineResult = () => {
......@@ -25,28 +24,28 @@ const ReadySubmitExamineResult = () => {
const [rowkeys, setRowKeys] = useState<Array<number>>([]);
const columns: ColumnType<any>[] = [{
title: '竞价单号/摘要',
key: 'quotedPriceNo',
dataIndex: 'quotedPriceNo',
key: 'biddingNo',
dataIndex: 'biddingNo',
render: (text: any, record: any) => (
<Space direction='vertical'>
<EyePreview url={`/memberCenter/procurementAbility/offter/addOffter/view?id=${record.id}&number=${record.quotedPriceNo}`}>{text}</EyePreview>
<EyePreview url={`/memberCenter/procurementAbility/offter/addOffter/view?id=${record.id}&number=${text}`}>{text}</EyePreview>
<Text type='secondary'>{record.details}</Text>
</Space>
)
}, {
title: '授标会员',
key: 'quotedPriceNo',
dataIndex: 'quotedPriceNo',
key: 'createMemberName',
dataIndex: 'createMemberName',
render: (text: any, record: any) => (
<EyePreview url={`/memberCenter/procurementAbility/offter/addOffter/view?id=${record.id}&number=${record.quotedPriceNo}`}>{text}</EyePreview>
<EyePreview url={`/memberCenter/procurementAbility/offter/addOffter/view?id=${record.id}&number=${record.biddingNo}`}>{text}</EyePreview>
)
}, {
title: '竞价开始/结束时间',
key: 'offerEndTime',
dataIndex: 'offerEndTime',
key: 'biddingStartTime',
dataIndex: 'biddingStartTime',
render: (text: any, record: any) => <>
<div><PlayCircleOutlined />&nbsp;{formatTimeString(record.createTime)}</div>
<div><PoweroffOutlined />&nbsp;{formatTimeString(record.createTime)}</div>
<div><PlayCircleOutlined />&nbsp;{formatTimeString(record.biddingStartTime)}</div>
<div><PoweroffOutlined />&nbsp;{formatTimeString(record.biddingEndTime)}</div>
</>,
width: 180
}, {
......@@ -59,12 +58,12 @@ const ReadySubmitExamineResult = () => {
title: '外部状态',
key: 'externalState',
dataIndex: 'externalState',
render: (text: any, record: any) => <Tag color={OFFTER_EXTERNALSTATE_COLOR[text]}>{OFFTER_EXTERNALSTATE[text]}</Tag>
render: (text: any, record: any) => <Tag color={BID_EXTERNALSTATE_COLOR[text]}>{record.externalStateName}</Tag>
}, {
title: '内部状态',
key: 'interiorState',
dataIndex: 'interiorState',
render: (text: any, record: any) => <Badge status={OFFTER_INTERNALSTATE_COLOR[text]} text={OFFTER_INTERNALSTATE[text]} />
render: (text: any, record: any) => <Badge status={BID_INTERNALSTATE_COLOR[text]} text={record.interiorStateName} />
}, {
title: '操作',
key: 'operate',
......@@ -72,15 +71,12 @@ const ReadySubmitExamineResult = () => {
align: 'center',
render: (text: any, record: any) => <>
{
record.interiorState === OFFTER_INTERNALSTATE_TYPE.WAITSUBMITAUDIT_TYPE
&& (
<>
<Button
onClick={() => history.push(`/memberCenter/procurementAbility/offter/edit?id=${record.id}&number=${record.quotedPriceNo}`)}
type='link'
>提交审核</Button>
</>
)
<>
<Button
onClick={() => history.push(`/memberCenter/procurementAbility/offter/edit?id=${record.id}&number=${record.quotedPriceNo}`)}
type='link'
>提交审核</Button>
</>
}
</>
}];
......
import React, { useRef, useState } from 'react';
import { history } from 'umi';
import Table from '../../components/table'
import { Button, Tag, Badge, Typography, Space } from 'antd';
import { ColumnType } from 'antd/lib/table/interface';
import { PlayCircleOutlined, PoweroffOutlined } from '@ant-design/icons'
import { formatTimeString } from '@/utils'
import EyePreview from '@/components/EyePreview';
import { PublicApi } from '@/services/api';
import {
INQUIRY_EXTERNALSTATE_COLOR,
INQUIRY_INTERNALSTATE_COLOR
} from '../../constants';
import Table from '../../components/table'
import ModalOperate from '../../components/modalOperate';
import {
BID_EXTERNALSTATE_COLOR,
BID_INTERNALSTATE_COLOR
} from '../../constants/purchaseBid';
const { Text } = Typography;
const Search = () => {
......@@ -27,39 +30,40 @@ const Search = () => {
render: (t, r, i) => ++i
}, {
title: '竞价单号/摘要',
key: 'purchaseInquiryNo',
dataIndex: 'purchaseInquiryNo',
key: 'biddingNo',
dataIndex: 'biddingNo',
render: (text: any, record: any) => (
<Space direction='vertical'>
<EyePreview
url={`/memberCenter/procurementAbility/purchaseBid/search/detail?id=${record.id}&number=${record.purchaseInquiryNo}`}>{text}</EyePreview>
url={`/memberCenter/procurementAbility/purchaseBid/search/detail?id=${record.id}&number=${record.biddingNo}`}>{text}</EyePreview>
<Text type="secondary">{record.details}</Text>
</Space>
)
}, {
title: '竞价开始/结束时间',
key: 'deliveryTime',
dataIndex: 'deliveryTime',
key: 'biddingStartTime',
dataIndex: 'biddingStartTime',
render: (text: any, record: any) => <>
<div><PlayCircleOutlined />&nbsp;{formatTimeString(record.inviteTender.registerStartTime)}</div>
<div><PoweroffOutlined />&nbsp;{formatTimeString(record.inviteTender.registerEndTime)}</div>
<div><PlayCircleOutlined />&nbsp;{formatTimeString(record.biddingStartTime)}</div>
<div><PoweroffOutlined />&nbsp;{formatTimeString(record.biddingEndTime)}</div>
</>,
width: 180
}, {
title: '单据时间',
key: 'voucherTime',
dataIndex: 'voucherTime',
render: (text: any, record: any) => formatTimeString(text)
key: 'createTime',
dataIndex: 'createTime',
render: (text: any, record: any) => formatTimeString(text),
width: 180
}, {
title: '外部状态',
key: 'externalState',
dataIndex: 'externalState',
render: (text: any, record: any) => <Tag color={INQUIRY_EXTERNALSTATE_COLOR[text]}>{record.externalStateName}</Tag>
render: (text: any, record: any) => <Tag color={BID_EXTERNALSTATE_COLOR[text]}>{record.externalStateName}</Tag>
}, {
title: '内部状态',
key: 'interiorState',
dataIndex: 'interiorState',
render: (text: any, record: any) => <Badge status={INQUIRY_INTERNALSTATE_COLOR[text]} text={record.interiorStateName} />
render: (text: any, record: any) => <Badge status={BID_INTERNALSTATE_COLOR[text]} text={record.interiorStateName} />
}, {
title: '操作',
key: 'operate',
......@@ -68,7 +72,6 @@ const Search = () => {
<>
<Button
type='link'
disabled={(record.interiorState === -1 && record.externalState === -1)}
onClick={() => {
setId(record.id);
setVisible(true);
......@@ -90,8 +93,8 @@ const Search = () => {
<Table
schemaType="PURCHASEBIDORDER_SCHEMA"
columns={columns}
effects="purchaseInquiryNo"
fetch={PublicApi.getPurchasePurchaseInquiryList}
effects="biddingNo"
fetch={PublicApi.getPurchaseBiddingList}
reload={ref}
/>
<ModalOperate
......@@ -101,7 +104,7 @@ const Search = () => {
modalType='abandon'
onOk={() => handleSubmit()}
onCancel={() => setVisible(false)}
fetch={PublicApi.postPurchasePurchaseInquiryCancel}
fetch={PublicApi.postPurchaseBiddingDiscard}
/>
</>
)
......
import { ISchema } from '@formily/antd'
import { FORM_FILTER_PATH } from '@/formSchema/const'
import { PublicApi } from '@/services/api'
import { FILTEREXTERNALBIDSTATE, FILTERINTERNALBIDSTATE } from '../constants/onlineBid'
/** 在线竞价 - 采购竞价单查询 */
export const ONLINEBIDORDER_SCHEMA: ISchema = {
type: 'object',
properties: {
megalayout: {
type: 'object',
"x-component": 'mega-layout',
properties: {
purchaseInquiryNo: {
type: 'string',
"x-component": "Search",
"x-mega-props": {
},
"x-component-props": {
placeholder: '竞价单号',
align: 'flex-left',
}
}
}
},
[FORM_FILTER_PATH]: {
type: 'object',
"x-component": "flex-layout",
"x-component-props": {
rowStyle: {
justifyContent: 'flex-start',
flexWrap: 'nowrap'
},
colStyle: {//改变间隔
marginRight: 20
}
},
properties: {
PRO_LAYOUT: {
type: 'object',
"x-component": 'mega-layout',
"x-mega-props": {
span: 5
},
"x-component-props": {
inline: true
},
properties: {
details: {
type: 'string',
"x-component-props": {
placeholder: '竞价单摘要',
}
},
memberName: {
type: 'string',
"x-component-props": {
placeholder: '采购会员',
}
},
"[startTime,endTime]": {
type: 'string',
"x-component": "dateSelect",
"x-component-props": {
placeholder: '报名开始时间',
}
},
externalState: {
type: 'string',
"x-component-props": {
placeholder: '外部状态',
style: {
width: 160
}
},
enum: FILTEREXTERNALBIDSTATE
},
interiorState: {
type: 'string',
"x-component-props": {
placeholder: '内部状态',
style: {
width: 160
}
},
enum: FILTERINTERNALBIDSTATE
},
}
},
sumbit: {
"x-component": 'Submit',
"x-mega-props": {
span: 1
},
"x-component-props": {
children: '查询'
}
}
}
}
}
}
/** 在线竞价 - 待竞价报名 */
export const ONLINEBIDREADYSIGN_SCHEMA: ISchema = {
type: 'object',
properties: {
megalayout: {
type: 'object',
"x-component": 'mega-layout',
"x-component-props": {
grid: true
},
properties: {
biddingNo: {
type: 'string',
"x-component": "Search",
"x-mega-props": {
},
"x-component-props": {
placeholder: '竞价单号'
}
}
}
},
[FORM_FILTER_PATH]: {
type: 'object',
"x-component": "flex-layout",
"x-component-props": {
rowStyle: {
flexWrap: 'nowrap'
},
colStyle: {
marginLeft: 20
}
},
properties: {
PRO_LAYOUT: {
type: 'object',
"x-component": 'mega-layout',
"x-mega-props": {
span: 5
},
"x-component-props": {
inline: true
},
properties: {
details: {
type: 'string',
"x-component-props": {
placeholder: '竞价单摘要'
}
},
memberName: {
type: 'string',
"x-component-props": {
placeholder: '采购会员',
}
},
"[startTime,endTime]": {
type: 'string',
"x-component": "dateSelect",
"x-component-props": {
placeholder: '报名开始时间',
}
},
}
},
sumbit: {
"x-component": 'Submit',
"x-mega-props": {
span: 1
},
"x-component-props": {
children: '查询'
}
}
}
}
}
}
/** 在线竞价 - 待竞价报名 */
export const ONLINEBIDREADYBID_SCHEMA: ISchema = {
type: 'object',
properties: {
megalayout: {
type: 'object',
"x-component": 'mega-layout',
"x-component-props": {
grid: true
},
properties: {
biddingNo: {
type: 'string',
"x-component": "Search",
"x-mega-props": {
},
"x-component-props": {
placeholder: '竞价单号'
}
}
}
},
[FORM_FILTER_PATH]: {
type: 'object',
"x-component": "flex-layout",
"x-component-props": {
rowStyle: {
flexWrap: 'nowrap'
},
colStyle: {
marginLeft: 20
}
},
properties: {
PRO_LAYOUT: {
type: 'object',
"x-component": 'mega-layout',
"x-mega-props": {
span: 5
},
"x-component-props": {
inline: true
},
properties: {
details: {
type: 'string',
"x-component-props": {
placeholder: '竞价单摘要'
}
},
memberName: {
type: 'string',
"x-component-props": {
placeholder: '采购会员',
}
},
"[startTime,endTime]": {
type: 'string',
"x-component": "dateSelect",
"x-component-props": {
placeholder: '竞价开始时间',
}
},
}
},
sumbit: {
"x-component": 'Submit',
"x-mega-props": {
span: 1
},
"x-component-props": {
children: '查询'
}
}
}
}
}
}
\ No newline at end of file
......@@ -11,7 +11,7 @@ export const PURCHASEBIDORDER_SCHEMA: ISchema = {
type: 'object',
"x-component": 'mega-layout',
properties: {
purchaseInquiryNo: {
biddingNo: {
type: 'string',
"x-component": "Search",
"x-mega-props": {
......@@ -114,7 +114,7 @@ export const PURCHASEBIDREADYADD_SCHEMA: ISchema = {
children: "{{controllerBtns}}"
}
},
purchaseInquiryNo: {
biddingNo: {
type: 'string',
"x-component": "Search",
"x-mega-props": {
......@@ -185,7 +185,7 @@ export const PURCHASEBIDOSIGNUP_SCHEMA: ISchema = {
type: 'object',
"x-component": 'mega-layout',
properties: {
purchaseInquiryNo: {
biddingNo: {
type: 'string',
"x-component": "Search",
"x-mega-props": {
......
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