import request from '@/config/axios' const apiUrl = { segment: '/manage/segment', // 按板块统计数据 dept: '/manage/dept', // 按部门统计数据 person: '/manage/person' // 按人员统计数据 } export interface ISegment { /** * 合同余额 */ contractBalance: number /** * 本年开拓 */ newAmount: number /** * 应收款 */ receivableAmount: number /** * 本年回款 */ returnAmount: number /** * 板块 */ segment: string /** * 本年签约 */ signAmount: number /** * 分包额 */ subAmount: number | null /** * 分包已支付 */ subPayed: number | null /** * 分包待支付 */ subToPay: number | null } export interface IDept { // 合同余额 contractBalance: number deptId: string // 部门 deptName: string // 部门人数 memberCount: number // 本年开拓 newAmount: number // 应收款 receivableAmount: number // 本年回款 returnAmount: number | null // 本年签约 signAmount: number } export interface IPerson { /** * 本年开拓 */ newAmount: number | null /** * 名字 */ nickname: string /** * 本年回款 */ returnAmount: number | null /** * 本年签约 */ signAmount: number | null /** * 用户id */ userId: string } const segmentName = ['', '空间信息研究院', '空间规划研究院', '江苏分公司', '北京分公司'] export const getSegmentData = async (params: { year: string }) => { const result: any = await request.get( { url: apiUrl.segment, params }, '/business' ) return result.map((item) => ({ ...item, segment: segmentName[item.segment] })) } export const getDeptData = async (params: { year: string }) => { const result: any = await request.get( { url: apiUrl.dept, params }, '/business' ) return result return result.map((item) => ({ ...item, signAmount: unitConversion(item.signAmount), returnAmount: unitConversion(item.returnAmount), newAmount: unitConversion(item.newAmount), receivableAmount: unitConversion(item.receivableAmount), contractBalance: unitConversion(item.contractBalance) })) } export const getPersonData = async (params: { year: string }) => { const result: any = await request.get( { url: apiUrl.person, params }, '/business' ) return result return result.map((item) => ({ ...item, signAmount: unitConversion(item.signAmount), returnAmount: unitConversion(item.returnAmount), newAmount: unitConversion(item.newAmount) })) } // 处理一下数据单位 export const unitConversion = (valueInTenThousand: number | null): string => { if (!valueInTenThousand) return '' // 判断值是否大于等于 1 万 if (valueInTenThousand >= 10000) { // 将以万为单位的数字除以 10,000 来得到以万为单位的数字,并保留两位小数 const valueInBillion = valueInTenThousand / 10000 // 使用 toFixed 方法保留两位小数 return valueInBillion.toFixed(2) + ' 万' } else { // 小于 1 亿的情况,以万为单位返回 return `${valueInTenThousand} 元` } }