修改整体样式
parent
fc9af4faf8
commit
be9eb8c279
|
|
@ -2,6 +2,7 @@ import { Permission } from "@cqsjjb/jjb-common-decorator/permission";
|
|||
import { Connect } from "@cqsjjb/jjb-dva-runtime";
|
||||
import { Button, Descriptions, Form, Modal, Space } from "antd";
|
||||
import { useState } from "react";
|
||||
import Page from "zy-react-library/components/Page";
|
||||
import Search from "zy-react-library/components/Search";
|
||||
import DictionarySelect from "zy-react-library/components/Select/Dictionary";
|
||||
import Table from "zy-react-library/components/Table";
|
||||
|
|
@ -29,7 +30,7 @@ function List(props) {
|
|||
};
|
||||
|
||||
return (
|
||||
<div style={{ padding: 20 }}>
|
||||
<Page isShowAllAction={false}>
|
||||
<Search
|
||||
labelCol={{ span: 8 }}
|
||||
options={[
|
||||
|
|
@ -91,14 +92,14 @@ function List(props) {
|
|||
{...tableProps}
|
||||
/>
|
||||
{rejectReasonModalOpen && <RejectReason rejectReason={rejectReason} onCancel={() => setRejectReasonModalOpen(false)} />}
|
||||
</div>
|
||||
</Page>
|
||||
);
|
||||
}
|
||||
const RejectReason = (props) => {
|
||||
return (
|
||||
<Modal
|
||||
title="查看驳回原因"
|
||||
width={800}
|
||||
width={600}
|
||||
open
|
||||
maskClosable={false}
|
||||
onCancel={props.onCancel}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
import { Permission } from "@cqsjjb/jjb-common-decorator/permission";
|
||||
import { Connect } from "@cqsjjb/jjb-dva-runtime";
|
||||
import { Button, Form, Space } from "antd";
|
||||
import Page from "zy-react-library/components/Page";
|
||||
import Search from "zy-react-library/components/Search";
|
||||
import DictionarySelect from "zy-react-library/components/Select/Dictionary";
|
||||
import Table from "zy-react-library/components/Table";
|
||||
|
|
@ -20,7 +21,7 @@ function List(props) {
|
|||
});
|
||||
|
||||
return (
|
||||
<div style={{ padding: 20 }}>
|
||||
<Page isShowAllAction={false}>
|
||||
<Search
|
||||
labelCol={{ span: 8 }}
|
||||
options={[
|
||||
|
|
@ -100,7 +101,7 @@ function List(props) {
|
|||
]}
|
||||
{...tableProps}
|
||||
/>
|
||||
</div>
|
||||
</Page>
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ import dayjs from "dayjs";
|
|||
import { cloneDeep } from "lodash-es";
|
||||
import { useEffect, useState } from "react";
|
||||
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 PersonnelSelect from "zy-react-library/components/Select/Personnel/Gwj";
|
||||
import DepartmentSelectTree from "zy-react-library/components/SelectTree/Department/Gwj";
|
||||
|
|
@ -42,24 +42,20 @@ function Add(props) {
|
|||
}, []);
|
||||
|
||||
return (
|
||||
<div>
|
||||
<HeaderBack title={query.resubmit ? "重新提交" : (query.id ? "编辑" : "新增")} />
|
||||
<div style={{ padding: 20 }}>
|
||||
{currentStep === 1
|
||||
&&
|
||||
<StepOne setFormValues={setFormValues} setCurrentStep={setCurrentStep} formValues={formValues} form={form} />}
|
||||
{currentStep === 2
|
||||
&& (
|
||||
<StepTwo
|
||||
setCurrentStep={setCurrentStep}
|
||||
formValues={formValues}
|
||||
query={query}
|
||||
setSpecialList={setSpecialList}
|
||||
specialList={specialList}
|
||||
/>
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
<Page headerTitle={query.resubmit ? "重新提交" : (query.id ? "编辑" : "新增")} isShowFooter={false}>
|
||||
{currentStep === 1
|
||||
&& <StepOne setFormValues={setFormValues} setCurrentStep={setCurrentStep} formValues={formValues} form={form} />}
|
||||
{currentStep === 2
|
||||
&& (
|
||||
<StepTwo
|
||||
setCurrentStep={setCurrentStep}
|
||||
formValues={formValues}
|
||||
query={query}
|
||||
setSpecialList={setSpecialList}
|
||||
specialList={specialList}
|
||||
/>
|
||||
)}
|
||||
</Page>
|
||||
);
|
||||
}
|
||||
|
||||
|
|
@ -225,38 +221,6 @@ const StepTwoComponent = (props) => {
|
|||
const { loading: deleteFileLoading, deleteFile } = useDeleteFile();
|
||||
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 typeMap = new Map();
|
||||
for (let i = 0; i < details.length; i++) {
|
||||
|
|
@ -266,7 +230,38 @@ const StepTwoComponent = (props) => {
|
|||
}
|
||||
}
|
||||
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(() => {
|
||||
getData();
|
||||
|
|
@ -337,11 +332,11 @@ const StepTwoComponent = (props) => {
|
|||
<Spin
|
||||
spinning={props.qualificationApply.qualificationApplyLoading || uploadFileLoading || deleteFileLoading || getFileLoading}
|
||||
>
|
||||
{typeGroup.map((item) => (
|
||||
{typeGroup.map(item => (
|
||||
<div key={item.dataType}>
|
||||
<Divider orientation="left">{item.dataTypeName}</Divider>
|
||||
<Table
|
||||
dataSource={specialList.filter((record) => record.dataType === item.dataType)}
|
||||
dataSource={specialList.filter(record => record.dataType === item.dataType)}
|
||||
pagination={false}
|
||||
options={false}
|
||||
disabledResizer={true}
|
||||
|
|
@ -362,25 +357,25 @@ const StepTwoComponent = (props) => {
|
|||
{
|
||||
record.files?.length > 0
|
||||
? (
|
||||
<Button
|
||||
type="link"
|
||||
onClick={() => {
|
||||
onUploadFileOpen(record, record.id, record.files);
|
||||
}}
|
||||
>
|
||||
修改
|
||||
</Button>
|
||||
)
|
||||
<Button
|
||||
type="link"
|
||||
onClick={() => {
|
||||
onUploadFileOpen(record, record.id, record.files);
|
||||
}}
|
||||
>
|
||||
修改
|
||||
</Button>
|
||||
)
|
||||
: (
|
||||
<Button
|
||||
type="link"
|
||||
onClick={() => {
|
||||
onUploadFileOpen(record, record.id, []);
|
||||
}}
|
||||
>
|
||||
上传
|
||||
</Button>
|
||||
)
|
||||
<Button
|
||||
type="link"
|
||||
onClick={() => {
|
||||
onUploadFileOpen(record, record.id, []);
|
||||
}}
|
||||
>
|
||||
上传
|
||||
</Button>
|
||||
)
|
||||
}
|
||||
</Space>
|
||||
),
|
||||
|
|
@ -388,8 +383,7 @@ const StepTwoComponent = (props) => {
|
|||
]}
|
||||
/>
|
||||
</div>
|
||||
))
|
||||
}
|
||||
))}
|
||||
<div style={{ textAlign: "center", marginTop: 20 }}>
|
||||
<Space>
|
||||
<Button onClick={() => {
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ import { Connect } from "@cqsjjb/jjb-dva-runtime";
|
|||
import { Button, Descriptions, Form, Modal, Space } from "antd";
|
||||
import { useState } from "react";
|
||||
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 DictionarySelect from "zy-react-library/components/Select/Dictionary";
|
||||
import Table from "zy-react-library/components/Table";
|
||||
|
|
@ -26,7 +27,7 @@ function List(props) {
|
|||
};
|
||||
|
||||
return (
|
||||
<div style={{ padding: 20 }}>
|
||||
<Page isShowAllAction={false}>
|
||||
<Search
|
||||
labelCol={{ span: 8 }}
|
||||
options={[
|
||||
|
|
@ -111,7 +112,7 @@ function List(props) {
|
|||
{...tableProps}
|
||||
/>
|
||||
{rejectReasonModalOpen && <RejectReason rejectReason={rejectReason} onCancel={() => setRejectReasonModalOpen(false)} />}
|
||||
</div>
|
||||
</Page>
|
||||
);
|
||||
}
|
||||
|
||||
|
|
@ -119,7 +120,7 @@ const RejectReason = (props) => {
|
|||
return (
|
||||
<Modal
|
||||
title="查看驳回原因"
|
||||
width={800}
|
||||
width={600}
|
||||
open
|
||||
maskClosable={false}
|
||||
onCancel={props.onCancel}
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import { Connect } from "@cqsjjb/jjb-dva-runtime";
|
||||
import { Button, Descriptions, Divider, Spin } from "antd";
|
||||
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 { UPLOAD_FILE_TYPE_ENUM } from "zy-react-library/enum/uploadFile/gwj";
|
||||
import useGetFile from "zy-react-library/hooks/useGetFile";
|
||||
|
|
@ -19,6 +19,17 @@ function View(props) {
|
|||
const [viewQualificationDetailsModalOpen, setViewQualificationDetailsModalOpen] = useState(false);
|
||||
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 { data } = await props["qualificationApplyInfo"]({ id: query.id });
|
||||
await getTypeGroup(data.specialList);
|
||||
|
|
@ -33,90 +44,75 @@ function View(props) {
|
|||
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(() => {
|
||||
getData();
|
||||
}, []);
|
||||
|
||||
return (
|
||||
<div>
|
||||
<HeaderBack title="查看" />
|
||||
<div style={{ padding: 20 }}>
|
||||
<Spin
|
||||
spinning={props.qualificationApply.qualificationApplyLoading || getFileLoading}
|
||||
>
|
||||
<div>
|
||||
<Divider orientation="left">资质基础信息</Divider>
|
||||
<Descriptions
|
||||
bordered
|
||||
column={1}
|
||||
styles={{ label: { width: 200 } }}
|
||||
items={[
|
||||
{ label: "资质类别", children: info.qualificationsTypeName },
|
||||
{ label: "资质级别", children: info.stakeholderLevelName },
|
||||
...(info.stakeholderLevel === "two-level"
|
||||
? [
|
||||
<Page headerTitle="查看">
|
||||
<Spin
|
||||
spinning={props.qualificationApply.qualificationApplyLoading || getFileLoading}
|
||||
>
|
||||
<div>
|
||||
<Divider orientation="left">资质基础信息</Divider>
|
||||
<Descriptions
|
||||
bordered
|
||||
column={1}
|
||||
styles={{ label: { width: 200 } }}
|
||||
items={[
|
||||
{ label: "资质类别", children: info.qualificationsTypeName },
|
||||
{ label: "资质级别", children: info.stakeholderLevelName },
|
||||
...(info.stakeholderLevel === "two-level"
|
||||
? [
|
||||
{ label: "集团单位", children: info.groupUnitName },
|
||||
{ label: "部门", children: info.groupUnitDeptName },
|
||||
{ label: "负责人", children: info.groupUnitUserName },
|
||||
]
|
||||
: []),
|
||||
{ label: "资质名称", children: info.qualificationsName },
|
||||
{ label: "备注", children: info.remarks },
|
||||
: []),
|
||||
{ label: "资质名称", children: info.qualificationsName },
|
||||
{ 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>
|
||||
{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>
|
||||
))
|
||||
}
|
||||
</Spin>
|
||||
{viewQualificationDetailsModalOpen
|
||||
&& <ViewQualificationDetailsModal onCancel={() => setViewQualificationDetailsModalOpen(false)} data={viewQualificationDetailsModalData} />}
|
||||
</div>
|
||||
</div>
|
||||
))}
|
||||
</Spin>
|
||||
{viewQualificationDetailsModalOpen
|
||||
&& <ViewQualificationDetailsModal onCancel={() => setViewQualificationDetailsModalOpen(false)} data={viewQualificationDetailsModalData} />}
|
||||
</Page>
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ import { Permission } from "@cqsjjb/jjb-common-decorator/permission";
|
|||
import { Connect } from "@cqsjjb/jjb-dva-runtime";
|
||||
import { Button, Form, Space, Tooltip } from "antd";
|
||||
import { useState } from "react";
|
||||
import Page from "zy-react-library/components/Page";
|
||||
import Search from "zy-react-library/components/Search";
|
||||
import DictionarySelect from "zy-react-library/components/Select/Dictionary";
|
||||
import Table from "zy-react-library/components/Table";
|
||||
|
|
@ -28,7 +29,7 @@ function List(props) {
|
|||
});
|
||||
|
||||
return (
|
||||
<div style={{ padding: 20 }}>
|
||||
<Page isShowAllAction={false}>
|
||||
<Search
|
||||
labelCol={{ span: 8 }}
|
||||
options={[
|
||||
|
|
@ -146,7 +147,7 @@ function List(props) {
|
|||
]}
|
||||
{...tableProps}
|
||||
/>
|
||||
</div>
|
||||
</Page>
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
import { Permission } from "@cqsjjb/jjb-common-decorator/permission";
|
||||
import { Connect } from "@cqsjjb/jjb-dva-runtime";
|
||||
import { Button, Form, Space } from "antd";
|
||||
import Page from "zy-react-library/components/Page";
|
||||
import Search from "zy-react-library/components/Search";
|
||||
import DictionarySelect from "zy-react-library/components/Select/Dictionary";
|
||||
import Table from "zy-react-library/components/Table";
|
||||
|
|
@ -14,7 +15,7 @@ function List(props) {
|
|||
});
|
||||
|
||||
return (
|
||||
<div style={{ padding: 20 }}>
|
||||
<Page isShowAllAction={false}>
|
||||
<Search
|
||||
labelCol={{ span: 8 }}
|
||||
options={[
|
||||
|
|
@ -98,7 +99,7 @@ function List(props) {
|
|||
]}
|
||||
{...tableProps}
|
||||
/>
|
||||
</div>
|
||||
</Page>
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
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 FormBuilder from "zy-react-library/components/FormBuilder";
|
||||
import { FORM_ITEM_RENDER_ENUM } from "zy-react-library/enum/formItemRender";
|
||||
|
|
@ -11,7 +11,6 @@ function Review(props) {
|
|||
const query = useGetUrlQuery();
|
||||
|
||||
const [rejectModalOpen, setRejectModalOpen] = useState(false);
|
||||
const [passModalOpen, setPassModalOpen] = useState(false);
|
||||
|
||||
const onSubmit = async () => {
|
||||
const { success } = await props["qualificationReviewSubmit"]({ id: query.id, status: "400" });
|
||||
|
|
@ -24,9 +23,10 @@ function Review(props) {
|
|||
|
||||
return (
|
||||
<div>
|
||||
<ViewInfo title="审核">
|
||||
<div style={{ textAlign: "center", marginTop: 10 }}>
|
||||
<Space>
|
||||
<ViewInfo
|
||||
title="审核"
|
||||
extraActionButtons={(
|
||||
<>
|
||||
<Button
|
||||
type="primary"
|
||||
onClick={onSubmit}
|
||||
|
|
@ -42,11 +42,10 @@ function Review(props) {
|
|||
>
|
||||
驳回
|
||||
</Button>
|
||||
</Space>
|
||||
</div>
|
||||
</ViewInfo>
|
||||
</>
|
||||
)}
|
||||
/>
|
||||
{rejectModalOpen && <RejectModal onCancel={() => setRejectModalOpen(false)} id={query.id} />}
|
||||
{passModalOpen && <PassModal onCancel={() => setPassModalOpen(false)} id={query.id} />}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
|
@ -65,18 +64,20 @@ const RejectModalComponent = (props) => {
|
|||
return (
|
||||
<Modal
|
||||
title="驳回"
|
||||
width={1000}
|
||||
width={600}
|
||||
open
|
||||
maskClosable={false}
|
||||
onCancel={props.onCancel}
|
||||
onOk={form.submit}
|
||||
confirmLoading={props.qualificationReview.userQualificationLoading}
|
||||
>
|
||||
<FormBuilder
|
||||
form={form}
|
||||
span={24}
|
||||
labelCol={{ span: 8 }}
|
||||
labelCol={{ span: 10 }}
|
||||
showActionButtons={false}
|
||||
onFinish={onSubmit}
|
||||
loading={props.qualificationReview.userQualificationLoading}
|
||||
options={[
|
||||
{ name: "auditRemarks", label: "驳回原因", render: FORM_ITEM_RENDER_ENUM.TEXTAREA },
|
||||
]}
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ import { Permission } from "@cqsjjb/jjb-common-decorator/permission";
|
|||
import { Connect } from "@cqsjjb/jjb-dva-runtime";
|
||||
import { Button, Descriptions, Form, Modal, Space } from "antd";
|
||||
import { useState } from "react";
|
||||
import Page from "zy-react-library/components/Page";
|
||||
import Search from "zy-react-library/components/Search";
|
||||
import DictionarySelect from "zy-react-library/components/Select/Dictionary";
|
||||
import Table from "zy-react-library/components/Table";
|
||||
|
|
@ -30,7 +31,7 @@ function List(props) {
|
|||
};
|
||||
|
||||
return (
|
||||
<div style={{ padding: 20 }}>
|
||||
<Page isShowAllAction={false}>
|
||||
<Search
|
||||
labelCol={{ span: 8 }}
|
||||
options={[
|
||||
|
|
@ -91,14 +92,14 @@ function List(props) {
|
|||
{...tableProps}
|
||||
/>
|
||||
{rejectReasonModalOpen && <RejectReason rejectReason={rejectReason} onCancel={() => setRejectReasonModalOpen(false)} />}
|
||||
</div>
|
||||
</Page>
|
||||
);
|
||||
}
|
||||
const RejectReason = (props) => {
|
||||
return (
|
||||
<Modal
|
||||
title="查看驳回原因"
|
||||
width={800}
|
||||
width={600}
|
||||
open
|
||||
maskClosable={false}
|
||||
onCancel={props.onCancel}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
import { Permission } from "@cqsjjb/jjb-common-decorator/permission";
|
||||
import { Connect } from "@cqsjjb/jjb-dva-runtime";
|
||||
import { Button, Form, Space } from "antd";
|
||||
import Page from "zy-react-library/components/Page";
|
||||
import Search from "zy-react-library/components/Search";
|
||||
import DictionarySelect from "zy-react-library/components/Select/Dictionary";
|
||||
import Table from "zy-react-library/components/Table";
|
||||
|
|
@ -21,7 +22,7 @@ function List(props) {
|
|||
});
|
||||
|
||||
return (
|
||||
<div style={{ padding: 20 }}>
|
||||
<Page isShowAllAction={false}>
|
||||
<Search
|
||||
labelCol={{ span: 8 }}
|
||||
options={[
|
||||
|
|
@ -70,7 +71,7 @@ function List(props) {
|
|||
]}
|
||||
{...tableProps}
|
||||
/>
|
||||
</div>
|
||||
</Page>
|
||||
);
|
||||
}
|
||||
export default Connect([NS_QUALIFICATION_STATISTICS], true)(Permission(List));
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ import { Permission } from "@cqsjjb/jjb-common-decorator/permission";
|
|||
import { Connect } from "@cqsjjb/jjb-dva-runtime";
|
||||
import { Button, Descriptions, Form, Modal, Space } from "antd";
|
||||
import { useState } from "react";
|
||||
import Page from "zy-react-library/components/Page";
|
||||
import Search from "zy-react-library/components/Search";
|
||||
import DictionarySelect from "zy-react-library/components/Select/Dictionary";
|
||||
import Table from "zy-react-library/components/Table";
|
||||
|
|
@ -30,7 +31,7 @@ function List(props) {
|
|||
};
|
||||
|
||||
return (
|
||||
<div style={{ padding: 20 }}>
|
||||
<Page isShowAllAction={false}>
|
||||
<Search
|
||||
labelCol={{ span: 8 }}
|
||||
options={[
|
||||
|
|
@ -91,14 +92,14 @@ function List(props) {
|
|||
{...tableProps}
|
||||
/>
|
||||
{rejectReasonModalOpen && <RejectReason rejectReason={rejectReason} onCancel={() => setRejectReasonModalOpen(false)} />}
|
||||
</div>
|
||||
</Page>
|
||||
);
|
||||
}
|
||||
const RejectReason = (props) => {
|
||||
return (
|
||||
<Modal
|
||||
title="查看驳回原因"
|
||||
width={800}
|
||||
width={600}
|
||||
open
|
||||
maskClosable={false}
|
||||
onCancel={props.onCancel}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
import { Permission } from "@cqsjjb/jjb-common-decorator/permission";
|
||||
import { Connect } from "@cqsjjb/jjb-dva-runtime";
|
||||
import { Button, Form, Space } from "antd";
|
||||
import Page from "zy-react-library/components/Page";
|
||||
import Search from "zy-react-library/components/Search";
|
||||
import DictionarySelect from "zy-react-library/components/Select/Dictionary";
|
||||
import Table from "zy-react-library/components/Table";
|
||||
|
|
@ -20,7 +21,7 @@ function List(props) {
|
|||
},
|
||||
});
|
||||
return (
|
||||
<div style={{ padding: 20 }}>
|
||||
<Page isShowAllAction={false}>
|
||||
<Search
|
||||
labelCol={{ span: 8 }}
|
||||
options={[
|
||||
|
|
@ -70,7 +71,7 @@ function List(props) {
|
|||
]}
|
||||
{...tableProps}
|
||||
/>
|
||||
</div>
|
||||
</Page>
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ import { Permission } from "@cqsjjb/jjb-common-decorator/permission";
|
|||
import { Connect } from "@cqsjjb/jjb-dva-runtime";
|
||||
import { Button, Descriptions, Form, Modal, Space } from "antd";
|
||||
import { useState } from "react";
|
||||
import Page from "zy-react-library/components/Page";
|
||||
import Search from "zy-react-library/components/Search";
|
||||
import DictionarySelect from "zy-react-library/components/Select/Dictionary";
|
||||
import Table from "zy-react-library/components/Table";
|
||||
|
|
@ -29,7 +30,7 @@ function List(props) {
|
|||
};
|
||||
|
||||
return (
|
||||
<div style={{ padding: 20 }}>
|
||||
<Page isShowAllAction={false}>
|
||||
<Search
|
||||
labelCol={{ span: 8 }}
|
||||
options={[
|
||||
|
|
@ -91,14 +92,14 @@ function List(props) {
|
|||
{...tableProps}
|
||||
/>
|
||||
{rejectReasonModalOpen && <RejectReason rejectReason={rejectReason} onCancel={() => setRejectReasonModalOpen(false)} />}
|
||||
</div>
|
||||
</Page>
|
||||
);
|
||||
}
|
||||
const RejectReason = (props) => {
|
||||
return (
|
||||
<Modal
|
||||
title="查看驳回原因"
|
||||
width={800}
|
||||
width={600}
|
||||
open
|
||||
maskClosable={false}
|
||||
onCancel={props.onCancel}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
import { Permission } from "@cqsjjb/jjb-common-decorator/permission";
|
||||
import { Connect } from "@cqsjjb/jjb-dva-runtime";
|
||||
import { Button, Form, Space } from "antd";
|
||||
import Page from "zy-react-library/components/Page";
|
||||
import Search from "zy-react-library/components/Search";
|
||||
import DictionarySelect from "zy-react-library/components/Select/Dictionary";
|
||||
import Table from "zy-react-library/components/Table";
|
||||
|
|
@ -19,7 +20,7 @@ function List(props) {
|
|||
},
|
||||
});
|
||||
return (
|
||||
<div style={{ padding: 20 }}>
|
||||
<Page isShowAllAction={false}>
|
||||
<Search
|
||||
labelCol={{ span: 8 }}
|
||||
options={[
|
||||
|
|
@ -69,7 +70,7 @@ function List(props) {
|
|||
]}
|
||||
{...tableProps}
|
||||
/>
|
||||
</div>
|
||||
</Page>
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
import { Permission } from "@cqsjjb/jjb-common-decorator/permission";
|
||||
import { Connect } from "@cqsjjb/jjb-dva-runtime";
|
||||
import { Button, Form, Space } from "antd";
|
||||
import Page from "zy-react-library/components/Page";
|
||||
import Search from "zy-react-library/components/Search";
|
||||
import DictionarySelect from "zy-react-library/components/Select/Dictionary";
|
||||
import Table from "zy-react-library/components/Table";
|
||||
|
|
@ -14,7 +15,7 @@ function List(props) {
|
|||
});
|
||||
|
||||
return (
|
||||
<div style={{ padding: 20 }}>
|
||||
<Page isShowAllAction={false}>
|
||||
<Search
|
||||
labelCol={{ span: 8 }}
|
||||
options={[
|
||||
|
|
@ -98,7 +99,7 @@ function List(props) {
|
|||
]}
|
||||
{...tableProps}
|
||||
/>
|
||||
</div>
|
||||
</Page>
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
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 FormBuilder from "zy-react-library/components/FormBuilder";
|
||||
import PersonnelSelect from "zy-react-library/components/Select/Personnel/Gwj";
|
||||
|
|
@ -17,9 +17,10 @@ function Review() {
|
|||
|
||||
return (
|
||||
<div>
|
||||
<ViewInfo title="审核">
|
||||
<div style={{ textAlign: "center", marginTop: 10 }}>
|
||||
<Space>
|
||||
<ViewInfo
|
||||
title="审核"
|
||||
extraActionButtons={(
|
||||
<>
|
||||
<Button
|
||||
type="primary"
|
||||
onClick={() => {
|
||||
|
|
@ -37,9 +38,9 @@ function Review() {
|
|||
>
|
||||
驳回
|
||||
</Button>
|
||||
</Space>
|
||||
</div>
|
||||
</ViewInfo>
|
||||
</>
|
||||
)}
|
||||
/>
|
||||
{rejectModalOpen && <RejectModal onCancel={() => setRejectModalOpen(false)} id={query.id} />}
|
||||
{passModalOpen && <PassModal onCancel={() => setPassModalOpen(false)} id={query.id} />}
|
||||
</div>
|
||||
|
|
@ -60,18 +61,20 @@ const RejectModalComponent = (props) => {
|
|||
return (
|
||||
<Modal
|
||||
title="驳回"
|
||||
width={1000}
|
||||
width={600}
|
||||
open
|
||||
maskClosable={false}
|
||||
onCancel={props.onCancel}
|
||||
onOk={form.submit}
|
||||
confirmLoading={props.qualificationReview.userQualificationLoading}
|
||||
>
|
||||
<FormBuilder
|
||||
form={form}
|
||||
span={24}
|
||||
labelCol={{ span: 8 }}
|
||||
labelCol={{ span: 10 }}
|
||||
showActionButtons={false}
|
||||
onFinish={onSubmit}
|
||||
loading={props.qualificationReview.userQualificationLoading}
|
||||
options={[
|
||||
{ name: "auditRemarks", label: "驳回原因", render: FORM_ITEM_RENDER_ENUM.TEXTAREA },
|
||||
]}
|
||||
|
|
@ -96,17 +99,19 @@ const PassModalComponent = (props) => {
|
|||
return (
|
||||
<Modal
|
||||
title="通过"
|
||||
width={1000}
|
||||
width={600}
|
||||
open
|
||||
maskClosable={false}
|
||||
onCancel={props.onCancel}
|
||||
onOk={form.submit}
|
||||
confirmLoading={props.qualificationReview.userQualificationLoading}
|
||||
>
|
||||
<FormBuilder
|
||||
form={form}
|
||||
labelCol={{ span: 8 }}
|
||||
labelCol={{ span: 10 }}
|
||||
showActionButtons={false}
|
||||
onFinish={onSubmit}
|
||||
loading={props.qualificationReview.userQualificationLoading}
|
||||
span={24}
|
||||
options={[
|
||||
{
|
||||
|
|
|
|||
|
|
@ -3,9 +3,9 @@ import { Button, Divider, Form, message, Modal, Space, Spin } from "antd";
|
|||
import dayjs from "dayjs";
|
||||
import { useEffect, useMemo, useState } from "react";
|
||||
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 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 DictionarySelect from "zy-react-library/components/Select/Dictionary";
|
||||
import PersonnelSelect from "zy-react-library/components/Select/Personnel/Gwj";
|
||||
|
|
@ -73,9 +73,8 @@ function Add(props) {
|
|||
}, []);
|
||||
|
||||
return (
|
||||
<div>
|
||||
<HeaderBack title={query.id ? "编辑" : "新增"} />
|
||||
<div style={{ padding: 20 }}>
|
||||
<Page headerTitle={query.id ? "编辑" : "新增"} isShowFooter={false}>
|
||||
<>
|
||||
{currentStep === 1
|
||||
&& (
|
||||
<StepOne
|
||||
|
|
@ -103,8 +102,8 @@ function Add(props) {
|
|||
corpinfoId={corpinfoId}
|
||||
/>
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
</>
|
||||
</Page>
|
||||
);
|
||||
}
|
||||
|
||||
|
|
@ -626,7 +625,6 @@ const StepTwoComponent = (props) => {
|
|||
});
|
||||
projectFileList[i].projectFileId = id;
|
||||
}
|
||||
console.log("usercontentList", usercontentList);
|
||||
const userList = usercontentList.map(item => ({
|
||||
userId: item.id,
|
||||
userName: item.name,
|
||||
|
|
@ -636,7 +634,6 @@ const StepTwoComponent = (props) => {
|
|||
userPostName: item.postName,
|
||||
projectLeader: item.projectLeader,
|
||||
}));
|
||||
console.log("userList", userList);
|
||||
const data = { ...props.formValues, projectUserAddCmdList: [...userList], projectFileAddCmdList: [...projectFileList], projectLocalCompanyAddCmdList: [...projectLocalCompanyAddCmdList], projectApprovalUserAddCmdList: [...projectApprovalUserAddCmdList], projectApprovalFlowAddCmdList: [...projectApprovalFlowAddCmdList], corpinfoId };
|
||||
const { success } = await props[!query.id ? "projectAdd" : "projectUpdate"]({
|
||||
...data,
|
||||
|
|
@ -719,6 +716,7 @@ const StepTwoComponent = (props) => {
|
|||
</Button>
|
||||
<Button
|
||||
type="link"
|
||||
danger
|
||||
onClick={() => handleDelete(index)}
|
||||
>
|
||||
删除
|
||||
|
|
@ -816,7 +814,7 @@ const StepTwoComponent = (props) => {
|
|||
/>
|
||||
)}
|
||||
{usercontentOpen && (
|
||||
<Usercontent
|
||||
<UserSelect
|
||||
data={fetchUserList}
|
||||
onCancel={() => {
|
||||
setUsercontentOpen(false);
|
||||
|
|
@ -845,6 +843,7 @@ const ChooseFilsComponent = (props) => {
|
|||
params: {
|
||||
qualificationsTypeId: "",
|
||||
},
|
||||
useStorageQueryCriteria: false,
|
||||
});
|
||||
const submit = () => {
|
||||
if (props.onSubmit) {
|
||||
|
|
@ -874,6 +873,8 @@ const ChooseFilsComponent = (props) => {
|
|||
onOk={submit}
|
||||
>
|
||||
<Table
|
||||
options={false}
|
||||
disabledResizer={true}
|
||||
rowSelection={{
|
||||
selectedRowKeys,
|
||||
preserveSelectedRowKeys: true,
|
||||
|
|
@ -896,7 +897,7 @@ const ChooseFilsComponent = (props) => {
|
|||
);
|
||||
};
|
||||
// 选择项目人员的组件
|
||||
const UsercontentComponent = (props) => {
|
||||
const UserSelectComponent = (props) => {
|
||||
const [form] = Form.useForm();
|
||||
const [selectedRowKeys, setSelectedRowKeys] = useState([]); // 存储选中的行键
|
||||
const [selectedRows, setSelectedRows] = useState([]); // 存储选中行的完整数据
|
||||
|
|
@ -909,6 +910,7 @@ const UsercontentComponent = (props) => {
|
|||
inDepartmentId,
|
||||
eqEmploymentFlag: 1, // 在职
|
||||
},
|
||||
useStorageQueryCriteria: false,
|
||||
});
|
||||
const projectLeader = useMemo(() => {
|
||||
if (props.data && Array.isArray(props.data)) {
|
||||
|
|
@ -969,19 +971,9 @@ const UsercontentComponent = (props) => {
|
|||
open
|
||||
maskClosable={false}
|
||||
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={{ width: 300 }}>
|
||||
<DepartmentLeftTree
|
||||
|
|
@ -993,7 +985,18 @@ const UsercontentComponent = (props) => {
|
|||
/>
|
||||
</div>
|
||||
<div style={{ flex: 1 }}>
|
||||
<Search
|
||||
labelCol={{ span: 8 }}
|
||||
options={[
|
||||
{ name: "likeName", label: "姓名" },
|
||||
{ name: "likeUserIdCard", label: "身份证" },
|
||||
]}
|
||||
form={form}
|
||||
onFinish={getData}
|
||||
/>
|
||||
<Table
|
||||
options={false}
|
||||
disabledResizer={true}
|
||||
rowSelection={{
|
||||
selectedRowKeys,
|
||||
preserveSelectedRowKeys: true,
|
||||
|
|
@ -1003,17 +1006,6 @@ const UsercontentComponent = (props) => {
|
|||
disabled: projectLeader && record.id === projectLeader.id,
|
||||
}),
|
||||
}}
|
||||
rowKey="id"
|
||||
toolBarRender={() => (
|
||||
<>
|
||||
<Button
|
||||
type="primary"
|
||||
onClick={handleConfirmAdd}
|
||||
>
|
||||
确认添加
|
||||
</Button>
|
||||
</>
|
||||
)}
|
||||
columns={[
|
||||
{ title: "手机号", dataIndex: "phone" },
|
||||
{ title: "姓名", dataIndex: "name" },
|
||||
|
|
@ -1096,7 +1088,7 @@ const FileUpload = (props) => {
|
|||
|
||||
const StepOne = Connect([NS_QUALIFICATION_STATISTICS], true)(StepOneComponent);
|
||||
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);
|
||||
|
||||
export default Connect([NS_QUALIFICATION_STATISTICS], true)(Add);
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ import { Connect } from "@cqsjjb/jjb-dva-runtime";
|
|||
import { Button, Descriptions, Form, Modal, Space } from "antd";
|
||||
import { useState } from "react";
|
||||
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 DictionarySelect from "zy-react-library/components/Select/Dictionary";
|
||||
import Table from "zy-react-library/components/Table";
|
||||
|
|
@ -30,7 +31,7 @@ function List(props) {
|
|||
};
|
||||
|
||||
return (
|
||||
<div style={{ padding: 20 }}>
|
||||
<Page isShowAllAction={false}>
|
||||
<Search
|
||||
labelCol={{ span: 8 }}
|
||||
options={[
|
||||
|
|
@ -127,14 +128,14 @@ function List(props) {
|
|||
{...tableProps}
|
||||
/>
|
||||
{rejectReasonModalOpen && <RejectReason rejectReason={rejectReason} onCancel={() => setRejectReasonModalOpen(false)} />}
|
||||
</div>
|
||||
</Page>
|
||||
);
|
||||
}
|
||||
const RejectReason = (props) => {
|
||||
return (
|
||||
<Modal
|
||||
title="查看驳回原因"
|
||||
width={800}
|
||||
width={600}
|
||||
open
|
||||
maskClosable={false}
|
||||
onCancel={props.onCancel}
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
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 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 TooltipPreviewImg from "zy-react-library/components/TooltipPreviewImg";
|
||||
import { FORM_ITEM_RENDER_ENUM } from "zy-react-library/enum/formItemRender";
|
||||
|
|
@ -204,9 +204,32 @@ function Review(props) {
|
|||
getProjectListAll();
|
||||
}, []);
|
||||
return (
|
||||
<div>
|
||||
<HeaderBack title="查看" />
|
||||
<div style={{ padding: "0 20px 20px 20px" }}>
|
||||
<Page
|
||||
headerTitle="查看"
|
||||
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 && (
|
||||
<div style={{ "font-size": "16px" }}>
|
||||
<Divider orientation="left">一级项目信息</Divider>
|
||||
|
|
@ -234,58 +257,54 @@ function Review(props) {
|
|||
)}
|
||||
<div>
|
||||
<Divider orientation="left">项目基础信息</Divider>
|
||||
<Spin spinning="">
|
||||
<Descriptions
|
||||
bordered
|
||||
column={4}
|
||||
items={[
|
||||
{ label: "项目名称", children: info.projectName },
|
||||
{ label: "项目负责人", children: info.userName },
|
||||
{ label: "立项时间", children: info.initiationTime },
|
||||
{ label: "计划开始时间", children: info.startProjectTime },
|
||||
{ label: "计划竣工时间", children: info.endProjectTime },
|
||||
{ label: "选取形式", children: info.chooseForm },
|
||||
{ label: "是否涉及四新工作内容", children: info.fourNewFlag === 1 ? "是" : "否" },
|
||||
{ label: "是否涉及三人及以上工作内容", children: info.threePeopleFlag === 1 ? "是" : "否" },
|
||||
{ label: "是否涉及夜间作业", children: info.nightWorkFlag === 1 ? "是" : "否" },
|
||||
{ label: "项目类别", children: info.qualificationsTypeName },
|
||||
{ label: "是否存在分包项目", children: info.subcontractFlag === 1 ? "是" : "否" },
|
||||
{ label: "是否为属地公司推荐", children: info.isLocalCompany === 1 ? "是" : "否" },
|
||||
{ label: "安全管理协议", children: <TooltipPreviewImg files={info.files} /> },
|
||||
]}
|
||||
/>
|
||||
</Spin>
|
||||
<Descriptions
|
||||
bordered
|
||||
column={4}
|
||||
items={[
|
||||
{ label: "项目名称", children: info.projectName },
|
||||
{ label: "项目负责人", children: info.userName },
|
||||
{ label: "立项时间", children: info.initiationTime },
|
||||
{ label: "计划开始时间", children: info.startProjectTime },
|
||||
{ label: "计划竣工时间", children: info.endProjectTime },
|
||||
{ label: "选取形式", children: info.chooseForm },
|
||||
{ label: "是否涉及四新工作内容", children: info.fourNewFlag === 1 ? "是" : "否" },
|
||||
{ label: "是否涉及三人及以上工作内容", children: info.threePeopleFlag === 1 ? "是" : "否" },
|
||||
{ label: "是否涉及夜间作业", children: info.nightWorkFlag === 1 ? "是" : "否" },
|
||||
{ label: "项目类别", children: info.qualificationsTypeName },
|
||||
{ label: "是否存在分包项目", children: info.subcontractFlag === 1 ? "是" : "否" },
|
||||
{ label: "是否为属地公司推荐", children: info.isLocalCompany === 1 ? "是" : "否" },
|
||||
{ label: "安全管理协议", children: <TooltipPreviewImg files={info.files} /> },
|
||||
]}
|
||||
/>
|
||||
</div>
|
||||
<div>
|
||||
<Divider orientation="left">企业基础信息</Divider>
|
||||
<Spin spinning="">
|
||||
<Descriptions
|
||||
bordered
|
||||
column={4}
|
||||
items={[
|
||||
{ label: "公司名称", children: info.corpInfo?.corpName },
|
||||
{ label: "企业状态", children: info.corpInfo?.corpStateName },
|
||||
{ label: "开户人", children: info.corpInfo?.accountContactName },
|
||||
{ label: "社会统一信号代码", children: info.corpInfo?.code },
|
||||
{ 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?.addressBusiness },
|
||||
{ label: "企业规模", children: info.corpInfo?.scaleName },
|
||||
{ label: "法定代表人姓名", children: info.corpInfo?.lrName },
|
||||
{ label: "打定代表人电话", children: info.corpInfo?.lrMobile },
|
||||
{ label: "主要负责人姓名", children: info.corpInfo?.contacts },
|
||||
{ label: "主要负责人电话", children: info.corpInfo?.contactsPhone },
|
||||
{ label: "成立日期", children: info.corpInfo?.createDate },
|
||||
{ label: "公司人数(人)", children: info.corpInfo?.employees },
|
||||
{ label: "资产总额(万元)", children: info.corpInfo?.totalAssets },
|
||||
{ label: "注册资金(万元)", children: info.corpInfo?.regcapital },
|
||||
{ label: "企业类型", children: getLabelName({ list: typeList, status: info.corpInfo?.type }) },
|
||||
{ label: "营业执照", children: <TooltipPreviewImg files={info.corpInfo?.files || []} /> },
|
||||
{ label: "营业执照有效期", children: `${info.corpInfo?.licenseStart}-${info.corpInfo?.licenseEnd}` },
|
||||
{ label: "", children: "" },
|
||||
]}
|
||||
/>
|
||||
</Spin>
|
||||
<Descriptions
|
||||
bordered
|
||||
column={4}
|
||||
items={[
|
||||
{ label: "公司名称", children: info.corpInfo?.corpName },
|
||||
{ label: "企业状态", children: info.corpInfo?.corpStateName },
|
||||
{ label: "开户人", children: info.corpInfo?.accountContactName },
|
||||
{ label: "社会统一信号代码", children: info.corpInfo?.code },
|
||||
{ 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?.addressBusiness },
|
||||
{ label: "企业规模", children: info.corpInfo?.scaleName },
|
||||
{ label: "法定代表人姓名", children: info.corpInfo?.lrName },
|
||||
{ label: "打定代表人电话", children: info.corpInfo?.lrMobile },
|
||||
{ label: "主要负责人姓名", children: info.corpInfo?.contacts },
|
||||
{ label: "主要负责人电话", children: info.corpInfo?.contactsPhone },
|
||||
{ label: "成立日期", children: info.corpInfo?.createDate },
|
||||
{ label: "公司人数(人)", children: info.corpInfo?.employees },
|
||||
{ label: "资产总额(万元)", children: info.corpInfo?.totalAssets },
|
||||
{ label: "注册资金(万元)", children: info.corpInfo?.regcapital },
|
||||
{ label: "企业类型", children: getLabelName({ list: typeList, status: info.corpInfo?.type }) },
|
||||
{ label: "营业执照", children: <TooltipPreviewImg files={info.corpInfo?.files || []} /> },
|
||||
{ label: "营业执照有效期", children: `${info.corpInfo?.licenseStart}-${info.corpInfo?.licenseEnd}` },
|
||||
{ label: "", children: "" },
|
||||
]}
|
||||
/>
|
||||
</div>
|
||||
<div>
|
||||
<Divider orientation="left">项目资料信息</Divider>
|
||||
|
|
@ -355,86 +374,48 @@ function Review(props) {
|
|||
{info.subcontractFlag === 1 && (
|
||||
<div>
|
||||
<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
|
||||
options={false}
|
||||
pagination={false}
|
||||
disabledResizer={true}
|
||||
dataSource={info.approvalFlowCOList || []}
|
||||
dataSource={info.subcontractProjectList || []}
|
||||
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 }) },
|
||||
{ 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>
|
||||
<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>
|
||||
{(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
|
||||
&& <ViewProjectReviewUserModal onCancel={() => setViewProjectReviewUserModalOpen(false)} data={viewProjectReviewUserModalData} />}
|
||||
{viewProjectReviewDetailsModalOpen
|
||||
|
|
@ -447,7 +428,7 @@ function Review(props) {
|
|||
{props.children}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</Page>
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -47,11 +47,4 @@
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
.btn_bottom{
|
||||
text-align: center;
|
||||
margin-top: 20px;
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
import { Permission } from "@cqsjjb/jjb-common-decorator/permission";
|
||||
import { Connect } from "@cqsjjb/jjb-dva-runtime";
|
||||
import { Button, Form, Space } from "antd";
|
||||
import Page from "zy-react-library/components/Page";
|
||||
import Search from "zy-react-library/components/Search";
|
||||
import DictionarySelect from "zy-react-library/components/Select/Dictionary";
|
||||
import Table from "zy-react-library/components/Table";
|
||||
|
|
@ -21,7 +22,7 @@ function List(props) {
|
|||
});
|
||||
|
||||
return (
|
||||
<div style={{ padding: 20 }}>
|
||||
<Page isShowAllAction={false}>
|
||||
<Search
|
||||
labelCol={{ span: 8 }}
|
||||
options={[
|
||||
|
|
@ -101,7 +102,7 @@ function List(props) {
|
|||
]}
|
||||
{...tableProps}
|
||||
/>
|
||||
</div>
|
||||
</Page>
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -3,9 +3,9 @@ import { Button, Divider, Form, message, Modal, Space, Spin } from "antd";
|
|||
import dayjs from "dayjs";
|
||||
import { useEffect, useMemo, useState } from "react";
|
||||
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 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 DictionarySelect from "zy-react-library/components/Select/Dictionary";
|
||||
import PersonnelSelect from "zy-react-library/components/Select/Personnel/Gwj";
|
||||
|
|
@ -73,38 +73,35 @@ function Add(props) {
|
|||
}, []);
|
||||
|
||||
return (
|
||||
<div>
|
||||
<HeaderBack title={query.id ? "编辑" : "新增"} />
|
||||
<div style={{ padding: 20 }}>
|
||||
{currentStep === 1
|
||||
&& (
|
||||
<StepOne
|
||||
setFormValues={setFormValues}
|
||||
setCurrentStep={setCurrentStep}
|
||||
formValues={formValues}
|
||||
form={form}
|
||||
usercontentAddCmdList={usercontentAddCmdList}
|
||||
setUsercontentAddCmdList={setUsercontentAddCmdList}
|
||||
/>
|
||||
)}
|
||||
{currentStep === 2
|
||||
&& (
|
||||
<StepTwo
|
||||
setCurrentStep={setCurrentStep}
|
||||
formValues={formValues}
|
||||
query={query}
|
||||
setUsercontentAddCmdList={setUsercontentAddCmdList}
|
||||
setProjectFileAddCmdList={setProjectFileAddCmdList}
|
||||
projectFileAddCmdList={projectFileAddCmdList}
|
||||
usercontentAddCmdList={usercontentAddCmdList}
|
||||
projectLocalCompanyAddCmdList={projectLocalCompanyAddCmdList}
|
||||
projectApprovalUserAddCmdList={projectApprovalUserAddCmdList}
|
||||
projectApprovalFlowAddCmdList={projectApprovalFlowAddCmdList}
|
||||
corpinfoId={corpinfoId}
|
||||
/>
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
<Page headerTitle={query.id ? "编辑" : "新增"} isShowFooter={false}>
|
||||
{currentStep === 1
|
||||
&& (
|
||||
<StepOne
|
||||
setFormValues={setFormValues}
|
||||
setCurrentStep={setCurrentStep}
|
||||
formValues={formValues}
|
||||
form={form}
|
||||
usercontentAddCmdList={usercontentAddCmdList}
|
||||
setUsercontentAddCmdList={setUsercontentAddCmdList}
|
||||
/>
|
||||
)}
|
||||
{currentStep === 2
|
||||
&& (
|
||||
<StepTwo
|
||||
setCurrentStep={setCurrentStep}
|
||||
formValues={formValues}
|
||||
query={query}
|
||||
setUsercontentAddCmdList={setUsercontentAddCmdList}
|
||||
setProjectFileAddCmdList={setProjectFileAddCmdList}
|
||||
projectFileAddCmdList={projectFileAddCmdList}
|
||||
usercontentAddCmdList={usercontentAddCmdList}
|
||||
projectLocalCompanyAddCmdList={projectLocalCompanyAddCmdList}
|
||||
projectApprovalUserAddCmdList={projectApprovalUserAddCmdList}
|
||||
projectApprovalFlowAddCmdList={projectApprovalFlowAddCmdList}
|
||||
corpinfoId={corpinfoId}
|
||||
/>
|
||||
)}
|
||||
</Page>
|
||||
);
|
||||
}
|
||||
|
||||
|
|
@ -457,7 +454,6 @@ const StepTwoComponent = (props) => {
|
|||
});
|
||||
projectFileList[i].projectFileId = id;
|
||||
}
|
||||
console.log("usercontentList", usercontentList);
|
||||
const userList = usercontentList.map(item => ({
|
||||
userId: item.id,
|
||||
userName: item.name,
|
||||
|
|
@ -467,7 +463,6 @@ const StepTwoComponent = (props) => {
|
|||
userPostName: item.postName,
|
||||
projectLeader: item.projectLeader,
|
||||
}));
|
||||
console.log("userList", userList);
|
||||
const data = { ...props.formValues, projectUserAddCmdList: [...userList], projectFileAddCmdList: [...projectFileList], projectLocalCompanyAddCmdList: [...projectLocalCompanyAddCmdList], projectApprovalUserAddCmdList: [...projectApprovalUserAddCmdList], projectApprovalFlowAddCmdList: [...projectApprovalFlowAddCmdList], corpinfoId };
|
||||
const { success } = await props[!query.id ? "projectAdd" : "projectUpdate"]({
|
||||
...data,
|
||||
|
|
@ -675,6 +670,7 @@ const ChooseFilsComponent = (props) => {
|
|||
params: {
|
||||
qualificationsTypeId: "",
|
||||
},
|
||||
useStorageQueryCriteria: false,
|
||||
});
|
||||
const submit = () => {
|
||||
if (props.onSubmit) {
|
||||
|
|
@ -704,6 +700,8 @@ const ChooseFilsComponent = (props) => {
|
|||
onOk={submit}
|
||||
>
|
||||
<Table
|
||||
options={false}
|
||||
disabledResizer={true}
|
||||
rowSelection={{
|
||||
selectedRowKeys,
|
||||
preserveSelectedRowKeys: true,
|
||||
|
|
@ -739,6 +737,7 @@ const UsercontentComponent = (props) => {
|
|||
inDepartmentId,
|
||||
eqEmploymentFlag: 1, // 在职
|
||||
},
|
||||
useStorageQueryCriteria: false,
|
||||
});
|
||||
const projectLeader = useMemo(() => {
|
||||
if (props.data && Array.isArray(props.data)) {
|
||||
|
|
@ -799,19 +798,9 @@ const UsercontentComponent = (props) => {
|
|||
open
|
||||
maskClosable={false}
|
||||
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={{ width: 300 }}>
|
||||
<DepartmentLeftTree
|
||||
|
|
@ -823,7 +812,20 @@ const UsercontentComponent = (props) => {
|
|||
/>
|
||||
</div>
|
||||
<div style={{ flex: 1 }}>
|
||||
<Search
|
||||
labelCol={{ span: 8 }}
|
||||
options={[
|
||||
{ name: "likeName", label: "姓名" },
|
||||
{ name: "likeUserIdCard", label: "身份证" },
|
||||
]}
|
||||
form={form}
|
||||
onFinish={(values) => {
|
||||
getData(values);
|
||||
}}
|
||||
/>
|
||||
<Table
|
||||
options={false}
|
||||
disabledResizer={true}
|
||||
rowSelection={{
|
||||
selectedRowKeys,
|
||||
preserveSelectedRowKeys: true,
|
||||
|
|
@ -833,17 +835,6 @@ const UsercontentComponent = (props) => {
|
|||
disabled: projectLeader && record.id === projectLeader.id,
|
||||
}),
|
||||
}}
|
||||
rowKey="id"
|
||||
toolBarRender={() => (
|
||||
<>
|
||||
<Button
|
||||
type="primary"
|
||||
onClick={handleConfirmAdd}
|
||||
>
|
||||
确认添加
|
||||
</Button>
|
||||
</>
|
||||
)}
|
||||
columns={[
|
||||
{ title: "手机号", dataIndex: "phone" },
|
||||
{ title: "姓名", dataIndex: "name" },
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ import { Connect } from "@cqsjjb/jjb-dva-runtime";
|
|||
import { Button, Descriptions, Form, Modal, Space } from "antd";
|
||||
import { useState } from "react";
|
||||
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 DictionarySelect from "zy-react-library/components/Select/Dictionary";
|
||||
import Table from "zy-react-library/components/Table";
|
||||
|
|
@ -30,7 +31,7 @@ function List(props) {
|
|||
};
|
||||
|
||||
return (
|
||||
<div style={{ padding: 20 }}>
|
||||
<Page isShowAllAction={false}>
|
||||
<Search
|
||||
labelCol={{ span: 8 }}
|
||||
options={[
|
||||
|
|
@ -126,14 +127,14 @@ function List(props) {
|
|||
{...tableProps}
|
||||
/>
|
||||
{rejectReasonModalOpen && <RejectReason rejectReason={rejectReason} onCancel={() => setRejectReasonModalOpen(false)} />}
|
||||
</div>
|
||||
</Page>
|
||||
);
|
||||
}
|
||||
const RejectReason = (props) => {
|
||||
return (
|
||||
<Modal
|
||||
title="查看驳回原因"
|
||||
width={800}
|
||||
width={600}
|
||||
open
|
||||
maskClosable={false}
|
||||
onCancel={props.onCancel}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
import { Permission } from "@cqsjjb/jjb-common-decorator/permission";
|
||||
import { Connect } from "@cqsjjb/jjb-dva-runtime";
|
||||
import { Button, Form, Space } from "antd";
|
||||
import Page from "zy-react-library/components/Page";
|
||||
import Search from "zy-react-library/components/Search";
|
||||
import DictionarySelect from "zy-react-library/components/Select/Dictionary";
|
||||
import Table from "zy-react-library/components/Table";
|
||||
|
|
@ -20,7 +21,7 @@ function List(props) {
|
|||
});
|
||||
|
||||
return (
|
||||
<div style={{ padding: 20 }}>
|
||||
<Page isShowAllAction={false}>
|
||||
<Search
|
||||
labelCol={{ span: 8 }}
|
||||
options={[
|
||||
|
|
@ -89,7 +90,7 @@ function List(props) {
|
|||
]}
|
||||
{...tableProps}
|
||||
/>
|
||||
</div>
|
||||
</Page>
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ import { Connect } from "@cqsjjb/jjb-dva-runtime";
|
|||
import { Button, Descriptions, Form, Modal, Space } from "antd";
|
||||
import { useState } from "react";
|
||||
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 DictionarySelect from "zy-react-library/components/Select/Dictionary";
|
||||
import Table from "zy-react-library/components/Table";
|
||||
|
|
@ -26,7 +27,7 @@ function List(props) {
|
|||
};
|
||||
|
||||
return (
|
||||
<div style={{ padding: 20 }}>
|
||||
<Page isShowAllAction={false}>
|
||||
<Search
|
||||
labelCol={{ span: 8 }}
|
||||
options={[
|
||||
|
|
@ -112,7 +113,7 @@ function List(props) {
|
|||
{...tableProps}
|
||||
/>
|
||||
{rejectReasonModalOpen && <RejectReason rejectReason={rejectReason} onCancel={() => setRejectReasonModalOpen(false)} />}
|
||||
</div>
|
||||
</Page>
|
||||
);
|
||||
}
|
||||
|
||||
|
|
@ -120,7 +121,7 @@ const RejectReason = (props) => {
|
|||
return (
|
||||
<Modal
|
||||
title="查看驳回原因"
|
||||
width={800}
|
||||
width={600}
|
||||
open
|
||||
maskClosable={false}
|
||||
onCancel={props.onCancel}
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ import { Permission } from "@cqsjjb/jjb-common-decorator/permission";
|
|||
import { Connect } from "@cqsjjb/jjb-dva-runtime";
|
||||
import { Button, Descriptions, Form, Modal, Space } from "antd";
|
||||
import { useState } from "react";
|
||||
import Page from "zy-react-library/components/Page";
|
||||
import Search from "zy-react-library/components/Search";
|
||||
import DictionarySelect from "zy-react-library/components/Select/Dictionary";
|
||||
import Table from "zy-react-library/components/Table";
|
||||
|
|
@ -30,7 +31,7 @@ function List(props) {
|
|||
};
|
||||
|
||||
return (
|
||||
<div style={{ padding: 20 }}>
|
||||
<Page isShowAllAction={false}>
|
||||
<Search
|
||||
labelCol={{ span: 8 }}
|
||||
options={[
|
||||
|
|
@ -91,14 +92,14 @@ function List(props) {
|
|||
{...tableProps}
|
||||
/>
|
||||
{rejectReasonModalOpen && <RejectReason rejectReason={rejectReason} onCancel={() => setRejectReasonModalOpen(false)} />}
|
||||
</div>
|
||||
</Page>
|
||||
);
|
||||
}
|
||||
const RejectReason = (props) => {
|
||||
return (
|
||||
<Modal
|
||||
title="查看驳回原因"
|
||||
width={800}
|
||||
width={600}
|
||||
open
|
||||
maskClosable={false}
|
||||
onCancel={props.onCancel}
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ import { Permission } from "@cqsjjb/jjb-common-decorator/permission";
|
|||
import { Connect } from "@cqsjjb/jjb-dva-runtime";
|
||||
import { Button, Descriptions, Form, Modal, Space } from "antd";
|
||||
import { useState } from "react";
|
||||
import Page from "zy-react-library/components/Page";
|
||||
import Search from "zy-react-library/components/Search";
|
||||
import DictionarySelect from "zy-react-library/components/Select/Dictionary";
|
||||
import Table from "zy-react-library/components/Table";
|
||||
|
|
@ -30,7 +31,7 @@ function List(props) {
|
|||
};
|
||||
|
||||
return (
|
||||
<div style={{ padding: 20 }}>
|
||||
<Page isShowAllAction={false}>
|
||||
<Search
|
||||
labelCol={{ span: 8 }}
|
||||
options={[
|
||||
|
|
@ -91,14 +92,14 @@ function List(props) {
|
|||
{...tableProps}
|
||||
/>
|
||||
{rejectReasonModalOpen && <RejectReason rejectReason={rejectReason} onCancel={() => setRejectReasonModalOpen(false)} />}
|
||||
</div>
|
||||
</Page>
|
||||
);
|
||||
}
|
||||
const RejectReason = (props) => {
|
||||
return (
|
||||
<Modal
|
||||
title="查看驳回原因"
|
||||
width={800}
|
||||
width={600}
|
||||
open
|
||||
maskClosable={false}
|
||||
onCancel={props.onCancel}
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ import { Permission } from "@cqsjjb/jjb-common-decorator/permission";
|
|||
import { Connect } from "@cqsjjb/jjb-dva-runtime";
|
||||
import { Button, Descriptions, Form, Modal, Space } from "antd";
|
||||
import { useState } from "react";
|
||||
import Page from "zy-react-library/components/Page";
|
||||
import Search from "zy-react-library/components/Search";
|
||||
import DictionarySelect from "zy-react-library/components/Select/Dictionary";
|
||||
import Table from "zy-react-library/components/Table";
|
||||
|
|
@ -29,7 +30,7 @@ function List(props) {
|
|||
};
|
||||
|
||||
return (
|
||||
<div style={{ padding: 20 }}>
|
||||
<Page isShowAllAction={false}>
|
||||
<Search
|
||||
labelCol={{ span: 8 }}
|
||||
options={[
|
||||
|
|
@ -91,14 +92,14 @@ function List(props) {
|
|||
{...tableProps}
|
||||
/>
|
||||
{rejectReasonModalOpen && <RejectReason rejectReason={rejectReason} onCancel={() => setRejectReasonModalOpen(false)} />}
|
||||
</div>
|
||||
</Page>
|
||||
);
|
||||
}
|
||||
const RejectReason = (props) => {
|
||||
return (
|
||||
<Modal
|
||||
title="查看驳回原因"
|
||||
width={800}
|
||||
width={600}
|
||||
open
|
||||
maskClosable={false}
|
||||
onCancel={props.onCancel}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
import { Permission } from "@cqsjjb/jjb-common-decorator/permission";
|
||||
import { Connect } from "@cqsjjb/jjb-dva-runtime";
|
||||
import { Button, Form, Space } from "antd";
|
||||
import Page from "zy-react-library/components/Page";
|
||||
import Search from "zy-react-library/components/Search";
|
||||
import DictionarySelect from "zy-react-library/components/Select/Dictionary";
|
||||
import Table from "zy-react-library/components/Table";
|
||||
|
|
@ -20,7 +21,7 @@ function List(props) {
|
|||
});
|
||||
|
||||
return (
|
||||
<div style={{ padding: 20 }}>
|
||||
<Page isShowAllAction={false}>
|
||||
<Search
|
||||
labelCol={{ span: 8 }}
|
||||
options={[
|
||||
|
|
@ -89,7 +90,7 @@ function List(props) {
|
|||
]}
|
||||
{...tableProps}
|
||||
/>
|
||||
</div>
|
||||
</Page>
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
import { Connect } from "@cqsjjb/jjb-dva-runtime";
|
||||
import { Button, Form, message, Modal, Space } from "antd";
|
||||
import { useEffect, useMemo, useState } from "react";
|
||||
import HeaderBack from "zy-react-library/components/HeaderBack";
|
||||
import AddIcon from "zy-react-library/components/Icon/AddIcon";
|
||||
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 Table from "zy-react-library/components/Table";
|
||||
import useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery";
|
||||
|
|
@ -71,62 +71,59 @@ function UserChange(props) {
|
|||
};
|
||||
|
||||
return (
|
||||
<div>
|
||||
<HeaderBack title="项目人员变更" />
|
||||
<div style={{ padding: "0 20px 20px 20px" }}>
|
||||
<Table
|
||||
toolBarRender={() => (
|
||||
<Space>
|
||||
<Button
|
||||
type="primary"
|
||||
icon={<AddIcon />}
|
||||
onClick={() => {
|
||||
OnUsercontentOpen();
|
||||
}}
|
||||
>
|
||||
新增
|
||||
</Button>
|
||||
</Space>
|
||||
)}
|
||||
columns={[
|
||||
{ title: "姓名", dataIndex: "userName" },
|
||||
{ title: "部门", dataIndex: "deptName" },
|
||||
{
|
||||
title: "是否为项目负责人",
|
||||
dataIndex: "projectLeader",
|
||||
render: (_, record) => record.projectLeader === 1 ? "是" : "否",
|
||||
},
|
||||
{
|
||||
title: "操作",
|
||||
fixed: "right",
|
||||
render: (_, record) => (
|
||||
<Space>
|
||||
<Page headerTitle="项目人员变更">
|
||||
<Table
|
||||
toolBarRender={() => (
|
||||
<Space>
|
||||
<Button
|
||||
type="primary"
|
||||
icon={<AddIcon />}
|
||||
onClick={() => {
|
||||
OnUsercontentOpen();
|
||||
}}
|
||||
>
|
||||
新增
|
||||
</Button>
|
||||
</Space>
|
||||
)}
|
||||
columns={[
|
||||
{ title: "姓名", dataIndex: "userName" },
|
||||
{ title: "部门", dataIndex: "deptName" },
|
||||
{
|
||||
title: "是否为项目负责人",
|
||||
dataIndex: "projectLeader",
|
||||
render: (_, record) => record.projectLeader === 1 ? "是" : "否",
|
||||
},
|
||||
{
|
||||
title: "操作",
|
||||
fixed: "right",
|
||||
render: (_, record) => (
|
||||
<Space>
|
||||
<Button
|
||||
type="link"
|
||||
onClick={() => {
|
||||
// 查看特种证书逻辑
|
||||
}}
|
||||
>
|
||||
查看特种证书
|
||||
</Button>
|
||||
{record.projectLeader === 0 && (
|
||||
<Button
|
||||
type="link"
|
||||
onClick={() => {
|
||||
// 查看特种证书逻辑
|
||||
}}
|
||||
danger
|
||||
onClick={() => onDelete(record)}
|
||||
>
|
||||
查看特种证书
|
||||
删除
|
||||
</Button>
|
||||
{record.projectLeader === 0 && (
|
||||
<Button
|
||||
type="link"
|
||||
danger
|
||||
onClick={() => onDelete(record)}
|
||||
>
|
||||
删除
|
||||
</Button>
|
||||
)}
|
||||
</Space>
|
||||
),
|
||||
},
|
||||
]}
|
||||
{...tableProps}
|
||||
/>
|
||||
</div>
|
||||
)}
|
||||
</Space>
|
||||
),
|
||||
},
|
||||
]}
|
||||
{...tableProps}
|
||||
/>
|
||||
{usercontentOpen && (
|
||||
<Usercontent
|
||||
<UserSelect
|
||||
data={fetchUserList}
|
||||
projectId={query.id}
|
||||
onCancel={() => {
|
||||
|
|
@ -135,12 +132,12 @@ function UserChange(props) {
|
|||
onConfirm={handleConfirmAdd}
|
||||
/>
|
||||
)}
|
||||
</div>
|
||||
</Page>
|
||||
);
|
||||
}
|
||||
|
||||
// 选择项目人员的组件
|
||||
const UsercontentComponent = (props) => {
|
||||
const UserSelectComponent = (props) => {
|
||||
const [form] = Form.useForm();
|
||||
const [selectedRowKeys, setSelectedRowKeys] = useState([]); // 存储选中的行键
|
||||
const [selectedRows, setSelectedRows] = useState([]); // 存储选中行的完整数据
|
||||
|
|
@ -155,6 +152,7 @@ const UsercontentComponent = (props) => {
|
|||
inDepartmentId,
|
||||
eqEmploymentFlag: 1, // 在职
|
||||
},
|
||||
useStorageQueryCriteria: false,
|
||||
});
|
||||
|
||||
// 合并表格数据:接口返回的数据 + 已存在但可能不在接口数据中的人员
|
||||
|
|
@ -268,19 +266,9 @@ const UsercontentComponent = (props) => {
|
|||
open
|
||||
maskClosable={false}
|
||||
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={{ width: 300 }}>
|
||||
<DepartmentLeftTree
|
||||
|
|
@ -292,7 +280,18 @@ const UsercontentComponent = (props) => {
|
|||
/>
|
||||
</div>
|
||||
<div style={{ flex: 1 }}>
|
||||
<Search
|
||||
labelCol={{ span: 8 }}
|
||||
options={[
|
||||
{ name: "likeName", label: "姓名" },
|
||||
{ name: "likeUserIdCard", label: "身份证" },
|
||||
]}
|
||||
form={form}
|
||||
onFinish={getData}
|
||||
/>
|
||||
<Table
|
||||
options={false}
|
||||
disabledResizer={true}
|
||||
rowSelection={{
|
||||
selectedRowKeys,
|
||||
preserveSelectedRowKeys: true,
|
||||
|
|
@ -302,17 +301,6 @@ const UsercontentComponent = (props) => {
|
|||
disabled: projectLeader && record.id === projectLeader.id,
|
||||
}),
|
||||
}}
|
||||
rowKey="id"
|
||||
toolBarRender={() => (
|
||||
<>
|
||||
<Button
|
||||
type="primary"
|
||||
onClick={handleConfirmAdd}
|
||||
>
|
||||
确认添加
|
||||
</Button>
|
||||
</>
|
||||
)}
|
||||
columns={[
|
||||
{ title: "手机号", dataIndex: "phone" },
|
||||
{
|
||||
|
|
@ -331,9 +319,8 @@ const UsercontentComponent = (props) => {
|
|||
{ title: "所属岗位", dataIndex: "postName" },
|
||||
{ title: "是否存在人资系统", dataIndex: "rzFlag", render: (_, record) => record.rzFlag === 1 ? "是" : "否" },
|
||||
]}
|
||||
{...tableProps}
|
||||
dataSource={tableDataSource}
|
||||
pagination={tableProps.pagination}
|
||||
loading={tableProps.loading}
|
||||
/>
|
||||
</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);
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
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 useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery";
|
||||
import useTable from "zy-react-library/hooks/useTable";
|
||||
|
|
@ -10,20 +10,17 @@ function UserChange(props) {
|
|||
const { tableProps } = useTable(props["projectUserChangeRecordList"], { params: { eqProjectId: query.id } });
|
||||
|
||||
return (
|
||||
<div>
|
||||
<HeaderBack title="项目人员变更记录" />
|
||||
<div style={{ padding: "0 20px 20px 20px" }}>
|
||||
<Table
|
||||
columns={[
|
||||
{ title: "姓名", dataIndex: "userName" },
|
||||
{ title: "部门", dataIndex: "deptName" },
|
||||
{ title: "操作", dataIndex: "changeType", render: (text) => { return text === 1 ? "删除" : "新增"; } },
|
||||
{ title: "记录时间", dataIndex: "createTime" },
|
||||
]}
|
||||
{...tableProps}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<Page headerTitle="项目人员变更记录">
|
||||
<Table
|
||||
columns={[
|
||||
{ title: "姓名", dataIndex: "userName" },
|
||||
{ title: "部门", dataIndex: "deptName" },
|
||||
{ title: "操作", dataIndex: "changeType", render: (text) => { return text === 1 ? "删除" : "新增"; } },
|
||||
{ title: "记录时间", dataIndex: "createTime" },
|
||||
]}
|
||||
{...tableProps}
|
||||
/>
|
||||
</Page>
|
||||
);
|
||||
}
|
||||
export default Connect([NS_QUALIFICATION_STATISTICS], true)(UserChange);
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ import { Connect } from "@cqsjjb/jjb-dva-runtime";
|
|||
import { Form, message } from "antd";
|
||||
import { useEffect } from "react";
|
||||
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 PersonnelSelect from "zy-react-library/components/Select/Personnel/Gwj";
|
||||
import DepartmentSelectTree from "zy-react-library/components/SelectTree/Department/Gwj";
|
||||
|
|
@ -14,7 +14,6 @@ function Add(props) {
|
|||
const query = useGetUrlQuery();
|
||||
const [form] = Form.useForm();
|
||||
const managerDept = Form.useWatch("managerDept", form);
|
||||
const supervisionDept = Form.useWatch("supervisionDept", form);
|
||||
|
||||
const getData = async () => {
|
||||
const { data } = await props["qualificationMaintenanceInfo"]({ id: query.id });
|
||||
|
|
@ -43,129 +42,126 @@ function Add(props) {
|
|||
};
|
||||
|
||||
return (
|
||||
<div>
|
||||
<HeaderBack title={query.id ? "编辑" : "新增"} />
|
||||
<div style={{ paddingBottom: 20 }}>
|
||||
<FormBuilder
|
||||
form={form}
|
||||
values={{
|
||||
status: 0,
|
||||
details: [{
|
||||
dataType: undefined,
|
||||
dataTypeName: undefined,
|
||||
dataName: undefined,
|
||||
isValidity: undefined,
|
||||
}],
|
||||
}}
|
||||
loading={props.qualificationMaintenance.qualificationMaintenanceLoading}
|
||||
onFinish={onSubmit}
|
||||
options={[
|
||||
{ key: "divider-basic", label: "基础信息", render: FORM_ITEM_RENDER_ENUM.DIVIDER },
|
||||
{ name: "qualificationsName", label: "资质名称", span: 24 },
|
||||
{
|
||||
name: "qualificationsTypeId",
|
||||
label: "资质类别",
|
||||
render: (
|
||||
<DictionarySelect
|
||||
dictValue="qualificationsType"
|
||||
onGetLabel={(label) => {
|
||||
form.setFieldValue("qualificationsTypeName", label);
|
||||
}}
|
||||
/>
|
||||
),
|
||||
},
|
||||
{ name: "qualificationsTypeName", label: "资质类别", onlyForLabel: true },
|
||||
{
|
||||
name: "stakeholderLevel",
|
||||
label: "资质级别",
|
||||
render: (
|
||||
<DictionarySelect
|
||||
dictValue="stakeholderLevel"
|
||||
onGetLabel={(label) => {
|
||||
form.setFieldValue("stakeholderLevelName", label);
|
||||
}}
|
||||
/>
|
||||
),
|
||||
},
|
||||
{ name: "stakeholderLevelName", label: "资质级别", onlyForLabel: true },
|
||||
{
|
||||
name: "managerDept",
|
||||
label: "主管部门",
|
||||
render: (
|
||||
<DepartmentSelectTree
|
||||
onGetLabel={(label) => {
|
||||
form.setFieldValue("managerDeptName", label);
|
||||
}}
|
||||
onChange={(_, __, extra) => {
|
||||
form.setFieldValue("managerUser", []);
|
||||
form.setFieldValue("managerUserName", []);
|
||||
form.setFieldValue("corpId", extra.triggerNode.props.corpinfoId);
|
||||
}}
|
||||
/>
|
||||
),
|
||||
},
|
||||
{ name: "managerDeptName", label: "主管部门名称", onlyForLabel: true },
|
||||
{ name: "corpId", label: "主管部门所属公司", onlyForLabel: true },
|
||||
{
|
||||
name: "managerUser",
|
||||
label: "主管人员",
|
||||
render: (
|
||||
<PersonnelSelect
|
||||
params={{ departmentId: managerDept }}
|
||||
mode="multiple"
|
||||
onGetLabel={(label) => {
|
||||
form.setFieldValue("managerUserName", label);
|
||||
}}
|
||||
/>
|
||||
),
|
||||
},
|
||||
{ name: "managerUserName", label: "主管人员名称", onlyForLabel: true },
|
||||
{
|
||||
name: "status",
|
||||
label: "是否启用",
|
||||
render: FORM_ITEM_RENDER_ENUM.RADIO,
|
||||
items: [{ name: "是", bianma: 0 }, { name: "否", bianma: 1 }],
|
||||
},
|
||||
<Page headerTitle={query.id ? "编辑" : "新增"} isShowFooter={false}>
|
||||
<FormBuilder
|
||||
form={form}
|
||||
values={{
|
||||
status: 0,
|
||||
details: [{
|
||||
dataType: undefined,
|
||||
dataTypeName: undefined,
|
||||
dataName: undefined,
|
||||
isValidity: undefined,
|
||||
}],
|
||||
}}
|
||||
loading={props.qualificationMaintenance.qualificationMaintenanceLoading}
|
||||
onFinish={onSubmit}
|
||||
options={[
|
||||
{ key: "divider-basic", label: "基础信息", render: FORM_ITEM_RENDER_ENUM.DIVIDER },
|
||||
{ name: "qualificationsName", label: "资质名称", span: 24 },
|
||||
{
|
||||
name: "qualificationsTypeId",
|
||||
label: "资质类别",
|
||||
render: (
|
||||
<DictionarySelect
|
||||
dictValue="qualificationsType"
|
||||
onGetLabel={(label) => {
|
||||
form.setFieldValue("qualificationsTypeName", label);
|
||||
}}
|
||||
/>
|
||||
),
|
||||
},
|
||||
{ name: "qualificationsTypeName", label: "资质类别", onlyForLabel: true },
|
||||
{
|
||||
name: "stakeholderLevel",
|
||||
label: "资质级别",
|
||||
render: (
|
||||
<DictionarySelect
|
||||
dictValue="stakeholderLevel"
|
||||
onGetLabel={(label) => {
|
||||
form.setFieldValue("stakeholderLevelName", label);
|
||||
}}
|
||||
/>
|
||||
),
|
||||
},
|
||||
{ name: "stakeholderLevelName", label: "资质级别", onlyForLabel: true },
|
||||
{
|
||||
name: "managerDept",
|
||||
label: "主管部门",
|
||||
render: (
|
||||
<DepartmentSelectTree
|
||||
onGetLabel={(label) => {
|
||||
form.setFieldValue("managerDeptName", label);
|
||||
}}
|
||||
onChange={(_, __, extra) => {
|
||||
form.setFieldValue("managerUser", []);
|
||||
form.setFieldValue("managerUserName", []);
|
||||
form.setFieldValue("corpId", extra.triggerNode.props.corpinfoId);
|
||||
}}
|
||||
/>
|
||||
),
|
||||
},
|
||||
{ name: "managerDeptName", label: "主管部门名称", onlyForLabel: true },
|
||||
{ name: "corpId", label: "主管部门所属公司", onlyForLabel: true },
|
||||
{
|
||||
name: "managerUser",
|
||||
label: "主管人员",
|
||||
render: (
|
||||
<PersonnelSelect
|
||||
params={{ departmentId: managerDept }}
|
||||
mode="multiple"
|
||||
onGetLabel={(label) => {
|
||||
form.setFieldValue("managerUserName", label);
|
||||
}}
|
||||
/>
|
||||
),
|
||||
},
|
||||
{ name: "managerUserName", label: "主管人员名称", onlyForLabel: true },
|
||||
{
|
||||
name: "status",
|
||||
label: "是否启用",
|
||||
render: FORM_ITEM_RENDER_ENUM.RADIO,
|
||||
items: [{ name: "是", bianma: 0 }, { name: "否", bianma: 1 }],
|
||||
},
|
||||
|
||||
{ key: "divider-detail", label: "资料信息", render: FORM_ITEM_RENDER_ENUM.DIVIDER },
|
||||
{
|
||||
name: "details",
|
||||
span: 24,
|
||||
render: FORM_ITEM_RENDER_ENUM.FORM_LIST,
|
||||
formListUniqueProps: {
|
||||
options: field => (
|
||||
[
|
||||
{
|
||||
label: "资料属性",
|
||||
name: [field.name, "dataType"],
|
||||
span: 8,
|
||||
render: (
|
||||
<DictionarySelect
|
||||
dictValue="dataType"
|
||||
onGetLabel={(label) => {
|
||||
form.setFieldValue(["details", field.name, "dataTypeName"], label);
|
||||
}}
|
||||
/>
|
||||
),
|
||||
},
|
||||
{ label: "资料属性名称", name: [field.name, "dataTypeName"], span: 8, onlyForLabel: true },
|
||||
{ label: "资料名称", name: [field.name, "dataName"], span: 8 },
|
||||
{
|
||||
label: "是否涉及有效时间",
|
||||
name: [field.name, "isValidity"],
|
||||
span: 8,
|
||||
render: FORM_ITEM_RENDER_ENUM.RADIO,
|
||||
items: [{ bianma: 0, name: "是" }, { bianma: 1, name: "否" }],
|
||||
labelCol: { span: 6 },
|
||||
},
|
||||
]
|
||||
),
|
||||
},
|
||||
{ key: "divider-detail", label: "资料信息", render: FORM_ITEM_RENDER_ENUM.DIVIDER },
|
||||
{
|
||||
name: "details",
|
||||
span: 24,
|
||||
render: FORM_ITEM_RENDER_ENUM.FORM_LIST,
|
||||
formListUniqueProps: {
|
||||
options: field => (
|
||||
[
|
||||
{
|
||||
label: "资料属性",
|
||||
name: [field.name, "dataType"],
|
||||
span: 8,
|
||||
render: (
|
||||
<DictionarySelect
|
||||
dictValue="dataType"
|
||||
onGetLabel={(label) => {
|
||||
form.setFieldValue(["details", field.name, "dataTypeName"], label);
|
||||
}}
|
||||
/>
|
||||
),
|
||||
},
|
||||
{ label: "资料属性名称", name: [field.name, "dataTypeName"], span: 8, onlyForLabel: true },
|
||||
{ label: "资料名称", name: [field.name, "dataName"], span: 8 },
|
||||
{
|
||||
label: "是否涉及有效时间",
|
||||
name: [field.name, "isValidity"],
|
||||
span: 8,
|
||||
render: FORM_ITEM_RENDER_ENUM.RADIO,
|
||||
items: [{ bianma: 0, name: "是" }, { bianma: 1, name: "否" }],
|
||||
labelCol: { span: 6 },
|
||||
},
|
||||
]
|
||||
),
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</Page>
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ import { Connect } from "@cqsjjb/jjb-dva-runtime";
|
|||
import { Form, message } from "antd";
|
||||
import { useEffect } from "react";
|
||||
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 { FORM_ITEM_RENDER_ENUM } from "zy-react-library/enum/formItemRender";
|
||||
import useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery";
|
||||
|
|
@ -29,61 +29,58 @@ function AddQualifications(props) {
|
|||
};
|
||||
|
||||
return (
|
||||
<div>
|
||||
<HeaderBack title="添加资质" />
|
||||
<div style={{ paddingBottom: 20 }}>
|
||||
<FormBuilder
|
||||
form={form}
|
||||
values={{
|
||||
qualificationsDetailAddCmdList: [{
|
||||
dataType: undefined,
|
||||
dataTypeName: undefined,
|
||||
dataName: undefined,
|
||||
isValidity: undefined,
|
||||
}],
|
||||
}}
|
||||
loading={props.qualificationMaintenance.qualificationMaintenanceLoading}
|
||||
onFinish={onSubmit}
|
||||
span={24}
|
||||
labelCol={{ span: 6 }}
|
||||
options={[
|
||||
{
|
||||
name: "qualificationsDetailAddCmdList",
|
||||
span: 24,
|
||||
render: FORM_ITEM_RENDER_ENUM.FORM_LIST,
|
||||
formListUniqueProps: {
|
||||
options: field => (
|
||||
[
|
||||
{
|
||||
label: "资料属性",
|
||||
name: [field.name, "dataType"],
|
||||
span: 8,
|
||||
render: (
|
||||
<DictionarySelect
|
||||
dictValue="dataType"
|
||||
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, "isValidity"],
|
||||
span: 8,
|
||||
render: FORM_ITEM_RENDER_ENUM.RADIO,
|
||||
items: [{ bianma: 0, name: "是" }, { bianma: 1, name: "否" }],
|
||||
},
|
||||
]
|
||||
),
|
||||
},
|
||||
<Page headerTitle="添加资质" isShowFooter={false}>
|
||||
<FormBuilder
|
||||
form={form}
|
||||
values={{
|
||||
qualificationsDetailAddCmdList: [{
|
||||
dataType: undefined,
|
||||
dataTypeName: undefined,
|
||||
dataName: undefined,
|
||||
isValidity: undefined,
|
||||
}],
|
||||
}}
|
||||
loading={props.qualificationMaintenance.qualificationMaintenanceLoading}
|
||||
onFinish={onSubmit}
|
||||
span={24}
|
||||
labelCol={{ span: 6 }}
|
||||
options={[
|
||||
{
|
||||
name: "qualificationsDetailAddCmdList",
|
||||
span: 24,
|
||||
render: FORM_ITEM_RENDER_ENUM.FORM_LIST,
|
||||
formListUniqueProps: {
|
||||
options: field => (
|
||||
[
|
||||
{
|
||||
label: "资料属性",
|
||||
name: [field.name, "dataType"],
|
||||
span: 8,
|
||||
render: (
|
||||
<DictionarySelect
|
||||
dictValue="dataType"
|
||||
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, "isValidity"],
|
||||
span: 8,
|
||||
render: FORM_ITEM_RENDER_ENUM.RADIO,
|
||||
items: [{ bianma: 0, name: "是" }, { bianma: 1, name: "否" }],
|
||||
},
|
||||
]
|
||||
),
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</Page>
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import { Connect } from "@cqsjjb/jjb-dva-runtime";
|
||||
import { Button } from "antd";
|
||||
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 useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery";
|
||||
import useTable from "zy-react-library/hooks/useTable";
|
||||
|
|
@ -17,39 +17,37 @@ function ChangeLogList(props) {
|
|||
});
|
||||
|
||||
return (
|
||||
<div>
|
||||
<HeaderBack title="变更记录" />
|
||||
<div style={{ padding: 20 }}>
|
||||
<Table
|
||||
rowSelection={{
|
||||
preserveSelectedRowKeys: true,
|
||||
selectedRowKeys,
|
||||
onChange: (selectedRowKeys) => {
|
||||
if (selectedRowKeys.length <= 2)
|
||||
setSelectedRowKeys(selectedRowKeys);
|
||||
},
|
||||
getCheckboxProps: record => ({ disabled: selectedRowKeys.length >= 2 && !selectedRowKeys.includes(record.id) }),
|
||||
hideSelectAll: true,
|
||||
}}
|
||||
toolBarRender={() => (
|
||||
<Button
|
||||
type="primary"
|
||||
disabled={selectedRowKeys.length !== 2}
|
||||
onClick={() => {
|
||||
props.history.push(`./changeLogView?ids=${selectedRowKeys.join(",")}`);
|
||||
}}
|
||||
>
|
||||
版本对比
|
||||
</Button>
|
||||
)}
|
||||
columns={[
|
||||
{ title: "操作时间", dataIndex: "createTime" },
|
||||
{ title: "操作人", dataIndex: "createName" },
|
||||
]}
|
||||
{...tableProps}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<Page headerTitle="变更记录">
|
||||
<Table
|
||||
rowSelection={{
|
||||
preserveSelectedRowKeys: true,
|
||||
selectedRowKeys,
|
||||
onChange: (selectedRowKeys) => {
|
||||
if (selectedRowKeys.length <= 2)
|
||||
setSelectedRowKeys(selectedRowKeys);
|
||||
},
|
||||
getCheckboxProps: record => ({ disabled: selectedRowKeys.length >= 2 && !selectedRowKeys.includes(record.id) }),
|
||||
hideSelectAll: true,
|
||||
}}
|
||||
toolBarRender={() => (
|
||||
<Button
|
||||
type="primary"
|
||||
ghost
|
||||
disabled={selectedRowKeys.length !== 2}
|
||||
onClick={() => {
|
||||
props.history.push(`./changeLogView?ids=${selectedRowKeys.join(",")}`);
|
||||
}}
|
||||
>
|
||||
版本对比
|
||||
</Button>
|
||||
)}
|
||||
columns={[
|
||||
{ title: "操作时间", dataIndex: "createTime" },
|
||||
{ title: "操作人", dataIndex: "createName" },
|
||||
]}
|
||||
{...tableProps}
|
||||
/>
|
||||
</Page>
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import { Connect } from "@cqsjjb/jjb-dva-runtime";
|
||||
import { Descriptions, Divider } from "antd";
|
||||
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 useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery";
|
||||
import { getLabelName } from "zy-react-library/utils";
|
||||
|
|
@ -12,7 +12,6 @@ function ChangeLogView(props) {
|
|||
const { ids } = useGetUrlQuery();
|
||||
const getData = async () => {
|
||||
const { data } = await props["getQualificationMaintenanceChangeLogByIds"]({ ids });
|
||||
console.log(data);
|
||||
setInfo(data);
|
||||
};
|
||||
|
||||
|
|
@ -21,67 +20,64 @@ function ChangeLogView(props) {
|
|||
}, []);
|
||||
|
||||
return (
|
||||
<div>
|
||||
<HeaderBack title="版本对比" />
|
||||
<div style={{ padding: "0 20px 20px 20px" }}>
|
||||
<div style={{ display: "flex" }}>
|
||||
{
|
||||
info.map((item, index) => (
|
||||
<div
|
||||
key={item.id}
|
||||
style={{
|
||||
flex: 1,
|
||||
borderRight: index === 0 ? "1px solid #ccc" : "",
|
||||
paddingRight: index === 0 ? 20 : 0,
|
||||
paddingLeft: index === 0 ? 0 : 20,
|
||||
}}
|
||||
>
|
||||
<Divider orientation="left">基础信息</Divider>
|
||||
<Descriptions
|
||||
bordered
|
||||
column={1}
|
||||
styles={{ label: { width: 200 } }}
|
||||
items={[
|
||||
{ label: "操作时间", children: item.createTime },
|
||||
{ label: "操作人员", children: item.createName },
|
||||
{ label: "资质名称", children: item.info.qualificationsName },
|
||||
{ label: "资质类别", children: item.info.qualificationsTypeName },
|
||||
{ label: "资质等级", children: item.info.stakeholderLevelName },
|
||||
{ label: "主管部门", children: item.info.managerDeptName },
|
||||
{
|
||||
label: "是否启用",
|
||||
children: getLabelName({
|
||||
list: [{ name: "是", bianma: 0 }, { name: "否", bianma: 1 }],
|
||||
status: item.info.status,
|
||||
}),
|
||||
},
|
||||
]}
|
||||
/>
|
||||
<Divider orientation="left">资料信息</Divider>
|
||||
<Table
|
||||
options={false}
|
||||
disabledResizer={true}
|
||||
pagination={false}
|
||||
dataSource={item.info.details || []}
|
||||
columns={[
|
||||
{ title: "资料属性", dataIndex: "dataTypeName" },
|
||||
{ title: "资料名称", dataIndex: "dataName" },
|
||||
{
|
||||
title: "是否涉及时效",
|
||||
dataIndex: "isValidity",
|
||||
render: (_, record) => getLabelName({
|
||||
list: [{ name: "是", bianma: 0 }, { name: "否", bianma: 1 }],
|
||||
status: record.isValidity,
|
||||
}),
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</div>
|
||||
))
|
||||
}
|
||||
</div>
|
||||
<Page headerTitle="版本对比" contentPadding="0 20px 20px 20px">
|
||||
<div style={{ display: "flex" }}>
|
||||
{
|
||||
info.map((item, index) => (
|
||||
<div
|
||||
key={item.id}
|
||||
style={{
|
||||
flex: 1,
|
||||
borderRight: index === 0 ? "1px solid #ccc" : "",
|
||||
paddingRight: index === 0 ? 20 : 0,
|
||||
paddingLeft: index === 0 ? 0 : 20,
|
||||
}}
|
||||
>
|
||||
<Divider orientation="left">基础信息</Divider>
|
||||
<Descriptions
|
||||
bordered
|
||||
column={1}
|
||||
styles={{ label: { width: 200 } }}
|
||||
items={[
|
||||
{ label: "操作时间", children: item.createTime },
|
||||
{ label: "操作人员", children: item.createName },
|
||||
{ label: "资质名称", children: item.info.qualificationsName },
|
||||
{ label: "资质类别", children: item.info.qualificationsTypeName },
|
||||
{ label: "资质等级", children: item.info.stakeholderLevelName },
|
||||
{ label: "主管部门", children: item.info.managerDeptName },
|
||||
{
|
||||
label: "是否启用",
|
||||
children: getLabelName({
|
||||
list: [{ name: "是", bianma: 0 }, { name: "否", bianma: 1 }],
|
||||
status: item.info.status,
|
||||
}),
|
||||
},
|
||||
]}
|
||||
/>
|
||||
<Divider orientation="left">资料信息</Divider>
|
||||
<Table
|
||||
options={false}
|
||||
disabledResizer={true}
|
||||
pagination={false}
|
||||
dataSource={item.info.details || []}
|
||||
columns={[
|
||||
{ title: "资料属性", dataIndex: "dataTypeName" },
|
||||
{ title: "资料名称", dataIndex: "dataName" },
|
||||
{
|
||||
title: "是否涉及时效",
|
||||
dataIndex: "isValidity",
|
||||
render: (_, record) => getLabelName({
|
||||
list: [{ name: "是", bianma: 0 }, { name: "否", bianma: 1 }],
|
||||
status: record.isValidity,
|
||||
}),
|
||||
},
|
||||
]}
|
||||
/>
|
||||
</div>
|
||||
))
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</Page>
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ import { Permission } from "@cqsjjb/jjb-common-decorator/permission";
|
|||
import { Connect } from "@cqsjjb/jjb-dva-runtime";
|
||||
import { Button, Form, message, Modal, Space } from "antd";
|
||||
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 DictionarySelect from "zy-react-library/components/Select/Dictionary";
|
||||
import Table from "zy-react-library/components/Table";
|
||||
|
|
@ -30,7 +31,7 @@ function List(props) {
|
|||
};
|
||||
|
||||
return (
|
||||
<div style={{ padding: 20 }}>
|
||||
<Page isShowAllAction={false}>
|
||||
<Search
|
||||
labelCol={{ span: 8 }}
|
||||
options={[
|
||||
|
|
@ -105,7 +106,7 @@ function List(props) {
|
|||
]}
|
||||
{...tableProps}
|
||||
/>
|
||||
</div>
|
||||
</Page>
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import { Connect } from "@cqsjjb/jjb-dva-runtime";
|
||||
import { Button, Space } from "antd";
|
||||
import HeaderBack from "zy-react-library/components/HeaderBack";
|
||||
import { Button, Space, Tooltip } from "antd";
|
||||
import Page from "zy-react-library/components/Page";
|
||||
import Table from "zy-react-library/components/Table";
|
||||
import useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery";
|
||||
import useTable from "zy-react-library/hooks/useTable";
|
||||
|
|
@ -11,77 +11,85 @@ function History(props) {
|
|||
const { tableProps } = useTable(props["qualificationRecordsHistoryList"], { params: { id: query.id } });
|
||||
|
||||
return (
|
||||
<div>
|
||||
<HeaderBack title="过往资料" />
|
||||
<div style={{ padding: "0 20px 20px 20px" }}>
|
||||
<Table
|
||||
columns={[
|
||||
{ title: "相关方名称", dataIndex: "corpName" },
|
||||
{ title: "资质名称", dataIndex: "qualificationsName" },
|
||||
{ title: "资质类别", dataIndex: "qualificationsTypeName" },
|
||||
{ title: "资质级别", dataIndex: "stakeholderLevelName" },
|
||||
{ title: "材料数", dataIndex: "materialNum" },
|
||||
{
|
||||
title: "资质状态", dataIndex: "qualificationsStatus", 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) => (
|
||||
<Page headerTitle="过往资料">
|
||||
<Table
|
||||
columns={[
|
||||
{ title: "相关方名称", dataIndex: "corpName" },
|
||||
{ title: "资质名称", dataIndex: "qualificationsName" },
|
||||
{ title: "资质类别", dataIndex: "qualificationsTypeName" },
|
||||
{ title: "资质级别", dataIndex: "stakeholderLevelName" },
|
||||
{ title: "材料数", dataIndex: "materialNum" },
|
||||
{
|
||||
title: "资质状态",
|
||||
dataIndex: "qualificationsStatus",
|
||||
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}`);
|
||||
}}
|
||||
{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>
|
||||
)
|
||||
: "部分资料已过期"
|
||||
}
|
||||
>
|
||||
查看
|
||||
</Button>
|
||||
</Space>
|
||||
),
|
||||
},
|
||||
]}
|
||||
{...tableProps}
|
||||
/>
|
||||
</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>
|
||||
{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>
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ import { WarningOutlined } from "@ant-design/icons";
|
|||
import { Permission } from "@cqsjjb/jjb-common-decorator/permission";
|
||||
import { Connect } from "@cqsjjb/jjb-dva-runtime";
|
||||
import { Button, Form, Space, Tooltip } from "antd";
|
||||
import Page from "zy-react-library/components/Page";
|
||||
import Search from "zy-react-library/components/Search";
|
||||
import DictionarySelect from "zy-react-library/components/Select/Dictionary";
|
||||
import Table from "zy-react-library/components/Table";
|
||||
|
|
@ -23,7 +24,7 @@ function List(props) {
|
|||
});
|
||||
|
||||
return (
|
||||
<div style={{ padding: 20 }}>
|
||||
<Page isShowAllAction={false}>
|
||||
<Search
|
||||
labelCol={{ span: 8 }}
|
||||
options={[
|
||||
|
|
@ -132,7 +133,7 @@ function List(props) {
|
|||
]}
|
||||
{...tableProps}
|
||||
/>
|
||||
</div>
|
||||
</Page>
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
import { Permission } from "@cqsjjb/jjb-common-decorator/permission";
|
||||
import { Connect } from "@cqsjjb/jjb-dva-runtime";
|
||||
import { Button, Form, Space } from "antd";
|
||||
import Page from "zy-react-library/components/Page";
|
||||
import Search from "zy-react-library/components/Search";
|
||||
import DictionarySelect from "zy-react-library/components/Select/Dictionary";
|
||||
import Table from "zy-react-library/components/Table";
|
||||
|
|
@ -14,7 +15,7 @@ function List(props) {
|
|||
});
|
||||
|
||||
return (
|
||||
<div style={{ padding: 20 }}>
|
||||
<Page isShowAllAction={false}>
|
||||
<Search
|
||||
labelCol={{ span: 8 }}
|
||||
options={[
|
||||
|
|
@ -103,7 +104,7 @@ function List(props) {
|
|||
]}
|
||||
{...tableProps}
|
||||
/>
|
||||
</div>
|
||||
</Page>
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
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 FormBuilder from "zy-react-library/components/FormBuilder";
|
||||
import { FORM_ITEM_RENDER_ENUM } from "zy-react-library/enum/formItemRender";
|
||||
|
|
@ -25,9 +25,11 @@ function Review(props) {
|
|||
|
||||
return (
|
||||
<div>
|
||||
<ViewInfo onGetData={info => setInfo(info)} title="审核">
|
||||
<div style={{ textAlign: "center", marginTop: 10 }}>
|
||||
<Space>
|
||||
<ViewInfo
|
||||
onGetData={info => setInfo(info)}
|
||||
title="审核"
|
||||
extraActionButtons={(
|
||||
<>
|
||||
<Button
|
||||
type="primary"
|
||||
onClick={() => {
|
||||
|
|
@ -50,9 +52,9 @@ function Review(props) {
|
|||
>
|
||||
驳回
|
||||
</Button>
|
||||
</Space>
|
||||
</div>
|
||||
</ViewInfo>
|
||||
</>
|
||||
)}
|
||||
/>
|
||||
{rejectModalOpen && <RejectModal onCancel={() => setRejectModalOpen(false)} id={query.id} />}
|
||||
{passModalOpen && <PassModal onCancel={() => setPassModalOpen(false)} id={query.id} />}
|
||||
</div>
|
||||
|
|
@ -73,18 +75,20 @@ const RejectModalComponent = (props) => {
|
|||
return (
|
||||
<Modal
|
||||
title="驳回"
|
||||
width={1000}
|
||||
width={600}
|
||||
open
|
||||
maskClosable={false}
|
||||
onCancel={props.onCancel}
|
||||
onOk={form.submit}
|
||||
confirmLoading={props.qualificationReview.userQualificationLoading}
|
||||
>
|
||||
<FormBuilder
|
||||
form={form}
|
||||
span={24}
|
||||
labelCol={{ span: 8 }}
|
||||
labelCol={{ span: 10 }}
|
||||
showActionButtons={false}
|
||||
onFinish={onSubmit}
|
||||
loading={props.qualificationReview.userQualificationLoading}
|
||||
options={[
|
||||
{ name: "auditRemarks", label: "驳回原因", render: FORM_ITEM_RENDER_ENUM.TEXTAREA },
|
||||
]}
|
||||
|
|
@ -107,18 +111,20 @@ const PassModalComponent = (props) => {
|
|||
return (
|
||||
<Modal
|
||||
title="通过"
|
||||
width={1000}
|
||||
width={600}
|
||||
open
|
||||
maskClosable={false}
|
||||
onCancel={props.onCancel}
|
||||
onOk={form.submit}
|
||||
confirmLoading={props.qualificationReview.userQualificationLoading}
|
||||
>
|
||||
<FormBuilder
|
||||
form={form}
|
||||
values={{ isLongTerm: 1 }}
|
||||
labelCol={{ span: 8 }}
|
||||
labelCol={{ span: 12 }}
|
||||
showActionButtons={false}
|
||||
onFinish={onSubmit}
|
||||
loading={props.qualificationReview.userQualificationLoading}
|
||||
options={[
|
||||
{
|
||||
name: "isLongTerm",
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
import { Connect } from "@cqsjjb/jjb-dva-runtime";
|
||||
import { Descriptions } from "antd";
|
||||
import { useEffect, useState } from "react";
|
||||
import Page from "zy-react-library/components/Page";
|
||||
import { NS_QUALIFICATION_STATISTICS } from "~/enumerate/namespace";
|
||||
|
||||
function Statistics(props) {
|
||||
|
|
@ -15,7 +16,7 @@ function Statistics(props) {
|
|||
}, []);
|
||||
|
||||
return (
|
||||
<div style={{ padding: 20 }}>
|
||||
<Page isShowAllAction={false}>
|
||||
<Descriptions
|
||||
column={1}
|
||||
bordered
|
||||
|
|
@ -34,7 +35,7 @@ function Statistics(props) {
|
|||
{ label: "其他类相关方数量", children: info.otherStakeholders },
|
||||
]}
|
||||
/>
|
||||
</div>
|
||||
</Page>
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import { Connect } from "@cqsjjb/jjb-dva-runtime";
|
||||
import { Button, Descriptions, Divider, Spin } from "antd";
|
||||
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 TooltipPreviewImg from "zy-react-library/components/TooltipPreviewImg";
|
||||
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 [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 () => {
|
||||
if (!query.id)
|
||||
return;
|
||||
|
|
@ -61,165 +70,152 @@ function ViewInfo(props) {
|
|||
corpInfoData.licenseFile = licenseFile;
|
||||
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(() => {
|
||||
getData();
|
||||
}, []);
|
||||
|
||||
return (
|
||||
<>
|
||||
<HeaderBack title={props.title || "查看"} />
|
||||
<div style={{ padding: "0 20px 20px 20px" }}>
|
||||
<div className="qualification-view">
|
||||
<div>
|
||||
<Divider orientation="left">流程信息</Divider>
|
||||
<div className="flows-container">
|
||||
<div className="flows">
|
||||
{
|
||||
info.processFlow.map((item, index) => (
|
||||
<Fragment key={index}>
|
||||
<div className="flow">
|
||||
<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 === 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>
|
||||
)
|
||||
}
|
||||
<Page headerTitle={props.title || "查看"} contentPadding="0 20px 20px 20px" extraActionButtons={props.extraActionButtons}>
|
||||
<div className="qualification-view">
|
||||
<div>
|
||||
<Divider orientation="left">流程信息</Divider>
|
||||
<div className="flows-container">
|
||||
<div className="flows">
|
||||
{
|
||||
info.processFlow.map((item, index) => (
|
||||
<Fragment key={index}>
|
||||
<div className="flow">
|
||||
<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 === 100 && "待审核"}
|
||||
{item.auditStatus === 300 && "已驳回"}
|
||||
</div>
|
||||
{index !== info.processFlow.length - 1 && <div className="line" />}
|
||||
</Fragment>
|
||||
))
|
||||
}
|
||||
</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>
|
||||
{index !== info.processFlow.length - 1 && <div className="line" />}
|
||||
</Fragment>
|
||||
))
|
||||
}
|
||||
</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>
|
||||
{viewQualificationDetailsModalOpen
|
||||
&& (
|
||||
<ViewQualificationDetailsModal
|
||||
onCancel={() => setViewQualificationDetailsModalOpen(false)}
|
||||
data={viewQualificationDetailsModalData}
|
||||
<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 },
|
||||
]}
|
||||
/>
|
||||
)}
|
||||
{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>
|
||||
</>
|
||||
{viewQualificationDetailsModalOpen
|
||||
&& (
|
||||
<ViewQualificationDetailsModal
|
||||
onCancel={() => setViewQualificationDetailsModalOpen(false)}
|
||||
data={viewQualificationDetailsModalData}
|
||||
/>
|
||||
)}
|
||||
{props.children}
|
||||
</Page>
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue