| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- import os
- import re
- ROOT = "D:/work/绿水青山/清道夫App/src"
- # 路径替换映射:旧路径 -> 新路径
- PATH_REPLACEMENTS = {
- "/pages/common/projectList": "/subPackages/pages-common/projectList",
- "/pages/common/projectDetail": "/subPackages/pages-common/projectDetail",
- "/pages/common/addProject": "/subPackages/pages-common/addProject",
- "/pages/common/publishTask": "/subPackages/pages-common/publishTask",
- "/pages/common/taskDetail": "/subPackages/pages-common/taskDetail",
- "/pages/common/changePassword": "/subPackages/pages-common/changePassword",
- "/pages/common/noticeList": "/subPackages/pages-common/noticeList",
- "/pages/common/noticeDetail": "/subPackages/pages-common/noticeDetail",
- "/pages/common/messageList": "/subPackages/pages-common/messageList",
- "/pages/common/messageDetail": "/subPackages/pages-common/messageDetail",
- "/pages/common/helpCenter": "/subPackages/pages-common/helpCenter",
- "/pages/common/knowledgeList": "/subPackages/pages-common/knowledgeList",
- "/pages/common/knowledgeDetail": "/subPackages/pages-common/knowledgeDetail",
- "/pages/sales/taskReminder": "/subPackages/pages-sales/taskReminder",
- "/pages/sales/notification": "/subPackages/pages-sales/notification",
- "/pages/sales/knowledgeList": "/subPackages/pages-sales/knowledgeList",
- "/pages/sales/knowledgeDetail": "/subPackages/pages-sales/knowledgeDetail",
- "/pages/sales/messageList": "/subPackages/pages-sales/messageList",
- "/pages/sales/messageDetail": "/subPackages/pages-sales/messageDetail",
- "/pages/dispatch/schedule": "/subPackages/pages-dispatch/schedule",
- "/pages/dispatch/taskDetail": "/subPackages/pages-dispatch/taskDetail",
- "/pages/dispatch/publishTask": "/subPackages/pages-dispatch/publishTask",
- "/pages/dispatch/vehicleList": "/subPackages/pages-dispatch/vehicleList",
- "/pages/dispatch/availableVehicles": "/subPackages/pages-dispatch/availableVehicles",
- "/pages/dispatch/personnel": "/subPackages/pages-dispatch/personnel",
- "/pages/dispatch/onDutyStaff": "/subPackages/pages-dispatch/onDutyStaff",
- "/pages/dispatch/emergencyTeam": "/subPackages/pages-dispatch/emergencyTeam",
- "/pages/dispatch/emergencyStandby": "/subPackages/pages-dispatch/emergencyStandby",
- "/pages/dispatch/visualization": "/subPackages/pages-dispatch/visualization",
- "/pages/dispatch/noticeList": "/subPackages/pages-dispatch/noticeList",
- "/pages/dispatch/noticeDetail": "/subPackages/pages-dispatch/noticeDetail",
- "/pages/dispatch/notification": "/subPackages/pages-dispatch/notification",
- "/pages/construction/taskDetail": "/subPackages/pages-construction/taskDetail",
- "/pages/construction/dailyTask": "/subPackages/pages-construction/dailyTask",
- "/pages/construction/historyTask": "/subPackages/pages-construction/historyTask",
- "/pages/construction/tomorrowTask": "/subPackages/pages-construction/tomorrowTask",
- "/pages/construction/noticeList": "/subPackages/pages-construction/noticeList",
- "/pages/construction/noticeDetail": "/subPackages/pages-construction/noticeDetail",
- "/pages/construction/notification": "/subPackages/pages-construction/notification",
- # 被删除/合并的页面统一指向 common
- "/pages/sales/changePassword": "/subPackages/pages-common/changePassword",
- "/pages/sales/helpCenter": "/subPackages/pages-common/helpCenter",
- "/pages/dispatch/changePassword": "/subPackages/pages-common/changePassword",
- "/pages/dispatch/helpCenter": "/subPackages/pages-common/helpCenter",
- "/pages/construction/changePassword": "/subPackages/pages-common/changePassword",
- "/pages/construction/helpCenter": "/subPackages/pages-common/helpCenter",
- # tabBar 页
- "/pages/common/taskList": "/pages/task/task",
- "/pages/common/profile": "/pages/my/my",
- "/pages/sales/home": "/pages/home/home",
- "/pages/dispatch/home": "/pages/home/home",
- "/pages/dispatch/taskList": "/pages/task/task",
- "/pages/dispatch/myPage": "/pages/my/my",
- "/pages/construction/home": "/pages/home/home",
- "/pages/construction/taskList": "/pages/task/task",
- "/pages/construction/myPage": "/pages/my/my",
- }
- # tabBar 目标路径,需要把 navigateTo/reLaunch 改为 switchTab
- TABBAR_PATHS = [
- "/pages/home/home",
- "/pages/task/task",
- "/pages/my/my",
- ]
- # 扫描的文件后缀
- EXTS = (".vue", ".ts", ".js")
- def replace_paths(content: str) -> str:
- # 1. 替换路径字符串
- for old, new in PATH_REPLACEMENTS.items():
- content = content.replace(old, new)
- return content
- def fix_tabbar_navigation(content: str) -> str:
- # 把指向 tabBar 页面的 navigateTo/reLaunch 改成 switchTab
- # 匹配 uni.navigateTo({ url: '...' }) 或 uni.reLaunch({ url: '...' })
- pattern = re.compile(
- r"uni\.(navigateTo|reLaunch)\(\{\s*url\s*:\s*['\"]([" + "".join(re.escape(p) for p in TABBAR_PATHS) + r"][^'\"]*)['\"]\s*\}\)"
- )
- def replacer(match):
- method = match.group(1)
- url = match.group(2)
- return f"uni.switchTab({{ url: '{url}' }})"
- # 由于 TABBAR_PATHS 是固定的简单字符串,直接用更简单的方式
- for path in TABBAR_PATHS:
- for method in ("navigateTo", "reLaunch"):
- content = re.sub(
- rf"uni\.{method}\(\{{\s*url\s*:\s*['\"]{re.escape(path)}[^'\"]*['\"]\s*\}}\)",
- lambda m, p=path: f"uni.switchTab({{ url: '{p}' }})",
- content,
- )
- return content
- def process_file(filepath: str):
- with open(filepath, "r", encoding="utf-8") as f:
- content = f.read()
- new_content = replace_paths(content)
- new_content = fix_tabbar_navigation(new_content)
- if new_content != content:
- with open(filepath, "w", encoding="utf-8") as f:
- f.write(new_content)
- print(f"Updated: {filepath}")
- def main():
- for dirpath, _, filenames in os.walk(ROOT):
- for filename in filenames:
- if filename.endswith(EXTS):
- process_file(os.path.join(dirpath, filename))
- if __name__ == "__main__":
- main()
|