From 1653112f53e17dbbd8a5b7230b096da8902b3337 Mon Sep 17 00:00:00 2001
From: Surpriseplus <845948745@qq.com>
Date: 星期五, 11 八月 2023 15:13:47 +0800
Subject: [PATCH] 图层管理修改

---
 src/views/datamanage/layerManagement.vue |  389 +++++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 334 insertions(+), 55 deletions(-)

diff --git a/src/views/datamanage/layerManagement.vue b/src/views/datamanage/layerManagement.vue
index 35d78a8..5d1dedc 100644
--- a/src/views/datamanage/layerManagement.vue
+++ b/src/views/datamanage/layerManagement.vue
@@ -105,22 +105,7 @@
             class="demo-form-inline"
             label-width="150px"
           >
-            <!-- 鑿滃崟鍚嶇О -->
-            <el-form-item :label="$t('dataManage.layerObj.layerName')">
-              <el-input
-                :placeholder="$t('dataManage.layerObj.prompt1')"
-                style="width: 60%;"
-                v-model="formInline.cnName"
-              ></el-input>
-            </el-form-item>
-            <!-- 鑻辨枃鍚嶇О -->
-            <el-form-item :label="$t('dataManage.layerObj.englishName')">
-              <el-input
-                :placeholder="$t('dataManage.layerObj.prompt6')"
-                style="width: 60%;"
-                v-model="formInline.enName"
-              ></el-input>
-            </el-form-item>
+
             <!-- 鑿滃崟绫诲瀷 -->
             <el-form-item :label="$t('dataManage.layerObj.layerType')">
               <el-select
@@ -138,6 +123,44 @@
                 ></el-option>
               </el-select>
             </el-form-item>
+            <!-- 鏈嶅姟璧勬簮-->
+            <el-form-item
+              v-show="formInline.isLayer == 1"
+              :label="$t('dataManage.layerObj.serviceResources')"
+            >
+              <el-button
+                size="small"
+                class="serviceButton"
+                @click="setServiceChange('0')"
+                :class="{serviceActive: formInline.service === '0'}"
+              >{{$t('dataManage.layerObj.isfalse')}}</el-button>
+              <el-button
+                size="small"
+                class="serviceButton"
+                @click="setServiceChange('1')"
+                :class="{serviceActive: formInline.service === '1'}"
+              >{{$t('dataManage.layerObj.istrue')}}</el-button>
+
+            </el-form-item>
+            <!-- 鑿滃崟鍚嶇О -->
+            <el-form-item :label="$t('dataManage.layerObj.layerName')">
+              <el-input
+                :placeholder="$t('dataManage.layerObj.prompt1')"
+                style="width: 60%;"
+                v-model="formInline.cnName"
+                :disabled="formInline.service =='1'"
+              ></el-input>
+            </el-form-item>
+            <!-- 鑻辨枃鍚嶇О -->
+            <el-form-item :label="$t('dataManage.layerObj.englishName')">
+              <el-input
+                :placeholder="$t('dataManage.layerObj.prompt6')"
+                style="width: 60%;"
+                v-model="formInline.enName"
+                :disabled="formInline.service =='1'"
+              ></el-input>
+            </el-form-item>
+
             <!-- 鏁版嵁绫诲瀷 -->
             <el-form-item
               v-show="formInline.isLayer == 1"
@@ -147,6 +170,7 @@
                 style="width: 60%;"
                 v-model="formInline.type"
                 :placeholder="$t('dataManage.layerObj.prompt3')"
+                :disabled="formInline.service =='1'"
               >
                 <el-option
                   v-for="item in dataType"
@@ -166,19 +190,9 @@
                 :placeholder="$t('dataManage.layerObj.prompt4')"
                 style="width: 60%;"
                 v-model="formInline.url"
+                :disabled="formInline.service =='1'"
               ></el-input>
             </el-form-item>
-            <!-- 鑻辨枃琛ㄥ悕 -->
-            <!-- <el-form-item
-              v-show="formInline.isLayer == 1 && formInline.type =='WMS'"
-              :label="$t('dataManage.layerObj.enTableName')"
-            >
-              <el-input
-                :placeholder="$t('dataManage.layerObj.prompt6')"
-                style="width: 60%;"
-                v-model="formInline.enName"
-              ></el-input>
-            </el-form-item> -->
 
             <!-- 鏄惁鏄剧ず -->
             <el-form-item
@@ -236,22 +250,6 @@
           class="demo-form-inline"
           label-width="150px"
         >
-          <!-- 鑿滃崟鍚嶇О -->
-          <el-form-item :label="$t('dataManage.layerObj.layerName')">
-            <el-input
-              :placeholder="$t('dataManage.layerObj.prompt1')"
-              style="width: 60%;"
-              v-model="insertData.cnName"
-            ></el-input>
-          </el-form-item>
-          <!-- 鑻辨枃鍚嶇О -->
-          <el-form-item :label="$t('dataManage.layerObj.englishName')">
-            <el-input
-              :placeholder="$t('dataManage.layerObj.prompt6')"
-              style="width: 60%;"
-              v-model="insertData.enName"
-            ></el-input>
-          </el-form-item>
           <!-- 鑿滃崟绫诲瀷 -->
           <el-form-item :label="$t('dataManage.layerObj.layerType')">
             <el-select
@@ -269,12 +267,50 @@
               ></el-option>
             </el-select>
           </el-form-item>
+          <el-form-item
+            v-show="insertData.isLayer == 1"
+            :label="$t('dataManage.layerObj.serviceResources')"
+          >
+            <el-button
+              size="small"
+              class="serviceButton"
+              @click="setServiceChange('0')"
+              :class="{serviceActive: insertData.service === '0'}"
+            >{{$t('dataManage.layerObj.isfalse')}}</el-button>
+            <el-button
+              size="small"
+              class="serviceButton"
+              @click="setServiceChange('1')"
+              :class="{serviceActive: insertData.service === '1'}"
+            >{{$t('dataManage.layerObj.istrue')}}</el-button>
+
+          </el-form-item>
+          <!-- 鑿滃崟鍚嶇О -->
+          <el-form-item :label="$t('dataManage.layerObj.layerName')">
+            <el-input
+              :disabled="insertData.service =='1'"
+              :placeholder="$t('dataManage.layerObj.prompt1')"
+              style="width: 60%;"
+              v-model="insertData.cnName"
+            ></el-input>
+          </el-form-item>
+          <!-- 鑻辨枃鍚嶇О -->
+          <el-form-item :label="$t('dataManage.layerObj.englishName')">
+            <el-input
+              :disabled="insertData.service =='1'"
+              :placeholder="$t('dataManage.layerObj.prompt6')"
+              style="width: 60%;"
+              v-model="insertData.enName"
+            ></el-input>
+          </el-form-item>
+
           <!-- 鏁版嵁绫诲瀷 -->
           <el-form-item
             v-show="insertData.isLayer == 1"
             :label="$t('dataManage.layerObj.serviceType')"
           >
             <el-select
+              :disabled="insertData.service =='1'"
               style="width: 60%;"
               v-model="insertData.type"
               :placeholder="$t('dataManage.layerObj.prompt3')"
@@ -294,26 +330,17 @@
             :label="$t('dataManage.layerObj.serviceAddress')"
           >
             <el-input
+              :disabled="insertData.service =='1'"
               :placeholder="$t('dataManage.layerObj.prompt4')"
               style="width: 60%;"
               v-model="insertData.url"
             ></el-input>
           </el-form-item>
-          <!-- 鑻辨枃琛ㄥ悕 -->
-          <!-- <el-form-item :label="$t('dataManage.layerObj.enTableName')">
-            <el-input
-              :placeholder="$t('dataManage.layerObj.prompt6')"
-              style="width: 60%;"
-              v-model="insertData.enName"
-            ></el-input>
-          </el-form-item> -->
-
           <!-- 鏄惁鏄剧ず -->
           <el-form-item
             v-show="insertData.isLayer == 1"
             :label="$t('dataManage.layerObj.displayOrNot')"
           >
-
             <el-radio
               v-model="insertData.status"
               label="0"
@@ -341,10 +368,99 @@
             <el-button
               type="info"
               size="small"
+              @click="submitCancel( )"
             >{{$t('common.cancel')}}</el-button>
           </el-form-item>
 
         </el-form>
+      </div>
+    </el-dialog>
+    <el-dialog
+      :visible.sync="dialogService"
+      width="50%"
+      :show-close="false"
+    >
+      <div style="width: 100%;max-height: 63vh;overflow-y: auto; ">
+        <div style="  display: flex; justify-content: space-between;">
+          <div> <el-input
+              size="small"
+              v-model="listData.name"
+            > <i
+                slot="suffix"
+                class="el-input__icon el-icon-search"
+                @click="setServiceQuery"
+              ></i></el-input></div>
+          <div>
+            <el-button
+              type="info"
+              size="small"
+              @click="setServiceRest"
+            >{{$t('common.reset')}}</el-button>
+
+            <el-button
+              type="primary"
+              size="small"
+              @click="setServiceConfirm"
+            >{{$t('common.confirm')}}</el-button>
+            <el-button
+              type="info"
+              size="small"
+              @click="setServiceCanel"
+            >{{$t('common.cancel')}}</el-button>
+
+          </div>
+        </div>
+        <el-table
+          ref="multipleTable"
+          :data="tableData"
+          @select="selectChange"
+        >
+          <el-table-column
+            type="selection"
+            width="55"
+          >
+          </el-table-column>
+          <el-table-column
+            align="center"
+            type="index"
+            :label="$t('common.index')"
+            width="70px"
+          />
+          <el-table-column
+            align="center"
+            prop="cnName"
+            :label="$t('dataManage.layerObj.resourceName')"
+          />
+
+          <el-table-column
+            align="center"
+            prop="category"
+            :label="$t('dataManage.layerObj.serviceType')"
+            :formatter="setResCategory"
+          />
+          <el-table-column
+            align="center"
+            prop="type"
+            :label="$t('dataManage.layerObj.dataType')"
+            :formatter="setResType"
+          />
+        </el-table>
+        <div
+          class="pagination_box"
+          style="margin-top: 15px"
+        >
+          <el-pagination
+            @size-change="handleSizeChange"
+            @current-change="handleCurrentChange"
+            :current-page="listData.pageIndex"
+            :page-sizes="[10, 50,100,200]"
+            :page-size="listData.pageSize"
+            layout="total, sizes, prev, pager, next, jumper"
+            :total="listData.count"
+          >
+          </el-pagination>
+        </div>
+
       </div>
     </el-dialog>
   </div>
@@ -357,7 +473,8 @@
   layer_update,
   layer_updates,
   layer_insert,
-  layer_delete
+  layer_delete,
+  res_selectByPageAndCount,
 } from "../../api/api";
 import $ from 'jquery'
 import { getToken } from '../../utils/auth';
@@ -370,7 +487,6 @@
     MyBread,
   },
   data() {
-
     return {
       filterText: null,
       formInline: {
@@ -386,6 +502,7 @@
         isLayer: null,
         category: null,
         status: null,
+        service: '0'
       },
       serveType: null,
       dataType: null,
@@ -408,6 +525,15 @@
       newNode: null,
       newData: [],
       oriData: [],
+      dialogService: false,
+      listData: {
+        pageIndex: 1,
+        pageSize: 10,
+        count: 0,
+        name: ''
+      },
+      tableData: [],
+      multipleSelection: [],
     };
   },
   watch: {
@@ -416,6 +542,139 @@
     },
   },
   methods: {
+    setServiceConfirm() {
+      if (this.multipleSelection.length <= 0) {
+        return this.$message("鏈�夋嫨璧勬簮鏁版嵁");
+      }
+
+      var url;
+      if (this.multipleSelection.status == 1) {
+        url = this.multipleSelection.url;
+      } else if (this.multipleSelection.status == 2) {
+        var token = getToken()
+        url = BASE_URL + this.multipleSelection.proxy.replaceAll('{token}', token);
+      }
+
+      if (this.dialogVisible) {
+        this.insertData.cnName = this.multipleSelection.cnName;
+        this.insertData.enName = this.multipleSelection.enName;
+        this.insertData.type = this.multipleSelection.type;
+        this.insertData.resid = this.multipleSelection.id
+        this.insertData.url = url;
+        this.insertData.service = '1'
+      } else {
+        this.formInline.cnName = this.multipleSelection.cnName;
+        this.formInline.enName = this.multipleSelection.enName;
+        this.formInline.type = this.multipleSelection.type;
+        this.formInline.resid = this.multipleSelection.id
+        this.formInline.url = url;
+        this.formInline.service = '1'
+      }
+
+
+
+      this.dialogService = false
+
+    },
+    setServiceRest() {
+      this.listData = {
+        pageIndex: 1,
+        pageSize: 10,
+        count: 0,
+        name: ''
+      }
+      this.getServiceData();
+    },
+    setServiceQuery() {
+      this.listData.pageIndex = 1;
+      this.listData.pageSize = 10;
+      this.listData.count = 0;
+      this.getServiceData();
+    },
+    setServiceCanel() {
+      this.dialogService = false;
+      this.multipleSelection = [];
+      this.tableData == [];
+      this.listData = {
+        pageIndex: 1,
+        pageSize: 10,
+        count: 0,
+        name: ''
+      }
+    },
+    selectChange(selection, row) {
+      this.multipleSelection = row
+      if (selection.length > 1) {
+        let del_row = selection.shift()
+        this.$refs.multipleTable.toggleRowSelection(del_row, false)
+      }
+    },
+    setResType(row, column) {
+      switch (row.type) {
+        case 0:
+          return "URL"
+          break;
+        case 1:
+          return "TMS"
+          break;
+        case 2:
+          return "WMTS"
+          break;
+        case 3:
+          return "WMS"
+          break;
+        case 4:
+          return "WFS"
+          break;
+        case 5:
+          return "Tileset"
+          break;
+        default:
+          return ""
+          break;
+      }
+    },
+    setResCategory(row, column) {
+      switch (row.category) {
+        case 0:
+          return "鍏朵粬"
+          break;
+        case 1:
+          return "GisServer"
+          break;
+        case 2:
+          return "GeoServer"
+          break;
+        case 3:
+          return "鏁扮畝"
+          break;
+        default:
+          return ""
+          break;
+      }
+    },
+    handleSizeChange(val) {
+      this.listData.pageSize = val;
+      this.getServiceData();
+    },
+    handleCurrentChange(val) {
+      this.listData.pageIndex = val;
+      this.getServiceData();
+    },
+    setServiceChange(res) {
+      if (res == '1') {
+        this.setServiceRest()
+      }
+    },
+    async getServiceData() {
+      const data = await res_selectByPageAndCount(this.listData);
+      if (data.code != 200) {
+        return this.$message.error("璧勬簮鏁版嵁鑾峰彇澶辫触");
+      }
+      this.tableData = data.result;
+      this.listData.count = data.count;
+      this.dialogService = true
+    },
     //鍚戜笂鍚戜笅绉诲姩
     setEditNode(res) {
       let node = this.$refs.tree.getCurrentNode();
@@ -516,6 +775,10 @@
 
       this.getLayerTree();
     },
+    submitCancel() {
+      this.dialogVisible = false;
+      this.insertStart();
+    },
     async submitForm() {
       var val = this.insertData;
       val.status = parseInt(val.status);
@@ -579,6 +842,8 @@
         isLayer: null,
         category: null,
         status: null,
+        service: '0',
+        status: '1'
       }
     },
     //淇敼鏁版嵁
@@ -637,6 +902,11 @@
       this.formInline = result;
       this.formInline.isLayer = res.isLayer.toString();
       this.formInline.status = result.status.toString();
+      if (res.resid && res.resid > 0) {
+        this.formInline.service = '1'
+      } else {
+        this.formInline.service = '0'
+      }
       // this.formInline.isProject = result.isProject.toString();
     },
     //鍥惧眰鍒楄〃鐐瑰嚮浜嬩欢
@@ -780,6 +1050,15 @@
     }
   }
 }
+.serviceButton {
+  background: transparent !important;
+  color: #dcdfe6;
+}
+.serviceActive {
+  background: transparent !important;
+  color: #46a6ff;
+  border: 1px solid #46a6ff;
+}
 /deep/ .el-input__suffix {
   top: 50%;
   transform: translateY(-50%);

--
Gitblit v1.9.3