259 lines
7.2 KiB
Vue
Raw Normal View History

<template>
<!-- 视频宣传 -->
<div class="videoPhoto">
<div class="titleTxt">
<div>
<el-button type="text" :class="show? '' : 'changeCol'" class="video" @click="toVideo()"></el-button>
<!-- <el-button type="text" :class="show? 'changeCol' : ''" class="image" @click="toImage()">效果图</el-button> -->
</div>
<!-- <i class="el-icon-refresh"></i> -->
</div>
<video v-if="!show" :src="$store.state.FILEURL + projectData.videoUrl" class="topInner videos" autoplay controls loop></video>
<!-- src="@/assets/images/projectImg/videoPic.png" -->
<!-- 初次上传视频 -->
<div class="placeholderBox placeholderBox2" v-if="projectData.videoUrl == ''">
<img src="@/assets/images/noData3.png" alt srcset />
<p>
{{ $t('message.videoManage.empty') }},
<el-upload
style="display: inline-block"
class="upload-demo"
:action="$store.state.UPLOADURL"
:on-success="(file) => handleSuccess(file, 1)"
:on-error="(file) => handleError(file, 1)"
:beforeUpload="(file) => handleBeforeUpload(file, 1)"
name="files"
:show-file-list="false"
>
<!-- 点我上传 -->
<span>{{ $t('message.companyDiagram.uploadImg') }}</span>
</el-upload>
</p>
</div>
<!-- 更换视频 -->
<el-upload
v-if="projectData.videoUrl"
class="changeVideoBox"
:src="$store.state.FILEURL + projectData.videoUrl"
:action="$store.state.UPLOADURL"
:on-success="(file) => handleSuccess(file, 1)"
:on-error="(file) => handleError(file, 1)"
:beforeUpload="(file) => handleBeforeUpload(file, 1)"
name="files"
:show-file-list="false"
>
<span class="changeVideoBtn">{{ $t('message.companyDiagram.changeVideo') }}</span>
</el-upload>
<!-- 更换图片 -->
<div @mouseenter="showChangeImg = true" @mouseleave="showChangeImg = false" class="img">
<el-upload
v-if="showChangeImg"
class="changeImg"
:action="$store.state.UPLOADURL"
:on-success="(file) => handleSuccessTwo(file, 1)"
:on-error="(file) => handleError(file, 1)"
:beforeUpload="(file) => handleBeforeUpload(file, 1)"
name="files"
:show-file-list="false"
>
<span style="border: 1px solid #ffffff; padding: 5px">{{ $t('message.companyDiagram.changeImg') }}</span>
</el-upload>
<img v-if="show" class="imgStyle" :src="this.$store.state.FILEURL + imgUrl" alt />
</div>
</div>
</template>
<script>
import { getProjectDetail, editProjectInfo } from '@/assets/js/api/baseInfo.js'
import { queryBySnData, eidtProjectShowConfig } from '@/assets/js/api/projectSummary.js'
export default {
data() {
return {
show: false,
projectData: {
videoUrl: ''
},
imgUrl: '', //图片
showChangeImg: false, //显示隐藏更换图片
fullscreenLoading: null
}
},
props: {
title: {
type: String,
default: 'default title'
}
},
created() {
this.getDataDateils()
this.getQueryBySnData()
},
methods: {
toVideo() {
this.show = false
},
// toImage() {
// this.show = true
// },
//获取项目详情
getDataDateils() {
let data = {
projectSn: this.$store.state.projectSn
}
console.log('当前的参数', data)
getProjectDetail(data).then(res => {
if (res.code == 200) {
this.projectData = res.result
console.log('projectData', this.projectData)
}
})
},
// 获取图片
getQueryBySnData() {
queryBySnData({
projectSn: this.$store.state.projectSn,
showType: 3
}).then(res => {
// console.log('------获取图片',res.result)
this.imgUrl = res.result.configValue
})
},
//效果图 保存
saveEffectData(url) {
// let configValue = JSON.stringify(url);
let data = {
projectSn: this.$store.state.projectSn,
showType: 3,
showTitle: this.$t('message.companyDiagram.resultImg'), //'效果图'
configValue: url
}
eidtProjectShowConfig(data).then(res => {
if (res.code == 200) {
this.getQueryBySnData()
}
})
},
//保存或删除宣传视频
saveOrDeleteVideo(url) {
editProjectInfo({
projectId: this.projectData.projectId,
videoUrl: url
}).then(res => {
this.$message.success(this.$t('message.companyDiagram.uploadSuccess')) //"上传成功"
this.projectData.videoUrl = url
})
},
// 文件上传 之前
handleBeforeUpload(file, type) {
console.log(file)
let fileType = file.type.split('/')[0]
if (fileType == 'video' || fileType == 'image') {
this.fullscreenLoading = this.$loading({
lock: true,
text: this.$t('message.companyDiagram.uploadHint'), // "上传中,请稍等。。。"
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'
})
return true
} else {
this.$message.error(this.$t('message.companyDiagram.uploadHint2')) //"请选择正确的文件"
return false
}
},
//上传失败
handleError(file, type) {
this.fullscreenLoading.close()
this.$message.error(this.$t('message.companyDiagram.uploadError')) //"上传失败,请重试"
},
//上传成功
handleSuccess(file, type) {
console.log('上传成功了吗', file)
if (file.code == 200 || file.status == 'SUCCESS') {
console.log(file)
var url = file.data[0].imageUrl
this.saveOrDeleteVideo(url)
}
this.fullscreenLoading.close()
},
handleSuccessTwo(file, type) {
if (file.code == 200 || file.status == 'SUCCESS') {
console.log(file)
var url = file.data[0].imageUrl
this.imgUrl = url
console.log('--------', this.imgUrl)
this.saveEffectData(url)
}
this.fullscreenLoading.close()
}
}
}
</script>
<style lang="less" scoped>
.videoPhoto {
box-sizing: border-box;
padding-top: 6px;
width: 100%;
height: 100%;
// border: 1px solid #0081c3;
.titleTxt {
// height: 30px;
// box-sizing: border-box;
// padding: 0 10px;
// display: flex;
// justify-content: space-between;
// align-items: center;
// font-size: 18px;
// color: #6ee4f0;
// cursor: pointer;
}
.topInner {
width: calc(100% - 33px);
height: calc(100% - 62px);
margin: -24px 0 15px 15px;
}
.video,
.image {
font-size: 18px;
color: #6ee4f0;
margin-top: 5px;
margin-left: 10px;
}
.changeCol {
color: white;
}
.changeVideoBtn {
border: 1px solid rgba(255, 255, 255, 0.5);
padding: 3px 5px;
font-size: 14px;
cursor: pointer;
position: absolute;
left: 50%;
top: 45%;
display: none;
transform: translate(-50%, -50%);
}
.videos:hover + .changeVideoBox .changeVideoBtn,
.changeVideoBox:hover .changeVideoBtn {
display: block;
}
.img {
width: 100%;
height: 100%;
.imgStyle {
width: 98%;
height: 88%;
margin-left: 1%;
}
.changeImg {
position: absolute;
left: 50%;
top: 45%;
}
}
}
</style>