- 新增OperationDashboard.vue全屏大屏组件 - 添加6个核心KPI指标卡片: 进水总量/出水总量/产销差率/营收额/平均水质/报警次数 - 实现6个ECharts图表: 供水趋势/水质分布/报警统计/管网空间/设备状态/营收分析 - 创建静态HTML版本operation-dashboard.html,使用CDN加载Vue3/ECharts/Element Plus - 更新路由配置,添加/operation路径支持 - 修复nextTick导入问题,优化build脚本 🚧 开发者: bot_dev1 📝 任务: #38 [BI] 运营仪表盘 + 供水专题大屏
48 lines
1.3 KiB
TypeScript
48 lines
1.3 KiB
TypeScript
import type { App } from './api/index.js';
|
|
export interface PluginDescriptor {
|
|
id: string;
|
|
label: string;
|
|
app: App;
|
|
packageName?: string;
|
|
homepage?: string;
|
|
componentStateTypes?: string[];
|
|
logo?: string;
|
|
disableAppScope?: boolean;
|
|
disablePluginScope?: boolean;
|
|
/**
|
|
* Run the plugin setup and expose the api even if the devtools is not opened yet.
|
|
* Useful to record timeline events early.
|
|
*/
|
|
enableEarlyProxy?: boolean;
|
|
settings?: Record<string, PluginSettingsItem>;
|
|
}
|
|
export type PluginSettingsItem = {
|
|
label: string;
|
|
description?: string;
|
|
} & ({
|
|
type: 'boolean';
|
|
defaultValue: boolean;
|
|
} | {
|
|
type: 'choice';
|
|
defaultValue: string | number;
|
|
options: {
|
|
value: string | number;
|
|
label: string;
|
|
}[];
|
|
component?: 'select' | 'button-group';
|
|
} | {
|
|
type: 'text';
|
|
defaultValue: string;
|
|
});
|
|
type InferSettingsType<T extends PluginSettingsItem> = [T] extends [{
|
|
type: 'boolean';
|
|
}] ? boolean : [T] extends [{
|
|
type: 'choice';
|
|
}] ? T['options'][number]['value'] : [T] extends [{
|
|
type: 'text';
|
|
}] ? string : unknown;
|
|
export type ExtractSettingsTypes<O extends Record<string, PluginSettingsItem>> = {
|
|
[K in keyof O]: InferSettingsType<O[K]>;
|
|
};
|
|
export {};
|