Files
tiantian-system/docs/规划文档/功能菜单脑图.html
赵忠林 a9da04fbb8 fix(oa): 修复多处 Duplicate attribute 错误问题
- 修改 app/components/oa/TaskForm.vue 中 a-input 类型冲突为 a-input-number
- 合并 admin/supply/warehouse.vue 和 production/equipment.vue 中多个 :class 绑定,避免重复属性
- 统一改为数组方式绑定静态和动态 class,防止 Vue 编译器 Duplicate attribute 警告
- 清理缓存并验证构建通过,确保无重复属性错误
- 通过扫描确认 app/ 目录下 Vue 文件不再存在重复属性问题
- 添加 OaTaskForm 组件类型声明及懒加载声明
- 将 ERP 演示独立 HTML 页面整合至 /app/pages,统一布局与导航
- 升级制造业管理后台页面风格,采用玻璃态和渐变设计
- 修订规划文档相关内容,更新 DEMO 系统名称及功能模块描述
- 修改 ecosystem.config.cjs 中运行端口为 10591
2026-04-09 12:08:55 +08:00

462 lines
16 KiB
HTML
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>DEMO演示系统 - 功能菜单脑图</title>
<script src="https://cdn.jsdelivr.net/npm/markmap-lib@0.14.4/dist/browser/index.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/d3@7"></script>
<script src="https://cdn.jsdelivr.net/npm/markmap-view@0.14.4/dist/browser/index.min.js"></script>
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'PingFang SC', sans-serif;
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
min-height: 100vh;
padding: 20px;
}
.container {
max-width: 1800px;
margin: 0 auto;
}
.header {
text-align: center;
color: white;
margin-bottom: 30px;
}
.header h1 {
font-size: 2.5rem;
font-weight: 600;
text-shadow: 0 2px 10px rgba(0,0,0,0.2);
margin-bottom: 10px;
}
.header p {
opacity: 0.9;
font-size: 1.1rem;
}
#mindmap {
background: white;
border-radius: 20px;
box-shadow: 0 25px 50px -12px rgba(0,0,0,0.25);
overflow: hidden;
min-height: 800px;
}
#mindmap svg {
width: 100%;
height: 800px;
}
.toolbar {
display: flex;
gap: 10px;
margin-bottom: 20px;
justify-content: center;
flex-wrap: wrap;
}
.toolbar button {
padding: 12px 24px;
border: none;
border-radius: 10px;
cursor: pointer;
font-size: 1rem;
font-weight: 500;
transition: all 0.3s ease;
}
.toolbar button.primary {
background: white;
color: #667eea;
}
.toolbar button.secondary {
background: rgba(255,255,255,0.2);
color: white;
}
.toolbar button:hover {
transform: translateY(-2px);
box-shadow: 0 5px 15px rgba(0,0,0,0.2);
}
.legend {
display: flex;
justify-content: center;
gap: 30px;
margin-top: 20px;
flex-wrap: wrap;
}
.legend-item {
display: flex;
align-items: center;
gap: 8px;
color: white;
font-size: 0.9rem;
}
.legend-dot {
width: 12px;
height: 12px;
border-radius: 50%;
}
</style>
</head>
<body>
<div class="container">
<div class="header">
<h1>🗺️ 天天系统功能菜单脑图</h1>
<p>6大核心模块 · 完整功能架构</p>
</div>
<div class="toolbar">
<button class="primary" onclick="zoomIn()">🔍 放大</button>
<button class="primary" onclick="zoomOut()">🔍 缩小</button>
<button class="secondary" onclick="resetZoom()">↺ 重置</button>
<button class="secondary" onclick="downloadImage()">📥 下载PNG</button>
</div>
<div id="mindmap"></div>
<div class="legend">
<div class="legend-item">
<div class="legend-dot" style="background: #667eea;"></div>
<span>一级菜单</span>
</div>
<div class="legend-item">
<div class="legend-dot" style="background: #764ba2;"></div>
<span>二级菜单</span>
</div>
<div class="legend-item">
<div class="legend-dot" style="background: #f093fb;"></div>
<span>三级功能</span>
</div>
</div>
</div>
<script>
const { Markmap, loadCSS, loadJS } = markmap;
const data = {
content: "DEMO演示系统 ERP",
children: [
{
content: "1⃣ 设备管理",
children: [
{
content: "📊 设备台账",
children: [
"设备列表",
"设备分类",
"设备档案"
]
},
{
content: "🔍 巡检管理",
children: [
"巡检计划",
"巡检任务",
"巡检记录"
]
},
{
content: "🔧 维护保养",
children: [
"保养计划",
"保养任务",
"维修记录"
]
},
{
content: "📈 统计分析",
children: [
"设备完好率",
"故障分析",
"维保成本"
]
}
]
},
{
content: "2⃣ 采购管理",
children: [
{
content: "📝 采购需求",
children: [
"需求申请",
"需求审批",
"需求池"
]
},
{
content: "📋 采购订单",
children: [
"订单创建",
"订单跟踪",
"订单结算"
]
},
{
content: "🏭 供应商管理",
children: [
"供应商档案",
"供应商评估",
"供应商分类"
]
},
{
content: "📦 库存查询",
children: [
"实时库存",
"库存预警",
"库存流水"
]
}
]
},
{
content: "3⃣ 仓储物流",
children: [
{
content: "📥 入库管理",
children: [
"采购入库",
"生产入库",
"退货入库"
]
},
{
content: "📤 出库管理",
children: [
"领料出库",
"销售出库",
"调拨出库"
]
},
{
content: "📦 库存管理",
children: [
"库存盘点",
"库存调拨",
"库存预警"
]
},
{
content: "📊 报表统计",
children: [
"出入库明细",
"库存周转",
"ABC分析"
]
}
]
},
{
content: "4⃣ 财务管理",
children: [
{
content: "📒 总账管理",
children: [
"科目设置",
"凭证管理",
"账簿查询"
]
},
{
content: "💵 应收应付",
children: [
"应收账款",
"应付账款",
"收付款管理"
]
},
{
content: "📊 报表中心",
children: [
"资产负债表",
"利润表",
"现金流量表"
]
},
{
content: "💼 资产管理",
children: [
"固定资产",
"资产折旧",
"资产盘点"
]
},
{
content: "💳 出纳管理",
children: [
"银行对账",
"现金日记账",
"资金计划"
]
}
]
},
{
content: "5⃣ 人力资源",
children: [
{
content: "🏢 组织管理",
children: [
"组织架构",
"岗位管理",
"编制管理"
]
},
{
content: "👤 员工管理",
children: [
"员工档案",
"入职离职",
"合同管理"
]
},
{
content: "📅 假期管理",
children: [
"假期类型",
"假期余额",
"请假审批"
]
},
{
content: "💰 薪酬核算",
children: [
"薪资结构",
"薪资计算",
"薪资发放"
]
},
{
content: "⚙️ 工作流配置",
children: [
"审批流程",
"表单设计",
"流程监控"
]
}
]
},
{
content: "6⃣ 协同办公",
children: [
{
content: "🏠 企业门户",
children: [
"门户配置",
"快捷入口",
"消息中心"
]
},
{
content: "📚 知识管理",
children: [
"文档中心",
"知识库",
"文件共享"
]
},
{
content: "📝 审批中心",
children: [
"待办事项",
"已办事项",
"我发起的"
]
},
{
content: "💸 费用报销",
children: [
"报销申请",
"借款管理",
"费用标准"
]
},
{
content: "📢 通知公告",
children: [
"公告发布",
"公告管理",
"阅读统计"
]
}
]
}
]
};
let markmap = null;
let svgElement = null;
let scale = 1;
function initMindmap() {
markmap = Markmap.create('#mindmap', {
preset: 'colorful',
color: (node) => {
if (node.depth === 0) return '#667eea';
if (node.depth === 1) return '#764ba2';
if (node.depth === 2) return '#f093fb';
return '#4fd1c5';
},
initialExpandLevel: 2,
nodeHeight: 28,
paddingX: 16,
paddingY: 8,
duration: 500
}, data);
}
function zoomIn() {
scale += 0.2;
applyZoom();
}
function zoomOut() {
scale -= 0.2;
applyZoom();
}
function resetZoom() {
scale = 1;
applyZoom();
}
function applyZoom() {
const svg = document.querySelector('#mindmap svg');
if (svg) {
svg.style.transform = `scale(${scale})`;
svg.style.transformOrigin = 'center center';
}
}
function downloadImage() {
const svg = document.querySelector('#mindmap svg');
if (!svg) return;
const canvas = document.createElement('canvas');
const ctx = canvas.getContext('2d');
const svgData = new XMLSerializer().serializeToString(svg);
const img = new Image();
canvas.width = 2400;
canvas.height = 1600;
img.onload = function() {
ctx.fillStyle = 'white';
ctx.fillRect(0, 0, canvas.width, canvas.height);
ctx.drawImage(img, 0, 0, canvas.width, canvas.height);
const link = document.createElement('a');
link.download = '天天系统功能菜单脑图.png';
link.href = canvas.toDataURL('image/png');
link.click();
};
img.src = 'data:image/svg+xml;base64,' + btoa(unescape(encodeURIComponent(svgData)));
}
initMindmap();
</script>
</body>
</html>