Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
O
op-web-service
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
bp
op-web-service
Commits
52c0c5b0
Commit
52c0c5b0
authored
Jul 21, 2021
by
pengyunqian
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'dev' of
https://git.yidian-inc.com:8021/bp/op-web-service
into pyq_goods
parents
279d0363
0abce1bc
Changes
37
Hide whitespace changes
Inline
Side-by-side
Showing
37 changed files
with
2551 additions
and
1054 deletions
+2551
-1054
README.md
README.md
+1
-1
config.js
server/config.js
+2
-1
utils.js
server/controllers/utils.js
+1
-1
withdrawal.js
server/controllers/withdrawal.js
+89
-0
router.js
server/router.js
+8
-0
index.vue
src/components/Pagination/index.vue
+1
-1
RoleDetail.vue
src/components/Roles/RoleDetail.vue
+174
-0
RoleList.vue
src/components/Roles/RoleList.vue
+475
-0
UserInfoEditModal.vue
src/components/UserList/components/UserInfoEditModal.vue
+176
-0
UserInfoModal.vue
src/components/UserList/components/UserInfoModal.vue
+92
-0
UserInfoNewModal.vue
src/components/UserList/components/UserInfoNewModal.vue
+164
-0
index.vue
src/components/UserList/index.vue
+345
-0
manage-role.vue
src/pages/Role/manage-role.vue
+4
-448
role-detail.vue
src/pages/Role/role-detail.vue
+6
-157
user-detail.vue
src/pages/User/user-detail.vue
+0
-83
index.vue
src/pages/User/userList/index.vue
+4
-304
index.less
src/pages/Withdrawal/Audit/index.less
+83
-0
index.vue
src/pages/Withdrawal/Audit/index.vue
+507
-0
add-role.vue
src/pages/Withdrawal/Role/add-role.vue
+2
-2
roleInfo.vue
src/pages/Withdrawal/Role/components/roleInfo.vue
+0
-0
manage-role.vue
src/pages/Withdrawal/Role/manage-role.vue
+21
-0
role-detail.vue
src/pages/Withdrawal/Role/role-detail.vue
+12
-0
UserInfoEditModal.vue
...Withdrawal/User/userList/components/UserInfoEditModal.vue
+1
-1
UserInfoModal.vue
...ges/Withdrawal/User/userList/components/UserInfoModal.vue
+0
-0
UserInfoNewModal.vue
.../Withdrawal/User/userList/components/UserInfoNewModal.vue
+1
-1
index.vue
src/pages/Withdrawal/User/userList/index.vue
+17
-0
User.vue
src/pages/Withdrawal/components/PageHeader/User.vue
+54
-0
config.js
src/pages/Withdrawal/components/PageHeader/config.js
+17
-0
index.vue
src/pages/Withdrawal/components/PageHeader/index.vue
+56
-0
index.less
src/pages/Withdrawal/layout/index.less
+9
-0
index.vue
src/pages/Withdrawal/layout/index.vue
+21
-0
index.js
src/router/Withdrawal/index.js
+47
-0
index.js
src/router/index.js
+21
-20
common.js
src/service/Withdrawal/common.js
+3
-0
withdrawal.js
src/service/Withdrawal/withdrawal.js
+44
-0
role.js
src/service/role.js
+68
-24
user.js
src/service/user.js
+25
-10
No files found.
README.md
View file @
52c0c5b0
...
@@ -37,7 +37,7 @@ npm run web-dev
...
@@ -37,7 +37,7 @@ npm run web-dev
# 部署发布流程
# 部署发布流程
## 测试环境(http://
clay.yidian-inc.com
)
## 测试环境(http://
venus.int.yidian-inc.com:8055
)
待提测代码push test分支。对应下列三个job 打包部署测试环境
待提测代码push test分支。对应下列三个job 打包部署测试环境
-
1. bp-op-web-service-branch-commit
-
1. bp-op-web-service-branch-commit
-
2. bp-op-web-service-branch-assemble
-
2. bp-op-web-service-branch-assemble
...
...
server/config.js
View file @
52c0c5b0
...
@@ -18,5 +18,6 @@ module.exports = {
...
@@ -18,5 +18,6 @@ module.exports = {
port
:
port
,
port
:
port
,
API_INTERNAL_URI
:
API_INTERNAL_URI
[
env
],
API_INTERNAL_URI
:
API_INTERNAL_URI
[
env
],
PANDORA_URI
:
PANDORA_URI
[
env
],
PANDORA_URI
:
PANDORA_URI
[
env
],
GOODS_URI
:
API_INTERNAL_URI
[
env
]
GOODS_URI
:
API_INTERNAL_URI
[
env
],
WITHDRAWAL_URI
:
API_INTERNAL_URI
[
env
]
};
};
server/controllers/utils.js
View file @
52c0c5b0
...
@@ -9,7 +9,7 @@ exports.getUserPermission = async (ctx) => {
...
@@ -9,7 +9,7 @@ exports.getUserPermission = async (ctx) => {
url
,
url
,
method
:
"GET"
,
method
:
"GET"
,
qs
:
{
qs
:
{
//user_email: "jianghaiming@126.com"
//
user_email: "jianghaiming@126.com"
user_email
:
user
user_email
:
user
}
}
};
};
...
...
server/controllers/withdrawal.js
0 → 100644
View file @
52c0c5b0
const
WITHDRAWAL_URI
=
require
(
"../config"
).
WITHDRAWAL_URI
;
const
req
=
require
(
"../utils/request"
).
httpReq
;
// const controller_utils = require('./utils')
/**
* 示例
* exports.方法名 = async ctx => {
* const url = `${设置好的域名}/向服务端发送的请求地址`;
* const opts = {
* url,
* method:"发送什么请求",
* qs: ctx.request.query (get请求的参数)
* body:ctx.request.body (post请求的参数)
* json:boolean (是否转换为json)
* };
* ctx.body = await req(ctx,opts); 将发送请求后的数据传递给前端页面
* };
*/
// 获取提现审核列表
exports
.
getApplyList
=
async
ctx
=>
{
const
url
=
`
${
WITHDRAWAL_URI
}
/wallet/background/apply_list`
;
const
opts
=
{
url
,
method
:
"GET"
,
qs
:
ctx
.
request
.
query
};
ctx
.
body
=
await
req
(
ctx
,
opts
);
};
// 获取黑名单冻结账户
exports
.
getBlackList
=
async
ctx
=>
{
const
url
=
`
${
WITHDRAWAL_URI
}
/wallet/background/blacklist`
;
const
opts
=
{
url
,
method
:
"POST"
,
json
:
true
,
body
:
ctx
.
request
.
body
};
ctx
.
body
=
await
req
(
ctx
,
opts
);
};
// 获取通过、拒绝订单审核
exports
.
getWithdrawAudit
=
async
ctx
=>
{
const
url
=
`
${
WITHDRAWAL_URI
}
/wallet/background/withdraw_audit`
;
const
opts
=
{
url
,
method
:
"POST"
,
json
:
true
,
body
:
ctx
.
request
.
body
}
ctx
.
body
=
await
req
(
ctx
,
opts
)
}
// 获取提现失败冻结
exports
.
getFreezingFund
=
async
ctx
=>
{
const
url
=
`
${
WITHDRAWAL_URI
}
/wallet/background/back_freezing_fund`
;
const
opts
=
{
url
,
method
:
"POST"
,
json
:
true
,
body
:
ctx
.
request
.
body
}
ctx
.
body
=
await
req
(
ctx
,
opts
)
}
// 获取提现审核详情
exports
.
getApplyDetail
=
async
ctx
=>
{
const
url
=
`
${
WITHDRAWAL_URI
}
/wallet/background/apply_detail`
;
const
opts
=
{
url
,
method
:
"GET"
,
qs
:
ctx
.
request
.
query
}
ctx
.
body
=
await
req
(
ctx
,
opts
)
}
const
getUserPermission
=
async
(
ctx
)
=>
{
const
url
=
`
${
WITHDRAWAL_URI
}
/merchant/authority/get_role_list`
;
const
{
email
,
op_cur_user
}
=
ctx
.
request
.
query
;
const
user
=
email
||
op_cur_user
;
const
opts
=
{
url
,
method
:
"GET"
,
qs
:
{
// user_email: "jianghaiming@126.com"
user_email
:
user
}
};
return
await
req
(
ctx
,
opts
);
}
exports
.
getAll_role_list
=
async
(
ctx
,
next
)
=>
{
ctx
.
body
=
await
getUserPermission
(
ctx
);
}
\ No newline at end of file
server/router.js
View file @
52c0c5b0
...
@@ -6,6 +6,7 @@ const enterprise = require("./controllers/enterprise");
...
@@ -6,6 +6,7 @@ const enterprise = require("./controllers/enterprise");
const
role
=
require
(
'./controllers/role'
)
const
role
=
require
(
'./controllers/role'
)
const
life
=
require
(
'./controllers/life-no'
);
const
life
=
require
(
'./controllers/life-no'
);
const
goods
=
require
(
'./controllers/goods'
);
const
goods
=
require
(
'./controllers/goods'
);
const
withdrawal
=
require
(
'./controllers/withdrawal'
);
const
router
=
Router
();
const
router
=
Router
();
const
API_VERSION
=
"/api/v1"
;
const
API_VERSION
=
"/api/v1"
;
...
@@ -62,4 +63,11 @@ router.get(`${API_VERSION}/merchant/lifeinner/life_list`, life.get_life_list)
...
@@ -62,4 +63,11 @@ router.get(`${API_VERSION}/merchant/lifeinner/life_list`, life.get_life_list)
//用户
//用户
router
.
post
(
`
${
API_VERSION
}
/merchant/authority/get_user_info`
,
user
.
getUser_detail
)
router
.
post
(
`
${
API_VERSION
}
/merchant/authority/get_user_info`
,
user
.
getUser_detail
)
// 钱包提现审核 wallet/background/apply_detail
router
.
get
(
`
${
API_VERSION
}
/get_withdrawal_apply_list`
,
withdrawal
.
getApplyList
)
router
.
post
(
`
${
API_VERSION
}
/get_withdrawal_black_list`
,
withdrawal
.
getBlackList
)
router
.
post
(
`
${
API_VERSION
}
/get_withdraw_audit`
,
withdrawal
.
getWithdrawAudit
)
router
.
post
(
`
${
API_VERSION
}
/get_freezing_fund`
,
withdrawal
.
getFreezingFund
)
router
.
get
(
`
${
API_VERSION
}
/get_apply_detail`
,
withdrawal
.
getApplyDetail
)
module
.
exports
=
router
;
module
.
exports
=
router
;
src/components/Pagination/index.vue
View file @
52c0c5b0
...
@@ -24,7 +24,7 @@ export default {
...
@@ -24,7 +24,7 @@ export default {
},
},
data
()
{
data
()
{
return
{
return
{
currentPage
:
5
currentPage
:
1
}
}
},
},
methods
:
{
methods
:
{
...
...
src/components/Roles/RoleDetail.vue
0 → 100644
View file @
52c0c5b0
<
template
>
<div
class=
"user-detail"
>
<el-page-header
@
back=
"goBack"
content=
"角色详情页面"
>
</el-page-header>
<el-card
class=
"management"
>
<h5
style=
"margin-bottom: 10px"
>
角色信息
</h5>
<el-descriptions
class=
"margin-top"
:column=
"2"
border
>
<el-descriptions-item>
<template
#
label
>
ID
</
template
>
{{ roleId }}
</el-descriptions-item>
<el-descriptions-item>
<
template
#
label
>
角色状态
</
template
>
{{
role_info_detail.role_status == 1
? "正常"
: role_info_detail.role_status == 2
? "禁用"
: "删除"
}}
</el-descriptions-item>
<el-descriptions-item>
<
template
#
label
>
角色名称
</
template
>
{{ role_info_detail.role_name }}
</el-descriptions-item>
<el-descriptions-item>
<
template
#
label
>
创建人账号
</
template
>
{{ role_info_detail.create_user_name }}
</el-descriptions-item>
<el-descriptions-item>
<
template
#
label
>
创建时间
</
template
>
{{ role_info_detail.create_time }}
</el-descriptions-item>
<el-descriptions-item>
<
template
#
label
>
最后修改人账号
</
template
>
{{ role_info_detail.update_user_name }}
</el-descriptions-item>
<el-descriptions-item>
<
template
#
label
>
最后修改时间
</
template
>
{{ role_info_detail.update_time }}
</el-descriptions-item>
</el-descriptions>
<div
class=
"tree"
v-if=
"selectedOptions"
>
<h5
style=
"margin-bottom: 10px"
>
角色范围
</h5>
<div>
<el-cascader
v-model=
"selectedOptions"
:options=
"permissionsAll"
placeholder=
"暂无数据"
disabled
:props=
"props"
style=
"width: 300px"
></el-cascader>
</div>
</div>
<div
v-if=
"role_info_detail.role_account_list.length"
>
<h5
style=
"margin: 10px 0"
>
角色账号
</h5>
<div
class=
"roleList"
>
<div
class=
"role_account_list"
v-for=
"(item, index) in role_info_detail.role_account_list"
:key=
"index"
>
{{ item }}
</div>
</div>
</div>
</el-card>
</div>
</template>
<
script
>
import
{
get_role_info
as
reqGet_role_info
,
getAll_role_list
as
reqGetAll_role_list
}
from
"../../service/role"
;
export
default
{
name
:
"RoleDetail"
,
props
:
[
"appId"
],
data
()
{
return
{
roleId
:
this
.
$route
.
query
.
roleId
,
props
:
{
multiple
:
true
,
//设置为多选
value
:
"id"
,
//value值和哪个值绑定
label
:
"desc"
,
//label值和哪个值绑定
children
:
"sub_permissions"
//children值和哪个值绑定
},
selectedOptions
:
[],
permissionsAll
:
[],
role_info_detail
:
{
//详情非编辑项
role_id
:
""
,
role_name
:
""
,
role_status
:
""
,
update_time
:
""
,
update_user_name
:
""
,
create_time
:
""
,
create_user_name
:
""
,
role_account_list
:
[]
}
};
},
mounted
()
{
this
.
roleId
=
this
.
$route
.
query
.
roleId
;
let
{
email
}
=
this
.
$store
.
state
.
userInfo
;
reqGetAll_role_list
(
email
,
this
.
appId
).
then
(
res
=>
{
this
.
permissionsAll
=
res
.
permissions
;
});
reqGet_role_info
(
this
.
roleId
,
this
.
appId
).
then
(
res
=>
{
const
{
role_name
,
role_status
,
update_time
,
update_user_name
,
create_time
,
create_user_name
,
role_account_list
,
permissions
}
=
res
.
result
;
this
.
role_info_detail
=
{
role_name
,
role_status
,
update_time
,
update_user_name
,
create_time
,
create_user_name
,
role_account_list
};
this
.
editEchoData
(
permissions
);
});
},
methods
:
{
goBack
()
{
this
.
$router
.
back
(
-
1
);
},
//遍历回显值selectedOptions
editEchoData
(
permissions
)
{
let
selectData
=
[];
permissions
.
map
(
item
=>
{
let
one
=
{
id
:
item
.
id
};
if
(
item
.
sub_permissions
)
{
item
.
sub_permissions
.
map
(
info
=>
{
let
selectId
=
[
one
.
id
,
info
.
id
];
selectData
.
push
(
selectId
);
});
}
});
this
.
selectedOptions
=
selectData
;
}
}
};
</
script
>
<
style
lang=
"less"
scoped
>
.user-detail {
margin: 50px;
.role_account_list {
padding: 10px;
color: #909399;
background: #fafafa;
font-weight: 400;
line-height: 1.5;
}
.management {
margin-top: 20px;
}
.roleList {
max-height: 300px;
overflow-y: scroll;
}
.tree {
// border: 1px solid #ebeef5;
margin-top: 20px;
}
}
</
style
>
src/components/Roles/RoleList.vue
0 → 100644
View file @
52c0c5b0
<
template
>
<el-card
class=
"role_management"
>
<!-- 角色检索区域 -->
<div
class=
"creatRole"
>
<el-form
inline
:model=
"searchForm"
>
<el-form-item
label=
"角色名称"
>
<el-input
v-model=
"searchForm.roleName"
></el-input>
</el-form-item>
<el-form-item
label=
"状态"
>
<el-select
v-model=
"searchForm.roleStatus"
placeholder=
"请选择角色状态"
>
<el-option
label=
"正常"
:value=
"1"
></el-option>
<el-option
label=
"禁用"
:value=
"2"
></el-option>
<el-option
label=
"删除"
:value=
"3"
></el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button
type=
"primary"
@
click=
"onSearchSubmit"
>
查询
</el-button>
<el-button
@
click=
"onReset"
>
重置
</el-button>
</el-form-item>
</el-form>
<el-form>
<el-form-item>
<el-button
type=
"primary"
:disabled=
"!permission.get('create')"
@
click=
"onCreateRole"
>
创建角色
</el-button
>
</el-form-item>
</el-form>
</div>
<!-- 角色搜索列表 -->
<el-table
border
:data=
"managementList"
>
<el-table-column
label=
"ID"
width=
"200px"
prop=
"role_id"
align=
"center"
></el-table-column>
<el-table-column
label=
"角色名称"
prop=
"role_name"
align=
"center"
></el-table-column>
<el-table-column
label=
"状态"
width=
"200px"
:formatter=
"hasStatusFormat"
align=
"center"
>
</el-table-column>
<el-table-column
label=
"最后修改日期"
prop=
"update_time"
align=
"center"
></el-table-column>
<el-table-column
label=
"最后修改人账号"
prop=
"update_user_name"
align=
"center"
></el-table-column>
<el-table-column
label=
"操作"
align=
"center"
>
<template
#
default=
"scope"
>
<el-button
:disabled=
"
!permission.get('edit') ||
scope.row.role_status == 2 ||
scope.row.role_status == 3
"
@
click
.
stop=
"handelModify(scope.row)"
type=
"text"
size=
"mini"
>
修改
</el-button
>
<el-button
:disabled=
"!permission.get('delete')"
@
click
.
stop=
"handelDelete(scope.row)"
size=
"mini"
type=
"text"
>
删除
</el-button
>
<el-button
:disabled=
"!permission.get('disable')"
@
click
.
stop=
"handelDisable(scope.row)"
size=
"mini"
type=
"text"
>
禁用
</el-button
>
<el-button
:disabled=
"!permission.get('enable')"
@
click
.
stop=
"handelEnable(scope.row)"
size=
"mini"
type=
"text"
>
启用
</el-button
>
<el-button
@
click
.
stop=
"toRoleDetail(scope.row)"
size=
"mini"
type=
"text"
>
查看详情
</el-button
>
</
template
>
</el-table-column>
</el-table>
<page
:totalNum=
"totalNum"
@
update=
"update"
/>
</el-card>
<el-dialog
:title=
"roleTitle"
v-model=
"dialogVisible"
>
<el-form>
<!-- 新增 -->
<el-form-item
label=
"角色名称"
:label-width=
"formLabelWidth"
>
<el-input
v-model=
"roleName"
autocomplete=
"off"
></el-input>
</el-form-item>
<el-form-item
label=
"角色范围"
:label-width=
"formLabelWidth"
>
<el-cascader
v-model=
"selectedOptions"
:options=
"permissionsAll"
:props=
"props"
style=
"width: 280px"
@
change=
"parentCateChange"
clearable
></el-cascader>
</el-form-item>
</el-form>
<
template
#
footer
>
<span
class=
"dialog-footer"
>
<el-button
@
click=
"dialogVisible = false"
>
取 消
</el-button>
<el-button
type=
"primary"
@
click=
"confirm"
>
确 定
</el-button>
</span>
</
template
>
</el-dialog>
</template>
<
script
>
import
page
from
"../Pagination"
;
import
{
getRole_list
as
reqGetRole_list
,
getAll_role_list
as
reqGetAll_role_list
,
getUpdate_role
as
reqGetUpdate_role
,
get_role_info
as
reqGet_role_info
,
getDelete_role
as
reqGetDelete_role
,
getAdd_role
as
reqGetAdd_role
}
from
"../../service/role"
;
export
default
{
name
:
"RoleList"
,
props
:
[
"appId"
,
"detailPath"
],
components
:
{
page
},
computed
:
{
permission
()
{
const
modulePermissions
=
this
.
$store
.
getters
.
moduleSubPermissions
(
"role"
)
||
[];
return
new
Map
(
modulePermissions
.
map
(
ele
=>
[
ele
.
name
,
true
]));
}
},
data
()
{
return
{
searchForm
:
{
roleName
:
""
,
roleStatus
:
""
},
formLabelWidth
:
"120px"
,
params
:
{
page
:
1
,
page_size
:
20
},
totalNum
:
null
,
roleTitle
:
""
,
roleName
:
""
,
edit
:
true
,
props
:
{
multiple
:
true
,
//设置为多选
value
:
"id"
,
//value值和哪个值绑定
label
:
"desc"
,
//label值和哪个值绑定
children
:
"sub_permissions"
//children值和哪个值绑定
},
selectedOptions
:
[],
dialogVisible
:
false
,
dialogText
:
""
,
managementList
:
[],
role_info_detail
:
{
//详情非编辑项
role_id
:
""
,
role_name
:
""
},
permissionsAll
:
[],
currenPermissionsUpdate
:
[],
currentRolePrivilege
:
[]
};
},
beforeMount
()
{
this
.
getGetRole_list
();
this
.
getPermissionsAll
();
},
methods
:
{
hasStatusFormat
(
row
)
{
let
statusText
=
[
"正常"
,
"禁用"
,
"删除"
];
return
statusText
[
row
.
role_status
-
1
];
},
onCreateRole
()
{
this
.
roleTitle
=
"新增角色"
;
this
.
getPermissionsAll
();
this
.
edit
=
false
;
this
.
dialogVisible
=
true
;
this
.
roleName
=
""
;
this
.
selectedOptions
=
[];
// this.$router.push({ name: 'AddRole' });
},
toRoleDetail
(
row
)
{
this
.
$router
.
push
({
path
:
this
.
detailPath
,
query
:
{
roleId
:
row
.
role_id
}
});
},
getPermissionsAll
()
{
let
{
email
}
=
this
.
$store
.
state
.
userInfo
;
reqGetAll_role_list
(
email
,
this
.
appId
).
then
(
res
=>
{
this
.
permissionsAll
=
res
.
permissions
;
});
},
//获取角色列表
getGetRole_list
()
{
let
{
page
,
page_size
}
=
this
.
params
;
let
paramsRole_list
=
{
page
,
page_size
,
role_status
:
this
.
searchForm
.
roleStatus
,
role_name
:
this
.
searchForm
.
roleName
};
reqGetRole_list
(
paramsRole_list
,
this
.
appId
).
then
(
res
=>
{
this
.
managementList
=
res
.
result
;
this
.
totalNum
=
res
.
count
;
});
},
//查询
onSearchSubmit
()
{
this
.
getGetRole_list
();
},
//重置
onReset
()
{
(
this
.
searchForm
.
roleName
=
""
),
(
this
.
searchForm
.
roleStatus
=
""
);
this
.
getGetRole_list
();
},
//列表分页
update
(
obj
)
{
Object
.
assign
(
this
.
params
,
obj
);
let
{
page
,
page_size
}
=
this
.
params
;
this
.
getGetRole_list
(
page
,
page_size
);
},
//弹框提示
openBounced
(
type
,
role_id
)
{
this
.
$confirm
(
`
${
this
.
dialogText
}
是否继续?`
,
"提示"
,
{
confirmButtonText
:
"确定"
,
cancelButtonText
:
"取消"
,
type
:
"warning"
})
.
then
(()
=>
{
if
(
type
===
"disable"
)
{
this
.
getRole_info_detail
(
"disable"
,
role_id
);
}
else
{
this
.
delete
(
role_id
);
}
})
.
catch
(()
=>
{
this
.
$message
({
type
:
"info"
,
message
:
"已取消"
});
});
},
//删除
delete
(
role_id
)
{
reqGetDelete_role
(
role_id
,
this
.
appId
).
then
(
res
=>
{
if
(
res
.
status
==
"success"
)
this
.
getGetRole_list
();
});
},
//角色详情数据
getRole_info_detail
(
type
,
role_id
)
{
reqGet_role_info
(
role_id
,
this
.
appId
).
then
(
res
=>
{
const
{
role_id
,
role_name
,
permissions
}
=
res
.
result
;
this
.
role_info_detail
=
{
role_id
,
role_name
};
this
.
roleName
=
role_name
;
// this.permissionsUpdate = permissions
let
role_status
;
if
(
type
===
"disable"
)
{
role_status
=
2
;
}
else
if
(
type
===
"enable"
)
{
role_status
=
1
;
}
else
if
(
type
===
"modify"
)
{
this
.
currentRolePrivilege
=
permissions
;
this
.
editEchoData
(
permissions
);
}
else
{
role_status
=
""
;
}
if
(
type
!==
"modify"
)
{
this
.
getUpdate_role
(
role_name
,
role_id
,
role_status
,
permissions
);
}
});
},
//遍历回显值selectedOptions
editEchoData
(
permissions
)
{
let
selectData
=
[];
permissions
.
map
(
item
=>
{
let
one
=
{
id
:
item
.
id
};
if
(
item
.
sub_permissions
)
{
item
.
sub_permissions
.
map
(
info
=>
{
let
selectId
=
[
one
.
id
,
info
.
id
];
selectData
.
push
(
selectId
);
});
}
});
this
.
selectedOptions
=
selectData
;
},
//启用
handelEnable
(
row
)
{
if
(
row
.
role_status
==
1
)
{
this
.
$message
({
type
:
"info"
,
message
:
"该条数据已启用"
});
return
false
;
}
this
.
getRole_info_detail
(
"enable"
,
row
.
role_id
);
},
//禁用
handelDisable
(
row
)
{
if
(
row
.
role_status
==
2
)
{
this
.
$message
({
type
:
"info"
,
message
:
"该条数据已禁用"
});
return
false
;
}
this
.
dialogText
=
"禁用拥有此角色用户将受影响"
;
this
.
openBounced
(
"disable"
,
row
.
role_id
);
},
//编辑列表操作
getUpdate_role
(
role_name
,
role_id
,
role_status
,
permissions
)
{
let
paramsUpdate_role
=
{
role_name
:
role_name
,
role_id
,
role_status
,
permissions
};
reqGetUpdate_role
(
paramsUpdate_role
,
this
.
appId
).
then
(
res
=>
{
if
(
res
.
status
===
"success"
)
{
this
.
dialogVisible
=
false
;
this
.
getGetRole_list
();
}
else
{
this
.
dialogVisible
=
false
;
this
.
$message
({
type
:
"info"
,
message
:
`
${
res
.
reason
}
`
});
}
});
},
//删除
handelDelete
(
row
)
{
this
.
dialogText
=
"删除后不可恢复,拥有此角色用户将受影响"
;
this
.
openBounced
(
"del"
,
row
.
role_id
);
},
//修改
async
handelModify
(
row
)
{
this
.
edit
=
true
;
this
.
roleTitle
=
"修改角色"
;
await
this
.
getPermissionsAll
();
this
.
dialogVisible
=
true
;
this
.
getRole_info_detail
(
"modify"
,
row
.
role_id
);
},
//确认修改
confirm
()
{
let
checkRolePrivilege
=
[];
this
.
edit
?
(
checkRolePrivilege
=
this
.
currentRolePrivilege
)
:
(
checkRolePrivilege
=
this
.
currenPermissionsUpdate
);
if
(
!
(
this
.
roleName
&&
checkRolePrivilege
.
length
>
0
))
{
this
.
$message
({
type
:
"error"
,
message
:
"请完善信息"
});
return
false
;
}
if
(
this
.
edit
)
{
this
.
getEditRole
();
}
else
{
this
.
getAdd_role
();
}
},
//编辑提交的数据
getEditRole
()
{
let
{
role_id
}
=
this
.
role_info_detail
;
let
role_status
=
""
;
this
.
getUpdate_role
(
this
.
roleName
,
role_id
,
role_status
,
this
.
currentRolePrivilege
);
},
//新增角色
getAdd_role
()
{
let
paramsAdd_role
=
{
role_name
:
this
.
roleName
,
permissions
:
this
.
currenPermissionsUpdate
};
reqGetAdd_role
(
paramsAdd_role
,
this
.
appId
).
then
(
res
=>
{
this
.
dialogVisible
=
false
;
if
(
res
.
status
===
"success"
)
{
this
.
getGetRole_list
();
}
else
{
this
.
$message
({
type
:
"info"
,
message
:
`
${
res
.
reason
}
`
});
}
});
},
parentCateChange
(
id
)
{
this
.
getSelectedOptions
(
id
);
},
getSelectedOptions
(
selectedOptions
)
{
let
oldDataRule
=
[];
selectedOptions
.
forEach
(
el
=>
{
let
oldObj
=
{
id
:
el
[
0
],
sub_permissions
:
[]
};
let
btnObj
=
{
id
:
el
[
1
]
};
oldObj
.
sub_permissions
.
push
(
btnObj
);
oldDataRule
.
push
(
oldObj
);
});
let
newData
=
[];
let
newObj
=
{};
oldDataRule
.
forEach
((
el
,
i
)
=>
{
if
(
!
newObj
[
el
.
id
])
{
newData
.
push
(
el
);
newObj
[
el
.
id
]
=
true
;
}
else
{
newData
.
forEach
(
el
=>
{
if
(
el
.
id
===
oldDataRule
[
i
].
id
)
{
el
.
sub_permissions
=
[
...
el
.
sub_permissions
,
...
oldDataRule
[
i
].
sub_permissions
];
}
});
}
});
this
.
currentRolePrivilege
=
newData
;
this
.
currenPermissionsUpdate
=
newData
;
}
}
};
</
script
>
<
style
lang=
"less"
scoped
>
.creatRole {
display: flex;
justify-content: space-between;
}
.role_management {
padding: 20px;
}
.role_management .el-button {
margin: 0 2px;
}
</
style
>
src/components/UserList/components/UserInfoEditModal.vue
0 → 100644
View file @
52c0c5b0
<
template
>
<div
class=
"user-container"
>
<el-dialog
title=
"编辑用户"
v-model=
"modalVisable"
:before-close=
"cancel"
>
<el-form
:model=
"userInfo"
>
<el-form-item
label=
"用户ID"
:label-width=
"formLabelWidth"
>
<el-input
class=
"form-val"
v-model=
"userInfo.user_id"
size=
"medium"
disabled
></el-input>
</el-form-item>
<el-form-item
label=
"状态"
:label-width=
"formLabelWidth"
>
<!--
<el-input
class=
"form-val"
>
{{
data
.
user_status
===
1
?
'启用'
:
'禁用'
}}
</el-input>
-->
<el-switch
class=
"form-val"
v-model=
"userInfo.user_status"
active-value=
"1"
inactive-value=
"2"
active-text=
"启用"
inactive-text=
"禁用"
>
</el-switch>
</el-form-item>
<el-form-item
label=
"姓名"
:label-width=
"formLabelWidth"
>
<el-input
class=
"form-val"
v-model=
"userInfo.user_name"
disabled
></el-input>
</el-form-item>
<el-form-item
label=
"邮箱"
:label-width=
"formLabelWidth"
required
>
<el-input
class=
"form-val"
v-model=
"userInfo.user_email"
disabled
></el-input>
</el-form-item>
<el-form-item
label=
"手机号"
:label-width=
"formLabelWidth"
>
<el-input
class=
"form-val"
v-model=
"userInfo.user_mobile"
></el-input>
</el-form-item>
<el-form-item
label=
"所属组织"
:label-width=
"formLabelWidth"
>
<el-input
class=
"form-val"
v-model=
"userInfo.organization"
disabled
></el-input>
</el-form-item>
<el-form-item
label=
"授权角色信息"
:label-width=
"formLabelWidth"
required
>
<el-select
v-model=
"userInfo.roles"
multiple
placeholder=
"请选择"
class=
"form-val"
>
<el-option
v-for=
"item in roles"
:key=
"item.role_id"
:label=
"item.role_name"
:value=
"item.role_id"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"敏感词权限"
:label-width=
"formLabelWidth"
>
<el-switch
v-model=
"userInfo.is_sensitive_authority"
class=
"form-val"
active-value=
"1"
inactive-value=
"2"
active-text=
"开启"
inactive-text=
"关闭"
>
</el-switch>
</el-form-item>
</el-form>
<template
#
footer
>
<span
class=
"dialog-footer"
>
<el-button
@
click=
"cancel"
>
取 消
</el-button>
<el-button
type=
"primary"
@
click=
"confirm"
>
确 定
</el-button>
</span>
</
template
>
</el-dialog>
</div>
</template>
<
script
>
import
{
ElMessage
}
from
"element-plus"
;
import
{
getRole_list
as
reqGetRoles
}
from
"@/service/role"
;
export
default
{
name
:
"UserInfoEditModal"
,
props
:
{
data
:
Object
,
visable
:
{
type
:
Boolean
,
default
:
false
},
appId
:
String
},
data
()
{
return
{
formLabelWidth
:
"120px"
,
userInfo
:
{},
roles
:
[],
modalVisable
:
false
};
},
watch
:
{
data
(
val
)
{
this
.
userInfo
=
JSON
.
parse
(
JSON
.
stringify
(
val
));
this
.
userInfo
.
roles
=
val
.
roles
.
map
(
ele
=>
ele
.
role_id
);
this
.
userInfo
.
user_status
=
val
.
user_status
.
toString
();
this
.
userInfo
.
is_sensitive_authority
=
val
.
is_sensitive_authority
.
toString
();
},
visable
(
val
)
{
this
.
modalVisable
=
val
;
}
},
beforeMount
()
{
this
.
getRoles
();
},
methods
:
{
async
getRoles
()
{
const
{
code
,
result
}
=
await
reqGetRoles
(
{
page_size
:
2000
,
page
:
1
},
this
.
appId
);
if
(
code
!==
0
)
{
ElMessage
.
error
(
"获取角色列表出错!"
);
return
;
}
this
.
roles
=
result
;
},
confirm
()
{
const
checkConditions
=
{
user_email
:
{
check
:
val
=>
val
.
trim
()
!==
""
,
tip
:
"请输入邮箱!"
},
roles
:
{
check
:
val
=>
val
.
length
!==
0
,
tip
:
"请添加角色!"
}
};
const
keys
=
Object
.
keys
(
checkConditions
);
for
(
let
i
=
0
;
i
<
keys
.
length
;
i
++
)
{
const
field
=
keys
[
i
];
if
(
!
checkConditions
[
field
].
check
(
this
.
userInfo
[
field
]))
{
ElMessage
.
error
(
checkConditions
[
field
].
tip
);
return
;
}
}
this
.
$emit
(
"confirm"
,
this
.
userInfo
);
},
cancel
()
{
this
.
$emit
(
"cancel"
);
}
}
};
</
script
>
<
style
lang=
"less"
>
.form-val {
margin-left: 20px;
width: 300px;
}
.form-val.el-input {
width: 80%;
}
</
style
>
src/components/UserList/components/UserInfoModal.vue
0 → 100644
View file @
52c0c5b0
<
template
>
<div
class=
"user-container"
>
<el-dialog
:title=
"title"
v-model=
"modalVisable"
:before-close=
"cancel"
>
<el-form
:model=
"data"
>
<el-form-item
label=
"用户ID"
:label-width=
"formLabelWidth"
>
<text
class=
"form-val"
>
{{
data
.
user_id
}}
</text>
</el-form-item>
<el-form-item
label=
"状态"
:label-width=
"formLabelWidth"
>
<text
class=
"form-val"
>
{{
data
.
user_status
==
1
?
"启用"
:
"禁用"
}}
</text>
</el-form-item>
<el-form-item
label=
"姓名"
:label-width=
"formLabelWidth"
>
<text
class=
"form-val"
>
{{
data
.
user_name
}}
</text>
</el-form-item>
<el-form-item
label=
"账号"
:label-width=
"formLabelWidth"
>
<text
class=
"form-val"
>
{{
data
.
user_email
}}
</text>
</el-form-item>
<el-form-item
label=
"手机号"
:label-width=
"formLabelWidth"
>
<text
class=
"form-val"
>
{{
data
.
user_mobile
}}
</text>
</el-form-item>
<el-form-item
label=
"所属组织"
:label-width=
"formLabelWidth"
>
<text
class=
"form-val"
>
{{
data
.
organization
}}
</text>
</el-form-item>
<el-form-item
label=
"添加账号人"
:label-width=
"formLabelWidth"
>
<text
class=
"form-val"
>
{{
data
.
create_user_name
}}
</text>
</el-form-item>
<el-form-item
label=
"添加时间"
:label-width=
"formLabelWidth"
>
<text
class=
"form-val"
>
{{
data
.
create_time
}}
</text>
</el-form-item>
<el-form-item
label=
"最后修改人账号"
:label-width=
"formLabelWidth"
>
<text
class=
"form-val"
>
{{
data
.
update_user_name
}}
</text>
</el-form-item>
<el-form-item
label=
"最后修改时间"
:label-width=
"formLabelWidth"
>
<text
class=
"form-val"
>
{{
data
.
update_time
}}
</text>
</el-form-item>
<el-form-item
label=
"授权角色信息"
:label-width=
"formLabelWidth"
>
<text
class=
"form-val"
>
{{
data
.
roles
.
map
(
ele
=>
ele
.
role_name
).
join
(
","
)
}}
</text>
</el-form-item>
<el-form-item
label=
"敏感词权限"
:label-width=
"formLabelWidth"
>
<text
class=
"form-val"
>
{{
data
.
is_sensitive_authority
===
1
?
"是"
:
"否"
}}
</text>
</el-form-item>
</el-form>
</el-dialog>
</div>
</
template
>
<
script
>
export
default
{
name
:
"UserInfoModal"
,
props
:
{
mode
:
{
type
:
String
,
default
:
"check"
},
data
:
Object
,
title
:
{
type
:
String
,
default
:
"用户信息"
},
visable
:
{
type
:
Boolean
,
default
:
false
}
},
data
()
{
return
{
formLabelWidth
:
"180px"
,
modalVisable
:
false
};
},
watch
:
{
visable
(
val
)
{
this
.
modalVisable
=
val
;
}
},
methods
:
{
cancel
:
function
()
{
this
.
$emit
(
"cancel"
);
}
}
};
</
script
>
<
style
lang=
"less"
>
.form-val {
margin-left: 20px;
}
</
style
>
src/components/UserList/components/UserInfoNewModal.vue
0 → 100644
View file @
52c0c5b0
<
template
>
<div
class=
"user-container"
>
<el-dialog
title=
"创建用户"
v-model=
"modalVisable"
:before-close=
"cancel"
>
<el-form
:model=
"userInfo"
>
<el-form-item
label=
"状态"
:label-width=
"formLabelWidth"
>
<!--
<el-input
class=
"form-val"
>
{{
data
.
user_status
===
1
?
'启用'
:
'禁用'
}}
</el-input>
-->
<el-switch
class=
"form-val"
v-model=
"userInfo.user_status"
active-value=
"1"
inactive-value=
"2"
active-text=
"启用"
inactive-text=
"禁用"
>
</el-switch>
</el-form-item>
<el-form-item
label=
"姓名"
:label-width=
"formLabelWidth"
>
<el-input
class=
"form-val"
v-model=
"userInfo.user_name"
></el-input>
</el-form-item>
<el-form-item
label=
"邮箱"
:label-width=
"formLabelWidth"
required
>
<el-input
class=
"form-val"
v-model=
"userInfo.user_email"
></el-input>
</el-form-item>
<el-form-item
label=
"手机号"
:label-width=
"formLabelWidth"
>
<el-input
class=
"form-val"
v-model=
"userInfo.user_mobile"
></el-input>
</el-form-item>
<el-form-item
label=
"所属组织"
:label-width=
"formLabelWidth"
>
<el-input
class=
"form-val"
v-model=
"userInfo.organization"
></el-input>
</el-form-item>
<el-form-item
label=
"授权角色"
:label-width=
"formLabelWidth"
required
>
<el-select
v-model=
"userInfo.roles"
multiple
placeholder=
"请选择"
class=
"form-val"
>
<el-option
v-for=
"item in roles"
:key=
"item.role_id"
:label=
"item.role_name"
:value=
"item.role_id"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"敏感词权限"
:label-width=
"formLabelWidth"
>
<el-switch
v-model=
"userInfo.is_sensitive_authority"
class=
"form-val"
active-value=
"1"
inactive-value=
"2"
active-text=
"开启"
inactive-text=
"关闭"
>
</el-switch>
</el-form-item>
</el-form>
<template
#
footer
>
<span
class=
"dialog-footer"
>
<el-button
@
click=
"cancel"
>
取 消
</el-button>
<el-button
type=
"primary"
@
click=
"confirm"
>
确 定
</el-button>
</span>
</
template
>
</el-dialog>
</div>
</template>
<
script
>
import
{
ElMessage
}
from
"element-plus"
;
import
{
getRole_list
as
reqGetRoles
}
from
"@/service/role"
;
export
default
{
name
:
"UserInfoEditModal"
,
props
:
{
visable
:
{
type
:
Boolean
,
default
:
false
},
appId
:
String
},
data
()
{
return
{
formLabelWidth
:
"120px"
,
userInfo
:
{
user_name
:
""
,
user_email
:
""
,
is_sensitive_authority
:
"0"
,
user_mobile
:
""
,
roles
:
[],
user_status
:
"1"
,
organization
:
""
},
roles
:
[],
modalVisable
:
false
};
},
watch
:
{
visable
(
val
)
{
this
.
modalVisable
=
val
;
if
(
val
)
{
this
.
userInfo
=
{
user_name
:
""
,
user_email
:
""
,
is_sensitive_authority
:
"0"
,
user_mobile
:
""
,
roles
:
[],
user_status
:
"1"
,
organization
:
""
};
}
}
},
beforeMount
()
{
this
.
getRoles
();
},
methods
:
{
async
getRoles
()
{
const
{
code
,
result
}
=
await
reqGetRoles
(
{
page_size
:
2000
,
page
:
1
},
this
.
appId
);
if
(
code
!==
0
)
{
ElMessage
.
error
(
"获取角色列表出错!"
);
return
;
}
this
.
roles
=
result
;
},
confirm
()
{
const
checkConditions
=
{
user_email
:
{
check
:
val
=>
val
.
trim
()
!==
""
,
tip
:
"请输入邮箱!"
},
roles
:
{
check
:
val
=>
val
.
length
!==
0
,
tip
:
"请添加角色!"
}
};
const
keys
=
Object
.
keys
(
checkConditions
);
for
(
let
i
=
0
;
i
<
keys
.
length
;
i
++
)
{
const
field
=
keys
[
i
];
if
(
!
checkConditions
[
field
].
check
(
this
.
userInfo
[
field
]))
{
ElMessage
.
error
(
checkConditions
[
field
].
tip
);
return
;
}
}
this
.
$emit
(
"confirm"
,
this
.
userInfo
);
},
cancel
()
{
this
.
$emit
(
"cancel"
);
}
}
};
</
script
>
<
style
lang=
"less"
>
.form-val {
margin-left: 20px;
width: 300px;
}
.form-val.el-input {
width: 80%;
}
</
style
>
src/components/UserList/index.vue
0 → 100644
View file @
52c0c5b0
<
template
>
<div
class=
"user"
>
<el-form
:inline=
"true"
:model=
"pageParams"
class=
"demo-form-inline"
>
<el-form-item
label=
"用户姓名"
>
<el-input
maxlength=
"15"
v-model=
"pageParams.user_name"
placeholder=
"用户姓名"
></el-input>
</el-form-item>
<el-form-item
label=
"用户账号"
>
<el-input
v-model=
"pageParams.user_email"
placeholder=
"用户账号"
></el-input>
</el-form-item>
<el-form-item
label=
"手机号"
>
<el-input
v-model=
"pageParams.user_mobile"
placeholder=
"手机号"
></el-input>
</el-form-item>
<el-form-item
label=
"状态"
>
<el-select
v-model=
"pageParams.user_status"
placeholder=
"状态"
>
<el-option
value=
"1"
label=
"启用"
></el-option>
<el-option
value=
"2"
label=
"禁用"
></el-option>
</el-select>
</el-form-item>
<el-form-item
class=
"func-btn"
>
<el-button
type=
"primary"
@
click=
"getUserList"
>
查询
</el-button>
<el-button
@
click=
"onReset"
>
重置
</el-button>
<el-button
@
click=
"createUser"
:disabled=
"!permission.get('create')"
>
新建用户
</el-button
>
</el-form-item>
</el-form>
<el-table
:data=
"renderUserList"
border
style=
"width: 100%"
>
<el-table-column
prop=
"user_id"
label=
"用户ID"
width=
"70"
>
</el-table-column>
<el-table-column
prop=
"user_name"
label=
"用户姓名"
>
</el-table-column>
<el-table-column
prop=
"user_email"
label=
"用户账号"
>
</el-table-column>
<el-table-column
prop=
"user_status"
label=
"状态"
>
</el-table-column>
<el-table-column
prop=
"user_mobile"
label=
"手机号"
>
</el-table-column>
<el-table-column
prop=
"update_time"
label=
"最后修改日期"
>
</el-table-column>
<el-table-column
prop=
"update_user_name"
label=
"最后修改人账号"
>
</el-table-column>
<el-table-column
fixed=
"right"
label=
"操作"
width=
"140"
>
<template
#
default=
"scope"
>
<el-button
type=
"text"
size=
"small"
@
click=
"checkUser(scope.row)"
>
查看
</el-button
>
<el-button
@
click=
"editUser(scope.row)"
type=
"text"
size=
"small"
:disabled=
"!permission.get('edit')"
>
修改
</el-button
>
<el-button
v-if=
"scope.row.user_status === '启用'"
type=
"text"
size=
"small"
@
click=
"disableUser(scope.row)"
:disabled=
"!permission.get('enable')"
>
禁用
</el-button
>
<el-button
v-if=
"scope.row.user_status === '禁用'"
type=
"text"
size=
"small"
@
click=
"enableUser(scope.row)"
:disabled=
"!permission.get('disable')"
>
启用
</el-button
>
</
template
>
</el-table-column>
</el-table>
<page
:totalNum=
"totalNum"
:pageSize=
"pageParams.size"
@
update=
"updatePage"
/>
</div>
<user-info-modal
:data=
"curUserInfo"
:visable=
"modalVisable.info"
@
cancel=
"cancelModal('info')"
:appId=
"appId"
></user-info-modal>
<user-info-edit-modal
:data=
"curUserInfo"
:visable=
"modalVisable.edit"
@
confirm=
"confirmEditModal"
@
cancel=
"cancelModal('edit')"
:appId=
"appId"
></user-info-edit-modal>
<user-info-new-modal
:visable=
"modalVisable.new"
@
confirm=
"confirmEditModal"
@
cancel=
"cancelModal('new')"
:appId=
"appId"
></user-info-new-modal>
</template>
<
script
>
import
page
from
"@/components/Pagination"
;
import
UserInfoModal
from
"./components/UserInfoModal"
;
import
UserInfoEditModal
from
"./components/UserInfoEditModal"
;
import
UserInfoNewModal
from
"./components/UserInfoNewModal"
;
import
{
ElMessage
}
from
"element-plus"
;
import
{
getUserList
as
reqGetUserList
,
getUserDetail
as
reqGetUserDetail
,
editUser
as
reqEditUser
,
createUser
as
reqCreateUser
}
from
"@/service/user"
;
export
default
{
name
:
"UserList"
,
props
:
[
"appId"
],
components
:
{
page
,
UserInfoModal
,
UserInfoEditModal
,
UserInfoNewModal
},
data
()
{
return
{
pageParams
:
{
appid
:
this
.
appId
,
page
:
1
,
size
:
20
,
user_name
:
""
,
user_email
:
""
,
user_mobile
:
""
,
user_status
:
""
},
totalNum
:
0
,
userList
:
[],
curUserInfo
:
{},
modalVisable
:
{
info
:
false
,
edit
:
false
,
new
:
false
},
curOperateMode
:
"new"
};
},
computed
:
{
permission
()
{
const
modulePermissions
=
this
.
$store
.
getters
.
moduleSubPermissions
(
"user"
)
||
[];
console
.
log
(
"Current page func-permissions:"
,
modulePermissions
);
return
new
Map
(
modulePermissions
.
map
(
ele
=>
[
ele
.
name
,
true
]));
},
renderUserList
()
{
const
statusMap
=
new
Map
([
[
1
,
"启用"
],
[
2
,
"禁用"
],
[
3
,
"删除"
]
]);
return
this
.
userList
.
map
(
ele
=>
{
ele
.
user_status
=
statusMap
.
get
(
ele
.
user_status
);
return
ele
;
});
}
},
beforeMount
()
{
this
.
getUserList
();
},
methods
:
{
async
getUserList
()
{
const
{
code
,
result
}
=
await
reqGetUserList
(
this
.
pageParams
);
if
(
code
!==
0
)
{
ElMessage
.
error
(
"获取用户列表出错!"
);
return
;
}
const
{
data
,
count
}
=
result
;
this
.
totalNum
=
count
;
this
.
userList
=
data
;
},
async
setCurUserInfo
(
user_id
)
{
const
{
code
,
result
}
=
await
reqGetUserDetail
({
appid
:
this
.
appId
,
user_id
});
if
(
code
===
0
)
{
this
.
curUserInfo
=
{
...
result
.
user_info
,
roles
:
result
.
role_list
};
}
else
{
ElMessage
.
error
(
"获取用户信息出错!"
);
}
},
async
checkUser
(
row
)
{
const
{
user_id
}
=
row
;
await
this
.
setCurUserInfo
(
user_id
);
this
.
openModal
(
"info"
);
},
async
editUser
(
row
)
{
const
{
user_id
}
=
row
;
await
this
.
setCurUserInfo
(
user_id
);
// this.openModal('edit');
this
.
modalVisable
.
edit
=
true
;
this
.
curOperateMode
=
"edit"
;
},
openModal
(
key
)
{
Object
.
keys
(
this
.
modalVisable
).
forEach
(
ele
=>
{
this
.
modalVisable
[
ele
]
=
key
===
ele
;
});
},
async
confirmEditModal
(
userInfo
)
{
const
{
user_id
,
user_name
,
user_email
,
is_sensitive_authority
,
user_mobile
,
roles
,
user_status
,
organization
}
=
userInfo
;
let
res
=
{};
if
(
this
.
curOperateMode
===
"edit"
)
{
const
editData
=
{
user_id
,
user_name
,
user_email
,
is_sensitive_authority
:
parseInt
(
is_sensitive_authority
),
user_mobile
,
role_id
:
roles
,
user_status
:
parseInt
(
user_status
)
};
res
=
await
reqEditUser
(
editData
,
this
.
appId
);
}
else
if
(
this
.
curOperateMode
===
"new"
)
{
const
newData
=
{
user_name
,
user_email
,
is_sensitive_authority
:
parseInt
(
is_sensitive_authority
),
user_mobile
,
role_id
:
roles
,
user_status
:
parseInt
(
user_status
),
organization
};
res
=
await
reqCreateUser
(
newData
,
this
.
appId
);
}
if
(
res
.
code
===
0
)
{
this
.
cancelModal
(
this
.
curOperateMode
);
ElMessage
.
success
(
"更新成功!"
);
this
.
getUserList
();
}
else
{
ElMessage
.
error
(
res
.
reason
);
}
},
cancelModal
(
name
)
{
this
.
modalVisable
[
name
]
=
false
;
},
createUser
()
{
this
.
curOperateMode
=
"new"
;
this
.
openModal
(
"new"
);
},
//重置
onReset
()
{
this
.
pageParams
=
{
page
:
1
,
pageSize
:
20
,
user_name
:
""
,
user_email
:
""
,
user_mobile
:
""
,
user_status
:
""
};
this
.
getUserList
();
},
updatePage
({
page
,
pageSize
})
{
page
&&
(
this
.
pageParams
.
page
=
page
);
pageSize
&&
(
this
.
pageParams
.
pageSize
=
pageSize
);
this
.
getUserList
();
},
async
enableUser
(
row
)
{
const
{
user_id
}
=
row
;
const
{
code
,
reason
}
=
await
reqEditUser
(
{
user_status
:
1
,
user_id
},
this
.
appId
);
if
(
code
===
0
)
{
ElMessage
.
success
(
"启用成功!"
);
this
.
getUserList
();
}
else
{
ElMessage
.
error
(
reason
);
}
},
async
disableUser
(
row
)
{
const
{
user_id
}
=
row
;
const
{
code
,
reason
}
=
await
reqEditUser
(
{
user_status
:
2
,
user_id
},
this
.
appId
);
if
(
code
===
0
)
{
ElMessage
.
success
(
"禁用成功!"
);
this
.
getUserList
();
}
else
{
ElMessage
.
error
(
reason
);
}
}
}
};
</
script
>
<
style
lang=
"less"
scoped
>
.user {
padding: 50px;
.search_life {
width: 280px;
}
.func-btn {
float: right;
}
}
</
style
>
src/pages/Role/manage-role.vue
View file @
52c0c5b0
<
template
>
<
template
>
<layout>
<layout>
<el-card
class=
"role_management"
>
<RoleList
appId=
"merchant-op"
detailPath=
"/op/roleRoleDetail"
></RoleList>
<!-- 角色检索区域 -->
<div
class=
"creatRole"
>
<el-form
inline
:model=
"searchForm"
>
<el-form-item
label=
"角色名称"
>
<el-input
v-model=
"searchForm.roleName"
></el-input>
</el-form-item>
<el-form-item
label=
"状态"
>
<el-select
v-model=
"searchForm.roleStatus"
placeholder=
"请选择角色状态"
>
<el-option
label=
"正常"
:value=
"1"
></el-option>
<el-option
label=
"禁用"
:value=
"2"
></el-option>
<el-option
label=
"删除"
:value=
"3"
></el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button
type=
"primary"
@
click=
"onSearchSubmit"
>
查询
</el-button>
<el-button
@
click=
"onReset"
>
重置
</el-button>
</el-form-item>
</el-form>
<el-form>
<el-form-item>
<el-button
type=
"primary"
:disabled=
"!permission.get('create')"
@
click=
"onCreateRole"
>
创建角色
</el-button
>
</el-form-item>
</el-form>
</div>
<!-- 角色搜索列表 -->
<el-table
border
:data=
"managementList"
>
<el-table-column
label=
"ID"
width=
"200px"
prop=
"role_id"
align=
"center"
></el-table-column>
<el-table-column
label=
"角色名称"
prop=
"role_name"
align=
"center"
></el-table-column>
<el-table-column
label=
"状态"
width=
"200px"
:formatter=
"hasStatusFormat"
align=
"center"
>
</el-table-column>
<el-table-column
label=
"最后修改日期"
prop=
"update_time"
align=
"center"
></el-table-column>
<el-table-column
label=
"最后修改人账号"
prop=
"update_user_name"
align=
"center"
></el-table-column>
<el-table-column
label=
"操作"
align=
"center"
>
<template
#
default=
"scope"
>
<el-button
:disabled=
"
!permission.get('edit') ||
scope.row.role_status == 2 ||
scope.row.role_status == 3
"
@
click
.
stop=
"handelModify(scope.row)"
type=
"text"
size=
"mini"
>
修改
</el-button
>
<el-button
:disabled=
"!permission.get('delete')"
@
click
.
stop=
"handelDelete(scope.row)"
size=
"mini"
type=
"text"
>
删除
</el-button
>
<el-button
:disabled=
"!permission.get('disable')"
@
click
.
stop=
"handelDisable(scope.row)"
size=
"mini"
type=
"text"
>
禁用
</el-button
>
<el-button
:disabled=
"!permission.get('enable')"
@
click
.
stop=
"handelEnable(scope.row)"
size=
"mini"
type=
"text"
>
启用
</el-button
>
<el-button
@
click
.
stop=
"toRoleDetail(scope.row)"
size=
"mini"
type=
"text"
>
查看详情
</el-button
>
</
template
>
</el-table-column>
</el-table>
<page
:totalNum=
"totalNum"
@
update=
"update"
/>
</el-card>
<el-dialog
:title=
"roleTitle"
v-model=
"dialogVisible"
>
<el-form>
<!-- 新增 -->
<el-form-item
label=
"角色名称"
:label-width=
"formLabelWidth"
>
<el-input
v-model=
"roleName"
autocomplete=
"off"
></el-input>
</el-form-item>
<el-form-item
label=
"角色范围"
:label-width=
"formLabelWidth"
>
<el-cascader
v-model=
"selectedOptions"
:options=
"permissionsAll"
:props=
"props"
style=
"width: 280px"
@
change=
"parentCateChange"
clearable
></el-cascader>
</el-form-item>
</el-form>
<
template
#
footer
>
<span
class=
"dialog-footer"
>
<el-button
@
click=
"dialogVisible = false"
>
取 消
</el-button>
<el-button
type=
"primary"
@
click=
"confirm"
>
确 定
</el-button>
</span>
</
template
>
</el-dialog>
</layout>
</layout>
</
template
>
</
template
>
<
script
>
<
script
>
import
Layout
from
"@/layouts"
;
import
Layout
from
"@/layouts"
;
import
page
from
"../components/Pagination"
import
RoleList
from
"@/components/Roles/RoleList"
;
import
{
getRole_list
as
reqGetRole_list
,
getAll_role_list
as
reqGetAll_role_list
,
getUpdate_role
as
reqGetUpdate_role
,
get_role_info
as
reqGet_role_info
,
getDelete_role
as
reqGetDelete_role
,
getAdd_role
as
reqGetAdd_role
}
from
"../../service/role"
;
export
default
{
export
default
{
name
:
'KeepRoleManagement'
,
name
:
'KeepRoleManagement'
,
components
:
{
components
:
{
Layout
,
Layout
,
page
,
RoleList
},
computed
:
{
permission
()
{
const
modulePermissions
=
this
.
$store
.
getters
.
moduleSubPermissions
(
'role'
)
||
[];
return
new
Map
(
modulePermissions
.
map
(
ele
=>
[
ele
.
name
,
true
]))
},
},
data
()
{
return
{
searchForm
:
{
roleName
:
''
,
roleStatus
:
''
},
formLabelWidth
:
'120px'
,
parmas
:
{
page
:
1
,
page_size
:
20
},
totalNum
:
null
,
roleTitle
:
''
,
roleName
:
''
,
edit
:
true
,
props
:
{
multiple
:
true
,
//设置为多选
value
:
'id'
,
//value值和哪个值绑定
label
:
'desc'
,
//label值和哪个值绑定
children
:
'sub_permissions'
//children值和哪个值绑定
},
selectedOptions
:
[],
dialogVisible
:
false
,
dialogText
:
""
,
managementList
:
[],
role_info_detail
:
{
//详情非编辑项
role_id
:
""
,
role_name
:
""
,
},
permissionsAll
:
[],
currenPermissionsUpdate
:
[],
currentRolePrivilege
:
[]
}
},
activated
()
{
this
.
getGetRole_list
()
this
.
getPermissionsAll
()
},
},
methods
:
{
hasStatusFormat
(
row
)
{
let
statusText
=
[
'正常'
,
'禁用'
,
'删除'
]
return
statusText
[
row
.
role_status
-
1
]
},
onCreateRole
()
{
this
.
roleTitle
=
'新增角色'
this
.
getPermissionsAll
()
this
.
edit
=
false
this
.
dialogVisible
=
true
this
.
roleName
=
""
this
.
selectedOptions
=
[]
// this.$router.push({ name: 'AddRole' });
},
toRoleDetail
(
row
)
{
this
.
$router
.
push
({
name
:
"RoleDetail"
,
query
:
{
roleId
:
row
.
role_id
}
});
},
getPermissionsAll
()
{
let
{
email
}
=
this
.
$store
.
state
.
userInfo
reqGetAll_role_list
(
email
).
then
(
res
=>
{
this
.
permissionsAll
=
res
})
},
//获取角色列表
getGetRole_list
()
{
let
{
page
,
page_size
}
=
this
.
parmas
let
parmasRole_list
=
{
page
,
page_size
,
role_status
:
this
.
searchForm
.
roleStatus
,
role_name
:
this
.
searchForm
.
roleName
}
reqGetRole_list
(
parmasRole_list
).
then
(
res
=>
{
this
.
managementList
=
res
.
result
this
.
totalNum
=
res
.
count
})
},
//查询
onSearchSubmit
()
{
this
.
getGetRole_list
()
},
//重置
onReset
()
{
this
.
searchForm
.
roleName
=
""
,
this
.
searchForm
.
roleStatus
=
""
this
.
getGetRole_list
()
},
//列表分页
update
(
obj
)
{
Object
.
assign
(
this
.
parmas
,
obj
)
let
{
page
,
page_size
}
=
this
.
parmas
this
.
getGetRole_list
(
page
,
page_size
)
},
//弹框提示
openBounced
(
type
,
role_id
)
{
this
.
$confirm
(
`
${
this
.
dialogText
}
是否继续?`
,
'提示'
,
{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
}).
then
(()
=>
{
if
(
type
===
"disable"
)
{
this
.
getRole_info_detail
(
'disable'
,
role_id
)
}
else
{
this
.
delete
(
role_id
)
}
}).
catch
(()
=>
{
this
.
$message
({
type
:
'info'
,
message
:
'已取消'
});
});
},
//删除
delete
(
role_id
)
{
reqGetDelete_role
(
role_id
).
then
(
res
=>
{
if
(
res
.
status
==
"success"
)
this
.
getGetRole_list
()
})
},
//角色详情数据
getRole_info_detail
(
type
,
role_id
)
{
reqGet_role_info
(
role_id
).
then
(
res
=>
{
const
{
role_id
,
role_name
,
permissions
}
=
res
this
.
role_info_detail
=
{
role_id
,
role_name
,
}
this
.
roleName
=
role_name
// this.permissionsUpdate = permissions
let
role_status
if
(
type
===
"disable"
)
{
role_status
=
2
}
else
if
(
type
===
"enable"
)
{
role_status
=
1
}
else
if
(
type
===
"modify"
)
{
this
.
currentRolePrivilege
=
permissions
this
.
editEchoData
(
permissions
)
}
else
{
role_status
=
""
}
if
(
type
!==
"modify"
)
{
this
.
getUpdate_role
(
role_name
,
role_id
,
role_status
,
permissions
)
}
})
},
//遍历回显值selectedOptions
editEchoData
(
permissions
)
{
let
selectData
=
[]
permissions
.
map
(
item
=>
{
let
one
=
{
id
:
item
.
id
}
if
(
item
.
sub_permissions
)
{
item
.
sub_permissions
.
map
(
info
=>
{
let
selectId
=
[
one
.
id
,
info
.
id
]
selectData
.
push
(
selectId
)
})
}
})
this
.
selectedOptions
=
selectData
},
//启用
handelEnable
(
row
)
{
if
(
row
.
role_status
==
1
)
{
this
.
$message
({
type
:
'info'
,
message
:
'该条数据已启用'
});
return
false
}
this
.
getRole_info_detail
(
"enable"
,
row
.
role_id
)
},
//禁用
handelDisable
(
row
)
{
if
(
row
.
role_status
==
2
)
{
this
.
$message
({
type
:
'info'
,
message
:
'该条数据已禁用'
});
return
false
}
this
.
dialogText
=
"禁用拥有此角色用户将受影响"
this
.
openBounced
(
"disable"
,
row
.
role_id
)
},
//编辑列表操作
getUpdate_role
(
role_name
,
role_id
,
role_status
,
permissions
)
{
let
parmasUpdate_role
=
{
role_name
:
role_name
,
role_id
,
role_status
,
permissions
,
}
reqGetUpdate_role
(
parmasUpdate_role
).
then
(
res
=>
{
if
(
res
.
status
===
"success"
)
{
this
.
dialogVisible
=
false
this
.
getGetRole_list
()
}
else
{
this
.
dialogVisible
=
false
this
.
$message
({
type
:
'info'
,
message
:
`
${
res
.
reason
}
`
});
}
})
},
//删除
handelDelete
(
row
)
{
this
.
dialogText
=
"删除后不可恢复,拥有此角色用户将受影响"
this
.
openBounced
(
'del'
,
row
.
role_id
)
},
//修改
handelModify
(
row
)
{
this
.
edit
=
true
this
.
roleTitle
=
'修改角色'
this
.
getPermissionsAll
()
this
.
dialogVisible
=
true
this
.
getRole_info_detail
(
"modify"
,
row
.
role_id
)
},
//确认修改
confirm
()
{
let
checkRolePrivilege
=
[]
this
.
edit
?
checkRolePrivilege
=
this
.
currentRolePrivilege
:
checkRolePrivilege
=
this
.
currenPermissionsUpdate
if
(
!
(
this
.
roleName
&&
checkRolePrivilege
.
length
>
0
))
{
this
.
$message
({
type
:
'error'
,
message
:
"请完善信息"
});
return
false
}
if
(
this
.
edit
)
{
this
.
getEditRole
()
}
else
{
this
.
getAdd_role
()
}
},
//编辑提交的数据
getEditRole
()
{
let
{
role_id
}
=
this
.
role_info_detail
let
role_status
=
''
this
.
getUpdate_role
(
this
.
roleName
,
role_id
,
role_status
,
this
.
currentRolePrivilege
)
},
//新增角色
getAdd_role
()
{
let
parmasAdd_role
=
{
role_name
:
this
.
roleName
,
permissions
:
this
.
currenPermissionsUpdate
}
reqGetAdd_role
(
parmasAdd_role
).
then
(
res
=>
{
this
.
dialogVisible
=
false
if
(
res
.
status
===
"success"
)
{
this
.
getGetRole_list
()
}
else
{
this
.
$message
({
type
:
'info'
,
message
:
`
${
res
.
reason
}
`
});
}
})
},
parentCateChange
(
id
)
{
this
.
getSelectedOptions
(
id
)
},
getSelectedOptions
(
selectedOptions
)
{
let
oldDataRule
=
[]
selectedOptions
.
forEach
(
el
=>
{
let
oldObj
=
{
id
:
el
[
0
],
sub_permissions
:
[]
}
let
btnObj
=
{
id
:
el
[
1
],
}
oldObj
.
sub_permissions
.
push
(
btnObj
)
oldDataRule
.
push
(
oldObj
)
})
let
newData
=
[]
let
newObj
=
{}
oldDataRule
.
forEach
((
el
,
i
)
=>
{
if
(
!
newObj
[
el
.
id
])
{
newData
.
push
(
el
);
newObj
[
el
.
id
]
=
true
;
}
else
{
newData
.
forEach
(
el
=>
{
if
(
el
.
id
===
oldDataRule
[
i
].
id
)
{
el
.
sub_permissions
=
[...
el
.
sub_permissions
,
...
oldDataRule
[
i
].
sub_permissions
];
}
})
}
})
this
.
currentRolePrivilege
=
newData
this
.
currenPermissionsUpdate
=
newData
},
}
};
};
</
script
>
</
script
>
<
style
lang=
"less"
scoped
>
.creatRole {
display: flex;
justify-content: space-between;
}
.role_management {
padding: 20px;
}
.role_management .el-button {
margin: 0 2px;
}
</
style
>
src/pages/Role/role-detail.vue
View file @
52c0c5b0
<
template
>
<
template
>
<div
class=
"user-detail"
>
<RoleDetail
appId=
"merchant-op"
/>
<el-page-header
@
back=
"goBack"
content=
"角色详情页面"
>
</el-page-header>
<el-card
class=
"management"
>
<h5
style=
"margin-bottom: 10px"
>
角色信息
</h5>
<el-descriptions
class=
"margin-top"
:column=
"2"
border
>
<el-descriptions-item>
<template
#
label
>
ID
</
template
>
{{ roleId }}
</el-descriptions-item>
<el-descriptions-item>
<
template
#
label
>
角色状态
</
template
>
{{
role_info_detail.role_status == 1
? "正常"
: role_info_detail.role_status == 2
? "禁用"
: "删除"
}}
</el-descriptions-item>
<el-descriptions-item>
<
template
#
label
>
角色名称
</
template
>
{{ role_info_detail.role_name }}
</el-descriptions-item>
<el-descriptions-item>
<
template
#
label
>
创建人账号
</
template
>
{{ role_info_detail.create_user_name }}
</el-descriptions-item>
<el-descriptions-item>
<
template
#
label
>
创建时间
</
template
>
{{ role_info_detail.create_time }}
</el-descriptions-item>
<el-descriptions-item>
<
template
#
label
>
最后修改人账号
</
template
>
{{ role_info_detail.update_user_name }}
</el-descriptions-item>
<el-descriptions-item>
<
template
#
label
>
最后修改时间
</
template
>
{{ role_info_detail.update_time }}
</el-descriptions-item>
</el-descriptions>
<div
class=
"tree"
v-if=
"selectedOptions"
>
<h5
style=
"margin-bottom: 10px"
>
角色范围
</h5>
<div>
<el-cascader
v-model=
"selectedOptions"
:options=
"permissionsAll"
placeholder=
"暂无数据"
disabled
:props=
"props"
style=
"width: 300px"
></el-cascader>
</div>
</div>
<div
v-if=
"role_info_detail.role_account_list.length"
>
<h5
style=
"margin: 10px 0"
>
角色账号
</h5>
<div
class=
"roleList"
>
<div
class=
"role_account_list"
v-for=
"(item, index) in role_info_detail.role_account_list"
:key=
"index"
>
{{ item }}
</div>
</div>
</div>
</el-card>
</div>
</
template
>
</
template
>
<
script
>
<
script
>
import
{
get_role_info
as
reqGet_role_info
,
getAll_role_list
as
reqGetAll_role_list
,
}
from
'../../service/role'
import
RoleDetail
from
"@/components/Roles/RoleDetail"
;
export
default
{
export
default
{
data
()
{
components
:
{
return
{
RoleDetail
roleId
:
this
.
$route
.
query
.
roleId
,
user_info
:
{
name
:
"jianghaiming"
,
email
:
"jianghaiming@126.com"
,
},
props
:
{
multiple
:
true
,
//设置为多选
value
:
'id'
,
//value值和哪个值绑定
label
:
'desc'
,
//label值和哪个值绑定
children
:
'sub_permissions'
//children值和哪个值绑定
},
selectedOptions
:
[],
permissionsAll
:
[],
role_info_detail
:
{
//详情非编辑项
role_id
:
""
,
role_name
:
""
,
role_status
:
""
,
update_time
:
""
,
update_user_name
:
""
,
create_time
:
""
,
create_user_name
:
""
,
role_account_list
:
[]
}
}
},
activated
()
{
this
.
roleId
=
this
.
$route
.
query
.
roleId
let
{
email
}
=
this
.
$store
.
state
.
userInfo
reqGetAll_role_list
(
email
).
then
(
res
=>
{
this
.
permissionsAll
=
res
})
reqGet_role_info
(
this
.
roleId
).
then
((
res
)
=>
{
const
{
role_name
,
role_status
,
update_time
,
update_user_name
,
create_time
,
create_user_name
,
role_account_list
,
permissions
}
=
res
this
.
role_info_detail
=
{
role_name
,
role_status
,
update_time
,
update_user_name
,
create_time
,
create_user_name
,
role_account_list
}
this
.
editEchoData
(
permissions
)
})
},
methods
:
{
goBack
()
{
this
.
$router
.
back
(
-
1
);
},
//遍历回显值selectedOptions
editEchoData
(
permissions
)
{
let
selectData
=
[]
permissions
.
map
(
item
=>
{
let
one
=
{
id
:
item
.
id
}
if
(
item
.
sub_permissions
)
{
item
.
sub_permissions
.
map
(
info
=>
{
let
selectId
=
[
one
.
id
,
info
.
id
]
selectData
.
push
(
selectId
)
})
}
})
this
.
selectedOptions
=
selectData
},
}
}
}
}
;
</
script
>
</
script
>
<
style
lang=
"less"
scoped
>
.user-detail {
margin: 50px;
.role_account_list {
padding: 10px;
color: #909399;
background: #fafafa;
font-weight: 400;
line-height: 1.5;
}
.management {
margin-top: 20px;
}
.roleList {
max-height: 300px;
overflow-y: scroll;
}
.tree {
// border: 1px solid #ebeef5;
margin-top: 20px;
}
}
</
style
>
\ No newline at end of file
src/pages/User/user-detail.vue
deleted
100644 → 0
View file @
279d0363
<
template
>
<div
class=
"user-detail"
>
<el-page-header
@
back=
"goBack"
content=
"用户详情页面"
>
</el-page-header>
<el-card
class=
"management"
>
<h2
style=
"margin-bottom: 10px"
>
用户信息
</h2>
<el-descriptions
class=
"margin-top"
:column=
"3"
:size=
"size"
border
>
<el-descriptions-item>
<template
#
label
>
用户姓名
</
template
>
{{ user_info.user_name }}
</el-descriptions-item>
<el-descriptions-item>
<
template
#
label
>
手机号
</
template
>
{{ user_info.user_mobile }}
</el-descriptions-item>
<el-descriptions-item>
<
template
#
label
>
所属组织
</
template
>
{{ user_info.organization }}
</el-descriptions-item>
<el-descriptions-item>
<
template
#
label
>
添加人账号
</
template
>
{{ user_info.create_user_name }}
</el-descriptions-item>
<el-descriptions-item>
<
template
#
label
>
添加时间
</
template
>
{{ user_info.create_time }}
</el-descriptions-item>
<el-descriptions-item>
<
template
#
label
>
最后修改人账号
</
template
>
{{ user_info.update_user_name }}
</el-descriptions-item>
<el-descriptions-item>
<
template
#
label
>
最后修改时间
</
template
>
{{ user_info.update_user_name }}
</el-descriptions-item>
<el-descriptions-item>
<
template
#
label
>
敏感词权限
</
template
>
{{ user_info.is_sensitive_authority == 1 ? "有" : "无" }}
</el-descriptions-item>
</el-descriptions>
<div
class=
"role"
>
角色信息
</div>
<el-table
:data=
"role_list"
border
style=
"width: 100%"
>
<el-table-column
prop=
"role_id"
label=
"ID"
width=
"180"
>
</el-table-column>
<el-table-column
prop=
"role_name"
label=
"角色名称"
>
</el-table-column>
</el-table>
</el-card>
</div>
</template>
<
script
>
import
{
getUser_detail
as
reqGetUser_detail
}
from
"../../service/user"
;
export
default
{
data
()
{
return
{
user_id
:
this
.
$route
.
query
.
userId
,
user_info
:
{},
role_list
:
[]
//角色池
}
},
created
()
{
this
.
getUser_date
()
},
methods
:
{
getUser_date
()
{
reqGetUser_detail
(
this
.
user_id
).
then
((
res
)
=>
{
this
.
user_info
=
res
.
user_info
this
.
role_list
=
res
.
role_list
})
},
goBack
()
{
this
.
$router
.
go
(
-
1
)
}
}
}
</
script
>
<
style
lang=
"less"
scoped
>
.user-detail {
margin: 50px;
.role {
margin: 10px;
font-weight: bold;
}
}
</
style
>
\ No newline at end of file
src/pages/User/userList/index.vue
View file @
52c0c5b0
<
template
>
<
template
>
<layout>
<layout>
<div
class=
"user"
>
<UserList
appId=
"merchant-op"
/>
<el-form
:inline=
"true"
:model=
"pageParams"
class=
"demo-form-inline"
>
<el-form-item
label=
"用户姓名"
>
<el-input
maxlength=
"15"
v-model=
"pageParams.user_name"
placeholder=
"用户姓名"
></el-input>
</el-form-item>
<el-form-item
label=
"用户账号"
>
<el-input
v-model=
"pageParams.user_email"
placeholder=
"用户账号"
></el-input>
</el-form-item>
<el-form-item
label=
"手机号"
>
<el-input
v-model=
"pageParams.user_mobile"
placeholder=
"手机号"
></el-input>
</el-form-item>
<el-form-item
label=
"状态"
>
<el-select
v-model=
"pageParams.user_status"
placeholder=
"状态"
>
<el-option
value=
"1"
label=
"启用"
></el-option>
<el-option
value=
"2"
label=
"禁用"
></el-option>
</el-select>
</el-form-item>
<el-form-item
class=
"func-btn"
>
<el-button
type=
"primary"
@
click=
"getUserList"
>
查询
</el-button>
<el-button
@
click=
"onReset"
>
重置
</el-button>
<el-button
@
click=
"createUser"
:disabled=
"!permission.get('create')"
>
新建用户
</el-button
>
</el-form-item>
</el-form>
<el-table
:data=
"renderUserList"
border
style=
"width: 100%"
>
<el-table-column
prop=
"user_id"
label=
"用户ID"
width=
"70"
>
</el-table-column>
<el-table-column
prop=
"user_name"
label=
"用户姓名"
>
</el-table-column>
<el-table-column
prop=
"user_email"
label=
"用户账号"
>
</el-table-column>
<el-table-column
prop=
"user_status"
label=
"状态"
>
</el-table-column>
<el-table-column
prop=
"user_mobile"
label=
"手机号"
>
</el-table-column>
<el-table-column
prop=
"update_time"
label=
"最后修改日期"
>
</el-table-column>
<el-table-column
prop=
"update_user_name"
label=
"最后修改人账号"
>
</el-table-column>
<el-table-column
fixed=
"right"
label=
"操作"
width=
"140"
>
<template
#
default=
"scope"
>
<el-button
type=
"text"
size=
"small"
@
click=
"checkUser(scope.row)"
>
查看
</el-button
>
<el-button
@
click=
"editUser(scope.row)"
type=
"text"
size=
"small"
:disabled=
"!permission.get('edit')"
>
修改
</el-button
>
<el-button
v-if=
"scope.row.user_status === '启用'"
type=
"text"
size=
"small"
@
click=
"disableUser(scope.row)"
:disabled=
"!permission.get('enable')"
>
禁用
</el-button
>
<el-button
v-if=
"scope.row.user_status === '禁用'"
type=
"text"
size=
"small"
@
click=
"enableUser(scope.row)"
:disabled=
"!permission.get('disable')"
>
启用
</el-button
>
</
template
>
</el-table-column>
</el-table>
<page
:totalNum=
"totalNum"
:pageSize=
"pageParams.size"
@
update=
"updatePage"
/>
</div>
<user-info-modal
:data=
"curUserInfo"
:visable=
"modalVisable.info"
@
cancel=
"cancelModal('info')"
></user-info-modal>
<user-info-edit-modal
:data=
"curUserInfo"
:visable=
"modalVisable.edit"
@
confirm=
"confirmEditModal"
@
cancel=
"cancelModal('edit')"
></user-info-edit-modal>
<user-info-new-modal
:visable=
"modalVisable.new"
@
confirm=
"confirmEditModal"
@
cancel=
"cancelModal('new')"
></user-info-new-modal>
</layout>
</layout>
</
template
>
</
template
>
<
script
>
<
script
>
import
Layout
from
"@/layouts"
;
import
Layout
from
"@/layouts"
;
import
page
from
"@/components/Pagination"
;
import
UserList
from
"@/components/UserList"
;
import
UserInfoModal
from
"./components/UserInfoModal"
;
import
UserInfoEditModal
from
"./components/UserInfoEditModal"
;
import
UserInfoNewModal
from
"./components/UserInfoNewModal"
;
import
{
ElMessage
}
from
"element-plus"
;
import
{
getUserList
as
reqGetUserList
,
getUserDetail
as
reqGetUserDetail
,
editUser
as
reqEditUser
,
createUser
as
reqCreateUser
,
}
from
"@/service/user"
;
export
default
{
export
default
{
components
:
{
components
:
{
Layout
,
Layout
,
page
,
UserList
UserInfoModal
,
}
UserInfoEditModal
,
UserInfoNewModal
,
},
data
()
{
return
{
pageParams
:
{
page
:
1
,
size
:
20
,
user_name
:
""
,
user_email
:
""
,
user_mobile
:
""
,
user_status
:
""
,
},
totalNum
:
0
,
userList
:
[],
curUserInfo
:
{},
modalVisable
:
{
info
:
false
,
edit
:
false
,
new
:
false
,
},
curOperateMode
:
"new"
,
};
},
computed
:
{
permission
()
{
const
modulePermissions
=
this
.
$store
.
getters
.
moduleSubPermissions
(
"user"
)
||
[];
console
.
log
(
"Current page func-permissions:"
,
modulePermissions
);
return
new
Map
(
modulePermissions
.
map
((
ele
)
=>
[
ele
.
name
,
true
]));
},
renderUserList
()
{
const
statusMap
=
new
Map
([
[
1
,
"启用"
],
[
2
,
"禁用"
],
[
3
,
"删除"
],
]);
return
this
.
userList
.
map
((
ele
)
=>
{
ele
.
user_status
=
statusMap
.
get
(
ele
.
user_status
);
return
ele
;
});
},
},
beforeMount
()
{
this
.
getUserList
();
},
methods
:
{
async
getUserList
()
{
const
{
code
,
result
}
=
await
reqGetUserList
(
this
.
pageParams
);
if
(
code
!==
0
)
{
ElMessage
.
error
(
"获取用户列表出错!"
);
return
;
}
const
{
data
,
count
}
=
result
;
this
.
totalNum
=
count
;
this
.
userList
=
data
;
},
async
setCurUserInfo
(
user_id
)
{
const
{
code
,
result
}
=
await
reqGetUserDetail
({
user_id
});
if
(
code
===
0
)
{
this
.
curUserInfo
=
{
...
result
.
user_info
,
roles
:
result
.
role_list
,
};
}
else
{
ElMessage
.
error
(
"获取用户信息出错!"
);
}
},
async
checkUser
(
row
)
{
const
{
user_id
}
=
row
;
await
this
.
setCurUserInfo
(
user_id
);
this
.
openModal
(
"info"
);
},
async
editUser
(
row
)
{
const
{
user_id
}
=
row
;
await
this
.
setCurUserInfo
(
user_id
);
// this.openModal('edit');
this
.
modalVisable
.
edit
=
true
;
this
.
curOperateMode
=
"edit"
;
},
openModal
(
key
)
{
Object
.
keys
(
this
.
modalVisable
).
forEach
((
ele
)
=>
{
this
.
modalVisable
[
ele
]
=
key
===
ele
;
});
},
async
confirmEditModal
(
userInfo
)
{
const
{
user_id
,
user_name
,
user_email
,
is_sensitive_authority
,
user_mobile
,
roles
,
user_status
,
organization
,
}
=
userInfo
;
let
res
=
{};
if
(
this
.
curOperateMode
===
"edit"
)
{
const
editData
=
{
user_id
,
user_name
,
user_email
,
is_sensitive_authority
:
parseInt
(
is_sensitive_authority
),
user_mobile
,
role_id
:
roles
,
user_status
:
parseInt
(
user_status
),
};
res
=
await
reqEditUser
(
editData
);
}
else
if
(
this
.
curOperateMode
===
"new"
)
{
const
newData
=
{
user_name
,
user_email
,
is_sensitive_authority
:
parseInt
(
is_sensitive_authority
),
user_mobile
,
role_id
:
roles
,
user_status
:
parseInt
(
user_status
),
organization
,
};
res
=
await
reqCreateUser
(
newData
);
}
if
(
res
.
code
===
0
)
{
this
.
cancelModal
(
this
.
curOperateMode
);
ElMessage
.
success
(
"更新成功!"
);
this
.
getUserList
();
}
else
{
ElMessage
.
error
(
res
.
reason
);
}
},
cancelModal
(
name
)
{
this
.
modalVisable
[
name
]
=
false
;
},
createUser
()
{
this
.
curOperateMode
=
"new"
;
this
.
openModal
(
"new"
);
},
//重置
onReset
()
{
this
.
pageParams
=
{
page
:
1
,
pageSize
:
20
,
user_name
:
""
,
user_email
:
""
,
user_mobile
:
""
,
user_status
:
""
,
};
this
.
getUserList
();
},
updatePage
({
page
,
pageSize
})
{
page
&&
(
this
.
pageParams
.
page
=
page
);
pageSize
&&
(
this
.
pageParams
.
pageSize
=
pageSize
);
this
.
getUserList
();
},
async
enableUser
(
row
)
{
const
{
user_id
}
=
row
;
const
{
code
,
reason
}
=
await
reqEditUser
({
user_status
:
1
,
user_id
});
if
(
code
===
0
)
{
ElMessage
.
success
(
"启用成功!"
);
this
.
getUserList
();
}
else
{
ElMessage
.
error
(
reason
);
}
},
async
disableUser
(
row
)
{
const
{
user_id
}
=
row
;
const
{
code
,
reason
}
=
await
reqEditUser
({
user_status
:
2
,
user_id
});
if
(
code
===
0
)
{
ElMessage
.
success
(
"禁用成功!"
);
this
.
getUserList
();
}
else
{
ElMessage
.
error
(
reason
);
}
},
},
};
};
</
script
>
</
script
>
<
style
lang=
"less"
scoped
>
<
style
lang=
"less"
scoped
>
...
...
src/pages/Withdrawal/Audit/index.less
0 → 100644
View file @
52c0c5b0
.tab-show {
width: 100%;
height: 100%;
padding: 0px 55px;
background-color: white;
.el-tabs__nav-wrap::after {
background-color: transparent;
}
.el-tabs__header {
margin: 0;
}
}
.goods {
width: 100%;
height: 100%;
padding: 0px 30px;
.search_condition {
display: flex;
flex-wrap: wrap;
align-items: center;
.search_button {
display: flex;
align-items: center;
justify-self: flex-end;
.el-form-item__content {
display: flex;
justify-content: space-around;
}
}
}
.commodity_list {
margin-top: 30px;
}
.pagination {
margin-top: 30px;
}
}
.listShow {
// padding-left: 60px;
padding-left: 120px;
li {
width: 100%;
padding-bottom: 10px;
.list-left {
// display:inline-block;
width: 30%;
// text-align: right;
padding-right: 10px;
}
.list-right {
display:inline-block;
width: 70%;
}
}
}
.text-area {
width: 100%;
padding-left: 120px;
.el-form-item__label {
width: 100%;
text-align: left;
}
}
.dialog-footer {
// display: flex;
// justify-content: center;
// align-items: center;
text-align: center;
}
.cancel {
background-color: #409EFF !important;
color: white;
border: none;
}
.confirm {
background-color: #b8b8b8 !important;
border: none;
}
\ No newline at end of file
src/pages/Withdrawal/Audit/index.vue
0 → 100644
View file @
52c0c5b0
<
template
>
<layout>
<div
class=
"tab-show"
>
<!-- 审核状态 -->
<el-tabs
class=
"tab_list"
@
tab-click=
"handleTabChange"
v-model=
"searchProps.status"
>
<el-tab-pane
label=
"待审核"
:name=
"TABS.pending"
@
tab-click=
"handleTabChange"
></el-tab-pane>
<el-tab-pane
label=
"审核通过"
:name=
"TABS.passed"
@
tab-click=
"handleTabChange"
></el-tab-pane>
<el-tab-pane
label=
"审核驳回"
:name=
"TABS.rejected"
@
tab-click=
"handleTabChange"
></el-tab-pane>
<el-tab-pane
label=
"提现失败"
:name=
"TABS.failed"
@
tab-click=
"handleTabChange"
>
</el-tab-pane>
</el-tabs>
</div>
<!-- 提现失败页 -->
<!--
<auditTab
v-if=
"status_text == 'fourth'"
></auditTab>
-->
<el-card
class=
"goods"
>
<!-- 筛选区 -->
<el-form
inline
class=
"search_condition"
>
<!-- 用户id -->
<el-form-item
label=
"用户id"
>
<el-input
v-model=
"searchProps.user_id"
></el-input>
</el-form-item>
<el-button
type=
"primary"
style=
"margin-left: 30px; margin-bottom: 22px"
@
click=
"findProducts"
>
查询
</el-button
>
</el-form>
<!-- 列表区 -->
<el-table
class=
"goods_list"
:data=
"goodsList"
border
stripe
>
<el-table-column
label=
"提现用户"
prop=
"user_id"
align=
"center"
></el-table-column>
<el-table-column
label=
"所在圈"
prop=
"city_name"
align=
"center"
></el-table-column>
<el-table-column
label=
"提现金额"
prop=
"amount"
align=
"center"
></el-table-column>
<el-table-column
label=
"最近24小时收入"
prop=
"lately_amount"
align=
"center"
></el-table-column>
<el-table-column
label=
"近两天分享增长"
prop=
"lately_share"
align=
"center"
></el-table-column>
<el-table-column
label=
"历史分享增长"
prop=
"history_share"
align=
"center"
></el-table-column>
<el-table-column
label=
"历史分享留存"
prop=
"history_download_keep"
align=
"center"
></el-table-column>
<el-table-column
label=
"申请时间"
prop=
"create_time"
align=
"center"
></el-table-column>
<el-table-column
label=
"状态"
prop=
"status_text"
align=
"center"
>
</el-table-column>
<el-table-column
label=
"审核时间"
prop=
"withdraw_audit_time"
align=
"center"
></el-table-column>
<el-table-column
label=
"审核人"
prop=
"audit_user_name"
align=
"center"
></el-table-column>
<!-- 操作快捷键 -->
<el-table-column
label=
"操作"
align=
"center"
fixed=
"right"
width=
"200"
>
<template
#
default=
"scope"
>
<el-button
type=
"text"
@
click=
"handleDetail('look', scope.row.id)"
v-show=
"searchProps.status !== '3'"
>
查看
</el-button
>
<el-button
type=
"text"
v-show=
"searchProps.status == '0' && isAllowedToAudit"
@
click=
"handleDetail('audit', scope.row.id)"
>
审核
</el-button
>
<el-popconfirm
title=
"确定解冻吗?"
@
confirm=
"handleFinzingFind(scope.row.id)"
>
<template
#
reference
>
<el-button
type=
"text"
v-show=
"searchProps.status == '3' && isAllowedToAudit"
>
解冻
</el-button
>
</
template
>
</el-popconfirm>
<!-- <el-button
type="text"
v-if="searchProps.withdraw_apply_status == '3'"
>重新发起</el-button
> -->
</template>
</el-table-column>
</el-table>
<!-- 页码区 -->
<el-pagination
class=
"pagination"
@
current-change=
"handleCurrentChange"
v-model:currentPage=
"searchProps.page"
:page-size=
"searchProps.page_size"
layout=
"total,prev, pager, next, jumper"
:total=
"searchProps.count"
>
</el-pagination>
</el-card>
</layout>
<!-- 提现申请审核 -->
<!-- Form -->
<el-dialog
title=
"提现申请审核"
:show-close=
"false"
:close-on-click-modal=
"false"
v-model=
"outerVisible"
width=
"50%"
>
<el-form
inline
:model=
"form"
>
<el-form-item
label=
"提现用户"
label-width=
"120px"
>
<span
style=
"display: inline-block; min-width: 200px"
>
{{
dialogData.showData.user_id
}}
</span>
</el-form-item>
<el-button
type=
"primary"
@
click=
"handleBlackList('黑名单')"
v-show=
"dialogData.showMode === 'audit'"
>
黑名单
</el-button
>
<!-- <el-button
@click="handleButtonlist('白名单')"
v-show="dialogData.showMode === 'audit'"
>白名单</el-button
> -->
<ul
class=
"listShow"
>
<li>
<span
class=
"list-left"
>
提现金额 :
</span>
<span
class=
"list-right"
>
{{ dialogData.showData.amount }}
</span>
</li>
<li>
<span
class=
"list-left"
>
最近24小时收入 :
</span
><span
class=
"list-right"
>
{{
dialogData.showData.lately_amount
}}
</span>
</li>
<li>
<span
class=
"list-left"
>
近两天分享增长 :
</span
><span
class=
"list-right"
>
{{
dialogData.showData.lately_share
}}
</span>
</li>
<li>
<span
class=
"list-left"
>
历史分享增长 :
</span
><span
class=
"list-right"
>
{{
dialogData.showData.history_share
}}
</span>
</li>
</ul>
<el-form-item
class=
"text-area"
label=
"奖励明细:"
>
<el-table
:data=
"dialogData.showData.record_list || []"
border
align=
"center"
style=
"width: 100%"
max-height=
"200"
size=
"small"
>
<el-table-column
align=
"center"
prop=
"create_time"
label=
"流水时间"
width=
"120"
>
</el-table-column>
<el-table-column
align=
"center"
prop=
"amount"
label=
"分享用户量"
width=
"120"
>
<
template
#
default=
"scope"
>
<span>
{{
"+"
+
scope
.
row
.
amount
}}
</span>
</
template
>
</el-table-column>
<el-table-column
align=
"center"
prop=
"third_order_desc"
label=
"分享额外奖励x.xx元"
width=
"150"
>
</el-table-column>
</el-table>
</el-form-item>
</el-form>
<
template
#
footer
>
<div
class=
"dialog-footer"
>
<el-button
type=
"primary"
@
click=
"handleAdoptRefuse('通过')"
v-show=
"dialogData.showMode === 'audit'"
>
通过
</el-button
>
<el-button
type=
"danger"
@
click=
"handleAdoptRefuse('拒绝')"
v-show=
"dialogData.showMode === 'audit'"
>
拒绝
</el-button
>
<el-button
@
click=
"outerVisible = false"
>
{{
dialogData
.
showMode
===
"audit"
?
"取消"
:
"返回"
}}
</el-button>
</div>
</
template
>
</el-dialog>
</template>
<
script
>
import
Layout
from
"../layout/index.vue"
;
import
{
getApplyList
,
getBlackList
,
getWithdrawAudit
,
getApplyDetail
,
getFreezingFund
,
getAll_role_list
,
}
from
"../../../service/Withdrawal/withdrawal"
;
import
{
ElMessage
}
from
"element-plus"
;
const
TABS
=
{
pending
:
"0"
,
passed
:
"1"
,
rejected
:
"2"
,
failed
:
"3"
,
};
export
default
{
name
:
"Audit"
,
components
:
{
Layout
},
data
()
{
return
{
goodsList
:
[
// {
// user_id: "对的", //提现用户
// city_name: "北京", //所在圈
// amount: "45", ///提现金额
// lately_amount: "11", //最近24小时收入
// lately_share: "23", //近两天分享增长
// lately_download: "4", //近两天分享下载量
// history_share: "8", //历史分享增长
// history_download: "7", //历史分享下载量
// history_download_keep: "4", //历史分享留存
// create_time: "2021-5-4", //申请时间
// status_text: "待审核", //状态
// withdraw_audit_time: "", //审核时间
// audit_user_name: "我", //审核人
// },
],
// 查询参数
searchProps
:
{
user_id
:
""
,
//用户id
page
:
1
,
count
:
0
,
page_size
:
20
,
//每页条数
status
:
TABS
.
pending
,
//状态
},
// 弹框
dialogData
:
{
showData
:
{},
//弹框展示
showMode
:
"audit"
,
//判断是审核还是查看
},
// 黑名单
// blackList: {
// user_id: "",
// wallet_id: "",
// is_freezing: 0,
// opt_desc: "",
// },
award
:
""
,
//奖励明细
outerVisible
:
false
,
//外层弹框
permissions
:
[],
// constants
TABS
,
};
},
created
()
{
this
.
getApplyList
();
},
methods
:
{
async
getPermissionsAll
()
{
let
{
email
}
=
this
.
$store
.
state
.
userInfo
;
const
res
=
await
getAll_role_list
(
email
);
this
.
permissions
=
res
;
},
// tab切换
handleTabChange
()
{
this
.
searchProps
.
page
=
0
;
this
.
getApplyList
();
},
// 分页
handleCurrentChange
(
e
)
{
this
.
searchProps
.
page
=
e
;
this
.
getApplyList
();
},
// 提现申请审核详情
async
handleDetail
(
showMode
,
id
)
{
try
{
const
res
=
await
getApplyDetail
({
id
});
const
showData
=
res
.
info
||
{};
this
.
dialogData
=
{
...
this
.
dialogData
,
showMode
,
showData
};
this
.
outerVisible
=
true
;
}
catch
(
error
)
{
ElMessage
.
error
(
"请求获取信息失败"
);
}
},
// 二次确认弹框
handleConfirm
(
action
,
params
)
{
const
urlObj
=
{
黑名单
:
getBlackList
,
通过
:
getWithdrawAudit
,
拒绝
:
getWithdrawAudit
,
};
this
.
$confirm
(
`<p>你确定此操作吗</p><p>
${
action
}
</p>`
,
"再次确认"
,
{
confirmButtonText
:
"取消"
,
cancelButtonText
:
"确定"
,
cancelButtonClass
:
"cancel"
,
confirmButtonClass
:
"confirm"
,
closeOnClickModal
:
false
,
dangerouslyUseHTMLString
:
true
,
center
:
true
,
showClose
:
false
,
type
:
"warning"
,
})
.
then
(()
=>
{
this
.
$message
({
type
:
"info"
,
message
:
"已取消操作"
,
});
})
.
catch
(
async
()
=>
{
try
{
const
res
=
await
urlObj
[
action
](
params
);
this
.
getApplyList
();
this
.
outerVisible
=
false
;
this
.
$message
({
type
:
"success"
,
message
:
"操作成功"
,
});
console
.
log
(
res
);
}
catch
(
error
)
{
this
.
$message
({
type
:
"error"
,
message
:
"请求操作失败"
,
});
}
});
},
//获取黑名单
handleBlackList
(
action
)
{
const
{
user_id
,
wallet_id
}
=
this
.
dialogData
.
showData
;
const
params
=
{
user_id
,
wallet_id
,
is_freezing
:
action
===
"黑名单"
?
1
:
0
,
opt_desc
:
""
,
};
this
.
handleConfirm
(
action
,
params
);
},
// 通过 & 拒绝
handleAdoptRefuse
(
action
)
{
const
{
withdraw_apply_id
:
id
}
=
this
.
dialogData
.
showData
;
const
params
=
{
id
,
withdraw_apply_status
:
action
===
"通过"
?
1
:
2
,
};
this
.
handleConfirm
(
action
,
params
);
},
// 获取提现审核列表
async
getApplyList
()
{
const
{
user_id
,
page
,
page_size
,
status
}
=
this
.
searchProps
;
// 整理参数
const
searchProps
=
{
user_id
:
user_id
||
undefined
,
page
,
page_size
,
status
,
};
console
.
log
(
this
.
searchProps
);
try
{
const
res
=
await
getApplyList
(
searchProps
);
if
(
res
.
code
!==
0
)
return
this
.
$message
.
error
(
res
.
reason
);
this
.
goodsList
=
res
.
result
.
list
;
this
.
searchProps
.
count
=
res
.
result
.
count
;
}
catch
(
error
)
{
ElMessage
.
error
(
"请求查询列表失败"
);
}
},
// 查询
findProducts
()
{
this
.
getApplyList
();
},
// 解冻
async
handleFinzingFind
(
id
)
{
try
{
await
getFreezingFund
({
id
});
this
.
getApplyList
();
ElMessage
.
success
(
"解冻成功"
);
}
catch
(
error
)
{
ElMessage
.
error
(
"请求解冻失败"
);
}
},
// 清空
resetDate
()
{
(
this
.
goodsList
=
[]),
// 查询参数
(
this
.
searchProps
=
{
user_id
:
""
,
//用户id
page_size
:
2
,
//页码
status
:
"0"
,
//状态
page
:
1
,
count
:
0
,
//总条数
}),
// 弹框
(
this
.
dialogData
=
{
showData
:
{},
//弹框展示
showMode
:
"audit"
,
//判断是审核还是查看
}),
(
this
.
award
=
""
),
//奖励明细
(
this
.
outerVisible
=
false
)
//外层弹框
},
},
computed
:
{
isAllowedToAudit
()
{
// 用户不存在
if
(
!
this
.
permissions
)
{
return
false
;
}
const
WITHDRAWAL_PERMISSION_ID
=
10
;
const
withdrawlPermission
=
this
.
permissions
.
filter
(
(
item
)
=>
item
.
id
===
WITHDRAWAL_PERMISSION_ID
);
// 无此模块权限
if
(
!
withdrawlPermission
)
{
return
false
;
}
const
AUDIT_PERMSSION_ID
=
14
;
const
auditPermission
=
withdrawlPermission
.
filter
(
(
item
)
=>
item
.
id
===
AUDIT_PERMSSION_ID
);
return
!!
auditPermission
;
},
},
};
</
script
>
<
style
lang=
"less"
src=
"./index.less"
scope
></
style
>
src/pages/Role/add-role.vue
→
src/pages/
Withdrawal/
Role/add-role.vue
View file @
52c0c5b0
...
@@ -67,14 +67,14 @@
...
@@ -67,14 +67,14 @@
</div>
</div>
</template>
</template>
<
script
>
<
script
>
import
page
from
"../components/Pagination"
import
page
from
"../
../../
components/Pagination"
import
roleInfo
from
'./components/roleInfo'
import
roleInfo
from
'./components/roleInfo'
import
{
import
{
getRole_list
as
reqGetRole_list
,
getAdd_role
as
reqGetAdd_role
,
getRole_list
as
reqGetRole_list
,
getAdd_role
as
reqGetAdd_role
,
getAll_role_list
as
reqGetAll_role_list
,
getAll_role_list
as
reqGetAll_role_list
,
getUpdate_role
as
reqGetUpdate_role
,
getUpdate_role
as
reqGetUpdate_role
,
get_role_info
as
reqGet_role_info
get_role_info
as
reqGet_role_info
}
from
"../../service/role"
;
}
from
"../../
../
service/role"
;
import
{
ElMessage
}
from
'element-plus'
import
{
ElMessage
}
from
'element-plus'
export
default
{
export
default
{
name
:
'KeepaddRole'
,
name
:
'KeepaddRole'
,
...
...
src/pages/Role/components/roleInfo.vue
→
src/pages/
Withdrawal/
Role/components/roleInfo.vue
View file @
52c0c5b0
File moved
src/pages/Withdrawal/Role/manage-role.vue
0 → 100644
View file @
52c0c5b0
<
template
>
<layout>
<role-list
appId=
"merchant-op-auditing"
detailPath=
"/op/withdrawal/roleRoleDetail"
></role-list>
</layout>
</
template
>
<
script
>
import
Layout
from
"../layout"
;
import
RoleList
from
"../../../components/Roles/RoleList"
;
export
default
{
name
:
"KeepRoleManagement"
,
components
:
{
Layout
,
RoleList
,
},
};
</
script
>
<
style
lang=
"less"
scoped
></
style
>
src/pages/Withdrawal/Role/role-detail.vue
0 → 100644
View file @
52c0c5b0
<
template
>
<role-detail
appId=
"merchant-op-auditing"
></role-detail>
</
template
>
<
script
>
import
RoleDetail
from
"../../../components/Roles/RoleDetail.vue"
;
export
default
{
components
:
{
RoleDetail
,
},
};
</
script
>
src/pages/User/userList/components/UserInfoEditModal.vue
→
src/pages/
Withdrawal/
User/userList/components/UserInfoEditModal.vue
View file @
52c0c5b0
...
@@ -63,7 +63,7 @@
...
@@ -63,7 +63,7 @@
<
script
>
<
script
>
import
{
ElMessage
}
from
"element-plus"
;
import
{
ElMessage
}
from
"element-plus"
;
import
{
getRole_list
as
reqGetRoles
}
from
'
@
/service/role'
;
import
{
getRole_list
as
reqGetRoles
}
from
'
../../../../..
/service/role'
;
export
default
{
export
default
{
name
:
'UserInfoEditModal'
,
name
:
'UserInfoEditModal'
,
...
...
src/pages/User/userList/components/UserInfoModal.vue
→
src/pages/
Withdrawal/
User/userList/components/UserInfoModal.vue
View file @
52c0c5b0
File moved
src/pages/User/userList/components/UserInfoNewModal.vue
→
src/pages/
Withdrawal/
User/userList/components/UserInfoNewModal.vue
View file @
52c0c5b0
...
@@ -60,7 +60,7 @@
...
@@ -60,7 +60,7 @@
<
script
>
<
script
>
import
{
ElMessage
}
from
"element-plus"
;
import
{
ElMessage
}
from
"element-plus"
;
import
{
getRole_list
as
reqGetRoles
}
from
'
@
/service/role'
;
import
{
getRole_list
as
reqGetRoles
}
from
'
../../../../..
/service/role'
;
export
default
{
export
default
{
name
:
'UserInfoEditModal'
,
name
:
'UserInfoEditModal'
,
...
...
src/pages/Withdrawal/User/userList/index.vue
0 → 100644
View file @
52c0c5b0
<
template
>
<layout>
<user-list
appId=
"merchant-op-auditing"
></user-list>
</layout>
</
template
>
<
script
>
import
UserList
from
"../../../../components/UserList"
;
import
Layout
from
"../../layout"
;
export
default
{
components
:
{
Layout
,
UserList
,
},
};
</
script
>
src/pages/Withdrawal/components/PageHeader/User.vue
0 → 100644
View file @
52c0c5b0
<
template
>
<el-dropdown>
<div
class=
"user-info"
>
<el-avatar
:src=
"userInfo.avatar || DEFAULT_AVATAR"
size=
"small"
></el-avatar>
<span
class=
"user-name"
>
{{
userInfo
.
name
}}
</span>
</div>
<template
#
dropdown
>
<el-dropdown-menu>
<el-dropdown-item>
<i
class=
"el-icon-message"
></i>
{{
userInfo
.
email
}}
</el-dropdown-item>
<el-dropdown-item>
<span><a
class=
"link"
href=
"//pandora.yidian-inc.com/"
>
返回pandora工具平台
</a></span>
</el-dropdown-item>
</el-dropdown-menu>
</
template
>
</el-dropdown>
</template>
<
script
>
import
{
mapState
}
from
'vuex'
import
{
HEADER_CONFIG
}
from
'@/config/pageconfig'
;
export
default
{
computed
:
mapState
({
userInfo
:
state
=>
(
state
.
userInfo
||
{}),
}),
data
()
{
return
{
DEFAULT_AVATAR
:
HEADER_CONFIG
.
miscellaneous
.
defaultAvatar
,
};
},
};
</
script
>
<
style
lang=
"less"
scoped
>
.user-info {
display: flex;
align-items: center;
}
.user-name {
margin-left: 12px;
color: #fff;
}
</
style
>
src/pages/Withdrawal/components/PageHeader/config.js
0 → 100644
View file @
52c0c5b0
const
headerConfig
=
[
{
name
:
"提现审核"
,
path
:
"/op/withdrawal/audit"
},
{
path
:
'/op/withdrawal/roleManageRole'
,
name
:
'角色管理'
},
{
path
:
'/op/withdrawal/user'
,
name
:
'用户管理'
}
];
export
default
headerConfig
;
\ No newline at end of file
src/pages/Withdrawal/components/PageHeader/index.vue
0 → 100644
View file @
52c0c5b0
<
template
>
<div
id=
"pageheader"
>
<div
class=
"line"
></div>
<el-menu
class=
"header-menu"
mode=
"horizontal"
:router=
"true"
background-color=
"#545c64"
text-color=
"#fff"
:default-active=
"activeMenu"
active-text-color=
"#ffd04b"
unique-opened
>
<el-menu-item
v-for=
"item in headerConfig"
:index=
"item.path"
:key=
"item.path"
>
{{
item
.
name
}}
</el-menu-item>
<el-menu-item
key=
"usermenu"
class=
"user-menu"
>
<user></user>
</el-menu-item>
</el-menu>
</div>
</
template
>
<
script
>
import
headerConfig
from
"./config"
;
import
User
from
"./User.vue"
;
export
default
{
name
:
"PageHeader"
,
components
:
{
User
},
data
()
{
return
{
headerConfig
};
},
computed
:
{
activeMenu
()
{
return
this
.
$route
.
path
;
}
},
beforeMount
()
{
},
methods
:
{}
};
</
script
>
<
style
lang=
"less"
>
</
style
>
src/pages/Withdrawal/layout/index.less
0 → 100644
View file @
52c0c5b0
.layout {
display: flex;
flex-direction: column;
height: 100%;
}
.main {
flex: 1;
}
src/pages/Withdrawal/layout/index.vue
0 → 100644
View file @
52c0c5b0
<
template
>
<div
class=
"layout"
>
<!-- 页面公共 header -->
<page-header
class=
"page-header"
></page-header>
<!-- 页面主体部分 -->
<div
class=
"main"
>
<slot></slot>
</div>
</div>
</
template
>
<
script
>
import
PageHeader
from
'../components/PageHeader'
;
export
default
{
components
:
{
PageHeader
},
};
</
script
>
<
style
lang=
"less"
src=
"./index.less"
></
style
>
src/router/Withdrawal/index.js
0 → 100644
View file @
52c0c5b0
// 提现审核
const
withdrawalRoutes
=
[
{
path
:
"/op/withdrawal"
,
redirect
:
"/op/withdrawal/audit"
},
{
path
:
"/op/withdrawal/audit"
,
name
:
"Audit"
,
component
:
()
=>
import
(
/* webpackChunkName: "Withdrawal" */
"@/pages/Withdrawal/Audit"
),
},
//用户管理
{
path
:
"/op/withdrawal/user"
,
name
:
"User"
,
component
:
()
=>
import
(
/* webpackChunkName: "Withdrawal" */
"@/pages/Withdrawal/User/userList"
),
},
//角色管理
{
path
:
"/op/withdrawal/roleAddRole"
,
name
:
"AddRole"
,
component
:
()
=>
import
(
/* webpackChunkName: "Withdrawal" */
"@/pages/Withdrawal/Role/add-role"
),
meta
:
{
requireAuth
:
true
,
keepAlive
:
true
}
},
{
path
:
"/op/withdrawal/roleManageRole"
,
name
:
"ManageRole"
,
component
:
()
=>
import
(
/* webpackChunkName: "Withdrawal" */
"@/pages/Withdrawal/Role/manage-role"
),
meta
:
{
requireAuth
:
true
,
keepAlive
:
true
}
},
{
path
:
"/op/withdrawal/roleRoleDetail"
,
name
:
"RoleDetail"
,
component
:
()
=>
import
(
/* webpackChunkName: "Withdrawal" */
"@/pages/Withdrawal/Role/role-detail"
),
meta
:
{
keepAlive
:
true
}
},
];
export
default
withdrawalRoutes
;
\ No newline at end of file
src/router/index.js
View file @
52c0c5b0
...
@@ -4,13 +4,13 @@ import LifeNo from "../pages/Life-no/index.vue";
...
@@ -4,13 +4,13 @@ import LifeNo from "../pages/Life-no/index.vue";
import
LifeNoDetail
from
"../pages/Life-no/life-no-detail.vue"
;
import
LifeNoDetail
from
"../pages/Life-no/life-no-detail.vue"
;
import
User
from
"../pages/User/userList"
;
import
User
from
"../pages/User/userList"
;
import
UserDetail
from
"../pages/User/user-detail.vue"
;
//
import UserDetail from "../pages/User/user-detail.vue";
import
AddRole
from
"../pages/Role/add-role.vue"
;
//
import AddRole from "../pages/Role/add-role.vue";
import
ManageRole
from
"../pages/Role/manage-role.vue"
;
import
ManageRole
from
"../pages/Role/manage-role.vue"
;
import
RoleDetail
from
"../pages/Role/role-detail.vue"
;
import
RoleDetail
from
"../pages/Role/role-detail.vue"
;
import
goodsRouter
from
"./Goods/index"
;
import
goodsRouter
from
"./Goods/index"
;
import
withdrawalRoutes
from
"./Withdrawal/index"
;
const
routes
=
[
const
routes
=
[
{
{
path
:
"/op/enterprise"
,
path
:
"/op/enterprise"
,
...
@@ -80,28 +80,27 @@ const routes = [
...
@@ -80,28 +80,27 @@ const routes = [
name
:
"/op/User"
,
name
:
"/op/User"
,
component
:
User
component
:
User
},
},
{
//
{
path
:
"/op/userDetail"
,
//
path: "/op/userDetail",
name
:
"UserDetail"
,
//
name: "UserDetail",
component
:
UserDetail
//
component: UserDetail
},
//
},
//角色管理
//角色管理
{
//
{
path
:
"/op/roleAddRole"
,
//
path: "/op/roleAddRole",
name
:
"AddRole"
,
//
name: "AddRole",
component
:
AddRole
,
//
component: AddRole,
meta
:
{
//
meta: {
requireAuth
:
true
,
//
requireAuth: true,
keepAlive
:
true
//
keepAlive: true
}
//
}
},
//
},
{
{
path
:
"/op/roleManageRole"
,
path
:
"/op/roleManageRole"
,
name
:
"ManageRole"
,
name
:
"ManageRole"
,
component
:
ManageRole
,
component
:
ManageRole
,
meta
:
{
meta
:
{
requireAuth
:
true
,
requireAuth
:
true
keepAlive
:
true
}
}
},
},
{
{
...
@@ -113,7 +112,9 @@ const routes = [
...
@@ -113,7 +112,9 @@ const routes = [
}
}
},
},
// 商品管理路由
// 商品管理路由
...
goodsRouter
...
goodsRouter
,
// 钱包审核
...
withdrawalRoutes
];
];
console
.
log
(
routes
);
console
.
log
(
routes
);
...
...
src/service/Withdrawal/common.js
0 → 100644
View file @
52c0c5b0
export
const
defaultParams
=
{
appid
:
"merchant-op-auditing"
}
src/service/Withdrawal/withdrawal.js
0 → 100644
View file @
52c0c5b0
import
axios
from
"@/utils/request"
;
import
{
defaultParams
}
from
"./common"
;
const
getParams
=
(
p
=
{})
=>
{
return
{
...
defaultParams
,
...
p
};
};
// 获取提现审核列表
export
async
function
getApplyList
(
params
)
{
const
res
=
await
axios
.
get
(
"/api/v1/get_withdrawal_apply_list"
,
{
params
:
getParams
(
params
)});
return
res
;
}
// 黑名单,冻结用户
export
async
function
getBlackList
(
params
)
{
const
res
=
await
axios
.
post
(
"/api/v1/get_withdrawal_black_list"
,
getParams
(
params
));
return
res
;
}
// 获取订单审核--通过,拒绝
export
async
function
getWithdrawAudit
(
params
)
{
const
res
=
await
axios
.
post
(
"/api/v1/get_withdraw_audit"
,
getParams
(
params
));
return
res
;
}
// 获取提现失败冻结
export
async
function
getFreezingFund
(
params
)
{
const
res
=
await
axios
.
post
(
"/api/v1/get_freezing_fund"
,
getParams
(
params
));
return
res
;
}
// 获取提现审核详情
export
async
function
getApplyDetail
(
params
)
{
const
res
=
await
axios
.
get
(
"/api/v1/get_apply_detail"
,
{
params
:
getParams
(
params
)
});
return
res
;
}
//权限列表
export
async
function
getAll_role_list
(
user_email
)
{
const
res
=
await
axios
.
post
(
"/api/v1/merchant/authority/get_role_list?appid=merchant-op-auditing"
,
{
user_email
}
);
return
res
.
permissions
;
}
src/service/role.js
View file @
52c0c5b0
import
axios
from
'../utils/request'
;
import
axios
from
'../utils/request'
;
// import qs from 'qs';
// import qs from 'qs';
//角色列表
//角色列表
export
async
function
getRole_list
(
parmasRole_list
)
{
export
async
function
getRole_list
(
parmasRole_list
,
appid
)
{
const
res
=
await
axios
.
post
(
"/api/v1/merchant/authority/role_list"
,
parmasRole_list
)
const
opts
=
{
return
res
;
method
:
"post"
,
url
:
"/api/v1/merchant/authority/role_list"
,
params
:
{
appid
},
data
:
parmasRole_list
};
// const res = await axios.post("/api/v1/merchant/authority/role_list", parmasRole_list)
// return res;
return
await
axios
(
opts
);
}
}
//添加角色
//添加角色
export
async
function
getAdd_role
(
parmasAdd_role
)
{
export
async
function
getAdd_role
(
parmasAdd_role
,
appid
)
{
const
res
=
await
axios
.
post
(
"/api/v1/merchant/authority/add_role"
,
parmasAdd_role
)
const
opts
=
{
return
res
;
method
:
"post"
,
url
:
"/api/v1/merchant/authority/add_role"
,
params
:
{
appid
},
data
:
parmasAdd_role
};
return
await
axios
(
opts
);
// const res = await axios.post("/api/v1/merchant/authority/add_role", parmasAdd_role)
// return res;
}
}
//角色编辑
//角色编辑
export
async
function
getUpdate_role
(
parmasUpdate_role
)
{
export
async
function
getUpdate_role
(
parmasUpdate_role
,
appid
)
{
const
res
=
await
axios
.
post
(
"/api/v1/merchant/authority/update_role"
,
parmasUpdate_role
)
const
opts
=
{
return
res
;
method
:
"post"
,
url
:
"/api/v1/merchant/authority/update_role"
,
params
:
{
appid
},
data
:
parmasUpdate_role
};
return
await
axios
(
opts
);
// const res = await axios.post("/api/v1/merchant/authority/update_role", parmasUpdate_role)
// return res;
}
}
//角色详情
//角色详情
export
async
function
get_role_info
(
role_id
)
{
export
async
function
get_role_info
(
role_id
,
appid
)
{
const
res
=
await
axios
.
post
(
"/api/v1/merchant/authority/get_role_info"
,
{
const
opts
=
{
role_id
method
:
"post"
,
})
url
:
"/api/v1/merchant/authority/get_role_info"
,
return
res
.
result
;
params
:
{
appid
},
data
:
{
role_id
}
};
return
await
axios
(
opts
);
// const res = await axios.post("/api/v1/merchant/authority/get_role_info", {
// role_id
// })
// return res.result;
}
}
//角色删除
//角色删除
export
async
function
getDelete_role
(
role_id
)
{
export
async
function
getDelete_role
(
role_id
,
appid
)
{
const
res
=
await
axios
.
post
(
"/api/v1/merchant/authority/delete_role"
,
{
const
opts
=
{
role_id
method
:
"post"
,
})
url
:
"/api/v1/merchant/authority/delete_role"
,
return
res
;
params
:
{
appid
},
data
:
{
role_id
}
};
return
await
axios
(
opts
);
// const res = await axios.post("/api/v1/merchant/authority/delete_role", {
// role_id
// })
// return res;
}
}
//权限列表
//权限列表
export
async
function
getAll_role_list
(
user_email
)
{
export
async
function
getAll_role_list
(
user_email
,
appid
)
{
const
res
=
await
axios
.
post
(
"/api/v1/merchant/authority/get_role_list"
,
{
const
opts
=
{
user_email
method
:
"post"
,
})
url
:
"/api/v1/merchant/authority/get_role_list"
,
return
res
.
permissions
;
params
:
{
appid
},
data
:
{
user_email
}
};
return
await
axios
(
opts
);
// const res = await axios.post("/api/v1/merchant/authority/get_role_list", {
// user_email
// })
// return res.permissions;
}
}
src/service/user.js
View file @
52c0c5b0
...
@@ -24,17 +24,32 @@ export async function getUserDetail (params) {
...
@@ -24,17 +24,32 @@ export async function getUserDetail (params) {
return
await
axios
.
get
(
"/api/v1/users/detail"
,
{
params
});
return
await
axios
.
get
(
"/api/v1/users/detail"
,
{
params
});
}
}
export
async
function
editUser
(
data
)
{
export
async
function
editUser
(
data
,
appid
)
{
return
await
axios
.
post
(
"/api/v1/users/edit"
,
data
);
const
opts
=
{
method
:
"post"
,
url
:
"/api/v1/users/edit"
,
params
:
{
appid
},
data
:
data
};
return
await
axios
(
opts
);
// return await axios.post("/api/v1/users/edit", data);
}
}
export
async
function
createUser
(
data
)
{
export
async
function
createUser
(
data
,
appid
)
{
return
await
axios
.
post
(
"/api/v1/users/new"
,
data
);
const
opts
=
{
method
:
"post"
,
url
:
"/api/v1/users/new"
,
params
:
{
appid
},
data
:
data
};
return
await
axios
(
opts
);
// return await axios.post("/api/v1/users/new", data);
}
}
//用户详情
//用户详情
export
async
function
getUser_detail
(
user_id
)
{
//
export async function getUser_detail (user_id) {
const
res
=
await
axios
.
post
(
`/api/v1/merchant/authority/get_user_info`
,
{
//
const res = await axios.post(`/api/v1/merchant/authority/get_user_info`, {
user_id
//
user_id
})
//
})
return
res
.
result
;
//
return res.result;
}
//
}
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