2.vue 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531
  1. <template>
  2. <div class="listNewsBox">
  3. <div class="listNewsTitle_skin2">
  4. <span>
  5. <NuxtLink
  6. v-if="titleLink.cid"
  7. :href="getLinkPath(titleLink)"
  8. :title="titleLink.alias"
  9. >
  10. {{titleLink.alias}}
  11. </NuxtLink>
  12. </span>
  13. </div>
  14. <!--样式1-->
  15. <div class="listNewsContent" v-if="componentStyle==1">
  16. <div class="listNewsContentTop">
  17. <div class="listNewsContentLeftTop" v-for="item in component_style1_News1Array">
  18. <NuxtLink
  19. :href="getLinkPathDetail(item)"
  20. :title="item.title"
  21. :target="item.islink == 1 ? '_blank' : '_self'"
  22. >
  23. <img :src="item.imgurl" />
  24. <div class="listNewsContentLeftTopTitle">{{ item.title }}</div>
  25. </NuxtLink>
  26. </div>
  27. </div>
  28. <div class="listNewsContentBottom">
  29. <div v-for="item in component_style1_News2Array">
  30. <NuxtLink
  31. :href="getLinkPathDetail(item)"
  32. :title="item.title"
  33. :target="item.islink == 1 ? '_blank' : '_self'"
  34. >
  35. {{ item.title }}
  36. </NuxtLink>
  37. </div>
  38. </div>
  39. </div>
  40. <!--样式2-->
  41. <div class="listNewsContent" v-if="componentStyle==2">
  42. <div class="listNewsBigContentBottom">
  43. <div class="listNewsContentBottom">
  44. <div v-for="item in component_style1_News2Array">
  45. <NuxtLink
  46. :href="getLinkPathDetail(item)"
  47. :title="item.title"
  48. :target="item.islink == 1 ? '_blank' : '_self'"
  49. >
  50. {{ item.title }}
  51. </NuxtLink>
  52. </div>
  53. </div>
  54. </div>
  55. <div class="listNewsContentTop">
  56. <div class="listNewsContentLeftTop" v-for="item in component_style1_News1Array">
  57. <NuxtLink
  58. :href="getLinkPathDetail(item)"
  59. :title="item.title"
  60. :target="item.islink == 1 ? '_blank' : '_self'"
  61. >
  62. <img :src="item.imgurl" />
  63. <div class="listNewsContentLeftTopTitle">{{ item.title }}</div>
  64. </NuxtLink>
  65. </div>
  66. </div>
  67. </div>
  68. <!--样式3-->
  69. <div class="listNewsContent_style listNewsStyle3" v-if="componentStyle == 3">
  70. <div class="listNewsContentLeft">
  71. <div class="listNewsContentLeftBottom">
  72. <div v-for="item in component_style1_News2Array_1">
  73. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
  74. :target="item.islink == 1 ? '_blank' : '_self'">
  75. {{ item.title }}
  76. </NuxtLink>
  77. </div>
  78. </div>
  79. <div class="listNewsContentLeftTop" v-for="item in component_style1_News1Array_1">
  80. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
  81. :target="item.islink == 1 ? '_blank' : '_self'">
  82. <img :src="item.imgurl" />
  83. <div class="listNewsContentLeftTopTitle">{{ item.title }}</div>
  84. </NuxtLink>
  85. </div>
  86. </div>
  87. <div class="listNewsContentRight">
  88. <div class="listNewsContentLeftTop" v-for="item in component_style1_News1Array_2">
  89. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
  90. :target="item.islink == 1 ? '_blank' : '_self'">
  91. <img :src="item.imgurl" />
  92. <div class="listNewsContentLeftTopTitle">{{ item.title }}</div>
  93. </NuxtLink>
  94. </div>
  95. <div class="listNewsContentRightBottom">
  96. <div v-for="item in component_style1_News2Array_2">
  97. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
  98. :target="item.islink == 1 ? '_blank' : '_self'">
  99. {{ item.title }}
  100. </NuxtLink>
  101. </div>
  102. </div>
  103. </div>
  104. </div>
  105. <!--样式4-->
  106. <div class="listNewsContent_style listNewsStyle4" v-if="componentStyle == 4">
  107. <div class="listNewsContentLeft">
  108. <div class="listNewsContentLeftTop" v-for="item in component_style1_News1Array_1">
  109. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
  110. :target="item.islink == 1 ? '_blank' : '_self'">
  111. <img :src="item.imgurl" />
  112. <div class="listNewsContentLeftTopTitle">{{ item.title }}</div>
  113. </NuxtLink>
  114. </div>
  115. <div class="listNewsContentLeftBottom">
  116. <div v-for="item in component_style1_News2Array_1">
  117. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
  118. :target="item.islink == 1 ? '_blank' : '_self'">
  119. {{ item.title }}
  120. </NuxtLink>
  121. </div>
  122. </div>
  123. </div>
  124. <div class="listNewsContentRight">
  125. <div class="listNewsContentRightBottom">
  126. <div v-for="item in component_style1_News2Array_2">
  127. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
  128. :target="item.islink == 1 ? '_blank' : '_self'">
  129. {{ item.title }}
  130. </NuxtLink>
  131. </div>
  132. </div>
  133. <div class="listNewsContentLeftTop" v-for="item in component_style1_News1Array_2">
  134. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
  135. :target="item.islink == 1 ? '_blank' : '_self'">
  136. <img :src="item.imgurl" />
  137. <div class="listNewsContentLeftTopTitle">{{ item.title }}</div>
  138. </NuxtLink>
  139. </div>
  140. </div>
  141. </div>
  142. <!--样式5-->
  143. <div class="listNewsContent_style listNewsStyle5" v-if="componentStyle == 5">
  144. <div class="listNewsContentLeft">
  145. <div class="listNewsContentLeftTop" v-for="item in component_style1_News1Array_1">
  146. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
  147. :target="item.islink == 1 ? '_blank' : '_self'">
  148. <img :src="item.imgurl" />
  149. <div class="listNewsContentLeftTopTitle">{{ item.title }}</div>
  150. </NuxtLink>
  151. </div>
  152. <div class="listNewsContentLeftBottom">
  153. <div v-for="item in component_style1_News2Array_1">
  154. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
  155. :target="item.islink == 1 ? '_blank' : '_self'">
  156. {{ item.title }}
  157. </NuxtLink>
  158. </div>
  159. </div>
  160. </div>
  161. <div class="listNewsContentRight">
  162. <div class="listNewsContentLeftTop" v-for="item in component_style1_News1Array_2">
  163. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
  164. :target="item.islink == 1 ? '_blank' : '_self'">
  165. <img :src="item.imgurl" />
  166. <div class="listNewsContentLeftTopTitle">{{ item.title }}</div>
  167. </NuxtLink>
  168. </div>
  169. <div class="listNewsContentRightBottom">
  170. <div v-for="item in component_style1_News2Array_2">
  171. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
  172. :target="item.islink == 1 ? '_blank' : '_self'">
  173. {{ item.title }}
  174. </NuxtLink>
  175. </div>
  176. </div>
  177. </div>
  178. </div>
  179. <!--样式6-->
  180. <div class="listNewsContent_style listNewsStyle6 listNewsStyle5" v-if="componentStyle == 6">
  181. <div class="listNewsContentLeft">
  182. <div class="listNewsContentLeftBottom">
  183. <div v-for="item in component_style1_News2Array_1">
  184. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
  185. :target="item.islink == 1 ? '_blank' : '_self'">
  186. {{ item.title }}
  187. </NuxtLink>
  188. </div>
  189. </div>
  190. <div class="listNewsContentLeftTop" v-for="item in component_style1_News1Array_1">
  191. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
  192. :target="item.islink == 1 ? '_blank' : '_self'">
  193. <img :src="item.imgurl" />
  194. <div class="listNewsContentLeftTopTitle">{{ item.title }}</div>
  195. </NuxtLink>
  196. </div>
  197. </div>
  198. <div class="listNewsContentRight">
  199. <div class="listNewsContentRightBottom">
  200. <div v-for="item in component_style1_News2Array_2">
  201. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
  202. :target="item.islink == 1 ? '_blank' : '_self'">
  203. {{ item.title }}
  204. </NuxtLink>
  205. </div>
  206. </div>
  207. <div class="listNewsContentLeftTop" v-for="item in component_style1_News1Array_2">
  208. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
  209. :target="item.islink == 1 ? '_blank' : '_self'">
  210. <img :src="item.imgurl" />
  211. <div class="listNewsContentLeftTopTitle">{{ item.title }}</div>
  212. </NuxtLink>
  213. </div>
  214. </div>
  215. </div>
  216. <!--样式7-->
  217. <div class="listNewsContent_style listNewsStyle3 listNewsStyle5" v-if="componentStyle == 7">
  218. <div class="listNewsContentLeft">
  219. <div class="listNewsContentLeftBottom">
  220. <div v-for="item in component_style1_News2Array_1">
  221. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
  222. :target="item.islink == 1 ? '_blank' : '_self'">
  223. {{ item.title }}
  224. </NuxtLink>
  225. </div>
  226. </div>
  227. <div class="listNewsContentLeftTop" v-for="item in component_style1_News1Array_1">
  228. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
  229. :target="item.islink == 1 ? '_blank' : '_self'">
  230. <img :src="item.imgurl" />
  231. <div class="listNewsContentLeftTopTitle">{{ item.title }}</div>
  232. </NuxtLink>
  233. </div>
  234. </div>
  235. <div class="listNewsContentRight">
  236. <div class="listNewsContentLeftTop" v-for="item in component_style1_News1Array_2">
  237. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
  238. :target="item.islink == 1 ? '_blank' : '_self'">
  239. <img :src="item.imgurl" />
  240. <div class="listNewsContentLeftTopTitle">{{ item.title }}</div>
  241. </NuxtLink>
  242. </div>
  243. <div class="listNewsContentRightBottom">
  244. <div v-for="item in component_style1_News2Array_2">
  245. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
  246. :target="item.islink == 1 ? '_blank' : '_self'">
  247. {{ item.title }}
  248. </NuxtLink>
  249. </div>
  250. </div>
  251. </div>
  252. </div>
  253. <!--样式8-->
  254. <div class="listNewsContent_style listNewsStyle4 listNewsStyle5" v-if="componentStyle == 8">
  255. <div class="listNewsContentLeft">
  256. <div class="listNewsContentLeftTop" v-for="item in component_style1_News1Array_1">
  257. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
  258. :target="item.islink == 1 ? '_blank' : '_self'">
  259. <img :src="item.imgurl" />
  260. <div class="listNewsContentLeftTopTitle">{{ item.title }}</div>
  261. </NuxtLink>
  262. </div>
  263. <div class="listNewsContentLeftBottom">
  264. <div v-for="item in component_style1_News2Array_1">
  265. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
  266. :target="item.islink == 1 ? '_blank' : '_self'">
  267. {{ item.title }}
  268. </NuxtLink>
  269. </div>
  270. </div>
  271. </div>
  272. <div class="listNewsContentRight">
  273. <div class="listNewsContentRightBottom">
  274. <div v-for="item in component_style1_News2Array_2">
  275. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
  276. :target="item.islink == 1 ? '_blank' : '_self'">
  277. {{ item.title }}
  278. </NuxtLink>
  279. </div>
  280. </div>
  281. <div class="listNewsContentLeftTop" v-for="item in component_style1_News1Array_2">
  282. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
  283. :target="item.islink == 1 ? '_blank' : '_self'">
  284. <img :src="item.imgurl" />
  285. <div class="listNewsContentLeftTopTitle">{{ item.title }}</div>
  286. </NuxtLink>
  287. </div>
  288. </div>
  289. </div>
  290. </div>
  291. </template>
  292. <script setup>
  293. //引入vue
  294. import {ref} from 'vue';
  295. //获得新闻数据
  296. const props = defineProps({
  297. titleLink:Object,//板块名称
  298. templateData:Array,//新闻数据
  299. componentStyle:Number,//样式编号
  300. });
  301. //样式1与样式2共用 start ---------------------------------------->
  302. const component_style1_News1Array = ref([]);
  303. const component_style1_News1Array_1 = ref([]);
  304. const component_style1_News1Array_2 = ref([]);
  305. const component_style1_News2Array = ref([]);
  306. const component_style1_News2Array_1 = ref([]);
  307. const component_style1_News2Array_2 = ref([]);
  308. component_style1_News1Array.value = props.templateData.imgnum.slice(0, 2);
  309. component_style1_News1Array_1.value = props.templateData.imgnum.slice(0, 1);
  310. component_style1_News1Array_2.value = props.templateData.imgnum.slice(1, 2);
  311. component_style1_News2Array.value = props.templateData.textnum;
  312. component_style1_News2Array_1.value = props.templateData.textnum.slice(0, 7);
  313. component_style1_News2Array_2.value = props.templateData.textnum.slice(7, 14);
  314. //样式1与样式2共用 end ---------------------------------------->
  315. </script>
  316. <style lang="less" scoped>
  317. //基本样式 start ---------------------------------------->
  318. // 样式1,2基本样式
  319. .listNewsBox {
  320. position: relative;
  321. .listNewsTitle_skin2 {
  322. font-size:22px;
  323. font-weight:bold;
  324. height: 40px;
  325. line-height: 40px;
  326. border-bottom: 2px solid #A91B33;
  327. color:#A91B33;
  328. margin-bottom: 20px;
  329. box-sizing: border-box;
  330. a {
  331. color:#A91B33;
  332. display: block;
  333. height: 25px;
  334. line-height: 25px;
  335. }
  336. span {
  337. color:#A91B33;
  338. height: 25px;
  339. line-height: 25px;
  340. border-left: 3px solid #A91B33;
  341. padding-left: 12px;
  342. display: block;
  343. }
  344. }
  345. .listNewsContent {
  346. .listNewsContentTop {
  347. width: 720px;
  348. height: 245px;
  349. display: flex;
  350. align-items: center;
  351. justify-content: space-between;
  352. margin-bottom: 20px;
  353. .listNewsContentLeftTop {
  354. position: relative;
  355. img {
  356. width: 350px;
  357. height: 245px;
  358. display: block;
  359. }
  360. .listNewsContentLeftTopTitle {
  361. position: absolute;
  362. bottom: 0;
  363. z-index: 1;
  364. width: 100%;
  365. color: #fff;
  366. height: 44px;
  367. background: linear-gradient(0deg, rgba(0, 0, 0, 0.5) 33%, rgba(0, 0, 0, 0) 100%);
  368. box-sizing: border-box;
  369. padding: 0 10px;
  370. overflow: hidden;
  371. text-overflow: ellipsis;
  372. white-space: nowrap;
  373. line-height: 44px;
  374. font-size: 18px;
  375. }
  376. }
  377. }
  378. .listNewsBigContentBottom {
  379. height: 295px;
  380. margin-bottom: 20px;
  381. }
  382. .listNewsContentBottom {
  383. display: flex;
  384. flex-wrap: wrap;
  385. justify-content: space-between;
  386. div {
  387. color:#333333;
  388. font-size:18px;
  389. line-height: 24px;
  390. height: 24px;
  391. margin-bottom: 20px;
  392. overflow: hidden;
  393. text-overflow: ellipsis;
  394. white-space: nowrap;
  395. width: 345px;
  396. &:last-child {
  397. margin-bottom: 0;
  398. }
  399. &:nth-child(1),&:nth-child(2),&:nth-child(7),&:nth-child(8){
  400. font-weight: bold;
  401. }
  402. a {
  403. color:#333333;
  404. }
  405. }
  406. }
  407. }
  408. }
  409. // 样式3至样式8基本样式
  410. .listNewsContent_style {
  411. display: flex;
  412. justify-content: space-between;
  413. .listNewsContentLeft,
  414. .listNewsContentRight {
  415. width: 350px;
  416. height: 560px;
  417. .listNewsContentLeftTop {
  418. position: relative;
  419. margin-bottom: 20px;
  420. img {
  421. width: 350px;
  422. height: 247px;
  423. display: block;
  424. }
  425. .listNewsContentLeftTopTitle {
  426. position: absolute;
  427. bottom: 0;
  428. z-index: 1;
  429. width: 100%;
  430. color: #fff;
  431. height: 44px;
  432. background: linear-gradient(0deg, rgba(0, 0, 0, 0.5) 33%, rgba(0, 0, 0, 0) 100%);
  433. box-sizing: border-box;
  434. padding: 0 10px;
  435. overflow: hidden;
  436. text-overflow: ellipsis;
  437. white-space: nowrap;
  438. line-height: 44px;
  439. font-size: 18px;
  440. }
  441. }
  442. .listNewsContentLeftBottom,
  443. .listNewsContentRightBottom {
  444. div {
  445. color: #333333;
  446. font-size: 18px;
  447. line-height: 25px;
  448. height: 25px;
  449. margin-bottom: 20px;
  450. overflow: hidden;
  451. text-overflow: ellipsis;
  452. white-space: nowrap;
  453. &:last-child {
  454. margin-bottom: 0;
  455. }
  456. &:nth-child(1),
  457. &:nth-child(4) {
  458. font-weight: bold;
  459. }
  460. a{
  461. color: #333333;
  462. }
  463. }
  464. }
  465. }
  466. }
  467. //基本样式 end ---------------------------------------->
  468. //样式3
  469. .listNewsStyle3 {
  470. .listNewsContentLeft {
  471. .listNewsContentLeftBottom {
  472. margin-bottom: 20px;
  473. }
  474. }
  475. }
  476. //样式4
  477. .listNewsStyle4 {
  478. .listNewsContentRight {
  479. .listNewsContentRightBottom {
  480. margin-bottom: 20px;
  481. }
  482. }
  483. }
  484. //样式5
  485. .listNewsBox {
  486. .listNewsStyle5 {
  487. .listNewsContentLeft {
  488. .listNewsContentLeftBottom {
  489. div {
  490. &:nth-child(1),
  491. &:nth-child(4) {
  492. font-weight: 400;
  493. }
  494. }
  495. }
  496. }
  497. .listNewsContentRight {
  498. .listNewsContentRightBottom {
  499. div {
  500. &:nth-child(1),
  501. &:nth-child(4) {
  502. font-weight: 400;
  503. }
  504. }
  505. }
  506. }
  507. }
  508. }
  509. //样式6
  510. .listNewsStyle6 {
  511. .listNewsContentLeft,.listNewsContentRight {
  512. .listNewsContentLeftTop {
  513. margin-top: 20px;
  514. }
  515. }
  516. }
  517. </style>