diff --git a/data/magic-api/api/后台/菜单管理/当前用户菜单.ms b/data/magic-api/api/后台/菜单管理/当前用户菜单.ms
index 887838d..9dda019 100644
--- a/data/magic-api/api/后台/菜单管理/当前用户菜单.ms
+++ b/data/magic-api/api/后台/菜单管理/当前用户菜单.ms
@@ -5,7 +5,7 @@
"groupId" : "67b2ce258e24491194b74992958c74aa",
"name" : "当前用户菜单",
"createTime" : null,
- "updateTime" : 1646400991044,
+ "updateTime" : 1646450734459,
"lock" : "0",
"method" : "POST",
"path" : "/current/menus",
@@ -551,7 +551,6 @@ var menus = db.select("""
sm.sort,
sm.icon,
sm.keep_alive,
- sc.code,
sc.name component_name
from sys_menu sm
left join sys_component sc on sm.component_id = sc.id where 1=1
diff --git a/magic-boot-ui/src/main.js b/magic-boot-ui/src/main.js
index 1c811fc..cff6b0b 100644
--- a/magic-boot-ui/src/main.js
+++ b/magic-boot-ui/src/main.js
@@ -15,6 +15,7 @@ import App from './App.vue'
import router from './scripts/router'
import components from '@/components/index'
import globalProperties from './scripts/globalProperties'
+import dynamicComponent from './scripts/dynamicComponent'
import hasPermission from './scripts/hasPermission'
import '@/permission'
@@ -28,6 +29,7 @@ router.beforeEach((to, from) => {
return true
})
app.use(globalProperties)
+app.use(dynamicComponent)
app.use(hasPermission)
app.use(components)
app.use(ElementPlus, {
diff --git a/magic-boot-ui/src/scripts/dynamicComponent.js b/magic-boot-ui/src/scripts/dynamicComponent.js
new file mode 100644
index 0000000..d80f20f
--- /dev/null
+++ b/magic-boot-ui/src/scripts/dynamicComponent.js
@@ -0,0 +1,36 @@
+import { babelParse } from '@vue/compiler-sfc'
+import { compileFile } from '@/compiler/sfc-compiler.js'
+
+function appComponent(app, item){
+ var compiled = {}
+ compileFile('TestCode.vue', item.code, compiled)
+ var code = compiled.js
+ var ast = babelParse(code, {
+ sourceType: 'module'
+ })
+ var replaceCode = (node, subCode) => code.substring(0, node.start) + subCode + code.substring(node.end);
+ for(var i = ast.program.body.length - 1; i>=0; i--){
+ var node = ast.program.body[i]
+ if(node.type === 'ImportDeclaration'){
+ code = replaceCode(node, node.specifiers.map(it => `const ${it.local?.name || it.imported?.name || '*'} = ___magic__import__('${node.source.value}', '${it.imported?.name || '*'}');`).join('\r\n'));
+ } else if (node.type === 'ExportDefaultDeclaration'){
+ code = replaceCode(node, `return ${node.declaration.name}`)
+ }
+ }
+ code = `(function(){
+ ${code}
+ })()`
+ var componentStyle = document.createElement("style");
+ componentStyle.innerHTML = compiled.css
+ document.head.appendChild(componentStyle);
+ app.component(item.name, eval(code))
+}
+
+const install = (app) => {
+ app.config.globalProperties.$get('/component/list', { size: 999999 }).then((res) => {
+ res.data.list.forEach(it => {
+ appComponent(app, it)
+ })
+ })
+}
+export default install
diff --git a/magic-boot-ui/src/scripts/globalProperties.js b/magic-boot-ui/src/scripts/globalProperties.js
index ef6cff1..461e1dc 100644
--- a/magic-boot-ui/src/scripts/globalProperties.js
+++ b/magic-boot-ui/src/scripts/globalProperties.js
@@ -27,4 +27,4 @@ const install = (app) => {
}
app.use(VueUeditorWrap)
}
-export default install
\ No newline at end of file
+export default install
diff --git a/magic-boot-ui/src/scripts/routerPermission.js b/magic-boot-ui/src/scripts/routerPermission.js
index 9cec30b..725da5e 100644
--- a/magic-boot-ui/src/scripts/routerPermission.js
+++ b/magic-boot-ui/src/scripts/routerPermission.js
@@ -7,11 +7,8 @@ export const filterAsyncRouter = (routers, level) => {
const accessedRouters = routers.filter(router => {
if (router.isShow === 1) {
if (router.componentName) {
- router.component = loadView(`/common/parse-component`)
- router.props = {
- name: router.componentName,
- code: router.code
- }
+ router.component = loadView(`/common/show-component`)
+ router.props = { name: router.componentName }
} else if (router.component) {
const component = router.component
if (component === 'Layout') {
@@ -52,4 +49,4 @@ export function generateRoutes(){
resolve(asyncRouter)
})
})
-}
\ No newline at end of file
+}
diff --git a/magic-boot-ui/src/views/common/parse-component.vue b/magic-boot-ui/src/views/common/parse-component.vue
deleted file mode 100644
index 80b2504..0000000
--- a/magic-boot-ui/src/views/common/parse-component.vue
+++ /dev/null
@@ -1,49 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/magic-boot-ui/src/views/common/show-component.vue b/magic-boot-ui/src/views/common/show-component.vue
new file mode 100644
index 0000000..fe54048
--- /dev/null
+++ b/magic-boot-ui/src/views/common/show-component.vue
@@ -0,0 +1,12 @@
+
+
+
+
+
diff --git a/magic-boot-ui/src/views/home.vue b/magic-boot-ui/src/views/home.vue
index 6992963..a0def82 100644
--- a/magic-boot-ui/src/views/home.vue
+++ b/magic-boot-ui/src/views/home.vue
@@ -1,41 +1,8 @@
-
-
+ home