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/process/method/standardNoveltyRetrieval/component/FormDialog.vue |  190 ++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 146 insertions(+), 44 deletions(-)

diff --git a/src/views/CNAS/process/method/standardNoveltyRetrieval/component/FormDialog.vue b/src/views/CNAS/process/method/standardNoveltyRetrieval/component/FormDialog.vue
index 1f92114..784cd5f 100644
--- a/src/views/CNAS/process/method/standardNoveltyRetrieval/component/FormDialog.vue
+++ b/src/views/CNAS/process/method/standardNoveltyRetrieval/component/FormDialog.vue
@@ -1,47 +1,75 @@
 <template>
   <div>
-    <el-dialog v-model="formDia" title="鏂板" width="80%" @close="closeDia">
-      <el-form ref="form" :model="form" :rules="formRules" label-width="auto">
-        <el-button size="small" type="primary" @click="addBtn">娣诲姞涓�鏉�</el-button>
+    <el-dialog v-model="formDia" title="鏂板" width="800px" @close="closeDia">
+      <el-form ref="form" :model="form" :rules="formRules" label-width="120px">
         <div class="form-info">
-          <div v-for="(items,index) in form.taskRel" :key="index">
-            <el-col :span="12">
-              <el-form-item :prop="`taskRel.${index}.newMethodName`" :rules="{required: true, message: '璇峰~鍐欐爣鍑嗗悕绉�',trigger: 'blur',}" label="鏂版爣鍑嗗悕绉帮細">
-                <el-input v-model="items.newMethodName" size="small"></el-input>
-              </el-form-item>
-            </el-col>
-            <el-col :span="12">
-              <el-form-item :prop="`taskRel.${index}.newStandardNo`" :rules="{required: true,message: '璇峰~鍐欐爣鍑嗗彿',trigger: 'blur',}" label="鏂版爣鍑嗗彿锛�">
-                <el-input v-model="items.newStandardNo" size="small"></el-input>
-              </el-form-item>
-            </el-col>
-            <el-col :span="12">
-              <el-form-item :prop="`taskRel.${index}.searchNewSource`" :rules="{required: true,message: '璇烽�夋嫨鏌ユ柊璁板綍鏉ユ簮',trigger: 'change',}" label="鏌ユ柊璁板綍鏉ユ簮锛�">
-                <el-radio-group v-model="items.searchNewSource">
-                  <el-radio :value="0">鏍囧噯缃�</el-radio>
-                  <el-radio :value="1">濮旀墭鎯呮姤</el-radio>
-                  <el-radio :value="2">鏍囧噯鏁�</el-radio>
-                  <el-radio :value="3">鍏朵粬</el-radio>
-                </el-radio-group>
-              </el-form-item>
-            </el-col>
-            <el-col :span="8">
-              <el-form-item :prop="`taskRel.${index}.remark`" :rules="{required: false,message: '璇烽�夋嫨澶囨敞',trigger: 'change',}" label="澶囨敞锛�">
-                <el-select v-model="items.remark" :prop="`taskRel.${index}.remark`"
-                           :rules="{required: false,message: '璇烽�夋嫨澶囨敞',trigger: 'change',}"
-                           clearable size="small">
-                  <el-option :value="0" label="浣滃簾"></el-option>
-                  <el-option :value="1" label="鏇挎崲"></el-option>
-                </el-select>
-              </el-form-item>
-            </el-col>
-            <el-col :span="4">
-              <el-button v-if="index !== 0" circle :icon="$icon('el-icon-delete')" size="small" type="danger" @click="deleteHeaderRow(index)"></el-button>
-            </el-col>
-            <el-col :span="24">
-              <el-divider></el-divider>
-            </el-col>
+          <div v-for="(items,index) in form.taskRel" :key="index" class="record-block">
+            <div class="record-head">
+              <span class="record-title">
+                <span class="record-index">{{ index + 1 }}</span>
+                鏌ユ柊璁板綍
+              </span>
+              <el-button v-if="index !== 0" link type="danger" :icon="$icon('el-icon-delete')"
+                @click="deleteHeaderRow(index)">鍒犻櫎鏈潯</el-button>
+            </div>
+            <el-row :gutter="20">
+              <el-col :span="12">
+                <el-form-item :prop="`taskRel.${index}.newMethodName`" :rules="{required: true, message: '璇峰~鍐欐爣鍑嗗悕绉�',trigger: 'blur',}" label="鏂版爣鍑嗗悕绉帮細">
+                  <el-input v-model="items.newMethodName" size="small"></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item :prop="`taskRel.${index}.newStandardNo`" :rules="{required: true,message: '璇峰~鍐欐爣鍑嗗彿',trigger: 'blur',}" label="鏂版爣鍑嗗彿锛�">
+                  <el-input v-model="items.newStandardNo" size="small"></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item :prop="`taskRel.${index}.searchNewTime`" label="鏌ユ柊鏃堕棿锛�">
+                  <el-date-picker v-model="items.searchNewTime" type="datetime" value-format="YYYY-MM-DD HH:mm:ss"
+                                  format="YYYY-MM-DD HH:mm:ss" placeholder="璇烽�夋嫨" size="small"
+                                  style="width: 100%;"></el-date-picker>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="鏌ユ柊浜猴細">
+                  <el-input :model-value="currentUserName" size="small" disabled></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="24">
+                <el-form-item :prop="`taskRel.${index}.searchNewResult`" label="鏌ユ柊缁撴灉锛�">
+                  <el-input v-model="items.searchNewResult" type="textarea" :rows="2" size="small"></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="24">
+                <el-form-item :prop="`taskRel.${index}.searchNewSource`" :rules="{required: true,message: '璇烽�夋嫨鏌ユ柊璁板綍鏉ユ簮',trigger: 'change',}" label="鏌ユ柊璁板綍鏉ユ簮锛�">
+                  <el-radio-group v-model="items.searchNewSource">
+                    <el-radio :value="0">鏍囧噯缃�</el-radio>
+                    <el-radio :value="1">濮旀墭鎯呮姤</el-radio>
+                    <el-radio :value="2">鏍囧噯鏁�</el-radio>
+                    <el-radio :value="3">鍏朵粬</el-radio>
+                  </el-radio-group>
+                </el-form-item>
+              </el-col>
+              <el-col v-if="items.searchNewSource === 3" :span="24">
+                <el-form-item :prop="`taskRel.${index}.searchNewWebsite`"
+                              :rules="{required: true, message: '璇峰~鍐欏叿浣撶綉鍧�鎴栫綉绔欏悕绉�', trigger: 'blur'}"
+                              label="鏉ユ簮缃戝潃/缃戠珯鍚嶇О锛�">
+                  <el-input v-model="items.searchNewWebsite" size="small" placeholder="璇疯緭鍏ュ叿浣撶綉鍧�鎴栫綉绔欏悕绉�"></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item :prop="`taskRel.${index}.remark`" :rules="{required: false,message: '璇烽�夋嫨澶囨敞',trigger: 'change',}" label="澶囨敞锛�">
+                  <el-select v-model="items.remark" clearable size="small" style="width: 100%;">
+                    <el-option :value="0" label="浣滃簾"></el-option>
+                    <el-option :value="1" label="鏇挎崲"></el-option>
+                  </el-select>
+                </el-form-item>
+              </el-col>
+            </el-row>
           </div>
+        </div>
+        <div class="add-btn-wrap">
+          <el-button class="add-btn" @click="addBtn">娣诲姞涓�鏉�</el-button>
         </div>
       </el-form>
       <template #footer><span  class="dialog-footer">
@@ -54,6 +82,7 @@
 
 <script>
 import { addMethodSearchNew } from '@/api/cnas/process/method/standardNoveltyRetrieval'
+import useUserStore from '@/store/modules/user'
 
 export default {
   name: 'FormDialog',
@@ -68,6 +97,9 @@
           {
             newMethodName: '',
             newStandardNo: '',
+            searchNewTime: '',
+            searchNewResult: '',
+            searchNewWebsite: '',
             searchNewSource: '',
             remark: '',
           }
@@ -78,6 +110,12 @@
       info: {},
     };
   },
+  computed: {
+    currentUserName() {
+      const user = useUserStore()
+      return user.nickName || user.name || user.userName
+    }
+  },
   // 鏂规硶闆嗗悎
   methods: {
     openDia (row) {
@@ -85,7 +123,7 @@
     },
     // 娣诲姞涓�鏉�
     addBtn() {
-      this.form.taskRel.push({ newMethodName: '', newStandardNo:'', searchNewSource: '', remark: ''});
+      this.form.taskRel.push({ newMethodName: '', newStandardNo:'', searchNewTime: '', searchNewResult: '', searchNewWebsite: '', searchNewSource: '', remark: ''});
     },
     // 鍒犻櫎涓�鏉�
     deleteHeaderRow (index) {
@@ -95,7 +133,11 @@
       this.$refs['form'].validate((valid) => {
         if (valid) {
           this.editLoad = true
-          addMethodSearchNew(this.form.taskRel).then(res => {
+          const records = this.form.taskRel.map(item => ({
+            ...item,
+            searchNewWebsite: item.searchNewSource === 3 ? item.searchNewWebsite : null
+          }))
+          addMethodSearchNew(records).then(res => {
             this.editLoad = false
             this.$message.success('鎿嶄綔鎴愬姛')
             this.closeDia()
@@ -120,10 +162,70 @@
 
 <style scoped>
 .form-info {
-  display: inline-block;
-  max-height: 42em;
+  max-height: 52vh;
   overflow-y: auto;
+  padding-right: 4px;
 }
+
+.record-block {
+  background: #fafafa;
+  border: 1px solid #ebeef5;
+  border-radius: 6px;
+  padding: 14px 16px 0;
+  margin-bottom: 14px;
+}
+
+.record-head {
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+  padding-bottom: 10px;
+  margin-bottom: 14px;
+  border-bottom: 1px dashed #e4e7ed;
+}
+
+.record-title {
+  display: flex;
+  align-items: center;
+  gap: 8px;
+  font-size: 14px;
+  font-weight: 600;
+  color: var(--el-text-color-primary);
+}
+
+.record-index {
+  display: inline-flex;
+  align-items: center;
+  justify-content: center;
+  width: 20px;
+  height: 20px;
+  border-radius: 50%;
+  background: var(--el-color-primary);
+  color: #fff;
+  font-size: 12px;
+}
+
+.add-btn-wrap {
+  margin-top: 4px;
+}
+
+.add-btn {
+  width: 100%;
+  color: var(--el-color-primary);
+  border: 1px dashed var(--el-color-primary);
+  background: transparent;
+}
+
+.add-btn:hover {
+  color: var(--el-color-primary);
+  border-color: var(--el-color-primary);
+  background: var(--el-color-primary-light-9);
+}
+
+:deep(.record-block .el-form-item) {
+  margin-bottom: 16px;
+}
+
 :deep(.el-dialog) {
   margin: 6vh auto 50px !important;
 }

--
Gitblit v1.9.3