fix: 淇鍔ㄦ€佽矾鐢卞埛鏂板悗鏈敞鍐屽鑷磋彍鍗曡烦杞暣椤靛埛鏂? 浠g爜鐢熸垚鎺ュ彛璺緞涓庡悗绔榻? 琛ュ厖basic API妯″潡

This commit is contained in:
张家训
2026-08-19 18:48:48 +08:00
parent 0131747f90
commit 3bd3e0aa23
9 changed files with 113 additions and 11 deletions
+9
View File
@@ -33,3 +33,12 @@ debug.log
### Env ###
.env.local
.env.*.local
### 测试/调试临时文件 ###
.playwright-cli/
after-login.yaml
after2.yaml
cur.yaml
post.yaml
run-web.log
run-web-err.log
+37
View File
@@ -0,0 +1,37 @@
import axios from '@/libs/api.request'
import {getToken} from "@/libs/util"
/** 查询配置(按 configType) **/
export const findConfig = (data) => {
return axios.request({
url: 'system/basic-config/findByConfigType',
headers: {
"Authorization": getToken()
},
data: data,
method: 'post'
})
}
/** 更新配置 **/
export const update = (data) => {
return axios.request({
url: 'system/basic-config/update',
headers: {
"Authorization": getToken()
},
data: data,
method: 'post'
})
}
/** 查询阿里云 OSS 配置 **/
export const findAliyunOssConfig = () => {
return axios.request({
url: 'system/basic-config/findAliyunOssConfig',
headers: {
"Authorization": getToken()
},
method: 'post'
})
}
+26
View File
@@ -0,0 +1,26 @@
import axios from '@/libs/api.request'
import {getToken} from "@/libs/util"
/** 获取字典下拉列表 **/
export const getDictSelectList = (data) => {
return axios.request({
url: 'system/basic-dict-item/getDictSelectList',
headers: {
"Authorization": getToken()
},
data: data,
method: 'post'
})
}
/** 按字典编码数组批量获取下拉列表 **/
export const getDictSelectListByArr = (data) => {
return axios.request({
url: 'system/basic-dict-item/getDictSelectListByArr',
headers: {
"Authorization": getToken()
},
data: data,
method: 'post'
})
}
+14
View File
@@ -0,0 +1,14 @@
import axios from '@/libs/api.request'
import {getToken} from "@/libs/util"
/** 获取通知列表 **/
export const getDataList = (data) => {
return axios.request({
url: 'system/basic-notice/findListWithPage',
headers: {
"Authorization": getToken()
},
data: data,
method: 'post'
})
}
+3 -3
View File
@@ -4,7 +4,7 @@ import {getToken} from "@/libs/util"
/** 获取列表 **/
export const getDataList = (data) => {
return axios.request({
url: 'system/youth-generator/findListWithPage',
url: 'generator/findListWithPage',
headers: {
"Authorization": getToken()
},
@@ -16,7 +16,7 @@ export const getDataList = (data) => {
/** 获取table下拉列表 **/
export const getTableSelectList = (data) => {
return axios.request({
url: 'system/youth-generator/getTableSelectList',
url: 'generator/getTableSelectList',
headers: {
"Authorization": getToken()
},
@@ -27,7 +27,7 @@ export const getTableSelectList = (data) => {
/** 提交代码生成规则 **/
export const executeGenerator = (data) => {
return axios.request({
url: 'system/youth-generator/executeGenerator',
url: 'generator/execute',
headers: {
"Authorization": getToken()
},
+7 -2
View File
@@ -24,10 +24,14 @@ export const loadMenuList = () => {
}
export const formatMenuList = (list) => {
console.log(list)
// 遍历格式化菜单
let resList = []
forEach(list, item => {
// 无 url 且无 component 的节点属于纯权限点(如按钮权限),不生成菜单路由
if (!item.url && !item.component) {
if (!hasChild(item)) return
}
let object = {
path: item.url,
name: item.permissionCode,
@@ -39,7 +43,8 @@ export const formatMenuList = (list) => {
}
}
if (item.level === 0 || item.component === 'Main') {
// 一级菜单(数据库 level=1)或显式指定 Main 的,使用 Main 布局组件
if (item.level === 0 || item.level === 1 || item.component === 'Main') {
// 一级菜单
object.component = Main
} else {
+9 -2
View File
@@ -5,7 +5,7 @@ import store from '@/store'
import iView from 'view-design'
import config from '@/config'
import { setToken, getToken, canTurnTo, setTitle, localSave, localRead } from '@/libs/util'
import { loadMenuList, formatMenuList } from '@/libs/router-util'
import { formatMenuList } from '@/libs/router-util'
import { getPermissionList } from '@/api/sys/sys-permission'
const {homeName} = config
@@ -41,6 +41,11 @@ router.beforeEach((to, from, next) => {
name: homeName // 跳转到homeName页
})
} else {
// 已加载过菜单,避免重复 addRoutes 导致路由守卫死循环
if (store.state.app.menuList && store.state.app.menuList.length > 0) {
next()
return
}
store.dispatch('getUserInfo').then(user => {
// 如果本地不存在路由数据则动态获取
if (menuListStr == null || menuListStr == '') {
@@ -53,10 +58,12 @@ router.beforeEach((to, from, next) => {
// 刷新界面菜单
store.commit('updateMenuList', list)
next()
}).catch(() => {
// 获取权限失败,直接放行(保留基础路由),避免卡死
next()
})
} else {
console.log("2")
let list = formatMenuList(JSON.parse(menuListStr))
store.commit('updateMenuList', list)
next()
+5 -2
View File
@@ -17,7 +17,7 @@ import router from '@/router'
import routers from '@/router/routers'
import config from '@/config'
// ①引入路由数据读取方法
import { loadMenuList, createRouter } from '@/libs/router-util'
import { createRouter } from '@/libs/router-util'
const { homeName } = config
@@ -37,7 +37,10 @@ export default {
local: localRead('local'),
errorList: [],
hasReadErrorPage: false,
menuList: loadMenuList(),
// 初始为空,让路由守卫每次登录/刷新后都重新注册动态路由,避免刷新后
// 因 localStore 缓存误判「已加载菜单」而跳过 addRoutes,导致点击菜单时
// 路由名不存在 → vue-router 匹配失败 → 整页刷新(表现为页面闪一下)
menuList: [],
},
getters: {
//menuList: (state, getters, rootState) => getMenuByRouter(routers, rootState.user.access),
+3 -2
View File
@@ -240,7 +240,7 @@
let data = objectUtil.trimJoin(temp, this.search)
this.tableLoading = true
getDataList(data).then(res => {
let pageInfo = res.data.data.pageInfo
let pageInfo = res.data.data.pageInfo || res.data.data
this.pageTotal = pageInfo.total
this.dataList = pageInfo.list
// 延迟300毫秒,给它更流畅的感觉
@@ -412,7 +412,8 @@
},
getTableSelectList() {
getTableSelectList().then(res => {
this.yTableList = res.data.data.list
const data = res.data.data
this.yTableList = Array.isArray(data) ? data : ((data && data.list) || [])
if (this.yTableList.length > 0) {
this.search.yTableName = this.yTableList[0].value
this.getDataList()