|
@@ -4,10 +4,10 @@
|
|
|
<div class="left">
|
|
<div class="left">
|
|
|
<ul>
|
|
<ul>
|
|
|
<li
|
|
<li
|
|
|
- :class="{ active: listInd === item.id }"
|
|
|
|
|
|
|
+ :class="{ active: formData.type === item.type }"
|
|
|
v-for="item in listData"
|
|
v-for="item in listData"
|
|
|
:key="item.id"
|
|
:key="item.id"
|
|
|
- @click="cutTab(item.id)"
|
|
|
|
|
|
|
+ @click="cutTab(item)"
|
|
|
>
|
|
>
|
|
|
<span>·</span> {{ item.name }}
|
|
<span>·</span> {{ item.name }}
|
|
|
</li>
|
|
</li>
|
|
@@ -16,61 +16,108 @@
|
|
|
<el-input
|
|
<el-input
|
|
|
placeholder="搜索"
|
|
placeholder="搜索"
|
|
|
suffix-icon="el-icon-search"
|
|
suffix-icon="el-icon-search"
|
|
|
- v-model="search"
|
|
|
|
|
|
|
+ v-model="formData.searchKey"
|
|
|
>
|
|
>
|
|
|
</el-input>
|
|
</el-input>
|
|
|
<span class="btn" @click="mySearch"></span>
|
|
<span class="btn" @click="mySearch"></span>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
<!-- 右侧内容 -->
|
|
<!-- 右侧内容 -->
|
|
|
- <div class="right">
|
|
|
|
|
- <div class="row" v-for="i in 9" :key="i" @click="modelFu">
|
|
|
|
|
- <img src="../../assets/img/swiper.png" alt="" />
|
|
|
|
|
- <p>123</p>
|
|
|
|
|
|
|
+ <!-- 没有数据时 -->
|
|
|
|
|
+ <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)"
|
|
|
|
|
+ >
|
|
|
|
|
+ <!-- 模型/视频 -->
|
|
|
|
|
+ <img
|
|
|
|
|
+ :src="baseURL + item.thumb"
|
|
|
|
|
+ alt=""
|
|
|
|
|
+ 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>
|
|
|
|
|
+ <p class="listTxt" :title="item.name">{{ item.name }}</p>
|
|
|
</div>
|
|
</div>
|
|
|
<!-- 分页 -->
|
|
<!-- 分页 -->
|
|
|
- <!-- :page-sizes="[15, 30, 45, 60]"
|
|
|
|
|
- :current-page="from2.pageNum"
|
|
|
|
|
- @current-change="currentChange"
|
|
|
|
|
- @size-change="sizeChange"
|
|
|
|
|
- -->
|
|
|
|
|
<div class="paging">
|
|
<div class="paging">
|
|
|
- <el-pagination layout="prev,pager,next,jumper" :total="100">
|
|
|
|
|
|
|
+ <el-pagination
|
|
|
|
|
+ layout="prev,pager,next,jumper"
|
|
|
|
|
+ :total="total"
|
|
|
|
|
+ :page-size='9'
|
|
|
|
|
+ :current-page="formData.pageNum"
|
|
|
|
|
+ @current-change="currentChange"
|
|
|
|
|
+ @size-change="sizeChange"
|
|
|
|
|
+ >
|
|
|
</el-pagination>
|
|
</el-pagination>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
<!-- 点击文物出现的弹窗 -->
|
|
<!-- 点击文物出现的弹窗 -->
|
|
|
<div class="model" v-if="modelShow">
|
|
<div class="model" v-if="modelShow">
|
|
|
<div class="ifrCon" ref="ifrCon">
|
|
<div class="ifrCon" ref="ifrCon">
|
|
|
- <iframe
|
|
|
|
|
- src="https://4dscene.4dage.com/culturalrelics/ZSBWG/Model.html?m=zsbb12&v=1"
|
|
|
|
|
- frameborder="0"
|
|
|
|
|
- ></iframe>
|
|
|
|
|
|
|
+ <iframe :src="mySrc" frameborder="0"></iframe>
|
|
|
<!-- 关闭按钮 -->
|
|
<!-- 关闭按钮 -->
|
|
|
<div class="btnX el-icon-close" @click="modelShow = false"></div>
|
|
<div class="btnX el-icon-close" @click="modelShow = false"></div>
|
|
|
<!-- 全屏按钮 -->
|
|
<!-- 全屏按钮 -->
|
|
|
<div class="full" @click="screen"></div>
|
|
<div class="full" @click="screen"></div>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</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="videoPlay">
|
|
|
|
|
+ <video :src="myVideoSrc" v-if="myVideoSrc" controls></video>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
</div>
|
|
</div>
|
|
|
</template>
|
|
</template>
|
|
|
|
|
|
|
|
<script>
|
|
<script>
|
|
|
|
|
+import axios from '@/utils/request'
|
|
|
|
|
+import { goodList, goodDetail } from '@/utils/api'
|
|
|
export default {
|
|
export default {
|
|
|
name: 'tab3',
|
|
name: 'tab3',
|
|
|
components: {},
|
|
components: {},
|
|
|
data () {
|
|
data () {
|
|
|
// 这里存放数据
|
|
// 这里存放数据
|
|
|
return {
|
|
return {
|
|
|
|
|
+ total: 0,
|
|
|
|
|
+ baseURL: '',
|
|
|
fullscreen: false,
|
|
fullscreen: false,
|
|
|
modelShow: false,
|
|
modelShow: false,
|
|
|
listData: [
|
|
listData: [
|
|
|
- { id: 1, name: '实物模型', type: '' },
|
|
|
|
|
- { id: 2, name: '专题图库', type: '' },
|
|
|
|
|
- { id: 3, name: '视频档案', type: '' }
|
|
|
|
|
|
|
+ { id: 1, name: '实物模型', type: 'model' },
|
|
|
|
|
+ { id: 2, name: '专题图库', type: 'img' },
|
|
|
|
|
+ { id: 3, name: '视频档案', type: 'video' }
|
|
|
],
|
|
],
|
|
|
- listInd: 1,
|
|
|
|
|
- search: ''
|
|
|
|
|
|
|
+ formData: {
|
|
|
|
|
+ sortType: 0,
|
|
|
|
|
+ pageNum: 1,
|
|
|
|
|
+ pageSize: 9,
|
|
|
|
|
+ searchKey: '',
|
|
|
|
|
+ type: 'model'
|
|
|
|
|
+ },
|
|
|
|
|
+ myArr: [],
|
|
|
|
|
+ mySrc: '',
|
|
|
|
|
+ srcList: [''],
|
|
|
|
|
+ // 大图预览里面的文字显示
|
|
|
|
|
+ imgBigShow: false,
|
|
|
|
|
+ imgBigNum: 1,
|
|
|
|
|
+ // 视频档案数据
|
|
|
|
|
+ myVideoShow: false,
|
|
|
|
|
+ myVideoSrc: ''
|
|
|
}
|
|
}
|
|
|
},
|
|
},
|
|
|
// 监听属性 类似于data概念
|
|
// 监听属性 类似于data概念
|
|
@@ -79,6 +126,18 @@ export default {
|
|
|
watch: {},
|
|
watch: {},
|
|
|
// 方法集合
|
|
// 方法集合
|
|
|
methods: {
|
|
methods: {
|
|
|
|
|
+ // 分页器方法
|
|
|
|
|
+ currentChange (val) {
|
|
|
|
|
+ // console.log('当前页改变了', val)
|
|
|
|
|
+ this.formData.pageNum = val
|
|
|
|
|
+ this.goodList(this.formData)
|
|
|
|
|
+ },
|
|
|
|
|
+ sizeChange (val) {
|
|
|
|
|
+ // console.log('条数改变了', val)
|
|
|
|
|
+ this.formData.pageNum = 1
|
|
|
|
|
+ this.formData.pageSize = val
|
|
|
|
|
+ this.goodList(this.formData)
|
|
|
|
|
+ },
|
|
|
// 点击模型全屏
|
|
// 点击模型全屏
|
|
|
screen () {
|
|
screen () {
|
|
|
const element = this.$refs.ifrCon // 获取容器
|
|
const element = this.$refs.ifrCon // 获取容器
|
|
@@ -111,23 +170,79 @@ export default {
|
|
|
this.fullscreen = !this.fullscreen
|
|
this.fullscreen = !this.fullscreen
|
|
|
},
|
|
},
|
|
|
// 点击模型
|
|
// 点击模型
|
|
|
- modelFu () {
|
|
|
|
|
- this.modelShow = true
|
|
|
|
|
|
|
+ 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') {
|
|
|
|
|
+ const res = await goodDetail(item.id)
|
|
|
|
|
+ // console.log(998, res)
|
|
|
|
|
+ const temp = []
|
|
|
|
|
+ res.data.file.forEach(v => {
|
|
|
|
|
+ temp.push(this.baseURL + v.filePath)
|
|
|
|
|
+ })
|
|
|
|
|
+ this.srcList = temp
|
|
|
|
|
+ this.$nextTick(() => {
|
|
|
|
|
+ setTimeout(() => {
|
|
|
|
|
+ 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 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
|
|
|
|
|
+ // console.log('我点了里面的关闭')
|
|
|
|
|
+ })
|
|
|
|
|
+ }, 100)
|
|
|
|
|
+ })
|
|
|
|
|
+ } else if (item.type === 'video') {
|
|
|
|
|
+ this.myVideoShow = true
|
|
|
|
|
+ this.myVideoSrc = this.baseURL + item.filePath
|
|
|
|
|
+ }
|
|
|
},
|
|
},
|
|
|
- cutTab (id) {
|
|
|
|
|
- this.listInd = id
|
|
|
|
|
|
|
+ cutTab (val) {
|
|
|
|
|
+ if (this.formData.type === val.type) return
|
|
|
|
|
+ this.formData.type = val.type
|
|
|
|
|
+ this.goodList(this.formData)
|
|
|
},
|
|
},
|
|
|
mySearch () {
|
|
mySearch () {
|
|
|
- console.log('点击了搜索')
|
|
|
|
|
|
|
+ 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
|
|
|
|
|
+ // if (this.formData.type === 'img') {
|
|
|
|
|
+ // this.myArr.forEach(v => {
|
|
|
|
|
+ // this.srcList = [this.baseURL + v.thumb]
|
|
|
|
|
+ // })
|
|
|
|
|
+ // }
|
|
|
|
|
+ // console.log(998, res)
|
|
|
}
|
|
}
|
|
|
},
|
|
},
|
|
|
// 生命周期 - 创建完成(可以访问当前this实例)
|
|
// 生命周期 - 创建完成(可以访问当前this实例)
|
|
|
- created () {},
|
|
|
|
|
|
|
+ created () {
|
|
|
|
|
+ // 获取服务器前缀地址
|
|
|
|
|
+ this.baseURL = axios.defaults.baseURL
|
|
|
|
|
+ this.goodList(this.formData)
|
|
|
|
|
+ },
|
|
|
// 生命周期 - 挂载完成(可以访问DOM元素)
|
|
// 生命周期 - 挂载完成(可以访问DOM元素)
|
|
|
mounted () {
|
|
mounted () {
|
|
|
// 监听esc事件
|
|
// 监听esc事件
|
|
|
document.addEventListener('webkitfullscreenchange', (e) => {
|
|
document.addEventListener('webkitfullscreenchange', (e) => {
|
|
|
- if (!(e.currentTarget.webkitIsFullScreen)) {
|
|
|
|
|
|
|
+ if (!e.currentTarget.webkitIsFullScreen) {
|
|
|
// console.log('退出啊webkitIsFullScreen11111111111')
|
|
// console.log('退出啊webkitIsFullScreen11111111111')
|
|
|
setTimeout(() => {
|
|
setTimeout(() => {
|
|
|
this.fullscreen = false
|
|
this.fullscreen = false
|
|
@@ -227,18 +342,27 @@ export default {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+ .hint{
|
|
|
|
|
+ font-size: 36px;
|
|
|
|
|
+ min-width: 1200px;
|
|
|
|
|
+ flex: 1;
|
|
|
|
|
+ height: 825px;
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ justify-content: center;
|
|
|
|
|
+ align-items: center;
|
|
|
|
|
+ }
|
|
|
.right {
|
|
.right {
|
|
|
position: relative;
|
|
position: relative;
|
|
|
- justify-content: space-between;
|
|
|
|
|
|
|
+ justify-content: start;
|
|
|
align-content: flex-start;
|
|
align-content: flex-start;
|
|
|
display: flex;
|
|
display: flex;
|
|
|
flex-wrap: wrap;
|
|
flex-wrap: wrap;
|
|
|
min-width: 1200px;
|
|
min-width: 1200px;
|
|
|
- margin-left: 40px;
|
|
|
|
|
flex: 1;
|
|
flex: 1;
|
|
|
height: 825px;
|
|
height: 825px;
|
|
|
.row {
|
|
.row {
|
|
|
margin-bottom: 20px;
|
|
margin-bottom: 20px;
|
|
|
|
|
+ margin-left: 40px;
|
|
|
cursor: pointer;
|
|
cursor: pointer;
|
|
|
width: 30%;
|
|
width: 30%;
|
|
|
text-align: center;
|
|
text-align: center;
|
|
@@ -258,6 +382,11 @@ export default {
|
|
|
bottom: 0;
|
|
bottom: 0;
|
|
|
transform: translateX(-50%);
|
|
transform: translateX(-50%);
|
|
|
}
|
|
}
|
|
|
|
|
+ .listTxt {
|
|
|
|
|
+ overflow: hidden;
|
|
|
|
|
+ text-overflow: ellipsis;
|
|
|
|
|
+ white-space: nowrap;
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
.model {
|
|
.model {
|
|
|
position: fixed;
|
|
position: fixed;
|
|
@@ -280,18 +409,10 @@ export default {
|
|
|
width: 100%;
|
|
width: 100%;
|
|
|
height: 100%;
|
|
height: 100%;
|
|
|
}
|
|
}
|
|
|
- .btnX {
|
|
|
|
|
- cursor: pointer;
|
|
|
|
|
- position: absolute;
|
|
|
|
|
- right: 10px;
|
|
|
|
|
- top: 10px;
|
|
|
|
|
- color: #fff;
|
|
|
|
|
- font-size: 40px;
|
|
|
|
|
- }
|
|
|
|
|
.full {
|
|
.full {
|
|
|
width: 30px;
|
|
width: 30px;
|
|
|
height: 30px;
|
|
height: 30px;
|
|
|
- background: url('../../assets/img/tab3Full.png');
|
|
|
|
|
|
|
+ background: url("../../assets/img/tab3Full.png");
|
|
|
background-size: 30px 30px;
|
|
background-size: 30px 30px;
|
|
|
cursor: pointer;
|
|
cursor: pointer;
|
|
|
position: absolute;
|
|
position: absolute;
|
|
@@ -300,6 +421,37 @@ export default {
|
|
|
color: #fff;
|
|
color: #fff;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+ .btnX {
|
|
|
|
|
+ cursor: pointer;
|
|
|
|
|
+ position: absolute;
|
|
|
|
|
+ right: 10px;
|
|
|
|
|
+ top: 10px;
|
|
|
|
|
+ color: #fff;
|
|
|
|
|
+ font-size: 40px;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .videoPlay{
|
|
|
|
|
+ border: 2px solid #b9412e;
|
|
|
|
|
+ position: absolute;
|
|
|
|
|
+ top: 50%;
|
|
|
|
|
+ left: 50%;
|
|
|
|
|
+ transform: translate(-50%,-50%);
|
|
|
|
|
+ width: 800px;
|
|
|
|
|
+ height: auto;
|
|
|
|
|
+ video{
|
|
|
|
|
+ vertical-align:top;
|
|
|
|
|
+ width: 100%;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ .imgBigShow{
|
|
|
|
|
+ z-index: 9999;
|
|
|
|
|
+ position: fixed;
|
|
|
|
|
+ left: 50%;
|
|
|
|
|
+ transform: translateX(-50%);
|
|
|
|
|
+ bottom:100px;
|
|
|
|
|
+ color: #fff;
|
|
|
|
|
+ font-size: 16px;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
</style>
|
|
</style>
|