{"id":669,"date":"2025-12-23T17:28:06","date_gmt":"2025-12-23T09:28:06","guid":{"rendered":"http:\/\/101.42.106.48\/?page_id=669"},"modified":"2025-12-31T17:40:14","modified_gmt":"2025-12-31T09:40:14","slug":"home-new","status":"publish","type":"page","link":"https:\/\/www.bic.org.cn\/","title":{"rendered":"home-new"},"content":{"rendered":"\n\n\n\n<div class=\"n2_clear\"><ss3-force-full-width data-overflow-x=\"body\" data-horizontal-selector=\"body\"><div class=\"n2-section-smartslider fitvidsignore  n2_clear\" data-ssid=\"2\"><div id=\"n2-ss-2-align\" class=\"n2-ss-align\"><div class=\"n2-padding\"><div id=\"n2-ss-2\" data-creator=\"Smart Slider 3\" data-responsive=\"fullwidth\" class=\"n2-ss-slider n2-ow n2-has-hover n2notransition  \"><div class=\"n2-ss-slider-wrapper-inside\">\n        <div class=\"n2-ss-slider-1 n2_ss__touch_element n2-ow\">\n            <div class=\"n2-ss-slider-2 n2-ow\">\n                                                <div class=\"n2-ss-slider-3 n2-ow\">\n\n                    <div class=\"n2-ss-slide-backgrounds n2-ow-all\"><div class=\"n2-ss-slide-background\" data-public-id=\"1\" data-mode=\"fill\"><div class=\"n2-ss-slide-background-image\" data-blur=\"0\" data-opacity=\"100\" data-x=\"50\" data-y=\"50\" data-alt=\"\" data-title=\"\"><picture class=\"skip-lazy jetpack-lazy-image\" data-skip-lazy=\"1\"><img decoding=\"async\" src=\"\/\/www.bic.org.cn\/wp-content\/uploads\/2025\/12\/20250815172548815.jpg\" alt=\"\" title=\"\" loading=\"lazy\" class=\"skip-lazy jetpack-lazy-image\" data-skip-lazy=\"1\"><\/picture><\/div><div data-color=\"RGBA(255,255,255,0)\" style=\"background-color: RGBA(255,255,255,0);\" class=\"n2-ss-slide-background-color\"><\/div><\/div><div class=\"n2-ss-slide-background\" data-public-id=\"2\" data-mode=\"fill\" aria-hidden=\"true\"><div class=\"n2-ss-slide-background-image\" data-blur=\"0\" data-opacity=\"100\" data-x=\"50\" data-y=\"50\" data-alt=\"\" data-title=\"\"><picture class=\"skip-lazy jetpack-lazy-image\" data-skip-lazy=\"1\"><img decoding=\"async\" src=\"\/\/www.bic.org.cn\/wp-content\/uploads\/2025\/12\/image-2-scaled.png\" alt=\"\" title=\"\" loading=\"lazy\" class=\"skip-lazy jetpack-lazy-image\" data-skip-lazy=\"1\"><\/picture><\/div><div data-color=\"RGBA(255,255,255,0)\" style=\"background-color: RGBA(255,255,255,0);\" class=\"n2-ss-slide-background-color\"><\/div><\/div><\/div>                    <div class=\"n2-ss-slider-4 n2-ow\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 1200 1000\" data-related-device=\"desktopPortrait\" class=\"n2-ow n2-ss-preserve-size n2-ss-preserve-size--slider n2-ss-slide-limiter\"><\/svg><div data-first=\"1\" data-slide-duration=\"0\" data-id=\"3\" data-slide-public-id=\"1\" data-title=\"20250815172548815\" class=\"n2-ss-slide n2-ow  n2-ss-slide-3\"><div role=\"note\" class=\"n2-ss-slide--focus\" tabindex=\"-1\">20250815172548815<\/div><div class=\"n2-ss-layers-container n2-ss-slide-limiter n2-ow\"><div class=\"n2-ss-layer n2-ow n-uc-4LmdEUDIESCP\" data-sstype=\"slide\" data-pm=\"default\"><\/div><\/div><\/div><div data-slide-duration=\"0\" data-id=\"5\" data-slide-public-id=\"2\" aria-hidden=\"true\" data-title=\"image\" class=\"n2-ss-slide n2-ow  n2-ss-slide-5\"><div role=\"note\" class=\"n2-ss-slide--focus\" tabindex=\"-1\">image<\/div><div class=\"n2-ss-layers-container n2-ss-slide-limiter n2-ow\"><div class=\"n2-ss-layer n2-ow n-uc-b5n7eXEI9YES\" data-sstype=\"slide\" data-pm=\"default\"><\/div><\/div><\/div>                    <\/div>\n\n                                    <\/div>\n            <\/div>\n        <\/div>\n        <div class=\"n2-ss-slider-controls n2-ss-slider-controls-absolute-left-center\"><div style=\"--widget-offset:15px;\" class=\"n2-ss-widget nextend-arrow n2-ow-all nextend-arrow-previous  nextend-arrow-animated-fade\" data-hide-mobileportrait=\"1\" id=\"n2-ss-2-arrow-previous\" role=\"button\" aria-label=\"previous arrow\" tabindex=\"0\"><img loading=\"lazy\" decoding=\"async\" width=\"32\" height=\"32\" class=\"skip-lazy jetpack-lazy-image\" data-skip-lazy=\"1\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHZpZXdCb3g9IjAgMCAzMiAzMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxwYXRoIGQ9Ik0xMS40MzMgMTUuOTkyTDIyLjY5IDUuNzEyYy4zOTMtLjM5LjM5My0xLjAzIDAtMS40Mi0uMzkzLS4zOS0xLjAzLS4zOS0xLjQyMyAwbC0xMS45OCAxMC45NGMtLjIxLjIxLS4zLjQ5LS4yODUuNzYtLjAxNS4yOC4wNzUuNTYuMjg0Ljc3bDExLjk4IDEwLjk0Yy4zOTMuMzkgMS4wMy4zOSAxLjQyNCAwIC4zOTMtLjQuMzkzLTEuMDMgMC0xLjQybC0xMS4yNTctMTAuMjkiCiAgICAgICAgICBmaWxsPSIjZmZmZmZmIiBvcGFjaXR5PSIwLjgiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPgo8L3N2Zz4=\" alt=\"previous arrow\"><\/div><\/div><div class=\"n2-ss-slider-controls n2-ss-slider-controls-absolute-right-center\"><div style=\"--widget-offset:15px;\" class=\"n2-ss-widget nextend-arrow n2-ow-all nextend-arrow-next  nextend-arrow-animated-fade\" data-hide-mobileportrait=\"1\" id=\"n2-ss-2-arrow-next\" role=\"button\" aria-label=\"next arrow\" tabindex=\"0\"><img loading=\"lazy\" decoding=\"async\" width=\"32\" height=\"32\" class=\"skip-lazy jetpack-lazy-image\" data-skip-lazy=\"1\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHZpZXdCb3g9IjAgMCAzMiAzMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxwYXRoIGQ9Ik0xMC43MjIgNC4yOTNjLS4zOTQtLjM5LTEuMDMyLS4zOS0xLjQyNyAwLS4zOTMuMzktLjM5MyAxLjAzIDAgMS40MmwxMS4yODMgMTAuMjgtMTEuMjgzIDEwLjI5Yy0uMzkzLjM5LS4zOTMgMS4wMiAwIDEuNDIuMzk1LjM5IDEuMDMzLjM5IDEuNDI3IDBsMTIuMDA3LTEwLjk0Yy4yMS0uMjEuMy0uNDkuMjg0LS43Ny4wMTQtLjI3LS4wNzYtLjU1LS4yODYtLjc2TDEwLjcyIDQuMjkzeiIKICAgICAgICAgIGZpbGw9IiNmZmZmZmYiIG9wYWNpdHk9IjAuOCIgZmlsbC1ydWxlPSJldmVub2RkIi8+Cjwvc3ZnPg==\" alt=\"next arrow\"><\/div><\/div><\/div><\/div><ss3-loader><\/ss3-loader><\/div><\/div><div class=\"n2_clear\"><\/div><\/div><\/ss3-force-full-width><\/div>\n\n\n\n<!DOCTYPE html>\n<html lang=\"zh-CN\">\n\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <title>\u884c\u4e1a\u8d44\u8baf\u6eda\u52a8\u6a21\u5757<\/title>\n    <style>\n        \/* --- \u57fa\u7840\u6837\u5f0f --- *\/\n        body {\n            margin: 0;\n            background-color: #f4f8fb;\n            font-family: \"Microsoft YaHei\", sans-serif;\n        }\n\n        \/* --- \u5bb9\u5668\u7ec4\u4ef6 --- *\/\n        .ticker-container {\n            width: 80%;\n            margin: 30px auto;\n            background: #fff;\n            height: 120px;\n            \/* \u56fa\u5b9a\u9ad8\u5ea6 *\/\n            border-radius: 8px;\n            box-shadow: 0 4px 15px rgba(0, 0, 0, 0.05);\n            display: flex;\n            align-items: center;\n            overflow: hidden;\n            \/* \u5173\u952e\uff1a\u9690\u85cf\u6ea2\u51fa\u5185\u5bb9 *\/\n            position: relative;\n        }\n\n        \/* --- \u5de6\u4fa7\u84dd\u8272\u6807\u7b7e --- *\/\n        .ticker-label {\n            width: 100px;\n            height: 100%;\n            \/* \u5360\u6ee1\u9ad8\u5ea6 *\/\n            background-color: #2daae3;\n            \/* \u56fe\u4e2d\u7684\u4eae\u84dd\u8272 *\/\n            color: #fff;\n            display: flex;\n            flex-direction: column;\n            justify-content: center;\n            align-items: center;\n            font-size: 24px;\n            font-weight: bold;\n            line-height: 1.2;\n            padding: 0 10px;\n            position: relative;\n            flex-shrink: 0;\n            z-index: 2;\n        }\n\n        \/* \u6a21\u62df\u5e95\u90e8\u6ce2\u6d6a\/\u5706\u5f27\u6548\u679c *\/\n        .ticker-label::after {\n            content: '';\n            position: absolute;\n            bottom: -15px;\n            left: 0;\n            width: 100%;\n            height: 30px;\n            background-color: #fff;\n            \/* \u7528\u767d\u8272\u906e\u6321 *\/\n            border-radius: 50% 50% 0 0;\n            \/* \u62f1\u5f62 *\/\n            display: none;\n            \/* \u7b80\u5355\u7248\u5148\u4e0d\u663e\u793a\uff0c\u5982\u679c\u60f3\u8981\u5b8c\u5168\u590d\u523b\u56fe\u4e2d\u90a3\u79cd\u5411\u5185\u7684\u5f27\u5ea6\uff0c\u9700\u8981\u7528\u590d\u6742\u7684 radial-gradient \u6216 SVG *\/\n        }\n\n        \/* \u7b80\u5355\u6a21\u62df\u56fe\u4e2d\u7684\u6ce2\u6d6a\u5e95\u8fb9 (\u53ef\u9009) *\/\n        .ticker-label {\n            \/* \u4f7f\u7528 mask \u6216 clip-path \u53ef\u4ee5\u505a\u66f4\u590d\u6742\u7684\u5f62\u72b6\uff0c\u8fd9\u91cc\u7528\u7b80\u5355\u7684 border-radius \u6a21\u62df\u5de6\u8fb9\u7684\u5706\u89d2 *\/\n            border-top-left-radius: 8px;\n            border-bottom-left-radius: 8px;\n            \/* \u4fee\u6b63\uff1a\u56fe\u4e2d\u5176\u5b9e\u662f\u5de6\u4fa7\u6807\u7b7e\u60ac\u6d6e\u6216\u8005\u80cc\u666f\u56fe\uff0c\u8fd9\u91cc\u7b80\u5355\u5904\u7406\u4e3a\u5168\u9ad8\u8272\u5757 *\/\n        }\n\n        \/* \u4e3a\u4e86\u66f4\u50cf\u56fe\uff0c\u6211\u4eec\u5728\u6807\u7b7e\u5185\u90e8\u753b\u90a3\u4e2a\u5f27\u5f62\u7f3a\u53e3 *\/\n        .label-decoration {\n            position: absolute;\n            bottom: -20px;\n            left: 0;\n            width: 100%;\n            height: 40px;\n            background: #fff;\n            border-radius: 50%;\n            transform: scaleX(1.5);\n        }\n\n\n        \/* --- \u4e2d\u95f4\u53ef\u89c6\u7a97\u53e3 --- *\/\n        .ticker-viewport {\n            flex-grow: 1;\n            height: 100%;\n            position: relative;\n            overflow: hidden;\n            \/* \u88c1\u526a *\/\n            padding: 0 40px;\n            display: flex;\n            align-items: center;\n        }\n\n        \/* \u6eda\u52a8\u7684\u957f\u6761\u8f68\u9053 *\/\n        .ticker-track {\n            width: 100%;\n            position: absolute;\n            top: 0;\n            left: 40px;\n            \/* \u4e0e padding \u4fdd\u6301\u4e00\u81f4 *\/\n            transition: transform 0.6s cubic-bezier(0.25, 1, 0.5, 1);\n            \/* \u5e73\u6ed1\u6eda\u52a8\u52a8\u753b *\/\n        }\n\n        \/* \u5355\u4e2a\u65b0\u95fb\u6761\u76ee *\/\n        .ticker-item {\n            height: 120px;\n            \/* \u5fc5\u987b\u4e0e\u5bb9\u5668\u9ad8\u5ea6\u4e00\u81f4 *\/\n            display: flex;\n            flex-direction: column;\n            justify-content: center;\n            box-sizing: border-box;\n            padding-right: 60px;\n            \/* \u9632\u6b62\u76d6\u4f4f\u53f3\u8fb9\u6309\u94ae *\/\n        }\n\n        .item-title {\n            font-size: 20px;\n            color: #008cd6;\n            \/* \u6807\u9898\u84dd *\/\n            margin-bottom: 12px;\n            font-weight: 500;\n            text-decoration: none;\n            display: block;\n            white-space: nowrap;\n            overflow: hidden;\n            text-overflow: ellipsis;\n            text-align: center;\n        }\n\n        .item-title:hover {\n            text-decoration: underline;\n        }\n\n        .item-excerpt {\n            font-size: 14px;\n            color: #666;\n            line-height: 1.6;\n            display: -webkit-box;\n            -webkit-line-clamp: 2;\n            \/* \u9650\u5236\u663e\u793a2\u884c *\/\n            -webkit-box-orient: vertical;\n            overflow: hidden;\n            text-align: center;\n        }\n\n        .read-more {\n            color: #008cd6;\n            text-decoration: none;\n            font-weight: bold;\n            margin-left: 5px;\n        }\n\n        \/* --- \u53f3\u4fa7\u5bfc\u822a\u70b9 (\u83f1\u5f62) --- *\/\n        .ticker-controls {\n            width: 50px;\n            display: flex;\n            flex-direction: column;\n            gap: 12px;\n            margin-right: 20px;\n            z-index: 2;\n        }\n\n        .dot_container_wrapper {\n            width: 10px;\n            height: 10px;\n            background-color: #dbeeff !important;\n            \/* \u672a\u9009\u4e2d\u989c\u8272 *\/\n            transform: rotate(45deg);\n            \/* \u65cb\u8f6c\u53d8\u6210\u83f1\u5f62 *\/\n            cursor: pointer;\n            transition: all 0.3s;\n        }\n\n        .dot_container_wrapper.active {\n            background-color: #008cd6 !important;\n            \/* \u9009\u4e2d\u989c\u8272 *\/\n            transform: rotate(45deg) scale(1.2);\n        }\n    <\/style>\n<\/head>\n\n<body>\n\n    <div class=\"ticker-container\">\n        <div class=\"ticker-label\">\n            <span>\u884c\u4e1a<\/span>\n            <span>\u8d44\u8baf<\/span>\n            <div class=\"label-decoration\"><\/div>\n        <\/div>\n\n        <div class=\"ticker-viewport\">\n            <div class=\"ticker-track\" id=\"news-track\">\n                <p style=\"color:#999;\">\u52a0\u8f7d\u4e2d&#8230;<\/p>\n            <\/div>\n        <\/div>\n\n        <div class=\"ticker-controls\" id=\"news-dots\">\n        <\/div>\n    <\/div>\n\n    <script>\n        \/\/ --- 1. \u914d\u7f6e ---\n        const apiRoot_main = '\/wp-json\/wp\/v2';\n        const categoryId = 12; \/\/ \u3010\u91cd\u8981\u3011\u8bf7\u5c06 12 \u66ff\u6362\u4e3a\u4f60\u201c\u884c\u4e1a\u8d44\u8baf\u201d\u5206\u7c7b\u7684\u771f\u5b9e ID\n        \/\/ \u5982\u679c\u4e0d\u77e5\u9053ID\uff0c\u53ef\u4ee5\u4e0d\u52a0 &categories=${categoryId} \u53c2\u6570\uff0c\u5c31\u4f1a\u663e\u793a\u6240\u6709\u6700\u65b0\u6587\u7ae0\n\n        \/\/ --- 2. \u72b6\u6001\u7ba1\u7406 ---\n        let currentIndex = 0;\n        let totalItems = 0;\n        let autoPlayInterval;\n\n        \/\/ --- 3. \u83b7\u53d6\u6570\u636e ---\n        async function fetchNews() {\n            const track = document.getElementById('news-track');\n            const dotsContainer = document.getElementById('news-dots');\n\n            try {\n                \/\/ \u83b7\u53d6 5 \u7bc7\u6587\u7ae0\n                \/\/ \u5982\u679c\u4f60\u60f3\u6839\u636e\u5206\u7c7b\u7b5b\u9009\uff0c\u8bf7\u4f7f\u7528: `${apiRoot_main}\/posts?categories=${categoryId}&per_page=5`\n                const res = await fetch(`${apiRoot_main}\/posts?per_page=5&_embed`);\n                const posts = await res.json();\n\n                if (posts.length === 0) {\n                    track.innerHTML = '<p>\u6682\u65e0\u8d44\u8baf<\/p>';\n                    return;\n                }\n\n                totalItems = posts.length;\n                track.innerHTML = ''; \/\/ \u6e05\u7a7a\u52a0\u8f7d\u6587\u5b57\n                dotsContainer.innerHTML = ''; \/\/ \u6e05\u7a7a\u5706\u70b9\n\n                \/\/ --- 4. \u6e32\u67d3 DOM ---\n                posts.forEach((post, index) => {\n                    \/\/ A. \u5904\u7406\u6458\u8981 (\u53bb\u9664 HTML \u6807\u7b7e)\n                    const tempDiv = document.createElement(\"div\");\n                    tempDiv.innerHTML = post.excerpt.rendered;\n                    let plainExcerpt = tempDiv.textContent || tempDiv.innerText || \"\";\n                    plainExcerpt = plainExcerpt.substring(0, 300) + '...'; \/\/ \u622a\u53d6\u957f\u5ea6\n\n                    \/\/ B. \u751f\u6210\u6587\u7ae0 HTML\n                    const itemHtml = `\n                        <div class=\"ticker-item\">\n                            <a href=\"${post.link}\" class=\"item-title\" target=\"_blank\">${post.title.rendered}<\/a>\n                            <div class=\"item-excerpt\">\n                                ${plainExcerpt}\n                                <a href=\"${post.link}\" class=\"read-more\" target=\"_blank\">\u3010\u8be6\u60c5\u3011<\/a>\n                            <\/div>\n                        <\/div>\n                    `;\n                    track.insertAdjacentHTML('beforeend', itemHtml);\n\n                    \/\/ C. \u751f\u6210\u53f3\u4fa7\u83f1\u5f62\u70b9\n                    const dot = document.createElement('div');\n                    dot.className = `dot_container_wrapper ${index === 0 ? 'active' : ''}`; \/\/ \u7b2c\u4e00\u4e2a\u9ed8\u8ba4\u9ad8\u4eae\n                    dot.onclick = () => goToSlide(index); \/\/ \u70b9\u51fb\u5207\u6362\n                    dotsContainer.appendChild(dot);\n                });\n\n                \/\/ --- 5. \u542f\u52a8\u81ea\u52a8\u8f6e\u64ad ---\n                startAutoPlay();\n\n            } catch (err) {\n                console.error(err);\n                track.innerHTML = '\u52a0\u8f7d\u5931\u8d25';\n            }\n        }\n\n        \/\/ --- 6. \u8f6e\u64ad\u903b\u8f91 ---\n        function updateSlide() {\n            const track = document.getElementById('news-track');\n            const dots = document.querySelectorAll('.dot_container_wrapper');\n\n            \/\/ \u6838\u5fc3\u539f\u7406\uff1a\u5411\u4e0a\u79fb\u52a8 translateY (-0%, -100%, -200%...)\n            \/\/ \u56e0\u4e3a\u6bcf\u4e2a item \u9ad8\u5ea6\u662f\u5bb9\u5668\u7684 100% (120px)\n            track.style.transform = `translateY(-${currentIndex * 120}px)`;\n\n            \/\/ \u66f4\u65b0\u53f3\u4fa7\u70b9\u7684\u72b6\u6001\n            dots.forEach((dot, index) => {\n                if (index === currentIndex) {\n                    dot.classList.add('active');\n                } else {\n                    dot.classList.remove('active');\n                }\n            });\n        }\n\n        function nextSlide() {\n            currentIndex++;\n            if (currentIndex >= totalItems) {\n                currentIndex = 0; \/\/ \u56de\u5230\u7b2c\u4e00\u4e2a\n            }\n            updateSlide();\n        }\n\n        function goToSlide(index) {\n            currentIndex = index;\n            updateSlide();\n            resetTimer(); \/\/ \u624b\u52a8\u70b9\u51fb\u540e\u91cd\u7f6e\u8ba1\u65f6\u5668\n        }\n\n        function startAutoPlay() {\n            autoPlayInterval = setInterval(nextSlide, 4000); \/\/ 4\u79d2\u5207\u6362\u4e00\u6b21\n        }\n\n        function resetTimer() {\n            clearInterval(autoPlayInterval);\n            startAutoPlay();\n        }\n\n        \/\/ \u521d\u59cb\u5316\n        fetchNews();\n\n    <\/script>\n<\/body>\n\n<\/html>\n\n\n\n\n\n\n\n\n\n\n<div class=\"wp-block-uagb-container uagb-block-e76bf33d alignfull uagb-is-root-container\"><div class=\"uagb-container-inner-blocks-wrap\">\n<div class=\"wp-block-uagb-container uagb-block-9232fa38\">\n<style>\n    \/* ... \u6837\u5f0f\u4fdd\u6301\u4e0d\u53d8\uff0c\u76f4\u63a5\u7528\u539f\u6765\u7684 ... *\/\n    :root { --primary-blue: #0073e6; --text-dark: #333; --text-gray: #888; --border-color: #eee; }\n    .news-block-wrapper { font-family: \"Microsoft YaHei\", sans-serif; }\n    .news-block-wrapper * { box-sizing: border-box; margin: 0; padding: 0; }\n    .news-block-wrapper ul { list-style: none; }\n    .news-block-wrapper a { text-decoration: none; color: inherit; }\n    .news-block-container { display: flex; gap: 30px; max-width: 1200px; margin: 20px auto; background: #fff; padding: 20px; min-height: 400px; }\n    .left-slider { flex: 0 0 40%; position: relative; display: flex; flex-direction: column; }\n    .slider-wrapper { position: relative; width: 100%; height: 250px; overflow: hidden; border-radius: 4px; background: #f5f5f5; }\n    .slide-image { width: 100%; height: 100%; object-fit: cover; display: none; cursor: pointer; }\n    .slide-image.active { display: block; }\n    .slider-info { margin-top: 15px; text-align: center; min-height: 60px; }\n    .slider-title { font-size: 18px; font-weight: bold; color: var(--text-dark); margin-bottom: 8px; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; transition: color 0.3s; }\n    .slider-title:hover { color: var(--primary-blue); }\n    .slider-date { font-size: 14px; color: var(--text-gray); }\n    .slider-dots { position: absolute; bottom: 10px; right: 10px; display: flex; gap: 6px; z-index: 10; }\n    .dot { width: 8px; height: 8px; background: rgba(255,255,255,0.6); border-radius: 50%; cursor: pointer; }\n    .dot.active { background: #fff; transform: scale(1.2); }\n    .right-tabs { flex: 1; display: flex; flex-direction: column; }\n    .tab-header { display: flex; border-bottom: 1px solid var(--border-color); margin-bottom: 20px; position: relative; }\n    .news-tab-item { padding: 10px 0; margin-right: 25px; font-size: 16px; cursor: pointer; color: var(--text-dark); position: relative; }\n    .news-tab-item.active { color: var(--primary-blue); font-weight: bold; }\n    .news-tab-item.active::after { content: ''; position: absolute; bottom: -1px; left: 0; width: 100%; height: 3px; background: var(--primary-blue); }\n    .tab-more { margin-left: auto; font-size: 14px; color: var(--text-gray); align-self: center; cursor: pointer; }\n    .tab-more:hover { color: var(--primary-blue); }\n    .news-tab-content { display: none; height: 345px; overflow: hidden; }\n    .news-tab-content.active { display: block; }\n    .headline-item { display: flex; gap: 15px; padding-bottom: 20px; margin-bottom: 20px; border-bottom: 1px dashed var(--border-color); cursor: pointer; }\n    .headline-item:hover .headline-text h3 { color: var(--primary-blue); }\n    .date-box { width: 70px; height: 70px; background: var(--primary-blue); color: #fff; display: flex; flex-direction: column; align-items: center; justify-content: center; border-radius: 4px; flex-shrink: 0; }\n    .date-day { font-size: 24px; font-weight: bold; line-height: 1; margin-bottom: 4px; }\n    .date-ym { font-size: 12px; }\n    .headline-text h3 { font-size: 16px; color: var(--text-dark); margin-bottom: 8px; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 1; -webkit-box-orient: vertical; overflow: hidden; transition: color 0.3s; }\n    .headline-desc { font-size: 14px; color: var(--text-gray); line-height: 1.5; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }\n    .news-list li { display: flex; justify-content: space-between; align-items: center; margin-bottom: 12px; font-size: 15px; }\n    .news-link { color: var(--text-gray); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 80%; display: block; transition: color 0.3s; }\n    .news-link::before { content: \"\u2022\"; color: var(--primary-blue); margin-right: 8px; }\n    .news-link:hover { color: var(--primary-blue); }\n    .news-date { color: #999; font-size: 14px; }\n    .loading-txt { text-align: center; color: #999; padding-top: 50px; }\n    @media (max-width: 768px) { .news-block-container { flex-direction: column; } .left-slider { flex: auto; } .news-link { max-width: 65%; } }\n<\/style>\n\n<div class=\"news-block-wrapper\">\n    <div class=\"news-block-container\">\n        \n        <div class=\"left-slider\">\n            <div class=\"slider-wrapper\" id=\"sliderWrapper\">\n                <div class=\"loading-txt\">\u8f6e\u64ad\u56fe\u52a0\u8f7d\u4e2d&#8230;<\/div>\n            <\/div>\n            <div class=\"slider-info\">\n                <a href=\"#\" id=\"sliderLink\" target=\"_blank\">\n                    <div class=\"slider-title\" id=\"sliderTitle\"><\/div>\n                <\/a>\n                <div class=\"slider-date\" id=\"sliderDate\"><\/div>\n            <\/div>\n        <\/div>\n\n        <div class=\"right-tabs\">\n            <div class=\"tab-header\" id=\"newsTabHeader\">\n            <\/div>\n\n            <div id=\"newsContentContainer\">\n                <div class=\"loading-txt\">\u65b0\u95fb\u5217\u8868\u52a0\u8f7d\u4e2d&#8230;<\/div>\n            <\/div>\n        <\/div>\n\n    <\/div>\n<\/div>\n\n<script>\n    \/\/ --- \u914d\u7f6e\u533a\u57df ---\n    const sliderConfig = {\n        catName: \"\u56fe\u65871\",\n        count: 5\n    };\n\n    const tabsConfig = [\n        { \n            name: \"\u534f\u4f1a\u52a8\u6001\", \n            catName: \"\u6d4b\u8bd51\", \n            id: null, \n            link: \"https:\/\/www.bic.org.cn\/index.php\/%e5%8d%8f%e4%bc%9a%e5%8a%a8%e6%80%81\/\", \/\/ \u4f60\u7684\u52a8\u6001\u5730\u5740\n            data: [] \n        },\n        { \n            name: \"\u901a\u77e5\u516c\u544a\", \n            catName: \"\u6d4b\u8bd52\", \n            id: null, \n            link: \"\/category\/notice\/\", \n            data: [] \n        },\n        { \n            name: \"\u884c\u4e1a\u8981\u95fb\", \n            catName: \"\u6d4b\u8bd5\", \n            id: null, \n            link: \"\/category\/news\/\", \n            data: [] \n        }\n    ];\n\n    let currentSlide = 0;\n    let slideData = [];\n    let slideInterval = null;\n\n    document.addEventListener(\"DOMContentLoaded\", async function() {\n        await Promise.all([initSlider(), initTabs()]);\n    });\n\n    \/\/ --- \u8f6e\u64ad\u56fe\u903b\u8f91 (\u4fdd\u6301\u4e0d\u53d8) ---\n    async function initSlider() {\n        const wrapper = document.getElementById('sliderWrapper');\n        const sliderContainer = document.querySelector('.left-slider');\n\n        try {\n            const catId = await getCatIdByName(sliderConfig.catName);\n            if (!catId) {\n                wrapper.innerHTML = '<div class=\"loading-txt\">\u672a\u627e\u5230\u5206\u7c7b: ' + sliderConfig.catName + '<\/div>';\n                return;\n            }\n            const res = await fetch(`\/wp-json\/wp\/v2\/posts?categories=${catId}&per_page=${sliderConfig.count}&_embed`);\n            const posts = await res.json();\n            if (!posts.length) {\n                wrapper.innerHTML = '<div class=\"loading-txt\">\u6682\u65e0\u6570\u636e<\/div>';\n                return;\n            }\n            slideData = posts;\n            renderSliderDOM();\n            showSlide(0);\n            startAutoPlay();\n            sliderContainer.addEventListener('mouseenter', stopAutoPlay);\n            sliderContainer.addEventListener('mouseleave', startAutoPlay);\n        } catch (err) {\n            console.error(err);\n            wrapper.innerHTML = '<div class=\"loading-txt\">\u52a0\u8f7d\u9519\u8bef<\/div>';\n        }\n    }\n\n    function renderSliderDOM() {\n        const wrapper = document.getElementById('sliderWrapper');\n        let imgsHtml = '';\n        let dotsHtml = '';\n        slideData.forEach((post, idx) => {\n            let imgUrl = 'https:\/\/placehold.co\/600x400\/eee\/999?text=No+Image';\n            if (post._embedded && post._embedded['wp:featuredmedia']) {\n                imgUrl = post._embedded['wp:featuredmedia'][0].source_url;\n            }\n            imgsHtml += `<a href=\"${post.link}\" target=\"_blank\"><img decoding=\"async\" src=\"${imgUrl}\" class=\"slide-image\" data-index=\"${idx}\"><\/a>`;\n            dotsHtml += `<span class=\"dot\" data-index=\"${idx}\"><\/span>`;\n        });\n        wrapper.innerHTML = `${imgsHtml}<div class=\"slider-dots\">${dotsHtml}<\/div>`;\n        wrapper.querySelectorAll('.dot').forEach(dot => {\n            dot.addEventListener('click', function() {\n                stopAutoPlay(); \n                showSlide(parseInt(this.dataset.index));\n                startAutoPlay();\n            });\n        });\n    }\n\n    function showSlide(index) {\n        if (!slideData.length) return;\n        if (index >= slideData.length) index = 0;\n        if (index < 0) index = slideData.length - 1;\n        const images = document.querySelectorAll('.slide-image');\n        const dots = document.querySelectorAll('.dot');\n        const titleEl = document.getElementById('sliderTitle');\n        const dateEl = document.getElementById('sliderDate');\n        const linkEl = document.getElementById('sliderLink');\n        images.forEach(img => img.classList.remove('active'));\n        dots.forEach(dot => dot.classList.remove('active'));\n        if(images[index]) images[index].classList.add('active');\n        if(dots[index]) dots[index].classList.add('active');\n        const post = slideData[index];\n        const tempDiv = document.createElement(\"div\");\n        tempDiv.innerHTML = post.title.rendered;\n        if(titleEl) titleEl.innerText = tempDiv.innerText;\n        if(dateEl) dateEl.innerText = new Date(post.date).toISOString().split('T')[0];\n        if(linkEl) linkEl.href = post.link;\n        currentSlide = index;\n    }\n\n    function startAutoPlay() {\n        stopAutoPlay();\n        if (slideData.length > 1) {\n            slideInterval = setInterval(() => { showSlide(currentSlide + 1); }, 4000);\n        }\n    }\n    function stopAutoPlay() {\n        if (slideInterval) { clearInterval(slideInterval); slideInterval = null; }\n    }\n\n    \/\/ --- Tabs \u903b\u8f91 (\u5df2\u4fee\u590d\u94fe\u63a5\u8986\u76d6\u95ee\u9898) ---\n    async function initTabs() {\n        const headerContainer = document.getElementById('newsTabHeader');\n        const contentContainer = document.getElementById('newsContentContainer');\n\n        try {\n            for (let tab of tabsConfig) {\n                \/\/ 1. \u83b7\u53d6 ID\uff0c\u7528\u4e8e\u52a0\u8f7d\u5185\u5bb9\n                const catId = await getCatIdByName(tab.catName);\n                if (catId) {\n                    tab.id = catId;\n                    \/\/ \u3010\u4fee\u590d\u3011\uff1a\u5982\u679c\u7528\u6237\u6ca1\u6709\u624b\u52a8\u914d\u7f6e link\uff0c\u624d\u5c1d\u8bd5\u81ea\u52a8\u83b7\u53d6\n                    if (!tab.link || tab.link === \"\") {\n                        const catRes = await fetch(`\/wp-json\/wp\/v2\/categories\/${catId}`);\n                        const catData = await catRes.json();\n                        tab.link = catData.link;\n                    }\n                }\n            }\n\n            let headerHtml = '';\n            tabsConfig.forEach((tab, idx) => {\n                headerHtml += `<div class=\"news-tab-item ${idx===0?'active':''}\" data-index=\"${idx}\">${tab.name}<\/div>`;\n            });\n            headerHtml += `<a href=\"#\" class=\"tab-more\" id=\"dynamicTabMore\">\u66f4\u591a +<\/a>`;\n            headerContainer.innerHTML = headerHtml;\n\n            let contentHtml = '';\n            tabsConfig.forEach((tab, idx) => {\n                contentHtml += `<div class=\"news-tab-content ${idx===0?'active':''}\" id=\"tab-content-${idx}\"><div class=\"loading-txt\">\u52a0\u8f7d\u4e2d...<\/div><\/div>`;\n            });\n            contentContainer.innerHTML = contentHtml;\n\n            const tabItems = document.querySelectorAll('.news-tab-item');\n            const moreLink = document.getElementById('dynamicTabMore');\n\n            if(tabsConfig[0].link) moreLink.href = tabsConfig[0].link;\n\n            tabItems.forEach(item => {\n                item.addEventListener('click', function() {\n                    const idx = parseInt(this.dataset.index);\n                    tabItems.forEach(t => t.classList.remove('active'));\n                    this.classList.add('active');\n                    document.querySelectorAll('.news-tab-content').forEach(c => c.classList.remove('active'));\n                    document.getElementById(`tab-content-${idx}`).classList.add('active');\n\n                    \/\/ \u5207\u6362\u65f6\u66f4\u65b0\u201c\u66f4\u591a\u201d\u94fe\u63a5\n                    \/\/ if(tabsConfig[idx].link) {\n                    \/\/     console.log('\u5207\u6362\u65f6\u66f4\u65b0\u201c\u66f4\u591a\u201d\u94fe\u63a5:', tabsConfig[idx].link);\n                        \n                    \/\/     moreLink.href = tabsConfig[idx].link;\n                    \/\/     moreLink.style.display = 'block';\n                    \/\/ } else {\n                    \/\/     moreLink.style.display = 'none';\n                    \/\/ }\n\n                    if(tabsConfig[idx].data.length === 0) {\n                        loadTabPosts(idx);\n                    }\n                });\n            });\n\n            loadTabPosts(0);\n\n        } catch (err) {\n            console.error(err);\n        }\n    }\n\n    async function loadTabPosts(index) {\n        const container = document.getElementById(`tab-content-${index}`);\n        const tab = tabsConfig[index];\n        if (!tab.id) {\n            container.innerHTML = '<div class=\"loading-txt\">\u5206\u7c7b\u672a\u627e\u5230: '+ tab.catName +'<\/div>';\n            return;\n        }\n        try {\n            const res = await fetch(`\/wp-json\/wp\/v2\/posts?categories=${tab.id}&per_page=6`);\n            const posts = await res.json();\n            tab.data = posts;\n            if(posts.length === 0) {\n                container.innerHTML = '<div class=\"loading-txt\">\u6682\u65e0\u6570\u636e<\/div>';\n                return;\n            }\n            renderTabContent(container, posts);\n        } catch (err) {\n            container.innerHTML = '<div class=\"loading-txt\">\u52a0\u8f7d\u5f02\u5e38<\/div>';\n        }\n    }\n\n    function renderTabContent(container, posts) {\n        const [first, ...rest] = posts;\n        const dateObj = new Date(first.date);\n        const day = dateObj.getDate().toString().padStart(2, '0');\n        const ym = `${dateObj.getFullYear()}-${(dateObj.getMonth()+1).toString().padStart(2, '0')}`;\n        const tempDiv = document.createElement(\"div\");\n        tempDiv.innerHTML = first.excerpt.rendered;\n        const desc = tempDiv.innerText.substring(0, 60) + '...';\n        tempDiv.innerHTML = first.title.rendered;\n        const title = tempDiv.innerText;\n\n        const headlineHtml = `\n            <a href=\"${first.link}\" class=\"headline-item\" target=\"_blank\">\n                <div class=\"date-box\"><span class=\"date-day\">${day}<\/span><span class=\"date-ym\">${ym}<\/span><\/div>\n                <div class=\"headline-text\"><h3>${title}<\/h3><div class=\"headline-desc\">${desc}<\/div><\/div>\n            <\/a>`;\n        \n        const listHtml = rest.map(p => {\n            const d = new Date(p.date).toISOString().split('T')[0];\n            const tDiv = document.createElement(\"div\");\n            tDiv.innerHTML = p.title.rendered;\n            return `<li><a href=\"${p.link}\" class=\"news-link\" title=\"${tDiv.innerText}\" target=\"_blank\">${tDiv.innerText}<\/a><span class=\"news-date\">${d}<\/span><\/li>`;\n        }).join('');\n\n        container.innerHTML = headlineHtml + `<ul class=\"news-list\">${listHtml}<\/ul>`;\n    }\n\n    async function getCatIdByName(name) {\n        try {\n            const res = await fetch(`\/wp-json\/wp\/v2\/categories?search=${encodeURIComponent(name)}`);\n            const cats = await res.json();\n            const matched = cats.find(c => c.name === name);\n            return matched ? matched.id : null;\n        } catch (e) { return null; }\n    }\n<\/script>\n<\/div>\n\n\n\n<div class=\"wp-block-uagb-container uagb-block-67059577\">\n<style>\n    \/* \u5bb9\u5668\u6837\u5f0f *\/\n    .industry-service-widget {\n        background: #fff;\n        padding: 20px;\n        border-radius: 4px;\n        box-shadow: 0 2px 10px rgba(0,0,0,0.05);\n        font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif;\n        \n        \/* --- \u5173\u952e\u4fee\u6539 1: \u56fa\u5b9a\u5bbd\u5ea6\u548c\u9ad8\u5ea6 --- *\/\n        width: 450px;      \/* \u5bbd\u5ea6 *\/\n        height: 450px;     \/* \u9ad8\u5ea6\uff1a\u8bf7\u6839\u636e\u5de6\u4fa7\u65b0\u95fb\u5757\u7684\u5b9e\u9645\u9ad8\u5ea6\u5fae\u8c03\u6b64\u6570\u503c (\u4f8b\u5982 460px) *\/\n        \n        \/* --- \u5173\u952e\u4fee\u6539 2:\u4ee5\u6b64\u5f00\u542f Flex \u5e03\u5c40\uff0c\u4e3a\u4e86\u8ba9\u5185\u90e8\u5143\u7d20\u6491\u6ee1\u9ad8\u5ea6 --- *\/\n        display: flex;\n        flex-direction: column;\n        box-sizing: border-box; \/* \u786e\u4fdd padding \u4e0d\u4f1a\u6491\u5927\u76d2\u5b50 *\/\n    }\n\n    \/* \u5934\u90e8\u533a\u57df *\/\n    .widget-header {\n        display: flex;\n        justify-content: space-between;\n        align-items: center;\n        \/* margin-bottom \u8fd9\u91cc\u7684\u95f4\u8ddd\u53ef\u4ee5\u51cf\u5c0f\uff0c\u4ea4\u7ed9\u4e0b\u9762\u7684 list \u81ea\u52a8\u5206\u914d *\/\n        margin-bottom: 10px; \n        border-bottom: 1px solid #eee;\n        padding-bottom: 10px;\n        position: relative;\n        flex-shrink: 0; \/* \u9632\u6b62\u5934\u90e8\u88ab\u538b\u7f29 *\/\n    }\n\n    .widget-title {\n        font-size: 18px;\n        color: #007bff;\n        font-weight: 500;\n        margin: 0;\n        position: relative;\n        padding-bottom: 10px;\n        margin-bottom: -11px;\n        border-bottom: 2px solid #007bff;\n    }\n\n    .widget-more {\n        font-size: 12px;\n        color: #666;\n        text-decoration: none;\n        margin-bottom: 5px;\n    }\n    .widget-more:hover {\n        color: #007bff;\n    }\n\n    \/* \u5217\u8868\u533a\u57df *\/\n    .service-list {\n        list-style: none;\n        padding: 0;\n        margin: 0;\n        \n        \/* --- \u5173\u952e\u4fee\u6539 3: \u8ba9\u5217\u8868\u5360\u6ee1\u5269\u4f59\u7a7a\u95f4\u5e76\u5747\u5300\u5206\u5e03 --- *\/\n        flex: 1;  \/* \u5360\u636e header \u4e4b\u5916\u7684\u6240\u6709\u7a7a\u95f4 *\/\n        display: flex;\n        flex-direction: column;\n        justify-content: space-between; \/* \u8ba9\u91cc\u9762\u76844\u4e2a li \u5747\u5300\u5206\u5e03\uff0c\u4e0a\u4e0b\u5bf9\u9f50 *\/\n        padding-top: 10px; \/* \u7a0d\u5fae\u7ed9\u70b9\u9876\u90e8\u547c\u5438\u7a7a\u95f4 *\/\n    }\n\n    .service-item {\n        \/* \u79fb\u9664 margin-bottom\uff0c\u56e0\u4e3a\u6211\u4eec\u7528 space-between \u63a7\u5236\u95f4\u8ddd\u4e86 *\/\n        margin-bottom: 0; \n    }\n\n    .service-link {\n        display: flex;\n        align-items: center;\n        background-color: #f5f8fa;\n        padding: 15px 20px;\n        border-radius: 6px;\n        text-decoration: none;\n        color: #333;\n        transition: all 0.3s ease;\n        \/* \u589e\u52a0\u9ad8\u5ea6\u8ba9\u6309\u94ae\u770b\u8d77\u6765\u66f4\u9971\u6ee1\uff0c\u9002\u5e94\u5927\u9ad8\u5ea6 *\/\n        height: 100%; \n    }\n\n    \/* Hover \u6548\u679c *\/\n    .service-link:hover {\n        background-color: #eef2f7;\n        transform: translateY(-2px);\n        box-shadow: 0 4px 6px rgba(0,0,0,0.05);\n    }\n\n    \/* \u56fe\u6807\u6837\u5f0f *\/\n    .service-icon {\n        width: 40px;\n        height: 40px;\n        margin-right: 15px;\n        flex-shrink: 0;\n        fill: none; \n        stroke: #0088cc;\n        stroke-width: 1.5;\n    }\n\n    .service-text {\n        font-size: 15px;\n        font-weight: 400;\n        color: #333;\n    }\n<\/style>\n\n<div class=\"industry-service-widget\">\n    <div class=\"widget-header\">\n        <h3 class=\"widget-title\">\u884c\u4e1a\u670d\u52a1<\/h3>\n        <a href=\"\/index.php\/\u8bc4\u4ef7\u6d3b\u52a8\/\" class=\"widget-more\">\u66f4\u591a +<\/a>\n    <\/div>\n\n    <ul class=\"service-list\">\n        <li class=\"service-item\">\n            <a href=\"#\" class=\"service-link\">\n                <svg class=\"service-icon\" viewBox=\"0 0 24 24\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                    <rect x=\"2\" y=\"3\" width=\"20\" height=\"14\" rx=\"2\" ry=\"2\"><\/rect>\n                    <line x1=\"8\" y1=\"21\" x2=\"16\" y2=\"21\"><\/line>\n                    <line x1=\"12\" y1=\"17\" x2=\"12\" y2=\"21\"><\/line>\n                    <path d=\"M10 9h4 m-2 -2v4\"><\/path> <\/svg>\n                <span class=\"service-text\">\u5de5\u5382\u7b49\u7ea7\u8bc4\u4ef7<\/span>\n            <\/a>\n        <\/li>\n\n        <li class=\"service-item\">\n            <a href=\"#\" class=\"service-link\">\n                <svg class=\"service-icon\" viewBox=\"0 0 24 24\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                    <circle cx=\"5\" cy=\"18\" r=\"3\"><\/circle>\n                    <circle cx=\"19\" cy=\"18\" r=\"3\"><\/circle>\n                    <path d=\"M8 18h8\"><\/path>\n                    <path d=\"M5 15v-4l4-4h6l4 4v4\"><\/path>\n                <\/svg>\n                <span class=\"service-text\">\u667a\u80fd\u5efa\u9020\u793a\u8303\u9879\u76ee\u8bc4\u4ef7<\/span>\n            <\/a>\n        <\/li>\n\n        <li class=\"service-item\">\n            <a href=\"#\" class=\"service-link\">\n                <svg class=\"service-icon\" viewBox=\"0 0 24 24\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                   <path d=\"M19 11v-4a2 2 0 0 0 -2 -2h-4l-4 -4\"><\/path>\n                   <circle cx=\"5\" cy=\"19\" r=\"2\"><\/circle>\n                   <path d=\"M6.5 17.5l3.5 -3.5l2 2l3 -3\"><\/path>\n                <\/svg>\n                <span class=\"service-text\">\u79d1\u5b66\u6280\u672f\u4e0e\u65b0\u6280\u672f\u5e94\u7528<\/span>\n            <\/a>\n        <\/li>\n\n        <li class=\"service-item\">\n            <a href=\"#\" class=\"service-link\">\n                <svg class=\"service-icon\" viewBox=\"0 0 24 24\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                    <path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\"><\/path>\n                    <polyline points=\"14 2 14 8 20 8\"><\/polyline>\n                    <line x1=\"16\" y1=\"13\" x2=\"8\" y2=\"13\"><\/line>\n                    <line x1=\"16\" y1=\"17\" x2=\"8\" y2=\"17\"><\/line>\n                    <polyline points=\"10 9 9 9 8 9\"><\/polyline>\n                <\/svg>\n                <span class=\"service-text\">\u884c\u4e1a\u7edf\u8ba1<\/span>\n            <\/a>\n        <\/li>\n    <\/ul>\n<\/div>\n<\/div>\n<\/div><\/div>\n\n\n\n<div class=\"wp-block-uagb-container uagb-block-2faa174e alignfull uagb-is-root-container\"><div class=\"uagb-container-inner-blocks-wrap\">\n<div class=\"wp-block-uagb-container uagb-block-be817808\">\n<style>\n    \/* --- \u5bb9\u5668\u6837\u5f0f --- *\/\n    .dj-card-box {\n        width: 480px; \n        height: 450px; \n        background: #fff;\n        padding: 20px;\n        box-shadow: 0 2px 12px rgba(0,0,0,0.1);\n        font-family: \"PingFang SC\", \"Microsoft YaHei\", sans-serif;\n        box-sizing: border-box; \n    }\n\n    \/* --- \u9876\u90e8 Header --- *\/\n    .dj-header { \n        display: flex; \n        justify-content: space-between; \n        align-items: center; \n        margin-bottom: 15px; \n        height: 25px;\n    }\n    .dj-header h3 { margin: 0; font-size: 18px; color: #333; }\n    .dj-more { font-size: 12px; color: #999; text-decoration: none; }\n    .dj-more:hover { color: #409eff; }\n\n    \/* --- Tabs \u9009\u9879\u5361 --- *\/\n    .dj-tabs { \n        display: flex; \n        border-bottom: 1px solid #eee; \n        margin-bottom: 15px; \n        height: 30px;\n    }\n    .dj-tab-item {\n        padding-bottom: 8px; \n        margin-right: 20px; \n        cursor: pointer; \n        font-size: 16px; \n        color: #666; \n        position: relative;\n    }\n    .dj-tab-item.active { \n        color: #409eff; \n        font-weight: bold; \n    }\n    .dj-tab-item.active::after {\n        content: ''; \n        position: absolute; \n        bottom: -1px; \n        left: 0; \n        width: 100%; \n        height: 2px; \n        background: #409eff;\n    }\n\n    \/* --- \u5185\u5bb9\u533a\u57df --- *\/\n    .dj-content-panel {\n        display: none; \n        height: 325px; \n        overflow: hidden; \n        position: relative;\n    }\n    .dj-content-panel.active {\n        display: block; \n    }\n    \n    \/* --- \u9996\u6761\u56fe\u6587\u5185\u5bb9 --- *\/\n    .dj-top-news { \n        display: flex; \n        margin-bottom: 15px; \n        padding-bottom: 15px; \n        border-bottom: 1px dashed #eee; \n        height: 96px; \n        box-sizing: border-box;\n        text-decoration: none; \n    }\n    .dj-news-img { \n        width: 120px; \n        height: 80px; \n        object-fit: cover; \n        border-radius: 4px; \n        margin-right: 12px; \n        background: #f0f0f0; \n        flex-shrink: 0;\n    }\n    .dj-news-info { flex: 1; overflow: hidden; }\n    .dj-news-date-row { \n        display: flex; \n        justify-content: space-between; \n        font-size: 12px; \n        color: #999; \n        margin-bottom: 6px; \n    }\n    .dj-news-title { \n        font-size: 14px; \n        color: #333; \n        font-weight: bold; \n        margin: 0 0 6px 0; \n        white-space: nowrap; \n        overflow: hidden; \n        text-overflow: ellipsis; \n    }\n    .dj-top-news:hover .dj-news-title { color: #409eff; }\n\n    .dj-news-desc { \n        font-size: 12px; \n        color: #666; \n        line-height: 1.5; \n        display: -webkit-box; \n        -webkit-line-clamp: 2; \n        -webkit-box-orient: vertical; \n        overflow: hidden; \n    }\n\n    \/* --- \u5e95\u90e8\u5217\u8868 --- *\/\n    .dj-news-list { list-style: none; padding: 0; margin: 0; }\n    .dj-list-item { \n        display: flex; \n        align-items: center; \n        justify-content: space-between; \n        font-size: 13px; \n        line-height: 32px; \n        color: #666; \n        text-decoration: none;\n    }\n    .dj-list-title { \n        flex: 1; \n        white-space: nowrap; \n        overflow: hidden; \n        text-overflow: ellipsis; \n        margin-right: 10px; \n        cursor: pointer; \n    }\n    .dj-list-title::before { \n        content: '\u2022'; \n        color: #409eff; \n        margin-right: 8px; \n        font-size: 16px; \n    }\n    .dj-list-title:hover { color: #409eff; }\n    .dj-list-date { color: #999; font-size: 12px; }\n\n    .dj-loading { text-align: center; color: #999; padding-top: 50px; font-size: 13px; }\n<\/style>\n\n<div class=\"dj-card-box\">\n    <div class=\"dj-header\">\n        <h3>\u515a\u5efa\u5de5\u4f5c<\/h3>\n        <a href=\"#\" class=\"dj-more\" id=\"dj-more-link\">\u66f4\u591a +<\/a>\n    <\/div>\n    \n    <div class=\"dj-tabs\" id=\"dj-tabs-header\"><\/div>\n    <div id=\"dj-panels-container\"><\/div>\n<\/div>\n\n<script>\n    \/\/ --- 1. \u914d\u7f6e\u533a\u57df ---\n    const djTabsConfig = [\n        { \n            name: \"\u652f\u90e8\u6d3b\u52a8\", \n            catName: \"\u56fe\u65871\", \n            type: \"mixed\", \n            id: null, \n            \/\/ \u3010\u5df2\u4fee\u6539\u3011\u586b\u5165\u4e86\u4f60\u63d0\u4f9b\u7684\u652f\u90e8\u6d3b\u52a8\u5730\u5740\n            link: \"https:\/\/www.bic.org.cn\/index.php\/%e6%94%af%e9%83%a8%e6%b4%bb%e5%8a%a8\/\", \n            data: [] \n        },\n        { \n            name: \"\u6587\u4ef6\u901a\u77e5\", \n            catName: \"\u6d4b\u8bd51\", \n            type: \"list\",  \n            id: null, \n            \/\/ \u5982\u679c\u201c\u6587\u4ef6\u901a\u77e5\u201d\u4e5f\u6709\u5177\u4f53\u5730\u5740\uff0c\u8bf7\u66ff\u6362\u4e0b\u9762\u7684 \/category\/files\/\n            link: \"\/category\/files\/\",            \n            data: [] \n        }\n    ];\n\n    document.addEventListener(\"DOMContentLoaded\", function() {\n        initDJModule();\n    });\n\n    async function initDJModule() {\n        const tabsContainer = document.getElementById('dj-tabs-header');\n        const panelsContainer = document.getElementById('dj-panels-container');\n        const moreLink = document.getElementById('dj-more-link');\n\n        let tabsHtml = '';\n        let panelsHtml = '';\n\n        djTabsConfig.forEach((tab, index) => {\n            tabsHtml += `<div class=\"dj-tab-item ${index === 0 ? 'active' : ''}\" data-index=\"${index}\">${tab.name}<\/div>`;\n            panelsHtml += `<div class=\"dj-content-panel ${index === 0 ? 'active' : ''}\" id=\"dj-panel-${index}\">\n                               <div class=\"dj-loading\">\u6b63\u5728\u52a0\u8f7d...<\/div>\n                           <\/div>`;\n        });\n\n        tabsContainer.innerHTML = tabsHtml;\n        panelsContainer.innerHTML = panelsHtml;\n        \n        \/\/ \u521d\u59cb\u5316\u94fe\u63a5\n        if(djTabsConfig[0].link) {\n            moreLink.href = djTabsConfig[0].link;\n        }\n\n        const tabItems = document.querySelectorAll('.dj-tab-item');\n\n        tabItems.forEach(item => {\n            item.addEventListener('click', function() {\n                const idx = parseInt(this.dataset.index);\n\n                tabItems.forEach(t => t.classList.remove('active'));\n                this.classList.add('active');\n                document.querySelectorAll('.dj-content-panel').forEach(p => p.classList.remove('active'));\n                document.getElementById(`dj-panel-${idx}`).classList.add('active');\n\n                \/\/ \u5207\u6362\u94fe\u63a5\n                if (djTabsConfig[idx].link) {\n                    moreLink.href = djTabsConfig[idx].link;\n                } else {\n                    moreLink.href = \"#\";\n                }\n\n                if (djTabsConfig[idx].data.length === 0) {\n                    loadDJData(idx);\n                }\n            });\n        });\n\n        loadDJData(0);\n    }\n\n    async function loadDJData(index) {\n        const panel = document.getElementById(`dj-panel-${index}`);\n        const config = djTabsConfig[index];\n\n        try {\n            if (!config.id) {\n                const catRes = await fetch(`\/wp-json\/wp\/v2\/categories?search=${encodeURIComponent(config.catName)}`);\n                const cats = await catRes.json();\n                const matched = cats.find(c => c.name === config.catName);\n                \n                if (matched) {\n                    config.id = matched.id;\n                    \/\/ \u6ce8\u610f\uff1a\u8fd9\u91cc\u53bb\u6389\u4e86\u81ea\u52a8\u8986\u76d6 link \u7684\u903b\u8f91\uff0c\u786e\u4fdd\u4f7f\u7528\u4f60\u624b\u52a8\u586b\u5199\u7684\u5730\u5740\n                } else {\n                    panel.innerHTML = `<div class=\"dj-loading\">\u672a\u627e\u5230\u5206\u7c7b: ${config.catName}<\/div>`;\n                    return;\n                }\n            }\n\n            const count = config.type === 'list' ? 10 : 7;\n            const postsRes = await fetch(`\/wp-json\/wp\/v2\/posts?categories=${config.id}&per_page=${count}&_embed`);\n            const posts = await postsRes.json();\n            \n            config.data = posts;\n\n            if (posts.length === 0) {\n                panel.innerHTML = '<div class=\"dj-loading\">\u6682\u65e0\u6570\u636e<\/div>';\n                return;\n            }\n\n            renderDJPanel(panel, posts, config.type);\n\n        } catch (err) {\n            console.error(err);\n            panel.innerHTML = '<div class=\"dj-loading\">\u52a0\u8f7d\u5931\u8d25<\/div>';\n        }\n    }\n\n    function formatDate(dateString) {\n        const d = new Date(dateString);\n        const year = d.getFullYear();\n        const month = (d.getMonth() + 1).toString().padStart(2, '0');\n        const day = d.getDate().toString().padStart(2, '0');\n        return `${year}-${month}-${day}`;\n    }\n\n    function renderDJPanel(container, posts, type) {\n        let html = '';\n        let listPosts = posts;\n\n        if (type === 'mixed') {\n            const [firstPost, ...rest] = posts;\n            listPosts = rest; \n\n            let imgUrl = 'https:\/\/via.placeholder.com\/120x80\/e6e6e6\/999?text=No+Img';\n            if (firstPost._embedded && firstPost._embedded['wp:featuredmedia']) {\n                imgUrl = firstPost._embedded['wp:featuredmedia'][0].source_url;\n            }\n\n            const tempDiv = document.createElement(\"div\");\n            tempDiv.innerHTML = firstPost.excerpt.rendered;\n            const excerpt = tempDiv.innerText.substring(0, 50) + '...';\n            \n            tempDiv.innerHTML = firstPost.title.rendered;\n            const title = tempDiv.innerText;\n            const dateStr = formatDate(firstPost.date);\n\n            html += `\n                <a href=\"${firstPost.link}\" class=\"dj-top-news\" target=\"_blank\">\n                    <img decoding=\"async\" src=\"${imgUrl}\" class=\"dj-news-img\" alt=\"news\">\n                    <div class=\"dj-news-info\">\n                        <div class=\"dj-news-date-row\"><span><\/span><span>${dateStr}<\/span><\/div>\n                        <h4 class=\"dj-news-title\" title=\"${title}\">${title}<\/h4>\n                        <div class=\"dj-news-desc\">${excerpt}<\/div>\n                    <\/div>\n                <\/a>\n            `;\n        }\n\n        html += '<ul class=\"dj-news-list\">';\n        listPosts.forEach(post => {\n            const dateStr = formatDate(post.date);\n            const tDiv = document.createElement(\"div\");\n            tDiv.innerHTML = post.title.rendered;\n            const itemTitle = tDiv.innerText;\n\n            html += `\n                <a href=\"${post.link}\" class=\"dj-list-item\" target=\"_blank\">\n                    <span class=\"dj-list-title\" title=\"${itemTitle}\">${itemTitle}<\/span>\n                    <span class=\"dj-list-date\">${dateStr}<\/span>\n                <\/a>\n            `;\n        });\n        html += '<\/ul>';\n\n        container.innerHTML = html;\n    }\n<\/script>\n<\/div>\n\n\n\n<style>\n\n    \/* --- \u4fdd\u6301\u539f\u6709CSS\u4e0d\u53d8 --- *\/\n\n    .intro-card-box {\n\n        width: 380px; \n\n        height: 450px;\n\n        background: #fff;\n\n        padding: 20px;\n\n        box-shadow: 0 2px 12px rgba(0,0,0,0.1);\n\n        font-family: \"PingFang SC\", \"Microsoft YaHei\", sans-serif;\n\n        box-sizing: border-box; \n\n    }\n\n    .intro-header { \n\n        display: flex; \n\n        justify-content: space-between; \n\n        align-items: center; \n\n        margin-bottom: 15px; \n\n        height: 25px; \n\n        flex-shrink: 0;\n\n    }\n\n    .intro-header h3 { margin: 0; font-size: 18px; color: #333; }\n\n    .intro-more { font-size: 12px; color: #999; text-decoration: none; }\n\n    .intro-more:hover { color: #409eff; }\n\n\n\n    .intro-tabs { \n\n        display: flex; \n\n        border-bottom: 1px solid #eee; \n\n        margin-bottom: 15px; \n\n        overflow-x: auto; \n\n        height: 30px; \n\n        flex-shrink: 0;\n\n    }\n\n    .intro-tabs::-webkit-scrollbar { display: none; }\n\n    \n\n    .intro-tab-item {\n\n        padding-bottom: 8px; \n\n        margin-right: 15px; \n\n        cursor: pointer; \n\n        font-size: 16px; \n\n        color: #666; \n\n        white-space: nowrap; \n\n        position: relative;\n\n    }\n\n    .intro-tab-item.active { \n\n        color: #409eff; \n\n        font-weight: bold; \n\n    }\n\n    .intro-tab-item.active::after {\n\n        content: ''; \n\n        position: absolute; \n\n        bottom: -1px; \n\n        left: 0; \n\n        width: 100%; \n\n        height: 2px; \n\n        background: #409eff;\n\n    }\n\n\n\n    .intro-content-panel {\n\n        display: none;\n\n        height: 325px; \n\n        overflow: hidden; \n\n    }\n\n    .intro-content-panel.active {\n\n        display: block;\n\n        animation: fadeIn 0.3s ease-in-out;\n\n    }\n\n\n\n    .intro-banner-img { \n\n        width: 100%; \n\n        height: 140px; \n\n        object-fit: cover; \n\n        border-radius: 4px; \n\n        margin-bottom: 15px; \n\n        background-color: #f4f4f5; \n\n        display: block;\n\n    }\n\n    .intro-title { \n\n        font-size: 15px; \n\n        font-weight: bold; \n\n        color: #333; \n\n        margin-bottom: 10px; \n\n        line-height: 1.4;\n\n    }\n\n    .intro-text { \n\n        font-size: 13px; \n\n        color: #666; \n\n        line-height: 1.6; \n\n        text-align: justify; \n\n    }\n\n    .intro-detail-link { \n\n        color: #409eff; \n\n        text-decoration: none; \n\n        margin-left: 5px; \n\n        cursor: pointer; \n\n    }\n\n    .intro-loading { text-align: center; color: #999; padding-top: 50px; font-size: 13px; }\n\n\n\n    @keyframes fadeIn {\n\n        from { opacity: 0; }\n\n        to { opacity: 1; }\n\n    }\n\n<\/style>\n\n\n\n<div class=\"intro-card-box\">\n\n    <div class=\"intro-header\">\n\n        <h3 id=\"intro-main-title\">\u534f\u4f1a\u6982\u51b5<\/h3>\n\n        <a href=\"#\" class=\"intro-more\" id=\"intro-more-link\">\u66f4\u591a +<\/a>\n\n    <\/div>\n\n    \n\n    <div class=\"intro-tabs\" id=\"intro-tabs-container\">\n\n        <div class=\"intro-loading\" style=\"padding:0\">\u52a0\u8f7d\u83dc\u5355&#8230;<\/div>\n\n    <\/div>\n\n\n\n    <div class=\"intro-content-panel active\" id=\"intro-main-panel\">\n\n        <div class=\"intro-loading\">\u6570\u636e\u52a0\u8f7d\u4e2d&#8230;<\/div>\n\n    <\/div>\n\n<\/div>\n\n\n\n<script>\n\n    document.addEventListener(\"DOMContentLoaded\", function() {\n\n        initIntroMixedModule();\n\n    });\n\n\n\n    \/\/ --- \u914d\u7f6e\u533a\u57df ---\n\n    const introConfig = {\n\n        menuSlug: 'nav',         \/\/ \u83dc\u5355\u522b\u540d\n\n        parentName: '\u534f\u4f1a\u6982\u51b5',   \/\/ \u7236\u7ea7\u83dc\u5355\u540d\u79f0\n\n        firstContentCat: '\u56fe\u65871'  \/\/ \u7b2c\u4e00\u4e2aTab\u8981\u663e\u793a\u7684\u5185\u5bb9\u6765\u6e90\u4e8e\u54ea\u4e2a\u6587\u7ae0\u5206\u7c7b\n\n    };\n\n\n\n    async function initIntroMixedModule() {\n\n        const tabsContainer = document.getElementById('intro-tabs-container');\n\n        const panel = document.getElementById('intro-main-panel');\n\n        const moreLink = document.getElementById('intro-more-link');\n\n\n\n        try {\n\n            \/\/ 1. \u83b7\u53d6\u83dc\u5355\u7ed3\u6784 (\u4e3a\u4e86\u751f\u6210 Tabs \u540d\u5b57\u548c\u8df3\u8f6c\u94fe\u63a5)\n\n            const menuRes = await fetch(`\/wp-json\/menus\/v1\/menus\/${introConfig.menuSlug}`);\n\n            const menuData = await menuRes.json();\n\n\n\n            \/\/ \u67e5\u627e\u76ee\u6807\u7236\u7ea7\n\n            const targetParent = findMenuItemByTitle(menuData.items, introConfig.parentName);\n\n\n\n            if (!targetParent || !targetParent.child_items) {\n\n                tabsContainer.innerHTML = '<div style=\"font-size:12px;color:#999;\">\u672a\u627e\u5230\u5b50\u83dc\u5355<\/div>';\n\n                panel.innerHTML = '';\n\n                return;\n\n            }\n\n\n\n            \/\/ \u66f4\u65b0\u53f3\u4e0a\u89d2\"\u66f4\u591a\"\u94fe\u63a5\n\n            moreLink.href = \"https:\/\/www.bic.org.cn\/index.php\/\u534f\u4f1a\u7b80\u4ecb\/\";\n\n\n\n            \/\/ 2. \u6e32\u67d3 Tabs\n\n            \/\/ \u903b\u8f91\uff1a\u7b2c\u4e00\u4e2a Tab \u52a0 active \u7c7b\uff0c\u5176\u4ed6\u7684\u7ed1\u5b9a\u8df3\u8f6c\u4e8b\u4ef6\n\n            let tabsHtml = '';\n\n            targetParent.child_items.forEach((item, index) => {\n\n                \/\/ \u5c06 URL \u5b58\u50a8\u5728 data-url \u5c5e\u6027\u4e2d\n\n                const activeClass = index === 0 ? 'active' : '';\n\n                tabsHtml += `<div class=\"intro-tab-item ${activeClass}\" \n\n                                  data-index=\"${index}\" \n\n                                  data-url=\"${item.url}\">\n\n                                  ${item.title}\n\n                             <\/div>`;\n\n            });\n\n            tabsContainer.innerHTML = tabsHtml;\n\n\n\n            \/\/ 3. \u7ed1\u5b9a Tab \u70b9\u51fb\u4e8b\u4ef6\n\n            const tabItems = document.querySelectorAll('.intro-tab-item');\n\n            tabItems.forEach(item => {\n\n                item.addEventListener('click', function() {\n\n                    const idx = parseInt(this.dataset.index);\n\n                    const url = this.dataset.url;\n\n\n\n                    if (idx === 0) {\n\n                        \/\/ \u5982\u679c\u70b9\u7684\u662f\u7b2c\u4e00\u4e2a\uff0c\u4e0d\u505a\u64cd\u4f5c(\u5df2\u7ecf\u662f\u5f53\u524d\u9875)\n\n                        return;\n\n                    } else {\n\n                        \/\/ \u5176\u4ed6 Tab\uff1a\u76f4\u63a5\u8df3\u8f6c\n\n                        window.location.href = url;\n\n                    }\n\n                });\n\n            });\n\n\n\n            \/\/ 4. \u52a0\u8f7d\u7b2c\u4e00\u4e2a Tab \u7684\u5185\u5bb9 (\u6765\u81ea\u201c\u56fe\u65871\u201d\u5206\u7c7b\u7684\u7b2c\u4e00\u7bc7\u6587\u7ae0)\n\n            loadFirstTabContent(panel);\n\n\n\n        } catch (err) {\n\n            console.error(err);\n\n            tabsContainer.innerHTML = '\u83dc\u5355\u52a0\u8f7d\u5931\u8d25';\n\n        }\n\n    }\n\n\n\n    \/\/ \u52a0\u8f7d\u5185\u5bb9\u903b\u8f91\n\n    async function loadFirstTabContent(container) {\n\n        try {\n\n            \/\/ 1. \u83b7\u53d6\u5206\u7c7b ID\n\n            const catRes = await fetch(`\/wp-json\/wp\/v2\/categories?search=${encodeURIComponent(introConfig.firstContentCat)}`);\n\n            const cats = await catRes.json();\n\n            const matchedCat = cats.find(c => c.name === introConfig.firstContentCat);\n\n\n\n            if (!matchedCat) {\n\n                container.innerHTML = '<div class=\"intro-loading\">\u672a\u627e\u5230\u5206\u7c7b: '+introConfig.firstContentCat+'<\/div>';\n\n                return;\n\n            }\n\n\n\n            \/\/ 2. \u83b7\u53d6\u8be5\u5206\u7c7b\u4e0b\u6700\u65b0\u4e00\u7bc7\u6587\u7ae0\n\n            const postsRes = await fetch(`\/wp-json\/wp\/v2\/posts?categories=${matchedCat.id}&per_page=1&_embed`);\n\n            const posts = await postsRes.json();\n\n\n\n            if (!posts.length) {\n\n                container.innerHTML = '<div class=\"intro-loading\">\u6682\u65e0\u6570\u636e<\/div>';\n\n                return;\n\n            }\n\n\n\n            const post = posts[0];\n\n            renderPanelContent(container, post);\n\n\n\n        } catch (e) {\n\n            console.error(e);\n\n            container.innerHTML = '<div class=\"intro-loading\">\u5185\u5bb9\u52a0\u8f7d\u51fa\u9519<\/div>';\n\n        }\n\n    }\n\n\n\n    \/\/ \u6e32\u67d3 HTML\n\n    function renderPanelContent(container, data) {\n\n        \/\/ \u56fe\u7247\n\n        let imgUrl = 'https:\/\/via.placeholder.com\/380x140\/f4f4f5\/cccccc?text=No+Image';\n\n        if (data._embedded && data._embedded['wp:featuredmedia']) {\n\n            imgUrl = data._embedded['wp:featuredmedia'][0].source_url;\n\n        }\n\n\n\n        \/\/ \u6458\u8981\u5904\u7406\n\n        const tempDiv = document.createElement(\"div\");\n\n        tempDiv.innerHTML = data.excerpt.rendered;\n\n        let excerpt = tempDiv.innerText;\n\n        \/\/ \u5982\u679c\u6458\u8981\u4e3a\u7a7a\uff0c\u53d6\u6b63\u6587\u524d80\u5b57\n\n        if (!excerpt.trim()) {\n\n            tempDiv.innerHTML = data.content.rendered;\n\n            excerpt = tempDiv.innerText.substring(0, 80) + '...';\n\n        }\n\n\n\n        const html = `\n\n            <a href=\"${data.link}\" target=\"_blank\">\n\n                <img decoding=\"async\" src=\"${imgUrl}\" class=\"intro-banner-img\" alt=\"banner\">\n\n            <\/a>\n\n            <div class=\"intro-title\">${data.title.rendered}<\/div>\n\n            <div class=\"intro-text\">\n\n                ${excerpt}\n\n                <a href=\"${data.link}\" class=\"intro-detail-link\" target=\"_blank\">\u3010\u8be6\u60c5\u3011<\/a>\n\n            <\/div>\n\n        `;\n\n        container.innerHTML = html;\n\n    }\n\n\n\n    \/\/ \u9012\u5f52\u67e5\u627e\u83dc\u5355\u5de5\u5177\u51fd\u6570\n\n    function findMenuItemByTitle(items, title) {\n\n        for (const item of items) {\n\n            if (item.title === title) return item;\n\n            if (item.child_items) {\n\n                const found = findMenuItemByTitle(item.child_items, title);\n\n                if (found) return found;\n\n            }\n\n        }\n\n        return null;\n\n    }\n\n<\/script>\n\n\n\n<div class=\"wp-block-uagb-container uagb-block-8886ba81\">\n<style>\n    \/* --- \u5bb9\u5668\u6837\u5f0f --- *\/\n    .member-card-box {\n        \/* \u5982\u679c\u662f\u5728\u4fa7\u8fb9\u680f\uff0c\u5efa\u8bae\u7528 width: 100% *\/\n        width: 100%;\n        \n        \/* 1. \u56fa\u5b9a\u9ad8\u5ea6 (\u4e0e\u5de6\u8fb9\u3001\u4e2d\u95f4\u6a21\u5757\u4fdd\u6301\u5bf9\u9f50) *\/\n        height: 450px; \n        \n        background: #fff;\n        padding: 20px;\n        box-shadow: 0 2px 12px rgba(0,0,0,0.1);\n        font-family: \"Microsoft YaHei\", sans-serif;\n        \n        box-sizing: border-box; \n\n    }\n\n    \/* --- \u5934\u90e8 --- *\/\n    .member-header { \n        display: flex; \n        justify-content: space-between; \n        align-items: center; \n        margin-bottom: 15px; \n        height: 25px; \/* \u56fa\u5b9a\u5934\u90e8\u9ad8\u5ea6 *\/\n    }\n    .member-header h3 { \n        margin: 0; \n        font-size: 18px; \n        color: #333; \n        font-weight: bold; \n        border-left: 4px solid #008cd6; \n        padding-left: 10px; \n    }\n    .member-more { \n        font-size: 12px; \n        color: #999; \n        text-decoration: none; \n    }\n    .member-more:hover { color: #008cd6; }\n\n    \/* --- Tabs --- *\/\n    .member-tabs { \n        display: flex; \n        border-bottom: 1px solid #eee; \n        margin-bottom: 15px; \n        height: 30px; \/* \u56fa\u5b9a Tab \u9ad8\u5ea6 *\/\n    }\n    .member-tab-item {\n        padding-bottom: 8px; \n        margin-right: 20px; \n        cursor: pointer; \n        font-size: 16px; \n        color: #666; \n        position: relative;\n    }\n    .member-tab-item.active { \n        color: #008cd6; \n        font-weight: bold; \n    }\n    .member-tab-item.active::after {\n        content: ''; \n        position: absolute; \n        bottom: -1px; \n        left: 0; \n        width: 100%; \n        height: 2px; \n        background: #008cd6;\n    }\n\n    \/* --- \u5185\u5bb9\u5217\u8868\u5bb9\u5668 --- *\/\n    \/* \u6211\u4eec\u4e3a\u6bcf\u4e2a Tab \u521b\u5efa\u4e00\u4e2a\u72ec\u7acb\u7684\u5217\u8868\u5bb9\u5668\uff0c\u901a\u8fc7 active \u7c7b\u5207\u6362 *\/\n    .member-list-panel {\n        display: none; \n        \n        \/* 2. \u5185\u5bb9\u533a\u57df\u9ad8\u5ea6\u9501\u6b7b *\/\n        \/* 450(\u603b) - 40(padding) - 25(header) - 15(gap) - 30(tabs) - 15(gap) = 325px *\/\n        height: 325px;\n        \n        overflow: hidden; \/* \u8d85\u51fa\u90e8\u5206\u9690\u85cf *\/\n    }\n    .member-list-panel.active {\n        display: block;\n        animation: fadeIn 0.3s ease-in-out;\n    }\n    @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } }\n\n    .simple-item { \n        font-size: 13px; \n        color: #606266; \n        line-height: 36px; \/* \u884c\u9ad8\uff0c\u6491\u8d77\u5217\u8868 *\/\n        white-space: nowrap; \n        overflow: hidden; \n        text-overflow: ellipsis; \n        display: block;\n        text-decoration: none; \n        transition: color 0.2s;\n        border-bottom: 1px dashed #f5f5f5; \/* \u53ef\u9009\uff1a\u589e\u52a0\u865a\u7ebf\u5206\u9694 *\/\n    }\n    \n    \/* \u84dd\u8272\u5c0f\u5706\u70b9 *\/\n    .simple-item::before {\n        content: '';\n        display: inline-block;\n        width: 4px;\n        height: 4px;\n        background-color: #008cd6;\n        border-radius: 50%;\n        vertical-align: middle;\n        margin-right: 10px;\n    }\n\n    .simple-item:hover { color: #008cd6; }\n    \n    .loading-text { font-size: 13px; color: #999; text-align: center; padding-top: 50px; }\n<\/style>\n\n<div class=\"member-card-box\">\n    <div class=\"member-header\">\n        <h3>\u4f1a\u5458\u4e4b\u5bb6<\/h3>\n        <a href=\"#\" class=\"member-more\" id=\"member-more-link\" target=\"_blank\">\u66f4\u591a +<\/a>\n    <\/div>\n    \n    <div class=\"member-tabs\">\n        <div class=\"member-tab-item active\" data-tab=\"0\">\u4f01\u4e1a\u98ce\u91c7<\/div>\n        <div class=\"member-tab-item\" data-tab=\"1\">\u5165\u4f1a\u987b\u77e5<\/div>\n    <\/div>\n    \n    <div class=\"member-list-panel active\" id=\"member-panel-0\">\n        <div class=\"loading-text\">\u6b63\u5728\u52a0\u8f7d\u4f01\u4e1a\u98ce\u91c7&#8230;<\/div>\n    <\/div>\n\n    <div class=\"member-list-panel\" id=\"member-panel-1\">\n        <div class=\"loading-text\">\u6b63\u5728\u52a0\u8f7d\u5165\u4f1a\u987b\u77e5&#8230;<\/div>\n    <\/div>\n<\/div>\n\n<script>\n    document.addEventListener(\"DOMContentLoaded\", function() {\n        \/\/ --- 1. \u914d\u7f6e\u533a\u57df ---\n        const apiRoot = '\/wp-json\/wp\/v2';\n        \n        \/\/ \u3010\u5173\u952e\u4fee\u6539\u3011\u5728\u8fd9\u91cc\u76f4\u63a5\u914d\u7f6e\u8df3\u8f6c\u94fe\u63a5\n        const tabsData = [\n            { \n                name: \"\u4f01\u4e1a\u98ce\u91c7\", \n                catName: \"\u6d4b\u8bd51\", \n                panelId: \"member-panel-0\", \n                link: \"\/index.php\/\u4f01\u4e1a\u98ce\u91c7\/\", \/\/ \u3010\u8bf7\u4fee\u6539\u8fd9\u91cc\u3011\u4f01\u4e1a\u98ce\u91c7\u5217\u8868\u9875\u5730\u5740\n                id: null \n            },\n            { \n                name: \"\u5165\u4f1a\u987b\u77e5\", \n                catName: \"\u6d4b\u8bd52\", \n                panelId: \"member-panel-1\", \n                link: \"https:\/\/www.bic.org.cn\/index.php\/%e5%85%a5%e4%bc%9a%e9%a1%bb%e7%9f%a5\/\", \/\/ \u3010\u5df2\u4fee\u6539\u3011\u5165\u4f1a\u987b\u77e5\u5730\u5740\n                id: null \n            }\n        ];\n\n        let currentTab = 0;\n        const moreLink = document.getElementById('member-more-link');\n\n        \/\/ --- 2. \u6838\u5fc3\u903b\u8f91\uff1a\u83b7\u53d6\u5206\u7c7bID -> \u83b7\u53d6\u6587\u7ae0 -> \u6e32\u67d3 ---\n        async function initMemberWidget() {\n            try {\n                \/\/ 2.1 \u5e76\u884c\u67e5\u8be2\u5206\u7c7bID\n                const catRequests = tabsData.map(tab => \n                    fetch(`${apiRoot}\/categories?search=${encodeURIComponent(tab.catName)}`).then(res => res.json())\n                );\n                const results = await Promise.all(catRequests);\n\n                \/\/ 2.2 \u5904\u7406 ID \u5e76\u53d1\u8d77\u6587\u7ae0\u8bf7\u6c42\n                const postRequests = results.map((cats, index) => {\n                    const matchedCat = cats.find(c => c.name === tabsData[index].catName);\n                    if (matchedCat) {\n                        tabsData[index].id = matchedCat.id;\n                        \/\/ \u6ce8\u610f\uff1a\u8fd9\u91cc\u79fb\u9664\u4e86\u81ea\u52a8\u8986\u76d6 link \u7684\u4ee3\u7801\uff0c\u4ee5\u4fdd\u7559\u60a8\u624b\u52a8\u914d\u7f6e\u7684\u94fe\u63a5\n                        \/\/ if(!tabsData[index].link) tabsData[index].link = matchedCat.link; \n                        \n                        \/\/ \u8fd9\u91cc\u8bbe\u7f6e per_page=8\uff0c\u56e0\u4e3a\u6211\u4eec\u9ad8\u5ea6\u662f 325px\uff0c\u5927\u6982\u80fd\u653e 8-9 \u6761\n                        return fetch(`${apiRoot}\/posts?categories=${matchedCat.id}&per_page=9`).then(res => res.json());\n                    } else {\n                        return Promise.resolve([]); \/\/ \u6ca1\u627e\u5230\u5206\u7c7b\uff0c\u8fd4\u56de\u7a7a\u6570\u7ec4\n                    }\n                });\n\n                \/\/ 2.3 \u7b49\u5f85\u6587\u7ae0\u6570\u636e\u56de\u6765\n                const postsResults = await Promise.all(postRequests);\n\n                \/\/ 2.4 \u6e32\u67d3\u4e24\u4e2a\u9762\u677f\u7684\u6570\u636e\n                postsResults.forEach((posts, index) => {\n                    renderPanel(tabsData[index].panelId, posts);\n                });\n\n                \/\/ 2.5 \u521d\u59cb\u5316\u201c\u66f4\u591a\u201d\u6309\u94ae\u94fe\u63a5 (\u9ed8\u8ba4\u663e\u793a\u7b2c0\u4e2a)\n                updateMoreLink(0);\n\n                \/\/ 2.6 \u7ed1\u5b9a Tab \u70b9\u51fb\u4e8b\u4ef6 (\u6570\u636e\u90fd\u52a0\u8f7d\u5b8c\u4e86\uff0c\u73b0\u5728\u53ea\u9700\u8981\u7eaf JS \u5207\u6362\u663e\u793a)\n                bindTabEvents();\n\n            } catch (err) {\n                console.error(\"\u4f1a\u5458\u4e4b\u5bb6\u52a0\u8f7d\u5931\u8d25\", err);\n                document.getElementById('member-panel-0').innerHTML = '<div class=\"loading-text\">\u6570\u636e\u52a0\u8f7d\u5f02\u5e38<\/div>';\n            }\n        }\n\n        \/\/ --- 3. \u6e32\u67d3\u5355\u4e2a\u5217\u8868 ---\n        function renderPanel(panelId, posts) {\n            const container = document.getElementById(panelId);\n            \n            if (!posts || posts.length === 0) {\n                container.innerHTML = '<div class=\"loading-text\">\u6682\u65e0\u76f8\u5173\u6587\u7ae0<\/div>';\n                return;\n            }\n\n            const html = posts.map(post => {\n                const tempDiv = document.createElement(\"div\");\n                tempDiv.innerHTML = post.title.rendered;\n                const title = tempDiv.textContent || tempDiv.innerText;\n                return `<a href=\"${post.link}\" class=\"simple-item\" title=\"${title}\" target=\"_blank\">${title}<\/a>`;\n            }).join('');\n            \n            container.innerHTML = html;\n        }\n\n        \/\/ --- 4. \u7ed1\u5b9a\u70b9\u51fb\u4e8b\u4ef6 ---\n        function bindTabEvents() {\n            const tabs = document.querySelectorAll('.member-tab-item');\n            const panels = document.querySelectorAll('.member-list-panel');\n\n            tabs.forEach((tab, index) => {\n                tab.addEventListener('click', function() {\n                    \/\/ \u5207\u6362\u9ad8\u4eae\n                    tabs.forEach(t => t.classList.remove('active'));\n                    this.classList.add('active');\n\n                    \/\/ \u5207\u6362\u9762\u677f\n                    panels.forEach(p => p.classList.remove('active'));\n                    const targetPanel = document.getElementById(tabsData[index].panelId);\n                    if(targetPanel) targetPanel.classList.add('active');\n\n                    \/\/ \u66f4\u65b0\u201c\u66f4\u591a\u201d\u94fe\u63a5\n                    updateMoreLink(index);\n                });\n            });\n        }\n\n        \/\/ --- 5. \u66f4\u65b0\u66f4\u591a\u6309\u94ae ---\n        function updateMoreLink(index) {\n            if (tabsData[index].link) {\n                moreLink.href = tabsData[index].link;\n                moreLink.style.display = 'inline';\n            } else {\n                moreLink.href = \"#\"; \/\/ \u6216\u8005\u9690\u85cf\n                \/\/ moreLink.style.display = 'none';\n            }\n        }\n\n        \/\/ \u542f\u52a8\n        initMemberWidget();\n    });\n<\/script>\n<\/div>\n<\/div><\/div>\n\n\n\n<meta charset=\"UTF-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n\n<style>\n    \/* ====================\n        CSS \u6837\u5f0f\u90e8\u5206 (\u4fdd\u6301\u539f\u6837)\n       ==================== *\/\n    \n    \/* 1. \u5bb9\u5668\u6837\u5f0f *\/\n    .info-section-box {\n        background-color: #fff;\n        border-radius: 4px;\n        box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.05);\n        padding: 20px 24px;\n        margin: 20px auto;\n        width: 80%;\n        font-family: -apple-system, \"PingFang SC\", \"Microsoft YaHei\", sans-serif;\n        box-sizing: border-box;\n    }\n\n    \/* 2. \u4e09\u5217\u5e03\u5c40 *\/\n    .info-grid {\n        display: grid;\n        grid-template-columns: 1fr 1fr 1fr; \/* \u4e09\u7b49\u5206 *\/\n        gap: 0; \/* \u95f4\u9699\u7531\u8fb9\u6846\u5904\u7406 *\/\n    }\n\n    .info-col {\n        padding: 0 20px;\n        border-right: 1px dashed #e4e7ed; \/* \u7ad6\u5411\u865a\u7ebf\u5206\u5272 *\/\n    }\n\n    \/* \u53bb\u6389\u6700\u540e\u4e00\u5217\u7684\u53f3\u8fb9\u6846\uff0c\u5e76\u8c03\u6574\u9996\u5c3epadding *\/\n    .info-col:first-child { padding-left: 0; }\n    .info-col:last-child { border-right: none; padding-right: 0; }\n\n    \/* 3. \u9876\u90e8 Header (\u6807\u9898 + \u66f4\u591a) *\/\n    .col-header {\n        display: flex;\n        justify-content: space-between;\n        align-items: center;\n        margin-bottom: 15px;\n    }\n\n    .main-title {\n        font-size: 18px;\n        font-weight: 500;\n        color: #303133;\n        margin: 0;\n    }\n\n    .more-link {\n        font-size: 12px;\n        color: #909399;\n        text-decoration: none;\n        cursor: pointer;\n    }\n    .more-link:hover { color: #409eff; }\n\n    \/* 4. Tab \u9009\u9879\u5361\u533a\u57df *\/\n    .tabs-wrapper {\n        display: flex;\n        border-bottom: 1px solid #e4e7ed;\n        margin-bottom: 15px;\n    }\n\n    .tab-item {\n        font-size: 16px;\n        color: #606266;\n        padding: 8px 0;\n        margin-right: 20px;\n        cursor: pointer;\n        position: relative;\n        transition: color 0.3s;\n    }\n\n    .tab-item:hover { color: #409eff; }\n\n    \/* \u6fc0\u6d3b\u72b6\u6001\u7684 Tab *\/\n    .tab-item.active {\n        color: #409eff;\n        font-weight: 500;\n    }\n\n    \/* \u6fc0\u6d3b\u72b6\u6001\u4e0b\u7684\u84dd\u8272\u4e0b\u5212\u7ebf *\/\n    .tab-item.active::after {\n        content: \"\";\n        position: absolute;\n        bottom: -1px; \/* \u76d6\u4f4f\u5e95\u90e8\u7684\u7070\u7ebf *\/\n        left: 0;\n        width: 100%;\n        height: 2px;\n        background-color: #409eff;\n    }\n\n    \/* 5. \u5217\u8868\u5185\u5bb9\u533a\u57df *\/\n    .news-list {\n        list-style: none;\n        padding: 0;\n        margin: 0;\n        min-height: 150px; \/* \u7ed9\u4e2a\u6700\u5c0f\u9ad8\u5ea6\uff0c\u9632\u6b62\u5207\u6362\u65f6\u6296\u52a8 *\/\n    }\n\n    .news-item {\n        display: flex;\n        justify-content: space-between;\n        align-items: center;\n        line-height: 32px; \/* \u884c\u9ad8 *\/\n        font-size: 13px;\n    }\n\n    \/* \u5217\u8868\u524d\u7684\u84dd\u8272\u83f1\u5f62\u70b9 *\/\n    .news-title-wrapper {\n        display: flex;\n        align-items: center;\n        flex: 1; \/* \u5360\u636e\u5269\u4f59\u7a7a\u95f4 *\/\n        overflow: hidden; \/* \u8d85\u957f\u9690\u85cf\u5bb9\u5668 *\/\n        margin-right: 10px;\n    }\n\n    .news-dot {\n        width: 4px;\n        height: 4px;\n        background-color: #409eff;\n        transform: rotate(45deg); \/* \u65cb\u8f6c\u53d8\u6210\u83f1\u5f62 *\/\n        margin-right: 8px;\n        flex-shrink: 0;\n    }\n\n    .news-link {\n        text-decoration: none;\n        color: #333;\n        overflow: hidden;\n        text-overflow: ellipsis;\n        white-space: nowrap;\n        width: 100%;\n    }\n    .news-link:hover { color: #409eff; }\n\n    .news-date {\n        color: #999;\n        font-size: 12px;\n        flex-shrink: 0; \/* \u9632\u6b62\u65e5\u671f\u88ab\u538b\u7f29 *\/\n        font-family: Arial, sans-serif;\n    }\n\n    \/* 6. \u7a7a\u72b6\u6001 (\u6682\u65e0\u6570\u636e) *\/\n    .empty-state {\n        color: #909399;\n        font-size: 13px;\n        padding-top: 20px;\n        text-align: center;\n    }\n\n    \/* \u79fb\u52a8\u7aef\u9002\u914d *\/\n    @media (max-width: 768px) {\n        .info-grid {\n            grid-template-columns: 1fr; \/* \u53d8\u4e3a\u5355\u5217 *\/\n            gap: 30px;\n        }\n        .info-col {\n            border-right: none;\n            padding: 0;\n            border-bottom: 1px dashed #e4e7ed; \/* \u6539\u4e3a\u6a2a\u5411\u5206\u5272 *\/\n            padding-bottom: 20px;\n        }\n        .info-col:last-child { border-bottom: none; }\n    }\n<\/style>\n\n<div class=\"info-section-box\">\n    <div id=\"js-info-grid\" class=\"info-grid\">\n        <div style=\"text-align:center;width:100%;padding:20px;color:#999;\">\u52a0\u8f7d\u4e2d&#8230;<\/div>\n    <\/div>\n<\/div>\n\n<script>\n    \/**\n     * ====================\n     * 1. \u914d\u7f6e\u533a\u57df\n     * ====================\n     * \u3010\u5173\u952e\u4fee\u6539\u3011\uff1a\u5728\u8fd9\u91cc\u76f4\u63a5\u586b\u5199\u60a8\u60f3\u8981\u8df3\u8f6c\u7684\u94fe\u63a5\n     * link: \"\/\u60a8\u7684\u8df3\u8f6c\u5730\u5740\/\"\n     *\/\n    const sectionsConfig = [\n        {\n            mainTitle: \"\u884c\u4e1a\u8d44\u8baf\",\n            tabs: [\n                { \n                    name: \"\u79d1\u6280\u7b80\u8baf\", \n                    catName: \"\u6d4b\u8bd51\", \n                    id: null, \n                    \/\/ \u3010\u4fee\u6539\u8fd9\u91cc\u3011\u884c\u4e1a\u8d44\u8baf -> \u79d1\u6280\u7b80\u8baf \u7684\u8df3\u8f6c\u5730\u5740\n                    link: \"\/index.php\/\u79d1\u6280\u7b80\u8baf\/\", \n                    data: [] \n                },\n                { \n                    name: \"\u79d1\u6280\u521b\u65b0\", \n                    catName: \"\u6d4b\u8bd52\", \n                    id: null, \n                    \/\/ \u5982\u679c\u7b2c\u4e8c\u4e2aTab\u4e5f\u6709\u4e0d\u540c\u5730\u5740\uff0c\u4e5f\u53ef\u4ee5\u586b\u5728\u8fd9\u91cc\n                    link: \"\/category\/tech-innovation\/\", \n                    data: [] \n                }\n            ]\n        },\n        {\n            mainTitle: \"\u6559\u80b2\u57f9\u8bad\",\n            tabs: [\n                { \n                    name: \"\u57f9\u8bad\u6559\u80b2\", \n                    catName: \"\u6d4b\u8bd52\", \n                    id: null, \n                    \/\/ \u3010\u4fee\u6539\u8fd9\u91cc\u3011\u6559\u80b2\u57f9\u8bad -> \u57f9\u8bad\u6559\u80b2 \u7684\u8df3\u8f6c\u5730\u5740\n                    link: \"\/index.php\/\u7ee7\u7eed\u6559\u80b2\/\", \n                    data: [] \n                },\n                { \n                    name: \"\u7ee7\u7eed\u6559\u80b2\", \n                    catName: \"\u6d4b\u8bd5\", \n                    id: null, \n                    link: \"\/category\/continue-edu\/\", \n                    data: [] \n                }\n            ]\n        },\n        {\n            mainTitle: \"\u653f\u7b56\u4e0e\u6cd5\u89c4\",\n            tabs: [\n                { \n                    name: \"\u653f\u7b56\u4e0e\u6cd5\u89c4\", \n                    catName: \"\u6d4b\u8bd5\", \n                    id: null, \n                    \/\/ \u3010\u4fee\u6539\u8fd9\u91cc\u3011\u653f\u7b56\u4e0e\u6cd5\u89c4 \u7684\u8df3\u8f6c\u5730\u5740\n                    link: \"\/index.php\/\u653f\u7b56\u4e0e\u6cd5\u89c4\/\", \n                    data: [] \n                },\n                { \n                    name: \"\u6807\u51c6\u4e0e\u89c4\u8303\", \n                    catName: \"\u6d4b\u8bd51\", \n                    id: null, \n                    link: \"\/category\/standards\/\", \n                    data: [] \n                }\n            ]\n        }\n    ];\n\n    document.addEventListener(\"DOMContentLoaded\", function() {\n        initInfoModule();\n    });\n\n    \/\/ \u521d\u59cb\u5316\u6a21\u5757\n    async function initInfoModule() {\n        const gridContainer = document.getElementById('js-info-grid');\n        \n        \/\/ 1. \u6e32\u67d3\u57fa\u7840 HTML \u9aa8\u67b6 (\u6807\u9898\u3001Tabs)\n        let html = '';\n        sectionsConfig.forEach((section, sIndex) => {\n            let tabsHtml = section.tabs.map((tab, tIndex) => `\n                <div class=\"tab-item ${tIndex === 0 ? 'active' : ''}\" \n                     data-section=\"${sIndex}\" \n                     data-tab=\"${tIndex}\">\n                    ${tab.name}\n                <\/div>\n            `).join('');\n\n            html += `\n                <div class=\"info-col\" id=\"col-${sIndex}\">\n                    <div class=\"col-header\">\n                        <h3 class=\"main-title\">${section.mainTitle}<\/h3>\n                        <a href=\"#\" class=\"more-link\" id=\"more-link-${sIndex}\">\u66f4\u591a +<\/a>\n                    <\/div>\n                    \n                    <div class=\"tabs-wrapper\">\n                        ${tabsHtml}\n                    <\/div>\n\n                    <div class=\"list-container\" id=\"list-container-${sIndex}\">\n                        <div class=\"empty-state\">\u6570\u636e\u52a0\u8f7d\u4e2d...<\/div>\n                    <\/div>\n                <\/div>\n            `;\n        });\n        gridContainer.innerHTML = html;\n\n        \/\/ 2. \u7ed1\u5b9a Tab \u70b9\u51fb\u4e8b\u4ef6\n        const tabItems = document.querySelectorAll('.tab-item');\n        tabItems.forEach(item => {\n            item.addEventListener('click', function() {\n                const sIdx = parseInt(this.dataset.section);\n                const tIdx = parseInt(this.dataset.tab);\n                handleSwitchTab(sIdx, tIdx, this);\n            });\n        });\n\n        \/\/ 3. \u5f02\u6b65\u83b7\u53d6\u5206\u7c7b ID \u5e76\u52a0\u8f7d\u9996\u5c4f\u6570\u636e\n        await resolveCategoryIds();\n        \n        \/\/ \u52a0\u8f7d\u6bcf\u4e2a\u677f\u5757\u7684\u7b2c\u4e00\u4e2a Tab\n        sectionsConfig.forEach((section, index) => {\n            loadTabContent(index, 0);\n        });\n    }\n\n    \/\/ \u7b2c\u4e00\u6b65\uff1a\u6839\u636e\u4e2d\u6587\u540d\u83b7\u53d6\u5206\u7c7b ID\n    async function resolveCategoryIds() {\n        const promises = [];\n        \n        for (let section of sectionsConfig) {\n            for (let tab of section.tabs) {\n                \/\/ \u6784\u5efa\u8bf7\u6c42 Promise\n                const p = fetch(`\/wp-json\/wp\/v2\/categories?search=${encodeURIComponent(tab.catName)}`)\n                    .then(res => res.json())\n                    .then(cats => {\n                        const matched = cats.find(c => c.name === tab.catName);\n                        if (matched) {\n                            tab.id = matched.id;\n                            \/\/ \u3010\u5173\u952e\u4fee\u6539\u3011\u5982\u679c\u914d\u7f6e\u91cc\u6ca1\u6709\u624b\u52a8\u586b link\uff0c\u624d\u4f7f\u7528\u7cfb\u7edf\u7684 link\n                            \/\/ \u8fd9\u6837\u4fdd\u8bc1\u60a8\u624b\u52a8\u586b\u7684 link \u4f18\u5148\u7ea7\u6700\u9ad8\n                            if(!tab.link) tab.link = matched.link;\n                        } else {\n                            console.warn(`\u672a\u627e\u5230\u5206\u7c7b: ${tab.catName}`);\n                        }\n                    })\n                    .catch(err => console.error(err));\n                promises.push(p);\n            }\n        }\n        \n        await Promise.all(promises);\n    }\n\n    \/\/ \u5904\u7406 Tab \u5207\u6362\n    function handleSwitchTab(sectionIndex, tabIndex, clickedElement) {\n        \/\/ \u6837\u5f0f\u5207\u6362\n        const parent = clickedElement.parentNode;\n        parent.querySelectorAll('.tab-item').forEach(t => t.classList.remove('active'));\n        clickedElement.classList.add('active');\n\n        \/\/ \u52a0\u8f7d\u6570\u636e\n        loadTabContent(sectionIndex, tabIndex);\n    }\n\n    \/\/ \u52a0\u8f7d\u5e76\u6e32\u67d3\u6570\u636e\n    async function loadTabContent(sectionIndex, tabIndex) {\n        const tabConfig = sectionsConfig[sectionIndex].tabs[tabIndex];\n        const container = document.getElementById(`list-container-${sectionIndex}`);\n        const moreLink = document.getElementById(`more-link-${sectionIndex}`);\n\n        \/\/ \u3010\u5173\u952e\u903b\u8f91\u3011\u5207\u6362 Tab \u65f6\uff0c\u81ea\u52a8\u66f4\u65b0\u53f3\u4e0a\u89d2\u201c\u66f4\u591a\u201d\u7684\u94fe\u63a5\n        if (tabConfig.link) {\n            moreLink.href = tabConfig.link;\n        } else {\n            moreLink.href = \"#\"; \/\/ \u6ca1\u914d\u7f6e\u5c31\u7a7a\u94fe\u63a5\n        }\n\n        \/\/ \u5982\u679c\u6ca1\u6709 ID (\u5206\u7c7b\u4e0d\u5b58\u5728)\uff0c\u663e\u793a\u9519\u8bef\n        if (!tabConfig.id) {\n            container.innerHTML = '<div class=\"empty-state\">\u5206\u7c7b\u672a\u627e\u5230<\/div>';\n            return;\n        }\n\n        \/\/ \u5982\u679c\u5df2\u6709\u7f13\u5b58\u6570\u636e\uff0c\u76f4\u63a5\u6e32\u67d3\n        if (tabConfig.data.length > 0) {\n            renderList(container, tabConfig.data);\n            return;\n        }\n\n        \/\/ \u8bf7\u6c42 API\n        try {\n            container.style.opacity = '0.5'; \/\/ \u7b80\u5355\u52a0\u8f7d\u6548\u679c\n            const res = await fetch(`\/wp-json\/wp\/v2\/posts?categories=${tabConfig.id}&per_page=6`);\n            const posts = await res.json();\n            \n            \/\/ \u7f13\u5b58\u6570\u636e\n            tabConfig.data = posts;\n            \n            renderList(container, posts);\n        } catch (err) {\n            console.error(err);\n            container.innerHTML = '<div class=\"empty-state\">\u52a0\u8f7d\u5931\u8d25<\/div>';\n        } finally {\n            container.style.opacity = '1';\n        }\n    }\n\n    \/\/ \u6e32\u67d3\u5217\u8868 HTML\n    function renderList(container, list) {\n        if (!list || list.length === 0) {\n            container.innerHTML = '<div class=\"empty-state\">\u6682\u65e0\u6570\u636e<\/div>';\n            return;\n        }\n\n        const html = `\n            <ul class=\"news-list\">\n                ${list.map(item => {\n                    \/\/ \u683c\u5f0f\u5316\u65e5\u671f MM-DD\n                    const d = new Date(item.date);\n                    const dateStr = `${(d.getMonth() + 1).toString().padStart(2, '0')}-${d.getDate().toString().padStart(2, '0')}`;\n                    \n                    return `\n                        <li class=\"news-item\">\n                            <div class=\"news-title-wrapper\">\n                                <span class=\"news-dot\"><\/span>\n                                <a href=\"${item.link}\" class=\"news-link\" title=\"${item.title.rendered}\" target=\"_blank\">\n                                    ${item.title.rendered}\n                                <\/a>\n                            <\/div>\n                            <span class=\"news-date\">${dateStr}<\/span>\n                        <\/li>\n                    `;\n                }).join('')}\n            <\/ul>\n        `;\n        container.innerHTML = html;\n    }\n<\/script>\n\n\n\n<meta charset=\"UTF-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<title>\u53cb\u60c5\u94fe\u63a5\u7ec4\u4ef6<\/title>\n<style>\n    \/* ====================\n           CSS \u6837\u5f0f\u90e8\u5206\n           ==================== *\/\n\n    \/* 1. \u5bb9\u5668\u6837\u5f0f\uff1a\u767d\u5e95\u3001\u9634\u5f71\u3001\u5706\u89d2 *\/\n    .friend-link-box {\n        background-color: #fff;\n        border-radius: 4px;\n        box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.05);\n        \/* \u8f7b\u5fae\u9634\u5f71 *\/\n        padding: 20px 24px;\n        margin: 20px auto;\n        width: 80%;\n        font-family: -apple-system, \"PingFang SC\", \"Microsoft YaHei\", sans-serif;\n        box-sizing: border-box;\n\n    }\n\n    \/* 2. \u5934\u90e8\u6837\u5f0f\uff1a\u84dd\u8272\u4e0b\u5212\u7ebf\u8986\u76d6\u7070\u8272\u5206\u5272\u7ebf *\/\n    .fl-header {\n        border-bottom: 1px solid #e4e7ed;\n        \/* \u5e95\u90e8\u7684\u7070\u8272\u957f\u7ebf *\/\n        margin-bottom: 20px;\n    }\n\n    .fl-title {\n        display: inline-block;\n        margin: 0;\n        padding: 0 0 10px 0;\n        font-size: 16px;\n        font-weight: 500;\n        color: #409eff;\n        \/* \u6807\u9898\u6587\u5b57\u989c\u8272 *\/\n        border-bottom: 2px solid #409eff;\n        \/* \u6807\u9898\u4e0b\u65b9\u7684\u84dd\u7ebf *\/\n        margin-bottom: -1px;\n        \/* \u3010\u6838\u5fc3\u6280\u5de7\u3011\u5411\u4e0b\u504f\u79fb1px\uff0c\u76d6\u4f4f\u7070\u7ebf *\/\n        cursor: default;\n    }\n\n    \/* 3. \u7f51\u683c\u5e03\u5c40\uff1aPC\u7aef 4\u5217 *\/\n    .fl-grid {\n        list-style: none;\n        padding: 0;\n        margin: 0;\n        display: grid;\n        grid-template-columns: repeat(4, 1fr);\n        \/* 4\u7b49\u5206 *\/\n        gap: 15px 30px;\n        \/* \u884c\u95f4\u8ddd15px\uff0c\u5217\u95f4\u8ddd30px *\/\n    }\n\n    \/* 4. \u5355\u4e2a\u94fe\u63a5\u9879\u6837\u5f0f *\/\n    .fl-item {\n        display: flex;\n        align-items: center;\n        font-size: 13px;\n        color: #606266;\n        overflow: hidden;\n        \/* \u914d\u5408\u8d85\u957f\u7701\u7565 *\/\n    }\n\n    \/* \u6a21\u62df\u56fe\u4e2d\u7684\u5c0f\u7bad\u5934\u56fe\u6807 *\/\n    .fl-item::before {\n        content: \"\u2039\";\n        margin-right: 6px;\n        color: #909399;\n        font-size: 14px;\n        line-height: 1;\n        transform: scale(0.8);\n        \/* \u7a0d\u5fae\u7f29\u5c0f\u4e00\u70b9 *\/\n    }\n\n    \/* 5. \u94fe\u63a5\u6587\u672c\u4e0e\u8d85\u957f\u7701\u7565 *\/\n    .fl-link {\n        text-decoration: none;\n        color: #333;\n        transition: color 0.3s;\n\n        \/* \u5355\u884c\u6587\u672c\u6ea2\u51fa\u663e\u793a\u7701\u7565\u53f7 *\/\n        white-space: nowrap;\n        overflow: hidden;\n        text-overflow: ellipsis;\n        display: block;\n        width: 100%;\n    }\n\n    .fl-link:hover {\n        color: #409eff;\n        \/* \u60ac\u505c\u9ad8\u4eae\u8272 *\/\n    }\n\n    \/* 6. \u79fb\u52a8\u7aef\u9002\u914d\uff1a\u5c4f\u5e55\u5c0f\u4e8e768px\u65f6\u53d8\u4e3a2\u5217 *\/\n    @media (max-width: 768px) {\n        .fl-grid {\n            grid-template-columns: repeat(2, 1fr);\n            gap: 10px;\n        }\n\n        .friend-link-box {\n            padding: 15px;\n        }\n    }\n<\/style>\n\n\n\n<div class=\"friend-link-box\">\n    <div class=\"fl-header\">\n        <h3 class=\"fl-title\">\u53cb\u60c5\u94fe\u63a5<\/h3>\n    <\/div>\n\n    <div class=\"fl-content\">\n        <ul id=\"js-fl-list\" class=\"fl-grid\"><\/ul>\n    <\/div>\n<\/div>\n\n<script>\n    \/\/ \u6a21\u62df\u6570\u636e (\u6309\u7167\u4f60\u622a\u56fe\u4e2d\u7684\u5185\u5bb9)\n    \/\/ \u5728 WordPress \u4e2d\uff0c\u4f60\u53ef\u4ee5\u628a\u8fd9\u91cc\u6539\u6210 fetch \u8bf7\u6c42 API\n    const linksData = [\n        { name: \"\u4e2d\u534e\u4eba\u6c11\u5171\u548c\u56fd\u4f4f\u623f\u548c\u57ce\u4e61\u5efa\u8bbe\u90e8\", url: \"https:\/\/www.mohurd.gov.cn\/\" },\n        { name: \"\u4fdd\u5b9a\u4f4f\u623f\u548c\u57ce\u4e61\u5efa\u8bbe\u5385\", url: \"https:\/\/zjj.baoding.gov.cn\/\" },\n        { name: \"\u6cb3\u5317\u7701\u4f4f\u623f\u548c\u57ce\u4e61\u5efa\u8bbe\u5385\", url: \"https:\/\/zfcxjst.hebei.gov.cn\/\" },\n        \n       \n    ];\n\n    \/\/ \u6e32\u67d3\u51fd\u6570\n    function renderLinks() {\n        const listEl = document.getElementById('js-fl-list');\n\n        \/\/ \u5982\u679c\u627e\u4e0d\u5230\u5143\u7d20\uff08\u9632\u6b62\u62a5\u9519\uff09\u5219\u9000\u51fa\n        if (!listEl) return;\n\n        \/\/ \u4f7f\u7528 map \u751f\u6210 HTML \u5b57\u7b26\u4e32\u5e76 join\n        const html = linksData.map(item => `\n                <li class=\"fl-item\">\n                    <a href=\"${item.url}\" class=\"fl-link\" title=\"${item.name}\" target=\"_blank\">\n                        ${item.name}\n                    <\/a>\n                <\/li>\n            `).join('');\n\n        listEl.innerHTML = html;\n    }\n\n    \/\/ DOM \u52a0\u8f7d\u5b8c\u6210\u540e\u6267\u884c\n    document.addEventListener('DOMContentLoaded', renderLinks);\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>\u884c\u4e1a\u8d44\u8baf\u6eda\u52a8\u6a21\u5757 \u884c\u4e1a \u8d44\u8baf \u52a0\u8f7d\u4e2d&#038;#&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"brizy-blank-template.php","meta":{"_uag_custom_page_level_css":"","_themeisle_gutenberg_block_has_review":false,"footnotes":""},"class_list":["post-669","page","type-page","status-publish","hentry"],"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false},"uagb_author_info":{"display_name":"admin","author_link":"https:\/\/www.bic.org.cn\/index.php\/author\/admin\/"},"uagb_comment_info":0,"uagb_excerpt":"\u884c\u4e1a\u8d44\u8baf\u6eda\u52a8\u6a21\u5757 \u884c\u4e1a \u8d44\u8baf \u52a0\u8f7d\u4e2d&#...","jetpack_sharing_enabled":true,"brizy_media":[],"_links":{"self":[{"href":"https:\/\/www.bic.org.cn\/index.php\/wp-json\/wp\/v2\/pages\/669","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.bic.org.cn\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.bic.org.cn\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.bic.org.cn\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.bic.org.cn\/index.php\/wp-json\/wp\/v2\/comments?post=669"}],"version-history":[{"count":70,"href":"https:\/\/www.bic.org.cn\/index.php\/wp-json\/wp\/v2\/pages\/669\/revisions"}],"predecessor-version":[{"id":941,"href":"https:\/\/www.bic.org.cn\/index.php\/wp-json\/wp\/v2\/pages\/669\/revisions\/941"}],"wp:attachment":[{"href":"https:\/\/www.bic.org.cn\/index.php\/wp-json\/wp\/v2\/media?parent=669"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}