Parcourir la source

feat(表单验证): 添加多个表单字段的必填验证规则

为速率统计、每日查堵行李和漏检列表表单添加缺失的必填验证规则
设置表单默认日期值,优化数字输入框精度
huoyi il y a 1 jour
Parent
commit
9154b4afe1

+ 21 - 9
src/views/blockingData/dailyLuggageInspectionScheduleByTime/index.vue

@@ -98,48 +98,48 @@
98 98
         <el-row :gutter="20">
99 99
           <el-col :span="12">
100 100
             <el-form-item label="T1行检箱包数" prop="t1WalkBagCount">
101
-              <el-input-number v-model="form.t1WalkBagCount" :min="0" style="width: 100%" />
101
+              <el-input-number v-model="form.t1WalkBagCount" :min="0" :precision="0" style="width: 100%" />
102 102
             </el-form-item>
103 103
           </el-col>
104 104
           <el-col :span="12">
105 105
             <el-form-item label="T1行检查堵数" prop="t1WalkBlockedCount">
106
-              <el-input-number v-model="form.t1WalkBlockedCount" :min="0" style="width: 100%" />
106
+              <el-input-number v-model="form.t1WalkBlockedCount" :min="0" :precision="0" style="width: 100%" />
107 107
             </el-form-item>
108 108
           </el-col>
109 109
         </el-row>
110 110
         <el-row :gutter="20">
111 111
           <el-col :span="12">
112 112
             <el-form-item label="T2行检箱包数(国内+国际)" prop="t2WalkBagCount">
113
-              <el-input-number v-model="form.t2WalkBagCount" :min="0" style="width: 100%" />
113
+              <el-input-number v-model="form.t2WalkBagCount" :min="0" :precision="0" style="width: 100%" />
114 114
             </el-form-item>
115 115
           </el-col>
116 116
           <el-col :span="12">
117 117
             <el-form-item label="T2行检查堵数" prop="t2WalkBlockedCount">
118
-              <el-input-number v-model="form.t2WalkBlockedCount" :min="0" style="width: 100%" />
118
+              <el-input-number v-model="form.t2WalkBlockedCount" :min="0" :precision="0" style="width: 100%" />
119 119
             </el-form-item>
120 120
           </el-col>
121 121
         </el-row>
122 122
         <el-row :gutter="20">
123 123
           <el-col :span="12">
124 124
             <el-form-item label="T1旅检箱包数(国内+国际+中转)" prop="t1TravelBagCount">
125
-              <el-input-number v-model="form.t1TravelBagCount" :min="0" style="width: 100%" />
125
+              <el-input-number v-model="form.t1TravelBagCount" :min="0" :precision="0" style="width: 100%" />
126 126
             </el-form-item>
127 127
           </el-col>
128 128
           <el-col :span="12">
129 129
             <el-form-item label="T1旅检查堵数" prop="t1TravelBlockedCount">
130
-              <el-input-number v-model="form.t1TravelBlockedCount" :min="0" style="width: 100%" />
130
+              <el-input-number v-model="form.t1TravelBlockedCount" :min="0" :precision="0" style="width: 100%" />
131 131
             </el-form-item>
132 132
           </el-col>
133 133
         </el-row>
134 134
         <el-row :gutter="20">
135 135
           <el-col :span="12">
136 136
             <el-form-item label="T2旅检箱包数" prop="t2TravelBagCount">
137
-              <el-input-number v-model="form.t2TravelBagCount" :min="0" style="width: 100%" />
137
+              <el-input-number v-model="form.t2TravelBagCount" :min="0" :precision="0" style="width: 100%" />
138 138
             </el-form-item>
139 139
           </el-col>
140 140
           <el-col :span="12">
141 141
             <el-form-item label="T2旅检查堵数" prop="t2TravelBlockedCount">
142
-              <el-input-number v-model="form.t2TravelBlockedCount" :min="0" style="width: 100%" />
142
+              <el-input-number v-model="form.t2TravelBlockedCount" :min="0" :precision="0" style="width: 100%" />
143 143
             </el-form-item>
144 144
           </el-col>
145 145
         </el-row>
@@ -205,7 +205,17 @@ const form = reactive({})
205 205
 
206 206
 const rules = {
207 207
   statDate: [{ required: true, message: '统计日期不能为空', trigger: 'change' }],
208
-  brigadeId: [{ required: true, message: '当班大队不能为空', trigger: 'change' }]
208
+  brigadeId: [{ required: true, message: '当班大队不能为空', trigger: 'change' }],
209
+  timePeriod: [{ required: true, message: '时间段不能为空', trigger: 'change' }],
210
+  t1WalkBagCount: [{ required: true, message: 'T1行检箱包数不能为空', trigger: 'change' }],
211
+  t1WalkBlockedCount: [{ required: true, message: 'T1行检查堵数不能为空', trigger: 'change' }],
212
+  t2WalkBagCount: [{ required: true, message: 'T2行检箱包数不能为空', trigger: 'change' }],
213
+  t2WalkBlockedCount: [{ required: true, message: 'T2行检查堵数不能为空', trigger: 'change' }],
214
+  t1TravelBagCount: [{ required: true, message: 'T1旅检箱包数不能为空', trigger: 'change' }],
215
+  t1TravelBlockedCount: [{ required: true, message: 'T1旅检查堵数不能为空', trigger: 'change' }],
216
+  t2TravelBagCount: [{ required: true, message: 'T2旅检箱包数不能为空', trigger: 'change' }],
217
+  t2TravelBlockedCount: [{ required: true, message: 'T2旅检查堵数不能为空', trigger: 'change' }]
218
+  // remark 不设置必填校验
209 219
 }
210 220
 
211 221
 const brigadeOptions = ref([])
@@ -274,6 +284,8 @@ function handleSelectionChange(selection) {
274 284
 
275 285
 function handleAdd() {
276 286
   reset()
287
+  // 设置默认当前日期
288
+  form.statDate = new Date().toISOString().split('T')[0]
277 289
   open.value = true
278 290
   title.value = '添加每日各时段查堵行李'
279 291
 }

+ 73 - 31
src/views/blockingData/missedInspectionList/index.vue

@@ -143,8 +143,8 @@
143 143
         <el-row :gutter="20">
144 144
           <el-col :span="12">
145 145
             <el-form-item label="漏检时间" prop="missCheckTime">
146
-              <el-date-picker v-model="form.missCheckTime" type="datetime" placeholder="请选择漏检时间" value-format="YYYY-MM-DD HH:mm"
147
-                style="width: 100%" />
146
+              <el-date-picker v-model="form.missCheckTime" type="datetime" placeholder="请选择漏检时间"
147
+                value-format="YYYY-MM-DD HH:mm" style="width: 100%" />
148 148
             </el-form-item>
149 149
           </el-col>
150 150
           <el-col :span="12">
@@ -160,12 +160,19 @@
160 160
           <el-col :span="12">
161 161
             <el-form-item label="上岗位置" prop="channelId">
162 162
               <el-select v-model="form.channelId" placeholder="请选择上岗位置" style="width: 100%">
163
-                <el-option v-for="item in channelOptions" :key="item.id" :label="item.name"
164
-                  :value="item.id" />
163
+                <el-option v-for="item in channelOptions" :key="item.id" :label="item.name" :value="item.id" />
165 164
               </el-select>
166 165
             </el-form-item>
167 166
           </el-col>
168 167
           <el-col :span="12">
168
+            <el-form-item label="漏检物品" prop="missCheckItem">
169
+              <el-input v-model="form.missCheckItem" placeholder="请输入漏检物品" />
170
+            </el-form-item>
171
+          </el-col>
172
+
173
+        </el-row>
174
+        <el-row :gutter="20">
175
+          <el-col :span="12">
169 176
             <el-form-item label="分管主管" prop="supervisorId">
170 177
               <el-select v-model="form.supervisorId" placeholder="请选择分管主管" style="width: 100%">
171 178
                 <el-option v-for="item in supervisorOptions" :key="item.value" :label="item.label"
@@ -173,8 +180,6 @@
173 180
               </el-select>
174 181
             </el-form-item>
175 182
           </el-col>
176
-        </el-row>
177
-        <el-row :gutter="20">
178 183
           <el-col :span="12">
179 184
             <el-form-item label="代管主管" prop="actingSupervisorId">
180 185
               <el-select v-model="form.actingSupervisorId" placeholder="请选择代管主管" style="width: 100%">
@@ -183,6 +188,9 @@
183 188
               </el-select>
184 189
             </el-form-item>
185 190
           </el-col>
191
+
192
+        </el-row>
193
+        <el-row :gutter="20">
186 194
           <el-col :span="12">
187 195
             <el-form-item label="分管班组长" prop="teamLeaderId">
188 196
               <el-select v-model="form.teamLeaderId" placeholder="请选择分管班组长" style="width: 100%">
@@ -191,8 +199,6 @@
191 199
               </el-select>
192 200
             </el-form-item>
193 201
           </el-col>
194
-        </el-row>
195
-        <el-row :gutter="20">
196 202
           <el-col :span="12">
197 203
             <el-form-item label="物品位置" prop="itemLocation">
198 204
               <el-select v-model="form.itemLocation" placeholder="请选择物品位置" style="width: 100%">
@@ -201,7 +207,10 @@
201 207
               </el-select>
202 208
             </el-form-item>
203 209
           </el-col>
204
-          <el-col :span="12">
210
+         
211
+        </el-row>
212
+        <el-row :gutter="20">
213
+           <el-col :span="12">
205 214
             <el-form-item label="简单/难" prop="difficultyLevel">
206 215
               <el-select v-model="form.difficultyLevel" placeholder="请选择简单/难" style="width: 100%">
207 216
                 <el-option label="简单" value="简单" />
@@ -209,8 +218,6 @@
209 218
               </el-select>
210 219
             </el-form-item>
211 220
           </el-col>
212
-        </el-row>
213
-        <el-row :gutter="20">
214 221
           <el-col :span="12">
215 222
             <el-form-item label="回查人" prop="reviewUserId">
216 223
               <el-select v-model="form.reviewUserId" placeholder="请选择回查人" style="width: 100%">
@@ -218,7 +225,10 @@
218 225
               </el-select>
219 226
             </el-form-item>
220 227
           </el-col>
221
-          <el-col :span="12">
228
+         
229
+        </el-row>
230
+        <el-row :gutter="20">
231
+           <el-col :span="12">
222 232
             <el-form-item label="判别类型" prop="discriminationType">
223 233
               <el-select v-model="form.discriminationType" placeholder="请选择判别类型" style="width: 100%">
224 234
                 <el-option v-for="item in discrimination_type" :key="item.value" :label="item.label"
@@ -226,8 +236,6 @@
226 236
               </el-select>
227 237
             </el-form-item>
228 238
           </el-col>
229
-        </el-row>
230
-        <el-row :gutter="20">
231 239
           <el-col :span="12">
232 240
             <el-form-item label="是否追回" prop="isRecovered">
233 241
               <el-select v-model="form.isRecovered" placeholder="请选择是否追回" style="width: 100%">
@@ -236,6 +244,9 @@
236 244
               </el-select>
237 245
             </el-form-item>
238 246
           </el-col>
247
+          
248
+        </el-row>
249
+        <el-row :gutter="20">
239 250
           <el-col :span="12">
240 251
             <el-form-item label="开机年限" prop="machineOperatingYears">
241 252
               <el-select v-model="form.machineOperatingYears" placeholder="请选择开机年限" style="width: 100%">
@@ -244,13 +255,14 @@
244 255
               </el-select>
245 256
             </el-form-item>
246 257
           </el-col>
247
-        </el-row>
248
-        <el-row :gutter="20">
249 258
           <el-col :span="12">
250 259
             <el-form-item label="证书级别" prop="certificateLevel">
251 260
               <el-input v-model="form.certificateLevel" placeholder="请输入证书级别" />
252 261
             </el-form-item>
253 262
           </el-col>
263
+          
264
+        </el-row>
265
+        <el-row :gutter="20">
254 266
           <el-col :span="12">
255 267
             <el-form-item label="人员性别" prop="gender">
256 268
               <el-select v-model="form.gender" placeholder="请选择人员性别" style="width: 100%">
@@ -259,8 +271,6 @@
259 271
               </el-select>
260 272
             </el-form-item>
261 273
           </el-col>
262
-        </el-row>
263
-        <el-row :gutter="20">
264 274
           <el-col :span="12">
265 275
             <el-form-item label="漏检原因分类" prop="missCheckReasonCategory">
266 276
               <el-select v-model="form.missCheckReasonCategory" placeholder="请选择漏检原因分类" style="width: 100%">
@@ -269,7 +279,10 @@
269 279
               </el-select>
270 280
             </el-form-item>
271 281
           </el-col>
272
-          <el-col :span="12">
282
+        
283
+        </el-row>
284
+        <el-row :gutter="20">
285
+            <el-col :span="12">
273 286
             <el-form-item label="月考成绩" prop="monthlyAssessment">
274 287
               <el-select v-model="form.monthlyAssessment" placeholder="请选择月考成绩" style="width: 100%">
275 288
                 <el-option v-for="item in blocked_monthly_exam_result" :key="item.value" :label="item.label"
@@ -277,21 +290,12 @@
277 290
               </el-select>
278 291
             </el-form-item>
279 292
           </el-col>
280
-        </el-row>
281
-        <el-row :gutter="20">
282 293
           <el-col :span="12">
283 294
             <el-form-item label="本月自测有无漏检" prop="selfTestHasMissCheck">
284
-              <el-select v-model="form.selfTestHasMissCheck" placeholder="请选择本月自测有无漏检" style="width: 100%">
285
-                <el-option label="有" value="1" />
286
-                <el-option label="无" value="0" />
287
-              </el-select>
288
-            </el-form-item>
289
-          </el-col>
290
-          <el-col :span="12">
291
-            <el-form-item label="漏检物品" prop="missCheckItem">
292
-              <el-input v-model="form.missCheckItem" placeholder="请输入漏检物品" />
295
+              <el-input-number v-model="form.selfTestHasMissCheck" :min="0" :max="2" :precision="0" placeholder="请输入0-2的整数" style="width: 100%" />
293 296
             </el-form-item>
294 297
           </el-col>
298
+
295 299
         </el-row>
296 300
       </el-form>
297 301
       <template #footer>
@@ -377,7 +381,41 @@ const form = reactive({})
377 381
 // 表单校验
378 382
 const rules = {
379 383
   brigadeId: [{ required: true, message: '大队不能为空', trigger: 'change' }],
380
-  reviewDate: [{ required: true, message: '回查日期不能为空', trigger: 'change' }]
384
+  areaId: [{ required: true, message: '区域不能为空', trigger: 'change' }],
385
+  reviewedUserId: [{ required: true, message: '被回查人不能为空', trigger: 'change' }],
386
+  reviewDate: [{ required: true, message: '回查日期不能为空', trigger: 'change' }],
387
+  missCheckTime: [{ required: true, message: '漏检时间不能为空', trigger: 'change' }],
388
+  missCheckTimePeriod: [{ required: true, message: '漏检时间段不能为空', trigger: 'change' }],
389
+  channelId: [{ required: true, message: '上岗位置不能为空', trigger: 'change' }],
390
+  missCheckItem: [{ required: true, message: '漏检物品不能为空', trigger: 'change' }],
391
+  supervisorId: [{ required: true, message: '分管主管不能为空', trigger: 'change' }],
392
+  teamLeaderId: [{ required: true, message: '分管班组长不能为空', trigger: 'change' }],
393
+  itemLocation: [{ required: true, message: '物品位置不能为空', trigger: 'change' }],
394
+  difficultyLevel: [{ required: true, message: '简单/难不能为空', trigger: 'change' }],
395
+  reviewUserId: [{ required: true, message: '回查人不能为空', trigger: 'change' }],
396
+  discriminationType: [{ required: true, message: '判别类型不能为空', trigger: 'change' }],
397
+  isRecovered: [{ required: true, message: '是否追回不能为空', trigger: 'change' }],
398
+  machineOperatingYears: [{ required: true, message: '开机年限不能为空', trigger: 'change' }],
399
+  certificateLevel: [{ required: true, message: '证书级别不能为空', trigger: 'change' }],
400
+  gender: [{ required: true, message: '人员性别不能为空', trigger: 'change' }],
401
+  missCheckReasonCategory: [{ required: true, message: '漏检原因分类不能为空', trigger: 'change' }],
402
+  monthlyAssessment: [{ required: true, message: '月考成绩不能为空', trigger: 'change' }],
403
+  selfTestHasMissCheck: [
404
+    { required: true, message: '本月自测有无漏检不能为空', trigger: 'change' },
405
+    { 
406
+      validator: (rule, value, callback) => {
407
+        if (value === null || value === undefined || value === '') {
408
+          callback(new Error('本月自测有无漏检不能为空'))
409
+        } else if (![0, 1, 2].includes(Number(value))) {
410
+          callback(new Error('本月自测有无漏检只能输入0、1、2'))
411
+        } else {
412
+          callback()
413
+        }
414
+      },
415
+      trigger: 'change'
416
+    }
417
+  ]
418
+  // actingSupervisorId 不设置必填校验
381 419
 }
382 420
 
383 421
 // 字典数据
@@ -516,6 +554,10 @@ function handleSelectionChange(selection) {
516 554
 /** 新增按钮操作 */
517 555
 function handleAdd() {
518 556
   reset()
557
+  // 设置默认当前时间
558
+  form.missCheckTime = new Date().toISOString().replace('T', ' ').substring(0, 16)
559
+  // 设置默认当前日期
560
+  form.reviewDate = new Date().toISOString().split('T')[0]
519 561
   open.value = true
520 562
   title.value = '添加漏检'
521 563
 }

+ 10 - 1
src/views/blockingData/rateList/index.vue

@@ -197,7 +197,14 @@ const form = reactive({})
197 197
 const rules = {
198 198
   statDate: [{ required: true, message: '日期不能为空', trigger: 'change' }],
199 199
   dutyBrigadeId: [{ required: true, message: '当班大队不能为空', trigger: 'change' }],
200
-  shift: [{ required: true, message: '班次不能为空', trigger: 'change' }]
200
+  shift: [{ required: true, message: '班次不能为空', trigger: 'change' }],
201
+  travelInspectionDomesticAvgRatePeak: [{ required: true, message: '旅检国内区域平均速率(高峰期时段)不能为空', trigger: 'change' }],
202
+  t1AAreaRatePeak: [{ required: true, message: 'T1-A区速率(高峰期时段)不能为空', trigger: 'change' }],
203
+  t1BAreaRatePeak: [{ required: true, message: 'T1-B区速率(高峰期时段)不能为空', trigger: 'change' }],
204
+  t2DomesticRatePeak: [{ required: true, message: 'T2-国内速率(高峰期时段)不能为空', trigger: 'change' }],
205
+  t2InternationalRatePeak: [{ required: true, message: 'T2-国际速率(高峰期时段)不能为空', trigger: 'change' }],
206
+  t2TransferRatePeak: [{ required: true, message: 'T2-中转(高峰期时段)不能为空', trigger: 'change' }],
207
+  internationalTransferAvgRatePeak: [{ required: true, message: '国际及中转区域平均速率(高峰期时段)不能为空', trigger: 'change' }]
201 208
 }
202 209
 
203 210
 const brigadeOptions = ref([])
@@ -261,6 +268,8 @@ function handleSelectionChange(selection) {
261 268
 
262 269
 function handleAdd() {
263 270
   reset()
271
+  // 设置默认当前日期
272
+  form.statDate = new Date().toISOString().split('T')[0]
264 273
   open.value = true
265 274
   title.value = '添加速率统计'
266 275
 }