openatc-components 0.0.25 → 0.0.28

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 +0 -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 +243 -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 +0 -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 +243 -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,219 @@
1
+ <template>
2
+ <div class="common-board-column">
3
+ <div class="common-board-column-header">
4
+ {{headerText}}
5
+ </div>
6
+ <div class="common-board-table-header">
7
+ <el-row :gutter="13">
8
+ <el-col :span="6">{{this.$t('openatccomponents.overview.phase')}}
9
+ </el-col>
10
+ <el-col :span="9">{{this.$t('openatccomponents.overview.phasesplit')}}
11
+ </el-col>
12
+ <el-col :span="9">{{this.$t('openatccomponents.detector.mode')}}
13
+ </el-col>
14
+ </el-row>
15
+ </div>
16
+ <draggable
17
+ class="common-board-column-content"
18
+ :list="list"
19
+ :options="options">
20
+ <div class="common-board-item" v-for="element in list" :key="element.id">
21
+ <el-row :gutter="13">
22
+ <el-col :span="6">
23
+ <el-tooltip class="item" effect="dark" placement="left">
24
+ <div slot="content">{{element.name}}</div>
25
+ <div class="common-phase-description">
26
+ <xdrdirselector Width="40px" Height="40px" :showlist="element.desc" :ISActiveMask="ISActiveMask" :MaskColor="MaskColor"></xdrdirselector>
27
+ </div>
28
+ </el-tooltip>
29
+ </el-col>
30
+ <el-col :span="9">
31
+ <el-input-number :controls="false" class="col-content" size="small" :min="element.minSplit" :max="255" :step="1" v-model.number="element.value" ref="type" :disabled="element.mode === 7"></el-input-number>
32
+ </el-col>
33
+ <el-col :span="9">
34
+ <el-select v-model="element.mode" class="col-content" size="small" @change="doChange(element)" :placeholder="$t('openatccomponents.common.select')">
35
+ <el-option
36
+ v-for="item in modeOption"
37
+ :key="item.value"
38
+ :label="$t('openatccomponents.pattern.modeOption' + item.value)"
39
+ :value="item.value">
40
+ </el-option>
41
+ </el-select>
42
+ </el-col>
43
+ </el-row>
44
+ </div>
45
+ </draggable>
46
+ </div>
47
+ </template>
48
+ <script>
49
+ import draggable from 'vuedraggable'
50
+ import xdrdirselector from '../XRDDirSelector/XRDDirSelector'
51
+
52
+ export default {
53
+ name: 'kan-ban',
54
+ components: {
55
+ draggable,
56
+ xdrdirselector
57
+ },
58
+ data () {
59
+ return {
60
+ modeOption: [{
61
+ value: 1
62
+ }, {
63
+ value: 2
64
+ }, {
65
+ value: 3
66
+ }, {
67
+ value: 4
68
+ }, {
69
+ value: 5
70
+ }, {
71
+ value: 6
72
+ }, {
73
+ value: 7
74
+ }],
75
+ coordphaseOption: [{
76
+ value: 1
77
+ }, {
78
+ value: 2
79
+ }, {
80
+ value: 4
81
+ }]
82
+ }
83
+ },
84
+ props: {
85
+ headerText: {
86
+ type: String,
87
+ default: 'Header'
88
+ },
89
+ options: {
90
+ type: Object,
91
+ default () {
92
+ return {}
93
+ }
94
+ },
95
+ phaseList: {
96
+ type: Array
97
+ },
98
+ list: {
99
+ type: Array,
100
+ default () {
101
+ return []
102
+ }
103
+ },
104
+ index: {
105
+ type: Number
106
+ },
107
+ ISActiveMask: {
108
+ type: Boolean,
109
+ default: true
110
+ },
111
+ // 当phase的描述为空时,显示的图形颜色。
112
+ MaskColor: {
113
+ type: String,
114
+ default: '#000000'
115
+ }
116
+ },
117
+ created () {
118
+ // this.addMinSplit()
119
+ // console.log(this.list, 'list')
120
+ },
121
+ watch: {
122
+ list: {
123
+ handler: function () {
124
+ let newList = this.list
125
+ // let list = this.$refs.type
126
+ // let cycle = 0
127
+ let n = this.index
128
+ // for (let i = 0; i < list.length; i++) {
129
+ // cycle = cycle + Number(list[i].currentValue)
130
+ // }
131
+ // const globalParamModel = this.$store.getters.globalParamModel
132
+ // let MaxCycle = globalParamModel.getParamsByType('patternList')[n].cycle
133
+ // let pattern = globalParamModel.getParamsByType('patternList')[n]
134
+ // globalParamModel.getParamsByType('patternList')[n].cycle = this.getMaxCycle(pattern)
135
+ // this.addMinSplit()
136
+ this.$emit('handleSplit', n, newList)
137
+ },
138
+ deep: true
139
+ }
140
+ },
141
+ methods: {
142
+ addMinSplit () {
143
+ // const globalParamModel = this.$store.getters.globalParamModel
144
+ // let phaseList = globalParamModel.getParamsByType('phaseList')
145
+ for (let ls of this.list) {
146
+ let phase = this.phaseList.filter((item) => {
147
+ return item.id === ls.id
148
+ })[0]
149
+ if (!phase.redyellow) {
150
+ phase.redyellow = 0
151
+ }
152
+ if (!phase.yellow) {
153
+ phase.yellow = 0
154
+ }
155
+ if (!phase.redclear) {
156
+ phase.redclear = 0
157
+ }
158
+ if (!phase.flashgreen) {
159
+ phase.flashgreen = 0
160
+ }
161
+ if (!phase.phasewalk) {
162
+ phase.phasewalk = 0
163
+ }
164
+ if (!phase.pedclear) {
165
+ phase.pedclear = 0
166
+ }
167
+ // let temp1 = phase.redyellow + phase.yellow + phase.redclear + phase.flashgreen // 绿信比的最小值要大于最小绿+黄灯+全红+绿闪
168
+ // let temp2 = phase.phasewalk + phase.pedclear
169
+ // if (temp1 > temp2) {
170
+ // ls.minSplit = temp1
171
+ // } else {
172
+ // ls.minSplit = temp2
173
+ // }
174
+ // if (ls.mode !== 7 && ls.value < ls.minSplit) {
175
+ // ls.value = ls.minSplit
176
+ // }
177
+ // let temp1 = phase.yellow + phase.redclear + phase.flashgreen // 绿信比的最小值要大于最小绿+黄灯+全红+绿闪
178
+ let temp1 = phase.yellow + phase.redclear + phase.mingreen
179
+ let temp2 = phase.yellow + phase.redclear + phase.phasewalk + phase.pedclear
180
+ ls.minSplit = temp1 > temp2 ? temp1 : temp2
181
+ if (ls.mode !== 7 && ls.value < ls.minSplit) {
182
+ ls.value = ls.minSplit
183
+ this.$message.error(this.$t('edge.pattern.splitCheckMsg'))
184
+ }
185
+ }
186
+ },
187
+ getMaxCycle (pattern) {
188
+ let rings = pattern.rings
189
+ let maxCycle = 0
190
+ for (let ring of rings) {
191
+ if (ring.length === 0) continue
192
+ let cycle = 0
193
+ for (let r of ring) {
194
+ if (r.mode === 7) { // 忽略相位不计周期
195
+ continue
196
+ }
197
+ cycle = cycle + r.value
198
+ }
199
+ if (cycle > maxCycle) {
200
+ maxCycle = cycle
201
+ }
202
+ }
203
+ return maxCycle
204
+ },
205
+ doChange (val) {
206
+ // if (val.mode === 7) {
207
+ // val.value = 0
208
+ // } else {
209
+ // val.value = 30
210
+ // }
211
+ }
212
+ }
213
+ }
214
+ </script>
215
+ <style lang="scss" scoped>
216
+ .col-content {
217
+ width: 100%;
218
+ }
219
+ </style>
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <div class="overLap" v-if="checked" :style="{'width':'852px','margin':this.controlData ? '20px 0 0 0' : '0 0 0 377px'}">
2
+ <div class="overLap" v-if="checked" :style="{'width':tentative?'100%':'852px','margin':this.controlData ? '20px 0 0 0' :tentative ? '0' : '0 0 0 377px'}">
3
3
  <div class="ring-first" v-for="(list, index1) in this.overlapDatas" :key="index1">
4
4
  <div v-for="(item,index2) in list.stageLists" :key="index2" >
5
5
  <div class="first-2">
@@ -62,6 +62,9 @@ export default {
62
62
  checked: {
63
63
  type: Boolean
64
64
  },
65
+ tentative: {
66
+ type: Boolean
67
+ },
65
68
  cycle: {
66
69
  type: Number
67
70
  },
@@ -76,6 +79,13 @@ export default {
76
79
  },
77
80
  // 深度观察监听
78
81
  deep: true
82
+ },
83
+ stageList: {
84
+ handler: function (val, oldVal) {
85
+ this.doAdd(this.stageList, this.overlap)
86
+ },
87
+ // 深度观察监听
88
+ deep: true
79
89
  }
80
90
  },
81
91
  created () {
@@ -497,7 +497,6 @@ export default {
497
497
  if (ring.sum) {
498
498
  obj.split = split + ring.sum
499
499
  obj.greenWidth = ((split - currPhase.redclear - currPhase.yellow - currPhase.flashgreen + ring.sum) / (this.max ? this.max : this.newCycle) * 100).toFixed(3) + '%'
500
- // obj.hideWidth = (ring.sum / (this.max ? this.max : this.newCycle) * 100).toFixed(3) + '%'
501
500
  } else {
502
501
  obj.split = split
503
502
  obj.greenWidth = ((split - currPhase.redclear - currPhase.yellow - currPhase.flashgreen) / (this.max ? this.max : this.newCycle) * 100).toFixed(3) + '%'
@@ -0,0 +1,6 @@
1
+ import Vue from 'vue'
2
+ import PhaseM from './phasemarker.vue'
3
+
4
+ let PhaseMarker = Vue.extend(PhaseM)
5
+ Vue.component('phase-marker', PhaseMarker)
6
+ export default PhaseMarker
@@ -0,0 +1,215 @@
1
+ <template>
2
+ <div class="wrap" style="width: 200px; height: 60px;"
3
+ v-if="isdestroy"
4
+ v-show="PhaseMarkerState.isShow">
5
+ <phase v-if="showLevel === 1"></phase>
6
+ <phaseCount v-if="showLevel === 2"></phaseCount>
7
+ <phaseCountCycle v-if="showLevel === 3"></phaseCountCycle>
8
+ <div class="dirwrap">
9
+ <xdrdirselector
10
+ Width="40px" Height="40px"
11
+ :showlist="dirshow">
12
+ </xdrdirselector>
13
+ </div>
14
+ <div class="operation-pattern" v-if="showLevel > 1">
15
+ <div class="cutdown-num" :style="phaseCountdownColor">
16
+ <span>{{params.countdown}}/{{params.split}}</span>
17
+ </div>
18
+ <div class="cutdown-name">
19
+ <span>{{params.control}}</span>
20
+ </div>
21
+ </div>
22
+ <div class="pattern-name" v-if="showLevel > 2">
23
+ <div class="planname-top">
24
+ <div class="cycle">
25
+ <span style="margin-left: 6px;">{{params.cycle}}</span>
26
+ </div>
27
+ <div class="offset">
28
+ <span style="margin-right: 6px;">{{params.offset}}</span>
29
+ </div>
30
+ </div>
31
+ <div class="planname-bottom">
32
+ <span>{{params.curpattern}}</span>
33
+ </div>
34
+ </div>
35
+ </div>
36
+ </template>
37
+
38
+ <script>
39
+ import xdrdirselector from '../XRDDirSelector'
40
+ import PatternSvg from './svg/patternSvg'
41
+ import PhaseSvg from './svg/phaseSvg'
42
+ import phase from './svg/phase'
43
+ import phaseCount from './svg/phaseCount'
44
+ import phaseCountCycle from './svg/phaseCountCycle'
45
+ export default {
46
+ name: 'phasemarker',
47
+ components: {
48
+ xdrdirselector,
49
+ PatternSvg,
50
+ PhaseSvg,
51
+ phaseCountCycle,
52
+ phaseCount,
53
+ phase
54
+ },
55
+ props: {
56
+ dirshow: {
57
+ type: Array,
58
+ default: () => []
59
+ },
60
+ params: {
61
+ type: Object,
62
+ default: function () {
63
+ return {
64
+ countdown: 0,
65
+ split: 0,
66
+ control: 0,
67
+ cycle: 0,
68
+ offset: 0,
69
+ curpattern: 'NO PLAN'
70
+ }
71
+ }
72
+ },
73
+ showLevel: {
74
+ type: Number,
75
+ default: 3
76
+ }
77
+ },
78
+ data () {
79
+ return {
80
+ timer: 0,
81
+ isdestroy: true,
82
+ phaseCountdownColor: { // 控制倒计时的颜色与相位方向颜色一致
83
+ color: '#333333'
84
+ },
85
+ PhaseMarkerState: {
86
+ isShow: true
87
+ }
88
+ }
89
+ },
90
+ computed: {
91
+ },
92
+ methods: {
93
+ show (dirshow, params, showLevel) {
94
+ this.dirshow = dirshow
95
+ this.params = params
96
+ this.showLevel = showLevel
97
+ this.phaseCountdownColor = {
98
+ color: params.phaseCountdownColor
99
+ }
100
+ clearInterval(this.timer)
101
+ let countdown = params.countdown
102
+ if (countdown) {
103
+ this.timer = setInterval(() => {
104
+ params.countdown = params.countdown > 0 ? params.countdown - 1 : 0
105
+ }, 1000)
106
+ }
107
+ }
108
+ },
109
+ mounted () {
110
+ },
111
+ created () {
112
+ },
113
+ destroyed () {
114
+ clearInterval(this.timer)
115
+ }
116
+ }
117
+ </script>
118
+
119
+ <style scoped>
120
+ .patternsvg {
121
+ height: 60PX;
122
+ position: relative;
123
+ }
124
+ .pattern-mess {
125
+ float: left;
126
+ }
127
+ .dirwrap {
128
+ position:relative;
129
+ margin-top: -45PX;
130
+ left: 7PX;
131
+ width: 40PX;
132
+ height: 39PX;
133
+ z-index: 9;
134
+ }
135
+ .operation-pattern {
136
+ position:relative;
137
+ margin-top: -45PX;
138
+ width: 60PX;
139
+ height: 39PX;
140
+ left: 60PX;
141
+ z-index: 9;
142
+ }
143
+ .pattern-name {
144
+ position:relative;
145
+ margin-top: -43PX;
146
+ width: 79PX;
147
+ height: 39PX;
148
+ margin-left: 110PX;
149
+ z-index: 9;
150
+ }
151
+ .cycle {
152
+ position:absolute;
153
+ width: 39.5PX;
154
+ height: 18PX;
155
+ font-size: 15PX;
156
+ text-align: center;
157
+ margin-right: 5PX;
158
+ color: #666666;
159
+ }
160
+ .offset {
161
+ position:absolute;
162
+ width: 39.5PX;
163
+ height: 18PX;
164
+ font-size: 15PX;
165
+ text-align: center;
166
+ color: #666666;
167
+ margin-left: 39.5PX;
168
+ }
169
+ .cutdown-num {
170
+ width: 50PX;
171
+ height: 19PX;
172
+ margin-left: auto;
173
+ margin-top: 2PX;
174
+ margin-right: auto;
175
+ font-size: 15PX;
176
+ text-align: center;
177
+ }
178
+ .cutdown-name {
179
+ width: 50PX;
180
+ height: 19PX;
181
+ margin-left: auto;
182
+ margin-bottom: 2PX;
183
+ margin-right: auto;
184
+ font-size: 12PX;
185
+ text-align: center;
186
+ color: #333333;
187
+ }
188
+ .planname-top {
189
+ height: 18PX;
190
+ margin-left: auto;
191
+ margin-right: auto;
192
+ margin-top: 2PX;
193
+ font-size: 15PX;
194
+ text-align: center;
195
+ color: #666666;
196
+ }
197
+ .planname-bottom {
198
+ height: 18PX;
199
+ margin-left: auto;
200
+ margin-right: auto;
201
+ margin-bottom: 2PX;
202
+ font-size: 12PX;
203
+ text-align: center;
204
+ color: #333333;
205
+ }
206
+ .wrap span{
207
+ -moz-user-select: -moz-none;
208
+ -moz-user-select: none;
209
+ -o-user-select:none;
210
+ -khtml-user-select:none;
211
+ -webkit-user-select:none;
212
+ -ms-user-select:none;
213
+ user-select:none;
214
+ }
215
+ </style>
@@ -0,0 +1,121 @@
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
+ <svg
14
+ xmlns="http://www.w3.org/2000/svg"
15
+ xmlns:xlink="http://www.w3.org/1999/xlink"
16
+ viewBox="0 0 150.09 46.54">
17
+ <defs>
18
+ <filter id="luminosity-invert" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB"><feColorMatrix values="-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0"/></filter>
19
+ <mask id="mask" x="1.15" y="1.03" width="44" height="44" maskUnits="userSpaceOnUse"><g class="cls-7">
20
+ <image width="44" height="44" transform="translate(1.15 1.03)" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAC0AAAAtCAYAAAA6GuKaAAAACXBIWXMAAAsSAAALEgHS3X78AAAGAElEQVRYR9WZa3OiShCGXxQQ5KIxcd39/39uE+8wDAIi50PqndNc1Gi2Tu3pqilNaph5punpm1bTNLAsq8H/SEb3JvyNYt+b8Ix4ngfHcQAAVVXhdDrdeeIx+Ta053kG0rZt2LYNz/Pgui4AoCxLnE4nnM9n1HVt/v7OQZ6G9n0fURQhiiIEQQDXdeG6LhzHgeM4GI/HAIC6rnE+n1GWJaqqQlEU0FojSRKkaYo8z+/s1JeHoT3PQxRFmM/niOMYURRhOp1iMpnA8zyj7dHo87pcLhfUdY2qqlCWJfI8R57nSNMUaZricDggSZKH4B+CDoIAy+USLy8vmM/nRtO+78P3faNpCd00DaqqMtomtFIKSilEUYT9fo+Pjw+kaXqH4FO+DB1FEVarFd7e3rBYLIymwzDEdDo1duy6Lsbj8VVNn04naK2htUaapgiCAEEQwPM8bDYbHI/Hu/b+JegoivDz50/8+PGjpek4jlubTiYT2Lbdg75cLi3oPM+RZRmCIGgdmCb28fFx01zuQhP4169fWC6XeHt7w3w+b0HTpqWmLcsC8Gke8jLyInaBuxf4/f39qsZvQgdBgNVqhdVqheVyieVyidfXV8znc8xmM8RxjOl0ajZ3HAeu62I0GrVsmuZBbfu+3wPm2+H8W27xKrTneUazHK+vr8aeZ7OZcXe+72MymbR89ZCmz+cziqKA53nI87x1cTn/crmYebT7rlyFjqIILy8vWCwWWCwWxo6lPYdh2LJnaqxrHryMhKEp0ctYlmXmnc9nVFWFPM+htR6MqIPQvu/3IGezWcssoijqeQ5ewi500zRG0zQhzu2+EUJmWYYsy5AkydegoyhCHMe9Qb8chqExDWqZF1CCUJqmgW3bqOu65V2khmWI11obYN/3e3w9aM/zeoB0a7zxtGPmHXR1BBmS0WhkDiXn0SXK4MMwH4YhZrMZdrsdtNZmrR607/stOH7yO82BsNI33xLLssygyEvKqDqdTg2D3P8mNJ08NSk1SlAZ/b4CLMWyLNi23TML7iXdodxfSq8IcBynpUUJ283kZI7xiFiWhfF4bNbgunIQVpojpbUjJw0BylsvM7lrNnxPGIDkerZtm30cxzGK62q7Bc1JMkjw8nAQ9jvAwKe2uY5cm75eHoKD0oLmAtQAFx0a3Uv1jMjLKdclw5C3Ae4UtnLR7wLeEq59bb/u3i3ouq5R17XxnYxmQ+NPiVzz2t6Xy6X1TAu6LEuUZWlCbvcQQws+K4QhLPeh3+b/5P6UFjQTdBah8gBcSH7+CWiCMVFiaSZTWQ5Kz6aZqEvwoUNws2fACSzB5PeiKFAUhcmptdYoisI8fxWaD3S/y0NUVfUUOHMNalSWYRxaa1OWaa1bmV4vjHOifJDQXFiWRgzhQ9ldV2TO3NWmhGbhS45uvTgIzfI+yzIopVrViUz2CTmZTNA0jfnfEHw3myuKwgBxH352x11oANBaQyllGirdInQo0WcUHQKXwOwyUaOEJXCaplBKIUkSM74Enee5yWfDMOzVgISSHkBmfIxgo9HIAMuKnKZAyCRJcDwezWDX6Xg8IkmSHt8g9Ol0wmazMflzt6ajSJhuqirfgjQLQsty6nA44HA4YL/ft8bhcBjsf1wtbNM0xWazGQSWIFVVmfT1Vu3Hubx0NAtqdrvdtsZut7vaJrvZ9zgej6ZHR5Bu8s4+huxhMNkBPqHp3lhOEVophePxiP1+j+12i81mg/V6jfV6je12+3jfA/jXTKhhaQ5Sa7IBKXNt4F/obteU9iyh1+s13t/fsV6vkWXZVa67bTGllMkz5OZspmit73ZNr3kNpZSxZUKv12sopW4y3YUGgCzL8Pv371ag0VojjmMopQz0kIfh25ENdULTpe33e+x2O2y325sapnwJGsBgeFVKtRo20o8PaZquTvpkeo40Ta/acFespnn8Jznf91sNHFbQjJhD0NLV0ab5E4ZsD3xFnoKmsBD2fd8EoW6Ip8sry9KYhkyMnpFvQUuhTbuu2wrjdJF0j8+CSvlj0P+lPN5p+QvEejSB/xvkH/OxTogBlnyaAAAAAElFTkSuQmCC"/></g>
21
+ </mask>
22
+ </defs>
23
+ <title>资源 72</title><g id="图层_2" data-name="图层 2"><g id="图层_1-2" data-name="图层 1">
24
+ <path :style="{'fill':backgroundColor}" id="更换颜色1" class="cls-1" d="M23.27,4A19.28,19.28,0,1,0,42.55,23.27,19.28,19.28,0,0,0,23.27,4Z"/>
25
+ <path :style="{'fill':backgroundColor}" id="更换颜色" class="cls-2" d="M143.14,7.67H40.06a23.23,23.23,0,0,1,.46,30.68H143.15l6.44-4.86V13.09Z"/>
26
+ <path class="cls-3" d="M14.45,43.72A22.27,22.27,0,0,1,11,4.67.5.5,0,0,0,11.16,4a.49.49,0,0,0-.69-.15,23.28,23.28,0,0,0,3.58,40.81.45.45,0,0,0,.2,0,.5.5,0,0,0,.46-.3A.51.51,0,0,0,14.45,43.72Z"/>
27
+ <path class="cls-3" d="M15,2.59A22.3,22.3,0,0,1,35.11,4.41a.52.52,0,0,0,.27.07.5.5,0,0,0,.26-.92,23.31,23.31,0,0,0-21-1.9.5.5,0,0,0-.28.65A.5.5,0,0,0,15,2.59Z"/>
28
+ <path class="cls-3" d="M3.49,23.27A19.78,19.78,0,1,0,23.27,3.49,19.8,19.8,0,0,0,3.49,23.27Zm38.56,0A18.78,18.78,0,1,1,23.27,4.49,18.8,18.8,0,0,1,42.05,23.27Z"/>
29
+ <path class="cls-3" d="M143.32,7.17H40a.5.5,0,0,0-.59.06.5.5,0,0,0,0,.71,22.27,22.27,0,0,1-16.15,37.6,22.44,22.44,0,0,1-4.41-.44.51.51,0,0,0-.59.39.5.5,0,0,0,.39.59,23,23,0,0,0,4.61.46,23.2,23.2,0,0,0,17.26-7.69H143.32l6.77-5.11V12.85Zm5.77,26.07L143,37.85H41.57a23.73,23.73,0,0,0-.41-29.68H143l6.13,5.15Z"/>
30
+ <path class="cls-3" d="M9.5,34.08c.22.28.45.55.68.81l.37-.33c-.22-.26-.44-.52-.65-.79Z"/>
31
+ <path class="cls-3" d="M7.32,30.48c.14.32.3.64.46.95l.44-.24c-.16-.3-.31-.6-.45-.92Z"/>
32
+ <path class="cls-3" d="M6.55,26.37l-.5.09c.07.35.14.69.23,1l.48-.12C6.68,27,6.61,26.7,6.55,26.37Z"/>
33
+ <path class="cls-3" d="M10.91,35.66c.25.25.5.49.77.72L12,36c-.26-.23-.51-.46-.75-.7Z"/>
34
+ <path class="cls-3" d="M7,28.36l-.48.15c.11.34.22.67.35,1l.47-.18C7.25,29,7.14,28.69,7,28.36Z"/>
35
+ <path class="cls-3" d="M8.3,32.35c.18.3.37.59.58.88L9.29,33c-.2-.28-.39-.57-.56-.86Z"/>
36
+ <path class="cls-3" d="M21.11,5.9l.06.49,1-.09,0-.5C21.81,5.82,21.46,5.85,21.11,5.9Z"/>
37
+ <path class="cls-3" d="M12.49,37.06c.28.22.56.43.85.63l.28-.42c-.28-.19-.55-.39-.82-.6Z"/>
38
+ <path class="cls-3" d="M6.3,24.33l-.5,0c0,.35,0,.7.1,1.05l.49-.06Q6.33,24.84,6.3,24.33Z"/>
39
+ <path class="cls-3" d="M20.13,40.49c.35.07.7.12,1.05.16l.06-.5q-.51-.06-1-.15Z"/>
40
+ <path class="cls-3" d="M14.23,38.26c.3.18.61.36.92.52l.23-.44c-.3-.16-.6-.33-.89-.51Z"/>
41
+ <path class="cls-3" d="M16.1,39.24c.32.15.65.28,1,.41l.18-.47c-.33-.12-.64-.25-1-.39Z"/>
42
+ <path class="cls-3" d="M18.08,40c.34.11.68.2,1,.28l.12-.48c-.34-.08-.67-.18-1-.28Z"/>
43
+ <path class="cls-3" d="M16.25,7.78,16,7.32c-.32.15-.63.3-.95.47l.24.44C15.63,8.07,15.94,7.92,16.25,7.78Z"/>
44
+ <path class="cls-3" d="M14.44,8.74l-.26-.43c-.3.18-.6.38-.89.58l.29.41A9.74,9.74,0,0,1,14.44,8.74Z"/>
45
+ <path class="cls-3" d="M12.75,9.91l-.31-.4-.81.68.34.38Q12.35,10.23,12.75,9.91Z"/>
46
+ <path class="cls-3" d="M11.22,11.27l-.35-.35c-.25.25-.49.51-.73.77l.38.33C10.75,11.76,11,11.51,11.22,11.27Z"/>
47
+ <path class="cls-3" d="M18.16,7.05,18,6.57c-.33.1-.67.22-1,.35l.18.46C17.51,7.26,17.84,7.15,18.16,7.05Z"/>
48
+ <path class="cls-3" d="M20.16,6.55l-.09-.49c-.35.06-.7.14-1,.22l.12.49C19.48,6.69,19.82,6.61,20.16,6.55Z"/>
49
+ <path class="cls-3" d="M6.29,22.28l-.5,0c0,.34,0,.68,0,1v0l.5,0C6.27,22.94,6.28,22.61,6.29,22.28Z"/>
50
+ <path class="cls-3" d="M9.86,12.81l-.39-.31c-.22.28-.43.56-.63.85l.41.29C9.45,13.36,9.65,13.08,9.86,12.81Z"/>
51
+ <path class="cls-3" d="M6.54,20.24,6,20.15c-.06.35-.11.69-.15,1.05l.49.05C6.42,20.91,6.47,20.58,6.54,20.24Z"/>
52
+ <path class="cls-3" d="M7,18.25l-.48-.15c-.1.33-.2.67-.28,1l.49.12Q6.87,18.73,7,18.25Z"/>
53
+ <path class="cls-3" d="M7.75,16.32l-.46-.2c-.15.32-.28.65-.41,1l.47.17C7.47,17,7.61,16.63,7.75,16.32Z"/>
54
+ <path class="cls-3" d="M8.7,14.5l-.43-.26c-.18.31-.36.61-.52.93l.44.23C8.35,15.09,8.52,14.8,8.7,14.5Z"/>
55
+ <path class="cls-3" d="M40,20.14l.5-.09c-.07-.35-.14-.7-.23-1l-.48.13C39.85,19.47,39.92,19.8,40,20.14Z"/>
56
+ <path class="cls-3" d="M37,12.43a10.41,10.41,0,0,0-.68-.81L36,12c.23.26.45.52.66.79Z"/>
57
+ <path class="cls-3" d="M40.24,22.17l.5,0c0-.35-.06-.7-.1-1.05l-.5.06C40.18,21.49,40.22,21.83,40.24,22.17Z"/>
58
+ <path class="cls-3" d="M34,9.46c-.28-.22-.56-.43-.85-.63l-.28.41c.28.2.56.4.83.61Z"/>
59
+ <path class="cls-3" d="M35.61,10.85q-.37-.37-.78-.72l-.33.38c.26.22.51.46.76.7Z"/>
60
+ <path class="cls-3" d="M39.21,16c-.15-.32-.3-.64-.47-1l-.44.23c.16.3.31.61.45.92Z"/>
61
+ <path class="cls-3" d="M39.49,18.15,40,18c-.1-.34-.22-.67-.34-1l-.47.18C39.27,17.5,39.38,17.82,39.49,18.15Z"/>
62
+ <path class="cls-3" d="M22.26,40.24l0,.5,1,0h.05l0-.5C22.93,40.27,22.59,40.26,22.26,40.24Z"/>
63
+ <path class="cls-3" d="M32.28,8.26c-.3-.18-.61-.35-.92-.52l-.23.45c.3.15.6.32.89.5Z"/>
64
+ <path class="cls-3" d="M26.37,6c-.34-.06-.69-.11-1-.15l-.06.49c.34,0,.68.09,1,.15Z"/>
65
+ <path class="cls-3" d="M23.22,5.77l.05.5c.33,0,.65,0,1,0l0-.5c-.33,0-.66,0-1,0Z"/>
66
+ <path class="cls-3" d="M25.4,40.65l-.07-.5q-.49.06-1,.09l0,.5C24.7,40.72,25.05,40.69,25.4,40.65Z"/>
67
+ <path class="cls-3" d="M28.42,6.54c-.33-.11-.67-.2-1-.28l-.11.48,1,.27Z"/>
68
+ <path class="cls-3" d="M30.41,7.28c-.33-.14-.65-.28-1-.4l-.18.47c.32.12.64.25.95.39Z"/>
69
+ <path class="cls-3" d="M38.22,14.16c-.18-.3-.38-.59-.58-.88l-.41.28c.2.28.38.57.56.86Z"/>
70
+ <path class="cls-3" d="M32.07,37.82l.26.43c.3-.19.6-.38.89-.58l-.29-.41C32.65,37.46,32.37,37.64,32.07,37.82Z"/>
71
+ <path class="cls-3" d="M30.26,38.77l.2.46c.33-.14.64-.3.95-.46l-.23-.45C30.88,38.48,30.57,38.63,30.26,38.77Z"/>
72
+ <path class="cls-3" d="M33.76,36.65l.31.4c.27-.22.55-.45.81-.68L34.55,36C34.29,36.22,34,36.44,33.76,36.65Z"/>
73
+ <path class="cls-3" d="M35.29,35.29l.36.36c.25-.25.49-.51.72-.77L36,34.54C35.77,34.8,35.54,35.05,35.29,35.29Z"/>
74
+ <path class="cls-3" d="M40.27,23.27c0,.34,0,.69,0,1l.5,0c0-.34,0-.7,0-1.05V23.2h-.5Z"/>
75
+ <path class="cls-3" d="M28.34,39.5l.15.48c.34-.1.67-.22,1-.34l-.18-.47C29,39.29,28.67,39.4,28.34,39.5Z"/>
76
+ <path class="cls-3" d="M26.35,40l.09.5c.35-.07.69-.14,1-.23l-.12-.48C27,39.86,26.69,39.93,26.35,40Z"/>
77
+ <path class="cls-3" d="M40,26.33l.49.09c.06-.34.11-.69.16-1l-.5-.06C40.11,25.66,40.06,26,40,26.33Z"/>
78
+ <path class="cls-3" d="M39.51,28.32l.47.15c.11-.33.2-.67.29-1l-.49-.12C39.7,27.67,39.61,28,39.51,28.32Z"/>
79
+ <path class="cls-3" d="M37.82,32.06l.43.26c.18-.3.36-.6.52-.92l-.44-.23C38.17,31.47,38,31.77,37.82,32.06Z"/>
80
+ <path class="cls-3" d="M36.66,33.75l.39.31c.22-.27.42-.56.63-.85l-.41-.28C37.07,33.21,36.87,33.49,36.66,33.75Z"/>
81
+ <path class="cls-3" d="M38.78,30.25l.46.2c.14-.32.27-.64.4-1l-.47-.18C39.05,29.62,38.92,29.94,38.78,30.25Z"/>
82
+ <g class="cls-4"><g class="cls-5"><path class="cls-6" d="M23.27,4A19.28,19.28,0,1,0,42.55,23.27,19.28,19.28,0,0,0,23.27,4Z"/></g></g></g></g>
83
+ </svg>
84
+ </template>
85
+ <script>
86
+ export default {
87
+ name: 'patternsvg',
88
+ data () {
89
+ return {
90
+ }
91
+ },
92
+ props: {
93
+ backgroundColor: {
94
+ type: String,
95
+ default: '#fff'
96
+ }
97
+ },
98
+ methods: {},
99
+ mounted () {}
100
+ }
101
+ </script>
102
+ <style scoped>
103
+ .cls-2 {
104
+ opacity:0.85;
105
+ }
106
+ .cls-3 {
107
+ fill:#4c9fe8;
108
+ }
109
+ .cls-4 {
110
+ mask:url(#mask);
111
+ }
112
+ .cls-5 {
113
+ opacity:0.59;
114
+ }
115
+ .cls-6 {
116
+ fill:#4c9fe8;
117
+ }
118
+ .cls-7 {
119
+ filter:url(#luminosity-invert);
120
+ }
121
+ </style>
@@ -0,0 +1,60 @@
1
+
2
+ /**
3
+ * Copyright (c) 2020 kedacom
4
+ * OpenATC is licensed under Mulan PSL v2.
5
+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
6
+ * You may obtain a copy of Mulan PSL v2 at:
7
+ * http://license.coscl.org.cn/MulanPSL2
8
+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
9
+ * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
10
+ * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
11
+ * See the Mulan PSL v2 for more details.
12
+ **/
13
+ <template>
14
+ <svg
15
+ xmlns="http://www.w3.org/2000/svg"
16
+ xmlns:xlink="http://www.w3.org/1999/xlink"
17
+ width="57px" height="57px">
18
+ <path fill-rule="evenodd" fill-opacity="0.902" fill="rgb(255, 255, 255)"
19
+ d="M28.376,1.489 C13.771,1.489 1.932,13.426 1.932,28.152 C1.932,42.877 13.771,54.816 28.376,54.816 C42.979,54.816 54.819,42.877 54.819,28.152 C54.819,13.426 42.979,1.489 28.376,1.489 "/>
20
+ <path fill-rule="evenodd" stroke="rgb(8, 116, 212)" stroke-width="2px" stroke-linecap="butt" stroke-linejoin="miter" fill="none"
21
+ d="M28.376,1.489 C13.771,1.489 1.932,13.426 1.932,28.152 C1.932,42.877 13.771,54.816 28.376,54.816 C42.979,54.816 54.819,42.877 54.819,28.152 C54.819,13.426 42.979,1.489 28.376,1.489 "/>
22
+ </svg>
23
+ </template>
24
+ <script>
25
+ export default {
26
+ name: 'pattern',
27
+ data () {
28
+ return {
29
+ }
30
+ },
31
+ props: {
32
+ backgroundColor: {
33
+ type: String,
34
+ default: '#fff'
35
+ }
36
+ },
37
+ methods: {},
38
+ mounted () {}
39
+ }
40
+ </script>
41
+ <style scoped>
42
+ .cls-2 {
43
+ opacity:0.85;
44
+ }
45
+ .cls-3 {
46
+ fill:#4c9fe8;
47
+ }
48
+ .cls-4 {
49
+ mask:url(#mask);
50
+ }
51
+ .cls-5 {
52
+ opacity:0.59;
53
+ }
54
+ .cls-6 {
55
+ fill:#4c9fe8;
56
+ }
57
+ .cls-7 {
58
+ filter:url(#luminosity-invert);
59
+ }
60
+ </style>