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
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();
|
|
}
|
|
}
|
|
]
|
|
)
|
|
})
|
|
|