class.vue 44 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017
  1. <template>
  2. <!-- 频道页 -->
  3. <div>
  4. <HomePageHead></HomePageHead>
  5. <HomePageNavigation></HomePageNavigation>
  6. <HomeSecondaryHeading :titleData="pageData" :pinyinid="routeId"></HomeSecondaryHeading>
  7. <main class="index_main">
  8. <section class="channel_1 clearfix phone_none" v-if="newsData.length > 0">
  9. <div class="channel_1_box clearfix">
  10. <div class="roll_1_box clearfix">
  11. <HomeSwiperNzgx :imgData="newsData[0].data"></HomeSwiperNzgx>
  12. </div>
  13. </div>
  14. <div class="channel_2_box clearfix">
  15. <div class="channel_ul_1 clearfix">
  16. <NuxtLink class="channel_ul_1_a dot1" :href="getLinkPathDetail(item)" :title="item.title"
  17. v-for="item in newsData[0].data2" :key="item.id"
  18. :target="item.islink == 1 ? '_blank' : '_self'">
  19. {{ item.title }}
  20. </NuxtLink>
  21. </div>
  22. </div>
  23. </section>
  24. <!-- 广告 1-->
  25. <HomeAdvertising :imgurl="adImg1" v-if="newsData.length > 0"></HomeAdvertising>
  26. <section class="channel_2 clearfix phone_none" >
  27. <div class="channel_1_box" v-if="companyData.length > 0">
  28. <div class="channel_head_box clearfix">
  29. <div class="channel_head_box_left">
  30. <div class="channel_head_left_a_btn">
  31. <NuxtLink class="channel_head_left_a channel_head_left_a_only"
  32. :href="getLinkPath(companyData[0])" v-if="companyData[0]"
  33. :title="companyData[0].alias">
  34. {{ companyData[0].alias }}
  35. </NuxtLink>
  36. </div>
  37. </div>
  38. </div>
  39. <div class=" clearfix">
  40. <div class="channel_3_box clearfix">
  41. <div class="channel_ul_2 clearfix" v-if="companyData[0]">
  42. <NuxtLink class="channel_ul_2_a dot1" :href="getLinkPathDetail(item)"
  43. :title="item.title" v-for="item in companyData[0].data3" :key="item.id"
  44. :target="item.islink == 1 ? '_blank' : '_self'">
  45. {{ item.title }}
  46. </NuxtLink>
  47. </div>
  48. </div>
  49. <div class="channel_4_box clearfix">
  50. <div class="channel_img_ul_1">
  51. <div class="channel_img_ul_1_li" v-if="companyData[0]">
  52. <NuxtLink class="channel_img_ul_1_li_a" :href="getLinkPathDetail(item)"
  53. :title="item.title" v-for="item in companyData[0].data" :key="item.id"
  54. :target="item.islink == 1 ? '_blank' : '_self'">
  55. <img class="channel_img_ul_1_li_img" :src="item.imgurl" alt="item.imgurl">
  56. <div class="channel_img_ul_1_li_dot2 dot2">
  57. {{ item.title }}
  58. </div>
  59. </NuxtLink>
  60. </div>
  61. </div>
  62. <div class="channel_img_ul_even_1 clearfix" v-if="companyData[0]">
  63. <div class="channel_img_ul_even_1_li" v-for="item in companyData[0].data2">
  64. <NuxtLink class="channel_img_ul_even_1_li_a" :href="getLinkPathDetail(item)"
  65. :title="item.title" :key="item.id"
  66. :target="item.islink == 1 ? '_blank' : '_self'">
  67. <img class="channel_img_ul_even_1_li_img" :src="item.imgurl" alt="item.imgurl">
  68. <div class="channel_img_ul_even_1_li_dot2 dot2">
  69. {{ item.title }}
  70. </div>
  71. </NuxtLink>
  72. </div>
  73. </div>
  74. </div>
  75. </div>
  76. </div>
  77. <div class="channel_2_box" v-if="companyData.length > 1">
  78. <div class="channel_head_box clearfix">
  79. <div class="channel_head_box_left">
  80. <div class="channel_head_left_a_btn">
  81. <NuxtLink class="channel_head_left_a channel_head_left_a_only"
  82. :href="getLinkPath(companyData[1])" v-if="companyData[1]"
  83. :title="companyData[1].alias">
  84. {{ companyData[1].alias }}
  85. </NuxtLink>
  86. </div>
  87. </div>
  88. <div class="channel_head_box_right">
  89. <!-- <NuxtLink class="channel_head_box_right_1_a" :href="getLinkPath(companyData[1])"
  90. v-if="companyData[1]" :title="companyData[1].alias">
  91. 栏目简介
  92. </NuxtLink> -->
  93. </div>
  94. </div>
  95. <div class=" clearfix">
  96. <div class="channel_even_img_ul_2 clearfix" v-if="companyData[1]">
  97. <div class="channel_even_img_ul_2_li" v-for="item in companyData[1].data">
  98. <NuxtLink class="channel_even_img_ul_2_a" :href="getLinkPathDetail(item)"
  99. :title="item.title" :key="item.id" :target="item.islink == 1 ? '_blank' : '_self'">
  100. <img class="channel_even_img_ul_2_li_img" :src="item.imgurl" alt="item.title">
  101. <div class="channel_even_img_ul_2_dot1 dot1">{{ item.title }}</div>
  102. </NuxtLink>
  103. </div>
  104. </div>
  105. <div class="channel_ul_3 clearfix" v-if="companyData[1]">
  106. <NuxtLink class="channel_ul_3_a dot1" :href="getLinkPathDetail(item)" :title="item.title"
  107. v-for="item in companyData[1].data2" :key="item.id"
  108. :target="item.islink == 1 ? '_blank' : '_self'">
  109. {{ item.title }}
  110. </NuxtLink>
  111. </div>
  112. </div>
  113. </div>
  114. </section>
  115. <div class="phone_box_1 pc_none" v-if="companyData[0]">
  116. <div class="phone_box_head">
  117. <NuxtLink
  118. class=""
  119. :href="getLinkPath(companyData[0])">
  120. {{ companyData[0].alias }}
  121. </NuxtLink>
  122. </div>
  123. <div class="phone_box_img_ul">
  124. <div class="" >
  125. <NuxtLink class=""
  126. :href="getLinkPathDetail(item)"
  127. v-for="item in companyData[0].data.slice(0, 1)"
  128. :key="item.id"
  129. :target="item.islink == 1 ? '_blank' : '_self'">
  130. <img class=" " :src="item.imgurl" alt="item.imgurl">
  131. <span class=" ">
  132. {{ item.title }}
  133. </span>
  134. </NuxtLink>
  135. </div>
  136. </div>
  137. <div class="phone_box_ul">
  138. <div class="">
  139. <NuxtLink class=""
  140. v-for="item in companyData[0].data3.slice(0, 3)"
  141. :href="getLinkPathDetail(item)"
  142. :key="item.id"
  143. :target="item.islink == 1 ? '_blank' : '_self'">
  144. {{ item.title }}
  145. </NuxtLink>
  146. </div>
  147. </div>
  148. </div>
  149. <div class="phone_box_2 pc_none" v-if="companyData[1]">
  150. <div class="phone_box_head">
  151. <NuxtLink
  152. class=""
  153. :href="getLinkPath(companyData[1])">
  154. {{ companyData[1].alias }}
  155. </NuxtLink>
  156. </div>
  157. <div class="phone_box_img_ul">
  158. <div class="" >
  159. <NuxtLink class=""
  160. :href="getLinkPathDetail(item)"
  161. v-for="item in companyData[1].data.slice(0, 1)"
  162. :key="item.id"
  163. :target="item.islink == 1 ? '_blank' : '_self'">
  164. <img class=" " :src="item.imgurl" alt="item.imgurl">
  165. <span class=" ">
  166. {{ item.title }}
  167. </span>
  168. </NuxtLink>
  169. </div>
  170. </div>
  171. <div class="phone_box_ul">
  172. <div class="">
  173. <NuxtLink class=""
  174. v-for="item in companyData[1].data2.slice(0, 3)"
  175. :href="getLinkPathDetail(item)"
  176. :key="item.id"
  177. :target="item.islink == 1 ? '_blank' : '_self'">
  178. {{ item.title }}
  179. </NuxtLink>
  180. </div>
  181. </div>
  182. </div>
  183. <section class="channel_3 clearfix phone_none">
  184. <div class="channel_1_box" v-if="companyData.length > 2">
  185. <div class="channel_head_box clearfix">
  186. <div class="channel_head_box_left">
  187. <div class="channel_head_left_a_btn">
  188. <NuxtLink class="channel_head_left_a channel_head_left_a_only"
  189. :href="getLinkPath(companyData[2])" v-if="companyData[2]"
  190. :title="companyData[2].alias">
  191. {{ companyData[2].alias }}
  192. </NuxtLink>
  193. </div>
  194. </div>
  195. <div class="channel_head_box_right">
  196. <!-- <NuxtLink class="channel_head_box_right_1_a" :href="getLinkPath(companyData[2])"
  197. v-if="companyData[2]" :title="companyData[2].alias">
  198. 栏目简介
  199. </NuxtLink> -->
  200. </div>
  201. </div>
  202. <div class=" clearfix">
  203. <div class="channel_ul_4 clearfix" v-if="companyData[2]">
  204. <NuxtLink class="channel_ul_4_a dot1" :href="getLinkPathDetail(item)" :title="item.title"
  205. v-for="item in companyData[2].data2" :key="item.id"
  206. :target="item.islink == 1 ? '_blank' : '_self'">
  207. {{ item.title }}
  208. </NuxtLink>
  209. </div>
  210. </div>
  211. </div>
  212. <div class="channel_2_box" v-if="companyData.length > 3">
  213. <div class="channel_head_box clearfix">
  214. <div class="channel_head_box_left">
  215. <div class="channel_head_left_a_btn">
  216. <NuxtLink class="channel_head_left_a channel_head_left_a_only"
  217. :href="getLinkPath(companyData[3])" v-if="companyData[3]"
  218. :title="companyData[3].alias">
  219. {{ companyData[3].alias }}
  220. </NuxtLink>
  221. </div>
  222. </div>
  223. <div class="channel_head_box_right">
  224. <!-- <NuxtLink class="channel_head_box_right_1_a" :href="getLinkPath(companyData[3])"
  225. v-if="companyData[3]" :title="companyData[3].alias">
  226. 栏目简介
  227. </NuxtLink> -->
  228. </div>
  229. </div>
  230. <div class="channel_img_ul_2">
  231. <div class="channel_img_ul_2_li" v-if="companyData[3]">
  232. <NuxtLink class="channel_img_ul_2_li_a" :href="getLinkPathDetail(item)" :title="item.title"
  233. v-for="item in companyData[3].data" :key="item.id"
  234. :target="item.islink == 1 ? '_blank' : '_self'">
  235. <img class="channel_img_ul_2_li_img" :src="item.imgurl" alt="item.imgurl">
  236. <div class="channel_img_ul_2_li_dot2 dot2">{{ item.title }}</div>
  237. </NuxtLink>
  238. </div>
  239. </div>
  240. </div>
  241. </section>
  242. <div class="phone_box_3 pc_none" v-if="companyData[2]">
  243. <div class="phone_box_head">
  244. <NuxtLink
  245. class=""
  246. :href="getLinkPath(companyData[2])">
  247. {{ companyData[2].alias }}
  248. </NuxtLink>
  249. </div>
  250. <div class="phone_box_ul">
  251. <div class="">
  252. <NuxtLink class=""
  253. :href="getLinkPathDetail(item)"
  254. v-for="item in companyData[2].data2.slice(0, 3)"
  255. :key="item.id"
  256. :target="item.islink == 1 ? '_blank' : '_self'">
  257. {{ item.title }}
  258. </NuxtLink>
  259. </div>
  260. </div>
  261. </div>
  262. <div class="phone_box_4 pc_none" v-if="companyData[3]">
  263. <div class="phone_box_head">
  264. <NuxtLink
  265. class=""
  266. :href="getLinkPath(companyData[3])">
  267. {{ companyData[3].alias }}
  268. </NuxtLink>
  269. </div>
  270. <div class="phone_box_img_ul">
  271. <div class="" >
  272. <NuxtLink class=""
  273. :href="getLinkPathDetail(item)"
  274. v-for="item in companyData[3].data.slice(0, 1)"
  275. :key="item.id"
  276. :target="item.islink == 1 ? '_blank' : '_self'">
  277. <img class=" " :src="item.imgurl" alt="item.imgurl">
  278. <span class=" ">
  279. {{ item.title }}
  280. </span>
  281. </NuxtLink>
  282. </div>
  283. </div>
  284. </div>
  285. <!-- 广告 2-->
  286. <HomeAdvertising :imgurl="adImg2"></HomeAdvertising>
  287. <section class="channel_4 clearfix phone_none">
  288. <div class="channel_1_box" v-if="companyData.length > 6">
  289. <div class="channel_head_box clearfix" v-if="companyData.length > 4">
  290. <div class="channel_head_box_left">
  291. <div class="channel_head_left_a_btn">
  292. <NuxtLink class="channel_head_left_a channel_head_left_a_only"
  293. :href="getLinkPath(companyData[4])" v-if="companyData[4]"
  294. :title="companyData[4].alias">
  295. {{ companyData[4].alias }}
  296. </NuxtLink>
  297. </div>
  298. </div>
  299. <div class="channel_head_box_right">
  300. <!-- <NuxtLink class="channel_head_box_right_1_a" :href="getLinkPath(companyData[4])"
  301. v-if="companyData[4]" :title="companyData[4].alias">
  302. 栏目简介
  303. </NuxtLink> -->
  304. </div>
  305. </div>
  306. <div class=" clearfix" v-if="companyData.length > 4">
  307. <div class="channel_3_box clearfix">
  308. <div class="channel_img_ul_3_ul boxheight2">
  309. <div class="channel_img_ul_3_li" v-if="companyData[4]">
  310. <NuxtLink class="channel_img_ul_3_li_a" :href="getLinkPathDetail(item)"
  311. :title="item.title" v-for="item in companyData[4].data" :key="item.id"
  312. :target="item.islink == 1 ? '_blank' : '_self'">
  313. <img class="channel_img_ul_3_li_img" :src="item.imgurl" alt="item.title">
  314. <div class="channel_img_ul_3_li_dot1 dot1">
  315. {{ item.title }}
  316. </div>
  317. </NuxtLink>
  318. </div>
  319. </div>
  320. </div>
  321. <div class="channel_4_box clearfix">
  322. <div class="channel_ul_5 clearfix" v-if="companyData[4]">
  323. <NuxtLink class="channel_ul_5_a dot1" :href="getLinkPathDetail(item)"
  324. :title="item.title" v-for="item in companyData[4].data2" :key="item.id"
  325. :target="item.islink == 1 ? '_blank' : '_self'">
  326. {{ item.title }}
  327. </NuxtLink>
  328. </div>
  329. </div>
  330. </div>
  331. <div class="channel_head_box clearfix channel_head_box_2" v-if="companyData.length > 5">
  332. <div class="channel_head_box_left">
  333. <div class="channel_head_left_a_btn">
  334. <NuxtLink class="channel_head_left_a channel_head_left_a_only"
  335. :href="getLinkPath(companyData[5])" v-if="companyData[5]"
  336. :title="companyData[5].alias">
  337. {{ companyData[5].alias }}
  338. </NuxtLink>
  339. </div>
  340. </div>
  341. <div class="channel_head_box_right">
  342. <!-- <NuxtLink class="channel_head_box_right_1_a" :href="getLinkPath(companyData[5])"
  343. v-if="companyData[5]" :title="companyData[5].alias">
  344. 栏目简介
  345. </NuxtLink> -->
  346. </div>
  347. </div>
  348. <div class=" clearfix" v-if="companyData.length > 5">
  349. <div class="channel_3_box clearfix">
  350. <div class="channel_img_ul_4_ul">
  351. <div class="channel_img_ul_4_li" v-if="companyData[5]">
  352. <NuxtLink class="channel_img_ul_4_li_a" :href="getLinkPathDetail(item)"
  353. :title="item.title" v-for="item in companyData[5].data" :key="item.id"
  354. :target="item.islink == 1 ? '_blank' : '_self'">
  355. <img class="channel_img_ul_4_li_img" :src="item.imgurl" alt="item.title">
  356. <div class="channel_img_ul_4_li_dot1 dot1">
  357. {{ item.title }}
  358. </div>
  359. </NuxtLink>
  360. </div>
  361. </div>
  362. </div>
  363. <div class="channel_4_box clearfix">
  364. <div class="channel_ul_6 clearfix" v-if="companyData[5]">
  365. <NuxtLink class="channel_ul_6_a dot1" :href="getLinkPathDetail(item)"
  366. :title="item.title" v-for="item in companyData[5].data2" :key="item.id"
  367. :target="item.islink == 1 ? '_blank' : '_self'">
  368. {{ item.title }}
  369. </NuxtLink>
  370. </div>
  371. </div>
  372. </div>
  373. </div>
  374. <div class="channel_2_box" v-if="companyData.length > 6">
  375. <div class="channel_head_box clearfix">
  376. <div class="channel_head_box_left">
  377. <div class="channel_head_left_a_btn">
  378. <NuxtLink class="channel_head_left_a channel_head_left_a_only"
  379. :href="getLinkPath(companyData[6])" v-if="companyData[6]"
  380. :title="companyData[6].alias">
  381. {{ companyData[6].alias }}
  382. </NuxtLink>
  383. </div>
  384. </div>
  385. <div class="channel_head_box_right">
  386. <!-- <NuxtLink class="channel_head_box_right_1_a" :href="getLinkPath(companyData[6])"
  387. v-if="companyData[6]" :title="companyData[6].alias">
  388. 栏目简介
  389. </NuxtLink> -->
  390. </div>
  391. </div>
  392. <div class="boxheight1 clearfix">
  393. <div class="channel_img_ul_5_ul">
  394. <div class="channel_img_ul_5_li">
  395. <NuxtLink class="channel_img_ul_5_li_a" :href="getLinkPathDetail(item)"
  396. :title="item.title" v-for="item in companyData[6].data" :key="item.id"
  397. :target="item.islink == 1 ? '_blank' : '_self'">
  398. <img class="channel_img_ul_5_li_img" :src="item.imgurl" alt="item.title">
  399. <div class="channel_img_ul_5_li_dot1 dot1">{{ item.title }} </div>
  400. </NuxtLink>
  401. </div>
  402. </div>
  403. <div class="index_ul_7 clearfix">
  404. <NuxtLink class="index_ul_7_a dot1" :href="getLinkPathDetail(item)" :title="item.title"
  405. v-for="item in companyData[6].data2" :key="item.id"
  406. :target="item.islink == 1 ? '_blank' : '_self'">
  407. {{ item.title }}
  408. </NuxtLink>
  409. </div>
  410. </div>
  411. </div>
  412. </section>
  413. </main>
  414. <!-- 页脚部分 -->
  415. <HomeFoot1></HomeFoot1>
  416. </div>
  417. </template>
  418. <script setup>
  419. //0.加载页面依赖 start ---------------------------------------->
  420. import { ref, onMounted } from 'vue';
  421. import { ElMessage } from 'element-plus';
  422. //0.加载页面依赖 end ---------------------------------------->
  423. //1.获得路由id start ---------------------------------------->
  424. const targetSegment = getRoutePath(1);
  425. //1.1 获得当前的路由id
  426. let routeId;
  427. //通过导航路径反向查询导航id
  428. const getRouteId = await requestDataPromise('/web/getWebsiteRoute', {
  429. method: 'GET',
  430. query: {
  431. 'pinyin': targetSegment,
  432. },
  433. });
  434. console.log('mkdataRouteId', getRouteId);
  435. if (getRouteId.code == 200) {
  436. routeId = getRouteId.data.category_id
  437. console.log('mkdataRouteId1111', routeId);
  438. } else {
  439. console.log("获得路由id出错!", getRouteId.message)
  440. }
  441. //1.获得路由id end ---------------------------------------->
  442. //2.选项卡 start ---------------------------------------->
  443. let showTabs = ref(1)
  444. let qhtabs = function (number) {
  445. console.log(number)
  446. showTabs.value = number
  447. }
  448. //2.选项卡 end ---------------------------------------->
  449. //3.广告 start ---------------------------------------->
  450. let adImg1 = ref({})
  451. let adImg2 = ref({})
  452. let adImg3 = ref({})
  453. let adImg4 = ref({})
  454. onMounted(async () => {
  455. //从客户端获取行政职能部门 加快打开速度
  456. const { $webUrl, $CwebUrl } = useNuxtApp();
  457. //广告1
  458. let url = `${$webUrl}/web/getWebsiteAdvertisement?ad_tag=nzgxw_category_0001`
  459. const responseAd1 = await fetch(url, {
  460. headers: {
  461. 'Content-Type': 'application/json',
  462. 'Userurl': $CwebUrl,
  463. 'Origin': $CwebUrl
  464. }
  465. });
  466. const resultAd1 = await responseAd1.json();
  467. adImg1.value = resultAd1.data[0];
  468. //广告2
  469. let url2 = `${$webUrl}/web/getWebsiteAdvertisement?ad_tag=nzgxw_category_0002`
  470. const responseAd2 = await fetch(url2, {
  471. headers: {
  472. 'Content-Type': 'application/json',
  473. 'Userurl': $CwebUrl,
  474. 'Origin': $CwebUrl
  475. }
  476. });
  477. const resultAd2 = await responseAd2.json();
  478. adImg2.value = resultAd2.data[0];
  479. //广告3
  480. let url3 = `${$webUrl}/web/getWebsiteAdvertisement?ad_tag=nzgxw_category_0003`
  481. const responseAd3 = await fetch(url3, {
  482. headers: {
  483. 'Content-Type': 'application/json',
  484. 'Userurl': $CwebUrl,
  485. 'Origin': $CwebUrl
  486. }
  487. });
  488. const resultAd3 = await responseAd3.json();
  489. adImg3.value = resultAd3.data[0];
  490. //广告4
  491. let url4 = `${$webUrl}/web/getWebsiteAdvertisement?ad_tag=nzgxw_category_0004`
  492. const responseAd4 = await fetch(url4, {
  493. headers: {
  494. 'Content-Type': 'application/json',
  495. 'Userurl': $CwebUrl,
  496. 'Origin': $CwebUrl
  497. }
  498. });
  499. const resultAd4 = await responseAd4.json();
  500. adImg4.value = resultAd4.data[0];
  501. })
  502. //3.广告 end ---------------------------------------->
  503. //4.页面数据 start ---------------------------------------->
  504. const pageData = ref([
  505. //示例:
  506. // {
  507. // id: 1,
  508. // title: "", //该导航的标题
  509. // data: [], //数据1
  510. // data1: [], //数据2
  511. // data2: [], //数据3
  512. // data3: [], //数据4
  513. // data4: [], //数据5
  514. // category_id1: "", //子导航id1
  515. // category_id2: "",
  516. // category_id3: "",
  517. // category_id4: "",
  518. // title1: "", //子导航标题1
  519. // title2: "",
  520. // title3: "",
  521. // title4: "",
  522. // cid: "" //该导航的id
  523. // },
  524. ])
  525. const companyData = ref([])
  526. const newsData = ref([])
  527. //4.1 获取所有导航
  528. try {
  529. const navigateData = await requestDataPromise('/web/getWebsiteModelCategory', {
  530. method: 'GET',
  531. query: {
  532. 'placeid': 1,
  533. 'pid': routeId,
  534. 'num': 20
  535. },
  536. });
  537. if (navigateData.code == 200) {
  538. // 遍历可用的导航池放到页面中
  539. for (let index in navigateData.data) {
  540. let data = {
  541. title: navigateData.data[index].name,
  542. cid: navigateData.data[index].category_id,
  543. children_count: navigateData.data[index].children_count,
  544. alias: navigateData.data[index].alias,
  545. aLIas_pinyin: targetSegment + "/" + navigateData.data[index].aLIas_pinyin,
  546. type: navigateData.data[index].type,
  547. data: [],
  548. data1: [],
  549. data2: [],
  550. data3: [],
  551. data4: [],
  552. category_id1: "",
  553. category_id2: "",
  554. category_id3: "",
  555. category_id4: "",
  556. title1: "",
  557. title2: "",
  558. title3: "",
  559. title4: ""
  560. };
  561. if (navigateData.data[index].is_url == 1) {
  562. // 处理 URL 的逻辑
  563. } else {
  564. if (navigateData.data[index].type == 1) {
  565. newsData.value.push(data);
  566. } else if (navigateData.data[index].type == 6) {
  567. companyData.value.push(data);
  568. }
  569. // companyData.value.push(data);
  570. //每个页面最多8个模块
  571. pageData.value.push(data);
  572. }
  573. }
  574. console.log("mkdata导航池加载完毕", companyData.value);
  575. //导航池加载完毕,开始申请模块数据
  576. let getJson = []
  577. for (let i = 0; i < companyData.value.length; i++) {
  578. if (i == 0) {
  579. getJson.push({ "id": companyData.value[i].cid + ",3,11" });//模块2
  580. } else if (i == 1) {
  581. getJson.push({ "id": companyData.value[i].cid + ",2,7" });//模块3
  582. } else if (i == 2) {
  583. getJson.push({ "id": companyData.value[i].cid + ",0,8" });//模块4
  584. } else if (i == 3) {
  585. getJson.push({ "id": companyData.value[i].cid + ",1,0" });//模块5
  586. } else if (i == 4) {
  587. getJson.push({ "id": companyData.value[i].cid + ",1,6" });//模块6
  588. } else if (i == 5) {
  589. getJson.push({ "id": companyData.value[i].cid + ",1,6" });//模块7
  590. } else if (i == 6) {
  591. getJson.push({ "id": companyData.value[i].cid + ",1,7" });//模块8
  592. }
  593. }
  594. let jsonString = JSON.stringify(getJson);
  595. getPageAllData(jsonString);
  596. let getnewsJson = []
  597. if (newsData.value.length > 0) {
  598. for (let i = 0; i < newsData.value.length; i++) {
  599. if (i == 0) {
  600. getnewsJson.push({ "parent": routeId + ",0,0", "child": pageData.value[i].cid + ",4,9" });//模块1
  601. }
  602. }
  603. let newsJsonString = JSON.stringify(getnewsJson);
  604. getPageNewsData(newsJsonString);
  605. }
  606. } else {
  607. console.log("错误:渲染8个模块环节出错,请检查是否存在没有数据的模块!")
  608. }
  609. } catch (error) {
  610. console.log("错误:导航池渲染执行接口出错!请检查频道页渲染的模块数据是否完整!")
  611. }
  612. async function getPageAllData(jsonString) {
  613. const mkdata = await requestDataPromise('/web/getWebsiteCompany', {
  614. method: 'GET',
  615. query: {
  616. 'id': jsonString
  617. },
  618. });
  619. console.log('mkdata', mkdata.data.length);
  620. if (mkdata.code == 200) {
  621. // if (mkdata.data.length > 0) {
  622. // //模块1 顶部大图和列表
  623. // companyData.value[0].data = mkdata.data[0].img_num;
  624. // companyData.value[0].data2 = mkdata.data[0].text_num;
  625. // }
  626. if (mkdata.data.length > 0) {
  627. //模块2
  628. companyData.value[0].data3 = mkdata.data[0].text_num;
  629. for (let index in mkdata.data[0].img_num) {
  630. if (index < 1) {
  631. companyData.value[0].data.push(mkdata.data[0].img_num[index]);
  632. } else {
  633. companyData.value[0].data2.push(mkdata.data[0].img_num[index]);
  634. }
  635. }
  636. }
  637. if (mkdata.data.length >= 1) {
  638. //模块3
  639. companyData.value[1].data = mkdata.data[1].img_num;
  640. companyData.value[1].data2 = mkdata.data[1].text_num;
  641. }
  642. if (mkdata.data.length >= 2) {
  643. //模块4
  644. companyData.value[2].data = mkdata.data[2].img_num;
  645. companyData.value[2].data2 = mkdata.data[2].text_num;
  646. }
  647. if (mkdata.data.length >= 4) {
  648. //模块5
  649. companyData.value[3].data = mkdata.data[3].img_num;
  650. }
  651. if (mkdata.data.length >= 5) {
  652. //模块6
  653. companyData.value[4].data = mkdata.data[4].img_num;
  654. companyData.value[4].data2 = mkdata.data[4].text_num;
  655. }
  656. if (mkdata.data.length >= 6) {
  657. //模块7
  658. companyData.value[5].data = mkdata.data[5].img_num;
  659. companyData.value[5].data2 = mkdata.data[5].text_num;
  660. }
  661. if (mkdata.data.length >= 7) {
  662. //模块8
  663. companyData.value[6].data = mkdata.data[6].img_num;
  664. companyData.value[6].data2 = mkdata.data[6].text_num;
  665. }
  666. } else {
  667. ElMessage.error(mkdata.message)
  668. }
  669. }
  670. async function getPageNewsData(newsJsonString) {
  671. const mkdata = await requestDataPromise('/web/getWebsiteAllArticle', {
  672. method: 'GET',
  673. query: {
  674. 'id': newsJsonString
  675. },
  676. });
  677. console.log('mkdata__news', mkdata.data);
  678. if (mkdata.code == 200) {
  679. if (mkdata.data.length > 0) {
  680. //模块1 顶部大图和列表
  681. newsData.value[0].data = mkdata.data[0].child.imgnum;
  682. newsData.value[0].data2 = mkdata.data[0].child.textnum;
  683. }
  684. } else {
  685. ElMessage.error(mkdata.message)
  686. }
  687. }
  688. //4.页面数据 end ---------------------------------------->
  689. //5.设置seo信息 start---------------------------------------->
  690. const setData = await requestDataPromise('/web/getWebsiteCategoryHead', {
  691. method: 'GET',
  692. query: {
  693. 'catid': routeId
  694. },
  695. });
  696. if (setData.code == 200) {
  697. let seoTitle = setData.data.seo_title;
  698. let seoDescription = setData.data.seo_description;
  699. let seoKeywords = setData.data.seo_keywords;
  700. let seoSuffix = setData.data.suffix;
  701. let seoName = setData.data.website_name;
  702. useSeoMeta({
  703. title: seoTitle + "_" + seoName + "_" + seoSuffix,
  704. meta: [
  705. { name: 'keywords', content: seoKeywords + "_" + seoName + "_" + seoSuffix, tagPriority: 10 },
  706. { name: 'description', content: seoDescription + "_" + seoName + "_" + seoSuffix, tagPriority: 10 },
  707. { name: 'viewport', content: 'width=device-width,initial-scale=1,user-scalable=no',tagPriority: 10 }
  708. ]
  709. });
  710. } else {
  711. console.log("设置频道页SEO出错!", setData.message)
  712. }
  713. //5.设置seo信息 end---------------------------------------->
  714. </script>
  715. <style lang="less" scoped>
  716. @import '@/assets/css/class.less';
  717. </style>
  718. <style lang="less" scoped>
  719. @media screen and (min-width:801px){/*pc*/
  720. .pc_none{display:none;}
  721. }
  722. @media screen and (max-width:800px){/*ipad_phone*/
  723. .index_main{width:100%;}
  724. .index_main:nth-last-of-type(1){margin-bottom:30px;}
  725. .phone_box_1{
  726. width:92%;margin:0px auto 0px;
  727. .phone_box_head{
  728. height:50px;line-height:50px;
  729. background:#fff;border-bottom:1px solid #E6E6E6;
  730. width:100%;
  731. a{
  732. float:left;height:50px;line-height:50px;margin:0;position:relative;
  733. color:#a91b33;font-size:18px; font-weight:bold;box-sizing:border-box;
  734. position:relative;padding-left:8px;
  735. }
  736. a::before{
  737. content: '';display: block;
  738. position:absolute;left:0px;top:15px;
  739. background:#a91b33;
  740. width:3px;height:20px;
  741. }
  742. }
  743. .phone_box_img_ul{
  744. height:55vw;overflow:hidden;margin-top:15px;
  745. div{width:100%;float:none;height:55vw;border-radius:10px;position:relative;overflow:hidden;}
  746. a{display:block;width:100%;height:100%;}
  747. img{display:block;width:100%;height:100%;}
  748. span{
  749. position:absolute;width:100%;height:66px;line-height:90px;color:#fff; font-size:16px;
  750. left:0px;bottom:0px;padding:0px 5%;box-sizing:border-box; display:block;
  751. background:linear-gradient(to bottom, rgba(0, 0, 0, 0), rgba(0, 0, 0, .5));
  752. word-break: keep-all; white-space: nowrap;overflow:hidden;text-overflow:ellipsis;
  753. }
  754. >div:nth-of-type(n+2){display:none;}
  755. }
  756. .phone_box_ul{
  757. overflow:hidden;height:123px;margin-top:15px;
  758. >div{width:100%;height:100%;}
  759. a{
  760. width:100%!important;display:block;height:40px;line-height:40px;
  761. border-bottom:1px solid #E6E6E6;display:block;position:relative;
  762. word-break: keep-all; white-space: nowrap;overflow:hidden;text-overflow:ellipsis;
  763. font-size:16px;color:#333;text-indent:18px;
  764. }
  765. a::after{
  766. content: '';display: block;
  767. position:absolute;left:0px;top:18px;background:#E6E6E6;
  768. width:6px;height:6px;
  769. }
  770. a:nth-of-type(n+6){display:none;}
  771. }
  772. }
  773. .phone_box_2{
  774. width:92%;margin:0px auto 0px;
  775. .phone_box_head{
  776. height:50px;line-height:50px;
  777. background:#fff;border-bottom:1px solid #E6E6E6;
  778. margin-top:15px;width:100%;
  779. a{
  780. float:left;height:50px;line-height:50px;margin:0;position:relative;
  781. color:#a91b33;font-size:18px; font-weight:bold;box-sizing:border-box;
  782. position:relative;padding-left:8px;
  783. }
  784. a::before{
  785. content: '';display: block;
  786. position:absolute;left:0px;top:15px;
  787. background:#a91b33;
  788. width:3px;height:20px;
  789. }
  790. }
  791. .phone_box_img_ul{
  792. height:55vw;overflow:hidden;margin-top:15px;
  793. div{width:100%;float:none;height:55vw;border-radius:10px;position:relative;overflow:hidden;}
  794. a{display:block;width:100%;height:100%;}
  795. img{display:block;width:100%;height:100%;}
  796. span{
  797. position:absolute;width:100%;height:66px;line-height:90px;color:#fff; font-size:16px;
  798. left:0px;bottom:0px;padding:0px 5%;box-sizing:border-box; display:block;
  799. background:linear-gradient(to bottom, rgba(0, 0, 0, 0), rgba(0, 0, 0, .5));
  800. word-break: keep-all; white-space: nowrap;overflow:hidden;text-overflow:ellipsis;
  801. }
  802. >div:nth-of-type(n+2){display:none;}
  803. }
  804. .phone_box_ul{
  805. overflow:hidden;height:123px;margin-top:15px;
  806. >div{width:100%;height:100%;}
  807. a{
  808. width:100%!important;display:block;height:40px;line-height:40px;
  809. border-bottom:1px solid #E6E6E6;display:block;position:relative;
  810. word-break: keep-all; white-space: nowrap;overflow:hidden;text-overflow:ellipsis;
  811. font-size:16px;color:#333;text-indent:18px;
  812. }
  813. a::after{
  814. content: '';display: block;
  815. position:absolute;left:0px;top:18px;background:#E6E6E6;
  816. width:6px;height:6px;
  817. }
  818. a:nth-of-type(n+6){display:none;}
  819. }
  820. }
  821. .phone_box_3{
  822. width:92%;margin:0px auto 0px;
  823. .phone_box_head{
  824. height:50px;line-height:50px;
  825. background:#fff;border-bottom:1px solid #E6E6E6;
  826. margin-top:15px;width:100%;
  827. a{
  828. float:left;height:50px;line-height:50px;margin:0;position:relative;
  829. color:#a91b33;font-size:18px; font-weight:bold;box-sizing:border-box;
  830. position:relative;padding-left:8px;
  831. }
  832. a::before{
  833. content: '';display: block;
  834. position:absolute;left:0px;top:15px;
  835. background:#a91b33;
  836. width:3px;height:20px;
  837. }
  838. }
  839. .phone_box_ul{
  840. overflow:hidden;height:123px;margin-top:8px;
  841. >div{width:100%;height:100%;}
  842. a{
  843. width:100%!important;display:block;height:40px;line-height:40px;
  844. border-bottom:1px solid #E6E6E6;display:block;position:relative;
  845. word-break: keep-all; white-space: nowrap;overflow:hidden;text-overflow:ellipsis;
  846. font-size:16px;color:#333;text-indent:18px;
  847. }
  848. a::after{
  849. content: '';display: block;
  850. position:absolute;left:0px;top:18px;background:#E6E6E6;
  851. width:6px;height:6px;
  852. }
  853. a:nth-of-type(n+6){display:none;}
  854. }
  855. }
  856. .phone_box_4{
  857. width:92%;margin:0px auto 0px;
  858. .phone_box_head{
  859. height:50px;line-height:50px;
  860. background:#fff;border-bottom:1px solid #E6E6E6;
  861. margin-top:15px;width:100%;
  862. a{
  863. float:left;height:50px;line-height:50px;margin:0;position:relative;
  864. color:#a91b33;font-size:18px; font-weight:bold;box-sizing:border-box;
  865. position:relative;padding-left:8px;
  866. }
  867. a::before{
  868. content: '';display: block;
  869. position:absolute;left:0px;top:15px;
  870. background:#a91b33;
  871. width:3px;height:20px;
  872. }
  873. }
  874. .phone_box_img_ul{
  875. height:55vw;overflow:hidden;margin-top:15px;
  876. div{width:100%;float:none;height:55vw;border-radius:10px;position:relative;overflow:hidden;}
  877. a{display:block;width:100%;height:100%;}
  878. img{display:block;width:100%;height:100%;}
  879. span{
  880. position:absolute;width:100%;height:66px;line-height:90px;color:#fff; font-size:16px;
  881. left:0px;bottom:0px;padding:0px 5%;box-sizing:border-box; display:block;
  882. background:linear-gradient(to bottom, rgba(0, 0, 0, 0), rgba(0, 0, 0, .5));
  883. word-break: keep-all; white-space: nowrap;overflow:hidden;text-overflow:ellipsis;
  884. }
  885. >div:nth-of-type(n+2){display:none;}
  886. }
  887. }
  888. .phone_none{display:none;}
  889. }
  890. </style>