appendModel

append model in orderDetailAddPage

As of 2022-07-05. See the latest version.

You will need to install an extension such as Tampermonkey, Greasemonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Userscripts to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install a user script manager extension to install this script.

(I already have a user script manager, let me install it!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

(I already have a user style manager, let me install it!)

// ==UserScript==
// @name         appendModel
// @namespace    http://tampermonkey.net/
// @version      1.01
// @description  append model in orderDetailAddPage
// @author       FengXia
// @match        http://47.107.106.156/*
// @icon
// @grant        none
// @license MIT
// ==/UserScript==

(function() {
    let oldxhr=window.XMLHttpRequest;
    function newobj(){}
    let swap_string = `
<td>备注:</td>
<td>
<input type="text" style="width: 150px;" name="remark" id="remark" onfocus="frm_focus('remark');" onblur="frm_blur('remark');">
</td>
<td>规格:</td>
<td>
<input id="order_model" class="len150 readonly" readonly="readonly" name="model" placeholder="">
</td>
</tr>
<tr>
<td>最新库存价:</td>
<td><input id="order_price" class="len150 readonly" readonly="readonly" name="newstorageprice" placeholder="">
</td>
</tr>`;
    let order_string = `
<td>备注:</td>
<td>
<input type="text" style="width: 150px;" name="remark" id="remark" onfocus="frm_focus('remark');" onblur="frm_blur('remark');">
</td>
<td>规格:</td><td><input id="order_model" class="len150 readonly" readonly="readonly" name="model" placeholder=""></td>
</tr>
<tr>
<td>最新库存价:</td>
<td><input id="order_price" class="len150 readonly" readonly="readonly" name="newstorageprice" placeholder="">
</td>
</tr>`;
    let document_string;
    let search_string = /(<td>备注)[\s\S]*(<\/tr>)$/gm;
    let xhr_string = /^{"totalbox":.+,"total":.+,/g;
    window.XMLHttpRequest=function(){
        let tagetobk=new newobj();
        tagetobk.oldxhr=new oldxhr();
        let handle={
            get:    function(target, prop, receiver) {
                if(prop==='oldxhr'){
                    return Reflect.get(target,prop);
                }
                if(typeof Reflect.get(target.oldxhr,prop)==='function')
                {
                    if(Reflect.get(target.oldxhr,prop+'proxy')===undefined)
                    {
                        target.oldxhr[prop+'proxy']=(...funcargs)=> {
                            let result=target.oldxhr[prop].call(target.oldxhr,...funcargs)
                            // console.log('函数劫持获取结果',result)
                            return result;
                        }

                    }
                    return Reflect.get(target.oldxhr,prop+'proxy')
                }
                if(prop.indexOf('response')!==-1)
                {
                    //console.log('属性劫持结果',Reflect.get(target.oldxhr,prop))
                    let inputblur =document.querySelector('input[name="saleorderid"]');
                    if (inputblur){
                        inputblur.addEventListener("keypress", fireFoxHandler, true);
                    }
                    let inputOrder =document.querySelector('#sales-sourceid-orderAddPage');
                    if (inputOrder){
                        inputOrder.addEventListener("focusout", AddListener,true);
                    }
                    let out_order =document.querySelector('#sales-sourceid-rejectBillAddPage');
                    if (out_order){
                        out_order.addEventListener("focusout", addListenerOutOrder,true);
                    }
                    if (!document.querySelector("#password")) {
                        document_string = Reflect.get(target.oldxhr, prop);
                        if (document_string.search("<form id=\"sales-form-orderDetailAddPage\">") != -1) {
                            document_string = document_string.replace(search_string, order_string);
                            return document_string;
                        } else if (document_string.search(" <form id=\"sales-form-swapOrderDetailAddPage\">") != -1) {
                            document_string = document_string.replace(search_string,swap_string);
                            return document_string;
                        } else if (document.querySelector('#order_price')) {
                            try {
                                let xhrString = JSON.parse(document_string);
                                let modelString = xhrString.detail.goodsInfo.model;
                                let newstorageprice = xhrString.detail.goodsInfo.newstorageprice;
                                document.querySelector('#order_price').setAttribute("placeholder", newstorageprice);
                                document.querySelector('#order_model').setAttribute("placeholder", modelString);
                                return Reflect.get(target.oldxhr, prop)
                            } catch (err) {
                                return Reflect.get(target.oldxhr, prop)
                            }
                        }
                    }
                }
                return Reflect.get(target.oldxhr,prop);
            },
            set(target, prop, value) {
                return Reflect.set(target.oldxhr, prop, value);
            },
            has(target, key) {
                debugger;
                return Reflect.has(target.oldxhr,key);
            }
        }

        let ret = new Proxy(tagetobk, handle);

        return ret;
        let ops=document.querySelector('#sales-form-orderDetailAddPage .ops');
    }
})();

function QueryCustomerOrder(customer,order){
    let xhr = new XMLHttpRequest();
    let url = new URL('http://47.107.106.156:8888/sales/getOrderList.do');
    url.searchParams.set('businessdate', '');
    url.searchParams.set('businessdate1', '');
    url.searchParams.set('id', '');
    url.searchParams.set('salesdept', '');
    url.searchParams.set('customerid', customer);
    url.searchParams.set('status', '');
    url.searchParams.set('sourceid', order);
    url.searchParams.set('goodsid', '');
    url.searchParams.set('printsign', '');
    url.searchParams.set('queryprinttimes', '');
    url.searchParams.set('urgentlevel', '');
    url.searchParams.set('lineid', '');
    url.searchParams.set('isstoragelock', '0');
    url.searchParams.set('salesuserArrs', '');
    url.searchParams.set('page', '1');
    url.searchParams.set('rows', '200');
    url.searchParams.set('sort', 'addtime');
    url.searchParams.set('order', 'desc');

    // 2. 配置它:从 URL /article/.../load GET-request
    xhr.open('post', url);

    // 3. 通过网络发送请求
    xhr.send();

    // 4. 当接收到响应后,将调用此函数
    xhr.onload = function() {
        if (xhr.status != 200) { // 分析响应的 HTTP 状态
            alert(`Error ${xhr.status}: ${xhr.statusText}`); // 例如 404: Not Found
        } else { // 显示结果
            let xhrString = JSON.parse(xhr.response)
            // console.log(xhrString)
            if (xhrString.total > 0){
                let i = 0;
                let orderNo='';
                for (; i < xhrString.rows.length;i++) {
                    if (xhrString.rows[i].status != '5'){
                        orderNo += `${xhrString.rows[i].id},`
                    }
                }
                if (orderNo){
                    alert( `有重复订单,订单号为${orderNo}`);
                }
            }
            // alert(`Done, got ${xhr.response.length} bytes`); // response 是服务器响应
        }
    };

    xhr.onerror = function() {
        alert("Request failed");
    };

}


function fireFoxHandler(evt){
    if (evt.keyCode == 13){
        let inputString =document.querySelector('input[name="saleorderid"]');
        let alertString = document.querySelector('#alertTd')

        let querySet = FormatString(inputString.value);
        CheckString(querySet);

        inputString.select();
    }
}


function FormatString(inputString){
    // console.log(inputString,inputString.length);
    let regString,queryString,orderType;
    if (inputString.length === 7){
        regString = new RegExp('XD22'+inputString);
        queryString = "td[field=\"orderid\"]";
        orderType = 'sale';

    } else if (inputString.length === 9){
        regString = new RegExp(`THTZD-2022${inputString}`);
        queryString = "td[field=\"id\"]";
        orderType = 'out';

    } else if (inputString.length === 8){
        regString = new RegExp(`HHD-2022${inputString}`);
        queryString = "td[field=\"sourceid\"]";

    } else if (inputString.length === 11){
        regString = new RegExp(`${inputString}`);
        queryString = "td[field=\"orderid\"]";
        orderType = 'sale';
    }
    let querySet = {
        'regString':regString,
        'queryString':queryString,
        'orderType':orderType
    }
    return querySet
}

function CheckString(querySet,booleanH = true) {
    if (querySet.regString){
        let orderId = document.querySelectorAll(querySet.queryString);
        let booleanSelect = false ;
        let selectString = /datagrid-row-selected/;
        let regH = /[^F]HHD-\d{8}-\d{3}/;
        let orderString;
        for (let num = 0;num< orderId.length;num++){
            orderString = orderId[num].parentNode;
            if (orderId[num].innerText.search(querySet.regString)>=0 && orderString.className.search(selectString) < 0){
                orderString.click();
                booleanSelect = true;
            }
        }
        if (booleanSelect){
            AddAlertTd('已经选择')
            return
        } else {
            let orderString = querySet.regString.toString();
            let newOrder = orderString.replace(/\//g,'')
            let customer = document.querySelector('#account-customerid-salesInvoiceSourceQueryPage-hidden');
            let temp =customer.getAttribute('object')
            let customerTemp ='';
            if (temp){
                let customerString = JSON.parse(temp);
                customerTemp =customerString.id;
            }
            if (querySet.orderType === 'sale'){
                CheckSaleOrder(newOrder,customerTemp);
                return
            } else if (querySet.orderType === 'out'){
                CheckOutOrder(newOrder,customerTemp);
                return
            }
        }
    } else {
        AddAlertTd('请输入正确单号')
        return
    }
}

function AddAlertTd(alertString) {
    let alertTd = document.querySelector('#alertTd');
    if (alertTd) {
        // console.log(alertTd.innerHTML);
        alertTd.innerHTML =alertString;
    } else {
        let alertTr = document.querySelectorAll('form[id="account-form-query-salesInvoiceSouceBill"] tr');
        let createTd = document.createElement("td");
        createTd.innerHTML=`<font color="red" id="alertTd" >${alertString}</font>`
        alertTr[2].appendChild(createTd);
    }
}

function AddListener(){
    let customerInput = document.querySelector('#sales-customer-showid-orderAddPage a');
    let inputOrder = document.querySelector('#sales-sourceid-orderAddPage');
    if (inputOrder.value){
        QueryCustomerOrder(customerInput.innerText,inputOrder.value);
    }
}

function addListenerOutOrder(){
    let customer = document.querySelector('#sales-customer-showid-dispatchBillAddPage');
    let out_order = document.querySelector('#sales-sourceid-rejectBillAddPage');
    if (out_order.value){
        console.log(customer.innerText.slice(3),out_order.value);
        queryOutOrder(customer.innerText.slice(3),out_order.value);

    }
}

function CheckSaleOrder(orderId,customer) {
    let xhr = new XMLHttpRequest();
    let url = new URL('http://47.107.106.156:8888/sales/getReceiptList.do');
    let returnString;
    url.searchParams.set('businessdate', '');
    url.searchParams.set('businessdate1', '');
    url.searchParams.set('id', orderId);
    url.searchParams.set('customersort', '');
    url.searchParams.set('detailOrder', '0');
    url.searchParams.set('customerid', customer);
    url.searchParams.set('indooruserid', '');
    url.searchParams.set('salesuser', '');
    url.searchParams.set('isinvoice', '-1');
    url.searchParams.set('status', '');
    url.searchParams.set('accounttype', '');
    url.searchParams.set('salesarea', '');
    url.searchParams.set('ispassdue', '');
    url.searchParams.set('brandid', '');
    url.searchParams.set('isbook', '');
    url.searchParams.set('isledger', '');
    url.searchParams.set('deliveryid', '');
    url.searchParams.set('sourceid', '');
    url.searchParams.set('goodsid', '');
    url.searchParams.set('page', '1');
    url.searchParams.set('rows', '100');
    url.searchParams.set('sort', 'id');
    url.searchParams.set('order', 'desc');

    // 2. 配置它:从 URL /article/.../load GET-request
    xhr.open('post', url);

    // 3. 通过网络发送请求
    xhr.send();

    // 4. 当接收到响应后,将调用此函数
    xhr.onload = function() {
        if (xhr.status != 200) { // 分析响应的 HTTP 状态
            alert(`Error ${xhr.status}: ${xhr.statusText}`); // 例如 404: Not Found
        } else { // 显示结果
            let xhrString = JSON.parse(xhr.response)
            // console.log(xhrString)
            if (xhrString.total > 0){
                let rows = xhrString.rows;
                if (rows[0].status === '4'){
                    AddAlertTd('已经核销');
                    return
                }else if(rows[0].status === '2'){
                    AddAlertTd('未验收');
                    return
                } else if(rows[0].isinvoice === '4' || rows[0].isinvoice === '1'){
                    AddAlertTd('已经申请抽单');
                    return
                }else{
                    AddAlertTd('未出库');
                    return
                }
            } else {
                AddAlertTd('请输入正确单号');
                return
            }
            // alert(`Done, got ${xhr.response.length} bytes`); // response 是服务器响应

        }
    };
    xhr.onerror = function() {
        alert("Request failed");
    };
    return returnString
}


function CheckOutOrder(orderId,customer) {
    let xhr = new XMLHttpRequest();

    let url = new URL('http://47.107.106.156:8888/sales/getRejectBillList.do');
    url.searchParams.set('businessdate', '');
    url.searchParams.set('businessdate1', '');
    url.searchParams.set('salesdept','');
    url.searchParams.set('indooruserid', '');
    url.searchParams.set('ysbusinessdate', '');
    url.searchParams.set('ysbusinessdate1', '');
    url.searchParams.set('isinvoice', '3');
    url.searchParams.set('id', orderId);
    url.searchParams.set('goodsid', '');
    url.searchParams.set('billtype', '');
    url.searchParams.set('isbook', '');
    url.searchParams.set('customerid', customer);
    url.searchParams.set('ysprintsign', '');
    url.searchParams.set('queryysprinttimes', '0');
    url.searchParams.set('isledger', '');
    url.searchParams.set('status', '');
    url.searchParams.set('page', '1');
    url.searchParams.set('rows', '20');
    url.searchParams.set('sort', 'addtime');
    url.searchParams.set('order', 'desc');

    // 2. 配置它:从 URL /article/.../load GET-request
    xhr.open('post', url);

    // 3. 通过网络发送请求
    xhr.send();

    // 4. 当接收到响应后,将调用此函数
    xhr.onload = function() {
        if (xhr.status != 200) { // 分析响应的 HTTP 状态
            alert(`Error ${xhr.status}: ${xhr.statusText}`); // 例如 404: Not Found
        } else { // 显示结果
            let xhrString = JSON.parse(xhr.response)
            // console.log(xhrString)
            if (xhrString.total > 0){
                let rows = xhrString.rows;
                if (rows[0].isinvoice === '2'){
                    AddAlertTd('已经核销');
                    return
                } else if (rows[0].isinvoice === '1'){
                    AddAlertTd('已经申请抽单');
                    return
                }
            } else {
                AddAlertTd('未验收');
                return
            }
            // alert(`Done, got ${xhr.response.length} bytes`); // response 是服务器响应

        }
    };
    xhr.onerror = function() {
        alert("Request failed");
    };
}

function queryOutOrder(customer,order_id){
    let xhr = new XMLHttpRequest();
    let url = new URL(' http://47.107.106.156:8888/sales/getRejectBillList.do');
    url.searchParams.set('businessdate','');
    url.searchParams.set('businessdate1','');
    url.searchParams.set('storageid','');
    url.searchParams.set('id','');
    url.searchParams.set('confirmstatus','');
    url.searchParams.set('goodsid','');
    url.searchParams.set('billtype','');
    url.searchParams.set('source','9');
    url.searchParams.set('status','');
    url.searchParams.set('sourceid','');
    url.searchParams.set('printsign','');
    url.searchParams.set('queryprinttimes','0');
    url.searchParams.set('customerid',customer);
    url.searchParams.set('page','1');
    url.searchParams.set('rows','1000');
    url.searchParams.set('sort','addtime');
    url.searchParams.set('order','desc');

    // 2. 配置它:从 URL /article/.../load GET-request
    xhr.open('post', url);

    // 3. 通过网络发送请求
    xhr.send();

    // 4. 当接收到响应后,将调用此函数
    xhr.onload = function() {
        if (xhr.status != 200) { // 分析响应的 HTTP 状态
            alert(`Error ${xhr.status}: ${xhr.statusText}`); // 例如 404: Not Found
        } else { // 显示结果
            let xhrString = JSON.parse(xhr.response)
            // console.log(xhrString)
            if (xhrString.total > 0){
                let i = 0;
                let orderNo='';
                for (; i < xhrString.rows.length;i++) {
                    if (xhrString.rows[i].remark === order_id || xhrString.rows[i].sourceid === order_id ){
                        orderNo += `${xhrString.rows[i].id},`
                    }
                }
                if (orderNo){
                    alert( `有重复单,单号为${orderNo}`);
                }
            }
            // alert(`Done, got ${xhr.response.length} bytes`); // response 是服务器响应
        }
    };

    xhr.onerror = function() {
        alert("Request failed");
    };
}