修改 bug
This commit is contained in:
@@ -37,7 +37,7 @@
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="所属部门" prop="deptId">
|
||||
<Area style="width: 100%" v-model="form.deptId" />
|
||||
<Area style="width: 200px" v-model="form.deptId" />
|
||||
</el-form-item>
|
||||
<el-form-item label="角色" prop="role">
|
||||
<el-select v-model="form.role" placeholder="请选择角色" multiple collapse-tags>
|
||||
@@ -56,23 +56,24 @@
|
||||
<el-form-item label="邮箱" prop="email">
|
||||
<el-input v-model="form.email" placeholder="请输入描述" />
|
||||
</el-form-item>
|
||||
<el-form-item label="时间段" prop="limitTime">
|
||||
<el-slider v-model="form.limitTime" style="width: 200px" range show-stops :max="24" />
|
||||
</el-form-item>
|
||||
<el-form-item label="起始IP" prop="limitIpStart">
|
||||
<el-input v-model="form.limitIpStart" placeholder="请输入描述" />
|
||||
</el-form-item>
|
||||
<el-form-item label="结束IP" prop="limitIpEnd">
|
||||
<el-input v-model="form.limitIpEnd" placeholder="请输入描述" />
|
||||
</el-form-item>
|
||||
<el-form-item label="时间段" prop="limitTime">
|
||||
<el-slider v-model="form.limitTime" range show-stops :max="24" />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="短信通知" prop="smsNotice">
|
||||
<el-radio-group v-model="form.smsNotice">
|
||||
<el-radio-group v-model="form.smsNotice" style="width: 200px">
|
||||
<el-radio-button :label="0">是</el-radio-button>
|
||||
<el-radio-button :label="1">否</el-radio-button>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="邮件通知" prop="emailNotice" >
|
||||
<el-radio-group v-model="form.emailNotice">
|
||||
<el-radio-group v-model="form.emailNotice" style="width: 200px">
|
||||
<el-radio-button :label="0">是</el-radio-button>
|
||||
<el-radio-button :label="1">否</el-radio-button>
|
||||
</el-radio-group>
|
||||
@@ -235,7 +236,7 @@ const open = (text: string, data?: anyObj) => {
|
||||
form[key] = ''
|
||||
}
|
||||
form.casualUser = 1
|
||||
form.limitTime = [0, 23]
|
||||
form.limitTime = [0, 24]
|
||||
form.role = []
|
||||
form.smsNotice = 0
|
||||
form.emailNotice = 0
|
||||
|
||||
@@ -3,12 +3,7 @@
|
||||
<el-dialog v-model="dialogVisible" title="解析列表" width="70%" draggable @closed="close">
|
||||
<TableHeader date-picker></TableHeader>
|
||||
<Table ref="tableRef" />
|
||||
<template #footer>
|
||||
<div class="dialog-footer">
|
||||
<el-button @click="close">取消</el-button>
|
||||
<!-- <el-button type="primary" @click="close">提交</el-button> -->
|
||||
</div>
|
||||
</template>
|
||||
|
||||
</el-dialog>
|
||||
</template>
|
||||
<script lang="ts" setup>
|
||||
@@ -20,7 +15,7 @@ import { ArrowLeft } from '@element-plus/icons-vue'
|
||||
const emit = defineEmits(['back'])
|
||||
const dialogVisible = ref(false)
|
||||
const height = ref(0)
|
||||
height.value = window.innerHeight < 1080 ? 180 : 400
|
||||
height.value = window.innerHeight < 1080 ? 230 : 450
|
||||
|
||||
const tableStore: any = new TableStore({
|
||||
url: '/cs-device-boot/portableOfflLog/queryPage',
|
||||
@@ -71,14 +66,16 @@ const handleBack = () => {
|
||||
}
|
||||
const open = () => {
|
||||
dialogVisible.value = true
|
||||
setTimeout(() => {
|
||||
tableStore.index()
|
||||
},10)
|
||||
}
|
||||
const close = () => {
|
||||
dialogVisible.value = false
|
||||
}
|
||||
const updateViewportHeight = async () => {
|
||||
// height.value = window.innerHeight;
|
||||
height.value = window.innerHeight < 1080 ? 180 : 400
|
||||
height.value = window.innerHeight < 1080 ? 230 : 450
|
||||
tableStore.table.publicHeight = height.value
|
||||
// await tableStore.index()
|
||||
}
|
||||
|
||||
@@ -131,7 +131,7 @@
|
||||
"
|
||||
>
|
||||
<!-- 循环渲染的card 最新数据/历史数据显示 -->
|
||||
<div class="content">
|
||||
<div class="content" v-loading="tableLoading">
|
||||
<el-card class="box-card" v-for="(item, index) in tableData" :key="index">
|
||||
<template #header>
|
||||
<div class="clearfix">
|
||||
|
||||
@@ -1,29 +1,22 @@
|
||||
<!-- 谐波频谱 -->
|
||||
<template>
|
||||
<div class="harmonic">
|
||||
<div class="harmonic" :style="heightTop">
|
||||
<div class="harmonic_select">
|
||||
<el-form :model="searchForm" class="history_select" id="history_select">
|
||||
<el-form :model="searchForm" id="history_select">
|
||||
<el-form-item label="稳态指标">
|
||||
<el-select
|
||||
multiple
|
||||
collapse-tags
|
||||
collapse-tags-tooltip
|
||||
v-model="searchForm.index"
|
||||
placeholder="请选择统计指标"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in indexOptions"
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item.id"
|
||||
></el-option>
|
||||
<el-select multiple collapse-tags collapse-tags-tooltip v-model="searchForm.index"
|
||||
placeholder="请选择统计指标">
|
||||
<el-option v-for="item in indexOptions" :key="item.id" :label="item.name"
|
||||
:value="item.id"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-button type="primary" :loading="loading" @click="init">查询</el-button>
|
||||
</el-form>
|
||||
|
||||
</div>
|
||||
<div class="harmonic_body" v-loading="loading">
|
||||
<div class="harmonic_body_charts" v-for="(item, index) in chartsList" :key="index">
|
||||
<div class="harmonic_body_charts" :style="{ height: height }" v-for="(item, index) in chartsList"
|
||||
:key="index">
|
||||
<p class="charts_title">
|
||||
{{
|
||||
indexOptions.find((item: any) => {
|
||||
@@ -42,6 +35,7 @@ import { queryByCode, queryByid, queryCsDictTree } from '@/api/system-boot/dictT
|
||||
import { queryStatistical } from '@/api/system-boot/csstatisticalset'
|
||||
import MyEchart from '@/components/echarts/MyEchart.vue'
|
||||
import { getDeviceHarmonicSpectrumData, getRealTimeTableList } from '@/api/cs-device-boot/EquipmentDelivery.ts'
|
||||
import { mainHeight } from '@/utils/layout'
|
||||
const searchForm: any = ref({})
|
||||
searchForm.value = {
|
||||
index: []
|
||||
@@ -58,6 +52,8 @@ queryByCode('portable-harmonic').then(res => {
|
||||
legendDictList.value = vv.data
|
||||
})
|
||||
})
|
||||
const heightTop = mainHeight(275)
|
||||
let height: any = mainHeight(275).height
|
||||
//谐波频谱参数
|
||||
const params: any = ref({})
|
||||
const getHarmonicSpectrumParams = (val: any) => {
|
||||
@@ -79,6 +75,7 @@ const init = () => {
|
||||
})
|
||||
//查询谐波频谱
|
||||
getDeviceHarmonicSpectrumData(params.value).then(res => {
|
||||
res.data.length > 3 ? height = mainHeight(275, 3 ).height : height = mainHeight(275, res.data.length ).height
|
||||
chartsList.value = res.data
|
||||
//数据根据相别组装成新数组
|
||||
chartsList.value.map((item: any) => {
|
||||
@@ -98,6 +95,8 @@ const init = () => {
|
||||
return
|
||||
})
|
||||
|
||||
|
||||
|
||||
//循环渲染图表
|
||||
chartsList.value &&
|
||||
chartsList.value.map((item: any, index: any) => {
|
||||
@@ -112,12 +111,12 @@ const init = () => {
|
||||
// text: item.showName
|
||||
}
|
||||
],
|
||||
grid: {
|
||||
top: '16%',
|
||||
bottom: '15%', //也可设置left和right设置距离来控制图表的大小
|
||||
left: '3%',
|
||||
right: '4%'
|
||||
},
|
||||
// grid: {
|
||||
// top: '16%',
|
||||
// bottom: '15%', //也可设置left和right设置距离来控制图表的大小
|
||||
// left: '3%',
|
||||
// right: '4%'
|
||||
// },
|
||||
tooltip: {
|
||||
trigger: 'axis',
|
||||
axisPointer: {
|
||||
@@ -231,31 +230,36 @@ defineExpose({ getHarmonicSpectrumParams })
|
||||
<style lang="scss" scoped>
|
||||
.harmonic {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
// height: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
position: relative;
|
||||
|
||||
.harmonic_select {
|
||||
width: 50%;
|
||||
height: 30px;
|
||||
display: flex;
|
||||
position: absolute;
|
||||
top: -30px;
|
||||
top: -32px;
|
||||
left: 0;
|
||||
justify-content: flex-start;
|
||||
|
||||
.el-button {
|
||||
margin-left: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
.harmonic_body {
|
||||
flex: 1;
|
||||
overflow-y: auto;
|
||||
padding-bottom: 200px;
|
||||
|
||||
// padding-bottom: 200px;
|
||||
.harmonic_body_charts {
|
||||
height: 200px;
|
||||
margin: 15px 0;
|
||||
|
||||
// margin: 15px 0;
|
||||
border: 1px solid #eee;
|
||||
position: relative;
|
||||
|
||||
.charts_title {
|
||||
position: absolute;
|
||||
top: 10px;
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
<!-- 实时数据 - 实时趋势 -->
|
||||
<template>
|
||||
<div class="realtrend">
|
||||
qwww
|
||||
<el-tabs type="border-card" v-model="activeName" @tab-click="handleClick">
|
||||
<el-tab-pane v-for="(item, index) in tabsList" :label="item.groupName" :name="index" :key="index">
|
||||
<div v-loading="loading">
|
||||
@@ -151,6 +150,7 @@ const findRealTrendDataByGroupId = (obj: any) => {
|
||||
item.unshift({ value: myColumns.value[index].title, count: '' })
|
||||
})
|
||||
newTableList.value = list
|
||||
console.log("🚀 ~ getDeviceTrendData ~ newTableList.value:", newTableList.value)
|
||||
loading.value = false
|
||||
init()
|
||||
})
|
||||
@@ -209,19 +209,22 @@ const init = () => {
|
||||
// backgroundColor: '#0f375f',
|
||||
dataZoom: [
|
||||
{
|
||||
show: true,
|
||||
type: 'inside',
|
||||
height: 13,
|
||||
start: 0,
|
||||
bottom: '20px',
|
||||
end: 20
|
||||
},
|
||||
{
|
||||
type: 'inside',
|
||||
start: 0,
|
||||
height: 13,
|
||||
bottom: '20px',
|
||||
end: 20
|
||||
}
|
||||
],
|
||||
grid: {
|
||||
top: '14%',
|
||||
bottom: '22%', //也可设置left和right设置距离来控制图表的大小
|
||||
bottom: '70px', //也可设置left和right设置距离来控制图表的大小
|
||||
left: '3%',
|
||||
right: '5%'
|
||||
},
|
||||
@@ -334,12 +337,14 @@ defineExpose({ open })
|
||||
.realtrend {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
|
||||
.realtrend_top {
|
||||
width: 100%;
|
||||
height: auto;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
|
||||
.thead {
|
||||
height: 100%;
|
||||
overflow-y: hidden;
|
||||
@@ -349,6 +354,7 @@ defineExpose({ open })
|
||||
width: auto;
|
||||
height: 40px;
|
||||
display: flex;
|
||||
|
||||
li {
|
||||
flex: none;
|
||||
width: 100px;
|
||||
@@ -357,18 +363,25 @@ defineExpose({ open })
|
||||
text-align: center;
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
li:nth-child(1) {
|
||||
flex: none;
|
||||
width: 200px;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
ul:nth-child(1) {
|
||||
li {
|
||||
font-weight: 800;
|
||||
background: #f4f6f9;
|
||||
}
|
||||
}
|
||||
ul:nth-child(4) {
|
||||
height: 48px;
|
||||
}
|
||||
}
|
||||
|
||||
.table {
|
||||
flex: 1;
|
||||
// min-height: 80px;
|
||||
@@ -379,10 +392,12 @@ defineExpose({ open })
|
||||
overflow-x: auto;
|
||||
overflow-y: hidden;
|
||||
position: relative;
|
||||
|
||||
ul {
|
||||
width: auto;
|
||||
height: 40px;
|
||||
display: flex;
|
||||
|
||||
li {
|
||||
flex: none;
|
||||
width: 100px;
|
||||
@@ -392,6 +407,7 @@ defineExpose({ open })
|
||||
list-style: none;
|
||||
}
|
||||
}
|
||||
|
||||
ul:nth-child(1) {
|
||||
li {
|
||||
font-weight: 800;
|
||||
@@ -399,35 +415,40 @@ defineExpose({ open })
|
||||
}
|
||||
}
|
||||
}
|
||||
.table::-webkit-scrollbar {
|
||||
display: none;
|
||||
}
|
||||
|
||||
// .table::-webkit-scrollbar {
|
||||
// display: none;
|
||||
// }
|
||||
}
|
||||
}
|
||||
|
||||
.reverse-table .vxe-body--row .vxe-body--column:first-child {
|
||||
background-color: #f8f8f9;
|
||||
}
|
||||
|
||||
::v-deep .vxe-table--render-wrapper {
|
||||
height: 90px !important;
|
||||
max-height: 90px !important;
|
||||
overflow-x: auto !important;
|
||||
min-height: 0 !important;
|
||||
}
|
||||
|
||||
::v-deep .body--wrapper {
|
||||
height: 90px !important;
|
||||
max-height: 90px !important;
|
||||
min-height: 0 !important;
|
||||
}
|
||||
|
||||
.tab_info {
|
||||
width: 100%;
|
||||
height: calc(100vh - 450px);
|
||||
|
||||
// overflow: auto;
|
||||
// padding-bottom: 20px;
|
||||
.charts {
|
||||
width: 100%;
|
||||
margin-top: 10px;
|
||||
height: calc(100vh - 550px);
|
||||
height: calc(100vh - 600px);
|
||||
}
|
||||
}
|
||||
|
||||
</style>
|
||||
|
||||
@@ -212,21 +212,21 @@ const initRadioCharts = () => {
|
||||
},
|
||||
data: [
|
||||
{
|
||||
value: 180,
|
||||
value: 0,
|
||||
name: 'A相',
|
||||
itemStyle: {
|
||||
color: '#FFCC00'
|
||||
}
|
||||
},
|
||||
{
|
||||
value: 90,
|
||||
value: 0,
|
||||
name: 'B相',
|
||||
itemStyle: {
|
||||
color: '#009900'
|
||||
}
|
||||
},
|
||||
{
|
||||
value: 30,
|
||||
value: 0,
|
||||
name: 'C相',
|
||||
itemStyle: {
|
||||
color: '#CC0000'
|
||||
@@ -310,21 +310,21 @@ const initRadioCharts = () => {
|
||||
},
|
||||
data: [
|
||||
{
|
||||
value: 160,
|
||||
value: 0,
|
||||
name: 'A相',
|
||||
itemStyle: {
|
||||
color: '#FFCC00'
|
||||
}
|
||||
},
|
||||
{
|
||||
value: 70,
|
||||
value: 0,
|
||||
name: 'B相',
|
||||
itemStyle: {
|
||||
color: '#009900'
|
||||
}
|
||||
},
|
||||
{
|
||||
value: 40,
|
||||
value: 0,
|
||||
name: 'C相',
|
||||
itemStyle: {
|
||||
color: '#CC0000'
|
||||
@@ -405,7 +405,7 @@ const init = () => {
|
||||
},
|
||||
data: [
|
||||
{
|
||||
value: 15,
|
||||
value: 0,
|
||||
name: 'A相'
|
||||
}
|
||||
]
|
||||
@@ -466,7 +466,6 @@ const iRadioList: any = ref([]),
|
||||
const getRealTimeData = async (val: any) => {
|
||||
iRadioList.value = []
|
||||
vRadioList.value = []
|
||||
console.log(val, '999999999')
|
||||
val.map((item: any) => {
|
||||
//基波电流相角
|
||||
if (item.statisticalName == 'Pq_FundIAng') {
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
collapse-tags-tooltip
|
||||
v-model="searchForm.index"
|
||||
placeholder="请选择统计指标"
|
||||
@change="onIndexChange($event)"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in indexOptions"
|
||||
@@ -28,11 +29,13 @@
|
||||
v-if="item.countOptions.length != 0"
|
||||
label-width="180px"
|
||||
>
|
||||
|
||||
<el-select
|
||||
v-model="item.count"
|
||||
multiple
|
||||
collapse-tags
|
||||
collapse-tags-tooltip
|
||||
@change="onCountChange($event, index)"
|
||||
placeholder="请选择谐波次数"
|
||||
>
|
||||
<el-option v-for="vv in item.countOptions" :key="vv" :label="vv" :value="vv"></el-option>
|
||||
@@ -274,16 +277,10 @@ const init = async () => {
|
||||
right: '3%', // 位置调整
|
||||
top: 0,
|
||||
bottom: 20,
|
||||
width: 400,
|
||||
width: 430,
|
||||
height: 50
|
||||
},
|
||||
grid: {
|
||||
left: '3%',
|
||||
right: '5%',
|
||||
bottom: '5%',
|
||||
top: '8%',
|
||||
containLabel: true
|
||||
},
|
||||
|
||||
xAxis: [
|
||||
{
|
||||
type: 'category',
|
||||
@@ -460,7 +457,7 @@ const handleExport = async () => {
|
||||
|
||||
if (deviceData.value.records && deviceData.value.records.length != 0) {
|
||||
let csv = '',
|
||||
obj = {}
|
||||
obj:any = {}
|
||||
obj = deviceData.value.records.find((item: any) => {
|
||||
return item.id == activeName.value
|
||||
})
|
||||
@@ -613,6 +610,17 @@ const initSearchFormIndexAndCount = (list: any) => {
|
||||
})
|
||||
}
|
||||
}
|
||||
// 判断下拉框是否存在
|
||||
const onCountChange = (val: any, index: any) => {
|
||||
if(val.length==0){
|
||||
countData.value[index].count=[countData.value[index].countOptions[0]]
|
||||
}
|
||||
}
|
||||
const onIndexChange = (val: any, ) => {
|
||||
if(val.length==0){
|
||||
searchForm.value.index=[indexOptions.value[0].id]
|
||||
}
|
||||
}
|
||||
watch(
|
||||
() => searchForm.value.index,
|
||||
(val: any, oldval: any) => {
|
||||
|
||||
@@ -1,39 +0,0 @@
|
||||
<!-- CustomInputRenderer.vue -->
|
||||
<template>
|
||||
<el-input
|
||||
ref="inputRef"
|
||||
v-model="inputValue"
|
||||
type="password"
|
||||
placeholder="请输入密码"
|
||||
autocomplete="new-password"
|
||||
/>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { ref, onMounted } from 'vue';
|
||||
|
||||
const props = defineProps({
|
||||
value: {
|
||||
type: String,
|
||||
default: ''
|
||||
}
|
||||
});
|
||||
|
||||
const emit = defineEmits(['update:value']);
|
||||
|
||||
const inputValue = ref(props.value);
|
||||
|
||||
onMounted(() => {
|
||||
emit('update:value', inputValue.value);
|
||||
});
|
||||
|
||||
const inputRef = ref(null);
|
||||
|
||||
function getInputValue() {
|
||||
return inputValue.value;
|
||||
}
|
||||
|
||||
defineExpose({
|
||||
getInputValue
|
||||
});
|
||||
</script>
|
||||
@@ -22,8 +22,8 @@
|
||||
</div>
|
||||
|
||||
<div class="filter" v-if="activePathList.length != 0">
|
||||
<el-input style="width: 200px; height: 32px" placeholder="请输入文件或文件夹名称" clearable
|
||||
v-model="filterFileName"></el-input>
|
||||
<el-input style="width: 200px; height: 32px;-webkit-text-security:disc;" placeholder="请输入文件或文件夹名称"
|
||||
clearable v-model="filterFileName" type="text"></el-input>
|
||||
<el-button type="primary" @click="handleSearch" :icon="Search">搜索</el-button>
|
||||
<el-button @click="handleRefresh" :icon="Refresh">重置</el-button>
|
||||
<el-upload v-if="activePath != '/'" action="" :auto-upload="false" :show-file-list="false" :on-change="(file: any, fileList: any) => {
|
||||
@@ -117,8 +117,8 @@
|
||||
<script setup lang="ts">
|
||||
import DeviceTree from '@/components/tree/govern/deviceTree.vue'
|
||||
import { mainHeight } from '@/utils/layout'
|
||||
import { ref, reactive, watch, onMounted, onBeforeUnmount } from 'vue'
|
||||
import { ElMessage, ElMessageBox } from 'element-plus'
|
||||
import { ref, reactive, watch, onMounted, onBeforeUnmount, h } from 'vue'
|
||||
import { ElMessage, ElMessageBox, ElInput } from 'element-plus'
|
||||
import {
|
||||
getDeviceRootPath,
|
||||
getFileServiceFileOrDir,
|
||||
@@ -207,6 +207,29 @@ const handleRefresh = () => {
|
||||
dirList.value = currentDirList.value
|
||||
reloadCurrentMenu('')
|
||||
}
|
||||
|
||||
|
||||
const reboot: any = ref('')
|
||||
const vNode = () => {
|
||||
return h('div', {}, [
|
||||
|
||||
|
||||
h(ElInput, {
|
||||
modelValue: reboot.value,
|
||||
'onUpdate:modelValue': ($event: any) => {
|
||||
reboot.value = $event;
|
||||
},
|
||||
placeholder: '请输入姓名',
|
||||
type: 'password',
|
||||
autocomplete: "off",
|
||||
class: 'displayPass'
|
||||
}),
|
||||
|
||||
]);
|
||||
};
|
||||
|
||||
|
||||
|
||||
//装置重启
|
||||
const deviceRestartLoading = ref<boolean>(false)
|
||||
const handleRestartDevice = () => {
|
||||
@@ -214,8 +237,10 @@ const handleRestartDevice = () => {
|
||||
ElMessageBox.prompt('二次校验密码确认', '装置重启', {
|
||||
confirmButtonText: '确认',
|
||||
cancelButtonText: '取消',
|
||||
customClass: 'custom-message-box',
|
||||
inputType: 'text'
|
||||
customClass: 'customInput',
|
||||
inputType: 'text',
|
||||
|
||||
|
||||
|
||||
})
|
||||
.then(({ value }) => {
|
||||
@@ -686,4 +711,12 @@ onBeforeUnmount(() => {
|
||||
:deep(.el-breadcrumb__separator) {
|
||||
margin: 0px -10px 0px 0px;
|
||||
}
|
||||
|
||||
</style>
|
||||
<style lang="scss">
|
||||
.customInput {
|
||||
.el-input__inner {
|
||||
-webkit-text-security: disc !important;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
Reference in New Issue
Block a user