Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
J
jinfa-admin
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
project
jinfa-admin
Commits
f962a1b5
Commit
f962a1b5
authored
Aug 18, 2020
by
前端-许佳敏
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
用户管理对接
parent
8db59649
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
120 additions
and
31 deletions
+120
-31
index.less
src/components/NiceForm/index.less
+24
-0
index.tsx
src/components/NiceForm/index.tsx
+24
-2
index.tsx
src/pages/authConfig/userSystem/index.tsx
+8
-8
index.ts
src/pages/authConfig/userSystem/schema/index.ts
+43
-14
userDetail.tsx
src/pages/authConfig/userSystem/userDetail.tsx
+21
-7
No files found.
src/components/NiceForm/index.less
View file @
f962a1b5
...
...
@@ -23,4 +23,27 @@
box-shadow: none;
border-bottom: 1px solid #DFE1E6;
}
}
.flex-layout-label-required {
display: -webkit-inline-box;
display: -webkit-inline-flex;
display: -ms-inline-flexbox;
display: inline-flex;
-webkit-align-items: center;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
height: 32px;
color: rgba(0, 0, 0, 0.85);
font-size: 14px;
&::before {
display: inline-block;
margin-right: 4px;
color: #ff4d4f;
font-size: 14px;
font-family: SimSun, sans-serif;
line-height: 1;
content: '*';
}
}
\ No newline at end of file
src/components/NiceForm/index.tsx
View file @
f962a1b5
import
React
from
'react'
;
import
SchemaForm
,
{
IAntdSchemaFormProps
,
createVirtualBox
,
registerVirtualBox
,
Schema
,
SchemaField
,
FormButtonGroup
,
Reset
,
createControllerBox
,
IAntdSchemaFormProps
,
createVirtualBox
,
registerVirtualBox
,
Schema
,
SchemaField
,
FormButtonGroup
,
Reset
,
createControllerBox
,
FormItem
,
}
from
'@formily/antd'
;
import
{
Button
,
Space
,
Row
,
Col
}
from
'antd'
;
import
styled
from
'styled-components'
...
...
@@ -19,7 +19,7 @@ import Children from './components/Children';
import
CircleBox
from
'./components/CircleBox'
;
import
TableTagList
from
'./components/TableTagList'
;
import
'./index.less'
import
cx
from
'classnames'
export
interface
NiceFormProps
extends
IAntdSchemaFormProps
{}
const
RowLayout
=
styled
(
props
=>
<
Row
justify=
'end'
{
...
props
}
/>)
`
...
...
@@ -74,6 +74,28 @@ const schemaLayout = createControllerBox("schemaLayout", (_props) => {
</
NiceForm
>
);
});
const
renderCol
=
(
schema
,
isLast
)
=>
{
const
{
flexcol
=
{}
}
=
schema
[
'x-component-props'
]
return
<
Col
style=
{
isLast
?
{}
:
{
marginRight
:
24
}
}
{
...
flexcol
}
key=
{
schema
.
path
}
>
<
SchemaField
schema=
{
schema
.
toJSON
()
}
path=
{
schema
.
path
}
/>
</
Col
>
}
registerVirtualBox
(
'flex-box'
,
props
=>
{
const
childProperties
=
props
.
schema
.
getOrderProperties
()
const
{
title
,
required
}
=
props
.
props
const
{
labelcol
,
wrappercol
}
=
props
.
schema
.
getExtendsComponentProps
()
return
<
Row
>
{
title
&&
<
Col
span=
{
labelcol
}
className=
{
cx
(
required
?
'flex-layout-label-required'
:
''
)
}
>
{
title
}
</
Col
>
}
<
Col
span=
{
wrappercol
}
>
<
Row
>
{
childProperties
.
map
((
v
,
i
,
arr
)
=>
renderCol
(
v
.
schema
,
arr
.
length
-
1
===
i
))
}
</
Row
>
</
Col
>
</
Row
>
})
const
NiceForm
:
React
.
FC
<
NiceFormProps
>
=
props
=>
{
const
{
children
,
components
,
...
reset
}
=
props
;
const
customComponents
=
{
...
...
src/pages/authConfig/userSystem/index.tsx
View file @
f962a1b5
...
...
@@ -67,26 +67,26 @@ const UserSystem: React.FC<{}> = () => {
{
title
:
'绑定手机号码'
,
align
:
'center'
,
dataIndex
:
'
tel
'
,
key
:
'
tel
'
,
dataIndex
:
'
phone
'
,
key
:
'
phone
'
,
},
{
title
:
'所属角色'
,
align
:
'center'
,
dataIndex
:
'roleName
s
'
,
key
:
'roleName
s
'
,
dataIndex
:
'roleName'
,
key
:
'roleName'
,
},
{
title
:
'最后登录时间'
,
align
:
'center'
,
dataIndex
:
'
update
Time'
,
key
:
'
update
Time'
,
dataIndex
:
'
lastLogin
Time'
,
key
:
'
lastLogin
Time'
,
},
{
title
:
'外部状态'
,
align
:
'center'
,
dataIndex
:
'stat
e
'
,
key
:
'stat
e
'
,
dataIndex
:
'stat
us
'
,
key
:
'stat
us
'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
StatusSwitch
handleConfirm=
{
()
=>
handleStatus
(
record
)
}
record=
{
record
}
/>
},
{
...
...
src/pages/authConfig/userSystem/schema/index.ts
View file @
f962a1b5
...
...
@@ -35,21 +35,49 @@ export const UserDetailSchema:ISchema = {
title
:
'姓名'
,
required
:
true
},
countryCode
:
{
type
:
'string'
,
title
:
'国家代码(手机号前缀)'
,
required
:
true
},
phone
:
{
type
:
'number'
,
phoneLayout
:
{
type
:
'object'
,
"x-component"
:
'flex-box'
,
title
:
'手机号'
,
"x-rules"
:
[
{
pattern
:
PATTERN_MAPS
.
phone
,
message
:
'请输入正确的手机号'
"x-component-props"
:
{
labelcol
:
6
,
wrappercol
:
12
},
required
:
true
,
properties
:
{
countryCode
:
{
required
:
true
,
type
:
'string'
,
enum
:
[
'+86'
],
"x-mega-props"
:
{
wrapperCol
:
24
},
"x-component-props"
:
{
flexcol
:
{
span
:
6
}
}
},
phone
:
{
type
:
'number'
,
required
:
true
,
"x-mega-props"
:
{
wrapperCol
:
24
,
full
:
true
},
"x-rules"
:
[
{
pattern
:
PATTERN_MAPS
.
phone
,
message
:
'请输入正确的手机号'
}
],
"x-component-props"
:
{
flexcol
:
{
flex
:
1
}
}
}
],
required
:
true
}
},
idCardNo
:
{
type
:
'string'
,
...
...
@@ -91,7 +119,8 @@ export const UserDetailSchema:ISchema = {
callback
:
"{{callback}}"
},
title
:
'关联角色'
}
},
}
}
}
...
...
src/pages/authConfig/userSystem/userDetail.tsx
View file @
f962a1b5
...
...
@@ -14,7 +14,7 @@ import { UserDetailSchema } from './schema';
import
'./index.less'
import
ModalTable
from
'@/components/ModalTable'
;
import
{
useRowSelectionTable
}
from
'@/hooks/useRowSelectionTable'
;
import
{
findItemAndDelete
,
omit
}
from
'@/utils'
;
import
{
findItemAndDelete
,
omit
,
getParentTreeTitles
}
from
'@/utils'
;
import
TabTree
,
{
useTreeActions
}
from
'@/components/TabTree'
;
import
{
useTreeTabs
}
from
'@/hooks/useTreeTabs'
;
import
{
useHttpRequest
}
from
'@/hooks/useHttpRequest'
;
...
...
@@ -30,7 +30,7 @@ const titleRender = (title) => {
}
const
fetchOriginTreeData
=
async
(
params
?)
=>
{
// 平台后台树
const
res
=
await
PublicApi
.
getMemberOrgTree
()
const
res
=
await
PublicApi
.
getMemberOrgTree
(
{},
{
ttl
:
10
,
useCache
:
true
}
)
return
res
}
...
...
@@ -59,7 +59,14 @@ const AddUser: React.FC<{}> = () => {
userId
:
id
}).
then
(
async
res
=>
{
const
{
data
}
=
res
setFormData
(
data
)
fetchOriginTreeData
().
then
(({
data
:
dataSource
})
=>
{
setFormData
({...
data
,
orgName
:
getParentTreeTitles
(
dataSource
,
data
.
orgId
),
memberRoleIds
:
data
.
memberRoleIds
.
map
((
v
,
i
)
=>
{
return
{
id
:
v
,
roleName
:
data
.
memberRoleNames
[
i
]
}
})})
})
})
}
},
[])
...
...
@@ -72,7 +79,9 @@ const AddUser: React.FC<{}> = () => {
userId
:
Number
(
id
)
}
:
omitValue
await
run
(
params
)
history
.
goBack
(
-
1
)
setTimeout
(()
=>
{
history
.
goBack
(
-
1
)
},
300
)
};
// 角色确认弹窗
...
...
@@ -84,6 +93,13 @@ const AddUser: React.FC<{}> = () => {
setRoleVisible
(
false
)
}
const
handleRoleBtn
=
()
=>
{
setRoleVisible
(
true
)
const
selectRoles
=
userActions
.
getFieldValue
(
'memberRoleIds'
)
roleSelectCtl
.
setSelectRow
(
selectRoles
)
roleSelectCtl
.
setSelectedRowKeys
(
selectRoles
.
map
(
v
=>
v
.
id
))
}
// 模拟请求
const
fetchUserList
=
async
(
params
:
any
)
=>
{
const
data
=
await
PublicApi
.
getMemberRolePage
(
params
)
...
...
@@ -111,8 +127,6 @@ const AddUser: React.FC<{}> = () => {
}
]
const
handleCloseTag
=
(
removedTag
:
any
)
=>
{
};
const
handleOrigin
=
()
=>
{
setOriginVisible
(
false
)
if
(
originSelectNode
?.
id
){
...
...
@@ -134,7 +148,7 @@ const AddUser: React.FC<{}> = () => {
}
const
connectCategory
=
<
div
className=
'connectBtn'
onClick=
{
openOriginTree
}
><
LinkOutlined
style=
{
{
marginRight
:
4
}
}
/>
关联
</
div
>
const
addRoles
=
<
Button
block
onClick=
{
()
=>
setRoleVisible
(
true
)
}
>
添加角色
</
Button
>
const
addRoles
=
<
Button
block
onClick=
{
handleRoleBtn
}
>
添加角色
</
Button
>
return
(
<
DetailPage
title=
{
titleRender
(
pageStatus
)
}
>
<
div
className=
"common-wrapper user-system"
>
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment