From 49cdc0884a9a4381cd968cffff65e2a332bc675a Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期六, 24 十月 2026 21:05:29 +0800
Subject: [PATCH] feat(cnas-search): 1.标准查新模块  2.印章使用记录

---
 src/views/CNAS/process/method/standardNoveltyRetrieval/component/FormDialog.vue |   95 +++++++++++++++++++++++++++++++++--------------
 1 files changed, 66 insertions(+), 29 deletions(-)

diff --git a/src/views/CNAS/process/method/standardNoveltyRetrieval/component/FormDialog.vue b/src/views/CNAS/process/method/standardNoveltyRetrieval/component/FormDialog.vue
index 784cd5f..5f666ba 100644
--- a/src/views/CNAS/process/method/standardNoveltyRetrieval/component/FormDialog.vue
+++ b/src/views/CNAS/process/method/standardNoveltyRetrieval/component/FormDialog.vue
@@ -14,20 +14,33 @@
             </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 :prop="`taskRel.${index}.methodName`" :rules="{required: true, message: '璇峰~鍐欐爣鍑嗗悕绉�',trigger: 'blur',}" label="鏍囧噯鍚嶇О锛�">
+                  <el-input v-model="items.methodName" 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 :prop="`taskRel.${index}.standardNo`" :rules="{required: true,message: '璇峰~鍐欐爣鍑嗗彿',trigger: 'blur',}" label="鏍囧噯鍙凤細">
+                  <el-input v-model="items.standardNo" 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 :prop="`taskRel.${index}.fileNo`" :rules="{required: true,message: '璇峰~鍐欐枃浠剁紪鍙�',trigger: 'blur',}" label="鏂囦欢缂栧彿锛�">
+                  <el-input v-model="items.fileNo" size="small"></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item :prop="`taskRel.${index}.searchNewTime`" :rules="{required: true,message: '璇烽�夋嫨鏌ユ柊鏃ユ湡',trigger: 'change',}" label="鏌ユ柊鏃ユ湡锛�">
+                  <el-date-picker v-model="items.searchNewTime" type="date" value-format="YYYY-MM-DD"
+                                  format="YYYY-MM-DD" placeholder="璇烽�夋嫨鏃ユ湡" size="small"
+                                  style="width: 100%;" @change="refreshDefaultNextSearchDate(items)"></el-date-picker>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="涓嬫鏌ユ柊鏃ユ湡锛�">
+                  <el-input v-if="isSearchRetired(items.searchNewResult)" model-value="涓嶉�傜敤" size="small" disabled />
+                  <el-date-picker v-else v-model="items.nextSearchDate" type="date" value-format="YYYY-MM-DD"
+                                  format="YYYY-MM-DD" placeholder="榛樿涓変釜鏈堝悗锛屽彲淇敼" size="small"
+                                  style="width: 100%;" />
                 </el-form-item>
               </el-col>
               <el-col :span="12">
@@ -35,34 +48,35 @@
                   <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-col :span="12">
+                <el-form-item :prop="`taskRel.${index}.searchNewResult`" :rules="{required: true,message: '璇烽�夋嫨鏌ユ柊缁撴灉',trigger: 'change',}" label="鏌ユ柊缁撴灉锛�">
+                  <el-select v-model="items.searchNewResult" placeholder="璇烽�夋嫨" style="width: 100%"
+                             @change="handleSearchResultChange(items)">
+                    <el-option v-for="result in searchResultOptions" :key="result" :label="result" :value="result" />
+                  </el-select>
                 </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 v-for="source in searchSourceOptions" :key="source.value" :value="source.value">{{ source.label }}</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>
+                              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-col v-if="items.searchNewResult === '宸蹭慨璁�/鏈夋柊鐗堟湰鏇夸唬'" :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 v-if="items.searchNewResult === '宸蹭慨璁�/鏈夋柊鐗堟湰鏇夸唬'" :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-row>
@@ -83,6 +97,7 @@
 <script>
 import { addMethodSearchNew } from '@/api/cnas/process/method/standardNoveltyRetrieval'
 import useUserStore from '@/store/modules/user'
+import { calculateNextSearchDate, isSearchRetired, searchResultOptions, searchSourceOptions } from '../options'
 
 export default {
   name: 'FormDialog',
@@ -92,16 +107,21 @@
     // 杩欓噷瀛樻斁鏁版嵁
     return {
       formDia: false,
+      searchResultOptions,
+      searchSourceOptions,
       form: {
         taskRel: [
           {
-            newMethodName: '',
-            newStandardNo: '',
+            methodName: '',
+            standardNo: '',
+            fileNo: '',
             searchNewTime: '',
+            nextSearchDate: '',
             searchNewResult: '',
             searchNewWebsite: '',
             searchNewSource: '',
-            remark: '',
+            newMethodName: '',
+            newStandardNo: '',
           }
         ]
       },
@@ -118,12 +138,26 @@
   },
   // 鏂规硶闆嗗悎
   methods: {
+    isSearchRetired,
     openDia (row) {
       this.formDia = true
     },
     // 娣诲姞涓�鏉�
     addBtn() {
-      this.form.taskRel.push({ newMethodName: '', newStandardNo:'', searchNewTime: '', searchNewResult: '', searchNewWebsite: '', searchNewSource: '', remark: ''});
+      this.form.taskRel.push({ methodName: '', standardNo: '', fileNo: '', searchNewTime: '',
+        nextSearchDate: '', searchNewResult: '', searchNewWebsite: '', searchNewSource: '',
+        newMethodName: '', newStandardNo: '' });
+    },
+    refreshDefaultNextSearchDate(item) {
+      item.nextSearchDate = isSearchRetired(item.searchNewResult) ? null
+        : calculateNextSearchDate(item.searchNewTime)
+    },
+    handleSearchResultChange(item) {
+      if (isSearchRetired(item.searchNewResult)) {
+        item.nextSearchDate = null
+      } else if (!item.nextSearchDate) {
+        this.refreshDefaultNextSearchDate(item)
+      }
     },
     // 鍒犻櫎涓�鏉�
     deleteHeaderRow (index) {
@@ -135,7 +169,10 @@
           this.editLoad = true
           const records = this.form.taskRel.map(item => ({
             ...item,
-            searchNewWebsite: item.searchNewSource === 3 ? item.searchNewWebsite : null
+            searchNewTime: `${item.searchNewTime} 00:00:00`,
+            searchNewWebsite: item.searchNewSource === 3 ? item.searchNewWebsite : null,
+            newMethodName: item.searchNewResult === '宸蹭慨璁�/鏈夋柊鐗堟湰鏇夸唬' ? item.newMethodName : null,
+            newStandardNo: item.searchNewResult === '宸蹭慨璁�/鏈夋柊鐗堟湰鏇夸唬' ? item.newStandardNo : null
           }))
           addMethodSearchNew(records).then(res => {
             this.editLoad = false

--
Gitblit v1.9.3