From b19fab639f82d33776e58b541c17a17be75325e7 Mon Sep 17 00:00:00 2001
From: ludc
Date: 星期四, 15 八月 2024 23:23:29 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 Source/plt-web/plt-web-ui/src/api/modeling/businessType/api.js                    |    9 
 Source/plt-web/plt-web-ui/src/views/system/department/index.vue                   |    1 
 Source/plt-web/plt-web-ui/src/components/flow-cycle/flowchartEditor.vue           |   17 
 Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/versioning/index.vue    |   25 
 Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/linkType/index.vue      |   88 ++-
 Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/lifeCycle/index.vue     |    4 
 Source/plt-web/plt-web-ui/src/page/index/top/index.vue                            |    1 
 Source/plt-web/plt-web-ui/src/App.vue                                             |   13 
 Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/attributePool/index.vue |   74 +-
 Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/enumType/index.vue      |  121 +++--
 Source/plt-web/plt-web-ui/src/api/user.js                                         |    9 
 Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/businessType/index.vue  |  855 +++++++++++++++++++++++++++++++++++---
 Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/statusPool/index.vue    |   47 +
 13 files changed, 1,030 insertions(+), 234 deletions(-)

diff --git a/Source/plt-web/plt-web-ui/src/App.vue b/Source/plt-web/plt-web-ui/src/App.vue
index 5dd0d0d..7fc0795 100644
--- a/Source/plt-web/plt-web-ui/src/App.vue
+++ b/Source/plt-web/plt-web-ui/src/App.vue
@@ -25,6 +25,9 @@
   height: 100%;
   overflow: hidden;
 }
+.el-menu--vertical .el-menu--popup-right-start{
+  background: #ffffff !important;
+}
 .el-card__body {
   padding: 15px;
 }
@@ -39,8 +42,14 @@
   margin-top: 0 !important;
 }
 .avue-dialog .el-dialog__body{
-  padding: 20px 20px 30px 20px; // 涓婂彸涓嬪乏
-  margin-bottom: 20px !important;
+  padding: 20px 20px 0px 20px; // 涓婂彸涓嬪乏 鍙栨秷琛ㄦ牸涓嬭竟璺濓紙浼氬嚭鐜版粴鍔ㄦ潯锛�
+  margin-bottom: 10px !important;
+}
+.avue-dialog .el-dialog__body .avue-form{
+  margin: 0px auto 40px; // 鍗曠嫭缁欏璇濇閲岀殑avue琛ㄥ崟鍔犱笂涓嬭竟璺�
+}
+.avue-crud .avue-form {
+  margin: 0px auto !important; // 琛ㄦ牸鍐呯殑琛ㄥ崟锛堟瘮濡�:鎼滅储鏍忥級 鍙栨秷涓嬭竟璺�
 }
 .avue--detail .el-col{
   margin-bottom: 0;
diff --git a/Source/plt-web/plt-web-ui/src/api/modeling/businessType/api.js b/Source/plt-web/plt-web-ui/src/api/modeling/businessType/api.js
index 1b64d2b..f5ef82f 100644
--- a/Source/plt-web/plt-web-ui/src/api/modeling/businessType/api.js
+++ b/Source/plt-web/plt-web-ui/src/api/modeling/businessType/api.js
@@ -8,3 +8,12 @@
     params
   });
 }
+
+// 鍒楄〃鏌ヨ
+export function addLifeCycle(params) {
+  return request({
+    url: "/api/btmTypeController/addBtmType",
+    method: "post",
+    data:params
+  });
+}
diff --git a/Source/plt-web/plt-web-ui/src/api/user.js b/Source/plt-web/plt-web-ui/src/api/user.js
index 405e08d..7fb72ed 100644
--- a/Source/plt-web/plt-web-ui/src/api/user.js
+++ b/Source/plt-web/plt-web-ui/src/api/user.js
@@ -37,3 +37,12 @@
   });
 }
 
+// 閫�鍑虹櫥褰�
+export function logout(params) {
+  return request({
+    url: "/api/framework/loginController/logout",
+    method: "post",
+    params
+  });
+}
+
diff --git a/Source/plt-web/plt-web-ui/src/components/flow-cycle/flowchartEditor.vue b/Source/plt-web/plt-web-ui/src/components/flow-cycle/flowchartEditor.vue
index 2555966..7e2245e 100644
--- a/Source/plt-web/plt-web-ui/src/components/flow-cycle/flowchartEditor.vue
+++ b/Source/plt-web/plt-web-ui/src/components/flow-cycle/flowchartEditor.vue
@@ -25,7 +25,7 @@
           </div>
         </div>
 
-        <div v-if="type !== 'detail'" class="vfe-chart-panel">
+        <div  class="vfe-chart-panel">
           <div class="vfe-chart-panel-detail">
             <editor-detail-panel
               ref="EditorDetailPanel"
@@ -131,13 +131,13 @@
     onAfterChange(e) {
       console.log(e)
       try {
-        if('edit' === this.$store.state.flow.type){
-          this.$refs.flowChart.propsAPI.remove(e.item);
-          if(e.action === 'remove'){
-            this.$message.error('缂栬緫鐘舵�佷笅涓嶈兘鍒囨崲閫変腑椤癸紒');
-          }
-          return;
-        }
+        // if('edit' === this.$store.state.flow.type){
+        //   this.$refs.flowChart.propsAPI.remove(e.item);
+        //   if(e.action === 'remove'){
+        //     this.$message.error('缂栬緫鐘舵�佷笅涓嶈兘鍒囨崲閫変腑椤癸紒');
+        //   }
+        //   return;
+        // }
         // 濡傛灉娣诲姞浜嗚妭鐐逛笖鑺傜偣娌℃湁琚洿鏀硅繃
         if (e.action === "add" && e.model.type === "node") {
           if (!e.model.change) {
@@ -148,7 +148,6 @@
           }
         }
       } catch (err) {
-        console.log(err)
         // 澶勭悊鑺傜偣 ID 鍐茬獊閿欒
         if (
           err.message ===
diff --git a/Source/plt-web/plt-web-ui/src/page/index/top/index.vue b/Source/plt-web/plt-web-ui/src/page/index/top/index.vue
index 7225469..ca8584f 100644
--- a/Source/plt-web/plt-web-ui/src/page/index/top/index.vue
+++ b/Source/plt-web/plt-web-ui/src/page/index/top/index.vue
@@ -329,6 +329,7 @@
         type: "warning"
       }).then(() => {
         this.$store.dispatch("LogOut").then(() => {
+          console.log('123');
           resetRouter();
           this.$router.push({path: "/login"});
         });
diff --git a/Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/attributePool/index.vue b/Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/attributePool/index.vue
index 2fdceb0..ad7dfe9 100644
--- a/Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/attributePool/index.vue
+++ b/Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/attributePool/index.vue
@@ -737,8 +737,12 @@
         row,
         this.$refs.userCrud,
         this.lastIndex,
-        (newIndex) => { this.lastIndex = newIndex; },
-        () => { this.selectList = []; }
+        (newIndex) => {
+          this.lastIndex = newIndex;
+        },
+        () => {
+          this.selectList = [];
+        }
       );
     },
 
@@ -1213,38 +1217,44 @@
         linkTypeName: "",
         rangeValue: ""
       };
-      if (this.dialogTitle === 'add') {
-        this.form.range = this.form.rangeValue.replace(/\n/g, ';');
-        if (this.form.attributeSelectType === 'business') {
-          this.form.btmTypeId = this.form.referValue;
-        } else {
-          this.form.linkTypeName = this.form.referValue;
-        }
-        addAttribute(this.form).then(res => {
-          if (res.data.code === 200) {
-            this.$message.success(res.data.obj);
-            this.getTableList();
-            this.form = form;
-            this.addVisible = false;
+      this.$refs.form.validate((valid) => {
+        if (valid) {
+          if (this.dialogTitle === 'add') {
+            this.form.range = this.form.rangeValue.replace(/\n/g, ';');
+            if (this.form.attributeSelectType === 'business') {
+              this.form.btmTypeId = this.form.referValue;
+            } else {
+              this.form.linkTypeName = this.form.referValue;
+            }
+            addAttribute(this.form).then(res => {
+              if (res.data.code === 200) {
+                this.$message.success(res.data.obj);
+                this.getTableList();
+                this.form = form;
+                this.addVisible = false;
+              }
+            })
           }
-        })
-      }
-      if (this.dialogTitle === 'edit') {
-        this.form.range = this.form.rangeValue.replace(/\n/g, ';');
-        if (this.form.attributeSelectType === 'business') {
-          this.form.btmTypeId = this.form.referValue;
-        } else {
-          this.form.linkTypeName = this.form.referValue;
-        }
-        updateAttribute(this.form).then(res => {
-          if (res.data.code === 200) {
-            this.$message.success(res.data.obj);
-            this.getTableList();
-            this.form = form;
-            this.addVisible = false;
+          if (this.dialogTitle === 'edit') {
+            this.form.range = this.form.rangeValue.replace(/\n/g, ';');
+            if (this.form.attributeSelectType === 'business') {
+              this.form.btmTypeId = this.form.referValue;
+            } else {
+              this.form.linkTypeName = this.form.referValue;
+            }
+            updateAttribute(this.form).then(res => {
+              if (res.data.code === 200) {
+                this.$message.success(res.data.obj);
+                this.getTableList();
+                this.form = form;
+                this.addVisible = false;
+              }
+            })
           }
-        })
-      }
+        } else {
+          return false;
+        }
+      });
     },
 
     // 瀵煎叆
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 c137fde..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
@@ -48,150 +48,556 @@
     </el-aside>
     <el-main>
       <basic-container>
-        <div style="display: flex;justify-content: center">
-          <div class="descBox">
-            <el-descriptions  :column="1" border class="margin-top" size="medium" title="灞炴�т俊鎭�">
+        <div style="display: flex;justify-content: center; height: 230px">
+          <div class="descBox" style="max-height: 100px">
+            <el-descriptions :column="1" border class="margin-top" size="medium" title="灞炴�т俊鎭�">
               <el-descriptions-item :contentStyle="descriptionOption.contentStyle"
                                     :labelStyle="descriptionOption.labelStyle">
                 <template slot="label">
-                  <i :class="icons.name"></i>
                   鍚嶇О
+                </template>
+                <el-tag v-if="nodeRow.id">{{ nodeRow.id }}</el-tag>
+              </el-descriptions-item>
+              <el-descriptions-item :contentStyle="descriptionOption.contentStyle"
+                                    :labelStyle="descriptionOption.labelStyle">
+                <template slot="label">
+                  鏍囩
                 </template>
                 <el-tag v-if="nodeRow.name">{{ nodeRow.name }}</el-tag>
               </el-descriptions-item>
               <el-descriptions-item :contentStyle="descriptionOption.contentStyle"
                                     :labelStyle="descriptionOption.labelStyle">
                 <template slot="label">
-                  <i :class="icons.label"></i>
-                  鏍囩
-                </template>
-                <el-tag v-if="nodeRow.label">{{ nodeRow.label }}</el-tag>
-              </el-descriptions-item>
-              <el-descriptions-item :contentStyle="descriptionOption.contentStyle"
-                                    :labelStyle="descriptionOption.labelStyle">
-                <template slot="label">
-                  <i :class="icons.implClass"></i>
                   瀹炵幇绫�
                 </template>
-                <el-tooltip class="item" effect="dark" :content="nodeRow.implClass" placement="top-start">
-                  <el-tag v-if="nodeRow.implClass">{{ nodeRow.implClass }}</el-tag>
+                <el-tooltip v-if="nodeRow.implClass" :content="nodeRow.implClass" class="item" effect="dark"
+                            placement="top-start">
+                  <el-tag style="max-width: 250px;overflow: hidden">{{ nodeRow.implClass }}
+                  </el-tag>
                 </el-tooltip>
               </el-descriptions-item>
               <el-descriptions-item :contentStyle="descriptionOption.contentStyle"
                                     :labelStyle="descriptionOption.labelStyle">
                 <template slot="label">
-                  <i :class="icons.desc"></i>
                   鎻忚堪
                 </template>
-                <el-tag v-if="nodeRow.description">{{ nodeRow.description }}</el-tag>
+                <span v-if="nodeRow.description">{{ nodeRow.description }}</span>
               </el-descriptions-item>
             </el-descriptions>
           </div>
           <div class="descBox">
-            <el-descriptions  :column="1" border class="margin-top" size="medium" title="灞炴�т俊鎭�">
+            <el-descriptions :column="1" border class="margin-top" size="medium" title="鐗堟湰瑙勫垯">
               <el-descriptions-item :contentStyle="descriptionOption.contentStyle"
                                     :labelStyle="descriptionOption.labelStyle">
                 <template slot="label">
-                  <i :class="icons.name"></i>
-                  鍚嶇О
+                  鐗堟湰瑙勫垯
                 </template>
-                <el-tag v-if="nodeRow.name">{{ nodeRow.name }}</el-tag>
+                <el-tag v-if="nodeRow.revLevel"
+                        :type="nodeRow.revLevel === '0' ? 'warning' : nodeRow.revLevel === '1' ? '' : 'success'">
+                  {{
+                    nodeRow.revLevel === '0'
+                      ? '涓嶅彲淇'
+                      : nodeRow.revLevel === '1'
+                      ? '閲囩敤涓�绾х増鏈鐞�'
+                      : '閲囩敤浜岀骇鐗堟湰绠$悊'
+                  }}
+                </el-tag>
               </el-descriptions-item>
-              <el-descriptions-item :contentStyle="descriptionOption.contentStyle"
+              <el-descriptions-item v-if="nodeRow.revLevel !== '0'" :contentStyle="descriptionOption.contentStyle"
                                     :labelStyle="descriptionOption.labelStyle">
                 <template slot="label">
-                  <i :class="icons.label"></i>
-                  鏍囩
+                  鐗堟湰鍙疯鍒�
                 </template>
-                <el-tag v-if="nodeRow.label">{{ nodeRow.label }}</el-tag>
+                <el-tag v-if="nodeRow.revisionRuleId">{{ nodeRow.revisionRuleId }}</el-tag>
               </el-descriptions-item>
-              <el-descriptions-item :contentStyle="descriptionOption.contentStyle"
+              <el-descriptions-item v-if="nodeRow.revLevel !== '0'" :contentStyle="descriptionOption.contentStyle"
                                     :labelStyle="descriptionOption.labelStyle">
                 <template slot="label">
-                  <i :class="icons.implClass"></i>
-                  瀹炵幇绫�
+                  鍒嗛殧绗�
                 </template>
-                <el-tag v-if="nodeRow.implClass">{{ nodeRow.implClass }}</el-tag>
+                <el-tag v-if="nodeRow.delimiter">{{ nodeRow.delimiter }}</el-tag>
               </el-descriptions-item>
-              <el-descriptions-item :contentStyle="descriptionOption.contentStyle"
+              <el-descriptions-item v-if="nodeRow.revLevel !== '0' && nodeRow.revLevel !== '1'"
+                                    :contentStyle="descriptionOption.contentStyle"
                                     :labelStyle="descriptionOption.labelStyle">
                 <template slot="label">
-                  <i :class="icons.desc"></i>
-                  鎻忚堪
+                  鐗堟鍙疯鍒�
                 </template>
-                <el-tag v-if="nodeRow.description">{{ nodeRow.description }}</el-tag>
+                <el-tag v-if="nodeRow.revisionRuleId"
+                        :type="nodeRow.revisionRuleId === '0' ? 'warning' : nodeRow.revisionRuleId === '1' ? '' : 'success'">
+                  {{
+                    nodeRow.versionRule === '0'
+                      ? '1.2.3...'
+                      : nodeRow.versionRule === '1'
+                      ? 'a.b.c...'
+                      : '0.1.2...'
+                  }}
+                </el-tag>
               </el-descriptions-item>
+
             </el-descriptions>
           </div>
           <div class="descBox">
-            <el-descriptions  :column="1" border class="margin-top" size="medium" title="灞炴�т俊鎭�">
+            <el-descriptions :column="1" border class="margin-top" size="medium" title="鐢熷懡鍛ㄦ湡">
               <el-descriptions-item :contentStyle="descriptionOption.contentStyle"
                                     :labelStyle="descriptionOption.labelStyle">
                 <template slot="label">
-                  <i :class="icons.name"></i>
-                  鍚嶇О
+                  鐢熷懡鍛ㄦ湡
                 </template>
-                <el-tag v-if="nodeRow.name">{{ nodeRow.name }}</el-tag>
-              </el-descriptions-item>
-              <el-descriptions-item :contentStyle="descriptionOption.contentStyle"
-                                    :labelStyle="descriptionOption.labelStyle">
-                <template slot="label">
-                  <i :class="icons.label"></i>
-                  鏍囩
-                </template>
-                <el-tag v-if="nodeRow.label">{{ nodeRow.label }}</el-tag>
-              </el-descriptions-item>
-              <el-descriptions-item :contentStyle="descriptionOption.contentStyle"
-                                    :labelStyle="descriptionOption.labelStyle">
-                <template slot="label">
-                  <i :class="icons.implClass"></i>
-                  瀹炵幇绫�
-                </template>
-                <el-tag v-if="nodeRow.implClass">{{ nodeRow.implClass }}</el-tag>
-              </el-descriptions-item>
-              <el-descriptions-item :contentStyle="descriptionOption.contentStyle"
-                                    :labelStyle="descriptionOption.labelStyle">
-                <template slot="label">
-                  <i :class="icons.desc"></i>
-                  鎻忚堪
-                </template>
-                <el-tag v-if="nodeRow.description">{{ nodeRow.description }}</el-tag>
+                <el-tag v-if="nodeRow.lifeCycleId">{{ nodeRow.lifeCycleId }}</el-tag>
               </el-descriptions-item>
             </el-descriptions>
           </div>
         </div>
-
+        <div style="margin-top: 30px">
+          <h3>灞炴�у垪琛�</h3>
+          <avue-crud
+            :data="attrData"
+            :option="attrOption">
+          </avue-crud>
+        </div>
       </basic-container>
     </el-main>
+
+    <!-- 鏂板 && 缂栬緫 -->
+    <el-dialog
+      v-dialogDrag
+      :title="title === 'add' ? '鍒涘缓' : '淇敼'"
+      :visible.sync="visible"
+      append-to-body="true"
+      class="avue-dialog"
+      width="75%"
+      @close="addDialogClose">
+      <el-form ref="form" :model="form" :rules="rules" label-width="95px">
+        <div class="dialogForm">
+          <div class="leftForm">
+            <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.fName" :readOnly="title === 'edit'"></el-input>
+            </el-form-item>
+            <el-form-item label="瀹炵幇绫伙細">
+              <el-input v-model="form.implClass"></el-input>
+            </el-form-item>
+            <el-form-item label="鎻忚堪">
+              <el-input v-model="form.description" :rows="2" type="textarea"></el-input>
+            </el-form-item>
+          </div>
+          <div class="centerForm">
+            <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="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-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="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="110px"
+                          prop="revLevel">
+              <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="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>
+              </div>
+            </el-form-item>
+
+            <el-form-item label="澶囬�夌敓鍛藉懆鏈熷垪琛細" label-width="138px">
+              <div style="display: flex; align-items: center">
+                <div style="height: 200px; width: 280px; border: 1px solid #bdbbbb;overflow-y: auto">
+                  <!-- 鍐呭 -->
+                  <el-table
+                    :data="dialogLifeTable"
+                    :show-header="false"
+                    style="width: 100%">
+                    <el-table-column
+                      align="center"
+                      prop="id">
+                    </el-table-column>
+                    <el-table-column
+                      fixed="right"
+                      label="鎿嶄綔"
+                      width="60">
+                      <template slot-scope="scope">
+                        <el-button
+                          size="small"
+                          style="color:#F56C6C;"
+                          type="text"
+                          @click.native.prevent="dialogDeleteLifeTable(scope.$index)">
+                          绉婚櫎
+                        </el-button>
+                      </template>
+                    </el-table-column>
+                  </el-table>
+                </div>
+                <el-button plain size="mini" style="margin-left: 5px" type="success"
+                           @click="lifeAddHandler('table')">娣诲姞
+                </el-button>
+
+              </div>
+            </el-form-item>
+          </div>
+        </div>
+      </el-form>
+      <div class="bottomForm">
+        <h3>灞炴�ф睜鍒楄〃</h3>
+        <avue-crud
+          :data="dialogAttrData"
+          :option="dialogAttrOption">
+          <template slot="menuLeft">
+            <el-button icon="el-icon-plus" size="small" type="primary" @click="addDialogClickHandler">鍒涘缓</el-button>
+          </template>
+        </avue-crud>
+      </div>
+      <span slot="footer" class="dialog-footer">
+         <el-button @click="addDialogClose">鍙� 娑�</el-button>
+         <el-button type="primary" @click="addDialogSavaHandler">纭� 瀹�</el-button>
+        </span>
+    </el-dialog>
+
+    <!-- 灞炴�ф睜娣诲姞 -->
+    <el-dialog
+      v-dialogDrag
+      :visible.sync="attrPollDialogVisible"
+      append-to-body="true"
+      class="avue-dialog"
+      title="灞炴�ф睜"
+      width="60%"
+      @close="dialogAttrClose"
+    >
+      <avue-crud
+        :key="dialogAttrReload"
+        ref="dialogAttrCrud"
+        :data="dialogAttrSaveData"
+        :option="dialogAttrSaveOption"
+        :page.sync="attrPage"
+        :table-loading="dialogAttrLoading"
+        @selection-change="dialogAttrSelectChange"
+        @row-click="dialogAttrRowClickHandler"
+        @size-change="attrSizeChange"
+        @current-change="attrCurrentChange"
+        @search-change="attrHandleSearch"
+        @search-reset="attrHandleReset"
+      >
+      </avue-crud>
+      <span slot="footer" class="dialog-footer">
+         <el-button @click="dialogAttrClose">鍙� 娑�</el-button>
+         <el-button type="primary" @click="dialogAttrAddClickHandler">纭� 瀹�</el-button>
+        </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 {getBizTypes} from "@/api/modeling/businessType/api"
+import basicOption from '@/util/basic-option'
+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 {
-      form:{
-
+      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
+          }
+        ]
       },
-      nodeRow:{},
+      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,
+      dialogAttrReload: Math.random(),
+      attrPage: {
+        currentPage: 1,
+        pageSize: 30,
+        total: 0,
+        pageSizes: [30, 50, 100, 200],
+      },
+      dialogAttrSaveOption: {
+        ...basicOption,
+        addBtn: false,
+        menu: false,
+        refreshBtn: false,
+        index: false,
+        highlightCurrentRow: true,
+        height: 450,
+        searchMenuSpan: 8,
+        column: [
+          {
+            label: '灞炴�у悕',
+            prop: 'id',
+            sortable: true,
+            search: true,
+          },
+          {
+            label: '灞炴�х被鍨�',
+            prop: 'attributeDataType',
+            sortable: true,
+          },
+          {
+            label: '鍒濆鍊�',
+            prop: 'defaultValue',
+            sortable: true,
+          },
+          {
+            label: '璇存槑',
+            prop: 'description',
+            sortable: true,
+            overHidden: true
+          }
+        ]
+      },
+      dialogAttrSaveData: [],
+      attrPollDialogVisible: false,
+      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,
+        editBtn: false,
+        refreshBtn: false,
+        selection: false,
+        height: 210,
+        addBtn: false,
+        // index:false,
+        column: [
+          {
+            label: '灞炴�у悕',
+            prop: 'id',
+            sortable: true,
+          },
+          {
+            label: '灞炴�х被鍨�',
+            prop: 'attributeDataType',
+            sortable: true,
+          },
+          {
+            label: '鍒濆鍊�',
+            prop: 'defaultValue',
+            sortable: true,
+          },
+          {
+            label: '璇存槑',
+            prop: 'description',
+            overHidden: true
+          }
+        ]
+      },
+      title: '',
+      visible: false,
+      attrData: [],
+      attrOption: {
+        ...basicOption,
+        calcHeight: -40,
+        addBtn: false,
+        menu: false,
+        index: false,
+        selection: false,
+        refreshBtn: false,
+        column: [
+          {
+            prop: 'id',
+            label: '灞炴�у悕',
+            sortable: true
+          },
+          {
+            prop: 'btmTypeId',
+            label: '涓氬姟绫诲瀷',
+            sortable: true
+          },
+          {
+            prop: 'attrDataType',
+            label: '灞炴�х被鍨�',
+            sortable: true
+          },
+          {
+            prop: 'defaultValue',
+            label: '榛樿鍊�',
+            sortable: true
+          },
+          {
+            prop: 'description',
+            label: '璇存槑',
+            overHidden: true
+          }
+        ]
+      },
+      form: {
+        id: '', // 绫诲瀷鍚嶇О
+        name: '', // 鏍囩
+        fName: '', // 缁ф壙鑷�
+        implClass: '', // 瀹炵幇绫�
+        description: '', // 鎻忚堪
+        revLevel: '', // 鐗堟湰瑙勫垯
+        revisionRuleId: '',// 鐗堟湰鍙疯鍒�
+        inputRevisionFlag: false, // 鎵嬪伐杈撳叆
+        versionRule: '', // 鐗堟鍙疯鍒�
+        lifeCycleId: '', // 鐢熷懡鍛ㄦ湡
+        subLifeCycleId: '', // 鐢熷懡鍛ㄦ湡澶囬�夊垪琛�,
+        apNameArray: "", // 灞炴�ф睜鍒楄〃鈥欙紝鈥樺垎闅�
+      },
+      nodeRow: {},
       treeOption: {
         height: 'auto',
         defaultExpandAll: false,
         menu: false,
         addBtn: false,
         props: {
-          label: 'name',
-          value: 'name',
+          label: 'id',
+          value: 'id',
           children: 'children'
         }
       },
       treeData: [],
       descriptionOption: {
-        labelStyle: 'text-align:center;min-width:80px;',
-        contentStyle: 'width:200px;text-align:center;word-break;break-all;'
+        labelStyle: 'text-align:center;width:100px;',
+        contentStyle: 'max-width:200px;text-align:center;word-break;break-all;'
       },
       icons: {
         id: 'el-icon-finished',
@@ -204,6 +610,7 @@
     this.getTreeList();
   },
   methods: {
+    //鏍戣〃鏌ヨ
     getTreeList() {
       getBizTypes().then(res => {
         const data = res.data.data.map(item => {
@@ -214,16 +621,303 @@
     },
 
     // 鏍戠偣鍑�
-    nodeClick(row){
-      console.log(row);
+    nodeClick(row) {
+      this.attrData = JSON.parse(row.attributes);
       this.nodeRow = row;
     },
+
+    // 鍒涘缓鎸夐挳
+    addClickHandler() {
+      this.title = 'add';
+      this.visible = true;
+    },
+
+    // 瀵硅瘽妗� 灞炴�ф睜鍒楄〃澧炲姞鎸夐挳
+    addDialogClickHandler() {
+      this.dialogAttrLoading = true;
+      this.attrPollDialogVisible = true;
+      this.dialogAttrReload = Math.random(); // 寮哄埗鍒锋柊琛ㄦ牸 瑙e喅琛ㄦ牸閿欒
+      this.getAttrDialogDta();
+    },
+
+    // 鏌ヨ灞炴�ф睜鍒楄〃鏁版嵁
+    getAttrDialogDta() {
+      gridAttribute(this.attrPage.currentPage, this.attrPage.pageSize, this.searchAttrParams).then(res => {
+        const data = res.data.data;
+        this.dialogAttrSaveData = data;
+        this.attrPage.total = res.data.total;
+        this.dialogAttrLoading = false;
+      }).catch(err => {
+        this.$message.error(err);
+      });
+    },
+
+    // 鏂板灞炴�ф睜鍒楄〃鍏抽棴瀵硅瘽妗�
+    dialogAttrClose() {
+      this.attrPollDialogVisible = false;
+      this.searchAttrParams = {};
+    },
+
+    // 娣诲姞灞炴�ф睜琛ㄦ牸閫夋嫨妗�
+    dialogAttrSelectChange(row) {
+      this.dialogAttrSelectList = row;
+    },
+
+    // 娣诲姞灞炴�ф睜 琛岀偣鍑�
+    dialogAttrRowClickHandler(row) {
+
+      func.rowClickHandler(
+        row,
+        this.$refs.dialogAttrCrud,
+        this.attrLastIndex,
+        (newIndex) => {
+          this.attrLastIndex = newIndex;
+        },
+        () => {
+          this.selectList = [];
+        }
+      );
+    },
+
+    //娣诲姞灞炴�ф睜 鏉℃暟
+    attrSizeChange(val) {
+      this.attrPage.pageSize = val;
+      this.getAttrDialogDta()
+    },
+
+    //娣诲姞灞炴�ф睜 椤电爜
+    attrCurrentChange(val) {
+      this.attrPage.currentPage = val;
+      this.getAttrDialogDta();
+    },
+
+    //娣诲姞灞炴�ф睜 鎼滅储
+    attrHandleSearch(params, done) {
+      if (func.isEmptyObject(params)) {
+        this.searchAttrParams = {};
+      } else {
+        this.searchAttrParams = {
+          "conditionMap[id]": "*" + params.id + "*"
+        };
+      }
+
+      this.getAttrDialogDta();
+      done();
+    },
+
+    //娣诲姞灞炴�ф睜 娓呯┖鎼滅储
+    attrHandleReset() {
+      this.searchAttrParams = {};
+      this.getAttrDialogDta();
+    },
+
+    // 娣诲姞灞炴�ф睜 淇濆瓨
+    dialogAttrAddClickHandler() {
+      let hasDuplicate = false;
+
+      // 鍏堝垱寤轰竴涓复鏃舵暟缁勬潵瀛樺偍涓嶉噸澶嶇殑椤�
+      const newItems = [];
+
+      this.dialogAttrSelectList.forEach(item => {
+        const exists = this.dialogAttrData.some(existingItem => existingItem.id === item.id);
+
+        if (exists) {
+          hasDuplicate = true;
+          return;
+        }
+
+        // 濡傛灉娌℃湁閲嶅椤癸紝鍒欏皢璇ラ」娣诲姞鍒颁复鏃舵暟缁勪腑
+        newItems.push({
+          id: item.id,
+          attributeDataType: item.attributeDataType,
+          defaultValue: item.defaultValue,
+          description: item.description
+        });
+      });
+
+      if (hasDuplicate) {
+        this.$message.error('璇锋鏌ユ槸鍚︽湁娣诲姞閲嶅椤癸紒');
+      } else {
+        // 濡傛灉娌℃湁閲嶅椤癸紝灏嗘柊椤规坊鍔犲埌 dialogAttrData
+        this.dialogAttrData.push(...newItems);
+        this.attrPollDialogVisible = false;
+      }
+    },
+
+    // 鐗堟湰瑙勫垯绠$悊娣诲姞
+    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 {
+    padding: 20px 20px 0px 20px; // 涓婂彸涓嬪乏
+    margin-bottom: 10px !important;
+  }
+
   .el-scrollbar__wrap {
     overflow: auto !important;
   }
@@ -276,8 +970,23 @@
   text-align: center;
   padding-left: 4.5px;
 }
-.descBox{
+
+.descBox {
   width: 32%;
   margin-left: 20px;
 }
+
+.dialogForm {
+  display: flex;
+  justify-content: space-around;
+}
+
+.dialogForm > div {
+  width: 29%;
+  border: 1px solid #eee;
+  padding: 25px 20px 5px 10px; /* 涓� 鍙� 涓� 宸� */
+  box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.2); /* 娣诲姞闃村奖鏁堟灉 */
+}
+
+
 </style>
diff --git a/Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/enumType/index.vue b/Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/enumType/index.vue
index 48f06c3..8ef3a18 100644
--- a/Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/enumType/index.vue
+++ b/Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/enumType/index.vue
@@ -84,9 +84,9 @@
           </el-form>
 
           <span slot="footer" class="dialog-footer">
-        <el-button type="primary" @click="rowSaveHandler">纭� 瀹�</el-button>
-        <el-button @click="dialogVisible = false">鍙� 娑�</el-button>
-      </span>
+            <el-button @click="dialogVisible = false">鍙� 娑�</el-button>
+            <el-button type="primary" @click="rowSaveHandler">纭� 瀹�</el-button>
+          </span>
         </el-dialog>
 
         <!-- 鏌ョ湅浣跨敤鑼冨洿    -->
@@ -243,6 +243,7 @@
       dialogData: [],
       dialogOption: {
         ...basicOption,
+        calcHeight: 50,
         refreshBtn: false,
         selection: false,
         column: [
@@ -376,8 +377,12 @@
         row,
         this.$refs.userCrud,
         this.lastIndex,
-        (newIndex) => { this.lastIndex = newIndex; },
-        () => { this.selectList = []; }
+        (newIndex) => {
+          this.lastIndex = newIndex;
+        },
+        () => {
+          this.selectList = [];
+        }
       );
     },
 
@@ -472,61 +477,67 @@
 
     // 瀵硅瘽妗嗘灇涓句繚瀛�
     rowSaveHandler() {
-      const lengthStatus = this.dialogData.some(item => item.value.length > this.form.length)
-      if (lengthStatus) {
-        this.$message.error('璇锋鏌ユ灇涓惧�兼槸鍚﹁秴杩囨渶澶ч暱搴︼紒')
-        return;
-      }
-
-      if (this.form.enumValueDataType === "Integer") {
-        // 鍒ゆ柇鏄惁鍖呭惈闈炴暟瀛楀瓧绗�
-        const integerStatus = this.dialogData.some(item => {
-          if (!/^\-?\d+$/.test(item.value)) {
-            return true;
+      const lengthStatus = this.dialogData.some(item => item.value.length > this.form.length);
+      this.$refs.form.validate((valid) => {
+        if (valid) {
+          if (lengthStatus) {
+            this.$message.error('璇锋鏌ユ灇涓惧�兼槸鍚﹁秴杩囨渶澶ч暱搴︼紒')
+            return;
           }
-        })
 
-        // 鍒ゆ柇鏄惁鏄痠nteger鏍煎紡
-        const integerNumStatus = this.dialogData.some(item => {
-          let numValue = parseInt(item.value);
-          if (isNaN(numValue) || !Number.isInteger(numValue)) {
-            return true;
+          if (this.form.enumValueDataType === "Integer") {
+            // 鍒ゆ柇鏄惁鍖呭惈闈炴暟瀛楀瓧绗�
+            const integerStatus = this.dialogData.some(item => {
+              if (!/^\-?\d+$/.test(item.value)) {
+                return true;
+              }
+            })
+
+            // 鍒ゆ柇鏄惁鏄痠nteger鏍煎紡
+            const integerNumStatus = this.dialogData.some(item => {
+              let numValue = parseInt(item.value);
+              if (isNaN(numValue) || !Number.isInteger(numValue)) {
+                return true;
+              }
+            })
+
+            if (integerStatus || integerNumStatus) {
+              this.$message.error('鏋氫妇鍊煎繀椤绘槸Integer绫诲瀷');
+              return;
+            }
           }
-        })
 
-        if (integerStatus || integerNumStatus) {
-          this.$message.error('鏋氫妇鍊煎繀椤绘槸Integer绫诲瀷');
-          return;
+          if (this.dialogType === 'add') {
+            let params = {
+              ...this.form,
+              items: this.dialogData
+            }
+            addEnumType(params).then(res => {
+              if (res.data.code === 200) {
+                this.$message.success(res.data.obj);
+                this.dialogVisible = false;
+                this.getTableList();
+              }
+            })
+          } else if (this.dialogType === 'edit') {
+            let params = {
+              ...this.form,
+              items: this.dialogData,
+              oid: this.editRow.oid,
+              ts: this.editRow.ts
+            }
+            updateEnumType(params).then(res => {
+              if (res.data.code === 200) {
+                this.$message.success(res.data.obj);
+                this.dialogVisible = false;
+                this.getTableList();
+              }
+            })
+          }
+        } else {
+          return false;
         }
-      }
-
-      if (this.dialogType === 'add') {
-        let params = {
-          ...this.form,
-          items: this.dialogData
-        }
-        addEnumType(params).then(res => {
-          if (res.data.code === 200) {
-            this.$message.success(res.data.obj);
-            this.dialogVisible = false;
-            this.getTableList();
-          }
-        })
-      } else if (this.dialogType === 'edit') {
-        let params = {
-          ...this.form,
-          items: this.dialogData,
-          oid: this.editRow.oid,
-          ts: this.editRow.ts
-        }
-        updateEnumType(params).then(res => {
-          if (res.data.code === 200) {
-            this.$message.success(res.data.obj);
-            this.dialogVisible = false;
-            this.getTableList();
-          }
-        })
-      }
+      });
     },
 
     // 鏋氫妇椤规柊澧�
diff --git a/Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/lifeCycle/index.vue b/Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/lifeCycle/index.vue
index 719c75d..142b70c 100644
--- a/Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/lifeCycle/index.vue
+++ b/Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/lifeCycle/index.vue
@@ -374,6 +374,8 @@
         startStatus: params.startStatus,
         startStatusName: params.startStatusName,
         description: params.description,
+        ts:params.ts,
+        oid:params.oid,
         bounds: params.nodes.map(node => ({
           name: node.id,
           cellx: String(node.x),
@@ -392,10 +394,12 @@
         : () => addLifeCycle(transformedData);
 
       getFunction().then(res => {
+        console.log(res);
         if (res.data.code === 200) {
           this.$message.success(res.data.obj);
           this.createdHandler();
           // this.handleResetTree();
+          this.rowData = {};
           this.$store.dispatch('updateMethodBtn', Object.keys(this.rowData).length > 0);
         }
       });
diff --git a/Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/linkType/index.vue b/Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/linkType/index.vue
index 706fd41..aa5e091 100644
--- a/Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/linkType/index.vue
+++ b/Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/linkType/index.vue
@@ -41,7 +41,7 @@
 
     <el-main>
       <basic-container>
-        <div>
+        <div style="height: 380px">
           <el-descriptions :column="2" border class="margin-top" size="medium">
             <el-descriptions-item :contentStyle="descriptionOption.contentStyle"
                                   :labelStyle="descriptionOption.labelStyle">
@@ -94,11 +94,13 @@
                 <i :class="icons.from"></i>
                 From绔被鍨�
               </template>
-              <span v-for="item in nodeRow.btmItemsFrom" style="margin-left:2px;">
-              <el-tag effect="plain" style="margin-top: 2px;">
+              <div style="height: 60px;overflow-y: auto;display: flex;flex-wrap: wrap">
+                <span v-for="item in nodeRow.btmItemsFrom" style="margin-left:3px;">
+              <el-tag effect="plain" style="margin-top: 3px;">
                   {{ item }}
               </el-tag>
-            </span>
+                </span>
+              </div>
             </el-descriptions-item>
             <el-descriptions-item :contentStyle="descriptionOption.contentStyle"
                                   :labelStyle="descriptionOption.labelStyle">
@@ -128,11 +130,13 @@
                 <i :class="icons.to"></i>
                 To绔被鍨�
               </template>
-              <span v-for="item in nodeRow.btmItemsTo" style="margin-left:2px;">
-              <el-tag effect="plain" style="margin-top: 2px;">
+              <div style="height: 60px;overflow-y: auto;display: flex;flex-wrap: wrap">
+                <span v-for="item in nodeRow.btmItemsTo" style="margin-left:2px;">
+                 <el-tag effect="plain" style="margin-top: 2px;">
                   {{ item }}
-              </el-tag>
-            </span>
+                 </el-tag>
+                </span>
+              </div>
             </el-descriptions-item>
             <el-descriptions-item :contentStyle="descriptionOption.contentStyle"
                                   :labelStyle="descriptionOption.labelStyle">
@@ -155,7 +159,7 @@
 
           </el-descriptions>
         </div>
-        <div style="margin-top: 20px">
+        <div style="margin-top: 30px">
           <h3>灞炴�ф睜鍒楄〃</h3>
           <avue-crud
             :data="tableData"
@@ -197,10 +201,6 @@
 
           <div class="centerForm">
             <el-form-item label="Form绔被鍨嬶細" label-width="110px">
-              <!--              <el-button v-if="!form.btmItemsFrom" plain size="mini" type="success"-->
-              <!--                         @click="FormItemReferChange('form')">娣诲姞-->
-              <!--              </el-button>-->
-              <!--              <el-input v-if="form.btmItemsFrom" v-model="form.btmItemsFrom"></el-input>-->
               <div style="display: flex; align-items: center">
                 <div style="height: 200px; width: 280px; border: 1px solid #bdbbbb;overflow-y: auto">
                   <!-- 鍐呭 -->
@@ -445,6 +445,7 @@
         highlightCurrentRow: true,
         searchMenuSpan: 8,
         searchLabelWidth: 100,
+        calcHeight: 30,
         column: [
           {
             label: '涓氬姟绫诲瀷鍚�',
@@ -575,7 +576,7 @@
         editBtn: false,
         refreshBtn: false,
         selection: false,
-        height: 300,
+        height: 200,
         addBtn: false,
         // index:false,
         column: [
@@ -597,6 +598,7 @@
           {
             label: '璇存槑',
             prop: 'description',
+            overHidden: true
           }
         ]
       },
@@ -623,6 +625,7 @@
         // index:false,
         addBtn: false,
         menu: false,
+        calcHeight: -40,
         column: [
           {
             label: '灞炴�у悕',
@@ -642,6 +645,7 @@
           {
             label: '璇存槑',
             prop: 'description',
+            overHidden: true
           }
         ]
       },
@@ -661,7 +665,7 @@
         desc: 'el-icon-chat-line-square'
       },
       bizLastIndex: null,
-      attrLastIndex:null
+      attrLastIndex: null
     }
   },
   created() {
@@ -873,8 +877,12 @@
         row,
         this.$refs.dialogAttrCrud,
         this.attrLastIndex,
-        (newIndex) => { this.attrLastIndex = newIndex; },
-        () => { this.selectList = []; }
+        (newIndex) => {
+          this.attrLastIndex = newIndex;
+        },
+        () => {
+          this.selectList = [];
+        }
       );
     },
 
@@ -904,8 +912,6 @@
       this.bizFormData = [];
       this.bizToData = [];
       this.dialogBottomData = [];
-      console.log(this.form);
-      console.log('--', this.nodeRow)
     },
 
     // 娣诲姞灞炴�ф睜 淇濆瓨
@@ -955,9 +961,13 @@
 
     //娣诲姞灞炴�ф睜 鎼滅储
     attrHandleSearch(params, done) {
-      this.searchAttrParams = {
-        "conditionMap[id]": "*" + params.id + "*"
-      };
+      if (func.isEmptyObject(params)) {
+        this.searchAttrParams = {};
+      } else {
+        this.searchAttrParams = {
+          "conditionMap[id]": "*" + params.id + "*"
+        };
+      }
       this.getAttrDialogDta();
       done();
     },
@@ -1011,8 +1021,12 @@
         row,
         this.$refs.bizTypeCrud,
         this.bizLastIndex,
-        (newIndex) => { this.bizLastIndex = newIndex; },
-        () => { this.selectList = []; }
+        (newIndex) => {
+          this.bizLastIndex = newIndex;
+        },
+        () => {
+          this.selectList = [];
+        }
       );
     },
 
@@ -1087,16 +1101,22 @@
         this.$message.error('form绔笟鍔$被鍨嬪拰to绔被鍨嬪潎涓嶈兘涓虹┖锛�')
         return;
       }
-      this.form.btmItemsFrom = this.bizFormData.map(item => item.name);
-      this.form.btmItemsTo = this.bizToData.map(item => item.name);
-      this.form.attributes = this.dialogBottomData.map(item => item.id);
-      let flag = this.title === 'add' ? true : false;
-      addAndEditLink(flag, this.form).then(res => {
-        if (res.data.code === 200) {
-          this.visible = false;
-          this.$message.success(res.data.msg);
-          this.resetForm();
-          this.getTreeList();
+      this.$refs.form.validate((valid) => {
+        if (valid) {
+          this.form.btmItemsFrom = this.bizFormData.map(item => item.name);
+          this.form.btmItemsTo = this.bizToData.map(item => item.name);
+          this.form.attributes = this.dialogBottomData.map(item => item.id);
+          let flag = this.title === 'add' ? true : false;
+          addAndEditLink(flag, this.form).then(res => {
+            if (res.data.code === 200) {
+              this.visible = false;
+              this.$message.success(res.data.msg);
+              this.resetForm();
+              this.getTreeList();
+            }
+          });
+        } else {
+          return false;
         }
       });
     },
diff --git a/Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/statusPool/index.vue b/Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/statusPool/index.vue
index 41fe5ec..ec3de1a 100644
--- a/Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/statusPool/index.vue
+++ b/Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/statusPool/index.vue
@@ -2,10 +2,10 @@
   <basic-container>
     <avue-crud
       ref="useCrud"
-      :table-loading="loading"
       :data="data"
       :option="option"
       :page.sync="page"
+      :table-loading="loading"
       @selection-change="selectChange"
       @row-click="rowClickHandler"
       @refresh-change="handleRefresh"
@@ -107,7 +107,7 @@
   name: "index",
   data() {
     return {
-      loading:false,
+      loading: false,
       data: [],
       option: {
         ...basicOption,
@@ -178,8 +178,8 @@
         ]
       },
       visible: false,
-      selectList:[],
-      lastIndex:null,
+      selectList: [],
+      lastIndex: null,
       page: {
         currentPage: 1,
         pageSize: 15,
@@ -205,12 +205,12 @@
     },
 
     // 琛ㄦ牸鍒锋柊
-    handleRefresh(){
+    handleRefresh() {
       this.getTreeList();
     },
 
     // 琛ㄦ牸澶氶��
-    selectChange(row){
+    selectChange(row) {
       this.selectList = row;
     },
 
@@ -232,8 +232,12 @@
         row,
         this.$refs.useCrud,
         this.lastIndex,
-        (newIndex) => { this.lastIndex = newIndex; },
-        () => { this.selectList = []; }
+        (newIndex) => {
+          this.lastIndex = newIndex;
+        },
+        () => {
+          this.selectList = [];
+        }
       );
     },
 
@@ -277,7 +281,7 @@
     },
 
     // 琛屽崟涓垹闄�
-    delRowClickHandler(row){
+    delRowClickHandler(row) {
       this.$confirm('鎮ㄧ‘瀹氳鍒犻櫎鎵�閫夋嫨鐨勬暟鎹悧锛�', '鎻愮ず', {
         confirmButtonText: '纭畾',
         cancelButtonText: '鍙栨秷',
@@ -315,18 +319,23 @@
     // 鍒涘缓鎴栫紪杈戜繚瀛�
     addSaveHandler() {
       const saveFunction = this.dialogTitle === 'add' ? addSave : editSave;
-
-      saveFunction(this.form).then(res => {
-        if (res.data.code === 200) {
-          this.$message.success(res.data.obj);
-          this.loading = true;
-          this.getTreeList();
-          this.visible = false;
+      this.$refs.form.validate((valid) => {
+        if (valid) {
+          saveFunction(this.form).then(res => {
+            if (res.data.code === 200) {
+              this.$message.success(res.data.obj);
+              this.loading = true;
+              this.getTreeList();
+              this.visible = false;
+            } else {
+              this.$message.error(res.data.obj);
+            }
+          }).catch(error => {
+            this.$message.error(error);
+          });
         } else {
-          this.$message.error(res.data.obj);
+          return false;
         }
-      }).catch(error => {
-        this.$message.error(error);
       });
     },
 
diff --git a/Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/versioning/index.vue b/Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/versioning/index.vue
index 14234ef..aeb9eea 100644
--- a/Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/versioning/index.vue
+++ b/Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/versioning/index.vue
@@ -354,17 +354,22 @@
     // 鏂板 缂栬緫 淇濆瓨
     addSaveHandler() {
       const saveFunction = this.dialogTitle === 'add' ? addVersionRule : updateVersionRule;
-
-      saveFunction(this.form).then(res => {
-        if (res.data.code === 200) {
-          this.$message.success(res.data.obj);
-          this.getTreeList();
-          this.visible = false;
+      this.$refs.form.validate((valid) => {
+        if (valid) {
+          saveFunction(this.form).then(res => {
+            if (res.data.code === 200) {
+              this.$message.success(res.data.obj);
+              this.getTreeList();
+              this.visible = false;
+            } else {
+              this.$message.error(res.data.obj);
+            }
+          }).catch(error => {
+            this.$message.error(error);
+          });
         } else {
-          this.$message.error(res.data.obj);
+          return false;
         }
-      }).catch(error => {
-        this.$message.error(error);
       });
     },
 
@@ -441,7 +446,7 @@
       }
       ;
 
-      this.checkViewData = this.checkViewData.filter(item => {
+      this.checkViewData = this.checkViewDataSearch.filter(item => {
         return item.source && item.source.includes(source);
       });
 
diff --git a/Source/plt-web/plt-web-ui/src/views/system/department/index.vue b/Source/plt-web/plt-web-ui/src/views/system/department/index.vue
index a87fcba..c8f755e 100644
--- a/Source/plt-web/plt-web-ui/src/views/system/department/index.vue
+++ b/Source/plt-web/plt-web-ui/src/views/system/department/index.vue
@@ -115,6 +115,7 @@
         refreshBtn: false,
         addBtn: false,
         menu: false,
+        calcHeight:80,
         column: [
           {
             label: '閮ㄩ棬',

--
Gitblit v1.9.3