From 7a83906e6714edea1568d10acb4eb0bc1aae81c6 Mon Sep 17 00:00:00 2001
From: Surpriseplus <845948745@qq.com>
Date: 星期二, 10 十月 2023 14:10:58 +0800
Subject: [PATCH] 资源管理,令牌管理页面修改

---
 src/views/datamanage/resourceManagement.vue |  469 ++++++++++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 418 insertions(+), 51 deletions(-)

diff --git a/src/views/datamanage/resourceManagement.vue b/src/views/datamanage/resourceManagement.vue
index b4c7c55..89cdf11 100644
--- a/src/views/datamanage/resourceManagement.vue
+++ b/src/views/datamanage/resourceManagement.vue
@@ -24,17 +24,85 @@
             > <i
                 :title="$t('common.iquery')"
                 slot="suffix"
-                @click="setListDataStart"
+                @click="getResTableData"
                 class="el-icon-search"
                 style="padding-right: 8px"
               ></i></el-input>
+          </el-form-item>
+          <!-- 鏈嶅姟绫诲埆 -->
+          <el-form-item>
+            <el-select
+              size="small"
+              v-model="formInline.category"
+              :placeholder="$t('dataManage.layerObj.prompt18')"
+              @change="getResTableData"
+            >
+              <el-option
+                v-for="item in serviceType"
+                :key="item.value"
+                :label="item.label"
+                :value="item.value"
+              >
+              </el-option>
+            </el-select>
+          </el-form-item>
+          <!-- 鏁版嵁绫诲瀷 -->
+          <el-form-item>
+            <el-select
+              size="small"
+              v-model="formInline.data"
+              :placeholder="$t('dataManage.layerObj.prompt8')"
+              @change="getResTableData"
+            >
+              <el-option
+                v-for="item in dataType"
+                :key="item.value"
+                :label="item.label"
+                :value="item.value"
+              >
+              </el-option>
+            </el-select>
+          </el-form-item>
+          <!-- 鏈嶅姟绫诲埆 -->
+          <el-form-item>
+            <el-select
+              size="small"
+              v-model="formInline.type"
+              :placeholder="$t('dataManage.layerObj.prompt3')"
+              @change="getResTableData"
+            >
+              <el-option
+                v-for="item in dataTypes"
+                :key="item.value"
+                :label="item.label"
+                :value="item.value"
+              >
+              </el-option>
+            </el-select>
+          </el-form-item>
+          <!-- 鐘舵�� -->
+          <el-form-item>
+            <el-select
+              size="small"
+              v-model="formInline.status"
+              :placeholder="$t('dataManage.layerObj.prompt19')"
+              @change="getResTableData"
+            >
+              <el-option
+                v-for="item in statusType"
+                :key="item.value"
+                :label="item.label"
+                :value="item.value"
+              >
+              </el-option>
+            </el-select>
           </el-form-item>
           <el-form-item style="float: right;">
             <el-button
               v-if="menuStatus.insert"
               icon="el-icon-edit"
               type="success"
-              @click="insertDialog = true"
+              @click="setInsertTableData"
               size="small"
             >{{ $t('common.append') }}
             </el-button>
@@ -67,6 +135,7 @@
           border
           height="calc(100% - 10px)"
           @selection-change="handleSelectionChange"
+          @cell-dblclick="copyText"
         >
           <el-table-column
             type="selection"
@@ -81,15 +150,15 @@
           <el-table-column
             align="center"
             prop="cnName"
-            :label="$t('dataManage.layerObj.layerName')"
+            :label="$t('dataManage.layerObj.resourceName')"
             width="150"
           />
-          <el-table-column
+          <!-- <el-table-column
             align="center"
             prop="enName"
             :label="$t('dataManage.layerObj.englishName')"
             width="170"
-          />
+          /> -->
           <el-table-column
             align="center"
             prop="status"
@@ -100,15 +169,22 @@
           <el-table-column
             align="center"
             prop="category"
-            :label="$t('dataManage.layerObj.serviceType')"
+            :label="$t('dataManage.layerObj.firm')"
             :formatter="setResCategory"
             width="150"
           />
           <el-table-column
             align="center"
             prop="type"
-            :label="$t('dataManage.layerObj.dataType')"
+            :label="$t('dataManage.layerObj.serviceType')"
             :formatter="setResType"
+            width="150"
+          />
+          <el-table-column
+            align="center"
+            prop="data"
+            :label="$t('dataManage.layerObj.dataType')"
+            :formatter="setResData"
             width="150"
           />
           <el-table-column
@@ -140,6 +216,7 @@
             prop="proxy"
             :label="$t('dataManage.layerObj.proxyAddress')"
             width="300"
+            :formatter="formatProxy"
           />
           <el-table-column
             align="center"
@@ -149,7 +226,7 @@
           />
           <el-table-column
             align="center"
-            prop="createUser"
+            prop="createName"
             :label="$t('dataManage.vmobj.createonuser')"
             width="200"
           />
@@ -162,7 +239,7 @@
           />
           <el-table-column
             align="center"
-            prop="updateUser"
+            prop="updateName"
             :label="$t('dataManage.vmobj.updateonuser')"
             width="200"
           />
@@ -181,7 +258,7 @@
           />
           <el-table-column
             :label="$t('common.operate')"
-            width="150"
+            width="200"
           >
             <template slot-scope="scope">
               <el-button
@@ -190,6 +267,12 @@
                 type="warning"
                 plain
               >{{ $t('common.update') }}</el-button>
+              <el-button
+                size="small"
+                v-show="scope.row.status != 0"
+                plain
+                @click="setScopePreview(scope.row)"
+              >{{ $t('common.preview') }}</el-button>
 
             </template>
           </el-table-column>
@@ -231,14 +314,8 @@
               class="insertWidth"
             ></el-input>
           </el-form-item>
-          <el-form-item :label="$t('dataManage.layerObj.englishName')">
-            <el-input
-              v-model="insertData.enName"
-              :placeholder="$t('dataManage.layerObj.prompt14')"
-              class="insertWidth"
-            ></el-input>
-          </el-form-item>
-          <el-form-item :label="$t('dataManage.layerObj.serviceType')">
+
+          <el-form-item :label="$t('dataManage.layerObj.firm')">
             <el-select
               class="insertWidth"
               v-model="insertData.category"
@@ -256,8 +333,9 @@
           <el-form-item :label="$t('dataManage.layerObj.dataType')">
             <el-select
               class="insertWidth"
-              v-model="insertData.type"
-              :placeholder="$t('dataManage.layerObj.prompt8')"
+              v-model="insertData.data"
+              @change="setCategoryTypeChange"
+              :placeholder="$t('dataManage.layerObj.prompt3')"
             >
               <el-option
                 v-for="item in dataType"
@@ -269,11 +347,30 @@
             </el-select>
           </el-form-item>
 
-          <el-form-item :label="$t('dataManage.layerObj.tableName')">
+          <el-form-item :label="$t('dataManage.layerObj.serviceType')">
+            <el-select
+              class="insertWidth"
+              v-model="insertData.type"
+              :placeholder="$t('dataManage.layerObj.prompt8')"
+            >
+              <el-option
+                v-for="item in categoryType"
+                :key="item.value"
+                :label="item.label"
+                :value="item.value"
+              >
+              </el-option>
+            </el-select>
+          </el-form-item>
+
+          <el-form-item
+            v-if="insertData.category == 2"
+            :label="$t('dataManage.layerObj.layerName')"
+          >
             <el-input
               v-model="insertData.tab"
               class="insertWidth"
-              :placeholder="$t('dataManage.layerObj.prompt12')"
+              :placeholder="$t('dataManage.layerObj.prompt1')"
             ></el-input>
           </el-form-item>
           <el-form-item :label="$t('dataManage.layerObj.serviceAddress')">
@@ -302,11 +399,15 @@
               <el-radio
                 v-model="insertData.status"
                 label="0"
-              >{{$t('dataManage.layerObj.isStop')}}</el-radio>
+              >{{$t('dataManage.layerObj.disable')}}</el-radio>
               <el-radio
                 v-model="insertData.status"
                 label="1"
-              > {{$t('dataManage.layerObj.isEnable')}}</el-radio>
+              > {{$t('dataManage.layerObj.enableOriginalAddress')}}</el-radio>
+              <el-radio
+                v-model="insertData.status"
+                label="2"
+              > {{$t('dataManage.layerObj.enableProxy')}}</el-radio>
             </div>
           </el-form-item>
           <el-form-item :label="$t('dataManage.layerObj.descr')">
@@ -361,14 +462,14 @@
               class="insertWidth"
             ></el-input>
           </el-form-item>
-          <el-form-item :label="$t('dataManage.layerObj.englishName')">
+          <!-- <el-form-item :label="$t('dataManage.layerObj.englishName')">
             <el-input
               v-model="editData.enName"
               :placeholder="$t('dataManage.layerObj.prompt14')"
               class="insertWidth"
             ></el-input>
-          </el-form-item>
-          <el-form-item :label="$t('dataManage.layerObj.serviceType')">
+          </el-form-item> -->
+          <el-form-item :label="$t('dataManage.layerObj.firm')">
             <el-select
               class="insertWidth"
               v-model="editData.category"
@@ -386,11 +487,27 @@
           <el-form-item :label="$t('dataManage.layerObj.dataType')">
             <el-select
               class="insertWidth"
+              v-model="editData.data"
+              @change="setEdtitTypeChange"
+              :placeholder="$t('dataManage.layerObj.prompt3')"
+            >
+              <el-option
+                v-for="item in dataType"
+                :key="item.value"
+                :label="item.label"
+                :value="item.value"
+              >
+              </el-option>
+            </el-select>
+          </el-form-item>
+          <el-form-item :label="$t('dataManage.layerObj.serviceType')">
+            <el-select
+              class="insertWidth"
               v-model="editData.type"
               :placeholder="$t('dataManage.layerObj.prompt8')"
             >
               <el-option
-                v-for="item in dataType"
+                v-for="item in categoryType"
                 :key="item.value"
                 :label="item.label"
                 :value="item.value"
@@ -432,11 +549,15 @@
               <el-radio
                 v-model="editData.status"
                 label="0"
-              >{{$t('dataManage.layerObj.isStop')}}</el-radio>
+              >{{$t('dataManage.layerObj.disable')}}</el-radio>
               <el-radio
                 v-model="editData.status"
                 label="1"
-              > {{$t('dataManage.layerObj.isEnable')}}</el-radio>
+              > {{$t('dataManage.layerObj.enableOriginalAddress')}}</el-radio>
+              <el-radio
+                v-model="editData.status"
+                label="2"
+              > {{$t('dataManage.layerObj.enableProxy')}}</el-radio>
             </div>
           </el-form-item>
           <el-form-item :label="$t('dataManage.layerObj.descr')">
@@ -472,10 +593,37 @@
         </span>
       </div>
     </el-dialog>
+
+    <!-- 鍦板潃棰勮 -->
+    <el-dialog
+      :title="$t('common.preview')"
+      :class="isFullscreen ? '' : 'dialogClass_his'"
+      custom-class="handleDialogClass"
+      width="73.4%"
+      :fullscreen="isFullscreen"
+      v-if="prevDialog"
+      :visible.sync="prevDialog"
+      :show-close="false"
+      :close-on-click-modal="false"
+      :close-on-press-escape="false"
+    >
+      <dialog-header
+        slot="title"
+        :dialog-tittle="$t('common.preview')"
+        :fullscreen="isFullscreen"
+        @handle-closed="handleClose"
+        @is-fullscreen="onFullscreen"
+      ></dialog-header>
+      <div :class="{'fullscreen1':isFullscreen}">
+        <mapview v-if="showMapView"></mapview>
+      </div>
+    </el-dialog>
   </div>
 </template>
 <script>
 import MyBread from "../../components/MyBread.vue";
+import dialogHeader from './dialogHeader.vue'
+import server from '../../components/js/server.js'
 import {
   getPerms,
   select_Res_ByPageAndCount,
@@ -483,23 +631,28 @@
   res_deletes,
   res_updates,
   res_update,
+  token_insertNewToken
 } from "../../api/api";
 import $ from 'jquery'
 import { getToken } from '../../utils/auth';
-import { serve_type, data_type } from './js/layerManage.js'
+import { serve_type, data_type, category_type } from './js/layerManage.js'
 import { json } from "body-parser";
 import { flatten } from '@turf/turf';
-
+import mapview from '../../components/MapView/moonMap.vue'
 export default {
   name: "catalogueManage",
   components: {
-    MyBread,
+    MyBread, mapview, 'dialog-header': dialogHeader,
   },
   data() {
 
     return {
       formInline: {
-        name: null
+        name: null,
+        type: null,
+        data: null,
+        category: null,
+        status: null
       },
       menuStatus: {
         delete: false,
@@ -520,11 +673,33 @@
       multipleSelection: [],
       editData: {},
       copyData: null,
-      insertData: {},
+      insertData: {
+        status: "2",
+        category: null,
+        type: null,
+        data: null
+      },
       editDialog: false,
       insertDialog: false,
       dataType: [],
-      serviceType: []
+      dataTypes: [],
+      serviceType: [],
+      categoryType: [],
+      insertDisabled: false,
+      editDisabled: false,
+      isFullscreen: false,
+      prevDialog: false,
+      showMapView: false,
+      statusType: [
+        {
+          label: '绂佺敤', value: 0
+        },
+        {
+          label: '鍚敤鍘熷鍦板潃', value: 1
+        }, {
+          label: '鍚敤浠g悊鍦板潃', value: 2
+        }
+      ], resToken: null,
     };
   },
   watch: {
@@ -535,7 +710,37 @@
     window.removeEventListener("resize", this.onResize);
   },
   methods: {
+    async getResToken() {
+      if (this.$store.state.resToken) {
+        this.resToken = this.$store.state.resToken
+      } else {
+        const data = await token_insertNewToken({
+          type: 1,
+          min: 43200
+        });
+        if (data.code == 200) {
+          this.$store.state.resToken = data.result.token;
+          this.resToken = data.result.token;
+        }
+      }
+    },
+
+    //鏄惁涓哄叏灞忓嚱鏁�
+    onFullscreen(fullscreen) {
+      this.isFullscreen = fullscreen;
+    },
+    //棰勮寮圭獥鍏抽棴
+    handleClose() {
+      this.prevDialog = false
+      this.showMapView = false;
+
+    },
     async setEditConfirm() {
+      if (this.editData.url.indexOf('?') > -1) {
+        var val = this.editData.url.split("?");
+        this.editData.url = val[0];
+        this.editData.args = this.editData.args + val[1];
+      }
       const data = await res_update(this.editData);
       if (data.code == 200) {
         this.$message({
@@ -566,9 +771,73 @@
         .catch(_ => { });
     },
     setEmptyData() {
-      this.formInline.name = ""
+      this.formInline = {
+        name: null,
+        type: null,
+        data: null,
+        category: null,
+        status: null
+      }
       this.setListDataStart()
     },
+    setInsertTableData() {
+      this.insertData.category = this.serviceType[0].value
+      this.insertData.data = this.dataType[0].value
+      this.setServeTypeChange(this.dataType[0].children)
+      this.insertDialog = true;
+
+    },
+    setServeTypeChange(res) {
+      var std = [];
+      for (var i in res) {
+        for (var j in serve_type) {
+          if (serve_type[j].value == res[i]) {
+            std.push({
+              value: serve_type[j].value,
+              label: serve_type[j].name,
+            })
+          }
+        }
+      }
+      this.categoryType = std
+      this.insertData.type = this.categoryType[0].value
+    },
+
+    setCategoryTypeChange(item) {
+      var filter = this.dataType.filter(res => {
+        if (res.value == item) {
+          return res
+        }
+      })
+      this.setServeTypeChange(filter[0].children)
+    },
+    setEdtitTypeChange(item) {
+      var filter = this.dataType.filter(res => {
+        if (res.value == item) {
+          return res
+        }
+      })
+      this.setEditServeTypeChange(filter[0].children)
+    },
+    setEditServeTypeChange(res) {
+      var std = [];
+      for (var i in res) {
+        for (var j in serve_type) {
+          if (serve_type[j].value == res[i]) {
+            std.push({
+              value: serve_type[j].value,
+              label: serve_type[j].name,
+            })
+          }
+        }
+      }
+      this.categoryType = std
+      this.editData.type = this.categoryType[0].value
+    },
+
+
+
+
     async setDelTableData() {
       if (this.multipleSelection.length <= 0) {
         return this.$message('璇烽�夋嫨瑕佸垹闄ょ殑璧勬簮鏁版嵁');
@@ -590,7 +859,9 @@
     },
     closeInsertDialog() {
       this.insertDialog = false;
-      this.insertData = {}
+      this.insertData = {
+        status: '2'
+      }
     },
     setInsertCannel() {
       var that = this;
@@ -601,6 +872,13 @@
         .catch(_ => { });
     },
     async setInsertConfirm() {
+      if (this.insertData.url.indexOf('?') > -1) {
+        var val = this.insertData.url.split("?");
+        this.insertData.url = val[0];
+        this.insertData.args = val[1] + this.insertData.args;
+      }
+
+      this.insertData.status = parseInt(this.insertData.status)
       const data = await res_insert(this.insertData);
       if (data.code == 200) {
         this.$message({
@@ -619,27 +897,67 @@
     optionsStart() {
       var std = [];
       var ste = [];
-      for (var i in serve_type) {
+      var str = [];
+      for (var i in category_type) {
         ste.push({
+          value: category_type[i].value,
+          label: category_type[i].name,
+        })
+      }
+      this.serviceType = ste;
+
+      for (var i in data_type) {
+        str.push({
+          value: data_type[i].value,
+          label: data_type[i].name,
+          children: data_type[i].children
+        })
+      }
+      this.dataType = str;
+      for (var i in serve_type) {
+        std.push({
           value: serve_type[i].value,
           label: serve_type[i].name,
         })
       }
-      this.serviceType = std;
-      for (var i in data_type) {
-        std.push({
-          value: data_type[i].value,
-          label: data_type[i].name,
-        })
-      }
-      this.dataType = ste;
+      this.dataTypes = std;
     },
     setScopeEdit(row) {
       this.copyData = JSON.parse(JSON.stringify(row));
       this.editData = JSON.parse(JSON.stringify(row));
       this.editData.status = this.editData.status.toString()
+      this.editData.category = parseInt(this.editData.category)
+      this.editData.type = parseInt(this.editData.type)
+      if (this.editData.data) {
+        this.editData.data = parseInt(this.editData.data)
+      }
       this.editDialog = true
     },
+    setScopePreview(row) {
+      this.prevDialog = true;
+      this.showMapView = true;
+      setTimeout(() => {
+        server.addLayer(row)
+      }, 1000);
+    },
+    formatProxy(row, column) {
+      var token = this.resToken
+      if (row.proxy && row.proxy.indexOf('{token}') > -1) {
+        var val = row.proxy.replaceAll('{token}', token)
+        return BASE_URL + val
+      }
+    },
+    copyText(row, column, cell, event) {
+      // 鍙屽嚮澶嶅埗
+      let save = function (e) {
+        e.clipboardData.setData('text/plain', event.target.innerText);
+        e.preventDefault();  //闃绘榛樿琛屼负
+      }
+      document.addEventListener('copy', save);//娣诲姞涓�涓猚opy浜嬩欢
+      document.execCommand("copy");//鎵цcopy鏂规硶
+      this.$message({ message: '澶嶅埗鎴愬姛', type: 'success' })//鎻愮ず
+    },
+
     //鏍煎紡鍖栧垪琛�
     formatData(row, column) {
       let data = row[column.property];
@@ -701,6 +1019,37 @@
           break;
       }
     },
+    setResData(row, column) {
+      switch (row.data) {
+        case 1:
+          return "鏁板瓧姝e皠褰卞儚鍥�"
+          break;
+        case 2:
+          return "鍦烘櫙鍦板舰鏁版嵁"
+          break;
+        case 3:
+          return "鏁板瓧楂樼▼妯″瀷锛堟檿娓插浘锛�"
+          break;
+        case 4:
+          return "鍗曟尝娈垫爡鏍兼暟鎹�"
+          break;
+        case 5:
+          return "澶氬厜璋辨爡鏍兼暟鎹�"
+          break;
+        case 6:
+          return "楂樺厜璋辨爡鏍兼暟鎹�"
+          break;
+        case 7:
+          return "鐭㈤噺鍥惧眰"
+          break;
+        case 8:
+          return "涓夌淮妯″瀷"
+          break;
+        default:
+          return ""
+          break;
+      }
+    },
     setResCategory(row, column) {
       switch (row.category) {
         case 0:
@@ -721,15 +1070,16 @@
       }
     },
     setResStatus(row, column) {
+
       switch (row.status) {
         case 0:
-          return "鍋滅敤"
+          return "绂佺敤"
           break;
         case 1:
-          return "鍚敤"
+          return "鍚敤鍘熷鍦板潃"
           break;
         case 2:
-          return "鍚敤浠g悊"
+          return "鍚敤浠g悊鍦板潃"
           break;
         default:
           return ""
@@ -737,7 +1087,11 @@
       }
     },
     async getResTableData() {
-      this.listData.name = this.formInline.name
+      this.listData.name = this.formInline.name;
+      this.listData.data = this.formInline.data;
+      this.listData.type = this.formInline.type;
+      this.listData.category = this.formInline.category;
+      this.listData.status = this.formInline.status;
       const data = await select_Res_ByPageAndCount(this.listData);
       if (data.code != 200) {
         return this.$message({
@@ -745,6 +1099,7 @@
           type: "warning",
         });
       }
+
       this.tableData = data.result;
       this.listData.count = data.count;
     },
@@ -817,10 +1172,12 @@
   },
   mounted() {
     window.addEventListener("resize", this.onResize);
+    this.getResToken();
     this.calHeight();
     this.getPerms();
     this.setListDataStart();
     this.optionsStart();
+
 
   },
 };
@@ -848,6 +1205,10 @@
     }
   }
 }
+.fullscreen1 {
+  width: 100%;
+  height: 94vh;
+}
 /deep/ .el-input__suffix {
   top: 50%;
   transform: translateY(-50%);
@@ -855,6 +1216,12 @@
 .insertWidth {
   width: calc(100% - 200px);
 }
+/deep/.el-dialog__body {
+  padding: 10px !important;
+}
+/deep/.el-dialog__header {
+  padding: 10px !important;
+}
 </style>
 <style >
 .el-message-box {

--
Gitblit v1.9.3