#!/usr/bin/env python3 """修复工单领取菜单路径""" import asyncio from sqlalchemy.ext.asyncio import create_async_engine from sqlalchemy import text DB_CONFIG = { 'host': '123.57.81.127', 'port': 3306, 'user': 'cpy_admin', 'password': 'Tgzz2025+', 'database': 'ruoyi-fastapi' } DATABASE_URL = ( f"mysql+asyncmy://{DB_CONFIG['user']}:{DB_CONFIG['password']}@" f"{DB_CONFIG['host']}:{DB_CONFIG['port']}/{DB_CONFIG['database']}" ) async def fix_workorder_path(): engine = create_async_engine(DATABASE_URL, echo=False) async with engine.connect() as conn: print("=" * 80) print("Fixing Work Order Claim Path") print("=" * 80) # 获取工单管理目录的 path result = await conn.execute(text(""" SELECT menu_id, path FROM sys_menu WHERE menu_id = 2112 """)) parent = result.fetchone() parent_id = parent[0] parent_path = parent[1] print(f"\n[Parent Menu]") print(f" ID: {parent_id}") print(f" Path: {parent_path}") # 获取工单领取菜单 result = await conn.execute(text(""" SELECT menu_id, path, component FROM sys_menu WHERE menu_id = 2113 """)) child = result.fetchone() print(f"\n[Child Menu - Before Fix]") print(f" ID: {child[0]}") print(f" Path: {child[1]}") print(f" Component: {child[2]}") # 修复路径 - 将 workorder/claim 改为 claim old_path = child[1] new_path = old_path.replace(parent_path + '/', '') await conn.execute(text(f""" UPDATE sys_menu SET path = '{new_path}' WHERE menu_id = 2113 """)) await conn.commit() print(f"\n[Child Menu - After Fix]") print(f" Path: {new_path}") print(f" Full URL will be: /{parent_path}/{new_path}") # 验证修复 result = await conn.execute(text(""" SELECT menu_id, path, component FROM sys_menu WHERE menu_id = 2113 """)) row = result.fetchone() print(f"\n[Verification]") print(f" ID: {row[0]}") print(f" Path: {row[1]}") print(f" Component: {row[2]}") print("\n" + "=" * 80) print("Fix Complete") print("=" * 80) print("\nPlease logout and login again to refresh the menu") await engine.dispose() if __name__ == '__main__': asyncio.run(fix_workorder_path())