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 |  366 +++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 334 insertions(+), 32 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 b5c03e9..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
@@ -108,7 +108,7 @@
                 <template slot="label">
                   鐗堟湰鍙疯鍒�
                 </template>
-                <el-tag v-if="nodeRow.revRuleName">{{ nodeRow.revRuleName }}</el-tag>
+                <el-tag v-if="nodeRow.revisionRuleId">{{ nodeRow.revisionRuleId }}</el-tag>
               </el-descriptions-item>
               <el-descriptions-item v-if="nodeRow.revLevel !== '0'" :contentStyle="descriptionOption.contentStyle"
                                     :labelStyle="descriptionOption.labelStyle">
@@ -123,12 +123,12 @@
                 <template slot="label">
                   鐗堟鍙疯鍒�
                 </template>
-                <el-tag v-if="nodeRow.verRuleName"
-                        :type="nodeRow.verRuleName === '0' ? 'warning' : nodeRow.revLevel === '1' ? '' : 'success'">
+                <el-tag v-if="nodeRow.revisionRuleId"
+                        :type="nodeRow.revisionRuleId === '0' ? 'warning' : nodeRow.revisionRuleId === '1' ? '' : 'success'">
                   {{
-                    nodeRow.verRuleName === '0'
+                    nodeRow.versionRule === '0'
                       ? '1.2.3...'
-                      : nodeRow.revLevel === '1'
+                      : nodeRow.versionRule === '1'
                       ? 'a.b.c...'
                       : '0.1.2...'
                   }}
@@ -144,7 +144,7 @@
                 <template slot="label">
                   鐢熷懡鍛ㄦ湡
                 </template>
-                <el-tag v-if="nodeRow.lifeCycle">{{ nodeRow.lifeCycle }}</el-tag>
+                <el-tag v-if="nodeRow.lifeCycleId">{{ nodeRow.lifeCycleId }}</el-tag>
               </el-descriptions-item>
             </el-descriptions>
           </div>
@@ -168,17 +168,17 @@
       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="鏍囩锛�">
               <el-input v-model="form.name"></el-input>
             </el-form-item>
             <el-form-item label="缁ф壙鑷細">
-              <el-input v-model="form.name" :readOnly="title === 'edit'"></el-input>
+              <el-input v-model="form.fName" :readOnly="title === 'edit'"></el-input>
             </el-form-item>
             <el-form-item label="瀹炵幇绫伙細">
               <el-input v-model="form.implClass"></el-input>
@@ -188,39 +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="revLevel">
+            <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.revRuleName" :readOnly="true"></el-input>
-                <el-button plain size="small" style="margin-left: 5px;height: 30px" type="success" @click="versionAddHandler">娣诲姞</el-button>
+                <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-switch
+                  v-model="form.inputRevisionFlag"
+                  active-text="鎵嬪伐杈撳叆"
+                  style="width: 300px">
+                </el-switch>
               </div>
             </el-form-item>
-            <el-form-item v-if="form.revLevel !== '0'" label="鍒嗛殧绗︼細" label-width="100px" prop="revLevel">
+            <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.verRuleName" 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-select v-model="form.versionRule" clearable>
+                <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.lifeCycle" :readOnly="true"></el-input>
-                <el-button plain size="small" style="margin-left: 5px;height: 30px" type="success">娣诲姞</el-button>
+                <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>
               </div>
             </el-form-item>
 
@@ -229,12 +238,12 @@
                 <div style="height: 200px; width: 280px; border: 1px solid #bdbbbb;overflow-y: auto">
                   <!-- 鍐呭 -->
                   <el-table
-                    :data="bizFormData"
+                    :data="dialogLifeTable"
                     :show-header="false"
                     style="width: 100%">
                     <el-table-column
                       align="center"
-                      prop="name">
+                      prop="id">
                     </el-table-column>
                     <el-table-column
                       fixed="right"
@@ -245,7 +254,7 @@
                           size="small"
                           style="color:#F56C6C;"
                           type="text"
-                          @click.native.prevent="bizTypeDeleteRow('form',scope.$index)">
+                          @click.native.prevent="dialogDeleteLifeTable(scope.$index)">
                           绉婚櫎
                         </el-button>
                       </template>
@@ -253,7 +262,7 @@
                   </el-table>
                 </div>
                 <el-button plain size="mini" style="margin-left: 5px" type="success"
-                           @click="FormItemReferChange('form')">娣诲姞
+                           @click="lifeAddHandler('table')">娣诲姞
                 </el-button>
 
               </div>
@@ -276,6 +285,8 @@
          <el-button type="primary" @click="addDialogSavaHandler">纭� 瀹�</el-button>
         </span>
     </el-dialog>
+
+    <!-- 灞炴�ф睜娣诲姞 -->
     <el-dialog
       v-dialogDrag
       :visible.sync="attrPollDialogVisible"
@@ -306,19 +317,128 @@
         </span>
     </el-dialog>
 
+    <el-dialog
+      v-dialogDrag
+      :visible.sync="dialogVersionVisible"
+      append-to-body="true"
+      class="avue-dialog"
+      title="鐗堟湰鍙疯鍒�"
+      width="60%"
+    >
+
+      <avue-crud
+        :key="dialogVersionKey"
+        ref="dialogAttrCrud"
+        :data="dialogVersionData"
+        :option="dialogVersionOption"
+        :table-loading="dialogVersionLoading"
+        @row-click="dialogVersionRowClick"
+        @search-change="versionHandleSearch"
+        @search-reset="versionHandleReset"
+      >
+      </avue-crud>
+
+      <span slot="footer" class="dialog-footer">
+         <el-button @click="dialogVersionVisible = false">鍙� 娑�</el-button>
+         <el-button type="primary" @click="dialogVersionAddClickHandler">纭� 瀹�</el-button>
+        </span>
+
+    </el-dialog>
+
+    <!-- 鐢熷懡鍛ㄦ湡 -->
+    <el-dialog
+      v-dialogDrag
+      :visible.sync="dialogLfeVisible"
+      append-to-body="true"
+      class="avue-dialog"
+      title="鐢熷懡鍛ㄦ湡妯℃澘"
+      width="60%"
+    >
+      <avue-crud
+        :key="dialogLifeKey"
+        ref="dialogAttrCrud"
+        :data="dialogLifeData"
+        :option="dialogLifeOption"
+        :table-loading="dialogLifeLoading"
+        @row-click="dialogLifeRowClick"
+        @search-change="lifeHandleSearch"
+        @search-reset="lifeHandleReset"
+      >
+      </avue-crud>
+      <span slot="footer" class="dialog-footer">
+         <el-button @click="dialogLfeVisible = false">鍙� 娑�</el-button>
+         <el-button type="primary" @click="dialogLifeAddClickHandler">纭� 瀹�</el-button>
+        </span>
+
+    </el-dialog>
+
   </el-container>
 </template>
 
 <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";
+import {gridLifeCycle} from "@/api/modeling/lifeCycle/api";
 
 export default {
   name: "index",
   data() {
     return {
+      dialogLifeDefalutData: [], // 鏌ヨ閲嶇疆榛樿鏁版嵁
+      lifeType: '',
+      dialogLifeTable: [],
+      dialogLifeSaveRow: {},
+      dialogLifeKey: Math.random(),
+      dialogLifeData: [],
+      dialogLifeOption: {
+        ...basicOption,
+        addBtn: false,
+        selection: false,
+        refreshBtn: false,
+        menu: false,
+        height: 450,
+        searchMenuSpan: 8,
+        highlightCurrentRow: true,
+        column: [
+          {
+            label: '鐢熷懡鍛ㄦ湡妯℃澘鍚�',
+            prop: 'id',
+            searchLabelWidth: 120,
+            search: true
+          }
+        ]
+      },
+      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,
+        searchMenuSpan: 8,
+        highlightCurrentRow: true,
+        // calcHeight: 100,
+        column: [
+          {
+            label: '鐗堟湰鍙疯鍒�',
+            prop: 'id',
+            searchLabelWidth: 110,
+            search: true
+          }
+        ]
+      },
+      dialogVersionLoading: false,
       dialogAttrSelectList: [],
       searchAttrParams: {},
       dialogAttrLoading: false,
@@ -331,7 +451,6 @@
       },
       dialogAttrSaveOption: {
         ...basicOption,
-        calcHeight: -60,
         addBtn: false,
         menu: false,
         refreshBtn: false,
@@ -366,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,
@@ -438,7 +568,20 @@
           }
         ]
       },
-      form: {},
+      form: {
+        id: '', // 绫诲瀷鍚嶇О
+        name: '', // 鏍囩
+        fName: '', // 缁ф壙鑷�
+        implClass: '', // 瀹炵幇绫�
+        description: '', // 鎻忚堪
+        revLevel: '', // 鐗堟湰瑙勫垯
+        revisionRuleId: '',// 鐗堟湰鍙疯鍒�
+        inputRevisionFlag: false, // 鎵嬪伐杈撳叆
+        versionRule: '', // 鐗堟鍙疯鍒�
+        lifeCycleId: '', // 鐢熷懡鍛ㄦ湡
+        subLifeCycleId: '', // 鐢熷懡鍛ㄦ湡澶囬�夊垪琛�,
+        apNameArray: "", // 灞炴�ф睜鍒楄〃鈥欙紝鈥樺垎闅�
+      },
       nodeRow: {},
       treeOption: {
         height: 'auto',
@@ -602,16 +745,175 @@
     },
 
     // 鐗堟湰瑙勫垯绠$悊娣诲姞
-    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
+          }
+        });
+        this.dialogVersionData = data;
+        this.dialogVersionDefalutData = data;
+        this.dialogVersionLoading = false;
+      }).catch(err => {
+        this.$message.error(err)
+      });
+    },
+
+    // 鐗堟湰瑙勫垯琛岀偣鍑�
+    dialogVersionRowClick(row) {
+      this.dialogVersionSaveRow = row;
+    },
+
+    // 鐗堟湰瑙勫垯鎼滅储
+    versionHandleSearch(params, done) {
+      const {id} = params;
+
+      if (!params.id) {
+        this.dialogVersionData = this.dialogVersionDefalutData;
+        return done();
+      }
+      ;
+
+      this.dialogVersionData = this.dialogVersionDefalutData.filter(item => {
+        return item.id && item.id.includes(id);
+      });
+
+      done();
+
+    },
+
+    // 鐗堟湰绠$悊缃┖
+    versionHandleReset() {
+      this.dialogVersionData = this.dialogVersionDefalutData;
+    },
+
+    // 鐗堟湰鍙疯鍒欎繚瀛�
+    dialogVersionAddClickHandler() {
+      if (func.isEmptyObject(this.dialogVersionSaveRow)) {
+        this.$message.error('璇疯嚦灏戦�夋嫨涓�鏉℃暟鎹�');
+        return;
+      }
+      this.form.revisionRuleId = this.dialogVersionSaveRow.id;
+      this.dialogVersionVisible = false;
+    },
+
+    // 鐢熷懡鍛ㄦ湡鏂板
+    lifeAddHandler(val) {
+      this.dialogLfeVisible = true;
+      this.dialogLifeKey = Math.random(); // 鎵撳紑鏃跺埛鏂拌〃鏍奸伩鍏嶈〃鏍奸敊琛�
+      this.dialogLifeLoading = true;
+      this.lifeType = val;
+      gridLifeCycle().then(res => {
+        const data = res.data.data.map(item => {
+          return {
+            id: item.id
+          }
+        });
+        this.dialogLifeData = data;
+        this.dialogLifeDefalutData = data;
+        this.dialogLifeLoading = false
+      }).catch(err => {
+        this.$message.error(err)
+      });
+    },
+
+    // 鐢熷懡鍛ㄦ湡琛岀偣鍑�
+    dialogLifeRowClick(row) {
+      this.dialogLifeSaveRow = row;
+    },
+
+    // 鐢熷懡鍛ㄦ湡淇濆瓨
+    dialogLifeAddClickHandler() {
+      if (func.isEmptyObject(this.dialogLifeSaveRow)) {
+        this.$message.error('璇疯嚦灏戦�夋嫨涓�鏉℃暟鎹�');
+        return;
+      }
+      if (this.lifeType === 'input') {
+        this.form.lifeCycleId = this.dialogLifeSaveRow.id;
+      } else {
+        const flag = this.dialogLifeTable.some(item => item.id === this.dialogLifeSaveRow.id);
+
+        if (flag) {
+          this.$message.error('宸插瓨鍦ㄧ浉鍚岀殑鏁版嵁锛岃娣诲姞鍏朵粬鏁版嵁');
+          return;
+        }
+        this.dialogLifeTable.push(this.dialogLifeSaveRow);
+      }
+      this.dialogLfeVisible = false;
+    },
+
+    // 鐢熷懡鍛ㄦ湡澶囬�夊垪琛ㄧЩ闄�
+    dialogDeleteLifeTable(index) {
+      this.dialogLifeTable.splice(index, 1)
+    },
+
+    // 鐢熷懡鍛ㄦ湡鎼滅储
+    lifeHandleSearch(params, done) {
+      const {id} = params;
+
+      if (!params.id) {
+        this.dialogLifeData = this.dialogLifeDefalutData;
+        return done();
+      }
+      ;
+
+      this.dialogLifeData = this.dialogLifeDefalutData.filter(item => {
+        return item.id && item.id.includes(id);
+      });
+
+      done();
+
+    },
+
+    // 鐢熷懡鍛ㄦ湡閲嶇疆
+    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() {
+      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;
+        }
+      });
 
     }
+
   }
 }
 </script>
 
 <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