From 17c4e82a8e8159b4b387d79c395f2650ef85f6e4 Mon Sep 17 00:00:00 2001
From: Surpriseplus <845948745@qq.com>
Date: 星期四, 24 八月 2023 17:05:22 +0800
Subject: [PATCH] 添加投影图层管理页面

---
 src/assets/lang/zh.js                              |    1 
 src/views/datamanage/projectionLayerManagement.vue | 1344 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 public/config/config.js                            |    2 
 public/CIMSDK/Workers/field/rendermapWorker.js     |    2 
 src/assets/lang/en.js                              |    4 
 src/views/datamanage/bankController.vue            |    6 
 src/views/datamanage/layerManagement.vue           |   17 
 7 files changed, 1,366 insertions(+), 10 deletions(-)

diff --git a/public/CIMSDK/Workers/field/rendermapWorker.js b/public/CIMSDK/Workers/field/rendermapWorker.js
index bd7ffcc..11ef49c 100644
--- a/public/CIMSDK/Workers/field/rendermapWorker.js
+++ b/public/CIMSDK/Workers/field/rendermapWorker.js
@@ -53,7 +53,7 @@
     var colorBar = colorInfo;
     var valMax = byteArray[byteArray.length - 1];
     var valMin = byteArray[byteArray.length - 2];
-    debugger
+
     if (colorEqually) {
         var delta = valMax - valMin;
         delta = delta / (colorBar.length - 1);
diff --git a/public/config/config.js b/public/config/config.js
index 52a5361..3991e24 100644
--- a/public/config/config.js
+++ b/public/config/config.js
@@ -3,7 +3,7 @@
 var is_production = false;//鍒ゆ柇鏄惁涓虹敓浜х幆澧�
 
 var webHost = isWeb ? "103.85.165.99" + ":8052" : '192.168.20.83' + ":8088";
-// var webHost = isWeb ? "103.85.165.99" + ":8052" : '192.168.16.162' + ":12316";
+// var webHost = isWeb ? "103.85.165.99" + ":8052" : '192.168.20.106' + ":9000";
 
 var fmeHost = isWeb ? "103.85.165.99" + ":8051" : '192.168.20.83' + ":88";
 
diff --git a/src/assets/lang/en.js b/src/assets/lang/en.js
index 52b2ce0..0efe290 100644
--- a/src/assets/lang/en.js
+++ b/src/assets/lang/en.js
@@ -76,6 +76,10 @@
     projectManage: 'Project information',
     dataStatistics: 'data Statistics',
     layerManage: 'Layer Management',
+
+    resourceManage: 'Resource management',
+    projectionLayerManagement: 'Projection layer management',
+
     layerObj: {
       menuName: 'menu name',
       menuType: 'Menu Type',
diff --git a/src/assets/lang/zh.js b/src/assets/lang/zh.js
index bb5366e..1f7f2f5 100644
--- a/src/assets/lang/zh.js
+++ b/src/assets/lang/zh.js
@@ -77,6 +77,7 @@
     dataStatistics: '鏁版嵁缁熻',
     layerManage: '鍥惧眰绠$悊',
     resourceManage: '璧勬簮绠$悊',
+    projectionLayerManagement: '鎶曞奖鍥惧眰绠$悊',
     layerObj: {
       menuName: '鑿滃崟鍚嶇О',
       menuType: '鑿滃崟绫诲瀷',
diff --git a/src/views/datamanage/bankController.vue b/src/views/datamanage/bankController.vue
index c5ac5f3..7a6da56 100644
--- a/src/views/datamanage/bankController.vue
+++ b/src/views/datamanage/bankController.vue
@@ -50,6 +50,7 @@
         <down-loader v-if="setMenuFlag == 'downLoader'"></down-loader>
 
         <data-statistics v-if="setMenuFlag == 'dataStatistics'"></data-statistics>
+        <projection-layer-management v-if="setMenuFlag == 'projectionLayerManagement'"></projection-layer-management>
       </div>
     </div>
 
@@ -75,6 +76,7 @@
 import uploadmanage from '@/views/datamanage/uploadmanage.vue'; //鍙戝竷绠$悊
 import resourceManagement from '@/views/datamanage/resourceManagement.vue'; //鏁版嵁绠$悊-鍥惧眰绠$悊
 import layerManagement from '@/views/datamanage/layerManagement.vue'; //鏁版嵁绠$悊-鍥惧眰绠$悊
+import projectionLayerManagement from '@/views/datamanage/projectionLayerManagement.vue'; //鏁版嵁绠$悊-鍥惧眰绠$悊
 export default {
   components: {
     customElMenu,
@@ -92,7 +94,8 @@
     dataStatistics,
     uploadmanage,
     resourceManagement,
-    layerManagement
+    layerManagement,
+    projectionLayerManagement
   },
   data() {
     return {
@@ -249,7 +252,6 @@
       var data = e.$attrs.perms;
       this.$store.state.currentPerms = data.perms;
       var index = data.url;
-
       if (index != null) {
         if (index.indexOf('http') != -1) {
           this.$store.commit('getIframe', data.url);
diff --git a/src/views/datamanage/layerManagement.vue b/src/views/datamanage/layerManagement.vue
index fa7fa9e..e68c5a3 100644
--- a/src/views/datamanage/layerManagement.vue
+++ b/src/views/datamanage/layerManagement.vue
@@ -994,11 +994,16 @@
       this.newNode = node;
       var id, lever, orderNum;
       if (res == 1) {
-        //鏂板鍚岀骇
-        id = this.formInline.pid;
-        let pchildNodes = this.$refs.tree.getNode(this.newNode.id).parent.childNodes
-        orderNum = this.getMaxOrderNum(pchildNodes);
-        lever = this.formInline.level;
+        if (this.formInline.pid) {
+          id = this.formInline.pid;
+          let pchildNodes = this.$refs.tree.getNode(this.newNode.id).parent.childNodes
+          orderNum = this.getMaxOrderNum(pchildNodes);
+          lever = this.formInline.level;
+        } else {
+          id = 0;
+          orderNum = 1;
+          lever = 1;
+        }
       } else if (res == 2) {
         //鏂板瀛愮骇
         id = this.formInline.id;
@@ -1078,7 +1083,7 @@
     },
     //鑾峰彇鍥惧眰鍒楄〃
     async getLayerTree() {
-      const data = await layer_selectAll();
+      const data = await layer_selectAll({ flag: 0 });
       if (data.code != 200) {
         return this.$message.error("鍥惧眰鍒楄〃鏌ヨ澶辫触");
       }
diff --git a/src/views/datamanage/projectionLayerManagement.vue b/src/views/datamanage/projectionLayerManagement.vue
new file mode 100644
index 0000000..2d98b24
--- /dev/null
+++ b/src/views/datamanage/projectionLayerManagement.vue
@@ -0,0 +1,1344 @@
+<template>
+  <div class="subpage_Box">
+    <My-bread :list="[
+            `${$t('dataManage.dataManage')}`,
+            `${$t('dataManage.projectionLayerManagement')}`,
+          ]"></My-bread>
+    <el-divider />
+    <div class="mainBox">
+
+      <div
+        class="cataLogContent leftTree subpage_Div"
+        style="border: 1px solid #dcdfe6;"
+      >
+        <div>
+          <el-input
+            v-model="filterText"
+            :placeholder="$t('dataManage.layerObj.prompt1')"
+            suffix-icon="el-icon-search"
+          ></el-input>
+
+          <el-tree
+            ref="tree"
+            :props="defaultProps"
+            node-key="id"
+            accordion
+            :data="treeData"
+            :default-expanded-keys="expandData"
+            @node-click="handleNodeClick"
+            :filter-node-method="filterNode"
+          >
+          </el-tree>
+        </div>
+      </div>
+      <div class="cataLog_rightContent right subpage_Div">
+        <div
+          class="inquire"
+          style="
+              align-items: center;
+              display: flex;
+              justify-content: space-between;
+            "
+        >
+          <el-breadcrumb separator="/">
+            <el-breadcrumb-item :to="{ path: '/' }">{{
+                
+              }}</el-breadcrumb-item>
+          </el-breadcrumb>
+          <div style="margin-right: -5px">
+            <div class="menuTop">
+              <el-form :inline="true">
+                <el-form-item v-show="menuStatus.insert">
+                  <!-- 鍚岀骇鑺傜偣娣诲姞 -->
+                  <el-button
+                    type="success"
+                    size="small"
+                    icon="el-icon-plus"
+                    @click="insertLayerData(1)"
+                  >{{ $t("shuJuGuanLi.butten.NewPeer") }}</el-button>
+                </el-form-item>
+                <!-- 瀛愮骇鑺傜偣娣诲姞 -->
+                <el-form-item v-show="menuStatus.insert  &&  formInline.isLayer == 0">
+                  <el-button
+                    type="success"
+                    size="small"
+                    icon="el-icon-plus"
+                    @click="insertLayerData(2)"
+                  >{{ $t("shuJuGuanLi.butten.AddChild") }}</el-button>
+                </el-form-item>
+                <!-- 鍒犻櫎 -->
+                <el-form-item v-show="menuStatus.delete">
+                  <el-button
+                    icon="el-icon-delete"
+                    type="danger"
+                    size="small"
+                    @click="setDeleteNode( )"
+                  >{{ $t("shuJuGuanLi.butten.Delete") }}</el-button>
+                </el-form-item>
+                <!-- 鍚戜笂绉诲姩 -->
+                <el-form-item v-show="menuStatus.delete">
+                  <el-button
+                    type="info"
+                    icon="el-icon-top"
+                    size="small"
+                    @click="setEditNode(1)"
+                  >{{ $t("shuJuGuanLi.butten.MoveUp") }}</el-button>
+                </el-form-item>
+                <!-- 鍚戜笅绉诲姩 -->
+                <el-form-item v-show="menuStatus.delete">
+                  <el-button
+                    type="info"
+                    icon="el-icon-bottom"
+                    size="small"
+                    @click="setEditNode(2)"
+                  >{{ $t("shuJuGuanLi.butten.MoveDown") }}</el-button>
+                </el-form-item>
+              </el-form>
+            </div>
+          </div>
+
+        </div>
+        <div class="dividing-line"></div>
+        <div style="padding: 10px;">
+          <el-form
+            :model="formInline"
+            class="demo-form-inline"
+            label-width="150px"
+          >
+
+            <!-- 鑿滃崟绫诲瀷 -->
+            <el-form-item :label="$t('dataManage.layerObj.layerType')">
+              <el-select
+                :placeholder="$t('dataManage.layerObj.prompt2')"
+                style="width: 60%;"
+                v-model="formInline.isLayer"
+              >
+                <el-option
+                  label="鍥惧眰缁�"
+                  value='0'
+                ></el-option>
+                <el-option
+                  label="鍥惧眰"
+                  value='1'
+                ></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')"
+                key="0"
+                :class="{serviceActive: !serviceActive }"
+              >{{$t('dataManage.layerObj.isfalse')}}</el-button>
+              <el-button
+                size="small"
+                class="serviceButton"
+                @click="setServiceChange('1')"
+                key="1"
+                :class="{serviceActive: serviceActive}"
+              >{{$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"
+              ></el-input>
+            </el-form-item>
+            <!-- 璧勬簮绫诲埆 -->
+            <el-form-item
+              v-show="formInline.isLayer == 1"
+              :label="$t('dataManage.layerObj.firm')"
+            >
+              <el-select
+                style="width: 60%;"
+                v-model="formInline.category"
+                :disabled="serviceActive"
+                :placeholder="$t('dataManage.layerObj.prompt3')"
+              >
+                <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
+              v-show="formInline.isLayer == 1"
+              :label="$t('dataManage.layerObj.dataType')"
+            >
+              <el-select
+                style="width: 60%;"
+                v-model="formInline.data"
+                :placeholder="$t('dataManage.layerObj.prompt3')"
+                :disabled="serviceActive"
+                @change="setFromDataTypeClick"
+              >
+                <el-option
+                  v-for="item in serveType"
+                  :key="item.value"
+                  :label="item.label"
+                  :value="item.value"
+                >
+                </el-option>
+              </el-select>
+            </el-form-item>
+            <!-- 鏁版嵁绫诲瀷 -->
+            <el-form-item
+              v-show="formInline.isLayer == 1"
+              :label="$t('dataManage.layerObj.serviceType')"
+            >
+              <el-select
+                style="width: 60%;"
+                v-model="formInline.type"
+                :placeholder="$t('dataManage.layerObj.prompt3')"
+                :disabled="serviceActive"
+              >
+                <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
+              v-show="formInline.isLayer == 1"
+              :label="$t('dataManage.layerObj.serviceAddress')"
+            >
+              <el-input
+                :placeholder="$t('dataManage.layerObj.prompt4')"
+                style="width: 60%;"
+                v-model="formInline.serviceUrl"
+                :disabled="serviceActive"
+              ></el-input>
+            </el-form-item>
+            <!-- 鑻辨枃鍚嶇О -->
+            <el-form-item
+              v-show="formInline.isLayer == 1 && formInline.category == 2"
+              :label="$t('dataManage.layerObj.englishName')"
+            >
+              <el-input
+                :disabled="serviceActive"
+                :placeholder="$t('dataManage.layerObj.prompt6')"
+                style="width: 60%;"
+                v-model="formInline.tab"
+              ></el-input>
+            </el-form-item>
+            <!-- 鏄惁鏄剧ず -->
+            <el-form-item
+              v-show="formInline.isLayer == 1"
+              :label="$t('dataManage.layerObj.enableOrNot')"
+            >
+
+              <el-radio
+                v-model="formInline.status"
+                label="0"
+              >{{$t('dataManage.layerObj.isStop')}}</el-radio>
+              <el-radio
+                v-model="formInline.status"
+                label="1"
+              > {{$t('dataManage.layerObj.isEnable')}}</el-radio>
+            </el-form-item>
+            <!-- 鏄惁鏄剧ず -->
+            <el-form-item
+              v-show="formInline.isLayer == 1"
+              :label="$t('dataManage.layerObj.displayOrNot')"
+            >
+              <el-radio
+                v-model="formInline.isShow"
+                label="0"
+              >{{$t('dataManage.layerObj.isfalse')}}</el-radio>
+              <el-radio
+                v-model="formInline.isShow"
+                label="1"
+              > {{$t('dataManage.layerObj.istrue')}}</el-radio>
+            </el-form-item>
+            <!-- 鎻忚堪 -->
+            <el-form-item :label="$t('common.bak')">
+              <el-input
+                style="width: 60%;"
+                v-model="formInline.bak"
+                :placeholder="$t('dataManage.layerObj.prompt7')"
+              ></el-input>
+            </el-form-item>
+            <el-form-item v-show="menuStatus.update">
+              <el-button
+                type="primary"
+                size="small"
+                @click="updateSend()"
+              >{{$t('common.confirm')}}</el-button>
+              <el-button
+                type="info"
+                size="small"
+                @click="updateRest()"
+              >{{$t('common.reset')}}</el-button>
+            </el-form-item>
+          </el-form>
+        </div>
+      </div>
+    </div>
+    <el-dialog
+      :title="$t('common.append')"
+      :visible.sync="dialogVisible"
+      width="50%"
+    >
+      <div style="width: 100%;max-height: 63vh;overflow-y: auto; ">
+        <!-- <el-form
+          :model="insertData"
+          class="demo-form-inline"
+          label-width="150px"
+        > -->
+        <el-form
+          :model="insertData"
+          class="demo-form-inline"
+          label-width="150px"
+        >
+          <!-- 鑿滃崟绫诲瀷 -->
+          <el-form-item :label="$t('dataManage.layerObj.layerType')">
+            <el-select
+              :placeholder="$t('dataManage.layerObj.prompt2')"
+              style="width: 60%;"
+              v-model="insertData.isLayer"
+            >
+              <el-option
+                label="鍥惧眰缁�"
+                value='0'
+              ></el-option>
+              <el-option
+                label="鍥惧眰"
+                value='1'
+              ></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-button
+              size="small"
+              class="serviceButton"
+              @click="setInsertServiceChange('0')"
+              key="0"
+              :class="{serviceActive: !insertServiceActive }"
+            >{{$t('dataManage.layerObj.isfalse')}}</el-button>
+            <el-button
+              size="small"
+              class="serviceButton"
+              @click="setInsertServiceChange('1')"
+              key="1"
+              :class="{serviceActive: insertServiceActive}"
+            >{{$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="insertData.cnName"
+            ></el-input>
+          </el-form-item>
+          <!-- 璧勬簮绫诲埆 -->
+          <el-form-item
+            v-show="insertData.isLayer == 1"
+            :label="$t('dataManage.layerObj.firm')"
+          >
+            <el-select
+              style="width: 60%;"
+              v-model="insertData.category"
+              :disabled="insertServiceActive"
+              :placeholder="$t('dataManage.layerObj.prompt3')"
+            >
+              <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
+            v-show="insertData.isLayer == 1"
+            :label="$t('dataManage.layerObj.dataType')"
+          >
+            <el-select
+              style="width: 60%;"
+              v-model="insertData.data"
+              :placeholder="$t('dataManage.layerObj.prompt3')"
+              :disabled="insertServiceActive"
+              @change="setInsertDataTypeClick"
+            >
+              <el-option
+                v-for="item in serveType"
+                :key="item.value"
+                :label="item.label"
+                :value="item.value"
+              >
+              </el-option>
+            </el-select>
+          </el-form-item>
+          <!-- 鏈嶅姟绫荤被鍨� -->
+          <el-form-item
+            v-show="insertData.isLayer == 1"
+            :label="$t('dataManage.layerObj.serviceType')"
+          >
+            <el-select
+              :disabled="insertServiceActive"
+              style="width: 60%;"
+              v-model="insertData.type"
+              :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
+            v-show="insertData.isLayer == 1"
+            :label="$t('dataManage.layerObj.serviceAddress')"
+          >
+            <el-input
+              :disabled="insertServiceActive"
+              :placeholder="$t('dataManage.layerObj.prompt4')"
+              style="width: 60%;"
+              v-model="insertData.serviceUrl"
+            ></el-input>
+          </el-form-item>
+          <!-- 鑻辨枃鍚嶇О -->
+          <el-form-item
+            v-show="insertData.isLayer == 1 && insertData.category == 2"
+            :label="$t('dataManage.layerObj.englishName')"
+          >
+            <el-input
+              :disabled="insertServiceActive"
+              :placeholder="$t('dataManage.layerObj.prompt6')"
+              style="width: 60%;"
+              v-model="insertData.tab"
+            ></el-input>
+          </el-form-item>
+          <!-- 鏄惁鍚敤 -->
+          <el-form-item
+            v-show="insertData.isLayer == 1"
+            :label="$t('dataManage.layerObj.enableOrNot')"
+          >
+            <el-radio
+              v-model="insertData.status"
+              label="0"
+            >{{$t('dataManage.layerObj.isStop')}}</el-radio>
+            <el-radio
+              v-model="insertData.status"
+              label="1"
+            > {{$t('dataManage.layerObj.isEnable')}}</el-radio>
+          </el-form-item>
+          <!-- 鏄惁鏄剧ず -->
+          <el-form-item
+            v-show="insertData.isLayer == 1"
+            :label="$t('dataManage.layerObj.displayOrNot')"
+          >
+            <el-radio
+              v-model="insertData.isShow"
+              label="0"
+            >{{$t('dataManage.layerObj.isfalse')}}</el-radio>
+            <el-radio
+              v-model="insertData.isShow"
+              label="1"
+            > {{$t('dataManage.layerObj.istrue')}}</el-radio>
+          </el-form-item>
+          <!-- 鎻忚堪 -->
+          <el-form-item :label="$t('common.bak')">
+            <el-input
+              style="width: 60%;"
+              v-model="insertData.bak"
+              :placeholder="$t('dataManage.layerObj.prompt7')"
+            ></el-input>
+          </el-form-item>
+          <el-form-item v-show="menuStatus.update">
+            <el-button
+              type="primary"
+              size="small"
+              @click="submitForm()"
+            >{{$t('common.confirm')}}</el-button>
+            <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>
+</template>
+  <script>
+import MyBread from "../../components/MyBread.vue";
+import {
+  getPerms,
+  layer_selectAll,
+  layer_update,
+  layer_updates,
+  layer_insert,
+  layer_delete,
+  res_selectByPageAndCount,
+} from "../../api/api";
+import $ from 'jquery'
+import { getToken } from '../../utils/auth';
+import { serve_type, data_type, category_type } from './js/layerManage.js'
+import { json } from "body-parser";
+
+export default {
+  name: "catalogueManage",
+  components: {
+    MyBread,
+  },
+  data() {
+    return {
+      filterText: null,
+      formInline: {
+        cnName: null,
+        type: null,
+        serveType: null,
+        url: null,
+        dataType: null,
+        bak: null,
+        isShow: '0',
+        isProject: '0',
+        enName: '',
+        isLayer: null,
+        category: null,
+        status: null,
+        service: '0',
+        serviceUrl: null
+      },
+      serveType: null,
+      dataType: null,
+      menuStatus: {
+        delete: false,
+        insert: false,
+        update: false,
+      },
+      defaultProps: {
+        children: "children",
+        label: "cnName",
+      },
+      treeData: [],
+      expandData: [],
+      checkData: null,
+      backUpData: null,
+      dialogVisible: false,
+      insertData: {
+        type: null,
+        data: null,
+      },
+      currentData: null,
+      newNode: null,
+      newData: [],
+      oriData: [],
+      dialogService: false,
+      listData: {
+        pageIndex: 1,
+        pageSize: 10,
+        count: 0,
+        name: ''
+      },
+      tableData: [],
+      multipleSelection: [],
+      serviceActive: true,
+      insertServiceActive: false,
+      serviceType: null
+    };
+  },
+  watch: {
+    filterText(val) {
+      this.$refs.tree.filter(val);
+    },
+  },
+  methods: {
+    setFromDataTypeClick(res) {
+      this.setInsertDataTypeChange(res)
+      this.formInline.type = this.dataType[0].value
+    },
+    setInsertDataTypeClick(res) {
+      this.setInsertDataTypeChange(res)
+      this.insertData.type = this.dataType[0].value
+    },
+    setInsertDataTypeChange(res) {
+      var filter = this.serveType.filter(rs => {
+        if (rs.value == res) {
+          return rs
+        }
+      })
+      if (filter.length <= 0) return
+      var std = [];
+      var data = filter[0].children;
+      for (var i in data) {
+        for (var j in serve_type) {
+          if (serve_type[j].value == data[i]) {
+            std.push({
+              value: serve_type[j].value,
+              label: serve_type[j].name,
+            })
+          }
+        }
+      }
+      this.dataType = std
+    },
+    setServiceConfirm() {
+      if (this.multipleSelection.length <= 0) {
+        return this.$message("鏈�夋嫨璧勬簮鏁版嵁");
+      }
+      var url, serviceUrl;
+      if (this.multipleSelection.status == 1) {
+        serviceUrl = this.multipleSelection.url;
+        url = this.multipleSelection.url;
+      } else if (this.multipleSelection.status == 2) {
+        var token = getToken()
+        if (this.multipleSelection.proxy && this.multipleSelection.proxy.indexOf('{token}') > -1) {
+          serviceUrl = BASE_URL + this.multipleSelection.proxy.replaceAll('{token}', token);
+        } else {
+          serviceUrl = this.multipleSelection.url
+        }
+
+        url = this.multipleSelection.proxy;
+      }
+      if (this.dialogVisible) {
+        this.setInsertDataTypeChange(this.multipleSelection.data);
+        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.serviceUrl = serviceUrl;
+        this.insertData.url = url;
+        this.insertData.data = this.multipleSelection.data;
+        this.insertData.tab = this.multipleSelection.tab;
+        this.insertData.category = this.multipleSelection.category;
+        this.insertServiceActive = true
+      } 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.serviceUrl = serviceUrl;
+        this.formInline.data = this.multipleSelection.data;
+        this.formInline.tab = this.multipleSelection.tab;
+        this.formInline.category = this.multipleSelection.category;
+        this.formInline.url = url;
+        this.serviceActive = true
+        // this.formInline.status = '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()
+      } else {
+        this.serviceActive = false
+        this.formInline.resid = 0
+      }
+    },
+    setInsertServiceChange(res) {
+      if (res == '1') {
+        this.setServiceRest()
+      } else {
+        this.insertServiceActive = false
+        this.insertData.resid = 0
+      }
+    },
+    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();
+      let pchildNodes = this.$refs.tree.getNode(node.id).parent.childNodes;
+      let currentId = {};
+      for (let i = 0; i < pchildNodes.length; i++) {
+        if (pchildNodes[i].data.id == node.id) {
+          currentId = i;
+        }
+      }
+      switch (res) {
+        case 1: //鍚戜笂绉诲姩
+          if (currentId != 0) {
+            const tempChildrenNodex1 = pchildNodes[currentId - 1];
+            const tempChildrenNodex2 = pchildNodes[currentId];
+            // tempChildrenNodex2.orderNum =
+            //   pchildNodes[currentId - 1].data.orderNum;
+            // tempChildrenNodex1.orderNum = pchildNodes[currentId].data.orderNum;
+            var arr = [];
+            this.oriData.filter((res) => {
+              if (res.id == tempChildrenNodex2.data.id) {
+                // res.orderNum = tempChildrenNodex2.orderNum;
+                arr.push(res);
+              } else if (res.id == tempChildrenNodex1.data.id) {
+                // res.orderNum = tempChildrenNodex1.orderNum;
+                arr.push(res);
+              }
+            });
+
+            const orderNum = arr[1].orderNum
+            arr[1].orderNum = arr[0].orderNum
+            arr[0].orderNum = orderNum
+
+            this.newData = arr;
+            this.sendChange();
+          } else {
+            this.$message({
+              message: "澶勪簬椤剁锛屼笉鑳界户缁笂绉�",
+              type: "warning",
+            });
+          }
+          break;
+        case 2: //鍚戜笅绉诲姩
+          if (currentId < pchildNodes.length - 1) {
+            const tempChildrenNodex1 = pchildNodes[currentId + 1];
+            const tempChildrenNodex2 = pchildNodes[currentId];
+            // tempChildrenNodex2.orderNum =
+            //   pchildNodes[currentId + 1].data.orderNum;
+            // tempChildrenNodex1.orderNum = pchildNodes[currentId].data.orderNum;
+            var arr = [];
+            this.oriData.filter((res) => {
+              if (res.id == tempChildrenNodex2.data.id) {
+                // res.orderNum = tempChildrenNodex2.orderNum;
+                arr.push(res);
+              } else if (res.id == tempChildrenNodex1.data.id) {
+                // res.orderNum = tempChildrenNodex1.orderNum;
+                arr.push(res);
+              }
+            });
+            const orderNum = arr[1].orderNum
+            arr[1].orderNum = arr[0].orderNum
+            arr[0].orderNum = orderNum
+            this.newData = arr;
+            this.sendChange();
+          } else {
+            this.$message({
+              message: "澶勪簬搴曠锛屼笉鑳界户缁笅绉�",
+              type: "warning",
+            });
+          }
+          break;
+      }
+    },
+    async sendChange() {
+      const data = await layer_updates(this.newData)
+      if (data.code != 200) {
+        return this.$message.error("绉诲姩澶辫触");
+      }
+      this.getLayerTree()
+    },
+
+    async setDeleteNode() {
+      const data = await layer_delete({ id: this.formInline.id });
+      if (data.code != 200) {
+        return this.$message.error("鍒犻櫎澶辫触");
+      }
+      this.$message({
+        message: '鍒犻櫎鎴愬姛',
+        type: 'success'
+      });
+      let pchildNodes = this.$refs.tree.getNode(this.formInline.id).parent;
+      if (pchildNodes.data.id) {
+        this.currentData = JSON.stringify(pchildNodes.data)
+      } else {
+        this.currentData = null
+      }
+
+
+      this.getLayerTree();
+    },
+    submitCancel() {
+      this.dialogVisible = false;
+      this.insertStart();
+    },
+    async submitForm() {
+      var val = JSON.parse(JSON.stringify(this.insertData));
+      val.status = parseInt(val.status);
+      var token = getToken();
+      if (val.serviceUrl && val.serviceUrl.indexOf(BASE_URL) > -1) {
+        val.serviceUrl = val.serviceUrl.replaceAll(BASE_URL, '');
+        val.serviceUrl = val.serviceUrl.replaceAll(token, '{token}')
+      }
+      val.isShow = parseInt(val.isShow)
+      val.url = val.serviceUrl
+      val.flag = 1;
+      const data = await layer_insert(val);
+      if (data.code != 200) {
+        return this.$message.error("鏂板澶辫触");
+      }
+      this.$message({
+        message: '鏂板鎴愬姛',
+        type: 'success'
+      });
+      this.getLayerTree();
+      this.dialogVisible = false;
+      this.insertStart();
+    },
+    insertLayerData(res) {
+      this.insertStart();
+      var node = this.$refs.tree.getCurrentNode();
+      this.newNode = node;
+      var id, lever, orderNum;
+      if (res == 1) {
+        //鏂板鍚岀骇
+        if (this.formInline.pid) {
+          id = this.formInline.pid;
+          let pchildNodes = this.$refs.tree.getNode(this.newNode.id).parent.childNodes
+          orderNum = this.getMaxOrderNum(pchildNodes);
+          lever = this.formInline.level;
+        } else {
+          id = 0;
+          orderNum = 1;
+          lever = 1;
+        }
+
+      } else if (res == 2) {
+        //鏂板瀛愮骇
+        id = this.formInline.id;
+        let pchildNodes = this.$refs.tree.getNode(this.newNode.id).childNodes
+        orderNum = this.getMaxOrderNum(pchildNodes);
+        lever = this.formInline.level + 1;
+      }
+
+      this.insertData.pid = id;
+      this.insertData.level = lever;
+      this.insertData.orderNum = orderNum;
+
+      this.dialogVisible = true;
+    },
+    getMaxOrderNum(res) {
+      var val = 1;
+      for (var i in res) {
+        if (res[i].data.orderNum > val) {
+          val = res[i].data.orderNum;
+        }
+      }
+      val = val + 1;
+      return val;
+    },
+    insertStart() {
+      var data = this.serveType[0].value;
+      this.setInsertDataTypeChange(this.serveType[0].value)
+      var type = this.dataType[0].value
+      var category = this.serviceType[0].value
+      this.insertData = {
+        cnName: null,
+        type: null,
+        serveType: null,
+        url: null,
+        dataType: null,
+        bak: null,
+        isShow: '0',
+        isProject: '0',
+        enName: '',
+        isLayer: null,
+        category: category,
+        status: null,
+        service: '0',
+        status: '1',
+        type: type,
+        data: data,
+      }
+    },
+    //淇敼鏁版嵁
+    async updateSend() {
+      var val = JSON.parse(JSON.stringify(this.formInline));
+      var token = getToken();
+      if (val.serviceUrl && val.serviceUrl.indexOf(BASE_URL) > -1) {
+        val.serviceUrl = val.serviceUrl.replaceAll(BASE_URL, '');
+        val.serviceUrl = val.serviceUrl.replaceAll(token, '{token}')
+      }
+      val.isShow = parseInt(val.isShow)
+      val.url = val.serviceUrl
+      val.flag = 1;
+      const data = await layer_update(val);
+      this.currentData = JSON.stringify(this.formInline)
+      if (data.code != 200) {
+        return this.$message.error("淇敼澶辫触");
+      }
+      this.$message({
+        message: '淇敼鎴愬姛',
+        type: 'success'
+      });
+      this.getLayerTree();
+    },
+    //淇敼閲嶇疆
+    updateRest() {
+      var res = JSON.parse(this.backUpData);
+      this.formInline = res;
+      this.formInline.isLayer = res.isLayer.toString();
+
+      this.formInline.status = res.status.toString();
+      // this.formInline.isProject = res.isProject.toString();
+    },
+    //鑾峰彇鍥惧眰鍒楄〃
+    async getLayerTree() {
+      const data = await layer_selectAll({ flag: 1 });
+      if (data.code != 200) {
+        return this.$message.error("鍥惧眰鍒楄〃鏌ヨ澶辫触");
+      }
+      this.oriData = data.result;
+      this.newData = data.result;
+      var val = this.setTreeData(data.result);
+      val.sort(function (a, b) {
+        return a.orderNum - b.orderNum
+      })
+
+      this.treeData = val;
+      var cdata;
+      if (this.currentData) {
+        cdata = JSON.parse(this.currentData);
+      } else {
+        cdata = this.treeData[0]
+      }
+      this.$nextTick(() => {
+        this.expandData = [cdata.id];
+        this.$refs.tree.setCurrentKey(cdata.id);
+        this.layerFormInline(cdata)
+      });
+    },
+    layerFormInline(res) {
+
+      var val = JSON.parse(JSON.stringify(res))
+
+      var data = this.$refs.tree.getNode(val.id).data;
+      var result = JSON.parse(JSON.stringify(data))
+      this.backUpData = JSON.stringify(result)
+      this.currentData = JSON.stringify(result)
+      this.formInline = result;
+      this.formInline.isLayer = res.isLayer.toString();
+      this.formInline.status = result.status.toString();
+
+      this.formInline.isShow = res.isShow.toString();
+
+
+      if (res.resid && res.resid > 0) {
+        this.serviceActive = true
+      } else {
+        this.serviceActive = false
+      }
+
+      var url;
+      if (!this.serviceActive) {
+        url = result.url;
+      } else if (this.serviceActive) {
+        var token = getToken()
+        if (result.url.indexOf('{token}') > -1) {
+          url = BASE_URL + result.url.replaceAll('{token}', token);
+        } else {
+          url = result.url;
+        }
+
+      }
+      this.formInline.serviceUrl = url;
+      this.setInsertDataTypeChange(this.formInline.data)
+      // this.formInline.isProject = result.isProject.toString();
+    },
+    //鍥惧眰鍒楄〃鐐瑰嚮浜嬩欢
+    handleNodeClick(data, node) {
+      this.layerFormInline(data)
+    },
+    setTreeData(source) {
+      let cloneData = JSON.parse(JSON.stringify(source)); // 瀵规簮鏁版嵁娣卞害鍏嬮殕
+      return cloneData.filter((father) => {
+        // 寰幆鎵�鏈夐」
+        let branchArr = cloneData.filter((child) => father.id == child.pid);
+        if (branchArr.length > 0) {
+
+          branchArr.sort(function (a, b) {
+
+            return a.orderNum - b.orderNum
+          })
+        }
+        branchArr.length > 0 ? (father.children = branchArr) : ""; // 缁欑埗绾ф坊鍔犱竴涓猚hildren灞炴�э紝骞惰祴鍊�
+        // 灞炰簬鍚屼竴瀵硅薄闂锛屼緥濡傦細浠� a=b銆乧=1 锛岀劧鍚庡啀浠� b.c=c 锛� 閭d箞 a.c=b.c=c=1 锛涘悓鐞嗭紝鍚庣画浠� c.d=2 ,閭d箞 a.c.d 涔熸槸=2锛�
+        // 鐢辨寰幆澶氭鍚庯紝灏辫兘褰㈡垚鐩稿簲鐨勬爲褰㈡暟鎹粨鏋�
+        return father.pid == 0; // 杩斿洖涓�绾ц彍鍗�
+      });
+    },
+    //鍥惧眰妯$硦鏌ヨ
+    filterNode(value, data) {
+      if (!value) return true;
+      return data.cnName.indexOf(value) !== -1;
+    },
+    //涓嬫媺鑿滃崟鍒濆鍖�
+    optionsStart() {
+      var std = [];
+      var ste = [];
+      var str = [];
+      for (var i in serve_type) {
+        ste.push({
+          value: serve_type[i].value,
+          label: serve_type[i].name,
+        })
+      }
+      this.serveType = std;
+      for (var i in data_type) {
+        std.push({
+          value: data_type[i].value,
+          label: data_type[i].name,
+          children: data_type[i].children
+        })
+      }
+      this.dataType = ste;
+
+      for (var i in category_type) {
+        str.push({
+          value: category_type[i].value,
+          label: category_type[i].name,
+        })
+      }
+      this.serviceType = str;
+
+
+    },
+    //鏁版嵁鍒濆鍖�
+    formInlineStart() {
+      this.formInline = {
+        cnName: null,
+        type: null,
+        serveType: null,
+        url: null,
+        dataType: null,
+        bak: null,
+        isShow: '0',
+        isProject: '0',
+        enName: '',
+        isLayer: null,
+        category: null,
+        serviceUrl: null
+      }
+    },
+    //鑾峰彇鏉冮檺
+    getPerms() {
+      var val = this.$store.state.currentPerms;
+      var permsEntity = this.$store.state.permsEntity;
+
+      if (!permsEntity || !permsEntity.length) {
+        getPerms().then((res) => {
+          if (res.code == 200) {
+            permsEntity = res.result;
+          }
+        });
+      }
+      for (var i = 0; i < permsEntity.length; i++) {
+        if (val === permsEntity[i].perms) {
+          this.showPermsMenu(permsEntity[i]);
+        }
+      }
+
+    },
+    showPermsMenu(res) {
+      switch (res.tag) {
+        case "/delete":
+          this.menuStatus.delete = true;
+          break;
+        case "/insert":
+          this.menuStatus.insert = true;
+          break;
+        case "/update":
+          this.menuStatus.update = true;
+          break;
+      }
+    },
+  },
+  mounted() {
+    this.optionsStart();
+    this.formInlineStart();
+    this.getPerms();
+    this.getLayerTree();
+  },
+};
+  </script>
+  
+  <style lang="less" scoped>
+.subpage_Box {
+  //height: 96%;
+  width: 98%;
+  padding: 1%;
+  border-radius: 10px;
+}
+
+.mainBox {
+  padding-top: 10px;
+  width: 100%;
+  height: calc(100% - 75px);
+  display: flex;
+  justify-content: space-around;
+  .leftTree {
+    width: calc(28% - 0px);
+    height: 100%;
+    padding: 10px;
+    border-radius: 5px;
+    box-sizing: border-box;
+    overflow-y: auto;
+  }
+  .right {
+    width: 68%;
+    height: 100%;
+    border-radius: 5px;
+    padding: 10px;
+    box-sizing: border-box;
+    border: 1px solid #dcdfe6;
+    .menuTop {
+      /deep/ .el-form-item {
+        margin: 5px;
+      }
+    }
+  }
+}
+.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%);
+}
+/deep/.el-radio {
+  color: white;
+}
+</style>
+  <style>
+.el-select-dropdown {
+  background: #303030 !important;
+
+  border: 1px solid gray;
+}
+
+.el-select-dropdown__item {
+  background-color: transparent !important;
+  color: #fff;
+}
+
+.el-select-dropdown__item.hover,
+.el-select-dropdown__item:hover {
+  color: #ffff !important;
+  background: rgba(7, 8, 14, 0.3) !important;
+}
+
+.el-popper .popper__arrow,
+.el-popper .popper__arrow::after {
+  display: none !important;
+}
+</style>
\ No newline at end of file

--
Gitblit v1.9.3