- 新增OperationDashboard.vue全屏大屏组件 - 添加6个核心KPI指标卡片: 进水总量/出水总量/产销差率/营收额/平均水质/报警次数 - 实现6个ECharts图表: 供水趋势/水质分布/报警统计/管网空间/设备状态/营收分析 - 创建静态HTML版本operation-dashboard.html,使用CDN加载Vue3/ECharts/Element Plus - 更新路由配置,添加/operation路径支持 - 修复nextTick导入问题,优化build脚本 🚧 开发者: bot_dev1 📝 任务: #38 [BI] 运营仪表盘 + 供水专题大屏
26 lines
979 B
JavaScript
26 lines
979 B
JavaScript
import smoothBezier from './smoothBezier.js';
|
|
export function buildPath(ctx, shape, closePath) {
|
|
var smooth = shape.smooth;
|
|
var points = shape.points;
|
|
if (points && points.length >= 2) {
|
|
if (smooth) {
|
|
var controlPoints = smoothBezier(points, smooth, closePath, shape.smoothConstraint);
|
|
ctx.moveTo(points[0][0], points[0][1]);
|
|
var len = points.length;
|
|
for (var i = 0; i < (closePath ? len : len - 1); i++) {
|
|
var cp1 = controlPoints[i * 2];
|
|
var cp2 = controlPoints[i * 2 + 1];
|
|
var p = points[(i + 1) % len];
|
|
ctx.bezierCurveTo(cp1[0], cp1[1], cp2[0], cp2[1], p[0], p[1]);
|
|
}
|
|
}
|
|
else {
|
|
ctx.moveTo(points[0][0], points[0][1]);
|
|
for (var i = 1, l = points.length; i < l; i++) {
|
|
ctx.lineTo(points[i][0], points[i][1]);
|
|
}
|
|
}
|
|
closePath && ctx.closePath();
|
|
}
|
|
}
|