소스 검색

处理提示存在未填项,但是未提示具体字段

002390 1 년 전
부모
커밋
f6da7ab149
2개의 변경된 파일32개의 추가작업 그리고 23개의 파일을 삭제
  1. 19 23
      src/views/material/basicFile/details.vue
  2. 13 0
      src/views/material/basicFile/init/index.js

+ 19 - 23
src/views/material/basicFile/details.vue

@@ -135,6 +135,7 @@
                   :hide-required-asterisk="true"
                   :model="basicData.value"
                   ref="basicMessageRef"
+                  :rules="rules"
                 >
 
                   <el-row :gutter="10">
@@ -143,9 +144,7 @@
                         <!--  :disabled="!(headerParam.isEdit && f.edit)" -->
 
                         <!-- 多选框 -->
-                        <el-form-item v-if="f.attribute == 'checkbox'" style="text-align: left;" :prop="f.prop"
-                                      :rules="[{ required: f.required, message: `请选择${f.name}`, trigger: 'change' }]">
-                          <!-- :rules="[{ required: f.required, message: `请选择${f.name}`, trigger: 'change' }]" -->
+                        <el-form-item v-if="f.attribute == 'checkbox'" style="text-align: left;" :prop="f.prop">
 
                           <el-checkbox
                             :label="f.name" name="type"
@@ -160,11 +159,9 @@
 
                         <!-- 下拉框   -->
                         <el-form-item v-else-if="f.attribute == 'select'"
-                                      :id="(updateButtonGroup && f.apiUrl) ? 'selected' : ''"
-                                      :prop="f.apiUrl ? `${f.prop}Name` : f.prop"
-                                      :rules="[{ required: f.required, message: `请选择${f.name}`, trigger: 'change' }]">
-                          <!-- :rules="[{ required: f.required, message: `请选择${f.name}`, trigger: 'change' }]" -->
-
+                          :id="(updateButtonGroup && f.apiUrl) ? 'selected' : ''"
+                          :prop="f.apiUrl ? `${f.prop}Name` : f.prop"
+                        >
                           <template slot="label">
                             <el-tooltip class="item" effect="dark" placement="top-start" :disabled="f.name.length < 10">
                               <span>{{ f.name }}</span>
@@ -176,19 +173,20 @@
 
                           <!-- 参照 -->
                           <el-select v-if="f.apiUrl" v-model="basicData.value[`${f.prop}Name`]" placeholder="请选择"
-                                     size="mini"
-                                     :rules="[{ required: f.required, message: `请选择${f.name}`, trigger: 'change' }]"
-                                     :key="basicData.value[f.prop]" :disabled="handleJudge(f)"
-                                     @focus="f.apiUrl && handleQueryMore(f, '', { name: 'basicData', prop: f.prop })">
+                            size="mini"
+                            :rules="[{ required: f.required, message: `请选择${f.name}`, trigger: 'change' }]"
+                            :key="basicData.value[f.prop]" :disabled="handleJudge(f)"
+                            @focus="f.apiUrl && handleQueryMore(f, '', { name: 'basicData', prop: f.prop })">
                             <div slot="empty"></div>
                           </el-select>
 
                           <!-- 字典 -->
                           <el-select v-if="f.dictId" v-model="basicData.value[f.prop]" placeholder="请选择" size="mini"
-                                     :key="basicData.value[f.prop]" :disabled="handleJudge(f)"
-                                     :rules="[{ required: f.required, message: `请选择${f.name}`, trigger: 'change' }]">
-                            <el-option v-if="f.dictId" v-for="d in f.dictValue" :key="d.dictValue" :label="d.dictLabel"
-                                       :value="d.dictValue">
+                            :key="basicData.value[f.prop]" :disabled="handleJudge(f)"
+                            :rules="[{ required: f.required, message: `请选择${f.name}`, trigger: 'change' }]">
+                            <el-option v-if="f.dictId" 
+                              v-for="d in f.dictValue" :key="d.dictValue" :label="d.dictLabel"
+                              :value="d.dictValue">
                             </el-option>
 
                           </el-select>
@@ -203,10 +201,7 @@
                         </el-form-item>
 
                         <!--attribute 文本 数字 文本域 为null -->
-                        <el-form-item v-else :prop="f.prop"
-                                      :rules="[{ required: f.required, message: `请选择${f.name}`, trigger: 'change' }]">
-                          <!-- :rules="[{ required: f.required, message: `请输入${f.name}`, trigger: 'blur' }]" -->
-
+                        <el-form-item v-else :prop="f.prop">
                           <template slot="label">
                             <el-tooltip class="item" effect="dark" placement="top-start" :disabled="f.name.length < 10">
                               <span>{{ f.name }}</span>
@@ -217,9 +212,7 @@
                           </template>
 
                           <el-input size="mini" v-model="basicData.value[f.prop]" :type="f.attribute || 'text'"
-                                    :readonly="handleJudge(f)"
-                                    :rules="[{ required: f.required, message: `请选择${f.name}`, trigger: 'change' }]"
-                          >
+                                    :readonly="handleJudge(f)">
                           </el-input>
                         </el-form-item>
 
@@ -633,6 +626,7 @@
   import materialApi from '@/api/material/basic';
   import {getDicts as getDicts} from '@/api/system/dict/data'
   import arrayUtils from '../tools/arrayUtils';
+  import { initRules} from './init/index'
 
   export default {
     name: 'material-details',
@@ -645,6 +639,7 @@
         count: 1,
         refer: 1,
         loading: false,
+        rules:{},
         // 维护新版本
         maintainNewVersion: false,
         // 详情固定标签页
@@ -2086,6 +2081,7 @@
         // 基本信息
         await this.getTagList('material', (form) => {
           this.basicData.form = form;
+          this.rules = initRules(this.basicData.form);
           this.getMaterialDetails(this.materialId, 'material');
         })
         // 医疗行业

+ 13 - 0
src/views/material/basicFile/init/index.js

@@ -0,0 +1,13 @@
+// 初始化校验
+export const initRules = (prop) => {
+  const rules = {};
+  prop
+    .filter((column) => column.required)
+    .forEach((column) => {
+      const message = `${column.name}不能为空`;
+      rules[column.prop] = [
+        { required: true, message: message, trigger: "change" },
+      ];
+    });
+  return rules;
+};