{"id":2639,"date":"2026-09-02T12:24:04","date_gmt":"2026-09-02T04:24:04","guid":{"rendered":"https:\/\/hkppp.com\/?page_id=2639"},"modified":"2026-09-02T12:54:55","modified_gmt":"2026-09-02T04:54:55","slug":"2639-2","status":"publish","type":"page","link":"https:\/\/hkppp.com\/?page_id=2639","title":{"rendered":""},"content":{"rendered":"        <style>\n            :root { --p-color: #007bff; --s-color: #28a745; --d-color: #dc3545; --bg: #f8f9fa; }\n            #drv-app { max-width: 600px; margin: 0 auto; font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif; background: #fff; border-radius: 12px; box-shadow: 0 4px 15px rgba(0,0,0,0.1); overflow: hidden; }\n            .drv-header { background: #343a40; color: #fff; padding: 15px 20px; text-align: center; font-size: 1.2rem; font-weight: bold; }\n            .drv-body { padding: 20px; background: var(--bg); min-height: 80vh; }\n            .drv-card { background: #fff; border-radius: 10px; padding: 15px; margin-bottom: 15px; box-shadow: 0 2px 5px rgba(0,0,0,0.05); border: 1px solid #eee; }\n            .drv-card h4 { margin: 0 0 10px 0; font-size: 1.1rem; color: #333; display: flex; justify-content: space-between; }\n            .drv-card p { margin: 5px 0; color: #555; font-size: 0.95rem; }\n            .drv-btn-group { display: flex; gap: 8px; margin-top: 15px; }\n            .drv-btn { flex: 1; padding: 10px; text-align: center; border-radius: 6px; text-decoration: none; font-weight: bold; font-size: 0.9rem; border: none; cursor: pointer; display: inline-block; }\n            .btn-wa { background: #25D366; color: #fff; }\n            .btn-call { background: #17a2b8; color: #fff; }\n            .btn-map { background: #ffc107; color: #333; }\n            .btn-ok { background: var(--s-color); color: #fff; }\n            .btn-fail { background: var(--d-color); color: #fff; }\n            .form-control { width: 100%; padding: 10px; margin: 8px 0; border: 1px solid #ccc; border-radius: 6px; box-sizing: border-box; }\n            .action-form { background: #f1f3f5; padding: 15px; border-radius: 8px; margin-top: 10px; display: none; }\n            #login-screen { text-align: center; padding: 40px 20px; }\n        <\/style>\n\n        <div id=\"drv-app\">\n            <div class=\"drv-header\" id=\"app-header\">\ud83d\ude9b \u53f8\u6a5f\u914d\u9001\u7cfb\u7d71<\/div>\n            <div class=\"drv-body\" id=\"app-body\">\n                \n                <!-- \u767b\u5165\u756b\u9762 -->\n                <div id=\"login-screen\">\n                    <h3 style=\"margin-bottom:20px;\">\u8acb\u9078\u64c7\u8eca\u8f1b\u4e26\u767b\u5165<\/h3>\n                    <select id=\"login-vehicle\" class=\"form-control\" style=\"font-size:1.1rem;\">\n                        <option value=\"\">-- \u9078\u64c7\u8eca\u724c --<\/option>\n                        <option value=\"2645\">BK8888<\/option>                    <\/select>\n                    <input type=\"password\" id=\"login-pin\" class=\"form-control\" placeholder=\"\u8acb\u8f38\u5165 4 \u4f4d\u6578 PIN \u78bc\" style=\"font-size:1.1rem; text-align:center;\">\n                    <button onclick=\"drvLogin()\" class=\"drv-btn\" style=\"background:#007bff; color:#fff; width:100%; margin-top:15px; font-size:1.1rem;\">\u767b\u5165\u7cfb\u7d71<\/button>\n                    <p id=\"login-msg\" style=\"color:red; margin-top:10px;\"><\/p>\n                <\/div>\n\n                <!-- \u8a02\u55ae\u756b\u9762 (\u900f\u904e AJAX \u8f09\u5165) -->\n                <div id=\"orders-screen\" style=\"display:none;\">\n                    <div style=\"display:flex; justify-content:space-between; align-items:center; margin-bottom:15px;\">\n                        <h3 style=\"margin:0;\">\ud83d\udce6 \u4eca\u65e5\u5f85\u9001<\/h3>\n                        <button onclick=\"location.reload()\" style=\"background:transparent; border:none; font-size:1.5rem; cursor:pointer;\">\ud83d\udd04<\/button>\n                    <\/div>\n                    <div id=\"orders-list\"><\/div>\n                <\/div>\n\n            <\/div>\n        <\/div>\n\n        <script>\n        const ajaxUrl = 'https:\/\/hkppp.com\/wp-admin\/admin-ajax.php';\n        let currentVehicle = '';\n\n        function drvLogin() {\n            let vid = document.getElementById('login-vehicle').value;\n            let pin = document.getElementById('login-pin').value;\n            if(!vid || !pin) return alert('\u8acb\u9078\u64c7\u8eca\u8f1b\u4e26\u8f38\u5165\u5bc6\u78bc');\n            \n            let fd = new FormData();\n            fd.append('action', 'driver_login');\n            fd.append('vid', vid);\n            fd.append('pin', pin);\n\n            fetch(ajaxUrl, { method: 'POST', body: fd })\n            .then(res => res.json())\n            .then(data => {\n                if(data.success) {\n                    document.getElementById('login-screen').style.display = 'none';\n                    document.getElementById('orders-screen').style.display = 'block';\n                    document.getElementById('app-header').innerText = '\ud83d\ude9b \u8eca\u865f: ' + data.data.vehicle_name;\n                    renderOrders(data.data.orders);\n                } else {\n                    document.getElementById('login-msg').innerText = data.data;\n                }\n            });\n        }\n\n        function renderOrders(orders) {\n            let html = '';\n            if(orders.length === 0) html = '<p style=\"text-align:center; padding:30px; color:#666;\">\ud83c\udf89 \u76ee\u524d\u7121\u5f85\u9001\u8a02\u55ae<\/p>';\n            \n            orders.forEach(o => {\n                let mapUrl = 'https:\/\/www.google.com\/maps\/search\/?api=1&query=' + encodeURIComponent(o.address);\n                let waUrl = 'https:\/\/wa.me\/' + o.phone.replace(\/[^0-9]\/g, '') + '?text=' + encodeURIComponent('\u60a8\u597d\uff0c\u6211\u662f\u9001\u8ca8\u54e1\uff0c\u95dc\u65bc\u60a8\u7684\u5305\u88f9...\u865f\u78bc: ' + o.title);\n                let telUrl = 'tel:' + o.phone.replace(\/[^0-9]\/g, '');\n\n                html += `\n                <div class=\"drv-card\" id=\"card-${o.id}\">\n                    <h4><span>#${o.title}<\/span> <span style=\"color:#007bff; font-size:0.9rem;\">\u5f85\u914d\u9001<\/span><\/h4>\n                    <p><strong>\ud83d\udc64 \u5ba2\u6236\uff1a<\/strong> ${o.name} (${o.phone})<\/p>\n                    <p><strong>\ud83d\udccd \u5730\u5740\uff1a<\/strong> ${o.address}<\/p>\n                    \n                    <div class=\"drv-btn-group\">\n                        <a href=\"${telUrl}\" class=\"drv-btn btn-call\">\ud83d\udcde \u901a\u8a71<\/a>\n                        <a href=\"${waUrl}\" target=\"_blank\" class=\"drv-btn btn-wa\">\ud83d\udcac WhatsApp<\/a>\n                        <a href=\"${mapUrl}\" target=\"_blank\" class=\"drv-btn btn-map\">\ud83d\uddfa\ufe0f \u5c0e\u822a<\/a>\n                    <\/div>\n                    \n                    <div class=\"drv-btn-group\">\n                        <button onclick=\"toggleForm(${o.id}, 'completed')\" class=\"drv-btn btn-ok\">\u2705 \u6a19\u8a18\u9001\u9054<\/button>\n                        <button onclick=\"toggleForm(${o.id}, 'failed')\" class=\"drv-btn btn-fail\">\u274c \u914d\u9001\u5931\u6557<\/button>\n                    <\/div>\n\n                    <!-- \u64cd\u4f5c\u8868\u55ae -->\n                    <form id=\"form-${o.id}\" class=\"action-form\" onsubmit=\"submitAction(event, ${o.id})\">\n                        <input type=\"hidden\" name=\"status\" id=\"status-${o.id}\">\n                        \n                        <div id=\"reason-wrap-${o.id}\" style=\"display:none;\">\n                            <label><strong>\u5931\u6557\u539f\u56e0\uff1a<\/strong><\/label>\n                            <select name=\"reason\" class=\"form-control\">\n                                <option value=\"\u7121\u4eba\u5728\u5bb6\">\u7121\u4eba\u5728\u5bb6<\/option>\n                                <option value=\"\u5730\u5740\u932f\u8aa4\">\u5730\u5740\u932f\u8aa4<\/option>\n                                <option value=\"\u62d2\u6536\">\u62d2\u6536<\/option>\n                            <\/select>\n                        <\/div>\n                        \n                        <div id=\"note-wrap-${o.id}\" style=\"display:none;\">\n                            <label><strong>\u9001\u9054\u5099\u8a3b(\u9078\u586b)\uff1a<\/strong><\/label>\n                            <input type=\"text\" name=\"note\" class=\"form-control\" placeholder=\"\u5982\uff1a\u653e\u5728\u9580\u53e3\u978b\u6ac3\">\n                        <\/div>\n\n                        <label style=\"margin-top:10px; display:block;\"><strong>\ud83d\udcf8 \u62cd\u7167\u4e0a\u50b3 (\u73fe\u5834\u5716\/\u7c3d\u6536\u5716)\uff1a<\/strong><\/label>\n                        <input type=\"file\" name=\"photos[]\" accept=\"image\/*\" capture=\"environment\" multiple class=\"form-control\">\n                        \n                        <button type=\"submit\" class=\"drv-btn\" style=\"width:100%; background:#343a40; color:#fff; margin-top:10px;\">\u78ba\u8a8d\u4e0a\u50b3\u4e26\u66f4\u65b0\u72c0\u614b<\/button>\n                    <\/form>\n                <\/div>`;\n            });\n            document.getElementById('orders-list').innerHTML = html;\n        }\n\n        function toggleForm(id, status) {\n            let form = document.getElementById('form-' + id);\n            form.style.display = 'block';\n            document.getElementById('status-' + id).value = status;\n            \n            if(status === 'failed') {\n                document.getElementById('reason-wrap-' + id).style.display = 'block';\n                document.getElementById('note-wrap-' + id).style.display = 'none';\n            } else {\n                document.getElementById('reason-wrap-' + id).style.display = 'none';\n                document.getElementById('note-wrap-' + id).style.display = 'block';\n            }\n        }\n\n        function submitAction(e, id) {\n            e.preventDefault();\n            let form = e.target;\n            let fd = new FormData(form);\n            fd.append('action', 'update_delivery_status');\n            fd.append('order_id', id);\n\n            let btn = form.querySelector('button[type=\"submit\"]');\n            btn.innerText = '\u23f3 \u4e0a\u50b3\u8207\u8655\u7406\u4e2d...';\n            btn.disabled = true;\n\n            fetch(ajaxUrl, { method: 'POST', body: fd })\n            .then(res => res.json())\n            .then(data => {\n                if(data.success) {\n                    document.getElementById('card-' + id).innerHTML = `<div style=\"text-align:center; padding:20px; color:#28a745; font-weight:bold;\"><h2>\u2714\ufe0f<\/h2>\u72c0\u614b\u5df2\u6210\u529f\u66f4\u65b0\uff01<\/div>`;\n                    setTimeout(() => document.getElementById('card-' + id).remove(), 2000);\n                } else {\n                    alert('\u932f\u8aa4\uff1a' + data.data);\n                    btn.innerText = '\u91cd\u8a66';\n                    btn.disabled = false;\n                }\n            });\n        }\n        <\/script>\n        \n","protected":false},"excerpt":{"rendered":"\ud83d\ude9b \u53f8\u6a5f\u914d\u9001\u7cfb\u7d71 \u8acb\u9078\u64c7\u8eca\u8f1b\u4e26\u767b\u5165 -- \u9078\u64c7\u8eca\u724c -- BK8888 \u767b\u5165\u7cfb\u7d71 \ud83d\udce6 \u4eca\u65e5\u5f85\u9001 \ud83d\udd04","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"rs_blank_template":"","rs_page_bg_color":"","slide_template_v7":"","footnotes":""},"class_list":["post-2639","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/hkppp.com\/index.php?rest_route=\/wp\/v2\/pages\/2639","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hkppp.com\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/hkppp.com\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/hkppp.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/hkppp.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2639"}],"version-history":[{"count":2,"href":"https:\/\/hkppp.com\/index.php?rest_route=\/wp\/v2\/pages\/2639\/revisions"}],"predecessor-version":[{"id":2644,"href":"https:\/\/hkppp.com\/index.php?rest_route=\/wp\/v2\/pages\/2639\/revisions\/2644"}],"wp:attachment":[{"href":"https:\/\/hkppp.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2639"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}