- 修改 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
462 lines
16 KiB
HTML
462 lines
16 KiB
HTML
<!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>
|