|
|
@@ -24,28 +24,25 @@
|
|
|
</div>
|
|
|
<!-- 右侧内容 -->
|
|
|
<!-- 没有数据时 -->
|
|
|
- <div class="hint" v-if="myArr.length===0">暂 无 数 据</div>
|
|
|
+ <div class="hint" v-if="myArr.length === 0">暂 无 数 据</div>
|
|
|
<div class="right" v-else>
|
|
|
- <div
|
|
|
- class="row"
|
|
|
- v-for="item in myArr"
|
|
|
- :key="item.id"
|
|
|
- @click="goodClick(item)"
|
|
|
- >
|
|
|
+ <div class="row" v-for="item in myArr" :key="item.id">
|
|
|
<!-- 模型/视频 -->
|
|
|
<img
|
|
|
+ @click="goodClick(item)"
|
|
|
:src="baseURL + item.thumb"
|
|
|
alt=""
|
|
|
- v-if="formData.type === 'model'||formData.type === 'video'"
|
|
|
+ v-if="formData.type === 'model' || formData.type === 'video'"
|
|
|
/>
|
|
|
<!-- 图库 -->
|
|
|
- <el-image
|
|
|
- v-else-if="formData.type === 'img'"
|
|
|
- style="width: 418px; height: 200px"
|
|
|
- :src="baseURL+item.thumb"
|
|
|
- :preview-src-list="srcList"
|
|
|
- >
|
|
|
- </el-image>
|
|
|
+ <el-image
|
|
|
+ @click="goodClick(item)"
|
|
|
+ v-else-if="formData.type === 'img'"
|
|
|
+ style="width: 418px; height: 200px"
|
|
|
+ :src="baseURL + item.thumb"
|
|
|
+ :preview-src-list="srcList"
|
|
|
+ >
|
|
|
+ </el-image>
|
|
|
<p class="listTxt" :title="item.name">{{ item.name }}</p>
|
|
|
</div>
|
|
|
<!-- 分页 -->
|
|
|
@@ -53,7 +50,7 @@
|
|
|
<el-pagination
|
|
|
layout="prev,pager,next,jumper"
|
|
|
:total="total"
|
|
|
- :page-size='9'
|
|
|
+ :page-size="9"
|
|
|
:current-page="formData.pageNum"
|
|
|
@current-change="currentChange"
|
|
|
@size-change="sizeChange"
|
|
|
@@ -72,53 +69,54 @@
|
|
|
</div>
|
|
|
</div>
|
|
|
<!-- 大图预览里面的文字显示 -->
|
|
|
- <div class="imgBigShow" v-if="imgBigShow">{{imgBigNum}} / {{srcList.length}}</div>
|
|
|
+ <div class="imgBigShow" v-if="imgBigShow">
|
|
|
+ {{ imgBigNum }} / {{ srcList.length }}
|
|
|
+ </div>
|
|
|
<!-- 视频档案里面的弹窗 -->
|
|
|
<div class="model" v-if="myVideoShow">
|
|
|
- <!-- 关闭按钮 -->
|
|
|
- <div class=" btnX el-icon-close" @click="myVideoShow = false"></div>
|
|
|
+ <!-- 关闭按钮 -->
|
|
|
+ <div class="btnX el-icon-close" @click="myVideoShow = false"></div>
|
|
|
<div class="videoPlay">
|
|
|
- <video :src="myVideoSrc" v-if="myVideoSrc" controls></video>
|
|
|
+ <video :src="myVideoSrc" v-if="myVideoSrc" controls></video>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
-import axios from '@/utils/request'
|
|
|
-import { goodList, goodDetail } from '@/utils/api'
|
|
|
+import axios from "@/utils/request";
|
|
|
+import { goodList, goodDetail } from "@/utils/api";
|
|
|
export default {
|
|
|
- name: 'tab3',
|
|
|
+ name: "tab3",
|
|
|
components: {},
|
|
|
- data () {
|
|
|
+ data() {
|
|
|
// 这里存放数据
|
|
|
return {
|
|
|
total: 0,
|
|
|
- baseURL: '',
|
|
|
+ baseURL: "",
|
|
|
fullscreen: false,
|
|
|
modelShow: false,
|
|
|
listData: [
|
|
|
- { id: 1, name: '实物模型', type: 'model' },
|
|
|
- { id: 2, name: '专题图库', type: 'img' },
|
|
|
- { id: 3, name: '视频档案', type: 'video' }
|
|
|
+ { id: 1, name: "实物模型", type: "model" },
|
|
|
+ { id: 2, name: "专题图库", type: "img" },
|
|
|
+ { id: 3, name: "视频档案", type: "video" },
|
|
|
],
|
|
|
formData: {
|
|
|
- sortType: 0,
|
|
|
pageNum: 1,
|
|
|
pageSize: 9,
|
|
|
- searchKey: '',
|
|
|
- type: 'model'
|
|
|
+ searchKey: "",
|
|
|
+ type: "model",
|
|
|
},
|
|
|
myArr: [],
|
|
|
- mySrc: '',
|
|
|
- srcList: [''],
|
|
|
+ mySrc: "",
|
|
|
+ srcList: [""],
|
|
|
// 大图预览里面的文字显示
|
|
|
imgBigShow: false,
|
|
|
imgBigNum: 1,
|
|
|
// 视频档案数据
|
|
|
myVideoShow: false,
|
|
|
- myVideoSrc: ''
|
|
|
- }
|
|
|
+ myVideoSrc: "",
|
|
|
+ };
|
|
|
},
|
|
|
// 监听属性 类似于data概念
|
|
|
computed: {},
|
|
|
@@ -127,182 +125,210 @@ export default {
|
|
|
// 方法集合
|
|
|
methods: {
|
|
|
// 分页器方法
|
|
|
- currentChange (val) {
|
|
|
+ currentChange(val) {
|
|
|
// console.log('当前页改变了', val)
|
|
|
- this.formData.pageNum = val
|
|
|
- this.goodList(this.formData)
|
|
|
+ this.formData.pageNum = val;
|
|
|
+ this.goodList(this.formData);
|
|
|
},
|
|
|
- sizeChange (val) {
|
|
|
+ sizeChange(val) {
|
|
|
// console.log('条数改变了', val)
|
|
|
- this.formData.pageNum = 1
|
|
|
- this.formData.pageSize = val
|
|
|
- this.goodList(this.formData)
|
|
|
+ this.formData.pageNum = 1;
|
|
|
+ this.formData.pageSize = val;
|
|
|
+ this.goodList(this.formData);
|
|
|
},
|
|
|
// 点击模型全屏
|
|
|
- screen () {
|
|
|
- const element = this.$refs.ifrCon // 获取容器
|
|
|
+ screen() {
|
|
|
+ const element = this.$refs.ifrCon; // 获取容器
|
|
|
if (this.fullscreen) {
|
|
|
// 如果已经全屏了就退出全屏
|
|
|
|
|
|
if (document.exitFullscreen) {
|
|
|
- document.exitFullscreen()
|
|
|
+ document.exitFullscreen();
|
|
|
} else if (document.webkitCancelFullScreen) {
|
|
|
- document.webkitCancelFullScreen()
|
|
|
+ document.webkitCancelFullScreen();
|
|
|
} else if (document.mozCancelFullScreen) {
|
|
|
- document.mozCancelFullScreen()
|
|
|
+ document.mozCancelFullScreen();
|
|
|
} else if (document.msExitFullscreen) {
|
|
|
- document.msExitFullscreen()
|
|
|
+ document.msExitFullscreen();
|
|
|
}
|
|
|
} else {
|
|
|
// 如果不是全屏就变成全屏
|
|
|
if (element.requestFullscreen) {
|
|
|
- element.requestFullscreen()
|
|
|
+ element.requestFullscreen();
|
|
|
} else if (element.webkitRequestFullScreen) {
|
|
|
- element.webkitRequestFullScreen()
|
|
|
+ element.webkitRequestFullScreen();
|
|
|
} else if (element.mozRequestFullScreen) {
|
|
|
- element.mozRequestFullScreen()
|
|
|
+ element.mozRequestFullScreen();
|
|
|
} else if (element.msRequestFullscreen) {
|
|
|
// IE11
|
|
|
- element.msRequestFullscreen()
|
|
|
+ element.msRequestFullscreen();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- this.fullscreen = !this.fullscreen
|
|
|
+ this.fullscreen = !this.fullscreen;
|
|
|
},
|
|
|
// 点击模型
|
|
|
- async goodClick (item) {
|
|
|
- if (item.type === 'model') {
|
|
|
- this.mySrc = '/4dage/Model.html?m=' + item.filePath
|
|
|
+ async goodClick(item) {
|
|
|
+ if (item.type === "model") {
|
|
|
+ this.mySrc = "/4dage/Model.html?m=" + item.filePath;
|
|
|
// this.mySrc = '/4dage/Model.html'
|
|
|
- this.modelShow = true
|
|
|
- } else if (item.type === 'img') {
|
|
|
- this.imgBigNum = 1
|
|
|
- const res = await goodDetail(item.id)
|
|
|
+ this.modelShow = true;
|
|
|
+ } else if (item.type === "img") {
|
|
|
+ this.imgBigNum = 1;
|
|
|
+ const res = await goodDetail(item.id);
|
|
|
// console.log(998, res)
|
|
|
- const temp = []
|
|
|
- res.data.file.forEach(v => {
|
|
|
+ const temp = [];
|
|
|
+ res.data.file.forEach((v) => {
|
|
|
// console.log(998, v)
|
|
|
- if (v.isIndex === 1) temp.push(this.baseURL + v.filePath)
|
|
|
+ if (v.isIndex === 1) temp.push(this.baseURL + v.filePath);
|
|
|
else {
|
|
|
setTimeout(() => {
|
|
|
- temp.push(this.baseURL + v.filePath)
|
|
|
- }, 0)
|
|
|
+ temp.push(this.baseURL + v.filePath);
|
|
|
+ }, 0);
|
|
|
}
|
|
|
- })
|
|
|
- this.srcList = temp
|
|
|
+ });
|
|
|
+ this.srcList = temp;
|
|
|
this.$nextTick(() => {
|
|
|
setTimeout(() => {
|
|
|
- this.imgBigShow = true
|
|
|
+ this.imgBigShow = true;
|
|
|
// 左按钮
|
|
|
- const tempLeft = document.querySelector('.el-image-viewer__prev')
|
|
|
- tempLeft.addEventListener('click', () => {
|
|
|
- this.imgBigNum--
|
|
|
- if (this.imgBigNum === 0) this.imgBigNum = this.srcList.length
|
|
|
- })
|
|
|
+ const tempLeft = document.querySelector(".el-image-viewer__prev");
|
|
|
+ tempLeft.addEventListener("click", () => {
|
|
|
+ this.imgBigNum--;
|
|
|
+ if (this.imgBigNum === 0) this.imgBigNum = this.srcList.length;
|
|
|
+ });
|
|
|
// 右按钮
|
|
|
- const tempRight = document.querySelector('.el-image-viewer__next')
|
|
|
- tempRight.addEventListener('click', () => {
|
|
|
- this.imgBigNum++
|
|
|
- if (this.imgBigNum === this.srcList.length + 1) this.imgBigNum = 1
|
|
|
- })
|
|
|
- const temp = document.querySelector('.el-image-viewer__close')
|
|
|
- temp.addEventListener('click', () => {
|
|
|
- this.imgBigShow = false
|
|
|
- this.srcList = ['']
|
|
|
+ const tempRight = document.querySelector(".el-image-viewer__next");
|
|
|
+ tempRight.addEventListener("click", () => {
|
|
|
+ this.imgBigNum++;
|
|
|
+ if (this.imgBigNum === this.srcList.length + 1)
|
|
|
+ this.imgBigNum = 1;
|
|
|
+ });
|
|
|
+ const myTemp = document.querySelector(".el-image-viewer__mask");
|
|
|
+ myTemp.addEventListener("click", () => {
|
|
|
+ this.imgBigShow = false;
|
|
|
+ });
|
|
|
+ //因为污染自己写滚轮缩放
|
|
|
+ document
|
|
|
+ .querySelector(".el-image-viewer__wrapper")
|
|
|
+ .addEventListener("mousewheel", (event) => {
|
|
|
+ let delta = 0;
|
|
|
+ if (!event) event = window.event;
|
|
|
+ if (event.wheelDelta) {
|
|
|
+ delta = event.wheelDelta / 120;
|
|
|
+ if (window.opera) delta = -delta;
|
|
|
+ } else if (event.detail) {
|
|
|
+ delta = -event.detail / 3;
|
|
|
+ }
|
|
|
+ let img = document.querySelector(".el-image-viewer__img");
|
|
|
+ if (delta > 0) {
|
|
|
+ let width = img.width;
|
|
|
+ img.width = width * 1.1;
|
|
|
+ } else if (delta < 0) {
|
|
|
+ let width = img.width;
|
|
|
+ if (width > 400) {
|
|
|
+ img.width = width * 0.9;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ const temp = document.querySelector(".el-image-viewer__close");
|
|
|
+ temp.addEventListener("click", () => {
|
|
|
+ this.imgBigShow = false;
|
|
|
+ this.srcList = [""];
|
|
|
// console.log('我点了里面的关闭')
|
|
|
- })
|
|
|
- }, 100)
|
|
|
- })
|
|
|
- } else if (item.type === 'video') {
|
|
|
- this.myVideoShow = true
|
|
|
- this.myVideoSrc = this.baseURL + item.filePath
|
|
|
+ });
|
|
|
+ }, 100);
|
|
|
+ });
|
|
|
+ } else if (item.type === "video") {
|
|
|
+ this.myVideoShow = true;
|
|
|
+ this.myVideoSrc = this.baseURL + item.filePath;
|
|
|
}
|
|
|
},
|
|
|
- cutTab (val) {
|
|
|
- if (this.formData.type === val.type) return
|
|
|
- this.formData.pageNum = 1
|
|
|
- this.formData.type = val.type
|
|
|
- this.goodList(this.formData)
|
|
|
+ cutTab(val) {
|
|
|
+ if (this.formData.type === val.type) return;
|
|
|
+ this.formData.pageNum = 1;
|
|
|
+ this.formData.type = val.type;
|
|
|
+ this.goodList(this.formData);
|
|
|
},
|
|
|
- mySearch () {
|
|
|
- this.formData.pageNum = 1
|
|
|
- this.goodList(this.formData)
|
|
|
+ mySearch() {
|
|
|
+ this.formData.pageNum = 1;
|
|
|
+ this.goodList(this.formData);
|
|
|
},
|
|
|
// 封装获取列表函数
|
|
|
- async goodList (data) {
|
|
|
- const res = await goodList(data)
|
|
|
- this.total = res.data.total
|
|
|
- this.myArr = res.data.records
|
|
|
+ async goodList(data) {
|
|
|
+ const res = await goodList(data);
|
|
|
+ this.total = res.data.total;
|
|
|
+ this.myArr = res.data.records;
|
|
|
// if (this.formData.type === 'img') {
|
|
|
// this.myArr.forEach(v => {
|
|
|
// this.srcList = [this.baseURL + v.thumb]
|
|
|
// })
|
|
|
// }
|
|
|
// console.log(998, res)
|
|
|
- }
|
|
|
+ },
|
|
|
},
|
|
|
// 生命周期 - 创建完成(可以访问当前this实例)
|
|
|
- created () {
|
|
|
+ created() {
|
|
|
// 获取服务器前缀地址
|
|
|
- this.baseURL = axios.defaults.baseURL
|
|
|
- this.goodList(this.formData)
|
|
|
+ this.baseURL = axios.defaults.baseURL;
|
|
|
+ this.goodList(this.formData);
|
|
|
},
|
|
|
// 生命周期 - 挂载完成(可以访问DOM元素)
|
|
|
- mounted () {
|
|
|
+ mounted() {
|
|
|
// 监听esc事件
|
|
|
- document.addEventListener('webkitfullscreenchange', (e) => {
|
|
|
+ document.addEventListener("webkitfullscreenchange", (e) => {
|
|
|
if (!e.currentTarget.webkitIsFullScreen) {
|
|
|
// console.log('退出啊webkitIsFullScreen11111111111')
|
|
|
setTimeout(() => {
|
|
|
- this.fullscreen = false
|
|
|
- }, 100)
|
|
|
+ this.fullscreen = false;
|
|
|
+ }, 100);
|
|
|
} else {
|
|
|
// console.log('进入webkitIsFullScreen')
|
|
|
}
|
|
|
- })
|
|
|
+ });
|
|
|
|
|
|
- document.addEventListener('fullscreenchange', (e) => {
|
|
|
+ document.addEventListener("fullscreenchange", (e) => {
|
|
|
if (!document.fullscreenElement) {
|
|
|
// console.log('退出啊fullscreenchange1111111111')
|
|
|
setTimeout(() => {
|
|
|
- this.fullscreen = false
|
|
|
- }, 100)
|
|
|
+ this.fullscreen = false;
|
|
|
+ }, 100);
|
|
|
} else {
|
|
|
// console.log('进入fullscreenchange')
|
|
|
}
|
|
|
- })
|
|
|
+ });
|
|
|
|
|
|
- document.addEventListener('MSFullscreenChange', (e) => {
|
|
|
+ document.addEventListener("MSFullscreenChange", (e) => {
|
|
|
if (!document.msFullscreenElement) {
|
|
|
// console.log('IE退出111111')
|
|
|
setTimeout(() => {
|
|
|
- this.fullscreen = false
|
|
|
- }, 100)
|
|
|
+ this.fullscreen = false;
|
|
|
+ }, 100);
|
|
|
} else {
|
|
|
// console.log('IE进')
|
|
|
}
|
|
|
- })
|
|
|
- document.addEventListener('mozfullscreenchange', (e) => {
|
|
|
+ });
|
|
|
+ document.addEventListener("mozfullscreenchange", (e) => {
|
|
|
if (!document.mozFullScreenElement) {
|
|
|
// console.log('火狐退出1111111111111')
|
|
|
this.$nextTick(() => {
|
|
|
setTimeout(() => {
|
|
|
- this.fullscreen = false
|
|
|
- }, 100)
|
|
|
- })
|
|
|
+ this.fullscreen = false;
|
|
|
+ }, 100);
|
|
|
+ });
|
|
|
} else {
|
|
|
// console.log('火狐进')
|
|
|
}
|
|
|
- })
|
|
|
+ });
|
|
|
},
|
|
|
- beforeCreate () {}, // 生命周期 - 创建之前
|
|
|
- beforeMount () {}, // 生命周期 - 挂载之前
|
|
|
- beforeUpdate () {}, // 生命周期 - 更新之前
|
|
|
- updated () {}, // 生命周期 - 更新之后
|
|
|
- beforeDestroy () {}, // 生命周期 - 销毁之前
|
|
|
- destroyed () {}, // 生命周期 - 销毁完成
|
|
|
- activated () {} // 如果页面有keep-alive缓存功能,这个函数会触发
|
|
|
-}
|
|
|
+ beforeCreate() {}, // 生命周期 - 创建之前
|
|
|
+ beforeMount() {}, // 生命周期 - 挂载之前
|
|
|
+ beforeUpdate() {}, // 生命周期 - 更新之前
|
|
|
+ updated() {}, // 生命周期 - 更新之后
|
|
|
+ beforeDestroy() {}, // 生命周期 - 销毁之前
|
|
|
+ destroyed() {}, // 生命周期 - 销毁完成
|
|
|
+ activated() {}, // 如果页面有keep-alive缓存功能,这个函数会触发
|
|
|
+};
|
|
|
</script>
|
|
|
<style lang='less' scoped>
|
|
|
.tab3 {
|
|
|
@@ -351,7 +377,7 @@ export default {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- .hint{
|
|
|
+ .hint {
|
|
|
font-size: 36px;
|
|
|
min-width: 1200px;
|
|
|
flex: 1;
|
|
|
@@ -392,6 +418,8 @@ export default {
|
|
|
transform: translateX(-50%);
|
|
|
}
|
|
|
.listTxt {
|
|
|
+ font-size: 18px;
|
|
|
+ color: #b9412e;
|
|
|
overflow: hidden;
|
|
|
text-overflow: ellipsis;
|
|
|
white-space: nowrap;
|
|
|
@@ -430,37 +458,39 @@ export default {
|
|
|
color: #fff;
|
|
|
}
|
|
|
}
|
|
|
- .btnX {
|
|
|
- cursor: pointer;
|
|
|
- position: absolute;
|
|
|
- right: 10px;
|
|
|
- top: 10px;
|
|
|
- color: #fff;
|
|
|
- font-size: 40px;
|
|
|
- }
|
|
|
+ .btnX {
|
|
|
+ cursor: pointer;
|
|
|
+ position: absolute;
|
|
|
+ right: 10px;
|
|
|
+ top: 10px;
|
|
|
+ color: #fff;
|
|
|
+ font-size: 40px;
|
|
|
+ }
|
|
|
|
|
|
- .videoPlay{
|
|
|
+ .videoPlay {
|
|
|
border: 2px solid #b9412e;
|
|
|
position: absolute;
|
|
|
top: 50%;
|
|
|
left: 50%;
|
|
|
- transform: translate(-50%,-50%);
|
|
|
+ transform: translate(-50%, -50%);
|
|
|
width: 800px;
|
|
|
height: auto;
|
|
|
- video{
|
|
|
- vertical-align:top;
|
|
|
+ video {
|
|
|
+ vertical-align: top;
|
|
|
width: 100%;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- .imgBigShow{
|
|
|
+ .imgBigShow {
|
|
|
+ padding: 3px 5px;
|
|
|
+ background-color: rgba(0, 0, 0, 0.7);
|
|
|
+ font-size: 18px;
|
|
|
z-index: 9999;
|
|
|
position: fixed;
|
|
|
left: 50%;
|
|
|
transform: translateX(-50%);
|
|
|
- bottom:100px;
|
|
|
+ bottom: 100px;
|
|
|
color: #fff;
|
|
|
- font-size: 16px;
|
|
|
}
|
|
|
}
|
|
|
</style>
|