// ==UserScript== // @name appendSALEORDER // @namespace http://tampermonkey.net/ // @version 1.60 // @description 在'销售订单新增'增加功能 // @author fengxia // @match http://122.13.25.247:8888/sales/orderPage.do // @match http://47.107.106.156:8888/sales/orderPage.do // @match http://47.107.106.156:8888/sales/orderPage.do?type=edit&id=* // @match http://122.13.25.247:8888/sales/orderPage.do?type=edit&id=* // @icon https://www.google.com/s2/favicons?sz=64&domain=25.247 // @require https://scriptcat.org/lib/513/2.1.0/ElementGetter.js // @require https://scriptcat.org/lib/637/1.4.6/ajaxHooker.js // @icon64 data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAAAZlBMVEUAAAD///+hoaFoaGhsbGy7u7vd3d2+vr76+vra2tr29va2trYrKyvg4ODs7OxXV1dgYGCtra0xMTGXl5fExMQ6OjqOjo7R0dEVFRWnp6dSUlIiIiIcHBwLCwt4eHhycnKEhIRHR0f14+hfAAADN0lEQVRYhe1WyZajMAyEsMQshgABEwIJ+f+fbC02W0yHnjnNvNYFDFbZKpUlO86v/e/Wpve/8M4TFckwSvI/cx8z11g2/tw9vZKrEIKe159GUkvwipPxVb4eQQzvYV12XX3Y/x6BT5LqUZkgWixEHF/9/hAAeozz0I8nOtzoccDfg8CbaZQrYkOGYUaEFO2RDUTT4MZefjkMpVcQo5/Wr2DSi9/bhlYPhukvZqf41l3hiiFv8xJR2CslIT+XXfc+YapojY60kG1ZA0rknj+lL4YtnGCQ4lbESSczf5R6Ugc5ee4AoL9KAwbwYXDWXJTXhaDhf2L3R44rxzkbgFgHn55Y0JJjzyeONpYLDn4CCPn7A46VaggjwIB6eEltAOConCUAcZVDXBKIHHgbp9IZ4KW0AZj8LAHaQEzaY0lmHk60AXiQ8XYFEDoVrRpXOmSfdQFfbMe7MuTOJMLU6IJqkh7PuTMVrhosAJCp2xrApA6Lk+p4VllMQjsAcNNkpzeQlKkPHhQb0VkAEgO8TSMaVqhMH/EyW57W2R7moNoBCjwDPg1QzM07QAk7o+wUrIcNwAVZ1ktAROE7gBMaEq4kaW8NgHlQOsrULiUoHjGT40PIqngHOIGYzRK22ggJz3TpbrCt7AMU9gPZwc4y5slJC7FO4woAxmcLgMMi0dF1ymSOtnMEYFDczxqtdJRM6HlAbhSvARIqHG+G5BJGqONoK2opooIMLQFaYMvWs0EJruNRV1b8vy+wqDtbEj2caAcQg5NWdIQL6IJPjIGg1gDKhLINARyxed4DpgLFq+vvKoRiEszGWmlCy0OmcyrqSxKr/eaUzFvDGnDWCX2d5zQmNdJsO4xoz8XeyqcpIdRexZ0BBOYl2r2wyHfwB2WFO0zBjS/Zv2Vc8Pey3l3kor0iR65Q+61Vr6GmttNSOtxRf+jgvfnW3eFa4CZ+3fb1k1q1uC0D3GmKC2s5zkxKvieqWbKQPvFpfbRnNF+pYn/+3ny6m0zW+9eYDIMxlQsbvKuO3zfrV5fWKMc4GLu6G+m2KY/fNNnu6/vu2drTv7fFjVuOP3dHy5MolJEqrKfvoPXp57vpr/3r9gUxwiW4OiuC3wAAAABJRU5ErkJggg== // @grant none // ==/UserScript== (function() { 'use strict'; let re_url = /(\b25[0-5]|\b2[0-4][0-9]|\b[01]?[0-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}/; let temp_url = window.location.href; window.site_url; window.test = re_url.exec(temp_url)[0]; // 调用函数 查找变量和绑定事件 findAndBindEvents() createTbaleTd() ajaxHooker.hook(request => { // console.log(request.url) if (request.url === 'sales/getGoodsDetail.do') { request.response = res => { let json_array,products_id,products_model,products_newbuyprice try { json_array =((JSON.parse(res.responseText)).detail)['goodsInfo']; // console.log(json_array.id) products_id =json_array.id; products_model = json_array.model; products_newbuyprice = json_array.newbuyprice; } catch(err){ console.log(err) } // let customer_id = $('input[name="saleSwapOrder.customerid"]').val() let customer_id = $('#sales-customer-orderAddPage-hidden').val() let select_year = $('.new_div .tabs-selected span').html() $('#products_price').val(products_newbuyprice) $('#products_model').val(products_model) queryHistoryPrice(customer_id,products_id,select_year ) }; } }); })(); // 查找变量和绑定事件 function findAndBindEvents() { const eg = elmGetter; // module 给新增销售订单的单号元素添加重复订单查询监听 elmGetter.get('#sales-sourceid-orderAddPage').then(order => { order.addEventListener("focusout", addListener,true); }); // module 添加历史旧价查询窗口 elmGetter.each('#sales-dialog-orderAddPage-content', document, reply => { var targetDiv = $('div.panel.window').filter("[style*='display: block;']"); var targetShadow = $('div.window-shadow').filter("[style*='display: block;']"); // console.log(targetDiv.css("top")); const div_top = targetDiv.css("top") // 获取屏幕的宽度 var screenWidth = window.screen.width; // console.log(screenWidth) if (screenWidth <= 1550) { targetDiv.css("left","550px"); targetShadow.css("left","550px"); } var newDiv =`
'+table_div+'
' targetDiv.before(newDiv);//添加新div var remove_div = $(".new_div"); targetDiv.find(".panel-tool-close").on('click', function() {//添加一个关闭窗口的函数 remove_div.remove(); // 移除新DIV }); $('.new_div .tabs li').on('click', function() {//给新的分页添加切换效果 // 检查当前选中的标签 if (!$(this).hasClass('tabs-selected')) { var index = $(this).index(); var div_table = $('.new_div .panel-body-noborder.layout-body'); div_table.css("display", "none"); div_table.eq(index).css("display", "block"); // 移除其他标签的选中状态 $('.tabs li').removeClass('tabs-selected'); // 添加选中状态到当前标签 $(this).addClass('tabs-selected'); let products_id = $('#sales-goodsId-orderDetailAddPage-hidden').val() if (products_id!=''){ let customer_id = $('#sales-customer-orderAddPage-hidden').val() let select_year = $('.new_div .tabs-selected span').html() queryHistoryPrice(customer_id,products_id,select_year ) } }}); return true; }); } // 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 QueryCustomerOrder(customer,order){ let xhr = new XMLHttpRequest(); let url = new URL(`http://${window.test}: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"); }; } // 日期函数 function getIntervalDate(year){ let start_date,end_date if (year){ start_date = `${year}-01-01`; end_date = `${year}-12-31`; } else if(typeof year == 'undefined') { let date = new Date(); end_date = `${date.getFullYear()}-${(date.getMonth()+1).toString().padStart(2,"0")}-${date.getDate().toString().padStart(2,'0')}`; date.setDate(date.getDate()-90); 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 } // 查询历史旧价 async function queryHistoryPrice(customer,products,year){ let user = new Object(); let list_order = []; let returns_order=await showCustomerSalesFlowList(customer,products,year); let sale_order=await showSalesOrderTrackReportData(customer,products,year); // console.log(sa2) for (let row_num in returns_order){ user = { // 一个对象 goodsid:returns_order[row_num].goodsid, date: returns_order[row_num].businessdate, unitnum:returns_order[row_num].enternum * -1, price:returns_order[row_num].price, sendnum:returns_order[row_num].enternum * -1, checkprice:returns_order[row_num].price, }; list_order.push(user) } for (let row_num in sale_order){ if (sale_order[row_num].ordernum > 0) { user = { // 一个对象 goodsid:sale_order[row_num].goodsid, date: sale_order[row_num].businessdate, unitnum: sale_order[row_num].initsendnum, price: sale_order[row_num].dispatchprice, sendnum: sale_order[row_num].sendnum === undefined?'未出库':sale_order[row_num].sendnum, checkprice: sale_order[row_num].checkprice === undefined?'未验收':sale_order[row_num].checkprice, }; list_order.push(user) } } list_order.sort(function(a,b){ // Turn your strings into dates, and then subtract them // to get a value that is either negative, positive, or zero. return new Date(a.date)-new Date(b.date); }); //console.log(list_order) //console.log(Object.keys(list_order).length === 0) let tr_html = ''; let x = 1; //用x取余来做斑马格 for (let row_num in list_order){ tr_html = ` ${list_order[row_num].goodsid} ${list_order[row_num].date} ${list_order[row_num].unitnum} ${list_order[row_num].price} ${list_order[row_num].sendnum} ${list_order[row_num].checkprice} ` + tr_html; x=++x; } if (Object.keys(list_order).length === 0){tr_html=`${products}无销售`} let table_html = `
编码 日期 数量 单价 出库数量 验收单价
`+ tr_html+'
' let div = $('.panel-body-noborder.layout-body.'+year); $(div).html(table_html); } // module 根据销售情况流水明细查询销售退货单数据 function showCustomerSalesFlowList(customer,products,year){ return new Promise((resolve, reject) => { let xhr = new XMLHttpRequest(); let query_date = getIntervalDate(year); // let url = new URL(`http://${window.test}:8888/report/finance/showCustomerSalesFlowList.do`); let url = new URL(`http://${window.test}:8888/report/storage/showInOutFlowListData.do`); url.searchParams.set("businessdate1", query_date.start_date); url.searchParams.set("businessdate2", query_date.end_date); url.searchParams.set("id", ""); url.searchParams.set("brandid", ""); url.searchParams.set("goodsid", products); url.searchParams.set("billtype", "1"); url.searchParams.set("supplierid", ""); url.searchParams.set("customerid", customer); url.searchParams.set("storageid", ""); url.searchParams.set("customersort",""); url.searchParams.set("audituserid", ""); url.searchParams.set("page", "1"); url.searchParams.set("rows", "1000"); url.searchParams.set("sort", "businessdate"); 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("2"); resolve(xhrString.rows) // alert(`Done, got ${xhr.response.length} bytes`); // response 是服务器响应 } }; xhr.onerror = function() { alert("Request failed"); }; }) } // 通过查询订单追踪明细表获取订单数据 function showSalesOrderTrackReportData(customer,products,year){ return new Promise((resolve, reject) => { let xhr = new XMLHttpRequest(); let url = new URL(`http://${window.test}:8888/report/sales/showSalesOrderTrackReportData.do`); let query_date = getIntervalDate(year); url.searchParams.set("businessdate1", query_date.start_date); url.searchParams.set("businessdate2", query_date.end_date); url.searchParams.set("id",""); url.searchParams.set("brandid",""); url.searchParams.set("goodsid", products); url.searchParams.set("customerid",customer); url.searchParams.set("checkstatus",""); url.searchParams.set("salesuser",""); url.searchParams.set("pcustomerid",""); url.searchParams.set("indooruserid",""); url.searchParams.set("sourceid",""); url.searchParams.set("goodssort",""); // url.searchParams.set("oldFromData", {"businessdate1":query_date.start_date,"businessdate2":query_date.end_date,"id":"","brandid":"","goodsid":"","customerid":"","checkstatus":"","salesuser":"","pcustomerid":"","indooruserid":"","sourceid":"","goodssort":""}); url.searchParams.set("page", "1"); url.searchParams.set("rows", "1000"); url.searchParams.set("sort", "businessdate"); url.searchParams.set("order", "asc"); // 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("1"); resolve(xhrString.rows) // alert(`Done, got ${xhr.response.length} bytes`); // response 是服务器响应 } }; xhr.onerror = function() { alert("Request failed"); }; }) } function createTbaleTd(){ elmGetter.each('#remark', document, add_model => { const table_tr=add_model.closest('tr'); const table_tbody=add_model.closest('tbody'); let model_string = ` 规格: ` table_tr.insertAdjacentHTML('beforeend', model_string); let price_string = ` 最新采购价: ` table_tbody.insertAdjacentHTML('beforeend', price_string); }) }