safety-eval-service-frontend/src/pages/Container/QualificationReview/ExpertVerification/index.js

200 lines
5.6 KiB
JavaScript
Raw Normal View History

2026-07-07 18:07:59 +08:00
import React, { useEffect } from "react";
import { Button, Form, Select, Table, Tag } from "antd";
2026-06-30 15:59:15 +08:00
import PageLayout from "@cqsjjb/jjb-react-admin-component/PageLayout";
import SearchForm from "@cqsjjb/jjb-react-admin-component/SearchForm";
2026-07-07 18:07:59 +08:00
import TableAction from "@cqsjjb/jjb-react-admin-component/TableAction";
2026-06-30 15:59:15 +08:00
import ControlWrapper from "@cqsjjb/jjb-react-admin-component/ControlWrapper";
import { AntdTableFuncControl } from "@cqsjjb/jjb-common-decorator/antd";
2026-07-07 18:07:59 +08:00
import { tools } from "@cqsjjb/jjb-common-lib";
import { Connect } from "@cqsjjb/jjb-dva-runtime";
import { NS_QUAL_REVIEW } from "~/enumerate/namespace";
2026-06-30 15:59:15 +08:00
import { VERIFY_STATUS_MAP } from "~/enumerate/constant";
2026-07-07 18:07:59 +08:00
import {
FILING_CODE_TO_CONFIRM,
REVIEW_BUSINESS_SCOPE_OPTIONS,
REVIEW_UNIT_TYPE_OPTIONS,
toQualReviewPageQuery,
} from "../reviewPageQuery";
2026-06-30 15:59:15 +08:00
2026-07-07 18:07:59 +08:00
const { router } = tools;
2026-06-30 15:59:15 +08:00
const ExpertVerification = (props) => {
const [form] = Form.useForm();
2026-07-07 18:07:59 +08:00
const { qualReview, queryReviewList } = props;
2026-07-08 11:09:38 +08:00
const { qualReviewList, qualReviewTotal, qualReviewLoading } =
qualReview || {};
2026-06-30 15:59:15 +08:00
const handleSearch = () => {
2026-07-07 18:07:59 +08:00
queryReviewList({
...toQualReviewPageQuery(router.query),
supervision: true,
applyTypeCode: 1,
});
2026-06-30 15:59:15 +08:00
};
const handleReset = (values) => {
2026-07-07 18:07:59 +08:00
router.query = {
2026-06-30 15:59:15 +08:00
...router.query,
...values,
current: 1,
2026-07-07 18:07:59 +08:00
size: 10,
};
2026-06-30 15:59:15 +08:00
handleSearch();
};
useEffect(() => {
form.setFieldsValue(router.query);
2026-07-07 18:07:59 +08:00
handleSearch();
2026-06-30 15:59:15 +08:00
}, []);
const columns = [
{
title: "序号",
width: 60,
fixed: "left",
2026-07-07 18:07:59 +08:00
render: (_, __, index) => index + 1,
2026-06-30 15:59:15 +08:00
},
2026-07-08 11:09:38 +08:00
{
title: "机构名称",
dataIndex: "filingUnitName",
width: 220,
ellipsis: true,
},
2026-07-07 18:07:59 +08:00
{ title: "机构类型", dataIndex: "filingUnitTypeName", width: 100 },
{ title: "证书编号", dataIndex: "filingNo", width: 140, ellipsis: true },
2026-07-08 11:09:38 +08:00
{
title: "安全评价业务范围",
dataIndex: "businessScope",
width: 180,
ellipsis: true,
},
2026-06-30 15:59:15 +08:00
{
title: "确认状态",
2026-07-07 18:07:59 +08:00
dataIndex: "filingStatusCode",
2026-06-30 15:59:15 +08:00
width: 100,
2026-07-07 18:07:59 +08:00
render: (code) => {
const status = FILING_CODE_TO_CONFIRM[code];
2026-06-30 15:59:15 +08:00
const config = VERIFY_STATUS_MAP[status];
2026-07-07 18:07:59 +08:00
return config ? <Tag color={config.color}>{config.label}</Tag> : "--";
2026-06-30 15:59:15 +08:00
},
},
{
title: "操作",
width: 140,
fixed: "right",
render: (_, record) => (
2026-07-07 18:07:59 +08:00
<TableAction>
2026-07-08 11:09:38 +08:00
<Button
type="link"
size="small"
// onClick={() => props.history.push(`FilingDetail?id=${record.id}`)}
>
2026-06-30 15:59:15 +08:00
查看
</Button>
2026-07-07 18:07:59 +08:00
{record.filingStatusCode === 2 && (
2026-07-08 11:09:38 +08:00
<Button
type="link"
size="small"
// onClick={() =>
// props.history.push(`QualReviewForm?id=${record.id}`)
// }
>
2026-06-30 15:59:15 +08:00
核验
</Button>
)}
2026-07-07 18:07:59 +08:00
</TableAction>
2026-06-30 15:59:15 +08:00
),
},
];
return (
<PageLayout title="专家资料核验">
<SearchForm
style={{ marginBottom: 24 }}
form={form}
2026-07-07 18:07:59 +08:00
loading={qualReviewLoading}
2026-06-30 15:59:15 +08:00
formLine={[
2026-07-07 18:07:59 +08:00
<Form.Item key="filingUnitName" name="filingUnitName">
2026-07-08 11:09:38 +08:00
<ControlWrapper.Input
label="机构名称"
placeholder="请输入"
allowClear
/>
2026-06-30 15:59:15 +08:00
</Form.Item>,
2026-07-07 18:07:59 +08:00
<Form.Item key="filingUnitTypeName" name="filingUnitTypeName">
2026-06-30 15:59:15 +08:00
<ControlWrapper.Select
label="机构类型"
2026-07-07 18:07:59 +08:00
placeholder="请选择"
2026-06-30 15:59:15 +08:00
allowClear
style={{ width: "100%" }}
2026-07-07 18:07:59 +08:00
options={REVIEW_UNIT_TYPE_OPTIONS}
/>
2026-06-30 15:59:15 +08:00
</Form.Item>,
2026-07-07 18:07:59 +08:00
<Form.Item key="businessScope" name="businessScope">
2026-06-30 15:59:15 +08:00
<ControlWrapper.Select
label="安全评价业务范围"
2026-07-07 18:07:59 +08:00
placeholder="请选择"
2026-06-30 15:59:15 +08:00
allowClear
2026-07-07 18:07:59 +08:00
showSearch
optionFilterProp="label"
2026-06-30 15:59:15 +08:00
style={{ width: "100%" }}
2026-07-07 18:07:59 +08:00
options={REVIEW_BUSINESS_SCOPE_OPTIONS}
/>
2026-06-30 15:59:15 +08:00
</Form.Item>,
<Form.Item key="confirmStatus" name="confirmStatus">
<ControlWrapper.Select
label="确认状态"
2026-07-07 18:07:59 +08:00
placeholder="请选择"
2026-06-30 15:59:15 +08:00
allowClear
style={{ width: "100%" }}
>
<Select.Option value="pending">待确认</Select.Option>
<Select.Option value="passed">确认通过</Select.Option>
<Select.Option value="rejected">打回</Select.Option>
</ControlWrapper.Select>
</Form.Item>,
]}
onReset={handleReset}
onFinish={(values) => {
2026-07-07 18:07:59 +08:00
router.query = {
2026-06-30 15:59:15 +08:00
...router.query,
...values,
current: 1,
2026-07-07 18:07:59 +08:00
size: 10,
};
2026-06-30 15:59:15 +08:00
handleSearch();
}}
/>
<Table
rowKey="id"
columns={columns}
2026-07-07 18:07:59 +08:00
dataSource={qualReviewList}
2026-06-30 15:59:15 +08:00
scroll={{ y: props.scrollY }}
2026-07-07 18:07:59 +08:00
loading={qualReviewLoading}
2026-06-30 15:59:15 +08:00
pagination={{
2026-07-07 18:07:59 +08:00
total: qualReviewTotal,
2026-06-30 15:59:15 +08:00
showSizeChanger: true,
showQuickJumper: true,
showTotal: (total) => `${total}`,
2026-07-07 18:07:59 +08:00
current: router.query.current || 1,
pageSize: router.query.size || 10,
2026-06-30 15:59:15 +08:00
onChange: (page, pageSize) => {
2026-07-07 18:07:59 +08:00
router.query = {
2026-06-30 15:59:15 +08:00
...router.query,
current: page,
2026-07-07 18:07:59 +08:00
size: pageSize,
2026-06-30 15:59:15 +08:00
};
handleSearch();
},
}}
/>
</PageLayout>
);
};
2026-07-08 11:09:38 +08:00
export default Connect(
[NS_QUAL_REVIEW],
true,
)(AntdTableFuncControl(ExpertVerification));