|
@@ -7,18 +7,17 @@ import stop from '@/assets/svg/stop2.svg'
|
|
|
import RightFrame from '@/components/RightFrame.vue'
|
|
|
import Card01 from '@/components/card/Card01.vue'
|
|
|
import Chart from '@/components/Chart.vue'
|
|
|
-import {getWaterQualityLatest} from '@/api/gx'
|
|
|
import StripeTable from '@/components/StripeTable.vue'
|
|
|
import {getAlarmInfo} from '@/api/alarm.ts'
|
|
|
import StationRightButtonGroup from "@/components/StationRightButtonGroup.vue";
|
|
|
import GwVideo from "@/components/Video/index.vue";
|
|
|
import {getVideoCodeByMark} from "@/components/Video/video";
|
|
|
import {Operate} from "@/utils/tdInstruction";
|
|
|
-import {getDeviceByType} from "@/utils/device";
|
|
|
-import {getDeviceStatus} from "@/api/nanshui";
|
|
|
+import {getWaterQualityData} from "@/api/nanshui";
|
|
|
import {HexToRgb} from "@/utils/color";
|
|
|
import bus from "@/utils/bus";
|
|
|
import DataTag from "@/components/tag/DataTag.vue";
|
|
|
+import {Timer, VideoPlay} from '@element-plus/icons-vue'
|
|
|
|
|
|
const route = useRoute()
|
|
|
const videoSrc = ref(new URL('@/assets/images/video.png', import.meta.url).href)
|
|
@@ -40,14 +39,36 @@ const RGB_RED = HexToRgb(RED)
|
|
|
const LIGHT_RED = `rgba(${RGB_RED[0]}, ${RGB_RED[1]}, ${RGB_RED[2]}, 0.3)`
|
|
|
|
|
|
const frequency = ref([2, 8])
|
|
|
-
|
|
|
-const wqData = ref({d1: '6', d2: '22.3', d3: '5', d4: '20', d5: '6', d6: '22.3', d7: '5', d8: '20'})
|
|
|
-// 设备列表
|
|
|
-const deviceList = reactive(getDeviceByType('水质测验设备').filter(d => d.deviceName !== '控制单元'))
|
|
|
+const wqData = ref({})
|
|
|
// 水质测验模拟 0:结束 1:播放 2:暂停
|
|
|
const testSimulationStatus = ref(0)
|
|
|
// 获取视频CODE
|
|
|
const videoCode = ref(getVideoCodeByMark(route.params.stcd + '', "室内"))
|
|
|
+const alarmType = ref({
|
|
|
+ '1': '巡检维护',
|
|
|
+ '2': '故障',
|
|
|
+ '3': '仪器校准',
|
|
|
+ '4': '提醒'
|
|
|
+})
|
|
|
+const alarmColumns = [
|
|
|
+ {
|
|
|
+ label: '报警类型', prop: 'warnType', width: '100', convertFn: (data) => {
|
|
|
+ return data ? alarmType.value[data.trim()] : ''
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '时间', prop: 'reportTime', convertFn: (data) => {
|
|
|
+ return data ? data.substring(5, 16) : ''
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '告警内容', prop: 'warnContent', width: '180', convertFn: (data) => {
|
|
|
+ return data ? data.trim() : ''
|
|
|
+ }
|
|
|
+ },
|
|
|
+]
|
|
|
+const alarmData = reactive([])
|
|
|
+const left1Ref = ref(null)
|
|
|
|
|
|
/**
|
|
|
* 测验模拟
|
|
@@ -75,87 +96,36 @@ function handleTestSimulation(mode) {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-function jumpDevicePage(name) {
|
|
|
- // View.changeDeviceView('打开模型', route.params.stcd, name)
|
|
|
-}
|
|
|
-
|
|
|
-/**
|
|
|
- * 获取设备状态
|
|
|
- */
|
|
|
-function deviceStatus() {
|
|
|
- getDeviceStatus().then(res => {
|
|
|
- const status = res.data?.devstatus
|
|
|
- if (status) {
|
|
|
- deviceList.forEach(d => {
|
|
|
- d['status'] = status[d['nanshuiDevId']]
|
|
|
- })
|
|
|
- }
|
|
|
- })
|
|
|
-}
|
|
|
-
|
|
|
/**
|
|
|
* 获取最新水质数据
|
|
|
*/
|
|
|
function getLatestWaterQuality() {
|
|
|
- getWaterQualityLatest({stcds: route.params.stcd}).then(res => {
|
|
|
- const data = res.data[0]
|
|
|
- wqData.value = {
|
|
|
- d1: data.ph,
|
|
|
- d2: data.dox,
|
|
|
- d3: data.chla,
|
|
|
- d4: data.turb,
|
|
|
- d5: data.wt,
|
|
|
- d6: data.cond,
|
|
|
- d7: data.tn,
|
|
|
- d8: data.tp
|
|
|
+ getWaterQualityData(route.params.stcd).then(res => {
|
|
|
+ if (res.data.wqdata && res.data.wqdata.length > 0) {
|
|
|
+ wqData.value = Object.keys(res.data.wqdata).reduce((acc, key) => {
|
|
|
+ acc[key.toLowerCase()] = res.data.wqdata[key];
|
|
|
+ return acc;
|
|
|
+ }, {});
|
|
|
}
|
|
|
})
|
|
|
}
|
|
|
|
|
|
-const alarmType = ref({
|
|
|
- '1': '巡检维护',
|
|
|
- '2': '故障',
|
|
|
- '3': '仪器校准',
|
|
|
- '4': '提醒'
|
|
|
-})
|
|
|
-
|
|
|
-const alarmColumns = [
|
|
|
- {
|
|
|
- label: '报警类型', prop: 'warnType', width: '100', convertFn: (data) => {
|
|
|
- return data ? alarmType.value[data.trim()] : ''
|
|
|
- }
|
|
|
- },
|
|
|
- {
|
|
|
- label: '时间', prop: 'reportTime', convertFn: (data) => {
|
|
|
- return data ? data.substring(5, 16) : ''
|
|
|
- }
|
|
|
- },
|
|
|
- {
|
|
|
- label: '告警内容', prop: 'warnContent', width: '180', convertFn: (data) => {
|
|
|
- return data ? data.trim() : ''
|
|
|
- }
|
|
|
- },
|
|
|
-]
|
|
|
-const alarmData = reactive([])
|
|
|
-const left1Ref = ref(null)
|
|
|
-
|
|
|
function getAlarmList() {
|
|
|
- var data = {
|
|
|
+ const data = {
|
|
|
'page': 1,
|
|
|
'pageSize': 200,
|
|
|
'stationCode': route.params.stcd
|
|
|
- }
|
|
|
+ };
|
|
|
getAlarmInfo(data).then(res => {
|
|
|
if (res.status == 200) {
|
|
|
alarmData.push(...res.data.records)
|
|
|
}
|
|
|
- // initPoints()
|
|
|
})
|
|
|
}
|
|
|
|
|
|
async function reloadLeft1() {
|
|
|
const colors = ['#5470C6', '#91CC75', '#EE6666'];
|
|
|
- var option = {
|
|
|
+ const option = {
|
|
|
// title: {
|
|
|
// text: '环境温湿度',
|
|
|
// textStyle: {
|
|
@@ -237,7 +207,7 @@ async function reloadLeft1() {
|
|
|
onMounted(() => {
|
|
|
reloadLeft1()
|
|
|
getAlarmList()
|
|
|
- deviceStatus()
|
|
|
+ getLatestWaterQuality()
|
|
|
})
|
|
|
|
|
|
onUnmounted(() => {
|
|
@@ -284,13 +254,19 @@ bus.on('test_simulation', (data) => {
|
|
|
<card01 style="height: 65%" title="监测流程">
|
|
|
<el-form label-width="auto">
|
|
|
<el-form-item label="检测频率">
|
|
|
- <el-select v-model="frequency" multiple placeholder="Select" style="width: 240px">
|
|
|
- <el-option v-for="item in 24" :key="item" :label="item + '时'" :value="item"></el-option>
|
|
|
- <template #tag>
|
|
|
- <el-tag v-for="color in frequency" :key="color" color="#4167F0" style="color: #fff;">{{ color + '时' }}
|
|
|
- </el-tag>
|
|
|
- </template>
|
|
|
- </el-select>
|
|
|
+ <div style="width: 100%;display: flex;align-items: center;justify-content: space-between;">
|
|
|
+ <el-select v-model="frequency" multiple placeholder="Select" style="width: 200px">
|
|
|
+ <el-option v-for="item in 24" :key="item" :label="item + '时'" :value="item"></el-option>
|
|
|
+ <template #tag>
|
|
|
+ <el-tag v-for="color in frequency" :key="color" color="#4167F0" style="color: #fff;">{{
|
|
|
+ color + '时'
|
|
|
+ }}
|
|
|
+ </el-tag>
|
|
|
+ </template>
|
|
|
+ </el-select>
|
|
|
+ <el-button :icon="VideoPlay" style="margin-left: 10px;width: 6rem;" type="primary" @click="">水质测验
|
|
|
+ </el-button>
|
|
|
+ </div>
|
|
|
</el-form-item>
|
|
|
</el-form>
|
|
|
<div :style="{ 'background-image': `url(${simulateSrc})`}" class="video-control-bar test-simulation">
|
|
@@ -301,7 +277,13 @@ bus.on('test_simulation', (data) => {
|
|
|
<icon v-if="testSimulationStatus != 0" :data="stop" class="video-btn" @click="handleTestSimulation('stop')"/>
|
|
|
</div>
|
|
|
<div>
|
|
|
- <h3>测验结果:</h3>
|
|
|
+ <h3 style="display: flex;align-items: center;justify-content: space-between;">
|
|
|
+ 测验结果:
|
|
|
+ <span style="font-size: 1rem;display: flex;align-items: center;">
|
|
|
+ <Timer style="width: 1em; height: 1em; margin-right: 8px"/>
|
|
|
+ {{ wqData.tm }}
|
|
|
+ </span>
|
|
|
+ </h3>
|
|
|
<DataTag :data="wqData"></DataTag>
|
|
|
</div>
|
|
|
</card01>
|