From c97d9b2acd4eafc0e4b72d6846bae409790912b7 Mon Sep 17 00:00:00 2001
From: p31729568 <winse.wang@foxmail.com>
Date: Thu, 1 Aug 2019 17:23:03 +0800
Subject: [PATCH 1/2] fix VerificationCode

---
 app/services/project_packages/save_service.rb | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/app/services/project_packages/save_service.rb b/app/services/project_packages/save_service.rb
index a876f56b3..8385ac5dd 100644
--- a/app/services/project_packages/save_service.rb
+++ b/app/services/project_packages/save_service.rb
@@ -54,7 +54,7 @@ class ProjectPackages::SaveService < ApplicationService
     raise Error, '验证码不能为空' if params[:code].blank?
 
     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
 
   def deal_attachments

From 533b01a8a549cdee6beea1e8bd72a75256b21c5f Mon Sep 17 00:00:00 2001
From: hjm <63528605@qq.com>
Date: Thu, 1 Aug 2019 17:30:10 +0800
Subject: [PATCH 2/2] p3 p4

---
 .../src/common/components/media/Clappr.js     | 49 +++++++++++++------
 .../context/EvaluateSuccessEffectDisplay.js   | 20 +++++---
 2 files changed, 46 insertions(+), 23 deletions(-)

diff --git a/public/react/src/common/components/media/Clappr.js b/public/react/src/common/components/media/Clappr.js
index 7814c391a..995200574 100644
--- a/public/react/src/common/components/media/Clappr.js
+++ b/public/react/src/common/components/media/Clappr.js
@@ -10,33 +10,50 @@ class Clappr extends Component{
     this.state={
     }
   }
+  componentWillUnmount() {
+    this['player'+this.props.id] && this['player'+this.props.id].destroy()
+  }
+  
   componentDidMount() {
     const source = this.props.source || "http://your.video/here.mp4"
-    const { id } = this.props
+    const { id, type } = this.props
     const _id = `#_player${id}`
-    if (window['Clappr']) {
-        const player = new window.Clappr.Player({
+    if (!window['Clappr'] && window['ClapprLoading'] == true) {
+      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,
-            plugins: {
-                'core': [window.Clappr.MediaControl, window.Clappr.Playback]
-            }
+            height: type == 'mp3' ? 60 : 360,
+            hideMediaControl: type == 'mp3' ? false : true,
+            // plugins: {
+            //     'core': [window.Clappr.MediaControl, window['clappr-playback-rate-plugin'].default]
+            // }
         });
     } else {
+        window['ClapprLoading'] = true;
         $.getScript(
             `${_url_origin}/javascripts/media/clappr.min.js`,
             (data, textStatus, jqxhr) => {
                 window.clappr = window.Clappr
-                $.getScript(
-                    `${_url_origin}/javascripts/media/clappr-playback-rate-plugin.min.js`,
-                    (data, textStatus, jqxhr) => {
-                        const player = new window.Clappr.Player({
+                // $.getScript(
+                //     `${_url_origin}/javascripts/media/clappr-playback-rate-plugin.min.js`,
+                //     (data, textStatus, jqxhr) => {
+                        this['player'+id] = new window.Clappr.Player({
                             source: source, parentId: _id,
-                            plugins: {
-                                'core': [window.Clappr.MediaControl, window['clappr-playback-rate-plugin'].default]
-                            }
+                            height: type == 'mp3' ? 60 : 360,
+                            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(){
     
-    let { source, id, className } = this.props;
+    let { source, id, className, type } = this.props;
     const _id = `_player${id}`
     return(
       <React.Fragment>
@@ -71,7 +88,7 @@ class Clappr extends Component{
                 margin-right: 16px;
             }
         `}</style>
-        <div id={_id} className={className}></div>
+        <div id={_id} className={className + ' ' + type}></div>
       </React.Fragment>
     )
   }
diff --git a/public/react/src/context/EvaluateSuccessEffectDisplay.js b/public/react/src/context/EvaluateSuccessEffectDisplay.js
index 2697079d1..ec34db31f 100644
--- a/public/react/src/context/EvaluateSuccessEffectDisplay.js
+++ b/public/react/src/context/EvaluateSuccessEffectDisplay.js
@@ -1,4 +1,6 @@
 import React, { Component } from 'react';
+import ReactDOM from 'react-dom';
+
 import { Redirect } from 'react-router';
 
 import PropTypes from 'prop-types';
@@ -29,7 +31,11 @@ class EvaluateSuccessEffectDisplay extends Component {
         }
     }
     hidepicture = () => {
-        window.$('#picture_display').hide();
+        const dom = document.getElementById('picture_display');
+		ReactDOM.unmountComponentAtNode(dom)
+        // window.$('#picture_display').hide();
+
+        window.$('.data-tip-right').hide()
     }
     renderContent = () => {
 // qrcode
@@ -107,11 +113,11 @@ class EvaluateSuccessEffectDisplay extends Component {
                 <EffectDisplayContent
                     typeName="音频"
                     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 
-                        ? <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 
-                        ? <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>
             )
         } else if (type == 'mp4') {
@@ -119,11 +125,11 @@ class EvaluateSuccessEffectDisplay extends Component {
                 <EffectDisplayContent
                     typeName="视频"
                     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 
-                        ? <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 
-                        ? <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>
             )
         }