Commit e002b220 by wangshuo

合并分支

parents a6cfe0b6 a5373bf5
...@@ -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":"oNAUMA,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,KACDQ,MAAQ,CACTC,KAAM,CACFC,UAAa,MACbC,aAAgB,mMAChBC,kBAAqB,mYACrBC,WAAc,qFACdC,OAAU,MACVC,OAAU,MACVC,SAAW,EACXC,GAAM,IAXChB,wEAiBf,IAAMiB,EACFC,EAAAC,EAAAC,cAAA,OAAKC,UAAU,QACXH,EAAAC,EAAAC,cAAA,KAAGC,UAAU,SACTH,EAAAC,EAAAC,cAACE,EAAA,EAAD,CAAMC,GAAE,cAAAC,OAAgBrB,KAAKI,MAAMC,KAAKC,YACnCN,KAAKI,MAAMC,KAAKE,eAGzBQ,EAAAC,EAAAC,cAAA,KAAGC,UAAU,2BAA2BlB,KAAKI,MAAMC,KAAKG,mBACxDO,EAAAC,EAAAC,cAAA,OAAKC,UAAU,OACXH,EAAAC,EAAAC,cAAA,KAAGC,UAAU,gBACTH,EAAAC,EAAAC,cAAA,QAAMC,UAAU,OAAhB,OAAwBlB,KAAKI,MAAMC,KAAKM,QACxCI,EAAAC,EAAAC,cAAA,QAAMC,UAAU,OAAhB,OAAwBlB,KAAKI,MAAMC,KAAKK,WAKxD,OACIK,EAAAC,EAAAC,cAAA,OAAKC,UAAU,gBACXH,EAAAC,EAAAC,cAACK,EAAA,EAAD,CAAWC,MAAM,eAAKC,OAAO,EAAMC,MAAM,IACzCV,EAAAC,EAAAC,cAACK,EAAA,EAAD,CAAOI,IAAK1B,KAAKI,MAAMC,KAAKI,WAAYkB,GAAI3B,KAAKI,MAAMC,KAAKC,UAAWsB,KAAMd,IAE7EC,EAAAC,EAAAC,cAACY,EAAD,CAAcxB,KAAML,KAAKI,MAAMC,OAG/BU,EAAAC,EAAAC,cAAA,OAAKC,UAAU,gBACXH,EAAAC,EAAAC,cAAA,OAAKC,UAAU,aACXH,EAAAC,EAAAC,cAAA,wCACAF,EAAAC,EAAAC,cAACE,EAAA,EAAD,CAAMC,GAAE,gBAAmBF,UAAU,QAArC,eAA8CH,EAAAC,EAAAC,cAAA,KAAGC,UAAU,gCAE/DH,EAAAC,EAAAC,cAACK,EAAA,EAAD,CAAOI,IAAK1B,KAAKI,MAAMC,KAAKI,WAAYkB,GAAI3B,KAAKI,MAAMC,KAAKC,UAAWsB,KAAMd,aA/C3EgB,aAsDtB,SAASD,EAAajC,GAElB,IAAImC,EAAKC,EAAKC,EAcd,OAfAC,QAAQC,IAAIvC,GAEU,IAAlBA,EAAMS,KAAKQ,IACXkB,EAAMhB,EAAAC,EAAAC,cAAA,KAAGC,UAAU,OAAb,+BACNc,EAAMjB,EAAAC,EAAAC,cAACE,EAAA,EAAD,CAAMC,GAAE,IAAOF,UAAU,aAAzB,8EACNe,EAAMlB,EAAAC,EAAAC,cAAA,KAAGC,UAAU,OAAb,kFAGNa,EAAMhB,EAAAC,EAAAC,cAAA,KAAGC,UAAU,OAAb,+BACNc,EAAMjB,EAAAC,EAAAC,cAACE,EAAA,EAAD,CAAMC,GAAE,IAAOF,UAAU,aAAzB,6BAENtB,EAAMS,KAAKO,UACXmB,EAAMhB,EAAAC,EAAAC,cAAA,KAAGC,UAAU,WAAb,4BACNc,EAAMjB,EAAAC,EAAAC,cAACE,EAAA,EAAD,CAAMC,GAAE,QAAWF,UAAU,WAA7B,uBAGNH,EAAAC,EAAAC,cAAA,OAAKC,UAAU,iBACVa,EACDhB,EAAAC,EAAAC,cAAA,OAAKC,UAAU,UAAUkB,IAAKxC,EAAMS,KAAKI,WAAY4B,IAAI,KACzDtB,EAAAC,EAAAC,cAAA,OAAKC,UAAU,UAAUkB,IAAKxC,EAAMS,KAAKI,WAAY4B,IAAI,KACzDtB,EAAAC,EAAAC,cAAA,OAAKC,UAAU,UAAUkB,IAAKxC,EAAMS,KAAKI,WAAY4B,IAAI,KACxDL,EACAC,GAEIrC,EAAMS,KAAKO,SACZG,EAAAC,EAAAC,cAAA,OAAKC,UAAU,aACXH,EAAAC,EAAAC,cAAA,YACIF,EAAAC,EAAAC,cAAA,KAAGC,UAAU,6BADjB,kGAIAH,EAAAC,EAAAC,cAAA,QAAMC,UAAU,UAAhB,uCAOLvB","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,11 @@ module.exports = function(webpackEnv) { ...@@ -98,6 +98,11 @@ module.exports = function(webpackEnv) {
}, },
stage: 3, stage: 3,
}), }),
require('postcss-px-to-viewport')({
viewportWidth: 375,
unitPrecision: 6,
selectorBlackList: ['skip-vw']
})
], ],
sourceMap: isEnvProduction && shouldUseSourceMap, sourceMap: isEnvProduction && shouldUseSourceMap,
}, },
......
{ {
"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",
...@@ -61,6 +62,7 @@ ...@@ -61,6 +62,7 @@
"react-mobile-swiper": "^1.1.4", "react-mobile-swiper": "^1.1.4",
"react-redux": "^7.0.2", "react-redux": "^7.0.2",
"react-router-dom": "^5.0.1", "react-router-dom": "^5.0.1",
"react-spinners": "^0.5.4",
"redux": "^4.0.1", "redux": "^4.0.1",
"redux-immutable": "^4.0.0", "redux-immutable": "^4.0.0",
"redux-logger": "^3.0.6", "redux-logger": "^3.0.6",
...@@ -80,6 +82,8 @@ ...@@ -80,6 +82,8 @@
"scripts": { "scripts": {
"start": "node scripts/start.js", "start": "node scripts/start.js",
"build": "node scripts/build.js", "build": "node scripts/build.js",
"build-pre": "node scripts/build-pre.js",
"build-test": "node scripts/build-test.js",
"test": "node scripts/test.js" "test": "node scripts/test.js"
}, },
"eslintConfig": { "eslintConfig": {
...@@ -154,6 +158,7 @@ ...@@ -154,6 +158,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
......
import React, { Component } from 'react' import React, { Component } from 'react'
import Routes from './router' import Routes from './router'
import cookie from 'js-cookie' import cookie from 'js-cookie'
import { http, api } from '@/utils'; import { connect } from "react-redux";
import { connect } from 'react-redux'; import { setCurrentUser, startFetchUser } from "@/store/userAction";
import { setCurrentUser } from '@/store/userAction'; import { withRouter } from 'react-router-dom'
import { compose } from 'redux'
import { api, getParam, http } from "@/utils";
import { Toast } from "antd-mobile";
import jsCookie from 'js-cookie'
import { addDays } from 'date-fns'
//拦截ajax请求,返回mock数据 //拦截ajax请求,返回mock数据
...@@ -24,12 +29,45 @@ class App extends Component { ...@@ -24,12 +29,45 @@ class App extends Component {
//平台信息 //平台信息
cookie.set('plat', '5') cookie.set('plat', '5')
this.props.startFetchUser()
http.get(`${api.home}/m/user_info`).then(res => { http.get(`${api.home}/m/user_info`).then(res => {
this.props.setCurrentUser(this.storeUser(res)) this.props.setCurrentUser(this.transformUser(res))
}) })
let code = getParam('code')
if (code) {
http.get(`${api['home']}/m/wx_loginInfo/code/${code}`)
.then(res => {
let data = res.data
console.log(res)
if (data.errno == 200) {
if (data.data['is_bind_mobile']) {
window.location.assign(data.data.url)
} else {
let user = this.transformWxUser(res)
let {role, uid, token} = data.data
let expires = {expires: addDays(new Date(), 90)}
jsCookie.set('role', role, expires)
jsCookie.set('uid', uid, expires)
jsCookie.set('token', token, expires)
this.props.receiveUser(user)
}
} else {
Toast.info(data.msg)
}
})
}
} }
storeUser = res => { transformUser = res => {
let payload let payload
if (res.data.code === 200) { if (res.data.code === 200) {
const { const {
...@@ -64,13 +102,41 @@ class App extends Component { ...@@ -64,13 +102,41 @@ class App extends Component {
return payload return payload
} }
transformWxUser = res => {
let data = res.data
if (data.errno == 200) {
let {uid, token, avatar_file: avatar, uname: username,} = data.data
return {
hasError: false,
data: {
uid,
token,
avatar,
username
},
msg: data.msg
}
} else {
let {code, msg} = data.data
return {
code,
msg,
hasError: true,
data: {}
}
}
}
render() { render() {
return <Routes/> return <Routes/>
} }
} }
export default connect( export default compose(
null, connect(
{setCurrentUser} null,
{setCurrentUser, startFetchUser}
),
withRouter
)(App) )(App)
\ No newline at end of file
...@@ -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`
......
...@@ -40,6 +40,7 @@ $font_12: 12px; ...@@ -40,6 +40,7 @@ $font_12: 12px;
*/ */
$bg_active: #09f; $bg_active: #09f;
$bg_0078FF: #0078FF; $bg_0078FF: #0078FF;
$bg_0080FF: #0080FF;
$bg_fff: #fff; $bg_fff: #fff;
$bg_000: #000; $bg_000: #000;
$bg_f4f4f4: #f4f4f4; $bg_f4f4f4: #f4f4f4;
......
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, { Component } from 'react' import React, { Component } from 'react';
import { ActivityIndicator } from 'antd-mobile' import ReactDOM from 'react-dom'
import { HashLoader } from "react-spinners";
import './loading.scss' import './loading.scss'
export default class componentName extends Component {
const container = document.body
class Loading extends Component {
static defaultProps = {
text: '加载中',
fake: 0
}
state = {
isLoading: true
}
componentDidUpdate(prevProps) {
let {isLoading, fake} = this.props
if (!isLoading) {
if(fake){
setTimeout(() => {
this.setState({
isLoading
})
}, fake)
}else {
if(prevProps.isLoading != isLoading){
this.setState({
isLoading
})
}
}
}
}
render() { render() {
return ( const innerLoading =
<div className="loading"> <div className="loading">
<ActivityIndicator></ActivityIndicator> <div className="loading-wrapper">
<span>加载中</span> <HashLoader
css={{
display: 'block',
marginTop: '-100px'
}}
size={50}
color={'#09f'}
/>
<p>{this.props.text}</p>
</div>
</div> </div>
)
return (
this.state.isLoading ? ReactDOM.createPortal(innerLoading, container) : this.props.children
);
} }
} }
export default Loading;
\ No newline at end of file
.loading{ .loading {
display: flex; position: absolute;
width:100%; top: 50%;
height:44px; left: 50%;
line-height: 44px; transform: translate(-50%, -50%);
justify-content: center; .loading-wrapper {
align-items: center; display: flex;
span{ flex-flow: column;
margin-left:5px; justify-content: center;
align-items: center;
p {
font-size: 14px;
margin-top: 12px;
color: $active;
}
} }
} }
\ No newline at end of file
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;
}
}
}
...@@ -153,7 +153,8 @@ class Index extends Component { ...@@ -153,7 +153,8 @@ class Index extends Component {
{/* 直播间预约 */} {/* 直播间预约 */}
{ {
this.state.islive && this.state.islive &&
<LiveRoom isShow={this.state.isShow} colseBox={this.colseBox} roomMess={this.state.roomMess}></LiveRoom> <LiveRoom isShow={this.state.isShow} colseBox={this.colseBox}
roomMess={this.state.roomMess}></LiveRoom>
} }
</div> </div>
...@@ -258,10 +259,13 @@ function ScrollBox(props) { ...@@ -258,10 +259,13 @@ function ScrollBox(props) {
<div className="item-content"> <div className="item-content">
<h2 className="item-title">{item.live_title}</h2> <h2 className="item-title">{item.live_title}</h2>
<p className="item-teacher">讲师:{item.live_teacher_name}</p> <p className="item-teacher">讲师:{item.live_teacher_name}</p>
<p className="item-time">时间:{item.live_start_time}</p>
{ {
item.live_status === 1 && item.is_prepare &&
<span>已预约</span> <p className="item-time">时间:{item.live_start_time}</p>
}
{
!item.is_prepare &&
<p className='item-btn'>预约</p>
} }
</div> </div>
</div> </div>
......
...@@ -185,10 +185,12 @@ ...@@ -185,10 +185,12 @@
text-align: center; text-align: center;
border-radius: 0 20px 20px 0; border-radius: 0 20px 20px 0;
} }
.no-start{
.no-start {
background-color: $red; background-color: $red;
} }
.start{
.start {
background-color: $bg_active; background-color: $bg_active;
} }
...@@ -205,6 +207,18 @@ ...@@ -205,6 +207,18 @@
white-space: nowrap white-space: nowrap
} }
.item-btn {
width: 49px;
height: 20px;
text-align: center;
line-height: 20px;
background: linear-gradient(60deg, $bg_active 0%, $bg_0080FF 100%);
border-radius: 10px;
font-size: 14px;
color: $white;
margin-top: 10px;
}
.item-title { .item-title {
font-size: 16px; font-size: 16px;
color: $color_333; color: $color_333;
......
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 {
...@@ -26,41 +25,88 @@ class BtnStatus extends Component { ...@@ -26,41 +25,88 @@ class BtnStatus extends Component {
}); });
} }
// 加入购物车 // 加入购物车 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) {
this.props.getCourses(); Toast.info('已加入购物车', 2)
// 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);
} }
}) })
} }
// 直接购买 TODO 等弄清楚了逻辑 再和加入购物车合并 // 直接购买
toBuy = () => { tobuy = () => {
if (this.props.barInfo.bargain_status === 2) {
this.toCart(2)
} else {
// 取消砍价记录
this.setState({
isShowOverlay: true,
bargainStatus: 1,
})
}
}
// 取消砍价
cancel = () => {
let data = { let data = {
course_id: getParam('id') courseId: getParam('id')
}; }
http.post(`${api.home}/m/cart/add`, data).then((res) => { http.post(`${api.home}/m/bargain/cancel`, data).then((res) => {
if(res.data.code !== 200) { if (res.data.code === 200) {
Toast.info(res.data.msg, 2); this.setState({
return; 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)
} }
this.props.history.replace('/shopcart');
}) })
} }
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 (
...@@ -79,7 +125,7 @@ class BtnStatus extends Component { ...@@ -79,7 +125,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>
...@@ -134,27 +180,27 @@ class BtnStatus extends Component { ...@@ -134,27 +180,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' onClick={this.toCart}> <button className='btn btn-s bg-F4AAA7'>
<span>{${info.price}`}</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>{${info.price}`}</span> <span>{${info.price}`}</span>
<span>去支付</span> <span onClick={e => this.toCart(2)}>去支付</span>
</button> </button>
} }
</div> </div>
...@@ -170,12 +216,41 @@ class BtnStatus extends Component { ...@@ -170,12 +216,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"
...@@ -27,20 +27,19 @@ class Detail extends Component { ...@@ -27,20 +27,19 @@ class Detail extends Component {
shareRank: false, shareRank: false,
singMess: '', singMess: '',
share: false, share: false,
barInfo: '',
} }
} }
componentDidMount() { componentDidMount() {
this.props.fetchCoursesListIfNeeded() this.props.fetchCoursesListIfNeeded()
this.getBargainInfo()
} }
componentDidUpdate() { componentDidUpdate() {
} }
toApp = () => {
alert('toApp')
}
// 点击子组件试听按钮 // 点击子组件试听按钮
toAudition = () => { toAudition = () => {
this.setState(status => ({ this.setState(status => ({
...@@ -110,6 +109,22 @@ class Detail extends Component { ...@@ -110,6 +109,22 @@ 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
boxHide = (val) => { boxHide = (val) => {
...@@ -131,7 +146,7 @@ class Detail extends Component { ...@@ -131,7 +146,7 @@ class Detail extends Component {
const { share } = this.state; const { share } = this.state;
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>
...@@ -208,28 +223,29 @@ class Detail extends Component { ...@@ -208,28 +223,29 @@ class Detail extends Component {
{/*砍价*/} {/*砍价*/}
{ {
is_bargain && <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} invitedFriends={this.invitedFriends} history={this.props.history}></BtnStatus> <BtnStatus data={this.props.courseInfo} barInfo={this.state.barInfo} getBargainInfo={this.getBargainInfo} invitedFriends={this.invitedFriends} history={this.props.history}></BtnStatus>
{ {
share ? ( share ? (
<div className='groupSuccessMbc' onClick={()=>{this.setState({share: false})}}> <div className='groupSuccessMbc' onClick={()=>{this.setState({share: false})}}>
<div className='tipContent'> <div className='tipContent'>
{`还差${number}人,分享到3个群,成团率高达98%`} {`还差${number}人,分享到3个群,成团率高达98%`}
</div> </div>
<div className='tipArrow'> <div className='tipArrow'>
<i className='iconfont iconyindao'></i> <i className='iconfont iconyindao'></i>
</div>
</div> </div>
</div> ) : null
) : null }
}
</div> </div>
) )
} }
......
...@@ -294,4 +294,4 @@ class Single extends Component { ...@@ -294,4 +294,4 @@ class Single extends Component {
} }
export default Single; export default Single
...@@ -6,6 +6,7 @@ import { compose } from 'redux'; ...@@ -6,6 +6,7 @@ import { compose } from 'redux';
import { accountLogin } from '@/store/userAction'; import { accountLogin } from '@/store/userAction';
import { connect } from "react-redux"; import { connect } from "react-redux";
import { isEmpty } from 'lodash' import { isEmpty } from 'lodash'
import { HeaderBar } from "@/common";
import Header from "../common/Header"; import Header from "../common/Header";
...@@ -16,11 +17,6 @@ import { Toast } from "antd-mobile"; ...@@ -16,11 +17,6 @@ import { Toast } from "antd-mobile";
class AccountLogin extends PureComponent { class AccountLogin extends PureComponent {
componentDidMount() {
console.log(this.props.values);
}
render() { render() {
const { const {
errors, errors,
...@@ -28,6 +24,7 @@ class AccountLogin extends PureComponent { ...@@ -28,6 +24,7 @@ class AccountLogin extends PureComponent {
} = this.props } = this.props
return ( return (
<div className={'account-login'}> <div className={'account-login'}>
<HeaderBar arrow={true} title={'登录'}/>
<Header/> <Header/>
<Form className="login-info"> <Form className="login-info">
<FastField <FastField
...@@ -75,10 +72,9 @@ const formikConfig = { ...@@ -75,10 +72,9 @@ const formikConfig = {
props.accountLogin({ props.accountLogin({
username, password username, password
}).then(res => { }).then(res => {
console.log(res);
if (!res.hasError) { if (!res.hasError) {
let {from} = props.location.state || {from: {pathname: '/'}} let {from} = props.location.state || {from: {pathname: '/'}}
history.push(from.pathname) history.replace(from.pathname)
} else { } else {
Toast.info(res.msg, 2, null, false) Toast.info(res.msg, 2, null, false)
} }
......
...@@ -11,13 +11,6 @@ ...@@ -11,13 +11,6 @@
margin-bottom: 21px; margin-bottom: 21px;
} }
.place {
width: 100%;
height: 39px;
margin-bottom: 33px;
background: #56abff;
}
.verification { .verification {
margin-bottom: 21px; margin-bottom: 21px;
} }
......
import React, { Component } from 'react'; import React, { Component } from 'react';
import './binding-tel.scss' import './binding-tel.scss'
import { withFormik, Field, Form } from "formik";
import { validateTel, http, api, getParam } from "@/utils";
import { compose } from "redux";
import { connect } from "react-redux";
import { setCurrentUser } from "@/store/userAction";
import Captcha from '@/common/Captcha'
import ClearableInput from '@common/ClearableInput' import ClearableInput from '@common/ClearableInput'
import Button from '../common/Button' import Button from '../common/Button'
import VeriCodeInput from '../common/veriCodeInput' import VeriCodeInput from '../common/veriCodeInput'
import { Toast } from "antd-mobile";
import { isEmpty } from "lodash";
class BindingTel extends Component { class BindingTel extends Component {
constructor(props) {
super(props); state = {
this.state = { validate: null,
veriCode: '' captchaInstance: null
};
} }
handleChange = (val) => { getCaptchaInstance = instance => {
this.setState({veriCode: val}); this.setState({
captchaInstance: instance
})
}
onVerify = (err, data) => {
if (err) {
console.log(err)
} else {
this.setState({
validate: data.validate
})
}
} }
render() { render() {
const {
values,
errors
} = this.props
return ( return (
<div className={'binding-tel'}> <div className={'binding-tel'}>
<p className={'title'}>为提高您的账号安全,请绑定手机号</p> <p className={'title'}>为提高您的账号安全,请绑定手机号</p>
<ClearableInput <Form>
type={'number'} <Field
placeholder={'请输入需要绑定的手机号'} name='tel'
wrapperClass={'tel'} render={({field, form}) => {
icon={<i className={'iconfont iconshouji'} return (
style={{fontSize: '22px', left: '11px'}} <ClearableInput
/>} {...field}
/> setFieldValue={form.setFieldValue}
<VeriCodeInput placeholder={'请输入需要绑定的手机号'}
type={'number'} wrapperClass={'tel'}
className={'verification'} icon={<i className={'iconfont iconshouji'}
onChange={this.handleChange} style={{fontSize: '22px', left: '11px'}}
icon={<i className={'iconfont iconduanxin'} />}
style={{fontSize: '20px', left: '12px'}} />
/>}
/> )
<div className="place"/> }}
<Button className={'complete-btn'}>完成</Button> />
<Field
name='veriCode'
render={({field}) => {
return (
<VeriCodeInput
{...field}
className={'verification'}
icon={<i className={'iconfont iconduanxin'}
style={{fontSize: '20px', left: '12px'}}
/>}
account={values.tel}
tel={values.tel}
challenge={this.state.validate}
instance={this.state.captchaInstance}
action={'auth'}
/>
)
}}
/>
<Captcha onVerify={this.onVerify} getInstance={this.getCaptchaInstance}/>
<Button className={'complete-btn'} active={values.tel && values.veriCode && isEmpty(errors)}>完成</Button>
</Form>
</div> </div>
); );
} }
} }
export default BindingTel;
\ No newline at end of file const formikConfig = {
mapPropsToValues() {
return {
tel: '',
veriCode: ''
}
},
validateOnChange: true,
validate(values) {
let errors = {}
if (!validateTel(values.tel)) {
errors.tel = '请输入正确的手机号'
}
if (!values.veriCode) {
errors.veriCode = '请填写验证码'
}
return errors
},
handleSubmit(values, {props}) {
http.post(`${api['passport-api']}/bind_mobile`, {
phone_num: values.tel,
phone_code: values.veriCode,
mkey: getParam('mkey'),
plat: 5
}).then(res => {
const data = res.data
if (data.errno == 200) {
if (data.data['is_set_pwd']) {
props.setCurrentUser({
hasError: false,
data: {
uid: data.data.uid
},
msg: data.data.msg
})
props.history.replace(`/passport/set-password`)
}else {
location.assign(data.data['jump_url'])
}
} else {
Toast.info(data.msg, 2, null, false)
}
/*props.setCurrentUser({
hasError,
data
})*/
})
}
}
export default compose(
connect(
null,
{setCurrentUser}
),
withFormik(formikConfig),
)(BindingTel);
\ No newline at end of file
import React, { PureComponent } from 'react'; import React, { PureComponent } from 'react';
import { browser } from "@/utils";
import './loginWays.scss' import './loginWays.scss'
class LoginWays extends PureComponent { class LoginWays extends PureComponent {
handleClick = (index) => { state = {
this.props.onClick(index) ways: this.props.loginWays
}
componentDidMount() {
if (!browser.isWeixin) {
this.setState({
ways: this.state.ways.filter(item => item.text !== '微信')
})
}
}
handleClick = text => {
this.props.onClick(text)
} }
render() { render() {
...@@ -14,9 +28,9 @@ class LoginWays extends PureComponent { ...@@ -14,9 +28,9 @@ class LoginWays extends PureComponent {
<div className="bottom-title">其他登录方式</div> <div className="bottom-title">其他登录方式</div>
<ul className='login-ways-container'> <ul className='login-ways-container'>
{ {
this.props.loginWays.map((item, index) => { this.state.ways.map((item, index) => {
return ( return (
<li key={index} onClick={this.handleClick.bind(this, index)}> <li key={index} onClick={this.handleClick.bind(this, item.text)}>
<img src={item.logo} alt=""/> <img src={item.logo} alt=""/>
<p>{item.text}</p> <p>{item.text}</p>
</li> </li>
......
...@@ -36,6 +36,10 @@ ...@@ -36,6 +36,10 @@
li { li {
text-align: center; text-align: center;
a{
display: block;
}
img { img {
width: 34px; width: 34px;
} }
......
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