From 59499f15f6cbdaa755da284bda6bf5dfd4627954 Mon Sep 17 00:00:00 2001 From: chenhaojie Date: Mon, 23 Dec 2024 16:02:18 +0800 Subject: [PATCH 1/2] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E8=AF=B7=E6=B1=82=E9=94=99=E8=AF=AF=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/aiSupervision/layerConfigApi.js | 106 +++++----- .../layerManage/resource/LayerDetails.vue | 183 +++++++++++------- vue.config.js | 129 ++++++------ 3 files changed, 227 insertions(+), 191 deletions(-) diff --git a/src/api/aiSupervision/layerConfigApi.js b/src/api/aiSupervision/layerConfigApi.js index 0bf47df..2967bd1 100644 --- a/src/api/aiSupervision/layerConfigApi.js +++ b/src/api/aiSupervision/layerConfigApi.js @@ -1,24 +1,24 @@ -import request from '@/utils/request.js'; -import axios from 'axios'; +import request from "@/utils/request.js"; +import axios from "axios"; export function addOrEditDirectoryApi(options) { return request({ url: `/map/layerDir/saveDir`, - method: 'post', + method: "post", params: { - id: options.id || '', + id: options.id || "", name: options.name, orderNm: -1, - parentId: 'root' - } + parentId: "root", + }, }); } export function getDirectoryApi(data) { return request({ url: `/map/layerDir/getAllTreeDir`, - method: 'post', - data + method: "post", + data, }); } // 通过id查找 单个图层目录 @@ -28,43 +28,43 @@ export function getDirectoryByIdApi(id) { pageSize: 1, ids: null, data: { - id + id, }, params: { - orderBy: 'pub_date', - sortBy: 'asc' - } + orderBy: "pub_date", + sortBy: "asc", + }, }; return request({ url: `/map/layerDir/getAllTreeDir`, - method: 'post', - data + method: "post", + data, }); } export function deleteDirectoryApi(id) { return request({ url: `/map/layerDir/deleteDir`, - method: 'delete', + method: "delete", params: { - dirId: id - } + dirId: id, + }, }); } export function getStyleListApi(data) { return request({ url: `/map/layer/style/layerStylePage`, - method: 'post', - data + method: "post", + data, }); } export function getSceneList(data) { return request({ url: `/map/scene/sceneList`, - method: 'post', - data + method: "post", + data, }); } @@ -72,11 +72,11 @@ export function getSceneList(data) { export function saveOrUpdateLayerApi(paramInfo) { return request({ url: `/map/layer/saveOrUpdateLayer`, - method: 'post', + method: "post", headers: { - 'Content-Type': 'application/json' + "Content-Type": "application/json", }, - data: paramInfo + data: paramInfo, }); } @@ -84,30 +84,30 @@ export function saveOrUpdateLayerApi(paramInfo) { export function getLayerListApi(data) { return request({ url: `/map/layer/getLayers`, - method: 'post', - data + method: "post", + data, }); } export function saveOrUpdateScene(data) { return request({ url: `/map/scene/saveOrUpdateScene`, - method: 'post', - data + method: "post", + data, }); } export function getSceneDetail(id) { return request({ url: `/map/scene/findSceneById/${id}`, - method: 'get' + method: "get", }); } export function getLayerTreeBySceneId(sceneId) { return request({ url: `/map/scene/getLayerTree/${sceneId}`, - method: 'get' + method: "get", }); } @@ -115,7 +115,7 @@ export function getLayerTreeBySceneId(sceneId) { export function getLayerDirsBySceneId(sceneId) { return request({ url: `/map/scene/getRelationSceneInfo/${sceneId}`, - method: 'get' + method: "get", }); } @@ -123,10 +123,10 @@ export function getLayerDirsBySceneId(sceneId) { export function updateSceneLayerDirs(data) { return request({ url: `/map/scene/dir/saveSceneDirRelation`, - method: 'post', + method: "post", params: { - ...data - } + ...data, + }, }); } @@ -134,7 +134,7 @@ export function updateSceneLayerDirs(data) { export function getSceneConfig(sceneId) { return request({ url: `/map/scene/config/findConfigBySceneId/${sceneId}`, - method: 'get' + method: "get", }); } @@ -142,8 +142,8 @@ export function getSceneConfig(sceneId) { export function updateSceneConfig(data) { return request({ url: `/map/scene/config/saveOrUpdateConfig`, - method: 'post', - data + method: "post", + data, }); } @@ -151,28 +151,28 @@ export function updateSceneConfig(data) { export function deleteLayerApi(id) { return request({ url: `/map/layer/deleteLayer/${id}`, - method: 'delete' + method: "delete", }); } export function deleteSceneById(id) { return request({ url: `/map/scene/deleteScene/${id}`, - method: 'delete' + method: "delete", }); } export function getLayerStyle(id) { return request({ url: `map/layer/style/${id}`, - method: 'get' + method: "get", }); } // 获取图层详情 export function queryServiceInfoApi(url, layer) { switch (layer.type) { - case '021102': { + case "021102": { return new Promise(async (resolve, reject) => { const result = await axios.get(`${url}.json`); if (result.status === 200 && result.data) { @@ -184,43 +184,45 @@ export function queryServiceInfoApi(url, layer) { } }); } - case '081100': + case "081100": return new Promise(async (resolve, reject) => { const name = layer.name; - const nameArr = name.split(':'); - const splitUrl = url?.split('map-')[0]; - const newUrl = `${splitUrl}data-supermap_shuili/rest/data/datasources/shuili/datasets/${nameArr[1]}/fields.json`; + const nameArr = name.split(":"); + const splitUrl = url?.split("/rest/")[0]; + const newUrl = `${splitUrl.replace("/map-", "/data-")}/rest/data/datasources/${nameArr[0]}/datasets/${ + nameArr[1] + }/fields.json`; const result = await axios.get(newUrl); if (result.status === 200 && result.data) { const fields = result.data.fieldNames.map((item) => { return { name: item, alias: item, - type: '-' + type: "-", }; }); resolve({ fields }); } }); - case '030300': + case "030300": return new Promise(async (resolve, reject) => { const result = await axios.get( - `${url}?service=wfs&version=2.0.0&request=DescribeFeatureType&typeNames=${layer.index}` + `${url}?service=wfs&version=2.0.0&request=DescribeFeatureType&typeNames=${layer.index}`, ); if (result.status === 200 && result.data) { - const xmlDom = new window.DOMParser().parseFromString(result.data, 'text/xml'); - const elements = xmlDom.getElementsByTagName('xs:element'); + const xmlDom = new window.DOMParser().parseFromString(result.data, "text/xml"); + const elements = xmlDom.getElementsByTagName("xs:element"); let fields = []; for (let i = 0; i < elements.length; i++) { const item = elements[i]; const nillable = item.attributes?.nillable; if (nillable) { const name = item.attributes.name.value; - const type = item.attributes.type.value.split(':')?.[1]; + const type = item.attributes.type.value.split(":")?.[1]; fields.push({ name, alias: name, - type + type, }); } } diff --git a/src/views/aiSupervision/layerManage/resource/LayerDetails.vue b/src/views/aiSupervision/layerManage/resource/LayerDetails.vue index 3611222..c18f148 100644 --- a/src/views/aiSupervision/layerManage/resource/LayerDetails.vue +++ b/src/views/aiSupervision/layerManage/resource/LayerDetails.vue @@ -24,8 +24,12 @@ - + @@ -41,29 +45,49 @@ - + - +
- - {{ - editDataInfoForm.relationStyleName - ? editDataInfoForm.relationStyleName - : "点击选择样式" - }} + + {{ editDataInfoForm.relationStyleName ? editDataInfoForm.relationStyleName : "点击选择样式" }} - 取消选择样式 + 取消选择样式
- +
@@ -91,14 +115,38 @@ @@ -113,15 +161,13 @@ - - + - - + - + @@ -255,6 +308,7 @@ export default { "editDataInfoForm.serviceUrl"(val) { if (val) { if (!this.queryServiceUrlMap.has(val)) { + debugger; this.queryLayerByUrl(val); } else { this.fieldsTable = this.queryServiceUrlMap.get(val); @@ -277,13 +331,9 @@ export default { methods: { searchField() { if (this.fieldValue === "") { - this.fieldsTable = this.queryServiceUrlMap.get( - this.editDataInfoForm.serviceUrl - ); + this.fieldsTable = this.queryServiceUrlMap.get(this.editDataInfoForm.serviceUrl); } else { - this.fieldsTable = this.fieldsTable.filter((item) => - item.field.includes(this.fieldValue) - ); + this.fieldsTable = this.fieldsTable.filter((item) => item.field.includes(this.fieldValue)); } }, goBack() { @@ -306,15 +356,11 @@ export default { }, handleDelete(row) { - this.$confirm( - "删除图层将同时删除该图层资源以及关联的图层数据,删除后将不可恢复,是否继续删除?", - "提示", - { - confirmButtonText: "确定", - cancelButtonText: "取消", - type: "warning", - } - ) + this.$confirm("删除图层将同时删除该图层资源以及关联的图层数据,删除后将不可恢复,是否继续删除?", "提示", { + confirmButtonText: "确定", + cancelButtonText: "取消", + type: "warning", + }) .then(async () => { const res = await deleteLayerApi(row.id); if (res.success) { @@ -356,8 +402,7 @@ export default { if (!reg.test(this.editDataInfoForm.serviceName)) { this.$message({ type: "info", - message: - "格式有误,目录名称仅支持中文、数字、字母、下划线、冒号,最大长度不超过100", + message: "格式有误,目录名称仅支持中文、数字、字母、下划线、冒号,最大长度不超过100", }); return; } @@ -366,10 +411,7 @@ export default { extendData: JSON.stringify(this.extendTable), fields: this.fieldsTable, }; - this.queryServiceUrlMap.set( - this.editDataInfoForm.serviceUrl, - this.fieldsTable - ); + this.queryServiceUrlMap.set(this.editDataInfoForm.serviceUrl, this.fieldsTable); await saveOrUpdateLayerApi(params); this.getLayerList(); this.dialogFormVisible = false; @@ -427,9 +469,7 @@ export default { if (index !== undefined) { this.extendTable.splice(index, 1); } else { - this.extendTable = this.extendTable.filter( - (item) => !this.multipleSelection.includes(item) - ); + this.extendTable = this.extendTable.filter((item) => !this.multipleSelection.includes(item)); } }) .catch(() => { @@ -455,9 +495,7 @@ export default { } // 表格名字校验不重复 const name = this.extendTable[index].field; - const isRepeat = this.extendTable.some( - (item, i) => item.field === name && i !== index - ); + const isRepeat = this.extendTable.some((item, i) => item.field === name && i !== index); if (isRepeat) { this.$message({ type: "info", @@ -471,11 +509,10 @@ export default { this.multipleSelection = val; }, showFieldExtend() { - return ["021102", "081100", "030300"].includes( - this.editDataInfoForm.serviceType - ); + return ["021102", "081100", "030300"].includes(this.editDataInfoForm.serviceType); }, queryLayerByUrl(url) { + debugger; queryServiceInfoApi(url, { type: this.editDataInfoForm.serviceType, url: url, diff --git a/vue.config.js b/vue.config.js index 5a754d8..5f396e4 100644 --- a/vue.config.js +++ b/vue.config.js @@ -1,13 +1,13 @@ -'use strict'; -const path = require('path'); -const defaultSettings = require('./src/settings.js'); +"use strict"; +const path = require("path"); +const defaultSettings = require("./src/settings.js"); // const httpConfig = require('./public/config') -const webpack = require('webpack'); +const webpack = require("webpack"); function resolve(dir) { return path.join(__dirname, dir); } -const name = defaultSettings.title || '智慧水利水工程应用v24.3.0'; // 标题 +const name = defaultSettings.title || "智慧水利水工程应用v24.3.0"; // 标题 const port = process.env.port || process.env.npm_config_port || 80; // 端口 @@ -18,18 +18,18 @@ module.exports = { // 部署生产环境和开发环境下的URL。 // 默认情况下,Vue CLI 会假设你的应用是被部署在一个域名的根路径上 // 例如 https://www.ruoyi.vip/。如果应用被部署在一个子路径上,你就需要用这个选项指定这个子路径。例如,如果你的应用被部署在 https://www.ruoyi.vip/admin/,则设置 baseUrl 为 /admin/。 - publicPath: './', + publicPath: "./", // 在npm run build 或 yarn build 时 ,生成文件的目录名称(要和baseUrl的生产环境路径一致)(默认dist) - outputDir: 'dist', + outputDir: "dist", // 用于放置生成的静态资源 (js、css、img、fonts) 的;(项目打包之后,静态资源会放在这个文件夹下) - assetsDir: 'static', + assetsDir: "static", // 是否开启eslint保存检测,有效值:true | false | 'error' - lintOnSave: process.env.NODE_ENV === 'development', + lintOnSave: process.env.NODE_ENV === "development", // 如果你不需要生产环境的 source map,可以将其设置为 false 以加速生产环境构建。 productionSourceMap: false, // webpack-dev-server 相关配置 devServer: { - host: '0.0.0.0', + host: "0.0.0.0", // host: '192.168.1.104', // host: '127.0.0.1', port: 80, @@ -68,110 +68,107 @@ module.exports = { // } // }, ["profile"]: { - target: 'http://shuili-admin.product.dev.com:30115', - changeOrigin: true - }, + target: "http://shuili-admin.product.dev.com:30115", + changeOrigin: true, + }, [process.env.VUE_APP_BASE_API]: { - target: 'http://shuili-admin.product.dev.com:30115', + target: "http://shuili-admin.product.dev.com:30115", // target: 'http://172.16.34.59:18082', // target: "http://172.16.34.27:18082", - // target: "http://127.0.0.1:18082", + // target: "http://127.0.0.1:18082", changeOrigin: true, pathRewrite: { - ['^' + process.env.VUE_APP_BASE_API]: '/tianhui-admin-web' - } + ["^" + process.env.VUE_APP_BASE_API]: "/tianhui-admin-web", + }, }, - '/iserver': { - target: 'http://172.16.32.63:52111', - changeOrigin: true - // pathRewrite: { - // '^/iserver': '' - // } + "/iserver": { + target: "http://172.16.34.41:8090", + changeOrigin: true, }, - '/mapserver': { - target: 'http://172.16.32.63/tiles', + "/mapserver": { + target: "http://172.16.32.63/tiles", changeOrigin: true, pathRewrite: { - '^/mapserver': '' - } - } + "^/mapserver": "", + }, + }, }, - disableHostCheck: true + disableHostCheck: true, }, configureWebpack: { name: name, resolve: { alias: { - '@': resolve('src') - } + "@": resolve("src"), + }, }, plugins: [ new webpack.ProvidePlugin({ - $: 'jquery', - jQuery: 'jquery', - 'window.jQuery': 'jquery', - 'window.$': 'jquery', - Popper: ['popper.js', 'default'] - }) - ] + $: "jquery", + jQuery: "jquery", + "window.jQuery": "jquery", + "window.$": "jquery", + Popper: ["popper.js", "default"], + }), + ], }, chainWebpack(config) { - config.plugins.delete('preload'); // TODO: need test - config.plugins.delete('prefetch'); // TODO: need test + config.plugins.delete("preload"); // TODO: need test + config.plugins.delete("prefetch"); // TODO: need test // set svg-sprite-loader - config.module.rule('svg').exclude.add(resolve('src/assets/icons')).end(); + config.module.rule("svg").exclude.add(resolve("src/assets/icons")).end(); config.module - .rule('icons') + .rule("icons") .test(/\.svg$/) - .include.add(resolve('src/assets/icons')) + .include.add(resolve("src/assets/icons")) .end() - .use('svg-sprite-loader') - .loader('svg-sprite-loader') + .use("svg-sprite-loader") + .loader("svg-sprite-loader") .options({ - symbolId: 'icon-[name]' + symbolId: "icon-[name]", }) .end(); - config.when(process.env.NODE_ENV !== 'development', (config) => { + config.when(process.env.NODE_ENV !== "development", (config) => { config - .plugin('ScriptExtHtmlWebpackPlugin') - .after('html') - .use('script-ext-html-webpack-plugin', [ + .plugin("ScriptExtHtmlWebpackPlugin") + .after("html") + .use("script-ext-html-webpack-plugin", [ { // `runtime` must same as runtimeChunk name. default is `runtime` - inline: /runtime\..*\.js$/ - } + inline: /runtime\..*\.js$/, + }, ]) .end(); config.optimization.splitChunks({ - chunks: 'all', + chunks: "all", cacheGroups: { libs: { - name: 'chunk-libs', + name: "chunk-libs", test: /[\\/]node_modules[\\/]/, priority: 10, - chunks: 'initial' // only package third parties that are initially dependent + chunks: "initial", // only package third parties that are initially dependent }, elementUI: { - name: 'chunk-elementUI', // split elementUI into a single package + name: "chunk-elementUI", // split elementUI into a single package priority: 20, // the weight needs to be larger than libs and app or it will be packaged into libs or app - test: /[\\/]node_modules[\\/]_?element-ui(.*)/ // in order to adapt to cnpm + test: /[\\/]node_modules[\\/]_?element-ui(.*)/, // in order to adapt to cnpm }, commons: { - name: 'chunk-commons', - test: resolve('src/components'), // can customize your rules + name: "chunk-commons", + test: resolve("src/components"), // can customize your rules minChunks: 3, // minimum common number priority: 5, - reuseExistingChunk: true - } - } + reuseExistingChunk: true, + }, + }, }); - config.optimization.runtimeChunk('single'), + config.optimization.runtimeChunk("single"), { - from: path.resolve(__dirname, './public/robots.txt'), //防爬虫文件 - to: './' //到根目录下 + from: path.resolve(__dirname, "./public/robots.txt"), //防爬虫文件 + to: "./", //到根目录下 }; }); - } + }, }; From 10451bc2c0836b3e1da6957328d061f52f66897d Mon Sep 17 00:00:00 2001 From: chenhaojie Date: Mon, 23 Dec 2024 18:59:25 +0800 Subject: [PATCH 2/2] =?UTF-8?q?fix:=20=E8=A1=A5=E5=85=85=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E8=AF=B7=E6=B1=82token?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/aiSupervision/layerConfigApi.js | 5 ++--- .../aiSupervision/layerManage/resource/LayerDetails.vue | 1 + 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/api/aiSupervision/layerConfigApi.js b/src/api/aiSupervision/layerConfigApi.js index 2967bd1..604ed09 100644 --- a/src/api/aiSupervision/layerConfigApi.js +++ b/src/api/aiSupervision/layerConfigApi.js @@ -189,9 +189,8 @@ export function queryServiceInfoApi(url, layer) { const name = layer.name; const nameArr = name.split(":"); const splitUrl = url?.split("/rest/")[0]; - const newUrl = `${splitUrl.replace("/map-", "/data-")}/rest/data/datasources/${nameArr[0]}/datasets/${ - nameArr[1] - }/fields.json`; + const token = layer.token; + const newUrl = `${splitUrl.replace("/map-", "/data-")}/rest/data/datasources/${nameArr[0]}/datasets/${nameArr[1]}/fields.json?k=${token}`; const result = await axios.get(newUrl); if (result.status === 200 && result.data) { const fields = result.data.fieldNames.map((item) => { diff --git a/src/views/aiSupervision/layerManage/resource/LayerDetails.vue b/src/views/aiSupervision/layerManage/resource/LayerDetails.vue index c18f148..418bc90 100644 --- a/src/views/aiSupervision/layerManage/resource/LayerDetails.vue +++ b/src/views/aiSupervision/layerManage/resource/LayerDetails.vue @@ -518,6 +518,7 @@ export default { url: url, index: this.editDataInfoForm.serviceIndex, name: this.editDataInfoForm.serviceName, + token: this.editDataInfoForm.serviceToken, alias: this.editDataInfoForm.serviceNameAlias, }).then((res) => { this.fieldsTable =