api.ts 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. import request from '@/config/axios'
  2. const apiUrl = {
  3. segment: '/manage/segment', // 按板块统计数据
  4. dept: '/manage/dept', // 按部门统计数据
  5. person: '/manage/person' // 按人员统计数据
  6. }
  7. export interface ISegment {
  8. /**
  9. * 合同余额
  10. */
  11. contractBalance: number
  12. /**
  13. * 本年开拓
  14. */
  15. newAmount: number
  16. /**
  17. * 应收款
  18. */
  19. receivableAmount: number
  20. /**
  21. * 本年回款
  22. */
  23. returnAmount: number
  24. /**
  25. * 板块
  26. */
  27. segment: string
  28. /**
  29. * 本年签约
  30. */
  31. signAmount: number
  32. /**
  33. * 分包额
  34. */
  35. subAmount: number | null
  36. /**
  37. * 分包已支付
  38. */
  39. subPayed: number | null
  40. /**
  41. * 分包待支付
  42. */
  43. subToPay: number | null
  44. }
  45. export interface IDept {
  46. // 合同余额
  47. contractBalance: number
  48. deptId: string
  49. // 部门
  50. deptName: string
  51. // 部门人数
  52. memberCount: number
  53. // 本年开拓
  54. newAmount: number
  55. // 应收款
  56. receivableAmount: number
  57. // 本年回款
  58. returnAmount: number | null
  59. // 本年签约
  60. signAmount: number
  61. }
  62. export interface IPerson {
  63. /**
  64. * 本年开拓
  65. */
  66. newAmount: number | null
  67. /**
  68. * 名字
  69. */
  70. nickname: string
  71. /**
  72. * 本年回款
  73. */
  74. returnAmount: number | null
  75. /**
  76. * 本年签约
  77. */
  78. signAmount: number | null
  79. /**
  80. * 用户id
  81. */
  82. userId: string
  83. }
  84. const segmentName = ['', '空间信息研究院', '空间规划研究院', '江苏分公司', '北京分公司']
  85. export const getSegmentData = async (params: { year: string }) => {
  86. const result: any = await request.get(
  87. {
  88. url: apiUrl.segment,
  89. params
  90. },
  91. '/business'
  92. )
  93. return result.map((item) => ({
  94. ...item,
  95. segment: segmentName[item.segment]
  96. }))
  97. }
  98. export const getDeptData = async (params: { year: string }) => {
  99. const result: any = await request.get(
  100. {
  101. url: apiUrl.dept,
  102. params
  103. },
  104. '/business'
  105. )
  106. return result
  107. return result.map((item) => ({
  108. ...item,
  109. signAmount: unitConversion(item.signAmount),
  110. returnAmount: unitConversion(item.returnAmount),
  111. newAmount: unitConversion(item.newAmount),
  112. receivableAmount: unitConversion(item.receivableAmount),
  113. contractBalance: unitConversion(item.contractBalance)
  114. }))
  115. }
  116. export const getPersonData = async (params: { year: string }) => {
  117. const result: any = await request.get(
  118. {
  119. url: apiUrl.person,
  120. params
  121. },
  122. '/business'
  123. )
  124. return result
  125. return result.map((item) => ({
  126. ...item,
  127. signAmount: unitConversion(item.signAmount),
  128. returnAmount: unitConversion(item.returnAmount),
  129. newAmount: unitConversion(item.newAmount)
  130. }))
  131. }
  132. // 处理一下数据单位
  133. export const unitConversion = (valueInTenThousand: number | null): string => {
  134. if (!valueInTenThousand) return ''
  135. // 判断值是否大于等于 1 万
  136. if (valueInTenThousand >= 10000) {
  137. // 将以万为单位的数字除以 10,000 来得到以万为单位的数字,并保留两位小数
  138. const valueInBillion = valueInTenThousand / 10000
  139. // 使用 toFixed 方法保留两位小数
  140. return valueInBillion.toFixed(2) + ' 万'
  141. } else {
  142. // 小于 1 亿的情况,以万为单位返回
  143. return `${valueInTenThousand} 元`
  144. }
  145. }