Files
kt-financial-system/apps/web-antd/index.html
woshiqp465 1e42191296 refactor: 整合财务系统到主应用并重构后端架构
主要变更:
- 将独立的 web-finance 应用整合到 web-antd 主应用中
- 重命名 backend-mock 为 backend,增强后端功能
- 新增财务模块 API 端点(账户、预算、类别、交易)
- 增强财务仪表板和报表功能
- 添加 SQLite 数据存储支持和财务数据导入脚本
- 优化路由结构,删除冗余的 finance-system 模块

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-04 21:14:21 +08:00

126 lines
4.4 KiB
HTML

<!doctype html>
<html lang="zh">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<meta name="renderer" content="webkit" />
<meta name="description" content="A Modern Back-end Management System" />
<meta name="keywords" content="Vben Admin Vue3 Vite" />
<meta name="author" content="Vben" />
<meta
name="viewport"
content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=0"
/>
<!-- 由 vite 注入 VITE_APP_TITLE 变量,在 .env 文件内配置 -->
<title><%= VITE_APP_TITLE %></title>
<link rel="icon" href="/favicon.ico" />
<script>
// 生产环境下注入百度统计
if (window._VBEN_ADMIN_PRO_APP_CONF_) {
var _hmt = _hmt || [];
(function () {
var hm = document.createElement('script');
hm.src =
'https://hm.baidu.com/hm.js?b38e689f40558f20a9a686d7f6f33edf';
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(hm, s);
})();
}
</script>
</head>
<body>
<div id="app"></div>
<script>
// Flatten FinWise Pro menu - Remove parent menu and show children directly
(function() {
console.log('[FinWise] Script loaded');
function flattenFinWiseProMenu() {
console.log('[FinWise] flattenFinWiseProMenu called');
const submenus = document.querySelectorAll('.vben-sub-menu');
console.log('[FinWise] Found submenus:', submenus.length);
let finwiseMenu = null;
submenus.forEach(menu => {
const titleEl = menu.querySelector('.vben-sub-menu-content__title');
if (titleEl && titleEl.textContent) {
console.log('[FinWise] Menu title:', titleEl.textContent.trim());
if (titleEl.textContent.includes('FinWise Pro')) {
finwiseMenu = menu;
console.log('[FinWise] Found FinWise Pro menu!');
}
}
});
if (!finwiseMenu) {
console.log('[FinWise] FinWise Pro menu not found');
return;
}
const parentMenu = finwiseMenu.parentElement;
const childrenUL = finwiseMenu.querySelector('.vben-menu');
if (!childrenUL || !parentMenu) {
console.log('[FinWise] No children or parent');
return;
}
// Check if already processed
if (finwiseMenu.style.display === 'none') {
console.log('[FinWise] Already processed');
return;
}
// Move all children to the parent menu
const children = Array.from(childrenUL.children);
console.log('[FinWise] Moving', children.length, 'children');
children.forEach(child => {
parentMenu.insertBefore(child, finwiseMenu);
});
// Hide the FinWise Pro submenu
finwiseMenu.style.display = 'none';
console.log('[FinWise] Successfully flattened menu!');
}
// Run after DOM loads
const delays = [500, 1000, 1500, 2000, 2500, 3000, 4000, 5000, 6000, 7000, 8000];
console.log('[FinWise] Setting up delays:', delays);
if (document.readyState === 'loading') {
console.log('[FinWise] Waiting for DOMContentLoaded');
document.addEventListener('DOMContentLoaded', function() {
console.log('[FinWise] DOMContentLoaded fired');
delays.forEach(delay => {
setTimeout(flattenFinWiseProMenu, delay);
});
});
} else {
console.log('[FinWise] DOM already loaded');
delays.forEach(delay => {
setTimeout(flattenFinWiseProMenu, delay);
});
}
// Watch for DOM changes
setTimeout(function() {
console.log('[FinWise] Setting up MutationObserver');
const observer = new MutationObserver(function() {
setTimeout(flattenFinWiseProMenu, 200);
});
const body = document.body;
if (body) {
observer.observe(body, {
childList: true,
subtree: true
});
console.log('[FinWise] MutationObserver active');
}
}, 500);
})();
</script>
<script type="module" src="/src/main.ts"></script>
</body>
</html>