You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

139 lines
4.6 KiB

import { renderIcon, setQueryParam } from '@/utils/webutils.ts'
import { defineMenu } from '@/runtime/DefineMenu.ts'
import SvgCode from '@/components/icons/SvgCode'
import { createVNode, nextTick } from 'vue'
import type Viewport from '@/core/engine/Viewport.ts'
import DataForm from '@/components/data-form/DataForm.vue'
import OpenProject from '../OpenProject.vue'
import { Request } from '@ease-forge/shared'
function addProject(successful?: Function) {
const data = {
server: window.location.origin,
};
system.showDialog(createVNode(DataForm, {
style: {
paddingRight: "12px",
},
data: data,
formFields: [
{
dataPath: 'projectUuid', label: '项目编号', input: 'Input',
inputProps: {
placeholder: '请输入项目唯一编号',
},
},
{
dataPath: 'projectLabel', label: '项目标题', input: 'Input',
inputProps: {
placeholder: '请输入项目标题',
},
},
],
columnCount: 1,
labelWidth: "80px",
}), {
title: '创建项目',
width: 480,
height: 200,
showClose: true,
showMax: false,
showCancelButton: true,
showOkButton: true,
okButtonText: "创建",
cancelButtonText: "取消",
}).then(() => {
Request.request.post("/api/workbench/LccModelManager@addProject", data).then(()=> {
system.msg("创建成功");
successful?.();
})
}).finally();
}
export default defineMenu((menus) => {
menus.insertChildren('file',
{
name: 'file', label: '模型', icon: renderIcon('ModelFile'), order: 1, disabled: false
},
[
{
name: 'open', label: '打开', icon: SvgCode.open, order: 1, tip: 'Ctrl+O',
click: async () => {
worldModel.state.isOpened = false
worldModel.state.isDraft = false
worldModel.state.catalog = []
worldModel.state.catalogCode = ''
worldModel.state.stateManagerId = ''
setQueryParam('store', '')
system.showLoading()
try {
await nextTick()
const res = await import('@/example/example1')
worldModel.state.isDraft = false
await worldModel.loadWorldFromRemoting(res.default)
} finally {
system.clearLoading()
}
},
click2: async () => {
let dialog: any = null;
system.showDialog(createVNode(OpenProject, {
onCancel: () => dialog?.onClose(),
onOpen: async row => {
dialog?.onClose();
const veryBigData = JSON.parse(row.otherData);
veryBigData.catalog = JSON.parse(row.directoryData);
veryBigData.items = [];
worldModel.state.isOpened = false
worldModel.state.isDraft = false
worldModel.state.catalog = []
worldModel.state.catalogCode = ''
worldModel.state.stateManagerId = ''
setQueryParam('store', '')
system.showLoading()
try {
await nextTick()
worldModel.state.isDraft = false
await worldModel.loadWorldFromRemoting(veryBigData)
} finally {
system.clearLoading()
}
},
onAdd: that => {
addProject(() => that.loadData());
},
}), {
title: '打开项目',
width: 1500,
height: 500,
showClose: true,
showMax: true,
showCancelButton: false,
showOkButton: false,
okButtonText: "创建",
cancelButtonText: "取消",
onMounted: d => dialog = d,
}).finally();
}
},
{
name: 'save', label: '保存', icon: SvgCode.save, order: 2, tip: 'Ctrl+S',
click: async () => {
const viewport: Viewport = window['viewport']
const vdata: any = await viewport.stateManager.save()
console.log(system.json5.stringify(vdata.items))
}
},
{
name: 'saveAs', label: '新建项目', icon: renderIcon('ModelFile'), order: 3,
click: () => {
addProject();
}
}
]
)
})