dealSeoFooter.js 5.8 KB

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