Pārlūkot izejas kodu

修改提示语和增加赵巷数据

mork 2 mēneši atpakaļ
vecāks
revīzija
25de7f6bee

+ 107 - 3
package-lock.json

@@ -1,11 +1,11 @@
 {
-  "name": "skyscenery_vue_demo",
+  "name": "kdyjs_ui",
   "version": "0.1.0",
   "lockfileVersion": 3,
   "requires": true,
   "packages": {
     "": {
-      "name": "skyscenery_vue_demo",
+      "name": "kdyjs_ui",
       "version": "0.1.0",
       "dependencies": {
         "@element-plus/icons-vue": "^2.0.10",
@@ -17,7 +17,8 @@
         "vue-router": "^4.0.3",
         "vue3-carousel": "^0.15.1",
         "vuex": "^4.0.0",
-        "vuex-persistedstate": "^4.1.0"
+        "vuex-persistedstate": "^4.1.0",
+        "xlsx": "^0.18.5"
       },
       "devDependencies": {
         "@vue/cli-plugin-router": "~5.0.0",
@@ -1450,6 +1451,15 @@
         "node": ">= 10.0.0"
       }
     },
+    "node_modules/adler-32": {
+      "version": "1.3.1",
+      "resolved": "https://registry.npmjs.org/adler-32/-/adler-32-1.3.1.tgz",
+      "integrity": "sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A==",
+      "license": "Apache-2.0",
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
     "node_modules/ajv": {
       "version": "6.12.6",
       "resolved": "https://mirrors.huaweicloud.com/repository/npm/ajv/-/ajv-6.12.6.tgz",
@@ -2048,6 +2058,19 @@
         "node": ">=4"
       }
     },
+    "node_modules/cfb": {
+      "version": "1.2.2",
+      "resolved": "https://registry.npmjs.org/cfb/-/cfb-1.2.2.tgz",
+      "integrity": "sha512-KfdUZsSOw19/ObEWasvBP/Ac4reZvAGauZhs6S/gqNhXhI7cKwvlH7ulj+dOEYnca4bm4SGo8C1bTAQvnTjgQA==",
+      "license": "Apache-2.0",
+      "dependencies": {
+        "adler-32": "~1.3.0",
+        "crc-32": "~1.2.0"
+      },
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
     "node_modules/chalk": {
       "version": "3.0.0",
       "resolved": "https://mirrors.huaweicloud.com/repository/npm/chalk/-/chalk-3.0.0.tgz",
@@ -2240,6 +2263,15 @@
         "node": ">=6"
       }
     },
+    "node_modules/codepage": {
+      "version": "1.15.0",
+      "resolved": "https://registry.npmjs.org/codepage/-/codepage-1.15.0.tgz",
+      "integrity": "sha512-3g6NUTPd/YtuuGrhMnOMRjFc+LJw/bnMp3+0r/Wcz3IXUuCosKRJvMphm5+Q+bvTVGcJJuRvVLuYba+WojaFaA==",
+      "license": "Apache-2.0",
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
     "node_modules/color-convert": {
       "version": "2.0.1",
       "resolved": "https://mirrors.huaweicloud.com/repository/npm/color-convert/-/color-convert-2.0.1.tgz",
@@ -2567,6 +2599,18 @@
         "node": ">=10"
       }
     },
+    "node_modules/crc-32": {
+      "version": "1.2.2",
+      "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz",
+      "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==",
+      "license": "Apache-2.0",
+      "bin": {
+        "crc32": "bin/crc32.njs"
+      },
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
     "node_modules/cross-spawn": {
       "version": "6.0.6",
       "resolved": "https://mirrors.huaweicloud.com/repository/npm/cross-spawn/-/cross-spawn-6.0.6.tgz",
@@ -3919,6 +3963,15 @@
         "node": ">= 0.6"
       }
     },
+    "node_modules/frac": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/frac/-/frac-1.1.2.tgz",
+      "integrity": "sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA==",
+      "license": "Apache-2.0",
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
     "node_modules/fraction.js": {
       "version": "4.3.7",
       "resolved": "https://mirrors.huaweicloud.com/repository/npm/fraction.js/-/fraction.js-4.3.7.tgz",
@@ -7874,6 +7927,18 @@
         "wbuf": "^1.7.3"
       }
     },
+    "node_modules/ssf": {
+      "version": "0.11.2",
+      "resolved": "https://registry.npmjs.org/ssf/-/ssf-0.11.2.tgz",
+      "integrity": "sha512-+idbmIXoYET47hH+d7dfm2epdOMUDjqcB4648sTZ+t2JwoyBFL/insLfB/racrDmsKB3diwsDA696pZMieAC5g==",
+      "license": "Apache-2.0",
+      "dependencies": {
+        "frac": "~1.1.2"
+      },
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
     "node_modules/ssri": {
       "version": "8.0.1",
       "resolved": "https://mirrors.huaweicloud.com/repository/npm/ssri/-/ssri-8.0.1.tgz",
@@ -9161,6 +9226,24 @@
       "dev": true,
       "license": "MIT"
     },
+    "node_modules/wmf": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/wmf/-/wmf-1.0.2.tgz",
+      "integrity": "sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw==",
+      "license": "Apache-2.0",
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/word": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npmjs.org/word/-/word-0.3.0.tgz",
+      "integrity": "sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA==",
+      "license": "Apache-2.0",
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
     "node_modules/wrap-ansi": {
       "version": "7.0.0",
       "resolved": "https://mirrors.huaweicloud.com/repository/npm/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
@@ -9208,6 +9291,27 @@
         }
       }
     },
+    "node_modules/xlsx": {
+      "version": "0.18.5",
+      "resolved": "https://registry.npmjs.org/xlsx/-/xlsx-0.18.5.tgz",
+      "integrity": "sha512-dmg3LCjBPHZnQp5/F/+nnTa+miPJxUXB6vtk42YjBBKayDNagxGEeIdWApkYPOf3Z3pm3k62Knjzp7lMeTEtFQ==",
+      "license": "Apache-2.0",
+      "dependencies": {
+        "adler-32": "~1.3.0",
+        "cfb": "~1.2.1",
+        "codepage": "~1.15.0",
+        "crc-32": "~1.2.1",
+        "ssf": "~0.11.2",
+        "wmf": "~1.0.1",
+        "word": "~0.3.0"
+      },
+      "bin": {
+        "xlsx": "bin/xlsx.njs"
+      },
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
     "node_modules/y18n": {
       "version": "5.0.8",
       "resolved": "https://mirrors.huaweicloud.com/repository/npm/y18n/-/y18n-5.0.8.tgz",

+ 6 - 5
package.json

@@ -11,12 +11,13 @@
     "axios": "^0.27.2",
     "echarts": "^5.6.0",
     "element-plus": "^2.9.10",
-    "vue3-carousel": "^0.15.1",
-    "vue-carousel-3d": "^1.0.1",
-    "vuex-persistedstate": "^4.1.0",
     "vue": "^3.2.13",
+    "vue-carousel-3d": "^1.0.1",
     "vue-router": "^4.0.3",
-    "vuex": "^4.0.0"
+    "vue3-carousel": "^0.15.1",
+    "vuex": "^4.0.0",
+    "vuex-persistedstate": "^4.1.0",
+    "xlsx": "^0.18.5"
   },
   "devDependencies": {
     "@vue/cli-plugin-router": "~5.0.0",
@@ -32,4 +33,4 @@
     "not dead",
     "not ie 11"
   ]
-}
+}

+ 10 - 2
public/static/config/config.js

@@ -21,7 +21,8 @@ var webConfig = {
         "http://121.43.55.7:65456/xyjd/jz/tileset.json",
         "http://121.43.55.7:65456/xyjd/dm/tileset.json"
     ],
-    zxqUrl: "https://demo.heijingai.com/policy-interpretation/#/?mode=agent_store",
+    // zxqUrl: "https://demo.heijingai.com/policy-interpretation/#/?mode=agent_store",
+    zxqUrl:"https://aixq.shqp.gov.cn/#/?mode=agent_store",
     allowText: {
         cy: "该地址可以开设产生餐饮服务!",
         hlw: "该地址可以开设互联网上网服务营业场所!",
@@ -30,12 +31,19 @@ var webConfig = {
         zy: "该地址可以开设从事金属切割、石材和木材加工等易产生噪声污染的商业经营活动!",
     },
     JZText: {
-        cy: "该地址开设产生油烟、异味、废气的餐饮服务,可能涉及相关环境管控要求",
+        // cy: "该地址开设产生油烟、异味、废气的餐饮服务,可能涉及相关环境管控要求",
+        cy:"该地址位于《商住综合楼内与居住层相邻的商业楼层》,在此开设产生油烟、异味、废气的餐饮服务,可能涉及相关五环境管控要求。",
         hlw: "该地址禁止开设互联网上网服务营业场所!",
         ylcs: "该地址禁止开设娱乐场所!",
         yc: "该地址禁止开设烟草制品零售点!",
         zy: "该地址禁止开设从事金属切割、石材和木材加工等易产生噪声污染的商业经营活动!",
     },
+    JZTextCYType:[
+        "《居民住宅楼》",
+        "《未配套设立专用烟道的商住综合楼》",
+        "《商住综合楼内与居住层相邻的商业楼层》"
+        
+    ],
     userFeedback: {
         /** hu lian wang */
         columnId: 1601,

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 0 - 0
public/static/data/沿街店铺-20260317.geojson


BIN
public/static/data/赵巷商铺.xlsx


+ 90 - 38
src/views/HomeView.vue

@@ -2,7 +2,11 @@
   <div class="home">
     <Header v-if="!isMobile"></Header>
     <Map />
-
+    <!-- <div style="position: absolute;
+    top: 20px;
+    z-index: 999;">
+    <input type="file" @change="handleFileUpload" />
+    </div> -->
     <div :class="{ 'yjdp-btn': true, isActive: yjdpShow }" @click="addyjdp" v-if="!isMobile">沿街店铺</div>
     <div :class="{ 'kzdp-btn': true, isActive: kzdpShow }" @click="addkzdp" v-if="!isMobile">空置店铺</div>
     <div class="yhfk-btn" @click="openYHFK" v-if="!isMobile">用户反馈</div>
@@ -109,7 +113,7 @@
 
     <KDYJS ref="kdyjs" :message="parentMessage"></KDYJS>
 
-    <div class="tips">试运行阶段服务范围:夏阳街道、盈浦街道</div>
+    <div class="tips">试运行阶段服务范围:夏阳街道、盈浦街道、赵巷镇</div>
     <div class="yjdpInfoDialog" v-show="yjdpInfoDialogShow">
       <div class="close" @click="closeYJDP">×</div>
       <div class="content" v-if="nowPoint != null">
@@ -300,6 +304,8 @@ import UTIL from '@/utils/util'
 
 import login from "@/api/login";
 
+import * as XLSX from 'xlsx';
+
 export default {
   name: "HomeView",
   components: {
@@ -363,6 +369,8 @@ export default {
       layerList: arr,
       wmslayer: {},
 
+      curFileName:'沿街店铺-20260317.geojson',
+
       heatmapPanelShow: false,
       heatmapList: arrHeatmap,
       heatmapLayer: {},
@@ -448,7 +456,7 @@ export default {
       // }
       // 处理接收到的消息数据
       const data = event.data;
-      if (data != null) {
+      if (data != null && data.knowledge_ids != undefined) {
         if (data.knowledge_ids.length != 0) {
           let pointArr = JSON.parse(data.knowledge_ids)["推荐清单"];
           // console.log(pointArr);
@@ -685,51 +693,92 @@ export default {
             return v.toString(16);
         });
     },
+    handleFileUpload(event) {
+      const files = event.target.files; // 获取文件列表
+      if (files.length === 0) return; // 确保有文件被选择
+      const file = files[0]; // 获取第一个文件(通常只有一个文件)
+      const reader = new FileReader();
+      reader.onload = (e) => {
+        const data = new Uint8Array(e.target.result);
+        const workbook = XLSX.read(data, { type: 'array' }); // 读取Excel文件
+        const sheetName = workbook.SheetNames[0]; // 获取第一个工作表的名称
+        const worksheet = workbook.Sheets[sheetName]; // 获取工作表数据
+        const jsonData = XLSX.utils.sheet_to_json(worksheet, { header: 1 }); // 转换为JSON数组,header: 1 表示第一行是标题行
+        this.processExcelData(jsonData); // 处理或显示数据
+      };
+      reader.readAsArrayBuffer(file); // 读取文件内容为ArrayBuffer
+    },
+    processExcelData(data) {
+      // 在这里处理你的数据,例如转换成自定义的JSON格式
+      const headers = data[0]; // 假设第一行是标题行
+      const rows = data.slice(1); // 剩下的行是数据行
+      let arr = [];
+      const customJson = rows.map(row => {
+        const obj = {};
+        headers.forEach((header, index) => {
+          obj[header] = row[index]; // 将数据转换为键值对形式,键为列标题,值为单元格内容
+        });
+        let center = [parseFloat(obj['经度']),parseFloat(obj['纬度'])]
+        let str = {"geometry":{"coordinates":center,"type":"Point"},"properties":{"街镇":"赵巷镇","道路名称":obj['道路名称'],"地址":obj['地址'],"uuid":this.generateUUID(),"店铺名称":obj['店铺名称'],"店铺类型":obj['大类']},"type":"Feature"}
+        arr.push(str)
+        return obj; // 返回一个对象,代表一行数据的JSON表示
+      });
+      console.log(arr); // 输出或使用转换后的JSON数据
+      console.log(customJson); // 输出或使用转换后的JSON数据
+    },
+
     // 沿街店铺
     addyjdp() {
       let that = this;
       this.yjdpShow = !this.yjdpShow
       if (this.yjdpShow) {
-
-         fetch("./static/data/test.geojson")
-          .then(response => response.json())
-          .then(function (result) {
-            console.log(result);
-            let feat = {type: 'FeatureCollection', features: []}
-            let feat2 = {type: 'FeatureCollection', features: []}
-            let feat3 = {type: 'FeatureCollection', features: []}
-            let arr = []
-            result.features.forEach(e => {
-              let fet = {geometry:{},properties:{},type: "Feature"}
-              fet.geometry =  e.geometry;
-              let prop = {}
-              prop["街镇"]=e.properties.street;
-              prop["道路名称"]=e.properties.road;
-              prop["地址"]=e.properties.address;
-              prop["uuid"]=that.generateUUID();
-              // prop["店铺类型"]=e.properties.type == '#N/A' ? e.properties["大类"] : e.properties.type;
-              prop["店铺名称"]=e.properties.name;
-              // prop["大类"]=e.properties["大类"];
-              prop["店铺类型"] =e.properties["大类"].split("、")[0];
-              arr.push(e.properties["大类"].split("、")[0])
+        //  fetch("./static/data/test.geojson")
+        //   .then(response => response.json())
+        //   .then(function (result) {
+        //     console.log(result);
+        //     let feat = {type: 'FeatureCollection', features: []}
+        //     let feat2 = {type: 'FeatureCollection', features: []}
+        //     let feat3 = {type: 'FeatureCollection', features: []}
+        //     let arr = []
+        //     result.features.forEach(e => {
+        //       let fet = {geometry:{},properties:{},type: "Feature"}
+        //       fet.geometry =  e.geometry;
+        //       let prop = {}
+        //       prop["街镇"]=e.properties.street;
+        //       prop["道路名称"]=e.properties.road;
+        //       prop["地址"]=e.properties.address;
+        //       prop["uuid"]=that.generateUUID();
+        //       // prop["店铺类型"]=e.properties.type == '#N/A' ? e.properties["大类"] : e.properties.type;
+        //       prop["店铺名称"]=e.properties.name;
+        //       // prop["大类"]=e.properties["大类"];
+        //       prop["店铺类型"] =e.properties["大类"].split("、")[0];
+        //       arr.push(e.properties["大类"].split("、")[0])
               
-              fet.properties= prop;
-              feat.features.push(fet);
-            });
-            const uniqueArray = [...new Set(arr)]
-            console.log(uniqueArray);
-           console.log(feat);
-          }
-        )
+        //       fet.properties= prop;
+        //       feat.features.push(fet);
+        //     });
+        //     const uniqueArray = [...new Set(arr)]
+        //     console.log(uniqueArray);
+        //    console.log(feat);
+        //   }
+        // )
 
         // 添加
-        fetch("./static/data/沿街店铺-20251029.geojson")
+        fetch("./static/data/"+this.curFileName)
           .then(response => response.json())
           .then(function (result) {
             // 过滤空店铺数据
             result=result.features.filter(person => 
               person.properties['店铺名称'] != '空'
+              // (person.properties['店铺名称'] != '空' && person.properties['街镇'] != '夏阳街道' && person.properties['街镇'] != '盈浦街道')
             );
+            // let arr = []
+            // result.forEach(element => {
+            //   arr.push(element.properties['街镇'])
+            // });
+            //  const uniqueArray = [...new Set(arr)]
+            // console.log(uniqueArray);
+
             that.pointYJDPArr = result.map(function (pointInfo) {
               return viewer.entities.add(new SkyScenery.Entity({
                 position: SkyScenery.Cartesian3.fromDegrees(pointInfo.geometry.coordinates[0], pointInfo.geometry.coordinates[1]),
@@ -769,13 +818,14 @@ export default {
       this.kzdpShow = !this.kzdpShow
       if (this.kzdpShow) {
         // 添加
-        fetch("./static/data/沿街店铺-20251029.geojson")
+        fetch("./static/data/"+this.curFileName)
           .then(response => response.json())
           .then(function (result) {
             // 过滤空店铺数据
             result=result.features.filter(person => 
               person.properties['店铺名称'] == '空'
             );
+            console.log('[ ddd ] >', result)
             that.pointKZDPArr = result.map(function (pointInfo) {
               return viewer.entities.add(new SkyScenery.Entity({
                 position: SkyScenery.Cartesian3.fromDegrees(pointInfo.geometry.coordinates[0], pointInfo.geometry.coordinates[1], 0.5),
@@ -986,8 +1036,10 @@ export default {
             layers: params.layers,
             parameters: {
               TRANSPARENT: true,
-              format: "image/png"
-            }
+              format: "image/png",
+              srs:'EPSG:3857'
+            },
+            tilingScheme: new SkyScenery.WebMercatorTilingScheme()
           })
         )
         this.wmslayer[params.name] = layer;
@@ -1001,7 +1053,7 @@ export default {
       let that = this;
       if (judge) {
         // fetch(params.url)
-        fetch("./static/data/沿街店铺-20251029.geojson")
+        fetch("./static/data/"+this.curFileName)
           .then(response => response.json())
           .then(function (result) {
             // 过滤空店铺数据

+ 1 - 0
src/views/KDYJS.vue

@@ -545,6 +545,7 @@ export default {
       this.drawer_title = item.address
       let interfaceUrl = webConfig.KDYJS_URL + "/kdyjs/shop/bannedThings?address=" + item.address + "&lon=" + item.lon + "&lat=" + item.lat + "&distance=200"
       let interfacePro = fetch(interfaceUrl).then(response => response.json())
+      console.log(11111111111111111)
       let arr = this.judgeWMSLayer(item)
       arr.push(interfacePro);
       let listKeysArr = Object.keys(toRaw(this.searchWFSLayer));

Daži faili netika attēloti, jo izmaiņu fails ir pārāk liels