From faa4081b1617f062738bfa0e83b689cbd63d74ec Mon Sep 17 00:00:00 2001
From: 吴羡 <16976746+Xian-TT3@user.noreply.gitee.com>
Date: 星期五, 23 十月 2026 18:08:56 +0800
Subject: [PATCH] 设备模块:仪器名称EN字段改为仪器名称,隐藏未实现的数采配置按钮;设备核查计划编辑与新增弹窗改为单列排版并调整宽度;新增核查记录弹窗按编辑表单对齐字段、校验与附件;核查责任人下拉包含admin;新增按设备获取核查计划明细接口

---
 src/views/CNAS/resourceDemand/device/component/checkRecord.vue |  568 ++++++++++++++++++++++----------------------------------
 1 files changed, 222 insertions(+), 346 deletions(-)

diff --git a/src/views/CNAS/resourceDemand/device/component/checkRecord.vue b/src/views/CNAS/resourceDemand/device/component/checkRecord.vue
index c651824..d2ab78a 100644
--- a/src/views/CNAS/resourceDemand/device/component/checkRecord.vue
+++ b/src/views/CNAS/resourceDemand/device/component/checkRecord.vue
@@ -1,217 +1,66 @@
 <template>
   <div>
     <el-dialog :close-on-click-modal="false" :close-on-press-escape="false" v-model="dialogVisible"
-      title="浠櫒璁惧鏈熼棿鏍告煡璁板綍琛�" width="80%" @close="resetForm">
-      <el-steps :active="currentStep" align-center finish-status="success">
-        <el-step title="濉啓璁惧鏍告煡瀵规瘮璁板綍"></el-step>
+      :title="currentStep === 0 ? '鏂板鏍告煡璁板綍' : '璁惧鏍告煡璁板綍'" width="50%" @close="resetForm">
+      <el-steps v-if="currentStep === 1" :active="1" align-center finish-status="success">
+        <el-step title="濉啓鏍告煡璁板綍"></el-step>
         <el-step title="瀹℃牳"></el-step>
       </el-steps>
-      <el-row>
-        <el-col :span="8">
-          <div class="form-item">
-            <span style="width: 110px">浠櫒鍚嶇О锛�</span>
-            <el-select v-model="selectedDeviceId" :disabled="currentStep !== 0" class="table_input" clearable filterable
-              placeholder="璁惧鍚嶇О" size="small" style="width:200px" @change="changeMachineName">
-              <el-option v-for="item in equipOptions" :key="item.id" :label="item.label" :value="item.id">
-                {{ item.label + '-' + item.value }}
-              </el-option>
-            </el-select>
-          </div>
-        </el-col>
-        <el-col :span="8">
-          <div class="form-item">
-            <span style="width: 130px">浠櫒缂栧彿锛�</span>
-            <el-input v-model="form.deviceNumber" :disabled="currentStep !== 0" clearable size="small"></el-input>
-          </div>
-        </el-col>
-        <el-col :span="8">
-          <div class="form-item">
-            <span style="width: 130px">绮惧害绛夌骇锛�</span>
-            <el-input v-model="form.accuracyGrade" :disabled="currentStep !== 0" clearable size="small"></el-input>
-          </div>
-        </el-col>
-      </el-row>
-      <div style="margin: 10px">鏍告煡浣跨敤鐗╄川</div>
-      <el-row>
-        <el-col :span="8">
-          <div class="form-item">
-            <span style="width: 130px">鍚嶇О锛�</span>
-            <el-input v-model="form.materialName" :disabled="currentStep !== 0" clearable size="small"></el-input>
-          </div>
-        </el-col>
-        <el-col :span="8">
-          <div class="form-item">
-            <span style="width: 130px">缂栧彿锛�</span>
-            <el-input v-model="form.materialNumber" :disabled="currentStep !== 0" clearable size="small"></el-input>
-          </div>
-        </el-col>
-        <el-col :span="8">
-          <div class="form-item">
-            <span style="width: 130px">绮惧害/涓嶇‘瀹氬害锛�</span>
-            <el-input v-model="form.materialAccuracyUncertainty" :disabled="currentStep !== 0" clearable
-              size="small"></el-input>
-          </div>
-        </el-col>
-        <el-col :span="8">
-          <div class="form-item">
-            <span style="width: 130px">鍨嬪彿锛�</span>
-            <el-input v-model="form.materialModel" :disabled="currentStep !== 0" clearable size="small"></el-input>
-          </div>
-        </el-col>
-        <el-col :span="8">
-          <div class="form-item">
-            <span style="width: 130px">鏍告煡鏂瑰紡锛�</span>
-            <el-input v-model="form.materialCheckMethod" :disabled="currentStep !== 0" clearable
-              size="small"></el-input>
-          </div>
-        </el-col>
-        <el-col :span="8">
-          <div class="form-item">
-            <span style="width: 130px">鏍告煡椤圭洰锛�</span>
-            <el-input v-model="form.materialCheckItems" :disabled="currentStep !== 0" clearable size="small"></el-input>
-          </div>
-        </el-col>
-        <el-col :span="8">
-          <div class="form-item">
-            <span style="width: 130px">娓╁害锛�</span>
-            <el-input v-model="form.temperature" :disabled="currentStep !== 0" clearable size="small"></el-input>
-          </div>
-        </el-col>
-        <el-col :span="8">
-          <div class="form-item">
-            <span style="width: 130px">婀垮害锛�</span>
-            <el-input v-model="form.humidity" :disabled="currentStep !== 0" clearable size="small"></el-input>
-          </div>
-        </el-col>
-      </el-row>
-      <el-button v-if="currentStep === 0" size="small" style="margin: 10px 0" type="primary" @click="addRow">娣诲姞</el-button>
-      <el-table :data="recordDetailList" height="300" style="width: 100%" border>
-        <el-table-column label="娴嬭瘯鐐�" min-width="130" prop="testPoint">
-          <template #default="scope">
-            <el-input v-model="scope.row.testPoint" :disabled="currentStep !== 0" clearable size="small"></el-input>
-          </template>
-        </el-table-column>
-        <el-table-column min-width="180">
-          <template #header="scope">
-            <el-input v-model="form.dataValue1" :disabled="currentStep !== 0" size="small" />
-          </template>
-          <template #default="scope">
-            <el-input v-model="scope.row.dataValue1" :disabled="currentStep !== 0" clearable size="small"></el-input>
-          </template>
-        </el-table-column>
-        <el-table-column min-width="180">
-          <template #header="scope">
-            <el-input v-model="form.dataValue2" :disabled="currentStep !== 0" size="small" />
-          </template>
-          <template #default="scope">
-            <el-input v-model="scope.row.dataValue2" :disabled="currentStep !== 0" clearable size="small"></el-input>
-          </template>
-        </el-table-column>
-        <el-table-column min-width="180">
-          <template #header="scope">
-            <el-input v-model="form.dataValue3" :disabled="currentStep !== 0" size="small" />
-          </template>
-          <template #default="scope">
-            <el-input v-model="scope.row.dataValue3" :disabled="currentStep !== 0" clearable size="small"></el-input>
-          </template>
-        </el-table-column>
-        <el-table-column min-width="180">
-          <template #header="scope">
-            <el-input v-model="form.dataValue4" :disabled="currentStep !== 0" size="small" />
-          </template>
-          <template #default="scope">
-            <el-input v-model="scope.row.dataValue4" :disabled="currentStep !== 0" clearable size="small"></el-input>
-          </template>
-        </el-table-column>
-        <el-table-column min-width="180">
-          <template #header="scope">
-            <el-input v-model="form.dataValue5" :disabled="currentStep !== 0" size="small" />
-          </template>
-          <template #default="scope">
-            <el-input v-model="scope.row.dataValue5" :disabled="currentStep !== 0" clearable size="small"></el-input>
-          </template>
-        </el-table-column>
-        <el-table-column min-width="180">
-          <template #header="scope">
-            <el-input v-model="form.dataValue6" :disabled="currentStep !== 0" size="small" />
-          </template>
-          <template #default="scope">
-            <el-input v-model="scope.row.dataValue6" :disabled="currentStep !== 0" clearable size="small"></el-input>
-          </template>
-        </el-table-column>
-      </el-table>
-      <table border="1" cellspacing="10" class="table">
-        <tr>
-          <td>鏈�澶у亸宸�</td>
-          <th>
-            <el-input v-model="form.maximun1" :disabled="currentStep !== 0" clearable size="small"></el-input>
-          </th>
-          <th>
-            <el-input v-model="form.maximun2" :disabled="currentStep !== 0" clearable size="small"></el-input>
-          </th>
-          <th>
-            <el-input v-model="form.maximun3" :disabled="currentStep !== 0" clearable size="small"></el-input>
-          </th>
-          <th>
-            <el-input v-model="form.maximun4" :disabled="currentStep !== 0" clearable size="small"></el-input>
-          </th>
-          <th>
-            <el-input v-model="form.maximun5" :disabled="currentStep !== 0" clearable size="small"></el-input>
-          </th>
-          <th>
-            <el-input v-model="form.maximun6" :disabled="currentStep !== 0" clearable size="small"></el-input>
-          </th>
-        </tr>
-        <tr>
-          <td>鐩稿鍋忓樊</td>
-          <th>
-            <el-input v-model="form.relative1" :disabled="currentStep !== 0" clearable size="small"></el-input>
-          </th>
-          <th>
-            <el-input v-model="form.relative2" :disabled="currentStep !== 0" clearable size="small"></el-input>
-          </th>
-          <th>
-            <el-input v-model="form.relative3" :disabled="currentStep !== 0" clearable size="small"></el-input>
-          </th>
-          <th>
-            <el-input v-model="form.relative4" :disabled="currentStep !== 0" clearable size="small"></el-input>
-          </th>
-          <th>
-            <el-input v-model="form.relative5" :disabled="currentStep !== 0" clearable size="small"></el-input>
-          </th>
-          <th>
-            <el-input v-model="form.relative6" :disabled="currentStep !== 0" clearable size="small"></el-input>
-          </th>
-        </tr>
-      </table>
-      <el-row>
-        <el-col :span="24">
-          <div class="form-item">
-            <span style="width: 80px">鍒ゅ畾锛�</span>
-            <el-input v-model="form.determine" :disabled="currentStep !== 0" clearable size="small"></el-input>
-          </div>
-        </el-col>
-        <el-col :span="24">
-          <div class="form-item">
-            <span style="width: 80px">澶囨敞锛�</span>
-            <el-input v-model="form.remark" :disabled="currentStep !== 0" clearable size="small"
-              type="textarea"></el-input>
-          </div>
-        </el-col>
-        <el-col :span="24">
-          <div class="form-item">
-            <span style="width: 116px">瀹℃牳浜猴細</span>
-            <el-select v-model="form.reviewUserId" :disabled="currentStep !== 0" placeholder="璇烽�夋嫨" size="small"
-              style="width: 100%">
-              <el-option v-for="item in userList" :key="item.id" :label="item.name" :value="item.id"></el-option>
-            </el-select>
-          </div>
-        </el-col>
-      </el-row>
-      <template #footer><span  class="dialog-footer">
+      <el-form ref="recordForm" :model="form" :rules="rules" label-width="110px">
+        <el-form-item label="璁惧缂栧彿锛�" prop="deviceNumber">
+          <el-input v-model="form.deviceNumber" disabled size="small"></el-input>
+        </el-form-item>
+        <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"
+              :value="item.id"></el-option>
+          </el-select>
+          <el-input v-else v-model="form.deviceName" disabled size="small"></el-input>
+        </el-form-item>
+        <el-form-item label="鏍告煡鏃堕棿锛�" prop="checkTime">
+          <el-date-picker v-model="form.checkTime" :disabled="currentStep !== 0" clearable format="YYYY-MM"
+            placeholder="閫夋嫨鏃ユ湡" size="small" style="width: 100%" type="month" value-format="YYYY-MM">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="鏍告煡鎸囨爣锛�" prop="checkIndex">
+          <el-input v-model="form.checkIndex" :disabled="currentStep !== 0" clearable size="small"></el-input>
+        </el-form-item>
+        <el-form-item label="鏍告煡鏂规硶锛�" prop="checkMethod">
+          <el-input v-model="form.checkMethod" :disabled="currentStep !== 0" clearable size="small"
+            type="textarea"></el-input>
+        </el-form-item>
+        <el-form-item label="缁撴灉濡備綍鍒ゅ畾锛�" prop="howResults">
+          <el-input v-model="form.howResults" :disabled="currentStep !== 0" clearable size="small"
+            type="textarea"></el-input>
+        </el-form-item>
+        <el-form-item label="鏍告煡璐d换浜猴細" prop="checkChargerUserId">
+          <el-select v-if="currentStep === 0" v-model="form.checkChargerUserId" clearable filterable
+            placeholder="璇烽�夋嫨" size="small" style="width: 100%" @change="setCheckChargerUser">
+            <el-option v-for="item in chargerOptions" :key="item.id" :label="item.name"
+              :value="item.id"></el-option>
+          </el-select>
+          <el-input v-else v-model="form.checkChargerUser" disabled size="small"></el-input>
+        </el-form-item>
+        <el-form-item label="澶囨敞锛�" prop="remark">
+          <el-input v-model="form.remark" :disabled="currentStep !== 0" clearable size="small"></el-input>
+        </el-form-item>
+        <el-form-item label="闄勪欢锛�">
+          <el-upload v-if="currentStep === 0" :action="javaApi + '/deviceScope/uploadFile'" :headers="uploadHeader"
+            :limit="1" :on-exceed="handleUploadExceed" :before-upload="beforeAttachmentUpload"
+            :on-success="handleAttachmentSuccess" :on-remove="handleAttachmentRemove">
+            <el-button size="small" type="primary">閫夋嫨闄勪欢</el-button>
+          </el-upload>
+          <el-link v-if="form.fileUrl" type="primary" @click="openAttachment">
+            {{ form.fileName || '鏌ョ湅闄勪欢' }}
+          </el-link>
+          <span v-else-if="currentStep !== 0">鈥�</span>
+        </el-form-item>
+      </el-form>
+      <template #footer><span class="dialog-footer">
         <el-button @click="resetForm">鍙� 娑�</el-button>
         <el-button v-if="currentStep === 0" :loading="submitFormLoading" type="primary" @click="submitCheck">纭�
-          瀹�</el-button>
+          璁�</el-button>
         <el-button v-if="currentStep === 1" :loading="submitFormLoading" @click="examine(0)">涓嶉�氳繃</el-button>
         <el-button v-if="currentStep === 1" :loading="submitFormLoading" type="primary" @click="examine(1)">閫�
           杩�</el-button>
@@ -222,171 +71,185 @@
 
 <script>
 import {
-  getExamineRecord,
   addExamineRecord,
   reviewExamineRecord,
   deviceScopeSearch,
+  resolveExaminePlanDetail,
+  updateDeviceExaminePlanDetail,
 } from '@/api/cnas/resourceDemand/device.js'
 import { selectUserCondition } from "@/api/performance/class";
-import {mapGetters} from "@/utils/store-compat";
 import draftSave from '@/mixins/draftSave'
+
+const createEmptyForm = () => ({
+  deviceId: '',
+  deviceName: '',
+  deviceNumber: '',
+  checkTime: '',
+  checkIndex: '',
+  checkMethod: '',
+  howResults: '',
+  checkChargerUserId: '',
+  checkChargerUser: '',
+  remark: '',
+  fileName: '',
+  fileUrl: '',
+  planDetailsId: '',
+})
 export default {
   name: "check-record",
-  // import 寮曞叆鐨勭粍浠堕渶瑕佹敞鍏ュ埌瀵硅薄涓墠鑳戒娇鐢�
-  components: {},
   mixins: [draftSave],
   data() {
     // 杩欓噷瀛樻斁鏁版嵁
     return {
       dialogVisible: false,
-      recordDetailList: [],
-      search: "",
-      form: {
-        deviceName: '',
-        deviceNumber: '',
-        accuracyGrade: '',
-        materialName: '',
-        materialNumber: '',
-        materialAccuracyUncertainty: '',
-        materialModel: '',
-        materialCheckMethod: '',
-        materialCheckItems: '',
-        temperature: '',
-        humidity: '',
-        recordDetailList: [],
-        dataValue1: '',
-        dataValue2: '',
-        dataValue3: '',
-        dataValue4: '',
-        dataValue5: '',
-        dataValue6: '',
-        maximun1: '',
-        maximun2: '',
-        maximun3: '',
-        maximun4: '',
-        maximun5: '',
-        maximun6: '',
-        relative1: '',
-        relative2: '',
-        relative3: '',
-        relative4: '',
-        relative5: '',
-        relative6: '',
-        determine: '',
-        remark: '',
-        planDetailsId: '',
-        reviewUserId: '',
-      },
+      form: createEmptyForm(),
       currentStep: 0,
-      distributionDetailList: [
-        { label: '鏈�澶у亸宸�', value: 1 },
-        { label: '鐩稿鍋忓樊', value: 2 },
-      ],
       equipOptions: [],
       selectedDeviceId: '',
       submitFormLoading: false,
       userList: [],
-      reviewUserId: '',
-      checkChargerUserId: '',
+      rules: {
+        checkMethod: [{ required: true, message: '璇峰~鍐欐牳鏌ユ柟娉�', trigger: 'blur' }],
+      },
     }
-  },
-  mounted() {
-
-  },
-  computed: {
-    ...mapGetters(["userId"]),
   },
   // 鏂规硶闆嗗悎
   methods: {
+    // 瀹℃牳宸叉彁浜ょ殑鏍告煡璁板綍
     openDialog(row) {
       this.dialogVisible = true
+      this.currentStep = 1
+      this.selectedDeviceId = row.deviceId || ''
+      this.form = {
+        deviceId: row.deviceId || '',
+        deviceName: row.deviceName || '',
+        deviceNumber: row.deviceNumber || '',
+        checkTime: (row.checkTime || '').substring(0, 7),
+        checkIndex: row.checkIndex || '',
+        checkMethod: row.checkMethod || '',
+        howResults: row.howResults || '',
+        checkChargerUserId: row.checkChargerUserId || '',
+        checkChargerUser: row.checkChargerUser || '',
+        remark: row.remark || '',
+        fileName: row.fileName || '',
+        fileUrl: row.fileUrl || '',
+        planDetailsId: row.planDetailsId,
+      }
+    },
+    // 鏂板鏍告煡璁板綍锛氳嚜閫夎澶囷紝鎻愪氦鏃惰嚜鍔ㄥ尮閰�/鍒涘缓鏈疆璁″垝鏄庣粏
+    openAddDialog() {
+      this.dialogVisible = true
+      this.currentStep = 0
+      this.form = createEmptyForm()
       this.selectedDeviceId = ''
-      this.form.planDetailsId = row.planDetailsId
-      this.checkChargerUserId = row.checkChargerUserId
+      const now = new Date()
+      this.form.checkTime = now.getFullYear() + '-' + String(now.getMonth() + 1).padStart(2, '0')
       this.getEquipOptions()
       this.getUserList()
-      this.searchInfo()
-    },
-    searchInfo() {
-      getExamineRecord({ planDetailsId: this.form.planDetailsId }).then(res => {
-        if (res.code === 200) {
-          let planDetailsId = this.form.planDetailsId
-          this.form = { ...res.data }
-          this.form.planDetailsId = planDetailsId
-          this.recordDetailList = this.form.recordDetailList || []
-          if (!this.form.reviewUserId) {
-            this.currentStep = 0
-          } else {
-            this.currentStep = 1
-          }
-          if (this.form.reviewStatus === 1) {
-            this.currentStep = 2
-          }
-          this.reviewUserId = this.form.reviewUserId
-          this.matchDeviceOption()
-          this.$nextTick(() => {
-            this.draftRestore('checkRecordForm', 'form', this.form.planDetailsId, 'dialogVisible')
-            this.draftRestore('checkRecordRows', 'recordDetailList', this.form.planDetailsId, 'dialogVisible')
-            // 鑽夌閲屽彲鑳芥敼杩囪澶囷紝鎭㈠鍚庨噸鏂板尮閰嶄笅鎷夐�変腑椤�
-            this.matchDeviceOption()
-          })
+      this.$nextTick(() => {
+        if (this.$refs.recordForm) {
+          this.$refs.recordForm.clearValidate()
         }
-      }).catch(error => {
-        console.error(error)
+        this.draftRestore('checkRecordForm', 'form', 'new', 'dialogVisible')
+        if (this.form.deviceId) {
+          this.selectedDeviceId = this.form.deviceId
+        }
       })
     },
     // 鎸夎澶� id 鍥炲~鍚嶇О鍜岀紪鍙凤紝閬垮厤鍚屽悕璁惧閫夐敊
     changeMachineName(value) {
       const item = this.equipOptions.find(device => device.id === value)
       if (item) {
+        this.form.deviceId = item.id
         this.form.deviceName = item.deviceName
         this.form.deviceNumber = item.managementNumber
       } else {
+        this.form.deviceId = ''
         this.form.deviceName = ''
         this.form.deviceNumber = ''
       }
     },
-    // 鍘嗗彶璁板綍娌℃湁 deviceId锛屾寜鍚嶇О+缂栧彿鍙嶆煡涓嬫媺閫夐」
-    matchDeviceOption() {
-      if (!this.equipOptions.length || !this.form.deviceName) {
+    setCheckChargerUser(value) {
+      const item = this.userList.find(user => user.id === value)
+      this.form.checkChargerUser = item ? item.name : ''
+    },
+    // 鎻愪氦鏍告煡璁板綍
+    submitCheck() {
+      if (!this.selectedDeviceId) {
+        this.$message.error('璇烽�夋嫨璁惧')
         return
       }
-      const match = this.form.deviceNumber
-        ? this.equipOptions.find(item => item.deviceName === this.form.deviceName && item.managementNumber === this.form.deviceNumber)
-        : this.equipOptions.find(item => item.deviceName === this.form.deviceName)
-      this.selectedDeviceId = match ? match.id : ''
-    },
-    addRow() {
-      this.recordDetailList.push({ testPoint: '' })
-    },
-    // 鎻愪氦琛ㄥ崟
-    submitCheck() {
-      console.log(333, this.form)
-      this.form.recordDetailList = this.HaveJson(this.recordDetailList)
-      this.submitFormLoading = true
-      addExamineRecord(this.form).then(res => {
-        if (res.code == 200) {
-          this.$message.success('鏂板鎴愬姛')
-          this.draftClear('checkRecordForm')
-          this.draftClear('checkRecordRows')
-          this.resetForm()
+      if (!this.form.checkTime) {
+        this.$message.error('璇烽�夋嫨鏍告煡鏃堕棿')
+        return
+      }
+      this.$refs.recordForm.validate(valid => {
+        if (!valid) {
+          return
         }
-        this.submitFormLoading = false
-      }).catch(err => {
+        this.submitFormLoading = true
+        resolveExaminePlanDetail({ deviceId: this.selectedDeviceId, checkTime: this.form.checkTime }).then(res => {
+          if (res.code !== 200) {
+            this.$message.error(res.msg || '鑾峰彇鏍告煡璁″垝澶辫触')
+            this.submitFormLoading = false
+            return
+          }
+          this.saveRecord(res.data.planDetailsId)
+        }).catch(() => {
+          this.submitFormLoading = false
+        })
+      })
+    },
+    saveRecord(planDetailsId) {
+      this.form.planDetailsId = planDetailsId
+      const params = {
+        planDetailsId,
+        deviceId: this.form.deviceId,
+        deviceName: this.form.deviceName,
+        deviceNumber: this.form.deviceNumber,
+        checkTime: this.form.checkTime,
+      }
+      if (this.form.checkIndex) params.checkIndex = this.form.checkIndex
+      if (this.form.checkMethod) params.checkMethod = this.form.checkMethod
+      if (this.form.howResults) params.howResults = this.form.howResults
+      if (this.form.checkChargerUserId) params.checkChargerUserId = this.form.checkChargerUserId
+      if (this.form.checkChargerUser) params.checkChargerUser = this.form.checkChargerUser
+      if (this.form.remark) params.remark = this.form.remark
+      if (this.form.fileName) params.fileName = this.form.fileName
+      if (this.form.fileUrl) params.fileUrl = this.form.fileUrl
+      updateDeviceExaminePlanDetail(params).then(res => {
+        if (res.code !== 200) {
+          this.$message.error(res.msg || '淇濆瓨鏍告煡璁板綍澶辫触')
+          this.submitFormLoading = false
+          return
+        }
+        addExamineRecord({ planDetailsId }).then(recordRes => {
+          if (recordRes.code == 200) {
+            this.$message.success('鏍告煡璁板綍宸叉彁浜わ紝绛夊緟瀹℃牳')
+            this.draftClear('checkRecordForm')
+            this.resetForm()
+          } else {
+            this.$message.error(recordRes.msg || '鎻愪氦鏍告煡璁板綍澶辫触')
+          }
+          this.submitFormLoading = false
+        }).catch(() => {
+          this.submitFormLoading = false
+        })
+      }).catch(() => {
         this.submitFormLoading = false
       })
     },
     // 鎻愪氦瀹℃牳
     examine(statue) {
+      this.submitFormLoading = true
       const params = {
         planDetailsId: this.form.planDetailsId,
         reviewStatus: statue,
       }
       reviewExamineRecord(params).then(res => {
         if (res.code == 200) {
-          this.$message.success('瀹℃牳鎴愬姛')
+          this.$message.success(statue === 1 ? '瀹℃牳閫氳繃' : '宸查��鍥�')
           this.draftClear('checkRecordForm')
-          this.draftClear('checkRecordRows')
           this.resetForm()
         }
         this.submitFormLoading = false
@@ -396,7 +259,6 @@
     },
     resetForm() {
       this.draftStop('checkRecordForm')
-      this.draftStop('checkRecordRows')
       this.dialogVisible = false
       this.$emit('closeDialog1')
     },
@@ -411,44 +273,58 @@
             m.id = m.id
             return m
           })
-          this.matchDeviceOption()
         }
       }).catch(error => {
         console.error(error)
       })
     },
     getUserList() {
-      selectUserCondition().then(res => {
+      selectUserCondition({ type: 4 }).then(res => {
         this.userList = res.data
       })
+    },
+    // 闄勪欢
+    beforeAttachmentUpload(file) {
+      if (file.size > 1024 * 1024 * 10) {
+        this.$message.error('涓婁紶鏂囦欢涓嶈秴杩�10M')
+        return false
+      }
+      return true
+    },
+    handleUploadExceed() {
+      this.$message.warning('浠呮敮鎸佷竴涓檮浠讹紝璇峰厛绉婚櫎宸蹭笂浼犵殑闄勪欢')
+    },
+    handleAttachmentSuccess(response) {
+      if (response.code == 200) {
+        this.form.fileName = response.data.name
+        this.form.fileUrl = response.data.url
+        this.$message.success('闄勪欢涓婁紶鎴愬姛')
+      } else {
+        this.$message.error(response.msg || '闄勪欢涓婁紶澶辫触')
+      }
+    },
+    handleAttachmentRemove() {
+      this.form.fileName = ''
+      this.form.fileUrl = ''
+    },
+    openAttachment() {
+      if (!this.form.fileUrl) {
+        return
+      }
+      const isImage = /\.(jpg|jpeg|png|gif)$/i.test(this.form.fileUrl)
+      window.open(this.javaApi + (isImage ? '/img/' : '/word/') + this.form.fileUrl, '_blank')
+    },
+  },
+  computed: {
+    // 璐d换浜轰笅鎷夛細宸蹭繚瀛樼殑璐d换浜轰笉鍦ㄥ�欓�夊垪琛ㄦ椂琛ヤ竴鏉★紝閬垮厤鍥炴樉鎴愮敤鎴稩D
+    chargerOptions() {
+      const list = this.userList || []
+      const id = this.form.checkChargerUserId
+      if (id && !list.some(item => String(item.id) === String(id))) {
+        return [...list, { id, name: this.form.checkChargerUser || String(id) }]
+      }
+      return list
     },
   },
 }
 </script>
-
-<style scoped>
-.table td {
-  padding: 10px;
-}
-
-.table th {
-  padding: 10px;
-}
-
-.form {
-  display: flex;
-  align-items: center;
-}
-
-.form-item {
-  display: flex;
-  align-items: center;
-  margin-right: 10px;
-  margin-top: 10px;
-}
-
-:deep(.el-dialog__body) {
-  max-height: 650px;
-  overflow-y: auto;
-}
-</style>

--
Gitblit v1.9.3