Bladeren bron

新增轮播图链接

master
libx 1 jaar geleden
bovenliggende
commit
7f84eb19d3
7 gewijzigde bestanden met toevoegingen van 183 en 24 verwijderingen
  1. +8
    -0
      src/api/index.js
  2. +9
    -11
      src/components/layout/ComponentBanner.vue
  3. +10
    -9
      src/router/index.js
  4. +1
    -0
      src/store/getters.js
  5. +20
    -3
      src/store/modules/app.js
  6. +1
    -1
      src/views/Home/ComponentCustom.vue
  7. +134
    -0
      src/views/PublicDetail/index.vue

+ 8
- 0
src/api/index.js Bestand weergeven

@@ -9,6 +9,14 @@ export function getBanners(params) {
}) })
} }


/* 获取对应轮播详情 */
export function getBannerDetail(id) {
return request({
url: `/cniyv/cniyvbanner/info/${id}`,
method: 'get'
})
}

/* 获取首页推荐产品类别及对应产品 */ /* 获取首页推荐产品类别及对应产品 */
export function getHomeCniyvTypes(params) { export function getHomeCniyvTypes(params) {
return request({ return request({


+ 9
- 11
src/components/layout/ComponentBanner.vue Bestand weergeven

@@ -3,15 +3,15 @@
<!-- Indicators --> <!-- Indicators -->
<ol class="carousel-indicators"> <ol class="carousel-indicators">
<li data-target="#carousel-example-generic" v-for="(item, index) in bannerList" :data-slide-to="index" :class="index==0 ? 'active' : ''"></li> <li data-target="#carousel-example-generic" v-for="(item, index) in bannerList" :data-slide-to="index" :class="index==0 ? 'active' : ''"></li>
<!-- <li data-target="#carousel-example-generic" data-slide-to="1"></li>
<li data-target="#carousel-example-generic" data-slide-to="2"></li>
<li data-target="#carousel-example-generic" data-slide-to="3"></li> -->
</ol> </ol>


<!-- Wrapper for slides --> <!-- Wrapper for slides -->
<div class="carousel-inner" role="listbox"> <div class="carousel-inner" role="listbox">
<div class="item" v-for="(item, index) in bannerList" :key="item.ptsid" :class="index==0 ? 'active' : ''"> <div class="item" v-for="(item, index) in bannerList" :key="item.ptsid" :class="index==0 ? 'active' : ''">
<img :src="item.pic" alt="">
<router-link :to="formatUrl(item)" :target="item.lurl ? '_blank' : ''" v-if="item.url || item.lurl">
<img :src="item.pic" :alt="item.title">
</router-link>
<img :src="item.pic" :alt="item.title" v-else>
<div class="carousel-caption"> <div class="carousel-caption">
</div> </div>
</div> </div>
@@ -61,13 +61,11 @@ export default {
methods: { methods: {
...mapActions({ ...mapActions({
getBanners: 'app/getBannerList' getBanners: 'app/getBannerList'
})
// initSwiper() {
// this.swiper = new Swiper('.swiper-container', {
// autoplay: true,
// loop: true
// })
// }
}),

formatUrl(el) {
return el.lurl ? el.lurl : el.url ? `${el.url}/${el.ptsid}` : ''
}
} }
} }
</script> </script>


+ 10
- 9
src/router/index.js Bestand weergeven

@@ -100,14 +100,7 @@ const routes = [
}, },
] ]
}, },
{
path: '/detail',
name: '',
meta: {

},
component: PublicDetail
}
// { // {
// path: '/join', // path: '/join',
// meta: { // meta: {
@@ -115,8 +108,16 @@ const routes = [
// }, // },
// component: Join, // component: Join,
// }, // },
{
path: '/detail/:id',
name: '',
meta: {
isPublicDetail: true
},
component: PublicDetail
}
] ]
}
},
] ]


const router = new VueRouter({ const router = new VueRouter({


+ 1
- 0
src/store/getters.js Bestand weergeven

@@ -1,6 +1,7 @@
const getters = { const getters = {
navActive: state => state.app.navActive, navActive: state => state.app.navActive,
bannerList: state => state.app.banners, bannerList: state => state.app.banners,
bannerDetail: state => state.app.bannerDetail,
homeTypeList: state => state.cniyv.homeTypeList, homeTypeList: state => state.cniyv.homeTypeList,
cniyvTypeList: state => state.cniyv.typeList, cniyvTypeList: state => state.cniyv.typeList,
cniyvList: state => state.cniyv.cniyvList, cniyvList: state => state.cniyv.cniyvList,


+ 20
- 3
src/store/modules/app.js Bestand weergeven

@@ -1,9 +1,10 @@
import { getBanners } from "@/api"
import { getBanners, getBannerDetail } from "@/api"


const state = { const state = {
navActive: '/', navActive: '/',
breadList: [], breadList: [],
banners: []
banners: [],
bannerDetail: ''
} }


const mutations = { const mutations = {
@@ -18,6 +19,10 @@ const mutations = {
SET_BANNERS: (state, payload) => { SET_BANNERS: (state, payload) => {
state.banners = payload state.banners = payload
}, },

SET_BANNER_DETAIL: (state, payload) => {
state.bannerDetail = payload
},
} }


const actions = { const actions = {
@@ -38,7 +43,19 @@ const actions = {
reject(err) reject(err)
}) })
}) })
}
},

getBannerMsg({ commit }, id) {
return new Promise((resolve, reject) => {
getBannerDetail(id).then(res => {
res.data.imgs = res.data.imgs ? res.data.imgs.split(',') : []
commit('SET_BANNER_DETAIL', res.data)
resolve()
}).catch(err => {
reject(err)
})
})
},
} }


export default { export default {


+ 1
- 1
src/views/Home/ComponentCustom.vue Bestand weergeven

@@ -64,7 +64,7 @@
<div class="row"> <div class="row">
<div class="col-md-6 aboutwh"> <div class="col-md-6 aboutwh">
<h3>天云文化</h3> <h3>天云文化</h3>
<a href="" class="btn-block" style="margin-bottom:10px;">
<a class="btn-block" style="margin-bottom:10px;">
<img src="@/assets/images/top2.png" alt="" /> <img src="@/assets/images/top2.png" alt="" />
</a> </a>
<!-- <p class="tips-p">北斗巡天,云福中华</p> --> <!-- <p class="tips-p">北斗巡天,云福中华</p> -->


+ 134
- 0
src/views/PublicDetail/index.vue Bestand weergeven

@@ -0,0 +1,134 @@
<template>
<!-- <div class="products-yemian">
<div class="container">
<div class="row">
<div class="col-md-12">
<div class="bread-container">
<b>您当前的位置:</b>
<el-breadcrumb separator-class="el-icon-arrow-right">
<el-breadcrumb-item v-for="item in breadList" :key="item.path">
<router-link :to="item.path" :data-title="item.meta.title">{{
item.meta.title }}</router-link>
</el-breadcrumb-item>
<el-breadcrumb-item v-if="newsTitle && !$route.meta.isDetail">
<span class="nav-title">{{ newsTitle }}</span>
</el-breadcrumb-item>
</el-breadcrumb>
</div>
<div class="row" style="margin-top: 10px;">
<div class="col-md-12 col-sm-9 content">
<div class="content-news" v-html="toHtml(bannerDetail.content)"></div>
<div class="content-news" v-html="toHtml(bannerDetail.content1)"></div>
<div class="content-news" v-html="toHtml(bannerDetail.content2)"></div>
<div class="content-news" v-html="toHtml(bannerDetail.content3)"></div>
</div>
</div>
</div>
</div>
</div>
</div> -->
<div class="row" style="margin-top: 10px;">
<div class="col-md-24 content">
<div class="content-news" v-html="toHtml(bannerDetail.content)"></div>
<div class="content-news" v-html="toHtml(bannerDetail.content1)"></div>
<div class="content-news" v-html="toHtml(bannerDetail.content2)"></div>
<div class="content-news" v-html="toHtml(bannerDetail.content3)"></div>
</div>
</div>
</template>

<script>
import { mapGetters, mapActions } from 'vuex'

export default {
data() {
return {
bannerId: '',
// newsTitle: ''
}
},
created() {
this.bannerId = this.$route.params.id
this.getBannerMsg(this.$route.params.id)
},
computed: {
...mapGetters([
'bannerDetail',
]),
// breadList() {
// const matche = this.$route.matched
// matche[0].path = '/'
// const length = matche.length
// if (length > 1) {
// matche[length - 1].path = ''
// matche[length - 1].meta.title = this.bannerDetail.title
// }
// return matche
// }
},
methods: {
...mapActions({
getBannerMsg: 'app/getBannerMsg'
}),

toHtml(content) {
if (!content) return ''
return content.replace(/&lt;/g, "<")
.replace(/&gt;/g, ">")
.replace(/&amp;/g, "&")
.replace(/&quot;/g, '"')
.replace(/&apos;/g, "'");
}
}
}
</script>

<style scoped>
.content {
padding: 0;
}
.news-title {
font-size: 3.2rem;
text-align: center;
margin-bottom: 20px;
}

.news-time {
text-align: center;
margin-bottom: 10px;
}

/* .bread-container {
display: flex;
align-items: center;
line-height: 32px;
border-bottom: 1px solid #dadada;
}

.bread-container .nav-title {
font-weight: 600;
color: #3884c0;
}

.bread-container .nav-title:hover {
color: #333;
}

.el-breadcrumb__item {
display: flex;
}

.el-breadcrumb__item:last-child a {
font-weight: 600;
color: #3884c0;
}

a {
outline: none;
} */

/* .content-news p img {
width: auto;
height: auto;
} */
</style>

Laden…
Annuleren
Opslaan