B2BÍøÂçÈí¼þ

 ÕÒ»ØÃÜÂë
 Á¢¼´×¢²á ÉóºËÍøÕ¾ºÅ:QQ:896757558
ËÑË÷
²é¿´: 6|»Ø¸´: 0
´òÓ¡ ÉÏÒ»Ö÷Ìâ ÏÂÒ»Ö÷Ìâ

AIWROKÆ»¹û½Å±¾H5ÈÎÎñÖ´ÐÐСÀý×Ó

[¸´ÖÆÁ´½Ó]

1053

Ö÷Ìâ

1058

Ìû×Ó

7489

»ý·Ö

abc

Rank: 9Rank: 9Rank: 9

»ý·Ö
7489
Ìø×ªµ½Ö¸¶¨Â¥²ã
Â¥Ö÷
AIWROKÆ»¹û½Å±¾H5ÈÎÎñÖ´ÐÐСÀý×Ó
AIWROKÆ»¹û½Å±¾H5ÈÎÎñÖ´ÐÐСÀý×Ó B2BÍøÂçÈí¼þ

AIWROKÆ»¹û½Å±¾H5ÈÎÎñÖ´ÐÐСÀý×Ó B2BÍøÂçÈí¼þ

AIWROKÆ»¹û½Å±¾H5ÈÎÎñÖ´ÐÐСÀý×Ó
  1. // ´´½¨ WebView ʵÀý
  2. var web = new WebView();

  3. // ÏÔʾ WebView ½çÃæ
  4. web.show();

  5. // ¼ÓÔØ±¾µØ HTML Îļþ
  6. var htmlPath = project.getCodePath() + "h5.html";
  7. web.loadFile(htmlPath);

  8. // ¶¨Òå H5 Öе÷Óõĺ¯Êý
  9. function test(arg) {
  10.     printl("ÎÒ±» H5 µ÷ÓÃÁË£¬²ÎÊýÊÇ: " + arg);
  11. }

  12. // ¶¨Òå·µ»Ø×ÀÃæµÄº¯Êý£¬¹©H5Ò³Ãæµ÷ÓÃ
  13. function returnToHome() {
  14.     printl("Ö´Ðзµ»Ø×ÀÃæ²Ù×÷");
  15.     hid.home();
  16. }

  17. // ´òÓ¡¼ÓÔØÐÅÏ¢
  18. printl("WebView ÒÑ´´½¨²¢¼ÓÔØ±¾µØÎļþ: " + htmlPath);
¸´ÖÆ´úÂë
  1. <!DOCTYPE html>
  2. <html lang="zh-CN">
  3. <head>
  4.     <meta charset="UTF-8">
  5.     <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
  6.     <meta name="apple-mobile-web-app-capable" content="yes">
  7.     <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
  8.     <title>AIWROK ÖÇÄÜÈÎÎñµ÷¶ÈÖÐÐÄ</title>
  9.     <style>
  10.         /* »ù´¡ÑùÊ½ÖØÖà */
  11.         * {
  12.             margin: 0;
  13.             padding: 0;
  14.             box-sizing: border-box;
  15.         }

  16.         /* È«¾ÖÑùʽ */
  17.         body {
  18.             font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
  19.             background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
  20.             color: #333;
  21.             min-height: 100vh;
  22.             -webkit-font-smoothing: antialiased;
  23.             -moz-osx-font-smoothing: grayscale;
  24.             position: relative;
  25.             overflow-x: hidden;
  26.         }

  27.         /* ±³¾°¶¯»­Á£×Ó */
  28.         .particles {
  29.             position: fixed;
  30.             top: 0;
  31.             left: 0;
  32.             width: 100%;
  33.             height: 100%;
  34.             pointer-events: none;
  35.             z-index: 0;
  36.             overflow: hidden;
  37.         }

  38.         .particle {
  39.             position: absolute;
  40.             width: 10px;
  41.             height: 10px;
  42.             background: rgba(255, 255, 255, 0.1);
  43.             border-radius: 50%;
  44.             animation: float 6s ease-in-out infinite;
  45.         }

  46.         .particle:nth-child(1) { left: 10%; animation-delay: 0s; }
  47.         .particle:nth-child(2) { left: 20%; animation-delay: 1s; }
  48.         .particle:nth-child(3) { left: 30%; animation-delay: 2s; }
  49.         .particle:nth-child(4) { left: 40%; animation-delay: 3s; }
  50.         .particle:nth-child(5) { left: 50%; animation-delay: 4s; }
  51.         .particle:nth-child(6) { left: 60%; animation-delay: 5s; }
  52.         .particle:nth-child(7) { left: 70%; animation-delay: 0.5s; }
  53.         .particle:nth-child(8) { left: 80%; animation-delay: 1.5s; }
  54.         .particle:nth-child(9) { left: 90%; animation-delay: 2.5s; }
  55.         .particle:nth-child(10) { left: 5%; animation-delay: 3.5s; }

  56.         @keyframes float {
  57.             0%, 100% {
  58.                 transform: translateY(100vh) rotate(0deg);
  59.                 opacity: 0;
  60.             }
  61.             10% {
  62.                 opacity: 1;
  63.             }
  64.             90% {
  65.                 opacity: 1;
  66.             }
  67.             100% {
  68.                 transform: translateY(-100vh) rotate(720deg);
  69.                 opacity: 0;
  70.             }
  71.         }

  72.         /* Ö÷ÈÝÆ÷ */
  73.         .main-container {
  74.             position: relative;
  75.             z-index: 1;
  76.             max-width: 500px;
  77.             margin: 0 auto;
  78.             padding: 20px;
  79.         }

  80.         /* Í·²¿¿¨Æ¬ */
  81.         .header-card {
  82.             background: linear-gradient(135deg, rgba(255,255,255,0.95) 0%, rgba(255,255,255,0.9) 100%);
  83.             border-radius: 24px;
  84.             padding: 24px;
  85.             margin-bottom: 20px;
  86.             box-shadow: 0 8px 32px rgba(0, 0, 0, 0.2);
  87.             backdrop-filter: blur(10px);
  88.             text-align: center;
  89.         }

  90.         .header-card h1 {
  91.             font-size: 24px;
  92.             font-weight: 800;
  93.             background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
  94.             -webkit-background-clip: text;
  95.             -webkit-text-fill-color: transparent;
  96.             background-clip: text;
  97.             margin-bottom: 8px;
  98.         }

  99.         .header-card .subtitle {
  100.             font-size: 14px;
  101.             color: #666;
  102.             margin-bottom: 12px;
  103.         }

  104.         .header-card .qq-group {
  105.             font-size: 13px;
  106.             color: #667eea;
  107.             font-weight: 600;
  108.         }

  109.         /* ͳ¼Æ¿¨Æ¬ */
  110.         .stats-container {
  111.             display: grid;
  112.             grid-template-columns: repeat(3, 1fr);
  113.             gap: 12px;
  114.             margin-bottom: 20px;
  115.         }

  116.         .stat-card {
  117.             background: rgba(255, 255, 255, 0.95);
  118.             border-radius: 16px;
  119.             padding: 16px 8px;
  120.             text-align: center;
  121.             box-shadow: 0 4px 16px rgba(0, 0, 0, 0.1);
  122.             transition: transform 0.3s ease;
  123.         }

  124.         .stat-card:hover {
  125.             transform: translateY(-4px);
  126.         }

  127.         .stat-card .number {
  128.             font-size: 28px;
  129.             font-weight: 800;
  130.             color: #667eea;
  131.             display: block;
  132.         }

  133.         .stat-card .label {
  134.             font-size: 12px;
  135.             color: #666;
  136.             margin-top: 4px;
  137.         }

  138.         /* ±êǩҳµ¼º½ */
  139.         .tab-nav {
  140.             display: flex;
  141.             background: rgba(255, 255, 255, 0.95);
  142.             border-radius: 16px;
  143.             padding: 6px;
  144.             margin-bottom: 20px;
  145.             box-shadow: 0 4px 16px rgba(0, 0, 0, 0.1);
  146.         }

  147.         .tab-btn {
  148.             flex: 1;
  149.             padding: 12px 8px;
  150.             border: none;
  151.             background: transparent;
  152.             border-radius: 12px;
  153.             font-size: 14px;
  154.             font-weight: 600;
  155.             color: #666;
  156.             cursor: pointer;
  157.             transition: all 0.3s ease;
  158.         }

  159.         .tab-btn.active {
  160.             background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
  161.             color: white;
  162.             box-shadow: 0 4px 12px rgba(102, 126, 234, 0.4);
  163.         }

  164.         /* ÄÚÈÝÇøÓò */
  165.         .content-area {
  166.             background: rgba(255, 255, 255, 0.95);
  167.             border-radius: 24px;
  168.             padding: 20px;
  169.             box-shadow: 0 8px 32px rgba(0, 0, 0, 0.2);
  170.             min-height: 400px;
  171.         }

  172.         .tab-content {
  173.             display: none;
  174.         }

  175.         .tab-content.active {
  176.             display: block;
  177.             animation: fadeIn 0.3s ease-out;
  178.         }

  179.         @keyframes fadeIn {
  180.             from { opacity: 0; transform: translateY(10px); }
  181.             to { opacity: 1; transform: translateY(0); }
  182.         }

  183.         /* ÈÎÎñÁбí */
  184.         .task-list {
  185.             list-style: none;
  186.         }

  187.         .task-item {
  188.             display: flex;
  189.             align-items: center;
  190.             padding: 16px;
  191.             background: #f8f9fa;
  192.             border-radius: 12px;
  193.             margin-bottom: 12px;
  194.             transition: all 0.3s ease;
  195.             cursor: pointer;
  196.         }

  197.         .task-item:hover {
  198.             background: #e9ecef;
  199.             transform: translateX(4px);
  200.         }

  201.         .task-item.selected {
  202.             background: linear-gradient(135deg, rgba(102, 126, 234, 0.1) 0%, rgba(118, 75, 162, 0.1) 100%);
  203.             border: 2px solid #667eea;
  204.         }

  205.         .task-checkbox {
  206.             width: 24px;
  207.             height: 24px;
  208.             margin-right: 12px;
  209.             cursor: pointer;
  210.             accent-color: #667eea;
  211.         }

  212.         .task-info {
  213.             flex: 1;
  214.         }

  215.         .task-name {
  216.             font-size: 15px;
  217.             font-weight: 600;
  218.             color: #333;
  219.             margin-bottom: 4px;
  220.         }

  221.         .task-desc {
  222.             font-size: 12px;
  223.             color: #666;
  224.         }

  225.         .task-status {
  226.             padding: 4px 12px;
  227.             border-radius: 20px;
  228.             font-size: 12px;
  229.             font-weight: 600;
  230.         }

  231.         .task-status.pending {
  232.             background: #fff3cd;
  233.             color: #856404;
  234.         }

  235.         .task-status.running {
  236.             background: #d4edda;
  237.             color: #155724;
  238.         }

  239.         .task-status.completed {
  240.             background: #d1ecf1;
  241.             color: #0c5460;
  242.         }

  243.         /* ÉèÖÃ±íµ¥ */
  244.         .settings-form {
  245.             space-y: 16px;
  246.         }

  247.         .form-group {
  248.             margin-bottom: 20px;
  249.         }

  250.         .form-label {
  251.             display: block;
  252.             font-size: 14px;
  253.             font-weight: 600;
  254.             color: #333;
  255.             margin-bottom: 8px;
  256.         }

  257.         .form-input {
  258.             width: 100%;
  259.             padding: 12px 16px;
  260.             border: 2px solid #e9ecef;
  261.             border-radius: 12px;
  262.             font-size: 15px;
  263.             transition: all 0.3s ease;
  264.         }

  265.         .form-input:focus {
  266.             outline: none;
  267.             border-color: #667eea;
  268.             box-shadow: 0 0 0 3px rgba(102, 126, 234, 0.1);
  269.         }

  270.         .form-select {
  271.             width: 100%;
  272.             padding: 12px 16px;
  273.             border: 2px solid #e9ecef;
  274.             border-radius: 12px;
  275.             font-size: 15px;
  276.             background: white;
  277.             cursor: pointer;
  278.         }

  279.         /* ¿ª¹ØÑùʽ */
  280.         .switch-container {
  281.             display: flex;
  282.             align-items: center;
  283.             justify-content: space-between;
  284.             padding: 16px;
  285.             background: #f8f9fa;
  286.             border-radius: 12px;
  287.             margin-bottom: 12px;
  288.         }

  289.         .switch-label {
  290.             font-size: 15px;
  291.             font-weight: 500;
  292.             color: #333;
  293.         }

  294.         .switch {
  295.             position: relative;
  296.             width: 52px;
  297.             height: 28px;
  298.         }

  299.         .switch input {
  300.             opacity: 0;
  301.             width: 0;
  302.             height: 0;
  303.         }

  304.         .slider {
  305.             position: absolute;
  306.             cursor: pointer;
  307.             top: 0;
  308.             left: 0;
  309.             right: 0;
  310.             bottom: 0;
  311.             background-color: #ccc;
  312.             transition: .4s;
  313.             border-radius: 28px;
  314.         }

  315.         .slider:before {
  316.             position: absolute;
  317.             content: "";
  318.             height: 20px;
  319.             width: 20px;
  320.             left: 4px;
  321.             bottom: 4px;
  322.             background-color: white;
  323.             transition: .4s;
  324.             border-radius: 50%;
  325.         }

  326.         input:checked + .slider {
  327.             background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
  328.         }

  329.         input:checked + .slider:before {
  330.             transform: translateX(24px);
  331.         }

  332.         /* °´Å¥Ñùʽ */
  333.         .btn {
  334.             width: 100%;
  335.             padding: 16px;
  336.             border: none;
  337.             border-radius: 12px;
  338.             font-size: 16px;
  339.             font-weight: 700;
  340.             cursor: pointer;
  341.             transition: all 0.3s ease;
  342.             margin-bottom: 12px;
  343.         }

  344.         .btn-primary {
  345.             background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
  346.             color: white;
  347.             box-shadow: 0 4px 16px rgba(102, 126, 234, 0.4);
  348.         }

  349.         .btn-primary:hover {
  350.             transform: translateY(-2px);
  351.             box-shadow: 0 6px 20px rgba(102, 126, 234, 0.5);
  352.         }

  353.         .btn-danger {
  354.             background: linear-gradient(135deg, #ff6b6b 0%, #ee5a6f 100%);
  355.             color: white;
  356.             box-shadow: 0 4px 16px rgba(255, 107, 107, 0.4);
  357.         }

  358.         .btn-danger:hover {
  359.             transform: translateY(-2px);
  360.             box-shadow: 0 6px 20px rgba(255, 107, 107, 0.5);
  361.         }

  362.         .btn-success {
  363.             background: linear-gradient(135deg, #51cf66 0%, #40c057 100%);
  364.             color: white;
  365.             box-shadow: 0 4px 16px rgba(81, 207, 102, 0.4);
  366.         }

  367.         .btn-success:hover {
  368.             transform: translateY(-2px);
  369.             box-shadow: 0 6px 20px rgba(81, 207, 102, 0.5);
  370.         }

  371.         .btn:disabled {
  372.             opacity: 0.6;
  373.             cursor: not-allowed;
  374.             transform: none;
  375.         }

  376.         /* ÈÕÖ¾ÇøÓò */
  377.         .log-container {
  378.             background: #1a1a2e;
  379.             border-radius: 12px;
  380.             padding: 16px;
  381.             max-height: 200px;
  382.             overflow-y: auto;
  383.             font-family: 'Courier New', monospace;
  384.             font-size: 12px;
  385.         }

  386.         .log-item {
  387.             color: #a0a0a0;
  388.             margin-bottom: 4px;
  389.             padding: 4px 0;
  390.             border-bottom: 1px solid #2a2a3e;
  391.         }

  392.         .log-item:last-child {
  393.             border-bottom: none;
  394.         }

  395.         .log-time {
  396.             color: #667eea;
  397.             margin-right: 8px;
  398.         }

  399.         .log-info { color: #4dabf7; }
  400.         .log-success { color: #51cf66; }
  401.         .log-warning { color: #ffd43b; }
  402.         .log-error { color: #ff6b6b; }

  403.         /* Toast Ìáʾ */
  404.         .toast {
  405.             position: fixed;
  406.             bottom: 100px;
  407.             left: 50%;
  408.             transform: translateX(-50%) translateY(100px);
  409.             background: rgba(0, 0, 0, 0.9);
  410.             color: white;
  411.             padding: 16px 32px;
  412.             border-radius: 50px;
  413.             font-size: 14px;
  414.             font-weight: 600;
  415.             opacity: 0;
  416.             transition: all 0.3s ease;
  417.             z-index: 9999;
  418.             box-shadow: 0 8px 32px rgba(0, 0, 0, 0.3);
  419.         }

  420.         .toast.show {
  421.             opacity: 1;
  422.             transform: translateX(-50%) translateY(0);
  423.         }

  424.         /* ¼ÓÔØ¶¯»­ */
  425.         .loading {
  426.             position: relative;
  427.         }

  428.         .loading::after {
  429.             content: '';
  430.             position: absolute;
  431.             top: 50%;
  432.             left: 50%;
  433.             width: 20px;
  434.             height: 20px;
  435.             margin: -10px 0 0 -10px;
  436.             border: 2px solid rgba(255, 255, 255, 0.3);
  437.             border-top-color: white;
  438.             border-radius: 50%;
  439.             animation: spin 1s linear infinite;
  440.         }

  441.         @keyframes spin {
  442.             to { transform: rotate(360deg); }
  443.         }

  444.         /* ÏìӦʽÉè¼Æ */
  445.         @media (max-width: 480px) {
  446.             .main-container {
  447.                 padding: 16px;
  448.             }
  449.             
  450.             .stats-container {
  451.                 grid-template-columns: repeat(3, 1fr);
  452.                 gap: 8px;
  453.             }
  454.             
  455.             .stat-card {
  456.                 padding: 12px 4px;
  457.             }
  458.             
  459.             .stat-card .number {
  460.                 font-size: 20px;
  461.             }
  462.         }
  463.     </style>
  464. </head>
  465. <body>
  466.     <!-- ±³¾°Á£×Ó -->
  467.     <div class="particles">
  468.         <div class="particle"></div>
  469.         <div class="particle"></div>
  470.         <div class="particle"></div>
  471.         <div class="particle"></div>
  472.         <div class="particle"></div>
  473.         <div class="particle"></div>
  474.         <div class="particle"></div>
  475.         <div class="particle"></div>
  476.         <div class="particle"></div>
  477.         <div class="particle"></div>
  478.     </div>

  479.     <div class="main-container">
  480.         <!-- Í·²¿¿¨Æ¬ -->
  481.         <div class="header-card">
  482.             <h1>ÖÇÄÜÈÎÎñµ÷¶ÈÖÐÐÄ</h1>
  483.             <div class="subtitle">AIWROK ×Ô¶¯»¯ÈÎÎñ¹ÜÀíϵͳ</div>
  484.             <div class="qq-group">&#127822;½»Á÷QQȺ711841924Ⱥһ£¬Æ»¹ûÄÚ²âȺ£¬528816639</div>
  485.         </div>

  486.         <!-- ͳ¼Æ¿¨Æ¬ -->
  487.         <div class="stats-container">
  488.             <div class="stat-card">
  489.                 <span class="number" id="pendingCount">0</span>
  490.                 <div class="label">´ýÖ´ÐÐ</div>
  491.             </div>
  492.             <div class="stat-card">
  493.                 <span class="number" id="runningCount">0</span>
  494.                 <div class="label">Ö´ÐÐÖÐ</div>
  495.             </div>
  496.             <div class="stat-card">
  497.                 <span class="number" id="completedCount">0</span>
  498.                 <div class="label">ÒÑÍê³É</div>
  499.             </div>
  500.         </div>

  501.         <!-- ±êǩҳµ¼º½ -->
  502.         <div class="tab-nav">
  503.             <button class="tab-btn active" onclick="switchTab('tasks')">ÈÎÎñÁбí</button>
  504.             <button class="tab-btn" onclick="switchTab('settings')">ϵͳÉèÖÃ</button>
  505.             <button class="tab-btn" onclick="switchTab('logs')">ÔËÐÐÈÕÖ¾</button>
  506.         </div>

  507.         <!-- ÄÚÈÝÇøÓò -->
  508.         <div class="content-area">
  509.             <!-- ÈÎÎñÁбí -->
  510.             <div id="tasks-tab" class="tab-content active">
  511.                 <ul class="task-list" id="taskList">
  512.                     <!-- ÈÎÎñÏͨ¹ýJS¶¯Ì¬Éú³É -->
  513.                 </ul>
  514.                 <button class="btn btn-primary" onclick="executeSelectedTasks()">
  515.                     Ö´ÐÐÑ¡ÖÐÈÎÎñ
  516.                 </button>
  517.                 <button class="btn btn-danger" onclick="clearAllTasks()">
  518.                     Çå¿ÕËùÓÐÈÎÎñ
  519.                 </button>
  520.             </div>

  521.             <!-- ϵͳÉèÖà -->
  522.             <div id="settings-tab" class="tab-content">
  523.                 <div class="settings-form">
  524.                     <div class="form-group">
  525.                         <label class="form-label">ÔËÐмä¸ô (Ãë)</label>
  526.                         <input type="number" class="form-input" id="intervalInput" value="5" min="1" max="60">
  527.                     </div>
  528.                     
  529.                     <div class="form-group">
  530.                         <label class="form-label">×î´óÖØÊÔ´ÎÊý</label>
  531.                         <input type="number" class="form-input" id="retryInput" value="3" min="1" max="10">
  532.                     </div>

  533.                     <div class="form-group">
  534.                         <label class="form-label">Ö´ÐÐģʽ</label>
  535.                         <select class="form-select" id="modeSelect">
  536.                             <option value="serial">˳ÐòÖ´ÐÐ</option>
  537.                             <option value="parallel">²¢ÐÐÖ´ÐÐ</option>
  538.                             <option value="smart">ÖÇÄܵ÷¶È</option>
  539.                         </select>
  540.                     </div>

  541.                     <div class="switch-container">
  542.                         <span class="switch-label">ÈÎÎñÍê³Éºó·µ»Ø×ÀÃæ</span>
  543.                         <label class="switch">
  544.                             <input type="checkbox" id="autoReturn" checked>
  545.                             <span class="slider"></span>
  546.                         </label>
  547.                     </div>

  548.                     <div class="switch-container">
  549.                         <span class="switch-label">×Ô¶¯ÇåÀí»º´æ</span>
  550.                         <label class="switch">
  551.                             <input type="checkbox" id="autoClean" checked>
  552.                             <span class="slider"></span>
  553.                         </label>
  554.                     </div>

  555.                     <div class="switch-container">
  556.                         <span class="switch-label">ºǫ́ÔËÐÐ</span>
  557.                         <label class="switch">
  558.                             <input type="checkbox" id="backgroundRun">
  559.                             <span class="slider"></span>
  560.                         </label>
  561.                     </div>

  562.                     <div class="switch-container">
  563.                         <span class="switch-label">´íÎó×Ô¶¯ÖØÊÔ</span>
  564.                         <label class="switch">
  565.                             <input type="checkbox" id="autoRetry" checked>
  566.                             <span class="slider"></span>
  567.                         </label>
  568.                     </div>

  569.                     <button class="btn btn-success" onclick="saveSettings()">
  570.                         ±£´æÉèÖÃ
  571.                     </button>
  572.                 </div>
  573.             </div>

  574.             <!-- ÔËÐÐÈÕÖ¾ -->
  575.             <div id="logs-tab" class="tab-content">
  576.                 <div class="log-container" id="logContainer">
  577.                     <div class="log-item">
  578.                         <span class="log-time">[ϵͳ]</span>
  579.                         <span class="log-info">ÈÎÎñµ÷¶ÈÖÐÐÄÒÑÆô¶¯</span>
  580.                     </div>
  581.                 </div>
  582.                 <button class="btn btn-primary" onclick="clearLogs()">
  583.                     Çå¿ÕÈÕÖ¾
  584.                 </button>
  585.             </div>
  586.         </div>
  587.     </div>

  588.     <!-- Toast Ìáʾ -->
  589.     <div class="toast" id="toast"></div>

  590.     <script>
  591.         // ÈÎÎñÊý¾Ý
  592.         const tasksData = [
  593.             { id: 1, name: '¶¶Òô¼«ËÙ°æ', desc: '×Ô¶¯Ë¢ÊÓÆµ×¬½ð±Ò', status: 'pending' },
  594.             { id: 2, name: '¿ìÊÖ¼«ËÙ°æ', desc: '×Ô¶¯ä¯ÀÀÈÎÎñ', status: 'pending' },
  595.             { id: 3, name: '·¬ÇÑС˵', desc: '×Ô¶¯ÔĶÁ׬½ð±Ò', status: 'pending' },
  596.             { id: 4, name: '·¬Çѳ©Ìý', desc: '×Ô¶¯ÌýÊéÈÎÎñ', status: 'pending' },
  597.             { id: 5, name: 'ºì¹û¶Ì¾ç', desc: '×Ô¶¯Ë¢¶Ì¾ç', status: 'pending' },
  598.             { id: 6, name: 'Îò¿Õä¯ÀÀÆ÷', desc: '×Ô¶¯ä¯ÀÀ×ÊѶ', status: 'pending' },
  599.             { id: 7, name: 'Î÷¹ÏÊÓÆµ', desc: '×Ô¶¯¿´ÊÓÆµ×¬½ð±Ò', status: 'pending' },
  600.             { id: 8, name: '½ñÈÕÍ·Ìõ', desc: '×Ô¶¯ÔĶÁÐÂÎÅ', status: 'pending' },
  601.             { id: 9, name: 'ϲ·¬¶Ì¾ç', desc: '×Ô¶¯Ë¢¶Ì¾çÈÎÎñ', status: 'pending' },
  602.             { id: 10, name: 'ÆûË®ÒôÀÖ', desc: '×Ô¶¯Ìý¸è׬½ð±Ò', status: 'pending' }
  603.         ];

  604.         // µ±Ç°Ñ¡ÖеÄÈÎÎñ
  605.         let selectedTasks = new Set();

  606.         // ³õʼ»¯
  607.         function init() {
  608.             renderTaskList();
  609.             updateStats();
  610.             addLog('ϵͳ³õʼ»¯Íê³É', 'info');
  611.         }

  612.         // äÖȾÈÎÎñÁбí
  613.         function renderTaskList() {
  614.             const taskList = document.getElementById('taskList');
  615.             taskList.innerHTML = '';

  616.             tasksData.forEach(task => {
  617.                 const li = document.createElement('li');
  618.                 li.className = 'task-item' + (selectedTasks.has(task.id) ? ' selected' : '');
  619.                 li.onclick = function(e) {
  620.                     if (e.target.type !== 'checkbox') {
  621.                         toggleTaskSelection(task.id);
  622.                     }
  623.                 };

  624.                 const statusClass = task.status;
  625.                 const statusText = {
  626.                     'pending': '´ýÖ´ÐÐ',
  627.                     'running': 'Ö´ÐÐÖÐ',
  628.                     'completed': 'ÒÑÍê³É'
  629.                 }[task.status];

  630.                 li.innerHTML = `
  631.                     <input type="checkbox" class="task-checkbox"
  632.                            ${selectedTasks.has(task.id) ? 'checked' : ''}
  633.                            onchange="toggleTaskSelection(${task.id})">
  634.                     <div class="task-info">
  635.                         <div class="task-name">${task.name}</div>
  636.                         <div class="task-desc">${task.desc}</div>
  637.                     </div>
  638.                     <span class="task-status ${statusClass}">${statusText}</span>
  639.                 `;

  640.                 taskList.appendChild(li);
  641.             });
  642.         }

  643.         // Çл»ÈÎÎñÑ¡Ôñ
  644.         function toggleTaskSelection(taskId) {
  645.             if (selectedTasks.has(taskId)) {
  646.                 selectedTasks.delete(taskId);
  647.             } else {
  648.                 selectedTasks.add(taskId);
  649.             }
  650.             renderTaskList();
  651.         }

  652.         // ¸üÐÂͳ¼Æ
  653.         function updateStats() {
  654.             const pending = tasksData.filter(t => t.status === 'pending').length;
  655.             const running = tasksData.filter(t => t.status === 'running').length;
  656.             const completed = tasksData.filter(t => t.status === 'completed').length;

  657.             document.getElementById('pendingCount').textContent = pending;
  658.             document.getElementById('runningCount').textContent = running;
  659.             document.getElementById('completedCount').textContent = completed;
  660.         }

  661.         // Çл»±êǩҳ
  662.         function switchTab(tabName) {
  663.             // ¸üа´Å¥×´Ì¬
  664.             document.querySelectorAll('.tab-btn').forEach(btn => {
  665.                 btn.classList.remove('active');
  666.             });
  667.             event.target.classList.add('active');

  668.             // ¸üÐÂÄÚÈÝÏÔʾ
  669.             document.querySelectorAll('.tab-content').forEach(content => {
  670.                 content.classList.remove('active');
  671.             });
  672.             document.getElementById(tabName + '-tab').classList.add('active');

  673.             addLog('Çл»µ½' + tabName + 'Ò³Ãæ', 'info');
  674.         }

  675.         // Ö´ÐÐÑ¡ÖеÄÈÎÎñ
  676.         function executeSelectedTasks() {
  677.             if (selectedTasks.size === 0) {
  678.                 showToast('ÇëÏÈÑ¡ÔñÒªÖ´ÐеÄÈÎÎñ');
  679.                 return;
  680.             }

  681.             const btn = event.target;
  682.             btn.classList.add('loading');
  683.             btn.disabled = true;

  684.             showToast('¿ªÊ¼Ö´ÐÐ ' + selectedTasks.size + ' ¸öÈÎÎñ');
  685.             addLog('¿ªÊ¼Ö´ÐÐ ' + selectedTasks.size + ' ¸öÈÎÎñ', 'info');

  686.             // Ä£ÄâÈÎÎñÖ´ÐÐ
  687.             let completed = 0;
  688.             selectedTasks.forEach(taskId => {
  689.                 const task = tasksData.find(t => t.id === taskId);
  690.                 if (task) {
  691.                     task.status = 'running';
  692.                     addLog('¿ªÊ¼Ö´ÐÐ: ' + task.name, 'info');
  693.                 }
  694.             });

  695.             renderTaskList();
  696.             updateStats();

  697.             // Ä£ÄâÖ´ÐÐÍê³É
  698.             setTimeout(function() {
  699.                 selectedTasks.forEach(taskId => {
  700.                     const task = tasksData.find(t => t.id === taskId);
  701.                     if (task) {
  702.                         task.status = 'completed';
  703.                         completed++;
  704.                         addLog('Íê³É: ' + task.name, 'success');
  705.                     }
  706.                 });

  707.                 selectedTasks.clear();
  708.                 renderTaskList();
  709.                 updateStats();

  710.                 btn.classList.remove('loading');
  711.                 btn.disabled = false;

  712.                 showToast('ÈÎÎñÖ´ÐÐÍê³É');
  713.                 addLog('ËùÓÐÈÎÎñÖ´ÐÐÍê³É', 'success');

  714.                 // ¼ì²éÊÇ·ñÐèÒª·µ»Ø×ÀÃæ
  715.                 const autoReturn = document.getElementById('autoReturn').checked;
  716.                 if (autoReturn) {
  717.                     setTimeout(function() {
  718.                         showToast('ÕýÔÚ·µ»Ø×ÀÃæ');
  719.                         addLog('ÈÎÎñÍê³É£¬·µ»Ø×ÀÃæ', 'info');
  720.                         
  721.                         // ³¢ÊÔ²»Í¬·½Ê½µ÷Ó÷µ»Ø×ÀÃæ
  722.                         let success = false;
  723.                         
  724.                         // ·½Ê½1£ºÖ±½Óµ÷ÓÃhid.home()
  725.                         try {
  726.                             if (typeof hid !== 'undefined' && typeof hid.home === 'function') {
  727.                                 hid.home();
  728.                                 addLog('Òѵ÷Óà hid.home() ·µ»Ø×ÀÃæ', 'success');
  729.                                 success = true;
  730.                             }
  731.                         } catch (e) {}
  732.                         
  733.                         // ·½Ê½2£ºµ÷ÓÃÈ«¾Öhome()º¯Êý
  734.                         if (!success) {
  735.                             try {
  736.                                 if (typeof home === 'function') {
  737.                                     home();
  738.                                     addLog('Òѵ÷Óà home() ·µ»Ø×ÀÃæ', 'success');
  739.                                     success = true;
  740.                                 }
  741.                             } catch (e) {}
  742.                         }
  743.                         
  744.                         // ·½Ê½3£ºµ÷ÓÃwindow.home()
  745.                         if (!success) {
  746.                             try {
  747.                                 if (typeof window !== 'undefined' && typeof window.home === 'function') {
  748.                                     window.home();
  749.                                     addLog('Òѵ÷Óà window.home() ·µ»Ø×ÀÃæ', 'success');
  750.                                     success = true;
  751.                                 }
  752.                             } catch (e) {}
  753.                         }
  754.                         
  755.                         // ·½Ê½4£ºµ÷ÓÃwindow.hid.home()
  756.                         if (!success) {
  757.                             try {
  758.                                 if (typeof window !== 'undefined' && window.hid && typeof window.hid.home === 'function') {
  759.                                     window.hid.home();
  760.                                     addLog('Òѵ÷Óà window.hid.home() ·µ»Ø×ÀÃæ', 'success');
  761.                                     success = true;
  762.                                 }
  763.                             } catch (e) {}
  764.                         }
  765.                         
  766.                         // ·½Ê½5£ºÊ¹ÓÃevalµ÷ÓÃ
  767.                         if (!success) {
  768.                             try {
  769.                                 eval('hid.home()');
  770.                                 addLog('Òѵ÷Óà eval(hid.home()) ·µ»Ø×ÀÃæ', 'success');
  771.                                 success = true;
  772.                             } catch (e) {}
  773.                         }
  774.                         
  775.                         // ·½Ê½6£ºÊ¹ÓÃÈ«¾Ö¶ÔÏóµ÷ÓÃ
  776.                         if (!success) {
  777.                             try {
  778.                                 // ³¢ÊÔʹÓÃÈ«¾Ö¶ÔÏó
  779.                                 const globalObj = (function() { return this; })();
  780.                                 if (globalObj && globalObj.hid && typeof globalObj.hid.home === 'function') {
  781.                                     globalObj.hid.home();
  782.                                     addLog('Òѵ÷Óà globalObj.hid.home() ·µ»Ø×ÀÃæ', 'success');
  783.                                     success = true;
  784.                                 }
  785.                             } catch (e) {}
  786.                         }
  787.                         
  788.                         // Èç¹ûËùÓз½Ê½¶¼Ê§°Ü
  789.                         if (!success) {
  790.                             addLog('·µ»Ø×ÀÃæ¹¦ÄÜÔݲ»¿ÉÓã¬ÇëÈ·±£ÔÚAIWROK»·¾³ÖÐÔËÐÐ', 'warning');
  791.                             showToast('·µ»Ø×ÀÃæ¹¦ÄÜÔݲ»¿ÉÓÃ');
  792.                         }
  793.                     }, 1000);
  794.                 }
  795.             }, 2000);
  796.         }

  797.         // Çå¿ÕËùÓÐÈÎÎñ
  798.         function clearAllTasks() {
  799.             if (!confirm('È·¶¨ÒªÇå¿ÕËùÓÐÈÎÎñ״̬Âð£¿')) {
  800.                 return;
  801.             }

  802.             tasksData.forEach(task => {
  803.                 task.status = 'pending';
  804.             });
  805.             selectedTasks.clear();
  806.             renderTaskList();
  807.             updateStats();

  808.             showToast('ËùÓÐÈÎÎñÒÑÖØÖÃ');
  809.             addLog('ËùÓÐÈÎÎñ״̬ÒÑÖØÖÃ', 'warning');
  810.         }

  811.         // ±£´æÉèÖÃ
  812.         function saveSettings() {
  813.             const settings = {
  814.                 interval: document.getElementById('intervalInput').value,
  815.                 retry: document.getElementById('retryInput').value,
  816.                 mode: document.getElementById('modeSelect').value,
  817.                 autoClean: document.getElementById('autoClean').checked,
  818.                 backgroundRun: document.getElementById('backgroundRun').checked,
  819.                 autoRetry: document.getElementById('autoRetry').checked
  820.             };

  821.             const btn = event.target;
  822.             btn.classList.add('loading');
  823.             btn.disabled = true;

  824.             setTimeout(function() {
  825.                 btn.classList.remove('loading');
  826.                 btn.disabled = false;

  827.                 showToast('ÉèÖñ£´æ³É¹¦');
  828.                 addLog('ϵͳÉèÖÃÒѱ£´æ: ' + JSON.stringify(settings), 'success');
  829.             }, 1000);
  830.         }

  831.         // Çå¿ÕÈÕÖ¾
  832.         function clearLogs() {
  833.             document.getElementById('logContainer').innerHTML = `
  834.                 <div class="log-item">
  835.                     <span class="log-time">[ϵͳ]</span>
  836.                     <span class="log-info">ÈÕÖ¾ÒÑÇå¿Õ</span>
  837.                 </div>
  838.             `;
  839.             showToast('ÈÕÖ¾ÒÑÇå¿Õ');
  840.         }

  841.         // Ìí¼ÓÈÕÖ¾
  842.         function addLog(message, type) {
  843.             const container = document.getElementById('logContainer');
  844.             const time = new Date().toLocaleTimeString();
  845.             const typeClass = 'log-' + type;

  846.             const logItem = document.createElement('div');
  847.             logItem.className = 'log-item';
  848.             logItem.innerHTML = `
  849.                 <span class="log-time">[${time}]</span>
  850.                 <span class="${typeClass}">${message}</span>
  851.             `;

  852.             container.appendChild(logItem);
  853.             container.scrollTop = container.scrollHeight;
  854.         }

  855.         // Toast Ìáʾ
  856.         function showToast(message) {
  857.             const toast = document.getElementById('toast');
  858.             toast.textContent = message;
  859.             toast.classList.add('show');

  860.             setTimeout(function() {
  861.                 toast.classList.remove('show');
  862.             }, 2000);
  863.         }

  864.         // Ò³Ãæ¼ÓÔØÍê³É
  865.         window.onload = function() {
  866.             init();
  867.             showToast('ÖÇÄÜÈÎÎñµ÷¶ÈÖÐÐÄÒÑÆô¶¯');
  868.             
  869.             // °ó¶¨ËùÓÐʼþ
  870.             bindAllEvents();
  871.         };

  872.         // °ó¶¨ËùÓÐʼþ
  873.         function bindAllEvents() {
  874.             // ÊäÈë¿òʼþ
  875.             bindInputEvents();
  876.             
  877.             // ¿ª¹ØÊ¼þ
  878.             bindSwitchEvents();
  879.             
  880.             // ÏÂÀ­²Ëµ¥Ê¼þ
  881.             bindSelectEvents();
  882.             
  883.             // ¼üÅÌʼþ
  884.             bindKeyboardEvents();
  885.             
  886.             // ´°¿Úʼþ
  887.             bindWindowEvents();
  888.         }

  889.         // °ó¶¨ÊäÈë¿òʼþ
  890.         function bindInputEvents() {
  891.             const inputs = document.querySelectorAll('.form-input');
  892.             inputs.forEach(input => {
  893.                 input.addEventListener('input', function() {
  894.                     addLog('ÉèÖÃÒѸüÐÂ: ' + this.id + ' = ' + this.value, 'info');
  895.                 });
  896.                
  897.                 input.addEventListener('focus', function() {
  898.                     this.style.borderColor = '#667eea';
  899.                     this.style.boxShadow = '0 0 0 3px rgba(102, 126, 234, 0.1)';
  900.                 });
  901.                
  902.                 input.addEventListener('blur', function() {
  903.                     this.style.borderColor = '#e9ecef';
  904.                     this.style.boxShadow = 'none';
  905.                 });
  906.             });
  907.         }

  908.         // °ó¶¨¿ª¹ØÊ¼þ
  909.         function bindSwitchEvents() {
  910.             const switches = document.querySelectorAll('.switch input[type="checkbox"]');
  911.             switches.forEach(switchEl => {
  912.                 switchEl.addEventListener('change', function() {
  913.                     const label = this.closest('.switch-container').querySelector('.switch-label').textContent;
  914.                     addLog('ÉèÖÃÒѸüÐÂ: ' + label + ' = ' + (this.checked ? '¿ªÆô' : '¹Ø±Õ'), 'info');
  915.                 });
  916.             });
  917.         }

  918.         // °ó¶¨ÏÂÀ­²Ëµ¥Ê¼þ
  919.         function bindSelectEvents() {
  920.             const selects = document.querySelectorAll('.form-select');
  921.             selects.forEach(select => {
  922.                 select.addEventListener('change', function() {
  923.                     addLog('ÉèÖÃÒѸüÐÂ: ' + this.id + ' = ' + this.value, 'info');
  924.                 });
  925.                
  926.                 select.addEventListener('focus', function() {
  927.                     this.style.borderColor = '#667eea';
  928.                     this.style.boxShadow = '0 0 0 3px rgba(102, 126, 234, 0.1)';
  929.                 });
  930.                
  931.                 select.addEventListener('blur', function() {
  932.                     this.style.borderColor = '#e9ecef';
  933.                     this.style.boxShadow = 'none';
  934.                 });
  935.             });
  936.         }

  937.         // °ó¶¨¼üÅÌʼþ
  938.         function bindKeyboardEvents() {
  939.             document.addEventListener('keydown', function(e) {
  940.                 // °´ Enter ¼üÖ´ÐÐÑ¡ÖÐÈÎÎñ
  941.                 if (e.key === 'Enter' && document.getElementById('tasks-tab').classList.contains('active')) {
  942.                     const selectedCount = selectedTasks.size;
  943.                     if (selectedCount > 0) {
  944.                         executeSelectedTasks();
  945.                     }
  946.                 }
  947.                
  948.                 // °´ Escape ¼üÇå¿ÕÑ¡Ôñ
  949.                 if (e.key === 'Escape') {
  950.                     selectedTasks.clear();
  951.                     renderTaskList();
  952.                     addLog('ÒÑÇå¿ÕÈÎÎñÑ¡Ôñ', 'info');
  953.                 }
  954.             });
  955.         }

  956.         // °ó¶¨´°¿Úʼþ
  957.         function bindWindowEvents() {
  958.             // ´°¿Ú´óС±ä»¯Ê¼þ
  959.             window.addEventListener('resize', function() {
  960.                 addLog('´°¿Ú´óСÒѱ仯', 'info');
  961.             });
  962.             
  963.             // Ò³Ãæ¿É¼ûÐԱ仯ʼþ
  964.             document.addEventListener('visibilitychange', function() {
  965.                 if (document.hidden) {
  966.                     addLog('Ò³ÃæÒÑÒþ²Ø', 'info');
  967.                 } else {
  968.                     addLog('Ò³ÃæÒÑÏÔʾ', 'info');
  969.                 }
  970.             });
  971.         }
  972.     </script>
  973. </body>
  974. </html>
¸´ÖÆ´úÂë


»Ø¸´

ʹÓõÀ¾ß ¾Ù±¨

±¾°æ»ý·Ö¹æÔò

¹Ø±Õ

QQ|»ÓªÏúÈí¼þ×ÛºÏÌÖÂÛ|»ÓªÏúÈí¼þÓÐÎʱشð|»ÓªÏúÈí¼þ½Ì³Ì×¨Çø|»ÓªÏúÈí¼þPOST½Å±¾·ÖÏí|»ÓªÏúÈí¼þÆÕͨ½Å±¾·ÖÏí|»ÓªÏúÈí¼þÈí¼þ×ÊѶ|»ÓªÏúÈí¼þ¾«Æ·Èí¼þ|»ÓªÏúÈí¼þ¸üй«¸æ|ÓªÏúÈí¼þ|B2BÈí¼þ|B2BÍøÂçÈí¼þ ( ¾©ICP±¸09078825ºÅ )±¾ÍøÕ¾¿ª·¢µÄÓªÏúÈí¼þÊÇÒ»¿îеÄÍøÂçÓªÏúÈí¼þ£¬Õâ¿îÓªÏú¿ÉÒÔÈ¥ÍøÕ¾Èí¼þ£¬²©¿ÍÈí¼þ£¬B2BÈí¼þ£¬·ÖÀàÐÅÏ¢Íø·¢Ìù£¬¿ÉÒÔÇÀɳ·¢£¬¿ÉÒÔµ½°Ù¶ÈÎÄ¿âÉÏ´«WORDÎĵµ£¬¿ÉÒÔµ½Ò»Ð©ÊÇÏà²áÍøÕ¾×Ô¶¯ÉÏ´«Í¼Æ¬£¬Õâ¸ö×Ô¶¯·¢ÌûÈí¼þ×Ô´øÔÆÖ©Ö룬¼Ó¿ìÊÕ¼£¬ÓÐ6ÖÖ¶Ô½Ó´òÂë½Ó¿Ú£¬·½±ã£¬Ð§Âʸߣ¬Ëٶȿ죬¶øÇÒ¶ÔÍ϶¯µÄÑéÖ¤ÂëÈ«ÍøµÚÒ»¼Ò¶À¼ÒÖ§³Ö£¬È«²¿Ô­´´¼¼Êõ£¬¶À¼ÒÑз¢£¬Õý°æÔ­´´´ø°æÈ¨Èí¼þ¡£Ñ¡ÔñÍòÄÜÓªÏúÈí¼þ£¬¾ÍÑ¡ÔñÁËÒ»ÖÖ׬ǮµÄЧÂÊ£¬´ÓûÓб»³¬Ô½¹ý£¬Ò»Ö±ÔÚŬÁ¦Ñз¢Ð¼¼Êõ¡£·Å·ÉÃÎÏ룬½â·ÅË«ÊÖ£¬À´µã´´Ò⣬³É¾ÍÄãµÄÃÎÏ룬¾ÍÔÚÍòÄÜÓªÏúÈí¼þ¿ªÊ¼

map2

GMT+8, 2026-3-6 11:10 , Processed in 0.129603 second(s), 33 queries .

¿ìËٻظ´ ·µ»Ø¶¥²¿ ·µ»ØÁбí