tian
2025-09-23 b7ce4df611c11605aef94dac1b7056be5138b792
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="档案号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="档案管(室)号" 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="档案号" 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,
            // 档案类型选项
            recordTypeOptions: [],
@@ -416,7 +275,7 @@
          { required: true, message: "档案号不能为空", 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>