소스 검색

表单校验调整

reaper 4 년 전
부모
커밋
64a1ef97f7
2개의 변경된 파일203개의 추가작업 그리고 162개의 파일을 삭제
  1. 4 2
      src/components/knowledgeExtra/AddAssess/index.vue
  2. 199 160
      src/components/knowledgeExtra/AddDevKnow.vue

+ 4 - 2
src/components/knowledgeExtra/AddAssess/index.vue

@@ -739,7 +739,6 @@ export default {
           if (valid) {
             resolve();
           } else {
-            console.log('ccccccc');
             reject("c");
             return false;
           }
@@ -755,7 +754,10 @@ export default {
           }
         });
       });
-      return [valid1, valid2];
+      if (this.ScoreResultsShow) {
+        return [valid1, valid2];
+      }
+      return [valid1];
     },
     /**
      * 增/删/得分结果表格

+ 199 - 160
src/components/knowledgeExtra/AddDevKnow.vue

@@ -9,41 +9,47 @@
       ></crumbs>
 
       <div class="info-container">
-        <el-form :rules="rules" :model="form" label-width="160px" ref="groups">
+        <el-form
+          :rules="rules1"
+          :model="form"
+          label-width="160px"
+          ref="groups1"
+        >
           <div class="container_top">
-            <el-form-item
-              v-if="!isEdit"
-              label="选择标准术语:"
-              prop="selectedTerm"
-            >
-              <el-select
-                v-model="form.selectedTerm"
-                filterable
-                remote
-                clearable
-                :loading="showDrop"
-                loading-text="加载中..."
-                @change="changeWord"
-                @visible-change="handleVisible"
-                value-key="id"
-                @clear="handleClear"
-                ref="termName"
-                placeholder="搜索"
-                :remote-method="searchTerms"
-              >
-                <el-option
-                  v-for="(term, idx) in terms"
-                  :key="idx"
-                  :label="
-                    term.name + (term.typeName ? '(' + term.typeName + ')' : '')
-                  "
-                  :value="term"
-                  :title="
-                    term.name + (term.typeName ? '(' + term.typeName + ')' : '')
-                  "
-                ></el-option>
-              </el-select>
-            </el-form-item>
+            <div v-if="!isEdit">
+              <el-form-item label="选择标准术语:" prop="selectedTerm">
+                <el-select
+                  v-model="form.selectedTerm"
+                  filterable
+                  remote
+                  clearable
+                  :loading="showDrop"
+                  loading-text="加载中..."
+                  @change="changeWord"
+                  @visible-change="handleVisible"
+                  value-key="id"
+                  @clear="handleClear"
+                  ref="termName"
+                  placeholder="搜索"
+                  :remote-method="searchTerms"
+                >
+                  <el-option
+                    v-for="(term, idx) in terms"
+                    :key="idx"
+                    :label="
+                      term.name +
+                      (term.typeName ? '(' + term.typeName + ')' : '')
+                    "
+                    :value="term"
+                    :title="
+                      term.name +
+                      (term.typeName ? '(' + term.typeName + ')' : '')
+                    "
+                  ></el-option>
+                </el-select>
+              </el-form-item>
+            </div>
+
             <el-form-item
               label="已选择标准术语:"
               style="margin-left: 40px"
@@ -51,35 +57,37 @@
               >{{ form.selectedTermName }}</el-form-item
             >
           </div>
-
-          <p class="line"></p>
-          <div class="tabs">
-            <div
-              class="tabs_pane"
-              :style="
-                tabActive == 'one'
-                  ? { color: '#fff', background: '#00c7da' }
-                  : ''
-              "
-              @click="tabActiveChange('one')"
-            >
-              静态信息
-            </div>
-            <div
-              class="tabs_pane"
-              :style="
-                tabActive == 'two'
-                  ? { color: '#fff', background: '#00c7da' }
-                  : ''
-              "
-              @click="tabActiveChange('two')"
-              v-if="AssesComSHow"
-            >
-              评估内容
-            </div>
+        </el-form>
+        <p class="line"></p>
+        <div class="tabs">
+          <div
+            class="tabs_pane"
+            :style="
+              tabActive == 'one' ? { color: '#fff', background: '#00c7da' } : ''
+            "
+            @click="tabActiveChange('one')"
+          >
+            静态信息
           </div>
-          <div class="tab_box_left" v-show="tabActive == 'one'">
-            <el-form-item
+          <div
+            class="tabs_pane"
+            :style="
+              tabActive == 'two' ? { color: '#fff', background: '#00c7da' } : ''
+            "
+            @click="tabActiveChange('two')"
+            v-if="AssesComSHow"
+          >
+            评估内容
+          </div>
+        </div>
+        <div class="tab_box_left" v-show="tabActive == 'one'">
+          <el-form
+            :rules="rules"
+            :model="form"
+            label-width="160px"
+            ref="groups"
+          >
+            <div
               v-if="
                 form.selectedTerm &&
                 (form.typeId == 1 ||
@@ -88,80 +96,89 @@
                   form.typeId == 5 ||
                   form.typeId == 6)
               "
-              :label="titleChange"
-              prop="titleChange"
-              label-width="160px"
-              style="margin-bottom: 20px"
-            >
-              <el-input v-model="form.titleChange"></el-input>
-            </el-form-item>
-            <DevInfo
-              v-for="(f, i) in form.prags"
-              v-if="!upload"
-              :key="(i + 1) * 10000 + showType"
-              :data="f"
-              :index="i"
-              :total="form.prags.length"
-              :isEdit="isEdit"
-              :isCopy="isCopy"
-              ref="subForm"
-              @add="addParagraph(i)"
-              @del="delParagraph"
-              @reOrder="reOrder"
-              :showType="showType"
-            ></DevInfo>
-            <el-form-item
-              v-if="upload"
-              label="标题名称搜索:"
-              prop="fileTitle"
-              label-width="160px"
-            >
-              <el-input v-model="form.fileTitle"></el-input>
-            </el-form-item>
-            <el-form-item
-              v-if="upload"
-              label="上传文件:"
-              ref="upload"
-              prop="fileList"
-              label-width="160px"
             >
-              <el-upload
-                @mouseenter.native="handleMouseenter"
-                @mouseleave.native="handleMouseleave"
-                class="upload-demo"
-                :action="config.urls.promptServer"
-                name="upfile"
-                :multiple="false"
-                :limit="1"
-                :on-preview="handlePreview"
-                :on-remove="handleRemove"
-                :before-upload="handleBeforeUpLoad"
-                :before-remove="beforeRemove"
-                :on-change="handleChange"
-                :on-success="handleSuccess"
-                :show-file-list="showFileList"
-                :file-list="form.fileList"
+              <el-form-item
+                :label="titleChange"
+                prop="titleChange"
+                label-width="160px"
+                style="margin-bottom: 20px"
               >
-                <el-button size="small" type="primary" v-if="showUpLoad"
-                  >点击上传</el-button
+                <el-input v-model="form.titleChange"></el-input>
+              </el-form-item>
+            </div>
+            <div v-if="!upload">
+              <DevInfo
+                v-for="(f, i) in form.prags"
+                :key="(i + 1) * 10000 + showType"
+                :data="f"
+                :index="i"
+                :total="form.prags.length"
+                :isEdit="isEdit"
+                :isCopy="isCopy"
+                ref="subForm"
+                @add="addParagraph(i)"
+                @del="delParagraph"
+                @reOrder="reOrder"
+                :showType="showType"
+              ></DevInfo>
+            </div>
+
+            <div v-if="upload">
+              <el-form-item
+                label="标题名称搜索:"
+                prop="fileTitle"
+                label-width="160px"
+              >
+                <el-input v-model="form.fileTitle"></el-input>
+              </el-form-item>
+            </div>
+
+            <div>
+              <el-form-item
+                v-if="upload"
+                label="上传文件:"
+                ref="upload"
+                prop="fileList"
+                label-width="160px"
+              >
+                <el-upload
+                  @mouseenter.native="handleMouseenter"
+                  @mouseleave.native="handleMouseleave"
+                  class="upload-demo"
+                  :action="config.urls.promptServer"
+                  name="upfile"
+                  :multiple="false"
+                  :limit="1"
+                  :on-preview="handlePreview"
+                  :on-remove="handleRemove"
+                  :before-upload="handleBeforeUpLoad"
+                  :before-remove="beforeRemove"
+                  :on-change="handleChange"
+                  :on-success="handleSuccess"
+                  :show-file-list="showFileList"
+                  :file-list="form.fileList"
                 >
-                <!-- <div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div> -->
-              </el-upload>
-              <span class="tipInfo" v-show="isShowTip">{{
-                form.fileList[0] && form.fileList[0].name
-              }}</span>
-              <!-- <el-button size="small" type="primary" >点击上传</el-button> -->
-            </el-form-item>
+                  <el-button size="small" type="primary" v-if="showUpLoad"
+                    >点击上传</el-button
+                  >
+                  <!-- <div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div> -->
+                </el-upload>
+                <span class="tipInfo" v-show="isShowTip">{{
+                  form.fileList[0] && form.fileList[0].name
+                }}</span>
+                <!-- <el-button size="small" type="primary" >点击上传</el-button> -->
+              </el-form-item>
+            </div>
             <el-form-item label-width="160px">
               <div class="uploadInfo" v-if="isSuccessUpload === 1">
                 文件上传中,请稍等...
               </div>
             </el-form-item>
-          </div>
-          <div v-if="AssesComSHow" v-show="tabActive == 'two'">
-            <AddAssess :childScaleData="scaleData" ref="assessRef" />
-          </div>
-        </el-form>
+          </el-form>
+        </div>
+        <div v-if="AssesComSHow" v-show="tabActive == 'two'">
+          <AddAssess :childScaleData="scaleData" ref="assessRef" />
+        </div>
       </div>
 
       <div class="btn">
@@ -225,10 +242,12 @@ export default {
         fileTitle: "",
         titleChange: ""
       },
-      rules: {
+      rules1: {
         selectedTerm: [
           { required: true, message: "请选择标准术语", trigger: "change" }
-        ],
+        ]
+      },
+      rules: {
         fileTitle: [
           { required: true, message: "请输入标题名称", trigger: "change" },
           {
@@ -637,51 +656,70 @@ export default {
       let fvalidate = new Promise((resolve, reject) => {
         //wanglei 添加promise
         this.$refs.groups.validate((valid) => {
-          if (!valid) {
-            console.log("ffffff");
+          console.log("valid", valid);
+          if (valid) {
+            resolve();
+          } else {
+            console.log("???????!!!");
             reject("f");
             return false;
-          } else {
+          }
+        });
+      });
+      let fvalidate1 = new Promise((resolve, reject) => {
+        //wanglei 添加promise
+        this.$refs.groups1.validate((valid) => {
+          console.log("valid1", valid);
+          if (valid) {
             resolve();
+          } else {
+            console.log("???????!!!");
+            reject("f");
+            return false;
           }
         });
       });
 
-      // 三个表单校验,需全部通过后让goOn outIsVia 为true;
-      let all = [fvalidate];
+      // end....
+      //验证段落表单
+      // return;
+      let viewHeight = 0; // 定位到表单校验的高度
+      let viewHeightArr = []; // 表单校验出错高度的所有数组
+      let fvalidate3 = null;
+      if (this.form.typeId !== 82 && this.form.typeId !== 83) {
+        fvalidate3 = new Promise((resolve, reject) => {
+          for (let i = 0; i < this.$refs.subForm.length; i++) {
+            it = this.$refs.subForm[i];
+            viewHeight += it.$el.offsetHeight;
+            it.$refs.form.validate((valid) => {
+              if (!valid) {
+                reject("f");
+                goOn = false;
+                viewHeightArr.push(viewHeight);
+              } else {
+                resolve();
+              }
+            });
+          }
+        });
+      }
+      // 表单验证
+      let all = [fvalidate, fvalidate1, fvalidate3];
       if (this.$refs.assessRef) {
-        // all.push(...this.$refs.assessRef.assessCommit());
-        console.log("??????");
-        all = [...this.$refs.assessRef.assessCommit(), fvalidate];
+        all.push(...this.$refs.assessRef.assessCommit());
       }
       await Promise.all(all)
         .then(() => {})
         .catch((err) => {
-          // console.log("err", err);
-          // if (err == "f") {
-          //   this.tabActive = "one";
-          // } else if (err == "c") {
-          //   this.tabActive = "two";
-          // }
+          // 跳转到未校验通过的tab页
+          if (err == "f") {
+            this.tabActive = "one";
+          } else if (err == "c") {
+            this.tabActive = "two";
+          }
           goOn = false;
           outIsVia = false;
         });
-      // end....
-      //验证段落表单
-      let viewHeight = 0; // 定位到表单校验的高度
-      let viewHeightArr = []; // 表单校验出错高度的所有数组
-      if (this.form.typeId !== 82 && this.form.typeId !== 83) {
-        for (let i = 0; i < this.$refs.subForm.length; i++) {
-          it = this.$refs.subForm[i];
-          viewHeight += it.$el.offsetHeight;
-          it.$refs.form.validate((valid) => {
-            if (!valid) {
-              goOn = false;
-              viewHeightArr.push(viewHeight);
-            }
-          });
-        }
-      }
       // console.log(viewHeightArr,'viewHeightArr');
       if (!goOn) {
         var div = this.$refs["elscrollbar"].$refs["wrap"];
@@ -757,6 +795,7 @@ export default {
 
       // console.log("param-------");
       // console.dir(param);
+      // return;
       if (!this.isEdit) {
         // 新增页面
         this.saveDisable = true;