董国庆
2025-02-27 6e446420d9592cc720504b520a33ad5004192a44
Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/H5/threeSide
3个文件已修改
2个文件已添加
445 ■■■■ 已修改文件
.vscode/settings.json 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/config/env.ts 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/src/pages/setting/user/components/addUnit.jsx 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/src/pages/setting/user/index.jsx 333 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/src/pages/setting/user/service.js 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.vscode/settings.json
New file
@@ -0,0 +1,6 @@
{
    "marscode.codeCompletionPro": {
        "enableCodeCompletionPro": true
    },
    "marscode.enableInlineCommand": true
}
management/config/env.ts
@@ -1,6 +1,7 @@
export default {
  dev: {
    SERVER_URL: 'http://192.168.110.188:6194',
    // SERVER_URL: 'https://huacheng.psciio.com',
  },
  test: {
    SERVER_URL: '',
management/src/pages/setting/user/components/addUnit.jsx
New file
@@ -0,0 +1,80 @@
import { Button, Form, Input, Modal } from 'antd';
import { forwardRef, useImperativeHandle, useState } from 'react';
const formItemLayout = {
  labelCol: { span: 7 },
  wrapperCol: { span: 12 },
};
const AddEditView = ({ visible, onSave, onUpdate, onCancel }, ref) => {
  const [form] = Form.useForm();
  const [editData, setEditData] = useState({});
  const [rolesList, setRolesList] = useState();
  /**
   * 确定按钮事件
   */
  const okHandle = () => {
    form.validateFields().then((values) => {
      if (editData.id && editData.type === 'edit') {
        values.id = editData.id;
        if (editData.pid) {
          values.pid = editData.pid;
        }
        onUpdate(values);
      } else {
        if (editData.type === 'add') {
          values.pid = editData.id;
        }
        onSave(values);
      }
    });
  };
  useImperativeHandle(ref, () => {
    return {
      refreshData: (data) => {
        form.resetFields();
        if (data.id && data.type === 'edit') {
          form.setFieldsValue(data);
        }
        setEditData(data);
      },
      clean: () => {
        form.resetFields();
      },
    };
  });
  return (
    <Modal
      getContainer={false}
      width="25%"
      destroyOnClose
      title={editData.type === 'edit' ? '编辑单位' : '添加单位'}
      open={visible}
      onCancel={() => onCancel(false)}
      footer={[
        <Button key="back" onClick={() => onCancel(false)}>
          关闭
        </Button>,
        <Button key="submit" type="primary" onClick={okHandle}>
          确认
        </Button>,
      ]}
    >
      <Form layout="horizontal" {...formItemLayout} form={form} initialValues={{ isAuctioneer: 1 }}>
        <Form.Item
          name="name"
          required
          label="单位名称"
          rules={[{ required: true, message: '请输入单位名称' }]}
        >
          <Input placeholder="请输入单位名称" />
        </Form.Item>
      </Form>
    </Modal>
  );
};
export default forwardRef(AddEditView);
management/src/pages/setting/user/index.jsx
@@ -1,89 +1,232 @@
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 ,editSystemUserInfo,addSystemUserInfo} 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: '操作',
      hideInSearch: true,
      render: (text, record) => {
        return (
          <Space>
          <>
            {record.roleId != 1 && (
              <Access accessible={access['/system_setting/role_management/edit']}>
                <Button
@@ -114,7 +257,7 @@
                </Button>
              </Access>
            )}
            <Access accessible={access['/system_setting/role_management/detail'] || false}>
            <Access accessible={access['/system_setting/role_management/edit'] || false}>
              <Button
                type="link"
                onClick={() => {
@@ -125,7 +268,18 @@
                查看详情
              </Button>
            </Access>
          </Space>
            <Access accessible={access['/system_setting/role_management/edit'] || false}>
              <Button
                type="link"
                onClick={() => {
                  addViewRef.current.refreshData(record, true);
                  handleModalVisibles(true);
                }}
              >
                冻结
              </Button>
            </Access>
          </>
        );
      },
    },
@@ -145,17 +299,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 +323,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/role_management/add']}>
                <Space>
@@ -208,6 +378,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>
  );
};
management/src/pages/setting/user/service.js
@@ -2,7 +2,7 @@
// 列表
export const getList = async (params) => {
    return request(`/api/huacheng-sangeshenbian/systemRole/list`, {
    return request(`/api/huacheng-sangeshenbian/systemUser/list`, {
        method: 'GET',
        params
    });
@@ -39,6 +39,22 @@
    });
}
// 新增单位
export const addUnit = async (data) => {
    return request('/api/huacheng-sangeshenbian/department/add', {
        method: 'POST',
        data,
    });
}
// 编辑单位
export const editUnit = async (data) => {
    return request('/api/huacheng-sangeshenbian/department/edit', {
        method: 'POST',
        data,
    });
}
// 编辑
export const edit = async (data) => {
    return request('/api/huacheng-sangeshenbian/systemRole/edit', {
@@ -54,6 +70,13 @@
    });
}
// 删除单位
export const delUnit = async (id) => {
    return request(`/api/huacheng-sangeshenbian/department/delete/${id}`, {
        method: 'DELETE',
    });
}
// 根据单位层级查询单位数据
export const getDepartmentList = async (tier) => {
    return request(`/api/huacheng-sangeshenbian/department/getDepartmentList/${tier}`, {