修改整体样式

master
LiuJiaNan 2026-01-04 10:21:02 +08:00
parent fc9af4faf8
commit be9eb8c279
42 changed files with 1015 additions and 1056 deletions

View File

@ -2,6 +2,7 @@ import { Permission } from "@cqsjjb/jjb-common-decorator/permission";
import { Connect } from "@cqsjjb/jjb-dva-runtime"; import { Connect } from "@cqsjjb/jjb-dva-runtime";
import { Button, Descriptions, Form, Modal, Space } from "antd"; import { Button, Descriptions, Form, Modal, Space } from "antd";
import { useState } from "react"; import { useState } from "react";
import Page from "zy-react-library/components/Page";
import Search from "zy-react-library/components/Search"; import Search from "zy-react-library/components/Search";
import DictionarySelect from "zy-react-library/components/Select/Dictionary"; import DictionarySelect from "zy-react-library/components/Select/Dictionary";
import Table from "zy-react-library/components/Table"; import Table from "zy-react-library/components/Table";
@ -29,7 +30,7 @@ function List(props) {
}; };
return ( return (
<div style={{ padding: 20 }}> <Page isShowAllAction={false}>
<Search <Search
labelCol={{ span: 8 }} labelCol={{ span: 8 }}
options={[ options={[
@ -91,14 +92,14 @@ function List(props) {
{...tableProps} {...tableProps}
/> />
{rejectReasonModalOpen && <RejectReason rejectReason={rejectReason} onCancel={() => setRejectReasonModalOpen(false)} />} {rejectReasonModalOpen && <RejectReason rejectReason={rejectReason} onCancel={() => setRejectReasonModalOpen(false)} />}
</div> </Page>
); );
} }
const RejectReason = (props) => { const RejectReason = (props) => {
return ( return (
<Modal <Modal
title="查看驳回原因" title="查看驳回原因"
width={800} width={600}
open open
maskClosable={false} maskClosable={false}
onCancel={props.onCancel} onCancel={props.onCancel}

View File

@ -1,6 +1,7 @@
import { Permission } from "@cqsjjb/jjb-common-decorator/permission"; import { Permission } from "@cqsjjb/jjb-common-decorator/permission";
import { Connect } from "@cqsjjb/jjb-dva-runtime"; import { Connect } from "@cqsjjb/jjb-dva-runtime";
import { Button, Form, Space } from "antd"; import { Button, Form, Space } from "antd";
import Page from "zy-react-library/components/Page";
import Search from "zy-react-library/components/Search"; import Search from "zy-react-library/components/Search";
import DictionarySelect from "zy-react-library/components/Select/Dictionary"; import DictionarySelect from "zy-react-library/components/Select/Dictionary";
import Table from "zy-react-library/components/Table"; import Table from "zy-react-library/components/Table";
@ -20,7 +21,7 @@ function List(props) {
}); });
return ( return (
<div style={{ padding: 20 }}> <Page isShowAllAction={false}>
<Search <Search
labelCol={{ span: 8 }} labelCol={{ span: 8 }}
options={[ options={[
@ -100,7 +101,7 @@ function List(props) {
]} ]}
{...tableProps} {...tableProps}
/> />
</div> </Page>
); );
} }

View File

@ -4,7 +4,7 @@ import dayjs from "dayjs";
import { cloneDeep } from "lodash-es"; import { cloneDeep } from "lodash-es";
import { useEffect, useState } from "react"; import { useEffect, useState } from "react";
import FormBuilder from "zy-react-library/components/FormBuilder"; import FormBuilder from "zy-react-library/components/FormBuilder";
import HeaderBack from "zy-react-library/components/HeaderBack"; import Page from "zy-react-library/components/Page";
import DictionarySelect from "zy-react-library/components/Select/Dictionary"; import DictionarySelect from "zy-react-library/components/Select/Dictionary";
import PersonnelSelect from "zy-react-library/components/Select/Personnel/Gwj"; import PersonnelSelect from "zy-react-library/components/Select/Personnel/Gwj";
import DepartmentSelectTree from "zy-react-library/components/SelectTree/Department/Gwj"; import DepartmentSelectTree from "zy-react-library/components/SelectTree/Department/Gwj";
@ -42,24 +42,20 @@ function Add(props) {
}, []); }, []);
return ( return (
<div> <Page headerTitle={query.resubmit ? "重新提交" : (query.id ? "编辑" : "新增")} isShowFooter={false}>
<HeaderBack title={query.resubmit ? "重新提交" : (query.id ? "编辑" : "新增")} /> {currentStep === 1
<div style={{ padding: 20 }}> && <StepOne setFormValues={setFormValues} setCurrentStep={setCurrentStep} formValues={formValues} form={form} />}
{currentStep === 1 {currentStep === 2
&& && (
<StepOne setFormValues={setFormValues} setCurrentStep={setCurrentStep} formValues={formValues} form={form} />} <StepTwo
{currentStep === 2 setCurrentStep={setCurrentStep}
&& ( formValues={formValues}
<StepTwo query={query}
setCurrentStep={setCurrentStep} setSpecialList={setSpecialList}
formValues={formValues} specialList={specialList}
query={query} />
setSpecialList={setSpecialList} )}
specialList={specialList} </Page>
/>
)}
</div>
</div>
); );
} }
@ -225,38 +221,6 @@ const StepTwoComponent = (props) => {
const { loading: deleteFileLoading, deleteFile } = useDeleteFile(); const { loading: deleteFileLoading, deleteFile } = useDeleteFile();
const { loading: getFileLoading, getFile } = useGetFile(); const { loading: getFileLoading, getFile } = useGetFile();
const getData = async () => {
if (!props.formValues.qualificationsId)
return;
if (specialList.length === 0) {
const { data } = await props["qualificationMaintenanceInfo"]({ id: props.formValues.qualificationsId });
await getTypeGroup(data.details)
setSpecialList(data.details || []);
} else {
const { data } = await props["qualificationMaintenanceInfo"]({ id: props.formValues.qualificationsId });
const newSpecialList = data.details.map(item => {
const existsItem = specialList.find(specialItem => specialItem.qualificationsDetailId === item.id);
if (existsItem) {
return { ...item, ...existsItem };
}
return item;
})
await getTypeGroup(newSpecialList)
for (let i = 0; i < newSpecialList.length; i++) {
if (newSpecialList[i].applyDetailId) {
newSpecialList[i].files = await getFile({
eqType: UPLOAD_FILE_TYPE_ENUM["148"],
eqForeignKey: newSpecialList[i].applyDetailId
});
}
}
setSpecialList(newSpecialList);
}
};
const getTypeGroup = async (details) => { const getTypeGroup = async (details) => {
const typeMap = new Map(); const typeMap = new Map();
for (let i = 0; i < details.length; i++) { for (let i = 0; i < details.length; i++) {
@ -266,7 +230,38 @@ const StepTwoComponent = (props) => {
} }
} }
setTypeGroup(Array.from(typeMap.values())); setTypeGroup(Array.from(typeMap.values()));
} };
const getData = async () => {
if (!props.formValues.qualificationsId)
return;
if (specialList.length === 0) {
const { data } = await props["qualificationMaintenanceInfo"]({ id: props.formValues.qualificationsId });
await getTypeGroup(data.details);
setSpecialList(data.details || []);
}
else {
const { data } = await props["qualificationMaintenanceInfo"]({ id: props.formValues.qualificationsId });
const newSpecialList = data.details.map((item) => {
const existsItem = specialList.find(specialItem => specialItem.qualificationsDetailId === item.id);
if (existsItem) {
return { ...item, ...existsItem };
}
return item;
});
await getTypeGroup(newSpecialList);
for (let i = 0; i < newSpecialList.length; i++) {
if (newSpecialList[i].applyDetailId) {
newSpecialList[i].files = await getFile({
eqType: UPLOAD_FILE_TYPE_ENUM["148"],
eqForeignKey: newSpecialList[i].applyDetailId,
});
}
}
setSpecialList(newSpecialList);
}
};
useEffect(() => { useEffect(() => {
getData(); getData();
@ -337,11 +332,11 @@ const StepTwoComponent = (props) => {
<Spin <Spin
spinning={props.qualificationApply.qualificationApplyLoading || uploadFileLoading || deleteFileLoading || getFileLoading} spinning={props.qualificationApply.qualificationApplyLoading || uploadFileLoading || deleteFileLoading || getFileLoading}
> >
{typeGroup.map((item) => ( {typeGroup.map(item => (
<div key={item.dataType}> <div key={item.dataType}>
<Divider orientation="left">{item.dataTypeName}</Divider> <Divider orientation="left">{item.dataTypeName}</Divider>
<Table <Table
dataSource={specialList.filter((record) => record.dataType === item.dataType)} dataSource={specialList.filter(record => record.dataType === item.dataType)}
pagination={false} pagination={false}
options={false} options={false}
disabledResizer={true} disabledResizer={true}
@ -362,25 +357,25 @@ const StepTwoComponent = (props) => {
{ {
record.files?.length > 0 record.files?.length > 0
? ( ? (
<Button <Button
type="link" type="link"
onClick={() => { onClick={() => {
onUploadFileOpen(record, record.id, record.files); onUploadFileOpen(record, record.id, record.files);
}} }}
> >
修改 修改
</Button> </Button>
) )
: ( : (
<Button <Button
type="link" type="link"
onClick={() => { onClick={() => {
onUploadFileOpen(record, record.id, []); onUploadFileOpen(record, record.id, []);
}} }}
> >
上传 上传
</Button> </Button>
) )
} }
</Space> </Space>
), ),
@ -388,8 +383,7 @@ const StepTwoComponent = (props) => {
]} ]}
/> />
</div> </div>
)) ))}
}
<div style={{ textAlign: "center", marginTop: 20 }}> <div style={{ textAlign: "center", marginTop: 20 }}>
<Space> <Space>
<Button onClick={() => { <Button onClick={() => {

View File

@ -3,6 +3,7 @@ import { Connect } from "@cqsjjb/jjb-dva-runtime";
import { Button, Descriptions, Form, Modal, Space } from "antd"; import { Button, Descriptions, Form, Modal, Space } from "antd";
import { useState } from "react"; import { useState } from "react";
import AddIcon from "zy-react-library/components/Icon/AddIcon"; import AddIcon from "zy-react-library/components/Icon/AddIcon";
import Page from "zy-react-library/components/Page";
import Search from "zy-react-library/components/Search"; import Search from "zy-react-library/components/Search";
import DictionarySelect from "zy-react-library/components/Select/Dictionary"; import DictionarySelect from "zy-react-library/components/Select/Dictionary";
import Table from "zy-react-library/components/Table"; import Table from "zy-react-library/components/Table";
@ -26,7 +27,7 @@ function List(props) {
}; };
return ( return (
<div style={{ padding: 20 }}> <Page isShowAllAction={false}>
<Search <Search
labelCol={{ span: 8 }} labelCol={{ span: 8 }}
options={[ options={[
@ -111,7 +112,7 @@ function List(props) {
{...tableProps} {...tableProps}
/> />
{rejectReasonModalOpen && <RejectReason rejectReason={rejectReason} onCancel={() => setRejectReasonModalOpen(false)} />} {rejectReasonModalOpen && <RejectReason rejectReason={rejectReason} onCancel={() => setRejectReasonModalOpen(false)} />}
</div> </Page>
); );
} }
@ -119,7 +120,7 @@ const RejectReason = (props) => {
return ( return (
<Modal <Modal
title="查看驳回原因" title="查看驳回原因"
width={800} width={600}
open open
maskClosable={false} maskClosable={false}
onCancel={props.onCancel} onCancel={props.onCancel}

View File

@ -1,7 +1,7 @@
import { Connect } from "@cqsjjb/jjb-dva-runtime"; import { Connect } from "@cqsjjb/jjb-dva-runtime";
import { Button, Descriptions, Divider, Spin } from "antd"; import { Button, Descriptions, Divider, Spin } from "antd";
import { useEffect, useState } from "react"; import { useEffect, useState } from "react";
import HeaderBack from "zy-react-library/components/HeaderBack"; import Page from "zy-react-library/components/Page";
import Table from "zy-react-library/components/Table"; import Table from "zy-react-library/components/Table";
import { UPLOAD_FILE_TYPE_ENUM } from "zy-react-library/enum/uploadFile/gwj"; import { UPLOAD_FILE_TYPE_ENUM } from "zy-react-library/enum/uploadFile/gwj";
import useGetFile from "zy-react-library/hooks/useGetFile"; import useGetFile from "zy-react-library/hooks/useGetFile";
@ -19,6 +19,17 @@ function View(props) {
const [viewQualificationDetailsModalOpen, setViewQualificationDetailsModalOpen] = useState(false); const [viewQualificationDetailsModalOpen, setViewQualificationDetailsModalOpen] = useState(false);
const [viewQualificationDetailsModalData, setViewQualificationDetailsModalData] = useState({}); const [viewQualificationDetailsModalData, setViewQualificationDetailsModalData] = useState({});
const getTypeGroup = async (details) => {
const typeMap = new Map();
for (let i = 0; i < details.length; i++) {
const { dataType, dataTypeName } = details[i];
if (dataType && dataTypeName) {
typeMap.set(dataType, { dataType, dataTypeName });
}
}
setTypeGroup(Array.from(typeMap.values()));
};
const getData = async () => { const getData = async () => {
const { data } = await props["qualificationApplyInfo"]({ id: query.id }); const { data } = await props["qualificationApplyInfo"]({ id: query.id });
await getTypeGroup(data.specialList); await getTypeGroup(data.specialList);
@ -33,90 +44,75 @@ function View(props) {
setSpecialList(data.specialList); setSpecialList(data.specialList);
}; };
const getTypeGroup = async (details) => {
const typeMap = new Map();
for (let i = 0; i < details.length; i++) {
const { dataType, dataTypeName } = details[i];
if (dataType && dataTypeName) {
typeMap.set(dataType, { dataType, dataTypeName });
}
}
setTypeGroup(Array.from(typeMap.values()));
}
useEffect(() => { useEffect(() => {
getData(); getData();
}, []); }, []);
return ( return (
<div> <Page headerTitle="查看">
<HeaderBack title="查看" /> <Spin
<div style={{ padding: 20 }}> spinning={props.qualificationApply.qualificationApplyLoading || getFileLoading}
<Spin >
spinning={props.qualificationApply.qualificationApplyLoading || getFileLoading} <div>
> <Divider orientation="left">资质基础信息</Divider>
<div> <Descriptions
<Divider orientation="left">资质基础信息</Divider> bordered
<Descriptions column={1}
bordered styles={{ label: { width: 200 } }}
column={1} items={[
styles={{ label: { width: 200 } }} { label: "资质类别", children: info.qualificationsTypeName },
items={[ { label: "资质级别", children: info.stakeholderLevelName },
{ label: "资质类别", children: info.qualificationsTypeName }, ...(info.stakeholderLevel === "two-level"
{ label: "资质级别", children: info.stakeholderLevelName }, ? [
...(info.stakeholderLevel === "two-level"
? [
{ label: "集团单位", children: info.groupUnitName }, { label: "集团单位", children: info.groupUnitName },
{ label: "部门", children: info.groupUnitDeptName }, { label: "部门", children: info.groupUnitDeptName },
{ label: "负责人", children: info.groupUnitUserName }, { label: "负责人", children: info.groupUnitUserName },
] ]
: []), : []),
{ label: "资质名称", children: info.qualificationsName }, { label: "资质名称", children: info.qualificationsName },
{ label: "备注", children: info.remarks }, { label: "备注", children: info.remarks },
]}
/>
</div>
{typeGroup.map(item => (
<div key={item.dataType}>
<Divider orientation="left">{item.dataTypeName}</Divider>
<Table
dataSource={specialList.filter(detail => detail.dataType === item.dataType)}
pagination={false}
options={false}
disabledResizer={true}
columns={[
{ title: "材料名称", dataIndex: "dataName" },
{ title: "上传时间", dataIndex: "uploadedTime", render: (_, record) => record.uploadedTime || "-" },
{
title: "时效性",
dataIndex: "qualificationsTermStart",
render: (_, record) => record.qualificationsTermStart ? `${record.qualificationsTermStart}${record.qualificationsTermEnd}` : "-",
},
{
title: "操作",
width: 80,
render: (_, record) => (
<Button
type="link"
onClick={() => {
setViewQualificationDetailsModalOpen(true);
setViewQualificationDetailsModalData(record);
}}
>
查看
</Button>
),
},
]} ]}
/> />
</div> </div>
{typeGroup.map((item) => ( ))}
<div key={item.dataType}> </Spin>
<Divider orientation="left">{item.dataTypeName}</Divider> {viewQualificationDetailsModalOpen
<Table && <ViewQualificationDetailsModal onCancel={() => setViewQualificationDetailsModalOpen(false)} data={viewQualificationDetailsModalData} />}
dataSource={specialList.filter((detail) => detail.dataType === item.dataType)} </Page>
pagination={false}
options={false}
disabledResizer={true}
columns={[
{ title: "材料名称", dataIndex: "dataName" },
{ title: "上传时间", dataIndex: "uploadedTime", render: (_, record) => record.uploadedTime || "-" },
{
title: "时效性",
dataIndex: "qualificationsTermStart",
render: (_, record) => record.qualificationsTermStart ? `${record.qualificationsTermStart}${record.qualificationsTermEnd}` : "-",
},
{
title: "操作",
width: 80,
render: (_, record) => (
<Button
type="link"
onClick={() => {
setViewQualificationDetailsModalOpen(true);
setViewQualificationDetailsModalData(record);
}}
>
查看
</Button>
),
},
]}
/>
</div>
))
}
</Spin>
{viewQualificationDetailsModalOpen
&& <ViewQualificationDetailsModal onCancel={() => setViewQualificationDetailsModalOpen(false)} data={viewQualificationDetailsModalData} />}
</div>
</div>
); );
} }

View File

@ -3,6 +3,7 @@ import { Permission } from "@cqsjjb/jjb-common-decorator/permission";
import { Connect } from "@cqsjjb/jjb-dva-runtime"; import { Connect } from "@cqsjjb/jjb-dva-runtime";
import { Button, Form, Space, Tooltip } from "antd"; import { Button, Form, Space, Tooltip } from "antd";
import { useState } from "react"; import { useState } from "react";
import Page from "zy-react-library/components/Page";
import Search from "zy-react-library/components/Search"; import Search from "zy-react-library/components/Search";
import DictionarySelect from "zy-react-library/components/Select/Dictionary"; import DictionarySelect from "zy-react-library/components/Select/Dictionary";
import Table from "zy-react-library/components/Table"; import Table from "zy-react-library/components/Table";
@ -28,7 +29,7 @@ function List(props) {
}); });
return ( return (
<div style={{ padding: 20 }}> <Page isShowAllAction={false}>
<Search <Search
labelCol={{ span: 8 }} labelCol={{ span: 8 }}
options={[ options={[
@ -146,7 +147,7 @@ function List(props) {
]} ]}
{...tableProps} {...tableProps}
/> />
</div> </Page>
); );
} }

View File

@ -1,6 +1,7 @@
import { Permission } from "@cqsjjb/jjb-common-decorator/permission"; import { Permission } from "@cqsjjb/jjb-common-decorator/permission";
import { Connect } from "@cqsjjb/jjb-dva-runtime"; import { Connect } from "@cqsjjb/jjb-dva-runtime";
import { Button, Form, Space } from "antd"; import { Button, Form, Space } from "antd";
import Page from "zy-react-library/components/Page";
import Search from "zy-react-library/components/Search"; import Search from "zy-react-library/components/Search";
import DictionarySelect from "zy-react-library/components/Select/Dictionary"; import DictionarySelect from "zy-react-library/components/Select/Dictionary";
import Table from "zy-react-library/components/Table"; import Table from "zy-react-library/components/Table";
@ -14,7 +15,7 @@ function List(props) {
}); });
return ( return (
<div style={{ padding: 20 }}> <Page isShowAllAction={false}>
<Search <Search
labelCol={{ span: 8 }} labelCol={{ span: 8 }}
options={[ options={[
@ -98,7 +99,7 @@ function List(props) {
]} ]}
{...tableProps} {...tableProps}
/> />
</div> </Page>
); );
} }

View File

@ -1,5 +1,5 @@
import { Connect } from "@cqsjjb/jjb-dva-runtime"; import { Connect } from "@cqsjjb/jjb-dva-runtime";
import { Button, Form, message, Modal, Space } from "antd"; import { Button, Form, message, Modal } from "antd";
import { useState } from "react"; import { useState } from "react";
import FormBuilder from "zy-react-library/components/FormBuilder"; import FormBuilder from "zy-react-library/components/FormBuilder";
import { FORM_ITEM_RENDER_ENUM } from "zy-react-library/enum/formItemRender"; import { FORM_ITEM_RENDER_ENUM } from "zy-react-library/enum/formItemRender";
@ -11,7 +11,6 @@ function Review(props) {
const query = useGetUrlQuery(); const query = useGetUrlQuery();
const [rejectModalOpen, setRejectModalOpen] = useState(false); const [rejectModalOpen, setRejectModalOpen] = useState(false);
const [passModalOpen, setPassModalOpen] = useState(false);
const onSubmit = async () => { const onSubmit = async () => {
const { success } = await props["qualificationReviewSubmit"]({ id: query.id, status: "400" }); const { success } = await props["qualificationReviewSubmit"]({ id: query.id, status: "400" });
@ -24,9 +23,10 @@ function Review(props) {
return ( return (
<div> <div>
<ViewInfo title="审核"> <ViewInfo
<div style={{ textAlign: "center", marginTop: 10 }}> title="审核"
<Space> extraActionButtons={(
<>
<Button <Button
type="primary" type="primary"
onClick={onSubmit} onClick={onSubmit}
@ -42,11 +42,10 @@ function Review(props) {
> >
驳回 驳回
</Button> </Button>
</Space> </>
</div> )}
</ViewInfo> />
{rejectModalOpen && <RejectModal onCancel={() => setRejectModalOpen(false)} id={query.id} />} {rejectModalOpen && <RejectModal onCancel={() => setRejectModalOpen(false)} id={query.id} />}
{passModalOpen && <PassModal onCancel={() => setPassModalOpen(false)} id={query.id} />}
</div> </div>
); );
} }
@ -65,18 +64,20 @@ const RejectModalComponent = (props) => {
return ( return (
<Modal <Modal
title="驳回" title="驳回"
width={1000} width={600}
open open
maskClosable={false} maskClosable={false}
onCancel={props.onCancel} onCancel={props.onCancel}
onOk={form.submit} onOk={form.submit}
confirmLoading={props.qualificationReview.userQualificationLoading}
> >
<FormBuilder <FormBuilder
form={form} form={form}
span={24} span={24}
labelCol={{ span: 8 }} labelCol={{ span: 10 }}
showActionButtons={false} showActionButtons={false}
onFinish={onSubmit} onFinish={onSubmit}
loading={props.qualificationReview.userQualificationLoading}
options={[ options={[
{ name: "auditRemarks", label: "驳回原因", render: FORM_ITEM_RENDER_ENUM.TEXTAREA }, { name: "auditRemarks", label: "驳回原因", render: FORM_ITEM_RENDER_ENUM.TEXTAREA },
]} ]}

View File

@ -2,6 +2,7 @@ import { Permission } from "@cqsjjb/jjb-common-decorator/permission";
import { Connect } from "@cqsjjb/jjb-dva-runtime"; import { Connect } from "@cqsjjb/jjb-dva-runtime";
import { Button, Descriptions, Form, Modal, Space } from "antd"; import { Button, Descriptions, Form, Modal, Space } from "antd";
import { useState } from "react"; import { useState } from "react";
import Page from "zy-react-library/components/Page";
import Search from "zy-react-library/components/Search"; import Search from "zy-react-library/components/Search";
import DictionarySelect from "zy-react-library/components/Select/Dictionary"; import DictionarySelect from "zy-react-library/components/Select/Dictionary";
import Table from "zy-react-library/components/Table"; import Table from "zy-react-library/components/Table";
@ -30,7 +31,7 @@ function List(props) {
}; };
return ( return (
<div style={{ padding: 20 }}> <Page isShowAllAction={false}>
<Search <Search
labelCol={{ span: 8 }} labelCol={{ span: 8 }}
options={[ options={[
@ -91,14 +92,14 @@ function List(props) {
{...tableProps} {...tableProps}
/> />
{rejectReasonModalOpen && <RejectReason rejectReason={rejectReason} onCancel={() => setRejectReasonModalOpen(false)} />} {rejectReasonModalOpen && <RejectReason rejectReason={rejectReason} onCancel={() => setRejectReasonModalOpen(false)} />}
</div> </Page>
); );
} }
const RejectReason = (props) => { const RejectReason = (props) => {
return ( return (
<Modal <Modal
title="查看驳回原因" title="查看驳回原因"
width={800} width={600}
open open
maskClosable={false} maskClosable={false}
onCancel={props.onCancel} onCancel={props.onCancel}

View File

@ -1,6 +1,7 @@
import { Permission } from "@cqsjjb/jjb-common-decorator/permission"; import { Permission } from "@cqsjjb/jjb-common-decorator/permission";
import { Connect } from "@cqsjjb/jjb-dva-runtime"; import { Connect } from "@cqsjjb/jjb-dva-runtime";
import { Button, Form, Space } from "antd"; import { Button, Form, Space } from "antd";
import Page from "zy-react-library/components/Page";
import Search from "zy-react-library/components/Search"; import Search from "zy-react-library/components/Search";
import DictionarySelect from "zy-react-library/components/Select/Dictionary"; import DictionarySelect from "zy-react-library/components/Select/Dictionary";
import Table from "zy-react-library/components/Table"; import Table from "zy-react-library/components/Table";
@ -21,7 +22,7 @@ function List(props) {
}); });
return ( return (
<div style={{ padding: 20 }}> <Page isShowAllAction={false}>
<Search <Search
labelCol={{ span: 8 }} labelCol={{ span: 8 }}
options={[ options={[
@ -70,7 +71,7 @@ function List(props) {
]} ]}
{...tableProps} {...tableProps}
/> />
</div> </Page>
); );
} }
export default Connect([NS_QUALIFICATION_STATISTICS], true)(Permission(List)); export default Connect([NS_QUALIFICATION_STATISTICS], true)(Permission(List));

View File

@ -2,6 +2,7 @@ import { Permission } from "@cqsjjb/jjb-common-decorator/permission";
import { Connect } from "@cqsjjb/jjb-dva-runtime"; import { Connect } from "@cqsjjb/jjb-dva-runtime";
import { Button, Descriptions, Form, Modal, Space } from "antd"; import { Button, Descriptions, Form, Modal, Space } from "antd";
import { useState } from "react"; import { useState } from "react";
import Page from "zy-react-library/components/Page";
import Search from "zy-react-library/components/Search"; import Search from "zy-react-library/components/Search";
import DictionarySelect from "zy-react-library/components/Select/Dictionary"; import DictionarySelect from "zy-react-library/components/Select/Dictionary";
import Table from "zy-react-library/components/Table"; import Table from "zy-react-library/components/Table";
@ -30,7 +31,7 @@ function List(props) {
}; };
return ( return (
<div style={{ padding: 20 }}> <Page isShowAllAction={false}>
<Search <Search
labelCol={{ span: 8 }} labelCol={{ span: 8 }}
options={[ options={[
@ -91,14 +92,14 @@ function List(props) {
{...tableProps} {...tableProps}
/> />
{rejectReasonModalOpen && <RejectReason rejectReason={rejectReason} onCancel={() => setRejectReasonModalOpen(false)} />} {rejectReasonModalOpen && <RejectReason rejectReason={rejectReason} onCancel={() => setRejectReasonModalOpen(false)} />}
</div> </Page>
); );
} }
const RejectReason = (props) => { const RejectReason = (props) => {
return ( return (
<Modal <Modal
title="查看驳回原因" title="查看驳回原因"
width={800} width={600}
open open
maskClosable={false} maskClosable={false}
onCancel={props.onCancel} onCancel={props.onCancel}

View File

@ -1,6 +1,7 @@
import { Permission } from "@cqsjjb/jjb-common-decorator/permission"; import { Permission } from "@cqsjjb/jjb-common-decorator/permission";
import { Connect } from "@cqsjjb/jjb-dva-runtime"; import { Connect } from "@cqsjjb/jjb-dva-runtime";
import { Button, Form, Space } from "antd"; import { Button, Form, Space } from "antd";
import Page from "zy-react-library/components/Page";
import Search from "zy-react-library/components/Search"; import Search from "zy-react-library/components/Search";
import DictionarySelect from "zy-react-library/components/Select/Dictionary"; import DictionarySelect from "zy-react-library/components/Select/Dictionary";
import Table from "zy-react-library/components/Table"; import Table from "zy-react-library/components/Table";
@ -20,7 +21,7 @@ function List(props) {
}, },
}); });
return ( return (
<div style={{ padding: 20 }}> <Page isShowAllAction={false}>
<Search <Search
labelCol={{ span: 8 }} labelCol={{ span: 8 }}
options={[ options={[
@ -70,7 +71,7 @@ function List(props) {
]} ]}
{...tableProps} {...tableProps}
/> />
</div> </Page>
); );
} }

View File

@ -2,6 +2,7 @@ import { Permission } from "@cqsjjb/jjb-common-decorator/permission";
import { Connect } from "@cqsjjb/jjb-dva-runtime"; import { Connect } from "@cqsjjb/jjb-dva-runtime";
import { Button, Descriptions, Form, Modal, Space } from "antd"; import { Button, Descriptions, Form, Modal, Space } from "antd";
import { useState } from "react"; import { useState } from "react";
import Page from "zy-react-library/components/Page";
import Search from "zy-react-library/components/Search"; import Search from "zy-react-library/components/Search";
import DictionarySelect from "zy-react-library/components/Select/Dictionary"; import DictionarySelect from "zy-react-library/components/Select/Dictionary";
import Table from "zy-react-library/components/Table"; import Table from "zy-react-library/components/Table";
@ -29,7 +30,7 @@ function List(props) {
}; };
return ( return (
<div style={{ padding: 20 }}> <Page isShowAllAction={false}>
<Search <Search
labelCol={{ span: 8 }} labelCol={{ span: 8 }}
options={[ options={[
@ -91,14 +92,14 @@ function List(props) {
{...tableProps} {...tableProps}
/> />
{rejectReasonModalOpen && <RejectReason rejectReason={rejectReason} onCancel={() => setRejectReasonModalOpen(false)} />} {rejectReasonModalOpen && <RejectReason rejectReason={rejectReason} onCancel={() => setRejectReasonModalOpen(false)} />}
</div> </Page>
); );
} }
const RejectReason = (props) => { const RejectReason = (props) => {
return ( return (
<Modal <Modal
title="查看驳回原因" title="查看驳回原因"
width={800} width={600}
open open
maskClosable={false} maskClosable={false}
onCancel={props.onCancel} onCancel={props.onCancel}

View File

@ -1,6 +1,7 @@
import { Permission } from "@cqsjjb/jjb-common-decorator/permission"; import { Permission } from "@cqsjjb/jjb-common-decorator/permission";
import { Connect } from "@cqsjjb/jjb-dva-runtime"; import { Connect } from "@cqsjjb/jjb-dva-runtime";
import { Button, Form, Space } from "antd"; import { Button, Form, Space } from "antd";
import Page from "zy-react-library/components/Page";
import Search from "zy-react-library/components/Search"; import Search from "zy-react-library/components/Search";
import DictionarySelect from "zy-react-library/components/Select/Dictionary"; import DictionarySelect from "zy-react-library/components/Select/Dictionary";
import Table from "zy-react-library/components/Table"; import Table from "zy-react-library/components/Table";
@ -19,7 +20,7 @@ function List(props) {
}, },
}); });
return ( return (
<div style={{ padding: 20 }}> <Page isShowAllAction={false}>
<Search <Search
labelCol={{ span: 8 }} labelCol={{ span: 8 }}
options={[ options={[
@ -69,7 +70,7 @@ function List(props) {
]} ]}
{...tableProps} {...tableProps}
/> />
</div> </Page>
); );
} }

View File

@ -1,6 +1,7 @@
import { Permission } from "@cqsjjb/jjb-common-decorator/permission"; import { Permission } from "@cqsjjb/jjb-common-decorator/permission";
import { Connect } from "@cqsjjb/jjb-dva-runtime"; import { Connect } from "@cqsjjb/jjb-dva-runtime";
import { Button, Form, Space } from "antd"; import { Button, Form, Space } from "antd";
import Page from "zy-react-library/components/Page";
import Search from "zy-react-library/components/Search"; import Search from "zy-react-library/components/Search";
import DictionarySelect from "zy-react-library/components/Select/Dictionary"; import DictionarySelect from "zy-react-library/components/Select/Dictionary";
import Table from "zy-react-library/components/Table"; import Table from "zy-react-library/components/Table";
@ -14,7 +15,7 @@ function List(props) {
}); });
return ( return (
<div style={{ padding: 20 }}> <Page isShowAllAction={false}>
<Search <Search
labelCol={{ span: 8 }} labelCol={{ span: 8 }}
options={[ options={[
@ -98,7 +99,7 @@ function List(props) {
]} ]}
{...tableProps} {...tableProps}
/> />
</div> </Page>
); );
} }

View File

@ -1,5 +1,5 @@
import { Connect } from "@cqsjjb/jjb-dva-runtime"; import { Connect } from "@cqsjjb/jjb-dva-runtime";
import { Button, Form, message, Modal, Space } from "antd"; import { Button, Form, message, Modal } from "antd";
import { useState } from "react"; import { useState } from "react";
import FormBuilder from "zy-react-library/components/FormBuilder"; import FormBuilder from "zy-react-library/components/FormBuilder";
import PersonnelSelect from "zy-react-library/components/Select/Personnel/Gwj"; import PersonnelSelect from "zy-react-library/components/Select/Personnel/Gwj";
@ -17,9 +17,10 @@ function Review() {
return ( return (
<div> <div>
<ViewInfo title="审核"> <ViewInfo
<div style={{ textAlign: "center", marginTop: 10 }}> title="审核"
<Space> extraActionButtons={(
<>
<Button <Button
type="primary" type="primary"
onClick={() => { onClick={() => {
@ -37,9 +38,9 @@ function Review() {
> >
驳回 驳回
</Button> </Button>
</Space> </>
</div> )}
</ViewInfo> />
{rejectModalOpen && <RejectModal onCancel={() => setRejectModalOpen(false)} id={query.id} />} {rejectModalOpen && <RejectModal onCancel={() => setRejectModalOpen(false)} id={query.id} />}
{passModalOpen && <PassModal onCancel={() => setPassModalOpen(false)} id={query.id} />} {passModalOpen && <PassModal onCancel={() => setPassModalOpen(false)} id={query.id} />}
</div> </div>
@ -60,18 +61,20 @@ const RejectModalComponent = (props) => {
return ( return (
<Modal <Modal
title="驳回" title="驳回"
width={1000} width={600}
open open
maskClosable={false} maskClosable={false}
onCancel={props.onCancel} onCancel={props.onCancel}
onOk={form.submit} onOk={form.submit}
confirmLoading={props.qualificationReview.userQualificationLoading}
> >
<FormBuilder <FormBuilder
form={form} form={form}
span={24} span={24}
labelCol={{ span: 8 }} labelCol={{ span: 10 }}
showActionButtons={false} showActionButtons={false}
onFinish={onSubmit} onFinish={onSubmit}
loading={props.qualificationReview.userQualificationLoading}
options={[ options={[
{ name: "auditRemarks", label: "驳回原因", render: FORM_ITEM_RENDER_ENUM.TEXTAREA }, { name: "auditRemarks", label: "驳回原因", render: FORM_ITEM_RENDER_ENUM.TEXTAREA },
]} ]}
@ -96,17 +99,19 @@ const PassModalComponent = (props) => {
return ( return (
<Modal <Modal
title="通过" title="通过"
width={1000} width={600}
open open
maskClosable={false} maskClosable={false}
onCancel={props.onCancel} onCancel={props.onCancel}
onOk={form.submit} onOk={form.submit}
confirmLoading={props.qualificationReview.userQualificationLoading}
> >
<FormBuilder <FormBuilder
form={form} form={form}
labelCol={{ span: 8 }} labelCol={{ span: 10 }}
showActionButtons={false} showActionButtons={false}
onFinish={onSubmit} onFinish={onSubmit}
loading={props.qualificationReview.userQualificationLoading}
span={24} span={24}
options={[ options={[
{ {

View File

@ -3,9 +3,9 @@ import { Button, Divider, Form, message, Modal, Space, Spin } from "antd";
import dayjs from "dayjs"; import dayjs from "dayjs";
import { useEffect, useMemo, useState } from "react"; import { useEffect, useMemo, useState } from "react";
import FormBuilder from "zy-react-library/components/FormBuilder"; import FormBuilder from "zy-react-library/components/FormBuilder";
import HeaderBack from "zy-react-library/components/HeaderBack";
import AddIcon from "zy-react-library/components/Icon/AddIcon"; import AddIcon from "zy-react-library/components/Icon/AddIcon";
import DepartmentLeftTree from "zy-react-library/components/LeftTree/Department/Gwj"; import DepartmentLeftTree from "zy-react-library/components/LeftTree/Department/Gwj";
import Page from "zy-react-library/components/Page";
import Search from "zy-react-library/components/Search"; import Search from "zy-react-library/components/Search";
import DictionarySelect from "zy-react-library/components/Select/Dictionary"; import DictionarySelect from "zy-react-library/components/Select/Dictionary";
import PersonnelSelect from "zy-react-library/components/Select/Personnel/Gwj"; import PersonnelSelect from "zy-react-library/components/Select/Personnel/Gwj";
@ -73,9 +73,8 @@ function Add(props) {
}, []); }, []);
return ( return (
<div> <Page headerTitle={query.id ? "编辑" : "新增"} isShowFooter={false}>
<HeaderBack title={query.id ? "编辑" : "新增"} /> <>
<div style={{ padding: 20 }}>
{currentStep === 1 {currentStep === 1
&& ( && (
<StepOne <StepOne
@ -103,8 +102,8 @@ function Add(props) {
corpinfoId={corpinfoId} corpinfoId={corpinfoId}
/> />
)} )}
</div> </>
</div> </Page>
); );
} }
@ -626,7 +625,6 @@ const StepTwoComponent = (props) => {
}); });
projectFileList[i].projectFileId = id; projectFileList[i].projectFileId = id;
} }
console.log("usercontentList", usercontentList);
const userList = usercontentList.map(item => ({ const userList = usercontentList.map(item => ({
userId: item.id, userId: item.id,
userName: item.name, userName: item.name,
@ -636,7 +634,6 @@ const StepTwoComponent = (props) => {
userPostName: item.postName, userPostName: item.postName,
projectLeader: item.projectLeader, projectLeader: item.projectLeader,
})); }));
console.log("userList", userList);
const data = { ...props.formValues, projectUserAddCmdList: [...userList], projectFileAddCmdList: [...projectFileList], projectLocalCompanyAddCmdList: [...projectLocalCompanyAddCmdList], projectApprovalUserAddCmdList: [...projectApprovalUserAddCmdList], projectApprovalFlowAddCmdList: [...projectApprovalFlowAddCmdList], corpinfoId }; const data = { ...props.formValues, projectUserAddCmdList: [...userList], projectFileAddCmdList: [...projectFileList], projectLocalCompanyAddCmdList: [...projectLocalCompanyAddCmdList], projectApprovalUserAddCmdList: [...projectApprovalUserAddCmdList], projectApprovalFlowAddCmdList: [...projectApprovalFlowAddCmdList], corpinfoId };
const { success } = await props[!query.id ? "projectAdd" : "projectUpdate"]({ const { success } = await props[!query.id ? "projectAdd" : "projectUpdate"]({
...data, ...data,
@ -719,6 +716,7 @@ const StepTwoComponent = (props) => {
</Button> </Button>
<Button <Button
type="link" type="link"
danger
onClick={() => handleDelete(index)} onClick={() => handleDelete(index)}
> >
删除 删除
@ -816,7 +814,7 @@ const StepTwoComponent = (props) => {
/> />
)} )}
{usercontentOpen && ( {usercontentOpen && (
<Usercontent <UserSelect
data={fetchUserList} data={fetchUserList}
onCancel={() => { onCancel={() => {
setUsercontentOpen(false); setUsercontentOpen(false);
@ -845,6 +843,7 @@ const ChooseFilsComponent = (props) => {
params: { params: {
qualificationsTypeId: "", qualificationsTypeId: "",
}, },
useStorageQueryCriteria: false,
}); });
const submit = () => { const submit = () => {
if (props.onSubmit) { if (props.onSubmit) {
@ -874,6 +873,8 @@ const ChooseFilsComponent = (props) => {
onOk={submit} onOk={submit}
> >
<Table <Table
options={false}
disabledResizer={true}
rowSelection={{ rowSelection={{
selectedRowKeys, selectedRowKeys,
preserveSelectedRowKeys: true, preserveSelectedRowKeys: true,
@ -896,7 +897,7 @@ const ChooseFilsComponent = (props) => {
); );
}; };
// 选择项目人员的组件 // 选择项目人员的组件
const UsercontentComponent = (props) => { const UserSelectComponent = (props) => {
const [form] = Form.useForm(); const [form] = Form.useForm();
const [selectedRowKeys, setSelectedRowKeys] = useState([]); // 存储选中的行键 const [selectedRowKeys, setSelectedRowKeys] = useState([]); // 存储选中的行键
const [selectedRows, setSelectedRows] = useState([]); // 存储选中行的完整数据 const [selectedRows, setSelectedRows] = useState([]); // 存储选中行的完整数据
@ -909,6 +910,7 @@ const UsercontentComponent = (props) => {
inDepartmentId, inDepartmentId,
eqEmploymentFlag: 1, // 在职 eqEmploymentFlag: 1, // 在职
}, },
useStorageQueryCriteria: false,
}); });
const projectLeader = useMemo(() => { const projectLeader = useMemo(() => {
if (props.data && Array.isArray(props.data)) { if (props.data && Array.isArray(props.data)) {
@ -969,19 +971,9 @@ const UsercontentComponent = (props) => {
open open
maskClosable={false} maskClosable={false}
onCancel={props.onCancel} onCancel={props.onCancel}
footer={null} okText="确认添加"
onOk={handleConfirmAdd}
> >
<Search
labelCol={{ span: 8 }}
options={[
{ name: "likeName", label: "姓名" },
{ name: "likeUserIdCard", label: "身份证" },
]}
form={form}
onFinish={(values) => {
getData(values);
}}
/>
<div style={{ display: "flex", gap: 20 }}> <div style={{ display: "flex", gap: 20 }}>
<div style={{ width: 300 }}> <div style={{ width: 300 }}>
<DepartmentLeftTree <DepartmentLeftTree
@ -993,7 +985,18 @@ const UsercontentComponent = (props) => {
/> />
</div> </div>
<div style={{ flex: 1 }}> <div style={{ flex: 1 }}>
<Search
labelCol={{ span: 8 }}
options={[
{ name: "likeName", label: "姓名" },
{ name: "likeUserIdCard", label: "身份证" },
]}
form={form}
onFinish={getData}
/>
<Table <Table
options={false}
disabledResizer={true}
rowSelection={{ rowSelection={{
selectedRowKeys, selectedRowKeys,
preserveSelectedRowKeys: true, preserveSelectedRowKeys: true,
@ -1003,17 +1006,6 @@ const UsercontentComponent = (props) => {
disabled: projectLeader && record.id === projectLeader.id, disabled: projectLeader && record.id === projectLeader.id,
}), }),
}} }}
rowKey="id"
toolBarRender={() => (
<>
<Button
type="primary"
onClick={handleConfirmAdd}
>
确认添加
</Button>
</>
)}
columns={[ columns={[
{ title: "手机号", dataIndex: "phone" }, { title: "手机号", dataIndex: "phone" },
{ title: "姓名", dataIndex: "name" }, { title: "姓名", dataIndex: "name" },
@ -1096,7 +1088,7 @@ const FileUpload = (props) => {
const StepOne = Connect([NS_QUALIFICATION_STATISTICS], true)(StepOneComponent); const StepOne = Connect([NS_QUALIFICATION_STATISTICS], true)(StepOneComponent);
const StepTwo = Connect([NS_QUALIFICATION_STATISTICS], true)(StepTwoComponent); const StepTwo = Connect([NS_QUALIFICATION_STATISTICS], true)(StepTwoComponent);
const Usercontent = Connect([NS_QUALIFICATION_STATISTICS], true)(UsercontentComponent); const UserSelect = Connect([NS_QUALIFICATION_STATISTICS], true)(UserSelectComponent);
const ChooseFilsList = Connect([NS_QUALIFICATION_STATISTICS], true)(ChooseFilsComponent); const ChooseFilsList = Connect([NS_QUALIFICATION_STATISTICS], true)(ChooseFilsComponent);
export default Connect([NS_QUALIFICATION_STATISTICS], true)(Add); export default Connect([NS_QUALIFICATION_STATISTICS], true)(Add);

View File

@ -3,6 +3,7 @@ import { Connect } from "@cqsjjb/jjb-dva-runtime";
import { Button, Descriptions, Form, Modal, Space } from "antd"; import { Button, Descriptions, Form, Modal, Space } from "antd";
import { useState } from "react"; import { useState } from "react";
import AddIcon from "zy-react-library/components/Icon/AddIcon"; import AddIcon from "zy-react-library/components/Icon/AddIcon";
import Page from "zy-react-library/components/Page";
import Search from "zy-react-library/components/Search"; import Search from "zy-react-library/components/Search";
import DictionarySelect from "zy-react-library/components/Select/Dictionary"; import DictionarySelect from "zy-react-library/components/Select/Dictionary";
import Table from "zy-react-library/components/Table"; import Table from "zy-react-library/components/Table";
@ -30,7 +31,7 @@ function List(props) {
}; };
return ( return (
<div style={{ padding: 20 }}> <Page isShowAllAction={false}>
<Search <Search
labelCol={{ span: 8 }} labelCol={{ span: 8 }}
options={[ options={[
@ -127,14 +128,14 @@ function List(props) {
{...tableProps} {...tableProps}
/> />
{rejectReasonModalOpen && <RejectReason rejectReason={rejectReason} onCancel={() => setRejectReasonModalOpen(false)} />} {rejectReasonModalOpen && <RejectReason rejectReason={rejectReason} onCancel={() => setRejectReasonModalOpen(false)} />}
</div> </Page>
); );
} }
const RejectReason = (props) => { const RejectReason = (props) => {
return ( return (
<Modal <Modal
title="查看驳回原因" title="查看驳回原因"
width={800} width={600}
open open
maskClosable={false} maskClosable={false}
onCancel={props.onCancel} onCancel={props.onCancel}

View File

@ -1,8 +1,8 @@
import { Connect } from "@cqsjjb/jjb-dva-runtime"; import { Connect } from "@cqsjjb/jjb-dva-runtime";
import { Button, Descriptions, Divider, Form, Input, message, Modal, Space, Spin } from "antd"; import { Button, Descriptions, Divider, Form, Input, message, Modal, Space } from "antd";
import { useEffect, useState } from "react"; import { useEffect, useState } from "react";
import FormBuilder from "zy-react-library/components/FormBuilder"; import FormBuilder from "zy-react-library/components/FormBuilder";
import HeaderBack from "zy-react-library/components/HeaderBack"; import Page from "zy-react-library/components/Page";
import Table from "zy-react-library/components/Table"; import Table from "zy-react-library/components/Table";
import TooltipPreviewImg from "zy-react-library/components/TooltipPreviewImg"; import TooltipPreviewImg from "zy-react-library/components/TooltipPreviewImg";
import { FORM_ITEM_RENDER_ENUM } from "zy-react-library/enum/formItemRender"; import { FORM_ITEM_RENDER_ENUM } from "zy-react-library/enum/formItemRender";
@ -204,9 +204,32 @@ function Review(props) {
getProjectListAll(); getProjectListAll();
}, []); }, []);
return ( return (
<div> <Page
<HeaderBack title="查看" /> headerTitle="查看"
<div style={{ padding: "0 20px 20px 20px" }}> contentPadding="0 20px 20px 20px"
extraActionButtons={(
<>
{(query.projectStatusLast === "1" || query.projectStatusLast === "3" || query.projectStatusLast === "7")
&& (
<>
<Button onClick={() => auditSubmit(0)}>
驳回
</Button>
<Button type="primary" onClick={() => auditSubmit(1)}>
审核通过
</Button>
</>
)}
{query.projectStatusLast === "2"
&& (
<Button type="primary" onClick={() => auditSubmit(1)}>
确认信息
</Button>
)}
</>
)}
>
<div>
{info.relatedProjectId && ( {info.relatedProjectId && (
<div style={{ "font-size": "16px" }}> <div style={{ "font-size": "16px" }}>
<Divider orientation="left">一级项目信息</Divider> <Divider orientation="left">一级项目信息</Divider>
@ -234,58 +257,54 @@ function Review(props) {
)} )}
<div> <div>
<Divider orientation="left">项目基础信息</Divider> <Divider orientation="left">项目基础信息</Divider>
<Spin spinning=""> <Descriptions
<Descriptions bordered
bordered column={4}
column={4} items={[
items={[ { label: "项目名称", children: info.projectName },
{ label: "项目名称", children: info.projectName }, { label: "项目负责人", children: info.userName },
{ label: "项目负责人", children: info.userName }, { label: "立项时间", children: info.initiationTime },
{ label: "立项时间", children: info.initiationTime }, { label: "计划开始时间", children: info.startProjectTime },
{ label: "计划开始时间", children: info.startProjectTime }, { label: "计划竣工时间", children: info.endProjectTime },
{ label: "计划竣工时间", children: info.endProjectTime }, { label: "选取形式", children: info.chooseForm },
{ label: "选取形式", children: info.chooseForm }, { label: "是否涉及四新工作内容", children: info.fourNewFlag === 1 ? "是" : "否" },
{ label: "是否涉及四新工作内容", children: info.fourNewFlag === 1 ? "是" : "否" }, { label: "是否涉及三人及以上工作内容", children: info.threePeopleFlag === 1 ? "是" : "否" },
{ label: "是否涉及三人及以上工作内容", children: info.threePeopleFlag === 1 ? "是" : "否" }, { label: "是否涉及夜间作业", children: info.nightWorkFlag === 1 ? "是" : "否" },
{ label: "是否涉及夜间作业", children: info.nightWorkFlag === 1 ? "是" : "否" }, { label: "项目类别", children: info.qualificationsTypeName },
{ label: "项目类别", children: info.qualificationsTypeName }, { label: "是否存在分包项目", children: info.subcontractFlag === 1 ? "是" : "否" },
{ label: "是否存在分包项目", children: info.subcontractFlag === 1 ? "是" : "否" }, { label: "是否为属地公司推荐", children: info.isLocalCompany === 1 ? "是" : "否" },
{ label: "是否为属地公司推荐", children: info.isLocalCompany === 1 ? "是" : "否" }, { label: "安全管理协议", children: <TooltipPreviewImg files={info.files} /> },
{ label: "安全管理协议", children: <TooltipPreviewImg files={info.files} /> }, ]}
]} />
/>
</Spin>
</div> </div>
<div> <div>
<Divider orientation="left">企业基础信息</Divider> <Divider orientation="left">企业基础信息</Divider>
<Spin spinning=""> <Descriptions
<Descriptions bordered
bordered column={4}
column={4} items={[
items={[ { label: "公司名称", children: info.corpInfo?.corpName },
{ label: "公司名称", children: info.corpInfo?.corpName }, { label: "企业状态", children: info.corpInfo?.corpStateName },
{ label: "企业状态", children: info.corpInfo?.corpStateName }, { label: "开户人", children: info.corpInfo?.accountContactName },
{ label: "开户人", children: info.corpInfo?.accountContactName }, { label: "社会统一信号代码", children: info.corpInfo?.code },
{ label: "社会统一信号代码", children: info.corpInfo?.code }, { label: "属地", children: info.corpInfo?.companyArea },
{ label: "属地", children: info.corpInfo?.companyArea }, { label: "所属行业", children: [info.corpInfo?.corpType2Name, info.corpInfo?.corpType3Name, info.corpInfo?.corpType4Name, info.corpInfo?.corpTypeName].filter(Boolean).join("/") },
{ label: "所属行业", children: [info.corpInfo?.corpType2Name, info.corpInfo?.corpType3Name, info.corpInfo?.corpType4Name, info.corpInfo?.corpTypeName].filter(Boolean).join("/") }, { label: "单位经营地址", children: info.corpInfo?.addressBusiness },
{ label: "单位经营地址", children: info.corpInfo?.addressBusiness }, { label: "企业规模", children: info.corpInfo?.scaleName },
{ label: "企业规模", children: info.corpInfo?.scaleName }, { label: "法定代表人姓名", children: info.corpInfo?.lrName },
{ label: "法定代表人姓名", children: info.corpInfo?.lrName }, { label: "打定代表人电话", children: info.corpInfo?.lrMobile },
{ label: "打定代表人电话", children: info.corpInfo?.lrMobile }, { label: "主要负责人姓名", children: info.corpInfo?.contacts },
{ label: "主要负责人姓名", children: info.corpInfo?.contacts }, { label: "主要负责人电话", children: info.corpInfo?.contactsPhone },
{ label: "主要负责人电话", children: info.corpInfo?.contactsPhone }, { label: "成立日期", children: info.corpInfo?.createDate },
{ label: "成立日期", children: info.corpInfo?.createDate }, { label: "公司人数(人)", children: info.corpInfo?.employees },
{ label: "公司人数(人)", children: info.corpInfo?.employees }, { label: "资产总额(万元)", children: info.corpInfo?.totalAssets },
{ label: "资产总额(万元)", children: info.corpInfo?.totalAssets }, { label: "注册资金(万元)", children: info.corpInfo?.regcapital },
{ label: "注册资金(万元)", children: info.corpInfo?.regcapital }, { label: "企业类型", children: getLabelName({ list: typeList, status: info.corpInfo?.type }) },
{ label: "企业类型", children: getLabelName({ list: typeList, status: info.corpInfo?.type }) }, { label: "营业执照", children: <TooltipPreviewImg files={info.corpInfo?.files || []} /> },
{ label: "营业执照", children: <TooltipPreviewImg files={info.corpInfo?.files || []} /> }, { label: "营业执照有效期", children: `${info.corpInfo?.licenseStart}-${info.corpInfo?.licenseEnd}` },
{ label: "营业执照有效期", children: `${info.corpInfo?.licenseStart}-${info.corpInfo?.licenseEnd}` }, { label: "", children: "" },
{ label: "", children: "" }, ]}
]} />
/>
</Spin>
</div> </div>
<div> <div>
<Divider orientation="left">项目资料信息</Divider> <Divider orientation="left">项目资料信息</Divider>
@ -355,86 +374,48 @@ function Review(props) {
{info.subcontractFlag === 1 && ( {info.subcontractFlag === 1 && (
<div> <div>
<Divider orientation="left">分包项目信息详情</Divider> <Divider orientation="left">分包项目信息详情</Divider>
<Spin spinning="">
<Table
options={false}
pagination={false}
disabledResizer={true}
dataSource={info.subcontractProjectList || []}
columns={[
{ title: "相关方名称", dataIndex: "corpinfoName" },
{ title: "项目名称", dataIndex: "projectName" },
{ title: "审核状态", dataIndex: "projectStatus", render: (_, record) => getLabelName({ list: PROJECT_STATUS_MAP, status: record.projectStatus }) },
{
title: "操作",
render: (_, record) => (
<Button
type="link"
onClick={() => {
props.history.push(`../ProjectFilingApplicationTwo/reView?id=${record.id}`);
}}
>
查看
</Button>
),
},
]}
/>
</Spin>
</div>
)}
<div>
<Divider orientation="left">{info.stakeholderLevel === "one-level" ? "一级项目审核信息" : "审核记录"}</Divider>
<Spin spinning="">
<Table <Table
options={false} options={false}
pagination={false} pagination={false}
disabledResizer={true} disabledResizer={true}
dataSource={info.approvalFlowCOList || []} dataSource={info.subcontractProjectList || []}
columns={[ columns={[
{ title: "审核单位", dataIndex: "corpinfoName" }, { title: "相关方名称", dataIndex: "corpinfoName" },
{ title: "部门", dataIndex: "departmentName" }, { title: "项目名称", dataIndex: "projectName" },
{ title: "姓名", dataIndex: "userName" }, { title: "审核状态", dataIndex: "projectStatus", render: (_, record) => getLabelName({ list: PROJECT_STATUS_MAP, status: record.projectStatus }) },
{ title: "时间", dataIndex: "approvalTime" }, {
{ title: "审核结果", dataIndex: "approvalStatus", render: (_, record) => getLabelName({ list: [{ name: "审核中", bianma: "1" }, { name: "已通过", bianma: "2" }, { name: "已驳回", bianma: "3" }], status: record.approvalStatus }) }, title: "操作",
render: (_, record) => (
<Button
type="link"
onClick={() => {
props.history.push(`../ProjectFilingApplicationTwo/reView?id=${record.id}`);
}}
>
查看
</Button>
),
},
]} ]}
/> />
</Spin> </div>
)}
<div>
<Divider orientation="left">{info.stakeholderLevel === "one-level" ? "一级项目审核信息" : "审核记录"}</Divider>
<Table
options={false}
pagination={false}
disabledResizer={true}
dataSource={info.approvalFlowCOList || []}
columns={[
{ title: "审核单位", dataIndex: "corpinfoName" },
{ title: "部门", dataIndex: "departmentName" },
{ title: "姓名", dataIndex: "userName" },
{ title: "时间", dataIndex: "approvalTime" },
{ title: "审核结果", dataIndex: "approvalStatus", render: (_, record) => getLabelName({ list: [{ name: "审核中", bianma: "1" }, { name: "已通过", bianma: "2" }, { name: "已驳回", bianma: "3" }], status: record.approvalStatus }) },
]}
/>
</div> </div>
{(query.projectStatusLast === "1" || query.projectStatusLast === "3" || query.projectStatusLast === "7")
&& (
<div className="btn_bottom">
<Button
onClick={() => auditSubmit(0)}
>
驳回
</Button>
<Button
style={{ marginLeft: "20px" }}
type="primary"
onClick={() => auditSubmit(1)}
>
审核通过
</Button>
</div>
)}
{query.projectStatusLast === "2"
&& (
<div className="btn_bottom">
<Button
onClick={() => props.history.goBack()}
>
返回
</Button>
<Button
style={{ marginLeft: "20px" }}
type="primary"
onClick={() => auditSubmit(1)}
>
确认信息
</Button>
</div>
)}
{viewProjectReviewUserModalOpen {viewProjectReviewUserModalOpen
&& <ViewProjectReviewUserModal onCancel={() => setViewProjectReviewUserModalOpen(false)} data={viewProjectReviewUserModalData} />} && <ViewProjectReviewUserModal onCancel={() => setViewProjectReviewUserModalOpen(false)} data={viewProjectReviewUserModalData} />}
{viewProjectReviewDetailsModalOpen {viewProjectReviewDetailsModalOpen
@ -447,7 +428,7 @@ function Review(props) {
{props.children} {props.children}
</div> </div>
</div> </Page>
); );
} }

View File

@ -47,11 +47,4 @@
} }
} }
} }
}
.btn_bottom{
text-align: center;
margin-top: 20px;
} }

View File

@ -1,6 +1,7 @@
import { Permission } from "@cqsjjb/jjb-common-decorator/permission"; import { Permission } from "@cqsjjb/jjb-common-decorator/permission";
import { Connect } from "@cqsjjb/jjb-dva-runtime"; import { Connect } from "@cqsjjb/jjb-dva-runtime";
import { Button, Form, Space } from "antd"; import { Button, Form, Space } from "antd";
import Page from "zy-react-library/components/Page";
import Search from "zy-react-library/components/Search"; import Search from "zy-react-library/components/Search";
import DictionarySelect from "zy-react-library/components/Select/Dictionary"; import DictionarySelect from "zy-react-library/components/Select/Dictionary";
import Table from "zy-react-library/components/Table"; import Table from "zy-react-library/components/Table";
@ -21,7 +22,7 @@ function List(props) {
}); });
return ( return (
<div style={{ padding: 20 }}> <Page isShowAllAction={false}>
<Search <Search
labelCol={{ span: 8 }} labelCol={{ span: 8 }}
options={[ options={[
@ -101,7 +102,7 @@ function List(props) {
]} ]}
{...tableProps} {...tableProps}
/> />
</div> </Page>
); );
} }

View File

@ -3,9 +3,9 @@ import { Button, Divider, Form, message, Modal, Space, Spin } from "antd";
import dayjs from "dayjs"; import dayjs from "dayjs";
import { useEffect, useMemo, useState } from "react"; import { useEffect, useMemo, useState } from "react";
import FormBuilder from "zy-react-library/components/FormBuilder"; import FormBuilder from "zy-react-library/components/FormBuilder";
import HeaderBack from "zy-react-library/components/HeaderBack";
import AddIcon from "zy-react-library/components/Icon/AddIcon"; import AddIcon from "zy-react-library/components/Icon/AddIcon";
import DepartmentLeftTree from "zy-react-library/components/LeftTree/Department/Gwj"; import DepartmentLeftTree from "zy-react-library/components/LeftTree/Department/Gwj";
import Page from "zy-react-library/components/Page";
import Search from "zy-react-library/components/Search"; import Search from "zy-react-library/components/Search";
import DictionarySelect from "zy-react-library/components/Select/Dictionary"; import DictionarySelect from "zy-react-library/components/Select/Dictionary";
import PersonnelSelect from "zy-react-library/components/Select/Personnel/Gwj"; import PersonnelSelect from "zy-react-library/components/Select/Personnel/Gwj";
@ -73,38 +73,35 @@ function Add(props) {
}, []); }, []);
return ( return (
<div> <Page headerTitle={query.id ? "编辑" : "新增"} isShowFooter={false}>
<HeaderBack title={query.id ? "编辑" : "新增"} /> {currentStep === 1
<div style={{ padding: 20 }}> && (
{currentStep === 1 <StepOne
&& ( setFormValues={setFormValues}
<StepOne setCurrentStep={setCurrentStep}
setFormValues={setFormValues} formValues={formValues}
setCurrentStep={setCurrentStep} form={form}
formValues={formValues} usercontentAddCmdList={usercontentAddCmdList}
form={form} setUsercontentAddCmdList={setUsercontentAddCmdList}
usercontentAddCmdList={usercontentAddCmdList} />
setUsercontentAddCmdList={setUsercontentAddCmdList} )}
/> {currentStep === 2
)} && (
{currentStep === 2 <StepTwo
&& ( setCurrentStep={setCurrentStep}
<StepTwo formValues={formValues}
setCurrentStep={setCurrentStep} query={query}
formValues={formValues} setUsercontentAddCmdList={setUsercontentAddCmdList}
query={query} setProjectFileAddCmdList={setProjectFileAddCmdList}
setUsercontentAddCmdList={setUsercontentAddCmdList} projectFileAddCmdList={projectFileAddCmdList}
setProjectFileAddCmdList={setProjectFileAddCmdList} usercontentAddCmdList={usercontentAddCmdList}
projectFileAddCmdList={projectFileAddCmdList} projectLocalCompanyAddCmdList={projectLocalCompanyAddCmdList}
usercontentAddCmdList={usercontentAddCmdList} projectApprovalUserAddCmdList={projectApprovalUserAddCmdList}
projectLocalCompanyAddCmdList={projectLocalCompanyAddCmdList} projectApprovalFlowAddCmdList={projectApprovalFlowAddCmdList}
projectApprovalUserAddCmdList={projectApprovalUserAddCmdList} corpinfoId={corpinfoId}
projectApprovalFlowAddCmdList={projectApprovalFlowAddCmdList} />
corpinfoId={corpinfoId} )}
/> </Page>
)}
</div>
</div>
); );
} }
@ -457,7 +454,6 @@ const StepTwoComponent = (props) => {
}); });
projectFileList[i].projectFileId = id; projectFileList[i].projectFileId = id;
} }
console.log("usercontentList", usercontentList);
const userList = usercontentList.map(item => ({ const userList = usercontentList.map(item => ({
userId: item.id, userId: item.id,
userName: item.name, userName: item.name,
@ -467,7 +463,6 @@ const StepTwoComponent = (props) => {
userPostName: item.postName, userPostName: item.postName,
projectLeader: item.projectLeader, projectLeader: item.projectLeader,
})); }));
console.log("userList", userList);
const data = { ...props.formValues, projectUserAddCmdList: [...userList], projectFileAddCmdList: [...projectFileList], projectLocalCompanyAddCmdList: [...projectLocalCompanyAddCmdList], projectApprovalUserAddCmdList: [...projectApprovalUserAddCmdList], projectApprovalFlowAddCmdList: [...projectApprovalFlowAddCmdList], corpinfoId }; const data = { ...props.formValues, projectUserAddCmdList: [...userList], projectFileAddCmdList: [...projectFileList], projectLocalCompanyAddCmdList: [...projectLocalCompanyAddCmdList], projectApprovalUserAddCmdList: [...projectApprovalUserAddCmdList], projectApprovalFlowAddCmdList: [...projectApprovalFlowAddCmdList], corpinfoId };
const { success } = await props[!query.id ? "projectAdd" : "projectUpdate"]({ const { success } = await props[!query.id ? "projectAdd" : "projectUpdate"]({
...data, ...data,
@ -675,6 +670,7 @@ const ChooseFilsComponent = (props) => {
params: { params: {
qualificationsTypeId: "", qualificationsTypeId: "",
}, },
useStorageQueryCriteria: false,
}); });
const submit = () => { const submit = () => {
if (props.onSubmit) { if (props.onSubmit) {
@ -704,6 +700,8 @@ const ChooseFilsComponent = (props) => {
onOk={submit} onOk={submit}
> >
<Table <Table
options={false}
disabledResizer={true}
rowSelection={{ rowSelection={{
selectedRowKeys, selectedRowKeys,
preserveSelectedRowKeys: true, preserveSelectedRowKeys: true,
@ -739,6 +737,7 @@ const UsercontentComponent = (props) => {
inDepartmentId, inDepartmentId,
eqEmploymentFlag: 1, // 在职 eqEmploymentFlag: 1, // 在职
}, },
useStorageQueryCriteria: false,
}); });
const projectLeader = useMemo(() => { const projectLeader = useMemo(() => {
if (props.data && Array.isArray(props.data)) { if (props.data && Array.isArray(props.data)) {
@ -799,19 +798,9 @@ const UsercontentComponent = (props) => {
open open
maskClosable={false} maskClosable={false}
onCancel={props.onCancel} onCancel={props.onCancel}
footer={null} okText="确认添加"
onOk={handleConfirmAdd}
> >
<Search
labelCol={{ span: 8 }}
options={[
{ name: "likeName", label: "姓名" },
{ name: "likeUserIdCard", label: "身份证" },
]}
form={form}
onFinish={(values) => {
getData(values);
}}
/>
<div style={{ display: "flex", gap: 20 }}> <div style={{ display: "flex", gap: 20 }}>
<div style={{ width: 300 }}> <div style={{ width: 300 }}>
<DepartmentLeftTree <DepartmentLeftTree
@ -823,7 +812,20 @@ const UsercontentComponent = (props) => {
/> />
</div> </div>
<div style={{ flex: 1 }}> <div style={{ flex: 1 }}>
<Search
labelCol={{ span: 8 }}
options={[
{ name: "likeName", label: "姓名" },
{ name: "likeUserIdCard", label: "身份证" },
]}
form={form}
onFinish={(values) => {
getData(values);
}}
/>
<Table <Table
options={false}
disabledResizer={true}
rowSelection={{ rowSelection={{
selectedRowKeys, selectedRowKeys,
preserveSelectedRowKeys: true, preserveSelectedRowKeys: true,
@ -833,17 +835,6 @@ const UsercontentComponent = (props) => {
disabled: projectLeader && record.id === projectLeader.id, disabled: projectLeader && record.id === projectLeader.id,
}), }),
}} }}
rowKey="id"
toolBarRender={() => (
<>
<Button
type="primary"
onClick={handleConfirmAdd}
>
确认添加
</Button>
</>
)}
columns={[ columns={[
{ title: "手机号", dataIndex: "phone" }, { title: "手机号", dataIndex: "phone" },
{ title: "姓名", dataIndex: "name" }, { title: "姓名", dataIndex: "name" },

View File

@ -3,6 +3,7 @@ import { Connect } from "@cqsjjb/jjb-dva-runtime";
import { Button, Descriptions, Form, Modal, Space } from "antd"; import { Button, Descriptions, Form, Modal, Space } from "antd";
import { useState } from "react"; import { useState } from "react";
import AddIcon from "zy-react-library/components/Icon/AddIcon"; import AddIcon from "zy-react-library/components/Icon/AddIcon";
import Page from "zy-react-library/components/Page";
import Search from "zy-react-library/components/Search"; import Search from "zy-react-library/components/Search";
import DictionarySelect from "zy-react-library/components/Select/Dictionary"; import DictionarySelect from "zy-react-library/components/Select/Dictionary";
import Table from "zy-react-library/components/Table"; import Table from "zy-react-library/components/Table";
@ -30,7 +31,7 @@ function List(props) {
}; };
return ( return (
<div style={{ padding: 20 }}> <Page isShowAllAction={false}>
<Search <Search
labelCol={{ span: 8 }} labelCol={{ span: 8 }}
options={[ options={[
@ -126,14 +127,14 @@ function List(props) {
{...tableProps} {...tableProps}
/> />
{rejectReasonModalOpen && <RejectReason rejectReason={rejectReason} onCancel={() => setRejectReasonModalOpen(false)} />} {rejectReasonModalOpen && <RejectReason rejectReason={rejectReason} onCancel={() => setRejectReasonModalOpen(false)} />}
</div> </Page>
); );
} }
const RejectReason = (props) => { const RejectReason = (props) => {
return ( return (
<Modal <Modal
title="查看驳回原因" title="查看驳回原因"
width={800} width={600}
open open
maskClosable={false} maskClosable={false}
onCancel={props.onCancel} onCancel={props.onCancel}

View File

@ -1,6 +1,7 @@
import { Permission } from "@cqsjjb/jjb-common-decorator/permission"; import { Permission } from "@cqsjjb/jjb-common-decorator/permission";
import { Connect } from "@cqsjjb/jjb-dva-runtime"; import { Connect } from "@cqsjjb/jjb-dva-runtime";
import { Button, Form, Space } from "antd"; import { Button, Form, Space } from "antd";
import Page from "zy-react-library/components/Page";
import Search from "zy-react-library/components/Search"; import Search from "zy-react-library/components/Search";
import DictionarySelect from "zy-react-library/components/Select/Dictionary"; import DictionarySelect from "zy-react-library/components/Select/Dictionary";
import Table from "zy-react-library/components/Table"; import Table from "zy-react-library/components/Table";
@ -20,7 +21,7 @@ function List(props) {
}); });
return ( return (
<div style={{ padding: 20 }}> <Page isShowAllAction={false}>
<Search <Search
labelCol={{ span: 8 }} labelCol={{ span: 8 }}
options={[ options={[
@ -89,7 +90,7 @@ function List(props) {
]} ]}
{...tableProps} {...tableProps}
/> />
</div> </Page>
); );
} }

View File

@ -3,6 +3,7 @@ import { Connect } from "@cqsjjb/jjb-dva-runtime";
import { Button, Descriptions, Form, Modal, Space } from "antd"; import { Button, Descriptions, Form, Modal, Space } from "antd";
import { useState } from "react"; import { useState } from "react";
import AddIcon from "zy-react-library/components/Icon/AddIcon"; import AddIcon from "zy-react-library/components/Icon/AddIcon";
import Page from "zy-react-library/components/Page";
import Search from "zy-react-library/components/Search"; import Search from "zy-react-library/components/Search";
import DictionarySelect from "zy-react-library/components/Select/Dictionary"; import DictionarySelect from "zy-react-library/components/Select/Dictionary";
import Table from "zy-react-library/components/Table"; import Table from "zy-react-library/components/Table";
@ -26,7 +27,7 @@ function List(props) {
}; };
return ( return (
<div style={{ padding: 20 }}> <Page isShowAllAction={false}>
<Search <Search
labelCol={{ span: 8 }} labelCol={{ span: 8 }}
options={[ options={[
@ -112,7 +113,7 @@ function List(props) {
{...tableProps} {...tableProps}
/> />
{rejectReasonModalOpen && <RejectReason rejectReason={rejectReason} onCancel={() => setRejectReasonModalOpen(false)} />} {rejectReasonModalOpen && <RejectReason rejectReason={rejectReason} onCancel={() => setRejectReasonModalOpen(false)} />}
</div> </Page>
); );
} }
@ -120,7 +121,7 @@ const RejectReason = (props) => {
return ( return (
<Modal <Modal
title="查看驳回原因" title="查看驳回原因"
width={800} width={600}
open open
maskClosable={false} maskClosable={false}
onCancel={props.onCancel} onCancel={props.onCancel}

View File

@ -2,6 +2,7 @@ import { Permission } from "@cqsjjb/jjb-common-decorator/permission";
import { Connect } from "@cqsjjb/jjb-dva-runtime"; import { Connect } from "@cqsjjb/jjb-dva-runtime";
import { Button, Descriptions, Form, Modal, Space } from "antd"; import { Button, Descriptions, Form, Modal, Space } from "antd";
import { useState } from "react"; import { useState } from "react";
import Page from "zy-react-library/components/Page";
import Search from "zy-react-library/components/Search"; import Search from "zy-react-library/components/Search";
import DictionarySelect from "zy-react-library/components/Select/Dictionary"; import DictionarySelect from "zy-react-library/components/Select/Dictionary";
import Table from "zy-react-library/components/Table"; import Table from "zy-react-library/components/Table";
@ -30,7 +31,7 @@ function List(props) {
}; };
return ( return (
<div style={{ padding: 20 }}> <Page isShowAllAction={false}>
<Search <Search
labelCol={{ span: 8 }} labelCol={{ span: 8 }}
options={[ options={[
@ -91,14 +92,14 @@ function List(props) {
{...tableProps} {...tableProps}
/> />
{rejectReasonModalOpen && <RejectReason rejectReason={rejectReason} onCancel={() => setRejectReasonModalOpen(false)} />} {rejectReasonModalOpen && <RejectReason rejectReason={rejectReason} onCancel={() => setRejectReasonModalOpen(false)} />}
</div> </Page>
); );
} }
const RejectReason = (props) => { const RejectReason = (props) => {
return ( return (
<Modal <Modal
title="查看驳回原因" title="查看驳回原因"
width={800} width={600}
open open
maskClosable={false} maskClosable={false}
onCancel={props.onCancel} onCancel={props.onCancel}

View File

@ -2,6 +2,7 @@ import { Permission } from "@cqsjjb/jjb-common-decorator/permission";
import { Connect } from "@cqsjjb/jjb-dva-runtime"; import { Connect } from "@cqsjjb/jjb-dva-runtime";
import { Button, Descriptions, Form, Modal, Space } from "antd"; import { Button, Descriptions, Form, Modal, Space } from "antd";
import { useState } from "react"; import { useState } from "react";
import Page from "zy-react-library/components/Page";
import Search from "zy-react-library/components/Search"; import Search from "zy-react-library/components/Search";
import DictionarySelect from "zy-react-library/components/Select/Dictionary"; import DictionarySelect from "zy-react-library/components/Select/Dictionary";
import Table from "zy-react-library/components/Table"; import Table from "zy-react-library/components/Table";
@ -30,7 +31,7 @@ function List(props) {
}; };
return ( return (
<div style={{ padding: 20 }}> <Page isShowAllAction={false}>
<Search <Search
labelCol={{ span: 8 }} labelCol={{ span: 8 }}
options={[ options={[
@ -91,14 +92,14 @@ function List(props) {
{...tableProps} {...tableProps}
/> />
{rejectReasonModalOpen && <RejectReason rejectReason={rejectReason} onCancel={() => setRejectReasonModalOpen(false)} />} {rejectReasonModalOpen && <RejectReason rejectReason={rejectReason} onCancel={() => setRejectReasonModalOpen(false)} />}
</div> </Page>
); );
} }
const RejectReason = (props) => { const RejectReason = (props) => {
return ( return (
<Modal <Modal
title="查看驳回原因" title="查看驳回原因"
width={800} width={600}
open open
maskClosable={false} maskClosable={false}
onCancel={props.onCancel} onCancel={props.onCancel}

View File

@ -2,6 +2,7 @@ import { Permission } from "@cqsjjb/jjb-common-decorator/permission";
import { Connect } from "@cqsjjb/jjb-dva-runtime"; import { Connect } from "@cqsjjb/jjb-dva-runtime";
import { Button, Descriptions, Form, Modal, Space } from "antd"; import { Button, Descriptions, Form, Modal, Space } from "antd";
import { useState } from "react"; import { useState } from "react";
import Page from "zy-react-library/components/Page";
import Search from "zy-react-library/components/Search"; import Search from "zy-react-library/components/Search";
import DictionarySelect from "zy-react-library/components/Select/Dictionary"; import DictionarySelect from "zy-react-library/components/Select/Dictionary";
import Table from "zy-react-library/components/Table"; import Table from "zy-react-library/components/Table";
@ -29,7 +30,7 @@ function List(props) {
}; };
return ( return (
<div style={{ padding: 20 }}> <Page isShowAllAction={false}>
<Search <Search
labelCol={{ span: 8 }} labelCol={{ span: 8 }}
options={[ options={[
@ -91,14 +92,14 @@ function List(props) {
{...tableProps} {...tableProps}
/> />
{rejectReasonModalOpen && <RejectReason rejectReason={rejectReason} onCancel={() => setRejectReasonModalOpen(false)} />} {rejectReasonModalOpen && <RejectReason rejectReason={rejectReason} onCancel={() => setRejectReasonModalOpen(false)} />}
</div> </Page>
); );
} }
const RejectReason = (props) => { const RejectReason = (props) => {
return ( return (
<Modal <Modal
title="查看驳回原因" title="查看驳回原因"
width={800} width={600}
open open
maskClosable={false} maskClosable={false}
onCancel={props.onCancel} onCancel={props.onCancel}

View File

@ -1,6 +1,7 @@
import { Permission } from "@cqsjjb/jjb-common-decorator/permission"; import { Permission } from "@cqsjjb/jjb-common-decorator/permission";
import { Connect } from "@cqsjjb/jjb-dva-runtime"; import { Connect } from "@cqsjjb/jjb-dva-runtime";
import { Button, Form, Space } from "antd"; import { Button, Form, Space } from "antd";
import Page from "zy-react-library/components/Page";
import Search from "zy-react-library/components/Search"; import Search from "zy-react-library/components/Search";
import DictionarySelect from "zy-react-library/components/Select/Dictionary"; import DictionarySelect from "zy-react-library/components/Select/Dictionary";
import Table from "zy-react-library/components/Table"; import Table from "zy-react-library/components/Table";
@ -20,7 +21,7 @@ function List(props) {
}); });
return ( return (
<div style={{ padding: 20 }}> <Page isShowAllAction={false}>
<Search <Search
labelCol={{ span: 8 }} labelCol={{ span: 8 }}
options={[ options={[
@ -89,7 +90,7 @@ function List(props) {
]} ]}
{...tableProps} {...tableProps}
/> />
</div> </Page>
); );
} }

View File

@ -1,9 +1,9 @@
import { Connect } from "@cqsjjb/jjb-dva-runtime"; import { Connect } from "@cqsjjb/jjb-dva-runtime";
import { Button, Form, message, Modal, Space } from "antd"; import { Button, Form, message, Modal, Space } from "antd";
import { useEffect, useMemo, useState } from "react"; import { useEffect, useMemo, useState } from "react";
import HeaderBack from "zy-react-library/components/HeaderBack";
import AddIcon from "zy-react-library/components/Icon/AddIcon"; import AddIcon from "zy-react-library/components/Icon/AddIcon";
import DepartmentLeftTree from "zy-react-library/components/LeftTree/Department/Gwj"; import DepartmentLeftTree from "zy-react-library/components/LeftTree/Department/Gwj";
import Page from "zy-react-library/components/Page";
import Search from "zy-react-library/components/Search"; import Search from "zy-react-library/components/Search";
import Table from "zy-react-library/components/Table"; import Table from "zy-react-library/components/Table";
import useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery"; import useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery";
@ -71,62 +71,59 @@ function UserChange(props) {
}; };
return ( return (
<div> <Page headerTitle="项目人员变更">
<HeaderBack title="项目人员变更" /> <Table
<div style={{ padding: "0 20px 20px 20px" }}> toolBarRender={() => (
<Table <Space>
toolBarRender={() => ( <Button
<Space> type="primary"
<Button icon={<AddIcon />}
type="primary" onClick={() => {
icon={<AddIcon />} OnUsercontentOpen();
onClick={() => { }}
OnUsercontentOpen(); >
}} 新增
> </Button>
新增 </Space>
</Button> )}
</Space> columns={[
)} { title: "姓名", dataIndex: "userName" },
columns={[ { title: "部门", dataIndex: "deptName" },
{ title: "姓名", dataIndex: "userName" }, {
{ title: "部门", dataIndex: "deptName" }, title: "是否为项目负责人",
{ dataIndex: "projectLeader",
title: "是否为项目负责人", render: (_, record) => record.projectLeader === 1 ? "是" : "否",
dataIndex: "projectLeader", },
render: (_, record) => record.projectLeader === 1 ? "是" : "否", {
}, title: "操作",
{ fixed: "right",
title: "操作", render: (_, record) => (
fixed: "right", <Space>
render: (_, record) => ( <Button
<Space> type="link"
onClick={() => {
// 查看特种证书逻辑
}}
>
查看特种证书
</Button>
{record.projectLeader === 0 && (
<Button <Button
type="link" type="link"
onClick={() => { danger
// 查看特种证书逻辑 onClick={() => onDelete(record)}
}}
> >
查看特种证书 删除
</Button> </Button>
{record.projectLeader === 0 && ( )}
<Button </Space>
type="link" ),
danger },
onClick={() => onDelete(record)} ]}
> {...tableProps}
删除 />
</Button>
)}
</Space>
),
},
]}
{...tableProps}
/>
</div>
{usercontentOpen && ( {usercontentOpen && (
<Usercontent <UserSelect
data={fetchUserList} data={fetchUserList}
projectId={query.id} projectId={query.id}
onCancel={() => { onCancel={() => {
@ -135,12 +132,12 @@ function UserChange(props) {
onConfirm={handleConfirmAdd} onConfirm={handleConfirmAdd}
/> />
)} )}
</div> </Page>
); );
} }
// 选择项目人员的组件 // 选择项目人员的组件
const UsercontentComponent = (props) => { const UserSelectComponent = (props) => {
const [form] = Form.useForm(); const [form] = Form.useForm();
const [selectedRowKeys, setSelectedRowKeys] = useState([]); // 存储选中的行键 const [selectedRowKeys, setSelectedRowKeys] = useState([]); // 存储选中的行键
const [selectedRows, setSelectedRows] = useState([]); // 存储选中行的完整数据 const [selectedRows, setSelectedRows] = useState([]); // 存储选中行的完整数据
@ -155,6 +152,7 @@ const UsercontentComponent = (props) => {
inDepartmentId, inDepartmentId,
eqEmploymentFlag: 1, // 在职 eqEmploymentFlag: 1, // 在职
}, },
useStorageQueryCriteria: false,
}); });
// 合并表格数据:接口返回的数据 + 已存在但可能不在接口数据中的人员 // 合并表格数据:接口返回的数据 + 已存在但可能不在接口数据中的人员
@ -268,19 +266,9 @@ const UsercontentComponent = (props) => {
open open
maskClosable={false} maskClosable={false}
onCancel={props.onCancel} onCancel={props.onCancel}
footer={null} okText="确认添加"
onOk={handleConfirmAdd}
> >
<Search
labelCol={{ span: 8 }}
options={[
{ name: "likeName", label: "姓名" },
{ name: "likeUserIdCard", label: "身份证" },
]}
form={form}
onFinish={(values) => {
getData(values);
}}
/>
<div style={{ display: "flex", gap: 20 }}> <div style={{ display: "flex", gap: 20 }}>
<div style={{ width: 300 }}> <div style={{ width: 300 }}>
<DepartmentLeftTree <DepartmentLeftTree
@ -292,7 +280,18 @@ const UsercontentComponent = (props) => {
/> />
</div> </div>
<div style={{ flex: 1 }}> <div style={{ flex: 1 }}>
<Search
labelCol={{ span: 8 }}
options={[
{ name: "likeName", label: "姓名" },
{ name: "likeUserIdCard", label: "身份证" },
]}
form={form}
onFinish={getData}
/>
<Table <Table
options={false}
disabledResizer={true}
rowSelection={{ rowSelection={{
selectedRowKeys, selectedRowKeys,
preserveSelectedRowKeys: true, preserveSelectedRowKeys: true,
@ -302,17 +301,6 @@ const UsercontentComponent = (props) => {
disabled: projectLeader && record.id === projectLeader.id, disabled: projectLeader && record.id === projectLeader.id,
}), }),
}} }}
rowKey="id"
toolBarRender={() => (
<>
<Button
type="primary"
onClick={handleConfirmAdd}
>
确认添加
</Button>
</>
)}
columns={[ columns={[
{ title: "手机号", dataIndex: "phone" }, { title: "手机号", dataIndex: "phone" },
{ {
@ -331,9 +319,8 @@ const UsercontentComponent = (props) => {
{ title: "所属岗位", dataIndex: "postName" }, { title: "所属岗位", dataIndex: "postName" },
{ title: "是否存在人资系统", dataIndex: "rzFlag", render: (_, record) => record.rzFlag === 1 ? "是" : "否" }, { title: "是否存在人资系统", dataIndex: "rzFlag", render: (_, record) => record.rzFlag === 1 ? "是" : "否" },
]} ]}
{...tableProps}
dataSource={tableDataSource} dataSource={tableDataSource}
pagination={tableProps.pagination}
loading={tableProps.loading}
/> />
</div> </div>
</div> </div>
@ -341,5 +328,5 @@ const UsercontentComponent = (props) => {
); );
}; };
const Usercontent = Connect([NS_QUALIFICATION_STATISTICS], true)(UsercontentComponent); const UserSelect = Connect([NS_QUALIFICATION_STATISTICS], true)(UserSelectComponent);
export default Connect([NS_QUALIFICATION_STATISTICS], true)(UserChange); export default Connect([NS_QUALIFICATION_STATISTICS], true)(UserChange);

View File

@ -1,5 +1,5 @@
import { Connect } from "@cqsjjb/jjb-dva-runtime"; import { Connect } from "@cqsjjb/jjb-dva-runtime";
import HeaderBack from "zy-react-library/components/HeaderBack"; import Page from "zy-react-library/components/Page";
import Table from "zy-react-library/components/Table"; import Table from "zy-react-library/components/Table";
import useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery"; import useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery";
import useTable from "zy-react-library/hooks/useTable"; import useTable from "zy-react-library/hooks/useTable";
@ -10,20 +10,17 @@ function UserChange(props) {
const { tableProps } = useTable(props["projectUserChangeRecordList"], { params: { eqProjectId: query.id } }); const { tableProps } = useTable(props["projectUserChangeRecordList"], { params: { eqProjectId: query.id } });
return ( return (
<div> <Page headerTitle="项目人员变更记录">
<HeaderBack title="项目人员变更记录" /> <Table
<div style={{ padding: "0 20px 20px 20px" }}> columns={[
<Table { title: "姓名", dataIndex: "userName" },
columns={[ { title: "部门", dataIndex: "deptName" },
{ title: "姓名", dataIndex: "userName" }, { title: "操作", dataIndex: "changeType", render: (text) => { return text === 1 ? "删除" : "新增"; } },
{ title: "部门", dataIndex: "deptName" }, { title: "记录时间", dataIndex: "createTime" },
{ title: "操作", dataIndex: "changeType", render: (text) => { return text === 1 ? "删除" : "新增"; } }, ]}
{ title: "记录时间", dataIndex: "createTime" }, {...tableProps}
]} />
{...tableProps} </Page>
/>
</div>
</div>
); );
} }
export default Connect([NS_QUALIFICATION_STATISTICS], true)(UserChange); export default Connect([NS_QUALIFICATION_STATISTICS], true)(UserChange);

View File

@ -2,7 +2,7 @@ import { Connect } from "@cqsjjb/jjb-dva-runtime";
import { Form, message } from "antd"; import { Form, message } from "antd";
import { useEffect } from "react"; import { useEffect } from "react";
import FormBuilder from "zy-react-library/components/FormBuilder"; import FormBuilder from "zy-react-library/components/FormBuilder";
import HeaderBack from "zy-react-library/components/HeaderBack"; import Page from "zy-react-library/components/Page";
import DictionarySelect from "zy-react-library/components/Select/Dictionary"; import DictionarySelect from "zy-react-library/components/Select/Dictionary";
import PersonnelSelect from "zy-react-library/components/Select/Personnel/Gwj"; import PersonnelSelect from "zy-react-library/components/Select/Personnel/Gwj";
import DepartmentSelectTree from "zy-react-library/components/SelectTree/Department/Gwj"; import DepartmentSelectTree from "zy-react-library/components/SelectTree/Department/Gwj";
@ -14,7 +14,6 @@ function Add(props) {
const query = useGetUrlQuery(); const query = useGetUrlQuery();
const [form] = Form.useForm(); const [form] = Form.useForm();
const managerDept = Form.useWatch("managerDept", form); const managerDept = Form.useWatch("managerDept", form);
const supervisionDept = Form.useWatch("supervisionDept", form);
const getData = async () => { const getData = async () => {
const { data } = await props["qualificationMaintenanceInfo"]({ id: query.id }); const { data } = await props["qualificationMaintenanceInfo"]({ id: query.id });
@ -43,129 +42,126 @@ function Add(props) {
}; };
return ( return (
<div> <Page headerTitle={query.id ? "编辑" : "新增"} isShowFooter={false}>
<HeaderBack title={query.id ? "编辑" : "新增"} /> <FormBuilder
<div style={{ paddingBottom: 20 }}> form={form}
<FormBuilder values={{
form={form} status: 0,
values={{ details: [{
status: 0, dataType: undefined,
details: [{ dataTypeName: undefined,
dataType: undefined, dataName: undefined,
dataTypeName: undefined, isValidity: undefined,
dataName: undefined, }],
isValidity: undefined, }}
}], loading={props.qualificationMaintenance.qualificationMaintenanceLoading}
}} onFinish={onSubmit}
loading={props.qualificationMaintenance.qualificationMaintenanceLoading} options={[
onFinish={onSubmit} { key: "divider-basic", label: "基础信息", render: FORM_ITEM_RENDER_ENUM.DIVIDER },
options={[ { name: "qualificationsName", label: "资质名称", span: 24 },
{ key: "divider-basic", label: "基础信息", render: FORM_ITEM_RENDER_ENUM.DIVIDER }, {
{ name: "qualificationsName", label: "资质名称", span: 24 }, name: "qualificationsTypeId",
{ label: "资质类别",
name: "qualificationsTypeId", render: (
label: "资质类别", <DictionarySelect
render: ( dictValue="qualificationsType"
<DictionarySelect onGetLabel={(label) => {
dictValue="qualificationsType" form.setFieldValue("qualificationsTypeName", label);
onGetLabel={(label) => { }}
form.setFieldValue("qualificationsTypeName", label); />
}} ),
/> },
), { name: "qualificationsTypeName", label: "资质类别", onlyForLabel: true },
}, {
{ name: "qualificationsTypeName", label: "资质类别", onlyForLabel: true }, name: "stakeholderLevel",
{ label: "资质级别",
name: "stakeholderLevel", render: (
label: "资质级别", <DictionarySelect
render: ( dictValue="stakeholderLevel"
<DictionarySelect onGetLabel={(label) => {
dictValue="stakeholderLevel" form.setFieldValue("stakeholderLevelName", label);
onGetLabel={(label) => { }}
form.setFieldValue("stakeholderLevelName", label); />
}} ),
/> },
), { name: "stakeholderLevelName", label: "资质级别", onlyForLabel: true },
}, {
{ name: "stakeholderLevelName", label: "资质级别", onlyForLabel: true }, name: "managerDept",
{ label: "主管部门",
name: "managerDept", render: (
label: "主管部门", <DepartmentSelectTree
render: ( onGetLabel={(label) => {
<DepartmentSelectTree form.setFieldValue("managerDeptName", label);
onGetLabel={(label) => { }}
form.setFieldValue("managerDeptName", label); onChange={(_, __, extra) => {
}} form.setFieldValue("managerUser", []);
onChange={(_, __, extra) => { form.setFieldValue("managerUserName", []);
form.setFieldValue("managerUser", []); form.setFieldValue("corpId", extra.triggerNode.props.corpinfoId);
form.setFieldValue("managerUserName", []); }}
form.setFieldValue("corpId", extra.triggerNode.props.corpinfoId); />
}} ),
/> },
), { name: "managerDeptName", label: "主管部门名称", onlyForLabel: true },
}, { name: "corpId", label: "主管部门所属公司", onlyForLabel: true },
{ name: "managerDeptName", label: "主管部门名称", onlyForLabel: true }, {
{ name: "corpId", label: "主管部门所属公司", onlyForLabel: true }, name: "managerUser",
{ label: "主管人员",
name: "managerUser", render: (
label: "主管人员", <PersonnelSelect
render: ( params={{ departmentId: managerDept }}
<PersonnelSelect mode="multiple"
params={{ departmentId: managerDept }} onGetLabel={(label) => {
mode="multiple" form.setFieldValue("managerUserName", label);
onGetLabel={(label) => { }}
form.setFieldValue("managerUserName", label); />
}} ),
/> },
), { name: "managerUserName", label: "主管人员名称", onlyForLabel: true },
}, {
{ name: "managerUserName", label: "主管人员名称", onlyForLabel: true }, name: "status",
{ label: "是否启用",
name: "status", render: FORM_ITEM_RENDER_ENUM.RADIO,
label: "是否启用", items: [{ name: "是", bianma: 0 }, { name: "否", bianma: 1 }],
render: FORM_ITEM_RENDER_ENUM.RADIO, },
items: [{ name: "是", bianma: 0 }, { name: "否", bianma: 1 }],
},
{ key: "divider-detail", label: "资料信息", render: FORM_ITEM_RENDER_ENUM.DIVIDER }, { key: "divider-detail", label: "资料信息", render: FORM_ITEM_RENDER_ENUM.DIVIDER },
{ {
name: "details", name: "details",
span: 24, span: 24,
render: FORM_ITEM_RENDER_ENUM.FORM_LIST, render: FORM_ITEM_RENDER_ENUM.FORM_LIST,
formListUniqueProps: { formListUniqueProps: {
options: field => ( options: field => (
[ [
{ {
label: "资料属性", label: "资料属性",
name: [field.name, "dataType"], name: [field.name, "dataType"],
span: 8, span: 8,
render: ( render: (
<DictionarySelect <DictionarySelect
dictValue="dataType" dictValue="dataType"
onGetLabel={(label) => { onGetLabel={(label) => {
form.setFieldValue(["details", field.name, "dataTypeName"], label); form.setFieldValue(["details", field.name, "dataTypeName"], label);
}} }}
/> />
), ),
}, },
{ label: "资料属性名称", name: [field.name, "dataTypeName"], span: 8, onlyForLabel: true }, { label: "资料属性名称", name: [field.name, "dataTypeName"], span: 8, onlyForLabel: true },
{ label: "资料名称", name: [field.name, "dataName"], span: 8 }, { label: "资料名称", name: [field.name, "dataName"], span: 8 },
{ {
label: "是否涉及有效时间", label: "是否涉及有效时间",
name: [field.name, "isValidity"], name: [field.name, "isValidity"],
span: 8, span: 8,
render: FORM_ITEM_RENDER_ENUM.RADIO, render: FORM_ITEM_RENDER_ENUM.RADIO,
items: [{ bianma: 0, name: "是" }, { bianma: 1, name: "否" }], items: [{ bianma: 0, name: "是" }, { bianma: 1, name: "否" }],
labelCol: { span: 6 }, labelCol: { span: 6 },
}, },
] ]
), ),
},
}, },
]} },
/> ]}
</div> />
</div> </Page>
); );
} }

View File

@ -2,7 +2,7 @@ import { Connect } from "@cqsjjb/jjb-dva-runtime";
import { Form, message } from "antd"; import { Form, message } from "antd";
import { useEffect } from "react"; import { useEffect } from "react";
import FormBuilder from "zy-react-library/components/FormBuilder"; import FormBuilder from "zy-react-library/components/FormBuilder";
import HeaderBack from "zy-react-library/components/HeaderBack"; import Page from "zy-react-library/components/Page";
import DictionarySelect from "zy-react-library/components/Select/Dictionary"; import DictionarySelect from "zy-react-library/components/Select/Dictionary";
import { FORM_ITEM_RENDER_ENUM } from "zy-react-library/enum/formItemRender"; import { FORM_ITEM_RENDER_ENUM } from "zy-react-library/enum/formItemRender";
import useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery"; import useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery";
@ -29,61 +29,58 @@ function AddQualifications(props) {
}; };
return ( return (
<div> <Page headerTitle="添加资质" isShowFooter={false}>
<HeaderBack title="添加资质" /> <FormBuilder
<div style={{ paddingBottom: 20 }}> form={form}
<FormBuilder values={{
form={form} qualificationsDetailAddCmdList: [{
values={{ dataType: undefined,
qualificationsDetailAddCmdList: [{ dataTypeName: undefined,
dataType: undefined, dataName: undefined,
dataTypeName: undefined, isValidity: undefined,
dataName: undefined, }],
isValidity: undefined, }}
}], loading={props.qualificationMaintenance.qualificationMaintenanceLoading}
}} onFinish={onSubmit}
loading={props.qualificationMaintenance.qualificationMaintenanceLoading} span={24}
onFinish={onSubmit} labelCol={{ span: 6 }}
span={24} options={[
labelCol={{ span: 6 }} {
options={[ name: "qualificationsDetailAddCmdList",
{ span: 24,
name: "qualificationsDetailAddCmdList", render: FORM_ITEM_RENDER_ENUM.FORM_LIST,
span: 24, formListUniqueProps: {
render: FORM_ITEM_RENDER_ENUM.FORM_LIST, options: field => (
formListUniqueProps: { [
options: field => ( {
[ label: "资料属性",
{ name: [field.name, "dataType"],
label: "资料属性", span: 8,
name: [field.name, "dataType"], render: (
span: 8, <DictionarySelect
render: ( dictValue="dataType"
<DictionarySelect onGetLabel={(label) => {
dictValue="dataType" form.setFieldValue(["qualificationsDetailAddCmdList", field.name, "dataTypeName"], label);
onGetLabel={(label) => { }}
form.setFieldValue(["qualificationsDetailAddCmdList", field.name, "dataTypeName"], label); />
}} ),
/> },
), { label: "资料属性名称", name: [field.name, "dataTypeName"], span: 8, onlyForLabel: true },
}, { label: "资料名称", name: [field.name, "dataName"], span: 8 },
{ label: "资料属性名称", name: [field.name, "dataTypeName"], span: 8, onlyForLabel: true }, {
{ label: "资料名称", name: [field.name, "dataName"], span: 8 }, label: "是否涉及有效时间",
{ name: [field.name, "isValidity"],
label: "是否涉及有效时间", span: 8,
name: [field.name, "isValidity"], render: FORM_ITEM_RENDER_ENUM.RADIO,
span: 8, items: [{ bianma: 0, name: "是" }, { bianma: 1, name: "否" }],
render: FORM_ITEM_RENDER_ENUM.RADIO, },
items: [{ bianma: 0, name: "是" }, { bianma: 1, name: "否" }], ]
}, ),
]
),
},
}, },
]} },
/> ]}
</div> />
</div> </Page>
); );
} }

View File

@ -1,7 +1,7 @@
import { Connect } from "@cqsjjb/jjb-dva-runtime"; import { Connect } from "@cqsjjb/jjb-dva-runtime";
import { Button } from "antd"; import { Button } from "antd";
import { useState } from "react"; import { useState } from "react";
import HeaderBack from "zy-react-library/components/HeaderBack"; import Page from "zy-react-library/components/Page";
import Table from "zy-react-library/components/Table"; import Table from "zy-react-library/components/Table";
import useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery"; import useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery";
import useTable from "zy-react-library/hooks/useTable"; import useTable from "zy-react-library/hooks/useTable";
@ -17,39 +17,37 @@ function ChangeLogList(props) {
}); });
return ( return (
<div> <Page headerTitle="变更记录">
<HeaderBack title="变更记录" /> <Table
<div style={{ padding: 20 }}> rowSelection={{
<Table preserveSelectedRowKeys: true,
rowSelection={{ selectedRowKeys,
preserveSelectedRowKeys: true, onChange: (selectedRowKeys) => {
selectedRowKeys, if (selectedRowKeys.length <= 2)
onChange: (selectedRowKeys) => { setSelectedRowKeys(selectedRowKeys);
if (selectedRowKeys.length <= 2) },
setSelectedRowKeys(selectedRowKeys); getCheckboxProps: record => ({ disabled: selectedRowKeys.length >= 2 && !selectedRowKeys.includes(record.id) }),
}, hideSelectAll: true,
getCheckboxProps: record => ({ disabled: selectedRowKeys.length >= 2 && !selectedRowKeys.includes(record.id) }), }}
hideSelectAll: true, toolBarRender={() => (
}} <Button
toolBarRender={() => ( type="primary"
<Button ghost
type="primary" disabled={selectedRowKeys.length !== 2}
disabled={selectedRowKeys.length !== 2} onClick={() => {
onClick={() => { props.history.push(`./changeLogView?ids=${selectedRowKeys.join(",")}`);
props.history.push(`./changeLogView?ids=${selectedRowKeys.join(",")}`); }}
}} >
> 版本对比
版本对比 </Button>
</Button> )}
)} columns={[
columns={[ { title: "操作时间", dataIndex: "createTime" },
{ title: "操作时间", dataIndex: "createTime" }, { title: "操作人", dataIndex: "createName" },
{ title: "操作人", dataIndex: "createName" }, ]}
]} {...tableProps}
{...tableProps} />
/> </Page>
</div>
</div>
); );
} }

View File

@ -1,7 +1,7 @@
import { Connect } from "@cqsjjb/jjb-dva-runtime"; import { Connect } from "@cqsjjb/jjb-dva-runtime";
import { Descriptions, Divider } from "antd"; import { Descriptions, Divider } from "antd";
import { useEffect, useState } from "react"; import { useEffect, useState } from "react";
import HeaderBack from "zy-react-library/components/HeaderBack"; import Page from "zy-react-library/components/Page";
import Table from "zy-react-library/components/Table"; import Table from "zy-react-library/components/Table";
import useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery"; import useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery";
import { getLabelName } from "zy-react-library/utils"; import { getLabelName } from "zy-react-library/utils";
@ -12,7 +12,6 @@ function ChangeLogView(props) {
const { ids } = useGetUrlQuery(); const { ids } = useGetUrlQuery();
const getData = async () => { const getData = async () => {
const { data } = await props["getQualificationMaintenanceChangeLogByIds"]({ ids }); const { data } = await props["getQualificationMaintenanceChangeLogByIds"]({ ids });
console.log(data);
setInfo(data); setInfo(data);
}; };
@ -21,67 +20,64 @@ function ChangeLogView(props) {
}, []); }, []);
return ( return (
<div> <Page headerTitle="版本对比" contentPadding="0 20px 20px 20px">
<HeaderBack title="版本对比" /> <div style={{ display: "flex" }}>
<div style={{ padding: "0 20px 20px 20px" }}> {
<div style={{ display: "flex" }}> info.map((item, index) => (
{ <div
info.map((item, index) => ( key={item.id}
<div style={{
key={item.id} flex: 1,
style={{ borderRight: index === 0 ? "1px solid #ccc" : "",
flex: 1, paddingRight: index === 0 ? 20 : 0,
borderRight: index === 0 ? "1px solid #ccc" : "", paddingLeft: index === 0 ? 0 : 20,
paddingRight: index === 0 ? 20 : 0, }}
paddingLeft: index === 0 ? 0 : 20, >
}} <Divider orientation="left">基础信息</Divider>
> <Descriptions
<Divider orientation="left">基础信息</Divider> bordered
<Descriptions column={1}
bordered styles={{ label: { width: 200 } }}
column={1} items={[
styles={{ label: { width: 200 } }} { label: "操作时间", children: item.createTime },
items={[ { label: "操作人员", children: item.createName },
{ label: "操作时间", children: item.createTime }, { label: "资质名称", children: item.info.qualificationsName },
{ label: "操作人员", children: item.createName }, { label: "资质类别", children: item.info.qualificationsTypeName },
{ label: "资质名称", children: item.info.qualificationsName }, { label: "资质等级", children: item.info.stakeholderLevelName },
{ label: "资质类别", children: item.info.qualificationsTypeName }, { label: "主管部门", children: item.info.managerDeptName },
{ label: "资质等级", children: item.info.stakeholderLevelName }, {
{ label: "主管部门", children: item.info.managerDeptName }, label: "是否启用",
{ children: getLabelName({
label: "是否启用", list: [{ name: "是", bianma: 0 }, { name: "否", bianma: 1 }],
children: getLabelName({ status: item.info.status,
list: [{ name: "是", bianma: 0 }, { name: "否", bianma: 1 }], }),
status: item.info.status, },
}), ]}
}, />
]} <Divider orientation="left">资料信息</Divider>
/> <Table
<Divider orientation="left">资料信息</Divider> options={false}
<Table disabledResizer={true}
options={false} pagination={false}
disabledResizer={true} dataSource={item.info.details || []}
pagination={false} columns={[
dataSource={item.info.details || []} { title: "资料属性", dataIndex: "dataTypeName" },
columns={[ { title: "资料名称", dataIndex: "dataName" },
{ title: "资料属性", dataIndex: "dataTypeName" }, {
{ title: "资料名称", dataIndex: "dataName" }, title: "是否涉及时效",
{ dataIndex: "isValidity",
title: "是否涉及时效", render: (_, record) => getLabelName({
dataIndex: "isValidity", list: [{ name: "是", bianma: 0 }, { name: "否", bianma: 1 }],
render: (_, record) => getLabelName({ status: record.isValidity,
list: [{ name: "是", bianma: 0 }, { name: "否", bianma: 1 }], }),
status: record.isValidity, },
}), ]}
}, />
]} </div>
/> ))
</div> }
))
}
</div>
</div> </div>
</div> </Page>
); );
} }

View File

@ -2,6 +2,7 @@ import { Permission } from "@cqsjjb/jjb-common-decorator/permission";
import { Connect } from "@cqsjjb/jjb-dva-runtime"; import { Connect } from "@cqsjjb/jjb-dva-runtime";
import { Button, Form, message, Modal, Space } from "antd"; import { Button, Form, message, Modal, Space } from "antd";
import AddIcon from "zy-react-library/components/Icon/AddIcon"; import AddIcon from "zy-react-library/components/Icon/AddIcon";
import Page from "zy-react-library/components/Page";
import Search from "zy-react-library/components/Search"; import Search from "zy-react-library/components/Search";
import DictionarySelect from "zy-react-library/components/Select/Dictionary"; import DictionarySelect from "zy-react-library/components/Select/Dictionary";
import Table from "zy-react-library/components/Table"; import Table from "zy-react-library/components/Table";
@ -30,7 +31,7 @@ function List(props) {
}; };
return ( return (
<div style={{ padding: 20 }}> <Page isShowAllAction={false}>
<Search <Search
labelCol={{ span: 8 }} labelCol={{ span: 8 }}
options={[ options={[
@ -105,7 +106,7 @@ function List(props) {
]} ]}
{...tableProps} {...tableProps}
/> />
</div> </Page>
); );
} }

View File

@ -1,6 +1,6 @@
import { Connect } from "@cqsjjb/jjb-dva-runtime"; import { Connect } from "@cqsjjb/jjb-dva-runtime";
import { Button, Space } from "antd"; import { Button, Space, Tooltip } from "antd";
import HeaderBack from "zy-react-library/components/HeaderBack"; import Page from "zy-react-library/components/Page";
import Table from "zy-react-library/components/Table"; import Table from "zy-react-library/components/Table";
import useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery"; import useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery";
import useTable from "zy-react-library/hooks/useTable"; import useTable from "zy-react-library/hooks/useTable";
@ -11,77 +11,85 @@ function History(props) {
const { tableProps } = useTable(props["qualificationRecordsHistoryList"], { params: { id: query.id } }); const { tableProps } = useTable(props["qualificationRecordsHistoryList"], { params: { id: query.id } });
return ( return (
<div> <Page headerTitle="过往资料">
<HeaderBack title="过往资料" /> <Table
<div style={{ padding: "0 20px 20px 20px" }}> columns={[
<Table { title: "相关方名称", dataIndex: "corpName" },
columns={[ { title: "资质名称", dataIndex: "qualificationsName" },
{ title: "相关方名称", dataIndex: "corpName" }, { title: "资质类别", dataIndex: "qualificationsTypeName" },
{ title: "资质名称", dataIndex: "qualificationsName" }, { title: "资质级别", dataIndex: "stakeholderLevelName" },
{ title: "资质类别", dataIndex: "qualificationsTypeName" }, { title: "材料数", dataIndex: "materialNum" },
{ title: "资质级别", dataIndex: "stakeholderLevelName" }, {
{ title: "材料数", dataIndex: "materialNum" }, title: "资质状态",
{ dataIndex: "qualificationsStatus",
title: "资质状态", dataIndex: "qualificationsStatus", render: (_, record) => ( render: (_, record) => (
<div>
{record.qualificationsStatus === 0 && "正常"}
{record.qualificationsStatus === 1 && "待完善"}
{record.qualificationsStatus === 2 && (
<Tooltip
overlayStyle={{ width: 'auto', maxWidth: '700px', whiteSpace: 'normal', wordBreak: 'break-word' }}
title={
record.expireList ? (
<div style={{ width: '100%' }}>
{record.expireList.map((item, index) => (
<div key={index}>
{item.dataName} 已于 {item.qualificationsTermEnd} 过期
</div>
))}
</div>
) : "部分资料已过期"
}
>
<span style={{ display: 'inline-flex', alignItems: 'center' }}>
存在异常 <WarningOutlined style={{ color: '#faad14', marginLeft: 4 }} />
</span>
</Tooltip>
)}
{record.qualificationsStatus === 3 && "资质过期"}
</div>
)
},
{ title: "当前状态", dataIndex: "auditProcess", render: (_, record) => (
<div> <div>
{record.auditProcess === "100" && "集团单位"} {record.qualificationsStatus === 0 && "正常"}
{record.status === 100 && "待审核"} {record.qualificationsStatus === 1 && "待完善"}
{record.status === 200 && "审核中"} {record.qualificationsStatus === 2 && (
{record.status === 300 && "已驳回"} <Tooltip
{record.status === 400 && "已通过"} overlayStyle={{ width: "auto", maxWidth: "700px", whiteSpace: "normal", wordBreak: "break-word" }}
</div> title={
) }, record.expireList
{ title: "审核时间", dataIndex: "auditTime" }, ? (
{ <div style={{ width: "100%" }}>
title: "操作", {record.expireList.map((item, index) => (
fixed: "right", <div key={index}>
width: 100, {item.dataName}
render: (_, record) => ( {" "}
<Space> 已于
<Button {item.qualificationsTermEnd}
type="link" {" "}
onClick={() => { 过期
props.history.push(`../ViewInfo?id=${record.id}`); </div>
}} ))}
</div>
)
: "部分资料已过期"
}
> >
查看 <span style={{ display: "inline-flex", alignItems: "center" }}>
</Button> 存在异常
</Space> {" "}
), <WarningOutlined style={{ color: "#faad14", marginLeft: 4 }} />
}, </span>
]} </Tooltip>
{...tableProps} )}
/> {record.qualificationsStatus === 3 && "资质过期"}
</div> </div>
</div> ),
},
{ title: "当前状态", dataIndex: "auditProcess", render: (_, record) => (
<div>
{record.auditProcess === "100" && "集团单位"}
{record.status === 100 && "待审核"}
{record.status === 200 && "审核中"}
{record.status === 300 && "已驳回"}
{record.status === 400 && "已通过"}
</div>
) },
{ title: "审核时间", dataIndex: "auditTime" },
{
title: "操作",
fixed: "right",
width: 100,
render: (_, record) => (
<Space>
<Button
type="link"
onClick={() => {
props.history.push(`../ViewInfo?id=${record.id}`);
}}
>
查看
</Button>
</Space>
),
},
]}
{...tableProps}
/>
</Page>
); );
} }

View File

@ -2,6 +2,7 @@ import { WarningOutlined } from "@ant-design/icons";
import { Permission } from "@cqsjjb/jjb-common-decorator/permission"; import { Permission } from "@cqsjjb/jjb-common-decorator/permission";
import { Connect } from "@cqsjjb/jjb-dva-runtime"; import { Connect } from "@cqsjjb/jjb-dva-runtime";
import { Button, Form, Space, Tooltip } from "antd"; import { Button, Form, Space, Tooltip } from "antd";
import Page from "zy-react-library/components/Page";
import Search from "zy-react-library/components/Search"; import Search from "zy-react-library/components/Search";
import DictionarySelect from "zy-react-library/components/Select/Dictionary"; import DictionarySelect from "zy-react-library/components/Select/Dictionary";
import Table from "zy-react-library/components/Table"; import Table from "zy-react-library/components/Table";
@ -23,7 +24,7 @@ function List(props) {
}); });
return ( return (
<div style={{ padding: 20 }}> <Page isShowAllAction={false}>
<Search <Search
labelCol={{ span: 8 }} labelCol={{ span: 8 }}
options={[ options={[
@ -132,7 +133,7 @@ function List(props) {
]} ]}
{...tableProps} {...tableProps}
/> />
</div> </Page>
); );
} }

View File

@ -1,6 +1,7 @@
import { Permission } from "@cqsjjb/jjb-common-decorator/permission"; import { Permission } from "@cqsjjb/jjb-common-decorator/permission";
import { Connect } from "@cqsjjb/jjb-dva-runtime"; import { Connect } from "@cqsjjb/jjb-dva-runtime";
import { Button, Form, Space } from "antd"; import { Button, Form, Space } from "antd";
import Page from "zy-react-library/components/Page";
import Search from "zy-react-library/components/Search"; import Search from "zy-react-library/components/Search";
import DictionarySelect from "zy-react-library/components/Select/Dictionary"; import DictionarySelect from "zy-react-library/components/Select/Dictionary";
import Table from "zy-react-library/components/Table"; import Table from "zy-react-library/components/Table";
@ -14,7 +15,7 @@ function List(props) {
}); });
return ( return (
<div style={{ padding: 20 }}> <Page isShowAllAction={false}>
<Search <Search
labelCol={{ span: 8 }} labelCol={{ span: 8 }}
options={[ options={[
@ -103,7 +104,7 @@ function List(props) {
]} ]}
{...tableProps} {...tableProps}
/> />
</div> </Page>
); );
} }

View File

@ -1,5 +1,5 @@
import { Connect } from "@cqsjjb/jjb-dva-runtime"; import { Connect } from "@cqsjjb/jjb-dva-runtime";
import { Button, Form, message, Modal, Space } from "antd"; import { Button, Form, message, Modal } from "antd";
import { useState } from "react"; import { useState } from "react";
import FormBuilder from "zy-react-library/components/FormBuilder"; import FormBuilder from "zy-react-library/components/FormBuilder";
import { FORM_ITEM_RENDER_ENUM } from "zy-react-library/enum/formItemRender"; import { FORM_ITEM_RENDER_ENUM } from "zy-react-library/enum/formItemRender";
@ -25,9 +25,11 @@ function Review(props) {
return ( return (
<div> <div>
<ViewInfo onGetData={info => setInfo(info)} title="审核"> <ViewInfo
<div style={{ textAlign: "center", marginTop: 10 }}> onGetData={info => setInfo(info)}
<Space> title="审核"
extraActionButtons={(
<>
<Button <Button
type="primary" type="primary"
onClick={() => { onClick={() => {
@ -50,9 +52,9 @@ function Review(props) {
> >
驳回 驳回
</Button> </Button>
</Space> </>
</div> )}
</ViewInfo> />
{rejectModalOpen && <RejectModal onCancel={() => setRejectModalOpen(false)} id={query.id} />} {rejectModalOpen && <RejectModal onCancel={() => setRejectModalOpen(false)} id={query.id} />}
{passModalOpen && <PassModal onCancel={() => setPassModalOpen(false)} id={query.id} />} {passModalOpen && <PassModal onCancel={() => setPassModalOpen(false)} id={query.id} />}
</div> </div>
@ -73,18 +75,20 @@ const RejectModalComponent = (props) => {
return ( return (
<Modal <Modal
title="驳回" title="驳回"
width={1000} width={600}
open open
maskClosable={false} maskClosable={false}
onCancel={props.onCancel} onCancel={props.onCancel}
onOk={form.submit} onOk={form.submit}
confirmLoading={props.qualificationReview.userQualificationLoading}
> >
<FormBuilder <FormBuilder
form={form} form={form}
span={24} span={24}
labelCol={{ span: 8 }} labelCol={{ span: 10 }}
showActionButtons={false} showActionButtons={false}
onFinish={onSubmit} onFinish={onSubmit}
loading={props.qualificationReview.userQualificationLoading}
options={[ options={[
{ name: "auditRemarks", label: "驳回原因", render: FORM_ITEM_RENDER_ENUM.TEXTAREA }, { name: "auditRemarks", label: "驳回原因", render: FORM_ITEM_RENDER_ENUM.TEXTAREA },
]} ]}
@ -107,18 +111,20 @@ const PassModalComponent = (props) => {
return ( return (
<Modal <Modal
title="通过" title="通过"
width={1000} width={600}
open open
maskClosable={false} maskClosable={false}
onCancel={props.onCancel} onCancel={props.onCancel}
onOk={form.submit} onOk={form.submit}
confirmLoading={props.qualificationReview.userQualificationLoading}
> >
<FormBuilder <FormBuilder
form={form} form={form}
values={{ isLongTerm: 1 }} values={{ isLongTerm: 1 }}
labelCol={{ span: 8 }} labelCol={{ span: 12 }}
showActionButtons={false} showActionButtons={false}
onFinish={onSubmit} onFinish={onSubmit}
loading={props.qualificationReview.userQualificationLoading}
options={[ options={[
{ {
name: "isLongTerm", name: "isLongTerm",

View File

@ -1,6 +1,7 @@
import { Connect } from "@cqsjjb/jjb-dva-runtime"; import { Connect } from "@cqsjjb/jjb-dva-runtime";
import { Descriptions } from "antd"; import { Descriptions } from "antd";
import { useEffect, useState } from "react"; import { useEffect, useState } from "react";
import Page from "zy-react-library/components/Page";
import { NS_QUALIFICATION_STATISTICS } from "~/enumerate/namespace"; import { NS_QUALIFICATION_STATISTICS } from "~/enumerate/namespace";
function Statistics(props) { function Statistics(props) {
@ -15,7 +16,7 @@ function Statistics(props) {
}, []); }, []);
return ( return (
<div style={{ padding: 20 }}> <Page isShowAllAction={false}>
<Descriptions <Descriptions
column={1} column={1}
bordered bordered
@ -34,7 +35,7 @@ function Statistics(props) {
{ label: "其他类相关方数量", children: info.otherStakeholders }, { label: "其他类相关方数量", children: info.otherStakeholders },
]} ]}
/> />
</div> </Page>
); );
} }

View File

@ -1,7 +1,7 @@
import { Connect } from "@cqsjjb/jjb-dva-runtime"; import { Connect } from "@cqsjjb/jjb-dva-runtime";
import { Button, Descriptions, Divider, Spin } from "antd"; import { Button, Descriptions, Divider, Spin } from "antd";
import { Fragment, useEffect, useState } from "react"; import { Fragment, useEffect, useState } from "react";
import HeaderBack from "zy-react-library/components/HeaderBack"; import Page from "zy-react-library/components/Page";
import Table from "zy-react-library/components/Table"; import Table from "zy-react-library/components/Table";
import TooltipPreviewImg from "zy-react-library/components/TooltipPreviewImg"; import TooltipPreviewImg from "zy-react-library/components/TooltipPreviewImg";
import { UPLOAD_FILE_TYPE_ENUM } from "zy-react-library/enum/uploadFile/gwj"; import { UPLOAD_FILE_TYPE_ENUM } from "zy-react-library/enum/uploadFile/gwj";
@ -34,7 +34,16 @@ function ViewInfo(props) {
const [viewQualificationDetailsModalOpen, setViewQualificationDetailsModalOpen] = useState(false); const [viewQualificationDetailsModalOpen, setViewQualificationDetailsModalOpen] = useState(false);
const [viewQualificationDetailsModalData, setViewQualificationDetailsModalData] = useState({}); const [viewQualificationDetailsModalData, setViewQualificationDetailsModalData] = useState({});
const getTypeGroup = async (data) => {
const typeMap = new Map();
for (let i = 0; i < data.specialList.length; i++) {
const { dataType, dataTypeName } = data.specialList[i];
if (dataType && dataTypeName) {
typeMap.set(dataType, { dataType, dataTypeName });
}
}
setTypeGroup(Array.from(typeMap.values()));
};
const getData = async () => { const getData = async () => {
if (!query.id) if (!query.id)
return; return;
@ -61,165 +70,152 @@ function ViewInfo(props) {
corpInfoData.licenseFile = licenseFile; corpInfoData.licenseFile = licenseFile;
setCorpInfoData(corpInfoData); setCorpInfoData(corpInfoData);
}; };
const getTypeGroup = async (data) => {
const typeMap = new Map();
for (let i = 0; i < data.specialList.length; i++) {
const { dataType, dataTypeName } = data.specialList[i];
if (dataType && dataTypeName) {
typeMap.set(dataType, { dataType, dataTypeName });
}
}
setTypeGroup(Array.from(typeMap.values()));
}
useEffect(() => { useEffect(() => {
getData(); getData();
}, []); }, []);
return ( return (
<> <Page headerTitle={props.title || "查看"} contentPadding="0 20px 20px 20px" extraActionButtons={props.extraActionButtons}>
<HeaderBack title={props.title || "查看"} /> <div className="qualification-view">
<div style={{ padding: "0 20px 20px 20px" }}> <div>
<div className="qualification-view"> <Divider orientation="left">流程信息</Divider>
<div> <div className="flows-container">
<Divider orientation="left">流程信息</Divider> <div className="flows">
<div className="flows-container"> {
<div className="flows"> info.processFlow.map((item, index) => (
{ <Fragment key={index}>
info.processFlow.map((item, index) => ( <div className="flow">
<Fragment key={index}> <div
<div className="flow"> className={`status ${item.auditStatus === 400 ? "blue" : ""} ${item.auditStatus === 200 || item.auditStatus === 100 ? "green" : ""} ${item.auditStatus === 300 ? "red" : ""}`}
<div >
className={`status ${item.auditStatus === 400 ? "blue" : ""} ${item.auditStatus === 200 || item.auditStatus === 100 ? "green" : ""} ${item.auditStatus === 300 ? "red" : ""}`} {item.auditStatus === 400 && "通过"}
> {item.auditStatus === 200 && "审核中"}
{item.auditStatus === 400 && "通过"} {item.auditStatus === 100 && "待审核"}
{item.auditStatus === 200 && "审核中"} {item.auditStatus === 300 && "已驳回"}
{item.auditStatus === 100 && "待审核"}
{item.auditStatus === 300 && "已驳回"}
</div>
<div className="info">{item.auditUserName}</div>
<div className="info">{item.auditCorpDeptName}</div>
<div className="info">{item.auditCorpName}</div>
{
item.auditRemarks && (
<div className="info">
驳回原因
{item.auditRemarks}
</div>
)
}
</div> </div>
{index !== info.processFlow.length - 1 && <div className="line" />} <div className="info">{item.auditUserName}</div>
</Fragment> <div className="info">{item.auditCorpDeptName}</div>
)) <div className="info">{item.auditCorpName}</div>
} {
</div> item.auditRemarks && (
<div className="info">
驳回原因
{item.auditRemarks}
</div>
)
}
</div>
{index !== info.processFlow.length - 1 && <div className="line" />}
</Fragment>
))
}
</div> </div>
</div> </div>
<div>
<Divider orientation="left">审核信息</Divider>
<Spin spinning={props.qualificationReview.qualificationReviewLoading}>
<Descriptions
column={2}
bordered
styles={{ label: { width: 200 }, content: { width: 500 } }}
items={[
{ label: "相关方名称", children: info.corpName },
{ label: "所属集团单位", children: info.groupUnitName },
{ label: "资质名称", children: info.qualificationsName },
{ label: "资质类别", children: info.qualificationsTypeName },
{ label: "资质级别", children: info.stakeholderLevelName },
{ label: "材料数", children: info.materialNum },
{ label: "备注", children: info.remarks },
]}
/>
</Spin>
</div>
<div>
<Divider orientation="left">基础信息</Divider>
<Spin spinning={props.qualificationReview.enterpriseLoading || getFileLoading}>
<Descriptions
column={2}
bordered
styles={{ label: { width: 200 }, content: { width: 500 } }}
items={[
{ label: "公司名称", children: corpInfoData.corpName },
{ label: "企业状态", children: corpInfoData.corpStateName },
{ label: "开户人", children: corpInfoData.createName },
{ label: "统一社会信用代码", children: corpInfoData.code },
{ label: "属地", children: corpInfoData.cityName },
{
label: "所属行业",
children: [corpInfoData.corpTypeName, corpInfoData.corpType2Name, corpInfoData.corpType3Name, corpInfoData.corpType4Name].filter(Boolean).join("/"),
},
{ label: "单位经营地址", children: corpInfoData.addressBusiness },
{ label: "企业规模", children: corpInfoData.scaleName },
{ label: "法定代表人姓名", children: corpInfoData.lrName },
{ label: "法定代表人手机号", children: corpInfoData.lrMobile },
{ label: "主要负责人姓名", children: corpInfoData.contacts },
{ label: "主要负责人手机号", children: corpInfoData.contactsPhone },
{ label: "成立日期", children: corpInfoData.createDate },
{ label: "职工人数(人)", children: corpInfoData.employees },
{ label: "资产总额(万元)", children: corpInfoData.totalAssets },
{ label: "注册资金(万元)", children: corpInfoData.regcapital },
{
label: "企业类型",
children: getLabelName({ status: corpInfoData.type, list: ENTERPRISE_TYPE }),
},
{ label: "营业执照", children: <TooltipPreviewImg files={corpInfoData.licenseFile} /> },
{ label: "营业执照有效期", children: `${corpInfoData.licenseStart}${corpInfoData.licenseEnd}` },
]}
/>
</Spin>
</div>
{typeGroup.map((item) => (
<div key={item.dataType}>
<Divider orientation="left">{item.dataTypeName}</Divider>
<Spin spinning={props.qualificationReview.qualificationReviewLoading}>
<Table
options={false}
pagination={false}
disabledResizer={true}
dataSource={info.specialList.filter((i) => i.dataType === item.dataType) || []}
columns={[
{ title: "材料名称", dataIndex: "dataName" },
{ title: "上传时间", dataIndex: "uploadedTime" },
{
title: "时效性",
dataIndex: "qualificationsTermStart",
render: (_, record) => record.qualificationsTermStart ? `${record.qualificationsTermStart}${record.qualificationsTermEnd}` : "-",
},
{
title: "操作",
render: (_, record) => (
<Button
type="link"
onClick={() => {
setViewQualificationDetailsModalOpen(true);
setViewQualificationDetailsModalData(record);
}}
>
查看
</Button>
),
},
]}
/>
</Spin>
</div>
))}
</div> </div>
{viewQualificationDetailsModalOpen <div>
&& ( <Divider orientation="left">审核信息</Divider>
<ViewQualificationDetailsModal <Spin spinning={props.qualificationReview.qualificationReviewLoading}>
onCancel={() => setViewQualificationDetailsModalOpen(false)} <Descriptions
data={viewQualificationDetailsModalData} column={2}
bordered
styles={{ label: { width: 200 }, content: { width: 500 } }}
items={[
{ label: "相关方名称", children: info.corpName },
{ label: "所属集团单位", children: info.groupUnitName },
{ label: "资质名称", children: info.qualificationsName },
{ label: "资质类别", children: info.qualificationsTypeName },
{ label: "资质级别", children: info.stakeholderLevelName },
{ label: "材料数", children: info.materialNum },
{ label: "备注", children: info.remarks },
]}
/> />
)}
{props.children} </Spin>
</div>
<div>
<Divider orientation="left">基础信息</Divider>
<Spin spinning={props.qualificationReview.enterpriseLoading || getFileLoading}>
<Descriptions
column={2}
bordered
styles={{ label: { width: 200 }, content: { width: 500 } }}
items={[
{ label: "公司名称", children: corpInfoData.corpName },
{ label: "企业状态", children: corpInfoData.corpStateName },
{ label: "开户人", children: corpInfoData.createName },
{ label: "统一社会信用代码", children: corpInfoData.code },
{ label: "属地", children: corpInfoData.cityName },
{
label: "所属行业",
children: [corpInfoData.corpTypeName, corpInfoData.corpType2Name, corpInfoData.corpType3Name, corpInfoData.corpType4Name].filter(Boolean).join("/"),
},
{ label: "单位经营地址", children: corpInfoData.addressBusiness },
{ label: "企业规模", children: corpInfoData.scaleName },
{ label: "法定代表人姓名", children: corpInfoData.lrName },
{ label: "法定代表人手机号", children: corpInfoData.lrMobile },
{ label: "主要负责人姓名", children: corpInfoData.contacts },
{ label: "主要负责人手机号", children: corpInfoData.contactsPhone },
{ label: "成立日期", children: corpInfoData.createDate },
{ label: "职工人数(人)", children: corpInfoData.employees },
{ label: "资产总额(万元)", children: corpInfoData.totalAssets },
{ label: "注册资金(万元)", children: corpInfoData.regcapital },
{
label: "企业类型",
children: getLabelName({ status: corpInfoData.type, list: ENTERPRISE_TYPE }),
},
{ label: "营业执照", children: <TooltipPreviewImg files={corpInfoData.licenseFile} /> },
{ label: "营业执照有效期", children: `${corpInfoData.licenseStart}${corpInfoData.licenseEnd}` },
]}
/>
</Spin>
</div>
{typeGroup.map(item => (
<div key={item.dataType}>
<Divider orientation="left">{item.dataTypeName}</Divider>
<Spin spinning={props.qualificationReview.qualificationReviewLoading}>
<Table
options={false}
pagination={false}
disabledResizer={true}
dataSource={info.specialList.filter(i => i.dataType === item.dataType) || []}
columns={[
{ title: "材料名称", dataIndex: "dataName" },
{ title: "上传时间", dataIndex: "uploadedTime" },
{
title: "时效性",
dataIndex: "qualificationsTermStart",
render: (_, record) => record.qualificationsTermStart ? `${record.qualificationsTermStart}${record.qualificationsTermEnd}` : "-",
},
{
title: "操作",
render: (_, record) => (
<Button
type="link"
onClick={() => {
setViewQualificationDetailsModalOpen(true);
setViewQualificationDetailsModalData(record);
}}
>
查看
</Button>
),
},
]}
/>
</Spin>
</div>
))}
</div> </div>
</> {viewQualificationDetailsModalOpen
&& (
<ViewQualificationDetailsModal
onCancel={() => setViewQualificationDetailsModalOpen(false)}
data={viewQualificationDetailsModalData}
/>
)}
{props.children}
</Page>
); );
} }