田源
2024-08-19 39a6e2d4cbbc789955400ffd2352514a8fe4c188
整合代码
已修改6个文件
已添加5个文件
829 ■■■■ 文件已修改
Source/plt-web/plt-web-ui/src/api/modeling/businessType/api.js 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/businessType/index.vue 562 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/linkType/index.vue 122 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/views/system/department/index.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/views/system/password/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/views/system/role/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/views/systemModule/businessModel/index.vue 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/views/systemModule/mangeModel/index.vue 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/views/systemModule/operateType/index.vue 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/views/systemModule/systemConfig/index.vue 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/views/systemModule/systemMonitor/index.vue 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-ui/src/api/modeling/businessType/api.js
@@ -9,7 +9,7 @@
  });
}
// åˆ—表查询
// åˆ›å»º
export function addLifeCycle(params) {
  return request({
    url: "/api/btmTypeController/addBtmType",
@@ -17,3 +17,76 @@
    data:params
  });
}
// ä¿®æ”¹
export function updateLifeCycle(params) {
  return request({
    url: "/api/btmTypeController/updateBtmType",
    method: "put",
    data:params
  });
}
// åˆ é™¤
export function deleteBtmType(params) {
  return request({
    url: "/api/btmTypeController/deleteBtmType",
    method: "delete",
    data:params
  });
}
// åˆ›å»ºè§†å›¾
export function createView() {
  return request({
    url: "/api/btmTypeController/createView",
    method: "post",
  });
}
// å¯¼å…¥
export function expData (params) {
  return request({
    url: '/api/btmTypeController/expData',
    method: 'get',
    headers: {'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'},
    responseType: 'blob',
    params
  })
}
// æŸ¥çœ‹ä½¿ç”¨èŒƒå›´
export function getUsedBtmLinkList(params) {
  return request({
    url: "/api/btmTypeController/getUsedBtmLinkList",
    method: "get",
    params
  });
}
// ä¸€è‡´æ€§æ£€æŸ¥
export function checkBtmConsistency(params) {
  return request({
    url: "/api/btmTypeController/checkBtmConsistency",
    method: "get",
    params
  });
}
// ä¿®å¤
export function executeRepair(params) {
  return request({
    url: "/api/btmTypeController/executeRepair",
    method: "post",
    data:params
  });
}
// æŸ¥çœ‹ç´¢å¼•
export function getIndexByCondition(params) {
  return request({
    url: "/api/btmTypeController/getIndexByCondition",
    method: "get",
    params
  });
}
Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/businessType/index.vue
@@ -1,5 +1,5 @@
<template>
  <el-container>
  <el-container v-loading="createViewLoading">
    <el-aside>
      <basic-container>
        <div ref="TreeBox" style="height: calc(100vh - 144px);!important;">
@@ -18,7 +18,7 @@
                       type="primary" @click="createViewClickHandler">创建视图
            </el-button>
            <el-button class="miniBtn" icon="el-icon-circle-plus-outline" plain size="small"
                       type="primary" @click="checkClickHandler">创建索引
                       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">一致性检查
@@ -29,12 +29,12 @@
            <el-button class="smallBtn" plain size="small"
                       type="danger" @click="checkClickHandler">删除全部类型
            </el-button>
            <el-button class="smallBtn" plain size="small" type="primary">查看使用范围
            <el-button class="smallBtn" plain size="small" type="primary" @click="checkViewClickHandler">查看使用范围
            </el-button>
          </div>
          <!-- å·¦ä¾§æ ‘ -->
          <div style="height:  calc(100vh - 330px);">
            <avue-tree :data="treeData" :option="treeOption" @node-click="nodeClick">
            <avue-tree ref="tree" :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>
@@ -178,7 +178,13 @@
              <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>
              <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-input v-model="form.implClass"></el-input>
@@ -189,22 +195,24 @@
          </div>
          <div class="centerForm">
            <el-form-item label="版本规则:" label-width="110px" prop="revLevel">
              <el-select v-model="form.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>
            </el-form-item>
            <el-form-item v-if="form.revLevel !== '0'" label="版本号规则:" label-width="110px" prop="revisionRuleName">
            <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 plain size="small" style="margin-left: 5px;height: 30px" type="success"
                <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">
                  style="width: 300px"
                  @change="form.revisionRuleId = ''">
                </el-switch>
              </div>
            </el-form-item>
@@ -215,7 +223,7 @@
              </el-select>
            </el-form-item>
            <el-form-item v-if="form.revLevel !== '0' && form.revLevel !== '1'" label="版次号规则:" label-width="110px"
                          prop="revLevel">
                          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>
@@ -274,7 +282,8 @@
        <h3>属性池列表</h3>
        <avue-crud
          :data="dialogAttrData"
          :option="dialogAttrOption">
          :option="dialogAttrOption"
          @row-del="dialogBottomAttrDel">
          <template slot="menuLeft">
            <el-button icon="el-icon-plus" size="small" type="primary" @click="addDialogClickHandler">创建</el-button>
          </template>
@@ -317,6 +326,7 @@
        </span>
    </el-dialog>
    <!-- ç‰ˆæœ¬å·è§„则选择 -->
    <el-dialog
      v-dialogDrag
      :visible.sync="dialogVersionVisible"
@@ -372,21 +382,193 @@
    </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>
        </span>
    </el-dialog>
    <!-- å¯¼å…¥ -->
    <upload-file ref="upload" :fileType="upFileType" :fileUrl="fileUrl" :tipList="tipList" title="导入"
                 @updata="getTreeList"></upload-file>
    <!-- æŸ¥çœ‹ä½¿ç”¨èŒƒå›´    -->
    <el-dialog
      v-dialogDrag
      :visible.sync="checkViewVisible"
      append-to-body="true"
      class="avue-dialog"
      title="查看使用范围"
      width="60%"
    >
      <avue-crud
        ref="checkViewCrud"
        :data="checkViewData"
        :option="checkViewOption"
        :table-loading="checkViewLoading"
        @search-change="checkHandleSearch"
        @search-reset="checkHandleReset"
      >
      </avue-crud>
    </el-dialog>
    <!-- ä¸€è‡´æ€§æ£€æŸ¥ -->
    <el-dialog
      v-dialogDrag
      :visible.sync="conCheckVisible"
      append-to-body="true"
      class="avue-dialog"
      title="一致性检查"
      width="60%"
    >
      <avue-crud
        :data="conCheckData"
        :option="conCheckOption"
        :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>
        </span>
    </el-dialog>
    <!-- ä¸€è‡´æ€§æ£€æŸ¥ -->
    <el-dialog
      v-dialogDrag
      :visible.sync="indexVisible"
      append-to-body="true"
      class="avue-dialog"
      title="索引信息"
      width="60%"
    >
    </el-dialog>
  </el-container>
</template>
<script>
import basicOption from '@/util/basic-option'
import {getBizTypes, addLifeCycle} from "@/api/modeling/businessType/api"
import {
  getBizTypes,
  addLifeCycle,
  updateLifeCycle,
  deleteBtmType,
  createView,
  expData,
  getUsedBtmLinkList,
  checkBtmConsistency,
  executeRepair,
  getIndexByCondition
} 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 {getUsedVersionRuleList, getVersionRuleAllList} from "@/api/modeling/version/api";
import {gridLifeCycle} from "@/api/modeling/lifeCycle/api";
export default {
  name: "index",
  data() {
    return {
      indexVisible:false,
      conDefaultCheckData: [], // ä¿ç•™ä¸Šä¸ªæŽ¥å£è¿”回的数据
      conCheckLoading: false,
      conCheckOption: {
        ...basicOption,
        menu: false,
        addBtn: false,
        index: false,
        selection: false,
        refreshBtn: false,
        column: [
          {
            label: '类型名',
            prop: 'id',
          },
          {
            label: '操作',
            prop: 'methods',
          },
          {
            label: '状态',
            prop: 'status',
          }
        ]
      },
      conCheckData: [],
      conCheckVisible: false,
      checkViewVisible: false,
      checkViewData: [],
      checkViewDataSearch: [],
      checkViewLoading: false,
      checkViewOption: {
        ...basicOption,
        addBtn: false,
        menu: false,
        searchMenuSpan: 8,
        refreshBtn: false,
        selection: false,
        column: [
          {
            label: '名称',
            prop: 'name',
            sortable: true,
          },
          {
            label: '来源',
            prop: 'source',
            sortable: true,
            search: true
          },
          {
            label: '说明',
            prop: 'description',
          }
        ]
      },
      tipList: [
        "导入业务名称不可为空且链接类型名称只能为英文字母",
        "导入的文件包括属性、业务类型、生命周期等文件",
        "上传的文件为压缩文件,且压缩格式仅能为zip格式"
      ],
      upFileType: ['zip'],
      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: [],
@@ -513,6 +695,12 @@
            sortable: true,
          },
          {
            prop: 'btmTypeId',
            label: '业务类型',
            sortable: true
          },
          {
            label: '属性类型',
            prop: 'attributeDataType',
            sortable: true,
@@ -552,7 +740,7 @@
            sortable: true
          },
          {
            prop: 'attrDataType',
            prop: 'attributeDataType',
            label: '属性类型',
            sortable: true
          },
@@ -576,8 +764,9 @@
        description: '', // æè¿°
        revLevel: '', // ç‰ˆæœ¬è§„则
        revisionRuleId: '',// ç‰ˆæœ¬å·è§„则
        inputRevisionFlag: false, // æ‰‹å·¥è¾“å…¥
        versionRule: '', // ç‰ˆæ¬¡å·è§„则
        inputRevisionFlag: false, // æ‰‹å·¥è¾“å…¥,
        delimiter: '', // åˆ†éš”符
        versionRule: '0', // ç‰ˆæ¬¡å·è§„则
        lifeCycleId: '', // ç”Ÿå‘½å‘¨æœŸ
        subLifeCycleId: '', // ç”Ÿå‘½å‘¨æœŸå¤‡é€‰åˆ—表,
        apNameArray: "", // å±žæ€§æ± åˆ—表’,‘分隔
@@ -585,16 +774,22 @@
      nodeRow: {},
      treeOption: {
        height: 'auto',
        defaultExpandAll: false,
        defaultExpandedKeys: ['topNode'],
        menu: false,
        addBtn: false,
        props: {
          label: 'id',
          label: 'TreeName',
          value: 'id',
          children: 'children'
        }
      },
      treeData: [],
      treeData: [
        {
          TreeName: '业务类型树',
          id: 'topNode',
          children: []
        }
      ],
      descriptionOption: {
        labelStyle: 'text-align:center;width:100px;',
        contentStyle: 'max-width:200px;text-align:center;word-break;break-all;'
@@ -609,27 +804,73 @@
  created() {
    this.getTreeList();
  },
  mounted() {
  },
  methods: {
    //树表查询
    getTreeList() {
      getBizTypes().then(res => {
        const data = res.data.data.map(item => {
          return item.attributes;
          this.processChildren(item); // å¤„理每个节点
          item.attributes.TreeName = item.attributes.id;
          return item.attributes; // è¿”回处理后的 attributes
        });
        this.treeData = data;
      })
        this.treeData[0].children = data;
        console.log(this.treeData);
        this.inheritTreeData = data;
      });
    },
    // å¤„理树形结构
    processChildren(item) {
      if (item.children && item.children.length > 0) {
        item.attributes.children = item.children.map(child => {
          child.attributes.TreeName = child.attributes.id;
          this.processChildren(child); // é€’归处理每个子节点
          return child.attributes; // åªè¿”回子节点的 attributes
        });
      }
    },
    // æ ‘点击
    nodeClick(row) {
      this.attrData = JSON.parse(row.attributes);
      this.attrData = row.attributes ? JSON.parse(row.attributes) : [];
      this.nodeRow = row;
    },
    // åˆ›å»ºæŒ‰é’®
    addClickHandler() {
      if (func.isEmptyObject(this.nodeRow)) {
        this.$message.error('请选择要添加的节点');
        return;
      }
      this.title = 'add';
      this.form.fName = this.nodeRow.id === 'topNode' ? "" : this.nodeRow.id;
      console.log(this.nodeRow);
      this.form.inputRevisionFlag = JSON.parse(this.form.inputRevisionFlag); // å­—符串false转换为布尔值
      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;
    },
    // å¯¹è¯æ¡† å±žæ€§æ± åˆ—表增加按钮
@@ -742,6 +983,11 @@
        this.dialogAttrData.push(...newItems);
        this.attrPollDialogVisible = false;
      }
    },
    // å±žæ€§æ± åˆ é™¤
    dialogBottomAttrDel(form, index) {
      this.dialogAttrData.splice(index, 1);
    },
    // ç‰ˆæœ¬è§„则管理添加
@@ -885,28 +1131,282 @@
      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() {
      console.log(this.form)
      if (!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.apNameArray = this.dialogAttrData ? this.dialogAttrData.map(item => item.id).join(',') : "";
      this.$refs.form.validate((valid) => {
        const saveFunction = this.title === 'add' ? addLifeCycle : updateLifeCycle;
        if (valid) {
          addLifeCycle(this.form).then(res => {
            console.log(res);
          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;
        }
      });
    },
      this.$refs.form.validate((valid) => {
        if (valid) {
        } 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.dialogLifeTable = (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) : [];
      this.title = 'edit';
      this.visible = true;
      console.log(this.form);
    },
    // åˆ é™¤æŒ‰é’®
    deleteClickHandler() {
      if (func.isEmptyObject(this.nodeRow)) {
        this.$message.error('请至少选择一条数据');
        return;
      }
      ;
      this.$confirm('您确定要删除所选择的数据吗?', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
      }).then(() => {
        const {id, oid, ts} = this.nodeRow;
        const obj = {id, oid, ts};
        deleteBtmType(obj).then(res => {
          if (res.data.code === 200) {
            this.$message.success(res.data.obj);
            this.getTreeList();
          }
        })
      }).catch(() => {
        this.$message({
          type: 'info',
          message: '已取消删除'
        });
      });
    },
    // åˆ›å»ºè§†å›¾
    createViewClickHandler() {
      this.createViewLoading = true;
      createView().then(res => {
        if (res.data.code === 200) {
          this.createViewLoading = false;
          this.$message.success(res.data.obj);
        }
      }).catch(err => {
        this.createViewLoading = false;
      })
    },
    // å¯¼å‡º
    exportClickHandler() {
      if (func.isEmptyObject(this.nodeRow)) {
        this.$message.error('请至少选择一条数据');
        return;
      }
      let name = this.nodeRow.id;
      expData({name: name}).then(res => {
        func.downloadFileByBlobHandler(res);
        this.$message.success('导出成功');
      }).catch(err => {
        this.$message.error(err);
      });
    },
    // å¯¼å…¥
    upLoadClickHandler() {
      this.$refs.upload.visible = true;
    },
    // æŸ¥çœ‹ä½¿ç”¨èŒƒå›´æŒ‰é’®
    checkViewClickHandler() {
      if (func.isEmptyObject(this.nodeRow)) {
        this.$message.error('请至少选择一条数据!');
        return;
      }
      getUsedBtmLinkList({btmName: this.nodeRow.id}).then(res => {
        if (res.data.code === 200) {
          this.checkViewVisible = true;
          const data = res.data.data.map(item => {
            return{
              name:this.nodeRow.id,
              source:item
            }
          });
          this.checkViewData = data;
          this.checkViewDataSearch = data;
        }
      })
    },
    // æŸ¥çœ‹ä½¿ç”¨èŒƒå›´æŸ¥è¯¢
    checkHandleSearch(params, done) {
      const {source} = params;
      if (!params.source) {
        this.checkViewData = this.checkViewDataSearch;
        return done();
      }
      ;
      this.checkViewData = this.checkViewDataSearch.filter(item => {
        return item.source && item.source.includes(source);
      });
    }
      done();
    },
    // æŸ¥çœ‹ä½¿ç”¨èŒƒå›´é‡ç½®
    checkHandleReset() {
      this.checkViewData = this.checkViewDataSearch;
    },
    // ä¸€è‡´æ€§æ£€æŸ¥æŒ‰é’®ç‚¹å‡»
    checkClickHandler(){
      checkBtmConsistency().then(res =>{
        if(res && res.data && res.data.data){
          this.conCheckVisible = true;
          this.conCheckLoading = true;
          if(res.data.code === 200){
            const data = res.data.data[0];
            this.conDefaultCheckData = data; // ä¿ç•™ä¸€ä»½åŽŸå§‹æ•°æ®
            this.conCheckLoading = false;
            const outputData = [];
            Object.entries(data).forEach(([id, methods]) => {
              let action;
              switch (methods) {
                case '_CREATE':
                  action = '创建表';
                  break;
                case '_ADD':
                  action = '增加列';
                  break;
                case '_DROP':
                  action = '移除列';
                  break;
                default:
                  action = '未知';
              }
              outputData.push({
                id: id,
                methods: action,
                status: '未修复'
              })
            })
            this.conCheckData = outputData;
          }
        }else {
          this.$message.success(res.data.msg);
        }
      })
    },
    // ä¿®å¤ä¸€è‡´æ€§æ£€æŸ¥
    repairClickHandler() {
      const params = this.conDefaultCheckData;
      executeRepair(params).then(res => {
        if (res.data.obj) {
          this.$message.success('修复成功');
          this.conCheckData = [];
        } else {
          this.$message.error('修复失败,请重新尝试!');
        }
        this.conCheckVisible = false;
      })
    },
    // åˆ›å»ºç´¢å¼•按钮点击
    indexClickHandler(){
      if(func.isEmptyObject(this.nodeRow)){
        this.$message.error('请至少选择一条数据');
        return;
      }
      const params = {
        "conditionMap[typename]":this.nodeRow.id
      }
      getIndexByCondition(params).then(res => {
        console.log(res);
      })
    }
  }
}
</script>
Source/plt-web/plt-web-ui/src/views/modelingMenu/modeling/linkType/index.vue
@@ -714,12 +714,24 @@
        this.$message.error('请至少选择一条数据');
        return;
      }
      deleteLink(this.nodeRow).then(res => {
        if (res.data.code === 200) {
          this.$message.success('删除成功');
          this.getTreeList();
        }
      })
      ;
      this.$confirm('您确定要删除所选择的数据吗?', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
      }).then(() => {
        deleteLink(this.nodeRow).then(res => {
          if (res.data.code === 200) {
            this.$message.success('删除成功');
            this.getTreeList();
          }
        })
      }).catch(() => {
        this.$message({
          type: 'info',
          message: '已取消删除'
        });
      });
    },
    // åˆ›å»ºæŒ‰é’®
@@ -762,58 +774,62 @@
    // ä¸€è‡´æ€§æ£€æŸ¥
    checkClickHandler() {
      this.conCheckVisible = true;
      this.conCheckLoading = true;
      checkLinkType().then(res => {
        if (res.data.code === 200) {
          const data = res.data.data;
          this.conDefaultCheckData = data; // ä¿ç•™ä¸€ä»½åŽŸå§‹æ•°æ®
          this.conCheckLoading = false;
        if (res && res.data && res.data.data) {
          this.conCheckVisible = true;
          this.conCheckLoading = true;
          if (res.data.code === 200) {
            const data = res.data.data;
            this.conDefaultCheckData = data; // ä¿ç•™ä¸€ä»½åŽŸå§‹æ•°æ®
            this.conCheckLoading = false;
          const outputData = [];
            const outputData = [];
          data.forEach(item => {
            Object.entries(item.btmCheckMap).forEach(([id, methodsArray]) => {
              methodsArray.forEach(methods => {
                // åˆ¤æ–­å‰ç¼€
                const action = methods.startsWith('F_') ? '移除form端业务类型' : '移除to端业务类型';
                const detail = methods.split('_')[1]; // èŽ·å– _ åŽé¢çš„内容
                outputData.push({
                  id: id,
                  methods: `${action}:${detail}`,
                  status: '未修复'
            data.forEach(item => {
              Object.entries(item.btmCheckMap).forEach(([id, methodsArray]) => {
                methodsArray.forEach(methods => {
                  // åˆ¤æ–­å‰ç¼€
                  const action = methods.startsWith('F_') ? '移除form端业务类型' : '移除to端业务类型';
                  const detail = methods.split('_')[1]; // èŽ·å– _ åŽé¢çš„内容
                  outputData.push({
                    id: id,
                    methods: `${action}:${detail}`,
                    status: '未修复'
                  });
                });
              });
            });
            // å¤„理 dbCheckMap
            Object.entries(item.dbCheckMap).forEach(([id, methods]) => {
              const splitMethods = methods.split('(');
              // åˆ¤æ–­ç¬¬ä¸€ä¸ªç¬¦å·å‰é¢çš„值
              if (splitMethods[0].startsWith('_ADD')) {
                outputData.push({
                  id: id,
                  methods: '增加列(' + splitMethods[1].slice(0, -1) + ')', // ç»“束位置减去)的字符
                  status: '未修复'
                });
              } else if (splitMethods[0].startsWith('_CREATE')) {
                outputData.push({
                  id: id,
                  methods: '创建表(' + splitMethods[1].slice(0, -1) + ')',
                  status: '未修复'
                });
              } else if (splitMethods[0].startsWith('_DROP')) {
                outputData.push({
                  id: id,
                  methods: '移除列(' + splitMethods[1].slice(0, -1) + ')',
                  status: '未修复'
                });
              } else {
                this.$message.error("不支持的 dbCheckMap ç±»åž‹ï¼š " + methods)
              }
              // å¤„理 dbCheckMap
              Object.entries(item.dbCheckMap).forEach(([id, methods]) => {
                const splitMethods = methods.split('(');
                // åˆ¤æ–­ç¬¬ä¸€ä¸ªç¬¦å·å‰é¢çš„值
                if (splitMethods[0].startsWith('_ADD')) {
                  outputData.push({
                    id: id,
                    methods: '增加列(' + splitMethods[0].slice(0, -1) + ')', // ç»“束位置减去)的字符
                    status: '未修复'
                  });
                } else if (splitMethods[0].startsWith('_CREATE')) {
                  outputData.push({
                    id: id,
                    methods: '创建表(' + splitMethods[0].slice(0, -1) + ')',
                    status: '未修复'
                  });
                } else if (splitMethods[0].startsWith('_DROP')) {
                  outputData.push({
                    id: id,
                    methods: '移除列(' + splitMethods[0].slice(0, -1) + ')',
                    status: '未修复'
                  });
                } else {
                  this.$message.error("不支持的 dbCheckMap ç±»åž‹ï¼š " + methods)
                }
              });
            });
          });
          this.conCheckData = outputData;
            this.conCheckData = outputData;
          }
        } else {
          this.$message.success(res.data.msg);
        }
      }).catch(err => {
        this.$message.error(err);
@@ -822,11 +838,11 @@
    // ä¿®å¤ä¸€è‡´æ€§æ£€æŸ¥
    repairClickHandler() {
      console.log(this.conDefaultCheckData)
      const params = this.conDefaultCheckData[0];
      repairTable(params).then(res => {
        if (func.isEmptyObject(res.data.obj[0])) {
          this.$message.success('修复成功');
          this.conCheckData = [];
        } else {
          this.$message.error('修复失败,请重新尝试!');
        }
@@ -842,6 +858,8 @@
          this.createViewLoading = false;
          this.$message.success(res.data.obj);
        }
      }).catch(err => {
        this.createViewLoading = false;
      })
    },
Source/plt-web/plt-web-ui/src/views/system/department/index.vue
@@ -101,6 +101,7 @@
        delBtn: false,
        gridBtn: false,
        highlightCurrentRow: true,
        calcHeight: -60,
        column: column
      },
      tableLoading: false,
Source/plt-web/plt-web-ui/src/views/system/password/index.vue
@@ -59,10 +59,10 @@
      option: {
        ...basicOption,
        selection: false,
        calcHeight: -60,
        menuWidth: 150,
        editBtn: false,
        delBtn: false,
        calcHeight: -60,
        column: [
          {
            label: '策略名称',
Source/plt-web/plt-web-ui/src/views/system/role/index.vue
@@ -89,8 +89,8 @@
        ...basicOption,
        dialogTop: 0,
        dialogWidth: '30%',
        column: column,
        calcHeight: -60,
        column: column
      },
      page: {
        currentPage: 1,
Source/plt-web/plt-web-ui/src/views/systemModule/businessModel/index.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
<template>
</template>
<script>
export default {
  name: "index"
}
</script>
<style scoped>
</style>
Source/plt-web/plt-web-ui/src/views/systemModule/mangeModel/index.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
<template>
</template>
<script>
export default {
name: "index"
}
</script>
<style scoped>
</style>
Source/plt-web/plt-web-ui/src/views/systemModule/operateType/index.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
<template>
</template>
<script>
export default {
  name: "index"
}
</script>
<style scoped>
</style>
Source/plt-web/plt-web-ui/src/views/systemModule/systemConfig/index.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
<template>
</template>
<script>
export default {
  name: "index"
}
</script>
<style scoped>
</style>
Source/plt-web/plt-web-ui/src/views/systemModule/systemMonitor/index.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
<template>
</template>
<script>
export default {
  name: "index"
}
</script>
<style scoped>
</style>