From 4fbeee3784d4be5483ed7ec9e00a875d66bc9ed0 Mon Sep 17 00:00:00 2001
From: WXL <1785969728@qq.com>
Date: 星期二, 20 二月 2024 16:09:40 +0800
Subject: [PATCH] 11

---
 src/views/project/travelexpenseapply/travelexpensedetail/index.vue |  336 +++++++++++++++++++++++++++++++++++--------------------
 1 files changed, 212 insertions(+), 124 deletions(-)

diff --git a/src/views/project/travelexpenseapply/travelexpensedetail/index.vue b/src/views/project/travelexpenseapply/travelexpensedetail/index.vue
index 1e40ace..be304e3 100644
--- a/src/views/project/travelexpenseapply/travelexpensedetail/index.vue
+++ b/src/views/project/travelexpenseapply/travelexpensedetail/index.vue
@@ -5,13 +5,14 @@
       <el-form ref="form" :model="form" :rules="rules" label-width="120px">
         <el-row
           ><el-col :span="5">
-            <el-form-item label="鐢宠鏃ユ湡" prop="createTime">
+            <el-form-item label="鐢宠鏃ユ湡" prop="applyTime">
               <el-date-picker
                 style="width: 100%"
-                v-model="form.createTime"
+                v-model="form.applyTime"
                 type="date"
                 value-format="yyyy-MM-dd HH:mm:ss"
                 placeholder="鐢宠鏃ユ湡"
+                :disabled="true"
               >
               </el-date-picker>
             </el-form-item>
@@ -107,23 +108,6 @@
                   :label="dict.label"
                   :value="dict.value"
                 />
-              </el-select>
-            </el-form-item>
-          </el-col>
-          <el-col :span="5">
-            <el-form-item label="鐢宠鏉愭枡鐘舵��" prop="infoid">
-              <el-select
-                v-model="form.checkstatus"
-                filterable
-                placeholder="璇烽�夋嫨鐢宠鏉愭枡鐘舵��"
-              >
-                <el-option
-                  v-for="item in baselisttages"
-                  :key="item.id"
-                  :label="item.name"
-                  :value="item.id"
-                >
-                </el-option>
               </el-select>
             </el-form-item>
           </el-col>
@@ -740,16 +724,16 @@
             <el-table-column
               prop="persontype"
               slot=""
-              label="浜哄憳绫诲埆"
+              label="鏀舵浜虹被鍒�"
               align="center"
               fixed
-              width="130"
+              width="150"
             >
               <template slot-scope="scope">
                 <el-select
                   v-model="scope.row.persontype"
                   value-key="value"
-                  placeholder="浜哄憳绫诲埆"
+                  placeholder="鏀舵浜虹被鍒�"
                   @change="getPersons(scope.row)"
                 >
                   <el-option
@@ -767,7 +751,7 @@
               label="鏀舵浜�"
               align="center"
               fixed
-              width="110"
+              width="200"
             >
               <template slot-scope="scope">
                 <el-select
@@ -793,19 +777,19 @@
             <el-table-column
               prop="bankname"
               slot=""
-              label="閾惰鍚嶇О"
+              label="鏀舵閾惰"
               align="center"
               fixed
-              width="200"
+              width="250"
             >
               <template slot-scope="scope">
-                <el-input v-model="scope.row.bankname" placeholder="閾惰鍚嶇О" />
+                <el-input v-model="scope.row.bankname" placeholder="鏀舵閾惰" />
               </template>
             </el-table-column>
             <el-table-column
               prop="bankcardno"
               slot=""
-              label="閾惰鍗″彿"
+              label="閾惰璐﹀彿"
               align="center"
               fixed
               width="200"
@@ -813,7 +797,7 @@
               <template slot-scope="scope">
                 <el-input
                   v-model="scope.row.bankcardno"
-                  placeholder="閾惰鍗″彿"
+                  placeholder="閾惰璐﹀彿"
                 />
               </template>
             </el-table-column>
@@ -914,17 +898,13 @@
         </el-row>
         <el-row
           style="margin-top: 25px; margin-bottom: 5px"
-          v-if="operationType == 'check'"
+          v-if="operationType == 'check' && userprofile.nickName == '闄堟厱鍗�'"
         >
-          <el-col :span="7">
-            <el-form-item label="鐢宠鏉愭枡鐘舵��" prop="infoid">
-              <el-radio-group
-                v-model="form.checkstatus"
-                align="left"
-                :disabled="userprofile.nickName != '闄堟厱鍗�'"
-              >
+          <el-col :span="12">
+            <el-form-item label="棰勫鏉愭枡" prop="infoid">
+              <el-radio-group v-model="form.checkstatus" align="left">
                 <el-radio label="1">寰呯敵璇锋潗鏂�</el-radio>
-                <el-radio label="2">鐢宠鏉愭枡閫氳繃绛夊緟鏉愭枡</el-radio>
+                <el-radio label="2">瀹℃牳閫氳繃绛夊緟閭瘎绾歌川鏉愭枡</el-radio>
                 <el-radio label="3">宸叉敹鍒版姤閿�鏉愭枡</el-radio>
               </el-radio-group>
             </el-form-item>
@@ -1204,8 +1184,8 @@
               </el-image>
             </div>
             <div v-else class="pdfimgmins">{{ hintitle }}</div>
-          </div></el-tab-pane
-        >
+          </div>
+        </el-tab-pane>
       </el-tabs>
     </el-dialog>
     <el-dialog title="鎻愮ず" :visible.sync="Savereminder" width="30%">
@@ -1310,6 +1290,7 @@
         value: 0,
         label: ""
       },
+      ICDtoken: getToken(),
       pdfimgsrcList: [],
       Savereminder: false, //鎻愰啋淇濆瓨寮规
       Reminderquantity: 0, //鎻愰啋鏁伴噺
@@ -1380,9 +1361,6 @@
 
       // 琛ㄥ崟鏍¢獙
       rules: {
-        createTime: [
-          { required: true, message: "璇疯緭鍏ュ~鎶ユ棩鏈�", trigger: "blur" }
-        ],
         reason: [
           { required: true, message: "璇疯緭鍏ュ嚭宸簨鐢�", trigger: "blur" }
         ],
@@ -1408,7 +1386,7 @@
         },
         {
           id: 2,
-          name: "鐢宠鏉愭枡閫氳繃绛夊緟鏉愭枡"
+          name: "瀹℃牳閫氳繃绛夊緟閭瘎绾歌川鏉愭枡"
         },
         {
           id: 3,
@@ -1432,7 +1410,6 @@
       invoicefileListto: [],
       invoicepdfimg: "",
       invoicepdfimgsrcList: [],
-      invoDatatop: [],
       //浜哄憳绫诲埆
       persontype: null,
       //鍒拌揪鍦�
@@ -1578,87 +1555,145 @@
     //鏂囦欢涓婁紶鎴愬姛鍥炶皟
     uploadSccess(response, file, fileList) {
       this.rbDetails;
+      const config = {
+        headers: { Authorization: "Bearer " + this.ICDtoken }
+      };
+      const pdfimg = this.Networkheader + "/prod-api" + response.fileName;
       //鑾峰彇绁ㄦ嵁淇℃伅浣嶇疆
       if (this.activeName == 1) {
         if (response.code == 200) {
-          // this.form.filename = file.raw.name;
           this.previewpdf = true;
+
+          fetch(pdfimg, config)
+            .then(response => response.blob())
+            .then(blob => {
+              // 灏嗚幏鍙栫殑鏁版嵁娴佽浆鎹负URL
+              this.pdfimg = URL.createObjectURL(blob);
+              this.pdfimgsrcList.push(URL.createObjectURL(blob));
+              this.fileListto.push({
+                name: file.name,
+                url: URL.createObjectURL(blob)
+              });
+            })
+            .catch(error => {
+              console.error("Error loading image", error);
+              return;
+            });
+
           this.$modal.msgSuccess(response.msg);
-          this.fileListto.push({
+
+          console.log(this.fileListto, "鏂板鍚�");
+          if (!this.rbDetails[this.atpresent].annexfilesList) {
+            this.rbDetails[this.atpresent].annexfilesList = [];
+          }
+          this.rbDetails[this.atpresent].annexfilesList.push({
             name: file.name,
             url: response.fileName
           });
-          this.pdfimgsrcList.push(
-            this.Networkheader + "/prod-api" + response.fileName
-          );
-          console.log(this.pdfimgsrcList);
           this.pdftitle = "鍏�" + this.pdfimgsrcList.length + "椤�";
-          this.pdfimg = this.Networkheader + "/prod-api" + response.fileName;
-          this.rbDetails[this.atpresent].annexfilesList = this.fileListto;
         } else {
           console.log(response.msg);
         }
       } else {
         if (response.code == 200) {
-          // this.form.filename = file.raw.name;
           this.previewpdf = true;
+          fetch(pdfimg, config)
+            .then(response => response.blob())
+            .then(blob => {
+              // 灏嗚幏鍙栫殑鏁版嵁娴佽浆鎹负URL
+              this.invoicepdfimg = URL.createObjectURL(blob);
+              this.invoicepdfimgsrcList.push(URL.createObjectURL(blob));
+              this.invoicefileListto.push({
+                name: file.name,
+                url: URL.createObjectURL(blob)
+              });
+            })
+            .catch(error => {
+              console.error("Error loading image", error);
+              return;
+            });
+
           this.$modal.msgSuccess(response.msg);
-          this.invoicefileListto.push({
+
+          console.log(this.invoicefileListto, "鏂板鍚�");
+          if (!this.rbDetails[this.atpresent].invoicefilesList) {
+            this.rbDetails[this.atpresent].invoicefilesList = [];
+          }
+          this.rbDetails[this.atpresent].invoicefilesList.push({
             name: file.name,
             url: response.fileName
           });
-          this.invoicepdfimgsrcList.push(
-            this.Networkheader + "/prod-api" + response.fileName
-          );
-          console.log(this.invoicepdfimgsrcList);
           this.pdftitle = "鍏�" + this.invoicepdfimgsrcList.length + "椤�";
-          this.pdfimg = this.Networkheader + "/prod-api" + response.fileName;
-          this.rbDetails[
-            this.atpresent
-          ].invoicefilesList = this.invoicefileListto;
-        } else {
-          console.log(response.msg);
         }
       }
     },
     // 鐐瑰嚮绁ㄦ嵁
     Filepopup(index, rows, row) {
+      const config = {
+        headers: { Authorization: "Bearer " + this.ICDtoken }
+      };
+
       this.tableDatatop = [];
+      this.fileListto = [];
+      this.invoicefileListto = [];
+      this.pdfimg = [];
+      this.invoicepdfimg = [];
       this.pdfimgsrcList = [];
-      this.invoDatatop = [];
       this.invoicepdfimgsrcList = [];
-      this.invoDatatop.push(row);
       this.tableDatatop.push(row);
       this.atpresent = index;
       this.pdfVisible = true;
-      console.log(this.rbDetails[index]);
+
       if (this.rbDetails[index].annexfilesList) {
-        this.previewpdf = true;
-        this.fileListto = this.rbDetails[index].annexfilesList;
-        console.log(this.fileListto);
-        this.pdfimg = this.Networkheader + "/prod-api" + this.fileListto[0].url;
-        this.fileListto.forEach(item => {
-          this.pdfimgsrcList.push(this.Networkheader + "/prod-api" + item.url);
+        this.rbDetails[index].annexfilesList.forEach((value, indexson) => {
+          const pdfimg = this.Networkheader + "/prod-api" + value.url;
+          fetch(pdfimg, config)
+            .then(response => response.blob())
+            .then(blob => {
+              // 灏嗚幏鍙栫殑鏁版嵁娴佽浆鎹负URL
+              this.fileListto.push({
+                name: value.name,
+                url: URL.createObjectURL(blob)
+              });
+              if (this.fileListto.length == 1) {
+                this.pdfimg = URL.createObjectURL(blob);
+              }
+              this.pdfimgsrcList.push(URL.createObjectURL(blob));
+            })
+            .catch(error => {
+              console.error("Error loading image", error);
+              return;
+            });
         });
+        this.previewpdf = true;
       } else {
         this.fileListto = [];
         this.pdfimg = "";
         this.pdftitle = "";
       }
-      // -鍙戠エ鏂囦欢
+      //鍙戠エ
       if (this.rbDetails[index].invoicefilesList) {
-        this.previewpdf = true;
-        this.invoicefileListto = this.rbDetails[index].invoicefilesList;
-        console.log(this.invoicefileListto);
-        this.invoicepdfimg =
-          this.Networkheader + "/prod-api" + this.invoicefileListto[0].url;
-        this.invoicefileListto.forEach(item => {
-          this.invoicepdfimgsrcList.push(
-            this.Networkheader + "/prod-api" + item.url
-          );
+        this.rbDetails[index].invoicefilesList.forEach((value, indexson) => {
+          const pdfimg = this.Networkheader + "/prod-api" + value.url;
+          fetch(pdfimg, config)
+            .then(response => response.blob())
+            .then(blob => {
+              // 灏嗚幏鍙栫殑鏁版嵁娴佽浆鎹负URL
+              this.invoicefileListto.push({
+                name: value.name,
+                url: URL.createObjectURL(blob)
+              });
+              if (this.invoicefileListto.length == 1) {
+                this.invoicepdfimg = URL.createObjectURL(blob);
+              }
+              this.invoicepdfimgsrcList.push(URL.createObjectURL(blob));
+            })
+            .catch(error => {
+              console.error("Error loading image", error);
+              return;
+            });
         });
-        console.log(this.invoicepdfimgsrcList);
-        console.log(this.invoicepdfimg);
+        this.previewpdf = true;
       } else {
         this.invoicefileListto = [];
         this.invoicepdfimg = "";
@@ -1675,7 +1710,6 @@
     // 鐐瑰嚮宸蹭笂浼犳枃浠�
     downFile(item) {
       if (this.activeName == 1) {
-        console.log(item, "鐐瑰嚮鏂囦欢鎷縤tem");
         this.pdftitle =
           "鍏�" + this.pdfimgsrcList.length + "椤癸紝褰撳墠閫変腑" + item.name;
         let name = item.name.split(".");
@@ -1684,11 +1718,12 @@
           this.previewpdf = false;
           this.hintitle = "褰撳墠鏂囦欢鏆備笉鏀寔棰勮";
         } else if (name[1] == "jpg" || "png") {
+          console.log(item, "灞曠ず");
           this.previewpdf = true;
           if (item.url) {
-            this.pdfimg = this.Networkheader + "/prod-api" + item.url;
+            this.pdfimg = item.url;
           } else {
-            this.pdfimg = this.Networkheader + "/prod-api" + item.response.url;
+            this.pdfimg = "";
           }
         } else {
           this.hintitle = "褰撳墠鏂囦欢鏆備笉鏀寔棰勮";
@@ -1696,7 +1731,6 @@
           this.previewpdf = false;
         }
       } else {
-        console.log(item, "鐐瑰嚮鏂囦欢鎷縤tem");
         this.pdftitle =
           "鍏�" + this.invoicepdfimgsrcList.length + "椤癸紝褰撳墠閫変腑" + item.name;
         let name = item.name.split(".");
@@ -1707,12 +1741,9 @@
         } else if (name[1] == "jpg" || "png") {
           this.previewpdf = true;
           if (item.url) {
-            this.invoicepdfimg = this.Networkheader + "/prod-api" + item.url;
-            console.log(this.invoicepdfimg, "pdfimg");
-            console.log(this.invoicepdfimgsrcList, "imglist");
+            this.invoicepdfimg = item.url;
           } else {
-            this.invoicepdfimg =
-              this.Networkheader + "/prod-api" + item.response.url;
+            this.invoicepdfimg = "";
           }
         } else {
           this.hintitle = "褰撳墠鏂囦欢鏆備笉鏀寔棰勮";
@@ -1726,22 +1757,37 @@
     },
     // 鐐瑰嚮鍒犻櫎
     deletedowfile(row) {
+      console.log(row);
+      let indexvalue = "";
       if (this.activeName == 1) {
-        const indexlist = this.getIndexInArray(
-          this.pdfimgsrcList,
-          this.Networkheader + "/prod-api" + row.url
-        );
+        const indexlist = this.getIndexInArray(this.pdfimgsrcList, row.url);
         this.pdfimgsrcList.splice(indexlist, 1);
         const index = this.getIndexInArray(this.fileListto, row);
         this.fileListto.splice(index, 1);
+        console.log(this.rbDetails[this.atpresent].annexfilesList);
+        indexvalue = this.rbDetails[this.atpresent].annexfilesList.find(
+          (item, index) => {
+            return item.name == row.name;
+          }
+        );
+        console.log(indexvalue, "鍒犻櫎绱㈠紩");
+        this.rbDetails[this.atpresent].annexfilesList.splice(indexvalue, 1);
       } else {
         const indexlist = this.getIndexInArray(
           this.invoicepdfimgsrcList,
-          this.Networkheader + "/prod-api" + row.url
+          row.url
         );
         this.invoicepdfimgsrcList.splice(indexlist, 1);
         const index = this.getIndexInArray(this.invoicefileListto, row);
         this.invoicefileListto.splice(index, 1);
+        console.log(this.rbDetails[this.atpresent].invoicefilesList);
+        indexvalue = this.rbDetails[this.atpresent].invoicefilesList.find(
+          (item, index) => {
+            return item.name == row.name;
+          }
+        );
+        console.log(indexvalue, "鍒犻櫎绱㈠紩");
+        this.rbDetails[this.atpresent].invoicefilesList.splice(indexvalue, 1);
       }
     },
     // 鐐瑰嚮涓婄Щ
@@ -2027,21 +2073,27 @@
         var aEle = document.createElement("a");
         aEle.href =
           curWWWPath.substring(0, pos) + urlBase + fileUrl["downloadUrl"];
-        aEle.click();
+        console.log(aEle.href);
+        // 娣诲姞Authorization澶撮儴
+        fetch(aEle.href, {
+          headers: this.headers
+        })
+          .then(response => {
+            // 灏嗘枃浠朵笅杞介摼鎺ヤ綔涓篵lob瀵硅薄杩涜涓嬭浇
+            return response.blob();
+          })
+          .then(blob => {
+            const url = window.URL.createObjectURL(new Blob([blob]));
+            console.log(url);
+            const link = document.createElement("a");
+            link.href = url;
+            const name = fileUrl["downloadName"];
+            link.setAttribute("download", name); // 鏇挎崲file.pdf涓哄疄闄呯殑鏂囦欢鍚�
+            document.body.appendChild(link);
+            link.click();
+            link.parentNode.removeChild(link);
+          });
       });
-
-      // downloadconfirmationinfo(id).then((response) => {
-      //   var fileUrl = response;
-      //   //鑾峰彇褰撳墠缃戝潃
-      //   var urlBase = process.env.VUE_APP_BASE_API;
-      //   var curWWWPath = window.document.location.href;
-      //   var pos = curWWWPath.indexOf(window.document.location.pathname);
-      //   // 鍒涘缓a鏍囩
-      //   var aEle = document.createElement("a");
-      //   aEle.href =
-      //     curWWWPath.substring(0, pos) + urlBase + fileUrl["downloadUrl"];
-      //   aEle.click();
-      // });
     },
 
     /** 鏌ヨ鎶ラ攢鐢宠鍒楄〃 */
@@ -2375,14 +2427,12 @@
         this.$modal.msgError("璇烽�夋嫨瀹℃牳缁撹鍚庡啀鎻愪氦瀹℃壒缁撴灉!");
         return;
       }
-
+      if (this.userprofile.nickName == "闄堟厱鍗�") {
+        this.Savenow();
+        console.log("淇濆瓨");
+      }
       checkfund(checkfundobj).then(res => {
-        this.reset();
-        this.open = false;
         this.$modal.msgSuccess("鎻愪氦瀹℃牳鎴愬姛!");
-        if (this.userprofile.nickName == "闄堟厱鍗�") {
-          this.submitForm();
-        }
         // 鍏抽棴绐楀彛
         this.$store.dispatch("tagsView/delView", this.$route);
         this.$router.go(-1);
@@ -2418,11 +2468,33 @@
             //淇濆瓨鏄庣粏
             for (let i = 0; i < rbDetails.length; i++) {
               if (rbDetails[i].rbid != null) {
-                updateReimbursementdetail(rbDetails[i]);
+                if (rbDetails[i].persontype == "瀹跺睘") {
+                  if (this.form.infoid) {
+                    updateReimbursementdetail(rbDetails[i]);
+                  } else {
+                    return this.$message.error(
+                      `鍥犲灞炲垎閰嶈姹傦紝璇烽�夋嫨鎹愮尞鑰呬俊鎭痐
+                    );
+                  }
+                } else {
+                  updateReimbursementdetail(rbDetails[i]);
+                }
               } else {
-                //rbid鍏宠仈涓昏〃Id
-                rbDetails[i].rbid = this.form.id;
-                addReimbursementdetail(rbDetails[i]);
+                if (rbDetails[i].persontype == "瀹跺睘") {
+                  if (this.form.infoid) {
+                    //rbid鍏宠仈涓昏〃Id
+                    rbDetails[i].rbid = this.form.id;
+                    addReimbursementdetail(rbDetails[i]);
+                  } else {
+                    return this.$message.error(
+                      `鍥犲灞炲垎閰嶈姹傦紝璇烽�夋嫨鎹愮尞鑰呬俊鎭痐
+                    );
+                  }
+                } else {
+                  //rbid鍏宠仈涓昏〃Id
+                  rbDetails[i].rbid = this.form.id;
+                  addReimbursementdetail(rbDetails[i]);
+                }
               }
             }
 
@@ -2446,6 +2518,21 @@
             this.$router.go(-1);
           } else {
             this.form.recordstatus = -1;
+            // 鐢宠鏃堕棿
+            var currenttime = new Date();
+            this.form.applyTime =
+              currenttime.getFullYear() +
+              "-" +
+              (currenttime.getMonth() + 1) +
+              "-" +
+              currenttime.getDate() +
+              " " +
+              currenttime.getHours() +
+              ":" +
+              currenttime.getMinutes() +
+              ":" +
+              currenttime.getSeconds();
+
             addReimbursement(this.form)
               .then(response => {
                 //淇濆瓨鏄庣粏
@@ -2475,7 +2562,7 @@
                 this.$router.go(-1);
               })
               .catch(err => {
-                this.$modal.msgError("鏂板鎶ラ攢鍗曚繚瀛樺け璐ワ紒");
+                this.$modal.msgError("鏂板鎶ラ攢鍗曚繚瀛樺け璐ワ紒" + res);
               });
           }
         }
@@ -3130,6 +3217,7 @@
   line-height: 36px;
   text-align: center;
 }
+
 ::v-deep .el-alert__title {
   font-size: 20px;
   line-height: 20px;

--
Gitblit v1.9.3