fei
2025-11-15 2417a23dc04d04bd422d6f978958e10bf1633548
src/views/archiveManager/archiveMaterial/index.vue
@@ -2,8 +2,17 @@
    <div class="app-container">
         <h2 class="title-border">添加案卷详细记录</h2>
 <el-form ref="form" :model="form" :rules="rules" label-width="100px">
   <el-row>
     <el-col :span="8">
           <el-form-item label="文件编号" prop="documentNumber">
             <el-input ref="documentNumberInput" v-model="form.documentNumber" placeholder="请输入文件编号" />
           </el-form-item>
           </el-col>
   </el-row>
    <el-row>
    <el-col :span="8">
    <el-col :span="16">
          <el-form-item label="责任者" prop="creator">
            <el-input v-model="form.creator" placeholder="请输入责任者" />
          </el-form-item>
@@ -11,7 +20,7 @@
  </el-row>
  <el-row>
  <el-col :span="8">
  <el-col :span="16">
          <el-form-item label="文件题名" prop="title">
            <el-input v-model="form.title" placeholder="请输入文件题名" />
          </el-form-item>
@@ -42,20 +51,56 @@
              :value="item.value"
            />
          </el-select>
        </el-form-item>
        <el-form-item label="页号"
        <el-form-item label="页号"
          prop="pageNumber"
          v-if=" form.fileStyle !== '其他材料'">
      <el-col :span="8">
  <el-input
    v-model.number="form.pageNumber"
    placeholder="请输入页号(数字类型)"
    type="number"
  <el-input
    v-model.number="form.pageNumber"
    placeholder="请输入页号(数字类型)"
    type="number"
    min="1"
    oninput="value=value.replace(/[^\d]/g,'')" style="width: 450px;"
  /></el-col>
</el-form-item>
          <el-form-item label="备注" prop="remarks">
              <el-col :span="8">
            <el-input v-model="form.remarks" placeholder="请输入备注" />
                </el-col>
          </el-form-item>
    <el-form-item label="公开属性" prop="publicity">
          <el-select
            v-model="form.publicity"
            placeholder="请选择公开属性"
            clearable
          >
            <el-option
              v-for="item in publicityOptions"
              :key="item.value"
              :label="item.label"
              :value="item.value"
            />
          </el-select>
        </el-form-item>
    <el-form-item label="是否为附件" prop="isAttachment">
          <el-select
            v-model="form.isAttachment"
            placeholder="请选择是否为附件"
          >
            <el-option
              v-for="item in isAttachmentOptions"
              :key="item.value"
              :label="item.label"
              :value="item.value"
            />
          </el-select>
        </el-form-item>
          <el-form-item label="所处阶段" prop="stage">
          <el-select
            v-model="form.stage"
@@ -69,13 +114,14 @@
            />
          </el-select>
        </el-form-item>
          <el-form-item label="公开属性" prop="publicity">
   <el-form-item label="密级" prop="securityLevel">
          <el-select
            v-model="form.publicity"
            placeholder="请选择公开属性"
            v-model="form.securityLevel"
            placeholder="请选择密级"
          >
            <el-option
              v-for="item in publicityOptions"
              v-for="item in securityLevelOptions"
              :key="item.value"
              :label="item.label"
              :value="item.value"
@@ -83,19 +129,6 @@
          </el-select>
        </el-form-item>
          <el-form-item label="是否为附件" prop="isAttachment">
          <el-select
            v-model="form.isAttachment"
            placeholder="请选择是否为附件"
          >
            <el-option
              v-for="item in isAttachmentOptions"
              :key="item.value"
              :label="item.label"
              :value="item.value"
            />
          </el-select>
        </el-form-item>
          <el-form-item label="保管期限" prop="retentionPeriod">
          <el-select
@@ -112,19 +145,7 @@
        </el-form-item>
      <!-- 对话框表单中的密级 -->
      <el-form-item label="密级" prop="securityLevel">
          <el-select
            v-model="form.securityLevel"
            placeholder="请选择密级"
          >
            <el-option
              v-for="item in securityLevelOptions"
              :key="item.value"
              :label="item.label"
              :value="item.value"
            />
          </el-select>
        </el-form-item>
@@ -162,6 +183,10 @@
         <el-button type="primary" @click="resetForms">重置</el-button>
          <el-button @click="cancel">取 消</el-button>
                    <el-button type="warning" @click="cancelAuthUser">退回管理员</el-button>
        </div>
@@ -196,6 +221,16 @@
        </el-col>
        <el-col :span="1.5">
          <el-button
            type="warning"
            plain
            icon="el-icon-download"
            size="mini"
            @click="handleExport"
          >导出</el-button>
        </el-col>
        <el-col :span="1.5">
          <el-button
            type="danger"
            plain
            icon="el-icon-delete"
@@ -205,16 +240,7 @@
            v-hasPermi="['system:materials:remove']"
          >删除</el-button>
        </el-col>
        <el-col :span="1.5">
          <el-button
            type="warning"
            plain
            icon="el-icon-download"
            size="mini"
            @click="handleExport"
            v-hasPermi="['system:materials:export']"
          >导出</el-button>
        </el-col>
          <el-col :span="1.5">
          <el-button
            type="success"
@@ -232,8 +258,8 @@
      class="upload-demo"
      ref="upload"
      :action="uploadUrl"
         :headers="headers"
               :data="uploadParams"
      :headers="headers"
      :data="uploadParams"
      :on-success="handleSuccess"
      :on-error="handleError"
      :on-preview="handlePreview"
@@ -284,7 +310,33 @@
      <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 ">
              <template slot-scope="scope">
                <el-button
                  size="mini"
                  type="text"
                  icon="el-icon-edit"
                  @click="handleUpdate(scope.row)"
                  v-hasPermi="['system:materials:edit']"
                >修改</el-button>
        <!--        <el-button
                  size="mini"
                  type="text"
                  icon="el-icon-edit"
                  @click="handleUpdate(scope.row)"
                  v-hasPermi="['system:materials:edit']"
                >导入附件</el-button> -->
                <el-button
                  size="mini"
                  type="text"
                  icon="el-icon-delete"
                  @click="handleDelete(scope.row)"
                  v-hasPermi="['system:materials:remove']"
                >删除</el-button>
              </template>
            </el-table-column>
                <el-table-column label="文件材料序号" align="center" prop="fileNumber" />
        <el-table-column label="文件编号" align="center" prop="documentNumber" />
        <el-table-column label="责任者" align="center" prop="creator" />
        <el-table-column label="文件题名" align="center" prop="title" />
@@ -293,15 +345,18 @@
            <span>{{ parseTime(scope.row.date, '{y}-{m}-{d}') }}</span>
          </template>
        </el-table-column>
        <el-table-column label="页号" sortable align="center" prop="pageNumber"  />
                <el-table-column label="页次" sortable align="center" prop="pageOrder"  />
        <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="stage" />
        <el-table-column label="公开属性" sortable align="center" prop="publicity" />
        <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" />
        <el-table-column label="保管期限" align="center" prop="retentionPeriod" />
        <el-table-column label="密级" align="center" prop="securityLevel" />
        <el-table-column label="材料类型" align="fileStyle" prop="fileStyle" />
        <el-table-column label="是否涉密及敏感信息" align="center" prop="isSensitive" />
        <el-table-column label="是否注销" align="center" prop="isCanceled" />
        <el-table-column label="格式" align="center" prop="format" />
@@ -313,31 +368,8 @@
        <el-table-column label="大小" align="center" prop="fileSize" />
        <el-table-column label="附件及历史发文号" align="center" prop="attachmentHistoryNumbers" />
        <el-table-column label="操作" align="center" width="160" class-name="small-padding ">
          <template slot-scope="scope">
            <el-button
              size="mini"
              type="text"
              icon="el-icon-edit"
              @click="handleUpdate(scope.row)"
              v-hasPermi="['system:materials:edit']"
            >修改</el-button>
            <el-button
              size="mini"
              type="text"
              icon="el-icon-edit"
              @click="handleUpdate(scope.row)"
              v-hasPermi="['system:materials:edit']"
            >导入附件</el-button>
            <el-button
              size="mini"
              type="text"
              icon="el-icon-delete"
              @click="handleDelete(scope.row)"
              v-hasPermi="['system:materials:remove']"
            >删除</el-button>
          </template>
        </el-table-column>
      </el-table>
      <pagination
@@ -350,18 +382,22 @@
      <el-dialog :title="title" :visible.sync="open" width="800px" append-to-body>
        <el-form ref="forms" :model="forms" :rules="rules" label-width="100px">
          <el-form-item label="文件编号" prop="documentNumber">
              <el-input v-model="forms.documentNumber" placeholder="请输入文件编号" />
            </el-form-item>
           <el-row>
           <el-col :span="8">
           <el-col :span="16">
               <el-form-item label="责任者" prop="creator">
                   <el-input v-model="forms.creator" placeholder="请输入责任者" />
                 </el-form-item>
           </el-col>
               <el-col :span="8">
                 <el-form-item label="文件题名" prop="title">
                   <el-input v-model="forms.title" placeholder="请输入文件题名" />
                 </el-form-item>
           </el-col>
           </el-row>
           <el-form-item label="文件题名" prop="title">
             <el-input v-model="forms.title" placeholder="请输入文件题名" />
           </el-form-item>
                 <el-form-item label="日期" prop="date">
                  <el-input v-model="forms.date" placeholder="请输入日期 (格式:yyyy-mm-dd)" style="width: 200px;" />
                   <!-- <el-date-picker clearable
@@ -390,7 +426,9 @@
          </el-select>
        </el-form-item>
       <el-form-item label="备注" prop="remarks">
              <el-input v-model="forms.remarks" placeholder="请输入备注" />
            </el-form-item>
                 <el-form-item label="所处阶段" prop="stage">
                 <el-select
                   v-model="forms.stage"
@@ -689,7 +727,10 @@
  <script>
  import { 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"
import {delArchiverecordstouserByReIdAndUid} from "@/api/system/archiverecordstouser"
  export default {
    name: "Materials",
    data() {
@@ -699,7 +740,7 @@
      uploadUrl:  process.env.VUE_APP_BASE_API +'/system/materials/upload/'+this.recordId, // 替换为实际的上传接口
           headers: {
        Authorization: 'Bearer ' + getToken()
      },
      },
      uploadParams: {
        type: 'material' // 自定义上传类型
      },
@@ -715,8 +756,9 @@
        securityLevelOptions: [
          { value: '秘密', label: '秘密' },
          { value: '普通', label: '普通' },
                    { value: '该页另存', label: '该页另存' }
           { value: '该页另存', label: '该页另存' },
          { value: '内部用途', label: '内部用途' },
          { value: '内部用图', label: '内部用图' },
        ],
          // 添加保管期限选项
          retentionPeriodOptions: [
@@ -806,19 +848,22 @@
        // 表单校验
        rules: {
          creator: [
            { required: true, message: "创建者不能为空", trigger: "blur" }
           // { required: true, message: "创建者不能为空", trigger: "blur" }
          ],
          title: [
            { required: true, message: "案卷题名不能为空", trigger: "blur" }
          ],
          date: [
            { required: true, message: "日期不能为空", trigger: "blur" },
          //  { required: true, message: "日期不能为空", trigger: "blur" },
            { pattern: /^\d{4}-\d{2}-\d{2}$/, message: "日期格式必须为yyyy-mm-dd", trigger: "blur" }
          ],
          pageNumber: [
            { required: true, message: "页号不能为空", trigger: "blur" },
            { type: 'number', message: '页号必须为数字类型', trigger: ['blur', 'change'] },
            { pattern: /^\d+$/, message: '请输入正整数', trigger: 'blur' }
          ],
          stage: [
            { required: true, message: "所处阶段不能为空", trigger: "change" }
          ]
        }
      }
@@ -865,8 +910,10 @@
  this.$refs.upload.clearFiles();
  // 关闭上传对话框
  this.importDialogVisible = false;
  // 刷新列表数据
  this.getList();        // 这里可以调用接口关联上传的文件和当前记录
        // 刷新列表数据
        this.getList();        // 这里可以调用接口关联上传的文件和当前记录
        //更新档案的状态
      } else {
        // alert(234)
        console.log(response)
@@ -925,6 +972,10 @@
  if ((e.ctrlKey || e.metaKey) && e.key === 'd') {
    e.preventDefault();
    this.resetForms();
  }
  if ((e.ctrlKey || e.metaKey) && e.key === 'w') {
    e.preventDefault();
    this.closeCurrentTab();
  }
    },
      /** 查询【请填写功能名称】列表 */
@@ -1038,25 +1089,87 @@
        })
      },
      resetForms()
      {
    {
   this.reset()
          this.form.securityLevel = '普通' // 设置对话框表单默认值
          this.form.isSensitive = '否' // 设置对话框表单默认值
          this.form.isCanceled = '否' // 设置对话框表单默认值
          this.form.isAttachment = '否' // 设置对话框表单默认值
          this.form.isDiagram = '否' // 设置对话框表单默认值
          this.form.retentionPeriod = '永久' // 设置对话框表单默认值
      },
          this.form.securityLevel = '普通'
          this.form.isSensitive = '否'
          this.form.isCanceled = '否'
          this.form.isAttachment = '否'
          this.form.isDiagram = '否'
          this.form.retentionPeriod = '永久'
    },
    closeCurrentTab() {
      this.$store.dispatch('tagsView/delView', this.$route)
      this.$router.push('/archiveManager/infoManager')
    },
      submitForm()
      {
        console.log(this.form)
        this.form.recordId = this.recordId
        console.log("==============+++++++++++++++============")
        // 保存当前表单中需要保留的字段值
        const preservedValues = {
          documentNumber: this.form.documentNumber,
          creator: this.form.creator,
          title: this.form.title,
          date: this.form.date,
          pageNumber: this.form.pageNumber,
          remarks: this.form.remarks,
          stage: this.form.stage // 所处阶段保持跟上一条一致
        };
        this.$refs.form.validate(valid => {
        if (valid) {
        addMaterials(this.form).then(response => {
          this.$modal.msgSuccess("新增成功")
        //  this.opens = false
          // 创建新表单,保留特定字段,重置其他字段
          this.form = {
            materialId: null,
            recordId: this.recordId,
            // 保留的字段
            documentNumber: preservedValues.documentNumber,
            creator: preservedValues.creator,
            title: preservedValues.title,
            date: preservedValues.date,
            pageNumber: preservedValues.pageNumber,
            remarks: preservedValues.remarks,
            stage: preservedValues.stage,
            // 重置为空的字段
            publicity: null,
            // 重置为默认值的字段
            fileStyle: '文字材料', // 材料类型默认为文字材料
            securityLevel: '普通', // 密级默认为普通
            isAttachment: '否', // 是否为附件默认为否
            isSensitive: '否', // 是否敏感默认为否
            isCanceled: '否', // 是否注销默认为否
            // 其他需要重置的字段
            isDiagram: '否',
            retentionPeriod: '永久',
            format: null,
            sizeType: null,
            horizontalResolution: null,
            verticalResolution: null,
            width: null,
            height: null,
            fileSize: null,
            attachmentHistoryNumbers: null,
            createdAt: null,
            updatedAt: null
          };
          // 保存成功后,光标跳回文件编号输入框
          this.$nextTick(() => {
            this.$refs.documentNumberInput.focus();
          });
          this.getList()
        })
        }
        else
        {
          this.$message.error('请填写所有必填字段');
        }
        })
      },
      /** 提交按钮 */
@@ -1066,6 +1179,10 @@
            if (this.forms.materialId != null) {
              updateMaterials(this.forms).then(response => {
                this.$modal.msgSuccess("修改成功")
                // 修改成功后,光标跳回文件编号输入框
                this.$nextTick(() => {
                  this.$refs.documentNumberInput.focus();
                });
                this.open = false
                this.getList()
              })
@@ -1133,7 +1250,33 @@
    this.$message.error('导入失败: ' + (error.message || '未知错误'));
  });
    }
    },
     /** 取消授权按钮操作 */
    cancelAuthUser(row) {
      const recordId =  this.recordId
      var userId = store.state.user.id
      var _this = this
      // alert(userId)
      // alert(userId)
      // alert(this.queryParams.archiveRecordsId)
      // alert(row.sysUser.userName)
      this.$modal.confirm('确认要取消该用户的"' + '' + '"授权吗?').then(function() {
        return delArchiverecordstouserByReIdAndUid({  recordId: recordId, userId: userId   })
      }).then(() => {
      //  this.getList()
      //修改案卷的状态
  //  var id = row.id
      var status = '未上传附件'
      updateStatusById(status, recordId).then(response=>{
      //  this.$modal.msgSuccess("提交成功")
      //  this.getList()
      _this.$store.dispatch('tagsView/delView', this.$route);
        _this.$router.push('/archiveManager/infoManager')
        _this.$modal.msgSuccess("取消授权成功")
      })
      }).catch(() => {})
    },
    }
  }
  </script>