From 97667573dd1f176bccb9aa09c0bf71fbb16974e1 Mon Sep 17 00:00:00 2001
From: tian <3072314689@qq.com>
Date: 星期日, 28 九月 2025 18:19:43 +0800
Subject: [PATCH] 必选框

---
 src/views/archiveManager/index.vue |  369 ++++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 327 insertions(+), 42 deletions(-)

diff --git a/src/views/archiveManager/index.vue b/src/views/archiveManager/index.vue
index 940abd3..51f93be 100644
--- a/src/views/archiveManager/index.vue
+++ b/src/views/archiveManager/index.vue
@@ -126,6 +126,21 @@
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
+      <!-- 娣诲姞椤圭洰鍚嶇О鎼滅储妗� -->
+      <el-form-item label="椤圭洰鍚嶇О" prop="everyProjectName">
+        <el-select
+          v-model="queryParams.everyProjectName"
+          placeholder="璇烽�夋嫨椤圭洰鍚嶇О"
+          clearable
+        >
+          <el-option
+            v-for="item in projectOptions"
+            :key="item.value"
+            :label="item.label"
+            :value="item.value"
+          />
+        </el-select>
+      </el-form-item>
       <el-form-item label="椤圭洰缂栧彿" prop="projectNumber">
         <el-input
           v-model="queryParams.projectNumber"
@@ -215,6 +230,49 @@
           v-hasPermi="['system:records:export']"
         >瀵煎嚭</el-button>
       </el-col>
+
+          <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          @click="handleBatchSubmit"
+          v-hasPermi="['system:records:export']"
+        >鎵归噺鎻愪氦</el-button>
+      </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>
 
@@ -223,7 +281,9 @@
 <!--      <el-table-column label="${comment}" align="center" prop="id" /> -->
       <el-table-column label="妗f鍙�" align="center" prop="recordId" />
       <el-table-column label="鍙戞枃鍙�" align="center" prop="inquiryNumber" />
-      <el-table-column label="妗堝嵎棰樺悕" align="center" prop="caseTitle" />
+            <el-table-column label="椤圭洰鍚嶇О" align="center" prop="everyProjectName" />
+
+      <el-table-column label="妗堝嵎棰樺悕" align="center" prop="caseTitle" show-overflow-tooltip />
       <el-table-column label="鍏紑灞炴��" align="center" prop="publicAttribute" />
       <el-table-column label="缂栧埗鍗曚綅" align="center" prop="preparationUnit" />
       <el-table-column label="缂栧埗鏃ユ湡" align="center" prop="preparationDate" width="180">
@@ -244,6 +304,16 @@
       <el-table-column label="缂╁井鍙�" align="center" prop="microfilmNumber" />
       <el-table-column label="澶囨敞" align="center" prop="remarks" />
       <el-table-column label="鍘嗗彶鐩稿叧鍙戞枃鍙�" align="center" prop="historicalReferenceNumber" />
+     
+           <el-table-column label="鐘舵��" align="center" prop="recordStatus">
+  <template slot-scope="scope">
+    <el-button :type="scope.row.recordStatus === '鏈綍鍏�' ? 'danger' : 'success'" size="mini">
+      {{ scope.row.recordStatus }}
+    </el-button>
+  </template>
+</el-table-column>
+
+     
       <el-table-column label="鎿嶄綔" align="center" width="190" class-name="small-padding fixed-width">
         <template slot-scope="scope">
           <el-button
@@ -257,14 +327,20 @@
           >妗堝嵎璇︾粏淇℃伅</el-button>
 
           <el-button
-
-
             size="mini"
             type="text"
             icon="el-icon-edit"
             @click="handleCheck(scope.row)"
           >鏌ョ湅</el-button>
+    <el-button
+          v-if="userId!==1&&scope.row.ownData"
 
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleSubmit(scope.row)"
+            v-hasPermi="['system:records:edit']"
+          >鎻愪氦妗堝嵎</el-button>
           <el-button
           v-if="scope.row.ownData||userId===1"
 
@@ -322,7 +398,24 @@
       />
     </el-select>
   </el-col>
-  <el-col :span="6">
+
+
+     <el-col :span="6">
+            <el-select
+
+              v-model="form.recordZone"
+              placeholder="閫夋嫨鍦板尯"
+              @change="handleRecordTypeChange"
+              :disabled="userId!=1"              >
+              <el-option
+                v-for="item in zoneTypeOptions"
+                :key="item.value"
+                :label="item.label"
+                :value="item.value"
+              />
+            </el-select>
+          </el-col>
+  <el-col :span="4">
     <el-input
       v-model="form.recordYear"
       placeholder="杈撳叆骞翠唤"
@@ -332,7 +425,7 @@
       @input="generateRecordId"
     />
   </el-col>
-  <el-col :span="6">
+  <el-col :span="4">
     <el-input
       v-model="form.recordSeq"
       placeholder="鑷姩鐢熸垚"
@@ -342,7 +435,7 @@
 </el-row>
         </el-form-item>
         <el-form-item label="鍙戞枃鍙�" prop="inquiryNumber">
-          <el-input v-model="form.inquiryNumber" placeholder="璇疯緭鍏ュ彂闂彿" disabled/>
+          <el-input v-model="form.inquiryNumber" placeholder="璇疯緭鍏ュ彂鏂囧彿" disabled/>
         </el-form-item>
         <el-form-item label="寤鸿椤圭洰鍚嶇О" prop="projectName">
           <el-input v-model="form.projectName" placeholder="璇疯緭鍏ュ缓璁鹃」鐩悕绉�" disabled/>
@@ -411,12 +504,12 @@
     <!-- 娣诲姞鎴栦慨鏀规。妗堣褰曞璇濇 -->
     <el-dialog :title="title" :visible.sync="open" width="900px" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="120px">
-        <el-form-item label="妗f鍙�" >
+        <el-form-item label="妗f鍙�" prop="recordId">
 
         <el-row :gutter="8">
           <el-col :span="6">
             <el-select
-            
+
               v-model="form.recordType"
               placeholder="閫夋嫨妗f绫诲瀷"
               @change="handleRecordTypeChange"
@@ -429,36 +522,71 @@
               />
             </el-select>
           </el-col>
-          <el-col :span="6">
+
+
+            <el-col :span="6">
+            <el-select
+
+              v-model="form.recordZone"
+              placeholder="閫夋嫨鍦板尯"
+              @change="handleRecordTypeChange"
+              :disabled="userId!=1"              >
+              <el-option
+                v-for="item in zoneTypeOptions"
+                :key="item.value"
+                :label="item.label"
+                :value="item.value"
+              />
+            </el-select>
+          </el-col>
+          <el-col :span="4">
             <el-input
               v-model="form.recordYear"
+                            @input="generateRecordId"
+
               placeholder="杈撳叆骞翠唤"
-              @input="generateRecordId"
 :disabled="userId!=1"
             />
           </el-col>
-          <el-col :span="6">
+          <el-col :span="4">
             <el-input
               v-model="form.recordSeq"
-              placeholder="鑷姩鐢熸垚"
-              disabled
+              :disabled="userId!=1"
+              @input="generateRecordId"
+
+              placeholder="杈撳叆妗f搴忓彿"
             />
           </el-col>
         </el-row>
         </el-form-item>
         <el-form-item label="鍙戞枃鍙�" prop="inquiryNumber">
-          <el-input v-model="form.inquiryNumber" placeholder="璇疯緭鍏ュ彂闂彿"   :disabled="userId!=1"
+          <el-input v-model="form.inquiryNumber" placeholder="璇疯緭鍏ュ彂鏂囧彿"   :disabled="userId!=1"
           />
         </el-form-item>
-        <el-form-item label="寤鸿椤圭洰鍚嶇О" prop="projectName">
-          <el-input v-model="form.projectName" placeholder="璇疯緭鍏ュ缓璁鹃」鐩悕绉�" :disabled="userId!=1"/>
+        <el-form-item label="椤圭洰鍚嶇О" prop="everyProjectName">
+ <el-select
+    v-model="form.everyProjectName"
+    placeholder="璇烽�夋嫨椤圭洰鍚嶇О"
+
+    :disabled="userId!=1"
+  >
+    <el-option
+      v-for="item in projectOptions"
+      :key="item.value"
+      :label="item.label"
+      :value="item.value"
+    />
+  </el-select>
         </el-form-item>
+
+
+
         <div v-if="vis">
         <el-form-item label="妗堝嵎棰樺悕" prop="caseTitle">
-          <el-input v-model="form.caseTitle" placeholder="璇疯緭鍏ユ鍗烽鍚�" />
+          <el-input v-model="form.caseTitle" placeholder="鑷姩鐢熸垚" :readonly="true" />
         </el-form-item>
         <el-form-item label="鍏紑灞炴��" prop="publicAttribute">
-          
+
 
           <el-select
             v-model="form.publicAttribute"
@@ -473,7 +601,7 @@
             />
           </el-select>
         </el-form-item>
-       
+
         <el-form-item label="缂栧埗鍗曚綅" prop="preparationUnit">
           <el-input v-model="form.preparationUnit" placeholder="璇疯緭鍏ョ紪鍒跺崟浣�" />
         </el-form-item>
@@ -525,7 +653,10 @@
         <el-form-item label="寤鸿鍦板潃" prop="constructionAddress">
           <el-input v-model="form.constructionAddress" placeholder="璇疯緭鍏ュ缓璁惧湴鍧�" />
         </el-form-item>
-
+     <el-form-item label="寤鸿椤圭洰鍚嶇О" prop="projectName">
+      <el-input v-model="form.projectName" placeholder="璇疯緭鍏ュ缓璁鹃」鐩悕绉�" />
+          <!-- <el-input v-model="form.projectName" placeholder="璇疯緭鍏ュ缓璁鹃」鐩悕绉�" :disabled="userId!=1"/> -->
+        </el-form-item>
         <el-form-item label="椤圭洰缂栧彿" prop="projectNumber">
           <el-input v-model="form.projectNumber" placeholder="璇疯緭鍏ラ」鐩紪鍙�" />
         </el-form-item>
@@ -555,9 +686,10 @@
 </template>
 
 <script>
-import { listRecords,getMaxId, getRecords, delRecords, addRecords, updateRecords } from "@/api/system/records"
+import { batchSubmitRecords,updateStatusById,listRecords,getMaxId, getRecords, delRecords, addRecords, updateRecords } from "@/api/system/records"
 import { listAllCategory } from "@/api/system/category"
-
+import { listAllProjectName } from "@/api/system/projectName"
+import { listPlaceName, listAllPlaceName } from "@/api/system/placeName"
 export default {
   name: "Records",
   data() {
@@ -568,10 +700,14 @@
         { value: '鏅��', label: '鏅��' }
       ],
       maxId: 0,
-            // 妗f绫诲瀷閫夐」
-            recordTypeOptions: [],
-            // 淇濈鏈熼檺閫夐」
-            retentionPeriodOptions: [
+      // 椤圭洰鍚嶇О閫夐」
+      projectOptions: [],
+      // 妗f绫诲瀷閫夐」
+      recordTypeOptions: [],
+      //鍦板尯绫诲瀷
+      zoneTypeOptions: [],
+      // 淇濈鏈熼檺閫夐」
+      retentionPeriodOptions: [
         { value: "10骞�", label: "10骞�" },
         { value: "30骞�", label: "30骞�" },
         { value: "姘镐箙", label: "姘镐箙" }
@@ -609,6 +745,7 @@
         pageSize: 10,
         recordId: null,
         inquiryNumber: null,
+        everyProjectName: null,
         caseTitle: null,
         publicAttribute: null,
         preparationUnit: null,
@@ -637,23 +774,53 @@
           { required: true, message: "妗f鍙蜂笉鑳戒负绌�", trigger: "blur" }
         ],
         inquiryNumber: [
-          { required: true, message: "鍙戦棶鍙蜂笉鑳戒负绌�", trigger: "blur" }
+          { required: true, message: "鍙戞枃鍙蜂笉鑳戒负绌�", trigger: "blur" }
+        ],
+        everyProjectName: [
+          { required: true, message: "椤圭洰鍚嶇О涓嶈兘涓虹┖", trigger:  ['change', 'blur']}
+        ],
+        caseTitle: [
+          { required: true, message: "妗堝嵎棰樺悕涓嶈兘涓虹┖", trigger: "blur" }
+        ],
+        constructionUnit: [
+          { required: true, message: "寤鸿鍗曚綅涓嶈兘涓虹┖", trigger: "blur" }
         ],
         projectName: [
-          { required: true, message: "椤圭洰鍚嶇О涓嶈兘涓虹┖", trigger: "blur" }
-        ],
+          { required: true, message: "寤鸿椤圭洰鍚嶇О涓嶈兘涓虹┖", trigger: "blur" }
+        ]
       }
     }
   },
   created() {
-    this.getList()
+
     this.userId = this.$store.state.user.id;
 
 // 鑾峰彇鐢ㄦ埛瑙掕壊
-    this.getId()
+  //  this.getId()
     this.getRecordTypes()
-
-
+    this.getZoneOptions()
+    this.fetchProjectOptions()
+this.getList()
+  },
+  watch: {
+    'form.constructionUnit': {
+      handler() {
+        this.generateCaseTitle();
+      },
+      immediate: true
+    },
+    'form.constructionAddress': {
+      handler() {
+        this.generateCaseTitle();
+      },
+      immediate: true
+    },
+    'form.projectName': {
+      handler() {
+        this.generateCaseTitle();
+      },
+      immediate: true
+    }
   },
   methods: {
     getId()
@@ -662,12 +829,55 @@
       getMaxId().then(response=>{
       //  alert(213)
         console.log(response)
-        _this.maxId = String(response.data).padStart(5, '0')
+        _this.maxId = String(response.data).padStart(4, '0')
 
         _this.$set(_this.form, 'recordSeq', _this.maxId) //
 
           //      alert(this.maxId)
       })
+    },
+    // 鐢熸垚妗堝嵎棰樺悕
+    generateCaseTitle() {
+      let titleParts = [];
+      
+      if (this.form.constructionUnit) {
+        titleParts.push(this.form.constructionUnit);
+      }
+      
+      if (this.form.constructionAddress) {
+        titleParts.push(this.form.constructionAddress);
+      }
+      
+      if (this.form.projectName) {
+        titleParts.push(this.form.projectName);
+      }
+      
+      this.form.caseTitle = titleParts.join('');
+    },
+    async getZoneOptions()
+    {
+      try {
+        const response = await listAllPlaceName()
+        console.log("1111111333333",response.data)
+        this.zoneTypeOptions = response.data.data.map(item => ({
+          value: item.nnumber,
+          label: item.name
+        }))
+      } catch (error) {
+        console.error('鑾峰彇椤圭洰鍚嶇О鍒楄〃澶辫触:', error)
+      }
+    },
+    async fetchProjectOptions() {
+      try {
+        const response = await listAllProjectName()
+        console.log("1111111",response)
+        this.projectOptions = response.data.data.map(item => ({
+          value: item.name,
+          label: item.name
+        }))
+      } catch (error) {
+        console.error('鑾峰彇椤圭洰鍚嶇О鍒楄〃澶辫触:', error)
+      }
     },
        /** 鑾峰彇妗f绫诲瀷鍒楄〃 */
        getRecordTypes() {
@@ -690,13 +900,14 @@
     /** 鐢熸垚妗f鍙� */
     generateRecordId() {
 
-      if (this.form.recordType && this.form.recordYear) {
+      if (this.form.recordType && this.form.recordZone && this.form.recordYear && this.form.recordSeq) {
+
         // getNextRecordId({
         //   type: this.form.recordType,
         //   year: this.form.recordYear
         // }).then(response => {
         //   this.form.recordSeq = response.data.seq
-          this.form.recordId = `${this.form.recordType}-${this.form.recordYear}-${this.form.recordSeq}`
+          this.form.recordId = `${this.form.recordType}-${this.form.recordZone}-${this.form.recordYear}-${this.form.recordSeq}`
         // })
       }
     },
@@ -724,6 +935,7 @@
         id: null,
         recordId: null,
         inquiryNumber: null,
+        everyProjectName: null,
         caseTitle: null,
         publicAttribute: null,
         preparationUnit: null,
@@ -764,7 +976,7 @@
     /** 鏂板鎸夐挳鎿嶄綔 */
     handleAdd() {
       this.reset()
-      this.form.recordSeq = this.maxId
+    // this.form.recordSeq = this.maxId
       this.open = true
       this.vis = false;
       this.title = "娣诲姞妗f璁板綍"
@@ -781,6 +993,16 @@
       this.$router.push("/archiveManager/infoManagerAu/archiveMaterialManager/" + recordId)
 
     },
+    //
+    handleSubmit(row)
+    {
+   //   alert(row.id)
+      var id = row.id
+      updateStatusById(id).then(response=>{
+        this.$modal.msgSuccess("鎻愪氦鎴愬姛")
+        this.getList()
+      })
+    },
     /** 淇敼鎸夐挳鎿嶄綔 */
     handleUpdate(row) {
 
@@ -796,11 +1018,41 @@
   if(this.recordTypeOptions.length > 0) {
       const recordParts = response.data.recordId.split('-')
       this.$set(this.form, 'recordType', recordParts[0])
-      this.$set(this.form, 'recordYear', recordParts[1]) 
-      this.$set(this.form, 'recordSeq', recordParts[2])
+            this.$set(this.form, 'recordZone', recordParts[1])
+
+      this.$set(this.form, 'recordYear', recordParts[2])
+      this.$set(this.form, 'recordSeq', recordParts[3])
     }
         this.open = true
         this.title = "淇敼妗f璁板綍"
+      })
+    },
+    /** 鎵归噺鎻愪氦 */
+    handleBatchSubmit() {
+     // alert(this.ids)
+      if (this.ids.length === 0) {
+        this.$modal.msgWarning('璇烽�夋嫨瑕佹彁浜ょ殑妗f璁板綍')
+        return
+      }
+      const myValidIds = this.recordsList
+  .filter(item => item.ownData === true)
+  .map(item => item.id);
+          // 妫�鏌ラ�変腑鐨処D鏄惁鍏ㄩ儴灞炰簬鑷繁
+    const invalidIds = this.ids.filter(id => !myValidIds.includes(id));
+    
+    if (invalidIds.length > 0) {
+      this.$message.error(`鍖呭惈鏃犳潈鎿嶄綔鐨処D: ${invalidIds.join(',')}`);
+      return false;
+    }
+    //濡傛灉id鍏ㄩ儴鏈夋晥鎵嶇户缁彁浜�
+      batchSubmitRecords( this.ids ).then(response => {
+        if (response.code === 0) {
+          this.$modal.msgSuccess('鎵归噺鎻愪氦鎴愬姛')
+          this.getList()
+          this.ids = []
+        } else {
+          this.$modal.msgError(response.msg || '鎵归噺鎻愪氦澶辫触')
+        }
       })
     },
     /** 淇敼鎸夐挳鎿嶄綔 */
@@ -815,8 +1067,10 @@
   if(this.recordTypeOptions.length > 0) {
       const recordParts = response.data.recordId.split('-')
       this.$set(this.form, 'recordType', recordParts[0])
-      this.$set(this.form, 'recordYear', recordParts[1]) 
-      this.$set(this.form, 'recordSeq', recordParts[2])
+            this.$set(this.form, 'recordZone', recordParts[1])
+
+      this.$set(this.form, 'recordYear', recordParts[2])
+      this.$set(this.form, 'recordSeq', recordParts[3])
     }
   this.open_check = true
   this.title = "鏌ョ湅妗f璁板綍"
@@ -834,11 +1088,18 @@
               this.getList()
             })
           } else {
+            console.log(this.form)
+
             addRecords(this.form).then(response => {
+              console.log(response)
+              if(response.code==0)
+                this.$modal.msgError(response.msg)
+              else{
               this.$modal.msgSuccess("鏂板鎴愬姛")
               this.open = false
-              this.getList()
               this.getId()
+              this.getList()}
+
 
             })
           }
@@ -885,3 +1146,27 @@
   }
 }
 </script>
+
+<style scoped>
+/* 鍔犲琛ㄦ牸搴曢儴婊氬姩鏉� */
+::v-deep .el-table__body-wrapper::-webkit-scrollbar {
+  height: 20px; /* 妯悜婊氬姩鏉¢珮搴� */
+}
+
+/* 婊氬姩鏉¤建閬� */
+::v-deep .el-table__body-wrapper::-webkit-scrollbar-track {
+  background: #f1f1f1;
+  border-radius: 10px;
+}
+
+/* 婊氬姩鏉℃粦鍧� */
+::v-deep .el-table__body-wrapper::-webkit-scrollbar-thumb {
+  background: #c1c1c1;
+  border-radius: 10px;
+}
+
+/* 婊氬姩鏉℃粦鍧楁偓鍋滄晥鏋� */
+::v-deep .el-table__body-wrapper::-webkit-scrollbar-thumb:hover {
+  background: #2f91ec;
+}
+</style>

--
Gitblit v1.9.1