董国庆
2025-02-28 694a3070452867600bc09c3ce76b3d8dc5c7a369
修改人员管理逻辑
7个文件已修改
375 ■■■■■ 已修改文件
management/src/pages/Login/index.tsx 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/src/pages/message-notification/index.jsx 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/src/pages/setting/user/components/addAndEdit.jsx 313 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/src/pages/setting/user/index.jsx 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/src/pages/work-order/banner/components/addAndEdit.jsx 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/src/pages/work-order/banner/components/index.jsx 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/src/pages/work-order/banner/index.jsx 42 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
management/src/pages/Login/index.tsx
@@ -72,7 +72,7 @@
      id: 'pages.login.success',
      defaultMessage: '登录成功!',
    });
    const userInfo = { userName: data.name };
    const userInfo = { userName: data.name,...data };
    localStorage.setItem('userInfo', JSON.stringify(userInfo));
    let permissionList: any[] = [
      "/work_order_transaction_management/work_order_item_configuration",
management/src/pages/message-notification/index.jsx
@@ -4,6 +4,7 @@
import { useRef, useState, useEffect } from 'react';
import { Access, history, useAccess } from 'umi';
import { getList, setStatus, getUnitList } from './service'
import { render } from 'react-dom';
const Banner = () => {
  const actionRef = useRef();
@@ -64,6 +65,10 @@
      title: '诉求应处理时间',
      dataIndex: 'responseTime',
      hideInSearch: true,
      render: (_, record) => {
        return record.responseTime.split('T')[0]
      }
    },
    {
      title: '提示类型',
management/src/pages/setting/user/components/addAndEdit.jsx
@@ -1,4 +1,4 @@
import { Form, Input, Modal, Tree, Button, Spin, Row, Col, Select, Radio } from 'antd';
import { Form, Input, Modal, Tree, Button, Spin, Row, Col, Select, Radio, Cascader } from 'antd';
import { forwardRef, useImperativeHandle, useState } from 'react';
import { useEffect } from 'react';
import { getDepartmentList, systemPostList, systemRoleList, getSystemUserInfo, getCityList, addSystemUserInfo, editSystemUserInfo } from '../service';
@@ -15,9 +15,12 @@
    const [spinning, setSpinning] = useState(false);
    const [oneCompanyList, setOneCompanyList] = useState([])
    const [twoCompanyList, setTwoCompanyList] = useState([])
    const [threeCompanyList, setThreeCompanyList] = useState([])
    const [fourCompanyList, setFourCompanyList] = useState([])
    const [adminLevel, setAdminLevel] = useState(1)
    //所属职位
    const [positionList, setPositionList] = useState([])
@@ -25,6 +28,8 @@
    const [roleList, setRoleList] = useState([])
    //账号层级
    const [levelList, setLevelList] = useState([{ name: '市级账号', value: 1 }, { name: '区县账号', value: 2 }, { name: '街道账号', value: 3 }, { name: '社区账号', value: 4 }, { name: '党员账号', value: 5 }])
    //选择的层级
    const [activeLevel, setActiveLevel] = useState('')
    //所属区县
    const [countyList, setCountyList] = useState([])
    const [activeCounty, setActiveCounty] = useState({})
@@ -40,39 +45,79 @@
    useEffect(() => {
        // 获取单位
        setTimeout(() => {
            getDepartmentList(1).then(res => {
                setOneCompanyList(() => res.data)
            })
            getDepartmentList(2).then(res => {
                setTwoCompanyList(() => res.data)
            })
        }, 2000);
        setTimeout(() => {
            getDepartmentList(3).then(res => {
                setThreeCompanyList(() => res.data)
            })
            getDepartmentList(4).then(res => {
                setFourCompanyList(() => res.data)
            })
        }, 4000);
    }, [])
    useImperativeHandle(ref, () => {
        return {
            refreshData: (data, type) => {
            refreshData: (data, companyList) => {
                getCountyList()
                setOneCompanyList(() => companyList)
                console.log('companyList', companyList)
                systemPostList({ pageNum: 1, pageSize: 10000 }).then(res => {
                    setPositionList(() => res.data.records)
                })
                systemRoleList({ pageNum: 1, pageSize: 10000 }).then(res => {
                    setRoleList(() => res.data.records)
                })
                // 权限判断
                let adminInfo = JSON.parse(localStorage.getItem('userInfo'))
                setAdminLevel(() => adminInfo.accountLevel)
                switch (adminInfo.accountLevel) {
                    case 1:
                        setLevelList(() => [{ name: '市级账号', value: 1 }, { name: '区县账号', value: 2 }, { name: '街道账号', value: 3 }, { name: '社区账号', value: 4 }, { name: '党员账号', value: 5 }])
                        break;
                    case 2:
                        getStreetList(adminInfo.districtsCode)
                        setLevelList(() => [{ name: '区县账号', value: 2 }, { name: '街道账号', value: 3 }, { name: '社区账号', value: 4 }, { name: '党员账号', value: 5 }])
                        this.$nextTick(() => {
                            form.setFieldsValue({ districtsCode: adminInfo.districtsCode })
                        })
                        break;
                    case 3:
                        getStreetList(adminInfo.districtsCode)
                        getcommunityList(adminInfo.streetId)
                        setLevelList(() => [{ name: '街道账号', value: 3 }, { name: '社区账号', value: 4 }, { name: '党员账号', value: 5 }])
                        form.setFieldsValue({ districtsCode: adminInfo.districtsCode })
                        form.setFieldsValue({ streetId: adminInfo.streetId })
                        break;
                    case 4:
                        getStreetList(adminInfo.districtsCode)
                        getcommunityList(adminInfo.streetId)
                        setLevelList(() => [{ name: '社区账号', value: 4 }, { name: '党员账号', value: 5 }])
                        // this.$nextTick(() => {
                        form.setFieldsValue({ districtsCode: adminInfo.districtsCode })
                        form.setFieldsValue({ streetId: adminInfo.streetId })
                        form.setFieldsValue({ communityId: adminInfo.communityId * 1 })
                        // })
                        break;
                    case 5:
                        getStreetList(adminInfo.districtsCode)
                        getcommunityList(adminInfo.streetId)
                        setLevelList(() => [{ name: '党员账号', value: 5 }])
                        form.setFieldsValue({ districtsCode: adminInfo.districtsCode })
                        form.setFieldsValue({ streetId: adminInfo.streetId })
                        form.setFieldsValue({ communityId: adminInfo.communityId * 1 })
                        break;
                    default:
                        break;
                }
                if (data.id) {
                    getInfo(data.id)
                }
                setData(()=>data)
                setData(() => data)
                if (data.unitId) {
                    let result = []
                    findParent(companyList, data.unitId * 1, result)
                    form.setFieldsValue({ DepartmentId: result })
                }
            },
            clean: () => {
                setSpinning(false)
@@ -84,9 +129,12 @@
    const okHandle = () => {
        form.validateFields().then((values) => {
            values.password = CryptoJS.MD5(values.password).toString();
            values.districts=activeCounty.name
            values.street=activeStreet.name
            values.community=activeCommunity.name
            if (values.DepartmentId) {
                values.oneDepartmentId = values.DepartmentId.length > 0 ? values.DepartmentId[0] : null
                values.twoDepartmentId = values.DepartmentId.length > 1 ? values.DepartmentId[1] : null
                values.threeDepartmentId = values.DepartmentId.length > 2 ? values.DepartmentId[2] : null
                values.fourDepartmentId = values.DepartmentId.length > 3 ? values.DepartmentId[3] : null
            }
            if (data.id) {
                values.id = data.id
                onUpdate(values)
@@ -113,11 +161,16 @@
    const changeCountry = (value, label) => {
        setActiveCounty(label)
        getStreetList(value)
        form.setFieldsValue({ streetId: '', communityId: '' })
        setActiveCommunity({ name: '', id: '' })
        setActiveStreet({ name: '', id: '' })
    }
    const changeStreet = (value, label) => {
        setActiveStreet(label)
        getcommunityList(value)
        form.setFieldsValue({ communityId: '' })
        setActiveCommunity({ name: '', id: '' })
    }
    const changeCommunity = (value, label) => {
        setActiveCommunity(label)
@@ -135,9 +188,47 @@
            if (res.data.communityId) {
                setActiveCommunity({ name: res.data.community, id: res.data.communityId })
            }
            delete res.data.password
            form.setFieldsValue(res.data)
            // delete res.data.password
            let departmentId = []
            if (res.data.oneDepartmentId) {
                departmentId.push(res.data.oneDepartmentId)
            }
            if (res.data.twoDepartmentId) {
                departmentId.push(res.data.twoDepartmentId)
            }
            if (res.data.threeDepartmentId) {
                departmentId.push(res.data.threeDepartmentId)
            }
            if (res.data.fourDepartmentId) {
                departmentId.push(res.data.fourDepartmentId)
            }
            res.data.DepartmentId = departmentId
            console.log('departmentId', departmentId)
            setActiveLevel(() => res.data.accountLevel)
            form.setFieldsValue({ ...res.data, password: '' })
        })
    }
    const findParent = (data, target, result) => {
        for (let item of data) {
            if (item.id === target) {
                //将查找到的目标数据加入结果数组中
                //可根据需求unshift(item.id)或unshift(item)
                result.unshift(item.id)
                return true
            }
            if (item.children && item.children.length > 0) {
                //根据查找到的结果往上找父级节点
                let isFind = findParent(item.children, target, result)
                if (isFind) {
                    result.unshift(item.id)
                    return true
                }
            }
        }
        //走到这说明没找到目标
        return false
    }
    return (
@@ -176,13 +267,14 @@
                    </Col>
                </Row>
                <Row>
                    <Col span={8}>
                    <Col span={16}>
                        <Form.Item
                            name="oneDepartmentId"
                            label="所属一级单位"
                            rules={[{ required: true, message: '请选择所属一级单位' }]}
                            name="DepartmentId"
                            label="所属单位"
                            labelCol={{ span: 4 }}
                            rules={[{ required: true, message: '请选择所属单位' }]}
                        >
                            <Select
                            {/* <Select
                                key="searchSelect"
                                allowClear
                                disabled={data.type == 'detail'}
@@ -191,10 +283,18 @@
                                fieldNames={{ label: 'name', value: 'id' }}
                                filterOption={false}
                            >
                            </Select >
                            </Select > */}
                            <Cascader
                                changeSelect
                                options={oneCompanyList}
                                fieldNames={{ value: 'key', label: 'name' }}
                                placeholder="请选择"
                                // displayRender={(label) => label[label.length - 1]}
                                changeOnSelect={true}
                            />
                        </Form.Item>
                    </Col>
                    <Col span={8}>
                    {/* <Col span={8}>
                        <Form.Item
                            name="twoDepartmentId"
                            label="所属二级单位"
@@ -227,9 +327,9 @@
                            >
                            </Select >
                        </Form.Item>
                    </Col>
                    </Col> */}
                </Row>
                <Row>
                {/* <Row>
                    <Col span={8}>
                        <Form.Item
                            name="fourDepartmentId"
@@ -247,7 +347,7 @@
                            </Select >
                        </Form.Item>
                    </Col>
                </Row>
                </Row> */}
                <Row>
                    <Col span={8}>
                        <Form.Item
@@ -296,6 +396,7 @@
                            <Select
                                key="searchSelect"
                                allowClear
                                onChange={(e) => setActiveLevel(e)}
                                disabled={data.type == 'detail'}
                                placeholder="请选择"
                                options={levelList}
@@ -318,7 +419,7 @@
                                    rules={[{ required: true, message: '是否管理员' }]}
                                >
                                    <Radio.Group
                                    disabled={data.type == 'detail'}
                                        disabled={data.type == 'detail'}
                                        // style={style}
                                        // onChange={onChange}
                                        // value={value}
@@ -332,14 +433,16 @@
                        </Form.Item>
                    </Col>
                </Row>
                <Row>
                    <Col span={8}>
                        <Form.Item
                            name="districtsCode"
                            label="所属区县"
                            rules={[{ required: true, message: '请选择所属区县' }]}
                        >
                            {/* <Select
                {activeLevel != 1 && (
                    <Row>
                        {[2, 3, 4, 5].includes(activeLevel) && (
                            <Col span={8}>
                                <Form.Item
                                    name="districtsCode"
                                    label="所属区县"
                                    rules={[{ required: true, message: '请选择所属区县' }]}
                                >
                                    {/* <Select
                                // onChange={changeCountry}
                                // value={activeCounty}
                                placeholder="请选择"
@@ -347,63 +450,72 @@
                                fieldNames={{ label: 'name', value: 'id' }}
                            >
                            </Select > */}
                            <Select
                                key="searchSelect"
                                allowClear
                                disabled={data.type == 'detail'}
                                onChange={changeCountry}
                                value={activeCounty.id}
                                placeholder="请选择"
                                options={countyList}
                                fieldNames={{ label: 'name', value: 'id' }}
                            // filterOption={false}
                            >
                            </Select >
                        </Form.Item>
                    </Col>
                    <Col span={8}>
                        <Form.Item
                            name="streetId"
                            label="所属街道"
                            rules={[{ required: true, message: '请选择所属街道' }]}
                        >
                            <Select
                                onChange={changeStreet}
                                disabled={!activeCounty || data.type == 'detail'}
                                key="searchSelect"
                                allowClear
                                value={activeStreet.id}
                                placeholder="请选择"
                                options={streetList}
                                fieldNames={{ label: 'name', value: 'id' }}
                            >
                            </Select >
                        </Form.Item>
                    </Col>
                    <Col span={8}>
                        <Form.Item
                            name="communityId"
                            label="所属社区"
                            rules={[{ required: true, message: '请选择所属社区' }]}
                        >
                            <Select
                                onChange={changeCommunity}
                                disabled={!activeStreet || data.type == 'detail'}
                                key="searchSelect"
                                allowClear
                                value={activeCommunity.id}
                                placeholder="请选择"
                                options={communityList}
                                fieldNames={{ label: 'name', value: 'id' }}
                            >
                            </Select >
                        </Form.Item>
                    </Col>
                </Row>
                                    <Select
                                        key="searchSelect"
                                        allowClear
                                        disabled={data.type == 'detail' || [2, 3, 4, 5].includes(adminLevel)}
                                        onChange={changeCountry}
                                        value={activeCounty.id}
                                        placeholder="请选择"
                                        options={countyList}
                                        fieldNames={{ label: 'name', value: 'id' }}
                                    // filterOption={false}
                                    >
                                    </Select >
                                </Form.Item>
                            </Col>
                        )}
                        {[3, 4, 5].includes(activeLevel) && (
                            <Col span={8}>
                                <Form.Item
                                    name="streetId"
                                    label="所属街道"
                                    rules={[{ required: true, message: '请选择所属街道' }]}
                                >
                                    <Select
                                        onChange={changeStreet}
                                        disabled={!activeCounty || data.type == 'detail' || [3, 4, 5].includes(adminLevel)}
                                        key="searchSelect"
                                        allowClear
                                        value={activeStreet.id}
                                        placeholder="请选择"
                                        options={streetList}
                                        fieldNames={{ label: 'name', value: 'id' }}
                                    >
                                    </Select >
                                </Form.Item>
                            </Col>
                        )}
                        {[4, 5].includes(activeLevel) && (
                            <Col span={8}>
                                <Form.Item
                                    name="communityId"
                                    label="所属社区"
                                    rules={[{ required: true, message: '请选择所属社区' }]}
                                >
                                    <Select
                                        onChange={changeCommunity}
                                        disabled={!activeStreet || data.type == 'detail' || [4, 5].includes(adminLevel)}
                                        key="searchSelect"
                                        allowClear
                                        value={activeCommunity.id}
                                        placeholder="请选择"
                                        options={communityList}
                                        fieldNames={{ label: 'name', value: 'id' }}
                                    >
                                    </Select >
                                </Form.Item>
                            </Col>
                        )}
                    </Row>
                )}
                <Row>
                    <Col span={16}>
                        <Form.Item
                            label="联系方式"
                            required
                            labelCol={{ span: 4 }}
                            wrapperCol={{ span: 20 }}
                            style={{ marginBottom: 0 }}
@@ -411,6 +523,7 @@
                            <div style={{ display: "flex", flex: 1 }}>
                                <Form.Item
                                    name="phone"
                                    rules={[{
                                        validator: (rule, value) => {
                                            return new Promise((resolve, reject) => {
@@ -442,11 +555,11 @@
                            rules={[{
                                validator: (rule, value) => {
                                    return new Promise((resolve, reject) => {
                                        if (!value) {
                                        if (!value && data.type == 'add') {
                                            reject('请输入新密码');
                                        }
                                        const passwordRegex = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$/;
                                        if (!passwordRegex.test(value)) {
                                        if (!passwordRegex.test(value) && data.type == 'add') {
                                            reject('密码需要包含大小写字母,数字和特殊符号,且长度为8位以上');
                                        }
                                        resolve('');
@@ -471,10 +584,10 @@
                                    rules={[{
                                        validator: (rule, value) => {
                                            return new Promise((resolve, reject) => {
                                                if (!value) {
                                                if (!value && data.type == 'add') {
                                                    reject('请再次输入新密码');
                                                }
                                                if (value != form.getFieldValue('password')) {
                                                if (value != form.getFieldValue('password') && data.type == 'add') {
                                                    reject('两次密码请保持一致');
                                                }
                                                resolve('');
management/src/pages/setting/user/index.jsx
@@ -265,7 +265,7 @@
              <Access accessible={access['/system_setting/people_management/edit']}>
                <a
                  onClick={() => {
                    addViewRef.current.refreshData({ ...record, type: 'edit' });
                    addViewRef.current.refreshData({ ...record, type: 'edit' },items);
                    handleModalVisibles(true);
                  }}
                >
@@ -292,7 +292,7 @@
            <Access accessible={access['/system_setting/people_management/detail']}>
              <a
                onClick={() => {
                  addViewRef.current.refreshData({ ...record, type: 'detail' });
                  addViewRef.current.refreshData({ ...record, type: 'detail' },items);
                  handleModalVisibles(true);
                }}
              >
@@ -393,7 +393,7 @@
                  <Button
                    type="primary"
                    onClick={() => {
                      addViewRef.current.refreshData({ type: 'add' });
                      addViewRef.current.refreshData({ type: 'add', unitId : unitId  },items);
                      handleModalVisibles(true);
                    }}
                  >
management/src/pages/work-order/banner/components/addAndEdit.jsx
@@ -47,7 +47,7 @@
                  }
                  rules={[
                    {
                      required: fileList.length == 0 ? true : false,
                      required: true,
                      message: '请上传banner图片',
                    },
                  ]}
management/src/pages/work-order/banner/components/index.jsx
@@ -61,6 +61,7 @@
      },
      clean: () => {
        form.resetFields();
        setFileList([])
      },
    };
  });
@@ -146,7 +147,7 @@
          }
          rules={[
            {
              required: fileList.length == 0 ? true : false,
              required: true,
              message: '请上传banner图片',
            },
          ]}
@@ -161,7 +162,7 @@
              showPreviewIcon: false,
            }}
            // customRequest={customRequest}
            // accept="image/png, image/jpeg, image/jpg"
            accept="image/png, image/jpeg, image/jpg"
            fileList={fileList}
            disabled={editData.type == 'detail'}
          >
management/src/pages/work-order/banner/index.jsx
@@ -4,7 +4,7 @@
import { useRef, useState } from 'react';
import { Access, history, useAccess } from 'umi';
import AddAndEdit from './components/index';
import { getList, updateStatus, deleteBanner,add,Edit } from './service'
import { getList, updateStatus, deleteBanner, add, Edit } from './service'
const Banner = () => {
  const actionRef = useRef();
@@ -27,7 +27,8 @@
              <Button
                type="link"
                onClick={() => {
                  addViewRef.current.refreshData({...record, type: 'edit'});
                  addViewRef.current.clean();
                  addViewRef.current.refreshData({ ...record, type: 'edit' });
                  handleModalVisible(true);
                }}
              >
@@ -75,6 +76,7 @@
              <Button
                type="primary"
                onClick={() => {
                  addViewRef.current.clean();
                  addViewRef.current.refreshData({});
                  handleModalVisible(true);
                }}
@@ -86,24 +88,24 @@
        ]}
      />
      <AddAndEdit
                ref={addViewRef}
                visible={modalVisible}
                onCancel={() => handleModalVisible(false)}
                onSave={async (fileds) => {
                  const success = await sendRequest(add, fileds);
                  if (success) {
                    handleModalVisible(false);
                    actionRef.current.reload();
                  }
                }}
                onUpdate={async (fileds) => {
                  const success = await sendRequest(Edit, fileds);
                  if (success) {
                    handleModalVisible(false);
                    actionRef.current.reload();
                  }
                }}
              />
        ref={addViewRef}
        visible={modalVisible}
        onCancel={() => handleModalVisible(false)}
        onSave={async (fileds) => {
          const success = await sendRequest(add, fileds);
          if (success) {
            handleModalVisible(false);
            actionRef.current.reload();
          }
        }}
        onUpdate={async (fileds) => {
          const success = await sendRequest(Edit, fileds);
          if (success) {
            handleModalVisible(false);
            actionRef.current.reload();
          }
        }}
      />
    </PageContainer>
  </div>;
};