package.json | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/utils/drag.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/project/fund/applyDetail/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/project/travelexpenseapply/travelexpensedetail/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
package.json
@@ -52,6 +52,7 @@ "js-beautify": "1.13.0", "js-cookie": "2.2.1", "jsencrypt": "3.0.0-rc.1", "lodash": "^4.17.21", "moment": "^2.29.3", "nprogress": "0.2.0", "prettier": "^1.8.1", src/main.js
@@ -45,6 +45,8 @@ //çå¸åºéæ©ç»ä»¶ // import li_area_select from '@components/Address' import moment from "moment" import '@/utils/drag.js'; Vue.prototype.$moment = moment; // å ¨å±æ¹æ³æè½½ src/utils/drag.js
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,87 @@ import Vue from 'vue'; /* * ä½¿ç¨æ¹æ³ï¼ * å°ä»¥ä¸ä»£ç å¤å¶å°ä¸ä¸ªjsæä»¶ä¸ï¼ç¶åå¨å ¥å£æä»¶main.jsä¸importå¼å ¥å³å¯ï¼ * ç»elementUIçdialogä¸å ä¸ v-dialogDrags * ç»dialog设置 :close-on-click-modal="false" , ç¦æ¢ç¹å»é®ç½©å±å ³éå¼¹åºå± */ // å ¼å®¹ie,è°·æ // v-dialogDrags: å¼¹çªææ½å±æ§ ï¼éç¹ï¼ï¼ï¼ ç»æ¨¡ææ¡æ·»å è¿ä¸ªå±æ§æ¨¡ææ¡å°±è½ææ½äºï¼ Vue.directive('dialogDrags', { // 屿§åç§°dialogDragsï¼åé¢å v- ä½¿ç¨ bind(el, binding, vnode, oldVnode) { const dialogHeaderEl = el.querySelector('.el-dialog__header'); const dragDom = el.querySelector('.el-dialog'); dialogHeaderEl.style.cssText += ';cursor:move;'; // è·ååæå±æ§ ie domå ç´ .currentStyle ç«çè°·æ window.getComputedStyle(domå ç´ , null); const sty = (function () { if (window.document.currentStyle) { return (dom, attr) => dom.currentStyle[attr]; } else { return (dom, attr) => getComputedStyle(dom, false)[attr]; } })(); dialogHeaderEl.onmousedown = (e) => { // é¼ æ æä¸ï¼è®¡ç®å½åå ç´ è·ç¦»å¯è§åºçè·ç¦» const disX = e.clientX - dialogHeaderEl.offsetLeft; const disY = e.clientY - dialogHeaderEl.offsetTop; const screenWidth = document.body.clientWidth; // bodyå½å宽度 const screenHeight = document.documentElement.clientHeight; // å¯è§åºåé«åº¦(åºä¸ºbodyé«åº¦ï¼å¯æäºç¯å¢ä¸æ æ³è·å) const dragDomWidth = dragDom.offsetWidth; // å¯¹è¯æ¡å®½åº¦ const dragDomheight = dragDom.offsetHeight; // å¯¹è¯æ¡é«åº¦ // è·åå°çå¼å¸¦px æ£åå¹é æ¿æ¢ let styL = sty(dragDom, 'left'); let styT = sty(dragDom, 'top'); // 注æå¨ieä¸ ç¬¬ä¸æ¬¡è·åå°çå¼ä¸ºç»ä»¶èªå¸¦50% ç§»å¨ä¹åèµå¼ä¸ºpx if (styL.includes('%')) { styL = +document.body.clientWidth * (+styL.replace(/\%/g, '') / 100); styT = +document.body.clientHeight * (+styT.replace(/\%/g, '') / 100); } else { styL = +styL.replace(/\px/g, ''); styT = +styT.replace(/\px/g, ''); }; document.onmousemove = function (e) { // éè¿äºä»¶å§æï¼è®¡ç®ç§»å¨çè·ç¦» let left = e.clientX - disX + styL; let top = e.clientY - disY + styT; // // è¾¹çå¤ç // if (left < 0) { // left = 0; // } // if (left > screenWidth - dragDomWidth) { // left = screenWidth - dragDomWidth; // } // if (top < 0) { // top = 0; // } // if (top > screenHeight - dragDomheight) { // top = screenHeight - dragDomheight; // } // ç§»å¨å½åå ç´ dragDom.style.cssText += `;left:${left}px;top:${top}px;`; }; document.onmouseup = function (e) { document.onmousemove = null; document.onmouseup = null; }; }; } }); src/views/project/fund/applyDetail/index.vue
@@ -158,6 +158,7 @@ <el-table :data="rbDetails" v-loading="loading" max-height="400" border highlight-current-row > @@ -183,7 +184,7 @@ > <template slot-scope="scope"> <el-select v-model="scope.row.applytype" v-model="scope.row.applytypename" placeholder="æå¡ç±»å" @change="verifyFeeItemType(scope.row)" > @@ -204,7 +205,7 @@ > <template slot-scope="scope"> <el-select v-model="scope.row.itemid" v-model="scope.row.itemname" placeholder="æå¡é¡¹ç®" filterable @change="verifyFeeItem(scope.row)" @@ -620,8 +621,8 @@ @click="submitForm" v-if=" operationType == 'add' || operationType == 'update' || ismanager == true operationType == 'update' || ismanager == true " >æäº¤ä¿å</el-button > @@ -841,7 +842,14 @@ > </span> </el-dialog> <el-dialog :title="pdftitle" :visible.sync="pdfVisible" width="50%"> <el-dialog v-dialogDrags :modal="false" :close-on-click-modal="false" :title="pdftitle" :visible.sync="pdfVisible" width="60%" > <div class="pdfimg"> <div class="box-pdf"> <div> @@ -850,7 +858,9 @@ class="upload-demo" :action="uploadFileUrl" :file-list="fileListto" :show-file-list="false" multiple drag :limit="20" :headers="headers" :on-success=" @@ -864,13 +874,61 @@ :on-remove="remove" accept="image/*,.pdf" > <el-button :disabled="operationType == 'detail'" size="small" type="primary" >ä¸ä¼ 票æ®</el-button > <i class="el-icon-upload"></i> <div class="el-upload__text"> å°ç¥¨æ®æå°æ¤å¤ï¼æ <em ><el-button :disabled="operationType == 'detail'" size="small" type="primary" >ç¹å»ä¸ä¼ </el-button ></em > </div> <!-- <div class="el-upload__tip" slot="tip"> åªè½ä¸ä¼ jpg/pngæä»¶ï¼ä¸ä¸è¶ è¿500kb </div> --> </el-upload> <el-table :data="fileListto" @row-click="downFile" style="width: 100%" > <el-table-column prop="name" :show-overflow-tooltip="true" label="åç§°" > <template slot-scope="scope"> <i style="color:#409EFF" class=" el-icon-s-order" />{{ scope.row.name }} </template> </el-table-column> <el-table-column prop="name" width="180" :show-overflow-tooltip="true" label="åè½" > <template slot-scope="scope"> <el-button type="primary" size="mini" @click.native.prevent="deletedowfile(scope.row)" >å é¤</el-button > <el-button type="primary" size="mini" @click.native.prevent="moveupdowfile(scope.row)" >ä¸ç§»</el-button > </template> </el-table-column> </el-table> </div> <!-- <div class="pdftit" @@ -919,7 +977,7 @@ listDonatebaseinfo, getDonatebaseinfo } from "@/api/project/donatebaseinfo"; import debounce from "lodash/debounce"; import { onelistFund, listFund, @@ -1077,6 +1135,8 @@ rowfeeblocks: [], fundflowList: [], // éæºæ° randomnumber: "", //ä¸å®¶/åä½éæ©ï¼expert/unit selectionType: "", @@ -1608,9 +1668,24 @@ }); }); }, generateRandomString(length) { const characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; let randomString = ""; for (let i = 0; i < length; i++) { randomString += characters.charAt( Math.floor(Math.random() * characters.length) ); } return randomString; }, /** æäº¤æé® */ submitForm() { submitForm: debounce(function() { if (!this.randomnumber) { this.randomnumber = this.generateRandomString(9); this.form.randomnumber = this.randomnumber; } console.log(this.randomnumber); this.$refs["form"].validate(valid => { if (valid) { this.formData = this.form; @@ -1846,7 +1921,7 @@ this.$router.go(-1); } }); }, }, 500), //å®¡æ¹æäº¤ checksubmit() { @@ -2229,6 +2304,10 @@ }, // æ¥åæéç«å»ä¿å Savenow() { if (!this.randomnumber) { this.randomnumber = this.generateRandomString(9); this.form.randomnumber = this.randomnumber; } this.Savereminder = false; this.Reminderquantity = 0; this.totalquantity = 0; @@ -2513,10 +2592,10 @@ rowfeeblocks: [], annexfiles: null }; if (this.Reminderquantity >= 5) { this.Savereminder = true; return; } // if (this.Reminderquantity >= 5) { // this.Savereminder = true; // return; // } if (rowIndex == undefined || rowIndex == null || rowIndex < 0) { this.rbDetails.push(rowData); } else { @@ -2673,14 +2752,14 @@ handleUploadError() {}, /** ä¸è½½æä»¶æé®æä½ */ downFile(item) { const url = process.env.VUE_APP_BASE_API + item.url; var a = document.createElement("a"); var event = new MouseEvent("click"); a.download = item.name; a.href = url; a.dispatchEvent(event); }, // downFile(item) { // const url = process.env.VUE_APP_BASE_API + item.url; // var a = document.createElement("a"); // var event = new MouseEvent("click"); // a.download = item.name; // a.href = url; // a.dispatchEvent(event); // }, // remove(file) { // this.fileList.splice(this.fileList.indexOf(file), 1) @@ -2714,8 +2793,10 @@ this.form.filename = file.raw.name; this.$modal.msgSuccess(response.msg); // this.fileListto.push({ name: file.name, url: response.fileName }); this.fileListto.push({ name: file.name, url: response.url }); this.fileListto.push({ name: file.name, url: response.fileName }); // this.fileListto.push({ name: file.name, url: response.url }); // this.pdfimgsrcList.push(response.url); this.rbDetails[this.atpresent].annexfilesList = this.fileListto; } else { console.log(response.msg); @@ -2728,10 +2809,14 @@ this.pdfVisible = true; if (this.rbDetails[index].annexfilesList) { this.fileListto = this.rbDetails[index].annexfilesList; // this.pdfimg = this.Networkheader + "/prod-api" + this.fileListto[0].url; this.pdfimg = this.fileListto[0].url; this.pdfimg = this.Networkheader + "/prod-api" + this.fileListto[0].url; // this.pdfimg = this.fileListto[0].url; this.pdfimgsrcList = []; this.pdfimgsrcList.push(this.pdfimg); this.fileListto.forEach(item => { this.pdfimgsrcList.push(this.Networkheader + "/prod-api" + item.url); }); console.log(this.pdfimgsrcList); console.log(this.pdfimg); } else { this.fileListto = []; @@ -2739,23 +2824,29 @@ this.pdftitle = ""; } }, fnrowclick(row) { console.log(row); }, // ç¹å»å·²ä¸ä¼ æä»¶ downFile(item) { this.pdftitle = item.name; let name = item.name.split("."); downFile(row) { console.log(row); this.pdftitle = row.name; let name = row.name.split("."); if (name[1] == "pdf") { this.$modal.msgWarning("å½åæä»¶æä¸æ¯æé¢è§"); this.previewpdf = false; this.hintitle = "å½åæä»¶æä¸æ¯æé¢è§"; } else if (name[1] == "jpg" || "png") { this.previewpdf = true; if (item.url) { this.pdfimg = this.Networkheader + "/prod-api" + item.url; this.pdfimgsrcList = []; this.pdfimgsrcList.push(this.pdfimg); if (row.url) { this.pdfimg = this.Networkheader + "/prod-api" + row.url; // this.pdfimg = row.url; // this.pdfimgsrcList = []; // this.pdfimgsrcList.push(this.pdfimg); console.log(this.pdfimg); } else { this.pdfimg = this.Networkheader + "/prod-api" + item.response.url; this.pdfimg = this.Networkheader + "/prod-api" + row.url; } } else { this.hintitle = "å½åæä»¶æä¸æ¯æé¢è§"; @@ -2763,7 +2854,23 @@ this.previewpdf = false; } }, getIndexInArray(arr, obj) { return arr.indexOf(obj); }, // ç¹å»å é¤ deletedowfile(row) { console.log(this.fileListto); console.log(row); const index = this.getIndexInArray(this.fileListto, row); this.fileList = this.fileListto.splice(index, 1); console.log(index); }, // ç¹å»ä¸ç§» moveupdowfile(row) { const index = this.getIndexInArray(this.fileListto, row); const item = this.fileListto.splice(index, 1)[0]; // ç§»é¤æå®ç´¢å¼å¤çå ç´ ï¼å¹¶ä¿åå°itemåéä¸ this.fileListto.splice(index - 1, 0, item); // å°itemæå ¥å°ç´¢å¼ä½ç½®çåä¸ä½ }, //ä¸å®¶/å»çæºæ/è´¹ç¨æ¥éæºæéæ© ShowDetailDialog(spoce, showType) { this.selectionType = showType; @@ -2981,7 +3088,7 @@ height: 600px; .box-pdf { width: 200px; width: 400px; padding-top: 20px; margin-right: 30px; border: 1px solid #dcdfe6; src/views/project/travelexpenseapply/travelexpensedetail/index.vue
@@ -216,6 +216,7 @@ :data="rbDetails" ref="table" border max-height="400" highlight-current-row :summary-method="getSummaries" show-summary @@ -658,6 +659,7 @@ <el-table :data="rbPayees" border max-height="400" highlight-current-row :summary-method="getSummaries" show-summary @@ -916,7 +918,14 @@ </div> </div> <el-dialog :title="pdftitle" :visible.sync="pdfVisible" width="50%"> <el-dialog v-dialogDrags :modal="false" :close-on-click-modal="false" :title="pdftitle" :visible.sync="pdfVisible" width="60%" > <div class="pdfimg"> <div class="box-pdf"> <div> @@ -925,7 +934,9 @@ class="upload-demo" :action="uploadFileUrl" :file-list="fileListto" :show-file-list="false" multiple drag :limit="20" :headers="headers" :on-success=" @@ -939,22 +950,59 @@ :on-remove="remove" accept="image/*,.pdf" > <el-button :disabled="operationType == 'detail'" size="small" type="primary" >ä¸ä¼ </el-button > <i class="el-icon-upload"></i> <div class="el-upload__text"> å°ç¥¨æ®æå°æ¤å¤ï¼æ <em ><el-button :disabled="operationType == 'detail'" size="small" type="primary" >ç¹å»ä¸ä¼ </el-button ></em > </div> </el-upload> <el-table :data="fileListto" @row-click="downFile" style="width: 100%" > <el-table-column prop="name" :show-overflow-tooltip="true" label="åç§°" > <template slot-scope="scope"> <i style="color:#409EFF" class=" el-icon-s-order" />{{ scope.row.name }} </template> </el-table-column> <el-table-column prop="name" width="180" :show-overflow-tooltip="true" label="åè½" > <template slot-scope="scope"> <el-button type="primary" size="mini" @click.native.prevent="deletedowfile(scope.row)" >å é¤</el-button > <el-button type="primary" size="mini" @click.native.prevent="moveupdowfile(scope.row)" >ä¸ç§»</el-button > </template> </el-table-column> </el-table> </div> <!-- <div class="pdftit" @click="pdffn(item)" v-for="item in fileList" :key="item.name" > {{ item.name }} </div> --> </div> <div v-if="this.previewpdf" class="pdfimgmin"> @@ -1029,6 +1077,7 @@ import { getSubsidy } from "@/api/project/travelcity"; import { listReportname, listUser } from "@/api/project/organization"; import { getToken } from "@/utils/auth"; import debounce from "lodash/debounce"; export default { components: { Treeselect, @@ -1301,9 +1350,12 @@ this.fileListto = this.rbDetails[index].annexfilesList; console.log(this.fileListto); this.pdfimg = this.Networkheader + "/prod-api" + this.fileListto[0].url; console.log(this.pdfimg); this.pdfimgsrcList = []; this.pdfimgsrcList.push(this.pdfimg); this.fileListto.forEach(item => { this.pdfimgsrcList.push(this.Networkheader + "/prod-api" + item.url); }); console.log(this.pdfimgsrcList); console.log(this.pdfimg); } else { this.fileListto = []; this.pdfimg = ""; @@ -1324,8 +1376,8 @@ this.previewpdf = true; if (item.url) { this.pdfimg = this.Networkheader + "/prod-api" + item.url; this.pdfimgsrcList = []; this.pdfimgsrcList.push(this.pdfimg); // this.pdfimgsrcList = []; // this.pdfimgsrcList.push(this.pdfimg); console.log(this.pdfimg); } else { this.pdfimg = this.Networkheader + "/prod-api" + item.response.url; @@ -1335,6 +1387,23 @@ this.$modal.msgWarning("å½åæä»¶æä¸æ¯æé¢è§"); this.previewpdf = false; } }, getIndexInArray(arr, obj) { return arr.indexOf(obj); }, // ç¹å»å é¤ deletedowfile(row) { console.log(this.fileListto); console.log(row); const index = this.getIndexInArray(this.fileListto, row); this.fileList = this.fileListto.splice(index, 1); console.log(index); }, // ç¹å»ä¸ç§» moveupdowfile(row) { const index = this.getIndexInArray(this.fileListto, row); const item = this.fileListto.splice(index, 1)[0]; // ç§»é¤æå®ç´¢å¼å¤çå ç´ ï¼å¹¶ä¿åå°itemåéä¸ this.fileListto.splice(index - 1, 0, item); // å°itemæå ¥å°ç´¢å¼ä½ç½®çåä¸ä½ }, /** æ¥è¯¢é¨é¨ä¸ææ ç»æ */ @@ -1962,7 +2031,7 @@ }, /** æäº¤ä¿åæé® */ submitForm() { submitForm: debounce(function(data) { this.$refs["form"].validate(valid => { if (valid) { // idisabled=true; @@ -2113,7 +2182,7 @@ } } }); }, }, 500), /** å é¤æé®æä½ */ handleDelete(row) { @@ -2284,10 +2353,10 @@ personname: null, destination: null }; if (this.Reminderquantity >= 5) { this.Savereminder = true; return; } // if (this.Reminderquantity >= 5) { // this.Savereminder = true; // return; // } if (rowIndex == undefined || rowIndex == null || rowIndex < 0) { this.rbDetails.push(rowData); } else { @@ -2313,10 +2382,10 @@ personname: null, amount: null }; if (this.Reminderquantity >= 5) { this.Savereminder = true; return; } // if (this.Reminderquantity >= 5) { // this.Savereminder = true; // return; // } if (rowIndex == undefined || rowIndex == null || rowIndex <= 0) { this.rbPayees.push(rowData); } else { @@ -2720,7 +2789,7 @@ height: 600px; .box-pdf { width: 200px; width: 400px; padding-top: 20px; margin-right: 30px; border: 1px solid #dcdfe6;