39
39
<a-form-item
40
40
name =" vlanRangeStart"
41
41
ref =" vlanRangeStart"
42
+ :validate-status =" validStatus"
42
43
has-feedback
43
44
:style =" { display: 'inline-block', width: 'calc(50% - 12px)' }" >
44
45
<a-input-number
53
54
<a-form-item
54
55
name =" vlanRangeEnd"
55
56
ref =" vlanRangeEnd"
56
- has-feedback
57
57
:style =" { display: 'inline-block', width: 'calc(50% - 12px)' }" >
58
58
<a-input-number
59
59
v-model:value =" form.vlanRangeEnd"
@@ -102,9 +102,24 @@ export default {
102
102
labelCol: { span: 8 },
103
103
wrapperCol: { span: 12 }
104
104
},
105
- validStatus: ' ' ,
106
- validMessage: ' ' ,
107
- formModel: {}
105
+ validStatus: ' error' ,
106
+ validMessage: this .$t (' message.error.vlan.range' ),
107
+ formModel: {},
108
+ rangeLimits: {
109
+ VLAN : {
110
+ min: 1 ,
111
+ max: 4094
112
+ },
113
+ VXLAN : {
114
+ min: 4096 ,
115
+ max: 16777214
116
+ },
117
+ GRE : {
118
+ min: 0 ,
119
+ max: 4294967295
120
+ }
121
+ },
122
+ isolationMethod: ' '
108
123
}
109
124
},
110
125
watch: {
@@ -120,6 +135,7 @@ export default {
120
135
this .initForm ()
121
136
},
122
137
mounted () {
138
+ this .getIsolationMethod ()
123
139
this .fillValue ()
124
140
},
125
141
methods: {
@@ -143,9 +159,15 @@ export default {
143
159
})
144
160
},
145
161
fillValue () {
146
- this .form .vlanRangeStart = this .getPrefilled (' vlanRangeStart' )
147
- this .form .vlanRangeEnd = this .getPrefilled (' vlanRangeEnd' )
162
+ const vlanStart = this .getPrefilled (' vlanRangeStart' )
163
+ const vlanEnd = this .getPrefilled (' vlanRangeEnd' )
164
+ this .form .vlanRangeStart = vlanStart
165
+ this .form .vlanRangeEnd = vlanEnd
148
166
this .formModel = toRaw (this .form )
167
+ if (this .checkFromTo (vlanStart, vlanEnd)) {
168
+ this .validStatus = ' success'
169
+ this .validMessage = ' '
170
+ }
149
171
},
150
172
getPrefilled (key ) {
151
173
return this .prefillContent ? .[key] || null
@@ -156,7 +178,7 @@ export default {
156
178
157
179
this .formRef .value .validate ().then (() => {
158
180
const values = toRaw (this .form )
159
- if (! values . vlanRangeStart || ( values . vlanRangeEnd && ! this .checkFromTo (values .vlanRangeStart , values .vlanRangeEnd ) )) {
181
+ if (! this .checkFromTo (values .vlanRangeStart , values .vlanRangeEnd )) {
160
182
this .validStatus = ' error'
161
183
this .validMessage = this .$t (' message.error.vlan.range' )
162
184
return
@@ -185,19 +207,30 @@ export default {
185
207
toVal = value
186
208
fromVal = this .form [rule .compare ]
187
209
}
188
- if (fromVal && toVal && ! this .checkFromTo (fromVal, toVal)) {
210
+ if (! this .checkFromTo (fromVal, toVal)) {
189
211
this .validStatus = ' error'
190
212
this .validMessage = this .$t (' message.error.vlan.range' )
191
213
}
192
214
return Promise .resolve ()
193
215
},
194
216
checkFromTo (fromVal , toVal ) {
195
- if (! fromVal) fromVal = 0
196
- if (! toVal) toVal = 0
197
- if (fromVal > toVal) {
198
- return false
217
+ const vlanRange = this .rangeLimits [this .isolationMethod ] ? this .rangeLimits [this .isolationMethod ] : this .rangeLimits .VLAN
218
+ switch (true ) {
219
+ case ((fromVal === null ) || (toVal === null )):
220
+ case fromVal === toVal:
221
+ case fromVal > toVal:
222
+ case toVal > vlanRange .max :
223
+ case fromVal < vlanRange .min :
224
+ return false
225
+ default :
226
+ this .validStatus = ' success'
227
+ this .validMessage = ' '
228
+ return true
199
229
}
200
- return true
230
+ },
231
+ getIsolationMethod () {
232
+ const phyNetworks = this .getPrefilled (' physicalNetworks' )
233
+ this .isolationMethod = phyNetworks[phyNetworks .length - 1 ].isolationMethod
201
234
}
202
235
}
203
236
}
0 commit comments