123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- import { defineComponent, toRefs, reactive, onMounted, ref } from 'vue'
- import classes from './index.module.less'
- import { Swiper, SwiperSlide } from 'swiper/vue'
- import { Navigation, Pagination, Scrollbar, A11y, Autoplay } from 'swiper'
- import request from '@/helpers/request'
- import bannerArrow from './images/bannerArrow.png'
- import bannerArrowAcitive from './images/bannerArrowAcitive.png'
- import { useRouter } from 'vue-router'
- export default defineComponent({
- name: 'banner',
- props: {
- title: {
- type: String,
- default: ''
- }
- },
- components: {
- Swiper,
- SwiperSlide
- },
- setup(props, conent) {
- const state = reactive({
- title: props.title,
- modules: [Navigation, Pagination, Scrollbar, Autoplay,A11y ],
- bannerList: [],
- leftHover: false,
- rightHover: false
- })
- const router = useRouter()
- const onSwiper = swiper => {
- // console.log(swiper)
- }
- const onSlideChange = () => {
- // console.log('slide change')
- }
- const getBannerList = async () => {
- try {
- const res = await request.get('/api-website/open/banner/list', {
- data: {}
- })
- state.bannerList = res.data
- } catch (e) {
- console.log(e)
- }
- }
- const gotoBannerInfo = (item: any) => {
- if (item.linkUrl.indexOf('http') != -1) {
- window.open(item.linkUrl)
- } else {
- router.push({ path: item.linkUrl })
- }
- }
- onMounted(() => {
- getBannerList()
- })
- return () => (
- <>
- <div class="bannerSwiper">
- <swiper
- modules={state.modules}
- class={[classes.mySwiper, 'mySwiper']}
- slides-per-view={1}
- space-between={0}
- pagination={{ clickable: true }}
- autoplay={{
- delay: 3000,
- disableOnInteraction: false,
- loop: true,
- pauseOnMouseEnter: true,
- reverseDirection: true
- }}
- navigation={{
- nextEl: '.myprev',
- prevEl: '.mynext'
- }}
- loop={true}
- onSwiper={onSwiper}
- onSlideChange={onSlideChange}
- >
- {state.bannerList.map((item: any) => {
- return (
- <>
- <swiper-slide>
- <img
- src={item.coverImage}
- alt=""
- class={classes.bannerImg}
- onClick={() => {
- gotoBannerInfo(item)
- }}
- />
- </swiper-slide>
- </>
- )
- })}
- <div
- class="myprev"
- onMouseover={() => {
- state.leftHover = true
- }}
- onMouseout={() => {
- state.leftHover = false
- }}
- >
- <img
- src={state.leftHover ? bannerArrowAcitive : bannerArrow}
- alt=""
- />
- </div>
- <div
- class="mynext"
- onMouseover={() => {
- state.rightHover = true
- }}
- onMouseout={() => {
- state.rightHover = false
- }}
- >
- <img
- src={state.rightHover ? bannerArrowAcitive : bannerArrow}
- alt=""
- />
- </div>
- </swiper>
- </div>
- </>
- )
- }
- })
|