wangting
2024-12-25 8bc25357d5742f07710baa7a6f1d6ac4023da3ac
Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/businessType/index.vue
@@ -8,7 +8,7 @@
          <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">
           <span>
              <i class="el-icon-s-promotion"></i>
                {{ (node || {}).label }}
            </span>
@@ -21,23 +21,46 @@
    <el-main>
      <basic-container>
        <div>
          <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 icon="el-icon-circle-plus-outline" plain size="small" type="primary" @click="createViewClickHandler">创建视图</el-button>
          <el-button icon="el-icon-circle-plus-outline" plain size="small" type="primary" @click="indexClickHandler">创建索引</el-button>
          <el-button icon="el-icon-menu" plain size="small" type="primary" @click="checkClickHandler">一致性检查</el-button>
          <el-button icon="el-icon-delete" plain size="small" type="danger" @click="checkClickHandler">删除数据</el-button>
          <el-button icon="el-icon-delete" plain size="small" type="danger" @click="checkClickHandler">删除全部类型</el-button>
          <el-button icon="el-icon-view" plain size="small" type="primary" @click="checkViewClickHandler">查看使用范围</el-button>
          <el-button v-if="permissionList.addBtn" icon="el-icon-plus" plain size="small" type="primary"
                     @click="addClickHandler">创建
          </el-button>
          <el-button v-if="permissionList.editBtn" icon="el-icon-edit" plain size="small" type="primary"
                     @click="editClickHandler">修改
          </el-button>
          <el-button v-if="permissionList.delBtn" icon="el-icon-delete" plain size="small" type="danger"
                     @click="deleteClickHandler">删除
          </el-button>
          <el-button v-if="permissionList.importBtn" icon="el-icon-upload2" plain size="small" type="primary"
                     @click="upLoadClickHandler">导入
          </el-button>
          <el-button v-if="permissionList.exportBtn" icon="el-icon-download" plain size="small" type="primary"
                     @click="exportClickHandler">导出
          </el-button>
          <el-button v-if="permissionList.createViewBtn" icon="el-icon-circle-plus-outline" plain size="small"
                     type="primary" @click="createViewClickHandler">创建视图
          </el-button>
          <el-button v-if="permissionList.createIndexBtn" icon="el-icon-circle-plus-outline" plain size="small"
                     type="primary" @click="indexClickHandler">创建索引
          </el-button>
          <el-button v-if="permissionList.consistencyCheckBtn" icon="el-icon-menu" plain size="small" type="primary"
                     @click="checkClickHandler">一致性检查
          </el-button>
          <el-button v-if="permissionList.deleteDataBtn" icon="el-icon-delete" plain size="small" type="danger"
                     @click="checkClickHandler">删除数据
          </el-button>
          <el-button v-if="permissionList.deleteEveryTypeBtn" icon="el-icon-delete" plain size="small" type="danger"
                     @click="checkClickHandler">删除全部类型
          </el-button>
          <el-button v-if="permissionList.viewTheScopeBtn" icon="el-icon-view" plain size="small" type="primary"
                     @click="checkViewClickHandler">查看使用范围
          </el-button>
        </div>
        <div style="display: flex;justify-content:left;margin-top: 15px;">
          <div class="descBox" style="width: 40%">
            <el-descriptions :column="1" border class="margin-top" size="medium" title="属性信息">
            <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>
@@ -50,8 +73,18 @@
                </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>
@@ -61,7 +94,8 @@
                </el-tooltip>
              </el-descriptions-item>
              <el-descriptions-item :contentStyle="descriptionOption.contentStyle"
                                    :labelStyle="descriptionOption.labelStyle">
                                    :labelStyle="descriptionOption.labelStyle"
                                    :span="12">
                <template slot="label">
                  描述
                </template>
@@ -69,7 +103,7 @@
              </el-descriptions-item>
            </el-descriptions>
          </div>
          <div class="descBox" style="width: 25%;">
          <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">
@@ -121,7 +155,7 @@
            </el-descriptions>
          </div>
          <div class="descBox" style="width: calc(35% - 40px);margin-right: 0">
          <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">
@@ -129,6 +163,16 @@
                  生命周期
                </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>
@@ -158,36 +202,48 @@
            <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="继承自:">
              <avue-input-tree :disabled="title === 'add'"
                               v-model="form.fName"
                               placeholder="请选择业务类型"
            <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'}"
                               :dic="inheritTreeData"></avue-input-tree>
                               placeholder="请选择业务类型"></avue-input-tree>
            </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" 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="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="100px" prop="revisionRuleId" style="margin-bottom: 5px;">
            <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"
                           placeholder="请选择版本号规则"
                           :filterable="true"
                           :props="{label: 'id', value: 'id'}"
                           :dic="versionData"></avue-select>
                           placeholder="请选择版本号规则"></avue-select>
              <el-switch
                v-model="form.inputRevisionFlag"
                active-text="手工输入"
@@ -195,7 +251,8 @@
                @change="form.revisionRuleId = ''">
              </el-switch>
            </el-form-item>
            <el-form-item v-if="form.revLevel !== '0'" label="分隔符:" label-width="100px" prop="delimiter" style="margin-bottom: 5px;">
            <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>
@@ -210,36 +267,37 @@
          <div class="rightForm" style="width: 25%">
            <el-form-item label="生命周期:" label-width="138px" prop="lifeCycleId">
              <avue-select v-model="form.lifeCycleId"
                           placeholder="请选择生命周期"
                           :dic="lifeData"
                           :filterable="true"
                           :props="{label: 'id', value: 'id'}"
                           :dic="lifeData"></avue-select>
                           placeholder="请选择生命周期"></avue-select>
            </el-form-item>
            <el-form-item label="备选生命周期列表:" label-width="138px">
              <avue-select multiple
            <el-form-item label="备选生命周期列表:" label-width="138px" prop="subLifeCycleIdList">
              <avue-select v-model="form.subLifeCycleIdList"
                           :dic="subLifeData"
                           :filterable="true"
                           v-model="form.subLifeCycleId"
                           placeholder="请选择生命周期"
                           :props="{label: 'id', value: 'id'}"
                           multiple
                           placeholder="请选择生命周期"
                           type="tree"
                           :dic="lifeData"></avue-select>
                           @change="subLifeChange"></avue-select>
            </el-form-item>
          </div>
        </div>
      </el-form>
      <div class="bottomForm">
        <h3 style="margin-bottom: 10px;">属性池列表</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 avue-dialog__footer">
      <span slot="footer" class="dialog-footer">
         <el-button type="primary" @click="addDialogSavaHandler">确 定</el-button>
         <el-button @click="addDialogClose">取 消</el-button>
        </span>
@@ -271,8 +329,8 @@
      >
      </avue-crud>
      <span slot="footer" class="dialog-footer">
         <el-button @click="dialogAttrClose">取 消</el-button>
         <el-button type="primary" @click="dialogAttrAddClickHandler">确 定</el-button>
         <el-button @click="dialogAttrClose">取 消</el-button>
        </span>
    </el-dialog>
@@ -409,6 +467,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",
@@ -496,10 +555,12 @@
        index: false,
        selection: false,
        refreshBtn: false,
        header: false,
        column: [
          {
            label: '类型名',
            prop: 'id',
            width: 250,
          },
          {
            label: '操作',
@@ -508,6 +569,7 @@
          {
            label: '状态',
            prop: 'status',
            width: 250,
          }
        ]
      },
@@ -524,7 +586,7 @@
        searchMenuSpan: 8,
        refreshBtn: false,
        selection: false,
        header:false,
        header: false,
        column: [
          {
            label: '名称',
@@ -554,6 +616,8 @@
      versionAddFlag: false,
      inheritTreeData: [],
      lifeData: [],//生命周期下拉数据
      subLifeData: [],//备选生命周期下拉数据
      allLifeData: [],
      versionData: [],//版本规则数据
      dialogAttrSelectList: [],
      searchAttrParams: {},
@@ -575,23 +639,28 @@
        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,
            width: 150,
          },
          {
            label: '初始值',
            prop: 'defaultValue',
            sortable: true,
            width: 200
          },
          {
            label: '说明',
@@ -608,6 +677,9 @@
          {required: true, message: '请输类型名称', trigger: 'blur'},
          {validator: this.validateEnglishOnly, trigger: 'blur'}
        ],
        imageName: [
          {required: true, message: '请选择图标', trigger: 'submit'},
        ],
        revLevel: [
          {required: true, message: '请选择版本规则', trigger: 'blur'},
        ],
@@ -621,33 +693,37 @@
        editBtn: false,
        refreshBtn: false,
        selection: false,
        height: 210,
        height: 220,
        addBtn: false,
        menuWidth:100,
        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,
            width: 150,
          },
          {
            label: '初始值',
            prop: 'defaultValue',
            sortable: true,
            width:150,
            width: 200,
          },
          {
            label: '说明',
@@ -671,22 +747,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',
@@ -707,7 +787,8 @@
        delimiter: '', // 分隔符
        versionRule: '0', // 版次号规则
        lifeCycleId: '', // 生命周期
        subLifeCycleId: [], // 生命周期备选列表,
        subLifeCycleId: '', // 生命周期备选列表,
        subLifeCycleIdList: [],
        apNameArray: "", // 属性池列表’,‘分隔
      },
      nodeRow: {},
@@ -731,8 +812,8 @@
        }
      ],
      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',
@@ -747,7 +828,36 @@
    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].consistencyCheck, false),
        createIndexBtn: this.vaildData(this.permission[this.$route.query.id].createIndex, false),
        createViewBtn: this.vaildData(this.permission[this.$route.query.id].createView, false),
        deleteDataBtn: this.vaildData(this.permission[this.$route.query.id].deleteData, false),
        deleteEveryTypeBtn: this.vaildData(this.permission[this.$route.query.id].deleteEveryType, false),
        viewTheScopeBtn: this.vaildData(this.permission[this.$route.query.id].viewTheScope, 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: {
    //树表查询
@@ -782,15 +892,15 @@
      this.nodeRow = row;
    },
    //获取版本规则数据
    getVersionList(){
    getVersionList() {
      getVersionRuleAllList().then(res => {
        this.versionData = res.data.data;
      });
    },
    //获取生命周期数据
    getLifeCycle(){
    getLifeCycle() {
      gridLifeCycle().then(res => {
        this.lifeData = res.data.data;
        this.allLifeData = res.data.data;
      });
    },
    // 创建按钮
@@ -801,10 +911,108 @@
      }
      this.title = 'add';
      this.form.fName = this.nodeRow.id === 'topNode' ? "" : this.nodeRow.id;
      this.lifeData = this.allLifeData;
      this.subLifeData = this.allLifeData;
      this.form.inputRevisionFlag = JSON.parse(this.form.inputRevisionFlag); // 字符串false转换为布尔值
      this.visible = true;
    },
    // 新增编辑保存
    addDialogSavaHandler() {
      if (this.form.revLevel !== '0' && !this.form.inputRevisionFlag && (!this.form.revisionRuleId || this.form.revisionRuleId === "")) {
        this.$message.error('请检查版本号规则不能为空');
        return;
      }
      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;
        if (valid) {
          if (this.form.revLevel === 0) {
            this.form.versionRule = "";
          }
          saveFunction(this.form).then(res => {
            if (res.data.code === 200) {
              this.$message.success(res.data.obj);
              this.getTreeList();
              this.resetForm();
              this.visible = false;
            }
          })
        } else {
          return false;
        }
      });
    },
    // 编辑按钮点击事件
    editClickHandler() {
      /**
       * id 名称
       * name 标签
       * implClass 实现类
       * fName 继承自
       * description 描述
       * revLevel 版本规则
       * revisionRuleId 版本号规则
       * inputRevisionFlag 手工输入
       * delimiter 分隔符
       * versionRule 版次号规则
       * lifeCycleId 生命周期
       * lifeCycleIds 生命周期列表
       * attributes 属性池列表
       */
      if (func.isEmptyObject(this.nodeRow)) {
        this.$message.error('请至少选择一条数据');
        return;
      }
      if (this.nodeRow.id === 'topNode') {
        this.$message.error('请选择子节点进行修改')
        return;
      }
      this.form = {...this.nodeRow};
      this.form.inputRevisionFlag = JSON.parse(this.form.inputRevisionFlag); // 字符串false转换为布尔值
      // this.form.fName = this.nodeRow.id === 'topNode' ? "" : this.nodeRow.id;
      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;
    },
    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;
@@ -816,7 +1024,10 @@
    // 查询属性池列表数据
    getAttrDialogDta() {
      gridAttribute(this.attrPage.currentPage, this.attrPage.pageSize, this.searchAttrParams).then(res => {
        const data = res.data.data;
        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;
@@ -838,7 +1049,9 @@
    // 添加属性池 行点击
    dialogAttrRowClickHandler(row) {
      if (!row.selectable) {
        return;
      }
      func.rowClickHandler(
        row,
        this.$refs.dialogAttrCrud,
@@ -886,35 +1099,15 @@
    // 添加属性池 保存
    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({
        this.dialogAttrData.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;
      }
      this.attrPollDialogVisible = false;
    },
    // 属性池删除
@@ -947,8 +1140,9 @@
        delimiter: '', // 分隔符
        versionRule: '0', // 版次号规则
        lifeCycleId: '', // 生命周期
        subLifeCycleId: [], // 生命周期备选列表,
        lifeCycleIds:'',
        subLifeCycleId: '', // 生命周期备选列表,
        subLifeCycleIdList: [],
        lifeCycleIds: '',
        apNameArray: "", // 属性池列表’,‘分隔
      };
      this.dialogAttrData = []; // 将属性池表格置空
@@ -968,93 +1162,6 @@
      this.form.delimiter = "";
      this.form.versionRule = "0";
      this.form.revisionRuleId = "";
    },
    // 新增编辑保存
    addDialogSavaHandler() {
      if (this.form.revLevel !== '0' &&!this.form.inputRevisionFlag && (!this.form.revisionRuleId || this.form.revisionRuleId === "")) {
        this.$message.error('请检查版本号规则不能为空');
        return;
      }
      this.form.lifeCycleIds=this.form.subLifeCycleId.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;
        if (valid) {
          if (this.form.revLevel === 0) {
            this.form.versionRule = "";
          }
          saveFunction(this.form).then(res => {
            if (res.data.code === 200) {
              this.$message.success(res.data.obj);
              this.getTreeList();
              this.resetForm();
              this.visible = false;
            }
          })
        } else {
          return false;
        }
      });
    },
    // 编辑按钮点击事件
    editClickHandler() {
      /**
       * id 名称
       * name 标签
       * implClass 实现类
       * fName 继承自
       * description 描述
       * revLevel 版本规则
       * revisionRuleId 版本号规则
       * inputRevisionFlag 手工输入
       * delimiter 分隔符
       * versionRule 版次号规则
       * lifeCycleId 生命周期
       * lifeCycleIds 生命周期列表
       * attributes 属性池列表
       */
      if (func.isEmptyObject(this.nodeRow)) {
        this.$message.error('请至少选择一条数据');
        return;
      }
      if (this.nodeRow.id === 'topNode') {
        this.$message.error('请选择子节点进行修改')
        return;
      }debugger;
      this.form = {...this.nodeRow};
      this.form.inputRevisionFlag = JSON.parse(this.form.inputRevisionFlag); // 字符串false转换为布尔值
      // this.form.fName = this.nodeRow.id === 'topNode' ? "" : this.nodeRow.id;
      this.form.subLifeCycleId = (this.nodeRow.lifeCycleIds && this.nodeRow.lifeCycleIds.trim())
        ? this.nodeRow.lifeCycleIds.split(',').map(item => ({id: item.trim()}))
        : [];
      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;
    },
    // 删除按钮
@@ -1177,18 +1284,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,
@@ -1362,12 +1465,12 @@
    width: 100%;
  }
  .el-tag{
    line-height:22px;
  .el-tag {
    line-height: 22px;
    height: 24px;
  }
  .el-radio{
  .el-radio {
    margin-right: 20px;
  }
}
@@ -1384,7 +1487,7 @@
.dialogForm > div {
  border: 1px solid #EBEEF5;
  border-radius: 2px;
  padding: 25px 20px 5px 10px; /* 上 右 下 左 */
  padding: 15px 20px 0 10px; /* 上 右 下 左 */
  box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.1); /* 添加阴影效果 */
}