fei
2025-12-22 d529e4e9f3b00ce5ff0d9d65670e37e422ec660c
src/views/archiveManager/archiveMaterial/index.vue
@@ -1,5 +1,7 @@
<template>
    <div class="app-container">
      <div v-if="sho">
         <h2 class="title-border">添加案卷详细记录</h2>
 <el-form ref="form" :model="form" :rules="rules" label-width="100px">
@@ -234,7 +236,7 @@
        </div>
</div>
<div class="title-border"></div>
@@ -255,6 +257,7 @@
        </el-col>
        <el-col :span="1.5">
          <el-button
          v-if="sho"
            type="success"
            plain
            icon="el-icon-edit"
@@ -263,6 +266,17 @@
            @click="handleUpdate"
            v-hasPermi="['system:materials:edit']"
          >修改</el-button>
        </el-col>
           <el-col :span="1.5">
          <el-button
            type="warning"
            plain
            icon="el-icon-download"
            size="mini"
            @click="handleExportDir"
            v-hasPermi="['system:materials:list']"
          >导出卷内目录</el-button>
        </el-col>
        <el-col :span="1.5">
          <el-button
@@ -273,10 +287,11 @@
            @click="handleExport"
            v-hasPermi="['system:materials:list']"
          >导出</el-button>
          >导出电子文件目录</el-button>
        </el-col>
        <el-col :span="1.5">
          <el-button
          v-if="sho"
            type="danger"
            plain
            icon="el-icon-delete"
@@ -289,6 +304,7 @@
          <el-col :span="1.5">
          <el-button
          v-if="sho"
            type="success"
            plain
            icon="el-icon-edit"
@@ -345,7 +361,7 @@
              accept=".xlsx,.xls"
        >
          <el-button size="mini"   type="primary"
          <el-button size="mini"  v-if="sho" type="primary"
                     plain
                     icon="el-icon-top">导入</el-button>
@@ -356,7 +372,7 @@
      <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 ">
        <el-table-column v-if="sho" label="操作" align="center" width="160" class-name="small-padding ">
              <template slot-scope="scope">
                <el-button
                  size="mini"
@@ -393,8 +409,8 @@
        </el-table-column>
        <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="pageOrder"  />
--->
        <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" />
@@ -405,13 +421,13 @@
        <el-table-column label="是否涉密及敏感信息" align="center" prop="isSensitive" />
        <el-table-column label="是否注销" align="center" prop="isCanceled" />
        <el-table-column label="格式" align="center" prop="format" />
     <!--   <el-table-column label="格式" align="center" prop="format" />
        <el-table-column label="幅面" align="center" prop="sizeType" />
        <el-table-column label="水平分辨率" align="center" prop="horizontalResolution" />
        <el-table-column label="垂直分辨率" align="center" prop="verticalResolution" />
        <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="fileSize" /> -->
        <el-table-column label="附件及历史发文号" align="center" prop="attachmentHistoryNumbers" />
@@ -462,9 +478,9 @@
    <el-form-item label="材料类型" prop="fileStyle">
          <el-select
            v-model="forms.fileStyle"
            placeholder="请选择材料类型"
            clearable
            @change="handleFileStyleChange2"
          >
            <el-option
              v-for="item in fileStyleOptions"
@@ -474,7 +490,7 @@
            />
          </el-select>
        </el-form-item>
     <el-form-item label="页号" prop="pageNumber">
     <el-form-item label="页号" prop="pageNumber" v-if="forms.fileStyle !== '其他材料'">
        <el-col :span="8">
          <el-input
            v-model.number="forms.pageNumber"
@@ -633,14 +649,6 @@
          value-format="yyyy-MM-dd"
          placeholder="请选择日期">
        </el-date-picker> -->
      </el-form-item>
      <el-form-item label="档案号" prop="fileNumber">
        <el-input
          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">
@@ -806,6 +814,8 @@
    name: "Materials",
    data() {
      return {
        //是否显示相关内容
        sho: true,
        totalPageCount: 0,
        // 记录元素初始位置和状态
  originalOffsetLeft: 0,
@@ -1003,6 +1013,11 @@
      const recordId = this.$route.params && this.$route.params.recordId
      this.totalPageCount = this.$route.params && this.$route.params.pageCount
      this.sho = this.$route.params && this.$route.params.sho
      // 将字符串转换为布尔值
      this.sho = this.sho === true || this.sho === "true"
      //alert(this.totalPageCount)
      //alert(recordId)
      this.recordId = recordId;
@@ -1079,27 +1094,27 @@
      //判断页号与上传上传的文件的页号是不是一一对应的
     islegal(this.recordId).then(response => {
       console.log(response.data)
       var res = response.data.res
     // islegal(this.recordId).then(response => {
     //   console.log(response.data)
     //   var res = response.data.res
     //  console.log(res)
       //alert(response.data.total)
       if(fileCount!=this.totalPageCount)
       {
         this.$modal.msgWarning('请选择与记录数一致的文件')
         return
       }
       if(res)
       else
       {
         // 执行上传
           this.$refs.upload.submit()
           this.getList()
       }
       else
       {
         this.$modal.msgError("页号不连续,请修改为连续正确的页号!")
       }
     })
       // else
       // {
       //   this.$modal.msgError("页号不连续,请修改为连续正确的页号!")
       // }
     //})
    },
    clearFileList() {
@@ -1148,7 +1163,8 @@
        listMaterials(queryParams).then(response => {
          console.log(response)
          this.materialsList = response.data.data
          // 过滤掉visible为0的记录
          this.materialsList = response.data.data.filter(item => item.visible !== 0)
          this.total = response.data.total
          this.loading = false
        })
@@ -1297,11 +1313,18 @@
        this.showCreatorSuggestions = false;
      },
      // 处理材料类型变化
      // 处理材料类型变化(新增表单)
      handleFileStyleChange(value) {
        // 当选择'其他材料'时,清空页码字段
        // 当选择'其他材料'时,将页号设置为0
        if (value === '其他材料') {
          this.form.pageNumber = null;
          this.forms.pageNumber = null;
        }
      },
      // 处理材料类型变化(修改表单)
      handleFileStyleChange2(value) {
        // 当选择'其他材料'时,将页号设置为0
        if (value === '其他材料') {
          this.forms.pageNumber = null;
        }
      },
@@ -1381,6 +1404,10 @@
        const materialId = row.materialId || this.ids
        getMaterials(materialId).then(response => {
          this.forms = response.data
          // 如果材料类型是"其他材料",将页号设置为0
          if (this.forms.fileStyle === '其他材料') {
            this.forms.pageNumber = null;
          }
          this.open = true
          this.title = "修改案卷详细信息"
        })
@@ -1471,6 +1498,7 @@
      },
      /** 提交按钮 */
      submitForms() {
        console.log(this.forms)
        this.$refs["forms"].validate(valid => {
          if (valid) {
            if (this.forms.materialId != null) {
@@ -1499,6 +1527,26 @@
          this.$modal.msgSuccess("删除成功")
        }).catch(() => {})
      },
           /** 导出按钮操作 - 支持导出选中行或全部数据 */
      handleExportDir() {
        // 判断是否有选中的行
        if (this.ids && this.ids.length > 0) {
          // 显示导出选中行的提示
          this.$message.info(`正在导出${this.ids.length}条选中的数据...`);
          // 导出选中的行数据
          this.download('system/materials/exportDir', {
            ids: this.ids.join(','),
         //   exportType: 'selected'
          }, `materiaDir_selected_${new Date().getTime()}.xls`)
        } else {
          // 显示导出全部数据的提示
          this.$message.info('正在导出符合当前查询条件的所有数据...');
          // 没有选中行时,导出当前查询条件的数据
          this.download('system/materials/exportDir', {
            ...this.queryParams
          }, `materiaDir_${new Date().getTime()}.xls`)
        }
      },
      /** 导出按钮操作 - 支持导出选中行或全部数据 */
      handleExport() {
        // 判断是否有选中的行
@@ -1509,14 +1557,14 @@
          this.download('system/materials/export', {
            ids: this.ids.join(','),
         //   exportType: 'selected'
          }, `materials_selected_${new Date().getTime()}.xlsx`)
          }, `materials_selected_${new Date().getTime()}.xls`)
        } else {
          // 显示导出全部数据的提示
          this.$message.info('正在导出符合当前查询条件的所有数据...');
          // 没有选中行时,导出当前查询条件的数据
          this.download('system/materials/export', {
            ...this.queryParams
          }, `materials_${new Date().getTime()}.xlsx`)
          }, `materials_${new Date().getTime()}.xls`)
        }
      },
@@ -1525,7 +1573,7 @@
    {
      this.download('/system/materials/model', {
      }, `materials_${new Date().getTime()}.xlsx`)
      }, `materials_${new Date().getTime()}.xls`)
    },
       /** 导入操作*/
    async handleImportData({file}){
@@ -1598,8 +1646,13 @@
      const rect = fixedRow.getBoundingClientRect();
      const parentRect = fixedRow.parentNode.getBoundingClientRect();
      // 检查元素是否应该进入悬浮状态
      if (rect.top <= 0) {
      // 记录元素的原始位置(相对于文档顶部的位置)
      if (!this.originalTop) {
        this.originalTop = rect.top + window.pageYOffset;
      }
      // 检查元素是否应该进入悬浮状态(当滚动位置超过元素原始位置时)
      if (window.pageYOffset >= this.originalTop) {
        // 只在不在floating状态时添加,避免重复操作
        if (!fixedRow.classList.contains('floating')) {
          // 记录元素原始的左偏移量(相对于父容器)
@@ -1623,7 +1676,7 @@
          }
        }
      } else {
        // 当元素回到视口顶部以上时,移除悬浮状态,恢复到文档流中
        // 当滚动位置回到元素原始位置以上时,移除悬浮状态,恢复到文档流中
        if (fixedRow.classList.contains('floating')) {
          // 移除floating类
          fixedRow.classList.remove('floating');