Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
C
center-live
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
EzijingWeb
center-live
Commits
0bbc187f
提交
0bbc187f
authored
4月 27, 2021
作者:
pengxiaohui
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
修改bug
上级
b8ed77c9
全部展开
隐藏空白字符变更
内嵌
并排
正在显示
27 个修改的文件
包含
710 行增加
和
195 行删除
+710
-195
common.js
src/api/common.js
+1
-1
system.js
src/api/system.js
+1
-1
index.vue
src/components/MeetingSuccessDialog/index.vue
+51
-10
index.vue
src/components/Schedule/index.vue
+4
-1
DialogCopyInvite.vue
src/components/TableHandles/DialogCopyInvite.vue
+6
-0
DialogDetails.vue
src/components/TableHandles/DialogDetails.vue
+1
-2
index.vue
src/components/TableHandles/index.vue
+7
-5
header.vue
src/components/layout/header.vue
+1
-1
NewPopover.vue
src/pages/calendar/day/components/NewPopover.vue
+14
-16
index.vue
src/pages/calendar/index.vue
+11
-11
index.vue
src/pages/calendar/list/index.vue
+3
-3
index-old.vue
src/pages/meeting/index-old.vue
+3
-3
index.vue
src/pages/meeting/index.vue
+4
-3
index.vue
src/pages/meeting/tencent-meeting-old/index.vue
+0
-0
index.vue
src/pages/meeting/tencent-meeting-test/index.vue
+0
-34
page-account-create.vue
...ages/meeting/tencent-meeting-test/page-account-create.vue
+0
-13
page-create.vue
src/pages/meeting/tencent-meeting-test/page-create.vue
+0
-28
page-update.vue
src/pages/meeting/tencent-meeting-test/page-update.vue
+0
-46
MeetingForm.vue
src/pages/meeting/tencent-meeting/components/MeetingForm.vue
+0
-0
index.vue
src/pages/meeting/tencent-meeting/index.vue
+0
-0
meeting-account-create.vue
src/pages/meeting/tencent-meeting/meeting-account-create.vue
+272
-0
meeting-create.vue
src/pages/meeting/tencent-meeting/meeting-create.vue
+104
-0
meeting-update.vue
src/pages/meeting/tencent-meeting/meeting-update.vue
+178
-0
index.vue
src/pages/search/index.vue
+8
-5
index.vue
src/pages/system/account/index.vue
+8
-8
routes.js
src/router/routes.js
+28
-4
style.scss
src/style.scss
+5
-0
没有找到文件。
src/api/common.js
浏览文件 @
0bbc187f
...
@@ -3,7 +3,7 @@ import httpRequest from '@/utils/axios'
...
@@ -3,7 +3,7 @@ import httpRequest from '@/utils/axios'
* 操作日志
* 操作日志
*/
*/
export
function
operateLog
(
params
)
{
export
function
operateLog
(
params
)
{
const
logMsg
=
`操作人:
${
params
.
user
.
nickname
}
,操作
人id:
${
params
.
user
.
id
}
,操作
:
${
params
.
type
}
`
const
logMsg
=
`操作人:
${
params
.
user
.
nickname
}
,操作:
${
params
.
type
}
`
const
data
=
{
const
data
=
{
detail
:
logMsg
detail
:
logMsg
}
}
...
...
src/api/system.js
浏览文件 @
0bbc187f
...
@@ -3,7 +3,7 @@ import httpRequest from '@/utils/axios'
...
@@ -3,7 +3,7 @@ import httpRequest from '@/utils/axios'
* 操作日志
* 操作日志
*/
*/
export
function
operateLog
(
params
)
{
export
function
operateLog
(
params
)
{
const
logMsg
=
`操作人:
${
params
.
user
.
nickname
}
,操作
人id:
${
params
.
user
.
id
}
,操作
:
${
params
.
type
}
`
const
logMsg
=
`操作人:
${
params
.
user
.
nickname
}
,操作:
${
params
.
type
}
`
const
data
=
{
const
data
=
{
detail
:
logMsg
detail
:
logMsg
}
}
...
...
src/components/MeetingSuccessDialog/index.vue
浏览文件 @
0bbc187f
<
template
>
<
template
>
<el-dialog
:title=
"`会议号$
{details.meeting_code ? ':' + details.meeting_code : ''}`" :visible="dialogVisible" width="520" :close-on-click-modal="false" append-to-body center @close="dialogClose">
<el-dialog
class=
"meeting-success-dialog"
:title=
"`会议号$
{details.meeting_code ? ':' + details.meeting_code : ''}`" :visible="dialogVisible" width="520" :close-on-click-modal="false" center @close="dialogClose">
<el-form
class=
"dialog-meeting-details"
label-width=
"90px"
ref=
"details"
>
<p
style=
"padding-left:28px;margin-bottom:10px;"
v-if=
"details.sso_user"
>
{{
details
.
sso_user
.
username
}}
邀请您参加腾讯会议
</p>
<el-form
class=
"dialog-meeting-details"
label-width=
"100px"
ref=
"details"
>
<el-form-item
label=
"会议主题:"
>
<el-form-item
label=
"会议主题:"
>
{{
details
.
subject
}}
{{
details
.
subject
}}
</el-form-item>
</el-form-item>
<el-form-item
label=
"会议时间:"
>
<el-form-item
label=
"会议时间:"
>
{{
details
.
start_time
|
timeFormat
(
'{y
}
-{m
}
-{d
}
{h
}
:{i
}
'
)
}}
-
{{
details
.
end_time
|
timeFormat
(
'{h
}
:{i
}
'
)
}}
(
GMT
+
08
:
00
)
{{
details
.
start_time
|
timeFormat
(
'{y
}
-{m
}
-{d
}
{h
}
:{i
}
'
)
}}
-
{{
details
.
end_time
|
timeFormat
(
'{h
}
:{i
}
'
)
}}
(
GMT
+
08
:
00
)
中国标准时间
-
北京
<
template
v
-
if
=
"details.meeting_type === 1"
>
,
{{
details
.
recurring_rule
.
recurring_type
|
recurringTypeFilter
}}
<
template
v
-
if
=
"details.recurring_rule.recurring_type > 1"
>
{{
recurringDateShow
}}
<
/template
>
<
/template
>
<
/el-form-item
>
<
/el-form-item
>
<
el
-
form
-
item
label
=
"会议链接:"
>
<
el
-
form
-
item
label
=
"会议链接:"
>
{{
details
.
join_url
}}
{{
details
.
join_url
}}
...
@@ -13,9 +18,15 @@
...
@@ -13,9 +18,15 @@
<
el
-
form
-
item
label
=
"会议号:"
>
<
el
-
form
-
item
label
=
"会议号:"
>
{{
details
.
meeting_code
}}
{{
details
.
meeting_code
}}
<
/el-form-item
>
<
/el-form-item
>
<
el
-
form
-
item
label
=
"会议密码:"
v
-
if
=
"details.password"
>
{{
details
.
password
}}
<
/el-form-item
>
<
el
-
form
-
item
label
=
"会议直播:"
v
-
if
=
"details.enable_live === 1"
>
<
el
-
form
-
item
label
=
"会议直播:"
v
-
if
=
"details.enable_live === 1"
>
{{
details
.
live_config
.
live_addr
}}
{{
details
.
live_config
.
live_addr
}}
<
/el-form-item
>
<
/el-form-item
>
<
el
-
form
-
item
label
=
"会议直播密码:"
v
-
if
=
"details.enable_live === 1 && details.live_config.live_password"
>
{{
details
.
live_config
.
live_password
}}
<
/el-form-item
>
<
/el-form
>
<
/el-form
>
<
span
slot
=
"footer"
class
=
"dialog-footer"
>
<
span
slot
=
"footer"
class
=
"dialog-footer"
>
<
el
-
button
size
=
"mini"
@
click
=
"copyText"
>
复制文字
<
/el-button
>
<
el
-
button
size
=
"mini"
@
click
=
"copyText"
>
复制文字
<
/el-button
>
...
@@ -38,10 +49,40 @@ export default {
...
@@ -38,10 +49,40 @@ export default {
default
:
false
default
:
false
}
}
}
,
}
,
computed
:
{
recurringDateShow
()
{
if
(
this
.
details
.
recurring_rule
.
recurring_type
===
4
)
{
return
dateFormat
(
this
.
details
.
start_time
,
'({d
}
日)'
)
}
else
{
return
dateFormat
(
this
.
details
.
start_time
,
'(周{a
}
)'
)
}
}
}
,
filters
:
{
filters
:
{
timeFormat
(
val
,
fmt
)
{
timeFormat
(
val
,
fmt
)
{
fmt
=
fmt
||
'{y
}
年{m
}
月{d
}
日'
fmt
=
fmt
||
'{y
}
年{m
}
月{d
}
日'
return
dateFormat
(
val
,
fmt
)
return
dateFormat
(
val
,
fmt
)
}
,
recurringTypeFilter
(
val
)
{
let
result
=
''
switch
(
val
)
{
case
0
:
result
=
'每天'
break
case
1
:
result
=
'每个工作日'
break
case
2
:
result
=
'每周'
break
case
3
:
result
=
'每两周'
break
case
4
:
result
=
'每月'
break
}
return
result
}
}
}
,
}
,
methods
:
{
methods
:
{
...
@@ -78,22 +119,21 @@ export default {
...
@@ -78,22 +119,21 @@ export default {
}
}
<
/script
>
<
/script
>
<
style
scoped
>
<
style
scoped
>
::
v
-
deep
.
el
-
dialog__header
{
.
meeting
-
success
-
dialog
::
v
-
deep
.
el
-
dialog__header
{
padding
-
top
:
14
px
;
padding
-
top
:
14
px
;
}
}
::
v
-
deep
.
el
-
dialog__headerbtn
{
.
meeting
-
success
-
dialog
::
v
-
deep
.
el
-
dialog__headerbtn
{
top
:
12
px
;
top
:
12
px
;
right
:
12
px
;
right
:
12
px
;
}
}
::
v
-
deep
.
el
-
dialog__body
{
.
meeting
-
success
-
dialog
::
v
-
deep
.
el
-
dialog__body
{
padding
:
10
px
0
;
padding
:
10
px
0
;
margin
:
0
20
px
;
margin
:
0
20
px
;
border
:
1
px
solid
#
DBDBDB
;
}
}
::
v
-
deep
.
el
-
dialog__footer
{
.
meeting
-
success
-
dialog
::
v
-
deep
.
el
-
dialog__footer
{
padding
-
bottom
:
16
px
;
padding
-
bottom
:
16
px
;
}
}
::
v
-
deep
.
el
-
dialog
.
el
-
form
-
item
{
.
meeting
-
success
-
dialog
::
v
-
deep
.
el
-
dialog
.
el
-
form
-
item
{
margin
:
0
;
margin
-
bottom
:
10
px
;
}
}
<
/style>
<
/style>
\ No newline at end of file
src/components/Schedule/index.vue
浏览文件 @
0bbc187f
...
@@ -369,10 +369,13 @@ export default {
...
@@ -369,10 +369,13 @@ export default {
}
}
.time-now
span
{
.time-now
span
{
color
:
#FD1E1E
;
color
:
#FD1E1E
;
background-color
:
#fff
;
padding
:
5px
0
;
}
}
.time-now
::v-deep
.el-divider
{
.time-now
::v-deep
.el-divider
{
background-color
:
#FD0000
;
background-color
:
#FD0000
;
margin
:
0
margin
:
0
;
width
:
calc
(
100%
+
2px
);
}
}
.newPopoverBtn
{
.newPopoverBtn
{
position
:
fixed
;
position
:
fixed
;
...
...
src/components/TableHandles/DialogCopyInvite.vue
浏览文件 @
0bbc187f
...
@@ -12,9 +12,15 @@
...
@@ -12,9 +12,15 @@
<
el
-
form
-
item
label
=
"会议号:"
>
<
el
-
form
-
item
label
=
"会议号:"
>
{{
details
.
meeting_code
}}
{{
details
.
meeting_code
}}
<
/el-form-item
>
<
/el-form-item
>
<
el
-
form
-
item
label
=
"会议密码:"
v
-
if
=
"details.password"
>
{{
details
.
password
}}
<
/el-form-item
>
<
el
-
form
-
item
label
=
"会议直播:"
v
-
if
=
"details.enable_live === 1"
>
<
el
-
form
-
item
label
=
"会议直播:"
v
-
if
=
"details.enable_live === 1"
>
{{
details
.
live_config
.
live_addr
}}
{{
details
.
live_config
.
live_addr
}}
<
/el-form-item
>
<
/el-form-item
>
<
el
-
form
-
item
label
=
"会议直播密码:"
v
-
if
=
"details.enable_live === 1 && details.live_config.live_password"
>
{{
details
.
live_config
.
live_password
}}
<
/el-form-item
>
<
el
-
form
-
item
label
=
"手机拨号入会:"
v
-
if
=
"false"
>
<
el
-
form
-
item
label
=
"手机拨号入会:"
v
-
if
=
"false"
>
<
p
>+
8675536550000
,,
526430840
#
(
中国大陆)
<
/p
>
<
p
>+
8675536550000
,,
526430840
#
(
中国大陆)
<
/p
>
<
p
>+
85230018898
,,
526430840
#
(
中国香港)
<
/p
>
<
p
>+
85230018898
,,
526430840
#
(
中国香港)
<
/p
>
...
...
src/components/TableHandles/DialogDetails.vue
浏览文件 @
0bbc187f
...
@@ -85,7 +85,6 @@ export default {
...
@@ -85,7 +85,6 @@ export default {
if
(
list
&&
Array
.
isArray
(
list
))
{
if
(
list
&&
Array
.
isArray
(
list
))
{
list
.
forEach
((
it
,
index
)
=>
{
list
.
forEach
((
it
,
index
)
=>
{
if
(
it
.
download_address
)
{
if
(
it
.
download_address
)
{
console
.
log
(
it
.
download_address
)
// window.open(it.download_address, '_blank')
// window.open(it.download_address, '_blank')
setTimeout
(()
=>
{
setTimeout
(()
=>
{
this
.
funDownload
(
it
.
download_address
,
it
.
download_address
)
this
.
funDownload
(
it
.
download_address
,
it
.
download_address
)
...
@@ -95,7 +94,7 @@ export default {
...
@@ -95,7 +94,7 @@ export default {
}
}
}
,
}
,
funDownload
(
fileUrl
,
fileName
)
{
funDownload
(
fileUrl
,
fileName
)
{
console
.
log
(
fileUrl
)
//
console.log(fileUrl)
const
elink
=
document
.
createElement
(
'a'
)
// 创建一个a标签
const
elink
=
document
.
createElement
(
'a'
)
// 创建一个a标签
elink
.
download
=
fileName
;
// 设置a标签的下载属性
elink
.
download
=
fileName
;
// 设置a标签的下载属性
elink
.
style
.
display
=
'none'
;
// 将a标签设置为隐藏
elink
.
style
.
display
=
'none'
;
// 将a标签设置为隐藏
...
...
src/components/TableHandles/index.vue
浏览文件 @
0bbc187f
...
@@ -133,10 +133,10 @@ export default {
...
@@ -133,10 +133,10 @@ export default {
this
.
fetchMeetingDetails
()
this
.
fetchMeetingDetails
()
},
},
handleLive
()
{
handleLive
()
{
window
.
open
(
this
.
live_config
.
live_addr
,
'_blank'
);
window
.
open
(
this
.
rowData
.
live_config
.
live_addr
,
'_blank'
);
},
},
handleUpdate
()
{
handleUpdate
()
{
this
.
$router
.
push
({
path
:
'/meeting
'
,
query
:
{
type
:
'2'
,
meeting_id
:
this
.
rowData
.
meeting_id
,
sub_meeting_id
:
this
.
rowData
.
sub_meeting_id
}
})
this
.
$router
.
push
({
path
:
'/meeting
-update'
,
query
:
{
meeting_id
:
this
.
rowData
.
meeting_id
,
sub_meeting_id
:
this
.
rowData
.
sub_meeting_id
}
})
},
},
handleCancel
()
{
handleCancel
()
{
this
.
$confirm
(
'此操作将取消这场会议, 是否继续?'
,
'提示'
,
{
this
.
$confirm
(
'此操作将取消这场会议, 是否继续?'
,
'提示'
,
{
...
@@ -183,10 +183,12 @@ export default {
...
@@ -183,10 +183,12 @@ export default {
}
else
{
}
else
{
const
list
=
await
this
.
fetchMeetingRecordAddr
()
const
list
=
await
this
.
fetchMeetingRecordAddr
()
if
(
list
&&
Array
.
isArray
(
list
))
{
if
(
list
&&
Array
.
isArray
(
list
))
{
list
.
forEach
(
it
=>
{
list
.
forEach
(
(
it
,
index
)
=>
{
if
(
it
.
download_address
)
{
if
(
it
.
download_address
)
{
// window.open(it.download_address, '_blank')
// window.open(it.download_address, '_blank')
this
.
funDownload
(
it
.
download_address
,
it
.
download_address
)
setTimeout
(()
=>
{
this
.
funDownload
(
it
.
download_address
,
it
.
download_address
)
},
index
*
1000
)
}
}
})
})
}
}
...
@@ -199,7 +201,7 @@ export default {
...
@@ -199,7 +201,7 @@ export default {
elink
.
href
=
fileUrl
;
// 把之前处理好的地址赋给a标签的href
elink
.
href
=
fileUrl
;
// 把之前处理好的地址赋给a标签的href
document
.
body
.
appendChild
(
elink
);
// 将a标签添加到body中
document
.
body
.
appendChild
(
elink
);
// 将a标签添加到body中
elink
.
click
();
// 执行a标签的点击方法
elink
.
click
();
// 执行a标签的点击方法
URL
.
revokeObjectURL
(
elink
.
href
)
// 下载完成释放URL 对象
//
URL.revokeObjectURL(elink.href) // 下载完成释放URL 对象
document
.
body
.
removeChild
(
elink
)
// 移除a标签
document
.
body
.
removeChild
(
elink
)
// 移除a标签
},
},
fetchStopMeeting
()
{
fetchStopMeeting
()
{
...
...
src/components/layout/header.vue
浏览文件 @
0bbc187f
...
@@ -48,7 +48,7 @@ export default {
...
@@ -48,7 +48,7 @@ export default {
this
.
$store
.
dispatch
(
'app/toggleSideBar'
)
this
.
$store
.
dispatch
(
'app/toggleSideBar'
)
},
},
toMeeting
()
{
toMeeting
()
{
this
.
$router
.
push
(
'/meeting'
)
this
.
$router
.
push
(
'/meeting
-create
'
)
},
},
async
logout
()
{
async
logout
()
{
await
this
.
$store
.
dispatch
(
'logout'
)
await
this
.
$store
.
dispatch
(
'logout'
)
...
...
src/pages/calendar/day/components/NewPopover.vue
浏览文件 @
0bbc187f
...
@@ -125,21 +125,6 @@ export default {
...
@@ -125,21 +125,6 @@ export default {
live_subject
:
[{
validator
:
validateErrMsg
}],
live_subject
:
[{
validator
:
validateErrMsg
}],
live_summary
:
[{
validator
:
validateErrMsg
}]
live_summary
:
[{
validator
:
validateErrMsg
}]
},
},
// startDateOptions: {
// disabledDate(time) {
// return time.getTime()
<
Date
.
now
()
-
DAY_TIMESTAMP
;
// }
// },
// startTimeOptions: {
// start: getCurHalfHour('start'),
// step: '00:30',
// end: '23:30'
// },
// endTimeOptions: {
// start: getCurHalfHour('end'),
// step: '00:30',
// end: '23:30'
// },
details
:
{},
details
:
{},
dialogVisible
:
false
dialogVisible
:
false
}
}
...
@@ -275,7 +260,20 @@ export default {
...
@@ -275,7 +260,20 @@ export default {
});
});
},
},
more
()
{
more
()
{
this
.
$router
.
push
({
path
:
'/meeting'
,
query
:
{
type
:
'1'
,
account
:
this
.
data
.
accountId
,
start
:
this
.
startTimestamp
,
end
:
this
.
endTimestamp
}
})
const
query
=
{
account
:
this
.
data
.
accountId
,
start
:
this
.
startTimestamp
,
end
:
this
.
endTimestamp
}
if
(
this
.
form
.
subject
)
{
query
.
subject
=
this
.
form
.
subject
}
if
(
this
.
form
.
enable_live
)
{
query
.
enable_live
=
1
this
.
form
.
live_subject
&&
(
query
.
live_subject
=
this
.
form
.
live_subject
)
this
.
form
.
live_summary
&&
(
query
.
live_summary
=
this
.
form
.
live_summary
)
}
this
.
$router
.
push
({
path
:
'/meeting-account-create'
,
query
:
query
})
},
},
fetchCreateMeeting
()
{
fetchCreateMeeting
()
{
const
form
=
this
.
form
const
form
=
this
.
form
...
...
src/pages/calendar/index.vue
浏览文件 @
0bbc187f
...
@@ -13,10 +13,10 @@
...
@@ -13,10 +13,10 @@
</div>
</div>
<div
class=
"status-filter"
>
<div
class=
"status-filter"
>
<el-radio-group
v-model=
"filter.status"
>
<el-radio-group
v-model=
"filter.status"
>
<
el-radio
:label=
"9999"
>
全部
</el-radio
>
<
!--
<el-radio
:label=
"9999"
class=
"all"
>
全部
</el-radio>
--
>
<el-radio
:label=
"1"
>
进行中
</el-radio>
<el-radio
:label=
"1"
class=
"start"
>
进行中
</el-radio>
<el-radio
:label=
"0"
>
未开始
</el-radio>
<el-radio
:label=
"0"
class=
"not-started"
>
未开始
</el-radio>
<el-radio
:label=
"2"
>
已完成
</el-radio>
<el-radio
:label=
"2"
class=
"end"
>
已完成
</el-radio>
</el-radio-group>
</el-radio-group>
</div>
</div>
</div>
</div>
...
@@ -210,29 +210,29 @@ h5{
...
@@ -210,29 +210,29 @@ h5{
display
:
block
;
display
:
block
;
margin
-
bottom
:
10
px
;
margin
-
bottom
:
10
px
;
}
}
.
status
-
filter
::
v
-
deep
.
el
-
radio
:
first
-
child
.
el
-
radio__input
.
is
-
checked
.
el
-
radio__inner
{
.
status
-
filter
::
v
-
deep
.
el
-
radio
.
all
.
el
-
radio__input
.
is
-
checked
.
el
-
radio__inner
{
border
-
color
:
#
636363
;
border
-
color
:
#
636363
;
background
:
#
636363
;
background
:
#
636363
;
}
}
.
status
-
filter
::
v
-
deep
.
el
-
radio
:
nth
-
child
(
2
)
.
el
-
radio__input
.
is
-
checked
.
el
-
radio__inner
{
.
status
-
filter
::
v
-
deep
.
el
-
radio
.
start
.
el
-
radio__input
.
is
-
checked
.
el
-
radio__inner
{
border
-
color
:
#
409
eff
;
border
-
color
:
#
409
eff
;
background
:
#
409
eff
;
background
:
#
409
eff
;
}
}
.
status
-
filter
::
v
-
deep
.
el
-
radio
:
nth
-
child
(
3
)
.
el
-
radio__input
.
is
-
checked
.
el
-
radio__inner
{
.
status
-
filter
::
v
-
deep
.
el
-
radio
.
not
-
started
.
el
-
radio__input
.
is
-
checked
.
el
-
radio__inner
{
border
-
color
:
#
52
B837
;
border
-
color
:
#
52
B837
;
background
:
#
52
B837
;
background
:
#
52
B837
;
}
}
.
status
-
filter
::
v
-
deep
.
el
-
radio
:
last
-
child
.
el
-
radio__input
.
is
-
checked
.
el
-
radio__inner
{
.
status
-
filter
::
v
-
deep
.
el
-
radio
.
end
.
el
-
radio__input
.
is
-
checked
.
el
-
radio__inner
{
border
-
color
:
#
BFBFBF
;
border
-
color
:
#
BFBFBF
;
background
:
#
BFBFBF
;
background
:
#
BFBFBF
;
}
}
.
status
-
filter
::
v
-
deep
.
el
-
radio
:
first
-
child
.
el
-
radio__input
+
.
el
-
radio__label
{
.
status
-
filter
::
v
-
deep
.
el
-
radio
.
all
.
el
-
radio__input
+
.
el
-
radio__label
{
color
:
#
636363
;
color
:
#
636363
;
}
}
.
status
-
filter
::
v
-
deep
.
el
-
radio
:
nth
-
child
(
2
)
.
el
-
radio__input
+
.
el
-
radio__label
{
.
status
-
filter
::
v
-
deep
.
el
-
radio
.
start
.
el
-
radio__input
+
.
el
-
radio__label
{
color
:
#
409
eff
;
color
:
#
409
eff
;
}
}
.
status
-
filter
::
v
-
deep
.
el
-
radio
:
nth
-
child
(
3
)
.
el
-
radio__input
+
.
el
-
radio__label
{
.
status
-
filter
::
v
-
deep
.
el
-
radio
.
not
-
started
.
el
-
radio__input
+
.
el
-
radio__label
{
color
:
#
52
B837
;
color
:
#
52
B837
;
}
}
.
status
-
filter
::
v
-
deep
.
el
-
radio
:
last
-
child
.
el
-
radio__input
+
.
el
-
radio__label
{
.
status
-
filter
::
v
-
deep
.
el
-
radio
:
last
-
child
.
el
-
radio__input
+
.
el
-
radio__label
{
...
...
src/pages/calendar/list/index.vue
浏览文件 @
0bbc187f
<
template
>
<
template
>
<div
class=
"list"
>
<div
class=
"list"
>
<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
label=
"会议时间"
min-width=
"2
15
"
align=
"center"
>
<el-table-column
label=
"会议时间"
min-width=
"2
20
"
align=
"center"
>
<template
slot-scope=
"scope"
>
<template
slot-scope=
"scope"
>
<p
style=
"color: #aeaeae"
>
<p
style=
"color: #aeaeae"
>
<span
style=
"font-size: 18px; color: #606266"
>
{{
scope
.
row
.
start_time
|
dateFormat
(
'{d
}
'
)
}}
<
/span
>
<span
style=
"font-size: 18px; color: #606266"
>
{{
scope
.
row
.
start_time
|
dateFormat
(
'{d
}
'
)
}}
<
/span
>
...
@@ -53,7 +53,7 @@
...
@@ -53,7 +53,7 @@
<
/template
>
<
/template
>
<
/el-table-column
>
<
/el-table-column
>
<
el
-
table
-
column
prop
=
"sso_user.nickname"
label
=
"创建人"
min
-
width
=
"100"
align
=
"center"
><
/el-table-column
>
<
el
-
table
-
column
prop
=
"sso_user.nickname"
label
=
"创建人"
min
-
width
=
"100"
align
=
"center"
><
/el-table-column
>
<
el
-
table
-
column
label
=
"操作"
width
=
"2
2
0"
align
=
"center"
>
<
el
-
table
-
column
label
=
"操作"
width
=
"2
4
0"
align
=
"center"
>
<
template
slot
-
scope
=
"scope"
>
<
template
slot
-
scope
=
"scope"
>
<
table
-
handles
:
rowData
=
"scope.row"
@
refresh
=
"fetchMeetingList"
/>
<
table
-
handles
:
rowData
=
"scope.row"
@
refresh
=
"fetchMeetingList"
/>
<
/template
>
<
/template
>
...
@@ -110,7 +110,7 @@ export default {
...
@@ -110,7 +110,7 @@ export default {
result
=
'进行中'
result
=
'进行中'
break
break
case
2
:
case
2
:
result
=
'已
结束
'
result
=
'已
完成
'
break
break
}
}
return
result
return
result
...
...
src/pages/meeting/index-
test
.vue
→
src/pages/meeting/index-
old
.vue
浏览文件 @
0bbc187f
...
@@ -6,18 +6,18 @@
...
@@ -6,18 +6,18 @@
<!--
<el-radio-button
label=
"week"
>
周
</el-radio-button>
<!--
<el-radio-button
label=
"week"
>
周
</el-radio-button>
<el-radio-button
label=
"month"
>
月
</el-radio-button>
-->
<el-radio-button
label=
"month"
>
月
</el-radio-button>
-->
</el-radio-group>
</el-radio-group>
<tencent-meeting
-test
/>
<tencent-meeting
v-if=
"tabActive === 'tx'"
/>
</div>
</div>
</
template
>
</
template
>
<
script
>
<
script
>
import
TencentMeeting
Test
from
'./tencent-meeting-test
/index.vue'
import
TencentMeeting
from
'./tencent-meeting
/index.vue'
export
default
{
export
default
{
data
()
{
data
()
{
return
{
return
{
tabActive
:
'tx'
tabActive
:
'tx'
}
}
},
},
components
:
{
TencentMeeting
Test
}
components
:
{
TencentMeeting
}
}
}
</
script
>
</
script
>
<
style
scope
>
<
style
scope
>
...
...
src/pages/meeting/index.vue
浏览文件 @
0bbc187f
<
template
>
<
template
>
<div
class=
"
create-
meeting"
>
<div
class=
"meeting"
>
<el-radio-group
v-model=
"tabActive"
size=
"mini"
style=
"margin:14px 0 10px 40px;"
>
<el-radio-group
v-model=
"tabActive"
size=
"mini"
style=
"margin:14px 0 10px 40px;"
>
<el-radio-button
label=
"tx"
>
腾讯
</el-radio-button>
<el-radio-button
label=
"tx"
>
腾讯
</el-radio-button>
<el-radio-button
label=
"cc"
>
cc
</el-radio-button>
<el-radio-button
label=
"cc"
>
cc
</el-radio-button>
<!--
<el-radio-button
label=
"week"
>
周
</el-radio-button>
<!--
<el-radio-button
label=
"week"
>
周
</el-radio-button>
<el-radio-button
label=
"month"
>
月
</el-radio-button>
-->
<el-radio-button
label=
"month"
>
月
</el-radio-button>
-->
</el-radio-group>
</el-radio-group>
<tencent-meeting
v-if=
"tabActive === 'tx'"
/>
<tencent-meeting
v-if=
"tabActive === 'tx'"
/>
</div>
</div>
</
template
>
</
template
>
<
script
>
<
script
>
...
@@ -21,7 +21,7 @@ export default {
...
@@ -21,7 +21,7 @@ export default {
}
}
</
script
>
</
script
>
<
style
scope
>
<
style
scope
>
.
create-
meeting
{
.meeting
{
height
:
100%
;
height
:
100%
;
}
}
</
style
>
</
style
>
\ No newline at end of file
src/pages/meeting/tencent-meeting-old/index.vue
0 → 100644
浏览文件 @
0bbc187f
差异被折叠。
点击展开。
src/pages/meeting/tencent-meeting-test/index.vue
deleted
100644 → 0
浏览文件 @
b8ed77c9
<
template
>
<component
v-bind:is=
"currentPage"
></component>
</
template
>
<
script
>
import
PageCreate
from
'./page-create'
import
PageAccountCreate
from
'./page-account-create'
import
PageUpdate
from
'./page-update'
export
default
{
data
()
{
return
{
currentPage
:
'PageCreate'
}
},
components
:
{
PageCreate
,
PageAccountCreate
,
PageUpdate
},
watch
:
{
$route
:
{
handler
:
function
(
nv
,
ov
)
{
const
query
=
this
.
$route
.
query
console
.
log
(
query
)
if
(
query
.
type
===
'1'
)
{
this
.
currentPage
=
'PageAccountCreate'
}
else
if
(
query
.
type
===
'2'
)
{
console
.
log
(
'edit'
)
this
.
currentPage
=
'PageUpdate'
}
else
{
this
.
currentPage
=
'PageCreate'
}
},
immediate
:
true
}
}
}
</
script
>
\ No newline at end of file
src/pages/meeting/tencent-meeting-test/page-account-create.vue
deleted
100644 → 0
浏览文件 @
b8ed77c9
<
template
>
<div>
同一账号下创建
</div>
</
template
>
<
script
>
export
default
({
data
()
{
return
{}
}
})
</
script
>
<
style
scoped
>
</
style
>
\ No newline at end of file
src/pages/meeting/tencent-meeting-test/page-create.vue
deleted
100644 → 0
浏览文件 @
b8ed77c9
<
template
>
<div
class=
"create"
>
<div
class=
"inner"
>
<meeting-form></meeting-form>
</div>
</div>
</
template
>
<
script
>
import
MeetingForm
from
'./components/MeetingForm'
export
default
({
data
()
{
return
{}
},
components
:
{
MeetingForm
}
})
</
script
>
<
style
scoped
>
.create
{
overflow-y
:
auto
;
height
:
calc
(
100%
-
52px
);
}
.inner
{
background
:
#fff
;
margin
:
0
15px
;
border-radius
:
4px
;
padding-bottom
:
10px
;
}
</
style
>
src/pages/meeting/tencent-meeting-test/page-update.vue
deleted
100644 → 0
浏览文件 @
b8ed77c9
<
template
>
<div>
修改
</div>
</
template
>
<
script
>
export
default
{
data
()
{
return
{
obj
:
{
timestamp
:
1618998029
,
nonce
:
'rgHMrr7Bg'
,
signature
:
'UG7wBenexQhiuD2wpCwuxkU0jqcj006d'
,
instanceid
:
1
,
userid
:
'6653195831513972736'
,
subject
:
'sewe'
,
start_time
:
'2021-04-21 17:30:00'
,
end_time
:
'2021-04-21 18:00:00'
,
password
:
''
,
meeting_type
:
1
,
recurring_rule
:
{
recurring_type
:
0
,
until_type
:
1
,
until_count
:
2
},
settings
:
{
mute_enable_join
:
false
,
auto_in_waiting_room
:
false
,
allow_in_before_host
:
true
,
auto_record_type
:
'none'
},
enable_live
:
0
,
live_config
:
{
live_subject
:
''
,
live_summary
:
''
,
enable_live_password
:
false
,
enable_live_im
:
false
},
managers
:
[
'6775725014348988416'
],
meeting_id
:
'8343776720283269132'
}
}
}
}
</
script
>
<
style
scoped
>
</
style
>
\ No newline at end of file
src/pages/meeting/tencent-meeting
-test
/components/MeetingForm.vue
→
src/pages/meeting/tencent-meeting/components/MeetingForm.vue
浏览文件 @
0bbc187f
差异被折叠。
点击展开。
src/pages/meeting/tencent-meeting/index.vue
浏览文件 @
0bbc187f
差异被折叠。
点击展开。
src/pages/meeting/tencent-meeting/meeting-account-create.vue
0 → 100644
浏览文件 @
0bbc187f
<
template
>
<div
class=
"meeting-account-create"
>
<div
class=
"inner"
>
<meeting-form
:data=
"reviewData"
:users=
"userList"
@
submitForm=
"handleSubmit"
@
dateChange=
"handleDateChange"
></meeting-form>
<div
class=
"right-container"
>
<div
class=
"title"
>
{{
reviewData
.
startDate
|
timeFormat
}}
{{
reviewData
.
startDate
|
timeFormat
(
'星期{a
}
'
)
}}
<
/div
>
<
schedule
:
options
=
"options"
:
data
=
"schedule"
:
date
=
"reviewData.startDate"
/>
<
div
class
=
"pre-time-range"
:
style
=
"{ top: getTop, height: getHeight
}
"
><
/div
>
<
/div
>
<
/div
>
<
meeting
-
success
-
dialog
:
dialogVisible
.
sync
=
"dialogVisible"
:
details
=
"details"
/>
<
/div
>
<
/template
>
<
script
>
import
Schedule
from
'@/components/Schedule'
import
MeetingForm
from
'./components/MeetingForm'
import
MeetingSuccessDialog
from
'@/components/MeetingSuccessDialog/index'
import
{
createMeeting
,
operateLog
,
getMeetingDetails
,
getNonpagedMeetingList
}
from
'@api/common'
import
{
timeTrans
,
getYMDByDate
,
dateFormat
,
isSameDate
}
from
'@/utils/dateAlgs'
import
{
mapGetters
}
from
'vuex'
export
default
({
data
()
{
return
{
dialogVisible
:
false
,
reviewData
:
{
startDate
:
''
,
startTime
:
''
,
endDate
:
''
,
endTime
:
''
}
,
userList
:
[],
details
:
{
}
,
userid
:
''
,
options
:
{
multi
:
false
,
// 是否为多日程
start
:
0
,
// init number 0-23
end
:
24
,
// init number 1-24且end>start
step
:
60
,
// 只接收15, 30, 60三种步伐
lineHeight
:
40
,
// init number 时间线间的高度
nowBeforeDisabled
:
true
,
readonly
:
true
,
popoverPos
:
'bottom'
}
,
schedule
:
{
userid
:
''
,
events
:
[]
}
}
}
,
computed
:
{
...
mapGetters
([
'user'
]),
startTimestamp
()
{
return
this
.
getFullDateTime
(
this
.
reviewData
.
startDate
,
this
.
reviewData
.
startTime
).
getTime
()
}
,
endTimestamp
()
{
return
this
.
getFullDateTime
(
this
.
reviewData
.
endDate
,
this
.
reviewData
.
endTime
).
getTime
()
}
,
getTop
()
{
const
timeRange
=
this
.
startTimestamp
-
this
.
startDotTimestamp
const
top
=
timeRange
/
((
60
*
1000
*
this
.
options
.
step
)
/
this
.
options
.
lineHeight
)
return
top
+
56
+
'px'
}
,
getHeight
()
{
const
start
=
timeTrans
(
this
.
startTimestamp
)
let
end
=
timeTrans
(
this
.
endTimestamp
)
if
(
!
isSameDate
(
start
,
end
))
{
end
=
new
Date
(
start
.
getFullYear
(),
start
.
getMonth
(),
start
.
getDate
(),
24
,
0
,
0
)
}
const
timeRange
=
end
.
getTime
()
-
start
.
getTime
()
const
h
=
timeRange
/
((
60
*
1000
*
this
.
options
.
step
)
/
this
.
options
.
lineHeight
)
return
h
-
2
+
'px'
}
,
startDotTimestamp
()
{
const
date
=
this
.
reviewData
.
startDate
const
startHour
=
parseInt
(
this
.
options
.
start
)
return
new
Date
(
date
.
getFullYear
(),
date
.
getMonth
(),
date
.
getDate
(),
startHour
,
0
,
0
).
getTime
()
}
}
,
filters
:
{
timeFormat
(
val
,
fmt
)
{
fmt
=
fmt
||
'{y
}
年{m
}
月{d
}
日'
return
dateFormat
(
val
,
fmt
)
}
}
,
components
:
{
Schedule
,
MeetingForm
,
MeetingSuccessDialog
}
,
created
()
{
const
query
=
this
.
$route
.
query
console
.
log
(
query
)
if
(
query
.
account
)
{
this
.
userid
=
query
.
account
const
review
=
{
}
review
.
subject
=
query
.
subject
review
.
startDate
=
getYMDByDate
(
query
.
start
)
review
.
startTime
=
dateFormat
(
query
.
start
,
'{h
}
:{i
}
'
)
review
.
endDate
=
getYMDByDate
(
query
.
end
)
review
.
endTime
=
dateFormat
(
query
.
end
,
'{h
}
:{i
}
'
)
if
(
query
.
enable_live
===
'1'
)
{
review
.
enable_live
=
true
review
.
live_config
=
{
live_subject
:
query
.
live_subject
||
''
,
live_summary
:
query
.
live_summary
||
''
}
}
this
.
reviewData
=
review
}
this
.
fetchMeetingList
()
}
,
watch
:
{
dialogVisible
:
{
handler
:
function
(
nv
)
{
if
(
!
nv
)
{
this
.
goList
()
}
}
}
}
,
methods
:
{
handleSubmit
(
params
)
{
this
.
fetchCreateMeeting
(
params
)
}
,
handleDateChange
(
val
)
{
let
refreshList
=
false
if
(
!
isSameDate
(
val
.
startDate
,
this
.
reviewData
.
startDate
))
{
refreshList
=
true
}
this
.
reviewData
.
startDate
=
val
.
startDate
this
.
reviewData
.
startTime
=
val
.
startTime
this
.
reviewData
.
endDate
=
val
.
endDate
this
.
reviewData
.
endTime
=
val
.
endTime
refreshList
&&
this
.
fetchMeetingList
()
}
,
getFullDateTime
(
date
,
timeStr
)
{
const
hmArr
=
timeStr
.
split
(
':'
)
const
h
=
parseInt
(
hmArr
[
0
])
const
s
=
parseInt
(
hmArr
[
1
])
return
new
Date
(
date
.
getFullYear
(),
date
.
getMonth
(),
date
.
getDate
(),
h
,
s
,
0
)
}
,
goList
()
{
this
.
$router
.
push
(
'/calendar'
)
}
,
async
showMeetingDetails
(
obj
)
{
const
loading
=
this
.
$loading
({
lock
:
true
,
text
:
'获取腾讯会议详情,请稍后...'
,
spinner
:
'el-icon-loading'
,
background
:
'rgba(0, 0, 0, 0.7)'
}
);
const
params
=
{
meeting_id
:
obj
.
meeting_id
}
if
(
Array
.
isArray
(
obj
.
sub_meetings
)
&&
obj
.
sub_meetings
.
length
>
0
)
{
params
.
sub_meeting_id
=
obj
.
sub_meetings
[
0
].
sub_meeting_id
}
const
details
=
await
this
.
fetchMeetingDetails
(
params
)
loading
.
close
()
this
.
details
=
details
this
.
dialogVisible
=
true
}
,
fetchCreateMeeting
(
params
)
{
const
loading
=
this
.
$loading
({
lock
:
true
,
text
:
'创建腾讯会议中,请稍后...'
,
spinner
:
'el-icon-loading'
,
background
:
'rgba(0, 0, 0, 0.7)'
}
)
params
.
userid
=
this
.
userid
createMeeting
(
params
).
then
(
res
=>
{
loading
.
close
()
if
(
res
.
code
===
0
&&
res
.
data
.
id
)
{
operateLog
({
type
:
`创建会议,被创建会议meeting_code:${res.data.meeting_code
}
`
,
user
:
this
.
user
}
)
this
.
$message
.
success
(
'创建腾讯会议成功'
)
this
.
showMeetingDetails
(
res
.
data
)
}
else
{
this
.
$message
.
error
(
res
.
message
||
res
.
msg
||
'创建腾讯会议失败'
)
}
}
)
}
,
fetchMeetingDetails
(
params
)
{
return
new
Promise
((
resolve
,
reject
)
=>
{
getMeetingDetails
(
params
).
then
(
res
=>
{
if
(
res
.
code
===
0
&&
res
.
data
.
id
)
{
resolve
(
res
.
data
)
}
else
{
reject
(
res
)
}
}
).
catch
((
err
)
=>
reject
(
err
))
}
)
}
,
fetchMeetingList
()
{
const
date
=
this
.
reviewData
.
startDate
const
start
=
dateFormat
(
date
)
const
end
=
dateFormat
(
new
Date
(
date
.
getFullYear
(),
date
.
getMonth
(),
date
.
getDate
()
+
1
))
const
params
=
{
userid
:
this
.
userid
,
start_time
:
start
,
end_time
:
end
}
getNonpagedMeetingList
(
params
).
then
((
res
)
=>
{
if
(
res
.
code
===
0
&&
res
.
data
&&
res
.
data
.
list
)
{
console
.
log
(
res
.
data
.
list
)
this
.
schedule
.
events
=
res
.
data
.
list
}
else
{
}
}
).
catch
()
}
}
}
)
<
/script
>
<
style
scoped
>
.
meeting
-
account
-
create
{
overflow
-
y
:
auto
;
height
:
calc
(
100
%
-
52
px
);
}
.
inner
{
display
:
flex
;
background
:
#
fff
;
margin
:
0
15
px
;
border
-
radius
:
4
px
;
padding
-
bottom
:
10
px
;
}
.
right
-
container
{
position
:
relative
;
width
:
45
%
;
box
-
sizing
:
border
-
box
;
padding
-
left
:
20
px
;
}
.
right
-
container
.
title
{
position
:
absolute
;
left
:
0
;
top
:
0
;
width
:
100
%
;
line
-
height
:
50
px
;
font
-
size
:
16
px
;
text
-
align
:
center
;
}
.
pre
-
time
-
range
{
position
:
absolute
;
left
:
70
px
;
width
:
calc
(
100
%
-
70
px
);
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
{
/* overflow:hidden; */
}
.
tx
-
meeting
-
container
::
v
-
deep
.
el
-
dialog__header
{
padding
-
top
:
14
px
;
}
.
tx
-
meeting
-
container
::
v
-
deep
.
el
-
dialog__headerbtn
{
top
:
12
px
;
right
:
12
px
;
}
.
tx
-
meeting
-
container
::
v
-
deep
.
el
-
dialog__body
{
padding
:
10
px
0
;
margin
:
0
20
px
;
border
:
1
px
solid
#
DBDBDB
;
}
.
tx
-
meeting
-
container
::
v
-
deep
.
el
-
dialog__footer
{
padding
-
bottom
:
16
px
;
}
.
tx
-
meeting
-
container
::
v
-
deep
.
el
-
dialog
.
el
-
form
-
item
{
margin
:
0
;
}
<
/style
>
src/pages/meeting/tencent-meeting/meeting-create.vue
0 → 100644
浏览文件 @
0bbc187f
<
template
>
<div
class=
"meeting-create"
>
<div
class=
"inner"
>
<meeting-form
@
submitForm=
"handleSubmit"
></meeting-form>
</div>
<meeting-success-dialog
:dialogVisible
.
sync=
"dialogVisible"
:details=
"details"
/>
</div>
</
template
>
<
script
>
import
MeetingForm
from
'./components/MeetingForm'
import
MeetingSuccessDialog
from
'@/components/MeetingSuccessDialog/index'
import
{
createMeeting
,
operateLog
,
getMeetingDetails
}
from
'@api/common'
import
{
mapGetters
}
from
'vuex'
export
default
({
data
()
{
return
{
dialogVisible
:
false
,
details
:
{}
}
},
computed
:
{
...
mapGetters
([
'user'
])
},
components
:
{
MeetingForm
,
MeetingSuccessDialog
},
watch
:
{
dialogVisible
:
{
handler
:
function
(
nv
)
{
if
(
!
nv
)
{
this
.
goList
()
}
}
}
},
methods
:
{
handleSubmit
(
params
)
{
console
.
log
(
params
)
this
.
fetchCreateMeeting
(
params
)
},
goList
()
{
this
.
$router
.
push
(
'/calendar'
)
},
async
showMeetingDetails
(
obj
)
{
const
loading
=
this
.
$loading
({
lock
:
true
,
text
:
'获取腾讯会议详情,请稍后...'
,
spinner
:
'el-icon-loading'
,
background
:
'rgba(0, 0, 0, 0.7)'
});
const
params
=
{
meeting_id
:
obj
.
meeting_id
}
if
(
Array
.
isArray
(
obj
.
sub_meetings
)
&&
obj
.
sub_meetings
.
length
>
0
)
{
params
.
sub_meeting_id
=
obj
.
sub_meetings
[
0
].
sub_meeting_id
}
const
details
=
await
this
.
fetchMeetingDetails
(
params
)
loading
.
close
()
this
.
details
=
details
this
.
dialogVisible
=
true
},
fetchCreateMeeting
(
params
)
{
const
loading
=
this
.
$loading
({
lock
:
true
,
text
:
'创建腾讯会议中,请稍后...'
,
spinner
:
'el-icon-loading'
,
background
:
'rgba(0, 0, 0, 0.7)'
})
createMeeting
(
params
).
then
(
res
=>
{
loading
.
close
()
if
(
res
.
code
===
0
&&
res
.
data
.
id
)
{
operateLog
({
type
:
`创建会议,被创建会议meeting_code:
${
res
.
data
.
meeting_code
}
`
,
user
:
this
.
user
})
this
.
$message
.
success
(
'创建腾讯会议成功'
)
this
.
showMeetingDetails
(
res
.
data
)
}
else
{
this
.
$message
.
error
(
res
.
message
||
res
.
msg
||
'创建腾讯会议失败'
)
}
})
},
fetchMeetingDetails
(
params
)
{
return
new
Promise
((
resolve
,
reject
)
=>
{
getMeetingDetails
(
params
).
then
(
res
=>
{
if
(
res
.
code
===
0
&&
res
.
data
.
id
)
{
console
.
log
(
res
.
data
)
resolve
(
res
.
data
)
}
else
{
reject
(
res
)
}
}).
catch
((
err
)
=>
reject
(
err
))
})
}
}
})
</
script
>
<
style
scoped
>
.meeting-create
{
overflow-y
:
auto
;
height
:
calc
(
100%
-
52px
);
}
.inner
{
background
:
#fff
;
margin
:
0
15px
;
border-radius
:
4px
;
padding-bottom
:
10px
;
}
</
style
>
src/pages/meeting/tencent-meeting/meeting-update.vue
0 → 100644
浏览文件 @
0bbc187f
<
template
>
<div
class=
"meeting-update"
>
<div
class=
"inner"
>
<meeting-form
:data=
"reviewData"
:users=
"userList"
@
submitForm=
"handleSubmit"
></meeting-form>
</div>
<meeting-success-dialog
:dialogVisible
.
sync=
"dialogVisible"
:details=
"details"
/>
</div>
</
template
>
<
script
>
import
MeetingForm
from
'./components/MeetingForm'
import
MeetingSuccessDialog
from
'@/components/MeetingSuccessDialog/index'
import
{
updateMeeting
,
operateLog
,
getMeetingDetails
}
from
'@api/common'
import
{
timeTrans
,
dateFormat
,
getYMDByDate
}
from
'@/utils/dateAlgs'
import
{
mapGetters
}
from
'vuex'
const
DAY_TIMESTAMP
=
8.64e7
export
default
({
data
()
{
return
{
reviewData
:
{},
userList
:
[],
dialogVisible
:
false
,
details
:
{}
}
},
computed
:
{
...
mapGetters
([
'user'
])
},
components
:
{
MeetingForm
,
MeetingSuccessDialog
},
watch
:
{
dialogVisible
:
{
handler
:
function
(
nv
)
{
if
(
!
nv
)
{
this
.
goList
()
}
}
}
},
created
()
{
this
.
reviewMeeting
()
},
methods
:
{
handleSubmit
(
params
)
{
this
.
fetchUpdateMeeting
(
params
)
},
goList
()
{
this
.
$router
.
push
(
'/calendar'
)
},
async
reviewMeeting
()
{
const
params
=
{
meeting_id
:
this
.
$route
.
query
.
meeting_id
}
if
(
this
.
$route
.
query
.
sub_meeting_id
)
{
params
.
sub_meeting_id
=
this
.
$route
.
query
.
sub_meeting_id
}
const
details
=
await
this
.
fetchMeetingDetails
(
params
)
const
reviewData
=
{}
this
.
details
=
details
const
start
=
timeTrans
(
details
.
start_time
)
const
end
=
timeTrans
(
details
.
end_time
)
this
.
userid
=
details
.
userid
reviewData
.
subject
=
details
.
subject
reviewData
.
startDate
=
getYMDByDate
(
start
)
reviewData
.
startTime
=
dateFormat
(
start
,
'{h}:{i}'
)
reviewData
.
endDate
=
getYMDByDate
(
end
)
reviewData
.
endTime
=
dateFormat
(
end
,
'{h}:{i}'
)
reviewData
.
meeting_type
=
details
.
meeting_type
if
(
details
.
meeting_type
===
1
)
{
const
recurringRule
=
details
.
recurring_rule
reviewData
.
recurring_rule
=
{
recurring_type
:
recurringRule
.
recurring_type
,
until_type
:
recurringRule
.
until_type
}
if
(
recurringRule
.
until_type
===
0
)
{
reviewData
.
recurring_rule
.
until_date
=
timeTrans
(
recurringRule
.
until_date
)
-
DAY_TIMESTAMP
}
else
{
reviewData
.
recurring_rule
.
until_count
=
recurringRule
.
until_count
}
}
if
(
details
.
password
)
{
reviewData
.
password
=
details
.
password
reviewData
.
hasPwd
=
true
}
const
settings
=
details
.
settings
reviewData
.
settings
=
{
auto_in_waiting_room
:
settings
.
auto_in_waiting_room
,
allow_in_before_host
:
settings
.
allow_in_before_host
,
auto_record_type
:
settings
.
auto_record_type
,
mute_enable_join
:
settings
.
mute_enable_join
}
if
(
settings
.
auto_record_type
!==
'none'
)
{
reviewData
.
auto_record
=
true
}
if
(
details
.
enable_live
===
1
)
{
const
liveConfig
=
details
.
live_config
reviewData
.
live_config
=
{
live_subject
:
liveConfig
.
live_subject
||
''
,
live_summary
:
liveConfig
.
live_summary
||
''
,
enable_live_password
:
Boolean
(
liveConfig
.
live_password
),
live_password
:
liveConfig
.
live_password
||
''
,
enable_live_im
:
liveConfig
.
enable_live_im
}
reviewData
.
enable_live
=
true
}
else
{
reviewData
.
enable_live
=
false
}
if
(
Array
.
isArray
(
details
.
managers
)
&&
details
.
managers
.
length
>
0
)
{
const
_managers
=
details
.
managers
.
map
(
it
=>
it
.
user_id
)
reviewData
.
managers
=
_managers
;
this
.
userList
=
details
.
managers
}
this
.
reviewData
=
reviewData
// console.log(reviewData)
},
async
showMeetingDetails
(
obj
)
{
const
loading
=
this
.
$loading
({
lock
:
true
,
text
:
'获取腾讯会议详情,请稍后...'
,
spinner
:
'el-icon-loading'
,
background
:
'rgba(0, 0, 0, 0.7)'
});
const
params
=
{
meeting_id
:
obj
.
meeting_id
}
if
(
Array
.
isArray
(
obj
.
sub_meetings
)
&&
obj
.
sub_meetings
.
length
>
0
)
{
params
.
sub_meeting_id
=
obj
.
sub_meetings
[
0
].
sub_meeting_id
}
const
details
=
await
this
.
fetchMeetingDetails
(
params
)
loading
.
close
()
this
.
details
=
details
this
.
dialogVisible
=
true
},
fetchUpdateMeeting
(
params
)
{
const
loading
=
this
.
$loading
({
lock
:
true
,
text
:
'修改腾讯会议中,请稍后...'
,
spinner
:
'el-icon-loading'
,
background
:
'rgba(0, 0, 0, 0.7)'
})
params
.
meeting_id
=
this
.
$route
.
query
.
meeting_id
params
.
userid
=
this
.
userid
updateMeeting
(
params
).
then
(
res
=>
{
loading
.
close
()
if
(
res
.
code
===
0
&&
res
.
data
.
id
)
{
operateLog
({
type
:
`修改会议,被修改会议meeting_code:
${
res
.
data
.
meeting_code
}
`
,
user
:
this
.
user
})
this
.
$message
.
success
(
'修改腾讯会议成功'
)
this
.
showMeetingDetails
(
res
.
data
)
}
else
{
this
.
$message
.
error
(
res
.
message
||
res
.
msg
||
'修改腾讯会议失败'
)
}
})
},
fetchMeetingDetails
(
params
)
{
return
new
Promise
((
resolve
,
reject
)
=>
{
getMeetingDetails
(
params
).
then
(
res
=>
{
if
(
res
.
code
===
0
&&
res
.
data
.
id
)
{
resolve
(
res
.
data
)
}
else
{
reject
(
res
)
}
}).
catch
((
err
)
=>
reject
(
err
))
})
}
}
})
</
script
>
<
style
scoped
>
.meeting-update
{
overflow-y
:
auto
;
height
:
calc
(
100%
-
52px
);
}
.inner
{
background
:
#fff
;
margin
:
0
15px
;
border-radius
:
4px
;
padding-bottom
:
10px
;
}
</
style
>
\ No newline at end of file
src/pages/search/index.vue
浏览文件 @
0bbc187f
...
@@ -24,8 +24,11 @@
...
@@ -24,8 +24,11 @@
<el-row>
<el-row>
<el-col
:span=
"8"
>
<el-col
:span=
"8"
>
<label>
会议创建人
</label>
<label>
会议创建人
</label>
<el-select
v-model=
"filter.userid"
placeholder=
"搜索用户"
size=
"mini"
filterable
remote
:remote-method=
"fetchUserList"
:loading=
"searchUsersloading"
>
<el-select
v-model=
"filter.userid"
placeholder=
"输入关键字搜索"
size=
"mini"
filterable
remote
:remote-method=
"fetchUserList"
:loading=
"searchUsersloading"
>
<el-option
:label=
"user.nickname"
:value=
"user.id"
v-for=
"user in userList"
:key=
"user.id"
/>
<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:0 20px 0 10px;"
>
{{
user
.
id
}}
</span>
</el-option>
</el-select>
</el-select>
</el-col>
</el-col>
<el-col
:span=
"11"
>
<el-col
:span=
"11"
>
...
@@ -39,7 +42,8 @@
...
@@ -39,7 +42,8 @@
</el-row>
</el-row>
</div>
</div>
<el-table
:data=
"listData"
style=
"width: 100%"
height=
"calc(100% - 116px)"
v-loading=
"loading"
>
<el-table
:data=
"listData"
style=
"width: 100%"
height=
"calc(100% - 116px)"
v-loading=
"loading"
>
<el-table-column
label=
"会议时间"
min-width=
"160"
align=
"center"
>
<el-table-column
prop=
"meeting_code"
label=
"会议号"
width=
"120"
></el-table-column>
<el-table-column
label=
"会议时间"
min-width=
"220"
align=
"center"
>
<template
slot-scope=
"scope"
>
<template
slot-scope=
"scope"
>
<p
style=
"color: #aeaeae"
>
<p
style=
"color: #aeaeae"
>
<span
style=
"font-size: 18px; color: #606266"
>
{{
scope
.
row
.
start_time
|
dateFormat
(
'{d
}
'
)
}}
<
/span
>
<span
style=
"font-size: 18px; color: #606266"
>
{{
scope
.
row
.
start_time
|
dateFormat
(
'{d
}
'
)
}}
<
/span
>
...
@@ -76,7 +80,6 @@
...
@@ -76,7 +80,6 @@
<
/el-popover
>
<
/el-popover
>
<
/template
>
<
/template
>
<
/el-table-column
>
<
/el-table-column
>
<!--
<
el
-
table
-
column
prop
=
"resource"
label
=
"会议来源"
width
=
"80"
><
/el-table-column> --
>
<
el
-
table
-
column
prop
=
"resource"
label
=
"会议状态"
min
-
width
=
"80"
align
=
"center"
>
<
el
-
table
-
column
prop
=
"resource"
label
=
"会议状态"
min
-
width
=
"80"
align
=
"center"
>
<
template
slot
-
scope
=
"scope"
>
<
template
slot
-
scope
=
"scope"
>
<
p
<
p
...
@@ -194,7 +197,7 @@ export default {
...
@@ -194,7 +197,7 @@ export default {
fetchUserList
(
val
)
{
fetchUserList
(
val
)
{
if
(
val
)
{
if
(
val
)
{
const
params
=
{
const
params
=
{
nick
name
:
val
user
name
:
val
}
}
this
.
searchUsersloading
=
true
;
this
.
searchUsersloading
=
true
;
searchUserList
(
params
).
then
((
res
)
=>
{
searchUserList
(
params
).
then
((
res
)
=>
{
...
...
src/pages/system/account/index.vue
浏览文件 @
0bbc187f
...
@@ -7,10 +7,10 @@
...
@@ -7,10 +7,10 @@
<el-table-column
prop=
"username"
label=
"名称"
min-width=
"120"
></el-table-column>
<el-table-column
prop=
"username"
label=
"名称"
min-width=
"120"
></el-table-column>
<el-table-column
prop=
"phone"
label=
"手机号码"
min-width=
"120"
></el-table-column>
<el-table-column
prop=
"phone"
label=
"手机号码"
min-width=
"120"
></el-table-column>
<el-table-column
prop=
"email"
label=
"邮箱"
min-width=
"140"
></el-table-column>
<el-table-column
prop=
"email"
label=
"邮箱"
min-width=
"140"
></el-table-column>
<el-table-column
label=
"操作"
min-width=
"60"
>
<el-table-column
label=
"操作"
min-width=
"60"
v-if=
"isSuperAdmin"
>
<template
slot-scope=
"scope"
>
<template
slot-scope=
"scope"
>
<el-button
type=
"text"
size=
"small"
@
click=
"handleEdit(scope.row)"
>
编辑
</el-button>
<el-button
type=
"text"
size=
"small"
@
click=
"handleEdit(scope.row)"
>
编辑
</el-button>
<el-button
type=
"text"
size=
"small"
@
click=
"handleDelete(scope.row.userid)"
v-if=
"isSuperAdmin"
>
删除
</el-button>
<el-button
type=
"text"
size=
"small"
@
click=
"handleDelete(scope.row.userid)"
>
删除
</el-button>
</
template
>
</
template
>
</el-table-column>
</el-table-column>
</el-table>
</el-table>
...
@@ -21,17 +21,17 @@
...
@@ -21,17 +21,17 @@
<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
style=
"position:relative;"
>
<el-form-item
label=
"ID"
prop=
"userid"
v-else
style=
"position:relative;"
>
<el-dropdown
@
command=
"(val) => searchType = val"
>
<
!-- <
el-dropdown @command="(val) => searchType = val">
<el-button style="width:85px;" size="small">
<el-button style="width:85px;" size="small">
{{searchTypeOptions[searchType]}}<i class="el-icon-arrow-down el-icon--right"></i>
{{searchTypeOptions[searchType]}}<i class="el-icon-arrow-down el-icon--right"></i>
</el-button>
</el-button>
<el-dropdown-menu slot="dropdown">
<el-dropdown-menu slot="dropdown">
<el-dropdown-item :command="key" v-for="(value, key) in searchTypeOptions" :key="key">{{value}}</el-dropdown-item>
<el-dropdown-item :command="key" v-for="(value, key) in searchTypeOptions" :key="key">{{value}}</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown-menu>
</el-dropdown>
</el-dropdown>
-->
<el-select
v-model=
"form.userid"
placeholder=
"输入关键字搜索"
size=
"small"
filterable
remote
:remote-method=
"fetchUserList"
:loading=
"searchUsersloading"
style=
"width:
22
0px;"
>
<el-select
v-model=
"form.userid"
placeholder=
"输入关键字搜索"
size=
"small"
filterable
remote
:remote-method=
"fetchUserList"
:loading=
"searchUsersloading"
style=
"width:
31
0px;"
>
<el-option
:label=
"user.
nick
name"
:value=
"user.id"
v-for=
"user in userList"
:key=
"user.id"
>
<el-option
:label=
"user.
user
name"
:value=
"user.id"
v-for=
"user in userList"
:key=
"user.id"
>
<span
style=
"float: left"
>
{{ user.
nick
name }}
</span>
<span
style=
"float: left"
>
{{ user.
user
name }}
</span>
<span
style=
"float: right; color: #8492a6; font-size: 13px; margin-left:10px;"
>
{{ user.id }}
</span>
<span
style=
"float: right; color: #8492a6; font-size: 13px; margin-left:10px;"
>
{{ user.id }}
</span>
</el-option>
</el-option>
</el-select>
</el-select>
...
@@ -96,7 +96,7 @@ export default {
...
@@ -96,7 +96,7 @@ export default {
email
:
''
email
:
''
},
},
rules
:
{
rules
:
{
userid
:
[{
required
:
true
,
message
:
'请
输入
ID'
,
trigger
:
'blur'
}],
userid
:
[{
required
:
true
,
message
:
'请
选择
ID'
,
trigger
:
'blur'
}],
username
:
[{
required
:
true
,
message
:
'请输入名称'
,
trigger
:
'blur'
}],
username
:
[{
required
:
true
,
message
:
'请输入名称'
,
trigger
:
'blur'
}],
phone
:
[
phone
:
[
{
required
:
true
,
message
:
'请输入手机号'
,
trigger
:
'blur'
},
{
required
:
true
,
message
:
'请输入手机号'
,
trigger
:
'blur'
},
...
...
src/router/routes.js
浏览文件 @
0bbc187f
...
@@ -7,29 +7,53 @@ export default [
...
@@ -7,29 +7,53 @@ export default [
redirect
:
'/calendar'
redirect
:
'/calendar'
},
},
{
{
path
:
'/meeting'
,
path
:
'/meeting
-old
'
,
component
:
Layout
,
component
:
Layout
,
children
:
[
children
:
[
{
{
path
:
''
,
path
:
''
,
component
:
()
=>
import
(
'@/pages/meeting/index.vue'
),
component
:
()
=>
import
(
'@/pages/meeting/index
-old
.vue'
),
name
:
'CreateLive'
,
name
:
'CreateLive'
,
meta
:
{
title
:
'创建直播'
,
affix
:
true
}
meta
:
{
title
:
'创建直播'
,
affix
:
true
}
}
}
]
]
},
},
{
{
path
:
'/meeting-
test
'
,
path
:
'/meeting-
create
'
,
component
:
Layout
,
component
:
Layout
,
children
:
[
children
:
[
{
{
path
:
''
,
path
:
''
,
component
:
()
=>
import
(
'@/pages/meeting/index
-test
.vue'
),
component
:
()
=>
import
(
'@/pages/meeting/index.vue'
),
name
:
'MeetingCreate'
,
name
:
'MeetingCreate'
,
meta
:
{
title
:
'创建直播'
,
affix
:
true
}
meta
:
{
title
:
'创建直播'
,
affix
:
true
}
}
}
]
]
},
},
{
path
:
'/meeting-update'
,
component
:
Layout
,
children
:
[
{
path
:
''
,
component
:
()
=>
import
(
'@/pages/meeting/index.vue'
),
name
:
'MeetingUpdate'
,
meta
:
{
title
:
'创建直播'
,
affix
:
true
}
}
]
},
{
path
:
'/meeting-account-create'
,
component
:
Layout
,
children
:
[
{
path
:
''
,
component
:
()
=>
import
(
'@/pages/meeting/index.vue'
),
name
:
'MeetingAccountCreate'
,
meta
:
{
title
:
'创建直播'
,
affix
:
true
}
}
]
},
{
{
path
:
'/calendar'
,
path
:
'/calendar'
,
component
:
Layout
,
component
:
Layout
,
...
...
src/style.scss
浏览文件 @
0bbc187f
...
@@ -108,3 +108,8 @@ body {
...
@@ -108,3 +108,8 @@ body {
opacity
:
0
;
opacity
:
0
;
transform
:
translateX
(
30px
);
transform
:
translateX
(
30px
);
}
}
/* element input,textarea font-family */
.el-input__inner
,
.el-textarea__inner
{
font-family
:
'PingFang SC'
,
'PingFangSC-Regular'
,
'Source Han Sans CN'
,
-
apple-system
,
'Microsoft YaHei'
,
'Helvetica'
,
'Arial'
,
Verdana
,
'Hiragino Sans GB'
,
'Wenquanyi Micro Hei'
,
sans-serif
;
}
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论