feat: 增加应用跟项目列表,包含增删改查功能
This commit is contained in:
parent
a78d892a57
commit
2d202cd6d7
@ -79,6 +79,7 @@
|
|||||||
.responsive-iframe {
|
.responsive-iframe {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
|
|
||||||
border: none;
|
border: none;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
@ -12,6 +12,26 @@ const routes: Array<RouteRecordRaw> = [
|
|||||||
icon: 'ant-design:appstore-outlined',
|
icon: 'ant-design:appstore-outlined',
|
||||||
},
|
},
|
||||||
children: [
|
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',
|
path: 'add',
|
||||||
name: `${moduleName}-add`,
|
name: `${moduleName}-add`,
|
||||||
|
@ -18,9 +18,12 @@
|
|||||||
"@sy/web-vitals": "workspace:*",
|
"@sy/web-vitals": "workspace:*",
|
||||||
"@tanstack/vue-query": "^5.66.9",
|
"@tanstack/vue-query": "^5.66.9",
|
||||||
"@vtj/core": "^0.10.7",
|
"@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/icons": "0.10.7",
|
||||||
"@vtj/materials": "^0.10.7",
|
"@vtj/materials": "^0.10.7",
|
||||||
"@vtj/renderer": "^0.10.7",
|
|
||||||
"axios": "^1.8.1",
|
"axios": "^1.8.1",
|
||||||
"core-js": "^3.40.0",
|
"core-js": "^3.40.0",
|
||||||
"element-plus": "^2.9.4",
|
"element-plus": "^2.9.4",
|
||||||
|
@ -3,11 +3,12 @@
|
|||||||
import { computed, watch, ref, getCurrentInstance } from 'vue'
|
import { computed, watch, ref, getCurrentInstance } from 'vue'
|
||||||
import { ElLoading } from 'element-plus'
|
import { ElLoading } from 'element-plus'
|
||||||
import Postmate from 'postmate'
|
import Postmate from 'postmate'
|
||||||
import { createRenderer, createProvider } from '@vtj/renderer'
|
import { createProvider } from '@vtj/web'
|
||||||
import { useQuery } from '@tanstack/vue-query'
|
import { useQuery } from '@tanstack/vue-query'
|
||||||
|
|
||||||
import { LowCodeService } from './service'
|
import { LowCodeService } from './service'
|
||||||
import { getFile } from './io'
|
import { getFile } from './io'
|
||||||
|
import * as VtjUI from '@vtj/ui'
|
||||||
|
console.log('VtjUI',VtjUI)
|
||||||
|
|
||||||
// 响应式状态
|
// 响应式状态
|
||||||
const renderer = ref()
|
const renderer = ref()
|
||||||
@ -30,18 +31,22 @@ const { data: file, isFetching } = useQuery({
|
|||||||
queryKey: ['getFile'],
|
queryKey: ['getFile'],
|
||||||
queryFn: async () => {
|
queryFn: async () => {
|
||||||
await handshake.then((parent) => {
|
await handshake.then((parent) => {
|
||||||
parent.emit('sync-context', 'Hello, World!')
|
// parent.emit('sync-context', 'Hello, World!')
|
||||||
Object.assign(model, parent.model)
|
Object.assign(model, parent.model)
|
||||||
console.log('model', model)
|
|
||||||
|
// console.log('model', model)
|
||||||
})
|
})
|
||||||
|
|
||||||
return getFile(model.fileId).then(() => {
|
return getFile(model.fileId).then(() => {
|
||||||
const { provider, onReady } = createProvider({
|
const { provider, onReady } = createProvider({
|
||||||
|
nodeEnv: import.meta.env.NODE_ENV,
|
||||||
service: lowCodeService,
|
service: lowCodeService,
|
||||||
project: { id: '4' }
|
project: { id: model.projectId },
|
||||||
|
components: {
|
||||||
|
...VtjUI,
|
||||||
|
}
|
||||||
})
|
})
|
||||||
onReady(async () => {
|
onReady(async () => {
|
||||||
console.log('onReady')
|
|
||||||
const instance = getCurrentInstance()
|
const instance = getCurrentInstance()
|
||||||
instance?.appContext.app.use(provider)
|
instance?.appContext.app.use(provider)
|
||||||
renderer.value = await provider.getRenderComponent(model.fileId)
|
renderer.value = await provider.getRenderComponent(model.fileId)
|
||||||
@ -61,5 +66,7 @@ watch(isFetching, (newVal) => {
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<component :is="renderer" v-if="renderer" />
|
<div style="padding: 20px;">
|
||||||
|
<component :is="renderer" v-if="renderer" />
|
||||||
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
@ -2,12 +2,20 @@ import { createApp } from "vue";
|
|||||||
import "@sy/web-vitals";
|
import "@sy/web-vitals";
|
||||||
import { IconsPlugin } from "@vtj/icons";
|
import { IconsPlugin } from "@vtj/icons";
|
||||||
import { VueQueryPlugin } from "@tanstack/vue-query";
|
import { VueQueryPlugin } from "@tanstack/vue-query";
|
||||||
|
import * as VtjUI from "@vtj/ui";
|
||||||
import App from "./App.vue";
|
import App from "./App.vue";
|
||||||
import ElementPlus from "element-plus";
|
import ElementPlus from "element-plus";
|
||||||
import "element-plus/dist/index.css";
|
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(ElementPlus)
|
||||||
.use(IconsPlugin)
|
.use(IconsPlugin)
|
||||||
.use(VueQueryPlugin)
|
.use(VueQueryPlugin)
|
||||||
|
@ -32,7 +32,7 @@ export class LowCodeService extends BaseService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public async getFile(id: string): Promise<BlockSchema> {
|
public async getFile(id: string): Promise<BlockSchema> {
|
||||||
console.log("1111getFile", id);
|
console.log("service getFile", id);
|
||||||
return getLowCodeFile(id).then((lowCodeFile) => {
|
return getLowCodeFile(id).then((lowCodeFile) => {
|
||||||
if (lowCodeFile.dsl) {
|
if (lowCodeFile.dsl) {
|
||||||
return Promise.resolve(lowCodeFile.dsl as BlockSchema);
|
return Promise.resolve(lowCodeFile.dsl as BlockSchema);
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
"@/*": ["src/*"],
|
"@/*": ["src/*"],
|
||||||
"$vtj/*": [".vtj/*"]
|
"$vtj/*": [".vtj/*"]
|
||||||
},
|
},
|
||||||
"lib": ["ES2015", "DOM"],
|
"lib": ["ES2022", "DOM"],
|
||||||
"module": "NodeNext",
|
"module": "NodeNext",
|
||||||
"target": "ES2022",
|
"target": "ES2022",
|
||||||
"moduleResolution": "NodeNext"
|
"moduleResolution": "NodeNext"
|
||||||
|
11
pnpm-lock.yaml
generated
11
pnpm-lock.yaml
generated
@ -448,9 +448,18 @@ importers:
|
|||||||
'@vtj/materials':
|
'@vtj/materials':
|
||||||
specifier: ^0.10.7
|
specifier: ^0.10.7
|
||||||
version: 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':
|
'@vtj/renderer':
|
||||||
specifier: ^0.10.7
|
specifier: ^0.10.7
|
||||||
version: 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:
|
axios:
|
||||||
specifier: ^1.8.1
|
specifier: ^1.8.1
|
||||||
version: 1.8.1(debug@4.4.0)
|
version: 1.8.1(debug@4.4.0)
|
||||||
@ -13152,7 +13161,7 @@ snapshots:
|
|||||||
|
|
||||||
'@simonwep/pickr@1.8.2':
|
'@simonwep/pickr@1.8.2':
|
||||||
dependencies:
|
dependencies:
|
||||||
core-js: 3.40.0
|
core-js: 3.41.0
|
||||||
nanopop: 2.4.2
|
nanopop: 2.4.2
|
||||||
|
|
||||||
'@sindresorhus/is@4.6.0': {}
|
'@sindresorhus/is@4.6.0': {}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user