diff --git a/src/assets/js/api/project.js b/src/assets/js/api/project.js index 08a00806..2da81a83 100644 --- a/src/assets/js/api/project.js +++ b/src/assets/js/api/project.js @@ -176,6 +176,9 @@ export const setConstructionPlanLedgerDelete = data => post('/xmgl/constructionP export const getConstructionPlanLedgerSetPage = data => get('/xmgl/constructionPlanLedgerSet/page', data); // 保存施工方案台账设置列表信息 export const setConstructionPlanLedgerSaveList = data => post('/xmgl/constructionPlanLedgerSet/saveList', data); +// 下载施工设备机具图片信息 +export const downloadConstructionPlanLedgerImage = data => post('/xmgl/constructionPlanLedger/downloadPicInfo', data); + // 文明施工 // 分页列表查询现场会、曝光栏、专题活动信息 diff --git a/src/views/projectFront/buildEquipToolManage/equipmentManage.vue b/src/views/projectFront/buildEquipToolManage/equipmentManage.vue index 439e0094..03df29e1 100644 --- a/src/views/projectFront/buildEquipToolManage/equipmentManage.vue +++ b/src/views/projectFront/buildEquipToolManage/equipmentManage.vue @@ -587,6 +587,16 @@ export default { watch: { classificationName(val) { this.$refs.tree.filter(val) + }, + dialogFormVisible: { + handler(val) { + if (val) { + this.$nextTick(() => { + // 设置树状选中样式 + this.$refs.tree.setCurrentKey(this.checkedNodeData.id) + }) + } + } } }, created() { @@ -659,11 +669,11 @@ export default { document.body.appendChild(iframe); iframe.contentDocument.write(printContentHtml); iframe.contentDocument.close(); - iframe.onload = function(){ //解决图片显示不了的问题 + iframe.onload = function () { //解决图片显示不了的问题 iframe.contentWindow.print(); document.body.removeChild(iframe); }; - + }, //生成 二维码 bindQRCode(id) { @@ -687,7 +697,7 @@ export default { }, // 批量打印 bulkPrint() { - downloadConstructionEquipmentCheckFile(1) + this.downloadConstructionEquipmentCheckFile(1) }, downloadConstructionEquipmentCheckFile(type) { const ids = type == 1 ? this.downloadPicInfoList.map((item) => item.id).join(",") : this.detailId; @@ -733,6 +743,10 @@ export default { }, ...res.result]; this.getCheckedNode(this.listData[0]); } + this.$nextTick(() => { + // todo 在这里设置 + this.$refs.tree.setCurrentKey(this.listData[0].id) + }) } else { this.listData = [] } diff --git a/src/views/projectFront/constructionManage/schemeLedger.vue b/src/views/projectFront/constructionManage/schemeLedger.vue index b59d0877..276fc214 100644 --- a/src/views/projectFront/constructionManage/schemeLedger.vue +++ b/src/views/projectFront/constructionManage/schemeLedger.vue @@ -64,11 +64,14 @@ 新增 + 批量打印
- + + + @@ -81,9 +84,12 @@ - - - + + + - +
@@ -233,6 +242,9 @@
+ 打印方案二维码 + +
+
+ {{ this.percentageTitle }} +
+ + +
+
@@ -403,7 +432,8 @@ import { setConstructionPlanLedgerEdit, setConstructionPlanLedgerDelete, getConstructionPlanLedgerSetPage, - setConstructionPlanLedgerSaveList + setConstructionPlanLedgerSaveList, + downloadConstructionPlanLedgerImage } from "@/assets/js/api/project"; import { getCooperatorListApi } from "@/assets/js/api/cooperationUnit"; import { isJSON } from "@/util/nowDate/index"; @@ -412,6 +442,11 @@ import { encode } from 'js-base64' export default { data() { return { + percentage: 0, + percentageTitle: "正在下载中,请稍后", + cardDialog2: false, + equipmentBgImg: "", + isloading: false, cardDialog: false, current: 0, @@ -544,6 +579,7 @@ export default { supervisingUnitList: [], // 当前项目组下的监理单位 epcContractorList: [], // 当前项目组下的承包商 constructionUnitList: [], // 当前epc承包商下的施工承包商 + downloadPicInfoList: [], // 下载图片列表 }; }, mounted() { @@ -552,6 +588,86 @@ export default { }, //列表加载 methods: { + // 批量打印 + bulkPrint() { + this.downloadConstructionEquipmentCheckFile(1) + }, + downloadConstructionEquipmentCheckFile(type, row) { + const ids = type == 1 ? this.downloadPicInfoList.map((item) => item.id).join(",") : row.id; + downloadConstructionPlanLedgerImage({ + projectSn: this.projectSn, + ids: ids, + }).then((res) => { + if (res.code == 200) { + const url = res.result.file.includes("http://") ? res.result.file : this.$store.state.FILEURL + res.result.file; + if (type == 1) { + this.getProgress(url); + this.cardDialog2 = true; + } else { + this.equipmentBgImg = url; + } + } else { + this.$message.error(res.msg); + } + }); + }, + handleSelectionChangeTable(selection) { + this.downloadPicInfoList = selection; + console.log(selection); + }, + getProgress(rowUrl) { + //进度条恢复为 0 + this.percentage = 0; + // return + //发起请求 + this.$http({ + //下载文件的远端地址。 + url: rowUrl, + //请求方式 get post。 + method: "get", + //设置返回数据类型为base64的数据,这样才可以被new Blob() 解析。 + responseType: "blob", + //请求参数 get-->params post-->data 。 + params: {}, + //xml返回数据的钩子函数,可以用来获取数据的进度 具体可查看axios的官网 + onDownloadProgress: (progressEvent) => { + //progressEvent.loaded 下载文件的当前大小 + //progressEvent.total 下载文件的总大小 如果后端没有返回 请让他加上! + let progressBar = Math.round(progressEvent.loaded / progressEvent.total * 100); + //接收进度为99%的时候需要留一点前端编译的时间 + if (progressBar >= 99) { + this.percentage = 99; + this.percentageTitle = '下载完成,文件正在编译。'; + } else { + this.percentage = progressBar; + this.percentageTitle = '正在下载,请耐心等待...'; + } + } + }).then(res => { + //当前定义res.message 出现的时候说明后端文件返回出现了问题 不然应该直接是个文件流 + if (res.status != 200) { + this.percentageTitle = '下载失败,请重试。'; + return + } + console.log(res.data) + // return; + // 创建一个下载链接 + const url = window.URL.createObjectURL(res.data); + // 创建一个元素 + const link = document.createElement("a"); + link.href = url; + link.download = "方案台账二维码"; // 指定下载文件的文件名 + // 模拟点击下载链接 + document.body.appendChild(link); + link.click(); + document.body.removeChild(link); + // 释放URL对象 + window.URL.revokeObjectURL(url); + this.percentageTitle = '下载完成'; + //编译文件完成后,进度条展示为100%100 + this.percentage = 100; + }) + }, // 全选 handleCheckAllChange(isChecked, selectType) { // console.log(isChecked, selectType); @@ -662,8 +778,8 @@ export default { this.pageNo = val; this.loadCardData(); }, - //查看条数 - handleSizeChangeStaff(val) { + //查看条数 + handleSizeChangeStaff(val) { this.personnelInfo.pageSize = val; this.constructionPlanLedgerSetPage(); }, @@ -759,6 +875,7 @@ export default { this.$nextTick(() => { this.bindQRCode(row.id); }); + this.downloadConstructionEquipmentCheckFile(2, row); this.cardDialogTitle = "二维码详情"; } else if (dialogType == 3) { const flag = document.getElementById("qrcode"); @@ -877,18 +994,29 @@ export default { }); }, printBtn() { - // setTimeout(() => { - // console.log(this.$refs["qrCodeDiv"].innerHTML) - // },100) + const printContentHtml = document.getElementById("qrCodeDiv2").innerHTML; + // console.log(printContentHtml); + const iframe = document.createElement("iframe"); + // iframe.setAttribute( + // "style", + // "position:absolute;width:0px;height:0px;left:-500px;top:-500px;" + // ); + document.body.appendChild(iframe); + iframe.contentDocument.write(printContentHtml); + iframe.contentDocument.close(); + iframe.onload = function () { //解决图片显示不了的问题 + iframe.contentWindow.print(); + document.body.removeChild(iframe); + }; // qrCode - setTimeout(() => { - let printDemo = this.$refs["qrCodeDiv"].innerHTML; - console.log(printDemo); - window.document.body.innerHTML = printDemo; - //没有图片直接打印 - window.print(); - window.location.reload(); - }, 100); + // setTimeout(() => { + // let printDemo = this.$refs["qrCodeDiv"].innerHTML; + // console.log(printDemo); + // window.document.body.innerHTML = printDemo; + // //没有图片直接打印 + // window.print(); + // window.location.reload(); + // }, 100); }, handleExceed() { this.$message.warning("文件超出最大限制,请删除上份文件!"); @@ -987,7 +1115,7 @@ export default { }, computed: { dateRange() { - const { preview, download, qrcode, isAuthorize, isModified,isView, isDeleted } = this + const { preview, download, qrcode, isAuthorize, isModified, isView, isDeleted } = this return { preview: preview.selectionData, download: download.selectionData, @@ -1019,12 +1147,19 @@ export default { +}