添加cvt管理页面

This commit is contained in:
GGJ
2025-01-23 13:26:20 +08:00
parent 92e7a7a5eb
commit e7807c8eae
8 changed files with 1670 additions and 0 deletions

View File

@@ -12,6 +12,7 @@ const cgyList = [
'/harmonic-boot/line/pointmonitoring',
'/harmonic-boot/region/regionalmonitoring',
'/harmonic-boot/comper/comprehensiveanalysis',
'/harmonic-boot/comper/CVT',
'/Distributedphotovoltaic/homePage',
'/Statistical-analysis/indicatorClassification',
'/Statistical-analysis/IndicatorAlarmStatistics',

View File

@@ -74,6 +74,12 @@ export const constantRoutes = [
component: () => import('@/views/cgy-harmonic-boot/comper/comprehensiveanalysis'),
meta: { title: '综合分析', icon: '' }
},
{
path: '/harmonic-boot/comper/CVT',
name: 'CVT',
component: () => import('@/views/cgy-harmonic-boot/CVT'),
meta: { title: 'CVT台账管理', icon: '' }
},
{
path: '/Distributedphotovoltaic/homePage',
name: 'homePage',

View File

@@ -0,0 +1,224 @@
<template>
<div>
<el-dialog
:close-on-click-modal="false"
title="算法"
:visible.sync="dialogVisible"
width="600px"
:before-close="handleClose"
>
<div class="mb10 boxTop">
<div>
执行日期:
<el-date-picker
v-model="time"
type="daterange"
range-separator=""
start-placeholder="开始日期"
end-placeholder="结束日期"
value-format="yyyy-MM-dd"
format="yyyy-MM-dd"
></el-date-picker>
</div>
<el-button type="primary" @click="handleClose"> </el-button>
</div>
<el-input placeholder="输入关键字检索" v-model="filterText" style="margin-bottom: 10px" clearable>
<i slot="prefix" class="el-input__icon el-icon-search"></i>
</el-input>
<div :style="'height:45vh;overflow-y:auto'">
<el-tree
class="ele-tree-menu xiaoshou"
:data="treeMenuData"
:show-checkbox="true"
:default-expanded-keys="expandID"
node-key="id"
:check-strictly="false"
:expand-on-click-node="true"
:highlight-current="true"
:default-checked-keys="checkedarr"
@check="treeckeck"
:props="{ label: 'name', children: 'children' }"
ref="menuTree"
accordion
:render-content="renderContent"
></el-tree>
</div>
<div class="mt10"></div>
<!-- <span slot="footer" class="dialog-footer">
<el-button @click="handleClose"> </el-button>
</span> -->
</el-dialog>
</div>
</template>
<script>
import api from '@/api/harmonic/onlineData'
import { dicData } from '@/assets/commjs/dictypeData'
export default {
components: {},
props: {},
data() {
return {
time: [new Date(), new Date()],
dialogVisible: false,
checkedarr: [],
fiveData: [],
treeMenuData: [],
expandID: [],
formData: {
//后面需要修改
deptIndex: '',
monitorFlag: 2,
powerFlag: 2,
loadType: null,
manufacturer: null,
serverName: 'harmonic-boot',
statisticalType: '',
scale: null
},
filterText: '',
fiveData: []
}
},
created() {},
watch: {
filterText(val) {
this.$refs.menuTree.filter(val)
}
},
methods: {
// 点击树节点
treeckeck(data, checked, indeterminate) {},
open() {
this.dialogVisible = true
api.getTerminalTreeForFive(this.formData).then(res => {
if (res.code === 'A0000') {
this.fiveData = []
this.fiveData = res.data
this.chuli()
}
})
},
chuli() {
var data = this.fiveData
var arr = []
data.forEach(item => {
item.children.forEach(item2 => {
var p = {
children: item2.children,
comFlag: item2.comFlag,
id: item2.id,
level: item2.level,
loadType: item2.loadType,
manufacturer: item2.manufacturer,
name: item2.name,
pid: item2.pid,
pids: item2.pids,
ptType: item2.ptType,
scale: item2.scale,
sort: item2.sort
}
arr.push(p)
})
})
// this.fiveData = arr
if (arr[0].children[0].children[0].children.length > 0) {
arr.forEach(m => {
m.icon = 'el-icon-menu'
m.children.forEach(n => {
n.icon = 'el-icon-share'
n.children.forEach(d => {
d.icon = 'el-icon-s-flag'
d.children.forEach((f, i) => {
f.icon = 'el-icon-warning'
f.name = i + 1 + '_' + f.name
// f.children.forEach((h) => {
// h.icon = "el-icon-warning";
// });
})
})
})
})
this.treeMenuData = arr
//设置树节点点一个最字节的被选中
this.currentNode = arr[0].children[0].children[0].children[0].id
} else if (arr[0].children[0].children[0].children.length == 0) {
arr.forEach(m => {
m.icon = 'el-icon-menu'
m.children.forEach(n => {
n.icon = 'el-icon-share'
n.children.forEach((d, i) => {
d.icon = 'el-icon-warning'
d.name = i + 1 + '_' + d.name
// d.children.forEach((f) => {
// f.icon = "el-icon-warning";
d.jxfs = 0
// });
})
})
})
this.treeMenuData = arr
//设置树节点点一个最字节的被选中
this.currentNode = arr[0].children[0].children[0].id
window.sessionStorage.setItem('lineId', this.currentNode)
this.tree = JSON.stringify(arr)
}
window.sessionStorage.setItem('tree', this.tree)
this.expandID.push(this.currentNode)
this.$nextTick(() => {
this.$refs.menuTree.setCurrentKey(this.currentNode)
})
//初始化触发默认点击方法
//alert('初始1')
this.$emit('chushiData', this.currentNode, this.treeMenuData)
},
renderContent(h, { node, data, store }) {
this.onlinename = node.label
return (
<span style="flex: 1; display: flex; align-items: center; justify-content: space-between; padding-right: 8px;">
<span class="span-ellipsis">
<i
class={data.icon}
style={data.comFlag == 0 && data.level == 6 ? { color: 'red' } : { color: 'green' }}
></i>
<span class="title">{node.label}</span>
</span>
</span>
)
},
// 关闭弹窗
handleClose() {
console.log(this.time)
this.dialogVisible = false
}
},
mounted() {
var info = window.sessionStorage.getItem('Info')
info = eval('(' + info + ')')
this.vh = window.sessionStorage.getItem('appheight') - 20 + 'px'
this.formData.statisticalType = dicData('Statistical_Type', ['Report_Type'])[0]
this.formData.deptIndex = info.deptId
},
computed: {},
watch: {}
}
</script>
<style lang="less" scoped>
@import url('../../../../styles/comStyle.less');
::v-deep .el-dialog .el-dialog__body {
padding: 20px !important;
}
.boxTop{
display: flex;
justify-content: space-between;
}
</style>

View File

@@ -0,0 +1,270 @@
<template>
<el-container v-loading="loading" element-loading-text="数据加载中" id="dept" style="height: calc(100vh - 80px)">
<el-aside v-show="view" width="300px" style="overflow: hidden" id="drag-dept-left">
<muentree
@eleMenuData="getTreeText"
@chushiData="chushiData"
@ckeckData="ckeckData"
:checkbox="checkbox"
:number="number"
:tablename="tablename"
ref="commonTree"
></muentree>
</el-aside>
<div id="drag-dept">
<i
:class="view ? 'el-icon-caret-left' : 'el-icon-caret-right'"
style="
font-size: 18px;
cursor: pointer;
margin-right: 2%;
width: 80px;
height: 80px;
background: rgba(6, 70, 122, 0);
"
@click="changeview"
></i>
</div>
<el-main id="drag-dept-right" class="pl10">
<div class="prompt">
<div class="wzhi" v-if="falg">
<i style="color: #339966; font-size: 20px" class="el-icon-location-information"></i>
当前位置:
<span class="zt">
{{ treenode.parent.parent.parent.data.name }}>{{ treenode.parent.parent.data.name }}>{{
treenode.parent.data.name
}}>{{ treenode.data.name }}
</span>
</div>
<div class="wzhi" v-if="falg1">
<i style="color: #339966; font-size: 20px" class="el-icon-location-information"></i>
当前位置:
<span class="zt">{{ wezhiname }}</span>
</div>
</div>
<bindTab/>
</el-main>
</el-container>
</template>
<script>
import Muentree from '@/views/cgy-components/menuTree/index1'
import bindTab from './bindTab.vue'
export default {
components: {
Muentree,
bindTab
},
watch: {
treenode(a, b) {
if (a) {
this.falg = true
this.falg1 = false
}
}
},
data() {
return {
tablename: 1,
number: undefined,
id: '',
vh: null,
vhh: null,
checked: undefined,
checkbox: undefined,
asideheight: undefined,
timeValue: undefined,
screenWidth: undefined,
screenHeight: undefined,
activeName: 'wtsjfx',
loading: true,
falg: false,
falg1: true,
view: true,
dataTree: [],
treenode: undefined,
linelist: [],
treedata: [],
deptIndex: '',
wezhiname: ''
}
},
created() {},
mounted() {
var info = window.sessionStorage.getItem('Info')
info = eval('(' + info + ')')
this.deptIndex = info.deptId
this.bindResize()
this.vh = window.sessionStorage.getItem('appheight') - 70 + 'px'
this.vhh = window.sessionStorage.getItem('appheight') - 70 + 'px'
},
methods: {
changeview() {
if (this.view) {
this.view = false
} else {
this.view = true
}
},
handleClick(tab, event) {
//debugger
if (tab.name !== 'ycsj' && tab.name !== 'wtsjfx') {
this.checkbox = false
// this.falg1 = true;
this.tablename = 1
} else if (tab.name == 'ycsj') {
this.falg = false
this.falg1 = false
this.checkbox = true
this.number = 0
this.tablename = 1
} else if (tab.name == 'wtsjfx') {
this.checkbox = false
this.number = 1
this.tablename = 1
}
},
/**
* 缩放条拖动进而改变左侧div宽度方法
*/
bindResize() {
/**开始坐标 */
let startX
/**开始宽度 */
let startWidth = getScalableDivWidth()
document.querySelector('#drag-dept').addEventListener('mousedown', startDrag)
function startDrag(e) {
startX = e.clientX
startWidth = getScalableDivWidth()
document.documentElement.addEventListener('mousemove', onDrag)
document.documentElement.addEventListener('mouseup', stopDrag)
}
function onDrag(e) {
let newWidth = startWidth + e.clientX - startX
document.querySelector('#drag-dept-left').style.width = newWidth + 'px'
}
function stopDrag() {
document.documentElement.removeEventListener('mousemove', onDrag)
document.documentElement.removeEventListener('mouseup', stopDrag)
}
/**获取宽度 */
function getScalableDivWidth() {
return parseInt(window.getComputedStyle(document.querySelector('#drag-dept-left')).width, 10)
}
},
//初始化树节点默认点击
chushiData(id, data) {
this.id = id
window.sessionStorage.setItem('fist', id)
this.linelist.push(id)
this.treedata = data
this.wezhiname = data[0].name + '>' + data[0].children[0].name + '>' + data[0].children[0].children[0].name
this.loading = false
//alert(this.wezhiname)
},
//二次点击触发点击事件
getTreeText(menudata, treenode, nodeCom, id, name) {
if (treenode.data.level == 6) {
this.menudata = menudata
this.treenode = treenode
this.nodeCom = nodeCom
this.id = id
//this.wezhiname = name
this.linelist = []
this.linelist.push(id)
} else {
return
}
},
ckeckData(checkedarr) {
this.linelist = []
//this.linelist = checkedarr
this.linelist = this.unique(checkedarr)
},
//去重
unique(arr) {
if (!Array.isArray(arr)) {
return
}
var array = []
for (var i = 0; i < arr.length; i++) {
if (array.indexOf(arr[i]) === -1) {
array.push(arr[i])
}
}
return array
}
}
}
</script>
<style lang="scss" scoped>
.prompt {
display: flex;
justify-content: end;
align-items: center;
}
.wzhi {
// position: fixed;
font-size: 14px;
font-weight: 550;
}
.zt {
color: $themeColor;
}
</style>
<style lang="less" scoped>
@import url('../../../../styles/comStyle.less');
#drag-dept-left {
min-width: 220px;
max-width: 35%;
}
/**拖拽条样式 */
#drag-dept {
display: flex;
justify-content: center;
align-items: center;
position: relative;
top: 10;
right: 0;
width: 5px;
background: #868788;
background-color: #04607c2a;
box-shadow: 0px 0px 1px rgba(0, 0, 0, 0.35);
cursor: col-resize;
}
#drag-dept i {
display: inline-block;
height: 14px;
width: 5px;
background-color: #e9e9e9;
margin: 0 1px;
}
// ::v-deep .el-table--scrollable-x .el-table__body-wrapper {
// overflow-x: auto;
// cursor: pointer;
// }
// ::v-deep .el-tabs__nav {
// white-space: nowrap;
// width: 100%;
// position: relative;
// -webkit-transition: -webkit-transform 0.3s;
// transition: -webkit-transform 0.3s;
// transition: transform 0.3s;
// transition: transform 0.3s, -webkit-transform 0.3s;
// transition: transform 0.3s, -webkit-transform 0.3s;
// float: left;
// z-index: 2;
// }
</style>

View File

@@ -0,0 +1,423 @@
<template>
<div v-loading="loading" element-loading-text="拼命加载中">
<el-form :inline="true" :model="form" class="demo-form-inline">
<el-form-item>
<timeindex :id="1" ref="fff" :interval="3"></timeindex>
</el-form-item>
<el-form-item label="筛选:" class="ml10">
<el-input v-model="form.search" placeholder="输入关键字搜索" style="width: 100%" />
</el-form-item>
<el-form-item class="ml10">
<el-button type="primary" @click="querfromdata" icon="el-icon-search">查询</el-button>
<el-button type="primary" class="ml10" size="mini" icon="el-icon-plus">绑定</el-button>
</el-form-item>
</el-form>
<el-table
stripe
style="width: 100%"
:data="tables"
border
height="calc(100vh - 150px)"
header-cell-class-name="table_header"
highlight-current-row
>
<el-table-column type="selection" width="63" fixed="left"></el-table-column>
<el-table-column
v-for="item in column"
:key="item.prop"
:label="item.label"
align="center"
header-align="left"
:width="item.width"
:prop="item.prop"
>
<el-table-column
v-for="k in item.children"
:key="k.prop"
:label="k.label"
align="center"
:width="k.width"
:prop="k.prop"
/>
</el-table-column>
</el-table>
<!-- 新增修改 -->
<forms ref="formRef" />
<!-- 执行算法 -->
<algorithm ref="algorithmRef" />
<!-- <el-pagination
background
align="right"
class="mt10"
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:page-sizes="[15, 30, 50, 100]"
:current-page="form.currentPage"
:page-size="form.pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="this.tables.length"
></el-pagination> -->
</div>
</template>
<script>
import timeindex from '@/views/cgy-components/cgytree/TimeintervalTemplat.vue'
import forms from './forms.vue'
import algorithm from './algorithm.vue'
export default {
components: { timeindex, forms, algorithm },
props: {},
data() {
return {
loading: false,
form: {
currentPage: 1,
pageSize: 15,
search: ''
},
spanArray: [], // 用于存储每个name字段合并的行数
position: 0, // 用于记录合并的位置
tables: [
{
name: '思源220kV-0.01W3',
model: 'C型',
addTime: '2021-08-23 15:23:23',
updatedTime: '2021-08-23 15:23:23',
num2: '1',
num3: '1',
num4: '1',
num5: '1',
num6: '1',
num7: '1',
num8: '1',
num9: '1',
num10: '1',
num11: '1',
num12: '1',
num13: '1',
num14: '1',
num15: '1',
num16: '1',
num17: '1',
num18: '1',
num19: '1',
num20: '1',
num21: '1',
num22: '1',
num23: '1',
num24: '1',
num25: '1',
num26: '1',
num27: '1',
num28: '1',
num29: '1',
num30: '1',
num31: '1',
num32: '1',
num33: '1',
num34: '1',
num35: '1',
num36: '1',
num37: '1',
num38: '1',
num39: '1',
num40: '1',
num41: '1',
num42: '1',
num43: '1',
num44: '1',
num45: '1',
num46: '1',
num47: '1',
num48: '1',
num49: '1',
num50: '1'
},
{
name: '思源220kV-0.01W3',
model: 'C型',
addTime: '2021-08-23 15:23:23',
updatedTime: '2021-08-23 15:23:23',
num2: '1',
num3: '1',
num4: '1',
num5: '1',
num6: '1',
num7: '1',
num8: '1',
num9: '1',
num10: '1',
num11: '1',
num12: '1',
num13: '1',
num14: '1',
num15: '1',
num16: '1',
num17: '1',
num18: '1',
num19: '1',
num20: '1',
num21: '1',
num22: '1',
num23: '1',
num24: '1',
num25: '1',
num26: '1',
num27: '1',
num28: '1',
num29: '1',
num30: '1',
num31: '1',
num32: '1',
num33: '1',
num34: '1',
num35: '1',
num36: '1',
num37: '1',
num38: '1',
num39: '1',
num40: '1',
num41: '1',
num42: '1',
num43: '1',
num44: '1',
num45: '1',
num46: '1',
num47: '1',
num48: '1',
num49: '1',
num50: '1'
},
{
name: '桂容220-0.01GH',
model: '三柱型',
addTime: '2021-08-23 15:23:23',
updatedTime: '2021-08-23 15:23:23',
num2: '1',
num3: '1',
num4: '1',
num5: '1',
num6: '1',
num7: '1',
num8: '1',
num9: '1',
num10: '1',
num11: '1',
num12: '1',
num13: '1',
num14: '1',
num15: '1',
num16: '1',
num17: '1',
num18: '1',
num19: '1',
num20: '1',
num21: '1',
num22: '1',
num23: '1',
num24: '1',
num25: '1',
num26: '1',
num27: '1',
num28: '1',
num29: '1',
num30: '1',
num31: '1',
num32: '1',
num33: '1',
num34: '1',
num35: '1',
num36: '1',
num37: '1',
num38: '1',
num39: '1',
num40: '1',
num41: '1',
num42: '1',
num43: '1',
num44: '1',
num45: '1',
num46: '1',
num47: '1',
num48: '1',
num49: '1',
num50: '1'
},
{
name: '桂容220-0.01GH',
model: '三柱型',
addTime: '2021-08-23 15:23:23',
updatedTime: '2021-08-23 15:23:23',
num2: '1',
num3: '1',
num4: '1',
num5: '1',
num6: '1',
num7: '1',
num8: '1',
num9: '1',
num10: '1',
num11: '1',
num12: '1',
num13: '1',
num14: '1',
num15: '1',
num16: '1',
num17: '1',
num18: '1',
num19: '1',
num20: '1',
num21: '1',
num22: '1',
num23: '1',
num24: '1',
num25: '1',
num26: '1',
num27: '1',
num28: '1',
num29: '1',
num30: '1',
num31: '1',
num32: '1',
num33: '1',
num34: '1',
num35: '1',
num36: '1',
num37: '1',
num38: '1',
num39: '1',
num40: '1',
num41: '1',
num42: '1',
num43: '1',
num44: '1',
num45: '1',
num46: '1',
num47: '1',
num48: '1',
num49: '1',
num50: '1'
}
],
column: [
{ label: 'CVT名称', prop: 'name', width: '200px' },
{ label: 'CVT型号', prop: 'model', width: '200px' },
{
label: '谐波电压',
children: [
{ label: '2次', prop: 'num2' },
{ label: '3次', prop: 'num3' },
{ label: '4次', prop: 'num4' },
{ label: '5次', prop: 'num5' },
{ label: '6次', prop: 'num6' },
{ label: '7次', prop: 'num7' },
{ label: '8次', prop: 'num8' },
{ label: '9次', prop: 'num9' },
{ label: '10次', prop: 'num10' },
{ label: '11次', prop: 'num11' },
{ label: '12次', prop: 'num12' },
{ label: '13次', prop: 'num13' },
{ label: '14次', prop: 'num14' },
{ label: '15次', prop: 'num15' },
{ label: '16次', prop: 'num16' },
{ label: '17次', prop: 'num17' },
{ label: '18次', prop: 'num18' },
{ label: '19次', prop: 'num19' },
{ label: '20次', prop: 'num20' },
{ label: '21次', prop: 'num21' },
{ label: '22次', prop: 'num22' },
{ label: '23次', prop: 'num23' },
{ label: '24次', prop: 'num24' },
{ label: '25次', prop: 'num25' },
{ label: '26次', prop: 'num26' },
{ label: '27次', prop: 'num27' },
{ label: '28次', prop: 'num28' },
{ label: '29次', prop: 'num29' },
{ label: '30次', prop: 'num30' },
{ label: '31次', prop: 'num31' },
{ label: '32次', prop: 'num32' },
{ label: '33次', prop: 'num33' },
{ label: '34次', prop: 'num34' },
{ label: '35次', prop: 'num35' },
{ label: '36次', prop: 'num36' },
{ label: '37次', prop: 'num37' },
{ label: '38次', prop: 'num38' },
{ label: '39次', prop: 'num39' },
{ label: '40次', prop: 'num40' },
{ label: '41次', prop: 'num41' },
{ label: '42次', prop: 'num42' },
{ label: '43次', prop: 'num43' },
{ label: '44次', prop: 'num44' },
{ label: '45次', prop: 'num45' },
{ label: '46次', prop: 'num46' },
{ label: '47次', prop: 'num47' },
{ label: '48次', prop: 'num48' },
{ label: '49次', prop: 'num49' },
{ label: '50次', prop: 'num50' }
]
},
{ label: '新增时间', prop: 'addTime', width: '200px' },
{ label: '更新时间', prop: 'updatedTime', width: '200px' }
]
}
},
created() {},
methods: {
querfromdata() {},
handleSizeChange() {},
handleCurrentChange() {},
// 新增
handleAdd() {
this.$refs.formRef.title = '新增CVT系数'
this.$refs.formRef.dialogVisible = true
},
// 执行算法
handleAlgorithm() {
this.$refs.algorithmRef.open()
},
// 绑定监测点
handleBind(index, row) {
this.$refs.bindRef.open()
},
//编辑
handleEdit(index, row) {
this.$message({
message: '编辑',
type: 'success'
})
},
//删除
handleDelete(index, row) {
this.$message({
message: '删除',
type: 'success'
})
}
},
computed: {},
mounted() {},
watch: {
tables: {
handler() {
this.calculateSpan()
},
deep: true
}
}
}
</script>
<style lang="less" scoped>
@import url('../../../../styles/comStyle.less');
::v-deep tr th:nth-child(4) {
div {
text-align: left !important;
}
}
</style>

View File

@@ -0,0 +1,389 @@
<template>
<div v-loading="loading" element-loading-text="拼命加载中">
<el-form :inline="true" :model="form" class="demo-form-inline">
<el-form-item>
<timeindex :id="1" ref="fff" :interval="3"></timeindex>
</el-form-item>
<el-form-item label="筛选:" class="ml10">
<el-input v-model="form.search" placeholder="输入关键字搜索" style="width: 100%" />
</el-form-item>
<el-form-item class="ml10">
<el-button type="primary" @click="querfromdata" icon="el-icon-search">查询</el-button>
<el-button type="primary" @click="handleAdd" icon="el-icon-plus">新增</el-button>
<el-button type="primary" @click="handleAlgorithm" icon="el-icon-setting">执行算法</el-button>
</el-form-item>
</el-form>
<el-table
stripe
style="width: 100%"
:data="tables"
border
height="calc(100vh - 128px)"
header-cell-class-name="table_header"
highlight-current-row
>
<el-table-column
v-for="item in column"
:key="item.prop"
:label="item.label"
align="center"
header-align="left"
:width="item.width"
:prop="item.prop"
>
<el-table-column
v-for="k in item.children"
:key="k.prop"
:label="k.label"
align="center"
:width="k.width"
:prop="k.prop"
/>
</el-table-column>
<el-table-column label="操作" width="220" fixed="right" align="center">
<template slot-scope="scope">
<el-button
type="primary"
size="mini"
icon="el-icon-edit"
@click="handleEdit(scope.$index, scope.row)"
>
编辑
</el-button>
<el-button
type="danger"
size="mini"
icon="el-icon-delete"
@click="handleDelete(scope.$index, scope.row)"
>
删除
</el-button>
</template>
</el-table-column>
</el-table>
<!-- 新增修改 -->
<forms ref="formRef" />
<!-- 执行算法 -->
<algorithm ref="algorithmRef" />
<!-- <el-pagination
background
align="right"
class="mt10"
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:page-sizes="[15, 30, 50, 100]"
:current-page="form.currentPage"
:page-size="form.pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="this.tables.length"
></el-pagination> -->
</div>
</template>
<script>
import timeindex from '@/views/cgy-components/cgytree/TimeintervalTemplat.vue'
import forms from './forms.vue'
import algorithm from './algorithm.vue'
export default {
components: { timeindex, forms, algorithm },
props: {},
data() {
return {
loading: false,
form: {
currentPage: 1,
pageSize: 15,
search: ''
},
spanArray: [], // 用于存储每个name字段合并的行数
position: 0, // 用于记录合并的位置
tables: [
{
name: '思源220kV-0.01W3',
model: 'C型',
addTime: '2021-08-23 15:23:23',
updatedTime: '2021-08-23 15:23:23',
num2: '1',
num3: '1',
num4: '1',
num5: '1',
num6: '1',
num7: '1',
num8: '1',
num9: '1',
num10: '1',
num11: '1',
num12: '1',
num13: '1',
num14: '1',
num15: '1',
num16: '1',
num17: '1',
num18: '1',
num19: '1',
num20: '1',
num21: '1',
num22: '1',
num23: '1',
num24: '1',
num25: '1',
num26: '1',
num27: '1',
num28: '1',
num29: '1',
num30: '1',
num31: '1',
num32: '1',
num33: '1',
num34: '1',
num35: '1',
num36: '1',
num37: '1',
num38: '1',
num39: '1',
num40: '1',
num41: '1',
num42: '1',
num43: '1',
num44: '1',
num45: '1',
num46: '1',
num47: '1',
num48: '1',
num49: '1',
num50: '1'
},
{
name: '思源220kV-0.01W3',
model: 'C型',
addTime: '2021-08-23 15:23:23',
updatedTime: '2021-08-23 15:23:23',
num2: '1',
num3: '1',
num4: '1',
num5: '1',
num6: '1',
num7: '1',
num8: '1',
num9: '1',
num10: '1',
num11: '1',
num12: '1',
num13: '1',
num14: '1',
num15: '1',
num16: '1',
num17: '1',
num18: '1',
num19: '1',
num20: '1',
num21: '1',
num22: '1',
num23: '1',
num24: '1',
num25: '1',
num26: '1',
num27: '1',
num28: '1',
num29: '1',
num30: '1',
num31: '1',
num32: '1',
num33: '1',
num34: '1',
num35: '1',
num36: '1',
num37: '1',
num38: '1',
num39: '1',
num40: '1',
num41: '1',
num42: '1',
num43: '1',
num44: '1',
num45: '1',
num46: '1',
num47: '1',
num48: '1',
num49: '1',
num50: '1'
},
{
name: '桂容220-0.01GH',
model: '三柱型',
addTime: '2021-08-23 15:23:23',
updatedTime: '2021-08-23 15:23:23',
num2: '1',
num3: '1',
num4: '1',
num5: '1',
num6: '1',
num7: '1',
num8: '1',
num9: '1',
num10: '1',
num11: '1',
num12: '1',
num13: '1',
num14: '1',
num15: '1',
num16: '1',
num17: '1',
num18: '1',
num19: '1',
num20: '1',
num21: '1',
num22: '1',
num23: '1',
num24: '1',
num25: '1',
num26: '1',
num27: '1',
num28: '1',
num29: '1',
num30: '1',
num31: '1',
num32: '1',
num33: '1',
num34: '1',
num35: '1',
num36: '1',
num37: '1',
num38: '1',
num39: '1',
num40: '1',
num41: '1',
num42: '1',
num43: '1',
num44: '1',
num45: '1',
num46: '1',
num47: '1',
num48: '1',
num49: '1',
num50: '1'
},
],
column: [
{ label: 'CVT名称', prop: 'name', width: '200px' },
{ label: 'CVT型号', prop: 'model', width: '200px' },
{
label: '谐波电压',
children: [
{ label: '2次', prop: 'num2' },
{ label: '3次', prop: 'num3' },
{ label: '4次', prop: 'num4' },
{ label: '5次', prop: 'num5' },
{ label: '6次', prop: 'num6' },
{ label: '7次', prop: 'num7' },
{ label: '8次', prop: 'num8' },
{ label: '9次', prop: 'num9' },
{ label: '10次', prop: 'num10' },
{ label: '11次', prop: 'num11' },
{ label: '12次', prop: 'num12' },
{ label: '13次', prop: 'num13' },
{ label: '14次', prop: 'num14' },
{ label: '15次', prop: 'num15' },
{ label: '16次', prop: 'num16' },
{ label: '17次', prop: 'num17' },
{ label: '18次', prop: 'num18' },
{ label: '19次', prop: 'num19' },
{ label: '20次', prop: 'num20' },
{ label: '21次', prop: 'num21' },
{ label: '22次', prop: 'num22' },
{ label: '23次', prop: 'num23' },
{ label: '24次', prop: 'num24' },
{ label: '25次', prop: 'num25' },
{ label: '26次', prop: 'num26' },
{ label: '27次', prop: 'num27' },
{ label: '28次', prop: 'num28' },
{ label: '29次', prop: 'num29' },
{ label: '30次', prop: 'num30' },
{ label: '31次', prop: 'num31' },
{ label: '32次', prop: 'num32' },
{ label: '33次', prop: 'num33' },
{ label: '34次', prop: 'num34' },
{ label: '35次', prop: 'num35' },
{ label: '36次', prop: 'num36' },
{ label: '37次', prop: 'num37' },
{ label: '38次', prop: 'num38' },
{ label: '39次', prop: 'num39' },
{ label: '40次', prop: 'num40' },
{ label: '41次', prop: 'num41' },
{ label: '42次', prop: 'num42' },
{ label: '43次', prop: 'num43' },
{ label: '44次', prop: 'num44' },
{ label: '45次', prop: 'num45' },
{ label: '46次', prop: 'num46' },
{ label: '47次', prop: 'num47' },
{ label: '48次', prop: 'num48' },
{ label: '49次', prop: 'num49' },
{ label: '50次', prop: 'num50' }
]
},
{ label: '新增时间', prop: 'addTime', width: '200px' },
{ label: '更新时间', prop: 'updatedTime', width: '200px' }
]
}
},
created() {},
methods: {
querfromdata() {},
handleSizeChange() {},
handleCurrentChange() {},
// 新增
handleAdd() {
this.$refs.formRef.title = '新增CVT系数'
this.$refs.formRef.dialogVisible = true
},
// 执行算法
handleAlgorithm() {
this.$refs.algorithmRef.open()
},
// 绑定监测点
handleBind(index, row) {
this.$refs.bindRef.open()
},
//编辑
handleEdit(index, row) {
this.$message({
message: '编辑',
type: 'success'
})
},
//删除
handleDelete(index, row) {
this.$message({
message: '删除',
type: 'success'
})
}
},
computed: {},
mounted() {},
watch: {
tables: {
handler() {
this.calculateSpan()
},
deep: true
}
}
}
</script>
<style lang="less" scoped>
@import url('../../../../styles/comStyle.less');
::v-deep tr th:nth-child(3) {
div {
text-align: left !important;
}
}
</style>

View File

@@ -0,0 +1,298 @@
<template>
<div>
<el-dialog
:close-on-click-modal="false"
:title="title"
:visible.sync="dialogVisible"
width="1000px"
:before-close="handleClose"
>
<el-form ref="form" :inline="true" :model="form" label-width="80px" class="form-two">
<el-form-item label="CVT名称:">
<el-input v-model="form.name" placeholder="请输入CVT名称"></el-input>
</el-form-item>
<el-form-item label="CVT型号:">
<el-input v-model="form.model" placeholder="请输入CVT型号"></el-input>
</el-form-item>
</el-form>
<el-form ref="form" :inline="true" :model="form" label-width="80px" class="form">
<el-form-item label="2次:">
<el-input type="number" v-model="form.num2"></el-input>
</el-form-item>
<el-form-item label="3次:">
<el-input type="number" v-model="form.num3"></el-input>
</el-form-item>
<el-form-item label="4次:">
<el-input type="number" v-model="form.num4"></el-input>
</el-form-item>
<el-form-item label="5次:">
<el-input type="number" v-model="form.num5"></el-input>
</el-form-item>
<el-form-item label="6次:">
<el-input type="number" v-model="form.num6"></el-input>
</el-form-item>
<el-form-item label="7次:">
<el-input type="number" v-model="form.num7"></el-input>
</el-form-item>
<el-form-item label="8次:">
<el-input type="number" v-model="form.num8"></el-input>
</el-form-item>
<el-form-item label="9次:">
<el-input type="number" v-model="form.num9"></el-input>
</el-form-item>
<el-form-item label="10次:">
<el-input type="number" v-model="form.num10"></el-input>
</el-form-item>
<el-form-item label="11次:">
<el-input type="number" v-model="form.num11"></el-input>
</el-form-item>
<el-form-item label="12次:">
<el-input type="number" v-model="form.num12"></el-input>
</el-form-item>
<el-form-item label="13次:">
<el-input type="number" v-model="form.num13"></el-input>
</el-form-item>
<el-form-item label="14次:">
<el-input type="number" v-model="form.num14"></el-input>
</el-form-item>
<el-form-item label="15次:">
<el-input type="number" v-model="form.num15"></el-input>
</el-form-item>
<el-form-item label="16次:">
<el-input type="number" v-model="form.num16"></el-input>
</el-form-item>
<el-form-item label="17次:">
<el-input type="number" v-model="form.num17"></el-input>
</el-form-item>
<el-form-item label="18次:">
<el-input type="number" v-model="form.num18"></el-input>
</el-form-item>
<el-form-item label="19次:">
<el-input type="number" v-model="form.num19"></el-input>
</el-form-item>
<el-form-item label="20次:">
<el-input type="number" v-model="form.num20"></el-input>
</el-form-item>
<el-form-item label="21次:">
<el-input type="number" v-model="form.num21"></el-input>
</el-form-item>
<el-form-item label="22次:">
<el-input type="number" v-model="form.num22"></el-input>
</el-form-item>
<el-form-item label="23次:">
<el-input type="number" v-model="form.num23"></el-input>
</el-form-item>
<el-form-item label="24次:">
<el-input type="number" v-model="form.num24"></el-input>
</el-form-item>
<el-form-item label="25次:">
<el-input type="number" v-model="form.num25"></el-input>
</el-form-item>
<el-form-item label="26次:">
<el-input type="number" v-model="form.num26"></el-input>
</el-form-item>
<el-form-item label="27次:">
<el-input type="number" v-model="form.num27"></el-input>
</el-form-item>
<el-form-item label="28次:">
<el-input type="number" v-model="form.num28"></el-input>
</el-form-item>
<el-form-item label="29次:">
<el-input type="number" v-model="form.num29"></el-input>
</el-form-item>
<el-form-item label="30次:">
<el-input type="number" v-model="form.num30"></el-input>
</el-form-item>
<el-form-item label="31次:">
<el-input type="number" v-model="form.num31"></el-input>
</el-form-item>
<el-form-item label="32次:">
<el-input type="number" v-model="form.num32"></el-input>
</el-form-item>
<el-form-item label="33次:">
<el-input type="number" v-model="form.num33"></el-input>
</el-form-item>
<el-form-item label="34次:">
<el-input type="number" v-model="form.num34"></el-input>
</el-form-item>
<el-form-item label="35次:">
<el-input type="number" v-model="form.num35"></el-input>
</el-form-item>
<el-form-item label="36次:">
<el-input type="number" v-model="form.num36"></el-input>
</el-form-item>
<el-form-item label="37次:">
<el-input type="number" v-model="form.num37"></el-input>
</el-form-item>
<el-form-item label="38次:">
<el-input type="number" v-model="form.num38"></el-input>
</el-form-item>
<el-form-item label="39次:">
<el-input type="number" v-model="form.num39"></el-input>
</el-form-item>
<el-form-item label="40次:">
<el-input type="number" v-model="form.num40"></el-input>
</el-form-item>
<el-form-item label="41次:">
<el-input type="number" v-model="form.num41"></el-input>
</el-form-item>
<el-form-item label="42次:">
<el-input type="number" v-model="form.num42"></el-input>
</el-form-item>
<el-form-item label="43次:">
<el-input type="number" v-model="form.num43"></el-input>
</el-form-item>
<el-form-item label="44次:">
<el-input type="number" v-model="form.num44"></el-input>
</el-form-item>
<el-form-item label="45次:">
<el-input type="number" v-model="form.num45"></el-input>
</el-form-item>
<el-form-item label="46次:">
<el-input type="number" v-model="form.num46"></el-input>
</el-form-item>
<el-form-item label="47次:">
<el-input type="number" v-model="form.num47"></el-input>
</el-form-item>
<el-form-item label="48次:">
<el-input type="number" v-model="form.num48"></el-input>
</el-form-item>
<el-form-item label="49次:">
<el-input type="number" v-model="form.num49"></el-input>
</el-form-item>
<el-form-item label="50次:">
<el-input type="number" v-model="form.num50"></el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="handleClose"> </el-button>
<el-button type="primary" @click="handleClose"> </el-button>
</span>
</el-dialog>
</div>
</template>
<script>
export default {
components: {},
props: {},
data() {
return {
dialogVisible: false,
title: '',
form: {
name: '',
model: '',
num2: '1',
num3: '1',
num4: '1',
num5: '1',
num6: '1',
num7: '1',
num8: '1',
num9: '1',
num10: '1',
num11: '1',
num12: '1',
num13: '1',
num14: '1',
num15: '1',
num16: '1',
num17: '1',
num18: '1',
num19: '1',
num20: '1',
num21: '1',
num22: '1',
num23: '1',
num24: '1',
num25: '1',
num26: '1',
num27: '1',
num28: '1',
num29: '1',
num30: '1',
num31: '1',
num32: '1',
num33: '1',
num34: '1',
num35: '1',
num36: '1',
num37: '1',
num38: '1',
num39: '1',
num40: '1',
num41: '1',
num42: '1',
num43: '1',
num44: '1',
num45: '1',
num46: '1',
num47: '1',
num48: '1',
num49: '1',
num50: '1'
}
}
},
created() {},
methods: {
// 关闭弹窗
handleClose() {
this.dialogVisible = false
}
},
computed: {},
watch: {}
}
</script>
<style lang="less" scoped>
@import url('../../../../styles/comStyle.less');
::v-deep .form-two {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
.el-form-item {
display: flex;
width: 49%;
.el-form-item__content {
flex: 1 !important;
.el-select {
width: 100%;
}
.el-input__inner {
width: 100% !important;
}
.el-date-editor {
width: 100%;
}
}
}
}
::v-deep .form {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
.el-form-item {
display: flex;
width: 24%;
.el-form-item__content {
flex: 1 !important;
.el-select {
width: 100%;
}
.el-input__inner {
width: 100% !important;
}
.el-date-editor {
width: 100%;
}
}
}
}
::v-deep .el-dialog .el-dialog__body {
padding: 20px !important;
}
</style>

View File

@@ -0,0 +1,59 @@
<template>
<div class="pa10">
<el-tabs type="border-card" style="height: calc(100vh - 20px)" v-model="activeName" @tab-click="handleClick">
<el-tab-pane label="CVT台账" name="1">
<cvt></cvt>
</el-tab-pane>
<el-tab-pane label="数据绑定" name="2">
<bind></bind>
</el-tab-pane>
</el-tabs>
</div>
</template>
<script>
import cvt from './components/cvt.vue'
import bind from './components/bind.vue'
export default {
components: {
cvt,
bind
},
data() {
return {
activeName: '1'
}
},
created() {
if (process.env.VUE_APP_MODE === 'cgyqr') {
this.guanzhou()
}
},
mounted() {},
methods: {
guanzhou() {
var data = {
token: this.$route.query.token
}
api1.guanzhou(data).then(res => {
if (res.code == 'A0000') {
return
} else {
this.$router.push('/error/massege/403')
}
})
},
handleClick(tab, event) {
// console.log(tab, event);
this.activeName = tab.name
}
}
}
</script>
<style lang="less" scoped>
.pa10 {
padding: 10px;
}
::v-deep .el-tabs--border-card > .el-tabs__content {
padding: 10px;
}
</style>