detail.vue 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198
  1. <template>
  2. <div class="news-details-container mt16">
  3. <div class="nav-container flex">
  4. <div class="nr" style="width: 70px">当前位置:</div>
  5. <el-breadcrumb style="flex: 1;" separator="/">
  6. <el-breadcrumb-item :to="{ path: '/' }">首页</el-breadcrumb-item>
  7. <el-breadcrumb-item>
  8. <nuxt-link to="/policy/search">政策查询</nuxt-link>
  9. </el-breadcrumb-item>
  10. <el-breadcrumb-item class="line1" style="max-width: 800px;">{{detailsObj.title}}</el-breadcrumb-item>
  11. </el-breadcrumb>
  12. </div>
  13. <div class="content-box">
  14. <div class="news-detail-box m-r-16">
  15. <div class="content-header bg-white">
  16. <div class="news-detail-title">
  17. {{detailsObj.title}}
  18. </div>
  19. <div class="flex">
  20. <div class="sm muted m-r-20" v-if="detailsObj.author">
  21. {{detailsObj.author}}
  22. </div>
  23. <div class="sm muted">
  24. 发布时间:{{timeFormat(detailsObj.created_at)}}
  25. </div>
  26. <!-- <div class="flex" style="margin-left: 40px">
  27. <i class="el-icon-view muted"></i>
  28. <div class="muted" style="margin-left: 3px;">{{detailsObj.visit}} 人浏览</div>
  29. </div> -->
  30. </div>
  31. </div>
  32. <div class="content-html-box bg-white">
  33. <div v-html="detailsObj.content"></div>
  34. </div>
  35. </div>
  36. <div class="recommend-box">
  37. <div class="recommend-box-header flex bg-white">
  38. <div class="primary-line"></div>
  39. <div class="xxl" style="font-weight: 500">为您推荐</div>
  40. </div>
  41. <div class="recommend-box-content bg-white">
  42. <div class="recommend-list-container">
  43. <div class="recommend-list-item" v-for="(item) in recommend_list" :key="item.id"
  44. @click="toOther(item.id)">
  45. <el-image style="width: 244px; height:183px;border-radius: 6px" fit="cover"
  46. :src="item.image" />
  47. <div class="goods-info">
  48. <div class="line2 goods-name">{{item.title}}</div>
  49. <div class="flex" style="margin-top: 10px">
  50. <i class="el-icon-view muted"></i>
  51. <div class="muted xs" style="margin-left: 4px;">{{item.visit}} 人浏览</div>
  52. </div>
  53. </div>
  54. </div>
  55. </div>
  56. </div>
  57. </div>
  58. </div>
  59. </div>
  60. </template>
  61. <script>
  62. import {
  63. timeFormat
  64. } from '@/utils/date'
  65. export default {
  66. head() {
  67. return {
  68. title: this.$store.getters.headTitle,
  69. link: [{
  70. rel: "icon",
  71. type: "image/x-icon",
  72. href: this.$store.getters.favicon
  73. }],
  74. };
  75. },
  76. async asyncData({
  77. $get,
  78. $post,
  79. query
  80. }) {
  81. let detailsObj = {};
  82. let recommend_list = [];
  83. let res = await $get("policy/details", {
  84. params: {
  85. id: query.id,
  86. client: 2
  87. }
  88. });
  89. if (res.code == 1) {
  90. detailsObj = res.data;
  91. recommend_list = res.data.recommend_list
  92. }
  93. return {
  94. detailsObj,
  95. recommend_list,
  96. };
  97. },
  98. watchQuery: ['id'],
  99. data() {
  100. return {
  101. recommend_list: []
  102. }
  103. },
  104. mounted() {
  105. console.log('route', this.$route)
  106. // this.getNewsDetails(this.$route.query.id);
  107. },
  108. methods: {
  109. async getNewsDetails(id) {
  110. let res = await this.$get("help/detail", {params: {id: id, client: 2}});
  111. if(res.code == 1) {
  112. this.detailsObj = res.data;
  113. this.recommend_list = res.data.recommend_list
  114. }
  115. },
  116. toOther(id) {
  117. this.$router.push('/help_center/help_center_detail?id=' + id)
  118. },
  119. timeFormat(time) {
  120. return timeFormat(time)
  121. },
  122. }
  123. }
  124. </script>
  125. <style lang="scss" scoped>
  126. .news-details-container {
  127. .nav-container {
  128. padding: 15px 16px;
  129. }
  130. .content-box {
  131. display: flex;
  132. flex-direction: row;
  133. .news-detail-box {
  134. background-color: #FFFFFF;
  135. width: 900px;
  136. .content-header {
  137. margin: 0px 20px;
  138. padding: 20px 0px;
  139. border-bottom: 1px solid #e5e5e5;
  140. .news-detail-title {
  141. color: #222;
  142. font-size: 24px;
  143. font-weight: 500;
  144. margin-bottom: 43px;
  145. }
  146. }
  147. .content-html-box {
  148. padding: 24px 20px;
  149. &>div {
  150. width: 100%;
  151. overflow: hidden;
  152. ::v-deep img {
  153. width: 100%;
  154. }
  155. }
  156. }
  157. }
  158. .recommend-box {
  159. width: 264px;
  160. .recommend-box-header {
  161. padding: 15px 10px;
  162. border-bottom: 1px solid #e5e5e5;
  163. .primary-line {
  164. margin-right: 10px;
  165. background-color: $--color-primary;
  166. width: 4px;
  167. height: 20px;
  168. }
  169. }
  170. .recommend-box-content {
  171. .recommend-list-container {
  172. .recommend-list-item {
  173. padding: 10px;
  174. cursor: pointer;
  175. .goods-info {
  176. margin-top: 8px;
  177. }
  178. }
  179. }
  180. }
  181. }
  182. }
  183. }
  184. </style>