您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
方便自己导出促销提报使用
// ==UserScript== // @run-at document-idle // @name VCP快速获取处理 // @version 0.15 // @description 方便自己导出促销提报使用 // @author weixin:SoundEgg // @match https://prom-vc.jd.com/sub_promotion/unitPromotion/listPage // @match https://vcpps.jd.com/sub_itemleft/price/initPriceListPage // @match https://vca.jd.com/sub_coupon_activity/activityItem/initItemList?activityId=* // @namespace https://greasyfork.org/users/700851 // @note 2020.12-14-V0.15 增加修改促销提报时,可以任意修改显示数量 // @note 2020.11-05-V0.12 增加采购价详情导出 // ==/UserScript== (function() { 'use strict'; // Your code here... if (window.location.href.indexOf('/sub_itemleft/price/initPriceListPage') !== -1) { addhtmlprice() //添加点击监听 var obj2 = document.getElementById('toexport3') obj2.addEventListener("click", () => { getpricedata(); }); }else if(window.location.href.indexOf('/unitPromotion/listPage') !== -1){ addhtml() //添加点击监听 var obj3 = document.getElementById('toexport2') obj3.addEventListener("click", () => { getdata(); }); }else if(window.location.href.indexOf('/sub_coupon_activity/activityItem/initItemList') !== -1){ addhtml2() var obj4 = document.getElementById('toexport4') obj4.addEventListener("click", () => { getqeu(); }); }; })(); function addhtml2(){ var obj = $('.fl.ml10')[0]; obj.insertAdjacentHTML("afterEnd", ` <input id="toexport4" type="button" value="增加页码" class="btn btn-primary" style="padding-bottom: 20px;width: 65px;text-align: center;line-height:inherit;margin-left:-30px;"> `); } function getqeu(){ //修改提供优惠券数量 var num=prompt("输入需要修改的采购价数量,默认为50","50"); var obj=$('#vcGps_item_list_page')[0]; obj.insertAdjacentHTML("beforeend",'<option value="'+num+'">'+num+'条</option>') }; function getpricedata(){ var num=prompt("输入需要导出的采购价数量,默认为30","30"); var downloadName=getdownloadName("采购价导出"); var t= { "length": num, "page": "1", "sidx": "wareId", "sord": "desc" }; var t2 =$("#serchFrom").serializeJson() //合并json var object2 = $.extend({}, t2, t); $.post("/sub_itemleft/price/findPriceList",object2,function(data,status){ clickDownloadprice(data["jsonList"],downloadName) //console.log(data["jsonList"]) },"json"); return t }; //下载采购价格 function clickDownloadprice(csvJson,downloadName){ JSonToCSV.setDataConver({ data: csvJson, fileName: downloadName, columns: { title: ['商品编码','商品标题','含税采购价','不含税价格','税率','税额'],//csv表头 key: ['wareId', 'name', 'price',"taxFreePrice","taxRate","taxPrice"], formatter: function(n, v) { if(n === 'avg_click_user_cnt') { return Number(v).toFixed(2); } if(v === undefined){ return " "; } } } }); }; function addhtmlprice(){ //添加按钮 var obj = $("input.btn:nth-child(2)")[0] obj.insertAdjacentHTML("afterEnd", ` <tr> <td style="padding-bottom: 20px;"> <input id="toexport3" type="button" value="采购价详情导出" class="btn btn-success"> </td> </tr> `) } function addhtml(){ //添加按钮 var obj = document.getElementById('export') obj.insertAdjacentHTML("afterEnd", ` <tr> <td style="padding-bottom: 20px;"> <a id="toexport2" type="button" class="btn-c2 btn-h1">点我导出</a> </td> </tr> `) } function getdownloadName(tname){ var mydate = new Date(); var str = "" + mydate.getFullYear() + "年"; str += (mydate.getMonth()+1) + "月"; str += mydate.getDate() + "日"; return str+=tname; }; function getdata(){ var num=prompt("输入需要导出的促销数量,默认为30","30"); var downloadName=getdownloadName("促销导出"); $.post("/sub_promotion/unitPromotion/initPromotionGrid",{ "vcGps": num, "length": num, "page": "1", "sidx": "", "sord": "" },function(data,status){ clickDownload(data["jsonList"],downloadName) },"json"); return t }; function getdata2(){ $.ajax({ url: "/sub_promotion/unitPromotion/initPromotionGrid", type: "post", dataType: "json", data: {"vcGps": "50","length": "50","page": "1","sidx": "","sord": ""}, success: function (data) { } }); } function clickDownload(csvJson,downloadName){ JSonToCSV.setDataConver({ data: csvJson, fileName: downloadName, columns: { title: ['商品编码','促销编码','促销名称','商品标题','促销价格','日常价格','采购价','毛利','促销开始时间','促销结束时间'],//csv表头 key: ['wareId', 'promotionId', 'promotionName',"wareName","fixedPrice","jdPrice","cbjPrice","grossmargin","startTimeStr","endTimeStr"], formatter: function(n, v) { if(n === 'avg_click_user_cnt') { return Number(v).toFixed(2); } if(v === undefined){ return " "; } } } }); }; //csv下载 (function( global, factory ) { "use strict"; if(typeof module === "object" && typeof module.exports === "object" ) { module.exports = global.document ? factory( global, true ) : function(w) { return factory(w); }; } else { factory(global); } })(window, function(){ var JSonToCSV = { /* * obj是一个对象,其中包含有: * ## data 是导出的具体数据 * ## fileName 是导出时保存的文件名称 是string格式 * ## showLabel 表示是否显示表头 默认显示 是布尔格式 * ## columns 是表头对象,且title和key必须一一对应,包含有 title:[], // 表头展示的文字 key:[], // 获取数据的Key formatter: function() // 自定义设置当前数据的 传入(key, value) */ setDataConver: function(obj) { var bw = this.browser(); if(bw['ie'] < 9) return; // IE9以下的 var data = obj['data'], ShowLabel = typeof obj['showLabel'] === 'undefined' ? true : obj['showLabel'], fileName = (obj['fileName'] || 'UserExport') + '.csv', columns = obj['columns'] || { title: [], key: [], formatter: undefined }; var ShowLabel = typeof ShowLabel === 'undefined' ? true : ShowLabel; var row = "", CSV = '', key; // 如果要现实表头文字 if (ShowLabel) { // 如果有传入自定义的表头文字 if (columns.title.length) { columns.title.map(function(n) { row += n + ','; }); } else { // 如果没有,就直接取数据第一条的对象的属性 for (key in data[0]) row += key + ','; } row = row.slice(0, -1); // 删除最后一个,号,即a,b, => a,b CSV += row + '\r\n'; // 添加换行符号 } // 具体的数据处理 data.map(function(n) { row = ''; // 如果存在自定义key值 if (columns.key.length) { columns.key.map(function(m) { row += '"' + (typeof columns.formatter === 'function' ? columns.formatter(m, n[m]) || n[m] : n[m]) + '",'; }); } else { for (key in n) { row += '"' + (typeof columns.formatter === 'function' ? columns.formatter(key, n[key]) || n[key] : n[key]) + '",'; } } row.slice(0, row.length - 1); // 删除最后一个, CSV += row + '\r\n'; // 添加换行符号 }); if(!CSV) return; this.SaveAs(fileName, CSV); }, SaveAs: function(fileName, csvData) { var bw = this.browser(); if(!bw['edge'] && !bw['ie']) { var alink = document.createElement("a"); alink.id = "linkDwnldLink"; alink.href = this.getDownloadUrl(csvData); document.body.appendChild(alink); var linkDom = document.getElementById('linkDwnldLink'); linkDom.setAttribute('download', fileName); linkDom.click(); document.body.removeChild(linkDom); } else if(bw['ie'] >= 10 || bw['edge'] == 'edge') { var _utf = "\uFEFF"; var _csvData = new Blob([_utf + csvData], { type: 'text/csv' }); window.navigator.msSaveBlob(_csvData, fileName); } else { var oWin = window.top.open("about:blank", "_blank"); oWin.document.write('sep=,\r\n' + csvData); oWin.document.close(); oWin.document.execCommand('SaveAs', true, fileName); oWin.close(); } }, getDownloadUrl: function(csvData) { var _utf = "\uFEFF"; // 为了使Excel以utf-8的编码模式,同时也是解决中文乱码的问题 if (window.Blob && window.URL && window.URL.createObjectURL) { var csvData = new Blob([_utf + csvData], { type: 'text/csv' }); return URL.createObjectURL(csvData); } // return 'data:attachment/csv;charset=utf-8,' + _utf + encodeURIComponent(csvData); }, browser: function() { var Sys = {}; var ua = navigator.userAgent.toLowerCase(); var s; (s = ua.indexOf('edge') !== - 1 ? Sys.edge = 'edge' : ua.match(/rv:([\d.]+)\) like gecko/)) ? Sys.ie = s[1]: (s = ua.match(/msie ([\d.]+)/)) ? Sys.ie = s[1] : (s = ua.match(/firefox\/([\d.]+)/)) ? Sys.firefox = s[1] : (s = ua.match(/chrome\/([\d.]+)/)) ? Sys.chrome = s[1] : (s = ua.match(/opera.([\d.]+)/)) ? Sys.opera = s[1] : (s = ua.match(/version\/([\d.]+).*safari/)) ? Sys.safari = s[1] : 0; return Sys; } }; window.JSonToCSV = JSonToCSV; });