From c50a874feed1ceceb18e0d42f95e4094eef98128 Mon Sep 17 00:00:00 2001
From: fei <791364011@qq.com>
Date: 星期四, 27 十一月 2025 23:32:56 +0800
Subject: [PATCH] 修改了代码

---
 src/views/archiveManager/archiveMaterial/index.vue |  938 +++++++++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 791 insertions(+), 147 deletions(-)

diff --git a/src/views/archiveManager/archiveMaterial/index.vue b/src/views/archiveManager/archiveMaterial/index.vue
index b0b9a5c..6603f55 100644
--- a/src/views/archiveManager/archiveMaterial/index.vue
+++ b/src/views/archiveManager/archiveMaterial/index.vue
@@ -2,18 +2,71 @@
     <div class="app-container">
          <h2 class="title-border">娣诲姞妗堝嵎璇︾粏璁板綍</h2>
  <el-form ref="form" :model="form" :rules="rules" label-width="100px">
+
+   <el-row>
+     <el-col :span="8">
+           <el-form-item label="鏂囦欢缂栧彿" prop="documentNumber">
+             <el-input ref="documentNumberInput" v-model="form.documentNumber" placeholder="璇疯緭鍏ユ枃浠剁紪鍙�" />
+           </el-form-item>
+           </el-col>
+   </el-row>
+
     <el-row>
-    <el-col :span="8">
+    <el-col :span="16">
           <el-form-item label="璐d换鑰�" prop="creator">
-            <el-input v-model="form.creator" placeholder="璇疯緭鍏ヨ矗浠昏��" />
+            <div class="title-search-wrapper">
+              <el-input
+                v-model="form.creator"
+                placeholder="璇疯緭鍏ヨ矗浠昏��"
+                @input="handleCreatorInput"
+                @focus="showCreatorSuggestions = true"
+                @blur="handleCreatorBlur"
+              />
+              <!-- 涓嬫媺寤鸿妗� -->
+              <div
+                v-if="showCreatorSuggestions && creatorSuggestions.length > 0"
+                class="title-suggestions"
+              >
+                <div
+                  v-for="(item, index) in creatorSuggestions"
+                  :key="index"
+                  class="suggestion-item"
+                  @mousedown="selectCreatorSuggestion(item)"
+                >
+                  {{ item }}
+                </div>
+              </div>
+            </div>
           </el-form-item>
           </el-col>
   </el-row>
   <el-row>
 
-  <el-col :span="8">
+  <el-col :span="16">
           <el-form-item label="鏂囦欢棰樺悕" prop="title">
-            <el-input v-model="form.title" placeholder="璇疯緭鍏ユ枃浠堕鍚�" />
+            <div class="title-search-wrapper">
+              <el-input
+                v-model="form.title"
+                placeholder="璇疯緭鍏ユ枃浠堕鍚�"
+                @input="handleTitleInput"
+                @focus="showTitleSuggestions = true"
+                @blur="handleTitleBlur"
+              />
+              <!-- 涓嬫媺寤鸿妗� -->
+              <div
+                v-if="showTitleSuggestions && titleSuggestions.length > 0"
+                class="title-suggestions"
+              >
+                <div
+                  v-for="(item, index) in titleSuggestions"
+                  :key="index"
+                  class="suggestion-item"
+                  @mousedown="selectTitleSuggestion(item)"
+                >
+                  {{ item }}
+                </div>
+              </div>
+            </div>
           </el-form-item>
     </el-col>
     </el-row>
@@ -24,16 +77,9 @@
               value-format="yyyy-MM-dd"
               placeholder="璇烽�夋嫨鏃ユ湡">
             </el-date-picker> -->
-  <el-col :span="8">
-                        <el-input v-model="form.date" placeholder="璇疯緭鍏ユ棩鏈�" />
-  </el-col>
+            <el-input v-model="form.date" placeholder="璇疯緭鍏ユ棩鏈� (鏍煎紡锛歽yyy-mm-dd)" style="width: 450px;" />
+            <!-- <div style="color: #999; font-size: 12px; margin-top: 4px;">璇疯緭鍏ユ纭殑鏃ユ湡鏍煎紡锛歽yyy-mm-dd</div> -->
           </el-form-item>
-      
-
-
-
-
-
           <!-- <el-form-item label="椤垫" prop="pageOrder">
             <el-input v-model="form.pageOrder" placeholder="璇疯緭鍏ラ〉娆�" />
           </el-form-item> -->
@@ -41,6 +87,7 @@
           <el-select
             v-model="form.fileStyle"
             placeholder="璇烽�夋嫨鏉愭枡绫诲瀷"
+            @change="handleFileStyleChange"
           >
             <el-option
               v-for="item in fileStyleOptions"
@@ -49,19 +96,56 @@
               :value="item.value"
             />
           </el-select>
-          
+
         </el-form-item>
-        <el-form-item 
-  label="椤靛彿" 
-  prop="pageNumber"
-  v-if=" form.fileStyle !== '鍏朵粬鏉愭枡'"
->
+        <el-form-item label="椤靛彿"
+          prop="pageNumber"
+          v-if=" form.fileStyle !== '鍏朵粬鏉愭枡'">
       <el-col :span="8">
-  <el-input 
-    v-model="form.pageNumber" 
-    placeholder="璇疯緭鍏ラ〉鍙�" 
+  <el-input
+    v-model.number="form.pageNumber"
+    placeholder="璇疯緭鍏ラ〉鍙凤紙鏁板瓧绫诲瀷锛�"
+    type="number"
+    min="1"
+    oninput="value=value.replace(/[^\d]/g,'')" style="width: 450px;"
   /></el-col>
 </el-form-item>
+
+          <el-form-item label="澶囨敞" prop="remarks">
+              <el-col :span="8">
+            <el-input v-model="form.remarks" placeholder="璇疯緭鍏ュ娉�" />
+                </el-col>
+          </el-form-item>
+
+    <el-form-item label="鍏紑灞炴��" prop="publicity">
+          <el-select
+            v-model="form.publicity"
+            placeholder="璇烽�夋嫨鍏紑灞炴��"
+            clearable
+          >
+            <el-option
+              v-for="item in publicityOptions"
+              :key="item.value"
+              :label="item.label"
+              :value="item.value"
+            />
+          </el-select>
+        </el-form-item>
+    <el-form-item label="鏄惁涓洪檮浠�" prop="isAttachment">
+          <el-select
+            v-model="form.isAttachment"
+            placeholder="璇烽�夋嫨鏄惁涓洪檮浠�"
+          >
+            <el-option
+              v-for="item in isAttachmentOptions"
+              :key="item.value"
+              :label="item.label"
+              :value="item.value"
+            />
+          </el-select>
+        </el-form-item>
+
+
           <el-form-item label="鎵�澶勯樁娈�" prop="stage">
           <el-select
             v-model="form.stage"
@@ -75,13 +159,14 @@
             />
           </el-select>
         </el-form-item>
-          <el-form-item label="鍏紑灞炴��" prop="publicity">
+
+   <el-form-item label="瀵嗙骇" prop="securityLevel">
           <el-select
-            v-model="form.publicity"
-            placeholder="璇烽�夋嫨鍏紑灞炴��"
+            v-model="form.securityLevel"
+            placeholder="璇烽�夋嫨瀵嗙骇"
           >
             <el-option
-              v-for="item in publicityOptions"
+              v-for="item in securityLevelOptions"
               :key="item.value"
               :label="item.label"
               :value="item.value"
@@ -89,19 +174,6 @@
           </el-select>
         </el-form-item>
 
-          <el-form-item label="鏄惁涓洪檮浠�" prop="isAttachment">
-          <el-select
-            v-model="form.isAttachment"
-            placeholder="璇烽�夋嫨鏄惁涓洪檮浠�"
-          >
-            <el-option
-              v-for="item in isAttachmentOptions"
-              :key="item.value"
-              :label="item.label"
-              :value="item.value"
-            />
-          </el-select>
-        </el-form-item>
 
           <el-form-item label="淇濈鏈熼檺" prop="retentionPeriod">
           <el-select
@@ -118,19 +190,7 @@
         </el-form-item>
 
       <!-- 瀵硅瘽妗嗚〃鍗曚腑鐨勫瘑绾� -->
-      <el-form-item label="瀵嗙骇" prop="securityLevel">
-          <el-select
-            v-model="form.securityLevel"
-            placeholder="璇烽�夋嫨瀵嗙骇"
-          >
-            <el-option
-              v-for="item in securityLevelOptions"
-              :key="item.value"
-              :label="item.label"
-              :value="item.value"
-            />
-          </el-select>
-        </el-form-item>
+
 
 
 
@@ -168,6 +228,10 @@
          <el-button type="primary" @click="resetForms">閲嶇疆</el-button>
 
           <el-button @click="cancel">鍙� 娑�</el-button>
+
+
+                    <el-button type="warning" @click="cancelAuthUser">閫�鍥炵鐞嗗憳</el-button>
+
         </div>
 
 
@@ -178,7 +242,7 @@
 
 
 
-      <el-row :gutter="10" class="mb8">
+      <el-row :gutter="12" class="mb8 fixed-row">
         <el-col :span="1.5">
           <el-button
             type="primary"
@@ -202,6 +266,17 @@
         </el-col>
         <el-col :span="1.5">
           <el-button
+            type="warning"
+            plain
+            icon="el-icon-download"
+            size="mini"
+            @click="handleExport"
+            v-hasPermi="['system:materials:list']"
+
+          >瀵煎嚭</el-button>
+        </el-col>
+        <el-col :span="1.5">
+          <el-button
             type="danger"
             plain
             icon="el-icon-delete"
@@ -211,15 +286,7 @@
             v-hasPermi="['system:materials:remove']"
           >鍒犻櫎</el-button>
         </el-col>
-        <el-col :span="1.5">
-          <el-button
-            type="warning"
-            plain
-            icon="el-icon-download"
-            size="mini"
-            @click="handleExport"
-            v-hasPermi="['system:materials:export']"
-          >瀵煎嚭</el-button>
+
           <el-col :span="1.5">
           <el-button
             type="success"
@@ -229,37 +296,93 @@
             @click="handleImport"
             v-hasPermi="['system:materials:edit']"
           >鍏ㄩ儴闄勪欢瀵煎叆</el-button>
+
+
             <!-- 鍦ㄦ寜閽笅鏂规坊鍔犲鍏ュ璇濇 -->
   <el-dialog title="鎵归噺瀵煎叆闄勪欢" :visible.sync="importDialogVisible" width="50%">
     <el-upload
       class="upload-demo"
       ref="upload"
       :action="uploadUrl"
-         :headers="headers"
-               :data="uploadParams"
+      :headers="headers"
+      :data="uploadParams"
       :on-success="handleSuccess"
       :on-error="handleError"
       :on-preview="handlePreview"
       :on-remove="handleRemove"
       :file-list="fileList"
+        :on-change="handleFileChange"
       :auto-upload="false"
       multiple
       accept=".jpg,.png"
     >
       <el-button slot="trigger" size="small" type="primary">閫夋嫨鏂囦欢</el-button>
       <el-button style="margin-left: 10px;" size="small" type="success" @click="submitUpload">涓婁紶鍒版湇鍔″櫒</el-button>
-      <div slot="tip" class="el-upload__tip">鍙笂浼燩DF/DOC/XLS/JPG绛夋牸寮忔枃浠讹紝鍗曚釜鏂囦欢涓嶈秴杩�50MB</div>
+      <el-button style="margin-left: 10px;" size="small" type="danger" @click="clearFileList">娓呯┖鍒楄〃</el-button>
+      <div slot="tip" class="el-upload__tip">鍙笂浼燡PG绛夋牸寮忔枃浠讹紝鍗曚釜鏂囦欢涓嶈秴杩�50MB</div>
     </el-upload>
   </el-dialog>
         </el-col>
-        
-        </el-col>
+        <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExportTemplate"
+          v-hasPermi="['system:materials:edit']"
+        >瀵煎叆妯℃澘涓嬭浇</el-button>
+      </el-col>
+
+        <el-col :span="1.5">
+
+        <el-upload
+          action=""
+
+          class="upload-demo"
+          :show-file-list="false"
+          :http-request="handleImportData"
+              accept=".xlsx,.xls"
+
+        >
+          <el-button size="mini"   type="primary"
+                     plain
+                     icon="el-icon-top">瀵煎叆</el-button>
+
+        </el-upload>
+      </el-col>
         <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
       </el-row>
 
       <el-table v-loading="loading" :data="materialsList" @selection-change="handleSelectionChange">
         <el-table-column type="selection" width="55" align="center" />
+        <el-table-column label="鎿嶄綔" align="center" width="160" class-name="small-padding ">
+              <template slot-scope="scope">
+                <el-button
+                  size="mini"
+                  type="text"
+                  icon="el-icon-edit"
+                  @click="handleUpdate(scope.row)"
+                  v-hasPermi="['system:materials:edit']"
+                >淇敼</el-button>
+        <!--        <el-button
+                  size="mini"
+                  type="text"
+                  icon="el-icon-edit"
+                  @click="handleUpdate(scope.row)"
+                  v-hasPermi="['system:materials:edit']"
+                >瀵煎叆闄勪欢</el-button> -->
+                <el-button
+                  size="mini"
+                  type="text"
+                  icon="el-icon-delete"
+                  @click="handleDelete(scope.row)"
+                  v-hasPermi="['system:materials:remove']"
+                >鍒犻櫎</el-button>
+              </template>
+            </el-table-column>
                 <el-table-column label="鏂囦欢鏉愭枡搴忓彿" align="center" prop="fileNumber" />
+        <el-table-column label="鏂囦欢缂栧彿" align="center" prop="documentNumber" />
 
         <el-table-column label="璐d换鑰�" align="center" prop="creator" />
         <el-table-column label="鏂囦欢棰樺悕" align="center" prop="title" />
@@ -268,15 +391,18 @@
             <span>{{ parseTime(scope.row.date, '{y}-{m}-{d}') }}</span>
           </template>
         </el-table-column>
-        <el-table-column label="椤靛彿" sortable align="center" prop="pageNumber"  /> 
-                <el-table-column label="椤垫" sortable align="center" prop="pageOrder"  /> 
+        <el-table-column label="椤靛彿" sortable align="center" prop="pageNumber"  />
+        <el-table-column label="澶囨敞" align="center" prop="remarks" />
+                <el-table-column label="椤垫" sortable align="center" prop="pageOrder"  />
 
-        <el-table-column label="鎵�澶勯樁娈�" sortable align="center" prop="stage" />
-        <el-table-column label="鍏紑灞炴��" sortable align="center" prop="publicity" />
+        <el-table-column label="鎵�澶勯樁娈�" sortable align="center" width="180" prop="stage" />
+        <el-table-column label="鍏紑灞炴��" sortable align="center" width="180" prop="publicity" />
         <el-table-column label="鏄惁涓洪檮鍥惧強闄勪欢" align="center" prop="isAttachment" />
 
         <el-table-column label="淇濈鏈熼檺" align="center" prop="retentionPeriod" />
         <el-table-column label="瀵嗙骇" align="center" prop="securityLevel" />
+        <el-table-column label="鏉愭枡绫诲瀷" align="fileStyle" prop="fileStyle" />
+
         <el-table-column label="鏄惁娑夊瘑鍙婃晱鎰熶俊鎭�" align="center" prop="isSensitive" />
         <el-table-column label="鏄惁娉ㄩ攢" align="center" prop="isCanceled" />
         <el-table-column label="鏍煎紡" align="center" prop="format" />
@@ -286,33 +412,10 @@
         <el-table-column label="瀹藉害" align="center" prop="width" />
         <el-table-column label="楂樺害" align="center" prop="height" />
         <el-table-column label="澶у皬" align="center" prop="fileSize" />
-        <el-table-column label="闄勪欢鍙婂巻鍙插彂闂彿" align="center" prop="attachmentHistoryNumbers" />
+        <el-table-column label="闄勪欢鍙婂巻鍙插彂鏂囧彿" align="center" prop="attachmentHistoryNumbers" />
 
-        <el-table-column label="鎿嶄綔" align="center" width="160" class-name="small-padding ">
-          <template slot-scope="scope">
-            <el-button
-              size="mini"
-              type="text"
-              icon="el-icon-edit"
-              @click="handleUpdate(scope.row)"
-              v-hasPermi="['system:materials:edit']"
-            >淇敼</el-button>
-            <el-button
-              size="mini"
-              type="text"
-              icon="el-icon-edit"
-              @click="handleUpdate(scope.row)"
-              v-hasPermi="['system:materials:edit']"
-            >瀵煎叆闄勪欢</el-button>
-            <el-button
-              size="mini"
-              type="text"
-              icon="el-icon-delete"
-              @click="handleDelete(scope.row)"
-              v-hasPermi="['system:materials:remove']"
-            >鍒犻櫎</el-button>
-          </template>
-        </el-table-column>
+
+
       </el-table>
 
       <pagination
@@ -322,40 +425,45 @@
         :limit.sync="queryParams.pageSize"
         @pagination="getList"
       />
+
+
+
       <el-dialog :title="title" :visible.sync="open" width="800px" append-to-body>
 
         <el-form ref="forms" :model="forms" :rules="rules" label-width="100px">
+
+
+          <el-form-item label="鏂囦欢缂栧彿" prop="documentNumber">
+              <el-input v-model="forms.documentNumber" placeholder="璇疯緭鍏ユ枃浠剁紪鍙�" />
+            </el-form-item>
            <el-row>
-           <el-col :span="8">
-               8<el-form-item label="璐d换鑰�" prop="creator">
+           <el-col :span="16">
+               <el-form-item label="璐d换鑰�" prop="creator">
                    <el-input v-model="forms.creator" placeholder="璇疯緭鍏ヨ矗浠昏��" />
                  </el-form-item>
            </el-col>
-               <el-col :span="8">
-                 <el-form-item label="鏂囦欢棰樺悕" prop="title">
-                   <el-input v-model="forms.title" placeholder="璇疯緭鍏ユ枃浠堕鍚�" />
-                 </el-form-item>
-           </el-col>
+
            </el-row>
+           <el-form-item label="鏂囦欢棰樺悕" prop="title">
+             <el-input v-model="forms.title" placeholder="璇疯緭鍏ユ枃浠堕鍚�" />
+           </el-form-item>
                  <el-form-item label="鏃ユ湡" prop="date">
+                  <el-input v-model="forms.date" placeholder="璇疯緭鍏ユ棩鏈� (鏍煎紡锛歽yyy-mm-dd)" style="width: 200px;" />
                    <!-- <el-date-picker clearable
                      v-model="forms.date"
-                type="date"
+                     type="date"
                      value-format="yyyy-MM-dd"
                      placeholder="璇烽�夋嫨鏃ユ湡">
                    </el-date-picker> -->
-
-                   <el-input v-model="forms.date" placeholder="璇疯緭鍏ユ棩鏈�" prop="date"/>
-             
                  </el-form-item>
                  <!-- <el-form-item label="椤垫" prop="pageOrder">
                    <el-input v-model="forms.pageOrder" placeholder="璇疯緭鍏ラ〉娆�" />
                  </el-form-item> -->
-    <el-form-item label="鏂囧瓧鏉愭枡" prop="fileStyle">
+    <el-form-item label="鏉愭枡绫诲瀷" prop="fileStyle">
           <el-select
             v-model="forms.fileStyle"
 
-            placeholder="璇烽�夋嫨鏂囧瓧鏉愭枡"
+            placeholder="璇烽�夋嫨鏉愭枡绫诲瀷"
             clearable
           >
             <el-option
@@ -366,8 +474,22 @@
             />
           </el-select>
         </el-form-item>
-
-
+     <el-form-item label="椤靛彿" prop="pageNumber">
+        <el-col :span="8">
+          <el-input
+            v-model.number="forms.pageNumber"
+            placeholder="璇疯緭鍏ラ〉鍙凤紙鏁板瓧绫诲瀷锛�"
+            clearable
+            type="number"
+            min="1"
+            oninput="value=value.replace(/[^\d]/g,'')"
+            @keyup.enter.native="handleQuery"
+          />
+        </el-col>
+      </el-form-item>
+       <el-form-item label="澶囨敞" prop="remarks">
+              <el-input v-model="forms.remarks" placeholder="璇疯緭鍏ュ娉�" />
+            </el-form-item>
                  <el-form-item label="鎵�澶勯樁娈�" prop="stage">
                  <el-select
                    v-model="forms.stage"
@@ -495,26 +617,43 @@
       <el-form-item label="鏂囦欢棰樺悕" prop="title">
         <el-input
           v-model="queryParams.title"
-          placeholder="璇疯緭鍏ユ枃浠堕鐩�"
+          placeholder="璇疯緭鍏ユ枃浠堕鍚�"
           clearable
           @keyup.enter.native="handleQuery"
+          :validate-event="false"
+          @blur="validateQueryTitle"
         />
       </el-form-item>
       <el-form-item label="鏃ユ湡" prop="date">
-        <el-date-picker clearable
+        <el-input v-model="queryParams.date" placeholder="璇疯緭鍏ユ棩鏈� (鏍煎紡锛歽yyy-mm-dd)" />
+        <div style="color: #999; font-size: 12px; margin-top: 4px;">璇疯緭鍏ユ纭殑鏃ユ湡鏍煎紡锛歽yyy-mm-dd</div>
+        <!-- <el-date-picker clearable
           v-model="queryParams.date"
           type="date"
           value-format="yyyy-MM-dd"
           placeholder="璇烽�夋嫨鏃ユ湡">
-        </el-date-picker>
+        </el-date-picker> -->
       </el-form-item>
-      <el-form-item label="椤靛彿" prop="pageNumber">
+      <el-form-item label="妗f鍙�" prop="fileNumber">
         <el-input
-          v-model="queryParams.pageNumber"
-          placeholder="璇疯緭鍏ラ〉鍙�"
+          v-model="queryParams.fileNumber"
+          placeholder="璇疯緭鍏ユ。妗堝彿锛堟敮鎸佽寖鍥存悳绱紝濡傦細B1.3-05-2024-0001~0003锛�"
           clearable
           @keyup.enter.native="handleQuery"
         />
+      </el-form-item>
+    <!--  <el-form-item label="椤靛彿" prop="pageNumber">
+        <el-col :span="8">
+          <el-input
+            v-model.number="queryParams.pageNumber"
+            placeholder="璇疯緭鍏ラ〉鍙凤紙鏁板瓧绫诲瀷锛�"
+            clearable
+            type="number"
+            min="1"
+            oninput="value=value.replace(/[^\d]/g,'')"
+            @keyup.enter.native="handleQuery"
+          />
+        </el-col>
       </el-form-item>
       <el-form-item label="椤垫" prop="pageOrder">
         <el-input
@@ -523,7 +662,7 @@
           clearable
           @keyup.enter.native="handleQuery"
         />
-      </el-form-item>
+      </el-form-item> -->
      <el-form-item label="鏂囧瓧鏉愭枡" prop="fileStyle">
           <el-select
             v-model="queryParams.fileStyle"
@@ -657,19 +796,27 @@
   </template>
 
   <script>
-  import { listMaterials, getMaterials, delMaterials, addMaterials, updateMaterials } from "@/api/system/materials"
+  import { getFileCount,islegal, listMaterials, enload, getMaterials, delMaterials, addMaterials, updateMaterials } from "@/api/system/materials"
 import { getToken } from '@/utils/auth'
+import store from '@/store'
+import { updateStatusById } from "@/api/system/records"
 
+import {delArchiverecordstouserByReIdAndUid} from "@/api/system/archiverecordstouser"
   export default {
     name: "Materials",
     data() {
       return {
+        // 璁板綍鍏冪礌鍒濆浣嶇疆鍜岀姸鎬�
+  originalOffsetLeft: 0,
+        originalWidth: 0,
+            placeholderEl: null,
+
        importDialogVisible: false,
       fileList: [],
-      uploadUrl:  process.env.VUE_APP_BASE_API +'/system/materials/upload', // 鏇挎崲涓哄疄闄呯殑涓婁紶鎺ュ彛
+      uploadUrl:  process.env.VUE_APP_BASE_API +'/system/materials/upload/'+this.recordId, // 鏇挎崲涓哄疄闄呯殑涓婁紶鎺ュ彛
            headers: {
         Authorization: 'Bearer ' + getToken()
-      },     
+      },
       uploadParams: {
         type: 'material' // 鑷畾涔変笂浼犵被鍨�
       },
@@ -684,7 +831,10 @@
       // 娣诲姞瀵嗙骇閫夐」
         securityLevelOptions: [
           { value: '绉樺瘑', label: '绉樺瘑' },
-          { value: '鏅��', label: '鏅��' }
+          { value: '鏅��', label: '鏅��' },
+           { value: '璇ラ〉鍙﹀瓨', label: '璇ラ〉鍙﹀瓨' },
+          { value: '鍐呴儴鐢ㄩ��', label: '鍐呴儴鐢ㄩ��' },
+          { value: '鍐呴儴鐢ㄥ浘', label: '鍐呴儴鐢ㄥ浘' },
         ],
           // 娣诲姞淇濈鏈熼檺閫夐」
           retentionPeriodOptions: [
@@ -730,6 +880,13 @@
         materialsList: [],
         // 寮瑰嚭灞傛爣棰�
         title: "",
+        // 鏂囦欢棰樺悕鎼滅储鐩稿叧
+        titleSuggestions: [], // 鍖归厤鐨勬枃浠堕鍚嶅缓璁垪琛�
+        showTitleSuggestions: false, // 鏄惁鏄剧ず寤鸿妗�
+        titleSearchTimer: null, // 闃叉姈瀹氭椂鍣�
+        creatorSuggestions: [], // 鍖归厤鐨勮矗浠讳汉寤鸿鍒楄〃
+        showCreatorSuggestions: false, // 鏄惁鏄剧ず璐d换浜哄缓璁
+        creatorSearchTimer: null, // 璐d换浜烘煡璇㈤槻鎶栧畾鏃跺櫒
         // 鏄惁鏄剧ず寮瑰嚭灞�
         open: false,
         titles: "",
@@ -774,30 +931,78 @@
         // 琛ㄥ崟鏍¢獙
         rules: {
           creator: [
-            { required: true, message: "鍒涘缓鑰呬笉鑳戒负绌�", trigger: "blur" }
+           // { required: true, message: "鍒涘缓鑰呬笉鑳戒负绌�", trigger: "blur" },
+            { max: 85, message: "鏈�澶ч暱搴︿负85涓瓧绗�", trigger: "blur" }
           ],
           title: [
-            { required: true, message: "妗堝嵎棰樺悕涓嶈兘涓虹┖", trigger: "blur" }
+            { required: true, message: "妗堝嵎棰樺悕涓嶈兘涓虹┖", trigger: "blur" },
+             { pattern: /^[^\\/:*?"<>涓╙+$/, message: "鏂囦欢鍚嶄笉鑳藉寘鍚� \\\:*?<>涓� 绛夌壒娈婂瓧绗�", trigger: "blur" },
+            { max: 85, message: "鏈�澶ч暱搴︿负85涓瓧绗�", trigger: "blur" }
           ],
           date: [
-            { required: true, message: "鏃ユ湡涓嶈兘涓虹┖", trigger: "blur" }
+          //  { required: true, message: "鏃ユ湡涓嶈兘涓虹┖", trigger: "blur" },
+            { pattern: /^\d{4}-\d{2}-\d{2}$/, message: "鏃ユ湡鏍煎紡蹇呴』涓簓yyy-mm-dd", trigger: "blur" },
+            { max: 85, message: "鏈�澶ч暱搴︿负85涓瓧绗�", trigger: "blur" }
           ],
+          pageNumber: [
+            { required: true, message: "椤靛彿涓嶈兘涓虹┖", trigger: "blur" },
+            { type: 'number', message: '椤靛彿蹇呴』涓烘暟瀛楃被鍨�', trigger: ['blur', 'change'] },
+            { pattern: /^[1-9]\d*$/, message: '璇疯緭鍏ュぇ浜�0鐨勬鏁存暟', trigger: 'blur' },
+            // { max: 85, message: "鏈�澶ч暱搴︿负85涓瓧绗�", trigger: "blur" }
+          ],
+          stage: [
+            { required: true, message: "鎵�澶勯樁娈典笉鑳戒负绌�", trigger: "change" },
+            { max: 85, message: "鏈�澶ч暱搴︿负85涓瓧绗�", trigger: "blur" }
+          ],
+          fileStyle: [
+            { required: true, message: "鏉愭枡绫诲瀷涓嶈兘涓虹┖", trigger: "change" },
+            { max: 85, message: "鏈�澶ч暱搴︿负85涓瓧绗�", trigger: "blur" }
+          ],
+          isAttachment: [
+            { required: true, message: "鏄惁涓洪檮浠朵笉鑳戒负绌�", trigger: "change" },
+            { max: 85, message: "鏈�澶ч暱搴︿负85涓瓧绗�", trigger: "blur" }
+          ],
+          retentionPeriod: [
+            { required: true, message: "淇濈鏈熼檺涓嶈兘涓虹┖", trigger: "change" },
+            { max: 85, message: "鏈�澶ч暱搴︿负85涓瓧绗�", trigger: "blur" }
+          ],
+          isSensitive: [
+            { required: true, message: "鏄惁鏁忔劅涓嶈兘涓虹┖", trigger: "change" },
+            { max: 85, message: "鏈�澶ч暱搴︿负85涓瓧绗�", trigger: "blur" }
+          ],
+          isCanceled: [
+            { required: true, message: "鏄惁娉ㄩ攢涓嶈兘涓虹┖", trigger: "change" },
+            { max: 85, message: "鏈�澶ч暱搴︿负85涓瓧绗�", trigger: "blur" }
+          ]
         }
       }
     },
+
+
+
    mounted() {
+     // 娣诲姞婊氬姩浜嬩欢鐩戝惉
+     window.addEventListener('scroll', this.handleScroll);
     // 鏀逛负鐩戝惉keydown浜嬩欢
     document.addEventListener('keydown', this.handleKeyDown)
   },
   beforeDestroy() {
+    // 绉婚櫎婊氬姩浜嬩欢鐩戝惉
+
     document.removeEventListener('keydown', this.handleKeyDown)
+    // 绉婚櫎婊氬姩浜嬩欢鐩戝惉
+    window.removeEventListener('scroll', this.handleScroll);
+    // 娓呯悊鍗犱綅绗�
+    if (this.placeholderEl && this.placeholderEl.parentNode) {
+      this.placeholderEl.parentNode.removeChild(this.placeholderEl);
+    }
   },
     created() {
       //const roleId = this.$route.params && this.$route.params.roleId
       const recordId = this.$route.params && this.$route.params.recordId
       //alert(recordId)
       this.recordId = recordId;
-
+      this.uploadUrl = process.env.VUE_APP_BASE_API +'/system/materials/upload/'+this.recordId
 // alert('Bearer ' + getToken())
       this.reset()
       this.form.securityLevel = '鏅��' // 璁剧疆瀵硅瘽妗嗚〃鍗曢粯璁ゅ��
@@ -827,8 +1032,10 @@
   this.$refs.upload.clearFiles();
   // 鍏抽棴涓婁紶瀵硅瘽妗�
   this.importDialogVisible = false;
-  // 鍒锋柊鍒楄〃鏁版嵁
-  this.getList();        // 杩欓噷鍙互璋冪敤鎺ュ彛鍏宠仈涓婁紶鐨勬枃浠跺拰褰撳墠璁板綍
+        // 鍒锋柊鍒楄〃鏁版嵁
+        this.getList();        // 杩欓噷鍙互璋冪敤鎺ュ彛鍏宠仈涓婁紶鐨勬枃浠跺拰褰撳墠璁板綍
+        //鏇存柊妗f鐨勭姸鎬�
+
       } else {
         // alert(234)
         console.log(response)
@@ -847,9 +1054,47 @@
     handlePreview(file) {
       console.log(file)
     },
+     handleFileChange(file, fileList) {
+    console.log('褰撳墠鏂囦欢鍒楄〃:', fileList);
+    this.fileList = fileList;
+  },
     // 鎻愪氦涓婁紶
     submitUpload() {
-      this.$refs.upload.submit()
+      // 鑾峰彇褰撳墠閫夋嫨鐨勬枃浠舵暟閲�
+      const fileCount = this.fileList.length
+      if (fileCount === 0) {
+        this.$modal.msgWarning('璇峰厛閫夋嫨鏂囦欢鍐嶄笂浼�')
+        return
+      }
+     // alert(this.recordId)
+
+
+      //鍒ゆ柇椤靛彿涓庝笂浼犱笂浼犵殑鏂囦欢鐨勯〉鍙锋槸涓嶆槸涓�涓�瀵瑰簲鐨�
+     islegal(this.recordId).then(response => {
+       console.log(response.data)
+       var res = response.data.res
+       //alert(response.data.total)
+       if(fileCount!==response.data.total)
+       {
+         this.$modal.msgWarning('璇烽�夋嫨涓庤褰曟暟涓�鑷寸殑鏂囦欢')
+         return
+       }
+       if(res)
+       {
+         // 鎵ц涓婁紶
+           this.$refs.upload.submit()
+           this.getList()
+       }
+       else
+       {
+         this.$modal.msgError("椤靛彿涓嶈繛缁紝璇蜂慨鏀逛负杩炵画姝g‘鐨勯〉鍙凤紒")
+       }
+     })
+
+    },
+    clearFileList() {
+      this.fileList = [];
+      this.$modal.msgSuccess('宸叉竻绌轰笂浼犲垪琛�');
     },
           handleKeyDown(e) {
       // 鍦╧eydown浜嬩欢涓洿鏃╁湴闃绘榛樿琛屼负
@@ -868,11 +1113,30 @@
     e.preventDefault();
     this.resetForms();
   }
+  if ((e.ctrlKey || e.metaKey) && e.key === 'w') {
+    e.preventDefault();
+    this.closeCurrentTab();
+  }
     },
       /** 鏌ヨ銆愯濉啓鍔熻兘鍚嶇О銆戝垪琛� */
       getList() {
         this.loading = true
-        listMaterials(this.queryParams).then(response => {
+
+        // 澶勭悊妗f鍙锋悳绱㈤�昏緫锛屽寘鎷寖鍥存悳绱�
+        const queryParams = { ...this.queryParams }
+
+        // 妫�鏌ユ槸鍚﹀寘鍚寖鍥存悳绱㈢鍙�
+        if (queryParams.fileNumber && queryParams.fileNumber.includes('~')) {
+          const rangeParts = queryParams.fileNumber.split('~')
+          if (rangeParts.length === 2) {
+            // 瑙f瀽鑼冨洿鎼滅储鍙傛暟
+            // 淇濈暀鍘熷fileNumber鐢ㄤ簬鍏朵粬澶勭悊
+            queryParams.fileNumberStart = rangeParts[0].trim()
+            queryParams.fileNumberEnd = rangeParts[1].trim()
+          }
+        }
+
+        listMaterials(queryParams).then(response => {
           console.log(response)
           this.materialsList = response.data.data
           this.total = response.data.total
@@ -915,6 +1179,122 @@
         }
         this.resetForm("forms")
       },
+      // 澶勭悊鏂囦欢棰樺悕杈撳叆浜嬩欢
+      handleTitleInput() {
+        // 娓呴櫎涔嬪墠鐨勫畾鏃跺櫒锛堥槻鎶栵級
+        if (this.titleSearchTimer) {
+          clearTimeout(this.titleSearchTimer);
+        }
+
+        // 褰撹緭鍏ユ涓虹┖鏃讹紝娓呯┖寤鸿鍒楄〃
+        if (!this.form.title.trim()) {
+          this.titleSuggestions = [];
+          return;
+        }
+
+        // 璁剧疆鏂扮殑瀹氭椂鍣紝寤惰繜鎵ц鏌ヨ
+        this.titleSearchTimer = setTimeout(() => {
+          this.searchTitleSuggestions();
+        }, 300);
+      },
+
+      // 鎼滅储鏂囦欢棰樺悕寤鸿
+      searchTitleSuggestions() {
+        // 浣跨敤鐜版湁鐨刲istMaterials API锛屼紶鍏itle浣滀负鏌ヨ鍙傛暟
+        listMaterials(
+       {
+          title: this.form.title,
+          pageSize: 10 // 闄愬埗杩斿洖鏁伴噺
+        }).then(response => {
+          console.log(response.data.data)
+        //  alert(23)
+          // 鎻愬彇骞跺幓閲峵itle瀛楁
+          const titles = response.data.data.map(item => item.title);
+          // 鍘婚噸澶勭悊
+          this.titleSuggestions = [...new Set(titles)];
+          // 鏄剧ず寤鸿妗�
+          this.showTitleSuggestions = true;
+        }).catch(() => {
+          // 閿欒澶勭悊
+          this.titleSuggestions = [];
+        });
+      },
+
+      // 澶勭悊澶辩劍浜嬩欢
+      handleTitleBlur() {
+        // 寤惰繜闅愯棌锛屼互渚垮彲浠ョ偣鍑婚�夋嫨寤鸿椤�
+        setTimeout(() => {
+          this.showTitleSuggestions = false;
+        }, 200);
+      },
+
+      // 閫夋嫨寤鸿椤�
+      selectTitleSuggestion(title) {
+        this.form.title = title;
+        this.showTitleSuggestions = false;
+      },
+
+      // 澶勭悊璐d换浜鸿緭鍏ヤ簨浠�
+      handleCreatorInput() {
+        // 娓呴櫎涔嬪墠鐨勫畾鏃跺櫒锛堥槻鎶栵級
+        if (this.creatorSearchTimer) {
+          clearTimeout(this.creatorSearchTimer);
+        }
+
+        // 褰撹緭鍏ユ涓虹┖鏃讹紝娓呯┖寤鸿鍒楄〃
+        if (!this.form.creator.trim()) {
+          this.creatorSuggestions = [];
+          return;
+        }
+
+        // 璁剧疆鏂扮殑瀹氭椂鍣紝寤惰繜鎵ц鏌ヨ
+        this.creatorSearchTimer = setTimeout(() => {
+          this.searchCreatorSuggestions();
+        }, 300);
+      },
+
+      // 鎼滅储璐d换浜哄缓璁�
+      searchCreatorSuggestions() {
+        // 浣跨敤鐜版湁鐨刲istMaterials API锛屼紶鍏reator浣滀负鏌ヨ鍙傛暟
+        listMaterials(
+        {
+          creator: this.form.creator,
+          pageSize: 10 // 闄愬埗杩斿洖鏁伴噺
+        }).then(response => {
+          // 鎻愬彇骞跺幓閲峜reator瀛楁
+          const creators = response.data.data.map(item => item.creator).filter(Boolean);
+          // 鍘婚噸澶勭悊
+          this.creatorSuggestions = [...new Set(creators)];
+          // 鏄剧ず寤鸿妗�
+          this.showCreatorSuggestions = true;
+        }).catch(() => {
+          // 閿欒澶勭悊
+          this.creatorSuggestions = [];
+        });
+      },
+
+      // 澶勭悊璐d换浜鸿緭鍏ユ澶辩劍浜嬩欢
+      handleCreatorBlur() {
+        // 寤惰繜闅愯棌锛屼互渚垮彲浠ョ偣鍑婚�夋嫨寤鸿椤�
+        setTimeout(() => {
+          this.showCreatorSuggestions = false;
+        }, 200);
+      },
+
+      // 閫夋嫨璐d换浜哄缓璁」
+      selectCreatorSuggestion(creator) {
+        this.form.creator = creator;
+        this.showCreatorSuggestions = false;
+      },
+
+      // 澶勭悊鏉愭枡绫诲瀷鍙樺寲
+      handleFileStyleChange(value) {
+        // 褰撻�夋嫨'鍏朵粬鏉愭枡'鏃讹紝娓呯┖椤电爜瀛楁
+        if (value === '鍏朵粬鏉愭枡') {
+          this.form.pageNumber = null;
+        }
+      },
+
       // 琛ㄥ崟閲嶇疆
       reset() {
         this.form = {
@@ -947,8 +1327,24 @@
         }
         this.resetForm("form")
       },
+
+      // 楠岃瘉鏌ヨ琛ㄥ崟涓殑鏂囦欢棰樺悕
+      validateQueryTitle() {
+        const illegalCharsPattern = /[\\/:*?<>涓╙/;
+        if (this.queryParams.title && illegalCharsPattern.test(this.queryParams.title)) {
+          this.$message.error("鏂囦欢鍚嶄笉鑳藉寘鍚� \\:/:*?<>涓� 绛夌壒娈婂瓧绗�");
+          this.queryParams.title = this.queryParams.title.replace(illegalCharsPattern, '');
+        }
+      },
       /** 鎼滅储鎸夐挳鎿嶄綔 */
       handleQuery() {
+        // 鎼滅储鍓嶆牎楠屾枃浠堕鍚�
+        const illegalCharsPattern = /[\\/:*?<>涓╙/;
+        if (this.queryParams.title && illegalCharsPattern.test(this.queryParams.title)) {
+          this.$message.error("鏂囦欢鍚嶄笉鑳藉寘鍚� \\:/:*?<>涓� 绛夌壒娈婂瓧绗�");
+          this.queryParams.title = this.queryParams.title.replace(illegalCharsPattern, '');
+          return; // 闃绘鎼滅储锛岀洿鍒扮敤鎴蜂慨姝h緭鍏�
+        }
         this.queryParams.pageNum = 1
         this.getList()
       },
@@ -980,25 +1376,87 @@
         })
       },
       resetForms()
-      {
+    {
    this.reset()
-          this.form.securityLevel = '鏅��' // 璁剧疆瀵硅瘽妗嗚〃鍗曢粯璁ゅ��
-          this.form.isSensitive = '鍚�' // 璁剧疆瀵硅瘽妗嗚〃鍗曢粯璁ゅ��
-          this.form.isCanceled = '鍚�' // 璁剧疆瀵硅瘽妗嗚〃鍗曢粯璁ゅ��
-          this.form.isAttachment = '鍚�' // 璁剧疆瀵硅瘽妗嗚〃鍗曢粯璁ゅ��
-          this.form.isDiagram = '鍚�' // 璁剧疆瀵硅瘽妗嗚〃鍗曢粯璁ゅ��
-          this.form.retentionPeriod = '姘镐箙' // 璁剧疆瀵硅瘽妗嗚〃鍗曢粯璁ゅ��
-      },
+          this.form.securityLevel = '鏅��'
+          this.form.isSensitive = '鍚�'
+          this.form.isCanceled = '鍚�'
+          this.form.isAttachment = '鍚�'
+          this.form.isDiagram = '鍚�'
+          this.form.retentionPeriod = '姘镐箙'
+    },
+    closeCurrentTab() {
+      this.$store.dispatch('tagsView/delView', this.$route)
+      this.$router.push('/archiveManager/infoManager')
+    },
       submitForm()
       {
         console.log(this.form)
         this.form.recordId = this.recordId
         console.log("==============+++++++++++++++============")
+
+        // 淇濆瓨褰撳墠琛ㄥ崟涓渶瑕佷繚鐣欑殑瀛楁鍊�
+        const preservedValues = {
+          documentNumber: this.form.documentNumber,
+          creator: this.form.creator,
+          title: this.form.title,
+          date: this.form.date,
+          pageNumber: this.form.pageNumber,
+          remarks: this.form.remarks,
+          stage: this.form.stage // 鎵�澶勯樁娈典繚鎸佽窡涓婁竴鏉′竴鑷�
+        };
+        this.$refs.form.validate(valid => {
+        if (valid) {
         addMaterials(this.form).then(response => {
           this.$modal.msgSuccess("鏂板鎴愬姛")
-        //  this.opens = false
-       
+
+          // 鍒涘缓鏂拌〃鍗曪紝淇濈暀鐗瑰畾瀛楁锛岄噸缃叾浠栧瓧娈�
+          this.form = {
+            materialId: null,
+            recordId: this.recordId,
+            // 淇濈暀鐨勫瓧娈�
+            documentNumber: preservedValues.documentNumber,
+            creator: preservedValues.creator,
+            title: preservedValues.title,
+            date: preservedValues.date,
+            pageNumber: preservedValues.pageNumber,
+            remarks: preservedValues.remarks,
+            stage: preservedValues.stage,
+            // 閲嶇疆涓虹┖鐨勫瓧娈�
+            publicity: null,
+            // 閲嶇疆涓洪粯璁ゅ�肩殑瀛楁
+            fileStyle: '鏂囧瓧鏉愭枡', // 鏉愭枡绫诲瀷榛樿涓烘枃瀛楁潗鏂�
+            securityLevel: '鏅��', // 瀵嗙骇榛樿涓烘櫘閫�
+            isAttachment: '鍚�', // 鏄惁涓洪檮浠堕粯璁や负鍚�
+            isSensitive: '鍚�', // 鏄惁鏁忔劅榛樿涓哄惁
+            isCanceled: '鍚�', // 鏄惁娉ㄩ攢榛樿涓哄惁
+            // 鍏朵粬闇�瑕侀噸缃殑瀛楁
+            isDiagram: '鍚�',
+            retentionPeriod: '姘镐箙',
+            format: null,
+            sizeType: null,
+            horizontalResolution: null,
+            verticalResolution: null,
+            width: null,
+            height: null,
+            fileSize: null,
+            attachmentHistoryNumbers: null,
+            createdAt: null,
+            updatedAt: null
+          };
+
+          // 淇濆瓨鎴愬姛鍚庯紝鍏夋爣璺冲洖鏂囦欢缂栧彿杈撳叆妗�
+          this.$nextTick(() => {
+            this.$refs.documentNumberInput.focus();
+          });
           this.getList()
+        })
+        }
+        else
+        {
+          this.$message.error('璇峰~鍐欐墍鏈夊繀濉瓧娈�');
+
+        }
         })
       },
       /** 鎻愪氦鎸夐挳 */
@@ -1008,6 +1466,10 @@
             if (this.forms.materialId != null) {
               updateMaterials(this.forms).then(response => {
                 this.$modal.msgSuccess("淇敼鎴愬姛")
+                // 淇敼鎴愬姛鍚庯紝鍏夋爣璺冲洖鏂囦欢缂栧彿杈撳叆妗�
+                this.$nextTick(() => {
+                  this.$refs.documentNumberInput.focus();
+                });
                 this.open = false
                 this.getList()
               })
@@ -1027,19 +1489,201 @@
           this.$modal.msgSuccess("鍒犻櫎鎴愬姛")
         }).catch(() => {})
       },
-      /** 瀵煎嚭鎸夐挳鎿嶄綔 */
+      /** 瀵煎嚭鎸夐挳鎿嶄綔 - 鏀寔瀵煎嚭閫変腑琛屾垨鍏ㄩ儴鏁版嵁 */
       handleExport() {
-        this.download('system/materials/export', {
-          ...this.queryParams
-        }, `materials_${new Date().getTime()}.xlsx`)
-      }
+        // 鍒ゆ柇鏄惁鏈夐�変腑鐨勮
+        if (this.ids && this.ids.length > 0) {
+          // 鏄剧ず瀵煎嚭閫変腑琛岀殑鎻愮ず
+          this.$message.info(`姝e湪瀵煎嚭${this.ids.length}鏉¢�変腑鐨勬暟鎹�...`);
+          // 瀵煎嚭閫変腑鐨勮鏁版嵁
+          this.download('system/materials/export', {
+            ids: this.ids.join(','),
+         //   exportType: 'selected'
+          }, `materials_selected_${new Date().getTime()}.xlsx`)
+        } else {
+          // 鏄剧ず瀵煎嚭鍏ㄩ儴鏁版嵁鐨勬彁绀�
+          this.$message.info('姝e湪瀵煎嚭绗﹀悎褰撳墠鏌ヨ鏉′欢鐨勬墍鏈夋暟鎹�...');
+          // 娌℃湁閫変腑琛屾椂锛屽鍑哄綋鍓嶆煡璇㈡潯浠剁殑鏁版嵁
+          this.download('system/materials/export', {
+            ...this.queryParams
+          }, `materials_${new Date().getTime()}.xlsx`)
+        }
+      },
+
+       /** 瀵煎叆妯℃澘涓嬭浇鎿嶄綔*/
+    handleExportTemplate()
+    {
+      this.download('/system/materials/model', {
+
+      }, `materials_${new Date().getTime()}.xlsx`)
+    },
+       /** 瀵煎叆鎿嶄綔*/
+    async handleImportData({file}){
+   // 妫�鏌ユ枃浠剁被鍨嬫槸鍚︿负xlsx
+  // if (!params.file.name.endsWith('.xlsx')) {
+  //   this.$message.error('璇蜂笂浼�.xlsx鏍煎紡鐨勬枃浠�');
+  //   return;
+  // }
+  const formData = new FormData();
+  formData.append('file', file);
+  formData.append('recordId', this.recordId)
+  // alert(this.recordId)
+  console.log(file)
+
+  // 鏄剧ず鍔犺浇涓姸鎬�
+  const loading = this.$loading({
+    lock: true,
+    text: '涓婁紶涓�...',
+    spinner: 'el-icon-loading',
+    background: 'rgba(0, 0, 0, 0.7)'
+  });
+
+  enload(formData, {
+    headers: {
+      'Content-Type': 'multipart/form-data'
     }
+  }).then(response => {
+    loading.close();
+    this.$message.success('瀵煎叆鎴愬姛');
+    this.getList();
+  }).catch(error => {
+    loading.close();
+    this.$message.error('瀵煎叆澶辫触: ' + (error.message || '鏈煡閿欒'));
+  });
+
+    },
+     /** 鍙栨秷鎺堟潈鎸夐挳鎿嶄綔 */
+    cancelAuthUser(row) {
+      const recordId =  this.recordId
+      var userId = store.state.user.id
+      var _this = this
+      // alert(userId)
+      // alert(userId)
+      // alert(this.queryParams.archiveRecordsId)
+      // alert(row.sysUser.userName)
+      this.$modal.confirm('纭瑕佸彇娑堣鐢ㄦ埛鐨�"' + '' + '"鎺堟潈鍚楋紵').then(function() {
+        return delArchiverecordstouserByReIdAndUid({  recordId: recordId, userId: userId   })
+      }).then(() => {
+      //  this.getList()
+      //淇敼妗堝嵎鐨勭姸鎬�
+  //  var id = row.id
+      var status = '鏈笂浼犻檮浠�'
+      updateStatusById(status, recordId).then(response=>{
+      //  this.$modal.msgSuccess("鎻愪氦鎴愬姛")
+      //  this.getList()
+      _this.$store.dispatch('tagsView/delView', this.$route);
+        _this.$router.push('/archiveManager/infoManager')
+        _this.$modal.msgSuccess("鍙栨秷鎺堟潈鎴愬姛")
+      })
+
+      }).catch(() => {})
+    },
+
+    // 婊氬姩浜嬩欢澶勭悊
+    handleScroll() {
+      const fixedRow = document.querySelector('.fixed-row');
+      if (!fixedRow) return;
+
+      // 鑾峰彇鍏冪礌褰撳墠浣嶇疆淇℃伅
+      const rect = fixedRow.getBoundingClientRect();
+      const parentRect = fixedRow.parentNode.getBoundingClientRect();
+
+      // 妫�鏌ュ厓绱犳槸鍚﹀簲璇ヨ繘鍏ユ偓娴姸鎬�
+      if (rect.top <= 0) {
+        // 鍙湪涓嶅湪floating鐘舵�佹椂娣诲姞锛岄伩鍏嶉噸澶嶆搷浣�
+        if (!fixedRow.classList.contains('floating')) {
+          // 璁板綍鍏冪礌鍘熷鐨勫乏鍋忕Щ閲忥紙鐩稿浜庣埗瀹瑰櫒锛�
+          this.originalOffsetLeft = rect.left - parentRect.left;
+          // 璁板綍鍏冪礌鐨勫師濮嬪搴�
+          this.originalWidth = rect.width;
+
+          // 娣诲姞floating绫伙紝浣垮厓绱犲浐瀹氬湪椤堕儴
+          fixedRow.classList.add('floating');
+          // 璁剧疆鍥哄畾浣嶇疆鏃剁殑鏍峰紡锛屼繚鎸佷笌鍘熷甯冨眬涓�鑷�
+          fixedRow.style.left = this.originalOffsetLeft + 'px';
+          fixedRow.style.width = this.originalWidth + 'px';
+
+          // 娣诲姞涓存椂鍗犱綅绗︼紝闃叉椤甸潰甯冨眬璺冲姩
+          if (!this.placeholderEl) {
+            this.placeholderEl = document.createElement('div');
+            this.placeholderEl.style.height = rect.height + 'px';
+            this.placeholderEl.style.marginBottom = '10px';
+            this.placeholderEl.style.boxSizing = 'border-box';
+            fixedRow.parentNode.insertBefore(this.placeholderEl, fixedRow.nextSibling);
+          }
+        }
+      } else {
+        // 褰撳厓绱犲洖鍒拌鍙i《閮ㄤ互涓婃椂锛岀Щ闄ゆ偓娴姸鎬侊紝鎭㈠鍒版枃妗f祦涓�
+        if (fixedRow.classList.contains('floating')) {
+          // 绉婚櫎floating绫�
+          fixedRow.classList.remove('floating');
+          // 閲嶇疆鏍峰紡锛岃娴忚鍣ㄤ娇鐢ㄥ師濮嬫牱寮�
+          fixedRow.style.left = '';
+          fixedRow.style.width = '';
+          // 绉婚櫎鍗犱綅绗︼紝璁╁厓绱犲洖鍒板師濮嬩綅缃�
+          if (this.placeholderEl && this.placeholderEl.parentNode) {
+            this.placeholderEl.parentNode.removeChild(this.placeholderEl);
+            this.placeholderEl = null;
+          }
+        }
+      }
+    },
+
+}
   }
-  </script>
+</script>
 <style scoped>
+.title-search-wrapper {
+        position: relative;
+        width: 100%;
+      }
+
+      .title-suggestions {
+        position: absolute;
+        top: 100%;
+        left: 0;
+        right: 0;
+        z-index: 1000;
+        background-color: #fff;
+        border: 1px solid #dcdfe6;
+        border-radius: 4px;
+        box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
+        max-height: 200px;
+        overflow-y: auto;
+        margin-top: 4px;
+      }
+
+      .suggestion-item {
+        padding: 10px 15px;
+        cursor: pointer;
+        transition: background-color 0.2s;
+      }
+
+      .suggestion-item:hover {
+        background-color: #f5f7fa;
+      }
+
 .title-border {
   border-bottom: 1px solid #dcdfe6;
   padding-bottom: 10px;
   margin-bottom: 20px;
 }
+.fixed-row {
+  position: static;
+  z-index: 1000;
+  background-color: #fff;
+  padding: 10px;
+  box-shadow: 0 2px 4px rgba(0,0,0,0.1);
+  margin-bottom: 10px;
+  box-sizing: border-box;
+}
+.fixed-row.floating {
+  position: fixed;
+  top: 0;
+  z-index: 2000;
+  padding: 10px;
+  margin-bottom: 0;
+  box-shadow: 0 2px 8px rgba(0,0,0,0.15);
+  background-color: #fff;
+}
 </style>

--
Gitblit v1.9.1