|
@@ -1,7 +1,7 @@
|
|
|
import { RootState } from '@/store'
|
|
|
import { UserTableAPIType, UserTableListType } from '@/types'
|
|
|
import { MessageFu } from '@/utils/message'
|
|
|
-import { Input, Button } from 'antd'
|
|
|
+import { Input, Button, Cascader } from 'antd'
|
|
|
import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'
|
|
|
import { useDispatch, useSelector } from 'react-redux'
|
|
|
import styles from './index.module.scss'
|
|
@@ -10,69 +10,116 @@ import MyTable from '@/components/MyTable'
|
|
|
import { Z6tableC } from '@/utils/tableData'
|
|
|
import MyPopconfirm from '@/components/MyPopconfirm'
|
|
|
import { getUserListAPI, userPassResetAPI, userRemoveAPI } from '@/store/action/Z6user'
|
|
|
-import Z6auth from './Z6auth'
|
|
|
+import { D4_APIgetTree } from '@/store/action/Z4organization'
|
|
|
+import { treeLastIdFindFatherFu } from './data'
|
|
|
+
|
|
|
+const baseFormData: UserTableAPIType = {
|
|
|
+ pageNum: 1,
|
|
|
+ pageSize: 10,
|
|
|
+ searchKey: '',
|
|
|
+ deptId: undefined
|
|
|
+}
|
|
|
|
|
|
function Z6user() {
|
|
|
const dispatch = useDispatch()
|
|
|
|
|
|
+ // 获取组织管理列表
|
|
|
+ useEffect(() => {
|
|
|
+ dispatch(D4_APIgetTree())
|
|
|
+ }, [dispatch])
|
|
|
+
|
|
|
+ const { treeData } = useSelector((state: RootState) => state.Z4organization)
|
|
|
+
|
|
|
// 顶部筛选
|
|
|
- const [fromData, setFromData] = useState<UserTableAPIType>({
|
|
|
- pageNum: 1,
|
|
|
- pageSize: 10,
|
|
|
- searchKey: ''
|
|
|
- })
|
|
|
+ const [formData, setFormData] = useState(baseFormData)
|
|
|
+ const formDataRef = useRef(baseFormData)
|
|
|
+ const formDataOldRef = useRef(baseFormData)
|
|
|
+
|
|
|
+ useEffect(() => {
|
|
|
+ formDataRef.current = formData
|
|
|
+ }, [formData])
|
|
|
+
|
|
|
+ // 点击搜索的 时间戳
|
|
|
+ const [timeKey, setTimeKey] = useState(0)
|
|
|
+
|
|
|
+ // 点击搜索
|
|
|
+ const clickSearch = useCallback(() => {
|
|
|
+ setFormData({ ...formData, pageNum: 1 })
|
|
|
+ setTimeout(() => {
|
|
|
+ setTimeKey(Date.now())
|
|
|
+ }, 50)
|
|
|
+ }, [formData])
|
|
|
|
|
|
// 封装发送请求的函数
|
|
|
+ const getListFu = useCallback(
|
|
|
+ (formOld?: UserTableAPIType) => {
|
|
|
+ if (formOld) setFormData({ ...formOld })
|
|
|
+
|
|
|
+ const obj = formOld
|
|
|
+ ? { ...formOld }
|
|
|
+ : {
|
|
|
+ ...formDataRef.current
|
|
|
+ }
|
|
|
+
|
|
|
+ formDataOldRef.current = { ...formDataRef.current }
|
|
|
+
|
|
|
+ let deptIdRes = obj.deptId
|
|
|
|
|
|
- const getList = useCallback(async () => {
|
|
|
- dispatch(getUserListAPI(fromData))
|
|
|
- }, [dispatch, fromData])
|
|
|
+ if (deptIdRes) obj.deptId = Number(deptIdRes[deptIdRes.length - 1])
|
|
|
+
|
|
|
+ dispatch(getUserListAPI(obj))
|
|
|
+ },
|
|
|
+ [dispatch]
|
|
|
+ )
|
|
|
|
|
|
useEffect(() => {
|
|
|
- getList()
|
|
|
- }, [getList])
|
|
|
+ getListFu()
|
|
|
+ }, [getListFu, timeKey])
|
|
|
|
|
|
- const timeRef = useRef(-1)
|
|
|
- // 用户名
|
|
|
+ // 输入框的改变
|
|
|
const txtChangeFu = useCallback(
|
|
|
- (e: React.ChangeEvent<HTMLInputElement>, key: 'searchKey') => {
|
|
|
- clearTimeout(timeRef.current)
|
|
|
- timeRef.current = window.setTimeout(() => {
|
|
|
- setFromData({
|
|
|
- ...fromData,
|
|
|
- [key]: e.target.value,
|
|
|
- pageNum: 1
|
|
|
- })
|
|
|
- }, 500)
|
|
|
+ (txt: string, key: 'searchKey') => {
|
|
|
+ setFormData({
|
|
|
+ ...formData,
|
|
|
+ [key]: txt
|
|
|
+ })
|
|
|
},
|
|
|
- [fromData]
|
|
|
+ [formData]
|
|
|
)
|
|
|
|
|
|
// 点击重置
|
|
|
- const [inputKey, setInputKey] = useState(1)
|
|
|
const resetSelectFu = useCallback(() => {
|
|
|
// 把2个输入框和时间选择器清空
|
|
|
- setInputKey(Date.now())
|
|
|
- setFromData({
|
|
|
- pageNum: 1,
|
|
|
- pageSize: 10,
|
|
|
- searchKey: ''
|
|
|
- })
|
|
|
+ setFormData(baseFormData)
|
|
|
+ setTimeout(() => {
|
|
|
+ setTimeKey(Date.now())
|
|
|
+ }, 50)
|
|
|
}, [])
|
|
|
|
|
|
// 从仓库中获取表格数据
|
|
|
const tableInfo = useSelector((state: RootState) => state.Z6user.tableInfo)
|
|
|
|
|
|
+ // 页码变化
|
|
|
+ const paginationChange = useCallback(
|
|
|
+ (pageNum: number, pageSize: number) => {
|
|
|
+ setFormData({ ...formData, pageNum, pageSize })
|
|
|
+ setTimeout(() => {
|
|
|
+ setTimeKey(Date.now())
|
|
|
+ }, 50)
|
|
|
+ },
|
|
|
+ [formData]
|
|
|
+ )
|
|
|
+
|
|
|
// 点击删除
|
|
|
const delTableFu = useCallback(
|
|
|
async (id: number) => {
|
|
|
const res: any = await userRemoveAPI(id)
|
|
|
if (res.code === 0) {
|
|
|
MessageFu.success('删除成功!')
|
|
|
- getList()
|
|
|
+ getListFu()
|
|
|
}
|
|
|
},
|
|
|
- [getList]
|
|
|
+ [getListFu]
|
|
|
)
|
|
|
|
|
|
// 点击重置密码
|
|
@@ -85,15 +132,10 @@ function Z6user() {
|
|
|
const [editPageShow, setEditPageShow] = useState(false)
|
|
|
const editId = useRef(0)
|
|
|
|
|
|
- const openEditPageFu = useCallback(
|
|
|
- (id: number) => {
|
|
|
- if (id === 0 && tableInfo.list.length >= 20) return MessageFu.warning('最多支持20个用户!')
|
|
|
-
|
|
|
- editId.current = id
|
|
|
- setEditPageShow(true)
|
|
|
- },
|
|
|
- [tableInfo.list.length]
|
|
|
- )
|
|
|
+ const openEditPageFu = useCallback((id: number) => {
|
|
|
+ editId.current = id
|
|
|
+ setEditPageShow(true)
|
|
|
+ }, [])
|
|
|
|
|
|
const tableLastBtn = useMemo(() => {
|
|
|
return [
|
|
@@ -113,15 +155,6 @@ function Z6user() {
|
|
|
</Button>
|
|
|
}
|
|
|
/>
|
|
|
- {/* <Button
|
|
|
- size="small"
|
|
|
- type="text"
|
|
|
- onClick={() =>
|
|
|
- setAuthInfo({ id: item.id, name: item.userName })
|
|
|
- }
|
|
|
- >
|
|
|
- 权限管理
|
|
|
- </Button> */}
|
|
|
<Button size='small' type='text' onClick={() => openEditPageFu(item.id)}>
|
|
|
编辑
|
|
|
</Button>
|
|
@@ -133,8 +166,16 @@ function Z6user() {
|
|
|
]
|
|
|
}, [delTableFu, openEditPageFu, resetPassFu])
|
|
|
|
|
|
- // 授权管理
|
|
|
- const [authInfo, setAuthInfo] = useState({ id: 0, name: '' })
|
|
|
+ // 处理所属部门数据
|
|
|
+ const resList = useMemo(() => {
|
|
|
+ let arr = tableInfo.list.map((v: any) => ({
|
|
|
+ ...v,
|
|
|
+ deptNameRes: v.deptId
|
|
|
+ ? treeLastIdFindFatherFu(treeData, v.deptId + '', 'name').join(' / ')
|
|
|
+ : '-'
|
|
|
+ }))
|
|
|
+ return arr
|
|
|
+ }, [tableInfo.list, treeData])
|
|
|
|
|
|
return (
|
|
|
<div className={styles.Z6user}>
|
|
@@ -144,28 +185,41 @@ function Z6user() {
|
|
|
<div className='selectBoxRow'>
|
|
|
<span>搜索项:</span>
|
|
|
<Input
|
|
|
- key={inputKey}
|
|
|
- maxLength={10}
|
|
|
+ maxLength={15}
|
|
|
showCount
|
|
|
style={{ width: 300 }}
|
|
|
- placeholder='请输入用户名'
|
|
|
- allowClear
|
|
|
- onChange={e => txtChangeFu(e, 'searchKey')}
|
|
|
+ placeholder='请输入用户名或真实姓名'
|
|
|
+ value={formData.searchKey}
|
|
|
+ onChange={e => txtChangeFu(e.target.value, 'searchKey')}
|
|
|
+ />
|
|
|
+   
|
|
|
+ <span>选择部门:</span>
|
|
|
+ <Cascader
|
|
|
+ allowClear={false}
|
|
|
+ changeOnSelect
|
|
|
+ style={{ width: 240 }}
|
|
|
+ options={treeData}
|
|
|
+ value={formData.deptId as string[]}
|
|
|
+ fieldNames={{ label: 'name', value: 'id', children: 'children' }}
|
|
|
+ placeholder='全部'
|
|
|
+ onChange={e =>
|
|
|
+ setFormData({
|
|
|
+ ...formData,
|
|
|
+ deptId: e as string[]
|
|
|
+ })
|
|
|
+ }
|
|
|
/>
|
|
|
</div>
|
|
|
|
|
|
<div className='selectBoxRow'>
|
|
|
-   <Button onClick={resetSelectFu}>重置</Button>
|
|
|
-   
|
|
|
- <Button
|
|
|
- type='primary'
|
|
|
- onClick={() => {
|
|
|
- if (tableInfo.total >= 30) return MessageFu.warning('最多30个账号!')
|
|
|
- openEditPageFu(0)
|
|
|
- }}
|
|
|
- >
|
|
|
+ <Button type='primary' onClick={() => openEditPageFu(0)}>
|
|
|
新增
|
|
|
</Button>
|
|
|
+  
|
|
|
+ <Button type='primary' onClick={clickSearch}>
|
|
|
+ 查询
|
|
|
+ </Button>
|
|
|
+  <Button onClick={resetSelectFu}>重置</Button>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
@@ -173,13 +227,13 @@ function Z6user() {
|
|
|
<div className='tableBox'>
|
|
|
<MyTable
|
|
|
yHeight={630}
|
|
|
- list={tableInfo.list}
|
|
|
+ list={resList}
|
|
|
columnsTemp={Z6tableC}
|
|
|
lastBtn={tableLastBtn}
|
|
|
- pageNum={fromData.pageNum}
|
|
|
- pageSize={fromData.pageSize}
|
|
|
+ pageNum={formData.pageNum}
|
|
|
+ pageSize={formData.pageSize}
|
|
|
total={tableInfo.total}
|
|
|
- onChange={(pageNum, pageSize) => setFromData({ ...fromData, pageNum, pageSize })}
|
|
|
+ onChange={(pageNum, pageSize) => paginationChange(pageNum, pageSize)}
|
|
|
/>
|
|
|
</div>
|
|
|
|
|
@@ -188,15 +242,11 @@ function Z6user() {
|
|
|
<UserAdd
|
|
|
id={editId.current}
|
|
|
closePage={() => setEditPageShow(false)}
|
|
|
- upTableList={getList}
|
|
|
+ upTableList={formOld => getListFu(formOld)}
|
|
|
addTableList={resetSelectFu}
|
|
|
+ formOld={formDataOldRef.current}
|
|
|
/>
|
|
|
) : null}
|
|
|
-
|
|
|
- {/* 点击授权 */}
|
|
|
- {authInfo.id ? (
|
|
|
- <Z6auth authInfo={authInfo} closeFu={() => setAuthInfo({ id: 0, name: '' })} />
|
|
|
- ) : null}
|
|
|
</div>
|
|
|
)
|
|
|
}
|