广告招租A广告招租B广告招租C广告招租D
返回列表 发布新帖
查看: 154|回复: 4

[源码] 哪吒探针美化:ServerStatus主题

发表于 2024-10-11 12:46:36 | 显示全部楼层 |阅读模式
很多配置都是论坛里面借鉴的,应该是没做手机适配 xhj021 有动手能力的自己做一下
演示探针地址 AzimiのVPS (mygo.li)
  1. <style>
  2. /* 设置页面宽度 */
  3. .container {
  4.   width: 1400px;
  5. }
  6. </style>

  7. <script>
  8. document.addEventListener('DOMContentLoaded', function() {
  9.     var downtimeCells = document.querySelectorAll('th.node-cell.status.center');
  10.     downtimeCells.forEach(function(cell) {
  11.         var newTh = document.createElement('th');
  12.         newTh.className = 'node-cell downtime center';
  13.         newTh.textContent = '剩余时间';
  14.         cell.parentNode.insertBefore(newTh, cell.nextSibling);
  15.     });
  16. });

  17. document.addEventListener('DOMContentLoaded', function() {
  18.     const affLinks = {
  19.            1: {
  20.             startDate: new Date('2024-05-01T00:00:00+08:00'),
  21.             expirationDate: new Date('2025-05-04T00:00:00+08:00'),
  22.             content: {
  23.                 type: 'text',
  24.                 value: ''
  25.             }
  26.         },
  27.            2: {
  28.             startDate: new Date('2024-05-15T00:00:00+08:00'),
  29.             expirationDate: new Date('2026-05-15T00:00:00+08:00'),
  30.             content: {
  31.                 type: 'text',
  32.                 value: ''
  33.             }
  34.         },
  35.   };
  36.    const createLink = (linkConfig) => {
  37.        const $link = document.createElement('a');
  38.        $link.href = linkConfig.value;
  39.        $link.textContent = linkConfig.label || linkConfig.value;

  40.        if (linkConfig.icon) {
  41.            const $icon = document.createElement('img');
  42.            $icon.src = linkConfig.icon;
  43.            $icon.alt = linkConfig.iconAlt || '';
  44.            $link.appendChild($icon);
  45.        }

  46.        if (linkConfig.text) {
  47.            const $text = document.createElement('span');
  48.            $text.textContent = linkConfig.text;
  49.            $link.appendChild(document.createTextNode(' '));
  50.            $link.appendChild($text);
  51.        }

  52.        return $link;
  53.    };

  54.    const createIcon = (iconConfig) => {
  55.        const $icon = document.createElement('img');
  56.        $icon.src = iconConfig.value;
  57.        $icon.alt = iconConfig.label || 'Icon';

  58.        if (iconConfig.text) {
  59.            const $text = document.createElement('span');
  60.            $text.textContent = iconConfig.text;
  61.            $icon.appendChild(document.createTextNode(' '));
  62.            $icon.appendChild($text);
  63.        }

  64.        return $icon;
  65.    };

  66.    const createSmokeAnimation = () => {
  67.        const $smokeContainer = document.createElement('div');
  68.        $smokeContainer.className = 'smoke-container';

  69.        for (let i = 0; i < 5; i++) {
  70.            const $particle = document.createElement('div');
  71.            $particle.className = 'smoke-particle';
  72.            $smokeContainer.appendChild($particle);
  73.        }

  74.        return $smokeContainer;
  75.    };

  76.    const createCountdown = (startDate, expirationDate) => {
  77.        const total = expirationDate.getTime() - startDate.getTime();

  78.        const $countdownContainer = document.createElement('div');
  79.        $countdownContainer.style.position = 'relative';
  80.        $countdownContainer.style.width = '100%';
  81.        $countdownContainer.style.backgroundColor = '#333';
  82.        $countdownContainer.style.borderRadius = '5px';
  83.        $countdownContainer.style.overflow = 'hidden';
  84.        $countdownContainer.style.boxShadow = 'inset 0 1px 3px rgba(0,0,0,0.2), 0 1px 2px rgba(0,0,0,0.3)'; // 背景3D效果
  85.        $countdownContainer.style.background = 'linear-gradient(to bottom, #444, #222)'; // 背景渐变效果

  86.        const $progressBar = document.createElement('div');
  87.        $progressBar.style.position = 'absolute';
  88.        $progressBar.style.top = '0';
  89.        $progressBar.style.left = '0';
  90.        $progressBar.style.height = '100%';
  91.        $progressBar.style.backgroundColor = '#388e3c'; // 调暗后的绿色进度条
  92.        $progressBar.style.width = '0%';
  93.        $progressBar.style.boxShadow = 'inset 0 1px 3px rgba(0,0,0,0.2), 0 1px 2px rgba(0,0,0,0.3)'; // 进度条3D效果

  94.        const $countdownTime = document.createElement('span');
  95.        $countdownTime.style.position = 'relative';
  96.        $countdownTime.style.zIndex = '1';
  97.        $countdownTime.style.color = '#fff'; // 恢复为白色字体
  98.        $countdownTime.style.padding = '5px';
  99.        $countdownTime.style.fontSize = '12px'; // 调小字体
  100.        $countdownTime.textContent = ' ';

  101.        const $smoke = createSmokeAnimation();

  102.        const updateCountdown = () => {
  103.            const now = new Date();
  104.            const diff = now.getTime() - startDate.getTime();
  105.                   
  106.     // 判断是否为特殊日期
  107.     if (startDate.getTime() === new Date('9999-01-01T00:00:00+08:00').getTime() &&
  108.         expirationDate.getTime() === new Date('9999-01-01T00:00:00+08:00').getTime()) {
  109.         $progressBar.style.width = '100%';
  110.         $progressBar.style.backgroundColor = '#2e7d32'; // 特殊情况的颜色(绿色)
  111.         $countdownTime.textContent = '999天';
  112.         return;
  113.     }

  114.            if (diff >= total) {
  115.                clearInterval(countdownInterval);
  116.                $countdownTime.textContent = '已过期';
  117.                $progressBar.style.backgroundColor = '#c62828'; // 到期后的深红色进度条
  118.                $progressBar.style.width = '100%';
  119.                return;
  120.            }

  121.            const remainingDays = Math.ceil((total - diff) / (1000 * 60 * 60 * 24));
  122.            $countdownTime.textContent = `${remainingDays} days`;
  123.            const progress = 100 - (diff / total) * 100;
  124.            $progressBar.style.width = `${progress}%`;

  125.     // 根据剩余进度设置进度条颜色
  126.     if (progress <= 5) {
  127.         $progressBar.style.backgroundColor = '#c05000'; // 橙色
  128.     } else if (progress <= 20) {
  129.         $progressBar.style.backgroundColor = '#f9a825'; // 黄色
  130.     } else {
  131.         $progressBar.style.backgroundColor = '#388e3c'; // 绿色
  132.     }
  133.        
  134.            // 更新烟雾动画的位置
  135.            $smoke.style.left = `${progress}%`;
  136.        };

  137.        const countdownInterval = setInterval(updateCountdown, 1000);
  138.        updateCountdown();

  139.        $countdownContainer.appendChild($progressBar);
  140.        $progressBar.appendChild($smoke);
  141.        $countdownContainer.appendChild($countdownTime);

  142.        return $countdownContainer;
  143.    };

  144.    const rows = document.querySelectorAll('tr');
  145.    rows.forEach((row) => {
  146.        let osCell = row.querySelector('td.node-cell.status.center');
  147.        let downtimeCell = document.createElement('td');
  148.        downtimeCell.classList.add('node-cell', 'downtime', 'center');
  149.        let nodeId = row.id.substring(1);
  150.        let affLink = affLinks[nodeId];
  151.        if (!affLink) {
  152.            affLink = {
  153.                content: {
  154.                    type: 'text',
  155.                    value: '  '
  156.                }
  157.            };
  158.        }
  159.        if (osCell && affLink && affLink.content) {
  160.            switch (affLink.content.type) {
  161.                case 'link':
  162.                    let link = createLink(affLink.content);
  163.                    downtimeCell.appendChild(link);
  164.                    break;
  165.                case 'icon':
  166.                    let icon = createIcon(affLink.content);
  167.                    downtimeCell.appendChild(icon);
  168.                    break;
  169.                default:
  170.                    let text = document.createTextNode(affLink.content.value);
  171.                    downtimeCell.appendChild(text);
  172.                    break;
  173.            }

  174.            if (affLink.startDate && affLink.expirationDate) {
  175.                let countdown = createCountdown(affLink.startDate, affLink.expirationDate);
  176.                downtimeCell.appendChild(countdown);
  177.            }

  178.            osCell.parentNode.insertBefore(downtimeCell, osCell.nextSibling);
  179.        }
  180.    });
  181. });
  182. </script>

  183. <style>
  184. @keyframes smoke {
  185.    0% {
  186.        transform: translateY(0) scale(1);
  187.        opacity: 1;
  188.    }
  189.    100% {
  190.        transform: translateY(-20px) scale(0.5);
  191.        opacity: 0;
  192.    }
  193. }
  194. .smoke-container {
  195.    position: absolute;
  196.    top: 0;
  197.    right: 0;
  198.    width: 10px;
  199.    height: 100%;
  200.    overflow: visible;
  201. }
  202. .smoke-particle {
  203.    position: absolute;
  204.    bottom: 0;
  205.    width: 4px;
  206.    height: 4px;
  207.    background: rgba(144, 238, 144, 0.7); /* 淡绿色 */
  208.    border-radius: 50%;
  209.    animation: smoke 1s infinite;
  210. }
  211. .smoke-particle:nth-child(1) {
  212.    left: 0;
  213.    animation-delay: 0s;
  214. }
  215. .smoke-particle:nth-child(2) {
  216.    left: 2px;
  217.    animation-delay: 0.2s;
  218. }
  219. .smoke-particle:nth-child(3) {
  220.    left: 4px;
  221.    animation-delay: 0.4s;
  222. }
  223. .smoke-particle:nth-child(4) {
  224.    left: 6px;
  225.    animation-delay: 0.6s;
  226. }
  227. .smoke-particle:nth-child(5) {
  228.    left: 8px;
  229.    animation-delay: 0.8s;
  230. }
  231. </style>

  232. <script>
  233. document.addEventListener('DOMContentLoaded', function() {
  234.     var downtimeCells = document.querySelectorAll('th.node-cell.name.center');
  235.     downtimeCells.forEach(function(cell) {
  236.         // 创建一个新的 <th> 元素
  237.         var newTh = document.createElement('th');
  238.         // 添加 class 属性
  239.         newTh.className = 'node-cell downtime center';
  240.         // 设置新元素的文本内容
  241.         newTh.textContent = '价格';
  242.         // 将新元素插入到当前单元格的后面
  243.         cell.parentNode.insertBefore(newTh, cell.nextSibling);
  244.     });
  245. });
  246. </script>
  247. <script>
  248. document.addEventListener('DOMContentLoaded', function() {
  249.     const affLinks = {
  250.         1: {
  251.             content: {
  252.                 type: 'text',
  253.                 value: '231 $/year'
  254.             }
  255.         },
  256.         2: {
  257.             content: {
  258.                 type: 'text',
  259.                 value: '199 ¥/year'
  260.             }
  261.         },
  262.     };

  263.     const createLink = (linkConfig) => {
  264.         const $link = document.createElement('a');
  265.         $link.href = linkConfig.value;
  266.         $link.textContent = linkConfig.label || linkConfig.value;

  267.         if (linkConfig.icon) {
  268.             const $icon = document.createElement('img');
  269.             $icon.src = linkConfig.icon;
  270.             $icon.alt = linkConfig.iconAlt || '';
  271.             $link.appendChild($icon);
  272.         }

  273.         if (linkConfig.text) {
  274.             const $text = document.createElement('span');
  275.             $text.textContent = linkConfig.text;
  276.             $link.appendChild(document.createTextNode(' '));
  277.             $link.appendChild($text);
  278.         }

  279.         return $link;
  280.     };

  281.     const createIcon = (iconConfig) => {
  282.         const $icon = document.createElement('img');
  283.         $icon.src = iconConfig.value;
  284.         $icon.alt = iconConfig.label || 'Icon';

  285.         if (iconConfig.text) {
  286.             const $text = document.createElement('span');
  287.             $text.textContent = iconConfig.text;
  288.             $icon.appendChild(document.createTextNode(' '));
  289.             $icon.appendChild($text);
  290.         }

  291.         return $icon;
  292.     };

  293.     const createCountdown = (expirationDate) => {
  294.         const $countdown = document.createElement('div');
  295.         $countdown.textContent = ' ';

  296.         const $countdownTime = document.createElement('span');

  297.         const updateCountdown = () => {
  298.             const now = new Date();
  299.             const diff = expirationDate.getTime() - now.getTime();
  300.             if (diff <= 0) {
  301.                 clearInterval(countdownInterval);
  302.                 $countdownTime.textContent = '已过期';
  303.                 return;
  304.             }

  305.             const days = Math.floor(diff / (1000 * 60 * 60 * 24));
  306.             const hours = Math.floor((diff % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
  307.             const minutes = Math.floor((diff % (1000 * 60 * 60)) / (1000 * 60));
  308.             const seconds = Math.floor((diff % (1000 * 60)) / 1000);

  309.             $countdownTime.textContent = `${days}天 ${hours}小时 ${minutes}分钟 ${seconds}秒`;
  310.         };

  311.         const countdownInterval = setInterval(updateCountdown, 1000);
  312.         updateCountdown();

  313.         $countdown.appendChild($countdownTime);

  314.         return $countdown;
  315.     };

  316.     const rows = document.querySelectorAll('tr');
  317.     rows.forEach((row, index) => {
  318.         let osCell = row.querySelector('td.node-cell.name.center');
  319.         let downtimeCell = document.createElement('td');
  320.         downtimeCell.classList.add('node-cell', 'downtime', 'center');
  321.         let nodeId = row.id.substring(1);
  322.         let affLink = affLinks[nodeId];
  323.         if (!affLink) {
  324.             affLink = {
  325.                 content: {
  326.                     type: 'text',
  327.                     value: '未定义'
  328.                 }
  329.             };
  330.         }
  331.         if (osCell && affLink && affLink.content) {
  332.             switch (affLink.content.type) {
  333.                 case 'link':
  334.                     let link = createLink(affLink.content);
  335.                     downtimeCell.appendChild(link);
  336.                     break;
  337.                 case 'icon':
  338.                     let icon = createIcon(affLink.content);
  339.                     downtimeCell.appendChild(icon);
  340.                     break;
  341.                 default:
  342.                     let text = document.createTextNode(affLink.content.value);
  343.                     downtimeCell.appendChild(text);
  344.                     break;
  345.             }

  346.             if (affLink.expiration) {
  347.                 let countdown = createCountdown(affLink.expiration);
  348.                 downtimeCell.appendChild(countdown);
  349.             }

  350.             osCell.parentNode.insertBefore(downtimeCell, osCell.nextSibling);
  351.         }
  352.     });
  353. });
  354. </script>

  355. <style>
  356. body[theme="dark"]::before {
  357.     content: "";
  358.     position: fixed;
  359.     top: 0;
  360.     left: 0;
  361.     width: 100vw;
  362.     height: 100vh;
  363.     background: url(https://pic.imgdb.cn/item/66d5c53cd9c307b7e9320564.jpg) no-repeat 50% 50%;
  364.     background-size: cover;
  365.     z-index: -1;
  366. }

  367. body[theme="dark"] {
  368.     font-family: "Helvetica Neue",Helvetica,Arial,sans-serif;
  369.     background: rgba(0, 0, 0, 0.8);
  370.     color: #f1f1f1;
  371. }

  372. body[theme="dark"]::after {
  373.     content: "";
  374.     position: fixed;
  375. }

  376. body[theme="dark"] .navbar {
  377.     background-color: rgba(0, 0, 0, 0.3);
  378.     box-shadow: none;
  379.     border: none;
  380. }

  381. body[theme="dark"] .navbar .navbar-brand {
  382.     color: #ffffff;
  383. }

  384. body[theme="dark"] .navbar .dropdown-menu {
  385.     background-color: rgba(0, 0, 0, 0.85);
  386.     border-top: none;
  387.     border-color: #31363b;
  388.     box-shadow: rgba(0, 0, 0, 0.18) 0px 6px 12px;
  389. }

  390. body[theme="dark"] .navbar .dropdown-menu > li > a {
  391.     color: #c8c3bc;
  392. }

  393. body[theme="dark"] .navbar .dropdown-menu > li > a:focus,
  394. body[theme="dark"] .navbar .dropdown-menu > li > a:hover {
  395.     background-color: rgba(0, 0, 0, 0.95);
  396.     background-image: linear-gradient(#1c1d26 0, #1c1d26 100%);
  397. }

  398. body[theme="dark"] .navbar .navbar-nav .open .dropdown-menu > li > a {
  399.     color: #f1f1f1;
  400. }

  401. body[theme="dark"] .table,
  402. body[theme="dark"] .table-condensed > tbody > tr,
  403. body[theme="dark"] .table-hover > tbody > tr,
  404. body[theme="dark"] .table-hover > tbody > tr:hover,
  405. body[theme="dark"] .table-striped tbody > tr.even,
  406. body[theme="dark"] .table-striped tbody > tr.odd,
  407. body[theme="dark"] .table-striped tbody > tr.even > td,
  408. body[theme="dark"] .table-striped tbody > tr.even > th,
  409. body[theme="dark"] .table-striped tbody > tr.odd > td,
  410. body[theme="dark"] .table-striped tbody > tr.odd > th,
  411. body[theme="dark"] .table-striped tbody > tr.even > td:hover,
  412. body[theme="dark"] .table-striped tbody > tr.even > th:hover,
  413. body[theme="dark"] .table-striped tbody > tr.odd > td:hover,
  414. body[theme="dark"] .table-striped tbody > tr.odd > th:hover,
  415. body[theme="dark"] .table-striped tbody > tr.expandRow:hover {
  416.     background-color: transparent !important;
  417. }

  418. body[theme="dark"] .content {
  419.     background-color: rgba(28, 29, 38, 0.8);
  420.     border: none;
  421.     box-shadow: rgba(0, 0, 0, 0.5) 0 0.625em 2em;
  422.     -webkit-box-shadow: rgba(0, 0, 0, 0.5) 0 0.625em 2em;
  423. }

  424. body[theme="dark"] .table > thead > tr.node-group-tag > th,
  425. body[theme="dark"] .table > thead > tr.node-group-tag > th:before {
  426.     background: unset;
  427. }

  428. body[theme="dark"] .table > tbody > tr > td:before,
  429. body[theme="dark"] .table > tfoot > tr > td:before,
  430. body[theme="dark"] .table > thead > tr > td:before,
  431. body[theme="dark"] .table > thead > tr.node-group-cell > th:before{
  432.     background-color: rgba(155, 155, 155, 0.1);
  433. }

  434. body[theme="dark"] .table-hover > tbody > tr:not(.expandRow):hover > td {
  435.     background-color: unset;
  436. }

  437. body[theme="dark"] .table > tbody > tr.expandRow.odd > td:before{
  438.     background-color: unset;
  439. }

  440. body[theme="dark"] .table > tbody > tr.expandRow.even > td:before{
  441.     background-color: unset;
  442. }

  443. body[theme="dark"] .progress {
  444.     background-image: none;
  445.     background-color: rgba(255, 255, 255, 0.075);
  446. }

  447. body[theme="light"]::before {
  448.     content: "";
  449.     position: fixed;
  450.     top: 0;
  451.     left: 0;
  452.     width: 100vw;
  453.     height: 100vh;
  454.     background: url(https://pic.imgdb.cn/item/66d5c53cd9c307b7e9320564.jpg) no-repeat 50% 50%;
  455.     background-size: cover;
  456.     z-index: -1;
  457. }

  458. body[theme="light"] {
  459.     font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
  460.     background: rgba(255, 255, 255, 0.8);
  461.     color: #333333;
  462. }

  463. body[theme="light"]::after {
  464.     content: "";
  465.     position: fixed;
  466. }

  467. body[theme="light"] .navbar {
  468.     background-color: rgba(255, 255, 255, 0.9);
  469.     box-shadow: none;
  470.     border: none;
  471. }

  472. body[theme="light"] .navbar .navbar-brand {
  473.     color: #333333;
  474. }

  475. body[theme="light"] .navbar .dropdown-menu {
  476.     background-color: rgba(255, 255, 255, 0.95);
  477.     border-top: none;
  478.     border-color: #e0e0e0;
  479.     box-shadow: rgba(0, 0, 0, 0.1) 0px 6px 12px;
  480. }

  481. body[theme="light"] .navbar .dropdown-menu > li > a {
  482.     color: #666666;
  483. }

  484. body[theme="light"] .navbar .dropdown-menu > li > a:focus,
  485. body[theme="light"] .navbar .dropdown-menu > li > a:hover {
  486.     background-color: rgba(240, 240, 240, 0.95);
  487.     background-image: linear-gradient(#fafafa 0, #fafafa 100%);
  488. }

  489. body[theme="light"] .navbar .navbar-nav .open .dropdown-menu > li > a {
  490.     color: #333333;
  491. }

  492. body[theme="light"] .navbar .navbar-nav > li > a {
  493.     color: #312828;
  494. }

  495. body[theme="light"] .navbar .navbar-nav > li > a:active {
  496.     color: #000000;
  497. }

  498. body[theme="light"] .navbar .navbar-nav > li > a:hover {
  499.     color: #000000;
  500. }

  501. body[theme="light"] .table,
  502. body[theme="light"] .table-condensed > tbody > tr,
  503. body[theme="light"] .table-hover > tbody > tr,
  504. body[theme="light"] .table-hover > tbody > tr:hover,
  505. body[theme="light"] .table-striped tbody > tr.even,
  506. body[theme="light"] .table-striped tbody > tr.odd,
  507. body[theme="light"] .table-striped tbody > tr.even > td,
  508. body[theme="light"] .table-striped tbody > tr.even > th,
  509. body[theme="light"] .table-striped tbody > tr.odd > td,
  510. body[theme="light"] .table-striped tbody > tr.odd > th,
  511. body[theme="light"] .table-striped tbody > tr.even > td:hover,
  512. body[theme="light"] .table-striped tbody > tr.even > th:hover,
  513. body[theme="light"] .table-striped tbody > tr.odd > td:hover,
  514. body[theme="light"] .table-striped tbody > tr.odd > th:hover,
  515. body[theme="light"] .table-striped tbody > tr.expandRow:hover {
  516.     background-color: transparent !important;
  517. }

  518. body[theme="light"] .content {
  519.     background-color: rgba(245, 245, 245, 0.8);
  520.     border: none;
  521.     box-shadow: rgba(0, 0, 0, 0.1) 0 0.625em 2em;
  522.     -webkit-box-shadow: rgba(0, 0, 0, 0.1) 0 0.625em 2em;
  523. }

  524. body[theme="light"] .table > thead > tr.node-group-tag > th,
  525. body[theme="light"] .table > thead > tr.node-group-tag > th:before {
  526.     background: unset;
  527. }

  528. body[theme="light"] .table > tbody > tr > td:before,
  529. body[theme="light"] .table > tfoot > tr > td:before,
  530. body[theme="light"] .table > thead > tr > td:before,
  531. body[theme="light"] .table > thead > tr.node-group-cell > th:before{
  532.     background-color: rgba(200, 200, 200, 0.1);
  533. }

  534. body[theme="light"] .table-hover > tbody > tr:not(.expandRow):hover > td {
  535.     background-color: unset;
  536. }

  537. body[theme="light"] .table > tbody > tr.expandRow.odd > td:before{
  538.     background-color: unset;
  539. }

  540. body[theme="light"] .table > tbody > tr.expandRow.even > td:before{
  541.     background-color: unset;
  542. }

  543. body[theme="light"] .progress {
  544.     background-image: none;
  545.     background-color: rgba(0, 0, 0, 0.075);
  546. }
  547. </style>
  548. <script>
  549. document.querySelector('.setTheme').addEventListener('click', function() {
  550.     var body = document.body;
  551.     if (body.getAttribute('theme') === 'dark') {
  552.         body.setAttribute('theme', 'light');
  553.     } else {
  554.         body.setAttribute('theme', 'dark');
  555.     }
  556. });
  557. </script>

  558. <span class="js-cursor-container"></span>

  559. <script src="https://fastly.jsdelivr.net/gh/stevenjoezhang/live2d-widget@latest/autoload.js"></script>

  560. <script src="https://cdn.jsdelivr.net/gh/mocchen/cssmeihua/js/xiaoxingxing.js"></script>

  561. <script src="https://cdn.jsdelivr.net/gh/mocchen/cssmeihua/js/aixin.js"></script>

  562. <script src="https://cdn.jsdelivr.net/gh/mocchen/cssmeihua/js/yinghua.js"></script>
复制代码


✍ 「老文社区」欢迎您 ...
发表于 2024-10-11 12:56:57 来自移动端 | 显示全部楼层
看帖要回,回帖才健康,在踩踩,楼主辛苦了!
✍ 「老文社区」欢迎您 ...
回复

使用道具 举报

发表于 2024-10-11 12:56:57 | 显示全部楼层
佩服佩服!
✍ 「老文社区」欢迎您 ...
回复

使用道具 举报

发表于 2024-10-11 12:56:57 来自移动端 | 显示全部楼层
打酱油的人拉,回复下赚取积分
✍ 「老文社区」欢迎您 ...
回复

使用道具 举报

发表于 2024-10-11 12:56:57 | 显示全部楼层
楼下的接上
✍ 「老文社区」欢迎您 ...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

投诉/建议联系

[email protected]

@ 本站内容如侵犯您的权益,请联系管理员删除.
© 本站内容均为会员发表,并不代表本站立场!
  • 扫码手机访问
Copyright © 2001-2024 老文社区 版权所有 All Rights Reserved. |网站地图
关灯 快速发帖
扫一扫添加微信客服
返回顶部
快速回复 返回顶部 返回列表