index.vue 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555
  1. <template>
  2. <!-- 头部 -->
  3. <templateHead></templateHead>
  4. <!-- 菜单 -->
  5. <templateMenu></templateMenu>
  6. <!-- 内容 -->
  7. <div>
  8. <!-- <div>当前皮肤:{{ skinId }}</div> -->
  9. <!--广告组件-->
  10. <templateAd :adTag="'nmw_index_0001'" :skinId="skinId" :adData="adData"></templateAd>
  11. <!--头条-->
  12. <templateHeadline :skinId="skinId" :templateData="testTemplateData"></templateHeadline>
  13. <!-- <HomeAdvertising :imgurl="adImg1"></HomeAdvertising> -->
  14. <!--头条-->
  15. <!-- <HomePageMessage></HomePageMessage> -->
  16. <!-- 第一部分 -->
  17. <!-- <div class="part1">
  18. <div class="inner">
  19. <div class="part1_left">
  20. <div class="hengxian">
  21. <em></em>
  22. </div>
  23. <div class="part1_left_title">
  24. <img src="../public/index/nav01.png" alt="">
  25. <NuxtLink class="active" v-if="pageData[0].cid" :href="getLinkPath(pageData[0])"
  26. :title="pageData[0].alias">
  27. {{ pageData[0].alias }}
  28. </NuxtLink>
  29. </div>
  30. <div class="part1_left_content">
  31. <div class="part1_left_content1">
  32. <div class="part1_left_photo">
  33. <div class="part1_left_photo11" v-for="item in boxData1" :key="index">
  34. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
  35. :target="item.islink == 1 ? '_blank' : '_self'">
  36. <img :src="item.imgurl" :alt="item.title">
  37. <div class="left_content">
  38. {{ item.title }}
  39. </div>
  40. </NuxtLink>
  41. </div>
  42. </div>
  43. <ul class="part1_left_context">
  44. <li class="part1_left_contextList" v-for="item in boxData1data2" :key="index">
  45. {{ item.title }}
  46. </li>
  47. </ul>
  48. </div>
  49. <div class="part1_left_content2">
  50. <ul class="part1_left_context222">
  51. <li class="part1_left_contextList222" v-for="item in boxData1data3" :key="index">
  52. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
  53. :target="item.islink == 1 ? '_blank' : '_self'">
  54. {{ item.title }}
  55. </NuxtLink>
  56. </li>
  57. </ul>
  58. <ul class="part1_left_context222">
  59. <li class="part1_left_contextList222" v-for="item in boxData1data4" :key="index">
  60. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
  61. :target="item.islink == 1 ? '_blank' : '_self'">
  62. {{ item.title }}
  63. </NuxtLink>
  64. </li>
  65. </ul>
  66. </div>
  67. </div>
  68. </div>
  69. <div class="part1_right">
  70. <div class="part1_right_title">
  71. <NuxtLink :class="{ 'part1_right_titlelist': true, 'active': hoverStatus == 1 }"
  72. @mouseenter="qhPic(1)" v-if="pageData[1].cid" :href="getLinkPath(pageData[1])"
  73. :title="pageData[1].alias">
  74. {{ pageData[1].alias }}
  75. </NuxtLink>
  76. <NuxtLink :class="{ 'part1_right_titlelist': true, 'active': hoverStatus == 2 }"
  77. @mouseenter="qhPic(2)" v-if="pageData[2].cid" :href="getLinkPath(pageData[2])"
  78. :title="pageData[2].alias">
  79. {{ pageData[2].alias }}
  80. </NuxtLink>
  81. </div>
  82. <div v-if="hoverStatus == 1">
  83. <div class="part1_right_photo_text">
  84. <div v-for="item in boxData2" :key="index">
  85. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
  86. :target="item.islink == 1 ? '_blank' : '_self'">
  87. <img :src="item.imgurl" :alt="item.title">
  88. <div class="part1_right_text">
  89. {{ item.title }}
  90. </div>
  91. </NuxtLink>
  92. </div>
  93. </div>
  94. <ul class="part1_right_content">
  95. <li class="part1_right_contentList" v-for="item in boxData2data2" :key="index">
  96. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
  97. :target="item.islink == 1 ? '_blank' : '_self'">
  98. <em></em>
  99. {{ item.title }}
  100. </NuxtLink>
  101. </li>
  102. </ul>
  103. </div>
  104. <div v-if="hoverStatus == 2">
  105. <div class="part1_right_photo_text">
  106. <div v-for="item in boxData3" :key="index">
  107. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
  108. :target="item.islink == 1 ? '_blank' : '_self'">
  109. <img :src="item.imgurl" :alt="item.title">
  110. <div class="part1_right_text">
  111. {{ item.title }}
  112. </div>
  113. </NuxtLink>
  114. </div>
  115. </div>
  116. <ul class="part1_right_content">
  117. <li class="part1_right_contentList" v-for="item in boxData3data2" :key="index">
  118. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
  119. :target="item.islink == 1 ? '_blank' : '_self'">
  120. <em></em>
  121. {{ item.title }}
  122. </NuxtLink>
  123. </li>
  124. </ul>
  125. </div>
  126. </div>
  127. </div>
  128. </div> -->
  129. <!-- 广告位 2 -->
  130. <!-- <HomeAdvertising :imgurl="adImg2"></HomeAdvertising> -->
  131. <!-- 第二部分 -->
  132. <!-- <div class="part2">
  133. <div class="inner">
  134. <div class="part2_left">
  135. <div class="part2_hengxian">
  136. <em></em>
  137. </div>
  138. <div class="part2_left_title">
  139. <img src="../public/index/nav02.png" alt="">
  140. <NuxtLink class="active" v-if="pageData[3].cid" :href="getLinkPath(pageData[3])"
  141. :title="pageData[3].alias">
  142. {{ pageData[3].alias }}
  143. </NuxtLink>
  144. </div>
  145. <div class="part2_left_content1">
  146. <ul class="part2_left_content111">
  147. <li class="part2_left_content1_list" v-for="item in boxData4" :key="index">
  148. <NuxtLink :href="getLinkPath1(item)" :title="item.title"
  149. :target="item.islink == 1 ? '_blank' : '_self'">
  150. <span class="nav2_title">{{ item.alias }}</span>
  151. </NuxtLink>
  152. <NuxtLink :href="getLinkPathDetail1(item)" :title="item.title"
  153. :target="item.islink == 1 ? '_blank' : '_self'">
  154. <span class="nav2_title_content">
  155. {{ item.title }}
  156. </span>
  157. </NuxtLink>
  158. </li>
  159. </ul>
  160. </div>
  161. <ul class="part2_left_content2">
  162. <li class="part2_left_content2list" v-for="item in boxData4data2" :key="index">
  163. <NuxtLink :href="getLinkPathDetail1(item)" :title="item.title"
  164. :target="item.islink == 1 ? '_blank' : '_self'">
  165. <img :src="item.imgurl" :alt="item.title" class="part2_left_content222img">
  166. <div class="content2_text">
  167. <span class="content2_text_content">
  168. {{ item.title }}
  169. </span>
  170. <NuxtLink :href="getLinkPath1(item)" :title="item.title"
  171. :target="item.islink == 1 ? '_blank' : '_self'">
  172. <span class="content2_text_title">{{ item.alias }}</span>
  173. </NuxtLink>
  174. </div>
  175. </NuxtLink>
  176. </li>
  177. <div class="adlogo3" v-if="adImg3">
  178. <a href="http://sannongdy.org.cn/" v-if="adImg3.image_url == null" target="_blank"
  179. :title="adImg3.place_name">
  180. <img :src="adImg3.thumb" :alt="adImg3.place_name" data-tag="imgurl.ad_tag">
  181. </a>
  182. <a :href="adImg3.image_url" v-else :title="adImg3.ad_name">
  183. <img :src="adImg3.image_src" :alt="adImg3.ad_name" data-tag="imgurl.ad_tag">
  184. </a>
  185. </div>
  186. </ul>
  187. </div>
  188. <div class="part2_right">
  189. <div class="part2_right_title">
  190. <NuxtLink v-if="pageData[4].cid" :href="getLinkPath(pageData[4])" :title="pageData[4].alias">
  191. {{ pageData[4].alias }}
  192. </NuxtLink>
  193. </div>
  194. <ul class="part2_right_content">
  195. <li class="part2_right_contentList" v-for="(item, index) in boxData5" :key="index">
  196. <span class="listNumber">{{ index + 1 }}</span>
  197. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
  198. :target="item.islink == 1 ? '_blank' : '_self'">
  199. {{ item.title }}
  200. </NuxtLink>
  201. </li>
  202. </ul>
  203. </div>
  204. </div>
  205. </div> -->
  206. <!-- 第三部分 -->
  207. <!-- <div class="part3">
  208. <div class="inner">
  209. <div class="part3_left">
  210. <div class="part3_hengxian">
  211. <em></em>
  212. </div>
  213. <div class="part3_left_title">
  214. <img src="../public/index/nav03.png" alt="">
  215. <NuxtLink class="active" v-if="pageData[5].cid" :href="getLinkPath(pageData[5])"
  216. :title="pageData[5].alias">
  217. {{ pageData[5].alias }}
  218. </NuxtLink>
  219. </div>
  220. <div class="part3_left_content">
  221. <div class="part3_left_content1">
  222. <div class="part3_left_content1_photo1">
  223. <div v-for="item in boxData6" :key="index">
  224. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
  225. :target="item.islink == 1 ? '_blank' : '_self'">
  226. <img :src="item.imgurl" :alt="item.title">
  227. <div class="part3_left_content1_text">
  228. {{ item.title }}
  229. </div>
  230. </NuxtLink>
  231. </div>
  232. </div>
  233. <div class="part3_left_content1_photo2">
  234. <div class="part3_left_content1_photo2list" v-for="item in boxData6data2" :key="index">
  235. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
  236. :target="item.islink == 1 ? '_blank' : '_self'">
  237. <img :src="item.imgurl" :alt="item.title">
  238. <div class="part3_left_content1_text">
  239. {{ item.title }}
  240. </div>
  241. </NuxtLink>
  242. </div>
  243. </div>
  244. </div>
  245. <div class="part3_left_content2">
  246. <ul class="part3_left_content2_text">
  247. <li class="part3_left_content2_list" v-for="item in boxData6data3" :key="index">
  248. <NuxtLink :href="getLinkPath1(item)" :title="item.title"
  249. :target="item.islink == 1 ? '_blank' : '_self'">
  250. <span class="nav3_title">{{ item.alias }}</span>
  251. </NuxtLink>
  252. <NuxtLink :href="getLinkPathDetail1(item)" :title="item.title"
  253. :target="item.islink == 1 ? '_blank' : '_self'">
  254. <span class="nav3_title_content">
  255. {{ item.title }}
  256. </span>
  257. </NuxtLink>
  258. </li>
  259. </ul>
  260. <ul class="part3_left_content2_text">
  261. <li class="part3_left_content2_list" v-for="item in boxData6data4" :key="index">
  262. <NuxtLink :href="getLinkPath1(item)" :title="item.title"
  263. :target="item.islink == 1 ? '_blank' : '_self'">
  264. <span class="nav3_title">{{ item.alias }}</span>
  265. </NuxtLink>
  266. <NuxtLink :href="getLinkPathDetail1(item)" :title="item.title"
  267. :target="item.islink == 1 ? '_blank' : '_self'">
  268. <span class="nav3_title_content">
  269. {{ item.title }}
  270. </span>
  271. </NuxtLink>
  272. </li>
  273. </ul>
  274. </div>
  275. </div>
  276. </div>
  277. <div class="part3_right">
  278. <div class="part3_right_title">
  279. <NuxtLink class="active" v-if="pageData[6].cid" :href="getLinkPath(pageData[6])"
  280. :title="pageData[6].alias">
  281. {{ pageData[6].alias }}
  282. </NuxtLink>
  283. </div>
  284. <div class="part3_right_content">
  285. <div class="right_photo_text" v-for="item in boxData7" :key="index">
  286. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
  287. :target="item.islink == 1 ? '_blank' : '_self'">
  288. <img :src="item.imgurl" :alt="item.title">
  289. <div class="right_text">
  290. {{ item.title }}
  291. </div>
  292. </NuxtLink>
  293. </div>
  294. <ul class="rightcontent_text">
  295. <li class="rightcontent_textlist" v-for="item in boxData7data3" :key="index">
  296. <em></em>
  297. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
  298. :target="item.islink == 1 ? '_blank' : '_self'">
  299. {{ item.title }}
  300. </NuxtLink>
  301. </li>
  302. </ul>
  303. <div class="right_photo_text" v-for="item in boxData7data2" :key="index">
  304. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
  305. :target="item.islink == 1 ? '_blank' : '_self'">
  306. <img :src="item.imgurl" :alt="item.title">
  307. <div class="right_text">
  308. {{ item.title }}
  309. </div>
  310. </NuxtLink>
  311. </div>
  312. <ul class="rightcontent_text">
  313. <li class="rightcontent_textlist" v-for="item in boxData7data4" :key="index">
  314. <em></em>
  315. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
  316. :target="item.islink == 1 ? '_blank' : '_self'">
  317. {{ item.title }}
  318. </NuxtLink>
  319. </li>
  320. </ul>
  321. </div>
  322. </div>
  323. </div>
  324. </div> -->
  325. <!-- <HomeAdvertising :imgurl="adImg4"></HomeAdvertising> -->
  326. <!-- 第四部分 -->
  327. <!-- <div class="part4">
  328. <div class="inner">
  329. <div class="part4_one">
  330. <div class="part4_title">
  331. <div class="part4_hengxian">
  332. <em></em>
  333. </div>
  334. <div class="part4_left_title">
  335. <img src="../public/index/nav03.png" alt="">
  336. <NuxtLink class="active" v-if="pageData[7].cid" :href="getLinkPath(pageData[7])"
  337. :title="pageData[7].alias">
  338. {{ pageData[7].alias }}
  339. </NuxtLink>
  340. </div>
  341. </div>
  342. <div class="part4_photo_text">
  343. <div v-for="item in boxData8" :key="index">
  344. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
  345. :target="item.islink == 1 ? '_blank' : '_self'">
  346. <img :src="item.imgurl" :alt="item.title">
  347. <span class="text">{{ item.title }}</span>
  348. </NuxtLink>
  349. </div>
  350. </div>
  351. <ul class="part4_photo_content">
  352. <li class="part4_photo_contentlist" v-for="item in boxData8data2" :key="index">
  353. <NuxtLink :href="getLinkPath1(item)" :title="item.title"
  354. :target="item.islink == 1 ? '_blank' : '_self'">
  355. <span class="nav11_title">{{ item.alias }}</span>
  356. </NuxtLink>
  357. <NuxtLink :href="getLinkPathDetail1(item)" :title="item.title"
  358. :target="item.islink == 1 ? '_blank' : '_self'">
  359. <span class="nav11_title_content">
  360. {{ item.title }}
  361. </span>
  362. </NuxtLink>
  363. </li>
  364. </ul>
  365. </div>
  366. <div class="part4_one">
  367. <div class="part4_title">
  368. <div class="part4_hengxian">
  369. <em></em>
  370. </div>
  371. <div class="part4_left_title">
  372. <img src="../public/index/nav03.png" alt="">
  373. <NuxtLink class="active" v-if="pageData[8].cid" :href="getLinkPath(pageData[8])"
  374. :title="pageData[8].alias">
  375. {{ pageData[8].alias }}
  376. </NuxtLink>
  377. </div>
  378. </div>
  379. <div class="part4_photo_text">
  380. <div v-for="item in boxData9" :key="index">
  381. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
  382. :target="item.islink == 1 ? '_blank' : '_self'">
  383. <img :src="item.imgurl" :alt="item.title">
  384. <span class="text">{{ item.title }}</span>
  385. </NuxtLink>
  386. </div>
  387. </div>
  388. <ul class="part4_photo_content">
  389. <li class="part4_photo_contentlist" v-for="item in boxData9data2" :key="index">
  390. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
  391. :target="item.islink == 1 ? '_blank' : '_self'">
  392. <span class="nav11_title_content2">
  393. {{ item.title }}
  394. </span>
  395. </NuxtLink>
  396. </li>
  397. </ul>
  398. </div>
  399. <div class="part4_one">
  400. <div class="part4_title">
  401. <div class="part4_hengxian">
  402. <em></em>
  403. </div>
  404. <div class="part4_left_title">
  405. <img src="../public/index/nav03.png" alt="">
  406. <NuxtLink class="active" v-if="pageData[9].cid" :href="getLinkPath(pageData[9])"
  407. :title="pageData[9].alias">
  408. {{ pageData[9].alias }}
  409. </NuxtLink>
  410. </div>
  411. </div>
  412. <div class="part4_photo_text">
  413. <div v-for="item in boxData10" :key="index">
  414. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
  415. :target="item.islink == 1 ? '_blank' : '_self'">
  416. <img :src="item.imgurl" :alt="item.title">
  417. <span class="text">{{ item.title }}</span>
  418. </NuxtLink>
  419. </div>
  420. </div>
  421. <ul class="part4_photo_content">
  422. <li class="part4_photo_contentlist" v-for="item in boxData10data2" :key="index">
  423. <NuxtLink :href="getLinkPathDetail(item)" :title="item.title"
  424. :target="item.islink == 1 ? '_blank' : '_self'">
  425. <span class="nav11_title_content2">
  426. {{ item.title }}
  427. </span>
  428. </NuxtLink>
  429. </li>
  430. </ul>
  431. </div>
  432. </div>
  433. </div> -->
  434. </div>
  435. <!-- 底部 -->
  436. <templateFoot></templateFoot>
  437. </template>
  438. <script setup>
  439. //0.加载全局模板组件 start---------------------------------------->
  440. //0.1 全局通栏
  441. import templateHead from '@/components/template/sector/head/1200x200/1.vue'
  442. import templateMenu from '@/components/template/sector/menu/1200x130/1.vue'
  443. import templateFoot from '@/components/template/sector/foot/1200x580/1.vue'
  444. //0.2 局部通栏
  445. //0.2.1 广告组件
  446. import templateAd from '@/components/template/sector/body/ad/1200x90/1.vue'
  447. //0.2.2 网站头条
  448. import templateHeadline from '@/components/template/sector/body/index/headline/1200x140/1.vue'
  449. //0.加载全局模板组件 end---------------------------------------->
  450. //1.获得基本信息单元 start---------------------------------------->
  451. //1.1获得页面依赖
  452. import { ref, onMounted } from 'vue';
  453. import { ElMessage } from 'element-plus';
  454. //1.2获得pinia源
  455. import { useTemplateBaseStore } from '@/stores/templateBase'
  456. const templateBaseStore = useTemplateBaseStore()
  457. //1.3获得该页的皮肤id - 在每个组件中也是同样的获得方法
  458. const skinId = ref("")
  459. //1.4获得站点基本信息
  460. const responseStatus = await requestDataPromise('/web/getWebsiteAllinfo', {
  461. method: 'GET',
  462. query: {
  463. 'link_textnum':24,
  464. 'link_imgnum':18,
  465. 'link_footnum':4
  466. },
  467. });
  468. if (responseStatus.code == 200) {
  469. //0.3.1设置站点基本信息
  470. templateBaseStore.setWebSiteInfo(responseStatus.data)
  471. //0.3.2设置皮肤id
  472. skinId.value = templateBaseStore.webSiteInfo.website_foot.foot_info.template_id;
  473. //0.3.3设置seo信息
  474. let seoTitle = templateBaseStore.webSiteInfo.website_head.title;
  475. let seoDescription = templateBaseStore.webSiteInfo.website_head.description;
  476. let seoKeywords = templateBaseStore.webSiteInfo.website_head.keywords;
  477. let seoSuffix = templateBaseStore.webSiteInfo.website_head.suffix;
  478. let seoName = templateBaseStore.webSiteInfo.website_head.website_name;
  479. useSeoMeta({
  480. title: seoTitle + "_" + seoSuffix,
  481. meta: [
  482. { name: 'keywords', content: seoKeywords + "_" + seoName + "_" + seoSuffix, tagPriority: 10 },
  483. { name: 'description', content: seoDescription + "_" + seoName + "_" + seoSuffix, tagPriority: 10 }
  484. ]
  485. });
  486. }
  487. //1.5获得广告池
  488. const adData = ref([]);
  489. const adResponseStatus = await requestDataPromise('/web/getWebsiteAdvertisement', {
  490. method: 'GET',
  491. query: {},
  492. });
  493. if (adResponseStatus.code == 200) {
  494. //console.log(responseStatus.data)
  495. templateBaseStore.setAdList(adResponseStatus.data)
  496. adData.value = adResponseStatus.data;
  497. //获取广告
  498. //adImg.value = requestAd(templateBaseStore.webAdList,templateBaseStore.webSiteInfo.website_head.ad_key + "_" + "top")
  499. }
  500. //1.获得基本信息单元 end---------------------------------------->
  501. //2.页面数据 start---------------------------------------->
  502. //2.0 测试数据 后期移除
  503. const testTemplateData = {
  504. "sectorName": "text",
  505. "componentList": [
  506. {
  507. "component_type": 1,//1=新闻 2=广告
  508. "component_style": 1,//样式
  509. "sort": 1,//组件位置
  510. "data": {
  511. "text": [
  512. {
  513. "id": 50079,
  514. "title": "以生态为内核推动文旅发展海南深山黎寨找到乡村振兴金钥匙",
  515. "islink": 0,
  516. "pinyin": "sannongtansuo/jiaodianfangtan"
  517. },
  518. {
  519. "id": 50136,
  520. "title": "以生态为内核推动文旅发展海南深山黎寨找到乡村振兴金钥匙",
  521. "islink": 0,
  522. "pinyin": "sannongzhichuang"
  523. },
  524. {
  525. "id": 50137,
  526. "title": "以生态为内核推动文旅发展海南深山黎寨找到乡村振兴金钥匙",
  527. "islink": 0,
  528. "pinyin": "sannongzhichuang"
  529. },
  530. {
  531. "id": 50138,
  532. "title": "以生态为内核推动文旅发展海南深山黎寨找到乡村振兴金钥匙",
  533. "islink": 0,
  534. "pinyin": "sannongzhichuang"
  535. }
  536. ],
  537. }
  538. }
  539. ],
  540. }
  541. //2.页面数据 end---------------------------------------->
  542. </script>
  543. <style lang="less" scoped>
  544. @import url('@/assets/css/index.less');
  545. </style>