2.vue 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278
  1. <template>
  2. <div class="listNewsBox">
  3. <div class="listNewsTitle">
  4. <NuxtLink v-if="titleLink.cid" :href="getLinkPath(titleLink)" :title="titleLink.alias">
  5. <div>{{ titleLink.alias }}</div>
  6. </NuxtLink>
  7. </div>
  8. <!--样式1-->
  9. <div class="listNewsContent" v-if="componentStyle == 1">
  10. <div class="photo">
  11. <div v-for="item in component_style1_News1Array_img">
  12. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
  13. :target="item.islink == 1 ? '_blank' : '_self'">
  14. <img :src="item.imgurl" :alt="item.title">
  15. <span>{{ item.title }}</span>
  16. </NuxtLink>
  17. </div>
  18. </div>
  19. <div class="text" v-for="item in component_style1_News1Array_text">
  20. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
  21. :target="item.islink == 1 ? '_blank' : '_self'">
  22. {{ item.title }}
  23. </NuxtLink>
  24. </div>
  25. </div>
  26. <!--样式2-->
  27. <div class="listNewsContent style2" v-if="componentStyle == 2">
  28. <div class="photo">
  29. <div v-for="item in component_style1_News1Array_img">
  30. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
  31. :target="item.islink == 1 ? '_blank' : '_self'">
  32. <img :src="item.imgurl" :alt="item.title">
  33. <span>{{ item.title }}</span>
  34. </NuxtLink>
  35. </div>
  36. </div>
  37. <div class="text" v-for="item in component_style1_News1Array_text">
  38. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
  39. :target="item.islink == 1 ? '_blank' : '_self'">
  40. {{ item.title }}
  41. </NuxtLink>
  42. </div>
  43. </div>
  44. <!--样式3-->
  45. <div class="listNewsContent style3" v-if="componentStyle == 3">
  46. <div class="photo">
  47. <div v-for="item in component_style1_News1Array_img">
  48. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
  49. :target="item.islink == 1 ? '_blank' : '_self'">
  50. <img :src="item.imgurl" :alt="item.title">
  51. <span>{{ item.title }}</span>
  52. </NuxtLink>
  53. </div>
  54. </div>
  55. <div class="text" v-for="item in component_style1_News1Array_text">
  56. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
  57. :target="item.islink == 1 ? '_blank' : '_self'">
  58. {{ item.title }}
  59. </NuxtLink>
  60. </div>
  61. </div>
  62. <!--样式4-->
  63. <div class="listNewsContent style4" v-if="componentStyle == 4">
  64. <div class="text" v-for="item in component_style1_News1Array_text">
  65. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
  66. :target="item.islink == 1 ? '_blank' : '_self'">
  67. {{ item.title }}
  68. </NuxtLink>
  69. </div>
  70. <div class="photo">
  71. <div v-for="item in component_style1_News1Array_img">
  72. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
  73. :target="item.islink == 1 ? '_blank' : '_self'">
  74. <img :src="item.imgurl" :alt="item.title">
  75. <span>{{ item.title }}</span>
  76. </NuxtLink>
  77. </div>
  78. </div>
  79. </div>
  80. <!--样式5-->
  81. <div class="listNewsContent style5" v-if="componentStyle == 5">
  82. <div class="text" v-for="item in component_style1_News1Array_text">
  83. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
  84. :target="item.islink == 1 ? '_blank' : '_self'">
  85. {{ item.title }}
  86. </NuxtLink>
  87. </div>
  88. <div class="photo">
  89. <div v-for="item in component_style1_News1Array_img">
  90. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
  91. :target="item.islink == 1 ? '_blank' : '_self'">
  92. <img :src="item.imgurl" :alt="item.title">
  93. <span>{{ item.title }}</span>
  94. </NuxtLink>
  95. </div>
  96. </div>
  97. </div>
  98. <!--样式6-->
  99. <div class="listNewsContent style6" v-if="componentStyle == 6">
  100. <div class="text" v-for="item in component_style1_News1Array_text">
  101. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
  102. :target="item.islink == 1 ? '_blank' : '_self'">
  103. {{ item.title }}
  104. </NuxtLink>
  105. </div>
  106. <div class="photo">
  107. <div v-for="item in component_style1_News1Array_img">
  108. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
  109. :target="item.islink == 1 ? '_blank' : '_self'">
  110. <img :src="item.imgurl" :alt="item.title">
  111. <span>{{ item.title }}</span>
  112. </NuxtLink>
  113. </div>
  114. </div>
  115. </div>
  116. </div>
  117. </template>
  118. <script setup>
  119. //引入vue
  120. import { ref } from 'vue';
  121. //获得新闻数据
  122. const props = defineProps({
  123. titleLink: Object,//板块名称
  124. templateData: Array,//新闻数据
  125. componentStyle: Number,//样式编号
  126. });
  127. //样式1与样式2共用 start ---------------------------------------->
  128. const component_style1_News1Array_img = ref([]);
  129. const component_style1_News1Array_text = ref([]);
  130. //真实数据
  131. component_style1_News1Array_img.value = props.templateData.imgnum.slice(0, 2);
  132. component_style1_News1Array_text.value = props.templateData.textnum.slice(0, 3);
  133. //样式1与样式2共用 end ---------------------------------------->
  134. </script>
  135. <style lang="less" scoped>
  136. //基本样式 start ---------------------------------------->
  137. .listNewsBox {
  138. position: relative;
  139. .listNewsTitle {
  140. height: 38px;
  141. line-height: 38px;
  142. margin-bottom: 19px;
  143. div {
  144. height: 35px;
  145. width: 138px;
  146. line-height: 32px;
  147. font-size: 22px;
  148. font-weight: bold;
  149. cursor: pointer;
  150. overflow: hidden;
  151. text-overflow: ellipsis;
  152. white-space: nowrap;
  153. color: #154079;
  154. padding-bottom: 5px;
  155. background: url("http://192.168.1.234:19000/pre/image/png/20251218/1766042138413493.png") bottom left no-repeat;
  156. }
  157. }
  158. .listNewsContent {
  159. width: 100%;
  160. box-sizing: border-box;
  161. .photo {
  162. width: 378px;
  163. height: 130px;
  164. display: flex;
  165. justify-content: space-between;
  166. margin-bottom: 26px;
  167. div {
  168. position: relative;
  169. width: 185px;
  170. height: 130px;
  171. img {
  172. width: 185px;
  173. height: 130px;
  174. }
  175. span {
  176. position: absolute;
  177. bottom: 0;
  178. left: 0;
  179. display: inline-block;
  180. width: 185px;
  181. height: 29px;
  182. line-height: 29px;
  183. font-size: 14px;
  184. padding-left: 5px;
  185. box-sizing: border-box;
  186. color: #fff;
  187. background-color: rgba(0, 0, 0, 0.2);
  188. overflow: hidden;
  189. text-overflow: ellipsis;
  190. white-space: nowrap;
  191. }
  192. }
  193. }
  194. .text {
  195. width: 370px;
  196. color: #666666;
  197. font-size: 18px;
  198. margin-bottom: 18px;
  199. cursor: pointer;
  200. white-space: nowrap;
  201. overflow: hidden;
  202. text-overflow: ellipsis;
  203. padding-left: 16px;
  204. background: url("http://192.168.1.234:19000/pre/image/png/20251218/1766042944885873.png") no-repeat left center;
  205. a {
  206. color: #333333;
  207. }
  208. }
  209. }
  210. // 样式2
  211. .style2 {
  212. .text {
  213. padding-left: 16px;
  214. background: url("http://192.168.1.234:19000/pre/image/png/20251218/176604296168575.png") no-repeat left center;
  215. }
  216. }
  217. // 样式3
  218. .style3 {
  219. .text {
  220. padding-left: 0px;
  221. background: none;
  222. }
  223. }
  224. // 样式4
  225. .style4 {
  226. .photo {
  227. margin-bottom: 0px;
  228. }
  229. .text {
  230. margin-bottom: 20px;
  231. }
  232. }
  233. // 样式5
  234. .style5 {
  235. .photo {
  236. margin-bottom: 0px;
  237. }
  238. .text {
  239. margin-bottom: 20px;
  240. padding-left: 16px;
  241. background: url("http://192.168.1.234:19000/pre/image/png/20251218/176604296168575.png") no-repeat left center;
  242. }
  243. }
  244. // 样式6
  245. .style6 {
  246. .photo {
  247. margin-bottom: 0px;
  248. }
  249. .text {
  250. margin-bottom: 20px;
  251. padding-left: 0px;
  252. background: none;
  253. }
  254. }
  255. }
  256. //基本样式 end ----------------------------------------></style>