2.vue 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343
  1. <template>
  2. <div class="listNewsBox">
  3. <div class="listNewsTitle_skin5">
  4. <span>
  5. <NuxtLink v-if="titleLink.cid" :href="getLinkPath(titleLink)" :title="titleLink.alias">
  6. <div>{{ titleLink.alias }}</div>
  7. </NuxtLink>
  8. </span>
  9. </div>
  10. <!--样式1-->
  11. <div class="listNewsContent" v-if="componentStyle == 1">
  12. <div class="listNewsContentItemTop">
  13. <div v-for="item in component_style1_News1Array">
  14. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
  15. :target="item.islink == 1 ? '_blank' : '_self'">
  16. <img :src="item.imgurl" alt="">
  17. {{ item.title }}
  18. </NuxtLink>
  19. </div>
  20. </div>
  21. <div class="listNewsContentItemBottom">
  22. <div v-for="item in component_style1_News2Array">
  23. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
  24. :target="item.islink == 1 ? '_blank' : '_self'">
  25. {{ item.title }}
  26. </NuxtLink>
  27. </div>
  28. </div>
  29. </div>
  30. <!--样式2-->
  31. <div class="listNewsContent style2" v-if="componentStyle == 2">
  32. <div class="listNewsContentItemTop">
  33. <div v-for="item in component_style1_News1Array">
  34. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
  35. :target="item.islink == 1 ? '_blank' : '_self'">
  36. <img :src="item.imgurl" alt="">
  37. {{ item.title }}
  38. </NuxtLink>
  39. </div>
  40. </div>
  41. <div class="listNewsContentItemBottom">
  42. <div v-for="item in component_style1_News2Array">
  43. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
  44. :target="item.islink == 1 ? '_blank' : '_self'">
  45. {{ item.title }}
  46. </NuxtLink>
  47. </div>
  48. </div>
  49. </div>
  50. <!--样式3-->
  51. <div class="listNewsContent style3" v-if="componentStyle == 3">
  52. <div class="listNewsContentItemBottom">
  53. <div v-for="item in component_style1_News2Array">
  54. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
  55. :target="item.islink == 1 ? '_blank' : '_self'">
  56. {{ item.title }}
  57. </NuxtLink>
  58. </div>
  59. </div>
  60. <div class="listNewsContentItemTop">
  61. <div v-for="item in component_style1_News1Array">
  62. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
  63. :target="item.islink == 1 ? '_blank' : '_self'">
  64. <img :src="item.imgurl" alt="">
  65. {{ item.title }}
  66. </NuxtLink>
  67. </div>
  68. </div>
  69. </div>
  70. <!--样式4-->
  71. <div class="listNewsContent style4" v-if="componentStyle == 4">
  72. <div class="listNewsContentItemBottom">
  73. <div v-for="item in component_style1_News2Array">
  74. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
  75. :target="item.islink == 1 ? '_blank' : '_self'">
  76. {{ item.title }}
  77. </NuxtLink>
  78. </div>
  79. </div>
  80. <div class="listNewsContentItemTop">
  81. <div v-for="item in component_style1_News1Array">
  82. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
  83. :target="item.islink == 1 ? '_blank' : '_self'">
  84. <img :src="item.imgurl" alt="">
  85. {{ item.title }}
  86. </NuxtLink>
  87. </div>
  88. </div>
  89. </div>
  90. <!--样式5-->
  91. <div class="listNewsContent" v-if="componentStyle == 5">
  92. <div class="listNewsContentItemTop">
  93. <div v-for="item in component_style1_News1Array">
  94. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
  95. :target="item.islink == 1 ? '_blank' : '_self'">
  96. <img :src="item.imgurl" alt="">
  97. {{ item.title }}
  98. </NuxtLink>
  99. </div>
  100. </div>
  101. <div class="listNewsContentItemBottom bg_blue">
  102. <div v-for="item in component_style1_News2Array">
  103. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
  104. :target="item.islink == 1 ? '_blank' : '_self'">
  105. {{ item.title }}
  106. </NuxtLink>
  107. </div>
  108. </div>
  109. </div>
  110. <!--样式6-->
  111. <div class="listNewsContent style6" v-if="componentStyle == 6">
  112. <div class="listNewsContentItemTop">
  113. <div v-for="item in component_style1_News1Array">
  114. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
  115. :target="item.islink == 1 ? '_blank' : '_self'">
  116. <img :src="item.imgurl" alt="">
  117. {{ item.title }}
  118. </NuxtLink>
  119. </div>
  120. </div>
  121. <div class="listNewsContentItemBottom bg_blue">
  122. <div v-for="item in component_style1_News2Array">
  123. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
  124. :target="item.islink == 1 ? '_blank' : '_self'">
  125. {{ item.title }}
  126. </NuxtLink>
  127. </div>
  128. </div>
  129. </div>
  130. <!--样式7-->
  131. <div class="listNewsContent style7" v-if="componentStyle == 7">
  132. <div class="listNewsContentItemBottom bg_blue">
  133. <div v-for="item in component_style1_News2Array">
  134. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
  135. :target="item.islink == 1 ? '_blank' : '_self'">
  136. {{ item.title }}
  137. </NuxtLink>
  138. </div>
  139. </div>
  140. <div class="listNewsContentItemTop">
  141. <div v-for="item in component_style1_News1Array">
  142. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
  143. :target="item.islink == 1 ? '_blank' : '_self'">
  144. <img :src="item.imgurl" alt="">
  145. {{ item.title }}
  146. </NuxtLink>
  147. </div>
  148. </div>
  149. </div>
  150. <!--样式8-->
  151. <div class="listNewsContent style8" v-if="componentStyle == 8">
  152. <div class="listNewsContentItemBottom bg_blue">
  153. <div v-for="item in component_style1_News2Array">
  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 class="listNewsContentItemTop">
  161. <div v-for="item in component_style1_News1Array">
  162. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
  163. :target="item.islink == 1 ? '_blank' : '_self'">
  164. <img :src="item.imgurl" alt="">
  165. {{ item.title }}
  166. </NuxtLink>
  167. </div>
  168. </div>
  169. </div>
  170. </div>
  171. </template>
  172. <script setup>
  173. //引入vue
  174. import { ref } from 'vue';
  175. //获得新闻数据
  176. const props = defineProps({
  177. titleLink: Object,//板块名称
  178. templateData: Array,//新闻数据
  179. componentStyle: Number,//样式编号
  180. });
  181. //定义变量 start ---------------------------------------->
  182. const active = ref(0);
  183. const component_style1_News1Array = ref({});
  184. const component_style1_News2Array = ref([]);
  185. component_style1_News1Array.value = props.templateData.imgnum;
  186. component_style1_News2Array.value = props.templateData.textnum;
  187. //定义变量 end ---------------------------------------->
  188. </script>
  189. <style lang="less" scoped>
  190. //基本样式 start ---------------------------------------->
  191. .listNewsBox {
  192. position: relative;
  193. .listNewsTitle_skin5 {
  194. display: flex;
  195. align-items: flex-start;
  196. justify-content: flex-start;
  197. border-bottom: 1px solid #999999;
  198. height: 38px;
  199. margin-bottom: 20px;
  200. div {
  201. height: 35px;
  202. width: 138px;
  203. line-height: 32px;
  204. font-size: 22px;
  205. font-weight: bold;
  206. color: #333333;
  207. cursor: pointer;
  208. overflow: hidden;
  209. text-overflow: ellipsis;
  210. white-space: nowrap;
  211. color: #3848A0;
  212. background: url("https://img.bjzxtw.org.cn/pre/image/png/20251104/1762224944805589.png") bottom left no-repeat;
  213. }
  214. }
  215. }
  216. //基本样式 end ---------------------------------------->
  217. //样式1 start ---------------------------------------->
  218. .listNewsBox {
  219. .listNewsContent {
  220. margin-bottom: 20px;
  221. .listNewsContentItemTop {
  222. width: 100%;
  223. height: 190px;
  224. display: flex;
  225. align-items: flex-start;
  226. justify-content: space-between;
  227. margin-bottom: 25px;
  228. div {
  229. width: 285px;
  230. height: 190px;
  231. color: #333333;
  232. font-size: 18px;
  233. margin-bottom: 23px;
  234. cursor: pointer;
  235. overflow: hidden;
  236. a {
  237. img {
  238. width: 285px;
  239. height: 190px;
  240. }
  241. }
  242. }
  243. }
  244. .listNewsContentItemBottom {
  245. width: 100%;
  246. height: 196px;
  247. div {
  248. width: 585px;
  249. white-space: nowrap;
  250. overflow: hidden;
  251. text-overflow: ellipsis;
  252. height: 24px;
  253. line-height: 24px;
  254. font-size: 18px;
  255. color: #333333;
  256. margin-bottom: 19px;
  257. padding-left: 16px;
  258. background: url("https://img.bjzxtw.org.cn/pre/image/png/20251111/1762854924444085.png") no-repeat left center;
  259. &:last-child {
  260. margin-bottom: 0;
  261. }
  262. &:first-child {
  263. font-weight: bold;
  264. }
  265. a {
  266. color: #333333;
  267. }
  268. }
  269. }
  270. //文字前缀为主题色蓝色
  271. .bg_blue {
  272. div {
  273. background: url("https://img.bjzxtw.org.cn/pre/image/png/20251112/1762909332941464.png") no-repeat left center;
  274. }
  275. }
  276. }
  277. // //样式2
  278. .style2,
  279. .style6 {
  280. .listNewsContentItemBottom {
  281. div {
  282. &:first-child {
  283. font-weight: 400;
  284. }
  285. }
  286. }
  287. }
  288. // 样式3
  289. .style3,
  290. .style7 {
  291. .listNewsContentItemTop {
  292. margin-bottom: 0;
  293. }
  294. .listNewsContentItemBottom {
  295. margin-bottom: 25px;
  296. div {
  297. &:first-child {
  298. font-weight: 400;
  299. }
  300. }
  301. }
  302. }
  303. .style4,
  304. .style8 {
  305. .listNewsContentItemTop {
  306. margin-bottom: 0;
  307. }
  308. .listNewsContentItemBottom {
  309. margin-bottom: 25px;
  310. div {
  311. &:first-child {
  312. font-weight: bold;
  313. }
  314. }
  315. }
  316. }
  317. }
  318. </style>