openatc-components 0.0.101 → 0.0.104
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 +6 -1
- package/package/kisscomps/components/ChannelizationFlowStatistic/ChannelizationFlowStatistic.vue +349 -0
- package/package/kisscomps/components/ChannelizationFlowStatistic/index.js +2 -0
- package/package/kisscomps/components/DrawChannelization/drawsvg/channelizationElements.vue +12 -0
- package/package/kisscomps/components/DrawChannelization/drawsvg/drawElement/crossMap.vue +22 -24
- package/package/kisscomps/components/DrawChannelization/drawsvg/iconSvg/countdownSvg.vue +22 -3
- package/package/kisscomps/components/DrawChannelization/drawsvg/index.draw.vue +83 -17
- package/package/kisscomps/components/DrawChannelization/drawsvg/utils/loadutils.js +8 -8
- package/package/kisscomps/components/KanBan/kanban.vue +7 -7
- package/package/kisscomps/components/PatternStatus/PatternStatus.vue +153 -38
- package/package/kisscomps/components/SchemeConfig/SchemeConfig.vue +16 -0
- package/package/kisscomps/components/SchemeConfig/priorityControl/index.vue +190 -0
- package/package/kisscomps/components/SchemeConfig/priorityControl/utils.js +163 -0
- package/package/kisscomps/components/StageStatus/StageStatus.vue +6 -2
- package/package/kisscomps/components/patternList/patternList.vue +5 -0
- package/package/kisscomps/index.js +4 -0
- package/package/kissui.min.js +1 -1
- package/package.json +13 -12
- package/src/i18n/language/en.js +29 -1
- package/src/i18n/language/zh.js +29 -1
- package/src/kisscomps/components/BoardCard/BoardCard.vue +6 -1
- package/src/kisscomps/components/ChannelizationFlowStatistic/ChannelizationFlowStatistic.vue +349 -0
- package/src/kisscomps/components/ChannelizationFlowStatistic/index.js +2 -0
- package/src/kisscomps/components/DrawChannelization/drawsvg/channelizationElements.vue +12 -0
- package/src/kisscomps/components/DrawChannelization/drawsvg/drawElement/crossMap.vue +22 -24
- package/src/kisscomps/components/DrawChannelization/drawsvg/iconSvg/countdownSvg.vue +22 -3
- package/src/kisscomps/components/DrawChannelization/drawsvg/index.draw.vue +83 -17
- package/src/kisscomps/components/DrawChannelization/drawsvg/utils/loadutils.js +8 -8
- package/src/kisscomps/components/KanBan/kanban.vue +7 -7
- package/src/kisscomps/components/PatternStatus/PatternStatus.vue +153 -38
- package/src/kisscomps/components/SchemeConfig/SchemeConfig.vue +16 -0
- package/src/kisscomps/components/SchemeConfig/priorityControl/index.vue +190 -0
- package/src/kisscomps/components/SchemeConfig/priorityControl/utils.js +163 -0
- package/src/kisscomps/components/StageStatus/StageStatus.vue +6 -2
- package/src/kisscomps/components/patternList/patternList.vue +5 -0
- package/src/kisscomps/index.js +4 -0
- package/src/router/index.js +7 -8
- package/src/views/customchannelization.vue +1 -1
- package/src/views/intersection.vue +67 -43
- package/src/views/schemeconfig.vue +2 -2
- package/static/styles/channelizatioon.scss +9 -0
- package/static/styles/commonkanban.scss +27 -27
- package/static/styles/schemeconfig.scss +52 -0
|
@@ -84,6 +84,8 @@
|
|
|
84
84
|
<el-button type="primary" @click="handleReset()">{{$t('openatccomponents.button.reset')}}</el-button>
|
|
85
85
|
<!-- <el-button type="primary" @click="cancledraw()">{{$t('openatccomponents.button.Cancel')}}</el-button> -->
|
|
86
86
|
<el-button type="primary" @click="savedraw()">{{$t('openatccomponents.button.save')}}</el-button>
|
|
87
|
+
<el-button type="primary" @click="importFromFile()">{{$t('openatccomponents.main.import')}}</el-button>
|
|
88
|
+
<el-button type="primary" @click="exportToFile()">{{$t('openatccomponents.main.export')}}</el-button>
|
|
87
89
|
</div>
|
|
88
90
|
</div>
|
|
89
91
|
<div class="custom-edit" ref="customEdit">
|
|
@@ -111,7 +113,28 @@
|
|
|
111
113
|
/>
|
|
112
114
|
</div>
|
|
113
115
|
</el-row> -->
|
|
114
|
-
|
|
116
|
+
<!-- 从文件导入弹窗 -->
|
|
117
|
+
<el-dialog
|
|
118
|
+
:title="$t('openatccomponents.main.tip')"
|
|
119
|
+
:visible.sync="dialogVisible"
|
|
120
|
+
width="30%"
|
|
121
|
+
>
|
|
122
|
+
<input
|
|
123
|
+
type="file"
|
|
124
|
+
id="file"
|
|
125
|
+
/>
|
|
126
|
+
<span
|
|
127
|
+
slot="footer"
|
|
128
|
+
class="dialog-footer"
|
|
129
|
+
>
|
|
130
|
+
<el-button @click="dialogVisible = false">{{$t('openatccomponents.common.cancel')}}</el-button>
|
|
131
|
+
<el-button
|
|
132
|
+
type="primary"
|
|
133
|
+
@click="readAsText"
|
|
134
|
+
>{{$t('openatccomponents.common.confirm')}}</el-button>
|
|
135
|
+
</span>
|
|
136
|
+
</el-dialog>
|
|
137
|
+
</div>
|
|
115
138
|
</template>
|
|
116
139
|
|
|
117
140
|
<script>
|
|
@@ -127,9 +150,7 @@ import ImportDialog from './importDialog'
|
|
|
127
150
|
import Messagebox from '../../MessageBox/index'
|
|
128
151
|
|
|
129
152
|
import { mapState } from 'vuex'
|
|
130
|
-
import PhaseDataMgr from '../phaseDataMgr.js'
|
|
131
153
|
|
|
132
|
-
// import { getIframdevid } from '../../../../utils/auth.js'
|
|
133
154
|
import { saveChannelizatonChart } from '../../../../api/cross'
|
|
134
155
|
import { getMessageByCode } from '../../../../utils/responseMessage.js'
|
|
135
156
|
|
|
@@ -145,8 +166,7 @@ export default {
|
|
|
145
166
|
},
|
|
146
167
|
computed: {
|
|
147
168
|
...mapState({
|
|
148
|
-
phaseList: state => state.globalParam.tscParam.phaseList
|
|
149
|
-
PhaseDataMgr: state => state.globalParam.PhaseDataMgr
|
|
169
|
+
phaseList: state => state.globalParam.tscParam.phaseList
|
|
150
170
|
})
|
|
151
171
|
},
|
|
152
172
|
props: {
|
|
@@ -169,6 +189,7 @@ export default {
|
|
|
169
189
|
loadedChannelizatonData: {
|
|
170
190
|
handler: function (val) {
|
|
171
191
|
// 平台设备切换时,重载当前路口保存的渠化配置
|
|
192
|
+
this.LoadedChannelizatonData = JSON.parse(JSON.stringify(val))
|
|
172
193
|
this.load('all')
|
|
173
194
|
},
|
|
174
195
|
deep: true
|
|
@@ -281,7 +302,9 @@ export default {
|
|
|
281
302
|
[3, '右转'],
|
|
282
303
|
[4, '掉头']
|
|
283
304
|
]),
|
|
284
|
-
phaseAssociatedMap: new Map() // 关联相位Map: key 是相位ID, value 是车道数据包含direction
|
|
305
|
+
phaseAssociatedMap: new Map(), // 关联相位Map: key 是相位ID, value 是车道数据包含direction
|
|
306
|
+
dialogVisible: false,
|
|
307
|
+
LoadedChannelizatonData: {} // 从接口获取到的渠化参数,用于作为加载数据,从文件导入可修改
|
|
285
308
|
}
|
|
286
309
|
},
|
|
287
310
|
methods: {
|
|
@@ -307,10 +330,6 @@ export default {
|
|
|
307
330
|
break
|
|
308
331
|
case 'vehile':
|
|
309
332
|
this.changeMotorwayItem(iconObj, changefield)
|
|
310
|
-
if (changefield.indexOf('phaseid') !== -1) {
|
|
311
|
-
// 相位关联成功后,生成最新的相位关联map数据
|
|
312
|
-
this.PhaseDataMgr.updateLanePhaseAssociatedMap(this.Motorways)
|
|
313
|
-
}
|
|
314
333
|
break
|
|
315
334
|
case 'ped':
|
|
316
335
|
this.changePedItem(iconObj, changefield)
|
|
@@ -343,8 +362,6 @@ export default {
|
|
|
343
362
|
this.Pedwalk[i].phasetype = undefined
|
|
344
363
|
}
|
|
345
364
|
}
|
|
346
|
-
// 更新模型内初始相位列表数据
|
|
347
|
-
this.PhaseDataMgr.updateLanePhaseAssociatedMap(this.Motorways)
|
|
348
365
|
},
|
|
349
366
|
|
|
350
367
|
// 添加不同类型的车道图标
|
|
@@ -761,8 +778,7 @@ export default {
|
|
|
761
778
|
cancleSetting () {
|
|
762
779
|
this.canclesettingvisible = false
|
|
763
780
|
},
|
|
764
|
-
|
|
765
|
-
savedraw () {
|
|
781
|
+
handleSaveParams () {
|
|
766
782
|
let temp = {}
|
|
767
783
|
console.log(this.customlist)
|
|
768
784
|
for (const item of this.customlist) {
|
|
@@ -775,12 +791,18 @@ export default {
|
|
|
775
791
|
if (this.CrossMapData.svgstr !== '' || this.CrossMapData.imgfilesrc !== '') {
|
|
776
792
|
temp.crossMap = this.CrossMapData
|
|
777
793
|
}
|
|
794
|
+
return temp
|
|
795
|
+
},
|
|
796
|
+
// 保存
|
|
797
|
+
savedraw () {
|
|
798
|
+
let temp = {}
|
|
799
|
+
temp = this.handleSaveParams()
|
|
778
800
|
this.saveChannelizatonChart(temp)
|
|
779
801
|
},
|
|
780
802
|
// 加载
|
|
781
803
|
load (type) {
|
|
782
804
|
this.curChooseIconIndex = -1
|
|
783
|
-
let savedTemp = JSON.parse(JSON.stringify(this.
|
|
805
|
+
let savedTemp = JSON.parse(JSON.stringify(this.LoadedChannelizatonData))
|
|
784
806
|
let arr = []
|
|
785
807
|
for (const [key, value] of Object.entries(savedTemp)) {
|
|
786
808
|
if (key === 'vehile') {
|
|
@@ -801,6 +823,9 @@ export default {
|
|
|
801
823
|
}
|
|
802
824
|
if (key === 'crossMap') {
|
|
803
825
|
this.CrossMapData = JSON.parse(JSON.stringify(value))
|
|
826
|
+
if (value.icontype === undefined) {
|
|
827
|
+
this.CrossMapData.icontype = 'crossmap'
|
|
828
|
+
}
|
|
804
829
|
} else {
|
|
805
830
|
if (value.length > 1) {
|
|
806
831
|
arr = [...arr, ...value]
|
|
@@ -852,6 +877,12 @@ export default {
|
|
|
852
877
|
agentid: this.AgentId,
|
|
853
878
|
data: ChannelizatonData
|
|
854
879
|
}
|
|
880
|
+
if (ChannelizatonData.crossMap.type === 'vectorgraph') {
|
|
881
|
+
ChannelizatonData.crossMap.imgfilesrc = ''
|
|
882
|
+
}
|
|
883
|
+
if (ChannelizatonData.crossMap.type === 'picture') {
|
|
884
|
+
ChannelizatonData.crossMap.svgstr = ''
|
|
885
|
+
}
|
|
855
886
|
saveChannelizatonChart(params).then(data => {
|
|
856
887
|
this.$emit('saveCallback', data)
|
|
857
888
|
if (!data.data.success) {
|
|
@@ -909,11 +940,46 @@ export default {
|
|
|
909
940
|
},
|
|
910
941
|
handleLockCrossMap () {
|
|
911
942
|
this.isLockedCrossMap = !this.isLockedCrossMap
|
|
943
|
+
},
|
|
944
|
+
importFromFile () {
|
|
945
|
+
this.dialogVisible = true
|
|
946
|
+
},
|
|
947
|
+
readAsText () {
|
|
948
|
+
let _this = this
|
|
949
|
+
var file = document.getElementById('file').files[0]
|
|
950
|
+
var reader = new FileReader()
|
|
951
|
+
reader.async = true
|
|
952
|
+
// 将文件以文本形式读入页面
|
|
953
|
+
reader.readAsText(file)
|
|
954
|
+
reader.onload = function (f) {
|
|
955
|
+
setTimeout(() => {
|
|
956
|
+
_this.LoadedChannelizatonData = {}
|
|
957
|
+
_this.handleReset()
|
|
958
|
+
_this.dialogVisible = false
|
|
959
|
+
_this.LoadedChannelizatonData = JSON.parse(this.result)
|
|
960
|
+
_this.load()
|
|
961
|
+
_this.$alert(_this.$t('openatccomponents.common.uploadsuccess'), { type: 'success' })
|
|
962
|
+
}, 50)
|
|
963
|
+
}
|
|
964
|
+
},
|
|
965
|
+
async exportToFile () {
|
|
966
|
+
let tscParam = this.handleSaveParams()
|
|
967
|
+
let content = new Blob([JSON.stringify(tscParam)])
|
|
968
|
+
// 生成url对象
|
|
969
|
+
let urlObject = window.URL || window.webkitURL || window
|
|
970
|
+
let url = urlObject.createObjectURL(content)
|
|
971
|
+
// 生成<a></a>DOM元素
|
|
972
|
+
let el = document.createElement('a')
|
|
973
|
+
// 链接赋值
|
|
974
|
+
el.href = url
|
|
975
|
+
el.download = 'ChanelizationParam.json'
|
|
976
|
+
// 必须点击否则不会下载
|
|
977
|
+
el.click()
|
|
978
|
+
// 移除链接释放资源
|
|
979
|
+
urlObject.revokeObjectURL(url)
|
|
912
980
|
}
|
|
913
981
|
},
|
|
914
982
|
mounted () {
|
|
915
|
-
let PhaseData = new PhaseDataMgr(this.phaseList)
|
|
916
|
-
this.$store.dispatch('InitPhaseDataMgr', PhaseData)
|
|
917
983
|
this.handleClickSketchpad()
|
|
918
984
|
}
|
|
919
985
|
}
|
|
@@ -25,11 +25,6 @@ export default class Svgmethods {
|
|
|
25
25
|
return
|
|
26
26
|
}
|
|
27
27
|
if (filetype === 'image/svg+xml') {
|
|
28
|
-
reader.readAsText(file, 'UTF-8')
|
|
29
|
-
reader.addEventListener('load', async (readerEvent) => {
|
|
30
|
-
const content = readerEvent.target.result
|
|
31
|
-
call('vectorgraph', content)
|
|
32
|
-
})
|
|
33
28
|
reader2.readAsDataURL(file)
|
|
34
29
|
reader2.addEventListener('load', async (readerEvent) => {
|
|
35
30
|
const imageSrc = readerEvent.target.result
|
|
@@ -41,6 +36,11 @@ export default class Svgmethods {
|
|
|
41
36
|
height
|
|
42
37
|
}
|
|
43
38
|
call2('vectorgraph', svgsize)
|
|
39
|
+
reader.readAsText(file, 'UTF-8')
|
|
40
|
+
reader.addEventListener('load', async (readerEvent) => {
|
|
41
|
+
const content = readerEvent.target.result
|
|
42
|
+
call('vectorgraph', content)
|
|
43
|
+
})
|
|
44
44
|
})
|
|
45
45
|
})
|
|
46
46
|
}
|
|
@@ -48,9 +48,6 @@ export default class Svgmethods {
|
|
|
48
48
|
reader.readAsDataURL(file)
|
|
49
49
|
reader.addEventListener('load', async (readerEvent) => {
|
|
50
50
|
// 图片的 base64 格式, 可以直接当成 img 的 src 属性值
|
|
51
|
-
const _base64 = reader.result
|
|
52
|
-
const content = _base64
|
|
53
|
-
call('picture', content)
|
|
54
51
|
const imageSrc = readerEvent.target.result
|
|
55
52
|
// 调用计算图片大小的方法
|
|
56
53
|
calculateImageSize(imageSrc).then(function ({width, height}) {
|
|
@@ -60,6 +57,9 @@ export default class Svgmethods {
|
|
|
60
57
|
height
|
|
61
58
|
}
|
|
62
59
|
call2('picture', pngsize)
|
|
60
|
+
const _base64 = reader.result
|
|
61
|
+
const content = _base64
|
|
62
|
+
call('picture', content)
|
|
63
63
|
})
|
|
64
64
|
})
|
|
65
65
|
}
|
|
@@ -180,7 +180,7 @@ export default {
|
|
|
180
180
|
ls.minSplit = temp1 > temp2 ? temp1 : temp2
|
|
181
181
|
if (ls.mode !== 7 && ls.value < ls.minSplit) {
|
|
182
182
|
ls.value = ls.minSplit
|
|
183
|
-
this.$message.error(this.$t('openatccomponents.pattern.splitCheckMsg'))
|
|
183
|
+
// this.$message.error(this.$t('openatccomponents.pattern.splitCheckMsg'))
|
|
184
184
|
}
|
|
185
185
|
}
|
|
186
186
|
},
|
|
@@ -202,12 +202,12 @@ export default {
|
|
|
202
202
|
}
|
|
203
203
|
return maxCycle
|
|
204
204
|
},
|
|
205
|
-
doChange (
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
205
|
+
doChange (e) {
|
|
206
|
+
if (e) {
|
|
207
|
+
let n = this.index
|
|
208
|
+
this.$emit('handleMode', n)
|
|
209
|
+
this.$forceUpdate()
|
|
210
|
+
}
|
|
211
211
|
}
|
|
212
212
|
}
|
|
213
213
|
}
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
<div class="first-1" :style="{'width':item.redWidth,'height':'34px','background':'#f27979'}"></div>
|
|
44
44
|
</div>
|
|
45
45
|
</div>
|
|
46
|
-
<div v-for="(item, index) in barrierList" :key="index + '1'">
|
|
46
|
+
<div v-if="showBarrier" v-for="(item, index) in barrierList" :key="index + '1'">
|
|
47
47
|
<div class="divider" :style="{'left':item, 'height':barrierHeight}"></div>
|
|
48
48
|
</div>
|
|
49
49
|
<div v-show="(syncTime && cycle && cycle>0) || (syncTime && newCycle && newCycle>0)">
|
|
@@ -123,6 +123,10 @@ export default {
|
|
|
123
123
|
patternList: {
|
|
124
124
|
type: Array
|
|
125
125
|
},
|
|
126
|
+
showBarrier: {
|
|
127
|
+
type: Boolean,
|
|
128
|
+
default: false
|
|
129
|
+
},
|
|
126
130
|
localPatternList: {
|
|
127
131
|
type: Array
|
|
128
132
|
},
|
|
@@ -162,10 +166,10 @@ export default {
|
|
|
162
166
|
return res
|
|
163
167
|
},
|
|
164
168
|
timeNumDevide () {
|
|
165
|
-
if (this.newCycle && this.newCycle > 0) {
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
}
|
|
169
|
+
// if (this.newCycle && this.newCycle > 0) {
|
|
170
|
+
// let res = (this.newCycle - this.syncTime) + '/' + this.newCycle
|
|
171
|
+
// return res
|
|
172
|
+
// }
|
|
169
173
|
if (this.cycle && this.cycle > 0) {
|
|
170
174
|
let res = (this.cycle - this.syncTime) + '/' + this.cycle
|
|
171
175
|
return res
|
|
@@ -191,7 +195,7 @@ export default {
|
|
|
191
195
|
this.getPedPhasePos()
|
|
192
196
|
this.getBusPos()
|
|
193
197
|
this.getStage()
|
|
194
|
-
this.handlePatternData()
|
|
198
|
+
// this.handlePatternData()
|
|
195
199
|
},
|
|
196
200
|
// 深度观察监听
|
|
197
201
|
deep: true
|
|
@@ -407,63 +411,174 @@ export default {
|
|
|
407
411
|
this.newList = []
|
|
408
412
|
if (Object.keys(this.controlData).length === 0 || this.phaseList.length === 0) return
|
|
409
413
|
if (!this.controlData.phase) return
|
|
410
|
-
let cycle = this.controlData.cycle
|
|
414
|
+
// let cycle = this.controlData.cycle
|
|
411
415
|
if (!this.controlData.rings) return
|
|
416
|
+
let newValue = []
|
|
412
417
|
for (let rings of this.controlData.rings) {
|
|
413
418
|
let phase = this.controlData.phase
|
|
414
|
-
let list = []
|
|
419
|
+
// let list = []
|
|
420
|
+
let obj = {}
|
|
421
|
+
for (let key in rings.sequence) {
|
|
422
|
+
obj[key] = rings.sequence[key]
|
|
423
|
+
}
|
|
424
|
+
let newObj = Object.keys(obj).map(val => ({
|
|
425
|
+
id: obj[val]
|
|
426
|
+
}))
|
|
427
|
+
newValue.push(newObj)
|
|
415
428
|
for (let sequ of rings.sequence) {
|
|
416
429
|
let obj = {}
|
|
417
430
|
obj.id = sequ
|
|
418
431
|
let split = phase.filter((item) => {
|
|
419
432
|
return item.id === sequ
|
|
420
433
|
})[0].split
|
|
434
|
+
newValue.map(d => {
|
|
435
|
+
d.map(r => {
|
|
436
|
+
if (r.id === sequ) {
|
|
437
|
+
r.value = split
|
|
438
|
+
}
|
|
439
|
+
})
|
|
440
|
+
})
|
|
441
|
+
// let currPhase = this.phaseList.filter((item) => {
|
|
442
|
+
// if (item.id === sequ && item.controltype === 99) {
|
|
443
|
+
// obj.controltype = item.controltype
|
|
444
|
+
// }
|
|
445
|
+
// return item.id === sequ
|
|
446
|
+
// })[0]
|
|
447
|
+
// if (currPhase) {
|
|
448
|
+
// obj.redWidth = (currPhase.redclear / cycle * 100).toFixed(3) + '%'
|
|
449
|
+
// obj.yellowWidth = (currPhase.yellow / cycle * 100).toFixed(3) + '%'
|
|
450
|
+
// obj.greenWidth = ((split - currPhase.redclear - currPhase.yellow - currPhase.flashgreen) / cycle * 100).toFixed(3) + '%'
|
|
451
|
+
// obj.flashgreen = (currPhase.flashgreen / cycle * 100).toFixed(3) + '%'
|
|
452
|
+
// // obj.peddirection = currPhase.peddirection
|
|
453
|
+
// let peddirections = []
|
|
454
|
+
// for (let walk of this.sidewalkPhaseData) {
|
|
455
|
+
// for (let ped of currPhase.peddirection) {
|
|
456
|
+
// // if (stg === walk.phaseid) {
|
|
457
|
+
// let objs = {}
|
|
458
|
+
// objs.name = walk.name
|
|
459
|
+
// objs.id = walk.id
|
|
460
|
+
// if (ped === walk.id) {
|
|
461
|
+
// peddirections.push(objs)
|
|
462
|
+
// peddirections = Array.from(new Set(peddirections))
|
|
463
|
+
// }
|
|
464
|
+
// // }
|
|
465
|
+
// }
|
|
466
|
+
// }
|
|
467
|
+
// obj.peddirection = peddirections
|
|
468
|
+
// obj.split = split
|
|
469
|
+
// obj.direction = currPhase.direction.map(item => {
|
|
470
|
+
// return {
|
|
471
|
+
// id: item,
|
|
472
|
+
// color: '#454545'
|
|
473
|
+
// }
|
|
474
|
+
// })
|
|
475
|
+
// list.push(obj)
|
|
476
|
+
// }
|
|
477
|
+
}
|
|
478
|
+
// this.newList.push(list)
|
|
479
|
+
// this.patternInfo = [...this.newList]
|
|
480
|
+
}
|
|
481
|
+
this.handleOverViewChange(newValue)
|
|
482
|
+
},
|
|
483
|
+
handleBarrierHeight () { // 屏障高度
|
|
484
|
+
if (!this.patternInfo) return
|
|
485
|
+
let patternLength = this.patternInfo.length
|
|
486
|
+
this.barrierHeight = (patternLength * 35 + 21) + 'px'
|
|
487
|
+
},
|
|
488
|
+
handleOverViewChange (val) {
|
|
489
|
+
if (val === null || val.length === 0) return
|
|
490
|
+
this.patternInfo = []
|
|
491
|
+
let currentArr = []
|
|
492
|
+
let newPattern = []
|
|
493
|
+
val.map(i => {
|
|
494
|
+
newPattern.push(...i)
|
|
495
|
+
})
|
|
496
|
+
if (this.phaseList.length === 0) return
|
|
497
|
+
for (let patternStatus of val[0]) {
|
|
498
|
+
if (patternStatus.mode !== 7) {
|
|
499
|
+
let concurrent = this.phaseList.filter((item) => {
|
|
500
|
+
return item.id === patternStatus.id // patternStatus.id当前相位id concurrent当前相位的并发相位
|
|
501
|
+
})[0].concurrent// 当前相位的并发相位
|
|
502
|
+
if (concurrent) {
|
|
503
|
+
let obj = {
|
|
504
|
+
id: patternStatus.id,
|
|
505
|
+
current: concurrent.sort()
|
|
506
|
+
}
|
|
507
|
+
currentArr.push(obj)
|
|
508
|
+
}
|
|
509
|
+
}
|
|
510
|
+
}
|
|
511
|
+
if (currentArr.length !== 0) {
|
|
512
|
+
let newCurrent = this.tranform(currentArr)
|
|
513
|
+
let ringTeam = this.step1(this.phaseList, newCurrent)
|
|
514
|
+
this.fillGap(ringTeam, val)
|
|
515
|
+
}
|
|
516
|
+
let cycle = this.controlData.cycle
|
|
517
|
+
for (let rings of val) {
|
|
518
|
+
if (rings.length === 0) continue
|
|
519
|
+
let list = []
|
|
520
|
+
for (let ring of rings) {
|
|
521
|
+
if (ring.value === 0) continue
|
|
522
|
+
let obj = {}
|
|
523
|
+
let split = ring.value
|
|
524
|
+
obj.id = ring.id
|
|
525
|
+
// obj.split = split
|
|
421
526
|
let currPhase = this.phaseList.filter((item) => {
|
|
422
|
-
if (item.id ===
|
|
527
|
+
if (item.id === ring.id && item.controltype === 99) {
|
|
423
528
|
obj.controltype = item.controltype
|
|
424
529
|
}
|
|
425
|
-
return item.id ===
|
|
530
|
+
return item.id === ring.id
|
|
426
531
|
})[0]
|
|
427
|
-
if (
|
|
428
|
-
obj.
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
// obj.peddirection = currPhase.peddirection
|
|
433
|
-
let peddirections = []
|
|
434
|
-
for (let walk of this.sidewalkPhaseData) {
|
|
435
|
-
for (let ped of currPhase.peddirection) {
|
|
436
|
-
// if (stg === walk.phaseid) {
|
|
437
|
-
let objs = {}
|
|
438
|
-
objs.name = walk.name
|
|
439
|
-
objs.id = walk.id
|
|
440
|
-
if (ped === walk.id) {
|
|
441
|
-
peddirections.push(objs)
|
|
442
|
-
peddirections = Array.from(new Set(peddirections))
|
|
443
|
-
}
|
|
444
|
-
// }
|
|
532
|
+
if (ring.desc) {
|
|
533
|
+
obj.direction = ring.desc.map(item => { // 虚相位desc为空
|
|
534
|
+
return {
|
|
535
|
+
id: item.id,
|
|
536
|
+
color: '#454545'
|
|
445
537
|
}
|
|
446
|
-
}
|
|
447
|
-
|
|
448
|
-
obj.split = split
|
|
538
|
+
})
|
|
539
|
+
} else {
|
|
449
540
|
obj.direction = currPhase.direction.map(item => {
|
|
450
541
|
return {
|
|
451
542
|
id: item,
|
|
452
543
|
color: '#454545'
|
|
453
544
|
}
|
|
454
545
|
})
|
|
546
|
+
}
|
|
547
|
+
if (ring.sum) {
|
|
548
|
+
obj.split = split
|
|
549
|
+
obj.redWidth = (currPhase.redclear + ring.sum / (this.max ? this.max : cycle) * 100).toFixed(3) + '%'
|
|
550
|
+
} else {
|
|
551
|
+
obj.split = split
|
|
552
|
+
obj.redWidth = (currPhase.redclear / (this.max ? this.max : cycle) * 100).toFixed(3) + '%'
|
|
553
|
+
}
|
|
554
|
+
obj.flashgreen = (currPhase.flashgreen / (this.max ? this.max : cycle) * 100).toFixed(3) + '%'
|
|
555
|
+
obj.yellowWidth = (currPhase.yellow / (this.max ? this.max : cycle) * 100).toFixed(3) + '%'
|
|
556
|
+
obj.greenWidth = ((split - currPhase.redclear - currPhase.yellow - currPhase.flashgreen) / (this.max ? this.max : cycle) * 100).toFixed(3) + '%'
|
|
557
|
+
// obj.peddirection = currPhase.peddirection
|
|
558
|
+
let peddirections = []
|
|
559
|
+
for (let walk of this.sidewalkPhaseData) {
|
|
560
|
+
for (let ped of currPhase.peddirection) {
|
|
561
|
+
// if (stg === walk.phaseid) {
|
|
562
|
+
let objs = {}
|
|
563
|
+
objs.name = walk.name
|
|
564
|
+
objs.id = walk.id
|
|
565
|
+
if (ped === walk.id) {
|
|
566
|
+
peddirections.push(objs)
|
|
567
|
+
peddirections = Array.from(new Set(peddirections))
|
|
568
|
+
}
|
|
569
|
+
// }
|
|
570
|
+
}
|
|
571
|
+
}
|
|
572
|
+
obj.peddirection = peddirections
|
|
573
|
+
// 忽略相位不显示
|
|
574
|
+
let mode = ring.mode
|
|
575
|
+
if (mode !== 7) { // 忽略相位不显示
|
|
455
576
|
list.push(obj)
|
|
456
577
|
}
|
|
457
578
|
}
|
|
458
|
-
this.
|
|
459
|
-
this.patternInfo = [...this.newList]
|
|
579
|
+
this.patternInfo.push(list)
|
|
460
580
|
}
|
|
461
581
|
},
|
|
462
|
-
handleBarrierHeight () { // 屏障高度
|
|
463
|
-
if (!this.patternInfo) return
|
|
464
|
-
let patternLength = this.patternInfo.length
|
|
465
|
-
this.barrierHeight = (patternLength * 35 + 21) + 'px'
|
|
466
|
-
},
|
|
467
582
|
handleCurrentChange (val) { // 两个ring的数据
|
|
468
583
|
if (val === null || val.length === 0) return
|
|
469
584
|
this.patternInfo = []
|
|
@@ -69,6 +69,12 @@
|
|
|
69
69
|
@closePhaseBack="closePhaseBack"
|
|
70
70
|
@closePhaseControl="closePhaseControl"
|
|
71
71
|
/>
|
|
72
|
+
<priorityControl
|
|
73
|
+
v-if="specialPage === 'prioritycontrol'"
|
|
74
|
+
:phaseList="phaseList"
|
|
75
|
+
@closePhaseBack="closePhaseBack"
|
|
76
|
+
@closePhaseControl="closePhaseControl"
|
|
77
|
+
/>
|
|
72
78
|
</div>
|
|
73
79
|
</transition>
|
|
74
80
|
|
|
@@ -110,6 +116,7 @@ import ManualControlModal from './manualControlModal'
|
|
|
110
116
|
import ClosePhaseControlModal from './closePhaselControlModal'
|
|
111
117
|
import LockingPhaseControlModal from './lockingPhaselControlModal'
|
|
112
118
|
import TentativePlanControlModal from './tentativeplancontrolmodal'
|
|
119
|
+
import priorityControl from './priorityControl'
|
|
113
120
|
// import { getFaultMesZh, getFaultMesEn } from '../../utils/faultcode.js'
|
|
114
121
|
import { getMessageByCode } from '../../../utils/responseMessage'
|
|
115
122
|
import { GetAllFaultRange } from '../../../api/fault'
|
|
@@ -125,6 +132,7 @@ export default {
|
|
|
125
132
|
ManualControlModal,
|
|
126
133
|
ClosePhaseControlModal,
|
|
127
134
|
LockingPhaseControlModal,
|
|
135
|
+
priorityControl,
|
|
128
136
|
TentativePlanControlModal
|
|
129
137
|
},
|
|
130
138
|
props: {
|
|
@@ -292,6 +300,9 @@ export default {
|
|
|
292
300
|
}, {
|
|
293
301
|
id: 100,
|
|
294
302
|
iconClass: 'tentativeplan'
|
|
303
|
+
}, {
|
|
304
|
+
id: 24,
|
|
305
|
+
iconClass: 'tentativeplan'
|
|
295
306
|
}],
|
|
296
307
|
phaseRings: [],
|
|
297
308
|
curFaultList: [],
|
|
@@ -620,6 +631,11 @@ export default {
|
|
|
620
631
|
this.isClosePhase = true
|
|
621
632
|
this.phaseRings = ringDataModel.initRingPhaseData()
|
|
622
633
|
this.specialPage = 'tentativeplan'
|
|
634
|
+
} else if (id === 24) {
|
|
635
|
+
this.toPage = 3
|
|
636
|
+
this.isClosePhase = true
|
|
637
|
+
this.phaseRings = ringDataModel.initRingPhaseData()
|
|
638
|
+
this.specialPage = 'prioritycontrol'
|
|
623
639
|
} else {
|
|
624
640
|
this.isClosePhase = false
|
|
625
641
|
this.specialPage = ''
|