Merge branch 'dev_aliyun' of https://bdgit.educoder.net/Hjqreturn/educoder into dev_Ysl

dev_cs_new
杨树明 6 years ago
commit 409a2f31fb

@ -54,7 +54,7 @@ class ProjectPackages::SaveService < ApplicationService
raise Error, '验证码不能为空' if params[:code].blank? raise Error, '验证码不能为空' if params[:code].blank?
code = VerificationCode.where(phone: params[:contact_phone], code_type: 9, code: params[:code]).last code = VerificationCode.where(phone: params[:contact_phone], code_type: 9, code: params[:code]).last
raise Error, '无效的验证码' if code.blank? || !code.valid_code? raise Error, '无效的验证码' if code.blank? || !code.effective?
end end
def deal_attachments def deal_attachments

@ -10,33 +10,50 @@ class Clappr extends Component{
this.state={ this.state={
} }
} }
componentWillUnmount() {
this['player'+this.props.id] && this['player'+this.props.id].destroy()
}
componentDidMount() { componentDidMount() {
const source = this.props.source || "http://your.video/here.mp4" const source = this.props.source || "http://your.video/here.mp4"
const { id } = this.props const { id, type } = this.props
const _id = `#_player${id}` const _id = `#_player${id}`
if (window['Clappr']) { if (!window['Clappr'] && window['ClapprLoading'] == true) {
const player = new window.Clappr.Player({ setTimeout(() => {
this.componentDidMount()
}, 300)
return;
}
// && window['clappr-playback-rate-plugin']
if (window['Clappr'] ) {
// http://clappr.github.io/classes/Player.html#method_mute
this['player'+id] = new window.Clappr.Player({
source: source, parentId: _id, source: source, parentId: _id,
plugins: { height: type == 'mp3' ? 60 : 360,
'core': [window.Clappr.MediaControl, window.Clappr.Playback] hideMediaControl: type == 'mp3' ? false : true,
} // plugins: {
// 'core': [window.Clappr.MediaControl, window['clappr-playback-rate-plugin'].default]
// }
}); });
} else { } else {
window['ClapprLoading'] = true;
$.getScript( $.getScript(
`${_url_origin}/javascripts/media/clappr.min.js`, `${_url_origin}/javascripts/media/clappr.min.js`,
(data, textStatus, jqxhr) => { (data, textStatus, jqxhr) => {
window.clappr = window.Clappr window.clappr = window.Clappr
$.getScript( // $.getScript(
`${_url_origin}/javascripts/media/clappr-playback-rate-plugin.min.js`, // `${_url_origin}/javascripts/media/clappr-playback-rate-plugin.min.js`,
(data, textStatus, jqxhr) => { // (data, textStatus, jqxhr) => {
const player = new window.Clappr.Player({ this['player'+id] = new window.Clappr.Player({
source: source, parentId: _id, source: source, parentId: _id,
plugins: { height: type == 'mp3' ? 60 : 360,
'core': [window.Clappr.MediaControl, window['clappr-playback-rate-plugin'].default] hideMediaControl: type == 'mp3' ? false : true,
} // plugins: {
// 'core': [window.Clappr.MediaControl, window['clappr-playback-rate-plugin'].default]
// }
}); });
}) // })
}); });
@ -62,7 +79,7 @@ class Clappr extends Component{
render(){ render(){
let { source, id, className } = this.props; let { source, id, className, type } = this.props;
const _id = `_player${id}` const _id = `_player${id}`
return( return(
<React.Fragment> <React.Fragment>
@ -71,7 +88,7 @@ class Clappr extends Component{
margin-right: 16px; margin-right: 16px;
} }
`}</style> `}</style>
<div id={_id} className={className}></div> <div id={_id} className={className + ' ' + type}></div>
</React.Fragment> </React.Fragment>
) )
} }

@ -1,4 +1,6 @@
import React, { Component } from 'react'; import React, { Component } from 'react';
import ReactDOM from 'react-dom';
import { Redirect } from 'react-router'; import { Redirect } from 'react-router';
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
@ -29,7 +31,11 @@ class EvaluateSuccessEffectDisplay extends Component {
} }
} }
hidepicture = () => { hidepicture = () => {
window.$('#picture_display').hide(); const dom = document.getElementById('picture_display');
ReactDOM.unmountComponentAtNode(dom)
// window.$('#picture_display').hide();
window.$('.data-tip-right').hide()
} }
renderContent = () => { renderContent = () => {
// qrcode // qrcode
@ -107,11 +113,11 @@ class EvaluateSuccessEffectDisplay extends Component {
<EffectDisplayContent <EffectDisplayContent
typeName="音频" typeName="音频"
content1={ orignal_file[0] && orignal_file[0].file_url content1={ orignal_file[0] && orignal_file[0].file_url
? <Clappr source={orignal_file[0].file_url} id="1" className="clappr"></Clappr> : null } ? <Clappr source={orignal_file[0].file_url} id="1" className="clappr" type="mp3"></Clappr> : null }
content2={ user_file[0] && user_file[0].file_url content2={ user_file[0] && user_file[0].file_url
? <Clappr source={user_file[0].file_url} id="2" className="clappr"></Clappr> : null } ? <Clappr source={user_file[0].file_url} id="2" className="clappr" type="mp3"></Clappr> : null }
content3={ answer_file[0] && answer_file[0].file_url content3={ answer_file[0] && answer_file[0].file_url
? <Clappr source={answer_file[0].file_url} id="3" className="clappr"></Clappr> : null } ? <Clappr source={answer_file[0].file_url} id="3" className="clappr" type="mp3"></Clappr> : null }
></EffectDisplayContent> ></EffectDisplayContent>
) )
} else if (type == 'mp4') { } else if (type == 'mp4') {
@ -119,11 +125,11 @@ class EvaluateSuccessEffectDisplay extends Component {
<EffectDisplayContent <EffectDisplayContent
typeName="视频" typeName="视频"
content1={ orignal_file[0] && orignal_file[0].file_url content1={ orignal_file[0] && orignal_file[0].file_url
? <Clappr source={orignal_file[0].file_url} id="1" className="clappr"></Clappr> : null } ? <Clappr source={orignal_file[0].file_url} id="1" className="clappr" type="mp4"></Clappr> : null }
content2={ user_file[0] && user_file[0].file_url content2={ user_file[0] && user_file[0].file_url
? <Clappr source={user_file[0].file_url} id="2" className="clappr"></Clappr> : null } ? <Clappr source={user_file[0].file_url} id="2" className="clappr" type="mp4"></Clappr> : null }
content3={ answer_file[0] && answer_file[0].file_url content3={ answer_file[0] && answer_file[0].file_url
? <Clappr source={answer_file[0].file_url} id="3" className="clappr"></Clappr> : null } ? <Clappr source={answer_file[0].file_url} id="3" className="clappr" type="mp4"></Clappr> : null }
></EffectDisplayContent> ></EffectDisplayContent>
) )
} }

@ -294,7 +294,7 @@ class PackageConcent extends Component {
<div className=" item-head-blank"></div> <div className=" item-head-blank"></div>
<div className=" item-head-price"> <div className=" item-head-price mtf12">
{item.min_price===null?"":<span>{item.min_price}</span>} {item.min_price===null?"":<span>{item.min_price}</span>}
{item.max_price===null||item.min_price===null?"":<span>~</span>} {item.max_price===null||item.min_price===null?"":<span>~</span>}
{item.max_price===null?"":<span>{item.max_price}</span>} {item.max_price===null?"":<span>{item.max_price}</span>}

@ -313,7 +313,7 @@ class PackageIndexNEITaskDetails extends Component {
</span> </span>
</div> </div>
<div className=" item-head-price mtf7"> <div className=" item-head-price mt2">
{data&&data.min_price===null?"":<span><span className={"font-24"}>{data&&data.min_price}</span></span>} {data&&data.min_price===null?"":<span><span className={"font-24"}>{data&&data.min_price}</span></span>}
{data&&data.max_price===null||data&&data.min_price===null?"":<span>~</span>} {data&&data.max_price===null||data&&data.min_price===null?"":<span>~</span>}
{data&&data.max_price===null?"":<span><span className={"font-24"}>{data&&data.max_price}</span></span>} {data&&data.max_price===null?"":<span><span className={"font-24"}>{data&&data.max_price}</span></span>}

@ -362,4 +362,8 @@
*, *::before, *::after { *, *::before, *::after {
-webkit-box-sizing: border-box; -webkit-box-sizing: border-box;
box-sizing: border-box; box-sizing: border-box;
}
.mtf12{
margin-top: -12px;
} }

@ -176,7 +176,7 @@ class InfosPackage extends Component{
<div className="item-head-tags"> <div className="item-head-tags">
</div> </div>
<div className="item-head-blank"></div> <div className="item-head-blank"></div>
<div className="item-head-price"> <div className="item-head-price mtf15">
{item.min_price===null?"":<span>{item.min_price}</span>} {item.min_price===null?"":<span>{item.min_price}</span>}
{item.max_price===null||item.min_price===null?"":<span>~</span>} {item.max_price===null||item.min_price===null?"":<span>~</span>}
{item.max_price===null?"":<span>{item.max_price}</span>} {item.max_price===null?"":<span>{item.max_price}</span>}
@ -199,8 +199,9 @@ class InfosPackage extends Component{
<span className="item-group-icon"><i className="fa fa-user"></i></span> <span className="item-group-icon"><i className="fa fa-user"></i></span>
<span className="item-group-text">{item.bidding_users_count}人竞标</span> <span className="item-group-text">{item.bidding_users_count}人竞标</span>
</div> </div>
<div className="item-group item-other-publish-at"> <div className="item-group item-other-publish-at">
发布于{moment(item.published_at).format("YYYY-MM-DD HH:mm")} {item.published_at===null?<span className="item-group-text">更新于{moment(item.updated_at).format("YYYY-MM-DD HH:mm")} </span>:
<span className=" item-group-text">发布于{moment(item.published_at).format("YYYY-MM-DD HH:mm")} </span>}
</div> </div>
</div> </div>
</div> </div>

@ -1,93 +1,97 @@
.navInfo{ .navInfo{
border:none!important; border:none!important;
position: absolute; position: absolute;
width: 100%; width: 100%;
bottom: -8px; bottom: -8px;
} }
.navInfo li { .navInfo li {
float: left; float: left;
margin: 0px 40px; margin: 0px 40px;
padding:0px; padding:0px;
height: 45px; height: 45px;
line-height: 40px; line-height: 40px;
font-size: 16px; font-size: 16px;
position: relative; position: relative;
} }
.navInfo li.active::after{ .navInfo li.active::after{
position: absolute; position: absolute;
left: 0px; left: 0px;
height: 2px; height: 2px;
width: 100%; width: 100%;
content: ''; content: '';
bottom: 0px; bottom: 0px;
background: #05101A!important; background: #05101A!important;
color: #666!important; color: #666!important;
} }
.navInfo li,.navInfo li.ant-menu-item-active{ .navInfo li,.navInfo li.ant-menu-item-active{
border-bottom: none!important; border-bottom: none!important;
color: #666!important; color: #666!important;
} }
.navInfo li.ant-menu-item-selected{ .navInfo li.ant-menu-item-selected{
border-bottom: 2px solid #05101A!important; border-bottom: 2px solid #05101A!important;
color: #05101A!important; color: #05101A!important;
} }
.navInfo ul.ant-menu{float: left!important;border:none!important;} .navInfo ul.ant-menu{float: left!important;border:none!important;}
.substancenenew{ .substancenenew{
width: 236px; width: 236px;
height: 206px; height: 206px;
background: rgba(248,248,248,1); background: rgba(248,248,248,1);
border: 2px dotted rgba(225,225,225,1); border: 2px dotted rgba(225,225,225,1);
opacity: 1; opacity: 1;
border-radius: 4px; border-radius: 4px;
padding-top: 50px; padding-top: 50px;
position: inherit; position: inherit;
} }
.substancepad{ .substancepad{
padding: 20px 20px 0px 20px; padding: 20px 20px 0px 20px;
border-bottom: 1px solid transparent; border-bottom: 1px solid transparent;
} }
.substancefont{ .substancefont{
height:24px; height:24px;
font-size:18px; font-size:18px;
font-family:Microsoft YaHei; font-family:Microsoft YaHei;
font-weight:400; font-weight:400;
line-height:21px; line-height:21px;
color:rgba(153,153,153,1); color:rgba(153,153,153,1);
opacity:1; opacity:1;
margin-top: -8px; margin-top: -8px;
} }
.topten{ .topten{
width: 1px; width: 1px;
height: 100px; height: 100px;
border: 2px soild rgba(225,225,225,1); border: 2px soild rgba(225,225,225,1);
background: rgba(225,225,225,1); background: rgba(225,225,225,1);
border: 1px solid rgba(225,225,225,1); border: 1px solid rgba(225,225,225,1);
margin: 0 auto; margin: 0 auto;
} }
.leftten{ .leftten{
width: 100px; width: 100px;
height: 1px; height: 1px;
background: rgba(225,225,225,1); background: rgba(225,225,225,1);
border: 1px solid rgba(225,225,225,1); border: 1px solid rgba(225,225,225,1);
margin: 0px auto; margin: 0px auto;
position: absolute; position: absolute;
top: 120px; top: 120px;
left: 88px; left: 88px;
} }
.squarebox{ .squarebox{
position: absolute; position: absolute;
top: 0px; top: 0px;
left: 0px; left: 0px;
} }
/*题库的标签--和资源标签样式相似*/ /*题库的标签--和资源标签样式相似*/
.bankTag{max-height: 82px;overflow-y: auto} .bankTag{max-height: 82px;overflow-y: auto}
.bankTag #sourceTag li{margin-left: 0px;margin-right: 5px;} .bankTag #sourceTag li{margin-left: 0px;margin-right: 5px;}
.bank_list_Tag{cursor: default} .bank_list_Tag{cursor: default}
/*资源标签*/ /*资源标签*/
#sourceTag li,.bank_list_Tag{font-size: 12px;color: #4E7A9B;background-color: #E5F3FF;padding: 0px 4px;height: 20px;line-height: 20px; margin-left: 5px;display: inline-block;cursor: pointer;margin-bottom: 5px;} #sourceTag li,.bank_list_Tag{font-size: 12px;color: #4E7A9B;background-color: #E5F3FF;padding: 0px 4px;height: 20px;line-height: 20px; margin-left: 5px;display: inline-block;cursor: pointer;margin-bottom: 5px;}
#sourceTag li a{color: #4e7a9b!important;} #sourceTag li a{color: #4e7a9b!important;}
#sourceTag li.active{background-color: #4CACFF;color: #fff;} #sourceTag li.active{background-color: #4CACFF;color: #fff;}
#sourceTag li.active a{background-color: #4CACFF;color: #fff!important;} #sourceTag li.active a{background-color: #4CACFF;color: #fff!important;}
.mtf15{
margin-top:-15px;
}
Loading…
Cancel
Save