openatc-components 0.3.50 → 0.3.52

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.
@@ -212,8 +212,8 @@ export default {
212
212
  Detector: [], // 管理所有检测器
213
213
  DetectorChart: [], // 管理所有检测器统计图
214
214
  motorwayicon: '',
215
- IconLengh: 60,
216
- IconWdith: 134,
215
+ IconLengh: 33,
216
+ IconWdith: 109,
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 = 60
393
- this.IconWdith = 134
392
+ this.IconLengh = 33
393
+ this.IconWdith = 109
394
394
  let Motorwaysitem = {
395
395
  index: this.index,
396
396
  id: this.motorid,
@@ -14,8 +14,9 @@
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
- <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'}">
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'}">
19
20
  <el-tooltip placement="top-start" effect="light">
20
21
  <div slot="content">{{$t('openatccomponents.phase.phase')}}{{item.id}}:{{item.split}}</div>
21
22
  <div style="cursor:pointer;">
@@ -25,7 +26,19 @@
25
26
  </div>
26
27
  <div v-if="isShowTip" class="box" style="position: absolute; left:40px; width:40px; top: -1px;">
27
28
  <div class="ring-nums">{{$t('openatccomponents.phase.phase')}}{{item.id}}</div>
28
- <div class="ring-nums">{{item.split}}</div>
29
+ <div v-if="isMove" class="ring-nums">{{item.split}}</div>
30
+ <el-input-number
31
+ v-if="!isMove"
32
+ :disabled="!cycles"
33
+ class="ring-nums"
34
+ size="small"
35
+ :controls="false"
36
+ :min="0"
37
+ :step="1"
38
+ v-model.number="item.split"
39
+ @change="handleEdit(item)"
40
+ style="width: 24px"
41
+ ></el-input-number>
29
42
  </div>
30
43
  </div>
31
44
  </el-tooltip>
@@ -41,7 +54,8 @@
41
54
  <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
55
  <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
56
  <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
- </div>
57
+ </div>
58
+ </draggable>
45
59
  </div>
46
60
  <div v-if="showBarrier">
47
61
  <div v-for="(item, index) in barrierList" :key="index + '1'">
@@ -100,6 +114,7 @@
100
114
  <script>
101
115
  // import patternwalksvg from '../PatternWalkSvg/PatternWalkSvg'
102
116
  import xdrdirselector from '../XRDDirSelector/XRDDirSelector'
117
+ import draggable from 'vuedraggable'
103
118
  // import PatternWalkSvg from '../IntersectionMap/crossDirection/baseImg/PatternWalkSvg'
104
119
  import PhaseDataModel from '../IntersectionMap/crossDirection/utils.js'
105
120
  import CrossDiagramMgr from '../../../EdgeMgr/controller/crossDiagramMgr.js'
@@ -107,6 +122,7 @@ export default {
107
122
  name: 'pattern-list',
108
123
  components: {
109
124
  // patternwalksvg,
125
+ draggable,
110
126
  xdrdirselector
111
127
  },
112
128
  data () {
@@ -114,6 +130,7 @@ export default {
114
130
  barrierHeight: '',
115
131
  stageCycle: '',
116
132
  barrierList: [],
133
+ barrierArr: [],
117
134
  newCycle: this.cycles,
118
135
  patternIds: this.patternId,
119
136
  newPatterns: [],
@@ -142,6 +159,10 @@ export default {
142
159
  stagesChange: {
143
160
  type: Array
144
161
  },
162
+ isMove: {
163
+ type: Boolean,
164
+ default: true
165
+ },
145
166
  controlPhase: {
146
167
  type: Object
147
168
  },
@@ -375,6 +396,63 @@ export default {
375
396
  }
376
397
  },
377
398
  methods: {
399
+ move (e) {
400
+ // 这里的e表示即将停靠的元素。
401
+ let result = this.barrierArr.filter(item => item.includes(e.relatedContext.element.id))[0]
402
+ if (!result.includes(e.draggedContext.element.id)) {
403
+ return false
404
+ }
405
+ },
406
+ endDrag (index) {
407
+ // 拖动后对原数据排序
408
+ const idIndexMap = {}
409
+ this.patternInfo.forEach((subArray, subArrayIndex) => {
410
+ subArray.forEach((item, index) => {
411
+ idIndexMap[item.id] = { subArrayIndex, index }
412
+ })
413
+ })
414
+ this.patternStatusList.forEach((subArray, subArrayIndex) => {
415
+ if (subArray.length > 0) {
416
+ subArray.sort((aItem, bItem) => {
417
+ const aIndex = idIndexMap[aItem.id] ? idIndexMap[aItem.id].index : Infinity
418
+ const bIndex = idIndexMap[bItem.id] ? idIndexMap[bItem.id].index : Infinity
419
+ return aIndex - bIndex
420
+ })
421
+ }
422
+ })
423
+ },
424
+ handleEdit (val) {
425
+ this.patternStatusList.map(d => {
426
+ d.map(r => {
427
+ if (r.id === val.id) {
428
+ r.value = val.split
429
+ }
430
+ })
431
+ })
432
+ let n = this.index
433
+ const globalParamModel = this.$store.getters.globalParamModel
434
+ let pattern = globalParamModel.getParamsByType('patternList')[n]
435
+ globalParamModel.getParamsByType('patternList')[n].cycle = this.getMaxCycle(pattern)
436
+ },
437
+ getMaxCycle (pattern) {
438
+ let modeId = pattern.stages.filter(item => item.length === 1)[0]
439
+ let rings = pattern.rings
440
+ let maxCycle = 0
441
+ for (let ring of rings) {
442
+ if (ring.length === 0) continue
443
+ let cycle = 0
444
+ for (let r of ring) {
445
+ if (r.mode === 7 && (modeId && modeId[0] === r.id)) { // 忽略相位不计周期
446
+ continue
447
+ }
448
+ cycle = cycle + r.value
449
+ }
450
+ if (cycle > maxCycle) {
451
+ maxCycle = cycle
452
+ }
453
+ }
454
+ return maxCycle
455
+ },
378
456
  getPed (data) {
379
457
  let ped = []
380
458
  for (let stg of data) {
@@ -1179,6 +1257,7 @@ export default {
1179
1257
  }
1180
1258
  }
1181
1259
  let resArr = ringArr.map(item => item.data)
1260
+ this.barrierArr = resArr
1182
1261
  let ringTeam = this.step1(this.phaseList, resArr)
1183
1262
  let ringTeams = ringTeam.filter(item => item.length !== 0)
1184
1263
  if (this.patternList) {
@@ -20,10 +20,10 @@
20
20
  :model="manualInfo"
21
21
  label-width="90px">
22
22
  <el-form-item
23
- :label="$t('openatccomponents.overview.greenclear')"
24
- prop="intersection">
25
- <el-input-number :min="0" :max="65535" :precision="0" :step="1" :controls="false" v-model.number="manualInfo.tempGreenflash" size="small"></el-input-number>
26
- </el-form-item>
23
+ :label="$t('openatccomponents.overview.duration')"
24
+ prop="count">
25
+ <el-input-number :min="0" :max="65535" :precision="0" :step="1" :controls="false" v-model.number="manualInfo.tempDuration" size="small"></el-input-number>
26
+ </el-form-item>
27
27
 
28
28
  <el-form-item
29
29
  :label="$t('openatccomponents.overview.yellowflash')"
@@ -44,13 +44,11 @@
44
44
  label-position="left"
45
45
  :model="manualInfo"
46
46
  label-width="90px">
47
-
48
- <el-form-item
49
- :label="$t('openatccomponents.overview.duration')"
50
- prop="count">
51
- <el-input-number :min="0" :max="65535" :precision="0" :step="1" :controls="false" v-model.number="manualInfo.tempDuration" size="small"></el-input-number>
52
- </el-form-item>
53
-
47
+ <el-form-item
48
+ :label="$t('openatccomponents.overview.greenclear')"
49
+ prop="intersection">
50
+ <el-input-number :min="0" :max="65535" :precision="0" :step="1" :controls="false" v-model.number="manualInfo.tempGreenflash" size="small"></el-input-number>
51
+ </el-form-item>
54
52
  <el-form-item
55
53
  :label="$t('openatccomponents.overview.allred')"
56
54
  prop="intersection">
@@ -5,6 +5,7 @@
5
5
  :contrloType="contrloType"
6
6
  :stagesChange="stagesChange"
7
7
  :isShowTip="isShowTip"
8
+ :isMove="isMove"
8
9
  :patternStatusList="patternStatusList"
9
10
  :cycles="cycles"
10
11
  :cycle="cycle"
@@ -502,6 +503,10 @@ export default {
502
503
  type: Boolean,
503
504
  default: true
504
505
  },
506
+ isMove: {
507
+ type: Boolean,
508
+ default: true
509
+ },
505
510
  contrloType: {
506
511
  type: String
507
512
  },
@@ -11,12 +11,12 @@
11
11
 
12
12
  // 全局滚动条样式
13
13
  ::-webkit-scrollbar {
14
- width: 12PX;
15
- height: 12PX;
14
+ width: 6PX;
15
+ height: 6PX;
16
16
  }
17
17
  ::-webkit-scrollbar-thumb {
18
18
  // 滚动条的滑块
19
- border-radius: 4px;
19
+ border-radius: 3PX;
20
20
  background: rgba(144, 147, 153, 0.3);
21
21
  }
22
22
  ::-webkit-scrollbar-corner{
@@ -34,7 +34,7 @@ $--button-danger-font-color: #FFFFFF;
34
34
  $--button-success-font-color: #FFFFFF;
35
35
  $--radio-button-checked-font-color: #FFFFFF;
36
36
  $--radio-font-color: $--color-text-secondary;
37
- $--tag-info-color: $--color-text-placeholder;
37
+ $--tag-info-color: #FFFFFF;
38
38
  $--tooltip-color: $--color-white;
39
39
  $--checkbox-font-color: $--color-text-secondary;
40
40
 
@@ -38,9 +38,6 @@
38
38
  zoom: 0.9;
39
39
 
40
40
  }
41
- .centerText .text {
42
- font-size: 14px;
43
- }
44
41
  }
45
42
  /*当屏幕小于等于1440px的屏幕样式*/
46
43
  @media only screen and (max-width: 1440px){
@@ -49,9 +46,6 @@
49
46
  zoom: 0.8;
50
47
 
51
48
  }
52
- .centerText .text {
53
- font-size: 18px;
54
- }
55
49
  }
56
50
  /*当屏幕小于等于1280px的屏幕样式*/
57
51
  @media only screen and (max-width: 1280px){
@@ -59,9 +53,6 @@
59
53
  // transform: scale(0.65);
60
54
  zoom: 0.65;
61
55
  }
62
- .centerText .text {
63
- font-size: 20px;
64
- }
65
56
  }
66
57
  /*当屏幕小于等于960px的屏幕样式*/
67
58
  @media only screen and (max-width: 960px){
@@ -69,9 +60,6 @@
69
60
  // transform: scale(0.5);
70
61
  zoom: 0.5;
71
62
  }
72
- .centerText .text {
73
- font-size: 14px;
74
- }
75
63
  }
76
64
  /*当屏幕小于等于720px的屏幕样式*/
77
65
  @media only screen and (max-width: 720px){
@@ -79,9 +67,6 @@
79
67
  // transform: scale(0.45);
80
68
  zoom: 0.45;
81
69
  }
82
- .centerText .text {
83
- font-size: 14px;
84
- }
85
70
  }
86
71
  // 小屏幕打开首页适配样式
87
72
  .minifont {
@@ -188,4 +173,9 @@
188
173
  color: $--color-text-primary;
189
174
  font-size:30PX;
190
175
  }
176
+ .centerText {
177
+ .text {
178
+ font-size: 18PX;
179
+ }
180
+ }
191
181
  }
@@ -34,7 +34,7 @@ $--card-background-selected: #c1e0ff;
34
34
  // $--button-success-font-color: #FFFFFF;
35
35
  // $--radio-button-checked-font-color: #FFFFFF;
36
36
  // $--radio-font-color: $--color-text-secondary;
37
- // $--tag-info-color: $--color-text-placeholder;
37
+ $--tag-info-color: #303133;
38
38
  // $--tooltip-color: $--color-white;
39
39
  // $--checkbox-font-color: $--color-text-secondary;
40
40
 
@@ -226,7 +226,7 @@
226
226
  overflow-y: auto;
227
227
  }
228
228
  .manual-common-content::-webkit-scrollbar {
229
- width: 8PX;
229
+ width: 6PX;
230
230
  }
231
231
  }
232
232
  // 手动控制弹框
@@ -498,12 +498,12 @@
498
498
  width: 85% !important;
499
499
  }
500
500
  .el-input.is-disabled .el-input__inner {
501
- text-align: center;
501
+ text-align: left;
502
502
  }
503
503
  .el-input-number {
504
504
  width: 100%;
505
505
  .el-input__inner {
506
- text-align: center;
506
+ text-align: left;
507
507
  }
508
508
  }
509
509
  .el-select {
@@ -540,6 +540,9 @@
540
540
  }
541
541
  .el-input-number {
542
542
  width: 100%;
543
+ .el-input__inner {
544
+ text-align: left;
545
+ }
543
546
  }
544
547
  .el-input-number--mini{
545
548
  width: 100%;