From f76b96c26b878840ecc80b79d1e28e477d5573e6 Mon Sep 17 00:00:00 2001 From: suerprisePlus <15810472099@163.com> Date: 星期一, 01 七月 2024 18:10:25 +0800 Subject: [PATCH] 模型发布管理 添加 --- src/views/iot/modelserver/index.vue | 381 +++++++++++++++++++++++++++++ src/views/visual/mapView/location.vue | 79 +++++ public/index.html | 12 src/views/iot/modelLibrary/index.vue | 61 ++++ src/utils/mapServer/mapServer.js | 9 src/views/visual/atlas/index.vue | 4 src/api/iot/modelServer.js | 9 .env.development | 9 src/views/visual/mapView/index.vue | 11 src/api/mapView/map.js | 6 public/config/config.js | 9 src/api/iot/modelLibrary.js | 46 +++ src/assets/js/mapSdk/menuManager.js | 77 +++++ src/views/visual/mapView/lineRoaming.vue | 61 ++++ 14 files changed, 742 insertions(+), 32 deletions(-) diff --git a/.env.development b/.env.development index 4b6b3bd..028b314 100644 --- a/.env.development +++ b/.env.development @@ -5,14 +5,17 @@ ENV = 'development' # 寮�鍙戠幆澧� -# VUE_APP_BASE_API = 'http://192.168.11.203/prod-api' -# VUE_APP_BASE_API = '/dev-api/' + +# www api +# VUE_APP_BASE_API = '/dev-api' VUE_APP_BASE_API = 'http://192.168.11.203:80/prod-api/' # 璺敱鎳掑姞杞� VUE_CLI_BABEL_TRANSPILE_MODULES = true # 鍚庣鎺ュ彛鍦板潃 -# VUE_APP_SERVER_API_URL = 'http://192.168.11.51:8080' +# www api +# VUE_APP_SERVER_API_URL = 'http://192.168.11.58:8080' + VUE_APP_SERVER_API_URL = 'http://192.168.11.203:80' # Mqtt娑堟伅鏈嶅姟鍣ㄨ繛鎺ュ湴鍧� diff --git a/public/config/config.js b/public/config/config.js index a46bb66..e917262 100644 --- a/public/config/config.js +++ b/public/config/config.js @@ -1 +1,8 @@ -console.log(location) \ No newline at end of file +console.log(location); +const host = location.origin; + +const config = { + apiServices: "http://192.168.11.24:12316/server/", + imageUrl: "", + sdkImg: host+"/visual/CimSDK/" +}; diff --git a/public/index.html b/public/index.html index b5c8c29..7080a55 100644 --- a/public/index.html +++ b/public/index.html @@ -8,12 +8,12 @@ <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"> <link rel="icon" href="<%= BASE_URL %>logo.png"> - <script src="CimSDK/Workers/jquery-3.5.0.min.js"></script> - <script src="CimSDK/Workers/layui/layui.js"></script> - <script src="CimSDK/CimSDK.min.js"></script> - <link rel="stylesheet" href="CimSDK/Workers/layui/css/layui.css"> - <link rel="stylesheet" href="CimSDK/CimSDK.min.css"> - <script src="./config/config.js"></script> + <script src="/visual/CimSDK/Workers/jquery-3.5.0.min.js"></script> + <script src="/visual/CimSDK/Workers/layui/layui.js"></script> + <script src="/visual/CimSDK/CimSDK.min.js"></script> + <link rel="stylesheet" href="/visual/CimSDK/Workers/layui/css/layui.css"> + <link rel="stylesheet" href="/visual/CimSDK/CimSDK.min.css"> + <script src="/config/config.js"></script> <title> <%= webpackConfig.name %> </title> diff --git a/src/api/iot/modelLibrary.js b/src/api/iot/modelLibrary.js index 2d62c5d..faa5085 100644 --- a/src/api/iot/modelLibrary.js +++ b/src/api/iot/modelLibrary.js @@ -52,10 +52,44 @@ params: query, }); } -export function modelDownloadFile(query) { - return request({ - url: 'model/downloadFile', - method: 'get', - params: query, - }); +export function modelDownloadFile(params) { + request.post('model/downloadFile', params, { responseType: 'blob' }).then((res) => { + const { data, headers } = res; + console.log(headers); + const fileName = headers['Content-Disposition'].replace(/\w+;filename=(.*)/, '$1'); + const blob = new Blob([data], { type: headers['Content-Type'] }); + let dom = document.createElement('a'); + let url = window.URL.createObjectURL(blob); + dom.href = url; + dom.download = decodeURI(fileName); + dom.style.display = 'none'; + document.body.appendChild(dom); + dom.click(); + dom.parentNode.removeChild(dom); + window.URL.revokeObjectURL(url); + }); + // return request({ + // url: 'model/downloadFile?guid=' + query, + // responseType: 'blob', + // }).then((res) => { + // const { data, headers } = res; + // const fileName = headers['Content-Disposition'].replace(/\w+;filename=(.*)/, '$1'); + // const blob = new Blob([data], { type: headers['Content-Type'] }); + // let dom = document.createElement('a'); + // let url = window.URL.createObjectURL(blob); + // dom.href = url; + // dom.download = decodeURI(fileName); + // dom.style.display = 'none'; + // document.body.appendChild(dom); + // dom.click(); + // dom.parentNode.removeChild(dom); + // window.URL.revokeObjectURL(url); + // }); +} +export function modelDownloadetaReq(query) { + return request({ + url: 'model/downloadMetaReq', + method: 'post', + data: query, + }); } diff --git a/src/api/iot/modelServer.js b/src/api/iot/modelServer.js new file mode 100644 index 0000000..db372e3 --- /dev/null +++ b/src/api/iot/modelServer.js @@ -0,0 +1,9 @@ +import request from '@/utils/request'; + +export function modelSelectMetasByPage(query) { + return request({ + url: 'model/selectMetasByPage', + method: 'get', + params: query, + }); +} diff --git a/src/api/mapView/map.js b/src/api/mapView/map.js new file mode 100644 index 0000000..72b9793 --- /dev/null +++ b/src/api/mapView/map.js @@ -0,0 +1,6 @@ +import mapServer from '../../utils/mapServer/mapServer'; + +//閰嶇綉鎺ュ彛 => 鏌ヨ鎵�鏈� +export function zhangzitou_selectAllLine(params) { + return mapServer.get('/zhangzitou/selectAllLine', { params: params }); +} diff --git a/src/assets/js/mapSdk/menuManager.js b/src/assets/js/mapSdk/menuManager.js index 523bcab..caf3ce7 100644 --- a/src/assets/js/mapSdk/menuManager.js +++ b/src/assets/js/mapSdk/menuManager.js @@ -1,5 +1,11 @@ const menuManager = { pid: null, + pointFly: null, + colorAll: { + point: SmartEarth.Cesium.Color.fromCssColorString('#ff0000'), + polyline: SmartEarth.Cesium.Color.fromCssColorString('#ffff0050'), + polygon: SmartEarth.Cesium.Color.fromCssColorString('#ffff0050'), + }, init(res) { switch (res.pid) { case 's1': //閰嶇綉宸℃ @@ -80,12 +86,30 @@ setMenuS5(res) { switch (res.id) { case 'a1': - case 'a3': + if (this.pointFly) { + this.pointFly.removeFromMap(); + } else { + earthCtrl.factory.createSimpleGraphic('billboard', {}, (entity) => { + const position = entity.position.getValue(); + const coordinate = earthCtrl.core.toDegrees(position); + this.pointFly = earthCtrl.camera.rotateCamera({ + lon: coordinate.lon, + lat: coordinate.lat, + distance: 1000, + pitch: -30, + }); + }); + } return null; break; case 'a2': return res.name; break; + case 'a3': + earthCtrl.analysis.createIndoormode({ showHelp: true }); + return null; + break; + default: return null; break; @@ -104,11 +128,60 @@ }, // 鏍囩粯 setMenuS7(res) { + switch (res.id) { + case 'a1': + earthCtrl.factory.createSimpleGraphic('point', {}, (entity) => {}); + break; + case 'a2': + earthCtrl.factory.createSimpleGraphic('label', {}, (entity) => {}); + break; + case 'a3': + earthCtrl.factory.createSimpleGraphic('polyline', { showSize: false }, (entity) => {}); + break; + case 'a4': + earthCtrl.factory.createSimpleGraphic('rectangle', { showSize: false }, (entity) => {}); + break; + case 'a5': + earthCtrl.factory.createSimpleGraphic('polygon', { showSize: false }, (entity) => {}); + break; + case 'a6': + earthCtrl.factory.SimpleGraphic.clear(); + break; + default: + break; + } return null; }, // 娴嬮噺 setMenuS8(res) { - return null; + const colorAll = this.colorAll; + switch (res.id) { + case 'a1': + earthCtrl.measure.clampLineDistance(colorAll, (e) => {}); + break; + case 'a2': + earthCtrl.measure.altitude(colorAll, (e) => {}); + break; + case 'a3': + earthCtrl.measure.surfaceArea( + { + ...colorAll, + tin: true, // 鏄惁鏄剧ずtin涓夎缃� + onlyTerrain: false, // 鏄惁鍙祴閲忕簿缁嗗湴褰� + }, + (e) => {} + ); + break; + case 'a4': + earthCtrl.measure.planeArea(colorAll, (e) => {}); + break; + case 'a5': + earthCtrl.measure.horizontalDistance(colorAll, (e) => {}); + break; + case 'a6': + earthCtrl.measure.clearResult(); + break; + } }, // 鐗规晥 setMenuS9(res) { diff --git a/src/utils/mapServer/mapServer.js b/src/utils/mapServer/mapServer.js new file mode 100644 index 0000000..85a9fa5 --- /dev/null +++ b/src/utils/mapServer/mapServer.js @@ -0,0 +1,9 @@ +import axios from "axios"; +const mapServer = axios.create({ + // axios涓姹傞厤缃湁baseURL閫夐」锛岃〃绀鸿姹俇RL鍏叡閮ㄥ垎 + baseURL: config.apiServices, + // 瓒呮椂 + timeout: -1 + }); + export default mapServer; + \ No newline at end of file diff --git a/src/views/iot/modelLibrary/index.vue b/src/views/iot/modelLibrary/index.vue index c657efc..a8e4aec 100644 --- a/src/views/iot/modelLibrary/index.vue +++ b/src/views/iot/modelLibrary/index.vue @@ -43,7 +43,8 @@ v-hasPermi="['iot:modelLibrary:add']">淇敼</el-button> --> <!-- <el-button size="small" type="danger" style="padding: 5px" icon="el-icon-delete" v-hasPermi="['iot:modelLibrary:remove']">鍒犻櫎</el-button> --> - <el-button size="small" @click="setModelLibraryExport(scope.row)" type="warning" style="padding: 5px" icon="el-icon-download" + <el-button size="small" @click="setModelLibraryExport(scope.row)" type="warning" + style="padding: 5px" icon="el-icon-download" v-hasPermi="['iot:modelLibrary:export']">涓嬭浇</el-button> <!-- <el-button size="small" type="success" style="padding: 5px" icon="el-icon-monitor">棰勮</el-button> --> @@ -91,6 +92,8 @@ <el-button>鍙� 娑�</el-button> </div> </el-dialog> + <iframe id="downFrame" ref="myIfream" src="" + style="display: none; border: 0; padding: 0; height: 0; width: 0"></iframe> </div> </template> @@ -103,9 +106,15 @@ modelSelectMappers, modelInsertFiles, modelDeleteMetas, - modelDownloadFile + modelDownloadFile, + modelDownloadetaReq, } from '@/api/iot/modelLibrary'; +import { saveAs } from 'file-saver' import configTools from '../../../assets/js/configTools'; +import { getToken } from "@/utils/auth"; +import $ from 'jquery' +import axios from 'axios'; +import request from '@/utils/request'; export default { name: 'modelLibirary', dicts: ['iot_model_library_type'], @@ -149,7 +158,8 @@ type: [{ required: true, message: '璇烽�夋嫨妯″瀷绫诲埆', trigger: 'change' }], path: [{ required: true, message: '璇烽�夋嫨闇�瑕佷笂浼犵殑妯″瀷鏂囦欢', trigger: 'change' }], }, - multipleSelection: [] + multipleSelection: [], + headers: { Authorization: "Bearer " + getToken() }, }; }, created() { @@ -225,10 +235,43 @@ } }) }, - setModelLibraryExport(row){ - modelDownloadFile({guid:row.guid}).then((response)=>{ - - }) + setModelLibraryExport(row) { + modelDownloadetaReq({ ids: [row.id] }).then((response) => { + if (response.code == 200) { + this.setModelDownloadFile(response.msg) + } else { + this.$message(response.msg); + } + }) + }, + setModelDownloadFile(res) { + const url = process.env.VUE_APP_BASE_API + "model/downloadFile?&guid=" + res + axios.get(url, { + headers: { + "Authorization": "Bearer " + getToken(), + "Content-Type": "application/x-www-form-urlencoded", + }, + responseType: "blob", + }).then(response => { + if (!response.headers) return + var elink = document.createElement('a'); + // 浣跨敤鍚庣鎻愪緵鐨勬枃浠跺悕 鍛藉悕 + const fileName = response.headers['content-disposition'].split("''")[1]; + console.log(fileName); + elink.style.display = 'none'; + // 鏂囦欢涓嬭浇鍦板潃璧嬪�� + elink.href = window.URL.createObjectURL(response.data); + let str = fileName; + if (fileName.indexOf("UTF-8''") > -1) { + str = fileName.replace("UTF-8''", '') + } + elink.download = str; + elink.click(); + this.$message({ + message: '鏂囦欢瀵煎嚭鎴愬姛', + type: 'success' + }); + }) }, // 娣诲姞涓夌淮妯″瀷 setModelLibraryAdd() { @@ -241,8 +284,12 @@ this.title = ''; this.setFromRest(); document.getElementById('fileInput').value = ""; + this.selectMappers = null; }, setSsubmitForm(formName) { + if (!this.selectMappers) { + this.$message('涓夌淮妯″瀷鏈笂浼犳棤娉曟柊澧�'); + } this.$refs[formName].validate((valid) => { if (valid) { this.setModelInsertFiles(this.selectMappers) diff --git a/src/views/iot/modelserver/index.vue b/src/views/iot/modelserver/index.vue new file mode 100644 index 0000000..05fb740 --- /dev/null +++ b/src/views/iot/modelserver/index.vue @@ -0,0 +1,381 @@ +<template> + <div v-loading="loading" class="modelLibiraryBox"> + <el-card> + <el-form :model="queryParams" ref="queryForm" :inline="true" label-width="68px" + style="margin-bottom: -20px"> + <el-form-item label="鏈嶅姟鍚嶇О" prop="name"> + <el-input v-model="queryParams.name" placeholder="璇疯緭鍏ユā鍨嬪悕绉�" clearable size="small" + @keyup.enter.native="setQueryParamsQuery" /> + </el-form-item> + <el-form-item label="鏈嶅姟绫诲埆" prop="type"> + + </el-form-item> + <el-form-item> + <el-button type="primary" icon="el-icon-search" size="mini" + @click="setQueryParamsQuery">鎼滅储</el-button> + <el-button icon="el-icon-refresh" size="mini" @click="setQueryParamsRest">閲嶇疆</el-button> + </el-form-item> + </el-form> + </el-card> + <el-card class="modelLibiraryContent"> + <div class="modelLibiraryTable"> + <el-table :data="templateList" border @selection-change="handleSelectionChange"> + <el-table-column type="selection" width="55" /> + <el-table-column label="妯″瀷鍚嶇О" align="center" prop="name" /> + <el-table-column label="妯″瀷绫诲瀷" align="center" prop="type" /> + <el-table-column label="妯″瀷澶у皬" align="center" prop="sizes" :formatter="formatterSize" /> + <el-table-column label="鍒涘缓鏃堕棿" align="center" prop="createTime" :formatter="formatterTime" /> + <el-table-column label="鎿嶄綔" align="center" class-name="small-padding fixed-width" width="240"> + <template slot-scope="scope"> + + <el-button v-show="!scope.row.url" size="small" @click="setModelLibraryExport(scope.row)" + type="success" style="padding: 5px" icon="el-icon-position" + v-hasPermi="['iot:modelLibrary:export']">鍙戝竷</el-button> + + </template> + </el-table-column> + </el-table> + </div> + </el-card> + <el-dialog :title="title" :visible.sync="open" width="600px" append-to-body :close-on-click-modal="false"> + <el-form ref="modelFrom" :model="modelFrom" :rules="rules" label-width="80px"> + <!-- <el-form-item label="妯″瀷鍚嶇О" prop="name"> + <el-input v-model="modelFrom.name"></el-input> + </el-form-item> --> + <!-- <el-form-item label="妯″瀷绫诲埆" prop="type"> + <el-select v-model="modelFrom.type" style="width: 100%" placeholder="璇烽�夋嫨妯″瀷绫诲埆" clearable + size="small"> + <el-option v-for="dict in dict.type.iot_model_library_type" :key="dict.value" + :label="dict.label" :value="dict.value" /> + </el-select> + </el-form-item> --> + <el-form-item label="妯″瀷鍦板潃" prop="path"> + <div style="display: flex"> + <div style="flex: 1"> + <input style="display: none" @change="setFileChange" id="fileInput" type="file" + accept=".zip"></input> + <el-input disabled v-model="modelFrom.path" /> + </div> + <div style="margin-left: 10px"> + <el-link style="margin: 0px 10px" title="閫夋嫨" :underline="false" icon="el-icon-plus" + @click="setFileCheck"></el-link> + <el-link style="margin: 0px 10px" title="涓婁紶" :underline="false" icon="el-icon-upload2" + @click="setFileInset"></el-link> + </div> + </div> + </el-form-item> + <!-- <el-form-item label="鎻忚堪"> + <el-input v-model="modelFrom.bak"></el-input> + </el-form-item> --> + </el-form> + <div slot="footer" class="dialog-footer"> + <!-- <el-button type="primary" v-show="modelFrom.ids">淇� 鏀�</el-button> --> + <el-button type="primary" @click="setSsubmitForm('modelFrom')">鏂� 澧�</el-button> + <el-button>鍙� 娑�</el-button> + </div> + </el-dialog> + </div> +</template> + +<script> + +import configTools from '../../../assets/js/configTools'; +import { getToken } from "@/utils/auth"; +import { + modelSelectMetasByPage +} from '@/api/iot/modelServer'; + +export default { + name: 'modelserver', + + data() { + return { + loading: false, + queryParams: { + pageIndex: 1, + pageSize: 10, + name: null, + type: null, + }, + // 鏄惁涓虹鎴� + isTenant: false, + templateList: [ + + ], + // 鎬绘潯鏁� + total: 0, + title: '', + // 鏄惁鏄剧ず寮瑰嚭灞� + open: false, + modelFrom: { + name: '', + type: '', + path: '', + bak: '', + ids: '', + }, + selectPath: null, + selectMappers: null, + //琛ㄥ崟楠岃瘉 + rules: { + name: [ + { + required: true, + message: '妯″瀷鍚嶇О涓嶈兘涓虹┖', + trigger: 'blur', + }, + ], + type: [{ required: true, message: '璇烽�夋嫨妯″瀷绫诲埆', trigger: 'change' }], + path: [{ required: true, message: '璇烽�夋嫨闇�瑕佷笂浼犵殑妯″瀷鏂囦欢', trigger: 'change' }], + }, + multipleSelection: [], + headers: { Authorization: "Bearer " + getToken() }, + }; + }, + created() { + this.init(); + }, + methods: { + init() { + if (this.$store.state.user.roles.indexOf('tenant') !== -1) { + this.isTenant = true; + } + + this.getList(); + }, + getSelectPath() { + modelSelectPath().then((response) => { + if (response.code == 200 && response.msg) { + this.selectPath = response.msg; + } else { + this.$message('妯″瀷涓婁紶璺緞鑾峰彇澶辫触: ' + response.msg); + } + }); + }, + handleSelectionChange(val) { + this.multipleSelection = val; + }, + //鏌ヨ + setQueryParamsQuery() { + this.queryParams.pageIndex = 1; + this.getList(); + }, + // 閲嶇疆 + setQueryParamsRest() { + this.queryParams = { + pageIndex: 1, + pageSize: 10, + name: null, + type: null, + } + this.getList(); + }, + // 鎼滅储 + getList() { + modelSelectMetasByPage(this.queryParams).then((response) => { + if (response.code == 200) { + + this.total = response.data.length; + this.templateList = response.data; + } else { + this.$message('妯″瀷鏁版嵁鍒楄〃鑾峰彇澶辫触銆�'); + } + }) + }, + setModelLibraryRemove() { + if (this.multipleSelection.length <= 0) { + return this.$message('璇烽�夋嫨瑕佸垹闄ょ殑鏁版嵁'); + } + const std = []; + this.multipleSelection.filter((response) => { + std.push(response.id); + }) + modelDeleteMetas({ ids: std.toString() }).then((response) => { + if (response.code == 200) { + this.$message({ + message: '涓夌淮妯″瀷鍒犻櫎鎴愬姛', + type: 'success' + }); + this.setQueryParamsQuery(); + } else { + this.$message('涓夌淮妯″瀷鍒犻櫎澶辫触'); + } + }) + }, + setModelLibraryExport(row) { + modelDownloadetaReq({ ids: [row.id] }).then((response) => { + if (response.code == 200) { + this.setModelDownloadFile(response.msg) + } else { + this.$message(response.msg); + } + }) + }, + setModelDownloadFile(res) { + axios.get(process.env.VUE_APP_BASE_API + "model/downloadFile?guid=" + res, { + responseType: 'blob', + headers: this.headers + }).then((response) => { + if (response.status === 200) { + var elink = document.createElement('a'); + console.log(response.headers['content-disposition']); + debugger + // 浣跨敤鍚庣鎻愪緵鐨勬枃浠跺悕 鍛藉悕 + // const fileName = response.headers['content-disposition'].split('=')[1]; + // elink.style.display = 'none'; + // // 鏂囦欢涓嬭浇鍦板潃璧嬪�� + // elink.href = window.URL.createObjectURL(response.data); + // let str = fileName; + // if (fileName.indexOf("UTF-8''") > -1) { + // str = fileName.replace("UTF-8''", '') + // } + // elink.download = str; + // elink.click(); + // this.$message({ + // message: '鏂囦欢瀵煎嚭鎴愬姛', + // type: 'success' + // }); + } + }) + }, + // 娣诲姞涓夌淮妯″瀷 + setModelLibraryAdd() { + this.setFromRest(); + this.open = true; + this.title = '娣诲姞涓夌淮妯″瀷'; + }, + setModelLibraryCannel() { + this.open = false; + this.title = ''; + this.setFromRest(); + document.getElementById('fileInput').value = ""; + this.selectMappers = null; + }, + setSsubmitForm(formName) { + if (!this.selectMappers) { + this.$message('涓夌淮妯″瀷鏈笂浼犳棤娉曟柊澧�'); + } + this.$refs[formName].validate((valid) => { + if (valid) { + this.setModelInsertFiles(this.selectMappers) + } else { + console.log('error submit!!'); + return false; + } + }); + }, + setModelInsertFiles(res) { + modelInsertFiles(JSON.stringify(res)).then((response) => { + if (response.code == 200) { + this.$message({ + message: '涓夌淮妯″瀷娣诲姞鎴愬姛', + type: 'success' + }); + this.setModelLibraryCannel(); + this.setQueryParamsQuery(); + } else { + this.$message('涓夌淮妯″瀷娣诲姞澶辫触'); + } + }) + }, + // 鏂囦欢閫夋嫨 + setFileCheck() { + document.getElementById('fileInput').click(); + }, + + setFileChange() { + const inputFile = document.getElementById('fileInput').files; + if (inputFile.length > 0) { + this.modelFrom.path = inputFile[0].name; + } else { + this.$message('鑾峰彇涓婁紶鏂囦欢淇℃伅澶辫触锛岃閲嶆柊灏濊瘯'); + } + }, + // 鏂囦欢涓婁紶 + setFileInset() { + if (!this.selectPath) { + this.getSelectPath(); + } + var formData = new FormData(); + const fs = document.getElementById('fileInput').files; + for (var i = 0, c = fs.length; i < c; i++) { + formData.append(fs[i].name, fs[i]); // fs.files[i].name,file + } + modelUploadFiles(this.selectPath, formData).then((response) => { + if (response.code == 200) { + this.$message({ + message: '鏁版嵁涓婁紶鎴愬姛', + type: 'success' + }); + this.setModelSelectMappers() + } else { + this.$message('鏁版嵁涓婁紶澶辫触'); + } + }) + }, + setModelSelectMappers() { + if (!this.selectPath) { + this.getSelectPath(); + } + this.selectMappers = null; + modelSelectMappers({ path: this.selectPath }).then((response) => { + if (response.code == 200) { + this.selectMappers = response.data; + } else { + this.$message('鏁版嵁鏄犲皠鏌ヨ澶辫触'); + } + }) + }, + // 琛ㄥ崟閲嶇疆 + setFromRest() { + this.modelFrom = { + name: '', + type: '', + path: '', + bak: '', + ids: '', + }; + }, + formatterSize(row, column, cellValue, index) { + return configTools.formatterSize(cellValue); + }, + formatterTime(row, column, cellValue, index) { + if (cellValue) { + return configTools.formatterTime(cellValue); + } else { + return null + } + + } + }, +}; +</script> + +<style lang="scss" scoped> +.modelLibiraryBox { + padding: 6px; + width: 100%; + height: 100%; + position: absolute; + display: flex; + flex-direction: column; + + .modelLibiraryContent { + margin: 6px 0px; + flex: 1; + position: relative; + + ::v-deep .el-card__body { + padding: 15px !important; + } + + .modelLibiraryTable { + width: calc(100% - 30px); + height: calc(100% - 36px); + position: absolute; + display: flex; + flex-direction: column; + } + } +} +</style> diff --git a/src/views/visual/atlas/index.vue b/src/views/visual/atlas/index.vue index 090b4a0..a0e89d6 100644 --- a/src/views/visual/atlas/index.vue +++ b/src/views/visual/atlas/index.vue @@ -3,7 +3,9 @@ </template> <script> -export default {}; +export default { + +}; </script> <style lang="scss" scoped> diff --git a/src/views/visual/mapView/index.vue b/src/views/visual/mapView/index.vue index dcc3b89..a1378c1 100644 --- a/src/views/visual/mapView/index.vue +++ b/src/views/visual/mapView/index.vue @@ -31,6 +31,7 @@ <layer-manager ref="layerManager"></layer-manager> <location ref="location"></location> <knowledge ref="knowledge"></knowledge> + <lineRoaming ref="lineRoaming"></lineRoaming> </div> </div> </template> @@ -42,10 +43,11 @@ import menuManager from '@/assets/js/mapSdk/menuManager.js'; import location from './location.vue'; import knowledge from './knowledge.vue'; +import lineRoaming from './lineRoaming.vue'; export default { name: 'mapView', - components: { layerManager, location, knowledge }, + components: { layerManager, location, knowledge, lineRoaming }, data() { return { menuIsShow: false, @@ -75,9 +77,7 @@ this.setPopCloseAll(); const obj = menuManager.init(command); if (obj) { - this.setPopShow(obj); - } }, setPopCloseAll() { @@ -95,6 +95,9 @@ break; case '鐭ヨ瘑鍥捐氨': this.$refs && this.$refs.knowledge && this.$refs.knowledge.open(); + break; + case '绾胯矾婕父': + this.$refs && this.$refs.lineRoaming && this.$refs.lineRoaming.open(); break; default: break; @@ -114,7 +117,7 @@ .menuBox { position: absolute; - z-index: 99999; + z-index: 40; top: 20px; right: 2px; border-radius: 0 6px 6px 0; diff --git a/src/views/visual/mapView/lineRoaming.vue b/src/views/visual/mapView/lineRoaming.vue new file mode 100644 index 0000000..8ba57cd --- /dev/null +++ b/src/views/visual/mapView/lineRoaming.vue @@ -0,0 +1,61 @@ +<template> + <Popup ref="pop" top="20px" left="calc(100% - 600px)" :title="title" @close="close(true)" width="300px" :maxHeight="'700px'" @cancel="close(false)"> + <div class="menuBox"> + <el-form ref="form" label-width="80px"> + <el-form-item label="绾胯矾:"> + + </el-form-item> + <el-form-item label="绾胯矾:"> + + </el-form-item> + <el-form-item> + <el-button size="mini" >寮�濮嬫极娓�</el-button> + <el-button size="mini" >缁撴潫婕父</el-button> + </el-form-item> + </el-form> + </div> + </Popup> +</template> + +<script> +import Popup from '@/components/Tool/Popup.vue'; +import { + zhangzitou_selectAllLine +} from '@/api/mapView/map.js' +export default { + name: 'location', + components: { Popup }, + data() { + return { + title: '绾胯矾婕父', + }; + }, + + + methods: { + // 鍏抽棴寮圭獥 + close(isCloseBtn, removeLayer = true) { + // removeLayer && this.removeImageLayer(); + // 閲嶇疆data鍊� + Object.assign(this.$data, this.$options.data()); + !isCloseBtn && this.$refs.pop.close(); + }, + // 鎵撳紑寮圭獥 + open() { + this.close(true); + this.$refs.pop.open(); + this.romaLineStart(); + }, + romaLineStart(){ + zhangzitou_selectAllLine({ + limit: 100000, + page: 1 + }).then((response)=>{ + console.log(response); + }) + }, + }, +}; +</script> + +<style></style> diff --git a/src/views/visual/mapView/location.vue b/src/views/visual/mapView/location.vue index 831f58f..85f2da4 100644 --- a/src/views/visual/mapView/location.vue +++ b/src/views/visual/mapView/location.vue @@ -1,6 +1,21 @@ <template> - <Popup ref="pop" top="20px" left="calc(100% - 600px)" :title="title" @close="close(true)" width="300px" @cancel="close(false)"> - <el-tree></el-tree> + <Popup ref="pop" top="20px" left="calc(100% - 600px)" :maxHeight="'700px'" :title="title" @close="close(true)" width="300px" @cancel="close(false)"> + <div> + <el-form label-width="60px" ref="modelFrom" :model="modelFrom" :rules="rules" append-to-body :close-on-click-modal="false"> + <el-form-item label="缁忓害" prop="lon"> + <el-input v-model="modelFrom.lon"></el-input> + </el-form-item> + <el-form-item label="绾害" prop="lat"> + <el-input v-model="modelFrom.lat"></el-input> + </el-form-item> + <el-form-item label="楂樺害" prop="alt"> + <el-input v-model="modelFrom.alt"></el-input> + </el-form-item> + </el-form> + <div slot="footer" style="float: right; margin-right: 10px; margin-bottom: 10px" class="dialog-footer"> + <el-button type="primary" @click="setSsubmitForm('modelFrom')">瀹� 浣�</el-button> + </div> + </div> </Popup> </template> @@ -12,6 +27,36 @@ data() { return { title: '鍧愭爣瀹氫綅', + billboard: null, + + modelFrom: { + lon: '', + lat: '', + alt: '', + }, + rules: { + lon: [ + { + required: true, + message: '缁忓害涓嶈兘涓虹┖', + trigger: 'blur', + }, + ], + lat: [ + { + required: true, + message: '绾害涓嶈兘涓虹┖', + trigger: 'blur', + }, + ], + alt: [ + { + required: true, + message: '楂樺害涓嶈兘涓虹┖', + trigger: 'blur', + }, + ], + }, }; }, methods: { @@ -19,14 +64,44 @@ close(isCloseBtn, removeLayer = true) { // removeLayer && this.removeImageLayer(); // 閲嶇疆data鍊� + this.setRemoveBillboard(); Object.assign(this.$data, this.$options.data()); !isCloseBtn && this.$refs.pop.close(); + }, // 鎵撳紑寮圭獥 open() { this.close(true); this.$refs.pop.open(); }, + setRemoveBillboard() { + if (this.billboard) { + Viewer.entities.remove(this.billboard); + this.billboard = null; + } + }, + setSsubmitForm(formName) { + this.$refs[formName].validate((valid) => { + if (valid) { + this.setRemoveBillboard(); + + const url = config.sdkImg + 'Workers/image/mark.png'; + console.log(url); + this.billboard = Viewer.entities.add({ + position: Cesium.Cartesian3.fromDegrees(this.modelFrom.lon, this.modelFrom.lat), // 璁剧疆瀹炰綋鍦ㄥ湴鐞冧笂鐨勪綅缃� + billboard: { + image: url, // 璁剧疆浣犳兂鏄剧ず鐨勫浘鐗� + verticalOrigin: Cesium.VerticalOrigin.BOTTOM, // 璁剧疆鍥剧墖鍦ㄥ疄浣撲腑鐨勪綅缃� + disableDepthTestDistance: Number.POSITIVE_INFINITY, // 绂佺敤娣卞害娴嬭瘯锛岀‘淇濅笉琚湴褰㈤伄鎸� + }, + }); + earthCtrl.userScene.flyTo(this.billboard); + } else { + console.log('error submit!!'); + return false; + } + }); + }, }, }; </script> -- Gitblit v1.9.3