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

Merge branch 'dev-srm' of http://10.0.0.22:3000/lingxi/lingxi-business-paltform into dev-srm

parents 17cdecc2 0176c3dc
...@@ -49,8 +49,8 @@ const NestTable: React.FC<NestTableProps> = (props) => { ...@@ -49,8 +49,8 @@ const NestTable: React.FC<NestTableProps> = (props) => {
expanded ? ( expanded ? (
<CaretDownOutlined onClick={e => onExpand(record, e)} /> <CaretDownOutlined onClick={e => onExpand(record, e)} />
) : ( ) : (
<CaretRightOutlined onClick={e => onExpand(record, e)} /> <CaretRightOutlined onClick={e => onExpand(record, e)} />
) )
}} }}
pagination={pagination} pagination={pagination}
{...resetProps} {...resetProps}
...@@ -60,4 +60,4 @@ const NestTable: React.FC<NestTableProps> = (props) => { ...@@ -60,4 +60,4 @@ const NestTable: React.FC<NestTableProps> = (props) => {
NestTable.defaultProps = {} NestTable.defaultProps = {}
export default NestTable export default NestTable
\ No newline at end of file
...@@ -54,9 +54,8 @@ const PaymentCard: React.FC<Iprops> = ({ ...@@ -54,9 +54,8 @@ const PaymentCard: React.FC<Iprops> = ({
<div className={style.proportion}>{item.payRatio}%</div> <div className={style.proportion}>{item.payRatio}%</div>
<div style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center' }}> <div style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center' }}>
<div className={style.Price}>¥{item.payAmount}</div> <div className={style.Price}>¥{item.payAmount}</div>
{/* IsShow && <div onClick={() => like(1, item)} style={{ cursor: 'pointer', fontSize: 12, backgroundColor: '#00B37A', color: '#fff', padding: '4px 8px' }}>请款</div> */}
{ {
children children ? children : IsShow && <div onClick={() => like(1, item)} style={{ cursor: 'pointer', fontSize: 12, backgroundColor: '#00B37A', color: '#fff', padding: '4px 8px' }}>请款</div>
} }
</div> </div>
<div className={style.warp_List}> <div className={style.warp_List}>
......
...@@ -25,19 +25,23 @@ const PopModal: React.FC<Iprops> = ({ ...@@ -25,19 +25,23 @@ const PopModal: React.FC<Iprops> = ({
}) => { }) => {
const [form] = Form.useForm(); const [form] = Form.useForm();
/* 选中 */
const [paymentId, setpaymentId] = useState<any>()
/* 确定 */ /* 确定 */
const onFinish = (values: any) => { const onFinish = (values: any) => {
sessionStorage.setItem('basics', JSON.stringify(basics)) sessionStorage.setItem('basics', JSON.stringify(basics))
sessionStorage.setItem('list', JSON.stringify(selectRowList)) sessionStorage.setItem('list', JSON.stringify(selectRowList))
history.push('/memberCenter/contract/funds/addbill/Add?applyId=' + contractId + '&sourceType=' + 2) let payid = paymentId ? paymentId : payType[0].id;
history.push('/memberCenter/contract/funds/addbill/Add?applyId=' + contractId + '&sourceType=' + 2 + '&paymentId=' + payid)
} }
const onFinishFailed = (errorInfo: any) => { const onFinishFailed = (errorInfo: any) => {
console.log('Failed:', errorInfo); console.log('Failed:', errorInfo);
}; };
return ( return (
<Modal <Modal
footer={null} footer={null}
title="提交审核" title="提交请款单"
visible={ModalVisible} visible={ModalVisible}
onOk={() => setDrawerPopModal()} onOk={() => setDrawerPopModal()}
onCancel={() => setDrawerPopModal()} > onCancel={() => setDrawerPopModal()} >
...@@ -55,6 +59,9 @@ const PopModal: React.FC<Iprops> = ({ ...@@ -55,6 +59,9 @@ const PopModal: React.FC<Iprops> = ({
style={{ style={{
width: '290px' width: '290px'
}} }}
onChange={(value) => {
setpaymentId(value)
}}
> >
{ {
payType.map(item => ( payType.map(item => (
......
...@@ -159,9 +159,6 @@ ...@@ -159,9 +159,6 @@
color: #00B37A; color: #00B37A;
cursor: pointer; cursor: pointer;
} }
.wrapper :global .ant-input-search .ant-input-group .ant-input {
padding: 0px !important;
}
.wrapper :global .ant-input-search .ant-input-group-addon .ant-input-search-button { .wrapper :global .ant-input-search .ant-input-group-addon .ant-input-search-button {
background-color: #F7F8FA; background-color: #F7F8FA;
} }
...@@ -188,7 +188,7 @@ ...@@ -188,7 +188,7 @@
.ant-input-search { .ant-input-search {
.ant-input-group { .ant-input-group {
.ant-input { .ant-input {
padding: 0px !important; // padding: 0px !important;
} }
} }
.ant-input-group-addon { .ant-input-group-addon {
......
...@@ -361,9 +361,16 @@ const Details = (props: any) => { ...@@ -361,9 +361,16 @@ const Details = (props: any) => {
current: current, current: current,
pageSize: pageSize, pageSize: pageSize,
} }
setSize(pageSize)
console.log(current, pageSize, size)
getContracInfoList(data) getContracInfoList(data)
}; };
const like = (sourceType, item) => {
console.log(sourceType, item);
// sessionStorage.setItem('basics', JSON.stringify(basics));
// history.push('/memberCenter/contract/funds/addbill/Add?applyId=' + contractId + '&sourceType=' + sourceType + '&paymentId=' + item.id)
}
return ( return (
<div className={style.anchorWrap}> <div className={style.anchorWrap}>
<Anchor <Anchor
...@@ -411,7 +418,9 @@ const Details = (props: any) => { ...@@ -411,7 +418,9 @@ const Details = (props: any) => {
{/* 基本信息 */} {/* 基本信息 */}
<BasicInfo basicInfo={basicInfo} /> <BasicInfo basicInfo={basicInfo} />
{/* 付款计划 */} {/* 付款计划 */}
<PaymentCard payPlanList={payPlanList} basics={basicInfo} contractId={contractId} /> <PaymentCard
IsShow={true}
payPlanList={payPlanList} basics={basics} contractId={contractId} />
{/* 执行情况 */} {/* 执行情况 */}
<div id='docking' className='ant-card ant-card-bordered'> <div id='docking' className='ant-card ant-card-bordered'>
<div className='ant-card-head'> <div className='ant-card-head'>
......
...@@ -19,7 +19,7 @@ export interface Iprops extends IAntdSchemaFormProps { ...@@ -19,7 +19,7 @@ export interface Iprops extends IAntdSchemaFormProps {
const { Text } = Typography; const { Text } = Typography;
const situationList: React.FC<Iprops> = ({ contractId }) => { const situationList: React.FC<Iprops> = ({ contractId }) => {
const [page, setPage] = useState(1); const [page, setPage] = useState(1);
const [size, setSize] = useState(8); const [size, setSize] = useState(10);
const [total, setTotal] = useState(0); const [total, setTotal] = useState(0);
const [listLoading, setListLoading] = useState(false); const [listLoading, setListLoading] = useState(false);
/* 单据总金额 */ /* 单据总金额 */
...@@ -226,9 +226,10 @@ const situationList: React.FC<Iprops> = ({ contractId }) => { ...@@ -226,9 +226,10 @@ const situationList: React.FC<Iprops> = ({ contractId }) => {
columns={columns} columns={columns}
dataSource={data} dataSource={data}
loading={listLoading} loading={listLoading}
pagination={ pagination={
{ {
defaultPageSize: 20,
pageSize: size, pageSize: size,
total, total,
onChange: handlePaginationChange onChange: handlePaginationChange
......
...@@ -29,14 +29,13 @@ const Add: React.FC<{}> = (props: any) => { ...@@ -29,14 +29,13 @@ const Add: React.FC<{}> = (props: any) => {
setid(data.selectRow.id) setid(data.selectRow.id)
console.log(data) console.log(data)
} }
useEffect(() => { // useEffect(() => {
// contract // PublicApi.getContractApplyAmountGetDetail({ applyId: paymentId }).then((res) => {
PublicApi.getContractApplyAmountGetDetail({ applyId: paymentId }).then((res) => { // console.log(res)
console.log(res) // }).catch((err) => {
}).catch((err) => {
}); // });
}, []) // }, [])
const TabList = [ const TabList = [
{ {
name: '基本信息', components: name: '基本信息', components:
......
...@@ -129,19 +129,19 @@ const AddInfo = (props: any) => { ...@@ -129,19 +129,19 @@ const AddInfo = (props: any) => {
const info = Info; const info = Info;
if (res.code == 1000) { if (res.code == 1000) {
if (res.data.payPlanList.length != 0) { if (res.data.payPlanList.length != 0) {
res.data.payPlanList.map((item, index) => { for (let i = 0; i < res.data.payPlanList.length; i++) {
console.log(index) if (res.data.payPlanList[i].id == paymentId) {
if (item.id == paymentId) { console.log(1232131);
const expectPayTime = new Date(item.expectPayTime).getTime(); const expectPayTime = new Date(res.data.payPlanList[i].expectPayTime).getTime();
basicsData.payPlanId = item.id; basicsData.payPlanId = res.data.payPlanList[i].id;
basicsData.payRatio = item.payRatio; basicsData.payRatio = res.data.payPlanList[i].payRatio;
basicsData.expectPayTime = moment(expectPayTime); basicsData.expectPayTime = moment(expectPayTime);
basicsData.payWay = item.payWay; basicsData.payWay = res.data.payPlanList[i].payWay;
basicsData.payParam = item.payParam; basicsData.payParam = res.data.payPlanList[i].payParam;
basicsData.applyAmount = item.payAmount; basicsData.applyAmount = res.data.payPlanList[i].payAmount;
setapplyAmount(item.payAmount) setapplyAmount(res.data.payPlanList[i].payAmount)
setIndex(index + 1) setIndex(i + 1)
return; break;
} else { } else {
const expectPayTime = new Date(res.data.payPlanList[0].expectPayTime).getTime(); const expectPayTime = new Date(res.data.payPlanList[0].expectPayTime).getTime();
basicsData.payPlanId = res.data.payPlanList[0].id; basicsData.payPlanId = res.data.payPlanList[0].id;
...@@ -152,7 +152,7 @@ const AddInfo = (props: any) => { ...@@ -152,7 +152,7 @@ const AddInfo = (props: any) => {
basicsData.applyAmount = res.data.payPlanList[0].payAmount; basicsData.applyAmount = res.data.payPlanList[0].payAmount;
setapplyAmount(res.data.payPlanList[0].payAmount) setapplyAmount(res.data.payPlanList[0].payAmount)
} }
}) }
} }
basicsData.contractNo = selectRow.contractNo; basicsData.contractNo = selectRow.contractNo;
...@@ -183,6 +183,7 @@ const AddInfo = (props: any) => { ...@@ -183,6 +183,7 @@ const AddInfo = (props: any) => {
const auth = JSON.parse(localStorage.getItem('auth')); const auth = JSON.parse(localStorage.getItem('auth'));
setaccount(auth.account); setaccount(auth.account);
setBasics(basicsData) setBasics(basicsData)
console.log(basicsData, 'basicsData')
attrValueForm.setFieldsValue(basicsData); attrValueForm.setFieldsValue(basicsData);
} }
}) })
......
...@@ -33,9 +33,7 @@ const BillDetails = (props: any) => { ...@@ -33,9 +33,7 @@ const BillDetails = (props: any) => {
const [reason, setDatareason] = useState(''); const [reason, setDatareason] = useState('');
const [status, setstatus] = useState<any>() const [status, setstatus] = useState<any>()
const [ExamineFlag, setExamineFlag] = useState<boolean>(false); const [ExamineFlag, setExamineFlag] = useState<boolean>(false);
useEffect(() => {
setTargetOffset(window.innerHeight / 6);
}, []);
const handleAnchorClick = (e) => { const handleAnchorClick = (e) => {
e.preventDefault() e.preventDefault()
} }
...@@ -54,6 +52,7 @@ const BillDetails = (props: any) => { ...@@ -54,6 +52,7 @@ const BillDetails = (props: any) => {
}) })
/* 获取详情的数据 */ /* 获取详情的数据 */
const getDetail = () => { const getDetail = () => {
console.log(applyId, 'applyId')
PublicApi.getContractApplyAmountGetDetail({ applyId }).then(res => { PublicApi.getContractApplyAmountGetDetail({ applyId }).then(res => {
if (res.code === 1000) { if (res.code === 1000) {
let { basics, taskStepList } = res.data let { basics, taskStepList } = res.data
...@@ -134,7 +133,7 @@ const BillDetails = (props: any) => { ...@@ -134,7 +133,7 @@ const BillDetails = (props: any) => {
setIsModalVisible(!isModalVisible); setIsModalVisible(!isModalVisible);
}; };
useEffect(() => { useEffect(() => {
setTargetOffset(window.innerHeight / 6); setTargetOffset(window.innerHeight / 4);
getDetail() getDetail()
}, []); }, []);
......
...@@ -12,13 +12,14 @@ import moment from 'moment'; ...@@ -12,13 +12,14 @@ import moment from 'moment';
const FormList = (props: any) => { const FormList = (props: any) => {
console.log(props) console.log(props)
const { fromData, currentRef, fetchdata } = props; const { fromData, currentRef, fetchdata } = props;
const [keys, setkeys] = useState<any>(); // 记录上次删除的
const [options, setoptions] = useState<any>([ const [options, setoptions] = useState<any>([
{ {
value: 1, value: 1,
disabled: true disabled: true
} }
]) ])
const [id, setId] = useState<any>(''); // 记录上次的id
const [PlanList, setPlanList] = useState<any>([ const [PlanList, setPlanList] = useState<any>([
{ {
payNum: '1', payNum: '1',
...@@ -30,6 +31,7 @@ const FormList = (props: any) => { ...@@ -30,6 +31,7 @@ const FormList = (props: any) => {
payParam: '', payParam: '',
id: 0, id: 0,
rowId: 1, rowId: 1,
disabled: true
}, },
]); ]);
...@@ -130,36 +132,43 @@ const FormList = (props: any) => { ...@@ -130,36 +132,43 @@ const FormList = (props: any) => {
/* 添加 */ /* 添加 */
const addtable = () => { const addtable = () => {
const data = [...PlanList]; const data = [...PlanList];
data.push(
{ if (keys) {
payNum: '', data.push(keys);
payStage: '', setkeys('');
expectPayTime: '', } else {
payRatio: '', data.push(
payAmount: '', {
payWay: '1', payNum: data.length + 1,
payParam: '', payStage: '',
id: 0, expectPayTime: '',
rowId: data.length + 1, payRatio: '',
}, payAmount: '',
) payWay: '1',
let optionsData = []; payParam: '',
data.map((item, index) => { id: 0,
console.log(item.payNum, index + 1) rowId: data.length + 1,
optionsData.push({ disabled: false,
value: index + 1, },
)
}
let optionsData = data.map((item, index) => {
return {
value: item.payNum ? item.payNum : index + 1,
disabled: item.payNum ? true : false, disabled: item.payNum ? true : false,
}) rowId: item.rowId,
}
}) })
console.log(optionsData, 'optionsDataadd', options)
console.log('optionsDataadd', data, optionsData, 'optionsList')
setPlanList(data) setPlanList(data)
setoptions(optionsData) setoptions(optionsData)
}; };
/* 删除 */ /* 删除 */
const Delete = (elm, idx) => { const Delete = (elm, idx) => {
const dataSource = [...PlanList]; const dataSource = [...PlanList];
let List = dataSource.filter((item, index) => index !== idx); let List = dataSource.filter((item, index) => index !== idx);
setPlanList(List)
let optionsData = options.map((keys => { let optionsData = options.map((keys => {
if (elm.payNum == keys.value) { if (elm.payNum == keys.value) {
keys.disabled = false; keys.disabled = false;
...@@ -168,7 +177,8 @@ const FormList = (props: any) => { ...@@ -168,7 +177,8 @@ const FormList = (props: any) => {
...keys ...keys
} }
})) }))
console.log(optionsData, 'del') setkeys(elm);
setPlanList(List)
setoptions(optionsData) setoptions(optionsData)
}; };
...@@ -181,7 +191,7 @@ const FormList = (props: any) => { ...@@ -181,7 +191,7 @@ const FormList = (props: any) => {
break; break;
case 'payNum': case 'payNum':
item[idx].payNum = e; item[idx].payNum = e;
setId(e);
break; break;
case 'expectPayTime': case 'expectPayTime':
item[idx].expectPayTime = moment(e).format('YYYY-MM-DD HH:mm:ss'); item[idx].expectPayTime = moment(e).format('YYYY-MM-DD HH:mm:ss');
...@@ -199,30 +209,7 @@ const FormList = (props: any) => { ...@@ -199,30 +209,7 @@ const FormList = (props: any) => {
item[idx].payParam = e; item[idx].payParam = e;
break; break;
} }
let optionsData = [];
if (id) {
optionsData = options.map((keys => {
if (id == keys.value) {
keys.disabled = false;
}
if (keys.value == e) {
keys.disabled = true;
}
return {
...keys
}
}))
} else {
optionsData = options.map((keys => {
if (keys.value == e) {
keys.disabled = true;
}
return {
...keys
}
}))
}
setoptions(optionsData)
setPlanList(item) setPlanList(item)
} }
useEffect(() => { useEffect(() => {
......
...@@ -11,6 +11,7 @@ const FormList = (props: any) => { ...@@ -11,6 +11,7 @@ const FormList = (props: any) => {
const { currentRef, purchaseMaterielList } = props; const { currentRef, purchaseMaterielList } = props;
const [dataList, setData] = useState([]) const [dataList, setData] = useState([])
const columnsTab: any = [ const columnsTab: any = [
{ {
title: '物料编号/名称', dataIndex: 'materielName', align: 'center', title: '物料编号/名称', dataIndex: 'materielName', align: 'center',
......
...@@ -10,7 +10,16 @@ const { Option } = Select; ...@@ -10,7 +10,16 @@ const { Option } = Select;
import moment from 'moment'; import moment from 'moment';
const FormList = (props: any) => { const FormList = (props: any) => {
const { currentRef, payPlanList } = props; const { currentRef, payPlanList } = props;
const [payNumArr, setpayNumArr] = useState<any>([1,]) // const [payNumArr, setpayNumArr] = useState<any>([1,])
const [keys, setkeys] = useState<any>(); // 记录上次删除的
const [options, setoptions] = useState<any>([
{
value: 1,
disabled: true
}
])
const [PlanList, setPlanList] = useState<any>([ const [PlanList, setPlanList] = useState<any>([
]); ]);
/* 显示模态框 */ /* 显示模态框 */
...@@ -18,14 +27,6 @@ const FormList = (props: any) => { ...@@ -18,14 +27,6 @@ const FormList = (props: any) => {
{ {
title: '付款次数', dataIndex: 'payNum', align: 'center', title: '付款次数', dataIndex: 'payNum', align: 'center',
render: (_, item, index) => { render: (_, item, index) => {
const options = [];
for (let i = 0; i < PlanList.length; i++) {
let Index = payNumArr.indexOf(i + 1);
options.push({
value: i + 1,
disabled: Index == -1 ? false : true
});
}
return ( return (
<Select <Select
style={{ width: 200 }} style={{ width: 200 }}
...@@ -119,38 +120,61 @@ const FormList = (props: any) => { ...@@ -119,38 +120,61 @@ const FormList = (props: any) => {
/* 添加 */ /* 添加 */
const addtable = () => { const addtable = () => {
const data = [...PlanList]; const data = [...PlanList];
data.push(
{ if (keys) {
payNum: '', data.push(keys);
payStage: '', setkeys('');
expectPayTime: '', } else {
payRatio: '', data.push(
payAmount: '', {
payWay: '1', payNum: data.length + 1,
payParam: '1', payStage: '',
id: 0, expectPayTime: '',
rowId: data.length + 1, payRatio: '',
}, payAmount: '',
) payWay: '1',
console.log(data) payParam: '',
id: 0,
rowId: data.length + 1,
disabled: false,
},
)
}
let optionsData = data.map((item, index) => {
return {
value: item.payNum ? item.payNum : index + 1,
disabled: item.payNum ? true : false,
rowId: item.rowId,
}
})
console.log('optionsDataadd', data, optionsData, 'optionsList')
setPlanList(data) setPlanList(data)
setoptions(optionsData)
}; };
/* 删除 */ /* 删除 */
const Delete = (elm, idx) => { const Delete = (elm, idx) => {
const dataSource = [...PlanList]; const dataSource = [...PlanList];
const arr = [...payNumArr]
let List = dataSource.filter((item, index) => index !== idx); let List = dataSource.filter((item, index) => index !== idx);
let numberArr = arr.filter((item, index) => elm.payNum !== item); let optionsData = options.map((keys => {
console.log(numberArr); if (elm.payNum == keys.value) {
setpayNumArr(numberArr) keys.disabled = false;
}
return {
...keys
}
}))
setkeys(elm);
setPlanList(List) setPlanList(List)
setoptions(optionsData)
}; };
/* 选中设置值 */ /* 选中设置值 */
const onSelectChange = (e, name, idx) => { const onSelectChange = (e, name, idx) => {
console.log(e, name, idx) console.log(e, name, idx)
let item = [...PlanList]; let item = [...PlanList];
let NumArr = [...payNumArr]
console.log(item, '哈哈'); console.log(item, '哈哈');
// return; // return;
switch (name) { switch (name) {
...@@ -159,7 +183,7 @@ const FormList = (props: any) => { ...@@ -159,7 +183,7 @@ const FormList = (props: any) => {
break; break;
case 'payNum': case 'payNum':
item[idx].payNum = e; item[idx].payNum = e;
NumArr.push(e);
break; break;
case 'expectPayTime': case 'expectPayTime':
item[idx].expectPayTime = moment(e).format('YYYY-MM-DD HH:mm:ss'); item[idx].expectPayTime = moment(e).format('YYYY-MM-DD HH:mm:ss');
...@@ -177,8 +201,7 @@ const FormList = (props: any) => { ...@@ -177,8 +201,7 @@ const FormList = (props: any) => {
item[idx].payParam = e; item[idx].payParam = e;
break; break;
} }
NumArr = Array.from(new Set(NumArr))
setpayNumArr(NumArr)
setPlanList(item) setPlanList(item)
} }
useEffect(() => { useEffect(() => {
......
...@@ -21,311 +21,336 @@ import ThankModal from './components/thank'; ...@@ -21,311 +21,336 @@ import ThankModal from './components/thank';
import { import {
BID_EXTERNALSTATE_COLOR, BID_EXTERNALSTATE_COLOR,
BID_INTERNALSTATE_COLOR BID_INTERNALSTATE_COLOR
} from '../../constants/purchaseBid'; } from '../../constants/purchaseBid';
const transforType = { const transforType = {
1: '是', 1: '是',
0: '否' 0: '否'
} }
const TABLINK = [ const TABLINK = [
{ id: 'progressLayout', title: '流转进度' }, { id: 'progressLayout', title: '流转进度' },
{ id: 'winBidMsgLayout', title: '中标通知' }, { id: 'winBidMsgLayout', title: '中标通知', except: ['readySignUp', 'readyBid'] },
{ id: 'winBidResultLayout', title: '中标结果' }, { id: 'winBidResultLayout', title: '中标结果', except: ['readySignUp', 'readyBid'] },
{ id: 'basicLayout', title: '基本信息' }, { id: 'basicLayout', title: '基本信息' },
{ id: 'materialLayout', title: '采购物料' }, { id: 'materialLayout', title: '采购物料' },
{ id: 'bidRulesLayout', title: '竞价规则' }, { id: 'bidRulesLayout', title: '竞价规则' },
{ id: 'signUpLayout', title: '报名要求' }, { id: 'signUpLayout', title: '报名要求' },
{ id: 'conditionLayout', title: '交易条件' }, { id: 'conditionLayout', title: '交易条件' },
{ id: 'fileLayout', title: '附件' }, { id: 'fileLayout', title: '附件' },
{ id: 'quotationRecordLayout', title: '最低报价记录' }, { id: 'quotationRecordLayout', title: '最低报价记录' },
{ id: 'recordLayout', title: '流转记录' }, { id: 'recordLayout', title: '流转记录' },
] ]
const SearchDetail = () => { const SearchDetail = () => {
const { const {
query: { query: {
id, id,
number number
}, },
} = history.location; pathname
// 竞价过程 } = history.location;
const [progressVisible, setProgressVisible] = useState<boolean>(false); const [pathPci] = useState(pathname.split('/')[pathname.split('/').length - 2]);
const [progressData, setProgressData] = useState<any>([]);
// 详情数据
const [dataSource, setDataSource] = useState<any>({});
// 流转数据数据
const [progressEffect, setProgressEffect] = useState<ProgressValue[]>([]);
// 基本信息数据
const [basicEffect, setBasicEffect] = useState<any>([]);
// 竞价结果数据
const [resultEffect, setResultEffect] = useState<any>([]);
// 竞价规则数据
const [rulesEffect, setRulesEffect] = useState<any>([]);
// 报名要求
const [signUpEffect, setSignUpEffect] = useState<any>([]);
// 交易条件
const [conditionEffect, setConditionEffect] = useState<any>([]);
// 感谢函
const [thankVisAble, seTthankVisAble] = useState<boolean>(false);
// 竞价过程
const [progressVisible, setProgressVisible] = useState<boolean>(false);
const [progressData, setProgressData] = useState<any>([]);
// 详情数据
const [dataSource, setDataSource] = useState<any>({});
// 流转数据数据
const [progressEffect, setProgressEffect] = useState<ProgressValue[]>([]);
// 基本信息数据
const [basicEffect, setBasicEffect] = useState<any>([]);
// 竞价结果数据
const [resultEffect, setResultEffect] = useState<any>([]);
// 竞价规则数据
const [rulesEffect, setRulesEffect] = useState<any>([]);
// 报名要求
const [signUpEffect, setSignUpEffect] = useState<any>([]);
// 交易条件
const [conditionEffect, setConditionEffect] = useState<any>([]);
// 感谢函
const [thankVisAble, seTthankVisAble] = useState<boolean>(false);
const handleProgressEffect = (data: any) => { const _tabs = useMemo(() => {
let _list = [ let _list = [];
{ title: '外部流转', state: 1, logs: data.externalLogStates }, TABLINK.forEach((item) => {
// { title: '内部流转', state: 2, logs: data.interiorLogStates } if (!item.except || !item.except.includes(pathPci)) {
]; _list.push(item);
setProgressEffect(_list); }
} })
return _list;
}, [pathPci])
const handleBasicEffect = (data: any) => {
setBasicEffect([
{
col: [
{ label: '竞价单号', extra: data.biddingNo, type: 'text' },
{ label: '竞价单摘要', extra: data.details, type: 'text' },
{ label: '外部状态', extra: <StatusTag type={BID_EXTERNALSTATE_COLOR(data.externalState)} title={data.externalStateName} />, type: 'text' },
{ label: '内部状态', extra: <Badge status={BID_INTERNALSTATE_COLOR(data.interiorState)} text={data.interiorStateName} />, type: 'text' },
]
},
{
col: [
{ label: '会员名称', extra: data.createMemberName, type: 'text' },
{
label: '适用地市', extra: data.areas || [], type: 'area', tips: '设置了归属地市后,此商品可根据地市进行筛选,未设置时默认为所有地市'
},
]
},
{
col: [
{ label: '单据时间', extra: formatTimeString(data.createTime), type: 'text' },
]
},
])
}
const handleResultEffect = (data: any) => { const handleProgressEffect = (data: any) => {
setResultEffect([ let _list = [
{ { title: '外部流转', state: 1, logs: data.externalLogStates },
col: [ // { title: '内部流转', state: 2, logs: data.interiorLogStates }
{ label: '中标金额(含税)', extra: data?.sumAwardPrice ? ${priceFormat(data?.sumAwardPrice)}` : '-', type: 'text' }, ];
{ label: '中标理由', extra: '价格最低', type: 'text' }, setProgressEffect(_list);
] }
},
{
col: [
{ label: '中标公示', extra: data.awardResults, type: 'text' },
]
}
])
}
const handleRulesEffect = (data: any) => { const handleBasicEffect = (data: any) => {
setRulesEffect([ setBasicEffect([
{ {
col: [ col: [
{ label: '竞价时间', extra: `${formatTimeString(data.biddingStartTime)} ${formatTimeString(data.biddingEndTime)}`, type: 'text' }, { label: '竞价单号', extra: data.biddingNo, type: 'text' },
{ label: '起拍价', extra: data.startingPrice ? `¥ ${priceFormat(data.startingPrice)}` : '-', type: 'text', tips: '初始起拍价,首次报价要低于或等于起拍价' }, { label: '竞价单摘要', extra: data.details, type: 'text' },
{ label: '目标价', extra: data.targetPrice ? `¥ ${priceFormat(data.targetPrice)}` : '-', type: 'text', tips: '期望成交价格' }, { label: '外部状态', extra: <StatusTag type={BID_EXTERNALSTATE_COLOR(data.externalState)} title={data.externalStateName} />, type: 'text' },
] { label: '内部状态', extra: <Badge status={BID_INTERNALSTATE_COLOR(data.interiorState)} text={data.interiorStateName} />, type: 'text' },
}, ]
{ },
col: [ {
{ label: '最小价差', extra: data.minPrice ? `¥ ${priceFormat(data.minPrice)}` : '-', type: 'text', tips: '每次报价降价幅度须大于或等于最小价差' }, col: [
{ label: '允许报价次数', extra: data.allowPurchaseCount, type: 'text', tips: '允许每个供应商最多可以报价的次数' }, { label: '会员名称', extra: data.createMemberName, type: 'text' },
] {
}, label: '适用地市', extra: data.areas || [], type: 'area', tips: '设置了归属地市后,此商品可根据地市进行筛选,未设置时默认为所有地市'
{ },
col: [ ]
{ label: '公开当前最低报价', extra: transforType[data.isOpenPurchase], type: 'text', tips: '选择公开当前最低报价,竞价过程中将供应商所报当前最低价在竞价页面即时公开。', isMix: ['公开当前最低', '报价'] }, },
{ label: '公开报价排名', extra: transforType[data.isOpenRanking], type: 'text', tips: '选择公开报价排名,竞价过程中将供应商当前报价排名在竞价页面即时公开。' }, {
] col: [
}, { label: '单据时间', extra: formatTimeString(data.createTime), type: 'text' },
]) ]
} },
])
}
const handleSignUpEffect = (data: any) => { const handleResultEffect = (data: any) => {
setSignUpEffect([ setResultEffect([
{ {
col: [ col: [
{ label: '报名要求时间', extra: `${formatTimeString(data.startSignUp)} ${formatTimeString(data.endSignUp)}`, type: 'text' }, { label: '中标金额(含税)', extra: data?.sumAwardPrice ? ${priceFormat(data?.sumAwardPrice)}` : '-', type: 'text' },
{ label: '报名要求', extra: data.demand, type: 'text' }, { label: '中标理由', extra: '价格最低', type: 'text' },
] ]
}, },
{ {
col: [ col: [
{ label: '报名要求附件', extra: data.demandUrls, type: 'files' }, { label: '中标公示', extra: data.awardResults, type: 'text' },
] ]
}, }
]) ])
} }
const handleConditionEffect = (data: any) => { const handleRulesEffect = (data: any) => {
setConditionEffect([ setRulesEffect([
{ {
col: [ col: [
{ label: '交付日期', extra: formatTimeString(data.deliver), type: 'text' }, { label: '竞价时间', extra: `${formatTimeString(data.biddingStartTime)} ${formatTimeString(data.biddingEndTime)}`, type: 'text' },
{ label: '交付地址', extra: data.address, type: 'text' }, { label: '起拍价', extra: data.startingPrice ? `¥ ${priceFormat(data.startingPrice)}` : '-', type: 'text', tips: '初始起拍价,首次报价要低于或等于起拍价' },
{ label: '报价要求', extra: data.offer, type: 'text' }, { label: '目标价', extra: data.targetPrice ? `¥ ${priceFormat(data.targetPrice)}` : '-', type: 'text', tips: '期望成交价格' },
] ]
}, },
{ {
col: [ col: [
{ label: '付款方式', extra: data.paymentType, type: 'text' }, { label: '最小价差', extra: data.minPrice ? `¥ ${priceFormat(data.minPrice)}` : '-', type: 'text', tips: '每次报价降价幅度须大于或等于最小价差' },
{ label: '税费要求', extra: data.taxes, type: 'text' }, { label: '允许报价次数', extra: data.allowPurchaseCount, type: 'text', tips: '允许每个供应商最多可以报价的次数' },
{ label: '物流要求', extra: data.logistics, type: 'text' }, ]
] },
}, {
{ col: [
col: [ { label: '公开当前最低报价', extra: transforType[data.isOpenPurchase], type: 'text', tips: '选择公开当前最低报价,竞价过程中将供应商所报当前最低价在竞价页面即时公开。', isMix: ['公开当前最低', '报价'] },
{ label: '包装要求', extra: data.packRequire, type: 'text' }, { label: '公开报价排名', extra: transforType[data.isOpenRanking], type: 'text', tips: '选择公开报价排名,竞价过程中将供应商当前报价排名在竞价页面即时公开。' },
{ label: '其他要求', extra: data.otherRequire, type: 'text' }, ]
] },
}, ])
]) }
}
const fetchDataSource = async () => { const handleSignUpEffect = (data: any) => {
const params = { setSignUpEffect([
id, {
number, col: [
current: '1', { label: '报名要求时间', extra: `${formatTimeString(data.startSignUp)} ${formatTimeString(data.endSignUp)}`, type: 'text' },
pageSize: '1' { label: '报名要求', extra: data.demand, type: 'text' },
} ]
PublicApi.getPurchaseOnlineBiddingDetails({ ...params }).then(res => { },
if (res.code !== 1000) { {
history.goBack(); col: [
return; { label: '报名要求附件', extra: data.demandUrls, type: 'files' },
} ]
const { data } = res; },
setDataSource(data); ])
handleProgressEffect(data); }
handleBasicEffect(data);
handleRulesEffect(data);
handleSignUpEffect(data);
handleConditionEffect(data);
handleResultEffect(data);
if (data.externalState === 99 && data.isPrize != 1 && data.isPrize) {
seTthankVisAble(true)
}
})
PublicApi.getPurchaseOnlineBiddingProcess({ ...params }).then(res => {
if (res.code !== 1000) {
history.goBack();
return;
}
setProgressData(res.data);
})
}
useEffect(() => { const handleConditionEffect = (data: any) => {
fetchDataSource(); setConditionEffect([
}, []) {
col: [
{ label: '交付日期', extra: formatTimeString(data.deliver), type: 'text' },
{ label: '交付地址', extra: data.address, type: 'text' },
{ label: '报价要求', extra: data.offer, type: 'text' },
]
},
{
col: [
{ label: '付款方式', extra: data.paymentType, type: 'text' },
{ label: '税费要求', extra: data.taxes, type: 'text' },
{ label: '物流要求', extra: data.logistics, type: 'text' },
]
},
{
col: [
{ label: '包装要求', extra: data.packRequire, type: 'text' },
{ label: '其他要求', extra: data.otherRequire, type: 'text' },
]
},
])
}
const _returnWinBidMsgLayout = useMemo(() => { const fetchDataSource = async () => {
return ( const params = {
<BidCommonLayout layoutId="winBidMsgLayout" title="中标通知" effect={resultEffect} /> id,
) number,
}, [resultEffect]) current: '1',
pageSize: '1'
}
PublicApi.getPurchaseOnlineBiddingDetails({ ...params }).then(res => {
if (res.code !== 1000) {
history.goBack();
return;
}
const { data } = res;
setDataSource(data);
handleProgressEffect(data);
handleBasicEffect(data);
handleRulesEffect(data);
handleSignUpEffect(data);
handleConditionEffect(data);
handleResultEffect(data);
if (data.externalState === 99 && data.isPrize != 1 && data.isPrize) {
seTthankVisAble(true)
}
})
PublicApi.getPurchaseOnlineBiddingProcess({ ...params }).then(res => {
if (res.code !== 1000) {
history.goBack();
return;
}
setProgressData(res.data);
})
}
useEffect(() => {
fetchDataSource();
}, [])
const _returnWinBidResultLayout = useMemo(() => { const _returnWinBidMsgLayout = useMemo(() => {
switch (pathPci) {
case 'readySignUp':
case 'readyBid':
return null;
default:
return ( return (
<TableCommonLayout <BidCommonLayout layoutId="winBidMsgLayout" title="中标通知" effect={resultEffect} />
layoutId='winBidResultLayout'
layoutTitle='中标结果'
id={id}
number={number}
fetch={PublicApi.getPurchaseOnlineBiddingAwardResultsBidding}
/>
) )
}, [id, number]) }
}, [pathPci, resultEffect])
const _returnMaterialLayout = useMemo(() => { const _returnWinBidResultLayout = useMemo(() => {
switch (pathPci) {
case 'readySignUp':
case 'readyBid':
return null;
default:
return ( return (
<MaterialLayout <TableCommonLayout
id={id} layoutId='winBidResultLayout'
number={number} layoutTitle='中标结果'
fetch={PublicApi.getPurchaseOnlineBiddingMaterielPage} id={id}
layoutTitle='采购物料' number={number}
/> fetch={PublicApi.getPurchaseOnlineBiddingAwardResultsBidding}
/>
) )
}, [id, number]) }
}, [id, number, pathPci])
const _returnBidRulesLayout = useMemo(() => { const _returnMaterialLayout = useMemo(() => {
return (<BidCommonLayout layoutId="bidRulesLayout" title="竞价规则" effect={rulesEffect} />) return (
}, [rulesEffect]) <MaterialLayout
id={id}
number={number}
fetch={PublicApi.getPurchaseOnlineBiddingMaterielPage}
layoutTitle='采购物料'
/>
)
}, [id, number])
const _returnSignUpLayout = useMemo(() => { const _returnBidRulesLayout = useMemo(() => {
return (<BidCommonLayout layoutId="signUpLayout" title="报名要求" effect={signUpEffect} />) return (<BidCommonLayout layoutId="bidRulesLayout" title="竞价规则" effect={rulesEffect} />)
}, [signUpEffect]) }, [rulesEffect])
const _returnConditionLayout = useMemo(() => { const _returnSignUpLayout = useMemo(() => {
return (<BidCommonLayout layoutId="conditionLayout" title="交易条件" effect={conditionEffect} />) return (<BidCommonLayout layoutId="signUpLayout" title="报名要求" effect={signUpEffect} />)
}, [conditionEffect]) }, [signUpEffect])
const _returnFileLayout = useMemo(() => { const _returnConditionLayout = useMemo(() => {
return ( return (<BidCommonLayout layoutId="conditionLayout" title="交易条件" effect={conditionEffect} />)
<BidCommonLayout layoutId="fileLayout" title="附件" effect={ }, [conditionEffect])
[
{
col: [
{ label: '附件', extra: dataSource.urls, type: 'files' }
]
}
]
} />
)
}, [dataSource])
const _returnLowestQuotationRecordLayout = useMemo(() => {
return (
<LowestQuotationRecordLayout
id={id}
number={number}
layoutId='quotationRecordLayout'
layoutTitle='最低报价记录'
fetch={PublicApi.getPurchaseOnlineBiddingMinimumBidding}
effect={dataSource}
extra={<Button type='link' onClick={() => { setProgressVisible(true) }}>查看竞价过程</Button>}
/>
)
}, [id, number, dataSource])
const _returnFileLayout = useMemo(() => {
return (
<BidCommonLayout layoutId="fileLayout" title="附件" effect={
[
{
col: [
{ label: '附件', extra: dataSource.urls, type: 'files' }
]
}
]
} />
)
}, [dataSource])
const _returnLowestQuotationRecordLayout = useMemo(() => {
return ( return (
<Context.Provider value={dataSource}> <LowestQuotationRecordLayout
<PeripheralLayout id={id}
no={dataSource.biddingNo} number={number}
tabLink={TABLINK} layoutId='quotationRecordLayout'
components={ layoutTitle='最低报价记录'
<Fragment> fetch={PublicApi.getPurchaseOnlineBiddingMinimumBidding}
<ProgressLayout effect={progressEffect} /> effect={dataSource}
{_returnWinBidMsgLayout} extra={<Button type='link' onClick={() => { setProgressVisible(true) }}>查看竞价过程</Button>}
{_returnWinBidResultLayout} />
<BidCommonLayout layoutId="basicLayout" title="基本信息" effect={basicEffect} />
{_returnMaterialLayout}
{_returnBidRulesLayout}
{_returnSignUpLayout}
{_returnConditionLayout}
{_returnFileLayout}
{_returnLowestQuotationRecordLayout}
<RecordCommonLayout externalColors={BID_EXTERNALSTATE_COLOR} internalColors={BID_INTERNALSTATE_COLOR} />
</Fragment>
}
/>
<BidProgressDrawer
awardProcess={progressData}
visible={progressVisible}
onClose={() => { setProgressVisible(false) }}
/>
<ThankModal
visible={thankVisAble}
detail={dataSource}
onOk={() => { seTthankVisAble(false) }}
/>
</Context.Provider>
) )
}, [id, number, dataSource])
return (
<Context.Provider value={dataSource}>
<PeripheralLayout
no={dataSource.biddingNo}
tabLink={_tabs}
components={
<Fragment>
<ProgressLayout effect={progressEffect} />
{_returnWinBidMsgLayout}
{_returnWinBidResultLayout}
<BidCommonLayout layoutId="basicLayout" title="基本信息" effect={basicEffect} />
{_returnMaterialLayout}
{_returnBidRulesLayout}
{_returnSignUpLayout}
{_returnConditionLayout}
{_returnFileLayout}
{_returnLowestQuotationRecordLayout}
<RecordCommonLayout externalColors={BID_EXTERNALSTATE_COLOR} internalColors={BID_INTERNALSTATE_COLOR} />
</Fragment>
}
/>
<BidProgressDrawer
awardProcess={progressData}
visible={progressVisible}
onClose={() => { setProgressVisible(false) }}
/>
<ThankModal
visible={thankVisAble}
detail={dataSource}
onOk={() => { seTthankVisAble(false) }}
/>
</Context.Provider>
)
} }
export default SearchDetail; export default SearchDetail;
...@@ -96,7 +96,8 @@ export const formSchema: ISchema = { ...@@ -96,7 +96,8 @@ export const formSchema: ISchema = {
"x-component": 'daterange', "x-component": 'daterange',
"x-component-props": { "x-component-props": {
showTime: true, showTime: true,
style: { width: "100%" } style: { width: "100%" },
separator: ' 至 '
}, },
readOnly: true, readOnly: true,
}, },
...@@ -273,7 +274,7 @@ export const formSchema: ISchema = { ...@@ -273,7 +274,7 @@ export const formSchema: ISchema = {
}, },
properties: { properties: {
enclosureUrls: { enclosureUrls: {
type: 'string', type: 'string',
title: '报名文件', title: '报名文件',
'x-component': 'FixUpload', 'x-component': 'FixUpload',
'x-component-props': { 'x-component-props': {
...@@ -283,7 +284,7 @@ export const formSchema: ISchema = { ...@@ -283,7 +284,7 @@ export const formSchema: ISchema = {
prefix: 'procurment_onlineBid_', prefix: 'procurment_onlineBid_',
}, },
beforeUpload: '{{beforeUpload}}', beforeUpload: '{{beforeUpload}}',
onChange: '{{onUploadChange}}', onChange: '{{onUploadChange}}',
headers: '{{ token }}', headers: '{{ token }}',
accept: '.xls, .xlsx, .doc, .docx, .wps, .pdf, .jpg, .png, .jpeg', accept: '.xls, .xlsx, .doc, .docx, .wps, .pdf, .jpg, .png, .jpeg',
}, },
......
...@@ -38,6 +38,13 @@ const SignUpForm = () => { ...@@ -38,6 +38,13 @@ const SignUpForm = () => {
const getCountryCodeId = async () => { const getCountryCodeId = async () => {
const res = await PublicApi.getManageCountryAreaGetTelCode() const res = await PublicApi.getManageCountryAreaGetTelCode()
if (res.code === 1000) { if (res.code === 1000) {
let _value = ''
for (let i = 0; i < res.data.length; i++) {
if (res.data[i] === '86') {
_value = res.data[i];
break
}
}
return { telPrefix: res.data } return { telPrefix: res.data }
} }
return {} return {}
...@@ -104,6 +111,7 @@ const SignUpForm = () => { ...@@ -104,6 +111,7 @@ const SignUpForm = () => {
member: name, member: name,
startSignUp: formatTimeString(data.startSignUp), startSignUp: formatTimeString(data.startSignUp),
endSignUp: formatTimeString(data.endSignUp), endSignUp: formatTimeString(data.endSignUp),
telPrefix: '86'
}); });
}) })
} }
...@@ -148,4 +156,4 @@ const SignUpForm = () => { ...@@ -148,4 +156,4 @@ const SignUpForm = () => {
</PageHeaderWrapper> </PageHeaderWrapper>
) )
} }
export default SignUpForm export default SignUpForm
\ No newline at end of file
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