Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
E
exhibition_backstage
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
龙菲
exhibition_backstage
Commits
cf226cf6
提交
cf226cf6
authored
9月 22, 2022
作者:
龙菲
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
角色管理
上级
3e183f69
全部展开
隐藏空白字符变更
内嵌
并排
正在显示
6 个修改的文件
包含
136 行增加
和
77 行删除
+136
-77
user.js
src/api/user.js
+51
-0
user.js
src/store/modules/user.js
+21
-3
config.js
src/views/display/config.js
+1
-0
InfoEditDialog.vue
src/views/role/components/InfoEditDialog.vue
+45
-70
InfoEditDialog.vue
src/views/user/components/InfoEditDialog.vue
+18
-4
index.vue
src/views/user/index.vue
+0
-0
没有找到文件。
src/api/user.js
浏览文件 @
cf226cf6
...
@@ -88,6 +88,16 @@ export function upadateUser(data) {
...
@@ -88,6 +88,16 @@ export function upadateUser(data) {
})
})
}
}
// 删除用户
export
function
deleteUser
(
data
)
{
return
request
({
url
:
'/sys/user'
,
method
:
'delete'
,
data
})
}
// 以用户行为统计排序分页查询资源
// 以用户行为统计排序分页查询资源
export
function
getListByPageSort
(
data
)
{
export
function
getListByPageSort
(
data
)
{
return
request
({
return
request
({
...
@@ -106,3 +116,44 @@ export function getBarMap(params) {
...
@@ -106,3 +116,44 @@ export function getBarMap(params) {
})
})
}
}
// 增加角色
export
function
addRole
(
data
)
{
return
request
({
url
:
'/sys/role'
,
method
:
'post'
,
data
})
}
// 修改角色
export
function
upadateRole
(
data
)
{
return
request
({
url
:
'sys/role'
,
method
:
'put'
,
data
})
}
// 删除角色
export
function
deleteRole
(
id
)
{
return
request
({
url
:
'/sys/role/'
+
id
,
method
:
'delete'
,
})
}
// 获取所有目录菜单树
export
function
getPermissionTreeAll
(
params
)
{
return
request
({
url
:
'/sys/permission/tree/all'
,
method
:
'get'
,
params
})
}
export
function
getPermissionById
(
id
)
{
return
request
({
url
:
`/sys/permission/
${
id
}
`
,
method
:
'get'
,
})
}
src/store/modules/user.js
浏览文件 @
cf226cf6
import
{
import
{
login
,
login
,
logout
,
logout
,
getMenu
getMenu
,
getPermissionTreeAll
}
from
'@/api/user'
}
from
'@/api/user'
import
{
import
{
getToken
,
getToken
,
...
@@ -25,6 +26,7 @@ const getDefaultState = () => {
...
@@ -25,6 +26,7 @@ const getDefaultState = () => {
menu
:
getLocalMenu
(),
menu
:
getLocalMenu
(),
name
:
''
,
name
:
''
,
avatar
:
''
,
avatar
:
''
,
permissionTree
:
[]
}
}
}
}
...
@@ -48,7 +50,10 @@ const mutations = {
...
@@ -48,7 +50,10 @@ const mutations = {
},
},
SET_MENU
:
(
state
,
menu
)
=>
{
SET_MENU
:
(
state
,
menu
)
=>
{
state
.
menu
=
menu
state
.
menu
=
menu
}
},
SET_PERMISSION_TREE_ALL
:
(
state
,
permissionTree
)
=>
{
state
.
permissionTree
=
permissionTree
},
}
}
const
actions
=
{
const
actions
=
{
...
@@ -143,7 +148,7 @@ const actions = {
...
@@ -143,7 +148,7 @@ const actions = {
}
}
return
obj
return
obj
}
}
commit
(
'SET_MENU'
,
menuObj
)
commit
(
'SET_MENU'
,
menuObj
)
setLocalMenu
(
menuObj
)
setLocalMenu
(
menuObj
)
resolve
()
resolve
()
...
@@ -153,6 +158,19 @@ const actions = {
...
@@ -153,6 +158,19 @@ const actions = {
})
})
},
},
// 获取权限树所有
getPermissionTreeAll
({
commit
})
{
return
new
Promise
(
resolve
=>
{
getPermissionTreeAll
().
then
(
res
=>
{
commit
(
'SET_PERMISSION_TREE_ALL'
,
res
.
data
)
resolve
(
res
.
data
)
}).
catch
(
err
=>
{
reject
(
err
)
})
})
},
}
}
...
...
src/views/display/config.js
浏览文件 @
cf226cf6
...
@@ -8,6 +8,7 @@ export const title = [{
...
@@ -8,6 +8,7 @@ export const title = [{
prop
:
"keyword"
,
prop
:
"keyword"
,
label
:
"关键词"
,
label
:
"关键词"
,
columnAlign
:
'center'
,
columnAlign
:
'center'
,
showOverFlowToolTip
:
true
,
},
},
{
{
prop
:
"type"
,
prop
:
"type"
,
...
...
src/views/role/components/InfoEditDialog.vue
浏览文件 @
cf226cf6
...
@@ -13,51 +13,16 @@
...
@@ -13,51 +13,16 @@
</div>
</div>
<div
class=
"dialog-content"
>
<div
class=
"dialog-content"
>
<el-form
:model=
"dialogForm"
class=
"basic-info"
>
<el-form
:model=
"dialogForm"
class=
"basic-info"
>
<el-form-item
label=
"名称"
:label-width=
"formLabelWidth"
>
<el-form-item
label=
"
角色
名称"
:label-width=
"formLabelWidth"
>
<el-input
<el-input
v-model=
"dialogForm.name"
v-model=
"dialogForm.name"
autocomplete=
"off"
autocomplete=
"off"
placeholder=
"请输入
文献
名称"
placeholder=
"请输入
角色
名称"
></el-input>
></el-input>
</el-form-item>
</el-form-item>
<el-form-item
label=
"作者"
:label-width=
"formLabelWidth"
>
<el-input
v-model=
"dialogForm.authors"
autocomplete=
"off"
placeholder=
"请输入作者"
></el-input>
</el-form-item>
<el-form-item
label=
"文献来源"
:label-width=
"formLabelWidth"
>
<el-input
v-model=
"dialogForm.source"
autocomplete=
"off"
placeholder=
"请输入文献来源"
></el-input>
</el-form-item>
<el-form-item
label=
"出版/发布日期"
:label-width=
"formLabelWidth"
>
<el-date-picker
style=
"width: 100%"
v-model=
"dialogForm.date"
type=
"date"
placeholder=
"请选择出版/发布日期"
value-format=
"yyyy-MM-dd"
>
</el-date-picker>
</el-form-item>
<el-form-item
label=
"状态"
:label-width=
"formLabelWidth"
>
<el-form-item
label=
"状态"
:label-width=
"formLabelWidth"
>
<el-switch
v-model=
"status"
>
</el-switch>
<el-switch
v-model=
"status"
>
</el-switch>
</el-form-item>
</el-form-item>
<el-form-item
label=
"文件"
:label-width=
"formLabelWidth"
>
<ManualUploader
:files=
"files"
:fileLimit=
"1"
:fileSize=
"50"
listType=
"text"
:fileType=
"['pdf']"
ref=
"pdf"
/>
</el-form-item>
<el-form-item
label=
"备注"
:label-width=
"formLabelWidth"
>
<el-form-item
label=
"备注"
:label-width=
"formLabelWidth"
>
<el-input
<el-input
type=
"textarea"
type=
"textarea"
...
@@ -68,6 +33,15 @@
...
@@ -68,6 +33,15 @@
>
>
</el-input>
</el-input>
</el-form-item>
</el-form-item>
<el-form-item
label=
"权限"
:label-width=
"formLabelWidth"
>
<el-tree
:data=
"permissionTree"
show-checkbox
:props=
"props"
@
check-change=
"handleCheckChange"
>
</el-tree>
</el-form-item>
</el-form>
</el-form>
</div>
</div>
<div
class=
"dialog-footer"
>
<div
class=
"dialog-footer"
>
...
@@ -80,15 +54,9 @@
...
@@ -80,15 +54,9 @@
</
template
>
</
template
>
<
script
>
<
script
>
import
{
addLiterature
,
editLiterature
}
from
"@/api/literature"
;
import
{
addRole
,
editRole
,
getPermissionTreeAll
,
getPermissionById
}
from
"@/api/user"
;
import
ManualUploader
from
"@/components/Uploader/ManualUploader.vue"
;
import
{
mapGetters
}
from
"vuex"
;
import
{
uploadFile
}
from
"@/utils/file"
;
export
default
{
export
default
{
name
:
"InfoEditDialog"
,
name
:
"InfoEditDialog"
,
components
:
{
ManualUploader
,
},
props
:
{
props
:
{
visible
:
{
visible
:
{
type
:
Boolean
,
type
:
Boolean
,
...
@@ -100,29 +68,27 @@ export default {
...
@@ -100,29 +68,27 @@ export default {
},
},
},
},
computed
:
{
computed
:
{
...
mapGetters
([
"userInfo"
]),
title
()
{
title
()
{
if
(
this
.
dialogForm
.
literatureI
d
)
{
if
(
this
.
dialogForm
.
i
d
)
{
return
"修改
文献
"
;
return
"修改
角色信息
"
;
}
else
{
}
else
{
return
"添加
文献
"
;
return
"添加
新角色
"
;
}
}
},
},
},
},
watch
:
{
watch
:
{
form
:
{
form
:
{
handler
:
function
(
value
)
{
handler
:
function
(
value
)
{
debugger
let
that
=
this
;
let
that
=
this
;
that
.
dialogForm
=
JSON
.
parse
(
JSON
.
stringify
(
value
));
that
.
dialogForm
=
JSON
.
parse
(
JSON
.
stringify
(
value
));
// 编辑状态
// 编辑状态
if
(
that
.
dialogForm
.
literatureI
d
)
{
if
(
that
.
dialogForm
.
i
d
)
{
// 回填状态
// 回填状态
that
.
status
=
Boolean
(
Number
(
that
.
dialogForm
.
status
));
that
.
status
=
Boolean
(
Number
(
that
.
dialogForm
.
status
));
// 回填文件
if
(
that
.
dialogForm
.
files
)
{
// let perm = await getPermissionById
that
.
files
=
that
.
dialogForm
.
files
;
that
.
getPer
()
}
}
}
},
},
immediate
:
true
,
immediate
:
true
,
...
@@ -143,8 +109,21 @@ export default {
...
@@ -143,8 +109,21 @@ export default {
status
:
false
,
status
:
false
,
files
:
[],
//文献文件
files
:
[],
//文献文件
dialogVisible
:
false
,
dialogVisible
:
false
,
permissionTree
:
[],
props
:
{
value
:
"id"
,
label
:
"title"
,
children
:
"children"
,
checkStrictly
:
true
,
},
};
};
},
},
async
created
()
{
let
res
=
await
getPermissionTreeAll
();
this
.
permissionTree
=
res
.
data
console
.
log
(
this
.
permissionTree
);
// console.log(res);
},
methods
:
{
methods
:
{
handlePreview
({
type
,
file
})
{
handlePreview
({
type
,
file
})
{
console
.
log
(
type
,
file
);
console
.
log
(
type
,
file
);
...
@@ -160,30 +139,16 @@ export default {
...
@@ -160,30 +139,16 @@ export default {
async
handleSubmit
()
{
async
handleSubmit
()
{
let
params
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
dialogForm
));
let
params
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
dialogForm
));
// 回填文件
let
file
=
this
.
$refs
.
pdf
.
getFiles
();
let
formData
=
new
FormData
();
if
(
file
[
0
].
status
==
"ready"
)
{
formData
.
append
(
"files"
,
file
[
0
].
raw
);
let
upLoadRes
=
await
uploadFile
(
formData
);
if
(
upLoadRes
.
code
==
0
)
{
params
.
pdfFile
=
upLoadRes
.
data
[
0
].
fileId
;
}
else
{
this
.
$message
.
error
(
"上传失败!:"
+
upLoadRes
.
data
.
msg
);
}
}
else
if
(
file
[
0
].
status
==
"success"
)
{
params
.
pdfFile
=
file
[
0
].
fileId
;
}
// 修改状态
// 修改状态
params
.
status
=
this
.
status
?
1
:
0
;
params
.
status
=
this
.
status
?
1
:
0
;
if
(
params
.
literatureId
)
{
if
(
params
.
literatureId
)
{
let
res
=
await
edit
Literatur
e
(
params
);
let
res
=
await
edit
Rol
e
(
params
);
if
(
res
.
code
==
0
)
{
if
(
res
.
code
==
0
)
{
this
.
$message
.
success
(
"修改成功!"
);
this
.
$message
.
success
(
"修改成功!"
);
this
.
reload
();
this
.
reload
();
}
}
}
else
{
}
else
{
let
res
=
await
add
Literatur
e
(
params
);
let
res
=
await
add
Rol
e
(
params
);
if
(
res
.
code
==
0
)
{
if
(
res
.
code
==
0
)
{
this
.
$message
.
success
(
"添加成功!"
);
this
.
$message
.
success
(
"添加成功!"
);
this
.
reload
();
this
.
reload
();
...
@@ -204,6 +169,16 @@ export default {
...
@@ -204,6 +169,16 @@ export default {
})
})
.
catch
((
_
)
=>
{});
.
catch
((
_
)
=>
{});
},
},
handleCheckChange
(
data
,
checked
,
indeterminate
)
{
console
.
log
(
data
,
checked
,
indeterminate
);
},
async
getPer
(){
let
res
=
await
getPermissionById
(
this
.
dialogForm
.
id
)
debugger
console
.
log
(
res
);
}
},
},
};
};
</
script
>
</
script
>
...
...
src/views/user/components/InfoEditDialog.vue
浏览文件 @
cf226cf6
...
@@ -38,6 +38,14 @@
...
@@ -38,6 +38,14 @@
clearable
clearable
></el-input>
></el-input>
</el-form-item>
</el-form-item>
<el-form-item
label=
"昵称"
:label-width=
"formLabelWidth"
>
<el-input
v-model=
"dialogForm.nickName"
autocomplete=
"off"
placeholder=
"请输入昵称"
clearable
></el-input>
</el-form-item>
<el-form-item
label=
"真实姓名"
:label-width=
"formLabelWidth"
>
<el-form-item
label=
"真实姓名"
:label-width=
"formLabelWidth"
>
<el-input
<el-input
v-model=
"dialogForm.realName"
v-model=
"dialogForm.realName"
...
@@ -49,7 +57,7 @@
...
@@ -49,7 +57,7 @@
<el-form-item
label=
"所属部门"
:label-width=
"formLabelWidth"
>
<el-form-item
label=
"所属部门"
:label-width=
"formLabelWidth"
>
<el-cascader
<el-cascader
style=
"width: 100%"
style=
"width: 100%"
v-model=
"dialogForm.dept
No
"
v-model=
"dialogForm.dept
Id
"
:options=
"orgTreeData"
:options=
"orgTreeData"
:props=
"optionProps"
:props=
"optionProps"
placeholder=
"请选择所属部门"
placeholder=
"请选择所属部门"
...
@@ -113,6 +121,8 @@ export default {
...
@@ -113,6 +121,8 @@ export default {
if
(
that
.
dialogForm
.
id
)
{
if
(
that
.
dialogForm
.
id
)
{
// 回填状态
// 回填状态
that
.
status
=
Boolean
(
Number
(
that
.
dialogForm
.
status
));
that
.
status
=
Boolean
(
Number
(
that
.
dialogForm
.
status
));
// 回填部门
that
.
dialogForm
.
deptId
=
[
that
.
dialogForm
.
deptId
];
}
}
},
},
immediate
:
true
,
immediate
:
true
,
...
@@ -132,7 +142,7 @@ export default {
...
@@ -132,7 +142,7 @@ export default {
data
()
{
data
()
{
var
validatePass
=
(
rule
,
value
,
callback
)
=>
{
var
validatePass
=
(
rule
,
value
,
callback
)
=>
{
if
(
value
===
""
)
{
if
(
value
===
""
)
{
callback
(
new
Error
(
"请输入密码"
));
callback
(
new
Error
(
"请输入密码"
));
}
else
{
}
else
{
var
pattern
=
var
pattern
=
/^
(?![
a-zA-Z
]
+$
)(?![
A-Z0-9
]
+$
)(?![
A-Z
\\
W_!@#$%^&*`~()-+=
]
+$
)(?![
a-z0-9
]
+$
)(?![
a-z
\\
W_!@#$%^&*`~()-+=
]
+$
)(?![
0-9
\\
W_!@#$%^&*`~()-+=
]
+$
)[
a-zA-Z0-9
\\
W_!@#$%^&*`~()-+=
]{8,30}
$/
;
/^
(?![
a-zA-Z
]
+$
)(?![
A-Z0-9
]
+$
)(?![
A-Z
\\
W_!@#$%^&*`~()-+=
]
+$
)(?![
a-z0-9
]
+$
)(?![
a-z
\\
W_!@#$%^&*`~()-+=
]
+$
)(?![
0-9
\\
W_!@#$%^&*`~()-+=
]
+$
)[
a-zA-Z0-9
\\
W_!@#$%^&*`~()-+=
]{8,30}
$/
;
...
@@ -142,7 +152,7 @@ export default {
...
@@ -142,7 +152,7 @@ export default {
"密码长度至少8位,至少含数字,大写字母,小写字母,特殊符其中三种"
"密码长度至少8位,至少含数字,大写字母,小写字母,特殊符其中三种"
)
)
);
);
}
}
callback
();
callback
();
}
}
};
};
...
@@ -247,7 +257,11 @@ export default {
...
@@ -247,7 +257,11 @@ export default {
// 修改状态
// 修改状态
params
.
status
=
this
.
status
?
1
:
0
;
params
.
status
=
this
.
status
?
1
:
0
;
console
.
log
(
22
,
params
);
console
.
log
(
22
,
params
);
return
;
// return;
// 处理馆藏单位
if
(
params
.
deptId
instanceof
Array
)
{
params
.
deptId
=
params
.
deptId
[
params
.
deptId
.
length
-
1
];
}
if
(
params
.
id
)
{
if
(
params
.
id
)
{
let
res
=
await
upadateUser
(
params
);
let
res
=
await
upadateUser
(
params
);
if
(
res
.
code
==
0
)
{
if
(
res
.
code
==
0
)
{
...
...
src/views/user/index.vue
浏览文件 @
cf226cf6
差异被折叠。
点击展开。
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论