Compare commits

..

2 Commits

Author SHA1 Message Date
张成
73132f616a 1 2025-10-08 16:15:30 +08:00
张成
654f340a37 1 2025-10-08 16:12:13 +08:00
2 changed files with 101 additions and 0 deletions

View File

@@ -124,6 +124,16 @@ class AdminFramework {
Vue.use(ViewUI)
}
// 自动注册 VueRouter
if (VueRouter) {
Vue.use(VueRouter)
}
// 自动注册 Vuex
if (Vuex) {
Vue.use(Vuex)
}
// 挂载全局配置和工具
Vue.prototype.$config = config
Vue.prototype.$http = http

View File

@@ -108,6 +108,7 @@ import VueRouter from 'vue-router'
import Vuex from 'vuex'
import ViewUI from 'view-design'
import createPersistedState from 'vuex-persistedstate'
import VueRouter from 'vue-router'
import AdminFramework from './libs/admin-framework.js'
import App from './App.vue'
import config from './config'
@@ -782,6 +783,96 @@ A: **框架已包含所有系统功能,只需准备:**
其他所有系统页面、API、组件都已在框架中无需复制
### Q9: `this.$store.dispatch` 报错怎么办?
A: **常见原因和解决方案**
**1. Store 未正确挂载**
确保在创建 Vue 实例时使用了框架的 store
```javascript
new Vue({
el: '#app',
router: AdminFramework.router,
store: AdminFramework.store, // ✅ 必须挂载 store
render: h => h(App)
})
```
**2. 命名空间路径错误**
框架的 store 模块都使用了 `namespaced: true`,必须带上模块名:
```javascript
// ❌ 错误 - 缺少命名空间
this.$store.dispatch('setAuthorityMenus', data)
// ✅ 正确 - 带上模块名 user/
this.$store.dispatch('user/setAuthorityMenus', data)
// ✅ 正确 - app 模块
this.$store.dispatch('app/getSysTitle', { defaultTitle: '系统' })
```
**3. Store 在 setup/install 时未创建**
确保在 Vue.use() 时传入了 Vuex
```javascript
// ✅ 正确 - 框架会自动创建 store
Vue.use(AdminFramework, {
config,
ViewUI,
VueRouter,
Vuex, // ✅ 必须传入 Vuex
createPersistedState
})
```
**4. 可用的 Store Actions**
**user 模块**(需要加 `user/` 前缀):
- `user/setAuthorityMenus` - 设置权限菜单
- `user/handleLogin` - 处理登录
- `user/handleLogOut` - 处理登出
**app 模块**(需要加 `app/` 前缀):
- `app/getSysTitle` - 获取系统标题和 Logo
**完整示例**
```javascript
export default {
mounted() {
// 设置权限菜单
this.$store.dispatch('user/setAuthorityMenus', {
Main: AdminFramework.Main,
ParentView: AdminFramework.ParentView,
Page404: AdminFramework.Page404
})
// 获取系统标题
this.$store.dispatch('app/getSysTitle', {
defaultTitle: '智能代码平台',
defaultLogo: ''
})
},
methods: {
async login() {
// 处理登录
await this.$store.dispatch('user/handleLogin', {
userFrom: { username: 'admin', password: '123456' },
Main: AdminFramework.Main,
ParentView: AdminFramework.ParentView,
Page404: AdminFramework.Page404
})
this.$router.push({ name: 'home' })
},
logout() {
// 处理登出
this.$store.dispatch('user/handleLogOut')
}
}
}
```
---
## 📦 完整的项目结构示例