97 lines
3.7 KiB
TypeScript
97 lines
3.7 KiB
TypeScript
/**
|
||
* 分析看板 Mock:字段与原型 admin-dashboard.html 演示数据对齐。
|
||
*/
|
||
|
||
export type MetricCard = {
|
||
key: string;
|
||
label: string;
|
||
tip: string;
|
||
value: string;
|
||
isTime?: boolean;
|
||
};
|
||
|
||
export type InquiryPoint = { date: string; value: number };
|
||
|
||
export type RankingPerson = {
|
||
name: string;
|
||
role: "sales" | "route" | "product";
|
||
dept: string;
|
||
volumeNum: number;
|
||
};
|
||
|
||
export type CostRoute = {
|
||
id: string;
|
||
label: string;
|
||
color: string;
|
||
/** 与 costDates 对齐;某日无样本为 null */
|
||
values: Array<number | null>;
|
||
/** 前端根据 values 生成的 SVG path */
|
||
path: string;
|
||
/** 有金额的日子画点(仅一天有数时折线不可见,靠点可见) */
|
||
points: Array<{ x: number; y: number; index: number }>;
|
||
};
|
||
|
||
/** 今日视角九指标(与原型 5 列栅格、主账 InquiryDashboardServiceImpl 一致) */
|
||
export const todayMetrics: MetricCard[] = [
|
||
{ key: "inquiry", label: "询价总量", tip: "周期内询价工单总数", value: "128" },
|
||
{ key: "quoted", label: "报价工单", tip: "已报价工单数(已报价 + 议价中 + 已成交 + 未成交)", value: "92 单" },
|
||
{ key: "tms", label: "标准报价命中率", tip: "命中 TMS 标准价的询价数 ÷ 询价总数 × 100%", value: "67.8%" },
|
||
{ key: "avgSale", label: "平均报价销售额", tip: "AVG(已勾选报价的销售价)", value: "12800" },
|
||
{ key: "manual", label: "手工工单占比", tip: "人工报价的询价数 ÷ 询价总数 × 100%", value: "32.0%" },
|
||
{ key: "pending", label: "待处理工单", tip: "工单总数 − 已成交 − 未成交 − 已关闭", value: "39 单" },
|
||
{ key: "dealRate", label: "报价成功率", tip: "已成交数 ÷ 已报价数 × 100%", value: "34.8%" },
|
||
{ key: "feedback", label: "报价有效率", tip: "(已成交 + 未成交)÷ 工单数 × 100%", value: "60.2%" },
|
||
{
|
||
key: "avgResp",
|
||
label: "内部报价平均响应",
|
||
tip: "AVG(首次有效回复时间 − 分发时间)",
|
||
value: "8m42s",
|
||
isTime: true,
|
||
},
|
||
];
|
||
|
||
export const inquiryTrend: InquiryPoint[] = [
|
||
{ date: "06-12", value: 72 },
|
||
{ date: "06-13", value: 84 },
|
||
{ date: "06-14", value: 76 },
|
||
{ date: "06-15", value: 92 },
|
||
{ date: "06-16", value: 88 },
|
||
{ date: "06-17", value: 102 },
|
||
{ date: "06-18", value: 128 },
|
||
];
|
||
|
||
export const rankingPeople: RankingPerson[] = [
|
||
{ name: "张磊", role: "route", dept: "空运航线部", volumeNum: 38 },
|
||
{ name: "张三", role: "route", dept: "空运航线部", volumeNum: 35 },
|
||
{ name: "林芳", role: "route", dept: "空运航线部", volumeNum: 26 },
|
||
{ name: "赵六", role: "route", dept: "空运航线部", volumeNum: 22 },
|
||
{ name: "王伟", role: "product", dept: "海运产品部", volumeNum: 42 },
|
||
{ name: "陈昊", role: "product", dept: "海运产品部", volumeNum: 31 },
|
||
{ name: "周琳", role: "product", dept: "陆运产品部", volumeNum: 18 },
|
||
{ name: "王五", role: "product", dept: "陆运产品部", volumeNum: 15 },
|
||
{ name: "张敏", role: "sales", dept: "华东销售一部", volumeNum: 29 },
|
||
{ name: "李华", role: "sales", dept: "华南销售二部", volumeNum: 24 },
|
||
{ name: "刘洋", role: "sales", dept: "陆运销售部", volumeNum: 21 },
|
||
];
|
||
|
||
export const rankingDepts = [
|
||
"华东销售一部",
|
||
"华南销售二部",
|
||
"陆运销售部",
|
||
"空运航线部",
|
||
"海运产品部",
|
||
"陆运产品部",
|
||
];
|
||
|
||
/** 成本趋势折线:路径坐标对齐原型 SVG(仅作样式参考;正式数据来自主账) */
|
||
export const costRoutes: CostRoute[] = [
|
||
{
|
||
id: "cgo-kul",
|
||
label: "CGO-KUL",
|
||
color: "#2563eb",
|
||
values: [120, 118, 125, 110, 115, 105, 100],
|
||
path: "M36 56 L145 51 L254 61 L363 46 L472 50 L581 41 L690 36",
|
||
points: [],
|
||
},
|
||
];
|