openatc-components 0.2.37 → 0.2.38

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 (33) hide show
  1. package/package/kisscomps/components/PatternStatus/PatternStatus.vue +7 -4
  2. package/package/kisscomps/components/SchemeConfig/SchemeConfig.vue +178 -25
  3. package/package/kisscomps/components/SchemeConfig/azimuthlocking/index.vue +72 -29
  4. package/package/kisscomps/components/SchemeConfig/closePhaselControlModal/index.vue +14 -3
  5. package/package/kisscomps/components/SchemeConfig/lockingPhaselControlModal/index.vue +17 -7
  6. package/package/kisscomps/components/SchemeConfig/priorityControl/index.vue +18 -9
  7. package/package/kisscomps/components/SchemeConfig/realtimeStatusModal/index.vue +1 -1
  8. package/package/kisscomps/components/SchemeConfig/tentativeplancontrolmodal/index.vue +21 -10
  9. package/package/kisscomps/components/Stages/index.vue +52 -11
  10. package/package/kisscomps/components/XRDDirSelector/XRDDirSelector.vue +30 -28
  11. package/package/kissui.min.js +1 -1
  12. package/package.json +1 -1
  13. package/src/i18n/language/en.js +6 -1
  14. package/src/i18n/language/zh.js +7 -2
  15. package/src/icons/svg/fangxiangsuoding.svg +1 -0
  16. package/src/icons/svg/jieduansuoding.svg +1 -0
  17. package/src/icons/svg/xiangweisuoding.svg +1 -0
  18. package/src/kisscomps/components/PatternStatus/PatternStatus.vue +7 -4
  19. package/src/kisscomps/components/SchemeConfig/SchemeConfig.vue +178 -25
  20. package/src/kisscomps/components/SchemeConfig/azimuthlocking/index.vue +72 -29
  21. package/src/kisscomps/components/SchemeConfig/closePhaselControlModal/index.vue +14 -3
  22. package/src/kisscomps/components/SchemeConfig/lockingPhaselControlModal/index.vue +17 -7
  23. package/src/kisscomps/components/SchemeConfig/manualControlModalNew/controlModelGroup.vue +128 -0
  24. package/src/kisscomps/components/SchemeConfig/manualControlModalNew/icon.vue +426 -0
  25. package/src/kisscomps/components/SchemeConfig/manualControlModalNew/index.vue +820 -0
  26. package/src/kisscomps/components/SchemeConfig/manualControlModalNew/othersIcon.vue +194 -0
  27. package/src/kisscomps/components/SchemeConfig/priorityControl/index.vue +18 -9
  28. package/src/kisscomps/components/SchemeConfig/realtimeStatusModal/index.vue +1 -1
  29. package/src/kisscomps/components/SchemeConfig/tentativeplancontrolmodal/index.vue +21 -10
  30. package/src/kisscomps/components/Stages/index.vue +52 -11
  31. package/src/kisscomps/components/XRDDirSelector/XRDDirSelector.vue +30 -28
  32. package/static/styles/schemeconfig.scss +70 -58
  33. package/static/styles/stages.scss +1 -8
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "openatc-components",
3
- "version": "0.2.37",
3
+ "version": "0.2.38",
4
4
  "description": "A Vue.js project",
5
5
  "author": "openatc developer",
6
6
  "private": false,
@@ -193,6 +193,7 @@ const en = {
193
193
  'modelList2': 'Red Control',
194
194
  'modelList3': 'Dark Control',
195
195
  'modelList4': 'Step Control',
196
+ 'modelList4-': 'Stage Control',
196
197
  'modelList5': 'Fixed_Cycle Control',
197
198
  'modelList6': 'Free Control',
198
199
  'modelList7': 'Coordinated Induction Control',
@@ -333,7 +334,11 @@ const en = {
333
334
  'ignored': 'ignored',
334
335
  'untreated': 'untreated',
335
336
  'item': 'item',
336
- 'noselectcontroltip': 'Please select a control method first!'
337
+ 'noselectcontroltip': 'Please select a control method first!',
338
+ 'residentcontrol': 'Resident Control',
339
+ 'schemeselection': 'Pattern Select',
340
+ 'others': 'Others',
341
+ 'recovery': 'Recovery'
337
342
  },
338
343
  'phase': {
339
344
  'desc': 'LaneDirection',
@@ -244,7 +244,8 @@ const zh = {
244
244
  'modelList1': '黄闪',
245
245
  'modelList2': '全红',
246
246
  'modelList3': '关灯',
247
- 'modelList4': '阶段锁定',
247
+ 'modelList4': '步进',
248
+ 'modelList4-': '阶段锁定',
248
249
  'modelList5': '定周期',
249
250
  'modelList6': '单点感应',
250
251
  'modelList7': '协调感应控制',
@@ -333,7 +334,11 @@ const zh = {
333
334
  'ignored': '已忽略',
334
335
  'untreated': '未处理',
335
336
  'item': '条',
336
- 'noselectcontroltip': '请先选择一种控制方式!'
337
+ 'noselectcontroltip': '请先选择一种控制方式!',
338
+ 'residentcontrol': '驻留控制',
339
+ 'schemeselection': '方案选择',
340
+ 'others': '其他',
341
+ 'recovery': '恢复'
337
342
  },
338
343
  'phase': {
339
344
  'desc': '车道方向',
@@ -0,0 +1 @@
1
+ <?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1714021963787" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="12286" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M1023.606154 512l-267.815385-154.781538v111.852307h-200.467692v-200.861538h111.458461L512.393846 0.393846l-154.781538 267.815385h111.458461v200.861538H268.603077V357.218462L0.787692 512l267.815385 154.781538V555.323077h200.467692v200.467692H357.612308l154.781538 267.815385 154.387692-267.815385h-111.458461V555.323077h200.467692v111.458461z" p-id="12287"></path></svg>
@@ -0,0 +1 @@
1
+ <?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1714021956193" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="12129" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M54.218328 0.002671h184.821636a52.882491 52.882491 0 0 1 53.416657 53.416658v916.09568a52.882491 52.882491 0 0 1-53.416657 53.416658H54.218328a53.416658 53.416658 0 0 1-53.416658-53.416658V53.419329a53.416658 53.416658 0 0 1 53.416658-53.416658z m438.016593 0h112.174982a53.416658 53.416658 0 0 1 53.416658 53.416658v916.09568a53.416658 53.416658 0 0 1-53.416658 53.416658H492.234921a52.882491 52.882491 0 0 1-53.416657-53.416658V53.419329a52.882491 52.882491 0 0 1 53.416657-53.416658z m364.835773 0h112.174981a53.416658 53.416658 0 0 1 53.416658 53.416658v916.09568a53.416658 53.416658 0 0 1-53.416658 53.416658h-112.174981a53.416658 53.416658 0 0 1-53.416658-53.416658V53.419329a53.416658 53.416658 0 0 1 53.416658-53.416658z" p-id="12130"></path></svg>
@@ -0,0 +1 @@
1
+ <?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1714026084421" class="icon" viewBox="0 0 1180 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="11864" xmlns:xlink="http://www.w3.org/1999/xlink" width="230.46875" height="200"><path d="M0.040891 1024V477.751546a302.998089 302.998089 0 0 1 298.163013-307.948286h397.166948V0L1179.454044 288.37774l-484.083192 288.377741V406.95222h-397.166948a71.777853 71.777853 0 0 0-70.223721 72.526139v544.521641H0.040891z" fill="#606266" p-id="11865"></path></svg>
@@ -15,7 +15,7 @@
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
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?'masks': ''" :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'}">
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'}">
19
19
  <el-tooltip placement="top-start" effect="light">
20
20
  <div slot="content">P{{item.id}}:{{item.split}}</div>
21
21
  <div style="cursor:pointer;">
@@ -38,9 +38,9 @@
38
38
  <i class="iconfont icon-youguidianche" style="position: absolute;top: 8px;left:70px;font-size:12px;color:#454545;" v-if="bus.controltype === 5 && bus.phaseid===item.id"></i>
39
39
  </div>
40
40
  </div>
41
- <div class="first-1" :class="item.mode===8?'masks': ''" :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>
42
- <div class="first-1" :class="item.mode===8?'masks': ''" :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>
43
- <div class="first-1" :class="item.mode===8?'masks': ''" :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>
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>
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>
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>
44
44
  </div>
45
45
  </div>
46
46
  <div v-if="showBarrier">
@@ -1471,6 +1471,9 @@ export default {
1471
1471
  .masks {
1472
1472
  background: rgb(242, 121, 121) !important;
1473
1473
  }
1474
+ .yellowClass {
1475
+ background: #f9dc6a !important;
1476
+ }
1474
1477
  .first-1 {
1475
1478
  float: left;
1476
1479
  // text-align: center;
@@ -16,8 +16,36 @@
16
16
  <transition name="fade-right" mode="out-in"
17
17
  :enter-active-class="toPage === 1 ? 'animated fadeInRight' : 'animated fadeInLeft'"
18
18
  :leave-active-class="toPage === 1 ? 'animated fadeOutRight' : 'animated fadeOutLeft' ">
19
- <div style="position: absolute;width: 100%;height:100%;" v-show="(isOperation && !isClosePhase)">
20
- <ManualControlModal
19
+ <div class="new" style="position: absolute;width: 100%;height:100%;" v-show="(isOperation && !isClosePhase)">
20
+ <ManualControlModalNew
21
+ ref="ManualControlModalNew"
22
+ :residentControlList="residentControlList"
23
+ :specialControlList="specialControlList"
24
+ :patternChooseControlList="patternChooseControlList"
25
+ :othersControlList="othersControlList"
26
+ :controlData="controlData"
27
+ :patternAll="patternAll"
28
+ :crossStatusData="crossStatusData"
29
+ :preselectModel="preselectModel"
30
+ :preselectStages="preselectStages"
31
+ :realtimeStatusModalvisible="realtimeStatusModalvisible"
32
+ :roadDirection="roadDirection"
33
+ :closePhaseRings="phaseRings"
34
+ :sidewalkPhaseData="sidewalkPhaseData"
35
+ :phaseList="phaseList"
36
+ :statusData="statusData"
37
+ :lockPhaseBtnName="lockPhaseBtnName"
38
+ :overlap="overlap"
39
+ :patternSelect="patternSelect"
40
+ :allPatternList="allPatternList"
41
+ @closeManualModal="closeManualModal"
42
+ @selectModel="selectModel"
43
+ @selectStages="selectStages"
44
+ @patternCommit="patternCommit"
45
+ @closePhaseBack="closePhaseBack"
46
+ @closePhaseControl="closePhaseControl"
47
+ @selectSpecialModel="selectSpecialModelNew" />
48
+ <!-- <ManualControlModal
21
49
  :controlData="controlData"
22
50
  :modelList="modelList"
23
51
  :patternSelect="patternSelect"
@@ -35,10 +63,10 @@
35
63
  @selectModel="selectModel"
36
64
  @selectStages="selectStages"
37
65
  @patternCommit="patternCommit"
38
- @selectSpecialModel="selectSpecialModel" />
66
+ @selectSpecialModel="selectSpecialModel" /> -->
39
67
  </div>
40
68
  </transition>
41
- <transition name="fade-left" mode="out-in"
69
+ <!-- <transition name="fade-left" mode="out-in"
42
70
  enter-active-class="animated fadeInRight"
43
71
  leave-active-class="animated fadeOutRight">
44
72
  <div style="position: absolute;width: 100%;height:100%" v-show="(isOperation && isClosePhase)">
@@ -50,16 +78,16 @@
50
78
  :realtimeStatusModalvisible="realtimeStatusModalvisible"
51
79
  :roadDirection="roadDirection"
52
80
  @closePhaseBack="closePhaseBack"
53
- @closePhaseControl="closePhaseControl" />
54
- <LockingPhaseControlModal
81
+ @closePhaseControl="closePhaseControl" /> -->
82
+ <!-- <LockingPhaseControlModal
55
83
  v-if="specialPage === 'lockingphase'"
56
84
  :roadDirection="roadDirection"
57
85
  :phaseList="phaseList"
58
86
  :patternStatus="statusData"
59
87
  :lockPhaseBtnName="lockPhaseBtnName"
60
88
  @closePhaseBack="closePhaseBack"
61
- @closePhaseControl="closePhaseControl" />
62
- <TentativePlanControlModal
89
+ @closePhaseControl="closePhaseControl" /> -->
90
+ <!-- <TentativePlanControlModal
63
91
  v-if="specialPage === 'tentativeplan'"
64
92
  :realtimeStatusModalvisible="realtimeStatusModalvisible"
65
93
  :controlData="controlData"
@@ -76,17 +104,17 @@
76
104
  :phaseList="phaseList"
77
105
  @closePhaseBack="closePhaseBack"
78
106
  @closePhaseControl="closePhaseControl"
79
- />
80
- <AzimuthLocking
107
+ /> -->
108
+ <!-- <AzimuthLocking
81
109
  v-if="specialPage === 'azimuthlocking'"
82
110
  :realtimeStatusModalvisible="realtimeStatusModalvisible"
83
111
  :phaseList="phaseList"
84
112
  :patternStatus="statusData"
85
113
  @closePhaseBack="closePhaseBack"
86
114
  @closePhaseControl="closePhaseControl"
87
- />
88
- </div>
89
- </transition>
115
+ /> -->
116
+ <!-- </div>
117
+ </transition> -->
90
118
 
91
119
  <transition name="fade-left" mode="out-in"
92
120
  enter-active-class="animated fadeInLeft"
@@ -122,6 +150,7 @@ import { putTscControl } from '../../../api/control.js'
122
150
  import { uploadSingleTscParam } from '../../../api/param.js'
123
151
  import RealtimeStatusModal from './realtimeStatusModal'
124
152
  import ManualControlModal from './manualControlModal'
153
+ import ManualControlModalNew from './manualControlModalNew'
125
154
  import ClosePhaseControlModal from './closePhaselControlModal'
126
155
  import LockingPhaseControlModal from './lockingPhaselControlModal'
127
156
  import TentativePlanControlModal from './tentativeplancontrolmodal'
@@ -132,9 +161,10 @@ import { getMessageByCode } from '../../../utils/responseMessage'
132
161
  import { GetAllFaultRange } from '../../../api/fault'
133
162
  import PhaseDataModel from '../IntersectionMap/crossDirection/utils.js'
134
163
  import CrossDiagramMgr from '../../../EdgeMgr/controller/crossDiagramMgr.js'
135
- import { setToken, setHost } from '../../../utils/auth.js'
164
+ import { setToken, setHost, getTheme } from '../../../utils/auth.js'
136
165
  import RingDataModel from '../../../utils/RingDataModel.js'
137
166
  import { getIntersectionInfo } from '../../../api/template'
167
+
138
168
  export default {
139
169
  name: 'scheme-config',
140
170
  components: {
@@ -144,7 +174,8 @@ export default {
144
174
  LockingPhaseControlModal,
145
175
  priorityControl,
146
176
  AzimuthLocking,
147
- TentativePlanControlModal
177
+ TentativePlanControlModal,
178
+ ManualControlModalNew
148
179
  },
149
180
  props: {
150
181
  phaseList: {
@@ -304,6 +335,132 @@ export default {
304
335
  permission: 'configer:manual:base',
305
336
  iconName: '感应式行人过街控制'
306
337
  }],
338
+ residentControlList: [
339
+ {
340
+ type: '步进',
341
+ id: 4,
342
+ iconClass: 'bujin',
343
+ permission: 'configer:manual:dwell',
344
+ iconName: this.$t('openatccomponents.overview.modelList4'),
345
+ bgcolor: getTheme() === 'light' ? '#edf6ff' : '#243d59'
346
+ },
347
+ {
348
+ type: '阶段锁定',
349
+ id: 4,
350
+ iconClass: 'jieduansuoding',
351
+ permission: 'configer:manual:dwell',
352
+ iconName: this.$t('openatccomponents.overview.modelList4-'),
353
+ bgcolor: getTheme() === 'light' ? '#edf6ff' : '#243d59'
354
+ },
355
+ {
356
+ type: '相位锁定',
357
+ id: 22,
358
+ iconClass: 'xiangweisuoding',
359
+ permission: 'configer:manual:dwell',
360
+ iconName: this.$t('openatccomponents.overview.modelList22'),
361
+ bgcolor: getTheme() === 'light' ? '#edf6ff' : '#243d59'
362
+ },
363
+ {
364
+ type: '方向锁定',
365
+ id: 25,
366
+ iconClass: 'fangxiangsuoding',
367
+ permission: 'configer:manual:dwell',
368
+ iconName: this.$t('openatccomponents.overview.modelList25'),
369
+ bgcolor: getTheme() === 'light' ? '#edf6ff' : '#243d59'
370
+ }
371
+ ],
372
+ specialControlList: [
373
+ {
374
+ type: '黄闪',
375
+ id: 1,
376
+ iconClass: 'huangshan',
377
+ permission: 'configer:manual:senior',
378
+ iconName: this.$t('openatccomponents.overview.modelList1'),
379
+ bgcolor: getTheme() === 'light' ? '#edf6ff' : '#243d59'
380
+ }, {
381
+ type: '全红',
382
+ id: 2,
383
+ iconClass: 'quanhong',
384
+ permission: 'configer:manual:senior',
385
+ iconName: this.$t('openatccomponents.overview.modelList2'),
386
+ bgcolor: getTheme() === 'light' ? '#edf6ff' : '#243d59'
387
+ }, {
388
+ type: '关灯',
389
+ id: 3,
390
+ iconClass: 'guandeng',
391
+ permission: 'configer:manual:senior',
392
+ iconName: this.$t('openatccomponents.overview.modelList3'),
393
+ bgcolor: getTheme() === 'light' ? '#edf6ff' : '#243d59'
394
+ }
395
+ ],
396
+ patternChooseControlList: [
397
+ {
398
+ type: '定周期',
399
+ id: 5,
400
+ iconClass: 'dingzhouqi',
401
+ permission: 'configer:manual:base',
402
+ iconName: this.$t('openatccomponents.overview.modelList5'),
403
+ bgcolor: getTheme() === 'light' ? '#edf6ff' : '#243d59'
404
+ }, {
405
+ type: '单点感应',
406
+ id: 6,
407
+ iconClass: 'ganyingkongzhi',
408
+ permission: 'configer:manual:base',
409
+ iconName: this.$t('openatccomponents.overview.modelList6'),
410
+ bgcolor: getTheme() === 'light' ? '#edf6ff' : '#243d59'
411
+ }, {
412
+ type: '自适应控制',
413
+ id: 9,
414
+ iconClass: 'zishiying',
415
+ permission: 'configer:manual:base',
416
+ iconName: this.$t('openatccomponents.overview.modelList9'),
417
+ bgcolor: getTheme() === 'light' ? '#edf6ff' : '#243d59'
418
+ }, {
419
+ type: '无电缆协调',
420
+ id: 10,
421
+ iconClass: 'wuxianlan',
422
+ permission: 'configer:manual:base',
423
+ iconName: this.$t('openatccomponents.overview.modelList10'),
424
+ bgcolor: getTheme() === 'light' ? '#edf6ff' : '#243d59'
425
+ }, {
426
+ type: '行人过街',
427
+ id: 12,
428
+ iconClass: 'xingrenguojie',
429
+ permission: 'configer:manual:base',
430
+ iconName: this.$t('openatccomponents.overview.modelList12'),
431
+ bgcolor: getTheme() === 'light' ? '#edf6ff' : '#243d59'
432
+ }, {
433
+ type: '感应式行人过街',
434
+ id: 19,
435
+ iconClass: 'ganyingshixingrenguojie',
436
+ permission: 'configer:manual:base',
437
+ iconName: this.$t('openatccomponents.overview.modelList19'),
438
+ bgcolor: getTheme() === 'light' ? '#edf6ff' : '#243d59'
439
+ }
440
+ ],
441
+ othersControlList: [
442
+ { // 特殊控制
443
+ type: '相位关断',
444
+ id: 23,
445
+ permission: 'configer:manual:optimize',
446
+ iconClass: 'closephase',
447
+ iconName: this.$t('openatccomponents.overview.modelList23'),
448
+ bgcolor: getTheme() === 'light' ? '#edf6ff' : '#243d59'
449
+ }, {
450
+ type: '临时方案',
451
+ id: 100,
452
+ permission: 'configer:manual:optimize',
453
+ iconClass: 'tentativeplan',
454
+ iconName: this.$t('openatccomponents.overview.modelList100'),
455
+ bgcolor: getTheme() === 'light' ? '#edf6ff' : '#243d59'
456
+ }, {
457
+ type: '优先控制',
458
+ id: 24,
459
+ permission: 'configer:manual:preempt',
460
+ iconClass: 'prioritycontrol',
461
+ iconName: this.$t('openatccomponents.overview.modelList24'),
462
+ bgcolor: getTheme() === 'light' ? '#edf6ff' : '#243d59'
463
+ }],
307
464
  currModel: -1,
308
465
  preselectModel: -1, // 预选方案
309
466
  preselectStages: -1, // 预选阶段
@@ -482,15 +639,7 @@ export default {
482
639
  changeStatus () {
483
640
  this.toPage = 1
484
641
  this.isOperation = true
485
- if (this.modelList.filter(ele => ele.id === 0).length === 0) {
486
- let autonomyControl = {
487
- id: 0,
488
- iconClass: 'zizhukongzhi',
489
- permission: 'configer:manual:renew',
490
- iconName: '自主控制'
491
- }
492
- this.modelList.push(autonomyControl)
493
- }
642
+ this.$refs.ManualControlModalNew.init()
494
643
  },
495
644
  handleGetData (data) {
496
645
  let that = this
@@ -567,7 +716,7 @@ export default {
567
716
  })
568
717
  control.control = that.preselectModel
569
718
  // control.terminal = isNaN(parseInt(manualInfo.tempPatternid)) ? Number(manualInfo.tempPatternid.replace(/[^0-9]/ig, '')) : manualInfo.tempPatternid
570
- control.terminal = Number(manualInfo.tempPatternid)
719
+ control.terminal = manualInfo.tempPatternid === undefined ? null : Number(manualInfo.tempPatternid)
571
720
  // control.delay = Number(manualInfo.tempDelay)
572
721
  control.duration = Number(manualInfo.tempDuration)
573
722
  control.value = that.preselectStages === -1 ? 0 : that.preselectStages
@@ -676,6 +825,10 @@ export default {
676
825
  this.closePhase = []
677
826
  }
678
827
  },
828
+ selectSpecialModelNew () {
829
+ let ringDataModel = new RingDataModel(this.statusData, this.phaseList)
830
+ this.phaseRings = ringDataModel.initRingPhaseData()
831
+ },
679
832
  selectSpecialModel (id) {
680
833
  let ringDataModel = new RingDataModel(this.statusData, this.phaseList)
681
834
  if (id === 23) {
@@ -1,6 +1,6 @@
1
1
  <template>
2
2
  <div class="tentativeplan-control">
3
- <div class="title" style="margin-bottom: 18px;">{{$t('openatccomponents.overview.azimuthlocking')}}</div>
3
+ <!-- <div class="title" style="margin-bottom: 18px;">{{$t('openatccomponents.overview.azimuthlocking')}}</div> -->
4
4
  <el-row>
5
5
  <el-col :span="12">
6
6
  <el-form
@@ -11,17 +11,17 @@
11
11
  <el-form-item
12
12
  :label="$t('openatccomponents.overview.duration') + ':'"
13
13
  prop="count">
14
- <el-input-number :placeholder="$t('openatccomponents.common.input')" :min="0" :max="65535" :precision="0" :step="1" :controls="false" v-model.number="manualInfo.duration" size="mini"></el-input-number>
14
+ <el-input-number :placeholder="$t('openatccomponents.common.input')" :min="0" :max="65535" :precision="0" :step="1" :controls="false" v-model.number="manualInfo.duration" size="small"></el-input-number>
15
15
  </el-form-item>
16
16
  <el-form-item
17
17
  :label="$t('openatccomponents.overview.yellowflash') + ':'"
18
18
  prop="intersection">
19
- <el-input-number :placeholder="$t('openatccomponents.common.input')" :min="0" :max="65535" :precision="0" :step="1" :controls="false" v-model.number="manualInfo.yellowflash" size="mini"></el-input-number>
19
+ <el-input-number :placeholder="$t('openatccomponents.common.input')" :min="0" :max="65535" :precision="0" :step="1" :controls="false" v-model.number="manualInfo.yellowflash" size="small"></el-input-number>
20
20
  </el-form-item>
21
21
  <el-form-item
22
22
  :label="$t('openatccomponents.overview.mingreen') + ':'"
23
23
  prop="intersection">
24
- <el-input-number :placeholder="$t('openatccomponents.common.input')" :min="0" :max="65535" :precision="0" :step="1" :controls="false" v-model.number="manualInfo.mingreen" size="mini"></el-input-number>
24
+ <el-input-number :placeholder="$t('openatccomponents.common.input')" :min="0" :max="65535" :precision="0" :step="1" :controls="false" v-model.number="manualInfo.mingreen" size="small"></el-input-number>
25
25
  </el-form-item>
26
26
  </el-form>
27
27
  </el-col>
@@ -34,12 +34,12 @@
34
34
  <el-form-item
35
35
  :label="$t('openatccomponents.overview.greenclear') + ':'"
36
36
  prop="count">
37
- <el-input-number :placeholder="$t('openatccomponents.common.input')" :min="0" :max="65535" :precision="0" :step="1" :controls="false" v-model.number="manualInfo.greenclear" size="mini"></el-input-number>
37
+ <el-input-number :placeholder="$t('openatccomponents.common.input')" :min="0" :max="65535" :precision="0" :step="1" :controls="false" v-model.number="manualInfo.greenclear" size="small"></el-input-number>
38
38
  </el-form-item>
39
39
  <el-form-item
40
40
  :label="$t('openatccomponents.overview.allred') + ':'"
41
41
  prop="intersection">
42
- <el-input-number :placeholder="$t('openatccomponents.common.input')" :min="0" :max="65535" :precision="0" :step="1" :controls="false" v-model.number="manualInfo.allred" size="mini"></el-input-number>
42
+ <el-input-number :placeholder="$t('openatccomponents.common.input')" :min="0" :max="65535" :precision="0" :step="1" :controls="false" v-model.number="manualInfo.allred" size="small"></el-input-number>
43
43
  </el-form-item>
44
44
  </el-form>
45
45
  </el-col>
@@ -50,27 +50,27 @@
50
50
  </el-col>
51
51
  <el-col :span="19">
52
52
  <div class="control-model" v-for="(item, index) in imgs" :key="index">
53
- <div :class="{'single-model-select':spanIndex.indexOf(index)>-1}" class="single-model" @click="boxShow(index,item)">
54
- <div v-if="item.class" :class="item.class" style="border:0px"></div>
55
- <div class="single-model-name">{{item.name}}</div>
53
+ <div :style="{'backgroundColor': item.bgcolor}" :class="{'single-model-select':spanIndex.indexOf(index)>-1}" class="single-model" @click="boxShow(index,item)">
54
+ <div v-if="item.class" :style="{color: themeColor}" :class="item.class" style="border:0px;font-size: 50px;"></div>
55
+ <div class="single-model-name" :style="{color: themeColor}" style="margin-top: -4px;">{{item.name}}</div>
56
56
  </div>
57
57
  </div>
58
58
  <div v-if="currentName !==''" style="width: 100%; height: auto;overflow: hidden;">
59
59
  <div style="margin-top:20px" class="model-label-title">{{currentName}}{{$t('openatccomponents.overview.currentphase')}}:</div>
60
60
  <div class="control-model" v-for="(item, index) in sidewalkPhaseData" :key="index">
61
- <div style="position:relative;" class="single-model">
62
- <xdr-dir-selector Width="75PX" Height="75PX" Widths="65PX" Heights="65PX" :Data="showStyle" :Datas="showStyles" :showlist="item"></xdr-dir-selector>
63
- <div style="height:65px;display:flex;flex-direction:row;justify-content:center;align-items:end;">
64
- <div class="current-stage-num" style="width:20%;">{{index + 1}}</div>
61
+ <div style="position:relative;" class="single-model" :style="{'backgroundColor': item[0].bgcolor}">
62
+ <xdr-dir-selector Width="75PX" Height="75PX" Widths="65PX" Heights="65PX" :Data="showStyle" :Datas="showStyles" :showlist="dirListSetTheme(item)"></xdr-dir-selector>
63
+ <div style="height:80px;display:flex;flex-direction:row;justify-content:center;align-items:end;">
64
+ <div class="current-stage-num" :style="{color: themeColor}" style="width:20%;">{{index + 1}}</div>
65
65
  <div style="width:70%;">
66
- <i class="iconfont icon-feijidongche" style="font-size:11PX;color:#606266;margin-left:10PX" v-if="item[item.length-1].controltype === 6"></i>
67
- <i class="iconfont icon-lukouzhilu" style="font-size:16PX;color:#454545;margin-left:10PX" v-if="item[item.length-1].controltype === 1"></i>
68
- <i class="iconfont icon-BRT" style="font-size:11PX;color:#454545;margin-left:10PX" v-if="item[item.length-1].controltype === 4"></i>
66
+ <i class="iconfont icon-feijidongche" :style="{color: themeColor}" style="font-size:11PX;color:#606266;margin-left:10PX" v-if="item[item.length-1].controltype === 6"></i>
67
+ <i class="iconfont icon-lukouzhilu" :style="{color: themeColor2}" style="font-size:16PX;color:#454545;margin-left:10PX" v-if="item[item.length-1].controltype === 1"></i>
68
+ <i class="iconfont icon-BRT" :style="{color: themeColor2}" style="font-size:11PX;color:#454545;margin-left:10PX" v-if="item[item.length-1].controltype === 4"></i>
69
69
  <div style="transform:scale(0.65);margin-left:10PX">
70
- <i class="iconfont icon-xuxiangwei-xin" style="font-size:5PX;color:#454545;" v-if="item[item.length-1].controltype === 99"></i>
70
+ <i class="iconfont icon-xuxiangwei-xin" :style="{color: themeColor2}" style="font-size:5PX;color:#454545;" v-if="item[item.length-1].controltype === 99"></i>
71
71
  </div>
72
- <i class="iconfont icon-gongjiaoche" style="font-size:11PX;color:#606266;margin-left:10PX" v-if="item[item.length-1].controltype === 3"></i>
73
- <i class="iconfont icon-youguidianche" style="font-size:11PX;color:#606266;margin-left:10PX" v-if="item[item.length-1].controltype === 5"></i>
72
+ <i class="iconfont icon-gongjiaoche" :style="{color: themeColor}" style="font-size:11PX;color:#606266;margin-left:10PX" v-if="item[item.length-1].controltype === 3"></i>
73
+ <i class="iconfont icon-youguidianche" :style="{color: themeColor}" style="font-size:11PX;color:#606266;margin-left:10PX" v-if="item[item.length-1].controltype === 5"></i>
74
74
  </div>
75
75
  </div>
76
76
  </div>
@@ -90,10 +90,12 @@
90
90
  </div> -->
91
91
  <div class="footer" v-if="realtimeStatusModalvisible">
92
92
  <el-button @click="handleClose()">{{$t('openatccomponents.button.Back')}}</el-button>
93
+ <el-button type="primary" plain @click="toAutoControl()" v-if="isHasPermission('configer:manual:renew')">{{$t('openatccomponents.overview.recovery')}}</el-button>
93
94
  <el-button type="primary" @click="handleManualControl()">{{$t('openatccomponents.overview.implement')}}</el-button>
94
95
  </div>
95
96
  <div class="footer" v-if="!realtimeStatusModalvisible">
96
97
  <el-button @click="handleClose()">{{$t('openatccomponents.button.Back')}}</el-button>
98
+ <el-button type="primary" plain @click="toAutoControl()" v-if="isHasPermission('configer:manual:renew')">{{$t('openatccomponents.overview.recovery')}}</el-button>
97
99
  <el-button type="primary" @click="handleManualControl()">{{$t('openatccomponents.overview.comfirm')}}</el-button>
98
100
  </div>
99
101
  </div>
@@ -101,7 +103,7 @@
101
103
 
102
104
  <script>
103
105
  import { getPhase } from './utils'
104
- import { getIframdevid } from '../../../../utils/auth'
106
+ import { getIframdevid, hasPermission, getTheme } from '../../../../utils/auth'
105
107
  import { getlockPhase, lockPhase, getAllDerection } from '../../../../api/control'
106
108
  import Stages from '../../Stages/index'
107
109
  import RingDataModel from '../../../../utils/RingDataModel.js'
@@ -140,6 +142,7 @@ export default {
140
142
  images.forEach(v => {
141
143
  let obj = Object.assign({}, v)
142
144
  obj.name = this.$t(obj.name)
145
+ obj.bgcolor = getTheme() === 'light' ? '#edf6ff' : '#243d59'
143
146
  arrays.push(obj)
144
147
  })
145
148
  let arr1Ids = this.allDirection.map(item => item.id)
@@ -170,7 +173,9 @@ export default {
170
173
  mingreen: 15,
171
174
  duration: 600,
172
175
  yellowflash: 3
173
- }
176
+ },
177
+ themeColor: getTheme() === 'light' ? '#606266' : '#fff',
178
+ themeColor2: getTheme() === 'light' ? '#454545' : '#fff'
174
179
  }
175
180
  },
176
181
  created () {
@@ -243,7 +248,12 @@ export default {
243
248
  }
244
249
  this.lockList = res.data.data
245
250
  let ringDataModel = new RingDataModel({}, res.data.data)
246
- this.sidewalkPhaseData = ringDataModel.getlockData()
251
+ this.sidewalkPhaseData = ringDataModel.getlockData().map(ele => {
252
+ return ele.map(item => ({
253
+ ...item,
254
+ bgcolor: getTheme() === 'light' ? '#edf6ff' : '#243d59'
255
+ }))
256
+ })
247
257
  })
248
258
  },
249
259
  boxShow (index, data) {
@@ -256,6 +266,27 @@ export default {
256
266
  }
257
267
  this.getLockPhase(data)
258
268
  this.currentName = data.name
269
+ this.clickType(index)
270
+ },
271
+ resetToDefaultThemeColor (List) {
272
+ for (let i = 0; i < List.length; i++) {
273
+ if (List[i].clicked) {
274
+ delete List[i].clicked
275
+ }
276
+ List[i].bgcolor = getTheme() === 'light' ? '#edf6ff' : '#243d59'
277
+ }
278
+ },
279
+ highlightThemeColor (List, index) {
280
+ for (let i = 0; i < List.length; i++) {
281
+ if (i === index) {
282
+ List[i].clicked = true
283
+ List[i].bgcolor = getTheme() === 'light' ? '#c1e0ff' : '#0082ac'
284
+ }
285
+ }
286
+ },
287
+ clickType (value) {
288
+ this.resetToDefaultThemeColor(this.imgs)
289
+ this.highlightThemeColor(this.imgs, value)
259
290
  },
260
291
  handleClose () {
261
292
  this.$emit('closePhaseBack')
@@ -294,6 +325,25 @@ export default {
294
325
  // this.$message.error(getMessageByCode(res.data.code, this.$i18n.locale))
295
326
  // }
296
327
  })
328
+ },
329
+ toAutoControl () {
330
+ this.$emit('toAutoControl')
331
+ },
332
+ isHasPermission (path) {
333
+ let res = hasPermission(path)
334
+ return res
335
+ },
336
+ dirListSetTheme (list) {
337
+ let dirArr = []
338
+ let color = getTheme() === 'light' ? '#606266' : '#F1F3F4'
339
+ for (let rec of list) {
340
+ let recd = {
341
+ ...rec,
342
+ color: color
343
+ }
344
+ dirArr.push(recd)
345
+ }
346
+ return dirArr
297
347
  }
298
348
  }
299
349
  }
@@ -301,13 +351,6 @@ export default {
301
351
 
302
352
  <style lang="scss" scoped>
303
353
  .single-model-select {
304
- margin-right: 10px;
305
- text-align: center;
306
- cursor:pointer;
307
- width: 70px;
308
- height: 65px;
309
354
  background-color: #a2cfff;
310
- border-radius: 6px;
311
- // border: solid 1PX #409eff;
312
355
  }
313
356
  </style>