openatc-components 0.0.1 → 0.0.2

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 (154) hide show
  1. package/.babelrc +18 -18
  2. package/.editorconfig +9 -9
  3. package/.eslintignore +5 -5
  4. package/.eslintrc.js +29 -29
  5. package/.postcssrc.js +10 -10
  6. package/README.md +30 -30
  7. package/build/build.js +41 -41
  8. package/build/check-versions.js +54 -54
  9. package/build/package.config.js +58 -58
  10. package/build/package.dev.config.js +25 -25
  11. package/build/package.prod.config.js +60 -60
  12. package/build/utils.js +101 -101
  13. package/build/vue-loader.conf.js +22 -22
  14. package/build/webpack.base.conf.js +109 -109
  15. package/build/webpack.dev.conf.js +95 -95
  16. package/build/webpack.prod.conf.js +149 -149
  17. package/config/dev.env.js +7 -7
  18. package/config/index.js +76 -76
  19. package/config/prod.env.js +4 -4
  20. package/config/test.env.js +7 -7
  21. package/index.html +12 -12
  22. package/package/kisscomps/components/CircleMenu/KissCircleMenu.vue +398 -398
  23. package/package/kisscomps/components/CircleMenu/index.js +2 -2
  24. package/package/kisscomps/components/DashBoard/MakeGradientColor.js +84 -84
  25. package/package/kisscomps/components/DashBoard/dashboard.js +471 -471
  26. package/package/kisscomps/components/DashBoard/dashboard.vue +57 -57
  27. package/package/kisscomps/components/DashBoard/index.js +2 -2
  28. package/package/kisscomps/components/Horizontal/KissHorizontal.vue +146 -146
  29. package/package/kisscomps/components/Horizontal/index.js +2 -2
  30. package/package/kisscomps/components/HorizontalChildren/KissHorizontalChildren.vue +196 -196
  31. package/package/kisscomps/components/HorizontalChildren/index.js +2 -2
  32. package/package/kisscomps/components/KissCircleMenu/CircleMenu.vue +113 -113
  33. package/package/kisscomps/components/KissCircleMenu/index.js +2 -2
  34. package/package/kisscomps/components/KissCircleMenu/style/index.less +1 -1
  35. package/package/kisscomps/components/KissCircleMenu/style/main/core.less +161 -161
  36. package/package/kisscomps/components/KissCircleMenu/style/main/other.less +94 -94
  37. package/package/kisscomps/components/KissCircleMenu/style/mixin/mixin.less +36 -36
  38. package/package/kisscomps/components/KissCircleMenu/style/var/var.less +21 -21
  39. package/package/kisscomps/components/KissCircleMenu/utils/colorRE.js +5 -5
  40. package/package/kisscomps/components/KissMessageBox/KissMessageBox.vue +108 -108
  41. package/package/kisscomps/components/KissMessageBox/index.js +2 -2
  42. package/package/kisscomps/components/KissSearchInput/index.js +2 -2
  43. package/package/kisscomps/components/KissSearchInput/kisssearchinput.vue +77 -77
  44. package/package/kisscomps/components/KissSimulationProgress/KissSimulationProgress.vue +294 -294
  45. package/package/kisscomps/components/KissSimulationProgress/index.js +2 -2
  46. package/package/kisscomps/components/StatusBar/StatusBar.vue +222 -222
  47. package/package/kisscomps/components/StatusBar/index.js +2 -2
  48. package/package/kisscomps/components/TragResize/index.js +2 -2
  49. package/package/kisscomps/components/TragResize/kissdragresize.vue +536 -536
  50. package/package/kisscomps/components/TragResize/util/dom.js +23 -23
  51. package/package/kisscomps/components/TragResize/util/fns.js +3 -3
  52. package/package/kisscomps/components/XRDDirSelector/XRDDirSelector.1.vue +320 -320
  53. package/package/kisscomps/components/XRDDirSelector/XRDDirSelector.vue +345 -345
  54. package/package/kisscomps/components/XRDDirSelector/index.js +2 -2
  55. package/package/kisscomps/components/button/index.js +2 -2
  56. package/package/kisscomps/components/button/kissbutton.vue +168 -168
  57. package/package/kisscomps/components/compass3D/compass.vue +180 -180
  58. package/package/kisscomps/components/compass3D/index.js +2 -2
  59. package/package/kisscomps/components/header/index.js +2 -2
  60. package/package/kisscomps/components/header/kissHead.vue +83 -83
  61. package/package/kisscomps/components/horizontalMenu/index.js +2 -2
  62. package/package/kisscomps/components/horizontalMenu/kissHorizontalMenu.vue +254 -254
  63. package/package/kisscomps/components/input/index.js +2 -2
  64. package/package/kisscomps/components/input/kissinput.vue +57 -57
  65. package/package/kisscomps/components/menu/index.js +2 -2
  66. package/package/kisscomps/components/menu/kissmenu.vue +324 -324
  67. package/package/kisscomps/components/mutipletips/Tdrag.js +585 -585
  68. package/package/kisscomps/components/mutipletips/index.js +2 -2
  69. package/package/kisscomps/components/mutipletips/kissmutipletips.vue +192 -192
  70. package/package/kisscomps/components/panel/index.js +2 -2
  71. package/package/kisscomps/components/panel/kissPanel.vue +151 -151
  72. package/package/kisscomps/components/select/chosen.jquery.min.js +3 -3
  73. package/package/kisscomps/components/select/index.js +2 -2
  74. package/package/kisscomps/components/select/kissselect.vue +527 -527
  75. package/package/kisscomps/components/tablebutton/index.js +2 -2
  76. package/package/kisscomps/components/tablebutton/tablebutton.vue +97 -97
  77. package/package/kisscomps/components/timectrl/KissTimeCtrl.vue +67 -67
  78. package/package/kisscomps/components/timectrl/index.js +2 -2
  79. package/package/kisscomps/components/timectrl/timectrl.css +851 -851
  80. package/package/kisscomps/components/tip/Tdrag.js +585 -585
  81. package/package/kisscomps/components/tip/index.js +2 -2
  82. package/package/kisscomps/components/tip/kisstips.1.vue +154 -154
  83. package/package/kisscomps/components/tip/kisstips.vue +154 -154
  84. package/package/kisscomps/components/tip/kisstips.vue.bak +211 -211
  85. package/package/kisscomps/index.js +71 -71
  86. package/package/kissui.js +203 -203
  87. package/package/kissui.min.js +203 -203
  88. package/package.json +1 -1
  89. package/src/App.vue +25 -25
  90. package/src/kisscomps/components/CircleMenu/KissCircleMenu.vue +398 -398
  91. package/src/kisscomps/components/CircleMenu/index.js +2 -2
  92. package/src/kisscomps/components/DashBoard/MakeGradientColor.js +84 -84
  93. package/src/kisscomps/components/DashBoard/dashboard.js +471 -471
  94. package/src/kisscomps/components/DashBoard/dashboard.vue +57 -57
  95. package/src/kisscomps/components/DashBoard/index.js +2 -2
  96. package/src/kisscomps/components/KissCircleMenu/CircleMenu.vue +113 -113
  97. package/src/kisscomps/components/KissCircleMenu/index.js +2 -2
  98. package/src/kisscomps/components/KissCircleMenu/style/index.less +1 -1
  99. package/src/kisscomps/components/KissCircleMenu/style/main/core.less +161 -161
  100. package/src/kisscomps/components/KissCircleMenu/style/main/other.less +94 -94
  101. package/src/kisscomps/components/KissCircleMenu/style/mixin/mixin.less +36 -36
  102. package/src/kisscomps/components/KissCircleMenu/style/var/var.less +21 -21
  103. package/src/kisscomps/components/KissCircleMenu/utils/colorRE.js +5 -5
  104. package/src/kisscomps/components/KissSearchInput/index.js +2 -2
  105. package/src/kisscomps/components/KissSearchInput/kisssearchinput.vue +77 -77
  106. package/src/kisscomps/components/SchemeConfig/closePhaselControlModal/index.vue +193 -0
  107. package/src/kisscomps/components/SchemeConfig/index.js +2 -0
  108. package/src/kisscomps/components/SchemeConfig/lockingPhaselControlModal/index.vue +214 -0
  109. package/src/kisscomps/components/SchemeConfig/manualControlModal/index.vue +176 -0
  110. package/src/kisscomps/components/SchemeConfig/realtimeStatusModal/index.vue +294 -0
  111. package/src/kisscomps/components/SchemeConfig/schemeconfig.vue +711 -0
  112. package/src/kisscomps/components/StatusBar/StatusBar.vue +222 -222
  113. package/src/kisscomps/components/StatusBar/index.js +2 -2
  114. package/src/kisscomps/components/TragResize/index.js +2 -2
  115. package/src/kisscomps/components/TragResize/kissdragresize.vue +536 -536
  116. package/src/kisscomps/components/XRDDirSelector/XRDDirSelector.1.vue +320 -320
  117. package/src/kisscomps/components/XRDDirSelector/XRDDirSelector.vue +345 -345
  118. package/src/kisscomps/components/XRDDirSelector/index.js +2 -2
  119. package/src/kisscomps/components/button/index.js +2 -2
  120. package/src/kisscomps/components/button/kissbutton.vue +168 -168
  121. package/src/kisscomps/components/compass3D/compass.vue +180 -180
  122. package/src/kisscomps/components/compass3D/index.js +2 -2
  123. package/src/kisscomps/components/horizontalMenu/index.js +2 -2
  124. package/src/kisscomps/components/horizontalMenu/kissHorizontalMenu.vue +254 -254
  125. package/src/kisscomps/components/input/index.js +2 -2
  126. package/src/kisscomps/components/input/kissinput.vue +57 -57
  127. package/src/kisscomps/components/menu/index.js +2 -2
  128. package/src/kisscomps/components/menu/kissmenu.vue +324 -324
  129. package/src/kisscomps/components/mutipletips/Tdrag.js +585 -585
  130. package/src/kisscomps/components/mutipletips/index.js +2 -2
  131. package/src/kisscomps/components/mutipletips/kissmutipletips.vue +192 -192
  132. package/src/kisscomps/components/select/chosen.jquery.min.js +3 -3
  133. package/src/kisscomps/components/select/index.js +2 -2
  134. package/src/kisscomps/components/select/kissselect.vue +527 -527
  135. package/src/kisscomps/components/timectrl/KissTimeCtrl.vue +67 -67
  136. package/src/kisscomps/components/timectrl/index.js +2 -2
  137. package/src/kisscomps/components/tip/Tdrag.js +585 -585
  138. package/src/kisscomps/components/tip/index.js +2 -2
  139. package/src/kisscomps/components/tip/kisstips.1.vue +154 -154
  140. package/src/kisscomps/components/tip/kisstips.vue +154 -154
  141. package/src/kisscomps/components/tip/kisstips.vue.bak +211 -211
  142. package/src/kisscomps/index.js +73 -71
  143. package/src/main.js +23 -23
  144. package/src/router/index.js +15 -15
  145. package/src/views/home.1.vue +479 -479
  146. package/src/views/home.vue +196 -196
  147. package/test/e2e/custom-assertions/elementCount.js +27 -27
  148. package/test/e2e/nightwatch.conf.js +46 -46
  149. package/test/e2e/runner.js +48 -48
  150. package/test/e2e/specs/test.js +19 -19
  151. package/test/unit/.eslintrc +7 -7
  152. package/test/unit/jest.conf.js +30 -30
  153. package/test/unit/setup.js +3 -3
  154. package/test/unit/specs/HelloWorld.spec.js +11 -11
@@ -0,0 +1,214 @@
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 class="manual-control-modal lockingphase-control">
14
+ <div class="title" style="margin-bottom: 18px;">{{$t('edge.overview.phaselocking')}}</div>
15
+ <el-row>
16
+ <el-col :span="24">
17
+ <el-form
18
+ :inline="true"
19
+ ref="manual"
20
+ label-position="left"
21
+ :model="manualInfo"
22
+ label-width="100px">
23
+ <el-form-item
24
+ :label="$t('edge.phase.greenclear') + ':'"
25
+ prop="intersection">
26
+ <el-input-number :min="0" :max="65535" :precision="0" :step="1" :controls="false" v-model.number="manualInfo.tempGreenflash" size="mini"></el-input-number>
27
+ </el-form-item>
28
+ <el-form-item
29
+ :label="$t('edge.overview.duration') + ':'"
30
+ prop="count">
31
+ <el-input-number :min="0" :max="65535" :precision="0" :step="1" :controls="false" v-model.number="manualInfo.tempDuration" size="mini"></el-input-number>
32
+ </el-form-item>
33
+ <el-form-item
34
+ :label="$t('edge.overview.yellowflash') + ':'"
35
+ prop="intersection">
36
+ <el-input-number :min="0" :max="65535" :precision="0" :step="1" :controls="false" v-model.number="manualInfo.tempYellow" size="mini"></el-input-number>
37
+ </el-form-item>
38
+ <el-form-item
39
+ :label="$t('edge.overview.allred') + ':'"
40
+ prop="intersection">
41
+ <el-input-number :min="0" :max="65535" :precision="0" :step="1" :controls="false" v-model.number="manualInfo.tempRedclear" size="mini"></el-input-number>
42
+ </el-form-item>
43
+ <el-form-item
44
+ :label="$t('edge.phase.mingreen') + ':'"
45
+ prop="count">
46
+ <el-input-number :min="0" :max="65535" :precision="0" :step="1" :controls="false" v-model.number="manualInfo.tempMingreen" size="mini"></el-input-number>
47
+ </el-form-item>
48
+ </el-form>
49
+ </el-col>
50
+ </el-row>
51
+ <el-row>
52
+ <div class="model-label">{{$t('edge.overview.mode')}}:</div>
53
+ <div style="width: 100%; overflow: hidden;margin-top: 20px;">
54
+ <CommonKanban
55
+ v-for="ring in closePhaseRings"
56
+ :key="ring.num" class="closephasekanban"
57
+ :list="ring.phases"
58
+ :header-text="$t('edge.pattern.ring') + ring.num"
59
+ :Draggable="false"
60
+ @handleSort="handleSort">
61
+ <template v-slot:kanbantitle>
62
+ <div class="col-title" v-text="$t('edge.overview.closemode')"></div>
63
+ </template>
64
+ <template v-slot:kanbancontent="data">
65
+ <el-select v-model="data.element.locktype" class="col-inner" size="small" :placeholder="$t('edge.common.select')">
66
+ <el-option
67
+ v-for="item in lockingOption"
68
+ :key="item.value"
69
+ :label="$t('edge.overview.lockingOption' + item.value)"
70
+ :value="item.value">
71
+ </el-option>
72
+ </el-select>
73
+ </template>
74
+ </CommonKanban>
75
+ </div>
76
+ </el-row>
77
+ <div class="footer" v-if="realtimeStatusModalvisible">
78
+ <el-button @click="handleClose()">{{$t('edge.button.Back')}}</el-button>
79
+ <el-button type="primary" @click="handleManualControl()">{{$t('edge.overview.implement')}}</el-button>
80
+ </div>
81
+ <div class="footer" v-if="!realtimeStatusModalvisible">
82
+ <el-button @click="handleClose()">{{$t('edge.button.Back')}}</el-button>
83
+ <el-button type="primary" @click="handleManualControl()">{{$t('edge.overview.comfirm')}}</el-button>
84
+ </div>
85
+ </div>
86
+ </template>
87
+
88
+ <script>
89
+ import CommonKanban from '../../../components/CommonKanban'
90
+ export default {
91
+ name: 'closePhaselControl',
92
+ components: {
93
+ CommonKanban
94
+ },
95
+ props: {
96
+ Visible: {
97
+ type: Boolean
98
+ },
99
+ controlData: {
100
+ type: Object
101
+ },
102
+ modelList: {
103
+ type: Array
104
+ },
105
+ stagesList: {
106
+ type: Array
107
+ },
108
+ currModel: {
109
+ type: Number
110
+ },
111
+ preselectModel: {
112
+ type: Number
113
+ },
114
+ currentStage: {
115
+ type: Number
116
+ },
117
+ preselectStages: {
118
+ type: Number
119
+ },
120
+ specialcontrolList: {
121
+ type: Array
122
+ },
123
+ closePhaseRings: {
124
+ type: Array
125
+ },
126
+ realtimeStatusModalvisible: {
127
+ type: Boolean,
128
+ default: true
129
+ }
130
+ },
131
+ data () {
132
+ return {
133
+ visible: this.Visible,
134
+ manualInfo: {
135
+ tempGreenflash: 6,
136
+ tempDuration: 600, // 控制方式手动操作的情况下的持续时间的临时值。
137
+ tempYellow: 3,
138
+ tempRedclear: 2,
139
+ tempMingreen: 15
140
+ },
141
+ lockingOption: [{
142
+ value: 0
143
+ }, {
144
+ value: 1
145
+ }, {
146
+ value: 2
147
+ }, {
148
+ value: 3
149
+ }]
150
+ }
151
+ },
152
+ methods: {
153
+ handleClose () {
154
+ this.$emit('closePhaseBack')
155
+ },
156
+ handleManualControl () {
157
+ let submitdata = {
158
+ control: 22,
159
+ data: {}
160
+ }
161
+ if (this.manualInfo.tempGreenflash !== undefined) {
162
+ submitdata.data.greenflash = Number(this.manualInfo.tempGreenflash)
163
+ }
164
+ if (this.manualInfo.tempDuration !== undefined) {
165
+ submitdata.data.duration = Number(this.manualInfo.tempDuration)
166
+ }
167
+ if (this.manualInfo.tempYellow !== undefined) {
168
+ submitdata.data.yellow = Number(this.manualInfo.tempYellow)
169
+ }
170
+ if (this.manualInfo.tempRedclear !== undefined) {
171
+ submitdata.data.redclear = Number(this.manualInfo.tempRedclear)
172
+ }
173
+ if (this.manualInfo.tempMingreen !== undefined) {
174
+ submitdata.data.mingreen = Number(this.manualInfo.tempMingreen)
175
+ }
176
+ submitdata.data.phases = this.handleSubmitPhaseLocking()
177
+ this.$emit('closePhaseControl', submitdata)
178
+ },
179
+ handleSubmitPhaseLocking () {
180
+ let allRingsPhases = []
181
+ for (let i = 0; i < this.closePhaseRings.length; i++) {
182
+ let ring = this.closePhaseRings[i]
183
+ let phase = ring.phases
184
+ for (let j = 0; j < phase.length; j++) {
185
+ let obj = {}
186
+ obj.id = phase[j].id
187
+ obj.type = phase[j].locktype
188
+ allRingsPhases.push(obj)
189
+ }
190
+ }
191
+ return allRingsPhases
192
+ },
193
+ handleSort (sortedlist) {
194
+ // 重新排序数据
195
+ let ringid = sortedlist[0].ring
196
+ for (let i = 0; i < this.closePhaseRings.length; i++) {
197
+ if (ringid === this.closePhaseRings[i].num) {
198
+ this.closePhaseRings[i].phases = sortedlist
199
+ }
200
+ }
201
+ }
202
+ }
203
+ }
204
+ </script>
205
+ <style lang="scss" scoped>
206
+ .col-inner {
207
+ width: 100%;
208
+ float: left;
209
+ }
210
+ .col-title {
211
+ width: 100%;
212
+ float: left;
213
+ }
214
+ </style>
@@ -0,0 +1,176 @@
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 class="manual-control-modal">
14
+ <div class="title" style="margin-bottom: 18px;">{{$t('edge.overview.manual')}}</div>
15
+ <el-row>
16
+ <el-col :span="24">
17
+ <el-form
18
+ ref="manual"
19
+ label-position="left"
20
+ :model="manualInfo"
21
+ label-width="100px">
22
+ <el-form-item
23
+ :label="$t('edge.overview.controlnumber') + ':'"
24
+ prop="shape">
25
+ <el-input-number v-model="manualInfo.tempPatternid" :controls="false" size="mini" :max="65535" :min="0" :precision="0" :step="1" :placeholder="$t('edge.common.input')"></el-input-number>
26
+ </el-form-item>
27
+ <el-form-item
28
+ :label="$t('edge.overview.delay') + ':'"
29
+ prop="intersection">
30
+ <el-input-number v-model="manualInfo.tempDelay" :controls="false" size="mini" :max="65535" :min="0" :precision="0" :step="1" :placeholder="$t('edge.common.input')"></el-input-number>
31
+ </el-form-item>
32
+ <el-form-item
33
+ :label="$t('edge.overview.duration') + ':'"
34
+ prop="count">
35
+ <el-input-number v-model="manualInfo.tempDuration" :controls="false" size="mini" :max="65535" :min="0" :precision="0" :step="1" :placeholder="$t('edge.common.input')"></el-input-number>
36
+ </el-form-item>
37
+ </el-form>
38
+ </el-col>
39
+ </el-row>
40
+ <el-row>
41
+ <div class="model-label">{{$t('edge.overview.mode')}}:</div>
42
+ <div style="width: 100%; overflow: hidden;">
43
+ <div class="control-model" v-for="(item, index) in modelList" :key="index">
44
+ <div class="single-model"
45
+ @click="selectModel(item.id)"
46
+ :class="(preselectModel == item.id && preselectStages == -1)? 'single-model-select' : ''"
47
+ v-if="FuncSort === 'allFunc' || (FuncSort === 'basicFunc'&& basicFuncControlId.indexOf(item.id) !== -1)">
48
+ <svg-icon :icon-class="item.iconClass" className="model-icon"></svg-icon>
49
+ <div class="single-model-name">{{$t('edge.overview.modelList' + item.id)}}</div>
50
+ </div>
51
+ </div>
52
+ </div>
53
+ <div class="stage-label">{{$t('edge.overview.stage')}}:</div>
54
+ <div style="width: 100%; height: auto;overflow: hidden;">
55
+ <div class="control-model" v-for="(item, index) in stagesList" :key="index">
56
+ <div class="single-model" @click="selectStages(index + 1)" :class="preselectStages == index + 1 ? 'single-model-select' : ''">
57
+ <xdrdirselector Width="40px" Height="40px" :showlist="item"></xdrdirselector>
58
+ <div style="display:flex;flex-direction:row;justify-content:center;align-items:center;">
59
+ <div class="current-stage-num" style="width:20%;">{{index + 1}}</div>
60
+ <div style="width:70%;">
61
+ <i class="iconfont icon-BRT" style="font-size:11PX;color:#606266;" v-if="item[item.length-1].controltype === 4"></i>
62
+ <i class="iconfont icon-feijidongche" style="font-size:11PX;color:#606266;" v-if="item[item.length-1].controltype === 6"></i>
63
+ <i class="iconfont icon-gongjiaoche" style="font-size:11PX;color:#606266;" v-if="item[item.length-1].controltype === 3"></i>
64
+ <i class="iconfont icon-youguidianche" style="font-size:11PX;color:#606266;" v-if="item[item.length-1].controltype === 5"></i>
65
+ </div>
66
+ </div>
67
+ </div>
68
+ </div>
69
+ </div>
70
+ <div class="stage-label" v-if="FuncSort === 'allFunc'">{{$t('edge.overview.specialcontrol')}}:</div>
71
+ <div style="width: 100%; height: auto;overflow: hidden;" v-if="FuncSort === 'allFunc'">
72
+ <div class="control-model" v-for="(item, index) in specialcontrolList" :key="index">
73
+ <div class="single-model" @click="selectSpecialStages(item.id)">
74
+ <svg-icon :icon-class="item.iconClass" className="closephase-icon"></svg-icon>
75
+ <div class="single-model-name">{{$t('edge.overview.modelList' + item.id)}}</div>
76
+ </div>
77
+ </div>
78
+ </div>
79
+ </el-row>
80
+ <div class="footer" v-if="realtimeStatusModalvisible">
81
+ <el-button @click="handleClose()">{{$t('edge.button.Back')}}</el-button>
82
+ <el-button type="primary" @click="handleManualControl()">{{$t('edge.overview.implement')}}</el-button>
83
+ </div>
84
+ <div class="footer" v-if="!realtimeStatusModalvisible">
85
+ <el-button type="primary" @click="handleManualControl()">{{$t('edge.overview.comfirm')}}</el-button>
86
+ </div>
87
+ </div>
88
+ </template>
89
+
90
+ <script>
91
+ import xdrdirselector from '@/components/XRDDirSelector'
92
+ import { mapState } from 'vuex'
93
+ export default {
94
+ name: 'manualControl',
95
+ components: {
96
+ xdrdirselector
97
+ },
98
+ props: {
99
+ Visible: {
100
+ type: Boolean
101
+ },
102
+ controlData: {
103
+ type: Object
104
+ },
105
+ modelList: {
106
+ type: Array
107
+ },
108
+ stagesList: {
109
+ type: Array
110
+ },
111
+ currModel: {
112
+ type: Number
113
+ },
114
+ preselectModel: {
115
+ type: Number
116
+ },
117
+ currentStage: {
118
+ type: Number
119
+ },
120
+ preselectStages: {
121
+ type: Number
122
+ },
123
+ specialcontrolList: {
124
+ type: Array
125
+ },
126
+ realtimeStatusModalvisible: {
127
+ type: Boolean,
128
+ default: true
129
+ }
130
+ },
131
+ computed: {
132
+ ...mapState({
133
+ FuncSort: state => state.globalParam.FuncSort
134
+ })
135
+ },
136
+ data () {
137
+ return {
138
+ basicFuncControlId: [0, 1, 4, 5], // 基础功能包含的控制方式: 自主控制(手动下)、黄闪、步进、定周期
139
+ visible: this.Visible,
140
+ manualInfo: {
141
+ tempPatternid: 0, // 控制方式手动操作的情况下的控制编号的临时值。
142
+ tempDelay: 0, // 控制方式手动操作的情况下的延迟时间的临时值。
143
+ tempDuration: 300 // 控制方式手动操作的情况下的持续时间的临时值。
144
+ }
145
+ }
146
+ },
147
+ methods: {
148
+ handleClose () {
149
+ this.$emit('closeManualModal')
150
+ },
151
+ handleManualControl () {
152
+ this.$emit('patternCommit', this.manualInfo)
153
+ },
154
+ selectModel (id) {
155
+ this.$emit('selectModel', id)
156
+ },
157
+ selectStages (value) {
158
+ this.$emit('selectStages', value)
159
+ },
160
+ selectSpecialStages (id) {
161
+ this.$emit('selectSpecialModel', id)
162
+ }
163
+ },
164
+ mounted () {
165
+ if (this.controlData.patternid) {
166
+ this.manualInfo.tempPatternid = this.controlData.patternid
167
+ }
168
+ if (this.controlData.tempDelay) {
169
+ this.manualInfo.tempDelay = this.controlData.delay
170
+ }
171
+ if (this.controlData.tempDuration) {
172
+ this.manualInfo.tempDuration = this.controlData.duration
173
+ }
174
+ }
175
+ }
176
+ </script>
@@ -0,0 +1,294 @@
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>
14
+ <div class="cross-mess" style="margin-bottom: 18px;">{{$t('edge.overview.crossinfo')}}</div>
15
+ <div class="cross-module">
16
+ <div class="cross-content">
17
+ <div style="float: left;" class="cross-name">{{$t('edge.overview.crossname')}}:</div>
18
+ <div style="margin-left: 85px;" class="cross-value">{{agentName}}</div>
19
+ </div>
20
+ <div class="cross-content">
21
+ <div style="float: left;" class="cross-name">{{$t('edge.overview.divicestate')}}:</div>
22
+ <div
23
+ v-show="devStatus===3"
24
+ style="margin-left: 85px;"
25
+ class="cross-value"
26
+ >{{$t('edge.overview.connected')}}</div>
27
+ <div
28
+ v-show="devStatus===2"
29
+ style="margin-left: 85px;"
30
+ class="cross-value"
31
+ >{{$t('edge.overview.offline')}}</div>
32
+ <div
33
+ v-show="devStatus===1"
34
+ style="margin-left: 85px;"
35
+ class="cross-value"
36
+ >{{$t('edge.overview.onlineing')}}</div>
37
+ </div>
38
+ <!-- <div class="cross-content"><div style="float: left;" class="cross-name">{{$t('edge.overview.protocoltype')}}:</div><div style="margin-left: 85px;" class="cross-value">{{protocol}}</div></div> -->
39
+ <!-- <div class="cross-content"><div style="float: left;" class="cross-name">信号机型号:</div><div style="margin-left: 85px;" class="cross-value">XHJ-CW-GA-KSS100</div></div> -->
40
+ <div class="cross-content">
41
+ <div style="float: left;" class="cross-name">{{$t('edge.overview.signalID')}}:</div>
42
+ <div style="margin-left: 85px;" class="cross-value">{{agentId}}</div>
43
+ </div>
44
+ <div class="cross-content">
45
+ <div style="float: left;" class="cross-name">{{$t('edge.overview.signalIP')}}:</div>
46
+ <div style="margin-left: 85px;" class="cross-value">{{ip}}</div>
47
+ </div>
48
+ <div class="cross-content" v-if="platform">
49
+ <div style="float: left;" class="cross-name">{{$t('edge.overview.platform')}}:</div>
50
+ <div style="margin-left: 85px;" class="cross-value">{{platform}}</div>
51
+ </div>
52
+ <div class="cross-content">
53
+ <div style="float: left;" class="cross-name">{{$t('edge.overview.faultinfo')}}:</div>
54
+ <div style="margin-left: 85px;" v-if="curFaultList.length">
55
+ <el-tag v-if="confirmedFault.length" type="success">
56
+ {{$t('edge.overview.confirmed')}}
57
+ <span style="margin: 0 2px;">{{confirmedFault.length}}</span>
58
+ </el-tag>
59
+ <el-tag v-if="untreatedFault.length">
60
+ {{$t('edge.overview.untreated')}}
61
+ <span style="margin: 0 2px;">{{untreatedFault.length}}</span>
62
+ </el-tag>
63
+ <el-tag v-if="ignoredFault.length" type="info">
64
+ {{$t('edge.overview.ignored')}}
65
+ <span style="margin: 0 2px;">{{ignoredFault.length}}</span>
66
+ </el-tag>
67
+ <span class="fault-detail-btn" @click="showFaultDetail">{{$t('edge.overview.details')}} >></span>
68
+ </div>
69
+ <div
70
+ style="margin-left: 85px;"
71
+ class="cross-value"
72
+ v-if="!curFaultList.length"
73
+ >{{$t('edge.overview.nofault')}}</div>
74
+ </div>
75
+ </div>
76
+ <div class="control-bottom">
77
+ <div
78
+ class="cross-mess"
79
+ style="float: left;margin-top: 40px;margin-bottom: 18px;"
80
+ >{{$t('edge.overview.controlmode')}}</div>
81
+ <el-button
82
+ type="primary"
83
+ style="float: right; margin-right: 20px;margin-top: 40px;"
84
+ size="mini"
85
+ @click="changeStatus"
86
+ >{{$t('edge.overview.manual')}}</el-button>
87
+ <!-- <el-button type="primary" style="float: right; margin-right: 40px;" size="mini" @click="changeStatus" v-show="isOperation">{{$t('edge.overview.exitmanual')}}</el-button> -->
88
+ </div>
89
+ <div class="cross-module">
90
+ <!-- 信号机控制状态模块 Start-->
91
+ <div class="controlStatePart">
92
+ <div class="bigPart">
93
+ <el-row :gutter="7">
94
+ <el-col :span="12">
95
+ <div class="grid-content bg-base">
96
+ <div class="value">{{controlData.mode}}</div>
97
+ <div class="name">{{$t('edge.overview.controlmodel')}}</div>
98
+ </div>
99
+ </el-col>
100
+ <el-col :span="12">
101
+ <div class="grid-content bg-base">
102
+ <div class="value">{{currModel > -1 ? $t('edge.overview.modelList' + currModel) : ''}}</div>
103
+ <div class="name">{{$t('edge.overview.curModel')}}</div>
104
+ </div>
105
+ </el-col>
106
+ </el-row>
107
+ </div>
108
+ <div class="smallPart">
109
+ <el-row :gutter="7">
110
+ <el-col :span="8" v-if="controlData.patternid !== undefined">
111
+ <div class="grid-content bg-base">
112
+ <div class="value">{{controlData.patternid}}</div>
113
+ <div class="name">{{$t('edge.overview.controlnumber')}}</div>
114
+ </div>
115
+ </el-col>
116
+ <el-col :span="8" v-if="responseTime !== undefined">
117
+ <div class="grid-content bg-base">
118
+ <div class="value">{{responseTime + ' ms'}}</div>
119
+ <div class="name">{{$t('edge.overview.responseTime')}}</div>
120
+ </div>
121
+ </el-col>
122
+ <el-col :span="8" v-if="controlData.duration !== undefined">
123
+ <div class="grid-content bg-base">
124
+ <div class="value">{{controlData.duration + ' s'}}</div>
125
+ <div class="name">{{$t('edge.overview.duration')}}</div>
126
+ </div>
127
+ </el-col>
128
+ <el-col :span="8" v-if="controlData.delay !== undefined">
129
+ <div class="grid-content bg-base">
130
+ <div class="value">{{controlData.delay}}</div>
131
+ <div class="name">{{$t('edge.overview.delay')}}</div>
132
+ </div>
133
+ </el-col>
134
+ <el-col :span="8" v-if="currentStage !== undefined">
135
+ <div class="grid-content bg-base">
136
+ <div class="value">{{currentStage}}</div>
137
+ <div class="name">{{$t('edge.overview.curStage')}}</div>
138
+ </div>
139
+ </el-col>
140
+ </el-row>
141
+ </div>
142
+ </div>
143
+ <!-- 信号机控制状态模块 End-->
144
+
145
+ <div class="cross-content" v-show="stagesList && stagesList.length > 0">
146
+ <div style="float: left;" class="cross-name">{{$t('edge.overview.currentstage')}}:</div>
147
+ <div style="margin-left: 85PX;">
148
+ <div style="width: 100%; height: auto;">
149
+ <div class="control-model" v-for="(item, index) in stagesList" :key="index">
150
+ <div
151
+ style="position:relative;"
152
+ class="single-model"
153
+ :class="currentStage == index + 1 ? 'single-model-select' : ''"
154
+ >
155
+ <PatternWalkSvg
156
+ class="patternWalk"
157
+ v-if="item[0].peddirection.includes(side.id)"
158
+ v-for="(side, index) in sidewalkPhaseData"
159
+ :key="side.key + '-' + index"
160
+ :Data="side"
161
+ :Width="'44'"
162
+ :Height="'44'"
163
+ />
164
+ <xdrdirselector Width="40PX" Height="40PX" :showlist="item"></xdrdirselector>
165
+ <div
166
+ style="display:flex;flex-direction:row;justify-content:center;align-items:center;"
167
+ >
168
+ <div class="current-stage-num" style="width:20%;">{{index + 1}}</div>
169
+ <div style="width:70%;">
170
+ <i
171
+ class="iconfont icon-BRT"
172
+ style="font-size:11PX;color:#606266;"
173
+ v-if="item[item.length-1].controltype === 4"
174
+ ></i>
175
+ <i
176
+ class="iconfont icon-feijidongche"
177
+ style="font-size:11PX;color:#606266;"
178
+ v-if="item[item.length-1].controltype === 6"
179
+ ></i>
180
+ <i
181
+ class="iconfont icon-gongjiaoche"
182
+ style="font-size:11PX;color:#606266;"
183
+ v-if="item[item.length-1].controltype === 3"
184
+ ></i>
185
+ <i
186
+ class="iconfont icon-youguidianche"
187
+ style="font-size:11PX;color:#606266;"
188
+ v-if="item[item.length-1].controltype === 5"
189
+ ></i>
190
+ </div>
191
+ </div>
192
+ </div>
193
+ </div>
194
+ </div>
195
+ </div>
196
+ </div>
197
+
198
+ <div class="cross-content" v-show="closePhase && closePhase.length > 0">
199
+ <div
200
+ style="float: left;margin-right: 16px;"
201
+ class="cross-name"
202
+ >{{$t('edge.overview.phaseclose')}}:</div>
203
+ <el-tag
204
+ type="danger"
205
+ size="small"
206
+ v-for="(phase, index) in closePhase"
207
+ :key="index"
208
+ >{{phase.typename + $t('edge.overview.phase') + phase.id + $t('edge.overview.close')}}</el-tag>
209
+ </div>
210
+ </div>
211
+ </div>
212
+ </template>
213
+
214
+ <script>
215
+ import xdrdirselector from '@/components/XRDDirSelector'
216
+ import PatternWalkSvg from '@/views/overView/crossDirection/baseImg/PatternWalkSvg'
217
+ export default {
218
+ name: 'realtimestatus',
219
+ components: {
220
+ xdrdirselector,
221
+ PatternWalkSvg
222
+ },
223
+ props: {
224
+ Visible: {
225
+ type: Boolean
226
+ },
227
+ controlData: {
228
+ type: Object
229
+ },
230
+ agentName: {
231
+ type: String
232
+ },
233
+ devStatus: {
234
+ type: Number
235
+ },
236
+ agentId: {
237
+ type: String
238
+ },
239
+ ip: {
240
+ type: String
241
+ },
242
+ platform: {
243
+ type: String
244
+ },
245
+ curFaultList: {
246
+ type: Array
247
+ },
248
+ currModel: {
249
+ type: Number
250
+ },
251
+ responseTime: {
252
+ type: Number
253
+ },
254
+ stagesList: {
255
+ type: Array
256
+ },
257
+ currentStage: {
258
+ type: Number
259
+ },
260
+ preselectStages: {
261
+ type: Number
262
+ },
263
+ closePhase: {
264
+ type: Array
265
+ },
266
+ sidewalkPhaseData: {
267
+ type: Array
268
+ },
269
+ confirmedFault: {
270
+ type: Array
271
+ },
272
+ ignoredFault: {
273
+ type: Array
274
+ },
275
+ untreatedFault: {
276
+ type: Array
277
+ }
278
+ },
279
+ data () {
280
+ return {
281
+ }
282
+ },
283
+ methods: {
284
+ changeStatus () {
285
+ this.$emit('changeStatus')
286
+ },
287
+ showFaultDetail () {
288
+ this.$emit('showFaultDetail')
289
+ }
290
+ }
291
+ }
292
+ </script>
293
+ <style lang="scss" scoped>
294
+ </style>