- 新增OperationDashboard.vue全屏大屏组件 - 添加6个核心KPI指标卡片: 进水总量/出水总量/产销差率/营收额/平均水质/报警次数 - 实现6个ECharts图表: 供水趋势/水质分布/报警统计/管网空间/设备状态/营收分析 - 创建静态HTML版本operation-dashboard.html,使用CDN加载Vue3/ECharts/Element Plus - 更新路由配置,添加/operation路径支持 - 修复nextTick导入问题,优化build脚本 🚧 开发者: bot_dev1 📝 任务: #38 [BI] 运营仪表盘 + 供水专题大屏
36 lines
992 B
JavaScript
36 lines
992 B
JavaScript
import { normalizeRadian } from './util.js';
|
|
var PI2 = Math.PI * 2;
|
|
export function containStroke(cx, cy, r, startAngle, endAngle, anticlockwise, lineWidth, x, y) {
|
|
if (lineWidth === 0) {
|
|
return false;
|
|
}
|
|
var _l = lineWidth;
|
|
x -= cx;
|
|
y -= cy;
|
|
var d = Math.sqrt(x * x + y * y);
|
|
if ((d - _l > r) || (d + _l < r)) {
|
|
return false;
|
|
}
|
|
if (Math.abs(startAngle - endAngle) % PI2 < 1e-4) {
|
|
return true;
|
|
}
|
|
if (anticlockwise) {
|
|
var tmp = startAngle;
|
|
startAngle = normalizeRadian(endAngle);
|
|
endAngle = normalizeRadian(tmp);
|
|
}
|
|
else {
|
|
startAngle = normalizeRadian(startAngle);
|
|
endAngle = normalizeRadian(endAngle);
|
|
}
|
|
if (startAngle > endAngle) {
|
|
endAngle += PI2;
|
|
}
|
|
var angle = Math.atan2(y, x);
|
|
if (angle < 0) {
|
|
angle += PI2;
|
|
}
|
|
return (angle >= startAngle && angle <= endAngle)
|
|
|| (angle + PI2 >= startAngle && angle + PI2 <= endAngle);
|
|
}
|