dealSeoFooter.js 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. export default class DealSeoData {
  2. constructor({ $axios, req, app, redirect }) {
  3. this.$axios = $axios
  4. this.req = req
  5. this.app = app
  6. this.redirect = redirect
  7. this.selected = {
  8. city: 0,
  9. industry: 0,
  10. techType: 0,
  11. }
  12. this.page = {
  13. page: 1,
  14. size: 10,
  15. total: 0
  16. }
  17. this.finished = false
  18. this.dataList = []
  19. this.provinces = []
  20. }
  21. async dealData() {
  22. let { name, path, params, fullPath } = this.app.context.route
  23. let res = await this.$axios.get('/api/kaifawu/get_options')
  24. const { cities, industries, tech_types } = res.data.data || {}
  25. let typeList = { city: cities, industry: industries, techType: tech_types }
  26. this.typeList = typeList
  27. //查找中文
  28. let match = params.pathMatch || ''
  29. let list = match.split('/').map(item => item.toLocaleLowerCase())
  30. list.length = Math.min(list.length, 3) //防止url超出
  31. let keys = Object.keys(typeList)
  32. //3 * 3 * n的循环 n < 100
  33. list.forEach(item => {
  34. keys.forEach(keys => {
  35. typeList[ keys ].forEach(typeItem => {
  36. if (typeItem.slug === item) {
  37. this.selected[ keys ] = typeItem.id
  38. this.selected[ keys + 'Name' ] = typeItem.name
  39. }
  40. })
  41. })
  42. })
  43. return {
  44. footer: await this.getFooterData(),
  45. }
  46. }
  47. async getFooterData() {
  48. //设置底部link列表
  49. const typeList = this.typeList
  50. const { city, industry, techType, cityName = "", industryName = "", techTypeName = "", proviceName } = this.selected
  51. const { headers: { host } } = this.req
  52. let footer = {
  53. baseLink: "", link: [
  54. { name: "", data: [] }, { name: "", data: [] },
  55. ],
  56. }
  57. //设置baseLink
  58. if (host.indexOf('local') !== -1) {
  59. footer.baseLink = 'http://' + host
  60. } else {
  61. footer.baseLink = 'https://' + host
  62. }
  63. if (city && !industry && !techType) {
  64. //只有城市的
  65. footer.link[ 0 ].name = "热门城市技术解决方案"
  66. footer.link[ 1 ].name = `${cityName}技术解决方案`
  67. footer.link[ 0 ].data = typeList.city.map((item) => {
  68. return { name: `${item.name}技术解决方案`, url: `/kaifain/${item.slug}/` }
  69. })
  70. footer.link[ 1 ].data = typeList.industry.map((item) => {
  71. return { name: `${cityName}${item.name}技术解决方案`, url: `/kaifain/${city}/${item.slug}/` }
  72. })
  73. } else if (!city && industry && !techType) {
  74. //只有行业的
  75. footer.link[ 0 ].name = "其它行业领域技术解决方案"
  76. footer.link[ 1 ].name = `热门城市${industryName}技术解决方案`
  77. footer.link[ 0 ].data = typeList.industry.map((item) => {
  78. return { name: `${item.name}技术解决方案`, url: `/kaifain/${item.slug}/` }
  79. })
  80. footer.link[ 1 ].data = typeList.city.map((item) => {
  81. return { name: `${item.name}${industryName}技术解决方案`, url: `/kaifain/${item.slug}/${industry}/` }
  82. })
  83. } else if (!city && !industry && techType) {
  84. //只有技术分类
  85. footer.link[ 0 ].name = `其他行业领域${techTypeName}技术解决方案`
  86. footer.link[ 1 ].name = `热门城市${techTypeName}技术解决方案`
  87. footer.link[ 0 ].data = typeList.industry.map((item) => {
  88. return { name: `${item.name}${techTypeName}技术解决方案`, url: `/kaifain/${item.slug}/${techType}/` }
  89. })
  90. footer.link[ 1 ].data = typeList.city.map((item) => {
  91. return { name: `${item.name}${techTypeName}技术解决方案`, url: `/kaifain/${techType}/${item.slug}/` }
  92. })
  93. } else if (city && industry && !techType) {
  94. //${cityName}${industryName}
  95. footer.link[ 0 ].name = `热门城市技术解决方案`
  96. footer.link[ 1 ].name = `其他行业领域技术解决方案`
  97. footer.link[ 0 ].data = typeList.city.map((item) => {
  98. return { name: `${item.name}技术解决方案`, url: `/kaifain/${item.slug}/` }
  99. })
  100. footer.link[ 1 ].data = typeList.industry.map((item) => {
  101. return { name: `${item.name}技术解决方案`, url: `/kaifain/${item.slug}/` }
  102. })
  103. } else if (city && !industry && techType) {
  104. //${cityName}${techTypeName}
  105. footer.link[ 0 ].name = `热门城市技术解决方案`
  106. footer.link[ 1 ].name = `其他行业领域技术解决方案`
  107. footer.link[ 0 ].data = typeList.city.map((item) => {
  108. return { name: `${item.name}技术解决方案`, url: `/kaifain/${item.slug}/` }
  109. })
  110. footer.link[ 1 ].data = typeList.industry.map((item) => {
  111. return { name: `${item.name}技术解决方案`, url: `/kaifain/${item.slug}/` }
  112. })
  113. } else if (!city && industry && techType) {
  114. //${industryName}${techTypeName}
  115. footer.link[ 0 ].name = `其他行业领域技术解决方案`
  116. footer.link[ 1 ].name = `其他行业技术分类${industryName}技术解决方案`
  117. footer.link[ 0 ].data = typeList.industry.map((item) => {
  118. return { name: `${item.name}技术解决方案`, url: `/kaifain/${item.slug}/` }
  119. })
  120. footer.link[ 1 ].data = typeList.techType.map((item) => {
  121. return { name: `${industryName}${item.name}技术解决方案`, url: `/kaifain/${industry}/${item.slug}/` }
  122. })
  123. } else {
  124. //非特定的url
  125. footer.link[ 0 ].name = "热门城市技术解决方案"
  126. footer.link[ 1 ].name = "行业领域技术解决方案"
  127. footer.link[ 0 ].data = typeList.city.map((item) => {
  128. return { name: `${item.name}技术解决方案`, url: `/kaifain/${item.slug}/` }
  129. })
  130. footer.link[ 1 ].data = typeList.industry.map((item) => {
  131. return { name: `${item.name}技术解决方案`, url: `/kaifain/${item.slug}/` }
  132. })
  133. }
  134. return footer
  135. }
  136. }