5.24
This commit is contained in:
@ -41,6 +41,7 @@ const BiddingDocument: React.FC<BiddingDocumentProps> = (props) => {
|
|||||||
const [docSaveBtn, setDocSaveBtn] = useState<string>("compact");//保存按钮是否展示
|
const [docSaveBtn, setDocSaveBtn] = useState<string>("compact");//保存按钮是否展示
|
||||||
const [UploadList, setUploadList] = useState<any>(); //存upload列表
|
const [UploadList, setUploadList] = useState<any>(); //存upload列表
|
||||||
const [UploadID, setUploadID] = useState<any>("empty"); //upload 业务id
|
const [UploadID, setUploadID] = useState<any>("empty"); //upload 业务id
|
||||||
|
const [docName, setDocName] = useState<string>('');//文件名称格式化
|
||||||
|
|
||||||
const UploadProps: UploadProps = {
|
const UploadProps: UploadProps = {
|
||||||
name: "file",
|
name: "file",
|
||||||
@ -287,7 +288,7 @@ const BiddingDocument: React.FC<BiddingDocumentProps> = (props) => {
|
|||||||
},
|
},
|
||||||
]}
|
]}
|
||||||
>
|
>
|
||||||
<Input maxLength={200} readOnly={editInformation} />
|
<Input maxLength={200} readOnly={editInformation} value={docName} onChange={e => setDocName(trim(e.target.value))} />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
|
|
||||||
{//单一来源简化流程
|
{//单一来源简化流程
|
||||||
|
@ -3,6 +3,7 @@ import { Button, Form, Input, Modal, Select, Spin } from 'antd';
|
|||||||
import { PackageInformationProps } from '../data';
|
import { PackageInformationProps } from '../data';
|
||||||
import SelectProcess from './SelectProcess';
|
import SelectProcess from './SelectProcess';
|
||||||
import { getChooseProcess } from '../service';
|
import { getChooseProcess } from '../service';
|
||||||
|
import { trim } from '@/utils/CommonUtils';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 公开比选编辑
|
* 公开比选编辑
|
||||||
@ -45,6 +46,8 @@ const PackageInformationChoose: React.FC<PackageInformationProps> = (props) => {
|
|||||||
const [spinningload, setSpinningload] = useState<boolean>(false);
|
const [spinningload, setSpinningload] = useState<boolean>(false);
|
||||||
//保存loading
|
//保存loading
|
||||||
const [saveLoading, setSaveLoading] = useState<boolean>(false);
|
const [saveLoading, setSaveLoading] = useState<boolean>(false);
|
||||||
|
//名称格式化
|
||||||
|
const [bidSectName, setBidSectName] = useState<string>('');
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (values.status == 0 || values.status == 1) {
|
if (values.status == 0 || values.status == 1) {
|
||||||
setStatus(false);
|
setStatus(false);
|
||||||
@ -64,15 +67,15 @@ const PackageInformationChoose: React.FC<PackageInformationProps> = (props) => {
|
|||||||
//判断评审规则是否存在(比选多阶段)
|
//判断评审规则是否存在(比选多阶段)
|
||||||
if (values?.reviewRules == null) {
|
if (values?.reviewRules == null) {
|
||||||
//判断资格审查方法是否存在(比选一阶段预审)
|
//判断资格审查方法是否存在(比选一阶段预审)
|
||||||
if (values?.ptcpMode == null) {} else {
|
if (values?.ptcpMode == null) { } else {
|
||||||
params['levelFour'] = values?.ptcpMode;
|
params['levelFour'] = values?.ptcpMode;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
params['levelThree'] = values?.reviewRules;
|
params['levelThree'] = values?.reviewRules;
|
||||||
}
|
}
|
||||||
//判断应不应该显示选择流程按钮
|
//判断应不应该显示选择流程按钮
|
||||||
if(projectItems?.biddingSignDict == 'selection_method_1') {//比选一阶段
|
if (projectItems?.biddingSignDict == 'selection_method_1') {//比选一阶段
|
||||||
if(projectItems?.examinationMethodDict == 'examination_method_2') {//资格后审
|
if (projectItems?.examinationMethodDict == 'examination_method_2') {//资格后审
|
||||||
values?.evalMethodDict == null ? setShowSelect(true) : setShowSelect(false);
|
values?.evalMethodDict == null ? setShowSelect(true) : setShowSelect(false);
|
||||||
} else {
|
} else {
|
||||||
values?.evalMethodDict == null || values?.ptcpMode == null ? setShowSelect(true) : setShowSelect(false);
|
values?.evalMethodDict == null || values?.ptcpMode == null ? setShowSelect(true) : setShowSelect(false);
|
||||||
@ -143,18 +146,18 @@ const PackageInformationChoose: React.FC<PackageInformationProps> = (props) => {
|
|||||||
//判断评审规则是否存在(比选多阶段)
|
//判断评审规则是否存在(比选多阶段)
|
||||||
if (form.getFieldValue('reviewRules') == null || form.getFieldValue('reviewRules') == '') {
|
if (form.getFieldValue('reviewRules') == null || form.getFieldValue('reviewRules') == '') {
|
||||||
//判断资格审查方法是否存在(比选一阶段预审)
|
//判断资格审查方法是否存在(比选一阶段预审)
|
||||||
if (form.getFieldValue('ptcpMode') == null || form.getFieldValue('ptcpMode') == '') {} else {
|
if (form.getFieldValue('ptcpMode') == null || form.getFieldValue('ptcpMode') == '') { } else {
|
||||||
params['levelFour'] = form.getFieldValue('ptcpMode');
|
params['levelFour'] = form.getFieldValue('ptcpMode');
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
params['levelThree'] = form.getFieldValue('reviewRules');
|
params['levelThree'] = form.getFieldValue('reviewRules');
|
||||||
}
|
}
|
||||||
//判断应不应该显示选择流程按钮
|
//判断应不应该显示选择流程按钮
|
||||||
if(projectItems?.biddingSignDict == 'selection_method_1') {//比选一阶段
|
if (projectItems?.biddingSignDict == 'selection_method_1') {//比选一阶段
|
||||||
if(projectItems?.examinationMethodDict == 'examination_method_2') {//资格后审
|
if (projectItems?.examinationMethodDict == 'examination_method_2') {//资格后审
|
||||||
form.getFieldValue('evalMethodDict') == null || form.getFieldValue('evalMethodDict') == '' ? setShowSelect(true) : setShowSelect(false);
|
form.getFieldValue('evalMethodDict') == null || form.getFieldValue('evalMethodDict') == '' ? setShowSelect(true) : setShowSelect(false);
|
||||||
} else {
|
} else {
|
||||||
form.getFieldValue('evalMethodDict') == null || form.getFieldValue('evalMethodDict') == ''|| form.getFieldValue('ptcpMode') == null || form.getFieldValue('ptcpMode') == '' ? setShowSelect(true) : setShowSelect(false);
|
form.getFieldValue('evalMethodDict') == null || form.getFieldValue('evalMethodDict') == '' || form.getFieldValue('ptcpMode') == null || form.getFieldValue('ptcpMode') == '' ? setShowSelect(true) : setShowSelect(false);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
form.getFieldValue('evalMethodDict') == null || form.getFieldValue('evalMethodDict') == '' || form.getFieldValue('reviewRules') == null || form.getFieldValue('reviewRules') == '' ? setShowSelect(true) : setShowSelect(false);
|
form.getFieldValue('evalMethodDict') == null || form.getFieldValue('evalMethodDict') == '' || form.getFieldValue('reviewRules') == null || form.getFieldValue('reviewRules') == '' ? setShowSelect(true) : setShowSelect(false);
|
||||||
@ -256,7 +259,7 @@ const PackageInformationChoose: React.FC<PackageInformationProps> = (props) => {
|
|||||||
label="采购包名称"
|
label="采购包名称"
|
||||||
rules={[{ required: controlDisplay }, { max: 100, message: '最大不能超过100字' }]}
|
rules={[{ required: controlDisplay }, { max: 100, message: '最大不能超过100字' }]}
|
||||||
>
|
>
|
||||||
<Input disabled={!controlDisplay} placeholder="请填写采购包名称" />
|
<Input disabled={!controlDisplay} placeholder="请填写采购包名称" value={bidSectName} onChange={e => setBidSectName(trim(e.target.value))} />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item name="bidSectContractPrice" label="标段预算">
|
<Form.Item name="bidSectContractPrice" label="标段预算">
|
||||||
<Input prefix="¥" suffix="元" disabled />
|
<Input prefix="¥" suffix="元" disabled />
|
||||||
|
@ -3,6 +3,7 @@ import { Button, Form, Input, Modal, Select } from 'antd';
|
|||||||
import { PackageInformationProps } from '@/pages/Project/ProjectManage/PackageDivided/data';
|
import { PackageInformationProps } from '@/pages/Project/ProjectManage/PackageDivided/data';
|
||||||
import { getChooseProcess } from '@/pages/Project/ProjectManage/PackageDivided/service';
|
import { getChooseProcess } from '@/pages/Project/ProjectManage/PackageDivided/service';
|
||||||
import SelectProcess from '@/pages/Project/ProjectManage/PackageDivided/components/SelectProcess';
|
import SelectProcess from '@/pages/Project/ProjectManage/PackageDivided/components/SelectProcess';
|
||||||
|
import { trim } from '@/utils/CommonUtils';
|
||||||
/*
|
/*
|
||||||
*
|
*
|
||||||
* 询价编辑
|
* 询价编辑
|
||||||
@ -44,6 +45,8 @@ const PackageInformationEnquiry: React.FC<PackageInformationProps> = (props) =>
|
|||||||
const [spinningload, setSpinningload] = useState<boolean>(false);
|
const [spinningload, setSpinningload] = useState<boolean>(false);
|
||||||
//loading
|
//loading
|
||||||
const [saveLoading, setSaveLoading] = useState<boolean>(false);
|
const [saveLoading, setSaveLoading] = useState<boolean>(false);
|
||||||
|
//名称格式化
|
||||||
|
const [bidSectName, setBidSectName] = useState<string>('');
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (values.status == 1 || values.status == 0) {
|
if (values.status == 1 || values.status == 0) {
|
||||||
setStatus(false);
|
setStatus(false);
|
||||||
@ -157,7 +160,7 @@ const PackageInformationEnquiry: React.FC<PackageInformationProps> = (props) =>
|
|||||||
label="采购包名称"
|
label="采购包名称"
|
||||||
rules={[{ required: controlDisplay }, { max: 100, message: '最大不能超过100字' }]}
|
rules={[{ required: controlDisplay }, { max: 100, message: '最大不能超过100字' }]}
|
||||||
>
|
>
|
||||||
<Input disabled={!controlDisplay} placeholder="请填写采购包名称" />
|
<Input disabled={!controlDisplay} placeholder="请填写采购包名称" value={bidSectName} onChange={e => setBidSectName(trim(e.target.value))} />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item
|
<Form.Item
|
||||||
name="evalMethodDict"
|
name="evalMethodDict"
|
||||||
|
@ -3,6 +3,7 @@ import { Button, Form, Input, Modal, Select, Spin } from 'antd';
|
|||||||
import { PackageInformationProps } from '../data';
|
import { PackageInformationProps } from '../data';
|
||||||
import { getChooseProcess } from '../service';
|
import { getChooseProcess } from '../service';
|
||||||
import SelectProcess from './SelectProcess';
|
import SelectProcess from './SelectProcess';
|
||||||
|
import { trim } from '@/utils/CommonUtils';
|
||||||
/**
|
/**
|
||||||
* 邀请招标编辑
|
* 邀请招标编辑
|
||||||
*
|
*
|
||||||
@ -45,6 +46,8 @@ const PackageInformationInvite: React.FC<PackageInformationProps> = (props) => {
|
|||||||
const [spinningload, setSpinningload] = useState<boolean>(false);
|
const [spinningload, setSpinningload] = useState<boolean>(false);
|
||||||
//loading
|
//loading
|
||||||
const [saveLoading, setSaveLoading] = useState<boolean>(false);
|
const [saveLoading, setSaveLoading] = useState<boolean>(false);
|
||||||
|
//名称格式化
|
||||||
|
const [bidSectName, setBidSectName] = useState<string>('');
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (values.status == 0 || values.status == 1) {
|
if (values.status == 0 || values.status == 1) {
|
||||||
setStatus(false);
|
setStatus(false);
|
||||||
@ -185,7 +188,7 @@ const PackageInformationInvite: React.FC<PackageInformationProps> = (props) => {
|
|||||||
label="标段名称"
|
label="标段名称"
|
||||||
rules={[{ required: controlDisplay }, { max: 100, message: '最大不能超过100字' }]}
|
rules={[{ required: controlDisplay }, { max: 100, message: '最大不能超过100字' }]}
|
||||||
>
|
>
|
||||||
<Input disabled={!controlDisplay} placeholder="请填写标段名称" />
|
<Input disabled={!controlDisplay} placeholder="请填写标段名称" value={bidSectName} onChange={e => setBidSectName(trim(e.target.value))} />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item name="bidSectContractPrice" label="标段预算">
|
<Form.Item name="bidSectContractPrice" label="标段预算">
|
||||||
<Input prefix="¥" suffix="元" disabled />
|
<Input prefix="¥" suffix="元" disabled />
|
||||||
|
@ -3,6 +3,7 @@ import { Button, Form, Input, Modal, Select, Spin } from 'antd';
|
|||||||
import { PackageInformationProps } from '../data';
|
import { PackageInformationProps } from '../data';
|
||||||
import { getChooseProcess } from '../service';
|
import { getChooseProcess } from '../service';
|
||||||
import SelectProcess from './SelectProcess';
|
import SelectProcess from './SelectProcess';
|
||||||
|
import { trim } from '@/utils/CommonUtils';
|
||||||
/**
|
/**
|
||||||
* 公开招标编辑
|
* 公开招标编辑
|
||||||
*
|
*
|
||||||
@ -46,6 +47,8 @@ const PackageInformationInviteBid: React.FC<PackageInformationProps> = (props) =
|
|||||||
const [spinningload, setSpinningload] = useState<boolean>(false);
|
const [spinningload, setSpinningload] = useState<boolean>(false);
|
||||||
//loading
|
//loading
|
||||||
const [saveLoading, setSaveLoading] = useState<boolean>(false);
|
const [saveLoading, setSaveLoading] = useState<boolean>(false);
|
||||||
|
//名称格式化
|
||||||
|
const [bidSectName, setBidSectName] = useState<string>('');
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (values.status == 1 || values.status == 0) {
|
if (values.status == 1 || values.status == 0) {
|
||||||
setStatus(false);
|
setStatus(false);
|
||||||
@ -266,7 +269,7 @@ const PackageInformationInviteBid: React.FC<PackageInformationProps> = (props) =
|
|||||||
label="标段名称"
|
label="标段名称"
|
||||||
rules={[{ required: controlDisplay }, { max: 100, message: '最大不能超过100字' }]}
|
rules={[{ required: controlDisplay }, { max: 100, message: '最大不能超过100字' }]}
|
||||||
>
|
>
|
||||||
<Input disabled={!controlDisplay} placeholder="请填写标段名称" />
|
<Input disabled={!controlDisplay} placeholder="请填写标段名称" value={bidSectName} onChange={e => setBidSectName(trim(e.target.value))} />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item name="bidSectContractPrice" label="标段预算">
|
<Form.Item name="bidSectContractPrice" label="标段预算">
|
||||||
<Input prefix="¥" suffix="元" disabled />
|
<Input prefix="¥" suffix="元" disabled />
|
||||||
|
@ -3,6 +3,7 @@ import { Button, Form, Input, Modal, Select, Spin } from 'antd';
|
|||||||
import { PackageInformationProps } from '../data';
|
import { PackageInformationProps } from '../data';
|
||||||
import { getChooseProcess } from '../service';
|
import { getChooseProcess } from '../service';
|
||||||
import SelectProcess from './SelectProcess';
|
import SelectProcess from './SelectProcess';
|
||||||
|
import { trim } from '@/utils/CommonUtils';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 竞争性谈判编辑
|
* 竞争性谈判编辑
|
||||||
@ -46,7 +47,8 @@ const PackageInformationNegotiate: React.FC<PackageInformationProps> = (props) =
|
|||||||
const [spinningload, setSpinningload] = useState<boolean>(false);
|
const [spinningload, setSpinningload] = useState<boolean>(false);
|
||||||
//保存loading
|
//保存loading
|
||||||
const [saveLoading, setSaveLoading] = useState<boolean>(false);
|
const [saveLoading, setSaveLoading] = useState<boolean>(false);
|
||||||
|
//名称格式化
|
||||||
|
const [bidSectName, setBidSectName] = useState<string>('');
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (values.status == 0 || values.status == 1) {
|
if (values.status == 0 || values.status == 1) {
|
||||||
setStatus(false);
|
setStatus(false);
|
||||||
@ -176,7 +178,7 @@ const PackageInformationNegotiate: React.FC<PackageInformationProps> = (props) =
|
|||||||
label="采购包名称"
|
label="采购包名称"
|
||||||
rules={[{ required: controlDisplay }, { max: 100, message: '最大不能超过100字' }]}
|
rules={[{ required: controlDisplay }, { max: 100, message: '最大不能超过100字' }]}
|
||||||
>
|
>
|
||||||
<Input disabled={!controlDisplay} placeholder="请填写采购包名称" />
|
<Input disabled={!controlDisplay} placeholder="请填写采购包名称" value={bidSectName} onChange={e => setBidSectName(trim(e.target.value))} />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item name="bidSectContractPrice" label="采购包预算">
|
<Form.Item name="bidSectContractPrice" label="采购包预算">
|
||||||
<Input prefix="¥" suffix="元" disabled />
|
<Input prefix="¥" suffix="元" disabled />
|
||||||
|
@ -3,6 +3,7 @@ import { Button, Form, Input, Modal, Select, Spin } from 'antd';
|
|||||||
import { PackageInformationProps } from '../data';
|
import { PackageInformationProps } from '../data';
|
||||||
import { getChooseProcess } from '../service';
|
import { getChooseProcess } from '../service';
|
||||||
import SelectProcess from './SelectProcess';
|
import SelectProcess from './SelectProcess';
|
||||||
|
import { trim } from '@/utils/CommonUtils';
|
||||||
/**
|
/**
|
||||||
* 单一来源编辑
|
* 单一来源编辑
|
||||||
*
|
*
|
||||||
@ -43,7 +44,8 @@ const PackageInformationOnly: React.FC<PackageInformationProps> = (props) => {
|
|||||||
const [spinningload, setSpinningload] = useState<boolean>(false);
|
const [spinningload, setSpinningload] = useState<boolean>(false);
|
||||||
//保存loading
|
//保存loading
|
||||||
const [saveLoading, setSaveLoading] = useState<boolean>(false);
|
const [saveLoading, setSaveLoading] = useState<boolean>(false);
|
||||||
|
//名称格式化
|
||||||
|
const [bidSectName, setBidSectName] = useState<string>('');
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (values.status == 0 || values.status == 1) {
|
if (values.status == 0 || values.status == 1) {
|
||||||
setStatus(false);
|
setStatus(false);
|
||||||
@ -144,7 +146,7 @@ const PackageInformationOnly: React.FC<PackageInformationProps> = (props) => {
|
|||||||
<Input disabled />
|
<Input disabled />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item name="bidSectName" label="采购包名称" rules={[{ required: controlDisplay }, { max: 100, message: "最大不能超过100字" }]}>
|
<Form.Item name="bidSectName" label="采购包名称" rules={[{ required: controlDisplay }, { max: 100, message: "最大不能超过100字" }]}>
|
||||||
<Input disabled={!controlDisplay} placeholder="请填写采购包名称" />
|
<Input disabled={!controlDisplay} placeholder="请填写采购包名称" value={bidSectName} onChange={e => setBidSectName(trim(e.target.value))} />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item name="bidSectContractPrice" label="采购包预算">
|
<Form.Item name="bidSectContractPrice" label="采购包预算">
|
||||||
<Input prefix="¥" suffix="元" disabled />
|
<Input prefix="¥" suffix="元" disabled />
|
||||||
|
@ -3,6 +3,7 @@ import { Button, Form, Input, Modal, Select, Spin } from 'antd';
|
|||||||
import { PackageInformationProps } from '../data';
|
import { PackageInformationProps } from '../data';
|
||||||
import SelectProcess from './SelectProcess';
|
import SelectProcess from './SelectProcess';
|
||||||
import { getChooseProcess } from '../service';
|
import { getChooseProcess } from '../service';
|
||||||
|
import { trim } from '@/utils/CommonUtils';
|
||||||
/**
|
/**
|
||||||
* 公开招募编辑
|
* 公开招募编辑
|
||||||
*
|
*
|
||||||
@ -45,6 +46,8 @@ const PackageInformationRecruit: React.FC<PackageInformationProps> = (props) =>
|
|||||||
const [spinningload, setSpinningload] = useState<boolean>(false);
|
const [spinningload, setSpinningload] = useState<boolean>(false);
|
||||||
//保存loading
|
//保存loading
|
||||||
const [saveLoading, setSaveLoading] = useState<boolean>(false);
|
const [saveLoading, setSaveLoading] = useState<boolean>(false);
|
||||||
|
//名称格式化
|
||||||
|
const [bidSectName, setBidSectName] = useState<string>('');
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (values.status == 0 || values.status == 1) {
|
if (values.status == 0 || values.status == 1) {
|
||||||
setStatus(false);
|
setStatus(false);
|
||||||
@ -187,7 +190,7 @@ const PackageInformationRecruit: React.FC<PackageInformationProps> = (props) =>
|
|||||||
label="包件名称"
|
label="包件名称"
|
||||||
rules={[{ required: controlDisplay }, { max: 100, message: '最大不能超过100字' }]}
|
rules={[{ required: controlDisplay }, { max: 100, message: '最大不能超过100字' }]}
|
||||||
>
|
>
|
||||||
<Input disabled={!controlDisplay} placeholder="请填写包件名称" />
|
<Input disabled={!controlDisplay} placeholder="请填写包件名称" value={bidSectName} onChange={e => setBidSectName(trim(e.target.value))} />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item
|
<Form.Item
|
||||||
name="reviewRules"
|
name="reviewRules"
|
||||||
|
@ -76,6 +76,8 @@ const ProjectDocumentation: React.FC<ProcurementMethodItem> = (props) => {
|
|||||||
const openTenderFormSelect = createSelect(dictData['open_tender_form=record']);
|
const openTenderFormSelect = createSelect(dictData['open_tender_form=record']);
|
||||||
//是否需要供应商ipass解密显隐
|
//是否需要供应商ipass解密显隐
|
||||||
const [isIPassDecode, isIPassDecodeSet] = useState<boolean>(false);
|
const [isIPassDecode, isIPassDecodeSet] = useState<boolean>(false);
|
||||||
|
//项目名称格式化
|
||||||
|
const [projectName, setProjectName] = useState<string>('');
|
||||||
function onChangeIpass(e: any) {//是否使用ipass制作
|
function onChangeIpass(e: any) {//是否使用ipass制作
|
||||||
isIPassDecodeSet(e.target.value === '0');
|
isIPassDecodeSet(e.target.value === '0');
|
||||||
}
|
}
|
||||||
@ -305,7 +307,7 @@ const ProjectDocumentation: React.FC<ProcurementMethodItem> = (props) => {
|
|||||||
name="projectName"
|
name="projectName"
|
||||||
rules={[{ required: true }]}
|
rules={[{ required: true }]}
|
||||||
>
|
>
|
||||||
<Input disabled={whetherReadonly} readOnly={whetherReadonly} maxLength={150} />
|
<Input disabled={whetherReadonly} readOnly={whetherReadonly} maxLength={150} value={projectName} onChange={e => setProjectName(trim(e.target.value))} />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
</Col>
|
</Col>
|
||||||
<Col span={12}>
|
<Col span={12}>
|
||||||
|
@ -71,6 +71,8 @@ const ProjectDocumentation: React.FC<ProcurementMethodItem> = (props) => {
|
|||||||
const bidMethodSubDictSelect = createSelect(dictData['bid_method_sub=record']);
|
const bidMethodSubDictSelect = createSelect(dictData['bid_method_sub=record']);
|
||||||
//适用法律
|
//适用法律
|
||||||
const openTenderFormSelect = createSelect(dictData['open_tender_form=record']);
|
const openTenderFormSelect = createSelect(dictData['open_tender_form=record']);
|
||||||
|
//项目名称格式化
|
||||||
|
const [projectName, setProjectName] = useState<string>('');
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
/**
|
/**
|
||||||
* 根据id获取数据
|
* 根据id获取数据
|
||||||
@ -295,7 +297,7 @@ const ProjectDocumentation: React.FC<ProcurementMethodItem> = (props) => {
|
|||||||
name="projectName"
|
name="projectName"
|
||||||
rules={[{ required: true }]}
|
rules={[{ required: true }]}
|
||||||
>
|
>
|
||||||
<Input disabled={whetherReadonly} readOnly={whetherReadonly} maxLength={150} />
|
<Input disabled={whetherReadonly} readOnly={whetherReadonly} maxLength={150} value={projectName} onChange={e => setProjectName(trim(e.target.value))} />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
</Col>
|
</Col>
|
||||||
<Col span={12}>
|
<Col span={12}>
|
||||||
|
@ -77,6 +77,8 @@ const ProjectDocumentation: React.FC<ProcurementMethodItem> = (props) => {
|
|||||||
const [noInformationFlag, setNoInformationFlag] = useState<boolean>(String(status) === '0');
|
const [noInformationFlag, setNoInformationFlag] = useState<boolean>(String(status) === '0');
|
||||||
//是否需要供应商ipass解密显隐
|
//是否需要供应商ipass解密显隐
|
||||||
const [isIPassDecode, isIPassDecodeSet] = useState<boolean>(false);
|
const [isIPassDecode, isIPassDecodeSet] = useState<boolean>(false);
|
||||||
|
//项目名称格式化
|
||||||
|
const [projectName, setProjectName] = useState<string>('');
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
/**
|
/**
|
||||||
* 根据id获取数据
|
* 根据id获取数据
|
||||||
@ -308,7 +310,7 @@ const ProjectDocumentation: React.FC<ProcurementMethodItem> = (props) => {
|
|||||||
name="projectName"
|
name="projectName"
|
||||||
rules={[{ required: true }]}
|
rules={[{ required: true }]}
|
||||||
>
|
>
|
||||||
<Input disabled={whetherReadonly} readOnly={whetherReadonly} maxLength={100} />
|
<Input disabled={whetherReadonly} readOnly={whetherReadonly} maxLength={100} value={projectName} onChange={e => setProjectName(trim(e.target.value))} />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
</Col>
|
</Col>
|
||||||
<Col span={12}>
|
<Col span={12}>
|
||||||
|
@ -74,6 +74,8 @@ const ProjectDocumentation: React.FC<ProcurementMethodItem> = (props) => {
|
|||||||
const [noInformationFlag, setNoInformationFlag] = useState<boolean>(String(status) === '0');
|
const [noInformationFlag, setNoInformationFlag] = useState<boolean>(String(status) === '0');
|
||||||
//是否需要供应商ipass解密显隐
|
//是否需要供应商ipass解密显隐
|
||||||
const [isIPassDecode, isIPassDecodeSet] = useState<boolean>(false);
|
const [isIPassDecode, isIPassDecodeSet] = useState<boolean>(false);
|
||||||
|
//项目名称格式化
|
||||||
|
const [projectName, setProjectName] = useState<string>('');
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
/**
|
/**
|
||||||
* 根据id获取数据
|
* 根据id获取数据
|
||||||
@ -281,7 +283,7 @@ const ProjectDocumentation: React.FC<ProcurementMethodItem> = (props) => {
|
|||||||
name="projectName"
|
name="projectName"
|
||||||
rules={[{ required: true }]}
|
rules={[{ required: true }]}
|
||||||
>
|
>
|
||||||
<Input disabled={whetherReadonly} readOnly={whetherReadonly} maxLength={100} />
|
<Input disabled={whetherReadonly} readOnly={whetherReadonly} maxLength={100} value={projectName} onChange={e => setProjectName(trim(e.target.value))} />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
</Col>
|
</Col>
|
||||||
<Col span={12}>
|
<Col span={12}>
|
||||||
|
@ -73,6 +73,8 @@ const ProjectDocumentation: React.FC<ProcurementMethodItem> = (props) => {
|
|||||||
const [noInformationFlag, setNoInformationFlag] = useState<boolean>(String(status) === '0');
|
const [noInformationFlag, setNoInformationFlag] = useState<boolean>(String(status) === '0');
|
||||||
//是否需要供应商ipass解密显隐
|
//是否需要供应商ipass解密显隐
|
||||||
const [isIPassDecode, isIPassDecodeSet] = useState<boolean>(false);
|
const [isIPassDecode, isIPassDecodeSet] = useState<boolean>(false);
|
||||||
|
//项目名称格式化
|
||||||
|
const [projectName, setProjectName] = useState<string>('');
|
||||||
function onChangeIpass(e: any) {//是否使用ipass制作
|
function onChangeIpass(e: any) {//是否使用ipass制作
|
||||||
isIPassDecodeSet(e.target.value === '0');
|
isIPassDecodeSet(e.target.value === '0');
|
||||||
}
|
}
|
||||||
@ -306,7 +308,7 @@ const ProjectDocumentation: React.FC<ProcurementMethodItem> = (props) => {
|
|||||||
name="projectName"
|
name="projectName"
|
||||||
rules={[{ required: true }]}
|
rules={[{ required: true }]}
|
||||||
>
|
>
|
||||||
<Input disabled={whetherReadonly} readOnly={whetherReadonly} maxLength={150} />
|
<Input disabled={whetherReadonly} readOnly={whetherReadonly} maxLength={150} value={projectName} onChange={e => setProjectName(trim(e.target.value))} />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
</Col>
|
</Col>
|
||||||
<Col span={12}>
|
<Col span={12}>
|
||||||
|
@ -71,6 +71,8 @@ const ProjectDocumentation: React.FC<ProcurementMethodItem> = (props) => {
|
|||||||
const [noInformationFlag, setNoInformationFlag] = useState<boolean>(String(status) === '0');
|
const [noInformationFlag, setNoInformationFlag] = useState<boolean>(String(status) === '0');
|
||||||
//是否需要供应商ipass解密显隐
|
//是否需要供应商ipass解密显隐
|
||||||
const [isIPassDecode, isIPassDecodeSet] = useState<boolean>(false);
|
const [isIPassDecode, isIPassDecodeSet] = useState<boolean>(false);
|
||||||
|
//项目名称格式化
|
||||||
|
const [projectName, setProjectName] = useState<string>('');
|
||||||
function onChangeIpass(e: any) {//是否使用ipass制作
|
function onChangeIpass(e: any) {//是否使用ipass制作
|
||||||
isIPassDecodeSet(e.target.value === '0');
|
isIPassDecodeSet(e.target.value === '0');
|
||||||
}
|
}
|
||||||
@ -305,7 +307,7 @@ const ProjectDocumentation: React.FC<ProcurementMethodItem> = (props) => {
|
|||||||
name="projectName"
|
name="projectName"
|
||||||
rules={[{ required: true }]}
|
rules={[{ required: true }]}
|
||||||
>
|
>
|
||||||
<Input disabled={whetherReadonly} readOnly={whetherReadonly} maxLength={150} />
|
<Input disabled={whetherReadonly} readOnly={whetherReadonly} maxLength={150} value={projectName} onChange={e => setProjectName(trim(e.target.value))} />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
</Col>
|
</Col>
|
||||||
<Col span={12}>
|
<Col span={12}>
|
||||||
|
@ -1,25 +1,25 @@
|
|||||||
/**
|
/**
|
||||||
* 单一来源-简化流程
|
* 单一来源-简化流程
|
||||||
*/
|
*/
|
||||||
import React, { useEffect, useState } from 'react';
|
import React, { useEffect, useState } from 'react';
|
||||||
import { Form, Input, Button, Select, Radio, Col, Row, Modal } from 'antd';
|
import { Form, Input, Button, Select, Radio, Col, Row, Modal } from 'antd';
|
||||||
import { getSelectName, ProcurementMethodItem, updateUtils } from '../utils';
|
import { getSelectName, ProcurementMethodItem, updateUtils } from '../utils';
|
||||||
import { getBudgetAmountById, getByProvincesNumber, getDictRegion, getId, getProvince, getProvinces } from '../service';
|
import { getBudgetAmountById, getByProvincesNumber, getDictRegion, getId, getProvince, getProvinces } from '../service';
|
||||||
import { isEmpty, trim } from '@/utils/CommonUtils';
|
import { isEmpty, trim } from '@/utils/CommonUtils';
|
||||||
import { getDicData } from '@/utils/session';
|
import { getDicData } from '@/utils/session';
|
||||||
import '@/assets/lq_style.less';
|
import '@/assets/lq_style.less';
|
||||||
import { btnAuthority } from '@/utils/authority';
|
import { btnAuthority } from '@/utils/authority';
|
||||||
const { Option } = Select;
|
const { Option } = Select;
|
||||||
|
|
||||||
const layout = {
|
const layout = {
|
||||||
labelCol: { span: 10 },
|
labelCol: { span: 10 },
|
||||||
wrapperCol: { span: 13 },
|
wrapperCol: { span: 13 },
|
||||||
};
|
};
|
||||||
/**
|
/**
|
||||||
* 加载Option
|
* 加载Option
|
||||||
* @param data 数据源
|
* @param data 数据源
|
||||||
*/
|
*/
|
||||||
function createSelect(data: any) {
|
function createSelect(data: any) {
|
||||||
let value = [];
|
let value = [];
|
||||||
for (const item of data) {
|
for (const item of data) {
|
||||||
value.push(
|
value.push(
|
||||||
@ -27,9 +27,9 @@ import { btnAuthority } from '@/utils/authority';
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
function createSelectArea(data: any) {
|
function createSelectArea(data: any) {
|
||||||
let value = [];
|
let value = [];
|
||||||
for (let i = 0; i < data.length; i++) {
|
for (let i = 0; i < data.length; i++) {
|
||||||
if (i === 0 && data[i].pid !== '0') {
|
if (i === 0 && data[i].pid !== '0') {
|
||||||
@ -38,9 +38,9 @@ import { btnAuthority } from '@/utils/authority';
|
|||||||
value.push(<Option key={data[i].id} value={data[i].id}>{data[i].name}</Option>)
|
value.push(<Option key={data[i].id} value={data[i].id}>{data[i].name}</Option>)
|
||||||
}
|
}
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
const ProjectDocumentation: React.FC<ProcurementMethodItem> = (props) => {
|
const ProjectDocumentation: React.FC<ProcurementMethodItem> = (props) => {
|
||||||
const { id, whetherReadonly, status, setTabFlag, setActiveKey, setCurrentPage } = props;
|
const { id, whetherReadonly, status, setTabFlag, setActiveKey, setCurrentPage } = props;
|
||||||
//获取字典
|
//获取字典
|
||||||
const getDict: any = getDicData();
|
const getDict: any = getDicData();
|
||||||
@ -71,6 +71,8 @@ import { btnAuthority } from '@/utils/authority';
|
|||||||
const [noInformationFlag, setNoInformationFlag] = useState<boolean>(String(status) === '0');
|
const [noInformationFlag, setNoInformationFlag] = useState<boolean>(String(status) === '0');
|
||||||
//是否需要供应商ipass解密显隐
|
//是否需要供应商ipass解密显隐
|
||||||
const [isIPassDecode, isIPassDecodeSet] = useState<boolean>(false);
|
const [isIPassDecode, isIPassDecodeSet] = useState<boolean>(false);
|
||||||
|
//项目名称格式化
|
||||||
|
const [projectName, setProjectName] = useState<string>('');
|
||||||
function onChangeIpass(e: any) {//是否使用ipass制作
|
function onChangeIpass(e: any) {//是否使用ipass制作
|
||||||
isIPassDecodeSet(e.target.value === '0');
|
isIPassDecodeSet(e.target.value === '0');
|
||||||
}
|
}
|
||||||
@ -305,7 +307,7 @@ import { btnAuthority } from '@/utils/authority';
|
|||||||
name="projectName"
|
name="projectName"
|
||||||
rules={[{ required: true }]}
|
rules={[{ required: true }]}
|
||||||
>
|
>
|
||||||
<Input disabled={whetherReadonly} readOnly={whetherReadonly} maxLength={150} />
|
<Input disabled={whetherReadonly} readOnly={whetherReadonly} maxLength={150} value={projectName} onChange={e => setProjectName(trim(e.target.value))} />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
</Col>
|
</Col>
|
||||||
<Col span={12}>
|
<Col span={12}>
|
||||||
@ -536,6 +538,6 @@ import { btnAuthority } from '@/utils/authority';
|
|||||||
|
|
||||||
return formEditBidding();
|
return formEditBidding();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export default ProjectDocumentation;
|
export default ProjectDocumentation;
|
@ -38,6 +38,7 @@ const BiddingDocument: React.FC<BiddingDocumentProps> = (props) => {
|
|||||||
const [docSaveBtn, setDocSaveBtn] = useState<string>("compact");//保存按钮是否展示
|
const [docSaveBtn, setDocSaveBtn] = useState<string>("compact");//保存按钮是否展示
|
||||||
const [UploadList, setUploadList] = useState<any>(); //存upload列表
|
const [UploadList, setUploadList] = useState<any>(); //存upload列表
|
||||||
const [UploadID, setUploadID] = useState<any>("empty"); //upload 业务id
|
const [UploadID, setUploadID] = useState<any>("empty"); //upload 业务id
|
||||||
|
const [docName, setDocName] = useState<string>('');//文件名称格式化
|
||||||
const UploadProps: UploadProps = {
|
const UploadProps: UploadProps = {
|
||||||
name: "file",
|
name: "file",
|
||||||
disabled: editInformation
|
disabled: editInformation
|
||||||
@ -244,7 +245,7 @@ const BiddingDocument: React.FC<BiddingDocumentProps> = (props) => {
|
|||||||
},
|
},
|
||||||
]}
|
]}
|
||||||
>
|
>
|
||||||
<Input maxLength={200} readOnly={editInformation} />
|
<Input maxLength={200} readOnly={editInformation} value={docName} onChange={e => setDocName(trim(e.target.value))} />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item
|
<Form.Item
|
||||||
label="关联标段"
|
label="关联标段"
|
||||||
|
@ -307,8 +307,11 @@ export const numberToChinese = (num: any) => {
|
|||||||
* @param str
|
* @param str
|
||||||
* @returns
|
* @returns
|
||||||
*/
|
*/
|
||||||
export const trim = (str: string | undefined) => {
|
export const trim = (str: string): string => {
|
||||||
let _str = str?.replace(/(^\s*)|(\s*$)/g, "");
|
if (isNotEmpty(str)) {
|
||||||
_str = _str?.replace(/[<>|\\/??::*""“”\s\r\n\t]/, "");
|
let _str = str.replace(/(^\s*)|(\s*$)/g, "");
|
||||||
|
_str = _str.replace(/[<>|\\/??::*""“”\s\r\n\t]/, "");
|
||||||
return _str;
|
return _str;
|
||||||
|
}
|
||||||
|
return '';
|
||||||
}
|
}
|
Reference in New Issue
Block a user