From b1c4b9509b3b84594bbc9a541f308101d3a17140 Mon Sep 17 00:00:00 2001
From: lyh <925863403@qq.com>
Date: 星期四, 24 七月 2025 10:20:56 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
src/views/eam/base/modules/EamMaintenanceStandardModal.vue | 365 ++++++++++++++++++++++++++-------------------------
1 files changed, 187 insertions(+), 178 deletions(-)
diff --git a/src/views/eam/base/modules/EamMaintenanceStandardModal.vue b/src/views/eam/base/modules/EamMaintenanceStandardModal.vue
index 3ac6bc5..72ae064 100644
--- a/src/views/eam/base/modules/EamMaintenanceStandardModal.vue
+++ b/src/views/eam/base/modules/EamMaintenanceStandardModal.vue
@@ -1,13 +1,6 @@
<template>
- <j-modal
- :title="title"
- :width="1200"
- :visible="visible"
- :confirmLoading="confirmLoading"
- switchFullscreen
- @ok="handleOk"
- @cancel="handleCancel"
- cancelText="鍏抽棴">
+ <j-modal :title="title" :width="1200" :visible="visible" :confirmLoading="confirmLoading" switchFullscreen
+ @ok="handleOk" @cancel="handleCancel" cancelText="鍏抽棴">
<a-spin :spinning="spinning">
<a-form-model ref="form" :model="model" :rules="validatorRules" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-row :gutter="24">
@@ -44,6 +37,7 @@
<a-col :span="8">
<a-form-model-item prop="maintenancePeriod" label="淇濆吇鍛ㄦ湡">
<a-input-number v-model="model.maintenancePeriod" placeholder="璇疯緭鍏ヤ繚鍏诲懆鏈�" :min="1" :precision="0"
+ :disabled="model.maintenanceCategory=='POINT_INSPECTION'||model.maintenanceCategory=='SECOND_MAINTENANCE'"
style="width: 100%"/>
</a-form-model-item>
</a-col>
@@ -70,33 +64,44 @@
</a-row>
<a-row :gutter="24">
- <j-vxe-table
- ref="editableDetailTable"
- :rowNumber="true"
- :rowSelection="true"
- :bordered="true"
- :alwaysEdit="true"
- :toolbar="true"
- :toolbarConfig="detail.toolbarConfig"
- keep-source
- :height="300"
- :loading="detail.loading"
- :dataSource="detail.dataSource"
- :columns="detail.columns"
- style="margin-top: 8px;">
- <template v-slot:itemPart="props">
- <a-textarea v-model="props.row.itemPart" allowClear @blur="$refs.editableDetailTable.validateTable()"
- :placeholder="!Boolean(model.maintenanceCategory)?'璇烽�夋嫨淇濆吇鍒嗙被':'璇疯緭鍏ラ儴浣�'" :rows="1"
- autoSize :disabled="!Boolean(model.maintenanceCategory)"/>
+ <a-tabs :active-key="activeTabKey" v-if="model.maintenanceCategory" @change="handleTabChange">
+ <!--鐐规-->
+ <template v-if="model.maintenanceCategory=='POINT_INSPECTION'">
+ <a-tab-pane tab="鏃ョ偣妫�" key="1" forceRender>
+ <j-vxe-table ref="editableDetailTable1" rowNumber rowSelection bordered alwaysEdit toolbar
+ :toolbarConfig="detail.toolbarConfig" keep-source :height="300"
+ :dataSource="detail.dayInspectionList" :columns="detail.inspectionColumns"/>
+ </a-tab-pane>
+ <a-tab-pane tab="鍛ㄧ偣妫�" key="2" forceRender>
+ <j-vxe-table ref="editableDetailTable2" rowNumber rowSelection bordered alwaysEdit toolbar
+ :toolbarConfig="detail.toolbarConfig" keep-source :height="300"
+ :dataSource="detail.weekInspectionList" :columns="detail.inspectionColumns"/>
+ </a-tab-pane>
</template>
- <template v-slot:itemCategory="props">
- <j-dict-select-tag v-model="props.row.itemCategory" :dict-code="encodedDictCode"
- @change="$refs.editableDetailTable.validateTable()"
- :placeholder="!Boolean(model.maintenanceCategory)?'璇烽�夋嫨淇濆吇鍒嗙被':'璇烽�夋嫨椤逛繚鍏诲垎绫�'"
- :disabled="!Boolean(model.maintenanceCategory)"/>
+ <!--浜屼繚-->
+ <template v-if="model.maintenanceCategory=='SECOND_MAINTENANCE'">
+ <a-tab-pane tab="鎿嶄綔宸�" key="1" forceRender>
+ <j-vxe-table ref="editableDetailTable1" rowNumber rowSelection bordered alwaysEdit toolbar
+ :toolbarConfig="detail.toolbarConfig" keep-source :height="300"
+ :dataSource="detail.operatorMaintenanceList" :columns="detail.secondMaintenanceColumns"/>
+ </a-tab-pane>
+ <a-tab-pane tab="缁翠慨宸�" key="2" forceRender>
+ <j-vxe-table ref="editableDetailTable2" rowNumber rowSelection bordered alwaysEdit toolbar
+ :toolbarConfig="detail.toolbarConfig" keep-source :height="300"
+ :dataSource="detail.repairerMaintenanceList" :columns="detail.secondMaintenanceColumns"/>
+ </a-tab-pane>
</template>
- </j-vxe-table>
+
+ <!--涓変繚-->
+ <template v-if="model.maintenanceCategory=='THIRD_MAINTENANCE'">
+ <a-tab-pane tab="涓変繚" key="1">
+ <j-vxe-table ref="editableDetailTable1" rowNumber rowSelection bordered alwaysEdit toolbar
+ :toolbarConfig="detail.toolbarConfig" keep-source :height="300"
+ :dataSource="detail.thirdMaintenanceList" :columns="detail.thirdMaintenanceColumns"/>
+ </a-tab-pane>
+ </template>
+ </a-tabs>
</a-row>
</a-form-model>
</a-spin>
@@ -132,6 +137,7 @@
},
confirmLoading: false,
spinning: false,
+ activeTabKey: '1',
validatorRules: {
standardName: [
{ required: true, message: '璇疯緭鍏ヨ鑼冨悕绉�', trigger: 'change' }
@@ -156,9 +162,12 @@
upgrade: '/eam/maintenanceStandard/upgrade'
},
detail: {
- loading: false,
- dataSource: [],
- columns: [
+ dayInspectionList: [],
+ weekInspectionList: [],
+ operatorMaintenanceList: [],
+ repairerMaintenanceList: [],
+ thirdMaintenanceList: [],
+ inspectionColumns: [
{
title: 'ID',
key: 'id',
@@ -176,27 +185,7 @@
align: 'center',
placeholder: '璇疯緭鍏ラ」鐩簭鍙�',
width: 150,
- validateRules: [
- { required: true, message: '璇疯緭鍏ラ」鐩簭鍙�' },
- { unique: true, message: '椤圭洰搴忓彿涓嶈兘閲嶅' }
- ]
- },
- {
- title: '閮ㄤ綅',
- key: 'itemPart',
- type: JVXETypes.slot,
- slotName: 'itemPart',
- placeholder: '璇疯緭鍏ラ儴浣�',
- align: 'center',
- validateRules: [{ handler: this.itemPartValidate }]
- },
- {
- title: '淇濆吇椤瑰垎绫�',
- key: 'itemCategory',
- type: JVXETypes.slot,
- slotName: 'itemCategory',
- align: 'center',
- validateRules: [{ handler: this.itemCategoryValidate }]
+ validateRules: [{ required: true, message: '璇疯緭鍏�${title}' }]
},
{
title: '淇濆吇椤圭洰',
@@ -204,9 +193,7 @@
placeholder: '璇疯緭鍏ヤ繚鍏婚」鐩�',
type: JVXETypes.textarea,
align: 'center',
- validateRules: [
- { required: true, message: '璇疯緭鍏ヤ繚鍏婚」鐩�' }
- ]
+ validateRules: [{ required: true, message: '璇疯緭鍏�${title}' }]
},
{
title: '淇濆吇瑙勮寖鎴栬姹�',
@@ -214,12 +201,10 @@
placeholder: '璇疯緭鍏ヤ繚鍏昏鑼冩垨瑕佹眰',
type: JVXETypes.textarea,
align: 'center',
- validateRules: [
- { required: true, message: '璇疯緭鍏ヤ繚鍏昏鑼冩垨瑕佹眰' }
- ]
+ validateRules: [{ required: true, message: '璇疯緭鍏�${title}' }]
}
],
- defaultColumns: [
+ secondMaintenanceColumns: [
{
title: 'ID',
key: 'id',
@@ -237,27 +222,7 @@
align: 'center',
placeholder: '璇疯緭鍏ラ」鐩簭鍙�',
width: 150,
- validateRules: [
- { required: true, message: '璇疯緭鍏ラ」鐩簭鍙�' },
- { unique: true, message: '椤圭洰搴忓彿涓嶈兘閲嶅' }
- ]
- },
- {
- title: '閮ㄤ綅',
- key: 'itemPart',
- type: JVXETypes.slot,
- slotName: 'itemPart',
- placeholder: '璇疯緭鍏ラ儴浣�',
- align: 'center',
- validateRules: [{ handler: this.itemPartValidate }]
- },
- {
- title: '淇濆吇椤瑰垎绫�',
- key: 'itemCategory',
- type: JVXETypes.slot,
- slotName: 'itemCategory',
- align: 'center',
- validateRules: [{ handler: this.itemCategoryValidate }]
+ validateRules: [{ required: true, message: '璇疯緭鍏�${title}' }]
},
{
title: '淇濆吇椤圭洰',
@@ -265,19 +230,44 @@
placeholder: '璇疯緭鍏ヤ繚鍏婚」鐩�',
type: JVXETypes.textarea,
align: 'center',
- validateRules: [
- { required: true, message: '璇疯緭鍏ヤ繚鍏婚」鐩�' }
- ]
+ validateRules: [{ required: true, message: '璇疯緭鍏�${title}' }]
+ }
+ ],
+ thirdMaintenanceColumns: [
+ {
+ title: 'ID',
+ key: 'id',
+ type: JVXETypes.hidden
},
{
- title: '淇濆吇瑙勮寖鎴栬姹�',
- key: 'itemDemand',
- placeholder: '璇疯緭鍏ヤ繚鍏昏鑼冩垨瑕佹眰',
+ title: 'standardId',
+ key: 'standardId',
+ type: JVXETypes.hidden
+ },
+ {
+ title: '淇濆吇閮ㄤ綅',
+ key: 'itemPart',
+ type: JVXETypes.textarea,
+ placeholder: '璇疯緭鍏�${title}',
+ slotName: 'itemPart',
+ align: 'center',
+ validateRules: [{ required: true, message: '璇疯緭鍏�${title}' }]
+ },
+ {
+ title: '淇濆吇鍐呭',
+ key: 'itemName',
+ placeholder: '璇疯緭鍏�${title}',
type: JVXETypes.textarea,
align: 'center',
- validateRules: [
- { required: true, message: '璇疯緭鍏ヤ繚鍏昏鑼冩垨瑕佹眰' }
- ]
+ validateRules: [{ required: true, message: '璇疯緭鍏�${title}' }]
+ },
+ {
+ title: '楠屾敹鏍囧噯',
+ key: 'itemDemand',
+ placeholder: '璇疯緭鍏�${title}',
+ type: JVXETypes.textarea,
+ align: 'center',
+ validateRules: [{ required: true, message: '璇疯緭鍏�${title}' }]
}
],
toolbarConfig: {
@@ -289,36 +279,14 @@
}
}
},
-
- watch: {
- 'model.maintenanceCategory': {
- handler(val) {
- if (val) {
- if (val != 'THIRD_MAINTENANCE') this.detail.columns = [...this.detail.defaultColumns.filter(item => item.key != 'itemPart')]
- else this.detail.columns = [...this.detail.defaultColumns.filter(item => item.key != 'itemCategory')]
- }
- else this.detail.columns = [...this.detail.defaultColumns]
- }
- }
- },
- computed: {
- encodedDictCode() {
- let suffix
- if (!Boolean(this.model.maintenanceCategory) || this.model.maintenanceCategory === 'THIRD_MAINTENANCE') return
- else suffix = this.model.maintenanceCategory.split('_')[1]
-
- const dictCode = `sys_dict_item,item_text,item_value,item_value like '%${suffix}' and dict_id='1940598438685134850'`
- return encodeURIComponent(dictCode)
- }
- },
methods: {
// 涓婚〉闈㈢偣鍑绘柊澧炲悗瑙﹀彂
add() {
+ this.resetData()
this.model = {}
this.visible = true
this.editable = true
this.upgradeFlag = false
- this.detail.dataSource = []
},
/**
@@ -326,11 +294,11 @@
* @param record 涓婚〉闈㈠垪琛ㄨ璁板綍
*/
edit(record) {
+ this.resetData()
this.model = Object.assign({}, record)
this.visible = true
this.editable = false
this.upgradeFlag = false
- this.detail.dataSource = []
this.loadDetail(record.id)
},
@@ -339,12 +307,39 @@
* @param record 涓婚〉闈㈠垪琛ㄨ璁板綍
*/
upgrade(record) {
+ this.resetData()
this.model = Object.assign({}, record)
this.visible = true
this.editable = false
this.upgradeFlag = true
- this.detail.dataSource = []
this.loadDetail(record.id)
+ },
+
+ //鍔犺浇璇︽儏鏁版嵁
+ loadDetail(standardId) {
+ this.spinning = true
+ getAction(this.url.detail, { standardId })
+ .then(res => {
+ if (res.success) {
+ switch (this.model.maintenanceCategory) {
+ case 'POINT_INSPECTION':
+ this.detail.dayInspectionList = res.result.filter(item => item.itemCategory == 'DAY_INSPECTION')
+ this.detail.weekInspectionList = res.result.filter(item => item.itemCategory == 'WEEK_INSPECTION')
+ break
+ case 'SECOND_MAINTENANCE':
+ this.detail.operatorMaintenanceList = res.result.filter(item => item.itemCategory == 'OPERATOR_MAINTENANCE')
+ this.detail.repairerMaintenanceList = res.result.filter(item => item.itemCategory == 'REPAIRER_MAINTENANCE')
+ break
+ case 'THIRD_MAINTENANCE':
+ this.detail.thirdMaintenanceList = res.result.filter(item => !Boolean(item.itemCategory))
+ break
+ default:
+ }
+ }
+ })
+ .finally(() => {
+ this.spinning = false
+ })
},
/**
@@ -352,71 +347,93 @@
* @param value 淇濆吇鍒嗙被鍊�
*/
handleMaintenanceCategoryChange(value) {
+ delete this.model.maintenancePeriod
switch (value) {
case 'THIRD_MAINTENANCE':
this.model.periodUnit = '骞�'
+ if (this.activeTabKey != '1') this.activeTabKey = '1'
break
case 'SECOND_MAINTENANCE':
this.model.periodUnit = '鏈�'
+ this.model.maintenancePeriod = 6
break
case 'POINT_INSPECTION':
this.model.periodUnit = '澶�'
+ this.model.maintenancePeriod = 1
break
default:
delete this.model.periodUnit
}
-
- const tableData = this.$refs.editableDetailTable.getTableData()
- tableData.forEach(item => {
- if (value !== 'THIRD_MAINTENANCE') delete item.itemPart
- delete item.itemCategory
- })
-
- this.detail.dataSource = [...tableData]
- this.$refs.editableDetailTable.validateTable()
+ if (this.model.maintenancePeriod) this.$refs.form.clearValidate('maintenancePeriod')
},
- /**
- * 淇濆吇閮ㄤ綅鏍¢獙
- * @param cellValue 杈撳叆鍊�
- * @param callback 鍥炶皟鍑芥暟
- */
- itemPartValidate({ cellValue }, callback) {
- if (this.model.maintenanceCategory === 'THIRD_MAINTENANCE') {
- if (cellValue) callback(true)
- else callback(false, '璇烽�夋嫨${title}')
- } else {
- callback(true)
- }
- },
-
- /**
- * 淇濆吇椤瑰垎绫绘牎楠�
- * @param cellValue 杈撳叆鍊�
- * @param callback 鍥炶皟鍑芥暟
- */
- itemCategoryValidate({ cellValue }, callback) {
- if (this.model.maintenanceCategory === 'THIRD_MAINTENANCE') {
- callback(true)
- } else {
- if (cellValue) callback(true)
- else callback(false, '璇烽�夋嫨${title}')
- }
+ async handleTabChange(tabKey) {
+ let errMap = await this.$refs['editableDetailTable' + this.activeTabKey].validateTable()
+ if (errMap) return
+ this.activeTabKey = tabKey
},
// 鎻愪氦浜嬩欢
async handleOk() {
+ // 淇濆吇鍒嗙被涓虹┖鏃朵笉鏍¢獙鏄庣粏
+ if (this.model.maintenanceCategory) {
+ // 鏍¢獙褰撲笅tab涓嬬殑琛ㄦ牸鏄惁涓虹┖
+ let tableData = this.$refs['editableDetailTable' + this.activeTabKey].getTableData()
+ if (tableData.length == 0) {
+ this.$notification.warning({
+ message: '娑堟伅',
+ description: '褰撳墠淇濆吇鏄庣粏涓嶈兘涓虹┖'
+ })
+ return
+ }
+
+ // 鏍¢獙褰撳墠tab涓嬬殑琛ㄦ牸鏍¢獙瑙勫垯
+ let errMap = await this.$refs['editableDetailTable' + this.activeTabKey].validateTable()
+ if (errMap) return false
+
+ // 鏍¢獙鍙︿竴tab淇濆吇鏄庣粏琛ㄦ牸鏄惁涓虹┖(涓変繚鏃犻渶)
+ if (this.model.maintenanceCategory != 'THIRD_MAINTENANCE') {
+ if (this.activeTabKey == '1') tableData = this.$refs.editableDetailTable2.getTableData()
+ else tableData = this.$refs.editableDetailTable1.getTableData()
+
+ if (tableData.length == 0) {
+ this.activeTabKey = this.activeTabKey == '1' ? '2' : '1'
+ this.$notification.warning({
+ message: '娑堟伅',
+ description: '褰撳墠淇濆吇鏄庣粏涓嶈兘涓虹┖'
+ })
+ return
+ }
+ }
+ }
+
const that = this
- let errMap = await that.$refs.editableDetailTable.validateTable()
- if (errMap) return false
// 瑙﹀彂琛ㄥ崟楠岃瘉
this.$refs.form.validate(valid => {
if (valid) {
- let tableData = that.$refs.editableDetailTable.getTableData()
- let removeData = that.$refs.editableDetailTable.getDeleteData()
- that.model.tableDetailList = [...tableData]
- that.model.removeDetailList = [...removeData]
-
+ let tableData1 = that.$refs.editableDetailTable1.getTableData()
+ let tableData2 = []
+ let currentTabItemMaintenanceList = []
+ if (this.model.maintenanceCategory != 'THIRD_MAINTENANCE') {
+ tableData2 = that.$refs.editableDetailTable2.getTableData()
+ if (this.model.maintenanceCategory == 'POINT_INSPECTION') currentTabItemMaintenanceList = ['DAY_INSPECTION', 'WEEK_INSPECTION']
+ else currentTabItemMaintenanceList = ['OPERATOR_MAINTENANCE', 'REPAIRER_MAINTENANCE']
+ }
+ if (currentTabItemMaintenanceList.length != 0) {
+ tableData1 = tableData1.map(item => {
+ return {
+ ...item,
+ itemCategory: currentTabItemMaintenanceList[0]
+ }
+ })
+ tableData2 = tableData2.map(item => {
+ return {
+ ...item,
+ itemCategory: currentTabItemMaintenanceList[1]
+ }
+ })
+ }
+ that.model.tableDetailList = [...tableData1, ...tableData2]
that.confirmLoading = that.spinning = true
let httpUrl = ''
let method = ''
@@ -456,6 +473,15 @@
})
},
+ resetData() {
+ this.activeTabKey = '1'
+ this.detail.dayInspectionList = []
+ this.detail.weekInspectionList = []
+ this.detail.operatorMaintenanceList = []
+ this.detail.repairerMaintenanceList = []
+ this.detail.thirdMaintenanceList = []
+ },
+
handleCancel() {
this.close()
},
@@ -464,23 +490,6 @@
this.$emit('close')
this.visible = false
this.$refs.form.clearValidate()
- },
-
- //鍔犺浇璇︽儏鏁版嵁
- loadDetail(standardId) {
- this.spinning = true
- this.detail.dataSource = []
- if (standardId) {
- getAction(this.url.detail, { standardId })
- .then(res => {
- if (res.success) {
- this.detail.dataSource = [...res.result]
- }
- })
- .finally(() => {
- this.spinning = false
- })
- }
}
}
--
Gitblit v1.9.3