From 015a99675ad021a5b1f8d635da3e8887e0c28a97 Mon Sep 17 00:00:00 2001
From: Surpriseplus <845948745@qq.com>
Date: 星期四, 02 三月 2023 17:33:03 +0800
Subject: [PATCH] 资料馆添加附件上传,添加支持查看pdf,图片文件功能;字典管理,值域管理页面左侧目录树展示效果优化

---
 src/views/Archive/index.vue |  270 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 266 insertions(+), 4 deletions(-)

diff --git a/src/views/Archive/index.vue b/src/views/Archive/index.vue
index 3200e8e..745f391 100644
--- a/src/views/Archive/index.vue
+++ b/src/views/Archive/index.vue
@@ -465,6 +465,102 @@
           >纭� 瀹�</el-button>
         </span>
       </el-dialog>
+      <!-- 鏁版嵁搴撻檮浠朵俊鎭� -->
+      <el-dialog
+        :title="$t('common.enclosure')"
+        :visible.sync="outerVisible"
+        :close-on-click-modal="false"
+        width="50%"
+        :modal="false"
+      >
+        <div style="height:68vh">
+          <el-form
+            :model="fromfile"
+            class="demo-form-inline"
+          >
+            <el-form-item>
+              <el-input
+                v-model="fromfile.file"
+                style="width: 300px; margin-right: 20px"
+                :placeholder="$t('common.choose')"
+                disabled
+              ></el-input>
+              <input
+                name="file1"
+                type="file"
+                id="insertFile"
+                multiple="multiple"
+                style="display: none"
+                @change="insertFile( )"
+              />
+              <el-link
+                @click="getInsertFile( )"
+                :underline="false"
+              ><i class="el-icon-folder-opened"></i></el-link>
+            </el-form-item>
+            <el-form-item>
+              <el-row>
+                <el-col :span="2">
+                  <el-link
+                    class="elLink"
+                    :underline="false"
+                    @click="setAttachInsert"
+                  >{{$t('common.append')}}</el-link>
+                </el-col>
+                <el-col :span="2">
+                  <el-link
+                    class="elLink"
+                    :underline="false"
+                    @click="setAttachDel"
+                  >{{$t('common.delete')}}</el-link>
+                </el-col>
+              </el-row>
+            </el-form-item>
+          </el-form>
+          <el-table
+            :data="tableAttach"
+            ref="filterTable"
+            height="calc(100% - 130px)"
+            border
+            style="width: 100%"
+            @selection-change="handleAttatchChange"
+          >
+            <el-table-column
+              type="selection"
+              width="70"
+            />
+            <el-table-column
+              width="60"
+              type="index"
+              :label="$t('common.index')"
+            />
+            <el-table-column
+              prop="name"
+              :label="$t('common.fileNme')"
+            />
+
+            <el-table-column
+              prop="sizes"
+              :label="$t('common.size')"
+              :formatter="statSizeChange"
+            />
+            <el-table-column
+              align="center"
+              :label="$t('common.operate')"
+              min-width="100"
+            >
+              <template slot-scope="scope">
+                <el-link
+                  @click="setAttatchDetail(scope.$index, scope.row)"
+                  class="elLink"
+                >{{ $t('common.see') }}</el-link>
+
+              </template>
+            </el-table-column>
+          </el-table>
+        </div>
+      </el-dialog>
+      <!-- 鏁版嵁搴揟able淇℃伅 -->
       <div style="height:68vh">
         <el-form
           :model="formInline"
@@ -910,6 +1006,37 @@
         </div>
       </div>
     </el-dialog>
+    <el-dialog
+      title="棰勮"
+      :append-to-body="false"
+      :visible.sync="dialog.dialogVisible"
+      width="70%"
+      :close-on-click-modal="false"
+    >
+      <div
+        v-if="dialog.isPdf"
+        class="pdfClass"
+      >
+        <iframe
+          :src="dialog.src"
+          type="application/x-google-chrome-pdf"
+          width="100%"
+          height="100%"
+        >
+        </iframe>
+      </div>
+      <div
+        v-if="dialog.isJpg"
+        class="pdfClass"
+      >
+        <img
+          style="width:100%; height:100%"
+          :src="dialog.src"
+          alt=""
+        />
+      </div>
+    </el-dialog>
+
     <iframe
       id="downFrame"
       src=""
@@ -938,7 +1065,9 @@
   dataLib_selectDownloadFile,
   dataLib_selectPageCountForDownload,
   dataLib_selectPageAndCountByPid,
-  dataLib_selectMetaById
+  dataLib_selectMetaById,
+  dataLib_selectFiles,
+  dataLib_deletes
 } from '../../api/api';
 export default {
   components: {
@@ -966,7 +1095,7 @@
       }
     };
     return {
-
+      fromfile: { file: '' },
       fromSqlflag: false,
       filedsOption: [],
       condOption: [],
@@ -1055,6 +1184,20 @@
       },
       queryMetaFlag: false,
       metaDataTable: [],
+      upAttach: {
+        tabName: null,
+        eventid: null,
+      },
+      outerVisible: false,
+      tableAttach: [],
+      dataLib_selectFiles: [],
+      attacgSelection: [],
+      dialog: {
+        dialogVisible: false,
+        isPdf: false,
+        isJpg: false,
+        src: ''
+      }
     };
   },
   mounted() {
@@ -1064,9 +1207,119 @@
     this.signGetPublicKey();
   },
   methods: {
-    getAttachTable() {
-
+    // 闄勪欢=>琛ㄦ牸閫夋嫨
+    handleAttatchChange(val) {
+      this.attacgSelection = val;
     },
+    //闄勪欢=>鏂囦欢閫夋嫨
+    getInsertFile() {
+      $('#insertFile').click();
+    },
+    insertFile() {
+      var val = document.getElementById('insertFile').files;
+      if (!val || !val.length) return;
+      this.fromfile.file = val[0].name;
+    },
+    getAttachTable(index, row) {
+      if (row.eventid != null) {
+        this.upAttach.eventid = row.eventid;
+      } else {
+        this.upAttach.eventid = "";
+      }
+      this.outerVisible = true;
+      this.getAttacthFlieList();
+    },
+    //闄勪欢鍒楄〃鏌ヨ 
+    async getAttacthFlieList() {
+      var obj = this.upAttach;
+      const res = await dataLib_selectFiles(obj);
+      if (res.code != 200) {
+        this.$message.error('鍒楄〃璋冪敤澶辫触');
+        return
+      }
+      this.tableAttach = res.result;
+    },
+    refreshAttatchDetail() {
+      this.dialog.src = "";
+      this.dialog.dialogVisible = false;
+      this.dialog.isPdf = false;
+      this.dialog.isJpg = false;
+    },
+    //闄勪欢鏌ョ湅
+    setAttatchDetail(index, row) {
+
+      this.refreshAttatchDetail()
+      var name = row.name;
+      if (name.indexOf('.pdf') != -1) {
+        this.dialog.dialogVisible = true;
+        this.dialog.isPdf = true;
+        var url = BASE_URL + "/res/downloadForView?guid=" + row.guid + "&token=" + getToken();
+        this.dialog.src = url
+      } else if (name.indexOf('.jpg') != -1 || name.indexOf('.gif') != -1 || name.indexOf('.png') != -1 || name.indexOf('.jpeg') != -1) {
+        this.dialog.dialogVisible = true;
+        this.dialog.isJpg = true;
+        var url = BASE_URL + "/res/downloadForView?guid=" + row.guid + "&token=" + getToken();
+        this.dialog.src = url
+      }
+    },
+    //闄勪欢鍒櫎
+    async setAttachDel() {
+      var std = [];
+      for (var i in this.attacgSelection) {
+        std.push(this.attacgSelection[i].id);
+      }
+      const res = await dataLib_deletes({ ids: std.toString() });
+      if (res.code != 200) {
+        this.$message.error('鏂囦欢鍒犻櫎澶辫触');
+      }
+      this.getAttacthFlieList();
+    },
+    //闄勪欢鍒楄〃鏂板
+    setAttachInsert() {
+      var token = getToken();
+      var fs = document.getElementById("insertFile");
+      if (fs.files.length == 0) {
+
+        this.$message({
+          message: '璇烽�夋嫨瑕佷笂浼犵殑鏂囦欢锛�',
+          type: 'warning'
+        });
+        return;
+      }
+      const formData = new FormData()
+      for (var i = 0, c = fs.files.length; i < c; i++) {
+
+        formData.append('file', fs.files[i]); // fs.files[i].name,file
+      }
+
+      $.ajax(BASE_URL + "/dataQuery/uploadFiles?token=" + token + "&tabName=" + this.upAttach.tabName + "&eventid=" + this.upAttach.eventid, {
+        type: "post",
+        data: formData,
+        async: true,
+        cache: false,
+        processData: false,
+        contentType: false,
+        success: (rs) => {
+          this.$message({
+            message: '闄勪欢娣诲姞鎴愬姛',
+            type: 'success'
+          });
+          document.getElementById("insertFile").value = "";
+          this.fromfile = {
+            file: '',
+          }
+          this.getAttacthFlieList();
+        },
+        error: (e) => {
+          document.getElementById("insertFile").value = "";
+          this.fromfile = {
+            file: '',
+          }
+          this.$message.error('闄勪欢娣诲姞澶辫触');
+        }
+      });
+    },
+
     setRestMetaData() {
       this.fromQueryMeta.name = "";
       this.listMetaData.name = this.fromQueryMeta.name;
@@ -1434,6 +1687,7 @@
       this.listBankData.pageIndex = 1;
       this.listBankData.pageSize = 10;
       this.listBankData.title = res.tabDesc;
+      this.upAttach.tabName = res.ns + "." + res.tab;
       this.filedsLayer = this.getBankTableFiled();
       this.getCollapseTable(this.filedsLayer);
     },
@@ -1614,6 +1868,9 @@
     //鏍煎紡鍖栨椂闂�
     add0(m) {
       return m < 10 ? '0' + m : m;
+    },
+    statSizeChange(row, column) {
+      return this.stateFormatSizes(row.sizes)
     },
     stateFormatSizes(res) {
       if (res >= 1024) {
@@ -1903,5 +2160,10 @@
       justify-content: center;
     }
   }
+  .pdfClass {
+    height: 70vh;
+    width: 100%;
+    position: relative;
+  }
 }
 </style>

--
Gitblit v1.9.3