From 2f5227a8f37b5c9be090a20253555411cfa9548c Mon Sep 17 00:00:00 2001 From: lyh <925863403@qq.com> Date: 星期一, 18 八月 2025 10:27:47 +0800 Subject: [PATCH] 维修时长 故障时长 --- src/views/eam/repair/EamReportThreeNoSpareList.vue | 378 +++++++++++++++++++++++++++++++++++------------------ 1 files changed, 250 insertions(+), 128 deletions(-) diff --git a/src/views/eam/repair/EamReportThreeNoSpareList.vue b/src/views/eam/repair/EamReportThreeNoSpareList.vue index 0c7a48a..6fd1953 100644 --- a/src/views/eam/repair/EamReportThreeNoSpareList.vue +++ b/src/views/eam/repair/EamReportThreeNoSpareList.vue @@ -1,218 +1,340 @@ <template> <a-card :bordered="false"> + <!-- 鏌ヨ鍖哄煙 --> <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="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="鐘舵��"> + <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.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"> + <a-button type="primary" @click="searchQuery" icon="search">鏌ヨ</a-button> + <a-button type="info" @click="searchReset" icon="reload" style="margin-left: 8px">閲嶇疆</a-button> + <a @click="handleToggleSearch" style="margin-left: 8px"> + {{ toggleSearchStatus ? '鏀惰捣' : '灞曞紑' }} + <a-icon :type="toggleSearchStatus ? 'up' : 'down'"/> + </a> + </span> + </a-col> + </a-row> </a-form> </div> - <!-- 鏌ヨ鍖哄煙-END --> <!-- 鎿嶄綔鎸夐挳鍖哄煙 --> <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> - <!-- 楂樼骇鏌ヨ鍖哄煙 --> - <j-super-query :fieldList="superFieldList" ref="superQueryModal" @handleSuperQuery="handleSuperQuery"></j-super-query> - <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> </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" - :scroll="{x:true}" bordered rowKey="id" :columns="columns" :dataSource="dataSource" :pagination="ipagination" :loading="loading" - :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}" - class="j-table-force-nowrap" + :scroll="{x:'max-content'}" @change="handleTableChange"> - - <template slot="htmlSlot" slot-scope="text"> - <div v-html="text"></div> - </template> - <template slot="imgSlot" slot-scope="text,record"> - <span v-if="!text" style="font-size: 12px;font-style: italic;">鏃犲浘鐗�</span> - <img v-else :src="getImgView(text)" :preview="record.id" height="25px" alt="" style="max-width:80px;font-size: 12px;font-style: italic;"/> - </template> - <template slot="fileSlot" slot-scope="text"> - <span v-if="!text" style="font-size: 12px;font-style: italic;">鏃犳枃浠�</span> - <a-button - v-else - :ghost="true" - type="primary" - icon="download" - size="small" - @click="downloadFile(text)"> - 涓嬭浇 - </a-button> - </template> - <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 @click="handleDetail(record)">璇︽儏</a> - </a-menu-item> - <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> </div> + <!-- table鍖哄煙-end --> - <eam-report-three-no-spare-modal ref="modalForm" @ok="modalFormOk"></eam-report-three-no-spare-modal> + <!-- 琛ㄥ崟鍖哄煙 --> + <eamReportThreeNoSpare-modal ref="modalForm" @ok="modalFormOk"></eamReportThreeNoSpare-modal> + + <!--瀹℃壒绐楀彛--> + <report-threeNo-spare-approval-modal ref="reportThreeNoSpareApprovalModal" + :selectShenpiData="selectedRowData"/> + </a-card> </template> <script> - import '@/assets/less/TableExpand.less' - import { mixinDevice } from '@/utils/mixin' - import { JeecgListMixin } from '@/mixins/JeecgListMixin' 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' export default { - name: 'EamReportThreeNoSpareList', - mixins:[JeecgListMixin, mixinDevice], + name: "EamReportThreeNoSpareList", + mixins:[JeecgListMixin], components: { + ReportThreeNoSpareApprovalModal, + LxSearchEquipmentSelect, EamReportThreeNoSpareModal + }, + 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; - } + key: 'rowIndex', + width: 60, + align: 'center', + customRender: function(t, r, index) { + return parseInt(index) + 1 + }, + fixed: 'left' }, { - title:'鍒犻櫎鏍囪', - align:"center", - dataIndex: 'delFlag' + title: '缁熶竴缂栫爜', + align: 'center', + dataIndex: 'equipmentCode', + fixed: 'left', + scopedSlots: { customRender: 'equipmentCode' } }, { - title:'鎶ヤ慨ID', - align:"center", - dataIndex: 'reportId' + title: '璁惧鍚嶇О', + align: 'center', + dataIndex: 'equipmentName', + fixed: 'left' }, { - title:'璁惧ID', - align:"center", - dataIndex: 'equipmentId' + title: '璁惧鍨嬪彿', + align: 'center', + dataIndex: 'equipmentModel', + fixed: 'left' }, { - title:'鍘熷洜鍒嗘瀽', - align:"center", - dataIndex: 'causeAnalysis' + title: '鐘舵��', + align: 'center', + dataIndex: 'submitStatus_dictText', }, { - title:'鍩硅鏁欒偛鏄� 鍚�', - align:"center", - dataIndex: 'isTrainingEducation' + title: '浜嬫晠鐜拌薄', + align: 'center', + dataIndex: 'accidentPhenomenon', + scopedSlots: {customRender: 'accidentPhenomenon'}, }, { - title:'鍩硅褰㈠紡', - align:"center", - dataIndex: 'trainingFormat' + title: '閲囧彇鎺柦', + align: 'center', + dataIndex: 'measure', + scopedSlots: {customRender: 'measure'}, }, { - title:'鍩硅鍐呭', + title: '閫犳垚缁撴灉', + align: 'center', + dataIndex: 'causingResults', + scopedSlots: {customRender: 'causingResults'}, + }, + { + title: '鍘熷洜鍒嗘瀽', align:"center", - dataIndex: 'trainingContent' + dataIndex: 'causeAnalysis', + scopedSlots: {customRender: 'causeAnalysis'}, }, { - title:'鍩硅浜�', - align:"center", - dataIndex: 'trainingUser' + title: '棰勯槻鎺柦', + align: 'center', + dataIndex: 'preventionMeasures', + scopedSlots: {customRender: 'preventionMeasures'}, }, { - title:'鍩硅鏃堕棿', + title: '鍩硅鏁欒偛', align:"center", - dataIndex: 'trainingUserTime', - customRender:function (text) { - return !text?"":(text.length>10?text.substr(0,10):text) - } + dataIndex: 'isTrainingEducation_dictText', }, { - title: '鎿嶄綔', - dataIndex: 'action', + title: '鍩硅褰㈠紡', align:"center", - fixed:"right", - width:147, - scopedSlots: { customRender: 'action' } - } + 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' + }, ], + selectedRowData: {}, url: { list: "/eam/eamReportThreeNoSpare/list", delete: "/eam/eamReportThreeNoSpare/delete", deleteBatch: "/eam/eamReportThreeNoSpare/deleteBatch", - exportXlsUrl: "/eam/eamReportThreeNoSpare/exportXls", + exportXlsUrl: "eam/eamReportThreeNoSpare/exportXls", importExcelUrl: "eam/eamReportThreeNoSpare/importExcel", - + submit:"eam/eamReportThreeNoSpare/submit" }, - dictOptions:{}, - superFieldList:[], - } - }, + } + }, created() { - this.getSuperFieldList(); - }, - computed: { - importExcelUrl: function(){ - return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`; - }, + 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: { - initDictConfig(){ + /** + * 鐐瑰嚮濉姤鏃惰Е鍙� + * @param record + */ + handleFillIn(record) { + this.$refs.modalForm.title = '濉姤' + this.$refs.modalForm.handleFillIn(record) }, - getSuperFieldList(){ - let fieldList=[]; - fieldList.push({type:'string',value:'delFlag',text:'鍒犻櫎鏍囪',dictCode:''}) - fieldList.push({type:'string',value:'reportId',text:'鎶ヤ慨ID',dictCode:''}) - fieldList.push({type:'string',value:'equipmentId',text:'璁惧ID',dictCode:''}) - fieldList.push({type:'string',value:'causeAnalysis',text:'鍘熷洜鍒嗘瀽',dictCode:''}) - fieldList.push({type:'string',value:'isTrainingEducation',text:'鍩硅鏁欒偛鏄� 鍚�',dictCode:''}) - fieldList.push({type:'string',value:'trainingFormat',text:'鍩硅褰㈠紡',dictCode:''}) - fieldList.push({type:'string',value:'trainingContent',text:'鍩硅鍐呭',dictCode:''}) - fieldList.push({type:'string',value:'trainingUser',text:'鍩硅浜�',dictCode:''}) - fieldList.push({type:'date',value:'trainingUserTime',text:'鍩硅鏃堕棿'}) - this.superFieldList = fieldList + + /** + * 鐐瑰嚮鎻愪氦鏃惰Е鍙� + * @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.selectRepairOrderData = Object.assign({}, record) + this.$refs.reportThreeNoSpareApprovalModal.visible = true + this.$refs.reportThreeNoSpareApprovalModal.title = '璇︽儏' + this.$refs.reportThreeNoSpareApprovalModal.disableSubmit = true + this.$refs.reportThreeNoSpareApprovalModal.handleDetail(record) } } } -- Gitblit v1.9.3