fix: resolve func undefined in menu init and slice error on undefined array in kitting vue

This commit is contained in:
DXC
2026-03-24 09:42:57 +08:00
parent 8af460b5d4
commit fd47c5ebbe
2 changed files with 8 additions and 6 deletions

View File

@ -1,5 +1,6 @@
from app.models.system import SysMenu, SysElement, SysRolePermission from app.models.system import SysMenu, SysElement, SysRolePermission
from app.extensions import db from app.extensions import db
from sqlalchemy import func
from sqlalchemy.exc import SQLAlchemyError from sqlalchemy.exc import SQLAlchemyError
@ -401,7 +402,7 @@ class PermissionService:
# 定义菜单结构 (code, name, path, parent_code, sort_order) # 定义菜单结构 (code, name, path, parent_code, sort_order)
menu_defs = [ menu_defs = [
# 顶级菜单 (按侧边栏顺序) # 顶级菜单 (按侧边栏顺序)
('material_mgmt', '基础信息管理', '/material', None, 10), ('material_mgmt', '基础信息管理', '/basic', None, 10),
('inventory_mgmt', '入库管理', '/inventory', None, 20), ('inventory_mgmt', '入库管理', '/inventory', None, 20),
('stocktake_mgmt', '盘点管理', '/stocktake', None, 30), ('stocktake_mgmt', '盘点管理', '/stocktake', None, 30),
('outbound_mgmt', '出库管理', '/outbound', None, 40), ('outbound_mgmt', '出库管理', '/outbound', None, 40),
@ -410,8 +411,9 @@ class PermissionService:
('scrap_mgmt', '报废管理', '/scrap', None, 70), ('scrap_mgmt', '报废管理', '/scrap', None, 70),
('system_mgmt', '系统管理', '/system', None, 80), ('system_mgmt', '系统管理', '/system', None, 80),
# 基础信息子菜单 # 基础信息子菜单/basic 父级下的两个子路由)
('material_base', '基础信息', '/material/index', 'material_mgmt', 1), ('material_base', '物料基础信息', '/basic/material', 'material_mgmt', 1),
('basic_kitting', '产能与齐套分析', '/basic/kitting', 'material_mgmt', 2),
# 入库管理子菜单 # 入库管理子菜单
('inbound_buy', '采购入库', '/inventory/buy', 'inventory_mgmt', 1), ('inbound_buy', '采购入库', '/inventory/buy', 'inventory_mgmt', 1),

View File

@ -302,7 +302,7 @@ const pageSize = ref(20)
const filteredTableData = computed(() => { const filteredTableData = computed(() => {
if (!searchKeyword.value.trim()) return paginatedData.value if (!searchKeyword.value.trim()) return paginatedData.value
const kw = searchKeyword.value.trim().toLowerCase() const kw = searchKeyword.value.trim().toLowerCase()
return tableData.value.filter(item => return (tableData.value || []).filter((item: any) =>
(item.bom_no || '').toLowerCase().includes(kw) || (item.bom_no || '').toLowerCase().includes(kw) ||
(item.parent_name || '').toLowerCase().includes(kw) (item.parent_name || '').toLowerCase().includes(kw)
) )
@ -310,7 +310,7 @@ const filteredTableData = computed(() => {
const paginatedData = computed(() => { const paginatedData = computed(() => {
const start = (page.value - 1) * pageSize.value const start = (page.value - 1) * pageSize.value
return filteredTableData.value.slice(start, start + pageSize.value) return (filteredTableData.value || []).slice(start, start + pageSize.value)
}) })
const handleFilter = () => { const handleFilter = () => {
@ -330,7 +330,7 @@ const loadData = async () => {
try { try {
// 1. 读取用户监控列表 // 1. 读取用户监控列表
const prefRes: any = await getUserPreferences() const prefRes: any = await getUserPreferences()
const watchlist: any[] = prefRes.data?.bom_kitting_watchlist || [] const watchlist: any[] = (prefRes.data?.bom_kitting_watchlist) || []
if (!watchlist.length) { if (!watchlist.length) {
tableData.value = [] tableData.value = []
loading.value = false loading.value = false