From 3943c96eefcffd13a8ae7037343558699e416eb7 Mon Sep 17 00:00:00 2001
From: fujunling <2984387807@qq.com>
Date: 星期四, 13 七月 2023 11:08:24 +0800
Subject: [PATCH] fjl

---
 Source/UBCS-WEB/src/api/modeling/cycle.js                            |   24 ++++
 Source/UBCS-WEB/src/views/modeling/cycle.vue                         |  175 ++++++++++++++++++++++++++++++-----
 Source/UBCS-WEB/src/components/BatchImport/ShowImportData.vue        |   32 ++++--
 Source/UBCS-WEB/src/components/Crud/VciMasterCrud.vue                |    1 
 Source/UBCS-WEB/src/components/flow-cycle/components/DetailPanel.vue |   58 ++++++++++-
 Source/UBCS-WEB/src/components/flow-cycle/flowchartEditor.vue        |    5 
 6 files changed, 250 insertions(+), 45 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 be3ea00..1744b66 100644
--- a/Source/UBCS-WEB/src/components/Crud/VciMasterCrud.vue
+++ b/Source/UBCS-WEB/src/components/Crud/VciMasterCrud.vue
@@ -285,6 +285,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()
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/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>

--
Gitblit v1.9.3