10.10 外协人员管理
This commit is contained in:
@ -0,0 +1,321 @@
|
|||||||
|
import ExpertPhotoUpload from "@/components/ElecBidEvaluation/ExpertPhotoUpload";
|
||||||
|
import { btnAuthority } from "@/utils/authority";
|
||||||
|
import { downloadPath } from "@/utils/DownloadUtils";
|
||||||
|
import ProTable, { ProColumns } from "@ant-design/pro-table";
|
||||||
|
import { Button, Collapse, Modal, Spin, Image, Popconfirm, Drawer, Form, Input, Row, Col, Select, message } from "antd";
|
||||||
|
import React, { useEffect, useState } from "react";
|
||||||
|
import './judgList.less';
|
||||||
|
import '@/assets/xsy_style.less';
|
||||||
|
import { saveAssistPeople } from "./service";
|
||||||
|
|
||||||
|
interface OutsourcingManageProps {
|
||||||
|
modalVisible: boolean,
|
||||||
|
onCancel: () => void,
|
||||||
|
onSubmit: () => void,//保存回调
|
||||||
|
open: boolean,//评委会里是否有开启评标的评审室 true有开启的 false无
|
||||||
|
assistData: any[],//协办人数据
|
||||||
|
assistNumber: string,//协办人数量
|
||||||
|
juryId: string,//评委会id
|
||||||
|
}
|
||||||
|
const formLayoutDrawer = { labelCol: { span: 8 }, wrapperCol: { span: 16 }, };
|
||||||
|
const tailLayoutDrawer = { wrapperCol: { offset: 8, span: 20 }, };
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 协办管理
|
||||||
|
* @param props
|
||||||
|
* @returns
|
||||||
|
*/
|
||||||
|
const OutsourcingManage: React.FC<OutsourcingManageProps> = (props) => {
|
||||||
|
const modalHeight = window.innerHeight * 96 / 100;
|
||||||
|
const { Panel } = Collapse;
|
||||||
|
const { Option } = Select;
|
||||||
|
const [formMem] = Form.useForm();
|
||||||
|
const { modalVisible, onCancel, onSubmit, open, assistData = [], assistNumber = "0", juryId } = props;
|
||||||
|
|
||||||
|
//loading
|
||||||
|
const [loading, setLoading] = useState<boolean>(false);
|
||||||
|
//录入协办人员 drawerVisible
|
||||||
|
const [add, setAdd] = useState<boolean>(false);
|
||||||
|
//协办人员数据
|
||||||
|
const [dataSource, setDataSource] = useState<any[]>([]);
|
||||||
|
//协办人员-修改存key
|
||||||
|
const [updateKeyMem, updateKeyMemSet] = useState<number>(-1);
|
||||||
|
//删除回调
|
||||||
|
const confirmMem = async (record: any) => {
|
||||||
|
const dataTem = [...dataSource];
|
||||||
|
dataTem.map((item: any, index: any) => {
|
||||||
|
if (item.key == record.key) {
|
||||||
|
dataTem.splice(index, 1);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
setDataSource(dataTem);
|
||||||
|
}
|
||||||
|
|
||||||
|
const columnsMember: ProColumns<any>[] = [//成员管理页面表格
|
||||||
|
{ title: '序号', valueType: 'index', width: 50, },
|
||||||
|
{ title: '姓名', dataIndex: 'name', },
|
||||||
|
{ title: '手机号码', dataIndex: 'mobile', },
|
||||||
|
{ title: '证件号码', dataIndex: 'certificate', },
|
||||||
|
{ title: '工作单位', dataIndex: 'workunit', },
|
||||||
|
{
|
||||||
|
title: '照片',
|
||||||
|
dataIndex: 'faceId',
|
||||||
|
render: (_, record) => {
|
||||||
|
if (record.faceId) {
|
||||||
|
// return <a onClick={() => downloadFile({ uid: record.faceId })}>{record.name}</a>
|
||||||
|
return <Image height={80} width={60} src={downloadPath + '?fileId=' + record.faceId} />
|
||||||
|
};
|
||||||
|
return '-';
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '操作', dataIndex: 'option', width: 180,
|
||||||
|
valueType: 'option',
|
||||||
|
render: (_, record) => {
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<Button type='text' hidden={open || btnAuthority(['ebtp-agency-project-manager', 'ebtp-purchase'])} onClick={() => {//修改
|
||||||
|
setAdd(true);
|
||||||
|
updateKeyMemSet(record.key);
|
||||||
|
formMem.setFieldsValue({ ...record });
|
||||||
|
}}>修改</Button>
|
||||||
|
<Popconfirm
|
||||||
|
placement="topRight"
|
||||||
|
title={"确定删除么?"}
|
||||||
|
onConfirm={() => { confirmMem(record); }}
|
||||||
|
okText="确定"
|
||||||
|
cancelText="取消"
|
||||||
|
>
|
||||||
|
<Button type='text' hidden={open || btnAuthority(['ebtp-agency-project-manager', 'ebtp-purchase'])}>删除</Button>
|
||||||
|
</Popconfirm>
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
setDataSource(assistData);
|
||||||
|
return () => {
|
||||||
|
updateKeyMemSet(-1);
|
||||||
|
setDataSource([]);
|
||||||
|
setLoading(false);
|
||||||
|
setAdd(false);
|
||||||
|
}
|
||||||
|
}, [assistData]);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<Modal
|
||||||
|
visible={modalVisible}
|
||||||
|
maskClosable={false}
|
||||||
|
style={{ overflowX: 'hidden', maxHeight: modalHeight, minWidth: 1000 }}
|
||||||
|
width={"60%"}
|
||||||
|
centered
|
||||||
|
destroyOnClose
|
||||||
|
title="协办人员管理"
|
||||||
|
bodyStyle={{ maxHeight: modalHeight - 140, minHeight: modalHeight * 0.6, overflow: 'auto', padding: '16px 0px 0px 0px' }}
|
||||||
|
okButtonProps={{ hidden: btnAuthority(['ebtp-agency-project-manager', 'ebtp-purchase']), disabled: open, loading: loading }}
|
||||||
|
cancelText="取消"
|
||||||
|
okText="保存"
|
||||||
|
// onCancel={() => {
|
||||||
|
// setMemberVis(false);
|
||||||
|
// reset();
|
||||||
|
// }}
|
||||||
|
onOk={() => {
|
||||||
|
if (Number(assistNumber) == dataSource.length) {
|
||||||
|
const params = {
|
||||||
|
juryId,
|
||||||
|
assistList: [...dataSource],
|
||||||
|
}
|
||||||
|
setLoading(true);
|
||||||
|
saveAssistPeople(params).then(res => {
|
||||||
|
if (res?.code == 200) {
|
||||||
|
message.success('保存成功!');
|
||||||
|
onSubmit();
|
||||||
|
}
|
||||||
|
}).finally(() => {
|
||||||
|
setLoading(false);
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
message.error('协办人数不符合规定!');
|
||||||
|
}
|
||||||
|
}}
|
||||||
|
onCancel={onCancel}
|
||||||
|
>
|
||||||
|
<Spin spinning={loading}>
|
||||||
|
<div className='headerDiv pl24 pr16'>
|
||||||
|
<h3 className="first-title floatLeft">协办人员管理</h3>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<Collapse className='xsy-collapse' style={{ marginTop: '16px' }} defaultActiveKey={['1']}>
|
||||||
|
<Panel header={`协办人员(最大人数:${assistNumber})`} key="1">
|
||||||
|
<ProTable
|
||||||
|
key='proTable1'
|
||||||
|
columns={columnsMember}
|
||||||
|
dataSource={dataSource}
|
||||||
|
bordered
|
||||||
|
style={{ padding: '16px' }}
|
||||||
|
options={false}
|
||||||
|
search={false}
|
||||||
|
pagination={false}
|
||||||
|
toolBarRender={() => [
|
||||||
|
<Button key="button" hidden={open || btnAuthority(['ebtp-agency-project-manager', 'ebtp-purchase'])} disabled={Number(assistNumber) == dataSource.length} type="primary"
|
||||||
|
onClick={() => {
|
||||||
|
if (Number(assistNumber) != dataSource.length) {
|
||||||
|
setAdd(true); formMem.resetFields();
|
||||||
|
} else {
|
||||||
|
message.error('录入人数已满')
|
||||||
|
}
|
||||||
|
}}
|
||||||
|
> 录入协办人员</Button>
|
||||||
|
]}
|
||||||
|
/>
|
||||||
|
</Panel>
|
||||||
|
</Collapse>
|
||||||
|
</Spin>
|
||||||
|
<Drawer
|
||||||
|
title="录入协办人员"
|
||||||
|
placement="right"
|
||||||
|
width={'50%'}
|
||||||
|
onClose={() => { setAdd(false) }}
|
||||||
|
visible={add}
|
||||||
|
getContainer={false}
|
||||||
|
style={{ position: 'absolute' }}
|
||||||
|
>
|
||||||
|
<Form {...formLayoutDrawer} form={formMem}>
|
||||||
|
<Row><Col span={24}><Form.Item
|
||||||
|
name="mobile"
|
||||||
|
label="手机号"
|
||||||
|
rules={[
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: '请录入手机号',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pattern: /(^[1][3,4,5,6,7,8,9][0-9]{9}$)|(^(([0\+]\d{2,3}-)?(0\d{2,3})-)(\d{7,8})(-(\d{3,}))?$)/,
|
||||||
|
message: '输入的电话号码不正确',
|
||||||
|
},
|
||||||
|
]}
|
||||||
|
>
|
||||||
|
<Input style={{ width: "60%" }} />
|
||||||
|
</Form.Item></Col></Row>
|
||||||
|
<Row><Col span={24}><Form.Item
|
||||||
|
name="name"
|
||||||
|
label="姓名"
|
||||||
|
rules={[{ required: true, message: '请录入姓名' }]}
|
||||||
|
>
|
||||||
|
<Input style={{ width: "60%" }} />
|
||||||
|
</Form.Item></Col></Row>
|
||||||
|
<Row><Col span={24}><Form.Item
|
||||||
|
name="workunit"
|
||||||
|
label="工作单位"
|
||||||
|
>
|
||||||
|
<Input style={{ width: "60%" }} />
|
||||||
|
</Form.Item></Col></Row>
|
||||||
|
<Row><Col span={24}><Form.Item
|
||||||
|
name="phone"
|
||||||
|
label="办公电话"
|
||||||
|
rules={[
|
||||||
|
{
|
||||||
|
pattern: /^\d+$|^\d+[.]?\d+$/,
|
||||||
|
message: '输入的电话号码不正确',
|
||||||
|
},
|
||||||
|
]}
|
||||||
|
>
|
||||||
|
<Input style={{ width: "60%" }} />
|
||||||
|
</Form.Item></Col></Row>
|
||||||
|
<Row><Col span={24}><Form.Item
|
||||||
|
name="certificateType"
|
||||||
|
label="证件类别"
|
||||||
|
initialValue={'1'}
|
||||||
|
>
|
||||||
|
<Select style={{ width: "60%" }} >
|
||||||
|
<Option value={'1'} title="居民身份证">居民身份证</Option>
|
||||||
|
</Select>
|
||||||
|
</Form.Item></Col></Row>
|
||||||
|
<Row><Col span={24}><Form.Item
|
||||||
|
name="certificate"
|
||||||
|
label="证件号码"
|
||||||
|
rules={[
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: '请录入证件号码',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pattern: /^[1-9]\d{5}(18|19|20)\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/,
|
||||||
|
message: '输入的身份证号不正确',
|
||||||
|
},
|
||||||
|
]}
|
||||||
|
>
|
||||||
|
<Input style={{ width: "60%" }} />
|
||||||
|
</Form.Item></Col></Row>
|
||||||
|
<Form.Item label="照片" style={{ marginBottom: 0 }}>
|
||||||
|
<Form.Item
|
||||||
|
name="faceId"
|
||||||
|
style={{ display: 'inline-block', width: '60%' }}
|
||||||
|
>
|
||||||
|
<ExpertPhotoUpload maxSize={200} />
|
||||||
|
</Form.Item>
|
||||||
|
<Form.Item
|
||||||
|
style={{ display: 'inline-block', width: '40%', position: "relative", right: '24%' }}
|
||||||
|
>
|
||||||
|
</Form.Item>
|
||||||
|
</Form.Item>
|
||||||
|
<Row><Col span={24}><Form.Item {...tailLayoutDrawer}>
|
||||||
|
<Button type="primary" loading={loading} hidden={btnAuthority(['ebtp-agency-project-manager', 'ebtp-purchase'])} onClick={async () => {
|
||||||
|
setLoading(true);
|
||||||
|
let pass = true;
|
||||||
|
let formValsMem = formMem.getFieldsValue();
|
||||||
|
const dataTem = [...dataSource];
|
||||||
|
await formMem.validateFields().then(() => {
|
||||||
|
for (const item of dataTem) {
|
||||||
|
if (item.certificate == formValsMem.certificate && item.key != updateKeyMem) {//身份证号重复
|
||||||
|
pass = false;
|
||||||
|
message.error('身份证号重复');
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (item.mobile == formValsMem.mobile && item.key != updateKeyMem) {//手机号重复
|
||||||
|
pass = false;
|
||||||
|
message.error('手机号重复');
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}).catch(() => {
|
||||||
|
pass = false;
|
||||||
|
});
|
||||||
|
if (pass) {
|
||||||
|
//如果 updateKey有值,走修改
|
||||||
|
if (updateKeyMem != undefined && updateKeyMem != -1) {
|
||||||
|
dataTem.map((item: any, index: any) => {
|
||||||
|
if (item.key == updateKeyMem) {
|
||||||
|
dataTem[index] = { ...formValsMem, key: updateKeyMem, juryId };
|
||||||
|
}
|
||||||
|
});
|
||||||
|
setDataSource(dataTem);
|
||||||
|
} else {
|
||||||
|
if (Number(assistNumber) != dataTem.length) {
|
||||||
|
let num = 0;
|
||||||
|
if (dataTem.length != 0) {
|
||||||
|
num = dataTem[dataTem.length - 1].key + 1;
|
||||||
|
}
|
||||||
|
dataTem.push({ ...formValsMem, key: num, juryId });
|
||||||
|
setDataSource(dataTem);
|
||||||
|
} else {
|
||||||
|
message.error('录入人数已满!');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
updateKeyMemSet(-1);
|
||||||
|
setAdd(false);
|
||||||
|
}
|
||||||
|
setLoading(false);
|
||||||
|
}}>保存</Button>
|
||||||
|
</Form.Item></Col></Row>
|
||||||
|
</Form>
|
||||||
|
</Drawer>
|
||||||
|
</Modal>
|
||||||
|
</>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
export default OutsourcingManage;
|
@ -15,6 +15,7 @@ import BidEvalAppointment from '@/components/ElecBidEvaluation/BidEvalAppointmen
|
|||||||
import { downloadPath } from '@/utils/DownloadUtils';
|
import { downloadPath } from '@/utils/DownloadUtils';
|
||||||
import ExpertPhotoUpload from '@/components/ElecBidEvaluation/ExpertPhotoUpload';
|
import ExpertPhotoUpload from '@/components/ElecBidEvaluation/ExpertPhotoUpload';
|
||||||
import { sortBy } from 'lodash';
|
import { sortBy } from 'lodash';
|
||||||
|
import OutsourcingManage from './OutsourcingManage';
|
||||||
|
|
||||||
const JudgingPanel: React.FC<{}> = () => {
|
const JudgingPanel: React.FC<{}> = () => {
|
||||||
const modalHeight = window.innerHeight * 96 / 100;
|
const modalHeight = window.innerHeight * 96 / 100;
|
||||||
@ -54,6 +55,7 @@ const JudgingPanel: React.FC<{}> = () => {
|
|||||||
const [appoType, setAppoType] = useState<string>("0");//电子评标室-预约框状态 2022.8.29 zhoujianlong
|
const [appoType, setAppoType] = useState<string>("0");//电子评标室-预约框状态 2022.8.29 zhoujianlong
|
||||||
const [isReserve, setIsReserve] = useState<string>("0");//电子评标室-是否预约评标室 2022.9.23 zhoujianlong 0-不预约 1-预约
|
const [isReserve, setIsReserve] = useState<string>("0");//电子评标室-是否预约评标室 2022.9.23 zhoujianlong 0-不预约 1-预约
|
||||||
const userData = getSessionUserData();//当前登录人用户信息
|
const userData = getSessionUserData();//当前登录人用户信息
|
||||||
|
const [assistVisible, setAssistVisible] = useState<boolean>(false);//协办管理visible 2022.10.10 zhoujianlong
|
||||||
|
|
||||||
function getShouName() {
|
function getShouName() {
|
||||||
const method = getProMethod();
|
const method = getProMethod();
|
||||||
@ -163,6 +165,13 @@ const JudgingPanel: React.FC<{}> = () => {
|
|||||||
memberCountSet(memberCount + 1);
|
memberCountSet(memberCount + 1);
|
||||||
setMemberVis(true);
|
setMemberVis(true);
|
||||||
}}>成员管理</Button>
|
}}>成员管理</Button>
|
||||||
|
{record.assistNumber != null && <Button type='text' onClick={async () => {
|
||||||
|
await queryOpenStatus(record.id);
|
||||||
|
setAssistList(record.assistList.map((item: any, index: any) => { item.key = index; return item }));
|
||||||
|
setAssistNumber(record.assistNumber);
|
||||||
|
juryIdSet(record.id);
|
||||||
|
setAssistVisible(true);
|
||||||
|
}}>外协管理</Button>}
|
||||||
{record.elecEvalRoomReserve && (record.elecEvalRoomReserve.status == -1 || record.elecEvalRoomReserve.status == 0) && <Button type='text' onClick={() => {
|
{record.elecEvalRoomReserve && (record.elecEvalRoomReserve.status == -1 || record.elecEvalRoomReserve.status == 0) && <Button type='text' onClick={() => {
|
||||||
setSelectEvalData(record.elecEvalRoomReserve)
|
setSelectEvalData(record.elecEvalRoomReserve)
|
||||||
setAppoType("1");
|
setAppoType("1");
|
||||||
@ -319,6 +328,7 @@ const JudgingPanel: React.FC<{}> = () => {
|
|||||||
description: updateData != undefined ? updateData.description : null,
|
description: updateData != undefined ? updateData.description : null,
|
||||||
reserveBy: updateData?.reserveStatus == 1 ? updateData.elecEvalRoomReserve.reserveBy : null,
|
reserveBy: updateData?.reserveStatus == 1 ? updateData.elecEvalRoomReserve.reserveBy : null,
|
||||||
reserveContactNumber: updateData?.reserveStatus == 1 ? updateData.elecEvalRoomReserve.reserveContactNumber : null,
|
reserveContactNumber: updateData?.reserveStatus == 1 ? updateData.elecEvalRoomReserve.reserveContactNumber : null,
|
||||||
|
assistNumber: updateData?.reserveStatus == 1 ? updateData.assistNumber : null,
|
||||||
})
|
})
|
||||||
}, [updateData]);
|
}, [updateData]);
|
||||||
|
|
||||||
@ -1116,6 +1126,9 @@ const JudgingPanel: React.FC<{}> = () => {
|
|||||||
const [changeMemberId, changeMemberIdSet] = useState<any>('');//更换专家id
|
const [changeMemberId, changeMemberIdSet] = useState<any>('');//更换专家id
|
||||||
const [changeBtn, changeBtnSet] = useState<any>(true);//更换按钮显隐
|
const [changeBtn, changeBtnSet] = useState<any>(true);//更换按钮显隐
|
||||||
const [formMem] = Form.useForm();
|
const [formMem] = Form.useForm();
|
||||||
|
//外协管理
|
||||||
|
const [assistList, setAssistList] = useState<any>([]);//外协人员数据 assistList
|
||||||
|
const [assistNumber, setAssistNumber] = useState<string>("");//外协人员数量 assistNumber
|
||||||
function reset() {//重置
|
function reset() {//重置
|
||||||
categorySet([]);
|
categorySet([]);
|
||||||
// daibiaoSet({});
|
// daibiaoSet({});
|
||||||
@ -1991,6 +2004,8 @@ const JudgingPanel: React.FC<{}> = () => {
|
|||||||
/>}
|
/>}
|
||||||
{/**电子评标室-评标室预约选择 */}
|
{/**电子评标室-评标室预约选择 */}
|
||||||
<BidEvalAppointment modalVisible={selectEvalVisible} onCancel={() => setSelectEvalVisible(false)} onSubmit={(value: any) => returnEvalData(value)} values={selectEvalData} initValue={initEvalTime} type={appoType} reload={() => actionRef.current?.reload()} />
|
<BidEvalAppointment modalVisible={selectEvalVisible} onCancel={() => setSelectEvalVisible(false)} onSubmit={(value: any) => returnEvalData(value)} values={selectEvalData} initValue={initEvalTime} type={appoType} reload={() => actionRef.current?.reload()} />
|
||||||
|
{/**协办管理 */}
|
||||||
|
<OutsourcingManage modalVisible={assistVisible} onCancel={() => setAssistVisible(false)} onSubmit={() => { setAssistVisible(false); actionRef.current?.reload(); }} open={open} assistData={assistList} assistNumber={assistNumber} juryId={juryId} />
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -1,8 +0,0 @@
|
|||||||
import React from "react";
|
|
||||||
|
|
||||||
const JudgingPanel: React.FC<{}> = () => {
|
|
||||||
return <>
|
|
||||||
|
|
||||||
</>
|
|
||||||
}
|
|
||||||
export default JudgingPanel;
|
|
@ -105,4 +105,14 @@ export async function getUserPhoto(idCard: any) {
|
|||||||
return request("/api/biz-service-ebtp-rsms/v1/jury/user/photo/" + idCard, {
|
return request("/api/biz-service-ebtp-rsms/v1/jury/user/photo/" + idCard, {
|
||||||
method: 'GET',
|
method: 'GET',
|
||||||
});
|
});
|
||||||
|
};
|
||||||
|
/**
|
||||||
|
* 协办管理-协办成员保存
|
||||||
|
* @returns
|
||||||
|
*/
|
||||||
|
export async function saveAssistPeople(data: any) {
|
||||||
|
return request("/api/biz-service-ebtp-rsms/v1/jury/assist/save", {
|
||||||
|
method: 'POST',
|
||||||
|
data
|
||||||
|
});
|
||||||
};
|
};
|
@ -15,6 +15,7 @@ import { downloadPath } from '@/utils/DownloadUtils';
|
|||||||
import ExpertPhotoUpload from '@/components/ElecBidEvaluation/ExpertPhotoUpload';
|
import ExpertPhotoUpload from '@/components/ElecBidEvaluation/ExpertPhotoUpload';
|
||||||
import { getUserPhoto } from '@/pages/Tender/ProjectManager/JudgingPanel/List/service';
|
import { getUserPhoto } from '@/pages/Tender/ProjectManager/JudgingPanel/List/service';
|
||||||
import BidEvalAppointment from '@/components/ElecBidEvaluation/BidEvalAppointment';
|
import BidEvalAppointment from '@/components/ElecBidEvaluation/BidEvalAppointment';
|
||||||
|
import OutsourcingManage from '@/pages/Tender/ProjectManager/JudgingPanel/List/OutsourcingManage';
|
||||||
|
|
||||||
const JudgingPanel: React.FC<{}> = (props: any) => {
|
const JudgingPanel: React.FC<{}> = (props: any) => {
|
||||||
const modalHeight = window.innerHeight * 96 / 100;
|
const modalHeight = window.innerHeight * 96 / 100;
|
||||||
@ -51,6 +52,10 @@ const JudgingPanel: React.FC<{}> = (props: any) => {
|
|||||||
const [appoType, setAppoType] = useState<string>("0");//电子评标室-预约框状态 2022.8.29 zhoujianlong
|
const [appoType, setAppoType] = useState<string>("0");//电子评标室-预约框状态 2022.8.29 zhoujianlong
|
||||||
const [isReserve, setIsReserve] = useState<string>("0");//电子评标室-是否预约评标室 2022.9.23 zhoujianlong 0-不预约 1-预约
|
const [isReserve, setIsReserve] = useState<string>("0");//电子评标室-是否预约评标室 2022.9.23 zhoujianlong 0-不预约 1-预约
|
||||||
const userData = getSessionUserData();//当前登录人用户信息
|
const userData = getSessionUserData();//当前登录人用户信息
|
||||||
|
const [assistVisible, setAssistVisible] = useState<boolean>(false);//协办管理visible 2022.10.10 zhoujianlong
|
||||||
|
//外协管理
|
||||||
|
const [assistList, setAssistList] = useState<any>([]);//外协人员数据 assistList
|
||||||
|
const [assistNumber, setAssistNumber] = useState<string>("");//外协人员数量 assistNumber
|
||||||
// function getShouName() {
|
// function getShouName() {
|
||||||
// const method = getDefId();
|
// const method = getDefId();
|
||||||
// let num = 3;
|
// let num = 3;
|
||||||
@ -148,6 +153,13 @@ const JudgingPanel: React.FC<{}> = (props: any) => {
|
|||||||
memberCountSet(memberCount + 1);
|
memberCountSet(memberCount + 1);
|
||||||
setMemberVis(true);
|
setMemberVis(true);
|
||||||
}}>成员管理</Button>
|
}}>成员管理</Button>
|
||||||
|
{record.assistNumber != null && <Button type='text' onClick={async () => {
|
||||||
|
await queryOpenStatus(record.id);
|
||||||
|
setAssistList(record.assistList.map((item: any, index: any) => { item.key = index; return item }));
|
||||||
|
setAssistNumber(record.assistNumber);
|
||||||
|
juryIdSet(record.id);
|
||||||
|
setAssistVisible(true);
|
||||||
|
}}>外协管理</Button>}
|
||||||
{record.elecEvalRoomReserve && (record.elecEvalRoomReserve.status == -1 || record.elecEvalRoomReserve.status == 0) && <Button type='text' onClick={() => {
|
{record.elecEvalRoomReserve && (record.elecEvalRoomReserve.status == -1 || record.elecEvalRoomReserve.status == 0) && <Button type='text' onClick={() => {
|
||||||
setSelectEvalData(record.elecEvalRoomReserve)
|
setSelectEvalData(record.elecEvalRoomReserve)
|
||||||
setAppoType("1");
|
setAppoType("1");
|
||||||
@ -273,6 +285,7 @@ const JudgingPanel: React.FC<{}> = (props: any) => {
|
|||||||
description: updateData != undefined ? updateData.description : null,
|
description: updateData != undefined ? updateData.description : null,
|
||||||
reserveBy: updateData?.reserveStatus == 1 ? updateData.elecEvalRoomReserve.reserveBy : null,
|
reserveBy: updateData?.reserveStatus == 1 ? updateData.elecEvalRoomReserve.reserveBy : null,
|
||||||
reserveContactNumber: updateData?.reserveStatus == 1 ? updateData.elecEvalRoomReserve.reserveContactNumber : null,
|
reserveContactNumber: updateData?.reserveStatus == 1 ? updateData.elecEvalRoomReserve.reserveContactNumber : null,
|
||||||
|
assistNumber: updateData?.reserveStatus == 1 ? updateData.assistNumber : null,
|
||||||
})
|
})
|
||||||
}, [updateData]);
|
}, [updateData]);
|
||||||
|
|
||||||
@ -1874,6 +1887,8 @@ const JudgingPanel: React.FC<{}> = (props: any) => {
|
|||||||
/>}
|
/>}
|
||||||
{/**电子评标室-评标室预约选择 */}
|
{/**电子评标室-评标室预约选择 */}
|
||||||
<BidEvalAppointment modalVisible={selectEvalVisible} onCancel={() => setSelectEvalVisible(false)} onSubmit={(value: any) => returnEvalData(value)} values={selectEvalData} initValue={initEvalTime} type={appoType} reload={() => getPage()} />
|
<BidEvalAppointment modalVisible={selectEvalVisible} onCancel={() => setSelectEvalVisible(false)} onSubmit={(value: any) => returnEvalData(value)} values={selectEvalData} initValue={initEvalTime} type={appoType} reload={() => getPage()} />
|
||||||
|
{/**协办管理 */}
|
||||||
|
<OutsourcingManage modalVisible={assistVisible} onCancel={() => setAssistVisible(false)} onSubmit={() => { setAssistVisible(false); actionRef.current?.reload(); }} open={open} assistData={assistList} assistNumber={assistNumber} juryId={juryId} />
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user