Browse Source

refactor: 本地数据的下发命令移到设备数据中,只是界面

功能还没改
master
wally 4 years ago
parent
commit
4eeced60bf
  1. 43
      src/components/history/device.vue
  2. 55
      src/components/history/local.vue
  3. 49
      src/components/history/search-bar-data.vue
  4. 4
      src/components/statistical/search-bar.vue
  5. 4
      src/views/history.vue

43
src/components/history/data-report.vue → src/components/history/device.vue

@ -1,10 +1,10 @@
<script setup>
import { computed, onMounted, ref } from 'vue';
import { useStore } from 'vuex';
import SearchBar from 'components/history/search-bar-data.vue';
import { getDatas } from 'apis';
import { ElMessage } from 'element-plus';
import dayjs from 'dayjs';
import SearchBar from 'components/history/search-bar-data.vue';
const search = ref({});
const page = ref({
@ -114,17 +114,11 @@ function formatTime(time) {
</script>
<template>
<SearchBar :loading-search="loadingSearch" :show-export="true" @search="onSearch" />
<SearchBar :loading-search="loadingSearch" :show-command="true" :show-export="true" @search="onSearch" />
<template v-if="data">
<el-table :data="data" :max-height="contentHeight" border stripe style="width: 100%">
<el-table-column align="center" fixed label="设备编号" min-width="80" prop="deviceNo" />
<el-table-column align="center" label="ICCID" min-width="190" prop="iccid" />
<el-table-column align="center" label="IMEI" min-width="150" prop="imei" />
<el-table-column align="center" label="信号强度" min-width="80" prop="signal" />
<el-table-column align="center" label="基站编号" min-width="130" prop="stationNo" />
<el-table-column align="center" label="硬件版本" min-width="80" prop="hardwareVersion" />
<el-table-column align="center" label="软件版本" min-width="80" prop="softwareVersion" />
<el-table-column align="center" label="采集时间" min-width="170">
<template #default="scope">
{{ formatTime(+scope.row.time) }}
@ -135,22 +129,29 @@ function formatTime(time) {
{{ formatTime(+scope.row.createdAt) }}
</template>
</el-table-column>
<el-table-column align="center" label="太阳能电压(V)" min-width="120" prop="solarVoltage" />
<el-table-column align="center" label="蓄电池电压(V)" min-width="120" prop="batteryVoltage" />
<el-table-column align="center" label="电压百分比" min-width="94" prop="batteryVoltagePercentage" />
<el-table-column align="center" label="剩余电量" min-width="94" prop="batteryVoltageRemain" />
<el-table-column align="center" label="电池损耗量" min-width="94" prop="batteryLoss" />
<el-table-column align="center" label="机箱温度(℃)" min-width="110" prop="deviceTemperature" />
<el-table-column align="center" label="机箱湿度(RH%)" min-width="130" prop="deviceHumidity" />
<el-table-column align="center" label="锌腐蚀电流(nA)" min-width="130" prop="corrosion1" />
<el-table-column align="center" label="铜腐蚀电流(nA)" min-width="130" prop="corrosion2" />
<el-table-column align="center" label="铝腐蚀电流(nA)" min-width="130" prop="corrosion3" />
<el-table-column align="center" label="钢腐蚀电流(nA)" min-width="130" prop="corrosion4" />
<el-table-column align="center" label="环境温度(℃)" min-width="110" prop="environmentTemperature" />
<el-table-column align="center" label="环境湿度(RH%)" min-width="130" prop="environmentHumidity" />
<el-table-column align="center" label="SO2(ppb)" min-width="90" prop="so2" />
<el-table-column align="center" label="盐温(℃)" min-width="80" prop="salt" />
<el-table-column align="center" label="盐阻(Ω)" min-width="80" prop="salt" />
<el-table-column align="center" label="锌(nA)" min-width="80" prop="corrosion1" />
<el-table-column align="center" label="铜(nA)" min-width="80" prop="corrosion2" />
<el-table-column align="center" label="铝(nA)" min-width="80" prop="corrosion3" />
<el-table-column align="center" label="钢(nA)" min-width="80" prop="corrosion4" />
<!-- TODO:-->
<el-table-column align="center" label="盐分温度(℃)" min-width="110" prop="salt" />
<el-table-column align="center" label="盐分阻抗(Ω)" min-width="110" prop="salt" />
<el-table-column align="center" label="机箱温度(℃)" min-width="110" prop="deviceTemperature" />
<el-table-column align="center" label="机箱湿度(RH%)" min-width="130" prop="deviceHumidity" />
<el-table-column align="center" label="太阳能板电压(V)" min-width="140" prop="solarVoltage" />
<el-table-column align="center" label="蓄电池电压(V)" min-width="120" prop="batteryVoltage" />
<el-table-column align="center" label="电压百分比" min-width="94" prop="batteryVoltagePercentage" />
<el-table-column align="center" label="剩余电量(mAH)" min-width="140" prop="batteryVoltageRemain" />
<el-table-column align="center" label="消耗电量(mAH)" min-width="140" prop="batteryLoss" />
<el-table-column align="center" label="ICCID" min-width="190" prop="iccid" />
<el-table-column align="center" label="IMEI" min-width="150" prop="imei" />
<el-table-column align="center" label="信号强度" min-width="80" prop="signal" />
<el-table-column align="center" label="基站编号" min-width="130" prop="stationNo" />
<el-table-column align="center" label="硬件版本" min-width="80" prop="hardwareVersion" />
<el-table-column align="center" label="软件版本" min-width="80" prop="softwareVersion" />
</el-table>
<el-pagination

55
src/components/history/data-history.vue → src/components/history/local.vue

@ -2,7 +2,7 @@
import { computed, onMounted, ref } from 'vue';
import { useStore } from 'vuex';
import SearchBar from 'components/history/search-bar-data.vue';
import { getHistory, sendCommand } from 'apis';
import { getHistory } from 'apis';
import { ElMessage } from 'element-plus';
import dayjs from 'dayjs';
@ -99,28 +99,6 @@ const onPrev = e => {
getData();
};
/**
* 发送查询指令
* @param {string} dataType ('data', 'event')
*/
async function onSend(dataType) {
try {
const { date, deviceId } = search.value;
const params = {
deviceId,
type: dataType,
};
// eslint-disable-next-line prefer-destructuring
date && date[0] && (params.startTime = date[0]);
// eslint-disable-next-line prefer-destructuring
date && date[1] && (params.endTime = date[1]);
await sendCommand(params);
ElMessage.success('指令发送成功');
} catch (e) {
ElMessage.error('指令发送失败');
}
}
/**
* 格式化时间
* @param {number} time 时间戳
@ -134,27 +112,9 @@ function formatTime(time) {
<template>
<SearchBar :show-export="true" :show-type-select="true" @search="onSearch" />
<el-row class="mb-4">
<el-button plain type="primary" @click="onSend('DATA')">发送查询指令(历史数据)</el-button>
<el-button plain type="primary" @click="onSend('EVENT')">发送查询指令(历史事件)</el-button>
</el-row>
<template v-if="data">
<el-table :data="data" :max-height="contentHeight" border stripe style="width: 100%">
<el-table-column align="center" fixed label="设备编号" min-width="80" prop="deviceNo" />
<el-table-column align="center" label="太阳能电压(V)" min-width="120" prop="solarVoltage" />
<el-table-column align="center" label="蓄电池电压(V)" min-width="120" prop="batteryVoltage" />
<el-table-column align="center" label="机箱温度(℃)" min-width="110" prop="deviceTemperature" />
<el-table-column align="center" label="机箱湿度(RH%)" min-width="130" prop="deviceHumidity" />
<el-table-column align="center" label="环境温度(℃)" min-width="110" prop="environmentTemperature" />
<el-table-column align="center" label="环境湿度(RH%)" min-width="130" prop="environmentHumidity" />
<el-table-column align="center" label="SO2(ppb)" min-width="90" prop="so2" />
<el-table-column align="center" label="盐温(℃)" min-width="80" prop="salt" />
<el-table-column align="center" label="盐阻(Ω)" min-width="80" prop="salt" />
<el-table-column align="center" label="锌腐蚀电流(nA)" min-width="130" prop="corrosion1" />
<el-table-column align="center" label="铜腐蚀电流(nA)" min-width="130" prop="corrosion2" />
<el-table-column align="center" label="铝腐蚀电流(nA)" min-width="130" prop="corrosion3" />
<el-table-column align="center" label="钢腐蚀电流(nA)" min-width="130" prop="corrosion4" />
<el-table-column align="center" label="采集时间" min-width="170">
<template #default="scope">
{{ formatTime(+scope.row.time) }}
@ -165,6 +125,19 @@ function formatTime(time) {
{{ formatTime(+scope.row.createdAt) }}
</template>
</el-table-column>
<el-table-column align="center" label="锌腐蚀电流(nA)" min-width="130" prop="corrosion1" />
<el-table-column align="center" label="铜腐蚀电流(nA)" min-width="130" prop="corrosion2" />
<el-table-column align="center" label="铝腐蚀电流(nA)" min-width="130" prop="corrosion3" />
<el-table-column align="center" label="钢腐蚀电流(nA)" min-width="130" prop="corrosion4" />
<el-table-column align="center" label="环境温度(℃)" min-width="110" prop="environmentTemperature" />
<el-table-column align="center" label="环境湿度(RH%)" min-width="130" prop="environmentHumidity" />
<el-table-column align="center" label="SO2(ppb)" min-width="90" prop="so2" />
<el-table-column align="center" label="盐分温度(℃)" min-width="110" prop="salt" />
<el-table-column align="center" label="盐分阻抗(Ω)" min-width="110" prop="salt" />
<el-table-column align="center" label="太阳能板电压(V)" min-width="140" prop="solarVoltage" />
<el-table-column align="center" label="蓄电池电压(V)" min-width="120" prop="batteryVoltage" />
<el-table-column align="center" label="机箱温度(℃)" min-width="110" prop="deviceTemperature" />
<el-table-column align="center" label="机箱湿度(RH%)" min-width="130" prop="deviceHumidity" />
</el-table>
<el-pagination

49
src/components/history/search-bar-data.vue

@ -6,13 +6,6 @@
<el-option v-for="item in devices" :key="item.deviceId" :label="item.address" :value="item.deviceId"></el-option>
</el-select>
</el-form-item>
<el-form-item v-if="showTypeSelect" label="类型:">
<el-select v-model="searchDevice.dataType" placeholder="选择查询类型">
<el-option label="全部" value=""></el-option>
<el-option label="事件上报" value="ReportHistoryEvent"></el-option>
<el-option label="业务上报" value="ReportHistoryData"></el-option>
</el-select>
</el-form-item>
<el-form-item label="起始时间:">
<el-date-picker v-model="searchDevice.date[0]" format="YYYY-MM-DD HH:mm" placeholder="起始时间" type="datetime"></el-date-picker>
@ -21,9 +14,13 @@
<el-form-item label="截止时间:">
<el-date-picker v-model="searchDevice.date[1]" format="YYYY-MM-DD HH:mm" placeholder="截止时间" type="datetime"></el-date-picker>
</el-form-item>
<!--TODO:-->
<el-form-item>
<el-button :loading="loadingSearch" type="primary" @click="onSubmit">
<template v-if="showCommand">
<el-button type="primary" @click="onSend('DATA')">查询历史数据</el-button>
<el-button type="warning" @click="onSend('EVENT')">查询历史事件</el-button>
</template>
<el-button v-else :loading="loadingSearch" type="primary" @click="onSubmit">
<i class="el-icon-search mr-2"></i>
查询
</el-button>
@ -43,12 +40,12 @@ import { computed, defineEmits, defineProps, reactive, ref, watch } from 'vue';
import { useStore } from 'vuex';
import dayjs from 'dayjs';
import { exportHistory } from 'apis';
import { ElMessage } from 'element-plus';
const emit = defineEmits(['search']);
const searchDevice = reactive({
deviceId: '',
date: ['', new Date()],
dataType: 'ReportHistoryData',
});
const searchDeviceForm = ref(null); // form
const store = useStore();
@ -58,8 +55,8 @@ const loadingExport = ref(false);
defineProps({
showExport: Boolean,
showTypeSelect: Boolean,
loadingSearch: Boolean,
showCommand: Boolean,
});
// currentDeviceId
@ -79,21 +76,18 @@ const change = e => {
//
function generateParams() {
const { deviceId, date, dataType } = searchDevice;
const { deviceId, date } = searchDevice;
let params = {
deviceId,
date,
dataType,
};
if (date) {
const start = +dayjs(date[0]).format('x');
const end = +dayjs(date[1]).format('x');
const daterange = [start, end];
params = {
deviceId,
date: daterange,
dataType,
date: [start, end],
};
}
@ -123,4 +117,27 @@ async function onExport() {
throw new Error(error);
}
}
/**
* 发送查询指令
* @param {string} dataType ('data', 'event')
*/
async function onSend(dataType) {
try {
console.log(dataType);
// const { date, deviceId } = props.search.value;
// const params = {
// deviceId,
// type: dataType,
// };
// // eslint-disable-next-line prefer-destructuring
// date && date[0] && (params.startTime = date[0]);
// // eslint-disable-next-line prefer-destructuring
// date && date[1] && (params.endTime = date[1]);
// await sendCommand(params);
// ElMessage.success('');
} catch (e) {
ElMessage.error('指令发送失败');
}
}
</script>

4
src/components/statistical/search-bar.vue

@ -38,16 +38,12 @@
</el-form>
</template>
<script></script>
<script setup>
import { computed, defineEmits, defineProps, reactive, ref, watch } from 'vue';
import { useStore } from 'vuex';
import dayjs from 'dayjs';
import { exportHistory } from 'apis';
export default { name: 'StatisticsSearch' };
const emit = defineEmits(['search']);
const searchDevice = reactive({
deviceId: '',

4
src/views/history.vue

@ -11,8 +11,8 @@
<script setup>
import { ref } from 'vue';
import Local from 'components/history/data-history.vue';
import Device from 'components/history/data-report.vue';
import Local from 'components/history/local.vue';
import Device from 'components/history/device.vue';
const activeName = ref('local');
</script>

Loading…
Cancel
Save