From f088e6887fe88f0be698892c9883521e9e57d5c3 Mon Sep 17 00:00:00 2001
From: Surpriseplus <845948745@qq.com>
Date: 星期二, 25 七月 2023 09:31:53 +0800
Subject: [PATCH] 信息管理 GDB数据修改

---
 src/views/datamanage/metadataManage.vue |  621 ++++++++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 509 insertions(+), 112 deletions(-)

diff --git a/src/views/datamanage/metadataManage.vue b/src/views/datamanage/metadataManage.vue
index a60b31f..8ee4f93 100644
--- a/src/views/datamanage/metadataManage.vue
+++ b/src/views/datamanage/metadataManage.vue
@@ -20,6 +20,7 @@
               <el-select
                 :popper-append-to-body="false"
                 v-model="queryForm.depName"
+                ref="treeSelect"
               >
                 <el-option
                   :value="queryForm.depid"
@@ -53,6 +54,7 @@
               <el-select
                 :popper-append-to-body="false"
                 v-model="queryForm.dirName"
+                ref="treeSelect1"
               >
                 <el-option
                   :value="queryForm.dirid"
@@ -116,7 +118,6 @@
             </el-form-item>
           </div>
           <div>
-
             <!--            <el-form-item>
               <el-button
                   @click="queryInfo()"
@@ -155,52 +156,8 @@
               >{{ $t("common.reset") }}
               </el-button>
             </el-form-item>
-
           </div>
         </div>
-
-        <!-- <el-form-item style="float:right">
-          <el-button
-            @click="queryInfo()"
-            icon="el-icon-search"
-            class="primary"
-            size="small"
-          >{{ $t('common.iquery') }}</el-button>
-        </el-form-item>
-        <el-form-item style="float:right">
-          <el-button
-            @click="resetInfo('queryForm')"
-            icon="el-icon-refresh"
-            type="info"
-            size="small"
-          >{{ $t('common.reset') }}</el-button>
-        </el-form-item> -->
-
-        <!-- <el-form-item v-if="btnStatus.insert">
-          <el-button
-            type="success"
-            size="small"
-            @click="showAddDialog"
-            icon="el-icon-plus"
-            >{{ $t('common.append') }}</el-button
-          >
-        </el-form-item> -->
-        <!-- <el-form-item v-if="btnStatus.delete" style="float:right">
-          <el-button
-            type="danger"
-            size="small"
-            @click="deleteMetaInfo"
-            icon="el-icon-delete"
-          >{{ $t('common.delete') }}</el-button>
-        </el-form-item>
-        <el-form-item v-if="btnStatus.download" style="float:right">
-          <el-button
-            @click="downFormData"
-            icon="el-icon-download"
-            type="success"
-            size="small"
-          >{{ $t('common.download') }}</el-button>
-        </el-form-item> -->
       </el-form>
     </div>
     <div class="dividing-line"></div>
@@ -211,6 +168,7 @@
       <el-table
         :data="tableData"
         style="width: 100%"
+        border
         @selection-change="handleSelectionChange"
         height="calc(100% - 57px)"
       >
@@ -234,7 +192,8 @@
                 target="_blank"
               >{{ scope.row.name }}</el-link>
             </span>
-            <span v-else-if="scope.row.metaid > 0"> <el-link
+            <span v-else-if="scope.row.metaid > 0">
+              <el-link
                 style="color: #409eff"
                 title="鍏冩暟鎹煡璇�"
                 @click="setMetaDataQuery(scope.row)"
@@ -247,7 +206,24 @@
         <el-table-column
           prop="type"
           :label="$t('dataManage.vmobj.format')"
-        />
+        >
+          <template slot-scope="scope">
+            <span v-if="scope.row.type == 'gdb'">
+              <el-link
+                @click="setSelectGdbByGuid(scope.row)"
+                style="color: #409eff"
+              >
+                {{  scope.row.type }}
+              </el-link>
+            </span>
+            <span v-else>
+
+              {{  scope.row.type }}
+            </span>
+          </template>
+
+        </el-table-column>
+
         <el-table-column
           prop="sizes"
           :label="$t('dataManage.vmobj.size')"
@@ -273,7 +249,9 @@
             <el-link
               :underline="false"
               @click="detail(scope.row)"
-            >{{ scope.row.tab }}</el-link>
+            >{{
+              scope.row.tab
+            }}</el-link>
           </template>
         </el-table-column>
 
@@ -286,6 +264,13 @@
           prop="rows"
           :label="$t('dataManage.vmobj.row')"
         />
+
+        <el-table-column
+          :label="$t('common.dataStatus')"
+          :formatter="stateFormat"
+        >
+
+        </el-table-column>
         <el-table-column
           prop="uname"
           :label="$t('dataManage.vmobj.createonuser')"
@@ -296,7 +281,7 @@
           :formatter="formatData"
         />
         <el-table-column
-          min-width="180"
+          min-width="210"
           :label="$t('common.operate')"
         >
           <template slot-scope="scope">
@@ -316,6 +301,14 @@
               style="margin-left: 10px"
             >{{ $t("common.edit") }}
             </el-button>
+            <el-button
+              plain
+              size="small"
+              v-if="showPreview(scope.row)"
+              @click="handlePreview(scope.row)"
+              style="margin-left: 10px"
+            >{{ $t("common.preview") }}
+            </el-button>
           </template>
         </el-table-column>
       </el-table>
@@ -327,7 +320,7 @@
           @size-change="handleSizeChange"
           @current-change="handleCurrentChange"
           :current-page="listData.pageIndex"
-          :page-sizes="[10, 20, 50, 100]"
+          :page-sizes="[10, 50, 100, 200]"
           :page-size="listData.pageSize"
           layout="total, sizes, prev, pager, next, jumper"
           :total="count"
@@ -338,6 +331,7 @@
     <div
       class="infoBox_box"
       v-show="showinfoBox"
+      style="z-index:99999"
     >
       <div class="infoBox box_div">
         <div
@@ -373,7 +367,7 @@
           <el-divider></el-divider>
           <p>{{ $t("dataManage.vmobj.tab") }}锛歿{ itemdetail.tab }}</p>
           <el-divider></el-divider>
-          <p>{{ $t("dataManage.vmobj.row") }}锛歿{ itemdetail.row }}</p>
+          <p>{{ $t("dataManage.vmobj.row") }}锛歿{ itemdetail.rows }}</p>
           <el-divider></el-divider>
           <p>
             {{ $t("dataManage.vmobj.createonuser") }}锛歿{ itemdetail.uname }}
@@ -385,17 +379,15 @@
             }}
           </p>
           <el-divider></el-divider>
-          <p>
-            {{ $t("dataManage.vmobj.updateonuser") }}锛歿{
-              itemdetail.updateUser
-            }}
+          <!-- <p>
+            {{ $t("dataManage.vmobj.depName") }}锛歿{ itemdetail.updateUser }}
           </p>
           <el-divider></el-divider>
           <p>
-            {{ $t("dataManage.vmobj.updateontime") }}锛歿{
+            {{ $t("dataManage.vmobj.depName") }}锛歿{
               setInfoBoxTime(itemdetail.updateTime)
             }}
-          </p>
+          </p> -->
         </div>
       </div>
     </div>
@@ -526,9 +518,7 @@
         <el-button
           size="small"
           @click="cancelEdit()"
-        >{{
-            $t("common.reset")
-          }}
+        >{{ $t("common.reset") }}
         </el-button>
         <el-button
           size="small"
@@ -546,9 +536,7 @@
         <el-button
           size="small"
           @click="cancelAdd('editForm')"
-        >{{
-            $t("common.reset")
-          }}
+        >{{ $t("common.reset") }}
         </el-button>
         <el-button
           size="small"
@@ -595,7 +583,7 @@
             @size-change="handleLoaderSizeChange"
             @current-change="handleLoaderCurrentChange"
             :current-page="listLoader.pageIndex"
-            :page-sizes="[10, 20, 50, 100]"
+            :page-sizes="[10, 50, 100, 200]"
             :page-size="listLoader.pageSize"
             layout="total, sizes, prev, pager, next, jumper"
             :total="count1"
@@ -647,9 +635,7 @@
             type="info"
             size="small"
             @click="closeDown('codeForm')"
-          >{{
-              $t("common.cancel")
-            }}
+          >{{ $t("common.cancel") }}
           </el-button>
         </el-form-item>
       </el-form>
@@ -743,8 +729,8 @@
                 class="scopeRowColor"
                 @click="detail(scope.row)"
               >{{
-                  scope.row.tab
-                }}</a>
+                scope.row.tab
+              }}</a>
             </template>
           </el-table-column>
           <el-table-column
@@ -766,7 +752,7 @@
             @size-change="handleMetaSizeChange"
             @current-change="handMetaCurrentChange"
             :current-page="listMetaData.pageIndex"
-            :page-sizes="[10, 20, 50, 100]"
+            :page-sizes="[10, 50, 100, 200]"
             :page-size="listMetaData.pageSize"
             layout="total, sizes, prev, pager, next, jumper"
             :total="listMetaData.count"
@@ -781,7 +767,6 @@
       width="70%"
     >
       <div style="height: 65vh; width: 100%">
-
         <el-table
           ref="filterTable"
           :data="metaDataTable1"
@@ -838,8 +823,8 @@
                 class="scopeRowColor"
                 @click="detail(scope.row)"
               >{{
-                  scope.row.tab
-                }}</a>
+                scope.row.tab
+              }}</a>
             </template>
           </el-table-column>
           <el-table-column
@@ -853,8 +838,224 @@
             :label="$t('dataManage.dataUpObj.describe')"
           />
         </el-table>
-
       </div>
+    </el-dialog>
+    <el-dialog
+      custom-class="preview-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"
+      >
+        <el-image
+          style="width: 100%; height: 100%"
+          :src="dialog.src"
+          :preview-src-list="[dialog.src]"
+        >
+        </el-image>
+      </div>
+    </el-dialog>
+    <el-dialog
+      title="鏁版嵁鐢宠"
+      :visible.sync="dialogInsertFile"
+      width="30%"
+      top="10vh"
+      :modal="false"
+      :close-on-click-modal="false"
+      :show-close="false"
+    >
+      <el-form
+        ref="form"
+        :model="fileFrom"
+        label-width="100px"
+      >
+        <el-form-item label="瀹℃牳鍗曚綅">
+          <div>
+            <ul>
+              <li v-for="item in fileFrom.depid">
+                {{ item.name }}
+              </li>
+            </ul>
+          </div>
+        </el-form-item>
+
+        <el-form-item label="鎻忚堪">
+          <el-input
+            type="textarea"
+            placeholder="璇疯緭鍏ュ唴瀹�"
+            v-model="fileFrom.descr"
+            maxlength="50"
+            show-word-limit
+          >
+          </el-input>
+        </el-form-item>
+        <el-form-item>
+          <el-button
+            class="primary"
+            size="small"
+            @click="getFileInsertApply()"
+          >{{ $t("common.confirm") }}</el-button>
+          <el-button
+            type="info"
+            size="small"
+            @click="handleInsertFileClose()"
+          >{{ $t("common.cancel") }}</el-button>
+        </el-form-item>
+      </el-form>
+    </el-dialog>
+    <el-dialog
+      title=""
+      :visible.sync="gdbDialog"
+      width="80%"
+      top="8vh"
+      :modal="false"
+      :close-on-click-modal="false"
+    >
+      <div class="gdbTableBox">
+        <el-table
+          :data="gdbData"
+          style="width: 100%"
+        >
+          <el-table-column
+            type="selection"
+            width="55"
+          />
+          <el-table-column
+            :label="$t('dataManage.dictionaryManageObj.number')"
+            type="index"
+            width="50"
+          >
+          </el-table-column>
+          <el-table-column :label="$t('dataManage.vmobj.name')">
+            <template slot-scope="scope">
+              <span v-if="scope.row.ismeta > 0">
+                <el-link
+                  style="color: #409eff"
+                  title="婧愭暟鎹煡璇�"
+                  @click="setQueryMetaData(scope.row)"
+                  target="_blank"
+                >{{ scope.row.name }}</el-link>
+              </span>
+              <span v-else-if="scope.row.metaid > 0">
+                <el-link
+                  style="color: #409eff"
+                  title="鍏冩暟鎹煡璇�"
+                  @click="setMetaDataQuery(scope.row)"
+                  target="_blank"
+                >{{ scope.row.name }}</el-link></span>
+              <span v-else>{{ scope.row.name }}</span>
+            </template>
+          </el-table-column>
+
+          <el-table-column
+            prop="type"
+            :label="$t('dataManage.vmobj.format')"
+          >
+
+          </el-table-column>
+
+          <el-table-column
+            prop="sizes"
+            :label="$t('dataManage.vmobj.size')"
+            :formatter="stateFormatSizes"
+          />
+          <el-table-column
+            prop="depName"
+            :label="$t('dataManage.vmobj.depName')"
+          />
+          <el-table-column
+            prop="dirName"
+            :label="$t('dataManage.vmobj.dirName')"
+            width="200"
+          />
+          <el-table-column
+            prop="verName"
+            :label="$t('dataManage.vmobj.versionNumber')"
+          />
+          <el-table-column :label="$t('dataManage.dataUpObj.tableName')">
+            <template slot-scope="scope">
+
+              <el-link></el-link>
+              <el-link
+                :underline="false"
+                @click="detail(scope.row)"
+              >{{
+              scope.row.tab
+            }}</el-link>
+            </template>
+          </el-table-column>
+
+          <el-table-column
+            prop="rows"
+            :label="$t('dataManage.vmobj.row')"
+          />
+
+          <el-table-column
+            :label="$t('common.dataStatus')"
+            :formatter="stateFormat"
+          >
+
+          </el-table-column>
+          <el-table-column
+            prop="uname"
+            :label="$t('dataManage.vmobj.createonuser')"
+          />
+          <el-table-column
+            prop="createTime"
+            :label="$t('dataManage.vmobj.createontime')"
+            :formatter="formatData"
+          />
+          <el-table-column
+            min-width="210"
+            :label="$t('common.operate')"
+          >
+            <template slot-scope="scope">
+              <el-button
+                @click="showDetail(scope.row)"
+                type="primary"
+                plain
+                size="small"
+              >{{ $t("common.details") }}
+              </el-button>
+              <el-button
+                type="warning"
+                plain
+                size="small"
+                v-if="btnStatus.update"
+                @click="editInfo(scope.row)"
+                style="margin-left: 10px"
+              >{{ $t("common.edit") }}
+              </el-button>
+              <el-button
+                plain
+                size="small"
+                v-if="showPreview(scope.row)"
+                @click="handlePreview(scope.row)"
+                style="margin-left: 10px"
+              >{{ $t("common.preview") }}
+              </el-button>
+            </template>
+          </el-table-column>
+        </el-table>
+      </div>
+
     </el-dialog>
     <iframe
       id="downFrame"
@@ -868,6 +1069,7 @@
 import $ from "jquery";
 import { getToken } from "@/utils/auth";
 import {
+  encr,
   deleteMeta,
   insertMeta,
   meta_downloadReq,
@@ -881,7 +1083,11 @@
   selectdirTab,
   sign_getPublicKey,
   updateMeta,
-  meta_selectById
+  meta_selectById,
+  meta_selectMetaOverflowDep,
+  meta_selectDepsByCodes,
+  apply_insertApply,
+  meta_selectGdbByGuid,
 } from "../../api/api";
 
 import MyBread from "../../components/MyBread.vue";
@@ -933,6 +1139,8 @@
         dirid: "",
         depid: "",
         verid: "",
+        depName: "",
+
       },
       behavior: "",
       initialForm: "",
@@ -1006,6 +1214,23 @@
       metaDataTable: [],
       queryMetaFlag1: false,
       metaDataTable1: [],
+      dialog: {
+        dialogVisible: false,
+        isPdf: false,
+        isJpg: false,
+        src: "",
+      },
+      dialogInsertFile: false,
+      fileFrom: {
+        descr: null,
+        depid: null,
+        ids: null,
+        pwd: null,
+        depcodes: null,
+      },
+      gdbData: [],
+      gdbDialog: false,
+      gdbGuid: null,
     };
   },
   created() {
@@ -1019,11 +1244,52 @@
     this.timer && clearTimeout(this.timer);
     window.removeEventListener("resize", this.onResize);
   },
+
   mounted() {
     window.addEventListener("resize", this.onResize);
     this.calHeight();
   },
+  watch: {
+    "queryForm.depName"() {
+
+      this.$refs.treeSelect.visible = false;
+    },
+    "queryForm.dirid"() {
+
+      this.$refs.treeSelect1.visible = false;
+    },
+  },
   methods: {
+    //gdb 鐐瑰嚮浜嬩欢
+    setSelectGdbByGuid(row) {
+      this.gdbGuid = row.guid
+      this.getSelectGdbByGuid();
+    },
+    async getSelectGdbByGuid() {
+      if (!this.gdbGuid) return
+      const data = await meta_selectGdbByGuid({ guid: this.gdbGuid })
+      if (data.code != 200) {
+        return this.$message.error("鏍规嵁GUID鏌ヨGDB鏁版嵁澶辫触");
+      }
+      if (data.count <= 0) {
+        return this.$message("鏌ユ棤鏇村鏁版嵁");
+      }
+      this.gdbData = data.result;
+      this.gdbDialog = true;
+
+    },
+
+
+    stateFormat(row, column) {
+      var val = ['shp', 'gdb', 'xls', 'xlsx']
+      if (val.indexOf(row.type) > -1 && row.rows > 0) {
+        return '宸蹭笂浼�,宸插叆搴�'
+      } else if (val.indexOf(row.type) > -1 && row.rows == 0) {
+        return '宸蹭笂浼�,鏈叆搴�'
+      } else {
+        return '宸蹭笂浼�'
+      }
+    },
     //澶у皬鍊兼敼鍙�
     changeSizeFile(row, column, cellValue, index) {
       if (cellValue >= 1024) {
@@ -1060,14 +1326,10 @@
     },
     //鍏冩暟鎹煡璇�
     async setMetaDataQuery(row) {
-
       this.fromQueryMeta.title = row.name;
       this.listMetaData = {
         id: row.metaid,
-        // name: "",
-        // pageIndex: 1,
-        // pageSize: 10,
-        // count: 0,
+
       };
       const data = await meta_selectById(this.listMetaData);
       if (data.code != 200) {
@@ -1078,6 +1340,8 @@
       this.metaDataTable1 = [data.result];
       // this.listMetaData.count = data.count;
     },
+
+
     //婧愭暟鎹煡璇�
     setQueryMetaData(row) {
       this.fromQueryMeta.title = row.name;
@@ -1233,6 +1497,7 @@
       this.listData.pageIndex = 1;
       this.queryForm.depcode = data.code;
       this.queryForm.depName = data.name;
+
       this.getMetaData();
     },
     handleChange2(data, node, nodeData) {
@@ -1461,7 +1726,7 @@
                 message: "鍒犻櫎鎴愬姛!",
               });
               this.multipleSelection = [];
-              this.listData.pageSize = 10;
+              // this.listData.pageSize = 10
               this.listData.pageIndex = 1;
               this.getMetaData();
             } else {
@@ -1479,7 +1744,9 @@
     showDetail(row) {
       // console.log(index, row);
       this.showinfoBox = true;
+
       this.itemdetail = row;
+
     },
     // 鍏抽棴鏌ョ湅
     closeDetial() {
@@ -1505,8 +1772,7 @@
           this.editForm = {};
           done();
         })
-        .catch((_) => {
-        });
+        .catch((_) => { });
     },
 
     // 鎻愪氦淇敼
@@ -1524,7 +1790,14 @@
               if (res.code == 200) {
                 this.listData.pageSize = 10;
                 this.listData.pageIndex = 1;
-                this.getMetaData();
+
+                if (this.gdbDialog) {
+                  this.getSelectGdbByGuid();
+                } else {
+                  this.getMetaData();
+                }
+
+
                 this.$message({
                   message: "淇敼鎴愬姛",
                   type: "success",
@@ -1539,6 +1812,7 @@
           alert("淇敼澶辫触锛岃閲嶈瘯锛�");
           this.fullscreenLoading = false;
         });
+
     },
     cancelEdit() {
       this.$nextTick(() => {
@@ -1546,44 +1820,111 @@
       });
     },
     async download() {
-      var std = [];
+      var ids = [];
       for (var i in this.multipleSelection) {
-        std.push(this.multipleSelection[i].id);
+        ids.push(this.multipleSelection[i].id);
       }
       var obj = {
-        pwd: encrypt.encrypt(this.codeForm.repassword),
-        ids: std,
+        ids: ids,
       };
-      const res = await meta_downloadReq(JSON.stringify(obj));
-
-      if (res.code != 200) {
-        this.$message.error("涓嬭浇璇锋眰澶辫触");
-        return;
-      }
-
-      var downObj = {
-        guid: res.result,
-        pwd: encodeURIComponent(encrypt.encrypt(this.codeForm.repassword)),
-      };
-      const data = await meta_selectDownloadFile(downObj);
-
+      const data = await meta_selectMetaOverflowDep(obj);
       if (data.code != 200) {
-        this.$message.error("涓嬭浇璇锋眰澶辫触");
         return;
       }
-      var token = getToken();
-      var url =
-        BASE_URL +
-        "/meta/downloadFile?token=" +
-        token +
-        "&guid=" +
-        res.result +
-        "&pwd=" +
-        encodeURIComponent(encrypt.encrypt(this.codeForm.repassword));
+      var password = this.codeForm.repassword;
+      if (data.result.length == 0) {
+        var obj = {
+          pwd: encrypt.encrypt(this.codeForm.repassword),
+          ids: ids,
+        };
+        const res = await meta_downloadReq(JSON.stringify(obj));
+        if (res.code != 200) {
+          this.$message.error("涓嬭浇璇锋眰澶辫触");
+          return;
+        }
 
-      $("#downFrame").attr("src", url).click();
+        var downObj = {
+          guid: res.result,
+          pwd: encodeURIComponent(encrypt.encrypt(this.codeForm.repassword)),
+        };
+        const data1 = await meta_selectDownloadFile(downObj);
+        if (data1.code != 200) {
+          this.$message.error("涓嬭浇璇锋眰澶辫触");
+          return;
+        }
+        var token = getToken();
+        var url =
+          BASE_URL +
+          "/meta/downloadFile?token=" +
+          token +
+          "&guid=" +
+          res.result +
+          "&pwd=" +
+          encodeURIComponent(encrypt.encrypt(this.codeForm.repassword));
+
+        $("#downFrame").attr("src", url).click();
+      } else {
+        var val = "";
+        var std = [];
+        for (var i in data.result) {
+          if (val == "") {
+            val += "codes=" + data.result[i];
+          } else {
+            val += "&codes=" + data.result[i];
+          }
+          std.push({
+            name: data.result[i],
+          });
+        }
+        const data1 = await meta_selectDepsByCodes(val);
+        if (data1.code != 200) {
+          return;
+        }
+
+        this.fileFrom.depid = data1.result;
+        this.fileFrom.ids = ids;
+        this.fileFrom.pwd = encr(password);
+        this.fileFrom.depcodes = data.result;
+        this.dialogInsertFile = true;
+      }
+
       this.closeDown();
     },
+
+    async getFileInsertApply() {
+      this.dialogInsertFile = false;
+
+      var obj = {
+        ids: this.fileFrom.ids,
+        pwd: this.fileFrom.pwd,
+        tabs: ["鍏冩暟鎹〃"],
+        entities: ["sysmeta"],
+        descr: this.fileFrom.descr,
+        depcodes: this.fileFrom.depcodes,
+      };
+
+      const data = await apply_insertApply(JSON.stringify(obj));
+      this.handleInsertFileClose();
+      if (data.code != 200) {
+        this.$message.error("鏁版嵁鐢宠澶辫触");
+        return;
+      }
+      this.$message({
+        message: "鏁版嵁鐢宠鎴愬姛",
+        type: "success",
+      });
+    },
+    handleInsertFileClose() {
+      this.dialogInsertFile = false;
+      this.fileFrom = {
+        descr: null,
+        depid: null,
+        ids: null,
+        pwd: null,
+        depcodes: null,
+      };
+    },
+
     closeDown() {
       this.showCodeBox = false;
       this.codeForm.password = "";
@@ -1615,6 +1956,47 @@
         branchArr.length > 0 ? (father.children = branchArr) : ""; // 缁欑埗绾ф坊鍔犱竴涓猚hildren灞炴�э紝骞惰祴鍊�
         return father.pid == 0; // 杩斿洖涓�绾ц彍鍗�
       });
+    },
+    showPreview(row) {
+      let name = row.name;
+      if (!name) return false;
+      return (
+        name.indexOf("pdf") != -1 ||
+        name.indexOf("jpg") != -1 ||
+        name.indexOf("gif") != -1 ||
+        name.indexOf("png") != -1 ||
+        name.indexOf("jpeg") != -1
+      );
+    },
+    handlePreview(row) {
+      let name = row.name;
+      this.refreshAttatchDetail();
+
+      if (name.indexOf(".pdf") != -1) {
+        this.dialog.isPdf = true;
+      } else if (
+        name.indexOf(".jpg") != -1 ||
+        name.indexOf(".gif") != -1 ||
+        name.indexOf(".png") != -1 ||
+        name.indexOf(".jpeg") != -1
+      ) {
+        this.dialog.isJpg = true;
+      }
+      this.dialog.dialogVisible = true;
+
+      var url =
+        BASE_URL +
+        "/inquiry/downloadForView?guid=" +
+        row.guid +
+        "&token=" +
+        getToken();
+      this.dialog.src = url;
+    },
+    refreshAttatchDetail() {
+      this.dialog.src = "";
+      this.dialog.dialogVisible = false;
+      this.dialog.isPdf = false;
+      this.dialog.isJpg = false;
     },
   },
 };
@@ -1656,5 +2038,20 @@
 
     border-radius: 10px;
   }
+  .preview-dialog {
+    .pdfClass {
+      height: 70vh;
+      width: 100%;
+      position: relative;
+    }
+  }
+  .el-divider--horizontal {
+    margin: 15px 0;
+  }
+  .gdbTableBox {
+    width: 100%;
+    height: 740px;
+    overflow-y: auto;
+  }
 }
 </style>

--
Gitblit v1.9.3