Commit 7308cc3a by zhanghaozhe

Merge branch 'master' into passport

parents ec03fa4c 9c848b57
...@@ -9,7 +9,6 @@ ...@@ -9,7 +9,6 @@
/coverage /coverage
# production # production
/build
.history/ .history/
.idea/ .idea/
# misc # misc
......
{
"coupons.css": "/static/css/coupons.9ece7350.chunk.css",
"coupons.js": "/static/js/coupons.6a94a878.chunk.js",
"coupons.js.map": "/static/js/coupons.6a94a878.chunk.js.map",
"main.css": "/static/css/main.afa9aa9f.chunk.css",
"main.js": "/static/js/main.24ad8e4e.chunk.js",
"main.js.map": "/static/js/main.24ad8e4e.chunk.js.map",
"myorders.css": "/static/css/myorders.3ab93c8e.chunk.css",
"myorders.js": "/static/js/myorders.9736dcd8.chunk.js",
"myorders.js.map": "/static/js/myorders.9736dcd8.chunk.js.map",
"purchased.css": "/static/css/purchased.72c55bd6.chunk.css",
"purchased.js": "/static/js/purchased.380e692a.chunk.js",
"purchased.js.map": "/static/js/purchased.380e692a.chunk.js.map",
"runtime~main.js": "/static/js/runtime~main.a0b841fe.js",
"runtime~main.js.map": "/static/js/runtime~main.a0b841fe.js.map",
"shareposter.css": "/static/css/shareposter.82081d02.chunk.css",
"shareposter.js": "/static/js/shareposter.5e83848f.chunk.js",
"shareposter.js.map": "/static/js/shareposter.5e83848f.chunk.js.map",
"study.css": "/static/css/study.586bcabb.chunk.css",
"study.js": "/static/js/study.becfeee6.chunk.js",
"study.js.map": "/static/js/study.becfeee6.chunk.js.map",
"togroup.css": "/static/css/togroup.f8580590.chunk.css",
"togroup.js": "/static/js/togroup.6905e23b.chunk.js",
"togroup.js.map": "/static/js/togroup.6905e23b.chunk.js.map",
"video.css": "/static/css/video.10e4a7e1.chunk.css",
"video.js": "/static/js/video.1b371a9a.chunk.js",
"video.js.map": "/static/js/video.1b371a9a.chunk.js.map",
"static/css/9.7c331155.chunk.css": "/static/css/9.7c331155.chunk.css",
"static/js/9.0d233def.chunk.js": "/static/js/9.0d233def.chunk.js",
"static/js/9.0d233def.chunk.js.map": "/static/js/9.0d233def.chunk.js.map",
"static/css/10.1597b3e9.chunk.css": "/static/css/10.1597b3e9.chunk.css",
"static/js/10.38fa9101.chunk.js": "/static/js/10.38fa9101.chunk.js",
"static/js/10.38fa9101.chunk.js.map": "/static/js/10.38fa9101.chunk.js.map",
"static/js/11.a116d384.chunk.js": "/static/js/11.a116d384.chunk.js",
"static/js/11.a116d384.chunk.js.map": "/static/js/11.a116d384.chunk.js.map",
"index.html": "/index.html",
"precache-manifest.f771f70cb50c97ca116171f042920554.js": "/precache-manifest.f771f70cb50c97ca116171f042920554.js",
"service-worker.js": "/service-worker.js",
"static/css/10.1597b3e9.chunk.css.map": "/static/css/10.1597b3e9.chunk.css.map",
"static/css/9.7c331155.chunk.css.map": "/static/css/9.7c331155.chunk.css.map",
"static/css/coupons.9ece7350.chunk.css.map": "/static/css/coupons.9ece7350.chunk.css.map",
"static/css/main.afa9aa9f.chunk.css.map": "/static/css/main.afa9aa9f.chunk.css.map",
"static/css/myorders.3ab93c8e.chunk.css.map": "/static/css/myorders.3ab93c8e.chunk.css.map",
"static/css/purchased.72c55bd6.chunk.css.map": "/static/css/purchased.72c55bd6.chunk.css.map",
"static/css/shareposter.82081d02.chunk.css.map": "/static/css/shareposter.82081d02.chunk.css.map",
"static/css/study.586bcabb.chunk.css.map": "/static/css/study.586bcabb.chunk.css.map",
"static/css/togroup.f8580590.chunk.css.map": "/static/css/togroup.f8580590.chunk.css.map",
"static/css/video.10e4a7e1.chunk.css.map": "/static/css/video.10e4a7e1.chunk.css.map",
"static/media/iconfont.css": "/static/media/iconfont.c8b2c37e.svg"
}
\ No newline at end of file
<!doctype html><html lang="en"><head><meta charset="utf-8"/><link rel="shortcut icon" href="/favicon.ico"/><meta name="viewport" content="width=device-width,initial-scale=1,shrink-to-fit=no,user-scalable=no"/><meta name="theme-color" content="#000000"/><link rel="manifest" href="/manifest.json"/><title>React App</title><link href="/static/css/9.7c331155.chunk.css" rel="stylesheet"><link href="/static/css/main.afa9aa9f.chunk.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div><script>!function(c){function e(e){for(var t,r,n=e[0],o=e[1],a=e[2],u=0,i=[];u<n.length;u++)r=n[u],d[r]&&i.push(d[r][0]),d[r]=0;for(t in o)Object.prototype.hasOwnProperty.call(o,t)&&(c[t]=o[t]);for(h&&h(e);i.length;)i.shift()();return l.push.apply(l,a||[]),s()}function s(){for(var e,t=0;t<l.length;t++){for(var r=l[t],n=!0,o=1;o<r.length;o++){var a=r[o];0!==d[a]&&(n=!1)}n&&(l.splice(t--,1),e=p(p.s=r[0]))}return e}var r={},f={4:0},d={4:0},l=[];function p(e){if(r[e])return r[e].exports;var t=r[e]={i:e,l:!1,exports:{}};return c[e].call(t.exports,t,t.exports,p),t.l=!0,t.exports}p.e=function(l){var e=[];f[l]?e.push(f[l]):0!==f[l]&&{0:1,2:1,3:1,5:1,6:1,7:1,8:1,10:1}[l]&&e.push(f[l]=new Promise(function(e,n){for(var t="static/css/"+({0:"coupons",2:"myorders",3:"purchased",5:"shareposter",6:"study",7:"togroup",8:"video"}[l]||l)+"."+{0:"9ece7350",2:"3ab93c8e",3:"72c55bd6",5:"82081d02",6:"586bcabb",7:"f8580590",8:"10e4a7e1",10:"1597b3e9",11:"31d6cfe0"}[l]+".chunk.css",o=p.p+t,r=document.getElementsByTagName("link"),a=0;a<r.length;a++){var u=(c=r[a]).getAttribute("data-href")||c.getAttribute("href");if("stylesheet"===c.rel&&(u===t||u===o))return e()}var i=document.getElementsByTagName("style");for(a=0;a<i.length;a++){var c;if((u=(c=i[a]).getAttribute("data-href"))===t||u===o)return e()}var s=document.createElement("link");s.rel="stylesheet",s.type="text/css",s.onload=e,s.onerror=function(e){var t=e&&e.target&&e.target.src||o,r=new Error("Loading CSS chunk "+l+" failed.\n("+t+")");r.request=t,delete f[l],s.parentNode.removeChild(s),n(r)},s.href=o,document.getElementsByTagName("head")[0].appendChild(s)}).then(function(){f[l]=0}));var r=d[l];if(0!==r)if(r)e.push(r[2]);else{var t=new Promise(function(e,t){r=d[l]=[e,t]});e.push(r[2]=t);var n,a=document.createElement("script");a.charset="utf-8",a.timeout=120,p.nc&&a.setAttribute("nonce",p.nc),a.src=p.p+"static/js/"+({0:"coupons",2:"myorders",3:"purchased",5:"shareposter",6:"study",7:"togroup",8:"video"}[l]||l)+"."+{0:"6a94a878",2:"9736dcd8",3:"380e692a",5:"5e83848f",6:"becfeee6",7:"6905e23b",8:"1b371a9a",10:"38fa9101",11:"a116d384"}[l]+".chunk.js",n=function(e){a.onerror=a.onload=null,clearTimeout(u);var t=d[l];if(0!==t){if(t){var r=e&&("load"===e.type?"missing":e.type),n=e&&e.target&&e.target.src,o=new Error("Loading chunk "+l+" failed.\n("+r+": "+n+")");o.type=r,o.request=n,t[1](o)}d[l]=void 0}};var u=setTimeout(function(){n({type:"timeout",target:a})},12e4);a.onerror=a.onload=n,document.head.appendChild(a)}return Promise.all(e)},p.m=c,p.c=r,p.d=function(e,t,r){p.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},p.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},p.t=function(t,e){if(1&e&&(t=p(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(p.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var n in t)p.d(r,n,function(e){return t[e]}.bind(null,n));return r},p.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return p.d(t,"a",t),t},p.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},p.p="/",p.oe=function(e){throw console.error(e),e};var t=window.webpackJsonp=window.webpackJsonp||[],n=t.push.bind(t);t.push=e,t=t.slice();for(var o=0;o<t.length;o++)e(t[o]);var h=n;s()}([])</script><script src="/static/js/9.0d233def.chunk.js"></script><script src="/static/js/main.24ad8e4e.chunk.js"></script></body></html>
\ No newline at end of file
{
"short_name": "React App",
"name": "Create React App Sample",
"icons": [
{
"src": "favicon.ico",
"sizes": "64x64 32x32 24x24 16x16",
"type": "image/x-icon"
}
],
"start_url": ".",
"display": "standalone",
"theme_color": "#000000",
"background_color": "#ffffff"
}
self.__precacheManifest = [
{
"revision": "22599f6c1f51f88f82fd",
"url": "/static/css/togroup.f8580590.chunk.css"
},
{
"revision": "12ee73e77f848f58fd7c",
"url": "/static/css/coupons.9ece7350.chunk.css"
},
{
"revision": "296005d9c61697b32113",
"url": "/static/css/main.afa9aa9f.chunk.css"
},
{
"revision": "296005d9c61697b32113",
"url": "/static/js/main.24ad8e4e.chunk.js"
},
{
"revision": "511f4ca73ebbf3a3f2da",
"url": "/static/css/myorders.3ab93c8e.chunk.css"
},
{
"revision": "511f4ca73ebbf3a3f2da",
"url": "/static/js/myorders.9736dcd8.chunk.js"
},
{
"revision": "7bbd26a203518ee43ff0",
"url": "/static/css/purchased.72c55bd6.chunk.css"
},
{
"revision": "7bbd26a203518ee43ff0",
"url": "/static/js/purchased.380e692a.chunk.js"
},
{
"revision": "5c5cc7adee111c75db41",
"url": "/static/js/runtime~main.a0b841fe.js"
},
{
"revision": "6b373210ef67d1ffe7fd",
"url": "/static/css/shareposter.82081d02.chunk.css"
},
{
"revision": "6b373210ef67d1ffe7fd",
"url": "/static/js/shareposter.5e83848f.chunk.js"
},
{
"revision": "92125ab95fca6d68b445",
"url": "/static/css/study.586bcabb.chunk.css"
},
{
"revision": "92125ab95fca6d68b445",
"url": "/static/js/study.becfeee6.chunk.js"
},
{
"revision": "12ee73e77f848f58fd7c",
"url": "/static/js/coupons.6a94a878.chunk.js"
},
{
"revision": "22599f6c1f51f88f82fd",
"url": "/static/js/togroup.6905e23b.chunk.js"
},
{
"revision": "23a23321288bbc9b96a4",
"url": "/static/css/video.10e4a7e1.chunk.css"
},
{
"revision": "23a23321288bbc9b96a4",
"url": "/static/js/video.1b371a9a.chunk.js"
},
{
"revision": "c8b2c37ec2ac7323c8f8657bcb61324c",
"url": "/static/media/iconfont.c8b2c37e.svg"
},
{
"revision": "83d0e8b5e32111cbbebc",
"url": "/static/js/9.0d233def.chunk.js"
},
{
"revision": "6d0ba0d457675abacadaae1a7e6f5d63",
"url": "/static/media/iconfont.6d0ba0d4.ttf"
},
{
"revision": "5b37aebbc2c70a84e891",
"url": "/static/js/10.38fa9101.chunk.js"
},
{
"revision": "9412cc416f9f7442f50e",
"url": "/static/js/11.a116d384.chunk.js"
},
{
"revision": "7480635194e4e75415960a985825e18c",
"url": "/static/media/iconfont.74806351.woff"
},
{
"revision": "66125e8a7120d1dcbfa5741f8dce72a2",
"url": "/static/media/iconfont.66125e8a.eot"
},
{
"revision": "83d0e8b5e32111cbbebc",
"url": "/static/css/9.7c331155.chunk.css"
},
{
"revision": "5b37aebbc2c70a84e891",
"url": "/static/css/10.1597b3e9.chunk.css"
},
{
"revision": "fd52eaa4aefbe4b1698c5725c6b1de3c",
"url": "/index.html"
}
];
\ No newline at end of file
/**
* Welcome to your Workbox-powered service worker!
*
* You'll need to register this file in your web app and you should
* disable HTTP caching for this file too.
* See https://goo.gl/nhQhGp
*
* The rest of the code is auto-generated. Please don't update this file
* directly; instead, make changes to your Workbox build configuration
* and re-run your build process.
* See https://goo.gl/2aRDsh
*/
importScripts("https://storage.googleapis.com/workbox-cdn/releases/3.6.3/workbox-sw.js");
importScripts(
"/precache-manifest.f771f70cb50c97ca116171f042920554.js"
);
workbox.clientsClaim();
/**
* The workboxSW.precacheAndRoute() method efficiently caches and responds to
* requests for URLs in the manifest.
* See https://goo.gl/S9QRab
*/
self.__precacheManifest = [].concat(self.__precacheManifest || []);
workbox.precaching.suppressWarnings();
workbox.precaching.precacheAndRoute(self.__precacheManifest, {});
workbox.routing.registerNavigationRoute("/index.html", {
blacklist: [/^\/_/,/\/[^\/]+\.[^\/]+$/],
});
/*! normalize.css v7.0.0 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,footer,header,nav,section{display:block}h1{font-size:2em;margin:.67em 0}figcaption,figure,main{display:block}figure{margin:1em 10.666667vw}hr{box-sizing:initial;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:initial;-webkit-text-decoration-skip:objects}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:inherit;font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}dfn{font-style:italic}mark{background-color:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:initial}sub{bottom:-.25em}sup{top:-.5em}audio,video{display:inline-block}audio:not([controls]){display:none;height:0}img{border-style:none}svg:not(:root){overflow:hidden}button,input,optgroup,select,textarea{font-family:sans-serif;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{display:inline-block;vertical-align:initial}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-.533333vw}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details,menu{display:block}summary{display:list-item}canvas{display:inline-block}[hidden],template{display:none}
/*# sourceMappingURL=9.7c331155.chunk.css.map */
\ No newline at end of file
.use-coupon{display:flex;flex-flow:column;height:100%}.use-coupon .coupons-area{padding:19.2vw 3.2vw 0;flex:1 1 auto}.use-coupon .coupons-area .empty{min-height:56.266667vw;line-height:56.266667vw;font-size:3.2vw;color:#666;text-align:center}.use-coupon .coupons-area .invalid-title{text-align:center;font-size:3.2vw;line-height:13.866667vw;color:#999}.exchange-bar{display:flex;justify-content:space-between;width:100%;padding:2.666667vw 3.2vw;border-bottom:1px solid #e7eaf1;position:absolute;top:11.733333vw;left:0;z-index:10;background:#fff}.exchange-bar button{display:inline-block;width:22.4vw;height:9.6vw;line-height:9.6vw;font-size:4.266667vw;color:#fff;background-color:#ccc;border:none;-webkit-appearance:none}.exchange-bar button.active{background-color:#09f}.custom-input-wrapper{position:relative}.custom-input-wrapper .custom-input{width:68vw;height:9.6vw;padding-left:2.666667vw;border:1px solid #ddd;border-radius:.8vw;font-size:3.2vw;-webkit-appearance:none}.custom-input-wrapper .custom-input::-webkit-input-placeholder{color:#999}.custom-input-wrapper .iconfont{position:absolute;right:2.666667vw;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);font-size:3.733333vw;color:#ccc}.custom-input-wrapper .hide{display:none}.coupon{position:relative;margin-bottom:4vw;box-shadow:0 .533333vw 3.2vw -2.133333vw}.coupon .coupon-info{position:relative;height:25.333333vw;padding:2.666667vw 4vw;color:#fff}.coupon .coupon-info .type{font-size:3.733333vw}.coupon .coupon-info .denomination{font-size:6.933333vw;line-height:6.933333vw;text-align:center}.coupon .coupon-info .denomination span{font-size:3.2vw}.coupon .coupon-info .course-title{width:68.37%;margin:0 auto 1.066667vw;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:4.266667vw}.coupon .coupon-info .expire{text-align:center;font-size:3.2vw;line-height:4.266667vw}.coupon .coupon-info.coupon-type1{background:#fe6161}.coupon .coupon-info.coupon-type2{background:#e0b97b}.coupon .coupon-info.invalid{background:#999}.coupon .coupon-info>.iconfont{position:absolute;top:50%;right:5.333333vw;-webkit-transform:translateY(-50%);transform:translateY(-50%);width:5.866667vw;height:5.866667vw;display:none}.coupon .coupon-info .check{display:block}.coupon .coupon-info ul{position:absolute;bottom:0;left:0;width:100%;display:flex;justify-content:space-around}.coupon .coupon-info ul li{width:2.666667vw;height:2.666667vw;border-radius:50%;background:#fff;-webkit-transform:translateY(50%);transform:translateY(50%)}.coupon .coupon-des{padding:2.666667vw 4vw;background:#fff;display:flex;justify-content:space-between;align-items:center}.coupon .coupon-des .limit{width:63.81%;font-size:3.2vw;vertical-align:middle;color:#666;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.coupon .coupon-des .use{display:inline-block;padding:.8vw 2.133333vw;font-size:3.2vw;color:#f31;border:1px solid #f31;border-radius:2.666667vw;background:transparent;-webkit-appearance:none}
/*# sourceMappingURL=coupons.9ece7350.chunk.css.map */
\ No newline at end of file
{"version":3,"sources":["/Users/zhanghaozhe/server/mr-julyedu/src/components/coupons/coupons.scss","/Users/zhanghaozhe/server/mr-julyedu/src/components/coupons/RedeemBar/exchange-bar.scss","/Users/zhanghaozhe/server/mr-julyedu/src/components/coupons/Input/input.scss","/Users/zhanghaozhe/server/mr-julyedu/src/components/coupons/Coupon/coupon.scss"],"names":[],"mappings":"AAmGA,YACI,YAAA,CACA,gBAAA,CACA,WAAY,CAHhB,0BAMQ,sBAAA,CAEA,aAAc,CARtB,iCAWY,sBAAA,CACA,uBAAA,CACA,eAAA,CACA,UAAA,CACA,iBAAkB,CAf9B,yCAmBY,iBAAA,CACA,eAAA,CACA,uBAAA,CACA,UA7GI,CCuFhB,cACI,YAAA,CACA,6BAAA,CACA,UAAA,CACA,wBAAA,CACA,+BAAA,CACA,iBAAA,CACA,eAAA,CACA,MAAA,CACA,UAAA,CACA,eAzGQ,CA+FZ,qBAaQ,oBAAA,CACA,YAAA,CACA,YAAA,CACA,iBAAA,CACA,oBAAA,CACA,UAAA,CACA,qBAAA,CACA,WAAA,CACA,uBAAwB,CArBhC,4BAwBY,qBAxHC,CCgGb,sBACI,iBAAkB,CADtB,oCAIQ,UAAA,CACA,YAAA,CAEA,uBAAA,CAEA,qBAAA,CACA,kBAAA,CAEA,eAAA,CAEA,uBAAwB,CAdhC,+DAkBY,UAzGI,CAuFhB,gCAuBQ,iBAAA,CACA,gBAAA,CACA,OAAA,CACA,kCAAA,CAAA,0BAAA,CACA,oBAAA,CACA,UA9EK,CAkDb,4BAgCQ,YAAa,CC9BrB,QACI,iBAAA,CACA,iBAAA,CACA,wCAA6B,CAHjC,qBAMQ,iBAAA,CACA,kBAAA,CACA,sBAAA,CACA,UA1GI,CAiGZ,2BAYY,oBAhFE,CAoEd,mCAgBY,oBAAA,CACA,sBAAA,CACA,iBAAkB,CAlB9B,wCAqBgB,eAxFF,CAmEd,mCA0BY,YAAA,CACA,wBAAA,CACA,kBAAA,CACA,eAAA,CACA,sBAAA,CACA,oBApGE,CAqEd,6BAmCY,iBAAA,CACA,eAAA,CACA,sBA1GE,CAqEd,kCAyCY,kBA3CM,CAElB,kCA6CY,kBAhDI,CAGhB,6BAiDY,eA1II,CAyFhB,+BAuDY,iBAAA,CACA,OAAA,CACA,gBAAA,CACA,kCAAA,CAAA,0BAAA,CACA,gBAAA,CACA,iBAAA,CACA,YAAa,CA7DzB,4BAiEY,aAAc,CAjE1B,wBAqEY,iBAAA,CACA,QAAA,CACA,MAAA,CACA,UAAA,CACA,YAAA,CACA,4BAA6B,CA1EzC,2BA8EgB,gBAAA,CACA,iBAAA,CACA,iBAAA,CACA,eAAA,CACA,iCAAA,CAAA,yBAA0B,CAlF1C,oBAwFQ,sBAAA,CACA,eAAA,CACA,YAAA,CACA,6BAAA,CACA,kBAAmB,CA5F3B,2BA+FY,YAAA,CACA,eAAA,CACA,qBAAA,CACA,UAAA,CACA,kBAAA,CACA,eAAA,CACA,sBAAuB,CArGnC,yBAyGY,oBAAA,CACA,uBAAA,CACA,eAAA,CACA,UAAA,CACA,qBAAA,CACA,wBAAA,CACA,sBAAA,CACA,uBAAwB","file":"coupons.9ece7350.chunk.css","sourcesContent":["@charset \"UTF-8\";\n/*\n * @ 文字颜色\n */\n/*\n * @ 文字大小\n */\n/*\n * @ 背景颜色\n */\n/*\n * @ 分割线颜色\n */\n/*\n * @ 边框颜色\n */\n/*\n * @ 标签颜色\n */\n.use-coupon {\n display: flex;\n flex-flow: column;\n height: 100%; }\n .use-coupon .coupons-area {\n padding: 72px 12px 0px;\n flex: 1 1 auto; }\n .use-coupon .coupons-area .empty {\n min-height: 211px;\n line-height: 211px;\n font-size: 12px;\n color: #666;\n text-align: center; }\n .use-coupon .coupons-area .invalid-title {\n text-align: center;\n font-size: 12px;\n line-height: 52px;\n color: #999; }\n","@charset \"UTF-8\";\n/*\n * @ 文字颜色\n */\n/*\n * @ 文字大小\n */\n/*\n * @ 背景颜色\n */\n/*\n * @ 分割线颜色\n */\n/*\n * @ 边框颜色\n */\n/*\n * @ 标签颜色\n */\n.exchange-bar {\n display: flex;\n justify-content: space-between;\n width: 100%;\n padding: 10px 12px;\n border-bottom: 1px solid #E7EAF1;\n position: absolute;\n top: 44px;\n left: 0;\n z-index: 10;\n background: #fff; }\n .exchange-bar button {\n display: inline-block;\n width: 84px;\n height: 36px;\n line-height: 36px;\n font-size: 16px;\n color: #fff;\n background-color: #ccc;\n border: none;\n -webkit-appearance: none; }\n .exchange-bar button.active {\n background-color: #09f; }\n","@charset \"UTF-8\";\n/*\n * @ 文字颜色\n */\n/*\n * @ 文字大小\n */\n/*\n * @ 背景颜色\n */\n/*\n * @ 分割线颜色\n */\n/*\n * @ 边框颜色\n */\n/*\n * @ 标签颜色\n */\n.custom-input-wrapper {\n position: relative; }\n .custom-input-wrapper .custom-input {\n width: 255px;\n height: 36px;\n padding-left: 10px;\n border: 1px solid #ddd;\n border-radius: 3px;\n font-size: 12px;\n -webkit-appearance: none; }\n .custom-input-wrapper .custom-input::-webkit-input-placeholder {\n color: #999; }\n .custom-input-wrapper .iconfont {\n position: absolute;\n right: 10px;\n top: 50%;\n transform: translateY(-50%);\n font-size: 14px;\n color: #ccc; }\n .custom-input-wrapper .hide {\n display: none; }\n","@charset \"UTF-8\";\n/*\n * @ 文字颜色\n */\n/*\n * @ 文字大小\n */\n/*\n * @ 背景颜色\n */\n/*\n * @ 分割线颜色\n */\n/*\n * @ 边框颜色\n */\n/*\n * @ 标签颜色\n */\n.coupon {\n position: relative;\n margin-bottom: 15px;\n box-shadow: 0px 2px 12px -8px; }\n .coupon .coupon-info {\n position: relative;\n height: 95px;\n padding: 10px 15px;\n color: #fff; }\n .coupon .coupon-info .type {\n font-size: 14px; }\n .coupon .coupon-info .denomination {\n font-size: 26px;\n line-height: 26px;\n text-align: center; }\n .coupon .coupon-info .denomination span {\n font-size: 12px; }\n .coupon .coupon-info .course-title {\n width: 68.37%;\n margin: 0 auto 4px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n font-size: 16px; }\n .coupon .coupon-info .expire {\n text-align: center;\n font-size: 12px;\n line-height: 16px; }\n .coupon .coupon-info.coupon-type1 {\n background: #FE6161; }\n .coupon .coupon-info.coupon-type2 {\n background: #E0B97B; }\n .coupon .coupon-info.invalid {\n background: #999; }\n .coupon .coupon-info > .iconfont {\n position: absolute;\n top: 50%;\n right: 20px;\n transform: translateY(-50%);\n width: 22px;\n height: 22px;\n display: none; }\n .coupon .coupon-info .check {\n display: block; }\n .coupon .coupon-info ul {\n position: absolute;\n bottom: 0;\n left: 0;\n width: 100%;\n display: flex;\n justify-content: space-around; }\n .coupon .coupon-info ul li {\n width: 10px;\n height: 10px;\n border-radius: 50%;\n background: #fff;\n transform: translateY(50%); }\n .coupon .coupon-des {\n padding: 10px 15px;\n background: #fff;\n display: flex;\n justify-content: space-between;\n align-items: center; }\n .coupon .coupon-des .limit {\n width: 63.81%;\n font-size: 12px;\n vertical-align: middle;\n color: #666;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis; }\n .coupon .coupon-des .use {\n display: inline-block;\n padding: 3px 8px;\n font-size: 12px;\n color: #f31;\n border: 1px solid #f31;\n border-radius: 10px;\n background: transparent;\n -webkit-appearance: none; }\n"]}
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
.myorders-box{width:100%;height:100%;background-color:#f5f5f5}.myorders-box .order-body .order-head{width:100%;height:10.666667vw;line-height:10.666667vw;padding:0 3.2vw;display:flex;justify-content:space-between;background-color:#fff;margin-top:2.666667vw;border-bottom:1px solid #e7eaf1}.myorders-box .order-body .order-head .oid-num{font-size:3.2vw;color:#666}.myorders-box .order-body .order-head .oid-status{font-size:3.733333vw;color:#ff3131}.myorders-box .order-body .order-head .oid-success{font-size:3.733333vw;color:#333}.myorders-box .order-body .order-wrap{width:100%;padding:2.666667vw 3.2vw;background-color:#fff;border-bottom:1px solid #e7eaf1}.myorders-box .order-body .order-btm{width:100%;height:14.4vw;background-color:#fff;padding:0 3.2vw;display:flex;justify-content:space-between}.myorders-box .order-body .order-btm .price-info{width:32vw;display:flex;flex-direction:column;align-self:center}.myorders-box .order-body .order-btm .price-info .payable{font-size:3.2vw;color:#666}.myorders-box .order-body .order-btm .price-info .price{font-size:3.733333vw;color:#ff3131}.myorders-box .order-body .order-btm .btm-right .cancel,.myorders-box .order-body .order-btm .btm-right a{display:inline-block;width:24vw;height:8vw;text-align:center;font-size:3.733333vw;background-color:#fff;border-radius:1.066667vw;margin-top:3.2vw}.myorders-box .order-body .order-btm .btm-right .cancel{color:#333;border:1px solid #333;margin-right:4vw}.myorders-box .order-body .order-btm .btm-right a{line-height:8vw;color:#ff3131;border:1px solid #ff3131}.myorders-box .order-body .order-btm .btm-right .group img{width:8vw;height:8vw;border-radius:50%;margin-top:2.666667vw;margin-left:2.666667vw}.myorders-box .cart-tip{color:#555;margin-top:37.333333vw;text-align:center}.myorders-box .cart-tip .iconfridge{font-size:5.6vw}.myorders-box .cart-tip .cart-mess{font-size:3.2vw;color:#666}.myorders-box .cart-tip a{display:inline-block;width:34.666667vw;height:8vw;border:1px solid #09f;border-radius:4vw;font-size:4.266667vw;margin-top:8vw;color:#09f;text-align:center;line-height:7.466667vw}
/*# sourceMappingURL=myorders.3ab93c8e.chunk.css.map */
\ No newline at end of file
{"version":3,"sources":["/Users/zhanghaozhe/server/mr-julyedu/src/components/myOrders/index.scss"],"names":[],"mappings":"AAmGA,cACE,UAAA,CACA,WAAA,CACA,wBAxDiB,CAqDnB,sCAQM,UAAA,CACA,kBAAA,CACA,uBAAA,CACA,eAAA,CACA,YAAA,CACA,6BAAA,CACA,qBAAA,CACA,qBAAA,CACA,+BAAgC,CAhBtC,+CAmBQ,eAAA,CACA,UA7GQ,CAyFhB,kDAwBQ,oBAAA,CACA,aArHU,CA4FlB,mDA4BQ,oBAAA,CACA,UAxHQ,CA2FhB,sCAkCM,UAAA,CACA,wBAAA,CACA,qBAAA,CACA,+BA9CiB,CASvB,qCAyCM,UAAA,CACA,aAAA,CACA,qBAAA,CACA,eAAA,CACA,YAAA,CACA,6BAA8B,CA9CpC,iDAiDQ,UAAA,CACA,YAAA,CACA,qBAAA,CACA,iBAAkB,CApD1B,0DAuDU,eAAA,CACA,UAjJM,CAyFhB,wDA4DU,oBAAA,CACA,aAzJQ,CA4FlB,0GAoEU,oBAAA,CACA,UAAA,CACA,UAAA,CACA,iBAAA,CACA,oBAAA,CACA,qBAAA,CACA,wBAAA,CACA,gBAAgB,CA3E1B,wDA+EU,UAAA,CACA,qBAAA,CACA,gBAAkB,CAjF5B,kDAqFU,eAAA,CACA,aAAA,CACA,wBAnLQ,CA4FlB,2DA4FY,SAAA,CACA,UAAA,CACA,iBAAA,CACA,qBAAA,CACA,sBAAiB,CAhG7B,wBAwGI,UAAA,CACA,sBAAA,CACA,iBAAkB,CA1GtB,oCA6GM,eAAe,CA7GrB,mCAiHM,eAAA,CACA,UA3MU,CAyFhB,0BAsHM,oBAAA,CACA,iBAAA,CACA,UAAA,CACA,qBAAA,CACA,iBAAA,CACA,oBAAA,CACA,cAAA,CACA,UAAA,CACA,iBAAA,CACA,sBAAiB","file":"myorders.3ab93c8e.chunk.css","sourcesContent":["@charset \"UTF-8\";\n/*\n * @ 文字颜色\n */\n/*\n * @ 文字大小\n */\n/*\n * @ 背景颜色\n */\n/*\n * @ 分割线颜色\n */\n/*\n * @ 边框颜色\n */\n/*\n * @ 标签颜色\n */\n.myorders-box {\n width: 100%;\n height: 100%;\n background-color: #f5f5f5; }\n .myorders-box .order-body .order-head {\n width: 100%;\n height: 40px;\n line-height: 40px;\n padding: 0 12px;\n display: flex;\n justify-content: space-between;\n background-color: #fff;\n margin-top: 10px;\n border-bottom: 1px solid #E7EAF1; }\n .myorders-box .order-body .order-head .oid-num {\n font-size: 12px;\n color: #666; }\n .myorders-box .order-body .order-head .oid-status {\n font-size: 14px;\n color: #ff3131; }\n .myorders-box .order-body .order-head .oid-success {\n font-size: 14px;\n color: #333; }\n .myorders-box .order-body .order-wrap {\n width: 100%;\n padding: 10px 12px;\n background-color: #fff;\n border-bottom: 1px solid #E7EAF1; }\n .myorders-box .order-body .order-btm {\n width: 100%;\n height: 54px;\n background-color: #fff;\n padding: 0 12px;\n display: flex;\n justify-content: space-between; }\n .myorders-box .order-body .order-btm .price-info {\n width: 120px;\n display: flex;\n flex-direction: column;\n align-self: center; }\n .myorders-box .order-body .order-btm .price-info .payable {\n font-size: 12px;\n color: #666; }\n .myorders-box .order-body .order-btm .price-info .price {\n font-size: 14px;\n color: #ff3131; }\n .myorders-box .order-body .order-btm .btm-right .cancel, .myorders-box .order-body .order-btm .btm-right a {\n display: inline-block;\n width: 90px;\n height: 30px;\n text-align: center;\n font-size: 14px;\n background-color: #fff;\n border-radius: 4px;\n margin-top: 12px; }\n .myorders-box .order-body .order-btm .btm-right .cancel {\n color: #333;\n border: 1px solid #333;\n margin-right: 15px; }\n .myorders-box .order-body .order-btm .btm-right a {\n line-height: 30px;\n color: #ff3131;\n border: 1px solid #ff3131; }\n .myorders-box .order-body .order-btm .btm-right .group img {\n width: 30px;\n height: 30px;\n border-radius: 50%;\n margin-top: 10px;\n margin-left: 10px; }\n .myorders-box .cart-tip {\n color: #555;\n margin-top: 140px;\n text-align: center; }\n .myorders-box .cart-tip .iconfridge {\n font-size: 21px; }\n .myorders-box .cart-tip .cart-mess {\n font-size: 12px;\n color: #666; }\n .myorders-box .cart-tip a {\n display: inline-block;\n width: 130px;\n height: 30px;\n border: 1px solid #09f;\n border-radius: 15px;\n font-size: 16px;\n margin-top: 30px;\n color: #09f;\n text-align: center;\n line-height: 28px; }\n"]}
\ No newline at end of file
.purchased-box{width:100%;height:100%;background-color:#f5f5f5}.purchased-box .tip{width:100%;height:8vw;line-height:8vw;font-size:3.2vw;color:#333;text-align:center;background-color:#fff4ce;margin-bottom:2.666667vw}.purchased-box .purchased-body,.purchased-box .v-list-item{background-color:#fff}.purchased-box .v-list-item .content{padding-bottom:2.666667vw;border-bottom:1px solid #e7eaf1}.purchased-box .v-list-item .content .cover{flex:inherit;width:42.2%}.purchased-box .v-list-item .content .cover img{width:100%}.purchased-box .v-list-item .info{width:52.3%;position:relative;display:block}.purchased-box .v-list-item .info .title{font-size:4.266667vw;color:#333;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;height:4.266667vw;line-height:4.266667vw}.purchased-box .v-list-item .info .contact{font-size:3.733333vw;color:#666;margin-top:3.733333vw}.purchased-box .v-list-item .info .des{position:absolute;bottom:1.333333vw;color:#ff2121;font-size:3.733333vw;height:3.733333vw;line-height:3.733333vw}.purchased-box .cart-tip{color:#555;margin-top:37.333333vw;text-align:center}.purchased-box .cart-tip .iconfridge{font-size:5.6vw}.purchased-box .cart-tip .cart-mess{font-size:3.2vw;color:#666}.purchased-box .cart-tip a{display:inline-block;width:34.666667vw;height:8vw;border:1px solid #09f;border-radius:4vw;font-size:4.266667vw;margin-top:8vw;color:#09f;text-align:center;line-height:7.466667vw}
/*# sourceMappingURL=purchased.72c55bd6.chunk.css.map */
\ No newline at end of file
{"version":3,"sources":["/Users/zhanghaozhe/server/mr-julyedu/src/components/purchased/index.scss"],"names":[],"mappings":"AAmGA,eACE,UAAA,CACA,WAAA,CACA,wBAxDiB,CAqDnB,oBAQI,UAAA,CACA,UAAA,CACA,eAAA,CACA,eAAA,CACA,UAAA,CACA,iBAAA,CACA,wBAAA,CACA,wBAAmB,CAfvB,2DAsBI,qBAAsB,CAtB1B,qCAyBM,yBAAA,CACA,+BAAgC,CA1BtC,4CA6BQ,YAAA,CACA,WAAY,CA9BpB,gDAiCU,UAAW,CAjCrB,kCAuCM,WAAA,CACA,iBAAA,CACA,aAAc,CAzCpB,yCA4CQ,oBAAA,CACA,UAAA,CACA,eAAA,CACA,sBAAA,CACA,kBAAA,CACA,iBAAA,CACA,sBAAiB,CAlDzB,2CAsDQ,oBAAA,CACA,UAAA,CACA,qBAAgB,CAxDxB,uCA4DQ,iBAAA,CACA,iBAAA,CACA,aAAA,CACA,oBAAA,CACA,iBAAA,CACA,sBAAiB,CAjEzB,yBAwEI,UAAA,CACA,sBAAA,CACA,iBAAkB,CA1EtB,qCA6EM,eAAe,CA7ErB,oCAiFM,eAAA,CACA,UA3KU,CAyFhB,2BAsFM,oBAAA,CACA,iBAAA,CACA,UAAA,CACA,qBAAA,CACA,iBAAA,CACA,oBAAA,CACA,cAAA,CACA,UAAA,CACA,iBAAA,CACA,sBAAiB","file":"purchased.72c55bd6.chunk.css","sourcesContent":["@charset \"UTF-8\";\n/*\n * @ 文字颜色\n */\n/*\n * @ 文字大小\n */\n/*\n * @ 背景颜色\n */\n/*\n * @ 分割线颜色\n */\n/*\n * @ 边框颜色\n */\n/*\n * @ 标签颜色\n */\n.purchased-box {\n width: 100%;\n height: 100%;\n background-color: #f5f5f5; }\n .purchased-box .tip {\n width: 100%;\n height: 30px;\n line-height: 30px;\n font-size: 12px;\n color: #333;\n text-align: center;\n background-color: #FFF4CE;\n margin-bottom: 10px; }\n .purchased-box .purchased-body {\n background-color: #fff; }\n .purchased-box .v-list-item {\n background-color: #fff; }\n .purchased-box .v-list-item .content {\n padding-bottom: 10px;\n border-bottom: 1px solid #e7eaf1; }\n .purchased-box .v-list-item .content .cover {\n flex: inherit;\n width: 42.2%; }\n .purchased-box .v-list-item .content .cover img {\n width: 100%; }\n .purchased-box .v-list-item .info {\n width: 52.3%;\n position: relative;\n display: block; }\n .purchased-box .v-list-item .info .title {\n font-size: 16px;\n color: #333;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n height: 16px;\n line-height: 16px; }\n .purchased-box .v-list-item .info .contact {\n font-size: 14px;\n color: #666;\n margin-top: 14px; }\n .purchased-box .v-list-item .info .des {\n position: absolute;\n bottom: 5px;\n color: #FF2121;\n font-size: 14px;\n height: 14px;\n line-height: 14px; }\n .purchased-box .cart-tip {\n color: #555;\n margin-top: 140px;\n text-align: center; }\n .purchased-box .cart-tip .iconfridge {\n font-size: 21px; }\n .purchased-box .cart-tip .cart-mess {\n font-size: 12px;\n color: #666; }\n .purchased-box .cart-tip a {\n display: inline-block;\n width: 130px;\n height: 30px;\n border: 1px solid #09f;\n border-radius: 15px;\n font-size: 16px;\n margin-top: 30px;\n color: #09f;\n text-align: center;\n line-height: 28px; }\n"]}
\ No newline at end of file
.share-poster .total-container{width:100%;background-color:#000;height:112vw;overflow:hidden;position:relative}.share-poster .total-container .placard-img-container{width:100%;height:224vw;background:#000;padding-top:5.333333vw;overflow:hidden;position:relative;zoom:.5}.share-poster .total-container .placard-img-container img{position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);text-align:center}.share-poster .total-container .placard-code{opacity:0}.share-poster .placard-desc{width:100%;height:12vw;background:#000;padding:0 2.666667vw}.share-poster .placard-desc .placard-sharetxt{width:100%;height:100%;line-height:5.333333vw;display:inline-block;font-size:3.733333vw;color:#fff}.share-poster .placard-desc .placard-sharetxt .placard-price{font-size:3.733333vw;color:#09f}.share-poster .placard-swiper{width:100%;background-color:#fff}.share-poster .placard-swiper .placard-list{display:flex;justify-content:center;align-items:center}.share-poster .placard-swiper .placard-list li{width:17.066667vw;height:17.066667vw;border-radius:1.333333vw;line-height:24vw;margin:5.333333vw 4vw}.share-poster .placard-swiper .placard-list li img{display:inline-block;width:17.066667vw;height:17.066667vw;border-radius:1.333333vw}.share-poster .placard-swiper .placard-list li.active{width:17.066667vw;height:17.066667vw;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTM4IDc5LjE1OTgyNCwgMjAxNi8wOS8xNC0wMTowOTowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTcgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkJERkI3RjkzNjU4MjExRThBM0M2RjVEMUVEQUJDREUxIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkJERkI3Rjk0NjU4MjExRThBM0M2RjVEMUVEQUJDREUxIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QkRGQjdGOTE2NTgyMTFFOEEzQzZGNUQxRURBQkNERTEiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6QkRGQjdGOTI2NTgyMTFFOEEzQzZGNUQxRURBQkNERTEiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz6zmJvcAAANOklEQVR42uyd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) no-repeat 50%;z-index:1002;background-size:17.066667vw}.share-poster .placard-swiper .placard-list li.active img{opacity:.1}.share-poster .hide{display:none}
/*# sourceMappingURL=shareposter.82081d02.chunk.css.map */
\ No newline at end of file
{"version":3,"sources":["/Users/zhanghaozhe/server/mr-julyedu/src/components/sharePoster/index.scss"],"names":[],"mappings":"AAmGA,+BAEI,UAAA,CACA,qBAAA,CACA,YAAA,CACA,eAAA,CACA,iBAAkB,CANtB,sDASM,UAAA,CACA,YAAA,CACA,eAAA,CACA,sBAAA,CACA,eAAA,CACA,iBAAA,CACA,OAAS,CAff,0DAkBQ,iBAAA,CACA,OAAA,CACA,QAAA,CACA,sCAAA,CAAA,8BAAA,CACA,iBAAkB,CAtB1B,6CA2BM,SAAU,CA3BhB,4BAgCI,UAAA,CACA,WAAA,CACA,eAAA,CACA,oBAAe,CAnCnB,8CAqCM,UAAA,CACA,WAAA,CACA,sBAAA,CACA,oBAAA,CACA,oBAAA,CACA,UAzIM,CA+FZ,6DA6CQ,oBAAA,CACA,UA9IK,CAgGb,8BAoDI,UAAA,CACA,qBApJQ,CA+FZ,4CAwDM,YAAA,CACA,sBAAA,CACA,kBAAmB,CA1DzB,+CA6DQ,iBAAA,CACA,kBAAA,CACA,wBAAA,CACA,gBAAA,CACA,qBAAiB,CAjEzB,mDAoEU,oBAAA,CACA,iBAAA,CACA,kBAAA,CACA,wBAAkB,CAvE5B,sDA4EQ,iBAAA,CACA,kBAAA,CACA,wpLAA0D,CAC1D,YAAA,CACA,2BAAqB,CAhF7B,0DAmFU,UAAY,CAnFtB,oBAyFI,YAAa","file":"shareposter.82081d02.chunk.css","sourcesContent":["@charset \"UTF-8\";\n/*\n * @ 文字颜色\n */\n/*\n * @ 文字大小\n */\n/*\n * @ 背景颜色\n */\n/*\n * @ 分割线颜色\n */\n/*\n * @ 边框颜色\n */\n/*\n * @ 标签颜色\n */\n.share-poster .total-container {\n width: 100%;\n background-color: #000;\n height: 420px;\n overflow: hidden;\n position: relative; }\n .share-poster .total-container .placard-img-container {\n width: 100%;\n height: 840px;\n background: #000;\n padding-top: 20px;\n overflow: hidden;\n position: relative;\n zoom: 0.5; }\n .share-poster .total-container .placard-img-container img {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n text-align: center; }\n .share-poster .total-container .placard-code {\n opacity: 0; }\n\n.share-poster .placard-desc {\n width: 100%;\n height: 45px;\n background: #000;\n padding: 0 10px; }\n .share-poster .placard-desc .placard-sharetxt {\n width: 100%;\n height: 100%;\n line-height: 20px;\n display: inline-block;\n font-size: 14px;\n color: #fff; }\n .share-poster .placard-desc .placard-sharetxt .placard-price {\n font-size: 14px;\n color: #09f; }\n\n.share-poster .placard-swiper {\n width: 100%;\n background-color: #fff; }\n .share-poster .placard-swiper .placard-list {\n display: flex;\n justify-content: center;\n align-items: center; }\n .share-poster .placard-swiper .placard-list li {\n width: 64px;\n height: 64px;\n border-radius: 5px;\n line-height: 90px;\n margin: 20px 15px; }\n .share-poster .placard-swiper .placard-list li img {\n display: inline-block;\n width: 64px;\n height: 64px;\n border-radius: 5px; }\n .share-poster .placard-swiper .placard-list li.active {\n width: 64px;\n height: 64px;\n background: url(\"./image/choose_pic.png\") no-repeat center;\n z-index: 1002;\n background-size: 64px; }\n .share-poster .placard-swiper .placard-list li.active img {\n opacity: 0.1; }\n\n.share-poster .hide {\n display: none; }\n"]}
\ No newline at end of file
#study{height:100%;background:#fff;display:flex;flex-flow:column;overflow:hidden}#study .tab{height:11.733333vw;max-height:11.733333vw;line-height:11.733333vw;text-align:center;background:#f7f9fc;display:flex;justify-content:center}#study .tab,#study .tab>div{flex:1 0 auto}#study .tab a{display:inline-block;height:11.733333vw;font-size:4vw}#study .study-container{padding-bottom:13.333333vw;flex:1 1 auto;overflow-y:auto;box-sizing:border-box}#study .active{color:#09f;border-bottom:1px solid #09f}.v-list-base-item{height:33.866667vw;padding:2.666667vw 2.666667vw 0}.v-list-base-item .content{display:flex;height:100%;padding-bottom:2.666667vw;border-bottom:1px solid #e7eaf1}.v-list-base-item .content .cover{flex:0 0 auto;margin-right:4.266667vw;position:relative}.v-list-base-item .content .cover img{width:40vw;height:28.8vw;border-radius:.8vw}.v-list-base-item .content .course-status{width:100%;height:6.4vw;position:absolute;bottom:-1px;border-radius:0 0 .8vw .8vw;text-align:center;line-height:6.4vw;color:#fff;font-size:3.466667vw}.info{display:flex;flex-wrap:wrap;width:55%}.info .title{font-size:4vw;font-weight:400;width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.info .contact{font-size:3.466667vw;color:#ff2121;flex:0 1 auto;width:100%}.info .des{color:#999;font-size:2.933333vw;align-self:flex-end;line-height:1}.info .des .time{margin-right:2.666667vw}.info .start-learn{display:block;box-sizing:border-box;align-self:flex-end;width:20.8vw;height:5.866667vw;padding:1.333333vw 3.733333vw;-webkit-appearance:none;outline:0;border:none;background:#09f;color:#fff;border-radius:.8vw}.add-course{padding:2.666667vw 3.2vw}.add-course button.add{width:40vw;height:28.8vw;font-size:4vw;font-family:HiraginoSansGB-W3;font-weight:400;color:#09f;border:1px dashed #09f;background:transparent}.my-course-uid{width:100vw;height:8vw;background:#fff4ce;line-height:8vw;text-align:center;font-size:3.2vw;color:#333}.empty{height:100%;display:flex;flex-direction:column;align-items:center;padding-top:37.333333vw;background:#f5f5f5}.empty .iconfish{width:5.333333vw;height:5.333333vw;color:#1a4263}.empty .empty-prompt{margin-bottom:8vw;font-size:3.2vw;color:#666}.empty .select-course{display:block;width:34.933333vw;height:8vw;border:1px solid #09f;border-radius:4vw;background:transparent;color:#09f;font-size:4.266667vw;text-align:center;line-height:8vw}.course-base-item{width:47.8%;margin-top:4vw;margin-bottom:1.333333vw;position:relative}.course-base-item img{width:100%;height:31.733333vw;min-height:31.733333vw}.course-base-item .course-title{font-size:3.733333vw;color:#333;line-height:5.066667vw;margin-top:2.4vw}.free-courses{padding:4vw;display:flex;flex-wrap:wrap;justify-content:space-between}.free-courses .top{position:absolute;top:2.666667vw;left:0}.free-courses .tag-starting{background:#ff2121;color:#fff}.free-courses .tag-category{background:#e0b97b;color:#fff}.free-courses .course-item{margin-top:0;margin-bottom:4.266667vw}.free-courses .course-item .course-title{margin-top:0;line-height:9.066667vw;width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.free-courses .course-item .bottom{display:flex;justify-content:space-between}.free-courses .live .bottom{display:flex;justify-content:flex-start;color:#09f}.free-courses .animation-box{width:3.733333vw;height:3.2vw;display:flex;justify-content:space-between;margin-right:1.333333vw}.free-courses .animation-box .column{width:.533333vw;height:3.2vw;-webkit-transform-origin:bottom center;transform-origin:bottom center;-webkit-animation:scaleY 1.1s ease-out infinite;animation:scaleY 1.1s ease-out infinite;background-color:#09f}.free-courses .animation-box .column-1{-webkit-animation-delay:.2s;animation-delay:.2s}.free-courses .animation-box .column-2{-webkit-animation-delay:.4s;animation-delay:.4s}.free-courses .animation-box .column-3{-webkit-animation-delay:.6s;animation-delay:.6s}@-webkit-keyframes scaleY{0%{-webkit-transform:scaleY(0);transform:scaleY(0)}50%{-webkit-transform:scaleY(1);transform:scaleY(1)}to{-webkit-transform:scaleY(0);transform:scaleY(0)}}@keyframes scaleY{0%{-webkit-transform:scaleY(0);transform:scaleY(0)}50%{-webkit-transform:scaleY(1);transform:scaleY(1)}to{-webkit-transform:scaleY(0);transform:scaleY(0)}}
/*# sourceMappingURL=study.586bcabb.chunk.css.map */
\ No newline at end of file
{"version":3,"sources":["/Users/zhanghaozhe/server/mr-julyedu/src/components/study/study.scss","/Users/zhanghaozhe/server/mr-julyedu/src/common/v-list-base/index.scss","/Users/zhanghaozhe/server/mr-julyedu/src/components/study/myCourses/my-courses.scss","/Users/zhanghaozhe/server/mr-julyedu/src/common/course-base/course-base.scss","/Users/zhanghaozhe/server/mr-julyedu/src/components/study/freeCourses/free-courses.scss"],"names":[],"mappings":"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","file":"study.586bcabb.chunk.css","sourcesContent":["@charset \"UTF-8\";\n/*\n * @ 文字颜色\n */\n/*\n * @ 文字大小\n */\n/*\n * @ 背景颜色\n */\n/*\n * @ 分割线颜色\n */\n/*\n * @ 边框颜色\n */\n/*\n * @ 标签颜色\n */\n#study {\n height: 100%;\n background: #fff;\n display: flex;\n flex-flow: column;\n overflow: hidden; }\n #study .tab {\n height: 44px;\n max-height: 44px;\n line-height: 44px;\n text-align: center;\n background: #F7F9FC;\n flex: 1 0 auto;\n display: flex;\n justify-content: center; }\n #study .tab > div {\n flex: 1 0 auto; }\n #study .tab a {\n display: inline-block;\n height: 44px;\n font-size: 15px; }\n #study .study-container {\n padding-bottom: 50px;\n flex: 1 1 auto;\n overflow-y: auto;\n box-sizing: border-box; }\n #study .active {\n color: #09f;\n border-bottom: 1px solid #09f; }\n","@charset \"UTF-8\";\n/*\n * @ 文字颜色\n */\n/*\n * @ 文字大小\n */\n/*\n * @ 背景颜色\n */\n/*\n * @ 分割线颜色\n */\n/*\n * @ 边框颜色\n */\n/*\n * @ 标签颜色\n */\n.v-list-base-item {\n height: 127px;\n padding: 10px 10px 0; }\n .v-list-base-item .content {\n display: flex;\n height: 100%;\n padding-bottom: 10px;\n border-bottom: 1px solid #e7eaf1; }\n .v-list-base-item .content .cover {\n flex: 0 0 auto;\n margin-right: 16px;\n position: relative; }\n .v-list-base-item .content .cover img {\n width: 150px;\n height: 108px;\n border-radius: 3px; }\n .v-list-base-item .content .course-status {\n width: 100%;\n height: 24px;\n position: absolute;\n bottom: -1px;\n border-radius: 0 0 3px 3px;\n text-align: center;\n line-height: 24px;\n color: #fff;\n font-size: 13px; }\n","@charset \"UTF-8\";\n/*\n * @ 文字颜色\n */\n/*\n * @ 文字大小\n */\n/*\n * @ 背景颜色\n */\n/*\n * @ 分割线颜色\n */\n/*\n * @ 边框颜色\n */\n/*\n * @ 标签颜色\n */\n.info {\n display: flex;\n flex-wrap: wrap;\n width: 55%; }\n .info .title {\n font-size: 15px;\n font-weight: 400;\n width: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis; }\n .info .contact {\n font-size: 13px;\n color: #FF2121;\n flex: 0 1 auto;\n width: 100%; }\n .info .des {\n color: #999;\n font-size: 11px;\n align-self: flex-end;\n line-height: 1; }\n .info .des .time {\n margin-right: 10px; }\n .info .start-learn {\n display: block;\n box-sizing: border-box;\n align-self: flex-end;\n width: 78px;\n height: 22px;\n padding: 5px 14px;\n -webkit-appearance: none;\n outline: 0;\n border: none;\n background: #09f;\n color: #fff;\n border-radius: 3px; }\n\n.add-course {\n padding: 10px 12px; }\n .add-course button.add {\n width: 150px;\n height: 108px;\n font-size: 15px;\n font-family: HiraginoSansGB-W3;\n font-weight: normal;\n color: #09f;\n border: 1px dashed #09f;\n background: transparent; }\n\n.my-course-uid {\n width: 375px;\n height: 30px;\n background: #FFF4CE;\n line-height: 30px;\n text-align: center;\n font-size: 12px;\n color: #333; }\n\n.empty {\n height: 100%;\n display: flex;\n flex-direction: column;\n align-items: center;\n padding-top: 140px;\n background: #f5f5f5; }\n .empty .iconfish {\n width: 20px;\n height: 20px;\n color: #1a4263; }\n .empty .empty-prompt {\n margin-bottom: 30px;\n font-size: 12px;\n color: #666; }\n .empty .select-course {\n display: block;\n width: 131px;\n height: 30px;\n border: 1px solid #09f;\n border-radius: 15px;\n background: transparent;\n color: #09f;\n font-size: 16px;\n text-align: center;\n line-height: 30px; }\n","@charset \"UTF-8\";\n/*\n * @ 文字颜色\n */\n/*\n * @ 文字大小\n */\n/*\n * @ 背景颜色\n */\n/*\n * @ 分割线颜色\n */\n/*\n * @ 边框颜色\n */\n/*\n * @ 标签颜色\n */\n.course-base-item {\n width: 47.8%;\n margin-top: 15px;\n margin-bottom: 5px;\n position: relative; }\n .course-base-item img {\n width: 100%;\n height: 119px;\n min-height: 119px; }\n .course-base-item .course-title {\n font-size: 14px;\n color: #333;\n line-height: 19px;\n margin-top: 9px; }\n","@charset \"UTF-8\";\n/*\n * @ 文字颜色\n */\n/*\n * @ 文字大小\n */\n/*\n * @ 背景颜色\n */\n/*\n * @ 分割线颜色\n */\n/*\n * @ 边框颜色\n */\n/*\n * @ 标签颜色\n */\n.free-courses {\n padding: 15px;\n display: flex;\n flex-wrap: wrap;\n justify-content: space-between; }\n .free-courses .top {\n position: absolute;\n top: 10px;\n left: 0; }\n .free-courses .tag-starting {\n background: #FF2121;\n color: #fff; }\n .free-courses .tag-category {\n background: #E0B97B;\n color: #fff; }\n .free-courses .course-item {\n margin-top: 0;\n margin-bottom: 16px; }\n .free-courses .course-item .course-title {\n margin-top: 0;\n line-height: 34px;\n width: 100%;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis; }\n .free-courses .course-item .bottom {\n display: flex;\n justify-content: space-between; }\n .free-courses .live .bottom {\n display: flex;\n justify-content: flex-start;\n color: #09f; }\n .free-courses .animation-box {\n width: 14px;\n height: 12px;\n display: flex;\n justify-content: space-between;\n margin-right: 5px; }\n .free-courses .animation-box .column {\n width: 2px;\n height: 12px;\n transform-origin: bottom center;\n animation: scaleY 1.1s ease-out infinite;\n background-color: #09f; }\n .free-courses .animation-box .column-1 {\n animation-delay: 0.2s; }\n .free-courses .animation-box .column-2 {\n animation-delay: 0.4s; }\n .free-courses .animation-box .column-3 {\n animation-delay: 0.6s; }\n\n@keyframes scaleY {\n from {\n transform: scaleY(0); }\n 50% {\n transform: scaleY(1); }\n to {\n transform: scaleY(0); } }\n"]}
\ No newline at end of file
.to-group-box .v-list-item{margin-top:1.333333vw}.to-group-box .v-list-item .content{border-bottom:1px solid #e7eaf1}.to-group-box .v-list-item .content .cover{flex:inherit;width:42.2%}.to-group-box .v-list-item .content .cover img{width:100%}.to-group-box .v-list-item .info{width:52.3%;position:relative;display:block}.to-group-box .v-list-item .info .title{font-size:4.266667vw;color:#333;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;height:4.266667vw;line-height:4.266667vw}.to-group-box .v-list-item .info .contact{font-size:3.733333vw;color:#666;margin-top:3.733333vw}.to-group-box .v-list-item .info .des{position:absolute;bottom:0}.to-group-box .v-list-item .info .des .course-price .price{color:#ff2121;font-size:3.2vw}.to-group-box .v-list-item .info .des .course-price .new{color:#ff2121;font-size:4.266667vw}.to-group-box .v-list-item .info .des .course-price .old{color:#999;font-size:3.2vw;display:inline-block;margin-left:4vw;text-decoration:line-through}.to-group-box .gorup-content{padding:5.333333vw;text-align:center}.to-group-box .gorup-content .imgname{width:11.733333vw;height:11.733333vw;border-radius:50%;margin:5.333333vw 5.333333vw 0}.to-group-box .gorup-content :first-child{margin-left:0}.to-group-box .gorup-content .tip{color:#e02e24;font-size:4.266667vw}.to-group-box .gorup-content .success{color:#09f;font-size:4.266667vw}.to-group-box .gorup-content .group-btn,.to-group-box .gorup-content .tostudy{display:inline-block;width:89.333333vw;height:11.733333vw;border-radius:1.333333vw;background-color:#e02e24;font-size:4.266667vw;color:#fff;text-align:center;line-height:11.733333vw;margin-top:5.333333vw}.to-group-box .gorup-content .tostudy{background-color:#09f;margin-top:8vw}.to-group-box .gorup-content .dec{font-size:3.2vw;margin-top:2.666667vw;color:#666}.to-group-box .gorup-content .group-dec{background-color:#fafafa;width:100%;padding:0 3.2vw;height:8vw;line-height:8vw;font-size:3.2vw;display:flex;justify-content:space-between;color:#999;margin-top:4vw}.to-group-box .gorup-content .group-dec .allNum{color:#333}.to-group-box .group-course .top-title{height:10.666667vw;line-height:10.666667vw;font-size:3.733333vw;padding:0 3.2vw;display:flex;justify-content:space-between;color:#333}.to-group-box .group-course .top-title .more{color:#09f}.to-group-box .group-course .top-title .more i{width:3.2vw;height:1.866667vw}
/*# sourceMappingURL=togroup.f8580590.chunk.css.map */
\ No newline at end of file
{"version":3,"sources":["/Users/zhanghaozhe/server/mr-julyedu/src/components/detail/group/togroup.scss"],"names":[],"mappings":"AAmGA,2BAEI,qBAAe,CAFnB,oCAKM,+BAAgC,CALtC,2CAQQ,YAAA,CACA,WAAY,CATpB,+CAYU,UAAW,CAZrB,iCAkBM,WAAA,CACA,iBAAA,CACA,aAAc,CApBpB,wCAuBQ,oBAAA,CACA,UAAA,CACA,eAAA,CACA,sBAAA,CACA,kBAAA,CACA,iBAAA,CACA,sBAAiB,CA7BzB,0CAiCQ,oBAAA,CACA,UAAA,CACA,qBAAgB,CAnCxB,sCAuCQ,iBAAA,CACA,QAAS,CAxCjB,2DA4CY,aAAA,CACA,eAAe,CA7C3B,yDAiDY,aAAA,CACA,oBAAe,CAlD3B,yDAsDY,UAAA,CACA,eAAA,CACA,oBAAA,CACA,eAAA,CACA,4BAA6B,CA1DzC,6BAkEI,kBAAA,CACA,iBAAkB,CAnEtB,sCAsEM,iBAAA,CACA,kBAAA,CACA,iBAAA,CACA,8BAAwB,CAzE9B,0CA6EM,aAAc,CA7EpB,kCAiFM,aAAA,CACA,oBAAe,CAlFrB,sCAsFM,UAAA,CACA,oBAAe,CAvFrB,8EA2FM,oBAAA,CACA,iBAAA,CACA,kBAAA,CACA,wBAAA,CACA,wBAAA,CACA,oBAAA,CACA,UAAA,CACA,iBAAA,CACA,uBAAA,CACA,qBAAgB,CApGtB,sCAwGM,qBAAA,CACA,cAAgB,CAzGtB,kCA6GM,eAAA,CACA,qBAAA,CACA,UAxMU,CAyFhB,wCAmHM,wBAAA,CACA,UAAA,CACA,eAAA,CACA,UAAA,CACA,eAAA,CACA,eAAA,CACA,YAAA,CACA,6BAAA,CACA,UAAA,CACA,cAAgB,CA5HtB,gDA+HQ,UA1NQ,CA2FhB,uCAsIM,kBAAA,CACA,uBAAA,CACA,oBAAA,CACA,eAAA,CACA,YAAA,CACA,6BAAA,CACA,UAvOU,CA2FhB,6CA+IQ,UA/OK,CAgGb,+CAkJU,WAAA,CACA,iBAAW","file":"togroup.f8580590.chunk.css","sourcesContent":["@charset \"UTF-8\";\n/*\n * @ 文字颜色\n */\n/*\n * @ 文字大小\n */\n/*\n * @ 背景颜色\n */\n/*\n * @ 分割线颜色\n */\n/*\n * @ 边框颜色\n */\n/*\n * @ 标签颜色\n */\n.to-group-box .v-list-item {\n margin-top: 5px; }\n .to-group-box .v-list-item .content {\n border-bottom: 1px solid #e7eaf1; }\n .to-group-box .v-list-item .content .cover {\n flex: inherit;\n width: 42.2%; }\n .to-group-box .v-list-item .content .cover img {\n width: 100%; }\n .to-group-box .v-list-item .info {\n width: 52.3%;\n position: relative;\n display: block; }\n .to-group-box .v-list-item .info .title {\n font-size: 16px;\n color: #333;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n height: 16px;\n line-height: 16px; }\n .to-group-box .v-list-item .info .contact {\n font-size: 14px;\n color: #666;\n margin-top: 14px; }\n .to-group-box .v-list-item .info .des {\n position: absolute;\n bottom: 0; }\n .to-group-box .v-list-item .info .des .course-price .price {\n color: #FF2121;\n font-size: 12px; }\n .to-group-box .v-list-item .info .des .course-price .new {\n color: #FF2121;\n font-size: 16px; }\n .to-group-box .v-list-item .info .des .course-price .old {\n color: #999;\n font-size: 12px;\n display: inline-block;\n margin-left: 15px;\n text-decoration: line-through; }\n\n.to-group-box .gorup-content {\n padding: 20px;\n text-align: center; }\n .to-group-box .gorup-content .imgname {\n width: 44px;\n height: 44px;\n border-radius: 50%;\n margin: 20px 20px 0 20px; }\n .to-group-box .gorup-content :nth-child(1) {\n margin-left: 0; }\n .to-group-box .gorup-content .tip {\n color: #E02E24;\n font-size: 16px; }\n .to-group-box .gorup-content .success {\n color: #09f;\n font-size: 16px; }\n .to-group-box .gorup-content .group-btn, .to-group-box .gorup-content .tostudy {\n display: inline-block;\n width: 335px;\n height: 44px;\n border-radius: 5px;\n background-color: #E02E24;\n font-size: 16px;\n color: #fff;\n text-align: center;\n line-height: 44px;\n margin-top: 20px; }\n .to-group-box .gorup-content .tostudy {\n background-color: #09f;\n margin-top: 30px; }\n .to-group-box .gorup-content .dec {\n font-size: 12px;\n margin-top: 10px;\n color: #666; }\n .to-group-box .gorup-content .group-dec {\n background-color: #FAFAFA;\n width: 100%;\n padding: 0 12px;\n height: 30px;\n line-height: 30px;\n font-size: 12px;\n display: flex;\n justify-content: space-between;\n color: #999;\n margin-top: 15px; }\n .to-group-box .gorup-content .group-dec .allNum {\n color: #333; }\n\n.to-group-box .group-course .top-title {\n height: 40px;\n line-height: 40px;\n font-size: 14px;\n padding: 0 12px;\n display: flex;\n justify-content: space-between;\n color: #333; }\n .to-group-box .group-course .top-title .more {\n color: #09f; }\n .to-group-box .group-course .top-title .more i {\n width: 12px;\n height: 7px; }\n"]}
\ No newline at end of file
.play .video{width:100%;height:57.333333vw;background-color:#000;position:relative}.play .video .video-js{width:100%;height:100%}.play .video .video-js .vjs-big-play-button{top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.play .video .purchase-box{width:100%;height:100%;position:absolute;left:0;top:0;background-color:rgba(0,0,0,.8);display:flex;flex-flow:column;justify-content:center;align-items:center}.play .video .purchase-box .hint{font-size:3.733333vw;color:#fff;margin-bottom:5.333333vw}.play .video .purchase-box .btns{width:100%;padding:0 16vw;display:flex;justify-content:space-around}.play .video .purchase-box .purchase-class{background-color:initial;background-color:#fff;color:#ff4000}.play .video .purchase-box .purchase-class,.play .video .purchase-box .purchase-episode{display:block;-webkit-appearance:none;outline:none;border:none;border-radius:1.333333vw;line-height:8vw;font-size:3.466667vw;padding:0 2.4vw}.play .video .purchase-box .purchase-episode{background-color:initial;background-color:#ff4000;color:#fff}.play .video video{width:100%;height:100%}.play .tab{height:11.733333vw;max-height:11.733333vw;line-height:11.733333vw;text-align:center;background:#f7f9fc;display:flex;justify-content:center}.play .tab,.play .tab>div{flex:1 0 auto}.play .tab a{display:inline-block;height:11.733333vw;font-size:4.266667vw}.play .active{color:#09f}.play .active .iconiconfront-74{color:#555}.recommendation{padding-top:5.333333vw}.recommendation>.title{font-size:4.266667vw;padding-left:4vw}.recommendation .info{display:flex;flex-wrap:wrap}.recommendation .info .des{font-size:3.733333vw;line-height:4.266667vw;align-self:flex-start}.recommendation .info .price{color:#ff2121;font-size:4.266667vw;margin-right:3.733333vw}.recommendation .info .stale-price{text-decoration:line-through;color:#999;font-size:3.2vw}.recommendation .info .bottom{align-self:flex-end}.v-list-base-item{height:33.866667vw;padding:2.666667vw 2.666667vw 0}.v-list-base-item .content{display:flex;height:100%;padding-bottom:2.666667vw;border-bottom:1px solid #e7eaf1}.v-list-base-item .content .cover{flex:0 0 auto;margin-right:4.266667vw;position:relative}.v-list-base-item .content .cover img{width:40vw;height:28.8vw;border-radius:.8vw}.v-list-base-item .content .course-status{width:100%;height:6.4vw;position:absolute;bottom:-1px;border-radius:0 0 .8vw .8vw;text-align:center;line-height:6.4vw;color:#fff;font-size:3.466667vw}.video-catalog li{height:11.733333vw;padding:0 4vw;line-height:11.733333vw;border-top:1px solid #e7eaf1;border-bottom:1px solid #e7eaf1}.video-catalog li.active{background-color:#f5fbff}.video-catalog li.active .duration,.video-catalog li.active .title{color:#09f}.video-catalog .title{display:inline-block;width:50%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:3.733333vw;margin-right:6.933333vw}.video-catalog .duration{display:inline-block;font-size:2.933333vw;overflow:hidden}.video-catalog .iconfont{float:right}.datum-catalog .prompt{height:8vw;line-height:8vw;font-size:3.2vw;color:#333;background-color:#fff4ce;text-align:center}.datum-catalog .file-name{padding:4vw 4vw 0}.datum-catalog .file-name:last-of-type{padding-bottom:4vw}
/*# sourceMappingURL=video.10e4a7e1.chunk.css.map */
\ No newline at end of file
{"version":3,"sources":["/Users/zhanghaozhe/server/mr-julyedu/src/components/video/video.scss","/Users/zhanghaozhe/server/mr-julyedu/src/components/video/recommendation/recommendation.scss","/Users/zhanghaozhe/server/mr-julyedu/src/common/v-list-base/index.scss","/Users/zhanghaozhe/server/mr-julyedu/src/components/video/video-catalog/video-catalog.scss","/Users/zhanghaozhe/server/mr-julyedu/src/components/video/datum-catalog/datum-catalog.scss"],"names":[],"mappings":"AAqGA,aAEQ,UAAA,CACA,kBAAA,CACA,qBAAA,CACA,iBAAkB,CAL1B,uBAQY,UAAA,CACA,WAAY,CATxB,4CAYgB,OAAA,CACA,QAAA,CACA,sCAAA,CAAA,8BAAgC,CAdhD,2BAmBY,UAAA,CACA,WAAA,CACA,iBAAA,CACA,MAAA,CACA,KAAA,CACA,+BAAA,CACA,YAAA,CACA,gBAAA,CACA,sBAAA,CACA,kBAAmB,CA5B/B,iCA+BgB,oBAAA,CACA,UAAA,CACA,wBAAmB,CAjCnC,iCAgDgB,UAAA,CACA,cAAA,CACA,YAAA,CACA,4BAA6B,CAnD7C,2CAyCgB,wBAAA,CAeA,qBAAA,CACA,aA5IM,CAmFtB,wFAqCgB,aAAA,CACA,uBAAA,CACA,YAAA,CACA,WAAA,CAEA,wBAAA,CACA,eAAA,CACA,oBAAA,CACA,eA9IJ,CAiGZ,6CAyCgB,wBAAA,CAoBA,wBAAA,CACA,UA/JJ,CAiGZ,mBAmEY,UAAA,CACA,WAAY,CApExB,WAyEQ,kBAAA,CACA,sBAAA,CACA,uBAAA,CACA,iBAAA,CACA,kBAAA,CAEA,YAAA,CACA,sBAAuB,CAhF/B,0BA8EQ,aAKkB,CAnF1B,aAuFY,oBAAA,CACA,kBAAA,CACA,oBA9JE,CAqEd,cA8FQ,UAhMK,CAkGb,gCAiGY,UA7LI,CC0FhB,gBACI,sBAAiB,CADrB,uBAIQ,oBAAA,CACA,gBAAkB,CAL1B,sBASQ,YAAA,CACA,cAAe,CAVvB,2BAaY,oBAAA,CACA,sBAAA,CACA,qBAAsB,CAflC,6BAoBY,aAAA,CACA,oBAAA,CACA,uBAAkB,CAtB9B,mCA0BY,4BAAA,CACA,UAAA,CACA,eA7FE,CAiEd,8BAgCY,mBAAoB,CChChC,kBACI,kBAAA,CACA,+BAAoB,CAFxB,2BAKQ,YAAA,CACA,WAAA,CACA,yBAAA,CACA,+BAxBW,CAgBnB,kCAWY,aAAA,CACA,uBAAA,CACA,iBAAkB,CAb9B,sCAegB,UAAA,CACA,aAAA,CACA,kBAAkB,CAjBlC,0CAqBY,UAAA,CACA,YAAA,CACA,iBAAA,CACA,WAAA,CACA,2BAAA,CACA,iBAAA,CACA,iBAAA,CACA,UAAA,CACA,oBAAe,CC7B3B,kBAEQ,kBAAA,CACA,aAAA,CACA,uBAAA,CACA,4BAAA,CACA,+BAAgC,CANxC,yBASY,wBAAyB,CATrC,mEAWgB,UA3GH,CAgGb,sBAiBQ,oBAAA,CACA,SAAA,CACA,kBAAA,CACA,eAAA,CACA,sBAAA,CACA,oBAAA,CACA,uBAAkB,CAvB1B,yBA2BQ,oBAAA,CACA,oBAAA,CACA,eAAgB,CA7BxB,yBAiCQ,WAAY,CCjCpB,uBAEQ,UAAA,CACA,eAAA,CACA,eAAA,CACA,UAAA,CACA,wBAAA,CACA,iBAAkB,CAP1B,0BAYQ,iBAAiB,CAZzB,uCAgBQ,kBAAoB","file":"video.10e4a7e1.chunk.css","sourcesContent":["@charset \"UTF-8\";\n/*\n * @ 文字颜色\n */\n/*\n * @ 文字大小\n */\n/*\n * @ 背景颜色\n */\n/*\n * @ 分割线颜色\n */\n/*\n * @ 边框颜色\n */\n/*\n * @ 标签颜色\n */\n.play .video {\n width: 100%;\n height: 215px;\n background-color: #000;\n position: relative; }\n .play .video .video-js {\n width: 100%;\n height: 100%; }\n .play .video .video-js .vjs-big-play-button {\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%); }\n .play .video .purchase-box {\n width: 100%;\n height: 100%;\n position: absolute;\n left: 0;\n top: 0;\n background-color: rgba(0, 0, 0, 0.8);\n display: flex;\n flex-flow: column;\n justify-content: center;\n align-items: center; }\n .play .video .purchase-box .hint {\n font-size: 14px;\n color: #fff;\n margin-bottom: 20px; }\n .play .video .purchase-box .btns {\n width: 100%;\n padding: 0 60px;\n display: flex;\n justify-content: space-around; }\n .play .video .purchase-box .purchase-class {\n display: block;\n -webkit-appearance: none;\n outline: none;\n border: none;\n background-color: transparent;\n border-radius: 5px;\n line-height: 30px;\n font-size: 13px;\n padding: 0 9px;\n background-color: #fff;\n color: #FF4000; }\n .play .video .purchase-box .purchase-episode {\n display: block;\n -webkit-appearance: none;\n outline: none;\n border: none;\n background-color: transparent;\n border-radius: 5px;\n line-height: 30px;\n font-size: 13px;\n padding: 0 9px;\n background-color: #FF4000;\n color: #fff; }\n .play .video video {\n width: 100%;\n height: 100%; }\n\n.play .tab {\n height: 44px;\n max-height: 44px;\n line-height: 44px;\n text-align: center;\n background: #F7F9FC;\n flex: 1 0 auto;\n display: flex;\n justify-content: center; }\n .play .tab > div {\n flex: 1 0 auto; }\n .play .tab a {\n display: inline-block;\n height: 44px;\n font-size: 16px; }\n\n.play .active {\n color: #09f; }\n .play .active .iconiconfront-74 {\n color: #555; }\n","@charset \"UTF-8\";\n/*\n * @ 文字颜色\n */\n/*\n * @ 文字大小\n */\n/*\n * @ 背景颜色\n */\n/*\n * @ 分割线颜色\n */\n/*\n * @ 边框颜色\n */\n/*\n * @ 标签颜色\n */\n.recommendation {\n padding-top: 20px; }\n .recommendation > .title {\n font-size: 16px;\n padding-left: 15px; }\n .recommendation .info {\n display: flex;\n flex-wrap: wrap; }\n .recommendation .info .des {\n font-size: 14px;\n line-height: 16px;\n align-self: flex-start; }\n .recommendation .info .price {\n color: #FF2121;\n font-size: 16px;\n margin-right: 14px; }\n .recommendation .info .stale-price {\n text-decoration: line-through;\n color: #999;\n font-size: 12px; }\n .recommendation .info .bottom {\n align-self: flex-end; }\n","@charset \"UTF-8\";\n/*\n * @ 文字颜色\n */\n/*\n * @ 文字大小\n */\n/*\n * @ 背景颜色\n */\n/*\n * @ 分割线颜色\n */\n/*\n * @ 边框颜色\n */\n/*\n * @ 标签颜色\n */\n.v-list-base-item {\n height: 127px;\n padding: 10px 10px 0; }\n .v-list-base-item .content {\n display: flex;\n height: 100%;\n padding-bottom: 10px;\n border-bottom: 1px solid #e7eaf1; }\n .v-list-base-item .content .cover {\n flex: 0 0 auto;\n margin-right: 16px;\n position: relative; }\n .v-list-base-item .content .cover img {\n width: 150px;\n height: 108px;\n border-radius: 3px; }\n .v-list-base-item .content .course-status {\n width: 100%;\n height: 24px;\n position: absolute;\n bottom: -1px;\n border-radius: 0 0 3px 3px;\n text-align: center;\n line-height: 24px;\n color: #fff;\n font-size: 13px; }\n","@charset \"UTF-8\";\n/*\n * @ 文字颜色\n */\n/*\n * @ 文字大小\n */\n/*\n * @ 背景颜色\n */\n/*\n * @ 分割线颜色\n */\n/*\n * @ 边框颜色\n */\n/*\n * @ 标签颜色\n */\n.video-catalog li {\n height: 44px;\n padding: 0 15px;\n line-height: 44px;\n border-top: 1px solid #E7EAF1;\n border-bottom: 1px solid #E7EAF1; }\n .video-catalog li.active {\n background-color: #F5FBFF; }\n .video-catalog li.active .title, .video-catalog li.active .duration {\n color: #09f; }\n\n.video-catalog .title {\n display: inline-block;\n width: 50%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n font-size: 14px;\n margin-right: 26px; }\n\n.video-catalog .duration {\n display: inline-block;\n font-size: 11px;\n overflow: hidden; }\n\n.video-catalog .iconfont {\n float: right; }\n","@charset \"UTF-8\";\n/*\n * @ 文字颜色\n */\n/*\n * @ 文字大小\n */\n/*\n * @ 背景颜色\n */\n/*\n * @ 分割线颜色\n */\n/*\n * @ 边框颜色\n */\n/*\n * @ 标签颜色\n */\n.datum-catalog .prompt {\n height: 30px;\n line-height: 30px;\n font-size: 12px;\n color: #333;\n background-color: #FFF4CE;\n text-align: center; }\n\n.datum-catalog .file-name {\n padding: 15px;\n padding-bottom: 0; }\n\n.datum-catalog .file-name:last-of-type {\n padding-bottom: 15px; }\n"]}
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
(window.webpackJsonp=window.webpackJsonp||[]).push([[0],{668:function(e,t,a){},669:function(e,t,a){},670:function(e,t,a){},671:function(e,t,a){},766:function(e,t,a){"use strict";a.r(t);var n=a(29),o=(a(27),a(9)),c=a.n(o),s=a(71),i=a(3),r=a(4),l=a(6),u=a(5),p=a(7),d=a(0),m=a.n(d),h=(a(668),a(669),a(670),a(16)),f=a.n(h),v=function(e){function t(){var e,a;Object(i.a)(this,t);for(var n=arguments.length,o=new Array(n),c=0;c<n;c++)o[c]=arguments[c];return(a=Object(l.a)(this,(e=Object(u.a)(t)).call.apply(e,[this].concat(o)))).clearInput=function(){a.props.onChange("")},a}return Object(p.a)(t,e),Object(r.a)(t,[{key:"render",value:function(){var e=this.props,t=e.type,a=e.placeholder;return m.a.createElement("div",{className:"custom-input-wrapper"},m.a.createElement("input",{type:t,className:f()("custom-input"),placeholder:a,onChange:this.props.onChange,value:this.props.value}),m.a.createElement("i",{className:f()("iconfont icondanseshixintubiao-3",{hide:0===this.props.value.length}),onClick:this.clearInput}))}}]),t}(d.Component);v.defaultProps={type:"text",placeholder:""};var C=v,g=function(e){function t(){var e,a;Object(i.a)(this,t);for(var n=arguments.length,o=new Array(n),c=0;c<n;c++)o[c]=arguments[c];return(a=Object(l.a)(this,(e=Object(u.a)(t)).call.apply(e,[this].concat(o)))).state={},a}return Object(p.a)(t,e),Object(r.a)(t,[{key:"render",value:function(){var e=this.props,t=e.onChange,a=e.redeemCode,n=e.exchange;return m.a.createElement("div",{className:"exchange-bar"},m.a.createElement(C,{placeholder:"\u8bf7\u8f93\u5165\u4f18\u60e0\u7801",onChange:t,value:a}),m.a.createElement("button",{className:f()({active:a&&a.length>0}),onClick:n},"\u5151\u6362"))}}]),t}(d.Component),b=(a(671),function(e){function t(){var e,a;Object(i.a)(this,t);for(var n=arguments.length,o=new Array(n),c=0;c<n;c++)o[c]=arguments[c];return(a=Object(l.a)(this,(e=Object(u.a)(t)).call.apply(e,[this].concat(o)))).pick=function(){var e=a.props,t=e.useCoupon;!e.invalid&&t&&t(a.props.id)},a.GoToUse=function(){a.props.useCoupon(a.props.id)},a}return Object(p.a)(t,e),Object(r.a)(t,[{key:"render",value:function(){var e=this.props,t=e.ctype,a=e.amount,n=e.format_expire_time,o=e.limit_course,c=e.invalid,s=e.course_title,i=e.id,r=e.selectedCouponId,l=e.showUseButton;return m.a.createElement("li",{className:"coupon",onClick:this.pick},m.a.createElement("div",{className:f()("coupon-info",c?"invalid":"coupon-type".concat(t))},m.a.createElement("p",{className:"type"},1===t?"\u4ee3\u91d1\u5238":"\u8bfe\u7a0b\u5238"),1===t?m.a.createElement("p",{className:"denomination"},a," ",m.a.createElement("span",null,"\u5143")):m.a.createElement("p",{className:"course-title"},s),m.a.createElement("p",{className:"expire"},"\u6709\u6548\u671f\u81f3\uff1a",n),r===i&&m.a.createElement("i",{className:f()("iconfont icondanseshixintubiao-5",{check:!c})}),m.a.createElement("ul",null,new Array(19).fill("a").map(function(e,t){return m.a.createElement("li",{key:t})}))),m.a.createElement("div",{className:"coupon-des"},m.a.createElement("span",{className:"limit"},0===o?"\u53ef\u7528\u4e8e\u5927\u4e8e\u4ee3\u91d1\u5238\u91d1\u989d\u7684\u8bfe\u7a0b":"\u4ec5\u9002\u7528\u4e8e\u300a".concat(s,"\u300b")),l&&m.a.createElement("button",{className:"use",onClick:this.GoToUse},"\u7acb\u5373\u4f7f\u7528")))}}]),t}(d.PureComponent)),y=a(1),E=a(54),j=a(37),O=a(18),_=function(e){function t(){var e,a;Object(i.a)(this,t);for(var n=arguments.length,o=new Array(n),r=0;r<n;r++)o[r]=arguments[r];return(a=Object(l.a)(this,(e=Object(u.a)(t)).call.apply(e,[this].concat(o)))).state={selectedCouponId:0,redeemCode:"",couponList:[],valid_coupons:[],invalid_coupons:[],courseId:Object(y.c)("id"),showUseButton:!1},a.handleChange=function(e){var t=e?e.target.value:"";a.setState({redeemCode:t})},a.exchange=function(){""!==a.state.redeemCode?y.d.post("".concat(y.a.home,"/m/coupon/exchange"),{code:a.state.redeemCode}).then(function(e){var t=e.data;if(200===t.code){var n=t.data;if(a.state.showUseButton)a.setState({couponList:[].concat(Object(s.a)(state.couponList),[n]),redeemCode:""});else{var o=t.data;2==o.ctype&&o.limit_course!=a.state.courseId?a.setState({invalid_coupons:[].concat(Object(s.a)(a.state.invalid_coupons),[o]),showUseButton:null}):a.setState({valid_coupons:[].concat(Object(s.a)(a.state.valid_coupons),[o]),redeemCode:""})}c.a.info("\u5151\u6362\u6210\u529f")}else c.a.info(t.msg)}):c.a.info("\u8bf7\u8f93\u5165\u5151\u6362\u7801")},a.getMyCoupons=function(){y.d.get("".concat(y.a.home,"/m/coupon/all")).then(function(e){var t=e.data;200===t.code?a.setState({couponList:Object(j.isEmpty)(t.data)?[]:t.data}):c.a.info(t.msg)})},a.getAllCoupons=function(){y.d.post("".concat(y.a.home,"/m/coupon/select"),{course_id:a.state.courseId}).then(function(e){var t=e.data;if(200===t.code){var n=t.data.inuse_coupon;a.setState({valid_coupons:n?[].concat(Object(s.a)(n),Object(s.a)(t.data.valid_coupons)):t.data.valid_coupons,invalid_coupons:t.data.invalid_coupons,selectedCouponId:n.length?n[0].id:0})}else c.a.info(t.msg)})},a.useCoupon=function(e){var t=a.props.history,n=a.state.couponList.find(function(t){return t.id===e});if(e)if(a.state.showUseButton)1===n.ctype?t.push("/classify"):t.push("/detail?id=".concat(n.limit_course));else{var o=a.state,s=o.courseId;o.selectedCouponId===e?y.d.post("".concat(y.a.home,"/m/coupon/cancel"),{course_id:s}).then(function(e){var t=e.data;200===t.code?a.setState({selectedCouponId:0}):c.a.info(t.msg)}):y.d.post("".concat(y.a.home,"/m/coupon/use"),{course_id:a.state.courseId,coupon_id:e}).then(function(t){var n=t&&t.data;200===n.code?(a.setState({selectedCouponId:e}),a.props.history.goBack()):c.a.info(n.msg)})}else c.a.info("\u672a\u77e5\u9519\u8bef"),location.reload()},a}return Object(p.a)(t,e),Object(r.a)(t,[{key:"componentDidMount",value:function(){var e=this.props,t=e.history,a=e.location,n=this.props.location.state;n&&n.from&&("/my"===n.from?(this.getMyCoupons(),this.setState({showUseButton:!0})):(this.state.courseId||(a.state&&a.state.from?t.replace(a.state.from):t.goBack()),this.getAllCoupons()))}},{key:"render",value:function(){var e=this.props.location.state,t=this.state,a=t.showUseButton,n=t.selectedCouponId;return m.a.createElement("div",{className:"use-coupon"},m.a.createElement(O.d,{title:"\u4f18\u60e0\u5238",arrow:!0}),m.a.createElement(g,{onChange:this.handleChange,exchange:this.exchange,redeemCode:this.state.redeemCode}),m.a.createElement("div",{className:"coupons-area"},m.a.createElement(w,{coupons:e&&e.from&&"/my"===e.from?this.state.couponList:this.state.valid_coupons,showUseButton:a,selectedCouponId:n,select:this.select,useCoupon:this.useCoupon}),this.state.invalid_coupons.length>0&&m.a.createElement(m.a.Fragment,null,m.a.createElement("div",{className:"invalid-title"},"- \u4e0d\u53ef\u4f7f\u7528\u7684\u4f18\u60e0\u5238 -"),m.a.createElement(w,{coupons:this.state.invalid_coupons,selectedCouponId:n,select:this.select,purpose:"use",invalid:"invalid"}))))}}]),t}(d.PureComponent);function w(e){var t=e.coupons,a=Object(n.a)(e,["coupons"]);return 0===t.length?m.a.createElement("div",{className:"empty"},m.a.createElement("p",null,"\u6682\u65e0\u53ef\u4f7f\u7528\u7684\u4f18\u60e0\u5238")):m.a.createElement("ul",null,t.map(function(e){return m.a.createElement(b,Object.assign({key:e.id},e,{id:e.id},a))}))}t.default=Object(E.a)(_)}}]);
//# sourceMappingURL=coupons.6a94a878.chunk.js.map
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
(window.webpackJsonp=window.webpackJsonp||[]).push([[2],{755:function(e,a,t){},761:function(e,a,t){"use strict";t.r(a);t(27);var n=t(9),c=t.n(n),r=t(3),s=t(4),m=t(6),i=t(5),o=t(7),l=(t(161),t(82)),d=t.n(l),u=t(0),p=t.n(u),E=(t(755),t(18)),f=t(102),N=t(1),b=t(13),v=d.a.alert,_=function(e){function a(e){var t;return Object(r.a)(this,a),(t=Object(m.a)(this,Object(i.a)(a).call(this,e))).getList=function(){N.d.get("".concat(N.a.home,"/m/my/orders/1/1")).then(function(e){200===e.data.code?t.setState({data:e.data.data}):c.a.info(e.data.msg,2)})},t.cancel=function(e){v("\u786e\u8ba4\u53d6\u6d88\u8ba2\u5355\uff1f","\u8ba2\u5355\u53d6\u6d88\u540e\uff0c\u4f18\u60e0\u5238\u548c\u62b5\u6263\u7684\u4f59\u989d\u4f1a\u8fd4\u56de\u5230\u60a8\u7684\u8d26\u6237\u3002",[{text:"\u53d6\u6d88",onPress:function(){return console.log("cancel")}},{text:"\u786e\u8ba4",onPress:function(){var a={order_id:e};N.d.post("".concat(N.a.home,"/m/cancel_order"),a).then(function(e){200===e.data.code?t.getList():c.a.info(e.data.msg,2)})}}])},t.state={data:[]},t}return Object(o.a)(a,e),Object(s.a)(a,[{key:"componentDidMount",value:function(){this.getList()}},{key:"render",value:function(){var e=this;return p.a.createElement("div",{className:"myorders-box"},p.a.createElement(E.d,{title:"\u6211\u7684\u8ba2\u5355",arrow:!0,cart:!1}),this.state.data&&this.state.data.length>0?this.state.data.map(function(a,t){return p.a.createElement("div",{className:"order-body",key:t},p.a.createElement(h,{item:a}),a.course&&a.course.length>0&&a.course.map(function(e,a){var t=p.a.createElement("div",{className:"order-info"},p.a.createElement("p",{className:"order-title text-overflow-one"},p.a.createElement(b.b,{to:"/detail?id=".concat(e.course_id)},e.course_title)),p.a.createElement("p",{className:"order-content text-overflow-2"},e.description),p.a.createElement("p",{className:"order-des"},p.a.createElement("span",{className:"order-newprice"},"\xa5",e.pay_amount),p.a.createElement("span",{className:"order-price"},"\xa5",e.price0)));return p.a.createElement("div",{className:"order-wrap",key:a},p.a.createElement(f.a,{info:t,src:e.image_name,id:e.course_id}))}),p.a.createElement(g,{item:a,cancel:e.cancel}))}):p.a.createElement("div",{className:"cart-tip"},p.a.createElement("p",{className:"cart-mess"},"\u60a8\u8fd8\u6ca1\u6709\u8ba2\u5355\u54e6\uff0c\u5feb\u53bb\u901b\u901b\u5427~"),p.a.createElement(b.b,{to:"/classify"},"\u53bb\u901b\u901b")))}}]),a}(u.Component);function h(e){var a;return a="0"===e.item.pay_time&&0===e.item.member_num?p.a.createElement("span",{className:"oid-status"},"\u7b49\u5f85\u652f\u4ed8"):e.item.member_num===e.item.pdd_info.length&&0!==e.item.member_num?p.a.createElement("span",{className:"oid-success"},"\u62fc\u56e2\u6210\u529f"):p.a.createElement("span",{className:"oid-success"},"\u652f\u4ed8\u6210\u529f"),p.a.createElement("div",{className:"order-head"},p.a.createElement("span",{className:"oid-num"},"\u8ba2\u5355\u53f7\uff1a",e.item.oid),a)}function g(e){return p.a.createElement("div",{className:"order-btm"},p.a.createElement("div",{className:"price-info"},p.a.createElement("p",null,p.a.createElement("span",{className:"payable"},"\u5e94\u4ed8\uff1a"),p.a.createElement("span",{className:"price"},"\xa5",e.item.pay_amount)),p.a.createElement("p",null,p.a.createElement("span",{className:"payable"},"\u5df2\u4f18\u60e0\uff1a"),p.a.createElement("span",{className:"price"},"\xa5",e.item.coupon_amount))),"0"===e.item.pay_time&&0===e.item.member_num&&p.a.createElement("div",{className:"btm-right"},p.a.createElement("button",{className:"cancel",onClick:function(a){return e.cancel(e.item.oid)}},"\u53d6\u6d88\u8ba2\u5355"),p.a.createElement(b.b,{to:"/payorder?oid=".concat(e.item.oid)},"\u53bb\u652f\u4ed8")),0!==e.item.member_num&&p.a.createElement("div",{className:"btm-right"},p.a.createElement("div",{className:"group"},e.item.pdd_info&&e.item.pdd_info.length>0&&e.item.pdd_info.map(function(e,a){return p.a.createElement("img",{src:""===e.user_avatar?"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/tinypng-spreadtrain8/ellipsis.png":e.user_avatar,key:a,alt:""})}))))}a.default=_}}]);
//# sourceMappingURL=myorders.9736dcd8.chunk.js.map
\ No newline at end of file
(window.webpackJsonp=window.webpackJsonp||[]).push([[3],{756:function(e,t,a){},762:function(e,t,a){"use strict";a.r(t);a(27);var c=a(9),n=a.n(c),s=a(3),i=a(4),r=a(6),o=a(5),l=a(7),d=a(0),m=a.n(d),u=(a(756),a(18)),p=a(1),f=a(13),h=a(19),b=function(e){function t(e){var a;return Object(s.a)(this,t),(a=Object(r.a)(this,Object(o.a)(t).call(this,e))).getList=function(){p.d.get("".concat(p.a.home,"/m/my/courses")).then(function(e){200===e.data.code?a.setState({data:e.data.data}):n.a.info(e.data.msg,2)})},a.state={data:[]},a}return Object(l.a)(t,e),Object(i.a)(t,[{key:"componentDidMount",value:function(){this.getList()}},{key:"render",value:function(){var e=this.props.user,t=e&&e.data&&e.data.uid;return m.a.createElement("div",{className:"purchased-box"},m.a.createElement(u.d,{title:"\u5df2\u8d2d\u8bfe\u7a0b",arrow:!0,cart:!1}),this.state.data&&this.state.data.length>0?m.a.createElement("div",{className:"purchased-body"},m.a.createElement("div",{className:"tip"},"\u52a0\u7fa4\u8bf7\u5907\u6ce8\u60a8\u7684\u5b66\u53f7\uff1a",t),this.state.data.map(function(e,t){var a=m.a.createElement("div",{className:"info"},m.a.createElement("p",{className:"title"},m.a.createElement(f.b,{to:"/detail?id=".concat(e.course_id)},e.course_title)),m.a.createElement("p",{className:"contact text-overflow-2"},e.simpledescription),m.a.createElement("div",{className:"des"},"QQ\u7fa4\uff1a",e.course_qq));return m.a.createElement(u.g,{key:t,img:e.image_name,id:e.course_id,info:a})})):m.a.createElement("div",{className:"cart-tip"},m.a.createElement("p",{className:"cart-mess"},"\u60a8\u8fd8\u6ca1\u6709\u8bfe\u7a0b\u54e6\uff0c\u5feb\u53bb\u901b\u901b\u5427~"),m.a.createElement(f.b,{to:"/classify"},"\u53bb\u901b\u901b")))}}]),t}(d.Component);t.default=Object(h.b)(function(e){return{user:e.user}},null)(b)}}]);
//# sourceMappingURL=purchased.380e692a.chunk.js.map
\ No newline at end of file
{"version":3,"sources":["components/purchased/index.js"],"names":["Purchased","props","_this","Object","_Users_zhanghaozhe_server_mr_julyedu_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_2__","this","_Users_zhanghaozhe_server_mr_julyedu_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__","_Users_zhanghaozhe_server_mr_julyedu_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__","call","getList","http","get","concat","api","home","then","res","data","code","setState","antd_mobile_lib_toast__WEBPACK_IMPORTED_MODULE_1___default","a","info","msg","state","user","uid","react__WEBPACK_IMPORTED_MODULE_7___default","createElement","className","_common__WEBPACK_IMPORTED_MODULE_9__","title","arrow","cart","length","map","item","index","Info","react_router_dom__WEBPACK_IMPORTED_MODULE_11__","to","course_id","course_title","simpledescription","course_qq","key","img","image_name","id","Component","connect"],"mappings":"4OASMA,cACF,SAAAA,EAAYC,GAAO,IAAAC,EAAA,OAAAC,OAAAC,EAAA,EAAAD,CAAAE,KAAAL,IACfE,EAAAC,OAAAG,EAAA,EAAAH,CAAAE,KAAAF,OAAAI,EAAA,EAAAJ,CAAAH,GAAAQ,KAAAH,KAAMJ,KAWVQ,QAAU,WACNC,IAAKC,IAAL,GAAAC,OAAYC,IAAIC,KAAhB,kBAAsCC,KAAK,SAACC,GAClB,MAAlBA,EAAIC,KAAKC,KACThB,EAAKiB,SAAS,CACVF,KAAMD,EAAIC,KAAKA,OAGnBG,EAAAC,EAAMC,KAAKN,EAAIC,KAAKM,IAAK,MAjBjCrB,EAAKsB,MAAQ,CACTP,KAAM,IAHKf,mFAQfG,KAAKI,2CAiBA,IACEgB,EAAQpB,KAAKJ,MAAbwB,KACDC,EAAMD,GAAQA,EAAKR,MAAQQ,EAAKR,KAAKS,IAC3C,OACIC,EAAAN,EAAAO,cAAA,OAAKC,UAAU,iBACXF,EAAAN,EAAAO,cAACE,EAAA,EAAD,CAAWC,MAAM,2BAAOC,OAAO,EAAMC,MAAM,IAEvC5B,KAAKmB,MAAMP,MAAQZ,KAAKmB,MAAMP,KAAKiB,OAAS,EACxCP,EAAAN,EAAAO,cAAA,OAAKC,UAAU,kBACXF,EAAAN,EAAAO,cAAA,OAAKC,UAAU,OAAf,+DAAgCH,GAE5BrB,KAAKmB,MAAMP,KAAKkB,IAAI,SAACC,EAAMC,GACvB,IAAMC,EACFX,EAAAN,EAAAO,cAAA,OAAKC,UAAU,QACXF,EAAAN,EAAAO,cAAA,KAAGC,UAAU,SACTF,EAAAN,EAAAO,cAACW,EAAA,EAAD,CAAMC,GAAE,cAAA5B,OAAgBwB,EAAKK,YACxBL,EAAKM,eAGdf,EAAAN,EAAAO,cAAA,KAAGC,UAAU,2BAA2BO,EAAKO,mBAC7ChB,EAAAN,EAAAO,cAAA,OAAKC,UAAU,OAAf,iBACSO,EAAKQ,YAItB,OACIjB,EAAAN,EAAAO,cAACE,EAAA,EAAD,CAAOe,IAAKR,EAAOS,IAAKV,EAAKW,WACtBC,GAAIZ,EAAKK,UACTnB,KAAMgB,OAK3BX,EAAAN,EAAAO,cAAA,OAAKC,UAAU,YACbF,EAAAN,EAAAO,cAAA,KAAGC,UAAU,aAAb,mFACAF,EAAAN,EAAAO,cAACW,EAAA,EAAD,CAAMC,GAAG,aAAT,+BA7DJS,aAsETC,sBACX,SAAA1B,GAAK,MAAK,CAACC,KAAMD,EAAMC,OACvB,KAFWyB,CAGblD","file":"static/js/purchased.380e692a.chunk.js","sourcesContent":["import React, {Component} from 'react';\nimport './index.scss';\nimport {HeaderBar} from '../../common'\nimport {VList} from '../../common'\nimport {http, api} from \"@/utils\";\nimport {Link} from 'react-router-dom'\nimport {Toast} from 'antd-mobile'\nimport {connect} from \"react-redux\"\n\nclass Purchased extends Component {\n constructor(props) {\n super(props)\n this.state = {\n data: []\n }\n }\n\n componentDidMount() {\n this.getList()\n }\n\n // 获取订单\n getList = () => {\n http.get(`${api.home}/m/my/courses`,).then((res) => {\n if (res.data.code === 200) {\n this.setState({\n data: res.data.data\n })\n } else {\n Toast.info(res.data.msg, 2);\n }\n })\n }\n\n\n render() {\n const {user} = this.props\n const uid = user && user.data && user.data.uid\n return (\n <div className='purchased-box'>\n <HeaderBar title='已购课程' arrow={true} cart={false}></HeaderBar>\n {\n this.state.data && this.state.data.length > 0 ?\n <div className=\"purchased-body\">\n <div className='tip'>加群请备注您的学号:{uid}</div>\n {\n this.state.data.map((item, index) => {\n const Info = (\n <div className=\"info\">\n <p className='title'>\n <Link to={`/detail?id=${item.course_id}`}>\n {item.course_title}\n </Link>\n </p>\n <p className='contact text-overflow-2'>{item.simpledescription}</p>\n <div className='des'>\n QQ群:{item.course_qq}\n </div>\n </div>\n )\n return (\n <VList key={index} img={item.image_name}\n id={item.course_id}\n info={Info}></VList>\n )\n })\n }\n </div>\n : <div className=\"cart-tip\">\n <p className='cart-mess'>您还没有课程哦,快去逛逛吧~</p>\n <Link to='/classify'>去逛逛</Link>\n </div>\n }\n\n </div>\n )\n }\n}\n\nexport default connect(\n state => ({user: state.user}),\n null\n)(Purchased)\n"],"sourceRoot":""}
\ No newline at end of file
!function(e){function t(t){for(var n,o,i=t[0],c=t[1],s=t[2],l=0,d=[];l<i.length;l++)o=i[l],a[o]&&d.push(a[o][0]),a[o]=0;for(n in c)Object.prototype.hasOwnProperty.call(c,n)&&(e[n]=c[n]);for(f&&f(t);d.length;)d.shift()();return u.push.apply(u,s||[]),r()}function r(){for(var e,t=0;t<u.length;t++){for(var r=u[t],n=!0,o=1;o<r.length;o++){var c=r[o];0!==a[c]&&(n=!1)}n&&(u.splice(t--,1),e=i(i.s=r[0]))}return e}var n={},o={4:0},a={4:0},u=[];function i(t){if(n[t])return n[t].exports;var r=n[t]={i:t,l:!1,exports:{}};return e[t].call(r.exports,r,r.exports,i),r.l=!0,r.exports}i.e=function(e){var t=[];o[e]?t.push(o[e]):0!==o[e]&&{0:1,2:1,3:1,5:1,6:1,7:1,8:1,10:1}[e]&&t.push(o[e]=new Promise(function(t,r){for(var n="static/css/"+({0:"coupons",2:"myorders",3:"purchased",5:"shareposter",6:"study",7:"togroup",8:"video"}[e]||e)+"."+{0:"9ece7350",2:"3ab93c8e",3:"72c55bd6",5:"82081d02",6:"586bcabb",7:"f8580590",8:"10e4a7e1",10:"1597b3e9",11:"31d6cfe0"}[e]+".chunk.css",a=i.p+n,u=document.getElementsByTagName("link"),c=0;c<u.length;c++){var s=(f=u[c]).getAttribute("data-href")||f.getAttribute("href");if("stylesheet"===f.rel&&(s===n||s===a))return t()}var l=document.getElementsByTagName("style");for(c=0;c<l.length;c++){var f;if((s=(f=l[c]).getAttribute("data-href"))===n||s===a)return t()}var d=document.createElement("link");d.rel="stylesheet",d.type="text/css",d.onload=t,d.onerror=function(t){var n=t&&t.target&&t.target.src||a,u=new Error("Loading CSS chunk "+e+" failed.\n("+n+")");u.request=n,delete o[e],d.parentNode.removeChild(d),r(u)},d.href=a,document.getElementsByTagName("head")[0].appendChild(d)}).then(function(){o[e]=0}));var r=a[e];if(0!==r)if(r)t.push(r[2]);else{var n=new Promise(function(t,n){r=a[e]=[t,n]});t.push(r[2]=n);var u,c=document.createElement("script");c.charset="utf-8",c.timeout=120,i.nc&&c.setAttribute("nonce",i.nc),c.src=function(e){return i.p+"static/js/"+({0:"coupons",2:"myorders",3:"purchased",5:"shareposter",6:"study",7:"togroup",8:"video"}[e]||e)+"."+{0:"6a94a878",2:"9736dcd8",3:"380e692a",5:"5e83848f",6:"becfeee6",7:"6905e23b",8:"1b371a9a",10:"38fa9101",11:"a116d384"}[e]+".chunk.js"}(e),u=function(t){c.onerror=c.onload=null,clearTimeout(s);var r=a[e];if(0!==r){if(r){var n=t&&("load"===t.type?"missing":t.type),o=t&&t.target&&t.target.src,u=new Error("Loading chunk "+e+" failed.\n("+n+": "+o+")");u.type=n,u.request=o,r[1](u)}a[e]=void 0}};var s=setTimeout(function(){u({type:"timeout",target:c})},12e4);c.onerror=c.onload=u,document.head.appendChild(c)}return Promise.all(t)},i.m=e,i.c=n,i.d=function(e,t,r){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},i.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(i.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)i.d(r,n,function(t){return e[t]}.bind(null,n));return r},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="/",i.oe=function(e){throw console.error(e),e};var c=window.webpackJsonp=window.webpackJsonp||[],s=c.push.bind(c);c.push=t,c=c.slice();for(var l=0;l<c.length;l++)t(c[l]);var f=s;r()}([]);
//# sourceMappingURL=runtime~main.a0b841fe.js.map
\ No newline at end of file
(window.webpackJsonp=window.webpackJsonp||[]).push([[5],{733:function(e,t,a){},760:function(e,t,a){"use strict";a.r(t);a(27);var n=a(9),i=a.n(n),s=a(3),r=a(4),c=a(6),o=a(5),l=a(7),d=a(89),m=a(0),g=a.n(m),u=(a(733),a(18)),h=a(1),v=a(734),f=a.n(v),p=function(e){function t(e){var a;return Object(s.a)(this,t),(a=Object(c.a)(this,Object(o.a)(t).call(this,e))).initCanvas=function(e,t){var n=Object(d.a)(Object(d.a)(a)),i=e[t].poster,s=450*e[t].header_position_x,r=800*e[t].header_position_y,c=(e[t].qr_code_x,e[t].qr_code_y,e[t].qr_code_width,e[t].qr_code_height,"/detail/".concat(Object(h.c)("courseId"),"/").concat(Object(h.c)("dist_code")),document.getElementById("canvas")),o=c.getContext("2d");n.getBase64(i).then(function(a){var i=new Image;i.src=a;var c=document.getElementById("qrcode"),l=navigator.userAgent.toLowerCase();l.indexOf("Android")>-1||l.indexOf("Adr"),l.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/);/(iPhone|iPad|iPod|iOS)/i.test(navigator.userAgent)?c=document.getElementById("qrcode"):/(Android)/i.test(navigator.userAgent)&&(c=document.getElementById("qrcode")),i.setAttribute("crossOrigin","anonymous"),i.onload=function(){o.drawImage(i,0,0,450,800),o.drawImage(c,320,685,100,100),o.fillStyle=e[t].username_color,o.font="16px serif",o.fillText("@"+n.name,s+50+20,r+25),o.font="14px serif",o.fillText("\u6b63\u5728\u5b66\u4e60\u8be5\u8bfe\u7a0b",s+50+20,r+25+20),o.restore()}}).then(function(){n.getBase64(n.state.imgUrl).then(function(e){var t=new Image;t.src=e,t.setAttribute("crossOrigin","anonymous"),t.setAttribute("border-Radius","50%"),t.onload=function(){n.imgPosition(o,t,s,r,24),o.drawImage(t,s,r,48,48),o.restore(),n.setState({billSrc:n.convertCanvasToImage(c)})}})})},a.children=function(e,t){var a=e.childNodes,n=[];if(/MSIE(6|7|8)/.test(navigator.userAgent))for(var i=0;i<a.length;i++){var s=a[i];1===s.nodeType&&(n[n.length]=s)}else n=Array.prototype.slice.call(e.children);if("string"===typeof t)for(var r=0;r<n.length;r++)(e=n[r]).nodeName.toLowerCase()!==t.toLowerCase()&&(n.splice(r,1),r--);return n},a.imgPosition=function(e,t,a,n,i){e.save();var s=a+i,r=n+i;e.beginPath(),e.arc(s,r,i,0,2*Math.PI),e.clip()},a.getBase64Image=function(e){var t=document.createElement("canvas");t.width=e.width,t.height=e.height,t.getContext("2d").drawImage(e,0,0,e.width,e.height);var a=e.src.substring(e.src.lastIndexOf(".")+1).toLowerCase();return t.toDataURL("image/"+a)},a.convertCanvasToImage=function(e){var t=new Image;return t.src=e.toDataURL("image/png"),t},a.squareClick=function(e){a.setState({smallactive:e}),a.initCanvas(a.state.bgImage,e)},a.state={codeSrc:"",billSrc:"",imgUrl:"",smallListImg:[],smallactive:0,distPrice:"",name:"",bgImage:[]},a}return Object(l.a)(t,e),Object(r.a)(t,[{key:"componentDidMount",value:function(){var e=this;this.getCodeWe(),h.d.get("".concat(h.a.home,"/m/dist/posters/").concat(Object(h.c)("courseId"),"/").concat(Object(h.c)("uid"))).then(function(t){200===t.data.code?(e.setState({imgUrl:t.data.data.avatar,smallListImg:t.data.data.list,distPrice:t.data.data.dist_course,bgImage:t.data.data.list,name:t.data.data.username}),e.initCanvas(e.state.bgImage,0)):i.a.info(t.data.msg,2)})}},{key:"getCodeWe",value:function(){var e=this,t="/detail/".concat(Object(h.c)("courseId"),"/").concat(Object(h.c)("dist_code"));return new Promise(function(a){f.a.toDataURL(t,{},function(t,a){e.setState({codeSrc:a})}),a()})}},{key:"getBase64",value:function(e){var t=this;return new Promise(function(a){var n=null,i=new Image,s=+new Date;i.setAttribute("crossOrigin","anonymous"),i.src=e+"?"+s,i.onload=function(){n=t.getBase64Image(i),a(n)},i.onerror=function(){var a=+new Date;t.getBase64(e+"?"+a)}})}},{key:"render",value:function(){var e=this;return g.a.createElement("div",{className:"share-poster"},g.a.createElement(u.d,{title:"\u751f\u6210\u4e13\u5c5e\u6d77\u62a5",arrow:!0,cart:!1}),g.a.createElement("div",{className:"total-container"},g.a.createElement("div",{className:"placard-img-container",id:"imgWrapper"},g.a.createElement("img",{src:this.state.billSrc.src,alt:""})),g.a.createElement("img",{src:this.state.codeSrc,alt:"",id:"qrcode",className:"placard-code"}),g.a.createElement("canvas",{id:"canvas",width:"450",height:"800",className:""===this.state.billSrc?"":"hide"})),g.a.createElement("div",{className:"placard-desc"},g.a.createElement("span",{className:"placard-sharetxt"},"\u957f\u6309\u4fdd\u5b58\u6d77\u62a5\u5206\u4eab\u7ed9\u597d\u53cb\uff0c\u6bcf\u6709\u4e00\u4eba\u901a\u8fc7\u60a8\u7684\u5206\u4eab\u8d2d\u4e70\u8be5\u8bfe\u7a0b\uff0c\u60a8\u53ef\u4ee5",0===this.state.distPrice.count_type&&g.a.createElement("span",{className:"placard-price"},"\u83b7\u5f97",this.state.distPrice.first_level_tip,"\u5143\u7684\u4f63\u91d1\u5956\u52b1\u3002"),1===this.state.distPrice.count_type&&g.a.createElement("span",{className:"placard-price"},"\u83b7\u5f97\u6210\u4ea4\u91d1\u989d\u7684",this.state.distPrice.first_level_scale,"%\u4f5c\u4e3a\u4f63\u91d1\u5956\u52b1\u3002"))),g.a.createElement("div",{className:"placard-swiper"},g.a.createElement("ul",{className:"placard-list"},this.state.smallListImg&&this.state.smallListImg.length>0&&this.state.smallListImg.map(function(t,a){return g.a.createElement("li",{onClick:e.squareClick.bind(e,a),key:a,className:e.state.smallactive===a?"active":""},g.a.createElement("img",{src:t.square,alt:""}))}))))}}]),t}(m.Component);t.default=p}}]);
//# sourceMappingURL=shareposter.5e83848f.chunk.js.map
\ No newline at end of file
(window.webpackJsonp=window.webpackJsonp||[]).push([[7],{757:function(e,a,t){},763:function(e,a,t){"use strict";t.r(a);var c=t(3),s=t(4),n=t(6),m=t(5),l=t(7),i=t(0),r=t.n(i),o=(t(757),t(18)),d=(t(1),t(19),t(13)),p=function(e){function a(e){var t;return Object(c.a)(this,a),(t=Object(n.a)(this,Object(m.a)(a).call(this,e))).state={data:{course_id:"140",course_title:"\u8bfe\u7a0b\u6807\u9898\u8bfe\u7a0b\u6807\u9898\u8bfe\u7a0b\u6807\u9898\u8bfe\u7a0b\u6807\u9898\u8bfe\u7a0b\u6807\u9898\u8bfe\u7a0b\u6807\u9898\u8bfe\u7a0b\u6807\u9898\u8bfe\u7a0b\u6807\u9898",simpledescription:"\u8bfe\u7a0b\u6807\u9898\u8bfe\u7a0b\u6807\u9898\u8bfe\u7a0b\u6807\u9898\u8bfe\u7a0b\u6807\u9898\u8bfe\u7a0b\u6807\u9898\u8bfe\u7a0b\u6807\u9898\u8bfe\u7a0b\u6807\u9898\u8bfe\u7a0b\u6807\u9898\u8bfe\u7a0b\u6807\u9898\u8bfe\u7a0b\u6807\u9898\u8bfe\u7a0b\u6807\u9898\u8bfe\u7a0b\u6807\u9898\u8bfe\u7a0b\u6807\u9898\u8bfe\u7a0b\u6807\u9898\u8bfe\u7a0b\u6807\u9898\u8bfe\u7a0b\u6807\u9898",image_name:"https://julyedu-img-public.oss-cn-beijing.aliyuncs.com/Public/Image/6479fe123a.jpg",price0:"140",price1:"140",success:!1,my:0}},t}return Object(l.a)(a,e),Object(s.a)(a,[{key:"render",value:function(){var e=r.a.createElement("div",{className:"info"},r.a.createElement("p",{className:"title"},r.a.createElement(d.b,{to:"/detail?id=".concat(this.state.data.course_id)},this.state.data.course_title)),r.a.createElement("p",{className:"contact text-overflow-2"},this.state.data.simpledescription),r.a.createElement("div",{className:"des"},r.a.createElement("p",{className:"course-price"},r.a.createElement("span",{className:"new"},"\xa5",this.state.data.price1),r.a.createElement("span",{className:"old"},"\xa5",this.state.data.price0))));return r.a.createElement("div",{className:"to-group-box"},r.a.createElement(o.d,{title:"\u62fc\u56e2",arrow:!0,cart:!1}),r.a.createElement(o.g,{img:this.state.data.image_name,id:this.state.data.course_id,info:e}),r.a.createElement(u,{data:this.state.data}),r.a.createElement("div",{className:"group-course"},r.a.createElement("div",{className:"top-title"},r.a.createElement("span",null,"\u672c\u5468\u7279\u60e0"),r.a.createElement(d.b,{to:"/preferential",className:"more"},"\u66f4\u591a",r.a.createElement("i",{className:"iconfont iconiconfront-70"}))),r.a.createElement(o.g,{img:this.state.data.image_name,id:this.state.data.course_id,info:e})))}}]),a}(i.Component);function u(e){var a,t,c;return console.log(e),0===e.data.my?(a=r.a.createElement("p",{className:"tip"},"\u62fc\u56e2\u7701500\u5143"),t=r.a.createElement(d.b,{to:"/",className:"group-btn"},"\u9080\u8bf7\u597d\u53cb\u53c2\u56e2 23\uff1a23\uff1a23 \u540e\u7ed3\u675f"),c=r.a.createElement("p",{className:"dec"},"\u5206\u4eab\u52303\u4e2a\u7fa4\u540e\uff0c\u6210\u56e2\u7387\u9ad8\u8fbe98%")):(a=r.a.createElement("p",{className:"tip"},"\u62fc\u56e2\u7701500\u5143"),t=r.a.createElement(d.b,{to:"/",className:"group-btn"},"\u4e00\u952e\u53c2\u56e2")),e.data.success&&(a=r.a.createElement("p",{className:"success"},"\u62fc\u56e2\u6210\u529f"),t=r.a.createElement(d.b,{to:"/play",className:"tostudy"},"\u53bb\u5b66\u4e60")),r.a.createElement("div",{className:"gorup-content"},a,r.a.createElement("img",{className:"imgname",src:e.data.image_name,alt:""}),r.a.createElement("img",{className:"imgname",src:e.data.image_name,alt:""}),r.a.createElement("img",{className:"imgname",src:e.data.image_name,alt:""}),t,c,!e.data.success&&r.a.createElement("div",{className:"group-dec"},r.a.createElement("span",null,r.a.createElement("i",{className:"iconfont iconiconfront-1"}),"\xb7\u597d\u53cb\u53c2\u56e2 \xb7\u4eba\u6ee1\u6210\u4ea4 \xb7\u4eba\u4e0d\u6ee1\u9000\u6b3e"),r.a.createElement("span",{className:"allNum"},"\u7d2f\u8ba1856\u4eba\u6210\u56e2")))}a.default=p}}]);
//# sourceMappingURL=togroup.6905e23b.chunk.js.map
\ No newline at end of file
{"version":3,"sources":["components/detail/group/togroup.js"],"names":["ToGroup","props","_this","Object","_Users_zhanghaozhe_server_mr_julyedu_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__","this","_Users_zhanghaozhe_server_mr_julyedu_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__","_Users_zhanghaozhe_server_mr_julyedu_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__","call","state","data","course_id","course_title","simpledescription","image_name","price0","price1","success","my","Info","react__WEBPACK_IMPORTED_MODULE_5___default","a","createElement","className","react_router_dom__WEBPACK_IMPORTED_MODULE_10__","to","concat","_common__WEBPACK_IMPORTED_MODULE_7__","title","arrow","cart","img","id","info","GorupContent","Component","tip","btn","dec","console","log","src","alt"],"mappings":"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","file":"static/js/togroup.6905e23b.chunk.js","sourcesContent":["import React, {Component} from 'react'\nimport './togroup.scss'\nimport {HeaderBar} from '../../../common'\nimport {VList} from '../../../common'\n\nimport {getParam} from \"@/utils\"\nimport {connect} from \"react-redux\"\nimport {Link} from \"react-router-dom\"\n\n\nclass ToGroup extends Component {\n constructor(props) {\n super(props)\n this.state = {\n data: {\n 'course_id': '140',\n 'course_title': '课程标题课程标题课程标题课程标题课程标题课程标题课程标题课程标题',\n 'simpledescription': '课程标题课程标题课程标题课程标题课程标题课程标题课程标题课程标题课程标题课程标题课程标题课程标题课程标题课程标题课程标题课程标题',\n 'image_name': 'https://julyedu-img-public.oss-cn-beijing.aliyuncs.com/Public/Image/6479fe123a.jpg',\n 'price0': '140',\n 'price1': '140',\n 'success': false, // 拼团成功\n 'my': 0, // 0 自己发起的邀请好友 1 别人发起的,参别人的团\n }\n }\n }\n\n render() {\n const Info = (\n <div className=\"info\">\n <p className='title'>\n <Link to={`/detail?id=${this.state.data.course_id}`}>\n {this.state.data.course_title}\n </Link>\n </p>\n <p className='contact text-overflow-2'>{this.state.data.simpledescription}</p>\n <div className='des'>\n <p className=\"course-price\">\n <span className=\"new\">¥{this.state.data.price1}</span>\n <span className=\"old\">¥{this.state.data.price0}</span>\n </p>\n </div>\n </div>\n )\n return (\n <div className='to-group-box'>\n <HeaderBar title='拼团' arrow={true} cart={false}></HeaderBar>\n <VList img={this.state.data.image_name} id={this.state.data.course_id} info={Info}></VList>\n\n <GorupContent data={this.state.data}/>\n\n\n <div className=\"group-course\">\n <div className=\"top-title\">\n <span>本周特惠</span>\n <Link to={`/preferential`} className='more'>更多<i className='iconfont iconiconfront-70'></i></Link>\n </div>\n <VList img={this.state.data.image_name} id={this.state.data.course_id} info={Info}></VList>\n </div>\n </div>\n )\n }\n}\n\nfunction GorupContent(props) {\n console.log(props)\n let tip, btn, dec\n if (props.data.my === 0) {\n tip = <p className='tip'>拼团省500元</p>\n btn = <Link to={`/`} className='group-btn'>邀请好友参团 23:23:23 后结束</Link>\n dec = <p className='dec'>分享到3个群后,成团率高达98%</p>\n\n } else {\n tip = <p className='tip'>拼团省500元</p>\n btn = <Link to={`/`} className='group-btn'>一键参团</Link>\n }\n if (props.data.success) {\n tip = <p className='success'>拼团成功</p>\n btn = <Link to={`/play`} className='tostudy'>去学习</Link>\n }\n return (\n <div className='gorup-content'>\n {tip}\n <img className='imgname' src={props.data.image_name} alt=\"\"/>\n <img className='imgname' src={props.data.image_name} alt=\"\"/>\n <img className='imgname' src={props.data.image_name} alt=\"\"/>\n {btn}\n {dec}\n {\n !props.data.success &&\n <div className=\"group-dec\">\n <span>\n <i className='iconfont iconiconfront-1'></i>\n ·好友参团 ·人满成交 ·人不满退款\n </span>\n <span className='allNum'>累计856人成团</span>\n </div>\n }\n </div>\n )\n}\n\nexport default ToGroup\n"],"sourceRoot":""}
\ No newline at end of file
(window.webpackJsonp=window.webpackJsonp||[]).push([[8],{646:function(e,t,a){"use strict";var n=a(0),c=a.n(n);a(647);t.a=function(e){return c.a.createElement("li",{className:"v-list-base-item",onClick:e.handleClick.bind(void 0,e.id)},c.a.createElement("div",{className:"content"},c.a.createElement("div",{className:"cover"},e.status,c.a.createElement("img",{src:e.img,alt:""})),e.info),e.tab)}},647:function(e,t,a){},678:function(e,t,a){},679:function(e,t,a){},680:function(e,t,a){},685:function(e,t,a){},687:function(e,t){},764:function(e,t,a){"use strict";a.r(t);a(27);var n=a(9),c=a.n(n),i=a(3),r=a(4),o=a(6),s=a(5),l=a(7),u=(a(161),a(82)),d=a.n(u),m=a(0),p=a.n(m),v=a(162),h=(a(678),a(13)),f=a(58),y=a(1),E=(a(679),a(646)),g=function(e){var t=e.item;return p.a.createElement("div",{className:"bottom"},p.a.createElement("span",{className:"price"},"\xa5",t.price1),p.a.createElement("span",{className:"stale-price"},"\xa5",t.price0))},b=function(e){function t(){var e,a;Object(i.a)(this,t);for(var n=arguments.length,r=new Array(n),l=0;l<n;l++)r[l]=arguments[l];return(a=Object(o.a)(this,(e=Object(s.a)(t)).call.apply(e,[this].concat(r)))).state={num:10,list:[],courseId:null},a.getRecommendation=function(){y.d.get("".concat(y.a.home,"/m/play/recommend_course/").concat(a.props.vCourseId,"?num=").concat(a.state.num)).then(function(e){var t=e.data;200===t.code?a.setState({list:t.data}):c.a.info(t.msg)})},a.handleClick=function(e){a.props.history.push("/detail?id=".concat(e))},a}return Object(l.a)(t,e),Object(r.a)(t,[{key:"componentDidMount",value:function(){this.getRecommendation()}},{key:"render",value:function(){var e=this;return p.a.createElement("div",{className:"recommendation"},p.a.createElement("div",{className:"title"},"\u76f8\u5173\u63a8\u8350"),p.a.createElement("ul",null,this.state.list.map(function(t){var a=p.a.createElement("div",{className:"info"},p.a.createElement("p",{className:"title"},t.course_title),p.a.createElement("p",{className:"des"},t.simpledescription),p.a.createElement(g,{item:t}));return p.a.createElement(E.a,{key:t.course_id,img:t.image_name,handleClick:e.handleClick,info:a,id:t.course_id})})))}}]),t}(m.PureComponent),_=(a(680),a(16)),C=a.n(_),N=function(e){function t(){var e,a;Object(i.a)(this,t);for(var n=arguments.length,c=new Array(n),r=0;r<n;r++)c[r]=arguments[r];return(a=Object(o.a)(this,(e=Object(s.a)(t)).call.apply(e,[this].concat(c)))).handleClick=function(e){a.props.handleClick(e)},a}return Object(l.a)(t,e),Object(r.a)(t,[{key:"render",value:function(){var e=this;return p.a.createElement("div",{className:"video-catalog"},p.a.createElement("ul",null,this.props.videoCatalog.map(function(t,a){return p.a.createElement("li",{key:t.id,className:C()({active:e.props.activeIndex===a}),onClick:e.handleClick.bind(e,a)},p.a.createElement("span",{className:"title"},t.name),p.a.createElement("span",{className:"duration"},t.duration),p.a.createElement("i",{className:C()("iconfont",[0===t.video_auth?"iconiconfront-74":"iconiconfront-35"])}))})))}}]),t}(m.Component),I=(a(681),a(684)),O=a.n(I),k=(a(685),function(e){function t(){return Object(i.a)(this,t),Object(o.a)(this,Object(s.a)(t).apply(this,arguments))}return Object(l.a)(t,e),Object(r.a)(t,[{key:"render",value:function(){var e=this.props.datum;return p.a.createElement("div",{className:"datum-catalog"},p.a.createElement("p",{className:"prompt"},"\u8bfe\u7a0b\u8d44\u6599\u8bf7\u5230PC\u7aef\u64ad\u653e\u9875\u4e0b\u8f7d"),p.a.createElement(O.a,null,e&&e.length&&e.map(function(e,t){return p.a.createElement(O.a.Panel,{header:e.dir_name,key:t},e.files.map(function(e){return p.a.createElement("div",{key:e.file_id,className:"file-name"},e.file_name)}))})))}}]),t}(m.Component));k.defaultProps={datum:[{dir_name:"",files:[{file_name:"",file_id:0}]}]};var j=k,A=a(759),P=(a(732),d.a.alert),x=function(e){function t(){var e,a;Object(i.a)(this,t);for(var n=arguments.length,r=new Array(n),l=0;l<n;l++)r[l]=arguments[l];return(a=Object(o.a)(this,(e=Object(s.a)(t)).call.apply(e,[this].concat(r)))).state={title:"",courseId:null,video_catalog:[],datum:[],currentVideoSrc:"",activeIndex:0,isAuth:!0,course:null,salePrice:null,vCourseId:null},a.initializePlayer=function(){window.HELP_IMPROVE_VIDEOJS=!1,a.player=Object(A.a)(a.video,{controls:!0,preload:"auto",bigPlayButton:!0,textTrackDisplay:!1,posterImage:!1,errorDisplay:!1}),a.player.enableTouchActivity()},a.handleClick=function(e){a.hasAuth()&&(a.setPlayerSrc(a.state.video_catalog[e].play_url),a.playVideo()),a.setState({activeIndex:e})},a.getVideoCatalog=function(){y.d.get("".concat(y.a.home,"/m/course/play/").concat(a.courseID)).then(function(e){var t=e.data;200===t.code?a.setState(function(e){return{video_catalog:t.data.lessons,currentVideoSrc:t.data.lessons[e.activeIndex].play_url,course:t.data.course,courseId:t.data.course.course_id,vCourseId:t.data.course.v_course_id,title:t.data.course.course_title}},function(){a.lessonAvailable()?a.hasAuth(a.state.activeIndex)?(a.initializePlayer(),a.playWithAuth()):a.getCoursePrice():P("\u6682\u65e0\u89c6\u9891","",[{text:"OK",onPress:function(){a.props.history.push("/")}}])}):c.a.info(t.msg)})},a.setPlayerSrc=function(e){a.player.src({src:e,type:"application/x-mpegURL"})},a.playVideo=function(){a.player.play()},a.lessonAvailable=function(){var e=a.state;return 0!==e.video_catalog[e.activeIndex].video_size},a.getCoursePrice=function(){y.d.get("".concat(y.a.home,"/sys/course/price/").concat(a.state.courseId)).then(function(e){var t=e.data;200===t.code&&a.setState({salePrice:t.data.sale_price})})},a.playWithAuth=function(){var e=a.state,t=e.video_catalog,n=e.activeIndex;a.hasAuth()&&a.setPlayerSrc(t[n].play_url)},a.hasAuth=function(e){var t=a.state,n=t.course,c=t.video_catalog[t.activeIndex];return c.is_free?(a.setState({isAuth:!0}),!0):n.is_audition?(a.setState({isAuth:!0}),!0):c.video_auth?(a.setState({isAuth:!0}),!0):(a.setState({isAuth:!1}),!1)},a}return Object(l.a)(t,e),Object(r.a)(t,[{key:"componentDidMount",value:function(){this.courseID=Object(y.c)("id"),this.setState({courseId:this.courseID}),this.getVideoCatalog(),this.getDatumCatalog()}},{key:"componentWillUnmount",value:function(){this.player&&this.player.dispose()}},{key:"getDatumCatalog",value:function(){var e=this;y.d.get("".concat(y.a.home,"/m/course/data/").concat(this.courseID)).then(function(t){var a=t.data;200===a.code?e.setState({datum:a.data}):c.a.info(a.msg)})}},{key:"render",value:function(){var e=this,t=this.props,a=t.match,n=t.location,c=this.state,i=c.video_catalog,r=c.activeIndex,o=c.isAuth,s=c.salePrice;return p.a.createElement("div",{className:"play"},p.a.createElement(v.a,{title:this.state.title,arrow:!0}),p.a.createElement("div",{className:"video"},p.a.createElement("video",{className:"video-js",ref:function(t){return e.video=t}},p.a.createElement("source",{src:"/",type:"application/x-mpegURL"})),!o&&p.a.createElement("div",{className:"purchase-box"},p.a.createElement("div",{className:"hint"},"\u60a8\u5c1a\u672a\u8d2d\u4e70\u8be5\u8bfe\u65f6\uff0c\u8bf7\u8d2d\u4e70\u540e\u5b66\u4e60\u3002"),p.a.createElement("div",{className:"btns"},p.a.createElement("button",{type:"button",className:"purchase-class"},"\xa5",s," \u8d2d\u4e70\u8bfe\u7a0b"),p.a.createElement("button",{type:"button",className:"purchase-episode"},"\xa5",i.length&&i[r].class_price," \u8d2d\u4e70\u5355\u96c6")))),p.a.createElement("div",{className:"tab"},p.a.createElement("div",null,p.a.createElement(h.c,{to:"".concat(a.url,"/video"),replace:!0,activeClassName:"active"},"\u89c6\u9891")),p.a.createElement("div",null,p.a.createElement(h.c,{to:"".concat(a.url,"/datum"),replace:!0,activeClassName:"active"},"\u8d44\u6599"))),p.a.createElement(f.d,null,p.a.createElement(f.a,{exact:!0,from:"/play",to:{pathname:"/play/video",search:n.search}}),p.a.createElement(f.b,{path:"".concat(a.path,"/video"),render:function(t){return p.a.createElement(N,Object.assign({activeIndex:e.state.activeIndex,handleClick:e.handleClick,videoCatalog:e.state.video_catalog},t))}}),p.a.createElement(f.b,{path:"".concat(a.path,"/datum"),render:function(t){return p.a.createElement(j,Object.assign({},t,{datum:e.state.datum}))}})),p.a.createElement(f.b,{render:function(t){return e.state.vCourseId?p.a.createElement(b,Object.assign({},t,{vCourseId:e.state.vCourseId})):null}}))}}]),t}(m.Component);t.default=x}}]);
//# sourceMappingURL=video.1b371a9a.chunk.js.map
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -86,7 +86,6 @@ function getClientEnvironment(publicUrl) { ...@@ -86,7 +86,6 @@ function getClientEnvironment(publicUrl) {
return env; return env;
}, {}), }, {}),
}; };
return { raw, stringified }; return { raw, stringified };
} }
......
...@@ -98,6 +98,10 @@ module.exports = function(webpackEnv) { ...@@ -98,6 +98,10 @@ module.exports = function(webpackEnv) {
}, },
stage: 3, stage: 3,
}), }),
require('postcss-px-to-viewport')({
viewportWidth: 375,
unitPrecision: 6
})
], ],
sourceMap: isEnvProduction && shouldUseSourceMap, sourceMap: isEnvProduction && shouldUseSourceMap,
}, },
......
{ {
"name": "my-julyedu", "name": "mr-julyedu",
"version": "0.1.0", "version": "0.1.0",
"lockfileVersion": 1, "lockfileVersion": 1,
"requires": true, "requires": true,
...@@ -3257,6 +3257,11 @@ ...@@ -3257,6 +3257,11 @@
"resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz",
"integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=" "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms="
}, },
"callapp-lib": {
"version": "2.1.7",
"resolved": "https://registry.npmjs.org/callapp-lib/-/callapp-lib-2.1.7.tgz",
"integrity": "sha512-pO8SuyjjkzL1dIqT7tazAojSF6ik6QlUKMKLDaQaTdkzBsKBecQLLgfRwE+S6IBhzaP8ZIhhtBhGh5aETogYYg=="
},
"caller-callsite": { "caller-callsite": {
"version": "2.0.0", "version": "2.0.0",
"resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz",
...@@ -11054,6 +11059,16 @@ ...@@ -11054,6 +11059,16 @@
"postcss-selector-parser": "^5.0.0-rc.3" "postcss-selector-parser": "^5.0.0-rc.3"
} }
}, },
"postcss-px-to-viewport": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/postcss-px-to-viewport/-/postcss-px-to-viewport-1.1.0.tgz",
"integrity": "sha512-EtgneDV+BWtdZly/FNNcY+GynSsvkZE8wFKapwO4cvke/LjRTNbBBZNglG/hipY1Wfb22u7qiMndLJ8maYEwXQ==",
"dev": true,
"requires": {
"object-assign": ">=4.0.1",
"postcss": ">=5.0.2"
}
},
"postcss-reduce-initial": { "postcss-reduce-initial": {
"version": "4.0.3", "version": "4.0.3",
"resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz", "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz",
......
{ {
"name": "my-julyedu", "name": "mr-julyedu",
"version": "0.1.0", "version": "0.1.0",
"private": true, "private": true,
"dependencies": { "dependencies": {
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
"babel-plugin-named-asset-import": "^0.3.1", "babel-plugin-named-asset-import": "^0.3.1",
"babel-preset-react-app": "^7.0.2", "babel-preset-react-app": "^7.0.2",
"bfj": "6.1.1", "bfj": "6.1.1",
"callapp-lib": "^2.1.7",
"case-sensitive-paths-webpack-plugin": "2.2.0", "case-sensitive-paths-webpack-plugin": "2.2.0",
"crypto-js": "^3.1.9-1", "crypto-js": "^3.1.9-1",
"css-loader": "1.0.0", "css-loader": "1.0.0",
...@@ -81,6 +82,7 @@ ...@@ -81,6 +82,7 @@
"scripts": { "scripts": {
"start": "node scripts/start.js", "start": "node scripts/start.js",
"build": "node scripts/build.js", "build": "node scripts/build.js",
"pre": "node scripts/pre.js",
"test": "node scripts/test.js" "test": "node scripts/test.js"
}, },
"eslintConfig": { "eslintConfig": {
...@@ -155,6 +157,7 @@ ...@@ -155,6 +157,7 @@
"babel-plugin-import": "^1.11.0", "babel-plugin-import": "^1.11.0",
"classnames": "^2.2.6", "classnames": "^2.2.6",
"mockjs": "^1.0.1-beta3", "mockjs": "^1.0.1-beta3",
"postcss-px-to-viewport": "^1.1.0",
"sass-resources-loader": "^2.0.0" "sass-resources-loader": "^2.0.0"
}, },
"theme": "./src/assets/theme/config.js" "theme": "./src/assets/theme/config.js"
......
'use strict';
// Do this as the first thing so that any code reading it knows the right env.
process.env.BABEL_ENV = 'production';
process.env.NODE_ENV = 'production';
process.env.REACT_APP_BUILD_ENV = 'pre'
// Makes the script crash on unhandled rejections instead of silently
// ignoring them. In the future, promise rejections that are not handled will
// terminate the Node.js process with a non-zero exit code.
process.on('unhandledRejection', err => {
throw err;
});
// Ensure environment variables are read.
require('../config/env');
const path = require('path');
const chalk = require('react-dev-utils/chalk');
const fs = require('fs-extra');
const webpack = require('webpack');
const bfj = require('bfj');
const configFactory = require('../config/webpack.config');
const paths = require('../config/paths');
const checkRequiredFiles = require('react-dev-utils/checkRequiredFiles');
const formatWebpackMessages = require('react-dev-utils/formatWebpackMessages');
const printHostingInstructions = require('react-dev-utils/printHostingInstructions');
const FileSizeReporter = require('react-dev-utils/FileSizeReporter');
const printBuildError = require('react-dev-utils/printBuildError');
const measureFileSizesBeforeBuild =
FileSizeReporter.measureFileSizesBeforeBuild;
const printFileSizesAfterBuild = FileSizeReporter.printFileSizesAfterBuild;
const useYarn = fs.existsSync(paths.yarnLockFile);
// These sizes are pretty large. We'll warn for bundles exceeding them.
const WARN_AFTER_BUNDLE_GZIP_SIZE = 512 * 1024;
const WARN_AFTER_CHUNK_GZIP_SIZE = 1024 * 1024;
const isInteractive = process.stdout.isTTY;
// Warn and crash if required files are missing
if (!checkRequiredFiles([paths.appHtml, paths.appIndexJs])) {
process.exit(1);
}
// Process CLI arguments
const argv = process.argv.slice(2);
const writeStatsJson = argv.indexOf('--stats') !== -1;
// Generate configuration
const config = configFactory('production');
// We require that you explicitly set browsers and do not fall back to
// browserslist defaults.
const { checkBrowsers } = require('react-dev-utils/browsersHelper');
checkBrowsers(paths.appPath, isInteractive)
.then(() => {
// First, read the current file sizes in build directory.
// This lets us display how much they changed later.
return measureFileSizesBeforeBuild(paths.appBuild);
})
.then(previousFileSizes => {
// Remove all content but keep the directory so that
// if you're in it, you don't end up in Trash
fs.emptyDirSync(paths.appBuild);
// Merge with the public folder
copyPublicFolder();
// Start the webpack build
return build(previousFileSizes);
})
.then(
({ stats, previousFileSizes, warnings }) => {
if (warnings.length) {
console.log(chalk.yellow('Compiled with warnings.\n'));
console.log(warnings.join('\n\n'));
console.log(
'\nSearch for the ' +
chalk.underline(chalk.yellow('keywords')) +
' to learn more about each warning.'
);
console.log(
'To ignore, add ' +
chalk.cyan('// eslint-disable-next-line') +
' to the line before.\n'
);
} else {
console.log(chalk.green('Compiled successfully.\n'));
}
console.log('File sizes after gzip:\n');
printFileSizesAfterBuild(
stats,
previousFileSizes,
paths.appBuild,
WARN_AFTER_BUNDLE_GZIP_SIZE,
WARN_AFTER_CHUNK_GZIP_SIZE
);
const appPackage = require(paths.appPackageJson);
const publicUrl = paths.publicUrl;
const publicPath = config.output.publicPath;
const buildFolder = path.relative(process.cwd(), paths.appBuild);
printHostingInstructions(
appPackage,
publicUrl,
publicPath,
buildFolder,
useYarn
);
},
err => {
console.log(chalk.red('Failed to compile.\n'));
printBuildError(err);
process.exit(1);
}
)
.catch(err => {
if (err && err.message) {
console.log(err.message);
}
process.exit(1);
});
// Create the production build and print the deployment instructions.
function build(previousFileSizes) {
console.log('Creating an optimized production build...');
let compiler = webpack(config);
return new Promise((resolve, reject) => {
compiler.run((err, stats) => {
let messages;
if (err) {
if (!err.message) {
return reject(err);
}
messages = formatWebpackMessages({
errors: [err.message],
warnings: [],
});
} else {
messages = formatWebpackMessages(
stats.toJson({ all: false, warnings: true, errors: true })
);
}
if (messages.errors.length) {
// Only keep the first error. Others are often indicative
// of the same problem, but confuse the reader with noise.
if (messages.errors.length > 1) {
messages.errors.length = 1;
}
return reject(new Error(messages.errors.join('\n\n')));
}
if (
process.env.CI &&
(typeof process.env.CI !== 'string' ||
process.env.CI.toLowerCase() !== 'false') &&
messages.warnings.length
) {
console.log(
chalk.yellow(
'\nTreating warnings as errors because process.env.CI = true.\n' +
'Most CI servers set it automatically.\n'
)
);
return reject(new Error(messages.warnings.join('\n\n')));
}
const resolveArgs = {
stats,
previousFileSizes,
warnings: messages.warnings,
};
if (writeStatsJson) {
return bfj
.write(paths.appBuild + '/bundle-stats.json', stats.toJson())
.then(() => resolve(resolveArgs))
.catch(error => reject(new Error(error)));
}
return resolve(resolveArgs);
});
});
}
function copyPublicFolder() {
fs.copySync(paths.appPublic, paths.appBuild, {
dereference: true,
filter: file => file !== paths.appHtml,
});
}
'use strict';
// Do this as the first thing so that any code reading it knows the right env.
process.env.BABEL_ENV = 'production';
process.env.NODE_ENV = 'production';
process.env.REACT_APP_BUILD_ENV = 'test'
// Makes the script crash on unhandled rejections instead of silently
// ignoring them. In the future, promise rejections that are not handled will
// terminate the Node.js process with a non-zero exit code.
process.on('unhandledRejection', err => {
throw err;
});
// Ensure environment variables are read.
require('../config/env');
const path = require('path');
const chalk = require('react-dev-utils/chalk');
const fs = require('fs-extra');
const webpack = require('webpack');
const bfj = require('bfj');
const configFactory = require('../config/webpack.config');
const paths = require('../config/paths');
const checkRequiredFiles = require('react-dev-utils/checkRequiredFiles');
const formatWebpackMessages = require('react-dev-utils/formatWebpackMessages');
const printHostingInstructions = require('react-dev-utils/printHostingInstructions');
const FileSizeReporter = require('react-dev-utils/FileSizeReporter');
const printBuildError = require('react-dev-utils/printBuildError');
const measureFileSizesBeforeBuild =
FileSizeReporter.measureFileSizesBeforeBuild;
const printFileSizesAfterBuild = FileSizeReporter.printFileSizesAfterBuild;
const useYarn = fs.existsSync(paths.yarnLockFile);
// These sizes are pretty large. We'll warn for bundles exceeding them.
const WARN_AFTER_BUNDLE_GZIP_SIZE = 512 * 1024;
const WARN_AFTER_CHUNK_GZIP_SIZE = 1024 * 1024;
const isInteractive = process.stdout.isTTY;
// Warn and crash if required files are missing
if (!checkRequiredFiles([paths.appHtml, paths.appIndexJs])) {
process.exit(1);
}
// Process CLI arguments
const argv = process.argv.slice(2);
const writeStatsJson = argv.indexOf('--stats') !== -1;
// Generate configuration
const config = configFactory('production');
// We require that you explicitly set browsers and do not fall back to
// browserslist defaults.
const { checkBrowsers } = require('react-dev-utils/browsersHelper');
checkBrowsers(paths.appPath, isInteractive)
.then(() => {
// First, read the current file sizes in build directory.
// This lets us display how much they changed later.
return measureFileSizesBeforeBuild(paths.appBuild);
})
.then(previousFileSizes => {
// Remove all content but keep the directory so that
// if you're in it, you don't end up in Trash
fs.emptyDirSync(paths.appBuild);
// Merge with the public folder
copyPublicFolder();
// Start the webpack build
return build(previousFileSizes);
})
.then(
({ stats, previousFileSizes, warnings }) => {
if (warnings.length) {
console.log(chalk.yellow('Compiled with warnings.\n'));
console.log(warnings.join('\n\n'));
console.log(
'\nSearch for the ' +
chalk.underline(chalk.yellow('keywords')) +
' to learn more about each warning.'
);
console.log(
'To ignore, add ' +
chalk.cyan('// eslint-disable-next-line') +
' to the line before.\n'
);
} else {
console.log(chalk.green('Compiled successfully.\n'));
}
console.log('File sizes after gzip:\n');
printFileSizesAfterBuild(
stats,
previousFileSizes,
paths.appBuild,
WARN_AFTER_BUNDLE_GZIP_SIZE,
WARN_AFTER_CHUNK_GZIP_SIZE
);
const appPackage = require(paths.appPackageJson);
const publicUrl = paths.publicUrl;
const publicPath = config.output.publicPath;
const buildFolder = path.relative(process.cwd(), paths.appBuild);
printHostingInstructions(
appPackage,
publicUrl,
publicPath,
buildFolder,
useYarn
);
},
err => {
console.log(chalk.red('Failed to compile.\n'));
printBuildError(err);
process.exit(1);
}
)
.catch(err => {
if (err && err.message) {
console.log(err.message);
}
process.exit(1);
});
// Create the production build and print the deployment instructions.
function build(previousFileSizes) {
console.log('Creating an optimized production build...');
let compiler = webpack(config);
return new Promise((resolve, reject) => {
compiler.run((err, stats) => {
let messages;
if (err) {
if (!err.message) {
return reject(err);
}
messages = formatWebpackMessages({
errors: [err.message],
warnings: [],
});
} else {
messages = formatWebpackMessages(
stats.toJson({ all: false, warnings: true, errors: true })
);
}
if (messages.errors.length) {
// Only keep the first error. Others are often indicative
// of the same problem, but confuse the reader with noise.
if (messages.errors.length > 1) {
messages.errors.length = 1;
}
return reject(new Error(messages.errors.join('\n\n')));
}
if (
process.env.CI &&
(typeof process.env.CI !== 'string' ||
process.env.CI.toLowerCase() !== 'false') &&
messages.warnings.length
) {
console.log(
chalk.yellow(
'\nTreating warnings as errors because process.env.CI = true.\n' +
'Most CI servers set it automatically.\n'
)
);
return reject(new Error(messages.warnings.join('\n\n')));
}
const resolveArgs = {
stats,
previousFileSizes,
warnings: messages.warnings,
};
if (writeStatsJson) {
return bfj
.write(paths.appBuild + '/bundle-stats.json', stats.toJson())
.then(() => resolve(resolveArgs))
.catch(error => reject(new Error(error)));
}
return resolve(resolveArgs);
});
});
}
function copyPublicFolder() {
fs.copySync(paths.appPublic, paths.appBuild, {
dereference: true,
filter: file => file !== paths.appHtml,
});
}
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
// Do this as the first thing so that any code reading it knows the right env. // Do this as the first thing so that any code reading it knows the right env.
process.env.BABEL_ENV = 'production'; process.env.BABEL_ENV = 'production';
process.env.NODE_ENV = 'production'; process.env.NODE_ENV = 'production';
process.env.REACT_APP_BUILD_ENV = 'production'
// Makes the script crash on unhandled rejections instead of silently // Makes the script crash on unhandled rejections instead of silently
// ignoring them. In the future, promise rejections that are not handled will // ignoring them. In the future, promise rejections that are not handled will
......
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
// Do this as the first thing so that any code reading it knows the right env. // Do this as the first thing so that any code reading it knows the right env.
process.env.BABEL_ENV = 'development'; process.env.BABEL_ENV = 'development';
process.env.NODE_ENV = 'development'; process.env.NODE_ENV = 'development';
process.env.REACT_APP_BUILD_ENV = 'development';
// Makes the script crash on unhandled rejections instead of silently // Makes the script crash on unhandled rejections instead of silently
// ignoring them. In the future, promise rejections that are not handled will // ignoring them. In the future, promise rejections that are not handled will
......
...@@ -3,9 +3,8 @@ import React, { PureComponent } from 'react'; ...@@ -3,9 +3,8 @@ import React, { PureComponent } from 'react';
export default function (WrappedComponent) { export default function (WrappedComponent) {
return class extends PureComponent { return class extends PureComponent {
componentDidMount() { componentDidMount() {
const height = window.innerHeight document.body.style.height = `100%`
document.body.style.height = `${height}px` document.getElementById('root').style.height = `100%`
document.getElementById('root').style.height = `${height}px`
} }
componentWillUnmount() { componentWillUnmount() {
document.body.style.height = `auto` document.body.style.height = `auto`
......
import React, { Component } from 'react'
import CallApp from 'callapp-lib'
const options = {
scheme: {
protocol: 'julyedu',
host: '',
port: ''
},
intent: {
package: "com.julyapp.julyonline",
scheme: "julyedu",
action: 'julyapp.julyedu',
category: 'category_julyedu'
},
universal: {
host: "api.julyedu.com/action",
pathKey: 'page'
},
appstore: "https://itunes.apple.com/cn/app/id1102275343?mt=8",
yingyongbao: "http://android.myapp.com/myapp/detail.htm?apkName=com.julyapp.julyonline",
fallback: "http://www-test.julyedu.com/weekend/redir1"
}
class OpenApp extends Component {
callApp = new CallApp(options)
handleClick = () => {
this.callApp.open({})
}
render() {
return (
<div className={this.props.className} onClick={this.handleClick}>APP打开</div>
);
}
}
export default OpenApp;
...@@ -8,7 +8,7 @@ const Course = (props) => { ...@@ -8,7 +8,7 @@ const Course = (props) => {
{props.top} {props.top}
<Link to={`/detail?id=${props.id}`}> <Link to={`/detail?id=${props.id}`}>
<img src={props.img} alt=""/> <img src={props.img} alt=""/>
<p className="course-title">{props.title}</p> <p className={`course-title ${props.className}`}>{props.title}</p>
</Link> </Link>
{props.bottom} {props.bottom}
</li> </li>
......
import React from 'react'
const ToApp = (props) => {
return (
<div className={props.className} onClick={props.toApp}>APP打开</div>
);
};
export default ToApp;
.course-base-item {
width: 47.8%;
margin-top: 15px;
margin-bottom: 5px;
position: relative;
img {
width: 100%;
height: 119px;
min-height: 119px;
}
.course-title {
font-size: 14px;
color: $color_333;
line-height: 19px;
margin-top: 9px;
}
}
import React from 'react'
import './course-base.scss'
const Course = (props) => {
return (
<li className={`course-base-item ${props.className}`} onClick={props.handleClick.bind(this, props.id)}>
{props.top}
<img src={props.img} alt=""/>
<p className="course-title">{props.title}</p>
{props.bottom}
</li>
);
};
export default Course;
...@@ -3,7 +3,7 @@ export { default as Course } from './Course' // 课程状态(试听 正在 ...@@ -3,7 +3,7 @@ export { default as Course } from './Course' // 课程状态(试听 正在
export { default as Tag } from './CategoryTag' export { default as Tag } from './CategoryTag'
export { default as OrderItem } from './OrderList' export { default as OrderItem } from './OrderList'
export { default as HeaderBar } from './HeaderBar' export { default as HeaderBar } from './HeaderBar'
export { default as ToApp } from './ToApp' export { default as CallApp } from './CallApp'
export { default as Captcha } from './Captcha' export { default as Captcha } from './Captcha'
export { default as ClearableInput } from "./ClearableInput"; export { default as ClearableInput } from "./ClearableInput";
......
import React from 'react';
import './index.scss'
const VList = (props) => {
return (
<li className='v-list-base-item' onClick={props.handleClick.bind(this, props.id)}>
<div className="content">
<div className="cover">
{props.status}
<img src={props.img} alt=""/>
</div>
{props.info}
</div>
{props.tab}
</li>
);
};
export default VList;
\ No newline at end of file
.v-list-base-item {
height: 127px;
padding: 10px 10px 0;
.content {
display: flex;
height: 100%;
padding-bottom: 10px;
border-bottom: 1px solid $sp_e7eaf1;
.cover {
flex: 0 0 auto;
margin-right: 16px;
position: relative;
img {
width: 150px;
height: 108px;
border-radius: 3px;
}
}
.course-status {
width: 100%;
height: 24px;
position: absolute;
bottom: -1px;
border-radius: 0 0 3px 3px;
text-align: center;
line-height: 24px;
color: $white;
font-size: 13px;
}
}
}
import React, {Component} from 'react'
import './index.scss'
class Ranking extends Component {
constructor(props) {
super(props)
this.state = {
kanjiaIcon: require('../image/kanjia_icon.png')
}
}
// 关闭更多窗口
closeMore = () => {
this.props.boxHide(false);
}
render() {
return (
<div className={'ranking-box'}>
{
this.props.isShowMore &&
<MoreList list={this.props.list} limitPeople={this.props.limitPeople} closeMore={this.closeMore}
img={this.props.icon}/>
}
</div>
);
}
}
function MoreList(props) {
return (
<div className="moreMbc">
<div className="content">
<div className="title-box">
好友助力详情
</div>
<ul className='more-bargain-list'>
{
props.list && props.list.length > 0 && props.list.map((item, index) => {
return (
<li key={index} className='bargain-item'>
<img className='avatar' src={item.avatar_file} alt=""/>
<p className='name'>{item.user_name}</p>
<p className='bargain-status'>
<img className='kanjia-icon' src={props.img} alt=""/>
砍掉<span className={'price'}>{item.amount}</span>
</p>
</li>
)
})
}
</ul>
<div className='more-bargain-dec'>
超过{props.limitPeople}位好友助力可获得【砍价神器】
</div>
</div>
<i onClick={props.closeMore} className={'iconfont iconiconfront-2 close'}></i>
</div>
)
}
export default Ranking
\ No newline at end of file
.ranking-box {
.moreMbc {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: rgba(0, 0, 0, .6);
z-index: 2;
.content {
width: 300px;
height: 340px;
background-color: $white;
border-radius: 3px;
margin: 130px auto 20px auto;
position: relative;
.title-box {
width: 100%;
height: 45px;
text-align: center;
color: $color_202426;
font-size: 16px;
line-height: 45px;
}
.more-bargain-list {
width: 100%;
height: 253px;
overflow: auto;
border-top: 1px solid $sp_e7eaf1;
padding: 0 15px;
background-color: $bg_f5f5f5;
.bargain-item {
border-bottom: 1px solid $sp_e7eaf1;
height: 50px;
display: flex;
position: relative;
.avatar {
width: 30px;
height: 30px;
border-radius: 50%;
margin-top: 10px;
margin-right: 10px;
}
.name {
font-size: 14px;
color: $color_333;
max-width: 130px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
line-height: 50px;
}
.bargain-status {
line-height: 50px;
color: $color_333;
font-size: 14px;
position: absolute;
right: 0;
}
}
}
}
.more-bargain-dec {
width: 100%;
position: absolute;
bottom: 0;
height: 42px;
font-size: 12px;
color: $color_FF4000;
text-align: center;
line-height: 42px;
}
.close {
color: #fff;
font-size: 22px;
position: relative;
left: 50%;
margin-left: -11px;
}
}
.kanjia-icon {
width: 20px;
height: 20px;
margin-right: 5px;
vertical-align: middle;
}
}
\ No newline at end of file
.bargain-info { .bargain-bind-iphone {
position: absolute; position: absolute;
top: 50%; top: 50%;
left: 50%; left: 50%;
......
...@@ -20,4 +20,4 @@ const BargainInfo = () => { ...@@ -20,4 +20,4 @@ const BargainInfo = () => {
); );
}; };
export default BargainInfo; export default BargainInfo
\ No newline at end of file \ No newline at end of file
import React, {Component} from 'react'; import React, {Component} from 'react'
import {api, getParam, http} from "@/utils"; import {api, getParam, http} from "@/utils"
import {Toast} from 'antd-mobile'; import {Toast} from 'antd-mobile'
import {Link} from 'react-router-dom' import {Link} from 'react-router-dom'
import {getCourses} from "@/components/detail/actions"; import {getCourses} from "@/components/detail/actions"
import {connect} from "react-redux"; import {connect} from "react-redux"
import './index.scss' import './index.scss'
import Overlay from '../overlay'
class BtnStatus extends Component { class BtnStatus extends Component {
constructor(props) { constructor(props) {
super(props) super(props)
this.state = { this.state = {
isbuy: 1 isbuy: 1,
bargainStatus: '',
isShowOverlay: false
} }
} }
// 加入购物车 // 加入购物车 type:1 加入购物车,2加入购物车并跳转到购物车页面去支付
toCart = () => { toCart = (type) => {
console.log(type)
let data = { let data = {
course_id: getParam('id') course_id: getParam('id')
} }
http.post(`${api.home}/m/cart/add`, data).then((res) => { http.post(`${api.home}/m/cart/add`, data).then((res) => {
if (res.data.code === 200) { if (res.data.code === 200) {
Toast.info('已加入购物车', 2); if (type === 1) {
// window.location.reload() Toast.info('已加入购物车', 2)
this.props.getCourses(); // this.props.getCourses()
document.location.reload()
} else {
window.location.href = '/shopcart'
}
} else if (res.data.code === 15001) {
window.location.href = '/shopcart'
} else { } else {
Toast.info(res.data.msg, 2); Toast.info(res.data.msg, 2);
} }
}) })
} }
// 直接购买
tobuy = () => {
if (this.props.barInfo.bargain_status === 2) {
this.toCart(2)
} else {
// 取消砍价记录
this.setState({
isShowOverlay: true,
bargainStatus: 1,
})
}
}
// 取消砍价
cancel = () => {
let data = {
courseId: getParam('id')
}
http.post(`${api.home}/m/bargain/cancel`, data).then((res) => {
if (res.data.code === 200) {
this.setState({
isShowOverlay: false,
bargainStatus: '',
})
document.location.reload()
} else {
Toast.info(res.data.msg, 2)
}
})
}
close = () => {
this.setState({
isShowOverlay: false,
bargainStatus: '',
})
}
// 砍价接口
toKanjia = () => {
let data = {
course_id: getParam('id'),
type: 1, // 1 用户自己砍价 2 使用砍价神器 3 好友助力砍价 4 好友第二次助力
parent_uid: 0 // 被助力人id 【自己本人操作传0】
}
http.post(`${api.home}/m/to_bargain`, data).then((res) => {
if (res.data.code === 200) {
// this.props.getBargainInfo()
document.location.reload()
} else {
Toast.info(res.data.msg, 2)
}
})
}
render() { render() {
let info = '' let info = ''
if (this.props.data && this.props.data.course_info) { if (this.props.data && this.props.data.course_info) {
info = this.props.data.course_info info = this.props.data.course_info
} }
let barInfo = this.props.barInfo && this.props.barInfo
return ( return (
<div> <div>
...@@ -55,7 +118,7 @@ class BtnStatus extends Component { ...@@ -55,7 +118,7 @@ class BtnStatus extends Component {
} }
{ {
!info.in_cart && !info.in_cart &&
<button className='btn btn-s bg-FCCD05' onClick={this.toCart}>加入购物车</button> <button className='btn btn-s bg-FCCD05' onClick={e => this.toCart(1)}>加入购物车</button>
} }
<Link to='/order' className='btn btn-s bg-FD7700'>立即报名</Link> <Link to='/order' className='btn btn-s bg-FD7700'>立即报名</Link>
...@@ -75,7 +138,7 @@ class BtnStatus extends Component { ...@@ -75,7 +138,7 @@ class BtnStatus extends Component {
} }
{/*拼团 未开团*/} {/*拼团 未开团*/}
{ {
info.is_baoming === 0 && info.group_status === 4&& info.is_baoming === 0 && info.group_status === 4 &&
<div className='btns-box'> <div className='btns-box'>
<a className='consult consult-s' href="https://q.url.cn/AB8aue?_type=wpa&qidian=true"> <a className='consult consult-s' href="https://q.url.cn/AB8aue?_type=wpa&qidian=true">
<i className='iconfont iconerji'></i> <i className='iconfont iconerji'></i>
...@@ -107,27 +170,27 @@ class BtnStatus extends Component { ...@@ -107,27 +170,27 @@ class BtnStatus extends Component {
{/*砍价*/} {/*砍价*/}
{ {
this.props.status === 3 && this.props.data && this.props.data.is_bargain &&
<div className='btns-box'> <div className='btns-box'>
<a className='consult consult-s' href="https://q.url.cn/AB8aue?_type=wpa&qidian=true"> <a className='consult consult-s' href="https://q.url.cn/AB8aue?_type=wpa&qidian=true">
<i className='iconfont iconerji'></i> <i className='iconfont iconerji'></i>
<span>课程咨询</span> <span>课程咨询</span>
</a> </a>
<button className='btn btn-s bg-F4AAA7'> <button className='btn btn-s bg-F4AAA7'>
<span>¥149</span> <span>¥{info.price1}</span>
<span>直接购买</span> <span onClick={this.tobuy}>直接购买</span>
</button> </button>
{ {
this.state.isbuy === 0 && barInfo.bargain_status === 2 &&
<button className='btn btn-s bg-E02E24'> <button className='btn btn-s bg-E02E24' onClick={this.toKanjia}>
我要砍价 我要砍价
</button> </button>
} }
{ {
this.state.isbuy === 1 && (barInfo.bargain_status === 0 || barInfo.bargain_status === 1) &&
<button className='btn btn-s bg-E02E24'> <button className='btn btn-s bg-E02E24'>
<span>¥1</span> <span>¥1</span>
<span>去支付</span> <span onClick={e => this.toCart(2)}>去支付</span>
</button> </button>
} }
</div> </div>
...@@ -143,12 +206,41 @@ class BtnStatus extends Component { ...@@ -143,12 +206,41 @@ class BtnStatus extends Component {
</a> </a>
</div> </div>
} }
{
this.state.isShowOverlay &&
<Overlay>
{/*引导关注公众号*/}
{
this.state.bargainStatus === 1 &&
<CancelBargain close={this.close} cancel={this.cancel}/>
}
<i onClick={this.close} className={'iconfont iconiconfront-2 bargain-close'}></i>
</Overlay>
}
</div> </div>
) )
} }
} }
function CancelBargain(props) {
return (
<div className='cancel-bargain'>
<p className='top-img'><i className='iconfont icondanseshixintubiao-8'></i></p>
<p className='tip-mess'>您已发起砍价,直接购买将清除已砍金额。直接购买可使用优惠券~</p>
<div className="btns">
<button onClick={props.close}>取消</button>
<button onClick={props.cancel}>确定</button>
</div>
</div>
)
}
export default connect( export default connect(
null, null,
{getCourses} {getCourses}
)(BtnStatus); )(BtnStatus)
\ No newline at end of file
...@@ -114,4 +114,62 @@ ...@@ -114,4 +114,62 @@
} }
} }
}
.cancel-bargain {
width: 300px;
height: 139px;
background-color: $bg_fff;
margin: 194px auto 20px auto;
border-radius: 5px;
padding: 15px 0 0 0;
text-align: center;
position: relative;
.top-img {
height: 30px;
line-height: 30px;
i {
color: #f3ac3c;
font-size: 30px;
}
}
.tip-mess {
font-size: 14px;
color: $color_666;
margin-top: 3px;
padding: 0 15px;
}
.btns {
width: 100%;
height: 40px;
position: absolute;
bottom: 0;
border-top: 1px solid $sp_ddd;
button {
width: 150px;
height: 100%;
background-color: $bg_fff;
font-size: 16px;
border: none;
}
:nth-child(1) {
color: $color_333;
border-right: 1px solid $sp_ddd;
border-radius: 0 0 0 5px;
}
:nth-child(2) {
color: $active;
border-radius: 0 0 5px 0;
}
}
} }
\ No newline at end of file
...@@ -3,7 +3,7 @@ import './index.scss' ...@@ -3,7 +3,7 @@ import './index.scss'
import Bargain from './bargain' import Bargain from './bargain'
import Group from './group' import Group from './group'
import OutLine from './outline' import OutLine from './outline'
import {HeaderBar, ToApp} from '../../common' import {HeaderBar, CallApp} from '../../common'
import ShareRank from "./shareRank" import ShareRank from "./shareRank"
import Audition from "./audition" import Audition from "./audition"
import Single from "./single" import Single from "./single"
...@@ -11,6 +11,8 @@ import BtnStatus from "./btnstatus" ...@@ -11,6 +11,8 @@ import BtnStatus from "./btnstatus"
import Carouselw from "./carousel" import Carouselw from "./carousel"
import {connect} from "react-redux" import {connect} from "react-redux"
import {fetchCoursesListIfNeeded} from "./actions" import {fetchCoursesListIfNeeded} from "./actions"
import {api, getParam, http} from "@/utils";
import {Toast} from "antd-mobile";
class Detail extends Component { class Detail extends Component {
...@@ -23,21 +25,20 @@ class Detail extends Component { ...@@ -23,21 +25,20 @@ class Detail extends Component {
auditionBox: false, auditionBox: false,
singleBox: false, singleBox: false,
shareRank: false, shareRank: false,
singMess: '' singMess: '',
barInfo: '',
} }
} }
componentDidMount() { componentDidMount() {
this.props.fetchCoursesListIfNeeded() this.props.fetchCoursesListIfNeeded()
this.getBargainInfo()
} }
componentDidUpdate() { componentDidUpdate() {
// console.log(this.props.courseInfo.course_info) // console.log(this.props.courseInfo.course_info)
} }
toApp = () => {
alert('toApp')
}
// 点击子组件试听按钮 // 点击子组件试听按钮
toAudition = () => { toAudition = () => {
this.setState(status => ({ this.setState(status => ({
...@@ -53,6 +54,21 @@ class Detail extends Component { ...@@ -53,6 +54,21 @@ class Detail extends Component {
} }
//获取砍价信息
getBargainInfo = () => {
let data = {
courseId: getParam('id')
}
http.post(`${api.home}/m/bargain/courseDetail`, data).then((res) => {
if (res.data.code === 200) {
this.setState({
barInfo: res.data.data
})
} else {
Toast.info(res.data.msg, 2)
}
})
}
// 自组件传给父组件的boxHide // 自组件传给父组件的boxHide
...@@ -69,7 +85,7 @@ class Detail extends Component { ...@@ -69,7 +85,7 @@ class Detail extends Component {
} }
return ( return (
<div className='detail-box'> <div className='detail-box'>
<ToApp className='toapp' toApp={this.toApp}></ToApp> <CallApp className='toapp'></CallApp>
<HeaderBar title='课程详情' arrow={true} cart={true}></HeaderBar> <HeaderBar title='课程详情' arrow={true} cart={true}></HeaderBar>
{/*弹幕*/} {/*弹幕*/}
<Carouselw></Carouselw> <Carouselw></Carouselw>
...@@ -145,13 +161,16 @@ class Detail extends Component { ...@@ -145,13 +161,16 @@ class Detail extends Component {
{/*砍价*/} {/*砍价*/}
<Bargain/> {
this.props.courseInfo && this.props.courseInfo.is_bargain &&
<Bargain/>
}
{/*课程介绍、大纲*/} {/*课程介绍、大纲*/}
<OutLine data={this.props.courseInfo} toAudition={this.toAudition} toSingleset={this.toSingleset}/> <OutLine data={this.props.courseInfo} toAudition={this.toAudition} toSingleset={this.toSingleset}/>
{/*课程按钮*/} {/*课程按钮*/}
<BtnStatus data={this.props.courseInfo}></BtnStatus> <BtnStatus data={this.props.courseInfo} barInfo={this.state.barInfo} getBargainInfo={this.getBargainInfo}></BtnStatus>
</div> </div>
) )
} }
......
...@@ -294,4 +294,4 @@ class Single extends Component { ...@@ -294,4 +294,4 @@ class Single extends Component {
} }
export default Single; export default Single
...@@ -106,7 +106,7 @@ class Preferential extends Component { ...@@ -106,7 +106,7 @@ class Preferential extends Component {
</p> </p>
<p className='contact text-overflow-2'>{item.course_desc}</p> <p className='contact text-overflow-2'>{item.course_desc}</p>
<div className='des'> <div className='des'>
{item.is_buy && {!item.is_buy &&
<p className="course-price"> <p className="course-price">
{this.state.courseStatus === 0 && {this.state.courseStatus === 0 &&
<span className='price'>特惠价:</span> <span className='price'>特惠价:</span>
...@@ -115,7 +115,7 @@ class Preferential extends Component { ...@@ -115,7 +115,7 @@ class Preferential extends Component {
<span className="old">¥{item.price0}</span> <span className="old">¥{item.price0}</span>
</p> </p>
} }
{!item.is_buy && {item.is_buy &&
<a href="/#" className="isbuy">已购买</a> <a href="/#" className="isbuy">已购买</a>
} }
</div> </div>
......
import React, { PureComponent } from 'react' import React, { PureComponent } from 'react'
import { Course, Tag } from '../../../common' import { Tag } from '../../../common'
import Course from '@/common/course-base'
import { http, api } from '@/utils' import { http, api } from '@/utils'
import { Toast } from "antd-mobile"; import { Toast } from "antd-mobile";
import classnames from 'classnames' import classnames from 'classnames'
import {isEmpty} from 'lodash'
import './free-courses.scss' import './free-courses.scss'
...@@ -25,8 +27,8 @@ class FreeCourse extends PureComponent { ...@@ -25,8 +27,8 @@ class FreeCourse extends PureComponent {
componentDidMount() { componentDidMount() {
this.getFreeCourses() this.getFreeCourses()
.then(res => { .then(res => {
if (res.data.code == 200) { let data = res.data
const data = res.data if (data.code == 200) {
this.setState({ this.setState({
courses: data.data, courses: data.data,
}) })
...@@ -36,16 +38,21 @@ class FreeCourse extends PureComponent { ...@@ -36,16 +38,21 @@ class FreeCourse extends PureComponent {
}) })
this.getFreeLive() this.getFreeLive()
.then(res => { .then(res => {
if (res.data.code == 200) { let data = res.data
if (data.code == 200) {
this.setState({ this.setState({
live: res.data.data live: isEmpty(data.data) ? [] : data.data
}) })
} else { } else {
Toast.info(res.data.msg) Toast.info(data.msg, 2, null, false)
} }
}) })
} }
handleClick = id => {
this.props.history.push(`/play?id=${id}`)
}
getFreeCourses = () => { getFreeCourses = () => {
return http.get(`${api.home}/m/free_course/${this.state.page}/${this.state.num}`) return http.get(`${api.home}/m/free_course/${this.state.page}/${this.state.num}`)
} }
...@@ -58,19 +65,6 @@ class FreeCourse extends PureComponent { ...@@ -58,19 +65,6 @@ class FreeCourse extends PureComponent {
return ( return (
<ul className='free-courses'> <ul className='free-courses'>
{ {
this.state.courses.map((item, index) => (
<Course
img={item.logo}
title={item['video_course_name']}
bottom={
<Bottom audience={item['play_times']} className={'tag-category'} text={item.category}/>
}
id={item['v_course_id']}
key={index}
/>
))
}
{
this.state.live.map((item, index) => { this.state.live.map((item, index) => {
const Bottom = ( const Bottom = (
<div className="bottom"> <div className="bottom">
...@@ -79,12 +73,12 @@ class FreeCourse extends PureComponent { ...@@ -79,12 +73,12 @@ class FreeCourse extends PureComponent {
return <i key={index} className={classnames('column', `column-${index + 1}`)}/> return <i key={index} className={classnames('column', `column-${index + 1}`)}/>
})} })}
</div> </div>
<div className="time">{`直播:${item['live_start_time']}`}</div> <div className="time">{`${item['live_start_time']}`}</div>
</div> </div>
) )
return ( return (
<Course <Course
img={item['live_img']} img={item['live_cover']}
title={item['live_title']} title={item['live_title']}
top={ top={
<Tag className={'tag-starting top'}>即将开始</Tag> <Tag className={'tag-starting top'}>即将开始</Tag>
...@@ -92,10 +86,27 @@ class FreeCourse extends PureComponent { ...@@ -92,10 +86,27 @@ class FreeCourse extends PureComponent {
bottom={Bottom} bottom={Bottom}
key={item['live_id']} key={item['live_id']}
className={'live'} className={'live'}
handleClick={this.handleClick}
id={index}
/> />
) )
}) })
} }
{
this.state.courses.map((item, index) => (
<Course
img={item.logo}
title={item['video_course_name']}
handleClick={this.handleClick}
bottom={
<Bottom audience={item['play_times']} className={'tag-category'} text={item.category}/>
}
id={item['v_course_id']}
key={index}
className={'course-item'}
/>
))
}
</ul> </ul>
) )
} }
......
...@@ -7,6 +7,7 @@ import FreeCourses from './freeCourses' ...@@ -7,6 +7,7 @@ import FreeCourses from './freeCourses'
import WithTab from '@/HOCs/WithTab' import WithTab from '@/HOCs/WithTab'
import WithFullSize from '@/HOCs/WithFullSize' import WithFullSize from '@/HOCs/WithFullSize'
import { compose } from 'redux' import { compose } from 'redux'
import PrivateRoute from '@/router/privateRoute'
class Study extends Component { class Study extends Component {
...@@ -45,11 +46,11 @@ class Study extends Component { ...@@ -45,11 +46,11 @@ class Study extends Component {
<Switch> <Switch>
<Redirect exact from='/study' to='study/my-course'/> <Redirect exact from='/study' to='study/my-course'/>
<Route path={`${this.props.match.path}/my-course`} component={MyCourses}/> <Route path={`${this.props.match.path}/my-course`} component={MyCourses}/>
{/*<PrivateRoute path={`${this.props.match.path}/my-course`} component={MyCourses}/>*/}
<Route path={`${this.props.match.path}/free-course`} component={FreeCourses}/> <Route path={`${this.props.match.path}/free-course`} component={FreeCourses}/>
{/*<Route path={`${this.props.match.path}/my-course`} render={props => { {/*<Route path={`${this.props.match.path}/my-course`} render={props => {
<MyCourses storeScrollPosition={this.storeScrollPosition}/> <MyCourses storeScrollPosition={this.storeScrollPosition}/>
}}/>*/} }}/>*/}
<Route path={`${this.props.match.path}/free-course`} component={FreeCourses}/>
</Switch> </Switch>
</div> </div>
</section> </section>
......
import React, { PureComponent } from "react" import React, { PureComponent } from "react"
import { VList } from '@/common' import VList from '@/common/v-list-base'
import './my-courses.scss' import './my-courses.scss'
import { isToday, format } from "date-fns" import { isToday, format } from "date-fns"
import { connect } from "react-redux" import { connect } from "react-redux"
...@@ -72,10 +72,10 @@ class MyCourses extends PureComponent { ...@@ -72,10 +72,10 @@ class MyCourses extends PureComponent {
list; list;
handleClick = id => { handleClick = id => {
this.props.history.push(`/detail?id=${id}`) this.props.history.push(`/play/video?id=${id}`)
} }
addCourseClick = () => { addCourseClick = () => {
console.log(2); this.props.history.push('/classify')
} }
componentDidMount() { componentDidMount() {
......
...@@ -22,7 +22,7 @@ class Video extends Component { ...@@ -22,7 +22,7 @@ class Video extends Component {
state = { state = {
title: '视频', title: '',
courseId: null, courseId: null,
video_catalog: [], video_catalog: [],
datum: [], datum: [],
...@@ -30,7 +30,8 @@ class Video extends Component { ...@@ -30,7 +30,8 @@ class Video extends Component {
activeIndex: 0, activeIndex: 0,
isAuth: true, isAuth: true,
course: null, course: null,
salePrice: null salePrice: null,
vCourseId: null
} }
...@@ -87,7 +88,9 @@ class Video extends Component { ...@@ -87,7 +88,9 @@ class Video extends Component {
video_catalog: data.data['lessons'], video_catalog: data.data['lessons'],
currentVideoSrc: data.data['lessons'][state.activeIndex]['play_url'], currentVideoSrc: data.data['lessons'][state.activeIndex]['play_url'],
course: data.data.course, course: data.data.course,
courseId: data.data.course['course_id'] courseId: data.data.course['course_id'],
vCourseId: data.data.course['v_course_id'],
title: data.data.course['course_title']
}), }),
() => { () => {
if (this.lessonAvailable()) { if (this.lessonAvailable()) {
...@@ -197,11 +200,11 @@ class Video extends Component { ...@@ -197,11 +200,11 @@ class Video extends Component {
render() { render() {
let {match} = this.props let {match, location} = this.props
const {video_catalog, activeIndex, isAuth, salePrice} = this.state const {video_catalog, activeIndex, isAuth, salePrice} = this.state
return ( return (
<div className='play'> <div className='play'>
<HeaderBar title={this.state.title}/> <HeaderBar title={this.state.title} arrow={true}/>
<div className="video"> <div className="video">
<video className={'video-js'} ref={el => this.video = el}> <video className={'video-js'} ref={el => this.video = el}>
<source src={'/'} type='application/x-mpegURL'/> <source src={'/'} type='application/x-mpegURL'/>
...@@ -235,7 +238,10 @@ class Video extends Component { ...@@ -235,7 +238,10 @@ class Video extends Component {
</div> </div>
</div> </div>
<Switch> <Switch>
<Redirect exact from={'/play'} to={'/play/video'}/> <Redirect exact from={'/play'} to={{
pathname: '/play/video',
search: location.search
}}/>
<Route path={`${match.path}/video`} render={props => { <Route path={`${match.path}/video`} render={props => {
return <VideoCatalog return <VideoCatalog
activeIndex={this.state.activeIndex} activeIndex={this.state.activeIndex}
...@@ -248,7 +254,7 @@ class Video extends Component { ...@@ -248,7 +254,7 @@ class Video extends Component {
}}/> }}/>
</Switch> </Switch>
<Route render={props => { <Route render={props => {
return this.state.courseId ? <Recommendation {...props} courseId={this.state.courseId}/> return this.state.vCourseId ? <Recommendation {...props} vCourseId={this.state.vCourseId}/>
: null : null
}}/> }}/>
</div> </div>
......
...@@ -2,7 +2,7 @@ import React, { PureComponent } from 'react'; ...@@ -2,7 +2,7 @@ import React, { PureComponent } from 'react';
import './recommendation.scss' import './recommendation.scss'
import { http, api } from '@/utils' import { http, api } from '@/utils'
import { Toast } from "antd-mobile"; import { Toast } from "antd-mobile";
import {VList} from '@/common'; import VList from '@/common/v-list-base';
...@@ -26,7 +26,11 @@ class Recommendation extends PureComponent { ...@@ -26,7 +26,11 @@ class Recommendation extends PureComponent {
componentDidMount() { componentDidMount() {
http.get(`${api.home}/m/play/recommend_course/${this.props.courseId}?num=${this.state.num}`) this.getRecommendation()
}
getRecommendation = () => {
http.get(`${api.home}/m/play/recommend_course/${this.props.vCourseId}?num=${this.state.num}`)
.then(res => { .then(res => {
const data = res.data const data = res.data
if(data.code === 200){ if(data.code === 200){
...@@ -43,7 +47,7 @@ class Recommendation extends PureComponent { ...@@ -43,7 +47,7 @@ class Recommendation extends PureComponent {
handleClick = id => { handleClick = id => {
console.log(id) this.props.history.push(`/detail?id=${id}`)
} }
render() { render() {
......
...@@ -9,7 +9,7 @@ import rootReducers from './store' ...@@ -9,7 +9,7 @@ import rootReducers from './store'
import App from './App' import App from './App'
const composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose const composeEnhancers = window['__REDUX_DEVTOOLS_EXTENSION_COMPOSE__'] || compose
const store = createStore( const store = createStore(
rootReducers, rootReducers,
......
...@@ -4,7 +4,7 @@ let api = {} ...@@ -4,7 +4,7 @@ let api = {}
Object.keys(config).forEach(item => { Object.keys(config).forEach(item => {
if(item !== 'proxy'){ if(item !== 'proxy'){
api[item] = config[item][process.env.NODE_ENV] api[item] = config[item][process.env.REACT_APP_BUILD_ENV]
} }
}) })
......
...@@ -2,6 +2,7 @@ const config = { ...@@ -2,6 +2,7 @@ const config = {
home: { home: {
development: '/api', development: '/api',
test: 'http://fast-test.julyedu.com', test: 'http://fast-test.julyedu.com',
pre: 'https://fast-pre.julyedu.com',
production: 'https://m.julyedu.com', production: 'https://m.julyedu.com',
proxy: {} proxy: {}
}, },
...@@ -11,29 +12,24 @@ const config = { ...@@ -11,29 +12,24 @@ const config = {
production: 'https://search.julyedu.com', production: 'https://search.julyedu.com',
proxy: {} proxy: {}
}, },
v2: {
development: '/v2',
test: 'https://v2.julyedu.com',
production: 'https://v2.julyedu.com',
proxy: {
secure: false,
}
},
'passport-api': { 'passport-api': {
development: '/passport-api', development: '/passport-api',
test: 'http://passport-test.julyedu.com', test: 'http://passport-test.julyedu.com',
pre: 'http://passport-pre.julyedu.com',
production: 'http://passport.julyedu.com', production: 'http://passport.julyedu.com',
proxy: {} proxy: {}
}, },
'pay-api': { 'pay-api': {
development: '/pay-api', development: '/pay-api',
test: 'http://api-test.julyedu.com', test: 'http://api-test.julyedu.com',
pre: 'http://api-pre.julyedu.com',
production: 'https://api.julyedu.com', production: 'https://api.julyedu.com',
proxy: {} proxy: {}
}, },
'base-api': { 'base-api': {
development: '/base-api', development: '/base-api',
test: 'http://api-test.julyedu.com', test: 'http://api-test.julyedu.com',
pre: 'http://api-pre.julyedu.com',
production: 'https://api.julyedu.com', production: 'https://api.julyedu.com',
proxy: { proxy: {
secure: false secure: false
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment