Merge branch 'zyl' of http://xny.yj-3d.com:3000/zhouyulong/electron-4 into zyl
This commit is contained in:
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "dzsp_shijingjun_offline_Y_save",
|
"name": "dzsp_shijingjun_offline_Y_save",
|
||||||
"version": "v4.0.0",
|
"version": "v4.0.0",
|
||||||
"description": "An Electron application with Vue and TypeScript",
|
"description": "",
|
||||||
"main": "./out/main/index.js",
|
"main": "./out/main/index.js",
|
||||||
"author": "example.com",
|
"author": "example.com",
|
||||||
"homepage": "https://electron-vite.org",
|
"homepage": "https://electron-vite.org",
|
||||||
|
|||||||
@ -72,6 +72,7 @@ stopBatPath = process.platform === 'win32' ? stopBatPath.replace(/^(\w:)/, '/$1'
|
|||||||
// ? `${join(app.getAppPath(), 'src/renderer/public/startUp/startUp.html')}`
|
// ? `${join(app.getAppPath(), 'src/renderer/public/startUp/startUp.html')}`
|
||||||
// : `file://${join(app.getAppPath(), 'resources/app.asar/out/renderer/startUp/startUp.html')}`
|
// : `file://${join(app.getAppPath(), 'resources/app.asar/out/renderer/startUp/startUp.html')}`
|
||||||
let isRestart = false
|
let isRestart = false
|
||||||
|
let mainWindow;
|
||||||
|
|
||||||
function createWindow(): void {
|
function createWindow(): void {
|
||||||
// Create the browser window.
|
// Create the browser window.
|
||||||
@ -98,10 +99,10 @@ function createWindow(): void {
|
|||||||
splashWindow.loadURL(splashURL)
|
splashWindow.loadURL(splashURL)
|
||||||
splashWindow.show()
|
splashWindow.show()
|
||||||
// 创建主窗口(保持原有配置,但先不显示)
|
// 创建主窗口(保持原有配置,但先不显示)
|
||||||
const mainWindow = new BrowserWindow({
|
mainWindow = new BrowserWindow({
|
||||||
// minWidth: 1780, // 添加最小宽度限制
|
minWidth: 1280, // 添加最小宽度限制
|
||||||
// minHeight: 920, // 添加最小高度限制
|
minHeight: 768, // 添加最小高度限制
|
||||||
// fullscreen: true,
|
fullscreen: true,
|
||||||
show: false,
|
show: false,
|
||||||
frame: true,
|
frame: true,
|
||||||
autoHideMenuBar: true,
|
autoHideMenuBar: true,
|
||||||
@ -429,77 +430,9 @@ function createWindow(): void {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// This method will be called when Electron has finished
|
|
||||||
// initialization and is ready to create browser windows.
|
|
||||||
// Some APIs can only be used after this event occurs.
|
|
||||||
app.whenReady().then(() => {
|
|
||||||
// alert(devSplashURL)
|
|
||||||
// alert(prodSplashURL)
|
|
||||||
// dialog.showMessageBox({
|
|
||||||
// type: 'info',
|
|
||||||
// title: '信息1',
|
|
||||||
// message: devSplashURL,
|
|
||||||
// buttons: ['确定']
|
|
||||||
// })
|
|
||||||
// 执行批处理文件
|
|
||||||
exec(startBatPath.substring(1, 200), (error, stdout, stderr) => {
|
|
||||||
if (error) {
|
|
||||||
console.error(`执行错误: ${error.message}`);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (stderr) {
|
|
||||||
console.error(`错误输出: ${stderr}`);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
console.log(`批处理输出: ${stdout}`);
|
|
||||||
});
|
|
||||||
// Set app user model id for windows
|
|
||||||
electronApp.setAppUserModelId('com.electron')
|
|
||||||
|
|
||||||
// Default open or close DevTools by F12 in development
|
|
||||||
// and ignore CommandOrControl + R in production.
|
|
||||||
// see https://github.com/alex8088/electron-toolkit/tree/master/packages/utils
|
|
||||||
app.on('browser-window-created', (_, window) => {
|
|
||||||
optimizer.watchWindowShortcuts(window)
|
|
||||||
})
|
|
||||||
|
|
||||||
// IPC test
|
|
||||||
ipcMain.on('ping', () => console.log('pong'))
|
|
||||||
|
|
||||||
createWindow()
|
|
||||||
|
|
||||||
app.on('activate', function () {
|
|
||||||
// On macOS it's common to re-create a window in the app when the
|
|
||||||
// dock icon is clicked and there are no other windows open.
|
|
||||||
if (BrowserWindow.getAllWindows().length === 0) createWindow()
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
// Quit when all windows are closed, except on macOS. There, it's common
|
|
||||||
// for applications and their menu bar to stay active until the user quits
|
|
||||||
// explicitly with Cmd + Q.
|
|
||||||
// app.on('window-all-closed', () => {
|
|
||||||
// if (process.platform !== 'darwin') {
|
|
||||||
// getServer().close(() => {
|
|
||||||
// // 关闭后台服务
|
|
||||||
// exec(stopBatPath.substring(1, 200), () => {
|
|
||||||
// app.quit()
|
|
||||||
// });
|
|
||||||
// })
|
|
||||||
// }
|
|
||||||
// })
|
|
||||||
// 退出时注销所有快捷键
|
|
||||||
app.on('will-quit', () => {
|
|
||||||
globalShortcut.unregisterAll()
|
|
||||||
})
|
|
||||||
|
|
||||||
// 用于跟踪是否正在执行退出流程
|
// 用于跟踪是否正在执行退出流程
|
||||||
let isQuitting = false;
|
let isQuitting = false;
|
||||||
|
|
||||||
app.on('window-all-closed', () => {
|
|
||||||
windowAllClosed()
|
|
||||||
});
|
|
||||||
|
|
||||||
function windowAllClosed() {
|
function windowAllClosed() {
|
||||||
// 防止重复触发退出流程
|
// 防止重复触发退出流程
|
||||||
if (isQuitting) return;
|
if (isQuitting) return;
|
||||||
@ -581,10 +514,80 @@ function closeAllWindows() {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log('=================================================')
|
const gotTheLock = app.requestSingleInstanceLock();
|
||||||
global.sharedObject = {
|
|
||||||
|
if (!gotTheLock) {
|
||||||
|
app.quit();
|
||||||
|
} else {
|
||||||
|
if (app.isReady()) {
|
||||||
|
}
|
||||||
|
|
||||||
|
app.whenReady().then(() => {
|
||||||
|
// alert(devSplashURL)
|
||||||
|
// alert(prodSplashURL)
|
||||||
|
// dialog.showMessageBox({
|
||||||
|
// type: 'info',
|
||||||
|
// title: '信息1',
|
||||||
|
// message: devSplashURL,
|
||||||
|
// buttons: ['确定']
|
||||||
|
// })
|
||||||
|
// 执行批处理文件
|
||||||
|
exec(startBatPath.substring(1, 200), (error, stdout, stderr) => {
|
||||||
|
if (error) {
|
||||||
|
console.error(`执行错误: ${error.message}`);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (stderr) {
|
||||||
|
console.error(`错误输出: ${stderr}`);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
console.log(`批处理输出: ${stdout}`);
|
||||||
|
});
|
||||||
|
// Set app user model id for windows
|
||||||
|
electronApp.setAppUserModelId('com.electron')
|
||||||
|
|
||||||
|
// Default open or close DevTools by F12 in development
|
||||||
|
// and ignore CommandOrControl + R in production.
|
||||||
|
// see https://github.com/alex8088/electron-toolkit/tree/master/packages/utils
|
||||||
|
app.on('browser-window-created', (_, window) => {
|
||||||
|
optimizer.watchWindowShortcuts(window)
|
||||||
|
})
|
||||||
|
|
||||||
|
// IPC test
|
||||||
|
ipcMain.on('ping', () => console.log('pong'))
|
||||||
|
|
||||||
|
createWindow()
|
||||||
|
|
||||||
|
app.on('activate', function () {
|
||||||
|
// On macOS it's common to re-create a window in the app when the
|
||||||
|
// dock icon is clicked and there are no other windows open.
|
||||||
|
if (BrowserWindow.getAllWindows().length === 0) createWindow()
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
// 退出时注销所有快捷键
|
||||||
|
app.on('will-quit', () => {
|
||||||
|
globalShortcut.unregisterAll()
|
||||||
|
})
|
||||||
|
|
||||||
|
app.on('window-all-closed', () => {
|
||||||
|
windowAllClosed()
|
||||||
|
});
|
||||||
|
|
||||||
|
app.on("second-instance", () => {
|
||||||
|
// 当运行第二个实例时,将会聚焦到myWindow这个窗口
|
||||||
|
if (mainWindow) {
|
||||||
|
if (mainWindow.isMinimized()) mainWindow.restore();
|
||||||
|
mainWindow.focus();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
// testNapi()
|
||||||
|
global.sharedObject = {
|
||||||
hasService: false,
|
hasService: false,
|
||||||
};
|
};
|
||||||
|
}
|
||||||
|
|
||||||
// In this file you can include the rest of your app's specific main process
|
// In this file you can include the rest of your app's specific main process
|
||||||
// code. You can also put them in separate files and require them here.
|
// code. You can also put them in separate files and require them here.
|
||||||
|
|||||||
7
src/renderer/components.d.ts
vendored
7
src/renderer/components.d.ts
vendored
@ -11,8 +11,6 @@ declare module 'vue' {
|
|||||||
BaseDialog: typeof import('./src/components/dialog/baseDialog.vue')['default']
|
BaseDialog: typeof import('./src/components/dialog/baseDialog.vue')['default']
|
||||||
Directory: typeof import('./src/components/dialog/directory.vue')['default']
|
Directory: typeof import('./src/components/dialog/directory.vue')['default']
|
||||||
DirectoryEdit: typeof import('./src/components/dialog/directoryEdit.vue')['default']
|
DirectoryEdit: typeof import('./src/components/dialog/directoryEdit.vue')['default']
|
||||||
ElAutoResizer: typeof import('element-plus/es')['ElAutoResizer']
|
|
||||||
ElBotton: typeof import('element-plus/es')['ElBotton']
|
|
||||||
ElButton: typeof import('element-plus/es')['ElButton']
|
ElButton: typeof import('element-plus/es')['ElButton']
|
||||||
ElCard: typeof import('element-plus/es')['ElCard']
|
ElCard: typeof import('element-plus/es')['ElCard']
|
||||||
ElCheckbox: typeof import('element-plus/es')['ElCheckbox']
|
ElCheckbox: typeof import('element-plus/es')['ElCheckbox']
|
||||||
@ -28,18 +26,15 @@ declare module 'vue' {
|
|||||||
ElOption: typeof import('element-plus/es')['ElOption']
|
ElOption: typeof import('element-plus/es')['ElOption']
|
||||||
ElPagination: typeof import('element-plus/es')['ElPagination']
|
ElPagination: typeof import('element-plus/es')['ElPagination']
|
||||||
ElPopconfirm: typeof import('element-plus/es')['ElPopconfirm']
|
ElPopconfirm: typeof import('element-plus/es')['ElPopconfirm']
|
||||||
ElRadio: typeof import('element-plus/es')['ElRadio']
|
|
||||||
ElRadioGroup: typeof import('element-plus/es')['ElRadioGroup']
|
|
||||||
ElRow: typeof import('element-plus/es')['ElRow']
|
ElRow: typeof import('element-plus/es')['ElRow']
|
||||||
ElSelect: typeof import('element-plus/es')['ElSelect']
|
ElSelect: typeof import('element-plus/es')['ElSelect']
|
||||||
ElSlider: typeof import('element-plus/es')['ElSlider']
|
ElSlider: typeof import('element-plus/es')['ElSlider']
|
||||||
ElSwitch: typeof import('element-plus/es')['ElSwitch']
|
ElSwitch: typeof import('element-plus/es')['ElSwitch']
|
||||||
ElTable: typeof import('element-plus/es')['ElTable']
|
ElTable: typeof import('element-plus/es')['ElTable']
|
||||||
ElTableColumn: typeof import('element-plus/es')['ElTableColumn']
|
ElTableColumn: typeof import('element-plus/es')['ElTableColumn']
|
||||||
ElTableV2: typeof import('element-plus/es')['ElTableV2']
|
|
||||||
ElTabPane: typeof import('element-plus/es')['ElTabPane']
|
ElTabPane: typeof import('element-plus/es')['ElTabPane']
|
||||||
ElTabs: typeof import('element-plus/es')['ElTabs']
|
ElTabs: typeof import('element-plus/es')['ElTabs']
|
||||||
ElTimePicker: typeof import('element-plus/es')['ElTimePicker']
|
ElTooltip: typeof import('element-plus/es')['ElTooltip']
|
||||||
ElTree: typeof import('element-plus/es')['ElTree']
|
ElTree: typeof import('element-plus/es')['ElTree']
|
||||||
ElUpload: typeof import('element-plus/es')['ElUpload']
|
ElUpload: typeof import('element-plus/es')['ElUpload']
|
||||||
Index_b: typeof import('./src/components/SvgIcon/index_b.vue')['default']
|
Index_b: typeof import('./src/components/SvgIcon/index_b.vue')['default']
|
||||||
|
|||||||
@ -28,7 +28,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.progress-container {
|
.progress-container {
|
||||||
width: 400px;
|
width: 334px;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -52,7 +52,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.progress-bar-container {
|
.progress-bar-container {
|
||||||
height: 16px;
|
height: 12px;
|
||||||
/* background-color: #222; */
|
/* background-color: #222; */
|
||||||
border-radius: 14px 0px 14px 0px;
|
border-radius: 14px 0px 14px 0px;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
@ -136,12 +136,11 @@
|
|||||||
|
|
||||||
.box_middle_content {
|
.box_middle_content {
|
||||||
width: 400px;
|
width: 400px;
|
||||||
color: #ADF1FF;
|
color: #e6f7ff;
|
||||||
font-size: 20px;
|
font-size: 20px;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
letter-spacing: 0px;
|
letter-spacing: 0px;
|
||||||
line-height: 27px;
|
line-height: 27px;
|
||||||
color: rgba(var(--color-text2), 1);
|
|
||||||
text-align: justify;
|
text-align: justify;
|
||||||
vertical-align: top;
|
vertical-align: top;
|
||||||
font-family: 'Alibaba';
|
font-family: 'Alibaba';
|
||||||
@ -161,13 +160,13 @@
|
|||||||
<!-- 顶部名称 -->
|
<!-- 顶部名称 -->
|
||||||
<div class="box_top">
|
<div class="box_top">
|
||||||
<img src="./earth.png" alt="">
|
<img src="./earth.png" alt="">
|
||||||
<span>实景三维数字孪生系统</span>
|
<span>实景三维电子沙盘系统</span>
|
||||||
</div>
|
</div>
|
||||||
<!-- 中部介绍 -->
|
<!-- 中部介绍 -->
|
||||||
<div class="box_middle">
|
<div class="box_middle">
|
||||||
<div class="box_middle_title">
|
<div class="box_middle_title">
|
||||||
<span>欢迎进入</span>
|
<span>欢迎使用</span>
|
||||||
<span>实景三维数字孪生系统</span>
|
<span>实景三维电子沙盘系统</span>
|
||||||
<!-- <div>Welcome to the 3D Digital Twin System of Real Scenery</div> -->
|
<!-- <div>Welcome to the 3D Digital Twin System of Real Scenery</div> -->
|
||||||
</div>
|
</div>
|
||||||
<div class="box_middle_content">
|
<div class="box_middle_content">
|
||||||
|
|||||||
@ -1567,7 +1567,7 @@
|
|||||||
: node.iconClose
|
: node.iconClose
|
||||||
: node[setting.data.key.icon]
|
: node[setting.data.key.icon]
|
||||||
if (icon || node.svg)
|
if (icon || node.svg)
|
||||||
icoStyle.push('background:url(', node.svg ? '' : icon, ') 0 0 no-repeat;')
|
icoStyle.push("background:url(", (node.svg ? '':icon), ") 0 0 no-repeat;");
|
||||||
if (
|
if (
|
||||||
setting.view.showIcon == false ||
|
setting.view.showIcon == false ||
|
||||||
!tools.apply(setting.view.showIcon, [setting.treeId, node], true)
|
!tools.apply(setting.view.showIcon, [setting.treeId, node], true)
|
||||||
|
|||||||
@ -135,7 +135,7 @@ export default {
|
|||||||
panel: '面',
|
panel: '面',
|
||||||
ellipse: '椭圆',
|
ellipse: '椭圆',
|
||||||
sector: '扇形',
|
sector: '扇形',
|
||||||
circle: '圆',
|
circle: '正圆',
|
||||||
attackArrow: '箭头',
|
attackArrow: '箭头',
|
||||||
pincerArrow: '双箭头',
|
pincerArrow: '双箭头',
|
||||||
rendezvous: '集结地',
|
rendezvous: '集结地',
|
||||||
@ -143,6 +143,13 @@ export default {
|
|||||||
unLock: '解锁',
|
unLock: '解锁',
|
||||||
Lock: '锁定'
|
Lock: '锁定'
|
||||||
},
|
},
|
||||||
|
default: {
|
||||||
|
point: '点标注',
|
||||||
|
line: '线标注',
|
||||||
|
curve: '曲线标注',
|
||||||
|
panel: '面标注',
|
||||||
|
roam: '漫游路径',
|
||||||
|
},
|
||||||
system: {
|
system: {
|
||||||
systemTitle: '系统面板',
|
systemTitle: '系统面板',
|
||||||
authorize: '授权信息',
|
authorize: '授权信息',
|
||||||
|
|||||||
@ -143,6 +143,13 @@ export default {
|
|||||||
unLock: 'UnLock',
|
unLock: 'UnLock',
|
||||||
Lock: 'Lock'
|
Lock: 'Lock'
|
||||||
},
|
},
|
||||||
|
default: {
|
||||||
|
point: 'Point',
|
||||||
|
line: 'Line',
|
||||||
|
curve: 'Curve',
|
||||||
|
panel: 'Panel',
|
||||||
|
roam: 'roam',
|
||||||
|
},
|
||||||
system: {
|
system: {
|
||||||
systemTitle: 'Settings',
|
systemTitle: 'Settings',
|
||||||
authorize: 'Authorization Information',
|
authorize: 'Authorization Information',
|
||||||
|
|||||||
@ -134,7 +134,7 @@ export default {
|
|||||||
panel: '面',
|
panel: '面',
|
||||||
ellipse: '橢圓',
|
ellipse: '橢圓',
|
||||||
sector: '扇形',
|
sector: '扇形',
|
||||||
circle: '圓',
|
circle: '正圓',
|
||||||
attackArrow: '箭頭',
|
attackArrow: '箭頭',
|
||||||
pincerArrow: '雙箭頭',
|
pincerArrow: '雙箭頭',
|
||||||
rendezvous: '集結地',
|
rendezvous: '集結地',
|
||||||
@ -142,6 +142,13 @@ export default {
|
|||||||
unLock: '解鎖',
|
unLock: '解鎖',
|
||||||
Lock: '鎖定'
|
Lock: '鎖定'
|
||||||
},
|
},
|
||||||
|
default: {
|
||||||
|
point: '點標注',
|
||||||
|
line: '線標注',
|
||||||
|
curve: '曲線標注',
|
||||||
|
panel: '面標注',
|
||||||
|
roam: '漫遊路徑',
|
||||||
|
},
|
||||||
system: {
|
system: {
|
||||||
systemTitle: '系統面板',
|
systemTitle: '系統面板',
|
||||||
authorize: '授權信息',
|
authorize: '授權信息',
|
||||||
|
|||||||
@ -361,6 +361,24 @@ img {
|
|||||||
border: none !important;
|
border: none !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.login-select-popper {
|
||||||
|
border: 1px solid var(--el-border-color-light) !important;
|
||||||
|
box-shadow: var(--el-box-shadow-light) !important;
|
||||||
|
|
||||||
|
.el-select-dropdown {
|
||||||
|
background: #fff !important;
|
||||||
|
}
|
||||||
|
.el-select-dropdown__item {
|
||||||
|
color: rgba(51, 51, 51, 1) !important;
|
||||||
|
font-size: 14px !important;
|
||||||
|
}
|
||||||
|
.el-select-dropdown__item.is-selected, .el-select-dropdown__item.is-hovering {
|
||||||
|
background-color: #f5f7fa !important;
|
||||||
|
color: rgba(0, 66, 66, 1) !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* 树 */
|
/* 树 */
|
||||||
.ztree li span.button.ico_docu {
|
.ztree li span.button.ico_docu {
|
||||||
background: url(../images/tree/folder-empty.png) 0 0 no-repeat;
|
background: url(../images/tree/folder-empty.png) 0 0 no-repeat;
|
||||||
@ -388,11 +406,13 @@ img {
|
|||||||
|
|
||||||
#app {
|
#app {
|
||||||
.ztree * {
|
.ztree * {
|
||||||
|
font-size: 14px;
|
||||||
font-family: SourceHanSans;
|
font-family: SourceHanSans;
|
||||||
}
|
}
|
||||||
|
|
||||||
.ztree li a {
|
.ztree li a {
|
||||||
color: #ffffff;
|
color: #ffffff;
|
||||||
|
margin-bottom: 6px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.ztree li a.curSelectedNode {
|
.ztree li a.curSelectedNode {
|
||||||
@ -400,6 +420,7 @@ img {
|
|||||||
border: none;
|
border: none;
|
||||||
color: rgba(var(--color-base1), 1);
|
color: rgba(var(--color-base1), 1);
|
||||||
opacity: 1;
|
opacity: 1;
|
||||||
|
|
||||||
.svg-icon {
|
.svg-icon {
|
||||||
color: rgba(var(--color-base1), 1) !important;
|
color: rgba(var(--color-base1), 1) !important;
|
||||||
}
|
}
|
||||||
@ -438,8 +459,10 @@ img {
|
|||||||
background: linear-gradient(180deg, rgba(var(--color-base1), 0.2) 0%, rgba(var(--color-base1), 0) 100%), rgba(0, 0, 0, 0.6);
|
background: linear-gradient(180deg, rgba(var(--color-base1), 0.2) 0%, rgba(var(--color-base1), 0) 100%), rgba(0, 0, 0, 0.6);
|
||||||
backdrop-filter: blur(10px);
|
backdrop-filter: blur(10px);
|
||||||
}
|
}
|
||||||
|
|
||||||
.compass-gyro {
|
.compass-gyro {
|
||||||
fill: rgba(var(--color-base1), 1);
|
fill: rgba(var(--color-base1), 1);
|
||||||
|
|
||||||
.cesium-svgPath-svg {
|
.cesium-svgPath-svg {
|
||||||
scale: 0.8;
|
scale: 0.8;
|
||||||
}
|
}
|
||||||
@ -468,6 +491,133 @@ img {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.el-popper.is-customized {
|
||||||
|
padding: 2px 6px;
|
||||||
|
background: rgba(0, 0, 0, 0.6);
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-popper.is-customized::before {
|
||||||
|
content: " ";
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
border-radius: var(--el-popper-border-radius);
|
||||||
|
background: rgba(var(--color-base1), 0.2);
|
||||||
|
z-index: -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-popper.is-customized>.el-popper__arrow::before {
|
||||||
|
background: #ff000000 !important;
|
||||||
|
margin: 0;
|
||||||
|
right: 0;
|
||||||
|
width: 0;
|
||||||
|
height: 0;
|
||||||
|
border: 5px solid rgba(var(--color-base1), 0.2) !important;
|
||||||
|
border-bottom-color: transparent !important;
|
||||||
|
border-right-color: transparent !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-popper.is-customized>.el-popper__arrow::after {
|
||||||
|
box-sizing: border-box;
|
||||||
|
content: " ";
|
||||||
|
height: 10px;
|
||||||
|
position: absolute;
|
||||||
|
transform: rotate(45deg);
|
||||||
|
z-index: -2;
|
||||||
|
background: #ff000000;
|
||||||
|
margin: 0;
|
||||||
|
right: 0;
|
||||||
|
width: 0;
|
||||||
|
height: 0;
|
||||||
|
border: 5px solid rgba(0, 0, 0, 0.6);
|
||||||
|
border-bottom-color: transparent !important;
|
||||||
|
border-right-color: transparent !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
#app {
|
||||||
|
.distance-legend {
|
||||||
|
background-color: rgba(0, 0, 0, 0);
|
||||||
|
border: none;
|
||||||
|
bottom: 70px;
|
||||||
|
.distance-legend-label {
|
||||||
|
color: rgba(var(--color-base1), 1);
|
||||||
|
-webkit-text-stroke-width: 0.3px;
|
||||||
|
-webkit-text-stroke-color: #000;
|
||||||
|
font-size: 18px;
|
||||||
|
font-weight: 700;
|
||||||
|
}
|
||||||
|
.distance-legend-scale-bar {
|
||||||
|
border-left: 1px solid rgba(var(--color-base1), 1);
|
||||||
|
border-right: 1px solid rgba(var(--color-base1), 1);
|
||||||
|
border-bottom: 1px solid rgba(var(--color-base1), 1);
|
||||||
|
top: 18px !important;
|
||||||
|
/* border: none;
|
||||||
|
background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHkAAAAPCAYAAADAgWCVAAAAAXNSR0IArs4c6QAAAARzQklUCAgICHwIZIgAAABvSURBVFiF7dExEcAgEETRhUigQUaEHCquTYcI5ERB6jigQE1UMDeT3afgz/wDvd8o5cRaD+RfzAZauzLca3SLbORec3SD7KfJBDSZgCYT0GQCmkxAkwloMgFNJqDJBDSZQMKcb3SE7JVgNqIjZK8PafgL7TYPzBoAAAAASUVORK5CYII=") no-repeat;
|
||||||
|
background-size: 100% 100%;
|
||||||
|
height: 14px; */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.cesium-performanceDisplay-defaultContainer {
|
||||||
|
bottom: 71px !important;
|
||||||
|
right: 15px !important;
|
||||||
|
.cesium-performanceDisplay {
|
||||||
|
background: linear-gradient(0deg, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0.5)), linear-gradient(180deg, rgba(var(--color-base1), 0.2) 0%, rgba(var(--color-base1), 0) 100%);
|
||||||
|
border-color: rgba(var(--color-base1), 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.cesium-info {
|
||||||
|
right: 245px !important;
|
||||||
|
bottom: 72px !important;
|
||||||
|
font-size: 12px !important;
|
||||||
|
flex-direction: column !important;
|
||||||
|
padding-bottom: 10px !important;
|
||||||
|
border-radius: 0 !important;
|
||||||
|
border: 1px solid rgba(var(--color-base1), 0.5);
|
||||||
|
background: linear-gradient(180deg, rgba(var(--color-base1), 0.2) 0%, rgba(var(--color-base1), 0) 100%), rgba(0, 0, 0, 0.6) !important;
|
||||||
|
}
|
||||||
|
.cesium-info>div:nth-child(1)::before {
|
||||||
|
content: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAAXNSR0IArs4c6QAAAARzQklUCAgICHwIZIgAAABkSURBVDiN7dBBCoAwDETRjxczN8vR6s3GTZFKm1jElXSgmxIeycDKCgCSTJJ/gRT18Wk8QUqFRrhFyAhSu00yc+EbsANW3yjt/5EcaNW6bepJb1EV1p0d9OlBb/PIA/4eWPlZToLnA8jkPBbrAAAAAElFTkSuQmCC");
|
||||||
|
margin-right: 8px;
|
||||||
|
position: relative;
|
||||||
|
top: 6px;
|
||||||
|
}
|
||||||
|
.cesium-info>div:nth-child(2)::before {
|
||||||
|
content: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAAXNSR0IArs4c6QAAAARzQklUCAgICHwIZIgAAACkSURBVDiNrZNRDsMgDEPJ1HstN0M7Gd3JvA/CSlsWDMw/larwZJsQAiEACiAys5QAJABgZh+DYF0GGqSAniMGfgETDqXevBDAU3ci4p5xI7c66912r8P/rUoIOa4p1l3OwvR6EQaGF9uLXFZkr/6pfd+zLr/rUrmbi2zAiLvcXRx6eqbXpL+shkNdBUY2LgvUEXfdDkVkX3Z1VXkpzOxGMulF/gCoY8eTaDSlggAAAABJRU5ErkJggg==");
|
||||||
|
margin-right: 8px;
|
||||||
|
position: relative;
|
||||||
|
top: 6px;
|
||||||
|
}
|
||||||
|
.cesium-info>div:nth-child(3)::before {
|
||||||
|
content: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAAXNSR0IArs4c6QAAAARzQklUCAgICHwIZIgAAAECSURBVDiN1ZQxTsQwEEWfCRUlQuIQNNwgOQANh9hDbAUNHIEWcQQK6hUSNZRLgfYENEiIDj0KHOQNdjZe0fArO+N8/ZkXB/5YAUA9+FUI4XVrV3Wmvqj36p16Mqh36lmt6bV6VKgtVKf47CTrQ2CmzquSjBgCrIBl5lwHMKXt3WT9BjwCz2oTQviMJt22CfeAC+BmcKYdJp2kEpQeSK+ahPtEKGpTSpWOIDeOUSiF+bVJbTEElUL5IELJmOQ0Tly9TW5KE5+tzS9Rt3GuOSgjhk+D/U/aTTelKzR0XOq0CKXygz5fM4y/r/6mPMR9m321oD5AT/mU7zYugXfgqsbsf+kLw8LzMSWqfwIAAAAASUVORK5CYII=");
|
||||||
|
margin-right: 8px;
|
||||||
|
position: relative;
|
||||||
|
top: 6px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#mapxDiv {
|
||||||
|
bottom: 126px !important;
|
||||||
|
right: 16px !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-height: 850px) {
|
||||||
|
#distanceLegendDiv {
|
||||||
|
.compass {
|
||||||
|
scale: 0.8;
|
||||||
|
left: 25px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.navigation-controls {
|
||||||
|
scale: 0.8;
|
||||||
|
top: 225px;
|
||||||
|
left: 22px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* 提示 */
|
/* 提示 */
|
||||||
/* .el-message--info {
|
/* .el-message--info {
|
||||||
@ -644,6 +794,7 @@ img {
|
|||||||
.el-message--error svg {
|
.el-message--error svg {
|
||||||
color: rgba(241, 108, 85, 1) !important;
|
color: rgba(241, 108, 85, 1) !important;
|
||||||
}
|
}
|
||||||
.el-popup-parent--hidden{
|
|
||||||
|
.el-popup-parent--hidden {
|
||||||
width: 100% !important;
|
width: 100% !important;
|
||||||
}
|
}
|
||||||
@ -145,8 +145,8 @@ const cancel = () => {
|
|||||||
right: 0;
|
right: 0;
|
||||||
|
|
||||||
.box {
|
.box {
|
||||||
width: 20vw;
|
width: 380px;
|
||||||
height: 10vw;
|
height: 192px;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
|
|||||||
@ -18,6 +18,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
|
//@ts-nocheck
|
||||||
import {computed, onMounted, ref} from "vue"
|
import {computed, onMounted, ref} from "vue"
|
||||||
|
|
||||||
const props = defineProps(['eventList',])
|
const props = defineProps(['eventList',])
|
||||||
|
|||||||
@ -27,6 +27,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
|
//@ts-nocheck
|
||||||
import {useI18n} from 'vue-i18n'
|
import {useI18n} from 'vue-i18n'
|
||||||
import {ref} from 'vue'
|
import {ref} from 'vue'
|
||||||
import {useRightOperate} from "./rightOperate";
|
import {useRightOperate} from "./rightOperate";
|
||||||
|
|||||||
@ -5,20 +5,20 @@
|
|||||||
<div class="control">
|
<div class="control">
|
||||||
<span>{{ formatTime(currentStamp) }}</span>
|
<span>{{ formatTime(currentStamp) }}</span>
|
||||||
<el-icon :size="20" @click="play">
|
<el-icon :size="20" @click="play">
|
||||||
<ZoomOut/>
|
<ZoomOut />
|
||||||
</el-icon>
|
</el-icon>
|
||||||
<el-icon :size="20" @click="stop">
|
<el-icon :size="20" @click="stop">
|
||||||
<ZoomIn/>
|
<ZoomIn />
|
||||||
</el-icon>
|
</el-icon>
|
||||||
<span class="title">{{ TSOBJ.name }}</span>
|
<span class="title">{{ TSOBJ.name }}</span>
|
||||||
<span class="zoom">
|
<span class="zoom">
|
||||||
<el-icon :size="20" @click="add(-1)">
|
<el-icon :size="20" @click="add(-1)">
|
||||||
<ZoomOut/>
|
<ZoomOut />
|
||||||
</el-icon>
|
</el-icon>
|
||||||
<el-slider :disabled="true" :max="maxLevel" :min="minLevel" v-model="level" :show-tooltip="false"
|
<el-slider :disabled="true" :max="maxLevel" :min="minLevel" v-model="level" :show-tooltip="false"
|
||||||
style="width:80%;padding-right: 8px;"/>
|
style="width:80%;padding-right: 8px;" />
|
||||||
<el-icon :size="20" @click="add(1)">
|
<el-icon :size="20" @click="add(1)">
|
||||||
<ZoomIn/>
|
<ZoomIn />
|
||||||
</el-icon>
|
</el-icon>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
@ -35,17 +35,12 @@
|
|||||||
<!--<span class="timeline-icon16" v-drags="timing"></span>-->
|
<!--<span class="timeline-icon16" v-drags="timing"></span>-->
|
||||||
</div>
|
</div>
|
||||||
<!-- 时间轴刻度线 -->
|
<!-- 时间轴刻度线 -->
|
||||||
<timeScale
|
<timeScale :ticTiny="ticTiny" :ticMain="ticMain" :distanceOfTicTiny="distanceOfTicTiny"
|
||||||
:ticTiny="ticTiny"
|
:distanceOfTicMain="distanceOfTicMain" :originOffset="originOffset" :originMainOffset="originMainOffset">
|
||||||
:ticMain="ticMain"
|
</timeScale>
|
||||||
:distanceOfTicTiny="distanceOfTicTiny"
|
|
||||||
:distanceOfTicMain="distanceOfTicMain"
|
|
||||||
:originOffset="originOffset"
|
|
||||||
:originMainOffset="originMainOffset"
|
|
||||||
></timeScale>
|
|
||||||
<!-- 事件色块 -->
|
<!-- 事件色块 -->
|
||||||
<chart :eventList="TSOBJ._Store._tasks" :hr="hr" :originHrOffset="originHrOffset"
|
<chart :eventList="TSOBJ._Store._tasks" :hr="hr" :originHrOffset="originHrOffset" :scrollLeft="scrollLeft">
|
||||||
:scrollLeft="scrollLeft"></chart>
|
</chart>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -56,13 +51,13 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import {ZoomIn, ZoomOut} from '@element-plus/icons-vue'
|
import { ZoomIn, ZoomOut } from '@element-plus/icons-vue'
|
||||||
|
|
||||||
import EventParams from "./components/eventParams.vue"
|
import EventParams from "./components/eventParams.vue"
|
||||||
import Grid from "./components/grid.vue"
|
import Grid from "./components/grid.vue"
|
||||||
import TimeScale from "./components/timeScale.vue"
|
import TimeScale from "./components/timeScale.vue"
|
||||||
import Chart from "./components/chart.vue"
|
import Chart from "./components/chart.vue"
|
||||||
import {ref, onBeforeUnmount} from "vue"
|
import { ref, onBeforeUnmount } from "vue"
|
||||||
|
|
||||||
let currentStamp = ref(window['tsObj']._Store._startTimestamp)
|
let currentStamp = ref(window['tsObj']._Store._startTimestamp)
|
||||||
let maxLevel = ref(24)
|
let maxLevel = ref(24)
|
||||||
@ -140,12 +135,12 @@ let eventCallback = () => {
|
|||||||
console.log(dataMap)
|
console.log(dataMap)
|
||||||
|
|
||||||
let fun = (map, isEnd = false) => {
|
let fun = (map, isEnd = false) => {
|
||||||
let keys = Array.from(map.keys());
|
let keys: any = Array.from(map.keys());
|
||||||
for (let i = 0; i < keys.length; i++) {
|
for (let i = 0; i < keys.length; i++) {
|
||||||
let timestamp = keys[i].split("_")[0]
|
let timestamp = keys[i].split("_")[0]
|
||||||
|
|
||||||
let event = Array.from(map.values())[i]
|
let event: any = Array.from(map.values())[i]
|
||||||
let flag = props.TSOBJ._Store._currentTimestamp > timestamp && !window.did_ts_Arr.includes(event.id)
|
let flag = props.TSOBJ._Store._currentTimestamp > timestamp && !(window as any).did_ts_Arr.includes(event.id)
|
||||||
if (String(keys[i]).indexOf(String(timeId)) > -1 || flag) {
|
if (String(keys[i]).indexOf(String(timeId)) > -1 || flag) {
|
||||||
taskIds.push(keys[i]);
|
taskIds.push(keys[i]);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -28,7 +28,7 @@ let cabin = ref()
|
|||||||
let tsOBJ = ref({})
|
let tsOBJ = ref({})
|
||||||
const router = useRouter()
|
const router = useRouter()
|
||||||
const route = useRoute()
|
const route = useRoute()
|
||||||
let params = {}
|
let params:any = {}
|
||||||
// 将由列表页面传递过来的参数,数字化
|
// 将由列表页面传递过来的参数,数字化
|
||||||
for (const routeQueryKey in route.query) {
|
for (const routeQueryKey in route.query) {
|
||||||
params[routeQueryKey] = route.query[routeQueryKey]
|
params[routeQueryKey] = route.query[routeQueryKey]
|
||||||
@ -41,7 +41,7 @@ window.planId = params.id
|
|||||||
|
|
||||||
// 通过planID获取方案包含的所有事件
|
// 通过planID获取方案包含的所有事件
|
||||||
let getEventList = () => {
|
let getEventList = () => {
|
||||||
let events = []
|
let events:any = []
|
||||||
for (let i = 0; i < 1; i++) {
|
for (let i = 0; i < 1; i++) {
|
||||||
events.push({
|
events.push({
|
||||||
id: "task" + i,
|
id: "task" + i,
|
||||||
@ -88,10 +88,10 @@ onMounted(async () => {
|
|||||||
createEarth()
|
createEarth()
|
||||||
})
|
})
|
||||||
const createEarth = async () => {
|
const createEarth = async () => {
|
||||||
window.earth_ts = await new YJ.YJEarth('earthContainer', {navigationHelpButton: false})
|
(window as any).earth_ts = await new YJ.YJEarth('earthContainer', {navigationHelpButton: false})
|
||||||
YJ.Global.CesiumContainer(earth_ts, {compass: false, legend: false});
|
YJ.Global.CesiumContainer((window as any).earth_ts, {compass: false, legend: false});
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
new YJ.Tools(window.earth_ts).flyHome()
|
new YJ.Tools((window as any).earth_ts).flyHome()
|
||||||
}, 1000)
|
}, 1000)
|
||||||
console.log("createEarth++++++++++++++++++++")
|
console.log("createEarth++++++++++++++++++++")
|
||||||
cabin.value.initTreeCallBack()
|
cabin.value.initTreeCallBack()
|
||||||
|
|||||||
@ -51,6 +51,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
|
//@ts-nocheck
|
||||||
import {ref, onMounted} from "vue";
|
import {ref, onMounted} from "vue";
|
||||||
import {Search} from '@element-plus/icons-vue'
|
import {Search} from '@element-plus/icons-vue'
|
||||||
import {ModelApi} from "../../api/model";
|
import {ModelApi} from "../../api/model";
|
||||||
|
|||||||
@ -115,15 +115,15 @@ import NewPlan from "./newPlan.vue"
|
|||||||
const eventBus: any = inject('bus')
|
const eventBus: any = inject('bus')
|
||||||
const {ipcRenderer} = require('electron')
|
const {ipcRenderer} = require('electron')
|
||||||
const router = useRouter()
|
const router = useRouter()
|
||||||
let searchParams = ref({
|
let searchParams:any = ref({
|
||||||
name: "",
|
name: "",
|
||||||
createdBy: "",
|
createdBy: "",
|
||||||
datetime: "",
|
datetime: "",
|
||||||
})
|
})
|
||||||
|
|
||||||
let pageSize = ref(5)
|
let pageSize:any = ref(5)
|
||||||
let pageNum = ref(1)
|
let pageNum:any = ref(1)
|
||||||
let total = ref(0)
|
let total:any = ref(0)
|
||||||
const back = () => {
|
const back = () => {
|
||||||
ipcRenderer.send('toggle-fullscreen', false)
|
ipcRenderer.send('toggle-fullscreen', false)
|
||||||
router.push({path: '/home'})
|
router.push({path: '/home'})
|
||||||
@ -136,7 +136,7 @@ const handleCurrentChange = (val) => {
|
|||||||
pageNum = val
|
pageNum = val
|
||||||
getList();
|
getList();
|
||||||
}
|
}
|
||||||
const getList = (params = null) => {
|
const getList = (params:any = null) => {
|
||||||
console.log(params)
|
console.log(params)
|
||||||
let formData = new FormData()
|
let formData = new FormData()
|
||||||
formData.append('pageSize', pageSize.value)
|
formData.append('pageSize', pageSize.value)
|
||||||
|
|||||||
@ -94,6 +94,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
|
//@ts-nocheck
|
||||||
import {ref, reactive} from "vue";
|
import {ref, reactive} from "vue";
|
||||||
import type {RenderContentContext, TreeInstance} from 'element-plus'
|
import type {RenderContentContext, TreeInstance} from 'element-plus'
|
||||||
import {TsApi} from "../../api/ts";
|
import {TsApi} from "../../api/ts";
|
||||||
|
|||||||
@ -47,6 +47,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
|
//@ts-nocheck
|
||||||
import {ref, reactive,} from "vue";
|
import {ref, reactive,} from "vue";
|
||||||
import {ElMessage, FormInstance, FormRules} from 'element-plus'
|
import {ElMessage, FormInstance, FormRules} from 'element-plus'
|
||||||
import {TsApi} from "../../api/ts";
|
import {TsApi} from "../../api/ts";
|
||||||
|
|||||||
@ -193,7 +193,7 @@ const bottomMenuList = ref([
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
let id = new YJ.Tools().randomString()
|
let id = new YJ.Tools().randomString()
|
||||||
let name = '点标注'
|
let name = t(`default.point`)
|
||||||
await addMapSource({
|
await addMapSource({
|
||||||
type: 'point',
|
type: 'point',
|
||||||
id: id,
|
id: id,
|
||||||
@ -231,7 +231,7 @@ const bottomMenuList = ref([
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
let id = new YJ.Tools().randomString()
|
let id = new YJ.Tools().randomString()
|
||||||
let name = '线标注'
|
let name = t(`default.line`)
|
||||||
await addMapSource({
|
await addMapSource({
|
||||||
type: 'line',
|
type: 'line',
|
||||||
id: id,
|
id: id,
|
||||||
@ -258,7 +258,7 @@ const bottomMenuList = ref([
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
let id = new YJ.Tools().randomString()
|
let id = new YJ.Tools().randomString()
|
||||||
let name = '曲线标注'
|
let name = t(`default.curve`)
|
||||||
await addMapSource({
|
await addMapSource({
|
||||||
type: 'curve',
|
type: 'curve',
|
||||||
id: id,
|
id: id,
|
||||||
@ -292,7 +292,7 @@ const bottomMenuList = ref([
|
|||||||
}
|
}
|
||||||
let id = new YJ.Tools().randomString()
|
let id = new YJ.Tools().randomString()
|
||||||
// let id = 'aaa'
|
// let id = 'aaa'
|
||||||
let name = '面标注'
|
let name = t(`default.panel`)
|
||||||
await addMapSource({
|
await addMapSource({
|
||||||
type: 'panel',
|
type: 'panel',
|
||||||
id: id,
|
id: id,
|
||||||
@ -319,7 +319,7 @@ const bottomMenuList = ref([
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
let id = new YJ.Tools().randomString()
|
let id = new YJ.Tools().randomString()
|
||||||
let name = '正圆'
|
let name = t(`bottomMenu.circle`)
|
||||||
await addMapSource({
|
await addMapSource({
|
||||||
type: 'circle',
|
type: 'circle',
|
||||||
id: id,
|
id: id,
|
||||||
@ -346,7 +346,7 @@ const bottomMenuList = ref([
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
let id = new YJ.Tools().randomString()
|
let id = new YJ.Tools().randomString()
|
||||||
let name = '椭圆'
|
let name = t(`bottomMenu.ellipse`)
|
||||||
await addMapSource({
|
await addMapSource({
|
||||||
type: 'ellipse',
|
type: 'ellipse',
|
||||||
id: id,
|
id: id,
|
||||||
@ -382,7 +382,7 @@ const bottomMenuList = ref([
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
let id = new YJ.Tools().randomString()
|
let id = new YJ.Tools().randomString()
|
||||||
let name = '矩形'
|
let name = t(`bottomMenu.rectangle`)
|
||||||
await addMapSource({
|
await addMapSource({
|
||||||
type: 'rectangle',
|
type: 'rectangle',
|
||||||
id: id,
|
id: id,
|
||||||
@ -409,7 +409,7 @@ const bottomMenuList = ref([
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
let id = new YJ.Tools().randomString()
|
let id = new YJ.Tools().randomString()
|
||||||
let name = '扇形'
|
let name = t(`bottomMenu.sector`)
|
||||||
await addMapSource({
|
await addMapSource({
|
||||||
type: 'sector',
|
type: 'sector',
|
||||||
id: id,
|
id: id,
|
||||||
@ -443,7 +443,7 @@ const bottomMenuList = ref([
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
let id = new YJ.Tools().randomString()
|
let id = new YJ.Tools().randomString()
|
||||||
let name = '集结地'
|
let name = t(`bottomMenu.rendezvous`)
|
||||||
await addMapSource({
|
await addMapSource({
|
||||||
type: 'rendezvous',
|
type: 'rendezvous',
|
||||||
id: id,
|
id: id,
|
||||||
@ -474,7 +474,7 @@ const bottomMenuList = ref([
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
let id = new YJ.Tools().randomString()
|
let id = new YJ.Tools().randomString()
|
||||||
let name = '箭头'
|
let name = t(`bottomMenu.attackArrow`)
|
||||||
await addMapSource({
|
await addMapSource({
|
||||||
type: 'attackArrow',
|
type: 'attackArrow',
|
||||||
id: id,
|
id: id,
|
||||||
@ -488,7 +488,6 @@ const bottomMenuList = ref([
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
sourceName: '钳形箭头',
|
sourceName: '钳形箭头',
|
||||||
key: 'DrawPincerArrow',
|
key: 'DrawPincerArrow',
|
||||||
@ -506,7 +505,7 @@ const bottomMenuList = ref([
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
let id = new YJ.Tools().randomString()
|
let id = new YJ.Tools().randomString()
|
||||||
let name = '双箭头'
|
let name = t(`bottomMenu.pincerArrow`)
|
||||||
await addMapSource({
|
await addMapSource({
|
||||||
type: 'pincerArrow',
|
type: 'pincerArrow',
|
||||||
id: id,
|
id: id,
|
||||||
|
|||||||
@ -13,16 +13,12 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div> -->
|
</div> -->
|
||||||
<div
|
<el-tooltip v-for="(item, i) of setList" :key="item.id" :content="t('iconTitle.' + item.name)" effect="customized" :hide-after="0">
|
||||||
class="set_item"
|
<div class="set_item" :class="{ 'last-item': i === setList.length - 1 }" @click="item.callback">
|
||||||
:title="t('iconTitle.' + item.name)"
|
|
||||||
v-for="(item, i) of setList"
|
|
||||||
:key="item.id"
|
|
||||||
:class="{ 'last-item': i === setList.length - 1 }"
|
|
||||||
@click="item.callback"
|
|
||||||
>
|
|
||||||
<svg-icon :name="item.icon" :size="20"></svg-icon>
|
<svg-icon :name="item.icon" :size="20"></svg-icon>
|
||||||
</div>
|
</div>
|
||||||
|
</el-tooltip>
|
||||||
|
|
||||||
<setPup ref="setPupRef"></setPup>
|
<setPup ref="setPupRef"></setPup>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@ -47,7 +43,7 @@ eventBus.on('settingPop', (data) => {
|
|||||||
})
|
})
|
||||||
const logout = async (e) => {
|
const logout = async (e) => {
|
||||||
let res = await LoginApi.logout()
|
let res = await LoginApi.logout()
|
||||||
if(window.earth) {
|
if (window.earth) {
|
||||||
window.earth.destroy()
|
window.earth.destroy()
|
||||||
window.earth = null
|
window.earth = null
|
||||||
}
|
}
|
||||||
@ -73,8 +69,8 @@ const setList = ref([
|
|||||||
icon: 'beidou',
|
icon: 'beidou',
|
||||||
name: 'locate',
|
name: 'locate',
|
||||||
className: 'header_public',
|
className: 'header_public',
|
||||||
dbcallback: (e) => {},
|
dbcallback: (e) => { },
|
||||||
callback: (e) => {}
|
callback: (e) => { }
|
||||||
// dbcallback: this.flyTo,
|
// dbcallback: this.flyTo,
|
||||||
// callback: this.locate,
|
// callback: this.locate,
|
||||||
},
|
},
|
||||||
@ -156,12 +152,10 @@ ipcRenderer.on('fullscreen-status-changed', (event, isFullscreen) => {
|
|||||||
top: 0;
|
top: 0;
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
width: 1px;
|
width: 1px;
|
||||||
background: linear-gradient(
|
background: linear-gradient(180deg,
|
||||||
180deg,
|
|
||||||
rgba(var(--color-base1), 0),
|
rgba(var(--color-base1), 0),
|
||||||
rgba(var(--color-base1), 1),
|
rgba(var(--color-base1), 1),
|
||||||
rgba(204, 204, 204, 0)
|
rgba(204, 204, 204, 0));
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.set_item.last-item::after {
|
.set_item.last-item::after {
|
||||||
|
|||||||
@ -386,10 +386,10 @@ const clickMenu = (item: any) => {
|
|||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
.leftBox {
|
.leftBox {
|
||||||
width: 8.3vw;
|
width: 8.3vw;
|
||||||
// height: 20vw;
|
height: 53.5vh !important;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
left: 1em;
|
left: 1em;
|
||||||
bottom: calc(7vw + 2px);
|
bottom: calc(12vh + 2px);
|
||||||
}
|
}
|
||||||
|
|
||||||
.left {
|
.left {
|
||||||
@ -421,7 +421,7 @@ const clickMenu = (item: any) => {
|
|||||||
|
|
||||||
.menus {
|
.menus {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
// height: 350px;
|
height: 50.6vh !important;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
padding: 0 8px 0 5px;
|
padding: 0 8px 0 5px;
|
||||||
|
|||||||
@ -154,7 +154,7 @@ const methodMap = {
|
|||||||
draw.start(async (err, positions) => {
|
draw.start(async (err, positions) => {
|
||||||
if (positions && positions.length > 1) {
|
if (positions && positions.length > 1) {
|
||||||
let id = new YJ.Tools().randomString()
|
let id = new YJ.Tools().randomString()
|
||||||
let name = '轨迹运动'
|
let name = t(`effect.path`)
|
||||||
await addMapSource({
|
await addMapSource({
|
||||||
type: 'path',
|
type: 'path',
|
||||||
id: id,
|
id: id,
|
||||||
@ -184,7 +184,7 @@ const methodMap = {
|
|||||||
draw.start((err, positions) => {
|
draw.start((err, positions) => {
|
||||||
if (positions.length > 1) {
|
if (positions.length > 1) {
|
||||||
let id = new YJ.Tools().randomString()
|
let id = new YJ.Tools().randomString()
|
||||||
let name = '电子围墙'
|
let name = t(`effect.wallStereoscopic`)
|
||||||
addMapSource({
|
addMapSource({
|
||||||
type: 'wallStereoscopic',
|
type: 'wallStereoscopic',
|
||||||
id: id,
|
id: id,
|
||||||
@ -203,8 +203,8 @@ const methodMap = {
|
|||||||
let draw = new YJ.Draw.DrawPolyline(window.earth)
|
let draw = new YJ.Draw.DrawPolyline(window.earth)
|
||||||
draw.start((err, positions) => {
|
draw.start((err, positions) => {
|
||||||
if (positions.length > 1) {
|
if (positions.length > 1) {
|
||||||
let id = 'aaa'
|
let id = new YJ.Tools().randomString()
|
||||||
let name = '实体墙'
|
let name = t(`effect.entityWall`)
|
||||||
addMapSource({
|
addMapSource({
|
||||||
type: 'entityWall',
|
type: 'entityWall',
|
||||||
id: id,
|
id: id,
|
||||||
@ -224,7 +224,7 @@ const methodMap = {
|
|||||||
draw.start((err, options) => {
|
draw.start((err, options) => {
|
||||||
if (options) {
|
if (options) {
|
||||||
let id = new YJ.Tools().randomString()
|
let id = new YJ.Tools().randomString()
|
||||||
let name = '扩散光波'
|
let name = t(`effect.diffuseScan`)
|
||||||
addMapSource({
|
addMapSource({
|
||||||
type: 'diffuseScan',
|
type: 'diffuseScan',
|
||||||
id: id,
|
id: id,
|
||||||
@ -251,7 +251,7 @@ const methodMap = {
|
|||||||
draw.start((err, options) => {
|
draw.start((err, options) => {
|
||||||
if (options) {
|
if (options) {
|
||||||
let id = new YJ.Tools().randomString()
|
let id = new YJ.Tools().randomString()
|
||||||
let name = '雷达光波'
|
let name = t(`effect.radarScan`)
|
||||||
addMapSource({
|
addMapSource({
|
||||||
type: 'radarScan',
|
type: 'radarScan',
|
||||||
id: id,
|
id: id,
|
||||||
@ -273,7 +273,7 @@ const methodMap = {
|
|||||||
draw.start((err, options) => {
|
draw.start((err, options) => {
|
||||||
if (options) {
|
if (options) {
|
||||||
let id = new YJ.Tools().randomString()
|
let id = new YJ.Tools().randomString()
|
||||||
let name = '立体雷达扫描'
|
let name = t(`effect.scanStereoscopic`)
|
||||||
addMapSource({
|
addMapSource({
|
||||||
type: 'scanStereoscopic',
|
type: 'scanStereoscopic',
|
||||||
id: id,
|
id: id,
|
||||||
@ -302,7 +302,7 @@ const methodMap = {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
let id = new YJ.Tools().randomString()
|
let id = new YJ.Tools().randomString()
|
||||||
let name = '多面体'
|
let name = t(`effect.polyhedronObject`)
|
||||||
addMapSource({
|
addMapSource({
|
||||||
type: 'polyhedronObject',
|
type: 'polyhedronObject',
|
||||||
id: id,
|
id: id,
|
||||||
@ -327,7 +327,7 @@ const methodMap = {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
let id = new YJ.Tools().randomString()
|
let id = new YJ.Tools().randomString()
|
||||||
let name = '水面'
|
let name = t(`effect.water`)
|
||||||
addMapSource({
|
addMapSource({
|
||||||
type: 'water',
|
type: 'water',
|
||||||
id: id,
|
id: id,
|
||||||
@ -348,7 +348,7 @@ const methodMap = {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
let id = new YJ.Tools().randomString()
|
let id = new YJ.Tools().randomString()
|
||||||
let name = '喷泉'
|
let name = t(`effect.fountain`)
|
||||||
await addMapSource({
|
await addMapSource({
|
||||||
type: 'fountain',
|
type: 'fountain',
|
||||||
id: id,
|
id: id,
|
||||||
@ -371,7 +371,7 @@ const methodMap = {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
let id = new YJ.Tools().randomString()
|
let id = new YJ.Tools().randomString()
|
||||||
let name = '火焰'
|
let name = t(`effect.fire`)
|
||||||
await addMapSource({
|
await addMapSource({
|
||||||
type: 'fire',
|
type: 'fire',
|
||||||
id: id,
|
id: id,
|
||||||
@ -394,7 +394,7 @@ const methodMap = {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
let id = new YJ.Tools().randomString()
|
let id = new YJ.Tools().randomString()
|
||||||
let name = '烟雾'
|
let name = t(`effect.smoke`)
|
||||||
await addMapSource({
|
await addMapSource({
|
||||||
type: 'smoke',
|
type: 'smoke',
|
||||||
id: id,
|
id: id,
|
||||||
@ -421,7 +421,7 @@ const methodMap = {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
let id = new YJ.Tools().randomString()
|
let id = new YJ.Tools().randomString()
|
||||||
let name = '喷射水柱'
|
let name = t(`effect.waterL`)
|
||||||
await addMapSource({
|
await addMapSource({
|
||||||
type: 'waterL',
|
type: 'waterL',
|
||||||
id: id,
|
id: id,
|
||||||
@ -451,7 +451,7 @@ const methodMap = {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
let id = new YJ.Tools().randomString()
|
let id = new YJ.Tools().randomString()
|
||||||
let name = '飞线'
|
let name = t(`effect.flyLine`)
|
||||||
addMapSource({
|
addMapSource({
|
||||||
type: 'flyLine',
|
type: 'flyLine',
|
||||||
id: id,
|
id: id,
|
||||||
@ -472,7 +472,7 @@ const methodMap = {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
let id = new YJ.Tools().randomString()
|
let id = new YJ.Tools().randomString()
|
||||||
let name = '爆炸'
|
let name = t(`effect.explosion`)
|
||||||
await addMapSource({
|
await addMapSource({
|
||||||
type: 'explosion',
|
type: 'explosion',
|
||||||
id: id,
|
id: id,
|
||||||
@ -964,7 +964,7 @@ defineExpose({
|
|||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.leftSideSecond {
|
.leftSideSecond {
|
||||||
display: none;
|
display: none;
|
||||||
height: 365px;
|
// height: 365px;
|
||||||
width: 240px;
|
width: 240px;
|
||||||
// background: url('@/assets/images/secondBj.png') no-repeat;
|
// background: url('@/assets/images/secondBj.png') no-repeat;
|
||||||
// background-size: 100% 100%;
|
// background-size: 100% 100%;
|
||||||
|
|||||||
@ -174,12 +174,14 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { ref, reactive, onBeforeUnmount } from 'vue'
|
import { ref, reactive, onBeforeUnmount } from 'vue'
|
||||||
import { inject } from 'vue'
|
import { inject } from 'vue'
|
||||||
|
import { useI18n } from 'vue-i18n'
|
||||||
import Dialog from '@/components/dialog/baseDialog.vue'
|
import Dialog from '@/components/dialog/baseDialog.vue'
|
||||||
import { app } from 'electron'
|
import { app } from 'electron'
|
||||||
import { TreeApi } from '@/api/tree'
|
import { TreeApi } from '@/api/tree'
|
||||||
import { useTreeNode } from '../tree/hooks/treeNode'
|
import { useTreeNode } from '../tree/hooks/treeNode'
|
||||||
import { ElMessage } from 'element-plus'
|
import { ElMessage } from 'element-plus'
|
||||||
|
|
||||||
|
const { t } = useI18n()
|
||||||
const { cusAddNodes } = useTreeNode()
|
const { cusAddNodes } = useTreeNode()
|
||||||
|
|
||||||
const baseDialog: any = ref(null)
|
const baseDialog: any = ref(null)
|
||||||
@ -218,7 +220,7 @@ const draw = (data) => {
|
|||||||
let paramsData: any = {
|
let paramsData: any = {
|
||||||
params: data,
|
params: data,
|
||||||
id,
|
id,
|
||||||
sourceName: '漫游路径',
|
sourceName: t(`default.roam`),
|
||||||
sourceType: 'roam',
|
sourceType: 'roam',
|
||||||
parentId: parentId
|
parentId: parentId
|
||||||
}
|
}
|
||||||
|
|||||||
@ -62,12 +62,12 @@ const shpTotalDict: any = reactive(
|
|||||||
|
|
||||||
//获取物资类型
|
//获取物资类型
|
||||||
const getResource = () => {
|
const getResource = () => {
|
||||||
let formData = new FormData()
|
let formData:any = new FormData()
|
||||||
formData.append('pageNum', 1)
|
formData.append('pageNum', 1)
|
||||||
formData.append('pageSize', 10000)
|
formData.append('pageSize', 10000)
|
||||||
formData.append('name', '')
|
formData.append('name', '')
|
||||||
MaterialApi.getList(formData).then((res) => {
|
MaterialApi.getList(formData).then((res) => {
|
||||||
shpTotalDict = res.data.data.map((item) => {
|
shpTotalDict.value = res.data.data.map((item) => {
|
||||||
return item.name
|
return item.name
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|||||||
@ -31,7 +31,9 @@ const open = () => {
|
|||||||
baseDialog.value?.open()
|
baseDialog.value?.open()
|
||||||
}
|
}
|
||||||
const confirm = () => {
|
const confirm = () => {
|
||||||
console.log('121212121', baseDialog.value)
|
if(!text.value) {
|
||||||
|
return
|
||||||
|
}
|
||||||
baseDialog.value?.close()
|
baseDialog.value?.close()
|
||||||
let name = text.value
|
let name = text.value
|
||||||
text.value = ''
|
text.value = ''
|
||||||
|
|||||||
@ -31,6 +31,9 @@ const open = () => {
|
|||||||
baseDialog.value?.open()
|
baseDialog.value?.open()
|
||||||
}
|
}
|
||||||
const confirm = () => {
|
const confirm = () => {
|
||||||
|
if(!text.value) {
|
||||||
|
return
|
||||||
|
}
|
||||||
baseDialog.value?.close()
|
baseDialog.value?.close()
|
||||||
let name = text.value
|
let name = text.value
|
||||||
text.value = ''
|
text.value = ''
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<Dialog ref="baseDialog" title="轨迹运动属性" left="calc(50% - 160px)" top="calc(50% - 120px)" className="trajectory-motion"
|
<Dialog ref="baseDialog" title="轨迹运动属性" left="180px"
|
||||||
|
top="100px" className="trajectory-motion"
|
||||||
:closeCallback="closeCallback">
|
:closeCallback="closeCallback">
|
||||||
<template #content>
|
<template #content>
|
||||||
<span class="custom-divider"></span>
|
<span class="custom-divider"></span>
|
||||||
|
|||||||
@ -1,6 +1,5 @@
|
|||||||
import {renderMethods} from "./renderTreeNode";
|
import { renderMethods } from "./renderTreeNode";
|
||||||
|
const { ipcRenderer, BrowserWindow } = require('electron')
|
||||||
const {ipcRenderer, BrowserWindow} = require('electron')
|
|
||||||
export const useTreeNode = () => {
|
export const useTreeNode = () => {
|
||||||
//定义树形节点的属性
|
//定义树形节点的属性
|
||||||
const nodeType = {
|
const nodeType = {
|
||||||
@ -169,12 +168,6 @@ export const useTreeNode = () => {
|
|||||||
// detailFun: get_detail_layer,
|
// detailFun: get_detail_layer,
|
||||||
// allowChildren: false,
|
// allowChildren: false,
|
||||||
},
|
},
|
||||||
picture: {
|
|
||||||
rightMenus: ['edit', 'del']
|
|
||||||
// render: renderPicture,
|
|
||||||
// detailFun: get_detail_picture,
|
|
||||||
// allowChildren: false,
|
|
||||||
},
|
|
||||||
model: {
|
model: {
|
||||||
rightMenus: ['edit', 'del', 'setView', 'resetView']
|
rightMenus: ['edit', 'del', 'setView', 'resetView']
|
||||||
// detailFun: get_detail_glb,
|
// detailFun: get_detail_glb,
|
||||||
@ -267,22 +260,22 @@ export const useTreeNode = () => {
|
|||||||
// detailFun: get_detail_czml,
|
// detailFun: get_detail_czml,
|
||||||
// allowChildren: true,
|
// allowChildren: true,
|
||||||
},
|
},
|
||||||
ArcgisWXImagery: {
|
arcgisWximagery: {
|
||||||
// render: renderArcgisWXImagery,
|
// render: renderArcgisWXImagery,
|
||||||
rightMenus: ['edit', 'del', 'layerRaise', 'layerLower', 'layerToTop', 'layerToBottom']
|
rightMenus: ['edit', 'del', 'layerRaise', 'layerLower', 'layerToTop', 'layerToBottom']
|
||||||
// detailFun: get_detail_null,
|
// detailFun: get_detail_null,
|
||||||
},
|
},
|
||||||
ArcgisBLUEImagery: {
|
arcgisBlueImagery: {
|
||||||
// render: renderArcgisBLUEImagery,
|
// render: renderArcgisBLUEImagery,
|
||||||
rightMenus: ['edit', 'del', 'layerRaise', 'layerLower', 'layerToTop', 'layerToBottom']
|
rightMenus: ['edit', 'del', 'layerRaise', 'layerLower', 'layerToTop', 'layerToBottom']
|
||||||
// detailFun: get_detail_null,
|
// detailFun: get_detail_null,
|
||||||
},
|
},
|
||||||
GDLWImagery: {
|
gdlwImagery: {
|
||||||
// render: renderGDLWImagery,
|
// render: renderGDLWImagery,
|
||||||
rightMenus: ['edit', 'del', 'layerRaise', 'layerLower', 'layerToTop', 'layerToBottom']
|
rightMenus: ['edit', 'del', 'layerRaise', 'layerLower', 'layerToTop', 'layerToBottom']
|
||||||
// detailFun: get_detail_null,
|
// detailFun: get_detail_null,
|
||||||
},
|
},
|
||||||
GDSLImagery: {
|
gdslImagery: {
|
||||||
// render: renderGDSLImagery,
|
// render: renderGDSLImagery,
|
||||||
rightMenus: ['edit', 'del', 'layerRaise', 'layerLower', 'layerToTop', 'layerToBottom']
|
rightMenus: ['edit', 'del', 'layerRaise', 'layerLower', 'layerToTop', 'layerToBottom']
|
||||||
// detailFun: get_detail_null,
|
// detailFun: get_detail_null,
|
||||||
@ -447,7 +440,7 @@ export const useTreeNode = () => {
|
|||||||
const cusNodeIcon = async (node) => {
|
const cusNodeIcon = async (node) => {
|
||||||
let availablePort = await ipcRenderer.invoke('get-available-port');
|
let availablePort = await ipcRenderer.invoke('get-available-port');
|
||||||
let type
|
let type
|
||||||
if (node.sourcePath || node.sourceType === 'vector') {
|
if(node.sourcePath || node.sourceType === 'vector') {
|
||||||
let path = node.sourcePath ? node.sourcePath : JSON.parse(node.params).path
|
let path = node.sourcePath ? node.sourcePath : JSON.parse(node.params).path
|
||||||
// 获取最后一个点的位置
|
// 获取最后一个点的位置
|
||||||
const lastDotIndex = path.lastIndexOf('.');
|
const lastDotIndex = path.lastIndexOf('.');
|
||||||
@ -458,22 +451,34 @@ export const useTreeNode = () => {
|
|||||||
// 提取后缀并转换为小写进行比较
|
// 提取后缀并转换为小写进行比较
|
||||||
const extension = path.slice(lastDotIndex + 1).toLowerCase();
|
const extension = path.slice(lastDotIndex + 1).toLowerCase();
|
||||||
type = extension
|
type = extension
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
type = node.sourceType || node.type;
|
type = node.sourceType || node.type;
|
||||||
}
|
}
|
||||||
console.log("----------", type);
|
console.log("----------", type);
|
||||||
let name = [
|
let name = [
|
||||||
"GDSLImagery",
|
"gdslImagery",
|
||||||
"GDLWImagery",
|
"gdlwImagery",
|
||||||
"ArcgisBLUEImagery",
|
"arcgisBlueImagery",
|
||||||
"ArcgisWXImagery",
|
"arcgisWximagery",
|
||||||
].includes(type)
|
].includes(type)
|
||||||
? "layer"
|
? "layer"
|
||||||
: type;
|
: type;
|
||||||
if (type == "Terrain") name = "terrain";
|
if (type == "Terrain") name = "terrain";
|
||||||
if (type == "road" && node.detail.imageType == "arrowRoad")
|
if (type == "road" && node.detail.imageType == "arrowRoad")
|
||||||
name = "lineDrawing";
|
name = "lineDrawing";
|
||||||
return (type === 'directory' || type === 'FeatureCollection') ? undefined : `http://localhost:${availablePort}/icon/${name}.png`;
|
|
||||||
|
let strokeWidth = 0.1
|
||||||
|
if(type === 'ellipse') {
|
||||||
|
strokeWidth = 1.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
// return (type === 'directory' || type === 'FeatureCollection') ? undefined : `http://localhost:${availablePort}/icon/${name}.png`;
|
||||||
|
return (type === 'directory' || type === 'FeatureCollection') ? undefined : `
|
||||||
|
<svg class="svg-icon" style="color: rgba(var(--color-base2), 1);margin-top: 1px;width:100%;height:100%;fill: currentColor !important;stroke: currentColor !important;stroke-width: ${strokeWidth} !important;shape-rendering: geometricPrecision;">
|
||||||
|
<use xlink:href="#icon-${name}" />
|
||||||
|
</svg>
|
||||||
|
`;
|
||||||
};
|
};
|
||||||
/**
|
/**
|
||||||
* 获取选中节点
|
* 获取选中节点
|
||||||
@ -504,7 +509,7 @@ export const useTreeNode = () => {
|
|||||||
const cusAddNodes = async (treeObj: any, parentNodeId: any, newNodes: any, isSilent?: any) => {
|
const cusAddNodes = async (treeObj: any, parentNodeId: any, newNodes: any, isSilent?: any) => {
|
||||||
for (let i = 0; i < newNodes.length; i++) {
|
for (let i = 0; i < newNodes.length; i++) {
|
||||||
if (newNodes[i].sourceType != "directory") {
|
if (newNodes[i].sourceType != "directory") {
|
||||||
newNodes[i].icon = await cusNodeIcon(newNodes[i]);
|
newNodes[i].svg = await cusNodeIcon(newNodes[i]);
|
||||||
YJ.Global.splitScreen.setActiveId([newNodes[i].id]);
|
YJ.Global.splitScreen.setActiveId([newNodes[i].id]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -533,7 +538,7 @@ export const useTreeNode = () => {
|
|||||||
allNodes = allNodes.concat(treeObj.transformToArray(node))
|
allNodes = allNodes.concat(treeObj.transformToArray(node))
|
||||||
})
|
})
|
||||||
allNodes.forEach((node: any) => {
|
allNodes.forEach((node: any) => {
|
||||||
if (node.sourceType !== 'FeatureCollection' && node.sourceType !== 'Feature') {
|
if(node.sourceType !== 'FeatureCollection' && node.sourceType !== 'Feature') {
|
||||||
_idSet.add(node.id)
|
_idSet.add(node.id)
|
||||||
}
|
}
|
||||||
treeObj.removeNode(node)
|
treeObj.removeNode(node)
|
||||||
@ -563,7 +568,7 @@ export const useTreeNode = () => {
|
|||||||
return siblings
|
return siblings
|
||||||
}
|
}
|
||||||
|
|
||||||
function cusUpdateNode({id, sourceName, params}) {
|
function cusUpdateNode({ id, sourceName, params }) {
|
||||||
let node = window.treeObj.getNodeByParam(
|
let node = window.treeObj.getNodeByParam(
|
||||||
"id",
|
"id",
|
||||||
id,
|
id,
|
||||||
@ -635,7 +640,6 @@ export const useTreeNode = () => {
|
|||||||
|
|
||||||
return arr
|
return arr
|
||||||
}
|
}
|
||||||
|
|
||||||
function findParentId(treeObj: any) {
|
function findParentId(treeObj: any) {
|
||||||
if (!treeObj) {
|
if (!treeObj) {
|
||||||
return -1;
|
return -1;
|
||||||
@ -653,7 +657,6 @@ export const useTreeNode = () => {
|
|||||||
}
|
}
|
||||||
return selectedNode.id;
|
return selectedNode.id;
|
||||||
}
|
}
|
||||||
|
|
||||||
function findTreeIndex(treeObj: any) {
|
function findTreeIndex(treeObj: any) {
|
||||||
if (!treeObj) {
|
if (!treeObj) {
|
||||||
return 0;
|
return 0;
|
||||||
|
|||||||
@ -592,10 +592,10 @@ defineExpose({
|
|||||||
position: absolute;
|
position: absolute;
|
||||||
color: #ffffff;
|
color: #ffffff;
|
||||||
right: 0;
|
right: 0;
|
||||||
top: 50%;
|
top: calc(50% - 40px);
|
||||||
transform: translateY(-50%);
|
transform: translateY(-50%);
|
||||||
width: 17vw;
|
width: 17vw;
|
||||||
height: 33vw;
|
height: calc(100% - 420px);
|
||||||
|
|
||||||
.box1 {
|
.box1 {
|
||||||
width: 90%;
|
width: 90%;
|
||||||
@ -651,7 +651,7 @@ defineExpose({
|
|||||||
|
|
||||||
.ztree_lg {
|
.ztree_lg {
|
||||||
padding: 10px 15px;
|
padding: 10px 15px;
|
||||||
min-height: 22vw;
|
height: calc(100% - 2.2em - 3.5vh - 1.8vw);
|
||||||
|
|
||||||
.ztreeBox {
|
.ztreeBox {
|
||||||
//min-height: 43vh;
|
//min-height: 43vh;
|
||||||
|
|||||||
@ -52,57 +52,55 @@
|
|||||||
<div class="service" v-if="serviceDialog">
|
<div class="service" v-if="serviceDialog">
|
||||||
<div class="contentBox">
|
<div class="contentBox">
|
||||||
<div class="titleBox">
|
<div class="titleBox">
|
||||||
<span class="title">服务设置</span>
|
<span class="title"></span>
|
||||||
<span class="closeBox">
|
<span class="closeBox">
|
||||||
<span @click="cancel">✕</span>
|
<span @click="cancel">✕</span>
|
||||||
</span>
|
</span>
|
||||||
<div class="hr"></div>
|
|
||||||
</div>
|
</div>
|
||||||
|
<h1 class="hello">Hello!</h1>
|
||||||
|
<h2 class="greet"><span>欢迎您使用</span>实景三维电子沙盘系统</h2>
|
||||||
<div class="serviceContent">
|
<div class="serviceContent">
|
||||||
<div class="tab">
|
<el-tabs v-model="selectedService" class="demo-tabs" @tab-click="handleSelect">
|
||||||
<template v-for="item in serviceOptions">
|
<el-tab-pane v-for="item in serviceOptions" :label="item.name" :name="item.name"></el-tab-pane>
|
||||||
<span :class="['tab-item', selectedService == item.name ? 'activeService' : '']"
|
</el-tabs>
|
||||||
@click="selectedService = item.name">{{ item.name }}</span>
|
|
||||||
</template>
|
|
||||||
</div>
|
|
||||||
<div class="tabPanel">
|
<div class="tabPanel">
|
||||||
<template v-if="selectedService == '接口服务'">
|
<template v-if="selectedService == '接口服务'">
|
||||||
<div class="item">
|
<div class="item">
|
||||||
<span class="itemLabel">服务选择:</span>
|
<span class="itemLabel">服务选择</span>
|
||||||
<el-select class="select" v-model="servVal">
|
<el-select class="select" popper-class="login-select-popper" v-model="servVal">
|
||||||
<el-option size="mini" v-for="item in servOptions" :key="item.value" :label="item.name"
|
<el-option size="mini" v-for="item in servOptions" :key="item.value" :label="item.name"
|
||||||
:value="item.name">
|
:value="item.name">
|
||||||
</el-option>
|
</el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</div>
|
</div>
|
||||||
<div class="prototype" v-if="servVal == '网络'">
|
<div class="item prototype" v-if="servVal == '网络'">
|
||||||
<span class="itemLabel">协议:</span><el-input style="width: 200px" v-model="prototype"></el-input>
|
<span class="itemLabel">协议</span><el-input v-model="prototype"></el-input>
|
||||||
</div>
|
</div>
|
||||||
<div class="item ip">
|
<div class="item ip">
|
||||||
<template v-if="servVal == '单机'">
|
<template v-if="servVal == '单机'">
|
||||||
<span class="itemLabel">IP:</span>{{ localip }}
|
<span class="itemLabel">IP</span>
|
||||||
|
<el-input v-model="localip" disabled></el-input>
|
||||||
</template>
|
</template>
|
||||||
<template v-if="servVal == '网络'">
|
<template v-if="servVal == '网络'">
|
||||||
<span class="itemLabel">IP:</span>
|
<span class="itemLabel">IP</span>
|
||||||
<el-input style="width: 200px" v-model="ip"></el-input>
|
<el-input v-model="ip"></el-input>
|
||||||
</template>
|
</template>
|
||||||
</div>
|
</div>
|
||||||
<div class="item port">
|
<div class="item port">
|
||||||
<template v-if="servVal == '单机'">
|
<template v-if="servVal == '单机'">
|
||||||
<span class="itemLabel">端口:</span>
|
<span class="itemLabel">端口</span>
|
||||||
<el-input style="width: 200px" v-model="localport"></el-input>
|
<el-input v-model="localport"></el-input>
|
||||||
</template>
|
</template>
|
||||||
<template v-if="servVal == '网络'">
|
<template v-if="servVal == '网络'">
|
||||||
<span class="itemLabel">端口:</span>
|
<span class="itemLabel">端口</span>
|
||||||
<el-input style="width: 200px" v-model="port"></el-input>
|
<el-input v-model="port"></el-input>
|
||||||
</template>
|
</template>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<template v-if="selectedService == '北斗串口'">
|
<template v-if="selectedService == '北斗串口'">
|
||||||
<div class="item">
|
<div class="item">
|
||||||
<span class="itemLabel">串口选择:</span>
|
<span class="itemLabel">串口选择</span>
|
||||||
<el-select class="select" v-model="gpsVal">
|
<el-select class="select" popper-class="login-select-popper" v-model="gpsVal">
|
||||||
<el-option size="mini" v-for="item in gpsOptions" :key="item.value" :label="item.Product"
|
<el-option size="mini" v-for="item in gpsOptions" :key="item.value" :label="item.Product"
|
||||||
:value="item.Name">
|
:value="item.Name">
|
||||||
</el-option>
|
</el-option>
|
||||||
@ -113,7 +111,6 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="btn">
|
<div class="btn">
|
||||||
<div class="hr"></div>
|
|
||||||
<el-button style="margin: 5px 0" size="mini" @click="submit">确定</el-button>
|
<el-button style="margin: 5px 0" size="mini" @click="submit">确定</el-button>
|
||||||
<el-button size="mini" @click="cancel">关闭</el-button>
|
<el-button size="mini" @click="cancel">关闭</el-button>
|
||||||
</div>
|
</div>
|
||||||
@ -161,6 +158,11 @@ const {
|
|||||||
cancel,
|
cancel,
|
||||||
initialize
|
initialize
|
||||||
} = useSetUp() // 服务设置逻辑
|
} = useSetUp() // 服务设置逻辑
|
||||||
|
|
||||||
|
const handleSelect = (tab) => {
|
||||||
|
selectedService.value = tab.props.name
|
||||||
|
}
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
loginInit()
|
loginInit()
|
||||||
initialize()
|
initialize()
|
||||||
@ -231,13 +233,13 @@ onMounted(() => {
|
|||||||
.service {
|
.service {
|
||||||
.el-input__wrapper {
|
.el-input__wrapper {
|
||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
border: 0.2px solid rgba(var(--color-base1), 1);
|
border: 0.2px solid rgba(204, 204, 204, 0.4);
|
||||||
box-shadow: 0 0 0 0.2px rgba(var(--color-base1), 1) inset !important;
|
box-shadow: 0 0 0 0.2px rgba(204, 204, 204, 0.4) inset !important;
|
||||||
/* 新增此行 */
|
/* 新增此行 */
|
||||||
}
|
}
|
||||||
|
|
||||||
.el-input__inner {
|
.el-input__inner {
|
||||||
color: #fff;
|
color: rgba(0, 66, 66, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
// .el-checkbox__label {
|
// .el-checkbox__label {
|
||||||
@ -250,15 +252,16 @@ onMounted(() => {
|
|||||||
// }
|
// }
|
||||||
.el-select__wrapper {
|
.el-select__wrapper {
|
||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
border: 0.2px solid rgba(var(--color-base1), 1);
|
border: 0.2px solid rgba(204, 204, 204, 0.4);
|
||||||
box-shadow: 0 0 0 0.2px rgba(var(--color-base1), 1) inset !important;
|
box-shadow: 0 0 0 0.2px rgba(204, 204, 204, 0.4) inset !important;
|
||||||
/* 新增此行 */
|
/* 新增此行 */
|
||||||
}
|
}
|
||||||
|
|
||||||
.el-select__placeholder,
|
.el-select__placeholder,
|
||||||
.el-select__tags-text {
|
.el-select__tags-text {
|
||||||
color: #fff !important;
|
color: rgba(0, 66, 66, 1) !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
@ -363,30 +366,52 @@ onMounted(() => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.service {
|
#app {
|
||||||
|
.service {
|
||||||
z-index: 999;
|
z-index: 999;
|
||||||
width: 100vw;
|
width: 100vw;
|
||||||
height: 100vh;
|
height: 100vh;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
|
|
||||||
.contentBox {
|
.contentBox {
|
||||||
border: 1.5px solid;
|
padding: 0 40px 40px 40px;
|
||||||
|
background-color: #ffffff;
|
||||||
backdrop-filter: blur(2px);
|
backdrop-filter: blur(2px);
|
||||||
background: linear-gradient(0deg, rgba(var(--color-base1), 0.2) 0%, rgba(var(--color-base1), 0) 100%), rgba(0, 0, 0, 0.6);
|
|
||||||
width: 450px;
|
width: 450px;
|
||||||
height: 400px;
|
|
||||||
position: absolute;
|
position: absolute;
|
||||||
color: #fff;
|
color: rgba(51, 51, 51, 1);
|
||||||
left: 50%;
|
left: 50%;
|
||||||
top: 50%;
|
top: 29%;
|
||||||
transform: translate(-50%, -50%);
|
transform: translate(-50%, 0%);
|
||||||
border-image: linear-gradient(to bottom, rgb(var(--color-base1)) 6.25%, rgb(var(--color-base1)) 100%) 1;
|
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
|
|
||||||
|
.hello {
|
||||||
|
color: rgba(0, 66, 66, 1);
|
||||||
|
font-family: 'ddin';
|
||||||
|
font-size: 30px;
|
||||||
|
font-weight: 700;
|
||||||
|
line-height: 30px;
|
||||||
|
margin-bottom: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.greet {
|
||||||
|
color: rgba(0, 66, 66, 1);
|
||||||
|
font-family: 'SourceHanSans';
|
||||||
|
font-size: 18px;
|
||||||
|
line-height: 18px;
|
||||||
|
font-weight: 500;
|
||||||
|
|
||||||
|
span {
|
||||||
|
color: rgba(153, 153, 153, 1);
|
||||||
|
font-weight: 500;
|
||||||
|
margin-right: 5px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.titleBox {
|
.titleBox {
|
||||||
height: 50px;
|
height: 40px;
|
||||||
|
|
||||||
.title {
|
.title {
|
||||||
line-height: 50px;
|
line-height: 50px;
|
||||||
@ -399,30 +424,66 @@ onMounted(() => {
|
|||||||
right: 0;
|
right: 0;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
width: 35px;
|
width: 30px;
|
||||||
height: 33px;
|
height: 30px;
|
||||||
border-radius: 0 0 0 90%;
|
border-radius: 0 0 0 90%;
|
||||||
background: rgba(var(--color-base1), 1);
|
background: rgba(var(--color-base1), 1);
|
||||||
|
|
||||||
&>span {
|
&>span {
|
||||||
font-size: 1rem;
|
font-size: 1rem;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
right: 5px;
|
right: 0px;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
|
color: rgba(0, 66, 66, 1);
|
||||||
|
font-weight: 700;
|
||||||
|
width: 25px;
|
||||||
|
height: 25px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.hr {
|
|
||||||
width: 89%;
|
|
||||||
margin: 0 auto;
|
|
||||||
border-bottom: 1px solid rgba(204, 204, 204, 0.2);
|
|
||||||
}
|
|
||||||
|
|
||||||
.serviceContent {
|
.serviceContent {
|
||||||
|
margin-top: 30px;
|
||||||
flex: auto;
|
flex: auto;
|
||||||
//border: 1px solid red;
|
|
||||||
padding: 5px 0;
|
::v-deep .el-tabs {
|
||||||
|
.el-tabs__header {
|
||||||
|
margin-bottom: 5px;
|
||||||
|
|
||||||
|
.el-tabs__nav-wrap {
|
||||||
|
.el-tabs__nav-scroll {
|
||||||
|
.el-tabs__nav {
|
||||||
|
.el-tabs__active-bar {
|
||||||
|
background: rgba(0, 66, 66, 1);
|
||||||
|
height: 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-tabs__item {
|
||||||
|
color: rgba(153, 153, 153, 1);
|
||||||
|
font-size: 16px;
|
||||||
|
font-weight: 500;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-tabs__item:focus-visible {
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-tabs__item.is-active {
|
||||||
|
font-size: 18px;
|
||||||
|
color: rgba(0, 66, 66, 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-tabs__nav-wrap::after {
|
||||||
|
height: 1px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.tab {
|
.tab {
|
||||||
border-radius: 5px;
|
border-radius: 5px;
|
||||||
@ -449,53 +510,54 @@ onMounted(() => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.itemLabel {
|
.itemLabel {
|
||||||
width: 85px;
|
width: 64px;
|
||||||
|
flex: 0 0 64px;
|
||||||
|
white-space: nowrap;
|
||||||
text-align: right;
|
text-align: right;
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
|
margin-right: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.tabPanel {
|
.tabPanel {
|
||||||
width: 80%;
|
margin: 0;
|
||||||
margin: 0 auto;
|
|
||||||
|
|
||||||
.item {
|
.item {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
margin: 15px 0;
|
margin: 15px 0;
|
||||||
|
|
||||||
.select {
|
.select {}
|
||||||
//flex: auto;
|
|
||||||
width: 200px;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
&:after {
|
|
||||||
display: block;
|
|
||||||
position: absolute;
|
|
||||||
content: '';
|
|
||||||
left: -1.5px;
|
|
||||||
top: -6px;
|
|
||||||
width: 70.5px;
|
|
||||||
height: 6px;
|
|
||||||
opacity: 1;
|
|
||||||
background: rgba(var(--color-base1), 1);
|
|
||||||
clip-path: polygon(0 0, calc(100% - 3px) 0, 100% 6px, 0 6px);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn {
|
.btn {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
|
|
||||||
button {
|
button {
|
||||||
border: 1px solid rgba(var(--color-base1), 0.5) !important;
|
width: 166px;
|
||||||
background: rgba(var(--color-base1), 0.2) !important;
|
height: 40px;
|
||||||
color: #fff !important;
|
border-radius: 0;
|
||||||
|
::v-deep span {
|
||||||
|
font-weight: 500;
|
||||||
|
}
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
border: 1px solid rgba(var(--color-base1), 1) !important;
|
border: 1px solid rgba(var(--color-base1), 1) !important;
|
||||||
color: rgba(var(--color-base1), 1) !important;
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
button:nth-child(1) {
|
||||||
|
background: rgba(0, 255, 255, 1) !important;
|
||||||
|
border-color: #ff000000 !important;
|
||||||
|
color: rgba(0, 66, 66, 1) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
button:nth-child(2) {
|
||||||
|
background: rgba(255, 255, 255, 1) !important;
|
||||||
|
border-color: rgba(204, 204, 204, 0.4) !important;
|
||||||
|
color: rgba(102, 102, 102, 1) !important;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user