read.vue 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  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 = reactive(recomMendationFilter(store.state.recomMendation)) //推荐内容
  12. //推荐内容过滤
  13. function recomMendationFilter(data:any){
  14. let array = []
  15. for(let i =0;i<data.length;i++){
  16. if(data[i].id != route.query?.id){
  17. array.push(data[i])
  18. }
  19. }
  20. return array
  21. }
  22. return { store, recomMendationList }
  23. },
  24. components:{
  25. banner,
  26. recomMendation
  27. },
  28. asyncData({ store,route }:any){
  29. //获取菜单列表
  30. let params:any = reactive({}) //路由参数
  31. if(route.value.query?.id){
  32. params = route.value
  33. }else{
  34. params = store.state.route
  35. }
  36. //获取菜单列表
  37. return store.dispatch('getMenuList',params).then(()=>{
  38. const data = reactive(store.state.menuList)
  39. let str = ref("")
  40. let sub = ref()
  41. let paramsData = reactive({})
  42. if(params.path.indexOf("_")){
  43. str.value = params.path.split("_")[0]
  44. }
  45. for(let i=0;i<data.length;i++){
  46. if(params.path == data[i].path || str.value == data[i].path){
  47. if(params.query?.categoryid && !data[i].sname){
  48. sub.value = i
  49. if(params.query?.id && !params.query.dup){
  50. paramsData = {
  51. params:{
  52. categoryid: params.query?.categoryid,
  53. pageNum:1,
  54. pageSize:1,
  55. order:"sortindex",
  56. articleid: params.query?.id,
  57. id: params.query?.id,
  58. details:true
  59. },
  60. index:params.path,
  61. sub:sub.value
  62. }
  63. return store.dispatch('getPageData',paramsData)
  64. }
  65. }
  66. }
  67. }
  68. })
  69. }
  70. })
  71. </script>
  72. <template>
  73. <div class="pageContain">
  74. <section class="common-bradcrumb-section" >
  75. <banner />
  76. </section>
  77. <section class="product-content-section pt-60">
  78. <div class="container" v-if="store.state.pageContent.length>0">
  79. <div class="row">
  80. <div class="col-lg-12 col-md-12 content">
  81. <div class="read_content mb-60">
  82. <div class="section-title text-left both-border mb-60 d-flex justify-content-between">
  83. <div >
  84. <span class="title-tag2">{{store.state.pageContent[0].title}}</span>
  85. <div class="new-read-title2">
  86. <span >{{ store.state.pageContent[0].createdate }}</span>
  87. <span >点击量:{{store.state.pageContent[0].hits}}</span>
  88. </div>
  89. </div>
  90. <a href="javascript:history.back(-1)"><img src="@/assets/img/product/close.png" alt=""></a>
  91. </div>
  92. <div v-html="store.state.pageContent[0].content" class="new-read-body"></div>
  93. </div>
  94. <recomMendation :data="recomMendationList" v-if="recomMendationList.length>0"/>
  95. </div>
  96. </div>
  97. </div>
  98. </section>
  99. </div>
  100. </template>