From cd6e23073fcda76f9852e883aacf1315ee4b9a67 Mon Sep 17 00:00:00 2001 From: value <z1292839451@163.com> Date: 星期四, 31 八月 2023 11:46:06 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- src/views/experiment/checkTheReport/index.vue | 215 +++++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 181 insertions(+), 34 deletions(-) diff --git a/src/views/experiment/checkTheReport/index.vue b/src/views/experiment/checkTheReport/index.vue index 4a58f59..253340f 100644 --- a/src/views/experiment/checkTheReport/index.vue +++ b/src/views/experiment/checkTheReport/index.vue @@ -1,34 +1,36 @@ <template> <div class="content-main"> <div class="top-bar"> - <el-form ref="form" :inline="true"> - <el-form-item class="sermargin"> + <el-form ref="form" :inline="true" :model="searchData" label-position="left"> + <el-form-item label="鏍峰搧缂栧彿:"> <el-input - v-model="input" + v-model="searchData.sample_code" class="input-form" - placeholder="璇风洿鎺ヨ緭鍏ユ牱寮忕紪鍙�/鎶ュ憡鍗曞彿/鏍峰搧缂栧彿/杩涜鎼滅储鎴栦笅鎷夐�夋嫨杩涜缁勫悎鏌ヨ" + placeholder="璇疯緭鍏ユ牱鍝佺紪鍙�" @keyup.enter.native="getData" + /> + </el-form-item> + <el-form-item label="鎶ュ憡鍗曞彿:"> + <el-input + v-model="searchData.reportCode" + class="input-form" + placeholder="璇疯緭鍏ユ姤鍛婂崟鍙�" + /> + </el-form-item> + <el-form-item label="鐢宠鍗曞彿:"> + <el-input + v-model="searchData.application_code" + class="input-form" + placeholder="璇疯緭鍏ョ敵璇峰崟鍙�" /> </el-form-item> <el-form-item> <el-button type="primary" @click="getData()">鏌ヨ</el-button> <el-button type="primary" plain @click="resetData()">閲嶇疆</el-button> </el-form-item> - <el-dropdown> - <span class="el-dropdown-link"> - 楂樼骇鎼滅储<i class="el-icon-arrow-down el-icon--right"></i> - </span> - <el-dropdown-menu slot="dropdown"> - <el-dropdown-item>楂樼骇鎼滅储</el-dropdown-item> - </el-dropdown-menu> - </el-dropdown> </el-form> <el-form> - <el-button - class="rightBtn" - type="primary" - icon="el-icon-document" - @click="exportData" + <el-button @click="exportToPDF" class="rightBtn" type="primary" icon="el-icon-document" >瀵煎嚭鎶ュ憡</el-button > </el-form> @@ -40,7 +42,8 @@ <el-radio-button>鍏ㄩ儴</el-radio-button> <el-radio-button label="0">寰呮彁浜�</el-radio-button> <el-radio-button label="1">寰呭鏍�</el-radio-button> - <el-radio-button label="2">宸插鏍�</el-radio-button> + <el-radio-button label="2">寰呯瀛�</el-radio-button> + <el-radio-button label="3">宸插畬鎴�</el-radio-button> </el-radio-group> <el-checkbox v-model="checked" style="margin-left: 20px" @@ -48,6 +51,19 @@ > </div> </div> + <el-dialog + top="10vh" + title="鎶ュ憡棰勮" + :visible.sync="dialogVisible" + width="60%"> + <span slot="footer" class="dialog-footer"> + <el-button type="primary" @click="printFun()">鎵撳嵃</el-button> + </span> + <div class="printStyle"> + <Preview id="printRaw" :reportData="reportData" v-if="reportType===0"></Preview> + <TestReport ref="testreport" id="printFinished" :reportData="reportData" v-else></TestReport> + </div> + </el-dialog> <div class="table-box"> <el-table ref="reportTable" @@ -61,6 +77,7 @@ textAlign: 'center', }" :data="reportTable" + @selection-change="handleSelectionChange" style="width: 100%" > <el-table-column type="selection" label="" min-width="5%" /> @@ -70,23 +87,41 @@ label="鏍峰搧缂栧彿" sortable min-width="10%" - /> + > + <template slot-scope="scope"> + <span style="color: #409eff;"> + {{ scope.row.materialCode }} + </span> + </template></el-table-column + > <el-table-column prop="reportCode" label="鎶ュ憡鍗曞彿" sortable min-width="10%" - /> + > + <template slot-scope="scope"> + <span style="color: #409eff;"> + {{ scope.row.reportCode }} + </span> + </template></el-table-column + > <el-table-column prop="inspectionCode" label="鐢宠鍗曞彿" sortable min-width="10%" - /> + > + <template slot-scope="scope"> + <span style="color: #409eff;"> + {{ scope.row.inspectionCode }} + </span> + </template></el-table-column + > <el-table-column prop="approver" label="瀹℃壒浜�" min-width="8%"> <template slot-scope="scope"> <span> - <el-tag type="info" icon="el-icon-user"> + <el-tag v-if="scope.row.approver!=null && scope.row.approver!=''" type="info" icon="el-icon-user"> <i class="el-icon-user">{{ scope.row.approver }}</i> </el-tag> </span> @@ -122,10 +157,9 @@ <el-button type="text" size="small" - @click="handleClick(scope.row)" - >棰勮</el-button + @click="previewFun(scope.row)" + >鏌ョ湅鎶ュ憡</el-button > - <el-button type="text" size="small">鎵撳嵃</el-button> </template> </el-table-column> </el-table> @@ -143,27 +177,124 @@ </div> </div> </div> + <Preview ref="preview" id="printRaw" :reportData="reportData" v-show="false"></Preview> + <TestReport ref="testreport" id="printFinished" :reportData="reportData" v-show="false"></TestReport> + <el-dialog + title="瀵煎嚭pdf" + :visible.sync="dialogPdfVisible" + width="30%" + :before-close="handleClose"> + <span>纭畾寮�濮嬪鍑哄悧锛�</span> + <span slot="footer" class="dialog-footer"> + <el-button @click="dialogPdfVisible = false">鍙� 娑�</el-button> + <el-button type="primary" @click="confirmExport">纭� 瀹�</el-button> + </span> + </el-dialog> </div> </template> <script> -import { selectAllReport } from "@/api/experiment/checkTheReport"; +import { selectAllReport,getReportData } from "@/api/experiment/checkTheReport"; +import Preview from "@/components/experiment/checkTheReport/index.vue"; +import TestReport from "@/components/experiment/template_testReport/index.vue" +import PrintJS from 'print-js' +import html2pdf from 'html2pdf.js' + export default { data() { return { - input: "", + reportData: [], + reportType: 0, + searchData:{ + sample_code:'', + reportCode:'', + application_code: '' + }, checkStatus: undefined, - reportTable: [], + reportTable: [ + { + materialCode:'SN23-0517001', + reportCode: 'SN23-0517001', + inspectionCode: 'SN23-0517001', + approver:'榛勫皬鏄�', + status: '', + conclusion: 1, + name: '榛勫皬鏄�' + }, + { + materialCode:'SN23-0517001', + reportCode: 'SN23-0517001', + inspectionCode: 'SN23-0517001', + approver:'榛勫皬鏄�', + status: '', + conclusion: 1, + name: '榛勫皬鏄�' + } + ], page: 1, total: 0, pageSize: 10, checked: true, + dialogVisible: false, + dialogPdfVisible: false, + selectedRows: [] }; }, created() { - this.getData(); + // this.getData(); + }, + mounted(){ + }, + components:{ + Preview, + TestReport }, methods: { + async queryReportByRCode(code){ + const resp = await getReportData({code:code}); + this.reportData = resp.data; + this.dialogVisible = true; + console.log(this.reportData); + }, + //鏌ョ湅鎶ュ憡鎸夐挳 + previewFun(row){ + console.log(row) + this.reportType = row.type; + this.queryReportByRCode(row.reportCode); + }, + handleSelectionChange(selection){ + this.selectedRows = selection; + }, + // 鎵归噺瀵煎嚭鎶ュ憡 + exportToPDF() { + this.dialogPdfVisible = true; + }, + // 纭瀵煎嚭妯℃�佹 + confirmExport(){ + this.selectedRows.forEach(async row => { + const element = document.getElementById('printFinished'); + console.log(element) + // 璁剧疆TestReport缁勪欢鐨剅eportData灞炴�т负褰撳墠琛岀殑鎶ュ憡鏁版嵁 + const resp = await getReportData({code:row.reportCode}); + this.$nextTick(() => { + this.$refs.testreport.reportData = resp.data; + html2pdf().from(element).save(`exported_${row.reportCode}.pdf`); + }); + }); + this.dialogPdfVisible = false; + this.selectedRows = []; + }, + //鎵撳嵃鎸夐挳 + printFun(){ + this.dialogVisible = false; + PrintJS({ + printable: this.reportType===0 ? "printRaw" : "printFinished", + type: "html", + // header: "鍘熸潗鏂欐娴嬫姤鍛�", + targetStyles: ["*"], + ignoreElements: ["no-ignore"], + }); + }, // 鐘舵�佹寜閽� handleRadioChange() { this.getData(); @@ -182,7 +313,11 @@ }, // 閲嶇疆鎸夐挳 resetData() { - this.input = undefined; + this.searchData={ + sample_code:'', + reportCode:'', + application_code: '' + }, this.page = 1; this.pageSize = 10; this.checkStatus = undefined; @@ -193,11 +328,12 @@ const params = { page: this.page, pageSize: this.pageSize, - name: this.input ? this.input : undefined, + name: this.searchData.sample_code ? this.searchData.sample_code : undefined, status: this.checkStatus ? this.checkStatus : undefined, }; const { data } = await selectAllReport(params); this.reportTable = data.row; + console.log(data.row); this.total = data.total; }, }, @@ -212,17 +348,20 @@ justify-content: space-between; padding: 5px 24px 0px 24px; .input-form { - width: 700px; + width: 250px; + margin-right: 30px; } .el-dropdown-link { cursor: pointer; - color: #409EFF; + color: #409eff; } .el-icon-arrow-down { font-size: 12px; } } .library-table { + height: 80vh; + overflow: scroll; background-color: #fff; flex: 1; margin: 0px -15px; @@ -250,6 +389,14 @@ margin: 10px 0; } } - + .printStyle{ + overflow: scroll; + height:500px; + .el-button{ + position: absolute; + top: 10vh; + left: 90%; + } + } } </style> -- Gitblit v1.9.3