read.vue 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. <script lang="ts">
  2. import { ref, reactive, defineComponent } from 'vue'
  3. import { useStore } from 'vuex'
  4. import { useRoute } from "vue-router"
  5. import banner from '@/components/layout/banner.vue'
  6. import recomMendation from '@/components/layout/recomMendation.vue'
  7. export default defineComponent({
  8. setup(){
  9. const store = useStore()
  10. const route = useRoute()
  11. const recomMendationList:any = ref(recomMendationFilter(store.state.recomMendation)) //推荐内容
  12. const pageStatus = ref(false)
  13. store.state.footerStatus = false
  14. //推荐内容过滤
  15. function recomMendationFilter(data:any){
  16. let array = []
  17. for(let i =0;i<data.length;i++){
  18. if(data[i].id != route.query?.id){
  19. array.push(data[i])
  20. }
  21. }
  22. return array
  23. }
  24. store.state.pageContent = []
  25. store.state.footerStatus = false
  26. pageStatus.value = true
  27. return { store, recomMendationList, pageStatus }
  28. },
  29. components:{
  30. banner,
  31. recomMendation
  32. },
  33. asyncData({ store, route } :any){
  34. //获取菜单列表
  35. let params:any = reactive({}) //路由参数
  36. if(route.value.query?.categoryid){
  37. params = route.value
  38. }else{
  39. params = store.state.route
  40. }
  41. return store.dispatch('getMenuList',params).then(()=>{
  42. const data = reactive(store.state.menuList)
  43. let str = ref("")
  44. let sub = ref()
  45. let paramsData = reactive({})
  46. if(params.path.indexOf("_")>-1){
  47. str.value = params.path.split("_")[0]
  48. }
  49. for(let i=0;i<data.length;i++){
  50. if(params.path == data[i].path || str.value == data[i].path){
  51. if(params.query?.categoryid && !data[i].sname){
  52. sub.value = i
  53. }
  54. }
  55. }
  56. setTimeout(()=>{
  57. params.query = route.value.query
  58. if(params.query?.categoryid && !params.query.dup){
  59. paramsData = {
  60. params:{
  61. categoryid: params.query.categoryid,
  62. pageNum:1,
  63. pageSize:1,
  64. order:"sortindex",
  65. articleid: params.query.id,
  66. id: params.query.id,
  67. details:true
  68. },
  69. index:params.path,
  70. sub:sub.value
  71. }
  72. return store.dispatch('getPageData',paramsData)
  73. }
  74. },1)
  75. })
  76. }
  77. })
  78. </script>
  79. <template>
  80. <div class="pageContain">
  81. <section class="common-bradcrumb-section" >
  82. <banner />
  83. </section>
  84. <section class="product-content-section pt-60" v-if="pageStatus">
  85. <div class="container" v-if="store.state.pageContent.length>0">
  86. <div class="row">
  87. <div class="col-lg-12 col-md-12 content">
  88. <div class="read_content mb-60">
  89. <div class="section-title text-center both-border mb-60 d-flex justify-content-between">
  90. <span class="title-tag2 text-left" >{{store.state.pageContent[0].title}}</span>
  91. <a href="javascript:history.back(-1)"><img src="@/assets/img/product/close.png" alt=""></a>
  92. </div>
  93. <div class="row">
  94. <div class=" col-lg-12 col-md-12 " >
  95. <div v-html="store.state.pageContent[0].content" class="text-left"></div>
  96. </div>
  97. </div>
  98. </div>
  99. <recomMendation :data="recomMendationList" v-if="recomMendationList.length>0" />
  100. </div>
  101. </div>
  102. </div>
  103. </section>
  104. </div>
  105. </template>
  106. <style>
  107. .text-left>p{
  108. text-indent: 2em !important;
  109. }
  110. .text-left>p>span{
  111. display: block;
  112. }
  113. </style>