list.vue 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356
  1. <template>
  2. <!-- 企业列表 company -->
  3. <main class="index_main" v-if="routeType == 6">
  4. <!-- 三农市场网-商城-资讯分类页 1-->
  5. <section class="index_1 clearfix">
  6. <div class="shop_head_1 clearfix">
  7. <div class="shop_head_1_name">{{ parent_name }}</div>
  8. </div>
  9. <div class="categ_color_box clearfix">
  10. <div class="categ_color_name clearfix">直达:</div>
  11. <div class="categ_color_in clearfix">
  12. <NuxtLink class="categ_color_a" :href="`/${item.aLIas_pinyin}/list-1.html`" :title="item.title"
  13. v-for="(item, index) in companyData" :key="index"
  14. :class="{ categ_color_a_only: navCid == item.cid }">
  15. {{ item.alias }}
  16. </NuxtLink>
  17. </div>
  18. </div>
  19. </section>
  20. <!-- 三农市场网-商城-资讯分类页2 -->
  21. <!-- 三农市场网-商城-资讯列表 1-->
  22. <section class="clearfix">
  23. <div class="info_1_left">
  24. <div class="breadcrumb">
  25. <div class="inner">
  26. <span class="location">当前位置 :</span>
  27. <el-breadcrumb :separator-icon="ArrowRight">
  28. <el-breadcrumb-item>
  29. <NuxtLink to="/">首页</NuxtLink>
  30. </el-breadcrumb-item>
  31. <el-breadcrumb-item v-if="p_parent_name != ''">
  32. <NuxtLink :to="`/${targetSegment}/index.html`"> {{ p_parent_name }}</NuxtLink>
  33. </el-breadcrumb-item>
  34. <el-breadcrumb-item v-if="parent_name != ''">
  35. <NuxtLink :to="`/${targetSegment}/${targetSegment1}/index.html`"> {{ parent_name }}
  36. </NuxtLink>
  37. </el-breadcrumb-item>
  38. <el-breadcrumb-item>{{ navTitle }}</el-breadcrumb-item>
  39. </el-breadcrumb>
  40. </div>
  41. </div>
  42. <div class="info_ul_1 clearfix">
  43. <div class="info_li_1 clearfix" v-for="(item, index) in newsList" :key="index">
  44. <NuxtLink class="info_li_1_a dot1" :href="`/${item.pinyin}/${item.id}.html`" title="">
  45. {{ item.title }}
  46. </NuxtLink>
  47. <time class="info_li_1_time">{{ getTime(item.updated_at, 'month', 1) }}</time>
  48. </div>
  49. <div class="empty" v-if="newsList == false">
  50. <img src="@/public/topic/empty.png" alt="" class="empty_img">
  51. <span class="empty_text">当前暂无数据</span>
  52. </div>
  53. </div>
  54. <!-- 分页器 -->
  55. <div class="pagination" v-if="newstotal">
  56. <el-pagination background layout="prev, pager, next" :total="newstotal" :page-size="pageSize_news"
  57. prev-text="上一页" next-text="下一页" @current-change="changePage" />
  58. </div>
  59. </div>
  60. <aside class="info_1_aside">
  61. <DetailHotNews></DetailHotNews>
  62. <DetailHotNews2></DetailHotNews2>
  63. </aside>
  64. </section>
  65. </main>
  66. </template>
  67. <script setup>
  68. //0.加载页面依赖 start ---------------------------------------->
  69. import { ref, onMounted } from 'vue';
  70. import { ElMessage, ElBreadcrumb, ElBreadcrumbItem, ElPagination } from 'element-plus';
  71. import { ArrowRight } from '@element-plus/icons-vue'
  72. import { NuxtLink } from '#components';
  73. //0.加载页面依赖 end ---------------------------------------->
  74. //1.获得路由id start ---------------------------------------->
  75. const targetSegment = getRoutePath(1);
  76. const targetSegment1 = getRoutePath(2);
  77. const targetSegment2 = getRoutePath(3);
  78. //1.1 获得当前的路由id
  79. let routeId;
  80. let routeType;
  81. let navTitle = ref('')//二级导航标题
  82. let navCid = ref('')//二级导航id
  83. //通过导航路径反向查询导航id
  84. const getRouteId = await requestDataPromise('/web/getWebsiteRoute', {
  85. method: 'GET',
  86. query: {
  87. 'pinyin': targetSegment2,
  88. },
  89. });
  90. console.log("getRouteId", getRouteId);
  91. if (getRouteId.code == 200) {
  92. navTitle.value = getRouteId.data.alias
  93. navCid.value = getRouteId.data.category_id
  94. } else {
  95. console.log("获得路由id出错!", getRouteId.message)
  96. }
  97. //1.2 获取二级栏目
  98. let parent_name = ref('');//父级名称
  99. let parent_id = ref('');//父级id
  100. let parent_pinyin = ref('');//父级拼音
  101. const getRoutePName = await requestDataPromise('/web/getWebsiteRoute', {
  102. method: 'GET',
  103. query: {
  104. 'pinyin': targetSegment1,
  105. },
  106. });
  107. console.log("getRoutePName", getRoutePName);
  108. if (getRoutePName.code == 200) {
  109. routeId = getRoutePName.data.category_id
  110. parent_id.value = getRoutePName.data.category_id
  111. parent_name.value = getRoutePName.data.alias
  112. routeType = getRoutePName.data.type
  113. } else {
  114. console.log("获得路由id出错!", getRoutePName.message)
  115. }
  116. //1.3 获取一级栏目
  117. let p_parent_name = ref('');//父级名称
  118. let p_parent_id = ref('');//父级id
  119. let p_parent_pinyin = ref('');//父级拼音
  120. const getRoutePName_parent = await requestDataPromise('/web/getWebsiteRoute', {
  121. method: 'GET',
  122. query: {
  123. 'pinyin': targetSegment,
  124. },
  125. });
  126. console.log("getRoutePName_parent", getRoutePName_parent);
  127. if (getRoutePName_parent.code == 200) {
  128. p_parent_id.value = getRoutePName_parent.data.category_id
  129. p_parent_name.value = getRoutePName_parent.data.alias
  130. // p_parent_pinyin.value = getRoutePName_parent.data.aLIas_pinyin
  131. } else {
  132. console.log("获得路由id出错!", getRoutePName_parent.message)
  133. }
  134. //1.4 获取某个栏目
  135. const getParentId = await requestDataPromise('/web/getOneWebsiteCategory', {
  136. method: 'GET',
  137. query: {
  138. 'catid': parent_id.value,
  139. },
  140. });
  141. console.log("getParentId", getParentId);
  142. if (getParentId.code == 200) {
  143. parent_pinyin.value = getParentId.data.aLIas_pinyin
  144. } else {
  145. console.log("获得路由id出错!", getParentId.message)
  146. }
  147. //1.获得路由id end ---------------------------------------->
  148. //2.选项卡 start ---------------------------------------->
  149. let showTabs = ref(1)
  150. let qhtabs = function (number) {
  151. console.log(number)
  152. showTabs.value = number
  153. }
  154. //2.选项卡 end ---------------------------------------->
  155. //3.广告 start ---------------------------------------->
  156. let adImg1 = ref({})
  157. let adImg2 = ref({})
  158. onMounted(async () => {
  159. //从客户端获取行政职能部门 加快打开速度
  160. const { $webUrl, $CwebUrl } = useNuxtApp();
  161. //广告1
  162. let url = `${$webUrl}/web/getWebsiteAdvertisement?ad_tag=snscw_list_0001`
  163. const responseAd1 = await fetch(url, {
  164. headers: {
  165. 'Content-Type': 'application/json',
  166. 'Userurl': $CwebUrl,
  167. 'Origin': $CwebUrl
  168. }
  169. });
  170. const resultAd1 = await responseAd1.json();
  171. adImg1.value = resultAd1.data[0];
  172. //广告2
  173. let url2 = `${$webUrl}/web/getWebsiteAdvertisement?ad_tag=snscw_list_0002`
  174. const responseAd2 = await fetch(url2, {
  175. headers: {
  176. 'Content-Type': 'application/json',
  177. 'Userurl': $CwebUrl,
  178. 'Origin': $CwebUrl
  179. }
  180. });
  181. const resultAd2 = await responseAd2.json();
  182. adImg2.value = resultAd2.data[0];
  183. })
  184. //3.广告 end ---------------------------------------->
  185. //4.页面数据 start ---------------------------------------->
  186. const pageData = ref([
  187. //示例:
  188. // {
  189. // id: 1,
  190. // title: "", //该导航的标题
  191. // data: [], //数据1
  192. // data1: [], //数据2
  193. // data2: [], //数据3
  194. // data3: [], //数据4
  195. // data4: [], //数据5
  196. // category_id1: "", //子导航id1
  197. // category_id2: "",
  198. // category_id3: "",
  199. // category_id4: "",
  200. // title1: "", //子导航标题1
  201. // title2: "",
  202. // title3: "",
  203. // title4: "",
  204. // cid: "" //该导航的id
  205. // },
  206. ])
  207. const companyData = ref([])
  208. //4.1 获取所有导航
  209. try {
  210. const navigateData = await requestDataPromise('/web/getWebsiteModelCategory', {
  211. method: 'GET',
  212. query: {
  213. 'placeid': 1,
  214. 'pid': routeId,
  215. 'num': 8,
  216. 'type': 1
  217. },
  218. });
  219. // console.log('获取三级导航1111111', navigateData);
  220. if (navigateData.code == 200) {
  221. // 遍历可用的导航池放到页面中
  222. for (let index in navigateData.data) {
  223. let data = {
  224. title: navigateData.data[index].name,
  225. cid: navigateData.data[index].category_id,
  226. children_count: navigateData.data[index].children_count,
  227. alias: navigateData.data[index].alias,
  228. aLIas_pinyin: targetSegment + "/" + targetSegment1 + "/" + navigateData.data[index].aLIas_pinyin,
  229. type: navigateData.data[index].type,
  230. // data: [],
  231. // data1: [],
  232. // data2: [],
  233. // data3: [],
  234. // data4: [],
  235. // category_id1: "",
  236. // category_id2: "",
  237. // category_id3: "",
  238. // category_id4: "",
  239. // title1: "",
  240. // title2: "",
  241. // title3: "",
  242. // title4: ""
  243. };
  244. if (navigateData.data[index].is_url == 1) {
  245. // 处理 URL 的逻辑
  246. } else {
  247. if (navigateData.data[index].type == 6) {
  248. companyData.value.push(data);
  249. }
  250. //每个页面最多8个模块
  251. pageData.value.push(data);
  252. }
  253. }
  254. // console.log('获取三级导航pageData', pageData.value);
  255. // console.log('获取三级导航company', companyData.value);
  256. } else {
  257. console.log("错误:渲染8个模块环节出错,请检查是否存在没有数据的模块!")
  258. }
  259. } catch (error) {
  260. console.log("错误:导航池渲染执行接口出错!请检查频道页渲染的模块数据是否完整!")
  261. }
  262. // 获取企业数据列表 start--------------------------------------->
  263. const newsList = ref()
  264. const page_news = ref(1)
  265. const pageSize_news = ref(20)
  266. const newstotal = ref('')
  267. const getNewsList = await requestDataPromise('/web/getWebsiteCompanyList', {
  268. method: 'GET',
  269. query: {
  270. 'page': page_news.value,
  271. 'pageSize': pageSize_news.value,
  272. 'category_id': navCid.value,
  273. },
  274. });
  275. console.log("获取企业列表company", getNewsList.data);
  276. if (getNewsList.code == 200) {
  277. newsList.value = getNewsList.data.data
  278. newstotal.value = getNewsList.data.count
  279. }
  280. // 获取企业数据 end----------------------------------------->
  281. //4.页面数据 end ---------------------------------------->
  282. //5.设置seo信息 start---------------------------------------->
  283. const setData = await requestDataPromise('/web/getWebsiteCategoryHead', {
  284. method: 'GET',
  285. query: {
  286. 'catid': navCid.value
  287. },
  288. });
  289. if (setData.code == 200) {
  290. let seoTitle = setData.data.seo_title;
  291. let seoDescription = setData.data.seo_description;
  292. let seoKeywords = setData.data.seo_keywords;
  293. let seoSuffix = setData.data.suffix;
  294. let seoName = setData.data.website_name;
  295. useSeoMeta({
  296. title: seoTitle + "_" + seoSuffix,
  297. meta: [
  298. { name: 'keywords', content: seoKeywords + "_" + seoName + "_" + seoSuffix, tagPriority: 10 },
  299. { name: 'description', content: seoDescription + "_" + seoName + "_" + seoSuffix, tagPriority: 10 }
  300. ]
  301. });
  302. } else {
  303. console.log("设置频道页SEO出错!", setData.message)
  304. }
  305. //5.设置seo信息 end---------------------------------------->
  306. </script>
  307. <style lang="less" scoped>
  308. @import url("@/assets/css/shop/newsList.less");
  309. @import url("@/assets/css/shop/goodsList.less");
  310. .empty {
  311. width: 100%;
  312. height: 300px;
  313. line-height: 300px;
  314. text-align: center;
  315. }
  316. .empty_img {
  317. vertical-align: -30px;
  318. margin-right: 20px;
  319. }
  320. .empty_text {
  321. font-size: 26px;
  322. color: #999;
  323. }
  324. .pagination {
  325. height: 100px;
  326. margin-top: 20px;
  327. }
  328. .pagination1 {
  329. height: 100px;
  330. margin-top: 20px;
  331. }
  332. </style>