From fc98e676332302c4b835f8fa4ed42d72e177801f Mon Sep 17 00:00:00 2001
From: fei <791364011@qq.com>
Date: 星期二, 14 十月 2025 16:57:02 +0800
Subject: [PATCH] 增加了对应的代码

---
 src/views/archiveManager/archiveMaterial/index.vue |  244 ++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 194 insertions(+), 50 deletions(-)

diff --git a/src/views/archiveManager/archiveMaterial/index.vue b/src/views/archiveManager/archiveMaterial/index.vue
index b0b9a5c..83b9619 100644
--- a/src/views/archiveManager/archiveMaterial/index.vue
+++ b/src/views/archiveManager/archiveMaterial/index.vue
@@ -24,16 +24,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> -->
@@ -51,15 +44,16 @@
           </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="璇疯緭鍏ラ〉鍙�" 
+    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="stage">
@@ -168,6 +162,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 +176,7 @@
 
 
 
-      <el-row :gutter="10" class="mb8">
+      <el-row :gutter="12" class="mb8">
         <el-col :span="1.5">
           <el-button
             type="primary"
@@ -220,6 +218,7 @@
             @click="handleExport"
             v-hasPermi="['system:materials:export']"
           >瀵煎嚭</el-button>
+        </el-col>
           <el-col :span="1.5">
           <el-button
             type="success"
@@ -229,6 +228,8 @@
             @click="handleImport"
             v-hasPermi="['system:materials:edit']"
           >鍏ㄩ儴闄勪欢瀵煎叆</el-button>
+
+
             <!-- 鍦ㄦ寜閽笅鏂规坊鍔犲鍏ュ璇濇 -->
   <el-dialog title="鎵归噺瀵煎叆闄勪欢" :visible.sync="importDialogVisible" width="50%">
     <el-upload
@@ -242,18 +243,46 @@
       :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>
 
@@ -286,7 +315,7 @@
         <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">
@@ -327,7 +356,7 @@
         <el-form ref="forms" :model="forms" :rules="rules" label-width="100px">
            <el-row>
            <el-col :span="8">
-               8<el-form-item label="璐d换鑰�" prop="creator">
+               <el-form-item label="璐d换鑰�" prop="creator">
                    <el-input v-model="forms.creator" placeholder="璇疯緭鍏ヨ矗浠昏��" />
                  </el-form-item>
            </el-col>
@@ -338,15 +367,13 @@
            </el-col>
            </el-row>
                  <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="璇疯緭鍏ラ〉娆�" />
@@ -501,20 +528,27 @@
         />
       </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-input
-          v-model="queryParams.pageNumber"
-          placeholder="璇疯緭鍏ラ〉鍙�"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
+        <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
@@ -657,16 +691,19 @@
   </template>
 
   <script>
-  import { listMaterials, getMaterials, delMaterials, addMaterials, updateMaterials } from "@/api/system/materials"
+  import { 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 {
        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()
       },     
@@ -684,7 +721,9 @@
       // 娣诲姞瀵嗙骇閫夐」
         securityLevelOptions: [
           { value: '绉樺瘑', label: '绉樺瘑' },
-          { value: '鏅��', label: '鏅��' }
+          { value: '鏅��', label: '鏅��' },
+                    { value: '璇ラ〉鍙﹀瓨', label: '璇ラ〉鍙﹀瓨' }
+
         ],
           // 娣诲姞淇濈鏈熼檺閫夐」
           retentionPeriodOptions: [
@@ -780,8 +819,14 @@
             { required: true, message: "妗堝嵎棰樺悕涓嶈兘涓虹┖", 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" }
           ],
+          pageNumber: [
+            { required: true, message: "椤靛彿涓嶈兘涓虹┖", trigger: "blur" },
+            { type: 'number', message: '椤靛彿蹇呴』涓烘暟瀛楃被鍨�', trigger: ['blur', 'change'] },
+            { pattern: /^\d+$/, message: '璇疯緭鍏ユ鏁存暟', trigger: 'blur' }
+          ]
         }
       }
     },
@@ -797,7 +842,7 @@
       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 +872,10 @@
   this.$refs.upload.clearFiles();
   // 鍏抽棴涓婁紶瀵硅瘽妗�
   this.importDialogVisible = false;
-  // 鍒锋柊鍒楄〃鏁版嵁
-  this.getList();        // 杩欓噷鍙互璋冪敤鎺ュ彛鍏宠仈涓婁紶鐨勬枃浠跺拰褰撳墠璁板綍
+        // 鍒锋柊鍒楄〃鏁版嵁
+        this.getList();        // 杩欓噷鍙互璋冪敤鎺ュ彛鍏宠仈涓婁紶鐨勬枃浠跺拰褰撳墠璁板綍
+        //鏇存柊妗f鐨勭姸鎬�
+
       } else {
         // alert(234)
         console.log(response)
@@ -847,9 +894,29 @@
     handlePreview(file) {
       console.log(file)
     },
+     handleFileChange(file, fileList) {
+    console.log('褰撳墠鏂囦欢鍒楄〃:', fileList);
+    this.fileList = fileList;
+  },
     // 鎻愪氦涓婁紶
     submitUpload() {
+      // 鑾峰彇褰撳墠閫夋嫨鐨勬枃浠舵暟閲�
+      const fileCount = this.fileList.length
+      if (fileCount === 0) {
+        this.$modal.msgWarning('璇峰厛閫夋嫨鏂囦欢鍐嶄笂浼�')
+        return
+      }
+      if(fileCount!==this.total)
+      {
+        this.$modal.msgWarning('璇烽�夋嫨涓庤褰曟暟涓�鑷寸殑鏂囦欢')
+        return
+      }
+      // 鎵ц涓婁紶
       this.$refs.upload.submit()
+    },
+    clearFileList() {
+      this.fileList = [];
+      this.$modal.msgSuccess('宸叉竻绌轰笂浼犲垪琛�');
     },
           handleKeyDown(e) {
       // 鍦╧eydown浜嬩欢涓洿鏃╁湴闃绘榛樿琛屼负
@@ -867,6 +934,10 @@
   if ((e.ctrlKey || e.metaKey) && e.key === 'd') {
     e.preventDefault();
     this.resetForms();
+  }
+  if ((e.ctrlKey || e.metaKey) && e.key === 'w') {
+    e.preventDefault();
+    this.closeCurrentTab();
   }
     },
       /** 鏌ヨ銆愯濉啓鍔熻兘鍚嶇О銆戝垪琛� */
@@ -980,15 +1051,19 @@
         })
       },
       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)
@@ -1032,7 +1107,76 @@
         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(() => {})
+    },
     }
   }
   </script>

--
Gitblit v1.9.1