259 lines
7.2 KiB
Vue
259 lines
7.2 KiB
Vue
|
|
<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>
|