fast(项目-能源管理): 能源管理-电量统计添加分组查询和电量合计,设备列表塑壳断路器添加父设备选择
This commit is contained in:
parent
3ea7f89b34
commit
14126d0793
|
@ -140,7 +140,7 @@ export function projectElectricityStatChartYear(query) {
|
|||
// 查询 电能 列表
|
||||
export function projectElectricityTable(query) {
|
||||
return request({
|
||||
url: "/iot/project/monitor/electricityStatLst",
|
||||
url: "/iot/project/monitor/electricityStatList",
|
||||
method: "get",
|
||||
params: query
|
||||
});
|
||||
|
|
|
@ -0,0 +1,66 @@
|
|||
// 使用这些方法,仍然需要注意数值范围、舍入策略和比较运算等方面的问题,根据具体的应用场景进行适当的调整和处理。
|
||||
const math = {
|
||||
// 加法运算
|
||||
add: function (a, b) {
|
||||
const precision = Math.max(getPrecision(a), getPrecision(b));
|
||||
const multiplier = Math.pow(10, precision);
|
||||
const result=(Math.round(a * multiplier) + Math.round(b * multiplier)) / multiplier;
|
||||
return transferToNumber(result)
|
||||
},
|
||||
|
||||
// 减法运算
|
||||
subtract: function (a, b) {
|
||||
return transferToNumber(math.add(a, -b));
|
||||
},
|
||||
|
||||
// 乘法运算
|
||||
multiply: function (a, b) {
|
||||
const precision = getPrecision(a) + getPrecision(b);
|
||||
const multiplier = Math.pow(10, precision);
|
||||
const result=(Math.round(a * multiplier) * Math.round(b * multiplier)) / (multiplier * multiplier);
|
||||
return transferToNumber(result)
|
||||
},
|
||||
|
||||
// 除法运算
|
||||
divide: function (num1, num2) {
|
||||
var str1 = Number(num1).toString(),
|
||||
str2 = Number(num2).toString(),
|
||||
result,
|
||||
str1Length,
|
||||
str2Length;
|
||||
//解决整数没有小数点方法
|
||||
try {
|
||||
str1Length = str1.split(".")[1].length;
|
||||
} catch (error) {
|
||||
str1Length = 0;
|
||||
}
|
||||
try {
|
||||
str2Length = str2.split(".")[1].length;
|
||||
} catch (error) {
|
||||
str2Length = 0;
|
||||
}
|
||||
var step = Math.pow(10, Math.max(str1Length, str2Length));
|
||||
result = (num1 * step) / (num2 * step);
|
||||
return transferToNumber(result);
|
||||
},
|
||||
|
||||
// 获取浮点数的小数位数
|
||||
};
|
||||
function getPrecision(num) {
|
||||
const str = String(num);
|
||||
const decimalIndex = str.indexOf(".");
|
||||
return decimalIndex === -1 ? 0 : str.length - decimalIndex - 1;
|
||||
}
|
||||
// 处理出现科学计数法
|
||||
function transferToNumber(num) {
|
||||
if (isNaN(num)) {
|
||||
return num
|
||||
}
|
||||
num = '' + num
|
||||
num = parseFloat(num)
|
||||
let eformat = num.toExponential() // 转换为标准的科学计数法形式(字符串)
|
||||
let tmpArray = eformat.match(/\d(?:\.(\d*))?e([+-]\d+)/) // 分离出小数值和指数值
|
||||
let number = num.toFixed(Math.max(0, (tmpArray[1] || '').length - tmpArray[2]))
|
||||
return number
|
||||
}
|
||||
export default math;
|
|
@ -334,7 +334,7 @@
|
|||
</el-form-item>
|
||||
|
||||
<el-form-item
|
||||
v-if="form.deviceType === 'MINIATURE_BREAKER' || form.deviceType === 'DOOR_SENSOR'"
|
||||
v-if="form.deviceType === 'MINIATURE_BREAKER' || form.deviceType === 'MOLDED_BREAKER' || form.deviceType === 'DOOR_SENSOR'"
|
||||
label="父设备:"
|
||||
prop="parentId"
|
||||
>
|
||||
|
|
|
@ -89,7 +89,7 @@
|
|||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column align="center" label="本月电量" prop="tmReadSum" width="100">
|
||||
<el-table-column align="center" label="本月电量(度)" prop="tmReadSum" width="100">
|
||||
<template slot-scope="scope">
|
||||
<span :title="scope.row.tmReadSum" class="lay-table-textarea">
|
||||
{{ scope.row.tmReadSum || 0 }}
|
||||
|
@ -97,7 +97,7 @@
|
|||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column align="center" label="上月电量" prop="lmReadSum" width="100">
|
||||
<el-table-column align="center" label="上月电量(度)" prop="lmReadSum" width="100">
|
||||
<template slot-scope="scope">
|
||||
<span :title="scope.row.lmReadSum" class="lay-table-textarea">
|
||||
{{ scope.row.lmReadSum || 0 }}
|
||||
|
@ -176,6 +176,7 @@ import "@riophae/vue-treeselect/dist/vue-treeselect.css";
|
|||
import { projectElectricityTable } from "@/api/iot/project_new";
|
||||
import { listSpace } from "@/api/iot/space";
|
||||
import { getProjectGroupList } from "@/api/tenant/project";
|
||||
import math from "@/utils/math.js"
|
||||
export default {
|
||||
name: "EElectricity",
|
||||
props: {
|
||||
|
@ -243,13 +244,13 @@ export default {
|
|||
this.getProjectGroupList();
|
||||
},
|
||||
handleQuery() {
|
||||
// this.queryParams.pageNum = 1;
|
||||
this.queryParams={
|
||||
spaceId: null,
|
||||
deviceId: '',
|
||||
groupId: null,
|
||||
pageNum:1
|
||||
}
|
||||
this.queryParams.pageNum = 1;
|
||||
// this.queryParams={
|
||||
// spaceId: null,
|
||||
// deviceId: '',
|
||||
// groupId: null,
|
||||
// pageNum:1
|
||||
// }
|
||||
this.getList();
|
||||
},
|
||||
handleLinkDevDetails(row) {
|
||||
|
@ -285,10 +286,11 @@ export default {
|
|||
// 查询列表
|
||||
getList() {
|
||||
var queryParams = JSON.parse(JSON.stringify(this.queryParams));
|
||||
console.log("this.queryParams.groupId",this.queryParams)
|
||||
projectElectricityTable(
|
||||
Object.assign(queryParams, {
|
||||
projectId: this.sourceId,
|
||||
groupId: this.groupId,
|
||||
groupId: this.queryParams.groupId,
|
||||
time: this.parseTime(
|
||||
new Date(this.queryTime),
|
||||
"{y}-{m}-01 00:00:00"
|
||||
|
@ -297,15 +299,27 @@ export default {
|
|||
timeType: 'month'
|
||||
})
|
||||
).then((res) => {
|
||||
if(res.rows.length>0){
|
||||
res.rows[0].tmReadSum = '1.0';
|
||||
res.rows[1].tmReadSum = '1.0';
|
||||
res.rows[1].lmReadSum = '2.0';
|
||||
res.rows[1].tmReadSum = '2.0';
|
||||
res.rows[1].lmReadSum = '1.0';
|
||||
// if(res.rows.length>0){
|
||||
// res.rows[0].tmReadSum = '1.0';
|
||||
// res.rows[1].tmReadSum = '1.0';
|
||||
// res.rows[1].lmReadSum = '2.0';
|
||||
// res.rows[1].tmReadSum = '2.0';
|
||||
// res.rows[1].lmReadSum = '1.0';
|
||||
// }
|
||||
if(res.rows && res.rows.length){
|
||||
this.tableList = res.rows.map(item=>{
|
||||
return {
|
||||
...item,
|
||||
tmReadSum: math.multiply(item.tmReadSum,0.001),
|
||||
lmReadSum: math.multiply(item.lmReadSum,0.001)
|
||||
}
|
||||
});
|
||||
this.total = res.total;
|
||||
}else{
|
||||
this.tableList = [];
|
||||
this.total = 0;
|
||||
}
|
||||
this.tableList = res.rows;
|
||||
this.total = res.total;
|
||||
|
||||
});
|
||||
},
|
||||
getSummaries(param) {
|
||||
|
@ -318,7 +332,7 @@ export default {
|
|||
}
|
||||
// const values = data.map(item => Number(item[column.property]));
|
||||
const values = data.map((item,i)=>{
|
||||
if(index===2){
|
||||
if(index===1 || index===2 || index===5 ){
|
||||
return NaN;
|
||||
}else{
|
||||
return Number(item[column.property]);
|
||||
|
@ -328,7 +342,7 @@ export default {
|
|||
sums[index] = values.reduce((prev, curr) => {
|
||||
const value = Number(curr);
|
||||
if (!isNaN(value)) {
|
||||
return prev + curr;
|
||||
return math.add(prev,curr);
|
||||
} else {
|
||||
return prev;
|
||||
}
|
||||
|
@ -338,23 +352,23 @@ export default {
|
|||
sums[index] = '';
|
||||
}
|
||||
});
|
||||
// 获取上个月电量和本月电量
|
||||
const lastMonthEnergy = parseFloat(sums[4]) || 0;
|
||||
const thisMonthEnergy = parseFloat(sums[3]) || 0;
|
||||
// 计算对比百分比
|
||||
let percentage = 0;
|
||||
if (lastMonthEnergy !== 0) {
|
||||
percentage = ((thisMonthEnergy - lastMonthEnergy) / lastMonthEnergy) * 100;
|
||||
} else {
|
||||
if(thisMonthEnergy==0 && lastMonthEnergy==0){
|
||||
percentage = 0;
|
||||
}else if(thisMonthEnergy==0){
|
||||
percentage = -100;
|
||||
}else if(lastMonthEnergy==0){
|
||||
percentage = 100;
|
||||
}
|
||||
}
|
||||
sums[5] = percentage.toFixed(2) + '%';
|
||||
// // 获取上个月电量和本月电量
|
||||
// const lastMonthEnergy = parseFloat(sums[4]) || 0;
|
||||
// const thisMonthEnergy = parseFloat(sums[3]) || 0;
|
||||
// // 计算对比百分比
|
||||
// let percentage = 0;
|
||||
// if (lastMonthEnergy !== 0) {
|
||||
// percentage = ((thisMonthEnergy - lastMonthEnergy) / lastMonthEnergy) * 100;
|
||||
// } else {
|
||||
// if(thisMonthEnergy==0 && lastMonthEnergy==0){
|
||||
// percentage = 0;
|
||||
// }else if(thisMonthEnergy==0){
|
||||
// percentage = -100;
|
||||
// }else if(lastMonthEnergy==0){
|
||||
// percentage = 100;
|
||||
// }
|
||||
// }
|
||||
// sums[5] = percentage.toFixed(2) + '%';
|
||||
return sums;
|
||||
}
|
||||
},
|
||||
|
|
Loading…
Reference in New Issue