(
-
+ } onClick={() => props.history.push("./add")}>新增
)}
columns={[
{ title: "证书名称", dataIndex: "name" },
diff --git a/src/pages/Container/Enterprise/OrganizationStructure/index.js b/src/pages/Container/Enterprise/OrganizationStructure/index.js
index e03ac44..4f682e5 100644
--- a/src/pages/Container/Enterprise/OrganizationStructure/index.js
+++ b/src/pages/Container/Enterprise/OrganizationStructure/index.js
@@ -1,6 +1,8 @@
import { Button, Form, message, Modal, Space, Tag } 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 BackIcon from "zy-react-library/components/Icon/BackIcon";
import LeftTree from "zy-react-library/components/LeftTree/Department/Gwj/index";
import Search from "zy-react-library/components/Search";
import Table from "zy-react-library/components/Table";
@@ -50,13 +52,14 @@ function OrganizationStructure() {
<>
}
onClick={() => {
setAddModalOpen(true);
}}
>
新增
-
+ }>返回
>
)}
columns={[
diff --git a/src/pages/Container/Enterprise/Post/index.js b/src/pages/Container/Enterprise/Post/index.js
index bebc5de..974c4af 100644
--- a/src/pages/Container/Enterprise/Post/index.js
+++ b/src/pages/Container/Enterprise/Post/index.js
@@ -1,13 +1,15 @@
import { Button, Form, message, Modal, Space, Tag } 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 BackIcon from "zy-react-library/components/Icon/BackIcon";
import LeftTree from "zy-react-library/components/LeftTree/Department/Gwj/index";
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";
import useTable from "zy-react-library/hooks/useTable";
-function Position() {
+function Post() {
const [addModalOpen, setAddModalOpen] = useState(false);
const [currentId, setCurrentId] = useState("");
const [form] = Form.useForm();
@@ -30,7 +32,7 @@ function Position() {
}
onClick={() => {
setAddModalOpen(true);
}}
>
新增
-
+ }>返回
>
)}
columns={[
@@ -151,4 +154,4 @@ function AddModalComponent(props) {
}
const AddModal = AddModalComponent;
-export default Position;
+export default Post;
diff --git a/src/pages/Container/Enterprise/User/Add/index.js b/src/pages/Container/Enterprise/User/Add/index.js
index f8742a8..7754f33 100644
--- a/src/pages/Container/Enterprise/User/Add/index.js
+++ b/src/pages/Container/Enterprise/User/Add/index.js
@@ -1,6 +1,7 @@
import { tools } from "@cqsjjb/jjb-common-lib";
import FormBuilder from "zy-react-library/components/FormBuilder";
import HeaderBack from "zy-react-library/components/HeaderBack";
+import DepartmentSelectTree from "zy-react-library/components/SelectTree/Department/Gwj";
import Upload from "zy-react-library/components/Upload";
import { FORM_ITEM_RENDER_ENUM } from "zy-react-library/enum/formItemRender";
import { ID_NUMBER } from "zy-react-library/regular";
@@ -27,7 +28,7 @@ function Add() {
labelCol={{ span: 6 }}
options={[
{ name: "roleId", label: "用户角色", render: FORM_ITEM_RENDER_ENUM.SELECT, items: [{ name: "一级部门", id: "1" }] },
- { name: "departmentId", label: "所属部门" },
+ { name: "departmentId", label: "所属部门", render: ({ value, onChange }) => },
{
name: "postId",
label: "所属岗位",
@@ -65,6 +66,7 @@ function Add() {
{
name: "faceFile",
label: "上传人脸照片",
+ required: false,
span: 24,
render: ({ value, onChange }) => (
{}, { form });
const onDelete = (id) => {
@@ -56,27 +56,6 @@ function List(props) {
}
onClick={() => {
props.history.push("./add");
}}
@@ -94,13 +74,14 @@ function List(props) {
}
onClick={() => {
setImportOpen(true);
}}
>
导入
-
+ } onClick={() => onExportExcel()}>导出Excel
>
)}
columns={[
@@ -108,21 +89,12 @@ function List(props) {
{ title: "姓名", dataIndex: "name" },
{ title: "部门", dataIndex: "name" },
{ title: "岗位", dataIndex: "name" },
- { title: "排班类型", dataIndex: "name" },
{
title: "操作",
width: 300,
render: (_, record) => (
-
);
}
diff --git a/src/pages/Container/Enterprise/User/components/Scheduling/index.js b/src/pages/Container/Enterprise/User/components/Scheduling/index.js
deleted file mode 100644
index 47cbf55..0000000
--- a/src/pages/Container/Enterprise/User/components/Scheduling/index.js
+++ /dev/null
@@ -1,122 +0,0 @@
-import { DoubleLeftOutlined, DoubleRightOutlined, LeftOutlined, RightOutlined } from "@ant-design/icons";
-import { Button, Calendar, Modal } from "antd";
-import dayjs from "dayjs";
-import { useEffect, useState } from "react";
-
-function Scheduling(props) {
- const [workDateList, setWorkDateList] = useState([]);
- useEffect(() => {
- setWorkDateList([
- { DATE: "2025-10-01", STATE: "2" },
- { DATE: "2025-10-02", STATE: "1" },
- { DATE: "2025-10-03", STATE: "1" },
- { DATE: "2025-10-04", STATE: "2" },
- { DATE: "2025-10-05", STATE: "1" },
- { DATE: "2025-10-06", STATE: "1" },
- { DATE: "2025-10-07", STATE: "2" },
- { DATE: "2025-10-08", STATE: "1" },
- { DATE: "2025-10-09", STATE: "1" },
- { DATE: "2025-10-10", STATE: "2" },
- { DATE: "2025-10-11", STATE: "1" },
- { DATE: "2025-10-12", STATE: "1" },
- { DATE: "2025-10-13", STATE: "2" },
- { DATE: "2025-10-14", STATE: "1" },
- { DATE: "2025-10-15", STATE: "1" },
- { DATE: "2025-10-16", STATE: "2" },
- { DATE: "2025-10-17", STATE: "1" },
- { DATE: "2025-10-18", STATE: "1" },
- { DATE: "2025-10-19", STATE: "2" },
- { DATE: "2025-10-20", STATE: "1" },
- { DATE: "2025-10-21", STATE: "1" },
- { DATE: "2025-10-22", STATE: "2" },
- { DATE: "2025-10-23", STATE: "1" },
- { DATE: "2025-10-24", STATE: "1" },
- { DATE: "2025-10-25", STATE: "2" },
- { DATE: "2025-10-26", STATE: "1" },
- { DATE: "2025-10-27", STATE: "1" },
- { DATE: "2025-10-28", STATE: "2" },
- { DATE: "2025-10-29", STATE: "1" },
- { DATE: "2025-10-30", STATE: "1" },
- { DATE: "2025-10-31", STATE: "2" },
- ]);
- }, []);
- const cellRender = (current) => {
- return (
- workDateList.map((item) => {
- if (item.DATE === dayjs(current).format("YYYY-MM-DD")) {
- return (
-
- {item.STATE === "1"
- ? 上班
- : item.STATE === "2"
- ? 休班
- : null}
-
- );
- }
- return null;
- })
- );
- };
- const headerRender = ({ value, onChange }) => {
- const year = value.year();
- const month = value.month() + 1;
-
- const onNextYear = () => {
- const nextValue = value.add(1, "year");
- onChange(nextValue);
- };
-
- const onPrevYear = () => {
- const prevValue = value.subtract(1, "year");
- onChange(prevValue);
- };
-
- const onNextMonth = () => {
- const nextValue = value.add(1, "month");
- onChange(nextValue);
- };
-
- const onPrevMonth = () => {
- const prevValue = value.subtract(1, "month");
- onChange(prevValue);
- };
-
- return (
-
-
- } iconPosition="start">前一年
- } iconPosition="start">前一月
-
-
- {year}
- 年
- {month}
- 月
-
-
- } iconPosition="end">后一月
- } iconPosition="end">后一年
-
-
- );
- };
-
- return (
-
- 关闭
- ,
- ]}
- >
-
-
- );
-}
-
-export default Scheduling;
diff --git a/src/pages/Container/Supervision/Supervision/Department/index.js b/src/pages/Container/Supervision/Supervision/Department/index.js
new file mode 100644
index 0000000..bec7a08
--- /dev/null
+++ b/src/pages/Container/Supervision/Supervision/Department/index.js
@@ -0,0 +1,152 @@
+import { Button, Form, message, Modal, Space, Tag } 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 BackIcon from "zy-react-library/components/Icon/BackIcon";
+import LeftTree from "zy-react-library/components/LeftTree/Department/Gwj/index";
+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";
+import useTable from "zy-react-library/hooks/useTable";
+
+function Department() {
+ const [addModalOpen, setAddModalOpen] = useState(false);
+ const [currentId, setCurrentId] = useState("");
+ const [form] = Form.useForm();
+ const { tableProps, getData } = useTable(() => {
+ }, { form });
+ const onDelete = (id) => {
+ Modal.confirm({
+ title: "提示",
+ content: "确定删除吗?",
+ onOk: () => {
+ message.success("删除成功");
+ getData();
+ },
+ });
+ };
+ return (
+
+
+
+
+
+
(
+ <>
+ }
+ onClick={() => {
+ setAddModalOpen(true);
+ }}
+ >
+ 新增
+
+ }>返回
+ >
+ )}
+ columns={[
+ { title: "部门名称", dataIndex: "name" },
+ {
+ title: "操作",
+ width: 200,
+ render: (_, record) => (
+
+
+
+
+ ),
+ },
+ ]}
+ {...tableProps}
+ />
+
+
+ {
+ setAddModalOpen(false);
+ setCurrentId("");
+ }}
+ getData={getData}
+ />
+
+ );
+}
+
+function AddModalComponent(props) {
+ const [form] = Form.useForm();
+ useEffect(() => {
+ if (props.currentId) {
+ console.log(props.currentId);
+ }
+ }, [props.currentId]);
+ const onCancel = () => {
+ form.resetFields();
+ props.onCancel();
+ };
+ const onSubmit = async (values) => {
+ console.log(values);
+ onCancel();
+ props.getData();
+ };
+ return (
+
+ (111) },
+ { name: "department", label: "部门名称" },
+ { name: "level", label: "部门级别", required: false, render: FORM_ITEM_RENDER_ENUM.SELECT, items: [{ id: "1", name: "一级部门" }] },
+ { name: "sort", label: "部门排序", render: FORM_ITEM_RENDER_ENUM.NUMBER },
+ {
+ name: "regDepartment",
+ label: "是否安全管理部门",
+ required: false,
+ render: FORM_ITEM_RENDER_ENUM.RADIO,
+ items: [{ id: "1", name: "是" }, { id: "2", name: "否" }],
+ },
+ { name: "bz", label: "备注", required: false, render: FORM_ITEM_RENDER_ENUM.TEXTAREA },
+ ]}
+ />
+
+ );
+}
+
+const AddModal = AddModalComponent;
+export default Department;
diff --git a/src/pages/Container/Supervision/Supervision/Post/index.js b/src/pages/Container/Supervision/Supervision/Post/index.js
new file mode 100644
index 0000000..d93af30
--- /dev/null
+++ b/src/pages/Container/Supervision/Supervision/Post/index.js
@@ -0,0 +1,146 @@
+import { Button, Form, message, Modal, Space, Tag } 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 BackIcon from "zy-react-library/components/Icon/BackIcon";
+import LeftTree from "zy-react-library/components/LeftTree/Department/Gwj/index";
+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";
+import useTable from "zy-react-library/hooks/useTable";
+
+function Post() {
+ const [addModalOpen, setAddModalOpen] = useState(false);
+ const [currentId, setCurrentId] = useState("");
+ const [form] = Form.useForm();
+ const { tableProps, getData } = useTable(() => {
+ }, { form });
+ const onDelete = (id) => {
+ Modal.confirm({
+ title: "提示",
+ content: "确定删除吗?",
+ onOk: () => {
+ message.success("删除成功");
+ getData();
+ },
+ });
+ };
+ return (
+
+
+
+
+
+
(
+ <>
+ }
+ onClick={() => {
+ setAddModalOpen(true);
+ }}
+ >
+ 新增
+
+ }>返回
+ >
+ )}
+ columns={[
+ { title: "所属部门", dataIndex: "name" },
+ { title: "岗位名称", dataIndex: "name" },
+ {
+ title: "操作",
+ width: 200,
+ render: (_, record) => (
+
+
+
+
+ ),
+ },
+ ]}
+ {...tableProps}
+ />
+
+
+ {
+ setAddModalOpen(false);
+ setCurrentId("");
+ }}
+ getData={getData}
+ />
+
+ );
+}
+
+function AddModalComponent(props) {
+ const [form] = Form.useForm();
+ useEffect(() => {
+ if (props.currentId) {
+ console.log(props.currentId);
+ }
+ }, [props.currentId]);
+ const onCancel = () => {
+ form.resetFields();
+ props.onCancel();
+ };
+ const onSubmit = async (values) => {
+ console.log(values);
+ onCancel();
+ props.getData();
+ };
+ return (
+
+ (111) },
+ { name: "department", label: "岗位名称" },
+ {
+ name: "regPost",
+ label: "是否监管岗位",
+ required: false,
+ render: FORM_ITEM_RENDER_ENUM.RADIO,
+ items: [{ id: "1", name: "是" }, { id: "2", name: "否" }],
+ },
+ { name: "permission", label: "数据权限", required: false, dependencies: ["regPost"], hidden: formValues => !(formValues.regPost === "1") },
+ { name: "bz", label: "岗位职责", required: false, render: FORM_ITEM_RENDER_ENUM.TEXTAREA },
+ ]}
+ />
+
+ );
+}
+
+const AddModal = AddModalComponent;
+export default Post;
diff --git a/src/pages/Container/Supervision/Supervision/User/Add/index.js b/src/pages/Container/Supervision/Supervision/User/Add/index.js
new file mode 100644
index 0000000..6dadb29
--- /dev/null
+++ b/src/pages/Container/Supervision/Supervision/User/Add/index.js
@@ -0,0 +1,104 @@
+import { tools } from "@cqsjjb/jjb-common-lib";
+import FormBuilder from "zy-react-library/components/FormBuilder";
+import HeaderBack from "zy-react-library/components/HeaderBack";
+import DepartmentSelectTree from "zy-react-library/components/SelectTree/Department/Gwj";
+import Upload from "zy-react-library/components/Upload";
+import { FORM_ITEM_RENDER_ENUM } from "zy-react-library/enum/formItemRender";
+import { ID_NUMBER, PHONE } from "zy-react-library/regular";
+
+const { query } = tools.router;
+const WHETHER_ENUM = [
+ { id: "1", name: "是" },
+ { id: "0", name: "否" },
+];
+
+function Add() {
+ const onSubmit = (values) => {
+ console.log(values);
+ };
+ return (
+ <>
+
+
+
},
+ {
+ name: "postId",
+ label: "所属岗位",
+ required: false,
+ render: FORM_ITEM_RENDER_ENUM.SELECT,
+ items: [{ name: "一级部门", id: "1" }],
+ },
+ { name: "username", label: "用户名", tip: "* 如果修改手机号,登录密码则会变成初始密码“Aa@123456789”" },
+ { name: "name", label: "姓名" },
+ { name: "phone", label: "手机号", rules: [{ pattern: PHONE, message: "请输入正确的手机号" }] },
+ {
+ name: "personType",
+ label: "人员类型",
+ render: FORM_ITEM_RENDER_ENUM.SELECT,
+ items: [{ name: "一级部门", id: "1" }],
+ },
+ {
+ name: "userIdCard",
+ label: "身份证号",
+ required: false,
+ rules: [{ pattern: ID_NUMBER, message: "请输入正确的身份证号" }],
+ },
+ {
+ name: "nation",
+ label: "民族",
+ required: false,
+ render: FORM_ITEM_RENDER_ENUM.SELECT,
+ items: [{ name: "一级部门", id: "1" }],
+ },
+ {
+ name: "sex",
+ label: "性别",
+ required: false,
+ render: FORM_ITEM_RENDER_ENUM.SELECT,
+ items: [{ name: "一级部门", id: "1" }],
+ },
+ {
+ name: "faceFile",
+ label: "上传人脸照片",
+ required: false,
+ span: 24,
+ render: ({ value, onChange }) => (
+
+ * 图像格式:JPG、JPEG、PNG
+ * 图像大小:不超过4M。
+ * 照片大小: 推荐 500*500
+ * 人脸无遮挡(如戴帽子、口罩、眼镜等)、无修图
+ * 人脸需双眼睁开、表情自然、露额,头发不要遮挡
+
+ )}
+ />
+ ),
+ },
+ { name: "sort", label: "部门排序", render: FORM_ITEM_RENDER_ENUM.NUMBER },
+ { name: "level", label: "部门级别", required: false, render: FORM_ITEM_RENDER_ENUM.SELECT, items: [{ name: "一级部门", id: "1" }] },
+ { name: "email", label: "邮箱", required: false, rules: [{ type: "email", message: "请输入正确的邮箱" }] },
+ { name: "isHeadOfDepartment", label: "是否为部门负责人", required: false, render: FORM_ITEM_RENDER_ENUM.RADIO, items: WHETHER_ENUM },
+ { name: "isDeputyInCharge", label: "是否为分管领导", required: false, render: FORM_ITEM_RENDER_ENUM.RADIO, items: WHETHER_ENUM },
+ { name: "bz", label: "备注", span: 24, required: false, render: FORM_ITEM_RENDER_ENUM.TEXTAREA },
+ ]}
+ />
+
+ >
+ );
+}
+
+export default Add;
diff --git a/src/pages/Container/Supervision/Supervision/User/List/index.js b/src/pages/Container/Supervision/Supervision/User/List/index.js
new file mode 100644
index 0000000..07e99a6
--- /dev/null
+++ b/src/pages/Container/Supervision/Supervision/User/List/index.js
@@ -0,0 +1,126 @@
+import { Button, Form, message, Modal, Space } from "antd";
+import { useState } from "react";
+import AddIcon from "zy-react-library/components/Icon/AddIcon";
+import ExportIcon from "zy-react-library/components/Icon/ExportIcon";
+import ImportIcon from "zy-react-library/components/Icon/ImportIcon";
+import ImportFile from "zy-react-library/components/ImportFile";
+import LeftTree from "zy-react-library/components/LeftTree/Department/Gwj/index";
+import Search from "zy-react-library/components/Search";
+import Table from "zy-react-library/components/Table";
+import useTable from "zy-react-library/hooks/useTable";
+
+function List(props) {
+ const [importOpen, setImportOpen] = useState(false);
+ const [form] = Form.useForm();
+ const { tableProps, getData } = useTable(() => {}, { form });
+ const onDelete = (id) => {
+ Modal.confirm({
+ title: "提示",
+ content: "确定删除吗?",
+ onOk: () => {
+ message.success("删除成功");
+ getData();
+ },
+ });
+ };
+ const onExportExcel = () => {
+ Modal.confirm({
+ title: "提示",
+ content: "确定要导出到excel吗?",
+ onOk: () => {
+
+ },
+ });
+ };
+ const onResetPassword = () => {
+ Modal.confirm({
+ title: "提示",
+ content: "确定要重置密码为Aa@123456789吗?",
+ onOk: () => {
+ message.success("重置密码成功");
+ },
+ });
+ };
+ const onUnlock = (id) => {
+ message.success("解锁成功");
+ };
+ const onImportFileConfirm = (values) => {
+ console.log(values);
+ message.success("导入成功");
+ };
+ return (
+
+
+
+
+
+
(
+ <>
+ }
+ onClick={() => {
+ props.history.push("./add");
+ }}
+ >
+ 新增
+
+ }
+ onClick={() => {
+ setImportOpen(true);
+ }}
+ >
+ 导入
+
+ } onClick={() => onExportExcel()}>导出Excel
+ >
+ )}
+ columns={[
+ { title: "用户名", dataIndex: "name" },
+ { title: "姓名", dataIndex: "name" },
+ { title: "部门", dataIndex: "name" },
+ { title: "岗位", dataIndex: "name" },
+ {
+ title: "操作",
+ width: 300,
+ render: (_, record) => (
+
+
+
+
+
+
+ ),
+ },
+ ]}
+ {...tableProps}
+ />
+
+
+ { setImportOpen(false); }}
+ />
+
+ );
+}
+
+export default List;
diff --git a/src/pages/Container/Supervision/Supervision/User/index.js b/src/pages/Container/Supervision/Supervision/User/index.js
new file mode 100644
index 0000000..e30c0f4
--- /dev/null
+++ b/src/pages/Container/Supervision/Supervision/User/index.js
@@ -0,0 +1,9 @@
+function User(props) {
+ return (
+
+ {props.children}
+
+ );
+}
+
+export default User;
From 4187407a71591ddd9faa628b4500f4783d8d5685 Mon Sep 17 00:00:00 2001
From: LiuJiaNan <15703339975@163.com>
Date: Tue, 4 Nov 2025 17:06:54 +0800
Subject: [PATCH 4/4] init
---
src/pages/Container/Supervision/Supervision/User/Add/index.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/pages/Container/Supervision/Supervision/User/Add/index.js b/src/pages/Container/Supervision/Supervision/User/Add/index.js
index 6dadb29..6ab8be8 100644
--- a/src/pages/Container/Supervision/Supervision/User/Add/index.js
+++ b/src/pages/Container/Supervision/Supervision/User/Add/index.js
@@ -29,7 +29,7 @@ function Add() {
labelCol={{ span: 6 }}
options={[
{ name: "roleId", label: "用户角色", required: false, render: FORM_ITEM_RENDER_ENUM.SELECT, items: [{ name: "一级部门", id: "1" }] },
- { name: "departmentId", label: "所属部门", render: ({ value, onChange }) => },
+ { name: "departmentId", label: "所属部门", render: DepartmentSelectTree },
{
name: "postId",
label: "所属岗位",