From 986aa62ed00bee39363bab41b4eeb8259d446efd Mon Sep 17 00:00:00 2001
From: ludc <ludc@vci-tech.com>
Date: 星期四, 16 一月 2025 18:20:32 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/businessType/index.vue | 1171 +++++++++++++++++++++++----------------------------------
 1 files changed, 476 insertions(+), 695 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 00c4b4b..8810633 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
@@ -2,45 +2,16 @@
   <el-container v-loading="createViewLoading">
     <el-aside>
       <basic-container>
-        <div ref="TreeBox" style="height: calc(100vh - 144px);!important;">
-          <div class="headerCon">
-            <el-button icon="el-icon-plus" plain size="small" type="primary" @click="addClickHandler">鍒涘缓
-            </el-button>
-            <el-button icon="el-icon-edit" plain size="small" type="primary" @click="editClickHandler">淇敼
-            </el-button>
-            <el-button icon="el-icon-delete" plain size="small" type="danger" @click="deleteClickHandler">鍒犻櫎
-            </el-button>
-            <el-button icon="el-icon-download" plain size="small" type="primary" @click="exportClickHandler">瀵煎嚭
-            </el-button>
-            <el-button icon="el-icon-upload2" plain size="small" type="primary" @click="upLoadClickHandler">瀵煎叆
-            </el-button>
-            <el-button class="miniBtn" icon="el-icon-circle-plus-outline" plain size="small"
-                       type="primary" @click="createViewClickHandler">鍒涘缓瑙嗗浘
-            </el-button>
-            <el-button class="miniBtn" icon="el-icon-circle-plus-outline" plain size="small"
-                       type="primary" @click="indexClickHandler">鍒涘缓绱㈠紩
-            </el-button>
-            <el-button icon="el-icon-menu" plain size="small" style="width: 82px;text-align: center;padding-left: 1px"
-                       type="primary" @click="checkClickHandler">涓�鑷存�ф鏌�
-            </el-button>
-            <el-button class="miniBtn" icon="el-icon-delete" plain size="small"
-                       type="danger" @click="checkClickHandler">鍒犻櫎鏁版嵁
-            </el-button>
-            <el-button class="smallBtn" plain size="small"
-                       type="danger" @click="checkClickHandler">鍒犻櫎鍏ㄩ儴绫诲瀷
-            </el-button>
-            <el-button class="smallBtn" plain size="small" type="primary" @click="checkViewClickHandler">鏌ョ湅浣跨敤鑼冨洿
-            </el-button>
-          </div>
+        <div ref="TreeBox" style="height: calc(100vh - 154px);!important;">
           <!-- 宸︿晶鏍� -->
-          <div style="height:  calc(100vh - 330px);">
+          <div style="height:  calc(100vh - 190px);">
             <avue-tree ref="tree" v-loading="treeLoading" :data="treeData" :option="treeOption" @node-click="nodeClick">
-          <span slot-scope="{ node, data }" class="el-tree-node__label">
-           <span style="font-size: 15px">
-              <i class="el-icon-s-promotion"></i>
-                {{ (node || {}).label }}
-            </span>
-          </span>
+              <span slot-scope="{ node, data }" class="el-tree-node__label">
+               <span>
+                  <icon-show :name="data.icon"></icon-show>
+                    {{ (node || {}).label }}
+                </span>
+              </span>
             </avue-tree>
           </div>
         </div>
@@ -48,11 +19,69 @@
     </el-aside>
     <el-main>
       <basic-container>
-        <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="灞炴�т俊鎭�">
+        <div>
+          <el-button v-if="permissionList.addBtn" class="button-custom-icon" plain size="small" type="primary"
+                     @click="addClickHandler">
+            <icon-show :name="permissionList.addBtn.source"></icon-show>
+            鍒涘缓
+          </el-button>
+          <el-button v-if="permissionList.editBtn" class="button-custom-icon" plain size="small" type="primary"
+                     @click="editClickHandler">
+            <icon-show :name="permissionList.editBtn.source"></icon-show>
+            淇敼
+          </el-button>
+          <el-button v-if="permissionList.delBtn" class="button-custom-icon" plain size="small" type="danger"
+                     @click="deleteClickHandler">
+            <icon-show :name="permissionList.delBtn.source"></icon-show>
+            鍒犻櫎
+          </el-button>
+          <el-button v-if="permissionList.importBtn" class="button-custom-icon" plain size="small" type="primary"
+                     @click="upLoadClickHandler">
+            <icon-show :name="permissionList.importBtn.source"></icon-show>
+            瀵煎叆
+          </el-button>
+          <el-button v-if="permissionList.exportBtn" class="button-custom-icon" plain size="small" type="primary"
+                     @click="exportClickHandler">
+            <icon-show :name="permissionList.exportBtn.source"></icon-show>
+            瀵煎嚭
+          </el-button>
+          <el-button v-if="permissionList.createViewBtn" class="button-custom-icon" plain size="small"
+                     type="primary" @click="createViewClickHandler">
+            <icon-show :name="permissionList.createViewBtn.source"></icon-show>
+            鍒涘缓瑙嗗浘
+          </el-button>
+          <el-button v-if="permissionList.createIndexBtn" class="button-custom-icon" plain size="small"
+                     type="primary" @click="indexClickHandler">
+            <icon-show :name="permissionList.createIndexBtn.source"></icon-show>
+            鍒涘缓绱㈠紩
+          </el-button>
+          <el-button v-if="permissionList.consistencyCheckBtn" class="button-custom-icon" plain size="small" type="primary"
+                     @click="checkClickHandler">
+            <icon-show :name="permissionList.consistencyCheckBtn.source"></icon-show>
+            涓�鑷存�ф鏌�
+          </el-button>
+          <el-button v-if="permissionList.deleteDataBtn" class="button-custom-icon" plain size="small" type="danger"
+                     @click="checkClickHandler">
+            <icon-show :name="permissionList.deleteDataBtn.source"></icon-show>
+            鍒犻櫎鏁版嵁
+          </el-button>
+          <el-button v-if="permissionList.deleteEveryTypeBtn" class="button-custom-icon" plain size="small" type="danger"
+                     @click="checkClickHandler">
+            <icon-show :name="permissionList.deleteEveryTypeBtn.source"></icon-show>
+            鍒犻櫎鍏ㄩ儴绫诲瀷
+          </el-button>
+          <el-button v-if="permissionList.viewTheScopeBtn" class="button-custom-icon" plain size="small" type="primary"
+                     @click="checkViewClickHandler">
+            <icon-show :name="permissionList.viewTheScopeBtn.source"></icon-show>
+            鏌ョ湅浣跨敤鑼冨洿
+          </el-button>
+        </div>
+        <div style="display: flex;justify-content:left;margin-top: 15px;">
+          <div class="descBox" style="width: 40%">
+            <el-descriptions :column="2" border class="margin-top" size="medium" title="灞炴�т俊鎭�">
               <el-descriptions-item :contentStyle="descriptionOption.contentStyle"
-                                    :labelStyle="descriptionOption.labelStyle">
+                                    :labelStyle="descriptionOption.labelStyle"
+                                    :span="12">
                 <template slot="label">
                   鍚嶇О
                 </template>
@@ -65,19 +94,29 @@
                 </template>
                 <el-tag v-if="nodeRow.name">{{ nodeRow.name }}</el-tag>
               </el-descriptions-item>
-              <el-descriptions-item :contentStyle="descriptionOption.contentStyle"
+              <el-descriptions-item :contentStyle="descriptionOption.contentStyle+';min-width: 100px;'"
                                     :labelStyle="descriptionOption.labelStyle">
+                <template slot="label">
+                  鍥炬爣
+                </template>
+                <span class="avue-icon">
+                  <icon-show :name="nodeRow.imageName"></icon-show>
+                </span>
+              </el-descriptions-item>
+              <el-descriptions-item :contentStyle="descriptionOption.contentStyle"
+                                    :labelStyle="descriptionOption.labelStyle"
+                                    :span="12">
                 <template slot="label">
                   瀹炵幇绫�
                 </template>
                 <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-tag style="max-width: 100%;overflow: hidden;display: block">{{ nodeRow.implClass }}</el-tag>
                 </el-tooltip>
               </el-descriptions-item>
               <el-descriptions-item :contentStyle="descriptionOption.contentStyle"
-                                    :labelStyle="descriptionOption.labelStyle">
+                                    :labelStyle="descriptionOption.labelStyle"
+                                    :span="12">
                 <template slot="label">
                   鎻忚堪
                 </template>
@@ -85,7 +124,7 @@
               </el-descriptions-item>
             </el-descriptions>
           </div>
-          <div class="descBox">
+          <div class="descBox" style="width: 24%;">
             <el-descriptions :column="1" border class="margin-top" size="medium" title="鐗堟湰瑙勫垯">
               <el-descriptions-item :contentStyle="descriptionOption.contentStyle"
                                     :labelStyle="descriptionOption.labelStyle">
@@ -137,7 +176,7 @@
 
             </el-descriptions>
           </div>
-          <div class="descBox">
+          <div class="descBox" style="width: calc(36% - 40px);margin-right: 0">
             <el-descriptions :column="1" border class="margin-top" size="medium" title="鐢熷懡鍛ㄦ湡">
               <el-descriptions-item :contentStyle="descriptionOption.contentStyle"
                                     :labelStyle="descriptionOption.labelStyle">
@@ -146,11 +185,21 @@
                 </template>
                 <el-tag v-if="nodeRow.lifeCycleId">{{ nodeRow.lifeCycleId }}</el-tag>
               </el-descriptions-item>
+              <el-descriptions-item :contentStyle="descriptionOption.contentStyle"
+                                    :labelStyle="descriptionOption.labelStyle">
+                <template slot="label">
+                  澶囬�夌敓鍛藉懆鏈�
+                </template>
+                <div v-if="nodeRow.lifeCycleIds">
+                  <el-tag v-for="item in nodeRow.lifeCycleIds.split(',')" style="margin-right: 5px;">{{ item }}</el-tag>
+                </div>
+
+              </el-descriptions-item>
             </el-descriptions>
           </div>
         </div>
-        <div style="margin-top: 30px">
-          <h3>灞炴�у垪琛�</h3>
+        <div style="margin-top: 25px;position: relative">
+          <h3 style="margin: 0;position: absolute;top:0;z-index: 1000;">灞炴�у垪琛�</h3>
           <avue-crud
             :data="attrData"
             :option="attrOption">
@@ -168,130 +217,110 @@
       class="avue-dialog"
       width="75%"
       @close="addDialogClose">
-      <el-form ref="form" :model="form" :rules="rules" label-width="95px">
+      <el-form ref="form" :model="form" :rules="rules" label-width="95px" size="small">
         <div class="dialogForm">
-          <div class="leftForm">
+          <div class="leftForm" style="width: 40%">
             <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-row :span="24">
+              <el-col :span="12">
+                <el-form-item label="鏍囩锛�" prop="name">
+                  <el-input v-model="form.name"></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="鍥炬爣锛�" prop="imageName">
+                  <input-icon v-model="form.imageName" placeholder="璇烽�夋嫨鍥炬爣"></input-icon>
+                </el-form-item>
+              </el-col>
+            </el-row>
+            <el-form-item label="缁ф壙鑷細" prop="fName">
+              <avue-input-tree v-model="form.fName"
+                               :dic="inheritTreeData"
+                               :disabled="title === 'add'"
+                               :props="{label: 'id', value: 'id',children: 'children'}"
+                               placeholder="璇烽�夋嫨涓氬姟绫诲瀷"></avue-input-tree>
             </el-form-item>
-            <el-form-item label="缁ф壙鑷細">
-              <div style="display: flex;gap: 5px;align-items: center">
-                <el-input v-model="form.fName" :readOnly="true"></el-input>
-                <el-button :disabled="title === 'add'" plain size="small" style="margin-left: 5px;height: 30px"
-                           type="success"
-                           @click="inheritClickHandler">閫夋嫨
-                </el-button>
-              </div>
-            </el-form-item>
-            <el-form-item label="瀹炵幇绫伙細">
+            <el-form-item label="瀹炵幇绫伙細" prop="implClass">
               <el-input v-model="form.implClass"></el-input>
             </el-form-item>
-            <el-form-item label="鎻忚堪">
+            <el-form-item label="鎻忚堪" prop="description">
               <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" @change="revLevelChange">
-                <el-option label="涓嶅彲淇" value="0"></el-option>
-                <el-option label="閲囩敤涓�绾х増鏈鐞�" value="1"></el-option>
-                <el-option label="閲囩敤浜岀骇鐗堟湰绠$悊" value="2"></el-option>
-              </el-select>
+          <div class="centerForm" style="width: 26%">
+            <el-form-item label="鐗堟湰瑙勫垯锛�" label-width="100px" prop="revLevel" style="margin-bottom: 10px;">
+              <el-radio v-model="form.revLevel" label="0" @input="revLevelChange">涓嶅彲淇</el-radio>
+              <br>
+              <el-radio v-model="form.revLevel" label="1" @input="revLevelChange">閲囩敤涓�绾х増鏈鐞�</el-radio>
+              <br>
+              <el-radio v-model="form.revLevel" label="2" @input="revLevelChange">閲囩敤浜岀骇鐗堟湰绠$悊</el-radio>
             </el-form-item>
-            <el-form-item v-if="form.revLevel !== '0'" label="鐗堟湰鍙疯鍒欙細" label-width="110px" prop="revisionRuleId">
-              <div style="display: flex;gap: 5px;align-items: center">
-                <el-input v-model="form.revisionRuleId" :readOnly="true"></el-input>
-                <el-button :disabled="form.inputRevisionFlag" 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"
-                  @change="form.revisionRuleId = ''">
-                </el-switch>
-              </div>
+            <el-form-item v-if="form.revLevel !== '0'" label="鐗堟湰鍙疯鍒欙細" label-width="100px" prop="revisionRuleId"
+                          style="margin-bottom: 5px;">
+              <avue-select v-model="form.revisionRuleId"
+                           :dic="versionData"
+                           :disabled="form.inputRevisionFlag"
+                           :filterable="true"
+                           :props="{label: 'id', value: 'id'}"
+                           placeholder="璇烽�夋嫨鐗堟湰鍙疯鍒�"></avue-select>
+              <el-switch
+                v-model="form.inputRevisionFlag"
+                active-text="鎵嬪伐杈撳叆"
+                style="width: 300px"
+                @change="form.revisionRuleId = ''">
+              </el-switch>
             </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 v-if="form.revLevel !== '0'" label="鍒嗛殧绗︼細" label-width="100px" prop="delimiter"
+                          style="margin-bottom: 5px;">
+              <el-radio v-model="form.delimiter" label="">&nbsp;&nbsp;</el-radio>
+              <el-radio v-model="form.delimiter" label=".">.</el-radio>
+              <el-radio v-model="form.delimiter" label="-">-</el-radio>
             </el-form-item>
-            <el-form-item v-if="form.revLevel !== '0' && form.revLevel !== '1'" label="鐗堟鍙疯鍒欙細" label-width="110px"
+            <el-form-item v-if="form.revLevel !== '0' && form.revLevel !== '1'" label="鐗堟鍙疯鍒欙細" label-width="100px"
                           prop="versionRule">
-              <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-radio v-model="form.versionRule" label="0">1.2.3...</el-radio>
+              <el-radio v-model="form.versionRule" label="1">a.b.c...</el-radio>
+              <el-radio v-model="form.versionRule" label="2">0.1.2...</el-radio>
             </el-form-item>
           </div>
-          <div class="rightForm">
+          <div class="rightForm" style="width: 25%">
             <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>
+              <avue-select v-model="form.lifeCycleId"
+                           :dic="lifeData"
+                           :filterable="true"
+                           :props="{label: 'id', value: 'id'}"
+                           placeholder="璇烽�夋嫨鐢熷懡鍛ㄦ湡"></avue-select>
             </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 label="澶囬�夌敓鍛藉懆鏈熷垪琛細" label-width="138px" prop="subLifeCycleIdList">
+              <avue-select v-model="form.subLifeCycleIdList"
+                           :dic="subLifeData"
+                           :filterable="true"
+                           :props="{label: 'id', value: 'id'}"
+                           multiple
+                           placeholder="璇烽�夋嫨鐢熷懡鍛ㄦ湡"
+                           type="tree"
+                           @change="subLifeChange"></avue-select>
             </el-form-item>
           </div>
         </div>
       </el-form>
       <div class="bottomForm">
-        <h3>灞炴�ф睜鍒楄〃</h3>
         <avue-crud
           :data="dialogAttrData"
           :option="dialogAttrOption"
+          size="mini"
           @row-del="dialogBottomAttrDel">
           <template slot="menuLeft">
-            <el-button icon="el-icon-plus" size="small" type="primary" @click="addDialogClickHandler">鍒涘缓</el-button>
+            <h3 style="display: inline-block;margin-right: 20px;margin-bottom: 10px;">灞炴�ф睜鍒楄〃</h3>
+            <el-button icon="el-icon-plus" size="mini" 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>
+         <el-button size="small" type="primary" @click="addDialogSavaHandler">纭� 瀹�</el-button>
+         <el-button size="small" @click="addDialogClose">鍙� 娑�</el-button>
         </span>
     </el-dialog>
 
@@ -321,89 +350,8 @@
       >
       </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-dialog
-      v-dialogDrag
-      :visible.sync="dialogInheritVisible"
-      append-to-body="true"
-      class="avue-dialog"
-      title="缁ф壙涓氬姟绫诲瀷"
-      width="30%"
-      @close="inheritClose"
-    >
-      <avue-tree ref="inheritTree" v-model="treeForm" :data="inheritTreeData" :option="inheritTreeOption"
-                 @node-click="inheritNodeClick">
-         <span slot-scope="{ node, data }" class="el-tree-node__label">
-           <span style="font-size: 15px">
-              <i class="el-icon-s-promotion"></i>
-                {{ (node || {}).label }}
-            </span>
-          </span>
-      </avue-tree>
-      <span slot="footer" class="dialog-footer">
-         <el-button @click="inheritClose">鍙� 娑�</el-button>
-         <el-button type="primary" @click="inheritSaveClickHandler">纭� 瀹�</el-button>
+         <el-button size="small" type="primary" @click="dialogAttrAddClickHandler">纭� 瀹�</el-button>
+         <el-button size="small" @click="dialogAttrClose">鍙� 娑�</el-button>
         </span>
     </el-dialog>
 
@@ -446,8 +394,8 @@
         :table-loading="conCheckLoading">
       </avue-crud>
       <span slot="footer" class="dialog-footer">
-         <el-button @click="conCheckVisible = false">鍙� 娑�</el-button>
-         <el-button type="primary" @click="repairClickHandler">淇� 澶�</el-button>
+         <el-button size="small" type="primary" @click="repairClickHandler">淇� 澶�</el-button>
+         <el-button size="small" @click="conCheckVisible = false">鍙� 娑�</el-button>
         </span>
     </el-dialog>
 
@@ -506,13 +454,13 @@
           :option="indexAttrOption"
           @row-click="indexAttrRowClick"></avue-crud>
         <span slot="footer" class="dialog-footer">
-         <el-button @click="indexAttrVisible = false">鍙� 娑�</el-button>
          <el-button type="primary" @click="indexAttrClickAddHandler">纭� 瀹�</el-button>
+         <el-button @click="indexAttrVisible = false">鍙� 娑�</el-button>
         </span>
       </el-dialog>
       <span slot="footer" class="dialog-footer">
-         <el-button @click="indexDialogClose">鍙� 娑�</el-button>
-         <el-button type="primary" @click="indexClickAddHandler">淇� 瀛�</el-button>
+         <el-button size="small" type="primary" @click="indexClickAddHandler">淇� 瀛�</el-button>
+         <el-button size="small" @click="indexDialogClose">鍙� 娑�</el-button>
         </span>
     </el-dialog>
 
@@ -540,6 +488,7 @@
 import func from "@/util/func";
 import {getUsedVersionRuleList, getVersionRuleAllList} from "@/api/modeling/version/api";
 import {gridLifeCycle} from "@/api/modeling/lifeCycle/api";
+import {mapGetters} from "vuex";
 
 export default {
   name: "index",
@@ -627,10 +576,12 @@
         index: false,
         selection: false,
         refreshBtn: false,
+        header: false,
         column: [
           {
             label: '绫诲瀷鍚�',
             prop: 'id',
+            width: 250,
           },
           {
             label: '鎿嶄綔',
@@ -639,6 +590,7 @@
           {
             label: '鐘舵��',
             prop: 'status',
+            width: 250,
           }
         ]
       },
@@ -655,6 +607,7 @@
         searchMenuSpan: 8,
         refreshBtn: false,
         selection: false,
+        header: false,
         column: [
           {
             label: '鍚嶇О',
@@ -682,73 +635,11 @@
       fileUrl: 'api/linkTypeController/impData',
       createViewLoading: false, // 鍒涘缓瑙嗗浘
       versionAddFlag: false,
-      treeForm: {},
-      inheritNodeRow: {},
-      inheritTreeOption: {
-        height: 'auto',
-        defaultExpandAll: false,
-        menu: false,
-        addBtn: false,
-        props: {
-          label: 'id',
-          value: 'id',
-          children: 'children'
-        }
-      },
       inheritTreeData: [],
-      dialogInheritVisible: false,
-      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,
+      lifeData: [],//鐢熷懡鍛ㄦ湡涓嬫媺鏁版嵁
+      subLifeData: [],//澶囬�夌敓鍛藉懆鏈熶笅鎷夋暟鎹�
+      allLifeData: [],
+      versionData: [],//鐗堟湰瑙勫垯鏁版嵁
       dialogAttrSelectList: [],
       searchAttrParams: {},
       dialogAttrLoading: false,
@@ -768,22 +659,29 @@
         highlightCurrentRow: true,
         height: 450,
         searchMenuSpan: 8,
+        header: false,
+        selectable: function (row) {
+          return row.selectable;
+        },
         column: [
           {
             label: '灞炴�у悕',
             prop: 'id',
             sortable: true,
             search: true,
+            width: 260
           },
           {
             label: '灞炴�х被鍨�',
             prop: 'attributeDataType',
             sortable: true,
+            width: 150,
           },
           {
             label: '鍒濆鍊�',
             prop: 'defaultValue',
             sortable: true,
+            width: 200
           },
           {
             label: '璇存槑',
@@ -800,6 +698,9 @@
           {required: true, message: '璇疯緭绫诲瀷鍚嶇О', trigger: 'blur'},
           {validator: this.validateEnglishOnly, trigger: 'blur'}
         ],
+        imageName: [
+          {required: true, message: '璇烽�夋嫨鍥炬爣', trigger: 'submit'},
+        ],
         revLevel: [
           {required: true, message: '璇烽�夋嫨鐗堟湰瑙勫垯', trigger: 'blur'},
         ],
@@ -813,30 +714,37 @@
         editBtn: false,
         refreshBtn: false,
         selection: false,
-        height: 210,
+        height: 220,
         addBtn: false,
+        gridBtn: false,
+        columnBtn: false,
+        menuWidth: 100,
         // index:false,
         column: [
           {
             label: '灞炴�у悕',
             prop: 'id',
             sortable: true,
+            width: 260,
           },
           {
 
             prop: 'btmTypeId',
             label: '涓氬姟绫诲瀷',
-            sortable: true
+            sortable: true,
+            width: 200
           },
           {
             label: '灞炴�х被鍨�',
             prop: 'attributeDataType',
             sortable: true,
+            width: 150,
           },
           {
             label: '鍒濆鍊�',
             prop: 'defaultValue',
             sortable: true,
+            width: 200,
           },
           {
             label: '璇存槑',
@@ -860,22 +768,26 @@
           {
             prop: 'id',
             label: '灞炴�у悕',
-            sortable: true
+            sortable: true,
+            width: 260
           },
           {
             prop: 'btmTypeId',
             label: '涓氬姟绫诲瀷',
-            sortable: true
+            sortable: true,
+            width: 200
           },
           {
             prop: 'attributeDataType',
             label: '灞炴�х被鍨�',
-            sortable: true
+            sortable: true,
+            width: 150
           },
           {
             prop: 'defaultValue',
             label: '榛樿鍊�',
-            sortable: true
+            sortable: true,
+            width: 200
           },
           {
             prop: 'description',
@@ -890,13 +802,14 @@
         fName: '', // 缁ф壙鑷�
         implClass: '', // 瀹炵幇绫�
         description: '', // 鎻忚堪
-        revLevel: '', // 鐗堟湰瑙勫垯
+        revLevel: '2', // 鐗堟湰瑙勫垯
         revisionRuleId: '',// 鐗堟湰鍙疯鍒�
         inputRevisionFlag: false, // 鎵嬪伐杈撳叆,
         delimiter: '', // 鍒嗛殧绗�
         versionRule: '0', // 鐗堟鍙疯鍒�
         lifeCycleId: '', // 鐢熷懡鍛ㄦ湡
         subLifeCycleId: '', // 鐢熷懡鍛ㄦ湡澶囬�夊垪琛�,
+        subLifeCycleIdList: [],
         apNameArray: "", // 灞炴�ф睜鍒楄〃鈥欙紝鈥樺垎闅�
       },
       nodeRow: {},
@@ -908,7 +821,8 @@
         props: {
           label: 'TreeName',
           value: 'id',
-          children: 'children'
+          children: 'children',
+          name: 'name'
         }
       },
       treeData: [
@@ -919,21 +833,52 @@
         }
       ],
       descriptionOption: {
-        labelStyle: 'text-align:center;width:100px;',
-        contentStyle: 'max-width:200px;text-align:center;word-break;break-all;'
+        labelStyle: 'text-align:center;width:110px;',
+        contentStyle: 'min-width:200px;text-align:center;word-break:break-all;'
       },
       icons: {
         id: 'el-icon-finished',
         name: 'el-icon-tickets',
         desc: 'el-icon-chat-line-square'
       },
-      treeLoading:false
+      treeLoading: false
     }
   },
   created() {
     this.getTreeList();
+    this.getVersionList();
+    this.getLifeCycle();
   },
-  mounted() {
+  computed: {
+    ...mapGetters(["permission"]),
+    permissionList() {
+      return {
+        addBtn: this.vaildData(this.permission[this.$route.query.id].ADD, false),
+        delBtn: this.vaildData(this.permission[this.$route.query.id].DELETE, false),
+        editBtn: this.vaildData(this.permission[this.$route.query.id].EDIT, false),
+        exportBtn: this.vaildData(this.permission[this.$route.query.id].EXPORT, false),
+        importBtn: this.vaildData(this.permission[this.$route.query.id].IMPORT, false),
+        consistencyCheckBtn: this.vaildData(this.permission[this.$route.query.id].USE, false),
+        createViewBtn: this.vaildData(this.permission[this.$route.query.id].ADD2, false),
+        createIndexBtn: this.vaildData(this.permission[this.$route.query.id].ADD3, false),
+        deleteDataBtn: this.vaildData(this.permission[this.$route.query.id].DELETE2, false),
+        deleteEveryTypeBtn: this.vaildData(this.permission[this.$route.query.id].DELETE3, false),
+        viewTheScopeBtn: this.vaildData(this.permission[this.$route.query.id].SEARCH, false),
+      };
+    },
+  },
+  watch: {
+    'form.lifeCycleId': {
+      handler(newval) {
+        if (this.form.lifeCycleId) {
+          this.subLifeData = this.allLifeData.filter(item => {
+            return item.id != this.form.lifeCycleId
+          });
+        } else {
+          this.subLifeData = this.allLifeData
+        }
+      },
+    }
   },
   methods: {
     //鏍戣〃鏌ヨ
@@ -943,6 +888,7 @@
         const data = res.data.data.map(item => {
           this.processChildren(item); // 澶勭悊姣忎釜鑺傜偣
           item.attributes.TreeName = item.attributes.id;
+          item.attributes.icon = item.attributes.imageName;
           return item.attributes; // 杩斿洖澶勭悊鍚庣殑 attributes
         });
         this.treeData[0].children = data;
@@ -956,6 +902,7 @@
       if (item.children && item.children.length > 0) {
         item.attributes.children = item.children.map(child => {
           child.attributes.TreeName = child.attributes.id;
+          child.attributes.icon = child.attributes.imageName;
           this.processChildren(child); // 閫掑綊澶勭悊姣忎釜瀛愯妭鐐�
           return child.attributes; // 鍙繑鍥炲瓙鑺傜偣鐨� attributes
         });
@@ -967,7 +914,18 @@
       this.attrData = row.attributes ? JSON.parse(row.attributes) : [];
       this.nodeRow = row;
     },
-
+    //鑾峰彇鐗堟湰瑙勫垯鏁版嵁
+    getVersionList() {
+      getVersionRuleAllList().then(res => {
+        this.versionData = res.data.data;
+      });
+    },
+    //鑾峰彇鐢熷懡鍛ㄦ湡鏁版嵁
+    getLifeCycle() {
+      gridLifeCycle().then(res => {
+        this.allLifeData = res.data.data;
+      });
+    },
     // 鍒涘缓鎸夐挳
     addClickHandler() {
       if (func.isEmptyObject(this.nodeRow)) {
@@ -976,336 +934,20 @@
       }
       this.title = 'add';
       this.form.fName = this.nodeRow.id === 'topNode' ? "" : this.nodeRow.id;
-      console.log(this.nodeRow);
+      this.lifeData = this.allLifeData;
+      this.subLifeData = this.allLifeData;
       this.form.inputRevisionFlag = JSON.parse(this.form.inputRevisionFlag); // 瀛楃涓瞗alse杞崲涓哄竷灏斿��
       this.visible = true;
     },
 
-    // 鍏抽棴缁ф壙瀵硅瘽妗�
-    inheritClose() {
-      this.dialogInheritVisible = false;
-      this.$refs.inheritTree.setCurrentKey(null); // 鍙栨秷褰撳墠閫変腑鐨勮妭鐐�
-    },
-
-    // 缁ф壙鎸夐挳
-    inheritClickHandler() {
-      this.dialogInheritVisible = true;
-    },
-
-    // 缁ф壙鏍戣鐐瑰嚮
-    inheritNodeClick(row) {
-      this.inheritNodeRow = row;
-    },
-
-    // 缁ф壙鏍戜繚瀛�
-    inheritSaveClickHandler() {
-      this.form.fName = this.inheritNodeRow.id;
-      this.dialogInheritVisible = false;
-    },
-
-    // 瀵硅瘽妗� 灞炴�ф睜鍒楄〃澧炲姞鎸夐挳
-    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;
-      }
-    },
-
-    // 灞炴�ф睜鍒犻櫎
-    dialogBottomAttrDel(form, index) {
-      this.dialogAttrData.splice(index, 1);
-    },
-
-    // 鐗堟湰瑙勫垯绠$悊娣诲姞
-    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(); // 楠岃瘉閫氳繃
-    },
-
-    // 娓呯┖琛ㄥ崟
-    resetForm() {
-      const form = {
-        id: '', // 绫诲瀷鍚嶇О
-        name: '', // 鏍囩
-        fName: '', // 缁ф壙鑷�
-        implClass: '', // 瀹炵幇绫�
-        description: '', // 鎻忚堪
-        revLevel: '', // 鐗堟湰瑙勫垯
-        revisionRuleId: '',// 鐗堟湰鍙疯鍒�
-        inputRevisionFlag: 'false', // 鎵嬪伐杈撳叆
-        delimiter: '', // 鍒嗛殧绗�
-        versionRule: '0', // 鐗堟鍙疯鍒�
-        lifeCycleId: '', // 鐢熷懡鍛ㄦ湡
-        subLifeCycleId: '', // 鐢熷懡鍛ㄦ湡澶囬�夊垪琛�,
-        apNameArray: "", // 灞炴�ф睜鍒楄〃鈥欙紝鈥樺垎闅�
-      };
-      this.dialogLifeTable = []; // 灏嗙敓鍛藉懆鏈熻〃鏍肩疆绌�
-      this.dialogAttrData = []; // 灏嗗睘鎬ф睜琛ㄦ牸缃┖
-      this.form = {...form};
-      this.$refs.form.clearValidate();
-    },
-
-    // 鏂板缂栬緫瀵硅瘽妗嗗彇娑�
-    addDialogClose() {
-      this.resetForm();
-      this.visible = false;
-    },
-
-    // 鐗堟湰瑙勫垯鍒囨崲 缃┖鍏朵粬鏉′欢
-    revLevelChange() {
-      this.form.versionRule = "";
-      this.form.inputRevisionFlag = false;
-      this.form.delimiter = "";
-      this.form.versionRule = "0";
-      this.form.revisionRuleId = "";
-    },
-
     // 鏂板缂栬緫淇濆瓨
     addDialogSavaHandler() {
-      if (!this.form.inputRevisionFlag && (!this.form.revisionRuleId || this.form.revisionRuleId === "")) {
+      if (this.form.revLevel !== '0' && !this.form.inputRevisionFlag && (!this.form.revisionRuleId || this.form.revisionRuleId === "")) {
         this.$message.error('璇锋鏌ョ増鏈彿瑙勫垯涓嶈兘涓虹┖');
         return;
       }
-      this.form.subLifeCycleId = this.dialogLifeTable ? this.dialogLifeTable.map(item => item.id).join(',') : "";
+      this.form.lifeCycleIds = this.form.subLifeCycleIdList.join(',');
+      this.form.subLifeCycleId = this.form.subLifeCycleIdList.join(',');
       this.form.apNameArray = this.dialogAttrData ? this.dialogAttrData.map(item => item.id).join(',') : "";
       this.$refs.form.validate((valid) => {
         const saveFunction = this.title === 'add' ? addLifeCycle : updateLifeCycle;
@@ -1355,13 +997,194 @@
       this.form = {...this.nodeRow};
       this.form.inputRevisionFlag = JSON.parse(this.form.inputRevisionFlag); // 瀛楃涓瞗alse杞崲涓哄竷灏斿��
       // this.form.fName = this.nodeRow.id === 'topNode' ? "" : this.nodeRow.id;
-      this.dialogLifeTable = (this.nodeRow.lifeCycleIds && this.nodeRow.lifeCycleIds.trim())
-        ? this.nodeRow.lifeCycleIds.split(',').map(item => ({id: item.trim()}))
-        : [];
+      this.form.subLifeCycleIdList = this.nodeRow.lifeCycleIds ? this.nodeRow.lifeCycleIds.split(',') : [];
       this.dialogAttrData = this.nodeRow.attributes ? JSON.parse(this.nodeRow.attributes) : [];
+
+      function processChildren(item, fName) {
+        if (item.children && item.children.length > 0) {
+          item.children = item.children.map(child => {
+            processChildren(child, fName); // 閫掑綊澶勭悊姣忎釜瀛愯妭鐐�
+            if (fName == child.id) {
+              child.disabled = true;
+            } else {
+              child.disabled = false;
+            }
+            return child;
+          });
+        }
+      };
+      const inheritTreeData = this.inheritTreeData.map(item => {
+        processChildren(item, this.form.id); // 澶勭悊姣忎釜鑺傜偣
+        if (this.form.id == item.id) {
+          item.disabled = true;
+        } else {
+          item.disabled = false;
+        }
+        return item;
+      });
+      this.inheritTreeData = inheritTreeData
       this.title = 'edit';
       this.visible = true;
-      console.log(this.form);
+    },
+
+    subLifeChange(data) {
+      if (data.value.length == 0) {
+        this.lifeData = this.allLifeData
+      } else {
+        this.lifeData = this.allLifeData.filter(item => {
+          return !data.value.includes(item.id)
+        });
+      }
+    },
+    // 瀵硅瘽妗� 灞炴�ф睜鍒楄〃澧炲姞鎸夐挳
+    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.map(item => {
+          item.selectable = !this.dialogAttrData.some(existingItem => existingItem.id === item.id);
+          return item;
+        });
+        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) {
+      if (!row.selectable) {
+        return;
+      }
+      func.rowClickHandler(
+        row,
+        this.$refs.dialogAttrCrud,
+        this.attrLastIndex,
+        (newIndex) => {
+          this.attrLastIndex = newIndex;
+        },
+        () => {
+          this.dialogAttrSelectList = [row];
+        }
+      );
+    },
+
+    //娣诲姞灞炴�ф睜 鏉℃暟
+    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() {
+      this.dialogAttrSelectList.forEach(item => {
+        this.dialogAttrData.push({
+          id: item.id,
+          attributeDataType: item.attributeDataType,
+          defaultValue: item.defaultValue,
+          description: item.description
+        });
+      });
+      this.attrPollDialogVisible = false;
+    },
+
+    // 灞炴�ф睜鍒犻櫎
+    dialogBottomAttrDel(form, index) {
+      this.dialogAttrData.splice(index, 1);
+    },
+
+    // 鍙兘杈撳叆鑻辨枃姝e垯鏍¢獙
+    validateEnglishOnly(rule, value, callback) {
+      if (!value) {
+        return callback(new Error('璇疯緭鍏ョ被鍨嬪悕绉�'));
+      }
+      if (!/^[A-Za-z]+$/.test(value)) {
+        return callback(new Error('鍙兘杈撳叆鑻辨枃瀛楁瘝'));
+      }
+      callback(); // 楠岃瘉閫氳繃
+    },
+
+    // 娓呯┖琛ㄥ崟
+    resetForm() {
+      const form = {
+        id: '', // 绫诲瀷鍚嶇О
+        name: '', // 鏍囩
+        fName: '', // 缁ф壙鑷�
+        implClass: '', // 瀹炵幇绫�
+        description: '', // 鎻忚堪
+        revLevel: '2', // 鐗堟湰瑙勫垯
+        revisionRuleId: '',// 鐗堟湰鍙疯鍒�
+        inputRevisionFlag: 'false', // 鎵嬪伐杈撳叆
+        delimiter: '', // 鍒嗛殧绗�
+        versionRule: '0', // 鐗堟鍙疯鍒�
+        lifeCycleId: '', // 鐢熷懡鍛ㄦ湡
+        subLifeCycleId: '', // 鐢熷懡鍛ㄦ湡澶囬�夊垪琛�,
+        subLifeCycleIdList: [],
+        lifeCycleIds: '',
+        apNameArray: "", // 灞炴�ф睜鍒楄〃鈥欙紝鈥樺垎闅�
+      };
+      this.dialogAttrData = []; // 灏嗗睘鎬ф睜琛ㄦ牸缃┖
+      this.form = {...form};
+      this.$refs.form.clearValidate();
+    },
+
+    // 鏂板缂栬緫瀵硅瘽妗嗗彇娑�
+    addDialogClose() {
+      this.resetForm();
+      this.visible = false;
+    },
+
+    // 鐗堟湰瑙勫垯鍒囨崲 缃┖鍏朵粬鏉′欢
+    revLevelChange() {
+      this.form.inputRevisionFlag = false;
+      this.form.delimiter = "";
+      this.form.versionRule = "0";
+      this.form.revisionRuleId = "";
     },
 
     // 鍒犻櫎鎸夐挳
@@ -1370,7 +1193,7 @@
         this.$message.error('璇疯嚦灏戦�夋嫨涓�鏉℃暟鎹�');
         return;
       }
-      ;
+
       this.$confirm('鎮ㄧ‘瀹氳鍒犻櫎鎵�閫夋嫨鐨勬暟鎹悧锛�', '鎻愮ず', {
         confirmButtonText: '纭畾',
         cancelButtonText: '鍙栨秷',
@@ -1454,7 +1277,6 @@
         this.checkViewData = this.checkViewDataSearch;
         return done();
       }
-      ;
 
       this.checkViewData = this.checkViewDataSearch.filter(item => {
         return item.source && item.source.includes(source);
@@ -1485,18 +1307,14 @@
             Object.entries(data).forEach(([id, methods]) => {
               let action;
 
-              switch (methods) {
-                case '_CREATE':
-                  action = '鍒涘缓琛�';
-                  break;
-                case '_ADD':
-                  action = '澧炲姞鍒�';
-                  break;
-                case '_DROP':
-                  action = '绉婚櫎鍒�';
-                  break;
-                default:
-                  action = '鏈煡';
+              if (methods.includes('_CREATE')) {
+                action = methods.replace('_CREATE', '鍒涘缓琛�');
+              } else if (methods.includes('_ADD')) {
+                action = methods.replace('_ADD', '澧炲姞鍒�');
+              } else if (methods.includes('_DROP')) {
+                action = methods.replace('_DROP', '绉婚櫎鍒�');
+              } else {
+                action = '鏈煡';
               }
               outputData.push({
                 id: id,
@@ -1637,7 +1455,6 @@
         indexName: this.indexForm.name,
       }
       addIndex([params]).then(res => {
-        console.log(res)
         this.$message.success('鍒涘缓鎴愬姛');
         this.indexDialogClose();
       }).catch(err => {
@@ -1671,66 +1488,30 @@
     width: 100%;
   }
 
-  .headerCon {
-    .el-button {
-      width: 82px;
-    }
-  }
-}
-
-.headerCon {
-  display: flex;
-  flex-wrap: wrap;
-  margin-bottom: 5px;
-
-  .el-button + .el-button {
-    margin-left: 5px;
+  .el-tag {
+    line-height: 22px;
+    height: 24px;
   }
 
-  .el-button {
-    margin-top: 5px;
+  .el-radio {
+    margin-right: 20px;
   }
-}
-
-.headerCon > .el-button:nth-child(4) {
-  margin-left: 0;
-}
-
-.headerCon > .el-button:nth-child(7) {
-  margin-left: 0;
-}
-
-.headerCon > .el-button:nth-child(10) {
-  margin-left: 0;
-}
-
-.miniBtn {
-  width: 82px;
-  text-align: center;
-  padding-left: 7px;
-}
-
-.smallBtn {
-  width: 82px;
-  text-align: center;
-  padding-left: 4.5px;
 }
 
 .descBox {
-  width: 32%;
-  margin-left: 20px;
+  margin-right: 20px;
 }
 
 .dialogForm {
   display: flex;
-  justify-content: space-around;
+  justify-content: space-between;
 }
 
 .dialogForm > div {
-  width: 29%;
-  border: 1px solid #eee;
-  padding: 25px 20px 5px 10px; /* 涓� 鍙� 涓� 宸� */
-  box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.2); /* 娣诲姞闃村奖鏁堟灉 */
+  border: 1px solid #EBEEF5;
+  border-radius: 2px;
+  padding: 15px 20px 0 10px; /* 涓� 鍙� 涓� 宸� */
+  box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.1); /* 娣诲姞闃村奖鏁堟灉 */
 }
 
 

--
Gitblit v1.9.3