fei
7 天以前 c50a874feed1ceceb18e0d42f95e4094eef98128
src/views/archiveManager/archiveMaterial/index.vue
@@ -15,8 +15,8 @@
    <el-col :span="16">
          <el-form-item label="责任者" prop="creator">
            <div class="title-search-wrapper">
              <el-input
                v-model="form.creator"
              <el-input
                v-model="form.creator"
                placeholder="请输入责任者"
                @input="handleCreatorInput"
                @focus="showCreatorSuggestions = true"
@@ -87,6 +87,7 @@
          <el-select
            v-model="form.fileStyle"
            placeholder="请选择材料类型"
            @change="handleFileStyleChange"
          >
            <el-option
              v-for="item in fileStyleOptions"
@@ -616,9 +617,11 @@
      <el-form-item label="文件题名" prop="title">
        <el-input
          v-model="queryParams.title"
          placeholder="请输入文件题目"
          placeholder="请输入文件题名"
          clearable
          @keyup.enter.native="handleQuery"
          :validate-event="false"
          @blur="validateQueryTitle"
        />
      </el-form-item>
      <el-form-item label="日期" prop="date">
@@ -630,6 +633,14 @@
          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">
@@ -785,7 +796,7 @@
  </template>
  <script>
  import { islegal, listMaterials, enload, getMaterials, delMaterials, addMaterials, updateMaterials } from "@/api/system/materials"
  import { getFileCount,islegal, 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"
@@ -920,22 +931,48 @@
        // 表单校验
        rules: {
          creator: [
           // { required: true, message: "创建者不能为空", trigger: "blur" }
           // { required: true, message: "创建者不能为空", trigger: "blur" },
            { max: 85, message: "最大长度为85个字符", trigger: "blur" }
          ],
          title: [
            { required: true, message: "案卷题名不能为空", trigger: "blur" }
            { required: true, message: "案卷题名不能为空", trigger: "blur" },
             { pattern: /^[^\\/:*?"<>丨]+$/, message: "文件名不能包含 \\\:*?<>丨 等特殊字符", trigger: "blur" },
            { max: 85, message: "最大长度为85个字符", trigger: "blur" }
          ],
          date: [
          //  { required: true, message: "日期不能为空", trigger: "blur" },
            { pattern: /^\d{4}-\d{2}-\d{2}$/, message: "日期格式必须为yyyy-mm-dd", trigger: "blur" }
            { pattern: /^\d{4}-\d{2}-\d{2}$/, message: "日期格式必须为yyyy-mm-dd", trigger: "blur" },
            { max: 85, message: "最大长度为85个字符", trigger: "blur" }
          ],
          pageNumber: [
            { required: true, message: "页号不能为空", trigger: "blur" },
            { type: 'number', message: '页号必须为数字类型', trigger: ['blur', 'change'] },
            { pattern: /^\d+$/, message: '请输入正整数', trigger: 'blur' }
            { pattern: /^[1-9]\d*$/, message: '请输入大于0的正整数', trigger: 'blur' },
            // { max: 85, message: "最大长度为85个字符", trigger: "blur" }
          ],
          stage: [
            { required: true, message: "所处阶段不能为空", trigger: "change" }
            { required: true, message: "所处阶段不能为空", trigger: "change" },
            { max: 85, message: "最大长度为85个字符", trigger: "blur" }
          ],
          fileStyle: [
            { required: true, message: "材料类型不能为空", trigger: "change" },
            { max: 85, message: "最大长度为85个字符", trigger: "blur" }
          ],
          isAttachment: [
            { required: true, message: "是否为附件不能为空", trigger: "change" },
            { max: 85, message: "最大长度为85个字符", trigger: "blur" }
          ],
          retentionPeriod: [
            { required: true, message: "保管期限不能为空", trigger: "change" },
            { max: 85, message: "最大长度为85个字符", trigger: "blur" }
          ],
          isSensitive: [
            { required: true, message: "是否敏感不能为空", trigger: "change" },
            { max: 85, message: "最大长度为85个字符", trigger: "blur" }
          ],
          isCanceled: [
            { required: true, message: "是否注销不能为空", trigger: "change" },
            { max: 85, message: "最大长度为85个字符", trigger: "blur" }
          ]
        }
      }
@@ -1029,15 +1066,19 @@
        this.$modal.msgWarning('请先选择文件再上传')
        return
      }
      if(fileCount!==this.total)
      {
        this.$modal.msgWarning('请选择与记录数一致的文件')
        return
      }
     // alert(this.recordId)
      //判断页号与上传上传的文件的页号是不是一一对应的
     islegal(this.recordId).then(response => {
       console.log(response.data)
       var res = response.data
       var res = response.data.res
       //alert(response.data.total)
       if(fileCount!==response.data.total)
       {
         this.$modal.msgWarning('请选择与记录数一致的文件')
         return
       }
       if(res)
       {
         // 执行上传
@@ -1080,7 +1121,22 @@
      /** 查询【请填写功能名称】列表 */
      getList() {
        this.loading = true
        listMaterials(this.queryParams).then(response => {
        // 处理档案号搜索逻辑,包括范围搜索
        const queryParams = { ...this.queryParams }
        // 检查是否包含范围搜索符号
        if (queryParams.fileNumber && queryParams.fileNumber.includes('~')) {
          const rangeParts = queryParams.fileNumber.split('~')
          if (rangeParts.length === 2) {
            // 解析范围搜索参数
            // 保留原始fileNumber用于其他处理
            queryParams.fileNumberStart = rangeParts[0].trim()
            queryParams.fileNumberEnd = rangeParts[1].trim()
          }
        }
        listMaterials(queryParams).then(response => {
          console.log(response)
          this.materialsList = response.data.data
          this.total = response.data.total
@@ -1177,7 +1233,7 @@
        this.form.title = title;
        this.showTitleSuggestions = false;
      },
      // 处理责任人输入事件
      handleCreatorInput() {
        // 清除之前的定时器(防抖)
@@ -1231,6 +1287,14 @@
        this.showCreatorSuggestions = false;
      },
      // 处理材料类型变化
      handleFileStyleChange(value) {
        // 当选择'其他材料'时,清空页码字段
        if (value === '其他材料') {
          this.form.pageNumber = null;
        }
      },
      // 表单重置
      reset() {
        this.form = {
@@ -1263,8 +1327,24 @@
        }
        this.resetForm("form")
      },
      // 验证查询表单中的文件题名
      validateQueryTitle() {
        const illegalCharsPattern = /[\\/:*?<>丨]/;
        if (this.queryParams.title && illegalCharsPattern.test(this.queryParams.title)) {
          this.$message.error("文件名不能包含 \\:/:*?<>丨 等特殊字符");
          this.queryParams.title = this.queryParams.title.replace(illegalCharsPattern, '');
        }
      },
      /** 搜索按钮操作 */
      handleQuery() {
        // 搜索前校验文件题名
        const illegalCharsPattern = /[\\/:*?<>丨]/;
        if (this.queryParams.title && illegalCharsPattern.test(this.queryParams.title)) {
          this.$message.error("文件名不能包含 \\:/:*?<>丨 等特殊字符");
          this.queryParams.title = this.queryParams.title.replace(illegalCharsPattern, '');
          return; // 阻止搜索,直到用户修正输入
        }
        this.queryParams.pageNum = 1
        this.getList()
      },
@@ -1446,7 +1526,7 @@
  // }
  const formData = new FormData();
  formData.append('file', file);
 // formData.append('recordId', this.recordId)
  formData.append('recordId', this.recordId)
  // alert(this.recordId)
  console.log(file)