openatc-components 0.0.25 → 0.0.26

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 (74) hide show
  1. package/config/index.js +1 -1
  2. package/package/kisscomps/components/ExpendConfig/ExpendConfig.vue +93 -0
  3. package/package/kisscomps/components/ExpendConfig/index.js +2 -0
  4. package/package/kisscomps/components/IntersectionMap/crossDirection/crossDiagram.vue +22 -0
  5. package/package/kisscomps/components/IntersectionMap/intersectionmap.vue +16 -12
  6. package/package/kisscomps/components/IntersectionWithInterface/IntersectionWithInterface.vue +244 -4
  7. package/package/kisscomps/components/KanBan/index.js +2 -0
  8. package/package/kisscomps/components/KanBan/kanban.vue +219 -0
  9. package/package/kisscomps/components/OverLap/OverLap.vue +11 -1
  10. package/package/kisscomps/components/PatternStatus/PatternStatus.vue +8 -1
  11. package/package/kisscomps/components/PhaseMarker/index.js +6 -0
  12. package/package/kisscomps/components/PhaseMarker/phasemarker.vue +215 -0
  13. package/package/kisscomps/components/PhaseMarker/svg/patternSvg.vue +121 -0
  14. package/package/kisscomps/components/PhaseMarker/svg/phase.vue +60 -0
  15. package/package/kisscomps/components/PhaseMarker/svg/phaseCount.vue +62 -0
  16. package/package/kisscomps/components/PhaseMarker/svg/phaseCountCycle.vue +62 -0
  17. package/package/kisscomps/components/PhaseMarker/svg/phaseSvg.vue +117 -0
  18. package/package/kisscomps/components/SchemeConfig/SchemeConfig.vue +30 -3
  19. package/package/kisscomps/components/SchemeConfig/manualControlModal/index.vue +21 -2
  20. package/package/kisscomps/components/SchemeConfig/realtimeStatusModal/index.vue +5 -47
  21. package/package/kisscomps/components/SchemeConfig/tentativeplancontrolmodal/index.vue +1304 -0
  22. package/package/kisscomps/components/StageBord/StageBord.vue +242 -0
  23. package/package/kisscomps/components/StageBord/index.js +2 -0
  24. package/package/kisscomps/components/StageStatus/StageStatus.vue +1 -1
  25. package/package/kisscomps/components/Stages/index.vue +86 -0
  26. package/package/kisscomps/components/overView/index.vue +656 -0
  27. package/package/kisscomps/index.js +15 -1
  28. package/package/kissui.min.js +1 -1
  29. package/package.json +2 -2
  30. package/src/api/authapi.js +1 -1
  31. package/src/i18n/language/en.js +4 -1
  32. package/src/i18n/language/zh.js +4 -1
  33. package/src/icons/svg/tentativeplan.svg +33 -0
  34. package/src/kisscomps/components/ExpendConfig/ExpendConfig.vue +93 -0
  35. package/src/kisscomps/components/ExpendConfig/index.js +2 -0
  36. package/src/kisscomps/components/IntersectionMap/crossDirection/crossDiagram.vue +22 -0
  37. package/src/kisscomps/components/IntersectionMap/intersectionmap.vue +16 -12
  38. package/src/kisscomps/components/IntersectionWithInterface/IntersectionWithInterface.vue +244 -4
  39. package/src/kisscomps/components/KanBan/index.js +2 -0
  40. package/src/kisscomps/components/KanBan/kanban.vue +219 -0
  41. package/src/kisscomps/components/OverLap/OverLap.vue +11 -1
  42. package/src/kisscomps/components/PatternStatus/PatternStatus.vue +8 -1
  43. package/src/kisscomps/components/PhaseMarker/index.js +6 -0
  44. package/src/kisscomps/components/PhaseMarker/phasemarker.vue +215 -0
  45. package/src/kisscomps/components/PhaseMarker/svg/patternSvg.vue +121 -0
  46. package/src/kisscomps/components/PhaseMarker/svg/phase.vue +60 -0
  47. package/src/kisscomps/components/PhaseMarker/svg/phaseCount.vue +62 -0
  48. package/src/kisscomps/components/PhaseMarker/svg/phaseCountCycle.vue +62 -0
  49. package/src/kisscomps/components/PhaseMarker/svg/phaseSvg.vue +117 -0
  50. package/src/kisscomps/components/SchemeConfig/SchemeConfig.vue +30 -3
  51. package/src/kisscomps/components/SchemeConfig/manualControlModal/index.vue +21 -2
  52. package/src/kisscomps/components/SchemeConfig/realtimeStatusModal/index.vue +5 -47
  53. package/src/kisscomps/components/SchemeConfig/tentativeplancontrolmodal/index.vue +1304 -0
  54. package/src/kisscomps/components/StageBord/StageBord.vue +242 -0
  55. package/src/kisscomps/components/StageBord/index.js +2 -0
  56. package/src/kisscomps/components/StageStatus/StageStatus.vue +1 -1
  57. package/src/kisscomps/components/Stages/index.vue +86 -0
  58. package/src/kisscomps/components/overView/index.vue +656 -0
  59. package/src/kisscomps/index.js +15 -1
  60. package/src/lib/publicjs/KissApi.js +2 -0
  61. package/src/main.js +2 -0
  62. package/src/router/index.js +15 -8
  63. package/src/utils/ControlFormat.js +68 -0
  64. package/src/utils/RingDataModel.js +1 -1
  65. package/src/utils/auth.js +8 -0
  66. package/src/views/home.vue +16 -1
  67. package/src/views/intersection.vue +188 -6
  68. package/src/views/overView.vue +33 -0
  69. package/src/views/schemeconfig.vue +6 -5
  70. package/static/styles/common.scss +2 -0
  71. package/static/styles/intersection.scss +18 -0
  72. package/static/styles/overview.scss +372 -0
  73. package/static/styles/schemeconfig.scss +99 -1
  74. package/static/styles/stages.scss +65 -0
@@ -0,0 +1,242 @@
1
+ <template>
2
+ <div class="components-container board">
3
+ <div class="common-board-column">
4
+ <div class="common-board-column-header" style="position:relative">
5
+ <span>{{$t('openatccomponents.pattern.stage')+(subIndex+1)}}</span>
6
+ <span v-if="contrloType" style="position: absolute;right: 0;">
7
+ <el-button type="primary" @click="deleteStage(subIndex)" icon="el-icon-close"></el-button>
8
+ </span>
9
+ </div>
10
+ <div
11
+ class="common-board-column-content"
12
+ :options="options">
13
+ <div class="stage-item" >
14
+ <el-row :gutter="0">
15
+ <el-col :span="12">
16
+ {{this.$t('openatccomponents.overview.phasesplit')}}
17
+ </el-col>
18
+ <el-col :span="12">
19
+ <el-input-number
20
+ v-if="contrloType"
21
+ :controls="false"
22
+ size="small"
23
+ :disabled="true"
24
+ ref="type"
25
+ v-model.number="stage.stageSplit">
26
+ </el-input-number>
27
+ <el-input-number
28
+ v-if="!contrloType"
29
+ :controls="false"
30
+ size="small"
31
+ v-model.number="stage.split"
32
+ ref="type"
33
+ :disabled="true"
34
+ @change="onSplitChange">
35
+ </el-input-number>
36
+ </el-col>
37
+ </el-row>
38
+ <el-row :gutter="0">
39
+ <el-col :span="12">
40
+ {{this.$t('openatccomponents.pattern.phase')}}
41
+ </el-col>
42
+ <el-col :span="12">
43
+ <el-select v-if="contrloType" v-model="stage.phases" multiple :placeholder="$t('openatccomponents.common.select')">
44
+ <el-option
45
+ v-for="item in coordphaseOption"
46
+ :key="item.value"
47
+ :label="$t('openatccomponents.pattern.phase') + item.value"
48
+ :value="item.value">
49
+ </el-option>
50
+ </el-select>
51
+ <el-input
52
+ v-if="!contrloType"
53
+ size="small"
54
+ :value="stage.stages.join(',')"
55
+ ref="type"
56
+ :disabled="true">
57
+ </el-input>
58
+ </el-col>
59
+ </el-row>
60
+ <el-row :gutter="0" v-if="contrloType">
61
+ <el-col :span="12">
62
+ {{this.$t('openatccomponents.pattern.green')}}
63
+ </el-col>
64
+ <el-col :span="12">
65
+ <el-input-number
66
+ size="small"
67
+ :controls="false"
68
+ v-model.number="stage.green"
69
+ @change="stageSplitChange">
70
+ </el-input-number>
71
+ </el-col>
72
+ </el-row>
73
+ <el-row :gutter="0" v-if="contrloType">
74
+ <el-col :span="12">
75
+ {{this.$t('openatccomponents.pattern.yellow')}}
76
+ </el-col>
77
+ <el-col :span="12">
78
+ <el-input-number
79
+ size="small"
80
+ :controls="false"
81
+ v-model.number="stage.yellow"
82
+ @change="stageSplitChange">
83
+ </el-input-number>
84
+ </el-col>
85
+ </el-row>
86
+ <el-row :gutter="0" v-if="contrloType">
87
+ <el-col :span="12">
88
+ {{this.$t('openatccomponents.pattern.red')}}
89
+ </el-col>
90
+ <el-col :span="12">
91
+ <el-input-number
92
+ size="small"
93
+ :controls="false"
94
+ v-model.number="stage.red"
95
+ @change="stageSplitChange">
96
+ </el-input-number>
97
+ </el-col>
98
+ </el-row>
99
+ </div>
100
+ </div>
101
+ </div>
102
+ </div>
103
+ </template>
104
+ <script>
105
+ import draggable from 'vuedraggable'
106
+
107
+ export default {
108
+ name: 'stage-board',
109
+ components: {
110
+ draggable
111
+ },
112
+ data () {
113
+ return {
114
+ }
115
+ },
116
+ props: {
117
+ // headerText: {
118
+ // type: String,
119
+ // default: 'Header'
120
+ // },
121
+ stageInfo: {
122
+ type: Array
123
+ },
124
+ coordphaseOption: {
125
+ type: Array,
126
+ default () {
127
+ return []
128
+ }
129
+ },
130
+ contrloType: {
131
+ type: Boolean,
132
+ default: false
133
+ },
134
+ options: {
135
+ type: Object,
136
+ default () {
137
+ return {}
138
+ }
139
+ },
140
+ stage: {
141
+ type: Object,
142
+ default () {
143
+ return {
144
+ split: 0,
145
+ stages: [],
146
+ phases: [],
147
+ stageSplit: 0,
148
+ green: 0,
149
+ yellow: 0,
150
+ red: 0,
151
+ delaystart: 0,
152
+ advanceend: 0
153
+ }
154
+ }
155
+ },
156
+ rowIndex: {
157
+ type: Number
158
+ },
159
+ subIndex: {
160
+ type: Number
161
+ }
162
+ },
163
+ created () {
164
+ },
165
+ watch: {
166
+ stage: {
167
+ handler: function () {
168
+ if (this.contrloType) {
169
+ let n = this.rowIndex
170
+ const globalParamModel = this.$store.getters.globalParamModel
171
+ let pattern = globalParamModel.getParamsByType('patternList')[n]
172
+ globalParamModel.getParamsByType('patternList')[n].cycle = this.getMaxCycle(pattern)
173
+ }
174
+ },
175
+ deep: true
176
+ }
177
+ },
178
+ mounted () {
179
+ },
180
+ methods: {
181
+ deleteStage (index) {
182
+ this.stageInfo.splice(index, 1)
183
+ },
184
+ getMaxCycle (pattern) {
185
+ let rings = pattern.stagesList
186
+ let stageCycleList = rings.map(item => {
187
+ return item.stageSplit
188
+ })
189
+ let maxCycle = stageCycleList.reduce((a, b) => {
190
+ return a + b
191
+ }, 0)
192
+ return maxCycle
193
+ },
194
+ onSplitChange (newVal, oldVal) {
195
+ let diff = newVal - (oldVal || 0)
196
+ if (diff === 0) {
197
+ return false
198
+ }
199
+ this.$emit('onStageSplitChange', diff, this.rowIndex, this.subIndex)
200
+ },
201
+ stageSplitChange (newVal, oldVal) {
202
+ let diff = newVal - (oldVal || 0)
203
+ if (diff === 0) {
204
+ return false
205
+ }
206
+ this.$emit('stageSplitChange', diff, this.rowIndex, this.subIndex)
207
+ },
208
+ onDelaystartChange (newVal, oldVal) {
209
+ let diff = newVal - (oldVal || 0)
210
+ if (diff === 0) {
211
+ return false
212
+ }
213
+ this.$emit('onStageDelaystartChange', diff, this.rowIndex, this.subIndex)
214
+ },
215
+ onAdvanceendChange (newVal, oldVal) {
216
+ let diff = newVal - (oldVal || 0)
217
+ if (diff === 0) {
218
+ return false
219
+ }
220
+ this.$emit('onStageAdvanceendChange', diff, this.rowIndex, this.subIndex)
221
+ }
222
+ }
223
+ }
224
+ </script>
225
+ <style lang="scss" scoped>
226
+ .stage-item {
227
+ cursor: pointer;
228
+ width: 100%;
229
+ height: auto;
230
+ margin: 5px 0;
231
+ line-height: 40px;
232
+ padding: 1px 1px;
233
+ box-sizing: border-box;
234
+ }
235
+ .el-button--primary:hover, .el-button--primary:focus{
236
+ background: #409EFF;
237
+ border-color: #409EFF;
238
+ color: #FFFFFF;
239
+ }
240
+ </style>
241
+ <style lang="scss">
242
+ </style>
@@ -0,0 +1,2 @@
1
+ import StageBord from './StageBord.vue'
2
+ export default StageBord
@@ -23,7 +23,7 @@
23
23
  <script>
24
24
 
25
25
  export default {
26
- name: 'stagestatus',
26
+ name: 'stage-status',
27
27
  components: {},
28
28
  data () {
29
29
  return {
@@ -0,0 +1,86 @@
1
+ /**
2
+ * Copyright (c) 2020 kedacom
3
+ * OpenATC is licensed under Mulan PSL v2.
4
+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
5
+ * You may obtain a copy of Mulan PSL v2 at:
6
+ * http://license.coscl.org.cn/MulanPSL2
7
+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
8
+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
9
+ * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
10
+ * See the Mulan PSL v2 for more details.
11
+ **/
12
+ <template>
13
+ <div id="intersection-stages" class="intersection-stages">
14
+ <!-- <div class="cross-content"><div style="float: left;" class="cross-name">{{'当前阶段'}}:</div> -->
15
+ <div style="margin-left: 10PX;" >
16
+ <div style="width: 100%; height: auto;">
17
+ <div class="control-model" v-for="(item, index) in stagesList" :key="index">
18
+ <div style="position:relative;" :style="singleStyle" class="single-model" @click="selectStages(index + 1)" :class="currentStage == index + 1 ? 'single-model-select' : ''">
19
+ <template v-for="(side, index) in item[0].sidewalkPhaseData" >
20
+ <PatternWalkSvg class="patternWalk" v-if="item[0].peddirection.includes(side.id)" :key="side.key + '-' + index" :Data="side" :Width="'55'" :Height="'55'" />
21
+ </template>
22
+ <xdr-dir-selector Width="40PX" Height="40PX" :showlist="item"></xdr-dir-selector>
23
+ <div style="display:flex;flex-direction:row;justify-content:center;align-items:center;">
24
+ <div class="current-stage-num" style="width:20%;">{{index + 1}}</div>
25
+ <div style="width:70%;">
26
+ <i class="iconfont icon-BRT" style="font-size:11PX;color:#606266;" v-if="item[item.length-1].controltype === 4"></i>
27
+ <i class="iconfont icon-feijidongche" style="font-size:11PX;color:#606266;" v-if="item[item.length-1].controltype === 6"></i>
28
+ <i class="iconfont icon-gongjiaoche" style="font-size:11PX;color:#606266;" v-if="item[item.length-1].controltype === 3"></i>
29
+ <i class="iconfont icon-youguidianche" style="font-size:11PX;color:#606266;" v-if="item[item.length-1].controltype === 5"></i>
30
+ </div>
31
+ </div>
32
+ </div>
33
+ </div>
34
+ </div>
35
+ </div>
36
+ </div>
37
+ </template>
38
+
39
+ <script>
40
+ /* eslint-disable */
41
+ import PatternWalkSvg from '../IntersectionMap/crossDirection/baseImg/PatternWalkSvg'
42
+ export default {
43
+ name: 'Stages',
44
+ components: {
45
+ PatternWalkSvg
46
+ },
47
+ props: {
48
+ stagesList: {
49
+ type: Array,
50
+ default: []
51
+ },
52
+ currentStage: {
53
+ type: Number,
54
+ default: -1
55
+ },
56
+ StageWidth: {
57
+ type: String,
58
+ default: '70px'
59
+ },
60
+ StageHeight: {
61
+ type: String,
62
+ default: '65px'
63
+ }
64
+ },
65
+ data () {
66
+ return {
67
+ };
68
+ },
69
+ computed: {
70
+ singleStyle () {
71
+ return {
72
+ width: this.StageWidth,
73
+ height: this.StageHeight
74
+ }
75
+ }
76
+ },
77
+ methods: {
78
+ selectStages (value) {
79
+ this.currentStage = value
80
+ this.$emit('onSelectStages', value)
81
+ }
82
+ },
83
+ mounted () {
84
+ }
85
+ };
86
+ </script>