86 lines
2.5 KiB
Python
86 lines
2.5 KiB
Python
|
|
#!/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())
|