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/maintenance/modules/EamSecondMaintenanceBatchOrderModal.vue | 229 ++++++++++++++++++++++++++++++++++++++++----------------
1 files changed, 162 insertions(+), 67 deletions(-)
diff --git a/src/views/eam/maintenance/modules/EamSecondMaintenanceBatchOrderModal.vue b/src/views/eam/maintenance/modules/EamSecondMaintenanceBatchOrderModal.vue
index 71ba4f5..a340fc9 100644
--- a/src/views/eam/maintenance/modules/EamSecondMaintenanceBatchOrderModal.vue
+++ b/src/views/eam/maintenance/modules/EamSecondMaintenanceBatchOrderModal.vue
@@ -1,27 +1,43 @@
<template>
- <j-modal :title="title" :width="1200" :visible="visible" :confirmLoading="confirmLoading" switchFullscreen centered
+ <j-modal :title="title" :visible="visible" :confirmLoading="confirmLoading" fullscreen
:mask-closable="false" @ok="handleOk" @cancel="handleCancel" cancelText="鍏抽棴">
<a-spin :spinning="spinning">
- <j-vxe-table ref="editableDetailTable" rowNumber rowSelection bordered alwaysEdit toolbar
- :toolbarConfig="detail.toolbarConfig" keep-source :height="500"
- :dataSource="detail.dataSource" :columns="detail.columns">
- <!--缁熶竴缂栫爜-->
- <template v-slot:equipmentId="props">
- <maintenance-equipment-select placeholder="璇疯緭鍏ョ粺涓�缂栫爜鎴栧悕绉版悳绱�" v-model="props.row.equipmentId"
- maintenanceCategory="SECOND_MAINTENANCE" :allowClear="false"
- @autocompleteForm="autocompleteForm($event,props.row)"/>
- </template>
+ <a-row :gutter="48">
+ <a-col :span="6">
+ <a-tabs default-active-key="1">
+ <a-tab-pane tab="璁惧缁撴瀯鏍�" key="1">
+ <a-tree showLine ref="tree" :expandedKeys.sync="expandedKeys"
+ :treeData="treeDataSource" checkable @check="onCheck" v-model="checkedKeys"
+ @expand="onExpand" @select="handleTreeNodeSelect">
+ </a-tree>
+ </a-tab-pane>
+ </a-tabs>
+ </a-col>
- <!-- 淇濆吇鏃ユ湡-->
- <template v-slot:maintenanceDate="props">
- <a-date-picker v-model="props.row.maintenanceDate" value-format="YYYY-MM-DD"/>
- </template>
+ <a-col :span="18">
+ <a-tabs default-active-key="1">
+ <a-tab-pane tab="璁惧鏄庣粏" key="1">
+ <j-vxe-table ref="editableDetailTable" rowNumber rowSelection bordered alwaysEdit keep-source
+ :height="500" :dataSource="detail.dataSource" :columns="detail.columns"
+ @selectRowChange="handleTableSelectRowChange">
+ <!-- 淇濆吇鏃ユ湡-->
+ <template v-slot:maintenanceDate="props">
+ <a-date-picker v-model="props.row.maintenanceDate" value-format="YYYY-MM-DD" :allow-clear="false"/>
+ </template>
- <!-- 鎿嶄綔-->
- <template v-slot:action="props">
- <a :disabled="!props.row.equipmentId" @click="handlePreviewDetail(props.row.standardId)">棰勮鏄庣粏</a>
- </template>
- </j-vxe-table>
+ <!-- 鎿嶄綔-->
+ <template v-slot:action="props">
+ <a :disabled="!props.row.equipmentId" @click="handlePreviewDetail(props.row.standardId)">棰勮鏄庣粏</a>
+ </template>
+ </j-vxe-table>
+ </a-tab-pane>
+
+ <a-date-picker slot="tabBarExtraContent" type="primary" value-format="YYYY-MM-DD" :allowClear="false"
+ @change="handleBatchSetDate"/>
+ </a-tabs>
+ </a-col>
+ </a-row>
+
</a-spin>
<eam-second-maintenance-batch-order-detail-modal ref="detailModal"/>
@@ -29,58 +45,43 @@
</template>
<script>
- import { postAction } from '@/api/manage'
- import MaintenanceEquipmentSelect from '@views/eam/equipment/modules/MaintenanceEquipmentSelect.vue'
+ import { getAction, postAction } from '@/api/manage'
import { JVXETypes } from '@comp/jeecg/JVxeTable'
import EamSecondMaintenanceBatchOrderDetailModal from './EamSecondMaintenanceBatchOrderDetailModal'
export default {
name: 'EamSecondMaintenanceBatchOrderModal',
- components: { EamSecondMaintenanceBatchOrderDetailModal, MaintenanceEquipmentSelect },
+ components: { EamSecondMaintenanceBatchOrderDetailModal },
data() {
return {
title: '鎿嶄綔',
visible: false,
confirmLoading: false,
spinning: false,
+ treeDataSource: [],
+ checkedKeys: [],
+ expandedKeys: [],
+ selectedKeys: [],
url: {
- batchAdd: '/eam/secondMaintenanceOrder/batchAdd'
+ batchAdd: '/eam/secondMaintenanceOrder/batchAdd',
+ getDeviceTree: '/eam/secondMaintenanceOrder/BatchTreeStructure'
},
detail: {
dataSource: [],
columns: [
{
- title: 'ID',
- key: 'id',
- type: JVXETypes.hidden
- },
- {
- title: '宸ュ崟鍙�',
- key: 'orderNum',
- align: 'center',
- type: JVXETypes.inputNumber,
- disabled: true,
- placeholder: '${title}绯荤粺鑷姩鐢熸垚',
- width: 200
- },
- {
title: '缁熶竴缂栫爜',
- key: 'equipmentId',
+ key: 'equipmentCode',
align: 'center',
- type: JVXETypes.slot,
- slotName: 'equipmentId',
- width: 300,
- validateRules: [
- { required: true, message: '璇疯緭鍏�${title}鎴栧悕绉版悳绱�' },
- { unique: true, message: '${title}涓嶈兘閲嶅' }
- ]
+ type: JVXETypes.normal,
+ width: 150
},
{
title: '瑙勮寖鍚嶇О',
key: 'standardName',
align: 'center',
type: JVXETypes.normal,
- width: 200
+ width: 300
},
{
title: '淇濆吇鏃ユ湡',
@@ -103,47 +104,141 @@
key: 'remark',
align: 'center',
type: JVXETypes.textarea,
- placeholder: '璇疯緭鍏ュ娉�',
- width: 300
+ placeholder: '璇疯緭鍏ュ娉�'
},
{
title: '鎿嶄綔',
align: 'center',
type: JVXETypes.slot,
width: 150,
- slotName: 'action',
- fixed: 'right'
+ slotName: 'action'
}
- ],
- toolbarConfig: {
- // prefix 鍓嶇紑锛泂uffix 鍚庣紑
- slot: ['prefix', 'suffix'],
- // add 鏂板鎸夐挳锛況emove 鍒犻櫎鎸夐挳锛沜learSelection 娓呯┖閫夋嫨鎸夐挳
- btn: ['add', 'remove', 'clearSelection']
- }
+ ]
}
}
},
methods: {
add() {
- //鍒濆鍖栭粯璁ゅ��
- this.model = { maintenancePeriod: 6 }
this.visible = true
- this.editable = true
- this.detail.operatorMaintenanceList = this.detail.repairerMaintenanceList = []
+ this.checkedKeys = this.detail.dataSource = []
+ this.queryTreeData()
},
+ // 鑾峰彇璁惧缁撴瀯鏍�
+ queryTreeData() {
+ this.spinning = true
+ this.treeDataSource = []
+ getAction(this.url.getDeviceTree)
+ .then(res => {
+ if (res.success) {
+ this.allTreeKeys = []
+ this.treeDataSource = res.result
+ this.generateList(this.treeDataSource)
+ this.expandedKeys = this.allTreeKeys
+ } else {
+ this.$notification.warning({
+ message: '娑堟伅',
+ description: res.message
+ })
+ }
+ })
+ .finally(() => {
+ this.spinning = false
+ })
+ },
+
+ /**
+ * 棰勮璁惧瑙勮寖鏄庣粏
+ * @param standardId
+ */
handlePreviewDetail(standardId) {
this.$refs.detailModal.visible = true
this.$refs.detailModal.loadStandardDetail(standardId)
},
- autocompleteForm(selectObj, record) {
- this.$set(record, 'standardName', selectObj.standardName)
- this.$set(record, 'standardId', selectObj.id)
- this.$set(record, 'equipmentId', selectObj.equipmentId)
- this.$set(record, 'maintenancePeriod', selectObj.maintenancePeriod)
- this.$refs.editableDetailTable.validateTable()
+ onExpand(expandedKeys) {
+ this.expandedKeys = expandedKeys
+ this.autoExpandParent = false
+ },
+
+ async onCheck(value, obj) {
+ this.$refs.editableDetailTable.clearValidate()
+ this.checkedKeys = value
+ const childNodesList = obj.checkedNodes.filter(item => item.data.props.equipmentId).map(item => {
+ return {
+ ...item.data.props.dataRef,
+ id: item.data.props.dataRef.key,
+ equipmentId: item.data.props.dataRef.key,
+ equipmentCode: item.data.props.dataRef.equipmentId,
+ standardId: item.data.props.dataRef.maintenanceStandardId,
+ standardName: item.data.props.dataRef.maintenanceStandardName,
+ maintenancePeriod: 6
+ }
+ })
+
+ if (childNodesList.length === 0) {
+ this.detail.dataSource = []
+ return
+ }
+ console.log('childNodesList', childNodesList)
+
+ if (childNodesList.length > this.detail.dataSource.length) {
+ childNodesList.forEach(childNode => {
+ if (!(this.detail.dataSource.map(item => item.id).includes(childNode.id))) this.detail.dataSource.push(childNode)
+ })
+ console.log('detail+++++++++++', this.detail.dataSource)
+ } else {
+ const deleteList = []
+ this.detail.dataSource.map(item => item.id).forEach(item => {
+ if (!(childNodesList.map(childNode => childNode.id).includes(item))) deleteList.push(item)
+ })
+
+ deleteList.forEach(deleteItem => {
+ this.detail.dataSource.splice(this.detail.dataSource.findIndex(item => item.id === deleteItem), 1)
+ })
+
+ console.log('deleteList', deleteList)
+ console.log('detail----------', this.detail.dataSource)
+ }
+ },
+
+ /**
+ * 鐐瑰嚮鏍戣妭鐐规椂瑙﹀彂
+ * @param selectedKeys
+ * @param event
+ */
+ handleTreeNodeSelect(selectedKeys, event) {
+ event.node.$el.childNodes[1].click()
+ },
+
+ /**
+ * 閫掑綊鏍戞暟鎹睍寮�鎵�鏈夎妭鐐�
+ * @param data
+ */
+ generateList(data) {
+ for (let i = 0; i < data.length; i++) {
+ const node = data[i]
+ const key = node.key
+ this.allTreeKeys.push(key)
+ if (node.children) {
+ this.generateList(node.children)
+ }
+ }
+ },
+
+ handleBatchSetDate(value) {
+ this.detail.dataSource.forEach((item, index, self) => {
+ if (this.selectedKeys.includes(item.id)) this.$set(item, 'maintenanceDate', value)
+ })
+ },
+
+ /**
+ * 琛ㄦ牸澶氶�夋鍙戠敓鏀瑰彉鏃惰Е鍙�
+ * @param {selectedRowIds} 琛ㄦ牸涓凡閫夋嫨鐨処D鍒楄〃
+ */
+ handleTableSelectRowChange({ selectedRowIds }) {
+ this.selectedKeys = selectedRowIds
+ console.log('selectedKeys', this.selectedKeys)
},
async handleOk() {
--
Gitblit v1.9.3