Browse Source

个贷第二轮bug fixed 1

wucl 1 year ago
parent
commit
e4f26f7392

+ 5 - 5
src/components/personalForms/entityInfo.vue

@@ -280,7 +280,6 @@ export default {
       this.entityInfo.id = value;
     },
     entityInfoObject: function (value) {
-      console.log("entityInfoObject", value)
       if (value) {
         this.entityInfo = value;
       }
@@ -401,12 +400,13 @@ export default {
           }
         })
       }
+    },
+    // 组件事件
+    callParentEvent(data) {
+      this.$emit('custom-event', data);
     }
   },
-  // 组件事件
-  callParentEvent(data) {
-    this.$emit('custom-event', data);
-  }
+  
 }
 </script>
 <style scoped lang="css">

+ 5 - 4
src/components/personalForms/immovableCertificate.vue

@@ -385,13 +385,14 @@ export default {
           this.certificate.ownerName = this.linkAttributes.ownerName;
           this.converteUseTo(this.linkAttributes.purpose);
         }
+    },
+    // 组件事件
+    callParentEvent(data) {
+      this.$emit('custom-event', data);
     }
 
   },
-  // 组件事件
-  callParentEvent(data) {
-    this.$emit('custom-event', data);
-  }
+  
 }
 </script>
 <style scoped lang="css">

+ 0 - 1
src/components/personalForms/sellingAbilityInfo.vue

@@ -310,7 +310,6 @@ export default {
   },
   methods: {
     handleCreate() {
-      console.log(this.sellingAbilityInfo.id)
       if (this.sellingAbilityInfo.id) {
         this.$refs.sellingAbilityInfoForm.validate(valid => {
           if (valid) {

+ 4 - 0
src/router/index.js

@@ -75,6 +75,10 @@ VueRouter.prototype.push = function push(location, onResolve, onReject) {
       path: '/prod/validate',
       component: () => import('@/views/mobile/prodValidate/index'),
     },
+    {
+      path: '/print/code',
+      component: () => import('@/views/print/printCode'),
+    },
   ];
 
 const files = require.context('./modules', false, /\.js$/);

+ 5 - 5
src/views/finance/fundClaim.vue

@@ -79,7 +79,7 @@
         <el-table-column label="操作" align="center" width="200" fixed="right">
           <template slot-scope="{row}">
             <el-button type="text" @click="claimMajor(row)">大中型</el-button>
-            <el-button type="text" @click="claimPersonal()">个贷</el-button>
+            <el-button type="text" @click="claimPersonal(row)">个贷</el-button>
             <el-button type="text" @click="claimAssets(row)">资产</el-button>
           </template>
         </el-table-column>
@@ -388,10 +388,9 @@
           </el-button>
           <el-button class="filter-item" style="float: left;" round type="info" @click="downloadTemp()">下载模板
           </el-button>
-          <excelImport style="float: left; margin-left: 10px; " ref="uploadControl" buttonType="danger" :limit="1"
-            :flag="'financeClaim/personal/temp/upload/' + financeFundId" :style-type="2" title="模认领"
+          <excelImport style="float: right; margin-left: 10px; " ref="uploadControl" buttonType="danger" :limit="1"
+            :flag="'financeClaim/personal/temp/upload/' + financeFundId" :style-type="2" title="模认领"
             @fath="getMyPersonalOrder" />
-          <!-- <input type="file" ref="fileInput" style="display: none" @change="handleFileChange" /> -->
           <el-button style="margin-left: 10px ;float: left;" round type="danger"
             @click="openClaimDialog()">选择认领</el-button>
         </template>
@@ -1132,9 +1131,10 @@ export default {
       this.notClaimAmount = row.notClaimAmount;
       this.financeFundId = row.id;
     },
-    claimPersonal() {
+    claimPersonal(row) {
       this.getMyPersonalOrder();
       this.myPersonalOrderDialog = true;
+      this.financeFundId = row.id;
     },
     getMajorOrderOrProd() {
       if (this.toProd) {

+ 40 - 8
src/views/major/detail.vue

@@ -1010,13 +1010,14 @@
                         </el-form-item>
                       </el-col>
                       <el-col :xs="24" :sm="12" :lg="6" :span="6">
-                      <el-form-item  prop="qrCode"
-                        label-width="140px"
-                        class="postInfo-container-item" label="二维码:">
-                        </el-form-item>
-                        <img style="width:200px;height:200px; display:flex ;position:absolute;top:0;right:0"
-                        :src="props.row.qrCode" alt="NULL" />                    
-                      </el-col>
+                      <el-form-item prop="validateCode" label-width="140px" class="postInfo-container-item" label="打印二维码:">
+                        <div class="qr-code-div">
+                          <img id="validateCode" class="qr-code"  @click="printQR(props.row.validateCode)"
+                          :src="props.row.qrCode" 
+                          alt="没有产品" />
+                        </div>
+                      </el-form-item>
+                    </el-col>
                   </el-row>
                   <el-row class="row-style">
                     <el-col :xs="24" :sm="12" :lg="6" :span="6">
@@ -3033,7 +3034,7 @@
             this.major.cmobile = null;
             this.major.cDepartment = null;
             this.major.cDuty = null;
-            if (this.major.clienteleId){
+          if (this.major.clienteleId){
             this.major.clienteleId = null;
             this.customerCompany=[]
           }
@@ -3266,7 +3267,15 @@
             this.productionFinance = res.data;
           }
         })
+      },
+      printQR(path){
+      if (path){
+        let routeUrl = this.$router.resolve({
+          path: `/print/code?path=${path}`
+        });
+        window.open(routeUrl.href, '_blank');
       }
+    }
     },
 
   }
@@ -3323,4 +3332,27 @@
   /deep/.createLinkman {
       border-radius: 10px;
     }
+    .qr-code-div{
+  border-radius:10px;
+  background-color: RGB(245,245,245); 
+  width: 200px; 
+  height: 200px; 
+  position:absolute;
+  right:0;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+}
+.qr-code{
+  width: 190px; 
+  height: 190px; 
+  z-index: 999;
+  }
+.qr-code-div:hover {
+  cursor: pointer;
+  // background-color:RGB(220,220,220); 
+  width: 205px; 
+  height: 205px; 
+
+}
 </style>

+ 37 - 3
src/views/major/todoDetail.vue

@@ -757,10 +757,13 @@
                       </el-form-item>
                     </el-col>
                     <el-col :xs="24" :sm="12" :lg="6" :span="6">
-                      <el-form-item prop="qrCode" label-width="140px" class="postInfo-container-item" label="二维码:">
+                      <el-form-item prop="validateCode" label-width="140px" class="postInfo-container-item" label="打印二维码:">
+                        <div class="qr-code-div">
+                          <img id="validateCode" class="qr-code"  @click="printQR(props.row.validateCode)"
+                          :src="props.row.qrCode" 
+                          alt="没有产品" />
+                        </div>
                       </el-form-item>
-                      <img style="width:200px;height:200px; display:flex ;position:absolute;top:0;right:0"
-                        :src="props.row.qrCode" alt="NULL" />
                     </el-col>
                   </el-row>
                   <el-row class="row-style">
@@ -3486,6 +3489,14 @@ export default {
           this.productionFinance = res.data;
         }
       })
+    },
+    printQR(path){
+      if (path){
+        let routeUrl = this.$router.resolve({
+          path: `/print/code?path=${path}`
+        });
+        window.open(routeUrl.href, '_blank');
+      }
     }
   },
 }
@@ -3545,4 +3556,27 @@ export default {
 .error-type:hover {
   cursor: pointer;
 }
+.qr-code-div{
+  border-radius:10px;
+  background-color: RGB(245,245,245); 
+  width: 200px; 
+  height: 200px; 
+  position:absolute;
+  right:0;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+}
+.qr-code{
+  width: 190px; 
+  height: 190px; 
+  z-index: 999;
+  }
+.qr-code-div:hover {
+  cursor: pointer;
+  // background-color:RGB(220,220,220); 
+  width: 205px; 
+  height: 205px; 
+
+}
 </style>

+ 13 - 12
src/views/personal/order.vue

@@ -778,6 +778,7 @@
               purpose:[],
               location:null,
               clienteleType:'企业',
+              clienteleId:null,
               cclienteleName:null,
               cclienteleSubName:null,
               agent:null,
@@ -931,41 +932,41 @@
         },
         changeCustomerType(val){
           if (val ===0){
-            this.personal.cmobile = null;
+            this.personal.contactTel = null;
             this.personal.cdepartment = null;
             this.personal.cduty = null;
-            if (this.persoanl.clienteleId){
-            this.persoanl.clienteleId = null;
+            if (this.personal.clienteleId){
+            this.personal.clienteleId = null;
             this.customerCompany=[];
             this.cmobile = null;
           }
-          if (this.persoanl.clienteleSubId){
-            this.persoanl.clienteleSubId = null;
+          if (this.personal.clienteleSubId){
+            this.personal.clienteleSubId = null;
             this.subCustomerCompany=[];
             this.cmobile = null;
           }
-          if (this.persoanl.clienteleContactId){
-            this.persoanl.clienteleContactId = null;
+          if (this.personal.clienteleContactId){
+            this.personal.clienteleContactId = null;
             this.customerContract =[];
             this.cmobile = null;
           }
-          if (this.persoanl.clienteleType==='个人'){
+          if (this.personal.clienteleType==='个人'){
             let simpleAll = new Object();
             simpleAll.ccId = 1;
             simpleAll.terminal = 0;
             this.$api.customerLinkman.simpleAll(simpleAll).then(res=>{
               if (res.code === 200){
                   this.customerContract = res.data;
-                  if (this.persoanl.clienteleContactId){
-                    this.persoanl.clienteleContactId = null;
+                  if (this.personal.clienteleContactId){
+                    this.personal.clienteleContactId = null;
                     this.cmobile = null;
                   }
               }
             })
           }
-          if (this.persoanl.clienteleType==='企业'){
+          if (this.personal.clienteleType==='企业'){
               this.getCustomerCompany(0)
-              this.persoanl.clienteleContactId = null;
+              this.personal.clienteleContactId = null;
               this.customerContract =[];
               this.cmobile = null;
           }

+ 40 - 1
src/views/personal/readonlyDetail.vue

@@ -348,13 +348,20 @@
             </div>
           </div>
           <el-row class="row-style">
-            <el-col :xs="24" :sm="12" :lg="6" :span="6">
+            <el-col :xs="24" :sm="12" :lg="18" :span="6">
               <el-form-item label="流程:" prop="acreage" label-width="140px" class="postInfo-container-item" >
                 <el-switch :value="target.isOnline" disabled style="margin-bottom: 5px;" active-text="线上" inactive-text="线下"
                   >
                 </el-switch>
               </el-form-item>
             </el-col>
+            <el-col :xs="12" :sm="12" :lg="4" :span="6">
+              <el-form-item label="打印二维码:" prop="validateCode" label-width="140px" class="postInfo-container-item">
+                <div class="qr-code-div">
+                  <img id="validateCode" class="qr-code" :src="target.validateCode" alt="未定价" @click="printQR()"/>
+                </div>
+              </el-form-item>
+            </el-col>
           </el-row>
           <el-row class="row-style">
             <el-col :xs="12" :sm="12" :lg="18" :span="6">
@@ -1458,6 +1465,14 @@ export default {
           this.sceneForm = res.data;
         }
       })
+    },
+    printQR(){
+      const path = this.target.validateCode;
+      let routeUrl = this.$router.resolve({
+          path: `/print/code?path=${path}`
+      });
+      window.open(routeUrl.href, '_blank');
+  
     }
   }
 }
@@ -1558,4 +1573,28 @@ export default {
   font-size: 12px;
   color: green;
 }
+.qr-code-div{
+  border-radius:10px;
+  background-color: RGB(245,245,245); 
+  width: 200px; 
+  height: 200px; 
+  position:absolute;
+  top:-10;
+  left:0;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+}
+.qr-code{
+  width: 190px; 
+  height: 190px; 
+  z-index: 999;
+  }
+.qr-code-div:hover {
+  cursor: pointer;
+  // background-color:RGB(220,220,220); 
+  width: 205px; 
+  height: 205px; 
+
+}
 </style>

+ 9 - 0
src/views/personal/saveFileDoneList.vue

@@ -110,6 +110,7 @@ export default {
         page: 1,
         size: 10,
         descs: 'id',
+        keyword:null
       },
       saveFileDate:'',
       pickerOptions: {
@@ -176,6 +177,14 @@ export default {
     toDetail(row){
       this.$router.push(`/personal/readonly/detail?id=${row.id}&orderId=${row.orderId}&back=${'/personal/saveFile'}`)
     },
+
+    fliterSearch(params){
+      this.$api.personal.saveFileDone(params).then(res=>{
+        if (res.code ===200){
+            this.pageData = res.data;
+        }
+      })
+    },
   },
   
 }

+ 136 - 98
src/views/personal/todoDetail.vue

@@ -390,7 +390,7 @@
             </div>
           </div>
           <el-row class="row-style">
-            <el-col :xs="24" :sm="12" :lg="6" :span="6">
+            <el-col :xs="24" :sm="12" :lg="18" :span="6">
               <el-form-item label="流程:" prop="acreage" label-width="140px" class="postInfo-container-item" >
                 <el-switch v-model="target.isOnline"  style="margin-bottom: 5px;" active-text="线上" inactive-text="线下"
                   @change="calculateSwith()" 
@@ -401,6 +401,13 @@
                 </el-switch>
               </el-form-item>
             </el-col>
+            <el-col :xs="12" :sm="12" :lg="4" :span="6">
+              <el-form-item label="打印二维码:" prop="validateCode" label-width="140px" class="postInfo-container-item">
+                <div class="qr-code-div">
+                  <img id="validateCode" class="qr-code" :src="target.validateCode" alt="未定价" @click="printQR()"/>
+                </div>
+              </el-form-item>
+            </el-col>
           </el-row>
           <el-row class="row-style">
             <el-col :xs="12" :sm="12" :lg="18" :span="6">
@@ -408,6 +415,7 @@
                 <el-input v-model="personal.location" class="filter-item"  />
               </el-form-item>
             </el-col>
+            
           </el-row>
           <el-row class="row-style">
             <el-col :xs="24" :sm="12" :lg="6" :span="6">
@@ -836,7 +844,7 @@
               <time class="time">{{ statementProd.modified }}</time>
               <div class="control">
                 <el-button type="text" class="button" @click="doStamp(statementProd.files)"
-                  :disabled="currentNode.nodeCode != 'GENERATE_STATEMENT'">加盖公章</el-button>
+                  :disabled="currentNode.nodeCode != 'GENERATE_STATEMENT' || !statementProd.isOnline" >加盖公章</el-button>
                 <el-button type="text" class="button" @click="warehouse()"
                   :disabled="currentNode.nodeCode != 'STATEMENT_IN' && currentNode.nodeCode != 'STATEMENT_OUT'">出入库</el-button>
                 <el-button type="text" class="button" @click="genProductionFile(1)"
@@ -1141,39 +1149,42 @@ export default {
     },
     feedback: {
       handler(newVal, oldVal) {
-        if (newVal != oldVal) {
-          if (this.currentNode.nodeCode === 'STATEMENT_FEEDBACK' && !newVal.includes("STATEMENT")) {
-            this.feedback.push("STATEMENT");
-          }
-          if ((newVal.includes("REPORT") && newVal.includes("LETTER")) ||
-              (newVal.includes("REPORT") && newVal.includes("NONE")) ||
-              (newVal.includes("LETTER") && newVal.includes("NONE"))) {
-              this.$message({
-                message: '只能选择其一',
-                type: 'error'
-              });
-            this.feedback = oldVal;
-          }
+        if (this.currentNode.nodeCode === 'STATEMENT_FEEDBACK' && !newVal.includes("STATEMENT")) {
+          //this.feedback.push("STATEMENT");
+        }
+        // if (this.currentNode.nodeCode === 'QUOTATION_FEEDBACK' && newVal.length>1) {
+        //   this.$message("只能选择一种产品类型。");
+        //   //this.feedback = oldVal;
+        // }
+        // if (this.currentNode.nodeCode === 'STATEMENT_FEEDBACK' && newVal.length!=2) {
+        //   this.$message("只能选择一种产品类型。");
+        //   //this.feedback = oldVal;
+        // }
+        // if ((newVal.includes("REPORT") && newVal.includes("LETTER")) ||
+        //     (newVal.includes("REPORT") && newVal.includes("NONE")) ||
+        //     (newVal.includes("LETTER") && newVal.includes("NONE"))) {
+        //     this.$message('除意见书以外,只能选择剩余中的一种选项');
+        //   //this.feedback = oldVal;
+        // }
 
-          this.nodeBusinessInfo.production = this.feedback;
-          this.$refs.board.getInstanceQueue();
-          if (this.feedback.includes("STATEMENT")) {
-            this.hasStatement = true;
-          } else {
-            this.hasStatement = false;
-          }
-          if (this.feedback.includes("REPORT")) {
-            this.hasReport = true;
-          } else {
-            this.hasReport = false;
-          }
-          if (this.feedback.includes("LETTER")) {
-            this.hasLetter = true;
-          } else {
-            this.hasLetter = false;
-          }
-        
+        this.nodeBusinessInfo.production = this.feedback;
+        this.$refs.board.getInstanceQueue();
+        if (this.feedback.includes("STATEMENT")) {
+          this.hasStatement = true;
+        } else {
+          this.hasStatement = false;
+        }
+        if (this.feedback.includes("REPORT")) {
+          this.hasReport = true;
+        } else {
+          this.hasReport = false;
+        }
+        if (this.feedback.includes("LETTER")) {
+          this.hasLetter = true;
+        } else {
+          this.hasLetter = false;
         }
+        
         if (this.feedback.length > 0) {
           this.showProds = true
         } else {
@@ -1331,7 +1342,8 @@ export default {
         sellingAbility: null,
         sellMoney: null,
         sellMoneyBase: null,
-        sellMoneyRate: null
+        sellMoneyRate: null,
+        validateCode:null
       },
       compareList: {
         targetId: null,
@@ -1468,7 +1480,8 @@ export default {
         targetId: null,
         files: [],
         created: null,
-        checkState: null
+        checkState: null,
+        isOnline:null
       },
       technicReportProd: {
         id: null,
@@ -1655,12 +1668,7 @@ export default {
         switch (nodeCode) {
           case 'DEPARTMENT_ALLOCATION':
             if (!this.personal.outwardStaff) {
-              this.$notify({
-                title: '提示',
-                message: '请确定外业人员后,再提交流程。',
-                type: 'error',
-                duration: 3000
-              });
+              this.$message('请确定外业人员后,再提交流程。')
               verify.state = false;
             } else {
               verify.nextHandlerId = this.personal.outwardStaff;
@@ -1749,32 +1757,7 @@ export default {
               return;
             }
             callback(verify);
-            return;
-          // case "WRITE_REPORT":
-          //   if (this.technicReportProd == null || this.technicReportProd.files.length === 0) {
-          //     this.$notify({
-          //       title: '提示',
-          //       message: '请生成或上传技术报告后,再提交流程',
-          //       type: 'error',
-          //       duration: 3000
-          //     });
-          //     verify.state = false;
-          //     callback(verify);
-          //     return
-          //   }
-          //   if (this.finalReprotProd == null || this.finalReprotProd.files.length === 0) {
-          //     this.$notify({
-          //       title: '提示',
-          //       message: '请生成或上传结果报告后,再提交流程',
-          //       type: 'error',
-          //       duration: 3000
-          //     });
-          //     verify.state = false;
-          //     callback(verify);
-          //     return
-          //   }
-          //   callback(verify);
-          //   return;
+       
           case "CHECK_REPORT":
             if (this.technicReportProd.checkState==null || this.finalReprotProd.checkState==null ||
             this.technicReportProd.checkState === '待审核' || this.finalReprotProd.checkState === '待审核') {
@@ -1798,6 +1781,24 @@ export default {
             }
             callback(verify);
             return;
+            case "QUOTATION_FEEDBACK":
+              if (this.feedback.length!=1){
+                verify.state = false;
+                callback(verify);
+                this.$message("还没有确定产品类型");
+                return;
+              }
+              callback(verify);
+              return;
+            case "STATEMENT_FEEDBACK":
+            if (this.feedback.length!=2){
+              verify.state = false;
+              callback(verify);
+              this.$message("意见书送达后,还没有确定后续产品类型。");
+              return;
+            }
+            callback(verify);
+            return;
         }
       }
     },
@@ -1964,17 +1965,15 @@ export default {
       }
     },
     calculateSwith() {
-      this.$api.personalTarget.calculateSwith(this.target.isOnline, this.target.id);
+      this.$api.personalTarget.calculateSwith(this.target.isOnline, this.target.id).then(res=>{
+        if (res.code === 200 && res.data){
+            this.isOnline = this.target.isOnline;
+        }
+      })
       if (this.target.isOnline && !this.compareList.calculateId) {
         this.getCaluateTable(this.target.id);
       }
-      // if (this.target.isOnline) {
-      //   setTimeout(() => {
-      //     const element = document.getElementById("evaluteObject");
-      //     element.scrollTop = element.scrollHeight;
-      //   }, 500);
-
-      // }
+    
     },
     selectCalculateType() {
       let data = this.compareList.analysisData
@@ -2005,28 +2004,28 @@ export default {
       const certificates = this.personal.credentials
       for (let i in certificates) {
         if (certificates[i] === 'HOUSE_CERTIFICATE' && !this.target.houseCertificate) {
-          this.$message.error('房产证信息未完善');
+          this.$message('房产证未点击保存');
           return;
         }
         if (certificates[i] === 'LAND_CERTIFICATE' && !this.target.landCertificate) {
-          this.$message.error('国土证信息未完善');
+          this.$message('国土证未点击保存');
           return;
         }
         if (certificates[i] === 'IMMOVABLE_CERTIFICATE' && !this.target.immovableCertificate) {
-          this.$message.error('不动产权证信息未完善');
+          this.$message('不动产权证未点击保存');
           return;
         }
       }
       if (!this.target.entityInfo) {
-        this.$message.error('实物状况信息未完善');
+        this.$message('实物状况未点击保存');
         return;
       }
       if (!this.target.backgroundInfo) {
-        this.$message.error('区位状况信息未完善');
+        this.$message('区位状况未点击保存');
         return;
       }
       if (!this.target.sellingAbility) {
-        this.$message.error('变现能力分析未完善');
+        this.$message('变现能力未点击保存');
         return;
       }
       this.$confirm('系统生成将会覆盖原有文档,请确认是否继续?', '提示', {
@@ -2045,6 +2044,7 @@ export default {
                 duration: 2000
               });
               this.getProductions();
+              this.getPersonalTarget();
             } else {
               this.$notify({
                 title: '失败',
@@ -2108,7 +2108,7 @@ export default {
       }
     },
     handleExceed(files, fileList) {
-      this.$message.warning(`当前限制选择 1个文件,本次选择了 ${files.length} 个文件`);
+      this.$message(`当前限制选择 1个文件,本次选择了 ${files.length} 个文件`);
     },
     handleAttachmentPreview(file) {
       window.open(file.url)
@@ -2314,36 +2314,35 @@ export default {
     },
     saveFeedback() {
       let flag = true;
-      if (this.target.feedback) {
-        const oldFeedback = JSON.parse(this.target.feedback);
+      const oldFeedback = JSON.parse(this.target.feedback);
+      if (oldFeedback) {
         oldFeedback.forEach(element => {
           if (!this.feedback.includes(element)) {
             if (element === 'STATEMENT' && this.statementProd.id) {
-              this.$notify({
-                title: '提示',
-                message: '不能移除已存在的产品类型',
-                type: 'info',
-                duration: 2000
-              });
+              this.$message("不能移除已存在的产品类型");
               flag = false;
-              return;
             }
             if (element === 'REPORT' && (this.technicReportProd.id || this.finalReprotProd.id)) {
-              this.$notify({
-                title: '提示',
-                message: '不能移除已存在的产品类型',
-                type: 'info',
-                duration: 2000
-              });
+              this.$message("不能移除已存在的产品类型");
               flag = false;
-              return;
             }
           }
         });
+        if (this.currentNode.nodeCode==='QUOTATION_FEEDBACK' && this.feedback.length>1){
+          this.$message("只能选择一种产品类型");
+          flag = false;
+        }
+        if (this.currentNode.nodeCode==='STATEMENT_FEEDBACK' && this.feedback.length>2){
+          this.$message("只能选择一种产品类型");
+          flag = false;
+        }
       }
       if (flag) {
         const feedbackDTO = new Object();
         feedbackDTO.id = this.target.id;
+        if (this.feedback.length==0){
+          return;
+        }
         feedbackDTO.feedback = JSON.stringify(this.feedback);
         const taskRecordDTO = this.buildTaskRecordDTO(feedbackDTO)
         this.$api.personalTarget.doFeedback(taskRecordDTO).then(res => {
@@ -2364,6 +2363,8 @@ export default {
             });
           }
         })
+      }else{
+        this.feedback = oldFeedback;
       }
     },
     saveScene(){
@@ -2429,6 +2430,19 @@ export default {
         })
       })
      
+    },
+    printQR(){
+      const path = this.target.validateCode;
+      console.log(path)
+      if (!path){
+          this.$message("二维码还未生成,无法打印。")
+          return;
+      }
+      let routeUrl = this.$router.resolve({
+          path: `/print/code?path=${path}`
+      });
+      window.open(routeUrl.href, '_blank');
+  
     }
   }
 }
@@ -2529,6 +2543,30 @@ export default {
   font-size: 12px;
   color: green;
 }
+.qr-code-div{
+  border-radius:10px;
+  background-color: RGB(245,245,245); 
+  width: 200px; 
+  height: 200px; 
+  position:absolute;
+  top:-10;
+  left:0;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+}
+.qr-code{
+  width: 190px; 
+  height: 190px; 
+  z-index: 999;
+  }
+.qr-code-div:hover {
+  cursor: pointer;
+  // background-color:RGB(220,220,220); 
+  width: 205px; 
+  height: 205px; 
+
+}
 
 </style>
   

+ 2 - 1
src/views/personal/todoList.vue

@@ -5,7 +5,8 @@
     </div>
     <y-page-list-layout :page-list="pageData" :page-para="listQuery" :get-page-list="getPage">
       <template slot="left">
-        <MoreSearchBar business="PERSONAL_BUSINESS" :nodes="personalNodes" :handlerName="false" @fliterSearch="fliterSearch" @resetParams="resetParams" :listQuery="listQuery">
+        <MoreSearchBar business="PERSONAL_BUSINESS" :nodes="personalNodes" :handlerName="false" @fliterSearch="fliterSearch" 
+        @resetParams="resetParams" :listQuery="listQuery">
           <template v-slot:otherButton>
             <PermissionButton menu-code="_views_personal_batch_allot" class-name="filter-item" type="danger" icon="el-icon-paperclip"
              :page-jump="false" round  @click="openBatchAllotDialog()"/>

+ 25 - 0
src/views/print/printCode.vue

@@ -0,0 +1,25 @@
+<template>
+  <div class="app-container">
+    <img :src="path" style="width: 200px; height: 200px;">
+    </div>
+</template>
+<script>
+
+export default {
+    data(){
+        return {
+            path:null
+        }
+    },
+    created() {
+        console.log(this.$route.query.path)
+        this.path = this.$route.query.path;
+        
+    },
+    mounted(){
+        window.print();
+    }
+    
+        
+}
+</script>