2023-08-29 18:57:27 +08:00

117 lines
3.2 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
* @Author: Kane
* @Date: 2023-06-06 17:40:31
* @LastEditors: Kane
* @FilePath: /task_schedule/src/utils/ranking.ts
* @Description: 排行榜相关的代码
*
* Copyright (c) ${2022} by Kane, All Rights Reserved.
*/
import { service as instance } from "./api/request.js";
import { API_URL } from "./api/config.js";
import { type RankingListItem } from "../types/cpicxim/RankingListItem.js";
/**
* 用于请求排行榜数据请求参数
*/
interface RankingListRequest
{
departmentCode: string;
year: string;
month: string;
}
interface RankingListResponse
{
success: boolean;
message: string;
departmentCode: string;
year: string;
month: string;
attachingRateRankingList: RankingListItem[];
renewalRateRankingList: RankingListItem[];
}
// 判断用的正则表达式
const regexMonth = "(0[1-9])|(1[0-2])";
/**
* 请求坐席排行榜。
* @param reqParam 请求参数
* @param rander 保存请求结果的回调函数
* @returns 返回RankingListResponse对象里面包含请求状态和数据。
*/
function requestRankingList( reqParam: RankingListRequest, rander: any ): void // eslint-disable-line
{
// let attachingRankingList: RankingListItem[];
// let renewalRankintList: RankingListItem[];
const rankingListResponse: RankingListResponse = {
success: false,
message: "",
departmentCode: reqParam.departmentCode,
year: reqParam.year,
month: reqParam.month,
attachingRateRankingList: [],
renewalRateRankingList: [],
};
// 检查请求参数
// TODO: 这里要加一个对month的正则表达式验证。
instance.request(
{
method: "post",
url: API_URL.URL_RANKINGLIST,
data: reqParam,
})
.then(( response ) =>
{
const data: RankingListResponse = response.data as RankingListResponse;
rankingListResponse.success = data.success ?? false;
rankingListResponse.message = data.message ?? "";
rankingListResponse.departmentCode = data.departmentCode ?? "";
rankingListResponse.year = data.year ?? "";
rankingListResponse.month = data.month ?? "";
// 遍历排行榜元素
for ( const item of ( data.attachingRateRankingList ?? [] )) // eslint-disable-line
{
const index: number = item.index ?? -1;
if ( index === -1 )
{
continue;
}
rankingListResponse.attachingRateRankingList.push( item );
}
for ( const item of ( data.renewalRateRankingList ?? [] )) // eslint-disable-line
{
const index: number = item.index ?? -1;
if ( index === -1 )
{
continue;
}
rankingListResponse.renewalRateRankingList.push( item );
}
// 调用回调函数保存数据
rander( rankingListResponse );
})
.catch(( error ) =>
{
console.log( error );
});
}
export {
type RankingListRequest,
type RankingListResponse,
requestRankingList
};