From 41f11d5fd764a2bc7e8463a70bb340467d99a3ca Mon Sep 17 00:00:00 2001
From: wangting <675591594@qq.com>
Date: 星期五, 14 七月 2023 09:42:36 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 Source/UBCS-WEB/src/const/omd/enum.js                                                                  |   10 
 Source/UBCS-WEB/src/views/modeling/cycle.vue                                                           |  175 ++++++++++++++++++---
 Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/LinkTypeServiceImpl.java |    7 
 Source/UBCS-WEB/src/components/BatchImport/ShowImportData.vue                                          |   32 ++-
 Source/UBCS-WEB/src/components/Tree/classifyTreeform.vue                                               |   16 +
 Source/UBCS-WEB/vue.config.js                                                                          |    4 
 Source/UBCS-WEB/src/api/modeling/cycle.js                                                              |   24 ++
 Source/UBCS-WEB/src/views/modeling/BusinessAdd.vue                                                     |   37 ++-
 Source/UBCS-WEB/src/components/FormTemplate/index.vue                                                  |   23 ++
 Source/UBCS-WEB/src/components/Crud/VciMasterCrud.vue                                                  |   19 +
 Source/UBCS-WEB/src/components/flow-cycle/components/DetailPanel.vue                                   |   58 ++++++
 Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/wrapper/LinkTypeWrapper.java          |    2 
 Source/UBCS-WEB/src/views/modeling/Business.vue                                                        |   13 +
 Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/BtmTreeVO.java             |    2 
 Source/UBCS-WEB/src/components/flow-cycle/flowchartEditor.vue                                          |    5 
 Source/UBCS/ubcs-service/ubcs-omd/src/main/resources/mapper/LinkTypeMapper.xml                         |    4 
 Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/BtmTypeServiceImpl.java  |    7 
 17 files changed, 342 insertions(+), 96 deletions(-)

diff --git a/Source/UBCS-WEB/src/api/modeling/cycle.js b/Source/UBCS-WEB/src/api/modeling/cycle.js
index 18c4505..765575c 100644
--- a/Source/UBCS-WEB/src/api/modeling/cycle.js
+++ b/Source/UBCS-WEB/src/api/modeling/cycle.js
@@ -15,6 +15,14 @@
       data
   })
 }
+// 淇敼
+export const edit = (data) => {
+  return request({
+      url: '/api/ubcs-omd/lifeCycle/edit-save',
+      method: 'put',
+      data
+  })
+}
 export const detail = (params) => {
   return request({
       url: '/api/ubcs-omd/lifeCycle/detail',
@@ -22,8 +30,22 @@
       params
   })
 }
+// 鍒犻櫎
+export const del = (data, isBatch) => {
+  let url = '/api/ubcs-omd/lifeCycle/remove'
+  if (isBatch) {
+    url = '/api/ubcs-omd/lifeCycle/batch-remove'
+  }
+  return request({
+      url,
+      method: 'post',
+      data
+  })
+}
 export default {
   getList,
   add,
-  detail
+  detail,
+  del,
+  edit
 }
diff --git a/Source/UBCS-WEB/src/components/BatchImport/ShowImportData.vue b/Source/UBCS-WEB/src/components/BatchImport/ShowImportData.vue
index 2b2f7de..e888918 100644
--- a/Source/UBCS-WEB/src/components/BatchImport/ShowImportData.vue
+++ b/Source/UBCS-WEB/src/components/BatchImport/ShowImportData.vue
@@ -57,11 +57,12 @@
                 border
                 :data="tab1Table"
                 style="width: 100%"
-                height="400px"
+                height="40vh"
                 highlight-current-row
                 @current-change="resembleRowChange"
                 @selection-change="tab1TableSelectChange"
                 v-if="cloNamesList.length > 1"
+                v-loading="tab1Loading"
               >
                 <el-table-column
                   v-if="type !== 'batchApplyCode'"
@@ -103,7 +104,8 @@
                   border
                   :data="currentSelectedResemble"
                   style="width: 100%"
-                  height="200px"
+                  height="20vh"
+                  v-loading="tab1BottomTableLoading"
                 >
                   <el-table-column
                     v-for="item in resembleColumList"
@@ -138,12 +140,9 @@
             <el-tab-pane :label="tab2Name" name="tab2">
               <el-table
                 border
+                v-loading="tab2Loading"
                 :data="tab2Table"
-                :height="
-                  type === 'batchApplyCode' && tab2Table.length > 0
-                    ? '400px'
-                    : '700px'
-                "
+                height="60vh"
               >
                 <el-table-column
                   v-for="item in successTableColumns"
@@ -179,7 +178,7 @@
     </div>
     <template #footer>
       <div>
-        <el-button size="small" type="primary" @click="submit"
+        <el-button size="small" type="primary" @click="submit" :loading="submitLoading"
           >纭畾瀵煎叆</el-button
         >
         <el-button size="small" @click="dialogVisible = false">鍙栨秷</el-button>
@@ -284,6 +283,10 @@
       },
       batchApplyCodeTableData: {},
       savedList: [],
+      tab1Loading: false,
+      tab2Loading: false,
+      tab1BottomTableLoading: false,
+      submitLoading: false
     };
   },
 
@@ -338,11 +341,13 @@
       this.localCodeClassifyOid = data.codeClassifyOid;
       this.cloNamesList = data.cloNamesList;
       this.templateOid = data.oid;
+      this.tab1Loading = true
       getResembleTable({
         codeClassifyOid:
           this.type === "batchApplyCode" ? data.codeRuleOid : this.templateOid,
         redisOid: this.redisOid + "-resemble",
       }).then((res) => {
+        this.tab1Loading = false
         this.tab1Table = res.data.data.filter(
           (item) => !this.savedList.includes(item.oid)
         );
@@ -351,12 +356,14 @@
             this.tab1Table;
         }
       });
+      this.tab2Loading = true
       // 鑾峰彇姝g‘鏁版嵁
       getSuccessTable({
         codeClassifyOid:
           this.type === "batchApplyCode" ? data.codeRuleOid : this.templateOid,
         redisOid: this.redisOid + "-ok",
       }).then((res) => {
+        this.tab2Loading = false
         this.tab2Table = res.data.data;
         if (this.tab2Table.length > 0 && this.type === "batchApplyCode") {
           this.batchApplyCodeTableData[data.codeRuleOid]["codeApply"] = {};
@@ -382,10 +389,12 @@
       if (!row || !row.oid) {
         return;
       }
+      this.tab1BottomTableLoading = true
       getCurretnSelectedRowResemble({
         redisOid: this.redisOid + "-resemble-data",
         dataOid: row.oid,
       }).then((res) => {
+        this.tab1BottomTableLoading = false
         this.currentSelectedResemble = res.data.data;
       });
     },
@@ -483,12 +492,12 @@
           },
         ];
       }
+        this.submitLoading = true
       submitHistoryimport(params).then((res) => {
-        console.log(res);
+        this.submitLoading = false
+                console.log(res);
         if (res.data.code === 200) {
           this.$message.success(res.data.msg);
-        } else {
-          this.$message.error(res.data.msg);
         }
       });
     },
@@ -572,6 +581,7 @@
     }
   }
   .right {
+    transition: all 0.5s;
     margin-left: 20px;
     margin-top: 30px;
   }
diff --git a/Source/UBCS-WEB/src/components/Crud/VciMasterCrud.vue b/Source/UBCS-WEB/src/components/Crud/VciMasterCrud.vue
index 1ecf668..1f91490 100644
--- a/Source/UBCS-WEB/src/components/Crud/VciMasterCrud.vue
+++ b/Source/UBCS-WEB/src/components/Crud/VciMasterCrud.vue
@@ -311,6 +311,7 @@
         if (uniqueFlag === 'CODEEDIT') return this.editHandler()
         if (uniqueFlag === 'CODEBATCHADD') return this.openBatchImport('batchImportApply')
         if (uniqueFlag === 'CODEIMPORTHISTORY') return this.openBatchImport('historyImport')
+        if (uniqueFlag === 'batchApplyCode') return this.openBatchImport('batchApplyCode')
         // 鎵归噺鐢宠缂栫爜
         //  if(uniqueFlag === 'CODEEDIT') return this.openBatchImport('batchApplyCode')
         if (uniqueFlag === 'CODESTARTPROCESS') return this.setHandler()
@@ -444,10 +445,10 @@
       await TableData({
         templateOid: this.templateOid,
         codeClassifyOid: this.codeClassifyOid,
-        page: val.currentPage,
-        limit: val.pageSize,
+        page: this.page.currentPage,
+        limit: this.page.pageSize,
       }).then((res) => {
-        this.data = res.data.data;
+        this.tableData = res.data.data;
       });
     },
     //澶氶��
@@ -521,15 +522,19 @@
       console.log(val)
       addSaveCode(val).then(res=>{
         console.log(res)
-        this.onLoad()
+        this.$nextTick(() => {
+          this.onLoad()
+        })
       })
     },
     EditSumbit(val) {
       this.editvisible = false;
       console.log(val)
-      editSaveCode(val).then(res=>{
-        console.log(res)
-        this.onLoad()
+     editSaveCode(val).then(res=>{
+       console.log(res)
+       this.$nextTick(() => {
+         this.onLoad()
+       })
       })
     },
     openBatchImport(type) {
diff --git a/Source/UBCS-WEB/src/components/FormTemplate/index.vue b/Source/UBCS-WEB/src/components/FormTemplate/index.vue
index c7e2680..bd8484d 100644
--- a/Source/UBCS-WEB/src/components/FormTemplate/index.vue
+++ b/Source/UBCS-WEB/src/components/FormTemplate/index.vue
@@ -332,6 +332,20 @@
         const { defaultValue, formValue } = this.getDefaultValueAndFormValues(
           this.form
         );
+        const noData = [
+          "jiliangdwname",
+          "materialtypeText",
+          "morengongysname",
+          "$caigouwl",
+          "$xiaoshouwl",
+          "$shifoupihaoguanli",
+          "lcstatus_text",
+          "hesuanfenleiname",
+          "$kucunwl",
+        ];
+        noData.forEach((item) => {
+          this.$delete(formValue, item);
+        });
         resForm.data = formValue;
         resForm = Object.assign({}, resForm, defaultValue);
         resForm.secDTOList = [];
@@ -373,11 +387,9 @@
             let resForm = {};
             const { defaultValue, formValue } =
               this.getDefaultValueAndFormValues(this.form);
-            noData.forEach(item => {
-              if (formValue[item]) {
-                this.$delete(formValue, item)
-              }
-            })
+            noData.forEach((item) => {
+              this.$delete(formValue, item);
+            });
             resForm.data = formValue;
             resForm = Object.assign({}, resForm, defaultValue);
             resForm.secDTOList = this.secVOList.map((item) => {
@@ -389,7 +401,6 @@
             resForm.codeClassifyOid = this.codeClassifyOid;
             resForm.codeRuleOid = this.codeRuleOid;
             resForm.templateOid = this.templateOid;
-            console.log(resForm, 'ddd');
             this.$emit("submit", resForm);
           })
           .catch(() => {});
diff --git a/Source/UBCS-WEB/src/components/Tree/classifyTreeform.vue b/Source/UBCS-WEB/src/components/Tree/classifyTreeform.vue
index 9b1469a..87bf1ca 100644
--- a/Source/UBCS-WEB/src/components/Tree/classifyTreeform.vue
+++ b/Source/UBCS-WEB/src/components/Tree/classifyTreeform.vue
@@ -122,6 +122,7 @@
       simOid:"",
       btmName:"",
       btmOid:"",
+      btmId:"",
       masterInput:'',
       MasterSearchSelects:"",
       masterData:[],
@@ -237,7 +238,7 @@
           },
           {
             label:"缂栫爜瑙勫垯",
-            prop:"coderuleoidName",
+            prop:"codeRuleOidName",
             labelWidth:128,
             disabled: true,
           },
@@ -307,7 +308,7 @@
             },
             {
               label:"缂栫爜瑙勫垯",
-              prop:"coderuleoidName",
+              prop:"codeRuleOidName",
               labelWidth:128,
               focus:this.CodeFoucus,
               readonly: true,
@@ -393,8 +394,8 @@
       }else {
         this.MasterdialogVisible=false;
         this.masterSelectList=[]
-        this.$set(this.loneTreeNewForm,'coderuleoidName',this.masterName)
-        this.$set(this.loneTreeNewForm,'coderuleoid',this.masterOid)
+        this.$set(this.loneTreeNewForm,'codeRuleOidName',this.masterName)
+        this.$set(this.loneTreeNewForm,'codeRuleOid',this.masterOid)
         this.$emit('MasterHandler',this.loneTreeNewForm)
       }
     },
@@ -448,8 +449,8 @@
           'conditionMap[name]':this.SelectFInd
         }
         this.KeydefaultRend(masterParameter)
-        this.SelectValue=""
-        this.SelectFInd=""
+        this.SelectValue="";
+        this.SelectFInd="";
       }
     },
     //鍏抽敭灞炴�ф帴鍙�
@@ -536,7 +537,7 @@
         this.BtmdialogVisible=false;
         this.btmSelectList=[]
         this.$set(this.loneTreeNewForm,'btmTypeName',this.btmName ||this.btmOid)
-        this.$set(this.loneTreeNewForm,'btmTypeid',this.btmOid)
+        this.$set(this.loneTreeNewForm,'btmTypeId',this.btmId)
         this.$emit('MasterHandler',this.loneTreeNewForm)
       }
     },
@@ -563,6 +564,7 @@
       this.btmSelectList=row;
       this.btmName=row[0].name;
       this.btmOid=row[0].oid;
+      this.btmId=row[0].id;
     },
     //涓氬姟绫诲瀷鎺ュ彛
     btmdefaultRend(masterParameter){
diff --git a/Source/UBCS-WEB/src/components/flow-cycle/components/DetailPanel.vue b/Source/UBCS-WEB/src/components/flow-cycle/components/DetailPanel.vue
index 75a9bab..78c2af5 100644
--- a/Source/UBCS-WEB/src/components/flow-cycle/components/DetailPanel.vue
+++ b/Source/UBCS-WEB/src/components/flow-cycle/components/DetailPanel.vue
@@ -11,13 +11,14 @@
         <el-form-item label="鍚嶇О" prop="name">
           <el-input v-model.trim="newRowData.name" :maxLength="20" clearable />
         </el-form-item>
-        <el-form-item label="鏍囩" prop="id">
+        <el-form-item label="缂栧彿" prop="id">
           <el-input v-model.trim="newRowData.id" clearable />
         </el-form-item>
         <el-form-item label="璧峰鐘舵��" prop="startStatus">
           <el-select
             v-model="newRowData.startStatus"
             placeholder="璇烽�夋嫨璧峰鐘舵��"
+            :disabled="type === 'edit'"
             style="width: 100%"
           >
             <el-option
@@ -45,8 +46,27 @@
         <group-panel :status="status">
           <detail-form type="group" />
         </group-panel>
-        <multi-panel :status="status" />
-        <canvas-panel :status="status" />
+        <node-panel :status="status">
+          <div class="event">
+            <hr />
+            <div class="btn_box">
+              <el-button type="primary" size="mini">鏂板</el-button>
+              <el-button type="danger" size="mini">鍒犻櫎</el-button>
+              <el-button type="primary" size="mini">淇濆瓨</el-button>
+            </div>
+              <div  class="flex" v-for="(item, index) in eventList" :key="index" :class="{active: index === currentActive}">
+                <el-select size="mini" style="width: 70%" v-if="item.isEdit">
+                  <el-option></el-option>
+                </el-select>
+                <span v-else style="width: 70%">{{item.evenName}}</span>
+                <el-button size="mini" type="text" class="red">鍒犻櫎</el-button>
+                <el-button size="mini" type="text" @click="editChange(item)">{{item.isEdit ? '鏆傚瓨' : '缂栬緫'}}</el-button>
+              </div>
+          </div>
+        </node-panel>
+
+        <!-- <multi-panel :status="status" /> -->
+        <!-- <canvas-panel :status="status" /> -->
       </template>
     </detail-panel>
   </div>
@@ -74,25 +94,31 @@
     DetailPanel,
     DetailForm,
   },
-  props: ["rowData", "existNodes"],
+  props: ["rowData", "existNodes", "type"],
   data() {
     return {
       newRowData: {
         startStatus: undefined,
         name: undefined,
         id: undefined,
-        remark: undefined
+        remark: undefined,
       },
       rules: {
         name: [{ required: true, message: "鍚嶇О涓嶈兘涓虹┖", trigger: "blur" }],
         id: [
           { required: true, message: "鏍囩涓嶈兘涓虹┖", trigger: "blur" },
-          { pattern: /^[A-z]+$/g, message: "鏍囩鍙兘杈撳叆鑻辨枃", trigger: "blur" }
+          {
+            pattern: /^[A-z]+$/g,
+            message: "鏍囩鍙兘杈撳叆鑻辨枃",
+            trigger: "blur",
+          },
         ],
         startStatus: [
           { required: true, message: "璧峰鐘舵�佷笉鑳戒负绌�", trigger: "change" },
         ],
       },
+      eventList: [{evenName: '123123'}],
+      currentActive: 0
     };
   },
   methods: {
@@ -107,6 +133,9 @@
         });
       });
     },
+    editChange(row) {
+      this.$set(row, 'isEdit', !row.isEdit)
+    }
   },
   watch: {
     rowData: {
@@ -131,3 +160,20 @@
   },
 };
 </script>
+<style lang="scss" scoped>
+.event {
+  margin-top: 20px;
+  text-align: center;
+}
+.flex {
+  margin-top: 10px;
+  display: flex;
+  justify-content: space-between;
+}
+.red {
+  color: red;
+}
+.active {
+  box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.4)
+}
+</style>
diff --git a/Source/UBCS-WEB/src/components/flow-cycle/flowchartEditor.vue b/Source/UBCS-WEB/src/components/flow-cycle/flowchartEditor.vue
index aaac12b..78b4dd5 100644
--- a/Source/UBCS-WEB/src/components/flow-cycle/flowchartEditor.vue
+++ b/Source/UBCS-WEB/src/components/flow-cycle/flowchartEditor.vue
@@ -23,7 +23,7 @@
         </div>
         <div class="vfe-chart-panel" v-if="type !== 'detail'">
           <div class="vfe-chart-panel-detail">
-            <editor-detail-panel :rowData="rowData" ref="EditorDetailPanel" :existNodes="existNodes"/>
+            <editor-detail-panel :rowData="rowData" ref="EditorDetailPanel" :existNodes="existNodes" :type="type"/>
           </div>
         </div>
       </div>
@@ -83,7 +83,7 @@
       },
       tooltipShow: true,
       tooltipData: [],
-      existNodes: []
+      existNodes: this.chartData.nodes || []
     };
   },
 
@@ -207,6 +207,7 @@
       width: 300px;
       background-color: #fafafa;
       border-left: 1px solid #e6e9ed;
+      overflow-y: scroll;
 
       .vfe-chart-panel-detail {
         box-sizing: border-box;
diff --git a/Source/UBCS-WEB/src/const/omd/enum.js b/Source/UBCS-WEB/src/const/omd/enum.js
index 43d3b69..20d2e6b 100644
--- a/Source/UBCS-WEB/src/const/omd/enum.js
+++ b/Source/UBCS-WEB/src/const/omd/enum.js
@@ -17,7 +17,7 @@
       prop: "name",
       search: true,
       slot: true,
-      span: 24,
+      span: 16,
       rules: [
         {
           required: true,
@@ -30,7 +30,8 @@
       label: "鍚嶇О",
       prop: "label",
       search: true,
-      align: "center",
+      // align: "center",
+      span: 16,
       rules: [
         {
           required: true,
@@ -82,8 +83,9 @@
     // },
     {
       label: "鎻忚堪",
-      width: 150,
-      align: "center",
+      span: 16,
+      // width: 150,
+      // align: "center",
       prop: "remark",
       // hide: true
     }
diff --git a/Source/UBCS-WEB/src/views/modeling/Business.vue b/Source/UBCS-WEB/src/views/modeling/Business.vue
index 12bf821..6dd1b28 100644
--- a/Source/UBCS-WEB/src/views/modeling/Business.vue
+++ b/Source/UBCS-WEB/src/views/modeling/Business.vue
@@ -15,7 +15,7 @@
           <avue-tree id="basic" :data="treeData" :option="treeOption" @node-click="nodeClick" class="businessTree">
             <span class="el-tree-node__label" slot-scope="{ node, data }">
               <span>
-                <i class="el-icon-star-on"></i>
+                <i :class="(node || {}).level === 2 ? 'el-icon-star-off' : 'el-icon-folder-opened'"></i>
                 {{ (node || {}).label }}
               </span>
             </span>
@@ -82,7 +82,7 @@
                   <i :class="icons.revisionRule"></i>
                   鐗堟湰瑙勫垯
                 </template>
-                {{ obj.revisionRuleName + '(' + obj.revisionRuleId + ')' }}
+                {{ obj.revisionRuleName ? obj.revisionRuleName+ '(' + obj.revisionRuleId + ')' : ''}}
               </el-descriptions-item>
               <el-descriptions-item :labelStyle="descriptionOption.labelStyle"
                 :contentStyle="descriptionOption.contentStyle">
@@ -90,7 +90,7 @@
                   <i :class="icons.lifeCycle"></i>
                   鐢熷懡鍛ㄦ湡
                 </template>
-                {{ obj.lifeCycleName + '(' + obj.lifeCycleId + ')' }}
+                {{ obj.lifeCycleName ? obj.lifeCycleName + '(' + obj.lifeCycleId + ')' : ''}}
               </el-descriptions-item>
               <el-descriptions-item :labelStyle="descriptionOption.labelStyle"
                 :contentStyle="descriptionOption.contentStyle">
@@ -176,6 +176,7 @@
         defaultExpandAll: true,
         title: '涓氬姟绫诲瀷鏍�',
         addBtn: false,
+        menu:false,
         props: {
           labelText: '',
           label: 'label',
@@ -237,7 +238,8 @@
         revisionRule: 'el-icon-s-check',
         lifeCycle: 'el-icon-refresh-right',
         view: 'el-icon-view',
-        desc: 'el-icon-chat-line-square'
+        desc: 'el-icon-chat-line-square',
+        referType: 'el-icon-search'
       },
       ref: {
         // 浠庤〃涓�夋嫨dialog鐘舵��
@@ -278,7 +280,7 @@
     this.initDomainOption();
   },
   methods: {
-    nodeClick(data) {
+    nodeClick(data,node,leaf) {
       if (data.oid) {
         getDetail(data.oid).then(res => {
           this.obj = res.data.data;
@@ -347,6 +349,7 @@
     },
     businessAdd() {
       this.$refs.btmAdd.showSubmitDialog = true;
+      this.$refs.btmAdd.btmType = {};
       this.ifRefreshBtmAddRefresh();
     },
     businessEdit() {
diff --git a/Source/UBCS-WEB/src/views/modeling/BusinessAdd.vue b/Source/UBCS-WEB/src/views/modeling/BusinessAdd.vue
index 6c390a7..651e7cc 100644
--- a/Source/UBCS-WEB/src/views/modeling/BusinessAdd.vue
+++ b/Source/UBCS-WEB/src/views/modeling/BusinessAdd.vue
@@ -19,21 +19,32 @@
         <el-input v-model="btmType.tableName" :prefix-icon="icons.tableName"></el-input>
       </el-form-item>
       <el-form-item label="鎵�灞為鍩�" label-width="100px" prop="domain" class="domainSelect">
-        <el-select v-model="btmType.bizDomain" :prefix-icon="icons.domain">
+        <el-select  placeholder="璇烽�夋嫨棰嗗煙" v-model="btmType.bizDomain" :prefix-icon="icons.domain">
           <el-option v-for="item in domainOption"
                      :label="item.label" :value="item.value" :key="item.value">
           </el-option>
         </el-select>
       </el-form-item>
       <el-form-item label="鐗堟湰瑙勫垯" label-width="100px">
-        <el-input v-model="btmType.revisionRuleName" :prefix-icon="icons.revisionRule" class="revisionRule"
-                  @focus="openRevision" clearable @clear="clearRevision">
-          <i slot="suffix" class="el-input__icon el-icon-search"></i>
+        <el-input v-model="btmType.revisionRuleName"
+                  :prefix-icon="icons.revisionRule"
+                  class="revisionRule"
+                  @focus="openRevision"
+                  clearable
+                  @clear="clearRevision"
+                  :suffix-icon="icons.referType"
+                  placeholder="璇烽�夋嫨锛岀暀绌哄垯涓嶈繘琛岀鐞�">
         </el-input>
       </el-form-item>
       <el-form-item label="鐢熷懡鍛ㄦ湡" label-width="100px">
-        <el-input v-model="btmType.lifeCycleName" :prefix-icon="icons.lifeCycle" class="lifeCycle" @focus="openLifeCycle" clearable @clear="clearLifeCycle">
-          <i slot="suffix" class="el-input__icon el-icon-search"></i>
+        <el-input v-model="btmType.lifeCycleName"
+                  :prefix-icon="icons.lifeCycle"
+                  class="lifeCycle"
+                  @focus="openLifeCycle"
+                  clearable
+                  @clear="clearLifeCycle"
+                  :suffix-icon="icons.referType"
+                  placeholder="璇烽�夋嫨锛岀暀绌哄垯涓嶈繘琛岀鐞�">
         </el-input>
       </el-form-item>
       <div>
@@ -787,26 +798,22 @@
 }
 
 .btmTypeForm > .el-form-item > .el-form-item__content > .el-input > .el-input__inner {
-  width: 200px;
+  width: 260px;
 }
 
 .domainSelect > .el-form-item__content > .el-select > .el-input > .el-input__inner {
-  width: 200px;
+  width: 260px;
 }
 
 .viewFlag {
-  width: 305px;
+  width: 360px;
 }
 
 .viewInput > .el-form-item__content > .el-input > .el-input__inner {
-  width: 200px;
+  width: 630px;
 }
 
 .descClass > .el-input__inner {
-  width: 57vw
-}
-
-#descId {
-  width: 57vw;
+  width: 1000px;
 }
 </style>
diff --git a/Source/UBCS-WEB/src/views/modeling/cycle.vue b/Source/UBCS-WEB/src/views/modeling/cycle.vue
index c7a5fd2..5df55c7 100644
--- a/Source/UBCS-WEB/src/views/modeling/cycle.vue
+++ b/Source/UBCS-WEB/src/views/modeling/cycle.vue
@@ -5,9 +5,13 @@
       :option="option"
       :page="page"
       :table-loading="loading"
+      selection
+      @size-change="search('size', ...arguments)"
+      @current-change="search('current', ...arguments)"
       @refresh-change="search"
       @search-change="search('search', ...arguments)"
       @search-reset="search('reset', ...arguments)"
+      @selection-change="selectionChange"
     >
       <template slot-scope="scope" slot="menuLeft">
         <el-button
@@ -17,12 +21,22 @@
           @click="openDialog('add', {})"
           >鏂板</el-button
         >
+        <el-button
+          type="danger"
+          icon="el-icon-delete"
+          size="small"
+          @click="batchDel()"
+          v-if="selectedData.length > 0"
+          :loading="delLoading"
+          >鍒犻櫎</el-button
+        >
       </template>
       <template slot-scope="{ row, index }" slot="menu">
         <el-button
           type="text"
           icon="el-icon-edit"
           size="mini"
+          :loading="row.editLoading"
           @click="openDialog('edit', row)"
           >缂栬緫</el-button
         >
@@ -30,8 +44,18 @@
           type="text"
           icon="el-icon-view"
           size="mini"
+          :loading="row.detailLoading"
           @click="openDialog('detail', row)"
           >棰勮</el-button
+        >
+        <el-button
+          class="btn_link_del"
+          type="text"
+          icon="el-icon-delete"
+          size="mini"
+          :loading="row.delLoading"
+          @click="rowDel(row)"
+          >鍒犻櫎</el-button
         >
       </template></avue-crud
     >
@@ -58,7 +82,13 @@
         @save-data="save"
       />
       <template #footer v-if="type !== 'detail'">
-        <el-button type="primary" size="mini" @click="submit">淇濆瓨</el-button>
+        <el-button
+          type="primary"
+          size="mini"
+          @click="submit"
+          :loading="submitLoading"
+          >淇濆瓨</el-button
+        >
         <el-button type="" size="mini" @click="visible = false">鍙栨秷</el-button>
       </template>
     </el-dialog>
@@ -73,7 +103,12 @@
   components: { CycleFlow },
   data() {
     return {
-      form: {},
+      form: {
+        // 'contionMap[id]': 'qwe'
+        // contionMap: [
+        //   {id: 'qwe'}
+        // ]
+      },
       page: {
         pageSize: 10,
         total: 0,
@@ -81,7 +116,8 @@
         layout: "total, sizes, prev, pager, next, jumper",
       },
       option: {
-        searchMenuSpan: 12,
+        selection: true,
+        searchMenuSpan: 6,
         searchMenuPosition: "right",
         border: true,
         align: "center",
@@ -94,6 +130,7 @@
           {
             label: "缂栧彿",
             prop: "id",
+            search: true,
           },
           {
             label: "鍚嶇О",
@@ -102,7 +139,7 @@
           },
           {
             label: "璧峰鐘舵��",
-            prop: "startStatusName",
+            prop: "startStatus",
             search: true,
           },
           {
@@ -120,6 +157,9 @@
       dialogWidth: "50%",
       type: "detail",
       loading: false,
+      delLoading: false,
+      submitLoading: false,
+      selectedData: [],
     };
   },
   created() {
@@ -135,10 +175,18 @@
           total: 0,
           currentPage: 1,
         };
+      } else if (type === "size") {
+        this.page.pageSize = params;
+      } else if (type === "current") {
+        this.page.currentPage = params;
       }
       this.loading = true;
-      const { limit, page } = this.page;
-      API.getList(Object.assign({}, params, { limit, page })).then((res) => {
+      API.getList(
+        Object.assign({}, params, {
+          size: this.page.pageSize,
+          current: this.page.currentPage,
+        })
+      ).then((res) => {
         this.loading = false;
         this.data = res.data.data.records;
         this.page.total = res.data.data.total;
@@ -162,52 +210,126 @@
           this.$set(row, "detailLoading", false);
           this.$set(row, "editLoading", false);
           this.rowData = row;
-          this.nodesEdgesData = {nodes: res.nodes, edges: res.edges}
+          const nodes = res.data.data.nodes.map((item) => {
+            item.label = item.id;
+            item.index = item.indexNum;
+            return item;
+          });
+          const edges = res.data.data.edges.map((item) => {
+            item.label = item.name;
+            item.width = 80;
+            item.height = 48;
+            item.index = 1;
+            item.index = item.indexNum;
+            return item;
+          });
+          this.nodesEdgesData = { nodes, edges };
+          this.visible = true;
         });
       } else {
+        this.nodesEdgesData = {};
+        this.rowData = {};
         this.title = "鏂板鐢熷懡鍛ㄦ湡娴佺▼鍥�";
         this.dialogWidth = "95%";
         this.visible = true;
       }
     },
+    // 閫変腑鏁版嵁
+    selectionChange(selectedData) {
+      this.selectedData = selectedData;
+    },
+    // 鍒犻櫎
+    rowDel(row) {
+      this.$confirm("纭鍒犻櫎璇ユ潯鏁版嵁?", "鎻愮ず", {
+        confirmButtonText: "纭畾",
+        cancelButtonText: "鍙栨秷",
+        type: "warning",
+      }).then(() => {
+        this.$set(row, "delLoading", true);
+        API.del({ oid: row.oid, id: row.id })
+          .then((res) => {
+            this.$set(row, "delLoading", false);
+            if (res.data.code === 200) {
+              this.$message.success("鍒犻櫎鎴愬姛锛�");
+              this.search();
+            }
+          })
+          .catch(() => {
+            this.$set(row, "delLoading", false);
+          });
+      });
+    },
+    batchDel() {
+      this.$confirm("纭鍒犻櫎鎵�閫夋暟鎹�?", "鎻愮ず", {
+        confirmButtonText: "纭畾",
+        cancelButtonText: "鍙栨秷",
+        type: "warning",
+      }).then(() => {
+        const data = this.selectedData.map((item) => {
+          return {
+            id: item.id,
+            oid: item.oid,
+          };
+        });
+        this.delLoading = true;
+        API.del(data, true)
+          .then((res) => {
+            this.delLoading = false;
+            if (res.data.code === 200) {
+              this.$message.success("鍒犻櫎鎴愬姛锛�");
+              this.search();
+            }
+          })
+          .catch(() => {
+            this.delLoading = false;
+          });
+      });
+    },
     async submit() {
       const newRowData = await this.$refs.vueFlowchartEditor.getNewRowData();
-      console.log(newRowData, "newRowDatanewRowData");
       if (!newRowData) {
         return;
       }
-      const flowData = this.$refs.vueFlowchartEditor.getFlowData();
+      const flowData = await this.$refs.vueFlowchartEditor.getFlowData();
       if (Array.isArray(flowData.nodes)) {
         flowData.nodes = flowData.nodes.map((item) => {
           item.name = item.id;
+          item.indexNum = item.index;
           return item;
         });
       }
       if (Array.isArray(flowData.edges)) {
         flowData.edges = flowData.edges.map((item) => {
           item.name = item.label;
+          item.indexNum = item.index;
           return item;
         });
       }
-
       let params = {
-        ...flowData,
         ...newRowData,
+        ...flowData,
       };
-      console.log(flowData, newRowData);
-      API.add(params).then((res) => {
-        console.log(res, "res");
-      });
-    },
-  },
-  watch: {
-    page: {
-      deep: true,
-      immediate: true,
-      handler(newV) {
-        this.page.page = newV.currentPage;
-        this.page.limit = newV.pageSize;
-      },
+
+      this.submitLoading = true;
+      let APIFun = API.add;
+      if (this.type === "edit") {
+        APIFun = API.edit;
+        this.$delete(params, "id");
+      }
+      APIFun(params)
+        .then((res) => {
+          this.submitLoading = false;
+          if (res.data.code === 200) {
+            this.$message.success(
+              this.type === "edit" ? "淇敼鎴愬姛锛�" : "鏂板鎴愬姛锛�"
+            );
+            this.visible = false;
+            this.search();
+          }
+        })
+        .catch(() => {
+          this.submitLoading = false;
+        });
     },
   },
 };
@@ -224,4 +346,7 @@
   margin: 0;
   padding: 0;
 }
+.btn_link_del {
+  color: red;
+}
 </style>
diff --git a/Source/UBCS-WEB/vue.config.js b/Source/UBCS-WEB/vue.config.js
index ad43a75..63a88c9 100644
--- a/Source/UBCS-WEB/vue.config.js
+++ b/Source/UBCS-WEB/vue.config.js
@@ -26,9 +26,9 @@
     proxy: {
       '/api': {
         //鏈湴鏈嶅姟鎺ュ彛鍦板潃
-        target: 'http://localhost:37000',
+        // target: 'http://localhost:37000',
         // target: 'http://192.168.1.51:37000',
-        // target: 'http://192.168.1.46:37000',
+        target: 'http://192.168.1.46:37000',
         // target: 'http://dev.vci-tech.com:37000',
         // target: 'http://192.168.1.51:37000/',
         // target: 'http://192.168.1.104:37000',
diff --git a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/BtmTreeVO.java b/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/BtmTreeVO.java
index ec137bf..cd2b427 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/BtmTreeVO.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/BtmTreeVO.java
@@ -29,5 +29,7 @@
 
 	private String type;
 
+	private Integer level;
+
 	private List<BtmTreeVO> childList;
 }
diff --git a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/BtmTypeServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/BtmTypeServiceImpl.java
index bac65bb..23d8bde 100644
--- a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/BtmTypeServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/BtmTypeServiceImpl.java
@@ -659,7 +659,10 @@
 		try {
 			Map<String, String> domain = Optional.ofNullable(DomainRepeater.getDomain()).orElseGet(ArrayList::new).stream().collect(Collectors.toMap(DomainVO::getValue, DomainVO::getLabel));
 			List<BtmTypeVO> vos = BtmTypeWrapper.build().listEntityVO(baseMapper.selectAll());
-			Map<String, List<BtmTypeVO>> domainMap = vos.stream().sorted(Comparator.comparing(BtmTypeVO::getId)).collect(Collectors.groupingBy(BtmTypeVO::getBizDomain));
+			if (CollectionUtils.isEmpty(vos)){
+				return new ArrayList<>();
+			}
+			Map<String, List<BtmTypeVO>> domainMap = Optional.ofNullable(vos).orElseGet(ArrayList::new).stream().sorted(Comparator.comparing(BtmTypeVO::getId)).collect(Collectors.groupingBy(BtmTypeVO::getBizDomain));
 			List<BtmTreeVO> treeList = new ArrayList<>();
 			domainMap.forEach((k,v)-> {
 				if (domain.containsKey(k)){
@@ -668,11 +671,13 @@
 					parent.setName(label);
 					parent.setLabel(label);
 					parent.setId(k);
+					parent.setLevel(1);
 					parent.setChildList(v.stream().map(s -> {
 						BtmTreeVO child = new BtmTreeVO();
 						child.setOid(s.getOid());
 						child.setName(s.getName());
 						child.setId(s.getId());
+						child.setLevel(2);
 						child.setLabel(s.getId() +  (s.getName() == null ? "" : "(" + s.getName() + ")"));
 						return child;
 					}).collect(Collectors.toList()));
diff --git a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/LinkTypeServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/LinkTypeServiceImpl.java
index e2aa9f1..77ee224 100644
--- a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/LinkTypeServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/LinkTypeServiceImpl.java
@@ -877,7 +877,10 @@
 		try {
 			Map<String, String> domain = Optional.ofNullable(DomainRepeater.getDomain()).orElseGet(ArrayList::new).stream().collect(Collectors.toMap(DomainVO::getValue, DomainVO::getLabel));
 			List<LinkTypeVO> vos = LinkTypeWrapper.build().listEntityVO(baseMapper.selectAll(), null);
-			Map<String, List<LinkTypeVO>> domainMap = vos.stream().collect(Collectors.groupingBy(LinkTypeVO::getBizDomain));
+			if (CollectionUtils.isEmpty(vos)){
+				return new ArrayList<>();
+			}
+			Map<String, List<LinkTypeVO>> domainMap = Optional.ofNullable(vos).orElseGet(ArrayList::new).stream().collect(Collectors.groupingBy(LinkTypeVO::getBizDomain));
 			List<BtmTreeVO> treeList = new ArrayList<>();
 			domainMap.forEach((k,v)-> {
 				if (domain.containsKey(k)){
@@ -885,6 +888,7 @@
 					BtmTreeVO parent = new BtmTreeVO();
 					parent.setName(label);
 					parent.setId(k);
+					parent.setLevel(1);
 					parent.setLabel(label);
 					parent.setChildList(v.stream().map(s -> {
 						BtmTreeVO child = new BtmTreeVO();
@@ -892,6 +896,7 @@
 						child.setLabel(s.getId() + (s.getName() == null ? "" : "(" + s.getName() + ")"));
 						child.setId(s.getId());
 						child.setName(s.getName());
+						child.setLevel(2);
 						return child;
 					}).collect(Collectors.toList()));
 					treeList.add(parent);
diff --git a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/wrapper/LinkTypeWrapper.java b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/wrapper/LinkTypeWrapper.java
index 1acd514..efef233 100644
--- a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/wrapper/LinkTypeWrapper.java
+++ b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/wrapper/LinkTypeWrapper.java
@@ -49,7 +49,7 @@
 		});
 		vo.setFromBtmTypes(fromBtm);
 		vo.setToBtmTypes(toBtm);
-		vo.setTableName(vo.getTableName().toUpperCase(Locale.ROOT));
+		vo.setTableName(Optional.ofNullable(vo.getTableName()).orElseGet(String::new).toUpperCase(Locale.ROOT));
 		// 鏋氫妇澶勭悊
 		vo.setDomainText(NewAppConstantEnum.getTextByName(vo.getBizDomain()));
 		return vo;
diff --git a/Source/UBCS/ubcs-service/ubcs-omd/src/main/resources/mapper/LinkTypeMapper.xml b/Source/UBCS/ubcs-service/ubcs-omd/src/main/resources/mapper/LinkTypeMapper.xml
index 5dd7cba..661da9b 100644
--- a/Source/UBCS/ubcs-service/ubcs-omd/src/main/resources/mapper/LinkTypeMapper.xml
+++ b/Source/UBCS/ubcs-service/ubcs-omd/src/main/resources/mapper/LinkTypeMapper.xml
@@ -19,13 +19,13 @@
         <result column="last_modifier" jdbcType="VARCHAR" property="lastModifier" />
         <result column="last_modify_time" jdbcType="TIMESTAMP" property="lastModifyTime" />
         <result column="ts" jdbcType="TIMESTAMP" property="ts" />
-        <result column="biz-domain" jdbcType="VARCHAR" property="bizDomain" />
+        <result column="biz_domain" jdbcType="VARCHAR" property="bizDomain" />
     </resultMap>
 
     <sql id="base_query_column">
         oid, id, name, description, shape, impl_class, from_btm_type, from_btm_type_name,
             to_btm_type, to_btm_type_name, btm_name, owner, creator, create_time, last_modifier, last_modify_time,
-            ts, biz-domain
+            ts, biz_domain
     </sql>
 
     <sql id="tableName">

--
Gitblit v1.9.3