openatc-components 0.3.118 → 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.
Files changed (59) hide show
  1. package/package/kisscomps/components/BoardCard/BoardCard.vue +0 -11
  2. package/package/kisscomps/components/Channelization/Channelization.vue +1 -1
  3. package/package/kisscomps/components/ChannelizationFlowStatistic/ChannelizationFlowStatistic.vue +1 -1
  4. package/package/kisscomps/components/DrawChannelization/drawsvg/iconSvg/motorwayIconSvg.vue +145 -46
  5. package/package/kisscomps/components/DrawChannelization/drawsvg/index.draw.vue +4 -4
  6. package/package/kisscomps/components/DrawChannelization/drawsvg/index.vue +1 -1
  7. package/package/kisscomps/components/IntersectionMap/crossDirection/crossDiagram.vue +12 -66
  8. package/package/kisscomps/components/IntersectionMap/intersectionmap.vue +1 -1
  9. package/package/kisscomps/components/OverLap/OverLap.vue +1 -1
  10. package/package/kisscomps/components/OverviewComponent/index.vue +7 -11
  11. package/package/kisscomps/components/PatternOptimize/PatternOptimize.vue +6 -20
  12. package/package/kisscomps/components/PatternStatus/PatternStatus.vue +20 -85
  13. package/package/kisscomps/components/SchemeConfig/SchemeConfig.vue +12 -13
  14. package/package/kisscomps/components/SchemeConfig/azimuthlocking/index.vue +2 -1
  15. package/package/kisscomps/components/SchemeConfig/lockingPhaselControlModal/index.vue +11 -9
  16. package/package/kisscomps/components/SchemeConfig/manualControlModalNew/icon.vue +2 -34
  17. package/package/kisscomps/components/SchemeConfig/realtimeStatusModal/index.vue +6 -1
  18. package/package/kisscomps/components/StageOptimize/StageOptimize.vue +98 -46
  19. package/package/kisscomps/components/overView/index.vue +2 -2
  20. package/package/kisscomps/components/patternList/patternList.vue +0 -11
  21. package/package/kisscomps/index.js +0 -2
  22. package/package/kissui.min.js +1 -1
  23. package/package.json +1 -1
  24. package/src/i18n/language/en.js +12 -13
  25. package/src/i18n/language/zh.js +17 -18
  26. package/src/kisscomps/components/BoardCard/BoardCard.vue +0 -11
  27. package/src/kisscomps/components/Channelization/Channelization.vue +1 -1
  28. package/src/kisscomps/components/ChannelizationFlowStatistic/ChannelizationFlowStatistic.vue +1 -1
  29. package/src/kisscomps/components/DrawChannelization/drawsvg/iconSvg/motorwayIconSvg.vue +145 -46
  30. package/src/kisscomps/components/DrawChannelization/drawsvg/index.draw.vue +4 -4
  31. package/src/kisscomps/components/DrawChannelization/drawsvg/index.vue +1 -1
  32. package/src/kisscomps/components/IntersectionMap/crossDirection/crossDiagram.vue +12 -66
  33. package/src/kisscomps/components/IntersectionMap/intersectionmap.vue +1 -1
  34. package/src/kisscomps/components/OverLap/OverLap.vue +1 -1
  35. package/src/kisscomps/components/OverviewComponent/index.vue +7 -11
  36. package/src/kisscomps/components/PatternOptimize/PatternOptimize.vue +6 -20
  37. package/src/kisscomps/components/PatternStatus/PatternStatus.vue +20 -85
  38. package/src/kisscomps/components/SchemeConfig/SchemeConfig.vue +12 -13
  39. package/src/kisscomps/components/SchemeConfig/azimuthlocking/index.vue +2 -1
  40. package/src/kisscomps/components/SchemeConfig/lockingPhaselControlModal/index.vue +11 -9
  41. package/src/kisscomps/components/SchemeConfig/manualControlModalNew/icon.vue +2 -34
  42. package/src/kisscomps/components/SchemeConfig/realtimeStatusModal/index.vue +6 -1
  43. package/src/kisscomps/components/overView/index.vue +2 -2
  44. package/src/kisscomps/components/patternList/patternList.vue +0 -11
  45. package/src/kisscomps/index.js +0 -2
  46. package/src/utils/ControlFormat.js +2 -2
  47. package/src/views/intersection.vue +6 -7
  48. package/src/views/intersection2.vue +4 -4
  49. package/src/views/overView.vue +5 -27
  50. package/static/styles/common.scss +3 -3
  51. package/static/styles/dark/theme/element-dark.scss +1 -1
  52. package/static/styles/intersection.scss +15 -5
  53. package/static/styles/light/theme/element-light.scss +1 -1
  54. package/static/styles/schemeconfig.scss +3 -6
  55. package/package/kisscomps/components/OptimizeKanban/index.js +0 -2
  56. package/package/kisscomps/components/OptimizeKanban/index.vue +0 -369
  57. package/src/kisscomps/components/StageOptimize/StageOptimize.vue +0 -315
  58. package/src/kisscomps/components/StageOptimize/index.js +0 -2
  59. 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: 33,
216
- IconWdith: 109,
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 = 33
393
- this.IconWdith = 109
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 (data.data.data === undefined || JSON.stringify(data.data.data) === '{}') return
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.vue'
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 147px 0 468px'}">
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 class="overview-component-content" :style="{'transform': `scale(${shrink})`, 'transform-origin': 'left top', 'height': '100%'}">
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, 'tuxing-left': !onlyShowIntersectionMap}" ref="tuxingLeft">
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 && !onlyShowIntersectionMap && crossStatusData.control !== 1 && crossStatusData.control !== 2 && crossStatusData.control !== 3">
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" v-if="!onlyShowIntersectionMap">
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, '单点感应控制'], [7, '协调感应控制'], [8, '方案选择控制'], [9, '自适应控制'], [10, '无电缆控制'], [11, '有电缆控制'], [12, '行人过街控制'], [13, '方案恢复过渡'], [14, '相位驻留'], [15, '通道检测'], [16, '方向锁定'], [17, '韦伯斯特单点控制'], [18, '感应式自适应'], [19, '感应式行人过街'], [20, '方案干预'], [100, '方案干预'], [21, '预留21'], [22, '相位锁定'], [23, '相位放行控制'], [24, '紧急控制'], [99, '设备维护']]),
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, 'Inductive Adaptive'], [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']]),
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 && data.data.data !== undefined && JSON.stringify(data.data.data) !== '{}') {
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'
@@ -31,10 +31,8 @@
31
31
  {{headerText}}
32
32
  </div>
33
33
  <div class="common-board-table-header">
34
- <el-row :gutter="5">
35
- <el-col :span="1">{{this.$t('openatccomponents.overview.id')}}
36
- </el-col>
37
- <el-col :span="3">{{this.$t('openatccomponents.overview.phase')}}
34
+ <el-row :gutter="13">
35
+ <el-col :span="4">{{this.$t('openatccomponents.overview.phase')}}
38
36
  </el-col>
39
37
  <el-col :span="10">{{this.$t('openatccomponents.overview.flow')}}
40
38
  </el-col>
@@ -47,15 +45,12 @@
47
45
  :list="list"
48
46
  :options="options">
49
47
  <div class="common-board-item" v-for="element in list" :key="element.id">
50
- <el-row :gutter="5">
51
- <el-col :span="1">
52
- {{element.id}}
53
- </el-col>
54
- <el-col :span="3">
48
+ <el-row :gutter="13">
49
+ <el-col :span="4">
55
50
  <el-tooltip class="item" effect="dark" placement="left">
56
51
  <div slot="content">{{element.name}}</div>
57
52
  <div class="common-phase-description">
58
- <xdrdirselector Width="70px" Height="70px" Widths="58px" Heights="58px" :Datas="styles" :Data="showStyle" :showlist="element.desc" :ISActiveMask="ISActiveMask" :MaskColor="MaskColor"></xdrdirselector>
53
+ <xdrdirselector Width="70px" Height="70px" Widths="50px" Heights="50px" :Data="styles" :showlist="element.desc" :ISActiveMask="ISActiveMask" :MaskColor="MaskColor"></xdrdirselector>
59
54
  </div>
60
55
  </el-tooltip>
61
56
  </el-col>
@@ -84,13 +79,9 @@ export default {
84
79
  },
85
80
  data () {
86
81
  return {
87
- showStyle: {
88
- left: '2px',
89
- top: '0px'
90
- },
91
82
  styles: {
92
83
  left: '1px',
93
- top: '0px'
84
+ top: '0'
94
85
  },
95
86
  typeOptions: [{
96
87
  value: 'flow-split-opt'
@@ -106,9 +97,6 @@ export default {
106
97
  type: String,
107
98
  default: 'Header'
108
99
  },
109
- id: {
110
- type: Number
111
- },
112
100
  rings: {
113
101
  type: Object
114
102
  },
@@ -221,7 +209,6 @@ export default {
221
209
  }
222
210
  }
223
211
  }
224
- this.$emit('optimizesucess', this.id)
225
212
  }
226
213
  }).catch(error => {
227
214
  console.log(error)
@@ -245,7 +232,6 @@ export default {
245
232
  }
246
233
  }
247
234
  }
248
- this.$emit('optimizesucess', this.id)
249
235
  }
250
236
  }).catch(error => {
251
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
- <draggable :move="move" @end="endDrag(index1)" :disabled="isMove" :list="list">
18
- <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': ''">
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 v-if="isMove" class="ring-nums">{{item.split}}</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
- </div>
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
- // setTimeout(() => {
367
- this.handleCurrentChange(this.patternStatusList)
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 = 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, '单点感应控制'], [7, '协调感应控制'], [8, '方案选择控制'], [9, '自适应控制'], [10, '无电缆控制'], [11, '有电缆控制'], [12, '行人过街控制'], [13, '方案恢复过渡'], [14, '相位驻留'], [15, '通道检测'], [16, '方向锁定'], [17, '韦伯斯特单点控制'], [18, '预留18'], [19, '感应式行人过街'], [20, '方案干预'], [100, '方案干预'], [21, '预留21'], [22, '相位锁定'], [23, '相位放行控制'], [24, '紧急控制'], [99, '设备维护']]),
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 => {