Files
desktop_task_schedule/code/web/task_schedule/src/utils/archievement.ts

185 lines
5.7 KiB
TypeScript
Raw Normal View History

2023-03-17 18:53:13 +08:00
/*
* @Author: Kane
* @Date: 2023-03-17 15:17:44
* @LastEditors: Kane
* @FilePath: /task_schedule/src/utils/archievement.ts
2023-08-28 17:41:07 +08:00
* @Description:
2023-03-17 18:53:13 +08:00
*
* Copyright (c) ${2022} by Kane, All Rights Reserved.
*/
import { service as instance } from "./api/request.js";
import { API_URL } from "./api/config.js";
2023-08-28 17:41:07 +08:00
import { type Department } from "../types/cpicxim/Department.js";
import { type TelSaler } from "../types/cpicxim/TelSaler.js";
import { type AxiosResponse } from "axios";
2023-03-17 18:53:13 +08:00
2023-08-28 17:41:07 +08:00
interface DepartmentArchievement // 定义业绩对象的结构
2023-03-17 18:53:13 +08:00
{
success: boolean;
message: string;
total_archievement: number;
2023-03-21 18:01:05 +08:00
mensual_archievement_list: number[];
2023-03-17 18:53:13 +08:00
insurance_renewal_rate: string;
attaching_rate: string;
leading_reward_gainers: string[];
advance_reward_gainers: string[];
backward_list: string[];
}
2023-08-28 17:41:07 +08:00
interface CallerArchievement // 坐席的业绩
{
success: boolean;
message: string;
total_archievement: number;
mensual_archievement_list: number[];
insurance_renewal_rate: string;
attaching_rate: string;
}
interface MenusalArchievementItem
{
month: string;
premium: number;
}
/**
*
* @param render
*/
function queryDepartmentArchievement( departmentInfo: Department, render: any ): void
2023-03-17 18:53:13 +08:00
{
2023-03-24 15:11:47 +08:00
instance.request({
2023-03-17 18:53:13 +08:00
method: "post",
url: API_URL.URL_DEPARTMENT_ARCHIEVEMENT,
data: departmentInfo,
2023-03-24 15:11:47 +08:00
})
.then(( response ) =>
2023-03-17 18:53:13 +08:00
{
2023-08-28 17:41:07 +08:00
const archievement: DepartmentArchievement = {
2023-03-17 18:53:13 +08:00
success: false,
message: "",
total_archievement: 0,
mensual_archievement_list: [],
insurance_renewal_rate: "",
attaching_rate: "",
leading_reward_gainers: [],
advance_reward_gainers: [],
backward_list: [],
};
const data = response.data ?? {};
archievement.success = data.success ?? false;
archievement.message = data.message ?? "";
2023-07-31 20:14:49 +08:00
archievement.total_archievement = data.total_archievement;
// archievement.mensual_archievement_list = data.mensual_archievement_list ?? [];
archievement.mensual_archievement_list = [];
2023-03-17 18:53:13 +08:00
archievement.insurance_renewal_rate = data.insurance_renewal_rate ?? "0.0";
archievement.attaching_rate = data.attaching_rate ?? "0.0";
archievement.leading_reward_gainers = data.leading_reward_gainers ?? [];
archievement.advance_reward_gainers = data.advance_reward_gainers ?? [];
archievement.backward_list = data.backward_list ?? [];
2023-08-25 20:47:36 +08:00
2023-07-31 20:14:49 +08:00
// 转换每月业绩数据用month排序以后保留premium。
2023-08-25 20:47:36 +08:00
data.mensual_archievement_list.sort(( a: any, b: any ) => a.month - b.month );
data.mensual_archievement_list.forEach(( item: any ) =>
2023-07-31 20:14:49 +08:00
{
archievement.mensual_archievement_list.push( item.premium );
});
2023-03-17 18:53:13 +08:00
2023-07-31 20:14:49 +08:00
console.log( "每月业绩", archievement );
// 渲染数据
render( archievement );
2023-03-24 15:11:47 +08:00
})
.catch(( error ) =>
2023-03-17 18:53:13 +08:00
{
console.log( error );
2023-03-24 15:11:47 +08:00
});
2023-03-17 18:53:13 +08:00
}
2023-08-28 17:41:07 +08:00
function queryCallerArchievement( callerInfo: TelSaler, render: any ): void
{
const caller = {
callerCode: callerInfo.telSalerCode,
callName: callerInfo.telSalerName,
};
instance.request({
method: "post",
url: API_URL.URL_CALLER_ARCHIEVEMENT,
data: caller,
})
// 请求完成时
.then(( response: AxiosResponse<any, any> ) =>
{
const data = response.data ?? {};
const callArchievement: CallerArchievement = {
success: data.success ?? false,
message: data.message ?? "",
total_archievement: data.total_archievement ?? 0,
mensual_archievement_list: [],
insurance_renewal_rate: data.insurance_renewal_rate ?? "0.0",
attaching_rate: data.attaching_rate ?? "0.0",
};
const checkedList = checkMensualArchievement( data.mensual_archievement_list );
console.log( `queryCallerArchievement查询结果${data}` );
})
// 请求失败
.catch(( error: any ) =>
{
console.log( `queryCallerArchievement:查询坐席${callerInfo.telSalerCode}业绩失败,原因${error}` );
});
}
/**
* 0
* @param mensualArchievementList
* @returns
*/
function checkMensualArchievement( mensualArchievementList: MenusalArchievementItem[]): MenusalArchievementItem[]
{
const checkedList: MenusalArchievementItem[] = [];
const itemMap = new Map();
itemMap.set( 1, "0" );
itemMap.set( 2, "0" );
itemMap.set( 3, "0" );
itemMap.set( 4, "0" );
itemMap.set( 5, "0" );
itemMap.set( 6, "0" );
itemMap.set( 7, "0" );
itemMap.set( 8, "0" );
itemMap.set( 9, "0" );
itemMap.set( 10, "0" );
itemMap.set( 11, "0" );
itemMap.set( 12, "0" );
mensualArchievementList.forEach(( item: MenusalArchievementItem ): void =>
{
itemMap.set( item.month, item.premium );
});
itemMap.forEach(( value, key, map ) =>
{
const item: MenusalArchievementItem = {
month: key,
premium: value,
};
checkedList.push( item );
});
return checkedList;
}
export {
queryDepartmentArchievement,
queryCallerArchievement,
type DepartmentArchievement,
type CallerArchievement
};