48.89ff204d.chunk.js.map 91.5 KB
Newer Older
zhanghaozhe committed
1
{"version":3,"sources":["components/ai-test/scores/rank-1.png","components/ai-test/scores/rank-2.png","components/ai-test/scores/rank-3.png","assets/image/score_icon-l.png","assets/image/score_icon-r.png","assets/image/scoreReport_bg.png","components/ai-test/scores/index.js","components/ai-test/common/question/index.js","components/ai-test/common/navigation/index.js","components/ai-test/exam/index.js","components/ai-test/submit-answer/index.js","components/ai-test/common/recommends/index.js","components/ai-test/analysis/index.js","components/ai-test/assist/index.js","components/ai-test/share/index.js","components/ai-test/report/index.js","components/ai-test/index.js"],"names":["module","exports","Scores","store","storage","namespace","state","selfTabs","title","rankList","rankListTabs","isExpandRankList","icons","require","isShowRule","isNeverShow","_this","get","pageState","availableTestNum","userScore","userAddress","name","phone","address","isShowUserAddress","entryButtonInRule","handleChange","e","isNeverSHow","target","checked","setState","set","startTest","props","history","push","getInitialData","http","concat","API","home","then","res","_res$data","data","code","msg","toast_default","a","fail","getRankList","tab","type","_res$data2","getUserScores","_res$data3","getUserAddress","_res$data4","inputText","key","value","Object","objectSpread","defineProperty","submitForm","preventDefault","values","every","item","post","_res$data5","success","info","this","user","hasError","prevProps","prevState","_this2","_this$state","_this$props","_rankList","Array","isArray","slice","react_default","createElement","className","src","h5_banner","alt","join_num","href","onClick","tabs_default","tabs","tabBarUnderlineStyle","display","onChange","i","map","index","score","react_router_dom","to","r_id","cost_time","rank","length","avatar","user_name","prize_url","prize","compareDesc","Date","stop_time","daily_test_num","Rule","rule","neverShow","close","action","onSubmit","placeholder","Component","_ref","dangerouslySetInnerHTML","html","Fragment","id","htmlFor","connect","_ref2","Question","handleSelect","option","selectAnswer","question","selectedId","answer","activeIndex","category","undefined","__html","ques","options","classnames","active","error","user_select","is_ans","correct","bind","String","fromCharCode","des","Navigation","questions","handleClick","isAnalysis","userSelectIndex","findIndex","rightAnswerIndex","unselect","Exam","timer","unlisten","activeQuestion","time","d","h","m","s","elapsed","recordId","setCounter","setInterval","fms","Math","floor","goBack","location","browser","isWeixin","getParam","window","go","records","from","pathname","replace","search","origin","getQuestions","session","isEmpty","forEach","record_id","getStartTime","create_time","now","createTimeStamp","current","createTime","differenceInDays","differenceInHours","differenceInMinutes","differenceInSeconds","differenceInMilliseconds","optionId","setTimeout","storeData","_this$state2","clearInterval","setAll","clearAll","listen","matchPath","path","isExact","document","addEventListener","visibilityState","_this3","_this$state3","toString","padStart","filter","ai_test_common_question","common_navigation","SubmitAnswer","analysis","results","submit","JSON","stringify","getAnalysis","remove","common","arrow","wrong","keys","Recommends","recommends","course_id","image_name","Analysis","userSelect","rightAnswer","userUnselect","match","params","getAnswerInfo","userAnswerIndex","style","height","backgroundColor","commend_course","ai_test_common_recommends","Assist","result","userAnswer","getData","encodeURIComponent","assistCode","question_id","answer_id","correct_answer","setAnswer","rightAnswerId","end","status","desc","aiTestHelp","classCallCheck","possibleConstructorReturn","getPrototypeOf","call","share","wxShare","dec","link","imgUrl","isshowYindao","copyToSuccess","handleFetchInfo","total_num","getAssist","lib","text","onCopy","scoreReport","myRankList","avatar_file","getBase64","getCanvas","getBase64Image","img","canvas","width","getContext","drawImage","ext","substring","lastIndexOf","toLowerCase","toDataURL","base64","image","Image","timeStamp","setAttribute","onload","onerror","console","log","change","cutIndex","codeSrc","onbeforeunload","documentElement","scrollTop","body","getCodeWe","canvas2","_canvas","getElementsByClassName","w","parseInt","getComputedStyle","scale","devicePixelRatio","html2canvas","qrCodeLink","Promise","resolve","QRCode","err","url","backgroundImage","scoreReportBg","scoreIconL","scoreIconR","border","cellSpacing","cellPadding","AiTest","react_router","render","ai_test_exam","ai_test_submit_answer","components_ai_test_analysis","ai_test_assist","ai_test_share","ai_test_report","ai_test_scores"],"mappings":"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","file":"mrstatic/js/48.89ff204d.chunk.js","sourcesContent":["module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAlCAMAAABmpnnDAAACT1BMVEUAAAA2qvr///82q/n+40L+40H+4T7/4Dv/4Dn+4T7/4DgyqvkaoPg8r/r+4j/+4jksqvk4qvn/4jv/3zn/4zH/3TY8m/v/5SL/5i/+40D2+//r9v695P254f3+40P+40P+4T/+4ELe1V3+5TolpvjZ1WASof/93j4xs/j/4DsTov8npfsxsfkysfv/3jz/3DUkyPz/4jEezfz/5Bf/3jo5ofY6ov/+3jr///8zq/n+vAD+5ET+40D+4T/+3Tj+5kX+4D7+3zz+4Tb+3Cc4rPn+3Db+1iz/1CTr+P9AsPo0rPolpPn/8c7+vwX+sQD1+////f7+5kf/2Eb+2zP+0yj+ugH+tgC54v4opvn+50j+40P+0CL+yRm95P0boPgaoPj+41n+4EP+2TD+2yP+2Rv/3xj+wg/+wgv+uAD//Po2qPn+3TL+2C3/7x/+zh7+zBv+xQ/+swApqf8mp/8Vov8Pof//9dz+523+5V/+40v+6Er+3zP+0iX/zB7+1hb+xxT+uwcCmf8Vn/06ovk5pvgppvhHruL/+uH/8a7l4oj/5XnW2GP+5Fb+5FL04T7/6i7/7in95Sf/1yf+2iH+3yD+0iD/8Rn/5Bf/3Bb+xBX+tQD0//+z5f+u4/8ep/+95P44rfkvqPn//PA7rOs/rOr/8dP/89Dr8M/19Mj/78b/9L7/5rL/7pr+64aqzIK0z3j/73H/7Gu/z2vBz2r+5WT+4F//3Erj3Er+4Unr3kj/1kXq4ET/1D785TT/zjL+3Cv+0iH+0Bf+1Ar+zQL+1AFVsjxgAAAAN3RSTlMAkvKg5+DVwkzGLPLy59uxqqGFeEY7OTEZ+/Ly8vLx8M/NuriyqqCZlpSRg4J2a2VcWExCHxsWf0bMXAAAAqJJREFUOMuFzmVzGkEYwPFNmkA8abzu7rrH+QWOpLRcIUiLVKBogsbd3d3q7u6uH6zHBdqkYab/2Rf7zG/nmQWhcjNSV8XGxq5OSU5OWcNfVqZuzgXhDrZ3yooQBDlzViI5d4q/nDx2vH3/vB3tkJxegoqOIwLuKYmCkpLdAm6PjhkCxiiioWL5YrzaVlbWFkHJssV4qbW8vPXyEuxUFCHdPb0v+vtf9vZ0IxcXoqziyt1nBRP2afvMtH2i4Pm9skpZBK9VlD8ZtU8GUB3KH8ekffTp9QpZGCtvvZ0aa9E7fXKr1eNz6FsKpz52Vc7/dufNIW8j52ApCicIHKPYWc7s/dy1VcBd772znFyNQwjJr1IIcYM86PAOxQi4ZcTMaQwMlNqabJYBhoRQzQabRzaGLG9YzmkNELK1fY8e3Kgaq+cXqD2cdvgQj2IjGuBtfAAJdftbAeSra3YRIgAOYw16EofQVo2oqtzIiUIBCcZlwpJAFuZ0UvxYOtj3pVgVQagOKLEskM6gJoyf6NKmH4PIH8S0KLkJrLeiVlyYmQvn/yKhQeVpIE6OaggotBBpEtXGhZCNjg1xQORBrVGQYFFtPEiHaAO2FI38QjHINCoDajL0W9svGkHu/5yR0jyqm5WWTJCE+VwMv7fUUl3zGEGqXlfX1PNPCZ0fywFARLvMBhLaXiHh7jRB0uDXM/EAgIRaE6ehyPEalUrldrtVqoffGYwM+qkDgE9c65xjMJZ+86FY6JOGwl1KagMIlY9bWvRkHZSGq6+Deh1uyQdCOUbcwTUSaiNB07SRwk1BJ/EuAYTLXoH59DqznGUY1mPWzTViOG+RksQU9Ct1qFKJokozSSXmgYXtE1G4RmsyaTU4lbYX/Fv2jsT4dWvjE7cJG//fbwenBIedeff8AAAAAElFTkSuQmCC\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAlCAMAAABmpnnDAAABxVBMVEUAAAA2qvo2q/n////o6Ono6Ojp6enm5ua74/0yqvkaoPjo6eno6Ono6Onl5ubn6Ojo6urm5ufl5eXn5+csqvnk5eXp6eng4ODi4uLq6ur2+//r9v7p6ero6epAsPo5rfnl5ebm5ubK2+glpvjE2egWn/0xs/gZoPvo6Ogppfkxsfnl5eUysfvl5eXm5uYkyPzl5eUezfzo6Oj/7Nw+mPs6n/r/69vj4+Pm5uY5ofY6ov/k5OT////j4uLl5eY0rPng4N/p6erm5+fe3t3n6OjIxb84rPnn6Onh4eHa2djq6+wopvokpfoyqvnr7O3c29nV1NH2/P/s+P/Dv7i54/78/PxBsPnk4+LZ2NXT0s7Oy8bHxL7Gw7295P0aoPjq6+v/9ejm5eTFwbrAvLW/u7MboPjo5+bc3dvX1tPPzcnLycTKx8EVof0qqfv5+fk2qPnz8/Lf3t3R0MwWn/pAr/g5pfj19PTv7/Ds7e+u1Ozo6eny6+f7+/sEmfr39/bX5u/68uz+8en/+Ojk5ebt5uL/693NysWz4v87oPnn8vjy9vfw7+/v7ezG3ezG3Oyk0Ozs6+rp6eji5efd5Ofa4uf15dr15dlgWgQ3AAAAO3RSTlMAkqDy4MNKG/Ly8ujl29XUzse8saqXeEs7L/Ly8fDo5uHBurKqoJaRiIOCgnZrZVxYTEJCPjUyLSgbFkA3SKwAAAKPSURBVDjLjdJnU9swGMBxUTYte3fvvXcryZE84gEkBpOSVTKbnZCEvTfde3zeyo7hOKB3/Z9fyPd7Hr3wGZg96Tp3qrq6uqGpsbGpgR1Onr30GNg9mB5wjiCEXr8ZGhofZYfhV4Pv7lXs5bTjMDqmX1h4e+IonLhp4dWjscvCKsdR6Dh2AMfz+cl/4ejywMDy28PoGEFLM6vzXz7Pr84soeGpfeicHHy/JnJb27//bG9timsf8pPOXXTmBr8uJlS/FJDY41cji/P5nNPGnPPXRilgZFICIUJqxwi6N35M5Sp4zZkI++J+RaMyz4s0hNPxcnhx6oqFN36G/XG3S4YQsyAUXclYJsxXWXg5XI4TF4SEYI7DhLGGY+nwRdOerifZHlsTiwXkKcyyZawJcXX9EcMLcjA9B6HCoUorCoTQVY6KrQDUU9XAMrt0ARUj+JsHoQRTnot66TPQI/v9GpvFNKKrgjqL0Pckx1bTGbkHdELJS6GZwOZJiG26GVI1oHSAtlKgJFrIcWygiJBA2IFXpGQzOOGWFJ6RxYRH6KPOm0csqcdttA16UEEn3B62ChIRbcMe5Emp7M261l0DOtkItZBwzLzeyqTsDpBacItm0pq1xyE049MhwezaMa2cFa+DfpqKcrz59RBCETIbCi1gNioGddoHQAsX9ZmfvYDsigKHXbqxeR4A0Ct7Y0oIk5Vd/OSOUBjT6X3AqpX9Bk9xYgyPmeGSEpKjGdoGzOoXeMnAc1iww3MwGqS4Hlj1yfJOTBddlOc4nrpoKpbl+Tpg91DUdCPoS5p/guALGjoVe8Fezzu0iC8bkLJZKSj5sNbeD/Z3t0WTFbfXqxJRa74DDlbXXVtz5nRNe3cd+K/+AthJ8toP0APiAAAAAElFTkSuQmCC\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB8AAAAWAQMAAAACb9WyAAAABlBMVEUAAAD/ISHbCYifAAAAAXRSTlMAQObYZgAAAB1JREFUCNdjYKj//w9CEAv+/wcqBhNEA0agYhABAMyqEOu7SXuEAAAAAElFTkSuQmCC\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB8AAAAWAQMAAAACb9WyAAAABlBMVEUAAAD/ISHbCYifAAAAAXRSTlMAQObYZgAAABpJREFUCNdj+P//DwOYIBKAFP//ByZI0AElAEKDEefBnVvLAAAAAElFTkSuQmCC\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAr4AAANkCAMAAABmi9m6AAAAnFBMVEX/////ISH//Pz/9vb/y8v/Li7/+vr/Jib/7u7/Wlr/8vL/bm7/hIT/ODj/dnb//v7/xMT/r6//l5f/iYn/UlL/Kir/5+f/vr7/jo7/X1//z8//Z2f/rKz/nJz/e3v/amr/QkL/x8f/qKj/Ojr/NDT/MTH/ubn/srL/k5P/4OD/2dn/09P/o6P/cXH/Skr/8PD/29v/TU3/gID/rq6vT+taAAAOAklEQVR42uzcW0/iQBiH8fdfeqCcPKACuh5QBEFddf3+321bNAYQMbXT7k7y/K6acMHN08lk3kkNAAAAAAAAAAAAAAAAAAAAgJ/29+1bWuKZ558+x1/XV0rw+3dggAv11/dL+mWAA/XX17iRbhoGlFd/fYfKHBpQWv31NSNloqYB5dRfXyNsa6kdsn/Aj9VfX3P/sH2lFVftw30WYfxI7fV1tEXH1sQC3ClQ33f2evqkt2drmgLcaXxXXwHBmTZcBrbuRIA7J9/UV0icak0a24ZQgDunu+srqHGkFUeNbSMRnRlQXr7aznbWV1gr0oeoZZ/0JfUNKC9vabirvuKCRB+SwD4ZifsQcONA0mhXfcWdrO+rN8XHkp4NKG8uKQp21FdcqBXh1p8newY40M0b21FfcQfKHR8rd7B1u3JpgAuPkjo76ivuTtLtsNkc3kq6sw3BjaSZAS5MJU2Cr+srrqfuecsyrfOuerZhkL8b3OSBG3EkafB1fcVdXMf2Lr6+2Hbu0DbAjQtJ6df1OXb6NicB3FgoE1pN0nwWYoAro+XyW4+pMgMDXAmVmVodnrosvnDsTFL3yWpwKSlh5wuXnpOaJgnXynQMcGmozINVbZy/Jlec+cKt+EVSMrZqLaL8X+4NcGuel3W7sCrd3ypzbYBrA2Um91adcaTMHwPcO1cmGltVHhJlHrkoiUr0lUkerBJPbeV6fDMV1djrK3fZMvdmE+U6rL2ozLly3Zk5FqZ6X9mB6gwi5dLQ3ImnqZauGLahWvMXLaWDwE27405Xby5aBlQruEu0dNMJSxXcODmd9UfHepcyrEAdnkd6F42Gs9P5U2w/oVVH3JBEXcap1pTMN2mHBtRn0Ysc5Ttpv7LnRd0a08du6Xw7BwvGFPhH5q/9s1L5GuBK2QpFvvBM4XxFvvhvkC88Rr7w2GqF5AvPkC88Rr7wGOe+8Bj5wmPkC48xdYPHyBceI194jKkbPEa+8Bj5wmNM3eAx8oXHyBceY+oGj5EvPEa+8BhTN3iMfOEx8oXHmLrBY+QLj5Ev/rJnxzQAAAAAgvq3NocbZPBzzHVjTL6MyZcx140x+TImX8ZcN8bky5h8GXPdGJMvY/JlzHVjTL6MyZcx140x+TImX8ZcN8bky5h8GXPdGJMvY/JlzHVjTL6MyZcx140x+TImX8ZcN8bky5h8GXPdGJMvY/JlzHVjTL6MyZcx140x+TImX8ZcN8bky5h8GXPdGJMvY/JlzHVjTL6MyZcx140x+TImX8ZcN8bky5h8GXPdGJMvY/JlzHVjTL6MyZcx140x+TImX8ZcN8bky5h8GXPdGJMvY/JlzHVjTL6MyZcx140x+TImX8ZcN8bky5h8GXPdGJMvY/JlzHVjTL6MyZfYs2MaAAAAAEH9W5vDDTL4Oea6MSZfxuTLmOvGmHwZky9jrhtj8mVMvoy5bozJlzH5Mua6MSZfxuTLmOvGmHwZky9jrhtj8mVMvoy5bozJlzH5Mua6MSZfxuTLmOvGmHwZky9jrhtj8mVMvoy5bozJlzH5Mua6MSZfxuTLmOvGmHwZky9jrhtj8mVMvoy5bozJlzH5Mua6MSZfxuTLmOvGmHwZky9jrhtj8mVMvoy5bozJlzH5Mua6MSZfxuTLmOvGmHwZky9jrhtj8mVMvoy5bozJlzH5Mua6MSZfxuTLmOvGmHwZky9jrhtj8mVMvoy5bozJlzH5Mua6MSZfxuRL7NkxDQAAAICg/q3N4QYZ/Bxz3RiTL2PyZcx1Y0y+jMmXMdeNMfkyJl/GXDfG5MuYfBlz3RiTL2PyZcx1Y0y+jMmXMdeNMfkyJl/GXDfG5MuYfBlz3RiTL2PyZcx1Y0y+jMmXMdeNMfkyJl/GXDfG5MuYfBlz3RiTL2PyZcx1Y0y+jMmXMdeNMfkyJl/GXDfG5MuYfBlz3RiTL2PyZcx1Y0y+jMmXMdeNMfkyJl/GXDfG5MuYfBlz3RiTL2PyZcx1Y0y+jMmXMdeNMfkyJl/GXDfG5MuYfBlz3RiTL2PyZcx1Y0y+jMmXMdeNMfkyJl/GXDfG5MuYfBlz3RiTL2PyJfbsmAYAAABAUP/W5nCDDH6OuW6MyZcx+TLmujEmX8bky5jrxph8GZMvY64bY/JlTL6MuW6MyZcx+TLmujEmX8bky5jrxph8GZMvY64bY/JlTL6MuW6MyZcx+TLmujEmX8bky5jrxph8GZMvY64bY/JlTL6MuW6MyZcx+TLmujEmX8bky5jrxph8GZMvY64bY/JlTL6MuW6MyZcx+TLmujEmX8bky5jrxph8GZMvY64bY/JlTL6MuW6MyZcx+TLmujEmX8bky5jrxph8GZMvY64bY/JlTL6MuW6MyZcx+TLmujEmX8bky5jrxph8GZMvY64bY/JlTL6MuW6MyZcx+RJ7dkwDAAAAIKh/a3O4QQY/x1w3xuTLmHwZc90Yky9j8mXMdWNMvozJlzHXjTH5MiZfxlw3xuTLmHwZc90Yky9j8mXMdWNMvozJlzHXjTH5MiZfxlw3xuTLmHwZc90Yky9j8mXMdWNMvozJlzHXjTH5MiZfxlw3xuTLmHwZc90Yky9j8mXMdWNMvozJlzHXjTH5MiZfxlw3xuTLmHwZc90Yky9j8mXMdWNMvozJlzHXjTH5MiZfxlw3xuTLmHwZc90Yky9j8mXMdWNMvozJlzHXjTH5MiZfxlw3xuTLmHwZc90Yky9j8mXMdWNMvozJlzHXjTH5MiZfxlw3xuTLmHyJPTumAQAAABDUv7U53CCDn2OuG2PyZUy+jLlujMmXMfky5roxJl/G5MuY68aYfBmTL2OuG2PyZUy+jLlujMmXMfky5roxJl/G5MuY68aYfBmTL2OuG2PyZUy+jLlujMmXMfky5roxJl/G5MuY68aYfBmTL2OuG2PyZUy+jLlujMmXMfky5roxJl/G5MuY68aYfBmTL2OuG2PyZUy+jLlujMmXMfky5roxJl/G5MuY68aYfBmTL2OuG2PyZUy+jLlujMmXMfky5roxJl/G5MuY68aYfBmTL2OuG2PyZUy+jLlujMmXMfky5roxJl/G5MuY68aYfBmTL2OuG2PyZUy+xJ4d0wAAAAAI6t/aHG6Qwc8x140x+TImX8ZcN8bky5h8GXPdGJMvY/JlzHVjTL6MyZcx140x+TImX8ZcN8bky5h8GXPdGJMvY/JlzHVjTL6MyZcx140x+TImX8ZcN8bky5h8GXPdGJMvY/JlzHVjTL6MyZcx140x+TImX8ZcN8bky5h8GXPdGJMvY/JlzHVjTL6MyZcx140x+TImX8ZcN8bky5h8GXPdGJMvY/JlzHVjTL6MyZcx140x+TImX8ZcN8bky5h8GXPdGJMvY/JlzHVjTL6MyZcx140x+TImX8ZcN8bky5h8GXPdGJMvY/JlzHVjTL6MyZcx140x+TImX2LPjmkAAAAABPVvbQ43yODnmOvGmHwZky9jrhtj8mVMvoy5bozJlzH5Mua6MSZfxuTLmOvGmHwZky9jrhtj8mVMvoy5bozJlzH5Mua6MSZfxuTLmOvGmHwZky9jrhtj8mVMvoy5bozJlzH5Mua6MSZfxuTLmOvGmHwZky9jrhtj8mVMvoy5bozJlzH5Mua6MSZfxuTLmOvGmHwZky9jrhtj8mVMvoy5bozJlzH5Mua6MSZfxuTLmOvGmHwZky9jrhtj8mVMvoy5bozJlzH5Mua6MSZfxuTLmOvGmHwZky9jrhtj8mVMvoy5bozJlzH5Mua6MSZfxuTLmOvGmHwZky+1d287bQNRGIX371POJ5KQhBRCIJxJoX3/h6snrSg1kVXLY6qp1nfli1yujLa8R3LA2LohYOSLgJEvAsbWDQEjXwSMfBEwtm4IGPkiYOSLgLF1Q8DIFwEjXwSMrRsCRr4IGPkiYGzdEDDyRcDIFwFj64aAkS8CRr4IGFs3BIx8ETDyRcDYuiFg5IuAkS8CVmvr1p88Rgb8C6PXyXRdJ19nt590Dfhc2e1+J6devk5rnxjweR4vUjk+8nVmCwM+R7KSUy/f7kMyma7mbwGfGdC817V+SVfLu7PT2GrItv2BfvoeG9Cs6L6lg0E/iTxN0R0dXHIAo1kP33TQWUTmz3Ymp/VsQHMWqZxOYp7d7eT0RwY05FzOYGL+vfTkDFljoBmjqZxN1xrx3FJuz/mLRkwbnk+3qXLfDfDvXLn52JrzdKPclQG+LZTbPZk/47EVPKbufH8ywK8HV1b6VKivjujr18gKtm7+vWR/Ab+yb+5c3Bbrq+OL9MWKnpXrG+DTUrnnD/XVEF9L17EVbRgf4NtrS9KmpL7qTpQ7saKXgaSOAf6sJQ1eSuqrrJ0ql7at6FY57k/Cn0S525L6qoqTng56SWwFHUkzA3xZSeqU1FdFe3zSu9Q7l72Tcdt+O1OOy2fw5VG5pLS+v9fXEf3in6VngB8X7vAtr+/vjYb6YDgqLkjmvPuFH1kqaVFeXwXRWgWb6M8fXEu6M8CHW0m7qLS+SrKO/tDJjswXGwN82LvxoLS+iuKZ3pnFx1507Lg4CS8GkpKy+irrpnqTdq0om0t6NaC+B9dYVFJfdVFLb1rR8Rd1XwyobyJpVVZfdad65/T4xfipAfW5lpZl9VWX6J3k6GU0rQ3wc9/hrqy+6iZy5nM5k2N5A/6cldVX3b2km2W7vbyRdH9suAD8OS2rr7qhBuddy3XPBxraB7EAf+Ky+qq7uMrsl+zqwj4S4E9pfQAAAAAAAAA+nQ545rnaM99sBQAAAAAAAAAAAAAAAAAAAP5vPwBmLG3CNCdCeQAAAABJRU5ErkJggg==\"","import React, { Component } from 'react';\nimport './index.scss'\nimport { Tabs, Toast } from \"antd-mobile\";\nimport { http } from \"@/utils\"\nimport storage from 'store2'\nimport { html } from '@/utils'\nimport { compareDesc } from \"date-fns\";\nimport { Link } from \"react-router-dom\";\nimport { connect } from \"react-redux\";\n\n\nclass Scores extends Component {\n\n  store = storage.namespace('aiTestEntry')\n\n\n  state = {\n    selfTabs: [\n      {title: '当前成绩'},\n      {title: '今日最佳'},\n      {title: '本月最佳'},\n    ],\n    rankList: [],\n    rankListTabs: [\n      {title: '日榜'},\n      {title: '总榜'},\n    ],\n/*\n    rankListTabs: [\n      {title: '日榜'},\n      {title: '周榜'},\n      {title: '总榜'},\n    ],\n*/\n    isExpandRankList: false,\n    icons: [\n      require('./rank-1.png'),\n      require('./rank-2.png'),\n      require('./rank-3.png'),\n    ],\n    isShowRule: false,\n    isNeverShow: this.store.get('isNeverShow'),\n    pageState: {},\n    availableTestNum: 0,\n    userScore: {},\n    userAddress: {\n      name: '',\n      phone: '',\n      address: '',\n    },\n    isShowUserAddress: false,\n    entryButtonInRule: false,\n  }\n\n  componentDidMount() {\n    this.getInitialData()\n    this.getRankList(null, 0)\n    if (!this.props.user.hasError) {\n      this.getUserScores(0)\n      this.getUserAddress()\n    }\n  }\n\n  componentDidUpdate(prevProps, prevState) {\n    if (this.props.user.hasError !== prevProps.user.hasError) {\n      this.getUserScores(0)\n      this.getUserAddress()\n    }\n  }\n\n\n  handleChange = (e) => {\n    const isNeverSHow = e.target.checked\n    this.setState({\n      isNeverSHow,\n    })\n    this.store.set('isNeverShow', isNeverSHow)\n  }\n\n  startTest = () => {\n    this.props.history.push('/ai-test/exam')\n  }\n\n  getInitialData = () => {\n    http.get(`${API.home}/sys/activity_data`)\n      .then(res => {\n        const {code, msg, data} = res.data\n        if (code === 200) {\n          this.setState({\n            pageState: data,\n          })\n        } else if (code === 3009) {\n          this.props.history.push('/')\n        } else {\n          Toast.fail(msg, 2, null, false)\n        }\n      })\n  }\n\n  getRankList = (tab, type) => {\n    http.get(`${API.home}/sys/at/ranks/${type === 0 ? 0 : 2}`)\n      .then(res => {\n        const {code, msg, data} = res.data\n        if (code === 200) {\n          this.setState({\n            rankList: data,\n          })\n        } else {\n          Toast.fail(msg, 2, null, false)\n        }\n      })\n  }\n\n  getUserScores = (type) => {\n    http.get(`${API.home}/sys/at/user_score/${type}/0`)\n      .then(res => {\n        const {code, msg, data} = res.data\n\n        if (code === 200) {\n          this.setState({\n            userScore: data,\n          })\n        } else {\n          Toast.fail(msg, 2, null, false)\n        }\n      })\n  }\n\n  getUserAddress = () => {\n    http.get(`${API.home}/sys/user_address_info`)\n      .then(res => {\n        const {code, msg, data} = res.data\n        if (code === 200) {\n          this.setState({\n            userAddress: data,\n          })\n        }\n      })\n  }\n\n  inputText = e => {\n    const key = e.target.name\n    const value = e.target.value\n    this.setState(state => {\n      return {\n        userAddress: {\n          ...state.userAddress, ...{\n            [key]: value,\n          },\n        },\n      }\n    })\n  }\n\n  submitForm = (e) => {\n    e.preventDefault()\n    const {userAddress} = this.state\n    if (!Object.values(userAddress).every(item => !!item)) {\n      Toast.info('请填写完整')\n      return\n    }\n    http.post(`${API.home}/sys/update_address`, userAddress)\n      .then(res => {\n        const {code, msg, data} = res.data\n        if (code === 200) {\n          Toast.success('提交成功', 2, null, false)\n          this.setState({\n            isShowUserAddress: false,\n          })\n        } else {\n          Toast.fail(msg, 2, null, false)\n        }\n      })\n  }\n\n  render() {\n    const {\n      selfTabs,\n      rankList,\n      rankListTabs,\n      icons,\n      isExpandRankList,\n      isShowRule,\n      isNeverShow,\n      pageState,\n      userScore,\n      isShowUserAddress,\n      userAddress,\n      entryButtonInRule,\n    } = this.state\n    const {user, history} = this.props\n    const _rankList = Array.isArray(rankList) ? isExpandRankList ? rankList : rankList.slice(0, 10) : []\n    return (\n      <div className={'scores'}>\n        <div className=\"banner\">\n          <img src={pageState.h5_banner} alt=\"\"/>\n        </div>\n        <div className=\"info\">\n          <span>已有{pageState.join_num}人参加测试</span>\n          <a href=\"javascript:void(0);\" onClick={() => {\n            this.setState({\n              isShowRule: true,\n            })\n          }}>规则</a>\n        </div>\n        {\n          <div className=\"score-list\">\n            <Tabs tabs={selfTabs} tabBarUnderlineStyle={{display: 'none'}} onChange={(tab, i) => {\n              this.getUserScores(i)\n            }}>\n              {\n                selfTabs.map((tab, index) => {\n                  return <div className={'tab-content'} key={index}>\n                    <table>\n                      <thead>\n                      <tr>\n                        <th>分数</th>\n                        <th>用时</th>\n                        <th>{index === 0 && '最终'}排名</th>\n                      </tr>\n                      </thead>\n                      <tbody>\n                      {\n                        user.hasError\n                          ? <tr>\n                            <td>--</td>\n                            <td>--</td>\n                            <td>--</td>\n                          </tr>\n                          : <tr>\n                            {\n                              userScore.score === '-' ? <td>'-'</td> :\n                                <td>{userScore.score} <Link to={`/ai-test/analysis/${userScore.r_id}`}>解析</Link></td>\n                            }\n                            <td>{userScore.cost_time}</td>\n                            {\n                              userScore.rank === '-' ? <td>'-'</td> : <td>{userScore.rank}名</td>\n                            }\n                          </tr>\n                      }\n                      </tbody>\n                    </table>\n                  </div>\n                })\n              }\n            </Tabs>\n            <div className=\"share\">\n              <Link to={'/ai-test/report'}>分享</Link>\n            </div>\n          </div>\n        }\n        <div className=\"rank-list\">\n          <div className=\"head\">\n            <div>\n              测试排行榜\n            </div>\n            <div>\n              <span>仅显示前50名</span>\n              <a href=\"javascript:void(0);\" onClick={() => {\n                if (user.hasError) {\n                  history.push('/passport')\n                } else {\n                  this.setState({\n                    isShowUserAddress: true,\n                  })\n                }\n              }}>收货地址</a>\n            </div>\n          </div>\n          <div className=\"list\">\n            <Tabs tabs={rankListTabs} tabBarUnderlineStyle={{display: 'none'}} onChange={this.getRankList}>\n              {\n                rankListTabs.map((item, index) => {\n                  return <table key={index}>\n                    <thead>\n                    <tr>\n                      <th>名次</th>\n                      <th>昵称</th>\n                      <th>成绩</th>\n                      <th>奖品</th>\n                    </tr>\n                    </thead>\n                    <tbody>\n                    {\n                      !!_rankList.length && _rankList.map((item, index) => {\n                        return <tr key={index}>\n                          <td>\n                            {\n                              index < 3 ? <img src={icons[index]} alt=\"\"/> : index + 1\n                            }\n                          </td>\n                          <td>\n                            <img src={item.avatar} className={'avatar'} alt=\"\"/>\n                            {item.user_name}\n                          </td>\n                          <td>\n                            <span className={'score'}>{item.score}</span>/<span>{item.cost_time}</span>\n                          </td>\n                          <td>\n                           <div>\n                             {\n                               item.prize_url ? <a href={`${item.prize_url}#goback`}>{item.prize}</a> : item.prize\n                             }\n                           </div>\n\n                          </td>\n                        </tr>\n                      })\n                    }\n                    </tbody>\n                  </table>\n                })\n              }\n            </Tabs>\n            {\n              rankList.length > 10 && (!isExpandRankList ?\n                  <div className=\"expand\" onClick={() => {\n                    this.setState({\n                      isExpandRankList: true,\n                    })\n                  }}>\n                  <span>\n                    展开更多\n                    <i className={'iconfont iconiconfront-69'}></i>\n                  </span>\n                  </div>\n                  :\n                  <div className=\"expand\" onClick={() => {\n                    this.setState({\n                      isExpandRankList: false,\n                    })\n                  }}>\n                  <span>\n                    收起\n                    <i className={'iconfont iconiconfront-71'}></i>\n                  </span>\n                  </div>\n              )\n            }\n          </div>\n        </div>\n        <div className=\"qrcode\">\n          <img src=\"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/ai-test/qr.png\" alt=\"\"/>\n          <div>得100分,请长按/扫码,免费领课!</div>\n        </div>\n        <div className=\"btn\">\n          {\n            compareDesc(new Date(), pageState.stop_time * 1000) > 0 ?\n              pageState.daily_test_num > 0\n                ? <button className={'available'} onClick={() => {\n                  isNeverShow ? this.startTest() : this.setState({\n                    entryButtonInRule: true,\n                    isShowRule: true,\n                  })\n                }}>开始测试<span>(今日可测试{pageState.daily_test_num}次)</span></button>\n                : <Link to={`/ai-test/share?shareCode=${pageState.code}`}>\n                  <button className={'get-chance'}>获取测试机会<span>(今日可测试0次)</span></button>\n                </Link>\n              : <button className={'unavailable'}>活动已结束</button>\n          }\n        </div>\n        {\n          isShowRule &&\n          <Rule rule={pageState.rule} startTest={this.startTest} neverShow={this.handleChange} isNeverShow={isNeverShow}\n                close={() => {\n                  this.setState({\n                    isShowRule: false,\n                    entryButtonInRule: false,\n                  })\n                }} entryButtonInRule={entryButtonInRule}/>\n        }\n        {\n          isShowUserAddress &&\n          <div className=\"user-address-wrapper\">\n            <div className=\"user-address\">\n              <div className=\"title\">收货信息</div>\n              <div className=\"tip\">获奖用户(以最终榜单为准)请及时填写收货信息</div>\n              <form action=\"\" onSubmit={this.submitForm}>\n                <input type=\"text\" placeholder={'收件人'} name={'name'} onChange={this.inputText}\n                       value={userAddress.name}/>\n                <input type=\"tel\" placeholder={'联系方式'} name={'phone'} onChange={this.inputText}\n                       value={userAddress.phone}/>\n                <input type=\"text\" placeholder={'收货地址'} name={'address'} onChange={this.inputText}\n                       value={userAddress.address}/>\n                <button type={'submit'}\n                        className={Object.values(userAddress).every(value => !!value) ? 'available' : ''}>提交\n                </button>\n              </form>\n              <i className={'close iconfont iconiconfront-2'} onClick={() => {\n                this.setState({\n                  isShowUserAddress: false,\n                })\n              }}/>\n            </div>\n          </div>\n        }\n      </div>\n    );\n  }\n}\n\nfunction Rule({neverShow, isNeverShow, rule, close, startTest, entryButtonInRule}) {\n  return <div className=\"rule-mask\">\n    <div className=\"rule\">\n      <div>测试规则</div>\n      <div dangerouslySetInnerHTML={html(rule)}></div>\n      {\n        entryButtonInRule && <>\n          <div className=\"option\">\n            <input id={'never-show'} type=\"checkbox\" onChange={neverShow} checked={isNeverShow}/>\n            <label htmlFor=\"never-show\">不再提示</label>\n          </div>\n          <button onClick={startTest}>进入测试</button>\n        </>\n      }\n      <i className={'close iconfont iconiconfront-2'} onClick={close}/>\n    </div>\n  </div>\n}\n\n\nexport default connect(\n  ({user}) => ({user}),\n  null,\n)(Scores);","import React, { Component } from 'react';\nimport './index.scss'\nimport { html } from \"@/utils\"\nimport classnames from 'classnames'\n\n\nclass Question extends Component {\n\n  handleSelect = option => {\n    const {selectAnswer} = this.props\n    if (selectAnswer) {\n      selectAnswer(this.props.question, option.id)\n      this.setState({\n        selectedId: option.id,\n      })\n    }\n  }\n\n  render() {\n    const {question, answer, activeIndex, category} = this.props\n    return (\n      <div className={'question-container'}>\n        {\n          <div className=\"question\">\n            {activeIndex !== undefined && `${activeIndex + 1}.`}\n            {category && <span className={'category'}>{category}</span>}&nbsp;\n            <span dangerouslySetInnerHTML={{__html: question.ques}}></span>\n          </div>\n        }\n        <ul className={'options'}>\n          {\n            !!question.options.length && question.options.map((item, index) => {\n              return <li key={item.id}\n                         className={classnames({\n                           active: answer && answer[question.id] === item.id,\n                           error: item.user_select && !item.is_ans,\n                           correct: item.is_ans,\n                         })}\n                         onClick={this.handleSelect.bind(this, item)}>\n                <div className={'letter'}>{String.fromCharCode(65 + index)}</div>\n                <div>{item.des}</div>\n              </li>\n            })\n          }\n        </ul>\n      </div>\n    );\n  }\n}\n\nexport default Question;","import React from 'react';\nimport './index.scss'\nimport classnames from 'classnames'\n\nconst Navigation = ({questions, answer, handleClick, isAnalysis}) => {\n  return (\n    <div className=\"navigation\">\n      <ul>\n        {\n          !!questions.length && questions.map((item, index) => {\n            const userSelectIndex = item.options.findIndex(item => item.user_select)\n            const rightAnswerIndex = item.options.findIndex(item => item.is_ans)\n            return <li key={index} onClick={handleClick.bind(this, index)}\n                       className={classnames({\n                         active: answer && answer[item.id],\n                         correct: isAnalysis && userSelectIndex === rightAnswerIndex,\n                         error: isAnalysis && userSelectIndex >= 0 && userSelectIndex !== rightAnswerIndex,\n                         unselect: isAnalysis && userSelectIndex < 0,\n                       })}>{index + 1}</li>\n          })\n        }\n      </ul>\n    </div>\n  );\n};\n\nexport default Navigation;","import React, { Component } from 'react';\nimport './index.scss'\nimport Question from '../common/question'\nimport { browser, getParam, http } from \"@/utils\"\nimport { Toast } from 'antd-mobile'\nimport storage from 'store2'\nimport Navigation from \"@components/ai-test/common/navigation\"\nimport {\n  differenceInSeconds,\n  differenceInMinutes,\n  differenceInHours,\n  differenceInDays,\n  differenceInMilliseconds,\n} from \"date-fns\";\nimport { isEmpty } from 'lodash'\nimport { connect } from 'react-redux'\nimport { matchPath } from 'react-router-dom'\n\nclass Exam extends Component {\n\n  store = storage.namespace('aiTestExam')\n  timer = null\n  unlisten = null\n\n  state = {\n    questions: [],\n    activeQuestion: 0,\n    time: {\n      d: 0,\n      h: 0,\n      m: 0,\n      s: 0,\n    },\n    elapsed: 0,\n    answer: {},\n    recordId: undefined,\n  }\n\n  componentDidMount() {\n    const {user, history} = this.props\n    if (user.hasError) {\n      return history.push('/passport')\n    }\n    if (this.store.session.get('submitted')) {\n      this.store.session.clearAll()\n      this.props.history.replace('/ai-test')\n    }\n    this.unlisten = history.listen((location) => {\n      const match = matchPath(location.pathname, {\n        path: '/ai-test',\n      })\n      if (match.isExact) {\n        this.store.clearAll()\n      }\n      this.unlisten && this.unlisten()\n    })\n    this.getQuestions()\n\n    document.addEventListener('visibilitychange', () => {\n      if (document.visibilityState === 'visible') {\n        this.setState(state => {\n          return {\n            elapsed: state.elapsed + (Date.now() - this.store.session.get('hiddenTimestamp')) / 10,\n          }\n        })\n      } else {\n        this.store.session.set('hiddenTimestamp', Date.now())\n      }\n    })\n  }\n\n  componentWillUnmount() {\n    clearInterval(this.timer)\n  }\n\n\n  setCounter = () => {\n    this.timer = setInterval(() => {\n      this.setState(state => {\n        const fms = state.elapsed + 1\n        return {\n          time: {\n            d: Math.floor(fms / (60 * 60 * 100 * 24)),\n            h: Math.floor(fms / (60 * 60 * 100)) % 24,\n            m: Math.floor(fms / (60 * 100)) % 60,\n            s: Math.floor(fms / 100) % 60,\n          },\n          elapsed: fms,\n        }\n      })\n    }, 10)\n  }\n\n  goBack = () => {\n    const {state} = this.props.location\n    if (browser.isWeixin && getParam('code') && getParam('state')) {\n      window.history.go(-2)\n    }\n    if (state.records && state.records.length > 1) {\n      window.history.go(-1);\n    } else if (state.from && state.from.pathname) {\n      location.replace(`${state.from.pathname}${state.from.search}`)\n    } else {\n      window.location.href = window.location.origin\n    }\n  }\n\n  getQuestions = () => {\n    http.get(`${API.home}/sys/get_question`)\n      .then(res => {\n        const {code, msg, data} = res.data\n        if (code === 200) {\n          let answer = this.store.session.get('answer') || {}\n          if (isEmpty(answer)) {\n            data.forEach(item => {\n              answer[item.id] = 0\n            })\n          }\n          this.setState({\n            questions: data,\n            answer,\n            recordId: data[0].record_id,\n          })\n          this.getStartTime(data[0].create_time, data[0].now)\n          this.setCounter()\n        } else if (code === 23007) {\n          this.props.history.replace('/ai-test/scores')\n        } else {\n          Toast.fail(msg, 2, null, false)\n        }\n      })\n  }\n\n  getStartTime = (createTimeStamp, current) => {\n    const now = new Date(current * 1000)\n    const createTime = new Date(createTimeStamp * 1000)\n    this.setState({\n      time: {\n        d: differenceInDays(now, createTime),\n        h: differenceInHours(now, createTime) % 24,\n        m: differenceInMinutes(now, createTime) % 60,\n        s: differenceInSeconds(now, createTime) % 60,\n      },\n      elapsed: differenceInMilliseconds(now, createTime) / 10,\n    });\n  }\n\n  selectAnswer = (question, optionId) => {\n    this.setState(state => {\n      const answer = state.answer\n      const activeQuestion = state.activeQuestion + 1\n      setTimeout(() => {\n        this.setState({\n          activeQuestion: activeQuestion >= state.questions.length ? state.questions.length - 1 : activeQuestion,\n        });\n      }, 200)\n      answer[question.id] = optionId\n      return {\n        answer,\n      }\n    }, () => {\n      const {questions, activeQuestion} = this.state\n      if (activeQuestion === questions.length - 1) {\n        this.storeData()\n      }\n    })\n  }\n\n  storeData = () => {\n    const {answer, time, recordId, elapsed} = this.state\n    const {history} = this.props\n    clearInterval(this.timer)\n    this.store.session.setAll({time, answer, recordId, elapsed})\n    history.push('/ai-test/submit')\n\n  }\n\n  render() {\n    const {questions, activeQuestion, time, answer} = this.state\n    return (\n      <div className={'exam'}>\n        <header>\n          <div className=\"go-back\">\n            <i className='iconfont iconiconfront-68' onClick={this.goBack}></i>\n          </div>\n          <div className=\"time\">\n            <i className={'iconfont iconzhong'}></i>\n            <span>\n              {\n                !!time.d && <>{time.d}天</>\n              }\n              {\n                !!time.h && <>{time.h && time.h.toString().padStart(2, '0')}:</>\n              }\n              {time.m.toString().padStart(2, '0')}:\n              {time.s.toString().padStart(2, '0')}\n            </span>\n          </div>\n          <div className=\"count\"\n               onClick={this.storeData}>{Object.values(answer).filter(item => item).length}/{questions.length}</div>\n        </header>\n        <div className=\"banner\">\n          <img src=\"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/ai-test/m/scores/exam-banner.png\" alt=\"\"/>\n        </div>\n        <div className=\"question-section\">\n          {\n            !!questions.length &&\n            <Question activeIndex={activeQuestion} question={questions[activeQuestion]} selectAnswer={this.selectAnswer}\n                      answer={answer}></Question>\n          }\n        </div>\n        <Navigation questions={questions} answer={answer} handleClick={(index) => {\n          this.setState({\n            activeQuestion: index,\n          });\n        }}/>\n      </div>\n    );\n  }\n}\n\nexport default connect(\n  ({user}) => ({user}),\n  null,\n)(Exam);","import React, { Component } from 'react';\nimport './index.scss'\nimport { HeaderBar } from \"@common/index\"\nimport storage from 'store2'\nimport { Toast } from \"antd-mobile\";\nimport { http } from \"@/utils\"\nimport classnames from 'classnames'\nimport { Link } from \"react-router-dom\";\nimport { isEmpty } from 'lodash'\n\n\nclass SubmitAnswer extends Component {\n\n  store = storage.namespace('aiTestExam')\n  timer = null\n\n  state = {\n    time: this.store.session.get('time') || {d: 0, h: 0, m: 0, s: 0},\n    answer: this.store.session.get('answer'),\n    recordId: this.store.session.get('recordId'),\n    analysis: [],\n    results: [],\n    elapsed: this.store.session.get('elapsed'),\n  }\n\n  componentDidMount() {\n    if (isEmpty(this.state.answer) || !this.state.recordId) {\n      this.props.history.replace('/ai-test')\n      this.store.session.remove('submitted')\n    }\n    if (this.store.session.get('submitted')) {\n      this.getAnalysis()\n    } else {\n      this.setCounter()\n    }\n  }\n\n  componentWillUnmount() {\n    clearInterval(this.timer)\n  }\n\n\n  setCounter = () => {\n    this.timer = setInterval(() => {\n      this.setState(state => {\n        const fms = state.elapsed + 1\n        return {\n          time: {\n            d: Math.floor(fms / (60 * 60 * 100 * 24)),\n            h: Math.floor(fms / (60 * 60 * 100)) % 24,\n            m: Math.floor(fms / (60 * 100)) % 60,\n            s: Math.floor(fms / 100) % 60,\n          },\n          elapsed: fms,\n        }\n      })\n    }, 10)\n  }\n\n\n  submit = () => {\n    const {answer, recordId} = this.state\n    http.post(`${API.home}/sys/submit_answer`, {\n      answer: JSON.stringify(answer),\n      cost_time: this.state.elapsed * 10,\n      record_id: recordId,\n    }).then(res => {\n      const {code, msg} = res.data\n      if (code === 200) {\n        this.store.session.set('submitted', true)\n        this.store.session.set('elapsed', this.state.elapsed)\n        this.store.session.set('time', this.state.time)\n        clearInterval(this.timer)\n        this.props.history.push('/ai-test/report')\n      } else {\n        Toast.fail(msg, 2, null, false)\n      }\n    })\n  }\n\n  getAnalysis = () => {\n    http.post(`${API.home}/sys/get_analysis`, {\n      record_id: this.state.recordId,\n    }).then(res => {\n      const {code, msg, data} = res.data\n      if (code === 200) {\n        this.setState({\n          analysis: data,\n        });\n      } else {\n        Toast.fail(msg, 2, null, false)\n      }\n    })\n  }\n\n  render() {\n    const {time, answer, analysis, recordId} = this.state\n    return (\n      <div className={'submit-answer'}>\n        <HeaderBar title={'提交试卷'} arrow={true}/>\n        <div className=\"content\">\n          <div className=\"cost\">用时:\n            <span>\n              {\n                !!time.d && <>{time.d}天</>\n              }\n              {\n                !!time.h && <>{time.h && time.h.toString().padStart(2, '0')}:</>\n              }\n              {time.m.toString().padStart(2, '0')}:\n              {time.s.toString().padStart(2, '0')}\n            </span>\n          </div>\n          {\n            analysis.length\n              ? <>\n                <ul className={'answers'}>\n                  {\n                    analysis.map((item, index) => {\n                      const userSelectIndex = item.options.findIndex(item => item.user_select)\n                      const rightAnswerIndex = item.options.findIndex(item => item.is_ans)\n                      return <li key={item.id}\n                                 className={classnames({\n                                   correct: userSelectIndex === rightAnswerIndex,\n                                   wrong: userSelectIndex >= 0 && userSelectIndex !== rightAnswerIndex,\n                                   unselect: userSelectIndex < 0,\n                                 })}>{index + 1}</li>\n                    })\n                  }\n                </ul>\n                {\n                  !!analysis.length && <div className={'score'}>总分:{analysis[0].score}分</div>\n                }\n                <Link to={`/ai-test/analysis/${recordId}`}>\n                  <button>查看解析</button>\n                </Link>\n              </>\n              : <>\n                <ul className={'answers'}>\n                  {\n                    answer && !!Object.keys(answer).length && Object.keys(answer).map((item, index) => {\n                      return <li key={item} className={answer[item] ? 'selected' : ''}>{index + 1}</li>\n                    })\n                  }\n                </ul>\n                <button onClick={this.submit}>提交</button>\n              </>\n          }\n        </div>\n      </div>\n    );\n  }\n}\n\nexport default SubmitAnswer;\n","import React, { Component } from 'react';\nimport './index.scss'\nimport { Link } from \"react-router-dom\";\n\n\nclass Recommends extends Component {\n  render() {\n    const {recommends} = this.props\n    return (\n      <div className=\"recommends\">\n        <div>相关课程</div>\n        <ul>\n          {\n            !!recommends.length && recommends.map(item => {\n              return <li key={item.course_id}>\n                <Link to={`/detail?id=${item.course_id}`}><img src={item.image_name} alt=\"\"/></Link>\n              </li>\n            })\n          }\n        </ul>\n      </div>\n    );\n  }\n}\n\nexport default Recommends;","import React, { Component } from 'react';\nimport './index.scss'\nimport { HeaderBar } from \"@common/index\"\nimport Question from \"@components/ai-test/common/question\"\nimport Navigation from \"@components/ai-test/common/navigation\"\nimport { html, http } from \"@/utils\"\nimport { Toast } from \"antd-mobile\";\nimport Recommends from '@/components/ai-test/common/recommends'\n\n\nclass Analysis extends Component {\n\n  state = {\n    questions: [],\n    activeIndex: 0,\n    userSelect: '',\n    rightAnswer: '',\n    userUnselect: false,\n  }\n\n  componentDidMount() {\n    this.getAnalysis()\n  }\n\n  getAnalysis = () => {\n    http.post(`${API.home}/sys/get_analysis`, {\n      record_id: this.props.match.params.recordId,\n    }).then(res => {\n      const {code, msg, data} = res.data\n      if (code === 200) {\n        this.setState({\n          questions: data,\n        }, () => {\n          this.getAnswerInfo()\n        });\n      } else {\n        Toast.fail(msg, 2, null, false)\n      }\n    })\n  }\n\n  getAnswerInfo = () => {\n    const {questions, activeIndex} = this.state\n    const question = questions[activeIndex]\n    const userAnswerIndex = question.options.findIndex(item => item.user_select)\n    const rightAnswerIndex = question.options.findIndex(item => item.is_ans)\n    this.setState({\n      userSelect: String.fromCharCode(65 + userAnswerIndex),\n      rightAnswer: String.fromCharCode(65 + rightAnswerIndex),\n      userUnselect: userAnswerIndex < 0,\n    });\n  }\n\n  componentDidUpdate(prevProps, prevState) {\n    if (prevState.activeIndex !== this.state.activeIndex) {\n      this.getAnswerInfo()\n    }\n  }\n\n  render() {\n    const {questions, activeIndex, userSelect, rightAnswer, userUnselect} = this.state\n    return (\n      <div className={'analysis-container'}>\n        <HeaderBar title={'AI水平测试'} arrow={true}/>\n        {\n          !!questions.length && <Question activeIndex={activeIndex} question={questions[activeIndex]}/>\n        }\n        <div style={{height: '8px', backgroundColor: '#f5f5f5'}}></div>\n        <div className=\"analysis\">\n          {\n            userUnselect\n              ? <div className={'info'}>您未作答</div>\n              : <div className=\"info\">\n                您选择的是{userSelect},正确答案是{rightAnswer} 回答{userSelect === rightAnswer ? '正确' : '错误'}\n              </div>\n          }\n          <div className=\"content\">\n            <div className=\"head\">\n              <i className=\"icon\"></i>\n              <span>解析</span>\n            </div>\n            {\n              !!questions.length &&\n              <div className=\"analysis-content\" dangerouslySetInnerHTML={html(questions[activeIndex].analysis)}></div>\n            }\n          </div>\n        </div>\n        {\n          !!questions.length && questions[activeIndex] && questions[activeIndex].commend_course && !!questions[activeIndex].commend_course.length &&\n          <Recommends recommends={questions[activeIndex].commend_course}/>\n        }\n        <Navigation questions={questions} isAnalysis={true} handleClick={(index) => {\n          this.setState({\n            activeIndex: index,\n          });\n        }}/>\n      </div>\n    );\n  }\n}\n\nexport default Analysis;","import React, { Component } from 'react';\nimport './index.scss'\nimport { HeaderBar } from \"@common/index\"\nimport Question from \"@components/ai-test/common/question\"\nimport { html, http, browser } from \"@/utils\"\nimport { Toast } from \"antd-mobile\";\nimport { Link } from \"react-router-dom\";\nimport { connect } from \"react-redux\";\nimport Recommends from \"@components/ai-test/common/recommends\"\nimport classnames from 'classnames'\nimport storage from 'store2'\n\n\nclass Assist extends Component {\n\n  store = storage.namespace('aiTestAssist')\n\n  state = {\n    question: this.store.session.get('question'),\n    answer: this.store.session.get('answer'),\n    result: null,\n    rightAnswer: '',\n    userAnswer: '',\n  }\n\n  componentDidMount() {\n    if (!this.store.session.get('question')) {\n      this.getData()\n    }\n  }\n\n  getData = () => {\n    http.get(`${API.home}/sys/aitest/assist`)\n      .then(res => {\n        const {code, msg, data} = res.data\n        if (code === 200) {\n          const answer = {\n            [data.id]: 0,\n          }\n          this.store.session.set('question', data)\n          this.store.session.set('answer', answer)\n          this.setState({\n            question: data,\n            answer,\n          });\n        } else {\n          Toast.fail(msg, 2, null, false)\n        }\n      })\n  }\n\n  selectAnswer = (question, optionId) => {\n    this.setState({\n      answer: {\n        [question.id]: optionId,\n      },\n    });\n  }\n\n  submit = () => {\n    const {history, user} = this.props\n    if (user.hasError) {\n      if (browser.isWeixin) {\n        window.location.href = `https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx23dac6775ac82877&redirect_uri=${encodeURIComponent(`${window.location.origin}${location.pathname}?aa=bb`)}&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect`\n      } else {\n        history.push('/passport')\n      }\n      return\n    }\n    const {question, answer} = this.state\n    if (!answer[question.id]) {\n      Toast.info('请选择后进提交', 2, null, false)\n      return\n    }\n    http.post(`${API.home}/sys/aitest/assistSubmit`, {\n      code: this.props.match.params.assistCode,\n      question_id: question.id,\n      answer_id: answer[question.id],\n    }).then(res => {\n      const {code, msg, data} = res.data\n      if (answer[question.id] === data.correct_answer) {\n        Toast.info('回答正确', 2, null, false)\n      } else {\n        Toast.info('回答错误', 2, null, false)\n      }\n      this.setAnswer(data.correct_answer)\n      if (code === 200) {\n        this.setState({\n          result: data,\n        });\n        this.store.session.clearAll()\n      } else {\n        Toast.fail(msg, 2, null, false)\n      }\n    })\n  }\n\n  setAnswer = (rightAnswerId) => {\n    this.setState(state => {\n      let rightAnswer = '', userAnswer = ''\n      const question = {\n        ...state.question, ...{\n          options: state.question.options.map((item, index) => {\n            if (item.id === rightAnswerId) {\n              item.is_ans = 1\n              rightAnswer = String.fromCharCode(65 + index)\n            }\n            if (item.id === state.answer[state.question.id]) {\n              userAnswer = String.fromCharCode(65 + index)\n              item.user_select = 1\n            }\n            return item\n          }),\n        },\n      }\n      return {\n        question,\n        rightAnswer,\n        userAnswer,\n      }\n    });\n  }\n\n  render() {\n    const {question, answer, result, rightAnswer, userAnswer} = this.state\n    return (\n      <div className={'assist'}>\n        <HeaderBar title={'AI水平测试'} arrow={true}/>\n        {\n          question &&\n          <Question question={question} category={'机器学习'} answer={answer} selectAnswer={!result && this.selectAnswer}/>\n        }\n        <div style={{height: '8px', backgroundColor: '#f5f5f5'}}></div>\n        {\n          result && <div className=\"content\">\n            <div\n              className={'info'}>您的选择是{userAnswer},正确答案是{rightAnswer} 回答{userAnswer === rightAnswer ? '正确' : '错误'}</div>\n            <div className=\"head\">\n              <i className=\"icon\"></i>\n              <span>解析</span>\n            </div>\n            <div className=\"analysis-content\" dangerouslySetInnerHTML={html(result.analysis)}></div>\n          </div>\n        }\n        {\n          result && question.commend_course && question.commend_course.length && <>\n            <Recommends recommends={question.commend_course}/>\n          </>\n        }\n\n        <div className=\"btns\">\n          {\n            result && <div className={classnames(['status', {\n              end: result.status === 6,\n              success: result.status === 1,\n              error: result.status === 2 || result.status === 3 || result.status === 4 || result.status === 5,\n            }])}>\n              {result.desc}\n            </div>\n          }\n          {\n            !result && <button className={'submit'} onClick={this.submit}>提交</button>\n          }\n          {\n            result && (result.status === 6\n              ? <Link to={'/'} className={'home'}>返回首页</Link>\n              : <Link to={'/ai-test/scores'} className={'test'}>我也要测试</Link>)\n          }\n        </div>\n      </div>\n    );\n  }\n}\n\nexport default connect(\n  ({user}) => ({user}),\n  null,\n)(Assist)","import React, {Component} from 'react'\nimport {CopyToClipboard} from 'react-copy-to-clipboard'\nimport {browser, http, wxShare,getParam} from '@/utils'\nimport './index.scss'\nimport {Toast} from \"antd-mobile\"\n\n\nclass aiTestHelp extends Component {\n\n    constructor(props) {\n        super(props)\n        this.state = {\n            total_num: '',\n            dec:'',\n            isshowYindao: false\n        }\n    }\n\n    componentDidMount() {\n        this.handleFetchInfo()\n        this.getAssist()\n    }\n\n    share = () => {\n        wxShare({\n            title: '全国AI水平测试开始了,看看你能答对几道题?',\n            desc: this.state.dec,\n            link: `${API.m}/ai-test/assist/${getParam('shareCode')}`,\n            imgUrl: 'https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/ai-test/m/share-img.png',\n        })\n        this.setState({\n            isshowYindao: true\n        })\n    }\n\n    copyToSuccess = () => {\n        Toast.info('链接已复制,快去发送给好友吧~')\n    }\n\n    handleFetchInfo = () => {\n        http.get(`${API.home}/sys/aitest/invitation`).then(res => {\n            const {code, data, msg} = res.data\n            if (code === 200) {\n                this.setState({\n                    total_num: data.total_num,\n                })\n            }\n        })\n    }\n\n    getAssist=()=>{\n        http.get(`${API.home}/sys/aitest/assist`).then(res => {\n            const {code, data, msg} = res.data\n            if (code === 200) {\n                this.setState({\n                    dec: data.ques,\n                })\n            }\n        })\n    }\n\n\n    render() {\n        const {total_num, isshowYindao} = this.state\n        return (\n            <div className={'ai-test-help'}>\n                <div className=\"banner\">\n                    <img src=\"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/ai-test/m/text2.png\" alt=\"\"/>\n                    <span>{total_num}</span>\n                    <img src=\"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/ai-test/m/text1.png\" alt=\"\"/>\n                </div>\n\n                <p className={'tip-l'}>分享给好友</p>\n                <p className={'tip-s'}>每个好友只能助力1次哦~</p>\n                <p className={'tip-m'}>好友答题为你助力,答题正确你将获得</p>\n                <p className={'tip-num'}>一次测试机会</p>\n\n                {\n                    !browser.isWeixin &&\n                    <CopyToClipboard\n                        text={`${API.m}/ai-test/assist/${getParam('shareCode')}`}\n                        onCopy={this.copyToSuccess}\n                    >\n                        <div className={'share-btn'}>\n                            邀请好友助力\n                        </div>\n                    </CopyToClipboard>\n                }\n                {\n                    browser.isWeixin &&\n                    <div className={'share-btn'} onClick={this.share}>\n                        邀请好友助力\n                    </div>\n                }\n\n                {\n                    isshowYindao &&\n                        <div className={'share'}>\n                            <div className=\"content\">\n                                <p className=\"test\">点击右上角,分享给好友</p>\n                                <i className=\"iconfont\"></i>\n                            </div>\n                        </div>\n                }\n            </div>\n        )\n    }\n}\n\n\nexport default aiTestHelp","import React, { Component } from 'react'\nimport { HeaderBar } from '@/common'\nimport { getParam, http } from '@/utils'\nimport './index.scss'\nimport QRCode from 'qrcode'\nimport html2canvas from 'html2canvas'\nimport scoreIconL from '@assets/image/score_icon-l.png'\nimport scoreIconR from '@assets/image/score_icon-r.png'\nimport scoreReportBg from '@assets/image/scoreReport_bg.png'\nimport { connect } from \"react-redux\"\n\n@connect(state => ({\n    user: state.user,\n  }),\n)\nclass scoreReport extends Component {\n\n  constructor(props) {\n    super(props)\n    this.state = {\n      tab: ['当前成绩', '今日最佳', '本月最佳'],\n      cutIndex: 0,\n      myRankList: '',\n      imgUrl: '',\n      codeSrc: '',\n      avatar_file: '',\n    }\n  }\n\n  componentDidMount() {\n    window.onbeforeunload = () => {\n      document.documentElement.scrollTop = 0\n      document.body.scrollTop = 0\n    }\n    this.getCodeWe()\n    this.handleFetchInfo(0)\n  }\n\n\n  // shouldComponentUpdate(nextProps, nextState, nextContext) {\n  //   if (this.props.user.data.avatar !== nextProps.user.data.avatar) {\n  //     this.getCanvas()\n  //     return false\n  //   }\n  //   return true\n  // }\n  //\n\n  getCanvas() {\n    document.documentElement.scrollTop = 0\n    document.body.scrollTop = 0\n\n    let _this = this\n    var canvas2 = document.createElement(\"canvas\")\n    let _canvas = document.getElementsByClassName('score-list')[0]\n    if (!_canvas) {\n      return\n    }\n    var w = parseInt(window.getComputedStyle(_canvas).width)\n    var h = parseInt(window.getComputedStyle(_canvas).height)\n    var scale = window.devicePixelRatio\n    canvas2.width = w * scale\n    canvas2.height = h * scale\n\n    var context = canvas2.getContext(\"2d\")\n    context.scale(1, 1)\n    html2canvas(document.getElementsByClassName('score-list')[0], {canvas: canvas2}).then(function (canvas) {\n      //document.body.appendChild(canvas);\n\n      let imgUrl = canvas.toDataURL(\"image/png\").replace(\"image/png\", \"image/octet-stream\")\n      _this.setState({\n        imgUrl: imgUrl,\n      })\n    })\n  }\n\n// 获取二维码\n  getCodeWe() {\n    let _this = this\n    let qrCodeLink = `${API.m}/ai-test`\n    return new Promise(resolve => {\n      QRCode.toDataURL(qrCodeLink, {}, function (err, url) {\n        _this.setState({\n          codeSrc: url,\n        })\n      })\n      resolve()\n    })\n  }\n\n  handleFetchInfo = (index) => {\n    http.get(`${API.home}/sys/at/user_score/${index}/${getParam('uid') ? getParam('uid') : 0}`).then(res => {\n      const {code, data} = res.data\n      if (code === 200) {\n        this.setState({\n          myRankList: data,\n        })\n\n        let avatar = data.avatar_file\n        this.getBase64(avatar)\n        setTimeout(() => {\n          this.getCanvas()\n        }, 500)\n      } else if (code === 4030) {\n        const {user, history} = this.props\n        if (user.hasError) {\n          history.push('/passport')\n        }\n      }\n    })\n  }\n\n\n  getBase64Image = (img) => {\n    var canvas = document.createElement(\"canvas\")\n    canvas.width = img.width\n    canvas.height = img.height\n\n    var ctx = canvas.getContext(\"2d\")\n    ctx.drawImage(img, 0, 0, img.width, img.height)\n    var ext = img.src.substring(img.src.lastIndexOf(\".\") + 1).toLowerCase()\n    var dataURL = canvas.toDataURL(\"image/\" + ext)\n    return dataURL\n  }\n\n  getBase64 = (img) => {\n    let base64 = null\n    let image = new Image()\n    let timeStamp = +new Date()\n    image.setAttribute('crossOrigin', 'anonymous')\n    image.src = img + '?' + timeStamp\n    image.onload = () => {\n      base64 = this.getBase64Image(image)\n      this.setState({\n        avatar_file: base64,\n      })\n    }\n    image.onerror = () => {\n      console.log('onerror')\n      let timeStamp = +new Date()\n      this.getBase64(img + '?' + timeStamp)\n    }\n  }\n\n\n  change = (index) => {\n    this.setState({\n      cutIndex: index,\n    })\n    this.handleFetchInfo(index)\n  }\n\n\n  render() {\n    const {tab, cutIndex, myRankList, codeSrc, imgUrl, avatar_file} = this.state\n    return (\n      <div className={'score-content'}>\n        <HeaderBar\n          title='成绩报告'\n          arrow={true}\n          home={false}\n        />\n        <div className={'score-report'}>\n          <ul className={'tab-list'}>\n            {\n              tab.map((item, index) => {\n                return (\n                  <li key={index} className={cutIndex === index ? 'active' : ''}\n                      onClick={() => this.change(index)}>{item}</li>\n                )\n              })\n            }\n          </ul>\n\n          <div className=\"score-list-box\">\n\n            <div className={'score-list'} style={{backgroundImage: `url(${scoreReportBg})`}}>\n              <div className=\"title\">\n                <img src={scoreIconL} alt=\"\"/>\n                成绩报告\n                <img src={scoreIconR} alt=\"\"/>\n              </div>\n\n              <table border=\"0\" cellSpacing=\"0\" cellPadding=\"0\">\n                <thead>\n                <tr>\n                  <td>分数</td>\n                  <td>用时</td>\n                  <td>{cutIndex === 0 && '最终'}排名</td>\n                </tr>\n                </thead>\n                <tbody>\n                {\n                  myRankList.r_id !== 0 &&\n                  <tr className={'has'}>\n                    <td>{myRankList.score}分</td>\n                    <td>{myRankList.cost_time}</td>\n                    <td className={'rank'}>{myRankList.rank}</td>\n                  </tr>\n                }\n                {\n                  myRankList.r_id == 0 &&\n                  <tr>\n                    <td>-</td>\n                    <td>-</td>\n                    <td>-</td>\n                  </tr>\n                }\n\n                </tbody>\n              </table>\n\n              <div className=\"comment text-overflow-4\">\n                <img className={'avatar_file'} src={avatar_file} alt=\"\"/>\n                <span dangerouslySetInnerHTML={{__html: myRankList.title}}></span>\n              </div>\n\n              <div className=\"code\">\n                <img src={codeSrc} alt=\"\"/>\n                <p>AI水平测试</p>\n              </div>\n            </div>\n\n\n            <img className={'imgUrl'} src={imgUrl} alt=\"\"/>\n          </div>\n\n          <div className=\"tip\">长按图片分享给好友,或保存后分享到朋友圈</div>\n\n        </div>\n      </div>\n    )\n  }\n}\n\n\nexport default scoreReport","import React, { Component } from 'react';\nimport './index.scss'\nimport { Switch, Route } from 'react-router-dom'\nimport Scores from './scores'\nimport Exam from './exam'\nimport SubmitAnswer from \"@components/ai-test/submit-answer\"\nimport Analysis from \"@components/ai-test/analysis\"\nimport Assist from \"@components/ai-test/assist\"\nimport Help from '@components/ai-test/share'\nimport Report from '@components/ai-test/report'\n\nclass AiTest extends Component {\n\n  render() {\n    const {match} = this.props\n    return (\n      <Switch>\n        <Route path={`${match.path}/exam`} render={props => <Exam {...props}/>}/>\n        <Route path={`${match.path}/submit`} render={props => <SubmitAnswer {...props}/>}/>\n        <Route path={`${match.path}/analysis/:recordId`} render={props => <Analysis {...props}/>}/>\n        <Route path={`${match.path}/assist/:assistCode`} render={props => <Assist {...props}/>}/>\n        <Route path={`${match.path}/share`} render={props => <Help {...props}/>}/>\n        <Route path={`${match.path}/report`} render={props => <Report {...props}/>}/>\n        <Route render={(props) => <Scores {...props}/>}/>\n      </Switch>\n    );\n  }\n}\n\nexport default AiTest;"],"sourceRoot":""}