This commit is contained in:
zh
2025-10-17 15:19:14 +08:00
parent eba3a90a3e
commit 9a8a89b15f
9 changed files with 261 additions and 306 deletions

Binary file not shown.

View File

@ -1,300 +1,6 @@
export default { export default {
title: '實景三維電子沙盤系統', title: '實景三維電子沙盤系統',
login: { week: ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'],
signIn: '登錄'
},
leftMenu: {
firstMenu: {
measure: '測量庫',
tool: '工具庫',
effect: '特效庫',
bigData: '大數據',
situation: '方案庫',
modelLibrary: '模型庫',
onlinePictureSource: '在線圖源',
analysis: '分析庫',
militaryMark: '軍標庫',
ersanwei: '二三維',
junbiao3d: '三維軍標'
},
secondMenu: {
//模型库
imports: '導入',
// 测量二级菜单
projectionArea: '投影面積',
areaMeasure: '貼地面積',
distanceMeasure: '貼地距離',
heightMeasure: '垂直高度',
triangleMeasure: '空間三角',
coorMeasure: '坐標',
MeasureAngle: '夹角',
lopeDistanceMeasures: '坡度',
MeasureAzimuth: '方位角',
projectionDistanceMeasure: '投影距離',
clearMeasure: '清除測量',
clear: '清除',
// 工具二级菜单
BIMEdit: 'BIM編輯',
goodsSearch: '物资統計',
goodsSearchCircle: '圓形統計',
goodsSearchPolgon: '多邊形統計',
rangeQuery: '範圍查詢',
floodSimulation: '淹沒模擬',
clearQuery: '清除查詢',
destoryRecord: '結束錄製',
graffiti: '塗鴉',
clearGraffiti: '清除塗鴉',
HDScreen: '屏幕截圖',
HDScreenHD: '高清出图',
areaScreen: '範圍截圖',
coorLocation: '坐標定位',
perspective: '透視',
Intervisibility: '視線分析',
tilesetClipping: '剖切',
transform: '模型轉換',
videoRecording: '視頻錄製',
routePlan: '路徑規劃',
clearPlanning: '清除路徑規劃',
clearTilesetClipping: '清除剖切',
pressModel: '模型壓平',
terrainDig: '地形開挖',
pictureLocation: '照片定位',
importPanorama: '全景導入',
roam: '飛行漫遊',
annotationAggregation: '標註點聚合',
mouseLocation: '鼠標定位',
mouseOver: '結束定位',
importImg: '全景關聯',
gdbImport: 'gdb導入',
projConvert: '度分秒',
projectionConvert: '投影轉換',
peopleRoomLink: '人房關聯',
splitScreen: '捲簾對比',
// 特效库二级菜单
fire: '火焰',
smoke: '烟霧',
explosion: '爆炸',
water: '水面',
diffuseScan: '擴散光波',
radarScan: '雷達光波',
clearTrajectoryMotion: '清除軌跡',
scanStereoscopic: '立體雷達',
wallStereoscopic: '電子圍墻',
entityWall: '物體牆',
polyhedronObject: '多邊體',
cube: '立方體',
trajectoryMotion: '軌跡運動',
roadDraw: '道路繪製',
lineDraw: '線路繪製',
rain: '與',
snow: '雪',
fog: '霧',
nightVision: '夜視',
skystarry: '星空',
illumination: '光照',
light: '光照',
heatMap: '熱力圖',
fountain: '喷泉',
waterL: '喷射水柱',
groundText: '貼地文字',
standText: '立體文字',
flyLine: '飛線',
// 分析二级菜单
inundationAnalysis: '淹沒分析',
visualFieldAnalysis: '視域分析',
visualFieldAnalysis2: '圆形視域',
profileAnalysis: '剖面分析',
cutFill: '土方分析',
slopeDirection: '坡度坡向',
viewShed: '可視域分析',
contour: '等高線',
qcontour: '全域等高線'
}
},
bottomMenu: {
groundText: '貼地文字',
standText: '立體文字',
point: '點',
line: '綫',
curve: '曲線',
panel: '麵',
circle: '圓',
ellipse: '橢圓',
sector: '扇形',
attackArrow: '箭頭',
pincerArrow: '雙箭頭',
rect: '矩形',
assemble: '集結地',
unLock: '解鎖',
Lock: '鎖定'
},
headerTitles: {
systemTitle: '係統面板',
udp: '物理沙盘',
ConcurrencyControl: '並發量控制',
localIP: '本地IP',
localPort: '本地端口',
weather: '天气',
week: ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'],
equipment: {
title: '設備管理',
addEquipment: '添加設備',
downloadEquipment: '下載模板',
bulkImport: '批量導入'
},
// 0827
isc: {
title: 'ISC平台',
url: '平台地址',
setInfo: '設置平台信息',
updateEquipment: '更新平台設備'
},
iconTitle: {
reset: '默认视角',
fullScreen: '全屏',
set: '設置',
shrink: '退出全屏',
locate: '北鬥定位',
logout: '退出登錄',
air: '無人機',
excel: 'Excel'
},
auth: '授權信息',
Engineering: '工程信息',
Hikang: '海康平臺',
Version: '版本信息',
Theme: '係統設置',
Service: '服务接入',
Satellite: '衛星定位',
searchWay: {
title: '搜索方式',
searchWayList: {
poi: '离線搜索',
net: '在線搜索'
}
},
confirm: '確認',
auths: {
authTime: '授權時間',
authType: '授權狀態',
authCode: '授權碼',
upload: '導入',
authexpire: '授權過期'
},
service: {
offline: '離綫服務',
official: '官方服務',
customize: '自定義',
agreements: {
Agreement: '協議',
setAgreement: '協議設置',
port: '端口',
location: '地址'
}
},
Engineerings: {
import: '路網導入',
cover: '覆蓋',
increase: '增加',
importProject: '工程導入',
derive: '工程導齣',
importPOI: '導入POI'
},
Hikangs: {
enable: '啓用'
},
versions: {
version_code: '版本號',
version_update: '檢查更新'
},
systemSetting: {
setLanguage: '語言設置',
theme: '主題换膚',
defaultView: '設置默認視角',
defaultData: '添加在線數據',
management: '後臺管理',
showCompass: '導航器',
showLatitudeLongitudeNetwork: '經緯網',
showFangliNet: '方裡網',
showDistanceLegend: '比例尺',
showToolBar: '信息欄',
showFPS: '刷新率',
showMapX: '鷹眼圖',
occlusion: '地形遮擋',
coordinateSystem: '系統坐標系',
switch: '切換',
battery: '電池資訊',
sheetIndexStatusSwitch: '標準圖幅',
skinList: {
yingguangse: '熒光色',
gonganlan: '科技藍',
hong: '烈日紅'
}
},
model: {
title: '模型管理',
createModelLibrary: '創建模型庫',
selectModelLibrary: '選擇模型庫',
addModelType: '添加模型類型',
importModel: '導入模型',
updatePoster: '更換縮略圖',
preview: '預覽',
updateModel: '更換模型',
deleteModel: '刪除',
editModel: '編輯'
},
graphLabel: {
title: '軍標管理',
createGraphLabelLibrary: '創建軍標庫',
selectGraphLabelLibrary: '選擇軍標庫',
addGraphLabelType: '添加軍標類型',
importGraphLabel: '導入軍標',
edit: '編輯',
delete: '刪除',
importGraph: '導入軍標',
addLine: '添加線',
addPanel: '添加面',
addCircle: '添加圓'
},
user: {
title: '用戶管理',
deleteUser: '刪除',
createUser: '創建用戶',
importUser: '導入用戶',
role: '权限管理',
deleteRole: '刪除',
createRole: '創建角色',
depart: '部門管理',
createDepart: '創建部門',
deleteDepart: '創建部門',
editDepart: '修改部門'
},
terrain: {
terrainSetting: '地形設置'
}
},
rightMenu: {
addDirectory: '添加資料夾',
addResource: '添加地圖數據',
pictureLocation: '帶定位照片',
importPanorama: '帶定位全景',
edit: '編輯節點',
del: '刪除節點',
setView: '設置視角',
resetView: '重置視角',
layerRaise: '圖層上移',
layerLower: '圖層下移',
layerToTop: '圖層置頂',
layerToBottom: '圖層置底',
addTrajectory: '軌跡運動',
addXlsx: '添加作戰數據',
resetPerspective: '重置透視',
showAttr: '查看屬性',
importHeader: '導入表头'
},
tree: { tree: {
// title: "綜合資訊", // title: "綜合資訊",
title: '圖層指揮艙', title: '圖層指揮艙',
@ -305,6 +11,215 @@ export default {
search: '搜索', search: '搜索',
treePlaceholder: '請輸入關鍵詞進行搜索', treePlaceholder: '請輸入關鍵詞進行搜索',
selectPlaceholder: '請選擇', selectPlaceholder: '請選擇',
selectNoText: '無數據' selectNoText: '無數據',
confirm: '確定'
},
rightMenu: {
addDirectory: '添加資料夾',
addResource: '添加地圖數據',
pictureLocation: '帶定位照片',
importPanorama: '帶定位全景',
addBIM: '添加BIM',
edit: '編輯節點',
del: '刪除節點',
setView: '設置視角',
resetView: '重置視角',
layerRaise: '圖層上移',
layerLower: '圖層下移',
layerToTop: '圖層置頂',
layerToBottom: '圖層置底',
tilesetClipping: '剖切',
addTrajectory: '軌跡運動',
addXlsx: '添加作戰數據',
showAttr: '查看屬性',
importHeader: '導入表头',
resetPerspective: '重置透視',
},
iconTitle: {
reset: '默認視角',
fullScreen: '全屏',
set: '設置',
shrink: '退出全屏',
logout: '退出登錄',
locate: '北斗定位',
air: '無人機',
excel: 'Excel'
},
firstMenu: {
situation: '態勢推演',
measure: '測量庫',
tool: '工具库',
effect: '工具庫',
bigData: '大數據',
modelLibrary: '模型库',
onlinePictureSource: '在線圖源',
analysis: '分析庫',
militaryMark: '軍標庫',
ersanwei: '二三維',
junbiao3d: '三維軍標'
},
effect: {
trajectoryMotion: "軌跡運動",
wallStereoscopic: "電子圍牆",
entityWall: '實體牆',
diffuseScan: "擴散光波",
radarScan: "雷達光波",
scanStereoscopic: "立體雷達",
polyhedronObject: "多面體",
water: "水面",
fountain: '喷泉',
waterL: '噴射水柱',
fire: "火焰",
explosion: "爆炸",
smoke: "煙霧",
nightVision: '夜視',
flyLine: '飛線',
},
analysis: {
inundationAnalysis: "淹沒分析",
profileAnalysis: "剖面分析",
sightAnalysis: "視線分析",
kenAnalysis: "視域分析",
circleKen: "圓形視域",
slopeDirection: "坡度坡向",
cutFill: "土方分析",
globalContour: "全局等高線",
contour: "等高線",
clearAnalysis: "清除",
},
measure: {
projectionArea: "投影面積",
projectionDistanceMeasure: '投影距離',
areaMeasure: "貼地面積",
distanceMeasure: "貼地距離",
heightMeasure: "垂直高度",
triangleMeasure: "空間三角",
MeasureAzimuth: '方位角',
MeasureAngle: "夾角",
lopeDistanceMeasures: '坡度',
coorMeasure: "座標",
clear: "清除測量",
},
tool: {
routePlan: "路徑規劃",
clearRoute: '清除軌跡',
graffiti: "塗鴉",
// stopGraffiti: "結束塗鴉",
clearGraffiti: "清除塗鴉",
roam: "飛行漫遊",
coorLocation: "座標定位",
mouseLocation: "鼠標定位",
annotationAggregation: "標註點聚合",
splitScreen: '捲簾對比',
screenShot: '屏幕截圖',
highQuality: '高清出圖',
videoRecord: '視頻錄製',
pressModel: "模型壓平",
terrainDig: "地形開挖",
tilesetClipping: "剖切",
clearTilesetClipping: "清除剖切",
projConvert: '度分秒',
projectionConvert: '投影轉換',
gdbImport: "gdb導入",
circleStatistics: "圓形統計",
polygonStatistics: "多邊形統計",
},
bottomMenu: {
groundText: '貼地文字',
standText: '立體文字',
point: '點',
line: '線',
curve: '曲線',
panel: '面',
ellipse: '橢圓',
sector: '扇形',
circle: '圓',
attackArrow: '箭頭',
pincerArrow: '雙箭頭',
rendezvous: '集結地',
rectangle: '矩形',
unLock: '解鎖',
Lock: '鎖定'
},
system: {
systemTitle: '系統面板',
authorize: '授權信息',
setting: '系統設置',
project: '工程信息',
device: '設備管理',
modelManage: '模型管理',
graphLabelManage: '軍標管理',
photoManage: '圖標管理',
version: '版本信息'
},
auths: {
authType: '授權狀態',
authTime: '授權時間',
authCode: '授權碼',
upload: '授權導入',
authexpire: '授權過期',
authTempExpire: '授權正常',
noAuthexpire: '暫未授權',
},
systemSetting: {
setStyle: '風格設置',
setCoordinates: '座標設置',
setUnit: '單位設置',
setFunction: '功能設置',
setLanguage: '語言設置',
theme: '主題換膚',
defaultView: '設置',
defaultViewLabel: '默認視角',
defaultData: '添加',
defaultDataLabel: '在線數據',
intoBack: '進入',
management: '後臺管理',
showCompass: '導航器',
showLatitudeLongitudeNetwork: '經緯網',
showFangliNet: '方里網',
showDistanceLegend: '比例尺',
showToolBar: '信息欄',
showFPS: '刷新率',
showMapX: '鷹眼圖',
occlusion: '地形遮擋',
coordinateSystem: '系統座標系',
sheetIndexStatusSwitch: '標準圖幅',
switch: '切換',
battery: '電池信息',
latitude: '經緯度格式',
lengthUnit: '長度單位',
areaUnit: '面積單位',
heightUnit: '高度單位',
speedUnit: '速度單位',
administrativeArea: '行政區劃',
skinList: {
yingguangse: '熒光色',
gonganlan: '科技藍',
hong: '烈日紅'
},
},
searchWay: {
title: '搜索方式',
searchWayList: {
poi: '離線搜索',
net: '在線搜索'
}
},
ConcurrencyControl: '併發量控制',
versions: {
version_code: '版本號',
version_update: '檢查更新'
},
model: {
title: '模型選擇',
setting: '默認模型參數設置'
},
graph: {
title: '軍標選擇',
setting: '默認軍標參數設置'
},
photo: {
title: '圖標選擇',
setting: '默認圖標參數設置'
} }
} as const } as const

View File

@ -24,4 +24,11 @@ export const GisApi = {
data data
}) })
}, },
//解析csv
parseCsv: async (data: any) => {
return await request.get({
url: `/csv/parseCsv?filePath=${data.filePath}`,
})
},
} }

View File

@ -8,6 +8,7 @@ export {}
declare global { declare global {
const EffectScope: typeof import('vue')['EffectScope'] const EffectScope: typeof import('vue')['EffectScope']
const ElMessage: typeof import('element-plus/es')['ElMessage'] const ElMessage: typeof import('element-plus/es')['ElMessage']
const ElMessageBox: typeof import('element-plus/es')['ElMessageBox']
const computed: typeof import('vue')['computed'] const computed: typeof import('vue')['computed']
const createApp: typeof import('vue')['createApp'] const createApp: typeof import('vue')['createApp']
const customRef: typeof import('vue')['customRef'] const customRef: typeof import('vue')['customRef']

View File

@ -19,10 +19,10 @@
<div> <div>
<div class="row"> <div class="row">
<div class="col input-select-unit-box"> <div class="col input-select-unit-box">
<el-select v-model="entityOptions.wordsName"> <el-select v-model="wordsName" @change="changeWordsName">
<el-option label="空间长度" value="0"></el-option> <el-option label="空间长度" :value="0"></el-option>
<el-option label="投影长度" value="1"></el-option> <el-option label="投影长度" :value="1"></el-option>
<el-option label="地表长度" value="2"></el-option> <el-option label="地表长度" :value="2"></el-option>
</el-select> </el-select>
<input v-model="length" class="input-text" readonly /> <input v-model="length" class="input-text" readonly />
<el-select v-model="lengthUnit"> <el-select v-model="lengthUnit">
@ -410,6 +410,7 @@ const linePositions = ref([])
const colorRef = ref(null) const colorRef = ref(null)
const extendColorRef = ref(null) const extendColorRef = ref(null)
const heightMode = ref(0) const heightMode = ref(0)
const wordsName = ref(0)
let originalOptions let originalOptions
let that let that
@ -418,6 +419,7 @@ const open = async (id) => {
that = window.earth.entityMap.get(id) that = window.earth.entityMap.get(id)
originalOptions = structuredClone(that.options) originalOptions = structuredClone(that.options)
entityOptions.value = that entityOptions.value = that
wordsName.value = Number(entityOptions.value.wordsName)
heightMode.value = entityOptions.value.heightMode heightMode.value = entityOptions.value.heightMode
length.value = entityOptions.value.lengthByMeter length.value = entityOptions.value.lengthByMeter
linePositions.value = structuredClone(that.options.positions) linePositions.value = structuredClone(that.options.positions)
@ -495,6 +497,12 @@ const inputBlurCallBack = (event, i, name, digit = 2) => {
} }
} }
const changeWordsName = (val) => {
entityOptions.value.wordsName = wordsName.value
}
const lineTypechange = () => {} const lineTypechange = () => {}
const nodeEdit = () => { const nodeEdit = () => {
entityOptions.value.positionEditing = false entityOptions.value.positionEditing = false

View File

@ -19,7 +19,7 @@
<div> <div>
<div class="row"> <div class="row">
<div class="col input-select-unit-box"> <div class="col input-select-unit-box">
<el-select v-model="entityOptions.wordsName"> <el-select v-model="wordsName" @change="changeWordsName">
<el-option label="空间长度" :value="0"></el-option> <el-option label="空间长度" :value="0"></el-option>
<el-option label="投影长度" :value="1"></el-option> <el-option label="投影长度" :value="1"></el-option>
<el-option label="地表长度" :value="2"></el-option> <el-option label="地表长度" :value="2"></el-option>
@ -416,6 +416,7 @@ const linePositions = ref([])
const colorRef = ref(null) const colorRef = ref(null)
const extendColorRef = ref(null) const extendColorRef = ref(null)
const heightMode = ref(0) const heightMode = ref(0)
const wordsName = ref(0)
let originalOptions: any let originalOptions: any
let that: any let that: any
@ -425,6 +426,7 @@ const open = async (id: any) => {
originalOptions = structuredClone(that.options) originalOptions = structuredClone(that.options)
entityOptions.value = that entityOptions.value = that
heightMode.value = entityOptions.value.heightMode heightMode.value = entityOptions.value.heightMode
wordsName.value = Number(entityOptions.value.wordsName)
length.value = entityOptions.value.lengthByMeter length.value = entityOptions.value.lengthByMeter
linePositions.value = structuredClone(that.options.positions) linePositions.value = structuredClone(that.options.positions)
that.lengthChangeCallBack = () => { that.lengthChangeCallBack = () => {
@ -502,6 +504,10 @@ const inputBlurCallBack = (event, i, name, digit = 2) => {
} }
} }
const changeWordsName = (val) => {
entityOptions.value.wordsName = wordsName.value
}
const lineTypechange = () => {} const lineTypechange = () => {}
const nodeEdit = () => { const nodeEdit = () => {
entityOptions.value.positionEditing = false entityOptions.value.positionEditing = false

View File

@ -9,6 +9,7 @@
<span class="label">名称</span> <span class="label">名称</span>
<input class="input" maxlength="40" type="text" v-model="entityOptions.name"> <input class="input" maxlength="40" type="text" v-model="entityOptions.name">
</div> </div>
<div class="col"></div>
</div> </div>
</div> </div>
<span class="custom-divider"></span> <span class="custom-divider"></span>

View File

@ -300,11 +300,25 @@ export const useRightOperate = () => {
if (!paths.length) { if (!paths.length) {
return; return;
} }
let name = getNamefromPath(paths[0]); let entity = (window as any)._entityMap.get(node.id)
let formData = new FormData(); if (!entity) {
formData.append("file", paths[0]); return
formData.append("id", node.id); }
console.log(paths[0], node.id) GisApi.parseCsv({filePath: paths[0]}).then((res)=>{
if (res.code === 0 || res.code === 200) {
let params = JSON.parse(node.params)
params.headTables = res.data
entity.options.headTables = [...params.headTables]
let params2 = {
"id": node.id,
"sourceName": node.sourceName,
"params": params,
"isShow": node.isShow ? 1 : 0,
}
TreeApi.updateDirectoryInfo(params2)
cusUpdateNode({ "id": params2.id, "sourceName": params2.sourceName, "params": JSON.stringify(params) })
}
})
// importTablehead(formData).then((res) => { // importTablehead(formData).then((res) => {
// if (res.code == 0) { // if (res.code == 0) {
// this.rightClickTreeNode.head_tables = JSON.stringify( // this.rightClickTreeNode.head_tables = JSON.stringify(

View File

@ -260,6 +260,9 @@ eventBus.on('openDialog', async (sourceType: any, id: any) => {
break break
case 'scanStereoscopic': case 'scanStereoscopic':
currentComponent.value = radarScanStereoscopic currentComponent.value = radarScanStereoscopic
await nextTick()
dynamicComponentRef.value?.open(id)
break
case 'model': case 'model':
currentComponent.value = modelObject currentComponent.value = modelObject
await nextTick() await nextTick()