From b7ce4df611c11605aef94dac1b7056be5138b792 Mon Sep 17 00:00:00 2001
From: tian <3072314689@qq.com>
Date: 星期二, 23 九月 2025 19:38:31 +0800
Subject: [PATCH] Merge branch 'master' of http://47.93.189.255:8099/r/archiveFrontEnd

---
 src/views/archiveStatics/index.vue |  288 +++++++++++++++++++++------------------------------------
 1 files changed, 106 insertions(+), 182 deletions(-)

diff --git a/src/views/archiveStatics/index.vue b/src/views/archiveStatics/index.vue
index 8f47ff1..fb9319d 100644
--- a/src/views/archiveStatics/index.vue
+++ b/src/views/archiveStatics/index.vue
@@ -1,170 +1,9 @@
 <template>
   <div class="app-container">
-    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
-      <el-form-item label="妗f鍙�1" prop="recordId">
-        <el-input
-          v-model="queryParams.recordId"
-          placeholder="璇疯緭鍏ユ。妗堝彿"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="鍙戞枃鍙�" prop="inquiryNumber">
-        <el-input
-          v-model="queryParams.inquiryNumber"
-          placeholder="璇疯緭鍏ュ彂鏂囧彿"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="妗堝嵎棰樺悕" prop="caseTitle">
-        <el-input
-          v-model="queryParams.caseTitle"
-          placeholder="璇疯緭鍏ユ鍗烽鍚�"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="鍏紑灞炴��" prop="publicAttribute">
-        <el-select
-          v-model="queryParams.publicAttribute"
-          placeholder="璇烽�夋嫨鍏紑灞炴��"
-          clearable
-        >
-          <el-option
-            v-for="item in publicAttributeOptions"
-            :key="item.value"
-            :label="item.label"
-            :value="item.value"
-          />
-        </el-select>
-      </el-form-item>
-      <el-form-item label="缂栧埗鍗曚綅" prop="preparationUnit">
-        <el-input
-          v-model="queryParams.preparationUnit"
-          placeholder="璇疯緭鍏ョ紪鍒跺崟浣�"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="缂栧埗鏃ユ湡" prop="preparationDate">
-        <el-date-picker clearable
-          v-model="queryParams.preparationDate"
-          type="date"
-          value-format="yyyy-MM-dd"
-          placeholder="璇烽�夋嫨缂栧埗鏃ユ湡">
-        </el-date-picker>
-      </el-form-item>
-      <el-form-item label="淇濈鏈熼檺" prop="retentionPeriod">
-        <el-select
-          v-model="queryParams.retentionPeriod"
-          placeholder="璇烽�夋嫨淇濈鏈熼檺"
-          clearable
-        >
-          <el-option
-            v-for="item in retentionPeriodOptions"
-            :key="item.value"
-            :label="item.label"
-            :value="item.value"
-          />
-        </el-select>
-      </el-form-item>
-      <el-form-item label="瀵嗙骇" prop="securityClassification">
-        <el-input
-          v-model="queryParams.securityClassification"
-          placeholder="璇疯緭鍏ュ瘑绾�"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="妗堝嵎椤垫暟" prop="pageCount">
-        <el-input
-          v-model="queryParams.pageCount"
-          placeholder="璇疯緭鍏ユ鍗烽〉鏁�"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="绔嬫鍙�" prop="filingNumber">
-        <el-input
-          v-model="queryParams.filingNumber"
-          placeholder="璇疯緭鍏ョ珛妗堝彿"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="寤鸿鍗曚綅" prop="constructionUnit">
-        <el-input
-          v-model="queryParams.constructionUnit"
-          placeholder="璇疯緭鍏ュ缓璁惧崟浣�"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="寤鸿鍦板潃" prop="constructionAddress">
-        <el-input
-          v-model="queryParams.constructionAddress"
-          placeholder="璇疯緭鍏ュ缓璁惧湴鍧�"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="寤鸿椤圭洰鍚嶇О" prop="projectName">
-        <el-input
-          v-model="queryParams.projectName"
-          placeholder="璇疯緭鍏ュ缓璁鹃」鐩悕绉�"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="椤圭洰缂栧彿" prop="projectNumber">
-        <el-input
-          v-model="queryParams.projectNumber"
-          placeholder="璇疯緭鍏ラ」鐩紪鍙�"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="鎵弿鍔犲伐鍏徃" prop="scanningCompany">
-        <el-input
-          v-model="queryParams.scanningCompany"
-          placeholder="璇疯緭鍏ユ壂鎻忓姞宸ュ叕鍙�"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="妗f绠�(瀹�)鍙�" prop="archiveRoomNumber">
-        <el-input
-          v-model="queryParams.archiveRoomNumber"
-          placeholder="璇疯緭鍏ユ。妗堢(瀹�)鍙�"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="缂╁井鍙�" prop="microfilmNumber">
-        <el-input
-          v-model="queryParams.microfilmNumber"
-          placeholder="璇疯緭鍏ョ缉寰彿"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="鍘嗗彶鐩稿叧鍙戞枃鍙�" prop="historicalReferenceNumber">
-        <el-input
-          v-model="queryParams.historicalReferenceNumber"
-          placeholder="璇疯緭鍏ュ巻鍙茬浉鍏冲彂鏂囧彿"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item>
-        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">鎼滅储</el-button>
-        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">閲嶇疆</el-button>
-      </el-form-item>
-    </el-form>
+   
 
     <el-row :gutter="10" class="mb8">
-      <el-col :span="1.5">
+      <!-- <el-col :span="1.5">
         <el-button
           type="primary"
           plain
@@ -195,7 +34,7 @@
           @click="handleDelete"
           v-hasPermi="['system:records:remove']"
         >鍒犻櫎</el-button>
-      </el-col>
+      </el-col> -->
       <el-col :span="1.5">
         <el-button
           type="warning"
@@ -209,18 +48,27 @@
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
-    <el-table v-loading="loading" :data="recordsList" @selection-change="handleSelectionChange">
-      <el-table-column type="selection" width="55" align="center" />
+    <el-table v-loading="loading" :data="recordsList" @row-click="handleRowClick">
+      <!-- <el-table-column type="selection" width="55" align="center" /> -->
 <!--      <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="cnt" />
+
+      <el-table-column label="瀹屾垚妗堝嵎鏁�" align="center" prop="finished" />
 
 
 
-      <el-table-column label="寤鸿鍦板潃" align="center" prop="constructionAddress" />
-      <el-table-column label="寤鸿椤圭洰鍚嶇О" align="center" prop="projectName" />
-      <el-table-column label="鐘舵��" align="center" prop="projectName" />
+
+      <el-table-column label="鏈畬鎴愭鍗锋暟" align="center" prop="unfinished" />
+      <el-table-column label="瀹屾垚鐧惧垎姣�" align="center">
+        <template slot-scope="scope">
+          <el-progress 
+            :percentage="Math.round((scope.row.finished / scope.row.cnt) * 100)"
+            :status="scope.row.finished === scope.row.cnt ? 'success' : 'warning'">
+          </el-progress>
+          <span>{{ scope.row.finished }}/{{ scope.row.cnt }} ({{ Math.round((scope.row.finished / scope.row.cnt) * 100) }}%)</span>
+        </template>
+      </el-table-column>
 
     </el-table>
 
@@ -269,7 +117,7 @@
         </el-row>
         </el-form-item>
         <el-form-item label="鍙戞枃鍙�" prop="inquiryNumber">
-          <el-input v-model="form.inquiryNumber" placeholder="璇疯緭鍏ュ彂闂彿" />
+          <el-input v-model="form.inquiryNumber" placeholder="璇疯緭鍏ュ彂鏂囧彿" />
         </el-form-item>
         <el-form-item label="寤鸿椤圭洰鍚嶇О" prop="projectName">
           <el-input v-model="form.projectName" placeholder="璇疯緭鍏ュ缓璁鹃」鐩悕绉�" />
@@ -336,17 +184,28 @@
         <el-button @click="cancel">鍙� 娑�</el-button>
       </div>
     </el-dialog>
+
+
+
+    <el-dialog 
+  title="瀹屾垚鎯呭喌缁熻" 
+  :visible.sync="dialogVisible" 
+  width="60%">
+  <div ref="chartContainer" style="width: 100%; height: 400px; display: flex; justify-content: center; align-items: center;"></div>
+</el-dialog>
   </div>
 </template>
 
 <script>
-import { listRecords,getMaxId, getRecords, delRecords, addRecords, updateRecords } from "@/api/system/records"
+import { statisticInfo,listRecords,getMaxId, getRecords, delRecords, addRecords, updateRecords } from "@/api/system/records"
 import { listAllCategory } from "@/api/system/category"
 
 export default {
   name: "Records",
   data() {
     return {
+      dialogVisible: false,
+    chartInstance: null,
       maxId: 0,
             // 妗f绫诲瀷閫夐」
             recordTypeOptions: [],
@@ -416,7 +275,7 @@
           { required: true, message: "妗f鍙蜂笉鑳戒负绌�", trigger: "blur" }
         ],
         inquiryNumber: [
-          { required: true, message: "鍙戦棶鍙蜂笉鑳戒负绌�", trigger: "blur" }
+          { required: true, message: "鍙戞枃鍙蜂笉鑳戒负绌�", trigger: "blur" }
         ],
         projectName: [
           { required: true, message: "椤圭洰鍚嶇О涓嶈兘涓虹┖", trigger: "blur" }
@@ -427,12 +286,67 @@
   created() {
     this.getList()
 
-    this.getId()
-    this.getRecordTypes()
+    // this.getId()
+    // this.getRecordTypes()
 
 
   },
+  beforeDestroy() {
+  if (this.chartInstance) {
+    this.chartInstance.dispose();
+  }
+},
   methods: {
+handleRowClick(row) {
+  this.dialogVisible = true;
+  this.$nextTick(() => {
+    this.chartInstance = this.$echarts.init(this.$refs.chartContainer);
+    const option = {
+      tooltip: {
+        trigger: 'item',
+        formatter: '{a} <br/>{b}: {c} ({d}%)'
+      },
+      legend: {
+        orient: 'vertical',
+        right: 10,
+        top: 'center'
+      },
+      color: ['#67C23A', '#F56C6C'],
+      series: [{
+        name: '瀹屾垚鎯呭喌',
+        type: 'pie',
+        radius: ['50%', '70%'],
+        avoidLabelOverlap: false,
+        itemStyle: {
+          borderRadius: 10,
+          borderColor: '#fff',
+          borderWidth: 2
+        },
+        label: {
+          show: true,
+          formatter: '{b}: {d}%'
+        },
+        emphasis: {
+          label: {
+            show: true,
+            fontSize: '18',
+            fontWeight: 'bold'
+          }
+        },
+        labelLine: {
+          show: true
+        },
+        data: row.cnt === 0 ? 
+          [{ value: 1, name: '鏆傛棤鏁版嵁', itemStyle: { color: '#909399' }}] :
+          [
+            { value: row.finished, name: '宸插畬鎴�' },
+            { value: row.cnt - row.finished, name: '鏈畬鎴�' }
+          ]
+      }]
+    };
+    this.chartInstance.setOption(option);
+  });
+},
     getId()
     {
       var _this = this;
@@ -481,11 +395,11 @@
       this.loading = true
       console.log(this.queryParams)
       console.log("--------------")
-      listRecords(this.queryParams).then(response => {
+      statisticInfo().then(response => {
 
         console.log(response)
-        this.recordsList = response.data.data
-        this.total = response.data.total
+        this.recordsList = response.data
+        this.total = response.data.length
         this.loading = false
       })
     },
@@ -624,10 +538,20 @@
     },
     /** 瀵煎嚭鎸夐挳鎿嶄綔 */
     handleExport() {
-      this.download('system/records/export', {
-        ...this.queryParams
+     // alert(98)
+      this.download('system/records/exportAllStatis', {
+       // ...this.queryParams
       }, `records_${new Date().getTime()}.xlsx`)
     }
   }
 }
 </script>
+<style scoped>
+.force-width {
+  width: 900px !important; /* 璁剧疆鍥哄畾瀹藉害 */
+}
+
+body .el-message-box.force-width {
+  width: 800px !important;
+}
+</style>

--
Gitblit v1.9.1