From b79e8a63a1ab322dc948b74eb2cf9e91676a3792 Mon Sep 17 00:00:00 2001
From: hejianhao <15708179461@qq.com>
Date: 星期四, 27 二月 2025 15:13:24 +0800
Subject: [PATCH] Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/H5/threeSide

---
 management/src/pages/setting/user/index.jsx |  345 ++++++++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 265 insertions(+), 80 deletions(-)

diff --git a/management/src/pages/setting/user/index.jsx b/management/src/pages/setting/user/index.jsx
index 65cc01f..1b177da 100644
--- a/management/src/pages/setting/user/index.jsx
+++ b/management/src/pages/setting/user/index.jsx
@@ -1,82 +1,225 @@
-import { sendRequest, showDelConfirm } from '@/utils/antdUtils';
+import { buildProTableDataSource, sendRequest, showDelConfirm } from '@/utils/antdUtils';
 import { DeleteOutlined, EditOutlined, PlusOutlined } from '@ant-design/icons';
 import { PageContainer, ProFormText, ProTable, QueryFilter } from '@ant-design/pro-components';
-import { Button, Col, Menu, Row, Space } from 'antd';
+import { Button, Cascader, Col, Menu, Row, Space } from 'antd';
 import { useEffect, useRef, useState } from 'react';
 import { Access, useAccess } from 'umi';
 import AddAndEdit from './components/addAndEdit';
-import { add, del, edit, getUnitList } from './service';
+import AddUnit from './components/addUnit';
+import { add, addUnit, del, delUnit, edit, editUnit, getList, getUnitList ,editSystemUserInfo,addSystemUserInfo} from './service';
 
 const Role = () => {
   const actionRef = useRef();
   const addViewRef = useRef();
+  const addViewRef1 = useRef();
   const [modalVisible, handleModalVisibles] = useState(false);
+  const [modalVisible1, handleModalVisibles1] = useState(false);
+  const [unitId, setUnitId] = useState('');
   const access = useAccess();
-  const [items, setItems] = useState([
-    {
-      key: '1',
-      icon: (
-        <div
-          style={{
-            display: 'flex',
-            alignItems: 'center',
-            justifyContent: 'space-between',
-            width: '100%',
-          }}
-        >
-          <span>组织部</span>
-          <div>
+  const [items, setItems] = useState([]);
+  const { SubMenu } = Menu;
+  useEffect(() => {
+    fetchUnit();
+  }, []);
+  const node = (item) => {
+    return (
+      <div
+        style={{
+          display: 'flex',
+          alignItems: 'center',
+          justifyContent: 'space-between',
+          width: '100%',
+        }}
+      >
+        <span>{item.name}</span>
+        <div>
+          {item.tier < 4 && (
             <PlusOutlined
               onClick={(e) => {
                 e.stopPropagation();
-                console.log(e);
+                addViewRef1.current.refreshData({ ...item, type: 'add' });
+                handleModalVisibles1(true);
               }}
             />
-            <EditOutlined
-              onClick={(e) => {
-                e.stopPropagation();
-                console.log(e);
-              }}
-            />
-            <DeleteOutlined
-              onClick={(e) => {
-                e.stopPropagation();
-                console.log(e);
-              }}
-            />
-          </div>
+          )}
+          <EditOutlined
+            onClick={(e) => {
+              e.stopPropagation();
+              addViewRef1.current.refreshData({ ...item, type: 'edit' });
+              handleModalVisibles1(true);
+            }}
+          />
+          <DeleteOutlined
+            onClick={(e) => {
+              e.stopPropagation();
+              showDelConfirm(async () => {
+                let status = await sendRequest(delUnit, item.id);
+                if (status) {
+                  fetchUnit();
+                }
+              }, '确认删除该单位吗?');
+            }}
+          />
         </div>
-      ),
-      children: [
-        {
-          key: '11',
-          label: 'Option 1',
-        },
-        {
-          key: '12',
-          label: 'Option 2',
-        },
-        {
-          key: '13',
-          label: 'Option 3',
-        },
-        {
-          key: '14',
-          label: 'Option 4',
-        },
-      ],
-    },
-  ]);
-  useEffect(() => {
-    getUnitList().then((res) => {
-      console.log(res);
+      </div>
+    );
+  };
+  const renderMenuItems = (items) => {
+    return items.map((item) => {
+      if (item.children && item.children.length > 0) {
+        return (
+          <SubMenu
+            key={item.key}
+            title={node(item)}
+            onTitleClick={(item) => {
+              setUnitId(item.key);
+              actionRef.current.reload();
+            }}
+          >
+            {renderMenuItems(item.children)}
+          </SubMenu>
+        );
+      }
+      return (
+        <Menu.Item
+          onClick={(item) => {
+            setUnitId(item.key);
+            actionRef.current.reload();
+          }}
+          key={item.key}
+        >
+          {node(item)}
+        </Menu.Item>
+      );
     });
-    console.log(items);
-  }, []);
+  };
+  const fetchUnit = () => {
+    getUnitList().then((res) => {
+      if (res.code == 200 && res.data) {
+        const traverseItems = (items) => {
+          return items.map((item) => {
+            item.key = item.id;
+            item.title = '1';
+            if (item.child && item.child.length > 0) {
+              item.children = traverseItems(item.child);
+            }
+            return item;
+          });
+        };
+        setItems(traverseItems(res.data));
+      }
+    });
+  };
   const columns = [
     {
-      title: '角色名称',
+      title: '姓名',
       dataIndex: 'name',
+    },
+    {
+      title: '联系方式',
+      dataIndex: 'phone',
+    },
+    {
+      title: '所在单位',
+      dataIndex: 'departmentName',
+      hideInSearch: true,
+      renderFormItem: () => {
+        return (
+          <Cascader
+            options={items}
+            fieldNames={{ value: 'key', label: 'name' }}
+            placeholder="请选择"
+            displayRender={(label) => label[label.length - 1]}
+            changeOnSelect={true}
+          />
+        );
+      },
+    },
+    {
+      hideInTable: true,
+      title: '所在单位',
+      dataIndex: 'departmentId',
+      renderFormItem: () => {
+        return (
+          <Cascader
+            options={items}
+            fieldNames={{ value: 'key', label: 'name' }}
+            placeholder="请选择"
+            displayRender={(label) => label[label.length - 1]}
+            changeOnSelect={true}
+          />
+        );
+      },
+    },
+    {
+      title: '所属职位',
+      dataIndex: 'systemPostName',
+      hideInSearch: true,
+    },
+    {
+      title: '所属角色',
+      dataIndex: 'systemRoleName',
+      hideInSearch: true,
+    },
+    {
+      title: '所属角色',
+      dataIndex:'systemRoleId',
+      hideInTable: true,
+    },
+    {
+      title: '账号层级',
+      dataIndex: 'accountLevel',
+      // (1=市级账号,2=区县账号,3=街道账号,4=社区账号)
+      render: (text, record) => {
+        let role = '';
+        switch (record.accountLevel) {
+          case 1:
+            role = '市';
+            break;
+          case 2:
+            role = '区县';
+            break;
+          case 3:
+            role = '街道';
+            break;
+          case 4:
+            role = '社区';
+            break;
+          case 5:
+            role = '党员';
+            break;
+          default:
+            role = '';
+        }
+        return role;
+      },
+      valueEnum: {
+        1: '市',
+        2: '区县',
+        3: '街道',
+        4: '社区',
+        5: '党员',
+      },
+    },
+    {
+      title: '状态',
+      dataIndex: 'status',
+      // (1=使用中,2=已冻结)
+      hideInSearch: true,
+      render: (text, record) => {
+        let status = '';
+        switch (record.status) {
+          case 1:
+            status = '使用中';
+            break;
+          case 2:
+            status = '已冻结';
+            break;
+          default:
+            status = '';
+        }
+        return status;
+      },
     },
     {
       title: '操作',
@@ -86,21 +229,19 @@
           <Space>
             {record.roleId != 1 && (
               <Access accessible={access['/system_setting/people_management/edit']}>
-                <Button
-                  type="link"
+                <a
                   onClick={() => {
                     addViewRef.current.refreshData(record);
                     handleModalVisibles(true);
                   }}
                 >
                   编辑
-                </Button>
+                </a>
               </Access>
             )}
             {record.roleId != 1 && (
               <Access accessible={access['/system_setting/people_management/del']}>
-                <Button
-                  type="link"
+                <a
                   onClick={() => {
                     showDelConfirm(async () => {
                       let status = await sendRequest(del, record.id);
@@ -111,19 +252,28 @@
                   }}
                 >
                   删除
-                </Button>
+                </a>
               </Access>
             )}
             <Access accessible={access['/system_setting/people_management/detail'] || false}>
-              <Button
-                type="link"
+              <a
                 onClick={() => {
                   addViewRef.current.refreshData(record, true);
                   handleModalVisibles(true);
                 }}
               >
                 查看详情
-              </Button>
+              </a>
+            </Access>
+            <Access accessible={access['/system_setting/role_management/edit'] || false}>
+              <a
+                onClick={() => {
+                  addViewRef.current.refreshData(record, true);
+                  handleModalVisibles(true);
+                }}
+              >
+                冻结
+              </a>
             </Access>
           </Space>
         );
@@ -145,17 +295,19 @@
       <Row style={{ marginTop: 20, background: '#fff' }}>
         <Col span={4}>
           <Space style={{ margin: '10px 0' }}>
-            <span style={{ margin: '0 27px'}}>单位管理</span>
-            <Button type="primary">添加</Button>
+            <span style={{ margin: '0 27px' }}>单位管理</span>
+            <Button
+              type="primary"
+              onClick={() => {
+                addViewRef1.current.refreshData({});
+                handleModalVisibles1(true);
+              }}
+            >
+              添加
+            </Button>
           </Space>
-          <Menu
-            mode="inline"
-            defaultSelectedKeys={['231']}
-            style={{
-              //   width: 256,
-            }}
-            items={items}
-          />
+
+          <Menu mode="inline">{renderMenuItems(items)}</Menu>
         </Col>
         <Col span={20} style={{ minHeight: 650 }}>
           <ProTable
@@ -167,7 +319,21 @@
               showQuickJumper: true,
               defaultPageSize: 10,
             }}
-            // request={(params) => buildProTableDataSource(getList, params)}
+            search={{
+              labelWidth: 'auto',
+              span: 6,
+              defaultCollapsed: false, // 默认是否收起
+            }}
+            request={(params) => {
+              let obj = { ...params };
+              if (unitId) {
+                obj.departmentId = unitId;
+              }
+              if (params.departmentId) {
+                obj.departmentId = params.departmentId[params.departmentId.length - 1];
+              }
+              return buildProTableDataSource(getList, obj);
+            }}
             toolBarRender={(action, selectRows) => [
               <Access accessible={access['/system_setting/people_management/add']}>
                 <Space>
@@ -191,7 +357,7 @@
         ref={addViewRef}
         visible={modalVisible}
         onSave={async (fileds) => {
-          let success = await sendRequest(add, fileds);
+          let success = await sendRequest(addSystemUserInfo, fileds);
           if (success) {
             handleModalVisibles(false);
             actionRef.current.reload();
@@ -199,7 +365,7 @@
           addViewRef.current.clean();
         }}
         onUpdate={async (fileds) => {
-          let success = await sendRequest(edit, fileds);
+          let success = await sendRequest(editSystemUserInfo, fileds);
           if (success) {
             handleModalVisibles(false);
             actionRef.current.reload();
@@ -208,6 +374,25 @@
         }}
         onCancel={() => handleModalVisibles(false)}
       />
+      <AddUnit
+        ref={addViewRef1}
+        visible={modalVisible1}
+        onSave={async (fileds) => {
+          let success = await sendRequest(addUnit, fileds);
+          if (success) {
+            handleModalVisibles1(false);
+            fetchUnit();
+          }
+        }}
+        onUpdate={async (fileds) => {
+          let success = await sendRequest(editUnit, fileds);
+          if (success) {
+            handleModalVisibles1(false);
+            fetchUnit();
+          }
+        }}
+        onCancel={() => handleModalVisibles1(false)}
+      />
     </PageContainer>
   );
 };

--
Gitblit v1.7.1