Browse Source

处理文件查询,按文件目录递归查询,选中上级目录可以查看该目录及所有下级目录的文件。

wukai 2 years ago
parent
commit
3cf02e5a9c
3 changed files with 70 additions and 44 deletions
  1. 10 10
      src/components/FileUpload/index.vue
  2. 1 1
      src/views/doc/dir/index.vue
  3. 59 33
      src/views/doc/info/index.vue

+ 10 - 10
src/components/FileUpload/index.vue

@@ -20,7 +20,7 @@
       <div class="el-upload__tip" slot="tip" v-if="showTip">
         请上传
         <template v-if="fileSize"> 大小不超过 <b style="color: #f56c6c">{{ fileSize }}MB</b> </template>
-        <template v-if="fileType"> 格式为 <b style="color: #f56c6c">{{ fileType.join("/") }}</b> </template>
+        <!-- <template v-if="fileType"> 格式为 <b style="color: #f56c6c">{{ fileType.join("/") }}</b> </template> -->
         的文件
       </div>
     </el-upload>
@@ -113,15 +113,15 @@ export default {
     // 上传前校检格式和大小
     handleBeforeUpload(file) {
       // 校检文件类型
-      if (this.fileType) {
-        const fileName = file.name.split('.');
-        const fileExt = fileName[fileName.length - 1];
-        const isTypeOk = this.fileType.indexOf(fileExt) >= 0;
-        if (!isTypeOk) {
-          this.$modal.msgError(`文件格式不正确, 请上传${this.fileType.join("/")}格式文件!`);
-          return false;
-        }
-      }
+      // if (this.fileType) {
+      //   const fileName = file.name.split('.');
+      //   const fileExt = fileName[fileName.length - 1];
+      //   const isTypeOk = this.fileType.indexOf(fileExt) >= 0;
+      //   if (!isTypeOk) {
+      //     this.$modal.msgError(`文件格式不正确, 请上传${this.fileType.join("/")}格式文件!`);
+      //     return false;
+      //   }
+      // }
       // 校检文件大小
       if (this.fileSize) {
         const isLt = file.size / 1024 / 1024 < this.fileSize;

+ 1 - 1
src/views/doc/dir/index.vue

@@ -26,7 +26,7 @@
 
     <el-table v-if="refreshTable" v-loading="loading" :data="dirList" row-key="dirId" :default-expand-all="isExpandAll"
       :tree-props="{children: 'children', hasChildren: 'hasChildren'}">
-      <el-table-column label="目录名称" align="center" prop="dirName" />
+      <el-table-column label="目录名称" align="left" prop="dirName" />
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
         <template slot-scope="scope">
           <el-button size="mini" type="text" icon="el-icon-plus" @click="handleAdd(scope.row)"

+ 59 - 33
src/views/doc/info/index.vue

@@ -8,19 +8,19 @@
             default-expand-all highlight-current @node-click="handleNodeClick" />
         </div>
       </el-col>
-      <!--文数据-->
+      <!--文数据-->
       <el-col :span="16" :xs=24>
         <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch"
           label-width="68px">
-          <el-form-item label="文名称" prop="docName">
-            <el-input v-model="queryParams.docName" placeholder="请输入文名称" clearable @keyup.enter.native="handleQuery" />
+          <el-form-item label="文名称" prop="docName">
+            <el-input v-model="queryParams.docName" placeholder="请输入文名称" clearable @keyup.enter.native="handleQuery" />
           </el-form-item>
-          <el-form-item label="文级别" prop="docLevel">
-            <el-input v-model="queryParams.docLevel" placeholder="请输入文级别" clearable
+          <el-form-item label="文级别" prop="docLevel">
+            <el-input v-model="queryParams.docLevel" placeholder="请输入文级别" clearable
               @keyup.enter.native="handleQuery" />
           </el-form-item>
-          <el-form-item label="文年份" prop="createYear">
-            <el-input v-model="queryParams.createYear" placeholder="请输入文创建年份" clearable
+          <el-form-item label="文年份" prop="createYear">
+            <el-input v-model="queryParams.createYear" placeholder="请输入文创建年份" clearable
               @keyup.enter.native="handleQuery" />
           </el-form-item>
           <el-form-item>
@@ -51,12 +51,15 @@
 
         <el-table v-loading="loading" :data="infoList" @selection-change="handleSelectionChange">
           <el-table-column type="selection" width="55" align="center" />
-          <el-table-column label="文档ID" align="center" prop="docId" />
-          <el-table-column label="文档名称" align="center" prop="docName" />
-          <el-table-column label="文档级别" align="center" prop="docLevel" />
-          <el-table-column label="文档年份" align="center" prop="createYear" />
+          <el-table-column label="文件名称" align="center" prop="docName" />
+          <el-table-column label="文件大小" align="center" prop="docSize" :formatter="fileSizeData" />
+          <el-table-column label="修改时间" align="center" prop="updateTime" />
+          <el-table-column label="文件级别" align="center" prop="docLevel" />
+          <el-table-column label="文件年份" align="center" prop="createYear" />
           <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
             <template slot-scope="scope">
+              <el-button size="mini" type="text" icon="el-icon-view" @click="handlePreview(scope.row)">分享</el-button>
+              <el-button size="mini" type="text" icon="el-icon-view" @click="handlePreview(scope.row)">下载</el-button>
               <el-button size="mini" type="text" icon="el-icon-view" @click="handlePreview(scope.row)">预览</el-button>
               <el-button size="mini" type="text" icon="el-icon-view" @click="handleEdit(scope.row)">在线编辑</el-button>
               <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
@@ -72,21 +75,21 @@
 
       </el-col>
     </el-row>
-    <!-- 添加或修改文基本信息对话框 -->
+    <!-- 添加或修改文基本信息对话框 -->
     <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="80px">
         <el-form-item label="" prop="docPath">
-          <!-- <el-input v-model="form.docPath" placeholder="请输入文路径" /> -->
+          <!-- <el-input v-model="form.docPath" placeholder="请输入文路径" /> -->
           <file-upload v-model="form.docPath" />
         </el-form-item>
         <el-form-item label="文件名称" prop="docName">
-          <el-input v-model="form.docName" placeholder="请输入文名称" />
+          <el-input v-model="form.docName" placeholder="请输入文名称" />
         </el-form-item>
         <el-form-item label="文件描述">
           <el-input v-model="form.docDesc" type="textarea" placeholder="请输入内容" />
         </el-form-item>
         <el-form-item label="文件级别" prop="docLevel">
-          <el-input v-model="form.docLevel" placeholder="请输入文级别" />
+          <el-input v-model="form.docLevel" placeholder="请输入文级别" />
         </el-form-item>
       </el-form>
       <div slot="footer" class="dialog-footer">
@@ -136,7 +139,7 @@
         showSearch: true,
         // 总条数
         total: 0,
-        // 文基本信息表格数据
+        // 文基本信息表格数据
         infoList: [],
         dirId: undefined, //目录ID
         dirList: undefined,
@@ -163,34 +166,26 @@
         rules: {
           docName: [{
             required: true,
-            message: "文名称不能为空",
+            message: "文名称不能为空",
             trigger: "blur"
           }],
           createYear: [{
             required: true,
-            message: "文档创建年份;文档创建年份,分表用不能为空",
+            message: "文件创建年份;文件创建年份,分表用不能为空",
             trigger: "blur"
           }],
         }
       }
     },
     created() {
-      this.getList();
       this.dirTree();
     },
     methods: {
-      //目录树
-      dirTree() {
-        personalList().then(response => {
-          this.dirId = response.data[0].dirId;
-          this.dirList = this.handleTree(response.data, "dirId");
-          this.loading = false;
-        });
-      },
       // 节点单击事件
       handleNodeClick(data) {
-        this.queryParams.dirId = data.dirId;
         this.dirId = data.dirId;
+        this.queryParams.dirId = this.dirId;
+        this.queryParams.searchValue = this.spaceId;
         this.handleQuery();
       },
       //预览
@@ -203,7 +198,22 @@
         row.isEdit = true;
         this.$tab.openPage("文件[" + row.docName + "]在线编辑", '/doc/oo-edit/index/' + row.docId, row);
       },
-      /** 查询文档基本信息列表 */
+      //先获取左边目录树,拿到目录ID和spaceId才能查询
+      dirTree() {
+        this.loading = true;
+        personalList().then(response => {
+          this.dirId = response.data[0].dirId;
+          this.spaceId = response.data[0].spaceId;
+          this.dirList = this.handleTree(response.data, "dirId");
+
+          this.queryParams.dirId = this.dirId;
+          this.queryParams.searchValue = this.spaceId;
+          this.getList();
+
+          this.loading = false;
+        });
+      },
+      /** 查询文件基本信息列表 */
       getList() {
         this.loading = true;
         listInfo(this.queryParams).then(response => {
@@ -238,7 +248,8 @@
           updateBy: null,
           updateTime: null,
           remark: null,
-          isDel: null
+          isDel: null,
+          searchValue: this.spaceId
         };
         this.resetForm("form");
       },
@@ -250,6 +261,8 @@
       /** 重置按钮操作 */
       resetQuery() {
         this.resetForm("queryForm");
+        this.queryParams.dirId = this.dirId;
+        this.queryParams.searchValue = this.spaceId;
         this.handleQuery();
       },
       // 多选框选中数据
@@ -262,7 +275,7 @@
       handleAdd() {
         this.reset();
         this.open = true;
-        this.title = "添加文基本信息";
+        this.title = "添加文基本信息";
       },
       /** 修改按钮操作 */
       handleUpdate(row) {
@@ -271,7 +284,7 @@
         getInfo(docId, row.createYear).then(response => {
           this.form = response.data;
           this.open = true;
-          this.title = "修改文基本信息";
+          this.title = "修改文基本信息";
         });
       },
       /** 提交按钮 */
@@ -297,7 +310,7 @@
       /** 删除按钮操作 */
       handleDelete(row) {
         const docIds = row.docId || this.ids;
-        this.$modal.confirm('是否确认删除文基本信息编号为"' + docIds + '"的数据项?').then(function() {
+        this.$modal.confirm('是否确认删除文基本信息编号为"' + docIds + '"的数据项?').then(function() {
           return delInfo(docIds);
         }).then(() => {
           this.getList();
@@ -309,6 +322,19 @@
         this.download('doc/info/export', {
           ...this.queryParams
         }, `info_${new Date().getTime()}.xlsx`)
+      },
+      /**格式化文件大小数据*/
+      fileSizeData(row, col, value) {
+        const KB = 1;
+        const MB = KB * 1024;
+        const GB = MB * 1024;
+        if (value < MB) {
+          return `${(value / KB).toFixed(2)} KB`;
+        } else if (value < GB) {
+          return `${(value / MB).toFixed(2)} MB`;
+        } else {
+          return `${(value / GB).toFixed(2)} GB`;
+        }
       }
     }
   };