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

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

parents 1464df26 bce4c404
...@@ -12,11 +12,12 @@ interface BtnItemProps { ...@@ -12,11 +12,12 @@ interface BtnItemProps {
btnType?: number, btnType?: number,
active?: boolean, active?: boolean,
onOk?: () => void, onOk?: () => void,
onCancle?: () => void onCancle?: () => void,
btnLoading?: boolean
} }
const BtnItem: React.FC<BtnItemProps> = (props: any) => { const BtnItem: React.FC<BtnItemProps> = (props: any) => {
const { btnType, active, detail, onOk, onCancle } = props; const { btnType, active, detail, onOk, onCancle, btnLoading } = props;
const _returnBtn = () => { const _returnBtn = () => {
if (btnType === 1) { if (btnType === 1) {
return ( return (
...@@ -67,7 +68,7 @@ const BtnItem: React.FC<BtnItemProps> = (props: any) => { ...@@ -67,7 +68,7 @@ const BtnItem: React.FC<BtnItemProps> = (props: any) => {
<Button block style={{ backgroundColor: '#F4F5F7', border: 0 }} onClick={onCancle}>取消</Button> <Button block style={{ backgroundColor: '#F4F5F7', border: 0 }} onClick={onCancle}>取消</Button>
</Col> </Col>
<Col span={12}> <Col span={12}>
<Button type="primary" block onClick={onOk} disabled={!active}>提交报价</Button> <Button type="primary" block onClick={onOk} loading={btnLoading} disabled={!active}>提交报价</Button>
</Col> </Col>
</Row> </Row>
</div> </div>
......
import React, { useEffect } from 'react'; import React, { useEffect, useState } from 'react';
import { Modal } from 'antd'; import { Modal } from 'antd';
import { import {
SchemaForm, SchemaMarkupField as Field, SchemaForm, SchemaMarkupField as Field,
createAsyncFormActions , createAsyncFormActions,
FormEffectHooks, FormEffectHooks,
} from '@formily/antd' } from '@formily/antd'
import { Input, Radio, DatePicker, Checkbox } from '@formily/antd-components' import { Input, Radio, DatePicker, Checkbox } from '@formily/antd-components'
...@@ -11,7 +11,7 @@ import moment from 'moment'; ...@@ -11,7 +11,7 @@ import moment from 'moment';
import styles from './index.less'; import styles from './index.less';
import { isEmpty } from 'lodash'; import { isEmpty } from 'lodash';
const actions = createAsyncFormActions () const actions = createAsyncFormActions()
const { onFieldChange$ } = FormEffectHooks; const { onFieldChange$ } = FormEffectHooks;
export interface IProps { export interface IProps {
...@@ -39,11 +39,12 @@ const ModalOperate: React.FC<IProps> = (props: any) => { ...@@ -39,11 +39,12 @@ const ModalOperate: React.FC<IProps> = (props: any) => {
maxNumber, maxNumber,
} = props; } = props;
const [confirmLoading, setConfirmLoading] = useState<boolean>(false);
const useFormEffects = () => { const useFormEffects = () => {
const { setFieldState } = createAsyncFormActions ()
if (modalType === 'audit') { if (modalType === 'audit') {
onFieldChange$('state').subscribe(({ value }) => { onFieldChange$('state').subscribe(({ value }) => {
setFieldState('auditOpinion', state => { actions.setFieldState('auditOpinion', state => {
if (value == 1) { if (value == 1) {
state.visible = false state.visible = false
} else { } else {
...@@ -54,7 +55,7 @@ const ModalOperate: React.FC<IProps> = (props: any) => { ...@@ -54,7 +55,7 @@ const ModalOperate: React.FC<IProps> = (props: any) => {
} }
if (modalType === 'planAudit') { if (modalType === 'planAudit') {
onFieldChange$('status').subscribe(({ value }) => { onFieldChange$('status').subscribe(({ value }) => {
setFieldState('cause', state => { actions.setFieldState('cause', state => {
if (value == 1) { if (value == 1) {
state.visible = false state.visible = false
} else { } else {
...@@ -206,6 +207,10 @@ const ModalOperate: React.FC<IProps> = (props: any) => { ...@@ -206,6 +207,10 @@ const ModalOperate: React.FC<IProps> = (props: any) => {
}, [visible]) }, [visible])
const handleSubmit = (val: any) => { const handleSubmit = (val: any) => {
if(confirmLoading){
return;
}
setConfirmLoading(true);
let value = { ...val } let value = { ...val }
let params: any = {} let params: any = {}
if (modalType === 'audit') { if (modalType === 'audit') {
...@@ -235,6 +240,8 @@ const ModalOperate: React.FC<IProps> = (props: any) => { ...@@ -235,6 +240,8 @@ const ModalOperate: React.FC<IProps> = (props: any) => {
if (res.code === 1000) { if (res.code === 1000) {
onOk && onOk() onOk && onOk()
} }
}).finally(() => {
setConfirmLoading(false);
}) })
} }
...@@ -262,6 +269,7 @@ const ModalOperate: React.FC<IProps> = (props: any) => { ...@@ -262,6 +269,7 @@ const ModalOperate: React.FC<IProps> = (props: any) => {
onCancel={handleClose} onCancel={handleClose}
onOk={() => actions.submit()} onOk={() => actions.submit()}
afterClose={() => actions.reset()} afterClose={() => actions.reset()}
confirmLoading={confirmLoading}
> >
<SchemaForm <SchemaForm
className={styles.revise_style} className={styles.revise_style}
......
...@@ -36,7 +36,12 @@ const ConfirmBidResultModal: React.FC<ConfirmBidResultModalProps> = (props: any) ...@@ -36,7 +36,12 @@ const ConfirmBidResultModal: React.FC<ConfirmBidResultModalProps> = (props: any)
// 控制tabkey // 控制tabkey
const [activeKey, setActiveKey] = useState<string>('1'); const [activeKey, setActiveKey] = useState<string>('1');
const [confirmLoading, setConfirmLoading] = useState<boolean>(false);
const handleOk = () => { const handleOk = () => {
if (confirmLoading) {
return
}
form.validateFields().then(res => { form.validateFields().then(res => {
const _params = { const _params = {
id: record.id, id: record.id,
...@@ -47,12 +52,13 @@ const ConfirmBidResultModal: React.FC<ConfirmBidResultModalProps> = (props: any) ...@@ -47,12 +52,13 @@ const ConfirmBidResultModal: React.FC<ConfirmBidResultModalProps> = (props: any)
awardResults: res.awardResults, awardResults: res.awardResults,
content: res.content content: res.content
} }
setConfirmLoading(true)
fetch && fetch(_params).then(res => { fetch && fetch(_params).then(res => {
console.log(res) console.log(res)
if (res.code === 1000) { if (res.code === 1000) {
onOk && onOk(); onOk && onOk();
} }
}) }).finally(() => setConfirmLoading(false))
}) })
} }
...@@ -94,6 +100,7 @@ const ConfirmBidResultModal: React.FC<ConfirmBidResultModalProps> = (props: any) ...@@ -94,6 +100,7 @@ const ConfirmBidResultModal: React.FC<ConfirmBidResultModalProps> = (props: any)
wrapClassName={styles.wrap} wrapClassName={styles.wrap}
onOk={() => { handleOk() }} onOk={() => { handleOk() }}
afterClose={() => { form.resetFields() }} afterClose={() => { form.resetFields() }}
confirmLoading={confirmLoading}
> >
<Form <Form
form={form} form={form}
......
...@@ -13,10 +13,11 @@ interface SubmitResultModalProps { ...@@ -13,10 +13,11 @@ interface SubmitResultModalProps {
visible: boolean, visible: boolean,
onCancel: () => void, onCancel: () => void,
onOk: (signUpIdea: string, urls: any) => void, onOk: (signUpIdea: string, urls: any) => void,
confirmLoading: boolean
} }
const SubmitResultModal: React.FC<SubmitResultModalProps> = (props: any) => { const SubmitResultModal: React.FC<SubmitResultModalProps> = (props: any) => {
const { title, visible, onCancel, onOk } = props; const { title, visible, onCancel, onOk, confirmLoading } = props;
const [form] = Form.useForm(); const [form] = Form.useForm();
const [files, setFiles] = useState([]); const [files, setFiles] = useState([]);
const [loading, setloading] = useState(false); const [loading, setloading] = useState(false);
...@@ -71,6 +72,7 @@ const SubmitResultModal: React.FC<SubmitResultModalProps> = (props: any) => { ...@@ -71,6 +72,7 @@ const SubmitResultModal: React.FC<SubmitResultModalProps> = (props: any) => {
form.resetFields() form.resetFields()
setFiles([]) setFiles([])
}} }}
confirmLoading={confirmLoading}
> >
<Form <Form
form={form} form={form}
......
...@@ -90,6 +90,8 @@ const SearchDetail = () => { ...@@ -90,6 +90,8 @@ const SearchDetail = () => {
// 授标结果 // 授标结果
const [awardResult, setAwardResult] = useState<any>({}); const [awardResult, setAwardResult] = useState<any>({});
const [confirmLoading, setConfirmLoading] = useState<boolean>(false);
// 生成tabs // 生成tabs
const _tabs = useMemo(() => { const _tabs = useMemo(() => {
...@@ -565,17 +567,21 @@ const SearchDetail = () => { ...@@ -565,17 +567,21 @@ const SearchDetail = () => {
}, [pathPci, awardResult]) }, [pathPci, awardResult])
const _handleBiddingReturn = (signUpIdea: string, urls: any) => { const _handleBiddingReturn = (signUpIdea: string, urls: any) => {
if(confirmLoading){
return;
}
const _params = { const _params = {
biddingId: id, biddingId: id,
signUpIdea, signUpIdea,
urls urls
} }
const _fetch = button === 1 ? PublicApi.postPurchaseBiddingUpdateBiddingReturn : PublicApi.postPurchaseBiddingSubmitExamineBiddingReturn; const _fetch = button === 1 ? PublicApi.postPurchaseBiddingUpdateBiddingReturn : PublicApi.postPurchaseBiddingSubmitExamineBiddingReturn;
setConfirmLoading(true)
_fetch(_params).then(res => { _fetch(_params).then(res => {
if (res.code === 1000) { if (res.code === 1000) {
history.goBack() history.goBack()
} }
}) }).finally(() => setConfirmLoading(false))
} }
return ( return (
...@@ -623,6 +629,7 @@ const SearchDetail = () => { ...@@ -623,6 +629,7 @@ const SearchDetail = () => {
visible={uploadBidResultVisible} visible={uploadBidResultVisible}
onOk={_handleBiddingReturn} onOk={_handleBiddingReturn}
onCancel={() => setUploadBidResultVisible(false)} onCancel={() => setUploadBidResultVisible(false)}
confirmLoading={confirmLoading}
/> />
<QuotationDetailsDrawer <QuotationDetailsDrawer
fetch={PublicApi.getPurchaseBiddingQuotedPriceDetaild} fetch={PublicApi.getPurchaseBiddingQuotedPriceDetaild}
......
...@@ -24,6 +24,7 @@ const DetailBottomDrawer: React.FC<DetailBottomDrawerProps> = (props: any) => { ...@@ -24,6 +24,7 @@ const DetailBottomDrawer: React.FC<DetailBottomDrawerProps> = (props: any) => {
const [activeIndex, setActiveIndex] = useState<any>(''); const [activeIndex, setActiveIndex] = useState<any>('');
const [dataSource, setDataSource] = useState<any>(materiels); const [dataSource, setDataSource] = useState<any>(materiels);
const [dataSource2, setDataSource2] = useState<any>(materiels); const [dataSource2, setDataSource2] = useState<any>(materiels);
const [btnLoading, setBtnLoading] = useState<boolean>(false);
useEffect(() => { useEffect(() => {
if (visible) { if (visible) {
setDataSource(materiels) setDataSource(materiels)
...@@ -121,6 +122,9 @@ const DetailBottomDrawer: React.FC<DetailBottomDrawerProps> = (props: any) => { ...@@ -121,6 +122,9 @@ const DetailBottomDrawer: React.FC<DetailBottomDrawerProps> = (props: any) => {
} }
const bidOk = () => { const bidOk = () => {
if(btnLoading){
return;
}
const _price = dataSource2.reduce((total: any, cur: any) => total + Number(cur.price), 0); const _price = dataSource2.reduce((total: any, cur: any) => total + Number(cur.price), 0);
if (detail?.minLowPrice && Number(detail.minLowPrice) - _price < detail.minPrice) { if (detail?.minLowPrice && Number(detail.minLowPrice) - _price < detail.minPrice) {
message.error('当前报价金额不满足最小价差要求,请修改后再报价!'); message.error('当前报价金额不满足最小价差要求,请修改后再报价!');
...@@ -137,11 +141,12 @@ const DetailBottomDrawer: React.FC<DetailBottomDrawerProps> = (props: any) => { ...@@ -137,11 +141,12 @@ const DetailBottomDrawer: React.FC<DetailBottomDrawerProps> = (props: any) => {
onlineId: detail.onlineId, onlineId: detail.onlineId,
materiels: _dataSource2, materiels: _dataSource2,
} }
setBtnLoading(true);
PublicApi.postPurchaseOnlineBiddingSubmitReportPrice(_params).then(res => { PublicApi.postPurchaseOnlineBiddingSubmitReportPrice(_params).then(res => {
if (res.code === 1000) { if (res.code === 1000) {
onClose && onClose(); onClose && onClose();
} }
}) }).finally(() => setBtnLoading(false))
} }
return ( return (
...@@ -158,7 +163,7 @@ const DetailBottomDrawer: React.FC<DetailBottomDrawerProps> = (props: any) => { ...@@ -158,7 +163,7 @@ const DetailBottomDrawer: React.FC<DetailBottomDrawerProps> = (props: any) => {
> >
<Row gutter={[8, 8]} style={{ marginBottom: '10px' }}> <Row gutter={[8, 8]} style={{ marginBottom: '10px' }}>
<Col span={7} key={'BtnItem_0'} onClick={() => { chooseItem() }}> <Col span={7} key={'BtnItem_0'} onClick={() => { chooseItem() }}>
<BtnItem btnType={3} detail={{ sumPice: _calcCurrentTotal, peportPriceSum: offerCount + 1 }} active={!activeItem} onOk={bidOk} onCancle={onClose} /> <BtnItem btnType={3} detail={{ sumPice: _calcCurrentTotal, peportPriceSum: offerCount + 1 }} active={!activeItem} onOk={bidOk} onCancle={onClose} btnLoading={btnLoading} />
</Col> </Col>
{awardProcess?.map((item, index, arr) => { {awardProcess?.map((item, index, arr) => {
let _ratio = 0; let _ratio = 0;
......
...@@ -26,6 +26,7 @@ const ReadySubmitExamineResult = () => { ...@@ -26,6 +26,7 @@ const ReadySubmitExamineResult = () => {
const [id, setId] = useState<number>(); const [id, setId] = useState<number>();
const [buttonType, setButtonType] = useState<number>(); const [buttonType, setButtonType] = useState<number>();
const [visible, setVisible] = useState<boolean>(false); const [visible, setVisible] = useState<boolean>(false);
const [confirmLoading, setConfirmLoading] = useState<boolean>(false);
const columns: ColumnType<any>[] = [{ const columns: ColumnType<any>[] = [{
title: '竞价单号/摘要', title: '竞价单号/摘要',
key: 'biddingNo', key: 'biddingNo',
...@@ -83,18 +84,22 @@ const ReadySubmitExamineResult = () => { ...@@ -83,18 +84,22 @@ const ReadySubmitExamineResult = () => {
} }
const _handleBiddingReturn = (signUpIdea: string, urls: any) => { const _handleBiddingReturn = (signUpIdea: string, urls: any) => {
if(confirmLoading){
return
}
const _params = { const _params = {
biddingId: id, biddingId: id,
signUpIdea, signUpIdea,
urls urls
} }
const _fetch = buttonType === 1 ? PublicApi.postPurchaseBiddingUpdateBiddingReturn : PublicApi.postPurchaseBiddingSubmitExamineBiddingReturn; const _fetch = buttonType === 1 ? PublicApi.postPurchaseBiddingUpdateBiddingReturn : PublicApi.postPurchaseBiddingSubmitExamineBiddingReturn;
setConfirmLoading(true)
_fetch(_params).then(res => { _fetch(_params).then(res => {
if (res.code === 1000) { if (res.code === 1000) {
setVisible(false); setVisible(false);
ref.current.reload(); ref.current.reload();
} }
}) }).finally(() => setConfirmLoading(false))
} }
return ( return (
...@@ -113,6 +118,7 @@ const ReadySubmitExamineResult = () => { ...@@ -113,6 +118,7 @@ const ReadySubmitExamineResult = () => {
visible={visible} visible={visible}
onOk={_handleBiddingReturn} onOk={_handleBiddingReturn}
onCancel={() => { setVisible(false) }} onCancel={() => { setVisible(false) }}
confirmLoading={confirmLoading}
/> />
</> </>
) )
......
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