3.10 工程代码同步master
This commit is contained in:
@ -1,18 +1,17 @@
|
||||
import React, { useEffect, useRef, useState } from 'react';
|
||||
import '@/utils/lq.style.less';
|
||||
import { Button, Input, Form, Upload, Modal, DatePicker, Checkbox, message } from 'antd';
|
||||
import { UploadOutlined } from '@ant-design/icons';
|
||||
import { Button, Input, Form, Modal, DatePicker, Checkbox, message, Card } from 'antd';
|
||||
import ProTable from '@ant-design/pro-table';
|
||||
import { dateTimeFormatter, echoDateTimeFormatter, saveDateTimeFormatter } from '@/utils/DateUtils';
|
||||
import { evaluationquestionIinsert, evaluationquestionSend, getAssessroomSuppliers } from '../service';
|
||||
import { datePickerDisabledDate, datePickerDisabledTime, dateTimeFormatter, echoDateTimeFormatter, saveDateTimeFormatter, showTimeDefaultValue } from '@/utils/DateUtils';
|
||||
import { evaluationquestionIinsert, evaluationquestionSend, evaluationquestionUpdate, getAssessroomSuppliers } from '../service';
|
||||
import { commonMessage, saveMessage } from '@/utils/MessageUtils';
|
||||
import { queryingPagingData } from '@/utils/PageUtils';
|
||||
import InquiryBox from '@/utils/InquiryBox';
|
||||
import { downloadAttachmentPath, downloadAttachmentPathOId, getUploadContent } from '@/utils/DownloadUtils';
|
||||
import { Divider } from '@material-ui/core';
|
||||
import UploadModule from '@/utils/UploadModule';
|
||||
import { getProMethod, getRoomId, getSessionProjectData } from '@/utils/session';
|
||||
import ExtendUpload from '@/utils/ExtendUpload';
|
||||
import { btnAuthority } from '@/utils/authority';
|
||||
import { isEmpty } from '@/utils/CommonUtils';
|
||||
import { getRoomId, getSessionProjectData } from '@/utils/session';
|
||||
import { getAssessRoomStatus } from '../../ReviewResults/service';
|
||||
|
||||
|
||||
const layout = {
|
||||
@ -25,21 +24,46 @@ const layout = {
|
||||
*/
|
||||
function getSectionCheckbox(data: any[]) {
|
||||
let value = [];
|
||||
let flag = true;
|
||||
for (const item of data) {
|
||||
value.push(
|
||||
<Checkbox key={item.companyId} value={item.companyId} >
|
||||
{item.companyName}
|
||||
</Checkbox>
|
||||
)
|
||||
if (flag) {
|
||||
value.push(
|
||||
<Checkbox key={item.companyId} style={{ marginLeft: '8px' }} value={item.companyId + '-' + item.companyName} >
|
||||
{item.companyName}
|
||||
</Checkbox>
|
||||
)
|
||||
flag = false;
|
||||
} else {
|
||||
value.push(
|
||||
<Checkbox key={item.companyId} value={item.companyId + '-' + item.companyName} >
|
||||
{item.companyName}
|
||||
</Checkbox>
|
||||
)
|
||||
}
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
function selectByCompanyId(companyId: any, data: any[]) {
|
||||
let arr = [];
|
||||
for (const item of data) {
|
||||
if (item.companyId == companyId) {
|
||||
arr.push(<Input key={item.companyId} value={item.companyName} bordered={false} readOnly />)
|
||||
break;
|
||||
}
|
||||
}
|
||||
return arr;
|
||||
}
|
||||
|
||||
const ClarificationOfTheBid: React.FC = () => {
|
||||
//评审室id
|
||||
const assessRoomId = getRoomId();
|
||||
//项目信息
|
||||
const projectData = getSessionProjectData();
|
||||
//项目id
|
||||
const projectId = getSessionProjectData().id;
|
||||
const projectId = projectData.id;
|
||||
//采购方式
|
||||
const proMethod = getProMethod();
|
||||
//form弹窗
|
||||
const [visible, setVisible] = useState<boolean>(false);
|
||||
const [form] = Form.useForm();
|
||||
@ -57,12 +81,24 @@ const ClarificationOfTheBid: React.FC = () => {
|
||||
const actionRef = useRef<any>();
|
||||
//保存遮罩
|
||||
const [submitLoading, setSubmitLoading] = useState<boolean>(false);
|
||||
//上传文件列表
|
||||
const [fileListData, setFileListData] = useState<any[]>([]);
|
||||
//查看文件
|
||||
const [viewFile, setViewFile] = useState<any>();
|
||||
//上传文件数量限制
|
||||
let num = 1;
|
||||
//附件bid
|
||||
const [bid, setBid] = useState<string>('');
|
||||
//是否新建
|
||||
const [whetherTheNew, setWhetherTheNew] = useState<boolean>(false);
|
||||
//选择当前供应商
|
||||
const [suppliersOne, setSuppliersOne] = useState<any>();
|
||||
//回复附件id
|
||||
const [attReplyId, setAttReplyId] = useState<string>("");
|
||||
//评审室信息
|
||||
const [assessRoomData, setAssessRoomData] = useState<any>({});
|
||||
|
||||
let showNameT: any = { tbr: '', pb: '', tb: '' }//投标人供应商
|
||||
if (proMethod === 'procurement_mode_1' || proMethod === 'procurement_mode_2') {//招标
|
||||
showNameT = { tbr: '投标人', pb: '评标', tb: '投标' };
|
||||
} else {
|
||||
showNameT = { tbr: '供应商', pb: '评审', tb: '应答' }
|
||||
}
|
||||
|
||||
const columns: any = [
|
||||
{
|
||||
title: '序号',
|
||||
@ -72,34 +108,30 @@ const ClarificationOfTheBid: React.FC = () => {
|
||||
title: '标题',
|
||||
dataIndex: 'questionTitle',
|
||||
},
|
||||
{
|
||||
title: '质询文件',
|
||||
dataIndex: 'attName',
|
||||
render: (_: string, record: any) => {
|
||||
if (_ === '-') {
|
||||
return _;
|
||||
}
|
||||
return (
|
||||
<a href={`${downloadAttachmentPath}${record.attId}`}>{_}</a>
|
||||
)
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '提问时间',
|
||||
dataIndex: 'sendTime',
|
||||
},
|
||||
{
|
||||
title: '要求回复时间',
|
||||
title: '回复截止时间',
|
||||
dataIndex: 'deadlineTime',
|
||||
},
|
||||
{
|
||||
title: '投标人',
|
||||
title: showNameT.tbr,
|
||||
dataIndex: 'companyName',
|
||||
},
|
||||
{
|
||||
title: '回复时间',
|
||||
dataIndex: 'replyTime',
|
||||
},
|
||||
{
|
||||
title: '状态',
|
||||
dataIndex: 'editStatus',
|
||||
valueEnum: {
|
||||
1: { text: '未发送' },
|
||||
2: { text: '已发送' }
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '操作',
|
||||
width: 130,
|
||||
@ -107,10 +139,11 @@ const ClarificationOfTheBid: React.FC = () => {
|
||||
render: (_: any, record: any) =>
|
||||
String(record.editStatus) === '1' ?
|
||||
[
|
||||
<a key="send" onClick={() => send(record.id)}>发送</a>
|
||||
<Button type="link" hidden={btnAuthority(["ebtp-agency-project-manager", "ebtp-purchase"])} danger key="edit" onClick={() => edit(record)}>编辑</Button>,
|
||||
<Button type="link" hidden={String(assessRoomData?.status) === "3" || btnAuthority(["ebtp-agency-project-manager", "ebtp-purchase"])} danger key="send" onClick={() => send(record)}>发送</Button>
|
||||
] :
|
||||
[
|
||||
<a key="view" onClick={() => view(record)}>查看</a>
|
||||
<Button type="link" danger key="view" onClick={() => view(record)}>查看</Button>
|
||||
]
|
||||
},
|
||||
]
|
||||
@ -118,30 +151,61 @@ const ClarificationOfTheBid: React.FC = () => {
|
||||
useEffect(() => {
|
||||
//获取供应商数据
|
||||
getAssessroomSuppliers(assessRoomId, projectId).then(res => {
|
||||
setSuppliersData(res.data);
|
||||
setSuppliersCheckbox(getSectionCheckbox(res.data));
|
||||
if (res.code === 200) {
|
||||
setSuppliersData(res.data);
|
||||
setSuppliersCheckbox(getSectionCheckbox(res.data));
|
||||
}
|
||||
});
|
||||
//查询评审室信息
|
||||
getAssessRoomStatus(assessRoomId).then(res => {
|
||||
if (res.code === 200) {
|
||||
setAssessRoomData(res.data);
|
||||
}
|
||||
})
|
||||
}, []);
|
||||
|
||||
/**
|
||||
* 查看
|
||||
* @param e 数据
|
||||
* 编辑
|
||||
* @param record 数据
|
||||
*/
|
||||
const view = (e: any) => {
|
||||
let data = { ...e };
|
||||
const edit = (record: any) => {
|
||||
let data = { ...record };
|
||||
setVisible(true);
|
||||
setWhetherReadonly(true);
|
||||
setBid(data.attId);
|
||||
setAttReplyId(data.attReplyId);
|
||||
setSuppliersOne(selectByCompanyId(data.companyId, suppliersData));
|
||||
data.deadlineTime = echoDateTimeFormatter(data.deadlineTime);
|
||||
data.openTime = echoDateTimeFormatter(data.openTime);
|
||||
form.setFieldsValue(data);
|
||||
}
|
||||
/**
|
||||
* 查看
|
||||
* @param data 数据
|
||||
*/
|
||||
const view = (data: any) => {
|
||||
setBid(data.attId);
|
||||
setAttReplyId(data.attReplyId);
|
||||
setVisible(true);
|
||||
setWhetherReadonly(true);
|
||||
setSuppliersOne(selectByCompanyId(data.companyId, suppliersData));
|
||||
data.deadlineTime = echoDateTimeFormatter(data.deadlineTime);
|
||||
data.openTime = echoDateTimeFormatter(data.openTime);
|
||||
form.setFieldsValue(data);
|
||||
setViewFile(isEmpty(data.attId) ? '无' : <a href={`${downloadAttachmentPathOId}${data.attId}`}>{data.attName}</a>);
|
||||
}
|
||||
/**
|
||||
* 发送
|
||||
* @param id 数据
|
||||
* @param data 数据
|
||||
*/
|
||||
const send = (id: string) => {
|
||||
const send = (data: any) => {
|
||||
//回复截止时间
|
||||
let deadlineTime = isEmpty(data.deadlineTime) ? null : new Date(data.deadlineTime).getTime();
|
||||
let date = new Date().getTime();
|
||||
if (deadlineTime !== null && deadlineTime < date) {
|
||||
message.info('回复截止时间应晚于发送时间!');
|
||||
return;
|
||||
}
|
||||
setVisibleSend(true);
|
||||
setSendId(id);
|
||||
setSendId(data.id);
|
||||
}
|
||||
/**
|
||||
* 发送
|
||||
@ -161,6 +225,7 @@ const ClarificationOfTheBid: React.FC = () => {
|
||||
*/
|
||||
const handleCancel = () => {
|
||||
setVisible(false);
|
||||
setWhetherTheNew(false);
|
||||
setWhetherReadonly(false);
|
||||
}
|
||||
|
||||
@ -168,91 +233,52 @@ const ClarificationOfTheBid: React.FC = () => {
|
||||
* 保存
|
||||
*/
|
||||
const onFinish = (data: any) => {
|
||||
let file = getUploadContent(data.attId);
|
||||
setSubmitLoading(true);
|
||||
data.attId = file.id;
|
||||
data.attName = file.name;
|
||||
data.assessRoomId = assessRoomId;
|
||||
data.deadlineTime = saveDateTimeFormatter(data.deadlineTime);
|
||||
data.openTime = saveDateTimeFormatter(data.openTime);
|
||||
evaluationquestionIinsert(data).then(res => {
|
||||
saveMessage(res);
|
||||
setSubmitLoading(false);
|
||||
setVisible(false);
|
||||
actionRef.current.reload();
|
||||
})
|
||||
}
|
||||
|
||||
//上传文件数量控制
|
||||
const handleChange = (info: any) => {
|
||||
if (whetherToUpload()) {
|
||||
return;
|
||||
if (isEmpty(data.id)) {
|
||||
evaluationquestionIinsert(data).then(res => {
|
||||
saveMessage(res);
|
||||
setSubmitLoading(false);
|
||||
setVisible(false);
|
||||
setWhetherTheNew(false);
|
||||
setWhetherReadonly(false);
|
||||
actionRef.current.reload();
|
||||
})
|
||||
} else {
|
||||
evaluationquestionUpdate(data).then(res => {
|
||||
saveMessage(res);
|
||||
setSubmitLoading(false);
|
||||
setVisible(false);
|
||||
setWhetherTheNew(false);
|
||||
setWhetherReadonly(false);
|
||||
actionRef.current.reload();
|
||||
})
|
||||
}
|
||||
let fileList = [...info.fileList];
|
||||
fileList = fileList.map((file) => {
|
||||
if (file.response) {
|
||||
file.url = `${downloadAttachmentPathOId}${file.response.oid}`;
|
||||
file.oid = file.response.oid;
|
||||
}
|
||||
return file;
|
||||
});
|
||||
setFileListData(fileList);
|
||||
};
|
||||
|
||||
const whetherToUpload = () => {
|
||||
if (num === -1) {
|
||||
return false;
|
||||
}
|
||||
return fileListData.length >= num;
|
||||
}
|
||||
|
||||
//上传文件大小控制
|
||||
const beforeUpload = (file: any) => {
|
||||
if (whetherToUpload()) {
|
||||
message.info(`最多只能上传 ${num} 个文件`);
|
||||
return false;
|
||||
}
|
||||
let flag = file.size > 52428800;
|
||||
if (flag) {
|
||||
message.info("上传文件大于50M,请重新上传");
|
||||
}
|
||||
return !flag;
|
||||
}
|
||||
|
||||
const onRemove = (e: any) => {
|
||||
let data = fileListData;
|
||||
let a = data.findIndex(item => item.url === e.url);
|
||||
data.splice(a, 1)
|
||||
setFileListData([...data]);
|
||||
}
|
||||
|
||||
const uploadProps = {
|
||||
action: '/api/core-service-ebtp-updownload/v1/attachment/upload',
|
||||
onChange: handleChange,
|
||||
onRemove: onRemove,
|
||||
beforeUpload: beforeUpload,
|
||||
};
|
||||
|
||||
|
||||
|
||||
const createForm = () => {
|
||||
return (
|
||||
<>
|
||||
<Modal visible={visible}
|
||||
style={{ top: 20 }}
|
||||
centered
|
||||
width="50%"
|
||||
title="质询内容"
|
||||
width="45%"
|
||||
title="澄清说明内容"
|
||||
onCancel={handleCancel}
|
||||
maskClosable={false}
|
||||
destroyOnClose={true}
|
||||
footer={whetherReadonly ? null : [
|
||||
footer={whetherReadonly ? [
|
||||
<Button key="back" onClick={handleCancel}>
|
||||
取消
|
||||
</Button>
|
||||
] : [
|
||||
<Button key="back" onClick={handleCancel}>
|
||||
取消
|
||||
</Button>,
|
||||
<Button key="submit" type="primary" loading={submitLoading} onClick={() => form.submit()}>
|
||||
保存
|
||||
</Button>,
|
||||
</Button>
|
||||
]}
|
||||
>
|
||||
<Form
|
||||
@ -260,39 +286,49 @@ const ClarificationOfTheBid: React.FC = () => {
|
||||
onFinish={onFinish}
|
||||
form={form}
|
||||
>
|
||||
<Form.Item
|
||||
label="选择供应商"
|
||||
name="companyIdList"
|
||||
rules={[{ required: true }]}
|
||||
>
|
||||
<Checkbox.Group disabled={whetherReadonly}>
|
||||
{suppliersCheckbox}
|
||||
</Checkbox.Group>
|
||||
<Form.Item name="id" hidden>
|
||||
<Input />
|
||||
</Form.Item>
|
||||
{
|
||||
whetherTheNew ? (
|
||||
<Form.Item
|
||||
label="指定供应商"
|
||||
name="companyIdList"
|
||||
rules={[{ required: true, message: '请选择供应商' }]}
|
||||
>
|
||||
<Checkbox.Group disabled={whetherReadonly}>
|
||||
{suppliersCheckbox}
|
||||
</Checkbox.Group>
|
||||
</Form.Item>
|
||||
) : (
|
||||
<Form.Item
|
||||
label="指定供应商"
|
||||
>
|
||||
{suppliersOne}
|
||||
</Form.Item>
|
||||
)
|
||||
}
|
||||
|
||||
<Form.Item
|
||||
label="应答截止时间"
|
||||
name="deadlineTime"
|
||||
rules={[{ required: true }]}
|
||||
>
|
||||
<DatePicker showTime format={dateTimeFormatter} disabled={whetherReadonly} />
|
||||
<DatePicker
|
||||
disabledDate={datePickerDisabledDate}
|
||||
disabledTime={datePickerDisabledTime}
|
||||
showTime={{ defaultValue: showTimeDefaultValue() }}
|
||||
format={dateTimeFormatter}
|
||||
disabled={whetherReadonly}
|
||||
/>
|
||||
</Form.Item>
|
||||
|
||||
{/* 招标没有 */}
|
||||
<Form.Item
|
||||
label="应答打开时间"
|
||||
name="openTime"
|
||||
rules={[{ required: true }]}
|
||||
>
|
||||
<DatePicker showTime format={dateTimeFormatter} disabled={whetherReadonly} />
|
||||
</Form.Item>
|
||||
|
||||
|
||||
<Form.Item
|
||||
label="主题"
|
||||
name="questionTitle"
|
||||
rules={[{ required: true }]}
|
||||
>
|
||||
<Input maxLength={140} disabled={whetherReadonly} readOnly={whetherReadonly} />
|
||||
<Input maxLength={100} disabled={whetherReadonly} readOnly={whetherReadonly} />
|
||||
</Form.Item>
|
||||
|
||||
<Form.Item
|
||||
@ -305,23 +341,57 @@ const ClarificationOfTheBid: React.FC = () => {
|
||||
},
|
||||
]}
|
||||
>
|
||||
{
|
||||
whetherReadonly ? viewFile :
|
||||
(
|
||||
<Upload {...uploadProps} fileList={fileListData}>
|
||||
<Button disabled={whetherReadonly}><UploadOutlined />上传附件</Button>
|
||||
</Upload>
|
||||
)
|
||||
}
|
||||
|
||||
<ExtendUpload
|
||||
bid={bid}
|
||||
btnName="上传附件"
|
||||
maxCount={1}
|
||||
uploadProps={{ name: "attId", disabled: whetherReadonly }}
|
||||
/>
|
||||
</Form.Item>
|
||||
<Form.Item
|
||||
label="内容"
|
||||
name="questionContext"
|
||||
rules={[{ required: true }]}
|
||||
>
|
||||
<Input.TextArea maxLength={900} disabled={whetherReadonly} readOnly={whetherReadonly} rows={4} />
|
||||
<Input.TextArea
|
||||
className={whetherReadonly ? "input-invariable-grey input-text-resize" : ""}
|
||||
maxLength={200}
|
||||
allowClear={true}
|
||||
readOnly={whetherReadonly}
|
||||
bordered={!whetherReadonly}
|
||||
/>
|
||||
</Form.Item>
|
||||
|
||||
{
|
||||
whetherReadonly && (
|
||||
<>
|
||||
<Form.Item
|
||||
label="回复内容"
|
||||
name="replyContext"
|
||||
>
|
||||
<Input.TextArea
|
||||
className={whetherReadonly ? "input-invariable-grey input-text-resize" : ""}
|
||||
maxLength={200}
|
||||
allowClear={true}
|
||||
readOnly={whetherReadonly}
|
||||
bordered={!whetherReadonly}
|
||||
/>
|
||||
</Form.Item>
|
||||
|
||||
<Form.Item
|
||||
label="回复材料附件"
|
||||
name="attReplyId"
|
||||
>
|
||||
<ExtendUpload
|
||||
bid={attReplyId}
|
||||
btnName="附件"
|
||||
maxCount={1}
|
||||
uploadProps={{ name: "attReplyId", disabled: true }}
|
||||
/>
|
||||
</Form.Item>
|
||||
</>
|
||||
)
|
||||
}
|
||||
</Form>
|
||||
</Modal>
|
||||
</>
|
||||
@ -332,36 +402,40 @@ const ClarificationOfTheBid: React.FC = () => {
|
||||
*/
|
||||
const added = () => {
|
||||
setVisible(true);
|
||||
setWhetherTheNew(true);
|
||||
setBid('');
|
||||
setAttReplyId("");
|
||||
form.resetFields();
|
||||
}
|
||||
|
||||
|
||||
return (
|
||||
<>
|
||||
<div className="background">
|
||||
<ProTable
|
||||
rowKey="id"
|
||||
actionRef={actionRef}
|
||||
columns={columns}
|
||||
params={{ assessRoomId: assessRoomId }}
|
||||
request={params => queryingPagingData('/api/biz-service-ebtp-tender/v1/evaluationquestion/list', 'post', params)}
|
||||
search={false}
|
||||
toolBarRender={() => [
|
||||
<Button key="added" onClick={added} type="primary">
|
||||
新增
|
||||
<Card bordered={false} bodyStyle={{ padding: '0px 24px' }}>
|
||||
<ProTable
|
||||
rowKey="id"
|
||||
size="small"
|
||||
actionRef={actionRef}
|
||||
columns={columns}
|
||||
params={{ assessRoomId: assessRoomId }}
|
||||
request={params => queryingPagingData('/api/biz-service-ebtp-tender/v1/evaluationquestion/list', 'post', params)}
|
||||
search={false}
|
||||
options={false}
|
||||
pagination={{ defaultPageSize: 10 }}
|
||||
toolBarRender={() => [
|
||||
<Button key="added" onClick={added} type="primary" hidden={String(assessRoomData?.status) === "3" || btnAuthority(["ebtp-agency-project-manager", "ebtp-purchase"])}>
|
||||
新增
|
||||
</Button>,
|
||||
]}
|
||||
/>
|
||||
<InquiryBox
|
||||
visible={visibleSend}
|
||||
setVisible={setVisibleSend}
|
||||
message={'确定要发送吗?'}
|
||||
onOk={(data) => sendDataBasedOnId(data)}
|
||||
data={sendId}
|
||||
/>
|
||||
{createForm()}
|
||||
</div>
|
||||
</>
|
||||
]}
|
||||
/>
|
||||
<InquiryBox
|
||||
visible={visibleSend}
|
||||
setVisible={setVisibleSend}
|
||||
message={'确定要发送吗?'}
|
||||
onOk={(data) => sendDataBasedOnId(data)}
|
||||
data={sendId}
|
||||
/>
|
||||
{createForm()}
|
||||
</Card>
|
||||
)
|
||||
}
|
||||
|
||||
|
@ -3,9 +3,7 @@ import ClarificationOfTheBid from './components/ClarificationOfTheBid';
|
||||
|
||||
// 标中质询澄清列表(澄清说明)
|
||||
const Index: React.FC = () => {
|
||||
return (
|
||||
<ClarificationOfTheBid />
|
||||
)
|
||||
return <ClarificationOfTheBid />
|
||||
}
|
||||
|
||||
export default Index;
|
@ -3,7 +3,7 @@ import request from "@/utils/request";
|
||||
/*
|
||||
* @Author: liqiang
|
||||
* @Date: 2020-12-29 10:02:56
|
||||
* @LastEditTime: 2020-12-29 14:59:35
|
||||
* @LastEditTime: 2021-03-29 10:27:00
|
||||
* @LastEditors: Please set LastEditors
|
||||
* @Description: In User Settings Edit
|
||||
* @FilePath: \ebtp-cloud-frontend\src\pages\Evaluation\supplier\ChallengeListInTheIndex\service.ts
|
||||
@ -21,7 +21,7 @@ export function evaluationquestionIinsert(data: any) {
|
||||
/**
|
||||
* 获取供应商
|
||||
*/
|
||||
export function getAssessroomSuppliers(assessRoomId: string, projectId:string) {
|
||||
export function getAssessroomSuppliers(assessRoomId: any, projectId:string) {
|
||||
return request(`/api/biz-service-ebtp-tender/v1/supplier_register/assessroom/suppliers?assessRoomId=${assessRoomId}&projectId=${projectId}`);
|
||||
}
|
||||
/**
|
||||
@ -31,3 +31,14 @@ export function getAssessroomSuppliers(assessRoomId: string, projectId:string) {
|
||||
export function evaluationquestionSend(id:string){
|
||||
return request('/api/biz-service-ebtp-tender/v1/evaluationquestion/send/' + id)
|
||||
}
|
||||
/**
|
||||
* 编辑标中质询
|
||||
* @param data
|
||||
* @returns
|
||||
*/
|
||||
export function evaluationquestionUpdate (data: any) {
|
||||
return request('/api/biz-service-ebtp-tender/v1/evaluationquestion/update', {
|
||||
method: 'post',
|
||||
data: data
|
||||
});
|
||||
}
|
Reference in New Issue
Block a user