修改测试bug

This commit is contained in:
GGJ
2024-12-09 16:30:40 +08:00
parent 2ed728ee71
commit 22d85dfca1
30 changed files with 499 additions and 221 deletions

View File

@@ -14,8 +14,8 @@
<Table ref="tableRef" />
</el-dialog>
<popup ref="detailRef"></popup>
<!-- 离线数据导入组件 -->
<offLineDataImport ref="offLineDataImportRef"></offLineDataImport>
<!-- 离线数据导入组件 -->
<!-- <offLineDataImport ref="offLineDataImportRef"></offLineDataImport> -->
</template>
<script lang="ts" setup>
import { ref, onMounted, provide, onBeforeUnmount } from 'vue'
@@ -25,6 +25,9 @@ import TableHeader from '@/components/table/header/index.vue'
import offLineDataImport from '../offLineDataImport/index.vue'
import popup from './popup.vue'
import { useRouter } from 'vue-router'
defineOptions({
name: 'offLineDataImport'
})
const emit = defineEmits(['back'])
const dialogVisible = ref(false)
const height = ref(0)
@@ -40,7 +43,11 @@ const tableStore: any = new TableStore({
method: 'POST',
column: [
// { width: '60', type: 'checkbox', fixed: 'left' },
{ title: '序号', type: 'seq', width: 80 },
{
title: '序号', width: 80, formatter: (row: any) => {
return (tableStore.table.params.pageNum - 1) * tableStore.table.params.pageSize + row.rowIndex + 1
}
},
{
field: 'projectName',
title: '工程名称',
@@ -133,15 +140,26 @@ const handleaddDevice = () => {
push({
path: '/supplementaryRecruitment',
query: {
activeName: '0',
id: lineId.value,
ndid: deviceData.value?.ndid
ndid: deviceData.value?.ndid,
}
})
}
const offLineDataImportRef = ref()
const handleImport = () => {
//设备devId&监测点lineId带入组件
offLineDataImportRef.value && offLineDataImportRef.value.open(deviceId.value, lineId.value)
// offLineDataImportRef.value && offLineDataImportRef.value.open(deviceId.value, lineId.value)
push({
path: '/supplementaryRecruitment',
query: {
activeName: '1',
lineId: lineId.value,
deviceId: deviceId.value,
}
})
}
onMounted(() => {

View File

@@ -36,7 +36,9 @@ const tableStore: any = new TableStore({
showPage: false,
column: [
{ width: '60', type: 'checkbox', fixed: 'left' },
{ title: '序号', type: 'seq', width: 80 },
{ title: '序号', width: 80,formatter: (row: any) => {
return (tableStore.table.params.pageNum - 1) * tableStore.table.params.pageSize + row.rowIndex + 1
} },
{ field: 'name', title: '文件名称', minWidth: 170 },
{ field: 'createTime', title: '导入时间', minWidth: 170 },
{ field: 'allCount', title: '数据总数(条)', minWidth: 170 },

View File

@@ -12,7 +12,7 @@
</el-select>
</el-form-item>
<el-form-item label="数据类型" label-width="80px">
<el-select v-model="form.statMethod" placeholder="请选择类型">
<el-select v-model="form.statMethod" placeholder="请选择数据类型">
<el-option v-for="item in typeOptions" :key="item.id" :label="item.name"
:value="item.id"></el-option>
</el-select>

View File

@@ -4,7 +4,7 @@
<!-- @init="nodeClick" -->
<PointTree @node-click="nodeClick" @pointTypeChange="pointTypeChange"></PointTree>
<div class="device-control-right" v-if="deviceData">
<el-descriptions title="设备基本信息" class="mb10" :column="3" border>
<el-descriptions title="监测点信息" class="mb10" :column="3" border>
<template #extra>
<!-- <el-button v-if="deviceType == '1'" type="primary" @click="handleDownLoadTemplate">
模版下载
@@ -90,26 +90,34 @@
</el-select>
</el-form-item>
<el-form-item label="值类型" v-if="!dataSet.includes('_items')">
<el-select style="min-width: 120px !important" v-model="formInline.dataLevel"
<el-form-item v-if="!dataSet.includes('_items')">
<!-- <el-select style="min-width: 120px !important" v-model="formInline.dataLevel"
:disabled="dataLevel == 'Primary' && deviceType == '0'">
<el-option value="Primary" label="一次值"></el-option>
<el-option value="Secondary" label="二次值"></el-option>
</el-select>
</el-form-item>
<el-form-item label="筛选" v-if="!dataSet.includes('_')">
<el-input style="width: 160px" v-model="searchValue" autocomplete="off" clearable
@input="handleSearch" placeholder="请输入关键词"></el-input>
</el-select> -->
<el-radio-group v-model="formInline.dataLevel" @change="handleClick">
<el-radio-button label="一次值" value="Primary" />
<el-radio-button label="二次值" value="Secondary" />
</el-radio-group>
</el-form-item>
<el-form-item label="谐波次数" v-show="oddAndEvenFlag && !dataSet.includes('_')">
<el-select v-model="oddAndEven" style="min-width: 120px !important">
<el-option v-for="item in oddAndEvenList" :key="item.value" :label="item.label"
:value="item.value" />
</el-select>
</el-form-item>
<el-form-item label="关键字" v-if="!dataSet.includes('_')">
<el-input style="width: 160px" v-model="searchValue" autocomplete="off" clearable
@input="handleSearch" placeholder="请输入关键词"></el-input>
</el-form-item>
</template>
<template #operation>
<el-button type="primary" icon="el-icon-Search" @click="handleClick">查询</el-button>
<el-button type="primary"
:icon="dataSet.indexOf('_realtimedata') != -1 ? 'el-icon-Refresh' : 'el-icon-Search'"
@click="handleClick">{{ dataSet.indexOf('_realtimedata') != -1 ? '刷新' : '查询' }}</el-button>
<el-button type="primary" :disabled="tableLoading" v-if="realTimeFlag" :icon="DataLine"
@click="handleTrend">
谐波频谱
@@ -146,17 +154,19 @@
></div> -->
<!-- v-loading="tableLoading" -->
<div :style="{ height: tableHeight }" v-loading="tableLoading" v-if="!dataSet.includes('_')">
<div style="overflow: auto" :style="{ height: tableHeight }" v-loading="tableLoading" v-if="
<div style="overflow: auto" :style="{ height: tableHeight }" v-if="
dataSet.indexOf('_trenddata') == -1 &&
dataSet.indexOf('_realtimedata') == -1 &&
dataSet.indexOf('_event') == -1 &&
tableData.length != 0
">
<div class="mb5 mt5" v-if="dataSet.indexOf('_history') == -1">
<div class="mb5 mt5" v-if="dataSet.indexOf('_history') == -1"
style="font-weight: 800;font-size: 16px;text-align: center">
统计时间:{{ tableData[0]?.time || '' }}
</div>
<nearRealTimeData ref="nearRealTimeDataRef" v-if="dataSet.indexOf('_history') == -1" />
<nearRealTimeData ref="nearRealTimeDataRef" v-if="dataSet.indexOf('_history') == -1"
:style="{ height: tableHeightBox, overflow: 'auto' }" />
<!-- 循环渲染的card 最新数据/历史数据显示 -->
@@ -346,7 +356,7 @@
<el-empty v-else description="请选择设备" class="device-control-right" />
<Detail ref="detailRef" :detail="detail" @close="detail = null" :dataLevel="dataLevel" v-if="detail"></Detail>
<!-- 离线数据导入组件 -->
<offLineDataImport ref="offLineDataImportRef"></offLineDataImport>
<!-- <offLineDataImport ref="offLineDataImportRef"></offLineDataImport> -->
<!-- 补召日志 -->
<analysisList ref="analysisListRef"></analysisList>
</div>
@@ -399,7 +409,7 @@ const devTypeOptions = ref([])
const devModelOptions = ref([])
const tableData = ref<any[]>([])
const tableHeight = mainHeight(290).height
const tableHeightBox = mainHeight(310).height
const tableHeightBox = mainHeight(330).height
const searchValue = ref('')
const TrendList = ref({})
const oddAndEven = ref('1')
@@ -631,7 +641,8 @@ const deviceId: any = ref('')
const lineId: any = ref('')
const dataLevel: any = ref('')
const nodeClick = async (e: anyObj) => {
console.log("🚀 ~ nodeClick ~ e:", e)
// console.log("🚀 ~ nodeClick ~ e:", e)
if (e.level == 2) return
searchValue.value = ''
await queryDictType({
lineId: e?.id,
@@ -642,7 +653,7 @@ const nodeClick = async (e: anyObj) => {
formInline.targetType = res.data[0].id
})
if (e.level == 2) return
deviceId.value = e?.pid
lineId.value = e?.id
TrendList.value = e
@@ -915,6 +926,10 @@ const getRealDataMqttMsg = async () => {
ElMessage.success('装置应答失败')
tableLoading.value = false
}
}).catch(e => {
setTimeout(() => {
tableLoading.value = false
}, 0)
})
}
//tab点击事件
@@ -1018,29 +1033,29 @@ const handleClick = async (tab?: any) => {
}
//测试项记录
if (dataSet.value.includes('_items')) {
setTimeout(() => {
formInline.startTime = datePickerRef.value && datePickerRef.value?.timeValue[0]
formInline.endTime = datePickerRef.value && datePickerRef.value?.timeValue[1]
formInline.id = dataSet.value
getTestData(formInline)
.then((res: any) => {
tableData.value = res.data
formInline.total = res.data.total
tableLoading.value = false
setTimeout(() => { //targetType
testItemRecordsRef.value?.setData(res.data,)
}, 500)
setTimeout(() => {
loading.value = false
}, 1500)
})
.catch(e => {
setTimeout(() => {
setTimeout(() => {
formInline.startTime = datePickerRef.value && datePickerRef.value?.timeValue[0]
formInline.endTime = datePickerRef.value && datePickerRef.value?.timeValue[1]
formInline.id = dataSet.value
getTestData(formInline)
.then((res: any) => {
tableData.value = res.data
formInline.total = res.data.total
tableLoading.value = false
}, 1500)
})
},100)
setTimeout(() => { //targetType
testItemRecordsRef.value?.setData(res.data,)
}, 500)
setTimeout(() => {
loading.value = false
}, 1500)
})
.catch(e => {
setTimeout(() => {
tableLoading.value = false
}, 1500)
})
}, 100)
}

View File

@@ -1,18 +1,21 @@
<template>
<div>
<vxe-table auto-resize :data="dataList" v-bind="defaultAttribute" :key="key" :mergeCells="mergeCells" v-if="flag">
<vxe-table auto-resize :data="dataList" v-bind="defaultAttribute" :key="key" :mergeCells="mergeCells"
v-if="flag">
<vxe-column v-for="item in column" :field="item.field" :title="item.title" :formatter="formatter"
:width="item.width"></vxe-column>
</vxe-table>
<vxe-table v-if="flag1" auto-resize :data="dataList1"
v-bind="defaultAttribute" :key="key" :mergeCells="mergeCells">
<vxe-column field="otherName" title="名称" width="350"></vxe-column>
<vxe-column field="valueM" title="数据"></vxe-column>
<vxe-table v-if="flag1" auto-resize :data="dataList1" v-bind="defaultAttribute" :key="key"
:mergeCells="mergeCells">
<vxe-column field="otherName" title="名称"></vxe-column>
<vxe-column field="valueM" title="数据" :formatter="formatter"></vxe-column>
<vxe-column field="otherName1" title="名称"></vxe-column>
<vxe-column field="valueM1" title="数据" :formatter="formatter"></vxe-column>
</vxe-table>
<el-empty :style="height" description="暂无数据"v-if="!flag && !flag1" ></el-empty>
<el-empty :style="height" description="暂无数据" v-if="!flag && !flag1"></el-empty>
</div>
</template>
@@ -28,8 +31,8 @@ const key: any = ref(0)
const column: any = ref([])
const dataList1: any = ref([])
const targetName: any = ref('')
const flag=ref(true)
const flag1=ref(true)
const flag = ref(true)
const flag1 = ref(true)
const mergeCells: any = ref<VxeTablePropTypes.MergeCells>([
// { row: 0, col: 1, rowspan: 1, colspan: 3 },
@@ -37,30 +40,41 @@ const mergeCells: any = ref<VxeTablePropTypes.MergeCells>([
])
const setData = (data: any, targetType: any) => {
let list = JSON.parse(JSON.stringify(data))
dataList1.value = []
// dataList1.value = []
let list1: any = []
dataList.value = []
flag.value=true
flag1.value=true
flag.value = true
flag1.value = true
targetName.value = targetType[0].name
if (targetType[0].name == '基本数据') {
flag.value=false
flag1.value=false
flag.value = false
flag1.value = false
list.forEach((item: any, index: number) => {
if (item.valueA == null && item.valueB == null && item.valueC == null) {
// item.valueA = item.valueM
// mergeCells.value.push({ row: index, col: 1, rowspan: 1, colspan: 3 })
dataList1.value.push(item)
flag1.value=true
list1.push(item)
flag1.value = true
} else {
dataList.value.push(item)
flag.value=true
flag.value = true
}
})
if (list1.length > 0) {
list1.forEach((item: any, index: number) => {
if (index % 2 == 0) {
dataList1.value.push(item)
} else {
dataList1.value[dataList1.value.length - 1].otherName1 = item.otherName
dataList1.value[dataList1.value.length - 1].valueM1 = item.valueM
}
})
}
column.value = [
{ field: 'otherName', title: '名称', width: 350 },
{ field: 'otherName', title: '名称', },
{ field: 'valueA', title: 'A相', },
{ field: 'valueB', title: 'B相', },
{ field: 'valueC', title: 'C相', },
@@ -68,9 +82,9 @@ const setData = (data: any, targetType: any) => {
]
} else {
dataList.value = list
flag.value=true
flag.value = true
flag1.value=false
flag1.value = false
column.value = [
{ field: 'otherName', title: '谐波次数', },
{ field: 'valueA', title: 'A相', },
@@ -81,7 +95,19 @@ const setData = (data: any, targetType: any) => {
key.value += 1
}
const formatter = (row: any) => {
return row.cellValue == null ? '/' : row.cellValue
if (row.column.property == 'valueM1') {
if (row.row.otherName1 == null) {
row.cellValue == ''
} else {
return row.cellValue == null ? '/' : row.cellValue == 3.14159 ? '/' : row.cellValue
}
} else {
return row.cellValue == null ? '/' : row.cellValue == 3.14159 ? '/' : row.cellValue
}
}
defineExpose({ setData })

View File

@@ -1,66 +1,93 @@
<!-- 离线数据导入 -->
<template>
<el-dialog v-model="dialogVisible" title="文件列表" width="70%" :destroy-on-close="true" draggable @closed="close">
<!-- 上传文件列表 -->
<div class="offline_data">
<div class="offline_data_btn">
<!-- <el-dialog v-model="dialogVisible" title="文件列表" width="70%" :destroy-on-close="true" draggable @closed="close"> -->
<!-- 上传文件列表 -->
<div class=" ">
<!-- <div class="offline_data_btn">
<el-button :loading="loading" style="margin-left: 10px" type="primary" @click="submitUpload">
上传离线数据
</el-button>
<el-button type="primary" @click="removeAllFile" :loading="loading"
:disabled="offLineFileList.length == 0">
重置上传文件
</el-button>
</div>
<div :style="tableHeight">
<vxe-table border auto-resize height="auto" :data="offLineFileList" v-bind="defaultAttribute"
:key="updateKey">
<vxe-column field="name" align="center" title="文件名"></vxe-column>
<vxe-column field="webkitRelativePath" align="center" title="文件地址"></vxe-column>
<vxe-column field="status" align="center" title="状态" width="250">
<template v-slot:default="scoped">
<el-progress v-if="scoped.row.status == 0" :percentage="0">
<el-button text>等待上传</el-button>
</el-progress>
<el-progress v-if="scoped.row.status == -1" :percentage="30" :indeterminate="true">
<el-button text>上传中...</el-button>
</el-progress>
<el-progress v-if="scoped.row.status == 1" status="success" :percentage="100">
<el-button text>上传成功</el-button>
</el-progress>
</template>
</vxe-column>
<vxe-column title="操作" width="200px">
<template v-slot:default="scoped">
<el-button link type="danger" @click="removeFile(scoped.row)">移除</el-button>
</template>
</vxe-column>
</vxe-table>
</div>
<el-button type="primary" @click="handleUpload" :loading="loading"
:disabled="offLineFileList.length == 0 || disableHandleUpload">
开始上传
</el-button>
</div> -->
<TableHeader ref="refheader" :showSearch="false">
<template #operation>
<el-button :loading="loading" style="margin-left: 10px" type="primary" @click="submitUpload">
上传离线数据
</el-button>
<el-button type="primary" @click="removeAllFile" :loading="loading"
:disabled="offLineFileList.length == 0">
重置上传文件
</el-button>
<el-button type="primary" @click="handleUpload" :loading="loading"
:disabled="offLineFileList.length == 0 || disableHandleUpload">
开始上传
</el-button>
<el-button :icon="Back" @click="go(-1)">返回</el-button>
</template>
</TableHeader>
<div :style="tableHeight">
<vxe-table border auto-resize height="auto" :data="offLineFileList" v-bind="defaultAttribute"
:key="updateKey">
<vxe-column field="name" align="center" title="文件名"></vxe-column>
<vxe-column field="webkitRelativePath" align="center" title="文件地址"></vxe-column>
<vxe-column field="status" align="center" title="状态" width="300">
<template v-slot:default="scoped">
<el-progress v-if="scoped.row.status == 0" :percentage="0">
<el-button text>等待上传</el-button>
</el-progress>
<el-progress v-if="scoped.row.status == -1" :percentage="30" :indeterminate="true">
<el-button text>上传中...</el-button>
</el-progress>
<el-progress v-if="scoped.row.status == 1" status="success" :percentage="100">
<el-button text>上传成功</el-button>
</el-progress>
</template>
</vxe-column>
<vxe-column title="操作" width="200px">
<template v-slot:default="scoped">
<el-button link type="danger" @click="removeFile(scoped.row)">移除</el-button>
</template>
</vxe-column>
</vxe-table>
</div>
<template #footer>
</div>
<!-- <template #footer>
<div class="dialog-footer">
<!-- <el-button @click="close">取消</el-button> -->
<!-- <el-button type="primary" @click="close">确定</el-button> -->
<el-button type="primary" @click="handleUpload" :loading="loading"
:disabled="offLineFileList.length == 0 || disableHandleUpload">
开始上传
</el-button>
</div>
</template>
</el-dialog>
</template> -->
<!-- </el-dialog> -->
</template>
<script lang="ts" setup>
import { ref } from 'vue'
import TableHeader from '@/components/table/header/index.vue'
import { uploadOffLineDataFile } from '@/api/cs-device-boot/EquipmentDelivery.ts'
import { defaultAttribute } from '@/components/table/defaultAttribute'
import {Back} from '@element-plus/icons-vue'
import { mainHeight } from '@/utils/layout'
import { useRouter, useRoute } from 'vue-router'
const { go } = useRouter() // 路由
const routes = useRoute()
const dialogVisible = ref(false)
const loading = ref(false)
const offLineFileList: any = ref([])
const disableHandleUpload = ref(true)
const tableHeight = mainHeight(550)
const tableHeight = mainHeight(85)
//上传离线数据
const submitUpload = (e: any) => {
const input = document.createElement('input')
@@ -102,8 +129,8 @@ const updateKey = ref(0)
const handleUpload = () => {
loading.value = true
const subForm = new FormData()
subForm.append('devId', deviceId.value)
subForm.append('lineId', lineId.value)
subForm.append('devId', routes.query.deviceId)
subForm.append('lineId', routes.query.lineId)
let webkitRelativePathList: any = []
offLineFileList.value.map((item: any, index: any) => {
subForm.append(`files[${index}]`, item)
@@ -126,22 +153,22 @@ const handleUpload = () => {
loading.value = false
disableHandleUpload.value = true
}
}).catch(()=>{
}).catch(() => {
loading.value = false
disableHandleUpload.value = false
offLineFileList.value.map((item: any) => {
item.status = 0
item.status = 0
})
updateKey.value += 1
})
}
const deviceId: any = ref()
const lineId: any = ref()
const open = (devId: any, lineIds: any) => {
deviceId.value = devId
lineId.value = lineIds
dialogVisible.value = true
}
// const deviceId: any = ref()
// const lineId: any = ref()
// const open = (devId: any, lineIds: any) => {
// deviceId.value = devId
// lineId.value = lineIds
// dialogVisible.value = true
// }
const close = () => {
offLineFileList.value = []
dialogVisible.value = false
@@ -160,4 +187,7 @@ defineExpose({ open })
justify-content: flex-end;
}
}
</style>
// .device {
// height: calc(100vh - 130px);
// }</style>

View File

@@ -1,23 +1,29 @@
<template>
<div class="default-main device">
<currentDevice ref="currentDeviceRef" />
<currentDevice ref="currentDeviceRef" v-if="activeName == '0'" />
<offLineDataImport ref="currentDeviceRef" v-else-if="activeName == '1'" />
</div>
</template>
<script lang="ts" setup>
import { ref, onMounted, watch, nextTick } from 'vue'
import currentDevice from './supplementaryRecruitment/currentDevice.vue'
import offLineDataImport from '@/views/govern/device/control/offLineDataImport/index.vue'
import { useRoute } from 'vue-router'
const route = useRoute()
const activeName = ref('0')
const activeName = ref('')
const currentDeviceRef = ref()
watch(
() => activeName.value,
(val, oldVal) => {
if (val == '0') {
nextTick(() => {
currentDeviceRef.value && currentDeviceRef.value.getMakeUpDataList(route.query)
})
}
// if (val == '0') {
// nextTick(() => {
// currentDeviceRef.value && currentDeviceRef.value.getMakeUpDataList(route.query)
// })
// } else if (val == '1') {
nextTick(() => {
currentDeviceRef.value && currentDeviceRef.value.getMakeUpDataList(route.query)
})
// }
},
{
immediate: true,
@@ -25,8 +31,9 @@ watch(
}
)
onMounted(() => {
console.log()
currentDeviceRef.value && currentDeviceRef.value.getMakeUpDataList(route.query)
activeName.value = route.query.activeName
// currentDeviceRef.value && currentDeviceRef.value.getMakeUpDataList(route.query)
})
</script>
<style lang="scss" scoped>

View File

@@ -19,7 +19,7 @@
</TableHeader>
<!-- 设备补召 -->
<div class="default-main current_device" v-loading="loading">
<div class=" current_device" v-loading="loading">
<div class="current_body" ref="tbodyRef">
<vxe-table border ref="tableRef" :data="dirList" align="center" height="auto"
@@ -95,7 +95,7 @@ const getMakeUpDataList = (row: any) => {
// 进入文件夹
const dirCheckedList: any = ref([])
const tbodyRef = ref()
const tableHeight = mainHeight(105).height
const tableHeight = mainHeight(85).height
const routes = useRoute()
const tableRef = ref()
const selectRowCopy: any = ref(null)

View File

@@ -216,7 +216,9 @@ const tableStore = new TableStore({
url: '/cs-device-boot/EquipmentDelivery/list',
method: 'POST',
column: [
{ title: '序号', type: 'seq',width:60 },
{ title: '序号', width: 80,formatter: (row: any) => {
return (tableStore.table.params.pageNum - 1) * tableStore.table.params.pageSize + row.rowIndex + 1
} },
{ title: '设备名称', field: 'name' },
{
title: '设备类型',

View File

@@ -3,7 +3,7 @@
<div class="realtrend" v-loading="loading">
<div class="select" v-if="!loading">
<div class="mr10">谐波次数 </div>
<el-select v-model="selectValue" style="width: 100px">
<el-select v-model="selectValue" style="width: 100px" @change="selectChange">
<el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
</div>
@@ -29,16 +29,17 @@
</div> -->
<div class="realtrend_table" v-if="Object.keys(tableData).length != 0">
<div class="thead_left">
<p>次数</p>
<p style=" font-weight: 700; background-color: #F3F6F9;">次数()</p>
<p>{{ item.groupName }}{{ item.unit ? '(' + item.unit + ')' : '' }}</p>
<p>国标限值{{ item.unit ? '(' + item.unit + ')' : '' }}</p>
</div>
<div class="thead_right">
<div class="right_cell" v-for="(value, key, index) in tableData" :key="index">
<p v-if="item.groupName.includes('间谐波')">
{{ Number(String(key).replace('data', ' ')) - 0.5 }}
<p v-if="item.groupName.includes('间谐波')" style="background-color: #F3F6F9;">
{{ Number(String(key).replace('data', ' ')) - 0.5 }}
</p>
<p v-else>
<span>{{ String(key).replace('data', ' ') }}</span>
<p v-else style="background-color: #F3F6F9;">
<span>{{ String(key).replace('data', ' ') }}</span>
</p>
<p>
<span v-if="
@@ -49,8 +50,20 @@
{{ value }}
</span>
</p>
<p>
<span v-if="
String(key).includes('data') &&
String(key) != 'dataLevel' &&
String(key) != 'dataTime'
">
{{ gbData[index]?.value || '/' }}
</span>
</p>
</div>
</div>
</div>
</div>
<div class="tab_info" v-if="Object.keys(tableData).length != 0">
@@ -157,7 +170,7 @@ const chartsYxiasData: any = ref([])
const echartsData: any = ref()
const barCharts = ref()
const gbData = ref([])
//加载echarts
const init = () => {
let trendData: any = []
@@ -168,17 +181,17 @@ const init = () => {
count: String(key).replace('data', '')
})
}
let gbData: any = []
gbData.value = []
for (let key in limitData.value) {
gbData.push({
gbData.value.push({
name: key,
value: limitData.value[key]
})
}
if (selectValue.value == '1') {
gbData = gbData.filter((_, index: number) => index % 2 !== 0)
gbData.value = gbData.value.filter((_, index: number) => index % 2 !== 0)
} else if (selectValue.value == '2') {
gbData = gbData.filter((_, index: number) => index % 2 == 0)
gbData.value = gbData.value.filter((_, index: number) => index % 2 == 0)
}
let xAxisList: any = []
chartsData.value.map((item: any, index: any) => {
@@ -207,14 +220,15 @@ const init = () => {
series: []
}
let list: any = [
gbData.map((item: any) => {
return item.value
}),
trendData.map((item: any) => {
return item.value
})
}),
gbData.value.map((item: any) => {
return item.value
}),
]
let legendList = ['国标限值', tabsList.value[activeName.value]?.groupName]
let legendList = [tabsList.value[activeName.value]?.groupName, '国标限值',]
// echartsData.value.legend.data = legendList
list.map((item: any, index: any) => {
echartsData.value.series.push({
@@ -298,6 +312,12 @@ const setRealTrendData = (val: any) => {
emit('changeTrendType', activeName.value)
}
}
const selectChange=(val:any)=>{
loading.value=true
// setTimeout(() => {
// loading.value=false
// },3000)
}
//获取国标限值
const limitData: any = ref()
const setOverLimitData = (val: any) => {
@@ -397,7 +417,7 @@ defineExpose({ open, setRealTrendData, setOverLimitData })
display: flex;
border: 2px solid #eee;
cursor: pointer;
font-size: 13px;
.thead_left {
width: 150px;
height: 100%;
@@ -406,7 +426,7 @@ defineExpose({ open, setRealTrendData, setOverLimitData })
justify-content: space-between;
align-items: center;
line-height: 50px;
font-weight: 800;
padding-bottom: 5px;
p {
@@ -414,7 +434,7 @@ defineExpose({ open, setRealTrendData, setOverLimitData })
height: 100%;
text-align: center;
border: 1px solid #eee;
line-height: 50px;
line-height: 38px;
margin: 0 !important;
}
}
@@ -438,7 +458,7 @@ defineExpose({ open, setRealTrendData, setOverLimitData })
height: 100%;
text-align: center;
border: 1px solid #eee;
line-height: 50px;
line-height: 38px;
margin: 0 !important;
}

View File

@@ -37,7 +37,9 @@ const tableStore: any = new TableStore({
method: 'POST',
column: [
// { width: '60', type: 'checkbox', fixed: 'left' },
{ title: '序号', type: 'seq', width: 80 },
{ title: '序号', width: 80,formatter: (row: any) => {
return (tableStore.table.params.pageNum - 1) * tableStore.table.params.pageSize + row.rowIndex + 1
} },
{ field: 'startTime', title: '发生时刻', minWidth: 170 },
{ field: 'showName', title: '事件描述', minWidth: 170 },
{

View File

@@ -1,7 +1,7 @@
<template>
<div class="view" v-loading="loading">
<el-collapse v-model="activeNames">
<el-collapse-item title="仪表盘" name="1">
<el-collapse-item title="基础数据" name="1">
<div class="view_top">
<!-- 左侧仪表盘 -->
<div class="view_top_left">

View File

@@ -14,11 +14,16 @@
:value="item.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="值类型">
<el-select style="min-width: 120px !important" v-model="searchForm.dataLevel">
<el-form-item >
<!-- <el-select style="min-width: 120px !important" v-model="searchForm.dataLevel">
<el-option value="Primary" label="一次值"></el-option>
<el-option value="Secondary" label="二次值"></el-option>
</el-select>
</el-select> -->
<el-radio-group v-model="searchForm.dataLevel" @change="init()">
<el-radio-button label="一次值" value="Primary" />
<el-radio-button label="二次值" value="Secondary" />
</el-radio-group>
</el-form-item>
<el-form-item label="统计类型">
<el-select style="min-width: 120px !important" placeholder="请选择" v-model="searchForm.valueType">
@@ -81,7 +86,7 @@ const num = ref(0)
//值类型
const pageHeight = ref(mainHeight(290))
const loading = ref(true)
const searchForm = ref({})
const searchForm:any = ref({})
const tableHeaderRef = ref()
const typeOptions = [
{
@@ -251,7 +256,7 @@ const init = async () => {
// orient: 'vertical', // 垂直排列
top: 5,
right: 70,
width: 550,
// width: 550,
// height: 50
},
grid: {