From 025c4c6e32a1c06ea604a9f2b67c4b8cbc29ce2c Mon Sep 17 00:00:00 2001 From: 13404089107 <puwei@sinata.cn> Date: 星期二, 20 五月 2025 21:33:05 +0800 Subject: [PATCH] 新增迭代 --- management/src/pages/setting/user/index.jsx | 181 +++++++++++++++++++++++++------------------- 1 files changed, 103 insertions(+), 78 deletions(-) diff --git a/management/src/pages/setting/user/index.jsx b/management/src/pages/setting/user/index.jsx index d159be5..c0ab038 100644 --- a/management/src/pages/setting/user/index.jsx +++ b/management/src/pages/setting/user/index.jsx @@ -1,7 +1,7 @@ import { buildProTableDataSource, sendRequest, showDelConfirm, showConfirm } from '@/utils/antdUtils'; import { DeleteOutlined, EditOutlined, PlusOutlined } from '@ant-design/icons'; -import { PageContainer, ProFormText, ProTable, QueryFilter } from '@ant-design/pro-components'; -import { Button, Cascader, Col, Menu, Row, Select, Space } from 'antd'; +import { PageContainer, ProFormText, ProTable, QueryFilter, ProFormSelect } from '@ant-design/pro-components'; +import { Button, Cascader, Col, Menu, Row, Select, Space, Form } from 'antd'; import { useEffect, useRef, useState } from 'react'; import { Access, useAccess } from 'umi'; import AddAndEdit from './components/addAndEdit'; @@ -21,6 +21,7 @@ } from './service'; const Role = () => { + const [form] = Form.useForm(); const actionRef = useRef(); const addViewRef = useRef(); const addViewRef1 = useRef(); @@ -48,7 +49,7 @@ }} > <span>{item.name}</span> - <div> + {/* <div> {item.tier < 4 && ( <Access accessible={access['/system_setting/unit_management/add']}> <PlusOutlined @@ -82,31 +83,40 @@ }} /> </Access> - </div> + </div> */} </div > ); }; - const renderMenuItems = (items) => { + const renderMenuItems = (items, level = 0) => { 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(); + onTitleClick={(e) => { + if (e && e.domEvent) { + e.domEvent.stopPropagation(); + } + setUnitId(item.id); + const values = form.getFieldsValue(); + actionRef.current.reload(values); }} > - {renderMenuItems(item.children)} + {renderMenuItems(item.children, level + 1)} </SubMenu> ); } return ( <Menu.Item - onClick={(item) => { - setUnitId(item.key); - actionRef.current.reload(); + onClick={(e) => { + if (e && e.domEvent) { + e.domEvent.stopPropagation(); + } + const itemId = item.id || item.key; + setUnitId(itemId); + const values = form.getFieldsValue(); + actionRef.current.reload(values); }} key={item.key} > @@ -120,6 +130,8 @@ if (res.code == 200 && res.data) { const traverseItems = (items) => { return items.map((item) => { + if (!item.id) { + } item.key = item.id; item.title = '1'; if (item.child && item.child.length > 0) { @@ -128,7 +140,8 @@ return item; }); }; - setItems(traverseItems(res.data)); + const processedItems = traverseItems(res.data); + setItems(processedItems); } }); }; @@ -141,50 +154,50 @@ 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: '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: '所属角色', + title: '后台权限', dataIndex: 'systemRoleName', hideInSearch: true, }, { - title: '所属角色', + title: '所属权限', dataIndex: 'systemRoleId', hideInTable: true, renderFormItem: () => { @@ -201,31 +214,24 @@ }, }, { - title: '账号层级', + 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; + record.list.length>0&&record.list.map(item=>{ + item.str = '' + if(item.level==1){ + item.str = '市' + }else if(item.level==2){ + item.str = '区县' + '/' + item.districts + }else if(item.level==3){ + item.str = '街道' + '/' + item.districts + '/' + item.street + }else{ + item.str = '社区' + '/' + item.districts + '/' + item.street + '/' + item.community + } + return item.str; + }) + return record.list.map(item=>item.str).join('、'); }, valueEnum: { 1: '市', @@ -265,7 +271,7 @@ <Access accessible={access['/system_setting/people_management/edit']}> <a onClick={() => { - addViewRef.current.refreshData({ ...record, type: 'edit' },items); + addViewRef.current.refreshData({ ...record, type: 'edit' }, items); handleModalVisibles(true); }} > @@ -292,7 +298,7 @@ <Access accessible={access['/system_setting/people_management/detail']}> <a onClick={() => { - addViewRef.current.refreshData({ ...record, type: 'detail' },items); + addViewRef.current.refreshData({ ...record, type: 'detail' }, items); handleModalVisibles(true); }} > @@ -302,7 +308,7 @@ <Access accessible={access['/system_setting/people_management/freeze']}> <a onClick={() => { - showConfirm(`确认${record.status === 1 ? '冻结' : '解冻'}该人员吗?`,'', async () => { + showConfirm(`确认${record.status === 1 ? '冻结' : '解冻'}该人员吗?`, '', async () => { let status = await sendRequest( record.status === 1 ? freezeApi : unfreezeApi, record.id, @@ -331,6 +337,8 @@ > <div style={{ background: '#fff' }}> <QueryFilter + form={form} + labelWidth={100} onReset={(values) => { fetchUnit(values); setUnitId(''); @@ -342,14 +350,21 @@ actionRef.current.reload(); }} > - <ProFormText name="name" label="单位名称" /> + <ProFormText name="name" label="组织结构名称" /> + <ProFormSelect name="type" label="筛选维度" options={[{ + label: '当前组织结构', + value: 1, + }, { + label: '当前及下级组织结构', + value: 2, + }]} /> </QueryFilter> </div> <Row style={{ marginTop: 20, background: '#fff' }}> <Col span={4}> <Space style={{ margin: '10px 0' }}> - <span style={{ margin: '0 27px' }}>单位管理</span> - <Button + <span style={{ margin: '0 27px' }}>组织结构</span> + {/* <Button type="primary" onClick={() => { addViewRef1.current.refreshData({}); @@ -357,10 +372,17 @@ }} > 添加 - </Button> + </Button> */} </Space> - <Menu mode="inline">{renderMenuItems(items)}</Menu> + <Menu + mode="inline" + onClick={({ key, domEvent }) => { + domEvent.stopPropagation(); + }} + > + {renderMenuItems(items)} + </Menu> </Col> <Col span={20} style={{ minHeight: 650 }}> <ProTable @@ -385,6 +407,9 @@ if (params.departmentId) { obj.departmentId = params.departmentId[params.departmentId.length - 1]; } + if (form.getFieldValue('type')) { + obj.type = form.getFieldValue('type'); + } return buildProTableDataSource(getList, obj); }} toolBarRender={(action, selectRows) => [ @@ -393,7 +418,7 @@ <Button type="primary" onClick={() => { - addViewRef.current.refreshData({ type: 'add', unitId : unitId },items); + addViewRef.current.refreshData({ type: 'add', unitId: unitId }, items); handleModalVisibles(true); }} > -- Gitblit v1.7.1