修改bug

This commit is contained in:
caoqianming 2022-04-14 08:32:40 +08:00
parent 531a44daa1
commit fd2af58c8e
4 changed files with 270 additions and 245 deletions

View File

@ -2,7 +2,7 @@
<div class="login"> <div class="login">
<div class="topTitleWrap"> <div class="topTitleWrap">
<div class="topTitle1">国家新材料测试评价平台</div> <div class="topTitle1">国家新材料测试评价平台</div>
<div class="topTitle2">先进无非金属材料行业中心</div> <div class="topTitle2">先进无非金属材料行业中心</div>
</div> </div>
<div class="login-form"> <div class="login-form">
<img class="logo" src="../../assets/logo.png" /> <img class="logo" src="../../assets/logo.png" />

View File

@ -8,7 +8,14 @@
<el-card style="margin-top: 10px"> <el-card style="margin-top: 10px">
<el-table <el-table
v-loading="listLoading" v-loading="listLoading"
:data="videoList.results.filter(data => !search || data.name.toLowerCase().includes(search.toLowerCase())|| data.category_name.toLowerCase().includes(search.toLowerCase()))" :data="
videoList.results.filter(
(data) =>
!search ||
data.name.toLowerCase().includes(search.toLowerCase()) ||
data.category_name.toLowerCase().includes(search.toLowerCase())
)
"
border border
fit fit
stripe stripe
@ -35,7 +42,6 @@
<template slot-scope="scope">{{ scope.row.coverurl }}</template> <template slot-scope="scope">{{ scope.row.coverurl }}</template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
align="center" align="center"
label="操作" label="操作"
@ -46,7 +52,8 @@
<el-input <el-input
v-model="search" v-model="search"
size="mini" size="mini"
placeholder="输入关键字搜索"/> placeholder="输入关键字搜索"
/>
</template> </template>
<template slot-scope="scope"> <template slot-scope="scope">
<el-button <el-button
@ -77,7 +84,6 @@
<el-dialog <el-dialog
:visible.sync="dialogVisible" :visible.sync="dialogVisible"
:title="dialogType === 'edit' ? '编辑视频信息' : '新增视频信息'" :title="dialogType === 'edit' ? '编辑视频信息' : '新增视频信息'"
> >
<el-form <el-form
ref="Forms" ref="Forms"
@ -102,53 +108,91 @@
></el-cascader> ></el-cascader>
</el-form-item> </el-form-item>
<form ref="vcExample"> <form ref="vcExample">
<input type="file" style="display:none;" ref="vcExampleVideo" @change="setVcExampleVideoName()" /> <input
<input type="file" style="display:none;" ref="vcExampleCover" @change="setVcExampleCoverName()" /> type="file"
style="display: none"
ref="vcExampleVideo"
@change="setVcExampleVideoName()"
/>
<input
type="file"
style="display: none"
ref="vcExampleCover"
@change="setVcExampleCoverName()"
/>
</form> </form>
<div class="row" style="padding:10px;"> <div class="row" style="padding: 10px">
<el-button type="primary" @click="vcExampleAddVideo">{{
<el-button type="primary" @click="vcExampleAddVideo">{{vcExampleVideoName || '添加视频'}}</el-button> vcExampleVideoName || "添加视频"
<el-button type="primary" @click="vcExampleAddCover">{{vcExampleCoverName || '添加封面'}}</el-button> }}</el-button>
<el-button type="success" @click="vcExampleAddUpload">上传视频和封面</el-button> <el-button type="primary" @click="vcExampleAddCover">{{
vcExampleCoverName || "添加封面"
}}</el-button>
<el-button type="success" @click="vcExampleAddUpload"
>上传视频和封面</el-button
>
</div> </div>
<div class="row" id="resultBox"> <div class="row" id="resultBox">
<!-- 上传信息组件 --> <!-- 上传信息组件 -->
<div class="uploaderMsgBox" v-for="uploaderInfo in uploaderInfos"> <div class="uploaderMsgBox" v-for="uploaderInfo in uploaderInfos">
<div v-if="uploaderInfo.videoInfo"> <div v-if="uploaderInfo.videoInfo">
视频名称{{uploaderInfo.videoInfo.name + '.' + uploaderInfo.videoInfo.type}} 视频名称{{
上传进度 uploaderInfo.videoInfo.name + "." + uploaderInfo.videoInfo.type
<el-progress :text-inside="true" :stroke-width="24" :percentage="Math.floor(uploaderInfo.progress * 100)" status="success"> }} 上传进度
<el-progress
:text-inside="true"
:stroke-width="24"
:percentage="Math.floor(uploaderInfo.progress * 100)"
status="success"
>
</el-progress> </el-progress>
上传结果{{uploaderInfo.isVideoUploadCancel ? '已取消' : uploaderInfo.isVideoUploadSuccess ? '上传成功' : '上传中'}} 上传结果{{
<br> uploaderInfo.isVideoUploadCancel
? "已取消"
: uploaderInfo.isVideoUploadSuccess
? "上传成功"
: "上传中"
}}
<br />
地址{{ uploaderInfo.videoUrl }} 地址{{ uploaderInfo.videoUrl }}
<a href="javascript:void(0);" class="cancel-upload" v-if="!uploaderInfo.isVideoUploadSuccess && !uploaderInfo.isVideoUploadCancel" @click="uploaderInfo.cancel()">取消上传</a><br> <a
href="javascript:void(0);"
class="cancel-upload"
v-if="
!uploaderInfo.isVideoUploadSuccess &&
!uploaderInfo.isVideoUploadCancel
"
@click="uploaderInfo.cancel()"
>取消上传</a
><br />
</div> </div>
<div v-if="uploaderInfo.coverInfo"> <div v-if="uploaderInfo.coverInfo">
封面名称{{uploaderInfo.coverInfo.name}} 封面名称{{ uploaderInfo.coverInfo.name }} 上传进度
上传进度 <el-progress
<el-progress :text-inside="true" :stroke-width="24" :percentage="Math.floor(uploaderInfo.coverProgress * 100)" status="success"> :text-inside="true"
:stroke-width="24"
:percentage="Math.floor(uploaderInfo.coverProgress * 100)"
status="success"
>
</el-progress> </el-progress>
上传结果{{uploaderInfo.isCoverUploadSuccess ? '上传成功' : '上传中'}} 上传结果{{
<br> uploaderInfo.isCoverUploadSuccess ? "上传成功" : "上传中"
}}
<br />
地址{{ uploaderInfo.coverUrl }} 地址{{ uploaderInfo.coverUrl }}
<br> <br />
<video :src="uploaderInfo.videoUrl" style="width:400px;height:300px" id="video" autoplay></video>
<video
:src="uploaderInfo.videoUrl"
style="width: 400px; height: 300px"
id="video"
autoplay
></video>
</div> </div>
</div> </div>
</div> </div>
</el-form> </el-form>
<div style="text-align: right"> <div style="text-align: right">
<el-button type="danger" @click="dialogVisible = false">取消</el-button> <el-button type="danger" @click="dialogVisible = false">取消</el-button>
@ -156,36 +200,36 @@
</div> </div>
</el-dialog> </el-dialog>
</div> </div>
</template> </template>
<script src="https://cdn-go.cn/cdn/vod-js-sdk-v6/latest/vod-js-sdk-v6.js"></script> <script src="https://cdn-go.cn/cdn/vod-js-sdk-v6/latest/vod-js-sdk-v6.js"></script>
<script type="text/javascript"> <script type="text/javascript">
import { updatevideo,getsignature,createVideo,getVideoList,deletevideo} from "@/api/video"; import {
updatevideo,
getsignature,
createVideo,
getVideoList,
deletevideo,
} from "@/api/video";
import Pagination from "@/components/Pagination"; // secondary package based on el-pagination import Pagination from "@/components/Pagination"; // secondary package based on el-pagination
import { getDictList, getDictTypeList } from "@/api/dict"; import { getDictList, getDictTypeList } from "@/api/dict";
import TcVod from "vod-js-sdk-v6"; import TcVod from "vod-js-sdk-v6";
import checkPermission from '@/utils/permission' import checkPermission from "@/utils/permission";
import { genTree } from "@/utils"; import { genTree } from "@/utils";
const defaultVideo = { const defaultVideo = {
name: "", name: "",
description: "", description: "",
category: "", category: "",
mediaurl:'', mediaurl: "",
} };
export default { export default {
components: { Pagination }, components: { Pagination },
data() { data() {
return { return {
dialogVisible: false, dialogVisible: false,
@ -195,34 +239,32 @@ export default {
count: 0, count: 0,
}, },
typeOptions: [], typeOptions: [],
dialogType:'', dialogType: "",
listQuery: { listQuery: {
page: 1, page: 1,
page_size: 20, page_size: 20,
}, },
search: '', search: "",
VideoContent: defaultVideo, VideoContent: defaultVideo,
uploaderInfos: [], uploaderInfos: [],
vcExampleVideoName: '', vcExampleVideoName: "",
listLoading: false, listLoading: false,
vcExampleCoverName: '', vcExampleCoverName: "",
rule1: { rule1: {
name: [{ required: true, message: "请输入名称", trigger: "blur" }], name: [{ required: true, message: "请输入名称", trigger: "blur" }],
category: [{ required: true, message: "请选择视频分类", trigger: 'change' }], category: [
{ required: true, message: "请选择视频分类", trigger: "change" },
],
}, },
}; };
}, },
computed: {}, computed: {},
created() { created() {
this.getList(); this.getList();
this.getTypeAll(); this.getTypeAll();
}, },
methods: { methods: {
checkPermission, checkPermission,
//列表加载 //列表加载
getList() { getList() {
@ -289,13 +331,13 @@ checkPermission,
vcExample添加视频 vcExample添加视频
*/ */
vcExampleAddVideo: function () { vcExampleAddVideo: function () {
this.$refs.vcExampleVideo.click() this.$refs.vcExampleVideo.click();
}, },
/* /*
vcExample添加封面 vcExample添加封面
*/ */
vcExampleAddCover: function () { vcExampleAddCover: function () {
this.$refs.vcExampleCover.click() this.$refs.vcExampleCover.click();
}, },
/* /*
vcExample上传过程 vcExample上传过程
@ -308,31 +350,28 @@ checkPermission,
// 获取签名 这里必须定义为函数tcVod才可识别 // 获取签名 这里必须定义为函数tcVod才可识别
const getSignature = async function () { const getSignature = async function () {
const { data } = await getsignature() const { data } = await getsignature();
return data return data;
} };
// 前文中所述的获取上传签名的函数 // 前文中所述的获取上传签名的函数
const tcVod = new TcVod({ getSignature }) const tcVod = new TcVod({ getSignature });
var uploader = tcVod.upload({ var uploader = tcVod.upload({
mediaFile: mediaFile, mediaFile: mediaFile,
coverFile: coverFile, coverFile: coverFile,
}) });
uploader.on("media_progress", function (info) {
uploader.on('media_progress', function(info) {
uploaderInfo.progress = info.percent; uploaderInfo.progress = info.percent;
}) });
uploader.on('media_upload', function(info) { uploader.on("media_upload", function (info) {
uploaderInfo.isVideoUploadSuccess = true; uploaderInfo.isVideoUploadSuccess = true;
}) });
uploader.on('cover_progress', function(info) { uploader.on("cover_progress", function (info) {
uploaderInfo.coverProgress = info.percent; uploaderInfo.coverProgress = info.percent;
}) });
uploader.on('cover_upload', function(info) { uploader.on("cover_upload", function (info) {
uploaderInfo.isCoverUploadSuccess = true; uploaderInfo.isCoverUploadSuccess = true;
}) });
var uploaderInfo = { var uploaderInfo = {
videoInfo: uploader.videoInfo, videoInfo: uploader.videoInfo,
@ -342,35 +381,30 @@ checkPermission,
isCoverUploadSuccess: false, isCoverUploadSuccess: false,
progress: 0, progress: 0,
coverProgress: 0, coverProgress: 0,
fileId: '', fileId: "",
videoUrl: '', videoUrl: "",
coverUrl: '', coverUrl: "",
cancel: function () { cancel: function () {
uploaderInfo.isVideoUploadCancel = true; uploaderInfo.isVideoUploadCancel = true;
uploader.cancel() uploader.cancel();
}, },
} };
this.uploaderInfos.push(uploaderInfo) this.uploaderInfos.push(uploaderInfo);
// console.log('uploaderInfos',this.uploaderInfos); // console.log('uploaderInfos',this.uploaderInfos);
uploader.done().then(function (doneResult) { uploader.done().then(function (doneResult) {
console.log('doneResult', doneResult) console.log("doneResult", doneResult);
uploaderInfo.fileId = doneResult.fileId; uploaderInfo.fileId = doneResult.fileId;
uploaderInfo.coverUrl = doneResult.cover.url; uploaderInfo.coverUrl = doneResult.cover.url;
uploaderInfo.videoUrl = doneResult.video.url; uploaderInfo.videoUrl = doneResult.video.url;
self.$refs.vcExample.reset(); self.$refs.vcExample.reset();
self.vcExampleVideoName = '' self.vcExampleVideoName = "";
self.vcExampleCoverName = '' self.vcExampleCoverName = "";
}) });
}, },
async confirm(form) { async confirm(form) {
@ -379,12 +413,10 @@ async confirm(form) {
const isEdit = this.dialogType === "edit"; const isEdit = this.dialogType === "edit";
if (isEdit) { if (isEdit) {
for (var i = 0; i < this.uploaderInfos.length; i++) { for (var i = 0; i < this.uploaderInfos.length; i++) {
this.VideoContent.fileid = this.uploaderInfos[i].fileId; this.VideoContent.fileid = this.uploaderInfos[i].fileId;
this.VideoContent.coverurl = this.uploaderInfos[i].coverUrl; this.VideoContent.coverurl = this.uploaderInfos[i].coverUrl;
this.VideoContent.mediaurl = this.uploaderInfos[i].videoUrl; this.VideoContent.mediaurl = this.uploaderInfos[i].videoUrl;
} }
// console.log(this.VideoContent) // console.log(this.VideoContent)
updatevideo(this.VideoContent.id, this.VideoContent).then((res) => { updatevideo(this.VideoContent.id, this.VideoContent).then((res) => {
@ -395,14 +427,11 @@ async confirm(form) {
} }
}); });
} else { } else {
for (var i = 0; i < this.uploaderInfos.length; i++) { for (var i = 0; i < this.uploaderInfos.length; i++) {
this.VideoContent.fileid = this.uploaderInfos[i].fileId; this.VideoContent.fileid = this.uploaderInfos[i].fileId;
this.VideoContent.coverurl = this.uploaderInfos[i].coverUrl; this.VideoContent.coverurl = this.uploaderInfos[i].coverUrl;
this.VideoContent.mediaurl = this.uploaderInfos[i].videoUrl; this.VideoContent.mediaurl = this.uploaderInfos[i].videoUrl;
} }
createVideo(this.VideoContent).then((res) => { createVideo(this.VideoContent).then((res) => {
if (res.code >= 200) { if (res.code >= 200) {
@ -419,8 +448,6 @@ async confirm(form) {
}, },
}, },
}; };
</script> </script>
@ -443,7 +470,6 @@ async confirm(form) {
} }
.uploaderMsgBox { .uploaderMsgBox {
border-bottom: 1px solid #888; border-bottom: 1px solid #888;
background: #1a7ce0; background: #1a7ce0;
color: white; color: white;

BIN
client_mp/static.zip Normal file

Binary file not shown.

View File

@ -1,5 +1,4 @@
import base64 import base64
from dataclasses import field
import hashlib import hashlib
import hmac import hmac
import json import json