Compare commits

..

2 Commits

37 changed files with 512 additions and 215 deletions

2
.gitignore vendored
View File

@ -6,7 +6,7 @@
# production
/dist
/demo
/.trae/
npm-debug.log*
yarn-debug.log*
yarn-error.log*

View File

@ -10,7 +10,7 @@ module.exports = {
javaGitBranch: "<branch-name>",
// 本地联调 safety-eval-servicecontext-path: /safety-eval默认端口 8095
// 可通过环境变量覆盖: SAFETY_EVAL_API_HOST=http://192.168.x.x:8095
API_HOST: process.env.SAFETY_EVAL_API_HOST || "http://192.168.0.124:8095",
API_HOST: "http://192.168.0.124:8095",
},
production: {
// 应用后端分支名称,部署上线需要

View File

@ -29,7 +29,7 @@
"@rc-component/motion": "^1.0.0",
"@rc-component/util": "^1.11.1",
"ahooks": "^3.9.5",
"antd": "^5.11.2",
"antd": "^5.29.2",
"dayjs": "^1.11.7",
"lodash-es": "^4.17.21",
"qrcode.react": "^4.2.0",

View File

@ -42,7 +42,7 @@ importers:
specifier: ^3.9.5
version: 3.9.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
antd:
specifier: ^5.11.2
specifier: ^5.29.2
version: 5.29.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
dayjs:
specifier: ^1.11.7
@ -1322,30 +1322,35 @@ packages:
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
libc: [glibc]
'@napi-rs/canvas-linux-arm64-musl@0.1.100':
resolution: {integrity: sha512-K3mDW66N+xT2/V439u1alFANiBUjdEx2gLiNYnCmUsva5jZMxWTjafBYwTzYK+EMFMHrUoabuU+T1BIP5CgbYQ==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
libc: [musl]
'@napi-rs/canvas-linux-riscv64-gnu@0.1.100':
resolution: {integrity: sha512-mooqUBTIsccZpnoQC4NgrC1v6C1vof39etLNMnBwCY+p0gajWJvAHLGQ6g/gGyS5YrpDW+GefSN4+Cvcr08UWw==}
engines: {node: '>= 10'}
cpu: [riscv64]
os: [linux]
libc: [glibc]
'@napi-rs/canvas-linux-x64-gnu@0.1.100':
resolution: {integrity: sha512-1eCvkDCazm7FFhsT7DfGOdSaHgZVK3bt/dSBl5EWHOWmnz+I7j8tPseJqqD81NF+MH21jKUK4wQSDjN0mdhnTg==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
libc: [glibc]
'@napi-rs/canvas-linux-x64-musl@0.1.100':
resolution: {integrity: sha512-20arT6lnI19S68qNlii73TSEDbECNgzMz2EpldC1V3mZFuRkeujXkcebRk0LRJe9SEUAooYiLokfMViY8IX7yA==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
libc: [musl]
'@napi-rs/canvas-win32-arm64-msvc@0.1.100':
resolution: {integrity: sha512-DZFFT1wIAg37LJw37yhMRFfjATd3vTQzjZ1Yki8u2vhO6Hi5VE6BVaGQ1aaDu7xb4iMErz+9EOwjpS7xcxFeBw==}
@ -1413,48 +1418,56 @@ packages:
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [linux]
libc: [glibc]
'@oxfmt/binding-linux-arm64-musl@0.35.0':
resolution: {integrity: sha512-5Okqi+uhYFxwKz8hcnUftNNwdm8BCkf6GSCbcz9xJxYMm87k1E4p7PEmAAbhLTk7cjSdDre6TDL0pDzNX+Y22Q==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [linux]
libc: [musl]
'@oxfmt/binding-linux-ppc64-gnu@0.35.0':
resolution: {integrity: sha512-9k66pbZQXM/lBJWys3Xbc5yhl4JexyfqkEf/tvtq8976VIJnLAAL3M127xHA3ifYSqxdVHfVGTg84eiBHCGcNw==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [ppc64]
os: [linux]
libc: [glibc]
'@oxfmt/binding-linux-riscv64-gnu@0.35.0':
resolution: {integrity: sha512-aUcY9ofKPtjO52idT6t0SAQvEF6ctjzUQa1lLp7GDsRpSBvuTrBQGeq0rYKz3gN8dMIQ7mtMdGD9tT4LhR8jAQ==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [riscv64]
os: [linux]
libc: [glibc]
'@oxfmt/binding-linux-riscv64-musl@0.35.0':
resolution: {integrity: sha512-C6yhY5Hvc2sGM+mCPek9ZLe5xRUOC/BvhAt2qIWFAeXMn4il04EYIjl3DsWiJr0xDMTJhvMOmD55xTRPlNp39w==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [riscv64]
os: [linux]
libc: [musl]
'@oxfmt/binding-linux-s390x-gnu@0.35.0':
resolution: {integrity: sha512-RG2hlvOMK4OMZpO3mt8MpxLQ0AAezlFqhn5mI/g5YrVbPFyoCv9a34AAvbSJS501ocOxlFIRcKEuw5hFvddf9g==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [s390x]
os: [linux]
libc: [glibc]
'@oxfmt/binding-linux-x64-gnu@0.35.0':
resolution: {integrity: sha512-wzmh90Pwvqj9xOKHJjkQYBpydRkaXG77ZvDz+iFDRRQpnqIEqGm5gmim2s6vnZIkDGsvKCuTdtxm0GFmBjM1+w==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [linux]
libc: [glibc]
'@oxfmt/binding-linux-x64-musl@0.35.0':
resolution: {integrity: sha512-+HCqYCJPCUy5I+b2cf+gUVaApfgtoQT3HdnSg/l7NIcLHOhKstlYaGyrFZLmUpQt4WkFbpGKZZayG6zjRU0KFA==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [linux]
libc: [musl]
'@oxfmt/binding-openharmony-arm64@0.35.0':
resolution: {integrity: sha512-kFYmWfR9YL78XyO5ws+1dsxNvZoD973qfVMNFOS4e9bcHXGF7DvGC2tY5UDFwyMCeB33t3sDIuGONKggnVNSJA==}
@ -1568,21 +1581,25 @@ packages:
resolution: {integrity: sha512-C8owWG+yvo7X0oVLIXetkoJhIFBP1LYNcAQqtgLmJnQLQDklGuP83dKC+zISGQWpjawHfZ1ER96vLgoTrxKZdw==}
cpu: [arm64]
os: [linux]
libc: [glibc]
'@rspack/binding-linux-arm64-musl@1.7.12':
resolution: {integrity: sha512-i51WWI64aRpsfSki6rN0aepPqXkVfS+vZM7+4bWDcmnhUmdMvhIPcYg0QRk3DtyJnu33jqNLM0WHY78k00NyfA==}
cpu: [arm64]
os: [linux]
libc: [musl]
'@rspack/binding-linux-x64-gnu@1.7.12':
resolution: {integrity: sha512-MSos0FuPEefqo9V92ULd5hggKG29EkSNg1zDcypy0OkpsKh5pfjVxTLYFXgTcVyFoUQQbdG8zFBzYbwmJ8V4ew==}
cpu: [x64]
os: [linux]
libc: [glibc]
'@rspack/binding-linux-x64-musl@1.7.12':
resolution: {integrity: sha512-JcAMVKXOnjfpC3coWjCFPWD3Yl8RBw6a+IXQQ8mfRlHaHMIiOv8IfZqx15XRxMUn49CtP7Z0Na8iiAg2aKrcfw==}
cpu: [x64]
os: [linux]
libc: [musl]
'@rspack/binding-wasm32-wasi@1.7.12':
resolution: {integrity: sha512-n+ZqP6ZMc0nhOgvadg5VhEs9ojtbES80AcWeFnmGkbzIszvGSO63GKNiRkXtjJ9KFuRzytbbmsCqkUVH+Tywxg==}

View File

@ -1,7 +1,7 @@
import { Connect } from "@cqsjjb/jjb-dva-runtime";
import { Descriptions, Divider } from "antd";
import { useEffect, useState } from "react";
import Page from "zy-react-library/components/Page";
import PageLayout from "@cqsjjb/jjb-react-admin-component/PageLayout";
import PreviewImg from "zy-react-library/components/PreviewImg";
import { UPLOAD_FILE_TYPE_ENUM } from "zy-react-library/enum/uploadFile/gwj";
import useGetFile from "zy-react-library/hooks/useGetFile";
@ -49,7 +49,7 @@ function PersonInChargeInfo({ props, certificatePhotoType }) {
return (
<div>
<Page headerTitle="证书信息查看">
<PageLayout title="证书信息查看">
<div>
<Divider orientation="left">人员信息</Divider>
<Descriptions
@ -133,7 +133,7 @@ function PersonInChargeInfo({ props, certificatePhotoType }) {
/>
</div>
</Page>
</PageLayout>
</div>
);

View File

@ -4,7 +4,7 @@ import { Button, Form, message, Modal, Space } from "antd";
import { useEffect, useRef, useState } from "react";
import FormBuilder from "zy-react-library/components/FormBuilder";
import AddIcon from "zy-react-library/components/Icon/AddIcon";
import Page from "zy-react-library/components/Page";
import PageLayout from "@cqsjjb/jjb-react-admin-component/PageLayout";
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";
@ -227,7 +227,7 @@ function List({ props, certificatePhotoType, displayType, personnelType, permiss
}, [tableProps.dataSource]);
return (
<Page isShowAllAction={false}>
<PageLayout>
<Search
form={form}
@ -388,7 +388,7 @@ function List({ props, certificatePhotoType, displayType, personnelType, permiss
/>
)}
</Page>
</PageLayout>
);
}
function AddModalComponent(props) {

View File

@ -2,7 +2,7 @@ import { Connect } from "@cqsjjb/jjb-dva-runtime";
import { Descriptions, Divider } from "antd";
import { useEffect, useState } from "react";
import Page from "zy-react-library/components/Page";
import PageLayout from "@cqsjjb/jjb-react-admin-component/PageLayout";
import PreviewImg from "zy-react-library/components/PreviewImg";
import { UPLOAD_FILE_TYPE_ENUM } from "zy-react-library/enum/uploadFile/gwj";
import useGetFile from "zy-react-library/hooks/useGetFile";
@ -47,7 +47,7 @@ function SpecialCertificateInfo({ props, certificatePhotoType }) {
return (
<div>
<Page headerTitle="证书信息查看">
<PageLayout title="证书信息查看">
<div>
<Divider orientation="left">人员信息</Divider>
<Descriptions
@ -142,7 +142,7 @@ function SpecialCertificateInfo({ props, certificatePhotoType }) {
/>
</div>
</Page>
</PageLayout>
</div>
);

View File

@ -5,7 +5,7 @@ import { useEffect, useRef, useState } from "react";
import { useLocation } from "react-router-dom";
import FormBuilder from "zy-react-library/components/FormBuilder";
import AddIcon from "zy-react-library/components/Icon/AddIcon";
import Page from "zy-react-library/components/Page";
import PageLayout from "@cqsjjb/jjb-react-admin-component/PageLayout";
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";
@ -256,7 +256,7 @@ function SpecialCertificateList({ props, certificatePhotoType, displayType, pers
}
};
return (
<Page isShowAllAction={false}>
<PageLayout>
<Search
onValuesChange={onValuesChange}
@ -439,7 +439,7 @@ function SpecialCertificateList({ props, certificatePhotoType, displayType, pers
/>
)}
</Page>
</PageLayout>
);
}
function AddModalComponent(props) {

View File

@ -32,7 +32,7 @@ if (!window.__POWERED_BY_QIANKUN__) {
// 本地开发时注入 Token使 API 请求可携带认证信息
sessionStorage.setItem(
"token",
"jjb-saas-auth:oauth:eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ7XCJjbGllbnRJZFwiOlwiWlFBUVBKXCIsXCJhY2NvdW50SWRcIjoyMDY5Njc0MjM3ODc0MDEyMTYwLFwidXNlclR5cGVFbnVtXCI6XCJQTEFURk9STVwiLFwidXNlcklkXCI6MjA2OTY3NDIzNzE3MzQzNjQxNixcInRlbmFudElkXCI6MjA2OTU5NjM5NzkyMDg0OTkyMCxcInRlbmFudE5hbWVcIjpcIumHjeW6huWuieWFqOivhOS7t1wiLFwidGVuYW50UGFyZW50SWRzXCI6XCIwLDIwNjk1OTYzOTc5MjA4NDk5MjBcIixcIm5hbWVcIjpcInRlc3QwMVwiLFwiYWNjZXNzVGlja2V0XCI6XCJ0eGd0MjA3dktBd21OeTUwY3ppdmhUZlNaSm9ZbmxZV003ZHJQbUlsS0wxV2ZYTnNFckp2OUxCMzNBSXRcIixcInJlZnJlc2hUaWNrZXRcIjpcIkl3cHdlMWpCeXZnQTRvTlNtZXNzdHl4cXQ3WWdmb3NuMlZyd01RVUtkanNyWjFpSFBHMXZQQVRRT1A3c1wiLFwiZXhwaXJlSW5cIjo2MDQ4MDAsXCJyZWZyZXNoRXhwaXJlc0luXCI6NjA0ODAwLFwib3JnSWRcIjoyMDY5NTk2Mzk3OTIwODQ5OTIwLFwib3JnTmFtZVwiOlwi6YeN5bqG5a6J5YWo6K-E5Lu3XCIsXCJvcmdJZHNcIjpbMjA2OTU5NjM5NzkyMDg0OTkyMF0sXCJyb2xlc1R5cGVzXCI6W1wiR0xZSlNcIl0sXCJyb2xlSWRzXCI6WzIwNjk2NzEzMDc1OTg4OTMwNThdLFwic2NvcGVzXCI6W10sXCJycGNUeXBlRW51bVwiOlwiSFRUUFwiLFwiYmluZE1vYmlsZVNpZ25cIjpcIkZBTFNFXCJ9IiwiaXNzIjoicHJvLXNlcnZlciIsImV4cCI6MTc4MzMwNDY3OX0.HSQlvOrqikDKAOPfTuXGQbm5W8YrUQkYmkhKg03OjuM"
"jjb-saas-auth:oauth:eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ7XCJjbGllbnRJZFwiOlwiWlFBUVBKXCIsXCJhY2NvdW50SWRcIjoyMDY5Njc0MjM3ODc0MDEyMTYwLFwidXNlclR5cGVFbnVtXCI6XCJQTEFURk9STVwiLFwidXNlcklkXCI6MjA2OTY3NDIzNzE3MzQzNjQxNixcInRlbmFudElkXCI6MjA2OTU5NjM5NzkyMDg0OTkyMCxcInRlbmFudE5hbWVcIjpcIumHjeW6huWuieWFqOivhOS7t1wiLFwidGVuYW50UGFyZW50SWRzXCI6XCIwLDIwNjk1OTYzOTc5MjA4NDk5MjBcIixcIm5hbWVcIjpcInRlc3QwMVwiLFwiYWNjZXNzVGlja2V0XCI6XCJFS0FJVThJT2g4WlE3cjg4UXE5YlkxbENhd2lLOTNBWGhSMGVTN2Z4aFo2SU43QjVOclBncDlnb1pnS0JcIixcInJlZnJlc2hUaWNrZXRcIjpcInJQc2V0ZXR6SjB3aHBSSk8ycDlRb3RPaHJTcFdFY0xkblBkdURxb0JwU0F0VmdENU56QW1XTkVCc09jMFwiLFwiZXhwaXJlSW5cIjo2MDQ4MDAsXCJyZWZyZXNoRXhwaXJlc0luXCI6NjA0ODAwLFwib3JnSWRcIjoyMDY5NTk2Mzk3OTIwODQ5OTIwLFwib3JnTmFtZVwiOlwi6YeN5bqG5a6J5YWo6K-E5Lu3XCIsXCJvcmdJZHNcIjpbMjA2OTU5NjM5NzkyMDg0OTkyMF0sXCJyb2xlc1R5cGVzXCI6W1wiR0xZSlNcIl0sXCJyb2xlSWRzXCI6WzIwNjk2NzEzMDc1OTg4OTMwNThdLFwic2NvcGVzXCI6W10sXCJycGNUeXBlRW51bVwiOlwiSFRUUFwiLFwiYmluZE1vYmlsZVNpZ25cIjpcIkZBTFNFXCJ9IiwiaXNzIjoicHJvLXNlcnZlciIsImV4cCI6MTc4MzMxOTc4OX0.rt-lrdDQlyhDu9S7xUtJ3L3F9k_C8710Ah1dJ-0-A1c"
);
}

View File

@ -2,14 +2,13 @@ import { Connect } from "@cqsjjb/jjb-dva-runtime";
import { Button, Empty, Form, Input, message, Modal, Row, Col, Select, Space, Tree } from "antd";
import { useEffect, useMemo, useRef, useState } from "react";
import AddIcon from "zy-react-library/components/Icon/AddIcon";
import Page from "zy-react-library/components/Page";
import PageLayout from "@cqsjjb/jjb-react-admin-component/PageLayout";
import Search from "zy-react-library/components/Search";
import Table from "zy-react-library/components/Table";
import useTable from "zy-react-library/hooks/useTable";
import { NS_ORG_DEPARTMENT, NS_ORG_POSITION, NS_STAFF_INFO } from "~/enumerate/namespace";
import { asId, sameId } from "~/api/enterpriseInfo/idUtil";
import { safeListRequest, safeRequest } from "~/utils";
import PageHeader from "../components/PageHeader";
function findDeptNode(nodes = [], id) {
for (const node of nodes) {
@ -218,8 +217,7 @@ function DepartmentPositionPage(props) {
};
return (
<Page isShowAllAction={false}>
<PageHeader title="部门岗位管理" />
<PageLayout title="部门岗位管理">
<div style={{ display: "flex", gap: 16, minHeight: 480 }}>
<div style={{ width: 260, borderRight: "1px solid #f0f0f0", paddingRight: 16, flexShrink: 0 }}>
<Space direction="vertical" style={{ width: "100%", marginBottom: 12 }}>
@ -339,7 +337,7 @@ function DepartmentPositionPage(props) {
</Form>
</Modal>
)}
</Page>
</PageLayout>
);
}

View File

@ -2,7 +2,7 @@ import { Connect } from "@cqsjjb/jjb-dva-runtime";
import { Button, Descriptions, Form, Input, InputNumber, message, Modal, Row, Col, Select, Space } from "antd";
import { useEffect, useState } from "react";
import AddIcon from "zy-react-library/components/Icon/AddIcon";
import Page from "zy-react-library/components/Page";
import PageLayout from "@cqsjjb/jjb-react-admin-component/PageLayout";
import Search from "zy-react-library/components/Search";
import Table from "zy-react-library/components/Table";
import { FORM_ITEM_RENDER_ENUM } from "zy-react-library/enum/formItemRender";
@ -11,7 +11,6 @@ import { NS_EQUIP_INFO } from "~/enumerate/namespace";
import { isEquipEnabled } from "~/api/enterpriseInfo/adapter";
import { safeListRequest, safeRequest } from "~/utils";
import { positiveNumberRule } from "~/utils/validators";
import PageHeader from "../components/PageHeader";
const DUAL_CHANNEL = { 1: "是", 0: "否" };
@ -64,11 +63,10 @@ function EquipInfoPage(props) {
};
return (
<Page isShowAllAction={false}>
<PageHeader
title="装备信息管理"
subTitle="实现对评价机构内装备信息的维护管理。"
/>
<PageLayout>
<p style={{ margin: 0, marginBottom: 24, color: "rgba(0, 0, 0, 0.45)" }}>
实现对评价机构内装备信息的维护管理
</p>
<Search
form={searchForm}
options={[
@ -157,7 +155,7 @@ function EquipInfoPage(props) {
}}
/>
)}
</Page>
</PageLayout>
);
}

View File

@ -1,34 +1,69 @@
import { Connect } from "@cqsjjb/jjb-dva-runtime";
import { Button, Form, message, Space } from "antd";
import {
Button,
Col,
DatePicker,
Form,
Input,
InputNumber,
message,
Row,
Select,
Space,
Upload,
} from "antd";
import dayjs from "dayjs";
import { useEffect, useState } from "react";
import FormBuilder from "zy-react-library/components/FormBuilder";
import Page from "zy-react-library/components/Page";
import { getOrgInfoDetail } from "~/api/enterpriseInfo/orgBootstrap";
import PageHeader from "../components/PageHeader";
import PageLayout from "@cqsjjb/jjb-react-admin-component/PageLayout";
import {
CHONGQING_DISTRICTS,
ENTERPRISE_SCALE_OPTIONS,
ENTERPRISE_STATUS_OPTIONS,
FILING_RECORD_STATUS_OPTIONS,
FILING_TYPE_OPTIONS,
} from "~/enumerate/enterpriseOptions";
import { NS_ORG_INFO } from "~/enumerate/namespace";
import { mockUploadFileList } from "~/utils/mockUpload";
import { buildOrgInfoFormOptions } from "./formOptions";
import {
creditCodeRule,
latitudeRule,
longitudeRule,
nonNegativeIntegerRule,
phoneRule,
positiveNumberRule,
urlRule,
} from "~/utils/validators";
function OrgInfoPage(props) {
const [form] = Form.useForm();
const { orgInfoLoading } = props.orgInfo;
const [editing, setEditing] = useState(true);
const [submitting, setSubmitting] = useState(false);
const [detail, setDetail] = useState({});
/** 是否已存在机构数据(有 id 视为已入库,只能修改) */
const [hasExistingData, setHasExistingData] = useState(false);
const formOptions = buildOrgInfoFormOptions();
const selectDistrictOptions = CHONGQING_DISTRICTS.map((v) => ({
label: v,
value: v,
}));
const loadDetail = async () => {
try {
const res = getOrgInfoDetail();
const res = await props.orgInfoGet();
if (res?.data?.id) {
setDetail(res.data);
form.setFieldsValue(res.data);
form.setFieldsValue({
...res.data,
productionDate: res.data.productionDate
? dayjs(res.data.productionDate)
: undefined,
});
setHasExistingData(true);
setEditing(false);
}
else {
} else {
setDetail({});
setHasExistingData(false);
setEditing(true);
@ -38,8 +73,7 @@ function OrgInfoPage(props) {
attachments: mockUploadFileList("资质申请书.pdf"),
});
}
}
catch (err) {
} catch (err) {
console.warn("[OrgInfo] loadDetail failed:", err);
setDetail({});
setHasExistingData(false);
@ -53,17 +87,27 @@ function OrgInfoPage(props) {
const handleCancelEdit = () => {
if (hasExistingData) {
form.setFieldsValue(detail);
form.setFieldsValue({
...detail,
productionDate: detail.productionDate
? dayjs(detail.productionDate)
: undefined,
});
setEditing(false);
}
else {
} else {
form.resetFields();
}
};
const handleSave = async (submitType) => {
try {
const values = await form.validateFields();
const formValues = await form.validateFields();
const values = {
...formValues,
productionDate: formValues.productionDate
? dayjs(formValues.productionDate).format("YYYY-MM-DD")
: undefined,
};
setSubmitting(true);
let request;
@ -71,10 +115,10 @@ function OrgInfoPage(props) {
// 已有数据:仅走修改接口
request = props.orgInfoSave;
values.id = detail.id;
}
else {
} else {
// 无数据:暂存、提交均走保存接口(草稿/已提交由 authStatusCode 区分)
request = submitType === "draft" ? props.orgInfoDraft : props.orgInfoSave;
request =
submitType === "draft" ? props.orgInfoDraft : props.orgInfoSave;
}
const res = await request(values);
@ -82,61 +126,330 @@ function OrgInfoPage(props) {
message.success(
hasExistingData
? "修改成功"
: (submitType === "draft" ? "暂存成功" : "提交成功"),
: submitType === "draft"
? "暂存成功"
: "提交成功",
);
setEditing(false);
loadDetail();
}
}
catch (err) {
} catch (err) {
if (err?.errorFields) {
return;
}
message.error(hasExistingData ? "修改失败,请稍后重试" : "保存失败,请稍后重试");
}
finally {
message.error(
hasExistingData ? "修改失败,请稍后重试" : "保存失败,请稍后重试",
);
} finally {
setSubmitting(false);
}
};
const subTitleText =
"新成立或首次使用系统的安全评价机构,可通过系统提供的引导页面,详细填写机构的基本信息。";
return (
<Page isShowAllAction={false}>
<PageHeader
<PageLayout
title="机构信息管理"
subTitle="新成立或首次使用系统的安全评价机构,可通过系统提供的引导页面,详细填写机构的基本信息。"
extra={hasExistingData && !editing && (
<Button type="primary" onClick={() => setEditing(true)}>
extra={
hasExistingData &&
!editing && (
<Button type="primary" loading={orgInfoLoading} onClick={() => setEditing(true)}>
修改
</Button>
)}
)
}
>
<p style={{ margin: 0, marginBottom: 24, color: "rgba(0, 0, 0, 0.45)" }}>
{subTitleText}
</p>
<Form form={form} labelCol={{ span: 10 }} disabled={!editing}>
<Row gutter={[16, 16]}>
<Col span={12}>
<Form.Item
name="orgName"
label="生产经营单位名称"
rules={[{ required: true, message: "请输入生产经营单位名称" }]}
>
<Input placeholder="请输入生产经营单位名称" allowClear />
</Form.Item>
</Col>
<Col span={12}>
<Form.Item
name="creditCode"
label="统一社会信用代码"
rules={[creditCodeRule(true)]}
>
<Input placeholder="请输入统一社会信用代码" allowClear />
</Form.Item>
</Col>
<Col span={12}>
<Form.Item
name="safetyIndustryCategory"
label="安全生产监管行业类别"
rules={[
{ required: true, message: "请输入安全生产监管行业类别" },
]}
>
<Input placeholder="请输入安全生产监管行业类别" allowClear />
</Form.Item>
</Col>
<Col span={12}>
<Form.Item
name="regionCountyName"
label="属地"
rules={[{ required: true, message: "请选择属地" }]}
>
<Select options={selectDistrictOptions} placeholder="请选择属地" allowClear />
</Form.Item>
</Col>
<Col span={12}>
<Form.Item
name="regionStreetName"
label="所属镇、街道"
rules={[{ required: true, message: "请输入所属镇街道" }]}
>
<Input placeholder="请输入所属镇街道" allowClear />
</Form.Item>
</Col>
<Col span={12}>
<Form.Item name="regionCommunityName" label="属村(社区)">
<Input placeholder="请输入属村(社区)" allowClear />
</Form.Item>
</Col>
<Col span={12}>
<Form.Item
name="longitude"
label="所在地坐标经度"
rules={[longitudeRule(false)]}
>
<InputNumber
style={{ width: "100%" }}
min={-180}
max={180}
precision={6}
placeholder="请输入经度"
/>
<FormBuilder
form={form}
span={12}
disabled={!editing}
useAutoGenerateRequired={false}
options={formOptions}
labelCol={{ span: 10 }}
showActionButtons={false}
</Form.Item>
</Col>
<Col span={12}>
<Form.Item
name="latitude"
label="所在地坐标纬度"
rules={[latitudeRule(false)]}
>
<InputNumber
style={{ width: "100%" }}
min={-90}
max={90}
precision={6}
placeholder="请输入纬度"
/>
</Form.Item>
</Col>
<Col span={12}>
<Form.Item
name="registerAddress"
label="注册地址"
rules={[{ required: true, message: "请输入注册地址" }]}
>
<Input.TextArea rows={3} placeholder="请输入注册地址" />
</Form.Item>
</Col>
<Col span={12}>
<Form.Item
name="businessAddress"
label="经营地址"
rules={[{ required: true, message: "请输入经营地址" }]}
>
<Input.TextArea rows={3} placeholder="请输入经营地址" />
</Form.Item>
</Col>
<Col span={12}>
<Form.Item name="ownershipType" label="归属类型">
<Input placeholder="请输入归属类型" allowClear />
</Form.Item>
</Col>
<Col span={12}>
<Form.Item
name="gbIndustryCode"
label="国民经济行业分类(GB/T4754-2017)"
>
<Input placeholder="请输入国民经济行业分类" allowClear />
</Form.Item>
</Col>
<Col span={12}>
<Form.Item
name="legalRepresentative"
label="法定代表人"
rules={[{ required: true, message: "请输入法定代表人" }]}
>
<Input placeholder="请输入法定代表人" allowClear />
</Form.Item>
</Col>
<Col span={12}>
<Form.Item
name="legalRepPhone"
label="法定代表人联系电话"
rules={[phoneRule("法定代表人联系电话", false)]}
>
<Input placeholder="请输入法定代表人联系电话" allowClear />
</Form.Item>
</Col>
<Col span={12}>
<Form.Item
name="principal"
label="主要负责人"
rules={[{ required: true, message: "请输入主要负责人" }]}
>
<Input placeholder="请输入主要负责人" allowClear />
</Form.Item>
</Col>
<Col span={12}>
<Form.Item
name="principalPhone"
label="主要负责人联系电话"
rules={[phoneRule("主要负责人联系电话", true)]}
>
<Input placeholder="请输入主要负责人联系电话" allowClear />
</Form.Item>
</Col>
<Col span={12}>
<Form.Item name="safetyDeptHead" label="安全管理部门负责人">
<Input placeholder="请输入安全管理部门负责人" allowClear />
</Form.Item>
</Col>
<Col span={12}>
<Form.Item
name="safetyDeptPhone"
label="安全管理部门负责人联系电话"
rules={[phoneRule("安全管理部门负责人联系电话", false)]}
>
<Input placeholder="请输入安全管理部门负责人联系电话" allowClear />
</Form.Item>
</Col>
<Col span={12}>
<Form.Item name="safetyVp" label="主管安全副总">
<Input placeholder="请输入主管安全副总" allowClear />
</Form.Item>
</Col>
<Col span={12}>
<Form.Item
name="safetyVpPhone"
label="主管安全副总联系电话"
rules={[phoneRule("主管安全副总联系电话", false)]}
>
<Input placeholder="请输入主管安全副总联系电话" allowClear />
</Form.Item>
</Col>
<Col span={12}>
<Form.Item name="productionDate" label="投产日期">
<DatePicker style={{ width: "100%" }} placeholder="请选择投产日期" />
</Form.Item>
</Col>
<Col span={12}>
<Form.Item name="businessStatus" label="企业经营状态">
<Input placeholder="请输入企业经营状态" allowClear />
</Form.Item>
</Col>
<Col span={12}>
<Form.Item
name="disclosureUrl"
label="信息公开网址"
rules={[urlRule("信息公开网址", false)]}
>
<Input placeholder="请输入信息公开网址" allowClear />
</Form.Item>
</Col>
<Col span={12}>
<Form.Item
name="workplaceArea"
label="工作场所建筑面积"
rules={[positiveNumberRule("工作场所建筑面积", false)]}
>
<InputNumber style={{ width: "100%" }} min={0} precision={2} placeholder="请输入工作场所建筑面积" />
</Form.Item>
</Col>
<Col span={12}>
<Form.Item
name="archiveRoomArea"
label="档案室面积"
rules={[positiveNumberRule("档案室面积", false)]}
>
<InputNumber style={{ width: "100%" }} min={0} precision={2} placeholder="请输入档案室面积" />
</Form.Item>
</Col>
<Col span={12}>
<Form.Item
name="fullTimeEvaluatorCount"
label="专职安全评价师数量"
rules={[nonNegativeIntegerRule("专职安全评价师数量", false)]}
>
<InputNumber style={{ width: "100%" }} min={0} precision={0} placeholder="请输入专职安全评价师数量" />
</Form.Item>
</Col>
<Col span={12}>
<Form.Item
name="registeredSafetyEngineerCount"
label="注册安全工程师数量"
rules={[nonNegativeIntegerRule("注册安全工程师数量", false)]}
>
<InputNumber style={{ width: "100%" }} min={0} precision={0} placeholder="请输入注册安全工程师数量" />
</Form.Item>
</Col>
<Col span={12}>
<Form.Item name="enterpriseStatus" label="企业状态">
<Select options={ENTERPRISE_STATUS_OPTIONS} placeholder="请选择企业状态" allowClear />
</Form.Item>
</Col>
<Col span={12}>
<Form.Item name="enterpriseScale" label="企业规模">
<Select options={ENTERPRISE_SCALE_OPTIONS} placeholder="请选择企业规模" allowClear />
</Form.Item>
</Col>
<Col span={12}>
<Form.Item name="filingType" label="备案类型">
<Select options={FILING_TYPE_OPTIONS} placeholder="请选择备案类型" allowClear />
</Form.Item>
</Col>
<Col span={12}>
<Form.Item name="filingRecordStatus" label="备案状态">
<Select options={FILING_RECORD_STATUS_OPTIONS} placeholder="请选择备案状态" allowClear />
</Form.Item>
</Col>
<Col span={12}>
<Form.Item
name="attachments"
label="上传附件"
valuePropName="fileList"
>
<Upload maxCount={5} listType="picture-card">
<Button>上传附件</Button>
</Upload>
</Form.Item>
</Col>
</Row>
</Form>
{editing && (
<div style={{ marginTop: 24, textAlign: "center" }}>
<Space>
<Button onClick={handleCancelEdit}>
取消
</Button>
<Button onClick={handleCancelEdit}>取消</Button>
{!hasExistingData && (
<Button loading={submitting} onClick={() => handleSave("draft")}>
暂存
</Button>
)}
<Button type="primary" loading={submitting} onClick={() => handleSave("submit")}>
<Button
type="primary"
loading={submitting}
onClick={() => handleSave("submit")}
>
提交
</Button>
</Space>
</div>
)}
</Page>
</PageLayout>
);
}

View File

@ -1,14 +1,14 @@
import { Connect } from "@cqsjjb/jjb-dva-runtime";
import { Button, Descriptions, Form, Input, message, Modal, Select, Space, Typography } from "antd";
import { useEffect, useState } from "react";
import Page from "zy-react-library/components/Page";
import PageLayout from "@cqsjjb/jjb-react-admin-component/PageLayout";
import Search from "zy-react-library/components/Search";
import Table from "zy-react-library/components/Table";
import useTable from "zy-react-library/hooks/useTable";
import { NS_STAFF_CHANGE_LOG, NS_STAFF_INFO } from "~/enumerate/namespace";
import { safeListRequest, safeRequest } from "~/utils";
import { CHANGE_COUNT_STYLE, formSelectField, getChangeCount, getEmploymentStatusLabel, getResignAuditStatusLabel } from "~/utils/enterpriseForm";
import PageHeader from "../components/PageHeader";
const EMPLOYMENT_STATUS = { 1: "在职", 2: "离职" };
const RESIGN_AUDIT_STATUS = { 0: "未审核", 1: "已审核", 2: "已退回" };
@ -119,8 +119,7 @@ function PersonnelChangePage(props) {
if (viewMode === "log") {
return (
<Page isShowAllAction={false}>
<PageHeader title="人员变更次数" />
<PageLayout title="人员变更次数">
<Button style={{ marginBottom: 16 }} onClick={() => setViewMode("list")}>返回</Button>
<div style={{ marginBottom: 8 }}>
人员
@ -134,16 +133,15 @@ function PersonnelChangePage(props) {
]}
{...logTableProps}
/>
</Page>
</PageLayout>
);
}
return (
<Page isShowAllAction={false}>
<PageHeader
title="人员变更管理"
subTitle="机构管理员在人员信息管理页面进行相应的修改操作"
/>
<PageLayout>
<p style={{ margin: 0, marginBottom: 24, color: "rgba(0, 0, 0, 0.45)" }}>
机构管理员在人员信息管理页面进行相应的修改操作
</p>
<Search
form={searchForm}
options={[
@ -265,7 +263,7 @@ function PersonnelChangePage(props) {
<Descriptions.Item label="备注">{resignInfo.remark}</Descriptions.Item>
</Descriptions>
</Modal>
</Page>
</PageLayout>
);
}

View File

@ -3,7 +3,7 @@ import { Button, Descriptions, Form, message, Modal, Space } from "antd";
import { useEffect, useState } from "react";
import FormBuilder from "zy-react-library/components/FormBuilder";
import AddIcon from "zy-react-library/components/Icon/AddIcon";
import Page from "zy-react-library/components/Page";
import PageLayout from "@cqsjjb/jjb-react-admin-component/PageLayout";
import CertPreviewImg from "~/components/CertPreviewImg";
import Search from "zy-react-library/components/Search";
import Table from "zy-react-library/components/Table";
@ -16,7 +16,7 @@ import { NS_STAFF_CERTIFICATE } from "~/enumerate/namespace";
import { safeGetFiles, safeListRequest, safeRequest } from "~/utils";
import { mockUploadFileList, resolveUploadFileId } from "~/utils/mockUpload";
import { dateRangeRule } from "~/utils/validators";
import PageHeader from "../../components/PageHeader";
function StaffCertificatePage(props) {
const query = useGetUrlQuery();
@ -62,8 +62,7 @@ function StaffCertificatePage(props) {
};
return (
<Page isShowAllAction={false}>
<PageHeader title={`人员证书 - ${staffName || ""}`} />
<PageLayout title={`人员证书 - ${staffName || ""}`}>
<Button style={{ marginBottom: 16 }} onClick={goBack}>返回</Button>
<Search
form={form}
@ -136,7 +135,7 @@ function StaffCertificatePage(props) {
}}
/>
)}
</Page>
</PageLayout>
);
}

View File

@ -2,7 +2,7 @@ import { Connect } from "@cqsjjb/jjb-dva-runtime";
import { Button, DatePicker, Form, Input, message, Modal, Row, Col, Select, Space } from "antd";
import { useEffect, useRef, useState } from "react";
import AddIcon from "zy-react-library/components/Icon/AddIcon";
import Page from "zy-react-library/components/Page";
import PageLayout from "@cqsjjb/jjb-react-admin-component/PageLayout";
import Search from "zy-react-library/components/Search";
import Table from "zy-react-library/components/Table";
import Upload from "zy-react-library/components/Upload";
@ -22,7 +22,6 @@ import { getBirthDateFromIdCard, safeListRequest, safeRequest } from "~/utils";
import { toDayjs } from "~/utils/dateFormat";
import { formSelectField } from "~/utils/enterpriseForm";
import { idCardRule, mobileRule } from "~/utils/validators";
import PageHeader from "../../components/PageHeader";
import StaffViewModal from "../StaffViewModal";
function mapPositionOptions(list = []) {
@ -111,11 +110,10 @@ function PersonnelInfoPage(props) {
};
return (
<Page isShowAllAction={false}>
<PageHeader
title="人员信息管理"
subTitle="机构管理员在系统中为本机构的人员进行信息录入,包括姓名、性别、身份证号、出生日期等。"
/>
<PageLayout>
<p style={{ margin: 0, marginBottom: 24, color: "rgba(0, 0, 0, 0.45)" }}>
机构管理员在系统中为本机构的人员进行信息录入包括姓名性别身份证号出生日期等
</p>
<Search
form={searchForm}
options={[
@ -198,7 +196,7 @@ function PersonnelInfoPage(props) {
}}
/>
)}
</Page>
</PageLayout>
);
}

View File

@ -3,7 +3,8 @@ import { Button, Descriptions, Form, message, Modal, Space } from "antd";
import { useEffect, useState } from "react";
import FormBuilder from "zy-react-library/components/FormBuilder";
import AddIcon from "zy-react-library/components/Icon/AddIcon";
import Page from "zy-react-library/components/Page";
import PageLayout from "@cqsjjb/jjb-react-admin-component/PageLayout";
import PreviewImg from "zy-react-library/components/PreviewImg";
import Search from "zy-react-library/components/Search";
import Table from "zy-react-library/components/Table";
import Upload from "zy-react-library/components/Upload";
@ -19,7 +20,6 @@ import { safeGetFiles, safeListRequest, safeRequest } from "~/utils";
import { toDayjs } from "~/utils/dateFormat";
import { mockUploadFileList, resolveUploadFileId } from "~/utils/mockUpload";
import { dateRangeRule } from "~/utils/validators";
import PageHeader from "../components/PageHeader";
function QualificationCertPage(props) {
const [addModalOpen, setAddModalOpen] = useState(false);
@ -90,11 +90,10 @@ function QualificationCertPage(props) {
};
return (
<Page isShowAllAction={false}>
<PageHeader
title="资质信息管理"
subTitle="机构需将自身拥有的安全评价资质证书信息录入系统,包括资质等级、发证机关、发证日期、有效期等。"
/>
<PageLayout>
<p style={{ margin: 0, marginBottom: 24, color: "rgba(0, 0, 0, 0.45)" }}>
机构需将自身拥有的安全评价资质证书信息录入系统包括资质等级发证机关发证日期有效期等
</p>
<Search
form={form}
options={[
@ -210,7 +209,7 @@ function QualificationCertPage(props) {
}}
/>
)}
</Page>
</PageLayout>
);
}

View File

@ -2,7 +2,7 @@ import { Connect } from "@cqsjjb/jjb-dva-runtime";
import { Button, DatePicker, Descriptions, Form, Input, message, Modal, Select } from "antd";
import { useEffect, useState } from "react";
import AddIcon from "zy-react-library/components/Icon/AddIcon";
import Page from "zy-react-library/components/Page";
import PageLayout from "@cqsjjb/jjb-react-admin-component/PageLayout";
import Search from "zy-react-library/components/Search";
import Table from "zy-react-library/components/Table";
import Upload from "zy-react-library/components/Upload";
@ -12,7 +12,7 @@ import { NS_STAFF_INFO, NS_STAFF_RESIGNATION_APPLY } from "~/enumerate/namespace
import { safeListRequest, safeRequest } from "~/utils";
import { formSelectField, getResignAuditStatusLabel } from "~/utils/enterpriseForm";
import { DEFAULT_UPLOAD_FILE_URL, mockUploadFileList, resolveUploadFileId } from "~/utils/mockUpload";
import PageHeader from "../components/PageHeader";
const RESIGN_AUDIT_STATUS = { 0: "未审核", 1: "已审核", 2: "已退回" };
@ -49,11 +49,10 @@ function ResignationApplyPage(props) {
}, []);
return (
<Page isShowAllAction={false}>
<PageHeader
title="人员离职申请"
subTitle="机构管理员在人员信息管理页面进行相应的修改操作"
/>
<PageLayout>
<p style={{ margin: 0, marginBottom: 24, color: "rgba(0, 0, 0, 0.45)" }}>
机构管理员在人员信息管理页面进行相应的修改操作
</p>
<Search
form={searchForm}
options={[
@ -129,7 +128,7 @@ function ResignationApplyPage(props) {
}}
/>
)}
</Page>
</PageLayout>
);
}

View File

@ -1,13 +0,0 @@
export default function PageHeader({ title, subTitle, extra }) {
return (
<div style={{ display: "flex", justifyContent: "space-between", alignItems: "flex-start", marginBottom: 16 }}>
<div>
<h2 style={{ margin: 0, fontSize: 20, fontWeight: 600 }}>{title}</h2>
{subTitle && (
<p style={{ margin: "8px 0 0", color: "rgba(0, 0, 0, 0.45)" }}>{subTitle}</p>
)}
</div>
{extra}
</div>
);
}

View File

@ -51,7 +51,7 @@ function EnterpriseInfo(props) {
}
return (
<div>
<div style={{ height: "100%" }}>
{props.children}
</div>
);

View File

@ -1,6 +1,6 @@
import { Button, Card, Col, Descriptions, Form, Modal, Row, Statistic, Tag } from "antd";
import { useEffect, useState } from "react";
import Page from "zy-react-library/components/Page";
import PageLayout from "@cqsjjb/jjb-react-admin-component/PageLayout";
import Search from "zy-react-library/components/Search";
import Table from "zy-react-library/components/Table";
import { FORM_ITEM_RENDER_ENUM } from "zy-react-library/enum/formItemRender";
@ -11,7 +11,6 @@ import {
getEnterprisePortraitDetail,
queryEnterprisePortraitPage,
} from "~/mock/regulator/basicInfo";
import PageHeader from "../../../EnterpriseInfo/components/PageHeader";
const INFO_LEVEL_COLOR = {
level1: "success",
@ -51,11 +50,10 @@ function EnterprisePortraitPage() {
};
return (
<Page isShowAllAction={false}>
<PageHeader
title="企业画像管理"
subTitle="监管端查看企业安全能力画像与综合评级(当前为 Mock 数据)。"
/>
<PageLayout>
<p style={{ margin: 0, marginBottom: 24, color: "rgba(0, 0, 0, 0.45)" }}>
监管端查看企业安全能力画像与综合评级当前为 Mock 数据
</p>
<Search
form={searchForm}
options={[
@ -198,7 +196,7 @@ function EnterprisePortraitPage() {
</>
)}
</Modal>
</Page>
</PageLayout>
);
}

View File

@ -1,12 +1,11 @@
import { Button, Descriptions, Form, Modal, Table, Tag, Tooltip } from "antd";
import { useEffect, useState } from "react";
import Page from "zy-react-library/components/Page";
import PageLayout from "@cqsjjb/jjb-react-admin-component/PageLayout";
import Search from "zy-react-library/components/Search";
import TableList from "zy-react-library/components/Table";
import { FORM_ITEM_RENDER_ENUM } from "zy-react-library/enum/formItemRender";
import useTable from "zy-react-library/hooks/useTable";
import { getEvaluatorDetail, queryEvaluatorPage } from "~/mock/regulator/basicInfo";
import PageHeader from "../../../EnterpriseInfo/components/PageHeader";
const YES_NO_OPTIONS = [
{ label: "是", value: 1 },
@ -52,11 +51,10 @@ function EvaluatorInfoPage() {
};
return (
<Page isShowAllAction={false}>
<PageHeader
title="评价师信息管理"
subTitle="监管端查看辖区内评价师备案及资质状态(当前为 Mock 数据)。"
/>
<PageLayout>
<p style={{ margin: 0, marginBottom: 24, color: "rgba(0, 0, 0, 0.45)" }}>
监管端查看辖区内评价师备案及资质状态当前为 Mock 数据
</p>
<Search
form={searchForm}
options={[
@ -201,7 +199,7 @@ function EvaluatorInfoPage() {
</Descriptions>
)}
</Modal>
</Page>
</PageLayout>
);
}

View File

@ -3,7 +3,7 @@ import {
} from "antd";
import { Connect } from "@cqsjjb/jjb-dva-runtime";
import { useEffect, useState } from "react";
import Page from "zy-react-library/components/Page";
import PageLayout from "@cqsjjb/jjb-react-admin-component/PageLayout";
import Search from "zy-react-library/components/Search";
import Table from "zy-react-library/components/Table";
import { FORM_ITEM_RENDER_ENUM } from "zy-react-library/enum/formItemRender";
@ -18,7 +18,6 @@ import {
import { NS_ORG_INFO } from "~/enumerate/namespace";
import { safeListRequest, safeRequest } from "~/utils";
import { formSelectField } from "~/utils/enterpriseForm";
import PageHeader from "../../../EnterpriseInfo/components/PageHeader";
const SEARCH_COL = { xs: 24, sm: 12, md: 8, lg: 6 };
const SEARCH_DEFAULT_VALUES = { state: "" };
@ -164,11 +163,10 @@ function OrgAccountPage(props) {
};
return (
<Page isShowAllAction={false}>
<PageHeader
title="评价机构账号管理"
subTitle="监管端维护评价机构开户账号。"
/>
<PageLayout>
<p style={{ margin: 0, marginBottom: 24, color: "rgba(0, 0, 0, 0.45)" }}>
监管端维护评价机构开户账号
</p>
<Search
form={searchForm}
values={SEARCH_DEFAULT_VALUES}
@ -339,7 +337,7 @@ function OrgAccountPage(props) {
</Row>
</Form>
</Modal>
</Page>
</PageLayout>
);
}

View File

@ -1,7 +1,7 @@
import { Button, Card, Form, Spin, Table, Tabs, Tag, message } from "antd";
import { useEffect, useMemo, useState } from "react";
import FormBuilder from "zy-react-library/components/FormBuilder";
import Page from "zy-react-library/components/Page";
import PageLayout from "@cqsjjb/jjb-react-admin-component/PageLayout";
import FilePreviewModal from "~/components/FilePreviewModal";
import {
fetchRegisteredOrgDetail,
@ -12,7 +12,6 @@ import {
fetchRegisteredOrgQualificationGroups,
} from "~/api/regulatorOrgInfo";
import { buildOrgInfoFormOptions } from "../../../../EnterpriseInfo/OrgInfo/formOptions";
import PageHeader from "../../../../EnterpriseInfo/components/PageHeader";
import StaffViewModal from "../../../../EnterpriseInfo/PersonnelInfo/StaffViewModal";
const LIST_PATH = "/container/supervision/basicInfo/registeredOrg/list";
@ -192,9 +191,11 @@ function RegisteredOrgDetailPage(props) {
if (!id) {
return (
<Page isShowAllAction={false}>
<PageHeader title="备案信息详情" subTitle="缺少机构 ID 参数" extra={<Button onClick={goBack}>返回</Button>} />
</Page>
<PageLayout title="备案信息详情" extra={<Button onClick={goBack}>返回</Button>}>
<p style={{ margin: 0, marginBottom: 24, color: "rgba(0, 0, 0, 0.45)" }}>
缺少机构 ID 参数
</p>
</PageLayout>
);
}
@ -241,12 +242,10 @@ function RegisteredOrgDetailPage(props) {
];
return (
<Page isShowAllAction={false}>
<PageHeader
title="备案信息详情"
subTitle={orgName || undefined}
extra={<Button onClick={goBack}> 返回</Button>}
/>
<PageLayout title="备案信息详情" extra={<Button onClick={goBack}> 返回</Button>}>
<p style={{ margin: 0, marginBottom: 24, color: "rgba(0, 0, 0, 0.45)" }}>
{orgName || undefined}
</p>
<Tabs items={tabItems} />
<FilePreviewModal
@ -267,7 +266,7 @@ function RegisteredOrgDetailPage(props) {
onCancel={() => setViewPersonnelId("")}
/>
)}
</Page>
</PageLayout>
);
}

View File

@ -1,7 +1,7 @@
import { Button, Form, Tag } from "antd";
import { Connect } from "@cqsjjb/jjb-dva-runtime";
import { useEffect } from "react";
import Page from "zy-react-library/components/Page";
import PageLayout from "@cqsjjb/jjb-react-admin-component/PageLayout";
import Search from "zy-react-library/components/Search";
import TableList from "zy-react-library/components/Table";
import useTable from "zy-react-library/hooks/useTable";
@ -12,7 +12,6 @@ import {
import { NS_ORG_INFO } from "~/enumerate/namespace";
import { safeListRequest } from "~/utils";
import { formSelectField } from "~/utils/enterpriseForm";
import PageHeader from "../../../../EnterpriseInfo/components/PageHeader";
const FILING_RECORD_STATUS_COLOR = {
1: "success",
@ -46,11 +45,10 @@ function RegisteredOrgListPage(props) {
};
return (
<Page isShowAllAction={false}>
<PageHeader
title="已备案机构管理"
subTitle="监管端查看已备案评价机构及备案详情。"
/>
<PageLayout>
<p style={{ margin: 0, marginBottom: 24, color: "rgba(0, 0, 0, 0.45)" }}>
监管端查看已备案评价机构及备案详情
</p>
<Search
form={searchForm}
values={SEARCH_DEFAULT_VALUES}
@ -94,7 +92,7 @@ function RegisteredOrgListPage(props) {
},
]}
/>
</Page>
</PageLayout>
);
}

View File

@ -1,7 +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 PageLayout from "@cqsjjb/jjb-react-admin-component/PageLayout";
import Search from "zy-react-library/components/Search";
import Table from "zy-react-library/components/Table";
@ -21,7 +21,7 @@ function List(props) {
});
return (
<Page isShowAllAction={false}>
<PageLayout>
<Search
form={form}
@ -64,7 +64,7 @@ function List(props) {
{...tableProps}
/>
</Page>
</PageLayout>
);
}
export default Connect([NS_CORP_CERTIFICATE], true)(Permission(List));

View File

@ -4,7 +4,7 @@ import { Button, Descriptions, Form, message, Modal, Space } from "antd";
import { useEffect, useRef, useState } from "react";
import FormBuilder from "zy-react-library/components/FormBuilder";
import AddIcon from "zy-react-library/components/Icon/AddIcon";
import Page from "zy-react-library/components/Page";
import PageLayout from "@cqsjjb/jjb-react-admin-component/PageLayout";
import PreviewImg from "zy-react-library/components/PreviewImg";
import Search from "zy-react-library/components/Search";
import Table from "zy-react-library/components/Table";
@ -159,7 +159,7 @@ function EnterpriseLicense(props) {
};
}, [tableProps.dataSource]);
return (
<Page isShowAllAction={false}>
<PageLayout>
<Search
form={form}
@ -317,7 +317,7 @@ function EnterpriseLicense(props) {
/>
)}
</Page>
</PageLayout>
);
}
function AddModalComponent(props) {

View File

@ -1,7 +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 PageLayout from "@cqsjjb/jjb-react-admin-component/PageLayout";
import Search from "zy-react-library/components/Search";
import Table from "zy-react-library/components/Table";
@ -22,7 +22,7 @@ function List(props) {
});
return (
<Page isShowAllAction={false}>
<PageLayout>
<Search
form={form}
@ -66,7 +66,7 @@ function List(props) {
{...tableProps}
/>
</Page>
</PageLayout>
);
}
export default Connect([NS_CORP_CERTIFICATE], true)(Permission(List));

View File

@ -1,7 +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 PageLayout from "@cqsjjb/jjb-react-admin-component/PageLayout";
import Search from "zy-react-library/components/Search";
import Table from "zy-react-library/components/Table";
@ -21,7 +21,7 @@ function List(props) {
});
return (
<Page isShowAllAction={false}>
<PageLayout>
<Search
form={form}
@ -111,7 +111,7 @@ function List(props) {
{...tableProps}
/>
</Page>
</PageLayout>
);
}
export default Connect([NS_USER_CERTIFICATE], true)(Permission(List));

View File

@ -1,12 +1,12 @@
import { Permission } from "@cqsjjb/jjb-common-decorator/permission";
import { Connect } from "@cqsjjb/jjb-dva-runtime";
import Page from "zy-react-library/components/Page";
import PageLayout from "@cqsjjb/jjb-react-admin-component/PageLayout";
import PersonInChargeList from "~/components/PersonInChargeList";
import { NS_USER_CERTIFICATE } from "~/enumerate/namespace";
// 企业主要负责人管理
function List(props) {
return (
<Page headerTitle="主要负责人证书数" isShowFooter={false}>
<PageLayout title="主要负责人证书数">
<div>
<PersonInChargeList
props={props}
@ -17,7 +17,7 @@ function List(props) {
dictionaryType="zyfzrgwmc0000"
/>
</div>
</Page>
</PageLayout>
);
}

View File

@ -1,12 +1,12 @@
import { Permission } from "@cqsjjb/jjb-common-decorator/permission";
import { Connect } from "@cqsjjb/jjb-dva-runtime";
import Page from "zy-react-library/components/Page";
import PageLayout from "@cqsjjb/jjb-react-admin-component/PageLayout";
import PersonInChargeList from "~/components/PersonInChargeList";
import { NS_USER_CERTIFICATE } from "~/enumerate/namespace";
// 企业安全生产管理人员管理
function List(props) {
return (
<Page headerTitle="安全生产管理人员证书数" isShowFooter={false}>
<PageLayout title="安全生产管理人员证书数">
<PersonInChargeList
props={props}
certificatePhotoType={162}
@ -15,7 +15,7 @@ function List(props) {
permissionView="gfd-fzgsryzztj-aqgly-infoNb"
dictionaryType="aqscglrygwmc0000"
/>
</Page>
</PageLayout>
);
}

View File

@ -1,12 +1,12 @@
import { Permission } from "@cqsjjb/jjb-common-decorator/permission";
import { Connect } from "@cqsjjb/jjb-dva-runtime";
import Page from "zy-react-library/components/Page";
import PageLayout from "@cqsjjb/jjb-react-admin-component/PageLayout";
import SpecialCertificateList from "~/components/SpecialCertificateList";
import { NS_USER_CERTIFICATE } from "~/enumerate/namespace";
// 企业特种设备操作人员管理
function List(props) {
return (
<Page headerTitle="特种设备操作人员证书数" isShowFooter={false}>
<PageLayout title="特种设备操作人员证书数">
<SpecialCertificateList
props={props}
certificatePhotoType={160}
@ -15,7 +15,7 @@ function List(props) {
permissionView="gfd-fzgsryzztj-tzsbInfoNb"
dictionaryType="tzsbczryczxmzylb0000"
/>
</Page>
</PageLayout>
);
}

View File

@ -1,12 +1,12 @@
import { Permission } from "@cqsjjb/jjb-common-decorator/permission";
import { Connect } from "@cqsjjb/jjb-dva-runtime";
import Page from "zy-react-library/components/Page";
import PageLayout from "@cqsjjb/jjb-react-admin-component/PageLayout";
import SpecialCertificateList from "~/components/SpecialCertificateList";
import { NS_USER_CERTIFICATE } from "~/enumerate/namespace";
// 企业特种作业人员管理
function List(props) {
return (
<Page headerTitle="特种作业人员证书数" isShowFooter={false}>
<PageLayout title="特种作业人员证书数">
<SpecialCertificateList
props={props}
certificatePhotoType={159}
@ -15,7 +15,7 @@ function List(props) {
permissionView="gfd-fzgsryzztj-tzzyInfoNb"
dictionaryType="tzzyryhylb0000"
/>
</Page>
</PageLayout>
);
}

View File

@ -1,7 +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 PageLayout from "@cqsjjb/jjb-react-admin-component/PageLayout";
import Search from "zy-react-library/components/Search";
import Table from "zy-react-library/components/Table";
@ -21,7 +21,7 @@ function List(props) {
});
return (
<Page isShowAllAction={false}>
<PageLayout>
<Search
form={form}
@ -113,7 +113,7 @@ function List(props) {
{...tableProps}
/>
</Page>
</PageLayout>
);
}
export default Connect([NS_USER_CERTIFICATE], true)(Permission(List));

View File

@ -1,12 +1,12 @@
import { Permission } from "@cqsjjb/jjb-common-decorator/permission";
import { Connect } from "@cqsjjb/jjb-dva-runtime";
import Page from "zy-react-library/components/Page";
import PageLayout from "@cqsjjb/jjb-react-admin-component/PageLayout";
import PersonInChargeList from "~/components/PersonInChargeList";
import { NS_USER_CERTIFICATE } from "~/enumerate/namespace";
// 企业主要负责人管理
function List(props) {
return (
<Page headerTitle="主要负责人证书数" isShowFooter={false}>
<PageLayout title="主要负责人证书数">
<PersonInChargeList
props={props}
certificatePhotoType={161}
@ -15,7 +15,7 @@ function List(props) {
permissionView="gfd-xgfryzztj-zyfzrInfoNb"
dictionaryType="zyfzrgwmc0000"
/>
</Page>
</PageLayout>
);
}

View File

@ -1,12 +1,12 @@
import { Permission } from "@cqsjjb/jjb-common-decorator/permission";
import { Connect } from "@cqsjjb/jjb-dva-runtime";
import Page from "zy-react-library/components/Page";
import PageLayout from "@cqsjjb/jjb-react-admin-component/PageLayout";
import PersonInChargeList from "~/components/PersonInChargeList";
import { NS_USER_CERTIFICATE } from "~/enumerate/namespace";
// 企业安全生产管理人员管理
function List(props) {
return (
<Page headerTitle="安全生产管理人员证书数" isShowFooter={false}>
<PageLayout title="安全生产管理人员证书数">
<PersonInChargeList
props={props}
certificatePhotoType={162}
@ -15,7 +15,7 @@ function List(props) {
permissionView="gfd-xgfryzztj-aqscInfoNb"
dictionaryType="aqscglrygwmc0000"
/>
</Page>
</PageLayout>
);
}

View File

@ -1,12 +1,12 @@
import { Permission } from "@cqsjjb/jjb-common-decorator/permission";
import { Connect } from "@cqsjjb/jjb-dva-runtime";
import Page from "zy-react-library/components/Page";
import PageLayout from "@cqsjjb/jjb-react-admin-component/PageLayout";
import SpecialCertificateList from "~/components/SpecialCertificateList";
import { NS_USER_CERTIFICATE } from "~/enumerate/namespace";
// 企业特种设备操作人员管理
function List(props) {
return (
<Page headerTitle="特种设备操作人员证书数" isShowFooter={false}>
<PageLayout title="特种设备操作人员证书数">
<SpecialCertificateList
props={props}
certificatePhotoType={160}
@ -15,7 +15,7 @@ function List(props) {
permissionView="gfd-xgfryzztj-tzsbInfoNb"
dictionaryType="tzsbczryczxmzylb0000"
/>
</Page>
</PageLayout>
);
}

View File

@ -1,12 +1,12 @@
import { Permission } from "@cqsjjb/jjb-common-decorator/permission";
import { Connect } from "@cqsjjb/jjb-dva-runtime";
import Page from "zy-react-library/components/Page";
import PageLayout from "@cqsjjb/jjb-react-admin-component/PageLayout";
import SpecialCertificateList from "~/components/SpecialCertificateList";
import { NS_USER_CERTIFICATE } from "~/enumerate/namespace";
// 企业特种作业人员管理
function List(props) {
return (
<Page headerTitle="特种作业人员证书数" isShowFooter={false}>
<PageLayout title="特种作业人员证书数">
<SpecialCertificateList
props={props}
certificatePhotoType={159}
@ -15,7 +15,7 @@ function List(props) {
permissionView="gfd-xgfryzztj-tzzyInfoNb"
dictionaryType="tzzyryhylb0000"
/>
</Page>
</PageLayout>
);
}