<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
    <meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate">
    <meta http-equiv="Pragma" content="no-cache">
    <meta http-equiv="Expires" content="0">
    <title>H5页面设计器 · 算力管理系统</title>
    <script>window.__DEBUG_ERRORS = []; window.addEventListener('error', function(e) { window.__DEBUG_ERRORS.push({ msg: e.message, src: e.filename, line: e.lineno, col: e.colno, tag: e.target && e.target.tagName }); var el = document.getElementById('debug-bar'); if(el) el.innerHTML += '<div style=color:red;padding:2px;font-size:11px;>JS错误: '+e.message+' (行'+e.lineno+')</div>'; });</script>
    <link href="assets/lib/fontawesome/css/all.min.css" rel="stylesheet">
    <link rel="stylesheet" href="css/builder.css?v=3.2">
    <script src="assets/lib/qrcode/qrcode.min.js"></script>
</head>
<body>
<div class="builder-container">
    <div class="left-panels">
        <div class="components-panel active" id="componentsPanel"></div>
        <div class="pages-panel" id="pagesPanel">
            <div class="pages-panel-header">
                <span><i class="fas fa-layer-group"></i> 页面管理</span>
                <button class="btn-icon" id="addPageBtn"><i class="fas fa-plus"></i></button>
            </div>
            <div class="pages-list" id="pagesList"></div>
        </div>
        <div class="recycle-panel" id="recyclePanel" style="display:none;">
            <div class="pages-panel-header">
                <span><i class="fas fa-trash-restore"></i> 我的管理</span>
                <button class="btn-icon" id="clearRecycleBtn" title="清空"><i class="fas fa-trash"></i></button>
            </div>
            <div class="recycle-list" id="recycleList" style="padding:8px;">
                <div style="text-align:center;padding:20px;color:#999;font-size:12px;">
                    <i class="fas fa-inbox" style="font-size:28px;display:block;margin-bottom:8px;opacity:0.4;"></i>
                    暂无删除的组件<br><span style="font-size:10px;">删除的组件会暂存此处，可恢复</span>
                </div>
            </div>
        </div>
    </div>
    
    <div class="panel-tabs">
        <div class="panel-tab active" data-panel="components"><i class="fas fa-cube"></i> 组件</div>
        <div class="panel-tab" data-panel="pages"><i class="fas fa-files"></i> 多页面</div>
        <div class="panel-tab" data-panel="recycle"><i class="fas fa-archive"></i> 我的管理</div>
    </div>
    
    <div class="preview-panel">
        <div class="preview-toolbar">
            <button class="btn btn-default" id="resetBtn" title="恢复默认布局"><i class="fas fa-magic"></i> 默认布局</button>
            <button class="btn btn-default" id="loadBtn"><i class="fas fa-folder-open"></i> 加载</button>
            <button class="btn btn-primary" id="saveBtn"><i class="fas fa-save"></i> 保存</button>
            <button class="btn btn-default" id="previewQrBtn"><i class="fas fa-qrcode"></i> 预览</button>
        </div>
        <div class="phone-wrapper">
            <div class="phone-mock">
                <div class="phone-status-bar">
                    <span>9:41</span>
                    <span><i class="fas fa-signal"></i> <i class="fas fa-wifi"></i> <i class="fas fa-battery-full"></i></span>
                </div>
                <div class="phone-content" id="phoneContent">
                    <div class="empty-preview">
                        <i class="fas fa-arrow-left"></i> 点击左侧组件添加到页面
                    </div>
                </div>
                <div class="bottom-nav-fixed" id="bottomNavContainer"></div>
            </div>
        </div>
    </div>
    
    <div class="config-panel" id="configPanel">
        <div class="empty-preview">点击组件进行配置</div>
    </div>
</div>

<div class="modal" id="qrcodeModal">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                <h6><i class="fas fa-mobile-alt"></i> 手机扫码预览</h6>
                <button class="close" onclick="document.getElementById('qrcodeModal').classList.remove('show')">&times;</button>
            </div>
            <div class="modal-body">
                <div id="qrcodeContainer" style="display:flex;justify-content:center;align-items:center;padding:20px;">
                    <img id="qrcodeImg" style="width:200px;height:200px;border-radius:12px;box-shadow:0 4px 12px rgba(0,0,0,0.1);">
                </div>
                <div id="previewUrl" class="url-text" style="font-size:12px;color:#666;margin:10px 0;padding:10px;background:#f5f5f5;border-radius:8px;word-break:break-all;text-align:center;"></div>
                <p class="hint" style="font-size:13px;color:#999;margin-top:10px;text-align:center;">扫码即可在手机预览当前页面</p>
            </div>
        </div>
    </div>
</div>

<script src="js/storage.js?v=3310631"></script>
<script src="js/history.js?v=3310631"></script>
<script src="js/components.js?v=3310631"></script>
<script src="js/config.js?v=3310631"></script>
<script src="js/preview.js?v=3310631"></script>
<script src="js/builder.js?v=3310631"></script>

<script>
(function() {
    function tryInit() {
        if (document.getElementById('componentsPanel') && typeof window.initBuilder === 'function') {
            window.initBuilder();
            return;
        }
        setTimeout(tryInit, 50);
    }
    tryInit();
    window.addEventListener('load', function() { if (window.initBuilder) window.initBuilder(); });
})();
</script>
<div id="debug-err" style="position:fixed;bottom:0;left:0;right:0;background:#FFF3CD;color:#856404;font-size:11px;padding:4px 8px;z-index:99999;display:none;max-height:80px;overflow-y:auto;"></div>
<script>
window.addEventListener('error',function(e){
    var d=document.getElementById('debug-err');
    d.style.display='block';
    d.innerHTML+='<div>⚠ '+e.message+' ('+e.filename.replace(/.*\//,'')+':'+e.lineno+')</div>';
    return false;
});
</script>
</body>
</html>
