Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
C
cms-admin
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
EzijingWeb
cms-admin
Commits
e3376ebb
提交
e3376ebb
authored
5月 14, 2021
作者:
pengxiaohui
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
设置模块接口调试
上级
1b59626c
隐藏空白字符变更
内嵌
并排
正在显示
4 个修改的文件
包含
285 行增加
和
126 行删除
+285
-126
settings.js
src/api/settings.js
+16
-3
index.vue
src/pages/settings/project/index.vue
+97
-34
index.vue
src/pages/settings/role/index.vue
+2
-2
index.vue
src/pages/settings/staff/index.vue
+170
-87
没有找到文件。
src/api/settings.js
浏览文件 @
e3376ebb
...
...
@@ -51,10 +51,10 @@ export function createStaff(data) {
return
httpRequest
.
post
(
'/api/cms/admin/v1/user/create'
,
data
)
}
/**
* 更新
角色
* 更新
员工
*/
export
function
updateStaff
(
data
)
{
return
httpRequest
.
put
(
`/api/cms/admin/v1/user/
${
data
.
type
_id
}
/update`
,
data
)
return
httpRequest
.
put
(
`/api/cms/admin/v1/user/
${
data
.
sso
_id
}
/update`
,
data
)
}
/* ------------------------------------项目管理------------------------------------ */
...
...
@@ -77,8 +77,15 @@ export function createProject(data) {
* 更新项目
*/
export
function
updateProject
(
data
)
{
return
httpRequest
.
put
(
`/api/cms/admin/v1/project/
${
data
.
type_id
}
/update`
,
data
)
return
httpRequest
.
put
(
`/api/cms/admin/v1/project/
${
data
.
project_id
}
/update`
,
data
)
}
/**
* 删除项目
*/
export
function
deleteProject
(
data
)
{
return
httpRequest
.
delete
(
`/api/cms/admin/v1/project/
${
data
.
project_id
}
/delete`
,
data
)
}
/* ------------------------------------类型管理------------------------------------ */
/**
* 获取类型列表
...
...
@@ -99,3 +106,9 @@ export function createType(data) {
export
function
updateType
(
data
)
{
return
httpRequest
.
put
(
`/api/cms/admin/v1/type/
${
data
.
type_id
}
/update`
,
data
)
}
/**
* 获取所有的内容分类
*/
export
function
getContentTypesList
(
params
)
{
return
httpRequest
.
get
(
'/api/cms/admin/v1/type/content-types'
,
{
params
})
}
src/pages/settings/project/index.vue
浏览文件 @
e3376ebb
...
...
@@ -8,7 +8,7 @@
<
template
v-slot:project_id=
"scope"
><span
class=
"details-handle"
@
click=
"handleDetails(scope.row)"
>
{{
scope
.
row
.
id
}}
</span></
template
>
<!-- 状态 -->
<
template
v-slot:status=
"{ row }"
>
<el-switch
v-model=
"row.status"
:active-value=
"1"
:inactive-value=
"0"
active-text=
"启用"
inactive-text=
"停用"
></el-switch>
<el-switch
v-model=
"row.status"
:active-value=
"1"
:inactive-value=
"0"
active-text=
"启用"
inactive-text=
"停用"
@
change=
"statusChange(row)"
></el-switch>
</
template
>
</table-list>
<el-drawer
ref=
"drawer"
:visible
.
sync=
"drawerVisible"
size=
"490px"
@
close=
"handleDrawerClose"
>
...
...
@@ -28,7 +28,7 @@
</el-form-item>
<el-form-item
label=
"项目类型"
prop=
"type_id"
>
<el-select
v-model=
"form.type_id"
placeholder=
"请选择项目类型"
size=
"small"
style=
"width:100%;"
>
<el-option
:label=
"item.
label
"
:value=
"item.id"
v-for=
"item in projectTypeList"
:key=
"item.id"
/>
<el-option
:label=
"item.
name
"
:value=
"item.id"
v-for=
"item in projectTypeList"
:key=
"item.id"
/>
</el-select>
</el-form-item>
<el-form-item
label=
"项目网址"
prop=
"project_uri"
>
...
...
@@ -38,7 +38,7 @@
<el-checkbox
:indeterminate=
"adType.isIndeterminate"
v-model=
"adType.checkAll"
@
change=
"val => handleCheckAllChange(val, 'adType')"
>
全选
</el-checkbox>
<div
style=
"margin: 2px 0;"
></div>
<el-checkbox-group
v-model=
"form.adType"
@
change=
"val => handleCheckedChange(val, 'adType')"
>
<el-checkbox
v-for=
"item in
t
ypeList"
:label=
"item.id"
:key=
"item.id"
>
{{item.name}}
</el-checkbox>
<el-checkbox
v-for=
"item in
adT
ypeList"
:label=
"item.id"
:key=
"item.id"
>
{{item.name}}
</el-checkbox>
</el-checkbox-group>
</el-form-item>
<el-form-item
label=
"文章类型"
style=
"margin-bottom:0;"
>
...
...
@@ -66,7 +66,7 @@
</template>
<
script
>
import
TableList
from
'@/components/TableList'
import
{
getProjectList
,
crea
teProject
}
from
'@/api/settings'
import
{
getProjectList
,
getTypeList
,
getContentTypesList
,
createProject
,
updateProject
,
dele
teProject
}
from
'@/api/settings'
const
defaultForm
=
{
name
:
''
,
short_name
:
''
,
...
...
@@ -89,9 +89,6 @@ export default {
{
id
:
'1'
,
name
:
'启用'
},
{
id
:
'0'
,
name
:
'停用'
}
],
projectTypeList
:
[
{
id
:
'111'
,
label
:
'学位教育'
}
],
selectedItem
:
{},
drawerVisible
:
false
,
drawerType
:
''
,
...
...
@@ -102,21 +99,10 @@ export default {
type_id
:
{
required
:
true
,
message
:
'请输入项目类型'
,
trigger
:
'blur'
},
project_uri
:
{
required
:
true
,
message
:
'请输入项目网址'
,
trigger
:
'blur'
}
},
adTypeList
:
[
{
id
:
'111'
,
name
:
'banner广告A'
},
{
id
:
'122'
,
name
:
'正文区广告A'
},
{
id
:
'1331'
,
name
:
'侧边栏广告a'
}
],
articleTypeList
:
[
{
id
:
'111'
,
name
:
'banner广告b'
},
{
id
:
'122'
,
name
:
'正文区广告b'
},
{
id
:
'1331'
,
name
:
'侧边栏广告b'
}
],
imageTextTypeList
:
[
{
id
:
'111'
,
name
:
'banner广告c'
},
{
id
:
'122'
,
name
:
'正文区广告c'
},
{
id
:
'1331'
,
name
:
'侧边栏广告c'
}
],
projectTypeList
:
[],
adTypeList
:
[],
articleTypeList
:
[],
imageTextTypeList
:
[],
adType
:
{
isIndeterminate
:
false
,
checkAll
:
false
...
...
@@ -128,7 +114,8 @@ export default {
imageTextType
:
{
isIndeterminate
:
false
,
checkAll
:
false
}
},
tableSelections
:
[]
}
},
computed
:
{
...
...
@@ -140,7 +127,7 @@ export default {
let
text
=
''
if
(
type
===
'create'
)
text
=
'新建项目'
else
if
(
type
===
'edit'
)
text
=
'编辑项目'
else
text
=
this
.
selectedItem
.
titl
e
||
'项目详情'
else
text
=
this
.
selectedItem
.
nam
e
||
'项目详情'
return
text
},
tableOptions
()
{
...
...
@@ -183,6 +170,10 @@ export default {
}
}
},
created
()
{
this
.
fetchProjectTypeList
()
this
.
fetchContentTypeList
()
},
methods
:
{
handleCreate
()
{
this
.
drawerVisible
=
true
...
...
@@ -192,15 +183,25 @@ export default {
this
.
selectedItem
=
Object
.
assign
({},
val
)
this
.
drawerVisible
=
true
this
.
drawerType
=
'details'
Object
.
keys
(
this
.
form
).
forEach
(
key
=>
{
const
valItem
=
val
[
key
]
if
(
valItem
)
{
this
.
form
[
key
]
=
valItem
}
})
this
.
form
.
adType
=
val
.
advert_type_ids
this
.
form
.
articleType
=
val
.
article_type_ids
this
.
form
.
imageTextType
=
val
.
imgtext_type_ids
console
.
log
(
this
.
form
)
},
handleCheckAllChange
(
val
,
target
)
{
this
.
form
[
target
]
=
val
?
this
.
typeList
.
map
(
item
=>
item
.
id
)
:
[];
this
.
form
[
target
]
=
val
?
this
[
target
+
'List'
]
.
map
(
item
=>
item
.
id
)
:
[];
this
[
target
].
isIndeterminate
=
false
;
},
handleCheckedChange
(
val
,
target
)
{
const
checkedCount
=
val
.
length
;
this
[
target
].
checkAll
=
checkedCount
===
this
.
typeList
.
length
;
this
[
target
].
isIndeterminate
=
checkedCount
>
0
&&
checkedCount
<
this
.
typeList
.
length
;
this
[
target
].
checkAll
=
checkedCount
===
this
[
target
+
'List'
]
.
length
;
this
[
target
].
isIndeterminate
=
checkedCount
>
0
&&
checkedCount
<
this
[
target
+
'List'
]
.
length
;
},
handleDrawerClose
()
{
this
.
drawerVisible
=
false
...
...
@@ -209,25 +210,87 @@ export default {
handleDrawerSubmit
()
{
this
.
$refs
.
drawerForm
.
validate
(
valid
=>
{
if
(
valid
)
{
console
.
log
(
'drawerForm'
)
if
(
this
.
drawerType
===
'create'
)
{
this
.
fetchCreateProject
()
}
else
{
const
data
=
this
.
getFormData
()
data
.
project_id
=
this
.
selectedItem
.
id
this
.
fetchUpdateProject
(
data
)
}
this
.
drawerVisible
=
false
}
else
{
return
false
}
})
},
selectionChange
(
val
)
{
console
.
log
(
val
)
this
.
tableSelections
=
val
.
map
(
item
=>
item
.
id
)
},
fetchCreateProject
()
{
statusChange
(
val
)
{
this
.
fetchUpdateProject
({
project_id
:
val
.
id
,
status
:
val
.
status
},
'status'
)
},
getFormData
()
{
const
form
=
this
.
form
const
data
=
{
name
:
this
.
form
.
role_name
advert_type_ids
:
form
.
adType
,
article_type_ids
:
form
.
articleType
,
imgtext_type_ids
:
form
.
imageTextType
}
Object
.
keys
(
form
).
forEach
(
key
=>
{
if
(
typeof
key
===
'string'
)
{
data
[
key
]
=
form
[
key
]
}
})
return
data
},
fetchCreateProject
()
{
const
data
=
this
.
getFormData
()
createProject
(
data
).
then
((
res
)
=>
{
if
(
res
.
code
===
0
&&
res
.
message
===
'SUCCESS'
)
{
this
.
fetchRoleList
(
)
this
.
$
message
.
success
(
'创建角色成功'
)
this
.
$message
.
success
(
'新建项目成功'
)
this
.
$
refs
.
tabList
.
refetch
(
)
}
else
{
this
.
$message
.
error
(
'创建角色失败'
)
this
.
$message
.
error
(
res
.
message
||
'新建项目失败'
)
}
})
},
fetchUpdateProject
(
data
,
type
)
{
const
msg
=
type
===
'status'
?
'更改状态'
:
'更改项目'
updateProject
(
data
).
then
((
res
)
=>
{
if
(
res
.
code
===
0
&&
res
.
message
===
'SUCCESS'
)
{
this
.
$message
.
success
(
msg
+
'成功'
)
this
.
$refs
.
tabList
.
refetch
()
}
else
{
this
.
$message
.
error
(
res
.
message
||
msg
+
'失败'
)
}
})
},
fetchDeleteProject
()
{
deleteProject
({
project_id
:
this
.
tableSelections
[
0
]
}).
then
((
res
)
=>
{
if
(
res
.
code
===
0
&&
res
.
data
&&
res
.
data
.
status
)
{
this
.
$message
.
success
(
'删除项目成功'
)
this
.
$refs
.
tabList
.
refetch
()
}
else
{
this
.
$message
.
error
(
res
.
message
||
'删除项目失败'
)
}
})
},
fetchProjectTypeList
()
{
getTypeList
({
type
:
0
,
status
:
1
,
limit
:
100
}).
then
((
res
)
=>
{
if
(
res
.
code
===
0
&&
res
.
data
&&
Array
.
isArray
(
res
.
data
.
data
))
{
this
.
projectTypeList
=
res
.
data
.
data
}
})
},
fetchContentTypeList
()
{
getContentTypesList
().
then
((
res
)
=>
{
if
(
res
.
code
===
0
&&
res
.
data
)
{
this
.
adTypeList
=
res
.
data
.
advert_list
this
.
articleTypeList
=
res
.
data
.
article_list
this
.
imageTextTypeList
=
res
.
data
.
imgtext_list
}
})
}
...
...
src/pages/settings/role/index.vue
浏览文件 @
e3376ebb
...
...
@@ -256,9 +256,9 @@ export default {
createRole
(
data
).
then
((
res
)
=>
{
if
(
res
.
code
===
0
&&
res
.
message
===
'SUCCESS'
)
{
this
.
fetchRoleList
()
this
.
$message
.
success
(
'
创
建角色成功'
)
this
.
$message
.
success
(
'
新
建角色成功'
)
}
else
{
this
.
$message
.
error
(
'
创
建角色失败'
)
this
.
$message
.
error
(
'
新
建角色失败'
)
}
})
},
...
...
src/pages/settings/staff/index.vue
浏览文件 @
e3376ebb
...
...
@@ -2,12 +2,27 @@
<div
class=
"staff page_container"
>
<table-list
v-bind=
"tableOptions"
ref=
"tabList"
>
<template
#
header-aside
>
<el-button
type=
"primary"
size=
"mini"
@
click=
"drawerVisible = true"
>
新建员工
</el-button>
<el-button
type=
"primary"
size=
"mini"
@
click=
"handleCreate"
>
新建员工
</el-button>
</
template
>
<!-- 姓名 -->
<
template
v-slot:table-name=
"{ row }"
>
<p
class=
"details-handle"
@
click=
"handleDetails(row)"
>
{{
row
.
sso_user
.
real_name
||
row
.
sso_user
.
nickname
}}
</p>
</
template
>
<!-- 角色 -->
<
template
v-slot:table-role=
"{ row }"
>
<span
v-for=
"(item, index) in row.roles"
:key=
"index"
>
{{
index
>
0
?
'、'
:
''
}}{{
item
.
name
}}
</span>
</
template
>
<!-- 项目 -->
<
template
v-slot:table-project=
"{ row }"
>
<p
class=
"details-handle"
v-for=
"(item, index) in row.projects"
:key=
"index"
>
{{
index
>
0
?
'、'
:
''
}}{{
item
.
name
}}
</p>
</
template
>
<!-- 创建人 -->
<
template
v-slot:table-creator=
"{ row }"
>
<p>
{{
row
.
create_user
.
real_name
||
row
.
create_user
.
nickname
}}
</p>
</
template
>
<
template
v-slot:name=
"scope"
><span
class=
"details-handle"
@
click=
"handleDetails(scope.row)"
>
{{
scope
.
row
.
ad_id
}}
</span></
template
>
<!-- 发布状态 -->
<
template
v-slot:status=
"{ row }"
>
<el-switch
v-model=
"row.status"
></el-switch>
<el-switch
v-model=
"row.status"
:active-value=
"0"
:inactive-value=
"1"
active-text=
"启用"
inactive-text=
"停用"
@
change=
"statusChange(row)"
></el-switch>
</
template
>
<!-- 操作 -->
<
template
v-slot:tools=
"{ row }"
>
...
...
@@ -21,34 +36,39 @@
<el-form-item
label=
"账户"
prop=
"userid"
v-if=
"dialogType === 'edit'"
>
<el-input
v-model=
"form.userid"
size=
"small"
disabled
></el-input>
</el-form-item>
<el-form-item
label=
"账户"
prop=
"userid"
v-else
style=
"position:relative;"
>
<el-select
v-model=
"form.userid"
placeholder=
"输入关键字搜索"
size=
"small"
filterable
remote
:remote-method=
"fetchUserList"
:loading=
"searchUsersloading"
style=
"width:100%;"
>
<el-option
:label=
"user.username"
:value=
"user.id"
v-for=
"user in userList"
:key=
"user.id"
>
<span
style=
"float: left"
>
{{ user.username }}
</span>
<span
style=
"float: right; color: #8492a6; font-size: 13px; margin-left:10px;"
>
{{ user.id }}
</span>
<el-form-item
label=
"账户"
prop=
"sso_id"
v-else
style=
"position:relative;"
>
<el-select
v-model=
"form.sso_id"
placeholder=
"输入邮箱/手机号码搜索"
size=
"small"
filterable
remote
:remote-method=
"fetchUserList"
:loading=
"searchUsersloading"
style=
"width:100%;"
>
<el-option
:label=
"user.real_name || user.nickname "
:value=
"user.id"
v-for=
"user in userList"
:key=
"user.id"
>
<div
style=
"display:flex;"
>
<span>
{{ user.real_name || user.nickname }}
<
template
v-if=
"user.mobile"
>
(手机号:
{{
user
.
mobile
}}
)
</
template
>
</span>
<span
style=
"color: #8492a6; font-size: 13px; margin:0 20px 0 10px;"
v-if=
"user.email"
>
邮箱:{{ user.email }}
</span>
<span
style=
"color: #8492a6; font-size: 13px; margin:0 20px 0 10px;"
v-else
>
ID:{{ user.id }}
</span>
</div>
</el-option>
</el-select>
<p
class=
"search-keywords-checked"
v-if=
"searchKeywordsCheckMsg"
>
{{searchKeywordsCheckMsg}}
</p>
</el-form-item>
<el-form-item
label=
"手机号"
prop=
"phone"
>
<
!-- <
el-form-item label="手机号" prop="phone">
<el-input v-model="form.phone" size="small"></el-input>
</el-form-item>
<el-form-item label="邮箱" prop="email">
<el-input v-model="form.email" size="small"></el-input>
</el-form-item>
<el-form-item
label=
"姓名"
prop=
"username"
>
</el-form-item>
-->
<
!-- <
el-form-item label="姓名" prop="username">
<el-input v-model="form.username" size="small"></el-input>
</el-form-item>
<el-form-item
label=
"角色"
prop=
"role"
>
<el-select
v-model=
"form.role"
placeholder=
"请选择角色"
size=
"small"
style=
"width:100%;"
>
</el-form-item>
-->
<el-form-item
label=
"角色"
prop=
"role
_id
"
>
<el-select
v-model=
"form.role
_id
"
placeholder=
"请选择角色"
size=
"small"
style=
"width:100%;"
>
<el-option
:label=
"role.name"
:value=
"role.id"
v-for=
"role in roleList"
:key=
"role.id"
></el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"项目"
prop=
"project"
>
<el-form-item
label=
"项目"
prop=
"project
_ids
"
>
<el-checkbox
:indeterminate=
"isIndeterminate"
v-model=
"checkAll"
@
change=
"handleCheckAllChange"
>
全选
</el-checkbox>
<div
style=
"margin: 8px 0;"
></div>
<el-checkbox-group
v-model=
"form.project"
@
change=
"handleCheckedProjectChange"
>
<el-checkbox
v-for=
"pr in projectList"
:label=
"pr.
project_id"
:key=
"pr.project_id"
>
{{pr.project_
name}}
</el-checkbox>
<el-checkbox-group
v-model=
"form.project
_ids
"
@
change=
"handleCheckedProjectChange"
>
<el-checkbox
v-for=
"pr in projectList"
:label=
"pr.
id"
:key=
"pr.id"
>
{{pr.
name}}
</el-checkbox>
</el-checkbox-group>
</el-form-item>
</el-form>
...
...
@@ -69,7 +89,7 @@
</el-form-item>
</
template
>
<
template
v-if=
"dialogType === 'phone'"
>
<el-form-item
label=
"新手机号"
prop=
"phone"
:rules=
"[
{ required: true, message: '请输入手机号', trigger: 'blur' }, { validator:
(rule, value, callback) => checkedDialogForm(dialogForm.password, value, callback, '密码')
, trigger: 'blur' }]">
<el-form-item
label=
"新手机号"
prop=
"phone"
:rules=
"[
{ required: true, message: '请输入手机号', trigger: 'blur' }, { validator:
checkedMobile
, trigger: 'blur' }]">
<el-input
v-model=
"dialogForm.phone"
size=
"small"
></el-input>
</el-form-item>
<el-form-item
label=
"确认号码"
prop=
"ensurePhone"
:rules=
"[
{ required: true, message: '请输入确认密码', trigger: 'blur' }, { validator: (rule, value, callback) => checkedDialogForm(dialogForm.phone, value, callback, '手机号'), trigger: 'blur' }]">
...
...
@@ -86,10 +106,21 @@
</template>
<
script
>
import
TableList
from
'@/components/TableList'
import
{
getStaffList
}
from
'@/api/settings'
import
_
from
'lodash'
const
MOBILE_REG
=
/^1
(
3
[
0-9
]
|4
[
01456879
]
|5
[
0-35-9
]
|6
[
2567
]
|7
[
0-8
]
|8
[
0-9
]
|9
[
0-35-9
])\d{8}
$/
const
EMAIL_REG
=
/^
[
A-Za-z0-9
]
+
([
_.
][
A-Za-z0-9
]
+
)
*@
([
A-Za-z0-9-
]
+
\.)
+
[
A-Za-z
]{2,6}
$/
import
{
getStaffList
,
getProjectList
,
getRoleList
,
createStaff
,
updateStaff
}
from
'@/api/settings'
import
{
searchUserList
}
from
'@/api/system'
const
MOBILE_REG
=
/^1
(
3
[
0-9
]
|4
[
01456879
]
|5
[
0-35-9
]
|6
[
2567
]
|7
[
0-8
]
|8
[
0-9
]
|9
[
0-35-9
])\d{4,8}
$/
const
EMAIL_REG
=
/^
[
A-Za-z0-9
]
+
([
_.
][
A-Za-z0-9
]
+
)
*@
[
A-Za-z0-9-.
]
+$/
const
drawerForm
=
{
sso_id
:
''
,
role_id
:
''
,
project_ids
:
[]
}
const
dialogForm
=
{
password
:
''
,
ensurePassword
:
''
,
phone
:
''
,
ensurePhone
:
''
}
export
default
{
components
:
{
TableList
},
data
()
{
...
...
@@ -102,68 +133,26 @@ export default {
}
}
}
const
checkEmail
=
(
rule
,
value
,
callback
)
=>
{
if
(
value
)
{
if
(
!
EMAIL_REG
.
test
(
value
))
{
callback
(
new
Error
(
'邮箱格式错误'
));
}
else
{
callback
()
}
}
}
return
{
activeName
:
'0'
,
projectList
:
[
{
project_id
:
'111'
,
project_name
:
'索菲亚项目'
},
{
project_id
:
'1131'
,
project_name
:
'官网'
},
{
project_id
:
'13411'
,
project_name
:
'项目的简称'
},
{
project_id
:
'113132'
,
project_name
:
'项目的简称'
},
{
project_id
:
'1e3131'
,
project_name
:
'项目的简称'
},
{
project_id
:
'13131'
,
project_name
:
'cu'
},
{
project_id
:
'222'
,
project_name
:
'kellet'
}
],
roleList
:
[
{
id
:
'111'
,
name
:
'超级管理员'
},
{
id
:
'222'
,
name
:
'数据管理员'
}
],
projectList
:
[],
roleList
:
[],
drawerVisible
:
false
,
drawerType
:
''
,
checkAll
:
false
,
isIndeterminate
:
false
,
form
:
{
userid
:
''
,
username
:
''
,
phone
:
''
,
email
:
''
,
role
:
''
,
project
:
[]
},
form
:
Object
.
assign
({},
drawerForm
),
rules
:
{
userid
:
[{
required
:
true
,
message
:
'请选择账户'
,
trigger
:
'change'
}],
username
:
[{
required
:
true
,
message
:
'请输入名称'
,
trigger
:
'blur'
}],
phone
:
[
// { required: true, message: '请输入手机号', trigger: 'blur' },
{
validator
:
checkMobile
,
trigger
:
'blur'
}
],
email
:
[
// { required: true, message: '请输入邮箱', trigger: 'blur' },
{
validator
:
checkEmail
,
trigger
:
'blur'
}
],
role
:
[{
required
:
true
,
message
:
'请选择角色'
,
trigger
:
'change'
}],
project
:
{
required
:
true
,
message
:
'请选择项目'
,
trigger
:
'change'
}
sso_id
:
[{
required
:
true
,
message
:
'请选择账户'
,
trigger
:
'change'
}],
role_id
:
[{
required
:
true
,
message
:
'请选择角色'
,
trigger
:
'change'
}],
project_ids
:
{
required
:
true
,
message
:
'请选择项目'
,
trigger
:
'change'
}
},
userList
:
[],
searchKeywordsCheckMsg
:
''
,
searchUsersloading
:
false
,
dialogVisible
:
false
,
dialogType
:
''
,
operateItem
:
''
,
dialogForm
:
{
password
:
''
,
ensurePassword
:
''
,
phone
:
''
,
ensurePhone
:
''
},
dialogForm
:
Object
.
assign
({},
dialogForm
),
checkedMobile
:
checkMobile
}
},
...
...
@@ -173,7 +162,12 @@ export default {
},
dialogTitle
()
{
const
text
=
this
.
dialogType
===
'pwd'
?
'修改密码'
:
'修改手机'
return
text
+
`(
${
this
.
operateItem
.
name
}
)`
const
user
=
this
.
operateItem
.
sso_user
let
username
=
''
if
(
user
)
{
username
=
user
.
real_name
||
user
.
nickname
}
return
text
+
'('
+
username
+
')'
},
tableOptions
()
{
return
{
...
...
@@ -201,20 +195,37 @@ export default {
}
],
columns
:
[
{
prop
:
'sso_user.real_name'
,
label
:
'姓名'
},
{
prop
:
'role'
,
label
:
'角色'
},
{
prop
:
'sso_user.mobile'
,
label
:
'手机号'
},
{
prop
:
'sso_user.email'
,
label
:
'邮箱'
},
{
prop
:
'project_ids'
,
label
:
'项目'
},
{
prop
:
'author'
,
label
:
'创建人'
},
{
prop
:
'created_at'
,
label
:
'创建时间'
},
{
prop
:
'status'
,
label
:
'状态'
,
slots
:
'status'
},
{
prop
:
'x'
,
label
:
'操作'
,
slots
:
'tools'
}
{
prop
:
'selection'
,
label
:
''
,
type
:
'selection'
,
minWidth
:
'50px'
,
fixed
:
'left'
},
{
prop
:
'sso_user.real_name'
,
label
:
'姓名'
,
slots
:
'table-name'
,
minWidth
:
'80px'
,
fixed
:
'left'
},
{
prop
:
'roles'
,
label
:
'角色'
,
slots
:
'table-role'
,
minWidth
:
'100px'
},
{
prop
:
'sso_user.mobile'
,
label
:
'手机号'
,
minWidth
:
'110px'
},
{
prop
:
'sso_user.email'
,
label
:
'邮箱'
,
minWidth
:
'160px'
},
{
prop
:
'projects'
,
label
:
'项目'
,
minWidth
:
'130px'
,
slots
:
'table-project'
},
{
prop
:
'create_user'
,
label
:
'创建人'
,
minWidth
:
'80px'
,
slots
:
'table-creator'
},
{
prop
:
'created_at'
,
label
:
'创建时间'
,
minWidth
:
'150px'
},
{
prop
:
'status'
,
label
:
'状态'
,
slots
:
'status'
,
minWidth
:
'140px'
,
fixed
:
'right'
},
{
prop
:
'x'
,
label
:
'操作'
,
slots
:
'tools'
,
minWidth
:
'200px'
,
fixed
:
'right'
}
]
}
}
},
created
()
{
this
.
fetchProjectList
()
this
.
fetchRoleList
()
},
methods
:
{
handleCreate
()
{
this
.
drawerVisible
=
true
this
.
drawerType
=
'create'
},
handleDrawerClose
()
{
this
.
drawerVisible
=
false
this
.
form
=
Object
.
assign
({},
drawerForm
)
},
handleDialogClose
()
{
this
.
drawerVisible
=
false
this
.
form
=
Object
.
assign
({},
drawerForm
)
},
handleCheckAllChange
(
val
)
{
this
.
form
.
project
=
val
?
this
.
projectList
.
map
(
item
=>
item
.
project_id
)
:
[];
this
.
isIndeterminate
=
false
;
...
...
@@ -243,14 +254,29 @@ export default {
this
.
dialogType
=
'phone'
},
handleDetails
(
val
)
{
this
.
operateItem
=
_
.
cloneDeep
(
val
)
this
.
form
=
_
.
cloneDeep
(
val
)
const
form
=
this
.
form
form
.
sso_id
=
val
.
sso_id
form
.
role_id
=
val
.
roles
[
0
]
?
val
.
roles
[
0
].
id
:
''
form
.
project_ids
=
val
.
projects
.
map
(
item
=>
item
.
id
)
||
[]
this
.
operateItem
=
val
console
.
log
(
val
)
this
.
drawerVisible
=
true
this
.
drawerType
=
'details'
},
statusChange
(
val
)
{
this
.
fetchUpdateStaff
({
sso_id
:
val
.
sso_id
,
status
:
val
.
status
},
'status'
)
},
handleDrawerSubmit
()
{
this
.
$refs
.
drawerForm
.
validate
(
valid
=>
{
if
(
valid
)
{
console
.
log
(
'drawerForm'
)
}
else
{
if
(
this
.
drawerType
===
'create'
)
{
this
.
fetchCreateStaff
()
}
else
{
this
.
fetchUpdateStaff
(
this
.
form
)
}
return
false
}
})
...
...
@@ -264,8 +290,65 @@ export default {
}
})
},
fetchCreateStaff
()
{
createStaff
(
this
.
form
).
then
((
res
)
=>
{
if
(
res
.
code
===
0
&&
res
.
data
&&
res
.
data
.
id
)
{
this
.
$message
.
success
(
'新建员工成功'
)
this
.
$refs
.
tabList
.
refetch
()
this
.
handleDrawerClose
()
}
else
{
this
.
$message
.
error
(
res
.
message
||
'新建项目失败'
)
}
})
},
fetchUpdateStaff
(
data
,
type
)
{
const
msg
=
type
===
'status'
?
'更改状态'
:
'更改员工信息'
updateStaff
(
data
).
then
((
res
)
=>
{
if
(
res
.
code
===
0
&&
res
.
data
&&
res
.
data
.
status
)
{
this
.
$message
.
success
(
msg
+
'成功'
)
this
.
$refs
.
tabList
.
refetch
()
this
.
handleDrawerClose
()
}
else
{
this
.
$message
.
error
(
res
.
message
||
msg
+
'失败'
)
}
})
},
fetchUserList
(
val
)
{
console
.
log
(
val
)
let
searchType
=
'username'
if
(
EMAIL_REG
.
test
(
val
))
{
searchType
=
'email'
}
else
if
(
MOBILE_REG
.
test
(
val
))
{
searchType
=
'mobile'
}
if
(
!
val
)
return
false
else
{
const
params
=
{
[
searchType
]:
val
}
this
.
searchUsersloading
=
true
searchUserList
(
params
)
.
then
(
res
=>
{
this
.
searchUsersloading
=
false
if
(
res
.
data
&&
Array
.
isArray
(
res
.
data
.
items
))
{
this
.
userList
=
res
.
data
.
items
}
})
.
catch
(()
=>
{})
}
},
fetchRoleList
()
{
getRoleList
({
limit
:
100
}).
then
((
res
)
=>
{
if
(
res
.
code
===
0
&&
res
.
data
&&
Array
.
isArray
(
res
.
data
.
data
))
{
this
.
roleList
=
res
.
data
.
data
}
})
},
fetchProjectList
()
{
getProjectList
({
type
:
0
,
status
:
1
,
limit
:
100
}).
then
((
res
)
=>
{
if
(
res
.
code
===
0
&&
res
.
data
&&
Array
.
isArray
(
res
.
data
.
data
))
{
this
.
projectList
=
res
.
data
.
data
}
})
}
}
}
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论