在您安装前,Greasy Fork 希望您知道此脚本包含可能不受欢迎的功能,也许会帮助脚本作者获利,而不能给你带来任何收益。
作者从这份脚本获得佣金,例如透过改写链接或提供优惠券代码以包含推荐或附属代码。
脚本作者的说明:
【应GreasyFork代码规范要求:含有优惠券查询功能的脚本必须添加此提示!在此感谢大家的理解...】
自动获取京东、淘宝、天猫商品优惠券、历史价格、历史优惠金额。不止让您省钱开心购物,更可以告别虚假降价,以最优惠的价格,把宝贝抱回家。持续维护中...
// ==UserScript== // @name 【老虎优惠券】京东、淘宝、天猫商品优惠券、淘宝礼金、京东礼金、历史价格、历史优惠金额。 // @description 自动获取京东、淘宝、天猫商品优惠券、历史价格、历史优惠金额。不止让您省钱开心购物,更可以告别虚假降价,以最优惠的价格,把宝贝抱回家。持续维护中... // @namespace https://tampermonkey.lhynq.cn // @version 3.1.9 // @author 上山打老虎 // @match *://item.taobao.com/* // @match *://*.detail.tmall.com/* // @match *://*.detail.tmall.hk/* // @match *://s.taobao.com/* // @match *://list.tmall.com/* // @match *://search.jd.com/* // @match *://search.jd.hk/* // @match *://item.jd.com/* // @match *://npcitem.jd.hk/* // @icon data:image/ico;base64,AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIeIgAXIioAESMvABIjLgATJCwAEBsgAA4WGwAQHCUACgwQKgYEB1INFBl5DhYcmRAaIrAQHye+DyApxw0gKsoMHynHDh4nvg8bIrAOFhycDRQZegYFCFEJDBApDxwlAA4XHQAQHCAAEyQrABIjLQASJC8AFyIqACIeIgAAAAAAIh4iABciKgARIy8AEiMuABMlLQAOFhoUCg0RbQ8aIcQeP07qLGR4/zmDn/87mLv/NKHM/zyt2P9Jt+D/Ubvi/1C54P9Jstv/OaPN/y2Ruf8wfp3/LmR5/x5AT+oOGiHFCw0Raw4XGhMTJSwAEiMtABIkLwAXIioAIh4iAAAAAAAiHiIAFyIqABEjLwASIy4jEB4knhcuN+EydIz/SK3P/1TK9/9Z1f3/TMz8/1DJ+P+h5f7/1Pf//+j+///t/v//7f7//+r////X+///re3//13T//9Kzvr/Vsv4/0itzv8xcYr/Fy024REeJJoTJC0gEiQvABciKgAiHiIAAAAAACIeIgAYIikAECEtCxEfJckSK0f/HUtz/0+/7f9Wz/r/UMDr/0a55/9Vv+j/3vL6///////38/H/+/j3//////////////z7//Xx7/////7/5fT7/2DC6v9Fu+n/V8/6/1DB7/8fTHT/EyxH/xIgJsQSIywIGSEpACIeIgAAAAAAIh4jEiAfIwwOHSVyFS1C/xMyXf8JGkD/OIew/1XM+P9Pvej/Pbfn/6be9P///////////4uLjf9RUFP/fHt9/39+gf9ZWFr/c3J2//v7+///////t+T2/zu25f9WzPf/OYu0/wkZP/8SMV3/FCtA/xAfJWwfHyUKIR4jEwAAAAAiHyMXHRYYbxgxPOZKuN3/I1d//y5vlv9VzvP/Vc32/0+/6v89t+b/t+T2////////////7+/v/93d3f93d3n/Xl1f/9zb3P/r6uv////////////D6Pb/P7jo/1XM9/9Vz/X/L3Ka/yNYf/9Ktdn/GC884BwXGW0iHiMbAAAAACIfHw8RFBl+LV5w/02uyP9Vyu//Vc31/ydghv8rapL/U8Xx/z656P+L1PD//////////////////////////////////////////////////////6Hd9f89vu7/LGqS/yhhiP9Wzvb/Vcvw/02txf8sWWr/ERQadiEeIwgAAAAAIR4gXxMXHc1Hq73/T7ja/1DA5/8YPmT/Cx5D/wseQv9GqNL/Tsby/0286P/m9fv/////////////////trW3/6qqq//////////////////x+f3/W8v0/zyjz/8LHUP/Cx1C/xk/Zv9QwOj/Trfa/0aou/8RFR3AIR4hYAAAAAAcHiQXFyoz1yFBXf8eQGL/UcXo/zeFqv8RKlD/IlR8/1C/6v9Wzvv/Qsj8/3PT9//6/f7///38/4SEhf8IBwr/AgIE/21tb//9+vn///7//4jZ+P9Cy///VMz4/yFUev8QKlD/N4ar/1DE6P8dQmT/IT9Z/xclLdsdHyIhAAAAACAeIE8YJi/lEiI+/wgVOf8ye6T/Wtj//0y34v9Rw+7/VtH+/0aevf86dIz/NajV/5Dt//+foqT/BAAA/xkTF/8dFxr/AAAA/5GQj/+d8P//N67b/zp1kP9Fmbb/VtH3/0244/9a2f//Mnmj/wkVOP8SIj3/FyYv5iAeIU0AAAAAGR4mDBMlL8QtbI3/Hkx0/0Cbxf9TxvL/UcPv/1TN+v9Bj63/HA8R/wcAAP8PFh3/Q7PY/0Kqzv8pQU3/IiQq/yIlK/8oPEb/Pp+9/0TA5f8kKDH/EAAA/wIAAP88fJX/V9b//1PF8P9AmcL/H012/y1ri/8SJC3GGh4mCwAAAAAQIy0ACxQanUamwv9Y1f//UsPw/0+96P9PwOv/VM77/yg8Sf8NAAD/jI6R/3tnY/8mWW//Vtz//1PK+P9Pvuf/Tr7m/1TK+f9V2v//PoOd/woAAP9NUFT/lImG/yQtNf9NxPH/T77q/1HE7/9Y1v//RKG8/wsSGKARJCwAAAAAAAwSFwAJCxBzNXuV/1bQ/v9Pvej/T77p/0++6f9Uzvz/NnGI/wUAAP+onJn/nYyJ/zCEo/9Syvn/T77q/1HE8P9RxfD/UL/q/1LI9P9Jqcv/CgkL/1xSUf+4oZv/MFps/07K9/9Pvej/T73o/1bQ/f8zdpH/CQ0RdwwUGgAAAAAAEiAlAA4WGTsiS13/Vs75/0+/6/9Pvun/T77p/0/A6/9SyfT/OXSL/xoxPf8yfZn/Vc75/0+96P9Pvun/T77p/0++6f9Pvun/Tr3o/1PM+v9Elrf/Ij1M/yNUaP9Qwu3/UcPv/0++6P9PwOv/Vs/4/yFHWP8NFR5BER8rAAAAAAAQHiQADhYcChIgKdVNuuD/Usby/0++6f9Pvun/T73o/0+/6/9V0P3/V9r//1bW//9TyPT/T7/q/0+96P9Pvun/T77p/0+96P9RxvH/U8n0/1fX//9V0vv/Us75/1HC7v9PvOf/T77p/1LF8v9Nud7/EiEr2Q4VIAwQHSgAAAAAABEeKAARHyoADBIYfDR6lf5W0fv/Trzo/0++6f9Pvun/UMDr/0++6f9Bk7z/MmeQ/zJokf9Ou+b/UcLt/0+96P9Pvej/U8n0/zyHsP8uXIT/Poiy/0686P9Rwe3/T73o/0++6f9Ou+f/VtH9/zBuh/8KDBKNEiEtABEgKwAAAAAAEyQuABQlLwAKDRNhFis3/VLG8v9Rwu7/T73o/0+/6v9QwOv/Q5zG/0KXwf9FoMr/P5C6/0665f9QwOv/T73o/0++6P9RxfD/RJvF/z6Ks/8+jLb/PYix/0665f9Qwez/Trvn/1LH8/9Z1///PpOy/w4WHM8QHSYfFSgyAAAAAAASJTAADhUbVhcwOvFJrcz/WNX7/1PK9P9Pven/T77p/0++6f9PwOv/Usfz/1LI8/9TyfT/T77p/1DA6/9TxvH/T77p/0+96P9RxfH/U8n1/1PJ9f9Pv+r/Trrl/0686P9Tyvb/RKLH/0Gbvv9e5f//PIyn/wwRGLMTJC0EAAAAAA8aIxwTJC7nU8jk/1PI5P8iRWH/LWKB/1jU//9Pvun/T77o/0+/6v9Pvun/T73o/0++6f9Qv+r/T7/q/0u03v9Sw+//T73o/0+96P9Pvej/T77p/1DA6/9Pvej/U8bx/1XM8f8aM0j/DRAg/0enzv9d5P//I0xc/QwTGlAAAAAACxAYdjiDnP9Z2PX/FiZB/w0KHv8ODyP/OYSm/1na//9Pv+v/T73o/0++6f9Ovun/VMr1/1zc//8wdZz/BxU6/z6WwP9Y1P3/VMr2/0++6f9Pvun/Tr3n/1PJ8/9W0PP/JUtm/xATKf8RFiz/Gi5G/1jW9/9BnL3/DRUbpQAAAAAQHSW4UMHk/z6QtP8ODyP/FSE4/xAVKf8MCRz/N36f/1fS+v9QwOr/T77o/1HE8P8zfab/OYqw/0Gdxf8LHEP/OIet/0u02P81gKr/UcPu/0+96f9RxPH/Tbje/yNJYv8LBhv/EBQq/xIZLv8PESb/P5S4/1TK7f8SIivWAAAAABQoNNNX0vD/OIGj/w8RJP8cM0z/Jk1p/yJFYP8SHDH/Iklh/1HD8P9W0f3/Usju/w0kSv8EDTL/Qp3H/1XL8f9QwOr/EStR/wcTOv9Pv+b/Wtr//0+96v8XLED/DQ4f/y5khP84fqD/L2eF/wwJHf81d5j/V9Tx/xUoNOAAAAAAFCgz01XO8v9Fosn/CwYZ/yRHZP8+lrf/I0Zi/x88Vf9GqMX/Wdf9/0mt1P9LsdP/PJS//zJ8qP9Rw+z/XNz//1fS/v82hbH/OIq1/0qw0/9CnLv/V9P9/0674P8oVXP/EyMz/yZQbP8iRl//CwYa/0WjyP9RxOj/ER8pzwAAAAARHSa9TLbc/1bS+P8fPVf/BwAO/wwVIv8zdY7/XeP//0271f8jUGT/EBsk0REeJ8IjS1n3L2l9/y9rg/8ua4X/LWd//y1me/8jTl37EiAoxQoNEsUrYXX/WNb4/17l//9DnsP/HjpT/wsKGv8pWXj/XOD//zyOrP8MExqXAAAAAA0VGoU6iaj/Wdb//0qw2/84gqD/U8bp/1jT8P8rYXX/DRUe1AkKDmAMEhoRDRYeCgwSGSYOFRtIDBQaYg0VGmYNFBpjDRYbTgwSFykOFBoLEyMtCwoMEoAZMj/3RKHC/13h//9Z1///S7Db/1PJ9f9X0vj/HD1L+Q4WHD0AAAAADhUZPiNLXPpY1v//WNX//1/m//8+kqz/EiIs9QkLEYESISsLDxohAA0UGwAOFx8AEB4nABMjLQAQHiYAEB0kABEeJgATJSwAER8mAA4VGwAUJjAAEBokAAwSGUAMExnGKVxy/0uz1f9Z2P//Wtz//y5qfv8KDhOaEiUtAQAAAAAPHi0FDhgfvj2Qqv9Gp8f/IERV/wsQFrsLEhgyESEsABIjLgAPGSAADRQbAA4XHwAQHSYAEyIsABAeJgAQHSQAER4mABMkKwARHiUADhUbABQlLwAPGSIAEyIsAA4ZHwkKDhNoEBskzSJMXfYjS1v7DhceshAdJg0TJS4AAAAAABIjMQARISwpDhgguQ0XHbkLEhhaEiMtAA4ZIgAQHykAEiMuAA8ZIAANFBsADhcfABAdJgATIiwAEB4mABAdJAARHiYAEyQrABEeJQAOFRsAFCUvAA8ZIgASISoADxsiAA4YIAAPGSAGBwgMOQcGCz8TIy4FFCgwABQmLwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////////gAD//AAAH/AAAAfgAAADgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAMAAAAHAAAABwAAAAcAAAAHgAAAD4AAAAcAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgD/+AID//wHD///D//////////8= // @require https://cdn.jsdelivr.net/npm/react@16/umd/react.production.min.js // @require https://cdn.jsdelivr.net/npm/react-dom@16/umd/react-dom.production.min.js // @require https://cdn.jsdelivr.net/npm/[email protected]/dist/axios.min.js // @require https://cdn.jsdelivr.net/npm/@material-ui/[email protected]/umd/material-ui.production.min.js // @require https://cdn.jsdelivr.net/npm/echarts@5/dist/echarts.min.js // @require https://cdn.jsdelivr.net/npm/[email protected]/dist/md5.min.js // @require https://cdn.jsdelivr.net/npm/[email protected]/dist/umd/uuid.min.js // @antifeature referral-link 【应GreasyFork代码规范要求:含有优惠券查询功能的脚本必须添加此提示!在此感谢大家的理解...】 // @grant unsafeWindow // @grant window.close // @grant window.focus // ==/UserScript== /******/ (() => { // webpackBootstrap /******/ "use strict"; /******/ var __webpack_modules__ = { /***/ 395: /***/ (module, __webpack_exports__, __webpack_require__) => { /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ Z: () => __WEBPACK_DEFAULT_EXPORT__, /* harmony export */ }); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(613); /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/ __webpack_require__.n( _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__ ); // Imports var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default()(function (i) { return i[1]; }); // Module ___CSS_LOADER_EXPORT___.push([ module.id, ".x-lhq-hover-9527{display:inline-block;margin-left:5px}.x-lhq-hover-9527__show{display:none;position:absolute;left:0;right:0;top:30px;background-color:#f4f4f4;z-index:99999999}.x-lhq-hover-9527:hover .x-lhq-hover-9527__show{display:block}.jd-item-9951{display:block;margin:0;background-color:#fff;text-decoration:none;color:#333;overflow:hidden}.jd-item-9951:hover{box-shadow:1px 1px 4px rgba(0,0,0,0.2)}.jd-item-9951__img{text-align:center;display:block;cursor:pointer}.jd-item-9951__img img{border:0}.jd-item-9951__price{display:block;color:#e4393c;margin-top:10px}.jd-item-9951__price i{font-style:normal;font-size:22px;margin:0 3px}.jd-item-9951__price em{font-size:14px;font-weight:400;font-family:Verdana;font-style:normal}.jd-item-9951__price strong{font-family:Verdana;font-weight:400;font-style:normal;font-size:12px}.jd-item-9951__tag{background-color:#c81623;color:#fff;display:inline-block;padding:0px 3px;font-size:12px;border-radius:3px;font-style:normal;line-height:20px;margin-right:3px}.jd-item-9951__tag--0{background-color:#ff5000}.jd-item-9951__h3{cursor:pointer;margin:5px 0 0 0;padding:0;font-style:normal;font-size:14px;font-weight:400;line-height:22px;max-height:44px;overflow:hidden;color:#666;word-wrap:break-word;display:block;text-decoration:none}.jd-item-9951__h3:hover{color:red}.jd-item-9951__comments{font-size:12px;color:#999;margin:5px 0 0 0}.jd-item-9951__comments strong{color:#646fb0;font-family:verdana;font-weight:700}.jd-item-9951__shop{margin:5px 0 0 0;font-size:12px;color:#999}.jd-item-9951__icons{margin:5px 0 0 0;font-size:12px;display:flex;flex-wrap:wrap;justify-content:flex-start}.jd-item-9951__icons a,.jd-item-9951__icons i{font-style:normal;color:#df3033;border:1px solid #df3033;background-color:#ffdedf;display:inline-block;padding:0 4px;text-decoration:none;margin:0 3px 3px 0}.pagination-9784{margin-top:20px;text-align:center}.pagination-9784 li{display:inline-block;padding:4px;text-align:center;min-width:22px;min-height:22px;line-height:22px;font-size:15px;margin-right:4px}.pagination-9784__text{display:inline-block;background-color:#f3f3f3;border-radius:4px;width:160px;height:42px;line-height:42px;font-size:16px;color:#333;text-align:center;cursor:pointer}.pagination-9784__text:hover{background-color:#eee}.jd-coupon-list-9527{width:100%}.jd-coupon-list-9527 td{border-bottom:1px #aaa solid;padding:0 5px}.jd-coupon-list-9527 thead td{padding-top:8px;padding-bottom:8px;font-weight:700;font-size:15px}.jd-coupon-list-9527 tbody td{font-size:14px}.jd-coupon-list-9527 tbody td:first-child{color:#ec407a}\n", "", ]); // Exports /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ___CSS_LOADER_EXPORT___; /***/ }, /***/ 768: /***/ (__unused_webpack_module, __webpack_exports__, __webpack_require__) => { __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ default: () => __WEBPACK_DEFAULT_EXPORT__, /* harmony export */ }); /* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(379); /* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/ __webpack_require__.n( _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ ); /* harmony import */ var _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(795); /* harmony import */ var _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/ __webpack_require__.n( _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ ); /* harmony import */ var _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(569); /* harmony import */ var _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/ __webpack_require__.n( _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ ); /* harmony import */ var _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(565); /* harmony import */ var _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/ __webpack_require__.n( _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ ); /* harmony import */ var _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(216); /* harmony import */ var _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/ __webpack_require__.n( _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ ); /* harmony import */ var _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(589); /* harmony import */ var _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/ __webpack_require__.n( _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ ); /* harmony import */ var _node_modules_css_loader_dist_cjs_js_node_modules_sass_loader_dist_cjs_js_components_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(395); var options = {}; options.styleTagTransform = _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default(); options.setAttributes = _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default(); options.insert = _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind( null, "head" ); options.domAPI = _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default(); options.insertStyleElement = _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default(); var update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()( _node_modules_css_loader_dist_cjs_js_node_modules_sass_loader_dist_cjs_js_components_scss__WEBPACK_IMPORTED_MODULE_6__ /* .default */.Z, options ); /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = _node_modules_css_loader_dist_cjs_js_node_modules_sass_loader_dist_cjs_js_components_scss__WEBPACK_IMPORTED_MODULE_6__ /* .default */.Z && _node_modules_css_loader_dist_cjs_js_node_modules_sass_loader_dist_cjs_js_components_scss__WEBPACK_IMPORTED_MODULE_6__ /* .default.locals */ .Z.locals ? _node_modules_css_loader_dist_cjs_js_node_modules_sass_loader_dist_cjs_js_components_scss__WEBPACK_IMPORTED_MODULE_6__ /* .default.locals */ .Z.locals : undefined; /***/ }, /***/ 379: /***/ (module) => { var stylesInDom = []; function getIndexByIdentifier(identifier) { var result = -1; for (var i = 0; i < stylesInDom.length; i++) { if (stylesInDom[i].identifier === identifier) { result = i; break; } } return result; } function modulesToDom(list, options) { var idCountMap = {}; var identifiers = []; for (var i = 0; i < list.length; i++) { var item = list[i]; var id = options.base ? item[0] + options.base : item[0]; var count = idCountMap[id] || 0; var identifier = "".concat(id, " ").concat(count); idCountMap[id] = count + 1; var index = getIndexByIdentifier(identifier); var obj = { css: item[1], media: item[2], sourceMap: item[3], }; if (index !== -1) { stylesInDom[index].references++; stylesInDom[index].updater(obj); } else { stylesInDom.push({ identifier: identifier, updater: addStyle(obj, options), references: 1, }); } identifiers.push(identifier); } return identifiers; } function addStyle(obj, options) { var api = options.domAPI(options); api.update(obj); return function updateStyle(newObj) { if (newObj) { if ( newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap ) { return; } api.update((obj = newObj)); } else { api.remove(); } }; } module.exports = function (list, options) { options = options || {}; list = list || []; var lastIdentifiers = modulesToDom(list, options); return function update(newList) { newList = newList || []; for (var i = 0; i < lastIdentifiers.length; i++) { var identifier = lastIdentifiers[i]; var index = getIndexByIdentifier(identifier); stylesInDom[index].references--; } var newLastIdentifiers = modulesToDom(newList, options); for (var _i = 0; _i < lastIdentifiers.length; _i++) { var _identifier = lastIdentifiers[_i]; var _index = getIndexByIdentifier(_identifier); if (stylesInDom[_index].references === 0) { stylesInDom[_index].updater(); stylesInDom.splice(_index, 1); } } lastIdentifiers = newLastIdentifiers; }; }; /***/ }, /***/ 569: /***/ (module) => { var memo = {}; /* istanbul ignore next */ function getTarget(target) { if (typeof memo[target] === "undefined") { var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) { try { // This will throw an exception if access to iframe is blocked // due to cross-origin restrictions styleTarget = styleTarget.contentDocument.head; } catch (e) { // istanbul ignore next styleTarget = null; } } memo[target] = styleTarget; } return memo[target]; } /* istanbul ignore next */ function insertBySelector(insert, style) { var target = getTarget(insert); if (!target) { throw new Error( "Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid." ); } target.appendChild(style); } module.exports = insertBySelector; /***/ }, /***/ 216: /***/ (module) => { /* istanbul ignore next */ function insertStyleElement(options) { var style = document.createElement("style"); options.setAttributes(style, options.attributes); options.insert(style); return style; } module.exports = insertStyleElement; /***/ }, /***/ 565: /***/ (module, __unused_webpack_exports, __webpack_require__) => { /* istanbul ignore next */ function setAttributesWithoutAttributes(style) { var nonce = true ? __webpack_require__.nc : 0; if (nonce) { style.setAttribute("nonce", nonce); } } module.exports = setAttributesWithoutAttributes; /***/ }, /***/ 795: /***/ (module) => { /* istanbul ignore next */ function apply(style, options, obj) { var css = obj.css; var media = obj.media; var sourceMap = obj.sourceMap; if (media) { style.setAttribute("media", media); } else { style.removeAttribute("media"); } if (sourceMap && typeof btoa !== "undefined") { css += "\n/*# sourceMappingURL=data:application/json;base64,".concat( btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), " */" ); } // For old IE /* istanbul ignore if */ options.styleTagTransform(css, style); } function removeStyleElement(style) { // istanbul ignore if if (style.parentNode === null) { return false; } style.parentNode.removeChild(style); } /* istanbul ignore next */ function domAPI(options) { var style = options.insertStyleElement(options); return { update: function update(obj) { apply(style, options, obj); }, remove: function remove() { removeStyleElement(style); }, }; } module.exports = domAPI; /***/ }, /***/ 589: /***/ (module) => { /* istanbul ignore next */ function styleTagTransform(css, style) { if (style.styleSheet) { style.styleSheet.cssText = css; } else { while (style.firstChild) { style.removeChild(style.firstChild); } style.appendChild(document.createTextNode(css)); } } module.exports = styleTagTransform; /***/ }, /***/ 613: /***/ (module) => { module.exports = function (cssWithMappingToString) { var list = []; list.toString = function toString() { return this.map(function (item) { var content = cssWithMappingToString(item); if (item[2]) { return "@media ".concat(item[2], " {").concat(content, "}"); } return content; }).join(""); }; list.i = function (modules, mediaQuery, dedupe) { if (typeof modules === "string") { modules = [[null, modules, ""]]; } var alreadyImportedModules = {}; if (dedupe) { for (var i = 0; i < this.length; i++) { var id = this[i][0]; if (id != null) { alreadyImportedModules[id] = true; } } } for (var _i = 0; _i < modules.length; _i++) { var item = [].concat(modules[_i]); if (dedupe && alreadyImportedModules[item[0]]) { continue; } if (mediaQuery) { if (!item[2]) { item[2] = mediaQuery; } else { item[2] = "".concat(mediaQuery, " and ").concat(item[2]); } } list.push(item); } }; return list; }; /***/ }, /***/ 665: /***/ function (__unused_webpack_module, exports, __webpack_require__) { var __createBinding = (this && this.__createBinding) || (Object.create ? function (o, m, k, k2) { if (k2 === undefined) k2 = k; Object.defineProperty(o, k2, { enumerable: true, get: function () { return m[k]; }, }); } : function (o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; }); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? function (o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); } : function (o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; var __importDefault = (this && this.__importDefault) || function (mod) { return mod && mod.__esModule ? mod : { default: mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const react_1 = __importStar(__webpack_require__(804)); const union_link_1 = __importDefault(__webpack_require__(176)); const config_1 = __webpack_require__(913); const button_styles_1 = __webpack_require__(288); const JDHttpRequest_1 = __importDefault(__webpack_require__(948)); const TBHttpRequest_1 = __importDefault(__webpack_require__(259)); const useGetRequest = (url, config) => { const [data, setData] = react_1.useState(); const request = async (url, config) => { try { let http = TBHttpRequest_1.default; if (config.params?.type == "jd") { http = JDHttpRequest_1.default; } const result = await http.get(url, config); return result.data; } catch (e) { console.log(e); } }; react_1.useEffect(() => { request(url, config).then((result) => setData(result)); }, []); return data; }; const Component = (props) => { const result = useGetRequest("push", { params: { type: props.type } }); if (result?.success) { return react_1.default.createElement( union_link_1.default, { show: config_1.is_360, union: props.type == "jd" ? "京东联盟" : "淘宝客", target: "_blank", href: result.result.url, }, react_1.default.createElement( button_styles_1.GreenColorButton, { variant: "contained", size: "small" }, result.result.text ) ); } return null; }; exports.default = Component; /***/ }, /***/ 288: /***/ (__unused_webpack_module, exports, __webpack_require__) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.TealColorButton = exports.BlueColorButton = exports.PinkColorButton = exports.GreenColorButton = void 0; const core_1 = __webpack_require__(657); exports.GreenColorButton = core_1.withStyles(() => ({ root: { color: "#fff", backgroundColor: "#07c160", boxShadow: "none", borderRadius: "2px", "&:active": { boxShadow: "none", }, "&:focus": { boxShadow: "none", }, "&:hover": { boxShadow: "none", backgroundColor: "#03b352", }, }, }))(core_1.Button); exports.PinkColorButton = core_1.withStyles(() => ({ root: { color: "#fff", backgroundColor: "#ec407a", boxShadow: "none", borderRadius: "2px", "&:active": { boxShadow: "none", }, "&:focus": { boxShadow: "none", }, "&:hover": { boxShadow: "none", backgroundColor: "#d81b60", }, }, }))(core_1.Button); exports.BlueColorButton = core_1.withStyles(() => ({ root: { color: "#fff", backgroundColor: "#1e88e5", boxShadow: "none", borderRadius: "2px", "&:active": { boxShadow: "none", }, "&:focus": { boxShadow: "none", }, "&:hover": { boxShadow: "none", backgroundColor: "#1565c0", }, }, }))(core_1.Button); exports.TealColorButton = core_1.withStyles(() => ({ root: { color: "#fff", backgroundColor: "#07c160", boxShadow: "none", borderRadius: "2px", "&:active": { boxShadow: "none", }, "&:focus": { boxShadow: "none", }, "&:hover": { boxShadow: "none", backgroundColor: "#03b352", }, }, }))(core_1.Button); /***/ }, /***/ 836: /***/ function (__unused_webpack_module, exports, __webpack_require__) { var __createBinding = (this && this.__createBinding) || (Object.create ? function (o, m, k, k2) { if (k2 === undefined) k2 = k; Object.defineProperty(o, k2, { enumerable: true, get: function () { return m[k]; }, }); } : function (o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; }); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? function (o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); } : function (o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; var __importDefault = (this && this.__importDefault) || function (mod) { return mod && mod.__esModule ? mod : { default: mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const react_1 = __importStar(__webpack_require__(804)); const button_styles_1 = __webpack_require__(288); const core_1 = __webpack_require__(657); const jd_1 = __webpack_require__(181); const config_1 = __webpack_require__(913); const functions_1 = __webpack_require__(877); const union_link_1 = __importDefault(__webpack_require__(176)); const redirect = (params) => { let result = new Array(); for (let k in params) { result.push(`${k}=${encodeURIComponent(params[k])}`); } return window.open(config_1.baseUrl.jd + "/jd.goods.redirect?" + result.join("&"), "_blank"); }; const useGetCoupon = (skuid) => { const [coupon, setCoupon] = react_1.useState(); const getItem = (skuid) => { return jd_1.JdGoodsCouponStore.getItem(skuid); }; react_1.useEffect(() => { getItem(skuid).then((r) => setCoupon(r)); }, []); return coupon; }; const Component = (props) => { const couponList = useGetCoupon(props.skuid); const [random, setRandom] = react_1.useState(0); react_1.useEffect(() => { let timerid = 0; if (couponList && couponList.length) { if (timerid) return; timerid = window.setInterval(() => { setRandom(functions_1.randomInt(0, couponList.length)); timerid = 0; window.clearTimeout(timerid); }, 1000 * 7); } return () => { window.clearTimeout(timerid); }; }, [couponList]); if (couponList?.length) { return react_1.default.createElement( "div", { className: "x-lhq-hover-9527" }, react_1.default.createElement( button_styles_1.PinkColorButton, { style: { cursor: "default" }, title: "\u63D0\u793A\uFF1A\u5148\u9886\u53D6\u4F18\u60E0\u5238\u5728\u8D2D\u7269", variant: "contained", size: "small", }, "\u6EE1", couponList[random]["quota"], "\u51CF", couponList[random]["discount"], "\u4F18\u60E0\u5238" ), react_1.default.createElement( "div", { className: "x-lhq-hover-9527__show", style: { width: props.width } }, react_1.default.createElement( "table", { cellSpacing: "0", cellPadding: "0", className: "jd-coupon-list-9527" }, react_1.default.createElement( "thead", null, react_1.default.createElement( "tr", { key: "header" }, react_1.default.createElement("td", null, "\u4F18\u60E0\u5238\u4FE1\u606F"), react_1.default.createElement("td", null, "\u6709\u6548\u671F"), react_1.default.createElement("td", null) ) ), react_1.default.createElement( "tbody", null, couponList.map((v, i) => { return react_1.default.createElement( "tr", { key: i }, react_1.default.createElement( "td", { width: "25%" }, "\u6EE1", v.quota, "\u51CF", v.discount ), react_1.default.createElement( "td", { width: "45%" }, new Date(v.getStartTime).toLocaleDateString(), "\u81F3", new Date(v.getEndTime).toLocaleDateString() ), react_1.default.createElement( "td", { width: "30%" }, react_1.default.createElement( core_1.Button, { color: "primary", disabled: v.price < v.quota, size: "small" }, react_1.default.createElement( union_link_1.default, { union: "\u4EAC\u4E1C\u8054\u76DF", show: config_1.is_360, style: { color: "inherit" }, onClick: () => redirect({ secret: config_1.JD_AES_SECRET_KEY, siteId: config_1.jd_site_id, positionId: config_1.jd_position_id, materialId: `https://item.jd.com/${props.skuid}.html`, couponUrl: v.link, }), }, v.price < v.quota ? "商品价格过低,无法领取" : "领取优惠券" ) ) ) ); }) ) ) ) ); } return null; }; exports.default = Component; /***/ }, /***/ 687: /***/ function (__unused_webpack_module, exports, __webpack_require__) { var __importDefault = (this && this.__importDefault) || function (mod) { return mod && mod.__esModule ? mod : { default: mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const react_1 = __importDefault(__webpack_require__(804)); const react_2 = __webpack_require__(804); const button_styles_1 = __webpack_require__(288); const config_1 = __webpack_require__(913); const JDHttpRequest_1 = __importDefault(__webpack_require__(948)); const union_link_1 = __importDefault(__webpack_require__(176)); const create_url = (materialUrl) => { return /https?:\/\//.test(materialUrl) ? materialUrl : "https://" + materialUrl; }; const Component = (props) => { const [open, setOpen] = react_2.useState(props.open); const redirect = async () => { const wind = window.open("about:blank", "_blank"); const res = await JDHttpRequest_1.default.get("jd.goods.lijin", { params: { materialId: create_url(props.materialUrl), siteId: config_1.jd_site_id, lhq_secret: props.lhq_secret, positionId: config_1.jd_position_id, }, }); if (!res.data.success) { wind.close(); alert("错误" + res.data.message); setOpen(false); } const title = encodeURIComponent("手机打开京东APP扫码领取"); const clickURL = encodeURIComponent(res.data.data.clickURL); wind.location.href = `${config_1.baseUrl.jd}/qrcode?title=${title}&url=${clickURL}`; }; if (!(open && props.lhq_lijin && props.lhq_secret)) return null; return react_1.default.createElement( union_link_1.default, { union: "\u4EAC\u4E1C\u8054\u76DF", show: config_1.is_360, onClick: () => redirect() }, react_1.default.createElement( button_styles_1.PinkColorButton, { title: "\u63D0\u793A\uFF1A\u793C\u91D1\u6709\u9650\uFF0C\u6CA1\u4E86\u5C31\u4F1A\u6D88\u5931\u6389\u6216\u6253\u5F00\u7A7A\u767D\u7F51\u9875", variant: "contained", size: "small", }, "\u9886\u53D6", react_1.default.createElement("b", null, props.lhq_lijin), "\u5143\u793C\u91D1" ) ); }; exports.default = Component; /***/ }, /***/ 344: /***/ function (__unused_webpack_module, exports, __webpack_require__) { var __importDefault = (this && this.__importDefault) || function (mod) { return mod && mod.__esModule ? mod : { default: mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const react_1 = __importDefault(__webpack_require__(804)); const button_styles_1 = __webpack_require__(288); const price_trend_chart_1 = __importDefault(__webpack_require__(228)); const JDHttpRequest_1 = __webpack_require__(948); __webpack_require__(768); const Component = (props) => { const result = JDHttpRequest_1.useGetRequest("jd.goods.history.info", { params: props, }); if (result && result.result) { return react_1.default.createElement( "div", { className: "x-lhq-hover-9527" }, react_1.default.createElement( button_styles_1.BlueColorButton, { style: { cursor: "default" }, variant: "contained", size: "small" }, "\u67E5\u770B\u5386\u53F2\u4EF7\u683C" ), react_1.default.createElement( "div", { className: "x-lhq-hover-9527__show", style: { width: props.width } }, react_1.default.createElement(price_trend_chart_1.default, { width: props.width, height: props.width / 2, text: result?.result?.title, data: { price: result?.result?.data ?? [] }, length: props.length, }) ) ); } return null; }; exports.default = Component; /***/ }, /***/ 412: /***/ function (__unused_webpack_module, exports, __webpack_require__) { var __createBinding = (this && this.__createBinding) || (Object.create ? function (o, m, k, k2) { if (k2 === undefined) k2 = k; Object.defineProperty(o, k2, { enumerable: true, get: function () { return m[k]; }, }); } : function (o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; }); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? function (o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); } : function (o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; var __importDefault = (this && this.__importDefault) || function (mod) { return mod && mod.__esModule ? mod : { default: mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const react_1 = __importStar(__webpack_require__(804)); const jd_1 = __webpack_require__(181); const config_1 = __webpack_require__(913); const union_link_1 = __importDefault(__webpack_require__(176)); __webpack_require__(768); const redirect = (params) => { let result = new Array(); for (let k in params) { result.push(`${k}=${encodeURIComponent(params[k])}`); } return window.open(config_1.baseUrl.jd + "/jd.goods.redirect?" + result.join("&"), "_blank"); }; const getCouponList = (props) => { const map = new Map(); if (props.couponInfo.couponList.length) { for (let i = 0; i < props.couponInfo.couponList.length; i++) { const data = Object.assign({}, props.couponInfo.couponList[i], { price: props.priceInfo.price, }); map.set(data.discount, data); } } return map.size ? Array.from(map.values()) : []; }; const storeCoupon = (skuId, price, couponList) => { const result = new Array(); for (let i = 0; i < couponList.length; i++) { const data = Object.assign({ price }, couponList[i]); result.push(data); } jd_1.JdGoodsCouponStore.setItem(skuId, ...result); }; const Item = (props) => { const url = /^https?:\/\//gi.test(props.materialUrl) ? props.materialUrl : "https://" + props.materialUrl; const couponList = getCouponList(props); react_1.useEffect(() => { if (couponList.length) { storeCoupon(props.skuId, props.priceInfo.price, props.couponInfo.couponList); } }, []); return react_1.default.createElement( "div", { className: "jd-item-9951" }, react_1.default.createElement( union_link_1.default, { className: "jd-item-9951__img", union: "\u4EAC\u4E1C\u8054\u76DF", show: config_1.is_360, onClick: () => redirect({ secret: config_1.JD_AES_SECRET_KEY, siteId: config_1.jd_site_id, positionId: config_1.jd_position_id, materialId: url, }), }, react_1.default.createElement("img", { width: "240", height: "240", src: props.imageInfo.imageList[0]["url"], }) ), react_1.default.createElement( "div", { className: "jd-item-9951__price" }, react_1.default.createElement("em", null, "\uFFE5"), react_1.default.createElement("i", null, props.priceInfo.lowestCouponPrice), react_1.default.createElement("strong", null, "\u5238\u540E\u4EF7") ), react_1.default.createElement( union_link_1.default, { union: "\u4EAC\u4E1C\u8054\u76DF", show: config_1.is_360, className: "jd-item-9951__h3", onClick: () => redirect({ secret: config_1.JD_AES_SECRET_KEY, siteId: config_1.jd_site_id, positionId: config_1.jd_position_id, materialId: url, }), }, props.owner === "g" ? react_1.default.createElement( "em", { className: "jd-item-9951__tag" }, "\u4EAC\u4E1C\u81EA\u8425" ) : null, props.skuName ), react_1.default.createElement( "div", { className: "jd-item-9951__comments" }, react_1.default.createElement("strong", null, props.comments, " "), "\u6761\u8BC4\u4EF7" ), react_1.default.createElement( "div", { className: "jd-item-9951__shop" }, react_1.default.createElement("span", null, props.shopInfo.shopName) ), react_1.default.createElement( "div", { className: "jd-item-9951__icons" }, props.lhq_lijin ? react_1.default.createElement( "i", { title: "\u63D0\u793A\uFF1A\u793C\u91D1\u6709\u9650\uFF0C\u6CA1\u4E86\u5C31\u4F1A\u6D88\u606F\u6389\u6216\u6253\u5F00\u7A7A\u767D\u7F51\u9875", }, props.lhq_lijin.toFixed(2), " \u5143\u793C\u91D1" ) : null, couponList.map((v, i) => react_1.default.createElement( "i", { title: `满${v.quota}元可用${v.discount}元券,请先点击领取优惠券`, key: i }, "\u6EE1", v.quota, "\u51CF", v.discount ) ) ) ); }; const ListItem = (props) => { if (props.data?.length) { return react_1.default.createElement( "div", { style: { display: "grid", width: "100%", gridTemplateColumns: "repeat(4,240px)", justifyContent: "space-around", rowGap: "15px", }, }, props.data.map((v, i) => react_1.default.createElement(Item, { key: i, ...v })) ); } return react_1.default.createElement(react_1.default.Fragment, null, "\u6682\u65E0\u6570\u636E"); }; exports.default = ListItem; /***/ }, /***/ 111: /***/ function (__unused_webpack_module, exports, __webpack_require__) { var __createBinding = (this && this.__createBinding) || (Object.create ? function (o, m, k, k2) { if (k2 === undefined) k2 = k; Object.defineProperty(o, k2, { enumerable: true, get: function () { return m[k]; }, }); } : function (o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; }); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? function (o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); } : function (o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; var __importDefault = (this && this.__importDefault) || function (mod) { return mod && mod.__esModule ? mod : { default: mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const react_1 = __importStar(__webpack_require__(804)); const JDHttpRequest_1 = __importDefault(__webpack_require__(948)); const modal_tabs_goods_push_1 = __importDefault(__webpack_require__(128)); const jd_item_goods_1 = __importDefault(__webpack_require__(412)); const pagination_1 = __importDefault(__webpack_require__(503)); const Component = ({ tabs, autoToggleTitle }) => { const [tabIndex, setTabIndex] = react_1.useState(0); const [items, setItems] = react_1.useState( tabs.map((v) => { return { pageIndex: v.params.pageIndex, maxPageIndex: 40, data: new Array(), state: "undone", }; }) ); const [current, setCurrent] = react_1.useState(); const request = async (index, params) => { try { const [tab, item] = [tabs[index], items[index]]; item.state = "loading"; setCurrent(item); const res = await JDHttpRequest_1.default.get(tab.url, { params: Object.assign(tab.params, params), }); if (res.data && res.data.success && res.data.data?.length) { item.data.push(...res.data.data); item.state = "undone"; if (item.pageIndex >= item.maxPageIndex) { item.state = "done"; } setItems(items); return { ...item }; } item.state = "done"; return { ...item }; } catch (e) { console.log(e); } }; const onChangeTab = (index) => { const target = items[index]; if (!target.data.length) { request(index, { pageIndex: target.pageIndex }).then((result) => { setCurrent(result); }); } else { setCurrent(target); } setTabIndex(index); }; const onChangePage = () => { items[tabIndex]["pageIndex"] += 1; request(tabIndex, { pageIndex: items[tabIndex]["pageIndex"] }).then((result) => { setCurrent(result); }); }; return react_1.default.createElement( modal_tabs_goods_push_1.default, { autoToggleTitle: autoToggleTitle, tabs: tabs.map((v) => v.label), onLoading: (i) => onChangeTab(i), onChange: (i) => onChangeTab(i), }, react_1.default.createElement(jd_item_goods_1.default, { data: current?.data }), !current || current.state == "done" ? null : react_1.default.createElement(pagination_1.default, { loading: current.state == "loading", onClick: () => onChangePage(), }) ); }; exports.default = Component; /***/ }, /***/ 128: /***/ function (__unused_webpack_module, exports, __webpack_require__) { var __createBinding = (this && this.__createBinding) || (Object.create ? function (o, m, k, k2) { if (k2 === undefined) k2 = k; Object.defineProperty(o, k2, { enumerable: true, get: function () { return m[k]; }, }); } : function (o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; }); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? function (o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); } : function (o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; Object.defineProperty(exports, "__esModule", { value: true }); const react_1 = __importStar(__webpack_require__(804)); const button_styles_1 = __webpack_require__(288); const core_1 = __webpack_require__(657); const functions_1 = __webpack_require__(877); const useStyles = core_1.makeStyles((theme) => ({ modal: { display: "flex", alignItems: "center", justifyContent: "center", }, bar: { boxShadow: "none", }, tab: { minWidth: "100px", }, paper: { backgroundColor: theme.palette.background.paper, width: 1050, position: "relative", }, })); function a11yProps(index) { return { id: `scrollable-auto-tab-${index}`, }; } const Component = (props) => { const random = props.autoToggleTitle ? functions_1.randomInt(0, props.tabs.length) : 0; const classes = useStyles(); const [open, setOpen] = react_1.useState(false); const [tabIndex, setTabIndex] = react_1.useState(random); const [tabDefaultIndexItem, setTabDefaultIndexItem] = react_1.useState(random); const onChangeTab = (value) => { setTabDefaultIndexItem(value); props.onChange && props.onChange(value); }; const onOpenModal = (value) => { setTabDefaultIndexItem(value); props.onLoading && props.onLoading(value); setOpen(true); }; const onCloseModal = () => setOpen(false); react_1.useEffect(() => { let timerid = 0; if (props.autoToggleTitle) { if (!timerid) { timerid = window.setInterval(() => { setTabIndex(functions_1.randomInt(0, props.tabs.length)); timerid = 0; window.clearTimeout(timerid); }, 1000 * 5); } } return () => { window.clearTimeout(timerid); }; }, []); return react_1.default.createElement( "div", { style: { display: "inline-block" } }, react_1.default.createElement( button_styles_1.TealColorButton, { variant: "contained", title: "\u5185\u7F6E\u5546\u54C1\u4F18\u60E0\u5238", size: "small", onClick: () => onOpenModal(tabIndex), }, props.tabs[tabIndex] ), react_1.default.createElement( core_1.Modal, { open: open, style: { zIndex: 99999999 }, onClose: () => setOpen(false), className: classes.modal, }, react_1.default.createElement( "div", { className: classes.paper }, react_1.default.createElement( core_1.AppBar, { position: "static", color: "default", className: classes.bar }, react_1.default.createElement( core_1.Tabs, { value: tabDefaultIndexItem, onChange: (e, value) => onChangeTab(value), indicatorColor: "primary", textColor: "primary", variant: "scrollable", scrollButtons: "auto", }, props.tabs.map((value, index) => { return react_1.default.createElement(core_1.Tab, { className: classes.tab, key: index, value: index, label: value, ...a11yProps(index), }); }) ) ), react_1.default.createElement( "div", { style: { padding: "15px 5px", maxHeight: 700, height: "75vh", overflowY: "scroll" } }, props.children ), react_1.default.createElement( core_1.Fab, { style: { position: "absolute", bottom: "20px", right: "30px" }, size: "medium", title: "\u70B9\u51FB\u5916\u90E8\u6697\u8272\u533A\u57DF\u4E5F\u53EF\u5173\u95ED", onClick: () => onCloseModal(), }, "\u5173\u95ED" ) ) ) ); }; exports.default = Component; /***/ }, /***/ 503: /***/ function (__unused_webpack_module, exports, __webpack_require__) { var __importDefault = (this && this.__importDefault) || function (mod) { return mod && mod.__esModule ? mod : { default: mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const react_1 = __importDefault(__webpack_require__(804)); __webpack_require__(768); const Pagination = (props) => { return react_1.default.createElement( "div", { className: "pagination-9784" }, react_1.default.createElement( "div", { className: "pagination-9784__text", onClick: () => props.loading || props.onClick() }, props.loading ? "加载中..." : props.text ?? "点击加载更多内容" ) ); }; exports.default = Pagination; /***/ }, /***/ 228: /***/ function (__unused_webpack_module, exports, __webpack_require__) { var __createBinding = (this && this.__createBinding) || (Object.create ? function (o, m, k, k2) { if (k2 === undefined) k2 = k; Object.defineProperty(o, k2, { enumerable: true, get: function () { return m[k]; }, }); } : function (o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; }); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? function (o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); } : function (o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; Object.defineProperty(exports, "__esModule", { value: true }); const react_1 = __importStar(__webpack_require__(804)); const echarts = __importStar(__webpack_require__(83)); const options = { title: { textStyle: { fontSize: 13, width: 250, overflow: "break", lineHeight: 18, }, }, tooltip: { trigger: "axis", label: { precision: 2, }, }, legend: { data: ["历史价格"], right: "20px", }, xAxis: { type: "time", boundaryGap: false, data: new Array(), }, yAxis: { type: "value", axisLabel: { formatter: "{value} 元", }, }, series: [ { name: "历史价格", type: "line", data: new Array(), markPoint: { data: [ { type: "max", name: "最大值" }, { type: "min", name: "最小值" }, ], }, markLine: { data: [{ type: "average", name: "平均值" }], }, }, ], }; const serieCoupon = { name: "历史优惠券", type: "line", data: new Array(), markPoint: { data: [{ type: "max", name: "最大值" }], }, markLine: { data: [{ type: "average", name: "平均值" }], }, }; const format = (length, data) => { const time = fill(length); const result = new Array(); for (let i = 0; i < length; i++) { if (data[i]) result.push([time[i], data[i]]); } return result; }; const fill = (length) => { const result = new Array(); const dayTimestamp = 1000 * 60 * 60 * 24; let start = new Date(Date.now() - dayTimestamp * length); for (let i = 0; i < length; i++) { start = new Date(start.getTime() + dayTimestamp); const year = start.getFullYear(); const month = start.getMonth() + 1; const day = start.getDate(); result.push(`${year}-${month}-${day}`); } return result; }; const component = (props) => { const myecharts = react_1.useRef(); const chartRef = react_1.useRef(null); const reset = () => { options.xAxis.data = fill(props.length); options.series[0].data = format(props.length, props.data.price); options.title = Object.assign(options.title, { text: props.text, subtext: props.subtext }); if (typeof props.width != "undefined") { options.title.textStyle.width = typeof props.width == "string" ? Number.parseInt(props.width) * 0.65 : props.width * 0.65; } if (props.data.coupon?.length) { const legend = new Set([...options.legend.data, "历史优惠券"]); options.legend.data = Array.from(legend); options.series[1] = serieCoupon; options.series[1].data = format(props.length, props.data.coupon); } myecharts.current?.setOption(options); }; react_1.useEffect(() => { if (chartRef.current) { myecharts.current = echarts.init(chartRef.current); reset(); } }, [myecharts.current]); if (chartRef.current) reset(); return react_1.default.createElement("div", { style: { width: props.width ?? "500px", height: props.height ?? "340px" }, ref: chartRef, }); }; exports.default = component; /***/ }, /***/ 783: /***/ function (__unused_webpack_module, exports, __webpack_require__) { var __createBinding = (this && this.__createBinding) || (Object.create ? function (o, m, k, k2) { if (k2 === undefined) k2 = k; Object.defineProperty(o, k2, { enumerable: true, get: function () { return m[k]; }, }); } : function (o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; }); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? function (o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); } : function (o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; var __importDefault = (this && this.__importDefault) || function (mod) { return mod && mod.__esModule ? mod : { default: mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const react_1 = __importStar(__webpack_require__(804)); const button_styles_1 = __webpack_require__(288); const tb_1 = __webpack_require__(609); const TBHttpRequest_1 = __importDefault(__webpack_require__(259)); const config_1 = __webpack_require__(913); const tb_goods_lijin_1 = __importDefault(__webpack_require__(890)); const union_link_1 = __importDefault(__webpack_require__(176)); const create_url = (coupon_share_url) => { const url = "https:" + coupon_share_url; return config_1.baseUrl.tb + "/redirect?url=" + encodeURI(url); }; const useGetRequest = (item_id, title) => { const [coupon, setCoupon] = react_1.useState(); const request = async () => { const item = await tb_1.TbGoodsCouponStore.getItem(item_id); if (!item) { try { const res = await TBHttpRequest_1.default.get("taobao.tbk.goods.find.one", { params: { item_id: item_id, title: title, adzone_id: config_1.ADZONE_ID, }, }); if ( res.data && res.data.success && res.data.result_list && res.data.result_list.map_data?.length ) { tb_1.TbGoodsCouponStore.setItem(item_id, res.data.result_list.map_data[0]); return res.data.result_list.map_data[0]; } } catch (e) {} return null; } return item; }; react_1.useEffect(() => { request().then((result) => result && setCoupon(result)); }, []); return coupon; }; const component = (props) => { const item = useGetRequest(props.item_id, props.title); if (!item) return null; let coupon = null; if (item?.coupon_share_url && item?.coupon_amount) { const coupon_share_url = create_url(item.coupon_share_url); coupon = react_1.default.createElement( union_link_1.default, { union: "\u6DD8\u5B9D\u5BA2", show: config_1.is_360, target: "_self", href: coupon_share_url }, react_1.default.createElement( button_styles_1.PinkColorButton, { title: "\u63D0\u793A\uFF1A\u5148\u9886\u53D6\u4F18\u60E0\u5238\u5728\u8D2D\u7269", variant: "contained", size: "small", }, "\u9886\u53D6", react_1.default.createElement("b", null, item.coupon_amount), "\u5143\u4F18\u60E0\u5238" ) ); } return react_1.default.createElement( react_1.default.Fragment, null, react_1.default.createElement(tb_goods_lijin_1.default, { open: props.lijin, item_id: item.item_id, lhq_lijin: item.lhq_lijin, lhq_secret: item.lhq_secret, }), coupon ); }; exports.default = component; /***/ }, /***/ 890: /***/ function (__unused_webpack_module, exports, __webpack_require__) { var __importDefault = (this && this.__importDefault) || function (mod) { return mod && mod.__esModule ? mod : { default: mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const react_1 = __importDefault(__webpack_require__(804)); const react_2 = __webpack_require__(804); const button_styles_1 = __webpack_require__(288); const config_1 = __webpack_require__(913); const TBHttpRequest_1 = __importDefault(__webpack_require__(259)); const union_link_1 = __importDefault(__webpack_require__(176)); const Component = (props) => { const [open, setOpen] = react_2.useState(props.open); const redirect = async (lhq_secret) => { try { const wind = window.open("about:blank", "_blank"); const res = await TBHttpRequest_1.default.get("taotao.tbk.goods.lijin", { params: { lhq_secret, adzone_id: config_1.ADZONE_ID }, }); if (res.data.success && res.data.result) { const title = encodeURIComponent("手机打开淘宝APP扫码领取"); const clickURL = encodeURIComponent(res.data.result.clickURL); wind.location.href = `${config_1.baseUrl.tb}/qrcode?title=${title}&url=${clickURL}`; } else { wind.close(); setOpen(false); alert("错误" + res.data.msg); } } catch (e) { alert("礼金创建异常-网络请求出错"); } }; if (!(open && props.lhq_lijin && props.lhq_secret)) return null; return react_1.default.createElement( union_link_1.default, { union: "\u6DD8\u5B9D\u5BA2", show: config_1.is_360, onClick: () => props.lhq_secret && redirect(props.lhq_secret), }, react_1.default.createElement( button_styles_1.PinkColorButton, { title: "\u63D0\u793A\uFF1A\u793C\u91D1\u6709\u9650\uFF0C\u6CA1\u4E86\u5C31\u4F1A\u6D88\u5931\u6389\u6216\u6253\u5F00\u7A7A\u767D\u7F51\u9875", variant: "contained", size: "small", }, "\u9886\u53D6", react_1.default.createElement("b", null, props.lhq_lijin), "\u5143\u6DD8\u793C\u91D1" ) ); }; exports.default = Component; /***/ }, /***/ 447: /***/ function (__unused_webpack_module, exports, __webpack_require__) { var __importDefault = (this && this.__importDefault) || function (mod) { return mod && mod.__esModule ? mod : { default: mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const react_1 = __importDefault(__webpack_require__(804)); const TBHttpRequest_1 = __webpack_require__(259); const button_styles_1 = __webpack_require__(288); const price_trend_chart_1 = __importDefault(__webpack_require__(228)); __webpack_require__(768); const component = ({ num_iid, length, width }) => { const result_price = TBHttpRequest_1.useGetRequest("taobao.tbk.goods.history.info/price", { params: { item_id: num_iid, length: length, }, }); const result_coupon = TBHttpRequest_1.useGetRequest("taobao.tbk.goods.history.info/coupon", { params: { item_id: num_iid, length: length, }, }); return result_price?.result || result_coupon?.result ? react_1.default.createElement( "div", { className: "x-lhq-hover-9527" }, react_1.default.createElement( button_styles_1.BlueColorButton, { style: { cursor: "default" }, variant: "contained", size: "small" }, "\u67E5\u770B\u5386\u53F2\u4EF7\u683C" ), react_1.default.createElement( "div", { className: "x-lhq-hover-9527__show", style: { width } }, react_1.default.createElement(price_trend_chart_1.default, { text: result_price?.result?.title ?? result_coupon?.result?.title, data: { price: result_price?.result?.data ?? [], coupon: result_coupon?.result?.data ?? [], }, length: length, width: width, height: width / 2, }) ) ) : null; }; exports.default = component; /***/ }, /***/ 23: /***/ function (__unused_webpack_module, exports, __webpack_require__) { var __importDefault = (this && this.__importDefault) || function (mod) { return mod && mod.__esModule ? mod : { default: mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const react_1 = __importDefault(__webpack_require__(804)); const tb_1 = __webpack_require__(609); const config_1 = __webpack_require__(913); const union_link_1 = __importDefault(__webpack_require__(176)); __webpack_require__(768); const create_url = (props) => { let url = "https://item.taobao.com/item.htm?id=" + props.item_id; if (props.click_url) url = "https:" + props.click_url; if (props.coupon_share_url) url = "https:" + props.coupon_share_url; return config_1.baseUrl.tb + "/redirect?url=" + encodeURI(url); }; const lowestCouponPrice = (zk_price, coupon_amount) => { let price1 = Number.parseFloat(zk_price); let price2 = coupon_amount ? Number.parseFloat(coupon_amount) : 0; return (price1 - price2).toFixed(2); }; const Item = (props) => { const user_type = ["淘宝", "天猫", "", "特价版"]; tb_1.TbGoodsCouponStore.setItem(props.item_id, props); return react_1.default.createElement( "div", { className: "jd-item-9951" }, react_1.default.createElement( union_link_1.default, { className: "jd-item-9951__img", show: config_1.is_360, union: "\u6DD8\u5B9D\u5BA2", target: "_blank", href: create_url(props), }, react_1.default.createElement("img", { width: "240", height: "240", src: props.pict_url + "_250x250", }) ), react_1.default.createElement( "div", { className: "jd-item-9951__price" }, react_1.default.createElement("em", null, "\uFFE5"), react_1.default.createElement( "i", null, lowestCouponPrice(props.zk_final_price, props.coupon_amount) ), react_1.default.createElement("strong", null, "\u5238\u540E\u4EF7") ), react_1.default.createElement( union_link_1.default, { className: "jd-item-9951__h3", show: config_1.is_360, target: "_blank", union: "\u6DD8\u5B9D\u5BA2", href: create_url(props), }, react_1.default.createElement( "em", { className: `jd-item-9951__tag jd-item-9951__tag--${props.user_type}` }, user_type[props.user_type] ), props.title ), react_1.default.createElement( "div", { className: "jd-item-9951__comments" }, react_1.default.createElement("strong", null, props.volume, " "), " \u6708\u9500\u91CF" ), react_1.default.createElement( "div", { className: "jd-item-9951__shop" }, react_1.default.createElement("span", null, props.shop_title) ), react_1.default.createElement( "div", { className: "jd-item-9951__icons" }, !props.lhq_lijin ? null : react_1.default.createElement( "i", { title: "\u63D0\u793A\uFF1A\u793C\u91D1\u6709\u9650\uFF0C\u6CA1\u4E86\u5C31\u4F1A\u6D88\u606F\u6389\u6216\u6253\u5F00\u7A7A\u767D\u7F51\u9875", }, props.lhq_lijin.toFixed(2), " \u5143\u6DD8\u793C\u91D1" ), !props.coupon_amount ? null : react_1.default.createElement( "i", { title: `满${props.coupon_start_fee}减${props.coupon_amount}券,请先点击领取优惠券`, }, props.coupon_start_fee?.length ? `满${props.coupon_start_fee}减${props.coupon_amount}` : `${props.coupon_amount}元优惠券` ) ) ); }; const ListItem = (props) => { if (props.data?.length) { return react_1.default.createElement( "div", { style: { display: "grid", width: "100%", gridTemplateColumns: "repeat(4,240px)", justifyContent: "space-around", rowGap: "15px", }, }, props.data.map((v, i) => react_1.default.createElement(Item, { key: i, ...v })) ); } return react_1.default.createElement(react_1.default.Fragment, null, "\u6682\u65E0\u6570\u636E"); }; exports.default = ListItem; /***/ }, /***/ 807: /***/ function (__unused_webpack_module, exports, __webpack_require__) { var __createBinding = (this && this.__createBinding) || (Object.create ? function (o, m, k, k2) { if (k2 === undefined) k2 = k; Object.defineProperty(o, k2, { enumerable: true, get: function () { return m[k]; }, }); } : function (o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; }); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? function (o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); } : function (o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; var __importDefault = (this && this.__importDefault) || function (mod) { return mod && mod.__esModule ? mod : { default: mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const react_1 = __importStar(__webpack_require__(804)); const TBHttpRequest_1 = __importDefault(__webpack_require__(259)); const modal_tabs_goods_push_1 = __importDefault(__webpack_require__(128)); const tb_item_goods_1 = __importDefault(__webpack_require__(23)); const pagination_1 = __importDefault(__webpack_require__(503)); const config_1 = __webpack_require__(913); const Component = ({ tabs, autoToggleTitle }) => { const [tabIndex, setTabIndex] = react_1.useState(0); const [items, setItems] = react_1.useState( tabs.map((v) => { return { page_no: v.params.page_no, maxPageIndex: 40, data: new Array(), state: "undone", }; }) ); const [current, setCurrent] = react_1.useState(); const request = async (index, params) => { try { const [tab, item] = [tabs[index], items[index]]; item.state = "loading"; setCurrent(item); const res = await TBHttpRequest_1.default.get(tab.url, { params: Object.assign({ adzone_id: config_1.ADZONE_ID }, tab.params, params), }); if ( res.data && res.data.success && res.data.result_list && res.data.result_list.map_data?.length ) { item.data.push(...res.data.result_list.map_data); item.state = "undone"; if (item.page_no >= item.maxPageIndex) { item.state = "done"; } setItems(items); return { ...item }; } item.state = "done"; return { ...item }; } catch (e) { console.log(e); } }; const onChangeTab = (index) => { const target = items[index]; if (target.data?.length) { setCurrent(target); } else { request(index, { page_no: target.page_no }).then((result) => { setCurrent(result); }); } setTabIndex(index); }; const onChangePage = () => { items[tabIndex]["page_no"] += 1; request(tabIndex, { page_no: items[tabIndex]["page_no"] }).then((result) => { setCurrent(result); }); }; return react_1.default.createElement( modal_tabs_goods_push_1.default, { autoToggleTitle: autoToggleTitle, tabs: tabs.map((v) => v.label), onLoading: (i) => onChangeTab(i), onChange: (i) => onChangeTab(i), }, react_1.default.createElement(tb_item_goods_1.default, { data: current?.data }), !current || current.state == "done" ? null : react_1.default.createElement(pagination_1.default, { loading: current.state == "loading", onClick: () => onChangePage(), }) ); }; exports.default = Component; /***/ }, /***/ 176: /***/ function (__unused_webpack_module, exports, __webpack_require__) { var __createBinding = (this && this.__createBinding) || (Object.create ? function (o, m, k, k2) { if (k2 === undefined) k2 = k; Object.defineProperty(o, k2, { enumerable: true, get: function () { return m[k]; }, }); } : function (o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; }); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? function (o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); } : function (o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; Object.defineProperty(exports, "__esModule", { value: true }); const react_1 = __importStar(__webpack_require__(804)); const core_1 = __webpack_require__(657); function getItem() { const result = window.localStorage.getItem("protocol"); return result ? JSON.parse(result) : false; } function setItem(value) { try { window.localStorage.setItem("protocol", JSON.stringify(value)); } catch (e) { window.localStorage.clear(); window.localStorage.setItem("protocol", JSON.stringify(value)); } } const Component = (props) => { const [open, setOpen] = react_1.useState(false); const [checked, setChecked] = react_1.useState(true); const handleClose = () => { setOpen(false); }; const handleClick = (event) => { const protocol = getItem(); if (!props.show || protocol) { if (props.href) { return window.open(props.href, props.target); } return props.onClick && props.onClick(event); } setOpen(true); }; const handleAgree = (event) => { setItem(checked); setOpen(false); if (props.href) { return window.open(props.href, props.target); } return props.onClick && props.onClick(event); }; const handleChange = (event) => { setChecked(event.target.checked); }; return react_1.default.createElement( react_1.default.Fragment, null, react_1.default.createElement( "a", { className: props.className, rel: "noopener noreferrer", onClick: handleClick, style: Object.assign({ cursor: "pointer", textDecoration: "none" }, props.style), }, props.children ), react_1.default.createElement( core_1.Dialog, { style: { zIndex: 99999999 + 1 }, open: open, onClose: handleClose, maxWidth: "sm" }, react_1.default.createElement( core_1.DialogContent, null, react_1.default.createElement( core_1.DialogContentText, { id: "alert-dialog-description" }, "\u5F53\u524D\u70B9\u51FB\u5C06\u8DF3\u8F6C\u81F3", props.union, "\u94FE\u63A5\uFF0C\u6211\u4EEC\u627F\u8BFA\u8BE5\u8DF3\u8F6C\u5BF9\u8D2D\u7269\u6CA1\u6709\u4EFB\u4F55\u5F71\u54CD\u3002\u60A8\u662F\u5426\u540C\u610F\uFF1F", react_1.default.createElement("br", null) ) ), react_1.default.createElement( core_1.DialogActions, null, react_1.default.createElement( "div", { style: { display: "flex", flex: "1", alignItems: "center" } }, react_1.default.createElement( "div", { style: { color: "rgba(0, 0, 0, 0.54)" } }, react_1.default.createElement(core_1.Checkbox, { checked: checked, color: "primary", inputProps: { "aria-label": "indeterminate checkbox" }, onChange: handleChange, }), "\u4E0B\u6B21\u662F\u5426\u76F4\u63A5\u8BBF\u95EE,\u4E0D\u5728\u5F39\u51FA\u63D0\u793A\uFF1F" ), react_1.default.createElement( "div", { style: { marginLeft: "auto" } }, react_1.default.createElement( core_1.Button, { variant: "contained", style: { marginRight: "20px" }, onClick: handleAgree, autoFocus: true, color: "primary", }, "\u540C\u610F" ), react_1.default.createElement( core_1.Button, { variant: "outlined", onClick: handleClose }, "\u53D6\u6D88" ) ) ) ) ) ); }; exports.default = Component; /***/ }, /***/ 913: /***/ (__unused_webpack_module, exports) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.jd_pid = exports.jd_position_id = exports.jd_site_id = exports.JD_AES_SECRET_KEY = exports.TB_AES_SECRET_KEY = exports.ADZONE_ID = exports.is_360 = exports.iframeName = exports.KEY_SECRET = exports.iframeURL = exports.wwwroot = exports.version = exports.baseUrl = void 0; exports.baseUrl = { jd: "https://www.zhuamimi.cn/v3", tb: "https://www.24tao.net/v3", }; exports.version = "3.1.9"; exports.wwwroot = "https://www.24tao.net"; exports.iframeURL = `https://tampermonkey.lhyhq.cn/iframe.html`; exports.KEY_SECRET = "api.lhyhq.cn"; exports.iframeName = "iframe-name-9527"; exports.is_360 = false; exports.ADZONE_ID = "111397100201"; exports.TB_AES_SECRET_KEY = "U2FsdGVkX19Hq18uEcZ9DZS3brf6hiISppL5kOdkwRZnV4tZg232Xnmlp32J8IORQxitf67ialO/he8zGKgrU59hRPf9qzf4I9qbzQieLg53g6eWJC5rnl9eMchYZ2ONdWx0MAf6PBLfJ+iRG6gxfka0gwEDe5lxsZqIh5EDvvq9hexxME677Uzo99XNhj0E"; exports.JD_AES_SECRET_KEY = "U2FsdGVkX18E952dfysVPf9MUfCcTO2NI1AJ04YIxcMqsn/5nv/Te2BJ+x6uq+UuMwtkzcJZSeXrl5dx9q2g4yLqKCd8LvKC3k26nfbX/bbDlRugwzc6QRdiLhMGQDJMMox5ksqG3OGi/5K72AWEvXNTJ/537pChD2LMzY1YmGcvD4VTbdOI//ZSy8ikpgCuHfrG8Djq4FOLcp+EqNWK5g=="; exports.jd_site_id = "4000207880"; exports.jd_position_id = "3002582676"; exports.jd_pid = "1002977806_4000207880_3002582676"; /***/ }, /***/ 249: /***/ function (__unused_webpack_module, exports, __webpack_require__) { var __importDefault = (this && this.__importDefault) || function (mod) { return mod && mod.__esModule ? mod : { default: mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const react_1 = __importDefault(__webpack_require__(804)); const jd_hover_history_price_1 = __importDefault(__webpack_require__(344)); const core_1 = __webpack_require__(657); const jd_modal_goods_push_1 = __importDefault(__webpack_require__(111)); const jd_goods_coupon_1 = __importDefault(__webpack_require__(836)); const JDHttpRequest_1 = __webpack_require__(948); const jd_goods_lijin_1 = __importDefault(__webpack_require__(687)); const activity_push_1 = __importDefault(__webpack_require__(665)); const useStyles = core_1.makeStyles((theme) => core_1.createStyles({ root: { display: "flex", flexWrap: "wrap", position: "relative", "& > *": { margin: "0 5px 5px 0", "&:last-child": { marginRight: "0", }, }, }, }) ); const App = (props) => { const classes = useStyles(); const servercfg = JDHttpRequest_1.useGetRequest("server"); const columns = JDHttpRequest_1.useGetColumns("static/jd_push_column.json"); const goods = JDHttpRequest_1.useGetRequest("jd.goods.promotiongoodsinfo.query", { params: { skuIds: props.skuid, }, }); return react_1.default.createElement( "div", { className: classes.root }, react_1.default.createElement(jd_goods_coupon_1.default, { width: props.width, skuid: props.skuid, }), servercfg && goods && goods.data?.length ? react_1.default.createElement(jd_goods_lijin_1.default, { open: servercfg.jd_linji_state, lhq_lijin: goods.data[0].lhq_lijin, lhq_secret: goods.data[0].lhq_secret, materialUrl: goods.data[0].materialUrl, }) : null, goods ? react_1.default.createElement(jd_hover_history_price_1.default, { width: props.width, length: props.histroy, item_id: props.skuid, }) : null, columns.length ? react_1.default.createElement(jd_modal_goods_push_1.default, { tabs: columns, autoToggleTitle: true, }) : null, react_1.default.createElement(activity_push_1.default, { type: "jd" }) ); }; exports.default = App; /***/ }, /***/ 814: /***/ function (__unused_webpack_module, exports, __webpack_require__) { var __importDefault = (this && this.__importDefault) || function (mod) { return mod && mod.__esModule ? mod : { default: mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const react_1 = __importDefault(__webpack_require__(804)); const core_1 = __webpack_require__(657); const activity_push_1 = __importDefault(__webpack_require__(665)); const TBHttpRequest_1 = __webpack_require__(259); const tb_modal_goods_push_1 = __importDefault(__webpack_require__(807)); const tb_goods_coupon_1 = __importDefault(__webpack_require__(783)); const tb_hover_history_price_1 = __importDefault(__webpack_require__(447)); const useStyles = core_1.makeStyles((theme) => core_1.createStyles({ root: { display: "flex", flexWrap: "wrap", position: "relative", "& > *": { margin: "0 5px 5px 0", "&:last-child": { marginRight: "0", }, }, }, }) ); const App = (props) => { const classes = useStyles(); const columns = TBHttpRequest_1.useGetColumns("static/tb_push_column.json"); const servercfg = TBHttpRequest_1.useGetRequest("server"); return react_1.default.createElement( "div", { className: classes.root }, servercfg ? react_1.default.createElement(tb_goods_coupon_1.default, { lijin: servercfg.tb_lijin_state, item_id: props.num_iid, title: props.title, }) : null, react_1.default.createElement(tb_hover_history_price_1.default, { length: props.histroy, num_iid: props.num_iid, width: props.width, }), columns.length ? react_1.default.createElement(tb_modal_goods_push_1.default, { tabs: columns.map((v) => { if (v.params.material_id == "13256") { v.params.item_id = props.num_iid; } return v; }), autoToggleTitle: true, }) : null, react_1.default.createElement(activity_push_1.default, { type: "tb" }) ); }; exports.default = App; /***/ }, /***/ 154: /***/ function (__unused_webpack_module, exports, __webpack_require__) { var __importDefault = (this && this.__importDefault) || function (mod) { return mod && mod.__esModule ? mod : { default: mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const react_1 = __importDefault(__webpack_require__(804)); const core_1 = __webpack_require__(657); const TBHttpRequest_1 = __webpack_require__(259); const tb_modal_goods_push_1 = __importDefault(__webpack_require__(807)); const tb_goods_coupon_1 = __importDefault(__webpack_require__(783)); const useStyles = core_1.makeStyles((theme) => core_1.createStyles({ root: { display: "inline-flex", flexDirection: "column", "& > *": { margin: "5px 0 0 5px", }, }, }) ); const App = (props) => { const classes = useStyles(); const columns = TBHttpRequest_1.useGetColumns("static/tb_push_column.json"); const servercfg = TBHttpRequest_1.useGetRequest("server"); return react_1.default.createElement( "div", { className: classes.root }, servercfg ? react_1.default.createElement(tb_goods_coupon_1.default, { lijin: servercfg.tb_lijin_state, item_id: props.num_iid, title: props.title, }) : null, columns.length ? react_1.default.createElement(tb_modal_goods_push_1.default, { tabs: columns.map((v) => { if (v.params.material_id == "13256") { v.params.item_id = props.num_iid; } return v; }), autoToggleTitle: false, }) : null ); }; exports.default = App; /***/ }, /***/ 948: /***/ function (__unused_webpack_module, exports, __webpack_require__) { var __importDefault = (this && this.__importDefault) || function (mod) { return mod && mod.__esModule ? mod : { default: mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.useGetColumns = exports.useGetRequest = void 0; const axios_1 = __importDefault(__webpack_require__(376)); const react_1 = __webpack_require__(804); const config_1 = __webpack_require__(913); const functions_1 = __webpack_require__(877); const http = axios_1.default.create({ timeout: 1000 * 30, baseURL: config_1.baseUrl.jd, params: { secret: config_1.JD_AES_SECRET_KEY, }, }); const retry = (s, config) => { return new Promise((resolve, reject) => { if (!config.params.retry || config.params.retry < 3) { config.params.retry = config.params.retry ? config.params.retry + 1 : 1; setTimeout(() => resolve(http.request(config)), s); } else { reject("请求失败"); } }); }; http.interceptors.request.use(async (config) => { if (!config.params) config.params = {}; const userID = await functions_1.uuid(); const timestamp = Date.now(); config.params["__v"] = config_1.version; config.params["x-me-sign"] = functions_1.sign(config.params, timestamp, userID); config.params["x-me-time"] = timestamp; config.params["x-me-uuid"] = userID; return config; }); http.interceptors.response.use(undefined, (error) => { if (!error.response) { console.log("没有 response 对象"); console.log(error); return retry(500, error.config); } return Promise.reject(error); }); const useGetRequest = (url, config) => { const [data, setData] = react_1.useState(); const request = async (url, config) => { try { const result = await http.get(url, config); return result.data; } catch (e) { console.log(e); } }; react_1.useEffect(() => { request(url, config).then((result) => setData(result)); }, []); return data; }; exports.useGetRequest = useGetRequest; const useGetColumns = (url) => { const [columns, setColumns] = react_1.useState([]); const request = async (url) => { try { const item = sessionStorage.getItem("jd_push_column"); if (item) { const parse_item = JSON.parse(item); if (Array.isArray(parse_item) && parse_item.length) { return parse_item; } } const res = await http.get(url); const data = res.data; sessionStorage.setItem("jd_push_column", JSON.stringify(data)); return data; } catch (e) { sessionStorage.clear(); console.log(e); } return []; }; react_1.useEffect(() => { request(url).then((r) => setColumns(r)); }, []); return columns; }; exports.useGetColumns = useGetColumns; exports.default = http; /***/ }, /***/ 259: /***/ function (__unused_webpack_module, exports, __webpack_require__) { var __importDefault = (this && this.__importDefault) || function (mod) { return mod && mod.__esModule ? mod : { default: mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.useGetColumns = exports.useGetRequest = void 0; const axios_1 = __importDefault(__webpack_require__(376)); const config_1 = __webpack_require__(913); const react_1 = __webpack_require__(804); const functions_1 = __webpack_require__(877); const http = axios_1.default.create({ timeout: 1000 * 30, baseURL: config_1.baseUrl.tb, params: { secret: config_1.TB_AES_SECRET_KEY, }, }); const retry = (s, config) => { return new Promise((resolve, reject) => { if (!config.params.retry || config.params.retry < 3) { config.params.retry = config.params.retry ? config.params.retry + 1 : 1; setTimeout(() => resolve(http.request(config)), s); } else { reject("请求失败"); } }); }; http.interceptors.request.use(async (config) => { if (!config.params) config.params = {}; const userID = await functions_1.uuid(); const timestamp = Date.now(); config.params["__v"] = config_1.version; config.params["x-me-sign"] = functions_1.sign(config.params, timestamp, userID); config.params["x-me-time"] = timestamp; config.params["x-me-uuid"] = userID; return config; }); http.interceptors.response.use( (res) => { if (res.data.code == 15) { return retry(500, res.config); } return res; }, (error) => { if (!error.response) { console.log("没有 response 对象"); console.log(error); return retry(500, error.config); } return Promise.reject(error); } ); const useGetRequest = (url, config) => { const [data, setData] = react_1.useState(); const request = async (url, config) => { try { const result = await http.get(url, config); return result.data; } catch (e) { console.log(e); } }; react_1.useEffect(() => { request(url, config).then((result) => setData(result)); }, []); return data; }; exports.useGetRequest = useGetRequest; const useGetColumns = (url) => { const [columns, setColumns] = react_1.useState([]); const request = async (url) => { try { const item = sessionStorage.getItem("tb_push_column"); if (item) { const parse_item = JSON.parse(item); if (Array.isArray(parse_item) && parse_item.length) { return parse_item; } } const res = await http.get(url); const data = res.data; sessionStorage.setItem("tb_push_column", JSON.stringify(data)); return data; } catch (e) { sessionStorage.clear(); console.log(e); } return []; }; react_1.useEffect(() => { request(url).then((r) => setColumns(r)); }, []); return columns; }; exports.useGetColumns = useGetColumns; exports.default = http; /***/ }, /***/ 963: /***/ function (__unused_webpack_module, exports, __webpack_require__) { var __importDefault = (this && this.__importDefault) || function (mod) { return mod && mod.__esModule ? mod : { default: mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.JD_ContextItemPage = void 0; const react_1 = __importDefault(__webpack_require__(804)); const react_dom_1 = __importDefault(__webpack_require__(196)); const item_jd_com_1 = __importDefault(__webpack_require__(249)); const functions_1 = __webpack_require__(877); function getSkuid(url) { const result = /(\d+)\.html/gi.exec(url); if (result?.length && result.length > 1) { return result[1]; } } const JD_ContextItemPage = (href) => { const skuid = getSkuid(href); const selector = ".itemInfo-wrap .p-choose-wrap"; const current = document.querySelector(selector); const parent = current?.parentElement; if (skuid && current && parent) { functions_1.appendIframeElement(() => { const { width } = current.getBoundingClientRect(); const custom = document.createElement("div"); custom.style.margin = "5px 0 10px 0"; custom.style.position = "relative"; parent.insertBefore(custom, current); react_dom_1.default.render( react_1.default.createElement(item_jd_com_1.default, { histroy: 180, skuid: skuid, width: width, }), custom ); }); } }; exports.JD_ContextItemPage = JD_ContextItemPage; /***/ }, /***/ 872: /***/ function (__unused_webpack_module, exports, __webpack_require__) { var __importDefault = (this && this.__importDefault) || function (mod) { return mod && mod.__esModule ? mod : { default: mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.TB_ContextItemPage = void 0; const react_1 = __importDefault(__webpack_require__(804)); const react_dom_1 = __importDefault(__webpack_require__(196)); const item_tb_com_1 = __importDefault(__webpack_require__(814)); const functions_1 = __webpack_require__(877); const insertDom = (num_iid, selectors) => { const els = document.querySelectorAll(selectors); if (els.length) { functions_1.appendIframeElement(() => { const container = document.createElement("div"); container.style.margin = "5px 0 0 0"; els[0].parentElement?.insertBefore(container, els[0]); react_dom_1.default.render( react_1.default.createElement(item_tb_com_1.default, { histroy: 180, width: width(els[0]), num_iid: num_iid, }), container ); }); } }; const width = (el) => { const { width } = el.getBoundingClientRect(); return width; }; const TB_ContextItemPage = (href) => { const url = new URL(href); const num_iid = url.searchParams.get("id"); const selectors = "#J_logistic,#J_DetailMeta .tb-property .tb-meta"; if (num_iid) insertDom(num_iid, selectors); }; exports.TB_ContextItemPage = TB_ContextItemPage; /***/ }, /***/ 386: /***/ function (__unused_webpack_module, exports, __webpack_require__) { var __importDefault = (this && this.__importDefault) || function (mod) { return mod && mod.__esModule ? mod : { default: mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.JD_ContextSearchPage = void 0; const JDHttpRequest_1 = __importDefault(__webpack_require__(948)); const JD_ContextSearchPage = () => { let timerid = 0; window.addEventListener("scroll", (e) => { if (timerid) return; timerid = window.setTimeout(() => { const goods = document.querySelectorAll( "#J_goodsList .gl-warp .gl-item, #plist .gl-warp .gl-item .item" ); const skuIds = new Array(); for (let i = 0; i < goods.length; i++) { if (!goods[i].getAttribute("data-lhy")) { let skuid = goods[i].getAttribute("data-sku"); if (!skuid) { skuid = goods[i].getAttribute("skuid"); if (skuid) skuid = skuid.replace(/^J_/, ""); } skuid && skuIds.push(skuid); goods[i].setAttribute("data-lhy", "1"); } } if (skuIds.length) { JDHttpRequest_1.default.get("jd.goods.promotiongoodsinfo.query", { params: { skuIds: skuIds.join(","), }, }); } window.clearTimeout(timerid); timerid = 0; }, 200); }); }; exports.JD_ContextSearchPage = JD_ContextSearchPage; /***/ }, /***/ 281: /***/ function (__unused_webpack_module, exports, __webpack_require__) { var __importDefault = (this && this.__importDefault) || function (mod) { return mod && mod.__esModule ? mod : { default: mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.TB_ContextSearchPage = void 0; const react_1 = __importDefault(__webpack_require__(804)); const react_dom_1 = __importDefault(__webpack_require__(196)); const scroll_watch_1 = __importDefault(__webpack_require__(187)); const search_tb_com_1 = __importDefault(__webpack_require__(154)); const functions_1 = __webpack_require__(877); function insertElement() { const items = document.querySelectorAll("#mainsrp-itemlist .items .item"); const scroll = new scroll_watch_1.default(items); scroll.listener(async (event, el) => { const current = el.querySelector(".pic-box-inner a.pic-link"); if (current) { const num_iid = current.getAttribute("data-nid"); const title = current.querySelector("img")?.getAttribute("alt"); if (num_iid && title) { el.style.position = "relative"; const container = document.createElement("div"); container.style.position = "absolute"; container.style.top = "0px"; container.style.left = "0px"; el.appendChild(container); react_dom_1.default.render( react_1.default.createElement(search_tb_com_1.default, { num_iid: num_iid, title: title, }), container ); } } }); } const watchElement = (root) => { const main = document.querySelector(root) ?? document.body; const mutation = new MutationObserver((mutations) => { for (let i = 0; i < mutations.length; i++) { const target = mutations[i].target; if (target instanceof HTMLElement && target.id.indexOf("mainsrp-itemlist") != -1) { insertElement(); } } }); mutation.observe(main, { subtree: true, childList: true, attributes: true }); }; const TB_ContextSearchPage = () => { watchElement("#main"); functions_1.appendIframeElement(() => insertElement()); }; exports.TB_ContextSearchPage = TB_ContextSearchPage; /***/ }, /***/ 402: /***/ function (__unused_webpack_module, exports, __webpack_require__) { var __importDefault = (this && this.__importDefault) || function (mod) { return mod && mod.__esModule ? mod : { default: mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.TM_ContextSearchPage = void 0; const react_1 = __importDefault(__webpack_require__(804)); const react_dom_1 = __importDefault(__webpack_require__(196)); const scroll_watch_1 = __importDefault(__webpack_require__(187)); const search_tb_com_1 = __importDefault(__webpack_require__(154)); const functions_1 = __webpack_require__(877); function insertElement() { const items = document.querySelectorAll("#J_ItemList .product"); const scroll = new scroll_watch_1.default(items); scroll.listener(async (event, el) => { const current = el.querySelector(".productTitle a"); if (current) { const num_iid = el.getAttribute("data-id"); const title = current.getAttribute("title"); if (num_iid && title) { el.style.position = "relative"; const container = document.createElement("div"); container.style.position = "absolute"; container.style.top = "0px"; container.style.left = "0px"; el.appendChild(container); react_dom_1.default.render( react_1.default.createElement(search_tb_com_1.default, { num_iid: num_iid, title: title, }), container ); } } }); } const TM_ContextSearchPage = () => { functions_1.appendIframeElement(() => insertElement()); }; exports.TM_ContextSearchPage = TM_ContextSearchPage; /***/ }, /***/ 499: /***/ (__unused_webpack_module, exports, __webpack_require__) => { Object.defineProperty(exports, "__esModule", { value: true }); exports.iframeName = void 0; const config_1 = __webpack_require__(913); Object.defineProperty(exports, "iframeName", { enumerable: true, get: function () { return config_1.iframeName; }, }); class CrossIframeStore { sendGetItem(item_id, type) { const iframe = this.iframe; iframe?.contentWindow?.postMessage( { name: config_1.iframeName, type: type, action: "get", item_id: item_id, }, config_1.iframeURL ); } sendSetItem(item_id, type, data) { const iframe = this.iframe; iframe?.contentWindow?.postMessage( { name: config_1.iframeName, type: type, action: "set", item_id: item_id, data, }, config_1.iframeURL ); } get iframe() { return document.querySelector(`iframe[name=${config_1.iframeName}]`); } } exports.default = new CrossIframeStore(); /***/ }, /***/ 877: /***/ function (__unused_webpack_module, exports, __webpack_require__) { var __importDefault = (this && this.__importDefault) || function (mod) { return mod && mod.__esModule ? mod : { default: mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.appendIframeElement = exports.randomInt = exports.params_stringify_sign = exports.sign = exports.uuid = void 0; const uuid_1 = __webpack_require__(231); const config_1 = __webpack_require__(913); const md5_1 = __importDefault(__webpack_require__(420)); const uuid = () => { let result = localStorage.getItem("lhyhquuid"); if (!result) { result = uuid_1.v4(); localStorage.setItem("lhyhquuid", result); } return result; }; exports.uuid = uuid; const sign = (params, timestamp, uuid) => { const arr = [config_1.KEY_SECRET]; for (let key in params) { params[key] && arr.push(key, params[key]); } arr.sort(); return md5_1.default(md5_1.default(arr.join("-") + md5_1.default(timestamp + "")) + uuid); }; exports.sign = sign; const params_stringify_sign = async (o) => { const user_id = await exports.uuid(); const timestamp = Date.now(); const params = Object.assign({}, o, { "x-me-sign": exports.sign(o, timestamp, user_id), "x-me-time": timestamp, "x-me-uuid": user_id, }); let result = new Array(); for (let [key, value] of Object.entries(params)) { result.push(`${key}=${value}`); } return result.join("&"); }; exports.params_stringify_sign = params_stringify_sign; function randomInt(min, max) { min = Math.ceil(min); max = Math.floor(max); return Math.floor(Math.random() * (max - min)) + min; } exports.randomInt = randomInt; const appendIframeElement = (callback) => { const iframe = document.createElement("iframe"); iframe.src = config_1.iframeURL; iframe.name = config_1.iframeName; iframe.title = "stroe"; iframe.style.display = "none"; iframe.style.position = "absolute"; iframe.style.top = "-9999px"; iframe.style.left = "-9999px"; iframe.onload = (e) => { if (typeof callback == "function") { callback(e); } }; document.body.appendChild(iframe); }; exports.appendIframeElement = appendIframeElement; /***/ }, /***/ 181: /***/ function (__unused_webpack_module, exports, __webpack_require__) { var __createBinding = (this && this.__createBinding) || (Object.create ? function (o, m, k, k2) { if (k2 === undefined) k2 = k; Object.defineProperty(o, k2, { enumerable: true, get: function () { return m[k]; }, }); } : function (o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; }); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? function (o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); } : function (o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.JdGoodsCouponStore = void 0; const CrossIframeStore_1 = __importStar(__webpack_require__(499)); class JdGoodsCouponStore { static async getItem(skuid) { return new Promise((resolve, reject) => { window.addEventListener("message", message); CrossIframeStore_1.default.sendGetItem(skuid, "jd"); function message(e) { const data = e.data; if (data["name"] == CrossIframeStore_1.iframeName && data["type"] == "jd") { resolve(data["data"]); window.removeEventListener("message", message); } } }); } static setItem(skuid, ...coupon) { CrossIframeStore_1.default.sendSetItem(skuid, "jd", coupon); } } exports.JdGoodsCouponStore = JdGoodsCouponStore; /***/ }, /***/ 187: /***/ (__unused_webpack_module, exports) => { Object.defineProperty(exports, "__esModule", { value: true }); class ScrollWatch { els; doc = window.document.documentElement; offsetBottom = 100; constructor(els) { this.els = Array.from(els); } listener(callback) { let interout = null; window.addEventListener("scroll", (event) => { if (!interout) { interout = setTimeout(() => { this.els.forEach((v, i) => { const top = v.getBoundingClientRect().top; if (top - this.doc.clientHeight <= 0) { callback(event, v); this.els.splice(i, 1); } }); interout = clearTimeout(interout); interout = 0; }, 300); } }); } } exports.default = ScrollWatch; /***/ }, /***/ 609: /***/ function (__unused_webpack_module, exports, __webpack_require__) { var __createBinding = (this && this.__createBinding) || (Object.create ? function (o, m, k, k2) { if (k2 === undefined) k2 = k; Object.defineProperty(o, k2, { enumerable: true, get: function () { return m[k]; }, }); } : function (o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; }); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? function (o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); } : function (o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.TbGoodsCouponStore = void 0; const CrossIframeStore_1 = __importStar(__webpack_require__(499)); class TbGoodsCouponStore { static async getItem(item_id) { return new Promise((resolve, reject) => { window.addEventListener("message", message); CrossIframeStore_1.default.sendGetItem(item_id, "tb"); function message(e) { const data = e.data; if (data["name"] == CrossIframeStore_1.iframeName && data["type"] == "tb") { resolve(data["data"]); window.removeEventListener("message", message); } } }); } static setItem(item_id, coupon) { CrossIframeStore_1.default.sendSetItem(item_id, "tb", coupon); } } exports.TbGoodsCouponStore = TbGoodsCouponStore; /***/ }, /***/ 420: /***/ (module) => { module.exports = MD5; /***/ }, /***/ 657: /***/ (module) => { module.exports = MaterialUI; /***/ }, /***/ 804: /***/ (module) => { module.exports = React; /***/ }, /***/ 196: /***/ (module) => { module.exports = ReactDOM; /***/ }, /***/ 376: /***/ (module) => { module.exports = axios; /***/ }, /***/ 83: /***/ (module) => { module.exports = echarts; /***/ }, /***/ 231: /***/ (module) => { module.exports = uuid; /***/ }, /******/ }; /************************************************************************/ /******/ // The module cache /******/ var __webpack_module_cache__ = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ // Check if module is in cache /******/ var cachedModule = __webpack_module_cache__[moduleId]; /******/ if (cachedModule !== undefined) { /******/ return cachedModule.exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = (__webpack_module_cache__[moduleId] = { /******/ id: moduleId, /******/ // no module.loaded needed /******/ exports: {}, /******/ }); /******/ /******/ // Execute the module function /******/ __webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /************************************************************************/ /******/ /* webpack/runtime/compat get default export */ /******/ (() => { /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ __webpack_require__.n = (module) => { /******/ var getter = module && module.__esModule ? /******/ () => module["default"] : /******/ () => module; /******/ __webpack_require__.d(getter, { a: getter }); /******/ return getter; /******/ }; /******/ })(); /******/ /******/ /* webpack/runtime/define property getters */ /******/ (() => { /******/ // define getter functions for harmony exports /******/ __webpack_require__.d = (exports, definition) => { /******/ for (var key in definition) { /******/ if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); /******/ } /******/ } /******/ }; /******/ })(); /******/ /******/ /* webpack/runtime/hasOwnProperty shorthand */ /******/ (() => { /******/ __webpack_require__.o = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop); /******/ })(); /******/ /******/ /* webpack/runtime/make namespace object */ /******/ (() => { /******/ // define __esModule on exports /******/ __webpack_require__.r = (exports) => { /******/ if (typeof Symbol !== "undefined" && Symbol.toStringTag) { /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" }); /******/ } /******/ Object.defineProperty(exports, "__esModule", { value: true }); /******/ }; /******/ })(); /******/ /************************************************************************/ var __webpack_exports__ = {}; // This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk. (() => { var exports = __webpack_exports__; var __webpack_unused_export__; __webpack_unused_export__ = { value: true }; const item_jd_com_1 = __webpack_require__(963); const item_tb_com_1 = __webpack_require__(872); const search_jd_com_1 = __webpack_require__(386); const search_tb_com_1 = __webpack_require__(281); const search_tm_com_1 = __webpack_require__(402); (() => { "use strict"; const content_scripts = [ { matches: ["item.taobao.com", "detail.tmall.com", "detail.tmall.hk"], execute: item_tb_com_1.TB_ContextItemPage, }, { matches: ["s.taobao.com"], execute: search_tb_com_1.TB_ContextSearchPage, }, { matches: ["list.tmall.com"], execute: search_tm_com_1.TM_ContextSearchPage, }, { matches: ["search.jd.com", "search.jd.hk"], execute: search_jd_com_1.JD_ContextSearchPage, }, { matches: ["item.jd.com", "npcitem.jd.hk"], execute: item_jd_com_1.JD_ContextItemPage, }, ]; const url = window.location.href; for (let i = 0; i < content_scripts.length; i++) { if (validate(url, ...content_scripts[i]["matches"])) { content_scripts[i]["execute"](url); } } function validate(href, ...matches) { const url = new URL(href); for (let i = 0; i < matches.length; i++) { const r = new RegExp(matches[i], "i"); if (r.test(url.hostname)) return true; } return false; } })(); })(); /******/ })();