From 36c0f6593e6825fe035f63147fa1257638f57676 Mon Sep 17 00:00:00 2001
From: 吴羡 <16976746+Xian-TT3@user.noreply.gitee.com>
Date: 星期一, 26 十月 2026 13:52:55 +0800
Subject: [PATCH] feat(device): 设备模块统一“设备名称/设备EN名称”命名;核查计划新增设备型号列;核查计划弹窗取消确认与废草稿清理

---
 src/views/CNAS/resourceDemand/device/component/files.vue                     |    6 +-
 src/views/CNAS/resourceDemand/device/component/management.vue                |   14 +++---
 src/views/CNAS/resourceDemand/device/component/applicationForm.vue           |    2 
 src/views/CNAS/resourceDemand/device/component/equipmentScrap.vue            |    2 
 src/views/CNAS/resourceDemand/device/component/usingExternalInstruments.vue  |    2 
 src/views/CNAS/resourceDemand/device/component/equipmentFailure.vue          |    2 
 src/views/CNAS/resourceDemand/device/component/checkRecord.vue               |    2 
 src/views/CNAS/resourceDemand/device/component/equipmentAccident.vue         |    2 
 src/views/CNAS/resourceDemand/device/component/equipmentCheck.vue            |    6 +-
 src/views/CNAS/resourceDemand/device/component/equipmentVerificationPlan.vue |   31 ++++++++++++++-
 src/mixins/draftSave.js                                                      |    7 +++
 11 files changed, 53 insertions(+), 23 deletions(-)

diff --git a/src/mixins/draftSave.js b/src/mixins/draftSave.js
index 1308752..47092ab 100644
--- a/src/mixins/draftSave.js
+++ b/src/mixins/draftSave.js
@@ -23,7 +23,8 @@
   methods: {
     // 鎵撳紑寮圭獥銆佽〃鍗曞~濂藉悗璋冪敤锛涙湁鏈繚瀛樿崏绋垮垯鑷姩鎭㈠
     // bizKey锛氬叏灞�鍞竴涓氬姟鍚嶏紱formField锛氳〃鍗曞瓧娈靛悕(濡� 'form')锛況ecordId锛氱紪杈戜紶璁板綍id銆佹柊澧炰紶涓婁笅鏂囷紱visibleField锛氬脊绐楁樉闅愬瓧娈�(濡� 'dialogVisible')
-    draftRestore(bizKey, formField, recordId, visibleField) {
+    // isDraftUsable锛氬彲閫夛紝鑽夌鏍¢獙鍑芥暟锛岃繑鍥� false 鏃朵涪寮冭鑽夌
+    draftRestore(bizKey, formField, recordId, visibleField, isDraftUsable) {
       const old = this.draftStates[bizKey]
       if (old) {
         this.draftTeardown(old)
@@ -56,6 +57,10 @@
       if (raw) {
         try {
           const draft = JSON.parse(raw)
+          if (typeof isDraftUsable === 'function' && !isDraftUsable(draft)) {
+            cache.local.remove(state.key)
+            return
+          }
           const target = this[formField]
           if (Array.isArray(target) && Array.isArray(draft)) {
             target.splice(0, target.length, ...draft)
diff --git a/src/views/CNAS/resourceDemand/device/component/applicationForm.vue b/src/views/CNAS/resourceDemand/device/component/applicationForm.vue
index 6adbb02..39adb15 100644
--- a/src/views/CNAS/resourceDemand/device/component/applicationForm.vue
+++ b/src/views/CNAS/resourceDemand/device/component/applicationForm.vue
@@ -20,7 +20,7 @@
           </el-form-item>
         </el-col>
         <el-col v-if="showStep === 0" :span="12">
-          <el-form-item label="浠櫒鍚嶇О锛�" prop="deviceName">
+          <el-form-item label="璁惧鍚嶇О锛�" prop="deviceName">
             <el-input v-model="form.deviceName" :disabled="currentStep !== 0" clearable size="small"></el-input>
           </el-form-item>
         </el-col>
diff --git a/src/views/CNAS/resourceDemand/device/component/checkRecord.vue b/src/views/CNAS/resourceDemand/device/component/checkRecord.vue
index 214d943..f7b367f 100644
--- a/src/views/CNAS/resourceDemand/device/component/checkRecord.vue
+++ b/src/views/CNAS/resourceDemand/device/component/checkRecord.vue
@@ -11,7 +11,7 @@
           <div class="form-section-title">鍩烘湰淇℃伅</div>
           <el-row :gutter="12">
             <el-col :span="12">
-              <el-form-item label="浠櫒鍚嶇О锛�" prop="deviceName">
+              <el-form-item label="璁惧鍚嶇О锛�" prop="deviceName">
                 <el-select v-if="currentStep === 0" v-model="selectedDeviceId" clearable filterable
                   placeholder="璇烽�夋嫨璁惧" size="small" style="width: 100%" @change="changeMachineName">
                   <el-option v-for="item in equipOptions" :key="item.id" :label="item.label + '-' + item.value"
diff --git a/src/views/CNAS/resourceDemand/device/component/equipmentAccident.vue b/src/views/CNAS/resourceDemand/device/component/equipmentAccident.vue
index 5ed5d1a..511e181 100644
--- a/src/views/CNAS/resourceDemand/device/component/equipmentAccident.vue
+++ b/src/views/CNAS/resourceDemand/device/component/equipmentAccident.vue
@@ -12,7 +12,7 @@
           <!-- 琛ㄦ牸鍒� -->
           <el-table-column align="center" header-align="center" label="搴忓彿" prop="prop" type="index"
             width="70"></el-table-column>
-          <!--          <el-table-column label="浠櫒鍚嶇О" min-width="150" prop="unitName"></el-table-column>-->
+          <!--          <el-table-column label="璁惧鍚嶇О" min-width="150" prop="unitName"></el-table-column>-->
           <!--          <el-table-column label="鍨嬪彿" min-width="100" prop="model"></el-table-column>-->
           <el-table-column label="鍦扮偣" min-width="150" prop="address"></el-table-column>
           <el-table-column label="鏃ユ湡" min-width="180" prop="accidentDate"
diff --git a/src/views/CNAS/resourceDemand/device/component/equipmentCheck.vue b/src/views/CNAS/resourceDemand/device/component/equipmentCheck.vue
index dfe897f..3e213db 100644
--- a/src/views/CNAS/resourceDemand/device/component/equipmentCheck.vue
+++ b/src/views/CNAS/resourceDemand/device/component/equipmentCheck.vue
@@ -14,7 +14,7 @@
       </div>
       <div class="form">
         <div class="form-item">
-          <span style="width: 80px">A浠櫒鍚嶇О锛�</span>
+          <span style="width: 80px">A璁惧鍚嶇О锛�</span>
           <el-select v-model="form.adeviceId" :disabled="currentStep !== 0" class="table_input" clearable filterable
             placeholder="璁惧鍚嶇О" size="small" style="width:200px" @change="(val) => changeMachineName(val, 'A')">
             <el-option v-for="item in equipOptions" :key="item.id" :label="item.label" :value="item.id">
@@ -33,7 +33,7 @@
       </div>
       <div class="form">
         <div class="form-item">
-          <span style="width: 80px">B浠櫒鍚嶇О锛�</span>
+          <span style="width: 80px">B璁惧鍚嶇О锛�</span>
           <el-select v-model="form.bdeviceId" :disabled="currentStep !== 0" class="table_input" clearable filterable
             placeholder="璁惧鍚嶇О" size="small" style="width:200px" @change="(val) => changeMachineName(val, 'B')">
             <el-option v-for="item in equipOptions" :key="item.id" :label="item.label" :value="item.id">
@@ -52,7 +52,7 @@
       </div>
       <div class="form">
         <div class="form-item">
-          <span style="width: 80px">C浠櫒鍚嶇О锛�</span>
+          <span style="width: 80px">C璁惧鍚嶇О锛�</span>
           <el-select v-model="form.cdeviceId" :disabled="currentStep !== 0" class="table_input" clearable filterable
             placeholder="璁惧鍚嶇О" size="small" style="width:200px" @change="(val) => changeMachineName(val, 'C')">
             <el-option v-for="item in equipOptions" :key="item.id" :label="item.label" :value="item.id">
diff --git a/src/views/CNAS/resourceDemand/device/component/equipmentFailure.vue b/src/views/CNAS/resourceDemand/device/component/equipmentFailure.vue
index 0bb3be4..8e45114 100644
--- a/src/views/CNAS/resourceDemand/device/component/equipmentFailure.vue
+++ b/src/views/CNAS/resourceDemand/device/component/equipmentFailure.vue
@@ -12,7 +12,7 @@
           <!-- 琛ㄦ牸鍒� -->
           <el-table-column align="center" header-align="center" label="搴忓彿" prop="prop" type="index"
             width="70"></el-table-column>
-          <!--          <el-table-column label="浠櫒鍚嶇О" min-width="150" prop="unitName"></el-table-column>-->
+          <!--          <el-table-column label="璁惧鍚嶇О" min-width="150" prop="unitName"></el-table-column>-->
           <!--          <el-table-column label="鍨嬪彿" min-width="100" prop="address"></el-table-column>-->
           <el-table-column label="瀹夎鍦扮偣" min-width="150" prop="location"></el-table-column>
           <el-table-column label="鎹熷潖鎴栨晠闅滄儏鍐�" min-width="180" prop="damageOrMalfunction"></el-table-column>
diff --git a/src/views/CNAS/resourceDemand/device/component/equipmentScrap.vue b/src/views/CNAS/resourceDemand/device/component/equipmentScrap.vue
index 6c7f04f..d6d9882 100644
--- a/src/views/CNAS/resourceDemand/device/component/equipmentScrap.vue
+++ b/src/views/CNAS/resourceDemand/device/component/equipmentScrap.vue
@@ -12,7 +12,7 @@
           <!-- 琛ㄦ牸鍒� -->
           <el-table-column align="center" header-align="center" label="搴忓彿" prop="prop" type="index"
             width="70"></el-table-column>
-          <!--          <el-table-column label="浠櫒鍚嶇О" min-width="150" prop="unitName"></el-table-column>-->
+          <!--          <el-table-column label="璁惧鍚嶇О" min-width="150" prop="unitName"></el-table-column>-->
           <!--          <el-table-column label="鍨嬪彿" min-width="100" prop="address"></el-table-column>-->
           <el-table-column label="閰嶄欢" min-width="150" prop="parts"></el-table-column>
           <el-table-column label="缂栧彿" min-width="100">
diff --git a/src/views/CNAS/resourceDemand/device/component/equipmentVerificationPlan.vue b/src/views/CNAS/resourceDemand/device/component/equipmentVerificationPlan.vue
index b79641d..fa984f8 100644
--- a/src/views/CNAS/resourceDemand/device/component/equipmentVerificationPlan.vue
+++ b/src/views/CNAS/resourceDemand/device/component/equipmentVerificationPlan.vue
@@ -51,6 +51,7 @@
           width="70"></el-table-column>
         <el-table-column label="璁惧缂栧彿" min-width="170" prop="deviceNumber"></el-table-column>
         <el-table-column label="璁惧鍚嶇О" min-width="180" prop="deviceName" show-overflow-tooltip></el-table-column>
+        <el-table-column label="璁惧鍨嬪彿" min-width="120" prop="deviceModel" show-overflow-tooltip></el-table-column>
         <el-table-column label="鏍告煡鏃堕棿" min-width="120" prop="checkTime"
           :formatter="formatCheckMonth"></el-table-column>
         <el-table-column label="鏍告煡鎸囨爣" min-width="140" prop="checkIndex"> </el-table-column>
@@ -107,7 +108,7 @@
           <div class="form-section-title">鍩烘湰淇℃伅</div>
           <el-row :gutter="12">
             <el-col :span="12">
-              <el-form-item label="浠櫒鍚嶇О锛�" prop="deviceName">
+              <el-form-item label="璁惧鍚嶇О锛�" prop="deviceName">
                 <el-input v-model="form.deviceName" disabled size="small"></el-input>
               </el-form-item>
             </el-col>
@@ -212,7 +213,7 @@
         </div>
       </el-form>
       <template #footer><span class="dialog-footer">
-        <el-button @click="resetForm">鍙� 娑�</el-button>
+        <el-button @click="handleCancel">鍙� 娑�</el-button>
         <el-button :loading="submitFormLoading" type="primary" @click="submitForm"
           v-if="operationType !== 'view'">纭� 璁�</el-button>
       </span></template>
@@ -471,7 +472,10 @@
       this.$nextTick(() => {
         this.form = this.HaveJson(row)
         if (this.operationType !== 'view') {
-          this.draftRestore('equipmentVerificationPlan', 'form', this.form.planDetailsId, 'dialogVisible')
+          const rowDeviceName = this.form.deviceName
+          this.draftRestore('equipmentVerificationPlan', 'form', this.form.planDetailsId, 'dialogVisible',
+            // 璁惧鍚嶇О鏄鐢ㄥ瓧娈碉紝鑽夌閲屼负绌鸿鏄庢槸琚〃鍗曢噸缃竻绌虹殑搴熻崏绋匡紝鐩存帴涓㈠純
+            draft => !!draft.deviceName || !rowDeviceName)
         }
       })
     },
@@ -518,7 +522,28 @@
         this.saveDocx(res, '浠櫒璁惧鏈熼棿鏍告煡璁″垝琛�.docx')
       }).catch(() => { })
     },
+    // 鏈鏄惁鏈夋敼鍔紙鍚墦寮�鏃舵仮澶嶇殑鑽夌锛�
+    hasUnsavedEdit() {
+      const state = this.draftStates && this.draftStates['equipmentVerificationPlan']
+      return !!state && this.draftSnapshot(state) !== state.baseline
+    },
+    // 鍙栨秷锛氭棤缂栬緫鐩存帴閫�鍑猴紱鏈夌紪杈戝厛纭锛岀‘璁ゅ悗涓㈠純鑽夌閫�鍑�
+    handleCancel() {
+      if (this.operationType === 'view' || !this.hasUnsavedEdit()) {
+        this.dialogVisible = false
+        return
+      }
+      this.$confirm('鏄惁纭鍙栨秷缂栬緫锛熸湰娆$紪杈戣褰曚笉淇濆瓨锛�', '鎻愮ず', {
+        confirmButtonText: '纭畾',
+        cancelButtonText: '缁х画缂栬緫',
+        type: 'warning'
+      }).then(() => {
+        this.draftClear('equipmentVerificationPlan')
+        this.dialogVisible = false
+      }).catch(() => { })
+    },
     resetForm() {
+      // 鍙充笂瑙掑叧闂椂 close 浜嬩欢鍏堜簬鏄鹃殣鐩戝惉瑙﹀彂锛屽厛鎶婅崏绋垮瓨涓嬪啀閲嶇疆琛ㄥ崟锛岄伩鍏嶉噸缃悗鐨勭┖鍐呭琚瓨鎴愯崏绋�
       this.draftStop('equipmentVerificationPlan')
       this.$refs.modelForm.resetFields();
       this.dialogVisible = false
diff --git a/src/views/CNAS/resourceDemand/device/component/files.vue b/src/views/CNAS/resourceDemand/device/component/files.vue
index 3e7a136..b3d3eba 100644
--- a/src/views/CNAS/resourceDemand/device/component/files.vue
+++ b/src/views/CNAS/resourceDemand/device/component/files.vue
@@ -200,10 +200,10 @@
           <div class="section-title" style="margin-top: 0;">鍩烘湰淇℃伅</div>
           <el-form :model="editData" label-width="120px" ref="rules1" :rules="rules1">
             <div class="form-row">
-              <el-form-item label="浠櫒鍚嶇О:" prop="deviceName">
+              <el-form-item label="璁惧鍚嶇О:" prop="deviceName">
                 <el-input v-model="editData.deviceName" size="small"></el-input>
               </el-form-item>
-              <el-form-item label="浠櫒鍚嶇О:" prop="enDeviceName">
+              <el-form-item label="璁惧EN鍚嶇О:" prop="enDeviceName">
                 <el-input v-model="editData.enDeviceName" size="small"></el-input>
               </el-form-item>
             </div>
@@ -510,7 +510,7 @@
       deviceDialog: false,//鏌ョ湅璁惧浜岀淮鐮佸脊妗�
       rules1: {
         deviceName: [
-          { required: true, message: '璇疯緭鍏ヤ华鍣ㄥ悕绉�', trigger: 'blur' },
+          { required: true, message: '璇疯緭鍏ヨ澶囧悕绉�', trigger: 'blur' },
         ],
         specificationModel: [
           { required: true, message: '璇疯緭鍏ヨ鏍煎瀷鍙�', trigger: 'blur' },
diff --git a/src/views/CNAS/resourceDemand/device/component/management.vue b/src/views/CNAS/resourceDemand/device/component/management.vue
index c7841f3..3c93b0b 100644
--- a/src/views/CNAS/resourceDemand/device/component/management.vue
+++ b/src/views/CNAS/resourceDemand/device/component/management.vue
@@ -69,10 +69,10 @@
 					<div class="section-title" style="margin-top: 0;">鍩烘湰淇℃伅</div>
 					<el-form :label-position="labelPosition" :model="formData" label-width="120px">
 						<div class="form-row">
-							<el-form-item label="浠櫒鍚嶇О:" required prop="deviceName">
+							<el-form-item label="璁惧鍚嶇О:" required prop="deviceName">
 								<el-input :disabled="isUp" v-model="formData.deviceName" size="small"></el-input>
 							</el-form-item>
-							<el-form-item label="浠櫒鍚嶇О:">
+							<el-form-item label="璁惧EN鍚嶇О:">
 								<el-input :disabled="isUp" v-model="formData.enDeviceName" size="small"></el-input>
 							</el-form-item>
 						</div>
@@ -273,10 +273,10 @@
 					<div class="section-title" style="margin-top: 0;">鍩烘湰淇℃伅</div>
 					<el-form :label-position="labelPosition" :model="formData2" label-width="120px">
 						<div class="form-row">
-							<el-form-item label="浠櫒鍚嶇О:" required>
+							<el-form-item label="璁惧鍚嶇О:" required>
 								<el-input v-model="formData2.deviceName" size="small"></el-input>
 							</el-form-item>
-							<el-form-item label="浠櫒鍚嶇О:">
+							<el-form-item label="璁惧EN鍚嶇О:">
 								<el-input v-model="formData2.enDeviceName" size="small"></el-input>
 							</el-form-item>
 						</div>
@@ -494,7 +494,7 @@
 			tableData: [],
 			column: [
 				{ label: "璁惧鍚嶇О", prop: "deviceName", dataType: 'link', linkMethod: 'selectAllByOne' },
-				{ label: "璁惧鍚嶇ОEN", prop: "enDeviceName" },
+				{ label: "璁惧EN鍚嶇О", prop: "enDeviceName" },
 				{
 					label: "瑙勬牸鍨嬪彿",
 					prop: "specificationModel",
@@ -892,7 +892,7 @@
 		},
 		submitForm() {
 			if (!this.formData.deviceName) {
-				this.$message.error('鏈緭鍏ヤ华鍣ㄥ悕绉�')
+				this.$message.error('鏈緭鍏ヨ澶囧悕绉�')
 				return
 			}
 			if (!this.formData.specificationModel) {
@@ -941,7 +941,7 @@
 		// 鎻愪氦妗f淇--鏂板
 		submitForm2() {
 			if (!this.formData2.deviceName) {
-				this.$message.error('鏈緭鍏ヤ华鍣ㄥ悕绉�')
+				this.$message.error('鏈緭鍏ヨ澶囧悕绉�')
 				return
 			}
 			if (!this.formData2.specificationModel) {
diff --git a/src/views/CNAS/resourceDemand/device/component/usingExternalInstruments.vue b/src/views/CNAS/resourceDemand/device/component/usingExternalInstruments.vue
index f104008..0587dbc 100644
--- a/src/views/CNAS/resourceDemand/device/component/usingExternalInstruments.vue
+++ b/src/views/CNAS/resourceDemand/device/component/usingExternalInstruments.vue
@@ -26,7 +26,7 @@
             width="70"></el-table-column>
           <el-table-column label="鍗曚綅鍚嶇О" min-width="150" prop="unitName"></el-table-column>
           <el-table-column label="鍦板潃" min-width="100" prop="address"></el-table-column>
-          <el-table-column label="浠櫒鍚嶇О" min-width="150" prop="deviceName"></el-table-column>
+          <el-table-column label="璁惧鍚嶇О" min-width="150" prop="deviceName"></el-table-column>
           <el-table-column label="鍨嬪彿" min-width="100" prop="deviceModel"></el-table-column>
           <el-table-column label="閰嶄欢" min-width="150" prop="parts"></el-table-column>
           <el-table-column label="瀵规柟浠櫒缂栧彿" min-width="150" prop="instrumentNumber"></el-table-column>

--
Gitblit v1.9.3