read.vue 3.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. <script setup lang="ts">
  2. import { ref, watch } 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. const store = useStore()
  8. const route = useRoute()
  9. const recomMendationList:any = ref([]) //推荐内容
  10. //推荐内容过滤
  11. function recomMendationFilter(data:any){
  12. let array = []
  13. for(let i =0;i<data.length;i++){
  14. if(data[i].id != route.query?.id){
  15. array.push(data[i])
  16. }
  17. }
  18. return array
  19. }
  20. //页面内容初始化
  21. function init(){
  22. const data = ref(store.state.menuList)
  23. let str =ref("")
  24. let sub = ref()
  25. const paramsData = ref({})
  26. if(route.path.indexOf("_")){
  27. str.value = route.path.split("_")[0]
  28. }
  29. for(let i=0;i<data.value.length;i++){
  30. if( route.path == data.value[i].path || str.value == data.value[i].path){
  31. if(route.query?.categoryid && !data.value[i].sname){
  32. sub.value = i
  33. console.log(1111,sub.value)
  34. }
  35. }
  36. }
  37. if(route.query?.categoryid && !route.query.dup){
  38. paramsData.value = {
  39. params:{
  40. categoryid: route.query?.categoryid,
  41. pageNum:1,
  42. pageSize:1,
  43. order:"sortindex",
  44. articleid: route.query?.id,
  45. id: route.query?.id,
  46. details:true
  47. },
  48. index:route.path,
  49. sub:sub.value
  50. }
  51. }
  52. store.dispatch('getPageData',paramsData.value)
  53. }
  54. watch(() => store.state.menuList || route.path,
  55. () => {
  56. init()
  57. }
  58. )
  59. watch(
  60. () => store.state.recomMendation,
  61. () => {
  62. recomMendationList.value = recomMendationFilter(store.state.recomMendation)
  63. },
  64. { deep:true }
  65. );
  66. </script>
  67. <template>
  68. <div class="pageContain">
  69. <section class="common-bradcrumb-section" >
  70. <banner />
  71. </section>
  72. <section class="product-content-section pt-60">
  73. <div class="container" v-if="store.state.pageContent.length>0">
  74. <div class="row">
  75. <div class="col-lg-12 col-md-12 content">
  76. <div class="read_content mb-60">
  77. <div class="section-title text-left both-border mb-60 d-flex justify-content-between">
  78. <span class="title-tag2" >{{store.state.pageContent[0].title}}</span>
  79. <a href="javascript:history.back(-1)"><img src="@/assets/img/product/close.png" alt=""></a>
  80. </div>
  81. <div class="row">
  82. <div class="col-lg-5 col-md-6 ">
  83. <img :src="store.state.pageContent[0].image" alt="" style="width:90%">
  84. </div>
  85. <div class=" col-lg-7 col-md-6 " >
  86. <div v-html="store.state.pageContent[0].content"></div>
  87. </div>
  88. </div>
  89. </div>
  90. <recomMendation :data="recomMendationList" v-if="recomMendationList.length>0"/>
  91. </div>
  92. </div>
  93. </div>
  94. </section>
  95. </div>
  96. </template>