| | |
| | | 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'; |
| | |
| | | } from './service'; |
| | | |
| | | const Role = () => { |
| | | const [form] = Form.useForm(); |
| | | const actionRef = useRef(); |
| | | const addViewRef = useRef(); |
| | | const addViewRef1 = useRef(); |
| | |
| | | }} |
| | | > |
| | | <span>{item.name}</span> |
| | | <div> |
| | | {/* <div> |
| | | {item.tier < 4 && ( |
| | | <Access accessible={access['/system_setting/unit_management/add']}> |
| | | <PlusOutlined |
| | |
| | | }} |
| | | /> |
| | | </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} |
| | | > |
| | |
| | | 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) { |
| | |
| | | return item; |
| | | }); |
| | | }; |
| | | setItems(traverseItems(res.data)); |
| | | const processedItems = traverseItems(res.data); |
| | | setItems(processedItems); |
| | | } |
| | | }); |
| | | }; |
| | |
| | | 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: () => { |
| | |
| | | }, |
| | | }, |
| | | { |
| | | 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: '市', |
| | |
| | | <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); |
| | | }} |
| | | > |
| | |
| | | <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); |
| | | }} |
| | | > |
| | |
| | | <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, |
| | |
| | | > |
| | | <div style={{ background: '#fff' }}> |
| | | <QueryFilter |
| | | form={form} |
| | | labelWidth={100} |
| | | onReset={(values) => { |
| | | fetchUnit(values); |
| | | setUnitId(''); |
| | |
| | | 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({}); |
| | |
| | | }} |
| | | > |
| | | 添加 |
| | | </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 |
| | |
| | | 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) => [ |
| | |
| | | <Button |
| | | type="primary" |
| | | onClick={() => { |
| | | addViewRef.current.refreshData({ type: 'add', unitId : unitId },items); |
| | | addViewRef.current.refreshData({ type: 'add', unitId: unitId }, items); |
| | | handleModalVisibles(true); |
| | | }} |
| | | > |