Merge branch 'zyl' of http://xny.yj-3d.com:3000/zhouyulong/electron-4 into zyl
This commit is contained in:
12
src/renderer/public/sdk/YJEarth.min.js
vendored
12
src/renderer/public/sdk/YJEarth.min.js
vendored
File diff suppressed because one or more lines are too long
@ -441,6 +441,9 @@ img {
|
|||||||
|
|
||||||
.ztree .checkbox_false_full + a,.ztree .checkbox_false_full_focus + a {
|
.ztree .checkbox_false_full + a,.ztree .checkbox_false_full_focus + a {
|
||||||
color: #d7d7d7;
|
color: #d7d7d7;
|
||||||
|
.svg-icon {
|
||||||
|
fill: #d7d7d7 !important;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
.ztree li a.curSelectedNode {
|
.ztree li a.curSelectedNode {
|
||||||
background-color: #ffffff00;
|
background-color: #ffffff00;
|
||||||
@ -450,6 +453,8 @@ img {
|
|||||||
|
|
||||||
.svg-icon {
|
.svg-icon {
|
||||||
color: rgba(var(--color-base1), 1) !important;
|
color: rgba(var(--color-base1), 1) !important;
|
||||||
|
fill: rgba(var(--color-base1), 1) !important;
|
||||||
|
stroke: rgba(var(--color-base1), 1) !important;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
|
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 22 KiB |
File diff suppressed because one or more lines are too long
|
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 22 KiB |
@ -420,8 +420,8 @@ let rightClick = (event: MouseEvent, treeId: string, treeNode: any) => {
|
|||||||
let customView
|
let customView
|
||||||
let entity = window['_entityMap'].get(treeNode.id)
|
let entity = window['_entityMap'].get(treeNode.id)
|
||||||
customView = Boolean(entity.customView && entity.customView.orientation)
|
customView = Boolean(entity.customView && entity.customView.orientation)
|
||||||
|
// customView ? 'resetView' : 'setView'
|
||||||
menus = [...menus, customView ? 'resetView' : 'setView']
|
menus = [...menus, 'resetView', 'setView']
|
||||||
}
|
}
|
||||||
// console.log('menus', menus)
|
// console.log('menus', menus)
|
||||||
if (menus.length == 0) {
|
if (menus.length == 0) {
|
||||||
|
|||||||
@ -25,7 +25,11 @@ const eventBus: any = inject('bus')
|
|||||||
const props = defineProps(['eventList', 'hr', 'originHrOffset', 'scrollLeft'])
|
const props = defineProps(['eventList', 'hr', 'originHrOffset', 'scrollLeft'])
|
||||||
let clickEventBar = (event) => {
|
let clickEventBar = (event) => {
|
||||||
console.log("点击事件块", selectedEventId.value, event)
|
console.log("点击事件块", selectedEventId.value, event)
|
||||||
let entity = window['_entityMap'].get(event.sourceId)
|
let key = event.sourceId
|
||||||
|
/* if (event.callback == 'move')
|
||||||
|
key = event.id + "move" + event.sourceId*/
|
||||||
|
// console.log(key)
|
||||||
|
let entity = window['_entityMap'].get(key)
|
||||||
entity && entity.flyTo()
|
entity && entity.flyTo()
|
||||||
selectedEventId.value = (selectedEventId.value == null || selectedEventId.value != event.id) ? event.id : null
|
selectedEventId.value = (selectedEventId.value == null || selectedEventId.value != event.id) ? event.id : null
|
||||||
eventBus.emit('click-event-show-plane', selectedEventId.value ? event : null)
|
eventBus.emit('click-event-show-plane', selectedEventId.value ? event : null)
|
||||||
|
|||||||
@ -125,13 +125,15 @@ const updateEvent = () => {
|
|||||||
TsApi.updateTsEvent(obj).then(res => {
|
TsApi.updateTsEvent(obj).then(res => {
|
||||||
console.log(res)
|
console.log(res)
|
||||||
if (res.code == 200) {
|
if (res.code == 200) {
|
||||||
|
eventBus.emit('update-event', obj)
|
||||||
ElMessage({type: "success", message: "操作成功"})
|
ElMessage({type: "success", message: "操作成功"})
|
||||||
cancel()
|
cancel(false)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
const cancel = () => {
|
const cancel = (cancel = true) => {
|
||||||
|
if (cancel)
|
||||||
|
revert()
|
||||||
eventObj.value = null
|
eventObj.value = null
|
||||||
detail.value = {}
|
detail.value = {}
|
||||||
eventBus.emit('click-cancel-hide-plane',)
|
eventBus.emit('click-cancel-hide-plane',)
|
||||||
@ -139,6 +141,13 @@ const cancel = () => {
|
|||||||
eventBus.on('delete-event', () => {
|
eventBus.on('delete-event', () => {
|
||||||
cancel()
|
cancel()
|
||||||
})
|
})
|
||||||
|
const revert = () => {
|
||||||
|
let entity = window['_entityMap'].get(eventObj.value.id + "move" + eventObj.value.sourceId)
|
||||||
|
console.log(eventObj.value)
|
||||||
|
let detail = JSON.parse(eventObj.value.detail)
|
||||||
|
entity.lineShow = detail.line.show
|
||||||
|
entity.smooth = detail.line.smooth
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
|
|||||||
@ -191,6 +191,11 @@ let formatTime = (timeStamp) => {
|
|||||||
return props.TSOBJ.parseTime(timeStamp)
|
return props.TSOBJ.parseTime(timeStamp)
|
||||||
}
|
}
|
||||||
let play = () => {
|
let play = () => {
|
||||||
|
if (props.TSOBJ._Store._currentTimestamp >= props.TSOBJ._Store.getTotalTime()) {
|
||||||
|
ElMessage.warning("到达推演终点")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
props.TSOBJ._Clock._status = "play"
|
props.TSOBJ._Clock._status = "play"
|
||||||
console.log(props.TSOBJ._Clock._status)
|
console.log(props.TSOBJ._Clock._status)
|
||||||
// return
|
// return
|
||||||
|
|||||||
@ -403,6 +403,10 @@ let submit = () => {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
let submitStandText = (flag) => {
|
let submitStandText = (flag) => {
|
||||||
|
if (standText.value.trim() == '' && flag) {
|
||||||
|
ElMessage.warning("内容不能为空")
|
||||||
|
return
|
||||||
|
}
|
||||||
showStandText.value = false
|
showStandText.value = false
|
||||||
/* let res = {
|
/* let res = {
|
||||||
currentDrawItem: currentDrawItem.value,
|
currentDrawItem: currentDrawItem.value,
|
||||||
@ -437,6 +441,9 @@ let getEventList = () => {
|
|||||||
})
|
})
|
||||||
newTS(params, events)
|
newTS(params, events)
|
||||||
}
|
}
|
||||||
|
eventBus.on('update-event', (task) => {
|
||||||
|
tsOBJ.value._Store._tasks = tsOBJ.value.replaceArrayItem(tsOBJ.value._Store._tasks, task)
|
||||||
|
})
|
||||||
eventBus.on('delete-event', (ids) => {
|
eventBus.on('delete-event', (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))
|
||||||
|
|
||||||
|
|||||||
@ -339,6 +339,13 @@ let addMarker = (item, needSendEvent = true) => {
|
|||||||
window.draw.start((a, position) => {
|
window.draw.start((a, position) => {
|
||||||
console.log(position)
|
console.log(position)
|
||||||
if (position != undefined) {
|
if (position != undefined) {
|
||||||
|
if (position.length == 0 && item.type == "standText") {
|
||||||
|
item.source_name = ""
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (position.length < 2 && item.type == "waterL") {
|
||||||
|
return;
|
||||||
|
}
|
||||||
let obj = {id, name: item.source_name, position}
|
let obj = {id, name: item.source_name, position}
|
||||||
switch (item.type) {
|
switch (item.type) {
|
||||||
case 'model':
|
case 'model':
|
||||||
@ -385,10 +392,8 @@ let addMarker = (item, needSendEvent = true) => {
|
|||||||
if (item.type == "standText") {
|
if (item.type == "standText") {
|
||||||
item.source_name = ""
|
item.source_name = ""
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -344,6 +344,7 @@ const reset = (changeEventType = false) => {
|
|||||||
numbers.value = 0
|
numbers.value = 0
|
||||||
times.value = 1
|
times.value = 1
|
||||||
form.name = '闪烁-'
|
form.name = '闪烁-'
|
||||||
|
positions.value = []
|
||||||
// datetime: '',
|
// datetime: '',
|
||||||
|
|
||||||
form['datetime'] = new Date(window['tsObj']._Store._currentTimestamp)
|
form['datetime'] = new Date(window['tsObj']._Store._currentTimestamp)
|
||||||
|
|||||||
@ -37,7 +37,8 @@ export class Clock {
|
|||||||
nowTime = now
|
nowTime = now
|
||||||
// 设置时间指示器位置
|
// 设置时间指示器位置
|
||||||
store.setCursorLeft(store._currentTimestamp)
|
store.setCursorLeft(store._currentTimestamp)
|
||||||
if (store._currentTimestamp >= store.getTotalTime()) {
|
if (store._currentTimestamp > store.getTotalTime()) {
|
||||||
|
eventCallback()
|
||||||
this.stopAnimation()
|
this.stopAnimation()
|
||||||
this._status = "stop"
|
this._status = "stop"
|
||||||
}
|
}
|
||||||
|
|||||||
@ -80,4 +80,29 @@ export class TS extends Tools {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 替换对象数组中指定的元素(通过id匹配)
|
||||||
|
* @param {Array} arr - 原始对象数组,元素结构需包含id属性
|
||||||
|
* @param {Object} newItem - 要替换的新对象(必须包含id属性)
|
||||||
|
* @param {string} [key='id'] - 匹配的唯一标识字段(默认使用id)
|
||||||
|
* @returns {Array} - 返回替换后的新数组(原数组不会被修改)
|
||||||
|
*/
|
||||||
|
replaceArrayItem(arr, newItem, key = 'id') {
|
||||||
|
// 边界校验
|
||||||
|
if (!Array.isArray(arr)) {
|
||||||
|
console.error('第一个参数必须是数组');
|
||||||
|
return arr;
|
||||||
|
}
|
||||||
|
if (typeof newItem !== 'object' || newItem === null || !newItem[key]) {
|
||||||
|
console.error(`新元素必须是包含${key}属性的对象`);
|
||||||
|
return arr;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 遍历数组并替换匹配的元素(返回新数组,避免修改原数组)
|
||||||
|
return arr.map(item => {
|
||||||
|
// 匹配到对应id的元素则替换,否则返回原元素
|
||||||
|
return item[key] === newItem[key] ? {...item, ...newItem} : item;
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -315,7 +315,6 @@ watch(modelName, (val) => {
|
|||||||
// treeRef.value!.filter(val)
|
// treeRef.value!.filter(val)
|
||||||
// }
|
// }
|
||||||
categories.value = []
|
categories.value = []
|
||||||
currModelList.value = []
|
|
||||||
getModelList()
|
getModelList()
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -510,10 +509,41 @@ const modelClick = (index, row) => {
|
|||||||
const renderModel = async (data, model) => {
|
const renderModel = async (data, model) => {
|
||||||
let selectedNode = window.treeObj.getSelectedNodes()[0]
|
let selectedNode = window.treeObj.getSelectedNodes()[0]
|
||||||
let z
|
let z
|
||||||
|
let index = 0
|
||||||
|
let ids:any = []
|
||||||
if (data.positions.length > 0) {
|
if (data.positions.length > 0) {
|
||||||
data.positions.forEach(async (position, index) => {
|
data.positions.forEach(async (position, i) => {
|
||||||
// let source_id = this.$md5(new Date().getTime() + model.model_name+index);
|
// let source_id = this.$md5(new Date().getTime() + model.model_name+i);
|
||||||
let id = new YJ.Tools().randomString()
|
let id = new YJ.Tools().randomString()
|
||||||
|
ids.push(id)
|
||||||
|
if (data.type == '面') {
|
||||||
|
z = data.rotate - 90
|
||||||
|
} else if (data.type == '线') {
|
||||||
|
z = data.rotate[i] - 90
|
||||||
|
}
|
||||||
|
|
||||||
|
let option = {
|
||||||
|
id: id,
|
||||||
|
position,
|
||||||
|
name: model.modelName + i,
|
||||||
|
show: true,
|
||||||
|
scale: { x: 1, y: 1, z: 1 },
|
||||||
|
url: service.value + model.modelDataUrl,
|
||||||
|
maximumScale: 1,
|
||||||
|
// host: 'http://127.0.0.1:8848',
|
||||||
|
rotate: {
|
||||||
|
x: 0,
|
||||||
|
y: 0,
|
||||||
|
z
|
||||||
|
}
|
||||||
|
}
|
||||||
|
let Model = await new YJ.Obj.Model(window.earth, option);
|
||||||
|
// //鼠标右键点击事件
|
||||||
|
Model.onRightClick = () => {};
|
||||||
|
(window as any)._entityMap.set(id, Model)
|
||||||
|
})
|
||||||
|
for (let position of data.positions) {
|
||||||
|
let id = ids[index]
|
||||||
if (data.type == '面') {
|
if (data.type == '面') {
|
||||||
z = data.rotate - 90
|
z = data.rotate - 90
|
||||||
} else if (data.type == '线') {
|
} else if (data.type == '线') {
|
||||||
@ -535,9 +565,7 @@ const renderModel = async (data, model) => {
|
|||||||
z
|
z
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
let Model = await new YJ.Obj.Model(window.earth, option)
|
await new Promise(resolve => setTimeout(resolve, 50))
|
||||||
;(window as any)._entityMap.set(id, Model)
|
|
||||||
|
|
||||||
let DbOption: any = {
|
let DbOption: any = {
|
||||||
params: option,
|
params: option,
|
||||||
id,
|
id,
|
||||||
@ -550,34 +578,21 @@ const renderModel = async (data, model) => {
|
|||||||
: undefined
|
: undefined
|
||||||
}
|
}
|
||||||
let res = await TreeApi.addOtherSource(DbOption)
|
let res = await TreeApi.addOtherSource(DbOption)
|
||||||
if(![0, 200].includes(res.code)) {
|
if (![0, 200].includes(res.code)) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
DbOption.isShow = true
|
||||||
|
DbOption.params = JSON.stringify(DbOption.params)
|
||||||
|
cusAddNodes(window.treeObj, DbOption.parentId, [DbOption])
|
||||||
|
index++
|
||||||
|
if (index >= data.positions.length - 1) {
|
||||||
ElMessage.closeAll()
|
ElMessage.closeAll()
|
||||||
ElMessage({
|
ElMessage({
|
||||||
message: '添加成功',
|
message: '添加成功',
|
||||||
type: 'success'
|
type: 'success'
|
||||||
})
|
})
|
||||||
DbOption.isShow = true
|
}
|
||||||
DbOption.params = JSON.stringify(DbOption.params)
|
}
|
||||||
cusAddNodes(window.treeObj, DbOption.parentId, [DbOption])
|
|
||||||
// //鼠标右键点击事件
|
|
||||||
Model.onRightClick = () => {}
|
|
||||||
|
|
||||||
// window._entityMap.set(option.id, Model);
|
|
||||||
// Model.onClick = () => {
|
|
||||||
// leftClick(node);
|
|
||||||
// };
|
|
||||||
// let detailOption = JSON.parse(JSON.stringify(Model.options));
|
|
||||||
// detailOption.url = model.model_id + ".glb";
|
|
||||||
// let node = getNodeData(DbOption, detailOption);
|
|
||||||
// addSource(node).then((res) => {
|
|
||||||
// if ([0, 200].includes(res.code)) {
|
|
||||||
// // cusRenderNode(DbOption) DbOption.p_id
|
|
||||||
// cusAddNodes(this.treeObj, DbOption.p_id, [node]);
|
|
||||||
// }
|
|
||||||
// });
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -270,6 +270,7 @@ const translate = () => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
const confirm = () => {
|
const confirm = () => {
|
||||||
|
that.positionEditing && (that.positionEditing = false)
|
||||||
originalOptions = structuredClone(that.options)
|
originalOptions = structuredClone(that.options)
|
||||||
baseDialog.value?.close()
|
baseDialog.value?.close()
|
||||||
let params = structuredClone(that.options)
|
let params = structuredClone(that.options)
|
||||||
@ -350,10 +351,8 @@ const changeMaximumParticleLife = (event) => {
|
|||||||
|
|
||||||
const closeCallback = async () => {
|
const closeCallback = async () => {
|
||||||
entityOptions.value.originalOptions = structuredClone(originalOptions)
|
entityOptions.value.originalOptions = structuredClone(originalOptions)
|
||||||
that.positionEditing = false
|
that.positionEditing && (that.positionEditing = false)
|
||||||
that.reset()
|
that.reset()
|
||||||
await YJ.Global.multiViewportMode.syncData(window.earth, that.options.id)
|
|
||||||
await YJ.Global.splitScreen.syncData(window.earth, that.options.id)
|
|
||||||
eventBus?.emit("destroyComponent")
|
eventBus?.emit("destroyComponent")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -203,6 +203,7 @@ const open = async (id: any) => {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
const confirm = () => {
|
const confirm = () => {
|
||||||
|
that.closeNodeEdit()
|
||||||
originalOptions = structuredClone(that.options)
|
originalOptions = structuredClone(that.options)
|
||||||
baseDialog.value?.close()
|
baseDialog.value?.close()
|
||||||
let params = structuredClone(that.options)
|
let params = structuredClone(that.options)
|
||||||
|
|||||||
@ -156,6 +156,7 @@ const open = async (id: any) => {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
const confirm = () => {
|
const confirm = () => {
|
||||||
|
that.closeNodeEdit()
|
||||||
originalOptions = structuredClone(that.options)
|
originalOptions = structuredClone(that.options)
|
||||||
baseDialog.value?.close()
|
baseDialog.value?.close()
|
||||||
let params = structuredClone(that.options)
|
let params = structuredClone(that.options)
|
||||||
|
|||||||
@ -367,6 +367,13 @@ export const useRightOperate = () => {
|
|||||||
entity.remove();
|
entity.remove();
|
||||||
(window as any)._entityMap.delete(entity.options.id)
|
(window as any)._entityMap.delete(entity.options.id)
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
let entity = (window as any).pressModelEntities.get(item)
|
||||||
|
if (entity) {
|
||||||
|
entity.remove();
|
||||||
|
(window as any).pressModelEntities.delete(entity.options.id)
|
||||||
|
}
|
||||||
|
}
|
||||||
// let node = window.treeObj.getNodeByParam("id", item, null);
|
// let node = window.treeObj.getNodeByParam("id", item, null);
|
||||||
eventBus.emit("destroyComponent", item);
|
eventBus.emit("destroyComponent", item);
|
||||||
});
|
});
|
||||||
|
|||||||
@ -490,7 +490,7 @@ export const useTreeNode = () => {
|
|||||||
|
|
||||||
// return (type === 'directory' || type === 'FeatureCollection') ? undefined : `http://localhost:${availablePort}/icon/${name}.png`;
|
// return (type === 'directory' || type === 'FeatureCollection') ? undefined : `http://localhost:${availablePort}/icon/${name}.png`;
|
||||||
return (type === 'directory' || type === 'FeatureCollection' || type === 'folder') ? undefined : `
|
return (type === 'directory' || type === 'FeatureCollection' || type === 'folder') ? undefined : `
|
||||||
<svg class="svg-icon" style="color: rgba(var(--color-base2), 1);margin-top: 1px;width:100%;height:100%;fill: currentColor !important;stroke: currentColor !important;stroke-width: ${strokeWidth} !important;shape-rendering: geometricPrecision;">
|
<svg class="svg-icon" style="color: rgba(var(--color-base2), 1);margin-top: 1px;width:100%;height:100%;fill: #fff;stroke: #fff;stroke-width: ${strokeWidth} !important;shape-rendering: geometricPrecision;">
|
||||||
<use xlink:href="#icon-${name}" />
|
<use xlink:href="#icon-${name}" />
|
||||||
</svg>
|
</svg>
|
||||||
`;
|
`;
|
||||||
|
|||||||
@ -836,7 +836,7 @@ defineExpose({
|
|||||||
// .custom-dropdown2 {
|
// .custom-dropdown2 {
|
||||||
// width: 380px !important;
|
// width: 380px !important;
|
||||||
// }
|
// }
|
||||||
.el-select-dropdown__empty,
|
.custom-dropdown .el-select-dropdown__empty,
|
||||||
.el-select-dropdown__loading {
|
.el-select-dropdown__loading {
|
||||||
margin-top: -150px !important;
|
margin-top: -150px !important;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -708,18 +708,21 @@ function importAuth() {
|
|||||||
filters: [{ name: '授权文件', extensions: ['YJ'] }]
|
filters: [{ name: '授权文件', extensions: ['YJ'] }]
|
||||||
}
|
}
|
||||||
$sendElectronChanel('open-directory-dialog', option)
|
$sendElectronChanel('open-directory-dialog', option)
|
||||||
$recvElectronChanel('selectedItem', (e, paths) => {
|
$recvElectronChanel('selectedItem', async (e, paths) => {
|
||||||
console.log(e, paths, 'oopop')
|
|
||||||
if (paths.length != 0) {
|
|
||||||
let formdata = new FormData()
|
let formdata = new FormData()
|
||||||
|
if(!paths[0]) {
|
||||||
|
return
|
||||||
|
}
|
||||||
formdata.append('filePath', paths[0])
|
formdata.append('filePath', paths[0])
|
||||||
try {
|
try {
|
||||||
let res = AuthApi.authImport(formdata)
|
let res = await AuthApi.authImport(formdata)
|
||||||
|
if(res.code === 0 || res.code === 200) {
|
||||||
ElMessage.success('文件授权成功')
|
ElMessage.success('文件授权成功')
|
||||||
isAuth.value = false
|
isAuth.value = false
|
||||||
baseDialog.value?.close()
|
baseDialog.value?.close()
|
||||||
} catch (error) {}
|
} else {
|
||||||
}
|
}
|
||||||
|
} catch (error) {}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
// setTimeout(() => {
|
// setTimeout(() => {
|
||||||
|
|||||||
Reference in New Issue
Block a user