1.vue 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421
  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="contentLeft" v-for="item in component_style1_News1Array_img_1">
  11. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
  12. :target="item.islink == 1 ? '_blank' : '_self'">
  13. <img :src="item.imgurl" alt="">
  14. <div>{{ item.title }}</div>
  15. </NuxtLink>
  16. </div>
  17. <div class="contentMid">
  18. <div v-for="item in component_style1_News1Array_text_1">
  19. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
  20. :target="item.islink == 1 ? '_blank' : '_self'">
  21. {{ item.title }}
  22. </NuxtLink>
  23. </div>
  24. </div>
  25. <div class="contentRight">
  26. <div v-for="item in component_style1_News1Array_text_2">
  27. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
  28. :target="item.islink == 1 ? '_blank' : '_self'">
  29. {{ item.title }}
  30. </NuxtLink>
  31. </div>
  32. <div v-for="item in component_style1_News1Array_text_3">
  33. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
  34. :target="item.islink == 1 ? '_blank' : '_self'">
  35. <span>{{ titleLink.alias }}</span>
  36. <em></em>
  37. <div class="title">{{ item.title }}</div>
  38. </NuxtLink>
  39. </div>
  40. </div>
  41. </div>
  42. <!--样式2-->
  43. <div class="listNewsContent" v-if="componentStyle == 2">
  44. <div class="contentMid">
  45. <div v-for="item in component_style1_News1Array_text_1">
  46. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
  47. :target="item.islink == 1 ? '_blank' : '_self'">
  48. {{ item.title }}
  49. </NuxtLink>
  50. </div>
  51. </div>
  52. <div class="contentLeft" v-for="item in component_style1_News1Array_img_1">
  53. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
  54. :target="item.islink == 1 ? '_blank' : '_self'">
  55. <img :src="item.imgurl" alt="">
  56. <div>{{ item.title }}</div>
  57. </NuxtLink>
  58. </div>
  59. <div class="contentRight">
  60. <div v-for="item in component_style1_News1Array_text_2">
  61. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
  62. :target="item.islink == 1 ? '_blank' : '_self'">
  63. {{ item.title }}
  64. </NuxtLink>
  65. </div>
  66. <div v-for="item in component_style1_News1Array_text_3">
  67. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
  68. :target="item.islink == 1 ? '_blank' : '_self'">
  69. <span>{{ titleLink.alias }}</span>
  70. <em></em>
  71. <div class="title">{{ item.title }}</div>
  72. </NuxtLink>
  73. </div>
  74. </div>
  75. </div>
  76. <!--样式3-->
  77. <div class="listNewsContent style3" v-if="componentStyle == 3">
  78. <div class="contentMid">
  79. <div v-for="item in component_style1_News1Array_text_1">
  80. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
  81. :target="item.islink == 1 ? '_blank' : '_self'">
  82. {{ item.title }}
  83. </NuxtLink>
  84. </div>
  85. </div>
  86. <div class="contentRight">
  87. <div v-for="item in component_style1_News1Array_text_2">
  88. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
  89. :target="item.islink == 1 ? '_blank' : '_self'">
  90. {{ item.title }}
  91. </NuxtLink>
  92. </div>
  93. <div v-for="item in component_style1_News1Array_text_3">
  94. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
  95. :target="item.islink == 1 ? '_blank' : '_self'">
  96. <span>{{ titleLink.alias }}</span>
  97. <em></em>
  98. <div class="title">{{ item.title }}</div>
  99. </NuxtLink>
  100. </div>
  101. </div>
  102. <div class="contentLeft" v-for="item in component_style1_News1Array_img_1">
  103. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
  104. :target="item.islink == 1 ? '_blank' : '_self'">
  105. <img :src="item.imgurl" alt="">
  106. <div>{{ item.title }}</div>
  107. </NuxtLink>
  108. </div>
  109. </div>
  110. <!--样式4-->
  111. <div class="listNewsContent style4" v-if="componentStyle == 4">
  112. <div class="contentLeft" v-for="item in component_style1_News1Array_img_1">
  113. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
  114. :target="item.islink == 1 ? '_blank' : '_self'">
  115. <img :src="item.imgurl" alt="">
  116. <div>{{ item.title }}</div>
  117. </NuxtLink>
  118. </div>
  119. <div class="contentMid">
  120. <div v-for="item in component_style1_News1Array_text_1">
  121. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
  122. :target="item.islink == 1 ? '_blank' : '_self'">
  123. {{ item.title }}
  124. </NuxtLink>
  125. </div>
  126. </div>
  127. <div class="contentRight">
  128. <div v-for="item in component_style1_News1Array_text_2">
  129. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
  130. :target="item.islink == 1 ? '_blank' : '_self'">
  131. {{ item.title }}
  132. </NuxtLink>
  133. </div>
  134. <div v-for="item in component_style1_News1Array_text_3">
  135. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
  136. :target="item.islink == 1 ? '_blank' : '_self'">
  137. <span>{{ titleLink.alias }}</span>
  138. <em></em>
  139. <div class="title">{{ item.title }}</div>
  140. </NuxtLink>
  141. </div>
  142. </div>
  143. </div>
  144. <!--样式5-->
  145. <div class="listNewsContent style5" v-if="componentStyle == 5">
  146. <div class="contentMid">
  147. <div v-for="item in component_style1_News1Array_text_1">
  148. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
  149. :target="item.islink == 1 ? '_blank' : '_self'">
  150. {{ item.title }}
  151. </NuxtLink>
  152. </div>
  153. </div>
  154. <div class="contentLeft" v-for="item in component_style1_News1Array_img_1">
  155. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
  156. :target="item.islink == 1 ? '_blank' : '_self'">
  157. <img :src="item.imgurl" alt="">
  158. <div>{{ item.title }}</div>
  159. </NuxtLink>
  160. </div>
  161. <div class="contentRight">
  162. <div v-for="item in component_style1_News1Array_text_2">
  163. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
  164. :target="item.islink == 1 ? '_blank' : '_self'">
  165. {{ item.title }}
  166. </NuxtLink>
  167. </div>
  168. <div v-for="item in component_style1_News1Array_text_3">
  169. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
  170. :target="item.islink == 1 ? '_blank' : '_self'">
  171. <span>{{ titleLink.alias }}</span>
  172. <em></em>
  173. <div class="title">{{ item.title }}</div>
  174. </NuxtLink>
  175. </div>
  176. </div>
  177. </div>
  178. <!--样式6-->
  179. <div class="listNewsContent style6" v-if="componentStyle == 6">
  180. <div class="contentMid">
  181. <div v-for="item in component_style1_News1Array_text_1">
  182. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
  183. :target="item.islink == 1 ? '_blank' : '_self'">
  184. {{ item.title }}
  185. </NuxtLink>
  186. </div>
  187. </div>
  188. <div class="contentRight">
  189. <div v-for="item in component_style1_News1Array_text_2">
  190. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
  191. :target="item.islink == 1 ? '_blank' : '_self'">
  192. {{ item.title }}
  193. </NuxtLink>
  194. </div>
  195. <div v-for="item in component_style1_News1Array_text_3">
  196. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
  197. :target="item.islink == 1 ? '_blank' : '_self'">
  198. <span>{{ titleLink.alias }}</span>
  199. <em></em>
  200. <div class="title">{{ item.title }}</div>
  201. </NuxtLink>
  202. </div>
  203. </div>
  204. <div class="contentLeft" v-for="item in component_style1_News1Array_img_1">
  205. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
  206. :target="item.islink == 1 ? '_blank' : '_self'">
  207. <img :src="item.imgurl" alt="">
  208. <div>{{ item.title }}</div>
  209. </NuxtLink>
  210. </div>
  211. </div>
  212. </div>
  213. </template>
  214. <script setup>
  215. //引入vue
  216. import { ref } from 'vue';
  217. //获得新闻数据
  218. const props = defineProps({
  219. titleLink: Object,//板块名称
  220. templateData: Array,//新闻数据
  221. componentStyle: Number,//样式编号
  222. });
  223. //样式1与样式2共用 start ---------------------------------------->
  224. const component_style1_News1Array_img_1 = ref([]);
  225. const component_style1_News1Array_text_1 = ref([]);
  226. const component_style1_News1Array_text_2 = ref([]);
  227. const component_style1_News1Array_text_3 = ref([]);
  228. //真实数据
  229. // 图文数据
  230. component_style1_News1Array_img_1.value = props.templateData.imgnum.slice(0, 1);
  231. // 文本数据
  232. component_style1_News1Array_text_1.value = props.templateData.textnum.slice(0, 6);
  233. component_style1_News1Array_text_2.value = props.templateData.textnum.slice(6, 7);
  234. component_style1_News1Array_text_3.value = props.templateData.textnum.slice(7, 12);
  235. //样式1与样式2共用 end ---------------------------------------->
  236. </script>
  237. <style lang="less" scoped>
  238. //基本样式 start ---------------------------------------->
  239. .listNewsBox {
  240. position: relative;
  241. .listNewsTitle {
  242. height: 38px;
  243. line-height: 38px;
  244. margin-bottom: 19px;
  245. div {
  246. height: 35px;
  247. width: 138px;
  248. line-height: 32px;
  249. font-size: 22px;
  250. font-weight: bold;
  251. color: #333333;
  252. cursor: pointer;
  253. overflow: hidden;
  254. text-overflow: ellipsis;
  255. white-space: nowrap;
  256. color: #154079;
  257. padding-bottom: 5px;
  258. background: url("http://192.168.1.234:19000/pre/image/png/20251218/1766042138413493.png") bottom left no-repeat;
  259. }
  260. }
  261. .listNewsContent {
  262. width: 100%;
  263. height: 268px;
  264. display: flex;
  265. align-items: flex-start;
  266. justify-content: flex-start;
  267. .contentLeft {
  268. position: relative;
  269. width: 380px;
  270. height: 268px;
  271. margin-right: 30px;
  272. cursor: pointer;
  273. a {
  274. img {
  275. width: 380px;
  276. height: 268px;
  277. }
  278. div {
  279. position: absolute;
  280. bottom: 0;
  281. left: 0;
  282. width: 380px;
  283. height: 50px;
  284. line-height: 50px;
  285. color: #fff;
  286. font-size: 16px;
  287. font-weight: bold;
  288. padding-left: 20px;
  289. background-color: #ccc;
  290. box-sizing: border-box;
  291. }
  292. }
  293. }
  294. .contentMid {
  295. width: 378px;
  296. height: 268px;
  297. margin-right: 20px;
  298. div {
  299. width: 365px;
  300. white-space: nowrap;
  301. overflow: hidden;
  302. text-overflow: ellipsis;
  303. font-size: 18px;
  304. color: #666666;
  305. margin-bottom: 18px;
  306. padding-left: 8px;
  307. background: url("http://192.168.1.234:19000/pre/image/png/20251218/1766042944885873.png") no-repeat left center;
  308. &:first-child {
  309. width: 378px;
  310. height: 48px;
  311. line-height: 24px;
  312. font-weight: bold;
  313. color: #333333;
  314. padding-left: 0px;
  315. background: none;
  316. a {
  317. color: #333333;
  318. }
  319. }
  320. &:last-child {
  321. margin-bottom: 0;
  322. }
  323. a {
  324. color: #666666;
  325. }
  326. }
  327. }
  328. .contentRight {
  329. width: 380px;
  330. height: 268px;
  331. div {
  332. width: 380px;
  333. color: #333333;
  334. font-size: 18px;
  335. margin-bottom: 16px;
  336. cursor: pointer;
  337. span {
  338. color: #154079;
  339. }
  340. em {
  341. display: inline-block;
  342. width: 2px;
  343. height: 14px;
  344. margin: 0 15px;
  345. background-color: #d3d5d8;
  346. }
  347. &:nth-child(1) {
  348. height: 48px;
  349. line-height: 24px;
  350. font-weight: bold;
  351. color: #333333;
  352. font-weight: bold;
  353. a {
  354. color: #333333;
  355. }
  356. }
  357. .title {
  358. display: inline-block;
  359. width: 255px;
  360. white-space: nowrap;
  361. overflow: hidden;
  362. text-overflow: ellipsis;
  363. vertical-align: -5px;
  364. }
  365. &:last-child {
  366. margin-bottom: 0;
  367. }
  368. }
  369. }
  370. }
  371. //样式3
  372. .style3,
  373. .style6 {
  374. .contentLeft {
  375. margin-right: 0px;
  376. }
  377. .contentRight {
  378. margin-right: 30px;
  379. }
  380. }
  381. .style4,
  382. .style5,
  383. .style6 {
  384. .contentMid {
  385. div {
  386. padding-left: 8px;
  387. background: url("http://192.168.1.234:19000/pre/image/png/20251218/176604296168575.png") no-repeat left center;
  388. }
  389. }
  390. }
  391. }
  392. </style>