From 1e487a42549384f6e937a5c7d557563aedafec2c Mon Sep 17 00:00:00 2001 From: WXL <1785969728@qq.com> Date: 星期三, 20 三月 2024 18:41:29 +0800 Subject: [PATCH] 11 --- src/views/project/travelexpenseapply/travelexpensedetail/index.vue | 344 ++++++++++++++++++++++++++++++++++++++++++--------------- 1 files changed, 252 insertions(+), 92 deletions(-) diff --git a/src/views/project/travelexpenseapply/travelexpensedetail/index.vue b/src/views/project/travelexpenseapply/travelexpensedetail/index.vue index 5dba5d3..88a857f 100644 --- a/src/views/project/travelexpenseapply/travelexpensedetail/index.vue +++ b/src/views/project/travelexpenseapply/travelexpensedetail/index.vue @@ -5,10 +5,10 @@ <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="鐢宠鏃ユ湡" @@ -724,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 @@ -751,7 +751,7 @@ label="鏀舵浜�" align="center" fixed - width="110" + width="200" > <template slot-scope="scope"> <el-select @@ -777,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" @@ -797,7 +797,7 @@ <template slot-scope="scope"> <el-input v-model="scope.row.bankcardno" - placeholder="閾惰鍗″彿" + placeholder="閾惰璐﹀彿" /> </template> </el-table-column> @@ -901,7 +901,7 @@ v-if="operationType == 'check' && userprofile.nickName == '闄堟厱鍗�'" > <el-col :span="12"> - <el-form-item label="鐢宠鏉愭枡鐘舵��" prop="infoid"> + <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> @@ -957,7 +957,7 @@ :visible.sync="pdfVisible" width="60%" > - <div> + <div style="margin-bottom: 10px;"> <el-table :data="tableDatatop" style="width: 100%"> <el-table-column prop="orderno" label="搴忓彿"> </el-table-column> <el-table-column prop="personname" label="璐圭敤浜哄憳"> @@ -986,6 +986,13 @@ </el-table-column> </el-table> </div> + <el-alert + title="鏂颁笂浼犳枃浠堕渶鍦ㄦ彁浜や繚瀛樺悗鎵嶅彲杩涜妗堜緥鍏宠仈锛屽惁鍒欒涓烘斁寮�" + type="error" + show-icon + close-text="鐭ラ亾浜�" + > + </el-alert> <el-tabs style="margin-top: 20px;" v-model="activeName" @@ -1054,7 +1061,7 @@ > <template slot-scope="scope"> <el-button - type="primary" + type="danger" size="mini" @click.native.prevent.stop="deletedowfile(scope.row)" >鍒犻櫎</el-button @@ -1184,8 +1191,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%"> @@ -1290,6 +1297,7 @@ value: 0, label: "" }, + ICDtoken: getToken(), pdfimgsrcList: [], Savereminder: false, //鎻愰啋淇濆瓨寮规 Reminderquantity: 0, //鎻愰啋鏁伴噺 @@ -1359,7 +1367,7 @@ reimbursementList: [], // 琛ㄥ崟鏍¢獙 - rules: { + rules: { reason: [ { required: true, message: "璇疯緭鍏ュ嚭宸簨鐢�", trigger: "blur" } ], @@ -1409,7 +1417,6 @@ invoicefileListto: [], invoicepdfimg: "", invoicepdfimgsrcList: [], - invoDatatop: [], //浜哄憳绫诲埆 persontype: null, //鍒拌揪鍦� @@ -1555,104 +1562,174 @@ //鏂囦欢涓婁紶鎴愬姛鍥炶皟 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); + + const fetchPromises = this.rbDetails[index].annexfilesList.map( + (value, indexson) => { + const pdfimg = this.Networkheader + "/prod-api" + value.url; + return fetch(pdfimg, config) + .then(response => response.blob()) + .then(blob => { + return { + name: value.name, + url: URL.createObjectURL(blob) + }; + }) + .catch(error => { + console.error("Error loading image", error); + return null; + }); + } + ); + + Promise.all(fetchPromises).then(fileListto => { + this.fileListto = fileListto.filter(item => item !== null); + this.pdfimg = this.fileListto[0].url; + console.log(this.pdfimg, "pdfimg"); + this.pdfimgsrcList = this.fileListto.map(item => item.url); }); + + 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 - ); + const fetchPromises = this.rbDetails[index].invoicefilesList.map( + (value, indexson) => { + const pdfimg = this.Networkheader + "/prod-api" + value.url; + return fetch(pdfimg, config) + .then(response => response.blob()) + .then(blob => { + return { + name: value.name, + url: URL.createObjectURL(blob) + }; + }) + .catch(error => { + console.error("Error loading image", error); + return null; + }); + } + ); + + Promise.all(fetchPromises).then(invoicefileListto => { + this.invoicefileListto = invoicefileListto.filter(item => item !== null); + this.invoicepdfimg = this.invoicefileListto[0].url; + console.log(this.invoicepdfimg, "invoicepdfimg"); + this.invoicepdfimgsrcList = this.invoicefileListto.map(item => item.url); }); - console.log(this.invoicepdfimgsrcList); - console.log(this.invoicepdfimg); + + this.previewpdf = true; } else { this.invoicefileListto = []; this.invoicepdfimg = ""; this.pdftitle = ""; } - if (this.activeName == 1) { + if (this.activeName == "common") { this.pdftitle = "鍏�" + this.pdfimgsrcList.length + "椤�"; } else { this.pdftitle = "鍏�" + this.invoicepdfimgsrcList.length + "椤�"; } + console.log(this.fileListto, "this.fileListto"); + console.log(this.rbDetails[index].annexfilesList, "annexfilesList"); }, // 鐐瑰嚮宸蹭笂浼犳枃浠� downFile(item) { if (this.activeName == 1) { - console.log(item, "鐐瑰嚮鏂囦欢鎷縤tem"); this.pdftitle = "鍏�" + this.pdfimgsrcList.length + "椤癸紝褰撳墠閫変腑" + item.name; let name = item.name.split("."); @@ -1661,11 +1738,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 = "褰撳墠鏂囦欢鏆備笉鏀寔棰勮"; @@ -1673,7 +1751,6 @@ this.previewpdf = false; } } else { - console.log(item, "鐐瑰嚮鏂囦欢鎷縤tem"); this.pdftitle = "鍏�" + this.invoicepdfimgsrcList.length + "椤癸紝褰撳墠閫変腑" + item.name; let name = item.name.split("."); @@ -1684,12 +1761,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 = "褰撳墠鏂囦欢鏆備笉鏀寔棰勮"; @@ -1703,22 +1777,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); } }, // 鐐瑰嚮涓婄Щ @@ -1727,10 +1816,32 @@ const index = this.getIndexInArray(this.fileListto, row); const item = this.fileListto.splice(index, 1)[0]; // 绉婚櫎鎸囧畾绱㈠紩澶勭殑鍏冪礌锛屽苟淇濆瓨鍒癷tem鍙橀噺涓� this.fileListto.splice(index - 1, 0, item); // 灏唅tem鎻掑叆鍒扮储寮曚綅缃殑鍓嶄竴浣� + + const indexann = this.rbDetails[this.atpresent].annexfilesList.findIndex(item => item.name == row.name); + const itemann = this.rbDetails[this.atpresent].annexfilesList.splice( + indexann, + 1 + )[0]; // 绉婚櫎鎸囧畾绱㈠紩澶勭殑鍏冪礌锛屽苟淇濆瓨鍒癷tem鍙橀噺涓� + this.rbDetails[this.atpresent].annexfilesList.splice( + indexann - 1, + 0, + itemann + ); // 灏唅temann鎻掑叆鍒扮储寮曚綅缃殑鍓嶄竴浣� } else { const index = this.getIndexInArray(this.invoicefileListto, row); const item = this.invoicefileListto.splice(index, 1)[0]; // 绉婚櫎鎸囧畾绱㈠紩澶勭殑鍏冪礌锛屽苟淇濆瓨鍒癷tem鍙橀噺涓� this.invoicefileListto.splice(index - 1, 0, item); // 灏唅tem鎻掑叆鍒扮储寮曚綅缃殑鍓嶄竴浣� + + const indexinvo = this.rbDetails[this.atpresent].invoicefilesList.findIndex(item => item.name == row.name); + const iteminvo = this.rbDetails[this.atpresent].invoicefilesList.splice( + indexinvo, + 1 + )[0]; // 绉婚櫎鎸囧畾绱㈠紩澶勭殑鍏冪礌锛屽苟淇濆瓨鍒癷tem鍙橀噺涓� + this.rbDetails[this.atpresent].invoicefilesList.splice( + indexinvo - 1, + 0, + iteminvo + ); // 灏唅teminvo鎻掑叆鍒扮储寮曚綅缃殑鍓嶄竴浣� } }, @@ -2004,21 +2115,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(); - // }); }, /** 鏌ヨ鎶ラ攢鐢宠鍒楄〃 */ @@ -2278,6 +2395,8 @@ getReimbursement(id).then(response => { this.form = response.data; + console.log(this.form.checkstatus, "checkstatus"); + this.form.checkstatus = this.form.checkstatus.toString(); //绁ㄦ嵁 this.fileListto = this.form.annexfiles @@ -2356,7 +2475,10 @@ this.Savenow(); console.log("淇濆瓨"); } + this.$modal.loading("姝e湪鎻愪氦瀹℃牳锛岃绋嶅�欙紒"); + checkfund(checkfundobj).then(res => { + this.$modal.closeLoading(); this.$modal.msgSuccess("鎻愪氦瀹℃牳鎴愬姛!"); // 鍏抽棴绐楀彛 this.$store.dispatch("tagsView/delView", this.$route); @@ -2393,11 +2515,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]); + } } } @@ -2421,6 +2565,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 => { //淇濆瓨鏄庣粏 @@ -3105,6 +3264,7 @@ line-height: 36px; text-align: center; } + ::v-deep .el-alert__title { font-size: 20px; line-height: 20px; -- Gitblit v1.9.3