From a892616db370b2185bc546a11c873df1137cc7e0 Mon Sep 17 00:00:00 2001 From: zhaowei <zhaowei> Date: 星期一, 01 九月 2025 09:44:01 +0800 Subject: [PATCH] 1、设备事故登记表以及三不放过原则分析报表导出及批量打印功能 2、调整首页看板及图表样式 --- src/views/eam/repair/EamReportThreeNoSpareList.vue | 416 +++++++++++++++++++++++++++++++++++++++------------------- 1 files changed, 278 insertions(+), 138 deletions(-) diff --git a/src/views/eam/repair/EamReportThreeNoSpareList.vue b/src/views/eam/repair/EamReportThreeNoSpareList.vue index f6427f1..cdea0ba 100644 --- a/src/views/eam/repair/EamReportThreeNoSpareList.vue +++ b/src/views/eam/repair/EamReportThreeNoSpareList.vue @@ -5,33 +5,33 @@ <div class="table-page-search-wrapper"> <a-form layout="inline" @keyup.enter.native="searchQuery"> <a-row :gutter="24"> - - <a-col :xl="6" :lg="7" :md="8" :sm="24"> - <a-form-item label="鍒犻櫎鏍囪"> - <a-input placeholder="璇疯緭鍏ュ垹闄ゆ爣璁�" v-model="queryParam.delFlag"></a-input> + <a-col :xl="6" :lg="7" :md="8" :sm="12"> + <a-form-item label="缁熶竴缂栫爜"> + <lx-search-equipment-select placeholder="璇疯緭鍏ョ粺涓�缂栫爜鎴栧悕绉版悳绱�" v-model="queryParam.equipmentId"/> </a-form-item> </a-col> <a-col :xl="6" :lg="7" :md="8" :sm="24"> - <a-form-item label="鍘熷洜鍒嗘瀽"> - <a-input placeholder="璇疯緭鍏ュ師鍥犲垎鏋�" v-model="queryParam.causeAnalysis"></a-input> + <a-form-item label="鐘舵��"> + <j-dict-select-tag dict-code="report_three_no_spare_submit_status" placeholder="璇烽�夋嫨鐘舵��" + v-model="queryParam.submitStatus"/> </a-form-item> </a-col> - <template v-if="toggleSearchStatus"> - <a-col :xl="6" :lg="7" :md="8" :sm="24"> - <a-form-item label="鍩硅鏁欒偛;鏄� 鍚�"> - <a-input placeholder="璇疯緭鍏ュ煿璁暀鑲�;鏄� 鍚�" v-model="queryParam.isTrainingEducation"></a-input> - </a-form-item> - </a-col> - <a-col :xl="6" :lg="7" :md="8" :sm="24"> - <a-form-item label="鍩硅褰㈠紡"> - <a-input placeholder="璇疯緭鍏ュ煿璁舰寮�" v-model="queryParam.trainingFormat"></a-input> - </a-form-item> - </a-col> - <a-col :xl="6" :lg="7" :md="8" :sm="24"> - <a-form-item label="鍩硅鍐呭"> - <a-input placeholder="璇疯緭鍏ュ煿璁唴瀹�" v-model="queryParam.trainingContent"></a-input> - </a-form-item> - </a-col> + <template v-if="toggleSearchStatus"> + <a-col :xl="6" :lg="7" :md="8" :sm="24"> + <a-form-item label="鍘熷洜鍒嗘瀽"> + <a-input placeholder="璇疯緭鍏ュ師鍥犲垎鏋�" v-model="queryParam.causeAnalysis"></a-input> + </a-form-item> + </a-col> + <a-col :xl="6" :lg="7" :md="8" :sm="24"> + <a-form-item label="鍩硅褰㈠紡"> + <a-input placeholder="璇疯緭鍏ュ煿璁舰寮�" v-model="queryParam.trainingFormat"></a-input> + </a-form-item> + </a-col> + <a-col :xl="6" :lg="7" :md="8" :sm="24"> + <a-form-item label="鍩硅鍐呭"> + <a-input placeholder="璇疯緭鍏ュ煿璁唴瀹�" v-model="queryParam.trainingContent"></a-input> + </a-form-item> + </a-col> </template> <a-col :xl="6" :lg="7" :md="8" :sm="24"> <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons"> @@ -50,53 +50,58 @@ <!-- 鎿嶄綔鎸夐挳鍖哄煙 --> <div class="table-operator"> - <a-button @click="handleAdd" type="primary" icon="plus">鏂板</a-button> - <a-button type="primary" icon="download" @click="handleExportXls('鈥滀笁涓嶆斁杩囩殑鍘熷垯鈥濆垎鏋愯〃')">瀵煎嚭</a-button> - <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel"> - <a-button type="primary" icon="import">瀵煎叆</a-button> - </a-upload> - <a-dropdown v-if="selectedRowKeys.length > 0"> - <a-menu slot="overlay"> - <a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>鍒犻櫎</a-menu-item> - </a-menu> - <a-button style="margin-left: 8px"> 鎵归噺鎿嶄綔 <a-icon type="down" /></a-button> - </a-dropdown> + <a-button @click="handleBatchPrint" type="primary" icon="monitor" :disabled="selectedRowKeys.length===0">鎵归噺棰勮 + </a-button> </div> <!-- table鍖哄煙-begin --> <div> - <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;"> - <i class="anticon anticon-info-circle ant-alert-icon"></i> 宸查�夋嫨 <a style="font-weight: 600">{{ selectedRowKeys.length }}</a>椤� - <a style="margin-left: 24px" @click="onClearSelected">娓呯┖</a> - </div> - - <a-table - ref="table" - size="middle" - bordered - rowKey="id" - :columns="columns" - :dataSource="dataSource" - :pagination="ipagination" - :loading="loading" - class="j-table-force-nowrap" - :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}" - @change="handleTableChange"> - + <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"> <span slot="action" slot-scope="text, record"> - <a @click="handleEdit(record)">缂栬緫</a> + <template> + <a v-if="record.submitStatus=='PENDING_SUBMIT'||record.submitStatus=='REJECTED'" + @click="handleFillIn(record)">濉姤</a> + <a-divider v-if="record.submitStatus=='PENDING_SUBMIT'||record.submitStatus=='REJECTED'" type="vertical"/> + <a-popconfirm v-if="record.submitStatus=='PENDING_SUBMIT'||record.submitStatus=='REJECTED'" title="纭畾鎻愪氦鍚�?" + @confirm="() => handleSubmit(record.id)"> + <a>鎻愪氦</a> + </a-popconfirm> + </template> + <a-divider v-if="record.submitStatus=='PENDING_SUBMIT'||record.submitStatus=='REJECTED'" type="vertical"/> + <a @click="handleDetail(record)">璇︽儏</a> + </span> - <a-divider type="vertical" /> - <a-dropdown> - <a class="ant-dropdown-link">鏇村 <a-icon type="down" /></a> - <a-menu slot="overlay"> - <a-menu-item> - <a-popconfirm title="纭畾鍒犻櫎鍚�?" @confirm="() => handleDelete(record.id)"> - <a>鍒犻櫎</a> - </a-popconfirm> - </a-menu-item> - </a-menu> - </a-dropdown> + + <!--瀛楃涓茶秴闀挎埅鍙栫渷鐣ュ彿鏄剧ず--> + <span slot="accidentPhenomenon" slot-scope="text"> + <j-ellipsis :value="text" :length="8"/> + </span> + <!--瀛楃涓茶秴闀挎埅鍙栫渷鐣ュ彿鏄剧ず--> + <span slot="measure" slot-scope="text"> + <j-ellipsis :value="text" :length="8"/> + </span> + <!--瀛楃涓茶秴闀挎埅鍙栫渷鐣ュ彿鏄剧ず--> + <span slot="causingResults" slot-scope="text"> + <j-ellipsis :value="text" :length="8"/> + </span> + <!--瀛楃涓茶秴闀挎埅鍙栫渷鐣ュ彿鏄剧ず--> + <span slot="causeAnalysis" slot-scope="text"> + <j-ellipsis :value="text" :length="8"/> + </span> + <!--瀛楃涓茶秴闀挎埅鍙栫渷鐣ュ彿鏄剧ず--> + <span slot="preventionMeasures" slot-scope="text"> + <j-ellipsis :value="text" :length="8"/> + </span> + <!--瀛楃涓茶秴闀挎埅鍙栫渷鐣ュ彿鏄剧ず--> + <span slot="trainingFormat" slot-scope="text"> + <j-ellipsis :value="text" :length="8"/> + </span> + <!--瀛楃涓茶秴闀挎埅鍙栫渷鐣ュ彿鏄剧ず--> + <span slot="trainingContent" slot-scope="text"> + <j-ellipsis :value="text" :length="8"/> </span> </a-table> @@ -104,7 +109,13 @@ <!-- table鍖哄煙-end --> <!-- 琛ㄥ崟鍖哄煙 --> - <eamReportThreeNoSpare-modal ref="modalForm" @ok="modalFormOk"></eamReportThreeNoSpare-modal> + <eamReportThreeNoSpare-modal ref="modalForm" @ok="modalFormOk"/> + + <!--瀹℃壒绐楀彛--> + <report-threeNo-spare-approval-modal ref="reportThreeNoSpareApprovalModal" :selectShenpiData="selectedRowData"/> + + <!--鎵归噺鎵撳嵃寮圭獥--> + <eam-three-no-spare-analysis-batch-print-modal ref="batchPrintModal"/> </a-card> </template> @@ -112,96 +123,225 @@ import '@/assets/less/TableExpand.less' import EamReportThreeNoSpareModal from './modules/EamReportThreeNoSpareModal' import { JeecgListMixin } from '@/mixins/JeecgListMixin' + import { getAction } from '@api/manage' + import LxSearchEquipmentSelect from '@views/eam/equipment/modules/LxSearchEquipmentSelect.vue' + import ReportThreeNoSpareApprovalModal + from '../../flowable/workflow/repairOrder/ReportThreeNoSpareApprovalModal' + import EamThreeNoSpareAnalysisBatchPrintModal from './modules/EamThreeNoSpareAnalysisBatchPrintModal' export default { - name: "EamReportThreeNoSpareList", - mixins:[JeecgListMixin], + name: 'EamReportThreeNoSpareList', + mixins: [JeecgListMixin], components: { + EamThreeNoSpareAnalysisBatchPrintModal, + ReportThreeNoSpareApprovalModal, + LxSearchEquipmentSelect, EamReportThreeNoSpareModal }, - data () { + props: { + isDisplayOperation: { + type: Boolean, + default: true + }, + propsQueryParam: { + type: Object + } + }, + data() { return { description: '鈥滀笁涓嶆斁杩囩殑鍘熷垯鈥濆垎鏋愯〃绠$悊椤甸潰', + disableMixinCreated: true, // 琛ㄥご columns: [ { title: '#', dataIndex: '', - key:'rowIndex', - width:60, - align:"center", - customRender:function (t,r,index) { - return parseInt(index)+1; - } - }, - { - title: '鍒犻櫎鏍囪', - align:"center", - dataIndex: 'delFlag' - }, - { - title: '鍘熷洜鍒嗘瀽', - align:"center", - dataIndex: 'causeAnalysis' - }, - { - title: '鍩硅鏁欒偛;鏄� 鍚�', - align:"center", - dataIndex: 'isTrainingEducation' - }, - { - title: '鍩硅褰㈠紡', - align:"center", - dataIndex: 'trainingFormat' - }, - { - title: '鍩硅鍐呭', - align:"center", - dataIndex: 'trainingContent' - }, - { - title: '鍩硅浜�', - align:"center", - dataIndex: 'trainingUser' - }, - { - title: '鍩硅鏃堕棿', - align:"center", - dataIndex: 'trainingUserTime' - }, - { - title: '鎶ヤ慨ID', - align:"center", - dataIndex: 'reportId' - }, - { - title: '璁惧ID', - align:"center", - dataIndex: 'equipmentId' - }, + key: 'rowIndex', + width: 60, + align: 'center', + customRender: function(t, r, index) { + return parseInt(index) + 1 + }, + fixed: 'left' + }, { - title: '鎿嶄綔', - dataIndex: 'action', - align:"center", - scopedSlots: { customRender: 'action' }, + title: '缁熶竴缂栫爜', + align: 'center', + dataIndex: 'equipmentCode', + fixed: 'left', + scopedSlots: { customRender: 'equipmentCode' } + }, + { + title: '璁惧鍚嶇О', + align: 'center', + dataIndex: 'equipmentName', + fixed: 'left' + }, + { + title: '璁惧鍨嬪彿', + align: 'center', + dataIndex: 'equipmentModel', + fixed: 'left' + }, + { + title: '鐘舵��', + align: 'center', + dataIndex: 'submitStatus_dictText', + fixed: 'left' + }, + { + title: '浜嬫晠鐜拌薄', + align: 'center', + dataIndex: 'accidentPhenomenon', + scopedSlots: { customRender: 'accidentPhenomenon' } + }, + { + title: '閲囧彇鎺柦', + align: 'center', + dataIndex: 'measure', + scopedSlots: { customRender: 'measure' } + }, + { + title: '閫犳垚缁撴灉', + align: 'center', + dataIndex: 'causingResults', + scopedSlots: { customRender: 'causingResults' } + }, + { + title: '鍘熷洜鍒嗘瀽', + align: 'center', + dataIndex: 'causeAnalysis', + scopedSlots: { customRender: 'causeAnalysis' } + }, + { + title: '棰勯槻鎺柦', + align: 'center', + dataIndex: 'preventionMeasures', + scopedSlots: { customRender: 'preventionMeasures' } + }, + { + title: '鍩硅鏁欒偛', + align: 'center', + dataIndex: 'isTrainingEducation_dictText' + }, + { + title: '鍩硅褰㈠紡', + align: 'center', + dataIndex: 'trainingFormat', + scopedSlots: { customRender: 'trainingFormat' } + }, + { + title: '鍩硅鍐呭', + align: 'center', + dataIndex: 'trainingContent', + scopedSlots: { customRender: 'trainingContent' } + }, + { + title: '鍩硅浜�', + align: 'center', + dataIndex: 'trainingUser_dictText' + }, + { + title: '鍩硅鏃堕棿', + align: 'center', + dataIndex: 'trainingUserTime' + }, + { + title: '鍗曚綅棰嗗', + align: 'center', + dataIndex: 'unitLeader_dictText' + }, + { + title: '棰嗗鎰忚', + align: 'center', + dataIndex: 'leaderOpinion' + }, + { + title: '棰嗗纭鏃堕棿', + align: 'center', + dataIndex: 'leaderConfirmTime' + }, + { + title: 'HF缂栫爜', + align: 'center', + dataIndex: 'hfCode' } ], - url: { - list: "/eam/eamReportThreeNoSpare/list", - delete: "/eam/eamReportThreeNoSpare/delete", - deleteBatch: "/eam/eamReportThreeNoSpare/deleteBatch", - exportXlsUrl: "eam/eamReportThreeNoSpare/exportXls", - importExcelUrl: "eam/eamReportThreeNoSpare/importExcel", - }, - } - }, - computed: { - importExcelUrl: function(){ - return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`; - } - }, + selectedRowData: {}, + url: { + list: '/eam/eamReportThreeNoSpare/list', + delete: '/eam/eamReportThreeNoSpare/delete', + deleteBatch: '/eam/eamReportThreeNoSpare/deleteBatch', + exportXlsUrl: 'eam/eamReportThreeNoSpare/exportXls', + importExcelUrl: 'eam/eamReportThreeNoSpare/importExcel', + submit: 'eam/eamReportThreeNoSpare/submit' + } + } + }, + created() { + if (!this.isDisplayOperation) this.queryParam = Object.assign({}, this.propsQueryParam) + else { + const operationColumn = { + title: '鎿嶄綔', + dataIndex: 'action', + align: 'center', + scopedSlots: { customRender: 'action' }, + width: 200, + fixed: 'right' + } + this.columns = [...this.columns, operationColumn] + } + this.loadData(1) + }, methods: { - + // 鎵归噺鎵撳嵃 + handleBatchPrint() { + this.$refs.batchPrintModal.handlePreview(this.selectedRowKeys.join()) + }, + + /** + * 鐐瑰嚮濉姤鏃惰Е鍙� + * @param record + */ + handleFillIn(record) { + this.$refs.modalForm.title = '濉姤' + this.$refs.modalForm.handleFillIn(record) + }, + + /** + * 鐐瑰嚮鎻愪氦鏃惰Е鍙� + * @param id + */ + handleSubmit(id) { + this.loading = true + getAction(this.url.submit, { id }) + .then(res => { + if (res.success) { + this.$notification.success({ + message: '娑堟伅', + description: res.message + }) + this.loadData() + } else { + this.$notification.warning({ + message: '娑堟伅', + description: res.message + }) + this.loading = false + } + }) + }, + /** + * 鐐瑰嚮璇︽儏瑙﹀彂 + * @param record 琛ㄦ牸琛屼俊鎭� + */ + handleDetail(record) { + this.selectedRowData = Object.assign({}, record) + this.$refs.reportThreeNoSpareApprovalModal.visible = true + this.$refs.reportThreeNoSpareApprovalModal.title = '璇︽儏' + this.$refs.reportThreeNoSpareApprovalModal.disableSubmit = true + this.$refs.reportThreeNoSpareApprovalModal.handleDetail(record) + } } } </script> -- Gitblit v1.9.3