Commit e002b220 by wangshuo

合并分支

parents a6cfe0b6 a5373bf5
......@@ -9,7 +9,6 @@
/coverage
# production
/build
.history/
.idea/
# misc
......
{
"coupons.css": "/static/css/coupons.9ece7350.chunk.css",
"coupons.js": "/static/js/coupons.6a94a878.chunk.js",
"coupons.js.map": "/static/js/coupons.6a94a878.chunk.js.map",
"main.css": "/static/css/main.afa9aa9f.chunk.css",
"main.js": "/static/js/main.24ad8e4e.chunk.js",
"main.js.map": "/static/js/main.24ad8e4e.chunk.js.map",
"myorders.css": "/static/css/myorders.3ab93c8e.chunk.css",
"myorders.js": "/static/js/myorders.9736dcd8.chunk.js",
"myorders.js.map": "/static/js/myorders.9736dcd8.chunk.js.map",
"purchased.css": "/static/css/purchased.72c55bd6.chunk.css",
"purchased.js": "/static/js/purchased.380e692a.chunk.js",
"purchased.js.map": "/static/js/purchased.380e692a.chunk.js.map",
"runtime~main.js": "/static/js/runtime~main.a0b841fe.js",
"runtime~main.js.map": "/static/js/runtime~main.a0b841fe.js.map",
"shareposter.css": "/static/css/shareposter.82081d02.chunk.css",
"shareposter.js": "/static/js/shareposter.5e83848f.chunk.js",
"shareposter.js.map": "/static/js/shareposter.5e83848f.chunk.js.map",
"study.css": "/static/css/study.586bcabb.chunk.css",
"study.js": "/static/js/study.becfeee6.chunk.js",
"study.js.map": "/static/js/study.becfeee6.chunk.js.map",
"togroup.css": "/static/css/togroup.f8580590.chunk.css",
"togroup.js": "/static/js/togroup.6905e23b.chunk.js",
"togroup.js.map": "/static/js/togroup.6905e23b.chunk.js.map",
"video.css": "/static/css/video.10e4a7e1.chunk.css",
"video.js": "/static/js/video.1b371a9a.chunk.js",
"video.js.map": "/static/js/video.1b371a9a.chunk.js.map",
"static/css/9.7c331155.chunk.css": "/static/css/9.7c331155.chunk.css",
"static/js/9.0d233def.chunk.js": "/static/js/9.0d233def.chunk.js",
"static/js/9.0d233def.chunk.js.map": "/static/js/9.0d233def.chunk.js.map",
"static/css/10.1597b3e9.chunk.css": "/static/css/10.1597b3e9.chunk.css",
"static/js/10.38fa9101.chunk.js": "/static/js/10.38fa9101.chunk.js",
"static/js/10.38fa9101.chunk.js.map": "/static/js/10.38fa9101.chunk.js.map",
"static/js/11.a116d384.chunk.js": "/static/js/11.a116d384.chunk.js",
"static/js/11.a116d384.chunk.js.map": "/static/js/11.a116d384.chunk.js.map",
"index.html": "/index.html",
"precache-manifest.f771f70cb50c97ca116171f042920554.js": "/precache-manifest.f771f70cb50c97ca116171f042920554.js",
"service-worker.js": "/service-worker.js",
"static/css/10.1597b3e9.chunk.css.map": "/static/css/10.1597b3e9.chunk.css.map",
"static/css/9.7c331155.chunk.css.map": "/static/css/9.7c331155.chunk.css.map",
"static/css/coupons.9ece7350.chunk.css.map": "/static/css/coupons.9ece7350.chunk.css.map",
"static/css/main.afa9aa9f.chunk.css.map": "/static/css/main.afa9aa9f.chunk.css.map",
"static/css/myorders.3ab93c8e.chunk.css.map": "/static/css/myorders.3ab93c8e.chunk.css.map",
"static/css/purchased.72c55bd6.chunk.css.map": "/static/css/purchased.72c55bd6.chunk.css.map",
"static/css/shareposter.82081d02.chunk.css.map": "/static/css/shareposter.82081d02.chunk.css.map",
"static/css/study.586bcabb.chunk.css.map": "/static/css/study.586bcabb.chunk.css.map",
"static/css/togroup.f8580590.chunk.css.map": "/static/css/togroup.f8580590.chunk.css.map",
"static/css/video.10e4a7e1.chunk.css.map": "/static/css/video.10e4a7e1.chunk.css.map",
"static/media/iconfont.css": "/static/media/iconfont.c8b2c37e.svg"
}
\ No newline at end of file
<!doctype html><html lang="en"><head><meta charset="utf-8"/><link rel="shortcut icon" href="/favicon.ico"/><meta name="viewport" content="width=device-width,initial-scale=1,shrink-to-fit=no,user-scalable=no"/><meta name="theme-color" content="#000000"/><link rel="manifest" href="/manifest.json"/><title>React App</title><link href="/static/css/9.7c331155.chunk.css" rel="stylesheet"><link href="/static/css/main.afa9aa9f.chunk.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div><script>!function(c){function e(e){for(var t,r,n=e[0],o=e[1],a=e[2],u=0,i=[];u<n.length;u++)r=n[u],d[r]&&i.push(d[r][0]),d[r]=0;for(t in o)Object.prototype.hasOwnProperty.call(o,t)&&(c[t]=o[t]);for(h&&h(e);i.length;)i.shift()();return l.push.apply(l,a||[]),s()}function s(){for(var e,t=0;t<l.length;t++){for(var r=l[t],n=!0,o=1;o<r.length;o++){var a=r[o];0!==d[a]&&(n=!1)}n&&(l.splice(t--,1),e=p(p.s=r[0]))}return e}var r={},f={4:0},d={4:0},l=[];function p(e){if(r[e])return r[e].exports;var t=r[e]={i:e,l:!1,exports:{}};return c[e].call(t.exports,t,t.exports,p),t.l=!0,t.exports}p.e=function(l){var e=[];f[l]?e.push(f[l]):0!==f[l]&&{0:1,2:1,3:1,5:1,6:1,7:1,8:1,10:1}[l]&&e.push(f[l]=new Promise(function(e,n){for(var t="static/css/"+({0:"coupons",2:"myorders",3:"purchased",5:"shareposter",6:"study",7:"togroup",8:"video"}[l]||l)+"."+{0:"9ece7350",2:"3ab93c8e",3:"72c55bd6",5:"82081d02",6:"586bcabb",7:"f8580590",8:"10e4a7e1",10:"1597b3e9",11:"31d6cfe0"}[l]+".chunk.css",o=p.p+t,r=document.getElementsByTagName("link"),a=0;a<r.length;a++){var u=(c=r[a]).getAttribute("data-href")||c.getAttribute("href");if("stylesheet"===c.rel&&(u===t||u===o))return e()}var i=document.getElementsByTagName("style");for(a=0;a<i.length;a++){var c;if((u=(c=i[a]).getAttribute("data-href"))===t||u===o)return e()}var s=document.createElement("link");s.rel="stylesheet",s.type="text/css",s.onload=e,s.onerror=function(e){var t=e&&e.target&&e.target.src||o,r=new Error("Loading CSS chunk "+l+" failed.\n("+t+")");r.request=t,delete f[l],s.parentNode.removeChild(s),n(r)},s.href=o,document.getElementsByTagName("head")[0].appendChild(s)}).then(function(){f[l]=0}));var r=d[l];if(0!==r)if(r)e.push(r[2]);else{var t=new Promise(function(e,t){r=d[l]=[e,t]});e.push(r[2]=t);var n,a=document.createElement("script");a.charset="utf-8",a.timeout=120,p.nc&&a.setAttribute("nonce",p.nc),a.src=p.p+"static/js/"+({0:"coupons",2:"myorders",3:"purchased",5:"shareposter",6:"study",7:"togroup",8:"video"}[l]||l)+"."+{0:"6a94a878",2:"9736dcd8",3:"380e692a",5:"5e83848f",6:"becfeee6",7:"6905e23b",8:"1b371a9a",10:"38fa9101",11:"a116d384"}[l]+".chunk.js",n=function(e){a.onerror=a.onload=null,clearTimeout(u);var t=d[l];if(0!==t){if(t){var r=e&&("load"===e.type?"missing":e.type),n=e&&e.target&&e.target.src,o=new Error("Loading chunk "+l+" failed.\n("+r+": "+n+")");o.type=r,o.request=n,t[1](o)}d[l]=void 0}};var u=setTimeout(function(){n({type:"timeout",target:a})},12e4);a.onerror=a.onload=n,document.head.appendChild(a)}return Promise.all(e)},p.m=c,p.c=r,p.d=function(e,t,r){p.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},p.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},p.t=function(t,e){if(1&e&&(t=p(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(p.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var n in t)p.d(r,n,function(e){return t[e]}.bind(null,n));return r},p.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return p.d(t,"a",t),t},p.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},p.p="/",p.oe=function(e){throw console.error(e),e};var t=window.webpackJsonp=window.webpackJsonp||[],n=t.push.bind(t);t.push=e,t=t.slice();for(var o=0;o<t.length;o++)e(t[o]);var h=n;s()}([])</script><script src="/static/js/9.0d233def.chunk.js"></script><script src="/static/js/main.24ad8e4e.chunk.js"></script></body></html>
\ No newline at end of file
{
"short_name": "React App",
"name": "Create React App Sample",
"icons": [
{
"src": "favicon.ico",
"sizes": "64x64 32x32 24x24 16x16",
"type": "image/x-icon"
}
],
"start_url": ".",
"display": "standalone",
"theme_color": "#000000",
"background_color": "#ffffff"
}
self.__precacheManifest = [
{
"revision": "22599f6c1f51f88f82fd",
"url": "/static/css/togroup.f8580590.chunk.css"
},
{
"revision": "12ee73e77f848f58fd7c",
"url": "/static/css/coupons.9ece7350.chunk.css"
},
{
"revision": "296005d9c61697b32113",
"url": "/static/css/main.afa9aa9f.chunk.css"
},
{
"revision": "296005d9c61697b32113",
"url": "/static/js/main.24ad8e4e.chunk.js"
},
{
"revision": "511f4ca73ebbf3a3f2da",
"url": "/static/css/myorders.3ab93c8e.chunk.css"
},
{
"revision": "511f4ca73ebbf3a3f2da",
"url": "/static/js/myorders.9736dcd8.chunk.js"
},
{
"revision": "7bbd26a203518ee43ff0",
"url": "/static/css/purchased.72c55bd6.chunk.css"
},
{
"revision": "7bbd26a203518ee43ff0",
"url": "/static/js/purchased.380e692a.chunk.js"
},
{
"revision": "5c5cc7adee111c75db41",
"url": "/static/js/runtime~main.a0b841fe.js"
},
{
"revision": "6b373210ef67d1ffe7fd",
"url": "/static/css/shareposter.82081d02.chunk.css"
},
{
"revision": "6b373210ef67d1ffe7fd",
"url": "/static/js/shareposter.5e83848f.chunk.js"
},
{
"revision": "92125ab95fca6d68b445",
"url": "/static/css/study.586bcabb.chunk.css"
},
{
"revision": "92125ab95fca6d68b445",
"url": "/static/js/study.becfeee6.chunk.js"
},
{
"revision": "12ee73e77f848f58fd7c",
"url": "/static/js/coupons.6a94a878.chunk.js"
},
{
"revision": "22599f6c1f51f88f82fd",
"url": "/static/js/togroup.6905e23b.chunk.js"
},
{
"revision": "23a23321288bbc9b96a4",
"url": "/static/css/video.10e4a7e1.chunk.css"
},
{
"revision": "23a23321288bbc9b96a4",
"url": "/static/js/video.1b371a9a.chunk.js"
},
{
"revision": "c8b2c37ec2ac7323c8f8657bcb61324c",
"url": "/static/media/iconfont.c8b2c37e.svg"
},
{
"revision": "83d0e8b5e32111cbbebc",
"url": "/static/js/9.0d233def.chunk.js"
},
{
"revision": "6d0ba0d457675abacadaae1a7e6f5d63",
"url": "/static/media/iconfont.6d0ba0d4.ttf"
},
{
"revision": "5b37aebbc2c70a84e891",
"url": "/static/js/10.38fa9101.chunk.js"
},
{
"revision": "9412cc416f9f7442f50e",
"url": "/static/js/11.a116d384.chunk.js"
},
{
"revision": "7480635194e4e75415960a985825e18c",
"url": "/static/media/iconfont.74806351.woff"
},
{
"revision": "66125e8a7120d1dcbfa5741f8dce72a2",
"url": "/static/media/iconfont.66125e8a.eot"
},
{
"revision": "83d0e8b5e32111cbbebc",
"url": "/static/css/9.7c331155.chunk.css"
},
{
"revision": "5b37aebbc2c70a84e891",
"url": "/static/css/10.1597b3e9.chunk.css"
},
{
"revision": "fd52eaa4aefbe4b1698c5725c6b1de3c",
"url": "/index.html"
}
];
\ No newline at end of file
/**
* Welcome to your Workbox-powered service worker!
*
* You'll need to register this file in your web app and you should
* disable HTTP caching for this file too.
* See https://goo.gl/nhQhGp
*
* The rest of the code is auto-generated. Please don't update this file
* directly; instead, make changes to your Workbox build configuration
* and re-run your build process.
* See https://goo.gl/2aRDsh
*/
importScripts("https://storage.googleapis.com/workbox-cdn/releases/3.6.3/workbox-sw.js");
importScripts(
"/precache-manifest.f771f70cb50c97ca116171f042920554.js"
);
workbox.clientsClaim();
/**
* The workboxSW.precacheAndRoute() method efficiently caches and responds to
* requests for URLs in the manifest.
* See https://goo.gl/S9QRab
*/
self.__precacheManifest = [].concat(self.__precacheManifest || []);
workbox.precaching.suppressWarnings();
workbox.precaching.precacheAndRoute(self.__precacheManifest, {});
workbox.routing.registerNavigationRoute("/index.html", {
blacklist: [/^\/_/,/\/[^\/]+\.[^\/]+$/],
});
/*! normalize.css v7.0.0 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,footer,header,nav,section{display:block}h1{font-size:2em;margin:.67em 0}figcaption,figure,main{display:block}figure{margin:1em 10.666667vw}hr{box-sizing:initial;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:initial;-webkit-text-decoration-skip:objects}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:inherit;font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}dfn{font-style:italic}mark{background-color:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:initial}sub{bottom:-.25em}sup{top:-.5em}audio,video{display:inline-block}audio:not([controls]){display:none;height:0}img{border-style:none}svg:not(:root){overflow:hidden}button,input,optgroup,select,textarea{font-family:sans-serif;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{display:inline-block;vertical-align:initial}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-.533333vw}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details,menu{display:block}summary{display:list-item}canvas{display:inline-block}[hidden],template{display:none}
/*# sourceMappingURL=9.7c331155.chunk.css.map */
\ No newline at end of file
.use-coupon{display:flex;flex-flow:column;height:100%}.use-coupon .coupons-area{padding:19.2vw 3.2vw 0;flex:1 1 auto}.use-coupon .coupons-area .empty{min-height:56.266667vw;line-height:56.266667vw;font-size:3.2vw;color:#666;text-align:center}.use-coupon .coupons-area .invalid-title{text-align:center;font-size:3.2vw;line-height:13.866667vw;color:#999}.exchange-bar{display:flex;justify-content:space-between;width:100%;padding:2.666667vw 3.2vw;border-bottom:1px solid #e7eaf1;position:absolute;top:11.733333vw;left:0;z-index:10;background:#fff}.exchange-bar button{display:inline-block;width:22.4vw;height:9.6vw;line-height:9.6vw;font-size:4.266667vw;color:#fff;background-color:#ccc;border:none;-webkit-appearance:none}.exchange-bar button.active{background-color:#09f}.custom-input-wrapper{position:relative}.custom-input-wrapper .custom-input{width:68vw;height:9.6vw;padding-left:2.666667vw;border:1px solid #ddd;border-radius:.8vw;font-size:3.2vw;-webkit-appearance:none}.custom-input-wrapper .custom-input::-webkit-input-placeholder{color:#999}.custom-input-wrapper .iconfont{position:absolute;right:2.666667vw;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);font-size:3.733333vw;color:#ccc}.custom-input-wrapper .hide{display:none}.coupon{position:relative;margin-bottom:4vw;box-shadow:0 .533333vw 3.2vw -2.133333vw}.coupon .coupon-info{position:relative;height:25.333333vw;padding:2.666667vw 4vw;color:#fff}.coupon .coupon-info .type{font-size:3.733333vw}.coupon .coupon-info .denomination{font-size:6.933333vw;line-height:6.933333vw;text-align:center}.coupon .coupon-info .denomination span{font-size:3.2vw}.coupon .coupon-info .course-title{width:68.37%;margin:0 auto 1.066667vw;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:4.266667vw}.coupon .coupon-info .expire{text-align:center;font-size:3.2vw;line-height:4.266667vw}.coupon .coupon-info.coupon-type1{background:#fe6161}.coupon .coupon-info.coupon-type2{background:#e0b97b}.coupon .coupon-info.invalid{background:#999}.coupon .coupon-info>.iconfont{position:absolute;top:50%;right:5.333333vw;-webkit-transform:translateY(-50%);transform:translateY(-50%);width:5.866667vw;height:5.866667vw;display:none}.coupon .coupon-info .check{display:block}.coupon .coupon-info ul{position:absolute;bottom:0;left:0;width:100%;display:flex;justify-content:space-around}.coupon .coupon-info ul li{width:2.666667vw;height:2.666667vw;border-radius:50%;background:#fff;-webkit-transform:translateY(50%);transform:translateY(50%)}.coupon .coupon-des{padding:2.666667vw 4vw;background:#fff;display:flex;justify-content:space-between;align-items:center}.coupon .coupon-des .limit{width:63.81%;font-size:3.2vw;vertical-align:middle;color:#666;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.coupon .coupon-des .use{display:inline-block;padding:.8vw 2.133333vw;font-size:3.2vw;color:#f31;border:1px solid #f31;border-radius:2.666667vw;background:transparent;-webkit-appearance:none}
/*# sourceMappingURL=coupons.9ece7350.chunk.css.map */
\ No newline at end of file
{"version":3,"sources":["/Users/zhanghaozhe/server/mr-julyedu/src/components/coupons/coupons.scss","/Users/zhanghaozhe/server/mr-julyedu/src/components/coupons/RedeemBar/exchange-bar.scss","/Users/zhanghaozhe/server/mr-julyedu/src/components/coupons/Input/input.scss","/Users/zhanghaozhe/server/mr-julyedu/src/components/coupons/Coupon/coupon.scss"],"names":[],"mappings":"AAmGA,YACI,YAAA,CACA,gBAAA,CACA,WAAY,CAHhB,0BAMQ,sBAAA,CAEA,aAAc,CARtB,iCAWY,sBAAA,CACA,uBAAA,CACA,eAAA,CACA,UAAA,CACA,iBAAkB,CAf9B,yCAmBY,iBAAA,CACA,eAAA,CACA,uBAAA,CACA,UA7GI,CCuFhB,cACI,YAAA,CACA,6BAAA,CACA,UAAA,CACA,wBAAA,CACA,+BAAA,CACA,iBAAA,CACA,eAAA,CACA,MAAA,CACA,UAAA,CACA,eAzGQ,CA+FZ,qBAaQ,oBAAA,CACA,YAAA,CACA,YAAA,CACA,iBAAA,CACA,oBAAA,CACA,UAAA,CACA,qBAAA,CACA,WAAA,CACA,uBAAwB,CArBhC,4BAwBY,qBAxHC,CCgGb,sBACI,iBAAkB,CADtB,oCAIQ,UAAA,CACA,YAAA,CAEA,uBAAA,CAEA,qBAAA,CACA,kBAAA,CAEA,eAAA,CAEA,uBAAwB,CAdhC,+DAkBY,UAzGI,CAuFhB,gCAuBQ,iBAAA,CACA,gBAAA,CACA,OAAA,CACA,kCAAA,CAAA,0BAAA,CACA,oBAAA,CACA,UA9EK,CAkDb,4BAgCQ,YAAa,CC9BrB,QACI,iBAAA,CACA,iBAAA,CACA,wCAA6B,CAHjC,qBAMQ,iBAAA,CACA,kBAAA,CACA,sBAAA,CACA,UA1GI,CAiGZ,2BAYY,oBAhFE,CAoEd,mCAgBY,oBAAA,CACA,sBAAA,CACA,iBAAkB,CAlB9B,wCAqBgB,eAxFF,CAmEd,mCA0BY,YAAA,CACA,wBAAA,CACA,kBAAA,CACA,eAAA,CACA,sBAAA,CACA,oBApGE,CAqEd,6BAmCY,iBAAA,CACA,eAAA,CACA,sBA1GE,CAqEd,kCAyCY,kBA3CM,CAElB,kCA6CY,kBAhDI,CAGhB,6BAiDY,eA1II,CAyFhB,+BAuDY,iBAAA,CACA,OAAA,CACA,gBAAA,CACA,kCAAA,CAAA,0BAAA,CACA,gBAAA,CACA,iBAAA,CACA,YAAa,CA7DzB,4BAiEY,aAAc,CAjE1B,wBAqEY,iBAAA,CACA,QAAA,CACA,MAAA,CACA,UAAA,CACA,YAAA,CACA,4BAA6B,CA1EzC,2BA8EgB,gBAAA,CACA,iBAAA,CACA,iBAAA,CACA,eAAA,CACA,iCAAA,CAAA,yBAA0B,CAlF1C,oBAwFQ,sBAAA,CACA,eAAA,CACA,YAAA,CACA,6BAAA,CACA,kBAAmB,CA5F3B,2BA+FY,YAAA,CACA,eAAA,CACA,qBAAA,CACA,UAAA,CACA,kBAAA,CACA,eAAA,CACA,sBAAuB,CArGnC,yBAyGY,oBAAA,CACA,uBAAA,CACA,eAAA,CACA,UAAA,CACA,qBAAA,CACA,wBAAA,CACA,sBAAA,CACA,uBAAwB","file":"coupons.9ece7350.chunk.css","sourcesContent":["@charset \"UTF-8\";\n/*\n * @ 文字颜色\n */\n/*\n * @ 文字大小\n */\n/*\n * @ 背景颜色\n */\n/*\n * @ 分割线颜色\n */\n/*\n * @ 边框颜色\n */\n/*\n * @ 标签颜色\n */\n.use-coupon {\n display: flex;\n flex-flow: column;\n height: 100%; }\n .use-coupon .coupons-area {\n padding: 72px 12px 0px;\n flex: 1 1 auto; }\n .use-coupon .coupons-area .empty {\n min-height: 211px;\n line-height: 211px;\n font-size: 12px;\n color: #666;\n text-align: center; }\n .use-coupon .coupons-area .invalid-title {\n text-align: center;\n font-size: 12px;\n line-height: 52px;\n color: #999; }\n","@charset \"UTF-8\";\n/*\n * @ 文字颜色\n */\n/*\n * @ 文字大小\n */\n/*\n * @ 背景颜色\n */\n/*\n * @ 分割线颜色\n */\n/*\n * @ 边框颜色\n */\n/*\n * @ 标签颜色\n */\n.exchange-bar {\n display: flex;\n justify-content: space-between;\n width: 100%;\n padding: 10px 12px;\n border-bottom: 1px solid #E7EAF1;\n position: absolute;\n top: 44px;\n left: 0;\n z-index: 10;\n background: #fff; }\n .exchange-bar button {\n display: inline-block;\n width: 84px;\n height: 36px;\n line-height: 36px;\n font-size: 16px;\n color: #fff;\n background-color: #ccc;\n border: none;\n -webkit-appearance: none; }\n .exchange-bar button.active {\n background-color: #09f; }\n","@charset \"UTF-8\";\n/*\n * @ 文字颜色\n */\n/*\n * @ 文字大小\n */\n/*\n * @ 背景颜色\n */\n/*\n * @ 分割线颜色\n */\n/*\n * @ 边框颜色\n */\n/*\n * @ 标签颜色\n */\n.custom-input-wrapper {\n position: relative; }\n .custom-input-wrapper .custom-input {\n width: 255px;\n height: 36px;\n padding-left: 10px;\n border: 1px solid #ddd;\n border-radius: 3px;\n font-size: 12px;\n -webkit-appearance: none; }\n .custom-input-wrapper .custom-input::-webkit-input-placeholder {\n color: #999; }\n .custom-input-wrapper .iconfont {\n position: absolute;\n right: 10px;\n top: 50%;\n transform: translateY(-50%);\n font-size: 14px;\n color: #ccc; }\n .custom-input-wrapper .hide {\n display: none; }\n","@charset \"UTF-8\";\n/*\n * @ 文字颜色\n */\n/*\n * @ 文字大小\n */\n/*\n * @ 背景颜色\n */\n/*\n * @ 分割线颜色\n */\n/*\n * @ 边框颜色\n */\n/*\n * @ 标签颜色\n */\n.coupon {\n position: relative;\n margin-bottom: 15px;\n box-shadow: 0px 2px 12px -8px; }\n .coupon .coupon-info {\n position: relative;\n height: 95px;\n padding: 10px 15px;\n color: #fff; }\n .coupon .coupon-info .type {\n font-size: 14px; }\n .coupon .coupon-info .denomination {\n font-size: 26px;\n line-height: 26px;\n text-align: center; }\n .coupon .coupon-info .denomination span {\n font-size: 12px; }\n .coupon .coupon-info .course-title {\n width: 68.37%;\n margin: 0 auto 4px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n font-size: 16px; }\n .coupon .coupon-info .expire {\n text-align: center;\n font-size: 12px;\n line-height: 16px; }\n .coupon .coupon-info.coupon-type1 {\n background: #FE6161; }\n .coupon .coupon-info.coupon-type2 {\n background: #E0B97B; }\n .coupon .coupon-info.invalid {\n background: #999; }\n .coupon .coupon-info > .iconfont {\n position: absolute;\n top: 50%;\n right: 20px;\n transform: translateY(-50%);\n width: 22px;\n height: 22px;\n display: none; }\n .coupon .coupon-info .check {\n display: block; }\n .coupon .coupon-info ul {\n position: absolute;\n bottom: 0;\n left: 0;\n width: 100%;\n display: flex;\n justify-content: space-around; }\n .coupon .coupon-info ul li {\n width: 10px;\n height: 10px;\n border-radius: 50%;\n background: #fff;\n transform: translateY(50%); }\n .coupon .coupon-des {\n padding: 10px 15px;\n background: #fff;\n display: flex;\n justify-content: space-between;\n align-items: center; }\n .coupon .coupon-des .limit {\n width: 63.81%;\n font-size: 12px;\n vertical-align: middle;\n color: #666;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis; }\n .coupon .coupon-des .use {\n display: inline-block;\n padding: 3px 8px;\n font-size: 12px;\n color: #f31;\n border: 1px solid #f31;\n border-radius: 10px;\n background: transparent;\n -webkit-appearance: none; }\n"]}
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
.myorders-box{width:100%;height:100%;background-color:#f5f5f5}.myorders-box .order-body .order-head{width:100%;height:10.666667vw;line-height:10.666667vw;padding:0 3.2vw;display:flex;justify-content:space-between;background-color:#fff;margin-top:2.666667vw;border-bottom:1px solid #e7eaf1}.myorders-box .order-body .order-head .oid-num{font-size:3.2vw;color:#666}.myorders-box .order-body .order-head .oid-status{font-size:3.733333vw;color:#ff3131}.myorders-box .order-body .order-head .oid-success{font-size:3.733333vw;color:#333}.myorders-box .order-body .order-wrap{width:100%;padding:2.666667vw 3.2vw;background-color:#fff;border-bottom:1px solid #e7eaf1}.myorders-box .order-body .order-btm{width:100%;height:14.4vw;background-color:#fff;padding:0 3.2vw;display:flex;justify-content:space-between}.myorders-box .order-body .order-btm .price-info{width:32vw;display:flex;flex-direction:column;align-self:center}.myorders-box .order-body .order-btm .price-info .payable{font-size:3.2vw;color:#666}.myorders-box .order-body .order-btm .price-info .price{font-size:3.733333vw;color:#ff3131}.myorders-box .order-body .order-btm .btm-right .cancel,.myorders-box .order-body .order-btm .btm-right a{display:inline-block;width:24vw;height:8vw;text-align:center;font-size:3.733333vw;background-color:#fff;border-radius:1.066667vw;margin-top:3.2vw}.myorders-box .order-body .order-btm .btm-right .cancel{color:#333;border:1px solid #333;margin-right:4vw}.myorders-box .order-body .order-btm .btm-right a{line-height:8vw;color:#ff3131;border:1px solid #ff3131}.myorders-box .order-body .order-btm .btm-right .group img{width:8vw;height:8vw;border-radius:50%;margin-top:2.666667vw;margin-left:2.666667vw}.myorders-box .cart-tip{color:#555;margin-top:37.333333vw;text-align:center}.myorders-box .cart-tip .iconfridge{font-size:5.6vw}.myorders-box .cart-tip .cart-mess{font-size:3.2vw;color:#666}.myorders-box .cart-tip a{display:inline-block;width:34.666667vw;height:8vw;border:1px solid #09f;border-radius:4vw;font-size:4.266667vw;margin-top:8vw;color:#09f;text-align:center;line-height:7.466667vw}
/*# sourceMappingURL=myorders.3ab93c8e.chunk.css.map */
\ No newline at end of file
{"version":3,"sources":["/Users/zhanghaozhe/server/mr-julyedu/src/components/myOrders/index.scss"],"names":[],"mappings":"AAmGA,cACE,UAAA,CACA,WAAA,CACA,wBAxDiB,CAqDnB,sCAQM,UAAA,CACA,kBAAA,CACA,uBAAA,CACA,eAAA,CACA,YAAA,CACA,6BAAA,CACA,qBAAA,CACA,qBAAA,CACA,+BAAgC,CAhBtC,+CAmBQ,eAAA,CACA,UA7GQ,CAyFhB,kDAwBQ,oBAAA,CACA,aArHU,CA4FlB,mDA4BQ,oBAAA,CACA,UAxHQ,CA2FhB,sCAkCM,UAAA,CACA,wBAAA,CACA,qBAAA,CACA,+BA9CiB,CASvB,qCAyCM,UAAA,CACA,aAAA,CACA,qBAAA,CACA,eAAA,CACA,YAAA,CACA,6BAA8B,CA9CpC,iDAiDQ,UAAA,CACA,YAAA,CACA,qBAAA,CACA,iBAAkB,CApD1B,0DAuDU,eAAA,CACA,UAjJM,CAyFhB,wDA4DU,oBAAA,CACA,aAzJQ,CA4FlB,0GAoEU,oBAAA,CACA,UAAA,CACA,UAAA,CACA,iBAAA,CACA,oBAAA,CACA,qBAAA,CACA,wBAAA,CACA,gBAAgB,CA3E1B,wDA+EU,UAAA,CACA,qBAAA,CACA,gBAAkB,CAjF5B,kDAqFU,eAAA,CACA,aAAA,CACA,wBAnLQ,CA4FlB,2DA4FY,SAAA,CACA,UAAA,CACA,iBAAA,CACA,qBAAA,CACA,sBAAiB,CAhG7B,wBAwGI,UAAA,CACA,sBAAA,CACA,iBAAkB,CA1GtB,oCA6GM,eAAe,CA7GrB,mCAiHM,eAAA,CACA,UA3MU,CAyFhB,0BAsHM,oBAAA,CACA,iBAAA,CACA,UAAA,CACA,qBAAA,CACA,iBAAA,CACA,oBAAA,CACA,cAAA,CACA,UAAA,CACA,iBAAA,CACA,sBAAiB","file":"myorders.3ab93c8e.chunk.css","sourcesContent":["@charset \"UTF-8\";\n/*\n * @ 文字颜色\n */\n/*\n * @ 文字大小\n */\n/*\n * @ 背景颜色\n */\n/*\n * @ 分割线颜色\n */\n/*\n * @ 边框颜色\n */\n/*\n * @ 标签颜色\n */\n.myorders-box {\n width: 100%;\n height: 100%;\n background-color: #f5f5f5; }\n .myorders-box .order-body .order-head {\n width: 100%;\n height: 40px;\n line-height: 40px;\n padding: 0 12px;\n display: flex;\n justify-content: space-between;\n background-color: #fff;\n margin-top: 10px;\n border-bottom: 1px solid #E7EAF1; }\n .myorders-box .order-body .order-head .oid-num {\n font-size: 12px;\n color: #666; }\n .myorders-box .order-body .order-head .oid-status {\n font-size: 14px;\n color: #ff3131; }\n .myorders-box .order-body .order-head .oid-success {\n font-size: 14px;\n color: #333; }\n .myorders-box .order-body .order-wrap {\n width: 100%;\n padding: 10px 12px;\n background-color: #fff;\n border-bottom: 1px solid #E7EAF1; }\n .myorders-box .order-body .order-btm {\n width: 100%;\n height: 54px;\n background-color: #fff;\n padding: 0 12px;\n display: flex;\n justify-content: space-between; }\n .myorders-box .order-body .order-btm .price-info {\n width: 120px;\n display: flex;\n flex-direction: column;\n align-self: center; }\n .myorders-box .order-body .order-btm .price-info .payable {\n font-size: 12px;\n color: #666; }\n .myorders-box .order-body .order-btm .price-info .price {\n font-size: 14px;\n color: #ff3131; }\n .myorders-box .order-body .order-btm .btm-right .cancel, .myorders-box .order-body .order-btm .btm-right a {\n display: inline-block;\n width: 90px;\n height: 30px;\n text-align: center;\n font-size: 14px;\n background-color: #fff;\n border-radius: 4px;\n margin-top: 12px; }\n .myorders-box .order-body .order-btm .btm-right .cancel {\n color: #333;\n border: 1px solid #333;\n margin-right: 15px; }\n .myorders-box .order-body .order-btm .btm-right a {\n line-height: 30px;\n color: #ff3131;\n border: 1px solid #ff3131; }\n .myorders-box .order-body .order-btm .btm-right .group img {\n width: 30px;\n height: 30px;\n border-radius: 50%;\n margin-top: 10px;\n margin-left: 10px; }\n .myorders-box .cart-tip {\n color: #555;\n margin-top: 140px;\n text-align: center; }\n .myorders-box .cart-tip .iconfridge {\n font-size: 21px; }\n .myorders-box .cart-tip .cart-mess {\n font-size: 12px;\n color: #666; }\n .myorders-box .cart-tip a {\n display: inline-block;\n width: 130px;\n height: 30px;\n border: 1px solid #09f;\n border-radius: 15px;\n font-size: 16px;\n margin-top: 30px;\n color: #09f;\n text-align: center;\n line-height: 28px; }\n"]}
\ No newline at end of file
.purchased-box{width:100%;height:100%;background-color:#f5f5f5}.purchased-box .tip{width:100%;height:8vw;line-height:8vw;font-size:3.2vw;color:#333;text-align:center;background-color:#fff4ce;margin-bottom:2.666667vw}.purchased-box .purchased-body,.purchased-box .v-list-item{background-color:#fff}.purchased-box .v-list-item .content{padding-bottom:2.666667vw;border-bottom:1px solid #e7eaf1}.purchased-box .v-list-item .content .cover{flex:inherit;width:42.2%}.purchased-box .v-list-item .content .cover img{width:100%}.purchased-box .v-list-item .info{width:52.3%;position:relative;display:block}.purchased-box .v-list-item .info .title{font-size:4.266667vw;color:#333;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;height:4.266667vw;line-height:4.266667vw}.purchased-box .v-list-item .info .contact{font-size:3.733333vw;color:#666;margin-top:3.733333vw}.purchased-box .v-list-item .info .des{position:absolute;bottom:1.333333vw;color:#ff2121;font-size:3.733333vw;height:3.733333vw;line-height:3.733333vw}.purchased-box .cart-tip{color:#555;margin-top:37.333333vw;text-align:center}.purchased-box .cart-tip .iconfridge{font-size:5.6vw}.purchased-box .cart-tip .cart-mess{font-size:3.2vw;color:#666}.purchased-box .cart-tip a{display:inline-block;width:34.666667vw;height:8vw;border:1px solid #09f;border-radius:4vw;font-size:4.266667vw;margin-top:8vw;color:#09f;text-align:center;line-height:7.466667vw}
/*# sourceMappingURL=purchased.72c55bd6.chunk.css.map */
\ No newline at end of file
{"version":3,"sources":["/Users/zhanghaozhe/server/mr-julyedu/src/components/purchased/index.scss"],"names":[],"mappings":"AAmGA,eACE,UAAA,CACA,WAAA,CACA,wBAxDiB,CAqDnB,oBAQI,UAAA,CACA,UAAA,CACA,eAAA,CACA,eAAA,CACA,UAAA,CACA,iBAAA,CACA,wBAAA,CACA,wBAAmB,CAfvB,2DAsBI,qBAAsB,CAtB1B,qCAyBM,yBAAA,CACA,+BAAgC,CA1BtC,4CA6BQ,YAAA,CACA,WAAY,CA9BpB,gDAiCU,UAAW,CAjCrB,kCAuCM,WAAA,CACA,iBAAA,CACA,aAAc,CAzCpB,yCA4CQ,oBAAA,CACA,UAAA,CACA,eAAA,CACA,sBAAA,CACA,kBAAA,CACA,iBAAA,CACA,sBAAiB,CAlDzB,2CAsDQ,oBAAA,CACA,UAAA,CACA,qBAAgB,CAxDxB,uCA4DQ,iBAAA,CACA,iBAAA,CACA,aAAA,CACA,oBAAA,CACA,iBAAA,CACA,sBAAiB,CAjEzB,yBAwEI,UAAA,CACA,sBAAA,CACA,iBAAkB,CA1EtB,qCA6EM,eAAe,CA7ErB,oCAiFM,eAAA,CACA,UA3KU,CAyFhB,2BAsFM,oBAAA,CACA,iBAAA,CACA,UAAA,CACA,qBAAA,CACA,iBAAA,CACA,oBAAA,CACA,cAAA,CACA,UAAA,CACA,iBAAA,CACA,sBAAiB","file":"purchased.72c55bd6.chunk.css","sourcesContent":["@charset \"UTF-8\";\n/*\n * @ 文字颜色\n */\n/*\n * @ 文字大小\n */\n/*\n * @ 背景颜色\n */\n/*\n * @ 分割线颜色\n */\n/*\n * @ 边框颜色\n */\n/*\n * @ 标签颜色\n */\n.purchased-box {\n width: 100%;\n height: 100%;\n background-color: #f5f5f5; }\n .purchased-box .tip {\n width: 100%;\n height: 30px;\n line-height: 30px;\n font-size: 12px;\n color: #333;\n text-align: center;\n background-color: #FFF4CE;\n margin-bottom: 10px; }\n .purchased-box .purchased-body {\n background-color: #fff; }\n .purchased-box .v-list-item {\n background-color: #fff; }\n .purchased-box .v-list-item .content {\n padding-bottom: 10px;\n border-bottom: 1px solid #e7eaf1; }\n .purchased-box .v-list-item .content .cover {\n flex: inherit;\n width: 42.2%; }\n .purchased-box .v-list-item .content .cover img {\n width: 100%; }\n .purchased-box .v-list-item .info {\n width: 52.3%;\n position: relative;\n display: block; }\n .purchased-box .v-list-item .info .title {\n font-size: 16px;\n color: #333;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n height: 16px;\n line-height: 16px; }\n .purchased-box .v-list-item .info .contact {\n font-size: 14px;\n color: #666;\n margin-top: 14px; }\n .purchased-box .v-list-item .info .des {\n position: absolute;\n bottom: 5px;\n color: #FF2121;\n font-size: 14px;\n height: 14px;\n line-height: 14px; }\n .purchased-box .cart-tip {\n color: #555;\n margin-top: 140px;\n text-align: center; }\n .purchased-box .cart-tip .iconfridge {\n font-size: 21px; }\n .purchased-box .cart-tip .cart-mess {\n font-size: 12px;\n color: #666; }\n .purchased-box .cart-tip a {\n display: inline-block;\n width: 130px;\n height: 30px;\n border: 1px solid #09f;\n border-radius: 15px;\n font-size: 16px;\n margin-top: 30px;\n color: #09f;\n text-align: center;\n line-height: 28px; }\n"]}
\ No newline at end of file
.share-poster .total-container{width:100%;background-color:#000;height:112vw;overflow:hidden;position:relative}.share-poster .total-container .placard-img-container{width:100%;height:224vw;background:#000;padding-top:5.333333vw;overflow:hidden;position:relative;zoom:.5}.share-poster .total-container .placard-img-container img{position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);text-align:center}.share-poster .total-container .placard-code{opacity:0}.share-poster .placard-desc{width:100%;height:12vw;background:#000;padding:0 2.666667vw}.share-poster .placard-desc .placard-sharetxt{width:100%;height:100%;line-height:5.333333vw;display:inline-block;font-size:3.733333vw;color:#fff}.share-poster .placard-desc .placard-sharetxt .placard-price{font-size:3.733333vw;color:#09f}.share-poster .placard-swiper{width:100%;background-color:#fff}.share-poster .placard-swiper .placard-list{display:flex;justify-content:center;align-items:center}.share-poster .placard-swiper .placard-list li{width:17.066667vw;height:17.066667vw;border-radius:1.333333vw;line-height:24vw;margin:5.333333vw 4vw}.share-poster .placard-swiper .placard-list li img{display:inline-block;width:17.066667vw;height:17.066667vw;border-radius:1.333333vw}.share-poster .placard-swiper .placard-list li.active{width:17.066667vw;height:17.066667vw;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTM4IDc5LjE1OTgyNCwgMjAxNi8wOS8xNC0wMTowOTowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTcgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkJERkI3RjkzNjU4MjExRThBM0M2RjVEMUVEQUJDREUxIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkJERkI3Rjk0NjU4MjExRThBM0M2RjVEMUVEQUJDREUxIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QkRGQjdGOTE2NTgyMTFFOEEzQzZGNUQxRURBQkNERTEiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6QkRGQjdGOTI2NTgyMTFFOEEzQzZGNUQxRURBQkNERTEiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz6zmJvcAAANOklEQVR42uyd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) no-repeat 50%;z-index:1002;background-size:17.066667vw}.share-poster .placard-swiper .placard-list li.active img{opacity:.1}.share-poster .hide{display:none}
/*# sourceMappingURL=shareposter.82081d02.chunk.css.map */
\ No newline at end of file
{"version":3,"sources":["/Users/zhanghaozhe/server/mr-julyedu/src/components/sharePoster/index.scss"],"names":[],"mappings":"AAmGA,+BAEI,UAAA,CACA,qBAAA,CACA,YAAA,CACA,eAAA,CACA,iBAAkB,CANtB,sDASM,UAAA,CACA,YAAA,CACA,eAAA,CACA,sBAAA,CACA,eAAA,CACA,iBAAA,CACA,OAAS,CAff,0DAkBQ,iBAAA,CACA,OAAA,CACA,QAAA,CACA,sCAAA,CAAA,8BAAA,CACA,iBAAkB,CAtB1B,6CA2BM,SAAU,CA3BhB,4BAgCI,UAAA,CACA,WAAA,CACA,eAAA,CACA,oBAAe,CAnCnB,8CAqCM,UAAA,CACA,WAAA,CACA,sBAAA,CACA,oBAAA,CACA,oBAAA,CACA,UAzIM,CA+FZ,6DA6CQ,oBAAA,CACA,UA9IK,CAgGb,8BAoDI,UAAA,CACA,qBApJQ,CA+FZ,4CAwDM,YAAA,CACA,sBAAA,CACA,kBAAmB,CA1DzB,+CA6DQ,iBAAA,CACA,kBAAA,CACA,wBAAA,CACA,gBAAA,CACA,qBAAiB,CAjEzB,mDAoEU,oBAAA,CACA,iBAAA,CACA,kBAAA,CACA,wBAAkB,CAvE5B,sDA4EQ,iBAAA,CACA,kBAAA,CACA,wpLAA0D,CAC1D,YAAA,CACA,2BAAqB,CAhF7B,0DAmFU,UAAY,CAnFtB,oBAyFI,YAAa","file":"shareposter.82081d02.chunk.css","sourcesContent":["@charset \"UTF-8\";\n/*\n * @ 文字颜色\n */\n/*\n * @ 文字大小\n */\n/*\n * @ 背景颜色\n */\n/*\n * @ 分割线颜色\n */\n/*\n * @ 边框颜色\n */\n/*\n * @ 标签颜色\n */\n.share-poster .total-container {\n width: 100%;\n background-color: #000;\n height: 420px;\n overflow: hidden;\n position: relative; }\n .share-poster .total-container .placard-img-container {\n width: 100%;\n height: 840px;\n background: #000;\n padding-top: 20px;\n overflow: hidden;\n position: relative;\n zoom: 0.5; }\n .share-poster .total-container .placard-img-container img {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n text-align: center; }\n .share-poster .total-container .placard-code {\n opacity: 0; }\n\n.share-poster .placard-desc {\n width: 100%;\n height: 45px;\n background: #000;\n padding: 0 10px; }\n .share-poster .placard-desc .placard-sharetxt {\n width: 100%;\n height: 100%;\n line-height: 20px;\n display: inline-block;\n font-size: 14px;\n color: #fff; }\n .share-poster .placard-desc .placard-sharetxt .placard-price {\n font-size: 14px;\n color: #09f; }\n\n.share-poster .placard-swiper {\n width: 100%;\n background-color: #fff; }\n .share-poster .placard-swiper .placard-list {\n display: flex;\n justify-content: center;\n align-items: center; }\n .share-poster .placard-swiper .placard-list li {\n width: 64px;\n height: 64px;\n border-radius: 5px;\n line-height: 90px;\n margin: 20px 15px; }\n .share-poster .placard-swiper .placard-list li img {\n display: inline-block;\n width: 64px;\n height: 64px;\n border-radius: 5px; }\n .share-poster .placard-swiper .placard-list li.active {\n width: 64px;\n height: 64px;\n background: url(\"./image/choose_pic.png\") no-repeat center;\n z-index: 1002;\n background-size: 64px; }\n .share-poster .placard-swiper .placard-list li.active img {\n opacity: 0.1; }\n\n.share-poster .hide {\n display: none; }\n"]}
\ No newline at end of file
#study{height:100%;background:#fff;display:flex;flex-flow:column;overflow:hidden}#study .tab{height:11.733333vw;max-height:11.733333vw;line-height:11.733333vw;text-align:center;background:#f7f9fc;display:flex;justify-content:center}#study .tab,#study .tab>div{flex:1 0 auto}#study .tab a{display:inline-block;height:11.733333vw;font-size:4vw}#study .study-container{padding-bottom:13.333333vw;flex:1 1 auto;overflow-y:auto;box-sizing:border-box}#study .active{color:#09f;border-bottom:1px solid #09f}.v-list-base-item{height:33.866667vw;padding:2.666667vw 2.666667vw 0}.v-list-base-item .content{display:flex;height:100%;padding-bottom:2.666667vw;border-bottom:1px solid #e7eaf1}.v-list-base-item .content .cover{flex:0 0 auto;margin-right:4.266667vw;position:relative}.v-list-base-item .content .cover img{width:40vw;height:28.8vw;border-radius:.8vw}.v-list-base-item .content .course-status{width:100%;height:6.4vw;position:absolute;bottom:-1px;border-radius:0 0 .8vw .8vw;text-align:center;line-height:6.4vw;color:#fff;font-size:3.466667vw}.info{display:flex;flex-wrap:wrap;width:55%}.info .title{font-size:4vw;font-weight:400;width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.info .contact{font-size:3.466667vw;color:#ff2121;flex:0 1 auto;width:100%}.info .des{color:#999;font-size:2.933333vw;align-self:flex-end;line-height:1}.info .des .time{margin-right:2.666667vw}.info .start-learn{display:block;box-sizing:border-box;align-self:flex-end;width:20.8vw;height:5.866667vw;padding:1.333333vw 3.733333vw;-webkit-appearance:none;outline:0;border:none;background:#09f;color:#fff;border-radius:.8vw}.add-course{padding:2.666667vw 3.2vw}.add-course button.add{width:40vw;height:28.8vw;font-size:4vw;font-family:HiraginoSansGB-W3;font-weight:400;color:#09f;border:1px dashed #09f;background:transparent}.my-course-uid{width:100vw;height:8vw;background:#fff4ce;line-height:8vw;text-align:center;font-size:3.2vw;color:#333}.empty{height:100%;display:flex;flex-direction:column;align-items:center;padding-top:37.333333vw;background:#f5f5f5}.empty .iconfish{width:5.333333vw;height:5.333333vw;color:#1a4263}.empty .empty-prompt{margin-bottom:8vw;font-size:3.2vw;color:#666}.empty .select-course{display:block;width:34.933333vw;height:8vw;border:1px solid #09f;border-radius:4vw;background:transparent;color:#09f;font-size:4.266667vw;text-align:center;line-height:8vw}.course-base-item{width:47.8%;margin-top:4vw;margin-bottom:1.333333vw;position:relative}.course-base-item img{width:100%;height:31.733333vw;min-height:31.733333vw}.course-base-item .course-title{font-size:3.733333vw;color:#333;line-height:5.066667vw;margin-top:2.4vw}.free-courses{padding:4vw;display:flex;flex-wrap:wrap;justify-content:space-between}.free-courses .top{position:absolute;top:2.666667vw;left:0}.free-courses .tag-starting{background:#ff2121;color:#fff}.free-courses .tag-category{background:#e0b97b;color:#fff}.free-courses .course-item{margin-top:0;margin-bottom:4.266667vw}.free-courses .course-item .course-title{margin-top:0;line-height:9.066667vw;width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.free-courses .course-item .bottom{display:flex;justify-content:space-between}.free-courses .live .bottom{display:flex;justify-content:flex-start;color:#09f}.free-courses .animation-box{width:3.733333vw;height:3.2vw;display:flex;justify-content:space-between;margin-right:1.333333vw}.free-courses .animation-box .column{width:.533333vw;height:3.2vw;-webkit-transform-origin:bottom center;transform-origin:bottom center;-webkit-animation:scaleY 1.1s ease-out infinite;animation:scaleY 1.1s ease-out infinite;background-color:#09f}.free-courses .animation-box .column-1{-webkit-animation-delay:.2s;animation-delay:.2s}.free-courses .animation-box .column-2{-webkit-animation-delay:.4s;animation-delay:.4s}.free-courses .animation-box .column-3{-webkit-animation-delay:.6s;animation-delay:.6s}@-webkit-keyframes scaleY{0%{-webkit-transform:scaleY(0);transform:scaleY(0)}50%{-webkit-transform:scaleY(1);transform:scaleY(1)}to{-webkit-transform:scaleY(0);transform:scaleY(0)}}@keyframes scaleY{0%{-webkit-transform:scaleY(0);transform:scaleY(0)}50%{-webkit-transform:scaleY(1);transform:scaleY(1)}to{-webkit-transform:scaleY(0);transform:scaleY(0)}}
/*# sourceMappingURL=study.586bcabb.chunk.css.map */
\ No newline at end of file
{"version":3,"sources":["/Users/zhanghaozhe/server/mr-julyedu/src/components/study/study.scss","/Users/zhanghaozhe/server/mr-julyedu/src/common/v-list-base/index.scss","/Users/zhanghaozhe/server/mr-julyedu/src/components/study/myCourses/my-courses.scss","/Users/zhanghaozhe/server/mr-julyedu/src/common/course-base/course-base.scss","/Users/zhanghaozhe/server/mr-julyedu/src/components/study/freeCourses/free-courses.scss"],"names":[],"mappings":"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","file":"study.586bcabb.chunk.css","sourcesContent":["@charset \"UTF-8\";\n/*\n * @ 文字颜色\n */\n/*\n * @ 文字大小\n */\n/*\n * @ 背景颜色\n */\n/*\n * @ 分割线颜色\n */\n/*\n * @ 边框颜色\n */\n/*\n * @ 标签颜色\n */\n#study {\n height: 100%;\n background: #fff;\n display: flex;\n flex-flow: column;\n overflow: hidden; }\n #study .tab {\n height: 44px;\n max-height: 44px;\n line-height: 44px;\n text-align: center;\n background: #F7F9FC;\n flex: 1 0 auto;\n display: flex;\n justify-content: center; }\n #study .tab > div {\n flex: 1 0 auto; }\n #study .tab a {\n display: inline-block;\n height: 44px;\n font-size: 15px; }\n #study .study-container {\n padding-bottom: 50px;\n flex: 1 1 auto;\n overflow-y: auto;\n box-sizing: border-box; }\n #study .active {\n color: #09f;\n border-bottom: 1px solid #09f; }\n","@charset \"UTF-8\";\n/*\n * @ 文字颜色\n */\n/*\n * @ 文字大小\n */\n/*\n * @ 背景颜色\n */\n/*\n * @ 分割线颜色\n */\n/*\n * @ 边框颜色\n */\n/*\n * @ 标签颜色\n */\n.v-list-base-item {\n height: 127px;\n padding: 10px 10px 0; }\n .v-list-base-item .content {\n display: flex;\n height: 100%;\n padding-bottom: 10px;\n border-bottom: 1px solid #e7eaf1; }\n .v-list-base-item .content .cover {\n flex: 0 0 auto;\n margin-right: 16px;\n position: relative; }\n .v-list-base-item .content .cover img {\n width: 150px;\n height: 108px;\n border-radius: 3px; }\n .v-list-base-item .content .course-status {\n width: 100%;\n height: 24px;\n position: absolute;\n bottom: -1px;\n border-radius: 0 0 3px 3px;\n text-align: center;\n line-height: 24px;\n color: #fff;\n font-size: 13px; }\n","@charset \"UTF-8\";\n/*\n * @ 文字颜色\n */\n/*\n * @ 文字大小\n */\n/*\n * @ 背景颜色\n */\n/*\n * @ 分割线颜色\n */\n/*\n * @ 边框颜色\n */\n/*\n * @ 标签颜色\n */\n.info {\n display: flex;\n flex-wrap: wrap;\n width: 55%; }\n .info .title {\n font-size: 15px;\n font-weight: 400;\n width: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis; }\n .info .contact {\n font-size: 13px;\n color: #FF2121;\n flex: 0 1 auto;\n width: 100%; }\n .info .des {\n color: #999;\n font-size: 11px;\n align-self: flex-end;\n line-height: 1; }\n .info .des .time {\n margin-right: 10px; }\n .info .start-learn {\n display: block;\n box-sizing: border-box;\n align-self: flex-end;\n width: 78px;\n height: 22px;\n padding: 5px 14px;\n -webkit-appearance: none;\n outline: 0;\n border: none;\n background: #09f;\n color: #fff;\n border-radius: 3px; }\n\n.add-course {\n padding: 10px 12px; }\n .add-course button.add {\n width: 150px;\n height: 108px;\n font-size: 15px;\n font-family: HiraginoSansGB-W3;\n font-weight: normal;\n color: #09f;\n border: 1px dashed #09f;\n background: transparent; }\n\n.my-course-uid {\n width: 375px;\n height: 30px;\n background: #FFF4CE;\n line-height: 30px;\n text-align: center;\n font-size: 12px;\n color: #333; }\n\n.empty {\n height: 100%;\n display: flex;\n flex-direction: column;\n align-items: center;\n padding-top: 140px;\n background: #f5f5f5; }\n .empty .iconfish {\n width: 20px;\n height: 20px;\n color: #1a4263; }\n .empty .empty-prompt {\n margin-bottom: 30px;\n font-size: 12px;\n color: #666; }\n .empty .select-course {\n display: block;\n width: 131px;\n height: 30px;\n border: 1px solid #09f;\n border-radius: 15px;\n background: transparent;\n color: #09f;\n font-size: 16px;\n text-align: center;\n line-height: 30px; }\n","@charset \"UTF-8\";\n/*\n * @ 文字颜色\n */\n/*\n * @ 文字大小\n */\n/*\n * @ 背景颜色\n */\n/*\n * @ 分割线颜色\n */\n/*\n * @ 边框颜色\n */\n/*\n * @ 标签颜色\n */\n.course-base-item {\n width: 47.8%;\n margin-top: 15px;\n margin-bottom: 5px;\n position: relative; }\n .course-base-item img {\n width: 100%;\n height: 119px;\n min-height: 119px; }\n .course-base-item .course-title {\n font-size: 14px;\n color: #333;\n line-height: 19px;\n margin-top: 9px; }\n","@charset \"UTF-8\";\n/*\n * @ 文字颜色\n */\n/*\n * @ 文字大小\n */\n/*\n * @ 背景颜色\n */\n/*\n * @ 分割线颜色\n */\n/*\n * @ 边框颜色\n */\n/*\n * @ 标签颜色\n */\n.free-courses {\n padding: 15px;\n display: flex;\n flex-wrap: wrap;\n justify-content: space-between; }\n .free-courses .top {\n position: absolute;\n top: 10px;\n left: 0; }\n .free-courses .tag-starting {\n background: #FF2121;\n color: #fff; }\n .free-courses .tag-category {\n background: #E0B97B;\n color: #fff; }\n .free-courses .course-item {\n margin-top: 0;\n margin-bottom: 16px; }\n .free-courses .course-item .course-title {\n margin-top: 0;\n line-height: 34px;\n width: 100%;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis; }\n .free-courses .course-item .bottom {\n display: flex;\n justify-content: space-between; }\n .free-courses .live .bottom {\n display: flex;\n justify-content: flex-start;\n color: #09f; }\n .free-courses .animation-box {\n width: 14px;\n height: 12px;\n display: flex;\n justify-content: space-between;\n margin-right: 5px; }\n .free-courses .animation-box .column {\n width: 2px;\n height: 12px;\n transform-origin: bottom center;\n animation: scaleY 1.1s ease-out infinite;\n background-color: #09f; }\n .free-courses .animation-box .column-1 {\n animation-delay: 0.2s; }\n .free-courses .animation-box .column-2 {\n animation-delay: 0.4s; }\n .free-courses .animation-box .column-3 {\n animation-delay: 0.6s; }\n\n@keyframes scaleY {\n from {\n transform: scaleY(0); }\n 50% {\n transform: scaleY(1); }\n to {\n transform: scaleY(0); } }\n"]}
\ No newline at end of file
.to-group-box .v-list-item{margin-top:1.333333vw}.to-group-box .v-list-item .content{border-bottom:1px solid #e7eaf1}.to-group-box .v-list-item .content .cover{flex:inherit;width:42.2%}.to-group-box .v-list-item .content .cover img{width:100%}.to-group-box .v-list-item .info{width:52.3%;position:relative;display:block}.to-group-box .v-list-item .info .title{font-size:4.266667vw;color:#333;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;height:4.266667vw;line-height:4.266667vw}.to-group-box .v-list-item .info .contact{font-size:3.733333vw;color:#666;margin-top:3.733333vw}.to-group-box .v-list-item .info .des{position:absolute;bottom:0}.to-group-box .v-list-item .info .des .course-price .price{color:#ff2121;font-size:3.2vw}.to-group-box .v-list-item .info .des .course-price .new{color:#ff2121;font-size:4.266667vw}.to-group-box .v-list-item .info .des .course-price .old{color:#999;font-size:3.2vw;display:inline-block;margin-left:4vw;text-decoration:line-through}.to-group-box .gorup-content{padding:5.333333vw;text-align:center}.to-group-box .gorup-content .imgname{width:11.733333vw;height:11.733333vw;border-radius:50%;margin:5.333333vw 5.333333vw 0}.to-group-box .gorup-content :first-child{margin-left:0}.to-group-box .gorup-content .tip{color:#e02e24;font-size:4.266667vw}.to-group-box .gorup-content .success{color:#09f;font-size:4.266667vw}.to-group-box .gorup-content .group-btn,.to-group-box .gorup-content .tostudy{display:inline-block;width:89.333333vw;height:11.733333vw;border-radius:1.333333vw;background-color:#e02e24;font-size:4.266667vw;color:#fff;text-align:center;line-height:11.733333vw;margin-top:5.333333vw}.to-group-box .gorup-content .tostudy{background-color:#09f;margin-top:8vw}.to-group-box .gorup-content .dec{font-size:3.2vw;margin-top:2.666667vw;color:#666}.to-group-box .gorup-content .group-dec{background-color:#fafafa;width:100%;padding:0 3.2vw;height:8vw;line-height:8vw;font-size:3.2vw;display:flex;justify-content:space-between;color:#999;margin-top:4vw}.to-group-box .gorup-content .group-dec .allNum{color:#333}.to-group-box .group-course .top-title{height:10.666667vw;line-height:10.666667vw;font-size:3.733333vw;padding:0 3.2vw;display:flex;justify-content:space-between;color:#333}.to-group-box .group-course .top-title .more{color:#09f}.to-group-box .group-course .top-title .more i{width:3.2vw;height:1.866667vw}
/*# sourceMappingURL=togroup.f8580590.chunk.css.map */
\ No newline at end of file
{"version":3,"sources":["/Users/zhanghaozhe/server/mr-julyedu/src/components/detail/group/togroup.scss"],"names":[],"mappings":"AAmGA,2BAEI,qBAAe,CAFnB,oCAKM,+BAAgC,CALtC,2CAQQ,YAAA,CACA,WAAY,CATpB,+CAYU,UAAW,CAZrB,iCAkBM,WAAA,CACA,iBAAA,CACA,aAAc,CApBpB,wCAuBQ,oBAAA,CACA,UAAA,CACA,eAAA,CACA,sBAAA,CACA,kBAAA,CACA,iBAAA,CACA,sBAAiB,CA7BzB,0CAiCQ,oBAAA,CACA,UAAA,CACA,qBAAgB,CAnCxB,sCAuCQ,iBAAA,CACA,QAAS,CAxCjB,2DA4CY,aAAA,CACA,eAAe,CA7C3B,yDAiDY,aAAA,CACA,oBAAe,CAlD3B,yDAsDY,UAAA,CACA,eAAA,CACA,oBAAA,CACA,eAAA,CACA,4BAA6B,CA1DzC,6BAkEI,kBAAA,CACA,iBAAkB,CAnEtB,sCAsEM,iBAAA,CACA,kBAAA,CACA,iBAAA,CACA,8BAAwB,CAzE9B,0CA6EM,aAAc,CA7EpB,kCAiFM,aAAA,CACA,oBAAe,CAlFrB,sCAsFM,UAAA,CACA,oBAAe,CAvFrB,8EA2FM,oBAAA,CACA,iBAAA,CACA,kBAAA,CACA,wBAAA,CACA,wBAAA,CACA,oBAAA,CACA,UAAA,CACA,iBAAA,CACA,uBAAA,CACA,qBAAgB,CApGtB,sCAwGM,qBAAA,CACA,cAAgB,CAzGtB,kCA6GM,eAAA,CACA,qBAAA,CACA,UAxMU,CAyFhB,wCAmHM,wBAAA,CACA,UAAA,CACA,eAAA,CACA,UAAA,CACA,eAAA,CACA,eAAA,CACA,YAAA,CACA,6BAAA,CACA,UAAA,CACA,cAAgB,CA5HtB,gDA+HQ,UA1NQ,CA2FhB,uCAsIM,kBAAA,CACA,uBAAA,CACA,oBAAA,CACA,eAAA,CACA,YAAA,CACA,6BAAA,CACA,UAvOU,CA2FhB,6CA+IQ,UA/OK,CAgGb,+CAkJU,WAAA,CACA,iBAAW","file":"togroup.f8580590.chunk.css","sourcesContent":["@charset \"UTF-8\";\n/*\n * @ 文字颜色\n */\n/*\n * @ 文字大小\n */\n/*\n * @ 背景颜色\n */\n/*\n * @ 分割线颜色\n */\n/*\n * @ 边框颜色\n */\n/*\n * @ 标签颜色\n */\n.to-group-box .v-list-item {\n margin-top: 5px; }\n .to-group-box .v-list-item .content {\n border-bottom: 1px solid #e7eaf1; }\n .to-group-box .v-list-item .content .cover {\n flex: inherit;\n width: 42.2%; }\n .to-group-box .v-list-item .content .cover img {\n width: 100%; }\n .to-group-box .v-list-item .info {\n width: 52.3%;\n position: relative;\n display: block; }\n .to-group-box .v-list-item .info .title {\n font-size: 16px;\n color: #333;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n height: 16px;\n line-height: 16px; }\n .to-group-box .v-list-item .info .contact {\n font-size: 14px;\n color: #666;\n margin-top: 14px; }\n .to-group-box .v-list-item .info .des {\n position: absolute;\n bottom: 0; }\n .to-group-box .v-list-item .info .des .course-price .price {\n color: #FF2121;\n font-size: 12px; }\n .to-group-box .v-list-item .info .des .course-price .new {\n color: #FF2121;\n font-size: 16px; }\n .to-group-box .v-list-item .info .des .course-price .old {\n color: #999;\n font-size: 12px;\n display: inline-block;\n margin-left: 15px;\n text-decoration: line-through; }\n\n.to-group-box .gorup-content {\n padding: 20px;\n text-align: center; }\n .to-group-box .gorup-content .imgname {\n width: 44px;\n height: 44px;\n border-radius: 50%;\n margin: 20px 20px 0 20px; }\n .to-group-box .gorup-content :nth-child(1) {\n margin-left: 0; }\n .to-group-box .gorup-content .tip {\n color: #E02E24;\n font-size: 16px; }\n .to-group-box .gorup-content .success {\n color: #09f;\n font-size: 16px; }\n .to-group-box .gorup-content .group-btn, .to-group-box .gorup-content .tostudy {\n display: inline-block;\n width: 335px;\n height: 44px;\n border-radius: 5px;\n background-color: #E02E24;\n font-size: 16px;\n color: #fff;\n text-align: center;\n line-height: 44px;\n margin-top: 20px; }\n .to-group-box .gorup-content .tostudy {\n background-color: #09f;\n margin-top: 30px; }\n .to-group-box .gorup-content .dec {\n font-size: 12px;\n margin-top: 10px;\n color: #666; }\n .to-group-box .gorup-content .group-dec {\n background-color: #FAFAFA;\n width: 100%;\n padding: 0 12px;\n height: 30px;\n line-height: 30px;\n font-size: 12px;\n display: flex;\n justify-content: space-between;\n color: #999;\n margin-top: 15px; }\n .to-group-box .gorup-content .group-dec .allNum {\n color: #333; }\n\n.to-group-box .group-course .top-title {\n height: 40px;\n line-height: 40px;\n font-size: 14px;\n padding: 0 12px;\n display: flex;\n justify-content: space-between;\n color: #333; }\n .to-group-box .group-course .top-title .more {\n color: #09f; }\n .to-group-box .group-course .top-title .more i {\n width: 12px;\n height: 7px; }\n"]}
\ No newline at end of file
.play .video{width:100%;height:57.333333vw;background-color:#000;position:relative}.play .video .video-js{width:100%;height:100%}.play .video .video-js .vjs-big-play-button{top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.play .video .purchase-box{width:100%;height:100%;position:absolute;left:0;top:0;background-color:rgba(0,0,0,.8);display:flex;flex-flow:column;justify-content:center;align-items:center}.play .video .purchase-box .hint{font-size:3.733333vw;color:#fff;margin-bottom:5.333333vw}.play .video .purchase-box .btns{width:100%;padding:0 16vw;display:flex;justify-content:space-around}.play .video .purchase-box .purchase-class{background-color:initial;background-color:#fff;color:#ff4000}.play .video .purchase-box .purchase-class,.play .video .purchase-box .purchase-episode{display:block;-webkit-appearance:none;outline:none;border:none;border-radius:1.333333vw;line-height:8vw;font-size:3.466667vw;padding:0 2.4vw}.play .video .purchase-box .purchase-episode{background-color:initial;background-color:#ff4000;color:#fff}.play .video video{width:100%;height:100%}.play .tab{height:11.733333vw;max-height:11.733333vw;line-height:11.733333vw;text-align:center;background:#f7f9fc;display:flex;justify-content:center}.play .tab,.play .tab>div{flex:1 0 auto}.play .tab a{display:inline-block;height:11.733333vw;font-size:4.266667vw}.play .active{color:#09f}.play .active .iconiconfront-74{color:#555}.recommendation{padding-top:5.333333vw}.recommendation>.title{font-size:4.266667vw;padding-left:4vw}.recommendation .info{display:flex;flex-wrap:wrap}.recommendation .info .des{font-size:3.733333vw;line-height:4.266667vw;align-self:flex-start}.recommendation .info .price{color:#ff2121;font-size:4.266667vw;margin-right:3.733333vw}.recommendation .info .stale-price{text-decoration:line-through;color:#999;font-size:3.2vw}.recommendation .info .bottom{align-self:flex-end}.v-list-base-item{height:33.866667vw;padding:2.666667vw 2.666667vw 0}.v-list-base-item .content{display:flex;height:100%;padding-bottom:2.666667vw;border-bottom:1px solid #e7eaf1}.v-list-base-item .content .cover{flex:0 0 auto;margin-right:4.266667vw;position:relative}.v-list-base-item .content .cover img{width:40vw;height:28.8vw;border-radius:.8vw}.v-list-base-item .content .course-status{width:100%;height:6.4vw;position:absolute;bottom:-1px;border-radius:0 0 .8vw .8vw;text-align:center;line-height:6.4vw;color:#fff;font-size:3.466667vw}.video-catalog li{height:11.733333vw;padding:0 4vw;line-height:11.733333vw;border-top:1px solid #e7eaf1;border-bottom:1px solid #e7eaf1}.video-catalog li.active{background-color:#f5fbff}.video-catalog li.active .duration,.video-catalog li.active .title{color:#09f}.video-catalog .title{display:inline-block;width:50%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:3.733333vw;margin-right:6.933333vw}.video-catalog .duration{display:inline-block;font-size:2.933333vw;overflow:hidden}.video-catalog .iconfont{float:right}.datum-catalog .prompt{height:8vw;line-height:8vw;font-size:3.2vw;color:#333;background-color:#fff4ce;text-align:center}.datum-catalog .file-name{padding:4vw 4vw 0}.datum-catalog .file-name:last-of-type{padding-bottom:4vw}
/*# sourceMappingURL=video.10e4a7e1.chunk.css.map */
\ No newline at end of file
{"version":3,"sources":["/Users/zhanghaozhe/server/mr-julyedu/src/components/video/video.scss","/Users/zhanghaozhe/server/mr-julyedu/src/components/video/recommendation/recommendation.scss","/Users/zhanghaozhe/server/mr-julyedu/src/common/v-list-base/index.scss","/Users/zhanghaozhe/server/mr-julyedu/src/components/video/video-catalog/video-catalog.scss","/Users/zhanghaozhe/server/mr-julyedu/src/components/video/datum-catalog/datum-catalog.scss"],"names":[],"mappings":"AAqGA,aAEQ,UAAA,CACA,kBAAA,CACA,qBAAA,CACA,iBAAkB,CAL1B,uBAQY,UAAA,CACA,WAAY,CATxB,4CAYgB,OAAA,CACA,QAAA,CACA,sCAAA,CAAA,8BAAgC,CAdhD,2BAmBY,UAAA,CACA,WAAA,CACA,iBAAA,CACA,MAAA,CACA,KAAA,CACA,+BAAA,CACA,YAAA,CACA,gBAAA,CACA,sBAAA,CACA,kBAAmB,CA5B/B,iCA+BgB,oBAAA,CACA,UAAA,CACA,wBAAmB,CAjCnC,iCAgDgB,UAAA,CACA,cAAA,CACA,YAAA,CACA,4BAA6B,CAnD7C,2CAyCgB,wBAAA,CAeA,qBAAA,CACA,aA5IM,CAmFtB,wFAqCgB,aAAA,CACA,uBAAA,CACA,YAAA,CACA,WAAA,CAEA,wBAAA,CACA,eAAA,CACA,oBAAA,CACA,eA9IJ,CAiGZ,6CAyCgB,wBAAA,CAoBA,wBAAA,CACA,UA/JJ,CAiGZ,mBAmEY,UAAA,CACA,WAAY,CApExB,WAyEQ,kBAAA,CACA,sBAAA,CACA,uBAAA,CACA,iBAAA,CACA,kBAAA,CAEA,YAAA,CACA,sBAAuB,CAhF/B,0BA8EQ,aAKkB,CAnF1B,aAuFY,oBAAA,CACA,kBAAA,CACA,oBA9JE,CAqEd,cA8FQ,UAhMK,CAkGb,gCAiGY,UA7LI,CC0FhB,gBACI,sBAAiB,CADrB,uBAIQ,oBAAA,CACA,gBAAkB,CAL1B,sBASQ,YAAA,CACA,cAAe,CAVvB,2BAaY,oBAAA,CACA,sBAAA,CACA,qBAAsB,CAflC,6BAoBY,aAAA,CACA,oBAAA,CACA,uBAAkB,CAtB9B,mCA0BY,4BAAA,CACA,UAAA,CACA,eA7FE,CAiEd,8BAgCY,mBAAoB,CChChC,kBACI,kBAAA,CACA,+BAAoB,CAFxB,2BAKQ,YAAA,CACA,WAAA,CACA,yBAAA,CACA,+BAxBW,CAgBnB,kCAWY,aAAA,CACA,uBAAA,CACA,iBAAkB,CAb9B,sCAegB,UAAA,CACA,aAAA,CACA,kBAAkB,CAjBlC,0CAqBY,UAAA,CACA,YAAA,CACA,iBAAA,CACA,WAAA,CACA,2BAAA,CACA,iBAAA,CACA,iBAAA,CACA,UAAA,CACA,oBAAe,CC7B3B,kBAEQ,kBAAA,CACA,aAAA,CACA,uBAAA,CACA,4BAAA,CACA,+BAAgC,CANxC,yBASY,wBAAyB,CATrC,mEAWgB,UA3GH,CAgGb,sBAiBQ,oBAAA,CACA,SAAA,CACA,kBAAA,CACA,eAAA,CACA,sBAAA,CACA,oBAAA,CACA,uBAAkB,CAvB1B,yBA2BQ,oBAAA,CACA,oBAAA,CACA,eAAgB,CA7BxB,yBAiCQ,WAAY,CCjCpB,uBAEQ,UAAA,CACA,eAAA,CACA,eAAA,CACA,UAAA,CACA,wBAAA,CACA,iBAAkB,CAP1B,0BAYQ,iBAAiB,CAZzB,uCAgBQ,kBAAoB","file":"video.10e4a7e1.chunk.css","sourcesContent":["@charset \"UTF-8\";\n/*\n * @ 文字颜色\n */\n/*\n * @ 文字大小\n */\n/*\n * @ 背景颜色\n */\n/*\n * @ 分割线颜色\n */\n/*\n * @ 边框颜色\n */\n/*\n * @ 标签颜色\n */\n.play .video {\n width: 100%;\n height: 215px;\n background-color: #000;\n position: relative; }\n .play .video .video-js {\n width: 100%;\n height: 100%; }\n .play .video .video-js .vjs-big-play-button {\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%); }\n .play .video .purchase-box {\n width: 100%;\n height: 100%;\n position: absolute;\n left: 0;\n top: 0;\n background-color: rgba(0, 0, 0, 0.8);\n display: flex;\n flex-flow: column;\n justify-content: center;\n align-items: center; }\n .play .video .purchase-box .hint {\n font-size: 14px;\n color: #fff;\n margin-bottom: 20px; }\n .play .video .purchase-box .btns {\n width: 100%;\n padding: 0 60px;\n display: flex;\n justify-content: space-around; }\n .play .video .purchase-box .purchase-class {\n display: block;\n -webkit-appearance: none;\n outline: none;\n border: none;\n background-color: transparent;\n border-radius: 5px;\n line-height: 30px;\n font-size: 13px;\n padding: 0 9px;\n background-color: #fff;\n color: #FF4000; }\n .play .video .purchase-box .purchase-episode {\n display: block;\n -webkit-appearance: none;\n outline: none;\n border: none;\n background-color: transparent;\n border-radius: 5px;\n line-height: 30px;\n font-size: 13px;\n padding: 0 9px;\n background-color: #FF4000;\n color: #fff; }\n .play .video video {\n width: 100%;\n height: 100%; }\n\n.play .tab {\n height: 44px;\n max-height: 44px;\n line-height: 44px;\n text-align: center;\n background: #F7F9FC;\n flex: 1 0 auto;\n display: flex;\n justify-content: center; }\n .play .tab > div {\n flex: 1 0 auto; }\n .play .tab a {\n display: inline-block;\n height: 44px;\n font-size: 16px; }\n\n.play .active {\n color: #09f; }\n .play .active .iconiconfront-74 {\n color: #555; }\n","@charset \"UTF-8\";\n/*\n * @ 文字颜色\n */\n/*\n * @ 文字大小\n */\n/*\n * @ 背景颜色\n */\n/*\n * @ 分割线颜色\n */\n/*\n * @ 边框颜色\n */\n/*\n * @ 标签颜色\n */\n.recommendation {\n padding-top: 20px; }\n .recommendation > .title {\n font-size: 16px;\n padding-left: 15px; }\n .recommendation .info {\n display: flex;\n flex-wrap: wrap; }\n .recommendation .info .des {\n font-size: 14px;\n line-height: 16px;\n align-self: flex-start; }\n .recommendation .info .price {\n color: #FF2121;\n font-size: 16px;\n margin-right: 14px; }\n .recommendation .info .stale-price {\n text-decoration: line-through;\n color: #999;\n font-size: 12px; }\n .recommendation .info .bottom {\n align-self: flex-end; }\n","@charset \"UTF-8\";\n/*\n * @ 文字颜色\n */\n/*\n * @ 文字大小\n */\n/*\n * @ 背景颜色\n */\n/*\n * @ 分割线颜色\n */\n/*\n * @ 边框颜色\n */\n/*\n * @ 标签颜色\n */\n.v-list-base-item {\n height: 127px;\n padding: 10px 10px 0; }\n .v-list-base-item .content {\n display: flex;\n height: 100%;\n padding-bottom: 10px;\n border-bottom: 1px solid #e7eaf1; }\n .v-list-base-item .content .cover {\n flex: 0 0 auto;\n margin-right: 16px;\n position: relative; }\n .v-list-base-item .content .cover img {\n width: 150px;\n height: 108px;\n border-radius: 3px; }\n .v-list-base-item .content .course-status {\n width: 100%;\n height: 24px;\n position: absolute;\n bottom: -1px;\n border-radius: 0 0 3px 3px;\n text-align: center;\n line-height: 24px;\n color: #fff;\n font-size: 13px; }\n","@charset \"UTF-8\";\n/*\n * @ 文字颜色\n */\n/*\n * @ 文字大小\n */\n/*\n * @ 背景颜色\n */\n/*\n * @ 分割线颜色\n */\n/*\n * @ 边框颜色\n */\n/*\n * @ 标签颜色\n */\n.video-catalog li {\n height: 44px;\n padding: 0 15px;\n line-height: 44px;\n border-top: 1px solid #E7EAF1;\n border-bottom: 1px solid #E7EAF1; }\n .video-catalog li.active {\n background-color: #F5FBFF; }\n .video-catalog li.active .title, .video-catalog li.active .duration {\n color: #09f; }\n\n.video-catalog .title {\n display: inline-block;\n width: 50%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n font-size: 14px;\n margin-right: 26px; }\n\n.video-catalog .duration {\n display: inline-block;\n font-size: 11px;\n overflow: hidden; }\n\n.video-catalog .iconfont {\n float: right; }\n","@charset \"UTF-8\";\n/*\n * @ 文字颜色\n */\n/*\n * @ 文字大小\n */\n/*\n * @ 背景颜色\n */\n/*\n * @ 分割线颜色\n */\n/*\n * @ 边框颜色\n */\n/*\n * @ 标签颜色\n */\n.datum-catalog .prompt {\n height: 30px;\n line-height: 30px;\n font-size: 12px;\n color: #333;\n background-color: #FFF4CE;\n text-align: center; }\n\n.datum-catalog .file-name {\n padding: 15px;\n padding-bottom: 0; }\n\n.datum-catalog .file-name:last-of-type {\n padding-bottom: 15px; }\n"]}
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
(window.webpackJsonp=window.webpackJsonp||[]).push([[0],{668:function(e,t,a){},669:function(e,t,a){},670:function(e,t,a){},671:function(e,t,a){},766:function(e,t,a){"use strict";a.r(t);var n=a(29),o=(a(27),a(9)),c=a.n(o),s=a(71),i=a(3),r=a(4),l=a(6),u=a(5),p=a(7),d=a(0),m=a.n(d),h=(a(668),a(669),a(670),a(16)),f=a.n(h),v=function(e){function t(){var e,a;Object(i.a)(this,t);for(var n=arguments.length,o=new Array(n),c=0;c<n;c++)o[c]=arguments[c];return(a=Object(l.a)(this,(e=Object(u.a)(t)).call.apply(e,[this].concat(o)))).clearInput=function(){a.props.onChange("")},a}return Object(p.a)(t,e),Object(r.a)(t,[{key:"render",value:function(){var e=this.props,t=e.type,a=e.placeholder;return m.a.createElement("div",{className:"custom-input-wrapper"},m.a.createElement("input",{type:t,className:f()("custom-input"),placeholder:a,onChange:this.props.onChange,value:this.props.value}),m.a.createElement("i",{className:f()("iconfont icondanseshixintubiao-3",{hide:0===this.props.value.length}),onClick:this.clearInput}))}}]),t}(d.Component);v.defaultProps={type:"text",placeholder:""};var C=v,g=function(e){function t(){var e,a;Object(i.a)(this,t);for(var n=arguments.length,o=new Array(n),c=0;c<n;c++)o[c]=arguments[c];return(a=Object(l.a)(this,(e=Object(u.a)(t)).call.apply(e,[this].concat(o)))).state={},a}return Object(p.a)(t,e),Object(r.a)(t,[{key:"render",value:function(){var e=this.props,t=e.onChange,a=e.redeemCode,n=e.exchange;return m.a.createElement("div",{className:"exchange-bar"},m.a.createElement(C,{placeholder:"\u8bf7\u8f93\u5165\u4f18\u60e0\u7801",onChange:t,value:a}),m.a.createElement("button",{className:f()({active:a&&a.length>0}),onClick:n},"\u5151\u6362"))}}]),t}(d.Component),b=(a(671),function(e){function t(){var e,a;Object(i.a)(this,t);for(var n=arguments.length,o=new Array(n),c=0;c<n;c++)o[c]=arguments[c];return(a=Object(l.a)(this,(e=Object(u.a)(t)).call.apply(e,[this].concat(o)))).pick=function(){var e=a.props,t=e.useCoupon;!e.invalid&&t&&t(a.props.id)},a.GoToUse=function(){a.props.useCoupon(a.props.id)},a}return Object(p.a)(t,e),Object(r.a)(t,[{key:"render",value:function(){var e=this.props,t=e.ctype,a=e.amount,n=e.format_expire_time,o=e.limit_course,c=e.invalid,s=e.course_title,i=e.id,r=e.selectedCouponId,l=e.showUseButton;return m.a.createElement("li",{className:"coupon",onClick:this.pick},m.a.createElement("div",{className:f()("coupon-info",c?"invalid":"coupon-type".concat(t))},m.a.createElement("p",{className:"type"},1===t?"\u4ee3\u91d1\u5238":"\u8bfe\u7a0b\u5238"),1===t?m.a.createElement("p",{className:"denomination"},a," ",m.a.createElement("span",null,"\u5143")):m.a.createElement("p",{className:"course-title"},s),m.a.createElement("p",{className:"expire"},"\u6709\u6548\u671f\u81f3\uff1a",n),r===i&&m.a.createElement("i",{className:f()("iconfont icondanseshixintubiao-5",{check:!c})}),m.a.createElement("ul",null,new Array(19).fill("a").map(function(e,t){return m.a.createElement("li",{key:t})}))),m.a.createElement("div",{className:"coupon-des"},m.a.createElement("span",{className:"limit"},0===o?"\u53ef\u7528\u4e8e\u5927\u4e8e\u4ee3\u91d1\u5238\u91d1\u989d\u7684\u8bfe\u7a0b":"\u4ec5\u9002\u7528\u4e8e\u300a".concat(s,"\u300b")),l&&m.a.createElement("button",{className:"use",onClick:this.GoToUse},"\u7acb\u5373\u4f7f\u7528")))}}]),t}(d.PureComponent)),y=a(1),E=a(54),j=a(37),O=a(18),_=function(e){function t(){var e,a;Object(i.a)(this,t);for(var n=arguments.length,o=new Array(n),r=0;r<n;r++)o[r]=arguments[r];return(a=Object(l.a)(this,(e=Object(u.a)(t)).call.apply(e,[this].concat(o)))).state={selectedCouponId:0,redeemCode:"",couponList:[],valid_coupons:[],invalid_coupons:[],courseId:Object(y.c)("id"),showUseButton:!1},a.handleChange=function(e){var t=e?e.target.value:"";a.setState({redeemCode:t})},a.exchange=function(){""!==a.state.redeemCode?y.d.post("".concat(y.a.home,"/m/coupon/exchange"),{code:a.state.redeemCode}).then(function(e){var t=e.data;if(200===t.code){var n=t.data;if(a.state.showUseButton)a.setState({couponList:[].concat(Object(s.a)(state.couponList),[n]),redeemCode:""});else{var o=t.data;2==o.ctype&&o.limit_course!=a.state.courseId?a.setState({invalid_coupons:[].concat(Object(s.a)(a.state.invalid_coupons),[o]),showUseButton:null}):a.setState({valid_coupons:[].concat(Object(s.a)(a.state.valid_coupons),[o]),redeemCode:""})}c.a.info("\u5151\u6362\u6210\u529f")}else c.a.info(t.msg)}):c.a.info("\u8bf7\u8f93\u5165\u5151\u6362\u7801")},a.getMyCoupons=function(){y.d.get("".concat(y.a.home,"/m/coupon/all")).then(function(e){var t=e.data;200===t.code?a.setState({couponList:Object(j.isEmpty)(t.data)?[]:t.data}):c.a.info(t.msg)})},a.getAllCoupons=function(){y.d.post("".concat(y.a.home,"/m/coupon/select"),{course_id:a.state.courseId}).then(function(e){var t=e.data;if(200===t.code){var n=t.data.inuse_coupon;a.setState({valid_coupons:n?[].concat(Object(s.a)(n),Object(s.a)(t.data.valid_coupons)):t.data.valid_coupons,invalid_coupons:t.data.invalid_coupons,selectedCouponId:n.length?n[0].id:0})}else c.a.info(t.msg)})},a.useCoupon=function(e){var t=a.props.history,n=a.state.couponList.find(function(t){return t.id===e});if(e)if(a.state.showUseButton)1===n.ctype?t.push("/classify"):t.push("/detail?id=".concat(n.limit_course));else{var o=a.state,s=o.courseId;o.selectedCouponId===e?y.d.post("".concat(y.a.home,"/m/coupon/cancel"),{course_id:s}).then(function(e){var t=e.data;200===t.code?a.setState({selectedCouponId:0}):c.a.info(t.msg)}):y.d.post("".concat(y.a.home,"/m/coupon/use"),{course_id:a.state.courseId,coupon_id:e}).then(function(t){var n=t&&t.data;200===n.code?(a.setState({selectedCouponId:e}),a.props.history.goBack()):c.a.info(n.msg)})}else c.a.info("\u672a\u77e5\u9519\u8bef"),location.reload()},a}return Object(p.a)(t,e),Object(r.a)(t,[{key:"componentDidMount",value:function(){var e=this.props,t=e.history,a=e.location,n=this.props.location.state;n&&n.from&&("/my"===n.from?(this.getMyCoupons(),this.setState({showUseButton:!0})):(this.state.courseId||(a.state&&a.state.from?t.replace(a.state.from):t.goBack()),this.getAllCoupons()))}},{key:"render",value:function(){var e=this.props.location.state,t=this.state,a=t.showUseButton,n=t.selectedCouponId;return m.a.createElement("div",{className:"use-coupon"},m.a.createElement(O.d,{title:"\u4f18\u60e0\u5238",arrow:!0}),m.a.createElement(g,{onChange:this.handleChange,exchange:this.exchange,redeemCode:this.state.redeemCode}),m.a.createElement("div",{className:"coupons-area"},m.a.createElement(w,{coupons:e&&e.from&&"/my"===e.from?this.state.couponList:this.state.valid_coupons,showUseButton:a,selectedCouponId:n,select:this.select,useCoupon:this.useCoupon}),this.state.invalid_coupons.length>0&&m.a.createElement(m.a.Fragment,null,m.a.createElement("div",{className:"invalid-title"},"- \u4e0d\u53ef\u4f7f\u7528\u7684\u4f18\u60e0\u5238 -"),m.a.createElement(w,{coupons:this.state.invalid_coupons,selectedCouponId:n,select:this.select,purpose:"use",invalid:"invalid"}))))}}]),t}(d.PureComponent);function w(e){var t=e.coupons,a=Object(n.a)(e,["coupons"]);return 0===t.length?m.a.createElement("div",{className:"empty"},m.a.createElement("p",null,"\u6682\u65e0\u53ef\u4f7f\u7528\u7684\u4f18\u60e0\u5238")):m.a.createElement("ul",null,t.map(function(e){return m.a.createElement(b,Object.assign({key:e.id},e,{id:e.id},a))}))}t.default=Object(E.a)(_)}}]);
//# sourceMappingURL=coupons.6a94a878.chunk.js.map
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
(window.webpackJsonp=window.webpackJsonp||[]).push([[2],{755:function(e,a,t){},761:function(e,a,t){"use strict";t.r(a);t(27);var n=t(9),c=t.n(n),r=t(3),s=t(4),m=t(6),i=t(5),o=t(7),l=(t(161),t(82)),d=t.n(l),u=t(0),p=t.n(u),E=(t(755),t(18)),f=t(102),N=t(1),b=t(13),v=d.a.alert,_=function(e){function a(e){var t;return Object(r.a)(this,a),(t=Object(m.a)(this,Object(i.a)(a).call(this,e))).getList=function(){N.d.get("".concat(N.a.home,"/m/my/orders/1/1")).then(function(e){200===e.data.code?t.setState({data:e.data.data}):c.a.info(e.data.msg,2)})},t.cancel=function(e){v("\u786e\u8ba4\u53d6\u6d88\u8ba2\u5355\uff1f","\u8ba2\u5355\u53d6\u6d88\u540e\uff0c\u4f18\u60e0\u5238\u548c\u62b5\u6263\u7684\u4f59\u989d\u4f1a\u8fd4\u56de\u5230\u60a8\u7684\u8d26\u6237\u3002",[{text:"\u53d6\u6d88",onPress:function(){return console.log("cancel")}},{text:"\u786e\u8ba4",onPress:function(){var a={order_id:e};N.d.post("".concat(N.a.home,"/m/cancel_order"),a).then(function(e){200===e.data.code?t.getList():c.a.info(e.data.msg,2)})}}])},t.state={data:[]},t}return Object(o.a)(a,e),Object(s.a)(a,[{key:"componentDidMount",value:function(){this.getList()}},{key:"render",value:function(){var e=this;return p.a.createElement("div",{className:"myorders-box"},p.a.createElement(E.d,{title:"\u6211\u7684\u8ba2\u5355",arrow:!0,cart:!1}),this.state.data&&this.state.data.length>0?this.state.data.map(function(a,t){return p.a.createElement("div",{className:"order-body",key:t},p.a.createElement(h,{item:a}),a.course&&a.course.length>0&&a.course.map(function(e,a){var t=p.a.createElement("div",{className:"order-info"},p.a.createElement("p",{className:"order-title text-overflow-one"},p.a.createElement(b.b,{to:"/detail?id=".concat(e.course_id)},e.course_title)),p.a.createElement("p",{className:"order-content text-overflow-2"},e.description),p.a.createElement("p",{className:"order-des"},p.a.createElement("span",{className:"order-newprice"},"\xa5",e.pay_amount),p.a.createElement("span",{className:"order-price"},"\xa5",e.price0)));return p.a.createElement("div",{className:"order-wrap",key:a},p.a.createElement(f.a,{info:t,src:e.image_name,id:e.course_id}))}),p.a.createElement(g,{item:a,cancel:e.cancel}))}):p.a.createElement("div",{className:"cart-tip"},p.a.createElement("p",{className:"cart-mess"},"\u60a8\u8fd8\u6ca1\u6709\u8ba2\u5355\u54e6\uff0c\u5feb\u53bb\u901b\u901b\u5427~"),p.a.createElement(b.b,{to:"/classify"},"\u53bb\u901b\u901b")))}}]),a}(u.Component);function h(e){var a;return a="0"===e.item.pay_time&&0===e.item.member_num?p.a.createElement("span",{className:"oid-status"},"\u7b49\u5f85\u652f\u4ed8"):e.item.member_num===e.item.pdd_info.length&&0!==e.item.member_num?p.a.createElement("span",{className:"oid-success"},"\u62fc\u56e2\u6210\u529f"):p.a.createElement("span",{className:"oid-success"},"\u652f\u4ed8\u6210\u529f"),p.a.createElement("div",{className:"order-head"},p.a.createElement("span",{className:"oid-num"},"\u8ba2\u5355\u53f7\uff1a",e.item.oid),a)}function g(e){return p.a.createElement("div",{className:"order-btm"},p.a.createElement("div",{className:"price-info"},p.a.createElement("p",null,p.a.createElement("span",{className:"payable"},"\u5e94\u4ed8\uff1a"),p.a.createElement("span",{className:"price"},"\xa5",e.item.pay_amount)),p.a.createElement("p",null,p.a.createElement("span",{className:"payable"},"\u5df2\u4f18\u60e0\uff1a"),p.a.createElement("span",{className:"price"},"\xa5",e.item.coupon_amount))),"0"===e.item.pay_time&&0===e.item.member_num&&p.a.createElement("div",{className:"btm-right"},p.a.createElement("button",{className:"cancel",onClick:function(a){return e.cancel(e.item.oid)}},"\u53d6\u6d88\u8ba2\u5355"),p.a.createElement(b.b,{to:"/payorder?oid=".concat(e.item.oid)},"\u53bb\u652f\u4ed8")),0!==e.item.member_num&&p.a.createElement("div",{className:"btm-right"},p.a.createElement("div",{className:"group"},e.item.pdd_info&&e.item.pdd_info.length>0&&e.item.pdd_info.map(function(e,a){return p.a.createElement("img",{src:""===e.user_avatar?"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/tinypng-spreadtrain8/ellipsis.png":e.user_avatar,key:a,alt:""})}))))}a.default=_}}]);
//# sourceMappingURL=myorders.9736dcd8.chunk.js.map
\ No newline at end of file
(window.webpackJsonp=window.webpackJsonp||[]).push([[3],{756:function(e,t,a){},762:function(e,t,a){"use strict";a.r(t);a(27);var c=a(9),n=a.n(c),s=a(3),i=a(4),r=a(6),o=a(5),l=a(7),d=a(0),m=a.n(d),u=(a(756),a(18)),p=a(1),f=a(13),h=a(19),b=function(e){function t(e){var a;return Object(s.a)(this,t),(a=Object(r.a)(this,Object(o.a)(t).call(this,e))).getList=function(){p.d.get("".concat(p.a.home,"/m/my/courses")).then(function(e){200===e.data.code?a.setState({data:e.data.data}):n.a.info(e.data.msg,2)})},a.state={data:[]},a}return Object(l.a)(t,e),Object(i.a)(t,[{key:"componentDidMount",value:function(){this.getList()}},{key:"render",value:function(){var e=this.props.user,t=e&&e.data&&e.data.uid;return m.a.createElement("div",{className:"purchased-box"},m.a.createElement(u.d,{title:"\u5df2\u8d2d\u8bfe\u7a0b",arrow:!0,cart:!1}),this.state.data&&this.state.data.length>0?m.a.createElement("div",{className:"purchased-body"},m.a.createElement("div",{className:"tip"},"\u52a0\u7fa4\u8bf7\u5907\u6ce8\u60a8\u7684\u5b66\u53f7\uff1a",t),this.state.data.map(function(e,t){var a=m.a.createElement("div",{className:"info"},m.a.createElement("p",{className:"title"},m.a.createElement(f.b,{to:"/detail?id=".concat(e.course_id)},e.course_title)),m.a.createElement("p",{className:"contact text-overflow-2"},e.simpledescription),m.a.createElement("div",{className:"des"},"QQ\u7fa4\uff1a",e.course_qq));return m.a.createElement(u.g,{key:t,img:e.image_name,id:e.course_id,info:a})})):m.a.createElement("div",{className:"cart-tip"},m.a.createElement("p",{className:"cart-mess"},"\u60a8\u8fd8\u6ca1\u6709\u8bfe\u7a0b\u54e6\uff0c\u5feb\u53bb\u901b\u901b\u5427~"),m.a.createElement(f.b,{to:"/classify"},"\u53bb\u901b\u901b")))}}]),t}(d.Component);t.default=Object(h.b)(function(e){return{user:e.user}},null)(b)}}]);
//# sourceMappingURL=purchased.380e692a.chunk.js.map
\ No newline at end of file
{"version":3,"sources":["components/purchased/index.js"],"names":["Purchased","props","_this","Object","_Users_zhanghaozhe_server_mr_julyedu_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_2__","this","_Users_zhanghaozhe_server_mr_julyedu_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__","_Users_zhanghaozhe_server_mr_julyedu_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__","call","getList","http","get","concat","api","home","then","res","data","code","setState","antd_mobile_lib_toast__WEBPACK_IMPORTED_MODULE_1___default","a","info","msg","state","user","uid","react__WEBPACK_IMPORTED_MODULE_7___default","createElement","className","_common__WEBPACK_IMPORTED_MODULE_9__","title","arrow","cart","length","map","item","index","Info","react_router_dom__WEBPACK_IMPORTED_MODULE_11__","to","course_id","course_title","simpledescription","course_qq","key","img","image_name","id","Component","connect"],"mappings":"4OASMA,cACF,SAAAA,EAAYC,GAAO,IAAAC,EAAA,OAAAC,OAAAC,EAAA,EAAAD,CAAAE,KAAAL,IACfE,EAAAC,OAAAG,EAAA,EAAAH,CAAAE,KAAAF,OAAAI,EAAA,EAAAJ,CAAAH,GAAAQ,KAAAH,KAAMJ,KAWVQ,QAAU,WACNC,IAAKC,IAAL,GAAAC,OAAYC,IAAIC,KAAhB,kBAAsCC,KAAK,SAACC,GAClB,MAAlBA,EAAIC,KAAKC,KACThB,EAAKiB,SAAS,CACVF,KAAMD,EAAIC,KAAKA,OAGnBG,EAAAC,EAAMC,KAAKN,EAAIC,KAAKM,IAAK,MAjBjCrB,EAAKsB,MAAQ,CACTP,KAAM,IAHKf,mFAQfG,KAAKI,2CAiBA,IACEgB,EAAQpB,KAAKJ,MAAbwB,KACDC,EAAMD,GAAQA,EAAKR,MAAQQ,EAAKR,KAAKS,IAC3C,OACIC,EAAAN,EAAAO,cAAA,OAAKC,UAAU,iBACXF,EAAAN,EAAAO,cAACE,EAAA,EAAD,CAAWC,MAAM,2BAAOC,OAAO,EAAMC,MAAM,IAEvC5B,KAAKmB,MAAMP,MAAQZ,KAAKmB,MAAMP,KAAKiB,OAAS,EACxCP,EAAAN,EAAAO,cAAA,OAAKC,UAAU,kBACXF,EAAAN,EAAAO,cAAA,OAAKC,UAAU,OAAf,+DAAgCH,GAE5BrB,KAAKmB,MAAMP,KAAKkB,IAAI,SAACC,EAAMC,GACvB,IAAMC,EACFX,EAAAN,EAAAO,cAAA,OAAKC,UAAU,QACXF,EAAAN,EAAAO,cAAA,KAAGC,UAAU,SACTF,EAAAN,EAAAO,cAACW,EAAA,EAAD,CAAMC,GAAE,cAAA5B,OAAgBwB,EAAKK,YACxBL,EAAKM,eAGdf,EAAAN,EAAAO,cAAA,KAAGC,UAAU,2BAA2BO,EAAKO,mBAC7ChB,EAAAN,EAAAO,cAAA,OAAKC,UAAU,OAAf,iBACSO,EAAKQ,YAItB,OACIjB,EAAAN,EAAAO,cAACE,EAAA,EAAD,CAAOe,IAAKR,EAAOS,IAAKV,EAAKW,WACtBC,GAAIZ,EAAKK,UACTnB,KAAMgB,OAK3BX,EAAAN,EAAAO,cAAA,OAAKC,UAAU,YACbF,EAAAN,EAAAO,cAAA,KAAGC,UAAU,aAAb,mFACAF,EAAAN,EAAAO,cAACW,EAAA,EAAD,CAAMC,GAAG,aAAT,+BA7DJS,aAsETC,sBACX,SAAA1B,GAAK,MAAK,CAACC,KAAMD,EAAMC,OACvB,KAFWyB,CAGblD","file":"static/js/purchased.380e692a.chunk.js","sourcesContent":["import React, {Component} from 'react';\nimport './index.scss';\nimport {HeaderBar} from '../../common'\nimport {VList} from '../../common'\nimport {http, api} from \"@/utils\";\nimport {Link} from 'react-router-dom'\nimport {Toast} from 'antd-mobile'\nimport {connect} from \"react-redux\"\n\nclass Purchased extends Component {\n constructor(props) {\n super(props)\n this.state = {\n data: []\n }\n }\n\n componentDidMount() {\n this.getList()\n }\n\n // 获取订单\n getList = () => {\n http.get(`${api.home}/m/my/courses`,).then((res) => {\n if (res.data.code === 200) {\n this.setState({\n data: res.data.data\n })\n } else {\n Toast.info(res.data.msg, 2);\n }\n })\n }\n\n\n render() {\n const {user} = this.props\n const uid = user && user.data && user.data.uid\n return (\n <div className='purchased-box'>\n <HeaderBar title='已购课程' arrow={true} cart={false}></HeaderBar>\n {\n this.state.data && this.state.data.length > 0 ?\n <div className=\"purchased-body\">\n <div className='tip'>加群请备注您的学号:{uid}</div>\n {\n this.state.data.map((item, index) => {\n const Info = (\n <div className=\"info\">\n <p className='title'>\n <Link to={`/detail?id=${item.course_id}`}>\n {item.course_title}\n </Link>\n </p>\n <p className='contact text-overflow-2'>{item.simpledescription}</p>\n <div className='des'>\n QQ群:{item.course_qq}\n </div>\n </div>\n )\n return (\n <VList key={index} img={item.image_name}\n id={item.course_id}\n info={Info}></VList>\n )\n })\n }\n </div>\n : <div className=\"cart-tip\">\n <p className='cart-mess'>您还没有课程哦,快去逛逛吧~</p>\n <Link to='/classify'>去逛逛</Link>\n </div>\n }\n\n </div>\n )\n }\n}\n\nexport default connect(\n state => ({user: state.user}),\n null\n)(Purchased)\n"],"sourceRoot":""}
\ No newline at end of file
!function(e){function t(t){for(var n,o,i=t[0],c=t[1],s=t[2],l=0,d=[];l<i.length;l++)o=i[l],a[o]&&d.push(a[o][0]),a[o]=0;for(n in c)Object.prototype.hasOwnProperty.call(c,n)&&(e[n]=c[n]);for(f&&f(t);d.length;)d.shift()();return u.push.apply(u,s||[]),r()}function r(){for(var e,t=0;t<u.length;t++){for(var r=u[t],n=!0,o=1;o<r.length;o++){var c=r[o];0!==a[c]&&(n=!1)}n&&(u.splice(t--,1),e=i(i.s=r[0]))}return e}var n={},o={4:0},a={4:0},u=[];function i(t){if(n[t])return n[t].exports;var r=n[t]={i:t,l:!1,exports:{}};return e[t].call(r.exports,r,r.exports,i),r.l=!0,r.exports}i.e=function(e){var t=[];o[e]?t.push(o[e]):0!==o[e]&&{0:1,2:1,3:1,5:1,6:1,7:1,8:1,10:1}[e]&&t.push(o[e]=new Promise(function(t,r){for(var n="static/css/"+({0:"coupons",2:"myorders",3:"purchased",5:"shareposter",6:"study",7:"togroup",8:"video"}[e]||e)+"."+{0:"9ece7350",2:"3ab93c8e",3:"72c55bd6",5:"82081d02",6:"586bcabb",7:"f8580590",8:"10e4a7e1",10:"1597b3e9",11:"31d6cfe0"}[e]+".chunk.css",a=i.p+n,u=document.getElementsByTagName("link"),c=0;c<u.length;c++){var s=(f=u[c]).getAttribute("data-href")||f.getAttribute("href");if("stylesheet"===f.rel&&(s===n||s===a))return t()}var l=document.getElementsByTagName("style");for(c=0;c<l.length;c++){var f;if((s=(f=l[c]).getAttribute("data-href"))===n||s===a)return t()}var d=document.createElement("link");d.rel="stylesheet",d.type="text/css",d.onload=t,d.onerror=function(t){var n=t&&t.target&&t.target.src||a,u=new Error("Loading CSS chunk "+e+" failed.\n("+n+")");u.request=n,delete o[e],d.parentNode.removeChild(d),r(u)},d.href=a,document.getElementsByTagName("head")[0].appendChild(d)}).then(function(){o[e]=0}));var r=a[e];if(0!==r)if(r)t.push(r[2]);else{var n=new Promise(function(t,n){r=a[e]=[t,n]});t.push(r[2]=n);var u,c=document.createElement("script");c.charset="utf-8",c.timeout=120,i.nc&&c.setAttribute("nonce",i.nc),c.src=function(e){return i.p+"static/js/"+({0:"coupons",2:"myorders",3:"purchased",5:"shareposter",6:"study",7:"togroup",8:"video"}[e]||e)+"."+{0:"6a94a878",2:"9736dcd8",3:"380e692a",5:"5e83848f",6:"becfeee6",7:"6905e23b",8:"1b371a9a",10:"38fa9101",11:"a116d384"}[e]+".chunk.js"}(e),u=function(t){c.onerror=c.onload=null,clearTimeout(s);var r=a[e];if(0!==r){if(r){var n=t&&("load"===t.type?"missing":t.type),o=t&&t.target&&t.target.src,u=new Error("Loading chunk "+e+" failed.\n("+n+": "+o+")");u.type=n,u.request=o,r[1](u)}a[e]=void 0}};var s=setTimeout(function(){u({type:"timeout",target:c})},12e4);c.onerror=c.onload=u,document.head.appendChild(c)}return Promise.all(t)},i.m=e,i.c=n,i.d=function(e,t,r){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},i.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(i.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)i.d(r,n,function(t){return e[t]}.bind(null,n));return r},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="/",i.oe=function(e){throw console.error(e),e};var c=window.webpackJsonp=window.webpackJsonp||[],s=c.push.bind(c);c.push=t,c=c.slice();for(var l=0;l<c.length;l++)t(c[l]);var f=s;r()}([]);
//# sourceMappingURL=runtime~main.a0b841fe.js.map
\ No newline at end of file
(window.webpackJsonp=window.webpackJsonp||[]).push([[5],{733:function(e,t,a){},760:function(e,t,a){"use strict";a.r(t);a(27);var n=a(9),i=a.n(n),s=a(3),r=a(4),c=a(6),o=a(5),l=a(7),d=a(89),m=a(0),g=a.n(m),u=(a(733),a(18)),h=a(1),v=a(734),f=a.n(v),p=function(e){function t(e){var a;return Object(s.a)(this,t),(a=Object(c.a)(this,Object(o.a)(t).call(this,e))).initCanvas=function(e,t){var n=Object(d.a)(Object(d.a)(a)),i=e[t].poster,s=450*e[t].header_position_x,r=800*e[t].header_position_y,c=(e[t].qr_code_x,e[t].qr_code_y,e[t].qr_code_width,e[t].qr_code_height,"/detail/".concat(Object(h.c)("courseId"),"/").concat(Object(h.c)("dist_code")),document.getElementById("canvas")),o=c.getContext("2d");n.getBase64(i).then(function(a){var i=new Image;i.src=a;var c=document.getElementById("qrcode"),l=navigator.userAgent.toLowerCase();l.indexOf("Android")>-1||l.indexOf("Adr"),l.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/);/(iPhone|iPad|iPod|iOS)/i.test(navigator.userAgent)?c=document.getElementById("qrcode"):/(Android)/i.test(navigator.userAgent)&&(c=document.getElementById("qrcode")),i.setAttribute("crossOrigin","anonymous"),i.onload=function(){o.drawImage(i,0,0,450,800),o.drawImage(c,320,685,100,100),o.fillStyle=e[t].username_color,o.font="16px serif",o.fillText("@"+n.name,s+50+20,r+25),o.font="14px serif",o.fillText("\u6b63\u5728\u5b66\u4e60\u8be5\u8bfe\u7a0b",s+50+20,r+25+20),o.restore()}}).then(function(){n.getBase64(n.state.imgUrl).then(function(e){var t=new Image;t.src=e,t.setAttribute("crossOrigin","anonymous"),t.setAttribute("border-Radius","50%"),t.onload=function(){n.imgPosition(o,t,s,r,24),o.drawImage(t,s,r,48,48),o.restore(),n.setState({billSrc:n.convertCanvasToImage(c)})}})})},a.children=function(e,t){var a=e.childNodes,n=[];if(/MSIE(6|7|8)/.test(navigator.userAgent))for(var i=0;i<a.length;i++){var s=a[i];1===s.nodeType&&(n[n.length]=s)}else n=Array.prototype.slice.call(e.children);if("string"===typeof t)for(var r=0;r<n.length;r++)(e=n[r]).nodeName.toLowerCase()!==t.toLowerCase()&&(n.splice(r,1),r--);return n},a.imgPosition=function(e,t,a,n,i){e.save();var s=a+i,r=n+i;e.beginPath(),e.arc(s,r,i,0,2*Math.PI),e.clip()},a.getBase64Image=function(e){var t=document.createElement("canvas");t.width=e.width,t.height=e.height,t.getContext("2d").drawImage(e,0,0,e.width,e.height);var a=e.src.substring(e.src.lastIndexOf(".")+1).toLowerCase();return t.toDataURL("image/"+a)},a.convertCanvasToImage=function(e){var t=new Image;return t.src=e.toDataURL("image/png"),t},a.squareClick=function(e){a.setState({smallactive:e}),a.initCanvas(a.state.bgImage,e)},a.state={codeSrc:"",billSrc:"",imgUrl:"",smallListImg:[],smallactive:0,distPrice:"",name:"",bgImage:[]},a}return Object(l.a)(t,e),Object(r.a)(t,[{key:"componentDidMount",value:function(){var e=this;this.getCodeWe(),h.d.get("".concat(h.a.home,"/m/dist/posters/").concat(Object(h.c)("courseId"),"/").concat(Object(h.c)("uid"))).then(function(t){200===t.data.code?(e.setState({imgUrl:t.data.data.avatar,smallListImg:t.data.data.list,distPrice:t.data.data.dist_course,bgImage:t.data.data.list,name:t.data.data.username}),e.initCanvas(e.state.bgImage,0)):i.a.info(t.data.msg,2)})}},{key:"getCodeWe",value:function(){var e=this,t="/detail/".concat(Object(h.c)("courseId"),"/").concat(Object(h.c)("dist_code"));return new Promise(function(a){f.a.toDataURL(t,{},function(t,a){e.setState({codeSrc:a})}),a()})}},{key:"getBase64",value:function(e){var t=this;return new Promise(function(a){var n=null,i=new Image,s=+new Date;i.setAttribute("crossOrigin","anonymous"),i.src=e+"?"+s,i.onload=function(){n=t.getBase64Image(i),a(n)},i.onerror=function(){var a=+new Date;t.getBase64(e+"?"+a)}})}},{key:"render",value:function(){var e=this;return g.a.createElement("div",{className:"share-poster"},g.a.createElement(u.d,{title:"\u751f\u6210\u4e13\u5c5e\u6d77\u62a5",arrow:!0,cart:!1}),g.a.createElement("div",{className:"total-container"},g.a.createElement("div",{className:"placard-img-container",id:"imgWrapper"},g.a.createElement("img",{src:this.state.billSrc.src,alt:""})),g.a.createElement("img",{src:this.state.codeSrc,alt:"",id:"qrcode",className:"placard-code"}),g.a.createElement("canvas",{id:"canvas",width:"450",height:"800",className:""===this.state.billSrc?"":"hide"})),g.a.createElement("div",{className:"placard-desc"},g.a.createElement("span",{className:"placard-sharetxt"},"\u957f\u6309\u4fdd\u5b58\u6d77\u62a5\u5206\u4eab\u7ed9\u597d\u53cb\uff0c\u6bcf\u6709\u4e00\u4eba\u901a\u8fc7\u60a8\u7684\u5206\u4eab\u8d2d\u4e70\u8be5\u8bfe\u7a0b\uff0c\u60a8\u53ef\u4ee5",0===this.state.distPrice.count_type&&g.a.createElement("span",{className:"placard-price"},"\u83b7\u5f97",this.state.distPrice.first_level_tip,"\u5143\u7684\u4f63\u91d1\u5956\u52b1\u3002"),1===this.state.distPrice.count_type&&g.a.createElement("span",{className:"placard-price"},"\u83b7\u5f97\u6210\u4ea4\u91d1\u989d\u7684",this.state.distPrice.first_level_scale,"%\u4f5c\u4e3a\u4f63\u91d1\u5956\u52b1\u3002"))),g.a.createElement("div",{className:"placard-swiper"},g.a.createElement("ul",{className:"placard-list"},this.state.smallListImg&&this.state.smallListImg.length>0&&this.state.smallListImg.map(function(t,a){return g.a.createElement("li",{onClick:e.squareClick.bind(e,a),key:a,className:e.state.smallactive===a?"active":""},g.a.createElement("img",{src:t.square,alt:""}))}))))}}]),t}(m.Component);t.default=p}}]);
//# sourceMappingURL=shareposter.5e83848f.chunk.js.map
\ No newline at end of file
(window.webpackJsonp=window.webpackJsonp||[]).push([[7],{757:function(e,a,t){},763:function(e,a,t){"use strict";t.r(a);var c=t(3),s=t(4),n=t(6),m=t(5),l=t(7),i=t(0),r=t.n(i),o=(t(757),t(18)),d=(t(1),t(19),t(13)),p=function(e){function a(e){var t;return Object(c.a)(this,a),(t=Object(n.a)(this,Object(m.a)(a).call(this,e))).state={data:{course_id:"140",course_title:"\u8bfe\u7a0b\u6807\u9898\u8bfe\u7a0b\u6807\u9898\u8bfe\u7a0b\u6807\u9898\u8bfe\u7a0b\u6807\u9898\u8bfe\u7a0b\u6807\u9898\u8bfe\u7a0b\u6807\u9898\u8bfe\u7a0b\u6807\u9898\u8bfe\u7a0b\u6807\u9898",simpledescription:"\u8bfe\u7a0b\u6807\u9898\u8bfe\u7a0b\u6807\u9898\u8bfe\u7a0b\u6807\u9898\u8bfe\u7a0b\u6807\u9898\u8bfe\u7a0b\u6807\u9898\u8bfe\u7a0b\u6807\u9898\u8bfe\u7a0b\u6807\u9898\u8bfe\u7a0b\u6807\u9898\u8bfe\u7a0b\u6807\u9898\u8bfe\u7a0b\u6807\u9898\u8bfe\u7a0b\u6807\u9898\u8bfe\u7a0b\u6807\u9898\u8bfe\u7a0b\u6807\u9898\u8bfe\u7a0b\u6807\u9898\u8bfe\u7a0b\u6807\u9898\u8bfe\u7a0b\u6807\u9898",image_name:"https://julyedu-img-public.oss-cn-beijing.aliyuncs.com/Public/Image/6479fe123a.jpg",price0:"140",price1:"140",success:!1,my:0}},t}return Object(l.a)(a,e),Object(s.a)(a,[{key:"render",value:function(){var e=r.a.createElement("div",{className:"info"},r.a.createElement("p",{className:"title"},r.a.createElement(d.b,{to:"/detail?id=".concat(this.state.data.course_id)},this.state.data.course_title)),r.a.createElement("p",{className:"contact text-overflow-2"},this.state.data.simpledescription),r.a.createElement("div",{className:"des"},r.a.createElement("p",{className:"course-price"},r.a.createElement("span",{className:"new"},"\xa5",this.state.data.price1),r.a.createElement("span",{className:"old"},"\xa5",this.state.data.price0))));return r.a.createElement("div",{className:"to-group-box"},r.a.createElement(o.d,{title:"\u62fc\u56e2",arrow:!0,cart:!1}),r.a.createElement(o.g,{img:this.state.data.image_name,id:this.state.data.course_id,info:e}),r.a.createElement(u,{data:this.state.data}),r.a.createElement("div",{className:"group-course"},r.a.createElement("div",{className:"top-title"},r.a.createElement("span",null,"\u672c\u5468\u7279\u60e0"),r.a.createElement(d.b,{to:"/preferential",className:"more"},"\u66f4\u591a",r.a.createElement("i",{className:"iconfont iconiconfront-70"}))),r.a.createElement(o.g,{img:this.state.data.image_name,id:this.state.data.course_id,info:e})))}}]),a}(i.Component);function u(e){var a,t,c;return console.log(e),0===e.data.my?(a=r.a.createElement("p",{className:"tip"},"\u62fc\u56e2\u7701500\u5143"),t=r.a.createElement(d.b,{to:"/",className:"group-btn"},"\u9080\u8bf7\u597d\u53cb\u53c2\u56e2 23\uff1a23\uff1a23 \u540e\u7ed3\u675f"),c=r.a.createElement("p",{className:"dec"},"\u5206\u4eab\u52303\u4e2a\u7fa4\u540e\uff0c\u6210\u56e2\u7387\u9ad8\u8fbe98%")):(a=r.a.createElement("p",{className:"tip"},"\u62fc\u56e2\u7701500\u5143"),t=r.a.createElement(d.b,{to:"/",className:"group-btn"},"\u4e00\u952e\u53c2\u56e2")),e.data.success&&(a=r.a.createElement("p",{className:"success"},"\u62fc\u56e2\u6210\u529f"),t=r.a.createElement(d.b,{to:"/play",className:"tostudy"},"\u53bb\u5b66\u4e60")),r.a.createElement("div",{className:"gorup-content"},a,r.a.createElement("img",{className:"imgname",src:e.data.image_name,alt:""}),r.a.createElement("img",{className:"imgname",src:e.data.image_name,alt:""}),r.a.createElement("img",{className:"imgname",src:e.data.image_name,alt:""}),t,c,!e.data.success&&r.a.createElement("div",{className:"group-dec"},r.a.createElement("span",null,r.a.createElement("i",{className:"iconfont iconiconfront-1"}),"\xb7\u597d\u53cb\u53c2\u56e2 \xb7\u4eba\u6ee1\u6210\u4ea4 \xb7\u4eba\u4e0d\u6ee1\u9000\u6b3e"),r.a.createElement("span",{className:"allNum"},"\u7d2f\u8ba1856\u4eba\u6210\u56e2")))}a.default=p}}]);
//# sourceMappingURL=togroup.6905e23b.chunk.js.map
\ No newline at end of file
{"version":3,"sources":["components/detail/group/togroup.js"],"names":["ToGroup","props","_this","Object","_Users_zhanghaozhe_server_mr_julyedu_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__","this","_Users_zhanghaozhe_server_mr_julyedu_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__","_Users_zhanghaozhe_server_mr_julyedu_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__","call","state","data","course_id","course_title","simpledescription","image_name","price0","price1","success","my","Info","react__WEBPACK_IMPORTED_MODULE_5___default","a","createElement","className","react_router_dom__WEBPACK_IMPORTED_MODULE_10__","to","concat","_common__WEBPACK_IMPORTED_MODULE_7__","title","arrow","cart","img","id","info","GorupContent","Component","tip","btn","dec","console","log","src","alt"],"mappings":"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","file":"static/js/togroup.6905e23b.chunk.js","sourcesContent":["import React, {Component} from 'react'\nimport './togroup.scss'\nimport {HeaderBar} from '../../../common'\nimport {VList} from '../../../common'\n\nimport {getParam} from \"@/utils\"\nimport {connect} from \"react-redux\"\nimport {Link} from \"react-router-dom\"\n\n\nclass ToGroup extends Component {\n constructor(props) {\n super(props)\n this.state = {\n data: {\n 'course_id': '140',\n 'course_title': '课程标题课程标题课程标题课程标题课程标题课程标题课程标题课程标题',\n 'simpledescription': '课程标题课程标题课程标题课程标题课程标题课程标题课程标题课程标题课程标题课程标题课程标题课程标题课程标题课程标题课程标题课程标题',\n 'image_name': 'https://julyedu-img-public.oss-cn-beijing.aliyuncs.com/Public/Image/6479fe123a.jpg',\n 'price0': '140',\n 'price1': '140',\n 'success': false, // 拼团成功\n 'my': 0, // 0 自己发起的邀请好友 1 别人发起的,参别人的团\n }\n }\n }\n\n render() {\n const Info = (\n <div className=\"info\">\n <p className='title'>\n <Link to={`/detail?id=${this.state.data.course_id}`}>\n {this.state.data.course_title}\n </Link>\n </p>\n <p className='contact text-overflow-2'>{this.state.data.simpledescription}</p>\n <div className='des'>\n <p className=\"course-price\">\n <span className=\"new\">¥{this.state.data.price1}</span>\n <span className=\"old\">¥{this.state.data.price0}</span>\n </p>\n </div>\n </div>\n )\n return (\n <div className='to-group-box'>\n <HeaderBar title='拼团' arrow={true} cart={false}></HeaderBar>\n <VList img={this.state.data.image_name} id={this.state.data.course_id} info={Info}></VList>\n\n <GorupContent data={this.state.data}/>\n\n\n <div className=\"group-course\">\n <div className=\"top-title\">\n <span>本周特惠</span>\n <Link to={`/preferential`} className='more'>更多<i className='iconfont iconiconfront-70'></i></Link>\n </div>\n <VList img={this.state.data.image_name} id={this.state.data.course_id} info={Info}></VList>\n </div>\n </div>\n )\n }\n}\n\nfunction GorupContent(props) {\n console.log(props)\n let tip, btn, dec\n if (props.data.my === 0) {\n tip = <p className='tip'>拼团省500元</p>\n btn = <Link to={`/`} className='group-btn'>邀请好友参团 23:23:23 后结束</Link>\n dec = <p className='dec'>分享到3个群后,成团率高达98%</p>\n\n } else {\n tip = <p className='tip'>拼团省500元</p>\n btn = <Link to={`/`} className='group-btn'>一键参团</Link>\n }\n if (props.data.success) {\n tip = <p className='success'>拼团成功</p>\n btn = <Link to={`/play`} className='tostudy'>去学习</Link>\n }\n return (\n <div className='gorup-content'>\n {tip}\n <img className='imgname' src={props.data.image_name} alt=\"\"/>\n <img className='imgname' src={props.data.image_name} alt=\"\"/>\n <img className='imgname' src={props.data.image_name} alt=\"\"/>\n {btn}\n {dec}\n {\n !props.data.success &&\n <div className=\"group-dec\">\n <span>\n <i className='iconfont iconiconfront-1'></i>\n ·好友参团 ·人满成交 ·人不满退款\n </span>\n <span className='allNum'>累计856人成团</span>\n </div>\n }\n </div>\n )\n}\n\nexport default ToGroup\n"],"sourceRoot":""}
\ No newline at end of file
(window.webpackJsonp=window.webpackJsonp||[]).push([[8],{646:function(e,t,a){"use strict";var n=a(0),c=a.n(n);a(647);t.a=function(e){return c.a.createElement("li",{className:"v-list-base-item",onClick:e.handleClick.bind(void 0,e.id)},c.a.createElement("div",{className:"content"},c.a.createElement("div",{className:"cover"},e.status,c.a.createElement("img",{src:e.img,alt:""})),e.info),e.tab)}},647:function(e,t,a){},678:function(e,t,a){},679:function(e,t,a){},680:function(e,t,a){},685:function(e,t,a){},687:function(e,t){},764:function(e,t,a){"use strict";a.r(t);a(27);var n=a(9),c=a.n(n),i=a(3),r=a(4),o=a(6),s=a(5),l=a(7),u=(a(161),a(82)),d=a.n(u),m=a(0),p=a.n(m),v=a(162),h=(a(678),a(13)),f=a(58),y=a(1),E=(a(679),a(646)),g=function(e){var t=e.item;return p.a.createElement("div",{className:"bottom"},p.a.createElement("span",{className:"price"},"\xa5",t.price1),p.a.createElement("span",{className:"stale-price"},"\xa5",t.price0))},b=function(e){function t(){var e,a;Object(i.a)(this,t);for(var n=arguments.length,r=new Array(n),l=0;l<n;l++)r[l]=arguments[l];return(a=Object(o.a)(this,(e=Object(s.a)(t)).call.apply(e,[this].concat(r)))).state={num:10,list:[],courseId:null},a.getRecommendation=function(){y.d.get("".concat(y.a.home,"/m/play/recommend_course/").concat(a.props.vCourseId,"?num=").concat(a.state.num)).then(function(e){var t=e.data;200===t.code?a.setState({list:t.data}):c.a.info(t.msg)})},a.handleClick=function(e){a.props.history.push("/detail?id=".concat(e))},a}return Object(l.a)(t,e),Object(r.a)(t,[{key:"componentDidMount",value:function(){this.getRecommendation()}},{key:"render",value:function(){var e=this;return p.a.createElement("div",{className:"recommendation"},p.a.createElement("div",{className:"title"},"\u76f8\u5173\u63a8\u8350"),p.a.createElement("ul",null,this.state.list.map(function(t){var a=p.a.createElement("div",{className:"info"},p.a.createElement("p",{className:"title"},t.course_title),p.a.createElement("p",{className:"des"},t.simpledescription),p.a.createElement(g,{item:t}));return p.a.createElement(E.a,{key:t.course_id,img:t.image_name,handleClick:e.handleClick,info:a,id:t.course_id})})))}}]),t}(m.PureComponent),_=(a(680),a(16)),C=a.n(_),N=function(e){function t(){var e,a;Object(i.a)(this,t);for(var n=arguments.length,c=new Array(n),r=0;r<n;r++)c[r]=arguments[r];return(a=Object(o.a)(this,(e=Object(s.a)(t)).call.apply(e,[this].concat(c)))).handleClick=function(e){a.props.handleClick(e)},a}return Object(l.a)(t,e),Object(r.a)(t,[{key:"render",value:function(){var e=this;return p.a.createElement("div",{className:"video-catalog"},p.a.createElement("ul",null,this.props.videoCatalog.map(function(t,a){return p.a.createElement("li",{key:t.id,className:C()({active:e.props.activeIndex===a}),onClick:e.handleClick.bind(e,a)},p.a.createElement("span",{className:"title"},t.name),p.a.createElement("span",{className:"duration"},t.duration),p.a.createElement("i",{className:C()("iconfont",[0===t.video_auth?"iconiconfront-74":"iconiconfront-35"])}))})))}}]),t}(m.Component),I=(a(681),a(684)),O=a.n(I),k=(a(685),function(e){function t(){return Object(i.a)(this,t),Object(o.a)(this,Object(s.a)(t).apply(this,arguments))}return Object(l.a)(t,e),Object(r.a)(t,[{key:"render",value:function(){var e=this.props.datum;return p.a.createElement("div",{className:"datum-catalog"},p.a.createElement("p",{className:"prompt"},"\u8bfe\u7a0b\u8d44\u6599\u8bf7\u5230PC\u7aef\u64ad\u653e\u9875\u4e0b\u8f7d"),p.a.createElement(O.a,null,e&&e.length&&e.map(function(e,t){return p.a.createElement(O.a.Panel,{header:e.dir_name,key:t},e.files.map(function(e){return p.a.createElement("div",{key:e.file_id,className:"file-name"},e.file_name)}))})))}}]),t}(m.Component));k.defaultProps={datum:[{dir_name:"",files:[{file_name:"",file_id:0}]}]};var j=k,A=a(759),P=(a(732),d.a.alert),x=function(e){function t(){var e,a;Object(i.a)(this,t);for(var n=arguments.length,r=new Array(n),l=0;l<n;l++)r[l]=arguments[l];return(a=Object(o.a)(this,(e=Object(s.a)(t)).call.apply(e,[this].concat(r)))).state={title:"",courseId:null,video_catalog:[],datum:[],currentVideoSrc:"",activeIndex:0,isAuth:!0,course:null,salePrice:null,vCourseId:null},a.initializePlayer=function(){window.HELP_IMPROVE_VIDEOJS=!1,a.player=Object(A.a)(a.video,{controls:!0,preload:"auto",bigPlayButton:!0,textTrackDisplay:!1,posterImage:!1,errorDisplay:!1}),a.player.enableTouchActivity()},a.handleClick=function(e){a.hasAuth()&&(a.setPlayerSrc(a.state.video_catalog[e].play_url),a.playVideo()),a.setState({activeIndex:e})},a.getVideoCatalog=function(){y.d.get("".concat(y.a.home,"/m/course/play/").concat(a.courseID)).then(function(e){var t=e.data;200===t.code?a.setState(function(e){return{video_catalog:t.data.lessons,currentVideoSrc:t.data.lessons[e.activeIndex].play_url,course:t.data.course,courseId:t.data.course.course_id,vCourseId:t.data.course.v_course_id,title:t.data.course.course_title}},function(){a.lessonAvailable()?a.hasAuth(a.state.activeIndex)?(a.initializePlayer(),a.playWithAuth()):a.getCoursePrice():P("\u6682\u65e0\u89c6\u9891","",[{text:"OK",onPress:function(){a.props.history.push("/")}}])}):c.a.info(t.msg)})},a.setPlayerSrc=function(e){a.player.src({src:e,type:"application/x-mpegURL"})},a.playVideo=function(){a.player.play()},a.lessonAvailable=function(){var e=a.state;return 0!==e.video_catalog[e.activeIndex].video_size},a.getCoursePrice=function(){y.d.get("".concat(y.a.home,"/sys/course/price/").concat(a.state.courseId)).then(function(e){var t=e.data;200===t.code&&a.setState({salePrice:t.data.sale_price})})},a.playWithAuth=function(){var e=a.state,t=e.video_catalog,n=e.activeIndex;a.hasAuth()&&a.setPlayerSrc(t[n].play_url)},a.hasAuth=function(e){var t=a.state,n=t.course,c=t.video_catalog[t.activeIndex];return c.is_free?(a.setState({isAuth:!0}),!0):n.is_audition?(a.setState({isAuth:!0}),!0):c.video_auth?(a.setState({isAuth:!0}),!0):(a.setState({isAuth:!1}),!1)},a}return Object(l.a)(t,e),Object(r.a)(t,[{key:"componentDidMount",value:function(){this.courseID=Object(y.c)("id"),this.setState({courseId:this.courseID}),this.getVideoCatalog(),this.getDatumCatalog()}},{key:"componentWillUnmount",value:function(){this.player&&this.player.dispose()}},{key:"getDatumCatalog",value:function(){var e=this;y.d.get("".concat(y.a.home,"/m/course/data/").concat(this.courseID)).then(function(t){var a=t.data;200===a.code?e.setState({datum:a.data}):c.a.info(a.msg)})}},{key:"render",value:function(){var e=this,t=this.props,a=t.match,n=t.location,c=this.state,i=c.video_catalog,r=c.activeIndex,o=c.isAuth,s=c.salePrice;return p.a.createElement("div",{className:"play"},p.a.createElement(v.a,{title:this.state.title,arrow:!0}),p.a.createElement("div",{className:"video"},p.a.createElement("video",{className:"video-js",ref:function(t){return e.video=t}},p.a.createElement("source",{src:"/",type:"application/x-mpegURL"})),!o&&p.a.createElement("div",{className:"purchase-box"},p.a.createElement("div",{className:"hint"},"\u60a8\u5c1a\u672a\u8d2d\u4e70\u8be5\u8bfe\u65f6\uff0c\u8bf7\u8d2d\u4e70\u540e\u5b66\u4e60\u3002"),p.a.createElement("div",{className:"btns"},p.a.createElement("button",{type:"button",className:"purchase-class"},"\xa5",s," \u8d2d\u4e70\u8bfe\u7a0b"),p.a.createElement("button",{type:"button",className:"purchase-episode"},"\xa5",i.length&&i[r].class_price," \u8d2d\u4e70\u5355\u96c6")))),p.a.createElement("div",{className:"tab"},p.a.createElement("div",null,p.a.createElement(h.c,{to:"".concat(a.url,"/video"),replace:!0,activeClassName:"active"},"\u89c6\u9891")),p.a.createElement("div",null,p.a.createElement(h.c,{to:"".concat(a.url,"/datum"),replace:!0,activeClassName:"active"},"\u8d44\u6599"))),p.a.createElement(f.d,null,p.a.createElement(f.a,{exact:!0,from:"/play",to:{pathname:"/play/video",search:n.search}}),p.a.createElement(f.b,{path:"".concat(a.path,"/video"),render:function(t){return p.a.createElement(N,Object.assign({activeIndex:e.state.activeIndex,handleClick:e.handleClick,videoCatalog:e.state.video_catalog},t))}}),p.a.createElement(f.b,{path:"".concat(a.path,"/datum"),render:function(t){return p.a.createElement(j,Object.assign({},t,{datum:e.state.datum}))}})),p.a.createElement(f.b,{render:function(t){return e.state.vCourseId?p.a.createElement(b,Object.assign({},t,{vCourseId:e.state.vCourseId})):null}}))}}]),t}(m.Component);t.default=x}}]);
//# sourceMappingURL=video.1b371a9a.chunk.js.map
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -86,7 +86,6 @@ function getClientEnvironment(publicUrl) {
return env;
}, {}),
};
return { raw, stringified };
}
......
......@@ -98,6 +98,11 @@ module.exports = function(webpackEnv) {
},
stage: 3,
}),
require('postcss-px-to-viewport')({
viewportWidth: 375,
unitPrecision: 6,
selectorBlackList: ['skip-vw']
})
],
sourceMap: isEnvProduction && shouldUseSourceMap,
},
......
{
"name": "my-julyedu",
"name": "mr-julyedu",
"version": "0.1.0",
"private": true,
"dependencies": {
......@@ -16,6 +16,7 @@
"babel-plugin-named-asset-import": "^0.3.1",
"babel-preset-react-app": "^7.0.2",
"bfj": "6.1.1",
"callapp-lib": "^2.1.7",
"case-sensitive-paths-webpack-plugin": "2.2.0",
"crypto-js": "^3.1.9-1",
"css-loader": "1.0.0",
......@@ -61,6 +62,7 @@
"react-mobile-swiper": "^1.1.4",
"react-redux": "^7.0.2",
"react-router-dom": "^5.0.1",
"react-spinners": "^0.5.4",
"redux": "^4.0.1",
"redux-immutable": "^4.0.0",
"redux-logger": "^3.0.6",
......@@ -80,6 +82,8 @@
"scripts": {
"start": "node scripts/start.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"
},
"eslintConfig": {
......@@ -154,6 +158,7 @@
"babel-plugin-import": "^1.11.0",
"classnames": "^2.2.6",
"mockjs": "^1.0.1-beta3",
"postcss-px-to-viewport": "^1.1.0",
"sass-resources-loader": "^2.0.0"
},
"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 @@
// 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 = 'production'
// Makes the script crash on unhandled rejections instead of silently
// ignoring them. In the future, promise rejections that are not handled will
......
......@@ -3,6 +3,7 @@
// Do this as the first thing so that any code reading it knows the right env.
process.env.BABEL_ENV = 'development';
process.env.NODE_ENV = 'development';
process.env.REACT_APP_BUILD_ENV = 'development';
// Makes the script crash on unhandled rejections instead of silently
// ignoring them. In the future, promise rejections that are not handled will
......
import React, { Component } from 'react'
import Routes from './router'
import cookie from 'js-cookie'
import { http, api } from '@/utils';
import { connect } from 'react-redux';
import { setCurrentUser } from '@/store/userAction';
import { connect } from "react-redux";
import { setCurrentUser, startFetchUser } 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数据
......@@ -24,12 +29,45 @@ class App extends Component {
//平台信息
cookie.set('plat', '5')
this.props.startFetchUser()
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
if (res.data.code === 200) {
const {
......@@ -64,13 +102,41 @@ class App extends Component {
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() {
return <Routes/>
}
}
export default connect(
export default compose(
connect(
null,
{setCurrentUser}
{setCurrentUser, startFetchUser}
),
withRouter
)(App)
\ No newline at end of file
......@@ -3,9 +3,8 @@ import React, { PureComponent } from 'react';
export default function (WrappedComponent) {
return class extends PureComponent {
componentDidMount() {
const height = window.innerHeight
document.body.style.height = `${height}px`
document.getElementById('root').style.height = `${height}px`
document.body.style.height = `100%`
document.getElementById('root').style.height = `100%`
}
componentWillUnmount() {
document.body.style.height = `auto`
......
......@@ -40,6 +40,7 @@ $font_12: 12px;
*/
$bg_active: #09f;
$bg_0078FF: #0078FF;
$bg_0080FF: #0080FF;
$bg_fff: #fff;
$bg_000: #000;
$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) => {
{props.top}
<Link to={`/detail?id=${props.id}`}>
<img src={props.img} alt=""/>
<p className="course-title">{props.title}</p>
<p className={`course-title ${props.className}`}>{props.title}</p>
</Link>
{props.bottom}
</li>
......
import React, { Component } from 'react'
import { ActivityIndicator } from 'antd-mobile'
import React, { Component } from 'react';
import ReactDOM from 'react-dom'
import { HashLoader } from "react-spinners";
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() {
return (
const innerLoading =
<div className="loading">
<ActivityIndicator></ActivityIndicator>
<span>加载中</span>
<div className="loading-wrapper">
<HashLoader
css={{
display: 'block',
marginTop: '-100px'
}}
size={50}
color={'#09f'}
/>
<p>{this.props.text}</p>
</div>
)
</div>
return (
this.state.isLoading ? ReactDOM.createPortal(innerLoading, container) : this.props.children
);
}
}
export default Loading;
\ No newline at end of file
.loading{
.loading {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
.loading-wrapper {
display: flex;
width:100%;
height:44px;
line-height: 44px;
flex-flow: column;
justify-content: center;
align-items: center;
span{
margin-left:5px;
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' // 课程状态(试听 正在
export { default as Tag } from './CategoryTag'
export { default as OrderItem } from './OrderList'
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 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 {
{/* 直播间预约 */}
{
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>
......@@ -258,10 +259,13 @@ function ScrollBox(props) {
<div className="item-content">
<h2 className="item-title">{item.live_title}</h2>
<p className="item-teacher">讲师:{item.live_teacher_name}</p>
{
item.is_prepare &&
<p className="item-time">时间:{item.live_start_time}</p>
}
{
item.live_status === 1 &&
<span>已预约</span>
!item.is_prepare &&
<p className='item-btn'>预约</p>
}
</div>
</div>
......
......@@ -185,10 +185,12 @@
text-align: center;
border-radius: 0 20px 20px 0;
}
.no-start{
.no-start {
background-color: $red;
}
.start{
.start {
background-color: $bg_active;
}
......@@ -205,6 +207,18 @@
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 {
font-size: 16px;
color: $color_333;
......
......@@ -46,10 +46,20 @@
.bargain-area {
width: 355px;
height: 247px;
background: $white;
border-radius: 3px;
margin-bottom: 10px;
padding-bottom: 20px;
.bargain-tip {
width: 100%;
height: 45px;
line-height: 45px;
padding-left: 10px;
border-bottom: 1px solid $sp_e7eaf1;
color: $redprice;
font-size: 14px;
}
.des {
display: flex;
......@@ -58,12 +68,15 @@
}
.v-list-item {
padding-right: 7px;
margin-bottom: 7px;
margin-top: 0;
padding: 15px 7px 10px 10px;
.cover {
margin-right: 10px;
img {
width: 125px;
height: 90px;
}
}
.content {
......@@ -133,7 +146,6 @@
top: 0;
display: inline-block;
height: 100%;
width: 10%;
background: $bg_FADD29;
}
}
......@@ -146,6 +158,7 @@
.button {
display: flex;
justify-content: center;
margin-top: 10px;
}
button {
......@@ -157,11 +170,13 @@
border: none;
color: $bg_ff3131;
-webkit-appearance: none;
font-size: 16px;
}
.invalid-btn{
.invalid-btn {
background: $bg_999;
color: $white;
font-size: 16px;
box-shadow: none;
}
}
......@@ -199,7 +214,7 @@
align-items: center;
}
img {
.avatar {
width: 30px;
height: 30px;
border-radius: 50%;
......@@ -209,6 +224,10 @@
.nickname {
margin-right: 10px;
font-size: $font_14;
max-width: 130px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap
}
.rank-tag {
......@@ -217,6 +236,7 @@
color: $white;
font-size: $font_12;
flex: 0 0 auto;
border-radius: 2px;
}
}
}
......@@ -257,12 +277,11 @@
}
.course-title {
margin-bottom: 20px;
margin-bottom: 10px;
min-height: 38px;
}
.course-price {
display: flex;
justify-content: space-between;
margin-bottom: 10px;
}
......@@ -302,14 +321,219 @@
border-radius: 2px;
border: none;
-webkit-appearance: none;
}
}
}
.more {
.preferential {
display: inline-block;
width: 100%;
height: 46px;
line-height: 46px;
font-size: $font_16;
color: $color_555;
text-align: center;
line-height: 46px;
}
.kanjia-icon {
width: 20px;
height: 20px;
margin-right: 5px;
vertical-align: middle;
}
}
.bargain-public-number, .bargain-first, .bargain-second, .not-bargain {
width: 300px;
padding: 20px 0;
background-color: $bg_fff;
border-radius: 3px;
text-align: center;
margin: 200px auto 20px auto;
position: relative;
.ff4 {
color: $color_FF4000;
}
.status-title {
font-size: 16px;
height: 16px;
line-height: 16px;
}
.status-dec {
font-size: 12px;
color: $color_666;
height: 12px;
line-height: 12px;
}
button {
width: 260px;
height: 30px;
background-color: $bg_FADD29;
color: $color_FF4000;
font-size: 16px;
border: none;
position: absolute;
bottom: 20px;
left: 20px;
}
.top-img {
position: absolute;
width: 135px;
height: 67px;
top: -67px;
margin-left: -67px;
}
}
.bargain-public-number {
height: 185px;
.avait {
position: absolute;
top: -20px;
margin-left: -20px;
width: 40px;
height: 40px;
border-radius: 50%;
}
.status-title {
margin-top: 10px;
}
.status-dec {
margin-top: 10px;
}
.public-number-img {
width: 86px;
height: 86px;
margin-top: 15px;
}
}
.bargain-first {
height: 145px;
.status-dec {
margin-top: 15px;
}
}
.bargain-second {
height: 105px;
}
.not-bargain {
height: 205px;
padding: 15px 20px 20px 20px;
.middle-img {
width: 51px;
height: 51px;
}
.status-title {
height: 37px;
line-height: 20px;
font-size: 15px;
margin-top: 10px;
}
.status-dec {
margin-top: 15px;
}
}
.artifact-box, .use-artifact-box {
padding: 20px 0;
background-color: $bg_fff;
border-radius: 3px;
text-align: center;
margin: 200px auto 20px auto;
position: relative;
.top-img {
position: absolute;
width: 135px;
height: 67px;
top: -67px;
margin-left: -67px;
}
.top-tip {
font-size: 16px;
color: $color_333;
height: 16px;
line-height: 16px;
}
.middle-tip {
font-size: 14px;
color: $color_333;
height: 14px;
line-height: 14px;
margin-top: 15px;
}
.btm-tip {
font-size: 14px;
color: $color_666;
height: 14px;
line-height: 14px;
margin-top: 10px;
}
.use-artifact {
background-color: $bg_fff;
width: 84px;
height: 24px;
font-size: 14px;
border: 1px solid $redprice;
border-radius: 12px;
margin: 20px auto 0 auto;
color: $redprice;
}
.tubuy {
display: inline-block;
margin-top: 17px;
width: 81px;
height: 24px;
background-color: $redprice;
border-radius: 12px;
font-size: 16px;
color: $white;
border: none;
}
.indicator {
color: $color_FE2F2F;
}
}
.artifact-box {
width: 300px;
height: 130px;
}
.use-artifact-box {
width: 300px;
height: 148px;
.middle-tip {
color: $color_666;
}
}
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
......@@ -15,18 +15,17 @@
}
.intro-outer {
width: 100%;
width: 360px;
height: 133px;
border: 5px solid $color_FE2F2F;
display: flex;
justify-content: center;
align-items: center;
padding: 0 5px;
}
.intro-inner {
width: 100%;
height: 114px;
width: 341px;
height: 118px;
padding-top: 15px;
background: $bg_FFF8EB;
border: 1px solid $color_FE2F2F;
......@@ -40,6 +39,24 @@
font-size: $font_14;
}
.intro-outer {
width: 100%;
height: 133px;
border: 5px solid $color_FE2F2F;
display: flex;
justify-content: center;
align-items: center;
padding: 0 5px;
}
.intro-inner {
width: 100%;
height: 114px;
padding-top: 15px;
background: $bg_FFF8EB;
border: 1px solid $color_FE2F2F;
border-radius: 3px;
}
p:nth-child(1) {
margin-bottom: 3px;
}
......@@ -68,26 +85,75 @@
.status-outer {
width: 360px;
height: 134px;
padding: 5px;
background: $bg_FE2F2F;
display: flex;
justify-content: center;
align-items: center;
}
.status-over {
height: 99px !important;
.time-tobuy {
color: $color_FF4000;
font-size: 12px;
text-align: center;
line-height: 48px;
.time {
display: inline-block;
width: 20px;
height: 18px;
background: $bg_666;
border-radius: 2px;
text-align: center;
line-height: 18px;
font-size: $font_12;
color: $white;
}
.hour {
margin-left: 7px;
}
.sec {
margin-right: 5px;
}
}
}
.status-inner {
width: 350px;
height: 124px;
height: 130px;
padding: 0 10px;
background: $white;
border-radius: 3px;
.first-row {
@include row-common;
padding: 10px 0;
padding: 13px 0;
display: flex;
justify-content: space-between;
.bargain-over {
display: inline-block;
margin-left: 10px;
padding: 0 4px;
height: 18px;
line-height: 18px;
background-color: $bg_666;
border-radius: 2px;
font-size: 12px;
color: $white;
}
.over {
color: $color_999;
}
.time {
display: inline-block;
width: 20px;
......@@ -139,6 +205,15 @@
font-size: $font_12;
color: $redprice;
}
.name {
font-size: 14px;
color: $color_333;
max-width: 130px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
}
.third-row {
......@@ -161,19 +236,24 @@
}
}
.bargain-success {
display: flex;
flex-flow: column;
position: absolute;
top: 100px;
.overlay .bargain-close {
color: #fff;
font-size: 22px;
position: relative;
left: 50%;
transform: translateX(-50%);
margin-left: -11px;
}
.bargain-success {
width: 290px;
height: 109px;
padding: 15px 33px;
background: $white;
border-radius: 5px;
text-align: center;
margin: 100px auto 20px auto;
.title {
font-size: $font_16;
......@@ -192,4 +272,182 @@
.indicator {
color: $color_FE2F2F;
}
.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;
}
}
}
.artifact-box, .use-artifact-box {
padding: 20px 0;
background-color: $bg_fff;
border-radius: 3px;
text-align: center;
margin: 200px auto 20px auto;
position: relative;
.top-img {
position: absolute;
width: 135px;
height: 67px;
top: -67px;
margin-left: -67px;
}
.top-tip {
font-size: 16px;
color: $color_333;
height: 16px;
line-height: 16px;
}
.middle-tip {
font-size: 14px;
color: $color_333;
height: 14px;
line-height: 14px;
margin-top: 15px;
}
.btm-tip {
font-size: 14px;
color: $color_666;
height: 14px;
line-height: 14px;
margin-top: 10px;
}
.use-artifact {
background-color: $bg_fff;
width: 84px;
height: 24px;
font-size: 14px;
border: 1px solid $redprice;
border-radius: 12px;
margin: 20px auto 0 auto;
color: $redprice;
}
.tubuy {
display: inline-block;
margin-top: 17px;
width: 81px;
height: 24px;
background-color: $redprice;
border-radius: 12px;
font-size: 16px;
color: $white;
border: none;
}
.indicator {
color: $color_FE2F2F;
}
}
.artifact-box {
width: 300px;
height: 130px;
}
.use-artifact-box {
width: 300px;
height: 148px;
.middle-tip {
color: $color_666;
}
}
.bargain-info {
.bargain-bind-iphone {
position: absolute;
top: 50%;
left: 50%;
......
......@@ -20,4 +20,4 @@ const BargainInfo = () => {
);
};
export default BargainInfo;
\ No newline at end of file
export default BargainInfo
\ No newline at end of file
import React, {Component} from 'react';
import {api, getParam, http} from "@/utils";
import {Toast} from 'antd-mobile';
import React, {Component} from 'react'
import {api, getParam, http} from "@/utils"
import {Toast} from 'antd-mobile'
import {Link} from 'react-router-dom'
import {getCourses} from "@/components/detail/actions";
import {connect} from "react-redux";
import {getCourses} from "@/components/detail/actions"
import {connect} from "react-redux"
import './index.scss'
import Overlay from '../overlay'
class BtnStatus extends Component {
......@@ -26,41 +25,88 @@ class BtnStatus extends Component {
});
}
// 加入购物车
toCart = () => {
// 加入购物车 type:1 加入购物车,2加入购物车并跳转到购物车页面去支付
toCart = (type) => {
console.log(type)
let data = {
course_id: getParam('id')
};
http.post(`${api.home}/m/cart/add`, data).then((res) => {
if (res.data.code === 200) {
Toast.info('已加入购物车', 2);
this.props.getCourses();
if (type === 1) {
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 {
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 = {
course_id: getParam('id')
};
http.post(`${api.home}/m/cart/add`, data).then((res) => {
if(res.data.code !== 200) {
Toast.info(res.data.msg, 2);
return;
courseId: getParam('id')
}
http.post(`${api.home}/m/bargain/cancel`, data).then((res) => {
if (res.data.code === 200) {
this.setState({
isShowOverlay: false,
bargainStatus: '',
})
document.location.reload()
} else {
Toast.info(res.data.msg, 2)
}
})
}
close = () => {
this.setState({
isShowOverlay: false,
bargainStatus: '',
})
}
// 砍价接口
toKanjia = () => {
let data = {
course_id: getParam('id'),
type: 1, // 1 用户自己砍价 2 使用砍价神器 3 好友助力砍价 4 好友第二次助力
parent_uid: 0 // 被助力人id 【自己本人操作传0】
}
http.post(`${api.home}/m/to_bargain`, data).then((res) => {
if (res.data.code === 200) {
// this.props.getBargainInfo()
document.location.reload()
} else {
Toast.info(res.data.msg, 2)
}
this.props.history.replace('/shopcart');
})
}
render() {
let info = ''
if (this.props.data && this.props.data.course_info) {
info = this.props.data.course_info
}
let barInfo = this.props.barInfo && this.props.barInfo
return (
......@@ -79,7 +125,7 @@ class BtnStatus extends Component {
}
{
!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>
......@@ -134,27 +180,27 @@ class BtnStatus extends Component {
{/*砍价*/}
{
this.props.status === 3 &&
this.props.data && this.props.data.is_bargain &&
<div className='btns-box'>
<a className='consult consult-s' href="https://q.url.cn/AB8aue?_type=wpa&qidian=true">
<i className='iconfont iconerji'></i>
<span>课程咨询</span>
</a>
<button className='btn btn-s bg-F4AAA7' onClick={this.toCart}>
<span>{${info.price}`}</span>
<span>直接购买</span>
<button className='btn btn-s bg-F4AAA7'>
<span>¥{info.price1}</span>
<span onClick={this.tobuy}>直接购买</span>
</button>
{
this.state.isbuy === 0 &&
<button className='btn btn-s bg-E02E24'>
barInfo.bargain_status === 2 &&
<button className='btn btn-s bg-E02E24' onClick={this.toKanjia}>
我要砍价
</button>
}
{
this.state.isbuy === 1 &&
(barInfo.bargain_status === 0 || barInfo.bargain_status === 1) &&
<button className='btn btn-s bg-E02E24'>
<span>{${info.price}`}</span>
<span>去支付</span>
<span onClick={e => this.toCart(2)}>去支付</span>
</button>
}
</div>
......@@ -170,12 +216,41 @@ class BtnStatus extends Component {
</a>
</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>
)
}
}
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(
null,
{getCourses}
)(BtnStatus);
\ No newline at end of file
)(BtnStatus)
......@@ -115,3 +115,61 @@
}
}
.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'
import Bargain from './bargain'
import Group from './group'
import OutLine from './outline'
import {HeaderBar, ToApp} from '../../common'
import {HeaderBar, CallApp} from '../../common'
import ShareRank from "./shareRank"
import Audition from "./audition"
import Single from "./single"
......@@ -27,20 +27,19 @@ class Detail extends Component {
shareRank: false,
singMess: '',
share: false,
barInfo: '',
}
}
componentDidMount() {
this.props.fetchCoursesListIfNeeded()
this.getBargainInfo()
}
componentDidUpdate() {
}
toApp = () => {
alert('toApp')
}
// 点击子组件试听按钮
toAudition = () => {
this.setState(status => ({
......@@ -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 = (val) => {
......@@ -131,7 +146,7 @@ class Detail extends Component {
const { share } = this.state;
return (
<div className='detail-box'>
<ToApp className='toapp' toApp={this.toApp}></ToApp>
<CallApp className='toapp'></CallApp>
<HeaderBar title='课程详情' arrow={true} cart={true}></HeaderBar>
{/*弹幕*/}
<Carouselw></Carouselw>
......@@ -208,14 +223,15 @@ 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}/>
{/*课程按钮*/}
<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 ? (
......
......@@ -294,4 +294,4 @@ class Single extends Component {
}
export default Single;
export default Single
......@@ -6,6 +6,7 @@ import { compose } from 'redux';
import { accountLogin } from '@/store/userAction';
import { connect } from "react-redux";
import { isEmpty } from 'lodash'
import { HeaderBar } from "@/common";
import Header from "../common/Header";
......@@ -16,11 +17,6 @@ import { Toast } from "antd-mobile";
class AccountLogin extends PureComponent {
componentDidMount() {
console.log(this.props.values);
}
render() {
const {
errors,
......@@ -28,6 +24,7 @@ class AccountLogin extends PureComponent {
} = this.props
return (
<div className={'account-login'}>
<HeaderBar arrow={true} title={'登录'}/>
<Header/>
<Form className="login-info">
<FastField
......@@ -75,10 +72,9 @@ const formikConfig = {
props.accountLogin({
username, password
}).then(res => {
console.log(res);
if (!res.hasError) {
let {from} = props.location.state || {from: {pathname: '/'}}
history.push(from.pathname)
history.replace(from.pathname)
} else {
Toast.info(res.msg, 2, null, false)
}
......
......@@ -11,13 +11,6 @@
margin-bottom: 21px;
}
.place {
width: 100%;
height: 39px;
margin-bottom: 33px;
background: #56abff;
}
.verification {
margin-bottom: 21px;
}
......
import React, { Component } from 'react';
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 Button from '../common/Button'
import VeriCodeInput from '../common/veriCodeInput'
import { Toast } from "antd-mobile";
import { isEmpty } from "lodash";
class BindingTel extends Component {
constructor(props) {
super(props);
this.state = {
veriCode: ''
};
state = {
validate: null,
captchaInstance: null
}
handleChange = (val) => {
this.setState({veriCode: val});
getCaptchaInstance = instance => {
this.setState({
captchaInstance: instance
})
}
onVerify = (err, data) => {
if (err) {
console.log(err)
} else {
this.setState({
validate: data.validate
})
}
}
render() {
const {
values,
errors
} = this.props
return (
<div className={'binding-tel'}>
<p className={'title'}>为提高您的账号安全,请绑定手机号</p>
<Form>
<Field
name='tel'
render={({field, form}) => {
return (
<ClearableInput
type={'number'}
{...field}
setFieldValue={form.setFieldValue}
placeholder={'请输入需要绑定的手机号'}
wrapperClass={'tel'}
icon={<i className={'iconfont iconshouji'}
style={{fontSize: '22px', left: '11px'}}
/>}
/>
)
}}
/>
<Field
name='veriCode'
render={({field}) => {
return (
<VeriCodeInput
type={'number'}
{...field}
className={'verification'}
onChange={this.handleChange}
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'}
/>
<div className="place"/>
<Button className={'complete-btn'}>完成</Button>
)
}}
/>
<Captcha onVerify={this.onVerify} getInstance={this.getCaptchaInstance}/>
<Button className={'complete-btn'} active={values.tel && values.veriCode && isEmpty(errors)}>完成</Button>
</Form>
</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 { browser } from "@/utils";
import './loginWays.scss'
class LoginWays extends PureComponent {
handleClick = (index) => {
this.props.onClick(index)
state = {
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() {
......@@ -14,9 +28,9 @@ class LoginWays extends PureComponent {
<div className="bottom-title">其他登录方式</div>
<ul className='login-ways-container'>
{
this.props.loginWays.map((item, index) => {
this.state.ways.map((item, index) => {
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=""/>
<p>{item.text}</p>
</li>
......
......@@ -36,6 +36,10 @@
li {
text-align: center;
a{
display: block;
}
img {
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