新版登录和注册

This commit is contained in:
cxt 2017-03-24 16:05:52 +08:00
parent 43331b526c
commit 324d14ee92
46 changed files with 2538 additions and 1599 deletions

View File

@ -1,3 +1,4 @@
#coding=utf-8
# Redmine - project management software
# Copyright (C) 2006-2013 Jean-Philippe Lang
#
@ -148,7 +149,7 @@ class AccountController < ApplicationController
return
end
end
render :layout => 'static_base'
render :layout => 'login_bigdata'
end
end
@ -172,12 +173,17 @@ class AccountController < ApplicationController
end
else
us = UsersService.new
@user = us.register user_params.merge(:should_confirmation_password => true)
@user = us.register user_params.merge(:should_confirmation_password => false)
case Setting.self_registration
when '1'
#register_by_email_activation(@user)
unless @user.new_record?
redirect_to account_email_valid_path(:mail => @user.mail, :user_id => @user.id)
if params[:user][:mail]
redirect_to account_email_valid_path(:mail => @user.mail, :user_id => @user.id)
else
self.logged_user = @user
redirect_to my_account_url(:tip=>1)
end
# flash[:notice] = l(:notice_account_register_done)
# render action: 'email_valid', locals: {:mail => @user.mail}
end
@ -267,6 +273,13 @@ class AccountController < ApplicationController
req[:message] = faker.errors[:login]
end
if valid_attr.eql?('phone')
faker.phone = valid_value
faker.valid?
req[:valid] = faker.errors[:phone].blank?
req[:message] = ""
end
if valid_attr.eql?('mail')
faker.mail = valid_value
faker.valid?
@ -278,6 +291,135 @@ class AccountController < ApplicationController
render :json => req
end
# 手机号或邮箱是否已注册
def valid_register_user
req = Hash.new(false)
req[:message] = ''
valid_attr = params[:valid]
valid_value = params[:value]
if valid_attr.eql?('phone')
user = User.where(:phone => valid_value).first
req[:valid] = !user.nil?
req[:message] = user.nil? ? "该手机号未注册" : ""
elsif valid_attr.eql?('mail')
user = User.where(:mail => valid_value).first
req[:valid] = !user.nil?
req[:message] = user.nil? ? "该邮箱未注册" : ""
end
render :json => req
end
# 验证码是否有效
def valid_verification_code
req = Hash.new(false)
req[:valid] = false
type = params[:type].to_i
if type == 1 || type == 2 || params[:phone] =~ /^1\d{10}$/
code = VerificationCode.where(:phone => params[:phone], :code => params[:code], :code_type => (params[:type].to_i != 1 && params[:type].to_i != 2) ? 2 : params[:type].to_i ).last
else
code = VerificationCode.where(:email => params[:phone], :code => params[:code], :code_type => 3).last
end
req[:valid] = !code.nil? && (Time.now.to_i - code.created_at.to_i) <= 10*60
render :json => req
end
# 发送验证码type 1注册手机验证码 2找回密码手机验证码 3找回密码邮箱验证码
def get_verification_code
code = %W(0 1 2 3 4 5 6 7 8 9)
type = params[:type].to_i
req = Hash.new(false)
req[:status] = 0
if type == 1
if User.where(:phone => params[:value]).count > 0
req[:status] = 2
else
begin
verification_code = code.sample(6).join
status = Trustie::Sms.send(mobile: params[:value], code: verification_code)
if status
VerificationCode.create(:phone => params[:value], :status => 1, :code_type => 1, :code => verification_code)
end
rescue => e
Rails.logger.error "发送验证码出错: #{e}"
end
req[:status] = 1
end
else
if params[:value] =~ /^[a-zA-Z0-9]+([._\\]*[a-z0-9])*@([a-z0-9]+[-a-z0-9]*[a-z0-9]+.){1,63}[a-z0-9]+$/
if User.where(:mail => params[:value]).count == 0
req[:status] = 2
else
begin
verification_code = code.sample(6).join
user = User.where(:mail => params[:value]).first
token = Token.new(:user => user, :action => "recovery")
if token.save
Mailer.run.lost_password(token, verification_code)
VerificationCode.create(:email => params[:value], :status => 1, :code_type => 3, :code => verification_code)
end
rescue => e
Rails.logger.error "发送验证码出错: #{e}"
end
req[:status] = 3
req[:link] = params[:value].split("@")[1]
end
elsif params[:value] =~ /^1\d{10}$/
if User.where(:phone => params[:value]).count == 0
req[:status] = 2
else
begin
verification_code = code.sample(6).join
status = Trustie::Sms.send(mobile: params[:value], code: verification_code)
if status
VerificationCode.create(:phone => params[:value], :status => 1, :code_type => 2, :code => verification_code)
end
rescue => e
Rails.logger.error "发送验证码出错: #{e}"
end
req[:status] = 1
end
else
req[:status] = 2
end
end
render :json => req
end
def reset_psd
if request.get?
@user = User.where("phone = '#{params[:value]}' or mail = '#{params[:value]}'").first
if @user
respond_to do |format|
format.html { render :layout => "login_bigdata"}
end
else
redirect_to signin_path
return
end
else
@user = User.find params[:user]
if @user
@user.password, @user.password_confirmation = params[:new_password], params[:new_password_confirmation]
if @user.save
Token.where(:user_id => @user, :action => "recovery").destroy_all
respond_to do |format|
format.js
end
else
redirect_to signin_path
return
end
else
redirect_to signin_path
return
end
end
end
def email_valid
begin
@mail_type = params[:mail].split("@")[1]
@ -286,7 +428,7 @@ class AccountController < ApplicationController
return render_404
end
respond_to do |format|
format.html { render :layout => "base_mail"}
format.html { render :layout => "login_bigdata"}
format.js
end
end
@ -309,14 +451,13 @@ class AccountController < ApplicationController
def change_email
user = User.find params[:user_id].to_i
user.update_attributes(:mail => params[:value])
result = {:email => user.mail}
result = {:email => user.mail, :email_link => user.mail.split("@")[1]}
render :json => result
end
def email_activation
end
private
@ -456,7 +597,7 @@ class AccountController < ApplicationController
logger.warn "Failed login for '#{params[:username]}' from #{request.remote_ip} at #{Time.now.utc}"
# flash[:error] = l(:notice_account_invalid_creditentials_new)
# render signin_path(:login=>true)
render :action => 'email_activation'
render :action => 'email_activation',:layout => 'login_bigdata'
end
# Register a user for email activation.

View File

@ -837,10 +837,11 @@ class Mailer < ActionMailer::Base
:subject => l(:mail_subject_register, Setting.app_title)
end
def lost_password(token)
def lost_password(token, code="111111")
set_language_if_valid(token.user.language)
@login = token.user.try(:login)
@token = token
@url = url_for(:controller => 'account', :action => 'lost_password', :token => token.value)
@code = code
mail :to => token.user.mail,
:subject => l(:mail_subject_lost_password, Setting.app_title)
end

View File

@ -244,7 +244,8 @@ class User < Principal
LOGIN_LENGTH_LIMIT = 30
MAIL_LENGTH_LIMIT = 60
validates_presence_of :login, :mail, :if => Proc.new { |user| !user.is_a?(AnonymousUser) }
#validates_presence_of :login, :mail, :if => Proc.new { |user| !user.is_a?(AnonymousUser) }
validates_presence_of :login, :if => Proc.new { |user| !user.is_a?(AnonymousUser) }
validates_uniqueness_of :login, :if => Proc.new { |user| user.login_changed? && user.login.present? }, :case_sensitive => false
validates_uniqueness_of :mail, :if => Proc.new { |user| user.mail_changed? && user.mail.present? }, :case_sensitive => false
# Login must contain letters, numbers, underscores only
@ -534,6 +535,7 @@ class User < Principal
end
VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-]+(\.[a-z]+)*\.[a-z]+\z/i
VALID_PHONE_REGEX = /^1\d{10}$/
# VALID_EMAIL_REGEX = /^[0-9a-zA-Z_-]+@[0-9a-zA-Z_-]+(\.[0-9a-zA-Z_-]+)+$/
# Returns the user that matches provided login and password, or nil
#登录,返回用户名与密码匹配的用户
@ -545,6 +547,8 @@ class User < Principal
return nil if login.empty? || password.empty?
if (login =~ VALID_EMAIL_REGEX)
user = find_by_mail(login)
elsif (login =~ VALID_PHONE_REGEX)
user = find_by_phone(login)
else
user = find_by_login(login)
end
@ -778,6 +782,10 @@ class User < Principal
where("LOWER(mail) = ?", mail.to_s.downcase).first
end
def self.find_by_phone(phone)
where("phone = ?", phone).first
end
# Returns true if the default admin account can no longer be used
def self.default_admin_account_changed?
!User.active.find_by_login("admin").try(:check_password?, "admin")

View File

@ -0,0 +1,5 @@
class VerificationCode < ActiveRecord::Base
#status发送状态
#code_type发送类型1 手机注册 2 手机找回密码 3 邮箱找回密码
attr_accessible :code, :code_type, :email, :phone, :status
end

View File

@ -10,14 +10,24 @@ class UsersService
#参数约定
#成功返回注册后的User实例失败直接抛异常
# 生成邀请码
CODES = %W(0 1 2 3 4 5 6 7 8 9)
def generate_user_login type
code = CODES.sample(8).join
code = type + code.to_s
return generate_user_login(type) if User.where(login: code).present?
code
end
def register(params)
@user = User.new
@user.admin = false
@user.register
@user.login = params[:login]
@user.login = generate_user_login params[:mail] ? 'm' : (params[:phone] ? 'p' : 'w')
@user.mail = params[:mail]
password = params[:password]
password_confirmation = params[:password_confirmation]
@user.phone = params[:phone]
password = params[:password] || params[:mail_password]
password_confirmation = params[:password] || params[:mail_password]
should_confirmation_password = params[:should_confirmation_password]
if !password.blank? && !password_confirmation.blank? && should_confirmation_password
@user.password, @user.password_confirmation = password, password_confirmation
@ -26,13 +36,17 @@ class UsersService
else
@user.password = ""
end
case Setting.self_registration
when '1'
@user = email_activation_register(@user)
when '3'
@user = automatically_register(@user)
else
@user = administrator_manually__register(@user)
if params[:mail]
case Setting.self_registration
when '1'
@user = email_activation_register(@user)
when '3'
@user = automatically_register(@user)
else
@user = administrator_manually__register(@user)
end
else
@user = automatically_register(@user)
end
if @user.id != nil
ue = @user.user_extensions ||= UserExtensions.new

View File

@ -0,0 +1,12 @@
<div class="task-popup" style="width: 550px;">
<div class=" task-popup-title clearfix">
<h3 class="fl color-grey">提示</h3>
<a href="<%= signin_path %>"><i class="fa fa-times-circle font-18 link-color-grey fr mt5"></i></a>
</div>
<div class="task-popup-content">
<p class="task-popup-text-center font-16">您已经成功设置密码,请使用新密码登录!</p>
</div>
<div class="task-popup-submit clearfix inner-t-c">
<a href="<%= signin_path %>" class="task-btn task-btn-green">确定</a>
</div>
</div>

View File

@ -1,90 +1,63 @@
<div class="new_content">
<div class="email_verify">
<p class="email_verify_prompt"><span class="icons_email_prompt"></span>您的账号尚未激活,请先进入您的注册邮箱(<span class="c_red" id="user_email_show"><%= @user.mail %></span>),激活您的账号。</p>
<button class="email_verify_btn mt30 ml30" onclick = "resendMail('<%= resendmail_path(@user) %>','<%= @user.id %>');">重新发送激活邮件</button>
<%#= link_to l(:label_mail_resend), { :controller => 'account', :action => 'resendmail',:user => @user}, :class=>"email_verify_btn mt30 ml30", :remote => true, :method => 'get' %>
<ul class="email_prompt_txt ml30 mt30" style="width:580px;margin-bottom: 20px">
<p class="email_prompt_p">如果您尚未收到激活邮件,请按照以下步骤操作:</p>
<li>检查邮箱的“订阅邮件”、“垃圾邮件”,可能会发现激活邮件。 </li>
<li>如果激活邮件已无效,请点击重新发送激活邮件按钮。</li>
<li>如果重发注册验证邮箱邮件仍然没有收到,请<a href="javascript:void(0);" class="link-blue" id="change_email">更换邮箱地址</a>,重新发送激活邮件</li>
<li>如果您始终无法收到激活邮件,请直接给我们留言:</li>
<div class="mt10">
<textarea style="resize: none;width: 570px;" class="email_prompt_mes" placeholder="<%= l(:label_email_feedback_tips) %>"></textarea>
<div class="c1"></div>
<button class="email_sub_btn fr" onclick="leave_email_activation_message('<%= leave_email_activation_message_path(1)%>','<%= @user.id %>');">确定</button>
<div class="cl"></div>
<% email = @user.mail.split("@")[1] %>
<div class="new_login">
<div class="new-login-header clearfix">
<h2 class="fl">激活邮箱账号</h2>
<p class="fr mt20 font-16">
<%= link_to '首页', home_path %>
<span class="ml5 mr5">|</span>
<%= link_to "帮助中心", "#{Setting.protocol}://#{Setting.host_name}/forums/1/memos/1168" %>
</p>
</div>
<div class="new_login_con">
<div class=" task-email-box">
<div class="task-email-box-pd">
<div class="alert alert-blue mb20">
您的账号尚未激活,请先登录您的邮箱,激活您的账号
</div>
<span>只需要登录邮箱(<font id="user_email_show"><%= @user.mail %></font>),点击链接激活即可</span><br/>
<a href="http://mail.<%= email %>" id="user_email_link" class="new_login_submit mt20 mb20" target="_blank">立即去邮箱激活账号</a>
<span class="task-line"></span>
<ul class="clearfix">
<li class="font-bd">还没有收到激活账号邮件?</li>
<li>1尝试到广告邮件、垃圾邮件目录中找找邮件可能被误杀了</li>
<li>2再次发送验证邮件</li>
<li>3如果仍然没有收到注册验证邮件请更换邮件地址</li>
<li class="mt20 mb20">
<%= link_to '<span class="ml10"></span><span onclick="settime(this);">重新发送激活邮件<span><span class="mr10"></span>'.html_safe, { :controller => 'account', :action => 'resendmail', :user => @user},:id => 'resend_email_a', :class => 'task-btn fl mr20', :remote => true, :method => 'get' %>
<a href="javascript:void(0)" class="task-btn fl" id="change_user_email"><span class="ml20"></span>更换邮件地址<span class="mr20"></span></a>
<div class="cl"></div>
</li>
<li class="mt20 none" id="change_user_email_block">
<input type="text" class="new_loggin_users fl" name="user[mail]" id="user_new_email" placeholder="请输入有效的邮箱地址" style="width:325px; padding-left:5px;">
<a href="javascript:void(0);" class="fr task-btn-ver" onclick="submit_user_emails('<%= @user.id %>')"><span class="ml5"></span>确定<span class="mr5"></span></a>
<p class="color-red fl" id="mail_req" style="display: none;">请输入正确的邮箱</p>
<div class="cl"></div>
</li>
</ul>
</div>
</ul>
</div>
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){
$("#change_email").click(function(){
$.ajax({
url: "<%= change_user_email_user_path(@user) %>"
});
});
});
function resendMail(url,id)
{
$.get(
url,
{user: id },
function (data) {
//邮箱@之前用a**b格式显示
var mail = data.email;
var pos = mail.indexOf("@");
var restr = mail.substring(1,pos-1);
if( mail.split("@")[0].length > 2 ){
mail = mail.replace(restr,"***");
}
$(".email_verify_btn").replaceWith("<p class='email_verify_p mt30 ml30'>激活邮件已发送至您的注册邮箱("+mail+"),请及时登录邮箱进行验证。</p>");
}
);
}
function leave_email_activation_message(url,user)
{
if ($(".email_prompt_mes").val().length == 0){
//弹框请他输入文字
var htmlvalue = "</br><div style='width:550px;text-align:center'>您的留言不能为空</div></br><div style='width:67px; margin:0 auto; text-align:center'><a href='javascript:void(0);' class='Blue-btn' onclick='hideModal()'>确定</a></div>";
pop_up_box(htmlvalue,580,30,50);
return;
}
$.ajax({
url: url,
data: {user: user, text: $(".email_prompt_mes").val() },
type: "POST",
success: function (data) {
var htmlvalue = "<div class='email_tancon'><h2 class='email_tan_title'>您的留言已发送</h2><p class='email_tan_p'>我们将尽快处理好并通知您。感谢您的反馈!</p></div>"
pop_up_box(htmlvalue, 580, 30, 45);
$(".email_prompt_mes").val("");
}
});
}
function regex_mv_name()
{
var name = $.trim($("#subject").val());
if(name.length == 0)
{
$("#mail_valid_feedback_tip").show();
return false;
}
else
{
$("#mail_valid_feedback_tip").hide();
return true;
<script>
var countdown = 60;
function settime(val) {
if (countdown == 0) {
val.removeAttribute("disabled");
$("#resend_email_a").removeClass("task-btn-grey");
val.innerHTML="重新发送激活邮件";
countdown = 60;
} else {
val.setAttribute("disabled", true);
$("#resend_email_a").addClass("task-btn-grey");
val.innerHTML=countdown + "s后可重新发送";
countdown--;
if(countdown >= 0){
setTimeout(function() {
settime(val)
},1000)
}
}
}
function f_submit()
{
if(regex_mv_name()){
$("#new_memo").submit();
}
}
</script>
</script>

View File

@ -1,97 +1,55 @@
<title><%= l(:label_regiter_account)%></title>
<% email = @user.mail.split("@")[1] %>
<div class="new_content">
<div class="email_verify" style="width: 580px;">
<p class="fb f18" style="color:green;"><i class="icon-ok mr5 f18"></i>注册成功!
<span style=" color:#3b94d6; font-size:12px; font-weight:normal;">请在24小时内点击邮件中的链接来激活您的账号。</span></p>
<p class="f14 mt30 mb5">请登录邮箱(<span class="c_red" id="user_email_show"><%= @user.mail %></span>)收取账号激活邮件。<br/>点击邮件中的激活链接,方可使用该账号
</p>
<p>
<a href="http://mail.<%= email %>" class="btn btn-blue" target="_blank"><%= l(:label_check_email)%></a>
&nbsp; &nbsp; <%= link_to "<input class='btn btn-blue' type='button' id='btn' value='重新发送激活邮件' onclick='settime(this)' />".html_safe, { :controller => 'account', :action => 'resendmail', :user => @user}, :remote => true, :method => 'get' %>
</p>
<ul class="email_prompt_txt mt30" style="width: 580px;">
<p class="email_prompt_p">如果您一直收不到激活邮件,请按照以下步骤操作:</p>
<li>请确认是否填写了正确的邮箱地址 </li>
<li>请注意查看邮箱中的“订阅邮件”、“垃圾邮件”可能Trustie的邮件被误杀了</li>
<li>请点击重新发送激活邮件按钮</li>
<li>如果重发注册验证邮箱邮件仍然没有收到,请<a href="javascript:void(0);" class="link-blue" id="change_email">更换邮箱地址</a>,重新发送激活邮件</li>
<li>如果您始终无法收到激活邮件,请直接给我们留言:</li>
<div class="mt10">
<textarea style="resize: none;width: 570px;" class="email_prompt_mes" placeholder="<%= l(:label_email_feedback_tips) %>"></textarea>
<div class="c1"></div>
<button class="email_sub_btn fr" onclick="leave_email_activation_message('<%= leave_email_activation_message_path(1)%>','<%= @user.id %>');">确定</button>
<div class="cl"></div>
<div class="new_login">
<div class="new-login-header clearfix">
<h2 class="fl">激活邮箱账号</h2>
<p class="fr mt20 font-16">
<%= link_to '首页', home_path %>
<span class="ml5 mr5">|</span>
<%= link_to "帮助中心", "#{Setting.protocol}://#{Setting.host_name}/forums/1/memos/1168" %>
</p>
</div>
<div class="new_login_con">
<div class=" task-email-box">
<div class="task-email-box-pd">
<h2 class="color-light-green mb10" ><i class="fa fa-envelope mr10 font-18 "></i>激活邮件已发送</h2>
<span>只需要登录邮箱(<font id="user_email_show"><%= @user.mail %></font>),点击链接激活即可</span><br/>
<a href="http://mail.<%= email %>" id="user_email_link" class="new_login_submit mt20 mb20" target="_blank">立即去邮箱激活账号</a>
<span class="task-line"></span>
<ul class="clearfix">
<li class="font-bd">还没有收到激活账号邮件?</li>
<li>1尝试到广告邮件、垃圾邮件目录中找找邮件可能被误杀了</li>
<li>2再次发送验证邮件</li>
<li>3如果仍然没有收到注册验证邮件请更换邮件地址</li>
<li class="mt20 mb20">
<%= link_to '<span class="ml10"></span><span onclick="settime(this);">重新发送激活邮件<span><span class="mr10"></span>'.html_safe, { :controller => 'account', :action => 'resendmail', :user => @user},:id => 'resend_email_a', :class => 'task-btn fl mr20', :remote => true, :method => 'get' %>
<a href="javascript:void(0)" class="task-btn fl" id="change_user_email"><span class="ml20"></span>更换邮件地址<span class="mr20"></span></a>
<div class="cl"></div>
</li>
<li class="mt20 none" id="change_user_email_block">
<input type="text" class="new_loggin_users fl" name="user[mail]" id="user_new_email" placeholder="请输入有效的邮箱地址" style="width:325px; padding-left:5px;">
<a href="javascript:void(0);" class="fr task-btn-ver" onclick="submit_user_emails('<%= @user.id %>')"><span class="ml5"></span>确定<span class="mr5"></span></a>
<p class="color-red fl" id="mail_req" style="display: none;">请输入正确的邮箱</p>
<div class="cl"></div>
</li>
</ul>
</div>
</ul>
</div>
</div>
</div>
<script>
$(document).ready(function(){
$("#change_email").click(function(){
$.ajax({
url: "<%= change_user_email_user_path(@user) %>"
});
});
});
function leave_email_activation_message(url,user)
{
if ($(".email_prompt_mes").val().length == 0){
//弹框请他输入文字
var htmlvalue = "</br><div style='width:550px;text-align:center'>您的留言不能为空</div></br><div style='width:67px; margin:0 auto; text-align:center'><a href='javascript:void(0);' class='Blue-btn' onclick='hideModal()'>确定</a></div>";
pop_up_box(htmlvalue,580,30,50);
return;
}
$.ajax({
url: url,
data: {user: user, text: $(".email_prompt_mes").val() },
type: "POST",
success: function (data) {
var htmlvalue = "<div class='email_tancon'><h2 class='email_tan_title'>您的留言已发送</h2><p class='email_tan_p'>我们将尽快处理好并通知您。感谢您的反馈!</p></div>"
pop_up_box(htmlvalue, 580, 30, 50);
$(".email_prompt_mes").val("");
}
});
}
function regex_mv_name()
{
var name = $.trim($("#subject").val());
if(name.length == 0)
{
$("#mail_valid_feedback_tip").show();
return false;
}
else
{
$("#mail_valid_feedback_tip").hide();
return true;
}
}
function f_submit()
{
if(regex_mv_name()){
$("#new_memo").submit();
}
}
var countdown = 60;
function settime(val) {
if (countdown == 0) {
val.removeAttribute("disabled");
$("#btn").removeClass("btn-grey");
val.value="重新获取验证码";
$("#resend_email_a").removeClass("task-btn-grey");
val.innerHTML="重新发送激活邮件";
countdown = 60;
} else {
val.setAttribute("disabled", true);
$("#btn").addClass("btn-grey");
val.value="重新发送(" + countdown + ")";
$("#resend_email_a").addClass("task-btn-grey");
val.innerHTML=countdown + "s后可重新发送";
countdown--;
if(countdown >= 0){
setTimeout(function() {
@ -100,51 +58,4 @@
}
}
}
$(function(){
var u = navigator.userAgent;
if((u.indexOf('Android') > -1 || u.indexOf('Linux') > -1 ||u.indexOf('iPhone') > -1 || u.indexOf('Mac') > -1)){
$("#scrollsidebar").css("display","none");
return;
}
$(".closeSidebar, .hide-side-bar").click(function(){
$(".show_btn").css("display","none");
$("#scrollsidebar").css("display","none");
return false;
});
$("#button1").click(function(){
myTips("反馈成功","success");
});
$("#scrollsidebar").fix({
float: 'right', //default.left or right
minStatue: cookieget('minStatue'),
skin: 'green', //default.gray or blue
durationTime: 600
});
$("#subject").keydown(function(){
alert("2222");
var curLength=$("#subject").val().length;
if(curLength>50){
var num=$("#subject").val().substr(0,50);
$("#subject").val(num);
}
else{
$("#textCount").text(50-$("#subject").val().length)
}
}).keyup(function(){
var curLength=$("#subject").val().length;
if(curLength>50){
var num=$("#subject").val().substr(0,50);
$("#subject").val(num);
}
else{
$("#textCount").text(50-$("#subject").val().length)
}
});
});
</script>

View File

@ -1,164 +1,103 @@
<div class="new_register">
<div class="new_register_con ">
<div class="new_login_box " style="margin-top: 50px;">
<% if @message %>
<p class="f14 mb5" style=" color:#fff;"><i class="<%= params[:type] == "expired" ? 'icon-bolt mr5' : 'icon-ok mr5' %>"></i><%= h @message %></p>
<% end %>
<h2 class="new_login_h2">登录
<a href="<%= user_join_path %>" class="fr mt5" style="color:#fff;">立即注册</a><div class="cl"></div>
</h2>
<div class="new_login_form">
<%= form_tag(signin_path,:id=>'main_login_form',:method=>'post') do %>
<div class="new_login ">
<div class="new-login-header clearfix">
<h2 class="fl">登录</h2>
<p class="fr mt20 font-16">
<%= link_to '首页', home_path %>
<span class="ml5 mr5">|</span>
<%= link_to "帮助中心", "#{Setting.protocol}://#{Setting.host_name}/forums/1/memos/1168" %>
</p>
</div>
<div class="new_login_con">
<div class="new_login_box clearfix">
<ul class="new_login_weixin clearfix">
<p class="" style="text-align: center; font-size: 18px;">登录</p>
<!--<li id="login_weixin_nav_1" class="login_weixin_nav_hover" onclick="HoverLi(1);">-->
<!--<a href="javascript:void(0);" class="login_weixin_nav_nomal" ><i class="fa fa-qrcode mr10 mt3 font-16"></i>扫码登录</a>-->
<!--</li>-->
<!--<li id="login_weixin_nav_2" onclick="HoverLi(2);" >-->
<!--<a href="javascript:void(0);" class="login_weixin_nav_nomal" ><i class="fa fa-desktop mr10 mt3 "></i>密码登录</a>-->
<!--</li>-->
</ul>
<div id="login_weixin_content_1" class="undis">
<div class="code_wxbox" >
<div class="wx_img" id="login_QR_img"><img src="images/bigdata/trustie_QR.jpg" width="150" height="150"></div>
<div class="wx_img" id="wx_help_img" style="display:none;"><img src="images/bigdata/wx_help.png" width="150" height="150"></div>
<div class="wx_0s">
<div class="ts mb10">请使用微信扫描上方二维码登录</div>
<div class="usehelp">
<a href="javascript:void(0)" onmouseover="$('#login_QR_img').hide(); $('#wx_help_img').show();" onmouseout="$('#login_QR_img').show(); $('#wx_help_img').hide();" class="wx_help">使用帮助</a>
</div>
</div>
</div>
</div>
<div id="login_weixin_content_2">
<div class="new_login_form">
<p class="fr mt10 mb10 font-12">没有账号?
<a href="<%= user_join_path %>" class="ml10">立即注册</a>
</p>
<div class="cl"></div>
<%= form_tag(signin_path,:id=>'main_login_form',:method=>'post') do %>
<%= back_url_hidden_field_tag %>
<ul>
<li class="new_loggin_users">
<%= text_field_tag 'username', params[:username], :tabindex => '1', :class=>'new_loggin_input',:placeholder=>'请输入邮箱地址或登录名', :onkeypress => "user_name_keypress(event);"%>
<i class="fa fa-user font-16 ml10 color-grey"></i>
<input type="text" id="name_loggin_input" name="username" class="new_loggin_input" placeholder="手机/邮箱" onkeypress="user_name_keypress(event);">
</li>
<li class="new_loggin_li new_login_lock">
<%= password_field_tag 'password', nil, :tabindex => '2', :class => 'new_loggin_input' , :placeholder => '请输入登录密码', :onkeypress => "user_name_keypress(event);"%>
<p class="new_login_error"><%= flash.empty? || flash[:error].nil? ? "" : flash[:error].html_safe %></p>
<li class="new_loggin_users">
<i class="fa fa-lock font-16 ml10 color-grey"></i>
<input type="password" id="password_loggin_input" name="password" class="new_loggin_input" placeholder="请输入密码" onkeypress="user_name_keypress(event);">
</li>
<p id="login_error_notice" class="color-red mb5" style="margin-top: -15px;"><%= flash.empty? || flash[:error].nil? ? "" : flash[:error].html_safe %></p>
<li>
<% if Setting.autologin? %>
<label><%= check_box_tag 'autologin', 1, true, :tabindex => 4, :class => "new_login_check" %><%= l(:label_stay_logged_in) %></label>
<% end %>
<a href="<%= lost_password_path %>" class="fr" style="color:#fff;">
<a href="<%= lost_password_path %>" class="fr">
<% if Setting.lost_password? %>忘记密码<% end %>
</a>
<div class="cl"></div>
</li>
<li>
<a href="javascript:void(0);" id="regist_btn" onclick="loginin();" class ="new_login_submit" id="login_btn" style="text-decoration:none">登录</a>
<a href="javascript:void(0);" onclick="loginin();" class ="new_login_submit" id="login_btn" style="text-decoration:none">登录</a>
</li>
</ul>
<% end %>
<% end %>
</div>
</div>
<div class="cl"></div>
</div>
<div class="cl"></div>
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){
$(".homepageSearchIcon").click(function(){
var val=$('input:radio[name="search_type"]:checked').val();
if(val==null){
$("#navSearchAlert").css({display:"block"});
}
else {
$("#navSearchAlert").css({display:"none"});
}
});
});
$(document).ready(function(){
$(".navHomepageSearchBoxcontainer").mouseover(function(){
$(".navSearchTypeBox").css({display:"block"});
});
$(".navHomepageSearchBoxcontainer").mouseout(function(){
$(".navSearchTypeBox").css({display:"none"});
});
})
$(document).ready(function(){
if(<%= @login%>){
$("#signUpBox").css({display:"none"});
$("#loginInBox").css({display:"block"});
}else{
$("#signUpBox").css({display:"block"});
$("#loginInBox").css({display:"none"});
<script type="text/javascript" language="javascript">
//登录tab
function g(o){
return document.getElementById(o);
}
function HoverLi(n){
for(var i=1;i<=2;i++){
g('login_weixin_nav_'+i).className='login_weixin_nav_nomal';
g('login_weixin_content_'+i).className='undis';
}
});
g('login_weixin_nav_'+n).className='login_weixin_nav_hover';
g('login_weixin_content_'+n).className='dis';
}
var $login_correct = false;
var $mail_correct = false;
var $passwd_correct = false;
var $passwd_comfirm_correct = false;
jQuery(document).ready(function () {
var $login = $('#user_login')
var $mail = $('#user_mail')
var $password = $('#user_password')
var $password_confirmation = $('#user_password_confirmation')
$login.blur(function (event) {
if ($(this).is('#user_login')) {
if (/^[a-zA-Z][a-zA-Z\d]{3,14}$/.test(this.value) == false){
$('#login_req').html('<span style="color: #c00202">只能使用英文字母和数字必须以字母开头长度不少于4个字符、不超过15个字符</span>');
$('#login_req').show();
return ;
}
else{
$.get(
'<%=account_valid_ajax_path%>',
{ valid: "login",
value: this.value },
function (data) {
if (data.valid) {
$('#login_req').html('<span style="color: green">'+data.message+'</span>');
$login_correct = true;
} else {
$('#login_req').html( '<span style="color: #c00202">'+data.message+'</span>');
$login_correct = false;
}
$('#login_req').css('display','block');
});
}
$(function(){
<% if flash[:error] || !flash.empty? %>
for(var i=1;i<=2;i++){
g('login_weixin_nav_'+i).className='login_weixin_nav_nomal';
g('login_weixin_content_'+i).className='undis';
}
g('login_weixin_nav_2').className='login_weixin_nav_hover';
g('login_weixin_content_2').className='dis';
<% end %>
}
// ;
$("#name_loggin_input").on('focus', function(){
$("#login_error_notice").html("");
});
$mail.blur(function (event) {
if (/^[a-zA-Z0-9]+([._\\]*[a-z0-9])*@([a-z0-9]+[-a-z0-9]*[a-z0-9]+.){1,63}[a-z0-9]+$/.test(this.value) == false){
$('#mail_req').html( '<span style="color: #c00202">邮件格式不对</span>').show();
$mail_correct = false;
return ;
}
if ($(this).is('#user_mail')) {
$.get('<%=account_valid_ajax_path%>',
{ valid: "mail",
value: this.value },
function (data) {
if (data.valid) {
$('#mail_req').html( '<span style="color: green">'+data.message+'</span>' );
$mail_correct = true;
} else {
$('#mail_req').html( '<span style="color: #c00202">'+data.message+'</span>' );
$mail_correct = false;
}
$('#mail_req').css('display','block');
});
}
;
});
$password.blur(function () {
var pas1 = document.getElementById("user_password").value;
var password_min_length = <%= Setting.password_min_length.to_i %>
if (pas1.length >= password_min_length) {
$('#passwd_req').html('');
$passwd_correct = true;
}
else {
$('#passwd_req').html( '<span style="color: #c00202">'+'<%= l(:setting_password_min_length_limit, :count => Setting.password_min_length.to_i) %>'+'</span>');
$passwd_correct = false;
}
$('#passwd_req').css('display','block');
});
$password_confirmation.blur(function () {
var password_min_length = <%= Setting.password_min_length.to_i %>
var pas1 = document.getElementById("user_password").value;
var pas2 = document.getElementById("user_password_confirmation").value;
if (pas1.length >= password_min_length && pas1 == pas2 ) {
$('#confirm_req').html('<span style="color: green">'+'<%= l(:setting_password_success) %>'+'</span>');
$passwd_comfirm_correct = true;
}
else {
$('#confirm_req').html('<span style="color: #c00202">'+'<%= l(:setting_password_error) %>'+'</span>');
$passwd_comfirm_correct = false;
}
$('#confirm_req').css('display','block');
$("#password_loggin_input").on('focus', function(){
$("#login_error_notice").html("");
});
});
</script>

View File

@ -1,26 +1,58 @@
<%= stylesheet_link_tag 'css/public'%>
<div class="homepageContentContainer ">
<div class="homepageContent BgBox">
<h2 class="BgBox_h2">忘记密码</h2>
<div class="BgBoxCon">
<%= form_tag(lost_password_path) do %>
<p class="BgBoxConP mb5">通过注册邮箱链接重设密码</p>
<!--<input type="text" class="NomalInput mb20 " value="请输入登录邮箱地址" />-->
<%= text_field_tag 'mail', nil, :size => 40, :placeholder => '请输入注册邮箱',:class=>'NomalInput mb20'%>
<% if flash[:error] %>
<p class="c_red mt-20 ml5"><%= flash[:error]%></p>
<!--<div style="color: red" class="mb5" ><%#= flash[:error]%></div>-->
<% elsif flash[:notice] %>
<p class="c_green mb5"><%= flash[:notice]%></p>
<!--<div style="color: green" class="mb5" ><%#= flash[:notice]%></div>-->
<% end %>
<div class="LoginButton"><a href="javascript:void(0);" class="c_white db" onclick="$(this).parent().parent().submit();">提交</a></div>
<% end %>
<div class="new_login">
<div class="new-login-header clearfix">
<h2 class="fl">找回密码</h2>
<p class="fr mt20 font-16">
<%= link_to '首页', home_path %>
<span class="ml5 mr5">|</span>
<%= link_to "帮助中心", "#{Setting.protocol}://#{Setting.host_name}/forums/1/memos/1168" %>
</p>
</div>
<div class="password-header clearfix">
<h3 class="fl ml15">找回密码</h3>
<span class="fl ml10 mr10 mt3 " >|</span>
<span class="fl mt3">第一步:安全验证</span>
</div>
<div class="new_login_con">
<div class="new_login_box clearfix">
<div class="new_login_form">
<form>
<ul>
<li class="new_loggin_users">
<i class="fa fa-user font-16 ml10 color-grey"></i>
<input type="text" class="new_loggin_input" id="lost_psd_input" style="width: 290px;" placeholder="请输入邮箱或手机号">
<i class="fa font-16 mr5" id="user_phone_check"></i>
<div class="new-login-error" style="display: none;">
<p id="user_phone_notice"></p>
</div>
</li>
<li class="pr">
<div id="drag" class="drag_slider"></div>
<div class="new-login-error" style="display: none;">
<p id="user_verification_notice"></p>
</div>
</li>
<li class="pr">
<input type="text" class="new_loggin_input_test fl" id="psd_verification_code" placeholder="请输入收到的验证码">
<a href="javascript:void(0);" class="fr task-btn-ver" onclick="get_psd_verification_code(this)">获取验证码</a>
<input class="none" id="ver_code_type">
<div class="new-login-error" style="display: none;">
<p id="phone_verification_code_notice"></p>
</div>
<div class="cl"></div>
</li>
<p id="send_success_notice" class="none" style="margin-top: -15px; margin-bottom: 10px;"></p>
<li><a href="javascript:void(0)" class="new_login_submit" id="lost_psd_next_a" onclick="lost_psd_next();">下一步</a></li>
</ul>
</form>
<div class="new-loggin-other mt50 none">
<a href="#"><img src="/images/login/img-weixin.png" width="50" height="50" class="task-img-weixin mb10" alt="微信登录"></a><br/>
<span>使用第三方账号</span>
</div>
</div>
</div>
</div><!---BgBox end--->
</div><!---homepageContentContainer end--->
</body>
</html>
</div>
</div>
<script type="text/javascript">
$('#drag').drag();
</script>

View File

@ -0,0 +1,42 @@
<div class="new_login">
<div class="new-login-header clearfix">
<h2 class="fl">找回密码</h2>
<p class="fr mt20 font-16">
<%= link_to '首页', home_path %>
<span class="ml5 mr5">|</span>
<%= link_to "帮助中心", "#{Setting.protocol}://#{Setting.host_name}/forums/1/memos/1168" %>
</p>
</div>
<div class="password-header clearfix">
<h3 class="fl ml15">找回密码</h3>
<span class="fl ml10 mr10 mt3">|</span>
<span class="fl mt3">第二步:设置新密码</span>
</div>
<div class="new_login_con">
<div class="new_login_box clearfix">
<div class="new_login_form">
<%= form_tag(account_reset_psd_path, :remote => true, :method => 'post') do %>
<ul>
<input type="hidden" name="user" value="<%= @user.id %>">
<input type="hidden" id="password_min_length" value="<%= Setting.password_min_length.to_i %>">
<li class="new_loggin_users">
<i class="fa fa-lock font-16 ml10 color-grey"></i>
<input type="password" class="new_loggin_input" name="new_password" id="new_password" placeholder="设置新密码">
<div class="new-login-error" style="display: none;">
<p id="new_password_notice">至少8位由字母或特殊符号和数字结合</p>
</div>
</li>
<li class="new_loggin_users">
<i class="fa fa-lock font-16 ml10 color-grey"></i>
<input type="password" class="new_loggin_input" name="new_password_confirmation" id="new_password_confirmation" placeholder="确认新密码">
<div class="new-login-error none" style="display: none;">
<p id="new_password_confirmation_notice">两次密码输入不一致</p>
</div>
</li>
<li><a href="javascript:void(0)" class="new_login_submit" id="new_psd_submit">完成</a></li>
</ul>
<% end %>
</div>
</div>
</div>
</div>

View File

@ -0,0 +1,2 @@
var htmlvalue = "<%= j(render :partial => 'account/reset_psd_notice_box') %>";
pop_box_new(htmlvalue, 552, 500);

View File

@ -1,165 +1,280 @@
<div class="new_register">
<div class="new_register_con ">
<div class="new_login_box ">
<h2 class="new_login_h2">注册<a href="<%= signin_path %>" class="fr mt5">已有账号 请登录</a><div class="cl"></div></h2>
<div class="new_login_form">
<%= form_for :user, :url => register_path,:method=>'post', :html => {:id=>'main_reg_form'} do |f| %>
<%= error_messages_for 'user' %>
<ul >
<li class="new_register_li">
<%= f.text_field :mail, :size => 25, :class => 'new_register_input' , :placeholder => "请输入邮箱地址"%>
<p class="new_login_error" id="mail_req" style="display: none">请输入正确的邮箱</p>
</li>
<li class="new_register_li">
<%= f.password_field :password, :placeholder => "请输入密码", :class => 'new_register_input' %>
<p class="new_login_error" id="passwd_req" style="display: none">请输入8-16位密码区分大小写不能使用空格</p>
</li>
<li class="new_register_li">
<%= f.password_field :password_confirmation, :placeholder => "请再次输入密码", :class=> 'new_register_input' %>
<p class="new_login_error" id="confirm_req" style="display: none">两次密码不一致!</p>
</li>
<li class="new_register_li">
<%= f.text_field :login, :placeholder => "请输入用户登录名", :class => 'new_register_input'%>
<p class="new_login_error" id="login_req" style="display: none">只能使用英文字母和数字必须以字母开头长度不少于4个字符、不超过15个字符</p>
</li>
<li>
<label><input type="checkbox" checked id="read_and_confirm" onchange="changeRegisterBtn(this);" class=" new_login_check">我已阅读并接受<a href="<%= agreement_path %>" >Trustie服务协议条款</a></label>
</li>
<li>
<div id="loginUpButton">
<a href="javascript:void(0);" id="regist_btn" onclick="register();" class ="new_login_submit" style="text-decoration:none;">注册</a>
</div>
</li>
</ul>
<% end %>
<div class="new_login ">
<div class="new-login-header clearfix">
<h2 class="fl">注册</h2>
<p class="fr mt20 font-16">
<%= link_to '首页', home_path %>
<span class="ml5 mr5">|</span>
<%= link_to "帮助中心", "#{Setting.protocol}://#{Setting.host_name}/forums/1/memos/1168" %>
</p>
</div>
<div class="new_login_con">
<div class="new_login_box clearfix">
<ul class="new_login_weixin fl" >
<li id="login_weixin_nav_1" class="login_weixin_nav_hover" onclick="HoverLi(1);">
<a href="javascript:void(0);" class="login_weixin_nav_nomal"><i class="fa fa-mobile-phone font-16 mr10 mt3"></i>手机注册</a>
</li>
<li id="login_weixin_nav_2" onclick="HoverLi(2);" >
<a href="javascript:void(0);" class="login_weixin_nav_nomal"><i class="fa fa-envelope-o font-16 mr10 mt3"></i>邮箱注册</a>
</li>
</ul>
<div id="login_weixin_content_1">
<div class="new_login_form">
<p class="fr mt10 mb10 font-12">已有账号?<a href="<%= signin_path %>" class="ml10">直接登录</a>
</p>
<div class="cl"></div>
<%= form_for :user, :url => register_path,:method=>'post', :html => {:id=>'main_reg_form'} do |f| %>
<%= error_messages_for 'user' %>
<input type="text" name="none_name" style="display: none">
<input type="password" name="none_psw" style="display: none">
<ul >
<li class="new_loggin_users ">
<i class="fa fa-mobile-phone font-16 ml10 color-grey"></i>
<input type="text" id="user_phone_num" name="user[phone]" class="new_loggin_input" autocomplete="off" placeholder="请输入手机号码">
<i class="fa font-16 mr5" id="user_phone_check"></i>
<div class="new-login-error" style="display: none;">
<p id="user_phone_notice"></p>
</div>
</li>
<li class="new_loggin_users">
<i class="fa fa-lock font-16 ml10 color-grey"></i>
<input type="text" onfocus="this.type='password'" class="new_loggin_input" style="width: 292px;" name="user[password]" id="user_password_1" autocomplete="off" placeholder="密码至少由8位由字母或特殊符号和数字结合">
<i class="fa font-16 mr5" id="user_password_1_check"></i>
<div class="new-login-error" style="display: none;">
<p id="user_password_1_notice"></p>
</div>
</li>
<li class="pr">
<div id="drag" class="drag_slider"></div>
<div class="new-login-error" style="display: none;">
<p id="user_verification_notice"></p>
</div>
</li>
<li class="pr">
<input type="text" class="new_loggin_input_test fl" name="code" id="phone_verification_code" placeholder="请输入收到的短信验证码">
<a href="javascript:void(0);" class="fr task-btn-ver" onclick="get_phone_verification_code(this)" id="get_verification_code">获取验证码</a>
<div class="new-login-error" style="display: none;">
<p id="phone_verification_code_notice"></p>
</div>
<div class="cl"></div>
</li>
<li class="pr">
<label><input type="checkbox" checked="checked" id="read_and_confirm_1" class="new_login_check"> 我已阅读并同意<a href="<%= agreement_path %>" target="_blank">服务协议条款</a></label>
<div class="new-login-error" style="display: none;">
<p id="user_aggre_1_notice"></p>
</div>
<div class="cl"></div>
</li>
<li>
<a href="javascript:void(0);" id="regist_btn_phone" onclick="phone_register();" class ="new_login_submit" style="text-decoration:none;">注册</a>
</li>
</ul>
<% end %>
</div>
</div>
<div id="login_weixin_content_2" class="undis">
<div class="new_login_form">
<p class="fr mt10 mb10 font-12">已有账号?<a href="<%= signin_path %>" class="ml10">直接登录</a>
</p>
<div class="cl"></div>
<%= form_for :user, :url => register_path,:method=>'post', :html => {:id=>'main_reg_email_form'} do |f| %>
<%= error_messages_for 'user' %>
<input type="text" style="display: none">
<input type="password" style="display: none">
<ul >
<li class="new_loggin_users">
<i class="fa fa-envelope-o font-16 ml10 color-grey"></i>
<input type="text" class="new_loggin_input" name="user[mail]" id="user_email_addr" style="width: 286px;" autocomplete="off" placeholder="请输入有效的邮箱地址">
<i class="fa font-16 mr5" id="user_email_check"></i>
<div class="new-login-error" style="display: none;">
<p id="user_email_addr_notice"></p>
</div>
</li>
<li class="new_loggin_users">
<i class="fa fa-lock font-16 ml10 color-grey"></i>
<input type="text" onfocus="this.type='password'" class="new_loggin_input" style="width: 292px;" name="user[mail_password]" id="user_password_2" autocomplete="off" placeholder="密码至少由8位由字母或特殊符号和数字结合">
<i class="fa font-16 mr5" id="user_password_2_check"></i>
<div class="new-login-error" style="display: none;">
<p id="user_password_2_notice"></p>
</div>
</li>
<li class="pr">
<label><input type="checkbox" id="read_and_confirm_2" checked="checked" class="new_login_check" > 我已阅读并同意<a href="<%= agreement_path %>" target="_blank">服务协议条款</a></label>
<div class="new-login-error" style="display: none;">
<p id="user_aggre_2_notice"></p>
</div>
<div class="cl"></div>
</li>
<li>
<a href="javascript:void(0);" id="regist_btn_email" onclick="email_register();" class ="new_login_submit" style="text-decoration:none;">注册</a>
</li>
</ul>
<% end %>
</div>
</div>
<div class="cl"></div>
</div>
<div class="cl"></div>
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){
$(".homepageSearchIcon").click(function(){
var val=$('input:radio[name="search_type"]:checked').val();
if(val==null){
$("#navSearchAlert").css({display:"block"});
}
else {
$("#navSearchAlert").css({display:"none"});
}
});
});
$(document).ready(function(){
$(".navHomepageSearchBoxcontainer").mouseover(function(){
$(".navSearchTypeBox").css({display:"block"});
});
$(".navHomepageSearchBoxcontainer").mouseout(function(){
$(".navSearchTypeBox").css({display:"none"});
});
})
$(document).ready(function(){
if(<%= @login%>){
$("#signUpBox").css({display:"none"});
$("#loginInBox").css({display:"block"});
}else{
$("#signUpBox").css({display:"block"});
$("#loginInBox").css({display:"none"});
$('#drag').drag();
function g(o){
return document.getElementById(o);
}
function HoverLi(n){
for(var i=1;i<=2;i++){
g('login_weixin_nav_'+i).className='login_weixin_nav_nomal';
g('login_weixin_content_'+i).className='undis';
}
});
g('login_weixin_nav_'+n).className='login_weixin_nav_hover';
g('login_weixin_content_'+n).className='dis';
}
var $login_correct = false;
var wait = 60;
function get_phone_verification_code(btn) {
if ($phone_correct){
if($('.drag_text').html() == "验证通过") {
$.get(
'<%=account_get_verification_code_path%>',
{ value: $('#user_phone_num').val().trim(),
type: 1},
function (data) {
if (data.status == "2") {
$('#user_phone_notice').html('该手机号已被注册');
$('#user_phone_notice').parent().show();
} else {
$('#user_phone_notice').html('');
$('#user_phone_notice').parent().hide();
time(btn);
}
});
} else{
$("#user_verification_notice").html("请先拖动滑块完成验证");
$('#user_verification_notice').parent().show();
}
}
}
function time(btn){
if (wait==0) {
$(btn).removeClass("rest-btn-ver");
btn.removeAttribute("disabled");
btn.innerHTML = "获取验证码";
wait = 60;
return;
}else{
$(btn).addClass("rest-btn-ver");
btn.setAttribute("disabled", "disabled");
btn.innerHTML = wait + "s后重试";
wait--;
}
setTimeout(function(){
time(btn);
},1000);
}
var $phone_correct = false;
var $mail_correct = false;
var $passwd_correct = false;
var $passwd_comfirm_correct = false;
var $passwd_1_correct = false;
var $passwd_2_correct = false;
jQuery(document).ready(function () {
var $login = $('#user_login')
var $mail = $('#user_mail')
var $password = $('#user_password')
var $password_confirmation = $('#user_password_confirmation')
$login.blur(function (event) {
if ($(this).is('#user_login')) {
if (/^[a-zA-Z][a-zA-Z\d]{3,14}$/.test(this.value) == false){
$('#login_req').html('<span style="color: #2384cd">只能使用英文字母和数字,必须以字母开头</span>');
$('#login_req').show();
return ;
var $phone_num = $('#user_phone_num');
var $mail = $('#user_email_addr');
var $password1 = $('#user_password_1');
var $password2 = $('#user_password_2');
$phone_num.val("");
$mail.val("");
$password1.val("");
$password2.val("");
$phone_num.blur(function (event) {
if ($(this).is('#user_phone_num')) {
if (/^1\d{10}$/.test(this.value) == false){
$('#user_phone_notice').html('请输入有效的11位手机号码');
$('#user_phone_notice').parent().show();
$("#user_phone_check").removeClass("fa-check").removeClass("color-light-green").addClass("fa-times-circle").addClass("color-orenge");
return false;
}
else{
$.get(
'<%=account_valid_ajax_path%>',
{ valid: "login",
{ valid: "phone",
value: this.value },
function (data) {
if (data.valid) {
$('#login_req').html('<span style="color: green">'+data.message+'</span>');
$login_correct = true;
$('#user_phone_notice').html('');
$('#user_phone_notice').parent().hide();
$("#user_phone_check").removeClass("fa-times-circle").removeClass("color-orenge").addClass("fa-check").addClass("color-light-green");
$phone_correct = true;
} else {
$('#login_req').html( '<span style="color: #2384cd">'+data.message+'</span>');
$login_correct = false;
$('#user_phone_notice').html('该手机号已被注册');
$('#user_phone_notice').parent().show();
$("#user_phone_check").removeClass("fa-check").removeClass("color-light-green").addClass("fa-times-circle").addClass("color-orenge");
$phone_correct = false;
}
$('#login_req').css('display','block');
});
}
}
// ;
});
$mail.blur(function (event) {
if (/^[a-zA-Z0-9]+([._\\]*[a-z0-9])*@([a-z0-9]+[-a-z0-9]*[a-z0-9]+.){1,63}[a-z0-9]+$/.test(this.value) == false){
$('#mail_req').html( '<span style="color: #2384cd">邮件格式不对</span>').show();
$('#user_email_addr_notice').html('邮箱地址格式不对');
$('#user_email_addr_notice').parent().show();
$("#user_email_check").removeClass("fa-check").removeClass("color-light-green").addClass("fa-times-circle").addClass("color-orenge");
$mail_correct = false;
return ;
}
if ($(this).is('#user_mail')) {
if ($(this).is('#user_email_addr')) {
$.get('<%=account_valid_ajax_path%>',
{ valid: "mail",
value: this.value },
function (data) {
if (data.valid) {
$('#mail_req').html( '<span style="color: green">'+data.message+'</span>' );
$('#user_email_addr_notice').html('');
$('#user_email_addr_notice').parent().hide();
$("#user_email_check").removeClass("fa-times-circle").removeClass("color-orenge").addClass("fa-check").addClass("color-light-green");
$mail_correct = true;
} else {
$('#mail_req').html( '<span style="color: #2384cd">'+data.message+'</span>' );
$('#user_email_addr_notice').html(data.message);
$('#user_email_addr_notice').parent().show();
$("#user_email_check").removeClass("fa-check").removeClass("color-light-green").addClass("fa-times-circle").addClass("color-orenge");
$mail_correct = false;
}
$('#mail_req').css('display','block');
});
}
;
});
$password.blur(function () {
var pas1 = document.getElementById("user_password").value;
var password_min_length = <%= Setting.password_min_length.to_i %>
$password1.blur(function () {
var pas1 = document.getElementById("user_password_1").value;
var password_min_length = <%= Setting.password_min_length.to_i %>;
if (pas1.length >= password_min_length) {
$('#passwd_req').html('');
$passwd_correct = true;
$('#user_password_1_notice').html('');
$('#user_password_1_notice').parent().hide();
$("#user_password_1_check").removeClass("fa-times-circle").removeClass("color-orenge").addClass("fa-check").addClass("color-light-green");
$passwd_1_correct = true;
}
else {
$('#passwd_req').html( '<span style="color: #2384cd">'+'<%= l(:setting_password_min_length_limit, :count => Setting.password_min_length.to_i) %>'+'</span>');
$passwd_correct = false;
$('#user_password_1_notice').html('<%= l(:setting_password_min_length_limit, :count => Setting.password_min_length.to_i) %>');
$('#user_password_1_notice').parent().show();
$("#user_password_1_check").removeClass("fa-check").removeClass("color-light-green").addClass("fa-times-circle").addClass("color-orenge");
$passwd_1_correct = false;
}
$('#passwd_req').css('display','block');
});
$password_confirmation.blur(function () {
var password_min_length = <%= Setting.password_min_length.to_i %>
var pas1 = document.getElementById("user_password").value;
var pas2 = document.getElementById("user_password_confirmation").value;
if (pas1.length >= password_min_length && pas1 == pas2 ) {
$('#confirm_req').html('<span style="color: green">'+'<%= l(:setting_password_success) %>'+'</span>');
$passwd_comfirm_correct = true;
$password2.blur(function () {
var pas1 = document.getElementById("user_password_2").value;
var password_min_length = <%= Setting.password_min_length.to_i %>;
if (pas1.length >= password_min_length) {
$('#user_password_2_notice').html('');
$('#user_password_2_notice').parent().hide();
$("#user_password_2_check").removeClass("fa-times-circle").removeClass("color-orenge").addClass("fa-check").addClass("color-light-green");
$passwd_2_correct = true;
}
else {
$('#confirm_req').html('<span style="color: #2384cd">'+'<%= l(:setting_password_error) %>'+'</span>');
$passwd_comfirm_correct = false;
$('#user_password_2_notice').html('<%= l(:setting_password_min_length_limit, :count => Setting.password_min_length.to_i) %>');
$('#user_password_2_notice').parent().show();
$("#user_password_2_check").removeClass("fa-check").removeClass("color-light-green").addClass("fa-times-circle").addClass("color-orenge");
$passwd_2_correct = false;
}
$('#confirm_req').css('display','block');
});
});
</script>

View File

@ -4,7 +4,7 @@
<p class="fl ml10 ">高校教育大数据服务平台</p>
</div>
<a href="<%= user_join_path %>" class="fr new-btn mt10">注册</a>
<a href="<%= signin_url %>" class="fr new-btn new-btn-green mr5 mt10">登录</a>
<a href="<%= signin_url %>" class="fr new-btn new-btn-blue mr5 mt10">登录</a>
<div id="navHomepageSearch">
<% name = name%>
<%= form_tag({controller: :welcome, action: :search },:class=>'navHomepageSearchBox', method: :get) do %>

View File

@ -1,9 +1,9 @@
<footer class="inner-footer">
<footer class="inner-footer" id="new_footer">
<div class="inner-footer_con">
<ul class="clearfix inner-footer-nav">
<li><a href="<%= home_path %>" class="fl" target="_blank">网站首页</a></li>
<li><a href="<%= agreement_path %>" class="fl" target="_blank">服务协议</a></li>
<li><%= link_to l(:label_surpport_group), "#{Setting.protocol}://#{Setting.host_name}/forums/1/memos/1168", :class => "fl", :target=>"_blank" %></li>
<li><%= link_to "支持", "#{Setting.protocol}://#{Setting.host_name}/forums/1/memos/1168", :class => "fl", :target=>"_blank" %></li>
<li><a href="<%= forums_path %>" class="fl" target="_blank">社区</a></li>
</ul>
<div class="cl"></div>

View File

@ -4,7 +4,7 @@
</div>
<div id="navHomepageSearch">
<% name = name%>
<%= form_tag({controller: :welcome, action: :search },:class=>'navHomepageSearchBox', method: :get) do %>
<%= form_tag({controller: :welcome, action: :search }, method: :get) do %>
<input type="text" name="q" value="<%= name.nil? ? "" : name %>" id="navHomepageSearchInput" class="new-search fl ml10 mr10" placeholder="请输入关键词进行搜索" onkeypress="search_in_header_I(event,$(this));"/>
<input type="hidden" name="search_type" id="type" value="all"/>
<input type="text" style="display: none;"/>
@ -17,7 +17,7 @@
</li>
</ul>
<a href="<%= user_join_path %>" class="fr new-btn mt10">注册</a>
<a href="<%= signin_path %>" class="fr new-btn new-btn-green mr5 mt10">登录</a>
<a href="<%= signin_path %>" class="fr new-btn new-btn-blue mr5 mt10">登录</a>
</div>
<script>

View File

@ -7,18 +7,21 @@
<meta name="keywords" content="issue,bug,tracker" />
<%= csrf_meta_tag %>
<%= favicon %>
<%= stylesheet_link_tag 'css/login', 'css/font-awesome' %>
<%= stylesheet_link_tag 'css/bigdata-showpage', 'css/font-awesome', 'css/bigdata-common', 'css/bigdata-login', 'css/bigdata-popup' %>
<%#= stylesheet_link_tag 'rtl', :media => 'all' if l(:direction) == 'rtl' %>
<%= javascript_heads %>
<%= javascript_include_tag "bootstrap" %>
<%= javascript_include_tag "bootstrap", "bigdata" %>
</head>
<body>
<header class="header">
<% if @welcome %>
<header class="header">
<%= render :partial => User.current.logged? ? 'layouts/logined_header' : 'layouts/unlogin_header' %>
<%#= render :partial => 'layouts/bigdata_header' %>
</header>
<% end %>
<div id="Container">
<%= yield %>
</div>
<%= render :partial => 'layouts/footer' %>
</body>
<%= javascript_include_tag 'bigdata' %>
</html>

View File

@ -1,4 +1,68 @@
<p><%= l(:mail_body_lost_password) %><br />
<%= link_to h(@url), @url %></p>
<html>
<head>
<meta charset="utf-8">
<title>邮箱验证码发送</title>
<style type="text/css">
/* 邮箱验证链接页面 */
body,h1,h2,h3,h4,h5,h6,hr,p,blockquote,dl,dt,dd,ul,ol,li,pre,form,fieldset,legend,button,input,textarea,th,td{ margin:0; padding:0;}
body,table,input,textarea,select,button { font-family: "微软雅黑","宋体"; font-size:12px;line-height:1.5; background:#eaebec;}
div,img,tr,td,table{ border:0;}
table,tr,td{border:0;}
ol,ul,li{ list-style-type:none}
.new_content{ background:#fff; width: 100%;}
.email-page-link{ }
.email-link-top{ }
.c_white{ color:#fff;}
.email-link-con{ }
.email-link-line{ }
.email-link-footer{ padding:15px; color:#333; line-height: 1.9; }
.c_grey02{ color: #888;}
.fb{ font-weight: normal;}
.f14{ }
</style>
<p><%= l(:field_login) %>: <b><%=h @token.user.login %></b></p>
</head>
<body style="background:#fff;">
<div class="new_content">
<div style="width: 598px; background:#fff; margin:20px auto; font-size:14px; ">
<div style="height:50px; width: 578px; background:#46484c; padding:9px 10px 6px;border:1px solid #ddd; border-bottom:none;">
<a href="www.trustie.net" >
<img src="http://www.trustie.org/images/bigdata/new-logo.png?1485311929" width="45" height="45" style=" float:left;" >
<p style="color:#fff; float:left; margin-top:15px; margin-left:15px;">高校大数据教育平台</p>
</a>
<div style="clear:both; overflow:hidden;"></div>
</div>
<div style="width: 558px; border-left:1px solid #ddd;border-right:1px solid #ddd; background:#fff; padding:50px 20px; color:#333; line-height: 1.9;">
<p style="color:#333; font-size:16px; margin-bottom:15px;">
亲爱的<span style="font-weight:bold;color:#3b94d6; margin-left:5px; margin-right:5px;"><%= @login %></span>,您好!
</p>
<p style="color:#333;">欢迎使用高校大数据教育平台找回密码功能。<br/>
您此次找回密码的验证码如下,请在<span style=" color:#e72c37;"> 10 分钟</span>内在找回密码页输入此验证码,并进行下一步操作。
如非你本人操作,请忽略此邮件。<br/>
</p>
<div style="text-align: center;">
<div style="display:block; height: 45px; line-height:45px;padding:0 30px; width:100px; font-size: 20px; font-weight: bold; background:#ffd9d9; color:#e72c37; margin:30px auto;">
<p><%= @code %></p>
</div>
<span style="font-weight: normal;color:#666;">
此邮件为系统所发,请勿直接回复。<br/>
要解决问题或了解您的帐户详情,您可以访问 <a href="http://www.trustie.org/forums/1/memos/1168" style="font-weight: normal; color:#3b94d6;">帮助中心</a>。
</span>
</div>
<p style="color:#666; margin-top:30px;">
如果您并未发过此请求,则可能是因为其他用户在尝试重设密码时误输了您的邮件地址,而使您收到了这封邮件,那么您可以放心的忽略此邮件,无需进一步采取任何操作。
</p>
</div>
<div style="padding:20px; color:#333; line-height: 1.9;background:#46484c;border:1px solid #ddd; border-top:none; width: 558px;">
<a href="http://www.trustie.org/" style="font-weight: normal; color:#fff;">www.trustie.org</a>
</div>
</div>
</div>
</body>
</html>

View File

@ -29,7 +29,7 @@
</div>
<div style="width: 558px; border-left:1px solid #ddd;border-right:1px solid #ddd; background:#fff; padding:20px; color:#333; line-height: 1.9;">
<p style="font-size: 14px; color:#333;">
<span style="font-weight:bold;color:#3b94d6;"><%= @login %></span>,您好!<br/>
您好!<br/>
您已经成功注册为Trustie用户<br/>
请点击以下链接激活您的帐号:<br/>
<%= link_to h(@url), @url, :style => "font-weight: normal; color:#3b94d6;" %><br/>

View File

@ -530,7 +530,11 @@ RedmineApp::Application.routes.draw do
match 'account/lost_password', :via => [:get, :post], :as => 'lost_password'
match 'account/activate', :via => :get
match 'account/valid_ajax', :via => :get
match 'account/valid_register_user', :via => :get
match 'account/valid_verification_code', :via => :get
match 'account/get_verification_code', :via => :get
match 'account/change_email', :via => :get
match 'account/reset_psd', :via => [:get, :post]
match 'account/email_valid', :to => 'account#email_valid', :via => :get
match 'account/resendmail', :to => 'account#resendmail', :via=> :get, :as => 'resendmail'
match 'projects/:id/wiki', :to => 'wikis#edit', :via => :post

View File

@ -0,0 +1,5 @@
class AddPhoneToUser < ActiveRecord::Migration
def change
add_column :users, :phone, :string
end
end

View File

@ -0,0 +1,13 @@
class CreateVerificationCodes < ActiveRecord::Migration
def change
create_table :verification_codes do |t|
t.string :code
t.integer :code_type
t.integer :status
t.string :phone
t.string :email
t.timestamps
end
end
end

View File

@ -11,7 +11,7 @@
#
# It's strongly recommended to check this file into your version control system.
ActiveRecord::Schema.define(:version => 20170309024921) do
ActiveRecord::Schema.define(:version => 20170322095511) do
create_table "activities", :force => true do |t|
t.integer "act_id", :null => false
@ -521,6 +521,13 @@ ActiveRecord::Schema.define(:version => 20170309024921) do
add_index "contest_messages", ["contest_id"], :name => "index_contest_messages_on_contest_id"
add_index "contest_messages", ["user_id"], :name => "index_contest_messages_on_user_id"
create_table "contest_notifications", :force => true do |t|
t.text "title"
t.text "content"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
create_table "contestant_for_contests", :force => true do |t|
t.integer "student_id"
t.integer "contest_id"
@ -588,6 +595,37 @@ ActiveRecord::Schema.define(:version => 20170309024921) do
add_index "contestant_works", ["user_id"], :name => "index_contestant_works_on_user_id"
add_index "contestant_works", ["work_id"], :name => "index_contestant_works_on_work_id"
create_table "contesting_projects", :force => true do |t|
t.integer "project_id"
t.string "contest_id"
t.integer "user_id"
t.string "description"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
t.string "reward"
end
create_table "contesting_softapplications", :force => true do |t|
t.integer "softapplication_id"
t.integer "contest_id"
t.integer "user_id"
t.string "description"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
t.string "reward"
end
create_table "contestnotifications", :force => true do |t|
t.integer "contest_id"
t.string "title"
t.string "summary"
t.text "description"
t.integer "author_id"
t.integer "notificationcomments_count"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
create_table "contests", :force => true do |t|
t.integer "user_id"
t.string "name"
@ -820,6 +858,21 @@ ActiveRecord::Schema.define(:version => 20170309024921) do
add_index "delayed_jobs", ["priority", "run_at"], :name => "delayed_jobs_priority"
create_table "delayed_jobs_20161218", :id => false, :force => true do |t|
t.integer "id", :default => 0, :null => false
t.integer "priority", :default => 0, :null => false
t.integer "attempts", :default => 0, :null => false
t.text "handler", :null => false
t.text "last_error"
t.datetime "run_at"
t.datetime "locked_at"
t.datetime "failed_at"
t.string "locked_by"
t.string "queue"
t.datetime "created_at"
t.datetime "updated_at"
end
create_table "discuss_demos", :force => true do |t|
t.string "title"
t.text "body"
@ -1090,8 +1143,8 @@ ActiveRecord::Schema.define(:version => 20170309024921) do
t.integer "homework_type", :default => 1
t.string "late_penalty"
t.integer "course_id"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
t.integer "teacher_priority", :default => 1
t.integer "anonymous_comment", :default => 0
t.integer "quotes", :default => 0
@ -1099,6 +1152,8 @@ ActiveRecord::Schema.define(:version => 20170309024921) do
t.datetime "simi_time"
t.integer "score_open", :default => 1
t.integer "anonymous_appeal", :default => 0
t.integer "homework_bank_id"
t.boolean "is_update", :default => false
end
add_index "homework_commons", ["course_id", "id"], :name => "index_homework_commons_on_course_id_and_id"
@ -1401,6 +1456,23 @@ ActiveRecord::Schema.define(:version => 20170309024921) do
add_index "memos", ["root_id"], :name => "index_memos_on_root_id"
create_table "mess", :id => false, :force => true do |t|
t.string "课程名"
t.integer "课程ID", :default => 0, :null => false
t.string "教师姓", :default => "", :null => false
t.string "教师名", :limit => 30, :default => "", :null => false
t.string "主贴名", :default => "", :null => false
t.integer "主贴或回帖ID", :default => 0, :null => false
t.integer "回帖对应主贴ID"
t.integer "帖子点赞数"
t.integer "主贴回复数", :default => 0, :null => false
t.text "主贴或回帖内容"
t.datetime "发帖时间", :null => false
t.integer "发帖或回帖用户ID", :default => 0, :null => false
t.string "发帖或回帖用户姓", :default => "", :null => false
t.string "发帖或回帖用户名", :limit => 30, :default => "", :null => false
end
create_table "message_alls", :force => true do |t|
t.integer "user_id"
t.integer "message_id"
@ -2457,12 +2529,23 @@ ActiveRecord::Schema.define(:version => 20170309024921) do
t.integer "visits", :default => 0
t.integer "excellent_teacher", :default => 0
t.integer "excellent_student", :default => 0
t.string "phone"
end
add_index "users", ["auth_source_id"], :name => "index_users_on_auth_source_id"
add_index "users", ["id", "type"], :name => "index_users_on_id_and_type"
add_index "users", ["type"], :name => "index_users_on_type"
create_table "verification_codes", :force => true do |t|
t.string "code"
t.integer "code_type"
t.integer "status"
t.string "phone"
t.string "email"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
create_table "versions", :force => true do |t|
t.integer "project_id", :default => 0, :null => false
t.string "name", :default => "", :null => false

View File

@ -1,6 +1,6 @@
#coding=utf-8
require 'net/http'
require 'net/https'
require 'uri'
module Trustie
@ -10,7 +10,7 @@ module Trustie
begin
o = sendYunpian(opt[:mobile], opt[:code])
if o["code"] != 0
Rails.logger.error "发送短信出错: #{o['msg']}"
Rails.logger.error "发送短信出错: #{o['code']}--#{o['msg']}"
end
return o["code"] == 0
rescue => e
@ -21,21 +21,27 @@ module Trustie
def self.sendYunpian(mobile, code)
#修改为您的apikey.可在官网http://www.yunpian.com)登录后用户中心首页看到
apikey = '2affbf2ff83f9810512622ec83bccd4f'
apikey = Redmine::Configuration['sms_apikey']
#指定模板发送接口HTTP地址
send_tpl_sms_uri = URI.parse('https://sms.yunpian.com/v2/sms/tpl_single_send.json')
send_tpl_sms_uri = URI.parse('https://sms.yunpian.com/v2/sms/single_send.json')
params = {}
params['apikey'] = apikey
params['mobile'] = mobile
#指定模板发送
#设置模板ID如使用1号模板:【#company#】您的验证码是#code#
#设置对应的模板变量值
params['text'] = "【实训吧】" + code + "(手机验证码)。如非本人操作,请忽略。"
params['tpl_id'] = 1733594
params['tpl_value'] = URI::escape('#code#')+'='+URI::escape(code)
response = Net::HTTP.post_form(send_tpl_sms_uri,params)
ActiveSupport::JSON.decode(response.body)
http = Net::HTTP.new(send_tpl_sms_uri.host, send_tpl_sms_uri.port)
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
http.use_ssl = true
begin
request = Net::HTTP::Post.new(send_tpl_sms_uri.request_uri)
request.set_form_data(params)
request['Content-Type'] = 'application/x-www-form-urlencoded;charset=utf-8'
response = http.start { |http| http.request(request) }
ActiveSupport::JSON.decode(response.body)
rescue =>err
return nil
end
end
end
end

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

View File

@ -632,6 +632,42 @@ function warnLeavingUnsaved(message) {
};
}
function set_footer(){
var footerHeight = 0,
footerTop = 0,
$footer = $("#new_footer");
positionFooter();
//定义positionFooter function
function positionFooter() {
//取到div#footer高度
footerHeight = $footer.height();
//div#footer离屏幕顶部的距离
footerTop = ($(window).scrollTop()+$(window).height()-footerHeight)+"px";
/* DEBUGGING STUFF
console.log("Document height: ", $(document.body).height());
console.log("Window height: ", $(window).height());
console.log("Window scroll: ", $(window).scrollTop());
console.log("Footer height: ", footerHeight);
console.log("Footer top: ", footerTop);
console.log("-----------")
*/
//如果页面内容高度小于屏幕高度div#footer将绝对定位到屏幕底部否则div#footer保留它的正常静态定位
if ( ($(document.body).height()) < $(window).height()) {
$footer.css({
position: "absolute"
}).stop().animate({
top: footerTop
});
} else {
$footer.css({
position: "static"
});
}
}
$(window).scroll(positionFooter).resize(positionFooter);
}
function setupHeartBeat(){
var time = 60*1000*30; // 30 mins
setInterval(function(){$.getJSON('/account/heartbeat');},time);
@ -699,6 +735,7 @@ $(document).ready(setupAjaxIndicator);
$(document).ready(setupHeartBeat);
$(document).ready(hideOnLoad);
$(document).ready(addFormObserversForDoubleSubmit);
$(document).ready(set_footer);
function img_thumbnails() {
$('.thumbnails a').colorbox({rel:'nofollow'});

View File

@ -1,17 +1,311 @@
var $lost_psd_valid = false;
var lost_psd_time = 60;
$(function(){
$("#change_user_email").on("click", function(){
$("#change_user_email_block").toggle();
});
$("#lost_psd_input").on("blur", function(){
if (/^1\d{10}$/.test($("#lost_psd_input").val())){
$.get(
'/account/valid_register_user',
{ valid: "phone",
value: $("#lost_psd_input").val() },
function (data) {
if (data.valid) {
$('#user_phone_notice').html('');
$('#user_phone_notice').parent().hide();
$("#user_phone_check").removeClass("fa-times-circle").removeClass("color-orenge").addClass("fa-check").addClass("color-light-green");
$lost_psd_valid = true;
} else {
$('#user_phone_notice').html(data.message);
$('#user_phone_notice').parent().show();
$("#user_phone_check").removeClass("fa-check").removeClass("color-light-green").addClass("fa-times-circle").addClass("color-orenge");
$lost_psd_valid = false;
}
});
} else if(/^[a-zA-Z0-9]+([._\\]*[a-z0-9])*@([a-z0-9]+[-a-z0-9]*[a-z0-9]+.){1,63}[a-z0-9]+$/.test($("#lost_psd_input").val())){
$.get('/account/valid_register_user',
{ valid: "mail",
value: $("#lost_psd_input").val() },
function (data) {
if (data.valid) {
$('#user_phone_notice').html('');
$('#user_phone_notice').parent().hide();
$("#user_phone_check").removeClass("fa-times-circle").removeClass("color-orenge").addClass("fa-check").addClass("color-light-green");
$lost_psd_valid = true;
} else {
$('#user_phone_notice').html(data.message);
$('#user_phone_notice').parent().show();
$("#user_phone_check").removeClass("fa-check").removeClass("color-light-green").addClass("fa-times-circle").addClass("color-orenge");
$lost_psd_valid = false;
}
});
} else{
$lost_psd_valid = false;
$('#user_phone_notice').html('请输入有效的邮箱或手机号');
$('#user_phone_notice').parent().show();
$("#user_phone_check").removeClass("fa-check").removeClass("color-light-green").addClass("fa-times-circle").addClass("color-orenge");
return false;
}
});
$("#new_psd_submit").on("click", function(){
var length = parseInt($("#password_min_length").val());
if($("#new_password").val().length < length){
$('#new_password_notice').parent().show();
} else{
$('#new_password_notice').parent().hide();
if($("#new_password").val() != $("#new_password_confirmation").val()) {
$('#new_password_confirmation_notice').parent().show();
} else{
$('#new_password_confirmation_notice').parent().hide();
$("#new_psd_submit").parent().parent().parent().submit();
}
}
});
});
function settime(btn){
if (lost_psd_time==0) {
$(btn).removeClass("rest-btn-ver");
btn.removeAttribute("disabled");
btn.innerHTML = "获取验证码";
lost_psd_time = 60;
return;
}else{
$(btn).addClass("rest-btn-ver");
btn.setAttribute("disabled", "disabled");
btn.innerHTML = lost_psd_time + "s后重试";
lost_psd_time--;
}
setTimeout(function(){
settime(btn);
},1000);
}
function get_psd_verification_code(btn){
if($lost_psd_valid){
if($('.drag_text').html() == "验证通过") {
btn.setAttribute("disabled", "disabled");
$.get(
'/account/get_verification_code',
{ value: $('#lost_psd_input').val().trim(),
type: 2},
function (data) {
if (data.status == "2") {
$('#user_phone_notice').html('该手机号或邮箱未注册');
$('#user_phone_notice').parent().show();
btn.removeAttribute("disabled");
} else {
$('#user_phone_notice').html('');
$('#user_phone_notice').parent().hide();
settime(btn);
if(data.status == "3"){
$("#ver_code_type").val(3);
$("#send_success_notice").html("验证码已发送到您的邮箱,去<a href='http://mail." + data.link + "' style='color: #6a8abe; text-decoration: underline;' target='_blank'>查收</a>");
$("#send_success_notice").show();
} else{
$("#ver_code_type").val(2);
$("#send_success_notice").html("验证码已发送到您的手机,请注意查收");
$("#send_success_notice").show();
}
}
});
} else{
$("#user_verification_notice").html("请先拖动滑块完成验证");
$('#user_verification_notice').parent().show();
}
}
}
function lost_psd_next(){
if($("#lost_psd_next_a").hasClass('new_login_submit_disable')){
return;
}
if($lost_psd_valid){
if($('.drag_text').html() == "验证通过"){
if($("#psd_verification_code").val().trim() == ""){
$("#psd_verification_code").html("请输入验证码");
$("#phone_verification_code_notice").parent().show();
} else{
$("#phone_verification_code_notice").html("");
$("#phone_verification_code_notice").parent().hide();
$.get(
'/account/valid_verification_code',
{ phone: $("#lost_psd_input").val().trim(),
code: $("#psd_verification_code").val().trim(),
type: $("#ver_code_type").val()},
function (data) {
if (data.valid) {
$("#phone_verification_code_notice").html("");
$("#phone_verification_code_notice").parent().hide();
$("#lost_psd_next_a").addClass("new_login_submit_disable");
window.location.href = "/account/reset_psd?value="+$("#lost_psd_input").val().trim();
} else {
$("#phone_verification_code_notice").html("手机验证码错误或过期");
$("#phone_verification_code_notice").parent().show();
}
});
}
} else{
$("#user_verification_notice").html("请先拖动滑块完成验证");
$('#user_verification_notice').parent().show();
}
} else{
$('#lost_psd_input').blur();
}
}
function submit_user_emails(id){
if (/^[a-zA-Z0-9]+([._\\]*[a-z0-9])*@([a-z0-9]+[-a-z0-9]*[a-z0-9]+.){1,63}[a-z0-9]+$/.test($("#user_new_email").val()) == false){
$('#mail_req').html("请输入有效的邮箱地址").show();
return ;
} else{
$.get('/account/valid_ajax',
{ valid: "mail",
value: $("#user_new_email").val() },
function (data) {
if (data.valid) {
$('#mail_req').html("");
$.get('/account/change_email',
{ valid: "mail",
value: $("#user_new_email").val(),
user_id: id
},
function (change_data){
$("#user_email_show").html(change_data.email);
$("#user_email_link").attr('href', 'http://mail.' + change_data.email_link);
$("#user_new_email").val("");
$("#change_user_email_block").toggle();
return;
});
} else {
$('#mail_req').html("该邮箱已注册");
}
$('#mail_req').show();
});
}
}
function loginin(){
$('#main_login_form').submit(); //表单提交没有任何反应的原因js冲突
}
function register(){
if($("#loginUpButton").hasClass('new_login_submit_disable')){
function phone_register(){
if($("#regist_btn_phone").hasClass('new_login_submit_disable')){
return;
}
if($login_correct && $mail_correct && $passwd_correct && $passwd_comfirm_correct && $("#read_and_confirm").attr("checked") == 'checked'){
$("#main_reg_form").submit();
if($phone_correct && $passwd_1_correct){
if($("#phone_verification_code").val().trim() == ""){
$("#phone_verification_code_notice").html("请输入手机验证码");
$("#phone_verification_code_notice").parent().show();
} else{
$("#phone_verification_code_notice").html("");
$("#phone_verification_code_notice").parent().hide();
if($("#read_and_confirm_1").attr("checked") == 'checked'){
$("#user_aggre_1_notice").html("");
$("#user_aggre_1_notice").parent().hide();
$.get(
'/account/valid_verification_code',
{ phone: $("#user_phone_num").val().trim(),
code: $("#phone_verification_code").val().trim(),
type: 1},
function (data) {
if (data.valid) {
$("#phone_verification_code_notice").html("");
$("#phone_verification_code_notice").parent().hide();
$("#main_reg_form").submit();
$("#regist_btn_phone").addClass("new_login_submit_disable");
} else {
$("#phone_verification_code_notice").html("手机验证码错误或过期");
$("#phone_verification_code_notice").parent().show();
}
});
} else{
$("#user_aggre_1_notice").html("如果要继续请选中此框");
$("#user_aggre_1_notice").parent().show();
}
}
}else{
$('#user_login').blur();
$('#user_mail').blur();
$('#user_password').blur();
$('#user_password_confirmation').blur();
$('#user_phone_num').blur();
$('#user_password_1').blur();
}
}
}
function email_register(){
if($("#regist_btn_email").hasClass('new_login_submit_disable')){
return;
}
if($mail_correct && $passwd_2_correct){
if($("#read_and_confirm_2").attr("checked") == 'checked'){
$("#user_aggre_2_notice").html("");
$("#user_aggre_2_notice").parent().hide();
$("#main_reg_email_form").submit();
$("#regist_btn_email").addClass("new_login_submit_disable");
} else{
$("#user_aggre_2_notice").html("如果要继续请选中此框");
$("#user_aggre_2_notice").parent().show();
}
}else{
$('#user_email_addr').blur();
$('#user_password_2').blur();
}
}
(function($){
$.fn.drag = function(options){
var x, drag = this, isMove = false, defaults = {
};
var options = $.extend(defaults, options);
//添加背景,文字,滑块
var html = '<div class="drag_bg"></div>'+
'<div class="drag_text" onselectstart="return false;" unselectable="on">拖动滑块验证</div>'+
'<div class="handler handler_bg"></div>';
this.append(html);
var handler = drag.find('.handler');
var drag_bg = drag.find('.drag_bg');
var text = drag.find('.drag_text');
var maxWidth = drag.width() - handler.width(); //能滑动的最大间距
//鼠标按下时候的x轴的位置
handler.mousedown(function(e){
isMove = true;
x = e.pageX - parseInt(handler.css('left'), 10);
});
//鼠标指针在上下文移动时移动距离大于0小于最大间距滑块x轴位置等于鼠标移动距离
$(document).mousemove(function(e){
var _x = e.pageX - x;
if(isMove){
if(_x > 0 && _x <= maxWidth){
handler.css({'left': _x});
drag_bg.css({'width': _x});
}else if(_x > maxWidth){ //鼠标指针移动距离达到最大时清空事件
dragOk();
}
}
}).mouseup(function(e){
isMove = false;
var _x = e.pageX - x;
if(_x < maxWidth){ //鼠标松开时,如果没有达到最大距离位置,滑块就返回初始位置
handler.css({'left': 0});
drag_bg.css({'width': 0});
}
});
//清空事件
function dragOk(){
handler.removeClass('handler_bg').addClass('handler_ok_bg');
text.text('验证通过');
drag.css({'color': '#fff'});
handler.unbind('mousedown');
$(document).unbind('mousemove');
$(document).unbind('mouseup');
$("#user_verification_notice").html("");
$('#user_verification_notice').parent().hide();
}
};
})(jQuery);

View File

@ -0,0 +1,113 @@
/* 重置样式 */
body,h1,h2,h3,h4,h5,h6,hr,p,blockquote,dl,dt,dd,ul,ol,li,pre,form,fieldset,legend,button,input,textarea,th,td,span{ margin:0; padding:0;}
body,table,input,textarea,select,button { font-family: "微软雅黑","宋体"; font-size:12px;line-height:1.9; background:#f5f9fc; color:#333;}
div,img,tr,td,table{ border:0;}
table,tr,td{border:0;}
ol,ul,li{ list-style-type:none}
a:link,a:visited{text-decoration:none;color:#898989; }
a:hover {color:#29bd8b;}
/*万能清除浮动*/
.clearfix:after{clear:both;content:".";display:block;font-size:0;height:0;line-height:0;visibility:hidden;}
.clearfix{clear:both;zoom:1}
.cl{ clear: both; overflow: hidden;}
/*通用浮动*/
.fl{ float: left;}
.fr{ float: right;}
/*通用文字功能样式*/
.font-bd{ font-weight: bold;}
.color-red{ color:#d2322d;}
.color-green{color:#51a74f;}
.color-light-green{color:#29bd8b;}
.color-blue{color:#6a8abe;}
.color-orenge{color:#ee4a1f;}
.color-yellow{color:#f0ad4e;}
.color-grey{color:#888;}
.color_white{ color:#fff;}
a.link-color-grey{color:#888;}
a:hover.link-color-grey{color:#29bd8b;}
a.link-color-green{color:#29bd8b;}
a.link-color-blue{color:#6a8abe;}
/*通用文字大小样式*/
.font-12{ font-size: 12px;}
.font-14{ font-size: 14px;}
.font-16{ font-size: 16px;}
.font-18{ font-size: 18px;}
.font-20{ font-size: 20px;}
.font-24{ font-size: 24px;}
.font-28{ font-size: 28px;}
.font-30{ font-size: 30px;}
/*通用内外边距*/
.mt3{ margin-top:3px;}.mt5{ margin-top:5px;}.mt8{ margin-top:8px;}.mt10{ margin-top:10px;}.mt12{ margin-top:12px;}.mt15{ margin-top:15px;}.mt20{ margin-top:20px;}.mt25{ margin-top:25px;}.mt30{ margin-top:30px;}.mt50{ margin-top:50px;}
.mb5{ margin-bottom: 5px;}.mb10{ margin-bottom: 10px;}.mb15{ margin-bottom: 15px;}.mb20{ margin-bottom: 20px;}.mb25{ margin-bottom: 25px;}.mb30{ margin-bottom: 30px;}
.ml5{ margin-left: 5px;}.ml10{ margin-left: 10px;}.ml15{ margin-left: 15px;}.ml20{ margin-left: 20px;}.ml25{ margin-left: 25px;}.ml30{ margin-left: 30px;}.ml50{ margin-left: 50px;}.ml230{ margin-left: 230px;}
.mr5{ margin-right: 5px;}.mr10{ margin-right: 10px;}.mr15{ margin-right: 15px;}.mr20{ margin-right: 20px;}.mr25{ margin-right: 25px;}.mr30{ margin-right:30px;}
.pt5{ padding-top:5px;}.pt10{ padding-top:10px;}.pt15{ padding-top:15px;}.pt20{ padding-top:20px;}
.pb5{ padding-bottom:5px;}.pb10{ padding-bottom:10px;}.pb15{ padding-bottom:15px;}.pb20{ padding-bottom:20px;}
.pl5{ padding-left:5px;}.pl10{ padding-left:10px;}.pl15{ padding-left:15px;}.pl20{ padding-left:20px;}
.pr5{ padding-right:5px;}.pr10{ padding-right:10px;}.pr15{ padding-right:15px;}.pr20{ padding-right:20px;}
/*定位*/
.pr{ position: relative;}
/*块*/
.col-width{ background: #fff; border:1px solid #e8e8e8;}
.col-width-10{ max-width: 100%; background: #fff; border:1px solid #e8e8e8;}
.col-width-9{ max-width: 90%; background: #fff; border:1px solid #e8e8e8;}
.col-width-8{ max-width: 80%; background: #fff; border:1px solid #e8e8e8;}
.col-width-7{ max-width: 70%; background: #fff; border:1px solid #e8e8e8;}
.col-width-6{ max-width: 60%; background: #fff; border:1px solid #e8e8e8;}
.col-width-5{ max-width: 50%; background: #fff; border:1px solid #e8e8e8;}
.col-width-4{ max-width: 40%; background: #fff; border:1px solid #e8e8e8;}
.col-width-3{ max-width: 30%; background: #fff; border:1px solid #e8e8e8;}
.col-width-2{ max-width: 20%; background: #fff; border:1px solid #e8e8e8;}
.col-width-1{ max-width: 10%; background: #fff; border:1px solid #e8e8e8;}
/*按钮*/
a.task-btn{display: inline-block;border:none; padding:0 35px;color: #666;background: #e1e1e1; text-align:center;font-size: 12px; height: 35px;line-height: 35px; border-radius:3px;}
a:hover.task-btn {background: #c3c3c3; }
a.task-btn-grey{background: #e1e1e1; cursor: pointer;}
a:hover.task-btn-grey {background: #e1e1e1; }
a.task-btn-green{background: #29bd8b; color: #fff;}
a:hover.task-btn-green{background: #19b17e;}
a.new-btn{display: inline-block;border:none; padding:0 10px;color: #666;background: #e1e1e1; text-align:center;font-size: 12px; height: 30px;border-radius: 3px; line-height: 30px;}
a.new-btn:hover{background: #c3c3c3; color: #333;}
a.new-btn-green{background: #29bd8b; color: #fff;}
a.new-btn-green:hover{background:#19b17e; }
a.new-btn-blue{background: #6a8abe; color: #fff;}
a.new-btn-blue:hover{background:#5f7cab; }
a.new-bigbtn{display: inline-block;border:none; padding:2px 30px;color: #666;background: #e1e1e1; text-align:center;font-size: 14px; height: 30px;line-height: 30px; border-radius: 3px;}
a:hover.new-bigbtn{background: #c3c3c3; color: #333;}
a.new-bigbtn-green{background: #3b94d6; color: #fff;}
a.new-bigbtn-green:hover{background: #2384cd; color: #fff;}
a.task-btn-ver{ height:45px; line-height: 45px; background: #6a8abe; color: #fff; border-radius:5px; font-size:12px; padding:0 10px;}
a.task-btn-ver-line{height:43px; line-height: 43px; border-radius:5px; font-size:12px; padding:0 10px; border:1px solid #ccc;}
a:hover.task-btn-ver-line{ border:1px solid #29bd8b;}
a:hover.task-btn-ver{background:#5f7cab;}
a.rest-btn-ver{ background: #969696; color: #fff; cursor: not-allowed}
a:hover.rest-btn-ver{ background: #969696;}
.new_login_submit_disable{ width:265px; height:40px; line-height: 40px; background:#ccc; color:#fff; font-size:14px; border-radius:5px; border:none; text-align:center; cursor:pointer; vertical-align: middle;}
a.new_login_submit{ display: inline-block; width:100%; height:45px; line-height: 45px; background:#29bd8b; color:#fff; font-size:14px; border-radius:5px; border:none; text-align:center; cursor:pointer; vertical-align: middle;}
a.new_login_submit:hover{background: #19b17e;}
/*提示条*/
.alert{ padding:10px;border: 1px solid transparent; text-align: center;}
.alert-blue{ background-color: #d9edf7;border-color: #bce8f1; color: #3a87ad;}
.alert-orange{ background-color: #fff9e9;border-color: #f6d0b1; color:#ee4a20;}
.alert-green{ background-color: #dff0d8;border-color: #d6e9c6; color:#3c763d;}
.close{padding: 0;cursor: pointer; background: transparent; border: 0; -webkit-appearance: none; font-size: 21px; font-weight: bold;line-height: 1; color: #000000; text-shadow: 0 1px 0 #ffffff; opacity: 0.3;}
.close:hover{opacity: 0.5;}
/*tag*/
.task-tag{ padding:0 10px; text-align: center; display:inline-block; height:30px; line-height: 30px;}
.tag-blue{ background-color: #d9edf7; color: #3a87ad;}
.tag-grey{ background-color: #f3f5f7; color: #4d555d;}
.tag-border-grey{ background-color: #fff;border-color: #e2e2e2; color: #888;}
/****************************/
/* 页面结构*/
.task-pm-content{ width: 1000px; margin: 0 auto; }
.task-pm-box{ width: 100%; background: #fff; border: 1px solid #e8e8e8;}
.task-paner-con{ padding:15px; color:#666; line-height:2.0;}
.task-text-center{ text-align: center;}
.flow_hidden{ width:300px;overflow:hidden; white-space: nowrap; text-overflow:ellipsis;}
/*pre标签换行*/
.break_word{word-break: break-all;word-wrap: break-word;}
.break_word_firefox{white-space: pre-wrap !important;word-break: break-all;}
.none{ display: none; }

View File

@ -0,0 +1,148 @@
/* 头部 */
.header{ width:100%; height:51px;background:#46484c; }
.header_con{ width:1200px; height:50px; margin:0 auto; }
.new-logo img{ width: 45px; height: 45px; margin-top:3px;}
.new-logo p{ font-size: 18px; color:#fff; line-height: 50px; }
a.new-nav-a{ display: block; font-size: 14px; line-height: 50px; color:#fff;}
a:hover.new-nav-a{ color:#3b94d6;}
input.new-search{border-radius:3px; width:300px; height:30px; margin-top: 10px; padding:0 5px; border-style: none; border: solid 1px #ccc;}
/* 登录注册 */
.new_login{ width:100%; background:#f5f9fc; color:#666; padding-bottom:50px; font-size:14px;}
.new_login_con{ width:1300px; margin:0 auto; background:#fff; border:1px solid #e8e8e8; padding:50px 0; }
.new_login_box{width:350px; padding:30px; border-radius:5px; margin:0 auto; border:solid 1px #fff;}
.new_login_h2{ font-size:18px; border-bottom:1px solid #fff; font-weight:normal; padding-bottom:5px; margin-bottom:30px;}
.new_login_h2 a{font-size:12px; background:url(/images/icons_login.png) 0 -69px no-repeat; padding-left:10px;}
input.new_loggin_input{ -webkit-box-shadow: 0 0 0px 1000px white inset; outline: none;width:295px; height:43px; border-radius:5px; padding-left:5px; line-height: 43px; font-size:14px; border: none; color:#666;}
input.new_loggin_input_test{ -webkit-box-shadow: 0 0 0px 1000px white inset; outline: none;width:260px; height:45px; border-radius:5px; padding-left:5px; line-height: 45px; font-size:14px; border:1px solid #ccc;}
.new_loggin_users{width:348px;height:43px;border-radius:5px; border:1px solid #ccc; position: relative; }
.new_login_lock{background:#fff url(/images/icons_login.png) 8px -28px no-repeat; width:265px; height:45px; border-radius:5px; border:none;}
.new_register_li{background:#fff; width:265px; height:45px; border-radius:5px; border:none;}
.new_login_form ul li{ margin-bottom:20px; }
.new_login_check{ width:15px; height:15px; border:1px solid #fff; border-style:none; margin-right:5px; vertical-align: -2px;}
.new_login_form label{ }
.new_login_form a{ text-decoration:underline;}
.new_register{ width:100%; height:550px; background:#46484c; padding-top:80px;}
.new_register_con{width:1200px; height:550px; margin:0 auto; }
.new_login_txt{width:450px; height:140px; padding:30px 12px 0; color:#fff; margin:100px 0 0 100px;}
.new_login_txt h3{ font-size:24px; text-align:center; margin-bottom:20px;}
.new_login_txt p{ line-height:2.0; font-size: 16px;}
.new_register_left{ margin-top:150px;}
.new_login_tishi{ color: #fff; }
/* 展示内容 */
.new-container{ width: 100%;}
.new-container-inner{width:1200px; margin:0px auto; padding:100px 0;}
.inner-txt{ width:300px;}
.inner-txt-h3{ font-size: 18px; color: #333; margin-bottom:20px;}
.inner-txt-p{font-size: 14px; color: #666; margin-bottom:20px;}
.back-color-grey{ background:#f5f5f5;}
.guanzhu-box{ position: relative;}
.img-guanzhu{ position: absolute; top:0; left: 0;}
.guanzhu-img-box{ display: none;}
.guanzhu-box li:hover ul{display:block; }
/* 底部 */
.footer{width:100%; height:100px; background-color:#fff; }
.footer_con{ width:1200px; height:100px; margin:0 auto; text-align: center; padding:20px 0; }
.footer_con-inner{ width: 300px; margin:0px auto;}
.footer_con-inner li{ }
.footer_con-inner li a{ font-size: 16px; color: #888;display: block;padding:0 15px; border-right: solid 1px #888;}
.footer_con-inner li a:hover{text-decoration: underline;}
.footer_con-p{ color: #888; margin-top:10px;}
/* 微信登录扫描新增20170103byLB */
.new_login_weixin {border-bottom:1px solid #ddd; width: 100%;}
.new_login_weixin li {float:left; width:50%; padding:5px 0; display:inline-block; text-align:center; }
.new_login_weixin li a{font-size:18px;}
.login_weixin_nav_hover{border-bottom:3px solid #29bd8b; }
.login_weixin_nav_nomal { }
.undis {display:none;}
.dis {display:block;}
.code_wxbox{ width:350px; text-align: center; padding:30px 0;}
.wx_img{ width: 150px; margin:10px auto 10px; }
a.wx_help{ }
a:hover.wx_help{ text-decoration: underline;}
.hidetips{ }
.hidetips:hover{ }
/* 新版内页 */
.innner-nav li{ float: left; margin-right: 25px;}
.inner-banner{ background:url(/images/inner/banner-inner.jpg) 0px 0px no-repeat; width: 100%; height: 550px; padding-top:50px;}
.inner-banner-con{ width: 1200px; margin: 0px auto; color:#fff; text-align: center;}
.inner-banner-con h2{ font-size: 60px; font-weight: normal;}
.inner-banner-con-h3{font-size: 24px; font-weight: normal; color: #fff;}
.inner-c_blue{ color:#3b94d6;}
a.btn-blue{ display: block; width:265px; height:40px; line-height: 40px; background:#3b94d6; color:#fff; font-size:14px; border-radius:5px; text-align:center;border: 3px solid #3b94d6; font-weight: bold; }
a:hover.btn-blue{background: #2384cd; border: 3px solid #2384cd;}
a.btn-blue-line{ display: block; width:265px; height:40px; line-height: 40px; border: 3px solid #3b94d6; color:#3b94d6; font-size:14px; border-radius:5px; text-align:center; font-weight: bold; }
a:hover.btn-blue-line{background: #3b94d6; color:#fff;}
.inner-btnbox{ width: 580px; margin: 30px auto;}
.innner-banner-bottom{ width: 300px; text-align: left; float: left; margin-top: 50px; font-size: 14px;}
.inner-border{ display: block; width: 100px; border-top:3px solid #fff; margin-bottom: 15px;}
.new-container-inner-h3{ font-size:40px; font-weight: normal; color: #333; text-align: center; margin-bottom: 20px;}
.innerbox-txt{ width:300px;}
.innerbox-txt-h3{ font-size:24px; color: #333; margin-bottom:20px;}
.innerbox-txt-p{font-size: 16px; color: #666; margin-bottom:20px;}
.back-color-black{ background:#47494d;}
.inner-t-c{ text-align: center;}
.inner-footer{ width: 100%; background:#323232; height:155px;}
.inner-footer_con{ width: 1200px; margin: 0 auto;}
.inner-footer-nav{ height: 50px; border-bottom:1px solid #47494d;}
.inner-footer-nav li a{ float: left; margin-right:15px; font-size: 14px; color: #888; line-height: 50px;}
.saoma-box{ position: relative;}
.img-saoma{ }
.saoma-img-box{ position: absolute; top:-300px; left: -95px; border-radius:3px; background:#fff; padding:15px;box-shadow: 0px 2px 8px rgba(146, 153, 169, 0.5); display: none;}
.saoma-box li:hover ul{display:block; }
.img-show{ width:50px; height:50px; border-radius:50px; }
.saoma-img-box font{ border: 1px solid #dddddd; display: block; border-width: 8px; position: absolute; top:289px;left: 110px; border-style:solid; border-color:#fff transparent transparent transparent;font-size: 0;line-height: 0; box-shadow:2px rgba(146, 153, 169, 0.5); }
.inner-footer-p-big{ display: block; height: 50px; line-height: 50px; color:#888; font-size: 16px; border-left:2px solid #888; padding-left:15px;}
.inner-btnbox02{ width:270px; margin: 30px auto 0;}
.new-container-inner02{width:1200px; margin:0px auto; padding:50px 0;}
.inner-nav-mes{ font-size:28px; color: #fff; position: relative; margin-top:3px; margin-right:35px;}
.inner-nav-cir{ position: absolute; top:0px; left:15px; background:#3b94d6; color:#fff; border-radius:15px;padding:0 5px; display: inline-block; font-size: 10px;}
.inner-nav-user{ width: 40px; height: 40px; margin-top:5px; position: relative;}
.inner-nav-user-img{ width: 40px; height: 40px; border-radius:50px;}
.inner-nav-user font{border: 1px solid #dddddd; display: block; border-width: 6px; position: absolute; top:18px;left:45px; border-style:solid; border-color:#fff transparent transparent transparent;font-size: 0;line-height: 0; box-shadow:2px rgba(146, 153, 169, 0.5);}
/*消息弹框*/
.shadowbox_news{ width:305px; background-color:#fff; box-shadow: 0px 2px 8px rgba(146, 153, 169, 0.5); position:absolute; font-size: 12px; top:50px; left:-135px;display: none; z-index:999;}
.shadowbox_news_title{ height:40px; line-height:40px;padding-left:10px; font-size:12px; color:#333;border-bottom:1px solid #eee;}
.shadowbox_news font{ border: 1px solid #dddddd; display: block; border-width: 8px; position: absolute; top: -15px;left: 140px; border-style:solid; border-color: transparent transparent #fff transparent;font-size: 0;line-height: 0; box-shadow:2px rgba(146, 153, 169, 0.5); }
.shadowbox_news_list{ max-height:200px; overflow:hidden;}
.shadowbox_news_list a{ color:#999;}
.shadowbox_news_list li{ height:40px; border-bottom:1px dashed #ebebeb; line-height:40px;overflow:hidden; white-space: nowrap; text-overflow:ellipsis; padding:0 10px;}
.shadowbox_news_list li:hover{ background-color:#eee;}
a.shadowbox_news_user{ color:#3b94d6;}
a.shadowbox_news_all{ display:block; width:305px; height:40px; line-height:40px; color:#3b94d6; text-align:center;border-top:1px solid #eee;}
.inner-nav-mes li:hover ul{ display: block;};
.inner-user-info{ border-radius:3px; background:#fff; padding:15px;box-shadow: 0px 2px 8px rgba(146, 153, 169, 0.5); width:305px; display:block; width:300px; display: none;}
.inner-user-info font{ border: 1px solid #dddddd; display: block; border-width: 8px; position: absolute; top:289px;left: 110px; border-style:solid; border-color:transparent transparent #fff transparent;font-size: 0;line-height: 0; box-shadow:2px rgba(146, 153, 169, 0.5); }
.inner-user-info li a{ display: block; height: 30px; line-height: 30px; color: #fff; width: 200px; }
.inner-img02{ width: 1000px; margin:0 auto;}
.inner-txtbox02{width: 800px; margin:0 auto;}
.inner-txtbox02 p{ display: block; width: 200px; font-size: 20px; float: left; margin-top:30px; text-align: center; color:#666;}
.innerbox-txt-h3{ font-size:28px; color: #333; margin-bottom:20px;}
.innerbox-txt-p{font-size: 20px; color: #666; margin-bottom:20px;}
/*邮件激活*/
.task-email-box{ width:450px; margin:0 auto; background:#fff;}
.task-email-box-pd{ padding:30px; color:#666;}
.task-mail-img{ width:40px; height: 40px; border-radius:100px; border:2px solid #ccc; }
.task-name{ display: inline-block; max-width: 100px; overflow:hidden; white-space: nowrap; text-overflow:ellipsis;}
.task-img-box{ width:265px;}
.new-login-header{ width: 1300px; margin:0 auto; height:70px;}
.new-login-header h2{ line-height: 70px; color:#666;}
.new-login-error{ display: inline-block; background-color:#fffafa; box-shadow: 0px 2px 8px rgba(255, 217, 217, 0.5); border:1px solid #ffd9d9; padding:5px; border-radius:5px; color:#dd6f75; width: 235px; position: absolute; left:360px; top:3px;}
.password-header{ width: 1300px; margin: 0 auto; background: #fff; border: 1px solid #e8e8e8; border-bottom:none; padding:15px 0;}
.new-loggin-other{ width:350px; text-align: center; padding-top:30px; border-top: 1px solid #e8e8e8;}
.task-img-weixin{ width: 50px; height: 50px; border-radius:100px; background:#ccc; }
.task-img-weixin:hover{ background:#86c610;}
.new-login-success{ text-align: center;}
.drag_slider{ position: relative; background-color: #e8e8e8; width: 350px; height: 45px; line-height: 45px; text-align: center;}
.drag_slider .handler{ position: absolute; top: 0px; left: 0px; width: 50px; height: 43px; border: 1px solid #ccc; cursor: move;}
.handler_bg{ background: #fff url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3hpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDIxIDc5LjE1NTc3MiwgMjAxNC8wMS8xMy0xOTo0NDowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo0ZDhlNWY5My05NmI0LTRlNWQtOGFjYi03ZTY4OGYyMTU2ZTYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NTEyNTVEMURGMkVFMTFFNEI5NDBCMjQ2M0ExMDQ1OUYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NTEyNTVEMUNGMkVFMTFFNEI5NDBCMjQ2M0ExMDQ1OUYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTQgKE1hY2ludG9zaCkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo2MTc5NzNmZS02OTQxLTQyOTYtYTIwNi02NDI2YTNkOWU5YmUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NGQ4ZTVmOTMtOTZiNC00ZTVkLThhY2ItN2U2ODhmMjE1NmU2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+YiRG4AAAALFJREFUeNpi/P//PwMlgImBQkA9A+bOnfsIiBOxKcInh+yCaCDuByoswaIOpxwjciACFegBqZ1AvBSIS5OTk/8TkmNEjwWgQiUgtQuIjwAxUF3yX3xyGIEIFLwHpKyAWB+I1xGSwxULIGf9A7mQkBwTlhBXAFLHgPgqEAcTkmNCU6AL9d8WII4HOvk3ITkWJAXWUMlOoGQHmsE45ViQ2KuBuASoYC4Wf+OUYxz6mQkgwAAN9mIrUReCXgAAAABJRU5ErkJggg==") no-repeat center;}
.handler_ok_bg{ background: #fff url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3hpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDIxIDc5LjE1NTc3MiwgMjAxNC8wMS8xMy0xOTo0NDowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo0ZDhlNWY5My05NmI0LTRlNWQtOGFjYi03ZTY4OGYyMTU2ZTYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NDlBRDI3NjVGMkQ2MTFFNEI5NDBCMjQ2M0ExMDQ1OUYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NDlBRDI3NjRGMkQ2MTFFNEI5NDBCMjQ2M0ExMDQ1OUYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTQgKE1hY2ludG9zaCkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDphNWEzMWNhMC1hYmViLTQxNWEtYTEwZS04Y2U5NzRlN2Q4YTEiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NGQ4ZTVmOTMtOTZiNC00ZTVkLThhY2ItN2U2ODhmMjE1NmU2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+k+sHwwAAASZJREFUeNpi/P//PwMyKD8uZw+kUoDYEYgloMIvgHg/EM/ptHx0EFk9I8wAoEZ+IDUPiIMY8IN1QJwENOgj3ACo5gNAbMBAHLgAxA4gQ5igAnNJ0MwAVTsX7IKyY7L2UNuJAf+AmAmJ78AEDTBiwGYg5gbifCSxFCZoaBMCy4A4GOjnH0D6DpK4IxNSVIHAfSDOAeLraJrjgJp/AwPbHMhejiQnwYRmUzNQ4VQgDQqXK0ia/0I17wJiPmQNTNBEAgMlQIWiQA2vgWw7QppBekGxsAjIiEUSBNnsBDWEAY9mEFgMMgBk00E0iZtA7AHEctDQ58MRuA6wlLgGFMoMpIG1QFeGwAIxGZo8GUhIysmwQGSAZgwHaEZhICIzOaBkJkqyM0CAAQDGx279Jf50AAAAAABJRU5ErkJggg==") no-repeat center;}
.drag_slider .drag_bg{ background-color: #29bd8b; height: 45px; width: 0px;}
.drag_slider .drag_text{ position: absolute; top: 0px; width: 350px; -moz-user-select: none; -webkit-user-select: none; user-select: none; -o-user-select:none; -ms-user-select:none;}

View File

@ -0,0 +1,6 @@
/* 修改密码成功弹框 */
.task-popup{background: #fff; border:1px solid #e8e8e8; border-radius:3px; -webkit-box-shadow:0 0 10px #ccc; -moz-box-shadow:0 0 10px #ccc; box-shadow:0 0 10px #ccc;}
.task-popup-text-center{ text-align: center; color: #666;}
.task-popup-title{ border-bottom: 1px solid #eee; padding:10px 15px; }
.task-popup-content{ padding:15px;}
.task-popup-submit{ margin:15px auto; width: 200px;}

View File

@ -0,0 +1,3 @@

View File

@ -0,0 +1,62 @@
/* 新版展示内页 */
.innner-nav li{ float: left; margin-right: 25px;}
.inner-banner{ background:url(/images/inner/banner-inner.jpg) 0px 0px no-repeat; width: 100%; height: 550px; padding-top:50px;}
.inner-man{ position: absolute; right:100px; top:115px;}
.inner-man img{width:200px; }
.inner-banner-con{ width: 1200px; margin: 0px auto; color:#fff; text-align: center;}
.inner-banner-con h2{ font-size: 60px; font-weight: normal;}
.inner-banner-con-h3{font-size: 24px; font-weight: normal; color: #fff;}
.inner-c_blue{ color:#3b94d6;}
a.btn-blue{ display: block; width:265px; height:40px; line-height: 40px; background:#3b94d6; color:#fff; font-size:14px; border-radius:5px; text-align:center;border: 3px solid #3b94d6; font-weight: bold; }
a:hover.btn-blue{background: #2384cd; border: 3px solid #2384cd;}
a.btn-blue-line{ display: block; width:265px; height:40px; line-height: 40px; border: 3px solid #3b94d6; color:#3b94d6; font-size:14px; border-radius:5px; text-align:center; font-weight: bold; }
a:hover.btn-blue-line{background: #3b94d6; color:#fff;}
.inner-btnbox{ width: 580px; margin: 30px auto;}
.innner-banner-bottom{ width: 300px; text-align: left; float: left; margin-top: 50px; font-size: 14px;}
.inner-border{ display: block; width: 100px; border-top:3px solid #fff; margin-bottom: 15px;}
.new-container-inner-h3{ font-size:40px; font-weight: normal; color: #333; text-align: center; margin-bottom: 20px;}
.innerbox-txt{ width:300px;}
.innerbox-txt-h3{ font-size:24px; color: #333; margin-bottom:20px;}
.innerbox-txt-p{font-size: 16px; color: #666; margin-bottom:20px;}
.back-color-black{ background:#47494d;}
.inner-t-c{ text-align: center;}
.inner-footer{ width: 100%; background:#323232; height:155px;}
.inner-footer_con{ width: 1200px; margin: 0 auto;}
.inner-footer-nav{ height: 50px; border-bottom:1px solid #47494d;}
.inner-footer-nav li a{ float: left; margin-right:15px; font-size: 14px; color: #888; line-height: 50px;}
.saoma-box{ position: relative;}
.img-saoma{ }
.saoma-img-box{ position: absolute; top:-300px; left: -95px; border-radius:3px; background:#fff; padding:15px;box-shadow: 0px 2px 8px rgba(146, 153, 169, 0.5); display: none;}
.saoma-box li:hover ul{display:block; }
.img-show{ width:50px; height:50px; border-radius:50px; }
.saoma-img-box font{ border: 1px solid #dddddd; display: block; border-width: 8px; position: absolute; top:289px;left: 110px; border-style:solid; border-color:#fff transparent transparent transparent;font-size: 0;line-height: 0; box-shadow:2px rgba(146, 153, 169, 0.5); }
.inner-footer-p-big{ display: block; height: 50px; line-height: 50px; color:#888; font-size: 16px; border-left:2px solid #888; padding-left:15px;}
.inner-btnbox02{ width:270px; margin: 30px auto 0;}
.new-container-inner02{width:1200px; margin:0px auto; padding:50px 0;}
.inner-nav-mes{ font-size:28px; color: #fff; position: relative; margin-top:3px; margin-right:35px;}
.inner-nav-cir{ position: absolute; top:0px; left:15px; background:#3b94d6; color:#fff; border-radius:15px;padding:0 5px; display: inline-block; font-size: 10px;}
.inner-nav-user{ width: 40px; height: 40px; margin-top:5px; position: relative;}
.inner-nav-user-img{ width: 40px; height: 40px; border-radius:50px;}
.inner-nav-user font{border: 1px solid #dddddd; display: block; border-width: 6px; position: absolute; top:18px;left:45px; border-style:solid; border-color:#fff transparent transparent transparent;font-size: 0;line-height: 0; box-shadow:2px rgba(146, 153, 169, 0.5);}
/*消息弹框*/
.shadowbox_news{ width:305px; background-color:#fff; box-shadow: 0px 2px 8px rgba(146, 153, 169, 0.5); position:absolute; font-size: 12px; top:50px; left:-135px;display: none; z-index:999;}
.shadowbox_news_title{ height:40px; line-height:40px;padding-left:10px; font-size:12px; color:#333;border-bottom:1px solid #eee;}
.shadowbox_news font{ border: 1px solid #dddddd; display: block; border-width: 8px; position: absolute; top: -15px;left: 140px; border-style:solid; border-color: transparent transparent #fff transparent;font-size: 0;line-height: 0; box-shadow:2px rgba(146, 153, 169, 0.5); }
.shadowbox_news_list{ max-height:200px; overflow:hidden;}
.shadowbox_news_list a{ color:#999;}
.shadowbox_news_list li{ height:40px; border-bottom:1px dashed #ebebeb; line-height:40px;overflow:hidden; white-space: nowrap; text-overflow:ellipsis; padding:0 10px;}
.shadowbox_news_list li:hover{ background-color:#eee;}
a.shadowbox_news_user{ color:#3b94d6;}
a.shadowbox_news_all{ display:block; width:305px; height:40px; line-height:40px; color:#3b94d6; text-align:center;border-top:1px solid #eee;}
.inner-nav-mes li:hover ul{ display: block;}
.inner-user-info{ border-radius:3px; background:#fff; padding:15px;box-shadow: 0px 2px 8px rgba(146, 153, 169, 0.5); width:305px; display:block; width:300px; display: none;}
.inner-user-info font{ border: 1px solid #dddddd; display: block; border-width: 8px; position: absolute; top:289px;left: 110px; border-style:solid; border-color:transparent transparent #fff transparent;font-size: 0;line-height: 0; box-shadow:2px rgba(146, 153, 169, 0.5); }
.inner-user-info li a{ display: block; height: 30px; line-height: 30px; color: #fff; width: 200px; }
.inner-img02{ width: 1000px; margin:0 auto;}
.inner-txtbox02{width: 800px; margin:0 auto;}
.inner-txtbox02 p{ display: block; width: 200px; font-size: 20px; float: left; margin-top:30px; text-align: center; color:#666;}
.innerbox-txt-h3{ font-size:28px; color: #333; margin-bottom:20px;}
.innerbox-txt-p{font-size: 20px; color: #666; margin-bottom:20px;}

File diff suppressed because it is too large Load Diff

View File

@ -39,6 +39,8 @@ a.new-btn{display: inline-block;border:none; padding:0 10px;color: #666;backgrou
a.new-btn:hover{background: #c3c3c3; color: #333;}
a.new-btn-green{background: #3b94d6; color: #fff;}
a.new-btn-green:hover{background: #2384cd; color: #fff;}
a.new-btn-blue{background: #6a8abe; color: #fff;}
a.new-btn-blue:hover{background:#5f7cab; }
a.new-bigbtn{display: inline-block;border:none; padding:2px 30px;color: #666;background: #e1e1e1; text-align:center;font-size: 14px; height: 30px;line-height: 30px; border-radius: 3px;}
a:hover.new-bigbtn{background: #c3c3c3; color: #333;}
a.new-bigbtn-green{display: block; background:#60B25E; color:#fff; border-radius:5px; text-align:center; font-size:18px; padding: 5px 20px; width: 220px;}
@ -117,7 +119,7 @@ a:hover.btn-blue-line{background: #3b94d6; color:#fff;}
.innerbox-txt{ width:300px;}
.back-color-black{ background:#47494d;}
.inner-t-c{ text-align: center;}
.inner-footer{ width: 100%;min-width: 1200px; background:#323232; padding-bottom:30px;}
.inner-footer{ width: 100%; background:#323232; height:155px;}
.inner-footer_con{ width: 1200px; margin: 0 auto;}
.inner-footer-nav{ height: 50px; border-bottom:1px solid #47494d;}
.inner-footer-nav li a{ float: left; margin-right:15px; font-size: 14px; color: #888; line-height: 50px;}

View File

@ -68,7 +68,7 @@ a.resourcesTypeUser {background:url(../images/homepage_icon.png) -178px -453px n
.softwareIcon {background:url(/images/hwork_icon.png) -5px -254px no-repeat; padding-left:23px;}
/*意见反馈*/
html{ overflow-x:auto;}
.scrollsidebar{ position: fixed; bottom:1px; right:1px; background:none; }
.scrollsidebar{ position: fixed; bottom:1px; right:1px; background:none; z-index: 99;}
.side_content{width:180px; height:auto; overflow:hidden; float:left;}
.side_content .side_list {width:180px;overflow:hidden;}
.show_btn{ width:0; height:100px; overflow:hidden; float:left; margin-top:200px; cursor:pointer; background-color:#fff;}

View File

@ -273,7 +273,7 @@ a:hover.qx_btn{color:#3b94d6;}
.navHomepageMenu:hover {background-color:#2182ca;}
.navHomepageSearchBoxcontainer {margin-top:11px;}
.navHomepageSearchBox {width:340px; border:none; outline:none; height:32px; background-color:#ffffff;}
#navHomepageSearch{margin-top: 11px;background-color: white; }
#navHomepageSearch{background-color: white; }
.navHomepageSearchInput {width:345px; height:32px; outline:none; border:none !important; float:left; padding-left:5px !important; margin:0;}
#navSearchAlert {display:none;}
.navHomepageNews {width:30px; display:block; float:right; margin-top:8px; position:relative;}
@ -441,7 +441,7 @@ a.f_grey {color:#666666;}
a.f_grey:hover {color:#000000;}
/* 底部 */
.inner-footer{ width: 100%; background:#323232; padding-bottom:30px;}
.inner-footer{ width: 100%; background:#323232; height:155px;}
.inner-footer_con{ width: 1200px; margin: 0 auto;}
.inner-footer-nav{ height: 50px; border-bottom:1px solid #47494d;}
.inner-footer-nav li a{ float: left; margin-right:15px; font-size: 14px; color: #888; line-height: 50px;}
@ -558,4 +558,6 @@ input.new-search{border-radius:3px; width:300px; height:30px; margin-top: 10px;
a.new-btn{display: inline-block;border:none; padding:0 10px;color: #666;background: #e1e1e1; text-align:center;font-size: 12px; height: 30px;border-radius: 3px; line-height: 30px;}
a.new-btn:hover{background: #c3c3c3; color: #333;}
a.new-btn-green{background: #3b94d6; color: #fff;}
a.new-btn-green:hover{background: #2384cd; color: #fff;}
a.new-btn-green:hover{background: #2384cd; color: #fff;}
a.new-btn-blue{background: #6a8abe; color: #fff;}
a.new-btn-blue:hover{background:#5f7cab; }

View File

Before

Width:  |  Height:  |  Size: 193 KiB

After

Width:  |  Height:  |  Size: 193 KiB

View File

@ -903,7 +903,7 @@ a.f_grey {color:#666666;}
a.f_grey:hover {color:#000000;}
/*意见反馈*/
html{ overflow-x:hidden;}
.scrollsidebar{ position: fixed; bottom:1px; right:1px; background:none; }
.scrollsidebar{ position: fixed; bottom:1px; right:1px; background:none; z-index: 99;}
.side_content{width:154px; height:auto; overflow:hidden; float:left; }
.side_content .side_list {width:154px;overflow:hidden;}
.show_btn{ width:0; height:112px; overflow:hidden; float:left; margin-top:200px; cursor:pointer;}

View File

@ -288,7 +288,7 @@ a:hover.search_btn{ background: #0fa9bb;}
.footlogo{ width:580px; margin:0 auto;height:50px; }
/*意见反馈*/
html{ overflow-x:hidden;}
.scrollsidebar{ position: fixed; bottom:1px; right:1px; background:none; }
.scrollsidebar{ position: fixed; bottom:1px; right:1px; background:none; z-index: 99;}
.side_content{width:154px; height:auto; overflow:hidden; float:left; }
.side_content .side_list {width:154px;overflow:hidden;}
.show_btn{ width:0; height:112px; overflow:hidden; float:left; margin-top:190px;cursor:pointer;}

View File

@ -0,0 +1,10 @@
FactoryGirl.define do
factory :verification_code do
code "MyString"
code_type 1
status 1
phone "MyString"
email "MyString"
end
end

View File

@ -0,0 +1,5 @@
require 'rails_helper'
RSpec.describe VerificationCode, :type => :model do
pending "add some examples to (or delete) #{__FILE__}"
end