Merge branch 'zyl' of http://xny.yj-3d.com:3000/zhouyulong/electron-4 into zyl
This commit is contained in:
2
.gitignore
vendored
2
.gitignore
vendored
@ -2,6 +2,8 @@ node_modules
|
|||||||
dist
|
dist
|
||||||
build
|
build
|
||||||
out
|
out
|
||||||
|
resources
|
||||||
|
ffplay
|
||||||
.history
|
.history
|
||||||
.DS_Store
|
.DS_Store
|
||||||
.vscode
|
.vscode
|
||||||
|
|||||||
@ -1 +0,0 @@
|
|||||||
41b/ujShRZRf9Aa433FD3uyIZuxWSSqXWXlc2dyQfJ75ED0HNbadcdsPF5CaMuJ624E+iLBfS14muki3Kp1qv3N0KPVdc0TjJDyrO+AVfwE3xW3RZy00SBFwUgG/tIU6bBTw4XijzGn57R1nl7djDeP1sx04fzNeWSLujfPS4hzwLryTr1ScTPGegLiv1C+rXsbkAxFf47uMIGGK0M2VBZTA9+UoajQ1PHwDUdI7Sfo2JRzkCFW8v6WI1jCNPaFyLypkZtybW+yeNEhnp/jeYw==
|
|
||||||
@ -1 +0,0 @@
|
|||||||
41b/ujShRZRf9Aa433FD3uyIZuxWSSqXWXlc2dyQfJ75ED0HNbadcdsPF5CaMuJ624E+iLBfS14muki3Kp1qv3N0KPVdc0TjJDyrO+AVfwE3xW3RZy00SBFwUgG/tIU6bBTw4XijzGn57R1nl7djDeP1sx04fzNeWSLujfPS4hzwLryTr1ScTPGegLiv1C+rXsbkAxFf47uMIGGK0M2VBZTA9+UoajQ1PHwDUdI7Sfo2JRzkCFW8v6WI1jCNPaFyLypkZtybW+yeNEhnp/jeYw==1
|
|
||||||
@ -1 +0,0 @@
|
|||||||
41b/ujShRZRf9Aa433FD3uyIZuxWSSqXWXlc2dyQfJ75ED0HNbadcdsPF5CaMuJ624E+iLBfS14muki3Kp1qv3N0KPVdc0TjJDyrO+AVfwE3xW3RZy00SBFwUgG/tIU6bBTw4XijzGn57R1nl7djDeP1sx04fzNeWSLujfPS4hzwLryTr1ScTPGegLiv1C+rXsbkAxFf47uMIGGK0M2VBZTA9+UoajQ1PHwDUdI7Sfo2JRzkCFW8v6WI1jCNPaFyLypkZtybW+yeNEhnp/jeYw==
|
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 6.8 MiB |
@ -128,6 +128,19 @@ function createWindow(): void {
|
|||||||
allowRunningInsecureContent: true
|
allowRunningInsecureContent: true
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
mainWindow.webContents.on('before-input-event', (event, input) => {
|
||||||
|
// 条件:仅按了 Alt 键(无其他键组合、不是组合键、不是重复按键)
|
||||||
|
if (
|
||||||
|
input.key === 'Alt' && // 按键是 Alt
|
||||||
|
!input.ctrl && // 未按 Ctrl
|
||||||
|
!input.shift && // 未按 Shift
|
||||||
|
!input.meta && // 未按 Meta(Win/Mac)
|
||||||
|
!input.isComposing && // 非输入法组合态
|
||||||
|
input.type === 'keyDown' // 仅拦截按下事件
|
||||||
|
) {
|
||||||
|
event.preventDefault(); // 阻止 Alt 键的默认行为(激活菜单)
|
||||||
|
}
|
||||||
|
});
|
||||||
let ymlBatPath = process.env.NODE_ENV === 'development' ? path.resolve(app.getAppPath(), 'resources', 'java', 'app', 'application.yml') : path.join(process.resourcesPath, 'app.asar.unpacked', 'resources', 'java', 'app', 'application.yml')
|
let ymlBatPath = process.env.NODE_ENV === 'development' ? path.resolve(app.getAppPath(), 'resources', 'java', 'app', 'application.yml') : path.join(process.resourcesPath, 'app.asar.unpacked', 'resources', 'java', 'app', 'application.yml')
|
||||||
ymlBatPath = process.platform === 'win32' ? ymlBatPath.replace(/^(\w:)/, '/$1') : ymlBatPath
|
ymlBatPath = process.platform === 'win32' ? ymlBatPath.replace(/^(\w:)/, '/$1') : ymlBatPath
|
||||||
let ymlPath = ymlBatPath.substring(1, 200)
|
let ymlPath = ymlBatPath.substring(1, 200)
|
||||||
@ -457,6 +470,19 @@ function createWindow(): void {
|
|||||||
});
|
});
|
||||||
|
|
||||||
// 6. 记录窗口映射
|
// 6. 记录窗口映射
|
||||||
|
newWindow.webContents.on('before-input-event', (event, input) => {
|
||||||
|
// 条件:仅按了 Alt 键(无其他键组合、不是组合键、不是重复按键)
|
||||||
|
if (
|
||||||
|
input.key === 'Alt' && // 按键是 Alt
|
||||||
|
!input.ctrl && // 未按 Ctrl
|
||||||
|
!input.shift && // 未按 Shift
|
||||||
|
!input.meta && // 未按 Meta(Win/Mac)
|
||||||
|
!input.isComposing && // 非输入法组合态
|
||||||
|
input.type === 'keyDown' // 仅拦截按下事件
|
||||||
|
) {
|
||||||
|
event.preventDefault(); // 阻止 Alt 键的默认行为(激活菜单)
|
||||||
|
}
|
||||||
|
});
|
||||||
_winMap.set(id, newWindow.id);
|
_winMap.set(id, newWindow.id);
|
||||||
|
|
||||||
return _winMap;
|
return _winMap;
|
||||||
@ -663,7 +689,10 @@ if (!gotTheLock) {
|
|||||||
let string = data.toString().trim()
|
let string = data.toString().trim()
|
||||||
// console.log(`批处理输出: ${string}`);
|
// console.log(`批处理输出: ${string}`);
|
||||||
// 临时处理:应用启动失败或项目文档地址出现时,认为服务初始化完成;后续需后端配合
|
// 临时处理:应用启动失败或项目文档地址出现时,认为服务初始化完成;后续需后端配合
|
||||||
if (string.indexOf('APPLICATION FAILED TO START') !== -1 || string.indexOf('项目文档地址') !== -1) {
|
if (string.indexOf('APPLICATION FAILED TO START') !== -1) {
|
||||||
|
mainWindow.webContents.send('program-init', '后端服务未正常启动,尝试更换地址或端口')
|
||||||
|
}
|
||||||
|
else if (string.indexOf('项目文档地址') !== -1) {
|
||||||
if (!isSeverInit) {
|
if (!isSeverInit) {
|
||||||
isSeverInit = true
|
isSeverInit = true
|
||||||
if (isAppInit) {
|
if (isAppInit) {
|
||||||
|
|||||||
@ -178,6 +178,7 @@
|
|||||||
color: rgba(var(--color-base1), 1) !important;
|
color: rgba(var(--color-base1), 1) !important;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
.YJ-custom-base-dialog button:not(button[disabled]):hover svg {
|
.YJ-custom-base-dialog button:not(button[disabled]):hover svg {
|
||||||
fill: rgba(var(--color-base1), 1) !important;
|
fill: rgba(var(--color-base1), 1) !important;
|
||||||
}
|
}
|
||||||
@ -341,7 +342,7 @@
|
|||||||
|
|
||||||
.YJ-custom-base-dialog>.content input,
|
.YJ-custom-base-dialog>.content input,
|
||||||
.YJ-custom-base-dialog>.content textarea {
|
.YJ-custom-base-dialog>.content textarea {
|
||||||
font-size: 16px;
|
font-size: 14px;
|
||||||
background-color: rgba(0, 0, 0, 0.5);
|
background-color: rgba(0, 0, 0, 0.5);
|
||||||
border: 1px solid rgba(var(--color-base1), 0.5);
|
border: 1px solid rgba(var(--color-base1), 0.5);
|
||||||
border-radius: 5px;
|
border-radius: 5px;
|
||||||
@ -2534,8 +2535,8 @@
|
|||||||
.YJ-custom-base-dialog.polygon>.content .attribute-content-vr .table .tr .td:nth-child(3),
|
.YJ-custom-base-dialog.polygon>.content .attribute-content-vr .table .tr .td:nth-child(3),
|
||||||
.YJ-custom-base-dialog.polygon>.content .attribute-content-rtmp .table .tr .th:nth-child(3),
|
.YJ-custom-base-dialog.polygon>.content .attribute-content-rtmp .table .tr .th:nth-child(3),
|
||||||
.YJ-custom-base-dialog.polygon>.content .attribute-content-rtmp .table .tr .td:nth-child(3) {
|
.YJ-custom-base-dialog.polygon>.content .attribute-content-rtmp .table .tr .td:nth-child(3) {
|
||||||
flex: 0 0 165px;
|
flex: 0 0 175px;
|
||||||
width: 165px;
|
width: 175px;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2618,8 +2619,8 @@
|
|||||||
.YJ-custom-base-dialog.assemble>.content .attribute-content-vr .table .tr .td:nth-child(3),
|
.YJ-custom-base-dialog.assemble>.content .attribute-content-vr .table .tr .td:nth-child(3),
|
||||||
.YJ-custom-base-dialog.assemble>.content .attribute-content-rtmp .table .tr .th:nth-child(3),
|
.YJ-custom-base-dialog.assemble>.content .attribute-content-rtmp .table .tr .th:nth-child(3),
|
||||||
.YJ-custom-base-dialog.assemble>.content .attribute-content-rtmp .table .tr .td:nth-child(3) {
|
.YJ-custom-base-dialog.assemble>.content .attribute-content-rtmp .table .tr .td:nth-child(3) {
|
||||||
flex: 0 0 165px;
|
flex: 0 0 175px;
|
||||||
width: 165px;
|
width: 175px;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2678,8 +2679,8 @@
|
|||||||
.YJ-custom-base-dialog.pincerArrow>.content .attribute-content-vr .table .tr .td:nth-child(3),
|
.YJ-custom-base-dialog.pincerArrow>.content .attribute-content-vr .table .tr .td:nth-child(3),
|
||||||
.YJ-custom-base-dialog.pincerArrow>.content .attribute-content-rtmp .table .tr .th:nth-child(3),
|
.YJ-custom-base-dialog.pincerArrow>.content .attribute-content-rtmp .table .tr .th:nth-child(3),
|
||||||
.YJ-custom-base-dialog.pincerArrow>.content .attribute-content-rtmp .table .tr .td:nth-child(3) {
|
.YJ-custom-base-dialog.pincerArrow>.content .attribute-content-rtmp .table .tr .td:nth-child(3) {
|
||||||
flex: 0 0 165px;
|
flex: 0 0 175px;
|
||||||
width: 165px;
|
width: 175px;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2761,7 +2762,7 @@
|
|||||||
|
|
||||||
/* 折线 */
|
/* 折线 */
|
||||||
.YJ-custom-base-dialog.polyline>.content {
|
.YJ-custom-base-dialog.polyline>.content {
|
||||||
width: 580px;
|
width: 600px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.YJ-custom-base-dialog.polyline>.content>div #dashTextureDom {
|
.YJ-custom-base-dialog.polyline>.content>div #dashTextureDom {
|
||||||
@ -3796,7 +3797,7 @@
|
|||||||
.yj-custom-icon {
|
.yj-custom-icon {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
width: 22px;
|
width: 22px;
|
||||||
height: 10px;
|
height: 18px;
|
||||||
margin-right: 5px;
|
margin-right: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -80,16 +80,16 @@ window.newFuzzySearch = function (
|
|||||||
hideAllNode(allNodes)
|
hideAllNode(allNodes)
|
||||||
nodeChildren.forEach((item) => {
|
nodeChildren.forEach((item) => {
|
||||||
if (item.oldname) {
|
if (item.oldname) {
|
||||||
item.sourceName = item.oldname
|
item.sourceName = item.oldname + ''
|
||||||
zTreeObj.updateNode(item)
|
zTreeObj.updateNode(item)
|
||||||
}
|
}
|
||||||
if (contrast) {
|
if (contrast) {
|
||||||
if ((item.sourceName || '').indexOf(contrast) > -1) {
|
if (((item.sourceName || '')+'').indexOf(contrast) > -1) {
|
||||||
console.log('sourceName包含关键字')
|
console.log('sourceName包含关键字')
|
||||||
console.log(item)
|
console.log(item)
|
||||||
console.log(item.sourceName)
|
console.log(item.sourceName)
|
||||||
|
|
||||||
item.oldname = item.sourceName
|
item.oldname = item.sourceName + ''
|
||||||
item.highlight = true
|
item.highlight = true
|
||||||
let F = new RegExp(contrast, 'gi')
|
let F = new RegExp(contrast, 'gi')
|
||||||
item.sourceName = item.oldname.replace(F, function (h) {
|
item.sourceName = item.oldname.replace(F, function (h) {
|
||||||
|
|||||||
@ -263,6 +263,8 @@ export default {
|
|||||||
rtmp: 'rtmp',
|
rtmp: 'rtmp',
|
||||||
物资: '物资',
|
物资: '物资',
|
||||||
编辑内容: '编辑内容',
|
编辑内容: '编辑内容',
|
||||||
|
请输入设备名称进行搜索: '请输入设备名称进行搜索',
|
||||||
|
请输入物资名称进行搜索: '请输入物资名称进行搜索',
|
||||||
打开文本编辑器: '打开文本编辑器',
|
打开文本编辑器: '打开文本编辑器',
|
||||||
添加链接: '添加链接',
|
添加链接: '添加链接',
|
||||||
名称: '名称',
|
名称: '名称',
|
||||||
|
|||||||
@ -47,16 +47,16 @@ export default {
|
|||||||
excel: 'Excel'
|
excel: 'Excel'
|
||||||
},
|
},
|
||||||
firstMenu: {
|
firstMenu: {
|
||||||
measure: 'measure',
|
measure: 'Measure',
|
||||||
tool: 'tool',
|
tool: 'Tool',
|
||||||
effect: 'effect',
|
effect: 'Special effects',
|
||||||
bigData: 'bigData',
|
bigData: 'bigData',
|
||||||
modelLibrary: 'modelLibrary',
|
modelLibrary: 'Model',
|
||||||
situation: 'situationLibrary',
|
situation: 'Scheme',
|
||||||
onlinePictureSource: 'onlinePictureSource',
|
onlinePictureSource: 'onlinePictureSource',
|
||||||
analysis: 'analysis',
|
analysis: 'Analyze',
|
||||||
militaryMark: 'militaryMark',
|
militaryMark: 'militaryMark',
|
||||||
ersanwei: 'two and three-dimensional',
|
ersanwei: '2D/3D',
|
||||||
junbiao3d: '3D military logo'
|
junbiao3d: '3D military logo'
|
||||||
},
|
},
|
||||||
effect: {
|
effect: {
|
||||||
@ -155,7 +155,8 @@ export default {
|
|||||||
authorize: 'Authorization Information',
|
authorize: 'Authorization Information',
|
||||||
setting: 'System settings',
|
setting: 'System settings',
|
||||||
project: 'Engineering Information',
|
project: 'Engineering Information',
|
||||||
device: 'device management',
|
device: 'Device management',
|
||||||
|
materials: 'Materials management',
|
||||||
modelManage: 'Model management',
|
modelManage: 'Model management',
|
||||||
graphLabelManage: 'Military Icon Management',
|
graphLabelManage: 'Military Icon Management',
|
||||||
photoManage: 'Icon Management',
|
photoManage: 'Icon Management',
|
||||||
@ -262,6 +263,8 @@ export default {
|
|||||||
rtmp: 'rtmp',
|
rtmp: 'rtmp',
|
||||||
物资: 'Materials',
|
物资: 'Materials',
|
||||||
编辑内容: 'Edit content',
|
编辑内容: 'Edit content',
|
||||||
|
请输入设备名称进行搜索: 'Please enter the device name to search',
|
||||||
|
请输入物资名称进行搜索: 'Please enter the materials name to search',
|
||||||
打开文本编辑器: 'Open the editor',
|
打开文本编辑器: 'Open the editor',
|
||||||
添加链接: 'Add Link',
|
添加链接: 'Add Link',
|
||||||
名称: 'Name',
|
名称: 'Name',
|
||||||
|
|||||||
@ -155,6 +155,7 @@ export default {
|
|||||||
setting: '系統設置',
|
setting: '系統設置',
|
||||||
project: '工程管理',
|
project: '工程管理',
|
||||||
device: '設備管理',
|
device: '設備管理',
|
||||||
|
materials: '物資管理',
|
||||||
modelManage: '模型管理',
|
modelManage: '模型管理',
|
||||||
graphLabelManage: '軍標管理',
|
graphLabelManage: '軍標管理',
|
||||||
photoManage: '圖標管理',
|
photoManage: '圖標管理',
|
||||||
@ -261,6 +262,8 @@ export default {
|
|||||||
rtmp: 'rtmp',
|
rtmp: 'rtmp',
|
||||||
物资: '物資',
|
物资: '物資',
|
||||||
编辑内容: '編輯內容',
|
编辑内容: '編輯內容',
|
||||||
|
请输入设备名称进行搜索: '請輸入設備名稱進行搜索',
|
||||||
|
请输入物资名称进行搜索: '請輸入物資名稱進行搜索',
|
||||||
打开文本编辑器: '打開文本編輯器',
|
打开文本编辑器: '打開文本編輯器',
|
||||||
添加链接: '添加鏈接',
|
添加链接: '添加鏈接',
|
||||||
名称: '名稱',
|
名称: '名稱',
|
||||||
|
|||||||
@ -44,7 +44,7 @@ export const GraphApi = {
|
|||||||
})
|
})
|
||||||
},
|
},
|
||||||
//军标类型列表
|
//军标类型列表
|
||||||
modelTypeList: async (data: any) => {
|
modelTypeList: async (data: any = {}) => {
|
||||||
return await request.get({
|
return await request.get({
|
||||||
url: `/militaryLibrary/militaryTypeTree`,
|
url: `/militaryLibrary/militaryTypeTree`,
|
||||||
params: data,
|
params: data,
|
||||||
|
|||||||
@ -44,7 +44,7 @@ export const ModelApi = {
|
|||||||
})
|
})
|
||||||
},
|
},
|
||||||
//模型类型列表
|
//模型类型列表
|
||||||
modelTypeList: async (data: any) => {
|
modelTypeList: async (data: any = {}) => {
|
||||||
|
|
||||||
return await request.get({
|
return await request.get({
|
||||||
url: `/modelLibrary/modelTypeList`,
|
url: `/modelLibrary/modelTypeList`,
|
||||||
|
|||||||
@ -1,3 +1,4 @@
|
|||||||
|
// @ts-nocheck
|
||||||
import request from '@/axios/request'
|
import request from '@/axios/request'
|
||||||
//图标库
|
//图标库
|
||||||
export const PhotoApi = {
|
export const PhotoApi = {
|
||||||
@ -44,7 +45,7 @@ export const PhotoApi = {
|
|||||||
})
|
})
|
||||||
},
|
},
|
||||||
//图标类型列表
|
//图标类型列表
|
||||||
modelTypeList: async (data: any) => {
|
modelTypeList: async (data?: any) => {
|
||||||
return await request.get({
|
return await request.get({
|
||||||
url: `/iconLibrary/iconTypeTree`,
|
url: `/iconLibrary/iconTypeTree`,
|
||||||
params: data,
|
params: data,
|
||||||
|
|||||||
@ -27,6 +27,7 @@ export const TreeApi = {
|
|||||||
url: `/source/addOtherSource`,
|
url: `/source/addOtherSource`,
|
||||||
data
|
data
|
||||||
}).then((res) => {
|
}).then((res) => {
|
||||||
|
ElMessage.closeAll()
|
||||||
ElMessage({
|
ElMessage({
|
||||||
message: '添加成功',
|
message: '添加成功',
|
||||||
type: 'success'
|
type: 'success'
|
||||||
@ -50,6 +51,7 @@ export const TreeApi = {
|
|||||||
url: `/source/update`,
|
url: `/source/update`,
|
||||||
data
|
data
|
||||||
}).then((res) => {
|
}).then((res) => {
|
||||||
|
ElMessage.closeAll()
|
||||||
ElMessage({
|
ElMessage({
|
||||||
message: '操作成功',
|
message: '操作成功',
|
||||||
type: 'success'
|
type: 'success'
|
||||||
|
|||||||
@ -44,12 +44,12 @@ service.interceptors.request.use(
|
|||||||
const key = getRequestKey(config)
|
const key = getRequestKey(config)
|
||||||
|
|
||||||
// 检查是否有相同请求正在进行
|
// 检查是否有相同请求正在进行
|
||||||
if (pendingRequests.has(key)) {
|
// if (pendingRequests.has(key)) {
|
||||||
ElMessage({
|
// ElMessage({
|
||||||
message: '当前请求已存在,请稍后再试',
|
// message: '当前请求已存在,请稍后再试',
|
||||||
type: 'warning'
|
// type: 'warning'
|
||||||
})
|
// })
|
||||||
}
|
// }
|
||||||
|
|
||||||
const controller = new AbortController()
|
const controller = new AbortController()
|
||||||
config.signal = controller.signal
|
config.signal = controller.signal
|
||||||
|
|||||||
@ -2,12 +2,12 @@ import {TreeApi} from '@/api/tree'
|
|||||||
import { useTreeNode } from '../views/components/tree/hooks/treeNode'
|
import { useTreeNode } from '../views/components/tree/hooks/treeNode'
|
||||||
import { initMapData } from './initMapData'
|
import { initMapData } from './initMapData'
|
||||||
|
|
||||||
export const addMapSource = async ({type, id, sourceName = '未命名对象', opt = {}}) => {
|
export const addMapSource = async ({ type, id, sourceName = '未命名对象', opt = {} }, cd:any = null) => {
|
||||||
const { cusAddNodes } = useTreeNode()
|
const { cusAddNodes } = useTreeNode()
|
||||||
if (!id) {
|
if (!id) {
|
||||||
id = new YJ.Tools().randomString()
|
id = new YJ.Tools().randomString()
|
||||||
}
|
}
|
||||||
let options: any = await initMapData(type, opt, null)
|
let options: any = await initMapData(type, opt, cd)
|
||||||
let selectedNodes = window.treeObj.getSelectedNodes()
|
let selectedNodes = window.treeObj.getSelectedNodes()
|
||||||
let node = selectedNodes && selectedNodes[selectedNodes.length - 1]
|
let node = selectedNodes && selectedNodes[selectedNodes.length - 1]
|
||||||
function getParentId(nd: any) {
|
function getParentId(nd: any) {
|
||||||
|
|||||||
@ -20,6 +20,7 @@ export const initMapData = async (type, data, cd) => {
|
|||||||
case 'vrImage':
|
case 'vrImage':
|
||||||
console.log(data, 'dataccccc')
|
console.log(data, 'dataccccc')
|
||||||
entityObject = new YJ.Obj.BillboardObject(window.earth, data)
|
entityObject = new YJ.Obj.BillboardObject(window.earth, data)
|
||||||
|
cd && cd(entityObject)
|
||||||
console.log('entityObject', entityObject)
|
console.log('entityObject', entityObject)
|
||||||
// entityObject.options.billboard.defaultImage = ''
|
// entityObject.options.billboard.defaultImage = ''
|
||||||
break
|
break
|
||||||
@ -62,11 +63,12 @@ export const initMapData = async (type, data, cd) => {
|
|||||||
case 'terrain':
|
case 'terrain':
|
||||||
data.host = baseURL
|
data.host = baseURL
|
||||||
entityObject = new YJ.Obj.Terrain(window.earth, data)
|
entityObject = new YJ.Obj.Terrain(window.earth, data)
|
||||||
|
cd && cd(entityObject)
|
||||||
break
|
break
|
||||||
case 'layer':
|
case 'layer':
|
||||||
data.host = baseURL
|
data.host = baseURL
|
||||||
console.log('layer', data)
|
|
||||||
entityObject = new YJ.Obj.Layer(window.earth, data)
|
entityObject = new YJ.Obj.Layer(window.earth, data)
|
||||||
|
cd && cd(entityObject)
|
||||||
break
|
break
|
||||||
case 'gdslImagery':
|
case 'gdslImagery':
|
||||||
data.host = baseURL
|
data.host = baseURL
|
||||||
@ -177,11 +179,14 @@ export const initMapData = async (type, data, cd) => {
|
|||||||
break
|
break
|
||||||
case 'geojson':
|
case 'geojson':
|
||||||
entityObject = new YJ.Obj.GeoJson(window.earth, data)
|
entityObject = new YJ.Obj.GeoJson(window.earth, data)
|
||||||
entityObject.on()
|
entityObject.on().then(()=>{
|
||||||
|
cd && cd(entityObject)
|
||||||
|
})
|
||||||
break
|
break
|
||||||
case 'vector':
|
case 'vector':
|
||||||
let node = window.treeObj.getNodeByParam("id", data.id, null);
|
let node = window.treeObj.getNodeByParam("id", data.id, null);
|
||||||
entityObject = renderVector(node, false)
|
entityObject = renderVector(node, false)
|
||||||
|
cd && cd(entityObject)
|
||||||
break
|
break
|
||||||
default:
|
default:
|
||||||
break
|
break
|
||||||
|
|||||||
@ -201,8 +201,8 @@ const moveDiv = () => {
|
|||||||
newLeft = windowWidth - oMoveDivWidth
|
newLeft = windowWidth - oMoveDivWidth
|
||||||
}
|
}
|
||||||
|
|
||||||
if (newTop <= 0) {
|
if (newTop <= 97) {
|
||||||
newTop = 0
|
newTop = 97
|
||||||
} else if (newTop + oMoveDivHeight > windowHeight) {
|
} else if (newTop + oMoveDivHeight > windowHeight) {
|
||||||
newTop = windowHeight - oMoveDivHeight
|
newTop = windowHeight - oMoveDivHeight
|
||||||
}
|
}
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
|
Before Width: | Height: | Size: 7.6 KiB After Width: | Height: | Size: 5.2 KiB |
@ -1,6 +1,6 @@
|
|||||||
<!--:style="'left:'+(index*Store.scales.distanceOfTicTiny+Store.scales.originOffset)+'px'"-->
|
<!--:style="'left:'+(index*Store.scales.distanceOfTicTiny+Store.scales.originOffset)+'px'"-->
|
||||||
<template>
|
<template>
|
||||||
<div class="timeScale" @click="clickTime">
|
<div class="timeScale" @click="clickTime" @wheel="wheel">
|
||||||
<!-- 循环数组,确保key唯一 -->
|
<!-- 循环数组,确保key唯一 -->
|
||||||
<template v-for="(_, index) in ticTiny" :key="index">
|
<template v-for="(_, index) in ticTiny" :key="index">
|
||||||
<span
|
<span
|
||||||
@ -23,13 +23,19 @@
|
|||||||
import {ref, watchEffect} from 'vue'
|
import {ref, watchEffect} from 'vue'
|
||||||
|
|
||||||
const props = defineProps(['ticTiny', 'ticMain', 'distanceOfTicTiny', 'distanceOfTicMain', 'originOffset', 'originMainOffset'])
|
const props = defineProps(['ticTiny', 'ticMain', 'distanceOfTicTiny', 'distanceOfTicMain', 'originOffset', 'originMainOffset'])
|
||||||
|
const eventBus: any = inject('bus')
|
||||||
const clickTime = (e) => {
|
const clickTime = (e) => {
|
||||||
console.log("点击时间轴", e)
|
console.log("点击时间轴", e)
|
||||||
let offset = window['tsObj']._Store._scales.scrollLeft + (e.screenX - 400)
|
let offset = window['tsObj']._Store._scales.scrollLeft + (e.screenX - 400)
|
||||||
window['tsObj']._Store.currentTimestamp = window['tsObj']._Store._startTimestamp + (offset / window['tsObj']._Store._scales.preSecondPx) * 1000
|
window['tsObj']._Store.currentTimestamp = window['tsObj']._Store._startTimestamp + (offset / window['tsObj']._Store._scales.preSecondPx) * 1000
|
||||||
window['tsObj']._Store.setCursorLeft(window['tsObj']._Store._currentTimestamp)
|
window['tsObj']._Store.setCursorLeft(window['tsObj']._Store._currentTimestamp)
|
||||||
}
|
}
|
||||||
|
const wheel = (event) => {
|
||||||
|
let num = event.wheelDelta > 0 ? 1 : -1;
|
||||||
|
eventBus.emit('wheel-time', num)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
let ticLabel = (val) => {
|
let ticLabel = (val) => {
|
||||||
let timeLabels = []
|
let timeLabels = []
|
||||||
/* console.log("timeLabels", this.Store.scales.ticMain)
|
/* console.log("timeLabels", this.Store.scales.ticMain)
|
||||||
|
|||||||
@ -84,6 +84,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
|
// @ts-nocheck
|
||||||
import {ZoomIn, ZoomOut, VideoPlay, VideoPause, RefreshLeft} from '@element-plus/icons-vue'
|
import {ZoomIn, ZoomOut, VideoPlay, VideoPause, RefreshLeft} from '@element-plus/icons-vue'
|
||||||
|
|
||||||
import EventParams from "./components/eventParams.vue"
|
import EventParams from "./components/eventParams.vue"
|
||||||
@ -106,7 +107,7 @@ if (instance) {
|
|||||||
// 注册拖拽指令
|
// 注册拖拽指令
|
||||||
// 1. 创建ref引用,绑定到el-popover组件
|
// 1. 创建ref引用,绑定到el-popover组件
|
||||||
// const multiplierPopover = ref<InstanceType<typeof ElPopover> | null>(null);
|
// const multiplierPopover = ref<InstanceType<typeof ElPopover> | null>(null);
|
||||||
const multiplierPopover = ref(null);
|
const multiplierPopover: any = ref(null);
|
||||||
// 控制 popover 显示/隐藏的核心变量(替代实例方法)
|
// 控制 popover 显示/隐藏的核心变量(替代实例方法)
|
||||||
const isPopoverShow = ref(false);
|
const isPopoverShow = ref(false);
|
||||||
let multipliers = [16, 8, 4, 2, 1, 0.5, 0.25]
|
let multipliers = [16, 8, 4, 2, 1, 0.5, 0.25]
|
||||||
@ -357,6 +358,12 @@ const handleDrag = (newLeft: number) => {
|
|||||||
}*/
|
}*/
|
||||||
};
|
};
|
||||||
let add = (num) => {
|
let add = (num) => {
|
||||||
|
// 不存在事件时,缩放无效
|
||||||
|
if (window['tsObj']._Store._tasks.length == 0) {
|
||||||
|
ElMessage({type: "warning", message: "不存在事件时,禁止操作"})
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// 大格12个取值,小格间距3个取值,level,8-1
|
// 大格12个取值,小格间距3个取值,level,8-1
|
||||||
if (window['tsObj']._Clock._status == 'play') {
|
if (window['tsObj']._Clock._status == 'play') {
|
||||||
ElMessage({message: "态势推演中,暂停或停止后再试"})
|
ElMessage({message: "态势推演中,暂停或停止后再试"})
|
||||||
@ -376,7 +383,10 @@ let add = (num) => {
|
|||||||
onBeforeUnmount(() => {
|
onBeforeUnmount(() => {
|
||||||
// props.TSOBJ._Clock.stopAnimation()
|
// props.TSOBJ._Clock.stopAnimation()
|
||||||
})
|
})
|
||||||
|
eventBus.on('wheel-time', (num) => {
|
||||||
|
console.log("wheel", num)
|
||||||
|
add(num)
|
||||||
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
|
|||||||
@ -42,7 +42,6 @@
|
|||||||
<mouseRight></mouseRight>
|
<mouseRight></mouseRight>
|
||||||
|
|
||||||
<!-- 方案描述编辑框 -->
|
<!-- 方案描述编辑框 -->
|
||||||
<!--<div class="dialogBox">-->
|
|
||||||
<el-dialog width="20vw" v-model="isShowPup" :modal="false" draggable>
|
<el-dialog width="20vw" v-model="isShowPup" :modal="false" draggable>
|
||||||
<template #header>
|
<template #header>
|
||||||
<div class="set_pup_header">
|
<div class="set_pup_header">
|
||||||
@ -100,12 +99,74 @@
|
|||||||
<div class="set_detail">
|
<div class="set_detail">
|
||||||
<el-input type="textarea" :rows="7" v-model="des_detail"></el-input>
|
<el-input type="textarea" :rows="7" v-model="des_detail"></el-input>
|
||||||
</div>
|
</div>
|
||||||
<div style="text-align: right;">
|
<div style="text-align: right;margin-top: 15px">
|
||||||
<el-button @click="submit">保存</el-button>
|
<el-button @click="submit">保存</el-button>
|
||||||
<el-button @click="isShowPup=false">取消</el-button>
|
<el-button @click="isShowPup=false">取消</el-button>
|
||||||
</div>
|
</div>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
<!--</div>-->
|
<!-- 立体文字内容 -->
|
||||||
|
<el-dialog width="30vw" v-model="showStandText" :modal="false" draggable>
|
||||||
|
<template #header>
|
||||||
|
<div class="set_pup_header">
|
||||||
|
<div class="system_title">
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="229" height="35"
|
||||||
|
viewBox="0 0 229 35" fill="none" preserveAspectRatio="none">
|
||||||
|
<path
|
||||||
|
d="M74 34L85 34L99.5 6L88.5 6L74 34ZM92 34L103 34L117.5 6L106.5 6L92 34ZM111 34L122 34L136.5 6L125.5 6L111 34ZM140 34L129 34L143.5 6L154.5 6L140 34ZM148 34L159 34L173.5 6L162.5 6L148 34ZM177 34L166 34L180.5 6L191.5 6L177 34ZM185 34L196 34L210.5 6L199.5 6L185 34ZM214 34L203 34L217.5 6L228.5 6L214 34ZM0 34L11 34L25.5 6.5L14.5 6.5L0 34ZM18 34L29 34L43.5 6.5L32.5 6.5L18 34ZM37 34L48 34L62.5 6.5L51.5 6.5L37 34ZM66 34L55 34L69.5 6.5L80.5 6.5L66 34Z"
|
||||||
|
fill-rule="evenodd" fill="url(#linear_fill_2442_1053)"/>
|
||||||
|
<rect x="0" y="0" width="229" height="34" fill="url(#linear_fill_2442_1054)"/>
|
||||||
|
<g clip-path="url(#clip-path-2442_1055)">
|
||||||
|
<path
|
||||||
|
d="M10.3993 32.7333L10.666 33L10.666 21L9.33267 22.3333L4.66602 27L5.66602 28L10.3993 32.7333ZM9.33267 29.6667L6.73267 27L9.33267 24.3333L9.33267 29.6667Z"
|
||||||
|
fill="rgb(var(--color-base1))"/>
|
||||||
|
<g opacity="0.5">
|
||||||
|
<path
|
||||||
|
d="M7.39934 32.7333L7.66602 33L7.66602 21L6.33267 22.3333L1.66602 27L2.66602 28L7.39934 32.7333ZM6.33267 29.6667L3.73267 27L6.33267 24.3333L6.33267 29.6667Z"
|
||||||
|
fill="rgb(var(--color-base1))"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g clip-path="url(#clip-path-2442_1059)">
|
||||||
|
<path
|
||||||
|
d="M218.601 32.7333L218.334 33L218.334 21L219.667 22.3333L224.334 27L223.334 28L218.601 32.7333ZM219.667 29.6667L222.267 27L219.667 24.3333L219.667 29.6667Z"
|
||||||
|
fill="rgb(var(--color-base1))"/>
|
||||||
|
<g opacity="0.5">
|
||||||
|
<path
|
||||||
|
d="M221.601 32.7333L221.334 33L221.334 21L222.667 22.3333L227.334 27L226.334 28L221.601 32.7333ZM222.667 29.6667L225.267 27L222.667 24.3333L222.667 29.6667Z"
|
||||||
|
fill="rgb(var(--color-base1))"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<defs>
|
||||||
|
<linearGradient id="linear_fill_2442_1053" x1="119.1239013671875" y1="33.99998474121094"
|
||||||
|
x2="119.1231689453125" y2="6" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop offset="0" stop-color="rgb(var(--color-base1))" stop-opacity="0.2"/>
|
||||||
|
<stop offset="1" stop-color="rgb(var(--color-base1))" stop-opacity="0"/>
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient id="linear_fill_2442_1054" x1="0" y1="17" x2="229" y2="17"
|
||||||
|
gradientUnits="userSpaceOnUse">
|
||||||
|
<stop offset="0" stop-color="rgb(var(--color-base1))" stop-opacity="0"/>
|
||||||
|
<stop offset="0.4891" stop-color="rgb(var(--color-base1))" stop-opacity="0.4"/>
|
||||||
|
<stop offset="1" stop-color="rgb(var(--color-base1))" stop-opacity="0"/>
|
||||||
|
</linearGradient>
|
||||||
|
<clipPath id="clip-path-2442_1055">
|
||||||
|
<path d="M0 19L0 35L16 35L16 19L0 19Z" fill="white"/>
|
||||||
|
</clipPath>
|
||||||
|
<clipPath id="clip-path-2442_1059">
|
||||||
|
<path d="M229 19L229 35L213 35L213 19L229 19Z" fill="white"/>
|
||||||
|
</clipPath>
|
||||||
|
</defs>
|
||||||
|
</svg>
|
||||||
|
立体文字
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<div class="set_detail">
|
||||||
|
<el-input type="textarea" v-model="standText"></el-input>
|
||||||
|
</div>
|
||||||
|
<div style="text-align: right;margin-top: 15px">
|
||||||
|
<el-button @click="()=>{submitStandText(true)}">保存</el-button>
|
||||||
|
<el-button @click="()=>{submitStandText(false)}">取消</el-button>
|
||||||
|
</div>
|
||||||
|
</el-dialog>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@ -128,7 +189,10 @@ import {$changeComponentShow} from "../../utils/communication";
|
|||||||
|
|
||||||
const planInfo = ref({})
|
const planInfo = ref({})
|
||||||
const isShowPup = ref(false)
|
const isShowPup = ref(false)
|
||||||
|
const showStandText = ref(false)
|
||||||
|
const currentDrawItem = ref({})
|
||||||
const des_detail = ref("")
|
const des_detail = ref("")
|
||||||
|
const standText = ref("")
|
||||||
const stamp = ref("")
|
const stamp = ref("")
|
||||||
const rightMenus = ref([
|
const rightMenus = ref([
|
||||||
|
|
||||||
@ -200,6 +264,16 @@ let submit = () => {
|
|||||||
isShowPup.value = false
|
isShowPup.value = false
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
let submitStandText = (flag) => {
|
||||||
|
showStandText.value = false
|
||||||
|
/* let res = {
|
||||||
|
currentDrawItem: currentDrawItem.value,
|
||||||
|
source_name: flag ? standText.value : ""
|
||||||
|
}*/
|
||||||
|
currentDrawItem.value.source_name = flag ? standText.value : ""
|
||||||
|
eventBus.emit('standText-value', currentDrawItem.value)
|
||||||
|
}
|
||||||
|
|
||||||
// 通过planID获取方案包含的所有事件
|
// 通过planID获取方案包含的所有事件
|
||||||
let getEventList = () => {
|
let getEventList = () => {
|
||||||
let events: any = []
|
let events: any = []
|
||||||
@ -226,10 +300,14 @@ let getEventList = () => {
|
|||||||
newTS(params, events)
|
newTS(params, events)
|
||||||
}
|
}
|
||||||
eventBus.on('delete-event', (ids) => {
|
eventBus.on('delete-event', (ids) => {
|
||||||
console.log(ids)
|
|
||||||
tsOBJ.value._Store._tasks = tsOBJ.value._Store._tasks.filter(item => !ids.includes(item.id))
|
tsOBJ.value._Store._tasks = tsOBJ.value._Store._tasks.filter(item => !ids.includes(item.id))
|
||||||
|
|
||||||
})
|
})
|
||||||
|
eventBus.on('open-standText', (currentDrawItemres) => {
|
||||||
|
standText.value = ""
|
||||||
|
showStandText.value = true
|
||||||
|
currentDrawItem.value = currentDrawItemres
|
||||||
|
})
|
||||||
eventBus.on('add-event', (task) => {
|
eventBus.on('add-event', (task) => {
|
||||||
tsOBJ.value._Store._tasks = [...tsOBJ.value._Store._tasks, task]
|
tsOBJ.value._Store._tasks = [...tsOBJ.value._Store._tasks, task]
|
||||||
})
|
})
|
||||||
|
|||||||
@ -85,6 +85,7 @@ interface Tree {
|
|||||||
children?: Tree[]
|
children?: Tree[]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const eventBus: any = inject('bus')
|
||||||
const treeRef = ref<TreeInstance>()
|
const treeRef = ref<TreeInstance>()
|
||||||
const defaultProps = {
|
const defaultProps = {
|
||||||
children: 'children',
|
children: 'children',
|
||||||
@ -106,7 +107,13 @@ const tabs = [
|
|||||||
{name: "钳形箭头", source_name: "钳形箭头", funName: 'DrawPincerArrow', type: "pincerArrow", positionLength: 5}
|
{name: "钳形箭头", source_name: "钳形箭头", funName: 'DrawPincerArrow', type: "pincerArrow", positionLength: 5}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{name: "特效", dataType: 'list', children: [/*{name: "火焰"}*/]},
|
{
|
||||||
|
name: "特效", dataType: 'list', children: [
|
||||||
|
{name: "火焰", source_name: "火焰", funName: 'DrawPoint', type: "fire"},
|
||||||
|
{name: "喷射水柱", source_name: "喷射水柱", funName: 'DrawPolyline', type: "waterL", option: {number: 2}},
|
||||||
|
{name: "立体文字", source_name: "", funName: 'DrawPolyline', type: "standText", positionLength: 2}
|
||||||
|
]
|
||||||
|
},
|
||||||
]
|
]
|
||||||
let treeData = ref<Tree[]>([])
|
let treeData = ref<Tree[]>([])
|
||||||
// 模型类型
|
// 模型类型
|
||||||
@ -203,22 +210,40 @@ let getGraphTypeList = async () => {
|
|||||||
graphTypes.value = res.data
|
graphTypes.value = res.data
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
eventBus.on('standText-value', obj => {
|
||||||
|
console.log("obj", obj)
|
||||||
|
addMarker(obj, false)
|
||||||
|
})
|
||||||
// 添加标绘
|
// 添加标绘
|
||||||
let addMarker = (item) => {
|
let addMarker = (item, needSendEvent = true) => {
|
||||||
if (window['tsObj']._Clock._status == 'play') {
|
if (window['tsObj']._Clock._status == 'play') {
|
||||||
ElMessage({message: "态势推演中,暂停或停止后再试"})
|
ElMessage({message: "态势推演中,暂停或停止后再试"})
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
let nodes = getSelectedNodes(window['treeObj'])
|
|
||||||
console.log("绘制", item)
|
console.log("绘制", item)
|
||||||
console.log("获取选中的节点", nodes)
|
// 立体文字的节点名称需要先弹框输入文本内容
|
||||||
|
if (item.type == 'standText' && item.source_name == '') {
|
||||||
|
if (needSendEvent)
|
||||||
|
eventBus.emit('open-standText', item)
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
let nodes = getSelectedNodes(window['treeObj'])
|
||||||
|
// console.log("获取选中的节点", nodes)
|
||||||
let id = new YJ.Tools().randomString()
|
let id = new YJ.Tools().randomString()
|
||||||
let pId = -1
|
let pId = -1
|
||||||
if (nodes.length) {
|
if (nodes.length) {
|
||||||
pId = nodes[0].sourceType == 'directory' ? nodes[0].id : nodes[0].parentId
|
pId = nodes[0].sourceType == 'directory' ? nodes[0].id : nodes[0].parentId
|
||||||
}
|
}
|
||||||
// let pId = nodes.length >= 1 ? nodes[0].id : -1
|
// let pId = nodes.length >= 1 ? nodes[0].id : -1
|
||||||
window.draw = new YJ.Draw[item.funName](earth_ts)
|
|
||||||
|
|
||||||
|
console.log("立体文字有效,准备绘制")
|
||||||
|
// 模拟后续步骤完成后将默认值设回“”
|
||||||
|
/* setTimeout(() => {
|
||||||
|
item.source_name = ""
|
||||||
|
}, 100)*/
|
||||||
|
// return;
|
||||||
|
window.draw = new YJ.Draw[item.funName](window['earth_ts'], item.option ? item.option : "")
|
||||||
window.draw.start((a, position) => {
|
window.draw.start((a, position) => {
|
||||||
console.log(position)
|
console.log(position)
|
||||||
if (position != undefined) {
|
if (position != undefined) {
|
||||||
@ -245,9 +270,27 @@ let addMarker = (item) => {
|
|||||||
obj.center = position.center
|
obj.center = position.center
|
||||||
obj.radius = position.radius
|
obj.radius = position.radius
|
||||||
break
|
break
|
||||||
|
case "fire":
|
||||||
|
obj.lng = position.lng
|
||||||
|
obj.lat = position.lat
|
||||||
|
obj.alt = position.alt
|
||||||
|
delete obj.position
|
||||||
|
break
|
||||||
|
case "waterL":
|
||||||
|
obj.start = position[0]
|
||||||
|
obj.end = position[1]
|
||||||
|
delete obj.position
|
||||||
|
break
|
||||||
|
case "standText":
|
||||||
|
obj.positions = position
|
||||||
|
obj.text = item.source_name
|
||||||
|
delete obj.position
|
||||||
|
if (position.length < item.positionLength) return
|
||||||
|
break
|
||||||
}
|
}
|
||||||
// console.log("添加标注标会")
|
// console.log("添加标注标会")
|
||||||
addMapSource(item.type, pId, obj)
|
addMapSource(item.type, pId, obj)
|
||||||
|
item.source_name = ""
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -85,6 +85,15 @@ export function initMapData(type, data, cb: any = null) {
|
|||||||
if (cb)
|
if (cb)
|
||||||
cb(entityObject)
|
cb(entityObject)
|
||||||
break
|
break
|
||||||
|
case "fire":
|
||||||
|
entityObject = new YJ.Obj.Flame(window['earth_ts'], data)
|
||||||
|
break;
|
||||||
|
case 'waterL':
|
||||||
|
entityObject = new YJ.Obj.Spout(window['earth_ts'], data)
|
||||||
|
break
|
||||||
|
case 'standText':
|
||||||
|
entityObject = new YJ.Obj.StandText(window['earth_ts'], data)
|
||||||
|
break
|
||||||
}
|
}
|
||||||
if (entityObject) {
|
if (entityObject) {
|
||||||
function getOptions() {
|
function getOptions() {
|
||||||
@ -177,6 +186,7 @@ export function addMapSource(type, pId, option, cb: any = null) {
|
|||||||
"planId": window['planId']
|
"planId": window['planId']
|
||||||
}
|
}
|
||||||
console.log('dbOption', dbOption)
|
console.log('dbOption', dbOption)
|
||||||
|
// return
|
||||||
TsApi.addTsSource(dbOption).then(res => {
|
TsApi.addTsSource(dbOption).then(res => {
|
||||||
console.log("addTsSource", res)
|
console.log("addTsSource", res)
|
||||||
cb && cb(res)
|
cb && cb(res)
|
||||||
|
|||||||
@ -156,6 +156,7 @@ import {ElMessage, ElMessageBox, TableV2SortOrder} from 'element-plus'
|
|||||||
import type {SortBy} from 'element-plus'
|
import type {SortBy} from 'element-plus'
|
||||||
import {TsApi} from "../../api/ts";
|
import {TsApi} from "../../api/ts";
|
||||||
import NewPlan from "./newPlan.vue"
|
import NewPlan from "./newPlan.vue"
|
||||||
|
const moment = require("moment");
|
||||||
|
|
||||||
const date = ref({
|
const date = ref({
|
||||||
ymd: '',
|
ymd: '',
|
||||||
@ -235,7 +236,13 @@ const toTSEdit = (row) => {
|
|||||||
console.log("当前推演方案", row)
|
console.log("当前推演方案", row)
|
||||||
router.push({
|
router.push({
|
||||||
name: 'tsEdit', // 必须用 name 匹配路由,不能用 path
|
name: 'tsEdit', // 必须用 name 匹配路由,不能用 path
|
||||||
query: {id: row.id, name: row.name, desc: row.desc, start_time: new Date(row.simulationStartTime).getTime(),}
|
query: {
|
||||||
|
id: row.id,
|
||||||
|
name: row.name,
|
||||||
|
desc: row.desc,
|
||||||
|
wheel: row.wheel,
|
||||||
|
start_time: new Date(row.simulationStartTime).getTime(),
|
||||||
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -2,7 +2,8 @@
|
|||||||
<div class="bottomMenuBox zIndex9" ref="bottomMenuBox">
|
<div class="bottomMenuBox zIndex9" ref="bottomMenuBox">
|
||||||
<div class="animate__animated bottomMenu">
|
<div class="animate__animated bottomMenu">
|
||||||
<div class="bottom_box" v-for="(item, i) of bottomMenuList" :key="i">
|
<div class="bottom_box" v-for="(item, i) of bottomMenuList" :key="i">
|
||||||
<div class="bottom_box_content" @click="addMarker(item, $event)" :title="t('bottomMenu.' + item.sourceType)">
|
<div class="bottom_box_content" @click="addMarker(item, $event)">
|
||||||
|
<el-tooltip :content="t('bottomMenu.' + item.sourceType)" effect="customized" placement="top" :hide-after="0">
|
||||||
<svg class="bottom_box_bg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
|
<svg class="bottom_box_bg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
width="117.030029296875" height="44" viewBox="0 0 117.030029296875 44" fill="none"
|
width="117.030029296875" height="44" viewBox="0 0 117.030029296875 44" fill="none"
|
||||||
preserveAspectRatio="none">
|
preserveAspectRatio="none">
|
||||||
@ -18,6 +19,8 @@
|
|||||||
</linearGradient>
|
</linearGradient>
|
||||||
</defs>
|
</defs>
|
||||||
</svg>
|
</svg>
|
||||||
|
</el-tooltip>
|
||||||
|
|
||||||
<svg class="bottom_box_bg bottom_box_bg_hover" style="opacity: 0;" xmlns="http://www.w3.org/2000/svg"
|
<svg class="bottom_box_bg bottom_box_bg_hover" style="opacity: 0;" xmlns="http://www.w3.org/2000/svg"
|
||||||
xmlns:xlink="http://www.w3.org/1999/xlink" width="118.09130859375" height="45"
|
xmlns:xlink="http://www.w3.org/1999/xlink" width="118.09130859375" height="45"
|
||||||
viewBox="0 0 118.09130859375 45" fill="none" preserveAspectRatio="none">
|
viewBox="0 0 118.09130859375 45" fill="none" preserveAspectRatio="none">
|
||||||
@ -39,16 +42,16 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="bottom_children" v-if="item.children" v-show="item.childrenShow">
|
<div class="bottom_children" v-if="item.children" v-show="item.childrenShow">
|
||||||
<div class="bottom_childre_box" v-for="(item2, m) of item.children" :key="m"
|
<div class="bottom_childre_box" v-for="(item2, m) of item.children" :key="m" @click="addMarker(item2, $event)">
|
||||||
@click="addMarker(item2, $event)" :title="t('bottomMenu.' + item2.sourceType)">
|
<el-tooltip :content="t('bottomMenu.' + item2.sourceType)" effect="customized" placement="top" :hide-after="0">
|
||||||
<svg class="bottom_childre_box_bg" xmlns="http://www.w3.org/2000/svg"
|
<svg class="bottom_childre_box_bg" xmlns="http://www.w3.org/2000/svg"
|
||||||
xmlns:xlink="http://www.w3.org/1999/xlink" width="6vw" height="44.5" viewBox="0 0 119 35.5" fill="none"
|
xmlns:xlink="http://www.w3.org/1999/xlink" width="6vw" height="44.5" viewBox="0 0 119 35.5" fill="none"
|
||||||
preserveAspectRatio="none">
|
preserveAspectRatio="none">
|
||||||
<path d="M11 0.5L108 0.5L118 35.5L1 35.5L11 0.5Z" stroke="url(#linear_border_2485_3)" stroke-width="1"
|
<path d="M11 0.5L108 0.5L118 35.5L1 35.5L11 0.5Z" stroke="url(#linear_border_2485_3)" stroke-width="1"
|
||||||
fill="#000000" fill-opacity="0.5" />
|
fill="#000000" fill-opacity="0.5" />
|
||||||
<path d="M118 34.5L1 34.5L0 36.5L119 36.5L118 34.5Z" fill-rule="evenodd"
|
<path d="M118 34.5L1 34.5L0 36.5L119 36.5L118 34.5Z" fill-rule="evenodd" fill="url(#linear_fill_2485_4)" />
|
||||||
fill="url(#linear_fill_2485_4)" />
|
|
||||||
</svg>
|
</svg>
|
||||||
|
</el-tooltip>
|
||||||
<svg class="bottom_childre_box_bg bottom_childre_box_bg_hover" style="opacity: 0;"
|
<svg class="bottom_childre_box_bg bottom_childre_box_bg_hover" style="opacity: 0;"
|
||||||
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="118.32568359375"
|
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="118.32568359375"
|
||||||
height="36" viewBox="0 0 118.32568359375 36" fill="none" preserveAspectRatio="none">
|
height="36" viewBox="0 0 118.32568359375 36" fill="none" preserveAspectRatio="none">
|
||||||
@ -659,6 +662,14 @@ document.addEventListener('click', (e: any) => {
|
|||||||
height: 44px;
|
height: 44px;
|
||||||
bottom: 1em;
|
bottom: 1em;
|
||||||
left: 13vw;
|
left: 13vw;
|
||||||
|
:deep(.el-tooltip__trigger) {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
top: 0;
|
||||||
|
pointer-events: all;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.bottomMenu {
|
.bottomMenu {
|
||||||
|
|||||||
@ -436,7 +436,7 @@ const handleDragEnd = (
|
|||||||
console.log('tree drag end:', dropNode, dropType, ev, draggingNode)
|
console.log('tree drag end:', dropNode, dropType, ev, draggingNode)
|
||||||
|
|
||||||
if (dropType != 'none') {
|
if (dropType != 'none') {
|
||||||
let nodeList = []
|
let nodeList:any = []
|
||||||
switch (dropType) {
|
switch (dropType) {
|
||||||
case 'before':
|
case 'before':
|
||||||
case 'after':
|
case 'after':
|
||||||
@ -506,6 +506,7 @@ const showImage = (row: any) => {
|
|||||||
const handleContextMenu = (event: MouseEvent, row: TypeNode) => {
|
const handleContextMenu = (event: MouseEvent, row: TypeNode) => {
|
||||||
event.stopPropagation()
|
event.stopPropagation()
|
||||||
event.preventDefault()
|
event.preventDefault()
|
||||||
|
// @ts-expect-error
|
||||||
if (document.getElementsByClassName('settingPop')[0]?.style.transform.length) {
|
if (document.getElementsByClassName('settingPop')[0]?.style.transform.length) {
|
||||||
let rect = document.getElementsByClassName('settingPop')[0].getBoundingClientRect()
|
let rect = document.getElementsByClassName('settingPop')[0].getBoundingClientRect()
|
||||||
contextMenu.x = event.clientX - rect.left
|
contextMenu.x = event.clientX - rect.left
|
||||||
@ -578,6 +579,7 @@ const getModelListByType = (id) => {
|
|||||||
}
|
}
|
||||||
const divContextMenu = (event: MouseEvent) => {
|
const divContextMenu = (event: MouseEvent) => {
|
||||||
event.preventDefault()
|
event.preventDefault()
|
||||||
|
// @ts-expect-error
|
||||||
if (document.getElementsByClassName('settingPop')[0]?.style.transform.length) {
|
if (document.getElementsByClassName('settingPop')[0]?.style.transform.length) {
|
||||||
let rect = document.getElementsByClassName('settingPop')[0].getBoundingClientRect()
|
let rect = document.getElementsByClassName('settingPop')[0].getBoundingClientRect()
|
||||||
contextMenu.x = event.clientX - rect.left
|
contextMenu.x = event.clientX - rect.left
|
||||||
@ -700,7 +702,7 @@ const getBase64Image = (src) => {
|
|||||||
let blob = this.response
|
let blob = this.response
|
||||||
let oFileReader = new FileReader()
|
let oFileReader = new FileReader()
|
||||||
oFileReader.onloadend = function (e) {
|
oFileReader.onloadend = function (e) {
|
||||||
const base64 = e.target.result
|
const base64 = e?.target?.result
|
||||||
resolve(base64)
|
resolve(base64)
|
||||||
}
|
}
|
||||||
oFileReader.readAsDataURL(blob)
|
oFileReader.readAsDataURL(blob)
|
||||||
|
|||||||
@ -223,7 +223,7 @@ const contextMenu = reactive({
|
|||||||
|
|
||||||
const treeRef = ref()
|
const treeRef = ref()
|
||||||
//表头拖拽
|
//表头拖拽
|
||||||
const tableRef = ref(null)
|
const tableRef:any = ref(null)
|
||||||
|
|
||||||
const handleHeaderDragend = (newWidth, oldWidth, column, event) => {
|
const handleHeaderDragend = (newWidth, oldWidth, column, event) => {
|
||||||
const columns = tableRef.value.$refs.tableHeaderRef.columnRows[0]
|
const columns = tableRef.value.$refs.tableHeaderRef.columnRows[0]
|
||||||
@ -486,7 +486,7 @@ const handleDragEnd = (
|
|||||||
) => {
|
) => {
|
||||||
console.log('tree drag end:', dropNode, dropType, ev, draggingNode, draggingNode.parent)
|
console.log('tree drag end:', dropNode, dropType, ev, draggingNode, draggingNode.parent)
|
||||||
if (dropType != 'none') {
|
if (dropType != 'none') {
|
||||||
let nodeList = []
|
let nodeList:any = []
|
||||||
switch (dropType) {
|
switch (dropType) {
|
||||||
case 'before':
|
case 'before':
|
||||||
case 'after':
|
case 'after':
|
||||||
@ -584,6 +584,7 @@ const handleContextMenu = (event: MouseEvent, row: TypeNode) => {
|
|||||||
event.preventDefault()
|
event.preventDefault()
|
||||||
contextMenu.currentRow = row
|
contextMenu.currentRow = row
|
||||||
// 计算相对于文档的坐标
|
// 计算相对于文档的坐标
|
||||||
|
// @ts-expect-error
|
||||||
if (document.getElementsByClassName('settingPop')[0]?.style.transform.length) {
|
if (document.getElementsByClassName('settingPop')[0]?.style.transform.length) {
|
||||||
let rect = document.getElementsByClassName('settingPop')[0].getBoundingClientRect()
|
let rect = document.getElementsByClassName('settingPop')[0].getBoundingClientRect()
|
||||||
contextMenu.x = event.clientX - rect.left
|
contextMenu.x = event.clientX - rect.left
|
||||||
@ -649,6 +650,7 @@ const getModelListByType = (id) => {
|
|||||||
}
|
}
|
||||||
const divContextMenu = (event: MouseEvent) => {
|
const divContextMenu = (event: MouseEvent) => {
|
||||||
event.preventDefault()
|
event.preventDefault()
|
||||||
|
// @ts-expect-error
|
||||||
if (document.getElementsByClassName('settingPop')[0]?.style.transform.length) {
|
if (document.getElementsByClassName('settingPop')[0]?.style.transform.length) {
|
||||||
let rect = document.getElementsByClassName('settingPop')[0].getBoundingClientRect()
|
let rect = document.getElementsByClassName('settingPop')[0].getBoundingClientRect()
|
||||||
contextMenu.x = event.clientX - rect.left
|
contextMenu.x = event.clientX - rect.left
|
||||||
|
|||||||
@ -516,7 +516,7 @@ const handleDragEnd = (
|
|||||||
) => {
|
) => {
|
||||||
console.log('tree drag end:', dropNode, dropType, ev, draggingNode)
|
console.log('tree drag end:', dropNode, dropType, ev, draggingNode)
|
||||||
if (dropType != 'none') {
|
if (dropType != 'none') {
|
||||||
let nodeList = []
|
let nodeList:any = []
|
||||||
switch (dropType) {
|
switch (dropType) {
|
||||||
case 'before':
|
case 'before':
|
||||||
case 'after':
|
case 'after':
|
||||||
@ -590,6 +590,7 @@ const handleContextMenu = (event: MouseEvent, row: TypeNode) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
contextMenu.currentRow = row
|
contextMenu.currentRow = row
|
||||||
|
// @ts-expect-error
|
||||||
if (document.getElementsByClassName('settingPop')[0]?.style.transform.length) {
|
if (document.getElementsByClassName('settingPop')[0]?.style.transform.length) {
|
||||||
let rect = document.getElementsByClassName('settingPop')[0].getBoundingClientRect()
|
let rect = document.getElementsByClassName('settingPop')[0].getBoundingClientRect()
|
||||||
contextMenu.x = event.clientX - rect.left
|
contextMenu.x = event.clientX - rect.left
|
||||||
@ -670,6 +671,7 @@ const divContextMenu = (event: MouseEvent) => {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
event.preventDefault()
|
event.preventDefault()
|
||||||
|
// @ts-expect-error
|
||||||
if (document.getElementsByClassName('settingPop')[0]?.style.transform.length) {
|
if (document.getElementsByClassName('settingPop')[0]?.style.transform.length) {
|
||||||
let rect = document.getElementsByClassName('settingPop')[0].getBoundingClientRect()
|
let rect = document.getElementsByClassName('settingPop')[0].getBoundingClientRect()
|
||||||
contextMenu.x = event.clientX - rect.left
|
contextMenu.x = event.clientX - rect.left
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="set_pup">
|
<div class="set_pup" :class="{'dialog-en': isEN}">
|
||||||
<el-dialog
|
<el-dialog
|
||||||
v-model="isShowPup"
|
v-model="isShowPup"
|
||||||
:modal="true"
|
:modal="true"
|
||||||
@ -135,10 +135,11 @@ import photoManage from './components/photoManage.vue'
|
|||||||
import { useI18n } from 'vue-i18n'
|
import { useI18n } from 'vue-i18n'
|
||||||
|
|
||||||
const eventBus: any = inject('bus')
|
const eventBus: any = inject('bus')
|
||||||
const { t } = useI18n()
|
const { t, locale } = useI18n()
|
||||||
const tabPosition = ref('left')
|
const tabPosition = ref('left')
|
||||||
const activeName = ref('authorize')
|
const activeName = ref('authorize')
|
||||||
const isShowPup = ref(false)
|
const isShowPup = ref(false)
|
||||||
|
const isEN = ref(false)
|
||||||
const open = (data) => {
|
const open = (data) => {
|
||||||
isShowPup.value = true
|
isShowPup.value = true
|
||||||
if (data !== 'current') {
|
if (data !== 'current') {
|
||||||
@ -163,6 +164,25 @@ const close = () => {
|
|||||||
isShowPup.value = false
|
isShowPup.value = false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
// 可以在这里添加初始化逻辑
|
||||||
|
if(locale.value === 'zh-EN') {
|
||||||
|
isEN.value = true
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
isEN.value = false
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
watch(locale, ()=>{
|
||||||
|
if(locale.value === 'zh-EN') {
|
||||||
|
isEN.value = true
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
isEN.value = false
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
defineExpose({
|
defineExpose({
|
||||||
open,
|
open,
|
||||||
close
|
close
|
||||||
@ -182,6 +202,7 @@ defineExpose({
|
|||||||
),
|
),
|
||||||
rgba(0, 0, 0, 0.6);
|
rgba(0, 0, 0, 0.6);
|
||||||
border: 1px solid var(--color-border1);
|
border: 1px solid var(--color-border1);
|
||||||
|
padding-left: 0px;
|
||||||
// padding-left: 0 !important;
|
// padding-left: 0 !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -308,14 +329,18 @@ defineExpose({
|
|||||||
:deep(.el-tabs__item) {
|
:deep(.el-tabs__item) {
|
||||||
width: 8vw;
|
width: 8vw;
|
||||||
color: #fff !important;
|
color: #fff !important;
|
||||||
font-size: 1.1rem;
|
font-size: 0.9rem;
|
||||||
font-family: 黑体;
|
font-family: SourceHanSansTi;
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
display: flex;
|
line-height: 38px;
|
||||||
|
display: block;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
text-align: center;
|
||||||
margin-bottom: 3px;
|
margin-bottom: 3px;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
|
white-space: nowrap;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
}
|
}
|
||||||
|
|
||||||
:deep(.el-tabs__item:hover) {
|
:deep(.el-tabs__item:hover) {
|
||||||
@ -366,4 +391,10 @@ defineExpose({
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.set_pup.dialog-en {
|
||||||
|
:deep(.el-tabs__item) {
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@ -2,9 +2,10 @@
|
|||||||
<div class="leftBox" ref="leftBoxRef">
|
<div class="leftBox" ref="leftBoxRef">
|
||||||
<div class="left animate__animated">
|
<div class="left animate__animated">
|
||||||
<div class="menus">
|
<div class="menus">
|
||||||
<div class="menus_itemBox" v-for="(item, index) in menuList" :title="t(`firstMenu.${item.name}`)">
|
<div class="menus_itemBox" v-for="(item, index) in menuList">
|
||||||
|
<el-tooltip :content="t(`firstMenu.${item.name}`)" effect="customized" placement="top" :hide-after="0">
|
||||||
<div class="item_icon" @click="(e) => {
|
<div class="item_icon" @click="(e) => {
|
||||||
handleClick(item, e)
|
handleClick(item, index, e)
|
||||||
}
|
}
|
||||||
">
|
">
|
||||||
<!-- <svg class="item_icon_bg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
|
<!-- <svg class="item_icon_bg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
@ -56,6 +57,8 @@
|
|||||||
{{ t(`firstMenu.${item.name}`) }}
|
{{ t(`firstMenu.${item.name}`) }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</el-tooltip>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<leftSideSecond class="absolute zIndex99 leftSideSecond" ref="leftSideSecondRef"></leftSideSecond>
|
<leftSideSecond class="absolute zIndex99 leftSideSecond" ref="leftSideSecondRef"></leftSideSecond>
|
||||||
</div>
|
</div>
|
||||||
@ -264,10 +267,12 @@ onMounted(() => {
|
|||||||
document.addEventListener('click', handleClickOutside, true);
|
document.addEventListener('click', handleClickOutside, true);
|
||||||
})
|
})
|
||||||
const leftSideSecondRef = ref()
|
const leftSideSecondRef = ref()
|
||||||
const handleClick = (item: any, e) => {
|
const handleClick = (item: any, index, e) => {
|
||||||
console.log('点击了', item, e)
|
console.log('点击了', item, e, index)
|
||||||
$('.leftSideSecond')[0].style.left = '100%'
|
$('.leftSideSecond')[0].style.left = '100%'
|
||||||
$('.leftSideSecond')[0].style.top = e.layerY - 120 + 'px'
|
// $('.leftSideSecond')[0].style.top = e.layerY + 120 + 'px'
|
||||||
|
$('.leftSideSecond')[0].style.top = `calc(${index} * 6.32vh)`
|
||||||
|
$('.leftSideSecond')[0].style.transform = 'translateY(calc(2.6vh - 50%))';
|
||||||
$('.leftSideSecond')[0].style.display = 'none'
|
$('.leftSideSecond')[0].style.display = 'none'
|
||||||
if (item.children.length) {
|
if (item.children.length) {
|
||||||
$('.leftSideSecond')[0].style.display = 'block'
|
$('.leftSideSecond')[0].style.display = 'block'
|
||||||
|
|||||||
@ -687,7 +687,6 @@ const methodMap = {
|
|||||||
})
|
})
|
||||||
dom?.classList.remove('default-cursor')
|
dom?.classList.remove('default-cursor')
|
||||||
dom?.classList.add('custom-cursor')
|
dom?.classList.add('custom-cursor')
|
||||||
console.log(document.getElementsByClassName('custom-cursor')[0].style, 'llllll')
|
|
||||||
} else {
|
} else {
|
||||||
dom?.classList.remove('custom-cursor')
|
dom?.classList.remove('custom-cursor')
|
||||||
dom?.classList.add('default-cursor')
|
dom?.classList.add('default-cursor')
|
||||||
|
|||||||
@ -31,6 +31,7 @@
|
|||||||
<attribute :entityOptions="entityOptions"></attribute>
|
<attribute :entityOptions="entityOptions"></attribute>
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
<el-tab-pane label="空间信息" name="2">
|
<el-tab-pane label="空间信息" name="2">
|
||||||
|
<div class="div-item">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col height-mode-box">
|
<div class="col height-mode-box">
|
||||||
<span class="label" style="flex: 0 0 56px;">高度模式</span>
|
<span class="label" style="flex: 0 0 56px;">高度模式</span>
|
||||||
@ -43,7 +44,8 @@
|
|||||||
<div class="col">
|
<div class="col">
|
||||||
<span class="label">Z值统一增加</span>
|
<span class="label">Z值统一增加</span>
|
||||||
<div class="input-number input-number-unit-1 height-box" :class="{ 'disabled': heightMode == 2 }">
|
<div class="input-number input-number-unit-1 height-box" :class="{ 'disabled': heightMode == 2 }">
|
||||||
<input class="input height" type="number" title="" min="-9999999" max="999999999" v-model="height" @input="$handleInputLimit">
|
<input class="input height" type="number" title="" min="-9999999" max="999999999" v-model="height"
|
||||||
|
@input="$handleInputLimit">
|
||||||
<span class="unit">m</span>
|
<span class="unit">m</span>
|
||||||
<span class="arrow"></span>
|
<span class="arrow"></span>
|
||||||
</div>
|
</div>
|
||||||
@ -66,12 +68,14 @@
|
|||||||
<div class="td">圆心坐标</div>
|
<div class="td">圆心坐标</div>
|
||||||
<div class="td lng align-center" @dblclick="inputDblclick($event, 1, 'lng')">
|
<div class="td lng align-center" @dblclick="inputDblclick($event, 1, 'lng')">
|
||||||
<input class="input" @blur="inputBlurCallBack($event, 1, 'lng', 8)" type="number"
|
<input class="input" @blur="inputBlurCallBack($event, 1, 'lng', 8)" type="number"
|
||||||
v-model="entityOptions.center.lng" min="-180" max="180" v-if="activeTd.index == 1 && activeTd.name == 'lng'" @input="$handleInputLimit">
|
v-model="entityOptions.center.lng" min="-180" max="180"
|
||||||
|
v-if="activeTd.index == 1 && activeTd.name == 'lng'" @input="$handleInputLimit">
|
||||||
<span style="pointer-events: none;" v-else>{{ entityOptions.center.lng.toFixed(8) }}</span>
|
<span style="pointer-events: none;" v-else>{{ entityOptions.center.lng.toFixed(8) }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="td lat align-center" @dblclick="inputDblclick($event, 1, 'lat')">
|
<div class="td lat align-center" @dblclick="inputDblclick($event, 1, 'lat')">
|
||||||
<input class="input" @blur="inputBlurCallBack($event, 1, 'lat', 8)" type="number"
|
<input class="input" @blur="inputBlurCallBack($event, 1, 'lat', 8)" type="number"
|
||||||
v-model="entityOptions.center.lat" min="-180" max="180" v-if="activeTd.index == 1 && activeTd.name == 'lat'" @input="$handleInputLimit">
|
v-model="entityOptions.center.lat" min="-180" max="180"
|
||||||
|
v-if="activeTd.index == 1 && activeTd.name == 'lat'" @input="$handleInputLimit">
|
||||||
<span style="pointer-events: none;" v-else>{{ entityOptions.center.lat.toFixed(8) }}</span>
|
<span style="pointer-events: none;" v-else>{{ entityOptions.center.lat.toFixed(8) }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="td alt align-center" @dblclick="inputDblclick($event, 1, 'alt')">
|
<div class="td alt align-center" @dblclick="inputDblclick($event, 1, 'alt')">
|
||||||
@ -84,6 +88,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
<el-tab-pane label="面风格" name="3">
|
<el-tab-pane label="面风格" name="3">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
@ -98,7 +103,8 @@
|
|||||||
<div class="col">
|
<div class="col">
|
||||||
<span class="label">描边宽度</span>
|
<span class="label">描边宽度</span>
|
||||||
<div class="input-number input-number-unit-2">
|
<div class="input-number input-number-unit-2">
|
||||||
<input class="input" type="number" title="" min="0" max="99" v-model="entityOptions.lineWidth" @input="$handleInputLimit">
|
<input class="input" type="number" title="" min="0" max="99" v-model="entityOptions.lineWidth"
|
||||||
|
@input="$handleInputLimit">
|
||||||
<span class="unit">px</span>
|
<span class="unit">px</span>
|
||||||
<span class="arrow"></span>
|
<span class="arrow"></span>
|
||||||
</div>
|
</div>
|
||||||
@ -124,7 +130,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<button @click="remove">删除</button>
|
<button @click="remove">删除</button>
|
||||||
<button @click="confirm">确定</button>
|
<button @click="confirm">确定</button>
|
||||||
<button @click="close">关闭</button>
|
<button @click="close">取消</button>
|
||||||
</template>
|
</template>
|
||||||
</Dialog>
|
</Dialog>
|
||||||
</template>
|
</template>
|
||||||
@ -378,4 +384,15 @@ defineExpose({
|
|||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss"></style>
|
<style scoped lang="scss">
|
||||||
|
.circle.dialog-en {
|
||||||
|
::v-deep>.content {
|
||||||
|
|
||||||
|
.attribute-content-link .table .tr .td.operation button,
|
||||||
|
.attribute-content-vr .table .tr .td.operation button,
|
||||||
|
.attribute-content-rtmp .table .tr .td.operation button {
|
||||||
|
width: 76px !important;
|
||||||
|
flex: 0 0 76px !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}</style>
|
||||||
@ -15,7 +15,7 @@
|
|||||||
<button @click="draw">
|
<button @click="draw">
|
||||||
<svg class="icon-edit"><use xlink:href="#yj-icon-edit"></use></svg>重新绘制
|
<svg class="icon-edit"><use xlink:href="#yj-icon-edit"></use></svg>重新绘制
|
||||||
</button>
|
</button>
|
||||||
<button @click="close">关闭</button>
|
<button @click="close">取消</button>
|
||||||
</template>
|
</template>
|
||||||
</Dialog>
|
</Dialog>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@ -251,7 +251,7 @@
|
|||||||
<span class="custom-divider" style="order: 10; margin-top: 12px"></span>
|
<span class="custom-divider" style="order: 10; margin-top: 12px"></span>
|
||||||
</template>
|
</template>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<button @click="close">关闭</button>
|
<button @click="close">取消</button>
|
||||||
</template>
|
</template>
|
||||||
</Dialog>
|
</Dialog>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@ -103,7 +103,7 @@
|
|||||||
<span class="custom-divider"></span>
|
<span class="custom-divider"></span>
|
||||||
</template>
|
</template>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<button @click="close">关闭</button>
|
<button @click="close">取消</button>
|
||||||
</template>
|
</template>
|
||||||
</Dialog>
|
</Dialog>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@ -43,7 +43,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<!-- <template #footer>
|
<!-- <template #footer>
|
||||||
<button @click="close">关闭</button>
|
<button @click="close">取消</button>
|
||||||
</template> -->
|
</template> -->
|
||||||
</Dialog>
|
</Dialog>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@ -90,7 +90,7 @@
|
|||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<button @click="close">关闭</button>
|
<button @click="close">取消</button>
|
||||||
</template>
|
</template>
|
||||||
</Dialog>
|
</Dialog>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@ -147,7 +147,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<button @click="remove">删除</button>
|
<button @click="remove">删除</button>
|
||||||
<button @click="confirm">确定</button>
|
<button @click="confirm">确定</button>
|
||||||
<button @click="close">关闭</button>
|
<button @click="close">取消</button>
|
||||||
</template>
|
</template>
|
||||||
</Dialog>
|
</Dialog>
|
||||||
</template>
|
</template>
|
||||||
@ -401,4 +401,15 @@ defineExpose({
|
|||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss"></style>
|
<style scoped lang="scss">
|
||||||
|
.attackArrow.dialog-en {
|
||||||
|
::v-deep>.content {
|
||||||
|
.attribute-content-link .table .tr .td.operation button,
|
||||||
|
.attribute-content-vr .table .tr .td.operation button,
|
||||||
|
.attribute-content-rtmp .table .tr .td.operation button {
|
||||||
|
width: 76px !important;
|
||||||
|
flex: 0 0 76px !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@ -47,15 +47,15 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="td" v-else>{{ item.url }}</div>
|
<div class="td" v-else>{{ item.url }}</div>
|
||||||
<div class="td operation" v-if="linkEditActive.index === index">
|
<div class="td operation" v-if="linkEditActive.index === index">
|
||||||
<button style="width: 76px;flex: 0 0 76px" @click="linkConfirmEdit(index)">{{
|
<button @click="linkConfirmEdit(index)">{{
|
||||||
t('general.确认')
|
t('general.确认')
|
||||||
}}
|
}}
|
||||||
</button>
|
</button>
|
||||||
<button style="width: 76px;flex: 0 0 76px" @click="linkCancelEdit">{{ t('general.取消') }}</button>
|
<button @click="linkCancelEdit">{{ t('general.取消') }}</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="td operation" v-else>
|
<div class="td operation" v-else>
|
||||||
<button style="width: 76px;flex: 0 0 76px" @click="linkEdit(index, item)">{{ t('general.编辑') }}</button>
|
<button @click="linkEdit(index, item)">{{ t('general.编辑') }}</button>
|
||||||
<button style="width: 76px;flex: 0 0 76px" @click="linkDelete(index)">{{ t('general.删除') }}</button>
|
<button @click="linkDelete(index)">{{ t('general.删除') }}</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -69,7 +69,7 @@
|
|||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col">
|
<div class="col">
|
||||||
<span class="label">{{ t('general.编辑内容') }}</span>
|
<span class="label">{{ t('general.编辑内容') }}</span>
|
||||||
<input class="input" type="text" v-model="cameraParams.keyWord" style="width: 180px;margin-right: 10px;"/>
|
<input class="input" type="text" :placeholder="t('general.请输入设备名称进行搜索')" v-model="cameraParams.keyWord" style="width: 180px;margin-right: 10px;"/>
|
||||||
<button class="select btn" @click="cameraSelect({page: 1, limit: cameraParams.pageSize })">
|
<button class="select btn" @click="cameraSelect({page: 1, limit: cameraParams.pageSize })">
|
||||||
{{ t('general.搜索') }}
|
{{ t('general.搜索') }}
|
||||||
</button>
|
</button>
|
||||||
@ -244,7 +244,7 @@
|
|||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col">
|
<div class="col">
|
||||||
<span class="label">{{ t('general.编辑内容') }}</span>
|
<span class="label">{{ t('general.编辑内容') }}</span>
|
||||||
<input class="input goods-select-input" type="text" placeholder="请输入关键字" style="width: 180px;margin-right: 10px;"
|
<input class="input goods-select-input" type="text" :placeholder="t('general.请输入物资名称进行搜索')" style="width: 180px;margin-right: 10px;"
|
||||||
v-model="goodsKeywords">
|
v-model="goodsKeywords">
|
||||||
<button class="select btn" @click="goodsFilter">{{ t('general.搜索') }}</button>
|
<button class="select btn" @click="goodsFilter">{{ t('general.搜索') }}</button>
|
||||||
</div>
|
</div>
|
||||||
@ -388,8 +388,8 @@ const cameraSelect = ({page, limit}) => {
|
|||||||
if (res.code === 0 || res.code === 200) {
|
if (res.code === 0 || res.code === 200) {
|
||||||
if (res.data) {
|
if (res.data) {
|
||||||
cameraParams.value.total = res.data.total
|
cameraParams.value.total = res.data.total
|
||||||
if (res.data.records && res.data.records.length > 0) {
|
|
||||||
cameraList.value = res.data.records
|
cameraList.value = res.data.records
|
||||||
|
if (res.data.records && res.data.records.length > 0) {
|
||||||
for (let i = 0; i < cameraList.value.length; i++) {
|
for (let i = 0; i < cameraList.value.length; i++) {
|
||||||
cameraList.value[i].checked = false
|
cameraList.value[i].checked = false
|
||||||
for (let j = 0; j < props.entityOptions.attributeCamera.length; j++) {
|
for (let j = 0; j < props.entityOptions.attributeCamera.length; j++) {
|
||||||
@ -724,8 +724,8 @@ const changeAttributeCamera = (e) => {
|
|||||||
.YJ-custom-base-dialog > .content .attribute-content-vr .table .tr .td:nth-child(1),
|
.YJ-custom-base-dialog > .content .attribute-content-vr .table .tr .td:nth-child(1),
|
||||||
.YJ-custom-base-dialog > .content .attribute-content-rtmp .table .tr .th:nth-child(1),
|
.YJ-custom-base-dialog > .content .attribute-content-rtmp .table .tr .th:nth-child(1),
|
||||||
.YJ-custom-base-dialog > .content .attribute-content-rtmp .table .tr .td:nth-child(1) {
|
.YJ-custom-base-dialog > .content .attribute-content-rtmp .table .tr .td:nth-child(1) {
|
||||||
width: 164px;
|
width: 150px;
|
||||||
flex: 0 0 164px;
|
flex: 0 0 150px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.YJ-custom-base-dialog > .content .attribute-content-link .table .tr .th:nth-child(2),
|
.YJ-custom-base-dialog > .content .attribute-content-link .table .tr .th:nth-child(2),
|
||||||
@ -744,21 +744,21 @@ const changeAttributeCamera = (e) => {
|
|||||||
.YJ-custom-base-dialog > .content .attribute-content-vr .table .tr .td:nth-child(3),
|
.YJ-custom-base-dialog > .content .attribute-content-vr .table .tr .td:nth-child(3),
|
||||||
.YJ-custom-base-dialog > .content .attribute-content-rtmp .table .tr .th:nth-child(3),
|
.YJ-custom-base-dialog > .content .attribute-content-rtmp .table .tr .th:nth-child(3),
|
||||||
.YJ-custom-base-dialog > .content .attribute-content-rtmp .table .tr .td:nth-child(3) {
|
.YJ-custom-base-dialog > .content .attribute-content-rtmp .table .tr .td:nth-child(3) {
|
||||||
flex: 0 0 150px;
|
flex: 0 0 175px;
|
||||||
width: 150px;
|
width: 175px;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.YJ-custom-base-dialog.dialog-en > .content .attribute-content-link .table .tr .th:nth-child(3),
|
// .YJ-custom-base-dialog.dialog-en > .content .attribute-content-link .table .tr .th:nth-child(3),
|
||||||
.YJ-custom-base-dialog.dialog-en > .content .attribute-content-link .table .tr .td:nth-child(3),
|
// .YJ-custom-base-dialog.dialog-en > .content .attribute-content-link .table .tr .td:nth-child(3),
|
||||||
.YJ-custom-base-dialog.dialog-en > .content .attribute-content-vr .table .tr .th:nth-child(3),
|
// .YJ-custom-base-dialog.dialog-en > .content .attribute-content-vr .table .tr .th:nth-child(3),
|
||||||
.YJ-custom-base-dialog.dialog-en > .content .attribute-content-vr .table .tr .td:nth-child(3),
|
// .YJ-custom-base-dialog.dialog-en > .content .attribute-content-vr .table .tr .td:nth-child(3),
|
||||||
.YJ-custom-base-dialog.dialog-en > .content .attribute-content-rtmp .table .tr .th:nth-child(3),
|
// .YJ-custom-base-dialog.dialog-en > .content .attribute-content-rtmp .table .tr .th:nth-child(3),
|
||||||
.YJ-custom-base-dialog.dialog-en > .content .attribute-content-rtmp .table .tr .td:nth-child(3) {
|
// .YJ-custom-base-dialog.dialog-en > .content .attribute-content-rtmp .table .tr .td:nth-child(3) {
|
||||||
flex: 0 0 190px;
|
// flex: 0 0 190px;
|
||||||
width: 190px;
|
// width: 190px;
|
||||||
justify-content: center;
|
// justify-content: center;
|
||||||
}
|
// }
|
||||||
|
|
||||||
.YJ-custom-base-dialog > .content .attribute-content-link .table .tr .td .input-group .input,
|
.YJ-custom-base-dialog > .content .attribute-content-link .table .tr .td .input-group .input,
|
||||||
.YJ-custom-base-dialog > .content .attribute-content-vr .table .tr .td .input-group .input,
|
.YJ-custom-base-dialog > .content .attribute-content-vr .table .tr .td .input-group .input,
|
||||||
|
|||||||
@ -26,11 +26,61 @@
|
|||||||
<div class="row coordinate-select-box">
|
<div class="row coordinate-select-box">
|
||||||
<div class="lable-left-line">
|
<div class="lable-left-line">
|
||||||
{{ t('dialog.point.转换坐标选择') }}
|
{{ t('dialog.point.转换坐标选择') }}
|
||||||
<el-select class="input input-select coordinate-select" style="width: 155px; margin-left: 20px"
|
<el-select style="width: 155px; margin-left: 20px;" v-model="coordinate" @change="coordinateChange">
|
||||||
|
<div class="group-header" :class="name_map1.filter((item) => {
|
||||||
|
return item.epsg == coordinate
|
||||||
|
}).length > 0
|
||||||
|
? 'arrowActive'
|
||||||
|
: ''
|
||||||
|
" @click="toggleGroup('hot')">
|
||||||
|
地理坐标系
|
||||||
|
<svg-icon v-if="isHotGroupOpen" name="arrow2" :size="10" :color="name_map1.filter((item) => {
|
||||||
|
return item.epsg == coordinate
|
||||||
|
}).length > 0
|
||||||
|
? 'rgba(0, 255, 255, 1)'
|
||||||
|
: 'rgba(255, 255, 255, 1)'
|
||||||
|
" style="margin-left: 10px"></svg-icon>
|
||||||
|
<svg-icon v-else name="arrow1" :size="10" :color="name_map1.filter((item) => {
|
||||||
|
return item.epsg == coordinate
|
||||||
|
}).length > 0
|
||||||
|
? 'rgba(0, 255, 255, 1)'
|
||||||
|
: 'rgba(255, 255, 255, 1)'
|
||||||
|
" style="margin-left: 10px"></svg-icon>
|
||||||
|
</div>
|
||||||
|
<div v-show="isHotGroupOpen">
|
||||||
|
<el-option v-for="item in name_map1" :key="item.epsg" :label="item.name"
|
||||||
|
:value="item.epsg"></el-option>
|
||||||
|
</div>
|
||||||
|
<div class="group-header" :class="name_map2.filter((item) => {
|
||||||
|
return item.epsg == coordinate
|
||||||
|
}).length > 0
|
||||||
|
? 'arrowActive'
|
||||||
|
: ''
|
||||||
|
" @click="toggleGroup('ty')">
|
||||||
|
投影坐标系
|
||||||
|
<svg-icon v-if="isHotGroupOpen2" name="arrow2" :size="10" :color="name_map2.filter((item) => {
|
||||||
|
return item.epsg == coordinate
|
||||||
|
}).length > 0
|
||||||
|
? 'rgba(0, 255, 255, 1)'
|
||||||
|
: 'rgba(255, 255, 255, 1)'
|
||||||
|
" style="margin-left: 10px"></svg-icon>
|
||||||
|
<svg-icon v-else name="arrow1" :size="10" :color="name_map2.filter((item) => {
|
||||||
|
return item.epsg == coordinate
|
||||||
|
}).length > 0
|
||||||
|
? 'rgba(0, 255, 255, 1)'
|
||||||
|
: 'rgba(255, 255, 255, 1)'
|
||||||
|
" style="margin-left: 10px"></svg-icon>
|
||||||
|
</div>
|
||||||
|
<div v-show="isHotGroupOpen2">
|
||||||
|
<el-option v-for="item in name_map2" :key="item.epsg" :label="item.name"
|
||||||
|
:value="item.epsg"></el-option>
|
||||||
|
</div>
|
||||||
|
</el-select>
|
||||||
|
<!-- <el-select class="input input-select coordinate-select" style="width: 155px; margin-left: 20px"
|
||||||
v-model="coordinate" @change="coordinateChange" placeholder="请选择">
|
v-model="coordinate" @change="coordinateChange" placeholder="请选择">
|
||||||
<el-option v-for="item in epsg_map" :key="item.epsg" :label="item.name" :value="item.epsg">
|
<el-option v-for="item in epsg_map" :key="item.epsg" :label="item.name" :value="item.epsg">
|
||||||
</el-option>
|
</el-option>
|
||||||
</el-select>
|
</el-select> -->
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -352,7 +402,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<button @click="remove">{{ t('general.删除') }}</button>
|
<button @click="remove">{{ t('general.删除') }}</button>
|
||||||
<button @click="confirm">{{ t('general.确定') }}</button>
|
<button @click="confirm">{{ t('general.确定') }}</button>
|
||||||
<button @click="close">{{ t('general.关闭') }}</button>
|
<button @click="close">{{ t('general.取消') }}</button>
|
||||||
</template>
|
</template>
|
||||||
</Dialog>
|
</Dialog>
|
||||||
</template>
|
</template>
|
||||||
@ -375,6 +425,31 @@ const { cusUpdateNode, getSelectedNodes, cusRemoveNode } = useTreeNode()
|
|||||||
const baseDialog: any = ref(null)
|
const baseDialog: any = ref(null)
|
||||||
const eventBus: any = inject('bus')
|
const eventBus: any = inject('bus')
|
||||||
|
|
||||||
|
const name_map: any = ref([])
|
||||||
|
const name_map1: any = ref([])
|
||||||
|
const name_map2: any = ref([
|
||||||
|
{
|
||||||
|
epsg: 'EPSG:32601',
|
||||||
|
name: 'WGS84 通用横轴墨卡托投影'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
epsg: 'EPSG:4534',
|
||||||
|
name: '2000 坐标 3 度不带代号'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
epsg: 'EPSG:4513',
|
||||||
|
name: '2000 坐标 3 度带代号'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
epsg: 'EPSG:4502',
|
||||||
|
name: '2000 坐标 6 度不带代号'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
epsg: 'EPSG:4491',
|
||||||
|
name: '2000 坐标 6 度带代号'
|
||||||
|
}
|
||||||
|
])
|
||||||
|
|
||||||
const epsg_map = ref([
|
const epsg_map = ref([
|
||||||
{
|
{
|
||||||
name: 'WGS 84 / UTM zone 3N',
|
name: 'WGS 84 / UTM zone 3N',
|
||||||
@ -390,6 +465,10 @@ for (const [key, value] of window.earth.proj.epsg_map) {
|
|||||||
}
|
}
|
||||||
epsg_map.value = array
|
epsg_map.value = array
|
||||||
|
|
||||||
|
let tool = new YJ.Tools(window.earth)
|
||||||
|
name_map.value = Array.from(tool.name_map.values())
|
||||||
|
name_map1.value = name_map.value.splice(0, 2)
|
||||||
|
|
||||||
const format1 = ref(true)
|
const format1 = ref(true)
|
||||||
const format2 = ref(false)
|
const format2 = ref(false)
|
||||||
const format3 = ref(false)
|
const format3 = ref(false)
|
||||||
@ -434,6 +513,9 @@ const x = ref()
|
|||||||
const y = ref()
|
const y = ref()
|
||||||
const z = ref()
|
const z = ref()
|
||||||
const coordinate = ref('EPSG:4326')
|
const coordinate = ref('EPSG:4326')
|
||||||
|
const isHotGroupOpen: any = ref(true)
|
||||||
|
const isHotGroupOpen2: any = ref(false)
|
||||||
|
const showPosiType: any = ref(false)
|
||||||
const heightMode = ref(0)
|
const heightMode = ref(0)
|
||||||
const labelColorRef = ref(null)
|
const labelColorRef = ref(null)
|
||||||
const sourceType = ref('')
|
const sourceType = ref('')
|
||||||
@ -454,6 +536,13 @@ const open = async (id, type) => {
|
|||||||
baseDialog.value?.open()
|
baseDialog.value?.open()
|
||||||
|
|
||||||
await nextTick()
|
await nextTick()
|
||||||
|
let data = name_map1.value.filter((item) => item.epsg === coordinate.value)
|
||||||
|
showPosiType.value = data.length
|
||||||
|
if (data.length) {
|
||||||
|
isHotGroupOpen.value = true
|
||||||
|
} else {
|
||||||
|
isHotGroupOpen2.value = true
|
||||||
|
}
|
||||||
let labelColorPicker = new window.YJColorPicker({
|
let labelColorPicker = new window.YJColorPicker({
|
||||||
el: labelColorRef.value,
|
el: labelColorRef.value,
|
||||||
size: 'mini', //颜色box类型
|
size: 'mini', //颜色box类型
|
||||||
@ -519,6 +608,11 @@ const closeCallback = () => {
|
|||||||
eventBus?.emit('destroyComponent')
|
eventBus?.emit('destroyComponent')
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const toggleGroup = (type: string) => {
|
||||||
|
if (type === 'hot') isHotGroupOpen.value = !isHotGroupOpen.value
|
||||||
|
if (type === 'ty') isHotGroupOpen2.value = !isHotGroupOpen2.value
|
||||||
|
}
|
||||||
|
|
||||||
const changeName = (e) => {
|
const changeName = (e) => {
|
||||||
entityOptions.value.labelText = e.target.value
|
entityOptions.value.labelText = e.target.value
|
||||||
}
|
}
|
||||||
@ -771,7 +865,7 @@ defineExpose({
|
|||||||
}
|
}
|
||||||
|
|
||||||
::v-deep>.content {
|
::v-deep>.content {
|
||||||
width: 590px;
|
width: 600px;
|
||||||
|
|
||||||
.title1 {
|
.title1 {
|
||||||
width: 46%;
|
width: 46%;
|
||||||
@ -802,7 +896,7 @@ defineExpose({
|
|||||||
|
|
||||||
.billboard-object.dialog-en {
|
.billboard-object.dialog-en {
|
||||||
::v-deep>.content {
|
::v-deep>.content {
|
||||||
width: 690px;
|
width: 660px;
|
||||||
|
|
||||||
.title1 {
|
.title1 {
|
||||||
width: 40%;
|
width: 40%;
|
||||||
|
|||||||
@ -103,7 +103,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<button @click="remove">删除</button>
|
<button @click="remove">删除</button>
|
||||||
<button @click="confirm">确定</button>
|
<button @click="confirm">确定</button>
|
||||||
<button @click="close">关闭</button>
|
<button @click="close">取消</button>
|
||||||
</template>
|
</template>
|
||||||
</Dialog>
|
</Dialog>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@ -64,8 +64,8 @@
|
|||||||
<div class="col" style="flex: 0 0 33%">
|
<div class="col" style="flex: 0 0 33%">
|
||||||
<span class="label">缓冲宽度</span>
|
<span class="label">缓冲宽度</span>
|
||||||
<div class="input-number input-number-unit-1" style="width: 80px">
|
<div class="input-number input-number-unit-1" style="width: 80px">
|
||||||
<input class="input" type="number" title="" min="0" data-min="0.01" max="999999"
|
<input class="input" type="number" title="" min="0" data-min="0.01" max="999999" @input="$handleInputLimit"
|
||||||
@input="$handleInputLimit" v-model="entityOptions.extendWidth" />
|
v-model="entityOptions.extendWidth" />
|
||||||
<span class="unit">m</span>
|
<span class="unit">m</span>
|
||||||
<span class="arrow"></span>
|
<span class="arrow"></span>
|
||||||
</div>
|
</div>
|
||||||
@ -190,7 +190,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<button @click="remove">删除</button>
|
<button @click="remove">删除</button>
|
||||||
<button @click="confirm">确定</button>
|
<button @click="confirm">确定</button>
|
||||||
<button @click="close">关闭</button>
|
<button @click="close">取消</button>
|
||||||
</template>
|
</template>
|
||||||
</Dialog>
|
</Dialog>
|
||||||
</template>
|
</template>
|
||||||
@ -554,4 +554,14 @@ defineExpose({
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.polyline.dialog-en {
|
||||||
|
::v-deep>.content {
|
||||||
|
.attribute-content-link .table .tr .td.operation button,
|
||||||
|
.attribute-content-vr .table .tr .td.operation button,
|
||||||
|
.attribute-content-rtmp .table .tr .td.operation button {
|
||||||
|
width: 76px !important;
|
||||||
|
flex: 0 0 76px !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
@ -56,7 +56,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<button @click="remove">删除</button>
|
<button @click="remove">删除</button>
|
||||||
<button @click="confirm">确定</button>
|
<button @click="confirm">确定</button>
|
||||||
<button @click="close">关闭</button>
|
<button @click="close">取消</button>
|
||||||
</template>
|
</template>
|
||||||
</Dialog>
|
</Dialog>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@ -36,7 +36,7 @@
|
|||||||
</template>
|
</template>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<button @click="sure">确认</button>
|
<button @click="sure">确认</button>
|
||||||
<button @click="close">关闭</button>
|
<button @click="close">取消</button>
|
||||||
</template>
|
</template>
|
||||||
</Dialog>
|
</Dialog>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@ -76,7 +76,7 @@
|
|||||||
<template #footer>
|
<template #footer>
|
||||||
<button @click="remove">删除</button>
|
<button @click="remove">删除</button>
|
||||||
<button @click="confirm">确定</button>
|
<button @click="confirm">确定</button>
|
||||||
<button @click="close">关闭</button>
|
<button @click="close">取消</button>
|
||||||
</template>
|
</template>
|
||||||
</Dialog>
|
</Dialog>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@ -179,6 +179,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
|
//@ts-nocheck
|
||||||
import { useI18n } from 'vue-i18n'
|
import { useI18n } from 'vue-i18n'
|
||||||
import { Search } from '@element-plus/icons-vue'
|
import { Search } from '@element-plus/icons-vue'
|
||||||
import { ref, onMounted, onBeforeUnmount, watch } from 'vue'
|
import { ref, onMounted, onBeforeUnmount, watch } from 'vue'
|
||||||
|
|||||||
@ -194,7 +194,7 @@
|
|||||||
<button @click="returnY"><svg-icon name="yaxis" :size="12"></svg-icon>Y轴翻转</button>
|
<button @click="returnY"><svg-icon name="yaxis" :size="12"></svg-icon>Y轴翻转</button>
|
||||||
<button @click="remove">删除</button>
|
<button @click="remove">删除</button>
|
||||||
<button @click="confirm">确定</button>
|
<button @click="confirm">确定</button>
|
||||||
<button @click="close">关闭</button>
|
<button @click="close">取消</button>
|
||||||
</template>
|
</template>
|
||||||
</Dialog>
|
</Dialog>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@ -74,7 +74,7 @@
|
|||||||
</template>
|
</template>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<button @click="save">保存</button>
|
<button @click="save">保存</button>
|
||||||
<button @click="close">关闭</button>
|
<button @click="close">取消</button>
|
||||||
</template>
|
</template>
|
||||||
</Dialog>
|
</Dialog>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@ -1,6 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<Dialog ref="baseDialog" title="贴地文字属性" left="180px" top="100px" className="ground-text"
|
<Dialog ref="baseDialog" title="贴地文字属性" left="180px" top="100px" className="ground-text" :closeCallback="closeCallback">
|
||||||
:closeCallback="closeCallback">
|
|
||||||
<template #content>
|
<template #content>
|
||||||
<span class="custom-divider"></span>
|
<span class="custom-divider"></span>
|
||||||
<div class="div-item">
|
<div class="div-item">
|
||||||
@ -11,8 +10,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="col">
|
<div class="col">
|
||||||
<span class="label">颜色</span>
|
<span class="label">颜色</span>
|
||||||
<div class="color" ref="colorRef" </div>
|
<div class="color" ref="colorRef"></div>
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<span class="custom-divider"></span>
|
<span class="custom-divider"></span>
|
||||||
@ -25,7 +23,8 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="col">
|
<div class="col">
|
||||||
<span class="label">纬度</span>
|
<span class="label">纬度</span>
|
||||||
<input class="input" type="number" title="" min="-90" max="90" v-model="entityOptions.lat" @input="$handleInputLimit">
|
<input class="input" type="number" title="" min="-90" max="90" v-model="entityOptions.lat"
|
||||||
|
@input="$handleInputLimit">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -37,8 +36,8 @@
|
|||||||
<input type="range" max="360" min="0" step="1" v-model="entityOptions.angle">
|
<input type="range" max="360" min="0" step="1" v-model="entityOptions.angle">
|
||||||
<div class="input-number input-number-unit"
|
<div class="input-number input-number-unit"
|
||||||
style="width: 100px;flex: 0 0 100px;margin-left: 10px;">
|
style="width: 100px;flex: 0 0 100px;margin-left: 10px;">
|
||||||
<input class="input" type="number" title="" min="0" max="360" step="1" @input="$handleInputLimit"
|
<input class="input" type="number" title="" min="0" max="360" step="1"
|
||||||
v-model="entityOptions.angle">
|
@input="$handleInputLimit" v-model="entityOptions.angle">
|
||||||
<span class="unit">°</span>
|
<span class="unit">°</span>
|
||||||
<span class="arrow"></span>
|
<span class="arrow"></span>
|
||||||
</div>
|
</div>
|
||||||
@ -60,14 +59,15 @@
|
|||||||
<span class="label">滚动速度</span>
|
<span class="label">滚动速度</span>
|
||||||
<input type="range" max="100" min="0" step="1" v-model="entityOptions.speed">
|
<input type="range" max="100" min="0" step="1" v-model="entityOptions.speed">
|
||||||
<div class="input-number" style="width: 100px;flex: 0 0 100px;margin-left: 10px;">
|
<div class="input-number" style="width: 100px;flex: 0 0 100px;margin-left: 10px;">
|
||||||
<input class="input" type="number" title="" min="0" max="100" step="1" @input="$handleInputLimit"
|
<input class="input" type="number" title="" min="0" max="100" step="1"
|
||||||
v-model="entityOptions.speed">
|
@input="$handleInputLimit" v-model="entityOptions.speed">
|
||||||
<span class="arrow"></span>
|
<span class="arrow"></span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<span class="custom-divider"></span>
|
<span class="custom-divider"></span>
|
||||||
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<div style="position: absolute; left: 24px; display: flex;">
|
<div style="position: absolute; left: 24px; display: flex;">
|
||||||
@ -77,7 +77,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<button @click="remove">删除</button>
|
<button @click="remove">删除</button>
|
||||||
<button @click="confirm">确定</button>
|
<button @click="confirm">确定</button>
|
||||||
<button @click="close">关闭</button>
|
<button @click="close">取消</button>
|
||||||
</template>
|
</template>
|
||||||
</Dialog>
|
</Dialog>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@ -32,7 +32,7 @@
|
|||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<button @click="save">保存</button>
|
<button @click="save">保存</button>
|
||||||
<button @click="close">关闭</button>
|
<button @click="close">取消</button>
|
||||||
</template>
|
</template>
|
||||||
</Dialog>
|
</Dialog>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@ -38,7 +38,7 @@
|
|||||||
<div class="row"></div>
|
<div class="row"></div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col">
|
<div class="col">
|
||||||
<span class="label">字体样式</span>
|
<span class="label">字体风格</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
@ -63,7 +63,7 @@
|
|||||||
</el-select>
|
</el-select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<!-- <div class="row">
|
||||||
<div class="col">
|
<div class="col">
|
||||||
<div class="customized-tip"></div>
|
<div class="customized-tip"></div>
|
||||||
<span class="label" style="flex: none;">{{ t('general.text.style') }}</span>
|
<span class="label" style="flex: none;">{{ t('general.text.style') }}</span>
|
||||||
@ -106,7 +106,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col"></div>
|
<div class="col"></div>
|
||||||
</div>
|
</div> -->
|
||||||
<span class="custom-divider"></span>
|
<span class="custom-divider"></span>
|
||||||
<div class="row"></div>
|
<div class="row"></div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
@ -124,13 +124,6 @@
|
|||||||
<div class="labelBackgroundColorStart" ref="labelBackgroundColorStartRef" style="margin-right: 10px;"></div>
|
<div class="labelBackgroundColorStart" ref="labelBackgroundColorStartRef" style="margin-right: 10px;"></div>
|
||||||
<div class="labelBackgroundColorEnd" ref="labelBackgroundColorEndRef"></div>
|
<div class="labelBackgroundColorEnd" ref="labelBackgroundColorEndRef"></div>
|
||||||
</div>
|
</div>
|
||||||
<!-- <div class="col font-select-box">
|
|
||||||
<span class="label" style="flex: none">字体选择</span>
|
|
||||||
<el-select class="input input-select font-select" v-model="entityOptions.labelFontFamily">
|
|
||||||
<el-option v-for="item in fontList" :key="item.key" :label="item.name" :value="item.key">
|
|
||||||
</el-option>
|
|
||||||
</el-select>
|
|
||||||
</div> -->
|
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col">
|
<div class="col">
|
||||||
|
|||||||
@ -31,7 +31,7 @@
|
|||||||
<template #footer>
|
<template #footer>
|
||||||
<button @click="remove">删除</button>
|
<button @click="remove">删除</button>
|
||||||
<button @click="confirm">确定</button>
|
<button @click="confirm">确定</button>
|
||||||
<button @click="close">关闭</button>
|
<button @click="close">取消</button>
|
||||||
</template>
|
</template>
|
||||||
</Dialog>
|
</Dialog>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@ -524,7 +524,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<button @click="remove">删除</button>
|
<button @click="remove">删除</button>
|
||||||
<button @click="confirm">确定</button>
|
<button @click="confirm">确定</button>
|
||||||
<button @click="close">关闭</button>
|
<button @click="close">取消</button>
|
||||||
</template>
|
</template>
|
||||||
</Dialog>
|
</Dialog>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@ -74,7 +74,7 @@
|
|||||||
</template>
|
</template>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<button @click="save">保存</button>
|
<button @click="save">保存</button>
|
||||||
<button @click="close">关闭</button>
|
<button @click="close">取消</button>
|
||||||
</template>
|
</template>
|
||||||
</Dialog>
|
</Dialog>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@ -183,7 +183,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<button @click="remove">删除</button>
|
<button @click="remove">删除</button>
|
||||||
<button @click="confirm">确定</button>
|
<button @click="confirm">确定</button>
|
||||||
<button @click="close">关闭</button>
|
<button @click="close">取消</button>
|
||||||
</template>
|
</template>
|
||||||
</Dialog>
|
</Dialog>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<Dialog ref="baseDialog" :title="title+'属性'" left="180px" top="100px" className="polygon" :closeCallback="closeCallback">
|
<Dialog ref="baseDialog" :title="title + '属性'" left="180px" top="100px" className="polygon"
|
||||||
|
:closeCallback="closeCallback">
|
||||||
<template #content>
|
<template #content>
|
||||||
<span class="custom-divider"></span>
|
<span class="custom-divider"></span>
|
||||||
<div class="div-item">
|
<div class="div-item">
|
||||||
@ -43,7 +44,8 @@
|
|||||||
<div class="col">
|
<div class="col">
|
||||||
<span class="label">Z值统一增加</span>
|
<span class="label">Z值统一增加</span>
|
||||||
<div class="input-number input-number-unit-1 height-box" :class="{ 'disabled': heightMode == 2 }">
|
<div class="input-number input-number-unit-1 height-box" :class="{ 'disabled': heightMode == 2 }">
|
||||||
<input class="input height" type="number" title="" min="-9999999" max="999999999" v-model="height" @input="$handleInputLimit" />
|
<input class="input height" type="number" title="" min="-9999999" max="999999999" v-model="height"
|
||||||
|
@input="$handleInputLimit" />
|
||||||
<span class="unit">m</span>
|
<span class="unit">m</span>
|
||||||
<span class="arrow"></span>
|
<span class="arrow"></span>
|
||||||
</div>
|
</div>
|
||||||
@ -66,15 +68,18 @@
|
|||||||
<div class="td">{{ i + 1 }}</div>
|
<div class="td">{{ i + 1 }}</div>
|
||||||
<div class="td lng align-center" @dblclick="inputDblclick($event, i, 'lng')">
|
<div class="td lng align-center" @dblclick="inputDblclick($event, i, 'lng')">
|
||||||
<input class="input" @blur="inputBlurCallBack($event, i, 'lng', 8)" type="number"
|
<input class="input" @blur="inputBlurCallBack($event, i, 'lng', 8)" type="number"
|
||||||
v-model="item.lng" min="-180" max="180" v-if="activeTd.index == i && activeTd.name == 'lng'" @input="$handleInputLimit" />
|
v-model="item.lng" min="-180" max="180" v-if="activeTd.index == i && activeTd.name == 'lng'"
|
||||||
|
@input="$handleInputLimit" />
|
||||||
<span style="pointer-events: none;" v-else>{{ (item.lng).toFixed(8) }}</span>
|
<span style="pointer-events: none;" v-else>{{ (item.lng).toFixed(8) }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="td lat align-center" @dblclick="inputDblclick($event, i, 'lat')">
|
<div class="td lat align-center" @dblclick="inputDblclick($event, i, 'lat')">
|
||||||
<input class="input" @blur="inputBlurCallBack($event, i, 'lat', 8)" type="number"
|
<input class="input" @blur="inputBlurCallBack($event, i, 'lat', 8)" type="number"
|
||||||
v-model="item.lat" min="-180" max="180" v-if="activeTd.index == i && activeTd.name == 'lat'" @input="$handleInputLimit">
|
v-model="item.lat" min="-180" max="180" v-if="activeTd.index == i && activeTd.name == 'lat'"
|
||||||
|
@input="$handleInputLimit">
|
||||||
<span style="pointer-events: none;" v-else>{{ (item.lat).toFixed(8) }}</span>
|
<span style="pointer-events: none;" v-else>{{ (item.lat).toFixed(8) }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="td alt align-center" @dblclick="inputDblclick($event, i, 'alt')" @input="$handleInputLimit">
|
<div class="td alt align-center" @dblclick="inputDblclick($event, i, 'alt')"
|
||||||
|
@input="$handleInputLimit">
|
||||||
<input class="input" @blur="inputBlurCallBack($event, i, 'alt', 2)" type="number"
|
<input class="input" @blur="inputBlurCallBack($event, i, 'alt', 2)" type="number"
|
||||||
v-model="entityOptions.height" min="-9999999" max="999999999"
|
v-model="entityOptions.height" min="-9999999" max="999999999"
|
||||||
v-if="activeTd.index == i && activeTd.name == 'alt'">
|
v-if="activeTd.index == i && activeTd.name == 'alt'">
|
||||||
@ -98,7 +103,8 @@
|
|||||||
<div class="col">
|
<div class="col">
|
||||||
<span class="label">描边宽度</span>
|
<span class="label">描边宽度</span>
|
||||||
<div class="input-number input-number-unit-2">
|
<div class="input-number input-number-unit-2">
|
||||||
<input class="input" type="number" title="" min="0" max="99" v-model="entityOptions.lineWidth" @input="$handleInputLimit">
|
<input class="input" type="number" title="" min="0" max="99" v-model="entityOptions.lineWidth"
|
||||||
|
@input="$handleInputLimit">
|
||||||
<span class="unit">px</span>
|
<span class="unit">px</span>
|
||||||
<span class="arrow"></span>
|
<span class="arrow"></span>
|
||||||
</div>
|
</div>
|
||||||
@ -124,7 +130,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<button @click="remove">删除</button>
|
<button @click="remove">删除</button>
|
||||||
<button @click="confirm">确定</button>
|
<button @click="confirm">确定</button>
|
||||||
<button @click="close">关闭</button>
|
<button @click="close">取消</button>
|
||||||
</template>
|
</template>
|
||||||
</Dialog>
|
</Dialog>
|
||||||
</template>
|
</template>
|
||||||
@ -376,4 +382,16 @@ defineExpose({
|
|||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss"></style>
|
<style scoped lang="scss">
|
||||||
|
.polygon.dialog-en {
|
||||||
|
::v-deep>.content {
|
||||||
|
|
||||||
|
.attribute-content-link .table .tr .td.operation button,
|
||||||
|
.attribute-content-vr .table .tr .td.operation button,
|
||||||
|
.attribute-content-rtmp .table .tr .td.operation button {
|
||||||
|
width: 76px !important;
|
||||||
|
flex: 0 0 76px !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|||||||
@ -64,7 +64,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<button @click="remove">删除</button>
|
<button @click="remove">删除</button>
|
||||||
<button @click="confirm">确定</button>
|
<button @click="confirm">确定</button>
|
||||||
<button @click="close">关闭</button>
|
<button @click="close">取消</button>
|
||||||
</template>
|
</template>
|
||||||
</Dialog>
|
</Dialog>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@ -75,8 +75,8 @@
|
|||||||
<div class="col" style="flex: 0 0 33%">
|
<div class="col" style="flex: 0 0 33%">
|
||||||
<span class="label">缓冲宽度</span>
|
<span class="label">缓冲宽度</span>
|
||||||
<div class="input-number input-number-unit-1" style="width: 80px">
|
<div class="input-number input-number-unit-1" style="width: 80px">
|
||||||
<input class="input" type="number" title="" min="0" data-min="0.01" max="999999"
|
<input class="input" type="number" title="" min="0" data-min="0.01" max="999999" @input="$handleInputLimit"
|
||||||
@input="$handleInputLimit" v-model="entityOptions.extendWidth" />
|
v-model="entityOptions.extendWidth" />
|
||||||
<span class="unit">m</span>
|
<span class="unit">m</span>
|
||||||
<span class="arrow"></span>
|
<span class="arrow"></span>
|
||||||
</div>
|
</div>
|
||||||
@ -111,13 +111,13 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="div-item">
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<el-tabs v-model="activeName">
|
<el-tabs v-model="activeName">
|
||||||
<el-tab-pane label="属性信息" name="1">
|
<el-tab-pane label="属性信息" name="1">
|
||||||
<attribute :entityOptions="entityOptions"></attribute>
|
<attribute :entityOptions="entityOptions"></attribute>
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
<el-tab-pane label="空间信息" name="2">
|
<el-tab-pane label="空间信息" name="2">
|
||||||
|
<div class="div-item">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col height-mode-box">
|
<div class="col height-mode-box">
|
||||||
<span class="label" style="flex: 0 0 56px">高度模式</span>
|
<span class="label" style="flex: 0 0 56px">高度模式</span>
|
||||||
@ -176,13 +176,15 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
<el-tab-pane label="标签风格" name="3">
|
<el-tab-pane label="标签风格" name="3">
|
||||||
|
<div class="div-item">
|
||||||
<labelStyle type="线" :entityOptions="entityOptions"></labelStyle>
|
<labelStyle type="线" :entityOptions="entityOptions"></labelStyle>
|
||||||
|
</div>
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
</el-tabs>
|
</el-tabs>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
<span class="custom-divider"></span>
|
<span class="custom-divider"></span>
|
||||||
</template>
|
</template>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
@ -200,7 +202,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<button @click="remove">删除</button>
|
<button @click="remove">删除</button>
|
||||||
<button @click="confirm">确定</button>
|
<button @click="confirm">确定</button>
|
||||||
<button @click="close">关闭</button>
|
<button @click="close">取消</button>
|
||||||
</template>
|
</template>
|
||||||
</Dialog>
|
</Dialog>
|
||||||
</template>
|
</template>
|
||||||
@ -562,4 +564,16 @@ defineExpose({
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.polyline.dialog-en {
|
||||||
|
::v-deep>.content {
|
||||||
|
|
||||||
|
.attribute-content-link .table .tr .td.operation button,
|
||||||
|
.attribute-content-vr .table .tr .td.operation button,
|
||||||
|
.attribute-content-rtmp .table .tr .td.operation button {
|
||||||
|
width: 76px !important;
|
||||||
|
flex: 0 0 76px !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@ -66,7 +66,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<button @click="remove">删除</button>
|
<button @click="remove">删除</button>
|
||||||
<button @click="confirm">确定</button>
|
<button @click="confirm">确定</button>
|
||||||
<button @click="close">关闭</button>
|
<button @click="close">取消</button>
|
||||||
</template>
|
</template>
|
||||||
</Dialog>
|
</Dialog>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@ -82,7 +82,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<button @click="remove">删除</button>
|
<button @click="remove">删除</button>
|
||||||
<button @click="confirm">确定</button>
|
<button @click="confirm">确定</button>
|
||||||
<button @click="close">关闭</button>
|
<button @click="close">取消</button>
|
||||||
</template>
|
</template>
|
||||||
</Dialog>
|
</Dialog>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@ -24,7 +24,7 @@ import { GisApi } from '@/api/gisApi'
|
|||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
});
|
});
|
||||||
|
|
||||||
const host = window.location.host
|
const host = localStorage.getItem('ip')
|
||||||
const visible = ref(false)
|
const visible = ref(false)
|
||||||
const baseDialog:any = ref(null);
|
const baseDialog:any = ref(null);
|
||||||
const eventBus:any = inject("bus");
|
const eventBus:any = inject("bus");
|
||||||
|
|||||||
@ -39,7 +39,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<button @click="remove">删除</button>
|
<button @click="remove">删除</button>
|
||||||
<button @click="confirm">确定</button>
|
<button @click="confirm">确定</button>
|
||||||
<button @click="close">关闭</button>
|
<button @click="close">取消</button>
|
||||||
</template>
|
</template>
|
||||||
</Dialog>
|
</Dialog>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@ -14,7 +14,7 @@
|
|||||||
<template #footer>
|
<template #footer>
|
||||||
<button @click="remove">删除</button>
|
<button @click="remove">删除</button>
|
||||||
<button @click="confirm">确定</button>
|
<button @click="confirm">确定</button>
|
||||||
<button @click="close">关闭</button>
|
<button @click="close">取消</button>
|
||||||
</template>
|
</template>
|
||||||
</Dialog>
|
</Dialog>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@ -49,7 +49,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<button @click="remove">删除</button>
|
<button @click="remove">删除</button>
|
||||||
<button @click="confirm">确定</button>
|
<button @click="confirm">确定</button>
|
||||||
<button @click="close">关闭</button>
|
<button @click="close">取消</button>
|
||||||
</template>
|
</template>
|
||||||
</Dialog>
|
</Dialog>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@ -233,7 +233,7 @@
|
|||||||
<template #footer>
|
<template #footer>
|
||||||
<button @click="remove">删除</button>
|
<button @click="remove">删除</button>
|
||||||
<button @click="confirm">确定</button>
|
<button @click="confirm">确定</button>
|
||||||
<button @click="close">关闭</button>
|
<button @click="close">取消</button>
|
||||||
</template>
|
</template>
|
||||||
</Dialog>
|
</Dialog>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@ -21,7 +21,7 @@
|
|||||||
</template>
|
</template>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<button @click="confirm">确定</button>
|
<button @click="confirm">确定</button>
|
||||||
<button @click="close">关闭</button>
|
<button @click="close">取消</button>
|
||||||
</template>
|
</template>
|
||||||
</Dialog>
|
</Dialog>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@ -12,18 +12,18 @@
|
|||||||
<div class="div-item" style="display: flex">
|
<div class="div-item" style="display: flex">
|
||||||
<button @click="importHeader" style="margin-right: 15px">
|
<button @click="importHeader" style="margin-right: 15px">
|
||||||
<svg class="icon-updateheigh">
|
<svg class="icon-updateheigh">
|
||||||
<use xlink:href="#icon-importHeader"></use></svg
|
<use xlink:href="#icon-importHeader"></use>
|
||||||
>{{ t('vector.导入表头') }}
|
</svg>{{ t('vector.导入表头') }}
|
||||||
</button>
|
</button>
|
||||||
<button @click="downloadHeader">
|
<button @click="downloadHeader">
|
||||||
<svg>
|
<svg>
|
||||||
<use xlink:href="#icon-download"></use></svg
|
<use xlink:href="#icon-download"></use>
|
||||||
>{{ t('vector.下载字典模板') }}
|
</svg>{{ t('vector.下载字典模板') }}
|
||||||
</button>
|
</button>
|
||||||
<button @click="exportExcel" style="position: absolute; right: 25px">
|
<button @click="exportExcel" style="position: absolute; right: 25px">
|
||||||
<svg>
|
<svg>
|
||||||
<use xlink:href="#icon-export"></use></svg
|
<use xlink:href="#icon-export"></use>
|
||||||
>{{ t('vector.导出') }}
|
</svg>{{ t('vector.导出') }}
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<span class="custom-divider"></span>
|
<span class="custom-divider"></span>
|
||||||
@ -113,9 +113,10 @@ const maxPageNum: any = ref(0)
|
|||||||
const filterData: any = ref([])
|
const filterData: any = ref([])
|
||||||
const title = ref('')
|
const title = ref('')
|
||||||
const closeCallback = () => {
|
const closeCallback = () => {
|
||||||
entityOptions.value.originalOptions = structuredClone(originalOptions)
|
// entityOptions.value.originalOptions = structuredClone(originalOptions)
|
||||||
entityOptions.value.reset()
|
// console.log('entityOptions--------------', entityOptions.value)
|
||||||
eventBus.emit('destroyComponent')
|
// entityOptions.value.reset()
|
||||||
|
// eventBus.emit('destroyComponent')
|
||||||
}
|
}
|
||||||
const getKeys = () => {
|
const getKeys = () => {
|
||||||
keyData.value = []
|
keyData.value = []
|
||||||
@ -140,9 +141,8 @@ let features
|
|||||||
const open = async (id: any) => {
|
const open = async (id: any) => {
|
||||||
// that = window.earth.entityMap.get(id)
|
// that = window.earth.entityMap.get(id)
|
||||||
node = window.treeObj.getNodeByParam('id', id, null)
|
node = window.treeObj.getNodeByParam('id', id, null)
|
||||||
entityOptions.value.field = JSON.parse(node.params).field
|
|
||||||
that = getThat(node)
|
that = getThat(node)
|
||||||
console.log(node, that, entityOptions.field, 'yyyyyyyyyyyyyy')
|
entityOptions.value.field = that.field
|
||||||
if (that.options.id === id) {
|
if (that.options.id === id) {
|
||||||
features = that.geojson.features
|
features = that.geojson.features
|
||||||
} else {
|
} else {
|
||||||
@ -157,7 +157,7 @@ const open = async (id: any) => {
|
|||||||
let spliceData = arrSplice(arr, pageSize.value)
|
let spliceData = arrSplice(arr, pageSize.value)
|
||||||
maxPageNum.value = spliceData.length
|
maxPageNum.value = spliceData.length
|
||||||
tableData.value = spliceData[pageNum.value - 1]
|
tableData.value = spliceData[pageNum.value - 1]
|
||||||
title.value = node.sourceName
|
title.value = node.title || node.sourceName
|
||||||
getKeys()
|
getKeys()
|
||||||
originalOptions = structuredClone(that.options)
|
originalOptions = structuredClone(that.options)
|
||||||
entityOptions.value = that
|
entityOptions.value = that
|
||||||
@ -227,8 +227,8 @@ const getTableList = ({ page, limit }) => {
|
|||||||
tableData.value = spliceData[pageNum.value - 1]
|
tableData.value = spliceData[pageNum.value - 1]
|
||||||
}
|
}
|
||||||
const changeFieId = async (e) => {
|
const changeFieId = async (e) => {
|
||||||
console.log(e, 'eeeeeeeee')
|
let fNode = window.treeObj.getNodeByParam('id', that.options.id, null)
|
||||||
let data = JSON.parse(node.params)
|
let data = JSON.parse(fNode.params)
|
||||||
data.field = e
|
data.field = e
|
||||||
let params2 = {
|
let params2 = {
|
||||||
id: data.id,
|
id: data.id,
|
||||||
|
|||||||
@ -98,7 +98,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<button @click="remove">删除</button>
|
<button @click="remove">删除</button>
|
||||||
<button @click="confirm">确定</button>
|
<button @click="confirm">确定</button>
|
||||||
<button @click="close">关闭</button>
|
<button @click="close">取消</button>
|
||||||
</template>
|
</template>
|
||||||
</Dialog>
|
</Dialog>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@ -31,12 +31,16 @@
|
|||||||
<span class="label">材质样式</span>
|
<span class="label">材质样式</span>
|
||||||
<el-select class="input input-select input-select-line-type" v-model="entityOptions.material">
|
<el-select class="input input-select input-select-line-type" v-model="entityOptions.material">
|
||||||
<template #label="{ label, value }">
|
<template #label="{ label, value }">
|
||||||
<i class="yj-custom-icon" :class="material[value].icon"></i>
|
<i class="yj-custom-icon" :class="material[value].icon"
|
||||||
|
:style="`background: url(${material[value].icon}) 100% 100% no-repeat;background-size: 100% 100%;`">
|
||||||
|
</i>
|
||||||
{{ label }}
|
{{ label }}
|
||||||
</template>
|
</template>
|
||||||
<el-option v-for="item in material" :key="item.key" :label="item.name" :value="item.key">
|
<el-option v-for="item in material" :key="item.key" :label="item.name" :value="item.key">
|
||||||
<div style="display: flex; align-items: center;">
|
<div style="display: flex; align-items: center;">
|
||||||
<i class="yj-custom-icon" :class="item.icon"></i>
|
<i class="yj-custom-icon" :class="item.icon"
|
||||||
|
:style="`background: url(${item.icon}) 100% 100% no-repeat;background-size: 100% 100%;`"
|
||||||
|
></i>
|
||||||
{{ item.name }}
|
{{ item.name }}
|
||||||
</div>
|
</div>
|
||||||
</el-option>
|
</el-option>
|
||||||
@ -99,25 +103,25 @@ const material = ref([
|
|||||||
name: '纯色墙',
|
name: '纯色墙',
|
||||||
value: '纯色墙',
|
value: '纯色墙',
|
||||||
key: 0,
|
key: 0,
|
||||||
icon: 'icon-wall'
|
icon: '../sdk/custom/img/icon-wall.png',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: '上升墙',
|
name: '上升墙',
|
||||||
value: '上升墙',
|
value: '上升墙',
|
||||||
key: 1,
|
key: 1,
|
||||||
icon: 'icon-wall-gradient'
|
icon: '../sdk/custom/img/icon-wall-gradient.png'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: '箭头墙',
|
name: '箭头墙',
|
||||||
value: '箭头墙',
|
value: '箭头墙',
|
||||||
key: 2,
|
key: 2,
|
||||||
icon: 'icon-wall-arrow'
|
icon: '../sdk/img/material/arrow.png'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: '警戒墙',
|
name: '警戒墙',
|
||||||
value: '警戒墙',
|
value: '警戒墙',
|
||||||
key: 3,
|
key: 3,
|
||||||
icon: 'icon-wall-warn'
|
icon: '../sdk/img/material/warn.png'
|
||||||
}
|
}
|
||||||
])
|
])
|
||||||
eventBus.on("openStandTextAdd", () => {
|
eventBus.on("openStandTextAdd", () => {
|
||||||
|
|||||||
@ -98,6 +98,7 @@ export const useRightOperate = () => {
|
|||||||
params.params = JSON.stringify(params.params)
|
params.params = JSON.stringify(params.params)
|
||||||
cusAddNodes(window.treeObj, params.parentId, [params])
|
cusAddNodes(window.treeObj, params.parentId, [params])
|
||||||
let entityObject = renderVector(params, true);
|
let entityObject = renderVector(params, true);
|
||||||
|
entityObject.flyTo();
|
||||||
(window as any)._entityMap.set(id, entityObject)
|
(window as any)._entityMap.set(id, entityObject)
|
||||||
} else if (["geojson"].includes(sourceType)) {
|
} else if (["geojson"].includes(sourceType)) {
|
||||||
let baseURL = localStorage.getItem('ip')
|
let baseURL = localStorage.getItem('ip')
|
||||||
@ -113,6 +114,8 @@ export const useRightOperate = () => {
|
|||||||
width: 1,
|
width: 1,
|
||||||
color: "rgb(239, 6, 6, 1)",
|
color: "rgb(239, 6, 6, 1)",
|
||||||
}
|
}
|
||||||
|
}, (entity:any) => {
|
||||||
|
entity?.flyTo()
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
// 获取最后一个点的位置
|
// 获取最后一个点的位置
|
||||||
@ -683,7 +686,9 @@ export const useRightOperate = () => {
|
|||||||
})
|
})
|
||||||
for (let i = 0; i < res.data.length; i++) {
|
for (let i = 0; i < res.data.length; i++) {
|
||||||
let item = res.data[i]
|
let item = res.data[i]
|
||||||
initMapData(type, JSON.parse(item.params), null)
|
initMapData(type, JSON.parse(item.params), (entity: any) => {
|
||||||
|
entity.flyTo()
|
||||||
|
})
|
||||||
}
|
}
|
||||||
cusAddNodes(window.treeObj, parentId, res.data)
|
cusAddNodes(window.treeObj, parentId, res.data)
|
||||||
}
|
}
|
||||||
|
|||||||
@ -595,6 +595,7 @@ export const useTreeNode = () => {
|
|||||||
node.sourceName = sourceName;
|
node.sourceName = sourceName;
|
||||||
node.oldname = sourceName;
|
node.oldname = sourceName;
|
||||||
node.params = params;
|
node.params = params;
|
||||||
|
delete node.title
|
||||||
window.treeObj.updateNode(node);
|
window.treeObj.updateNode(node);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,13 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div
|
<div class="login-container" style="position: fixed; width: 100vw; height: 100vh; left: 0; top: 0">
|
||||||
class="login-container"
|
<transition name="video-fade" mode="out-in"
|
||||||
style="position: fixed; width: 100vw; height: 100vh; left: 0; top: 0"
|
style="position: fixed; width: 100vw; height: 100vh; left: 0; top: 0; object-fit: cover">
|
||||||
>
|
|
||||||
<transition
|
|
||||||
name="video-fade"
|
|
||||||
mode="out-in"
|
|
||||||
style="position: fixed; width: 100vw; height: 100vh; left: 0; top: 0; object-fit: cover"
|
|
||||||
>
|
|
||||||
<!-- 第一个视频,播放一次 -->
|
<!-- 第一个视频,播放一次 -->
|
||||||
<!-- <video v-if="!isFirstVideoPlayed" ref="firstVideoRef" key="first-video" muted @ended="onFirstVideoEnded"
|
<!-- <video v-if="!isFirstVideoPlayed" ref="firstVideoRef" key="first-video" muted @ended="onFirstVideoEnded"
|
||||||
src="../../assets/video/login_front.mp4"
|
src="../../assets/video/login_front.mp4"
|
||||||
@ -15,14 +9,8 @@
|
|||||||
<!-- 第二个视频,循环播放 -->
|
<!-- 第二个视频,循环播放 -->
|
||||||
<!-- <video v-else key="second-video" autoplay loop muted src="../../assets/video/login_feature.mp4"
|
<!-- <video v-else key="second-video" autoplay loop muted src="../../assets/video/login_feature.mp4"
|
||||||
style="position: fixed; width: 100vw; height: 100vh; left: 0; top: 0; object-fit: cover"></video> -->
|
style="position: fixed; width: 100vw; height: 100vh; left: 0; top: 0; object-fit: cover"></video> -->
|
||||||
<video
|
<video key="second-video" autoplay loop muted src="../../assets/video/author_video.mp4"
|
||||||
key="second-video"
|
style="position: fixed; width: 100vw; height: 100vh; left: 0; top: 0; object-fit: cover"></video>
|
||||||
autoplay
|
|
||||||
loop
|
|
||||||
muted
|
|
||||||
src="../../assets/video/author_video.mp4"
|
|
||||||
style="position: fixed; width: 100vw; height: 100vh; left: 0; top: 0; object-fit: cover"
|
|
||||||
></video>
|
|
||||||
</transition>
|
</transition>
|
||||||
<!-- 登录页面 -->
|
<!-- 登录页面 -->
|
||||||
<div class="rightBox" v-if="isDesktop">
|
<div class="rightBox" v-if="isDesktop">
|
||||||
@ -39,95 +27,45 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<el-form
|
<el-form class="login-form" autoComplete="on" :model="loginForm" :rules="loginRules" ref="loginFormRef"
|
||||||
class="login-form"
|
label-position="left">
|
||||||
autoComplete="on"
|
|
||||||
:model="loginForm"
|
|
||||||
:rules="loginRules"
|
|
||||||
ref="loginFormRef"
|
|
||||||
label-position="left"
|
|
||||||
>
|
|
||||||
<el-form-item prop="username">
|
<el-form-item prop="username">
|
||||||
<el-input
|
<el-input name="username" type="text" v-model="loginForm.username" autoComplete="on" placeholder="请输入用户名"
|
||||||
name="username"
|
:prefix-icon="User" />
|
||||||
type="text"
|
|
||||||
v-model="loginForm.username"
|
|
||||||
autoComplete="on"
|
|
||||||
placeholder="请输入用户名"
|
|
||||||
:prefix-icon="User"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item prop="password">
|
<el-form-item prop="password">
|
||||||
<el-input
|
<el-input type="password" @keyup.enter.native="handleLogin(loginFormRef)" v-model="loginForm.password"
|
||||||
type="password"
|
autoComplete="on" placeholder="请输入密码" :prefix-icon="Unlock" show-password></el-input>
|
||||||
@keyup.enter.native="handleLogin(loginFormRef)"
|
|
||||||
v-model="loginForm.password"
|
|
||||||
autoComplete="on"
|
|
||||||
placeholder="请输入密码"
|
|
||||||
:prefix-icon="Unlock"
|
|
||||||
show-password
|
|
||||||
></el-input>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item class="rememberForget">
|
<el-form-item class="rememberForget">
|
||||||
<!-- justify-content: space-around;align-items: center; -->
|
<!-- justify-content: space-around;align-items: center; -->
|
||||||
<div style="display: flex">
|
<div style="display: flex">
|
||||||
<svg
|
<svg class="checkbox-svg" v-show="checkboxVModel" style="pointer-events: none"
|
||||||
class="checkbox-svg"
|
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="14" height="14"
|
||||||
v-show="checkboxVModel"
|
viewBox="0 0 14 14" fill="none">
|
||||||
style="pointer-events: none"
|
<path fill="rgba(var(--color-base1), 1)"
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
d="M7.34788e-16 2L-2.20436e-15 12C-2.40727e-15 13.1046 0.895431 14 2 14L12 14C13.1046 14 14 13.1046 14 12L14 2C14 0.895431 13.1046 -1.46958e-15 12 -1.46958e-15L2 -1.46958e-15C0.895431 -1.60485e-15 8.02424e-16 0.895431 7.34788e-16 2Z">
|
||||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
</path>
|
||||||
width="14"
|
|
||||||
height="14"
|
|
||||||
viewBox="0 0 14 14"
|
|
||||||
fill="none"
|
|
||||||
>
|
|
||||||
<path
|
|
||||||
fill="rgba(var(--color-base1), 1)"
|
|
||||||
d="M7.34788e-16 2L-2.20436e-15 12C-2.40727e-15 13.1046 0.895431 14 2 14L12 14C13.1046 14 14 13.1046 14 12L14 2C14 0.895431 13.1046 -1.46958e-15 12 -1.46958e-15L2 -1.46958e-15C0.895431 -1.60485e-15 8.02424e-16 0.895431 7.34788e-16 2Z"
|
|
||||||
></path>
|
|
||||||
<path
|
<path
|
||||||
d="M5.47283 8.3039L3.10764 6.12807C3.06194 6.08647 2.99525 6.08647 2.94955 6.12946L2.04424 6.98093C1.98989 7.03224 1.98495 7.12376 2.03312 7.18201L6.03602 11.9566C6.09778 12.0301 6.20647 12.0065 6.24105 11.9136C7.03644 9.69343 9.25835 5.63439 11.9619 2.69585C11.999 2.65564 12.0101 2.59601 11.9904 2.54331L11.8211 2.08568C11.7915 2.00525 11.7038 1.97474 11.6396 2.02328C8.63587 4.21019 6.45966 6.92546 5.47283 8.3039Z"
|
d="M5.47283 8.3039L3.10764 6.12807C3.06194 6.08647 2.99525 6.08647 2.94955 6.12946L2.04424 6.98093C1.98989 7.03224 1.98495 7.12376 2.03312 7.18201L6.03602 11.9566C6.09778 12.0301 6.20647 12.0065 6.24105 11.9136C7.03644 9.69343 9.25835 5.63439 11.9619 2.69585C11.999 2.65564 12.0101 2.59601 11.9904 2.54331L11.8211 2.08568C11.7915 2.00525 11.7038 1.97474 11.6396 2.02328C8.63587 4.21019 6.45966 6.92546 5.47283 8.3039Z"
|
||||||
fill="#004242"
|
fill="#004242"></path>
|
||||||
></path>
|
|
||||||
</svg>
|
</svg>
|
||||||
<svg
|
<svg class="checkbox-svg" v-show="!checkboxVModel" style="pointer-events: none"
|
||||||
class="checkbox-svg"
|
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="14" height="14"
|
||||||
v-show="!checkboxVModel"
|
viewBox="0 0 14 14" fill="none">
|
||||||
style="pointer-events: none"
|
<path fill-rule="evenodd" fill="url(#linear_border_2442_533_0)"
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
d="M0 12L0 2C0 0.895431 0.895431 0 2 0L12 0C13.1046 0 14 0.895431 14 2L14 12C14 13.1046 13.1046 14 12 14L2 14C0.895431 14 0 13.1046 0 12ZM2 12.5C1.72386 12.5 1.5 12.2761 1.5 12L1.5 2C1.5 1.72386 1.72386 1.5 2 1.5L12 1.5C12.2761 1.5 12.5 1.72386 12.5 2L12.5 12C12.5 12.2761 12.2761 12.5 12 12.5L2 12.5Z">
|
||||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
</path>
|
||||||
width="14"
|
|
||||||
height="14"
|
|
||||||
viewBox="0 0 14 14"
|
|
||||||
fill="none"
|
|
||||||
>
|
|
||||||
<path
|
|
||||||
fill-rule="evenodd"
|
|
||||||
fill="url(#linear_border_2442_533_0)"
|
|
||||||
d="M0 12L0 2C0 0.895431 0.895431 0 2 0L12 0C13.1046 0 14 0.895431 14 2L14 12C14 13.1046 13.1046 14 12 14L2 14C0.895431 14 0 13.1046 0 12ZM2 12.5C1.72386 12.5 1.5 12.2761 1.5 12L1.5 2C1.5 1.72386 1.72386 1.5 2 1.5L12 1.5C12.2761 1.5 12.5 1.72386 12.5 2L12.5 12C12.5 12.2761 12.2761 12.5 12 12.5L2 12.5Z"
|
|
||||||
></path>
|
|
||||||
<defs>
|
<defs>
|
||||||
<linearGradient
|
<linearGradient id="linear_border_2442_533_0" x1="0" y1="-0.5574798583984375" x2="12.1173095703125"
|
||||||
id="linear_border_2442_533_0"
|
y2="12.878036499023438" gradientUnits="userSpaceOnUse">
|
||||||
x1="0"
|
|
||||||
y1="-0.5574798583984375"
|
|
||||||
x2="12.1173095703125"
|
|
||||||
y2="12.878036499023438"
|
|
||||||
gradientUnits="userSpaceOnUse"
|
|
||||||
>
|
|
||||||
<stop offset="0.0625" stop-color="rgba(var(--color-base1), 1)" />
|
<stop offset="0.0625" stop-color="rgba(var(--color-base1), 1)" />
|
||||||
<stop offset="1" stop-color="var(--color-border1)" />
|
<stop offset="1" stop-color="var(--color-border1)" />
|
||||||
</linearGradient>
|
</linearGradient>
|
||||||
</defs>
|
</defs>
|
||||||
</svg>
|
</svg>
|
||||||
<el-checkbox
|
<el-checkbox :disabled="loading" v-model="checkboxVModel" @change="rememberpwd"
|
||||||
:disabled="loading"
|
label="string">记住密码</el-checkbox>
|
||||||
v-model="checkboxVModel"
|
|
||||||
@change="rememberpwd"
|
|
||||||
label="string"
|
|
||||||
>记住密码</el-checkbox
|
|
||||||
>
|
|
||||||
<!-- <div style="cursor: pointer;">忘记密码?</div> -->
|
<!-- <div style="cursor: pointer;">忘记密码?</div> -->
|
||||||
</div>
|
</div>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@ -150,24 +88,15 @@
|
|||||||
<h2 class="greet"><span>欢迎您使用</span>实景三维电子沙盘系统</h2>
|
<h2 class="greet"><span>欢迎您使用</span>实景三维电子沙盘系统</h2>
|
||||||
<div class="serviceContent">
|
<div class="serviceContent">
|
||||||
<el-tabs v-model="selectedService" class="demo-tabs" @tab-click="handleSelect">
|
<el-tabs v-model="selectedService" class="demo-tabs" @tab-click="handleSelect">
|
||||||
<el-tab-pane
|
<el-tab-pane v-for="item in serviceOptions" :label="item.name" :name="item.name"></el-tab-pane>
|
||||||
v-for="item in serviceOptions"
|
|
||||||
:label="item.name"
|
|
||||||
:name="item.name"
|
|
||||||
></el-tab-pane>
|
|
||||||
</el-tabs>
|
</el-tabs>
|
||||||
<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" popper-class="login-select-popper" v-model="servVal">
|
<el-select class="select" popper-class="login-select-popper" v-model="servVal">
|
||||||
<el-option
|
<el-option size="mini" v-for="item in servOptions" :key="item.value" :label="item.name"
|
||||||
size="mini"
|
:value="item.name">
|
||||||
v-for="item in servOptions"
|
|
||||||
:key="item.value"
|
|
||||||
:label="item.name"
|
|
||||||
:value="item.name"
|
|
||||||
>
|
|
||||||
</el-option>
|
</el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</div>
|
</div>
|
||||||
@ -214,13 +143,8 @@
|
|||||||
<div class="item">
|
<div class="item">
|
||||||
<span class="itemLabel">串口选择</span>
|
<span class="itemLabel">串口选择</span>
|
||||||
<el-select class="select" popper-class="login-select-popper" v-model="gpsVal">
|
<el-select class="select" popper-class="login-select-popper" v-model="gpsVal">
|
||||||
<el-option
|
<el-option size="mini" v-for="item in gpsOptions" :key="item.value" :label="item.Product"
|
||||||
size="mini"
|
:value="item.Name">
|
||||||
v-for="item in gpsOptions"
|
|
||||||
:key="item.value"
|
|
||||||
:label="item.Product"
|
|
||||||
:value="item.Name"
|
|
||||||
>
|
|
||||||
</el-option>
|
</el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</div>
|
</div>
|
||||||
@ -235,14 +159,8 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- 授权页面 -->
|
<!-- 授权页面 -->
|
||||||
<Dialog
|
<Dialog ref="baseDialog" class="graffiti" title="系统授权" :closeCallback="closeCallBack" left="calc(50vw - 188px)"
|
||||||
ref="baseDialog"
|
top="calc(50vh - 191px)">
|
||||||
class="graffiti"
|
|
||||||
title="系统授权"
|
|
||||||
:closeCallback="closeCallBack"
|
|
||||||
left="calc(50vw - 188px)"
|
|
||||||
top="calc(50vh - 191px)"
|
|
||||||
>
|
|
||||||
<template #content>
|
<template #content>
|
||||||
<div class="auth_info custom_scroll_bar content_h">
|
<div class="auth_info custom_scroll_bar content_h">
|
||||||
<div class="auth_info_box">
|
<div class="auth_info_box">
|
||||||
@ -250,12 +168,7 @@
|
|||||||
<span class="fankuai"></span>
|
<span class="fankuai"></span>
|
||||||
{{ t('auths.authCode') }}
|
{{ t('auths.authCode') }}
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div class="auth_info_text" @click="copy(authInfo.license_code)" style="cursor: pointer" title="点击可复制">
|
||||||
class="auth_info_text"
|
|
||||||
@click="copy(authInfo.license_code)"
|
|
||||||
style="cursor: pointer"
|
|
||||||
title="点击可复制"
|
|
||||||
>
|
|
||||||
{{ authInfo.license_code || '' }}
|
{{ authInfo.license_code || '' }}
|
||||||
<svg-icon name="copy" :size="20" style="margin-left: 30px"></svg-icon>
|
<svg-icon name="copy" :size="20" style="margin-left: 30px"></svg-icon>
|
||||||
</div>
|
</div>
|
||||||
@ -278,22 +191,13 @@
|
|||||||
<span class="fankuai"></span>
|
<span class="fankuai"></span>
|
||||||
{{ t('auths.authType') }}
|
{{ t('auths.authType') }}
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div v-if="authInfo.status != null" class="auth_info_text" style="font-size: 16px" :style="{
|
||||||
v-if="authInfo.status != null"
|
|
||||||
class="auth_info_text"
|
|
||||||
style="font-size: 16px"
|
|
||||||
:style="{
|
|
||||||
color: authInfo.status ? 'rgba(27, 248, 195, 1)' : 'rgba(255, 161, 69, 1)'
|
color: authInfo.status ? 'rgba(27, 248, 195, 1)' : 'rgba(255, 161, 69, 1)'
|
||||||
}"
|
}">
|
||||||
>
|
|
||||||
{{ authInfo.status ? t('auths.authTempExpire') : t('auths.authexpire') }}
|
{{ authInfo.status ? t('auths.authTempExpire') : t('auths.authexpire') }}
|
||||||
</div>
|
</div>
|
||||||
<!-- <div v-else class="auth_info_text">{{ authInfo.message || '无' }}</div> -->
|
<!-- <div v-else class="auth_info_text">{{ authInfo.message || '无' }}</div> -->
|
||||||
<div
|
<div v-else class="auth_info_text" style="font-size: 16px; color: rgba(241, 108, 85, 1)">
|
||||||
v-else
|
|
||||||
class="auth_info_text"
|
|
||||||
style="font-size: 16px; color: rgba(241, 108, 85, 1)"
|
|
||||||
>
|
|
||||||
{{ t('auths.noAuthexpire') }}
|
{{ t('auths.noAuthexpire') }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -313,6 +217,14 @@
|
|||||||
import { User, Unlock, Setting, SwitchButton } from '@element-plus/icons-vue'
|
import { User, Unlock, Setting, SwitchButton } from '@element-plus/icons-vue'
|
||||||
import { useLogin } from './useLogin'
|
import { useLogin } from './useLogin'
|
||||||
import { useSetUp } from './useSetUp'
|
import { useSetUp } from './useSetUp'
|
||||||
|
import { useI18n } from 'vue-i18n'
|
||||||
|
import { useRouter } from 'vue-router'
|
||||||
|
import useClipboard from 'vue-clipboard3'
|
||||||
|
import { ipcMain } from 'electron'
|
||||||
|
import { AuthApi } from '@/api/setting/auth'
|
||||||
|
import Dialog from '@/components/dialog/baseDialog.vue'
|
||||||
|
import { ElMessage, ElMessageBox } from 'element-plus'
|
||||||
|
import { $sendElectronChanel } from '@/utils/communication'
|
||||||
|
|
||||||
const {
|
const {
|
||||||
loginFormRef,
|
loginFormRef,
|
||||||
@ -371,7 +283,7 @@ onMounted(() => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
ipcRenderer.once('program-init', () => {
|
ipcRenderer.once('program-init', (error, e) => {
|
||||||
if (!router.currentRoute.value.query.type) {
|
if (!router.currentRoute.value.query.type) {
|
||||||
getAuthCode()
|
getAuthCode()
|
||||||
getAuthInfo()
|
getAuthInfo()
|
||||||
@ -383,14 +295,6 @@ onMounted(() => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
//授权判断
|
//授权判断
|
||||||
import { useI18n } from 'vue-i18n'
|
|
||||||
import { useRouter } from 'vue-router'
|
|
||||||
import useClipboard from 'vue-clipboard3'
|
|
||||||
import { ipcMain } from 'electron'
|
|
||||||
import { AuthApi } from '@/api/setting/auth'
|
|
||||||
import Dialog from '@/components/dialog/baseDialog.vue'
|
|
||||||
import { ElMessage, ElMessageBox } from 'element-plus'
|
|
||||||
import { $sendElectronChanel } from '@/utils/communication'
|
|
||||||
|
|
||||||
let isAuth = ref(true)
|
let isAuth = ref(true)
|
||||||
|
|
||||||
@ -1041,8 +945,7 @@ const validatePortRange = (rule, value, callback) => {
|
|||||||
z-index: 99;
|
z-index: 99;
|
||||||
background: linear-gradient(0deg, #00ffff33 0%, #00ffff00 100%), rgba(0, 0, 0, 0.6);
|
background: linear-gradient(0deg, #00ffff33 0%, #00ffff00 100%), rgba(0, 0, 0, 0.6);
|
||||||
border: 1.5px solid;
|
border: 1.5px solid;
|
||||||
border-image: linear-gradient(to bottom, rgba(var(--color-base1), 1) 6.25%, rgb(0, 200, 255) 100%)
|
border-image: linear-gradient(to bottom, rgba(var(--color-base1), 1) 6.25%, rgb(0, 200, 255) 100%) 1;
|
||||||
1;
|
|
||||||
text-align: left;
|
text-align: left;
|
||||||
font-family: 'sy-boldface';
|
font-family: 'sy-boldface';
|
||||||
}
|
}
|
||||||
@ -1304,8 +1207,7 @@ const validatePortRange = (rule, value, callback) => {
|
|||||||
align-items: center;
|
align-items: center;
|
||||||
margin: 15px 0;
|
margin: 15px 0;
|
||||||
|
|
||||||
.select {
|
.select {}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1358,6 +1260,7 @@ const validatePortRange = (rule, value, callback) => {
|
|||||||
.el-message-box__headerbtn {
|
.el-message-box__headerbtn {
|
||||||
display: none !important;
|
display: none !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.el-message-box__btns {
|
.el-message-box__btns {
|
||||||
.el-button {
|
.el-button {
|
||||||
--el-button-text-color: #fff;
|
--el-button-text-color: #fff;
|
||||||
|
|||||||
Reference in New Issue
Block a user