index.tsx 1.7 KB

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