From d5b955494f6d658959e50b9e87ea7ebafb86c6d4 Mon Sep 17 00:00:00 2001 From: zhangherong <571457620@qq.com> Date: 星期三, 05 三月 2025 17:13:09 +0800 Subject: [PATCH] art: 中心项 改为 必填 --- src/views/eam/RepairOrderList.vue | 610 +++++++++++++++++++++++++++++++++++++++--------------- 1 files changed, 437 insertions(+), 173 deletions(-) diff --git a/src/views/eam/RepairOrderList.vue b/src/views/eam/RepairOrderList.vue index e4c38fa..de9322e 100644 --- a/src/views/eam/RepairOrderList.vue +++ b/src/views/eam/RepairOrderList.vue @@ -1,6 +1,6 @@ <template> <a-card - title="缁翠慨宸ュ崟" + title="" :bordered="false" > <div class="table-page-search-wrapper"> @@ -8,6 +8,25 @@ layout="inline" @keyup.enter.native="searchQuery" > + <a-row + :gutter="24" + style="margin-bottom: 1%;" + > + <a-col + :xl="24" + :lg="7" + :md="8" + :sm="24" + > + <a-form-item label="缁熶竴缂栧彿缇�"> + <a-textarea + placeholder="璇疯緭鍏ユ墍鏈夌粺涓�缂栫爜,椤荤敤绌烘牸闅斿紑,鍚﹀垯鍙兘鏌ヨ鍑洪敊璇俊鎭�" + v-model="queryParam.nums" + :auto-size="{ minRows: 2, maxRows:2 }" + ></a-textarea> + </a-form-item> + </a-col> + </a-row> <a-row :gutter="24"> <a-col :xl="6" @@ -20,7 +39,7 @@ allow-clear placeholder="璇烽�夋嫨宸ュ崟鐘舵��" :triggerChange="true" - dictCode="repair_order_status" + dictCode="true_repair_status" v-model="queryParam.status" /> </a-form-item> @@ -44,14 +63,14 @@ :md="8" :sm="24" > - <a-form-item label="璁惧缂栫爜"> + <a-form-item label="缁熶竴缂栫爜"> <a-input - placeholder="璇疯緭鍏ヨ澶囩紪鐮�" + placeholder="璇疯緭鍏ョ粺涓�缂栫爜" v-model="queryParam.equipmentNum" ></a-input> </a-form-item> </a-col> - <a-col :span="3"> + <!-- <a-col :span="3"> <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons" @@ -64,31 +83,154 @@ <a-icon :type="toggleSearchStatus ? 'up' : 'down'" /> </a> </span> + </a-col> --> + <a-col + :xl="6" + :lg="7" + :md="8" + :sm="24" + > + <a-form-item label="璁惧鍚嶇О"> + <a-input + placeholder="璇疯緭鍏ヨ澶囧悕绉�" + v-model="queryParam.equipmentName" + ></a-input> + </a-form-item> </a-col> </a-row> - - <template v-if="toggleSearchStatus"> - <a-row :gutter="24"> - <a-col - :xl="6" - :lg="7" - :md="8" - :sm="24" - > - <a-form-item label="璁惧鍚嶇О"> - <a-input - placeholder="璇疯緭鍏ヨ澶囧悕绉�" - v-model="queryParam.equipmentName" - ></a-input> - </a-form-item> - </a-col> - </a-row> - </template> + <a-row :gutter="24"> + <a-col + :xl="6" + :lg="7" + :md="8" + :sm="24" + > + <a-form-item label="璁惧鎵�灞炲垎绫�"> + <j-dict-select-tag + dictCode="mom_eam_equipment_category,name,id" + placeholder="璇疯緭鍏ユ悳绱㈡潯浠跺苟閫夋嫨" + v-model="queryParam.equipmentCategoryId" + /> + </a-form-item> + </a-col> + <a-col + :xl="6" + :lg="7" + :md="8" + :sm="24" + > + <a-form-item label="宸ュ尯"> + <j-dict-select-tag + allow-clear + placeholder="璇烽�夋嫨璧勫伐鍖�" + :triggerChange="true" + dictCode="mom_base_area,name,id,del_flag!='1'" + v-model="queryParam.factoryModelId" + /> + </a-form-item> + </a-col> + <a-col + :xl="6" + :lg="7" + :md="8" + :sm="24" + > + <a-form-item label="鏄惁鍏抽敭璁惧"> + <j-dict-select-tag + allow-clear + placeholder="璇烽�夋嫨鏄惁鍏抽敭璁惧" + :triggerChange="true" + dictCode="specific_equipment" + v-model="queryParam.specificEquipment" + /> + </a-form-item> + </a-col> + <a-col + :xl="6" + :lg="7" + :md="8" + :sm="24" + > + <a-form-item label="缁翠慨鐘舵��"> + <j-dict-select-tag + allow-clear + placeholder="璇烽�夋嫨缁翠慨鐘舵��" + :triggerChange="true" + dictCode="repair_status" + v-model="queryParam.repairOrderUda1" + /> + </a-form-item> + </a-col> + </a-row> + <a-row :gutter="24"> + <a-col + :xl="6" + :lg="7" + :md="8" + :sm="24" + > + <a-form-item label="ABC鏍囪瘑"> + <j-dict-select-tag + allow-clear + placeholder="璇烽�夋嫨ABC鏍囪瘑" + :triggerChange="true" + dictCode="ABC-standard-result" + v-model="queryParam.equipmentImportanceId" + /> + </a-form-item> + </a-col> + <a-col + :xl="6" + :lg="7" + :md="8" + :sm="24" + > + <a-form-item label="鏁呴殰鍘熷洜"> + <j-dict-select-tag + allow-clear + placeholder="璇烽�夋嫨鏁呴殰鍘熷洜" + :triggerChange="true" + dictCode="repair_order_fault_cause" + v-model="queryParam.faultCause" + /> + </a-form-item> + </a-col> + <a-col + :xl="6" + :lg="7" + :md="8" + :sm="24" + > + <a-form-item label="鎶ヤ慨鏃堕棿"> + <a-range-picker + style="width: 100%;" + format="YYYY-MM-DD HH:mm:ss" + v-model="faultTime" + @change="timeChange" + /> + </a-form-item> + </a-col> + <a-col + :xl="6" + :lg="7" + :md="8" + :sm="24" + > + <a-form-item label="鍒涘缓鏃堕棿"> + <a-range-picker + style="width: 100%;" + format="YYYY-MM-DD HH:mm:ss" + v-model="createTimes" + @change="timeChangeCreate" + /> + </a-form-item> + </a-col> + </a-row> </a-form> </div> <!-- 鎿嶄綔鎸夐挳鍖哄煙 --> <div class="table-operator"> - <a-dropdown> + <!-- <a-dropdown> <a-menu slot="overlay"> <a-menu-item key="1" @@ -97,7 +239,7 @@ <a-menu-item key="2" @click="handleAddPre(2)" - ><a-icon type="copy" />鍙傜収淇濅慨鏁呴殰鍗�</a-menu-item> + ><a-icon type="copy" />鍙傜収鏁呴殰鎶ヤ慨鍗�</a-menu-item> <a-menu-item key="2" @click="handleAddPre(3)" @@ -107,7 +249,7 @@ type="primary" icon="plus" >鏂板</a-button> - </a-dropdown> + </a-dropdown> --> <a-button type="primary" @@ -120,12 +262,23 @@ icon="reload" >閲嶇疆</a-button> <a-button + type="primary" + icon="download" + @click="handleExportXls('缁翠慨灞ュ巻')" + >瀵煎嚭</a-button> + <a-button hidden type="primary" icon="plus" @click="handleDispatch()" :disabled="selectionRows.length==0" >娲惧伐</a-button> + <a-button + type="primary" + icon="plus" + @click="getReports" + v-has="'repair:accept'" + >棰嗗彇</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> @@ -153,94 +306,56 @@ bordered rowKey="id" class="j-table-force-nowrap" - :scroll="{ x: 'calc(2700px + 50%)', y: 900 }" :columns="columns" :dataSource="dataSource" :pagination="ipagination" :loading="loading" @change="handleTableChange" :customRow="clickThenSelect" + :rowClassName="tableRowClass" + :scroll="{ x: 'calc(1700px + 50%)', y: 900 }" > - <!-- :rowSelection="rowSelection" --> - + <span + slot="jell" + slot-scope="text" + > + <j-ellipsis + :value="text" + :length="8" + /> + </span> + <span + slot="specificEquipment" + slot-scope="text" + > + <a-icon + type="check" + style="color: chartreuse;" + v-if="text==='0'" + /> + <a-icon + type="close" + v-else + style="color:red;" + /> + </span> <span slot="num" slot-scope="text, record" > - - <a v-if="record.status === '3' || record.status === '4' ||record.status === '5' ||record.status === '7' " class="lot" @click="handleOrderExe(record)" - ><j-ellipsis :value="text" :length="15"/></a> - <span v-else> <j-ellipsis :value="text" :length="15"/></span> + ><j-ellipsis + :value="text" + :length="15" + /></a> + <span v-else> <j-ellipsis + :value="text" + :length="15" + /></span> </span> - - <!-- <span - slot="action" - slot-scope="text, record" - > - <a-popconfirm - title="纭畾涓嬪彂鍚�?" - @confirm="() => handleDistribute(record)" - > - <a v-if="record.status=='0'">涓嬪彂</a> - </a-popconfirm> - <a-divider - type="vertical" - v-if="record.status=='0'" - /> - <a-popconfirm - title="纭畾鎾ゅ洖鍚�?" - @confirm="() => handleWithdraw(record)" - > - <a v-if="record.status=='1'">鎾ゅ洖</a> - </a-popconfirm> - <a-divider - type="vertical" - v-if="record.status=='1'" - /> - <a-popconfirm - title="纭畾棰嗗彇鍚�?" - @confirm="() => handleReceive(record)" - > - <a v-if="record.status=='1'">棰嗗彇</a> - </a-popconfirm> - <a-divider - type="vertical" - v-if="record.status=='1'" - /> - <a - v-if="record.status === '2' || record.status === '3' ||record.status === '4'" - @click="handleOrderExe(record)" - >鎵ц</a> - <a-divider - type="vertical" - v-if="record.status === '2' || record.status === '3' ||record.status === '4'" - /> - <a - @click="handleEditPre(record)" - v-if="record.status=='0'" - >缂栬緫</a> - <a-divider - type="vertical" - v-if="record.status=='0'" - /> - <a-dropdown v-if="record.status=='0'"> - <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> --> <span slot="action" slot-scope="text, record" @@ -275,10 +390,10 @@ v-if="record.status == '1' && record.dispatchMethod == '1' " @click="handleAssignOrder(record)" >娲惧伐</a> - <a + <!-- <a v-if="record.status == '2' && record.dispatchMethod != null " @click="handleAssignOrder(record)" - >鏀规淳</a> + >鏀规淳</a> --> <a-divider v-if="record.status == '1' || record.status == '2' " type="vertical" @@ -286,6 +401,7 @@ <a v-if="record.status === '2' || record.status === '3' " @click="handleOrderExe(record)" + v-has="'repair:excute'" >鎵ц</a> <a-divider v-if="record.status === '2' || record.status === '3' " @@ -317,6 +433,44 @@ </a-dropdown> </span> + <template + slot="equipmentNum" + slot-scope="text, record" + > + <a-popover title="鏁呴殰鍘熷洜缁熻"> + <template slot="content"> + <p + v-for="(faultCauseMap, index) in record.equipmentFaultCause" + :key="index" + > + <span class="fontweight">{{ faultCauseMap.faultCause }}锛歿{ faultCauseMap.total }}</span> + </p> + </template> + <span> + {{ record.equipmentNum }} + </span> + </a-popover> + </template> + + <template + slot="faultCauseCount" + slot-scope="text, record" + > + <a-popover title="鏁呴殰鍘熷洜缁熻"> + <template slot="content"> + <p + v-for="(faultCauseMap, index) in record.allFaultCause" + :key="index" + > + <span class="fontweight">{{ faultCauseMap.faultCause }}锛歿{ faultCauseMap.total }}</span> + </p> + </template> + <span> + {{ record.faultCauseCount }} + </span> + </a-popover> + </template> + </a-table> </div> @@ -333,6 +487,7 @@ <a-tab-pane tab="缁翠慨瑕佹眰" key="2" + v-if="false" > <RepairOrderDetailList :mainId="repairOrderDetailMainId" @@ -343,6 +498,7 @@ tab="璁″垝鐢ㄦ枡" key="3" forceRender + v-if="false" > <RepairOrderPlanMaterialList :addStatus="sonsAddStatus" @@ -353,6 +509,7 @@ tab="鍗遍櫓闃叉帶" key="4" forceRender + v-if="false" > <RepairOrderRiskPreventionList :addStatus="sonsAddStatus" @@ -363,6 +520,7 @@ tab="浣滀笟鎸囧涔�" key="5" forceRender + v-if="false" > <EquipmentDocumentList :addStatus="sonsAddStatus" @@ -373,8 +531,9 @@ tab="瀹為檯鐢ㄦ枡" key="6" forceRender - v-if="!sonsAddStatus&&selectedRowKeys.length!=0" + v-if="false" > + <!-- v-if="!sonsAddStatus&&selectedRowKeys.length!=0" --> <RepairOrderActualMaterialList :mainId="repairOrderActualMaterialMainId" /> </a-tab-pane> <a-tab-pane @@ -407,9 +566,14 @@ <repair-order-excute-drawer ref="repairOrderExcuteDrawer" @ok="modalFormOk" + :repairOrderId="repairOrderFaultAnalysisMainId" :repairOrder="excuteRepairOrder" > </repair-order-excute-drawer> + <fault-report-repair + ref="FaultReportRepair" + @ok="modalFormOk" + ></fault-report-repair> </a-card> </template> <script> @@ -426,9 +590,13 @@ import EquipmentDocumentList from './RepairOrderEquipmentDocumentList' import '@/assets/less/TableExpand.less' import { putAction } from '../../api/manage' -import RepairOrderAssignTask from './modules/repairorder/RepairOrderAssignTask.vue' -import RepairOrderExcuteDrawer from './modules/repairorder/repairOrderExcuteDrawer.vue' +import RepairOrderAssignTask from './modules/repairorder/RepairOrderAssignTask' +import RepairOrderExcuteDrawer from './modules/repairorder/repairOrderExcuteDrawer' import FaultDescriptionList from './FaultDescriptionList' +import FaultReportRepair from './modules/repairorder/moudles/select/FaultReportRepair.vue' +import store from '@/store' +import dayjs from 'dayjs' +import moment from 'moment' export default { name: "RepairOrderList", mixins: [JeecgListMixin], @@ -444,12 +612,21 @@ RepairOrderModal, RepairOrderAssignTask, RepairOrderExcuteDrawer, - FaultDescriptionList + FaultDescriptionList, + FaultReportRepair, + store + }, + mounted() { + let intervalId = setInterval(() => { + this.loadData(); + }, 600 * 1000); // 1000姣锛屽嵆1绉� }, data() { return { description: '缁翠慨宸ュ崟绠$悊椤甸潰', // 琛ㄥご + faultTime: [], + createTimes: [], columns: [ { title: '#', @@ -462,9 +639,29 @@ } }, { + title: '鍏抽敭璁惧', + align: "center", + dataIndex: 'specificEquipment', + width: 90, + scopedSlots: { customRender: 'specificEquipment' } + }, + { + title: 'ABC鏍囪瘑', + align: "center", + dataIndex: 'equipmentImportanceId', + }, + { title: '鐘舵��', align: "center", dataIndex: 'status_dictText' + }, + { + title: '缁翠慨鐘舵��', + align: "center", + dataIndex: 'repairOrderUda1_dictText', + customRender: function (t, r, index) { + return t === null || r.repairOrderUda1 === null ? '/' : t; + } }, { title: '鍗曟嵁鍙�', @@ -472,15 +669,16 @@ dataIndex: 'num', scopedSlots: { customRender: 'num' } }, + // { + // title: '涓氬姟绫诲瀷', + // align: "center", + // dataIndex: 'businessType_dictText' + // }, { - title: '涓氬姟绫诲瀷', + title: '缁熶竴缂栫爜', align: "center", - dataIndex: 'businessType_dictText' - }, - { - title: '璁惧缂栫爜', - align: "center", - dataIndex: 'equipmentNum' + dataIndex: 'equipmentNum', + scopedSlots: { customRender: 'equipmentNum' } }, { title: '璁惧鍚嶇О', @@ -497,50 +695,82 @@ align: "center", dataIndex: 'departId_dictText' }, + // { + // title: '绱ф�ョ▼搴�', + // align: "center", + // dataIndex: 'urgency_dictText' + // }, + // { + // title: '缁翠繚鏂瑰紡', + // align: "center", + // dataIndex: 'maintenanceMethod_dictText' + // }, + // { + // title: '澶栧鍗曚綅', + // align: "center", + // dataIndex: 'outsourcingUnitName' + // }, { - title: '绱ф�ョ▼搴�', + title: '缁翠慨鐝粍', align: "center", - dataIndex: 'urgency_dictText' - }, - { - title: '缁翠繚鏂瑰紡', - align: "center", - dataIndex: 'maintenanceMethod_dictText' - }, - { - title: '濮斿鍗曚綅', - align: "center", - dataIndex: 'outsourcingUnitName' - }, - { - title: '璐d换鐝粍', - align: "center", - dataIndex: 'teamId_dictText' + dataIndex: 'teamId_dictText', + scopedSlots: { + customRender: 'jell' + } }, { title: '璐d换浜�', align: "center", dataIndex: 'responsibilityId_dictText' }, - { - title: '娲惧伐鏂瑰紡', - align: "center", - dataIndex: 'dispatchMethod_dictText' - }, + // { + // title: '娲惧伐鏂瑰紡', + // align: "center", + // dataIndex: 'dispatchMethod_dictText' + // }, // { // title: '鐗圭璁惧', // align: "center", // dataIndex: 'specificEquipment_dictText' // }, { - title: '鏁呴殰鎻忚堪', + title: '鏁呴殰鏃堕棿', align: "center", - dataIndex: 'faultDescription' + dataIndex: 'faultTime' }, // { - // title: '鏁呴殰鏃堕棿', + // title: '鎶ヤ慨浜�', // align: "center", - // dataIndex: 'faultTime' + // dataIndex: 'errUda2', + // }, + { + title: '鏁呴殰鎻忚堪', + align: "center", + dataIndex: 'faultDescription', + scopedSlots: { + customRender: 'jell' + } + }, + { + title: '鏁呴殰鍘熷洜', + align: "center", + dataIndex: 'faultCauseCount', + scopedSlots: { customRender: 'faultCauseCount' } + }, + // { + // title: '鏁呴殰鐜拌薄', + // align: "center", + // dataIndex: 'faultPhenomenon' + // }, + // { + // title: '鏁呴殰鎺掗櫎', + // align: "center", + // dataIndex: 'faultRemove' + // }, + // { + // title: '棰勯槻鎺柦', + // align: "center", + // dataIndex: 'preventiveMeasure' // }, // { // title: '鏁呴殰鐓х墖', @@ -553,36 +783,36 @@ // align: "center", // dataIndex: 'isStop_dictText' // }, - { - title: '宸ユ椂瀹氶', - align: "center", - dataIndex: 'workingHourQuota' - }, - { - title: '瀹為檯宸ユ椂', - align: "center", - dataIndex: 'actualHour' - }, - { - title: '璁″垝寮�濮嬫椂闂�', - align: "center", - dataIndex: 'planStartTime' - }, - { - title: '璁″垝缁撴潫鏃堕棿', - align: "center", - dataIndex: 'planEndTime' - }, - { - title: '瀹為檯寮�濮嬫椂闂�', - align: "center", - dataIndex: 'actualStartTime' - }, - { - title: '瀹為檯缁撴潫鏃堕棿', - align: "center", - dataIndex: 'actualEndTime' - }, + // { + // title: '宸ユ椂瀹氶', + // align: "center", + // dataIndex: 'workingHourQuota' + // }, + // { + // title: '瀹為檯宸ユ椂', + // align: "center", + // dataIndex: 'actualHour' + // }, + // { + // title: '璁″垝寮�濮嬫椂闂�', + // align: "center", + // dataIndex: 'planStartTime' + // }, + // { + // title: '璁″垝缁撴潫鏃堕棿', + // align: "center", + // dataIndex: 'planEndTime' + // }, + // { + // title: '瀹為檯寮�濮嬫椂闂�', + // align: "center", + // dataIndex: 'actualStartTime' + // }, + // { + // title: '瀹為檯缁撴潫鏃堕棿', + // align: "center", + // dataIndex: 'actualEndTime' + // }, { title: '鍒涘缓浜�', align: "center", @@ -598,9 +828,10 @@ dataIndex: 'action', align: "center", fixed: "right", - width: 230, + width: 130, scopedSlots: { customRender: 'action' }, } + ], url: { list: "/eam/repairOrder/list", @@ -617,8 +848,8 @@ /* 鍒嗛〉鍙傛暟 */ ipagination: { current: 1, - pageSize: 5, - pageSizeOptions: ['5', '10', '50'], + pageSize: 20, + pageSizeOptions: ['5', '10', '20', '50'], showTotal: (total, range) => { return range[0] + "-" + range[1] + " 鍏�" + total + "鏉�" }, @@ -667,8 +898,14 @@ }, methods: { - - + timeChange() { + this.queryParam.faultStartTime = moment(this.faultTime[0]).format("YYYY-MM-DD HH:mm:ss") + this.queryParam.faultEndTime = moment(this.faultTime[1]).format("YYYY-MM-DD HH:mm:ss") + }, + timeChangeCreate() { + this.queryParam.createStartTime = moment(this.createTimes[0]).format("YYYY-MM-DD HH:mm:ss") + this.queryParam.createEndTime = moment(this.createTimes[1]).format("YYYY-MM-DD HH:mm:ss") + }, clickThenSelect(record) { return { on: { @@ -733,6 +970,7 @@ } this.onClearSelected() this.queryParam.repairOrderType = 0; + this.queryParam.userId = store.getters.userInfo.id var params = this.getQueryParams();//鏌ヨ鏉′欢 this.loading = true; getAction(this.url.list, params).then((res) => { @@ -832,11 +1070,37 @@ this.loadData(1) this.onClearSelected() this.$refs.FaultDescriptionList.faultId = '-1' + this.faultTime = [] + this.createTimes = [] + }, + getReports() { + this.$refs.FaultReportRepair.title = '鏁呴殰鎶ヤ慨鍗�'; + this.$refs.FaultReportRepair.loadData(); + this.$refs.FaultReportRepair.visible = true; + }, + tableRowClass(record, index) { + if ("2" === record.status) { + if (record.specificEquipment === '0' && dayjs(record.faultTime).add(12, 'hour') < dayjs()) { + return 'error' + } else if (dayjs(record.faultTime).add(7, 'day') < dayjs()) { + return 'primary' + } + } }, }, } </script> -<style scoped> +<style lang="less" scoped> @import '~@assets/less/common.less'; + +/deep/.error { + color: red; + font-weight: bold; +} + +/deep/.primary { + color: rgb(255, 0, 251); + font-weight: bold; +} </style> \ No newline at end of file -- Gitblit v1.9.3