From fdd08d56e9d84d2f9578e82c44578d099b29572f Mon Sep 17 00:00:00 2001 From: zhaowei <zhaowei> Date: 星期五, 12 九月 2025 17:38:24 +0800 Subject: [PATCH] 三保变更批量导出及打印 --- src/views/eam/maintenance/modules/EamThirdMaintenanceChangeBatchPrintModal.vue | 215 +++++++++++++++++++++++++++++++++++++++++++ src/views/eam/repair/modules/EamProductHazardsBatchPrintModal.vue | 12 -- src/views/eam/maintenance/EamThirdMaintenanceChangeList.vue | 19 +++ 3 files changed, 234 insertions(+), 12 deletions(-) diff --git a/src/views/eam/maintenance/EamThirdMaintenanceChangeList.vue b/src/views/eam/maintenance/EamThirdMaintenanceChangeList.vue index 5865d08..ea6a42c 100644 --- a/src/views/eam/maintenance/EamThirdMaintenanceChangeList.vue +++ b/src/views/eam/maintenance/EamThirdMaintenanceChangeList.vue @@ -36,9 +36,16 @@ </a-form> </div> + <!-- 鎿嶄綔鎸夐挳鍖哄煙 --> + <div class="table-operator"> + <a-button @click="handleBatchPrint" type="primary" icon="monitor" :disabled="selectedRowKeys.length===0">鎵归噺棰勮 + </a-button> + </div> + <!-- table鍖哄煙-begin --> <a-table ref="table" size="middle" bordered rowKey="id" :columns="columns" :dataSource="dataSource" :pagination="ipagination" :loading="loading" :scroll="{x:'max-content'}" + :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}" @change="handleTableChange"> <!--浣跨敤閮ㄩ棬--> @@ -46,7 +53,7 @@ {{[record.zxfactoryOrgCode_dictText].filter(item=>item).join('/')}} </template> - <span slot="action" slot-scope="text, record"> + <span slot="action" slot-scope="text, record"> <template v-if="record.changeStatus=='WAIT_SUBMIT'"> <a @click="handleEdit(record)">缂栬緫</a> @@ -75,6 +82,9 @@ <!--瀹℃壒绐楀彛--> <third-maintenance-order-change-approval-modal ref="thirdMaintenanceOrderChangeApprovalModal" :selectShenpiData="selectedRowData"/> + + <!--鎵归噺鎵撳嵃绐楀彛--> + <eam-third-maintenance-change-batch-print-modal ref="batchPrintModal"/> </a-card> </template> @@ -85,11 +95,13 @@ import EamThirdMaintenanceChangeModal from './modules/EamThirdMaintenanceChangeModal.vue' import ThirdMaintenanceOrderChangeApprovalModal from '../../flowable/workflow/thirdMaintenance/ThirdMaintenanceOrderChangeApprovalModal' + import EamThirdMaintenanceChangeBatchPrintModal from './modules/EamThirdMaintenanceChangeBatchPrintModal' export default { name: 'EamThirdMaintenanceChangeList', mixins: [JeecgListMixin], components: { + EamThirdMaintenanceChangeBatchPrintModal, ThirdMaintenanceOrderChangeApprovalModal, EamThirdMaintenanceChangeModal, LxSearchEquipmentSelect @@ -323,6 +335,11 @@ this.queryParam.dateEnd = dateStringArray[1] }, + // 鎵归噺鎵撳嵃 + handleBatchPrint() { + this.$refs.batchPrintModal.handlePreview(this.selectedRowKeys.join()) + }, + handlePrint(record) { let href = `${window._CONFIG['domianURL']}/jmreport/view/1094880052100399104?id=` + record.id // + `&orderId=` + record.id; //缃戠珯閾炬帴 diff --git a/src/views/eam/maintenance/modules/EamThirdMaintenanceChangeBatchPrintModal.vue b/src/views/eam/maintenance/modules/EamThirdMaintenanceChangeBatchPrintModal.vue new file mode 100644 index 0000000..62c446a --- /dev/null +++ b/src/views/eam/maintenance/modules/EamThirdMaintenanceChangeBatchPrintModal.vue @@ -0,0 +1,215 @@ +<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="12" style="border: none"> + <div style="text-align: right">{{dataItem.hfCode}}</div> + </td> + </tr> + </thead> + + <tbody> + <tr style="height: 48px;"> + <th colspan="12" style="border: none;font-size: 20px">鍔犲伐璁惧淇濆吇璁″垝鍙樻洿鐢宠鍗�</th> + </tr> + + <tr> + <td colspan="6" style="border: none;padding-left: 20px"> + <div style="text-align: left">鐢宠鍗曚綅锛歿{dataItem.zxfactoryOrgCode_dictText}}</div> + </td> + <td colspan="6" style="border: none;padding-right: 20px"> + <div style="text-align: right"> + {{dataItem.applyDate.split('-')[0]}} 骞� {{dataItem.applyDate.split('-')[1]}} 鏈� + {{dataItem.applyDate.split('-')[2]}} 鏃� + </div> + </td> + </tr> + + <tr style="height: 40px;"> + <td colspan="2">璁惧鍚嶇О</td> + <td colspan="2">{{dataItem.equipmentName}}</td> + <td colspan="2">鍨嬪彿</td> + <td colspan="2">{{dataItem.equipmentModel}}</td> + <td colspan="2">缁熶竴缂栧彿</td> + <td colspan="2">{{dataItem.equipmentCode}}</td> + </tr> + + <tr style="height: 40px;"> + <td colspan="2">鍘熻鍒掓椂闂�</td> + <td colspan="2">{{dataItem.oldPlanDate}}</td> + <td colspan="2">鐢宠寤朵繚鏃堕棿</td> + <td colspan="2">{{dataItem.deferredMaintenanceDate}}</td> + <td colspan="2">璁惧绠$悊涓荤</td> + <td colspan="2">{{dataItem.applicant_dictText}}</td> + </tr> + + <tr> + <td colspan="2" style="padding: 5px">寤朵繚锛堟垨鍙樻洿锛夊師鍥�</td> + <td colspan="10" style="text-align: left;padding: 5px"> + <div style="text-align: left" v-html="dataItem.equipmentManagerComment"></div> + <br/><br/><br/><br/> + <div style="text-align: right;padding-right: 20px"> + 涓荤瀹ょ骇棰嗗绛惧瓧锛歿{dataItem.equipmentManagerSignature_dictText}} + </div> + </td> + </tr> + + <tr> + <td colspan="2" style="padding: 5px">纭閮ㄩ棬</td> + <td colspan="10" style="padding: 5px"> + <div style="text-align: left" v-html="dataItem.departManagerComment"></div> + <br/><br/><br/><br/> + <div style="text-align: right;padding-right: 20px"> + 涓荤瀹ょ骇棰嗗绛惧瓧锛歿{dataItem.departManagerSignature_dictText}} + </div> + </td> + </tr> + + <tr> + <td colspan="2" style="padding: 5px">鐢熶骇淇濋殰閮�</td> + <td colspan="10" style="padding: 5px"> + <div style="text-align: left" v-html="dataItem.productionSupportComment"></div> + <br/><br/><br/><br/> + <div style="text-align: right;padding-right: 20px"> + 涓荤瀹ょ骇棰嗗绛惧瓧锛歿{dataItem.productionSupportSignature_dictText}} + </div> + </td> + </tr> + + <tr> + <td colspan="12" style="padding: 5px 40px;border: none;"> + <div style="text-align: left"> + 澶囨敞锛氱‘璁ら儴闂ㄤ负鐢熶骇鎸囨尌閮ㄣ�佽澶囩淮淇儴闂ㄣ�侀」鐩疄鏂介儴闂ㄣ�傚叾涓洜鐢熶骇浠诲姟绱ф�ユ棤娉曞仠鏈虹殑鎯呭喌椤荤粡鐢熶骇鎸囨尌閮ㄧ瀛� + </div> + </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: 'EamThirdMaintenanceChangeBatchPrintModal', + data() { + return { + visible: false, + spinning: false, + dataSource: [], + url: { + list: '/eam/eamThirdMaintenanceChange/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 + }) + }, + + // 瀵煎嚭鍒癊xcel + handleImport() { + document.querySelectorAll('table.import-table').forEach(item => { + $(item).table2excel({ + exclude: '.noExl', + name: 'Excel Document Name', + filename: '鍔犲伐璁惧淇濆吇璁″垝鍙樻洿鐢宠鍗�-' + item.id, + exclude_img: true, + fileext: '.xls', + exclude_links: true, + exclude_inputs: false + }) + }) + + }, + + handleCancel() { + this.close() + }, + + close() { + this.$emit('close') + this.visible = false + if (this.$refs.form) 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 { + transform: rotate(360deg); + writing-mode: vertical-lr; + letter-spacing: 5px; + padding: 10px 0; + } + } +</style> \ No newline at end of file diff --git a/src/views/eam/repair/modules/EamProductHazardsBatchPrintModal.vue b/src/views/eam/repair/modules/EamProductHazardsBatchPrintModal.vue index 5c2ec46..1bc3b07 100644 --- a/src/views/eam/repair/modules/EamProductHazardsBatchPrintModal.vue +++ b/src/views/eam/repair/modules/EamProductHazardsBatchPrintModal.vue @@ -108,17 +108,7 @@ return { visible: false, spinning: false, - dataSource: [ - { - hfCode: 'HF-16548ASDSADA', - equipmentName: '鎵嬫墦鍗佺偣澶�', - equipmentModel: '6500P', - equipmentCode: '2125400', - factoryName: '鐕冩満鍘�', - maintenanceDateFormatted: '2025骞�5鏈�20鏃�' - - } - ], + dataSource: [], url: { list: '/eam/eamReportProductHazards/batchExport' } -- Gitblit v1.9.3