Online PHP and Javascript Decoder decode hidden script to uncover its real functionality


Show other level


 goto b1JYm; VbunC: Kljv6: goto N9QHO; denK0: Ipb2e: goto VJc32; TaghH: echo json_encode($brands); goto hBfRm; i6Ody: goto vcAqd; goto NYYfa; d1ILy: goto lDwGq; goto wHmWd; Y_Wu1: goto n92r6; goto Qg4Nd; kBzFf: $capacities = array("\64\107\102", "\70\107\x42", "\61\x36\107\x42", "\63\62\x47\x42", "\66\64\x47\x42", "\61\62\70\x47\102"); goto VA9C6; oUntE: PJKVA: goto z1nT3; x4ZPQ: goto yZ3Br; goto RRI2c; baJFP: goto O7i4N; goto Q7fq3; A7srY: goto W9hvX; goto m2Qok; m_BEL: EeLnp: goto nw8SR; hBfRm: goto lHV12; goto p0yoI; m2Qok: K4VW6: goto vcdYV; aDtto: My0WD: goto gayA6; WyE_F:
;
const brands =goto iWMWZ; u34HE: goto EzjNn; goto ObSjj; o7WdV: BzYkW: goto edISl; fvNcM:
;
const currentUserName =goto FNaR2; JqwS0: goto VyU5c; goto k8yCm; n2Zqx: lDwGq: goto x9XVw; jFoDH: goto wduN2; goto ZWifs; GDaM_: goto JJYz2; goto Rr3gX; kZ1MX:
;

let memoryRowIndex = 0;

// 添加内存条行
function addMemoryRow() {
    const row = document.createElement("div");
    row.className = "memory-row mb-3 p-3 border rounded";
    
    const capacityOptions = capacities.map(c => `<option value="${c}">${c}</option>`).join("");
    const frequencyOptions = frequencies.map(f => `<option value="${f}">${f}</option>`).join("");
    const brandOptions = brands.map(b => `<option value="${b}">${b}</option>`).join("");
    
    row.innerHTML = `
        <div class="row align-items-end">
            <div class="col-md-3 mb-2">
                <label class="form-label">容量</label>
                <select name="memories[${memoryRowIndex}][capacity]" class="form-select">
                    <option value="">请选择</option>
                    ${capacityOptions}
                </select>
            </div>
            <div class="col-md-3 mb-2">
                <label class="form-label">频率</label>
                <select name="memories[${memoryRowIndex}][frequency]" class="form-select">
                    <option value="">请选择</option>
                    ${frequencyOptions}
                </select>
            </div>
            <div class="col-md-2 mb-2">
                <label class="form-label">品牌</label>
                <select name="memories[${memoryRowIndex}][brand]" class="form-select">
                    <option value="">请选择</option>
                    ${brandOptions}
                </select>
            </div>
            <div class="col-md-2 mb-2">
                <label class="form-label">数量</label>
                <input type="number" name="memories[${memoryRowIndex}][quantity]" class="form-control" value="1" min="1">
            </div>
            <div class="col-md-2 mb-2">
                <button type="button" class="btn btn-danger w-100" onclick="this.parentElement.parentElement.parentElement.remove()">
                    <i class="fas fa-trash"></i> 删除
                </button>
            </div>
            <div class="col-12">
                <input type="text" name="memories[${memoryRowIndex}][notes]" class="form-control form-control-sm" placeholder="备注信息(可选)">
            </div>
        </div>
    `;
    document.getElementById("memoryRows").appendChild(row);
    memoryRowIndex++;
}

// 显示顶部通知
function showAutoFillNotification(message) {
    const toast = document.getElementById('autoFillNotification');
    const msgSpan = document.getElementById('notificationMessage');
    if (toast && msgSpan) {
        msgSpan.textContent = message;
        toast.style.display = 'flex';
        // Force reflow to enable transition
        void toast.offsetWidth;
        toast.classList.add('show');
        
        // 3秒后自动消失
        setTimeout(() => {
            toast.classList.remove('show');
            setTimeout(() => {
                toast.style.display = 'none';
            }, 400); // Wait for transition to finish
        }, 3000);
    }
}

// 条码扫描相关变量
let scannerStream = null;
let scannerModal = null;
let isScanning = false;

// 检测是否为移动设备
function isMobileDevice() {
    return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);
}

// 初始化扫码按钮
function initBarcodeScanner() {
    const scanBtn = document.getElementById('scanBarcodeBtn');
    
    // 如果不是移动设备,隐藏扫码按钮
    if (!isMobileDevice()) {
        scanBtn.style.display = 'none';
        return;
    }
    
    scanBtn.addEventListener('click', function() {
        openBarcodeScanner();
    });
}

// 打开扫码界面
function openBarcodeScanner() {
    scannerModal = new bootstrap.Modal(document.getElementById('scannerModal'));
    scannerModal.show();
    
    // 模态框显示后启动摄像头
    document.getElementById('scannerModal').addEventListener('shown.bs.modal', function() {
        startCamera();
    });
    
    // 模态框关闭时停止摄像头
    document.getElementById('scannerModal').addEventListener('hidden.bs.modal', function() {
        stopCamera();
    });
}

// 启动摄像头和条码扫描
async function startCamera() {
    try {
        isScanning = true;
        
        // 使用 Quagga.js 初始化条码扫描
        Quagga.init({
            inputStream: {
                name: "Live",
                type: "LiveStream",
                target: document.querySelector('#scannerContainer'),
                constraints: {
                    facingMode: "environment", // 使用后置摄像头
                    width: { ideal: 1280 },
                    height: { ideal: 720 }
                }
            },
            decoder: {
                readers: [
                    "code_128_reader",
                    //"ean_reader",
                    //"ean_8_reader",
                    "code_39_reader",
                    //"code_39_vin_reader",
                    //"codabar_reader",
                    //"upc_reader",
                    //"upc_e_reader",
                    //"i2of5_reader"
                ]
            },
            locate: true,
            locator: {
                patchSize: "medium",
                halfSample: true
            }
        }, function(err) {
            if (err) {
                console.error('Quagga 初始化失败:', err);
                Swal.fire({
                    icon: 'error',
                    title: '扫描器启动失败',
                    text: '请确保已授权摄像头权限'
                });
                scannerModal.hide();
                return;
            }
            
            console.log("Quagga 初始化成功");
            Quagga.start();
        });
        
        // 监听扫描结果
        Quagga.onDetected(function(result) {
            if (result && result.codeResult && result.codeResult.code) {
                const code = result.codeResult.code;
                console.log("扫描到条码:", code);
                
                // 填充到输入框
                document.getElementById('incoming_tracking_no').value = code;
                showAutoFillNotification('条码扫描成功: ' + code);
                
                // 关闭扫描器
                stopCamera();
                scannerModal.hide();
            }
        });
        
    } catch (error) {
        console.error('摄像头启动失败:', error);
        Swal.fire({
            icon: 'error',
            title: '摄像头启动失败',
            text: '请确保已授权摄像头权限'
        });
        scannerModal.hide();
    }
}

// 停止摄像头
function stopCamera() {
    isScanning = false;
    
    if (typeof Quagga !== 'undefined') {
        Quagga.stop();
    }
}

// 页面加载时添加第一行
document.addEventListener("DOMContentLoaded", function() {
    addMemoryRow();
    
    // 初始化条码扫描器
    initBarcodeScanner();
    
    // 手机号自动回填
    document.getElementById("customer_phone").addEventListener("blur", function() {
        const phone = this.value.trim();
        if (phone.length >= 11) {
            fetch("/ddradmin/api/get_customer_history.php?phone=" + encodeURIComponent(phone))
                .then(res => res.json())
                .then(data => {
                    if (data.success && data.customer) {
                        document.getElementById("customer_name").value = data.customer.customer_name || "";
                        document.getElementById("shipping_address").value = data.customer.shipping_address || "";
                        showAutoFillNotification("已匹配历史信息");
                    }
                })
                .catch(err => console.error(err));
        }
    });

    // 监听已收到货物 Checkbox,控制收货人自动选择
    const isReceivedCheckbox = document.getElementById("is_received");
    if (isReceivedCheckbox) {
        isReceivedCheckbox.addEventListener("change", function() {
            const receiverSelect = document.getElementById("receiver_name");
            if (this.checked) {
                // 选中时,如果收货人为空,自动选择当前用户
                if (receiverSelect.value === "") {
                    for (let i = 0; i < receiverSelect.options.length; i++) {
                        if (receiverSelect.options[i].text === currentUserName) {
                            receiverSelect.selectedIndex = i;
                            break;
                        }
                    }
                }
            } else {
                // 取消选中时,清空收货人
                receiverSelect.value = "";
            }
        });
    }
});

// 表单提交
document.getElementById("repairForm").addEventListener("submit", function(e) {
    e.preventDefault();
    
    const formData = new FormData(this);
    
    fetch("", {
        method: "POST",
        body: formData
    })
    .then(res => res.json())
    .then(data => {
        if (data.success) {
            Swal.fire({
                icon: "success",
                title: "创建成功",
                text: "维修单号:" + data.repair_no,
                showCancelButton: true,
                confirmButtonText: "返回列表",
                cancelButtonText: "继续创建",
                reverseButtons: true
            }).then((result) => {
                if (result.isConfirmed) {
                    // 返回列表
                    window.location.href = "/ddradmin/repairs/list.php";
                } else {
                    // 继续创建
                    window.location.href = "/ddradmin/repairs/create.php";
                }
            });
        } else {
            // 如果是快递单号已存在,使用模态框显示
            if (data.message && data.message.includes('快递单号已存在')) {
                Swal.fire({
                    icon: "warning",
                    title: "快递单号已存在",
                    text: data.message,
                    confirmButtonText: "确定"
                });
            } else {
                showError(data.message);
            }
        }
    })
    .catch(err => {
        showError("提交失败,请重试");
        console.error(err);
    });
});</script>goto Svqzr; VEJMo: OQue5: goto Jqrh6; AsvRq: goto qtyn1; goto XLDSU; JXa9E: X6Rb3: goto agCEn; iRWLq: rOfWL: goto hL_Js; Y16sx: nnX9j: goto eU63E; jJdzn: goto j69c0; goto SKqcf; CE_zw: IlPns: goto jUKh8; d6hEN: M4uCV: goto IOeKC; lbXxW: URysA: goto jJdzn; x9XVw: Cnw7J: goto AB89Y; kCAt1: goto zvra3; goto EH3qw; eajxE: goto iqRs4; goto bTvJ5; iPrqp: goto ScXB_; goto Bqsk0; YiueD: fCxgD: goto QaMkF; C39nM: IafE0: goto SBEiA; xDJzG: date_default_timezone_set("\x41\163\x69\x61\57\123\150\x61\156\x67\150\x61\x69"); goto vuNYl; mUP9n: goto BzYkW; goto SGHVB; dkNrq: $customScripts = ob_get_clean(); goto YQV0K; vNtxY: goto wfuEr; goto jtBMn; rlycL: goto NkKRS; goto xQYpP; N9WBl: lG0gh: goto BzXS5; Vr2Ou: WID98: goto JaK1x; xDO10: dcNkQ: goto sPg_U; B7fRi: goto Uoh_u; goto D1ar7; YE6lh: qOUfh: goto mCTwx; XHzmy: goto DoEAx; goto GhkI1; iOcDX: goto xvTnG; goto dPdiS; Q1Efv: echo Security::csrfField(); goto kCAt1; w1UPE: goto V8job; goto loAzN; E7mP_: lHV12: goto i6Ody; l36sn: goto gXD1j; goto QOy_R; o0Y3O: goto a2pzQ; goto kfE0J; Nm0zH: Onxs3: goto aA7cI; T04qJ: IGzWZ: goto W7Ctt; PhsTW:
<script src="/assets/js/quagga.min.js"></script><script>const capacities =goto rYl_t; kKi6r: goto WID98; goto Dzb60; oG6Er: goto uWEo_; goto rlycL; rYj98: nML31: goto iOcDX; AfAmt: vrTo4: goto eMAy9; PIyqW: vcAqd: goto Lwzd8; ehong: Q4V2o: goto NhMFF; SGHVB: a2pzQ: goto kidC8; z1nT3: goto MLpTc; goto a5ddE; W7Ctt: ApvPQ: goto xhTAD; ZcBY_:
/repairs/list.php"><i class="fas me-2 fa-arrow-left"></i>返回列表</a></div></div><form id="repairForm">goto cv_Ss; Yi6wu: goto DFEOe; goto LgQdm; amEOJ: hcsSq: goto FPibO; laRHC: goto Q4V2o; goto N9WBl; F6Iu1: l5F9d: goto xDJzG; z4ZpN: OGC7X: goto AL7rj; RRI2c: Up8A7: goto iB3CZ; gqHvR: goto bBf2n; goto x0a2b; StfCo: goto lRPC0; goto XFwj2; GsPOY: goto a8bWG; goto vXIqi; hstOs: goto N3TCw; goto JXa9E; CdC3E: goto kU4aA; goto denK0; miPMy:
</select></div><div class="mb-3 col-md-4"><label class="form-label">收货人</label> <select class="form-select"name="receiver_name"id="receiver_name"><option value="">请选择收货人</option>goto u7Dzs; Jqrh6:
</select></div><div class="mb-3 col-12"><div class="form-check"><input class="form-check-input"id="is_received"name="is_received"type="checkbox"value="1"> <label class="form-check-label"for="is_received">已收到货物 (勾选"确认收货")</label></div></div><div class="mb-3 col-12"><label class="form-label">回寄地址</label> <textarea class="form-control"id="shipping_address"name="shipping_address"placeholder="请输入收货地址"rows="1"></textarea></div></div></div></div><div class="mb-3 card"><div class="align-items-center card-header d-flex justify-content-between"><span><i class="fas me-2 fa-memory"></i>内存条信息</span> <button class="btn btn-light btn-sm"type="button"onclick="addMemoryRow()"><i class="fas fa-plus me-1"></i>添加条</button> <button class="btn btn-light btn-sm"type="submit"><i class="fas me-2 fa-save"></i>创建订单</button></div><div class="card-body"><div id="memoryRows"></div></div></div><div class="card"><div class="card-body"><div class="row g-3"><div class="col-md-6"><button class="btn btn-lg w-100 btn-primary"type="submit"><i class="fas me-2 fa-save"></i>创建维修单</button></div><div class="col-md-6"><a class="btn btn-lg w-100 btn-secondary"href="/goto GsPOY; XFwj2: SREe3: goto mqqNZ; Lwzd8: goto KYE0M; goto ehong; vXIqi: xvTnG: goto VOKQr; YQV0K: goto ISakt; goto kbDUn; bTvJ5: goto SlnGj; goto K4woa; wHmWd: jb7wM: goto HT07G; hL_Js: goto OQue5; goto a1d0J; a1d0J: W9hvX: goto D4d_L; GSgMe: c6tKB: goto TaghH; jUKh8: require_once dirname(__DIR__) . "\x2f\x69\156\143\x6c\165\144\145\x73\x2f\x6c\x61\x79\157\x75\164\56\x70\x68\x70"; goto StfCo; ZpGfb: echo ADMIN_PATH; goto bCz92; y4RCr: id3rY: goto d6hEN; H_h9B: BNdlO: goto oUntE; DthJs: SlnGj: goto AfAmt; XiNpM:
<div class="mb-3 card"><div class="card-header"><i class="fas me-2 fa-user"></i>客户信息</div><div class="card-body"><div class="row"><div class="mb-3 col-md-4"><label class="form-label"><i class="fas me-2 fa-shipping-fast"></i>寄入快递号 <span class="text-danger">*</span></label><div class="input-group"><input class="form-control"id="incoming_tracking_no"name="incoming_tracking_no"placeholder="请输入快递号"required> <button class="btn btn-outline-secondary"type="button"id="scanBarcodeBtn"title="扫描条码"><i class="fas fa-camera"></i></button></div></div><div class="mb-3 col-md-4"><label class="form-label">联系电话</label> <input class="form-control"id="customer_phone"name="customer_phone"placeholder="请输入手机号"> <small class="text-muted">输入后自动回填历史信息</small></div><div class="mb-3 col-md-4"><label class="form-label">客户姓名</label> <input class="form-control"id="customer_name"name="customer_name"placeholder="请输入姓名"></div><div class="mb-3 col-md-4"><label class="form-label">订单来源 <span class="text-danger">*</span></label> <select class="form-select"name="order_source"required><option value="">请选择</option>goto NAqHp; a8B69: goto ia8b3; goto JbEK0; xVfPb: goto VEK9s; goto T04qJ; BWP0b: p152r: goto kJvFM; mpJ0D: goto HU01y; goto DrU2h; ROVV6: fV2oG: goto oG6Er; WewsQ: goto dqGsV; goto J1Zjb; a5ddE: gbUgQ: goto bO2ud; UFmki: XJ4MU: goto rI3r5; FNaR2: goto fV2oG; goto Lp1W7; kA8CF: goto nML31; goto L2X3K; vcdYV: u6PDs: goto Al9pJ; wFDrA: goto QzWQc; goto lFYn7; i0dtS: Qzpva: goto Xbrvy; PZAJL: goto ONFGH; goto xz3Dw; vuNYl: goto Ipb2e; goto aDtto; WoHw9: goto RRXCS; goto l7SjX; pjzD8: foreach ($sources as $source) {
<option value="echo $source;
">echo $source;
</option>} goto ubH3Y; akAtU: goto w1b1m; goto ZdVot; GKNB8: goto Sw30y; goto x4ZPQ; PKoXM: goto Va7wR; goto i0dtS; kbDUn: dqGsV: goto uhJy8; v05yP: goto FKcas; goto pD20W; VJc32: goto FCxvy; goto o24gq; kJWSz: goto QcVBc; goto wcGGr; q8vsH: snmPh: goto l_rSw; cC7iQ: $frequencies = $db->queryColumn("\123\105\x4c\x45\103\124\40\x76\141\x6c\165\x65\40\106\122\x4f\115\x20\x64\171\156\x61\x6d\x69\x63\x5f\x6c\151\163\164\163\x20\x57\x48\105\122\x45\x20\x63\141\164\145\147\x6f\x72\x79\40\x3d\x20\x27\x66\162\x65\161\x75\145\x6e\143\171\x27\40\117\122\104\x45\x52\40\102\x59\40\163\157\162\164\137\x6f\x72\x64\x65\x72\40\101\123\x43"); goto sRhFP; N9QHO: goto PJKVA; goto FNVCC; x0a2b: MLpTc: goto dkNrq; SBEiA: goto fTNLV; goto x1IKa; mqqNZ: uWEo_: goto yeXOp; jnriC: goto WM2eJ; goto p2VPI; at7lJ: cliut: goto AsvRq; L2X3K: goto OBtry; goto KmGtW; uF6mm: goto V0Bz7; goto ROtms; Ey3uS: MNRzY: goto ZxvI7; WjVhV: pncbA: goto jnriC; k8yCm: fscc7: goto miPMy; umC8J: RRXCS: goto WewsQ; c1n9U: $pageTitle = "\xe5\210\233\345\xbb\xba\xe7\273\xb4\xe4\xbf\xae\345\x8d\225"; goto XHzmy; XzxWW: PmacG: goto pjzD8; xqY6a: LvQAC: goto H774Z; vak5Y: goto FUIbQ; goto Y16sx; bO2ud: wfuEr: goto Nd8BI; QaMkF: ONFGH: goto DaDa5; jc0I_: ob_start(); goto Gb1Mc; IOeKC: goto MNRzY; goto PyY1V; ObSjj: H3XP5: goto amEOJ; M7yK1: Dpmfh: goto ilZGm; CJE2m: R1uD5: goto kU1Zt; CWHJF: goto GD8VC; goto BWP0b; QOy_R: EdYpV: goto Mybpp; V3XFI: goto VJ2vs; goto VEJMo; fpEdR:
;
const frequencies =goto kJWSz; GH2mY: ob_start(); goto JU6Uu; XTcX6: AUTQN: goto EYbYx; PbdYc: JJYz2: goto kBzFf; UWNhl: foreach ($users as $user) {
<option value="echo Security::escape($user["\162\145\x61\x6c\x5f\x6e\x61\x6d\145"] ?: $user["\x75\163\x65\162\156\x61\155\145"]);
">echo Security::escape($user["\162\x65\x61\154\137\x6e\x61\x6d\145"] ?: $user["\x75\x73\145\x72\x6e\x61\155\x65"]);
</option>} goto JqwS0; Q7fq3: goto yGkqk; goto y4RCr; Bqsk0: goto QKwr3; goto WunTH; XZVvt: uPqXM: goto RYUNt; Mx53e: echo json_encode($frequencies); goto hstOs; UMXTJ: s2oXE: goto fHfvM; VSSss: RzFtc: goto wgIgd; d8okA: goto beJaC; goto obLvt; woygO: goto p152r; goto C39nM; kU1Zt:
<div class="notification-toast"id="autoFillNotification"><i class="fas me-2 fa-check-circle"></i> <span id="notificationMessage"></span></div><div class="fade modal"id="scannerModal"tabindex="-1"><div class="modal-dialog modal-dialog-centered"><div class="modal-content"><div class="modal-header"><h5 class="modal-title"><i class="fas me-2 fa-camera"></i>扫描条码</h5><button class="btn-close"type="button"data-bs-dismiss="modal"></button></div><div class="modal-body"><div id="scannerContainer"style="position:relative;width:100%;height:300px"><video id="scannerVideo"style="width:100%;height:100%;object-fit:cover"></video><canvas id="scannerCanvas"style="display:none"></canvas></div><div class="mt-3 text-center"><small class="text-muted">请将条码对准摄像头</small></div></div></div></div></div><style>.notification-toast{position:fixed;top:80px;right:20px;background:linear-gradient(135deg,#28a745 0,#20c997 100%);color:#fff;padding:15px 25px;border-radius:10px;box-shadow:0 5px 15px rgba(0,0,0,.2);z-index:9999;display:none;align-items:center;font-weight:500;opacity:0;transform:translateX(50px);transition:all .4s cubic-bezier(.68,-.55,.265,1.55)}.notification-toast.show{opacity:1;transform:translateX(0)}#scannerContainer{background:#000;border-radius:8px;overflow:hidden}</style><div class="row align-items-center mb-4"><div class="col-auto me-auto"><h2 class="mb-0"><i class="fas me-2 fa-plus-circle"></i>创建维修单</h2></div><div class="col-auto"><a class="btn btn-secondary"href="/goto qn_RS; uhJy8: $salespersons = $db->queryColumn("\x53\x45\x4c\105\x43\x54\40\166\141\x6c\165\145\40\x46\x52\117\x4d\x20\x64\x79\156\141\x6d\151\x63\137\x6c\x69\163\x74\x73\40\127\110\x45\x52\105\40\143\141\164\145\x67\157\162\x79\x20\x3d\40\47\x73\141\x6c\x65\x73\160\x65\x72\x73\157\x6e\x27\40\x4f\122\x44\x45\122\x20\x42\x59\40\163\x6f\162\164\137\x6f\x72\x64\x65\x72\40\101\x53\103"); goto v05yP; xhTAD: goto p0MvT; goto kH70d; rGrwk: goto l5F9d; goto at7lJ; iNiL1: goto Qpv77; goto VbunC; XxU8F: goto IlPns; goto CuNJX; ilZGm: goto VrayQ; goto UYHLk; eOw0v: goto shvGr; goto UFmki; jVaZx: goto xaIBb; goto XKaKg; jtBMn: goto aE6Z6; goto KnlbU; uFcwa: Va7wR: goto PTqfM; dPdiS: Dm08X: goto J5hgX; AB89Y: goto KwEcM; goto YE6lh; xQYpP: lRPC0: goto kA8CF; o0Y4a: goto hcsSq; goto qn4dw; pD20W: yZ3Br: goto umC8J; DaDa5: goto XJ4MU; goto VSSss; HiU8M: ScXB_: goto rGrwk; NAqHp: goto lG0gh; goto POSEQ; vjDUf: n92r6: goto B7fRi; agCEn: O7i4N: goto woygO; zjiW0:
/repairs/list.php"><i class="fas me-2 fa-times"></i>取消</a></div></div></div></div></form>goto mUP9n; JU6Uu: goto jb7wM; goto n2Zqx; Qv2DU: $content = ob_get_clean(); goto kKi6r; pOPrk: $db = Database::getInstance(); goto iNiL1; u7Dzs: goto URysA; goto KDGKm; yCMY4: goto RzFtc; goto xqY6a; QXc6U: NkKRS: goto Nm0zH; eMAy9: goto deTIM; goto CE_zw; WunTH: QKwr3: goto bAGqg; OclZf: goto ZXlHM; goto i86Rv; xw2Fm: goto XCse1; goto P5wJE; J5hgX: goto u6PDs; goto xVfPb; M6PE0: Uoh_u: goto Hu5Rz; DiUeT: goto vrTo4; goto jFoDH; xE8L6: oxa6j: goto HiU8M; H1Qs5: p0MvT: goto GH2mY; igiNY: goto t8777; goto IBhuS; ZngRB: FCxvy: goto ifZBY; p2VPI: CpaUg: goto jc0I_; TmRrD: n13qX: goto mpJ0D; FNVCC: goto uRhpC; goto YVC1c; Outk9: goto M4uCV; goto o0Y3O; Ia2_g: XCse1: goto xNoFO; oq1PC: KwEcM: goto Qv2DU; bCz92: goto nnX9j; goto oq1PC; cv_Ss: goto EpbQh; goto t5wtR; ZdVot: uRhpC: goto WjVhV; NYYfa: goto s2oXE; goto aZZpp; Al9pJ: goto jb8jn; goto vBrSh; EH3qw: HW0Iy: goto M6PE0; UvYnN: goto AUTQN; goto pHRHZ; rI3r5: echo json_encode($capacities); goto gqHvR; YVC1c: ia8b3: goto tbiAD; yeXOp: goto Qzpva; goto DHbab; EYbYx: Hc81Q: goto l36sn; KmGtW: GD8VC: goto ZcBY_; vQNyz: EzjNn: goto WyE_F; N4w0M: goto Dpmfh; goto UvYnN; K4woa: WM2eJ: goto XiNpM; fWWKO: goto AiHRq; goto UMXTJ; qn4dw: goto IGzWZ; goto Vr2Ou; KDGKm: QcVBc: goto N4w0M; t5wtR: gXD1j: goto c1n9U; P5wJE: goto jPiIU; goto xMWAF; Y1YeQ: goto T3_1F; goto rSk1z; ceyhN: goto sSM1N; goto o7WdV; nn8Tt: t8777: goto kZ1MX; J1Zjb: XYuvY: goto swsOk; pHRHZ: T3_1F: goto wq50y; p0yoI: a8bWG: goto Dbobn; D4d_L: require_once dirname(__DIR__, 2) . "\x2f\x63\157\x6e\146\x69\147\57\143\x6f\156\146\x69\147\x2e\160\150\160"; goto V3XFI; JaK1x: goto OGC7X; goto fFPha; wcGGr: Xw1Co: goto WugC1; Svqzr: goto Kljv6; goto DthJs; I92A5: goto yuNAv; goto ADJzE; b1JYm: goto cliut; goto Zn6yA; i86Rv: wduN2: goto q8vsH; AL7rj: goto CpaUg; goto GUoTA; mCTwx: goto snmPh; goto AhNpk; s4hVi: goto I1Jvo; goto a8B69; Mybpp: Auth::requireLogin(); goto PKoXM; iB3CZ: fTNLV: goto igiNY; HT07G: goto PM7Xz; goto YgmSf; l7SjX: goto xNWAN; goto CJE2m; loAzN: goto H3XP5; goto Mn5lN; Lp1W7: FKcas: goto vNtxY; K59aH: pprX_: goto TmRrD; RC_Qt: goto fFTr6; goto PbdYc; fFPha: goto pprX_; goto Igwm7; Gb1Mc: goto Dm08X; goto bmEMn; DHbab: zvra3: goto zGA7V; j3jYS: goto Savvo; goto XZVvt; XoChQ: kU4aA: goto pOPrk; lFYn7: VEK9s: goto m_BEL; xMWAF: NTWu0: goto Q1Efv; bAGqg: xPKg2: goto qOA9M; vBrSh: w1b1m: goto z4ZpN; Qg4Nd: YTdCN: goto vZr9a; QeI5t: DnNlC: goto PIyqW; RG70p: mKylN: goto Ia2_g; aA7cI: goto dcNkQ; goto F6Iu1; D1ar7: goto BNdlO; goto K59aH; Rr3gX: DoEAx: goto B13lu; bmEMn: yGkqk: goto PbDXa; IBhuS: shvGr: goto cC7iQ; Mn5lN: KYE0M: goto fvNcM; PqvfX: goto R1uD5; goto c8fGs; ADJzE: goto mKylN; goto XoChQ; XKaKg: jPiIU: goto fkk_N; obLvt: AiHRq: goto H3XSE; dhrfX: r3x23: goto iWwAs; iWwAs: goto GtSBK; goto d1ILy; Igwm7: jb8jn: goto PhsTW; zGA7V: goto pncbA; goto uF6mm; DrU2h: FcoDa: goto xw2Fm; H3XSE: goto Onxs3; goto DS6J8; wslwt: eWWms: goto J0LLo; eDhdn: goto UzRE0; goto YUDPS; GUoTA: xaIBb: goto ZngRB; H774Z: if (empty($frequencies)) { $frequencies = array("\70\64\60\x30\40\x4d\110\172\x20\50\104\x44\x52\x35\51", "\67\x32\x30\60\40\x4d\x48\172\x20\50\x44\104\x52\65\x29", "\x36\x30\x30\x30\40\x4d\x48\172\40\x28\104\x44\x52\65\x29", "\65\x36\60\x30\x20\115\110\172\x20\50\104\104\122\x35\x29", "\x35\62\x30\x30\40\x4d\x48\172\x20\x28\104\104\122\65\x29", "\x34\70\60\60\40\x4d\110\172\x20\x28\104\104\x52\x35\x29", "\x34\60\x30\60\40\115\110\x7a\x20\x28\104\104\x52\64\x29", "\63\x36\60\60\x20\115\x48\172\40\50\104\x44\x52\x34\x29", "\x33\62\x30\60\x20\x4d\x48\x7a\x20\x28\x44\x44\x52\64\x29", "\x32\71\63\63\x20\x4d\x48\172\40\x28\104\x44\x52\64\x29", "\62\66\x36\x36\x20\115\x48\x7a\40\50\104\x44\122\x34\51", "\62\64\x30\60\x20\115\110\172\x20\50\104\x44\x52\x34\51", "\x32\x31\63\x33\40\115\110\x7a\40\x28\x44\x44\122\64\x29", "\61\x38\x36\x36\40\115\110\172\x20\x28\104\104\x52\x33\x29", "\61\66\x30\x30\x20\x4d\110\x7a\x20\x28\x44\x44\122\x33\x29", "\61\x33\x33\63\x20\115\x48\x7a\40\x28\x44\x44\x52\x33\51"); } goto Y_Wu1; sRhFP: goto qOUfh; goto xDO10; jlNnb: goto JeYjF; goto nn8Tt; BzXS5: goto xPKg2; goto mqOby; Zn6yA: FUIbQ: goto M7yK1; PbDXa: Sw30y: goto GDaM_; o24gq: goto HW0Iy; goto nrSfz; fHfvM: qtyn1: goto A7srY; T_ltH: goto SREe3; goto Ukftc; JBu6w: GtSBK: goto eOw0v; xz3Dw: goto DnNlC; goto YiueD; rSk1z: ZXlHM: goto Outk9; kH70d: Qpv77: goto GKNB8; t0Pe_: PM7Xz: goto PqvfX; rklRO: echo ADMIN_PATH; goto RC_Qt; x1IKa: goto K4VW6; goto G1rcC; AhNpk: goto oxa6j; goto ROVV6; qn_RS: goto eyZ8H; goto lbXxW; CuNJX: DFEOe: goto o0Y4a; NhMFF: V8job: goto XxU8F; vZr9a: if (empty($brands)) { $brands = array("\346\231\xae\xe6\x9d\xa1", "\344\270\211\xe6\230\237", "\351\207\x91\xe5\xa3\xab\351\xa1\277", "\346\265\267\xe7\x9b\x97\350\x88\271", "\xe5\250\x81\xe5\210\232", "\xe9\x87\x91\xe7\231\276\350\276\xbe", "\xe5\205\211\345\250\201", "\345\275\xb1\351\xa9\260", "\344\xb8\203\345\xbd\251\xe8\231\xb9", "\xe5\256\207\xe7\x9e\273", "\xe8\x8a\235\345\245\207", "\x63\x72\x75\x63\x69\141\x6c", "\351\233\xb7\xe5\x85\213\346\262\x99", "\351\223\255\xe7\x91\204", "\xe9\205\xb7\345\205\275", "\124\145\x61\x6d", "\117\103\x5a"); } goto wFDrA; H5jbC: goto fCxgD; goto vjDUf; Xbrvy: echo json_encode($_SESSION["\x72\145\141\x6c\x5f\x6e\141\155\x65"] ?: $_SESSION["\165\x73\x65\162\156\141\155\x65"]); goto T08ow; FPibO: goto YTdCN; goto vQNyz; Dzb60: OBtry: goto t0Pe_; sPg_U: foreach ($salespersons as $sp) {
<option value="echo Security::escape($sp);
">echo Security::escape($sp);
</option>} goto pAVFs; YUDPS: eyZ8H: goto eajxE; mqOby: goto id3rY; goto OAj6m; OAj6m: Savvo: goto baJFP; Dbobn: goto WoFGS; goto jVaZx; G1rcC: sSM1N: goto B2A0f; ROtms: N3TCw: goto s4hVi; dG8o9: goto EeLnp; goto H5jbC; edISl: goto Cnw7J; goto akAtU; swsOk: $brands = $db->queryColumn("\123\x45\x4c\105\x43\x54\x20\x76\x61\154\165\x65\40\x46\122\x4f\x4d\40\x64\x79\156\141\155\151\143\137\154\x69\x73\x74\163\40\127\110\x45\122\x45\x20\x63\x61\164\145\147\x6f\162\x79\x20\x3d\x20\x27\x62\x72\141\156\144\x27\x20\x4f\x52\104\x45\122\x20\x42\131\x20\163\157\162\x74\x5f\x6f\x72\x64\x65\x72\x20\101\x53\x43"); goto Yi6wu; wgIgd: goto Hc81Q; goto oRcG8; aZZpp: UzRE0: goto UWNhl; wq50y: zkuE2: goto CdC3E; ZxvI7: $users = $db->query("\x53\105\x4c\105\103\x54\x20\151\x64\54\40\x75\x73\x65\162\156\141\155\145\x2c\x20\162\x65\141\154\x5f\156\141\x6d\145\40\x46\122\x4f\115\40\165\163\x65\x72\x73\x20\127\x48\105\122\x45\x20\163\164\x61\164\165\163\x20\x3d\40\47\141\143\164\x69\x76\145\47\x20\117\x52\x44\x45\122\x20\x42\131\40\165\x73\145\162\156\141\155\145"); goto j3jYS; YgmSf: goto Up8A7; goto QeI5t; POSEQ: beJaC: goto ISSXr; qOA9M: goto PmacG; goto dhrfX; rYl_t: goto orFPf; goto XTcX6; RYUNt: goto d07yJ; goto Y1YeQ; hr6Xr: I1Jvo: goto u34HE; c8fGs: ISakt: goto w1UPE; B13lu: goto ApvPQ; goto n71fM; ISSXr:
</select></div><div class="mb-3 col-md-4"><label class="form-label">业务员</label> <select class="form-select"name="salesperson"id="salesperson"><option value="">请选择业务员</option>goto fWWKO; DGFu4: VJ2vs: goto iPrqp; ifZBY: goto EdYpV; goto E7mP_; eU63E: goto n13qX; goto laRHC; kfE0J: bBf2n: goto DiUeT; PyY1V: JLcGz: goto z5eXP; J0LLo: iqRs4: goto jlNnb; pAVFs: goto uPqXM; goto H_h9B; Ukftc: aE6Z6: goto JBu6w; oRcG8: goto JLcGz; goto xE8L6; kidC8: j69c0: goto eDhdn; PTqfM: goto zkuE2; goto T_ltH; WugC1: $sources = array("\345\x92\270\xe9\261\274", "\346\212\226\xe9\x9f\263", "\xe5\276\xae\344\xbf\241", "\346\267\x98\345\xae\235", "\xe6\x8b\274\xe5\xa4\x9a\xe5\244\232", "\xe4\xba\xac\xe4\xb8\234", "\347\xba\277\xe4\xb8\213", "\345\x85\xb6\xe4\xbb\226"); goto OclZf; gayA6: goto v2XpA; goto vak5Y; xNoFO: goto c6tKB; goto uFcwa; qUpti: goto fscc7; goto QXc6U; W2xD3: qYuGO: goto rYj98; nw8SR: goto NTWu0; goto Ey3uS; tbiAD: WoFGS: goto NDTbg; KnlbU: QzWQc: goto WoHw9; Nd8BI: goto Xw1Co; goto GSgMe; SKqcf: goto gbUgQ; goto RG70p; DS6J8: goto qYuGO; goto T5pkd; mPeqJ: JeYjF: goto rklRO; zSOND: goto rOfWL; goto ceyhN; ubH3Y: goto My0WD; goto W2xD3; B2A0f: v2XpA: goto d8okA; iWMWZ: goto FcoDa; goto k6fJK; UYHLk: fFTr6: goto I92A5; nrSfz: deTIM: goto fpEdR; JbEK0: VyU5c: goto zSOND; T08ow: goto IafE0; goto mPeqJ; n71fM: goto X6Rb3; goto H1Qs5; k6fJK: V4PoY: goto ZpGfb; XLDSU: goto eWWms; goto DGFu4; LgQdm: HU01y: goto zjiW0; GhkI1: VrayQ: goto Mx53e; Hu5Rz: goto XYuvY; goto wslwt; NDTbg: goto V4PoY; goto Lu28m; kJvFM: if ($_SERVER["\x52\105\x51\125\105\123\124\x5f\x4d\105\124\110\x4f\x44"] === "\120\117\x53\124") { error_reporting(0); ini_set("\x64\x69\x73\x70\154\141\171\x5f\145\x72\x72\157\x72\163", 0); if (!Security::verifyCsrfToken(Helper::post("\143\163\x72\x66\x5f\x74\157\153\145\x6e"))) { Helper::json(array("\x73\x75\x63\143\x65\163\163" => false, "\155\145\163\163\141\147\145" => "\111\156\166\141\x6c\151\144\x20\x43\x53\122\106\x20\164\157\x6b\x65\x6e")); } try { $db->beginTransaction(); $repairNo = Helper::generateRepairNo(); $createdAt = date("\x59\x2d\155\x2d\x64\40\x48\x3a\x69\x3a\x73"); $incomingTrackingNo = Helper::post("\x69\x6e\143\157\155\151\x6e\147\x5f\x74\162\141\143\x6b\151\x6e\x67\137\x6e\157"); if (!empty($incomingTrackingNo)) { $existingOrder = $db->queryOne("\123\105\x4c\x45\x43\x54\x20\162\145\x70\141\x69\x72\137\156\157\40\106\x52\117\115\40\162\x65\x70\141\x69\x72\x5f\x6f\162\144\145\162\x73\x20\127\x48\x45\122\105\x20\x69\x6e\143\157\x6d\x69\x6e\147\137\x74\x72\141\143\153\x69\x6e\x67\x5f\x6e\x6f\x20\x3d\x20\x3f", array($incomingTrackingNo)); if ($existingOrder) { throw new Exception("\345\xbf\253\351\200\x92\xe5\x8d\x95\xe5\x8f\267\xe5\xb7\262\345\255\x98\345\x9c\250\357\xbc\214\xe7\xbb\264\xe4\xbf\256\345\215\225\xe5\217\267\357\xbc\x9a" . $existingOrder["\x72\145\160\141\x69\x72\137\x6e\x6f"]); } } $receiverName = Helper::post("\162\x65\x63\145\151\x76\x65\162\137\x6e\x61\155\x65"); $isReceived = Helper::post("\151\x73\x5f\162\x65\143\145\x69\x76\x65\144"); $salesperson = Helper::post("\x73\141\154\x65\x73\160\145\x72\x73\x6f\x6e"); $repairStatus = "\x70\145\156\x64\151\x6e\147"; $receivedAt = null; if ($isReceived) { $repairStatus = "\x72\145\x63\x65\151\166\x65\x64"; $receivedAt = date("\x59\x2d\155\55\144\40\x48\72\151\x3a\163"); if (empty($receiverName)) { $receiverName = $_SESSION["\x72\145\141\x6c\137\156\x61\x6d\145"] ?? $_SESSION["\165\x73\145\x72\156\x61\x6d\145"]; } } else { $receiverName = null; } $db->execute("\xa\x20\x20\40\40\40\40\x20\x20\40\x20\x20\x20\111\116\123\105\122\124\x20\111\x4e\x54\117\x20\162\145\x70\141\151\x72\137\x6f\x72\x64\x65\x72\x73\x20\x28\12\x20\x20\40\x20\x20\x20\x20\x20\x20\40\40\x20\40\40\x20\40\x72\145\160\x61\x69\162\x5f\x6e\x6f\x2c\40\143\165\163\x74\x6f\155\145\x72\137\x6e\141\155\145\54\x20\143\165\x73\164\157\x6d\x65\162\x5f\160\150\x6f\156\x65\54\40\157\x72\144\x65\x72\137\163\157\165\x72\143\x65\x2c\x20\12\x20\40\40\x20\x20\40\40\x20\x20\40\x20\40\x20\x20\x20\x20\x73\150\x69\160\160\x69\x6e\x67\x5f\x61\x64\x64\162\x65\x73\163\x2c\40\151\x6e\143\x6f\x6d\151\x6e\147\137\x74\162\141\x63\153\151\156\147\137\x6e\157\54\40\162\145\x63\x65\x69\166\x65\x72\x5f\156\x61\155\145\x2c\x20\x72\x65\143\x65\151\166\x65\x64\x5f\x61\x74\x2c\12\x20\40\40\40\x20\40\x20\x20\x20\x20\x20\40\40\40\x20\x20\162\x65\160\x61\151\162\x5f\163\164\x61\x74\x75\x73\54\40\163\141\x6c\x65\163\x70\145\162\163\x6f\x6e\54\40\x63\x72\x65\141\x74\157\x72\x5f\151\x64\x2c\40\x63\x72\145\141\x74\x65\144\x5f\141\164\xa\40\x20\x20\x20\x20\40\40\x20\x20\x20\x20\40\x29\x20\x56\x41\114\125\x45\x53\x20\50\x3f\x2c\40\77\x2c\x20\x3f\54\40\77\54\x20\77\54\x20\x3f\54\40\x3f\54\x20\x3f\54\40\77\54\40\77\54\40\x3f\54\40\x3f\51\12\40\x20\40\40\x20\x20\x20\40", array($repairNo, Helper::post("\x63\x75\x73\x74\157\x6d\145\162\x5f\156\x61\155\x65"), Helper::post("\143\x75\x73\164\157\x6d\x65\162\137\160\150\157\156\x65"), Helper::post("\x6f\162\x64\145\162\x5f\163\157\165\x72\143\145"), Helper::post("\163\150\151\160\160\151\156\147\x5f\x61\144\144\x72\x65\x73\x73"), $incomingTrackingNo, $receiverName, $receivedAt, $repairStatus, $salesperson, Auth::id(), $createdAt)); $repairOrderId = $db->lastInsertId(); $memories = Helper::post("\x6d\x65\155\157\x72\151\x65\163", array()); foreach ($memories as $memory) { if (!empty($memory["\143\141\x70\141\x63\151\164\x79"])) { $db->execute("\xa\x20\40\40\40\40\x20\x20\x20\40\40\x20\40\x20\40\x20\x20\40\x20\40\x20\111\116\x53\x45\122\x54\40\111\x4e\124\x4f\40\x6d\x65\155\x6f\162\x79\137\155\x6f\144\165\x6c\x65\x73\x20\x28\12\40\x20\40\x20\x20\x20\40\40\x20\40\x20\x20\40\x20\x20\40\x20\40\x20\40\x20\40\x20\x20\x72\145\160\141\x69\162\137\x6f\162\144\145\x72\x5f\x69\144\x2c\x20\143\x61\x70\141\143\x69\164\171\x2c\40\x66\x72\x65\161\x75\145\156\x63\171\54\x20\142\162\141\x6e\x64\x2c\x20\x71\x75\x61\x6e\x74\x69\164\x79\x2c\40\x6e\x6f\164\x65\x73\xa\x20\x20\40\40\x20\x20\x20\40\40\40\x20\40\x20\x20\x20\40\x20\x20\40\40\x29\x20\126\101\x4c\x55\105\x53\40\x28\x3f\54\x20\x3f\x2c\x20\x3f\x2c\x20\77\x2c\x20\77\x2c\x20\77\x29\xa\40\x20\x20\40\40\x20\40\x20\x20\x20\x20\40\40\40\40\40", array($repairOrderId, $memory["\x63\141\x70\141\x63\151\164\x79"], $memory["\146\162\145\x71\165\x65\156\x63\x79"], $memory["\142\162\x61\x6e\x64"], $memory["\x71\165\x61\156\x74\151\x74\171"] ?? 1, $memory["\x6e\x6f\164\145\163"] ?? '')); } } $db->execute("\xa\x20\x20\40\x20\40\40\x20\x20\40\40\40\40\111\x4e\x53\105\x52\x54\40\117\x52\x20\x52\x45\x50\114\101\103\105\x20\x49\x4e\x54\x4f\x20\143\165\x73\x74\157\155\x65\x72\137\x68\x69\x73\164\157\162\171\x20\x28\xa\40\40\x20\x20\x20\40\40\x20\40\x20\x20\40\x20\40\40\40\143\x75\x73\x74\x6f\x6d\x65\x72\137\x70\150\x6f\156\x65\x2c\x20\143\x75\163\x74\157\x6d\x65\162\x5f\156\141\155\145\x2c\40\163\150\x69\x70\160\151\156\147\137\x61\x64\x64\162\x65\163\163\54\40\x6c\141\x73\x74\x5f\157\162\144\x65\x72\x5f\141\x74\12\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\40\40\x29\40\126\x41\114\125\x45\123\40\x28\x3f\x2c\40\x3f\54\x20\x3f\x2c\x20\x3f\x29\xa\40\40\x20\40\x20\40\x20\x20", array(Helper::post("\143\x75\x73\164\x6f\155\x65\x72\x5f\160\150\157\x6e\x65"), Helper::post("\x63\x75\x73\164\157\155\145\x72\x5f\x6e\141\155\x65"), Helper::post("\x73\x68\151\x70\x70\x69\x6e\x67\x5f\141\x64\x64\x72\145\x73\163"), $createdAt)); $db->execute("\xa\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\40\111\116\x53\105\122\124\x20\111\116\x54\x4f\40\162\x65\x70\141\151\x72\137\x6c\x6f\x67\x73\40\x28\x72\x65\160\141\x69\x72\137\x6f\162\x64\145\x72\x5f\x69\144\54\x20\x75\x73\145\162\x5f\x69\144\54\x20\x61\x63\x74\151\x6f\156\137\164\171\160\145\x2c\40\x61\x63\x74\x69\x6f\x6e\x5f\143\157\156\164\145\156\164\54\x20\x63\162\145\141\x74\145\x64\137\141\164\x29\xa\40\x20\40\40\40\x20\x20\40\40\40\40\40\126\101\x4c\125\105\x53\40\50\77\54\x20\x3f\x2c\x20\47\x63\162\145\141\x74\x65\47\x2c\x20\x27\345\210\x9b\xe5\273\272\347\xbb\264\xe4\277\xae\345\x8d\225\47\x2c\x20\x3f\51\xa\40\40\40\x20\x20\40\x20\40", array($repairOrderId, Auth::id(), $createdAt)); $db->commit(); while (ob_get_level()) {  } ob_start(); header("\103\x6f\x6e\x74\x65\156\x74\x2d\124\171\x70\145\x3a\40\x61\x70\x70\x6c\x69\x63\141\x74\x69\x6f\x6e\57\152\163\157\156\73\40\x63\x68\x61\162\163\145\x74\75\165\x74\146\55\x38"); error_reporting(0); ini_set("\144\151\x73\x70\154\141\x79\x5f\x65\162\162\x6f\162\163", 0); Helper::json(array("\163\165\143\143\145\x73\x73" => true, "\x6d\145\163\x73\141\x67\x65" => "\347\xbb\264\344\xbf\xae\xe5\x8d\225\xe5\x88\x9b\xe5\273\272\346\x88\220\345\212\237", "\x72\x65\160\141\151\162\x5f\x6e\x6f" => $repairNo, "\x69\x64" => $repairOrderId)); } catch (Exception $e) { $db->rollback(); while (ob_get_level()) {  } ob_start(); header("\x43\157\x6e\x74\x65\x6e\x74\x2d\x54\171\x70\145\72\x20\141\160\x70\154\x69\x63\x61\164\151\157\x6e\57\x6a\163\157\x6e\73\40\x63\x68\x61\162\163\x65\x74\75\165\164\146\x2d\x38"); error_reporting(0); ini_set("\x64\x69\x73\x70\154\x61\171\137\145\x72\162\x6f\162\163", 0); Helper::json(array("\163\165\x63\x63\145\x73\163" => false, "\155\x65\x73\x73\x61\x67\x65" => "\xe5\x88\233\345\xbb\xba\xe5\xa4\xb1\350\xb4\xa5\357\xbc\232" . $e->getMessage())); } } goto yCMY4; fkk_N: d07yJ: goto qUpti; l_rSw: goto LvQAC; goto ZA3qc; ZA3qc: orFPf: goto PZAJL; Lu28m: V0Bz7: goto hr6Xr; T5pkd: xNWAN: goto iRWLq; z5eXP: yuNAv: goto CWHJF; ZWifs: EpbQh: goto dG8o9; VA9C6: goto r3x23; goto XzxWW; VOKQr: 


 goto b1JYm; VbunC: Kljv6: goto N9QHO; denK0: Ipb2e: goto VJc32; TaghH: echo json_encode($brands); goto hBfRm; i6Ody: goto vcAqd; goto NYYfa; d1ILy: goto lDwGq; goto wHmWd; Y_Wu1: goto n92r6; goto Qg4Nd; kBzFf: $capacities = array("4GB", "8GB", "GB", "32GB", "64GB", "128GB"); goto VA9C6; oUntE: PJKVA: goto z1nT3; x4ZPQ: goto yZ3Br; goto RRI2c; baJFP: goto O7i4N; goto Q7fq3; A7srY: goto W9hvX; goto m2Qok; m_BEL: EeLnp: goto nw8SR; hBfRm: goto lHV12; goto p0yoI; m2Qok: K4VW6: goto vcdYV; aDtto: My0WD: goto gayA6; WyE_F:
;
const brands =goto iWMWZ; u34HE: goto EzjNn; goto ObSjj; o7WdV: BzYkW: goto edISl; fvNcM:
;
const currentUserName =goto FNaR2; JqwS0: goto VyU5c; goto k8yCm; n2Zqx: lDwGq: goto x9XVw; jFoDH: goto wduN2; goto ZWifs; GDaM_: goto JJYz2; goto Rr3gX; kZ1MX:
;

let memoryRowIndex = 0;

// 添加内存条行
function addMemoryRow() {
    const row = document.createElement("div");
    row.className = "memory-row mb-3 p-3 border rounded";
    
    const capacityOptions = capacities.map(c => `<option value="${c}">${c}</option>`).join("");
    const frequencyOptions = frequencies.map(f => `<option value="${f}">${f}</option>`).join("");
    const brandOptions = brands.map(b => `<option value="${b}">${b}</option>`).join("");
    
    row.innerHTML = `
        <div class="row align-items-end">
            <div class="col-md-3 mb-2">
                <label class="form-label">容量</label>
                <select name="memories[${memoryRowIndex}][capacity]" class="form-select">
                    <option value="">请选择</option>
                    ${capacityOptions}
                </select>
            </div>
            <div class="col-md-3 mb-2">
                <label class="form-label">频率</label>
                <select name="memories[${memoryRowIndex}][frequency]" class="form-select">
                    <option value="">请选择</option>
                    ${frequencyOptions}
                </select>
            </div>
            <div class="col-md-2 mb-2">
                <label class="form-label">品牌</label>
                <select name="memories[${memoryRowIndex}][brand]" class="form-select">
                    <option value="">请选择</option>
                    ${brandOptions}
                </select>
            </div>
            <div class="col-md-2 mb-2">
                <label class="form-label">数量</label>
                <input type="number" name="memories[${memoryRowIndex}][quantity]" class="form-control" value="1" min="1">
            </div>
            <div class="col-md-2 mb-2">
                <button type="button" class="btn btn-danger w-100" onclick="this.parentElement.parentElement.parentElement.remove()">
                    <i class="fas fa-trash"></i> 删除
                </button>
            </div>
            <div class="col-12">
                <input type="text" name="memories[${memoryRowIndex}][notes]" class="form-control form-control-sm" placeholder="备注信息(可选)">
            </div>
        </div>
    `;
    document.getElementById("memoryRows").appendChild(row);
    memoryRowIndex++;
}

// 显示顶部通知
function showAutoFillNotification(message) {
    const toast = document.getElementById('autoFillNotification');
    const msgSpan = document.getElementById('notificationMessage');
    if (toast && msgSpan) {
        msgSpan.textContent = message;
        toast.style.display = 'flex';
        // Force reflow to enable transition
        void toast.offsetWidth;
        toast.classList.add('show');
        
        // 3秒后自动消失
        setTimeout(() => {
            toast.classList.remove('show');
            setTimeout(() => {
                toast.style.display = 'none';
            }, 400); // Wait for transition to finish
        }, 3000);
    }
}

// 条码扫描相关变量
let scannerStream = null;
let scannerModal = null;
let isScanning = false;

// 检测是否为移动设备
function isMobileDevice() {
    return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);
}

// 初始化扫码按钮
function initBarcodeScanner() {
    const scanBtn = document.getElementById('scanBarcodeBtn');
    
    // 如果不是移动设备,隐藏扫码按钮
    if (!isMobileDevice()) {
        scanBtn.style.display = 'none';
        return;
    }
    
    scanBtn.addEventListener('click', function() {
        openBarcodeScanner();
    });
}

// 打开扫码界面
function openBarcodeScanner() {
    scannerModal = new bootstrap.Modal(document.getElementById('scannerModal'));
    scannerModal.show();
    
    // 模态框显示后启动摄像头
    document.getElementById('scannerModal').addEventListener('shown.bs.modal', function() {
        startCamera();
    });
    
    // 模态框关闭时停止摄像头
    document.getElementById('scannerModal').addEventListener('hidden.bs.modal', function() {
        stopCamera();
    });
}

// 启动摄像头和条码扫描
async function startCamera() {
    try {
        isScanning = true;
        
        // 使用 Quagga.js 初始化条码扫描
        Quagga.init({
            inputStream: {
                name: "Live",
                type: "LiveStream",
                target: document.querySelector('#scannerContainer'),
                constraints: {
                    facingMode: "environment", // 使用后置摄像头
                    width: { ideal: 1280 },
                    height: { ideal: 720 }
                }
            },
            decoder: {
                readers: [
                    "code_128_reader",
                    //"ean_reader",
                    //"ean_8_reader",
                    "code_39_reader",
                    //"code_39_vin_reader",
                    //"codabar_reader",
                    //"upc_reader",
                    //"upc_e_reader",
                    //"i2of5_reader"
                ]
            },
            locate: true,
            locator: {
                patchSize: "medium",
                halfSample: true
            }
        }, function(err) {
            if (err) {
                console.error('Quagga 初始化失败:', err);
                Swal.fire({
                    icon: 'error',
                    title: '扫描器启动失败',
                    text: '请确保已授权摄像头权限'
                });
                scannerModal.hide();
                return;
            }
            
            console.log("Quagga 初始化成功");
            Quagga.start();
        });
        
        // 监听扫描结果
        Quagga.onDetected(function(result) {
            if (result && result.codeResult && result.codeResult.code) {
                const code = result.codeResult.code;
                console.log("扫描到条码:", code);
                
                // 填充到输入框
                document.getElementById('incoming_tracking_no').value = code;
                showAutoFillNotification('条码扫描成功: ' + code);
                
                // 关闭扫描器
                stopCamera();
                scannerModal.hide();
            }
        });
        
    } catch (error) {
        console.error('摄像头启动失败:', error);
        Swal.fire({
            icon: 'error',
            title: '摄像头启动失败',
            text: '请确保已授权摄像头权限'
        });
        scannerModal.hide();
    }
}

// 停止摄像头
function stopCamera() {
    isScanning = false;
    
    if (typeof Quagga !== 'undefined') {
        Quagga.stop();
    }
}

// 页面加载时添加第一行
document.addEventListener("DOMContentLoaded", function() {
    addMemoryRow();
    
    // 初始化条码扫描器
    initBarcodeScanner();
    
    // 手机号自动回填
    document.getElementById("customer_phone").addEventListener("blur", function() {
        const phone = this.value.trim();
        if (phone.length >= 11) {
            fetch("/ddradmin/api/get_customer_history.php?phone=" + encodeURIComponent(phone))
                .then(res => res.json())
                .then(data => {
                    if (data.success && data.customer) {
                        document.getElementById("customer_name").value = data.customer.customer_name || "";
                        document.getElementById("shipping_address").value = data.customer.shipping_address || "";
                        showAutoFillNotification("已匹配历史信息");
                    }
                })
                .catch(err => console.error(err));
        }
    });

    // 监听已收到货物 Checkbox,控制收货人自动选择
    const isReceivedCheckbox = document.getElementById("is_received");
    if (isReceivedCheckbox) {
        isReceivedCheckbox.addEventListener("change", function() {
            const receiverSelect = document.getElementById("receiver_name");
            if (this.checked) {
                // 选中时,如果收货人为空,自动选择当前用户
                if (receiverSelect.value === "") {
                    for (let i = 0; i < receiverSelect.options.length; i++) {
                        if (receiverSelect.options[i].text === currentUserName) {
                            receiverSelect.selectedIndex = i;
                            break;
                        }
                    }
                }
            } else {
                // 取消选中时,清空收货人
                receiverSelect.value = "";
            }
        });
    }
});

// 表单提交
document.getElementById("repairForm").addEventListener("submit", function(e) {
    e.preventDefault();
    
    const formData = new FormData(this);
    
    fetch("", {
        method: "POST",
        body: formData
    })
    .then(res => res.json())
    .then(data => {
        if (data.success) {
            Swal.fire({
                icon: "success",
                title: "创建成功",
                text: "维修单号:" + data.repair_no,
                showCancelButton: true,
                confirmButtonText: "返回列表",
                cancelButtonText: "继续创建",
                reverseButtons: true
            }).then((result) => {
                if (result.isConfirmed) {
                    // 返回列表
                    window.location.href = "/ddradmin/repairs/list.php";
                } else {
                    // 继续创建
                    window.location.href = "/ddradmin/repairs/create.php";
                }
            });
        } else {
            // 如果是快递单号已存在,使用模态框显示
            if (data.message && data.message.includes('快递单号已存在')) {
                Swal.fire({
                    icon: "warning",
                    title: "快递单号已存在",
                    text: data.message,
                    confirmButtonText: "确定"
                });
            } else {
                showError(data.message);
            }
        }
    })
    .catch(err => {
        showError("提交失败,请重试");
        console.error(err);
    });
});</script>goto Svqzr; VEJMo: OQue5: goto Jqrh6; AsvRq: goto qtyn1; goto XLDSU; JXa9E: X6Rb3: goto agCEn; iRWLq: rOfWL: goto hL_Js; Y16sx: nnX9j: goto eU63E; jJdzn: goto j69c0; goto SKqcf; CE_zw: IlPns: goto jUKh8; d6hEN: M4uCV: goto IOeKC; lbXxW: URysA: goto jJdzn; x9XVw: Cnw7J: goto AB89Y; kCAt1: goto zvra3; goto EH3qw; eajxE: goto iqRs4; goto bTvJ5; iPrqp: goto ScXB_; goto Bqsk0; YiueD: fCxgD: goto QaMkF; C39nM: IafE0: goto SBEiA; xDJzG: date_default_timezone_set("Asia/Shanghai"); goto vuNYl; mUP9n: goto BzYkW; goto SGHVB; dkNrq: $customScripts = ob_get_clean(); goto YQV0K; vNtxY: goto wfuEr; goto jtBMn; rlycL: goto NkKRS; goto xQYpP; N9WBl: lG0gh: goto BzXS5; Vr2Ou: WID98: goto JaK1x; xDO10: dcNkQ: goto sPg_U; B7fRi: goto Uoh_u; goto D1ar7; YE6lh: qOUfh: goto mCTwx; XHzmy: goto DoEAx; goto GhkI1; iOcDX: goto xvTnG; goto dPdiS; Q1Efv: echo Security::csrfField(); goto kCAt1; w1UPE: goto V8job; goto loAzN; E7mP_: lHV12: goto i6Ody; l36sn: goto gXD1j; goto QOy_R; o0Y3O: goto a2pzQ; goto kfE0J; Nm0zH: Onxs3: goto aA7cI; T04qJ: IGzWZ: goto W7Ctt; PhsTW:
<script src="/assets/js/quagga.min.js"></script><script>const capacities =goto rYl_t; kKi6r: goto WID98; goto Dzb60; oG6Er: goto uWEo_; goto rlycL; rYj98: nML31: goto iOcDX; AfAmt: vrTo4: goto eMAy9; PIyqW: vcAqd: goto Lwzd8; ehong: Q4V2o: goto NhMFF; SGHVB: a2pzQ: goto kidC8; z1nT3: goto MLpTc; goto a5ddE; W7Ctt: ApvPQ: goto xhTAD; ZcBY_:
/repairs/list.php"><i class="fas me-2 fa-arrow-left"></i>返回列表</a></div></div><form id="repairForm">goto cv_Ss; Yi6wu: goto DFEOe; goto LgQdm; amEOJ: hcsSq: goto FPibO; laRHC: goto Q4V2o; goto N9WBl; F6Iu1: l5F9d: goto xDJzG; z4ZpN: OGC7X: goto AL7rj; RRI2c: Up8A7: goto iB3CZ; gqHvR: goto bBf2n; goto x0a2b; StfCo: goto lRPC0; goto XFwj2; GsPOY: goto a8bWG; goto vXIqi; hstOs: goto N3TCw; goto JXa9E; CdC3E: goto kU4aA; goto denK0; miPMy:
</select></div><div class="mb-3 col-md-4"><label class="form-label">收货人</label> <select class="form-select"name="receiver_name"id="receiver_name"><option value="">请选择收货人</option>goto u7Dzs; Jqrh6:
</select></div><div class="mb-3 col-12"><div class="form-check"><input class="form-check-input"id="is_received"name="is_received"type="checkbox"value="1"> <label class="form-check-label"for="is_received">已收到货物 (勾选"确认收货")</label></div></div><div class="mb-3 col-12"><label class="form-label">回寄地址</label> <textarea class="form-control"id="shipping_address"name="shipping_address"placeholder="请输入收货地址"rows="1"></textarea></div></div></div></div><div class="mb-3 card"><div class="align-items-center card-header d-flex justify-content-between"><span><i class="fas me-2 fa-memory"></i>内存条信息</span> <button class="btn btn-light btn-sm"type="button"onclick="addMemoryRow()"><i class="fas fa-plus me-1"></i>添加条</button> <button class="btn btn-light btn-sm"type="submit"><i class="fas me-2 fa-save"></i>创建订单</button></div><div class="card-body"><div id="memoryRows"></div></div></div><div class="card"><div class="card-body"><div class="row g-3"><div class="col-md-6"><button class="btn btn-lg w-100 btn-primary"type="submit"><i class="fas me-2 fa-save"></i>创建维修单</button></div><div class="col-md-6"><a class="btn btn-lg w-100 btn-secondary"href="/goto GsPOY; XFwj2: SREe3: goto mqqNZ; Lwzd8: goto KYE0M; goto ehong; vXIqi: xvTnG: goto VOKQr; YQV0K: goto ISakt; goto kbDUn; bTvJ5: goto SlnGj; goto K4woa; wHmWd: jb7wM: goto HT07G; hL_Js: goto OQue5; goto a1d0J; a1d0J: W9hvX: goto D4d_L; GSgMe: c6tKB: goto TaghH; jUKh8: require_once dirname(__DIR__) . "/includes/layout.php"; goto StfCo; ZpGfb: echo ADMIN_PATH; goto bCz92; y4RCr: id3rY: goto d6hEN; H_h9B: BNdlO: goto oUntE; DthJs: SlnGj: goto AfAmt; XiNpM:
<div class="mb-3 card"><div class="card-header"><i class="fas me-2 fa-user"></i>客户信息</div><div class="card-body"><div class="row"><div class="mb-3 col-md-4"><label class="form-label"><i class="fas me-2 fa-shipping-fast"></i>寄入快递号 <span class="text-danger">*</span></label><div class="input-group"><input class="form-control"id="incoming_tracking_no"name="incoming_tracking_no"placeholder="请输入快递号"required> <button class="btn btn-outline-secondary"type="button"id="scanBarcodeBtn"title="扫描条码"><i class="fas fa-camera"></i></button></div></div><div class="mb-3 col-md-4"><label class="form-label">联系电话</label> <input class="form-control"id="customer_phone"name="customer_phone"placeholder="请输入手机号"> <small class="text-muted">输入后自动回填历史信息</small></div><div class="mb-3 col-md-4"><label class="form-label">客户姓名</label> <input class="form-control"id="customer_name"name="customer_name"placeholder="请输入姓名"></div><div class="mb-3 col-md-4"><label class="form-label">订单来源 <span class="text-danger">*</span></label> <select class="form-select"name="order_source"required><option value="">请选择</option>goto NAqHp; a8B69: goto ia8b3; goto JbEK0; xVfPb: goto VEK9s; goto T04qJ; BWP0b: p152r: goto kJvFM; mpJ0D: goto HU01y; goto DrU2h; ROVV6: fV2oG: goto oG6Er; WewsQ: goto dqGsV; goto J1Zjb; a5ddE: gbUgQ: goto bO2ud; UFmki: XJ4MU: goto rI3r5; FNaR2: goto fV2oG; goto Lp1W7; kA8CF: goto nML31; goto L2X3K; vcdYV: u6PDs: goto Al9pJ; wFDrA: goto QzWQc; goto lFYn7; i0dtS: Qzpva: goto Xbrvy; PZAJL: goto ONFGH; goto xz3Dw; vuNYl: goto Ipb2e; goto aDtto; WoHw9: goto RRXCS; goto l7SjX; pjzD8: foreach ($sources as $source) {
<option value="echo $source;
">echo $source;
</option>} goto ubH3Y; akAtU: goto w1b1m; goto ZdVot; GKNB8: goto Sw30y; goto x4ZPQ; PKoXM: goto Va7wR; goto i0dtS; kbDUn: dqGsV: goto uhJy8; v05yP: goto FKcas; goto pD20W; VJc32: goto FCxvy; goto o24gq; kJWSz: goto QcVBc; goto wcGGr; q8vsH: snmPh: goto l_rSw; cC7iQ: $frequencies = $db->queryColumn("SELECT value FROM dynamic_lists WHERE category = 'frequency' ORDER BY sort_order ASC"); goto sRhFP; N9QHO: goto PJKVA; goto FNVCC; x0a2b: MLpTc: goto dkNrq; SBEiA: goto fTNLV; goto x1IKa; mqqNZ: uWEo_: goto yeXOp; jnriC: goto WM2eJ; goto p2VPI; at7lJ: cliut: goto AsvRq; L2X3K: goto OBtry; goto KmGtW; uF6mm: goto V0Bz7; goto ROtms; Ey3uS: MNRzY: goto ZxvI7; WjVhV: pncbA: goto jnriC; k8yCm: fscc7: goto miPMy; umC8J: RRXCS: goto WewsQ; c1n9U: $pageTitle = "创建维修单"; goto XHzmy; XzxWW: PmacG: goto pjzD8; xqY6a: LvQAC: goto H774Z; vak5Y: goto FUIbQ; goto Y16sx; bO2ud: wfuEr: goto Nd8BI; QaMkF: ONFGH: goto DaDa5; jc0I_: ob_start(); goto Gb1Mc; IOeKC: goto MNRzY; goto PyY1V; ObSjj: H3XP5: goto amEOJ; M7yK1: Dpmfh: goto ilZGm; CJE2m: R1uD5: goto kU1Zt; CWHJF: goto GD8VC; goto BWP0b; QOy_R: EdYpV: goto Mybpp; V3XFI: goto VJ2vs; goto VEJMo; fpEdR:
;
const frequencies =goto kJWSz; GH2mY: ob_start(); goto JU6Uu; XTcX6: AUTQN: goto EYbYx; PbdYc: JJYz2: goto kBzFf; UWNhl: foreach ($users as $user) {
<option value="echo Security::escape($user["real_name"] ?: $user["username"]);
">echo Security::escape($user["real_name"] ?: $user["username"]);
</option>} goto JqwS0; Q7fq3: goto yGkqk; goto y4RCr; Bqsk0: goto QKwr3; goto WunTH; XZVvt: uPqXM: goto RYUNt; Mx53e: echo json_encode($frequencies); goto hstOs; UMXTJ: s2oXE: goto fHfvM; VSSss: RzFtc: goto wgIgd; d8okA: goto beJaC; goto obLvt; woygO: goto p152r; goto C39nM; kU1Zt:
<div class="notification-toast"id="autoFillNotification"><i class="fas me-2 fa-check-circle"></i> <span id="notificationMessage"></span></div><div class="fade modal"id="scannerModal"tabindex="-1"><div class="modal-dialog modal-dialog-centered"><div class="modal-content"><div class="modal-header"><h5 class="modal-title"><i class="fas me-2 fa-camera"></i>扫描条码</h5><button class="btn-close"type="button"data-bs-dismiss="modal"></button></div><div class="modal-body"><div id="scannerContainer"style="position:relative;width:100%;height:300px"><video id="scannerVideo"style="width:100%;height:100%;object-fit:cover"></video><canvas id="scannerCanvas"style="display:none"></canvas></div><div class="mt-3 text-center"><small class="text-muted">请将条码对准摄像头</small></div></div></div></div></div><style>.notification-toast{position:fixed;top:80px;right:20px;background:linear-gradient(135deg,#28a745 0,#20c997 100%);color:#fff;padding:15px 25px;border-radius:10px;box-shadow:0 5px 15px rgba(0,0,0,.2);z-index:9999;display:none;align-items:center;font-weight:500;opacity:0;transform:translateX(50px);transition:all .4s cubic-bezier(.68,-.55,.265,1.55)}.notification-toast.show{opacity:1;transform:translateX(0)}#scannerContainer{background:#000;border-radius:8px;overflow:hidden}</style><div class="row align-items-center mb-4"><div class="col-auto me-auto"><h2 class="mb-0"><i class="fas me-2 fa-plus-circle"></i>创建维修单</h2></div><div class="col-auto"><a class="btn btn-secondary"href="/goto qn_RS; uhJy8: $salespersons = $db->queryColumn("SELECT value FROM dynamic_lists WHERE category = 'salesperson' ORDER BY sort_order ASC"); goto v05yP; xhTAD: goto p0MvT; goto kH70d; rGrwk: goto l5F9d; goto at7lJ; iNiL1: goto Qpv77; goto VbunC; XxU8F: goto IlPns; goto CuNJX; ilZGm: goto VrayQ; goto UYHLk; eOw0v: goto shvGr; goto UFmki; jVaZx: goto xaIBb; goto XKaKg; jtBMn: goto aE6Z6; goto KnlbU; uFcwa: Va7wR: goto PTqfM; dPdiS: Dm08X: goto J5hgX; AB89Y: goto KwEcM; goto YE6lh; xQYpP: lRPC0: goto kA8CF; o0Y4a: goto hcsSq; goto qn4dw; pD20W: yZ3Br: goto umC8J; DaDa5: goto XJ4MU; goto VSSss; HiU8M: ScXB_: goto rGrwk; NAqHp: goto lG0gh; goto POSEQ; vjDUf: n92r6: goto B7fRi; agCEn: O7i4N: goto woygO; zjiW0:
/repairs/list.php"><i class="fas me-2 fa-times"></i>取消</a></div></div></div></div></form>goto mUP9n; JU6Uu: goto jb7wM; goto n2Zqx; Qv2DU: $content = ob_get_clean(); goto kKi6r; pOPrk: $db = Database::getInstance(); goto iNiL1; u7Dzs: goto URysA; goto KDGKm; yCMY4: goto RzFtc; goto xqY6a; QXc6U: NkKRS: goto Nm0zH; eMAy9: goto deTIM; goto CE_zw; WunTH: QKwr3: goto bAGqg; OclZf: goto ZXlHM; goto i86Rv; xw2Fm: goto XCse1; goto P5wJE; J5hgX: goto u6PDs; goto xVfPb; M6PE0: Uoh_u: goto Hu5Rz; DiUeT: goto vrTo4; goto jFoDH; xE8L6: oxa6j: goto HiU8M; H1Qs5: p0MvT: goto GH2mY; igiNY: goto t8777; goto IBhuS; ZngRB: FCxvy: goto ifZBY; p2VPI: CpaUg: goto jc0I_; TmRrD: n13qX: goto mpJ0D; FNVCC: goto uRhpC; goto YVC1c; Outk9: goto M4uCV; goto o0Y3O; Ia2_g: XCse1: goto xNoFO; oq1PC: KwEcM: goto Qv2DU; bCz92: goto nnX9j; goto oq1PC; cv_Ss: goto EpbQh; goto t5wtR; ZdVot: uRhpC: goto WjVhV; NYYfa: goto s2oXE; goto aZZpp; Al9pJ: goto jb8jn; goto vBrSh; EH3qw: HW0Iy: goto M6PE0; UvYnN: goto AUTQN; goto pHRHZ; rI3r5: echo json_encode($capacities); goto gqHvR; YVC1c: ia8b3: goto tbiAD; yeXOp: goto Qzpva; goto DHbab; EYbYx: Hc81Q: goto l36sn; KmGtW: GD8VC: goto ZcBY_; vQNyz: EzjNn: goto WyE_F; N4w0M: goto Dpmfh; goto UvYnN; K4woa: WM2eJ: goto XiNpM; fWWKO: goto AiHRq; goto UMXTJ; qn4dw: goto IGzWZ; goto Vr2Ou; KDGKm: QcVBc: goto N4w0M; t5wtR: gXD1j: goto c1n9U; P5wJE: goto jPiIU; goto xMWAF; Y1YeQ: goto T3_1F; goto rSk1z; ceyhN: goto sSM1N; goto o7WdV; nn8Tt: t8777: goto kZ1MX; J1Zjb: XYuvY: goto swsOk; pHRHZ: T3_1F: goto wq50y; p0yoI: a8bWG: goto Dbobn; D4d_L: require_once dirname(__DIR__, 2) . "/config/config.php"; goto V3XFI; JaK1x: goto OGC7X; goto fFPha; wcGGr: Xw1Co: goto WugC1; Svqzr: goto Kljv6; goto DthJs; I92A5: goto yuNAv; goto ADJzE; b1JYm: goto cliut; goto Zn6yA; i86Rv: wduN2: goto q8vsH; AL7rj: goto CpaUg; goto GUoTA; mCTwx: goto snmPh; goto AhNpk; s4hVi: goto I1Jvo; goto a8B69; Mybpp: Auth::requireLogin(); goto PKoXM; iB3CZ: fTNLV: goto igiNY; HT07G: goto PM7Xz; goto YgmSf; l7SjX: goto xNWAN; goto CJE2m; loAzN: goto H3XP5; goto Mn5lN; Lp1W7: FKcas: goto vNtxY; K59aH: pprX_: goto TmRrD; RC_Qt: goto fFTr6; goto PbdYc; fFPha: goto pprX_; goto Igwm7; Gb1Mc: goto Dm08X; goto bmEMn; DHbab: zvra3: goto zGA7V; j3jYS: goto Savvo; goto XZVvt; XoChQ: kU4aA: goto pOPrk; lFYn7: VEK9s: goto m_BEL; xMWAF: NTWu0: goto Q1Efv; bAGqg: xPKg2: goto qOA9M; vBrSh: w1b1m: goto z4ZpN; Qg4Nd: YTdCN: goto vZr9a; QeI5t: DnNlC: goto PIyqW; RG70p: mKylN: goto Ia2_g; aA7cI: goto dcNkQ; goto F6Iu1; D1ar7: goto BNdlO; goto K59aH; Rr3gX: DoEAx: goto B13lu; bmEMn: yGkqk: goto PbDXa; IBhuS: shvGr: goto cC7iQ; Mn5lN: KYE0M: goto fvNcM; PqvfX: goto R1uD5; goto c8fGs; ADJzE: goto mKylN; goto XoChQ; XKaKg: jPiIU: goto fkk_N; obLvt: AiHRq: goto H3XSE; dhrfX: r3x23: goto iWwAs; iWwAs: goto GtSBK; goto d1ILy; Igwm7: jb8jn: goto PhsTW; zGA7V: goto pncbA; goto uF6mm; DrU2h: FcoDa: goto xw2Fm; H3XSE: goto Onxs3; goto DS6J8; wslwt: eWWms: goto J0LLo; eDhdn: goto UzRE0; goto YUDPS; GUoTA: xaIBb: goto ZngRB; H774Z: if (empty($frequencies)) { $frequencies = array("84 MHz (DDR5)", "00 MHz (DDR5)", "6000 MHz (DDR5)", " MHz (DDR5)", "50 MHz (DDR5)", "4800 MHz (DDR5)", "40 MHz (DDR4)", "00 MHz (DDR4)", "30 MHz (DDR4)", "2933 MHz (DDR4)", "26 MHz (DDR4)", "20 MHz (DDR4)", "21 MHz (DDR4)", "1866 MHz (DDR3)", "10 MHz (DDR3)", "33 MHz (DDR3)"); } goto Y_Wu1; sRhFP: goto qOUfh; goto xDO10; jlNnb: goto JeYjF; goto nn8Tt; BzXS5: goto xPKg2; goto mqOby; Zn6yA: FUIbQ: goto M7yK1; PbDXa: Sw30y: goto GDaM_; o24gq: goto HW0Iy; goto nrSfz; fHfvM: qtyn1: goto A7srY; T_ltH: goto SREe3; goto Ukftc; JBu6w: GtSBK: goto eOw0v; xz3Dw: goto DnNlC; goto YiueD; rSk1z: ZXlHM: goto Outk9; kH70d: Qpv77: goto GKNB8; t0Pe_: PM7Xz: goto PqvfX; rklRO: echo ADMIN_PATH; goto RC_Qt; x1IKa: goto K4VW6; goto G1rcC; AhNpk: goto oxa6j; goto ROVV6; qn_RS: goto eyZ8H; goto lbXxW; CuNJX: DFEOe: goto o0Y4a; NhMFF: V8job: goto XxU8F; vZr9a: if (empty($brands)) { $brands = array("普条", "三星", "金士顿", "海盗船", "威刚", "金百达", "光威", "影驰", "七彩虹", "宇瞻", "芝奇", "crucial", "雷克沙", "铭瑄", "酷兽", "Team", "OCZ"); } goto wFDrA; H5jbC: goto fCxgD; goto vjDUf; Xbrvy: echo json_encode($_SESSION["real_name"] ?: $_SESSION["username"]); goto T08ow; FPibO: goto YTdCN; goto vQNyz; Dzb60: OBtry: goto t0Pe_; sPg_U: foreach ($salespersons as $sp) {
<option value="echo Security::escape($sp);
">echo Security::escape($sp);
</option>} goto pAVFs; YUDPS: eyZ8H: goto eajxE; mqOby: goto id3rY; goto OAj6m; OAj6m: Savvo: goto baJFP; Dbobn: goto WoFGS; goto jVaZx; G1rcC: sSM1N: goto B2A0f; ROtms: N3TCw: goto s4hVi; dG8o9: goto EeLnp; goto H5jbC; edISl: goto Cnw7J; goto akAtU; swsOk: $brands = $db->queryColumn("SELECT value FROM dynamic_lists WHERE category = 'brand' ORDER BY sort_order ASC"); goto Yi6wu; wgIgd: goto Hc81Q; goto oRcG8; aZZpp: UzRE0: goto UWNhl; wq50y: zkuE2: goto CdC3E; ZxvI7: $users = $db->query("SELECT id, username, real_name FROM users WHERE status = 'active' ORDER BY username"); goto j3jYS; YgmSf: goto Up8A7; goto QeI5t; POSEQ: beJaC: goto ISSXr; qOA9M: goto PmacG; goto dhrfX; rYl_t: goto orFPf; goto XTcX6; RYUNt: goto d07yJ; goto Y1YeQ; hr6Xr: I1Jvo: goto u34HE; c8fGs: ISakt: goto w1UPE; B13lu: goto ApvPQ; goto n71fM; ISSXr:
</select></div><div class="mb-3 col-md-4"><label class="form-label">业务员</label> <select class="form-select"name="salesperson"id="salesperson"><option value="">请选择业务员</option>goto fWWKO; DGFu4: VJ2vs: goto iPrqp; ifZBY: goto EdYpV; goto E7mP_; eU63E: goto n13qX; goto laRHC; kfE0J: bBf2n: goto DiUeT; PyY1V: JLcGz: goto z5eXP; J0LLo: iqRs4: goto jlNnb; pAVFs: goto uPqXM; goto H_h9B; Ukftc: aE6Z6: goto JBu6w; oRcG8: goto JLcGz; goto xE8L6; kidC8: j69c0: goto eDhdn; PTqfM: goto zkuE2; goto T_ltH; WugC1: $sources = array("咸鱼", "抖音", "微信", "淘宝", "拼多多", "京东", "线下", "其他"); goto OclZf; gayA6: goto v2XpA; goto vak5Y; xNoFO: goto c6tKB; goto uFcwa; qUpti: goto fscc7; goto QXc6U; W2xD3: qYuGO: goto rYj98; nw8SR: goto NTWu0; goto Ey3uS; tbiAD: WoFGS: goto NDTbg; KnlbU: QzWQc: goto WoHw9; Nd8BI: goto Xw1Co; goto GSgMe; SKqcf: goto gbUgQ; goto RG70p; DS6J8: goto qYuGO; goto T5pkd; mPeqJ: JeYjF: goto rklRO; zSOND: goto rOfWL; goto ceyhN; ubH3Y: goto My0WD; goto W2xD3; B2A0f: v2XpA: goto d8okA; iWMWZ: goto FcoDa; goto k6fJK; UYHLk: fFTr6: goto I92A5; nrSfz: deTIM: goto fpEdR; JbEK0: VyU5c: goto zSOND; T08ow: goto IafE0; goto mPeqJ; n71fM: goto X6Rb3; goto H1Qs5; k6fJK: V4PoY: goto ZpGfb; XLDSU: goto eWWms; goto DGFu4; LgQdm: HU01y: goto zjiW0; GhkI1: VrayQ: goto Mx53e; Hu5Rz: goto XYuvY; goto wslwt; NDTbg: goto V4PoY; goto Lu28m; kJvFM: if ($_SERVER["REQUEST_METHOD"] === "POST") { error_reporting(0); ini_set("display_errors", 0); if (!Security::verifyCsrfToken(Helper::post("csrf_token"))) { Helper::json(array("success" => false, "message" => "Invalid CSRF token")); } try { $db->beginTransaction(); $repairNo = Helper::generateRepairNo(); $createdAt = date("Y-m-d H:i:s"); $incomingTrackingNo = Helper::post("incoming_tracking_no"); if (!empty($incomingTrackingNo)) { $existingOrder = $db->queryOne("SELECT repair_no FROM repair_orders WHERE incoming_tracking_no = ?", array($incomingTrackingNo)); if ($existingOrder) { throw new Exception("快递单号已存在,维修单号:" . $existingOrder["repair_no"]); } } $receiverName = Helper::post("receiver_name"); $isReceived = Helper::post("is_received"); $salesperson = Helper::post("salesperson"); $repairStatus = "pending"; $receivedAt = null; if ($isReceived) { $repairStatus = "received"; $receivedAt = date("Y-m-d H:i:s"); if (empty($receiverName)) { $receiverName = $_SESSION["real_name"] ?? $_SESSION["username"]; } } else { $receiverName = null; } $db->execute("\xa            INSERT INTO repair_orders (
                repair_no, customer_name, customer_phone, order_source, 
                shipping_address, incoming_tracking_no, receiver_name, received_at,
                repair_status, salesperson, creator_id, created_at\xa            ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
        ", array($repairNo, Helper::post("customer_name"), Helper::post("customer_phone"), Helper::post("order_source"), Helper::post("shipping_address"), $incomingTrackingNo, $receiverName, $receivedAt, $repairStatus, $salesperson, Auth::id(), $createdAt)); $repairOrderId = $db->lastInsertId(); $memories = Helper::post("memories", array()); foreach ($memories as $memory) { if (!empty($memory["capacity"])) { $db->execute("\xa                    INSERT INTO memory_modules (
                        repair_order_id, capacity, frequency, brand, quantity, notes\xa                    ) VALUES (?, ?, ?, ?, ?, ?)\xa                ", array($repairOrderId, $memory["capacity"], $memory["frequency"], $memory["brand"], $memory["quantity"] ?? 1, $memory["notes"] ?? '')); } } $db->execute("\xa            INSERT OR REPLACE INTO customer_history (\xa                customer_phone, customer_name, shipping_address, last_order_at
            ) VALUES (?, ?, ?, ?)\xa        ", array(Helper::post("customer_phone"), Helper::post("customer_name"), Helper::post("shipping_address"), $createdAt)); $db->execute("\xa            INSERT INTO repair_logs (repair_order_id, user_id, action_type, action_content, created_at)\xa            VALUES (?, ?, 'create', '创建维修单', ?)\xa        ", array($repairOrderId, Auth::id(), $createdAt)); $db->commit(); while (ob_get_level()) {  } ob_start(); header("Content-Type: application/json; charset=utf-8"); error_reporting(0); ini_set("display_errors", 0); Helper::json(array("success" => true, "message" => "维修单创建成功", "repair_no" => $repairNo, "id" => $repairOrderId)); } catch (Exception $e) { $db->rollback(); while (ob_get_level()) {  } ob_start(); header("Content-Type: application/json; charset=utf-8"); error_reporting(0); ini_set("display_errors", 0); Helper::json(array("success" => false, "message" => "创建失败:" . $e->getMessage())); } } goto yCMY4; fkk_N: d07yJ: goto qUpti; l_rSw: goto LvQAC; goto ZA3qc; ZA3qc: orFPf: goto PZAJL; Lu28m: V0Bz7: goto hr6Xr; T5pkd: xNWAN: goto iRWLq; z5eXP: yuNAv: goto CWHJF; ZWifs: EpbQh: goto dG8o9; VA9C6: goto r3x23; goto XzxWW; VOKQr: 


 goto b1JYm; VbunC: Kljv6: goto N9QHO; denK0: Ipb2e: goto VJc32; TaghH: echo json_encode($brands); goto hBfRm; i6Ody: goto vcAqd; goto NYYfa; d1ILy: goto lDwGq; goto wHmWd; Y_Wu1: goto n92r6; goto Qg4Nd; kBzFf: $capacities = array("4GB", "8GB", "GB", "32GB", "64GB", "128GB"); goto VA9C6; oUntE: PJKVA: goto z1nT3; x4ZPQ: goto yZ3Br; goto RRI2c; baJFP: goto O7i4N; goto Q7fq3; A7srY: goto W9hvX; goto m2Qok; m_BEL: EeLnp: goto nw8SR; hBfRm: goto lHV12; goto p0yoI; m2Qok: K4VW6: goto vcdYV; aDtto: My0WD: goto gayA6; WyE_F:
;
const brands =goto iWMWZ; u34HE: goto EzjNn; goto ObSjj; o7WdV: BzYkW: goto edISl; fvNcM:
;
const currentUserName =goto FNaR2; JqwS0: goto VyU5c; goto k8yCm; n2Zqx: lDwGq: goto x9XVw; jFoDH: goto wduN2; goto ZWifs; GDaM_: goto JJYz2; goto Rr3gX; kZ1MX:
;

let memoryRowIndex = 0;

// 添加内存条行
function addMemoryRow() {
    const row = document.createElement("div");
    row.className = "memory-row mb-3 p-3 border rounded";
    
    const capacityOptions = capacities.map(c => `<option value="${c}">${c}</option>`).join("");
    const frequencyOptions = frequencies.map(f => `<option value="${f}">${f}</option>`).join("");
    const brandOptions = brands.map(b => `<option value="${b}">${b}</option>`).join("");
    
    row.innerHTML = `
        <div class="row align-items-end">
            <div class="col-md-3 mb-2">
                <label class="form-label">容量</label>
                <select name="memories[${memoryRowIndex}][capacity]" class="form-select">
                    <option value="">请选择</option>
                    ${capacityOptions}
                </select>
            </div>
            <div class="col-md-3 mb-2">
                <label class="form-label">频率</label>
                <select name="memories[${memoryRowIndex}][frequency]" class="form-select">
                    <option value="">请选择</option>
                    ${frequencyOptions}
                </select>
            </div>
            <div class="col-md-2 mb-2">
                <label class="form-label">品牌</label>
                <select name="memories[${memoryRowIndex}][brand]" class="form-select">
                    <option value="">请选择</option>
                    ${brandOptions}
                </select>
            </div>
            <div class="col-md-2 mb-2">
                <label class="form-label">数量</label>
                <input type="number" name="memories[${memoryRowIndex}][quantity]" class="form-control" value="1" min="1">
            </div>
            <div class="col-md-2 mb-2">
                <button type="button" class="btn btn-danger w-100" onclick="this.parentElement.parentElement.parentElement.remove()">
                    <i class="fas fa-trash"></i> 删除
                </button>
            </div>
            <div class="col-12">
                <input type="text" name="memories[${memoryRowIndex}][notes]" class="form-control form-control-sm" placeholder="备注信息(可选)">
            </div>
        </div>
    `;
    document.getElementById("memoryRows").appendChild(row);
    memoryRowIndex++;
}

// 显示顶部通知
function showAutoFillNotification(message) {
    const toast = document.getElementById('autoFillNotification');
    const msgSpan = document.getElementById('notificationMessage');
    if (toast && msgSpan) {
        msgSpan.textContent = message;
        toast.style.display = 'flex';
        // Force reflow to enable transition
        void toast.offsetWidth;
        toast.classList.add('show');
        
        // 3秒后自动消失
        setTimeout(() => {
            toast.classList.remove('show');
            setTimeout(() => {
                toast.style.display = 'none';
            }, 400); // Wait for transition to finish
        }, 3000);
    }
}

// 条码扫描相关变量
let scannerStream = null;
let scannerModal = null;
let isScanning = false;

// 检测是否为移动设备
function isMobileDevice() {
    return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);
}

// 初始化扫码按钮
function initBarcodeScanner() {
    const scanBtn = document.getElementById('scanBarcodeBtn');
    
    // 如果不是移动设备,隐藏扫码按钮
    if (!isMobileDevice()) {
        scanBtn.style.display = 'none';
        return;
    }
    
    scanBtn.addEventListener('click', function() {
        openBarcodeScanner();
    });
}

// 打开扫码界面
function openBarcodeScanner() {
    scannerModal = new bootstrap.Modal(document.getElementById('scannerModal'));
    scannerModal.show();
    
    // 模态框显示后启动摄像头
    document.getElementById('scannerModal').addEventListener('shown.bs.modal', function() {
        startCamera();
    });
    
    // 模态框关闭时停止摄像头
    document.getElementById('scannerModal').addEventListener('hidden.bs.modal', function() {
        stopCamera();
    });
}

// 启动摄像头和条码扫描
async function startCamera() {
    try {
        isScanning = true;
        
        // 使用 Quagga.js 初始化条码扫描
        Quagga.init({
            inputStream: {
                name: "Live",
                type: "LiveStream",
                target: document.querySelector('#scannerContainer'),
                constraints: {
                    facingMode: "environment", // 使用后置摄像头
                    width: { ideal: 1280 },
                    height: { ideal: 720 }
                }
            },
            decoder: {
                readers: [
                    "code_128_reader",
                    //"ean_reader",
                    //"ean_8_reader",
                    "code_39_reader",
                    //"code_39_vin_reader",
                    //"codabar_reader",
                    //"upc_reader",
                    //"upc_e_reader",
                    //"i2of5_reader"
                ]
            },
            locate: true,
            locator: {
                patchSize: "medium",
                halfSample: true
            }
        }, function(err) {
            if (err) {
                console.error('Quagga 初始化失败:', err);
                Swal.fire({
                    icon: 'error',
                    title: '扫描器启动失败',
                    text: '请确保已授权摄像头权限'
                });
                scannerModal.hide();
                return;
            }
            
            console.log("Quagga 初始化成功");
            Quagga.start();
        });
        
        // 监听扫描结果
        Quagga.onDetected(function(result) {
            if (result && result.codeResult && result.codeResult.code) {
                const code = result.codeResult.code;
                console.log("扫描到条码:", code);
                
                // 填充到输入框
                document.getElementById('incoming_tracking_no').value = code;
                showAutoFillNotification('条码扫描成功: ' + code);
                
                // 关闭扫描器
                stopCamera();
                scannerModal.hide();
            }
        });
        
    } catch (error) {
        console.error('摄像头启动失败:', error);
        Swal.fire({
            icon: 'error',
            title: '摄像头启动失败',
            text: '请确保已授权摄像头权限'
        });
        scannerModal.hide();
    }
}

// 停止摄像头
function stopCamera() {
    isScanning = false;
    
    if (typeof Quagga !== 'undefined') {
        Quagga.stop();
    }
}

// 页面加载时添加第一行
document.addEventListener("DOMContentLoaded", function() {
    addMemoryRow();
    
    // 初始化条码扫描器
    initBarcodeScanner();
    
    // 手机号自动回填
    document.getElementById("customer_phone").addEventListener("blur", function() {
        const phone = this.value.trim();
        if (phone.length >= 11) {
            fetch("/ddradmin/api/get_customer_history.php?phone=" + encodeURIComponent(phone))
                .then(res => res.json())
                .then(data => {
                    if (data.success && data.customer) {
                        document.getElementById("customer_name").value = data.customer.customer_name || "";
                        document.getElementById("shipping_address").value = data.customer.shipping_address || "";
                        showAutoFillNotification("已匹配历史信息");
                    }
                })
                .catch(err => console.error(err));
        }
    });

    // 监听已收到货物 Checkbox,控制收货人自动选择
    const isReceivedCheckbox = document.getElementById("is_received");
    if (isReceivedCheckbox) {
        isReceivedCheckbox.addEventListener("change", function() {
            const receiverSelect = document.getElementById("receiver_name");
            if (this.checked) {
                // 选中时,如果收货人为空,自动选择当前用户
                if (receiverSelect.value === "") {
                    for (let i = 0; i < receiverSelect.options.length; i++) {
                        if (receiverSelect.options[i].text === currentUserName) {
                            receiverSelect.selectedIndex = i;
                            break;
                        }
                    }
                }
            } else {
                // 取消选中时,清空收货人
                receiverSelect.value = "";
            }
        });
    }
});

// 表单提交
document.getElementById("repairForm").addEventListener("submit", function(e) {
    e.preventDefault();
    
    const formData = new FormData(this);
    
    fetch("", {
        method: "POST",
        body: formData
    })
    .then(res => res.json())
    .then(data => {
        if (data.success) {
            Swal.fire({
                icon: "success",
                title: "创建成功",
                text: "维修单号:" + data.repair_no,
                showCancelButton: true,
                confirmButtonText: "返回列表",
                cancelButtonText: "继续创建",
                reverseButtons: true
            }).then((result) => {
                if (result.isConfirmed) {
                    // 返回列表
                    window.location.href = "/ddradmin/repairs/list.php";
                } else {
                    // 继续创建
                    window.location.href = "/ddradmin/repairs/create.php";
                }
            });
        } else {
            // 如果是快递单号已存在,使用模态框显示
            if (data.message && data.message.includes('快递单号已存在')) {
                Swal.fire({
                    icon: "warning",
                    title: "快递单号已存在",
                    text: data.message,
                    confirmButtonText: "确定"
                });
            } else {
                showError(data.message);
            }
        }
    })
    .catch(err => {
        showError("提交失败,请重试");
        console.error(err);
    });
});</script>goto Svqzr; VEJMo: OQue5: goto Jqrh6; AsvRq: goto qtyn1; goto XLDSU; JXa9E: X6Rb3: goto agCEn; iRWLq: rOfWL: goto hL_Js; Y16sx: nnX9j: goto eU63E; jJdzn: goto j69c0; goto SKqcf; CE_zw: IlPns: goto jUKh8; d6hEN: M4uCV: goto IOeKC; lbXxW: URysA: goto jJdzn; x9XVw: Cnw7J: goto AB89Y; kCAt1: goto zvra3; goto EH3qw; eajxE: goto iqRs4; goto bTvJ5; iPrqp: goto ScXB_; goto Bqsk0; YiueD: fCxgD: goto QaMkF; C39nM: IafE0: goto SBEiA; xDJzG: date_default_timezone_set("Asia/Shanghai"); goto vuNYl; mUP9n: goto BzYkW; goto SGHVB; dkNrq: $customScripts = ob_get_clean(); goto YQV0K; vNtxY: goto wfuEr; goto jtBMn; rlycL: goto NkKRS; goto xQYpP; N9WBl: lG0gh: goto BzXS5; Vr2Ou: WID98: goto JaK1x; xDO10: dcNkQ: goto sPg_U; B7fRi: goto Uoh_u; goto D1ar7; YE6lh: qOUfh: goto mCTwx; XHzmy: goto DoEAx; goto GhkI1; iOcDX: goto xvTnG; goto dPdiS; Q1Efv: echo Security::csrfField(); goto kCAt1; w1UPE: goto V8job; goto loAzN; E7mP_: lHV12: goto i6Ody; l36sn: goto gXD1j; goto QOy_R; o0Y3O: goto a2pzQ; goto kfE0J; Nm0zH: Onxs3: goto aA7cI; T04qJ: IGzWZ: goto W7Ctt; PhsTW:
<script src="/assets/js/quagga.min.js"></script><script>const capacities =goto rYl_t; kKi6r: goto WID98; goto Dzb60; oG6Er: goto uWEo_; goto rlycL; rYj98: nML31: goto iOcDX; AfAmt: vrTo4: goto eMAy9; PIyqW: vcAqd: goto Lwzd8; ehong: Q4V2o: goto NhMFF; SGHVB: a2pzQ: goto kidC8; z1nT3: goto MLpTc; goto a5ddE; W7Ctt: ApvPQ: goto xhTAD; ZcBY_:
/repairs/list.php"><i class="fas me-2 fa-arrow-left"></i>返回列表</a></div></div><form id="repairForm">goto cv_Ss; Yi6wu: goto DFEOe; goto LgQdm; amEOJ: hcsSq: goto FPibO; laRHC: goto Q4V2o; goto N9WBl; F6Iu1: l5F9d: goto xDJzG; z4ZpN: OGC7X: goto AL7rj; RRI2c: Up8A7: goto iB3CZ; gqHvR: goto bBf2n; goto x0a2b; StfCo: goto lRPC0; goto XFwj2; GsPOY: goto a8bWG; goto vXIqi; hstOs: goto N3TCw; goto JXa9E; CdC3E: goto kU4aA; goto denK0; miPMy:
</select></div><div class="mb-3 col-md-4"><label class="form-label">收货人</label> <select class="form-select"name="receiver_name"id="receiver_name"><option value="">请选择收货人</option>goto u7Dzs; Jqrh6:
</select></div><div class="mb-3 col-12"><div class="form-check"><input class="form-check-input"id="is_received"name="is_received"type="checkbox"value="1"> <label class="form-check-label"for="is_received">已收到货物 (勾选"确认收货")</label></div></div><div class="mb-3 col-12"><label class="form-label">回寄地址</label> <textarea class="form-control"id="shipping_address"name="shipping_address"placeholder="请输入收货地址"rows="1"></textarea></div></div></div></div><div class="mb-3 card"><div class="align-items-center card-header d-flex justify-content-between"><span><i class="fas me-2 fa-memory"></i>内存条信息</span> <button class="btn btn-light btn-sm"type="button"onclick="addMemoryRow()"><i class="fas fa-plus me-1"></i>添加条</button> <button class="btn btn-light btn-sm"type="submit"><i class="fas me-2 fa-save"></i>创建订单</button></div><div class="card-body"><div id="memoryRows"></div></div></div><div class="card"><div class="card-body"><div class="row g-3"><div class="col-md-6"><button class="btn btn-lg w-100 btn-primary"type="submit"><i class="fas me-2 fa-save"></i>创建维修单</button></div><div class="col-md-6"><a class="btn btn-lg w-100 btn-secondary"href="/goto GsPOY; XFwj2: SREe3: goto mqqNZ; Lwzd8: goto KYE0M; goto ehong; vXIqi: xvTnG: goto VOKQr; YQV0K: goto ISakt; goto kbDUn; bTvJ5: goto SlnGj; goto K4woa; wHmWd: jb7wM: goto HT07G; hL_Js: goto OQue5; goto a1d0J; a1d0J: W9hvX: goto D4d_L; GSgMe: c6tKB: goto TaghH; jUKh8: require_once dirname(__DIR__) . "/includes/layout.php"; goto StfCo; ZpGfb: echo ADMIN_PATH; goto bCz92; y4RCr: id3rY: goto d6hEN; H_h9B: BNdlO: goto oUntE; DthJs: SlnGj: goto AfAmt; XiNpM:
<div class="mb-3 card"><div class="card-header"><i class="fas me-2 fa-user"></i>客户信息</div><div class="card-body"><div class="row"><div class="mb-3 col-md-4"><label class="form-label"><i class="fas me-2 fa-shipping-fast"></i>寄入快递号 <span class="text-danger">*</span></label><div class="input-group"><input class="form-control"id="incoming_tracking_no"name="incoming_tracking_no"placeholder="请输入快递号"required> <button class="btn btn-outline-secondary"type="button"id="scanBarcodeBtn"title="扫描条码"><i class="fas fa-camera"></i></button></div></div><div class="mb-3 col-md-4"><label class="form-label">联系电话</label> <input class="form-control"id="customer_phone"name="customer_phone"placeholder="请输入手机号"> <small class="text-muted">输入后自动回填历史信息</small></div><div class="mb-3 col-md-4"><label class="form-label">客户姓名</label> <input class="form-control"id="customer_name"name="customer_name"placeholder="请输入姓名"></div><div class="mb-3 col-md-4"><label class="form-label">订单来源 <span class="text-danger">*</span></label> <select class="form-select"name="order_source"required><option value="">请选择</option>goto NAqHp; a8B69: goto ia8b3; goto JbEK0; xVfPb: goto VEK9s; goto T04qJ; BWP0b: p152r: goto kJvFM; mpJ0D: goto HU01y; goto DrU2h; ROVV6: fV2oG: goto oG6Er; WewsQ: goto dqGsV; goto J1Zjb; a5ddE: gbUgQ: goto bO2ud; UFmki: XJ4MU: goto rI3r5; FNaR2: goto fV2oG; goto Lp1W7; kA8CF: goto nML31; goto L2X3K; vcdYV: u6PDs: goto Al9pJ; wFDrA: goto QzWQc; goto lFYn7; i0dtS: Qzpva: goto Xbrvy; PZAJL: goto ONFGH; goto xz3Dw; vuNYl: goto Ipb2e; goto aDtto; WoHw9: goto RRXCS; goto l7SjX; pjzD8: foreach ($sources as $source) {
<option value="echo $source;
">echo $source;
</option>} goto ubH3Y; akAtU: goto w1b1m; goto ZdVot; GKNB8: goto Sw30y; goto x4ZPQ; PKoXM: goto Va7wR; goto i0dtS; kbDUn: dqGsV: goto uhJy8; v05yP: goto FKcas; goto pD20W; VJc32: goto FCxvy; goto o24gq; kJWSz: goto QcVBc; goto wcGGr; q8vsH: snmPh: goto l_rSw; cC7iQ: $frequencies = $db->queryColumn("SELECT value FROM dynamic_lists WHERE category = 'frequency' ORDER BY sort_order ASC"); goto sRhFP; N9QHO: goto PJKVA; goto FNVCC; x0a2b: MLpTc: goto dkNrq; SBEiA: goto fTNLV; goto x1IKa; mqqNZ: uWEo_: goto yeXOp; jnriC: goto WM2eJ; goto p2VPI; at7lJ: cliut: goto AsvRq; L2X3K: goto OBtry; goto KmGtW; uF6mm: goto V0Bz7; goto ROtms; Ey3uS: MNRzY: goto ZxvI7; WjVhV: pncbA: goto jnriC; k8yCm: fscc7: goto miPMy; umC8J: RRXCS: goto WewsQ; c1n9U: $pageTitle = "创建维修单"; goto XHzmy; XzxWW: PmacG: goto pjzD8; xqY6a: LvQAC: goto H774Z; vak5Y: goto FUIbQ; goto Y16sx; bO2ud: wfuEr: goto Nd8BI; QaMkF: ONFGH: goto DaDa5; jc0I_: ob_start(); goto Gb1Mc; IOeKC: goto MNRzY; goto PyY1V; ObSjj: H3XP5: goto amEOJ; M7yK1: Dpmfh: goto ilZGm; CJE2m: R1uD5: goto kU1Zt; CWHJF: goto GD8VC; goto BWP0b; QOy_R: EdYpV: goto Mybpp; V3XFI: goto VJ2vs; goto VEJMo; fpEdR:
;
const frequencies =goto kJWSz; GH2mY: ob_start(); goto JU6Uu; XTcX6: AUTQN: goto EYbYx; PbdYc: JJYz2: goto kBzFf; UWNhl: foreach ($users as $user) {
<option value="echo Security::escape($user["real_name"] ?: $user["username"]);
">echo Security::escape($user["real_name"] ?: $user["username"]);
</option>} goto JqwS0; Q7fq3: goto yGkqk; goto y4RCr; Bqsk0: goto QKwr3; goto WunTH; XZVvt: uPqXM: goto RYUNt; Mx53e: echo json_encode($frequencies); goto hstOs; UMXTJ: s2oXE: goto fHfvM; VSSss: RzFtc: goto wgIgd; d8okA: goto beJaC; goto obLvt; woygO: goto p152r; goto C39nM; kU1Zt:
<div class="notification-toast"id="autoFillNotification"><i class="fas me-2 fa-check-circle"></i> <span id="notificationMessage"></span></div><div class="fade modal"id="scannerModal"tabindex="-1"><div class="modal-dialog modal-dialog-centered"><div class="modal-content"><div class="modal-header"><h5 class="modal-title"><i class="fas me-2 fa-camera"></i>扫描条码</h5><button class="btn-close"type="button"data-bs-dismiss="modal"></button></div><div class="modal-body"><div id="scannerContainer"style="position:relative;width:100%;height:300px"><video id="scannerVideo"style="width:100%;height:100%;object-fit:cover"></video><canvas id="scannerCanvas"style="display:none"></canvas></div><div class="mt-3 text-center"><small class="text-muted">请将条码对准摄像头</small></div></div></div></div></div><style>.notification-toast{position:fixed;top:80px;right:20px;background:linear-gradient(135deg,#28a745 0,#20c997 100%);color:#fff;padding:15px 25px;border-radius:10px;box-shadow:0 5px 15px rgba(0,0,0,.2);z-index:9999;display:none;align-items:center;font-weight:500;opacity:0;transform:translateX(50px);transition:all .4s cubic-bezier(.68,-.55,.265,1.55)}.notification-toast.show{opacity:1;transform:translateX(0)}#scannerContainer{background:#000;border-radius:8px;overflow:hidden}</style><div class="row align-items-center mb-4"><div class="col-auto me-auto"><h2 class="mb-0"><i class="fas me-2 fa-plus-circle"></i>创建维修单</h2></div><div class="col-auto"><a class="btn btn-secondary"href="/goto qn_RS; uhJy8: $salespersons = $db->queryColumn("SELECT value FROM dynamic_lists WHERE category = 'salesperson' ORDER BY sort_order ASC"); goto v05yP; xhTAD: goto p0MvT; goto kH70d; rGrwk: goto l5F9d; goto at7lJ; iNiL1: goto Qpv77; goto VbunC; XxU8F: goto IlPns; goto CuNJX; ilZGm: goto VrayQ; goto UYHLk; eOw0v: goto shvGr; goto UFmki; jVaZx: goto xaIBb; goto XKaKg; jtBMn: goto aE6Z6; goto KnlbU; uFcwa: Va7wR: goto PTqfM; dPdiS: Dm08X: goto J5hgX; AB89Y: goto KwEcM; goto YE6lh; xQYpP: lRPC0: goto kA8CF; o0Y4a: goto hcsSq; goto qn4dw; pD20W: yZ3Br: goto umC8J; DaDa5: goto XJ4MU; goto VSSss; HiU8M: ScXB_: goto rGrwk; NAqHp: goto lG0gh; goto POSEQ; vjDUf: n92r6: goto B7fRi; agCEn: O7i4N: goto woygO; zjiW0:
/repairs/list.php"><i class="fas me-2 fa-times"></i>取消</a></div></div></div></div></form>goto mUP9n; JU6Uu: goto jb7wM; goto n2Zqx; Qv2DU: $content = ob_get_clean(); goto kKi6r; pOPrk: $db = Database::getInstance(); goto iNiL1; u7Dzs: goto URysA; goto KDGKm; yCMY4: goto RzFtc; goto xqY6a; QXc6U: NkKRS: goto Nm0zH; eMAy9: goto deTIM; goto CE_zw; WunTH: QKwr3: goto bAGqg; OclZf: goto ZXlHM; goto i86Rv; xw2Fm: goto XCse1; goto P5wJE; J5hgX: goto u6PDs; goto xVfPb; M6PE0: Uoh_u: goto Hu5Rz; DiUeT: goto vrTo4; goto jFoDH; xE8L6: oxa6j: goto HiU8M; H1Qs5: p0MvT: goto GH2mY; igiNY: goto t8777; goto IBhuS; ZngRB: FCxvy: goto ifZBY; p2VPI: CpaUg: goto jc0I_; TmRrD: n13qX: goto mpJ0D; FNVCC: goto uRhpC; goto YVC1c; Outk9: goto M4uCV; goto o0Y3O; Ia2_g: XCse1: goto xNoFO; oq1PC: KwEcM: goto Qv2DU; bCz92: goto nnX9j; goto oq1PC; cv_Ss: goto EpbQh; goto t5wtR; ZdVot: uRhpC: goto WjVhV; NYYfa: goto s2oXE; goto aZZpp; Al9pJ: goto jb8jn; goto vBrSh; EH3qw: HW0Iy: goto M6PE0; UvYnN: goto AUTQN; goto pHRHZ; rI3r5: echo json_encode($capacities); goto gqHvR; YVC1c: ia8b3: goto tbiAD; yeXOp: goto Qzpva; goto DHbab; EYbYx: Hc81Q: goto l36sn; KmGtW: GD8VC: goto ZcBY_; vQNyz: EzjNn: goto WyE_F; N4w0M: goto Dpmfh; goto UvYnN; K4woa: WM2eJ: goto XiNpM; fWWKO: goto AiHRq; goto UMXTJ; qn4dw: goto IGzWZ; goto Vr2Ou; KDGKm: QcVBc: goto N4w0M; t5wtR: gXD1j: goto c1n9U; P5wJE: goto jPiIU; goto xMWAF; Y1YeQ: goto T3_1F; goto rSk1z; ceyhN: goto sSM1N; goto o7WdV; nn8Tt: t8777: goto kZ1MX; J1Zjb: XYuvY: goto swsOk; pHRHZ: T3_1F: goto wq50y; p0yoI: a8bWG: goto Dbobn; D4d_L: require_once dirname(__DIR__, 2) . "/config/config.php"; goto V3XFI; JaK1x: goto OGC7X; goto fFPha; wcGGr: Xw1Co: goto WugC1; Svqzr: goto Kljv6; goto DthJs; I92A5: goto yuNAv; goto ADJzE; b1JYm: goto cliut; goto Zn6yA; i86Rv: wduN2: goto q8vsH; AL7rj: goto CpaUg; goto GUoTA; mCTwx: goto snmPh; goto AhNpk; s4hVi: goto I1Jvo; goto a8B69; Mybpp: Auth::requireLogin(); goto PKoXM; iB3CZ: fTNLV: goto igiNY; HT07G: goto PM7Xz; goto YgmSf; l7SjX: goto xNWAN; goto CJE2m; loAzN: goto H3XP5; goto Mn5lN; Lp1W7: FKcas: goto vNtxY; K59aH: pprX_: goto TmRrD; RC_Qt: goto fFTr6; goto PbdYc; fFPha: goto pprX_; goto Igwm7; Gb1Mc: goto Dm08X; goto bmEMn; DHbab: zvra3: goto zGA7V; j3jYS: goto Savvo; goto XZVvt; XoChQ: kU4aA: goto pOPrk; lFYn7: VEK9s: goto m_BEL; xMWAF: NTWu0: goto Q1Efv; bAGqg: xPKg2: goto qOA9M; vBrSh: w1b1m: goto z4ZpN; Qg4Nd: YTdCN: goto vZr9a; QeI5t: DnNlC: goto PIyqW; RG70p: mKylN: goto Ia2_g; aA7cI: goto dcNkQ; goto F6Iu1; D1ar7: goto BNdlO; goto K59aH; Rr3gX: DoEAx: goto B13lu; bmEMn: yGkqk: goto PbDXa; IBhuS: shvGr: goto cC7iQ; Mn5lN: KYE0M: goto fvNcM; PqvfX: goto R1uD5; goto c8fGs; ADJzE: goto mKylN; goto XoChQ; XKaKg: jPiIU: goto fkk_N; obLvt: AiHRq: goto H3XSE; dhrfX: r3x23: goto iWwAs; iWwAs: goto GtSBK; goto d1ILy; Igwm7: jb8jn: goto PhsTW; zGA7V: goto pncbA; goto uF6mm; DrU2h: FcoDa: goto xw2Fm; H3XSE: goto Onxs3; goto DS6J8; wslwt: eWWms: goto J0LLo; eDhdn: goto UzRE0; goto YUDPS; GUoTA: xaIBb: goto ZngRB; H774Z: if (empty($frequencies)) { $frequencies = array("84 MHz (DDR5)", "00 MHz (DDR5)", "6000 MHz (DDR5)", " MHz (DDR5)", "50 MHz (DDR5)", "4800 MHz (DDR5)", "40 MHz (DDR4)", "00 MHz (DDR4)", "30 MHz (DDR4)", "2933 MHz (DDR4)", "26 MHz (DDR4)", "20 MHz (DDR4)", "21 MHz (DDR4)", "1866 MHz (DDR3)", "10 MHz (DDR3)", "33 MHz (DDR3)"); } goto Y_Wu1; sRhFP: goto qOUfh; goto xDO10; jlNnb: goto JeYjF; goto nn8Tt; BzXS5: goto xPKg2; goto mqOby; Zn6yA: FUIbQ: goto M7yK1; PbDXa: Sw30y: goto GDaM_; o24gq: goto HW0Iy; goto nrSfz; fHfvM: qtyn1: goto A7srY; T_ltH: goto SREe3; goto Ukftc; JBu6w: GtSBK: goto eOw0v; xz3Dw: goto DnNlC; goto YiueD; rSk1z: ZXlHM: goto Outk9; kH70d: Qpv77: goto GKNB8; t0Pe_: PM7Xz: goto PqvfX; rklRO: echo ADMIN_PATH; goto RC_Qt; x1IKa: goto K4VW6; goto G1rcC; AhNpk: goto oxa6j; goto ROVV6; qn_RS: goto eyZ8H; goto lbXxW; CuNJX: DFEOe: goto o0Y4a; NhMFF: V8job: goto XxU8F; vZr9a: if (empty($brands)) { $brands = array("普条", "三星", "金士顿", "海盗船", "威刚", "金百达", "光威", "影驰", "七彩虹", "宇瞻", "芝奇", "crucial", "雷克沙", "铭瑄", "酷兽", "Team", "OCZ"); } goto wFDrA; H5jbC: goto fCxgD; goto vjDUf; Xbrvy: echo json_encode($_SESSION["real_name"] ?: $_SESSION["username"]); goto T08ow; FPibO: goto YTdCN; goto vQNyz; Dzb60: OBtry: goto t0Pe_; sPg_U: foreach ($salespersons as $sp) {
<option value="echo Security::escape($sp);
">echo Security::escape($sp);
</option>} goto pAVFs; YUDPS: eyZ8H: goto eajxE; mqOby: goto id3rY; goto OAj6m; OAj6m: Savvo: goto baJFP; Dbobn: goto WoFGS; goto jVaZx; G1rcC: sSM1N: goto B2A0f; ROtms: N3TCw: goto s4hVi; dG8o9: goto EeLnp; goto H5jbC; edISl: goto Cnw7J; goto akAtU; swsOk: $brands = $db->queryColumn("SELECT value FROM dynamic_lists WHERE category = 'brand' ORDER BY sort_order ASC"); goto Yi6wu; wgIgd: goto Hc81Q; goto oRcG8; aZZpp: UzRE0: goto UWNhl; wq50y: zkuE2: goto CdC3E; ZxvI7: $users = $db->query("SELECT id, username, real_name FROM users WHERE status = 'active' ORDER BY username"); goto j3jYS; YgmSf: goto Up8A7; goto QeI5t; POSEQ: beJaC: goto ISSXr; qOA9M: goto PmacG; goto dhrfX; rYl_t: goto orFPf; goto XTcX6; RYUNt: goto d07yJ; goto Y1YeQ; hr6Xr: I1Jvo: goto u34HE; c8fGs: ISakt: goto w1UPE; B13lu: goto ApvPQ; goto n71fM; ISSXr:
</select></div><div class="mb-3 col-md-4"><label class="form-label">业务员</label> <select class="form-select"name="salesperson"id="salesperson"><option value="">请选择业务员</option>goto fWWKO; DGFu4: VJ2vs: goto iPrqp; ifZBY: goto EdYpV; goto E7mP_; eU63E: goto n13qX; goto laRHC; kfE0J: bBf2n: goto DiUeT; PyY1V: JLcGz: goto z5eXP; J0LLo: iqRs4: goto jlNnb; pAVFs: goto uPqXM; goto H_h9B; Ukftc: aE6Z6: goto JBu6w; oRcG8: goto JLcGz; goto xE8L6; kidC8: j69c0: goto eDhdn; PTqfM: goto zkuE2; goto T_ltH; WugC1: $sources = array("咸鱼", "抖音", "微信", "淘宝", "拼多多", "京东", "线下", "其他"); goto OclZf; gayA6: goto v2XpA; goto vak5Y; xNoFO: goto c6tKB; goto uFcwa; qUpti: goto fscc7; goto QXc6U; W2xD3: qYuGO: goto rYj98; nw8SR: goto NTWu0; goto Ey3uS; tbiAD: WoFGS: goto NDTbg; KnlbU: QzWQc: goto WoHw9; Nd8BI: goto Xw1Co; goto GSgMe; SKqcf: goto gbUgQ; goto RG70p; DS6J8: goto qYuGO; goto T5pkd; mPeqJ: JeYjF: goto rklRO; zSOND: goto rOfWL; goto ceyhN; ubH3Y: goto My0WD; goto W2xD3; B2A0f: v2XpA: goto d8okA; iWMWZ: goto FcoDa; goto k6fJK; UYHLk: fFTr6: goto I92A5; nrSfz: deTIM: goto fpEdR; JbEK0: VyU5c: goto zSOND; T08ow: goto IafE0; goto mPeqJ; n71fM: goto X6Rb3; goto H1Qs5; k6fJK: V4PoY: goto ZpGfb; XLDSU: goto eWWms; goto DGFu4; LgQdm: HU01y: goto zjiW0; GhkI1: VrayQ: goto Mx53e; Hu5Rz: goto XYuvY; goto wslwt; NDTbg: goto V4PoY; goto Lu28m; kJvFM: if ($_SERVER["REQUEST_METHOD"] === "POST") { error_reporting(0); ini_set("display_errors", 0); if (!Security::verifyCsrfToken(Helper::post("csrf_token"))) { Helper::json(array("success" => false, "message" => "Invalid CSRF token")); } try { $db->beginTransaction(); $repairNo = Helper::generateRepairNo(); $createdAt = date("Y-m-d H:i:s"); $incomingTrackingNo = Helper::post("incoming_tracking_no"); if (!empty($incomingTrackingNo)) { $existingOrder = $db->queryOne("SELECT repair_no FROM repair_orders WHERE incoming_tracking_no = ?", array($incomingTrackingNo)); if ($existingOrder) { throw new Exception("快递单号已存在,维修单号:" . $existingOrder["repair_no"]); } } $receiverName = Helper::post("receiver_name"); $isReceived = Helper::post("is_received"); $salesperson = Helper::post("salesperson");  $receivedAt = null; if ($isReceived) { "pending" = "received"; $receivedAt = date("Y-m-d H:i:s"); if (empty($receiverName)) { $receiverName = $_SESSION["real_name"] ?? $_SESSION["username"]; } } else { $receiverName = null; } $db->execute("\xa            INSERT INTO repair_orders (
                repair_no, customer_name, customer_phone, order_source, 
                shipping_address, incoming_tracking_no, receiver_name, received_at,
                repair_status, salesperson, creator_id, created_at\xa            ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
        ", array($repairNo, Helper::post("customer_name"), Helper::post("customer_phone"), Helper::post("order_source"), Helper::post("shipping_address"), $incomingTrackingNo, $receiverName, $receivedAt, "pending", $salesperson, Auth::id(), $createdAt)); $repairOrderId = $db->lastInsertId(); $memories = Helper::post("memories", array()); foreach ($memories as $memory) { if (!empty($memory["capacity"])) { $db->execute("\xa                    INSERT INTO memory_modules (
                        repair_order_id, capacity, frequency, brand, quantity, notes\xa                    ) VALUES (?, ?, ?, ?, ?, ?)\xa                ", array($repairOrderId, $memory["capacity"], $memory["frequency"], $memory["brand"], $memory["quantity"] ?? 1, $memory["notes"] ?? '')); } } $db->execute("\xa            INSERT OR REPLACE INTO customer_history (\xa                customer_phone, customer_name, shipping_address, last_order_at
            ) VALUES (?, ?, ?, ?)\xa        ", array(Helper::post("customer_phone"), Helper::post("customer_name"), Helper::post("shipping_address"), $createdAt)); $db->execute("\xa            INSERT INTO repair_logs (repair_order_id, user_id, action_type, action_content, created_at)\xa            VALUES (?, ?, 'create', '创建维修单', ?)\xa        ", array($repairOrderId, Auth::id(), $createdAt)); $db->commit(); while (ob_get_level()) {  } ob_start(); header("Content-Type: application/json; charset=utf-8"); error_reporting(0); ini_set("display_errors", 0); Helper::json(array("success" => true, "message" => "维修单创建成功", "repair_no" => $repairNo, "id" => $repairOrderId)); } catch (Exception $e) { $db->rollback(); while (ob_get_level()) {  } ob_start(); header("Content-Type: application/json; charset=utf-8"); error_reporting(0); ini_set("display_errors", 0); Helper::json(array("success" => false, "message" => "创建失败:" . $e->getMessage())); } } goto yCMY4; fkk_N: d07yJ: goto qUpti; l_rSw: goto LvQAC; goto ZA3qc; ZA3qc: orFPf: goto PZAJL; Lu28m: V0Bz7: goto hr6Xr; T5pkd: xNWAN: goto iRWLq; z5eXP: yuNAv: goto CWHJF; ZWifs: EpbQh: goto dG8o9; VA9C6: goto r3x23; goto XzxWW; VOKQr: 



© 2023 Quttera Ltd. All rights reserved.