openatc-components 0.3.117 → 0.3.119
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package/kisscomps/components/BoardCard/BoardCard.vue +0 -11
- package/package/kisscomps/components/Channelization/Channelization.vue +1 -1
- package/package/kisscomps/components/ChannelizationFlowStatistic/ChannelizationFlowStatistic.vue +1 -1
- package/package/kisscomps/components/DrawChannelization/drawsvg/iconSvg/motorwayIconSvg.vue +145 -46
- package/package/kisscomps/components/DrawChannelization/drawsvg/index.draw.vue +4 -4
- package/package/kisscomps/components/DrawChannelization/drawsvg/index.vue +1 -1
- package/package/kisscomps/components/IntersectionMap/crossDirection/crossDiagram.vue +12 -66
- package/package/kisscomps/components/IntersectionMap/intersectionmap.vue +1 -1
- package/package/kisscomps/components/OverLap/OverLap.vue +1 -1
- package/package/kisscomps/components/OverviewComponent/index.vue +7 -11
- package/package/kisscomps/components/PatternOptimize/PatternOptimize.vue +2 -11
- package/package/kisscomps/components/PatternStatus/PatternStatus.vue +20 -85
- package/package/kisscomps/components/SchemeConfig/SchemeConfig.vue +12 -13
- package/package/kisscomps/components/SchemeConfig/azimuthlocking/index.vue +2 -1
- package/package/kisscomps/components/SchemeConfig/lockingPhaselControlModal/index.vue +11 -9
- package/package/kisscomps/components/SchemeConfig/manualControlModalNew/icon.vue +2 -34
- package/package/kisscomps/components/SchemeConfig/realtimeStatusModal/index.vue +6 -1
- package/package/kisscomps/components/StageOptimize/StageOptimize.vue +109 -52
- package/package/kisscomps/components/overView/index.vue +2 -2
- package/package/kisscomps/components/patternList/patternList.vue +0 -11
- package/package/kisscomps/index.js +0 -2
- package/package/kissui.min.js +1 -1
- package/package.json +1 -1
- package/src/i18n/language/en.js +12 -12
- package/src/i18n/language/zh.js +17 -17
- package/src/kisscomps/components/BoardCard/BoardCard.vue +0 -11
- package/src/kisscomps/components/Channelization/Channelization.vue +1 -1
- package/src/kisscomps/components/ChannelizationFlowStatistic/ChannelizationFlowStatistic.vue +1 -1
- package/src/kisscomps/components/DrawChannelization/drawsvg/iconSvg/motorwayIconSvg.vue +145 -46
- package/src/kisscomps/components/DrawChannelization/drawsvg/index.draw.vue +4 -4
- package/src/kisscomps/components/DrawChannelization/drawsvg/index.vue +1 -1
- package/src/kisscomps/components/IntersectionMap/crossDirection/crossDiagram.vue +12 -66
- package/src/kisscomps/components/IntersectionMap/intersectionmap.vue +1 -1
- package/src/kisscomps/components/OverLap/OverLap.vue +1 -1
- package/src/kisscomps/components/OverviewComponent/index.vue +7 -11
- package/src/kisscomps/components/PatternOptimize/PatternOptimize.vue +2 -11
- package/src/kisscomps/components/PatternStatus/PatternStatus.vue +20 -85
- package/src/kisscomps/components/SchemeConfig/SchemeConfig.vue +12 -13
- package/src/kisscomps/components/SchemeConfig/azimuthlocking/index.vue +2 -1
- package/src/kisscomps/components/SchemeConfig/lockingPhaselControlModal/index.vue +11 -9
- package/src/kisscomps/components/SchemeConfig/manualControlModalNew/icon.vue +2 -34
- package/src/kisscomps/components/SchemeConfig/realtimeStatusModal/index.vue +6 -1
- package/src/kisscomps/components/overView/index.vue +2 -2
- package/src/kisscomps/components/patternList/patternList.vue +0 -11
- package/src/kisscomps/index.js +0 -2
- package/src/utils/ControlFormat.js +2 -2
- package/src/views/intersection.vue +6 -7
- package/src/views/intersection2.vue +4 -4
- package/src/views/overView.vue +5 -27
- package/static/styles/common.scss +3 -3
- package/static/styles/dark/theme/element-dark.scss +1 -1
- package/static/styles/intersection.scss +15 -5
- package/static/styles/light/theme/element-light.scss +1 -1
- package/static/styles/schemeconfig.scss +3 -6
- package/package/kisscomps/components/OptimizeKanban/index.js +0 -2
- package/package/kisscomps/components/OptimizeKanban/index.vue +0 -369
- package/src/kisscomps/components/StageOptimize/StageOptimize.vue +0 -310
- package/src/kisscomps/components/StageOptimize/index.js +0 -2
- package/src/node_modules/.package_versions.json +0 -1
|
@@ -212,8 +212,8 @@ export default {
|
|
|
212
212
|
Detector: [], // 管理所有检测器
|
|
213
213
|
DetectorChart: [], // 管理所有检测器统计图
|
|
214
214
|
motorwayicon: '',
|
|
215
|
-
IconLengh:
|
|
216
|
-
IconWdith:
|
|
215
|
+
IconLengh: 60,
|
|
216
|
+
IconWdith: 134,
|
|
217
217
|
textareaW: 200,
|
|
218
218
|
textareaH: 100,
|
|
219
219
|
pedW: 206,
|
|
@@ -389,8 +389,8 @@ export default {
|
|
|
389
389
|
h: this.IconWdith,
|
|
390
390
|
angle: 0
|
|
391
391
|
}
|
|
392
|
-
this.IconLengh =
|
|
393
|
-
this.IconWdith =
|
|
392
|
+
this.IconLengh = 60
|
|
393
|
+
this.IconWdith = 134
|
|
394
394
|
let Motorwaysitem = {
|
|
395
395
|
index: this.index,
|
|
396
396
|
id: this.motorid,
|
|
@@ -92,7 +92,7 @@ export default {
|
|
|
92
92
|
// }
|
|
93
93
|
return
|
|
94
94
|
}
|
|
95
|
-
if (
|
|
95
|
+
if (JSON.stringify(data.data.data) === '{}') return
|
|
96
96
|
_this.pageindex = 2
|
|
97
97
|
_this.loadedChannelizatonData = JSON.parse(JSON.stringify(data.data.data))
|
|
98
98
|
})
|
|
@@ -43,18 +43,6 @@
|
|
|
43
43
|
</div>
|
|
44
44
|
</div>
|
|
45
45
|
</div>
|
|
46
|
-
<!-- 阶段倒计时 -->
|
|
47
|
-
<div class="phaseCountdown" v-show="isShowInterval" v-if="isLoaded && contrloType === 'stage'" :class="{'countdownBg': isLoaded}">
|
|
48
|
-
<div v-for="curStage in stageCountdownList" :key="curStage.id" :style="{color: curStage.phaseCountdownColor}">
|
|
49
|
-
<div style="overflow: hidden;margin-bottom: 4px;">
|
|
50
|
-
<span style="float: left;width: 42px;height: 42px;position: relative;border: 1px solid rgba(255, 255, 255, 0.1);margin-right: 5px;">
|
|
51
|
-
<xdr-dir-selector :Data="xdrData" :Datas="xdrpedData" Width="55px" Height="55px" Widths="55px" Heights="55px" :showlist="curStage.showlist" :roadDirection="roadDirection"></xdr-dir-selector>
|
|
52
|
-
</span>
|
|
53
|
-
<span style="float: left;color: #fff;margin-right: 8px;width: 30px;">S{{crossStatusData.current_stage}}:</span>
|
|
54
|
-
<span style="float: left;font-size: 25px;">{{crossStatusData.current_stagecd}}</span>
|
|
55
|
-
</div>
|
|
56
|
-
</div>
|
|
57
|
-
</div>
|
|
58
46
|
<!-- 手动刷新 -->
|
|
59
47
|
<div v-if="!isLoaded">
|
|
60
48
|
<RefreshSvg @click.native="refresh"/>
|
|
@@ -120,18 +108,6 @@
|
|
|
120
108
|
</div>
|
|
121
109
|
</div>
|
|
122
110
|
</div>
|
|
123
|
-
<!-- 阶段倒计时 -->
|
|
124
|
-
<div class="phaseCountdown" v-show="isShowInterval" v-if="isLoaded && contrloType === 'stage'" :class="{'countdownBg': isLoaded}">
|
|
125
|
-
<div v-for="curStage in stageCountdownList" :key="curStage.id" :style="{color: curStage.phaseCountdownColor}">
|
|
126
|
-
<div style="overflow: hidden;margin-bottom: 4px;">
|
|
127
|
-
<span style="float: left;width: 42px;height: 42px;position: relative;border: 1px solid rgba(255, 255, 255, 0.1);margin-right: 5px;">
|
|
128
|
-
<xdr-dir-selector :Data="xdrData" :Datas="xdrpedData" Width="55px" Height="55px" Widths="55px" Heights="55px" :showlist="curStage.showlist" :roadDirection="roadDirection"></xdr-dir-selector>
|
|
129
|
-
</span>
|
|
130
|
-
<span style="float: left;color: #fff;margin-right: 8px;width: 30px;">S{{crossStatusData.current_stage}}:</span>
|
|
131
|
-
<span style="float: left;font-size: 25px;">{{crossStatusData.current_stagecd}}</span>
|
|
132
|
-
</div>
|
|
133
|
-
</div>
|
|
134
|
-
</div>
|
|
135
111
|
<!-- 手动刷新 -->
|
|
136
112
|
<div v-if="!isLoaded">
|
|
137
113
|
<RefreshSvg @click.native="refresh"/>
|
|
@@ -354,7 +330,6 @@ export default {
|
|
|
354
330
|
return {
|
|
355
331
|
roadDir: 'right', // 道路行车方向,默认右行
|
|
356
332
|
phaseCountdownList: [], // 相位倒计时列表
|
|
357
|
-
stageCountdownList: [], // 阶段倒计时列表
|
|
358
333
|
statusData: null, // 信号机状态
|
|
359
334
|
LanePhaseData: [], // 车道相位数据
|
|
360
335
|
overlapLanePhaseData: [], // 车道跟随相位数据
|
|
@@ -422,14 +397,12 @@ export default {
|
|
|
422
397
|
return
|
|
423
398
|
}
|
|
424
399
|
this.curPhase = val.current_phase
|
|
425
|
-
this.curStage = val.current_stage
|
|
426
400
|
this.isHasPhase = true
|
|
427
401
|
this.createPhaseStatusMap()
|
|
428
402
|
// 正常情况下,获取车道相位、车道跟随相位、相位倒计时、行人相位、行人跟随相位 的状态
|
|
429
403
|
this.getPhaseStatus()
|
|
430
404
|
this.getOverlapPhaseStatus()
|
|
431
405
|
this.getCurPhaseCountdown()
|
|
432
|
-
this.getCurStageCountdown()
|
|
433
406
|
this.getBusPhaseStatus()
|
|
434
407
|
if (this.mainType === '100' || this.mainType === '101' || this.mainType === '104') {
|
|
435
408
|
// 城市道路和路段行人过街才显示人行道状态
|
|
@@ -513,7 +486,6 @@ export default {
|
|
|
513
486
|
})
|
|
514
487
|
}
|
|
515
488
|
this.phaseCountdownList = []
|
|
516
|
-
this.stageCountdownList = []
|
|
517
489
|
this.resetPhaseStatus()
|
|
518
490
|
},
|
|
519
491
|
handleSpecialControlStatus (Control) {
|
|
@@ -526,11 +498,6 @@ export default {
|
|
|
526
498
|
item.id = ''
|
|
527
499
|
item.phaseCountdownColor = '#fff'
|
|
528
500
|
})
|
|
529
|
-
this.stageCountdownList.forEach(item => {
|
|
530
|
-
item.phaseCountdown = ''
|
|
531
|
-
item.id = ''
|
|
532
|
-
item.phaseCountdownColor = '#fff'
|
|
533
|
-
})
|
|
534
501
|
}
|
|
535
502
|
if (this.compLanePhaseData.length) {
|
|
536
503
|
const compLanePhaseData = this.compLanePhaseData.map(data => ({
|
|
@@ -730,31 +697,6 @@ export default {
|
|
|
730
697
|
})
|
|
731
698
|
})
|
|
732
699
|
},
|
|
733
|
-
getCurStageCountdown () {
|
|
734
|
-
// 获取当前相位倒计时颜色
|
|
735
|
-
this.stageCountdownList = []
|
|
736
|
-
this.phaseStatusList.forEach(phaseInfo => {
|
|
737
|
-
if (phaseInfo.id === this.curStage) {
|
|
738
|
-
let countdownObj = {}
|
|
739
|
-
countdownObj.id = phaseInfo.id
|
|
740
|
-
countdownObj.phaseCountdown = phaseInfo.countdown
|
|
741
|
-
countdownObj.phaseCountdownColor = this.ColorMap.get(phaseInfo.type)
|
|
742
|
-
let curphasedir = this.phaseDirMap.get(phaseInfo.id)
|
|
743
|
-
if (curphasedir !== undefined) {
|
|
744
|
-
countdownObj.showlist = curphasedir.direction.map(dir => {
|
|
745
|
-
return {
|
|
746
|
-
id: dir,
|
|
747
|
-
peddirection: this.getshowped(curphasedir.peddirection),
|
|
748
|
-
color: '#fff'
|
|
749
|
-
}
|
|
750
|
-
})
|
|
751
|
-
} else {
|
|
752
|
-
countdownObj.showlist = []
|
|
753
|
-
}
|
|
754
|
-
this.stageCountdownList.push(countdownObj)
|
|
755
|
-
}
|
|
756
|
-
})
|
|
757
|
-
},
|
|
758
700
|
getshowped (peddirection) {
|
|
759
701
|
let peddirarr = peddirection.map(peddir => ({
|
|
760
702
|
id: peddir,
|
|
@@ -780,7 +722,10 @@ export default {
|
|
|
780
722
|
}
|
|
781
723
|
}
|
|
782
724
|
msg = msg + ' - ' + commomMsg
|
|
783
|
-
this.isShowMessage && this.$message.error(msg)
|
|
725
|
+
// this.isShowMessage && this.$message.error(msg)
|
|
726
|
+
if (this.isShowMessage) {
|
|
727
|
+
console.log(msg)
|
|
728
|
+
}
|
|
784
729
|
return
|
|
785
730
|
}
|
|
786
731
|
this.isLoaded = true
|
|
@@ -798,11 +743,6 @@ export default {
|
|
|
798
743
|
return
|
|
799
744
|
}
|
|
800
745
|
this.getTempCrossInfo(res)
|
|
801
|
-
// 显示阶段的判断条件
|
|
802
|
-
this.allPatternList = res.data.data.param.patternList
|
|
803
|
-
if (this.allPatternList[0].rings === undefined || this.allPatternList[0].rings.length === 0) {
|
|
804
|
-
this.contrloType = 'stage'
|
|
805
|
-
}
|
|
806
746
|
})
|
|
807
747
|
},
|
|
808
748
|
getTempCrossInfo (res) {
|
|
@@ -1107,10 +1047,16 @@ export default {
|
|
|
1107
1047
|
let res = data.data
|
|
1108
1048
|
if (!res.success) {
|
|
1109
1049
|
if (res.code === '4003') {
|
|
1110
|
-
this.isShowMessage && this.$message.error(this.$t('openatccomponents.errorTip.devicenotonline'))
|
|
1050
|
+
// this.isShowMessage && this.$message.error(this.$t('openatccomponents.errorTip.devicenotonline'))
|
|
1051
|
+
if (this.isShowMessage) {
|
|
1052
|
+
console.log(this.$t('openatccomponents.errorTip.devicenotonline'))
|
|
1053
|
+
}
|
|
1111
1054
|
return
|
|
1112
1055
|
}
|
|
1113
|
-
this.isShowMessage && this.$message.error(getMessageByCode(data.data.code, this.$i18n.locale))
|
|
1056
|
+
// this.isShowMessage && this.$message.error(getMessageByCode(data.data.code, this.$i18n.locale))
|
|
1057
|
+
if (this.isShowMessage) {
|
|
1058
|
+
console.log(getMessageByCode(data.data.code, this.$i18n.locale))
|
|
1059
|
+
}
|
|
1114
1060
|
return
|
|
1115
1061
|
}
|
|
1116
1062
|
let channelList = res.data.data.channelList.filter(ele => ele.type !== undefined)
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
</template>
|
|
49
49
|
|
|
50
50
|
<script>
|
|
51
|
-
import CrossDiagram from './crossDirection/crossDiagram
|
|
51
|
+
import CrossDiagram from './crossDirection/crossDiagram'
|
|
52
52
|
import { setToken } from '../../../utils/auth.js'
|
|
53
53
|
export default {
|
|
54
54
|
name: 'intersection-base-map',
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div class="overLap" v-if="checked" :style="{'margin':this.controlData ? '20px 0 0 0' :tentative ? '0' : '0
|
|
2
|
+
<div class="overLap" v-if="checked" :style="{'margin':this.controlData ? '20px 0 0 0' :tentative ? '0' : '0 107px 0 468px'}">
|
|
3
3
|
<div class="ring-first" v-for="(list, index1) in this.overlapDatas" :key="index1">
|
|
4
4
|
<div v-for="(item,index2) in list.stageLists" :key="index2" >
|
|
5
5
|
<!-- {{list.peddirection}} -->
|
|
@@ -11,9 +11,9 @@
|
|
|
11
11
|
**/
|
|
12
12
|
<template>
|
|
13
13
|
<div class="container-main">
|
|
14
|
-
<div
|
|
14
|
+
<div :style="{'transform': `scale(${shrink})`, 'transform-origin': 'left top', 'height': '100%'}">
|
|
15
15
|
<div class="tuxingjiemian" v-show="curHomePage === 'Graphical' || curHomePage === 'Channelization'" :class="{'minifont': curBodyWidth <= 650}">
|
|
16
|
-
<div :class="{'changeWidth': graphicMode
|
|
16
|
+
<div class="tuxing-left" :class="{'changeWidth': graphicMode}" ref="tuxingLeft">
|
|
17
17
|
<intersection-base-map
|
|
18
18
|
v-if="curHomePage === 'Graphical'"
|
|
19
19
|
ref="intersectionMap"
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
:AgentId="agentId"
|
|
30
30
|
:crossStatusData="crossStatusData"
|
|
31
31
|
:detectorStatusData="detectorStatusData" />
|
|
32
|
-
<div class="pattern-status" v-if="!graphicMode &&
|
|
32
|
+
<div class="pattern-status" v-if="!graphicMode && crossStatusData.control !== 1 && crossStatusData.control !== 2 && crossStatusData.control !== 3">
|
|
33
33
|
<div class="pattern-name cross-mess">{{$t('openatccomponents.overviewcomponent.patternstate')}}</div>
|
|
34
34
|
<div class="pattern-message">({{$t('openatccomponents.overviewcomponent.cycle')}}: {{controlData.cycle}} {{$t('openatccomponents.overviewcomponent.patternoffset')}}: {{controlData.patternoffset}} {{$t('openatccomponents.overviewcomponent.coordinationtime')}}: {{controlData.offset}})</div>
|
|
35
35
|
<span class="pattern-explain"><el-checkbox v-model="checked">{{$t('openatccomponents.overviewcomponent.overLap')}}</el-checkbox></span>
|
|
@@ -93,7 +93,7 @@
|
|
|
93
93
|
</div>
|
|
94
94
|
</div>
|
|
95
95
|
|
|
96
|
-
<div ref="tuxingRight" class="tuxing-right"
|
|
96
|
+
<div ref="tuxingRight" class="tuxing-right" >
|
|
97
97
|
<scheme-config
|
|
98
98
|
ref="rightpanel"
|
|
99
99
|
:statusData="crossStatusData"
|
|
@@ -144,10 +144,6 @@ export default {
|
|
|
144
144
|
isfromatc: {
|
|
145
145
|
type: Boolean,
|
|
146
146
|
default: true
|
|
147
|
-
},
|
|
148
|
-
onlyShowIntersectionMap: {
|
|
149
|
-
type: Boolean,
|
|
150
|
-
default: false
|
|
151
147
|
}
|
|
152
148
|
},
|
|
153
149
|
data () {
|
|
@@ -171,8 +167,8 @@ export default {
|
|
|
171
167
|
detectorStatusTimer: null, // 检测器定时器
|
|
172
168
|
ParamsMode: new Map([[0, '自主控制'], [1, '本地手动'], [2, '平台控制'], [3, '配置软件控制'], [4, '遥控器控制'], [5, '黄闪器控制'], [6, '降级控制'], [7, '脚本控制'], [8, '算法控制']]),
|
|
173
169
|
ParamsModeEn: new Map([[0, 'Autonomous Control'], [1, 'Local Manual'], [2, 'Platform Control'], [3, 'Configuration Software Control'], [4, 'Remote Control'], [5, 'Yellow Flasher Control'], [6, 'Degradation Control'], [7, 'Script Control'], [8, 'Algorithm Control']]),
|
|
174
|
-
ParamsControl: new Map([[0, '多时段'], [1, '黄闪'], [2, '全红'], [3, '关灯'], [4, '步进'], [5, '定周期控制'], [6, '
|
|
175
|
-
ParamsControlEn: new Map([[0, 'Multi Period'], [1, 'Yellow Flash Control'], [2, 'Red Control'], [3, 'Dark Control'], [4, 'Step'], [5, 'Fixed_Cycle Control'], [6, 'Free Control'], [7, 'Coordinated Induction Control'], [8, 'Pattern Selection Control'], [9, 'Adaptive Control'], [10, 'Wireless Control'], [11, 'Cable Control'], [12, 'Pedestrian Crossing Control'], [13, 'Pattern recovery'], [14, 'Phase dwell'], [15, 'Channel Detection'], [16, 'Direction lock'], [17, 'Webster Single Point Coordination'], [18, '
|
|
170
|
+
ParamsControl: new Map([[0, '多时段'], [1, '黄闪'], [2, '全红'], [3, '关灯'], [4, '步进'], [5, '定周期控制'], [6, '自适应'], [7, '协调感应控制'], [8, '方案选择控制'], [9, '方案生成'], [10, '无电缆控制'], [11, '有电缆控制'], [12, '行人过街控制'], [13, '方案恢复过渡'], [14, '相位驻留'], [15, '通道检测'], [16, '方向锁定'], [17, '韦伯斯特单点控制'], [18, '预留18'], [19, '感应式行人过街'], [20, '方案干预'], [100, '方案干预'], [21, '预留21'], [22, '相位锁定'], [23, '相位放行控制'], [24, '紧急控制'], [99, '设备维护']]),
|
|
171
|
+
ParamsControlEn: new Map([[0, 'Multi Period'], [1, 'Yellow Flash Control'], [2, 'Red Control'], [3, 'Dark Control'], [4, 'Step'], [5, 'Fixed_Cycle Control'], [6, 'Free Control'], [7, 'Coordinated Induction Control'], [8, 'Pattern Selection Control'], [9, 'Adaptive Control'], [10, 'Wireless Control'], [11, 'Cable Control'], [12, 'Pedestrian Crossing Control'], [13, 'Pattern recovery'], [14, 'Phase dwell'], [15, 'Channel Detection'], [16, 'Direction lock'], [17, 'Webster Single Point Coordination'], [18, 'Reserving18'], [19, 'Inductive Pedestrian Crossing Control'], [20, 'Program Intervention'], [100, 'Program Intervention'], [21, 'Reserving21'], [22, 'Priority Control'], [23, 'Close Phase'], [24, 'Emergency Control'], [99, 'Device Mantenance']]),
|
|
176
172
|
phaseType: new Map([[1, '红'], [2, '黄'], [3, '绿'], [4, '绿闪']]), // phaseType表示红,黄,绿
|
|
177
173
|
phaseTypeEn: new Map([[1, 'Red'], [2, 'Yellow'], [3, 'Green'], [4, 'Greenclear']]), // phaseType表示红,黄,绿
|
|
178
174
|
ip: '--',
|
|
@@ -339,7 +335,7 @@ export default {
|
|
|
339
335
|
return
|
|
340
336
|
}
|
|
341
337
|
// 路口已设置渠化,则总览默认显示渠化路口,未设置显示模版路口
|
|
342
|
-
if (_this.isfromatc === true && data.data.success === true &&
|
|
338
|
+
if (_this.isfromatc === true && data.data.success === true && JSON.stringify(data.data.data) !== '{}') {
|
|
343
339
|
_this.curHomePage = 'Channelization'
|
|
344
340
|
} else {
|
|
345
341
|
_this.curHomePage = 'Graphical'
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
<el-tooltip class="item" effect="dark" placement="left">
|
|
51
51
|
<div slot="content">{{element.name}}</div>
|
|
52
52
|
<div class="common-phase-description">
|
|
53
|
-
<xdrdirselector Width="70px" Height="70px" Widths="
|
|
53
|
+
<xdrdirselector Width="70px" Height="70px" Widths="50px" Heights="50px" :Data="styles" :showlist="element.desc" :ISActiveMask="ISActiveMask" :MaskColor="MaskColor"></xdrdirselector>
|
|
54
54
|
</div>
|
|
55
55
|
</el-tooltip>
|
|
56
56
|
</el-col>
|
|
@@ -79,13 +79,9 @@ export default {
|
|
|
79
79
|
},
|
|
80
80
|
data () {
|
|
81
81
|
return {
|
|
82
|
-
showStyle: {
|
|
83
|
-
left: '2px',
|
|
84
|
-
top: '0px'
|
|
85
|
-
},
|
|
86
82
|
styles: {
|
|
87
83
|
left: '1px',
|
|
88
|
-
top: '
|
|
84
|
+
top: '0'
|
|
89
85
|
},
|
|
90
86
|
typeOptions: [{
|
|
91
87
|
value: 'flow-split-opt'
|
|
@@ -101,9 +97,6 @@ export default {
|
|
|
101
97
|
type: String,
|
|
102
98
|
default: 'Header'
|
|
103
99
|
},
|
|
104
|
-
id: {
|
|
105
|
-
type: Number
|
|
106
|
-
},
|
|
107
100
|
rings: {
|
|
108
101
|
type: Object
|
|
109
102
|
},
|
|
@@ -216,7 +209,6 @@ export default {
|
|
|
216
209
|
}
|
|
217
210
|
}
|
|
218
211
|
}
|
|
219
|
-
this.$emit('optimizesucess', this.id)
|
|
220
212
|
}
|
|
221
213
|
}).catch(error => {
|
|
222
214
|
console.log(error)
|
|
@@ -240,7 +232,6 @@ export default {
|
|
|
240
232
|
}
|
|
241
233
|
}
|
|
242
234
|
}
|
|
243
|
-
this.$emit('optimizesucess', this.id)
|
|
244
235
|
}
|
|
245
236
|
}).catch(error => {
|
|
246
237
|
console.log(error)
|
|
@@ -14,9 +14,8 @@
|
|
|
14
14
|
<!-- 环模式true -->
|
|
15
15
|
<div v-if="this.contrloType === 'ring' || !this.contrloType">
|
|
16
16
|
<div class="ring-first" v-for="(list, index1) in patternInfo" :key="index1">
|
|
17
|
-
<
|
|
18
|
-
<div
|
|
19
|
-
<div class="first-1" :class="item.mode === 8 ? 'mask' : item.mode === 9 ? 'yellowClass' : ''" :style="{'width':Number(item.greenWidth.replace('%', ''))/Number((((item.split+(item.sum?item.sum:0)) / (max?max:item.cycle) * 100) + '%').replace('%', ''))*100+'%','height':'34px','background':'#7ccc66'}">
|
|
17
|
+
<div style="position: relative;" :style="{'height': '34px','float':'left','width':((item.split+(item.sum?item.sum:0)) / (max?max:item.cycle) * 100) + '%'}" v-for="(item,index2) in list" :key="index2" :class="item.mode===7?'direction': ''">
|
|
18
|
+
<div class="first-1" :class="item.mode === 8 ? 'mask' : item.mode === 9 ? 'yellowClass' : ''" :style="{'width':Number(item.greenWidth.replace('%', ''))/Number((((item.split+(item.sum?item.sum:0)) / (max?max:item.cycle) * 100) + '%').replace('%', ''))*100+'%','height':'34px','background':'#7ccc66'}">
|
|
20
19
|
<el-tooltip placement="top-start" effect="light">
|
|
21
20
|
<div slot="content">{{$t('openatccomponents.phase.phase')}}{{item.id}}:{{item.split}}</div>
|
|
22
21
|
<div style="cursor:pointer;">
|
|
@@ -26,18 +25,7 @@
|
|
|
26
25
|
</div>
|
|
27
26
|
<div v-if="isShowTip" class="box" style="position: absolute; left:40px; width:40px; top: -1px;">
|
|
28
27
|
<div class="ring-nums">{{$t('openatccomponents.phase.phase')}}{{item.id}}</div>
|
|
29
|
-
<div
|
|
30
|
-
<el-input-number
|
|
31
|
-
v-if="!isMove"
|
|
32
|
-
class="ring-nums"
|
|
33
|
-
size="small"
|
|
34
|
-
:controls="false"
|
|
35
|
-
:min="0"
|
|
36
|
-
:step="1"
|
|
37
|
-
v-model.number="item.split"
|
|
38
|
-
@change="handleEdit(item)"
|
|
39
|
-
style="width: 24px"
|
|
40
|
-
></el-input-number>
|
|
28
|
+
<div class="ring-nums">{{item.split}}</div>
|
|
41
29
|
</div>
|
|
42
30
|
</div>
|
|
43
31
|
</el-tooltip>
|
|
@@ -53,8 +41,7 @@
|
|
|
53
41
|
<div class="first-1" :class="item.mode === 8 ? 'mask' : item.mode === 9 ? 'yellowClass' : ''" :style="{'width':Number(item.flashgreen.replace('%', ''))/Number((((item.split+(item.sum?item.sum:0)) / (max?max:item.cycle) * 100).toFixed(3) + '%').replace('%', ''))*100+'%','height':'34px','float':'left','background': 'linear-gradient(to right, #ffffff 50%, #7ccc66 0)','background-size': '4px 100%'}"></div>
|
|
54
42
|
<div class="first-1" :class="item.mode === 8 ? 'mask' : item.mode === 9 ? 'yellowClass' : ''" :style="{'width':Number(item.yellowWidth.replace('%', ''))/Number((((item.split+(item.sum?item.sum:0)) / (max?max:item.cycle) * 100) + '%').replace('%', ''))*100+'%','height':'34px','background':'#f9dc6a'}"></div>
|
|
55
43
|
<div class="first-1" :class="item.mode === 8 ? 'mask' : item.mode === 9 ? 'yellowClass' : ''" :style="{'width':Number(item.redWidth.replace('%', ''))/Number((((item.split+(item.sum?item.sum:0)) / (max?max:item.cycle) * 100).toFixed(3) + '%').replace('%', ''))*100+'%','height':'34px','background':'#f27979'}"></div>
|
|
56
|
-
|
|
57
|
-
</draggable>
|
|
44
|
+
</div>
|
|
58
45
|
</div>
|
|
59
46
|
<div v-if="showBarrier">
|
|
60
47
|
<div v-for="(item, index) in barrierList" :key="index + '1'">
|
|
@@ -113,7 +100,6 @@
|
|
|
113
100
|
<script>
|
|
114
101
|
// import patternwalksvg from '../PatternWalkSvg/PatternWalkSvg'
|
|
115
102
|
import xdrdirselector from '../XRDDirSelector/XRDDirSelector'
|
|
116
|
-
import draggable from 'vuedraggable'
|
|
117
103
|
// import PatternWalkSvg from '../IntersectionMap/crossDirection/baseImg/PatternWalkSvg'
|
|
118
104
|
import PhaseDataModel from '../IntersectionMap/crossDirection/utils.js'
|
|
119
105
|
import CrossDiagramMgr from '../../../EdgeMgr/controller/crossDiagramMgr.js'
|
|
@@ -121,7 +107,6 @@ export default {
|
|
|
121
107
|
name: 'pattern-list',
|
|
122
108
|
components: {
|
|
123
109
|
// patternwalksvg,
|
|
124
|
-
draggable,
|
|
125
110
|
xdrdirselector
|
|
126
111
|
},
|
|
127
112
|
data () {
|
|
@@ -129,7 +114,6 @@ export default {
|
|
|
129
114
|
barrierHeight: '',
|
|
130
115
|
stageCycle: '',
|
|
131
116
|
barrierList: [],
|
|
132
|
-
barrierArr: [],
|
|
133
117
|
newCycle: this.cycles,
|
|
134
118
|
patternIds: this.patternId,
|
|
135
119
|
newPatterns: [],
|
|
@@ -158,10 +142,6 @@ export default {
|
|
|
158
142
|
stagesChange: {
|
|
159
143
|
type: Array
|
|
160
144
|
},
|
|
161
|
-
isMove: {
|
|
162
|
-
type: Boolean,
|
|
163
|
-
default: true
|
|
164
|
-
},
|
|
165
145
|
controlPhase: {
|
|
166
146
|
type: Object
|
|
167
147
|
},
|
|
@@ -363,11 +343,11 @@ export default {
|
|
|
363
343
|
handler: function (val, oldVal) {
|
|
364
344
|
this.handleBarrierHeight() // 计算屏障高度
|
|
365
345
|
if (this.patternStatusList && this.newCycle) {
|
|
366
|
-
|
|
367
|
-
|
|
346
|
+
setTimeout(() => {
|
|
347
|
+
this.handleCurrentChange(this.patternStatusList)
|
|
348
|
+
this.handleBarrierHeight()
|
|
349
|
+
}, 10)
|
|
368
350
|
this.handleBarrierHeight()
|
|
369
|
-
// }, 10)
|
|
370
|
-
// this.handleBarrierHeight()
|
|
371
351
|
}
|
|
372
352
|
},
|
|
373
353
|
// 深度观察监听
|
|
@@ -395,60 +375,6 @@ export default {
|
|
|
395
375
|
}
|
|
396
376
|
},
|
|
397
377
|
methods: {
|
|
398
|
-
move (e) {
|
|
399
|
-
// 这里的e表示即将停靠的元素。
|
|
400
|
-
let result = this.barrierArr.filter(item => item.includes(e.relatedContext.element.id))[0]
|
|
401
|
-
if (!result.includes(e.draggedContext.element.id)) {
|
|
402
|
-
return false
|
|
403
|
-
}
|
|
404
|
-
},
|
|
405
|
-
endDrag (index) {
|
|
406
|
-
// 拖动后对原数据排序
|
|
407
|
-
const idIndexMap = {}
|
|
408
|
-
this.patternInfo.forEach((subArray, subArrayIndex) => {
|
|
409
|
-
subArray.forEach((item, index) => {
|
|
410
|
-
idIndexMap[item.id] = { subArrayIndex, index }
|
|
411
|
-
})
|
|
412
|
-
})
|
|
413
|
-
this.patternStatusList.forEach((subArray, subArrayIndex) => {
|
|
414
|
-
if (subArray.length > 0) {
|
|
415
|
-
subArray.sort((aItem, bItem) => {
|
|
416
|
-
const aIndex = idIndexMap[aItem.id] ? idIndexMap[aItem.id].index : Infinity
|
|
417
|
-
const bIndex = idIndexMap[bItem.id] ? idIndexMap[bItem.id].index : Infinity
|
|
418
|
-
return aIndex - bIndex
|
|
419
|
-
})
|
|
420
|
-
}
|
|
421
|
-
})
|
|
422
|
-
},
|
|
423
|
-
handleEdit (val) {
|
|
424
|
-
this.patternStatusList.map(d => {
|
|
425
|
-
d.map(r => {
|
|
426
|
-
if (r.id === val.id) {
|
|
427
|
-
r.value = val.split
|
|
428
|
-
}
|
|
429
|
-
})
|
|
430
|
-
})
|
|
431
|
-
// this.handleCurrentChange(this.patternStatusList)
|
|
432
|
-
this.$emit('handleSplitMove', this.patternId)
|
|
433
|
-
},
|
|
434
|
-
getMaxCycle (pattern) {
|
|
435
|
-
// let rings = pattern.rings
|
|
436
|
-
let maxCycle = 0
|
|
437
|
-
for (let ring of pattern) {
|
|
438
|
-
if (ring.length === 0) continue
|
|
439
|
-
let cycle = 0
|
|
440
|
-
for (let r of ring) {
|
|
441
|
-
if (r.mode === 7) { // 忽略相位不计周期
|
|
442
|
-
continue
|
|
443
|
-
}
|
|
444
|
-
cycle = cycle + r.value
|
|
445
|
-
}
|
|
446
|
-
if (cycle > maxCycle) {
|
|
447
|
-
maxCycle = cycle
|
|
448
|
-
}
|
|
449
|
-
}
|
|
450
|
-
return maxCycle
|
|
451
|
-
},
|
|
452
378
|
getPed (data) {
|
|
453
379
|
let ped = []
|
|
454
380
|
for (let stg of data) {
|
|
@@ -1139,6 +1065,17 @@ export default {
|
|
|
1139
1065
|
j.value = this.controlPhase.phase.filter(item => item.id === j.id)[0].split
|
|
1140
1066
|
})
|
|
1141
1067
|
})
|
|
1068
|
+
let valSplit = val.map(item => {
|
|
1069
|
+
return item.map(val => {
|
|
1070
|
+
return val.value + (val.sum ? val.sum : 0)
|
|
1071
|
+
})
|
|
1072
|
+
})
|
|
1073
|
+
let splitCycle = valSplit.length > 0 ? valSplit.map(item => {
|
|
1074
|
+
return item.length > 0 ? item.reduce((a, b) => {
|
|
1075
|
+
return a + b
|
|
1076
|
+
}) : 0
|
|
1077
|
+
}) : 0
|
|
1078
|
+
this.fixCycle = Math.max(...splitCycle)// 每个环的周期最大值
|
|
1142
1079
|
}
|
|
1143
1080
|
// 按环序分组
|
|
1144
1081
|
let ringlength = []
|
|
@@ -1160,7 +1097,6 @@ export default {
|
|
|
1160
1097
|
}) : 0
|
|
1161
1098
|
}) : 0
|
|
1162
1099
|
let cycle = Math.max(...splitCycle)// 每个环的周期最大值
|
|
1163
|
-
this.fixCycle = cycle// 每个环的周期最大值
|
|
1164
1100
|
let newRings = ringsequence.filter(item => item)
|
|
1165
1101
|
let minLength = Math.min(...ringlength)
|
|
1166
1102
|
let resultArrs = [] // 环1分组
|
|
@@ -1253,7 +1189,6 @@ export default {
|
|
|
1253
1189
|
}
|
|
1254
1190
|
}
|
|
1255
1191
|
let resArr = ringArr.map(item => item.data)
|
|
1256
|
-
this.barrierArr = resArr
|
|
1257
1192
|
let ringTeam = this.step1(this.phaseList, resArr)
|
|
1258
1193
|
let ringTeams = ringTeam.filter(item => item.length !== 0)
|
|
1259
1194
|
if (this.patternList) {
|
|
@@ -1341,7 +1276,7 @@ export default {
|
|
|
1341
1276
|
}
|
|
1342
1277
|
}
|
|
1343
1278
|
obj.split = split
|
|
1344
|
-
obj.cycle =
|
|
1279
|
+
obj.cycle = this.fixCycle ? this.fixCycle : this.max ? this.max : this.newCycle
|
|
1345
1280
|
const isZero = split - currPhase.redclear - currPhase.yellow - currPhase.flashgreen
|
|
1346
1281
|
const allAdd = split + currPhase.redclear + currPhase.yellow + currPhase.flashgreen
|
|
1347
1282
|
if (isZero <= 0) {
|
|
@@ -64,6 +64,7 @@
|
|
|
64
64
|
:currModel="currModel"
|
|
65
65
|
:ip="ip"
|
|
66
66
|
:platform="platform"
|
|
67
|
+
:firm="firm"
|
|
67
68
|
:responseTime="responseTime"
|
|
68
69
|
:curFaultList="curFaultList"
|
|
69
70
|
:confirmedFault="confirmedFault"
|
|
@@ -198,6 +199,9 @@ export default {
|
|
|
198
199
|
platform: {
|
|
199
200
|
type: String
|
|
200
201
|
},
|
|
202
|
+
firm: {
|
|
203
|
+
type: String
|
|
204
|
+
},
|
|
201
205
|
realtimeStatusModalvisible: {
|
|
202
206
|
type: Boolean,
|
|
203
207
|
default: true
|
|
@@ -263,7 +267,7 @@ export default {
|
|
|
263
267
|
faultTimer: null, // 当前故障定时器
|
|
264
268
|
ParamsMode: new Map([[0, '自主控制'], [1, '本地手动'], [2, '平台控制'], [3, '配置软件控制'], [4, '遥控器控制'], [5, '黄闪器控制'], [6, '降级控制'], [7, '脚本控制'], [8, '算法控制']]),
|
|
265
269
|
ParamsModeEn: new Map([[0, 'Autonomous Control'], [1, 'Local Manual'], [2, 'Platform Control'], [3, 'Configuration Software Control'], [4, 'Remote Control'], [5, 'Yellow Flasher Control'], [6, 'Degradation Control'], [7, 'Script Control'], [8, 'Algorithm Control']]),
|
|
266
|
-
ParamsControl: new Map([[0, '多时段'], [1, '黄闪'], [2, '全红'], [3, '关灯'], [4, '步进'], [5, '定周期控制'], [6, '
|
|
270
|
+
ParamsControl: new Map([[0, '多时段'], [1, '黄闪'], [2, '全红'], [3, '关灯'], [4, '步进'], [5, '定周期控制'], [6, '自适应'], [7, '协调感应控制'], [8, '方案选择控制'], [9, '方案生成'], [10, '无电缆控制'], [11, '有电缆控制'], [12, '行人过街控制'], [13, '方案恢复过渡'], [14, '相位驻留'], [15, '通道检测'], [16, '方向锁定'], [17, '韦伯斯特单点控制'], [18, '预留18'], [19, '感应式行人过街'], [20, '方案干预'], [100, '方案干预'], [21, '预留21'], [22, '相位锁定'], [23, '相位放行控制'], [24, '紧急控制'], [99, '设备维护']]),
|
|
267
271
|
ParamsControlEn: new Map([[0, 'Multi Period'], [1, 'Yellow Flash Control'], [2, 'Red Control'], [3, 'Dark Control'], [4, 'Step'], [5, 'Fixed_Cycle Control'], [6, 'Free Control'], [7, 'Coordinated Induction Control'], [8, 'Pattern Selection Control'], [9, 'Adaptive Control'], [10, 'Wireless Control'], [11, 'Cable Control'], [12, 'Pedestrian Crossing Control'], [13, 'Pattern recovery'], [14, 'Phase dwell'], [15, 'Channel Detection'], [16, 'Direction lock'], [17, 'Webster Single Point Coordination'], [18, 'Reserving18'], [19, 'Inductive Pedestrian Crossing Control'], [20, 'Program Intervention'], [100, 'Program Intervention'], [21, 'Reserving21'], [22, 'Priority Control'], [23, 'Close Phase'], [24, 'Emergency Control'], [99, 'Device Mantenance']]),
|
|
268
272
|
phaseType: new Map([[1, '红'], [2, '黄'], [3, '绿']]), // phaseType表示红,黄,绿
|
|
269
273
|
phaseTypeEn: new Map([[1, 'Red'], [2, 'Yellow'], [3, 'Green']]), // phaseType表示红,黄,绿
|
|
@@ -303,7 +307,7 @@ export default {
|
|
|
303
307
|
id: 9,
|
|
304
308
|
iconClass: 'zishiying',
|
|
305
309
|
permission: 'configer:manual:base',
|
|
306
|
-
iconName: '
|
|
310
|
+
iconName: '方案生成'
|
|
307
311
|
}, {
|
|
308
312
|
id: 10,
|
|
309
313
|
iconClass: 'wuxianlan',
|
|
@@ -387,14 +391,14 @@ export default {
|
|
|
387
391
|
iconName: this.$t('openatccomponents.overview.modelList5'),
|
|
388
392
|
bgcolor: getTheme() === 'light' ? '#edf6ff' : '#243d59'
|
|
389
393
|
}, {
|
|
390
|
-
type: '
|
|
394
|
+
type: '自适应',
|
|
391
395
|
id: 6,
|
|
392
396
|
iconClass: 'ganyingkongzhi',
|
|
393
397
|
permission: 'configer:manual:base',
|
|
394
398
|
iconName: this.$t('openatccomponents.overview.modelList6'),
|
|
395
399
|
bgcolor: getTheme() === 'light' ? '#edf6ff' : '#243d59'
|
|
396
400
|
}, {
|
|
397
|
-
type: '
|
|
401
|
+
type: '方案生成',
|
|
398
402
|
id: 9,
|
|
399
403
|
iconClass: 'zishiying',
|
|
400
404
|
permission: 'configer:manual:base',
|
|
@@ -421,13 +425,6 @@ export default {
|
|
|
421
425
|
permission: 'configer:manual:base',
|
|
422
426
|
iconName: this.$t('openatccomponents.overview.modelList19'),
|
|
423
427
|
bgcolor: getTheme() === 'light' ? '#edf6ff' : '#243d59'
|
|
424
|
-
}, {
|
|
425
|
-
type: '感应式自适应',
|
|
426
|
-
id: 18,
|
|
427
|
-
iconClass: 'ganyingshizishiying',
|
|
428
|
-
permission: 'configer:manual:base',
|
|
429
|
-
iconName: this.$t('openatccomponents.overview.modelList18'),
|
|
430
|
-
bgcolor: getTheme() === 'light' ? '#edf6ff' : '#243d59'
|
|
431
428
|
}
|
|
432
429
|
],
|
|
433
430
|
othersControlList: [
|
|
@@ -635,7 +632,8 @@ export default {
|
|
|
635
632
|
GetRoleByName(`thirdparty--${this.platform}`).then(res => {
|
|
636
633
|
if (!res.data.success) {
|
|
637
634
|
let msg = getMessageByCode(res.data.code, this.$i18n.locale)
|
|
638
|
-
this.$message.error(msg)
|
|
635
|
+
// this.$message.error(msg)
|
|
636
|
+
console.log(msg)
|
|
639
637
|
return
|
|
640
638
|
}
|
|
641
639
|
this.funcSort = 'thirdPartyFunc'
|
|
@@ -973,7 +971,8 @@ export default {
|
|
|
973
971
|
}
|
|
974
972
|
GetAllFaultRange(param).then(res => {
|
|
975
973
|
if (res.data.success !== true) {
|
|
976
|
-
this.$message.error(getMessageByCode(res.data.code, this.$i18n.locale))
|
|
974
|
+
// this.$message.error(getMessageByCode(res.data.code, this.$i18n.locale))
|
|
975
|
+
console.log(getMessageByCode(res.data.code, this.$i18n.locale))
|
|
977
976
|
return
|
|
978
977
|
}
|
|
979
978
|
this.curFaultList = res.data.data.content
|
|
@@ -213,7 +213,8 @@ export default {
|
|
|
213
213
|
let iframdevid = getIframdevid()
|
|
214
214
|
getAllDerection(iframdevid).then((res) => {
|
|
215
215
|
if (res.data.success !== true) {
|
|
216
|
-
this.$message.error(getMessageByCode(res.data.code, this.$i18n.locale))
|
|
216
|
+
// this.$message.error(getMessageByCode(res.data.code, this.$i18n.locale))
|
|
217
|
+
console.log(getMessageByCode(res.data.code, this.$i18n.locale))
|
|
217
218
|
return
|
|
218
219
|
}
|
|
219
220
|
this.allDirection = res.data.data.map(item => {
|
|
@@ -20,10 +20,10 @@
|
|
|
20
20
|
:model="manualInfo"
|
|
21
21
|
label-width="90px">
|
|
22
22
|
<el-form-item
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
23
|
+
:label="$t('openatccomponents.overview.greenclear')"
|
|
24
|
+
prop="intersection">
|
|
25
|
+
<el-input-number :min="0" :max="65535" :precision="0" :step="1" :controls="false" v-model.number="manualInfo.tempGreenflash" size="small"></el-input-number>
|
|
26
|
+
</el-form-item>
|
|
27
27
|
|
|
28
28
|
<el-form-item
|
|
29
29
|
:label="$t('openatccomponents.overview.yellowflash')"
|
|
@@ -44,11 +44,13 @@
|
|
|
44
44
|
label-position="left"
|
|
45
45
|
:model="manualInfo"
|
|
46
46
|
label-width="90px">
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
47
|
+
|
|
48
|
+
<el-form-item
|
|
49
|
+
:label="$t('openatccomponents.overview.duration')"
|
|
50
|
+
prop="count">
|
|
51
|
+
<el-input-number :min="0" :max="65535" :precision="0" :step="1" :controls="false" v-model.number="manualInfo.tempDuration" size="small"></el-input-number>
|
|
52
|
+
</el-form-item>
|
|
53
|
+
|
|
52
54
|
<el-form-item
|
|
53
55
|
:label="$t('openatccomponents.overview.allred')"
|
|
54
56
|
prop="intersection">
|