From 985b26624b69ad91b9e3a723c19bd4bbf1a36250 Mon Sep 17 00:00:00 2001
From: Surpriseplus <845948745@qq.com>
Date: 星期五, 03 三月 2023 13:03:47 +0800
Subject: [PATCH] 空间查询列表细化,工点表添加挂接信息界面

---
 src/views/datamanage/SpatialData.vue |  305 ++++++++++++++++++++++++++++++++++----------------
 1 files changed, 209 insertions(+), 96 deletions(-)

diff --git a/src/views/datamanage/SpatialData.vue b/src/views/datamanage/SpatialData.vue
index 51325bf..d472862 100644
--- a/src/views/datamanage/SpatialData.vue
+++ b/src/views/datamanage/SpatialData.vue
@@ -112,7 +112,7 @@
         <div class="dividing-line"></div>
         <div
           class="table_box"
-          style="height:calc(100% - 130px)"
+          style="height:calc(100% - 130px); "
         >
           <!--          border-->
           <!--          ref="filterTable"-->
@@ -125,7 +125,7 @@
             :data="tableData"
             style="width: 100% ;"
             border
-            height="100% "
+            height="100%"
           >
             <el-table-column
               type="selection"
@@ -148,7 +148,7 @@
               align="center"
             ></el-table-column>
             <el-table-column
-              min-width="180"
+              min-width="240"
               :label="$t('common.operate')"
             >
               <template slot-scope="scope">
@@ -162,8 +162,14 @@
                   plain
                   size="small"
                   @click="getAttachTable(scope.$index, scope.row)"
-                  style="margin-left: 20px;  "
                 >{{$t('common.enclosure')}}</el-button>
+                <el-button
+                  plain
+                  size="small"
+                  type="info"
+                  v-if="matchState1(scope, /[]/)"
+                  @click="getAttributeTable(scope.$index, scope.row)"
+                >{{$t('common.attribute')}}</el-button>
               </template>
             </el-table-column>
           </el-table>
@@ -227,7 +233,7 @@
       :title="$t('common.attachinform')"
       :visible.sync="dialogFormVisible"
     >
-      <div style="height: 500px; overflow: auto">
+      <div style="height:68vh">
         <el-form
           :model="formInline"
           class="demo-form-inline"
@@ -274,57 +280,49 @@
               <!-- <el-col :span="3">  <el-link  class="elLink" :underline="false" >{{$t('common.reset')}}</i></el-link></el-col> -->
             </el-row>
           </el-form-item>
-          <el-form-item>
-            <el-table
-              :data="tableAttach"
-              ref="filterTable"
-              height="calc(100% - 100px)"
-              border
-              style="width: 100%"
-              @selection-change="handleAttatchChange"
-            >
-              <el-table-column
-                type="selection"
-                width="55"
-              />
-              <el-table-column
-                width="60"
-                type="index"
-                :label="$t('common.index')"
-              />
-              <el-table-column
-                prop="date"
-                :label="$t('common.fileNme')"
-              />
-
-              <el-table-column
-                prop="name"
-                :label="$t('common.filePath')"
-              />
-
-            </el-table>
-          </el-form-item>
-          <!-- <el-form-item>
-
-          <el-row :gutter="20">
-            <el-col
-              :span="12"
-              :offset="8"
-            >
-              <el-button
-                type="primary"
-                size="small"
-                @click="dialogFormVisible = false"
-              >纭</el-button>
-              <el-button
-                type="info"
-                size="small"
-                @click="dialogFormVisible = false"
-              >鍙栨秷</el-button>
-            </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
+                v-if="matchState(scope, /[]/)"
+                @click="setAttatchDetail(scope.$index, scope.row)"
+                class="elLink"
+              >{{ $t('common.see') }}</el-link>
+
+            </template>
+          </el-table-column>
+        </el-table>
       </div>
     </el-dialog>
     <el-dialog
@@ -413,6 +411,45 @@
         <map-sdk v-if='showMapVisible'></map-sdk>
       </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>
+    <el-dialog
+      :title="attribute.name"
+      :append-to-body="false"
+      :visible.sync="AttributedialogVisible"
+      width="70%"
+      :close-on-click-modal="false"
+    >
+
+    </el-dialog>
   </div>
 </template>
 
@@ -461,30 +498,6 @@
       },
       fromSqlflag: false,
       tree: [
-        {
-          tabDesc: "鍩虹鏁版嵁",
-          label: "鍩虹鏁版嵁",
-          value: "BD",
-          ns: "bd",
-          id: 1,
-          children: [],
-        },
-        {
-          id: 2,
-          tabDesc: "涓氬姟鏁版嵁",
-          label: "涓氬姟鏁版嵁",
-          value: "BS",
-          ns: "bs",
-          children: [],
-        },
-        {
-          id: 3,
-          tabDesc: "鍏冩暟鎹�",
-          label: "鍏冩暟鎹�",
-          value: "MD",
-          ns: "md",
-          children: [],
-        },
       ],
       tableAttach: [],
       filedsOption: [],
@@ -549,6 +562,19 @@
         eventid: null,
       },
       filterText: "",
+      dialog: {
+        dialogVisible: false,
+        isPdf: false,
+        isJpg: false,
+        src: ''
+      },
+      AttributedialogVisible: false,
+      attribute: {
+        name: null,
+        pageIndex: 1,
+        pageSize: 10,
+        count: 0,
+      }
     };
   },
   created() {
@@ -564,6 +590,30 @@
   },
 
   methods: {
+    getAttributeTable(idnex, row) {
+      this.attribute.name = row.workname;
+      this.AttributedialogVisible = true;
+    },
+    matchState1(state = "", reg) {
+      var row = state.row;
+      if (
+        this.listData.name == "ssurveyworksite"
+      ) {
+        return true;
+      }
+      return false;
+    },
+    statSizeChange(row, column) {
+      return this.stateFormatSizes(row.sizes)
+    },
+    stateFormatSizes(res) {
+      if (res >= 1024) {
+        const val = parseFloat(res / 1024).toFixed(3);
+        return val + ' GB';
+      } else {
+        return res + ' MB';
+      }
+    },
     filterNode(value, data) {
       if (!value) return true;
       return data.label.indexOf(value) !== -1;
@@ -593,6 +643,45 @@
       this.$store.state.mapPopBoolean = false;
       this.$store.state.mapPopBoxFlag = null;
     },
+
+    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
+      }
+    },
+
+    matchState(state = "", reg) {
+      var row = state.row;
+      var name = row.name;
+
+      if (name) {
+        if (name.indexOf('.pdf') != -1 || name.indexOf('.jpg') != -1 || name.indexOf('.gif') != -1 || name.indexOf('.png') != -1 || name.indexOf('.jpeg') != -1) {
+          return true;
+        }
+      }
+
+      return false;
+    },
+
+
     async setAttachDel() {
       var std = [];
       for (var i in this.attacgSelection) {
@@ -689,26 +778,43 @@
       if (data.code != 200) {
         this.$message.error("鍒楄〃璋冪敤澶辫触");
       }
-      var option = data.result;
+      var val = data.result;
 
-      for (var i in option) {
-        var val_Data = option[i];
-        val_Data.id = "1" + i;
-        // val_Data.label = val_Data.tabDesc + "(" + val_Data.tab + ")"
-        val_Data.label = val_Data.tabDesc;
-        option[i].id = parseInt(option[i].id);
-        for (var j in this.tree) {
-          if (this.tree[j].ns == option[i].ns) {
-            this.tree[j].children.push(val_Data);
-          }
+      // for (var i in option) {
+      //   var val_Data = option[i];
+      //   val_Data.id = "1" + i;
+      //   // val_Data.label = val_Data.tabDesc + "(" + val_Data.tab + ")"
+      //   val_Data.label = val_Data.tabDesc;
+      //   option[i].id = parseInt(option[i].id);
+      //   for (var j in this.tree) {
+      //     if (this.tree[j].ns == option[i].ns) {
+      //       this.tree[j].children.push(val_Data);
+      //     }
+      //   }
+
+      // }
+      var std = [];
+      val.filter((item) => {
+        if (std.indexOf(item.bak) == -1) {
+          std.push(item.bak);
+          this.tree.push(
+            {
+              val: item.bak,
+              label: item.tabDesc,
+              children: [],
+            }
+          )
         }
-        // if (option[i].ns == 'bd') {
+      });
 
-        //   this.tree[0].children.push(val_Data);
-        // } else {
-        //   this.tree[1].children.push(val_Data);
-        // }
-      }
+      this.tree.filter((item) => {
+        val.filter((res) => {
+          if (item.val === res.bak) {
+            res.label = res.tabDesc
+            item.children.push(res)
+          }
+        })
+      })
       this.handleNodeClick(this.tree[0].children[0]);
     },
     //鎺堟潈绠$悊
@@ -725,10 +831,12 @@
     handleNodeClick(data) {
       //鍒ゆ柇鐐瑰嚮鏄惁涓哄瓙鑺傜偣
       if (data.children != null) return;
+
       this.listData.name = data.entity; //瑕佹煡璇㈣〃鏍肩被鍨嬶紱
       this.getClickTable = data;
       this.listData.pageIndex = 1;
       this.listData.pageSize = 10;
+
       this.count = 0;
       this.upAttach.tabName = data.ns + "." + data.tab;
       this.filedsLayer = this.getCollapseDomFiled(); //鑾峰彇姣忎釜琛ㄥ瓧娈靛悕绉板強闃堝��
@@ -1205,6 +1313,11 @@
       border: 1px solid #dcdfe6;
     }
   }
+  .pdfClass {
+    height: 70vh;
+    width: 100%;
+    position: relative;
+  }
 }
 
 .table_box2 {

--
Gitblit v1.9.3