From 50f52beb0ed100105166f62027cd0b15e6b596dc Mon Sep 17 00:00:00 2001
From: Surpriseplus <845948745@qq.com>
Date: 星期六, 12 十一月 2022 15:02:01 +0800
Subject: [PATCH] 重新

---
 src/views/Archive/index.vue |  435 +++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 300 insertions(+), 135 deletions(-)

diff --git a/src/views/Archive/index.vue b/src/views/Archive/index.vue
index 8a4a421..b458064 100644
--- a/src/views/Archive/index.vue
+++ b/src/views/Archive/index.vue
@@ -5,6 +5,7 @@
         <div class="title_active">{{ $t('archive.name') }}</div>
         <el-divider />
         <el-tree
+          ref="tree"
           :data="tree"
           :props="defaultProps"
           show-checkbox
@@ -14,165 +15,299 @@
     </div>
     <div class="right_active">
       <el-card class="arch_card">
-        <el-row :gutter="20">
-          <el-col :span="6"></el-col>
-          <el-col :span="4"
-            ><div style="text-align: right; margin-top: 6px">
-              {{ $t('archive.keyword') }}:
-            </div>
-          </el-col>
-          <el-col :span="4">
-            <el-input :placeholder="$t('common.pleaseInput')"
-          /></el-col>
-          <el-col :span="4"
-            ><el-button type="primary">{{ $t('common.iquery') }}</el-button>
-            <el-button v-if="archStatus.download" type="primary">{{
-              $t('common.download')
-            }}</el-button>
-          </el-col>
-          <el-col :span="6"> </el-col>
-        </el-row>
+        <div>
+          <el-form :inline="true" :model="formInline" class="demo-form-inline">
+            <el-form-item>
+              <el-input
+                v-model="formInline.name"
+                placeholder="璇疯緭鍏�"
+              ></el-input>
+            </el-form-item>
+            <el-form-item>
+              <el-button plain @click="getArchTableData">鏌ヨ</el-button>
+            </el-form-item>
+            <el-form-item>
+              <el-button plain>閲嶇疆</el-button>
+            </el-form-item>
+            <el-form-item>
+              <el-button plain>涓嬭浇</el-button>
+            </el-form-item>
+            <el-form-item>
+              <el-button plain @click="showDialogBox">绌洪棿鏌ヨ</el-button>
+            </el-form-item>
+          </el-form>
+        </div>
         <el-divider />
-        <el-card shadow="never" class="middle_card">
-          <el-table :data="tableData" style="width: 10000px" stripe>
-            <el-table-column
-              prop="name"
-              :label="$t('archive.uname')"
-              width="180"
-            />
-            <el-table-column
-              prop="type"
-              sortable
-              :label="$t('archive.type')"
-              width="180"
-            />
-            <el-table-column
-              prop="count"
-              sortable
-              :label="$t('archive.modifications')"
-              width="180"
-            />
-            <el-table-column
-              prop="timer"
-              sortable
-              :label="$t('archive.creationtime')"
-            />
-            <el-table-column
-              prop="state"
-              :label="$t('archive.state')"
-              width="180"
-            />
-          </el-table>
-        </el-card>
-        <el-divider />
-
-        <el-pagination
-          :currentPage="currentPage4"
-          :page-size="pageSize4"
-          :page-sizes="[10, 20, 50, 100]"
-          :small="small"
-          :disabled="disabled"
-          :background="background"
-          layout="total, sizes, prev, pager, next, jumper"
-          :total="400"
-          @size-change="handleSizeChange"
-          @current-change="handleCurrentChange"
-        />
+        <div class="centerBox">
+          <el-collapse v-model="activeNames" @change="handleChange" accordion>
+            <el-collapse-item
+              v-for="(item, index) in companyList"
+              :key="index"
+              :name="item.entity"
+              :title="item.tabDesc"
+            >
+              <div class="centerTable">
+                <el-table :data="tableData" height="550" border stripe>
+                  <el-table-column type="selection" width="55" />
+                  <el-table-column
+                    align="center"
+                    type="index"
+                    label="搴忓彿"
+                    width="50"
+                  />
+                  <el-table-column
+                    v-for="(item, index) in attributeData"
+                    :key="index"
+                    :label="item.alias"
+                    :prop="item.field"
+                    show-overflow-tooltip
+                    align="center"
+                  ></el-table-column>
+                </el-table>
+                <el-divider />
+                <el-pagination
+                  :current-page="listdata.pageIndex"
+                  :page-sizes="[10, 20, 30, 40]"
+                  :page-size="listdata.pageSize"
+                  :small="small"
+                  :disabled="disabled"
+                  :background="background"
+                  layout="total, sizes, prev, pager, next, jumper"
+                  :total="count"
+                  @size-change="handleSizeChange"
+                  @current-change="handleCurrentChange"
+                />
+              </div>
+            </el-collapse-item>
+          </el-collapse>
+        </div>
       </el-card>
     </div>
+
+    <el-dialog
+      title="绌洪棿鏌ヨ"
+      :visible.sync="dialogVisible"
+      width="92%"
+      style="margin-left: 16%"
+      top="5vh"
+      :before-close="handleClose"
+    >
+      <div style="height: 720px; width: 100%">
+        <mapsdk></mapsdk>
+      </div>
+    </el-dialog>
   </div>
 </template>
 
 <script>
+import mapsdk from '../../components/mapsdk.vue';
+import {
+  inquiry_SelectTabs,
+  dataLib_selectFields,
+  dataLib_selectByPage,
+  dataLib_selectDomains,
+} from '../../api/api.js';
 export default {
+  components: {
+    mapsdk,
+  },
   data() {
     return {
+      dialogVisible: false,
+      activeNames: null,
+      listdata: {
+        pageIndex: 1,
+        pageSize: 10,
+        filter: null,
+        name: null,
+        wkt: null,
+      },
+      companyList: [],
+      formInline: {},
+      count: 0,
       tree: [
         {
-          label: '鏂囩尞',
-          children: [
-            {
-              label: '绠¢亾鏍囧噯鏂囩尞',
-              url: '',
-            },
-            {
-              label: '宸ヤ笟绠¢亾宸ョ▼鏂藉伐鍙婇獙鏀惰鑼�',
-              url: '',
-            },
-            {
-              label: '缁煎悎绠$嚎璁捐鏍囧噯',
-              url: '',
-            },
-          ],
+          tabDesc: '鍩虹鏁版嵁',
+          value: 'BD',
+          children: [],
         },
         {
-          label: '鍥剧焊', //label瀵瑰簲鐖剁骇鏍囩
-          children: [
-            {
-              label: 'XXX绠$嚎璁捐鍥剧焊',
-              url: ' ',
-            },
-            {
-              label: 'XXXXXX绠$嚎璁捐鍥�',
-              url: ' ',
-            },
-            {
-              label: 'XXXXX绠$嚎璁捐鍥�',
-              url: ' ',
-            },
-          ],
-        },
-        {
-          label: '鏁版嵁', //label瀵瑰簲鐖剁骇鏍囩
-          children: [
-            {
-              label: '绠¢亾',
-              url: ' ',
-            },
-            {
-              label: '闃�闂�',
-              url: ' ',
-            },
-            {
-              label: '娑堣垂璁惧',
-              url: ' ',
-            },
-          ],
+          tabDesc: '涓氬姟鏁版嵁',
+          value: 'BS',
+          children: [],
         },
       ],
       defaultProps: {
         chilren: 'children', //"children"鍐呯殑姣忎釜瀵硅薄瑙f瀽涓轰竴涓瓙椤�;
-        label: 'label', //鎵�鏈�"label"鎵�鍦ㄧ殑瀵硅薄瑙f瀽涓轰竴涓埗椤�
+        label: 'tabDesc', //鎵�鏈�"label"鎵�鍦ㄧ殑瀵硅薄瑙f瀽涓轰竴涓埗椤�
       },
-      tableData: [
-        {
-          timer: '2016-05-01',
-          name: 'Tom',
-          count: '3',
-          type: '涓氬姟鍥惧眰',
-          state: 'x',
-        },
-        {
-          timer: '2016-05-02',
-          name: 'Tom',
-          count: '2',
-          type: '涓氬姟鍥惧眰',
-          state: 'x',
-        },
-        {
-          timer: '2016-05-03',
-          name: 'Tom',
-          count: '1',
-          type: '涓氬姟鍥惧眰',
-          state: 'x',
-        },
-      ],
+      attributeData: [],
+      tableData: [],
       archStatus: {
         download: false,
       },
+      archOption: [],
+      queryLayer: null,
     };
   },
+
   methods: {
+    handleClose() {
+      this.dialogVisible = false;
+      this.$store.state.mapMenuBoolean = false;
+      this.$store.state.mapMenuBoxFlag = null;
+      this.$store.state.mapPopBoolean = false;
+      this.$store.state.mapPopBoxFlag = null;
+    },
+    showDialogBox() {
+      this.$store.state.mapMenuBoolean = true;
+      this.$store.state.mapMenuBoxFlag = '1';
+      this.dialogVisible = true;
+    },
+    //鑾峰彇琛ㄦ牸鏁版嵁
+    getArchTableData() {
+      this.companyList = [];
+      this.activeNames = null;
+      var valTree = this.$refs.tree.getCheckedNodes();
+      if (valTree.length == 0) {
+        this.$message.error('璇烽�夋嫨瑕佹煡璇㈢殑鍥惧眰璧勬枡!');
+        return;
+      }
+      for (var i in valTree) {
+        this.listdata.name = valTree[i].entity;
+        var filedData = this.getCollapseDomFiled();
+        this.archOption.push({
+          name: valTree[i].entity,
+          fileds: filedData,
+          table: this.getCollapseTable(filedData),
+        });
+      }
+
+      this.companyList = valTree;
+    },
+    //鑾峰彇姣忎釜琛ㄥ瓧娈靛悕绉板強闃堝��
+    async getCollapseDomFiled() {
+      //鏌ヨ瀛楁淇℃伅;
+      const fileds = await dataLib_selectFields({
+        name: this.listdata.name,
+      });
+      if (fileds.code != 200) {
+        this.$message.error('璋冪敤鍒楄〃澶辫触,璇疯仈绯诲伐浣滀汉鍛�!');
+        return;
+      }
+      //鏌ヨ闃堝�间俊鎭紱
+      const domains = await dataLib_selectDomains({
+        name: this.listdata.name,
+      });
+      if (domains.code != 200) {
+        this.$message.error('璋冪敤鍒楄〃澶辫触,璇疯仈绯诲伐浣滀汉鍛�!');
+        return;
+      }
+      var data1 = fileds.result;
+      var data2 = domains.result;
+      var std = [];
+      for (var i in data1) {
+        if (data1[i].showtype == 1) {
+          if (data1[i].domainNa != null) {
+            data1[i].domainNa = this.getDomainNaFild(data1[i].domainNa, data2);
+          }
+          std.push(data1[i]);
+        }
+      }
+      return std;
+    },
+    //鍊煎煙瀛楁鍖归厤
+    getDomainNaFild(res, result) {
+      for (var i in result) {
+        if (result[i].domName == res) {
+          return result[i].codeDesc;
+        }
+      }
+      return null;
+    },
+
+    //鑾峰彇姣忎釜琛ㄧ殑table
+    async getCollapseTable(res) {
+      var res_val;
+      res.then((val) => {
+        res_val = val;
+      });
+
+      if (this.formInline.name != null) {
+        this.listdata.filter = 'name like ' + this.formInline.name;
+      }
+      const fileds = await dataLib_selectByPage(this.listdata);
+      if (fileds.code != 200) {
+        this.$message.error('璋冪敤鍒楄〃澶辫触,璇疯仈绯诲伐浣滀汉鍛�!');
+        return;
+      }
+      for (var i in fileds.result) {
+        let val_Data = fileds.result[i];
+
+        for (var j in res_val) {
+          if (res_val[j].domainNa != null && res_val[j].domainNa != undefined) {
+            val_Data[res_val[j].field] = res_val[j].domainNa;
+          }
+        }
+      }
+      return fileds;
+    },
+
+    //鎶樺彔闈㈡澘鍒囨崲浜嬩欢
+    handleChange(val) {
+      if (val == '') return;
+      var that = this;
+      this.listdata.name = val;
+      this.listdata.pageSize = 10;
+      this.listdata.pageIndex = 1;
+      for (var i in this.archOption) {
+        if (this.archOption[i].name == val) {
+          this.queryLayer = this.archOption[i].fileds;
+          this.archOption[i].fileds.then((res) => {
+            that.attributeData = res;
+          });
+          this.archOption[i].table.then((res) => {
+            this.count = res.count;
+            this.tableData = res.result;
+          });
+        }
+      }
+    },
+    //鍒嗛〉鐐瑰嚮浜嬩欢
+    handleSizeChange(val) {
+      this.listdata.pageSize = val;
+      this.listdata.pageIndex = 1;
+      var res = this.getCollapseTable(this.queryLayer);
+      res.then((res) => {
+        this.tableData = res.result;
+      });
+    },
+    handleCurrentChange(val) {
+      this.listdata.pageIndex = val;
+      var res = this.getCollapseTable(this.queryLayer);
+      res.then((res) => {
+        this.tableData = res.result;
+      });
+    },
+    //鑾峰彇鏍�
+    async getTreeData() {
+      const data = await inquiry_SelectTabs();
+      if (data.code != 200) {
+        this.$message.error('鍒楄〃璋冪敤澶辫触');
+      }
+      var option = data.result;
+
+      for (var i in option) {
+        var val_Data = option[i];
+        val_Data.id = '1' + i;
+        if (option[i].ns == 'bd') {
+          this.tree[0].children.push(val_Data);
+        } else {
+          this.tree[1].children.push(val_Data);
+        }
+      }
+    },
+    //鏉冮檺绠$悊
     showArchMenu(res) {
       switch (res.tag) {
         case '/download':
@@ -190,16 +325,18 @@
         this.showArchMenu(permsEntity[i]);
       }
     }
+    this.getTreeData();
   },
 };
 </script>
 
-<style>
+<style scped lang="less">
 .archive {
   width: 100%;
   height: 100%;
   position: relative;
 }
+
 .archive .left_active {
   width: 21%;
   height: 100%;
@@ -215,9 +352,37 @@
   width: 100%;
   height: 100%;
 }
+.archive .centerBox {
+  max-height: 800px;
+  overflow: auto;
+}
+
+.archive .centerBox::-webkit-scrollbar {
+  /*婊氬姩鏉℃暣浣撴牱寮�*/
+  width: 10px; /*楂樺鍒嗗埆瀵瑰簲妯珫婊氬姩鏉$殑灏哄*/
+  height: 1px;
+}
+.archive .centerBox::-webkit-scrollbar-thumb {
+  /*婊氬姩鏉¢噷闈㈠皬鏂瑰潡*/
+  border-radius: 10px;
+  -webkit-box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2);
+  background: #e5e5e5;
+}
+.archive .centerBox::-webkit-scrollbar-track {
+  /*婊氬姩鏉¢噷闈㈣建閬�*/
+  -webkit-box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2);
+  border-radius: 10px;
+  background: #ffffff;
+}
+
+.archive .centerTable {
+  height: 600px;
+}
 .archive .arch_card .el-card__body {
   padding: 10px;
+  overflow-y: auto;
 }
+
 .archive .el-divider--horizontal {
   margin: 10px 0 !important;
 }

--
Gitblit v1.9.3