index.tsx 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. import { defineComponent, toRefs, reactive, onMounted, ref } from 'vue'
  2. import classes from './index.module.less'
  3. import { Swiper, SwiperSlide } from 'swiper/vue'
  4. import { Navigation, Pagination, Scrollbar, A11y } from 'swiper'
  5. import request from '@/helpers/request'
  6. import bannerArray from './images/bannerArray.png'
  7. export default defineComponent({
  8. name: 'banner',
  9. props: {
  10. title: {
  11. type: String,
  12. default: ''
  13. }
  14. },
  15. components: {
  16. Swiper,
  17. SwiperSlide
  18. },
  19. setup(props, conent) {
  20. const state = reactive({
  21. title: props.title,
  22. modules: [Navigation, Pagination, Scrollbar, A11y],
  23. bannerList:[]
  24. })
  25. const onSwiper = swiper => {
  26. // console.log(swiper)
  27. }
  28. const onSlideChange = () => {
  29. console.log('slide change')
  30. }
  31. const getBannerList = async () => {
  32. try {
  33. const res = await request.get('/api-website/open/banner/list', {
  34. data: {
  35. }
  36. })
  37. state.bannerList = res.data
  38. } catch (e) {
  39. console.log(e)
  40. }
  41. }
  42. const gotoBannerInfo = (item:any)=>{
  43. window.open(item.linkUrl)
  44. }
  45. onMounted(()=>{
  46. getBannerList()
  47. })
  48. return () => (
  49. <>
  50. <swiper
  51. modules={state.modules}
  52. class={[classes.mySwiper,'mySwiper']}
  53. slides-per-view={1}
  54. space-between={50}
  55. pagination={{ clickable: true }}
  56. navigation={{
  57. nextEl: '.myprev',
  58. prevEl: '.mynext'
  59. }}
  60. loop={true}
  61. onSwiper={onSwiper}
  62. onSlideChange={onSlideChange}
  63. >
  64. {
  65. state.bannerList.map((item:any)=>{
  66. return < ><swiper-slide><img src={item.coverImage} alt="" onClick={()=>{gotoBannerInfo(item)}} /></swiper-slide></>
  67. })
  68. }
  69. <div class="myprev"><img src={bannerArray} alt="" /></div>
  70. <div class="mynext"><img src={bannerArray} alt="" /></div>
  71. </swiper>
  72. </>
  73. )
  74. }
  75. })