Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
T
TOSTUMI
Project
Project
Details
Activity
Releases
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
Maple
TOSTUMI
Commits
34977cee
Commit
34977cee
authored
Jan 04, 2021
by
cellee
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
账号权限需求变更
Signed-off-by:
cellee
<
893264950@qq.com
>
parent
6b46650b
Changes
14
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
556 additions
and
992 deletions
+556
-992
SecurityLayout.tsx
src/layouts/SecurityLayout.tsx
+2
-0
Account.ts
src/models/CommunityManagement/Account.ts
+1
-1
AccountAdds.tsx
src/pages/AccountManagement/account/AccountAdds.tsx
+5
-28
AccountDetail.tsx
src/pages/AccountManagement/account/AccountDetail.tsx
+301
-129
AccountEdit copy.tsx
src/pages/AccountManagement/account/AccountEdit copy.tsx
+0
-512
AccountEdit.tsx
src/pages/AccountManagement/account/AccountEdit.tsx
+204
-134
CellList.tsx
src/pages/CommunityManagement/CellList/CellList.tsx
+2
-2
FacilityBookings.tsx
...CommunityManagement/FacilityBookings/FacilityBookings.tsx
+3
-6
VisitorRecord.tsx
...pages/CommunityManagement/VisitorRecord/VisitorRecord.tsx
+6
-10
VisitorRecord.tsx
...pages/CommunityManagement/visitorRecord/VisitorRecord.tsx
+6
-10
Init.ts
src/services/Init.ts
+14
-11
params.ts
src/utils/params.ts
+12
-53
模板.tsx
模板.tsx
+0
-26
模板服务.ts
模板服务.ts
+0
-70
No files found.
src/layouts/SecurityLayout.tsx
View file @
34977cee
...
...
@@ -90,6 +90,8 @@ class SecurityLayout extends React.Component<SecurityLayoutProps, SecurityLayout
// 登录
if
(
history
.
location
.
pathname
==
'/'
)
{
var
isLogin
=
false
;
console
.
log
(
getCookie
(
'token'
));
if
(
getCookie
(
'token'
).
length
!=
0
)
{
isLogin
=
true
;
}
...
...
src/models/CommunityManagement/Account.ts
View file @
34977cee
...
...
@@ -138,7 +138,7 @@ export default {
},
*
SA
({
DataSave
},
{
call
,
put
})
{
console
.
log
(
DataSave
);
//
console.log(DataSave);
yield
put
({
type
:
'returnDataSave'
,
DataSave
});
},
...
...
src/pages/AccountManagement/account/AccountAdds.tsx
View file @
34977cee
...
...
@@ -7,19 +7,18 @@ import './Account.less';
import
{
zhCnFaci
,
enUsFaci
}
from
'@/utils/power'
;
import
{
AccountTip
}
from
'@/utils/tip'
;
import
SelectCommunity
from
'@/components/SelectCommunity/Tow'
;
import
{
getNumber
}
from
'@/utils/string'
;
// 正则
import
{
RA
}
from
'@/utils/method'
;
const
Account
=
(
props
:
any
)
=>
{
const
module
=
'Account'
;
const
{
dispatch
,
SubResult
,
CommunityList
,
loading
,
user
,
Info
}
=
props
;
const
{
dispatch
,
SubResult
,
loading
,
user
,
Info
}
=
props
;
// 权限列表
const
treeData
=
localStorage
.
getItem
(
'umi_locale'
)
==
'zh-CN'
?
zhCnFaci
:
enUsFaci
;
const
[
expandedKeys
,
setExpandedKeys
]
=
useState
<
string
[]
>
([]);
// 展开栏目
const
[
expandedKeys
,
setExpandedKeys
]
=
useState
<
string
[]
>
([
'0'
]);
// 展开栏目
const
[
checkedKeys
,
setCheckedKeys
]
=
useState
([]
as
any
);
// 默认已选栏目
const
[
selectedKeys
,
setSelectedKeys
]
=
useState
<
string
[]
>
([]);
// 设置选中的树节点
const
[
autoExpandParent
,
setAutoExpandParent
]
=
useState
<
boolean
>
(
true
);
// 树形菜单展开关闭
...
...
@@ -29,8 +28,6 @@ const Account = (props: any) => {
const
[
disab
,
setdisab
]
=
useState
(
false
);
// 是否禁止选择二级
const
[
towAccountId
,
settowAccountId
]
=
useState
(
null
);
// 二级账户id
const
[
treeDataList
,
settreeDataList
]
=
useState
(
treeData
);
// 权限列表
//默认选中的小区
const
[
community
,
setCommunity
]
=
useState
(
CommunityList
);
// 默认全选
// 表单标识
const
[
form
]
=
Form
.
useForm
();
...
...
@@ -103,7 +100,6 @@ const Account = (props: any) => {
// 二级管辖小区和权限
useEffect
(()
=>
{
if
(
Info
!=
null
)
{
setCommunity
(
Info
.
community
);
power
(
Info
.
permissions
);
setCheckedKeys
([]);
}
...
...
@@ -162,10 +158,6 @@ const Account = (props: any) => {
// 权限
message
.
error
(
'Please Select Permission!'
);
return
false
;
}
else
if
(
value
.
community
.
value
==
null
||
value
.
community
.
value
.
length
==
0
)
{
// 小区
message
.
error
(
'Please Select The Jurisdiction Area!'
);
return
false
;
}
else
if
(
value
.
tosUserName
.
length
<
6
)
{
// 账号长度
message
.
error
(
'The Account Password is Greater Than 6 Digits!'
);
...
...
@@ -175,7 +167,6 @@ const Account = (props: any) => {
message
.
error
(
'Please select affiliated account !'
);
return
false
;
}
else
{
value
.
tosUserServiceCellList
=
value
.
community
.
value
;
// 管辖小区
value
.
tosUserEmail
=
value
.
tosUserName
;
// 邮箱就是账号
value
.
tosUserLevel
=
values
;
//级别
value
.
creatorName
=
JSON
.
parse
(
userInfo
).
userModel
.
tosUserName
;
//新建者账号
...
...
@@ -210,10 +201,11 @@ const Account = (props: any) => {
// 另传权限
let
obj
=
{
userName
:
value
.
tosUserName
,
userPassword
:
value
.
tosUserPwd
,
permissionArray
:
newData
,
};
console
.
log
(
value
);
console
.
log
(
obj
);
RA
(
38
,
value
,
module
,
dispatch
);
// 信息上传
RA
(
42
,
obj
,
module
,
dispatch
);
// 权限上传
return
true
;
...
...
@@ -258,7 +250,6 @@ const Account = (props: any) => {
if
(
e
.
target
.
value
==
2
)
{
//否则打开
settowAccountId
(
null
);
setCommunity
(
CommunityList
);
}
};
...
...
@@ -281,8 +272,6 @@ const Account = (props: any) => {
// 选择哪个二级账号
const
handleChange
=
(
value
:
any
)
=>
{
console
.
log
(
`selected
${
value
}
`
);
RA
(
57
,
{
tosUserLevelId
:
value
},
module
,
dispatch
);
// 根据用户id获取用户管辖小区名和权限
settowAccountId
(
value
);
};
...
...
@@ -310,15 +299,12 @@ const Account = (props: any) => {
name=
"contract"
onFinish=
{
onFinishContract
}
>
<
Descriptions
column=
{
{
xs
:
1
,
sm
:
2
,
md
:
3
}
}
>
<
Descriptions
column=
{
{
xs
:
1
,
sm
:
1
,
md
:
2
,
xl
:
3
}
}
>
<
Descriptions
.
Item
>
<
Form
.
Item
name=
"tosUserName"
label=
"Account ID"
rules=
{
AccountTip
[
0
]
as
any
}
>
<
Input
placeholder=
"Login Account"
className=
"input"
/>
</
Form
.
Item
>
</
Descriptions
.
Item
>
</
Descriptions
>
<
Descriptions
column=
{
{
xs
:
1
,
sm
:
2
,
md
:
3
}
}
>
<
Descriptions
.
Item
>
<
Form
.
Item
name=
"tosAccountName"
label=
"Name"
rules=
{
AccountTip
[
1
]
as
any
}
>
<
Input
placeholder=
"Name Of Administrator"
className=
"input"
/>
...
...
@@ -336,13 +322,6 @@ const Account = (props: any) => {
</
Descriptions
.
Item
>
</
Descriptions
>
<
Form
.
Item
name=
"community"
label=
"Community"
>
<
SelectCommunity
checklist=
{
community
?
community
:
null
}
list=
{
community
?
community
:
[]
}
/>
</
Form
.
Item
>
<
div
className=
"diy"
style=
{
{
marginBottom
:
'14px'
}
}
>
<
div
className=
"label"
>
<
span
className=
"title"
>
Privilege Level:
</
span
>
...
...
@@ -407,7 +386,6 @@ const Account = (props: any) => {
const
AccountProps
=
(
state
:
any
)
=>
{
const
{
Data
,
DataSave
,
DataSaveDetail
,
Result
,
SubResult
,
Info
}
=
state
.
Account
;
const
{
CommunityList
}
=
state
.
Init
;
// 小区列表
const
loading
=
state
.
loading
.
models
.
Account
||
false
;
const
{
user
}
=
state
;
return
{
...
...
@@ -416,7 +394,6 @@ const AccountProps = (state: any) => {
DataSaveDetail
,
Result
,
loading
,
CommunityList
,
user
,
// 获取当前账户信息
SubResult
,
Info
,
...
...
src/pages/AccountManagement/account/AccountDetail.tsx
View file @
34977cee
import
React
,
{
useState
,
useEffect
,
useRef
}
from
'react'
;
import
{
Form
,
Input
,
Button
,
Spin
,
message
,
Descriptions
,
Modal
,
Tree
,
Tag
}
from
'antd'
;
import
{
Form
,
Input
,
Button
,
message
,
Descriptions
,
Spin
,
Tree
,
Radio
,
Select
,
Modal
}
from
'antd'
;
import
{
connect
,
history
}
from
'umi'
;
import
{
EditOutlined
,
LeftOutlined
,
ExclamationCircleOutlined
,
PoweroffOutlined
,
RightOutlined
,
CheckCircleOutlined
,
}
from
'@ant-design/icons'
;
import
{
getCookie
}
from
'@/utils/method'
;
import
'./Account.less'
;
import
{
zhCnFaci
,
enUsFaci
}
from
'@/utils/power'
;
import
{
AccountTip
}
from
'@/utils/tip'
;
// import SelectCommunity from '@/components/SelectCommunity';
import
ShowOptions
from
'@/components/ShowOptions/index'
;
import
{
getNumber
}
from
'@/utils/string'
;
// 正则
import
{
RA
}
from
'@/utils/method'
;
import
moment
from
'moment'
;
const
Account
=
(
props
:
any
)
=>
{
const
module
=
'Account'
;
const
{
dispatch
,
Data
,
DataSave
,
DataSaveDetail
,
Result
,
loading
,
Permission
,
user
}
=
props
;
const
{
Option
}
=
Select
;
const
{
dispatch
,
SubResult
,
loading
,
user
,
DataSave
,
Permission
,
Result
}
=
props
;
// 权限列表
const
treeData
=
enUsFaci
||
zhCn
Faci
;
const
treeData
=
localStorage
.
getItem
(
'umi_locale'
)
==
'zh-CN'
?
zhCnFaci
:
enUs
Faci
;
const
[
expandedKeys
,
setExpandedKeys
]
=
useState
<
string
[]
>
([]);
// 展开栏目
const
[
checkedKeys
,
setCheckedKeys
]
=
useState
<
string
[]
>
([]
);
// 默认已选栏目
const
[
expandedKeys
,
setExpandedKeys
]
=
useState
<
string
[]
>
([
'0'
]);
// 展开栏目
const
[
checkedKeys
,
setCheckedKeys
]
=
useState
([]
as
any
);
// 默认已选栏目
const
[
selectedKeys
,
setSelectedKeys
]
=
useState
<
string
[]
>
([]);
// 设置选中的树节点
const
[
autoExpandParent
,
setAutoExpandParent
]
=
useState
<
boolean
>
(
true
);
// 树形菜单展开关闭
const
[
treeDataList
,
settreeDataList
]
=
useState
(
treeData
);
// 权限列表
// 单选 二级还是三级管理员
const
[
values
,
setvalues
]
=
useState
(
2
);
// 树形菜单展开关闭
const
[
towAccountId
,
settowAccountId
]
=
useState
(
null
);
// 二级账户id
const
[
over
,
setOver
]
=
useState
(
false
);
// 关闭账号确认弹窗
//提醒次数
const
[
frequency
,
setfrequency
]
=
useState
(
0
);
// 权限列表
// 表单标识
const
[
form
]
=
Form
.
useForm
();
const
formRef
=
useRef
(
null
);
//
//
数据
//
当前编辑账户的
数据
useEffect
(()
=>
{
if
(
DataSave
!=
null
)
{
if
(
DataSave
!=
null
&&
user
!=
null
)
{
// 赋值
form
.
setFieldsValue
({
tosUserName
:
DataSave
.
tosUserName
,
...
...
@@ -56,18 +52,59 @@ const Account = (props: any) => {
setvalues
(
DataSave
.
tosUserLevel
);
// 等级
// 当前登录的不是admin 就 给默认id
if
(
user
.
currentUser
.
userModel
.
tosUserLevel
>
1
)
{
settowAccountId
(
DataSave
.
userLeader
);
// 二级账户id
}
if
(
DataSave
.
tosUserLevel
==
3
)
{
settowAccountId
(
DataSave
.
userLeader
);
//上级id
}
// 发起获取权限请求
RA
(
54
,
{
tosUserName
:
DataSave
.
tosUserName
},
module
,
dispatch
);
// 发起获取权限请求
}
else
{
history
.
push
(
'/AccountManagement/account'
);
}
},
[
DataSave
]);
},
[
DataSave
,
user
]);
//
当前账户权限
//
提交信息结果
useEffect
(()
=>
{
if
(
user
!=
null
)
{
let
treeDatas
=
treeData
;
let
_a
=
user
.
currentUser
.
permission
;
// 当前账户权限
let
_p
=
treeDatas
[
0
].
children
;
// 所有权限列表
if
(
SubResult
!=
null
)
{
if
(
SubResult
.
statr
==
0
&&
SubResult
.
desc
==
0
)
{
// 保存成功, 清掉原来数据 并且跳转
message
.
success
(
'Submitted Successfully !'
);
dispatch
({
type
:
module
+
'/ReData'
});
dispatch
({
type
:
module
+
'/AccountClear'
});
history
.
go
(
-
1
);
}
}
},
[
SubResult
]);
// 已选权限
useEffect
(()
=>
{
if
(
Permission
!=
null
)
{
// 当前权限
let
newPer
=
eval
(
'('
+
Permission
.
curUserPermission
+
')'
);
// 上级或者下级权限
let
newPerTow
=
eval
(
'('
+
Permission
.
beloginPermission
+
')'
);
let
data
:
any
=
[];
// 当前权限-- 字符串
let
dataTow
:
any
=
[];
// 上级或者下级权限 (可编辑权限)-- 字符串
// 转字符串
for
(
let
i
in
newPer
)
{
data
[
i
]
=
newPer
[
i
]
+
''
;
}
for
(
let
i
in
newPerTow
)
{
dataTow
[
i
]
=
newPerTow
[
i
]
+
''
;
}
// 深拷贝权限列表
let
treeDatas
=
JSON
.
parse
(
JSON
.
stringify
(
treeData
));
// 如果是三级账户 可编辑的就是 上级权限,否者是登录的账户权限
let
_a
=
DataSave
.
tosUserLevel
==
3
?
dataTow
:
user
.
currentUser
.
permission
;
// 当前账户权限
let
_p
=
treeDatas
[
0
].
children
;
// 所有权限列表
let
arr
:
any
=
[];
// 一级栏目权限
let
erArr
:
any
=
[];
// 一级栏目权限
// 循环一级 判断当前账户有没有权限修改增加
...
...
@@ -86,32 +123,19 @@ const Account = (props: any) => {
}
}
}
// 赋值
改变
// 赋值
可勾选的权限
treeDatas
[
0
].
children
=
_p
;
setCheckedKeys
(
treeDatas
as
any
);
// 可勾选列表
}
},
[
user
]);
settreeDataList
([...
treeDatas
]);
// 已选权限
useEffect
(()
=>
{
if
(
Permission
!=
null
)
{
let
newPer
=
eval
(
'('
+
Permission
+
')'
);
let
data
:
any
=
[];
// 编辑的账户的权限
for
(
let
i
in
newPer
)
{
data
[
i
]
=
newPer
[
i
]
+
''
;
}
let
_p
=
treeData
[
0
].
children
;
// 所有权限列表
// console.log(_p); // 所有权限列表
//-----------------分割--------------------
// 在解决默认已勾选的值
for
(
let
i
in
_p
)
{
let
arr
=
_p
[
i
].
children
;
// 每个权限
let
newArr
=
[];
// 每个权限下的子权限列表
for
(
let
j
in
arr
)
{
newArr
.
push
(
arr
[
j
].
key
);
}
// console.log(newArr);
if
(
!
newArr
.
every
((
val
)
=>
data
.
includes
(
val
)))
{
// 判断数组是否包含另一个数组
// console.log('不包含' + _p[i].key);
...
...
@@ -120,58 +144,144 @@ const Account = (props: any) => {
if
(
index
>
-
1
)
{
data
.
splice
(
index
,
1
);
}
}
else
{
// console.log('包含' + _p[i].key);
}
}
// 再赋值给列表
// data.push('0');
if
(
DataSave
.
tosUserLevel
==
3
)
{
// 且禁用最后两个账户管理
_p
[
_p
.
length
-
1
].
children
[
2
].
disableCheckbox
=
true
;
_p
[
_p
.
length
-
1
].
children
[
3
].
disableCheckbox
=
true
;
}
setCheckedKeys
(
data
);
}
},
[
Permission
]);
},
[
Permission
,
DataSave
]);
// 保存提交
const
onFinishContract
=
async
(
value
:
any
)
=>
{
const
userInfo
=
localStorage
.
getItem
(
'userInfo'
)
||
''
;
const
id
=
JSON
.
parse
(
userInfo
).
userModel
.
id
;
// console.log(value);
if
(
checkedKeys
.
length
==
0
)
{
if
(
value
.
tosAccountName
.
length
<=
2
&&
value
.
tosUserPhone
.
length
!=
8
&&
value
.
tosUserPhone
.
length
!=
11
)
{
// 姓名联系方式
message
.
error
(
'Please enter the correct name and contact information!'
);
return
false
;
}
else
if
(
checkedKeys
[
0
].
key
)
{
// 如果存在key 就是没有选择
// 权限
message
.
error
(
'Please Select Permission!'
);
return
false
;
}
else
if
(
value
.
community
.
value
==
null
||
value
.
community
.
value
.
length
==
0
)
{
// 小区
message
.
error
(
'Please Select The Jurisdiction Area!'
);
return
false
;
}
else
if
(
value
.
tosUserName
.
length
<
6
)
{
// 账号长度
message
.
error
(
'The Account Password is Greater Than 6 Digits!'
);
return
false
;
}
else
if
(
values
==
3
&&
towAccountId
==
null
)
{
// 如果创建的是三级账号就要判断是否选择了绑定的二级账户
message
.
error
(
'Please select affiliated account !'
);
return
false
;
}
else
{
value
.
tosUserServiceCellList
=
value
.
community
.
value
;
// 管辖小区
value
.
tosUserEmail
=
value
.
tosUserName
;
// 邮箱就是账号
value
.
tosUserLevel
=
values
;
//级别
value
.
creatorName
=
getCookie
(
'name'
)
;
//新建者账号
// value.creatorName = JSON.parse(userInfo).userModel.tosUserName
; //新建者账号
value
.
creatorId
=
id
;
//新建者ID
if
(
values
==
3
)
{
value
.
userLeader
=
towAccountId
;
}
delete
value
.
community
;
// console.log(value);
DataSave
?
(
value
.
id
=
DataSave
.
id
)
:
''
;
// 判断有没有 0 有就删除
for
(
var
i
in
checkedKeys
)
{
checkedKeys
[
i
]
==
'0'
?
checkedKeys
.
splice
(
i
,
1
)
:
''
;
}
// 追加到上级id
let
Obj
=
treeData
[
0
].
children
;
for
(
let
i
in
Obj
)
{
for
(
let
j
in
checkedKeys
)
{
if
(
JSON
.
stringify
(
Obj
[
i
].
children
).
indexOf
(
JSON
.
stringify
(
checkedKeys
[
j
]))
!=
-
1
)
{
// 提取出上级id 并且追加
checkedKeys
.
push
(
Obj
[
i
].
key
);
}
}
}
// 去重后在排序
let
newData
=
Array
.
from
(
new
Set
(
checkedKeys
)).
sort
((
n1
:
any
,
n2
:
any
)
=>
{
return
parseInt
(
n1
)
-
parseInt
(
n2
);
});
//新旧权限比对
let
subPermissionArray
=
[];
if
(
values
==
2
)
{
let
newPer
=
eval
(
'('
+
Permission
.
curUserPermission
+
')'
);
let
data
:
any
=
[];
// 当前权限-- 字符串
// 转字符串
for
(
let
i
in
newPer
)
{
data
[
i
]
=
newPer
[
i
]
+
''
;
}
let
Deleted
=
compare
(
data
,
newData
);
// 当前删除的权限有哪些
subPermissionArray
=
compares
(
Deleted
);
// 当前删除的三级权限有哪些
}
// 另传权限
let
obj
=
{
userName
:
value
.
tosUserName
,
userPassword
:
value
.
tosUserPwd
,
permissionArray
:
checkedKeys
.
sort
((
n1
,
n2
)
=>
{
return
parseInt
(
n1
)
-
parseInt
(
n2
);
}),
permissionArray
:
newData
,
subPermissionArray
,
};
// console.log(obj);
RA
(
38
,
value
,
module
,
dispatch
);
// 信息上传
RA
(
42
,
obj
,
module
,
dispatch
);
// 权限上传
}
};
// 保存前看看那些权限是增加或者减少
function
compare
(
beforeArr
:
any
,
afterArr
:
any
)
{
let
add
=
[];
let
del
=
[];
let
cenObj
=
{};
//把beforeArr数组去重放入cenObj
for
(
let
i
=
0
;
i
<
beforeArr
.
length
;
i
++
)
{
cenObj
[
beforeArr
[
i
]]
=
beforeArr
[
i
];
}
//遍历afterArr,查看其元素是否在cenObj中
for
(
let
j
=
0
;
j
<
afterArr
.
length
;
j
++
)
{
if
(
!
cenObj
[
afterArr
[
j
]])
{
add
.
push
(
afterArr
[
j
]);
}
else
{
delete
cenObj
[
afterArr
[
j
]];
}
}
for
(
let
k
in
cenObj
)
{
del
.
push
(
k
);
}
// 只返回删除的
return
del
;
}
// 看看是不是动了三级权限的东西
function
compares
(
afterArr
:
any
)
{
// 下级权限
let
newPerTow
=
eval
(
'('
+
Permission
.
beloginPermission
+
')'
);
let
dataTow
:
any
=
[];
// 上级或者下级权限 (可编辑权限)-- 字符串
let
del
=
[];
for
(
let
i
in
newPerTow
)
{
dataTow
[
i
]
=
newPerTow
[
i
]
+
''
;
}
for
(
let
i
of
afterArr
)
{
if
(
dataTow
.
indexOf
(
i
)
!==
-
1
)
{
del
.
push
(
i
);
}
}
return
del
;
}
//goToReturn
const
goToReturn
=
()
=>
{
history
.
go
(
-
1
);
...
...
@@ -185,27 +295,64 @@ const Account = (props: any) => {
// 点击单个触发
const
onCheck
=
(
checkedKeys
:
any
)
=>
{
// 如果是二级账户就要判断去掉的有没有三级账户的权限
if
(
DataSave
.
tosUserLevel
==
2
)
{
let
checkers
=
(
arr
:
any
,
target
:
any
)
=>
target
.
every
((
v
:
any
)
=>
arr
.
includes
(
v
));
// 上级或者下级权限
let
newPerTow
=
eval
(
'('
+
Permission
.
beloginPermission
+
')'
);
// 列表权限
let
treeDatas
=
JSON
.
parse
(
JSON
.
stringify
(
treeData
));
// 列表的二级权限
let
TowLev
=
treeDatas
[
0
].
children
.
map
((
v
:
any
)
=>
v
.
key
);
let
dataTow
:
any
=
[];
for
(
let
i
in
newPerTow
)
{
// 如果不是二级就添加进去
if
(
TowLev
.
indexOf
(
newPerTow
[
i
]
+
''
)
==
-
1
)
{
dataTow
.
push
(
newPerTow
[
i
]
+
''
);
}
}
// true 就是没有勾选到三级 false 就是勾选到三级了
if
(
!
checkers
(
checkedKeys
,
dataTow
))
{
showDeleteConfirm
(
checkedKeys
);
return
false
;
}
}
setCheckedKeys
(
checkedKeys
);
};
const
{
confirm
}
=
Modal
;
// 弹窗
function
showDeleteConfirm
(
checkedKeys
:
any
)
{
// 如果没有提醒过的话就开启 否则直接设置
// if (frequency < 1) {
confirm
({
title
:
'Are you sure you want to delete this permission?'
,
icon
:
<
ExclamationCircleOutlined
/>,
content
:
'Cancel permission has been given to level 3 account. Do you want to delete it together!'
,
okText
:
'Yes'
,
okType
:
'danger'
,
cancelText
:
'No'
,
onOk
()
{
setCheckedKeys
(
checkedKeys
);
setfrequency
(
1
);
},
onCancel
()
{},
});
// } else {
// setCheckedKeys(checkedKeys);
// }
}
// 点击树节点触发 - 大栏目
const
onSelect
=
(
selectedKeys
:
any
,
info
:
any
)
=>
{
// console.log('onSelect', info);
setSelectedKeys
(
selectedKeys
);
};
// 监听改变状态提交结果
useEffect
(()
=>
{
if
(
Result
!=
null
)
{
message
.
success
(
'Successful Operation !'
);
setOver
(
false
);
// 清除结果
dispatch
({
type
:
'Account/ResultClear'
});
dispatch
({
type
:
'Account/ReData'
});
// 退回列表
history
.
push
(
'/AccountManagement/account'
);
}
},
[
Result
]);
//手机号
const
keyup_communityManagerFee
=
(
e
:
any
)
=>
{
e
.
target
.
value
=
keyup_tool
(
e
.
target
.
value
);
...
...
@@ -213,9 +360,28 @@ const Account = (props: any) => {
const
keyup_tool
=
(
value
:
any
)
=>
{
return
getNumber
(
value
.
replace
(
/
[^\d
^
\.]
+/g
,
''
));
};
// 选择小区名字并赋值
// 管理员级别样式
const
radioStyle
=
{
display
:
'block'
,
height
:
'30px'
,
lineHeight
:
'30px'
,
marginBottom
:
'15px'
,
};
//级别切换
const
onRadio
=
(
e
:
any
)
=>
{
setvalues
(
e
.
target
.
value
);
// setCheckedKeys([]);
if
(
e
.
target
.
value
==
2
)
{
//否则打开
settowAccountId
(
null
);
}
};
// 停用账号弹窗
const
[
over
,
setOver
]
=
useState
(
false
);
// 关闭账号确认弹窗
const
lockS
=
()
=>
{
// 先判断是不是自己
const
userInfo
=
JSON
.
parse
(
localStorage
.
getItem
(
'userInfo'
)
||
'[]'
);
...
...
@@ -226,7 +392,6 @@ const Account = (props: any) => {
setOver
(
true
);
}
};
// 关闭弹窗
const
handleCancel
=
(
e
:
any
)
=>
{
setOver
(
false
);
...
...
@@ -236,7 +401,6 @@ const Account = (props: any) => {
const
handleOk
=
(
e
:
any
)
=>
{
//
let
obj
=
{
// userStatus: DataSave.userStatus == 0 ? 1 : 0,
userStatus
:
1
,
userID
:
DataSave
.
tosUserId
,
};
...
...
@@ -244,6 +408,19 @@ const Account = (props: any) => {
// setOver(false);
};
// 监听改变状态提交结果
useEffect
(()
=>
{
if
(
Result
!=
null
)
{
message
.
success
(
'Successful Operation !'
);
setOver
(
false
);
// 清除结果
dispatch
({
type
:
'Account/ResultClear'
});
dispatch
({
type
:
'Account/ReData'
});
// 退回列表
history
.
push
(
'/AccountManagement/account'
);
}
},
[
Result
]);
return
(
<
Spin
spinning=
{
loading
}
>
<
div
className=
"contop"
style=
{
{
padding
:
'12px 20px'
}
}
>
...
...
@@ -266,7 +443,6 @@ const Account = (props: any) => {
</
div
>
</
h3
>
<
hr
></
hr
>
<
Form
ref=
{
formRef
}
form=
{
form
}
...
...
@@ -276,15 +452,12 @@ const Account = (props: any) => {
name=
"contract"
onFinish=
{
onFinishContract
}
>
<
Descriptions
column=
{
{
xs
:
1
,
sm
:
2
,
md
:
3
}
}
>
<
Descriptions
column=
{
{
xs
:
1
,
sm
:
1
,
md
:
2
,
xl
:
3
}
}
>
<
Descriptions
.
Item
>
<
Form
.
Item
name=
"tosUserName"
label=
"Account ID"
rules=
{
AccountTip
[
0
]
as
any
}
>
<
Input
placeholder=
"Login Account"
className=
"input"
disabled
/>
</
Form
.
Item
>
</
Descriptions
.
Item
>
</
Descriptions
>
<
Descriptions
column=
{
{
xs
:
1
,
sm
:
2
,
md
:
3
}
}
>
<
Descriptions
.
Item
>
<
Form
.
Item
name=
"tosAccountName"
label=
"Name"
rules=
{
AccountTip
[
1
]
as
any
}
>
<
Input
placeholder=
"Name Of Administrator"
className=
"input"
disabled
/>
...
...
@@ -303,39 +476,36 @@ const Account = (props: any) => {
</
Descriptions
.
Item
>
</
Descriptions
>
<
Form
.
Item
name=
"community"
label=
"Community"
>
{
/* <SelectCommunity
checklist={DataSave == null ? null : DataSave.tosUserServiceCell.split(',')}
/> */
}
<
ShowOptions
list=
{
DataSave
?
DataSave
.
tosUserServiceCell
.
split
(
','
)
:
[]
}
defaultValue=
{
'Put It Away'
}
></
ShowOptions
>
</
Form
.
Item
>
<
div
className=
"diy"
style=
{
{
marginBottom
:
'14px'
}
}
>
<
div
className=
"label"
>
<
span
className=
"title"
>
Privilege Level:
</
span
>
</
div
>
<
div
className=
"label"
>
<
Tag
icon=
{
<
CheckCircleOutlined
/>
}
color=
"success"
style=
{
{
verticalAlign
:
'sub'
,
fontSize
:
14
,
padding
:
'4px 7px'
}
}
>
{
DataSave
&&
DataSave
.
tosUserLevel
==
2
?
'Two Level Administrator '
:
'Three Level Administrator'
}
</
Tag
>
{
DataSave
&&
DataSave
.
tosUserLevel
==
3
?
(
<
Tag
icon=
{
<
RightOutlined
/>
}
color=
"processing"
style=
{
{
verticalAlign
:
'sub'
,
fontSize
:
14
,
padding
:
'4px 7px'
}
}
<
Radio
.
Group
value=
{
values
}
onChange=
{
onRadio
}
>
<
Radio
style=
{
radioStyle
}
disabled
value=
{
2
}
>
Two Level Administrator
</
Radio
>
<
Radio
style=
{
radioStyle
}
disabled
value=
{
3
}
>
Three Level Administrator
</
Radio
>
</
Radio
.
Group
>
{
/* 选择挂靠的二级菜单 */
}
{
values
===
3
&&
user
.
currentUser
.
userModel
.
tosUserLevel
<=
1
?
(
<
Select
style=
{
{
width
:
260
}
}
placeholder=
"Please select affiliated account"
disabled
defaultValue=
{
DataSave
.
userLeader
}
>
Superiors:
{
DataSave
.
userLeaderAccountName
}
-
{
DataSave
.
userLeaderName
}
</
Tag
>
{
DataSave
?
(
<
Option
key=
{
DataSave
.
userLeader
}
value=
{
DataSave
.
userLeader
}
>
{
DataSave
.
userLeaderAccountName
}
-
{
DataSave
.
userLeaderName
}
</
Option
>
)
:
(
''
)
}
</
Select
>
)
:
(
''
)
}
...
...
@@ -356,7 +526,7 @@ const Account = (props: any) => {
checkedKeys=
{
checkedKeys
}
onSelect=
{
onSelect
}
selectedKeys=
{
selectedKeys
}
treeData=
{
treeData
}
treeData=
{
treeData
List
}
disabled
/>
</
div
>
...
...
@@ -370,35 +540,35 @@ const Account = (props: any) => {
</
Button
>
</
div
>
</
div
>
</
Form
>
{
/* 确认关闭账号 */
}
<
Modal
title=
"Operation Tips"
visible=
{
over
}
okText=
{
'Confirm'
}
cancelText=
{
'Cancel'
}
onOk=
{
handleOk
}
onCancel=
{
handleCancel
}
confirmLoading=
{
loading
}
>
{
DataSave
!=
null
?
(
<
p
>
Are You Sure To
{
' '
}
<
span
style=
{
{
color
:
'red'
}
}
>
{
DataSave
.
userStatus
!=
1
?
'Close'
:
'Open'
}
</
span
>
{
' '
}
The Account '
<
span
style=
{
{
color
:
'red'
}
}
>
{
DataSave
.
tosUserName
}
</
span
>
' ?
</
p
>
)
:
(
''
)
}
</
Modal
>
{
/* 确认关闭账号 */
}
<
Modal
title=
"Operation Tips"
visible=
{
over
}
okText=
{
'Confirm'
}
cancelText=
{
'Cancel'
}
onOk=
{
handleOk
}
onCancel=
{
handleCancel
}
confirmLoading=
{
loading
}
>
{
DataSave
!=
null
?
(
<
p
>
Are You Sure To
{
' '
}
<
span
style=
{
{
color
:
'red'
}
}
>
{
DataSave
.
userStatus
!=
1
?
'Close'
:
'Open'
}
</
span
>
{
' '
}
The Account '
<
span
style=
{
{
color
:
'red'
}
}
>
{
DataSave
.
tosUserName
}
</
span
>
' ?
</
p
>
)
:
(
''
)
}
</
Modal
>
</
Form
>
</
div
>
</
Spin
>
);
};
const
AccountProps
=
(
state
:
any
)
=>
{
const
{
Data
,
DataSave
,
DataSaveDetail
,
Result
,
Permission
}
=
state
.
Account
;
const
{
Data
,
DataSave
,
DataSaveDetail
,
Result
,
SubResult
,
Permission
,
Info
}
=
state
.
Account
;
const
loading
=
state
.
loading
.
models
.
Account
||
false
;
const
{
user
}
=
state
;
return
{
...
...
@@ -408,7 +578,9 @@ const AccountProps = (state: any) => {
Result
,
loading
,
Permission
,
user
,
user
,
// 获取当前账户信息
SubResult
,
Info
,
};
};
...
...
src/pages/AccountManagement/account/AccountEdit copy.tsx
deleted
100644 → 0
View file @
6b46650b
import
React
,
{
useState
,
useEffect
,
useRef
}
from
'react'
;
import
{
Form
,
Input
,
Button
,
message
,
Descriptions
,
Spin
,
Tree
,
Radio
,
Select
}
from
'antd'
;
import
{
connect
,
history
}
from
'umi'
;
import
{
EditOutlined
,
LeftOutlined
}
from
'@ant-design/icons'
;
import
'./Account.less'
;
import
{
zhCnFaci
,
enUsFaci
}
from
'@/utils/power'
;
import
{
AccountTip
}
from
'@/utils/tip'
;
import
SelectCommunity
from
'@/components/SelectCommunity'
;
import
{
getNumber
}
from
'@/utils/string'
;
// 正则
import
{
RA
}
from
'@/utils/method'
;
const
Account
=
(
props
:
any
)
=>
{
const
module
=
'Account'
;
const
{
dispatch
,
SubResult
,
CommunityList
,
loading
,
user
,
DataSave
,
Permission
,
Info
}
=
props
;
// 权限列表
const
treeData
=
localStorage
.
getItem
(
'umi_locale'
)
==
'zh-CN'
?
zhCnFaci
:
enUsFaci
;
const
[
expandedKeys
,
setExpandedKeys
]
=
useState
<
string
[]
>
([]);
// 展开栏目
const
[
checkedKeys
,
setCheckedKeys
]
=
useState
([]
as
any
);
// 默认已选栏目
const
[
selectedKeys
,
setSelectedKeys
]
=
useState
<
string
[]
>
([]);
// 设置选中的树节点
const
[
autoExpandParent
,
setAutoExpandParent
]
=
useState
<
boolean
>
(
true
);
// 树形菜单展开关闭
const
[
treeDataList
,
settreeDataList
]
=
useState
(
treeData
);
// 权限列表
// 单选 二级还是三级管理员
const
[
values
,
setvalues
]
=
useState
(
2
);
// 树形菜单展开关闭
const
[
disab
,
setdisab
]
=
useState
(
false
);
// 是否禁止选择二级
const
[
towAccountId
,
settowAccountId
]
=
useState
(
null
);
// 二级账户id
//默认选中的小区
const
[
community
,
setCommunity
]
=
useState
([]
as
any
);
// 表单标识
const
[
form
]
=
Form
.
useForm
();
const
formRef
=
useRef
(
null
);
const
{
Option
}
=
Select
;
//二级账户列表
const
towAccount
=
JSON
.
parse
(
localStorage
.
getItem
(
'towAccount'
)
||
'[]'
);
// 当前账户权限
useEffect
(()
=>
{
if
(
user
!=
null
||
values
==
2
)
{
let
_tmp
=
JSON
.
stringify
(
treeData
);
//将对象转换为json字符串形式
let
treeDatas
=
JSON
.
parse
(
_tmp
);
//将转换而来的字符串转换为原生js对
let
_a
=
user
.
currentUser
.
permission
;
// 当前账户权限
let
_p
=
treeDatas
[
0
].
children
;
// 所有权限列表
let
arr
:
any
=
[];
// 一级栏目权限
let
erArr
:
any
=
[];
// 一级栏目权限
// 循环一级 判断当前账户有没有权限修改增加
for
(
let
i
of
_a
)
{
for
(
let
j
in
_p
)
{
if
(
_p
[
j
].
key
==
i
)
{
arr
.
push
(
_p
[
j
].
key
);
_p
[
j
].
disabled
=
false
;
}
// 二级权限
for
(
let
k
in
_p
[
j
].
children
)
{
if
(
_p
[
j
].
children
[
k
].
key
==
i
)
{
erArr
.
push
(
_p
[
j
].
children
[
k
].
key
);
_p
[
j
].
children
[
k
].
disableCheckbox
=
false
;
}
}
}
}
// 当当前账户是二级以上禁用创建二级菜单
if
(
user
.
currentUser
.
userModel
.
tosUserLevel
>
1
)
{
setvalues
(
3
);
setdisab
(
true
);
settowAccountId
(
user
.
currentUser
.
userModel
.
id
);
// 且禁用最后两个账户管理
_p
[
_p
.
length
-
1
].
children
[
2
].
disableCheckbox
=
true
;
_p
[
_p
.
length
-
1
].
children
[
3
].
disableCheckbox
=
true
;
}
else
{
// 如果是一级账户获取挂靠的二级账户名称
RA
(
56
,
{},
module
,
dispatch
);
// 权限上传
}
// 赋值改变
treeDatas
[
0
].
children
=
_p
;
settreeDataList
(
treeDatas
as
any
);
// 可勾选列表
}
},
[
user
,
values
]);
// 当前编辑账户的数据
useEffect
(()
=>
{
if
(
DataSave
!=
null
&&
user
!=
null
)
{
// 赋值
form
.
setFieldsValue
({
tosUserName
:
DataSave
.
tosUserName
,
tosUserPhone
:
DataSave
.
tosUserPhone
,
tosAccountName
:
DataSave
.
tosAccountName
,
});
setvalues
(
DataSave
.
tosUserLevel
);
// 等级
setCommunity
([...
DataSave
.
tosUserServiceCell
.
split
(
','
)]);
// 默认小区
// 当前登录的不是admin 就 给默认id
if
(
user
.
currentUser
.
userModel
.
tosUserLevel
>
1
)
{
settowAccountId
(
DataSave
.
userLeader
);
// 二级账户id
}
// 如果是3级,取消后面两个选择
if
(
DataSave
.
tosUserLevel
==
3
)
{
let
treeDatas
=
treeData
;
let
_p
=
treeDatas
[
0
].
children
;
// 所有权限列表
_p
[
_p
.
length
-
1
].
children
[
2
].
disableCheckbox
=
true
;
_p
[
_p
.
length
-
1
].
children
[
3
].
disableCheckbox
=
true
;
// 赋值改变
treeDatas
[
0
].
children
=
_p
;
setCheckedKeys
(
treeDatas
as
any
);
// 可勾选列表
}
// 发起获取权限请求
RA
(
54
,
{
tosUserName
:
DataSave
.
tosUserName
},
module
,
dispatch
);
// 发起获取权限请求
}
},
[
DataSave
,
user
]);
// 提交信息结果
useEffect
(()
=>
{
if
(
SubResult
!=
null
)
{
if
(
SubResult
.
statr
==
0
&&
SubResult
.
desc
==
0
)
{
// 保存成功, 清掉原来数据 并且跳转
message
.
success
(
'Submitted Successfully !'
);
dispatch
({
type
:
module
+
'/ReData'
});
dispatch
({
type
:
module
+
'/AccountClear'
});
history
.
go
(
-
1
);
}
}
},
[
SubResult
]);
// 已选权限
useEffect
(()
=>
{
if
(
Permission
!=
null
)
{
let
newPer
=
eval
(
'('
+
Permission
+
')'
);
let
data
:
any
=
[];
// 编辑的账户的权限
for
(
let
i
in
newPer
)
{
data
[
i
]
=
newPer
[
i
]
+
''
;
}
let
_p
=
treeData
[
0
].
children
;
// 所有权限列表
// console.log(_p); // 所有权限列表
for
(
let
i
in
_p
)
{
let
arr
=
_p
[
i
].
children
;
// 每个权限
let
newArr
=
[];
// 每个权限下的子权限列表
for
(
let
j
in
arr
)
{
newArr
.
push
(
arr
[
j
].
key
);
}
// console.log(newArr);
if
(
!
newArr
.
every
((
val
)
=>
data
.
includes
(
val
)))
{
// 判断数组是否包含另一个数组
// console.log('不包含' + _p[i].key);
// 不全部包含就删除数组的元素
var
index
=
data
.
indexOf
(
_p
[
i
].
key
);
if
(
index
>
-
1
)
{
data
.
splice
(
index
,
1
);
}
}
else
{
// console.log('包含' + _p[i].key);
}
}
// 再赋值给列表
setCheckedKeys
(
data
);
}
},
[
Permission
]);
// 二级管辖小区和权限
useEffect
(()
=>
{
if
(
Info
!=
null
)
{
setCommunity
(
Info
.
community
);
power
(
Info
.
permissions
);
}
},
[
Info
]);
//权限赋值
const
power
=
(
val
:
any
)
=>
{
let
_tmp
=
JSON
.
stringify
(
treeData
);
//将对象转换为json字符串形式
let
treeDatas
=
JSON
.
parse
(
_tmp
);
//将转换而来的字符串转换为原生js对
let
_a
=
val
;
// 当前账户权限
let
_p
=
treeDatas
[
0
].
children
;
// 所有权限列表
let
arr
:
any
=
[];
// 一级栏目权限
let
erArr
:
any
=
[];
// 一级栏目权限
// 循环一级 判断当前账户有没有权限修改增加
for
(
let
i
of
_a
)
{
for
(
let
j
in
_p
)
{
if
(
_p
[
j
].
key
==
i
)
{
arr
.
push
(
_p
[
j
].
key
);
_p
[
j
].
disabled
=
false
;
}
// 二级权限
for
(
let
k
in
_p
[
j
].
children
)
{
if
(
_p
[
j
].
children
[
k
].
key
==
i
)
{
erArr
.
push
(
_p
[
j
].
children
[
k
].
key
);
_p
[
j
].
children
[
k
].
disableCheckbox
=
false
;
}
}
}
}
// 且禁用最后两个账户管理
_p
[
_p
.
length
-
1
].
children
[
2
].
disableCheckbox
=
true
;
_p
[
_p
.
length
-
1
].
children
[
3
].
disableCheckbox
=
true
;
// 赋值改变
treeDatas
[
0
].
children
=
_p
;
settreeDataList
(
treeDatas
as
any
);
// 可勾选列表
};
// 保存提交
const
onFinishContract
=
async
(
value
:
any
)
=>
{
const
userInfo
=
localStorage
.
getItem
(
'userInfo'
)
||
''
;
const
id
=
JSON
.
parse
(
userInfo
).
userModel
.
id
;
if
(
value
.
tosAccountName
.
length
<=
2
&&
value
.
tosUserPhone
.
length
!=
8
&&
value
.
tosUserPhone
.
length
!=
11
)
{
// 姓名联系方式
message
.
error
(
'Please enter the correct name and contact information!'
);
return
false
;
}
else
if
(
checkedKeys
[
0
].
key
)
{
// 如果存在key 就是没有选择
// 权限
message
.
error
(
'Please Select Permission!'
);
return
false
;
}
else
if
(
value
.
community
.
value
==
null
||
value
.
community
.
value
.
length
==
0
)
{
// 小区
message
.
error
(
'Please Select The Jurisdiction Area!'
);
return
false
;
}
else
if
(
value
.
tosUserName
.
length
<
6
)
{
// 账号长度
message
.
error
(
'The Account Password is Greater Than 6 Digits!'
);
return
false
;
}
else
if
(
values
==
3
&&
towAccountId
==
null
)
{
// 如果创建的是三级账号就要判断是否选择了绑定的二级账户
message
.
error
(
'Please select affiliated account !'
);
return
false
;
}
else
{
value
.
tosUserServiceCellList
=
value
.
community
.
value
;
// 管辖小区
value
.
tosUserEmail
=
value
.
tosUserName
;
// 邮箱就是账号
value
.
tosUserLevel
=
values
;
//级别
// value.creatorName = JSON.parse(userInfo).userModel.tosUserName; //新建者账号
value
.
creatorId
=
id
;
//新建者ID
if
(
values
==
3
)
{
value
.
userLeader
=
towAccountId
;
}
delete
value
.
community
;
DataSave
?
(
value
.
id
=
DataSave
.
id
)
:
''
;
// 判断有没有 0 有就删除
for
(
var
i
in
checkedKeys
)
{
checkedKeys
[
i
]
==
'0'
?
checkedKeys
.
splice
(
i
,
1
)
:
''
;
}
// 追加到上级id
let
Obj
=
treeData
[
0
].
children
;
console
.
log
(
Obj
);
for
(
let
i
in
Obj
)
{
for
(
let
j
in
checkedKeys
)
{
if
(
JSON
.
stringify
(
Obj
[
i
].
children
).
indexOf
(
JSON
.
stringify
(
checkedKeys
[
j
]))
!=
-
1
)
{
// 提取出上级id 并且追加
checkedKeys
.
push
(
Obj
[
i
].
key
);
}
}
}
// 去重后在排序
let
newData
=
Array
.
from
(
new
Set
(
checkedKeys
)).
sort
((
n1
:
any
,
n2
:
any
)
=>
{
return
parseInt
(
n1
)
-
parseInt
(
n2
);
});
// 另传权限
let
obj
=
{
userName
:
value
.
tosUserName
,
userPassword
:
value
.
tosUserPwd
,
permissionArray
:
newData
,
};
RA
(
38
,
value
,
module
,
dispatch
);
// 信息上传
RA
(
42
,
obj
,
module
,
dispatch
);
// 权限上传
return
true
;
}
};
//goToReturn
const
goToReturn
=
()
=>
{
history
.
go
(
-
1
);
};
// 展开/收起树形菜单触发
const
onExpand
=
(
expandedKeys
:
any
)
=>
{
setExpandedKeys
(
expandedKeys
);
setAutoExpandParent
(
false
);
};
// 点击单个触发
const
onCheck
=
(
checkedKeys
:
any
)
=>
{
// console.log('onCheck', checkedKeys);
setCheckedKeys
(
checkedKeys
);
};
// 点击树节点触发 - 大栏目
const
onSelect
=
(
selectedKeys
:
any
,
info
:
any
)
=>
{
// console.log('onSelect', info);
setSelectedKeys
(
selectedKeys
);
};
// 管理员级别样式
const
radioStyle
=
{
display
:
'block'
,
height
:
'30px'
,
lineHeight
:
'30px'
,
marginBottom
:
'15px'
,
};
//级别切换
const
onRadio
=
(
e
:
any
)
=>
{
// 当编辑自己的时候不能切换
if
(
user
.
currentUser
.
userModel
.
id
===
DataSave
.
id
)
{
message
.
info
(
'You cannot modify your own level!'
);
return
false
;
}
else
{
setvalues
(
e
.
target
.
value
);
// 如果是3级,取消后面两个选择
let
treeDatas
=
treeData
;
let
_p
=
treeDatas
[
0
].
children
;
// 所有权限列表
// 禁用最后两个
if
(
e
.
target
.
value
==
3
)
{
_p
[
_p
.
length
-
1
].
children
[
2
].
disableCheckbox
=
true
;
_p
[
_p
.
length
-
1
].
children
[
3
].
disableCheckbox
=
true
;
}
else
{
//否则打开
_p
[
_p
.
length
-
1
].
children
[
2
].
disableCheckbox
=
false
;
_p
[
_p
.
length
-
1
].
children
[
3
].
disableCheckbox
=
false
;
settowAccountId
(
null
);
}
// 赋值改变
treeDatas
[
0
].
children
=
_p
;
setCheckedKeys
(
treeDatas
as
any
);
// 可勾选列表
return
;
}
};
//手机号
const
keyup_communityManagerFee
=
(
e
:
any
)
=>
{
e
.
target
.
value
=
keyup_tool
(
e
.
target
.
value
);
};
const
keyup_tool
=
(
value
:
any
)
=>
{
return
getNumber
(
value
.
replace
(
/
[^\d
^
\.]
+/g
,
''
));
};
// 二级账户
const
listItems
=
towAccount
.
map
((
item
:
any
)
=>
{
return
(
<
Option
key=
{
item
.
id
}
value=
{
item
.
id
}
>
{
item
.
tosAccountName
}
-
{
item
.
tosUserEmail
}
</
Option
>
);
});
// 选择哪个二级账号
const
handleChange
=
(
value
:
any
)
=>
{
RA
(
57
,
{
tosUserLevelId
:
value
},
module
,
dispatch
);
// 根据用户id获取用户管辖小区名和权限
settowAccountId
(
value
);
};
return
(
<
Spin
spinning=
{
loading
}
>
<
div
className=
"contop"
style=
{
{
padding
:
'12px 20px'
}
}
>
<
h3
className=
"capi"
>
<
EditOutlined
/>
Edit Account
<
div
className=
"back"
>
<
Button
onClick=
{
goToReturn
}
>
<
LeftOutlined
/>
Back
</
Button
>
</
div
>
</
h3
>
<
hr
></
hr
>
<
Form
ref=
{
formRef
}
form=
{
form
}
autoComplete=
"off"
// layout="inline"
layout=
"horizontal"
name=
"contract"
onFinish=
{
onFinishContract
}
>
<
Descriptions
column=
{
{
xs
:
1
,
sm
:
2
,
md
:
3
}
}
>
<
Descriptions
.
Item
>
<
Form
.
Item
name=
"tosUserName"
label=
"Account ID"
rules=
{
AccountTip
[
0
]
as
any
}
>
<
Input
placeholder=
"Login Account"
className=
"input"
/>
</
Form
.
Item
>
</
Descriptions
.
Item
>
</
Descriptions
>
<
Descriptions
column=
{
{
xs
:
1
,
sm
:
2
,
md
:
3
}
}
>
<
Descriptions
.
Item
>
<
Form
.
Item
name=
"tosAccountName"
label=
"Name"
rules=
{
AccountTip
[
1
]
as
any
}
>
<
Input
placeholder=
"Name Of Administrator"
className=
"input"
/>
</
Form
.
Item
>
</
Descriptions
.
Item
>
<
Descriptions
.
Item
>
<
Form
.
Item
name=
"tosUserPhone"
label=
"Phone"
rules=
{
AccountTip
[
2
]
as
any
}
>
<
Input
placeholder=
"Contact Information"
className=
"input"
maxLength=
{
11
}
onKeyUp=
{
keyup_communityManagerFee
}
/>
</
Form
.
Item
>
</
Descriptions
.
Item
>
</
Descriptions
>
<
Form
.
Item
name=
"community"
label=
"Community"
>
<
SelectCommunity
checklist=
{
community
}
/>
</
Form
.
Item
>
<
div
className=
"diy"
style=
{
{
marginBottom
:
'14px'
}
}
>
<
div
className=
"label"
>
<
span
className=
"title"
>
Privilege Level:
</
span
>
</
div
>
<
div
className=
"label"
>
<
Radio
.
Group
value=
{
values
}
onChange=
{
onRadio
}
>
<
Radio
style=
{
radioStyle
}
disabled=
{
disab
}
value=
{
2
}
>
Two Level Administrator
</
Radio
>
<
Radio
style=
{
radioStyle
}
value=
{
3
}
>
Three Level Administrator
</
Radio
>
</
Radio
.
Group
>
{
/* 选择挂靠的二级菜单 */
}
{
values
===
3
&&
user
.
currentUser
.
userModel
.
tosUserLevel
<=
1
?
(
<
Select
style=
{
{
width
:
260
}
}
onChange=
{
handleChange
}
placeholder=
"Please select affiliated account"
defaultValue=
{
towAccountId
as
any
}
>
{
towAccount
?
listItems
:
''
}
</
Select
>
)
:
(
''
)
}
</
div
>
</
div
>
<
div
className=
"diy"
style=
{
{
marginBottom
:
'24px'
}
}
>
<
div
className=
"label"
>
<
span
className=
"title"
>
Permission List:
</
span
>
</
div
>
<
div
className=
"label"
>
<
Tree
checkable
onExpand=
{
onExpand
}
expandedKeys=
{
expandedKeys
}
autoExpandParent=
{
autoExpandParent
}
onCheck=
{
onCheck
}
checkedKeys=
{
checkedKeys
}
onSelect=
{
onSelect
}
selectedKeys=
{
selectedKeys
}
treeData=
{
treeDataList
}
/>
</
div
>
</
div
>
<
div
className=
"diy"
>
<
div
className=
"label"
></
div
>
<
div
className=
"label"
>
<
Button
type=
"primary"
htmlType=
"submit"
loading=
{
loading
}
>
Submit
</
Button
>
</
div
>
</
div
>
</
Form
>
</
div
>
</
Spin
>
);
};
const
AccountProps
=
(
state
:
any
)
=>
{
const
{
Data
,
DataSave
,
DataSaveDetail
,
Result
,
SubResult
,
Permission
,
Info
}
=
state
.
Account
;
const
{
CommunityList
}
=
state
.
Init
;
// 小区列表
const
loading
=
state
.
loading
.
models
.
Account
||
false
;
const
{
user
}
=
state
;
return
{
Data
,
DataSave
,
DataSaveDetail
,
Result
,
loading
,
Permission
,
CommunityList
,
user
,
// 获取当前账户信息
SubResult
,
Info
,
};
};
export
default
connect
(
AccountProps
)(
Account
);
src/pages/AccountManagement/account/AccountEdit.tsx
View file @
34977cee
import
React
,
{
useState
,
useEffect
,
useRef
}
from
'react'
;
import
{
Form
,
Input
,
Button
,
message
,
Descriptions
,
Spin
,
Tree
,
Tag
,
Select
}
from
'antd'
;
import
{
Form
,
Input
,
Button
,
message
,
Descriptions
,
Spin
,
Tree
,
Radio
,
Select
,
Modal
}
from
'antd'
;
import
{
connect
,
history
}
from
'umi'
;
import
{
EditOutlined
,
LeftOutlined
,
CheckCircleOutlined
,
Right
Outlined
}
from
'@ant-design/icons'
;
import
{
EditOutlined
,
LeftOutlined
,
ExclamationCircle
Outlined
}
from
'@ant-design/icons'
;
import
'./Account.less'
;
import
{
zhCnFaci
,
enUsFaci
}
from
'@/utils/power'
;
import
{
AccountTip
}
from
'@/utils/tip'
;
import
SelectCommunity
from
'@/components/SelectCommunity/Tow'
;
import
{
getNumber
}
from
'@/utils/string'
;
// 正则
import
{
RA
}
from
'@/utils/method'
;
const
Account
=
(
props
:
any
)
=>
{
const
module
=
'Account'
;
const
{
dispatch
,
SubResult
,
CommunityList
,
loading
,
user
,
DataSave
,
Permission
,
Info
}
=
props
;
const
{
Option
}
=
Select
;
const
{
dispatch
,
SubResult
,
loading
,
user
,
DataSave
,
Permission
}
=
props
;
// 权限列表
const
treeData
=
localStorage
.
getItem
(
'umi_locale'
)
==
'zh-CN'
?
zhCnFaci
:
enUsFaci
;
const
[
expandedKeys
,
setExpandedKeys
]
=
useState
<
string
[]
>
([]);
// 展开栏目
const
[
expandedKeys
,
setExpandedKeys
]
=
useState
<
string
[]
>
([
'0'
]);
// 展开栏目
const
[
checkedKeys
,
setCheckedKeys
]
=
useState
([]
as
any
);
// 默认已选栏目
const
[
selectedKeys
,
setSelectedKeys
]
=
useState
<
string
[]
>
([]);
// 设置选中的树节点
const
[
autoExpandParent
,
setAutoExpandParent
]
=
useState
<
boolean
>
(
true
);
// 树形菜单展开关闭
...
...
@@ -29,44 +28,13 @@ const Account = (props: any) => {
const
[
values
,
setvalues
]
=
useState
(
2
);
// 树形菜单展开关闭
const
[
towAccountId
,
settowAccountId
]
=
useState
(
null
);
// 二级账户id
//
默认选中的小区
const
[
community
,
setCommunity
]
=
useState
([]
as
any
);
//
提醒次数
const
[
frequency
,
setfrequency
]
=
useState
(
0
);
// 权限列表
// 表单标识
const
[
form
]
=
Form
.
useForm
();
const
formRef
=
useRef
(
null
);
// 当前账户权限
useEffect
(()
=>
{
if
(
user
!=
null
)
{
let
treeDatas
=
treeData
;
let
_a
=
user
.
currentUser
.
permission
;
// 当前账户权限
let
_p
=
treeDatas
[
0
].
children
;
// 所有权限列表
let
arr
:
any
=
[];
// 一级栏目权限
let
erArr
:
any
=
[];
// 一级栏目权限
// 循环一级 判断当前账户有没有权限修改增加
for
(
let
i
of
_a
)
{
for
(
let
j
in
_p
)
{
if
(
_p
[
j
].
key
==
i
)
{
arr
.
push
(
_p
[
j
].
key
);
_p
[
j
].
disabled
=
false
;
}
// 二级权限
for
(
let
k
in
_p
[
j
].
children
)
{
if
(
_p
[
j
].
children
[
k
].
key
==
i
)
{
erArr
.
push
(
_p
[
j
].
children
[
k
].
key
);
_p
[
j
].
children
[
k
].
disableCheckbox
=
false
;
}
}
}
}
// 赋值改变
treeDatas
[
0
].
children
=
_p
;
setCheckedKeys
(
treeDatas
as
any
);
// 可勾选列表
}
},
[
user
]);
// 当前编辑账户的数据
useEffect
(()
=>
{
if
(
DataSave
!=
null
&&
user
!=
null
)
{
...
...
@@ -78,7 +46,6 @@ const Account = (props: any) => {
});
setvalues
(
DataSave
.
tosUserLevel
);
// 等级
setCommunity
([...
DataSave
.
tosUserServiceCell
.
split
(
','
)]);
// 默认小区
// 当前登录的不是admin 就 给默认id
if
(
user
.
currentUser
.
userModel
.
tosUserLevel
>
1
)
{
...
...
@@ -112,23 +79,58 @@ const Account = (props: any) => {
// 已选权限
useEffect
(()
=>
{
if
(
Permission
!=
null
)
{
let
newPer
=
eval
(
'('
+
Permission
+
')'
);
let
data
:
any
=
[];
// 编辑的账户的权限
// 当前权限
let
newPer
=
eval
(
'('
+
Permission
.
curUserPermission
+
')'
);
// 上级或者下级权限
let
newPerTow
=
eval
(
'('
+
Permission
.
beloginPermission
+
')'
);
let
data
:
any
=
[];
// 当前权限-- 字符串
let
dataTow
:
any
=
[];
// 上级或者下级权限 (可编辑权限)-- 字符串
// 转字符串
for
(
let
i
in
newPer
)
{
data
[
i
]
=
newPer
[
i
]
+
''
;
}
for
(
let
i
in
newPerTow
)
{
dataTow
[
i
]
=
newPerTow
[
i
]
+
''
;
}
// 深拷贝权限列表
let
treeDatas
=
JSON
.
parse
(
JSON
.
stringify
(
treeData
));
// 如果是三级账户 可编辑的就是 上级权限,否者是登录的账户权限
let
_a
=
DataSave
.
tosUserLevel
==
3
?
dataTow
:
user
.
currentUser
.
permission
;
// 当前账户权限
let
_p
=
treeDatas
[
0
].
children
;
// 所有权限列表
let
arr
:
any
=
[];
// 一级栏目权限
let
erArr
:
any
=
[];
// 一级栏目权限
// 循环一级 判断当前账户有没有权限修改增加
for
(
let
i
of
_a
)
{
for
(
let
j
in
_p
)
{
if
(
_p
[
j
].
key
==
i
)
{
arr
.
push
(
_p
[
j
].
key
);
_p
[
j
].
disabled
=
false
;
}
// 二级权限
for
(
let
k
in
_p
[
j
].
children
)
{
if
(
_p
[
j
].
children
[
k
].
key
==
i
)
{
erArr
.
push
(
_p
[
j
].
children
[
k
].
key
);
_p
[
j
].
children
[
k
].
disableCheckbox
=
false
;
}
}
}
}
// 赋值 可勾选的权限
treeDatas
[
0
].
children
=
_p
;
settreeDataList
([...
treeDatas
]);
let
_p
=
treeData
[
0
].
children
;
// 所有权限列表
// console.log(_p); // 所有权限列表
//-----------------分割--------------------
// 在解决默认已勾选的值
for
(
let
i
in
_p
)
{
let
arr
=
_p
[
i
].
children
;
// 每个权限
let
newArr
=
[];
// 每个权限下的子权限列表
for
(
let
j
in
arr
)
{
newArr
.
push
(
arr
[
j
].
key
);
}
// console.log(newArr);
if
(
!
newArr
.
every
((
val
)
=>
data
.
includes
(
val
)))
{
// 判断数组是否包含另一个数组
// console.log('不包含' + _p[i].key);
...
...
@@ -137,58 +139,19 @@ const Account = (props: any) => {
if
(
index
>
-
1
)
{
data
.
splice
(
index
,
1
);
}
}
else
{
// console.log('包含' + _p[i].key);
}
}
// 再赋值给列表
// data.push('0');
setCheckedKeys
(
data
);
}
},
[
Permission
]);
// 二级管辖小区和权限
useEffect
(()
=>
{
if
(
Info
!=
null
)
{
setCommunity
(
Info
.
community
);
power
(
Info
.
permissions
);
}
},
[
Info
]);
//权限赋值
const
power
=
(
val
:
any
)
=>
{
let
_tmp
=
JSON
.
stringify
(
treeData
);
//将对象转换为json字符串形式
let
treeDatas
=
JSON
.
parse
(
_tmp
);
//将转换而来的字符串转换为原生js对
let
_a
=
val
;
// 当前账户权限
let
_p
=
treeDatas
[
0
].
children
;
// 所有权限列表
let
arr
:
any
=
[];
// 一级栏目权限
let
erArr
:
any
=
[];
// 一级栏目权限
// 循环一级 判断当前账户有没有权限修改增加
for
(
let
i
of
_a
)
{
for
(
let
j
in
_p
)
{
if
(
_p
[
j
].
key
==
i
)
{
arr
.
push
(
_p
[
j
].
key
);
_p
[
j
].
disabled
=
false
;
}
// 二级权限
for
(
let
k
in
_p
[
j
].
children
)
{
if
(
_p
[
j
].
children
[
k
].
key
==
i
)
{
erArr
.
push
(
_p
[
j
].
children
[
k
].
key
);
_p
[
j
].
children
[
k
].
disableCheckbox
=
false
;
}
}
if
(
DataSave
.
tosUserLevel
==
3
)
{
// 且禁用最后两个账户管理
_p
[
_p
.
length
-
1
].
children
[
2
].
disableCheckbox
=
true
;
_p
[
_p
.
length
-
1
].
children
[
3
].
disableCheckbox
=
true
;
}
setCheckedKeys
(
data
);
}
// 且禁用最后两个账户管理
_p
[
_p
.
length
-
1
].
children
[
2
].
disableCheckbox
=
true
;
_p
[
_p
.
length
-
1
].
children
[
3
].
disableCheckbox
=
true
;
// 赋值改变
treeDatas
[
0
].
children
=
_p
;
settreeDataList
(
treeDatas
as
any
);
// 可勾选列表
};
},
[
Permission
,
DataSave
]);
// 保存提交
const
onFinishContract
=
async
(
value
:
any
)
=>
{
...
...
@@ -207,10 +170,6 @@ const Account = (props: any) => {
// 权限
message
.
error
(
'Please Select Permission!'
);
return
false
;
}
else
if
(
value
.
community
.
value
==
null
||
value
.
community
.
value
.
length
==
0
)
{
// 小区
message
.
error
(
'Please Select The Jurisdiction Area!'
);
return
false
;
}
else
if
(
value
.
tosUserName
.
length
<
6
)
{
// 账号长度
message
.
error
(
'The Account Password is Greater Than 6 Digits!'
);
...
...
@@ -220,7 +179,6 @@ const Account = (props: any) => {
message
.
error
(
'Please select affiliated account !'
);
return
false
;
}
else
{
value
.
tosUserServiceCellList
=
value
.
community
.
value
;
// 管辖小区
value
.
tosUserEmail
=
value
.
tosUserName
;
// 邮箱就是账号
value
.
tosUserLevel
=
values
;
//级别
// value.creatorName = JSON.parse(userInfo).userModel.tosUserName; //新建者账号
...
...
@@ -238,7 +196,7 @@ const Account = (props: any) => {
// 追加到上级id
let
Obj
=
treeData
[
0
].
children
;
console
.
log
(
Obj
);
for
(
let
i
in
Obj
)
{
for
(
let
j
in
checkedKeys
)
{
if
(
JSON
.
stringify
(
Obj
[
i
].
children
).
indexOf
(
JSON
.
stringify
(
checkedKeys
[
j
]))
!=
-
1
)
{
...
...
@@ -252,19 +210,73 @@ const Account = (props: any) => {
return
parseInt
(
n1
)
-
parseInt
(
n2
);
});
//新旧权限比对
let
subPermissionArray
=
[];
if
(
values
==
2
)
{
let
newPer
=
eval
(
'('
+
Permission
.
curUserPermission
+
')'
);
let
data
:
any
=
[];
// 当前权限-- 字符串
// 转字符串
for
(
let
i
in
newPer
)
{
data
[
i
]
=
newPer
[
i
]
+
''
;
}
let
Deleted
=
compare
(
data
,
newData
);
// 当前删除的权限有哪些
subPermissionArray
=
compares
(
Deleted
);
// 当前删除的三级权限有哪些
}
// 另传权限
let
obj
=
{
userName
:
value
.
tosUserName
,
userPassword
:
value
.
tosUserPwd
,
permissionArray
:
newData
,
subPermissionArray
,
};
RA
(
38
,
value
,
module
,
dispatch
);
// 信息上传
RA
(
42
,
obj
,
module
,
dispatch
);
// 权限上传
return
true
;
}
};
// 保存前看看那些权限是增加或者减少
function
compare
(
beforeArr
:
any
,
afterArr
:
any
)
{
let
add
=
[];
let
del
=
[];
let
cenObj
=
{};
//把beforeArr数组去重放入cenObj
for
(
let
i
=
0
;
i
<
beforeArr
.
length
;
i
++
)
{
cenObj
[
beforeArr
[
i
]]
=
beforeArr
[
i
];
}
//遍历afterArr,查看其元素是否在cenObj中
for
(
let
j
=
0
;
j
<
afterArr
.
length
;
j
++
)
{
if
(
!
cenObj
[
afterArr
[
j
]])
{
add
.
push
(
afterArr
[
j
]);
}
else
{
delete
cenObj
[
afterArr
[
j
]];
}
}
for
(
let
k
in
cenObj
)
{
del
.
push
(
k
);
}
// 只返回删除的
return
del
;
}
// 看看是不是动了三级权限的东西
function
compares
(
afterArr
:
any
)
{
// 下级权限
let
newPerTow
=
eval
(
'('
+
Permission
.
beloginPermission
+
')'
);
let
dataTow
:
any
=
[];
// 上级或者下级权限 (可编辑权限)-- 字符串
let
del
=
[];
for
(
let
i
in
newPerTow
)
{
dataTow
[
i
]
=
newPerTow
[
i
]
+
''
;
}
for
(
let
i
of
afterArr
)
{
if
(
dataTow
.
indexOf
(
i
)
!==
-
1
)
{
del
.
push
(
i
);
}
}
return
del
;
}
//goToReturn
const
goToReturn
=
()
=>
{
history
.
go
(
-
1
);
...
...
@@ -278,10 +290,58 @@ const Account = (props: any) => {
// 点击单个触发
const
onCheck
=
(
checkedKeys
:
any
)
=>
{
// console.log('onCheck', checkedKeys);
// 如果是二级账户就要判断去掉的有没有三级账户的权限
if
(
DataSave
.
tosUserLevel
==
2
)
{
let
checkers
=
(
arr
:
any
,
target
:
any
)
=>
target
.
every
((
v
:
any
)
=>
arr
.
includes
(
v
));
// 上级或者下级权限
let
newPerTow
=
eval
(
'('
+
Permission
.
beloginPermission
+
')'
);
// 列表权限
let
treeDatas
=
JSON
.
parse
(
JSON
.
stringify
(
treeData
));
// 列表的二级权限
let
TowLev
=
treeDatas
[
0
].
children
.
map
((
v
:
any
)
=>
v
.
key
);
let
dataTow
:
any
=
[];
for
(
let
i
in
newPerTow
)
{
// 如果不是二级就添加进去
if
(
TowLev
.
indexOf
(
newPerTow
[
i
]
+
''
)
==
-
1
)
{
dataTow
.
push
(
newPerTow
[
i
]
+
''
);
}
}
// true 就是没有勾选到三级 false 就是勾选到三级了
if
(
!
checkers
(
checkedKeys
,
dataTow
))
{
showDeleteConfirm
(
checkedKeys
);
return
false
;
}
}
setCheckedKeys
(
checkedKeys
);
};
const
{
confirm
}
=
Modal
;
// 弹窗
function
showDeleteConfirm
(
checkedKeys
:
any
)
{
// 如果没有提醒过的话就开启 否则直接设置
// if (frequency < 1) {
confirm
({
title
:
'Are you sure you want to delete this permission?'
,
icon
:
<
ExclamationCircleOutlined
/>,
content
:
'Cancel permission has been given to level 3 account. Do you want to delete it together!'
,
okText
:
'Yes'
,
okType
:
'danger'
,
cancelText
:
'No'
,
onOk
()
{
setCheckedKeys
(
checkedKeys
);
setfrequency
(
1
);
},
onCancel
()
{},
});
// } else {
// setCheckedKeys(checkedKeys);
// }
}
// 点击树节点触发 - 大栏目
const
onSelect
=
(
selectedKeys
:
any
,
info
:
any
)
=>
{
// console.log('onSelect', info);
...
...
@@ -296,6 +356,24 @@ const Account = (props: any) => {
return
getNumber
(
value
.
replace
(
/
[^\d
^
\.]
+/g
,
''
));
};
// 管理员级别样式
const
radioStyle
=
{
display
:
'block'
,
height
:
'30px'
,
lineHeight
:
'30px'
,
marginBottom
:
'15px'
,
};
//级别切换
const
onRadio
=
(
e
:
any
)
=>
{
setvalues
(
e
.
target
.
value
);
// setCheckedKeys([]);
if
(
e
.
target
.
value
==
2
)
{
//否则打开
settowAccountId
(
null
);
}
};
return
(
<
Spin
spinning=
{
loading
}
>
<
div
className=
"contop"
style=
{
{
padding
:
'12px 20px'
}
}
>
...
...
@@ -319,15 +397,12 @@ const Account = (props: any) => {
name=
"contract"
onFinish=
{
onFinishContract
}
>
<
Descriptions
column=
{
{
xs
:
1
,
sm
:
2
,
md
:
3
}
}
>
<
Descriptions
column=
{
{
xs
:
1
,
sm
:
1
,
md
:
2
,
xl
:
3
}
}
>
<
Descriptions
.
Item
>
<
Form
.
Item
name=
"tosUserName"
label=
"Account ID"
rules=
{
AccountTip
[
0
]
as
any
}
>
<
Input
placeholder=
"Login Account"
className=
"input"
/>
</
Form
.
Item
>
</
Descriptions
.
Item
>
</
Descriptions
>
<
Descriptions
column=
{
{
xs
:
1
,
sm
:
2
,
md
:
3
}
}
>
<
Descriptions
.
Item
>
<
Form
.
Item
name=
"tosAccountName"
label=
"Name"
rules=
{
AccountTip
[
1
]
as
any
}
>
<
Input
placeholder=
"Name Of Administrator"
className=
"input"
/>
...
...
@@ -345,39 +420,36 @@ const Account = (props: any) => {
</
Descriptions
.
Item
>
</
Descriptions
>
<
Form
.
Item
name=
"community"
label=
"Community"
>
<
SelectCommunity
checklist=
{
community
}
list=
{
DataSave
&&
DataSave
.
userLeaderCommunityNames
?
DataSave
.
userLeaderCommunityNames
:
CommunityList
}
/>
</
Form
.
Item
>
<
div
className=
"diy"
style=
{
{
marginBottom
:
'14px'
}
}
>
<
div
className=
"label"
>
<
span
className=
"title"
>
Privilege Level:
</
span
>
</
div
>
<
div
className=
"label"
>
<
Tag
icon=
{
<
CheckCircleOutlined
/>
}
color=
"success"
style=
{
{
verticalAlign
:
'sub'
,
fontSize
:
14
,
padding
:
'4px 7px'
}
}
>
{
DataSave
&&
DataSave
.
tosUserLevel
==
2
?
'Two Level Administrator '
:
'Three Level Administrator'
}
</
Tag
>
{
DataSave
&&
DataSave
.
tosUserLevel
==
3
?
(
<
Tag
icon=
{
<
RightOutlined
/>
}
color=
"processing"
style=
{
{
verticalAlign
:
'sub'
,
fontSize
:
14
,
padding
:
'4px 7px'
}
}
<
Radio
.
Group
value=
{
values
}
onChange=
{
onRadio
}
>
<
Radio
style=
{
radioStyle
}
disabled
value=
{
2
}
>
Two Level Administrator
</
Radio
>
<
Radio
style=
{
radioStyle
}
disabled
value=
{
3
}
>
Three Level Administrator
</
Radio
>
</
Radio
.
Group
>
{
/* 选择挂靠的二级菜单 */
}
{
values
===
3
&&
user
.
currentUser
.
userModel
.
tosUserLevel
<=
1
?
(
<
Select
style=
{
{
width
:
260
}
}
placeholder=
"Please select affiliated account"
disabled
defaultValue=
{
DataSave
.
userLeader
}
>
Superiors:
{
DataSave
.
userLeaderAccountName
}
-
{
DataSave
.
userLeaderName
}
</
Tag
>
{
DataSave
?
(
<
Option
key=
{
DataSave
.
userLeader
}
value=
{
DataSave
.
userLeader
}
>
{
DataSave
.
userLeaderAccountName
}
-
{
DataSave
.
userLeaderName
}
</
Option
>
)
:
(
''
)
}
</
Select
>
)
:
(
''
)
}
...
...
@@ -399,7 +471,7 @@ const Account = (props: any) => {
onSelect=
{
onSelect
}
selectedKeys=
{
selectedKeys
}
treeData=
{
treeDataList
}
disabled
disabled
=
{
user
&&
user
.
currentUser
.
userModel
.
tosUserLevel
!=
1
?
true
:
false
}
/>
</
div
>
</
div
>
...
...
@@ -420,7 +492,6 @@ const Account = (props: any) => {
const
AccountProps
=
(
state
:
any
)
=>
{
const
{
Data
,
DataSave
,
DataSaveDetail
,
Result
,
SubResult
,
Permission
,
Info
}
=
state
.
Account
;
const
{
CommunityList
}
=
state
.
Init
;
// 小区列表
const
loading
=
state
.
loading
.
models
.
Account
||
false
;
const
{
user
}
=
state
;
return
{
...
...
@@ -430,7 +501,6 @@ const AccountProps = (state: any) => {
Result
,
loading
,
Permission
,
CommunityList
,
user
,
// 获取当前账户信息
SubResult
,
Info
,
...
...
src/pages/CommunityManagement/CellList/CellList.tsx
View file @
34977cee
...
...
@@ -78,7 +78,7 @@ const CellLists = (props: any) => {
useEffect
(()
=>
{
if
(
village
==
null
)
{
const
obj
=
{
communityNameList
:
JSON
.
parse
(
localStorage
.
getItem
(
'CommunityList'
)
as
any
)
,
communityNameList
:
Init
.
CommunityList
,
pageNum
:
1
,
};
setTerm
(
obj
);
...
...
@@ -134,7 +134,7 @@ const CellLists = (props: any) => {
<
TitleSearch
username=
{
[
'label'
,
'Please Enter Administrator'
]
}
community=
{
'communityName'
}
checklist=
{
curString
.
communityNameList
!=
null
?
curString
.
communityName
List
:
null
}
checklist=
{
Init
?
Init
.
Community
List
:
null
}
onSubmit=
{
CallBackTitleSearch
}
/>
</
div
>
...
...
src/pages/CommunityManagement/FacilityBookings/FacilityBookings.tsx
View file @
34977cee
...
...
@@ -206,18 +206,17 @@ const FacilityBookings = (props: any) => {
QA
(
tmp
);
if
(
tab
==
1
)
{
RA
(
9
,
{
communityNameList
:
JSON
.
parse
(
localStorage
.
getItem
(
'CommunityList'
)
as
any
)
,
communityNameList
:
CommunityList
,
userToken
:
token
,
status
:
curString
.
status
,
subscribeDate
:
curString
.
subscribeDate
,
pageNum
:
curString
.
curPage
,
// communityNameList: curString.communityNameList,
});
}
else
{
RA
(
8
,
{
userToken
:
token
,
pageNum
:
curString
.
curPage2
,
communityNameList
:
JSON
.
parse
(
localStorage
.
getItem
(
'CommunityList'
)
as
any
)
,
communityNameList
:
CommunityList
,
});
}
}
...
...
@@ -231,9 +230,7 @@ const FacilityBookings = (props: any) => {
pageNum
:
current
,
subscribeDate
:
curString
.
subscribeDate
,
status
:
curString
.
status
,
communityNameList
:
curString
.
communityNameList
?
curString
.
communityNameList
:
JSON
.
parse
(
localStorage
.
getItem
(
'CommunityList'
)
as
any
),
communityNameList
:
CommunityList
,
});
}
else
{
var
tmp
=
curString
;
...
...
src/pages/CommunityManagement/VisitorRecord/VisitorRecord.tsx
View file @
34977cee
...
...
@@ -12,23 +12,18 @@ import SelectCommunity from '@/components/SelectCommunity';
const
module
=
'VisitorRecord'
;
const
VisitorRecord
=
(
props
:
any
)
=>
{
const
{
dispatch
,
Data
,
DataSave
,
loading
}
=
props
;
const
{
dispatch
,
Data
,
DataSave
,
loading
,
CommunityList
}
=
props
;
// 新增搜索的时间 原来时间是时间戳格式
useEffect
(()
=>
{
if
(
Data
!=
null
)
{
if
(
Data
!=
null
&&
CommunityList
!=
null
)
{
Data
.
forEach
((
item
:
any
)
=>
{
item
.
showTime
=
moment
(
item
.
updateTime
).
format
(
'YYYY-MM-DD'
);
});
}
else
{
RA
(
26
,
{
communityNames
:
JSON
.
parse
(
localStorage
.
getItem
(
'CommunityList'
)
as
any
)
},
module
,
dispatch
,
);
RA
(
26
,
{
communityNames
:
CommunityList
},
module
,
dispatch
);
}
},
[
Data
]);
},
[
Data
,
CommunityList
]);
// 表头
const
columns
:
any
=
[
...
...
@@ -261,8 +256,9 @@ const VisitorRecord = (props: any) => {
function
map
(
state
:
any
)
{
const
{
Data
,
DataSave
}
=
state
[
module
];
const
{
CommunityList
}
=
state
[
'Init'
];
const
loading
=
state
.
loading
.
models
.
VisitorRecord
;
return
{
Data
,
DataSave
,
loading
};
return
{
Data
,
DataSave
,
loading
,
CommunityList
};
}
export
default
connect
(
map
)(
VisitorRecord
);
// 备注
...
...
src/pages/CommunityManagement/visitorRecord/VisitorRecord.tsx
View file @
34977cee
...
...
@@ -12,23 +12,18 @@ import SelectCommunity from '@/components/SelectCommunity';
const
module
=
'VisitorRecord'
;
const
VisitorRecord
=
(
props
:
any
)
=>
{
const
{
dispatch
,
Data
,
DataSave
,
loading
}
=
props
;
const
{
dispatch
,
Data
,
DataSave
,
loading
,
CommunityList
}
=
props
;
// 新增搜索的时间 原来时间是时间戳格式
useEffect
(()
=>
{
if
(
Data
!=
null
)
{
if
(
Data
!=
null
&&
CommunityList
!=
null
)
{
Data
.
forEach
((
item
:
any
)
=>
{
item
.
showTime
=
moment
(
item
.
updateTime
).
format
(
'YYYY-MM-DD'
);
});
}
else
{
RA
(
26
,
{
communityNames
:
JSON
.
parse
(
localStorage
.
getItem
(
'CommunityList'
)
as
any
)
},
module
,
dispatch
,
);
RA
(
26
,
{
communityNames
:
CommunityList
},
module
,
dispatch
);
}
},
[
Data
]);
},
[
Data
,
CommunityList
]);
// 表头
const
columns
:
any
=
[
...
...
@@ -261,8 +256,9 @@ const VisitorRecord = (props: any) => {
function
map
(
state
:
any
)
{
const
{
Data
,
DataSave
}
=
state
[
module
];
const
{
CommunityList
}
=
state
[
'Init'
];
const
loading
=
state
.
loading
.
models
.
VisitorRecord
;
return
{
Data
,
DataSave
,
loading
};
return
{
Data
,
DataSave
,
loading
,
CommunityList
};
}
export
default
connect
(
map
)(
VisitorRecord
);
// 备注
...
...
src/services/Init.ts
View file @
34977cee
/*
* @Author: your name
* @Date: 2020-11-19 16:54:53
* @LastEditTime: 2020-12-
11 17:23:3
0
* @LastEditTime: 2020-12-
31 17:40:1
0
* @LastEditors: Please set LastEditors
* @Description: In User Settings Edit
* @FilePath: \tostumi\src\services\Init.ts
...
...
@@ -9,22 +9,25 @@
import
request
from
'@/utils/request'
;
// 新加的根据权限 获取小区的接口
// export function tosCommunityget(values: any) {
// const userInfo = localStorage.getItem('userInfo') || '';
// const id = JSON.parse(userInfo).userModel.id;
// return request('/tos/tosCommunity/get/user', {
// method: 'POST',
// body: JSON.stringify(values),
// headers: { 'Content-Type': 'application/json' },
// data: { mangerId: id },
// });
// }
// 原来的获取小区接口
export
function
tosCommunityget
(
values
:
any
)
{
const
userInfo
=
localStorage
.
getItem
(
'userInfo'
)
||
''
;
const
id
=
JSON
.
parse
(
userInfo
).
userModel
.
id
;
return
request
(
'/tos/tosCommunity/get
/user
'
,
{
return
request
(
'/tos/tosCommunity/get'
,
{
method
:
'POST'
,
body
:
JSON
.
stringify
(
values
),
headers
:
{
'Content-Type'
:
'application/json'
},
data
:
{
mangerId
:
id
},
});
}
// 原来的获取小区接口
// export function tosCommunityget(values: any) {
// return request('/tos/tosCommunity/get', {
// method: 'POST',
// body: JSON.stringify(values),
// headers: { 'Content-Type': 'application/json' },
// });
// }
src/utils/params.ts
View file @
34977cee
/*
* @Author: your name
* @Date: 2020-11-19 20:34:18
* @LastEditTime: 2020-12-30 10:02:48
* @LastEditors: your name
* @Description: In User Settings Edit
* @FilePath: \tostumi\src\utils\params.ts
*/
export
const
validateMessages
=
{
required
:
'*it is required!'
,
types
:
{
...
...
@@ -29,8 +37,6 @@ export const requestList = [
[
'/tos/community/categories/subscribe/fuzzy/query'
,
'9 预订列表模糊查询'
,
{}],
[
'/tos/user/newCurrentUser'
,
'10 后台用户信息'
,
{}],
[
'/tos/community/facilities/categories/subscribe'
,
'11 预订'
,
{}],
// ['/tos/tosOwner/getAll', '12 业主查询', {}],
[
'/tos/owner/query/fuuzy'
,
'12 业主查询'
,
{}],
[
'/tos/tosOwner/getDetailAll'
,
'13 业主查询详细'
,
{}],
[
'/tos/tosOwner/save'
,
'14 业主添加'
,
{}],
...
...
@@ -38,7 +44,6 @@ export const requestList = [
[
'/tos/life/community/account/unit/del'
,
'16 删除单元'
,
{}],
[
'/tos/bookingService/edit'
,
'17 编辑小区设施'
,
{}],
[
'/tos/tosOwner/info/update'
,
'18 编辑业主信息'
,
{}],
[
'/tos/contract/list'
,
'19 获取合同列表'
,
{}],
[
'/tos/contract/detail/query'
,
'20 获取合同列表详情'
,
{}],
[
'/tos/community/service/get/detail'
,
'21 小区服务获取详情'
,
{}],
...
...
@@ -48,20 +53,7 @@ export const requestList = [
[
'/tos/tosCommunityNotic/get'
,
'25 获取小区公告列表'
,
{}],
[
'/tos/tosVisitorRecord/get'
,
'26 获取访客记录列表'
,
{}],
[
'/tos/contract/add'
,
'27 合同新增和编辑'
,
{}],
[
'/tos/tosCommunityNotic/add'
,
'28 新增小区公告接口'
,
{
noticTitle
:
'Garden公告'
,
communityNum
:
'珠江丽景小区'
,
noticText
:
'今晚晚上停水4小时'
,
noticScope
:
'1'
,
noticStartTime
:
'2020-07-01 12:30:00'
,
noticEndTime
:
'2020-08-01 9:30:00'
,
file
:
[
'A.jpg'
],
},
],
// ['/tos/tosManageCommunity/save', '29 新建一个小区', {}],
[
'/tos/tosCommunityNotic/add'
,
'28 新增小区公告接口'
,
{}],
[
'/tos/tosCommunity/save'
,
'29 新建一个小区'
,
{}],
[
'/tos/tosOrder/get'
,
'30 获取订单详情'
,
{}],
[
'/tos/property/community/houseCard/query'
,
'31 获取住户卡列表'
,
{}],
...
...
@@ -81,44 +73,11 @@ export const requestList = [
},
],
[
'/tos/community/service/get'
,
'40 获取小区服务回复列表'
,
{}],
[
'/tos/users/save'
,
'41 添加后台账号'
,
{
id
:
'null'
,
oneself
:
0
,
tosUserEmail
:
'sales@huahui.com'
,
tosUserName
:
'小赵2'
,
tosUserPhone
:
'020-8888-4444'
,
tosUserPwd
:
'123456'
,
tosUserToCompany
:
'1'
,
tosUserServiceCell
:
''
,
tosuserLevel
:
1
,
userStatus
:
1
,
},
],
[
'/tos/account/permission/savePermission'
,
'42 添加后台权限'
,
{
userName
:
'小赵2'
,
userPassword
:
'123456'
,
permissionArray
:
[
'2'
,
'1'
,
'3'
,
'4'
],
},
],
[
'/tos/users/save'
,
'41 添加后台账号'
,
{}],
[
'/tos/account/permission/savePermission'
,
'42 添加后台权限'
,
{}],
[
'/tos/tosServiceScope/get'
,
'43 获取服务范围'
],
[
'/tos/tosServiceScope/save'
,
'44 添加服务范围'
],
[
'/tos/user/getAllInfrom'
,
'45 获取后台列表'
,
{
id
:
''
,
moment
:
[],
name
:
''
,
leaderID
:
'1'
,
userPhone
:
''
,
},
],
[
'/tos/user/getAllInfrom'
,
'45 获取后台列表'
,
{}],
[
'/tos/tosServiceProvider/get'
,
'46 获取服务商'
,
{}],
[
'/tos/fileAndImage/preview'
,
'47 获取附件地址'
,
{}],
[
'/tos/tosCommunity/get/list'
,
'48 修改获取小区列表'
,
{}],
...
...
模板.tsx
deleted
100644 → 0
View file @
6b46650b
import
React
,
{
useState
,
useEffect
,
useRef
}
from
'react'
;
import
{
Input
,
Tabs
,
Table
,
Space
,
Button
}
from
'antd'
;
const
{
TabPane
}
=
Tabs
;
import
{
connect
,
history
}
from
'umi'
;
import
{
RA
}
from
'@/utils/method'
;
const
module
=
"XXX"
const
XXX
=
(
props
:
any
)
=>
{
const
{
dispatch
,
Data
}
=
props
;
const
formRef
=
useRef
(
null
)
return
(
<
div
style=
{
{
width
:
"100%"
,
minWidth
:
1020
,
padding
:
34
,
backgroundColor
:
"#ffffff"
}
}
>
</
div
>
);
};
function
map
(
state
:
any
)
{
const
{
Data
}
=
state
[
module
]
return
{
Data
}
}
export
default
connect
(
map
)(
XXX
);
\ No newline at end of file
模板服务.ts
deleted
100644 → 0
View file @
6b46650b
import
*
as
service
from
'../../services/tos'
;
import
{
message
}
from
'antd'
;
import
{
Link
,
useIntl
,
connect
,
Dispatch
,
history
}
from
'umi'
;
import
{
routerRedux
}
from
'dva/router'
import
{
printf
}
from
'@/utils/log'
;
export
default
{
namespace
:
'XXX'
,
state
:
{
Data
:
null
,
Result
:
null
,
DataSave
:
null
,
DataSaveDetail
:
null
,
},
reducers
:
{
returnPage
(
state
,
{
Data
})
{
return
{
...
state
,
Data
};
},
returnResult
(
state
,
{
Result
})
{
return
{
...
state
,
Result
};
},
returnDataSave
(
state
,
{
DataSave
})
{
return
{...
state
,
DataSave
}
},
returnDataSaveDetail
(
state
,
{
DataSaveDetail
})
{
return
{...
state
,
DataSaveDetail
}
},
},
effects
:
{
//标准请求
*
RA
({
playload
},
{
call
,
put
})
{
const
resp
=
yield
call
(
service
.
RA
,
playload
);
console
.
log
(
resp
)
if
(
resp
.
code
==
500
||
resp
.
error_code
!=
"0000"
)
{
}
if
(
resp
.
error_code
!=
"0000"
)
{
printf
(
playload
,
resp
)
}
else
{
switch
(
playload
.
index
)
{
case
24
:
{
let
Data
=
resp
.
data
;
yield
put
({
type
:
'returnPage'
,
Data
});
}
break
;
}
}
},
*
ResultClear
({
},
{
put
})
{
var
tmp
=
null
yield
put
({
type
:
'returnResult'
,
tmp
}
)
},
*
SA
({
playload
},
{
call
,
put
})
{
var
DataSave
=
playload
yield
put
({
type
:
'returnDataSave'
,
DataSave
}
)
},
},
};
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