Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
C
center-live
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
EzijingWeb
center-live
Commits
0fe67720
提交
0fe67720
authored
4月 23, 2021
作者:
pengxiaohui
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
修复周期会议取消/删除就删掉全部的bug;修复修改会议开始时间和结束时间可选范围不正确的bug
上级
5ae997ee
隐藏空白字符变更
内嵌
并排
正在显示
8 个修改的文件
包含
133 行增加
和
574 行删除
+133
-574
index.vue
src/components/TableHandles/index.vue
+5
-1
NewPopover.vue
src/pages/calendar/day/components/NewPopover.vue
+73
-54
index.vue
src/pages/calendar/index.vue
+1
-1
DialogCopyInvite.vue
src/pages/calendar/list/components/DialogCopyInvite.vue
+0
-52
DialogDetails.vue
src/pages/calendar/list/components/DialogDetails.vue
+0
-133
TableHandles.vue
src/pages/calendar/list/components/TableHandles.vue
+0
-279
index.vue
src/pages/meeting/tencent-meeting/index.vue
+49
-53
index.vue
src/pages/search/index.vue
+5
-1
没有找到文件。
src/components/TableHandles/index.vue
浏览文件 @
0fe67720
...
@@ -216,8 +216,12 @@ export default {
...
@@ -216,8 +216,12 @@ export default {
})
})
},
},
fetchCancelMeeting
(
type
)
{
fetchCancelMeeting
(
type
)
{
const
row
=
this
.
rowData
const
params
=
{
const
params
=
{
meeting_id
:
this
.
rowData
.
meeting_id
meeting_id
:
row
.
meeting_id
}
if
(
row
.
meeting_type
===
1
)
{
params
.
sub_meeting_id
=
row
.
sub_meeting_id
}
}
const
msg
=
type
===
'cancel'
?
'会议取消'
:
'会议删除'
const
msg
=
type
===
'cancel'
?
'会议取消'
:
'会议删除'
cancelMeeting
(
params
).
then
(
res
=>
{
cancelMeeting
(
params
).
then
(
res
=>
{
...
...
src/pages/calendar/day/components/NewPopover.vue
浏览文件 @
0fe67720
...
@@ -34,11 +34,11 @@
...
@@ -34,11 +34,11 @@
<el-form-item
label=
"会议直播"
style=
"margin-bottom:12px;"
>
<el-form-item
label=
"会议直播"
style=
"margin-bottom:12px;"
>
<el-checkbox
v-model=
"form.enable_live"
@
change=
"updatePopper"
>
开启会议直播(用于分享给观看直播的用户)
</el-checkbox>
<el-checkbox
v-model=
"form.enable_live"
@
change=
"updatePopper"
>
开启会议直播(用于分享给观看直播的用户)
</el-checkbox>
</el-form-item>
</el-form-item>
<el-form-item
v-if=
"form.enable_live"
label=
"直播主题"
:required=
"form.enable_live"
prop=
"live
Theme
"
>
<el-form-item
v-if=
"form.enable_live"
label=
"直播主题"
:required=
"form.enable_live"
prop=
"live
_subject
"
>
<el-input
v-model=
"form.live
Theme
"
size=
"small"
/>
<el-input
v-model=
"form.live
_subject
"
size=
"small"
/>
</el-form-item>
</el-form-item>
<el-form-item
v-if=
"form.enable_live"
label=
"直播简介"
:required=
"form.enable_live"
prop=
"live
Desc
"
>
<el-form-item
v-if=
"form.enable_live"
label=
"直播简介"
:required=
"form.enable_live"
prop=
"live
_summary
"
>
<el-input
type=
"textarea"
v-model=
"form.live
Desc
"
></el-input>
<el-input
type=
"textarea"
v-model=
"form.live
_subject
"
></el-input>
</el-form-item>
</el-form-item>
<el-form-item
style=
"text-align:center;"
>
<el-form-item
style=
"text-align:center;"
>
<el-button
@
click=
"more"
size=
"mini"
>
更多选项
</el-button>
<el-button
@
click=
"more"
size=
"mini"
>
更多选项
</el-button>
...
@@ -50,7 +50,7 @@
...
@@ -50,7 +50,7 @@
</
template
>
</
template
>
<
script
>
<
script
>
import
MeetingSuccessDialog
from
'@/components/MeetingSuccessDialog/index'
import
MeetingSuccessDialog
from
'@/components/MeetingSuccessDialog/index'
import
{
timeTrans
,
dateFormat
,
getTimestampYMD
,
getCurHalfHour
}
from
'@/utils/dateAlgs'
import
{
dateFormat
,
getTimestampYMD
,
getCurHalfHour
}
from
'@/utils/dateAlgs'
import
{
createMeeting
,
operateLog
,
getMeetingDetails
}
from
'@api/common'
import
{
createMeeting
,
operateLog
,
getMeetingDetails
}
from
'@api/common'
import
{
mapGetters
}
from
'vuex'
import
{
mapGetters
}
from
'vuex'
const
DAY_TIMESTAMP
=
8.64e7
const
DAY_TIMESTAMP
=
8.64e7
...
@@ -89,15 +89,15 @@ export default {
...
@@ -89,15 +89,15 @@ export default {
}
}
// 当开启会议直播时,启用验证,处理callback
// 当开启会议直播时,启用验证,处理callback
const
validateErrMsg
=
(
rule
,
value
,
callback
)
=>
{
const
validateErrMsg
=
(
rule
,
value
,
callback
)
=>
{
if
(
this
.
form
.
isLiv
e
)
{
if
(
this
.
form
.
enable_live
&&
!
valu
e
)
{
const
errMsg
=
rule
.
field
===
'live
Theme
'
?
'请输入直播主题'
:
'请输入直播简介'
const
errMsg
=
rule
.
field
===
'live
_subject
'
?
'请输入直播主题'
:
'请输入直播简介'
callback
(
new
Error
(
errMsg
));
callback
(
new
Error
(
errMsg
));
}
else
{
}
else
{
callback
();
callback
();
}
}
};
};
return
{
return
{
timerClear
:
tru
e
,
timerClear
:
fals
e
,
form
:
{
form
:
{
subject
:
''
,
subject
:
''
,
startDate
:
this
.
date
,
startDate
:
this
.
date
,
...
@@ -125,21 +125,21 @@ export default {
...
@@ -125,21 +125,21 @@ export default {
live_subject
:
[{
validator
:
validateErrMsg
}],
live_subject
:
[{
validator
:
validateErrMsg
}],
live_summary
:
[{
validator
:
validateErrMsg
}]
live_summary
:
[{
validator
:
validateErrMsg
}]
},
},
startDateOptions
:
{
//
startDateOptions: {
disabledDate
(
time
)
{
//
disabledDate(time) {
return
time
.
getTime
()
<
Date
.
now
()
-
DAY_TIMESTAMP
;
//
return time.getTime()
<
Date
.
now
()
-
DAY_TIMESTAMP
;
}
//
}
},
//
},
startTimeOptions
:
{
//
startTimeOptions: {
start
:
getCurHalfHour
(
'start'
),
//
start: getCurHalfHour('start'),
step
:
'00:30'
,
//
step: '00:30',
end
:
'23:30'
//
end: '23:30'
},
//
},
endTimeOptions
:
{
//
endTimeOptions: {
start
:
getCurHalfHour
(
'end'
),
//
start: getCurHalfHour('end'),
step
:
'00:30'
,
//
step: '00:30',
end
:
'23:30'
//
end: '23:30'
},
//
},
details
:
{},
details
:
{},
dialogVisible
:
false
dialogVisible
:
false
}
}
...
@@ -152,6 +152,25 @@ export default {
...
@@ -152,6 +152,25 @@ export default {
endTimestamp
()
{
endTimestamp
()
{
return
this
.
getFullDateTime
(
this
.
form
.
endDate
,
this
.
form
.
endTime
).
getTime
()
return
this
.
getFullDateTime
(
this
.
form
.
endDate
,
this
.
form
.
endTime
).
getTime
()
},
},
startDateOptions
()
{
return
{
disabledDate
(
time
)
{
return
time
.
getTime
()
<
Date
.
now
()
-
DAY_TIMESTAMP
}
}
},
startTimeOptions
()
{
const
date
=
this
.
form
.
startDate
const
options
=
{
start
:
'00:00'
,
step
:
'00:30'
,
end
:
'23:30'
}
if
(
date
.
getTime
()
<=
Date
.
now
())
{
options
.
start
=
getCurHalfHour
(
'start'
)
}
return
options
},
endDateOptions
()
{
endDateOptions
()
{
const
_startDate
=
this
.
form
.
startDate
;
const
_startDate
=
this
.
form
.
startDate
;
return
{
return
{
...
@@ -159,6 +178,27 @@ export default {
...
@@ -159,6 +178,27 @@ export default {
return
getTimestampYMD
(
time
)
<
getTimestampYMD
(
_startDate
)
||
getTimestampYMD
(
time
)
>
getTimestampYMD
(
_startDate
)
+
DAY_TIMESTAMP
;
return
getTimestampYMD
(
time
)
<
getTimestampYMD
(
_startDate
)
||
getTimestampYMD
(
time
)
>
getTimestampYMD
(
_startDate
)
+
DAY_TIMESTAMP
;
}
}
}
}
},
endTimeOptions
()
{
const
{
startDate
,
endDate
,
startTime
}
=
this
.
form
const
fullDate
=
this
.
getFullDateTime
(
startDate
,
startTime
)
let
options
if
(
this
.
isSameDate
(
startDate
,
endDate
))
{
const
startTime
=
getCurHalfHour
(
'end'
,
fullDate
)
options
=
{
start
:
startTime
,
step
:
'00:30'
,
end
:
'23:30'
}
}
else
{
const
endTime
=
getCurHalfHour
(
'start'
,
fullDate
)
options
=
{
start
:
'00:00'
,
step
:
'00:30'
,
end
:
endTime
}
}
return
options
}
}
},
},
watch
:
{
watch
:
{
...
@@ -183,45 +223,22 @@ export default {
...
@@ -183,45 +223,22 @@ export default {
this
.
$emit
(
'refreshPopover'
,
Date
.
now
())
this
.
$emit
(
'refreshPopover'
,
Date
.
now
())
},
},
startDateChange
(
val
)
{
startDateChange
(
val
)
{
this
.
form
.
endDate
=
val
;
this
.
form
.
endDate
=
val
const
_startDate
=
timeTrans
(
this
.
form
.
startDate
);
this
.
startTimeChange
()
if
(
Date
.
parse
(
_startDate
)
>
Date
.
now
())
{
if
(
this
.
showSchedule
)
{
this
.
startTimeOptions
=
{
this
.
fetchMeetingList
()
start
:
'00:00'
,
step
:
'00:30'
,
end
:
'23:30'
}
}
else
{
this
.
startTimeOptions
=
{
start
:
getCurHalfHour
(
'start'
),
step
:
'00:30'
,
end
:
'23:30'
}
}
}
},
},
startTimeChange
(
val
)
{
startTimeChange
()
{
const
{
startDate
,
endDate
}
=
this
.
form
const
{
startDate
,
endDate
}
=
this
.
form
const
fullDate
=
this
.
getFullDateTime
(
startDate
,
val
)
if
(
this
.
isSameDate
(
startDate
,
endDate
))
{
if
(
this
.
isSameDate
(
startDate
,
endDate
))
{
const
startTime
=
getCurHalfHour
(
'end'
,
fullDate
)
this
.
form
.
endTime
=
this
.
endTimeOptions
.
start
this
.
form
.
endTime
=
startTime
this
.
endTimeOptions
=
{
start
:
startTime
,
step
:
'00:30'
,
end
:
'23:30'
}
}
else
{
}
else
{
const
endTime
=
getCurHalfHour
(
'start'
,
fullDate
)
this
.
form
.
endTime
=
this
.
endTimeOptions
.
end
this
.
form
.
endTime
=
endTime
;
this
.
endTimeOptions
=
{
start
:
'00:00'
,
step
:
'00:30'
,
end
:
endTime
}
}
}
},
},
endDateChange
()
{
endDateChange
()
{
this
.
startTimeChange
(
this
.
form
.
startTime
)
this
.
startTimeChange
()
},
},
getFullDateTime
(
date
,
timeStr
)
{
getFullDateTime
(
date
,
timeStr
)
{
const
hmArr
=
timeStr
.
split
(
':'
);
const
hmArr
=
timeStr
.
split
(
':'
);
...
@@ -293,6 +310,8 @@ export default {
...
@@ -293,6 +310,8 @@ export default {
this
.
$message
.
success
(
'创建腾讯会议成功'
)
this
.
$message
.
success
(
'创建腾讯会议成功'
)
this
.
fetchMeetingDetails
({
meeting_type
:
form
.
meeting_type
,
meeting_id
:
res
.
data
.
meeting_id
})
this
.
fetchMeetingDetails
({
meeting_type
:
form
.
meeting_type
,
meeting_id
:
res
.
data
.
meeting_id
})
this
.
$emit
(
'refreshData'
)
this
.
$emit
(
'refreshData'
)
}
else
{
this
.
$message
.
error
(
res
.
message
||
res
.
msg
||
'创建腾讯会议失败'
)
}
}
})
})
},
},
...
...
src/pages/calendar/index.vue
浏览文件 @
0fe67720
...
@@ -93,7 +93,7 @@ export default {
...
@@ -93,7 +93,7 @@ export default {
const
eVal
=
value
[
1
]
const
eVal
=
value
[
1
]
const
sDateFormat
=
dateFormat
(
sVal
,
'{y
}
年{m
}
月{d
}
日'
)
const
sDateFormat
=
dateFormat
(
sVal
,
'{y
}
年{m
}
月{d
}
日'
)
if
(
isSameDate
(
sVal
,
eVal
))
{
if
(
isSameDate
(
sVal
,
eVal
))
{
res
=
sDateFormat
res
=
sDateFormat
+
' '
+
dateFormat
(
eVal
,
'星期{a
}
'
)
}
else
if
(
dateFormat
(
sVal
,
'{y
}
年{m
}
'
)
===
dateFormat
(
eVal
,
'{y
}
年{m
}
'
))
{
}
else
if
(
dateFormat
(
sVal
,
'{y
}
年{m
}
'
)
===
dateFormat
(
eVal
,
'{y
}
年{m
}
'
))
{
res
=
sDateFormat
+
' - '
+
dateFormat
(
eVal
,
'{d
}
日'
)
res
=
sDateFormat
+
' - '
+
dateFormat
(
eVal
,
'{d
}
日'
)
}
else
if
(
dateFormat
(
sVal
,
'{y
}
年'
)
===
dateFormat
(
eVal
,
'{y
}
年'
))
{
}
else
if
(
dateFormat
(
sVal
,
'{y
}
年'
)
===
dateFormat
(
eVal
,
'{y
}
年'
))
{
...
...
src/pages/calendar/list/components/DialogCopyInvite.vue
deleted
100644 → 0
浏览文件 @
5ae997ee
<
template
>
<el-form
label-width=
"140px"
>
<el-form-item
label=
"会议主题:"
>
{{
details
.
subject
}}
</el-form-item>
<el-form-item
label=
"会议时间:"
>
{{
details
.
start_time
|
dateFormat
}}
-
{{
details
.
end_time
|
dateFormat
(
'{h
}
:{i
}
'
)
}}
(
GMT
+
08
:
00
)
<
/el-form-item
>
<
el
-
form
-
item
label
=
"会议链接:"
>
{{
details
.
join_url
}}
<
/el-form-item
>
<
el
-
form
-
item
label
=
"会议号:"
>
{{
details
.
meeting_code
}}
<
/el-form-item
>
<
el
-
form
-
item
label
=
"会议直播:"
v
-
if
=
"details.enable_live === 1"
>
{{
details
.
live_config
.
live_addr
}}
<
/el-form-item
>
<
el
-
form
-
item
label
=
"手机拨号入会:"
v
-
if
=
"false"
>
<
p
>+
8675536550000
,,
526430840
#
(
中国大陆)
<
/p
>
<
p
>+
85230018898
,,
526430840
#
(
中国香港)
<
/p
>
<
/el-form-item
>
<
el
-
form
-
item
label
=
"根据您的位置拨号:"
v
-
if
=
"false"
>
<
p
>+
8675536550000
(
中国大陆)
<
/p
>
<
p
>++
85230018898
(
中国香港)
<
/p
>
<
/el-form-item
>
<
/el-form
>
<
/template
>
<
script
>
import
{
dateFormat
}
from
'@/utils/dateAlgs'
export
default
{
props
:
{
rowData
:
{
}
,
details
:
{
}
}
,
computed
:
{
hasLive
()
{
return
this
.
rowData
.
hasLive
||
false
}
}
,
filters
:
{
dateFormat
(
value
,
fmt
)
{
return
dateFormat
(
value
,
fmt
||
'{y
}
年{m
}
月{d
}
日 {h
}
:{i
}
'
)
}
}
}
<
/script
>
<
style
scoped
>
::
v
-
deep
.
el
-
form
-
item
{
margin
:
0
;
}
<
/style>
\ No newline at end of file
src/pages/calendar/list/components/DialogDetails.vue
deleted
100644 → 0
浏览文件 @
5ae997ee
<
template
>
<el-form
label-width=
"140px"
>
<el-form-item
label=
"会议主题:"
>
{{
details
.
subject
}}
</el-form-item>
<el-form-item
label=
"会议时间:"
>
{{
details
.
start_time
|
dateFormat
}}
-
{{
details
.
end_time
|
dateFormat
(
'{h
}
:{i
}
'
)
}}
(
GMT
+
08
:
00
)
<
/el-form-item
>
<
el
-
form
-
item
label
=
"会议号:"
>
{{
details
.
meeting_code
}}
<
/el-form-item
>
<
el
-
form
-
item
label
=
"会议创建者:"
>
{{
rowData
.
sso_user
.
nickname
}}
<
/el-form-item
>
<
el
-
form
-
item
label
=
"会议主持人:"
>
<
span
v
-
for
=
"(it, index) in details.hosts"
:
key
=
"it.userid"
>
{{
it
.
username
}}
{{
index
>
0
?
'、'
:
''
}}
<
/span
>
<
/el-form-item
>
<
el
-
form
-
item
label
=
"会议管理员:"
>
<
span
v
-
for
=
"(it, index) in details.managers"
:
key
=
"it.userid"
>
{{
it
.
nickname
}}
{{
index
>
0
?
'、'
:
''
}}
<
/span
>
<
/el-form-item
>
<
el
-
form
-
item
label
=
"会议直播主题:"
v
-
if
=
"details.enable_live === 1"
>
{{
details
.
live_config
.
live_subject
}}
<
/el-form-item
>
<
el
-
form
-
item
label
=
"会议直播简介:"
v
-
if
=
"details.enable_live === 1"
>
<
p
style
=
"line-height:26px;padding:7px 10px 7px 0"
>
{{
details
.
live_config
.
live_summary
}}
<
/p
>
<
/el-form-item
>
<
el
-
form
-
item
label
=
"参会成员:"
v
-
if
=
"rowData.status === 2"
>
<
el
-
button
type
=
"text"
@
click
=
"handleExport"
>
导出
excel
<
/el-button
>
<
/el-form-item
>
<
el
-
form
-
item
label
=
"回放:"
v
-
if
=
"rowData.status === 2"
>
<
el
-
button
type
=
"text"
v
-
if
=
"hasRecord"
@
click
=
"handleDownload"
>
下载
<
/el-button
>
<
el
-
button
type
=
"text"
v
-
else
disabled
>
暂无回放
<
/el-button
>
<
/el-form-item
>
<
/el-form
>
<
/template
>
<
script
>
import
{
dateFormat
}
from
'@/utils/dateAlgs'
import
{
exportParticipants
,
getMeetingRecordAddr
}
from
'@api/common'
export
default
{
props
:
{
details
:
{
}
,
rowData
:
{
}
,
dialogType
:
{
}
}
,
computed
:
{
hasRecord
()
{
if
(
this
.
rowData
.
record_file_ids
&&
Array
.
isArray
(
this
.
rowData
.
record_file_ids
)
&&
this
.
rowData
.
record_file_ids
.
length
>
0
)
{
return
true
}
else
{
return
false
}
}
,
nowFormat
()
{
const
now
=
Date
.
now
()
const
_format
=
dateFormat
(
now
,
'{y
}
{m
}
{d
}
{h
}
{i
}
{s
}
'
)
const
nowStr
=
now
.
toString
()
return
_format
+
nowStr
.
substr
(
10
,
12
)
}
}
,
filters
:
{
dateFormat
(
value
,
fmt
)
{
return
dateFormat
(
value
,
fmt
||
'{y
}
年{m
}
月{d
}
日 {h
}
:{i
}
'
)
}
}
,
methods
:
{
handleExport
()
{
const
row
=
this
.
rowData
const
params
=
{
meeting_id
:
row
.
meeting_id
}
if
(
row
.
meeting_type
===
1
)
{
params
.
sub_meeting_id
=
row
.
sub_meeting_id
}
exportParticipants
(
params
).
then
((
res
)
=>
{
if
(
res
&&
res
.
type
===
'text/xlsx'
)
{
const
url
=
URL
.
createObjectURL
(
res
)
// const elink = document.createElement('a')// 创建一个a标签
// elink.download = `参会人员表_$
{
this
.
nowFormat
}
.
xlsx
`;// 设置a标签的下载属性
// elink.style.display = 'none';// 将a标签设置为隐藏
// elink.href = URL.createObjectURL(blob);// 把之前处理好的地址赋给a标签的href
// document.body.appendChild(elink);// 将a标签添加到body中
// elink.click();// 执行a标签的点击方法
// URL.revokeObjectURL(elink.href) // 下载完成释放URL 对象
// document.body.removeChild(elink)// 移除a标签
this.funDownload(url, `
参会人员表
_$
{
this
.
nowFormat
}
.
xlsx
`)
}
}
)
}
,
async handleDownload() {
const list = await this.fetchMeetingRecordAddr()
if (list && Array.isArray(list)) {
list.forEach(it => {
if (it.download_address) {
// window.open(it.download_address, '_blank')
this.funDownload(it.download_address, it.download_address)
}
}
)
}
}
,
funDownload(fileUrl, fileName) {
const elink = document.createElement('a')// 创建一个a标签
elink.download = fileName;// 设置a标签的下载属性
elink.style.display = 'none';// 将a标签设置为隐藏
elink.href = fileUrl;// 把之前处理好的地址赋给a标签的href
document.body.appendChild(elink);// 将a标签添加到body中
elink.click();// 执行a标签的点击方法
URL.revokeObjectURL(elink.href) // 下载完成释放URL 对象
document.body.removeChild(elink)// 移除a标签
}
,
fetchMeetingRecordAddr() {
const params = {
meeting_id: this.rowData.meeting_id,
record_file_ids: this.rowData.record_file_ids
}
return new Promise((resolve, reject) => {
getMeetingRecordAddr(params).then(res => {
if (res.code === 0 && res.data.files) {
resolve(res.data.files)
}
else {
reject(res)
}
}
).catch((err) => reject(err))
}
)
}
}
}
</script>
<style scoped>
::v-deep.el-form-item{
margin:0;
}
</style>
\ No newline at end of file
src/pages/calendar/list/components/TableHandles.vue
deleted
100644 → 0
浏览文件 @
5ae997ee
<
template
>
<div
class=
"btns"
>
<template
v-if=
"status === 1"
>
<el-button
type=
"text"
size=
"small"
v-if=
"operatable"
@
click=
"handleJoin"
>
进入会议
</el-button>
<el-button
type=
"text"
size=
"small"
v-if=
"operatable && hasLive"
@
click=
"handleLive"
>
观看直播
</el-button>
<el-button
type=
"text"
size=
"small"
v-if=
"operatable"
@
click=
"handleCopy"
>
复制邀请
</el-button>
<el-button
type=
"text"
size=
"small"
v-if=
"operatable"
@
click=
"handleStop"
>
终止
</el-button>
<el-button
type=
"text"
size=
"small"
v-if=
"!operatable"
@
click=
"handleDetails"
>
查看
</el-button>
</
template
>
<
template
v-if=
"status === 0"
>
<el-button
type=
"text"
size=
"small"
v-if=
"operatable"
@
click=
"handleJoin"
>
进入会议
</el-button>
<el-button
type=
"text"
size=
"small"
v-if=
"operatable"
@
click=
"handleCopy"
>
复制邀请
</el-button>
<el-button
type=
"text"
size=
"small"
v-if=
"operatable && !isCycle"
>
修改
</el-button>
<el-dropdown
v-if=
"operatable && isCycle"
>
<span
class=
"dropdown-link"
>
修改
<i
class=
"el-icon-arrow-down el-icon--right"
></i>
</span>
<el-dropdown-menu
slot=
"dropdown"
>
<el-dropdown-item>
修改本次会议
</el-dropdown-item>
<el-dropdown-item>
修改周期会议
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
<el-button
type=
"text"
size=
"small"
v-if=
"operatable"
@
click=
"handleCancel"
>
取消
</el-button>
<el-button
type=
"text"
size=
"small"
v-if=
"!operatable"
@
click=
"handleDetails"
>
查看
</el-button>
</
template
>
<
template
v-if=
"status === 2"
>
<el-button
type=
"text"
size=
"small"
v-if=
"operatable"
@
click=
"handleRecord"
>
看回放
</el-button>
<el-button
type=
"text"
size=
"small"
@
click=
"handleDetails"
>
查看
</el-button>
<el-button
type=
"text"
size=
"small"
v-if=
"operatable"
@
click=
"handleDelete"
>
删除
</el-button>
</
template
>
<el-dialog
:title=
"domicTitle"
:visible
.
sync=
"dialogVisible"
width=
"520px"
center
>
<div
slot=
"title"
class=
"dialog-header"
>
<p
class=
"meeting-status"
v-show=
"dialogType === 'details'"
>
会议{{rowData.status | statusFilter}}
</p>
<p
class=
"title"
>
{{domicTitle}}
</p>
</div>
<dialog-details
:rowData=
"rowData"
:details=
"details"
v-show=
"dialogType === 'details'"
/>
<dialog-copy-invite
:rowData=
"rowData"
:details=
"details"
v-show=
"dialogType === 'copy'"
/>
<div
slot=
"footer"
class=
"dialog-footer"
>
<el-button
type=
"primary"
size=
"mini"
v-show=
"dialogType === 'copy'"
@
click=
"copyLink"
>
复制
</el-button>
<el-button
@
click=
"dialogVisible = false"
size=
"mini"
>
取 消
</el-button>
</div>
</el-dialog>
</div>
</template>
<
script
>
import
DialogDetails
from
'./DialogDetails.vue'
import
DialogCopyInvite
from
'./DialogCopyInvite'
import
{
mapGetters
}
from
'vuex'
import
{
getMeetingDetails
,
stopMeeting
,
cancelMeeting
,
getMeetingRecordAddr
}
from
'@api/common'
export
default
{
props
:
{
rowData
:
{}
},
data
()
{
return
{
userId
:
'1234'
,
roleName
:
''
,
// general_admin
dialogVisible
:
false
,
dialogType
:
'copy'
,
details
:
''
}
},
computed
:
{
...
mapGetters
([
'isSuperAdmin'
,
'user'
]),
domicTitle
()
{
let
title
=
''
switch
(
this
.
dialogType
)
{
case
'copy'
:
title
=
'复制邀请'
break
case
'details'
:
title
=
'会议详情'
break
}
return
title
},
status
()
{
return
this
.
rowData
.
status
},
isCycle
()
{
return
this
.
rowData
.
meeting_type
===
1
},
isMyself
()
{
return
this
.
rowData
.
sso_id
===
this
.
user
.
id
},
isGeneralAdmin
()
{
const
admins
=
this
.
rowData
.
manage_ids
let
flag
=
false
for
(
let
i
=
0
;
i
<
admins
.
length
;
i
++
)
{
if
(
admins
[
i
]
===
this
.
user
.
id
)
{
flag
=
true
break
}
}
return
flag
},
hasLive
()
{
return
this
.
rowData
.
enable_live
||
false
},
operatable
()
{
return
this
.
isMyself
||
this
.
isSuperAdmin
||
this
.
isGeneralAdmin
}
},
filters
:
{
statusFilter
(
val
)
{
let
result
=
''
switch
(
val
)
{
case
0
:
result
=
'未开始'
break
case
1
:
result
=
'进行中'
break
case
2
:
result
=
'已结束'
break
}
return
result
}
},
components
:
{
DialogDetails
,
DialogCopyInvite
},
created
()
{
},
methods
:
{
handleCopy
()
{
this
.
fetchMeetingDetails
()
this
.
dialogVisible
=
true
this
.
dialogType
=
'copy'
},
handleDetails
()
{
this
.
dialogVisible
=
true
this
.
dialogType
=
'details'
this
.
fetchMeetingDetails
()
},
handleLive
()
{
window
.
open
(
this
.
live_config
.
live_addr
,
'_blank'
);
},
handleCancel
()
{
this
.
$confirm
(
'此操作将取消这场会议, 是否继续?'
,
'提示'
,
{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
}).
then
(()
=>
{
this
.
fetchCancelMeeting
(
'cancel'
)
}).
catch
(()
=>
{})
},
handleStop
()
{
this
.
$confirm
(
'此操作将终止正在进行中的会议, 是否继续?'
,
'提示'
,
{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
}).
then
(()
=>
{
this
.
fetchStopMeeting
()
}).
catch
(()
=>
{})
},
handleDelete
()
{
this
.
$confirm
(
'此操作将删除这场会议, 是否继续?'
,
'提示'
,
{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
}).
then
(()
=>
{
this
.
fetchCancelMeeting
(
'delete'
)
}).
catch
(()
=>
{})
},
handleJoin
()
{
window
.
open
(
this
.
rowData
.
join_url
,
'_blank'
);
},
copyLink
()
{
const
dom
=
document
.
createElement
(
'input'
)
document
.
body
.
appendChild
(
dom
)
dom
.
value
=
this
.
rowData
.
join_url
dom
.
select
();
// 选择对象
document
.
execCommand
(
'Copy'
);
this
.
$message
({
message
:
'复制成功!'
,
type
:
'success'
})
document
.
body
.
removeChild
(
dom
)
},
async
handleRecord
()
{
if
(
this
.
rowData
.
record_file_ids
.
length
===
0
)
{
this
.
$message
.
error
(
'该会议没有回放'
)
}
else
{
const
list
=
await
this
.
fetchMeetingRecordAddr
()
if
(
list
&&
Array
.
isArray
(
list
))
{
if
(
list
.
length
===
1
)
{
window
.
open
(
list
[
0
].
view_address
,
'_blank'
)
}
}
}
},
fetchStopMeeting
()
{
const
params
=
{
meeting_id
:
this
.
rowData
.
meeting_id
}
stopMeeting
(
params
).
then
(
res
=>
{
if
(
res
.
code
===
0
&&
res
.
data
.
status
)
{
this
.
$message
.
success
(
'会议终止成功'
)
this
.
$emit
(
'refresh'
)
}
else
{
this
.
$message
.
error
(
res
.
msg
||
'会议终止失败'
)
}
})
},
fetchCancelMeeting
(
type
)
{
const
params
=
{
meeting_id
:
this
.
rowData
.
meeting_id
}
const
msg
=
type
===
'cancel'
?
'会议取消'
:
'会议删除'
cancelMeeting
(
params
).
then
(
res
=>
{
if
(
res
.
code
===
0
&&
res
.
data
.
status
)
{
this
.
$message
.
success
(
msg
+
'成功'
)
this
.
$emit
(
'refresh'
)
}
else
{
this
.
$message
.
error
(
res
.
msg
||
msg
+
'失败'
)
}
})
},
fetchMeetingDetails
()
{
const
row
=
this
.
rowData
const
params
=
{
meeting_id
:
row
.
meeting_id
}
if
(
row
.
meeting_type
===
1
)
{
params
.
sub_meeting_id
=
row
.
sub_meeting_id
}
getMeetingDetails
(
params
).
then
(
res
=>
{
if
(
res
.
code
===
0
&&
res
.
data
.
id
)
{
this
.
details
=
res
.
data
}
})
},
fetchMeetingRecordAddr
()
{
const
params
=
{
meeting_id
:
this
.
rowData
.
meeting_id
,
record_file_ids
:
this
.
rowData
.
record_file_ids
}
return
new
Promise
((
resolve
,
reject
)
=>
{
getMeetingRecordAddr
(
params
).
then
(
res
=>
{
if
(
res
.
code
===
0
&&
res
.
data
.
files
)
{
resolve
(
res
.
data
.
files
)
}
else
{
reject
(
res
)
}
}).
catch
((
err
)
=>
reject
(
err
))
})
}
}
}
</
script
>
<
style
scoped
>
.dropdown-link
{
cursor
:
pointer
;
color
:
#409EFF
;
font-size
:
12px
;
}
::v-deep
.el-icon-arrow-down
{
font-size
:
12px
;
}
.btns
::v-deep
.el-dialog__header
{
padding-top
:
14px
;
}
.btns
::v-deep
.el-dialog__headerbtn
{
top
:
12px
;
right
:
12px
;
}
.btns
::v-deep
.el-dialog__body
{
padding
:
10px
0
;
margin
:
0
20px
;
border
:
1px
solid
#DBDBDB
;
}
.btns
::v-deep
.el-dialog__footer
{
padding-bottom
:
16px
;
}
.dialog-header
.meeting-status
{
text-align
:
left
;
}
.dialog-header
.title
{
font-size
:
16px
;
}
</
style
>
\ No newline at end of file
src/pages/meeting/tencent-meeting/index.vue
浏览文件 @
0fe67720
...
@@ -251,7 +251,7 @@ export default {
...
@@ -251,7 +251,7 @@ export default {
const
validateErrMsg
=
(
rule
,
value
,
callback
)
=>
{
const
validateErrMsg
=
(
rule
,
value
,
callback
)
=>
{
// 当开启会议直播时,启用验证,处理callback
// 当开启会议直播时,启用验证,处理callback
if
(
this
.
form
.
enable_live
&&
!
value
)
{
if
(
this
.
form
.
enable_live
&&
!
value
)
{
const
errMsg
=
rule
.
field
===
'live
Theme
'
?
'请输入直播主题'
:
'请输入直播简介'
const
errMsg
=
rule
.
field
===
'live
_subject
'
?
'请输入直播主题'
:
'请输入直播简介'
callback
(
new
Error
(
errMsg
))
callback
(
new
Error
(
errMsg
))
}
else
{
}
else
{
callback
()
callback
()
...
@@ -303,22 +303,6 @@ export default {
...
@@ -303,22 +303,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'
}
,
monthMaxDay
:
28
,
cycleMeetingEndDateOptions
:
{
cycleMeetingEndDateOptions
:
{
disabledDate
:
time
=>
{
disabledDate
:
time
=>
{
let
flag
=
false
let
flag
=
false
...
@@ -424,6 +408,25 @@ export default {
...
@@ -424,6 +408,25 @@ export default {
this
.
form
.
until_count
=
times
this
.
form
.
until_count
=
times
}
}
}
,
}
,
startDateOptions
()
{
return
{
disabledDate
(
time
)
{
return
time
.
getTime
()
<
Date
.
now
()
-
DAY_TIMESTAMP
}
}
}
,
startTimeOptions
()
{
const
date
=
this
.
form
.
startDate
const
options
=
{
start
:
'00:00'
,
step
:
'00:30'
,
end
:
'23:30'
}
if
(
date
.
getTime
()
<=
Date
.
now
())
{
options
.
start
=
getCurHalfHour
(
'start'
)
}
return
options
}
,
endDateOptions
()
{
endDateOptions
()
{
const
_startDate
=
this
.
form
.
startDate
const
_startDate
=
this
.
form
.
startDate
return
{
return
{
...
@@ -434,6 +437,27 @@ export default {
...
@@ -434,6 +437,27 @@ export default {
)
)
}
}
}
}
}
,
endTimeOptions
()
{
const
{
startDate
,
endDate
,
startTime
}
=
this
.
form
const
fullDate
=
this
.
getFullDateTime
(
startDate
,
startTime
)
let
options
if
(
this
.
isSameDate
(
startDate
,
endDate
))
{
const
startTime
=
getCurHalfHour
(
'end'
,
fullDate
)
options
=
{
start
:
startTime
,
step
:
'00:30'
,
end
:
'23:30'
}
}
else
{
const
endTime
=
getCurHalfHour
(
'start'
,
fullDate
)
options
=
{
start
:
'00:00'
,
step
:
'00:30'
,
end
:
endTime
}
}
return
options
}
}
}
,
}
,
filters
:
{
filters
:
{
...
@@ -454,9 +478,8 @@ export default {
...
@@ -454,9 +478,8 @@ export default {
immediate
:
true
immediate
:
true
}
,
}
,
$route
:
{
$route
:
{
handler
:
function
(
nv
,
ov
)
{
handler
:
function
()
{
const
query
=
this
.
$route
.
query
const
query
=
this
.
$route
.
query
console
.
log
(
query
)
if
(
query
.
type
===
'1'
)
{
if
(
query
.
type
===
'1'
)
{
this
.
showSchedule
=
true
this
.
showSchedule
=
true
this
.
form
.
startDate
=
getYMDByDate
(
query
.
start
)
this
.
form
.
startDate
=
getYMDByDate
(
query
.
start
)
...
@@ -489,47 +512,21 @@ export default {
...
@@ -489,47 +512,21 @@ export default {
methods
:
{
methods
:
{
startDateChange
(
val
)
{
startDateChange
(
val
)
{
this
.
form
.
endDate
=
val
this
.
form
.
endDate
=
val
const
_startDate
=
timeTrans
(
this
.
form
.
startDate
)
this
.
startTimeChange
()
if
(
Date
.
parse
(
_startDate
)
>
Date
.
now
())
{
this
.
startTimeOptions
=
{
start
:
'00:00'
,
step
:
'00:30'
,
end
:
'23:30'
}
}
else
{
this
.
startTimeOptions
=
{
start
:
getCurHalfHour
(
'start'
),
step
:
'00:30'
,
end
:
'23:30'
}
}
if
(
this
.
showSchedule
)
{
if
(
this
.
showSchedule
)
{
this
.
fetchMeetingList
()
this
.
fetchMeetingList
()
}
}
}
,
}
,
startTimeChange
(
val
)
{
startTimeChange
()
{
const
{
startDate
,
endDate
}
=
this
.
form
const
{
startDate
,
endDate
}
=
this
.
form
const
fullDate
=
this
.
getFullDateTime
(
startDate
,
val
)
if
(
this
.
isSameDate
(
startDate
,
endDate
))
{
if
(
this
.
isSameDate
(
startDate
,
endDate
))
{
const
startTime
=
getCurHalfHour
(
'end'
,
fullDate
)
this
.
form
.
endTime
=
this
.
endTimeOptions
.
start
this
.
form
.
endTime
=
startTime
this
.
endTimeOptions
=
{
start
:
startTime
,
step
:
'00:30'
,
end
:
'23:30'
}
}
else
{
}
else
{
const
endTime
=
getCurHalfHour
(
'start'
,
fullDate
)
this
.
form
.
endTime
=
this
.
endTimeOptions
.
end
this
.
form
.
endTime
=
endTime
this
.
endTimeOptions
=
{
start
:
'00:00'
,
step
:
'00:30'
,
end
:
endTime
}
}
}
}
,
}
,
endDateChange
()
{
endDateChange
()
{
this
.
startTimeChange
(
this
.
form
.
startTime
)
this
.
startTimeChange
()
}
,
}
,
repaeatRateChange
(
val
)
{
repaeatRateChange
(
val
)
{
if
(
val
===
'everyworkday'
&&
this
.
form
.
endType
===
'endOneday'
)
{
if
(
val
===
'everyworkday'
&&
this
.
form
.
endType
===
'endOneday'
)
{
...
@@ -740,11 +737,10 @@ export default {
...
@@ -740,11 +737,10 @@ export default {
spinner
:
'el-icon-loading'
,
spinner
:
'el-icon-loading'
,
background
:
'rgba(0, 0, 0, 0.7)'
background
:
'rgba(0, 0, 0, 0.7)'
}
)
}
)
console
.
log
(
params
)
updateMeeting
(
params
).
then
(
res
=>
{
updateMeeting
(
params
).
then
(
res
=>
{
loading
.
close
()
loading
.
close
()
if
(
res
.
code
===
0
&&
res
.
data
.
status
)
{
if
(
res
.
code
===
0
&&
res
.
data
&&
res
.
data
.
status
)
{
operateLog
({
type
:
`修改会议,被修改会议meeting_code:${
res.data
.meeting_code
}
`
,
user
:
this
.
user
}
)
operateLog
({
type
:
`修改会议,被修改会议meeting_code:${
this.details
.meeting_code
}
`
,
user
:
this
.
user
}
)
this
.
$message
.
success
(
'修改腾讯会议成功'
)
this
.
$message
.
success
(
'修改腾讯会议成功'
)
this
.
dialogVisible
=
true
this
.
dialogVisible
=
true
}
else
{
}
else
{
...
...
src/pages/search/index.vue
浏览文件 @
0fe67720
...
@@ -45,8 +45,9 @@
...
@@ -45,8 +45,9 @@
<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
>
{{
scope
.
row
.
start_time
|
dateFormat
(
'{m
}
月'
)
}}
{{
scope
.
row
.
start_time
|
dateFormat
(
'周{a
}
'
)
}}
{{
scope
.
row
.
start_time
|
dateFormat
(
'{m
}
月'
)
}}
{{
scope
.
row
.
start_time
|
dateFormat
(
'周{a
}
'
)
}}
<
span
style
=
"font-size: 16px; color: #606266"
>
{{
scope
.
row
.
start_time
|
dateFormat
(
'{h
}
:{i
}
'
)
}}
<
/span
>
<
span
style
=
"font-size: 16px; color: #606266"
>
{{
scope
.
row
.
start_time
|
dateFormat
(
'{h
}
:{i
}
'
)
}}
<
/span
>
<
span
v
-
if
=
"isSameDate(scope.row.start_time, scope.row.end_time)"
style
=
"font-size: 16px; color: #606266"
>
-
{{
scope
.
row
.
end_time
|
dateFormat
(
'{h
}
:{i
}
'
)
}}
<
/span
>
<
/p
>
<
/p
>
<
p
style
=
"color: #aeaeae"
>
<
p
style
=
"color: #aeaeae"
v
-
if
=
"!isSameDate(scope.row.start_time, scope.row.end_time)"
>
<
span
style
=
"font-size: 18px; color: #606266"
>
{{
scope
.
row
.
end_time
|
dateFormat
(
'{d
}
'
)
}}
<
/span
>
<
span
style
=
"font-size: 18px; color: #606266"
>
{{
scope
.
row
.
end_time
|
dateFormat
(
'{d
}
'
)
}}
<
/span
>
{{
scope
.
row
.
end_time
|
dateFormat
(
'{m
}
月'
)
}}
{{
scope
.
row
.
end_time
|
dateFormat
(
'周{a
}
'
)
}}
{{
scope
.
row
.
end_time
|
dateFormat
(
'{m
}
月'
)
}}
{{
scope
.
row
.
end_time
|
dateFormat
(
'周{a
}
'
)
}}
<
span
style
=
"font-size: 16px; color: #606266"
>
{{
scope
.
row
.
end_time
|
dateFormat
(
'{h
}
:{i
}
'
)
}}
<
/span
>
<
span
style
=
"font-size: 16px; color: #606266"
>
{{
scope
.
row
.
end_time
|
dateFormat
(
'{h
}
:{i
}
'
)
}}
<
/span
>
...
@@ -153,6 +154,9 @@ export default {
...
@@ -153,6 +154,9 @@ export default {
this
.
fetchMeetingList
()
this
.
fetchMeetingList
()
}
,
}
,
methods
:
{
methods
:
{
isSameDate
(
start
,
end
)
{
return
dateFormat
(
start
,
'{y
}
-{m
}
-{d
}
'
)
===
dateFormat
(
end
,
'{y
}
-{m
}
-{d
}
'
)
}
,
reset
()
{
reset
()
{
Object
.
keys
(
this
.
filter
).
map
(
key
=>
{
this
.
filter
[
key
]
=
''
}
)
Object
.
keys
(
this
.
filter
).
map
(
key
=>
{
this
.
filter
[
key
]
=
''
}
)
this
.
fetchMeetingList
()
this
.
fetchMeetingList
()
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论