轮播图

master
fanluyan 2 years ago
parent 12270b6a7c
commit 3c5ffe8de0

11961
package-lock.json generated

File diff suppressed because it is too large Load Diff

@ -33,7 +33,8 @@
"less": "^4.1.3",
"less-loader": "^11.1.0",
"style-resources-loader": "^1.5.0",
"vue-awesome-swiper": "^3.1.3",
"swiper": "^5.3.6",
"vue-awesome-swiper": "^4.1.0",
"vue-cli-plugin-style-resources-loader": "^0.1.5",
"vue-template-compiler": "^2.6.14"
},

@ -13,11 +13,11 @@ Vue.use(ElementUI, {
import * as echarts from "echarts";
Vue.prototype.$echarts = echarts;
// 引入 vue-awesome-swiper
import VueAwesomeSwiper from "vue-awesome-swiper";
//引入 vue-awesome-swiper 样式
import "swiper/dist/css/swiper.css";
Vue.use(VueAwesomeSwiper /* { 全局组件的默认选项 } */);
// // 引入 vue-awesome-swiper
// import VueAwesomeSwiper from "vue-awesome-swiper";
// //引入 vue-awesome-swiper 样式
// import "swiper/dist/css/swiper.css";
// Vue.use(VueAwesomeSwiper /* { 全局组件的默认选项 } */);
import "./assets/css/reset.css"; //默认样式
import "./assets/css/theme.less"; //修改主题颜色
@ -50,7 +50,7 @@ new Vue({
//使用钩子函数对路由进行权限跳转
router.beforeEach((to, from, next) => {
document.title = `${to.meta.title} | 可视化智能管控系统`;
document.title = `${to.meta.title} | 视频监控可视化平台`;
const role = localStorage.getItem("username");
const token = localStorage.getItem("token");
if (!role && to.path !== "/login") {

@ -55,36 +55,25 @@
</template>
<script>
import { Swiper, SwiperSlide } from "vue-awesome-swiper";
import "swiper/css/swiper.css";
export default {
components: {
Swiper,
SwiperSlide,
},
props: {
terminalPhoto: {
type: Array,
default: () => [],
},
},
mounted() {
// swiper
this.$nextTick(() => {
const swiperTop = this.$refs.swiperTop.swiper;
const swiperThumbs = this.$refs.swiperThumbs.swiper;
swiperTop.controller.control = swiperThumbs;
swiperThumbs.controller.control = swiperTop;
});
},
data() {
return {
swiperOptionTop: {
//zoom: true,//
loop: true,
loopedSlides: 5, // looped slides should be the same
//spaceBetween: 10,
observer: true, //swiperswiper
observeParents: true, //swiperswiper
// autoplay: {
// //
// delay: 2000,
// disableOnInteraction: false,
// },
spaceBetween: 10,
navigation: {
nextEl: ".swiper-button-next",
prevEl: ".swiper-button-prev",
@ -96,15 +85,19 @@ export default {
spaceBetween: 10,
centeredSlides: true,
slidesPerView: "auto",
// touchRatio: 0.2,
touchRatio: 0.2,
slideToClickedSlide: true,
navigation: {
nextEl: ".swiper-button-next",
prevEl: ".swiper-button-prev",
},
},
};
},
mounted() {
this.$nextTick(() => {
const swiperTop = this.$refs.swiperTop.$swiper;
const swiperThumbs = this.$refs.swiperThumbs.$swiper;
swiperTop.controller.control = swiperThumbs;
swiperThumbs.controller.control = swiperTop;
});
},
methods: {},
};
@ -186,19 +179,11 @@ export default {
text-align: center;
line-height: 60px;
}
.swiper-button-next.swiper-button-white,
.swiper-container-rtl .swiper-button-prev.swiper-button-white,
.swiper-button-prev.swiper-button-white,
.swiper-container-rtl .swiper-button-next.swiper-button-white {
background-size: 45% 45%;
}
.gallery-thumbs {
.swiper-button-next.swiper-button-white,
.swiper-container-rtl .swiper-button-prev.swiper-button-white,
.swiper-button-prev.swiper-button-white,
.swiper-container-rtl .swiper-button-next.swiper-button-white {
top: 60%;
}
.swiper-button-next:after,
.swiper-container-rtl .swiper-button-prev:after,
.swiper-button-prev:after,
.swiper-container-rtl .swiper-button-next:after {
transform: scale(0.5);
}
}
</style>

@ -1,14 +1,22 @@
<template>
<!-- banner区域 -->
<div class="banner">
<div class="wrapper">
<div class="swiper-box" style="height: 500px" v-if="childDataList.length">
<!-- swiper1 -->
<swiper :options="swiperOptionTop" class="gallery-top" ref="swiperTop">
<swiper-slide class="" v-for="item in childDataList" :key="item.id">
<img :src="item.path" alt="" style="width: 100%" />
</swiper-slide>
<div class="thumb-example2">
<swiper
class="swiper gallery-top"
:options="swiperOptionTop"
ref="swiperTop"
>
<swiper-slide
:class="`slide-${index + 1}`"
v-for="(item, index) in terminalPhoto"
:key="item.id"
v-bind:style="{
'background-image': 'url(' + item.path + ')',
}"
></swiper-slide>
<!-- <swiper-slide class="slide-2"></swiper-slide>
<swiper-slide class="slide-3"></swiper-slide>
<swiper-slide class="slide-4"></swiper-slide>
<swiper-slide class="slide-5"></swiper-slide> -->
<div
class="swiper-button-next swiper-button-white"
slot="button-next"
@ -20,20 +28,33 @@
</swiper>
<!-- swiper2 Thumbs -->
<swiper
class="swiper gallery-thumbs"
:options="swiperOptionThumbs"
class="gallery-thumbs"
ref="swiperThumbs"
>
<swiper-slide class="" v-for="item in childDataList" :key="item.id">
<img :src="item.path" alt="" style="height: 100%; width: 100%" />
</swiper-slide>
<swiper-slide
:class="`slide-${index + 1}`"
v-for="(item, index) in terminalPhoto"
:key="item.id"
v-bind:style="{
'background-image': 'url(' + item.path + ')',
}"
></swiper-slide>
</swiper>
</div>
</div>
</div>
</template>
<script>
import { Swiper, SwiperSlide } from "vue-awesome-swiper";
import "swiper/css/swiper.css";
export default {
name: "swiper-example-thumbs-gallery",
title: "Thumbs gallery with Two-way control",
components: {
Swiper,
SwiperSlide,
},
props: {
terminalPhoto: {
type: Array,
@ -42,15 +63,10 @@ export default {
},
data() {
return {
childDataList: [],
swiperOptionTop: {
loop: true,
loopedSlides: 5, // looped slides should be the same
spaceBetween: 10,
observer: true, //swiperswiper
observeParents: true, //swiperswiper
navigation: {
nextEl: ".swiper-button-next",
prevEl: ".swiper-button-prev",
@ -64,71 +80,47 @@ export default {
slidesPerView: "auto",
touchRatio: 0.2,
slideToClickedSlide: true,
navigation: {
nextEl: ".swiper-button-next",
prevEl: ".swiper-button-prev",
},
},
};
},
watch: {
terminalPhoto: {
handler(val) {
console.log("dataObj deep change", val);
this.childDataList = val;
console.log(this.childDataList);
},
deep: true, //
immediate: true, //
},
},
methods: {},
mounted() {
this.$nextTick(() => {
const swiperTop = this.$refs.swiperTop.swiper;
const swiperThumbs = this.$refs.swiperThumbs.swiper;
const swiperTop = this.$refs.swiperTop.$swiper;
const swiperThumbs = this.$refs.swiperThumbs.$swiper;
swiperTop.controller.control = swiperThumbs;
swiperThumbs.controller.control = swiperTop;
});
},
};
</script>
<style lang="less" scoped>
.banner {
.wrapper {
width: 100%;
//margin: 300px auto;
.thumb-example2 {
height: 480px;
background-color: #000;
.swiper {
.swiper-slide {
background-size: cover;
background-position: center;
}
}
.swiper-container {
background-color: #fff;
}
swiper-slide {
img {
&.gallery-top {
height: 80%;
width: 100%;
height: 100%;
}
}
.swiper-slide {
background-size: cover;
background-position: center;
}
.gallery-top {
height: 80% !important;
width: 100%;
}
.gallery-thumbs {
height: 20% !important;
&.gallery-thumbs {
height: 20%;
box-sizing: border-box;
padding: 10px 0;
}
.gallery-thumbs .swiper-slide {
}
&.gallery-thumbs .swiper-slide {
width: 25%;
height: 100%;
opacity: 0.4;
}
.gallery-thumbs .swiper-slide-active {
}
&.gallery-thumbs .swiper-slide-active {
opacity: 1;
}
}
}
</style>

@ -32,7 +32,10 @@
<!-- 带参数的中心内容右侧参数区 -->
<div class="picSetBox">
<div class="swiperBox">
<carouselChart :terminalPhoto="terminalPhoto"></carouselChart>
<carouselChart
:terminalPhoto="terminalPhoto"
v-if="terminalPhoto"
></carouselChart>
</div>
<div class="parameterArea">
<div class="paramsDate">
@ -122,6 +125,28 @@ export default {
this.getLineTreeList();
this.getDateTime();
console.log(this.dateValue);
getTerminalPhotoListJoggle({
channelid: 1,
time: 1681833600000,
terminalid: 5,
})
.then((res) => {
console.log(res);
if (res.data.list.length == 0) {
this.terminalPhoto = [
{
path: this.nopicPath,
},
];
//alert("");
} else {
this.terminalPhoto = res.data.list;
}
console.log(this.terminalPhoto);
})
.catch((err) => {
console.log(err); //
});
},
methods: {
//

Loading…
Cancel
Save