|
@@ -1,15 +1,36 @@
|
|
|
import Header from '@/components/Header'
|
|
|
import Slot from '@/components/Header/slot'
|
|
|
import SvgIcon from '@/components/SvgIcon'
|
|
|
-import { userStore } from '@/store/mobx'
|
|
|
import { iUserInfo } from '@/types/setting'
|
|
|
import consts from '@/utils/consts'
|
|
|
import { Button, Input, Table, Tooltip } from 'antd'
|
|
|
import { ColumnsType } from 'antd/lib/table'
|
|
|
import React, { useEffect, useState } from 'react'
|
|
|
-import { apiAccountList } from './api'
|
|
|
+import { apiAccountEdit, apiAccountEnable, apiAccountList } from './api'
|
|
|
+import UserModal from './components/Modal'
|
|
|
import styles from './index.module.scss'
|
|
|
+interface iModalStatus {
|
|
|
+ visible: boolean
|
|
|
+ loading: boolean
|
|
|
+ type: string
|
|
|
+}
|
|
|
export default function Info() {
|
|
|
+ const initUserState = {
|
|
|
+ account: '',
|
|
|
+ accountGroup: undefined,
|
|
|
+ company: '',
|
|
|
+ csrf: '',
|
|
|
+ enable: 0,
|
|
|
+ id: '',
|
|
|
+ isAdmin: 0,
|
|
|
+ mobile: '',
|
|
|
+ name: '',
|
|
|
+ password: '',
|
|
|
+ position: '',
|
|
|
+ projectId: '',
|
|
|
+ role: '',
|
|
|
+ telephone: ''
|
|
|
+ }
|
|
|
const { Search } = Input
|
|
|
const [ userList, setUserList ] = useState<iUserInfo[]>([ {
|
|
|
"account": "",
|
|
@@ -28,14 +49,48 @@ export default function Info() {
|
|
|
"telephone": ""
|
|
|
} ])
|
|
|
const initData = async () => {
|
|
|
- const { code = -1, data } = await apiAccountList(userStore.userInfo.id)
|
|
|
+ const { code = -1, data } = await apiAccountList()
|
|
|
if (code === consts.RET_CODE.SUCCESS) {
|
|
|
- setUserList(data)
|
|
|
+ setUserList(data.sort((a: iUserInfo, b: iUserInfo) => b.isAdmin - a.isAdmin))
|
|
|
}
|
|
|
}
|
|
|
+ const [ row, setRow ] = useState<iUserInfo>(initUserState)
|
|
|
useEffect(() => {
|
|
|
initData()
|
|
|
}, [])
|
|
|
+ const [ modalStatus, setModalStatus ] = useState<iModalStatus>({
|
|
|
+ visible: false,
|
|
|
+ loading: false,
|
|
|
+ type: ''
|
|
|
+ })
|
|
|
+ const onCreate = async (values: iUserInfo) => {
|
|
|
+ setModalStatus({ ...modalStatus, loading: true })
|
|
|
+ const { code = -1 } = await apiAccountEdit(modalStatus.type, values)
|
|
|
+ if (code === consts.RET_CODE.SUCCESS) {
|
|
|
+ initData()
|
|
|
+ }
|
|
|
+ setModalStatus({
|
|
|
+ ...modalStatus,
|
|
|
+ visible: false,
|
|
|
+ loading: false,
|
|
|
+ type: ''
|
|
|
+ })
|
|
|
+ }
|
|
|
+ const onCancel = () => {
|
|
|
+ setModalStatus({ ...modalStatus, visible: false })
|
|
|
+
|
|
|
+ }
|
|
|
+ const editHandler = (user: iUserInfo) => {
|
|
|
+ setRow(user)
|
|
|
+ setModalStatus({ ...modalStatus, visible: true, type: 'edit' })
|
|
|
+ }
|
|
|
+ const enableHandler = async (record: iUserInfo, enable: 0 | 1) => {
|
|
|
+ const { code = -1 } = await apiAccountEnable({ id: record.id, enable })
|
|
|
+ if ( code === consts.RET_CODE.SUCCESS) {
|
|
|
+ // setUserList([ ...userList, { ...record, enable } ])
|
|
|
+ initData()
|
|
|
+ }
|
|
|
+ }
|
|
|
const columns: ColumnsType<iUserInfo> = [
|
|
|
{
|
|
|
title: '账号',
|
|
@@ -47,7 +102,7 @@ export default function Info() {
|
|
|
<span>{text}</span>
|
|
|
{
|
|
|
record.isAdmin ?
|
|
|
- <Tooltip title="管理员"><span><SvgIcon iconClass="user-circle" fontSize="13"></SvgIcon></span></Tooltip>
|
|
|
+ <Tooltip title="管理员"><span className="pi-mg-left-5"><SvgIcon iconClass="user-circle" fontSize="13"></SvgIcon></span></Tooltip>
|
|
|
: ''
|
|
|
}
|
|
|
</div>
|
|
@@ -81,9 +136,13 @@ export default function Info() {
|
|
|
render: (_: any, record: iUserInfo) => {
|
|
|
return (
|
|
|
<div>
|
|
|
- <Button size="small" className="pi-mg-right-5">编辑</Button>
|
|
|
+ <Button size="small" className="pi-mg-right-5" onClick={() => editHandler(record)}>编辑</Button>
|
|
|
{
|
|
|
- !record.isAdmin && record.enable ? <Button danger size="small">停用</Button> : <Button size="small" className={styles.greenBtn}>启用</Button>
|
|
|
+ !record.isAdmin ?
|
|
|
+ record.enable ?
|
|
|
+ <Button danger size="small" onClick={() => enableHandler(record, 0)}>停用</Button>
|
|
|
+ : <Button size="small" className={styles.greenBtn} onClick={() => enableHandler(record, 1)}>启用</Button>
|
|
|
+ : ''
|
|
|
}
|
|
|
</div>
|
|
|
)
|
|
@@ -94,7 +153,10 @@ export default function Info() {
|
|
|
<div className="content-wrap">
|
|
|
<Header>
|
|
|
<Slot position="right">
|
|
|
- <Button type="primary" size="small">添加账号</Button>
|
|
|
+ <Button type="primary" size="small" onClick={() => {
|
|
|
+ setRow({ ...row, ...initUserState })
|
|
|
+ setModalStatus({ ...modalStatus, visible: true, type: 'add' })
|
|
|
+ }}>添加账号</Button>
|
|
|
</Slot>
|
|
|
<Slot position="left">
|
|
|
<Search placeholder="账号/姓名/单位/手机 搜索" loading={false} size="small"></Search>
|
|
@@ -105,10 +167,11 @@ export default function Info() {
|
|
|
dataSource={userList}
|
|
|
columns={columns}
|
|
|
bordered
|
|
|
- rowClassName={(record: iUserInfo) => record.enable ? 'pi-red' : ''}
|
|
|
+ rowClassName={(record: iUserInfo) => !record.enable ? 'pi-red' : ''}
|
|
|
rowKey={record => record.id}
|
|
|
></Table>
|
|
|
</div>
|
|
|
+ <UserModal {...modalStatus} userInfo={row} onCreate={onCreate} onCancel={onCancel} initData={initData}></UserModal>
|
|
|
</div>
|
|
|
)
|
|
|
}
|