openatc-components 0.2.18 → 0.2.20

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.
Files changed (25) hide show
  1. package/package/kisscomps/components/DirectionListConfiguration/DirectionListConfiguration.vue +49 -49
  2. package/package/kisscomps/components/IntersectionDirectionSelection/IntersectionDirectionSelection.vue +39 -8
  3. package/package/kisscomps/components/IntersectionMap/crossDirection/crossDiagram.vue +33 -33
  4. package/package/kisscomps/components/OverLap/OverLap.vue +3 -24
  5. package/package/kisscomps/components/PatternStatus/PatternStatus.vue +12 -10
  6. package/package/kisscomps/components/SchemeConfig/SchemeConfig.vue +3 -3
  7. package/package/kisscomps/components/SchemeConfig/tentativeplancontrolmodal/index.vue +5 -28
  8. package/package/kisscomps/components/patternConfig/pattern/patternTable.vue +49 -2
  9. package/package/kisscomps/components/patternConfig/planContent.vue +3 -0
  10. package/package/kissui.min.js +1 -1
  11. package/package.json +2 -2
  12. package/src/EdgeMgr/controller/crossDiagramMgr.js +0 -1
  13. package/src/kisscomps/components/DirectionListConfiguration/DirectionListConfiguration.vue +49 -49
  14. package/src/kisscomps/components/IntersectionDirectionSelection/IntersectionDirectionSelection.vue +39 -8
  15. package/src/kisscomps/components/IntersectionMap/crossDirection/crossDiagram.vue +33 -33
  16. package/src/kisscomps/components/OverLap/OverLap.vue +3 -24
  17. package/src/kisscomps/components/PatternStatus/PatternStatus.vue +12 -10
  18. package/src/kisscomps/components/SchemeConfig/SchemeConfig.vue +3 -3
  19. package/src/kisscomps/components/SchemeConfig/tentativeplancontrolmodal/index.vue +5 -28
  20. package/src/kisscomps/components/patternConfig/pattern/patternTable.vue +49 -2
  21. package/src/kisscomps/components/patternConfig/planContent.vue +3 -0
  22. package/src/views/intersection.vue +11 -5
  23. package/src/views/patternConfig.vue +6 -969
  24. package/static/styles/schemeconfig.scss +3 -8
  25. package/src/node_modules/.package_versions.json +0 -1
@@ -47,7 +47,7 @@
47
47
  import xdrdirselector from '../XRDDirSelector/XRDDirSelector'
48
48
  import { uploadSingleTscParam } from '../../../api/param.js'
49
49
  import { getMessageByCode } from '../../../utils/responseMessage.js'
50
- import { getIntersectionInfo } from '../../../api/template.js'
50
+ // import { getIntersectionInfo } from '../../../api/template.js'
51
51
  import CrossDiagramMgr from '../../../EdgeMgr/controller/crossDiagramMgr.js'
52
52
  import PhaseDataModel from '../IntersectionMap/crossDirection/utils.js'
53
53
  // import { getTheme } from '../../../utils/auth'
@@ -100,57 +100,57 @@ export default {
100
100
  }
101
101
  },
102
102
  methods: {
103
- init () {
103
+ init (IntersectionInfo) {
104
104
  this.CrossDiagramMgr = new CrossDiagramMgr()
105
105
  this.PhaseDataModel = new PhaseDataModel(this.roadDirection)
106
- this.getIntersectionInfo() // 获取路口信息
106
+ this.getIntersectionInfo(IntersectionInfo) // 获取路口信息
107
107
  },
108
- getIntersectionInfo () {
108
+ getIntersectionInfo (res) {
109
109
  // 获取路口信息
110
- const agentid = this.agentId || '0'
111
- getIntersectionInfo(agentid).then(res => {
112
- if (!res.data.success) {
113
- this.isLoaded = false
114
- let commomMsg = this.$t('openatccomponents.overview.signalID') + ' : ' + agentid
115
- let msg = getMessageByCode(res.data.code, this.$i18n.locale)
116
- if (res.data.data) {
117
- // 子类型错误
118
- let childErrorCode = res.data.data.errorCode
119
- if (childErrorCode) {
120
- let childerror = getMessageByCode(res.data.data.errorCode, this.$i18n.locale)
121
- msg = msg + ' - ' + childerror
122
- }
123
- }
124
- msg = msg + ' - ' + commomMsg
125
- this.$message.error(msg)
126
- return
127
- }
128
- this.tempType = res.data.data.type
129
- // 获取车道相位、行人相位信息(坐标、名称)
130
- this.mainType = this.tempType.split('-')[0]
131
- this.mainDirection = this.tempType.split('-')[1]
132
- if (!this.isThirdSignal) {
133
- // 可点击模式下,非第三方设备,按通道显示相位方向
134
- this.getChannelInfo()
135
- return
136
- }
137
- this.crossInfo = res.data.data.param
138
- // 城市道路加载车道相位坐标和人行道坐标
139
- this.getPhasePos()
140
- this.getOverlapPhasePos()
141
- this.getPedPhasePos()
142
- this.getOverlapPedPhasePos()
143
- if (this.isThirdSignal) {
144
- // 第三方设备,按相位方向显示相位方向
145
- this.compLanePhaseData = this.CrossDiagramMgr.compare(this.LanePhaseData, this.overlapLanePhaseData, 'type', 'nostatus')
146
- this.compSidewalkPhaseData = this.CrossDiagramMgr.compare(this.sidewalkPhaseData, this.overlapsidewalkPhaseData, 'pedtype', 'nostatus')
147
- let allDir = this.compLanePhaseData.map(ele => ele.id)
148
- let allPedDir = this.compSidewalkPhaseData.map(ele => ele.id)
149
- this.inneChoosedDirection = this.choosedDirection.filter(dir => allDir.indexOf(dir) !== -1)
150
- this.inneChoosedPedDirection = this.choosedPedDirection.filter(dir => allPedDir.indexOf(dir) !== -1)
151
- this.drawPhaseIcon()
152
- }
153
- })
110
+ // const agentid = this.agentId || '0'
111
+ // getIntersectionInfo(agentid).then(res => {
112
+ // if (!res.data.success) {
113
+ // this.isLoaded = false
114
+ // let commomMsg = this.$t('openatccomponents.overview.signalID') + ' : ' + agentid
115
+ // let msg = getMessageByCode(res.data.code, this.$i18n.locale)
116
+ // if (res.data.data) {
117
+ // // 子类型错误
118
+ // let childErrorCode = res.data.data.errorCode
119
+ // if (childErrorCode) {
120
+ // let childerror = getMessageByCode(res.data.data.errorCode, this.$i18n.locale)
121
+ // msg = msg + ' - ' + childerror
122
+ // }
123
+ // }
124
+ // msg = msg + ' - ' + commomMsg
125
+ // this.$message.error(msg)
126
+ // return
127
+ // }
128
+ this.tempType = res.data.data.type
129
+ // 获取车道相位、行人相位信息(坐标、名称)
130
+ this.mainType = this.tempType.split('-')[0]
131
+ this.mainDirection = this.tempType.split('-')[1]
132
+ if (!this.isThirdSignal) {
133
+ // 可点击模式下,非第三方设备,按通道显示相位方向
134
+ this.getChannelInfo()
135
+ return
136
+ }
137
+ this.crossInfo = res.data.data.param
138
+ // 城市道路加载车道相位坐标和人行道坐标
139
+ this.getPhasePos()
140
+ this.getOverlapPhasePos()
141
+ this.getPedPhasePos()
142
+ this.getOverlapPedPhasePos()
143
+ if (this.isThirdSignal) {
144
+ // 第三方设备,按相位方向显示相位方向
145
+ this.compLanePhaseData = this.CrossDiagramMgr.compare(this.LanePhaseData, this.overlapLanePhaseData, 'type', 'nostatus')
146
+ this.compSidewalkPhaseData = this.CrossDiagramMgr.compare(this.sidewalkPhaseData, this.overlapsidewalkPhaseData, 'pedtype', 'nostatus')
147
+ let allDir = this.compLanePhaseData.map(ele => ele.id)
148
+ let allPedDir = this.compSidewalkPhaseData.map(ele => ele.id)
149
+ this.inneChoosedDirection = this.choosedDirection.filter(dir => allDir.indexOf(dir) !== -1)
150
+ this.inneChoosedPedDirection = this.choosedPedDirection.filter(dir => allPedDir.indexOf(dir) !== -1)
151
+ this.drawPhaseIcon()
152
+ }
153
+ // })
154
154
  },
155
155
  getPhasePos () {
156
156
  // 车道相位信息
@@ -448,7 +448,7 @@ export default {
448
448
  }
449
449
  },
450
450
  mounted () {
451
- this.init()
451
+ // this.init()
452
452
  }
453
453
  }
454
454
  </script>
@@ -1,19 +1,20 @@
1
1
  <template>
2
- <div class="intersection-direction-selection">
2
+ <div class="intersection-direction-selection" v-if="isSpecialIntersection !== undefined">
3
3
  <intersection-base-map
4
- v-if="!isSpecialIntersection"
4
+ v-if="!isSpecialIntersection && reset"
5
5
  ref="intersectionMap2"
6
6
  :crossStatusData="crossStatusData"
7
7
  :agentId="agentId"
8
8
  isVipRoute
9
- clickMode
9
+ :clickMode="clickMode"
10
10
  :isThirdSignal="isThirdSignal"
11
11
  :choosedDirection="choosedDirection"
12
12
  :choosedPedDirection="choosedPedDirection"
13
13
  :roadDirection="roadDirection"
14
14
  @handleClickCrossIcon="handleClickCrossIcon" />
15
15
  <direction-list-configuration
16
- v-if="isSpecialIntersection"
16
+ v-if="isSpecialIntersection && clickMode && reset"
17
+ ref="listConfiguration"
17
18
  :agentId="agentId"
18
19
  :isThirdSignal="isThirdSignal"
19
20
  :choosedDirection="choosedDirection"
@@ -34,8 +35,9 @@ export default {
34
35
  data () {
35
36
  return {
36
37
  crossStatusData: {},
37
- isSpecialIntersection: false,
38
- isThirdSignal: false
38
+ isSpecialIntersection: undefined,
39
+ isThirdSignal: false,
40
+ reset: true
39
41
  }
40
42
  },
41
43
  props: {
@@ -55,6 +57,23 @@ export default {
55
57
  },
56
58
  thirdSignal: { // 是否是第三方平台(可以直接传,也可以内部接口判断)
57
59
  type: Boolean
60
+ },
61
+ clickMode: {
62
+ type: Boolean,
63
+ default: true
64
+ }
65
+ },
66
+ watch: {
67
+ agentId: {
68
+ handler: function (val, oldVal) {
69
+ if (val) {
70
+ this.reset = false
71
+ this.$nextTick(() => {
72
+ this.reset = true
73
+ this.initSelection()
74
+ })
75
+ }
76
+ }
58
77
  }
59
78
  },
60
79
  methods: {
@@ -87,6 +106,11 @@ export default {
87
106
  this.mainType = this.tempType.split('-')[0]
88
107
  if (this.mainType === '999') {
89
108
  this.isSpecialIntersection = true
109
+ if (this.clickMode) {
110
+ this.$nextTick(() => {
111
+ this.$refs.listConfiguration.init(res)
112
+ })
113
+ }
90
114
  } else {
91
115
  this.isSpecialIntersection = false
92
116
  }
@@ -113,15 +137,22 @@ export default {
113
137
  },
114
138
  handleClickCrossIcon (allChoosedDir, curClickedPhase) {
115
139
  this.$emit('handleClickCrossIcon', allChoosedDir, curClickedPhase)
140
+ },
141
+ initSelection () {
142
+ this.getIntersectionInfo()
143
+ this.getPlatform()
116
144
  }
117
145
  },
118
146
  mounted () {
119
- this.getIntersectionInfo()
120
- this.getPlatform()
147
+ this.initSelection()
121
148
  },
122
149
  destroyed () {
123
150
  }
124
151
  }
125
152
  </script>
126
153
  <style lang='scss'>
154
+ .intersection-direction-selection {
155
+ width: 100%;
156
+ height: 100%
157
+ }
127
158
  </style>
@@ -276,7 +276,9 @@ export default {
276
276
  this.phaseStatusList = val.phase
277
277
  this.overlapStatusList = val.overlap
278
278
  // 默认显示相位数据(包括黄闪、全红、关灯状态下,或者匝道,均不做比对跟随相位的处理)
279
- this.drawDefaultPhaseIcon()
279
+ this.compLanePhaseData = JSON.parse(JSON.stringify(this.LanePhaseData))
280
+ this.compSidewalkPhaseData = JSON.parse(JSON.stringify(this.sidewalkPhaseData))
281
+ this.comdireBusPhaseData = JSON.parse(JSON.stringify(this.busPhaseData))
280
282
  if (val.control === 1 || val.control === 2 || val.control === 3) {
281
283
  // 黄闪、全红、关灯属于特殊控制,优先级最高,直接改变灯色,不用判断phase里的type,也不需要考虑跟随相位的灯色优先级
282
284
  if (val.control === 1) {
@@ -385,14 +387,6 @@ export default {
385
387
  this.PhaseDataModel = new PhaseDataModel(this.roadDirection)
386
388
  this.getIntersectionInfo() // 获取路口信息
387
389
  },
388
- drawDefaultPhaseIcon () {
389
- this.compLanePhaseData = JSON.parse(JSON.stringify(this.CrossDiagramMgr.compare(this.LanePhaseData, this.overlapLanePhaseData, 'type', 'nostatus')))
390
- this.compSidewalkPhaseData = JSON.parse(JSON.stringify(this.CrossDiagramMgr.compare(this.sidewalkPhaseData, this.overlapsidewalkPhaseData, 'pedtype', 'nostatus')))
391
- this.comdireBusPhaseData = JSON.parse(JSON.stringify(this.busPhaseData))
392
- console.log(this.LanePhaseData)
393
- console.log(this.overlapLanePhaseData)
394
- console.log('###################', this.compLanePhaseData)
395
- },
396
390
  comparePhaseStatus () {
397
391
  // 对比车道: 跟随相位和相位的状态数据(此处判断是为了保证被比较的数据direction都是唯一的)
398
392
  if (!this.comdirePhaseData && !this.comdireOverlapPhaseData) {
@@ -504,51 +498,39 @@ export default {
504
498
  getYellowFlashColor () {
505
499
  // 车道相位(左行右行)
506
500
  let curLanePhaseData = []
507
- for (let i = 0; i < this.compLanePhaseData.length; i++) {
501
+ for (let i = 0; i < this.LanePhaseData.length; i++) {
508
502
  const data = {
509
- ...this.compLanePhaseData[i],
503
+ ...this.LanePhaseData[i],
510
504
  type: '黄闪',
511
505
  control: 1
512
506
  }
513
507
  curLanePhaseData.push(data)
514
508
  }
515
- this.compLanePhaseData = JSON.parse(JSON.stringify(curLanePhaseData))
509
+ this.LanePhaseData = JSON.parse(JSON.stringify(curLanePhaseData))
516
510
 
517
511
  // 行人相位
518
512
  let curPedStatus = []
519
- for (let i = 0; i < this.compSidewalkPhaseData.length; i++) {
513
+ for (let i = 0; i < this.sidewalkPhaseData.length; i++) {
520
514
  const data = {
521
- ...this.compSidewalkPhaseData[i],
515
+ ...this.sidewalkPhaseData[i],
522
516
  pedtype: '黄闪',
523
517
  control: 1
524
518
  }
525
519
  curPedStatus.push(data)
526
520
  }
527
- this.compSidewalkPhaseData = JSON.parse(JSON.stringify(curPedStatus))
521
+ this.sidewalkPhaseData = JSON.parse(JSON.stringify(curPedStatus))
528
522
 
529
523
  // 公交相位
530
524
  let curBusLanePhaseData = []
531
- for (let i = 0; i < this.comdireBusPhaseData.length; i++) {
525
+ for (let i = 0; i < this.busPhaseData.length; i++) {
532
526
  const data = {
533
- ...this.comdireBusPhaseData[i],
527
+ ...this.busPhaseData[i],
534
528
  type: '黄闪',
535
529
  control: 1
536
530
  }
537
531
  curBusLanePhaseData.push(data)
538
532
  }
539
- this.comdireBusPhaseData = JSON.parse(JSON.stringify(curBusLanePhaseData))
540
-
541
- if (this.mainType === '103') {
542
- // 匝道相位
543
- if (this.LanePhaseData.length) {
544
- const LanePhaseData = this.LanePhaseData.map(data => ({
545
- ...data,
546
- type: '黄闪',
547
- control: 1
548
- }))
549
- this.LanePhaseData = JSON.parse(JSON.stringify(LanePhaseData))
550
- }
551
- }
533
+ this.busPhaseData = JSON.parse(JSON.stringify(curBusLanePhaseData))
552
534
  },
553
535
  getPhaseStatus () {
554
536
  // 得到车道相位状态(颜色)
@@ -684,9 +666,6 @@ export default {
684
666
  // 获取匝道道路的主路和支路的相位坐标
685
667
  this.getRampPhasePos()
686
668
  }
687
- if (!this.isVipRoute) {
688
- this.drawDefaultPhaseIcon()
689
- }
690
669
  if (this.isVipRoute && this.isThirdSignal) {
691
670
  this.LanePhaseData = this.CrossDiagramMgr.compare(this.LanePhaseData, this.overlapLanePhaseData, 'type', 'nostatus')
692
671
  // console.log(this.LanePhaseData)
@@ -814,6 +793,8 @@ export default {
814
793
  })
815
794
  }
816
795
  })
796
+ // 行人相位无,也要显示人行横道,与车道相位显示与否逻辑不同
797
+ // this.handleCompleteSidewalkPhase()
817
798
  },
818
799
  getOverlapPedPhasePos () {
819
800
  // 行人跟随相位信息
@@ -836,6 +817,25 @@ export default {
836
817
  }
837
818
  })
838
819
  },
820
+ // handleCompleteSidewalkPhase () {
821
+ // // 没有相位状态的车道也要显示,默认白色
822
+ // let hasDirIds = this.sidewalkPhaseData.map(data => data.id)
823
+ // let allIds = []
824
+ // for (let key of this.PhaseDataModel.SidePosMap.keys()) {
825
+ // allIds.push(key)
826
+ // }
827
+ // let diffIds = allIds.filter(function (val) { return hasDirIds.indexOf(val) === -1 })
828
+ // diffIds.forEach(id => {
829
+ // this.sidewalkPhaseData.push({
830
+ // key: `${this.sidewalkPhaseData.length + 1}`,
831
+ // phaseid: undefined, // 相位id,用于对应相位状态
832
+ // id,
833
+ // name: this.PhaseDataModel.getSidePos(id).name,
834
+ // left: this.PhaseDataModel.getSidePos(id).x,
835
+ // top: this.PhaseDataModel.getSidePos(id).y
836
+ // })
837
+ // })
838
+ // },
839
839
  getCrossType () {
840
840
  // 路口类型对应底图决策
841
841
  if (this.mainType === '101') {
@@ -47,8 +47,7 @@ export default {
47
47
  },
48
48
  data () {
49
49
  return {
50
- overlapDatas: [],
51
- max: ''
50
+ overlapDatas: []
52
51
  }
53
52
  },
54
53
  props: {
@@ -68,10 +67,6 @@ export default {
68
67
  type: Boolean,
69
68
  default: false
70
69
  },
71
- cycleChange: {
72
- type: Boolean,
73
- default: true
74
- },
75
70
  cycle: {
76
71
  type: Number
77
72
  },
@@ -87,13 +82,6 @@ export default {
87
82
  // 深度观察监听
88
83
  deep: true
89
84
  },
90
- cycleChange: {
91
- handler: function (val, oldVal) {
92
- this.doAdd(this.stageList, this.overlap)
93
- },
94
- // 深度观察监听
95
- deep: true
96
- },
97
85
  stageList: {
98
86
  handler: function (val, oldVal) {
99
87
  this.doAdd(this.stageList, this.overlap)
@@ -152,15 +140,6 @@ export default {
152
140
  if (findItems.length) findIndexs.push(...findItems.map(m => m.key))
153
141
  })
154
142
  findIndexs = Array.from(new Set(findIndexs))
155
- if (this.cycleChange) {
156
- const globalParamModel = this.$store.getters.globalParamModel
157
- let pattern = globalParamModel.getParamsByType('patternList')
158
- const allCycle = pattern.map(item => item.cycle)
159
- let cycle = Math.max(...allCycle)
160
- this.max = cycle
161
- } else {
162
- this.max = ''
163
- }
164
143
  return {
165
144
  ...item,
166
145
  peddirection: this.getPedPhasePos(item.peddirection),
@@ -171,8 +150,8 @@ export default {
171
150
  ...sta,
172
151
  direction: this.getRoad(item),
173
152
  // peddirection: this.getPedPhasePos(item.peddirection),
174
- greenWidth: find ? (sta.split / (this.max ? this.max : this.cycle) * 100).toFixed(3) + '%' : '0%',
175
- redWidth: !find ? (sta.split / (this.max ? this.max : this.cycle) * 100).toFixed(3) + '%' : '0%'
153
+ greenWidth: find ? (sta.split / this.cycle * 100).toFixed(3) + '%' : '0%',
154
+ redWidth: !find ? (sta.split / this.cycle * 100).toFixed(3) + '%' : '0%'
176
155
  }
177
156
  })
178
157
  }
@@ -53,7 +53,7 @@
53
53
  <div class="curTimeLine" :style="{'left':paddingLeft, 'height':barrierHeight}"></div>
54
54
  </div>
55
55
  </div>
56
- <div v-if="this.contrloType === 'stage'" class="ring-first">
56
+ <div v-if="this.contrloType === 'stage'">
57
57
  <div v-for="(list, index1) in stageLists" :key="index1">
58
58
  <!-- <div> -->
59
59
  <div class="first-1" :style="{'width':list.greenWidth,'height':'34px','position':'relative','background':'#7ccc66'}">
@@ -215,7 +215,7 @@ export default {
215
215
  handler: function (val, oldVal) {
216
216
  if (val && val.curTime) {
217
217
  this.curtime = val.curTime
218
- if (val.control === 4 || val.control === 16 || val.control === 22) {
218
+ if (val.control === '相位锁定' || val.control === '通道锁定' || val.control === '阶段锁定') {
219
219
  this.isControl = false
220
220
  } else {
221
221
  this.isControl = true
@@ -244,7 +244,7 @@ export default {
244
244
  }
245
245
  if (val && val.curTime) {
246
246
  this.curtime = val.curTime
247
- if (val.control === 4 || val.control === 16 || val.control === 22) {
247
+ if (val.control === '相位锁定' || val.control === '通道锁定' || val.control === '阶段锁定') {
248
248
  this.isControl = false
249
249
  } else {
250
250
  this.isControl = true
@@ -432,9 +432,9 @@ export default {
432
432
  },
433
433
  getStage () {
434
434
  if (!this.stagesChange) return
435
- const globalParamModel = this.$store.getters.globalParamModel
436
- let pattern = globalParamModel.getParamsByType('patternList')
437
- let mapAdd = (this.allPatternList ? this.allPatternList : pattern).map(item => item.stagesList).map(item => {
435
+ // const globalParamModel = this.$store.getters.globalParamModel
436
+ // let pattern = globalParamModel.getParamsByType('patternList')
437
+ let mapAdd = this.allPatternList.map(item => item.stagesList).map(item => {
438
438
  return item.map(val => {
439
439
  return val.stageSplit ? val.stageSplit : val.split
440
440
  })
@@ -444,6 +444,7 @@ export default {
444
444
  return a + b
445
445
  }) : 0
446
446
  }) : 0
447
+ console.log(maxCycle, 'maxCycle')
447
448
  let stageMaxCyle = Math.max(...maxCycle)// 每个环的周期最大值
448
449
  if (!this.cycleChange) {
449
450
  let stageCycleList = this.stagesChange.map(item => {
@@ -463,6 +464,7 @@ export default {
463
464
  redWidth: (item.red / stageMaxCyle * 100).toFixed(3) + '%'
464
465
  }
465
466
  })
467
+ console.log(this.stageLists, '011')
466
468
  },
467
469
  getBusPos () {
468
470
  // 公交相位信息
@@ -1050,9 +1052,9 @@ export default {
1050
1052
  this.fillGap(ringTeams, val)
1051
1053
  }
1052
1054
  if (this.cycleChange) {
1053
- const globalParamModel = this.$store.getters.globalParamModel
1054
- let pattern = globalParamModel.getParamsByType('patternList')
1055
- const allCycle = pattern.map(item => item.cycle)
1055
+ // const globalParamModel = this.$store.getters.globalParamModel
1056
+ // let pattern = globalParamModel.getParamsByType('patternList')
1057
+ const allCycle = this.patternList.map(item => item.cycle)
1056
1058
  let cycle = Math.max(...allCycle)
1057
1059
  this.max = cycle
1058
1060
  } else {
@@ -1061,7 +1063,7 @@ export default {
1061
1063
  let barrier = this.step2(ringTeams, newPattern)
1062
1064
  let barrierLeft = barrier.map(item => item)// 屏障左移显示出人行横道
1063
1065
  this.barrierList = barrierLeft.map(j => {
1064
- return (j / (this.max ? this.max : cycle) * 100) + '%'
1066
+ return (j / (this.max ? this.max : this.newCycle) * 100) + '%'
1065
1067
  })
1066
1068
  // this.barrierList.unshift(0)
1067
1069
  }
@@ -510,9 +510,9 @@ export default {
510
510
  data[key] = that.ParamsModeEn.get(0)
511
511
  }
512
512
  }
513
- // if (key === 'control') {
514
- // data[key] = that.ParamsControlEn.get(data[key])
515
- // }
513
+ if (key === 'control') {
514
+ data[key] = that.ParamsControlEn.get(data[key])
515
+ }
516
516
  if (key === 'phase') {
517
517
  for (let val of data[key]) {
518
518
  val.type = that.phaseTypeEn.get(val.type)
@@ -94,6 +94,7 @@
94
94
  </el-row>
95
95
  <el-row>
96
96
  <el-radio
97
+ style="margin-left: 30px"
97
98
  v-model="isRing"
98
99
  :label="false"
99
100
  @change="changeRing"
@@ -112,7 +113,7 @@
112
113
  <pattern-list
113
114
  :key="keyChange"
114
115
  :allPatternList="allPatternList"
115
- :contrloType="contrloType"
116
+ :contrloType="!this.isRing ? 'ring' : 'stage'"
116
117
  :stagesChange="
117
118
  patternOne.length === 0
118
119
  ? planPattern.stagesList
@@ -389,7 +390,6 @@ export default {
389
390
  group: 'pattern'
390
391
  },
391
392
  max: '',
392
- contrloType: '',
393
393
  patternCycleEqual: true,
394
394
  activeList: 'ring',
395
395
  isRing: false,
@@ -417,25 +417,6 @@ export default {
417
417
  this.handleStageData(this.planPattern.rings)
418
418
  }
419
419
  this.initData()
420
- if (!this.allPatternList[0].contrloType && this.allPatternList[0].rings.length > 0) {
421
- this.contrloType = 'ring'
422
- } else if (!this.allPatternList[0].contrloType && this.allPatternList[0].rings.length === 0) {
423
- this.contrloType = 'stage'
424
- } else {
425
- this.contrloType = this.allPatternList[0].contrloType
426
- }
427
- for (let i = 0; i < this.allPatternList.length; i++) {
428
- if (this.allPatternList[i].contrloType === 'stage' || (this.isRing && !this.allPatternList[i].contrloType)) {
429
- this.isRing = true
430
- // this.setStageList(this.allPatternList[i].stagesList, this.allPatternList[i].id)
431
- } else if (this.allPatternList[i].contrloType === 'ring' || (!this.isRing && !this.allPatternList[i].contrloType && this.allPatternList[i].rings.length > 0)) {
432
- this.isRing = false
433
- // this.handleStageData(this.allPatternList[i].rings)
434
- } else if (this.allPatternList[i].rings.length === 0 && this.allPatternList[i].stagesList.length > 0) {
435
- this.isRing = true
436
- // this.setStageList(this.allPatternList[i].stagesList, this.allPatternList[i].id)
437
- }
438
- }
439
420
  },
440
421
  methods: {
441
422
  addStage (row) {
@@ -467,7 +448,7 @@ export default {
467
448
  }
468
449
  },
469
450
  changeRing () {
470
- this.contrloType = 'ring'
451
+ // this.contrloType = 'stage'
471
452
  this.isRing = false
472
453
  // const globalParamModel = this.$store.getters.globalParamModel
473
454
  // let pattern = globalParamModel.getParamsByType('patternList')
@@ -487,11 +468,7 @@ export default {
487
468
  // }
488
469
  },
489
470
  changeStage () {
490
- this.contrloType = 'stage'
491
471
  this.isRing = true
492
- this.patternOne = this.allPatternList.filter(item => {
493
- return item.id === Number(this.manualInfo.tempPatternid)
494
- })
495
472
  this.getStageCycle()
496
473
  },
497
474
  getStageCycle () {
@@ -872,14 +849,14 @@ export default {
872
849
  setTimeout(() => {
873
850
  this.handleStageData(currPattern)
874
851
  this.getCycles()
875
- // this.patternOne[0].stagesList = this.stagesList
852
+ this.patternOne[0].stagesList = this.stagesList
876
853
  }, 50)
877
854
  } else {
878
855
  let currPattern = this.planPattern.rings
879
856
  setTimeout(() => {
880
857
  this.handleStageData(currPattern)
881
858
  this.getCycle()
882
- // this.allPatternList[0].stagesList = this.stagesList
859
+ this.allPatternList[0].stagesList = this.stagesList
883
860
  }, 50)
884
861
  }
885
862
  },
@@ -76,13 +76,28 @@
76
76
  <el-table-column align="center" :label="$t('openatccomponents.pattern.plan')">
77
77
  <template slot-scope="scope">
78
78
  <div class="pattern-figure">
79
- <pattern-list
79
+ <!-- <pattern-list
80
80
  :patternStatusList="scope.row.rings"
81
81
  :cycles="scope.row.cycle"
82
82
  :phaseList="scope.row.currPhase"
83
+ :contrloType="controlType"
83
84
  >
85
+ </pattern-list> -->
86
+ <pattern-list
87
+ :patternId="scope.row.patternid"
88
+ :contrloType="getControlType(scope.row)"
89
+ :index="scope.$index"
90
+ :cycleChange="true"
91
+ :stagesChange="getSelectedPattern(scope.row).stagesList"
92
+ :patternStatusList="getSelectedPattern(scope.row).rings"
93
+ :patternList="scope.row.allPatterns"
94
+ :allPatternList="scope.row.allPatterns"
95
+ :cycles="scope.row.cycle"
96
+ :phaseList="scope.row.currPhase"
97
+ :agentId="scope.row.agentid"
98
+ :showBarrier="false">
84
99
  </pattern-list>
85
- </div>
100
+ </div>
86
101
  </template>
87
102
  </el-table-column>
88
103
  </el-table>
@@ -114,6 +129,7 @@ export default {
114
129
  },
115
130
  data () {
116
131
  return {
132
+ controlType: 'stage',
117
133
  loading: true,
118
134
  tableHeight: 460,
119
135
  screenHeight: window.innerHeight, // 屏幕高度
@@ -179,6 +195,9 @@ export default {
179
195
  let currPattern
180
196
  if (Array.isArray(currPatternList)) {
181
197
  currPattern = currPatternList.filter(cpl => cpl.id === patternId)[0]
198
+ if (!currPattern) {
199
+ currPattern = currPatternList[0]
200
+ }
182
201
  } else {
183
202
  currPattern = currPatternList
184
203
  }
@@ -292,6 +311,34 @@ export default {
292
311
  }
293
312
  return res
294
313
  },
314
+ getControlType (row) {
315
+ let contrloType = 'ring'
316
+ let allPatternList = row.feature && row.feature.patternList ? row.feature.patternList : row.allPatterns
317
+ if (
318
+ !allPatternList[0].contrloType &&
319
+ allPatternList[0].rings.length > 0
320
+ ) {
321
+ contrloType = 'ring'
322
+ } else if (
323
+ !allPatternList[0].contrloType &&
324
+ allPatternList[0].rings.length === 0
325
+ ) {
326
+ contrloType = 'stage'
327
+ } else {
328
+ contrloType = allPatternList[0].contrloType
329
+ }
330
+ let res = contrloType
331
+ return res
332
+ },
333
+ getSelectedPattern (row) {
334
+ let res = []
335
+ let patternList = row.feature && row.feature.patternList ? row.feature.patternList : row.allPatterns
336
+ let pattern = patternList.find(item => item.id === row.patternid)
337
+ if (pattern) {
338
+ res = pattern
339
+ }
340
+ return res
341
+ },
295
342
  getCurPattern (agentid) {
296
343
  // 获取当前设备所有可选方案
297
344
  this.loading = true