From 2c1bde73a53930829f46701adf2161a574a1931c Mon Sep 17 00:00:00 2001 From: zouyu <2723363702@qq.com> Date: 星期二, 07 十一月 2023 20:59:35 +0800 Subject: [PATCH] modified: package.json new file: public/img/image001.jpg modified: src/views/common/ztt-table.vue modified: src/views/quality/rawMaterial/index.vue new file: src/views/quality/rawMaterial/rawMaterial-print.vue modified: vue.config.js --- src/views/quality/rawMaterial/index.vue | 135 ++++++++++++++++++++++++++++++--------------- 1 files changed, 90 insertions(+), 45 deletions(-) diff --git a/src/views/quality/rawMaterial/index.vue b/src/views/quality/rawMaterial/index.vue index 3e33e70..4765239 100644 --- a/src/views/quality/rawMaterial/index.vue +++ b/src/views/quality/rawMaterial/index.vue @@ -20,13 +20,15 @@ <ttable :table="table" :resultData="resultData" - @change ="costPlannedAmountChange" @handleSelectionChange="handleSelectionChange" :prelang="prelang" :options="options" :ajaxFun="ajaxFun" + @queryParam="getQueryParam($event)" ref="rawMaterialTable"> - <template #toolbar></template> + <template #toolbar> + <el-button @click="exportRawMaterial" type="primary" >瀵煎嚭</el-button> + </template> </ttable> </basic-container> <!-- 寮圭獥, 鏂板 / 淇敼 --> @@ -35,18 +37,35 @@ ref="addOrUpdate" @refreshDataList="getData" ></RawMaterialForm> + <el-dialog + top="10vh" + title="鎵撳嵃棰勮" + :visible.sync="printDialogVisible" + width="60%"> + <div style="width:100%;height: 60vh;overflow-y: scroll;"> + <printTemplate id="printRaw" :formData="printFormData"></printTemplate> + </div> + <span slot="footer" class="dialog-footer"> + <el-button @click="()=>{printDialogVisible = false;this.printFormData=null}">鍙� 娑�</el-button> + <el-button type="primary" @click="printFun()">鎵� 鍗�</el-button> + </span> + </el-dialog> </div> </template> <script> -import ExportMaterial from './ExportMaterial.vue' import ttable from '@/views/common/ztt-table.vue' -import { getRawInspectList,delObj } from '@/api/quality/rawMaterial' +import { getRawInspectList,delObj,exportRawMaterial,getObj } from '@/api/quality/rawMaterial' import RawMaterialForm from './rawMaterial-form' import * as fecha from 'element-ui/lib/utils/date' import { mapGetters } from 'vuex' +import PrintJS from 'print-js' +import printTemplate from './rawMaterial-print.vue' export default { data() { return { + printFormData: null, + printDialogVisible: false, + queryParam: {}, resultData:[], addOrUpdateVisible: false, type: [1], @@ -64,14 +83,13 @@ isRefresh: true, // 鏄惁鏄剧ず鍒锋柊鎸夐挳 isShowHide: true, // 鏄惁鏄剧ず鏄惧奖鎸夐挳H isSearch: true, // 楂樼骇鏌ヨ鎸夐挳 - defaultOrderBy: { column: 'formTime', direction: 'desc' }, + defaultOrderBy: { column: 'createTime', direction: 'desc' }, }, table: { total: 0, currentPage: 1, pageSize: 20, data: [], - isExport:true, // 鏍囬 column: [ { @@ -139,6 +157,7 @@ prop: 'createTime', label: '鎶ユ鏃ユ湡', isTrue: true, + sort: true, isSearch: true, searchInfoType: 'text', formatter: this.formatDateTime, @@ -190,14 +209,14 @@ text: '鏂板', type: 'primary', fun: this.addOrUpdateHandle + }], + operator: [{ + text: '鎵撳嵃', + type: 'text', + size: 'small', + fun: this.previewFun }, { - text: '瀵煎嚭', - type: 'primary', - fun: this.handleExcel - } - ], - operator: [{ text: '浣滃簾', type: 'text', size: 'small', @@ -217,7 +236,7 @@ components: { ttable, RawMaterialForm, - ExportMaterial, + printTemplate, }, created() { @@ -225,39 +244,65 @@ computed: { ...mapGetters(['permissions']) }, - methods:{ - async costPlannedAmountChange(value){ - this.resultData= value - }, - - handleExcel() { - console.log(this.resultData); - console.log(this.table.column); - // let arr = this.table.column.map(el = el.isTrue == true) - // console.log(arr); - let arr = this.table.column.filter(item => item.isTrue == true).map(item => { - return{ - prop:item.prop, - label:item.label - } - }) - let opt = { - title: '鏂囨。鏍囬', - column: [{ - label:'', - prop:'header', - children:arr - }], - data: this.resultData + watch:{ + printFormData(newVal){ + if(newVal){ + this.printFormData = newVal + } } - this.$Export.excel({ - title: opt.title, - columns: opt.column, - data: opt.data - }); - // console.log(this.table); - - }, + }, + methods:{ + //鏌ョ湅鎶ュ憡鎸夐挳 + previewFun(row){ + getObj(row.id).then(res=>{ + this.printFormData = res.data.data + this.printDialogVisible = true + }).catch(error=>{ + console.log(error); + }) + }, + //鎵撳嵃鎸夐挳 + printFun() { + this.printDialogVisible = false; + PrintJS({ + printable: "printRaw", + type: "html", + maxWidth: 1200, + // header: "鍘熸潗鏂欐娴嬫姤鍛�", + style: '@page {margin: 0 5mm}', + targetStyles: ["*"], + ignoreElements: ["no-ignore"], + orientation: 'portrait' + }); + }, + getQueryParam(data){ + this.queryParam = data + }, + exportRawMaterial(){ + exportRawMaterial(this.queryParam).then(res=>{ + console.log(res) + this.downloadFun(res) + }).catch(error=>{ + console.log(error); + }) + }, + downloadFun(result){ + if(result == null || result == undefined){ + return; + } + var nameList = result.headers['content-disposition']; + nameList = decodeURI(nameList); + var fileName = nameList.split('=')[1]; + const blob = new Blob([result.data], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' }) + const downloadElement = document.createElement('a') // 鏂板缓涓�涓狣OM鑺傜偣 + const href = window.URL.createObjectURL(blob) // 鍒涘缓涓嬭浇鐨勯摼鎺� + downloadElement.href = href + downloadElement.download = fileName // 涓嬭浇鍚庢枃浠跺悕 + document.body.appendChild(downloadElement) // 灏嗘柊澧炵殑鑺傜偣鎸傝浇鍒伴〉闈笂 + downloadElement.click() // 鐐瑰嚮涓嬭浇 + document.body.removeChild(downloadElement) // 涓嬭浇瀹屾垚绉婚櫎鍏冪礌 + window.URL.revokeObjectURL(href) + }, // 鍒犻櫎 deleteHandle(row) { this.$confirm('鏄惁纭鍒犻櫎璇ユ暟鎹細' + row.code , '鎻愮ず', { -- Gitblit v1.9.3