append model in orderDetailAddPage
当前为
// ==UserScript== // @name appendModel // @namespace http://tampermonkey.net/ // @version 4.09 // @description append model in orderDetailAddPage // @author FengXia // @match http://47.107.106.156/* // @icon // @grant none // @license MIT // @require https://greatest.deepsurf.us/scripts/448895-elementgetter%E5%BA%93/code/ElementGetter%E5%BA%93.js?version=1077494 // @require https://unpkg.com/[email protected]/dist/ajaxhook.min.js // ==/UserScript== (function() { const elmGetter = new ElementGetter(); //初始化ElementGetter let url_bool = false; //网址判断变量 ah.proxy({ //ajax hook //请求发起前进入 onRequest: async (config, handler) => { // console.log(config.url) if (config.url==='sales/getGoodsDetail.do'){ //判断xhr网址是否是获取新增订单商品 url_bool =true; } else if(config.url==='sales/supplierAuditOrderMuti.do'){ let regexp = /X.*,/g; let order = config.body.match(regexp); let order_list = order.toString().split(','); if (undefined===order_list[order_list.length]){ order_list.splice(-1, 1) } let num =1; let total = `${order_list.length}~`; let order_index; let customer_list=[]; let order_mode = prompt('请输入订单备注模式:\n 1.按照订单数量(默认)\n 2.按照客户数量','1'); let input_urgent_level = prompt('请输入订单加急级别,保持原有级别直接回车'); if (order_mode === '2') { for (let item of order_list) { let customer = await getOrderCustomer(item); customer_list.push(customer); } let temp_list = sortOrder(order_list,customer_list); order_list=temp_list[0]; customer_list = temp_list[1]; order_index = customerNumber(customer_list); total = ''; num = 0; } for (let item of order_list) { let text = await queryOrderStock(item) let from_data; if (text){ from_data = await queryEditOrder(item,order_mode === '2' ? order_index[num] : num, total,input_urgent_level,'orderEditPage.do') // updateOrder(from_date) } else { from_data = await queryEditOrder(item,order_mode === '2' ? order_index[num] : num, total,input_urgent_level,'orderDeployInfoPage.do') // updateOrder(from_date) } let flag = await updateOrder(from_data); // console.log(`第${num}张单`); num++; } config.body = config.body.replace(regexp,`${order_list.toString()},`); } handler.next(config); }, //请求成功后进入 onResponse: (response, handler) => { if (url_bool) { // // console.log(response.response); updateData(response.response); url_bool =false; } handler.next(response) } }); // module 给销售核销增加单据搜索 elmGetter.get('input[name="saleorderid"]').then(input_order => { input_order.addEventListener("keypress", addSearch,true); // console.log(order); }); // module 给新增销售订单的单号元素添加重复订单查询监听 elmGetter.each('#sales-sourceid-orderAddPage', document, order => { order.addEventListener("focusout", addListener,true); // console.log(order); }); // module 给新增退货通知单的单号元素添加重复退货单查询监听 elmGetter.each('#sales-sourceid-rejectBillAddPage', document, out_order => { out_order.addEventListener("focusout", addListenerOutOrder,true); // console.log(out_order); }); // module 订单添加规格 elmGetter.each('#remark', document, add_model => { const table_tr=add_model.parentNode.parentNode; let model_string = ` <td>规格:</td> <td><input id="products_model" class="len150 readonly" readonly="readonly" name="model" placeholder=""></td> </tr>` addElement(table_tr,'#products_model',model_string,'beforeend') }); // module 订单添加最新采购价 elmGetter.each('#sales-loading-orderDetailAddPage', document, add_price => { const table = add_price.parentNode.parentNode; let price_string = ` <tr> <td>最新采购价:</td> <td><input id="products_price" class="len150 readonly" readonly="readonly" name="newstorageprice" placeholder=""> </td> </tr>` addElement(table,'#products_price',price_string,'beforeend') }); // module 销售单添加历史销售明细 elmGetter.each('#sales-dialog-orderAddPage-content', document, add_history_price => { // console.log(add_history_price); const div = add_history_price.parentNode; div.style.width = '1201px' let div_string = ` <div class="panel window" id="addhistoryprice" style="width: 600px; left:601px"> <div class="panel-header panel-header-noborder window-header" style="width: 600px;"> <div class="panel-title" style="">商品历史价格</div> </div> <div class="easyui-layout layout easyui-fluid" data-options="fit:true" style="width: 600px; height: 424px;"> <div class="panel layout-panel layout-panel-center" style="width: 600px; left: 0px; top: 0px;"> <div data-options="region:'center',border:false" title="" class="panel-body panel-body-noheader panel-body-noborder layout-body" style="width: 600px; height: 424px;"> <table cellpadding="0" cellspacing="0"> <tbody> <tr class="datagrid-header-row"> <td class="len120">日期</td> <td class="len80">仓库</td> <td class="len80">单位</td> <td class="len100">数量</td> <td class="len100">单价</td> <td class="len120">金额</td> </tr> </tbody></table> <table cellpadding="0" cellspacing="0"> <tbody id="table_row"> </tbody></table> </div> </div> </div> </div> ` addElement(div,'#addhistoryprice',div_string,'afterbegin') }); // module 换货单添加历史销售明细 elmGetter.each('#sales-dialog-swapOrderAddPage-content', document, add_history_swap => { // console.log(add_history_price); const div = add_history_swap.parentNode; div.style.width = '1201px' let div_string = ` <div class="panel window" id="addhistoryswap" style="width: 600px; left:601px"> <div class="panel-header panel-header-noborder window-header" style="width: 600px;"> <div class="panel-title" style="">商品历史价格</div> </div> <div class="easyui-layout layout easyui-fluid" data-options="fit:true" style="width: 600px; height: 424px;"> <div class="panel layout-panel layout-panel-center" style="width: 600px; left: 0px; top: 0px;"> <div data-options="region:'center',border:false" title="" class="panel-body panel-body-noheader panel-body-noborder layout-body" style="width: 600px; height: 424px;"> <table cellpadding="0" cellspacing="0"> <tbody> <tr class="datagrid-header-row"> <td class="len120">日期</td> <td class="len80">仓库</td> <td class="len80">单位</td> <td class="len100">数量</td> <td class="len100">单价</td> <td class="len120">金额</td> </tr> </tbody></table> <table cellpadding="0" cellspacing="0"> <tbody id="table_row"> </tbody></table> </div> </div> </div> </div> ` addElement(div,'#addhistoryswap',div_string,'afterbegin') }); // module 退货单添加历史销售明细 elmGetter.each('#sales-dialog-rejectBillAddPage-content', document, add_history_reject => { // console.log(add_history_price); const div = add_history_reject.parentNode; div.style.width = '1201px'; div.style.left='360px'; let div_string = ` <div class="panel window" id="addhistoryreject" style="width: 600px; left:601px"> <div class="panel-header panel-header-noborder window-header" style="width: 600px;"> <div class="panel-title" style="">商品历史价格</div> </div> <div class="easyui-layout layout easyui-fluid" data-options="fit:true" style="width: 600px; height: 480px;"> <div class="panel layout-panel layout-panel-center" style="width: 600px; left: 0px; top: 0px;"> <div data-options="region:'center',border:false" title="" class="panel-body panel-body-noheader panel-body-noborder layout-body" style="width: 600px; height: 480px;"> <table cellpadding="0" cellspacing="0"> <tbody> <tr class="datagrid-header-row"> <td class="len120">日期</td> <td class="len80">仓库</td> <td class="len80">单位</td> <td class="len100">数量</td> <td class="len100">单价</td> <td class="len120">金额</td> </tr> </tbody></table> <table cellpadding="0" cellspacing="0"> <tbody id="table_row"> </tbody></table> </div> </div> </div> </div> ` addElement(div,'#addhistoryreject',div_string,'afterbegin') }); // module 换货单添加最新采购价 elmGetter.each('#sales-loading-swapOrderDetailAddPage', document, add_price => { const table = add_price.parentNode.parentNode; let price_string = ` <tr> <td>最新采购价:</td> <td><input id="products_price" class="len150 readonly" readonly="readonly" name="newstorageprice" placeholder=""> </td> </tr>` addElement(table,'#products_price',price_string,'beforeend') }); })(); // module 添加元素 function addElement(element,element_id,add_string,add_mode){ if(!document.querySelector(element_id)){ element.insertAdjacentHTML(add_mode,add_string) } } // module 查询订单号重复 function QueryCustomerOrder(customer,order){ let xhr = new XMLHttpRequest(); let url = new URL('http://47.107.106.156:8888/sales/getOrderList.do'); let query_date = getIntervalDate(); url.searchParams.set('businessdate', query_date.start_date); url.searchParams.set('businessdate1', query_date.end_date); 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"); }; } // module 更新规格和最新采购价 function updateData(xhr_string) { try { let xhrString = JSON.parse(xhr_string); let customer = document.querySelector('[id^="sales-customer-showid"] a'); let model_string = xhrString.detail.goodsInfo.model; let products_price = xhrString.detail.goodsInfo.newbuyprice; let products_string = xhrString.detail.goodsInfo.id; showCustomerSalesFlowList((customer?customer.innerText: document.querySelector('#sales-customer-showid-dispatchBillAddPage').innerText.substring(3)), products_string); document.querySelector('#products_model').setAttribute("placeholder", model_string); document.querySelector('#products_price').setAttribute("placeholder", products_price); } catch (err) { // console.log('err'); return } } // module 销售核销添加搜索功能 function addSearch(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(); } } // module 格式化单据号 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 } // module 查询核销单号 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 } } // module 添加窗口弹出 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); } } // module 添加销售单单号重复查询 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); } } // module 添加退货通知单单号重复查询 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); } } // module 查询销售单是否核销 function CheckSaleOrder(orderId,customer) { let xhr = new XMLHttpRequest(); let url = new URL('http://47.107.106.156:8888/sales/getReceiptList.do'); let returnString; let query_date = getIntervalDate() 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 } // module 查询退货单是否核销 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('已经核销'); } else if (rows[0].isinvoice === '1'){ AddAlertTd('已经申请抽单'); } } else { AddAlertTd('未验收'); } // alert(`Done, got ${xhr.response.length} bytes`); // response 是服务器响应 } }; xhr.onerror = function() { alert("Request failed"); }; } // module 查询退货单号重复 function queryOutOrder(customer,order_id){ let xhr = new XMLHttpRequest(); let url = new URL(' http://47.107.106.156:8888/sales/getRejectBillList.do'); let query_date = getIntervalDate(); url.searchParams.set('businessdate', query_date.start_date); url.searchParams.set('businessdate1', query_date.end_date); 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"); }; } // module 获取时间参数 function getIntervalDate(){ let date = new Date(); let end_date = `${date.getFullYear()}-${(date.getMonth()+1).toString().padStart(2,"0")}-${date.getDate().toString().padStart(2,'0')}`; date.setDate(date.getDate()-90); let start_date = `${date.getFullYear()}-${date.getMonth().toString().padStart(2,"0")}-${date.getDate().toString().padStart(2,'0')}`; let query_date ={ 'start_date':start_date, 'end_date':end_date } return query_date } // module 查询销售情况流水明细 function showCustomerSalesFlowList(customer,products){ let xhr = new XMLHttpRequest(); let url = new URL('http://47.107.106.156:8888/report/finance/showCustomerSalesFlowList.do'); let query_date = getIntervalDate(); url.searchParams.set("businessdate1", "2022-03-01"); url.searchParams.set("businessdate2", query_date.end_date); url.searchParams.set("goodsid", products); url.searchParams.set("salesuser", ""); url.searchParams.set("batchno", ""); url.searchParams.set("goodssort", ""); url.searchParams.set("customerid", customer); url.searchParams.set("pcustomerid", ""); url.searchParams.set("salesarea", ""); url.searchParams.set("customersort",""); url.searchParams.set("salesdept", ""); url.searchParams.set("brandid", ""); url.searchParams.set("orderid", ""); url.searchParams.set("type", ""); url.searchParams.set("invoice1", "1"); url.searchParams.set("writeoff1","1"); url.searchParams.set("invoice2", "1"); url.searchParams.set("writeoff2", "1"); url.searchParams.set("id", ""); url.searchParams.set("storageid", ""); url.searchParams.set("supplierid", ""); url.searchParams.set("page", "1"); url.searchParams.set("rows", "1000"); // 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) let table_html = ''; let table_parentNode = document.querySelector("#table_row"); if (xhrString.total > 0){ let row_data = xhrString.rows; let x = 1; //用x取余来做斑马格 for (let row_num in row_data){ table_html = ` <tr class="${(x%2 ==0) ?"datagrid-row-alt datagrid-row":"datagrid-row"}"> <td class="len120">${row_data[row_num].addtime}</td> <td class="len80">${row_data[row_num].deliverystoragename}</td> <td class="len80">${row_data[row_num].unitname}</td> <td class="len100">${row_data[row_num].unitnum}</td> <td class="len100">${row_data[row_num].price}</td> <td class="len120">${row_data[row_num].taxamount}</td> </tr> ` + table_html; x=++x; } } table_parentNode.innerHTML=table_html; // alert(`Done, got ${xhr.response.length} bytes`); // response 是服务器响应 } }; xhr.onerror = function() { alert("Request failed"); }; } // module 查询订单是否可以配置库存 function queryOrderStock(order) { return new Promise((resolve, reject) => { let xhr = new XMLHttpRequest(); let url = new URL(`http://47.107.106.156:8888/sales/orderDeployInfo.do?id=${order}`); // 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.flag); resolve(xhrString.flag); } }; xhr.onerror = function() { alert("Request failed"); }; }) } // module 编辑订单模式 function queryEditOrder(order_num,num,total,urgentlevel,mode_page){ return new Promise((resolve, reject) => { let urgentlevel_list = ['1','2','3']; let xhr = new XMLHttpRequest(); let timestamp = Date.parse( new Date()); let saleorder_salestype = false; let goodsjson; let url = new URL(`http://47.107.106.156:8888/sales/${mode_page}?id=${order_num}&_=${timestamp}`); // 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 parser = new DOMParser(); let doc = parser.parseFromString(xhr.response, "text/html") // console.log(doc); let script_string = doc.scripts.item(0).text; let saleorder_id = order_num; let saleorder_businessdate = doc.querySelector('#sales-businessdate-orderAddPage').value; let saleorder_urgentlevel = doc.querySelector('[name="saleorder.urgentlevel"] option[selected="selected"]').value; if (urgentlevel_list.includes(urgentlevel)){ saleorder_urgentlevel = urgentlevel } if ('orderEditPage.do' === mode_page){ saleorder_salestype = doc.querySelector('[name="saleorder.salestype"] option[selected="selected"]').value; goodsjson = script_string.match(/\[{".*"}\]/); } else { goodsjson = script_string.match(/\[{".*}\]/); } let saleorder_status = doc.querySelector('[name="saleorder.status"]').value; let saleorder_customerid = doc.querySelector('[name="saleorder.customerid"]').value; let saleorder_salesuser = doc.querySelector('[name="saleorder.salesuser"]').value; let saleorder_storageid = doc.querySelector('[name="saleorder.storageid"]').value; let saleorder_salesdept = doc.querySelector('[name="saleorder.salesdept"]').value; let saleorder_sourceid = doc.querySelector('[name="saleorder.sourceid"]').value; let saleorder_remark = doc.querySelector('[name="saleorder.remark"]').value; let regexp = /[,]*此单为超级审核[,]*/g; saleorder_remark = `${total}${num} ${saleorder_remark.replaceAll(regexp, "")}`; // console.log(saleorder_remark); let lackGoodsjson = doc.querySelector('[name="lackGoodsjson"]').innerHTML; let saveaudit = doc.querySelector('[name="saveaudit"]').value; // let oldFromData = doc.querySelector('[name="oldFromData"]').value; let from_date = { 'saleorder_id': saleorder_id, 'saleorder_businessdate': saleorder_businessdate, 'saleorder_status': saleorder_status, 'saleorder_customerid': saleorder_customerid, 'saleorder_salestype': saleorder_salestype, 'saleorder_urgentlevel': saleorder_urgentlevel, 'saleorder_storageid': saleorder_storageid, 'saleorder_salesdept': saleorder_salesdept, 'saleorder_salesuser': saleorder_salesuser, 'saleorder_sourceid': saleorder_sourceid, 'saleorder_remark': saleorder_remark, 'goodsjson': goodsjson, 'lackGoodsjson': lackGoodsjson, 'saveaudit': saveaudit, // 'oldFromData':oldFromData, }; resolve(from_date); // console.log(from_date); // alert(`Done, got ${xhr.response.length} bytes`); // response 是服务器响应 } }; xhr.onerror = function() { alert("Request failed"); }; }) } // module 更新订单 function updateOrder(from_date){ return new Promise((resolve, reject) => { let xhr = new XMLHttpRequest(); let data; xhr.open('post', 'http://47.107.106.156:8888/sales/updateOrder.do'); // 必须在xhr.send()前设置 xhr.setRequestHeader('content-type', 'application/x-www-form-urlencoded;charset=UTF-8'); // data必须是这种表单数据格式的字符串;否则服务器接受到数据,按照表单数据格式解析,实际发送的不是表单格式的数据,将会解析不出来 if (from_date.saleorder_salestype) { data = `addType=real&saleorder.oldid=${from_date.saleorder_id}&saleorder.id=${from_date.saleorder_id}&saleorder.businessdate=${from_date.saleorder_businessdate}&saleorder.status=${from_date.saleorder_status}&saleorder.customerid=${from_date.saleorder_customerid}&saleorder.salestype=${from_date.saleorder_salestype}&saleorder.urgentlevel=${from_date.saleorder_urgentlevel}&saleorder.storageid=${from_date.saleorder_storageid}&saleorder.salesdept=${from_date.saleorder_salesdept}&saleorder.salesuser=${from_date.saleorder_salesuser}&saleorder.sourceid=${from_date.saleorder_sourceid}&saleorder.remark=${from_date.saleorder_remark}&goodsjson=${from_date.goodsjson}&lackGoodsjson=${from_date.lackGoodsjson}&saveaudit=${from_date.saveaudit}`; } else { data = `addType=real&saleorder.oldid=${from_date.saleorder_id}&saleorder.id=${from_date.saleorder_id}&saleorder.businessdate=${from_date.saleorder_businessdate}&saleorder.status=${from_date.saleorder_status}&saleorder.customerid=${from_date.saleorder_customerid}&saleorder.urgentlevel=${from_date.saleorder_urgentlevel}&saleorder.storageid=${from_date.saleorder_storageid}&saleorder.salesdept=${from_date.saleorder_salesdept}&saleorder.salesuser=${from_date.saleorder_salesuser}&saleorder.sourceid=${from_date.saleorder_sourceid}&saleorder.remark=${from_date.saleorder_remark}&goodsjson=${from_date.goodsjson}&lackGoodsjson=${from_date.lackGoodsjson}&saveaudit=${from_date.saveaudit}`; } xhr.send(encodeURI(data)); 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.flag); resolve(xhrString.flag); } }; xhr.onerror = function() { alert("Request failed"); }; }) } // module 根据客户数量排序 function customerNumber(customer){ let customer_list=[]; // 用来存放客户对象列表 // 循环客户数组 customer.forEach((item, index, array) => { let customer_arr = {}; // 客户对象 let customer_index = []; // 客户顺序数组 // 用客户数组里的客户搜索客户对象列表里的客户对象并且取反 if (!customer_list.find(customer_arr => customer_arr.customer === item)) { // 如果没找到,则证明客户对象列表里没有这个名称的客户对象,然后循环客户数组找出序号 customer.forEach((item_1, index_1, array_1) => { if (item === item_1) { customer_index.push(index_1) } }); customer_arr = { 'customer': item, 'index': customer_index } customer_list.push(customer_arr) } }); // console.log(customer_list); // 客户序号数组 let order_index = []; // 循环给客户序号数组赋值为0 for (let i = 0; i < customer.length; i++) { order_index.push(0) } let customer_num = 1; // 客户送货顺序变量 // 循环客户对象列表 for (let key in customer_list) { // 当客户对象里index列表大于1时,则说明有2个以上相同的客户 if (customer_list[key].index.length>1){ let customer_index= customer_list[key].index; //变量等于当前这个客户index列表 let num_list =1; //相同客户计数 // 循环客户index列表 customer_index.forEach((item, index, array) => { if (order_index[item]===0) { order_index.splice(item, 1, `${customer_num}-${num_list}`) } ++num_list }); ++customer_num } else { order_index.splice(customer_list[key].index,1,customer_num); ++customer_num } } return order_index } // module 获取订单的客户名 function getOrderCustomer(order){ return new Promise((resolve, reject) => { 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', order); url.searchParams.set('salesdept', ''); url.searchParams.set('customerid', ''); url.searchParams.set('status', '2'); url.searchParams.set('sourceid', ''); url.searchParams.set('goodsid', ''); url.searchParams.set('printsign', ''); url.searchParams.set('queryprinttimes', '0'); 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', '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) if (xhrString.total > 0){ // console.log(xhrString.rows[0].customername); resolve(xhrString.rows[0].customername); } } }; xhr.onerror = function() { alert("Request failed"); }; }) } // module 排序单号 function sortOrder(order_list, customer_list) { let order_temp=[]; let customer_temp = []; customer_list.forEach((item, index) => { let find_index = customer_temp.indexOf(item); if (find_index>=0){ customer_temp.splice(find_index, 0, item); order_temp.splice(find_index,0,order_list[index]); // console.log(order_temp,customer_temp); } else { customer_temp.splice(index, 0, item); order_temp.splice(index,0,order_list[index]); // console.log(order_temp,customer_temp); } }); return [order_temp,customer_temp] }