// ==UserScript==
// @name appendModel
// @namespace http://tampermonkey.net/
// @version 0.9
// @description append model in orderDetailAddPage
// @author FengXia
// @match http://47.107.106.156/*
// @icon
// @grant none
// @license MIT
// ==/UserScript==
(function() {
let newNode = document.createElement("td");
newNode.innerText="规格:";
newNode.id="model"
let newNode2 = document.createElement("td");
let newNode3 = document.createElement("tr");
let oldxhr=window.XMLHttpRequest;
function newobj(){}
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);
}
let xhrString = Reflect.get(target.oldxhr,prop);
try {
xhrString = JSON.parse(xhrString)
console.log('属性劫持结果2',xhrString)
//console.log('属性劫持结果3',xhrString.detail.goodsInfo.model)
let modelString =xhrString.detail.goodsInfo.model;
let newstorageprice = xhrString.detail.goodsInfo.newstorageprice;
let inputblur =document.querySelector('#sales-sourceid-orderAddPage');
// console.log('$$$$$$$$$$$$$',inputblur);
if (modelString){
let ops=document.querySelectorAll('#sales-form-orderDetailAddPage tbody tr');
let ops2 =document.querySelector('#sales-form-orderDetailAddPage tbody');
let findModel=document.querySelectorAll('#sales-form-orderDetailAddPage tbody #model');
if (findModel){
}
newNode2.innerHTML=`<input class="len150 readonly" readonly="readonly" name="model" placeholder=${modelString}>`
newNode3.innerHTML=`<td>最新库存价:</td><td><input class="len150 readonly" readonly="readonly" name="newstorageprice" placeholder=${newstorageprice}></td>`
ops[11].appendChild(newNode);
ops[11].appendChild(newNode2);
ops2.appendChild(newNode3);
}
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){
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");
};
}