Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
C
center-live
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
EzijingWeb
center-live
Commits
19b8da89
提交
19b8da89
authored
4月 25, 2021
作者:
pengxiaohui
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
优化用户搜索交互展示,增加5个搜索类型,下拉展示用户id
上级
0fe67720
显示空白字符变更
内嵌
并排
正在显示
2 个修改的文件
包含
103 行增加
和
19 行删除
+103
-19
index.vue
src/pages/meeting/tencent-meeting/index.vue
+54
-10
index.vue
src/pages/system/account/index.vue
+49
-9
没有找到文件。
src/pages/meeting/tencent-meeting/index.vue
浏览文件 @
19b8da89
...
@@ -126,7 +126,18 @@
...
@@ -126,7 +126,18 @@
</el-col>
</el-col>
</el-form-item>
-->
</el-form-item>
-->
<el-form-item
label=
"指定会议管理员"
>
<el-form-item
label=
"指定会议管理员"
>
<el-col
:span=
"11"
>
<p
style=
"line-height:24px;"
>
(会议管理员有修改会议,复制、取消会议等所有管理本次会议的权限)
</p>
<el-col
:span=
"8"
>
<el-dropdown
style=
"width:100%;"
@
command=
"(val) => searchType = val"
>
<el-button
size=
"small"
style=
"width:calc(100% - 5px);"
>
{{
searchTypeOptions
[
searchType
]
}}
<i
class=
"el-icon-arrow-down el-icon--right"
></i>
</el-button>
<el-dropdown-menu
slot=
"dropdown"
>
<el-dropdown-item
:command=
"key"
v-for=
"(value, key) in searchTypeOptions"
:key=
"key"
>
{{
value
}}
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</el-col>
<el-col
:span=
"16"
>
<el-select
<el-select
style=
"width: 100%"
style=
"width: 100%"
v-model=
"form.managers"
v-model=
"form.managers"
...
@@ -138,14 +149,13 @@
...
@@ -138,14 +149,13 @@
:remote-method=
"fetchUserList"
:remote-method=
"fetchUserList"
:loading=
"searchUsersloading"
:loading=
"searchUsersloading"
>
>
<el-option
:label=
"user.nickname"
:value=
"user.id"
v-for=
"user in userList"
:key=
"user.id"
/>
<el-option
:label=
"user.nickname"
:value=
"user.id"
v-for=
"user in userList"
:key=
"user.id"
>
<span
style=
"float: left"
>
{{
user
.
nickname
}}
</span>
<span
style=
"float: right; color: #8492a6; font-size: 13px; margin-left:10px;"
>
{{
user
.
id
}}
</span>
</el-option>
</el-select>
</el-select>
</el-col>
</el-col>
<el-col
:span=
"13"
style=
"color: #999; height: 40px; position: relative; font-size: 12px; line-height: 18px"
>
<p
class=
"search-keywords-checked"
v-if=
"searchKeywordsCheckMsg"
>
{{
searchKeywordsCheckMsg
}}
</p>
<span
style=
"position: absolute; left: 5px; top: 50%; transform: translateY(-50%)"
>
(会议管理员有修改会议,复制、取消会议等所有管理本次会议的权限)
</span
>
</el-col>
</el-form-item>
</el-form-item>
<el-form-item
label=
"会议设置"
>
<el-form-item
label=
"会议设置"
>
<el-checkbox
style=
"width: 120px"
v-model=
"form.hasPwd"
>
开启会议密码
</el-checkbox>
<el-checkbox
style=
"width: 120px"
v-model=
"form.hasPwd"
>
开启会议密码
</el-checkbox>
...
@@ -223,6 +233,8 @@ import {
...
@@ -223,6 +233,8 @@ import {
}
from
'@/utils/dateAlgs'
}
from
'@/utils/dateAlgs'
import
{
searchUserList
,
createMeeting
,
operateLog
,
getMeetingDetails
,
getNonpagedMeetingList
,
updateMeeting
}
from
'@api/common'
import
{
searchUserList
,
createMeeting
,
operateLog
,
getMeetingDetails
,
getNonpagedMeetingList
,
updateMeeting
}
from
'@api/common'
const
DAY_TIMESTAMP
=
8.64e7
const
DAY_TIMESTAMP
=
8.64e7
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
}
$/
export
default
{
export
default
{
data
()
{
data
()
{
const
now
=
new
Date
()
const
now
=
new
Date
()
...
@@ -346,6 +358,15 @@ export default {
...
@@ -346,6 +358,15 @@ export default {
}
}
}
,
}
,
userList
:
[],
userList
:
[],
searchType
:
'username'
,
searchTypeOptions
:
{
username
:
'通过用户名搜索'
,
nickname
:
'通过昵称搜索'
,
email
:
'通过邮箱搜索'
,
mobile
:
'通过手机号搜索'
,
id
:
'通过ID搜索'
}
,
searchKeywordsCheckMsg
:
''
,
searchUsersloading
:
false
,
searchUsersloading
:
false
,
showSchedule
:
false
,
showSchedule
:
false
,
options
:
{
options
:
{
...
@@ -441,16 +462,21 @@ export default {
...
@@ -441,16 +462,21 @@ export default {
endTimeOptions
()
{
endTimeOptions
()
{
const
{
startDate
,
endDate
,
startTime
}
=
this
.
form
const
{
startDate
,
endDate
,
startTime
}
=
this
.
form
const
fullDate
=
this
.
getFullDateTime
(
startDate
,
startTime
)
const
fullDate
=
this
.
getFullDateTime
(
startDate
,
startTime
)
const
minutes
=
fullDate
.
getMinutes
()
let
options
let
options
if
(
this
.
isSameDate
(
startDate
,
endDate
))
{
if
(
this
.
isSameDate
(
startDate
,
endDate
))
{
const
startTime
=
getCurHalfHour
(
'end'
,
fullDate
)
// 结束日期和开始日期同一天,会议最低半小时,则向后推半小时
const
_date
=
fullDate
.
setMinutes
(
minutes
+
30
)
const
startTime
=
dateFormat
(
_date
,
'{h
}
:{i
}
'
)
options
=
{
options
=
{
start
:
startTime
,
start
:
startTime
,
step
:
'00:30'
,
step
:
'00:30'
,
end
:
'23:30'
end
:
'23:30'
}
}
}
else
{
}
else
{
const
endTime
=
getCurHalfHour
(
'start'
,
fullDate
)
// 结束时间和开始时间不能超过24小时,相隔一天,则向前推半小时
const
_date
=
fullDate
.
setMinutes
(
minutes
-
30
)
const
endTime
=
dateFormat
(
_date
,
'{h
}
:{i
}
'
)
options
=
{
options
=
{
start
:
'00:00'
,
start
:
'00:00'
,
step
:
'00:30'
,
step
:
'00:30'
,
...
@@ -676,9 +702,17 @@ export default {
...
@@ -676,9 +702,17 @@ export default {
}
,
}
,
fetchUserList
(
val
)
{
fetchUserList
(
val
)
{
if
(
!
val
)
return
if
(
!
val
)
return
if
(
this
.
searchType
===
'email'
&&
!
EMAIL_REG
.
test
(
val
))
{
this
.
searchKeywordsCheckMsg
=
'邮箱格式错误'
this
.
userList
=
[]
}
else
if
(
this
.
searchType
===
'mobile'
&&
!
MOBILE_REG
.
test
(
val
))
{
this
.
searchKeywordsCheckMsg
=
'手机号格式错误'
this
.
userList
=
[]
}
else
{
const
params
=
{
const
params
=
{
nickname
:
val
[
this
.
searchType
]
:
val
}
;
}
;
this
.
searchKeywordsCheckMsg
=
''
this
.
searchUsersloading
=
true
this
.
searchUsersloading
=
true
searchUserList
(
params
)
searchUserList
(
params
)
.
then
(
res
=>
{
.
then
(
res
=>
{
...
@@ -688,6 +722,7 @@ export default {
...
@@ -688,6 +722,7 @@ export default {
}
}
}
)
}
)
.
catch
(()
=>
{
}
)
.
catch
(()
=>
{
}
)
}
}
,
}
,
getSubmitParams
()
{
getSubmitParams
()
{
const
form
=
this
.
form
const
form
=
this
.
form
...
@@ -822,6 +857,15 @@ export default {
...
@@ -822,6 +857,15 @@ export default {
width
:
calc
(
100
%
-
70
px
);
width
:
calc
(
100
%
-
70
px
);
background
:
#
52
b837
;
background
:
#
52
b837
;
}
}
.
search
-
keywords
-
checked
{
color
:
#
F56C6C
;
font
-
size
:
12
px
;
line
-
height
:
1
;
padding
-
top
:
4
px
;
position
:
absolute
;
top
:
100
%
;
right
:
0
;
}
.
right
-
container
.
el
-
scrollbar
::
v
-
deep
.
el
-
scrollbar__wrap
{
.
right
-
container
.
el
-
scrollbar
::
v
-
deep
.
el
-
scrollbar__wrap
{
/* overflow:hidden; */
/* overflow:hidden; */
}
}
...
...
src/pages/system/account/index.vue
浏览文件 @
19b8da89
<
template
>
<
template
>
<div
class=
"account"
>
<div
class=
"account"
>
<h5>
账号管理
<el-button
style=
"float:right;margin:12px 30px 0 0"
size=
"mini"
type=
"primary"
plain
@
click=
"handleAdd"
v-if=
"isSuperAdmin"
>
添加账号
</el-button></h5>
<h5>
账号管理
<el-button
style=
"float:right;margin:12px 30px 0 0"
size=
"mini"
type=
"primary"
plain
@
click=
"handleAdd"
v-if=
"
!
isSuperAdmin"
>
添加账号
</el-button></h5>
<div
class=
"inner"
>
<div
class=
"inner"
>
<el-table
:data=
"listData"
style=
"width: 100%"
height=
"calc(100% - 32px)"
v-loading=
"loading"
>
<el-table
:data=
"listData"
style=
"width: 100%"
height=
"calc(100% - 32px)"
v-loading=
"loading"
>
<el-table-column
prop=
"userid"
label=
"ID"
min-width=
"120"
></el-table-column>
<el-table-column
prop=
"userid"
label=
"ID"
min-width=
"120"
></el-table-column>
...
@@ -15,15 +15,27 @@
...
@@ -15,15 +15,27 @@
</el-table-column>
</el-table-column>
</el-table>
</el-table>
<el-pagination
:current-page
.
sync=
"curPage"
:page-size=
"pageSize"
layout=
"total, prev, pager, next, jumper"
:total=
"total"
@
current-change=
"pageChange"
style=
"float:right;"
></el-pagination>
<el-pagination
:current-page
.
sync=
"curPage"
:page-size=
"pageSize"
layout=
"total, prev, pager, next, jumper"
:total=
"total"
@
current-change=
"pageChange"
style=
"float:right;"
></el-pagination>
<el-dialog
:title=
"domicTitle"
:visible
.
sync=
"dialogVisible"
width=
"
30%
"
center
>
<el-dialog
:title=
"domicTitle"
:visible
.
sync=
"dialogVisible"
width=
"
420px
"
center
>
<el-form
:model=
"form"
:rules=
"rules"
ref=
"ruleForm"
label-width=
"70px"
class=
"demo-ruleForm"
v-show=
"dialogType === 'add' || dialogType === 'edit'"
>
<el-form
:model=
"form"
:rules=
"rules"
ref=
"ruleForm"
label-width=
"70px"
class=
"demo-ruleForm"
v-show=
"dialogType === 'add' || dialogType === 'edit'"
>
<el-form-item
label=
"ID"
prop=
"userid"
v-if=
"dialogType === 'edit'"
>
<el-form-item
label=
"ID"
prop=
"userid"
v-if=
"dialogType === 'edit'"
>
<el-input
v-model=
"form.userid"
size=
"small"
disabled
></el-input>
<el-input
v-model=
"form.userid"
size=
"small"
disabled
></el-input>
</el-form-item>
</el-form-item>
<el-form-item
label=
"ID"
prop=
"userid"
v-else
>
<el-form-item
label=
"ID"
prop=
"userid"
v-else
style=
"position:relative;"
>
<el-select
style=
"width:100%"
v-model=
"form.userid"
placeholder=
"搜索用户"
size=
"small"
filterable
remote
:remote-method=
"fetchUserList"
:loading=
"searchUsersloading"
>
<el-dropdown
@
command=
"(val) => searchType = val"
>
<el-option
:label=
"user.nickname"
:value=
"user.id"
v-for=
"user in userList"
:key=
"user.id"
/>
<el-button
style=
"width:85px;"
size=
"small"
>
{{searchTypeOptions[searchType]}}
<i
class=
"el-icon-arrow-down el-icon--right"
></i>
</el-button>
<el-dropdown-menu
slot=
"dropdown"
>
<el-dropdown-item
:command=
"key"
v-for=
"(value, key) in searchTypeOptions"
:key=
"key"
>
{{value}}
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
<el-select
v-model=
"form.userid"
placeholder=
"输入关键字搜索"
size=
"small"
filterable
remote
:remote-method=
"fetchUserList"
:loading=
"searchUsersloading"
style=
"width:220px;"
>
<el-option
:label=
"user.nickname"
:value=
"user.id"
v-for=
"user in userList"
:key=
"user.id"
>
<span
style=
"float: left"
>
{{ user.nickname }}
</span>
<span
style=
"float: right; color: #8492a6; font-size: 13px; margin-left:10px;"
>
{{ user.id }}
</span>
</el-option>
</el-select>
</el-select>
<p
class=
"search-keywords-checked"
v-if=
"searchKeywordsCheckMsg"
>
{{searchKeywordsCheckMsg}}
</p>
</el-form-item>
</el-form-item>
<el-form-item
label=
"名称"
prop=
"username"
>
<el-form-item
label=
"名称"
prop=
"username"
>
<el-input
v-model=
"form.username"
size=
"small"
></el-input>
<el-input
v-model=
"form.username"
size=
"small"
></el-input>
...
@@ -48,10 +60,10 @@
...
@@ -48,10 +60,10 @@
import
{
getAccountList
,
searchUserList
,
createAccount
,
updateAccount
,
deleteAccount
,
operateLog
}
from
'@api/common'
import
{
getAccountList
,
searchUserList
,
createAccount
,
updateAccount
,
deleteAccount
,
operateLog
}
from
'@api/common'
import
{
mapGetters
}
from
'vuex'
import
{
mapGetters
}
from
'vuex'
import
_
from
'lodash'
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}
$/
export
default
{
export
default
{
data
()
{
data
()
{
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}
$/
const
checkMobile
=
(
rule
,
value
,
callback
)
=>
{
const
checkMobile
=
(
rule
,
value
,
callback
)
=>
{
if
(
value
)
{
if
(
value
)
{
if
(
!
MOBILE_REG
.
test
(
value
))
{
if
(
!
MOBILE_REG
.
test
(
value
))
{
...
@@ -95,6 +107,15 @@ export default {
...
@@ -95,6 +107,15 @@ export default {
{
validator
:
checkEmail
,
trigger
:
'blur'
}
{
validator
:
checkEmail
,
trigger
:
'blur'
}
]
]
},
},
searchType
:
'username'
,
searchTypeOptions
:
{
username
:
'用户名'
,
nickname
:
'昵称'
,
email
:
'邮箱'
,
mobile
:
'手机号'
,
id
:
'ID'
},
searchKeywordsCheckMsg
:
''
,
searchUsersloading
:
false
,
searchUsersloading
:
false
,
userList
:
[],
userList
:
[],
deleteId
:
''
,
deleteId
:
''
,
...
@@ -143,20 +164,29 @@ export default {
...
@@ -143,20 +164,29 @@ export default {
handleBtn
()
{
handleBtn
()
{
if
(
this
.
dialogType
===
'delete'
)
{
if
(
this
.
dialogType
===
'delete'
)
{
this
.
fetchDeleteAccount
()
this
.
fetchDeleteAccount
()
this
.
dialogVisible
=
false
}
else
{
}
else
{
this
.
$refs
.
ruleForm
.
validate
((
valid
)
=>
{
this
.
$refs
.
ruleForm
.
validate
((
valid
)
=>
{
if
(
valid
)
{
if
(
valid
)
{
this
.
dialogType
===
'add'
?
this
.
fetchCreateAccount
()
:
this
.
fetchUpdateAccount
()
this
.
dialogType
===
'add'
?
this
.
fetchCreateAccount
()
:
this
.
fetchUpdateAccount
()
this
.
dialogVisible
=
false
}
}
});
});
}
}
this
.
dialogVisible
=
false
},
},
fetchUserList
(
val
)
{
fetchUserList
(
val
)
{
if
(
val
)
{
if
(
val
)
{
if
(
this
.
searchType
===
'email'
&&
!
EMAIL_REG
.
test
(
val
))
{
this
.
searchKeywordsCheckMsg
=
'邮箱格式错误'
this
.
userList
=
[]
}
else
if
(
this
.
searchType
===
'mobile'
&&
!
MOBILE_REG
.
test
(
val
))
{
this
.
searchKeywordsCheckMsg
=
'手机号格式错误'
this
.
userList
=
[]
}
else
{
const
params
=
{
const
params
=
{
nickname
:
val
[
this
.
searchType
]
:
val
}
}
this
.
searchKeywordsCheckMsg
=
''
this
.
searchUsersloading
=
true
;
this
.
searchUsersloading
=
true
;
searchUserList
(
params
).
then
((
res
)
=>
{
searchUserList
(
params
).
then
((
res
)
=>
{
this
.
searchUsersloading
=
false
;
this
.
searchUsersloading
=
false
;
...
@@ -165,6 +195,7 @@ export default {
...
@@ -165,6 +195,7 @@ export default {
}
}
}).
catch
(()
=>
{})
}).
catch
(()
=>
{})
}
}
}
},
},
fetchAccountList
()
{
fetchAccountList
()
{
const
params
=
{
const
params
=
{
...
@@ -255,6 +286,15 @@ h5{
...
@@ -255,6 +286,15 @@ h5{
box-sizing
:
border-box
;
box-sizing
:
border-box
;
padding
:
14px
14px
6px
;
padding
:
14px
14px
6px
;
}
}
.search-keywords-checked
{
color
:
#F56C6C
;
font-size
:
12px
;
line-height
:
1
;
padding-top
:
4px
;
position
:
absolute
;
top
:
100%
;
right
:
0
;
}
.account
::v-deep
.el-dialog__header
{
.account
::v-deep
.el-dialog__header
{
padding-top
:
14px
;
padding-top
:
14px
;
}
}
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论