// ==UserScript== // @name 柠檬云车冲方案配置插件 // @namespace http://tampermonkey.net/ // @version 1.1 // @description try to take over the world! // @author yyyykkkk // @match https://jxc.ningmengyun.com/* // @match https://jxc.ningmengyun.com/*/PurchaseOrder // @icon data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw== // @grant none // @include https://jxc.ningmengyun.com/index.html // @downloadURL https://update.greasyfork.icu/scripts/438307/%E6%9F%A0%E6%AA%AC%E4%BA%91%E8%BD%A6%E5%86%B2%E6%96%B9%E6%A1%88%E9%85%8D%E7%BD%AE%E6%8F%92%E4%BB%B6.user.js // @updateURL https://update.greasyfork.icu/scripts/438307/%E6%9F%A0%E6%AA%AC%E4%BA%91%E8%BD%A6%E5%86%B2%E6%96%B9%E6%A1%88%E9%85%8D%E7%BD%AE%E6%8F%92%E4%BB%B6.meta.js // ==/UserScript== (function() { let router let commodityList = [] // 商品列表 let domDiv // 背景图层 let overLayerFlag = true 'use strict'; setTimeout(()=> { /// 延迟执行,确保页面全部加载完成 setRoutes().then(()=> { commodity() let sideBar = document.getElementsByClassName('a cour-hand disable-select top-margin') // 需要0、1、2、10、11、12 sideBar[0].addEventListener('click',() => { // 采购订单 purchaseOrder setTimeout(()=>{ // 延迟执行,确保页面全部加载完成 if (document.getElementById('asspdfkkj456712') == null) { let dom = document.getElementsByClassName('lm-toolbar display-flex') let table = document.getElementsByClassName('el-table__body') let button = document.createElement('button') button.id = 'asspdfkkj456712' button.style.backgroundColor = 'white' button.style.border = '1px solid rgba(0,0,0,0.1)' button.style.marginLeft = '20px' button.style.borderRadius = '2px' button.innerText = '新增车冲采购订单' button.addEventListener('click', ()=>{ // 点击按钮填表 原网页添加到table的数据是后台请求而来,想办法存储该数据// 变相的可以调用或触发其方法 // 因为原页面有自己的一套数据提交逻辑,所以不能由脚本手动添加table数据,脚本添加的数据可能不会作为页面数据提交到后台 // 所以脚本只能不断调用其添加数据的方法,以确保数据可正常提交 ==> 如何触发或调用其方法 ???? // 解决调用和触发其方法的办法: 1.****; 2.直接模拟原来的请求,向后台发送请求 可行性比较大!!! setConfig() router.push('/PurchaseOrder') }) dom[0].appendChild(button) } },100) }) sideBar[1].addEventListener('click',() =>{ // 采购入库单 setTimeout(()=>{ // 延迟执行,确保页面全部加载完成 if (document.getElementById('asspdfkkj456712') == null) { let dom = document.getElementsByClassName('lm-toolbar display-flex') let table = document.getElementsByClassName('el-table__body') let button = document.createElement('button') button.id = 'asspdfkkj456712' button.style.backgroundColor = 'white' button.style.border = '1px solid rgba(0,0,0,0.1)' button.style.marginLeft = '20px' button.style.borderRadius = '2px' button.innerText = '新增车冲采购入库单' button.addEventListener('click', ()=>{ console.log('新增车冲采购入库单') }) dom[0].appendChild(button) } },100) }) sideBar[2].addEventListener('click',()=>{ // 采购退货单 setTimeout(()=>{ // 延迟执行,确保页面全部加载完成 if (document.getElementById('asspdfkkj456712') == null) { let dom = document.getElementsByClassName('lm-toolbar display-flex') let table = document.getElementsByClassName('el-table__body') let button = document.createElement('button') button.id = 'asspdfkkj456712' button.style.backgroundColor = 'white' button.style.border = '1px solid rgba(0,0,0,0.1)' button.style.marginLeft = '20px' button.style.borderRadius = '2px' button.innerText = '新增车冲采购退货单' button.addEventListener('click', ()=>{ console.log('新增车冲采购退货单') }) dom[0].appendChild(button) } },100) }) sideBar[10].addEventListener('click',()=>{ // 销售订单 setTimeout(()=>{ // 延迟执行,确保页面全部加载完成 if (document.getElementById('asspdfkkj456712') == null) { let dom = document.getElementsByClassName('lm-toolbar display-flex') let table = document.getElementsByClassName('el-table__body') let button = document.createElement('button') button.id = 'asspdfkkj456712' button.style.backgroundColor = 'white' button.style.border = '1px solid rgba(0,0,0,0.1)' button.style.marginLeft = '20px' button.style.borderRadius = '2px' button.innerText = '新增车冲销售订单' button.addEventListener('click', ()=>{ }) dom[0].appendChild(button) } },100) }) sideBar[11].addEventListener('click',()=>{ // 销售出库单 setTimeout(()=>{ // 延迟执行,确保页面全部加载完成 if (document.getElementById('asspdfkkj456712') == null) { let dom = document.getElementsByClassName('lm-toolbar display-flex') let table = document.getElementsByClassName('el-table__body') let button = document.createElement('button') button.id = 'asspdfkkj456712' button.style.backgroundColor = 'white' button.style.border = '1px solid rgba(0,0,0,0.1)' button.style.marginLeft = '20px' button.style.borderRadius = '2px' button.innerText = '新增车冲销售出库单' button.addEventListener('click', ()=>{ }) dom[0].appendChild(button) } },100) }) sideBar[12].addEventListener('click',()=>{ // 销售退货单 setTimeout(()=>{ // 延迟执行,确保页面全部加载完成 if (document.getElementById('asspdfkkj456712') == null) { let dom = document.getElementsByClassName('lm-toolbar display-flex') let table = document.getElementsByClassName('el-table__body') let button = document.createElement('button') button.id = 'asspdfkkj456712' button.style.backgroundColor = 'white' button.style.border = '1px solid rgba(0,0,0,0.1)' button.style.marginLeft = '20px' button.style.borderRadius = '2px' button.innerText = '新增车冲销售退货单' button.addEventListener('click', ()=>{ }) dom[0].appendChild(button) } },100) }) }) },3000) function setRoutes(){ // 获取vueRouter, 并注入页面所有路径 let promise = new Promise((res,rej)=>{ // 实现异步操作 router = new window.VueRouter() // 实例化vueRouter, 但是实例化的router无法改变原有的路由,因为 new 出来的router与原来的路由没有关系; 但是可以在此进行 router.push 操作,虽然无实质作用,但可以记录页面路由,可以根据路由判断页面,进而执行相应操作 let routerPath = window.lmRouter.urls // 获取页面所有路由路径 router.addRoutes(routerPath) console.log(router.history.current.path) res() }) return promise } async function commodity(){ // 请求订单商品列表接口 await axios('https://jxcapi.ningmengyun.com/jxc_api/DDL/GetSimpleProduct?kw=&offsetStop=&showDisable=false', { method: 'GET', }).then(res =>{ if (res.Data.Items.length > 0) { commodityList = commodityList.concat(res.Data.Items) let params = `https://jxcapi.ningmengyun.com/jxc_api/DDL/GetSimpleProduct?kw=&offsetStop=${res.Data.OffsetStop}&showDisable=false` getList(params) } }) } function getList(url) { axios({url:url, method: 'GET'}).then(res =>{ if (res.Data.Items.length > 0) { commodityList = commodityList.concat(res.Data.Items) let params = `https://jxcapi.ningmengyun.com/jxc_api/DDL/GetSimpleProduct?kw=&offsetStop=${res.Data.OffsetStop}&showDisable=false` getList(params) } else { commodityList.map(item => { let params = `Flag=1010&Items[0][ProdId]=${item.ProdId}&Items[0][UnitId]=${item.UnitId}&Items[0][ApId]=${item.ApId}&Items[0][WhId]=${item.WhId}` axios({url:'https://jxcapi.ningmengyun.com/jxc_api/DDL/ProdPriceSummary',method:'POST',data:params}).then(res =>{ // 请求商品单价 if(res.StatusCode == 200){item.Price = res.Data[0].Price} }) }) } }) } async function setConfig(){ // 添加 车冲设备配置 // 在点击新增后可配置 await createOverLayer() // 异步,确保背景图层嵌入成功 new Vue({ // 初始化vue,并挂载到 创建的 #app 上 el:"#app", data:function(){ return { overLayerFlag, tableData:[], commodityList, } }, template: '