Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
C
center-resource
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
EzijingWeb
center-resource
Commits
c95d12df
提交
c95d12df
authored
8月 16, 2022
作者:
matian
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
updates
上级
84949323
全部展开
隐藏空白字符变更
内嵌
并排
正在显示
2 个修改的文件
包含
32 行增加
和
136 行删除
+32
-136
UploadMultipleVideo.vue
...modules/resource/video/components/UploadMultipleVideo.vue
+0
-0
UploadVideo.vue
src/modules/resource/video/components/UploadVideo.vue
+32
-136
没有找到文件。
src/modules/resource/video/components/UploadMultipleVideo.vue
0 → 100644
浏览文件 @
c95d12df
差异被折叠。
点击展开。
src/modules/resource/video/components/UploadVideo.vue
浏览文件 @
c95d12df
<
script
setup
lang=
"ts"
>
<
script
setup
lang=
"ts"
>
import
VideoDetail
from
'./VideoDetail.vue'
import
{
getCreateAuth
,
updateAuth
}
from
'@/api/base'
import
{
getCreateAuth
,
updateAuth
}
from
'@/api/base'
import
{
ElMessage
}
from
'element-plus'
import
{
ElMessage
}
from
'element-plus'
const
idShowMore
=
ref
(
false
)
const
props
=
defineProps
({
createFlag
:
{
type
:
Number
}
})
/**
/**
* upload 上传状态 {code: -1(待上传)0(成功) 1(开始上传) 2(上传失败), msg: '上传信息'}
* upload 上传状态 {code: -1(待上传)0(成功) 1(开始上传) 2(上传失败), msg: '上传信息'}
* progress 上传进度
* progress 上传进度
**/
**/
interface
IUpload
{
interface
IUpload
{
id
?:
number
code
:
number
code
:
number
name
?:
string
name
?:
string
msg
?:
string
msg
?:
string
...
@@ -21,9 +13,8 @@ interface IUpload {
...
@@ -21,9 +13,8 @@ interface IUpload {
videoId
?:
string
videoId
?:
string
}
}
let
uploadData
=
$ref
<
IUpload
>
({
code
:
-
1
})
let
uploadData
=
$ref
<
IUpload
>
({
code
:
-
1
})
let
uploadData1
=
$ref
<
IUpload
[]
>
([])
const
emit
=
defineEmits
([
'upload'
,
'canClose'
])
const
emit
=
defineEmits
([
'upload'
])
const
form
:
any
=
reactive
({
const
form
:
any
=
reactive
({
timeout
:
''
,
timeout
:
''
,
partSize
:
''
,
partSize
:
''
,
...
@@ -38,48 +29,24 @@ const form: any = reactive({
...
@@ -38,48 +29,24 @@ const form: any = reactive({
statusText
:
''
statusText
:
''
})
})
const
fileChange
=
(
e
:
any
)
=>
{
const
fileChange
=
(
e
:
any
)
=>
{
if
(
props
.
createFlag
===
1
)
{
form
.
file
=
e
.
target
.
files
[
0
]
form
.
file
=
e
.
target
.
files
[
0
]
if
(
form
.
file
.
name
.
indexOf
(
'.mp4'
)
===
-
1
)
{
if
(
form
.
file
.
name
.
indexOf
(
'.mp4'
)
===
-
1
)
{
ElMessage
(
'请上传mp4格式视频'
)
ElMessage
.
warning
(
'请上传mp4格式视频'
)
return
return
}
}
var
userData
=
'{"Vod":{}}'
var
userData
=
'{"Vod":{}}'
if
(
form
.
uploader
)
{
if
(
form
.
uploader
)
{
form
.
uploader
.
stopUpload
()
form
.
uploader
.
stopUpload
()
form
.
authProgress
=
0
form
.
authProgress
=
0
form
.
statusText
=
''
form
.
statusText
=
''
}
form
.
uploader
=
createUploader
()
form
.
uploader
.
addFile
(
form
.
file
,
null
,
null
,
null
,
userData
)
form
.
uploader
.
startUpload
()
}
else
{
console
.
log
(
e
.
target
.
files
)
form
.
file
=
e
.
target
.
files
form
.
file
.
forEach
((
item
:
any
)
=>
{
if
(
item
.
name
.
indexOf
(
'.mp4'
)
===
-
1
)
{
ElMessage
(
'请上传mp4格式视频'
)
}
else
{
var
userData
=
'{"Vod":{}}'
if
(
form
.
uploader
)
{
form
.
uploader
.
stopUpload
()
form
.
authProgress
=
0
form
.
statusText
=
''
}
setTimeout
(()
=>
{
form
.
uploader
=
createUploader
()
form
.
uploader
.
addFile
(
item
,
null
,
null
,
null
,
userData
)
console
.
log
(
userData
)
form
.
uploader
.
startUpload
()
},
1000
)
}
})
}
}
form
.
uploader
=
createUploader
()
form
.
uploader
.
addFile
(
form
.
file
,
null
,
null
,
null
,
userData
)
form
.
uploader
.
startUpload
()
}
}
let
id
=
ref
(
0
)
const
createUploader
:
any
=
()
=>
{
const
createUploader
:
any
=
()
=>
{
const
w
=
window
as
any
const
w
=
window
as
any
// for
const
uploader
=
new
w
.
AliyunUpload
.
Vod
({
const
uploader
=
new
w
.
AliyunUpload
.
Vod
({
timeout
:
form
.
timeout
||
60000
,
timeout
:
form
.
timeout
||
60000
,
partSize
:
form
.
partSize
||
1048576
,
partSize
:
form
.
partSize
||
1048576
,
...
@@ -90,9 +57,7 @@ const createUploader: any = () => {
...
@@ -90,9 +57,7 @@ const createUploader: any = () => {
userId
:
form
.
userId
,
userId
:
form
.
userId
,
// 开始上传
// 开始上传
onUploadstarted
:
function
(
uploadInfo
:
any
)
{
onUploadstarted
:
function
(
uploadInfo
:
any
)
{
console
.
log
(
window
.
localStorage
.
fileData
)
const
fileData
=
JSON
.
parse
(
window
.
localStorage
.
fileData
||
'{}'
)
const
fileData
=
JSON
.
parse
(
window
.
localStorage
.
fileData
||
'{}'
)
console
.
log
(
fileData
.
sourceId
)
// 判断有没有上传过
// 判断有没有上传过
const
isFile
=
!!
fileData
.
sourceId
const
isFile
=
!!
fileData
.
sourceId
if
(
!
isFile
)
{
if
(
!
isFile
)
{
...
@@ -113,7 +78,6 @@ const createUploader: any = () => {
...
@@ -113,7 +78,6 @@ const createUploader: any = () => {
)
)
})
})
}
else
{
}
else
{
console
.
log
(
fileData
,
uploadInfo
)
// 上传过判断一下上次上传的文件和本次上传的文件一不一样,一样的话继续上传
// 上传过判断一下上次上传的文件和本次上传的文件一不一样,一样的话继续上传
if
(
fileData
.
fileName
===
uploadInfo
.
file
.
name
&&
fileData
.
fileSize
===
uploadInfo
.
file
.
size
)
{
if
(
fileData
.
fileName
===
uploadInfo
.
file
.
name
&&
fileData
.
fileSize
===
uploadInfo
.
file
.
size
)
{
uploader
.
setUploadAuthAndAddress
(
uploadInfo
,
fileData
.
uploadAuth
,
fileData
.
uploadAddress
,
fileData
.
videoId
)
uploader
.
setUploadAuthAndAddress
(
uploadInfo
,
fileData
.
uploadAuth
,
fileData
.
uploadAddress
,
fileData
.
videoId
)
...
@@ -128,72 +92,37 @@ const createUploader: any = () => {
...
@@ -128,72 +92,37 @@ const createUploader: any = () => {
})
})
}
}
}
}
if
(
props
.
createFlag
===
1
)
{
uploadData
=
{
uploadData
=
{
code
:
1
,
code
:
1
,
name
:
uploadInfo
.
file
.
name
,
name
:
uploadInfo
.
file
.
name
,
msg
:
'开始上传'
msg
:
'开始上传'
}
}
else
{
uploadData1
.
push
({
code
:
1
,
name
:
uploadInfo
.
file
.
name
,
msg
:
'开始上传'
})
emit
(
'canClose'
,
{
closeStatus
:
false
})
}
}
},
},
// 文件上传成功
// 文件上传成功
onUploadSucceed
:
function
(
uploadInfo
:
any
)
{
onUploadSucceed
:
function
(
uploadInfo
:
any
)
{
const
fileData
=
window
.
localStorage
.
fileData
?
JSON
.
parse
(
window
.
localStorage
.
fileData
)
:
{}
const
fileData
=
window
.
localStorage
.
fileData
?
JSON
.
parse
(
window
.
localStorage
.
fileData
)
:
{}
if
(
props
.
createFlag
===
1
)
{
uploadData
=
{
uploadData
=
{
code
:
0
,
code
:
0
,
name
:
uploadInfo
.
file
.
name
,
name
:
uploadInfo
.
file
.
name
,
videoId
:
fileData
.
videoId
,
videoId
:
fileData
.
videoId
,
msg
:
'上传成功'
msg
:
'上传成功'
}
}
else
{
const
findIndex
=
uploadData1
.
findIndex
(
item
=>
item
.
name
===
uploadInfo
.
file
.
name
)
uploadData1
[
findIndex
]
=
{
code
:
0
,
name
:
uploadInfo
.
file
.
name
,
videoId
:
fileData
.
videoId
,
msg
:
'上传成功'
}
}
}
emit
(
'upload'
,
{
videoId
:
fileData
.
videoId
,
name
:
uploadInfo
.
file
.
name
})
emit
(
'upload'
,
{
videoId
:
fileData
.
videoId
,
name
:
uploadInfo
.
file
.
name
})
emit
(
'canClose'
,
{
closeStatus
:
true
})
},
},
// 文件上传失败
// 文件上传失败
// code:any, message:any
// code:any, message:any
onUploadFailed
:
function
(
uploadInfo
:
any
)
{
onUploadFailed
:
function
(
uploadInfo
:
any
)
{
if
(
props
.
createFlag
===
1
)
{
uploadData
=
{
uploadData
=
{
code
:
2
,
code
:
2
,
name
:
uploadInfo
.
file
.
name
,
name
:
uploadInfo
.
file
.
name
,
msg
:
'文件上传失败'
msg
:
'文件上传失败'
}
}
else
{
const
findIndex
=
uploadData1
.
findIndex
(
item
=>
item
.
id
===
id
.
value
)
uploadData1
[
findIndex
]
=
{
id
:
id
.
value
,
code
:
2
,
name
:
uploadInfo
.
file
.
name
,
msg
:
'文件上传失败'
}
}
}
},
},
// 文件上传进度,单位:字节, 可以在这个函数中拿到上传进度并显示在页面上
// 文件上传进度,单位:字节, 可以在这个函数中拿到上传进度并显示在页面上
onUploadProgress
:
function
(
uploadInfo
:
any
,
totalSize
:
any
,
progress
:
any
)
{
onUploadProgress
:
function
(
uploadInfo
:
any
,
totalSize
:
any
,
progress
:
any
)
{
let
progressPercent
=
Math
.
ceil
(
progress
*
100
)
let
progressPercent
=
Math
.
ceil
(
progress
*
100
)
form
.
authProgress
=
progressPercent
form
.
authProgress
=
progressPercent
if
(
props
.
createFlag
===
1
)
{
uploadData
.
progress
=
progressPercent
uploadData
.
progress
=
progressPercent
}
else
{
const
findIndex
=
uploadData1
.
findIndex
(
item
=>
item
.
name
===
uploadInfo
.
file
.
name
)
uploadData1
[
findIndex
].
progress
=
progressPercent
}
},
},
// 上传凭证超时
// 上传凭证超时
onUploadTokenExpired
:
function
(
uploadInfo
:
any
)
{
onUploadTokenExpired
:
function
(
uploadInfo
:
any
)
{
...
@@ -213,12 +142,9 @@ const createUploader: any = () => {
...
@@ -213,12 +142,9 @@ const createUploader: any = () => {
})
})
return
uploader
return
uploader
}
}
const
handleView
=
()
=>
{
idShowMore
.
value
=
true
}
</
script
>
</
script
>
<
template
>
<
template
>
<div
v-if=
"props.createFlag === 1"
>
<div>
<div
class=
"upload-video"
>
<div
class=
"upload-video"
>
<div
class=
"upload-btn"
>
<div
class=
"upload-btn"
>
本地文件
本地文件
...
@@ -227,6 +153,7 @@ const handleView = () => {
...
@@ -227,6 +153,7 @@ const handleView = () => {
</div>
</div>
<div
class=
"demo-progress"
v-if=
"uploadData.code === 1"
>
<div
class=
"demo-progress"
v-if=
"uploadData.code === 1"
>
<el-progress
style=
"width: 340px"
:percentage=
"uploadData.progress"
/>
<el-progress
style=
"width: 340px"
:percentage=
"uploadData.progress"
/>
<!--
<span>
{{
uploadData
.
progress
}}
%
</span>
-->
</div>
</div>
<div
class=
"error video-info"
v-if=
"uploadData.code === 2"
>
<div
class=
"error video-info"
v-if=
"uploadData.code === 2"
>
<div
class=
"name"
>
上传失败(请重新选择文件进行上传)
</div>
<div
class=
"name"
>
上传失败(请重新选择文件进行上传)
</div>
...
@@ -237,36 +164,10 @@ const handleView = () => {
...
@@ -237,36 +164,10 @@ const handleView = () => {
</div>
</div>
<div
class=
"tips"
>
推荐视频格式:帧率为25fps\输出码率为4M\输出格式为mp4,建议采用格式工厂等工具处理后上传。
</div>
<div
class=
"tips"
>
推荐视频格式:帧率为25fps\输出码率为4M\输出格式为mp4,建议采用格式工厂等工具处理后上传。
</div>
</div>
</div>
<div
v-else
>
<div
class=
"upload-video"
style=
"display: flex; flex-direction: column; align-items: flex-start"
>
<div
class=
"upload-btn"
>
本地文件
<input
accept=
".mp4"
type=
"file"
id=
"fileUpload"
@
change=
"fileChange($event)"
multiple
/>
</div>
<div
class=
"tips"
>
推荐视频格式:帧率为25fps\输出码率为4M\输出格式为mp4,建议采用格式工厂等工具处理后上传。
</div>
<div
v-for=
"(item, index) in uploadData1.slice(0, 3)"
:key=
"index"
style=
"display: flex; flex-direction: column"
>
<div
class=
"demo-progress"
v-if=
"item.code === 1"
>
<span
style=
"min-width: 340px"
>
{{
item
.
name
}}
</span>
<el-progress
style=
"width: 200px"
:percentage=
"item.progress"
/>
</div>
<div
class=
"error video-info"
v-if=
"item.code === 2"
>
<div
class=
"name"
>
上传失败(请重新选择文件进行上传)
</div>
</div>
<div
class=
"video-info"
v-if=
"item.code === 0"
>
<div
class=
"name1"
>
{{
item
.
name
}}
</div>
</div>
</div>
<el-link
type=
"primary"
v-if=
"uploadData1.length > 3"
@
click=
"handleView"
>
共
{{
uploadData1
.
length
}}
个文件,查看更多
</el-link
>
</div>
</div>
<VideoDetail
:videoList=
"uploadData1"
v-model:idShowMore=
"idShowMore"
v-if=
"idShowMore === true"
/>
</
template
>
</
template
>
<
style
lang=
"scss"
>
<
style
lang=
"scss"
>
.demo-progress
{
.demo-progress
{
min-
width
:
350px
;
width
:
350px
;
display
:
flex
;
display
:
flex
;
span
{
span
{
color
:
#999999
;
color
:
#999999
;
...
@@ -310,11 +211,6 @@ const handleView = () => {
...
@@ -310,11 +211,6 @@ const handleView = () => {
font-size
:
16px
;
font-size
:
16px
;
line-height
:
100%
;
line-height
:
100%
;
}
}
.name1
{
color
:
#aa1941
;
font-size
:
14px
;
line-height
:
1
.5
;
}
.view
{
.view
{
font-size
:
16px
;
font-size
:
16px
;
line-height
:
100%
;
line-height
:
100%
;
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论