Browse Source

低价预测前端

liutao 1 month ago
parent
commit
ae5d54c8b7

+ 2 - 0
CYZZ-master/cyzz/web_cyzz/package.json

@@ -31,6 +31,8 @@
     "js-md5": "^0.8.3",
     "leaflet": "^1.9.4",
     "leaflet.markercluster": "^1.5.3",
+    "proj4": "^2.7.2",
+    "proj4leaflet": "^1.0.2",
     "lodash": "^4.17.21",
     "pinia": "^2.1.3",
     "pinia-plugin-persist": "^1.0.0",

+ 33 - 17
CYZZ-master/cyzz/web_cyzz/public/config.js

@@ -12,7 +12,7 @@
       secretKey: 'yydjydhfyhfggd'
     },
 
-    server: 'http://localhost:7501',
+    server: 'http://localhost:8517',
     // server_hgzt: 'http://121.40.148.47:8530/ilpes_st',
     server_hgzt: 'http://121.40.148.47:8530/ilpes_st',
     znxz: '/nllm/#/industria-land-detail',
@@ -80,32 +80,48 @@
     syGeoserverUrl: 'nrllm:jzdj_sy',
     // landGeoserverUrl: 'nrllm:land_public_sale_n',
     landGeoserverUrl: 'cyzz:gdxminfo_all',
+    mapOptions: {
+      zoom: 8,
+      center: [29.177637, 119.033452]
+    },
     layerTreeConfig: [
       {
         name: '现状图层', layers: [
           {
-            name: "影像",
-            id: "image",
+            name: "浙江影像",
+            id: "zjyx",
             checked: true,
-            type: 'tdt',
+            type: "wmts",
+            url: "https://kjzl.zrzyt.zj.gov.cn/zdzy/gtkj/zjgt48/34048bffdd0d4d148ca4a40da7eade21/services/wmts/imgmap/default/oss",
+            layername: "imgmap",
+            zindex: 1
           },
           {
-            name: "地形图",
-            id: "dxt",
-            checked: false,
-            type: 'tdt',
+            name: "浙江注记",
+            id: "zjzj",
+            checked: true,
+            type: "wmts",
+            url: "https://zdzy.zrzyt.zj.gov.cn/gtkj/zjgt49/2003392c13044d3ab3097b0a4328ecf2/services/wmts/imgmap_lab/default/oss",
+            layername: "imgmap_lab",
+            zindex: 1
+          },
+          {
+            name: "市级行政区",
+            id: "sjxzq",
+            checked: true,
+            type: 'geoserver',
+            url: 'https://kjzl.zrzyt.zj.gov.cn/zdzy/geoserver/test/wms',
+            layername: 'sde:sjxzq',
+            zindex: 2
           },
           {
             name: "土地供应",
             id: "TDGY",
-            checked: true,
-            // type: 'dynamic',
-            // url: '/arcserver-host/arcgis/rest/services/NRLLM/LAND_PUBLIC_SALE/MapServer'
-            type: 'wms',
-            // url: '/geoserver-host/geoserver/nrllm/gwc/service/wmts',
-            url: '/geoserver-host/geoserver/cyzz/gwc/service/wmts',
-            layername: 'cyzz:gdxminfo_all',
-            cql: "xzqdm like '%33%'"
+            checked: false,
+            type: 'geoserver',
+            url: 'https://kjzl.zrzyt.zj.gov.cn/zdzy/geoserver/wms',
+            layername: 'sde:gdxminfo_all',
+            zindex: 3
           },
           {
             name: "基准地价",
@@ -114,7 +130,7 @@
             type: 'wms',
             url: '/geoserver-host/geoserver/nrllm/wms?service=WMS',
             layername: 'nrllm:land_base_price_region',
-            cql: "1=1"
+            zindex: 4
           }
         ]
       },

+ 1 - 1
CYZZ-master/cyzz/web_cyzz/public/config_djyc.js

@@ -12,7 +12,7 @@
       secretKey: 'yydjydhfyhfggd'
     },
 
-    server: 'http://localhost:7501',
+    server: 'http://localhost:8517',
     // server_hgzt: 'http://121.40.148.47:8530/ilpes_st',
     server_hgzt: 'http://121.40.148.47:8530/ilpes_st',
     znxz: '/nllm/#/industria-land-detail',

+ 2 - 28
CYZZ-master/cyzz/web_cyzz/src/router/routes-all.js

@@ -1,33 +1,7 @@
 export default [
   {
-    path: '/',
-    // name: 'home',
-    // component: HomeView,
-    redirect: '/home'
-  },
-  {
-    path: '/home',
-    name: 'home',
-    component: () => import('@/views/home/Home.vue')
-  },
-
-  {
-    path: '/land-use',
-    name: 'land-use',
-    component: () => import('@/views/land-use/Index.vue')
-  },
-  {
-    path: '/land-use-page',
+    path: '/djyc',
     name: 'land-use-page',
-    component: () => import('@/views/land-use/Page.vue'),
-    redirect: { name: 'policy-simulation' },
-    children: [
-      {
-        path: 'policy-coordination',
-        name: 'policy-coordination',
-        meta: { title: '政策智配' },
-        component: () => import('@/views/land-use/PolicyCoordination.vue'),
-      }
-    ]
+    component: () => import('@/views/land-use/PolicyCoordination.vue'),
   },
 ]

+ 10 - 15
CYZZ-master/cyzz/web_cyzz/src/utils/leaflet.js

@@ -9,7 +9,7 @@ export function getWmtsLayer(layer) {
       version: "1.0.0",
       layer: "",
       style: "",
-      tilematrixset: "",
+      tilematrixset: "default028mm",
       format: "image/jpeg",
     },
 
@@ -30,7 +30,6 @@ export function getWmtsLayer(layer) {
       }
       for (var i in lOptions) {
         // all keys that are in defaultWmtsParams options go to WMTS params
-        // eslint-disable-next-line no-prototype-builtins
         if (wmtsParams.hasOwnProperty(i) && i != "matrixIds") {
           wmtsParams[i] = lOptions[i];
         }
@@ -69,7 +68,7 @@ export function getWmtsLayer(layer) {
         url +
         L.Util.getParamString(this.wmtsParams, url) +
         "&tilematrix=" +
-        tilematrix +
+        ident +
         "&tilerow=" +
         tilerow +
         "&tilecol=" +
@@ -94,7 +93,7 @@ export function getWmtsLayer(layer) {
       for (var i = 0; i < 22; i++) {
         matrixIds3857[i] = {
           identifier: "" + i,
-          topLeftCorner: new L.LatLng(20037508.3428, -20037508.3428),
+          topLeftCorner: new L.LatLng(90, -180),
         };
       }
       return matrixIds3857;
@@ -113,7 +112,7 @@ export function getWmtsLayer(layer) {
     layer.url,
     {
       layer: layer.layername,
-      tilematrixset: "EPSG:3857",
+      tilematrixset: "default028mm",
       Format: "image/png",
       TileMatrix: "EPSG:3857:15",
     }
@@ -121,14 +120,10 @@ export function getWmtsLayer(layer) {
   return ign
 }
 
-export function getWmsLayer(layer) {
-  var wmsLayer = L.tileLayer.wms(layer.url, {
-    layers: layer.layername,// 要加载的图层名
-    format: 'image/png',//返回的数据格式
-    transparent: true,
-    crs: L.CRS.CustomEPSG4490,
-    layerID: Math.random(),
-    CQL_FILTER: layer.cql
-  });
-  return wmsLayer;
+export function setToken(token) {
+  return Cookies.set(TokenKey, token)
+}
+
+export function removeToken() {
+  return Cookies.remove(TokenKey)
 }

+ 1 - 1
CYZZ-master/cyzz/web_cyzz/src/utils/request.js

@@ -3,7 +3,7 @@ import * as Storage from './storage';
 import { notification } from 'ant-design-vue';
 
 // const getBaseUrl = () => window.AppGlobalConfig.server;
-const getBaseUrl = () => '/server';
+const getBaseUrl = () => '/djycserver';
 
 // 请求超时时间 60s
 axios.defaults.timeout = 60 * 1000;

+ 0 - 127
CYZZ-master/cyzz/web_cyzz/src/views/home/Home.vue

@@ -1,127 +0,0 @@
-<template>
-  <div class="home-container">
-    <my-top></my-top>
-    <div class="tab-panel">
-      <div class="item" v-for="(item, index) in form.tabs" :key="index">
-        <div class="enter" @click="goDetail(item)">
-          <div class="name">点击进入<img src="/images/home/enter.png" /></div>
-        </div>
-        <div class="title-panel">
-          <div class="title">{{ item.name }}</div>
-        </div>
-      </div>
-    </div>
-  </div>
-</template>
-<script setup >
-import MyTop from '@/layout/top/MyTop.vue';
-const router = useRouter();
-const form = ref({
-  tabs: [
-    { name: '智慧监管', path: 'intel-super' },
-    { name: '智慧评价', path: 'intel-evaluation' },
-    { name: '智慧用地', path: 'land-use' }
-  ]
-});
-const goDetail = (item) => {
-  const href = router.resolve({
-    path: item.path
-  }).href;
-  window.open(href, '_blank');
-};
-</script>
-
-<style lang="scss" scoped>
-.home-container {
-  width: 100%;
-  height: 100%;
-  background: url('/images/home/main-bg.png') no-repeat;
-  background-size: 100% 100%;
-  .tab-panel {
-    margin-top: 135px;
-    display: flex;
-    justify-content: center;
-    height: calc(100% - 213px);
-    width: 100%;
-    .item {
-      width: 32%;
-      height: 80%;
-      position: relative;
-      background: url('/images/home/hg-bg.png') no-repeat;
-      background-size: 100% 100%;
-      &:nth-child(1) {
-        background: url('/images/home/hg-bg.png') no-repeat;
-        background-size: 100% 100%;
-      }
-      &:nth-child(2) {
-        margin-left: -116px;
-        background: url('/images/home/hp-bg.png') no-repeat;
-        background-size: 100% 100%;
-      }
-      &:nth-child(3) {
-        margin-left: -116px;
-        background: url('/images/home/hy-bg.png') no-repeat;
-        background-size: 100% 100%;
-      }
-      .title-panel {
-        position: absolute;
-        bottom: 181px;
-        left: 0px;
-        width: 85%;
-        margin: 0 auto;
-        display: flex;
-        justify-content: center;
-        .title {
-          font-family: FZRuiZhengHeiS-B-GB;
-          font-weight: 400;
-          font-size: 40px;
-          color: #ffffff;
-          line-height: 69px;
-          background-image: linear-gradient(
-            90deg,
-            #009fff 0%,
-            #009fff 37%,
-            #7093ff 71%,
-            #7093ff 100%
-          ); // 背景线性渐变
-          color: #ffffff; // 兜底颜色,防止文字裁剪不生效
-          background-clip: text;
-          -webkit-background-clip: text; // 背景被裁减为文字的前景色
-          -webkit-text-fill-color: transparent; // 文字填充为透明,优先级比color高。
-        }
-      }
-      .enter {
-        position: absolute;
-        bottom: 101px;
-        width: 188px;
-        height: 51px;
-        cursor: pointer;
-        left: 26%;
-        transform: skew(-20deg);
-        transform-origin: top right;
-        margin-top: 20px;
-        display: flex;
-        align-items: center;
-        justify-content: center;
-        background: #ffffff;
-        box-shadow: 0px 3px 4px 0px rgba(10, 85, 254, 0.1);
-        .name {
-          font-family: PingFang SC;
-          font-weight: bold;
-          font-size: 20px;
-          transform: skew(20deg);
-          color: #333333;
-        }
-        img {
-          margin-left: 7px;
-          width: 20px;
-          height: 20px;
-        }
-        &:hover {
-          border: 1px solid #6e94ff;
-        }
-      }
-    }
-  }
-}
-</style>

+ 0 - 143
CYZZ-master/cyzz/web_cyzz/src/views/land-use/Index.vue

@@ -1,143 +0,0 @@
-<template>
-  <div class="index-container">
-    <my-top></my-top>
-    <div class="content-panel">
-      <div class="content">
-        <div class="item" v-for="(item, index) in form.tabs" :key="index" @click="goDetail(item)">
-          <div class="name">{{ item.name }}</div>
-          <div class="pic-panel">
-            <div class="name-panel">
-              <div class="name">{{ item.title }}</div>
-              <div class="label">{{ item.desc }}</div>
-            </div>
-          </div>
-        </div>
-      </div>
-    </div>
-  </div>
-</template>
-<script setup>
-import MyTop from '@/layout/top/MyTop.vue';
-const router = useRouter();
-const form = ref({
-  tabs: [
-    {
-      name: '空间优化',
-      title: 'AI赋能',
-      desc: '产业空间布局优化',
-      path: '/land-use-page/policy-simulation'
-    },
-    {
-      name: '地价预测',
-      title: 'AI助力',
-      desc: '企业政策精准匹配',
-      path: '/land-use-page/policy-coordination'
-    },
-    {
-      name: '要素智配',
-      title: 'AI强化',
-      desc: '资源要素智能调配',
-      path: '/land-use-page/intelligent-location'
-    }
-  ]
-});
-const goDetail = (item) => {
-  const href = router.resolve({
-    path: item.path
-  }).href;
-  window.open(href, '_blank');
-  // router.push({ path: item.path });
-};
-</script>
-
-<style lang="scss" scoped>
-.index-container {
-  width: 100%;
-  height: 100%;
-  background: url('/images/home/main-bg.png') no-repeat;
-  background-size: 100% 100%;
-  .content-panel {
-    display: flex;
-    justify-content: center;
-    height: calc(100% - 167px);
-    margin-top: 89px;
-    .content {
-      width: 1252px;
-      height: 685px;
-      position: relative;
-      background: url('/images/zhyd/logo.png') no-repeat;
-      background-size: 100% 100%;
-      .item {
-        position: absolute;
-        cursor: pointer;
-        left: 0;
-        bottom: 152px;
-        .name {
-          height: 27px;
-          font-family: PangMenZhengDao;
-          font-weight: 400;
-          font-size: 34px;
-          margin-bottom: 18px;
-          line-height: 27px;
-          color: #333333;
-        }
-        .pic-panel {
-          width: 220px;
-          height: 260px;
-          background: url('/images/zhyd/kjyh.png') no-repeat;
-          background-size: 100% 100%;
-          position: relative;
-          .name-panel {
-            position: absolute;
-            bottom: 43px;
-            margin: 0 auto;
-            height: 63px;
-            width: 100%;
-            display: flex;
-            flex-direction: column;
-            align-items: center;
-            font-family: PangMenZhengDao;
-            font-weight: 400;
-            font-size: 30px;
-            color: #ffffff;
-            line-height: 48px;
-            .name {
-              font-family: PangMenZhengDao;
-              font-weight: 400;
-              font-size: 30px;
-              color: #ffffff;
-              margin-bottom: 0px;
-              letter-spacing: 2px;
-            }
-            .label {
-              font-family: PangMenZhengDao;
-              font-weight: 400;
-              font-size: 20px;
-              color: #ffffff;
-              letter-spacing: 2px;
-            }
-          }
-        }
-        &:nth-child(2) {
-          bottom: -64px;
-          left: unset;
-          left: 42%;
-          .pic-panel {
-            background: url('/images/zhyd/zcjs.png') no-repeat;
-            background-size: 100% 100%;
-          }
-        }
-        &:nth-child(3) {
-          bottom: 72px;
-          right: 0px;
-          left: unset;
-          .pic-panel {
-            background: url('/images/zhyd/yspz.png') no-repeat;
-            background-size: 100% 100%;
-          }
-        }
-      }
-    }
-  }
-}
-</style>

+ 42 - 88
CYZZ-master/cyzz/web_cyzz/src/views/land-use/PolicyCoordination.vue

@@ -114,7 +114,7 @@
       </div> -->
       <a-upload
         class="item"
-        action="/server/api/shape/toJson"
+        action="/djycserver/api/shape/toJson"
         :show-upload-list="false"
         :on-success="handleSuccess"
         accept=".shp"
@@ -600,7 +600,7 @@ import 'leaflet.markercluster/dist/MarkerCluster.Default.css';
 import 'leaflet.markercluster';
 import GetApi from '@/api/get';
 import axios from 'axios';
-import { getWmtsLayer, getWmsLayer } from '@/utils/leaflet';
+import { getWmtsLayer } from '@/utils/leaflet';
 import { PerfectScrollbar } from 'vue3-perfect-scrollbar';
 import DjycApi from '@/api/djyc';
 import AnalysisApi from '@/api/analysis';
@@ -614,7 +614,7 @@ import '@geoman-io/leaflet-geoman-free/dist/leaflet-geoman.css';
 import * as turf from '@turf/turf';
 import SettingPage from './SettingPage.vue';
 import wkt from 'terraformer-wkt-parser';
-
+import Proj from "proj4leaflet";
 const showLayerControl = ref(false);
 const showLegend = ref(false);
 const pageRef = ref();
@@ -1114,72 +1114,34 @@ const handleSuccess = (response) => {
 };
 const initMap = () => {
   layers.value = window.AppGlobalConfig.layerTreeConfig;
-  layers.value.forEach((item, index) => {
-    if (index == 0) {
-      item.layers.forEach((citem, cindex) => {
-        if (cindex == 0) {
-          citem.checked = true;
-        } else {
-          citem.checked = false;
-        }
-      });
-    }
-  });
-  L.CRS.CustomEPSG4490 = L.extend({}, L.CRS.Earth, {
-    code: 'EPSG:4490',
-    projection: L.Projection.LonLat,
-    transformation: new L.Transformation(1 / 180, 1, -1 / 180, 0.5),
-    scale: function (zoom) {
-      return 256 * Math.pow(2, zoom - 1);
-    }
+  let CRS_4490 = new Proj.CRS('EPSG:4490', '+proj=longlat +ellps=GRS80 +no_defs', {
+    resolutions: [
+      1.4062500262315807, 0.7031249999891485, 0.35156249999999994, 0.17578124999999997,
+      0.08789062500000012, 0.04394531250000006, 0.021972656250000007, 0.01098632812500002,
+      0.00549316406250001, 0.0027465820312500017, 0.0013732910156250009, 6.866455078124991e-4,
+      3.4332275390624957e-4, 1.7166137695312503e-4, 8.583068847656251e-5, 4.291534423828141e-5,
+      2.1457672119140645e-5, 1.0728836059570307e-5, 5.364418029785169e-6, 2.6822090642902305e-6,
+      1.3411045333348457e-6
+    ],
+    origin: [-180, 90]
   });
 
-  let myCenter = new L.LatLng(form.value.latitude, form.value.longitude); // 设置地图中心
   form.value.map = L.map(form.value.id, {
-    center: myCenter,
-    zoom: form.value.zoomLevel
+    zoom: window.AppGlobalConfig.mapOptions['zoom'],
+    center: window.AppGlobalConfig.mapOptions['center'],
+    crs: CRS_4490
   });
 
-  var tk = window.AppGlobalConfig.tk;
-  // var tk = '44afc2274fd58544196a7baa2c56b1ab';
-  // 添加天地图底图
-  //底图
-  imageryLayer = L.tileLayer(
-    'http://t{s}.tianditu.gov.cn/img_w/wmts?tk=' +
-      tk +
-      '&SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=img&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles&TileMatrix={z}&TileCol={x}&TileRow={y}',
-    {
-      subdomains: [0, 1, 2, 3, 4, 5, 6, 7],
-      zIndex: 1
-    }
-  );
-  vectorLayer = L.tileLayer(
-    'https://t{s}.tianditu.gov.cn/vec_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=vec&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles&TILECOL={x}&TILEROW={y}&TILEMATRIX={z}&tk=' +
-      tk,
-    {
-      subdomains: [0, 1, 2, 3, 4, 5, 6, 7],
-      transparent: true,
-      zIndex: 2
-    }
-  );
-
-  //注记
-  const cia = L.tileLayer(
-    'http://t{s}.tianditu.gov.cn/cia_w/wmts?tk=' +
-      tk +
-      '&SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=cia&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles&TileMatrix={z}&TileCol={x}&TileRow={y}',
-    {
-      subdomains: [0, 1, 2, 3, 4, 5, 6, 7],
-      transparent: true,
-      zIndex: 3
-    }
-  );
-  form.value.map.addLayer(cia);
   openGeojsonLayers = L.featureGroup([]).addTo(form.value.map);
   geojsonLayers = L.featureGroup([]).addTo(form.value.map);
   bufferLayers = L.featureGroup([]).addTo(form.value.map);
   markersLayers = L.markerClusterGroup();
-  switchMapLayer(layers.value[0].layers[0]);
+  //默认加载所有选中图层
+  layers.value.forEach((layerGroup) => {
+    layerGroup.layers.forEach((oneLayer) => {
+      switchMapLayer(oneLayer);
+    });
+  });
 };
 
 const mapClick1 = (e) => {
@@ -1446,38 +1408,30 @@ const toggleCustom = () => {
 const switchMapLayer = (item) => {
   if (item.checked) {
     if (item.layer === undefined || item.layer == null) {
-      if (item.type == 'wmts') {
+      if (item.type == 'dynamic') {
+        item.layer = dynamicMapLayer({
+          layers: [0],
+          url: item.url,
+          f: 'image'
+        });
+      } else if (item.type == 'geoserver') {
+        item.layer = L.tileLayer.wms(item.url, {
+          // 链接要改对应的
+          layers: item.layername,
+          format: 'image/png',
+          layerID: Math.random(),
+          transparent: true
+        });
+        item.layer.setZIndex(item.zindex);
+      } else if (item.type == 'wmts') {
         item.layer = getWmtsLayer(item);
-        item.layer.setZIndex(100);
-        form.value.map.addLayer(item.layer);
-      } else if (item.type == 'wms') {
-        item.layer = getWmsLayer(item);
-        form.value.lastLayerId = item.id;
-        item.layer.setZIndex(100);
-        form.value.map.addLayer(item.layer);
-      } else if (item.type == 'tdt') {
-        if (item.id == 'image') {
-          item.layer = imageryLayer;
-          form.value.map.addLayer(item.layer);
-        }
-        if (item.id == 'dxt') {
-          item.layer = vectorLayer;
-          form.value.map.addLayer(item.layer);
-        }
+        item.layer.setZIndex(item.zindex);
       }
-    } else {
-      form.value.lastLayerId = item.id;
-      form.value.map.addLayer(item.layer);
-    }
-    if (item.name == '基准地价') {
-      showLegend.value = true;
-    } else {
-      showLegend.value = false;
     }
+    form.value.map.addLayer(item.layer);
   } else {
     if (item.layer != undefined || item.layer != null) {
       form.value.map.removeLayer(item.layer);
-      showLegend.value = false;
     }
   }
 };
@@ -1582,7 +1536,7 @@ const submit = () => {
   var c = country == '全部' ? '' : country;
   var city_name = city + c;
   GetApi.postData(
-    `/lianqiai/predict_land_price?city_name=${city_name}&year=${year}&land_type=${target_column}&policy_factors=${zc}`
+    `/zjugisai/predict_land_price?city_name=${city_name}&year=${year}&land_type=${target_column}&policy_factors=${zc}`
   )
     .then((data) => {
       // var data = {
@@ -3384,7 +3338,7 @@ const ycmxConditionChange = () => {
     kljFlag.value = false;
     // queryJzdjFeature();
     //geoserver
-    basePrice.value='';
+    basePrice.value = '';
     queryJzdjGeoServerFeature();
   }
 };

+ 7 - 6
CYZZ-master/cyzz/web_cyzz/vite.config.js

@@ -9,6 +9,7 @@ import AutoImport from 'unplugin-auto-import/vite'
 
 // https://vitejs.dev/config/
 export default defineConfig({
+  base: './',
   plugins: [
     vue(),
     SvgLoader(),
@@ -39,15 +40,15 @@ export default defineConfig({
   server: {
     cors: true,
     proxy: {
-      '/server': {
-        target: 'http://localhost:7501',
+      '/djycserver': {
+        target: 'http://localhost:8517',
         changeOrigin: true,
-        rewrite: (path) => path.replace(/^\/server/, '')
+        rewrite: (path) => path.replace(/^\/djycserver/, '')
       },
-      '/lianqiai': {
-        target: 'http://localhost:8000',
+      '/zjugisai': {
+        target: 'http://localhost:8516',
         changeOrigin: true,
-        rewrite: (path) => path.replace(/^\/lianqiai/, '')
+        rewrite: (path) => path.replace(/^\/zjugisai/, '')
       },
       '/lianqiai2': {
         target: 'http://121.40.148.47:8530',