demensionList.ts 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211
  1. import { MenuListInter } from './../js-pages/types'
  2. import { DemensionStoreInter } from '../types/store'
  3. import { defineStore } from 'pinia'
  4. import $axios from '@/api'
  5. import { $getDemension } from '@/utils/utils'
  6. export const useDemensionListStore = defineStore({
  7. id: 'demensionList',
  8. state: () => {
  9. return <DemensionStoreInter>{
  10. pageNum: 1,
  11. pageSize: 10,
  12. deleted: 0,
  13. entityType: 2,
  14. entityName: '',
  15. entityId: '',
  16. totalNum: 0,
  17. totalPage: 0,
  18. selectDemension: {},
  19. dataList: [],
  20. dataExtra: [],
  21. tabInfo: {
  22. totalNumList: [0, 0]
  23. }
  24. }
  25. },
  26. actions: {
  27. //初始化列表状态
  28. clearState() {
  29. this.pageNum = 1
  30. this.pageSize = 10
  31. this.totalNum = 0
  32. this.totalPage = 0
  33. this.dataList = []
  34. this.deleted = 0
  35. },
  36. getDemension() {
  37. //先清除历史的状态
  38. this.clearState()
  39. const demensionInfo = $getDemension()
  40. //首页返回所有维度列表,列表页正常返回
  41. if (demensionInfo.selectDemension) {
  42. this.selectDemension = demensionInfo.selectDemension
  43. //方便本地调试的企业id
  44. this.entityId = import.meta.env.MODE === 'development' && demensionInfo.selectDemension.companyId ? demensionInfo.selectDemension.companyId : this.entityId
  45. if (this.selectDemension.tabs?.key === 'dimensionCode' && this.selectDemension.tabs.list) {
  46. this.selectDemension.viewList = this.selectDemension.tabs.list[0].viewList
  47. this.selectDemension.code = this.selectDemension.tabs.list[0].value
  48. if (this.selectDemension.tabs.list[0].detailList) {
  49. this.selectDemension.detailList = this.selectDemension.tabs.list[0].detailList
  50. }
  51. }
  52. } else {
  53. return demensionInfo.allDemensionArr
  54. }
  55. //有tab的列表
  56. if (demensionInfo.selectDemension.tabs?.key === 'deleted') {
  57. this.getDeletedList()
  58. return
  59. }
  60. if (!demensionInfo.selectDemension.listCustomRender) {
  61. this.getList()
  62. }
  63. },
  64. //有历史tab页的请求,自定义请求获取额外数据
  65. async getDeletedList() {
  66. this.deleted = 1
  67. const totalNum1 = await (await this.getList()).totalNum
  68. this.dataList = []
  69. this.deleted = 0
  70. const totalNum2 = await (await this.getList()).totalNum
  71. this.tabInfo.totalNumList = [totalNum2, totalNum1]
  72. // console.log()
  73. },
  74. //有menu页的请求,修改menu动态数据
  75. getMenuList(dataExtra: { field: string, keyValueBOS: any[] }[]) {
  76. const newArr: MenuListInter[] = []
  77. //结合后端返回的数组
  78. if (this.selectDemension.menuList) {
  79. this.selectDemension.menuList.map(item => {
  80. item.value = ''
  81. if (!item.paramsId) {
  82. newArr.push(item)
  83. } else {
  84. // console.log(dataExtra, 8888)
  85. const listArr: { text: string; value: string }[] = []
  86. //初始化数据
  87. item.list.length = 1
  88. listArr.push(...item.list)
  89. //如果menu是数组
  90. if (Array.isArray(dataExtra)) {
  91. //添加接口返回的数据
  92. dataExtra.map(dataItem => {
  93. if (item.paramsId === dataItem.field) {
  94. dataItem.keyValueBOS.map(item => {
  95. listArr.push({
  96. text: item.key,
  97. value: item.key
  98. })
  99. })
  100. }
  101. })
  102. //如果menu是对象
  103. } else {
  104. const dataExtraArr = Object.keys(dataExtra)
  105. // console.log(dataExtraArr)
  106. dataExtraArr.map(dataExtraItem => {
  107. // console.log(dataExtraItem)
  108. if (dataExtraItem === item.paramsId) {
  109. const extraList = dataExtra[dataExtraItem] as []
  110. console.log(dataExtraItem)
  111. console.log(extraList)
  112. if (extraList.length) {
  113. extraList.map((extraListItem: { key: string, desc?: string }) => {
  114. listArr.push({
  115. text: extraListItem.desc ? extraListItem.desc : extraListItem.key,
  116. value: extraListItem.key
  117. })
  118. })
  119. }
  120. }
  121. //
  122. })
  123. }
  124. console.log(item)
  125. newArr.push(
  126. {
  127. ...item,
  128. list: listArr
  129. }
  130. )
  131. }
  132. })
  133. }
  134. this.selectDemension.menuList = newArr
  135. },
  136. async getList(extraParams = {}) {
  137. //发起请求
  138. const { pageNum, pageSize, deleted, entityType, entityName, entityId } = this
  139. const params = {
  140. dimensionCode: this.selectDemension?.code,
  141. pageNum,
  142. pageSize,
  143. deleted,
  144. entityType,
  145. entityName,
  146. entityId,
  147. companyName: this.selectDemension.apiUrl ? entityName : undefined, //老数据维度的参数
  148. infoCode: this.selectDemension.apiUrl ? this.selectDemension?.code : undefined, //老数据维度的参数
  149. ...extraParams
  150. }
  151. const res = await $axios.get(`${this.selectDemension.apiUrl || 'lawyer-workbench/risk/dimension/page'}`, { params }) as { totalNum: number, totalPage: number, dataList: [], dataExtra?: { field: string, keyValueBOS: any[] }[] }
  152. this.totalNum = res.totalNum
  153. this.totalPage = res.totalPage
  154. let dataList = res.dataList
  155. if (this.selectDemension.noDataList) {
  156. dataList = res as unknown as []
  157. }
  158. if (this.selectDemension.listFliter) {
  159. dataList = this.selectDemension.listFliter(dataList)
  160. }
  161. this.dataList.push(...dataList)
  162. this.dataExtra = res.dataExtra
  163. if (!Object.keys(extraParams).length) {
  164. this.getMenuList(res.dataExtra!)
  165. }
  166. return res
  167. }
  168. }
  169. })