3.10 工程代码同步master

This commit is contained in:
jl-zhoujl2
2022-03-10 14:24:13 +08:00
parent 41ab55a4ac
commit 62f6b07ee2
914 changed files with 143121 additions and 29110 deletions

View File

@ -1,7 +1,7 @@
/*
* @Author: liqiang
* @Date: 2020-11-30 10:37:26
* @LastEditTime: 2021-01-13 14:43:50
* @LastEditTime: 2021-03-22 16:04:11
* @LastEditors: Please set LastEditors
* @Description:
* @FilePath: \ebtp-cloud-frontend\src\pages\ClarificationAndResponse\ClarifyTheList\service.ts
@ -98,8 +98,8 @@ export async function clarifyReply(id: any) {
* 查询标段
* @param projectId
*/
export function getSections(projectId: any) {
return request('/api/biz-service-ebtp-tender/v1/clarifydissent/packages/' + projectId, {
export function getSections(projectId: any, roomType:any) {
return request('/api/biz-service-ebtp-tender/v1/clarifydissent/packages/' + projectId + '?roomType=' + roomType, {
method: 'put'
});
}

View File

@ -0,0 +1,31 @@
import { isEmpty } from '@/utils/CommonUtils';
/*
* @Author: liqiang
* @Date: 2021-01-21 10:43:02
* @LastEditTime: 2021-01-21 10:50:45
* @LastEditors: Please set LastEditors
* @Description: 澄清工具类
* @FilePath: \ebtp-cloud-frontend\src\pages\Tender\ProjectManager\ClarifyTheList\utils.ts
*/
export function getPackageIds (packageId:string | any[], param:any[]) {
if(typeof packageId == 'string') {
if(isEmpty(packageId) || isEmpty(param)){
return [];
}
} else {
if(packageId.length == 0) {
return [];
}
}
let packageIds = typeof packageId == 'string' ? packageId.split(',') : packageId;
let data = [];
for (const i of packageIds) {
for (const j of param) {
if(i == j.id){
data.push(j);
break;
}
}
}
return data;
}

File diff suppressed because it is too large Load Diff

View File

@ -3,11 +3,11 @@
.headerDiv{
// padding: 16px 24px 0px 0px;
margin-left: 0px;
border-bottom: solid;
border-bottom-color: rgb(187,16,39);
border-width: 1px;
height:30px;
margin-top: 10px;
width:100%;
// border-bottom: solid;
// border-bottom-color: rgb(187,16,39);
// border-width: 1px;
height:32px;
}
.leftDiv{
font-size: middle;
@ -23,4 +23,18 @@
float: right;
height:30px;
text-align: center;
}
.mt15{
margin-top: 15px;
}
.pl24{
padding-left: 24px;
}
.pr16{
padding-right: 16px;
}
.xsy-collapse{
.ant-collapse-content-box{
padding:0px 0px 16px 0px
}
}

View File

@ -0,0 +1,8 @@
import React from "react";
const JudgingPanel: React.FC<{}> = () => {
return <>
</>
}
export default JudgingPanel;

View File

@ -1,47 +1,48 @@
import request from '@/utils/request';
import { message } from 'antd';
//列表查询
export async function getList(params?: any) {
return request(`/api/biz-service-ebtp-rsms/v1/jury/list`,{
method:'GET',
return request(`/api/biz-service-ebtp-rsms/v1/jury/list`, {
method: 'GET',
params,
});
}
//查询标包
export async function getSecs(params?: any) {
return request(`/api/biz-service-ebtp-rsms/v1/jury/section/list/${params.tpId}`,{
return request(`/api/biz-service-ebtp-rsms/v1/jury/section/list/${params.tpId}`, {
params,
});
}
//删除
export async function delOne(params?: any) {
return request(`/api/biz-service-ebtp-rsms/v1/jury/info/${params.id}`,{
method:'DELETE'
return request(`/api/biz-service-ebtp-rsms/v1/jury/info/${params.id}`, {
method: 'DELETE'
});
}
//创建评审小组
export async function saveGroup(params?: any) {
return request(`/api/biz-service-ebtp-rsms/v1/jury/info/save`,{
method:'POST',
data:{
return request(`/api/biz-service-ebtp-rsms/v1/jury/info/save`, {
method: 'POST',
data: {
...params,
},
});
}
//添加成员
export async function saveMember(params?: any) {
return request(`/api/biz-service-ebtp-rsms/v1/jury/member/save`,{
method:'POST',
data:{
return request(`/api/biz-service-ebtp-rsms/v1/jury/member/save`, {
method: 'POST',
data: {
...params,
},
});
}
//更换专家
export async function changeEx(params?: any) {
return request(`/api/biz-service-ebtp-rsms/v1/jury/change/apply/save`,{
method:'POST',
data:{
return request(`/api/biz-service-ebtp-rsms/v1/jury/change/apply/save`, {
method: 'POST',
data: {
...params,
},
});
@ -52,9 +53,9 @@ export async function queryVoList(params?: any) {
}
//更换专家
export async function changeMember(params?: any) {
return request(`/api/biz-service-ebtp-rsms/v1/jury/change/member`,{
method:'PUT',
data:{
return request(`/api/biz-service-ebtp-rsms/v1/jury/change/member`, {
method: 'PUT',
data: {
...params
}
});
@ -62,11 +63,37 @@ export async function changeMember(params?: any) {
//提交申请
export async function applyFor(params?: any) {
return request(`/api/biz-service-ebtp-rsms/v1/jury/extract/apply/${params.id}`,{
method:'POST',
return request(`/api/biz-service-ebtp-rsms/v1/jury/extract/apply/${params.id}`, {
method: 'POST',
});
}
//查是否开启评标
export async function roomStatus(id?: any) {
return request(`/api/biz-service-ebtp-rsms/v1/jury/check/roomStatus/${id}`);
}
}
//下载模板
export async function juryTem() {
return request(`/api/biz-service-ebtp-extend/v1/template/warehouse/juryTemp`);
};
//重置密码接口
export async function rePW(id: any) {
return request(`/api/biz-service-ebtp-rsms/v1/jury/reset/password/${id}`, { method: 'POST' });
};
//重置密码
export const rePassWord = async (id: any) => {
const hide = message.loading('正在重置');
try {
const success = await rePW(id).then(res => { return res.success });
hide();
if (success) {
message.success('重置成功');
return true;
} else {
return false;
}
} catch (error) {
hide();
message.error('重置失败请重试,或联系管理员!');
return false;
}
};

View File

@ -1,18 +1,39 @@
import React, { useRef, useState } from 'react';
import '@/utils/lq.style.less';
import { Button, Input, Form, Upload, Modal, Row, Col } from 'antd';
import { UploadOutlined } from '@ant-design/icons';
import { Button, Input, Form, Modal, Row, Col, Select, Checkbox } from 'antd';
import ProTable from '@ant-design/pro-table';
import { queryingPagingData } from '@/utils/PageUtils';
import { replyDissent } from '../service';
import { commonMessage } from '@/utils/MessageUtils';
import { getProName, getSessionProjectData } from '@/utils/session';
import { getURLInformation, isEmpty } from '@/utils/CommonUtils';
import ExtendUpload from '@/utils/ExtendUpload';
import { getAllFlowName, getAllFlowNameByRoomType, getbidQualification, moduleName } from '@/utils/FlowUtils';
import { getProceedingTypeByBidMethodDict } from '@/pages/Tender/supplier/SupplierQuestionsOrObjections/utils';
const { Option } = Select;
function titleInfo(name: string) {
return <div className="titBlock">
<h4 className="titBlockH4"> {name} </h4>
</div>
function getSectionCheckbox(data: any) {
if (isEmpty(data)) {
return [];
}
let value = [];
let flag = true;
for (const item of data) {
if (flag) {
value.push(<Checkbox style={{ marginLeft: '8px' }} key={item.id} value={item.id} >
{item.bidSectName}
</Checkbox>)
flag = false;
} else {
value.push(<Checkbox key={item.id} value={item.id} >
{item.bidSectName}
</Checkbox>)
}
}
return value;
}
const layout = {
labelCol: { span: 8 },
wrapperCol: { span: 12 },
@ -20,55 +41,87 @@ const layout = {
const MentionDoubtReply: React.FC<{}> = () => {
//项目id
const projectId = getSessionProjectData().id;
//采购方式
const bidMethodDict = getSessionProjectData().bidMethodDict;
//资格审查方式 (roomType 2是后审1是预审)
const roomType = getURLInformation('roomType') === null ? '2' : getURLInformation('roomType');
const [visible, setVisible] = useState<boolean>(false);
//禁用标识
const [whetherReadonly, setWhetherReadonly] = useState<boolean>(false);
const [form] = Form.useForm();
//控制表单
const actionRef = useRef<any>();
const [bid, setBid] = useState<string>('');
const [dissentDatasetId, setDissentDatasetId] = useState<string>('');
//选择标段
const [packageIdSelect, setPackageIdSelect] = useState<any[]>([]);
//所有流程名
const flowName = getAllFlowNameByRoomType(bidMethodDict, roomType);
const proceedingTypeByBidMethodDict = getProceedingTypeByBidMethodDict(bidMethodDict);
const [proceedingTypeSelect] = useState(() => {
let arr = proceedingTypeByBidMethodDict.map((item: any) =>
<Option key={item.id} value={item.id}>{item.name}</Option>
);
return arr;
});
const [proceedingTypeColumns] = useState(() => {
let obj = {};
for (const item of proceedingTypeByBidMethodDict) {
obj[item.id] = item.name;
}
return obj;
});
const columns: any = [
{
title: '序号',
dataIndex: 'index',
valueType: 'index'
valueType: 'index',
width: 50
},
{
title: '事项标题',
dataIndex: 'proceedingTitle',
width: 140
},
{
title: '事项类别',
dataIndex: 'proceedingType',
width: 140,
valueEnum: proceedingTypeColumns
},
{
title: '关联的采购包',
dataIndex: 'clarificationTime',
title: flowName[moduleName.section] + '名称',
dataIndex: 'packageName',
},
{
title: '联系人',
dataIndex: 'contactsName',
width: 90,
},
{
title: '状态',
dataIndex: 'dissentStatus',
valueEnum:{
1:{text:'已保存'},
2:{text:'已提交'},
3:{text:'已回复'}
width: 90,
valueEnum: {
1: { text: '已保存' },
2: { text: '已提交' },
3: { text: '已回复' }
}
},
{
title: '操作',
width: 150,
valueType: 'option',
render: (_: any, record: any) =>
render: (_: any, record: any) => [
String(record.dissentStatus) === '3' ?
[
<a key="view" onClick={() => view(record)}></a>,
] :
[
<a key="reply" onClick={() => reply(record)}></a>,
[
<Button type="link" danger key="view" onClick={() => view(record)}></Button>,
] :
[
<Button type="link" danger key="reply" onClick={() => reply(record)}></Button>,
]
// <Button type="link" danger key="view" onClick={() => view(record)}>查看</Button>
]
},
];
@ -79,6 +132,17 @@ const MentionDoubtReply: React.FC<{}> = () => {
const view = (data: any) => {
setVisible(true);
setWhetherReadonly(true);
setBid(data.resultsDatasetId);
setDissentDatasetId(data.dissentDatasetId);
let packageList: any = [];
let packageArr = data.packageName.split(",");
packageArr.map((item: any, index: any)=>{
packageList.push({
"bidSectName": item,
"id": index
})
})
setPackageIdSelect(getSectionCheckbox(packageList));
form.setFieldsValue(data);
}
/**
@ -87,11 +151,22 @@ const MentionDoubtReply: React.FC<{}> = () => {
*/
const reply = (data: any) => {
setVisible(true);
setBid(data.resultsDatasetId);
setDissentDatasetId(data.dissentDatasetId);
let packageList: any = [];
let packageArr = data.packageName.split(",");
packageArr.map((item: any, index: any)=>{
packageList.push({
"bidSectName": item,
"id": index
})
})
setPackageIdSelect(getSectionCheckbox(packageList));
form.setFieldsValue(data);
}
/**
* 创建表单
*/
@ -100,124 +175,136 @@ const MentionDoubtReply: React.FC<{}> = () => {
* 回复保存
* @param data
*/
const onFinish = (data:any) => {
const onFinish = (data: any) => {
setVisible(false);
replyDissent(data).then(res => {
actionRef.current.reload();
commonMessage(res);
})
}
}
const createForm = () => {
return (
<>
<Form
<Form
{...layout}
form={form}
form={form}
onFinish={onFinish}
>
{titleInfo('提疑基本信息')}
<h3 className="first-title"></h3>
<Row>
<Col span={12}>
<Form.Item hidden={true} name="id">
<Input />
</Form.Item>
<Form.Item
label="项目名称"
name="projectName"
label="事项标题"
name="proceedingTitle"
>
<Input bordered={false} readOnly />
</Form.Item>
</Col>
<Col span={12}>
<Form.Item
label="事项标题"
name="proceedingTitle"
>
<Input bordered={false} readOnly/>
</Form.Item>
</Col>
</Row>
<Row>
<Col span={12}>
<Form.Item
label="联系人"
name="contactsName"
>
<Input bordered={false} readOnly/>
</Form.Item>
</Col>
<Col span={12}>
<Form.Item
label="联系方式"
name="contactsPhone"
>
<Input bordered={false} readOnly/>
<Input bordered={false} readOnly />
</Form.Item>
</Col>
</Row>
<Row>
<Col span={12}>
<Form.Item
label="事项类别"
name="proceedingType"
label="联系电话"
name="contactsPhone"
>
<Input bordered={false} readOnly />
</Form.Item>
</Col>
<Col span={12}>
<Form.Item
label="证明材料附件"
name="ebpProjectNumber"
label="事项类别"
name="proceedingType"
>
<Input bordered={false} readOnly/>
<Select placeholder="请选择" disabled>
{proceedingTypeSelect}
</Select>
</Form.Item>
</Col>
</Row>
<Row>
<Col span={12}>
<Form.Item
label="证明材料附件"
name="dissentDatasetId"
>
<ExtendUpload bid={dissentDatasetId} btnName="上传附件" maxCount={1} uploadProps={{ disabled: true }} />
</Form.Item>
</Col>
<Col span={12}>
<Form.Item
label={`选择${flowName[moduleName.section]}`}
name="packageId"
>
<Checkbox.Group disabled>
{packageIdSelect}
</Checkbox.Group>
</Form.Item>
</Col>
</Row>
<Form.Item
label="理由和依据"
name="reasonBasis"
labelCol={ { span: 4 } }
>
<Input.TextArea bordered={false} readOnly/>
<Input.TextArea bordered={false} readOnly className="input-invariable-grey input-text-resize" />
</Form.Item>
<Form.Item
label="事项内容说明"
name="proceedingExplain"
labelCol={ { span: 4 } }
>
<Input.TextArea bordered={false} readOnly/>
<Input.TextArea bordered={false} readOnly className="input-invariable-grey input-text-resize" />
</Form.Item>
{titleInfo('提疑回复信息')}
<Form.Item
label="处理结果"
name="proceedingResults"
rules={[{ required: true }]}
>
<Input disabled={whetherReadonly} readOnly={whetherReadonly} maxLength={150} />
</Form.Item>
<Form.Item
<h3 className="first-title"></h3>
<Row>
<Col span={2}></Col>
<Col span={20} className="maxW100">
<Form.Item
// label="处理结果"
name="proceedingResults"
rules={[{ required: true }]}
>
<Input.TextArea
className={whetherReadonly ? "input-invariable-grey input-text-resize" : ""}
rows={4}
allowClear={true}
readOnly={whetherReadonly}
bordered={!whetherReadonly} />
</Form.Item>
</Col>
</Row>
{/* <Form.Item
label="处理内容说明"
name="resultsContent"
rules={[{ required: true }]}
>
<Input.TextArea disabled={whetherReadonly} readOnly={whetherReadonly}/>
<Input.TextArea
className={whetherReadonly ? "input-invariable-grey input-text-resize" : ""}
maxLength={150}
allowClear={true}
readOnly={whetherReadonly}
bordered={!whetherReadonly} />
</Form.Item>
<Form.Item
label="附件"
name="receiptTheAttachment"
// rules={[{ required: true }]}
name="resultsDatasetId"
rules={[{ required: true }]}
>
<Upload name="logo" action="/upload.do" listType="picture" disabled={whetherReadonly}>
<Button icon={<UploadOutlined />}></Button>
</Upload>
</Form.Item>
<ExtendUpload bid={bid} btnName="上传附件" maxCount={1} uploadProps={{ name: "resultsDatasetId", disabled: whetherReadonly }}>
</ExtendUpload>
</Form.Item> */}
</Form>
</>
)
@ -227,16 +314,21 @@ const MentionDoubtReply: React.FC<{}> = () => {
setVisible(false);
setWhetherReadonly(false);
}
const modalHeight = innerHeight * 96 / 100;
return (
<>
<Modal visible={visible}
title="提疑回复"
title="提疑"
onCancel={handleCancel}
maskClosable={false}
destroyOnClose={true}
width={"60%"}
footer={whetherReadonly ? null :[
style={{ maxHeight: modalHeight }}
bodyStyle={{ maxHeight: modalHeight - 107, overflowY: 'auto' }}
footer={whetherReadonly ? [
<Button key="back" onClick={handleCancel}>
</Button>
] : [
<Button key="back" onClick={handleCancel}>
</Button>,
@ -253,18 +345,20 @@ const MentionDoubtReply: React.FC<{}> = () => {
}
return (
<>
<div className="background">
<ProTable
rowKey="id"
actionRef={actionRef}
request={params => queryingPagingData('/api/biz-service-ebtp-tender/v1/clarifydissent/dissents', 'post', params)}
columns={columns}
search={false}
/>
{createModal()}
</div>
</>
<div style={{padding: '24px 24px 0px'}}>
<ProTable
rowKey="id"
size="small"
pagination={{ defaultPageSize: 10 }}
params={{ projectId: projectId, roomType: roomType, dissentType: "1" }}
actionRef={actionRef}
request={params => queryingPagingData('/api/biz-service-ebtp-tender/v1/clarifydissent/dissents', 'post', params)}
columns={columns}
search={false}
options={false}
/>
{createModal()}
</div>
)
}