feat: 增加应用跟项目列表,包含增删改查功能

This commit is contained in:
wangxuefeng 2025-03-04 19:05:07 +08:00
parent a78d892a57
commit 2d202cd6d7
8 changed files with 61 additions and 13 deletions

View File

@ -79,6 +79,7 @@
.responsive-iframe {
width: 100%;
height: 100%;
border: none;
}
</style>

View File

@ -12,6 +12,26 @@ const routes: Array<RouteRecordRaw> = [
icon: 'ant-design:appstore-outlined',
},
children: [
{
path: 'list',
name: `${moduleName}-list`,
meta: {
title: '项目列表',
keepAlive: true,
icon: 'ant-design:list',
app: {
url: 'https://localhost:10010',
name: 'low-code-platform-project-list',
// sync: true,
// alive: true,
// degrade: true,
applicationId: 0,
projectId: 4,
fileId: '4g4mz6qi8u',
},
},
component: () => import('@/components/renderer-adapter/index.vue'),
},
{
path: 'add',
name: `${moduleName}-add`,

View File

@ -18,9 +18,12 @@
"@sy/web-vitals": "workspace:*",
"@tanstack/vue-query": "^5.66.9",
"@vtj/core": "^0.10.7",
"@vtj/pro": "^0.10.7",
"@vtj/ui": "^0.10.7",
"@vtj/web": "^0.10.7",
"@vtj/renderer": "^0.10.7",
"@vtj/icons": "0.10.7",
"@vtj/materials": "^0.10.7",
"@vtj/renderer": "^0.10.7",
"axios": "^1.8.1",
"core-js": "^3.40.0",
"element-plus": "^2.9.4",

View File

@ -3,11 +3,12 @@
import { computed, watch, ref, getCurrentInstance } from 'vue'
import { ElLoading } from 'element-plus'
import Postmate from 'postmate'
import { createRenderer, createProvider } from '@vtj/renderer'
import { createProvider } from '@vtj/web'
import { useQuery } from '@tanstack/vue-query'
import { LowCodeService } from './service'
import { getFile } from './io'
import * as VtjUI from '@vtj/ui'
console.log('VtjUI',VtjUI)
//
const renderer = ref()
@ -30,18 +31,22 @@ const { data: file, isFetching } = useQuery({
queryKey: ['getFile'],
queryFn: async () => {
await handshake.then((parent) => {
parent.emit('sync-context', 'Hello, World!')
// parent.emit('sync-context', 'Hello, World!')
Object.assign(model, parent.model)
console.log('model', model)
// console.log('model', model)
})
return getFile(model.fileId).then(() => {
const { provider, onReady } = createProvider({
nodeEnv: import.meta.env.NODE_ENV,
service: lowCodeService,
project: { id: '4' }
project: { id: model.projectId },
components: {
...VtjUI,
}
})
onReady(async () => {
console.log('onReady')
const instance = getCurrentInstance()
instance?.appContext.app.use(provider)
renderer.value = await provider.getRenderComponent(model.fileId)
@ -61,5 +66,7 @@ watch(isFetching, (newVal) => {
</script>
<template>
<component :is="renderer" v-if="renderer" />
<div style="padding: 20px;">
<component :is="renderer" v-if="renderer" />
</div>
</template>

View File

@ -2,12 +2,20 @@ import { createApp } from "vue";
import "@sy/web-vitals";
import { IconsPlugin } from "@vtj/icons";
import { VueQueryPlugin } from "@tanstack/vue-query";
import * as VtjUI from "@vtj/ui";
import App from "./App.vue";
import ElementPlus from "element-plus";
import "element-plus/dist/index.css";
import "@vtj/ui/dist/style.css";
createApp(App)
const app = createApp(App);
// 批量注册组件
Object.entries(VtjUI).forEach(([name, component]) => {
console.log("name", name, component);
app.component(name, component);
});
app
.use(ElementPlus)
.use(IconsPlugin)
.use(VueQueryPlugin)

View File

@ -32,7 +32,7 @@ export class LowCodeService extends BaseService {
}
public async getFile(id: string): Promise<BlockSchema> {
console.log("1111getFile", id);
console.log("service getFile", id);
return getLowCodeFile(id).then((lowCodeFile) => {
if (lowCodeFile.dsl) {
return Promise.resolve(lowCodeFile.dsl as BlockSchema);

View File

@ -7,7 +7,7 @@
"@/*": ["src/*"],
"$vtj/*": [".vtj/*"]
},
"lib": ["ES2015", "DOM"],
"lib": ["ES2022", "DOM"],
"module": "NodeNext",
"target": "ES2022",
"moduleResolution": "NodeNext"

11
pnpm-lock.yaml generated
View File

@ -448,9 +448,18 @@ importers:
'@vtj/materials':
specifier: ^0.10.7
version: 0.10.7
'@vtj/pro':
specifier: ^0.10.7
version: 0.10.7(typescript@5.8.2)(vue@3.5.13(typescript@5.8.2))
'@vtj/renderer':
specifier: ^0.10.7
version: 0.10.7
'@vtj/ui':
specifier: ^0.10.7
version: 0.10.7(typescript@5.8.2)(vue@3.5.13(typescript@5.8.2))
'@vtj/web':
specifier: ^0.10.7
version: 0.10.7(typescript@5.8.2)(vue@3.5.13(typescript@5.8.2))
axios:
specifier: ^1.8.1
version: 1.8.1(debug@4.4.0)
@ -13152,7 +13161,7 @@ snapshots:
'@simonwep/pickr@1.8.2':
dependencies:
core-js: 3.40.0
core-js: 3.41.0
nanopop: 2.4.2
'@sindresorhus/is@4.6.0': {}