From 5d9726ee8fbf5c6648aa6e822b5509b51cfd758c Mon Sep 17 00:00:00 2001 From: zhaowei <zhaowei> Date: 星期三, 20 八月 2025 17:43:00 +0800 Subject: [PATCH] 点检工单新增批量打印以及导出功能 --- src/views/eam/maintenance/modules/EamSecondMaintenanceOrderBatchPrintModal.vue | 213 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 213 insertions(+), 0 deletions(-) diff --git a/src/views/eam/maintenance/modules/EamSecondMaintenanceOrderBatchPrintModal.vue b/src/views/eam/maintenance/modules/EamSecondMaintenanceOrderBatchPrintModal.vue new file mode 100644 index 0000000..7f531ec --- /dev/null +++ b/src/views/eam/maintenance/modules/EamSecondMaintenanceOrderBatchPrintModal.vue @@ -0,0 +1,213 @@ +<template> + <j-modal title="棰勮锛堜粎鍙瑙堝凡瀹屾垚宸ュ崟锛�" :width="948" :visible="visible" switchFullscreen centered + :mask-closable="false" @cancel="handleCancel" cancelText="鍏抽棴"> + <a-spin :spinning="spinning" style="height: 100%"> + <div id="dataTable"> + <div v-for="dataItem in dataSource" class="table-container"> + <div style="page-break-before:always"></div> + + <table class="import-table" :id="dataItem.equipmentCode"> + <thead> + <tr> + <td colspan="6" style="border: none"> + <div style="text-align: right">{{dataItem.hfCode}}</div> + </td> + </tr> + </thead> + + <tbody> + <tr style="height: 48px;"> + <th colspan="6" style="border: none;font-size: 20px">鐢熶骇璁惧浜岀骇淇濆吇瀹屽伐绉讳氦鍗�</th> + </tr> + + <tr> + <td>璁惧鍚嶇О</td> + <td>{{dataItem.equipmentName}}</td> + <td>璁惧鍨嬪彿</td> + <td>{{dataItem.equipmentModel}}</td> + <td>缁熶竴缂栧彿</td> + <td>{{dataItem.equipmentCode}}</td> + </tr> + + <tr> + <td>浣跨敤鍗曚綅</td> + <td>{{dataItem.factoryName}}</td> + <td>淇濆吇鏃ユ湡</td> + <td colspan="3">{{dataItem.maintenanceDateFormatted}}</td> + </tr> + + <tr> + <td class="vertical-display" :rowspan="dataItem.maintenanceOrderDetails.length+1">缁翠慨浜哄憳淇濆吇鍐呭</td> + <td class="vertical-display">搴忓彿</td> + <td colspan="2">淇濆吇鍐呭</td> + <td>鎵ц鎯呭喌</td> + <td>鎵ц浜�</td> + </tr> + + <tr v-for="(item,index) in dataItem.maintenanceOrderDetails"> + + <td>{{item.itemCode}}</td> + <td colspan="2">{{item.itemName}}</td> + <td>{{item.maintenanceResult_dictText}}</td> + <td>{{item.createBy_dictText}}</td> + </tr> + + <tr> + <td class="vertical-display" :rowspan="dataItem.operationOrderDetails.length+1">鎿嶄綔浜哄憳淇濆吇鍐呭</td> + <td class="vertical-display">搴忓彿</td> + <td colspan="2">淇濆吇鍐呭</td> + <td>鎵ц鎯呭喌</td> + <td>鎵ц浜�</td> + </tr> + + <tr v-for="(item,index) in dataItem.operationOrderDetails"> + <td>{{item.itemCode}}</td> + <td colspan="2">{{item.itemName}}</td> + <td>{{item.maintenanceResult_dictText}}</td> + <td>{{item.createBy_dictText}}</td> + </tr> + + <tr> + <td colspan="6" style="padding: 5px"> + <div style="text-align: left">闂锛歿{dataItem.problemDescription}}</div> + <br/><br/><br/> + <div style="text-align: left">澶勭悊鎺柦鎻忚堪锛歿{dataItem.dealDescription}}</div> + <br/><br/><br/> + <div style="text-align: right">浣跨敤鍗曚綅璁惧绠$悊鍛橈細{{dataItem.manageUser_dictText}}</div> + </td> + </tr> + + <tr> + <td colspan="6" style="padding: 5px"> + <div style="text-align: left">璇ヨ澶囩粡浜岀骇淇濆吇妫�鏌ュ悗锛岃揪鍒颁繚鍏昏鑼冭姹傘��</div> + <br/><br/><br/> + <div style="text-align: right">璁惧妫�鏌ヤ汉鍛橈細{{dataItem.inspector_dictText}}</div> + </td> + </tr> + + <tr> + <td colspan="6" style="border: none"> + 濉啓璇存槑锛氭墽琛屼繚鍏诲伐浣滀腑锛屾牴鎹繚鍏诲唴瀹癸紝鍦ㄦ墽琛屾儏鍐靛搴旀爮鍒掆�溾垰鈥� + </td> + </tr> + </tbody> + </table> + </div> + </div> + </a-spin> + + <template slot="footer"> + <a-button @click="handleCancel">鍏抽棴</a-button> + <a-button type="primary" @click="handleImport">瀵煎嚭</a-button> + <a-button type="primary" v-print="'#dataTable'">鎵撳嵃</a-button> + </template> + </j-modal> +</template> + +<script> + import { getAction } from '@/api/manage' + import $ from 'jquery' + import '@/components/table2excel/table2excel' + + export default { + name: 'EamSecondMaintenanceOrderBatchPrintModal', + data() { + return { + visible: false, + spinning: false, + dataSource: [], + url: { + list: '/eam/secondMaintenanceOrder/batchExport' + } + } + }, + methods: { + /** + * 鎵归噺棰勮 + * @param ids String 涓婚〉闈㈠垪琛ㄥ嬀閫塱ds + */ + handlePreview(ids) { + this.visible = true + this.spinning = true + this.dataSource = [] + const that = this + getAction(this.url.list, { ids }) + .then(res => { + if (res.success) that.dataSource = res.result + }) + .finally(() => { + that.spinning = false + }) + }, + + handleImport() { + document.querySelectorAll('table.import-table').forEach(element => { + console.log('element', element.id) + $(element).table2excel({ + exclude: '.noExl', + name: 'Excel Document Name', + filename: '鐢熶骇璁惧浜岀骇淇濆吇瀹屽伐绉讳氦鍗�-' + element.id, + exclude_img: true, + fileext: '.xls', + exclude_links: true, + exclude_inputs: false + }) + }) + }, + + handleCancel() { + this.close() + }, + + close() { + this.$emit('close') + this.visible = false + this.$refs.form.clearValidate() + } + } + } +</script> + +<style scoped lang="less"> + /deep/ .ant-modal { + height: 90%; + overflow: hidden; + + .ant-modal-content { + height: 100%; + display: flex; + flex-direction: column; + overflow: hidden; + + ::-webkit-scrollbar { + width: 8px; + height: 8px; + } + + .ant-modal-body { + flex: 1; + overflow: auto; + } + } + } + + .table-container:not(:last-child) { + margin-bottom: 20px; + } + + table { + width: 100%; + text-align: center; + table-layout: fixed; + + td, th { + border: 1px solid #000; + } + + td.vertical-display { + writing-mode: vertical-lr; + letter-spacing: 5px; + padding: 5px 0; + } + } +</style> \ No newline at end of file -- Gitblit v1.9.3