Merge remote-tracking branch 'origin/master'

pull/5/MERGE
YunaiV 2023-04-24 19:41:55 +08:00
commit d29ea2f0f1
8 changed files with 91 additions and 48 deletions

View File

@ -20,9 +20,9 @@
- [启动文档](https://doc.iocoder.cn/quick-start/)
- [视频教程](https://doc.iocoder.cn/video/)
## 交流群
## 交流群 && 外包項目
<img alt="index.vue" width="400px" src="./public/resource/img/wx.png"></img>
- [Star 点击查看](https://gitee.com/yudaocode/yudao-ui-admin-vben/issues/I6R8J0)
## 开发进度
@ -39,7 +39,7 @@
| --- | --- | --- |
| [Vue](https://staging-cn.vuejs.org/) | Vue 框架 | 3.2.47 |
| [Vite](https://cn.vitejs.dev//) | 开发与构建工具 | 4.3.1 |
| [ant-design-vue](https://antdv.com/) | ant-design-vue | 3.2.18 |
| [ant-design-vue](https://antdv.com/) | ant-design-vue | 3.2.19 |
| [TypeScript](https://www.typescriptlang.org/docs/) | JavaScript 的超集 | 5.0.4 |
| [pinia](https://pinia.vuejs.org/) | Vue 存储库 替代 vuex5 | 2.0.35 |
| [vueuse](https://vueuse.org/) | 常用工具集 | 10.1.0 |

View File

@ -39,7 +39,7 @@
"@vue/runtime-core": "^3.2.47",
"@vueuse/core": "^10.1.0",
"@zxcvbn-ts/core": "^2.2.1",
"ant-design-vue": "^3.2.18",
"ant-design-vue": "^3.2.19",
"axios": "^1.3.6",
"codemirror": "^5.65.3",
"cropperjs": "^1.5.13",
@ -99,16 +99,16 @@
"esno": "^0.16.3",
"fs-extra": "^11.1.1",
"husky": "^8.0.3",
"inquirer": "^9.1.5",
"inquirer": "^9.2.0",
"less": "^4.1.3",
"lint-staged": "^13.2.1",
"picocolors": "^1.0.0",
"postcss": "^8.4.23",
"postcss-html": "^1.5.0",
"postcss-less": "^6.0.0",
"prettier": "^2.8.7",
"prettier": "^2.8.8",
"rimraf": "^5.0.0",
"rollup": "^3.20.7",
"rollup": "^3.21.0",
"rollup-plugin-visualizer": "^5.9.0",
"stylelint": "^15.6.0",
"stylelint-config-recommended": "^12.0.0",

View File

@ -20,8 +20,8 @@ dependencies:
specifier: ^2.2.1
version: 2.2.1
ant-design-vue:
specifier: ^3.2.18
version: 3.2.18(vue@3.2.47)
specifier: ^3.2.19
version: 3.2.19(vue@3.2.47)
axios:
specifier: ^1.3.6
version: 1.3.6(debug@4.3.4)
@ -182,7 +182,7 @@ devDependencies:
version: 8.8.0(eslint@8.39.0)
eslint-plugin-prettier:
specifier: ^4.2.1
version: 4.2.1(eslint-config-prettier@8.8.0)(eslint@8.39.0)(prettier@2.8.7)
version: 4.2.1(eslint-config-prettier@8.8.0)(eslint@8.39.0)(prettier@2.8.8)
eslint-plugin-vue:
specifier: ^9.11.0
version: 9.11.0(eslint@8.39.0)
@ -196,8 +196,8 @@ devDependencies:
specifier: ^8.0.3
version: 8.0.3
inquirer:
specifier: ^9.1.5
version: 9.1.5
specifier: ^9.2.0
version: 9.2.0
less:
specifier: ^4.1.3
version: 4.1.3
@ -217,17 +217,17 @@ devDependencies:
specifier: ^6.0.0
version: 6.0.0(postcss@8.4.23)
prettier:
specifier: ^2.8.7
version: 2.8.7
specifier: ^2.8.8
version: 2.8.8
rimraf:
specifier: ^5.0.0
version: 5.0.0
rollup:
specifier: ^3.20.7
version: 3.20.7
specifier: ^3.21.0
version: 3.21.0
rollup-plugin-visualizer:
specifier: ^5.9.0
version: 5.9.0(rollup@3.20.7)
version: 5.9.0(rollup@3.21.0)
stylelint:
specifier: ^15.6.0
version: 15.6.0
@ -281,7 +281,7 @@ devDependencies:
version: 1.8.10(vite@4.3.1)
vite-vue-plugin-html:
specifier: ^1.0.1
version: 1.0.1(rollup@3.20.7)(vite@4.3.1)
version: 1.0.1(rollup@3.21.0)(vite@4.3.1)
vite-vue-plugin-theme:
specifier: ^1.0.0
version: 1.0.0(vite@4.3.1)
@ -2326,7 +2326,7 @@ packages:
rollup: 2.79.1
dev: true
/@rollup/plugin-replace@5.0.2(rollup@3.20.7):
/@rollup/plugin-replace@5.0.2(rollup@3.21.0):
resolution: {integrity: sha512-M9YXNekv/C/iHHK+cvORzfRYfPbq0RDD8r0G+bMiTXjNGKulPnCT9O3Ss46WfhI6ZOCgApOP7xAdmCQJ+U2LAA==}
engines: {node: '>=14.0.0'}
peerDependencies:
@ -2335,9 +2335,9 @@ packages:
rollup:
optional: true
dependencies:
'@rollup/pluginutils': 5.0.2(rollup@3.20.7)
'@rollup/pluginutils': 5.0.2(rollup@3.21.0)
magic-string: 0.27.0
rollup: 3.20.7
rollup: 3.21.0
dev: true
/@rollup/pluginutils@3.1.0(rollup@2.79.1):
@ -2360,7 +2360,7 @@ packages:
picomatch: 2.3.1
dev: true
/@rollup/pluginutils@5.0.2(rollup@3.20.7):
/@rollup/pluginutils@5.0.2(rollup@3.21.0):
resolution: {integrity: sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==}
engines: {node: '>=14.0.0'}
peerDependencies:
@ -2372,7 +2372,7 @@ packages:
'@types/estree': 1.0.0
estree-walker: 2.0.2
picomatch: 2.3.1
rollup: 3.20.7
rollup: 3.21.0
dev: true
/@simonwep/pickr@1.8.2:
@ -3010,8 +3010,8 @@ packages:
engines: {node: '>=12'}
dev: true
/ant-design-vue@3.2.18(vue@3.2.47):
resolution: {integrity: sha512-8jqy2on2W7E2JQ/bxGsrHz6f/nwXLvOJV11Js1TIFJOlcHRKOzhomt0QArew88Tx1IL8KjXQbRHlN/h0qBdbLw==}
/ant-design-vue@3.2.19(vue@3.2.47):
resolution: {integrity: sha512-weizTa70qNhyj8tOoplTcpt85OkVHpnreK2skdTmORFAGDGvF15zyoqCNg2tByzn2xxf2DloQQvZYKlN/i0CGw==}
engines: {node: '>=12.22.0'}
peerDependencies:
vue: '>=3.2.0'
@ -4480,7 +4480,7 @@ packages:
eslint: 8.39.0
dev: true
/eslint-plugin-prettier@4.2.1(eslint-config-prettier@8.8.0)(eslint@8.39.0)(prettier@2.8.7):
/eslint-plugin-prettier@4.2.1(eslint-config-prettier@8.8.0)(eslint@8.39.0)(prettier@2.8.8):
resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==}
engines: {node: '>=12.0.0'}
peerDependencies:
@ -4493,7 +4493,7 @@ packages:
dependencies:
eslint: 8.39.0
eslint-config-prettier: 8.8.0(eslint@8.39.0)
prettier: 2.8.7
prettier: 2.8.8
prettier-linter-helpers: 1.0.0
dev: true
@ -5395,8 +5395,8 @@ packages:
resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==}
dev: true
/inquirer@9.1.5:
resolution: {integrity: sha512-3ygAIh8gcZavV9bj6MTdYddG2zPSYswP808fKS46NOwlF0zZljVpnLCHODDqItWJDbDpLb3aouAxGaJbkxoppA==}
/inquirer@9.2.0:
resolution: {integrity: sha512-WWERbVqjsTXjXub1ZW0ZHDit1dyHqy0T9XIkky9TnmKAPrjU9Jkd59nZPK0dUuM3s73GZAZu2Jo4iFU3XSPVLA==}
engines: {node: '>=14.18.0'}
dependencies:
ansi-escapes: 6.1.0
@ -6998,8 +6998,8 @@ packages:
fast-diff: 1.2.0
dev: true
/prettier@2.8.7:
resolution: {integrity: sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw==}
/prettier@2.8.8:
resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==}
engines: {node: '>=10.13.0'}
hasBin: true
dev: true
@ -7352,7 +7352,7 @@ packages:
terser: 5.17.1
dev: true
/rollup-plugin-visualizer@5.9.0(rollup@3.20.7):
/rollup-plugin-visualizer@5.9.0(rollup@3.21.0):
resolution: {integrity: sha512-bbDOv47+Bw4C/cgs0czZqfm8L82xOZssk4ayZjG40y9zbXclNk7YikrZTDao6p7+HDiGxrN0b65SgZiVm9k1Cg==}
engines: {node: '>=14'}
hasBin: true
@ -7364,7 +7364,7 @@ packages:
dependencies:
open: 8.4.2
picomatch: 2.3.1
rollup: 3.20.7
rollup: 3.21.0
source-map: 0.7.4
yargs: 17.7.1
dev: true
@ -7377,8 +7377,8 @@ packages:
fsevents: 2.3.2
dev: true
/rollup@3.20.7:
resolution: {integrity: sha512-P7E2zezKSLhWnTz46XxjSmInrbOCiul1yf+kJccMxT56vxjHwCbDfoLbiqFgu+WQoo9ij2PkraYaBstgB2prBA==}
/rollup@3.21.0:
resolution: {integrity: sha512-ANPhVcyeHvYdQMUyCbczy33nbLzI7RzrBje4uvNiTDJGIMtlKoOStmympwr9OtS1LZxiDmE2wvxHyVhoLtf1KQ==}
engines: {node: '>=14.18.0', npm: '>=8.0.0'}
hasBin: true
optionalDependencies:
@ -8522,11 +8522,11 @@ packages:
workbox-build: ^6.5.4
workbox-window: ^6.5.4
dependencies:
'@rollup/plugin-replace': 5.0.2(rollup@3.20.7)
'@rollup/plugin-replace': 5.0.2(rollup@3.21.0)
debug: 4.3.4
fast-glob: 3.2.12
pretty-bytes: 6.1.0
rollup: 3.20.7
rollup: 3.21.0
vite: 4.3.1(@types/node@18.16.0)(less@4.1.3)(terser@5.17.1)
workbox-build: 6.5.4
workbox-window: 6.5.4
@ -8581,12 +8581,12 @@ packages:
- supports-color
dev: true
/vite-vue-plugin-html@1.0.1(rollup@3.20.7)(vite@4.3.1):
/vite-vue-plugin-html@1.0.1(rollup@3.21.0)(vite@4.3.1):
resolution: {integrity: sha512-jbN7p8pOR0aiYndFuPgyQwRAyEp8kIoy6EL741wMh3nDLVjHn4Atfby0k0Jg0aDfWCjoAc9paKdoLoEqOAC9PA==}
peerDependencies:
vite: '>=4.2.0'
dependencies:
'@rollup/pluginutils': 5.0.2(rollup@3.20.7)
'@rollup/pluginutils': 5.0.2(rollup@3.21.0)
colorette: 2.0.19
connect-history-api-fallback: 2.0.0
consola: 2.15.3
@ -8650,7 +8650,7 @@ packages:
esbuild: 0.17.15
less: 4.1.3
postcss: 8.4.23
rollup: 3.20.7
rollup: 3.21.0
terser: 5.17.1
optionalDependencies:
fsevents: 2.3.2

View File

@ -8,7 +8,7 @@ import { isUrl } from '@/utils/is'
export type LayoutMapKey = 'LAYOUT'
const IFRAME = () => import('@/views/base/iframe/FrameBlank.vue')
const URL_HASH_TAB = `__AGWE4H__HASH__TAG__PWHRG__`
const LayoutMap = new Map<string, () => Promise<typeof import('*.vue')>>()
LayoutMap.set('LAYOUT', LAYOUT)
@ -21,6 +21,18 @@ function asyncImportRoute(routes: AppRouteRecordRaw[] | undefined) {
dynamicViewsModules = dynamicViewsModules || import.meta.glob('../../views/**/*.{vue,tsx}')
if (!routes) return
routes.forEach((item) => {
if (/^\/?http(s)?/.test(item.component as string)) {
item.component = item.component.substring(1, item.component.length)
}
if (/^http(s)?/.test(item.component as string)) {
if (item.meta?.internalOrExternal) {
item.path = item.component
item.path = item.path.replace('#', URL_HASH_TAB)
} else {
item.meta.frameSrc = item.component
}
delete item.component
}
if (!item.component && item.meta?.frameSrc) {
item.component = 'IFRAME'
}

View File

@ -1,7 +1,7 @@
import type { RouteRecordRaw } from 'vue-router'
import type { App } from 'vue'
import { createRouter, createWebHashHistory } from 'vue-router'
import { createRouter, createWebHistory } from 'vue-router'
import { basicRoutes } from './routes'
// 白名单应该包含基本静态路由
@ -17,7 +17,7 @@ getRouteNames(basicRoutes)
// 创建一个可以被 Vue 应用程序使用的路由实例
export const router = createRouter({
// 创建一个 hash 历史记录。
history: createWebHashHistory(import.meta.env.VITE_PUBLIC_PATH),
history: createWebHistory(import.meta.env.VITE_PUBLIC_PATH), // createWebHashHistory
// 应该添加到路由的初始路由列表。
routes: basicRoutes as unknown as RouteRecordRaw[],
// 是否应该禁止尾部斜杠。默认为假

View File

@ -0,0 +1,30 @@
import type { AppRouteModule } from '@/router/types'
import { LAYOUT } from '@/router/constant'
const menu: AppRouteModule = {
path: '/sysmenu',
name: 'SysMenu',
component: LAYOUT,
redirect: '/sysmenu/index',
meta: {
hideChildrenInMenu: true,
icon: 'ant-design:bank-twotone',
title: '系统菜单',
orderNo: 9999
},
children: [
{
path: 'index',
name: 'SystemMenu',
component: () => import('@/views/system/menu/index.vue'),
meta: {
title: '系统菜单',
icon: 'ant-design:bank-twotone',
hideMenu: true
}
}
]
}
export default menu

View File

@ -8,6 +8,7 @@ import { useUserStore } from './user'
import { useAppStoreWithOut } from './app'
import { asyncRoutes } from '@/router/routes'
import about from '@/router/routes/modules/about'
import menu from '@/router/routes/modules/menu'
import dashboard from '@/router/routes/modules/dashboard'
import { PAGE_NOT_FOUND_ROUTE } from '@/router/routes/basic'
import { transformRouteToMenu } from '@/router/helper/menuHelper'
@ -227,7 +228,7 @@ export const usePermissionStore = defineStore('app-permission', {
// Background routing to menu structure
// 后台路由到菜单结构
const backMenuList = transformRouteToMenu([dashboard, ...routeList, about])
const backMenuList = transformRouteToMenu([dashboard, ...routeList, menu, about])
this.setBackMenuList(backMenuList)
// remove meta.ignoreRoute item
@ -235,7 +236,7 @@ export const usePermissionStore = defineStore('app-permission', {
routeList = filter(routeList, routeRemoveIgnoreFilter)
routeList = routeList.filter(routeRemoveIgnoreFilter)
routeList = flatMultiLevelRoutes(routeList)
routes = [PAGE_NOT_FOUND_ROUTE, dashboard, ...routeList, about]
routes = [PAGE_NOT_FOUND_ROUTE, dashboard, ...routeList, menu, about]
break
}

View File

@ -11,7 +11,7 @@ import { createCodegenList, getSchemaTableList } from '@/api/infra/codegen'
const emit = defineEmits(['success', 'register'])
const [registerTable, { getSelectRowKeys }] = useTable({
const [registerTable, { getSelectRowKeys, getForm }] = useTable({
api: getSchemaTableList,
columns: importTableColumns,
formConfig: {
@ -32,8 +32,8 @@ const [registerModal, { setModalProps, closeModal }] = useModalInner(async () =>
async function handleSubmit() {
const datas = await getSelectRowKeys()
console.info(datas)
await createCodegenList({ dataSourceConfigId: 0, tableNames: datas })
const form = await getForm()
await createCodegenList({ dataSourceConfigId: form.getFieldsValue().dataSourceConfigId, tableNames: datas })
closeModal()
emit('success')
}