index.ts 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199
  1. import { createStore } from 'vuex'
  2. import { getMenu, getPageContent } from '@/api/index'
  3. export const store = createStore({
  4. state:{
  5. menuList:[],//菜单列表
  6. pageContent:[],//页面主体内容(不包含banner)
  7. recomMendation:[],//推荐内容
  8. currentPagePath:'',//当前页名称
  9. acitveId:0,//客户案例类型切换活动id
  10. sub:0,//当前页下标
  11. columnTypes:[],//页面下属类型
  12. scrollUp:{ //返回顶部
  13. opacity:0,
  14. visibility:"hidden",
  15. scrollTo:0
  16. },
  17. route:{},//跳转数据
  18. //分页数据
  19. pagination:{
  20. total:0,
  21. size:10,
  22. count:1
  23. },
  24. meta:{
  25. title:undefined,keywords:undefined,description:undefined
  26. },
  27. dialogPersonalStatus:false//弹框状态
  28. },
  29. mutations:{
  30. //菜单列表
  31. setMenuList(state:any,data:any){
  32. state.menuList = data
  33. return state.menuList
  34. },
  35. //页面主体内容
  36. setPageData(state:any,data:any){
  37. state.pageContent = data.records
  38. state.pagination.total = data.total
  39. return state.pageContent,state.pagination
  40. },
  41. //
  42. setCurrentPagePathOrSub(state:any,data:any){
  43. state.currentPagePath = data.index
  44. state.sub = data.sub
  45. return state.index,state.sub
  46. },
  47. //子页面活动状态
  48. setAcitveId(state:any,data:object){
  49. state.acitveId = data
  50. return state.acitveId
  51. },
  52. //推荐内容
  53. setRecomMendation(state:any,data:object){
  54. state.recomMendation = data
  55. return state.recomMendation
  56. },
  57. //设置弹框状态
  58. setDialogPersonalStatus(state:any,data:string){
  59. state.dialogPersonalStatus = data
  60. return state.dialogPersonalStatus
  61. },
  62. //设置页面下属类型
  63. setColumnTypes(state:any,data:string){
  64. state.columnTypes = data
  65. return state.columnTypes
  66. },
  67. //设置跳转路由参数
  68. setRoute(state:any,data:string){
  69. state.route = data
  70. return state.route
  71. },
  72. //设置meta
  73. setMeta(state:any,data:string){
  74. state.meta = data
  75. return state.meta
  76. },
  77. },
  78. actions:{
  79. getMenuList({ commit } :any,params:any){
  80. return new Promise(resolve=>{
  81. getMenu().then((res:any)=>{
  82. let data = []
  83. //映射路由地址兼容旧版本
  84. for(let i=0;i<res.data.length;i++){
  85. data.push(res.data[i])
  86. if(data[i].categoryStyle == 1){
  87. data[i].path = "/"
  88. if(data[i].children.length>0){
  89. for(let ii=0;ii<data[i].children.length;ii++){
  90. data[i].children[ii].path = "/?categoryid=" + data[i].children[ii].id
  91. }
  92. }
  93. }
  94. if(data[i].categoryStyle == 2){
  95. data[i].path = "/cases"
  96. if(data[i].children.length>0){
  97. for(let ii=0;ii<data[i].children.length;ii++){
  98. data[i].children[ii].path = "/cases?categoryid=" + data[i].children[ii].id
  99. }
  100. }
  101. }
  102. if(data[i].categoryStyle == 3){
  103. data[i].path = "/services"
  104. if(data[i].children.length>0){
  105. for(let ii=0;ii<data[i].children.length;ii++){
  106. data[i].children[ii].path = "/services?categoryid=" + data[i].children[ii].id
  107. }
  108. }
  109. }
  110. if(data[i].categoryStyle == 4){
  111. data[i].path = "/news"
  112. if(data[i].children.length>0){
  113. for(let ii=0;ii<data[i].children.length;ii++){
  114. data[i].children[ii].path = "/news?categoryid=" + data[i].children[ii].id
  115. }
  116. }
  117. }
  118. if(data[i].categoryStyle == 5){
  119. data[i].path = "/about"
  120. if(data[i].children.length>0){
  121. for(let ii=0;ii<data[i].children.length;ii++){
  122. data[i].children[ii].path = "/about?categoryid=" + data[i].children[ii].id
  123. }
  124. }
  125. }
  126. }
  127. const menuList = res.data
  128. for(let i=0;i<menuList.length;i++){
  129. if((menuList[i].path == params.path) && !params.query.categoryid){//一级菜单
  130. if(!params.query.dup && !menuList[i].sname){
  131. commit("setMeta",{title:menuList[i].categoryName,keywords:menuList[i].metakeywords,description:menuList[i].metadescription})
  132. }else if(params.query.dup && menuList[i].sname){
  133. commit("setMeta",{title:menuList[i].categoryName,keywords:menuList[i].metakeywords,description:menuList[i].metadescription})
  134. }
  135. }else if(menuList[i].children.length>0){//二级菜单
  136. for(let ii=0;ii<menuList[i].children.length;ii++){
  137. if(!params.query.dup){
  138. if(`${menuList[i].children[ii].path}` == `${params.path}?categoryid=${params.query.categoryid}`){
  139. commit("setMeta",{title:menuList[i].children[ii].categoryName,keywords:menuList[i].children[ii].metakeywords,description:menuList[i].children[ii].metadescription})
  140. }
  141. }
  142. if(!params.query.dup){
  143. let path = menuList[i].children[ii].path.split("?")
  144. if(`${path[0]}?dup=${menuList[i].children[ii].sname}` == `${params.path}?dup=${params.query.dup}`){
  145. commit("setMeta",{title:menuList[i].children[ii].categoryName,keywords:menuList[i].children[ii].metakeywords,description:menuList[i].children[ii].metadescription})
  146. }
  147. }
  148. }
  149. }
  150. }
  151. commit('setMenuList',res.data)
  152. resolve(true)
  153. })
  154. })
  155. },
  156. /**
  157. * 获取页面数据
  158. * @param data.params 传参
  159. * @param data.index 页面
  160. * @param data.sub 页面下标
  161. * @returns
  162. */
  163. getPageData({ commit }:any,data:any){
  164. return new Promise(resolve=>{
  165. //当前页
  166. if(data.index || data.sub){
  167. commit('setCurrentPagePathOrSub',{index:data.index,sub:data.sub})
  168. }
  169. //cases页类型活动id
  170. if(
  171. data.params?.categoryid && (data.index == "/cases" ||
  172. data.index == "/services") || data.index == "/news" ||
  173. data.index == "/news_Read" && data.params.acitve ||
  174. data.index == "/services_Read" && data.params.acitve
  175. ){
  176. commit('setAcitveId',data.params.categoryid)
  177. }
  178. getPageContent(data.params).then((res:any)=>{
  179. //当页主体数据
  180. commit('setPageData',res.data)
  181. resolve(true)
  182. })
  183. //推荐列表查询
  184. if(data.params?.details){
  185. let params = JSON.parse(JSON.stringify(data.params))
  186. delete params.articleid
  187. params.pageSize = 100
  188. delete params.id
  189. delete params.details
  190. getPageContent(params).then((res:any)=>{
  191. commit('setRecomMendation',res.data.records)
  192. resolve(true)
  193. })
  194. }
  195. })
  196. },
  197. }
  198. })