1
0
mirror of https://github.com/zclzone/vue-naive-admin.git synced 2025-12-28 12:10:20 +08:00

8 Commits

Author SHA1 Message Date
张传龙
9c5f4eaa3d chore: 依赖更新 2022-04-02 09:39:16 +08:00
张传龙
361fb52345 mod: 修改配置,打包默认不生成CNAME文件 2022-04-01 17:59:04 +08:00
张传龙
5993e8d7d0 refactor: 全局规范化调整文件夹和文件命名(代码无改动) 2022-04-01 17:41:07 +08:00
张传龙
8648f16ed8 mod: remove router.isReady 2022-04-01 16:39:26 +08:00
张传龙
33aaadba60 fix: 修复挂载路由时使用$loadingBar出错问题 2022-03-29 09:28:36 +08:00
张传龙
437d87f19e mod: 调整setupApp相关写法 2022-03-28 18:31:32 +08:00
张传龙
dfcc8c2158 mod: 修改失效图片链接 2022-03-26 17:50:29 +08:00
张传龙
51a583fc1e feat: 添加pageTitle路由守卫,支持动态修改页面title 2022-03-24 20:47:05 +08:00
16 changed files with 449 additions and 470 deletions

2
.env
View File

@@ -3,4 +3,4 @@ VITE_APP_TITLE = 'Vue Naive Admin'
VITE_PORT = 3100 VITE_PORT = 3100
# 打包时自动生成CNAME文件用于配置github pages自定义域名如不需要可注释或者直接删除 # 打包时自动生成CNAME文件用于配置github pages自定义域名如不需要可注释或者直接删除
VITE_APP_GLOB_CNAME = 'template.qszone.com' # VITE_APP_GLOB_CNAME = 'template.qszone.com'

View File

@@ -7,7 +7,7 @@ export function configMockPlugin(isBuild) {
localEnabled: !isBuild, localEnabled: !isBuild,
prodEnabled: isBuild, prodEnabled: isBuild,
injectCode: ` injectCode: `
import { setupProdMockServer } from '../mock/_createProdServer'; import { setupProdMockServer } from '../mock/_create-prod-server';
setupProdMockServer(); setupProdMockServer();
`, `,
}) })

View File

@@ -4,21 +4,21 @@ const users = {
admin: { admin: {
id: 1, id: 1,
name: '大脸怪(admin)', name: '大脸怪(admin)',
avatar: 'https://gitee.com/zclzone/res/raw/master/qs-zone/blob/img/lADPDiQ3QDTwsz3NAarNAaw_428_426.jpg', avatar: 'https://assets.qszone.com/images/avatar.jpg',
email: 'Ronnie@123.com', email: 'Ronnie@123.com',
role: ['admin'], role: ['admin'],
}, },
editor: { editor: {
id: 2, id: 2,
name: '大脸怪(editor)', name: '大脸怪(editor)',
avatar: 'https://gitee.com/zclzone/res/raw/master/qs-zone/blob/img/lADPDiQ3QDTwsz3NAarNAaw_428_426.jpg', avatar: 'https://assets.qszone.com/images/avatar.jpg',
email: 'Ronnie@123.com', email: 'Ronnie@123.com',
role: ['editor'], role: ['editor'],
}, },
guest: { guest: {
id: 3, id: 3,
name: '访客(guest)', name: '访客(guest)',
avatar: 'https://gitee.com/zclzone/res/raw/master/qs-zone/blob/img/lADPDiQ3QDTwsz3NAarNAaw_428_426.jpg', avatar: 'https://assets.qszone.com/images/avatar.jpg',
role: [], role: [],
}, },
} }

View File

@@ -13,35 +13,35 @@
"dependencies": { "dependencies": {
"@vicons/fa": "^0.11.0", "@vicons/fa": "^0.11.0",
"axios": "^0.21.4", "axios": "^0.21.4",
"dayjs": "^1.10.7", "dayjs": "^1.11.0",
"lodash-es": "^4.17.21", "lodash-es": "^4.17.21",
"md-editor-v3": "^1.10.2", "md-editor-v3": "^1.11.4",
"mockjs": "^1.1.0", "mockjs": "^1.1.0",
"pinia": "^2.0.11", "pinia": "^2.0.13",
"vue": "^3.2.30", "vue": "^3.2.31",
"vue-router": "^4.0.12" "vue-router": "^4.0.14"
}, },
"devDependencies": { "devDependencies": {
"@unocss/preset-attributify": "^0.16.4", "@unocss/preset-attributify": "^0.16.4",
"@unocss/preset-icons": "^0.16.4", "@unocss/preset-icons": "^0.16.4",
"@unocss/preset-uno": "^0.16.4", "@unocss/preset-uno": "^0.16.4",
"@vitejs/plugin-vue": "^1.10.2", "@vitejs/plugin-vue": "^1.10.2",
"@vue/compiler-sfc": "^3.2.30", "@vue/compiler-sfc": "^3.2.31",
"chalk": "^5.0.0", "chalk": "^5.0.1",
"dotenv": "^10.0.0", "dotenv": "^10.0.0",
"eslint": "^8.6.0", "eslint": "^8.12.0",
"eslint-config-prettier": "^8.3.0", "eslint-config-prettier": "^8.5.0",
"eslint-plugin-prettier": "^4.0.0", "eslint-plugin-prettier": "^4.0.0",
"eslint-plugin-vue": "^8.2.0", "eslint-plugin-vue": "^8.5.0",
"esno": "^0.13.0", "esno": "^0.13.0",
"fs-extra": "^10.0.0", "fs-extra": "^10.0.1",
"naive-ui": "^2.25.2", "naive-ui": "^2.27.0",
"prettier": "^2.5.1", "prettier": "^2.6.1",
"sass": "^1.38.1", "sass": "^1.49.10",
"unocss": "^0.16.4", "unocss": "^0.16.4",
"unplugin-vue-components": "^0.17.18", "unplugin-vue-components": "^0.17.21",
"vite": "^2.8.0", "vite": "^2.9.1",
"vite-plugin-html": "^2.1.1", "vite-plugin-html": "^2.1.2",
"vite-plugin-mock": "^2.9.6", "vite-plugin-mock": "^2.9.6",
"vite-plugin-vue-setup-extend": "^0.3.0" "vite-plugin-vue-setup-extend": "^0.3.0"
} }

831
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff

View File

Before

Width:  |  Height:  |  Size: 59 KiB

After

Width:  |  Height:  |  Size: 59 KiB

View File

@@ -40,21 +40,21 @@ function switchRole() {
{ {
id: 1, id: 1,
name: '大脸怪(admin)', name: '大脸怪(admin)',
avatar: 'https://gitee.com/zclzone/res/raw/master/qs-zone/blob/img/lADPDiQ3QDTwsz3NAarNAaw_428_426.jpg', avatar: 'https://assets.qszone.com/images/avatar.jpg',
email: 'Ronnie@123.com', email: 'Ronnie@123.com',
role: ['admin'], role: ['admin'],
}, },
{ {
id: 2, id: 2,
name: '大脸怪(editor)', name: '大脸怪(editor)',
avatar: 'https://gitee.com/zclzone/res/raw/master/qs-zone/blob/img/lADPDiQ3QDTwsz3NAarNAaw_428_426.jpg', avatar: 'https://assets.qszone.com/images/avatar.jpg',
email: 'Ronnie@123.com', email: 'Ronnie@123.com',
role: ['editor'], role: ['editor'],
}, },
{ {
id: 3, id: 3,
name: '访客(guest)', name: '访客(guest)',
avatar: 'https://gitee.com/zclzone/res/raw/master/qs-zone/blob/img/lADPDiQ3QDTwsz3NAarNAaw_428_426.jpg', avatar: 'https://assets.qszone.com/images/avatar.jpg',
role: [], role: [],
}, },
] ]

View File

@@ -2,18 +2,18 @@ import '@/styles/index.scss'
import 'uno.css' import 'uno.css'
import { createApp } from 'vue' import { createApp } from 'vue'
import App from './App.vue'
import { setupRouter } from '@/router' import { setupRouter } from '@/router'
import { setupStore } from '@/store' import { setupStore } from '@/store'
import App from './App.vue'
async function bootstrap() { function setupApp() {
const app = createApp(App) const app = createApp(App)
setupStore(app) setupStore(app)
setupRouter(app) setupRouter(app)
app.mount('#app', true) app.mount('#app')
} }
bootstrap() setupApp()

View File

@@ -1,7 +1,9 @@
import { createPageLoadingGuard } from './pageLoadingGuard' import { createPageLoadingGuard } from './page-loading-guard'
import { createPermissionGuard } from './permissionGuard' import { createPageTitleGuard } from './page-title-guard'
import { createPermissionGuard } from './permission-guard'
export function setupRouterGuard(router) { export function setupRouterGuard(router) {
createPageLoadingGuard(router) createPageLoadingGuard(router)
createPermissionGuard(router) createPermissionGuard(router)
createPageTitleGuard(router)
} }

View File

@@ -1,15 +1,15 @@
export function createPageLoadingGuard(router) { export function createPageLoadingGuard(router) {
router.beforeEach(() => { router.beforeEach(() => {
$loadingBar.start() window.$loadingBar?.start()
}) })
router.afterEach(() => { router.afterEach(() => {
setTimeout(() => { setTimeout(() => {
$loadingBar.finish() window.$loadingBar?.finish()
}, 200) }, 200)
}) })
router.onError(() => { router.onError(() => {
$loadingBar.error() window.$loadingBar?.error()
}) })
} }

View File

@@ -0,0 +1,12 @@
const baseTitle = import.meta.env.VITE_APP_TITLE
export function createPageTitleGuard(router) {
router.afterEach((to) => {
const pageTitle = to.meta?.title
if (pageTitle) {
document.title = `${pageTitle} | ${baseTitle}`
} else {
document.title = baseTitle
}
})
}

View File

@@ -1,4 +1,4 @@
import { createWebStorage } from './webStorage' import { createWebStorage } from './web-storage'
export const createLocalStorage = function (option = {}) { export const createLocalStorage = function (option = {}) {
return createWebStorage({ prefixKey: option.prefixKey || '', storage: localStorage }) return createWebStorage({ prefixKey: option.prefixKey || '', storage: localStorage })

View File

@@ -7,7 +7,7 @@ const { replace } = useRouter()
<div class="page-404"> <div class="page-404">
<n-result status="404" description="抱歉,您访问的页面不存在。"> <n-result status="404" description="抱歉,您访问的页面不存在。">
<template #icon> <template #icon>
<img src="@/assets/imgs/404/404.png" width="500" /> <img src="@/assets/images/404.png" width="500" />
</template> </template>
<template #footer> <template #footer>
<n-button color="#002d6f" @click="replace('/')">返回首页</n-button> <n-button color="#002d6f" @click="replace('/')">返回首页</n-button>