From 749f897a11e711199c6b1677accf2f6e46895315 Mon Sep 17 00:00:00 2001
From: fei <791364011@qq.com>
Date: 星期六, 22 十一月 2025 16:01:26 +0800
Subject: [PATCH] 新增了代码
---
src/views/archiveManager/archiveMaterial/index.vue | 1583 ++++++++++++++++++++++++++++++++++++++++++++++++----------
1 files changed, 1,300 insertions(+), 283 deletions(-)
diff --git a/src/views/archiveManager/archiveMaterial/index.vue b/src/views/archiveManager/archiveMaterial/index.vue
index 35ccbc2..90f6360 100644
--- a/src/views/archiveManager/archiveMaterial/index.vue
+++ b/src/views/archiveManager/archiveMaterial/index.vue
@@ -1,5 +1,608 @@
<template>
<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="16">
+ <el-form-item label="璐d换鑰�" prop="creator">
+ <div class="title-search-wrapper">
+ <el-input
+ v-model="form.creator"
+ placeholder="璇疯緭鍏ヨ矗浠昏��"
+ @input="handleCreatorInput"
+ @focus="showCreatorSuggestions = true"
+ @blur="handleCreatorBlur"
+ />
+ <!-- 涓嬫媺寤鸿妗� -->
+ <div
+ v-if="showCreatorSuggestions && creatorSuggestions.length > 0"
+ class="title-suggestions"
+ >
+ <div
+ v-for="(item, index) in creatorSuggestions"
+ :key="index"
+ class="suggestion-item"
+ @mousedown="selectCreatorSuggestion(item)"
+ >
+ {{ item }}
+ </div>
+ </div>
+ </div>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row>
+
+ <el-col :span="16">
+ <el-form-item label="鏂囦欢棰樺悕" prop="title">
+ <div class="title-search-wrapper">
+ <el-input
+ v-model="form.title"
+ placeholder="璇疯緭鍏ユ枃浠堕鍚�"
+ @input="handleTitleInput"
+ @focus="showTitleSuggestions = true"
+ @blur="handleTitleBlur"
+ />
+ <!-- 涓嬫媺寤鸿妗� -->
+ <div
+ v-if="showTitleSuggestions && titleSuggestions.length > 0"
+ class="title-suggestions"
+ >
+ <div
+ v-for="(item, index) in titleSuggestions"
+ :key="index"
+ class="suggestion-item"
+ @mousedown="selectTitleSuggestion(item)"
+ >
+ {{ item }}
+ </div>
+ </div>
+ </div>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-form-item label="鏃ユ湡" prop="date">
+ <!-- <el-date-picker clearable
+ v-model="form.date"
+ type="date"
+ value-format="yyyy-MM-dd"
+ placeholder="璇烽�夋嫨鏃ユ湡">
+ </el-date-picker> -->
+ <el-input v-model="form.date" placeholder="璇疯緭鍏ユ棩鏈� (鏍煎紡锛歽yyy-mm-dd)" style="width: 450px;" />
+ <!-- <div style="color: #999; font-size: 12px; margin-top: 4px;">璇疯緭鍏ユ纭殑鏃ユ湡鏍煎紡锛歽yyy-mm-dd</div> -->
+ </el-form-item>
+ <!-- <el-form-item label="椤垫" prop="pageOrder">
+ <el-input v-model="form.pageOrder" placeholder="璇疯緭鍏ラ〉娆�" />
+ </el-form-item> -->
+ <el-form-item label="鏉愭枡绫诲瀷" prop="fileStyle">
+ <el-select
+ v-model="form.fileStyle"
+ placeholder="璇烽�夋嫨鏉愭枡绫诲瀷"
+ >
+ <el-option
+ v-for="item in fileStyleOptions"
+ :key="item.value"
+ :label="item.label"
+ :value="item.value"
+ />
+ </el-select>
+
+ </el-form-item>
+ <el-form-item label="椤靛彿"
+ prop="pageNumber"
+ v-if=" form.fileStyle !== '鍏朵粬鏉愭枡'">
+ <el-col :span="8">
+ <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"
+ placeholder="璇烽�夋嫨鎵�澶勯樁娈�"
+ >
+ <el-option
+ v-for="item in stageOptions"
+ :key="item.value"
+ :label="item.label"
+ :value="item.value"
+ />
+ </el-select>
+ </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>
+
+
+ <el-form-item label="淇濈鏈熼檺" prop="retentionPeriod">
+ <el-select
+ v-model="form.retentionPeriod"
+ placeholder="璇烽�夋嫨淇濈鏈熼檺"
+ >
+ <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="isSensitive">
+ <el-select
+ v-model="form.isSensitive"
+ 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="isCanceled">
+ <el-select
+ v-model="form.isCanceled"
+ placeholder="璇疯緭鍏ユ槸鍚︽敞閿�"
+ >
+ <el-option
+ v-for="item in isAttachmentOptions"
+ :key="item.value"
+ :label="item.label"
+ :value="item.value"
+ />
+ </el-select>
+ </el-form-item>
+
+
+ </el-form>
+ <div slot="footer" class="dialog-footer" @keydown.enter="submitForm">
+ <el-button type="primary" @click="submitForm">纭� 瀹�</el-button>
+ <el-button type="primary" @click="resetForms">閲嶇疆</el-button>
+
+ <el-button @click="cancel">鍙� 娑�</el-button>
+
+
+ <el-button type="warning" @click="cancelAuthUser">閫�鍥炵鐞嗗憳</el-button>
+
+ </div>
+
+
+
+<div class="title-border"></div>
+
+
+
+
+
+ <el-row :gutter="12" class="mb8 fixed-row">
+ <el-col :span="1.5">
+ <el-button
+ type="primary"
+ plain
+ icon="el-icon-plus"
+ size="mini"
+ @click="handleAdd"
+ v-hasPermi="['system:materials:add']"
+ >鎼滅储</el-button>
+ </el-col>
+ <el-col :span="1.5">
+ <el-button
+ type="success"
+ plain
+ icon="el-icon-edit"
+ size="mini"
+ :disabled="single"
+ @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="handleExport"
+ v-hasPermi="['system:materials:list']"
+
+ >瀵煎嚭</el-button>
+ </el-col>
+ <el-col :span="1.5">
+ <el-button
+ type="danger"
+ plain
+ icon="el-icon-delete"
+ size="mini"
+ :disabled="multiple"
+ @click="handleDelete"
+ v-hasPermi="['system:materials:remove']"
+ >鍒犻櫎</el-button>
+ </el-col>
+
+ <el-col :span="1.5">
+ <el-button
+ type="success"
+ plain
+ icon="el-icon-edit"
+ size="mini"
+ @click="handleImport"
+ v-hasPermi="['system:materials:edit']"
+ >鍏ㄩ儴闄勪欢瀵煎叆</el-button>
+
+
+ <!-- 鍦ㄦ寜閽笅鏂规坊鍔犲鍏ュ璇濇 -->
+ <el-dialog title="鎵归噺瀵煎叆闄勪欢" :visible.sync="importDialogVisible" width="50%">
+ <el-upload
+ class="upload-demo"
+ ref="upload"
+ :action="uploadUrl"
+ :headers="headers"
+ :data="uploadParams"
+ :on-success="handleSuccess"
+ :on-error="handleError"
+ :on-preview="handlePreview"
+ :on-remove="handleRemove"
+ :file-list="fileList"
+ :on-change="handleFileChange"
+ :auto-upload="false"
+ multiple
+ accept=".jpg,.png"
+ >
+ <el-button slot="trigger" size="small" type="primary">閫夋嫨鏂囦欢</el-button>
+ <el-button style="margin-left: 10px;" size="small" type="success" @click="submitUpload">涓婁紶鍒版湇鍔″櫒</el-button>
+ <el-button style="margin-left: 10px;" size="small" type="danger" @click="clearFileList">娓呯┖鍒楄〃</el-button>
+ <div slot="tip" class="el-upload__tip">鍙笂浼燡PG绛夋牸寮忔枃浠讹紝鍗曚釜鏂囦欢涓嶈秴杩�50MB</div>
+ </el-upload>
+ </el-dialog>
+ </el-col>
+ <el-col :span="1.5">
+ <el-button
+ type="warning"
+ plain
+ icon="el-icon-download"
+ size="mini"
+ @click="handleExportTemplate"
+ v-hasPermi="['system:materials:edit']"
+ >瀵煎叆妯℃澘涓嬭浇</el-button>
+ </el-col>
+
+ <el-col :span="1.5">
+
+ <el-upload
+ action=""
+
+ class="upload-demo"
+ :show-file-list="false"
+ :http-request="handleImportData"
+ accept=".xlsx,.xls"
+
+ >
+ <el-button size="mini" type="primary"
+ plain
+ icon="el-icon-top">瀵煎叆</el-button>
+
+ </el-upload>
+ </el-col>
+ <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+ </el-row>
+
+ <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="璐d换鑰�" align="center" prop="creator" />
+ <el-table-column label="鏂囦欢棰樺悕" align="center" prop="title" />
+ <el-table-column label="鏃ユ湡" align="center" prop="date" width="180">
+ <template slot-scope="scope">
+ <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="澶囨敞" align="center" prop="remarks" />
+ <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" />
+
+ <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" />
+ <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="attachmentHistoryNumbers" />
+
+
+
+ </el-table>
+
+ <pagination
+ v-show="total>0"
+ :total="total"
+ :page.sync="queryParams.pageNum"
+ :limit.sync="queryParams.pageSize"
+ @pagination="getList"
+ />
+
+
+
+ <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="16">
+ <el-form-item label="璐d换鑰�" prop="creator">
+ <el-input v-model="forms.creator" 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="璇疯緭鍏ユ棩鏈� (鏍煎紡锛歽yyy-mm-dd)" style="width: 200px;" />
+ <!-- <el-date-picker clearable
+ v-model="forms.date"
+ type="date"
+ value-format="yyyy-MM-dd"
+ placeholder="璇烽�夋嫨鏃ユ湡">
+ </el-date-picker> -->
+ </el-form-item>
+ <!-- <el-form-item label="椤垫" prop="pageOrder">
+ <el-input v-model="forms.pageOrder" placeholder="璇疯緭鍏ラ〉娆�" />
+ </el-form-item> -->
+ <el-form-item label="鏉愭枡绫诲瀷" prop="fileStyle">
+ <el-select
+ v-model="forms.fileStyle"
+
+ placeholder="璇烽�夋嫨鏉愭枡绫诲瀷"
+ clearable
+ >
+ <el-option
+ v-for="item in fileStyleOptions"
+ :key="item.value"
+ :label="item.label"
+ :value="item.value"
+ />
+ </el-select>
+ </el-form-item>
+ <el-form-item label="椤靛彿" prop="pageNumber">
+ <el-col :span="8">
+ <el-input
+ v-model.number="forms.pageNumber"
+ placeholder="璇疯緭鍏ラ〉鍙凤紙鏁板瓧绫诲瀷锛�"
+ clearable
+ type="number"
+ min="1"
+ oninput="value=value.replace(/[^\d]/g,'')"
+ @keyup.enter.native="handleQuery"
+ />
+ </el-col>
+ </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"
+ placeholder="璇烽�夋嫨鎵�澶勯樁娈�"
+ >
+ <el-option
+ v-for="item in stageOptions"
+ :key="item.value"
+ :label="item.label"
+ :value="item.value"
+ />
+ </el-select>
+ </el-form-item>
+ <el-form-item label="鍏紑灞炴��" prop="publicity">
+ <el-select
+ v-model="forms.publicity"
+ placeholder="璇烽�夋嫨鍏紑灞炴��"
+ >
+ <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="forms.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
+ v-model="forms.retentionPeriod"
+ placeholder="璇烽�夋嫨淇濈鏈熼檺"
+ >
+ <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="securityLevel">
+ <el-select
+ v-model="forms.securityLevel"
+ placeholder="璇烽�夋嫨瀵嗙骇"
+ >
+ <el-option
+ v-for="item in securityLevelOptions"
+ :key="item.value"
+ :label="item.label"
+ :value="item.value"
+ />
+ </el-select>
+ </el-form-item>
+
+
+
+ <el-form-item label="鏄惁鏁忔劅" prop="isSensitive">
+ <el-select
+ v-model="forms.isSensitive"
+ 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="isCanceled">
+ <el-select
+ v-model="forms.isCanceled"
+ placeholder="璇疯緭鍏ユ槸鍚︽敞閿�"
+ >
+ <el-option
+ v-for="item in isAttachmentOptions"
+ :key="item.value"
+ :label="item.label"
+ :value="item.value"
+ />
+ </el-select>
+ </el-form-item>
+
+
+ </el-form>
+ <div slot="footer" class="dialog-footer">
+ <el-button type="primary" @click="submitForms">纭� 瀹�</el-button>
+ <el-button @click="cancel">鍙� 娑�</el-button>
+ </div>
+
+
+
+
+ </el-dialog>
+ <!-- 娣诲姞鎴栦慨鏀广�愯濉啓鍔熻兘鍚嶇О銆戝璇濇 -->
+ <el-dialog :title="titles" :visible.sync="opens" width="800px" append-to-body>
+
+
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="璐d换鑰�" prop="creator">
@@ -19,20 +622,35 @@
/>
</el-form-item>
<el-form-item label="鏃ユ湡" prop="date">
- <el-date-picker clearable
+ <el-input v-model="queryParams.date" placeholder="璇疯緭鍏ユ棩鏈� (鏍煎紡锛歽yyy-mm-dd)" />
+ <div style="color: #999; font-size: 12px; margin-top: 4px;">璇疯緭鍏ユ纭殑鏃ユ湡鏍煎紡锛歽yyy-mm-dd</div>
+ <!-- <el-date-picker clearable
v-model="queryParams.date"
type="date"
value-format="yyyy-MM-dd"
placeholder="璇烽�夋嫨鏃ユ湡">
- </el-date-picker>
+ </el-date-picker> -->
</el-form-item>
- <el-form-item label="椤靛彿" prop="pageNumber">
+ <el-form-item label="妗f鍙�" prop="fileNumber">
<el-input
- v-model="queryParams.pageNumber"
- placeholder="璇疯緭鍏ラ〉鍙�"
+ 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">
+ <el-input
+ v-model.number="queryParams.pageNumber"
+ placeholder="璇疯緭鍏ラ〉鍙凤紙鏁板瓧绫诲瀷锛�"
+ clearable
+ type="number"
+ min="1"
+ oninput="value=value.replace(/[^\d]/g,'')"
+ @keyup.enter.native="handleQuery"
+ />
+ </el-col>
</el-form-item>
<el-form-item label="椤垫" prop="pageOrder">
<el-input
@@ -41,7 +659,24 @@
clearable
@keyup.enter.native="handleQuery"
/>
- </el-form-item>
+ </el-form-item> -->
+ <el-form-item label="鏂囧瓧鏉愭枡" prop="fileStyle">
+ <el-select
+ v-model="queryParams.fileStyle"
+
+ placeholder="璇烽�夋嫨鏂囧瓧鏉愭枡"
+ clearable
+ >
+ <el-option
+ v-for="item in fileStyleOptions"
+ :key="item.value"
+ :label="item.label"
+ :value="item.value"
+ />
+ </el-select>
+ </el-form-item>
+
+
<el-form-item label="鎵�澶勯樁娈�" prop="stage">
<el-select
v-model="queryParams.stage"
@@ -114,7 +749,7 @@
</el-select>
</el-form-item>
<el-form-item label="鏄惁鏁忔劅" prop="isSensitive">
-
+
<el-select
@@ -131,7 +766,7 @@
</el-select>
</el-form-item>
<el-form-item label="鏄惁娉ㄩ攢" prop="isCanceled">
-
+
<el-select
v-model="queryParams.isCanceled"
@@ -153,258 +788,50 @@
</el-form-item>
</el-form>
- <el-row :gutter="10" class="mb8">
- <el-col :span="1.5">
- <el-button
- type="primary"
- plain
- icon="el-icon-plus"
- size="mini"
- @click="handleAdd"
- v-hasPermi="['system:materials:add']"
- >鏂板</el-button>
- </el-col>
- <el-col :span="1.5">
- <el-button
- type="success"
- plain
- icon="el-icon-edit"
- size="mini"
- :disabled="single"
- @click="handleUpdate"
- v-hasPermi="['system:materials:edit']"
- >淇敼</el-button>
- </el-col>
- <el-col :span="1.5">
- <el-button
- type="danger"
- plain
- icon="el-icon-delete"
- size="mini"
- :disabled="multiple"
- @click="handleDelete"
- 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>
- <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
- </el-row>
-
- <el-table v-loading="loading" :data="materialsList" @selection-change="handleSelectionChange">
- <el-table-column type="selection" width="55" align="center" />
- <el-table-column label="璐d换鑰�" align="center" prop="creator" />
- <el-table-column label="鏂囦欢棰樺悕" align="center" prop="title" />
- <el-table-column label="鏃ユ湡" align="center" prop="date" width="180">
- <template slot-scope="scope">
- <span>{{ parseTime(scope.row.date, '{y}-{m}-{d}') }}</span>
- </template>
- </el-table-column>
- <el-table-column label="椤靛彿" align="center" prop="pageNumber" />
- <el-table-column label="椤垫" align="center" prop="pageOrder" />
- <el-table-column label="鎵�澶勯樁娈�" align="center" prop="stage" />
- <el-table-column label="鍏紑灞炴��" align="center" 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="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="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="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
- v-show="total>0"
- :total="total"
- :page.sync="queryParams.pageNum"
- :limit.sync="queryParams.pageSize"
- @pagination="getList"
- />
-
- <!-- 娣诲姞鎴栦慨鏀广�愯濉啓鍔熻兘鍚嶇О銆戝璇濇 -->
- <el-dialog :title="title" :visible.sync="open" width="800px" append-to-body>
- <el-form ref="form" :model="form" :rules="rules" label-width="80px">
- <el-form-item label="璐d换鑰�" prop="creator">
- <el-input v-model="form.creator" placeholder="璇疯緭鍏ヨ矗浠昏��" />
- </el-form-item>
- <el-form-item label="鏂囦欢棰樺悕" prop="title">
- <el-input v-model="form.title" placeholder="璇疯緭鍏ユ枃浠堕鍚�" />
- </el-form-item>
- <el-form-item label="鏃ユ湡" prop="date">
- <el-date-picker clearable
- v-model="form.date"
- type="date"
- value-format="yyyy-MM-dd"
- placeholder="璇烽�夋嫨鏃ユ湡">
- </el-date-picker>
- </el-form-item>
- <el-form-item label="椤靛彿" prop="pageNumber">
- <el-input v-model="form.pageNumber" placeholder="璇疯緭鍏ラ〉鍙�" />
- </el-form-item>
- <el-form-item label="椤垫" prop="pageOrder">
- <el-input v-model="form.pageOrder" placeholder="璇疯緭鍏ラ〉娆�" />
- </el-form-item>
- <el-form-item label="鎵�澶勯樁娈�" prop="stage">
- <el-select
- v-model="form.stage"
- placeholder="璇烽�夋嫨鎵�澶勯樁娈�"
- >
- <el-option
- v-for="item in stageOptions"
- :key="item.value"
- :label="item.label"
- :value="item.value"
- />
- </el-select>
- </el-form-item>
- <el-form-item label="鍏紑灞炴��" prop="publicity">
- <el-select
- v-model="form.publicity"
- placeholder="璇烽�夋嫨鍏紑灞炴��"
- >
- <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="retentionPeriod">
- <el-select
- v-model="form.retentionPeriod"
- placeholder="璇烽�夋嫨淇濈鏈熼檺"
- >
- <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="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>
-
-
-
- <el-form-item label="鏄惁鏁忔劅" prop="isSensitive">
- <el-select
- v-model="form.isSensitive"
- 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="isCanceled">
- <el-select
- v-model="form.isCanceled"
- placeholder="璇疯緭鍏ユ槸鍚︽敞閿�"
- >
- <el-option
- v-for="item in isAttachmentOptions"
- :key="item.value"
- :label="item.label"
- :value="item.value"
- />
- </el-select>
- </el-form-item>
-
-
- </el-form>
- <div slot="footer" class="dialog-footer">
- <el-button type="primary" @click="submitForm">纭� 瀹�</el-button>
- <el-button @click="cancel">鍙� 娑�</el-button>
- </div>
</el-dialog>
</div>
</template>
<script>
- import { listMaterials, getMaterials, delMaterials, addMaterials, updateMaterials } from "@/api/system/materials"
+ import { 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"
+import {delArchiverecordstouserByReIdAndUid} from "@/api/system/archiverecordstouser"
export default {
name: "Materials",
data() {
return {
- // 娣诲姞瀵嗙骇閫夐」
+ // 璁板綍鍏冪礌鍒濆浣嶇疆鍜岀姸鎬�
+ originalOffsetLeft: 0,
+ originalWidth: 0,
+ placeholderEl: null,
+
+ importDialogVisible: false,
+ fileList: [],
+ uploadUrl: process.env.VUE_APP_BASE_API +'/system/materials/upload/'+this.recordId, // 鏇挎崲涓哄疄闄呯殑涓婁紶鎺ュ彛
+ headers: {
+ Authorization: 'Bearer ' + getToken()
+ },
+ uploadParams: {
+ type: 'material' // 鑷畾涔変笂浼犵被鍨�
+ },
+ // 娣诲姞鏉愭枡绫诲瀷閫夐」
+ fileStyleOptions: [
+ { value: '鏂囧瓧鏉愭枡', label: '鏂囧瓧鏉愭枡' },
+ { value: '鍥炬牱鏉愭枡', label: '鍥炬牱鏉愭枡' },
+ { value: '鐓х墖鏉愭枡', label: '鐓х墖鏉愭枡' },
+ { value: '鍏朵粬鏉愭枡', label: '鍏朵粬鏉愭枡' },
+ ],
+
+ // 娣诲姞瀵嗙骇閫夐」
securityLevelOptions: [
{ value: '绉樺瘑', label: '绉樺瘑' },
- { value: '鏅��', label: '鏅��' }
+ { value: '鏅��', label: '鏅��' },
+ { value: '璇ラ〉鍙﹀瓨', label: '璇ラ〉鍙﹀瓨' },
+ { value: '鍐呴儴鐢ㄩ��', label: '鍐呴儴鐢ㄩ��' },
+ { value: '鍐呴儴鐢ㄥ浘', label: '鍐呴儴鐢ㄥ浘' },
],
// 娣诲姞淇濈鏈熼檺閫夐」
retentionPeriodOptions: [
@@ -430,7 +857,8 @@
{ value: '02-鍔炴杩囩▼鏉愭枡', label: '02-鍔炴杩囩▼鏉愭枡' },
{ value: '03-缁撹鎬ф枃浠�', label: '03-缁撹鎬ф枃浠�' },
{ value: '04-鍏朵粬鏉愭枡', label: '04-鍏朵粬鏉愭枡' },
- { value: '05-妗f鍙樻洿鏉愭枡', label: '05-妗f鍙樻洿鏉愭枡' }
+ { value: '05-妗f鍙樻洿鏉愭枡', label: '05-妗f鍙樻洿鏉愭枡' },
+ { value: '06-涓氬姟鏁版嵁', label: '06-涓氬姟鏁版嵁' },
],
recordId: null,
// 閬僵灞�
@@ -449,8 +877,17 @@
materialsList: [],
// 寮瑰嚭灞傛爣棰�
title: "",
+ // 鏂囦欢棰樺悕鎼滅储鐩稿叧
+ titleSuggestions: [], // 鍖归厤鐨勬枃浠堕鍚嶅缓璁垪琛�
+ showTitleSuggestions: false, // 鏄惁鏄剧ず寤鸿妗�
+ titleSearchTimer: null, // 闃叉姈瀹氭椂鍣�
+ creatorSuggestions: [], // 鍖归厤鐨勮矗浠讳汉寤鸿鍒楄〃
+ showCreatorSuggestions: false, // 鏄惁鏄剧ず璐d换浜哄缓璁
+ creatorSearchTimer: null, // 璐d换浜烘煡璇㈤槻鎶栧畾鏃跺櫒
// 鏄惁鏄剧ず寮瑰嚭灞�
open: false,
+ titles: "",
+ opens: false,
// 鏌ヨ鍙傛暟
queryParams: {
pageNum: 1,
@@ -486,25 +923,91 @@
// ... 鍏朵粬form灞炴�т繚鎸佷笉鍙� ...
securityLevel: '鏅��' // 璁剧疆瀵硅瘽妗嗚〃鍗曢粯璁ゅ��
},
+ forms:
+ {},
// 琛ㄥ崟鏍¢獙
rules: {
creator: [
- { required: true, message: "$comment涓嶈兘涓虹┖", trigger: "blur" }
+ // { required: true, message: "鍒涘缓鑰呬笉鑳戒负绌�", trigger: "blur" },
+ { max: 85, message: "鏈�澶ч暱搴︿负85涓瓧绗�", trigger: "blur" }
],
title: [
- { required: true, message: "$comment涓嶈兘涓虹┖", trigger: "blur" }
+ { required: true, message: "妗堝嵎棰樺悕涓嶈兘涓虹┖", trigger: "blur" },
+ // { pattern: /^[^\\/:*?"<>涓╙+$/, message: "鏂囦欢鍚嶄笉鑳藉寘鍚� \\:*?"<>涓� 绛夌壒娈婂瓧绗�", trigger: "blur" },
+ { max: 85, message: "鏈�澶ч暱搴︿负85涓瓧绗�", trigger: "blur" }
],
date: [
- { required: true, message: "$comment涓嶈兘涓虹┖", trigger: "blur" }
+ // { required: true, message: "鏃ユ湡涓嶈兘涓虹┖", trigger: "blur" },
+ { pattern: /^\d{4}-\d{2}-\d{2}$/, message: "鏃ユ湡鏍煎紡蹇呴』涓簓yyy-mm-dd", trigger: "blur" },
+ { max: 85, message: "鏈�澶ч暱搴︿负85涓瓧绗�", trigger: "blur" }
],
+ pageNumber: [
+ { required: true, message: "椤靛彿涓嶈兘涓虹┖", trigger: "blur" },
+ { type: 'number', message: '椤靛彿蹇呴』涓烘暟瀛楃被鍨�', trigger: ['blur', 'change'] },
+ { pattern: /^[1-9]\d*$/, message: '璇疯緭鍏ュぇ浜�0鐨勬鏁存暟', trigger: 'blur' },
+ // { max: 85, message: "鏈�澶ч暱搴︿负85涓瓧绗�", trigger: "blur" }
+ ],
+ stage: [
+ { 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" }
+ ]
}
}
},
+
+
+
+ mounted() {
+ // 娣诲姞婊氬姩浜嬩欢鐩戝惉
+ window.addEventListener('scroll', this.handleScroll);
+ // 鏀逛负鐩戝惉keydown浜嬩欢
+ document.addEventListener('keydown', this.handleKeyDown)
+ },
+ beforeDestroy() {
+ // 绉婚櫎婊氬姩浜嬩欢鐩戝惉
+
+ document.removeEventListener('keydown', this.handleKeyDown)
+ // 绉婚櫎婊氬姩浜嬩欢鐩戝惉
+ window.removeEventListener('scroll', this.handleScroll);
+ // 娓呯悊鍗犱綅绗�
+ if (this.placeholderEl && this.placeholderEl.parentNode) {
+ this.placeholderEl.parentNode.removeChild(this.placeholderEl);
+ }
+ },
created() {
//const roleId = this.$route.params && this.$route.params.roleId
const recordId = this.$route.params && this.$route.params.recordId
- alert(recordId)
+ //alert(recordId)
this.recordId = recordId;
+ this.uploadUrl = process.env.VUE_APP_BASE_API +'/system/materials/upload/'+this.recordId
+// alert('Bearer ' + getToken())
+ this.reset()
+ this.form.securityLevel = '鏅��' // 璁剧疆瀵硅瘽妗嗚〃鍗曢粯璁ゅ��
+ this.form.isSensitive = '鍚�' // 璁剧疆瀵硅瘽妗嗚〃鍗曢粯璁ゅ��
+ this.form.isCanceled = '鍚�' // 璁剧疆瀵硅瘽妗嗚〃鍗曢粯璁ゅ��
+ this.form.isAttachment = '鍚�' // 璁剧疆瀵硅瘽妗嗚〃鍗曢粯璁ゅ��
+ this.form.isDiagram = '鍚�' // 璁剧疆瀵硅瘽妗嗚〃鍗曢粯璁ゅ��
+ this.form.retentionPeriod = '姘镐箙' // 璁剧疆瀵硅瘽妗嗚〃鍗曢粯璁ゅ��
if (recordId) {
this.queryParams.recordId = recordId
@@ -512,10 +1015,121 @@
}
},
methods: {
+ // 涓婁紶澶辫触鍥炶皟
+ handleError(err, file, fileList) {
+ this.$modal.msgError("涓婁紶澶辫触: " + err.message)
+ // 娓呴櫎涓婁紶鍒楄〃
+ this.$refs.upload.clearFiles();
+ },
+ // 涓婁紶鎴愬姛鍥炶皟
+ handleSuccess(response, file, fileList) {
+ if (response.code === 200) {
+ this.$modal.msgSuccess("涓婁紶鎴愬姛")
+ // 娓呴櫎涓婁紶鍒楄〃
+ this.$refs.upload.clearFiles();
+ // 鍏抽棴涓婁紶瀵硅瘽妗�
+ this.importDialogVisible = false;
+ // 鍒锋柊鍒楄〃鏁版嵁
+ this.getList(); // 杩欓噷鍙互璋冪敤鎺ュ彛鍏宠仈涓婁紶鐨勬枃浠跺拰褰撳墠璁板綍
+ //鏇存柊妗f鐨勭姸鎬�
+
+ } else {
+ // alert(234)
+ console.log(response)
+ this.$modal.msgError(response.msg)
+ }
+ },
+ // 鎵撳紑瀵煎叆瀵硅瘽妗�
+ handleImport() {
+ this.importDialogVisible = true
+ },
+ // 鏂囦欢绉婚櫎
+ handleRemove(file, fileList) {
+ this.fileList = fileList
+ },
+ // 鏂囦欢棰勮
+ handlePreview(file) {
+ console.log(file)
+ },
+ handleFileChange(file, fileList) {
+ console.log('褰撳墠鏂囦欢鍒楄〃:', fileList);
+ this.fileList = fileList;
+ },
+ // 鎻愪氦涓婁紶
+ submitUpload() {
+ // 鑾峰彇褰撳墠閫夋嫨鐨勬枃浠舵暟閲�
+ const fileCount = this.fileList.length
+ if (fileCount === 0) {
+ this.$modal.msgWarning('璇峰厛閫夋嫨鏂囦欢鍐嶄笂浼�')
+ return
+ }
+ if(fileCount!==this.total)
+ {
+ this.$modal.msgWarning('璇烽�夋嫨涓庤褰曟暟涓�鑷寸殑鏂囦欢')
+ return
+ }
+ //鍒ゆ柇椤靛彿涓庝笂浼犱笂浼犵殑鏂囦欢鐨勯〉鍙锋槸涓嶆槸涓�涓�瀵瑰簲鐨�
+ islegal(this.recordId).then(response => {
+ console.log(response.data)
+ var res = response.data
+ if(res)
+ {
+ // 鎵ц涓婁紶
+ this.$refs.upload.submit()
+ this.getList()
+ }
+ else
+ {
+ this.$modal.msgError("椤靛彿涓嶈繛缁紝璇蜂慨鏀逛负杩炵画姝g‘鐨勯〉鍙凤紒")
+ }
+ })
+
+ },
+ clearFileList() {
+ this.fileList = [];
+ this.$modal.msgSuccess('宸叉竻绌轰笂浼犲垪琛�');
+ },
+ handleKeyDown(e) {
+ // 鍦╧eydown浜嬩欢涓洿鏃╁湴闃绘榛樿琛屼负
+ if ((e.ctrlKey || e.metaKey) && e.key === 's') {
+ e.preventDefault()
+ this.$refs.form.validate(valid => {
+ if (valid) {
+ this.submitForm();
+ } else {
+ this.$message.error('璇峰~鍐欐墍鏈夊繀濉瓧娈�');
+ }
+ });
+ }
+ // 鏂板Ctrl+D蹇嵎閿�
+ if ((e.ctrlKey || e.metaKey) && e.key === 'd') {
+ e.preventDefault();
+ this.resetForms();
+ }
+ if ((e.ctrlKey || e.metaKey) && e.key === 'w') {
+ e.preventDefault();
+ this.closeCurrentTab();
+ }
+ },
/** 鏌ヨ銆愯濉啓鍔熻兘鍚嶇О銆戝垪琛� */
getList() {
this.loading = true
- listMaterials(this.queryParams).then(response => {
+
+ // 澶勭悊妗f鍙锋悳绱㈤�昏緫锛屽寘鎷寖鍥存悳绱�
+ const queryParams = { ...this.queryParams }
+
+ // 妫�鏌ユ槸鍚﹀寘鍚寖鍥存悳绱㈢鍙�
+ if (queryParams.fileNumber && queryParams.fileNumber.includes('~')) {
+ const rangeParts = queryParams.fileNumber.split('~')
+ if (rangeParts.length === 2) {
+ // 瑙f瀽鑼冨洿鎼滅储鍙傛暟
+ // 淇濈暀鍘熷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
@@ -527,6 +1141,145 @@
this.open = false
this.reset()
},
+ resets() {
+ this.forms = {
+ materialId: null,
+ creator: null,
+ title: null,
+ date: null,
+ pageNumber: null,
+ pageOrder: null,
+ stage: null,
+ publicity: null,
+ isAttachment: null,
+ isDiagram: null,
+ retentionPeriod: null,
+ securityLevel: null,
+ isSensitive: null,
+ isCanceled: null,
+ format: null,
+ sizeType: null,
+ horizontalResolution: null,
+ verticalResolution: null,
+ width: null,
+ height: null,
+ fileSize: null,
+ attachmentHistoryNumbers: null,
+ remarks: null,
+ createdAt: null,
+ updatedAt: null,
+ recordId: null
+ }
+ this.resetForm("forms")
+ },
+ // 澶勭悊鏂囦欢棰樺悕杈撳叆浜嬩欢
+ handleTitleInput() {
+ // 娓呴櫎涔嬪墠鐨勫畾鏃跺櫒锛堥槻鎶栵級
+ if (this.titleSearchTimer) {
+ clearTimeout(this.titleSearchTimer);
+ }
+
+ // 褰撹緭鍏ユ涓虹┖鏃讹紝娓呯┖寤鸿鍒楄〃
+ if (!this.form.title.trim()) {
+ this.titleSuggestions = [];
+ return;
+ }
+
+ // 璁剧疆鏂扮殑瀹氭椂鍣紝寤惰繜鎵ц鏌ヨ
+ this.titleSearchTimer = setTimeout(() => {
+ this.searchTitleSuggestions();
+ }, 300);
+ },
+
+ // 鎼滅储鏂囦欢棰樺悕寤鸿
+ searchTitleSuggestions() {
+ // 浣跨敤鐜版湁鐨刲istMaterials API锛屼紶鍏itle浣滀负鏌ヨ鍙傛暟
+ listMaterials(
+ {
+ title: this.form.title,
+ pageSize: 10 // 闄愬埗杩斿洖鏁伴噺
+ }).then(response => {
+ console.log(response.data.data)
+ // alert(23)
+ // 鎻愬彇骞跺幓閲峵itle瀛楁
+ const titles = response.data.data.map(item => item.title);
+ // 鍘婚噸澶勭悊
+ this.titleSuggestions = [...new Set(titles)];
+ // 鏄剧ず寤鸿妗�
+ this.showTitleSuggestions = true;
+ }).catch(() => {
+ // 閿欒澶勭悊
+ this.titleSuggestions = [];
+ });
+ },
+
+ // 澶勭悊澶辩劍浜嬩欢
+ handleTitleBlur() {
+ // 寤惰繜闅愯棌锛屼互渚垮彲浠ョ偣鍑婚�夋嫨寤鸿椤�
+ setTimeout(() => {
+ this.showTitleSuggestions = false;
+ }, 200);
+ },
+
+ // 閫夋嫨寤鸿椤�
+ selectTitleSuggestion(title) {
+ this.form.title = title;
+ this.showTitleSuggestions = false;
+ },
+
+ // 澶勭悊璐d换浜鸿緭鍏ヤ簨浠�
+ handleCreatorInput() {
+ // 娓呴櫎涔嬪墠鐨勫畾鏃跺櫒锛堥槻鎶栵級
+ if (this.creatorSearchTimer) {
+ clearTimeout(this.creatorSearchTimer);
+ }
+
+ // 褰撹緭鍏ユ涓虹┖鏃讹紝娓呯┖寤鸿鍒楄〃
+ if (!this.form.creator.trim()) {
+ this.creatorSuggestions = [];
+ return;
+ }
+
+ // 璁剧疆鏂扮殑瀹氭椂鍣紝寤惰繜鎵ц鏌ヨ
+ this.creatorSearchTimer = setTimeout(() => {
+ this.searchCreatorSuggestions();
+ }, 300);
+ },
+
+ // 鎼滅储璐d换浜哄缓璁�
+ searchCreatorSuggestions() {
+ // 浣跨敤鐜版湁鐨刲istMaterials API锛屼紶鍏reator浣滀负鏌ヨ鍙傛暟
+ listMaterials(
+ {
+ creator: this.form.creator,
+ pageSize: 10 // 闄愬埗杩斿洖鏁伴噺
+ }).then(response => {
+ // 鎻愬彇骞跺幓閲峜reator瀛楁
+ const creators = response.data.data.map(item => item.creator).filter(Boolean);
+ // 鍘婚噸澶勭悊
+ this.creatorSuggestions = [...new Set(creators)];
+ // 鏄剧ず寤鸿妗�
+ this.showCreatorSuggestions = true;
+ }).catch(() => {
+ // 閿欒澶勭悊
+ this.creatorSuggestions = [];
+ });
+ },
+
+ // 澶勭悊璐d换浜鸿緭鍏ユ澶辩劍浜嬩欢
+ handleCreatorBlur() {
+ // 寤惰繜闅愯棌锛屼互渚垮彲浠ョ偣鍑婚�夋嫨寤鸿椤�
+ setTimeout(() => {
+ this.showCreatorSuggestions = false;
+ }, 200);
+ },
+
+ // 閫夋嫨璐d换浜哄缓璁」
+ selectCreatorSuggestion(creator) {
+ this.form.creator = creator;
+ this.showCreatorSuggestions = false;
+ },
+
// 琛ㄥ崟閲嶇疆
reset() {
this.form = {
@@ -577,45 +1330,120 @@
},
/** 鏂板鎸夐挳鎿嶄綔 */
handleAdd() {
- this.reset()
- this.form.securityLevel = '鏅��' // 璁剧疆瀵硅瘽妗嗚〃鍗曢粯璁ゅ��
- this.form.isSensitive = '鍚�' // 璁剧疆瀵硅瘽妗嗚〃鍗曢粯璁ゅ��
- this.form.isCanceled = '鍚�' // 璁剧疆瀵硅瘽妗嗚〃鍗曢粯璁ゅ��
- this.form.isAttachment = '鍚�' // 璁剧疆瀵硅瘽妗嗚〃鍗曢粯璁ゅ��
- this.form.isDiagram = '鍚�' // 璁剧疆瀵硅瘽妗嗚〃鍗曢粯璁ゅ��
- this.form.retentionPeriod = '姘镐箙' // 璁剧疆瀵硅瘽妗嗚〃鍗曢粯璁ゅ��
- this.open = true
- this.title = "娣诲姞妗堝嵎璇︾粏淇℃伅"
+
+ this.opens = true
+ this.titles = "鎼滅储妗堝嵎璇︾粏淇℃伅"
},
/** 淇敼鎸夐挳鎿嶄綔 */
handleUpdate(row) {
- this.reset()
+ this.resets()
const materialId = row.materialId || this.ids
getMaterials(materialId).then(response => {
- this.form = response.data
+ this.forms = response.data
this.open = true
this.title = "淇敼妗堝嵎璇︾粏淇℃伅"
})
},
+ resetForms()
+ {
+ this.reset()
+ 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.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('璇峰~鍐欐墍鏈夊繀濉瓧娈�');
+
+ }
+ })
+ },
/** 鎻愪氦鎸夐挳 */
- submitForm() {
- this.$refs["form"].validate(valid => {
+ submitForms() {
+ this.$refs["forms"].validate(valid => {
if (valid) {
- if (this.form.materialId != null) {
- updateMaterials(this.form).then(response => {
+ if (this.forms.materialId != null) {
+ updateMaterials(this.forms).then(response => {
this.$modal.msgSuccess("淇敼鎴愬姛")
+ // 淇敼鎴愬姛鍚庯紝鍏夋爣璺冲洖鏂囦欢缂栧彿杈撳叆妗�
+ this.$nextTick(() => {
+ this.$refs.documentNumberInput.focus();
+ });
this.open = false
this.getList()
})
} else {
- console.log(this.form)
- this.form.recordId = this.recordId
- console.log("==============+++++++++++++++============")
- addMaterials(this.form).then(response => {
- this.$modal.msgSuccess("鏂板鎴愬姛")
- this.open = false
- this.getList()
- })
+
}
}
})
@@ -630,12 +1458,201 @@
this.$modal.msgSuccess("鍒犻櫎鎴愬姛")
}).catch(() => {})
},
- /** 瀵煎嚭鎸夐挳鎿嶄綔 */
+ /** 瀵煎嚭鎸夐挳鎿嶄綔 - 鏀寔瀵煎嚭閫変腑琛屾垨鍏ㄩ儴鏁版嵁 */
handleExport() {
- this.download('system/materials/export', {
- ...this.queryParams
- }, `materials_${new Date().getTime()}.xlsx`)
- }
+ // 鍒ゆ柇鏄惁鏈夐�変腑鐨勮
+ if (this.ids && this.ids.length > 0) {
+ // 鏄剧ず瀵煎嚭閫変腑琛岀殑鎻愮ず
+ this.$message.info(`姝e湪瀵煎嚭${this.ids.length}鏉¢�変腑鐨勬暟鎹�...`);
+ // 瀵煎嚭閫変腑鐨勮鏁版嵁
+ this.download('system/materials/export', {
+ ids: this.ids.join(','),
+ // exportType: 'selected'
+ }, `materials_selected_${new Date().getTime()}.xlsx`)
+ } else {
+ // 鏄剧ず瀵煎嚭鍏ㄩ儴鏁版嵁鐨勬彁绀�
+ this.$message.info('姝e湪瀵煎嚭绗﹀悎褰撳墠鏌ヨ鏉′欢鐨勬墍鏈夋暟鎹�...');
+ // 娌℃湁閫変腑琛屾椂锛屽鍑哄綋鍓嶆煡璇㈡潯浠剁殑鏁版嵁
+ this.download('system/materials/export', {
+ ...this.queryParams
+ }, `materials_${new Date().getTime()}.xlsx`)
+ }
+ },
+
+ /** 瀵煎叆妯℃澘涓嬭浇鎿嶄綔*/
+ handleExportTemplate()
+ {
+ this.download('/system/materials/model', {
+
+ }, `materials_${new Date().getTime()}.xlsx`)
+ },
+ /** 瀵煎叆鎿嶄綔*/
+ async handleImportData({file}){
+ // 妫�鏌ユ枃浠剁被鍨嬫槸鍚︿负xlsx
+ // if (!params.file.name.endsWith('.xlsx')) {
+ // this.$message.error('璇蜂笂浼�.xlsx鏍煎紡鐨勬枃浠�');
+ // return;
+ // }
+ const formData = new FormData();
+ formData.append('file', file);
+ formData.append('recordId', this.recordId)
+ // alert(this.recordId)
+ console.log(file)
+
+ // 鏄剧ず鍔犺浇涓姸鎬�
+ const loading = this.$loading({
+ lock: true,
+ text: '涓婁紶涓�...',
+ spinner: 'el-icon-loading',
+ background: 'rgba(0, 0, 0, 0.7)'
+ });
+
+ enload(formData, {
+ headers: {
+ 'Content-Type': 'multipart/form-data'
}
+ }).then(response => {
+ loading.close();
+ this.$message.success('瀵煎叆鎴愬姛');
+ this.getList();
+ }).catch(error => {
+ loading.close();
+ 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(() => {})
+ },
+
+ // 婊氬姩浜嬩欢澶勭悊
+ handleScroll() {
+ const fixedRow = document.querySelector('.fixed-row');
+ if (!fixedRow) return;
+
+ // 鑾峰彇鍏冪礌褰撳墠浣嶇疆淇℃伅
+ const rect = fixedRow.getBoundingClientRect();
+ const parentRect = fixedRow.parentNode.getBoundingClientRect();
+
+ // 妫�鏌ュ厓绱犳槸鍚﹀簲璇ヨ繘鍏ユ偓娴姸鎬�
+ if (rect.top <= 0) {
+ // 鍙湪涓嶅湪floating鐘舵�佹椂娣诲姞锛岄伩鍏嶉噸澶嶆搷浣�
+ if (!fixedRow.classList.contains('floating')) {
+ // 璁板綍鍏冪礌鍘熷鐨勫乏鍋忕Щ閲忥紙鐩稿浜庣埗瀹瑰櫒锛�
+ this.originalOffsetLeft = rect.left - parentRect.left;
+ // 璁板綍鍏冪礌鐨勫師濮嬪搴�
+ this.originalWidth = rect.width;
+
+ // 娣诲姞floating绫伙紝浣垮厓绱犲浐瀹氬湪椤堕儴
+ fixedRow.classList.add('floating');
+ // 璁剧疆鍥哄畾浣嶇疆鏃剁殑鏍峰紡锛屼繚鎸佷笌鍘熷甯冨眬涓�鑷�
+ fixedRow.style.left = this.originalOffsetLeft + 'px';
+ fixedRow.style.width = this.originalWidth + 'px';
+
+ // 娣诲姞涓存椂鍗犱綅绗︼紝闃叉椤甸潰甯冨眬璺冲姩
+ if (!this.placeholderEl) {
+ this.placeholderEl = document.createElement('div');
+ this.placeholderEl.style.height = rect.height + 'px';
+ this.placeholderEl.style.marginBottom = '10px';
+ this.placeholderEl.style.boxSizing = 'border-box';
+ fixedRow.parentNode.insertBefore(this.placeholderEl, fixedRow.nextSibling);
+ }
+ }
+ } else {
+ // 褰撳厓绱犲洖鍒拌鍙i《閮ㄤ互涓婃椂锛岀Щ闄ゆ偓娴姸鎬侊紝鎭㈠鍒版枃妗f祦涓�
+ if (fixedRow.classList.contains('floating')) {
+ // 绉婚櫎floating绫�
+ fixedRow.classList.remove('floating');
+ // 閲嶇疆鏍峰紡锛岃娴忚鍣ㄤ娇鐢ㄥ師濮嬫牱寮�
+ fixedRow.style.left = '';
+ fixedRow.style.width = '';
+ // 绉婚櫎鍗犱綅绗︼紝璁╁厓绱犲洖鍒板師濮嬩綅缃�
+ if (this.placeholderEl && this.placeholderEl.parentNode) {
+ this.placeholderEl.parentNode.removeChild(this.placeholderEl);
+ this.placeholderEl = null;
+ }
+ }
+ }
+ },
+
+}
}
- </script>
+</script>
+<style scoped>
+.title-search-wrapper {
+ position: relative;
+ width: 100%;
+ }
+
+ .title-suggestions {
+ position: absolute;
+ top: 100%;
+ left: 0;
+ right: 0;
+ z-index: 1000;
+ background-color: #fff;
+ border: 1px solid #dcdfe6;
+ border-radius: 4px;
+ box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
+ max-height: 200px;
+ overflow-y: auto;
+ margin-top: 4px;
+ }
+
+ .suggestion-item {
+ padding: 10px 15px;
+ cursor: pointer;
+ transition: background-color 0.2s;
+ }
+
+ .suggestion-item:hover {
+ background-color: #f5f7fa;
+ }
+
+.title-border {
+ border-bottom: 1px solid #dcdfe6;
+ padding-bottom: 10px;
+ margin-bottom: 20px;
+}
+.fixed-row {
+ position: static;
+ z-index: 1000;
+ background-color: #fff;
+ padding: 10px;
+ box-shadow: 0 2px 4px rgba(0,0,0,0.1);
+ margin-bottom: 10px;
+ box-sizing: border-box;
+}
+.fixed-row.floating {
+ position: fixed;
+ top: 0;
+ z-index: 2000;
+ padding: 10px;
+ margin-bottom: 0;
+ box-shadow: 0 2px 8px rgba(0,0,0,0.15);
+ background-color: #fff;
+}
+</style>
--
Gitblit v1.9.1