{"version":3,"sources":["components/intelligent-recommend/index.js"],"names":["messageType","SYSTEM_MESSAGE","USER_MESSAGE","OPTIONS","IntelligentRecommend","state","showAnalyzing","systemAvatar","options","data","messageId","next","oid","rid","handleSelect","item","_this","props","addMessage","type","content","describe","id","setState","Object","_Users_zhanghaozhe_server_mr_julyedu_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_2__","getMessage","_this$state$next","http","get","concat","API","home","then","res","_res$data","code","msg","answer_type","setTimeout","addResult","Math","random","message","contents","find","is_question","optionsData","filter","antd_mobile_lib_toast__WEBPACK_IMPORTED_MODULE_1___default","a","fail","consult","e","preventDefault","target","post","intelligentRecommend","result","finally","window","location","href","getAttribute","displayPrice","price","decimal","toString","split","parseInt","goBack","browser","isWeixin","getParam","history","go","records","length","from","pathname","replace","search","origin","_this$props","this","reselect","isEmpty","_this2","_this$state","_this$props2","user","_this$props2$intellig","processing","recommends","react__WEBPACK_IMPORTED_MODULE_8___default","createElement","className","onClick","map","index","Fragment","key","Message","text","identity","avatar","Options","dangerouslySetInnerHTML","__html","skill_title","skill_desc","project_title","project_desc","salary_title","salary_desc","courses","course_id","nodeName","toLowerCase","push","v_course_id","src","img_url","alt","recmd_title","recmd_desc","c_type","price_sale","price_original","react_router_dom__WEBPACK_IMPORTED_MODULE_10__","to","second_btn","Component","_ref","_ref2","connect","_ref3","WithFullSize"],"mappings":"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","file":"mrstatic/js/intelligent-recommend.8997ef18.chunk.js","sourcesContent":["import React, { Component } from 'react';\nimport './index.scss'\nimport { Link } from \"react-router-dom\";\nimport { browser, getParam, http } from \"@/utils\"\nimport { Toast } from \"antd-mobile\";\nimport { connect } from \"react-redux\";\nimport { WithFullSize } from \"@/HOCs\"\nimport { isEmpty } from \"lodash\";\nimport { addMessage, addResult, reselect } from './store'\n\nconst messageType = {\n SYSTEM_MESSAGE: 1,\n USER_MESSAGE: 2,\n OPTIONS: 3,\n}\n\n\nclass IntelligentRecommend extends Component {\n\n state = {\n showAnalyzing: false,\n systemAvatar: 'https://julyedu-img-public.oss-cn-beijing.aliyuncs.com/Public/Image/home/avatar_20191104.png',\n options: {\n data: [],\n messageId: 0,\n },\n next: {\n oid: 0,\n rid: 0,\n },\n }\n\n componentDidMount() {\n const {intelligentRecommend, reselect} = this.props\n if (isEmpty(intelligentRecommend.result)) {\n reselect()\n this.getMessage()\n }\n }\n\n\n handleSelect = (item) => {\n this.props.addMessage({type: messageType.USER_MESSAGE, content: item.describe, id: item.id})\n this.setState(state => ({\n options: {data: [], messageId: 0},\n next: {\n ...state.next,\n oid: item.id,\n },\n }), () => {\n this.getMessage()\n })\n }\n\n getMessage = () => {\n const {oid, rid} = this.state.next\n http.get(`${API.home}/sys/icc/communicate/${oid}/${rid}`)\n .then(res => {\n const {data, code, msg} = res.data\n if (code === 200) {\n if (data.answer_type === 1) {\n this.setState({\n showAnalyzing: true,\n }, () => {\n setTimeout(() => {\n this.setState({showAnalyzing: false})\n this.props.addResult({...data})\n }, Math.random() * 500 + 1000)\n })\n } else {\n const message = {\n type: messageType.SYSTEM_MESSAGE,\n content: data.contents.find(item => item.is_question),\n }\n const optionsData = data.contents.filter(item => !item.is_question)\n this.props.addMessage(message)\n this.setState({\n options: {\n messageId: message.content.id,\n data: optionsData,\n },\n next: {rid: data.rid},\n })\n }\n } else {\n Toast.fail(msg)\n }\n })\n }\n\n consult = (e) => {\n e.preventDefault()\n let target = e.target\n http.post(`${API.home}/sys/icc/consult`, {\n rid: this.props.intelligentRecommend.result.rid,\n }).finally(() => {\n window.location.href = target.getAttribute('href')\n })\n }\n\n displayPrice = (price) => {\n let _price = price.toString()\n let decimal = _price.split('.')\n return parseInt(decimal[1]) === 0 ? decimal[0] : price\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\n render() {\n const {showAnalyzing, systemAvatar, options} = this.state\n const {user, intelligentRecommend: {result, processing}, reselect} = this.props\n const recommends = result.contents\n return (\n <div id={'intelligent-recommend'}>\n <div className=\"head\">\n <div>\n <div className=\"go-back\">\n <i className='iconfont iconiconfront-68' onClick={this.goBack}></i>\n </div>\n <div className={'title'}>七月在线智能选课</div>\n </div>\n <button onClick={() => {\n this.setState({\n next: {oid: 0, rid: 0},\n options: {messageId: 0, data: []},\n }, () => {\n reselect()\n this.getMessage()\n });\n }}>重新选课\n </button>\n </div>\n <div className=\"dialog-box\">\n {\n !!processing.length && processing.map((item, index) => {\n switch (item.type) {\n case messageType.SYSTEM_MESSAGE:\n return (\n <React.Fragment key={index}>\n <Message text={item.content.describe} identity={'system'} avatar={systemAvatar}/>\n {\n options.messageId === item.content.id &&\n <Options options={options.data} handleSelect={this.handleSelect}/>\n }\n </React.Fragment>\n )\n case messageType.USER_MESSAGE:\n return <Message text={item.content} identity={'user'} avatar={user.data.avatar} key={index + 2}/>\n }\n })\n }\n {\n showAnalyzing && <div className=\"analyzing\">努力分析中...</div>\n }\n </div>\n\n\n {\n !isEmpty(recommends) && <div className=\"result\">\n <div className=\"title\">根据您目前的情况,推荐结果如下</div>\n <div className=\"obtained\">\n <div className={'subtitle'} dangerouslySetInnerHTML={{__html: recommends.skill_title}}></div>\n <div className={'skill'} dangerouslySetInnerHTML={{__html: recommends.skill_desc}}></div>\n </div>\n <div className=\"obtained\">\n <div className={'subtitle'} dangerouslySetInnerHTML={{__html: recommends.project_title}}></div>\n <div className={'skill project'} dangerouslySetInnerHTML={{__html: recommends.project_desc}}></div>\n {/*<ul>\n <li className={'skill project'}>·技能描述、技能描述</li>\n <li className={'skill project'}>·工作及项目描述、工作及项目描述、项目描述</li>\n </ul>*/}\n </div>\n <div className={'salary-section'}>\n <div className={'subtitle'} dangerouslySetInnerHTML={{__html: recommends.salary_title}}></div>\n <div className={'salary'} dangerouslySetInnerHTML={{__html: recommends.salary_desc}}></div>\n </div>\n <div className=\"recommends\">\n <div>想获得以上技能,向您推荐:</div>\n <ul className={'courses'}>\n {\n !!recommends.courses.length && recommends.courses.map(item => {\n return <li className={'course'} key={item.course_id} onClick={(e) => {\n if (e.target.nodeName.toLowerCase() !== 'a') {\n if (item.course_id) {\n this.props.history.push(`/detail?id=${item.course_id}`)\n } else {\n this.props.history.push(`/play?id=${item.v_course_id}`)\n }\n }\n }}>\n <div className=\"cover\">\n <img src={item.img_url}\n alt=\"\"/>\n </div>\n <div className=\"info\">\n <div className={'title'}>{item.recmd_title}</div>\n <div className={'des'}>{item.recmd_desc}</div>\n <div className=\"bar\">\n {\n item.c_type === 1 && <React.Fragment key={item.course_id}>\n <div className=\"prices\">\n <span className={'price'}>¥{this.displayPrice(item.price_sale)}</span>\n <span className={'old-price'}>¥{this.displayPrice(item.price_original)}</span>\n </div>\n <Link className={'register'} to={`/detail?id=${item.course_id}`}>{item.second_btn}</Link>\n </React.Fragment>\n }\n {\n item.c_type === 2 && <React.Fragment key={item.course_id}>\n <a href=\"http://q.url.cn/s/Vbkup6m?_type=wpa\" className={'contact'}\n onClick={this.consult}>{item.consult}</a>\n <Link className={'register'} to={`/detail?id=${item.course_id}`}>{item.second_btn}</Link>\n </React.Fragment>\n }\n {\n item.c_type === 0 &&\n <Link className={'study'} to={`/play?id=${item.v_course_id}`}>{item.second_btn}</Link>\n }\n </div>\n </div>\n </li>\n })\n }\n </ul>\n </div>\n </div>\n }\n </div>\n );\n }\n\n}\n\nfunction Message({text, avatar, identity}) {\n return <div className={`message clearfix ${identity}`}>\n <div className=\"avatar\">\n <img src={avatar} alt=\"\"/>\n </div>\n <div className={`text`}>{text}</div>\n </div>\n}\n\nfunction Options({options, handleSelect}) {\n return <ul className={'options'}>\n {\n !!options.length && options.map(item => {\n return <li onClick={() => handleSelect(item)} key={item.id}>\n <button>{item.describe}</button>\n </li>\n })\n }\n </ul>\n}\n\n\nexport default connect(\n ({user, intelligentRecommend}) => ({user, intelligentRecommend}),\n {addMessage, addResult, reselect},\n)(WithFullSize(IntelligentRecommend));"],"sourceRoot":""}