index.ts 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  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. dialogPersonalStatus:false//弹框状态
  25. },
  26. mutations:{
  27. //菜单列表
  28. setMenuList(state:any,data:any){
  29. state.menuList = data
  30. return state.menuList
  31. },
  32. //页面主体内容
  33. setPageData(state:any,data:any){
  34. state.pageContent = data.records
  35. state.pagination.total = data.total
  36. return state.pageContent,state.pagination
  37. },
  38. //
  39. setCurrentPagePathOrSub(state:any,data:any){
  40. state.currentPagePath = data.index
  41. state.sub = data.sub
  42. return state.index,state.sub
  43. },
  44. //子页面活动状态
  45. setAcitveId(state:any,data:object){
  46. state.acitveId = data
  47. return state.acitveId
  48. },
  49. //推荐内容
  50. setRecomMendation(state:any,data:object){
  51. state.recomMendation = data
  52. return state.recomMendation
  53. },
  54. //设置弹框状态
  55. setDialogPersonalStatus(state:any,data:string){
  56. state.dialogPersonalStatus = data
  57. return state.dialogPersonalStatus
  58. },
  59. //设置页面下属类型
  60. setColumnTypes(state:any,data:string){
  61. state.columnTypes = data
  62. return state.columnTypes
  63. },
  64. //设置跳转路由参数
  65. setRoute(state:any,data:string){
  66. state.route = data
  67. return state.route
  68. },
  69. },
  70. actions:{
  71. getMenuList({ commit } :any){
  72. return new Promise(resolve=>{
  73. getMenu().then((res:any)=>{
  74. let data = []
  75. for(let i=0;i<res.data.length;i++){
  76. data.push(res.data[i])
  77. if(data[i].categoryStyle == 1){
  78. data[i].path = "/index"
  79. }
  80. if(data[i].categoryStyle == 2){
  81. data[i].path = "/cases"
  82. }
  83. if(data[i].categoryStyle == 3){
  84. data[i].path = "/services"
  85. }
  86. if(data[i].categoryStyle == 4){
  87. data[i].path = "/news"
  88. }
  89. if(data[i].categoryStyle == 5){
  90. data[i].path = "/about"
  91. }
  92. }
  93. commit('setMenuList',res.data)
  94. resolve(true)
  95. })
  96. })
  97. },
  98. /**
  99. * 获取页面数据
  100. * @param data.params 传参
  101. * @param data.index 页面
  102. * @param data.sub 页面下标
  103. * @returns
  104. */
  105. getPageData({ commit }:any,data:any){
  106. return new Promise(resolve=>{
  107. //当前页
  108. if(data.index || data.sub){
  109. commit('setCurrentPagePathOrSub',{index:data.index,sub:data.sub})
  110. }
  111. //cases页类型活动id
  112. if(
  113. data.params?.categoryid && (data.index == "/cases" ||
  114. data.index == "/services") || data.index == "/news" ||
  115. data.index == "/news_Read" && data.params.acitve ||
  116. data.index == "/services_Read" && data.params.acitve
  117. ){
  118. commit('setAcitveId',data.params.categoryid)
  119. }
  120. getPageContent(data.params).then((res:any)=>{
  121. //当页主体数据
  122. commit('setPageData',res.data)
  123. resolve(true)
  124. })
  125. //推荐列表查询
  126. if(data.params?.details){
  127. let params = JSON.parse(JSON.stringify(data.params))
  128. delete params.articleid
  129. params.pageSize = 100
  130. delete params.id
  131. delete params.details
  132. getPageContent(params).then((res:any)=>{
  133. commit('setRecomMendation',res.data.records)
  134. resolve(true)
  135. })
  136. }
  137. })
  138. },
  139. }
  140. })