demension.ts 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. import { DemensionStoreInter } from './../types/store'
  2. import { DemensionPagesListInter, DemensionPagesInter } from '@/js-pages/types'
  3. import { defineStore } from 'pinia'
  4. import pagesArr from '@/js-pages'
  5. import $axios from '@/api'
  6. import { useRoute } from 'vue-router'
  7. export const useDemensionStore = defineStore({
  8. id: 'process',
  9. state: () => {
  10. return <DemensionStoreInter>{
  11. pageNum: 1,
  12. pageSize: 10,
  13. deleted: 0,
  14. entityType: 2,
  15. entityName: '',
  16. entityId: '',
  17. totalNum: 0,
  18. totalPage: 0,
  19. selectDemension: {},
  20. dataList: [],
  21. tabInfo: {
  22. totalNumList: [0, 0]
  23. }
  24. }
  25. },
  26. actions: {
  27. getDemension() {
  28. const route = useRoute()
  29. //遍历获取所有维度列表
  30. const allDemensionArr = [] as DemensionPagesListInter[]
  31. const demensionArr = (arr: any[]): DemensionPagesInter[] => {
  32. return arr.reduce((total, item: any) => item.list ? demensionArr(item.list) : allDemensionArr.push(item), [])
  33. }
  34. demensionArr(pagesArr)
  35. //根据路由名称匹配对应维度
  36. this.selectDemension = allDemensionArr.find(item => route.path === `/${item.routing}`)!
  37. if (this.selectDemension.tabs === 'deleted') {
  38. this.getDeletedList()
  39. return
  40. }
  41. this.getList()
  42. },
  43. //有历史tab页的请求,自定义请求获取额外数据
  44. async getDeletedList() {
  45. this.deleted = 1
  46. const totalNum1 = await (await this.getList()).totalNum
  47. this.dataList = []
  48. this.deleted = 0
  49. const totalNum2 = await (await this.getList()).totalNum
  50. this.tabInfo.totalNumList = [totalNum2, totalNum1]
  51. // console.log()
  52. },
  53. async getList(extraParams?: {}) {
  54. //发起请求
  55. const { pageNum, pageSize, deleted, entityType, entityName, entityId } = this
  56. const params = {
  57. dimensionCode: this.selectDemension?.code,
  58. pageNum,
  59. pageSize,
  60. deleted,
  61. entityType,
  62. entityName,
  63. entityId,
  64. ...extraParams
  65. }
  66. const res = await $axios.get('lawyer-workbench/risk/dimension/page', { params }) as { totalNum: number, totalPage: number, dataList: [] }
  67. this.totalNum = res.totalNum
  68. this.totalPage = res.totalPage
  69. this.dataList.push(...res.dataList)
  70. return res
  71. }
  72. }
  73. })