From c1343ffa4bb95941a70ceb8bc64e72d8a982b873 Mon Sep 17 00:00:00 2001
From: yangys <y_ys79@sina.com>
Date: 星期五, 22 八月 2025 00:42:22 +0800
Subject: [PATCH] Merge branch 'master' of http://www.beijingsoft.cn:9090/r/mdmweb

---
 src/views/wel/shemi.vue |  209 ++++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 162 insertions(+), 47 deletions(-)

diff --git a/src/views/wel/shemi.vue b/src/views/wel/shemi.vue
index cac8c4c..52b8eb9 100644
--- a/src/views/wel/shemi.vue
+++ b/src/views/wel/shemi.vue
@@ -17,15 +17,24 @@
     >
       <template #search>
         <el-row :gutter="24">
-          <el-col :span="6">
-            <el-input v-model="search.name" placeholder="璇疯緭鍏ヨ妭鐐瑰悕绉�" clearable/>
+          <el-col :span="8" class="search-data-flex">
+            <span class="search-data-title">绋嬪簭鐘舵��:</span>
+            <el-checkbox-group v-model="searchTreeData.programStatus">
+              <el-checkbox value="1" label="璇曞垏" />
+              <el-checkbox value="2" label="鍥哄寲" />
+              <el-checkbox value="3" label="鍋忕" />
+            </el-checkbox-group>
           </el-col>
-          <el-col :span="6">
-            <el-select v-model="search.nodeType" placeholder="璇疯緭鍏ヨ妭鐐圭被鍨�" clearable>
-              <el-option v-for="item in nodeTypeList" :key="item.dictValue" :label="item.dictValue" :value="item.dictKey"/>
-            </el-select>
+          <el-col :span="8" class="search-data-flex">
+            <span class="search-data-title">闆剁粍浠跺彿:</span>
+            <el-select v-model="searchTreeData.drawingNo" filterable remote reserve-keyword placeholder="闆剁粍浠跺彿" :remote-method="remoteMethod" :loading="searchLoading">
+              <el-option v-for="item in drawingNoList" :key="item.value" :label="item.label" :value="item.value"/></el-select>
           </el-col>
-          <el-col :span="6">
+          <el-col :span="8" class="search-data-flex">
+            <span class="search-data-title">鏃堕棿鑼冨洿:</span>
+            <el-date-picker v-model="searchTreeData.createTime" type="daterange" range-separator="To" start-placeholder="寮�濮嬫椂闂�" end-placeholder="缁撴潫鏃堕棿" :size="size" format="YYYY-MM-DD" value-format="YYYY-MM-DD" @change="createTimeChange"/>
+          </el-col>
+          <el-col :span="8">
             <el-button type="primary" @click="searchTree"><el-icon class="el-icon--right" style="margin-right: 6px;"><Search /></el-icon>鎼滅储</el-button>
             <el-button :icon="Delete" @click="setClearTree"><el-icon class="el-icon--right" style="margin-right: 6px;"><Delete /></el-icon>娓呯┖</el-button>
           </el-col>
@@ -46,7 +55,8 @@
         <!-- <el-button :size="size" text v-if="row.nodeType == 70" icon="el-icon-position" type="primary" @click="downsend(row)" placeholder="涓嬪彂" title="涓嬪彂"></el-button> -->
         <!-- 鏇挎崲 -->
         <el-button :size="size" text v-if="row.nodeType == 60 && row.parentIds.indexOf('0,1,')>-1" icon="el-icon-switch" type="primary" @click="replacement(row)" placeholder="鏇挎崲" title="鏇挎崲"></el-button>
-        <!-- <el-icon><Switch /></el-icon> -->
+        <el-button :size="size" text v-if="row.nodeType == 60 && row.parentIds.indexOf('0,2')>-1 && row.isLocked != 1" icon="el-icon-lock" type="primary" @click="locked(row,true)" placeholder="閿佸畾" title="閿佸畾"></el-button>
+        <el-button :size="size" text v-if="row.nodeType == 60 && row.parentIds.indexOf('0,2')>-1 && row.isLocked == 1" icon="el-icon-unlock" type="primary" @click="locked(row,false)" placeholder="瑙i攣" title="瑙i攣"></el-button>
       </template>
     </avue-crud>
     <!-- 鏂板鑺傜偣 -->
@@ -65,9 +75,9 @@
     </el-dialog>
     <avue-tabs :option="tabsOption" @change="tabsHandleChange" style="margin-top: 30px;" v-if="isShowTabs"></avue-tabs>
     <avue-form v-if="tabsType == 'tab1'" :option="tabsFormOption" v-model="tabsForm"></avue-form>
-    <span v-else-if="tabsType == 'tab2'">鐗堟湰淇℃伅</span>
+    <!--<span v-else-if="tabsType == 'tab2'">鐗堟湰淇℃伅</span>-->
     <template v-else-if="tabsType == 'tab3'">
-        <div v-html="convertToHtml(fileContent)"></div>
+        <div v-html="convertToHtml(fileContent)" class="convertToHtml"></div>
     </template>
     <template v-else-if="tabsType == 'tab4'">
         <avue-crud :addBtn="false" :option="tabsFormOption4" :data="tabsForm4" ref="crud4" @selection-change="selectionChange">
@@ -91,10 +101,10 @@
   <el-drawer title="鏇挎崲" append-to-body v-model="todolistModel" size="100%" class="code-box">
     <div class="approve-box">
         <div class="left">
-            <TodolistLeft :row="row" @selection-change="todoSelectionChange" />
+            <TodolistLeft :row="row" :replaceDataId="replaceDataId" :drawingNo="drawingNo" :processNo="processNo" :processEdition="processEdition" @selection-change="todoSelectionChange" />
         </div>
         <div class="right">
-            <TodolistRightTop :row="row" />
+            <TodolistRightTop :row="row" :name="name" />
             <avue-form ref="form" :option="optionApprove" v-model="formApprove" @submit="handleSubmit" />
         </div>
     </div>
@@ -113,6 +123,18 @@
   data() {
     let rejectText = '椹冲洖';//+this.row.categoryName;
     return {
+      drawingNoList: [],
+      searchLoading: false,
+      searchTreeData: {
+        programStatus: [],
+        drawingNo: "",
+        createTime: [],
+        createTimeBegin: "",
+        createTimeEnd: ""
+      },
+      drawingNo: '',
+      processNo: '',
+	    processEdition: '',
       replaceDataId: "",
       formApprove: {
         title: '',
@@ -161,7 +183,6 @@
               rules: [
                   {
                   validator: (rule, value, callback) => {
-                      console.log('-------',this.formApprove)
                       if (value === '' && this.formApprove.approve !== 'Y') {
                           callback(new Error('璇疯緭鍏ュ娉�'));
                       } else {
@@ -208,22 +229,22 @@
           icon: 'el-icon-info',
           label: '鑺傜偣淇℃伅',
           prop: 'tab1',
-        }, {
+        }/*, {
           icon: 'el-icon-warning',
           label: '鐗堟湰淇℃伅',
           prop: 'tab2',
-        }]
+        }*/]
       },
       tabsOption2: {
         column: [{
           icon: 'el-icon-info',
           label: '鑺傜偣淇℃伅',
           prop: 'tab1',
-        }, {
+        },/* {
           icon: 'el-icon-warning',
           label: '鐗堟湰淇℃伅',
           prop: 'tab2',
-        }, {
+        }, */{
           icon: 'el-icon-warning',
           label: '鏂囦欢鍐呭',
           prop: 'tab3'
@@ -260,25 +281,25 @@
             prop: 'createTime',
             disabled: true,
             placeholder: " "
-          },
+          },/*
           {
             label: '鑺傜偣鎻忚堪',
             prop: 'description',
             disabled: true,
             placeholder: " "
-          },
+          },*/
           {
             label: '淇敼鏃堕棿',
             prop: 'updateTime',
             disabled: true,
             placeholder: " "
-          },
+          }/*,
           {
             label: '澶囨敞',
             prop: 'remark',
             disabled: true,
             placeholder: " "
-          }
+          }*/
         ]
       },
       tabsForm: {},
@@ -341,10 +362,6 @@
       modalTitle: "",
       id: "",
       parentId:1,
-      search: {
-        name: "",
-        nodeType: ""
-      },
       loading: true,
       mypage: {
         size: 10,
@@ -410,7 +427,7 @@
                     return '';
                 }
             }
-          },
+          },/*
           {
             label: '鐗堟',
             prop: 'processEdition',
@@ -425,16 +442,16 @@
           {
             label: '鎻忚堪',
             prop: 'abc'
-          },
+          },*/
           {
             label: '绫诲瀷',
             prop: 'nodeTypeName'
-          },
+          },/*
           {
             label: '璁惧',
             prop: 'machineCode'
           },
-          
+          */
           {
             label: '閿佸畾鐘舵��',
             prop: 'isLocked',
@@ -457,25 +474,30 @@
                         //闈炵▼搴忚妭鐐�
                         return '';
                     }else{
-                        if(value==0||value==null){
+                        if(value==0||value==-1){
                             return '鏈惎鍔�';
                         }else if(value == 1){
                             return '瀹℃壒涓�';
                         }else if(value == 2){
                             return '宸查�氳繃';
                         }else{
-                            return '鏈畾涔�';
+                            return '';
                         }
                       }
                   },
-          },
+          },/*
           {
             label: '娴嬭瘯绋嬪簭',
             prop: 'abc'
-          },
+          },*/
           {
             label: '鍒涘缓浜�',
             prop: 'createUserName',
+            width: '180'
+          },
+		  {
+            label: '鍒涘缓鏃堕棿',
+            prop: 'createTime',
             width: '180'
           }
         ],
@@ -622,27 +644,74 @@
     
   },
   methods: {
+    createTimeChange(value) {
+      this.searchTreeData.createTimeBegin = value[0];
+      this.searchTreeData.createTimeEnd = value[1];
+    },
+    remoteMethod(query) {
+      if (query) {
+        this.searchLoading = true;
+        axios({
+          url: '/blade-mdm/program/node/drawing-no-pick',
+          method: 'get',
+          params: {drawingNo: query}
+        }).then(resp => {
+          this.searchLoading = false;
+          var drawingNoList = [];
+          resp.data.data.forEach(item=> {
+            drawingNoList.push({label: item,value: item})
+          })
+          this.drawingNoList = drawingNoList;
+        });
+      }else {
+        this.drawingNoList = [];
+      }
+    },
+    locked(row, isLock) {
+      row.isLocked == isLock
+      this.$confirm(`鏄惁${isLock ? '瑙i攣' : '閿佸畾'}`, {
+        confirmButtonText: '纭畾',
+        cancelButtonText: '鍙栨秷',
+        type: 'warning',
+      }).then(() => {
+        axios({
+          url: isLock ? '/blade-mdm/flow/lock/start-unlock' : '/blade-mdm/program/node/lock',
+          method: 'post',
+          params: {id: row.id,nodeId: row.id}
+        }).then(res => {
+          if(res.data.code == 200) {
+            this.$message({type: 'success',message: '鎿嶄綔鎴愬姛!'});
+            this.addLocalTreeNode(row.parentId);
+          }else {
+            this.$message({type: 'success',message: res.data.msg});
+          }
+        });
+      });
+    },
     handleSubmit(form, done) {
       //鍙戣捣绋嬪簭鏇挎崲娴佺▼
       var obj = {
         title: this.formApprove.title,
         nodeId: this.id,
         tempInstanceId: this.replaceDataId,
+		    comment: this.formApprove.comment,
         assignee: this.formApprove.assignee
       }
       axios({
         url: '/blade-mdm/flow/replace/start',
         method: 'post',
         data: obj
-      }).then(
-      resp => {
-        this.$message({
-          type: 'success',
-          message: '鎿嶄綔鎴愬姛!',
+      }).then(resp => {
+          this.$message({
+            type: 'success',
+            message: '鎿嶄綔鎴愬姛!',
+          });
+          done();
+          this.todolistModel = false;
+        }).catch(error =>{
+          window.console.log('haha',error);
+          done();
         });
-        done();
-        this.todolistModel = false;
-      });
       // if(this.row.taskDefinitionKey === 'programmingTask') {
       //     // if(this.applist.length !== 1) {
       //     //     done();
@@ -683,24 +752,46 @@
         url: '/blade-mdm/flow/replace/pre',
         method: 'post',
         params: {nodeId: row.id}
-      }).then(
-      resp => {
+      }).then(resp => {
         this.row = row;
         this.replaceDataId = resp.data.data.processInstanceId;
+        this.processNo = resp.data.data.processNo;
+        this.processEdition = resp.data.data.processEdition;
+		    this.drawingNo = resp.data.data.drawingNo;
+        this.formApprove.title = resp.data.data.name + "鏇挎崲";
+        this.getHandler(); //鑾峰彇澶勭悊浜�
         this.todolistModel = true;
       });
     },
+    getHandler() {  //鑾峰彇澶勭悊浜�
+      axios({
+        url: '/blade-mdm/flow/replace/default-assignees',
+        method: 'get',
+        params: {drawingNo: this.drawingNo}
+      }).then(
+      resp => {
+        if(resp.data.code == 200) {
+          this.formApprove.assignee = resp.data.data.checkerId;
+        }else {
+          this.$message.success(resp.msg);
+        }
+      });
+    },
     convertToHtml(text) {
-        return text.replace(/\r\n/g, '<br>');
+        return text.replace(/\n/g, '<br>');
     },
     removeHasChildren(treeData) {  //鏌ヨ鏃跺�欎娇鐢紝鍒犳帀hasChildren 
       return treeData.map(node => {
         if (node.children && node.children.length > 0) {
           node.children = this.removeHasChildren(node.children);
         }
+        if(node.children.length > 0) {
+           const { hasChildren, ...rest } = node;
+          return rest;
+        } else {
+          return node;
+        }
         // 鍒犻櫎褰撳墠鑺傜偣鐨� hasChildren 灞炴��
-        const { hasChildren, ...rest } = node;
-        return rest;
       });
     },
      // 閫掑綊鏌ユ壘鐩爣琛岋紙name="鏈哄簥1"锛�
@@ -724,11 +815,14 @@
       }
     },
     searchTree() {
+      if(this.searchTreeData.programStatus.length == 0) return;
+      if(this.searchTreeData.drawingNo == "") return;
       axios({
         url: '/blade-mdm/program/node/search-list',
         method: 'get',
-        params: this.search,
+        params: this.searchTreeData,
       }).then(res => {
+        if(res.data.data.length == 0) return;
         this.option.defaultExpandAll = true;
         this.treeData = this.removeHasChildren(res.data.data);
         this.$nextTick(() => {
@@ -747,6 +841,13 @@
     },
     setClearTree() {
       this.option.defaultExpandAll = false;
+      this.searchTreeData = {
+        programStatus: [],
+        drawingNo: "",
+        createTime: [],
+        createTimeBegin: "",
+        createTimeEnd: ""
+      };
       this.treeData = [];
       this.$nextTick(()=> {
         this.onLoad();
@@ -1153,6 +1254,10 @@
       flex: 1;
   }
 }
+.convertToHtml {
+  background-color: #fffee1;
+  padding: 6px 12px;
+}
 </style>
 <style>
   .highlight-row {
@@ -1162,4 +1267,14 @@
   .code-box .el-drawer__header {
     margin-bottom: 0;
   }
+  .search-data-title {
+    font-size: 12px;
+    margin-right: 8px;
+    display: inline-block;
+    width: 68px;
+  }
+  .search-data-flex {
+    display: flex!important;
+    align-items: center;
+  }
 </style>
\ No newline at end of file

--
Gitblit v1.9.3