openatc-components 0.2.37 → 0.2.39

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 (42) hide show
  1. package/package/kisscomps/components/IntersectionMap/crossDirection/baseImg/PatternWalkSvg.vue +429 -0
  2. package/package/kisscomps/components/PatternStatus/PatternStatus.vue +7 -4
  3. package/package/kisscomps/components/SchemeConfig/SchemeConfig.vue +181 -28
  4. package/package/kisscomps/components/SchemeConfig/azimuthlocking/index.vue +75 -32
  5. package/package/kisscomps/components/SchemeConfig/closePhaselControlModal/index.vue +15 -4
  6. package/package/kisscomps/components/SchemeConfig/lockingPhaselControlModal/index.vue +40 -17
  7. package/package/kisscomps/components/SchemeConfig/manualControlModalNew/index.vue +3 -3
  8. package/package/kisscomps/components/SchemeConfig/priorityControl/index.vue +22 -12
  9. package/package/kisscomps/components/SchemeConfig/realtimeStatusModal/index.vue +1 -1
  10. package/package/kisscomps/components/SchemeConfig/tentativeplancontrolmodal/index.vue +23 -12
  11. package/package/kisscomps/components/StageBord/StageBord.vue +1 -0
  12. package/package/kisscomps/components/Stages/index.vue +52 -11
  13. package/package/kisscomps/components/XRDDirSelector/XRDDirSelector.vue +30 -28
  14. package/package/kissui.min.js +1 -1
  15. package/package.json +1 -1
  16. package/src/i18n/language/en.js +6 -1
  17. package/src/i18n/language/zh.js +7 -2
  18. package/src/icons/svg/fangxiangsuoding.svg +1 -0
  19. package/src/icons/svg/jieduansuoding.svg +1 -0
  20. package/src/icons/svg/xiangweisuoding.svg +1 -0
  21. package/src/kisscomps/components/PatternStatus/PatternStatus.vue +7 -4
  22. package/src/kisscomps/components/SchemeConfig/SchemeConfig.vue +181 -28
  23. package/src/kisscomps/components/SchemeConfig/azimuthlocking/index.vue +75 -32
  24. package/src/kisscomps/components/SchemeConfig/closePhaselControlModal/index.vue +15 -4
  25. package/src/kisscomps/components/SchemeConfig/lockingPhaselControlModal/index.vue +40 -17
  26. package/src/kisscomps/components/SchemeConfig/manualControlModalNew/controlModelGroup.vue +128 -0
  27. package/src/kisscomps/components/SchemeConfig/manualControlModalNew/icon.vue +426 -0
  28. package/src/kisscomps/components/SchemeConfig/manualControlModalNew/index.vue +820 -0
  29. package/src/kisscomps/components/SchemeConfig/manualControlModalNew/othersIcon.vue +194 -0
  30. package/src/kisscomps/components/SchemeConfig/priorityControl/index.vue +22 -12
  31. package/src/kisscomps/components/SchemeConfig/realtimeStatusModal/index.vue +1 -1
  32. package/src/kisscomps/components/SchemeConfig/tentativeplancontrolmodal/index.vue +23 -12
  33. package/src/kisscomps/components/StageBord/StageBord.vue +1 -0
  34. package/src/kisscomps/components/Stages/index.vue +52 -11
  35. package/src/kisscomps/components/XRDDirSelector/XRDDirSelector.vue +30 -28
  36. package/src/views/intersection.vue +1 -1
  37. package/src/views/overView.vue +1 -1
  38. package/static/styles/commonkanban.scss +1 -0
  39. package/static/styles/light/theme/element-light.scss +4 -4
  40. package/static/styles/schemeconfig.scss +91 -59
  41. package/static/styles/stages.scss +1 -8
  42. package/src/node_modules/.package_versions.json +0 -1
@@ -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, // 预选阶段
@@ -393,12 +550,12 @@ export default {
393
550
  this.setHost(this.reqUrl)
394
551
  this.PhaseDataModel = new PhaseDataModel(this.roadDirection)
395
552
  this.CrossDiagramMgr = new CrossDiagramMgr()
396
- if (this.realtimeStatusModalvisible === false) {
397
- this.changeStatus()
398
- }
399
553
  this.getIntersectionInfo(this.agentId)
400
554
  },
401
555
  async mounted () {
556
+ if (this.realtimeStatusModalvisible === false) {
557
+ this.changeStatus()
558
+ }
402
559
  this.setPropsToken(this.Token)
403
560
  // await this.getPhase()
404
561
  this.getFault()
@@ -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,27 +1,27 @@
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
7
7
  ref="manual"
8
8
  label-position="left"
9
9
  :model="manualInfo"
10
- label-width="100px">
10
+ label-width="74px">
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>
@@ -30,47 +30,47 @@
30
30
  ref="manual"
31
31
  label-position="left"
32
32
  :model="manualInfo"
33
- label-width="100px">
33
+ label-width="74px">
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>
46
46
  </el-row>
47
- <el-row>
47
+ <el-row style="margin-top: 6px;">
48
48
  <el-col :span="5">
49
49
  <span class="model-label-title">{{$t('openatccomponents.overview.indirection')}}:</span>
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>
@@ -11,23 +11,23 @@
11
11
  **/
12
12
  <template>
13
13
  <div class="manual-control-modal closephase-control">
14
- <div class="title" style="margin-bottom: 18px;">{{$t('openatccomponents.overview.phaseclosecontrol')}}</div>
14
+ <!-- <div class="title" style="margin-bottom: 18px;">{{$t('openatccomponents.overview.phaseclosecontrol')}}</div> -->
15
15
  <el-row>
16
16
  <el-col :span="24">
17
17
  <el-form
18
18
  ref="manual"
19
19
  label-position="left"
20
20
  :model="manualInfo"
21
- label-width="100px">
21
+ label-width="74px">
22
22
  <el-form-item
23
23
  :label="$t('openatccomponents.overview.delay') + ':'"
24
24
  prop="intersection">
25
- <el-input-number :min="0" :max="65535" :precision="0" :step="1" :controls="false" v-model.number="manualInfo.tempDelay" size="mini"></el-input-number>
25
+ <el-input-number :min="0" :max="65535" :precision="0" :step="1" :controls="false" v-model.number="manualInfo.tempDelay" size="small"></el-input-number>
26
26
  </el-form-item>
27
27
  <el-form-item
28
28
  :label="$t('openatccomponents.overview.duration') + ':'"
29
29
  prop="count">
30
- <el-input-number :min="0" :max="65535" :precision="0" :step="1" :controls="false" v-model.number="manualInfo.tempDuration" size="mini"></el-input-number>
30
+ <el-input-number :min="0" :max="65535" :precision="0" :step="1" :controls="false" v-model.number="manualInfo.tempDuration" size="small"></el-input-number>
31
31
  </el-form-item>
32
32
  </el-form>
33
33
  </el-col>
@@ -62,16 +62,20 @@
62
62
  </el-row>
63
63
  <div class="footer" v-if="realtimeStatusModalvisible">
64
64
  <el-button @click="handleClose()">{{$t('openatccomponents.button.Back')}}</el-button>
65
+ <el-button type="primary" plain @click="toAutoControl()" v-if="isHasPermission('configer:manual:renew')">{{$t('openatccomponents.overview.recovery')}}</el-button>
65
66
  <el-button type="primary" @click="handleManualControl()">{{$t('openatccomponents.overview.implement')}}</el-button>
66
67
  </div>
67
68
  <div class="footer" v-if="!realtimeStatusModalvisible">
68
69
  <el-button @click="handleClose()">{{$t('openatccomponents.button.Back')}}</el-button>
70
+ <el-button type="primary" plain @click="toAutoControl()" v-if="isHasPermission('configer:manual:renew')">{{$t('openatccomponents.overview.recovery')}}</el-button>
69
71
  <el-button type="primary" @click="handleManualControl()">{{$t('openatccomponents.overview.comfirm')}}</el-button>
70
72
  </div>
71
73
  </div>
72
74
  </template>
73
75
 
74
76
  <script>
77
+ import { hasPermission } from '../../../../utils/auth'
78
+
75
79
  export default {
76
80
  name: 'closePhaselControl',
77
81
  props: {
@@ -171,6 +175,13 @@ export default {
171
175
  this.closePhaseRings[i].phases = sortedlist
172
176
  }
173
177
  }
178
+ },
179
+ toAutoControl () {
180
+ this.$emit('toAutoControl')
181
+ },
182
+ isHasPermission (path) {
183
+ let res = hasPermission(path)
184
+ return res
174
185
  }
175
186
  },
176
187
  mounted () {