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

fix: 投标的招标查询投标查询待招标报名

parent bb169f46
import React, { useEffect, useState } from 'react'
import React, { useEffect, useRef, useState } from 'react'
import { Row, Col, Select, Form, Button, message } from 'antd';
import styled from 'styled-components'
import { PublicApi } from '@/services/api';
......@@ -47,6 +47,7 @@ const MultAddress = (props) => {
const [code, setcode] = useState<any>([]);
const [province, setprovince] = useState<any>([]); // 省列表
const [city, setcity] = useState<any>([]); // 市列表
const flag = useRef<boolean>(true)
useEffect(() => {
PublicApi.getManageAreaAll().then(res => {
......@@ -57,14 +58,26 @@ const MultAddress = (props) => {
}, [])
useEffect(() => {
console.log(value, 'vvv')
value.forEach((item , index) => {
renderProvice([...value], item['provinceCode'], index).then(() => {
renderCity([...value], item['cityCode'], index)
})
if(item.provinceCode) {
renderProvice([...value], item['provinceCode'], index).then(() => {
renderCity([...value], item['cityCode'], index)
})
}
})
}, [province])
useEffect(() => {
if(flag.current && value[0]['provinceCode']) {
value.forEach((item , index) => {
renderProvice([...value], item['provinceCode'], index).then(() => {
renderCity([...value], item['cityCode'], index)
})
})
flag.current = false
}
}, [value])
// 触发onChange改变值
const changeAddress = async (val: any, idx: number, num: number) => {
const result = [...value]
......@@ -77,33 +90,8 @@ const MultAddress = (props) => {
setcode([...cityCode]);
if (num === 1) {
renderProvice(result, val, idx)
// await province.forEach(item => {
// if (item.code === val) {
// PublicApi.getManageAreaByPcodeAll({ pcode: val }).then((res: any) => {
// if (res.code === 1000) {
// result[idx].provinceCode = val;
// result[idx].province = item.name;
// city[idx] = { citydata: res.data }
// setcity([...city])
// }
// })
// }
// })
} else if(num === 2) {
renderCity(result, val, idx)
// city.forEach(item => {
// item.citydata.forEach(items => {
// if (items.code === val) {
// const cityCode = code.find(it => items.code);
// if (cityCode !== items.code) {
// items.disabled = false
// }
// result[idx].cityCode = val;
// result[idx].city = items.name;
// }
// })
// })
// setcity([...city])
}
mutators.change(result)
}
......@@ -184,7 +172,6 @@ const MultAddress = (props) => {
}
})
setcity(cityFilter)
console.log(requisitionFormAddressFilter, '删除')
mutators.change(requisitionFormAddressFilter)
}
......
......@@ -2056,52 +2056,55 @@ export const BidInStateTexts = {
// 招标 外部状态工作流状态
export enum BidOuterWorkState {
/** 提交招标 */
/** 提交招标 */
Submitted_Invite_Tender = 1,
/** 待平台审核招标 */
Not_Check_Invite_Tender = 2,
Platform_Not_Check_Invite_Tender = 2,
/** 平台审核不通过 */
Platform_Check_Not_Pass = 3,
/** 待招标报名 */
Not_Invite_Tender_Register = 3,
Not_Invite_Tender_Register = 4,
/** 待审核报名 */
Not_Check_Register_Check = 4,
Not_Check_Register_Check = 5,
/** 报名审核不通过 */
Register_Check_Not_Pass = 6,
/** 待提交资格预审 */
Not_Submitted_Qualifications_Check = 5,
Not_Submitted_Qualifications_Check = 7,
/** 待资格预审 */
Not_Qualifications_Check = 6,
Not_Qualifications_Check = 8,
/** 资格预审不通过 */
Qualifications_Check_Not_Pass = 9,
/** 待投标 */
Not_Invite_Tender = 7,
Not_Invite_Tender = 10,
/** 待开标 */
Not_Open_Tender = 8,
Not_Open_Tender = 11,
/** 待评标 */
Not_Selection_Tender = 9,
/** 待定标 */
Not_Finish_Tender = 10,
Not_Selection_Tender = 12,
/** 待中标公示 */
Not_Win_Notice = 11,
/** 待完成招标 */
Not_Finish_Invite_Tender = 12,
Not_Win_Notice = 13,
/** 完成招标 */
Finish_Invite_Tender = 13,
Finish_Invite_Tender = 14,
/** 已废标 */
Discard_Tender = 14,
Discard_Tender = 15,
}
/** 招标 外部状态 */
export const BidOutStateTexts = {
1: "提交招标",
2: '待平台审核招标',
3: '待招标报名',
4: '待审核报名',
5: '待提交资格预审',
6: '待资格预审',
7: '待投标',
8: '待开标',
9: '待评标',
10: '待定标',
11: '待中标公示',
12: '待完成招标',
13: '完成招标',
14: '已废标',
3: '平台审核不通过',
4: '待招标报名',
5: '待审核报名',
6: '报名审核不通过',
7: '待提交资格预审',
8: '待资格预审',
9: '资格预审不通过',
10: '待投标',
11: '待开标',
12: '待评标',
13: '待中标公示',
14: '完成招标',
15: '已废标',
}
......@@ -2137,3 +2140,84 @@ export const BidOutOpeartTexts = {
12: "完成招标",
13: "已废标",
}
//******投标** 内部状态工作流状态
export enum TenderInsideWorkState {
/** 未提交招标报名 */
NotSubmitted_Invite_Tender_Register = 1,
/** 已提交招标报名 */
Submitted_Invite_Tender_Register = 2,
/** 报名审核通过 */
Register_Check_Pass = 3,
/** 报名审核不通过 */
Register_Check_Not_Pass = 4,
/** 已提交资格预审 */
Submitted_Qualifications_Check = 5,
/** 资格预审审核通过 */
Qualifications_Check_Pass = 6,
/** 资格预审审核不通过 */
Qualifications_Check_Not_Pass = 7,
/** 待提交审核投标 */
Not_Submitted_Check_Submit_Tender = 8,
/** 审核投标通过 */
Check_Submit_Tender_Pass = 9,
/** 审核投标不通过 */
Check_Submit_Tender_Not_Pass = 10,
/** 已提交投标 */
Submitted_Submit_Tender = 11,
/** 提交评标报告 */
Submitted_Selection_Tender = 12,
/** 待提交审核定标 */
Not_Submitted_Check_Finish_Tender = 13,
/** 定标审核通过 */
Finish_Tender_Check_Pass = 14,
/** 定标审核不通过 **/
Finish_Tender_Check_Not_Pass = 15,
/** 待中标公示 */
Not_Win_Notice = 16,
/** 待完成招标 */
Not_Finish_Invite_Tender = 17,
/** 完成招标 */
Finish_Invite_Tender = 18,
/** 已废标 */
Discard_Tender = 19,
}
/** 投标 内部状态 */
export const TenderInStateTexts = {
1: "未提交招标报名",
2: "已提交招标报名",
3: "报名审核通过",
4: '报名审核不通过',
5: '已提交资格预审',
6: '资格预审审核通过',
7: '资格预审审核不通过',
8: '待提交审核投标',
9: '审核投标通过',
10: '审核投标不通过',
11: '已提交投标',
12: '提交评标报告',
13: '待提交审核定标',
14: '定标审核通过',
15: '定标审核不通过',
16: '待中标公示',
17: '待完成招标',
18: '完成招标',
19: '已废标',
}
/** 投标 内部操作文本 */
export const TenderInOpeartTexts = {
1: "投标报名",
2: "审核报名",
3: "审核资格",
4: "审核投标",
5: "完成评标",
6: "选择中标会员",
7: "审核定标",
8: "确认招标",
9: "发送中标公示",
10: "完成招标",
11: "已废标",
}
......@@ -59,7 +59,7 @@ const MemberModal:React.FC<MemberModalProps> = (props) => {
// rowSelectionCtl.setSelectedRowKeys([])
// rowSelectionCtl.setSelectRow([])
// } else {
let processedData = rowSelectionCtl.selectRow.map(item => ({ ...item, isSubMember: true, isSend: 0 }))
let processedData = rowSelectionCtl.selectRow.map(item => ({ ...item, isSubMember: true, isSend: true }))
schemaAction.setFieldValue('memberList', processedData)
// 冗余一份数据
schemaAction.setFieldState('memberList', state => {
......
......@@ -16,6 +16,7 @@ import { PublicApi } from '@/services/api'
import { goodFormSchema, goodSearch } from '../../schema/modal'
import { searchBrandOptionEffect, searchCustomerCategoryOptionEffect } from '../../effects'
import { treeReduction } from '@/utils'
import { usePageStatus, PageStatus } from '@/hooks/usePageStatus'
export interface RelevanceGoodDrawerProps {
type?: 'radio' | 'checkbox',
......@@ -44,6 +45,7 @@ export const RelevanceGoodDrawer:React.FC<RelevanceGoodDrawerProps> = ({
categorys: [],
units: []
})
const { pageStatus } = usePageStatus()
const { visible, setVisible } = useModalTable({type, customKey: 'id'})
const [childVisible, setChildVisible] = useState<boolean>(false)
const [selectRow, setSelectRow] = useState<any[]>([]) // 子级抽屉选择的行数据
......@@ -214,16 +216,14 @@ export const RelevanceGoodDrawer:React.FC<RelevanceGoodDrawerProps> = ({
})
$('onFieldValueChange', 'unitId').subscribe(state => {
const { value } = state
if(value) {
if(value && pageStatus !== PageStatus.EDIT) {
let _v = cacheRef.current.units.filter(item => item.id === value)[0]['name']
ctx.setFieldValue('unitName', _v)
}
})
$('onFieldValueChange', 'categoryId').subscribe(state => {
const { value } = state
if(value.length) {
console.log(state.props, cacheRef.current)
// let _v = treeReduction(state.props["x-component-props"].options)[value[value.length -1]]['title']
if(value.length && pageStatus !== PageStatus.EDIT) {
let _v = treeReduction(cacheRef.current.categorys)[value[value.length -1]]['title']
ctx.setFieldValue('categoryName', _v)
}
......
......@@ -66,11 +66,10 @@ export const paramsConversionFn = (value) => {
value['memberList'] = _value['memberList'].map(item => {
let param = {
id: item.id,
memberId: item.memberId,
memberName: item.name,
memberTypeName: item.memberTypeName,
memberRoleId: item.roleId,
memberRoleName: item.roleName,
...item,
}
if(!id) delete param.id
return param
......@@ -115,8 +114,8 @@ export const paramsRenderFn = (value) => {
value['createTime'] = unixChangeRender(_value['createTime'])
// 状态转换
value['inStatus'] = BidInStateTexts[_value['inStatus']]
value['outStatus'] = BidOutStateTexts[_value['outStatus']]
value['inviteTenderInStatus'] = BidInStateTexts[_value['inviteTenderInStatus']]
value['tenderOutStatus'] = BidOutStateTexts[_value['tenderOutStatus']]
value['addMode'] = 1
......
......@@ -108,12 +108,15 @@ const AddNewBid:React.FC<AddNewBidProps> = (props) => {
return message.error('评标开始时间大于开标时间')
}
let res = await PublicApi.postPurchaseInviteTenderSaveOrUpdateInviteTender({...params, id})
if(res.code === 1000) {
history.goBack()
} else {
setBtnLoading(false)
if(id) {
params['id'] = id
}
let res = await PublicApi.postPurchaseInviteTenderSaveOrUpdateInviteTender(params)
// if(res.code === 1000) {
// history.goBack()
// } else {
// setBtnLoading(false)
// }
}
const providerValue = {
......
......@@ -57,17 +57,21 @@ export const goodFormSchema: ISchema = {
"x-component-props": {
// disabled: true,
addonAfter: "{{connectGood}}",
placeholder: '最长20个字符,10个汉字'
placeholder: '最长20个字符'
},
"x-rules": [
{
required: true,
message: '请填写或选择货品名称'
message: '请填写或选择货'
},
{
limitByte: true,
maxByte: 20
pattern: /^(?=.*\d)(?=.*[a-z_A-Z])(?=.*[~!@#$%^&*-_])[\da-zA-Z~!@#$%^&*-_]{1,20}$/,
message: '最长20个字符(由字母、数组、特殊字符组成)'
},
// {
// limitByte: true,
// maxByte: 20,
// },
]
},
name: {
......
......@@ -34,7 +34,9 @@ const callForBidsSearch: React.FC<{}> = () => {
} = useSelfTable(destoryRef, destroyActions, modifyRef, modifyActions, { setInviteTenderEndTime, setEvaluationEndTime })
const fetchTableData = async (params) => {
const { data } = await PublicApi.postPurchaseInviteTenderGetInviteTenderList(params, { ctlType: "none" })
let _params = params.inviteTenderInStatusList ? { ...params, inviteTenderInStatusList: [params.inviteTenderInStatusList] } : {...params}
let __params = _params.tenderOutStatusList ? { ..._params, tenderOutStatusList: [_params.tenderOutStatusList] } : {..._params}
const { data } = await PublicApi.postPurchaseInviteTenderGetInviteTenderList(__params, { ctlType: "none" })
return data
}
......
......@@ -49,7 +49,7 @@ export const tableListSchema: ISchema = {
placeholder: ['报名开始时间','报名结束时间'],
},
},
"tenderOutStatus": {
"tenderOutStatusList": {
type: 'string',
"x-component-props": {
placeholder: '请选择外部状态'
......
......@@ -19,7 +19,7 @@ export interface FirstCheckedBidProps {}
const fetchTableData = async (params) => {
const { data } = await PublicApi.postPurchaseInviteTenderGetInviteTenderList({
...params,
tenderOutStatus: 1,
tenderOutStatusList: [1],
inviteTenderInStatusList: [2]
}, { ctlType: "none" })
return data
......@@ -40,7 +40,7 @@ const FirstCheckedBid:React.FC<FirstCheckedBidProps> = (props) => {
message.error('请先选择招标')
return ;
}
const canBitch = !rowSelectionCtl.selectRow.some(v => v.inviteTenderInStatusList !== BidInsideWorkState.Not_Tender_Check)
const canBitch = !rowSelectionCtl.selectRow.some(v => v.inviteTenderInStatus !== BidInsideWorkState.Not_Tender_Check)
if (canBitch) {
const { code } = await run({idList: rowSelectionCtl.selectedRowKeys})
if (code === 1000) {
......
import React, { useRef } from 'react'
import { Button } from 'antd'
import { Button, message } from 'antd'
import { history } from 'umi'
import { useRowSelectionTable } from '@/hooks/useRowSelectionTable'
import { BidInsideWorkState, PurchaseOrderInsideWorkState } from '@/constants'
import { BidInsideWorkState } from '@/constants'
import { baseBidListColumns } from '@/pages/procurement/constants'
// 待审核招标一级 hook
......@@ -11,8 +11,10 @@ export const useSelfTable = () => {
const [rowSelection, rowSelectionCtl] = useRowSelectionTable({customKey: 'id'})
const handleSubmit = async (record) => {
if (record.inviteTenderInStatusList === BidInsideWorkState.Not_Tender_Check) {
if (record.inviteTenderInStatus === BidInsideWorkState.Not_Tender_Check) {
history.push(`/memberCenter/procurementAbility/callForBids/firstCheckedBid/detail?id=${record.id}&action=1`)
} else {
message.error('只能审核内部状态为待审核招标的招标')
}
}
const secondColumns: any[] = baseBidListColumns.concat([
......
......@@ -22,7 +22,7 @@ export interface ReadyAddBidProps {}
const fetchTableData = async (params) => {
const { data } = await PublicApi.postPurchaseInviteTenderGetInviteTenderList({
...params,
tenderOutStatus: 1,
tenderOutStatusList: [1],
inviteTenderInStatusList: [1, 4]
}, { ctlType: "none" })
return data
......@@ -40,7 +40,7 @@ const ReadyAddBid:React.FC<ReadyAddBidProps> = (props) => {
switch(e.key) {
case '1': {
// 批量删除
const canDelete = !rowSelectionCtl.selectRow.some(v => v.inviteTenderInStatusList !== BidInsideWorkState.Not_Submitted_Check_Invite_Tender)
const canDelete = !rowSelectionCtl.selectRow.some(v => v.inviteTenderInStatus !== BidInsideWorkState.Not_Submitted_Check_Invite_Tender)
if (canDelete) {
const { code } = await deleteRun({idList: rowSelectionCtl.selectedRowKeys})
if (code === 1000) {
......@@ -57,7 +57,7 @@ const ReadyAddBid:React.FC<ReadyAddBidProps> = (props) => {
}
// 批量审核
const handleBitchPush = async () => {
const canDelete = !rowSelectionCtl.selectRow.some(v => v.inviteTenderInStatusList !== BidInsideWorkState.Not_Submitted_Check_Invite_Tender)
const canDelete = !rowSelectionCtl.selectRow.some(v => v.inviteTenderInStatus !== BidInsideWorkState.Not_Submitted_Check_Invite_Tender)
if (canDelete) {
const { code } = await submitRun({idList: rowSelectionCtl.selectedRowKeys})
if (code === 1000) {
......
......@@ -13,7 +13,7 @@ export const useSelfTable = () => {
const handleSubmit = async (record) => {
// 从待新增直接传到一级审核, 状态写死
if(record.inviteTenderInStatusList !== BidInsideWorkState.Not_Submitted_Check_Invite_Tender) {
if(record.inviteTenderInStatus !== BidInsideWorkState.Not_Submitted_Check_Invite_Tender) {
return message.error('只能提交内部状态为待提交审核招标的招标')
}
await PublicApi.postPurchaseInviteTenderApplyCheckInviteTender({idList: [record.id]})
......@@ -21,7 +21,7 @@ export const useSelfTable = () => {
}
const handleDelete = async (record) => {
if(record.inviteTenderInStatusList !== BidInsideWorkState.Not_Submitted_Check_Invite_Tender) {
if(record.inviteTenderInStatus !== BidInsideWorkState.Not_Submitted_Check_Invite_Tender) {
return message.error('只能删除内部状态为待提交审核且从未提交过审核的招标')
}
await PublicApi.postPurchaseInviteTenderDeleteInviteTender({idList: [record.id]})
......
......@@ -17,8 +17,7 @@ export interface ReadyCheckedRegisterProps {}
const fetchTableData = async (params) => {
const { data } = await PublicApi.postPurchaseInviteTenderGetInviteTenderList({
...params,
tenderOutStatus: 2,
inviteTenderInStatusList: [5]
tenderOutStatusList: [5]
}, { ctlType: "none" })
return data
}
......
import React, { useRef } from 'react'
import { Button } from 'antd'
import { Button, message } from 'antd'
import { history } from 'umi'
import { baseBidListColumns } from '@/pages/procurement/constants'
import { BidInsideWorkState } from '@/constants'
// 待审核报名 招标
export const useSelfTable = () => {
const ref = useRef<any>({})
const handleSubmit = async (record) => {
history.push(`/memberCenter/procurementAbility/callForBids/readyCheckedRegister/detail?id=${record.id}&action=1`)
// if(record.inviteTenderInStatus === BidInsideWorkState) {
history.push(`/memberCenter/procurementAbility/callForBids/readyCheckedRegister/detail?id=${record.id}&action=1`)
// } else {
// message.error('只能审核内部状态为待审核报名的招标')
// }
}
const secondColumns: any[] = baseBidListColumns.concat([
{
......
......@@ -21,11 +21,13 @@ import { useHttpRequest } from '@/hooks/useHttpRequest'
export interface ReadyQualifityCheckedProps {}
const fetchTableData = async (params) => {
const { data } = await PublicApi.getOrderProcurementReviewedListOne(params)
const { data } = await PublicApi.postPurchaseInviteTenderGetInviteTenderList({
...params,
tenderOutStatusList: [5],
}, { ctlType: "none" })
return data
}
// TODO
const ReadyQualifityChecked:React.FC<ReadyQualifityCheckedProps> = (props) => {
const {
columns,
......@@ -34,30 +36,10 @@ const ReadyQualifityChecked:React.FC<ReadyQualifityCheckedProps> = (props) => {
rowSelectionCtl
} = useSelfTable()
const { run, loading } = useHttpRequest(PublicApi.postOrderProcurementOrderReviewedAll)
const handleSubmitBatch = async () => {
if (rowSelectionCtl.selectRow.length === 0) {
message.error('请先勾选订单')
return ;
}
const canBitch = !rowSelectionCtl.selectRow.some(v => v.interiorState !== PurchaseOrderInsideWorkState.ONE_LEVEL_AUDIT_ORDER)
if (canBitch) {
const { code } = await run({ids: rowSelectionCtl.selectedRowKeys})
if (code === 1000) {
ref.current.reload()
rowSelectionCtl.setSelectRow([])
rowSelectionCtl.setSelectedRowKeys([])
}
} else {
message.error('只能批量提交内部状态为审核中的订单')
}
}
return <PageHeaderWrapper>
<Card>
<StandardTable
fetchTableData={params => fetchTableData(params)}
rowSelection={rowSelection}
columns={columns}
currentRef={ref}
rowKey={'id'}
......@@ -72,7 +54,7 @@ const ReadyQualifityChecked:React.FC<ReadyQualifityCheckedProps> = (props) => {
useStateFilterSearchLinkageEffect(
$,
actions,
'orderNo',
'code',
FORM_FILTER_PATH,
);
},
......@@ -86,14 +68,6 @@ const ReadyQualifityChecked:React.FC<ReadyQualifityCheckedProps> = (props) => {
span: 24
}
}}
formilyChilds={{
children: <Space>
<Button onClick={handleSubmitBatch} loading={loading}>批量审核通过</Button>
</Space>,
layouts: {
span: 8
}
}}
/>
</Card>
</PageHeaderWrapper>
......
import { ISchema } from '@formily/antd';
import { FORM_FILTER_PATH } from '@/formSchema/const';
import { OrderTypeMap, PurchaseOrderInsideWorkStateTexts, PurchaseOrderOutWorkStateTexts } from '@/constants';
import { OrderTypeMap } from '@/constants';
/**
* 除了订单必填字段, 默认
......@@ -8,7 +8,7 @@ import { OrderTypeMap, PurchaseOrderInsideWorkStateTexts, PurchaseOrderOutWorkSt
export const tableListSchema: ISchema = {
type: 'object',
properties: {
orderNo: {
code: {
type: 'string',
"x-component": 'SearchFilter',
'x-component-props': {
......
......@@ -20,7 +20,7 @@ export interface ReadySubmitBidProps {}
const fetchTableData = async (params) => {
const { data } = await PublicApi.postPurchaseInviteTenderGetInviteTenderList({
...params,
tenderOutStatus: 1,
tenderOutStatusList: [1],
inviteTenderInStatusList: [3]
}, { ctlType: "none" })
return data
......@@ -41,7 +41,7 @@ const ReadySubmitBid:React.FC<ReadySubmitBidProps> = (props) => {
message.error('请先选择招标')
return ;
}
const canBitch = !rowSelectionCtl.selectRow.some(v => v.inviteTenderInStatusList !== BidInsideWorkState.Tender_Check_Pass)
const canBitch = !rowSelectionCtl.selectRow.some(v => v.inviteTenderInStatus !== BidInsideWorkState.Tender_Check_Pass)
if (canBitch) {
const { code } = await run({idList: rowSelectionCtl.selectedRowKeys})
if (code === 1000) {
......
......@@ -18,7 +18,9 @@ const TenderSearch: React.FC<{}> = () => {
} = useSelfTable()
const fetchTableData = async (params) => {
const { data } = await PublicApi.postPurchaseInviteTenderGetSubmitTenderList(params)
let _params = params.inviteTenderInStatusList ? { ...params, inviteTenderInStatusList: [params.inviteTenderInStatusList] } : {...params}
let __params = _params.tenderOutStatusList ? { ..._params, tenderOutStatusList: [_params.tenderOutStatusList] } : {..._params}
const { data } = await PublicApi.postPurchaseInviteTenderGetSubmitTenderList(__params, { ctlType: "none" })
return data
}
......@@ -29,7 +31,7 @@ const TenderSearch: React.FC<{}> = () => {
fetchTableData={params => fetchTableData(params)}
currentRef={ref}
columns={columns}
rowKey={'orderNo'}
rowKey={'id'}
formilyLayouts={{
justify: 'space-between'
}}
......
......@@ -56,17 +56,17 @@ export const useSelfTable = () => {
{
title: '投标时间',
align: 'center',
dataIndex: 'inviteTenderStartTime',
key: 'inviteTenderStartTime',
render: (text, record) => formatTimeString(text),
dataIndex: 'inviteTender',
key: 'inviteTender',
render: (text, record) => formatTimeString(record.inviteTender.inviteTenderStartTime),
width: 200
},
{
title: '开标时间',
align: 'center',
dataIndex: 'openTenderTime',
key: 'openTenderTime',
render: (text, record) => formatTimeString(text),
dataIndex: 'inviteTender',
key: 'inviteTender',
render: (text, record) => formatTimeString(record.inviteTender.openTenderTime),
width: 200
},
{
......@@ -79,9 +79,9 @@ export const useSelfTable = () => {
{
title: '外部状态',
align: 'center',
dataIndex: 'tenderOutStatus',
key: 'tenderOutStatus',
render: text => <CustomTag status={text} type='out' />
dataIndex: 'inviteTender',
key: 'inviteTender',
render: (text, record) => <CustomTag status={record.inviteTender.tenderOutStatus} type='out' />
},
// {
// title: '内部状态',
......
......@@ -55,7 +55,7 @@ export const tableListSchema: ISchema = {
placeholder: '请输入投标会员',
}
},
tenderOutStatus: {
tenderOutStatusList: {
type: 'string',
"x-component-props": {
placeholder: '请选择外部状态'
......
......@@ -44,15 +44,15 @@ const BidMethod: React.FC<BidMethodProps> = ({cardTitle}) => {
},
{
title: '是否归属会员',
dataIndex: 'isAffiliate',
key: 'isAffiliate',
dataIndex: 'isSubMember',
key: 'isSubMember',
render: (t, r) => t ? '是' : '否',
},
{
title: <>状态<Tooltip title="打开开关,审核通过后,将招标发至对应的会员"><span>&nbsp;<QuestionCircleOutlined /></span></Tooltip></>,
dataIndex: 'status',
key: 'status',
render: (text, record) => <Switch disabled defaultChecked onChange={() => onChange(record)} />
dataIndex: 'isSend',
key: 'isSend',
render: (text, record) => <Switch disabled defaultChecked={text} onChange={() => onChange(record)} />
},
{
title: '操作',
......
import React from 'react'
import { BidInStateTexts, BidOutStateTexts } from '@/constants'
import { BidInStateTexts, BidOutStateTexts, TenderInStateTexts } from '@/constants'
// 用于标签状态控制
export interface StatusColorsProps {
status: number,
type: 'out' | 'inside'
type: 'out' | 'inside' | 'tenderInside'
}
// className映射
......@@ -30,8 +30,12 @@ const CustomBadge: React.FC<StatusColorsProps> = (props) => {
const { status, type } = props
const typeMaps = {
/** 招标外部状态 */
'out': BidOutStateTexts,
/** 招标内部状态 */
'inside': BidInStateTexts,
/** 投标内部状态 */
'tenderInside': TenderInStateTexts,
}
const statusText = typeMaps[type]
......
import React from 'react'
import { Tag } from 'antd'
import { BidInStateTexts, BidOutStateTexts } from '@/constants'
import { BidInStateTexts, BidOutStateTexts, TenderInStateTexts } from '@/constants'
// 用于标签状态控制
export interface StatusColorsProps {
status: number,
/** 外部状态 内部状态 外部流转状态 内部流转状态 */
type: 'out' | 'inside' | 'transformInside' | 'transformOut'
type: 'out' | 'inside' | 'transformInside' | 'transformOut' | 'tenderInside'
}
// 颜色映射
......@@ -31,8 +31,14 @@ const CustomTag: React.FC<StatusColorsProps> = (props) => {
const { status, type } = props
const typeMaps = {
/** 招标外部状态 */
'out': BidOutStateTexts,
/** 招标内部状态 */
'inside': BidInStateTexts,
/** 投标内部状态 */
'tenderInside': TenderInStateTexts,
// /** 投标外部状态 */
// 'tenderOut': BidOutStateTexts,
}
const statusText = typeMaps[type]
......
......@@ -11,8 +11,8 @@ import BidDetailHeader from '@/pages/procurement/components/bidDetailHeader';
import BidDetailSection from '@/pages/procurement/components/bidDetailSection';
const CallForBidsSearchDetailInTender: React.FC = () => {
const { formContext, id, detailList } = useBidDetail({type: 'purchaseOrder'})
const {data, currentPayInfoId} = formContext
const { formContext, id } = useBidDetail({type: 'callForBid'})
const { data } = formContext
const payRef = useRef<any>({})
......@@ -37,15 +37,9 @@ const CallForBidsSearchDetailInTender: React.FC = () => {
<div>
<BidDetailContext.Provider value={formContext}>
<BidDetailHeader
detailList={detailList}
formContext={formContext}
anchorList={anchorTitleList}
backLink="/memberCenter/procurementAbility/tender/callForBidsSearch"
// extraRight={
// <Button type='primary'>
// 去支付
// </Button>
// }
/>
<OrderDetailWrapper>
<PreLoading loading={!formContext.data} active paragraph={{rows: 6}}>
......
import React from 'react'
import { Card} from 'antd'
import { Card } from 'antd'
import { PageHeaderWrapper } from '@ant-design/pro-layout'
import { StandardTable } from 'god'
import { useStateFilterSearchLinkageEffect } from '@/formSchema/effects/useFilterSearch'
......@@ -10,6 +10,7 @@ import Submit from '@/components/NiceForm/components/Submit'
import DateRangePickerUnix from '@/components/NiceForm/components/DateRangePickerUnix'
import { PublicApi } from '@/services/api'
const callForBidsSearch: React.FC<{}> = () => {
const {
......@@ -18,41 +19,42 @@ const callForBidsSearch: React.FC<{}> = () => {
} = useSelfTable()
const fetchTableData = async (params) => {
const { data } = await PublicApi.postPurchaseSubmitTenderGetInviteTenderList(params)
const { data } = await PublicApi.postPurchaseSubmitTenderGetInviteTenderList(params, { ctlType: "none" })
return data
}
return (
<PageHeaderWrapper>
<Card>
<StandardTable
fetchTableData={params => fetchTableData(params)}
currentRef={ref}
columns={columns}
rowKey={'code'}
formilyLayouts={{
justify: 'space-between'
}}
formilyProps={{
ctx: {
inline: false,
schema: tableListSchema,
effects: ($, actions) => {
useStateFilterSearchLinkageEffect(
$,
actions,
'orderNo',
FORM_FILTER_PATH,
);
},
components: {
DateRangePickerUnix,
Submit
<StandardTable
fetchTableData={params => fetchTableData(params)}
currentRef={ref}
columns={columns}
rowKey={'id'}
formilyLayouts={{
justify: 'space-between'
}}
formilyProps={{
ctx: {
inline: false,
schema: tableListSchema,
effects: ($, actions) => {
useStateFilterSearchLinkageEffect(
$,
actions,
'code',
FORM_FILTER_PATH,
);
},
components: {
DateRangePickerUnix,
Submit
}
}
}
}}
/>
</Card>
}}
/>
</Card>
</PageHeaderWrapper>
)
}
......
import React, { useRef } from 'react'
import { history } from 'umi'
import { Button, Popconfirm } from 'antd'
import { PublicApi } from '@/services/api'
import EyePreview from '@/components/EyePreview'
import { formatTimeString } from '@/utils'
import { ORDER_TYPE } from '@/constants'
import { CALLFORBID_TYPE, PURCHASE_TYPE } from '@/constants'
import { PlayCircleOutlined, PoweroffOutlined } from '@ant-design/icons'
import CustomTag from '@/pages/procurement/components/CustomTag'
import CustomBadge from '@/pages/procurement/components/customBadge'
......@@ -13,14 +10,6 @@ import CustomBadge from '@/pages/procurement/components/customBadge'
export const useSelfTable = () => {
const ref = useRef<any>({})
const handleCancel = (param) => {
PublicApi.postOrderPurchaseOrderCancel({id: param}).then(res => {
if(res.code === 1000) {
ref.current.reload()
}
})
}
const callForBidColumns: any[] = [
{
title: '序号',
......@@ -32,27 +21,28 @@ export const useSelfTable = () => {
{
title: '招标编号/项目',
align: 'center',
dataIndex: 'orderNo',
key: 'orderNo',
dataIndex: 'code',
key: 'code',
render: (text, record) => <>
<EyePreview url={`/memberCenter/procurementAbility/tender/callForBidsSearch/detail?id=${record.id}`}>
{text}
</EyePreview>
<div>{text}</div>
<div>{record['projectName']}</div>
</>
},
{
title: '采购类型',
align: 'center',
dataIndex: 'type',
key: 'type',
render: (text) => ORDER_TYPE[text]
dataIndex: 'purchaseType',
key: 'purchaseType',
render: (t) => PURCHASE_TYPE[t]
},
{
title: '招标方式',
align: 'left',
dataIndex: 'supplyMembersName',
key: 'supplyMembersName',
align: 'center',
dataIndex: 'inviteTenderType',
key: 'inviteTenderType',
render: (t) => CALLFORBID_TYPE[t]
},
{
title: '发布时间',
......@@ -60,72 +50,55 @@ export const useSelfTable = () => {
dataIndex: 'createTime',
key: 'createTime',
render: (text, record) => formatTimeString(record.createTime),
width: 200
width: 180
},
{
title: '报名开始/截止时间',
align: 'center',
dataIndex: 'createTime',
key: 'createTime',
dataIndex: 'registerStartTime',
key: 'registerStartTime',
render: (text, record) => <>
<div><PlayCircleOutlined />{formatTimeString(record.createTime)}</div>
<div><PoweroffOutlined />{formatTimeString(record.createTime)}</div>
<div><PlayCircleOutlined />&nbsp;{formatTimeString(record.registerStartTime)}</div>
<div><PoweroffOutlined />&nbsp;{formatTimeString(record.registerEndTime)}</div>
</>,
width: 200
width: 180
},
{
title: '资格预审开始/截止时间',
align: 'center',
dataIndex: 'createTime',
key: 'createTime',
dataIndex: 'checkStartTime',
key: 'checkStartTime',
render: (text, record) => <>
<div><PlayCircleOutlined />{formatTimeString(record.createTime)}</div>
<div><PoweroffOutlined />{formatTimeString(record.createTime)}</div>
{record.preCheckStartTime ? <div><PlayCircleOutlined />&nbsp;{formatTimeString(record.preCheckStartTime)}</div> : null}
{record.preCheckEndTime ? <div><PoweroffOutlined />&nbsp;{formatTimeString(record.preCheckEndTime)}</div> : null}
</>,
width: 200
width: 180
},
{
title: '投标开始/截止时间',
align: 'center',
dataIndex: 'createTime',
key: 'createTime',
dataIndex: 'inviteTenderStartTime',
key: 'inviteTenderStartTime',
render: (text, record) => <>
<div><PlayCircleOutlined />{formatTimeString(record.createTime)}</div>
<div><PoweroffOutlined />{formatTimeString(record.createTime)}</div>
<div><PlayCircleOutlined />&nbsp;{formatTimeString(record.inviteTenderStartTime)}</div>
<div><PoweroffOutlined />&nbsp;{formatTimeString(record.inviteTenderEndTime)}</div>
</>,
width: 200
width: 180
},
{
title: '外部状态',
align: 'center',
dataIndex: 'externalState',
key: 'externalState',
dataIndex: 'tenderOutStatus',
key: 'tenderOutStatus',
render: text => <CustomTag status={text} type='out' />
},
{
title: '内部状态',
align: 'center',
dataIndex: 'interiorState',
key: 'interiorState',
render: (text) => <CustomBadge status={text} type='inside' />
dataIndex: 'inviteTenderInStatus',
key: 'inviteTenderInStatus',
render: (text) => <CustomBadge status={text} type='tenderInside' />
},
{
title: '操作',
align: 'center',
dataIndex: 'ctl',
key: 'ctl',
render: (text, record) => <>
<Button type='link'>复制</Button>
<Popconfirm
title="是否要取消该订单?"
onConfirm={() => handleCancel(record.id)}
okText="是"
cancelText="否"
>
<Button type='link'>废标</Button>
</Popconfirm>
</>
}
]
return {
......
import { ISchema } from '@formily/antd';
import { FORM_FILTER_PATH } from '@/formSchema/const';
import { OrderTypeMap, PurchaseOrderInsideWorkStateTexts, PurchaseOrderOutWorkStateTexts } from '@/constants';
import { BidInStateTexts, BidOutStateTexts, OrderTypeMap, PurchaseOrderInsideWorkStateTexts, PurchaseOrderOutWorkStateTexts } from '@/constants';
/**
* 招标查询列表高级筛选
*/
export const tableListSchema: ISchema = {
export const tableListSchema: ISchema = {
type: 'object',
properties: {
orderNo: {
code: {
type: 'string',
"x-component": 'SearchFilter',
'x-component-props': {
......@@ -29,54 +29,54 @@ export const tableListSchema: ISchema = {
}
},
properties: {
orderThe: {
projectName: {
type: 'string',
'x-component-props': {
placeholder: '请输入招标项目',
}
},
"[startCreateTime,endCreateTime]": {
"[startTime,endTime]": {
type: 'array',
"x-component": 'DateRangePickerUnix',
'x-component-props': {
placeholder: ['发布开始时间','发布结束时间'],
},
},
"[startEnterTime,endEnterTime]": {
"[registerStartTime,registerEndTime]": {
type: 'array',
"x-component": 'DateRangePickerUnix',
'x-component-props': {
placeholder: ['报名开始时间','报名结束时间'],
},
},
"externalState": {
"tenderOutStatus": {
type: 'string',
"x-component-props": {
placeholder: '请选择外部状态'
},
enum: Object.keys(PurchaseOrderOutWorkStateTexts).map(item => ({
label: PurchaseOrderOutWorkStateTexts[item],
enum: Object.keys(BidOutStateTexts).map(item => ({
label: BidOutStateTexts[item],
value: item,
}))
},
"interiorState": {
"inviteTenderInStatusList": {
type: 'string',
"x-component-props": {
placeholder: '请选择内部状态'
},
enum: Object.keys(PurchaseOrderInsideWorkStateTexts).map(item => ({
label: PurchaseOrderInsideWorkStateTexts[item],
enum: Object.keys(BidInStateTexts).map(item => ({
label: BidInStateTexts[item],
value: item,
}))
},
"[startApplyTime,endApplyTime]": {
"[preCheckStartTime,preCheckEndTime]": {
type: 'array',
"x-component": 'DateRangePickerUnix',
'x-component-props': {
placeholder: ['预审开始时间','预审结束时间'],
},
},
"[startBidTime,endBidTime]": {
"[inviteTenderStartTime,inviteTenderEndTime]": {
type: 'array',
"x-component": 'DateRangePickerUnix',
'x-component-props': {
......@@ -93,3 +93,4 @@ export const tableListSchema: ISchema = {
},
}
}
import React from 'react'
import { history } from 'umi'
import { Card, Button, Space, Dropdown, Menu, message } from 'antd'
import { Card } from 'antd'
import { StandardTable } from 'god'
import { PageHeaderWrapper } from '@ant-design/pro-layout'
import { PublicApi } from '@/services/api'
import { PlusCircleOutlined, DownOutlined, DeleteOutlined } from '@ant-design/icons'
import DropDeleteDown from '@/components/DropDeleteDown'
import { tableListSchema } from './schema'
import { useStateFilterSearchLinkageEffect } from '@/formSchema/effects/useFilterSearch'
import { FORM_FILTER_PATH } from '@/formSchema/const'
import Submit from '@/components/NiceForm/components/Submit'
import { DatePicker } from '@formily/antd-components'
import { useSelfTable } from './model'
import { useRowSelectionTable } from '@/hooks/useRowSelectionTable'
import { PurchaseOrderInsideWorkState } from '@/constants'
import { useHttpRequest } from '@/hooks/useHttpRequest'
import DateRangePickerUnix from '@/components/NiceForm/components/DateRangePickerUnix'
// 待招标报名 投标
......@@ -22,48 +15,16 @@ import DateRangePickerUnix from '@/components/NiceForm/components/DateRangePicke
export interface ReadyBidRegisterProps {}
const fetchTableData = async (params) => {
const { data } = await PublicApi.getOrderProcurementStayAddList(params)
const { data } = await PublicApi.postPurchaseSubmitTenderGetSubmitTenderList({
...params,
tenderOutStatusList: [4, 6],
}, { ctlType: "none" })
return data
}
const ReadyBidRegister:React.FC<ReadyBidRegisterProps> = (props) => {
const { run: deleteRun } = useHttpRequest(PublicApi.postOrderProcurementOrderDeleteAll)
const { loading: submitLoading, run: submitRun } = useHttpRequest(PublicApi.postOrderProcurementOrderSubmitExamineAll)
const { columns, ref, rowSelection, rowSelectionCtl } = useSelfTable()
const handleMenuClick = async (e) => {
switch(e.key) {
case '1': {
// 批量删除
const canDelete = !rowSelectionCtl.selectRow.some(v => v.interiorState !== PurchaseOrderInsideWorkState.ADD_PURCHASE_ORDER)
if (canDelete) {
const { code } = await deleteRun({ids: rowSelectionCtl.selectedRowKeys})
if (code === 1000) {
ref.current.reload()
rowSelectionCtl.setSelectRow([])
rowSelectionCtl.setSelectedRowKeys([])
}
} else {
message.error('只能删除内部状态为未审核过的订单')
}
break;
}
}
}
const handleBitchPush = async () => {
const canBitch = !rowSelectionCtl.selectRow.some(v => v.interiorState !== PurchaseOrderInsideWorkState.ADD_PURCHASE_ORDER)
if (canBitch) {
const { code } = await submitRun({ids: rowSelectionCtl.selectedRowKeys})
if (code === 1000) {
ref.current.reload()
rowSelectionCtl.setSelectRow([])
rowSelectionCtl.setSelectedRowKeys([])
}
} else {
message.error('只能提交审核待新增的订单')
}
}
return <PageHeaderWrapper>
<Card>
......@@ -83,7 +44,7 @@ const ReadyBidRegister:React.FC<ReadyBidRegisterProps> = (props) => {
useStateFilterSearchLinkageEffect(
$,
actions,
'orderNo',
'code',
FORM_FILTER_PATH,
);
},
......@@ -97,20 +58,6 @@ const ReadyBidRegister:React.FC<ReadyBidRegisterProps> = (props) => {
span: 24
}
}}
// formilyChilds={{
// children: <Space>
// <Button
// icon={<PlusCircleOutlined/>}
// type='primary'
// onClick={() => history.push('/memberCenter/procurementAbility/tender/readyBidRegister/add')}
// >
// 新建
// </Button>
// </Space>,
// layouts: {
// span: 8
// }
// }}
/>
</Card>
</PageHeaderWrapper>
......
......@@ -7,7 +7,7 @@ import { FORM_FILTER_PATH } from '@/formSchema/const';
export const tableListSchema: ISchema = {
type: 'object',
properties: {
orderNo: {
code: {
type: 'string',
"x-component": 'SearchFilter',
'x-component-props': {
......
import React, { useState, useCallback, useRef, useContext, useEffect, createRef } from 'react';
import React, { useRef } from 'react';
import { history } from 'umi'
import { Button } from 'antd';
import style from './index.less'
......@@ -11,15 +11,10 @@ import BidDetailHeader from '@/pages/procurement/components/bidDetailHeader';
import BidDetailSection from '@/pages/procurement/components/bidDetailSection';
const TenderSearchDetail: React.FC = () => {
const { formContext, id, detailList } = useBidDetail({type: 'purchaseOrder'})
const {data, currentPayInfoId} = formContext
const { formContext, id } = useBidDetail({type: 'tender'})
const {data} = formContext
const payRef = useRef<any>({})
const contentRef = useRef<any>({})
/** 约定好 对应的锚点title和元素id映射 */
// type? 用于区分DescriptionsInfo组件的内容
// componentName? 用于区分不同组件的渲染
const anchorTitleList = [
{ title: '流转进度', id: 'transferProcess', componentName: "TransferProcess" },
......@@ -36,22 +31,8 @@ const TenderSearchDetail: React.FC = () => {
<div>
<BidDetailContext.Provider value={formContext}>
<BidDetailHeader
detailList={detailList}
formContext={formContext}
// detailData={formContext.data}
anchorList={anchorTitleList}
backLink="/memberCenter/procurementAbility/callForBids/tenderSearch"
extraRight={
<>
<Button type='primary'>
去支付
</Button>
<div style={{ textAlign: 'right' }}>
<p style={{ marginTop: 12, fontSize: 12, color: '#6B778C' }}>本次需支付</p>
{ formContext.data && <p>¥666</p> }
</div>
</>
}
/>
<OrderDetailWrapper>
<PreLoading loading={!formContext.data} active paragraph={{rows: 6}}>
......@@ -65,6 +46,6 @@ const TenderSearchDetail: React.FC = () => {
</BidDetailContext.Provider>
</div>
);
};
}
export default TenderSearchDetail;
export default TenderSearchDetail
import React, { useRef } from 'react'
import { Button, Popconfirm, Card, Space} from 'antd'
import React from 'react'
import { Card} from 'antd'
import { PageHeaderWrapper } from '@ant-design/pro-layout'
import { StandardTable } from 'god'
import { useStateFilterSearchLinkageEffect } from '@/formSchema/effects/useFilterSearch'
......@@ -18,41 +18,41 @@ const TenderSearch: React.FC<{}> = () => {
} = useSelfTable()
const fetchTableData = async (params) => {
const { data } = await PublicApi.getOrderPendingOrderList(params)
const { data } = await PublicApi.postPurchaseSubmitTenderGetSubmitTenderList(params, { ctlType: "none" })
return data
}
return (
<PageHeaderWrapper>
<Card>
<StandardTable
fetchTableData={params => fetchTableData(params)}
currentRef={ref}
columns={columns}
rowKey={'orderNo'}
formilyLayouts={{
justify: 'space-between'
}}
formilyProps={{
ctx: {
inline: false,
schema: tableListSchema,
effects: ($, actions) => {
useStateFilterSearchLinkageEffect(
$,
actions,
'orderNo',
FORM_FILTER_PATH,
);
},
components: {
DateRangePickerUnix,
Submit
<StandardTable
fetchTableData={params => fetchTableData(params)}
currentRef={ref}
columns={columns}
rowKey={'id'}
formilyLayouts={{
justify: 'space-between'
}}
formilyProps={{
ctx: {
inline: false,
schema: tableListSchema,
effects: ($, actions) => {
useStateFilterSearchLinkageEffect(
$,
actions,
'submitTenderCode',
FORM_FILTER_PATH,
);
},
components: {
DateRangePickerUnix,
Submit
}
}
}
}}
/>
</Card>
}}
/>
</Card>
</PageHeaderWrapper>
)
}
......
import React, { useRef } from 'react'
import { history, Link } from 'umi'
import { Button, Row, Col, Progress, Popconfirm } from 'antd'
import { PublicApi } from '@/services/api'
import { history } from 'umi'
import { Button } from 'antd'
import EyePreview from '@/components/EyePreview'
import { formatTimeString } from '@/utils'
import { ORDER_TYPE, PurchaseOrderInsideWorkState, PurchaseOrderOutWorkState } from '@/constants'
import { PlayCircleOutlined, PoweroffOutlined } from '@ant-design/icons'
import CustomTag from '@/pages/procurement/components/CustomTag'
import CustomBadge from '@/pages/procurement/components/customBadge'
......@@ -13,12 +11,8 @@ import CustomBadge from '@/pages/procurement/components/customBadge'
export const useSelfTable = () => {
const ref = useRef<any>({})
const handleCancel = (param) => {
PublicApi.postOrderPurchaseOrderCancel({id: param}).then(res => {
if(res.code === 1000) {
ref.current.reload()
}
})
const handlePreview = (param) => {
history.push(`/memberCenter/procurementAbility/tender/tenderSearch/detail?id=${param.id}`)
}
const callForBidColumns: any[] = [
......@@ -32,80 +26,76 @@ export const useSelfTable = () => {
{
title: '招标编号/项目',
align: 'center',
dataIndex: 'orderNo',
key: 'orderNo',
dataIndex: 'inviteTender',
key: 'inviteTender',
render: (text, record) => <>
<EyePreview url={`/memberCenter/procurementAbility/tender/tenderSearch/detail?id=${record.id}`}>
{text}
<EyePreview url={`/memberCenter/procurementAbility/tender/callForBidsSearch/detail?id=${record.id}`}>
{record.inviteTender.code}
</EyePreview>
<div>{text}</div>
<div>{record.inviteTender.projectName}</div>
</>
},
{
title: '投标编号/会员',
align: 'center',
dataIndex: 'orderNo',
key: 'orderNo',
dataIndex: 'code',
key: 'code',
render: (text, record) => <>
<EyePreview url={`/memberCenter/procurementAbility/callForBids/tenderSearch/preview?id=${record.id}`}>
{ text ? <EyePreview url={`/memberCenter/procurementAbility/callForBids/tenderSearch/detail?id=${record.id}`}>
{text}
</EyePreview>
<div>{text}</div>
</EyePreview> : null }
<div>{record.memberName}</div>
</>
},
{
title: '投标时间',
align: 'center',
dataIndex: 'createTime',
key: 'createTime',
render: (text, record) => formatTimeString(record.createTime),
width: 200
dataIndex: 'memberId',
key: 'memberId',
render: (text, record) => formatTimeString(record.inviteTender.inviteTenderStartTime),
width: 180
},
{
title: '开标时间',
title: '招标开始/截止时间',
align: 'center',
dataIndex: 'createTime',
key: 'createTime',
render: (text, record) => formatTimeString(record.createTime),
width: 200
dataIndex: 'memberRoleId',
key: 'memberRoleId',
render: (text, record) => <>
<div><PlayCircleOutlined />&nbsp;{formatTimeString(record.inviteTender.inviteTenderStartTime)}</div>
<div><PoweroffOutlined />&nbsp;{formatTimeString(record.inviteTender.inviteTenderEndTime)}</div>
</>,
width: 180
},
{
title: '是否中标',
align: 'center',
dataIndex: 'externalState',
key: 'externalState',
dataIndex: 'isWin',
key: 'isWin',
render: (t, r) => t ? '是' : '否'
},
{
title: '外部状态',
align: 'center',
dataIndex: 'externalState',
key: 'externalState',
render: text => <CustomTag status={text} type='out' />
dataIndex: 'isSend',
key: 'isSend',
render: (t, r) => <CustomTag status={r.inviteTender.tenderOutStatus} type='out' />
},
{
title: '内部状态',
align: 'center',
dataIndex: 'interiorState',
key: 'interiorState',
render: (text) => <CustomBadge status={text} type='inside' />
dataIndex: 'isSubMember',
key: 'isSubMember',
render: (t, r) => <CustomBadge status={r.inviteTender.submitTenderInStatus} type='tenderInside' />
},
// {
// title: '操作',
// align: 'center',
// dataIndex: 'ctl',
// key: 'ctl',
// render: (text, record) => <>
// <Button type='link'>复制</Button>
// <Popconfirm
// title="是否要取消该订单?"
// onConfirm={() => handleCancel(record.id)}
// okText="是"
// cancelText="否"
// >
// <Button type='link'>废标</Button>
// </Popconfirm>
// </>
// }
{
title: '操作',
align: 'center',
dataIndex: 'ctl',
key: 'ctl',
render: (text, record) => <>
<Button type='link' onClick={() => handlePreview(record)}>查看</Button>
</>
}
]
return {
......
import { ISchema } from '@formily/antd';
import { FORM_FILTER_PATH } from '@/formSchema/const';
import { OrderTypeMap, PurchaseOrderInsideWorkStateTexts, PurchaseOrderOutWorkStateTexts } from '@/constants';
import { BidOutStateTexts, OrderTypeMap, PurchaseOrderInsideWorkStateTexts, PurchaseOrderOutWorkStateTexts, TenderInStateTexts } from '@/constants';
/**
* 标查询列表高级筛选
* 标查询列表高级筛选
*/
export const tableListSchema: ISchema = {
export const tableListSchema: ISchema = {
type: 'object',
properties: {
orderNo: {
submitTenderCode: {
type: 'string',
"x-component": 'SearchFilter',
'x-component-props': {
placeholder: '请输入标编号',
placeholder: '请输入标编号',
align: 'flex-start',
},
},
......@@ -29,51 +29,51 @@ export const tableListSchema: ISchema = {
}
},
properties: {
orderThe: {
projectName: {
type: 'string',
'x-component-props': {
placeholder: '请输入标项目',
placeholder: '请输入标项目',
}
},
tenderCode: {
inviteTenderCode: {
type: 'string',
'x-component-props': {
placeholder: '请输入招标编',
}
placeholder: '请输入招标编',
},
},
"[startEnterTime,endEnterTime]": {
"[submitTenderStartTime,submitTenderEndTime]": {
type: 'array',
"x-component": 'DateRangePickerUnix',
'x-component-props': {
placeholder: ['开标开始时间','开标结束时间'],
placeholder: ['投标开始时间','投标结束时间'],
},
},
tenderMember: {
inviteTenderMemberName: {
type: 'string',
'x-component-props': {
placeholder: '请输入标会员',
}
placeholder: '请输入标会员',
},
},
"externalState": {
"tenderOutStatus": {
type: 'string',
"x-component-props": {
placeholder: '请选择外部状态'
},
enum: Object.keys(PurchaseOrderOutWorkStateTexts).map(item => ({
label: PurchaseOrderOutWorkStateTexts[item],
enum: Object.keys(BidOutStateTexts).map(item => ({
label: BidOutStateTexts[item],
value: item,
}))
},
"submitTenderInStatusList": {
type: 'string',
"x-component-props": {
placeholder: '请选择内部状态'
},
enum: Object.keys(TenderInStateTexts).map(item => ({
label: TenderInStateTexts[item],
value: item,
}))
},
// "interiorState": {
// type: 'string',
// "x-component-props": {
// placeholder: '请选择内部状态'
// },
// enum: Object.keys(PurchaseOrderInsideWorkStateTexts).map(item => ({
// label: PurchaseOrderInsideWorkStateTexts[item],
// value: item,
// }))
// },
submit: {
'x-component': 'Submit',
'x-component-props': {
......@@ -84,3 +84,4 @@ export const tableListSchema: ISchema = {
},
}
}
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