{"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","get","pageState","availableTestNum","userScore","userAddress","name","phone","address","isShowUserAddress","entryButtonInRule","handleChange","e","isNeverSHow","target","checked","setState","set","startTest","props","history","push","getInitialData","http","API","home","then","res","data","code","msg","fail","getRankList","tab","type","getUserScores","getUserAddress","inputText","key","value","submitForm","preventDefault","Object","values","every","item","post","success","info","this","user","hasError","prevProps","prevState","_rankList","Array","isArray","slice","className","src","h5_banner","alt","join_num","href","onClick","tabs","tabBarUnderlineStyle","display","onChange","i","map","index","score","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","dangerouslySetInnerHTML","html","id","htmlFor","connect","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","clearInterval","setAll","clearAll","listen","matchPath","path","isExact","document","addEventListener","visibilityState","toString","padStart","filter","SubmitAnswer","analysis","results","submit","JSON","stringify","getAnalysis","remove","arrow","wrong","keys","Recommends","recommends","course_id","image_name","Analysis","userSelect","rightAnswer","userUnselect","match","params","getAnswerInfo","userAnswerIndex","style","height","backgroundColor","commend_course","Assist","result","userAnswer","getData","encodeURIComponent","assistCode","question_id","answer_id","correct_answer","setAnswer","rightAnswerId","end","status","desc","aiTestHelp","share","wxShare","dec","link","imgUrl","isshowYindao","copyToSuccess","handleFetchInfo","total_num","getAssist","text","onCopy","scoreReport","myRankList","avatar_file","getBase64","getCanvas","getBase64Image","img","canvas","createElement","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","_this","canvas2","_canvas","getElementsByClassName","w","parseInt","getComputedStyle","scale","devicePixelRatio","html2canvas","qrCodeLink","Promise","resolve","QRCode","err","url","backgroundImage","scoreReportBg","scoreIconL","scoreIconR","border","cellSpacing","cellPadding","AiTest","render"],"mappings":"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","file":"mrstaticjs/ai-test.2919506a.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,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\"","/* eslint-disable jsx-a11y/anchor-is-valid, no-script-url */\nimport React, { Component } from \"react\"\nimport \"./index.scss\"\nimport { Tabs, Toast } from \"antd-mobile\"\nimport { http } from \"src/utils\"\nimport storage from \"store2\"\nimport { html } from \"src/utils\"\nimport { compareDesc } from \"date-fns\"\nimport { Link } from \"react-router-dom\"\nimport { connect } from \"react-redux\"\n\nclass Scores extends Component {\n store = storage.namespace(\"aiTestEntry\")\n\n state = {\n selfTabs: [\n { title: \"当前成绩\" },\n { title: \"今日最佳\" },\n { title: \"本月最佳\" },\n ],\n rankList: [],\n rankListTabs: [{ title: \"日榜\" }, { title: \"总榜\" }],\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 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`).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}`).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`).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`).then((res) => {\n const { code, 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 ...{\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).then((res) => {\n const { code, msg } = 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)\n ? isExpandRankList\n ? rankList\n : rankList.slice(0, 10)\n : []\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\n href=\"javascript:void(0);\"\n onClick={() => {\n this.setState({\n isShowRule: true,\n })\n }}\n >\n 规则\n </a>\n </div>\n {\n <div className=\"score-list\">\n <Tabs\n tabs={selfTabs}\n tabBarUnderlineStyle={{ display: \"none\" }}\n onChange={(tab, i) => {\n this.getUserScores(i)\n }}\n >\n {selfTabs.map((tab, index) => {\n return (\n <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 {user.hasError ? (\n <tr>\n <td>--</td>\n <td>--</td>\n <td>--</td>\n </tr>\n ) : (\n <tr>\n {userScore.score === \"-\" ? (\n <td>'-'</td>\n ) : (\n <td>\n {userScore.score}{\" \"}\n <Link\n to={`/ai-test/analysis/${userScore.r_id}`}\n >\n 解析\n </Link>\n </td>\n )}\n <td>{userScore.cost_time}</td>\n {userScore.rank === \"-\" ? (\n <td>'-'</td>\n ) : (\n <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>测试排行榜</div>\n <div>\n <span>仅显示前50名</span>\n <a\n href=\"javascript:void(0);\"\n onClick={() => {\n if (user.hasError) {\n history.push(\"/passport\")\n } else {\n this.setState({\n isShowUserAddress: true,\n })\n }\n }}\n >\n 收货地址\n </a>\n </div>\n </div>\n <div className=\"list\">\n <Tabs\n tabs={rankListTabs}\n tabBarUnderlineStyle={{ display: \"none\" }}\n onChange={this.getRankList}\n >\n {rankListTabs.map((item, index) => {\n return (\n <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 {!!_rankList.length &&\n _rankList.map((item, index) => {\n return (\n <tr key={index}>\n <td>\n {index < 3 ? (\n <img src={icons[index]} alt=\"\" />\n ) : (\n index + 1\n )}\n </td>\n <td>\n <img\n src={item.avatar}\n className={\"avatar\"}\n alt=\"\"\n />\n {item.user_name}\n </td>\n <td>\n <span className={\"score\"}>{item.score}</span>/\n <span>{item.cost_time}</span>\n </td>\n <td>\n <div>\n {item.prize_url ? (\n <a href={`${item.prize_url}#goback`}>\n {item.prize}\n </a>\n ) : (\n item.prize\n )}\n </div>\n </td>\n </tr>\n )\n })}\n </tbody>\n </table>\n )\n })}\n </Tabs>\n {rankList.length > 10 &&\n (!isExpandRankList ? (\n <div\n className=\"expand\"\n onClick={() => {\n this.setState({\n isExpandRankList: true,\n })\n }}\n >\n <span>\n 展开更多\n <i className={\"iconfont iconiconfront-69\"}></i>\n </span>\n </div>\n ) : (\n <div\n className=\"expand\"\n onClick={() => {\n this.setState({\n isExpandRankList: false,\n })\n }}\n >\n <span>\n 收起\n <i className={\"iconfont iconiconfront-71\"}></i>\n </span>\n </div>\n ))}\n </div>\n </div>\n <div className=\"qrcode\">\n <img\n src=\"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/ai-test/qr.png\"\n alt=\"\"\n />\n <div>得100分,请长按/扫码,免费领课!</div>\n </div>\n <div className=\"btn\">\n {compareDesc(new Date(), pageState.stop_time * 1000) > 0 ? (\n pageState.daily_test_num > 0 ? (\n <button\n className={\"available\"}\n onClick={() => {\n isNeverShow\n ? this.startTest()\n : this.setState({\n entryButtonInRule: true,\n isShowRule: true,\n })\n }}\n >\n 开始测试<span>(今日可测试{pageState.daily_test_num}次)</span>\n </button>\n ) : (\n <Link to={`/ai-test/share?shareCode=${pageState.code}`}>\n <button className={\"get-chance\"}>\n 获取测试机会<span>(今日可测试0次)</span>\n </button>\n </Link>\n )\n ) : (\n <button className={\"unavailable\"}>活动已结束</button>\n )}\n </div>\n {isShowRule && (\n <Rule\n rule={pageState.rule}\n startTest={this.startTest}\n neverShow={this.handleChange}\n isNeverShow={isNeverShow}\n close={() => {\n this.setState({\n isShowRule: false,\n entryButtonInRule: false,\n })\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\">\n 获奖用户(以最终榜单为准)请及时填写收货信息\n </div>\n <form action=\"\" onSubmit={this.submitForm}>\n <input\n type=\"text\"\n placeholder={\"收件人\"}\n name={\"name\"}\n onChange={this.inputText}\n value={userAddress.name}\n />\n <input\n type=\"tel\"\n placeholder={\"联系方式\"}\n name={\"phone\"}\n onChange={this.inputText}\n value={userAddress.phone}\n />\n <input\n type=\"text\"\n placeholder={\"收货地址\"}\n name={\"address\"}\n onChange={this.inputText}\n value={userAddress.address}\n />\n <button\n type={\"submit\"}\n className={\n Object.values(userAddress).every((value) => !!value)\n ? \"available\"\n : \"\"\n }\n >\n 提交\n </button>\n </form>\n <i\n className={\"close iconfont iconiconfront-2\"}\n onClick={() => {\n this.setState({\n isShowUserAddress: false,\n })\n }}\n />\n </div>\n </div>\n )}\n </div>\n )\n }\n}\n\nfunction Rule({\n neverShow,\n isNeverShow,\n rule,\n close,\n startTest,\n entryButtonInRule,\n}) {\n return (\n <div className=\"rule-mask\">\n <div className=\"rule\">\n <div>测试规则</div>\n <div dangerouslySetInnerHTML={html(rule)}></div>\n {entryButtonInRule && (\n <>\n <div className=\"option\">\n <input\n id={\"never-show\"}\n type=\"checkbox\"\n onChange={neverShow}\n checked={isNeverShow}\n />\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(({ user }) => ({ user }), null)(Scores)\n","import React, { Component } from \"react\"\nimport \"./index.scss\"\nimport classnames from \"classnames\"\n\nclass Question extends Component {\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>} \n <span dangerouslySetInnerHTML={{ __html: question.ques }}></span>\n </div>\n }\n <ul className={\"options\"}>\n {!!question.options.length &&\n question.options.map((item, index) => {\n return (\n <li\n 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 >\n <div className={\"letter\"}>\n {String.fromCharCode(65 + index)}\n </div>\n <div>{item.des}</div>\n </li>\n )\n })}\n </ul>\n </div>\n )\n }\n}\n\nexport default Question\n","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 {!!questions.length &&\n questions.map((item, index) => {\n const userSelectIndex = item.options.findIndex(\n (item) => item.user_select\n )\n const rightAnswerIndex = item.options.findIndex(\n (item) => item.is_ans\n )\n return (\n <li\n key={index}\n onClick={handleClick.bind(this, index)}\n className={classnames({\n active: answer && answer[item.id],\n correct: isAnalysis && userSelectIndex === rightAnswerIndex,\n error:\n isAnalysis &&\n userSelectIndex >= 0 &&\n userSelectIndex !== rightAnswerIndex,\n unselect: isAnalysis && userSelectIndex < 0,\n })}\n >\n {index + 1}\n </li>\n )\n })}\n </ul>\n </div>\n )\n}\n\nexport default Navigation\n","import React, { Component } from \"react\"\nimport \"./index.scss\"\nimport Question from \"../common/question\"\nimport { browser, getParam, http } from \"src/utils\"\nimport { Toast } from \"antd-mobile\"\nimport storage from \"store2\"\nimport Navigation from \"src/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 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:\n state.elapsed +\n (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 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 window.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`).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(\n (state) => {\n const answer = state.answer\n const activeQuestion = state.activeQuestion + 1\n setTimeout(() => {\n this.setState({\n activeQuestion:\n activeQuestion >= state.questions.length\n ? state.questions.length - 1\n : activeQuestion,\n })\n }, 200)\n answer[question.id] = optionId\n return {\n answer,\n }\n },\n () => {\n const { questions, activeQuestion } = this.state\n if (activeQuestion === questions.length - 1) {\n this.storeData()\n }\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 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 {!!time.d && <>{time.d}天</>}\n {!!time.h && <>{time.h && time.h.toString().padStart(2, \"0\")}:</>}\n {time.m.toString().padStart(2, \"0\")}:\n {time.s.toString().padStart(2, \"0\")}\n </span>\n </div>\n <div className=\"count\" onClick={this.storeData}>\n {Object.values(answer).filter((item) => item).length}/\n {questions.length}\n </div>\n </header>\n <div className=\"banner\">\n <img\n src=\"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/ai-test/m/scores/exam-banner.png\"\n alt=\"\"\n />\n </div>\n <div className=\"question-section\">\n {!!questions.length && (\n <Question\n activeIndex={activeQuestion}\n question={questions[activeQuestion]}\n selectAnswer={this.selectAnswer}\n answer={answer}\n ></Question>\n )}\n </div>\n <Navigation\n questions={questions}\n answer={answer}\n handleClick={(index) => {\n this.setState({\n activeQuestion: index,\n })\n }}\n />\n </div>\n )\n }\n}\n\nexport default connect(({ user }) => ({ user }), null)(Exam)\n","import React, { Component } from \"react\"\nimport \"./index.scss\"\nimport { HeaderBar } from \"src/common/index\"\nimport storage from \"store2\"\nimport { Toast } from \"antd-mobile\"\nimport { http } from \"src/utils\"\nimport classnames from \"classnames\"\nimport { Link } from \"react-router-dom\"\nimport { isEmpty } from \"lodash\"\n\nclass SubmitAnswer extends Component {\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 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 submit = () => {\n const { answer, recordId } = this.state\n http\n .post(`${API.home}/sys/submit_answer`, {\n answer: JSON.stringify(answer),\n cost_time: this.state.elapsed * 10,\n record_id: recordId,\n })\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\n .post(`${API.home}/sys/get_analysis`, {\n record_id: this.state.recordId,\n })\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 用时:\n <span>\n {!!time.d && <>{time.d}天</>}\n {!!time.h && <>{time.h && time.h.toString().padStart(2, \"0\")}:</>}\n {time.m.toString().padStart(2, \"0\")}:\n {time.s.toString().padStart(2, \"0\")}\n </span>\n </div>\n {analysis.length ? (\n <>\n <ul className={\"answers\"}>\n {analysis.map((item, index) => {\n const userSelectIndex = item.options.findIndex(\n (item) => item.user_select\n )\n const rightAnswerIndex = item.options.findIndex(\n (item) => item.is_ans\n )\n return (\n <li\n key={item.id}\n className={classnames({\n correct: userSelectIndex === rightAnswerIndex,\n wrong:\n userSelectIndex >= 0 &&\n userSelectIndex !== rightAnswerIndex,\n unselect: userSelectIndex < 0,\n })}\n >\n {index + 1}\n </li>\n )\n })}\n </ul>\n {!!analysis.length && (\n <div className={\"score\"}>总分:{analysis[0].score}分</div>\n )}\n <Link to={`/ai-test/analysis/${recordId}`}>\n <button>查看解析</button>\n </Link>\n </>\n ) : (\n <>\n <ul className={\"answers\"}>\n {answer &&\n !!Object.keys(answer).length &&\n Object.keys(answer).map((item, index) => {\n return (\n <li key={item} className={answer[item] ? \"selected\" : \"\"}>\n {index + 1}\n </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\nclass Recommends extends Component {\n render() {\n const { recommends } = this.props\n return (\n <div className=\"recommends\">\n <div>相关课程</div>\n <ul>\n {!!recommends.length &&\n recommends.map((item) => {\n return (\n <li key={item.course_id}>\n <Link to={`/detail?id=${item.course_id}`}>\n <img src={item.image_name} alt=\"\" />\n </Link>\n </li>\n )\n })}\n </ul>\n </div>\n )\n }\n}\n\nexport default Recommends\n","import React, { Component } from \"react\"\nimport \"./index.scss\"\nimport { HeaderBar } from \"src/common/index\"\nimport Question from \"src/components/ai-test/common/question\"\nimport Navigation from \"src/components/ai-test/common/navigation\"\nimport { html, http } from \"src/utils\"\nimport { Toast } from \"antd-mobile\"\nimport Recommends from \"src/components/ai-test/common/recommends\"\n\nclass Analysis extends Component {\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\n .post(`${API.home}/sys/get_analysis`, {\n record_id: this.props.match.params.recordId,\n })\n .then((res) => {\n const { code, msg, data } = res.data\n if (code === 200) {\n this.setState(\n {\n questions: data,\n },\n () => {\n this.getAnswerInfo()\n }\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(\n (item) => item.user_select\n )\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 {\n questions,\n activeIndex,\n userSelect,\n rightAnswer,\n userUnselect,\n } = this.state\n return (\n <div className={\"analysis-container\"}>\n <HeaderBar title={\"AI水平测试\"} arrow={true} />\n {!!questions.length && (\n <Question\n activeIndex={activeIndex}\n question={questions[activeIndex]}\n />\n )}\n <div style={{ height: \"8px\", backgroundColor: \"#f5f5f5\" }}></div>\n <div className=\"analysis\">\n {userUnselect ? (\n <div className={\"info\"}>您未作答</div>\n ) : (\n <div className=\"info\">\n 您选择的是{userSelect},正确答案是{rightAnswer} 回答\n {userSelect === rightAnswer ? \"正确\" : \"错误\"}\n </div>\n )}\n <div className=\"content\">\n <div className=\"head\">\n <i className=\"icon\"></i>\n <span>解析</span>\n </div>\n {!!questions.length && (\n <div\n className=\"analysis-content\"\n dangerouslySetInnerHTML={html(questions[activeIndex].analysis)}\n ></div>\n )}\n </div>\n </div>\n {!!questions.length &&\n questions[activeIndex] &&\n questions[activeIndex].commend_course &&\n !!questions[activeIndex].commend_course.length && (\n <Recommends recommends={questions[activeIndex].commend_course} />\n )}\n <Navigation\n questions={questions}\n isAnalysis={true}\n handleClick={(index) => {\n this.setState({\n activeIndex: index,\n })\n }}\n />\n </div>\n )\n }\n}\n\nexport default Analysis\n","import React, { Component } from \"react\"\nimport \"./index.scss\"\nimport { HeaderBar } from \"src/common/index\"\nimport Question from \"src/components/ai-test/common/question\"\nimport { html, http, browser } from \"src/utils\"\nimport { Toast } from \"antd-mobile\"\nimport { Link } from \"react-router-dom\"\nimport { connect } from \"react-redux\"\nimport Recommends from \"src/components/ai-test/common/recommends\"\nimport classnames from \"classnames\"\nimport storage from \"store2\"\n\nclass Assist extends Component {\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`).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(\n `${window.location.origin}${window.location.pathname}?aa=bb`\n )}&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\n .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 })\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 = \"\",\n userAnswer = \"\"\n const question = {\n ...state.question,\n ...{\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 {question && (\n <Question\n question={question}\n category={\"机器学习\"}\n answer={answer}\n selectAnswer={!result && this.selectAnswer}\n />\n )}\n <div style={{ height: \"8px\", backgroundColor: \"#f5f5f5\" }}></div>\n {result && (\n <div className=\"content\">\n <div className={\"info\"}>\n 您的选择是{userAnswer},正确答案是{rightAnswer} 回答\n {userAnswer === rightAnswer ? \"正确\" : \"错误\"}\n </div>\n <div className=\"head\">\n <i className=\"icon\"></i>\n <span>解析</span>\n </div>\n <div\n className=\"analysis-content\"\n dangerouslySetInnerHTML={html(result.analysis)}\n ></div>\n </div>\n )}\n {result && question.commend_course && question.commend_course.length && (\n <>\n <Recommends recommends={question.commend_course} />\n </>\n )}\n\n <div className=\"btns\">\n {result && (\n <div\n className={classnames([\n \"status\",\n {\n end: result.status === 6,\n success: result.status === 1,\n error:\n result.status === 2 ||\n result.status === 3 ||\n result.status === 4 ||\n result.status === 5,\n },\n ])}\n >\n {result.desc}\n </div>\n )}\n {!result && (\n <button className={\"submit\"} onClick={this.submit}>\n 提交\n </button>\n )}\n {result &&\n (result.status === 6 ? (\n <Link to={\"/\"} className={\"home\"}>\n 返回首页\n </Link>\n ) : (\n <Link to={\"/ai-test/scores\"} className={\"test\"}>\n 我也要测试\n </Link>\n ))}\n </div>\n </div>\n )\n }\n}\n\nexport default connect(({ user }) => ({ user }), null)(Assist)\n","import React, { Component } from \"react\"\nimport { CopyToClipboard } from \"react-copy-to-clipboard\"\nimport { browser, http, wxShare, getParam } from \"src/utils\"\nimport \"./index.scss\"\nimport { Toast } from \"antd-mobile\"\n\nclass aiTestHelp extends Component {\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:\n \"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 } = 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 } = res.data\n if (code === 200) {\n this.setState({\n dec: data.ques,\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\n src=\"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/ai-test/m/text2.png\"\n alt=\"\"\n />\n <span>{total_num}</span>\n <img\n src=\"https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/ai-test/m/text1.png\"\n alt=\"\"\n />\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 {!browser.isWeixin && (\n <CopyToClipboard\n text={`${API.m}/ai-test/assist/${getParam(\"shareCode\")}`}\n onCopy={this.copyToSuccess}\n >\n <div className={\"share-btn\"}>邀请好友助力</div>\n </CopyToClipboard>\n )}\n {browser.isWeixin && (\n <div className={\"share-btn\"} onClick={this.share}>\n 邀请好友助力\n </div>\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\nexport default aiTestHelp\n","/* eslint-disable eqeqeq */\nimport React, { Component } from \"react\"\nimport { HeaderBar } from \"src/common\"\nimport { getParam, http } from \"src/utils\"\nimport \"./index.scss\"\nimport QRCode from \"qrcode\"\nimport html2canvas from \"html2canvas\"\nimport scoreIconL from \"src/assets/image/score_icon-l.png\"\nimport scoreIconR from \"src/assets/image/score_icon-r.png\"\nimport scoreReportBg from \"src/assets/image/scoreReport_bg.png\"\nimport { connect } from \"react-redux\"\n\n@connect((state) => ({\n user: state.user,\n}))\nclass scoreReport extends Component {\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 // 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], {\n canvas: canvas2,\n }).then(function (canvas) {\n //document.body.appendChild(canvas);\n\n let imgUrl = canvas\n .toDataURL(\"image/png\")\n .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\n .get(\n `${API.home}/sys/at/user_score/${index}/${\n getParam(\"uid\") ? getParam(\"uid\") : 0\n }`\n )\n .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 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 change = (index) => {\n this.setState({\n cutIndex: index,\n })\n this.handleFetchInfo(index)\n }\n\n render() {\n const {\n tab,\n cutIndex,\n myRankList,\n codeSrc,\n imgUrl,\n avatar_file,\n } = this.state\n return (\n <div className={\"score-content\"}>\n <HeaderBar title=\"成绩报告\" arrow={true} home={false} />\n <div className={\"score-report\"}>\n <ul className={\"tab-list\"}>\n {tab.map((item, index) => {\n return (\n <li\n key={index}\n className={cutIndex === index ? \"active\" : \"\"}\n onClick={() => this.change(index)}\n >\n {item}\n </li>\n )\n })}\n </ul>\n\n <div className=\"score-list-box\">\n <div\n className={\"score-list\"}\n style={{ backgroundImage: `url(${scoreReportBg})` }}\n >\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 {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 {myRankList.r_id == 0 && (\n <tr>\n <td>-</td>\n <td>-</td>\n <td>-</td>\n </tr>\n )}\n </tbody>\n </table>\n\n <div className=\"comment text-overflow-4\">\n <img className={\"avatar_file\"} src={avatar_file} alt=\"\" />\n <span\n dangerouslySetInnerHTML={{ __html: myRankList.title }}\n ></span>\n </div>\n\n <div className=\"code\">\n <img src={codeSrc} alt=\"\" />\n <p>AI水平测试</p>\n </div>\n </div>\n\n <img className={\"imgUrl\"} src={imgUrl} alt=\"\" />\n </div>\n\n <div className=\"tip\">长按图片分享给好友,或保存后分享到朋友圈</div>\n </div>\n </div>\n )\n }\n}\n\nexport default scoreReport\n","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 \"src/components/ai-test/submit-answer\"\nimport Analysis from \"src/components/ai-test/analysis\"\nimport Assist from \"src/components/ai-test/assist\"\nimport Help from \"src/components/ai-test/share\"\nimport Report from \"src/components/ai-test/report\"\n\nclass AiTest extends Component {\n render() {\n const { match } = this.props\n return (\n <Switch>\n <Route\n path={`${match.path}/exam`}\n render={(props) => <Exam {...props} />}\n />\n <Route\n path={`${match.path}/submit`}\n render={(props) => <SubmitAnswer {...props} />}\n />\n <Route\n path={`${match.path}/analysis/:recordId`}\n render={(props) => <Analysis {...props} />}\n />\n <Route\n path={`${match.path}/assist/:assistCode`}\n render={(props) => <Assist {...props} />}\n />\n <Route\n path={`${match.path}/share`}\n render={(props) => <Help {...props} />}\n />\n <Route\n path={`${match.path}/report`}\n render={(props) => <Report {...props} />}\n />\n <Route render={(props) => <Scores {...props} />} />\n </Switch>\n )\n }\n}\n\nexport default AiTest\n"],"sourceRoot":""}