Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
E
exhibition_page
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
龙菲
exhibition_page
Commits
dfb9e560
提交
dfb9e560
authored
8月 02, 2022
作者:
龙菲
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
增加布展中国风主题
上级
b2d3588e
显示空白字符变更
内嵌
并排
正在显示
7 个修改的文件
包含
609 行增加
和
68 行删除
+609
-68
audio.png
src/assets/imgs/display/audio.png
+0
-0
bgm,.png
src/assets/imgs/display/bgm,.png
+0
-0
index.scss
src/assets/styles/index.scss
+5
-2
index.vue
src/components/Video/index.vue
+86
-2
main.js
src/main.js
+2
-2
index.js
src/utils/index.js
+19
-6
Detail.vue
src/views/display/Detail.vue
+497
-56
没有找到文件。
src/assets/imgs/display/audio.png
0 → 100644
浏览文件 @
dfb9e560
983 Bytes
src/assets/imgs/display/bgm,.png
deleted
100644 → 0
浏览文件 @
b2d3588e
4.2 KB
src/assets/styles/index.scss
浏览文件 @
dfb9e560
@import
url('@/assets/fonts/font.css')
;
@import
url('@/assets/fonts/font.css')
;
@import
url('./animations.scss')
;
@import
url('./animations.scss')
;
/**适应移动端 */
/**适应移动端 */
@media
screen
and
(
max-width
:
500px
)
{
@media
screen
and
(
max-width
:
500px
)
{
...
@@ -34,6 +35,8 @@ li {
...
@@ -34,6 +35,8 @@ li {
ul
,
ul
,
li
{
li
{
list-style
:
none
;
list-style
:
none
;
padding
:
0
;
margin
:
0
;
}
}
//一些公共样式
//一些公共样式
...
@@ -61,7 +64,7 @@ li {
...
@@ -61,7 +64,7 @@ li {
}
}
}
}
.content-wrapper
{
.content-wrapper
{
// width: 1200px;
// width: 1200px;
width
:
100%
;
width
:
100%
;
padding
:
0
13%
;
padding
:
0
13%
;
...
@@ -69,4 +72,3 @@ li {
...
@@ -69,4 +72,3 @@ li {
flex-direction
:
column
;
flex-direction
:
column
;
align-items
:
center
;
align-items
:
center
;
}
}
\ No newline at end of file
src/components/Video/index.vue
浏览文件 @
dfb9e560
<
template
>
<
template
>
<video
:src=
"url"
class=
"video-wrapper"
controls
loop
></video>
<div
class=
"video-container"
@
click=
"hanleClick"
>
<video
:src=
"url"
class=
"video-dom"
ref=
"video"
></video>
<div
class=
"modal"
:style=
"
{ opacity: opacity }">
<div
class=
"play-btn"
>
<i
class=
"el-icon-caret-right"
></i>
</div>
<div
class=
"blur"
></div>
</div>
</div>
</
template
>
</
template
>
<
script
>
<
script
>
...
@@ -11,12 +19,87 @@ export default {
...
@@ -11,12 +19,87 @@ export default {
type
:
String
,
type
:
String
,
},
},
},
},
data
()
{
return
{
isPlaying
:
false
,
opacity
:
1
,
};
},
methods
:
{
// 播放视频
play
()
{
this
.
$refs
.
video
.
play
();
},
// 暂停视频
pause
()
{
this
.
$refs
.
video
.
pause
();
},
hanleClick
()
{
this
.
isPlaying
=
!
this
.
isPlaying
;
if
(
this
.
isPlaying
)
{
this
.
play
();
this
.
opacity
=
0
;
}
else
{
this
.
pause
();
this
.
opacity
=
1
;
}
},
},
};
};
</
script
>
</
script
>
<
style
scoped
lang=
'scss'
>
<
style
scoped
lang=
'scss'
>
.video-wrapper
{
.video-container
{
position
:
relative
;
height
:
100%
;
.video-dom
{
height
:
auto
;
height
:
auto
;
width
:
100%
;
width
:
100%
;
}
.modal
{
width
:
100%
;
height
:
100%
;
background-color
:
rgba
(
$color
:
#000000
,
$alpha
:
0
.5
);
display
:
flex
;
justify-content
:
center
;
align-items
:
center
;
position
:
absolute
;
left
:
0
;
bottom
:
0
;
transition
:
all
0
.5s
ease
;
position
:
absolute
;
z-index
:
9
;
.play-btn
{
width
:
100px
;
height
:
70px
;
border
:
2px
solid
#892325
;
// background-color: #fff;
border-radius
:
20px
;
display
:
flex
;
justify-content
:
center
;
align-items
:
center
;
color
:
#892325
;
position
:
absolute
;
z-index
:
1
;
i
{
font-size
:
50px
;
z-index
:
1
;
}
}
}
.blur
{
width
:
100px
;
height
:
70px
;
background-color
:
#fff
;
position
:
absolute
;
left
:
50%
;
bottom
:
50%
;
transform
:
translate
(
-50%
,
50%
);
filter
:
blur
(
26px
);
z-index
:
0
;
}
}
}
</
style
>
</
style
>
\ No newline at end of file
src/main.js
浏览文件 @
dfb9e560
...
@@ -15,7 +15,7 @@ import {
...
@@ -15,7 +15,7 @@ import {
WOW
WOW
}
from
'wowjs'
}
from
'wowjs'
import
{
import
{
get
Tota
lUrl
get
Ful
lUrl
}
from
'@/utils/index'
}
from
'@/utils/index'
// import '@/rem'
// import '@/rem'
...
@@ -38,7 +38,7 @@ Vue.prototype.$wow = new WOW({
...
@@ -38,7 +38,7 @@ Vue.prototype.$wow = new WOW({
}
}
})
})
Vue
.
prototype
.
$getFullUrl
=
get
Tota
lUrl
Vue
.
prototype
.
$getFullUrl
=
get
Ful
lUrl
new
Vue
({
new
Vue
({
router
,
router
,
store
,
store
,
...
...
src/utils/index.js
浏览文件 @
dfb9e560
...
@@ -22,16 +22,12 @@ export function debounce(func, wait, immediate = true) {
...
@@ -22,16 +22,12 @@ export function debounce(func, wait, immediate = true) {
}
}
}
}
// 获取完整的url,根据环境进行配置
// 获取完整的url,根据环境进行配置
export
function
get
Tota
lUrl
(
url
)
{
export
function
get
Ful
lUrl
(
url
)
{
if
(
url
)
{
if
(
url
)
{
let
fullUrl
=
''
let
fullUrl
=
''
let
urlArr
=
url
.
split
(
'files'
)
let
urlArr
=
url
.
split
(
'files'
)
// if (process.env.NODE_ENV == 'development') {
// fullUrl = url
// } else {
// fullUrl = '/files' + urlArr[1]
// }
fullUrl
=
'/files'
+
urlArr
[
1
]
fullUrl
=
'/files'
+
urlArr
[
1
]
return
fullUrl
return
fullUrl
}
else
{
}
else
{
...
@@ -39,3 +35,19 @@ export function getTotalUrl(url) {
...
@@ -39,3 +35,19 @@ export function getTotalUrl(url) {
}
}
}
}
/**
* 预览文件
* @param href 预览地址
* @param previewName 预览文件用户看到的名称
*/
export
function
previewFile
(
href
,
previewName
)
{
let
a
=
document
.
createElement
(
"a"
);
a
.
href
=
href
;
a
.
target
=
'_blank'
a
.
download
=
previewName
;
a
.
style
.
display
=
"none"
;
document
.
body
.
appendChild
(
a
);
a
.
click
();
a
.
remove
();
}
\ No newline at end of file
src/views/display/Detail.vue
浏览文件 @
dfb9e560
...
@@ -2,9 +2,15 @@
...
@@ -2,9 +2,15 @@
<div
class=
"display-detail"
>
<div
class=
"display-detail"
>
<div
class=
"empty-space"
></div>
<div
class=
"empty-space"
></div>
<div
class=
"content"
id=
"content"
>
<div
class=
"content"
id=
"content"
>
<div
class=
"content-item sliders"
>
<div
class=
"content-item sliders"
ref=
"imgs"
>
<div
class=
"center-box"
>
<div
class=
"view-box"
>
<div
class=
"slide-group"
:style=
"
{ width: contentWidth }">
<div
class=
"slide-group"
:style=
"
{
width: sildeGroupWidth,
left: slideGroupleft + 'px',
}"
>
<div
<div
class=
"slide-item"
class=
"slide-item"
v-for=
"(item, index) in displayDetail.imagesVo"
v-for=
"(item, index) in displayDetail.imagesVo"
...
@@ -14,13 +20,99 @@
...
@@ -14,13 +20,99 @@
<div
class=
"modal"
></div>
<div
class=
"modal"
></div>
</div>
</div>
</div>
</div>
<div
class=
"center-img"
>
</div>
<div
class=
"modal-layer"
>
<div
class=
"left-layer"
></div>
<div
class=
"center-img"
@
mousewheel=
"handleImgsSlide"
>
<!--
<div
class=
"border-box"
></div>
-->
<img
src=
"@/assets/imgs/display/slider-box.png"
alt=
""
/>
<img
src=
"@/assets/imgs/display/slider-box.png"
alt=
""
/>
</div>
</div>
<div
class=
"right-layer"
></div>
</div>
</div>
<div
class=
"content-item intro wow animate__animated animate__fadeInUp"
>
<div
class=
"wrapper"
>
<div
class=
"title"
>
{{
displayDetail
.
title
}}
</div>
<div
class=
"desc-and-tools"
>
<div
class=
"desc"
>
<el-row>
<el-col
class=
"item"
>
<div
class=
"label"
>
关键词:
</div>
<div
class=
"value"
>
{{
displayDetail
.
keyword
}}
</div>
</el-col>
<el-col
class=
"item"
v-if=
"dicts.display_type"
>
<div
class=
"label"
>
展览类型:
</div>
<div
class=
"value"
>
{{
dicts
.
display_type
[
displayDetail
.
type
]
}}
</div>
</el-col>
</el-row>
<el-row>
<el-col
class=
"item"
v-if=
"dicts.display_character"
>
<div
class=
"label"
>
展览性质:
</div>
<div
class=
"value"
>
{{
dicts
.
display_character
[
displayDetail
.
displayCharacter
]
}}
</div>
</el-col>
<el-col
class=
"item"
>
<div
class=
"label"
>
展览单位:
</div>
<div
class=
"value"
>
{{
displayDetail
.
deptName
}}
</div>
</el-col>
</el-row>
</div>
<div
class=
"tools"
>
<ReaderOperations
:loveCount=
"displayDetail.loveCount"
:loveCountStatus=
"Boolean(displayDetail.loveCountStatus)"
:collectCount=
"displayDetail.collectCount"
:collectCountStatus=
"Boolean(displayDetail.collectCountStatus)"
:sourceId=
"displayDetail.exhibitionId"
:title=
"displayDetail.title"
:sourceType=
"'biz_exhibition'"
@
reload=
"loadDetail"
/>
</div>
</div>
<div
class=
"divider"
></div>
<div
class=
"intro-and-video"
>
<el-row
:gutter=
"70"
>
<el-col
class=
"intro-container"
:span=
"12"
>
<div
class=
"intro-title"
>
展览简介
</div>
<div
class=
"intro-content"
>
{{
displayDetail
.
intro
}}
</div>
</el-col>
<el-col
:span=
"12"
v-if=
"
displayDetail.videosVo && displayDetail.videosVo.length > 0
"
class=
"videos"
>
<el-carousel
:interval=
"4000"
type=
"card"
height=
"220px"
>
<el-carousel-item
v-for=
"item in displayDetail.videosVo"
:key=
"item.fileId"
>
<Video
:url=
"$getFullUrl(item.url)"
/>
</el-carousel-item>
</el-carousel>
</el-col>
</el-row>
</div>
<div
class=
"audio wow animate__animated animate__fadeRight"
@
click=
"handleClickAudio"
>
<img
src=
"@/assets/imgs/display/audio.png"
alt=
""
/>
<AudioPlayer
style=
"display: none"
:url=
"$getFullUrl(displayDetail.audiosVo[0].url)"
ref=
"AudioPlayer"
v-if=
"displayDetail.audiosVo && displayDetail.audiosVo.length > 0"
/>
</div>
</div>
</div>
</div>
<div
class=
"content-item intro"
>
<div
class=
"wrapper"
></div>
</div>
</div>
<div
class=
"content-item units"
>
<div
class=
"content-item units"
>
<div
class=
"wrapper"
>
<div
class=
"wrapper"
>
...
@@ -33,10 +125,34 @@
...
@@ -33,10 +125,34 @@
<img
src=
"@/assets/imgs/display/custom-title.png"
alt=
""
/>
<img
src=
"@/assets/imgs/display/custom-title.png"
alt=
""
/>
</div>
</div>
</div>
</div>
<div
class=
"units-content"
>
<ul>
<li
v-for=
"(item, index) in displayDetail.exhibitionUnits"
:key=
"index"
>
<div
class=
"unit-title"
>
{{
item
.
title
}}
</div>
<div
class=
"unit-intro"
>
{{
item
.
intro
}}
</div>
<div
class=
"unit-imgs"
v-if=
"item.imagesVo && item.imagesVo.length > 0"
>
<div
class=
"img-item"
v-for=
"(i, idx) in item.imagesVo"
:key=
"idx"
>
<img
:src=
"$getFullUrl(i.url)"
alt=
""
/>
</div>
</div>
</li>
</ul>
</div>
</div>
<div
class=
"units-content"
></div>
</div>
</div>
<div
class=
"content-item lts"
>
</div>
<div
class=
"content-item lts wow animate__animated animate__fadeInUp"
>
<div
class=
"wrapper"
>
<div
class=
"wrapper"
>
<div
class=
"custom-title"
>
<div
class=
"custom-title"
>
<div
class=
"custom-title-prefix"
>
<div
class=
"custom-title-prefix"
>
...
@@ -48,9 +164,53 @@
...
@@ -48,9 +164,53 @@
</div>
</div>
</div>
</div>
</div>
</div>
<div
class=
"lts-content"
>
<div
<div
class=
"lts-list"
>
class=
"lts-content"
<div
class=
"lts-item"
></div>
v-if=
"
displayDetail.literatureVo && displayDetail.literatureVo.length > 0
"
>
<div
class=
"wrapper"
>
<el-table
:data=
"displayDetail.literatureVo"
:header-cell-style=
"
{
background: '#eeeeee',
color: '#333',
}"
:row-style="tableRowStyle"
>
<el-table-column
prop=
"name"
label=
"名称"
align=
"center"
></el-table-column>
<el-table-column
prop=
"authors"
label=
"作者"
align=
"center"
></el-table-column>
<el-table-column
prop=
"date"
label=
"出版时间"
align=
"center"
></el-table-column>
<el-table-column
align=
"center"
prop=
"source"
label=
"出版所在刊物"
></el-table-column>
<el-table-column
label=
"阅读"
align=
"center"
>
<template
slot-scope=
"scope"
>
<div
class=
"pdf-img"
@
click=
"handleViewLt(scope.row)"
>
<img
src=
"@/assets/imgs/display/pdf-icon.png"
/>
</div>
</
template
>
</el-table-column>
</el-table>
<!-- <div class="title">
</div>
<div class="lts-item"></div> -->
</div>
</div>
</div>
</div>
</div>
</div>
...
@@ -59,19 +219,17 @@
...
@@ -59,19 +219,17 @@
</template>
</template>
<
script
>
<
script
>
import
SearchBar
from
"@/components/SearchBar"
;
import
AudioPlayer
from
"@/components/AudioPlayer"
;
import
AudioPlayer
from
"@/components/AudioPlayer"
;
import
CustomTitle
from
"@/components/CustomTitle"
;
import
ReaderOperations
from
"@/components/ReaderOperations"
;
import
ReaderOperations
from
"@/components/ReaderOperations"
;
import
Card
from
"@/views/personal/components/Card"
;
import
Card
from
"@/views/personal/components/Card"
;
import
Video
from
"@/components/Video"
;
import
Video
from
"@/components/Video"
;
import
QRCode
from
"qrcodejs2"
;
import
QRCode
from
"qrcodejs2"
;
import
{
getDisplayById
}
from
"@/api/display"
;
import
{
getDisplayById
}
from
"@/api/display"
;
import
MenuList
from
"@/components/MenuList"
;
import
MenuList
from
"@/components/MenuList"
;
import
{
mapGetters
}
from
"vuex"
;
import
{
previewFile
}
from
"@/utils/index"
;
export
default
{
export
default
{
components
:
{
components
:
{
SearchBar
,
CustomTitle
,
AudioPlayer
,
AudioPlayer
,
ReaderOperations
,
ReaderOperations
,
MenuList
,
MenuList
,
...
@@ -92,19 +250,27 @@ export default {
...
@@ -92,19 +250,27 @@ export default {
selectValue
:
""
,
selectValue
:
""
,
keyword
:
""
,
keyword
:
""
,
displayDetail
:
{},
displayDetail
:
{},
slideImageWidth
:
""
,
slideImageWidth
:
0
,
//单个图片的宽度
sildeGroupWidth
:
0
,
//整个轮播的宽度
slideGroupleft
:
0
,
//整个轮播距离父亲盒子的距离(中间view区域)
imgViewerVisible
:
false
,
imgViewerVisible
:
false
,
relateRelics
:
[],
relateRelics
:
[],
curUnit
:
[],
curUnit
:
[],
contentWidth
:
0
,
imgsDom
:
null
,
moveLeft
:
true
,
moveRight
:
true
,
audioPlaying
:
true
,
};
};
},
},
mounted
()
{
computed
:
{
// this.creatQrCode();
...
mapGetters
([
"dicts"
]),
},
async
mounted
()
{
await
this
.
$store
.
dispatch
(
"dict/getDictList"
,
[
"display_type"
,
"display_character"
,
]);
this
.
loadDetail
();
this
.
loadDetail
();
this
.
$nextTick
(()
=>
{
this
.
loadContentWidth
();
});
},
},
methods
:
{
methods
:
{
async
loadDetail
()
{
async
loadDetail
()
{
...
@@ -113,8 +279,6 @@ export default {
...
@@ -113,8 +279,6 @@ export default {
let
res
=
await
getDisplayById
({
exhibitionId
});
let
res
=
await
getDisplayById
({
exhibitionId
});
if
(
res
.
code
==
0
)
{
if
(
res
.
code
==
0
)
{
this
.
displayDetail
=
res
.
data
;
this
.
displayDetail
=
res
.
data
;
// debugger
// 处理单元数据
if
(
if
(
this
.
displayDetail
.
exhibitionUnits
&&
this
.
displayDetail
.
exhibitionUnits
&&
this
.
displayDetail
.
exhibitionUnits
.
length
>
0
this
.
displayDetail
.
exhibitionUnits
.
length
>
0
...
@@ -122,7 +286,7 @@ export default {
...
@@ -122,7 +286,7 @@ export default {
this
.
curUnit
=
this
.
displayDetail
.
exhibitionUnits
[
0
];
this
.
curUnit
=
this
.
displayDetail
.
exhibitionUnits
[
0
];
}
}
processUnit
(
this
.
displayDetail
.
exhibitionUnits
);
processUnit
(
this
.
displayDetail
.
exhibitionUnits
);
// console.log(unit);
function
processUnit
(
list
)
{
function
processUnit
(
list
)
{
for
(
let
o
of
list
||
[])
{
for
(
let
o
of
list
||
[])
{
if
(
o
.
children
)
{
if
(
o
.
children
)
{
...
@@ -134,18 +298,131 @@ export default {
...
@@ -134,18 +298,131 @@ export default {
}
}
}
}
}
}
// 获取关联文物
// this.loadCrRecommend();
this
.
$nextTick
(()
=>
{
this
.
$nextTick
(()
=>
{
// this.$message.info("正在播放当前文物讲解音频,点击按钮可关闭");
this
.
loadWidth
();
// this.$refs.AudioPlayer.play();
this
.
$message
.
info
(
"正在播放当前文物讲解音频,点击按钮可关闭"
);
this
.
$refs
.
AudioPlayer
.
play
();
});
});
}
}
}
}
},
},
loadContentWidth
()
{
loadWidth
()
{
this
.
contentWidth
=
document
.
getElementById
(
"content"
).
clientWidth
+
"px"
;
let
slideImage
=
document
.
getElementsByClassName
(
"slide-item"
)[
0
];
this
.
slideImageWidth
=
slideImage
.
offsetWidth
;
this
.
sildeGroupWidth
=
this
.
slideImageWidth
*
this
.
displayDetail
.
imagesVo
.
length
;
this
.
slideGroupleft
=
-
3
*
this
.
slideImageWidth
;
},
handleImgsSlide
(
e
)
{
this
.
addImgsEventListener
(
e
);
this
.
throttle
(
this
.
pageUpOrDown
,
500
)(
e
);
},
addImgsEventListener
(
e
)
{
let
firefoxListenFun
=
function
(
e
)
{
var
obj
=
e
.
target
;
var
onmousewheel
;
while
(
obj
)
{
onmousewheel
=
obj
.
getAttribute
(
"onmousewheel"
)
||
obj
.
onmousewheel
;
if
(
onmousewheel
)
break
;
if
(
obj
.
tagName
==
"BODY"
)
break
;
obj
=
obj
.
parentNode
;
}
if
(
onmousewheel
)
{
if
(
e
.
preventDefault
)
e
.
preventDefault
();
//禁止页面滚动
if
(
typeof
obj
.
onmousewheel
!=
"function"
)
{
//将onmousewheel转换成function
eval
(
"window._tmpFun = function(event){"
+
onmousewheel
+
"}"
);
obj
.
onmousewheel
=
window
.
_tmpFun
;
window
.
_tmpFun
=
null
;
}
// 不直接执行是因为若onmousewheel(e)运行时间较长的话,会导致锁定滚动失效,使用setTimeout可避免
setTimeout
(
function
()
{
obj
.
onmousewheel
(
e
);
},
1
);
}
};
e
=
e
||
window
.
event
;
if
(
navigator
.
userAgent
.
toLowerCase
().
indexOf
(
"msie"
)
>=
0
)
{
// IE
e
.
returnValue
=
false
;
}
else
{
// Chrome
e
.
preventDefault
();
}
if
(
navigator
.
userAgent
.
toLowerCase
().
indexOf
(
"firefox"
)
>=
0
)
{
//firefox支持onmousewheel
addEventListener
(
"DOMMouseScroll"
,
firefoxListenFun
,
false
);
}
},
pageUpOrDown
(
e
)
{
let
detail
=
e
.
wheelDelta
||
e
.
detail
||
e
.
wheelDeltaY
;
let
direction
=
detail
>
0
?
"left"
:
"right"
;
if
(
direction
==
"left"
&&
this
.
moveLeft
)
{
this
.
slideGroupleft
+=
this
.
slideImageWidth
;
this
.
moveRight
=
true
;
}
if
(
direction
==
"right"
&&
this
.
moveRight
)
{
this
.
slideGroupleft
+=
this
.
slideImageWidth
*
-
1
;
this
.
moveLeft
=
true
;
}
if
(
this
.
slideGroupleft
==
0
)
{
this
.
moveLeft
=
false
;
this
.
moveRight
=
true
;
}
if
(
this
.
slideGroupleft
==
4
*
this
.
slideImageWidth
-
this
.
sildeGroupWidth
)
{
this
.
moveRight
=
false
;
this
.
moveLeft
=
true
;
}
},
//节流函数
throttle
(
fn
,
gapTime
)
{
let
_this
=
this
;
return
function
()
{
let
_nowTime
=
+
new
Date
();
if
(
_nowTime
-
_this
.
_lastTime
>
gapTime
||
!
_this
.
_lastTime
)
{
fn
(...
arguments
);
// 函数可以带参数
_this
.
_lastTime
=
_nowTime
;
}
};
},
// 关联文献的行样式调整
tableRowStyle
({
row
,
rowIndex
})
{
if
(
rowIndex
%
2
==
0
)
{
return
{
background
:
"#f9f9f9 !important"
,
};
}
else
{
return
{
background
:
"#fff !important"
,
};
}
},
// 预览关联文献
handleViewLt
(
item
)
{
previewFile
(
item
.
files
[
0
].
url
,
item
.
files
[
0
].
name
);
},
// 点击音频
handleClickAudio
()
{
this
.
audioPlaying
=
!
this
.
audioPlaying
;
if
(
this
.
audioPlaying
)
{
this
.
$refs
[
"AudioPlayer"
].
play
();
}
else
{
this
.
$refs
[
"AudioPlayer"
].
pause
();
}
},
},
},
},
};
};
...
@@ -193,19 +470,19 @@ export default {
...
@@ -193,19 +470,19 @@ export default {
.sliders
{
.sliders
{
height
:
434px
;
height
:
434px
;
margin
:
52px
0
84px
0
;
margin
:
52px
0
84px
0
;
// background-color: pink;
display
:
flex
;
display
:
flex
;
justify-content
:
center
;
justify-content
:
center
;
.center-box
{
width
:
1200px
;
height
:
100%
;
position
:
relative
;
position
:
relative
;
display
:
flex
;
.view-box
{
justify-content
:
center
;
position
:
relative
;
width
:
1200px
;
.slide-group
{
.slide-group
{
display
:
flex
;
display
:
flex
;
position
:
relativ
e
;
position
:
absolut
e
;
height
:
100%
;
height
:
100%
;
transition
:
all
0
.8s
cubic-bezier
(
0
.25
,
0
.1
,
0
.25
,
1
);
/**保证能够最开始刚好有四格卡在中间*/
// transform: translateX(-900px);
.slide-item
{
.slide-item
{
width
:
300px
;
width
:
300px
;
height
:
100%
;
height
:
100%
;
...
@@ -214,26 +491,34 @@ export default {
...
@@ -214,26 +491,34 @@ export default {
width
:
300px
;
width
:
300px
;
height
:
100%
;
height
:
100%
;
object-fit
:
cover
;
object-fit
:
cover
;
filter
:
grayscale
(
14
);
// filter: grayscale(14);
}
}
}
.modal
{
}
}
.modal-layer
{
position
:
absolute
;
display
:
flex
;
width
:
100%
;
width
:
100%
;
height
:
100%
;
height
:
100%
;
position
:
absolute
;
justify-content
:
center
;
left
:
0
;
.center-img
{
top
:
0
;
width
:
1200px
;
z-index
:
10
;
transform
:
translateY
(
-25px
);
background-color
:
rgba
(
#f8f8f8
,
0
.75
);
position
:
relative
;
filter
:drop-shadow
(
2px
4px
6px
#f8f8f8
)
;
img
{
transform
:
translateX
(
-10px
);
}
}
}
}
.left-layer
,
.right-layer
{
flex
:
1
;
height
:
100%
;
background-color
:
rgba
(
#f8f8f8
,
0
.8
);
}
}
}
}
.center-img
{
position
:
absolute
;
left
:
0
;
top
:
-25px
;
z-index
:
99
;
}
}
}
/**展览信息 */
/**展览信息 */
...
@@ -241,19 +526,175 @@ export default {
...
@@ -241,19 +526,175 @@ export default {
margin-bottom
:
96px
;
margin-bottom
:
96px
;
display
:
flex
;
display
:
flex
;
justify-content
:
center
;
justify-content
:
center
;
.wrapper
{
.wrapper
{
height
:
706px
;
background
:
url("@/assets/imgs/display/intro-bg.png")
;
background-image
:
url("@/assets/imgs/display/intro-bg.png")
;
background-repeat
:
no-repeat
;
background-size
:
100%
100%
;
padding
:
60px
;
position
:
relative
;
.title
{
font-size
:
62px
;
font-family
:
KaiTi
;
font-weight
:
400
;
color
:
#0f0f0f
;
margin-bottom
:
60px
;
}
.desc-and-tools
{
display
:
flex
;
justify-content
:
space-between
;
.desc
{
display
:
flex
;
.item
{
display
:
flex
;
.label
,
.value
{
font-size
:
18px
;
font-weight
:
300
;
color
:
#0f0f0f
;
line-height
:
36px
;
}
}
}
}
}
}
.divider
{
width
:
100%
;
height
:
2px
;
border
:
1px
dashed
#b1b0af
;
margin
:
60px
0
;
}
.intro-and-video
{
.intro-container
{
.intro-title
{
font-size
:
40px
;
font-family
:
KaiTi
;
font-weight
:
400
;
color
:
#0f0f0f
;
margin-bottom
:
43px
;
position
:
relative
;
&
:
:
after
{
content
:
""
;
display
:
inline-block
;
width
:
60px
;
height
:
2px
;
background-color
:
#caad91
;
position
:
absolute
;
left
:
0
;
bottom
:
-12px
;
}
}
.intro-content
{
font-size
:
16px
;
font-family
:
Microsoft
YaHei
;
font-weight
:
400
;
color
:
#444444
;
text-indent
:
32px
;
line-height
:
28px
;
}
}
.videos
{
position
:
relative
;
::v-deep
{
.el-carousel
{
height
:
100%
;
width
:
100%
;
.el-carousel__container
{
height
:
100%
;
display
:
flex
;
justify-content
:
center
;
}
.el-carousel__item
{
width
:
100%
;
transform
:
translateX
(
0
)
!
important
;
}
}
}
}
}
.audio
{
position
:
absolute
;
right
:
-100px
;
top
:
34px
;
cursor
:
pointer
;
animation
:
audioRotate
8s
linear
infinite
;
transform-origin
:
center
center
;
border
:
1px
solid
#892325
;
border-radius
:
50%
;
// padding: 10px;
width
:
90px
;
height
:
90px
;
display
:
flex
;
justify-content
:
center
;
align-items
:
center
;
}
}
}
@keyframes
audioRotate
{
0
%
{
transform
:
rotateZ
(
0deg
);
}
100
%
{
transform
:
rotateZ
(
360deg
);
}
}
@-webkit-keyframes
audioRotate
{
0
%
{
transform
:
rotateZ
(
0deg
);
}
100
%
{
transform
:
rotateZ
(
360deg
);
}
}
.animation-play-paused
{
animation-play-state
:
paused
;
-webkit-animation-play-state
:
paused
;
/* Safari 和 Chrome */
}
/**展览单元 */
/**展览单元 */
.units
{
.units
{
// background-color: blue;
margin-bottom
:
100px
;
margin-bottom
:
100px
;
display
:
flex
;
display
:
flex
;
flex-direction
:
column
;
align-items
:
center
;
.units-content
{
ul
{
li
{
margin-bottom
:
20px
;
.unit-title
{
font-size
:
36px
;
font-family
:
KaiTi
;
font-weight
:
400
;
color
:
#4e392c
;
line-height
:
83px
;
display
:
flex
;
justify-content
:
center
;
justify-content
:
center
;
}
}
.unit-intro
{
font-size
:
16px
;
font-family
:
Microsoft
YaHei
;
font-weight
:
400
;
color
:
#444444
;
text-indent
:
36px
;
margin-bottom
:
10px
;
}
.unit-imgs
{
width
:
100%
;
.img-item
{
width
:
100%
;
img
{
width
:
100%
;
}
}
}
}
}
}
}
/**关联文献 */
/**关联文献 */
.lts
{
.lts
{
// background-color: aquamarine;
// background-color: aquamarine;
...
@@ -261,8 +702,8 @@ export default {
...
@@ -261,8 +702,8 @@ export default {
flex-direction
:
column
;
flex-direction
:
column
;
align-items
:
center
;
align-items
:
center
;
.lts-content
{
.lts-content
{
//
display: flex;
display
:
flex
;
//
justify-content: center;
justify-content
:
center
;
width
:
100%
;
width
:
100%
;
height
:
569px
;
height
:
569px
;
background-image
:
url("@/assets/imgs/display/lts-bg.png")
;
background-image
:
url("@/assets/imgs/display/lts-bg.png")
;
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论