From bc90fb7e0c6c8313e7d5fcf3aba57e3a1f975c93 Mon Sep 17 00:00:00 2001
From: 田源 <lastanimals@163.com>
Date: 星期四, 15 八月 2024 17:39:45 +0800
Subject: [PATCH] 对象建模模块,保存统一先进行正则校验(之间是失焦才进行校验)

---
 Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/businessType/index.vue |  222 +++++++++++++++++++++++++++++++++----------------------
 1 files changed, 133 insertions(+), 89 deletions(-)

diff --git a/Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/businessType/index.vue b/Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/businessType/index.vue
index 5506afe..c5bcb1c 100644
--- a/Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/businessType/index.vue
+++ b/Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/businessType/index.vue
@@ -168,10 +168,10 @@
       class="avue-dialog"
       width="75%"
       @close="addDialogClose">
-      <el-form ref="form" :model="form" :rules="rules" label-width="90px">
+      <el-form ref="form" :model="form" :rules="rules" label-width="95px">
         <div class="dialogForm">
           <div class="leftForm">
-            <el-form-item label="绫诲瀷鍚嶇О锛�" prop="name">
+            <el-form-item label="绫诲瀷鍚嶇О锛�" prop="id">
               <el-input v-model="form.id" :readOnly="title === 'edit'"></el-input>
             </el-form-item>
             <el-form-item label="鏍囩锛�">
@@ -188,44 +188,48 @@
             </el-form-item>
           </div>
           <div class="centerForm">
-            <el-form-item label="鐗堟湰瑙勫垯锛�" label-width="100px" prop="revLevel">
+            <el-form-item label="鐗堟湰瑙勫垯锛�" label-width="110px" prop="revLevel">
               <el-select v-model="form.revLevel">
                 <el-option label="涓嶅彲淇" value="0"></el-option>
                 <el-option label="閲囩敤涓�绾х増鏈鐞�" value="1"></el-option>
                 <el-option label="閲囩敤浜岀骇鐗堟湰绠$悊" value="2"></el-option>
               </el-select>
             </el-form-item>
-            <el-form-item v-if="form.revLevel !== '0'" label="鐗堟湰鍙疯鍒欙細" label-width="100px" prop="revisionRuleName">
+            <el-form-item v-if="form.revLevel !== '0'" label="鐗堟湰鍙疯鍒欙細" label-width="110px" prop="revisionRuleName">
               <div style="display: flex;gap: 5px;align-items: center">
                 <el-input v-model="form.revisionRuleId" :readOnly="true"></el-input>
-                <el-button plain size="small" style="margin-left: 5px;height: 30px" type="success" @click="versionAddHandler">娣诲姞</el-button>
+                <el-button plain size="small" style="margin-left: 5px;height: 30px" type="success"
+                           @click="versionAddHandler">娣诲姞
+                </el-button>
                 <el-switch
-                  style="width: 300px"
                   v-model="form.inputRevisionFlag"
-                  active-text="鎵嬪伐杈撳叆">
+                  active-text="鎵嬪伐杈撳叆"
+                  style="width: 300px">
                 </el-switch>
               </div>
             </el-form-item>
-            <el-form-item v-if="form.revLevel !== '0'" label="鍒嗛殧绗︼細" label-width="100px" prop="delimiter">
+            <el-form-item v-if="form.revLevel !== '0'" label="鍒嗛殧绗︼細" label-width="110px" prop="delimiter">
               <el-select v-model="form.delimiter" clearable>
                 <el-option label="." value="."></el-option>
                 <el-option label="-" value="-"></el-option>
               </el-select>
             </el-form-item>
-            <el-form-item v-if="form.revLevel !== '0' && form.revLevel !== '1'" label="鐗堟鍙疯鍒欙細" label-width="100px"
+            <el-form-item v-if="form.revLevel !== '0' && form.revLevel !== '1'" label="鐗堟鍙疯鍒欙細" label-width="110px"
                           prop="revLevel">
               <el-select v-model="form.versionRule" clearable>
-                <el-option label="1.2.3..." value="1.2.3..."></el-option>
-                <el-option label="a.b.c..." value="a.b.c..."></el-option>
-                <el-option label="0.1.2..." value="0.1.2..."></el-option>
+                <el-option label="1.2.3..." value="0"></el-option>
+                <el-option label="a.b.c..." value="1"></el-option>
+                <el-option label="0.1.2..." value="2"></el-option>
               </el-select>
             </el-form-item>
           </div>
           <div class="rightForm">
-            <el-form-item label="鐢熷懡鍛ㄦ湡锛�" label-width="138px" prop="revLevel">
+            <el-form-item label="鐢熷懡鍛ㄦ湡锛�" label-width="138px" prop="lifeCycleId">
               <div style="display: flex;gap: 5px;align-items: center">
                 <el-input v-model="form.lifeCycleId" :readOnly="true"></el-input>
-                <el-button plain size="small" style="margin-left: 5px;height: 30px" type="success" @click="lifeAddHandler('input')">娣诲姞</el-button>
+                <el-button plain size="small" style="margin-left: 5px;height: 30px" type="success"
+                           @click="lifeAddHandler('input')">娣诲姞
+                </el-button>
               </div>
             </el-form-item>
 
@@ -373,7 +377,7 @@
 
 <script>
 import basicOption from '@/util/basic-option'
-import {getBizTypes} from "@/api/modeling/businessType/api"
+import {getBizTypes, addLifeCycle} from "@/api/modeling/businessType/api"
 import {gridAttribute} from "@/api/modeling/attributePool/api";
 import func from "@/util/func";
 import {getVersionRuleAllList} from "@/api/modeling/version/api";
@@ -383,58 +387,58 @@
   name: "index",
   data() {
     return {
-      dialogLifeDefalutData:[], // 鏌ヨ閲嶇疆榛樿鏁版嵁
-      lifeType:'',
-      dialogLifeTable:[],
-      dialogLifeSaveRow:{},
-      dialogLifeKey:Math.random(),
-      dialogLifeData:[],
-      dialogLifeOption:{
+      dialogLifeDefalutData: [], // 鏌ヨ閲嶇疆榛樿鏁版嵁
+      lifeType: '',
+      dialogLifeTable: [],
+      dialogLifeSaveRow: {},
+      dialogLifeKey: Math.random(),
+      dialogLifeData: [],
+      dialogLifeOption: {
         ...basicOption,
-        addBtn:false,
-        selection:false,
-        refreshBtn:false,
-        menu:false,
-        height:450,
+        addBtn: false,
+        selection: false,
+        refreshBtn: false,
+        menu: false,
+        height: 450,
         searchMenuSpan: 8,
-        highlightCurrentRow:true,
-        column:[
+        highlightCurrentRow: true,
+        column: [
           {
-            label:'鐢熷懡鍛ㄦ湡妯℃澘鍚�',
-            prop:'id',
-            searchLabelWidth:120,
-            search:true
+            label: '鐢熷懡鍛ㄦ湡妯℃澘鍚�',
+            prop: 'id',
+            searchLabelWidth: 120,
+            search: true
           }
         ]
       },
-      dialogLifeLoading:false,
-      dialogLfeVisible:false,
-      dialogVersionDefalutData:[], // 鏌ヨ閲嶇疆榛樿鏁版嵁
-      dialogSwitchValue:false,
-      dialogVersionSaveRow:{},
-      dialogVersionVisible:false,
-      dialogVersionKey:Math.random(),
-      dialogVersionData:[],
-      dialogVersionOption:{
+      dialogLifeLoading: false,
+      dialogLfeVisible: false,
+      dialogVersionDefalutData: [], // 鏌ヨ閲嶇疆榛樿鏁版嵁
+      dialogSwitchValue: false,
+      dialogVersionSaveRow: {},
+      dialogVersionVisible: false,
+      dialogVersionKey: Math.random(),
+      dialogVersionData: [],
+      dialogVersionOption: {
         ...basicOption,
-        addBtn:false,
-        selection:false,
-        refreshBtn:false,
-        menu:false,
-        height:450,
+        addBtn: false,
+        selection: false,
+        refreshBtn: false,
+        menu: false,
+        height: 450,
         searchMenuSpan: 8,
-        highlightCurrentRow:true,
+        highlightCurrentRow: true,
         // calcHeight: 100,
-        column:[
+        column: [
           {
-            label:'鐗堟湰鍙疯鍒�',
-            prop:'id',
-            searchLabelWidth:110,
-            search:true
+            label: '鐗堟湰鍙疯鍒�',
+            prop: 'id',
+            searchLabelWidth: 110,
+            search: true
           }
         ]
       },
-      dialogVersionLoading:false,
+      dialogVersionLoading: false,
       dialogAttrSelectList: [],
       searchAttrParams: {},
       dialogAttrLoading: false,
@@ -481,7 +485,18 @@
       },
       dialogAttrSaveData: [],
       attrPollDialogVisible: false,
-      rules: [],
+      rules: {
+        id: [
+          {required: true, message: '璇疯緭绫诲瀷鍚嶇О', trigger: 'blur'},
+          {validator: this.validateEnglishOnly, trigger: 'blur'}
+        ],
+        revLevel: [
+          {required: true, message: '璇烽�夋嫨鐗堟湰瑙勫垯', trigger: 'blur'},
+        ],
+        lifeCycleId: [
+          {required: true, message: '璇烽�夋嫨鐢熷懡鍛ㄦ湡', trigger: 'blur'},
+        ]
+      },
       dialogAttrData: [],
       dialogAttrOption: {
         ...basicOption,
@@ -554,17 +569,18 @@
         ]
       },
       form: {
-        id:'', // 绫诲瀷鍚嶇О
-        name:'', // 鏍囩
-        fName:'', // 缁ф壙鑷�
-        implClass:'', // 瀹炵幇绫�
-        description:'', // 鎻忚堪
-        revLevel:'', // 鐗堟湰瑙勫垯
-        revisionRuleId:'',// 鐗堟湰鍙疯鍒�
-        inputRevisionFlag:'', // 鎵嬪伐杈撳叆
-        versionRule:'', // 鐗堟鍙疯鍒�
-        lifeCycleId:'', // 鐢熷懡鍛ㄦ湡
-        subLifeCycleId:'', // 鐢熷懡鍛ㄦ湡澶囬�夊垪琛�
+        id: '', // 绫诲瀷鍚嶇О
+        name: '', // 鏍囩
+        fName: '', // 缁ф壙鑷�
+        implClass: '', // 瀹炵幇绫�
+        description: '', // 鎻忚堪
+        revLevel: '', // 鐗堟湰瑙勫垯
+        revisionRuleId: '',// 鐗堟湰鍙疯鍒�
+        inputRevisionFlag: false, // 鎵嬪伐杈撳叆
+        versionRule: '', // 鐗堟鍙疯鍒�
+        lifeCycleId: '', // 鐢熷懡鍛ㄦ湡
+        subLifeCycleId: '', // 鐢熷懡鍛ㄦ湡澶囬�夊垪琛�,
+        apNameArray: "", // 灞炴�ф睜鍒楄〃鈥欙紝鈥樺垎闅�
       },
       nodeRow: {},
       treeOption: {
@@ -729,14 +745,14 @@
     },
 
     // 鐗堟湰瑙勫垯绠$悊娣诲姞
-    versionAddHandler(){
+    versionAddHandler() {
       this.dialogVersionVisible = true;
       this.dialogVersionKey = Math.random(); // 鎵撳紑鏃跺埛鏂拌〃鏍奸伩鍏嶈〃鏍奸敊琛�
       this.dialogVersionLoading = true;
       getVersionRuleAllList().then(res => {
         const data = res.data.data.map(item => {
           return {
-            id:item.id
+            id: item.id
           }
         });
         this.dialogVersionData = data;
@@ -748,12 +764,12 @@
     },
 
     // 鐗堟湰瑙勫垯琛岀偣鍑�
-    dialogVersionRowClick(row){
+    dialogVersionRowClick(row) {
       this.dialogVersionSaveRow = row;
     },
 
     // 鐗堟湰瑙勫垯鎼滅储
-    versionHandleSearch(params,done){
+    versionHandleSearch(params, done) {
       const {id} = params;
 
       if (!params.id) {
@@ -771,22 +787,22 @@
     },
 
     // 鐗堟湰绠$悊缃┖
-    versionHandleReset(){
+    versionHandleReset() {
       this.dialogVersionData = this.dialogVersionDefalutData;
     },
 
-    // 鐗堟湰瑙勫垯淇濆瓨
-    dialogVersionAddClickHandler(){
-      if(func.isEmptyObject(this.dialogVersionSaveRow)){
+    // 鐗堟湰鍙疯鍒欎繚瀛�
+    dialogVersionAddClickHandler() {
+      if (func.isEmptyObject(this.dialogVersionSaveRow)) {
         this.$message.error('璇疯嚦灏戦�夋嫨涓�鏉℃暟鎹�');
         return;
       }
-      this.form.revRuleName = this.dialogVersionSaveRow.id;
+      this.form.revisionRuleId = this.dialogVersionSaveRow.id;
       this.dialogVersionVisible = false;
     },
 
     // 鐢熷懡鍛ㄦ湡鏂板
-    lifeAddHandler(val){
+    lifeAddHandler(val) {
       this.dialogLfeVisible = true;
       this.dialogLifeKey = Math.random(); // 鎵撳紑鏃跺埛鏂拌〃鏍奸伩鍏嶈〃鏍奸敊琛�
       this.dialogLifeLoading = true;
@@ -794,7 +810,7 @@
       gridLifeCycle().then(res => {
         const data = res.data.data.map(item => {
           return {
-            id:item.id
+            id: item.id
           }
         });
         this.dialogLifeData = data;
@@ -806,19 +822,19 @@
     },
 
     // 鐢熷懡鍛ㄦ湡琛岀偣鍑�
-    dialogLifeRowClick(row){
+    dialogLifeRowClick(row) {
       this.dialogLifeSaveRow = row;
     },
 
     // 鐢熷懡鍛ㄦ湡淇濆瓨
-    dialogLifeAddClickHandler(){
-      if(func.isEmptyObject(this.dialogLifeSaveRow)){
+    dialogLifeAddClickHandler() {
+      if (func.isEmptyObject(this.dialogLifeSaveRow)) {
         this.$message.error('璇疯嚦灏戦�夋嫨涓�鏉℃暟鎹�');
         return;
       }
-      if(this.lifeType === 'input'){
-        this.form.lifeCycle = this.dialogLifeSaveRow.id;
-      }else {
+      if (this.lifeType === 'input') {
+        this.form.lifeCycleId = this.dialogLifeSaveRow.id;
+      } else {
         const flag = this.dialogLifeTable.some(item => item.id === this.dialogLifeSaveRow.id);
 
         if (flag) {
@@ -831,12 +847,12 @@
     },
 
     // 鐢熷懡鍛ㄦ湡澶囬�夊垪琛ㄧЩ闄�
-    dialogDeleteLifeTable(index){
-      this.dialogLifeTable.splice(index,1)
+    dialogDeleteLifeTable(index) {
+      this.dialogLifeTable.splice(index, 1)
     },
 
     // 鐢熷懡鍛ㄦ湡鎼滅储
-    lifeHandleSearch(params,done){
+    lifeHandleSearch(params, done) {
       const {id} = params;
 
       if (!params.id) {
@@ -854,13 +870,41 @@
     },
 
     // 鐢熷懡鍛ㄦ湡閲嶇疆
-    lifeHandleReset(){
+    lifeHandleReset() {
       this.dialogLifeData = this.dialogLifeDefalutData;
     },
 
+    // 鍙兘杈撳叆鑻辨枃姝e垯鏍¢獙
+    validateEnglishOnly(rule, value, callback) {
+      if (!value) {
+        return callback(new Error('璇疯緭鍏ョ被鍨嬪悕绉�'));
+      }
+      if (!/^[A-Za-z]+$/.test(value)) {
+        return callback(new Error('鍙兘杈撳叆鑻辨枃瀛楁瘝'));
+      }
+      callback(); // 楠岃瘉閫氳繃
+    },
+
     // 鏂板缂栬緫淇濆瓨
-    addDialogSavaHandler(){
+    addDialogSavaHandler() {
       console.log(this.form)
+      this.$refs.form.validate((valid) => {
+        if (valid) {
+          addLifeCycle(this.form).then(res => {
+            console.log(res);
+          })
+        } else {
+          return false;
+        }
+      });
+
+      this.$refs.form.validate((valid) => {
+        if (valid) {
+        } else {
+          return false;
+        }
+      });
+
     }
 
   }
@@ -869,7 +913,7 @@
 
 <style lang="scss" scoped>
 ::v-deep {
-  .avue-dialog .el-dialog__body{
+  .avue-dialog .el-dialog__body {
     padding: 20px 20px 0px 20px; // 涓婂彸涓嬪乏
     margin-bottom: 10px !important;
   }

--
Gitblit v1.9.3