parent
753fff1ce3
commit
bf6b8c1166
@ -0,0 +1,72 @@
|
|||||||
|
package com.tamguo.config.shiro;
|
||||||
|
|
||||||
|
import java.util.Set;
|
||||||
|
import org.apache.shiro.authc.AuthenticationException;
|
||||||
|
import org.apache.shiro.authc.AuthenticationInfo;
|
||||||
|
import org.apache.shiro.authc.AuthenticationToken;
|
||||||
|
import org.apache.shiro.authc.IncorrectCredentialsException;
|
||||||
|
import org.apache.shiro.authc.LockedAccountException;
|
||||||
|
import org.apache.shiro.authc.SimpleAuthenticationInfo;
|
||||||
|
import org.apache.shiro.authc.UnknownAccountException;
|
||||||
|
import org.apache.shiro.authz.AuthorizationInfo;
|
||||||
|
import org.apache.shiro.authz.SimpleAuthorizationInfo;
|
||||||
|
import org.apache.shiro.crypto.hash.Sha256Hash;
|
||||||
|
import org.apache.shiro.realm.AuthorizingRealm;
|
||||||
|
import org.apache.shiro.subject.PrincipalCollection;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
|
||||||
|
import com.tamguo.modules.member.model.MemberEntity;
|
||||||
|
import com.tamguo.modules.member.service.IMemberService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 认证
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class MemberRealm extends AuthorizingRealm {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private IMemberService iMemberService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 授权(验证权限时调用)
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {
|
||||||
|
Set<String > permsSet = null;
|
||||||
|
SimpleAuthorizationInfo info = new SimpleAuthorizationInfo();
|
||||||
|
info.setStringPermissions(permsSet);
|
||||||
|
|
||||||
|
return info;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 认证(登录时调用)
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
protected AuthenticationInfo doGetAuthenticationInfo(
|
||||||
|
AuthenticationToken token) throws AuthenticationException {
|
||||||
|
String username = (String) token.getPrincipal();
|
||||||
|
String password = new String((char[]) token.getCredentials());
|
||||||
|
|
||||||
|
MemberEntity member = iMemberService.findByUsername(username);
|
||||||
|
if(member == null) {
|
||||||
|
throw new UnknownAccountException("用户名或密码有误,请重新输入或找回密码");
|
||||||
|
}
|
||||||
|
Integer loginFailureCount = iMemberService.getLoginFailureCount(member);
|
||||||
|
if(loginFailureCount > 10) {
|
||||||
|
throw new LockedAccountException("账号被锁定");
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!new Sha256Hash(password).toHex().equals(member.getPassword())){
|
||||||
|
loginFailureCount++;
|
||||||
|
iMemberService.updateLoginFailureCount(member , loginFailureCount);
|
||||||
|
throw new IncorrectCredentialsException("用户名或密码有误,请重新输入或找回密码");
|
||||||
|
}
|
||||||
|
// 更新登录时间
|
||||||
|
iMemberService.updateLastLoginTime(member.getId());
|
||||||
|
|
||||||
|
SimpleAuthenticationInfo info = new SimpleAuthenticationInfo(member, password, getName());
|
||||||
|
return info;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,69 @@
|
|||||||
|
package com.tamguo.config.shiro;
|
||||||
|
|
||||||
|
import java.util.LinkedHashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import org.apache.shiro.cache.ehcache.EhCacheManager;
|
||||||
|
import org.apache.shiro.spring.LifecycleBeanPostProcessor;
|
||||||
|
import org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor;
|
||||||
|
import org.apache.shiro.spring.web.ShiroFilterFactoryBean;
|
||||||
|
import org.apache.shiro.web.mgt.DefaultWebSecurityManager;
|
||||||
|
import org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator;
|
||||||
|
import org.springframework.context.annotation.Bean;
|
||||||
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
|
||||||
|
@Configuration
|
||||||
|
public class ShiroConfiguration {
|
||||||
|
private static Map<String, String> filterChainDefinitionMap = new LinkedHashMap<String, String>();
|
||||||
|
|
||||||
|
@Bean(name = "shiroRealm")
|
||||||
|
public MemberRealm getShiroRealm() {
|
||||||
|
return new MemberRealm();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Bean(name = "shiroEhcacheManager")
|
||||||
|
public EhCacheManager getEhCacheManager() {
|
||||||
|
EhCacheManager em = new EhCacheManager();
|
||||||
|
em.setCacheManagerConfigFile("classpath:ehcache-shiro.xml");
|
||||||
|
return em;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Bean(name = "lifecycleBeanPostProcessor")
|
||||||
|
public LifecycleBeanPostProcessor getLifecycleBeanPostProcessor() {
|
||||||
|
return new LifecycleBeanPostProcessor();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
public DefaultAdvisorAutoProxyCreator getDefaultAdvisorAutoProxyCreator() {
|
||||||
|
DefaultAdvisorAutoProxyCreator daap = new DefaultAdvisorAutoProxyCreator();
|
||||||
|
daap.setProxyTargetClass(true);
|
||||||
|
return daap;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Bean(name = "securityManager")
|
||||||
|
public DefaultWebSecurityManager getDefaultWebSecurityManager() {
|
||||||
|
DefaultWebSecurityManager dwsm = new DefaultWebSecurityManager();
|
||||||
|
dwsm.setRealm(getShiroRealm());
|
||||||
|
dwsm.setCacheManager(getEhCacheManager());
|
||||||
|
return dwsm;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
public AuthorizationAttributeSourceAdvisor getAuthorizationAttributeSourceAdvisor() {
|
||||||
|
AuthorizationAttributeSourceAdvisor aasa = new AuthorizationAttributeSourceAdvisor();
|
||||||
|
aasa.setSecurityManager(getDefaultWebSecurityManager());
|
||||||
|
return new AuthorizationAttributeSourceAdvisor();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Bean(name = "shiroFilter")
|
||||||
|
public ShiroFilterFactoryBean getShiroFilterFactoryBean() {
|
||||||
|
ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean();
|
||||||
|
shiroFilterFactoryBean.setSecurityManager(getDefaultWebSecurityManager());
|
||||||
|
shiroFilterFactoryBean.setLoginUrl("/login");
|
||||||
|
shiroFilterFactoryBean.setSuccessUrl("/index");
|
||||||
|
filterChainDefinitionMap.put("/member/**", "authc");
|
||||||
|
filterChainDefinitionMap.put("/**", "anon");
|
||||||
|
shiroFilterFactoryBean.setFilterChainDefinitionMap(filterChainDefinitionMap);
|
||||||
|
return shiroFilterFactoryBean;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,43 @@
|
|||||||
|
package com.tamguo.utils;
|
||||||
|
|
||||||
|
import org.apache.shiro.SecurityUtils;
|
||||||
|
import org.apache.shiro.session.Session;
|
||||||
|
import org.apache.shiro.subject.Subject;
|
||||||
|
|
||||||
|
import com.tamguo.modules.member.model.MemberEntity;
|
||||||
|
|
||||||
|
public class ShiroUtils {
|
||||||
|
|
||||||
|
public static Session getSession() {
|
||||||
|
return SecurityUtils.getSubject().getSession();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Subject getSubject() {
|
||||||
|
return SecurityUtils.getSubject();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static MemberEntity getMember() {
|
||||||
|
return (MemberEntity)SecurityUtils.getSubject().getPrincipal();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getMemberId() {
|
||||||
|
return getMember().getId();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void setSessionAttribute(Object key, Object value) {
|
||||||
|
getSession().setAttribute(key, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Object getSessionAttribute(Object key) {
|
||||||
|
return getSession().getAttribute(key);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean isLogin() {
|
||||||
|
return SecurityUtils.getSubject().getPrincipal() != null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void logout() {
|
||||||
|
SecurityUtils.getSubject().logout();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,115 @@
|
|||||||
|
package com.tamguo.web;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import javax.servlet.ServletException;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
import javax.servlet.http.HttpSession;
|
||||||
|
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
import org.apache.shiro.authc.IncorrectCredentialsException;
|
||||||
|
import org.apache.shiro.authc.LockedAccountException;
|
||||||
|
import org.apache.shiro.authc.UnknownAccountException;
|
||||||
|
import org.apache.shiro.authc.UsernamePasswordToken;
|
||||||
|
import org.apache.shiro.subject.Subject;
|
||||||
|
import org.springframework.stereotype.Controller;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMethod;
|
||||||
|
import org.springframework.web.bind.annotation.ResponseBody;
|
||||||
|
import org.springframework.web.servlet.ModelAndView;
|
||||||
|
|
||||||
|
import com.tamguo.common.image.CaptchaUtils;
|
||||||
|
import com.tamguo.common.utils.Result;
|
||||||
|
import com.tamguo.common.utils.SystemConstant;
|
||||||
|
import com.tamguo.utils.ShiroUtils;
|
||||||
|
|
||||||
|
@Controller
|
||||||
|
public class LoginController {
|
||||||
|
|
||||||
|
@RequestMapping("captcha.jpg")
|
||||||
|
public void captcha(HttpServletResponse response , HttpSession session) throws ServletException, IOException {
|
||||||
|
response.setHeader("Cache-Control", "no-store, no-cache");
|
||||||
|
response.setContentType("image/jpeg");
|
||||||
|
|
||||||
|
String a = CaptchaUtils.generateCaptcha(response.getOutputStream());
|
||||||
|
session.setAttribute(SystemConstant.KAPTCHA_SESSION_KEY, a);
|
||||||
|
}
|
||||||
|
|
||||||
|
@RequestMapping(value = "/login.html", method = RequestMethod.GET)
|
||||||
|
public ModelAndView login(ModelAndView model){
|
||||||
|
model.setViewName("login");
|
||||||
|
model.addObject("isVerifyCode" , "0");
|
||||||
|
return model;
|
||||||
|
}
|
||||||
|
|
||||||
|
@RequestMapping(value = "/submitLogin.html", method = RequestMethod.POST)
|
||||||
|
public ModelAndView submitLogin(String username , String password , String verifyCode , ModelAndView model , HttpSession session , HttpServletResponse response) throws IOException{
|
||||||
|
Result result = Result.successResult(null);
|
||||||
|
if(StringUtils.isEmpty(verifyCode)) {
|
||||||
|
result = Result.result(202, null, "请输入验证码");
|
||||||
|
} else if(StringUtils.isNotEmpty(verifyCode)){
|
||||||
|
String kaptcha = session.getAttribute(SystemConstant.KAPTCHA_SESSION_KEY).toString();
|
||||||
|
if (!verifyCode.equalsIgnoreCase(kaptcha)) {
|
||||||
|
result = Result.result(205, null, "验证码错误");
|
||||||
|
} else {
|
||||||
|
Subject subject = ShiroUtils.getSubject();
|
||||||
|
UsernamePasswordToken token = new UsernamePasswordToken(username, password);
|
||||||
|
try {
|
||||||
|
subject.login(token);
|
||||||
|
|
||||||
|
session.setAttribute("currMember", ShiroUtils.getMember());
|
||||||
|
response.sendRedirect("member/index.html");
|
||||||
|
return null;
|
||||||
|
} catch (UnknownAccountException e) {
|
||||||
|
result = Result.result(201, null, "用户名或密码有误,请重新输入或找回密码");
|
||||||
|
} catch (IncorrectCredentialsException e) {
|
||||||
|
result = Result.result(202, null, "用户名或密码有误,请重新输入或找回密码");
|
||||||
|
} catch (LockedAccountException e) {
|
||||||
|
result = Result.result(203, null, "账号被锁定");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
model.setViewName("login");
|
||||||
|
model.addObject("code", result.getCode());
|
||||||
|
model.addObject("msg" , result.getMessage());
|
||||||
|
model.addObject("username", username);
|
||||||
|
return model;
|
||||||
|
}
|
||||||
|
|
||||||
|
@RequestMapping(value = "/miniLogin.html", method = RequestMethod.GET)
|
||||||
|
@ResponseBody
|
||||||
|
public Result miniLogin(String username , String password , String captcha, ModelAndView model , HttpSession session) {
|
||||||
|
Result result = null;
|
||||||
|
if(StringUtils.isEmpty(captcha)) {
|
||||||
|
result = Result.result(204, null, "请输入验证码");
|
||||||
|
} else if(StringUtils.isNotEmpty(captcha)){
|
||||||
|
String kaptcha = session.getAttribute(SystemConstant.KAPTCHA_SESSION_KEY).toString();
|
||||||
|
if (!captcha.equalsIgnoreCase(kaptcha)) {
|
||||||
|
result = Result.result(205, null, "验证码错误");
|
||||||
|
}else {
|
||||||
|
Subject subject = ShiroUtils.getSubject();
|
||||||
|
UsernamePasswordToken token = new UsernamePasswordToken(username, password);
|
||||||
|
try {
|
||||||
|
subject.login(token);
|
||||||
|
session.setAttribute("currMember", ShiroUtils.getMember());
|
||||||
|
result = Result.successResult(ShiroUtils.getMember());
|
||||||
|
} catch (UnknownAccountException e) {
|
||||||
|
result = Result.result(201, null, "用户名或密码有误,请重新输入或找回密码");
|
||||||
|
} catch (IncorrectCredentialsException e) {
|
||||||
|
result = Result.result(202, null, "用户名或密码有误,请重新输入或找回密码");
|
||||||
|
} catch (LockedAccountException e) {
|
||||||
|
result = Result.result(203, null, "账号被锁定");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
@RequestMapping(value = "/isLogin.html", method = RequestMethod.GET)
|
||||||
|
@ResponseBody
|
||||||
|
public Result isLogin() {
|
||||||
|
if(ShiroUtils.isLogin()) {
|
||||||
|
return Result.result(1, null , "已经登录");
|
||||||
|
}
|
||||||
|
return Result.result(0, null, "未登录");
|
||||||
|
}
|
||||||
|
}
|
File diff suppressed because it is too large
Load Diff
After Width: | Height: | Size: 3.3 KiB |
After Width: | Height: | Size: 28 KiB |
@ -0,0 +1,12 @@
|
|||||||
|
$(function(){
|
||||||
|
|
||||||
|
// 首页轮播
|
||||||
|
$(".content-wp .banner .play-nav li").bind("click",function(event){
|
||||||
|
$(".content-wp .banner .play-nav li").removeClass("cur");
|
||||||
|
$(this).addClass("cur");
|
||||||
|
|
||||||
|
$(".content-wp .banner .banner-list li").css("z-index","1");
|
||||||
|
$(".content-wp .banner .banner-list a[data-index='"+$(this).find("a").text()+"']").parent().css("z-index","9");
|
||||||
|
event.stopPropagation();
|
||||||
|
});
|
||||||
|
})
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -0,0 +1,73 @@
|
|||||||
|
$(function(){
|
||||||
|
|
||||||
|
// 头部选项事件
|
||||||
|
$(".header .menu .menu-contain .contain-ul .contain-li-hashover").bind("mouseover",function(event){
|
||||||
|
$(".header .menu .menu-contain .contain-ul li i").css("transform","rotate(0deg)");
|
||||||
|
$(this).find("i").css("transform","rotate(180deg)");
|
||||||
|
$(".header .submenu-container .subm-ul").addClass("dis-none");
|
||||||
|
$(".header .submenu-container .all-exm").addClass("dis-none");
|
||||||
|
$(".header .submenu-container ."+$(this).attr("data-class")+"").removeClass("dis-none");
|
||||||
|
$(this).addClass("li-hover");
|
||||||
|
event.stopPropagation();
|
||||||
|
}).bind("mouseleave",function(event){
|
||||||
|
if(event.relatedTarget == null || $(event.relatedTarget).attr("data-id") != "submenu"){
|
||||||
|
$(this).find("i").css("transform","rotate(0deg)");
|
||||||
|
$(".header .submenu-container .subm-ul").addClass("dis-none");
|
||||||
|
$(".header .submenu-container .all-exm").addClass("dis-none");
|
||||||
|
$(".header .menu .menu-contain .contain-ul li").removeClass("li-hover");
|
||||||
|
event.stopPropagation();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
$(".header .submenu-container").bind("mouseleave",function(event){
|
||||||
|
if(event.relatedTarget.className != "contain-ul"){
|
||||||
|
$(".header .menu .menu-contain .contain-ul li i").css("transform","rotate(0deg)");
|
||||||
|
$(".header .submenu-container .subm-ul").addClass("dis-none");
|
||||||
|
$(".header .submenu-container .all-exm").addClass("dis-none");
|
||||||
|
$(".header .menu .menu-contain .contain-ul li").removeClass("li-hover");
|
||||||
|
event.stopPropagation();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// 左侧导航
|
||||||
|
$(".content-wp .navbar-container .navbar-list .navbar-list-item").bind("mouseover",function(event){
|
||||||
|
$(".content-wp .navbar-container .navbar-list .navbar-list-item").removeClass("navbar-list-item-hover");
|
||||||
|
$(this).addClass("navbar-list-item-hover");
|
||||||
|
|
||||||
|
$(".content-wp .navbar-container .navbar-list-item-section").css("display","none");
|
||||||
|
$("div[datatype='"+$(this).attr("datatype")+"']").css("display","block");
|
||||||
|
event.stopPropagation();
|
||||||
|
}).bind("mouseleave",function(event){
|
||||||
|
if(event.relatedTarget.className != "navbar-list-item-section"){
|
||||||
|
$(".content-wp .navbar-container .navbar-list .navbar-list-item").removeClass("navbar-list-item-hover");
|
||||||
|
$(".content-wp .navbar-container .navbar-list-item-section").css("display","none");
|
||||||
|
event.stopPropagation();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
$(".content-wp .navbar-container .navbar-list-item-section").bind("mouseleave",function(event){
|
||||||
|
$(".content-wp .navbar-container .navbar-list .navbar-list-item").removeClass("navbar-list-item-hover");
|
||||||
|
$(".content-wp .navbar-container .navbar-list-item-section").css("display","none");
|
||||||
|
event.stopPropagation();
|
||||||
|
});
|
||||||
|
|
||||||
|
// 马上做题
|
||||||
|
$(".detail-kpoint-2").bind("mouseover",function(event){
|
||||||
|
$(this).find(".mask").show();
|
||||||
|
event.stopPropagation();
|
||||||
|
}).bind("mouseleave",function(event){
|
||||||
|
$(this).find(".mask").hide();
|
||||||
|
event.stopPropagation();
|
||||||
|
});
|
||||||
|
|
||||||
|
// 问题列表
|
||||||
|
$(".quelist-wrap .question-box").bind("mouseover",function(event){
|
||||||
|
$(this).addClass("hover-quescontainer");
|
||||||
|
$(this).find(".view-analyse").find(".view-link").css("color","#11a68d!important");
|
||||||
|
event.stopPropagation();
|
||||||
|
}).bind("mouseleave",function(event){
|
||||||
|
$(this).removeClass("hover-quescontainer");
|
||||||
|
$(this).find(".view-analyse").find(".view-link").css("color","#11a68d!important");
|
||||||
|
event.stopPropagation();
|
||||||
|
});
|
||||||
|
|
||||||
|
})
|
@ -0,0 +1,152 @@
|
|||||||
|
$(function(){
|
||||||
|
// 登录窗口拖动
|
||||||
|
$.drag({
|
||||||
|
target:'#TANGRAM__PSP_19__title',
|
||||||
|
root:'#passport-login-pop',
|
||||||
|
lock:true
|
||||||
|
});
|
||||||
|
|
||||||
|
$(".header .login-container").bind("click",function(event){
|
||||||
|
if($(this).find("span").length == 1){
|
||||||
|
$(".mask").css("display","block");
|
||||||
|
$("#passport-login-pop").css("display","block");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
$("#TANGRAM__PSP_19__closeBtn").bind("click",function(event){
|
||||||
|
$(".mask").css("display","none");
|
||||||
|
$("#passport-login-pop").css("display","none");
|
||||||
|
});
|
||||||
|
|
||||||
|
$(".pass-login-pop-content .pass-text-input").bind("focus",function(event){
|
||||||
|
$(this).addClass("pass-text-input-hover");
|
||||||
|
}).bind("blur",function(event){
|
||||||
|
$(this).removeClass("pass-text-input-hover");
|
||||||
|
$(this).removeClass("pass-text-input-error");
|
||||||
|
}).bind("keyup",function(event){
|
||||||
|
if($(this).val() != ""){
|
||||||
|
$("#"+$(this).attr("id")+"_clearbtn").css("display","block").css("visibility","visible");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
$(".pass-login-pop-content .pass-clearbtn").bind("click",function(event){
|
||||||
|
$(this).css("display","none").css("visibility","hidden");
|
||||||
|
$(this).prev().val("");
|
||||||
|
$(this).prev().trigger("focus");
|
||||||
|
})
|
||||||
|
|
||||||
|
$("#TANGRAM__PSP_25__submit").bind("click",function(event){
|
||||||
|
if($("#TANGRAM__PSP_25__userName").val() == ""){
|
||||||
|
$("#TANGRAM__PSP_25__userName").focus();
|
||||||
|
$("#TANGRAM__PSP_25__error").html('请输入用户名/手机号/邮箱');
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if($("#TANGRAM__PSP_25__password").val() == ""){
|
||||||
|
$("#TANGRAM__PSP_25__password").focus();
|
||||||
|
$("#TANGRAM__PSP_25__error").html('请输入密码');
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
var username = $("#TANGRAM__PSP_25__userName").val();
|
||||||
|
var password = $("#TANGRAM__PSP_25__password").val();
|
||||||
|
$.ajax({
|
||||||
|
type : "get",
|
||||||
|
url : mainHttp + "miniLogin.html",
|
||||||
|
async : true,
|
||||||
|
data:{username:username,password:password,captcha:$("#TANGRAM__PSP_25__verifyCode").val()},
|
||||||
|
dataType : "json",
|
||||||
|
success : function(data) {// 返回数据根据结果进行相应的处理,无论请求成功还是失败,都会走这个方法的
|
||||||
|
if(data.code == 201){
|
||||||
|
$("#TANGRAM__PSP_25__userName").addClass("pass-text-input-error").focus();
|
||||||
|
$("#TANGRAM__PSP_25__userName").removeClass("pass-text-input-hover");
|
||||||
|
$("#TANGRAM__PSP_25__userName").val("");
|
||||||
|
$("#TANGRAM__PSP_25__password").val("");
|
||||||
|
$("#TANGRAM__PSP_25__verifyCode").val("");
|
||||||
|
$("#TANGRAM__PSP_25__verifyCodeChange").trigger("click");
|
||||||
|
$("#TANGRAM__PSP_25__error").html('帐号或密码错误,请重新输入或者<a href="'+mainHttp+'password/find.html" target="_blank">找回密码</a>');
|
||||||
|
}else if(data.code == 202){
|
||||||
|
$("#TANGRAM__PSP_25__password").addClass("pass-text-input-error").focus();
|
||||||
|
$("#TANGRAM__PSP_25__password").removeClass("pass-text-input-hover");
|
||||||
|
$("#TANGRAM__PSP_25__password").val("");
|
||||||
|
$("#TANGRAM__PSP_25__verifyCode").val("");
|
||||||
|
$("#TANGRAM__PSP_25__verifyCodeChange").trigger("click");
|
||||||
|
$("#TANGRAM__PSP_25__error").html('帐号或密码错误,请重新输入或者<a href="'+mainHttp+'password/find.html" target="_blank">找回密码</a>');
|
||||||
|
} else if(data.code == 203){
|
||||||
|
$("#TANGRAM__PSP_25__error").html('账号被锁定两小时');
|
||||||
|
} else if(data.code == 204){
|
||||||
|
$("#TANGRAM__PSP_25__verifyCodeImgWrapper").css("display","block");
|
||||||
|
$("#TANGRAM__PSP_25__verifyCode").addClass("pass-text-input-error").focus();
|
||||||
|
$("#TANGRAM__PSP_25__verifyCode").removeClass("pass-text-input-hover");
|
||||||
|
$("#TANGRAM__PSP_25__verifyCode").val("");
|
||||||
|
$("#TANGRAM__PSP_25__verifyCodeChange").trigger("click");
|
||||||
|
$("#TANGRAM__PSP_25__error").html('请输入验证码!');
|
||||||
|
} else if(data.code == 205){
|
||||||
|
$("#TANGRAM__PSP_25__verifyCode").addClass("pass-text-input-error").focus();
|
||||||
|
$("#TANGRAM__PSP_25__verifyCode").removeClass("pass-text-input-hover");
|
||||||
|
$("#TANGRAM__PSP_25__verifyCode").val("");
|
||||||
|
$("#TANGRAM__PSP_25__verifyCodeChange").trigger("click");
|
||||||
|
$("#TANGRAM__PSP_25__error").html('验证码错误,请重新输入!');
|
||||||
|
} else if(data.code == 0){
|
||||||
|
window.location.reload();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
|
||||||
|
$(".header .login-container").bind("mouseover",function(){
|
||||||
|
if($(this).find("img").length == 1){
|
||||||
|
$(this).addClass("black");
|
||||||
|
$(".header .login-option").removeClass("dis-none");
|
||||||
|
$(this).find("i").css("transform","rotate(180deg)");
|
||||||
|
}
|
||||||
|
}).bind("mouseleave",function(event){
|
||||||
|
if(event.relatedTarget == null){
|
||||||
|
$(this).find("i").css("transform","rotate(0deg)");
|
||||||
|
$(".header .submenu-container .subm-ul").addClass("dis-none");
|
||||||
|
$(".header .submenu-container .all-exm").addClass("dis-none");
|
||||||
|
$(".header .menu .menu-contain .contain-ul li").removeClass("li-hover");
|
||||||
|
$("#loginOptionUl").addClass("dis-none");
|
||||||
|
event.stopPropagation();
|
||||||
|
}
|
||||||
|
if(event.relatedTarget.id != "loginOptionUl" && event.relatedTarget.parentElement.id != "loginOptionUl"){
|
||||||
|
$(this).find("i").css("transform","rotate(0deg)");
|
||||||
|
$(".header .submenu-container .subm-ul").addClass("dis-none");
|
||||||
|
$(".header .submenu-container .all-exm").addClass("dis-none");
|
||||||
|
$(".header .menu .menu-contain .contain-ul li").removeClass("li-hover");
|
||||||
|
$("#loginOptionUl").addClass("dis-none");
|
||||||
|
event.stopPropagation();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
$("#loginOptionUl").bind("mouseleave",function(){
|
||||||
|
$(".header .login-container").find("i").css("transform","rotate(0deg)");
|
||||||
|
$(".header .submenu-container .subm-ul").addClass("dis-none");
|
||||||
|
$(".header .submenu-container .all-exm").addClass("dis-none");
|
||||||
|
$(".header .menu .menu-contain .contain-ul li").removeClass("li-hover");
|
||||||
|
$("#loginOptionUl").addClass("dis-none");
|
||||||
|
event.stopPropagation();
|
||||||
|
});
|
||||||
|
|
||||||
|
$("#TANGRAM__PSP_25__smsSwitchWrapper").bind("click",function(){
|
||||||
|
$("#passport-login-pop-api").css("display","none").css("visibility","hidden");
|
||||||
|
$("#TANGRAM__PSP_25__sms").css("display","block").css("visibility","visible");
|
||||||
|
$("#TANGRAM__PSP_25__footerQrcodeBtn").show();
|
||||||
|
$("#TANGRAM__PSP_25__footerULoginBtn").hide();
|
||||||
|
});
|
||||||
|
|
||||||
|
$("#TANGRAM__PSP_25__sms_btn_back").bind("click",function(){
|
||||||
|
$("#passport-login-pop-api").css("display","block").css("visibility","visible");
|
||||||
|
$("#TANGRAM__PSP_25__sms").css("display","none").css("visibility","hidden");
|
||||||
|
$("#TANGRAM__PSP_25__footerULoginBtn").show();
|
||||||
|
$("#TANGRAM__PSP_25__footerQrcodeBtn").hide();
|
||||||
|
});
|
||||||
|
|
||||||
|
$("#TANGRAM__PSP_25__verifyCodeChange").bind("click",function(){
|
||||||
|
$("#TANGRAM__PSP_25__verifyCodeImg").attr("src",mainHttp + "captcha.jpg?t=" + $.now());
|
||||||
|
});
|
||||||
|
|
||||||
|
$("#TANGRAM__PSP_25__verifyCodeImg").bind("click",function(){
|
||||||
|
$("#TANGRAM__PSP_25__verifyCodeImg").attr("src",mainHttp + "captcha.jpg?t=" + $.now());
|
||||||
|
});
|
||||||
|
|
||||||
|
})
|
@ -0,0 +1,29 @@
|
|||||||
|
<!DOCTYPE html SYSTEM "http://www.thymeleaf.org/dtd/xhtml1-strict-thymeleaf-4.dtd">
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">
|
||||||
|
<div class="header" th:fragment="header">
|
||||||
|
<div class="menu">
|
||||||
|
<div class="menu-contain clearfix">
|
||||||
|
<a th:href="${domainName}"><span class="container-logo"></span></a>
|
||||||
|
<div class="contain-login">
|
||||||
|
<div class="login-container">
|
||||||
|
<i th:if="${session.currMember == null}" class="login-icon iconfont icon-yonghu"></i><span th:if="${session.currMember == null}">登录</span>
|
||||||
|
<img style="border-radius:55px;" th:if="${session.currMember != null}" class="user-photo" th:src="${domainName + session.currMember.avatar}" alt="用户头像">
|
||||||
|
<i th:if="${session.currMember != null}" class="photo-icon iconfont icon-down" style="transform: rotate(0deg);"></i>
|
||||||
|
</div>
|
||||||
|
<ul th:class="${currMember == null} ? 'login-option dis-none' : 'login-option'" id="loginOptionUl">
|
||||||
|
<li><a th:href="${memberDomain + 'index.html'}" title="我的首页">我的首页</a></li>
|
||||||
|
<li><a th:href="${memberDomain + 'index.html'}" title="账号设置">账号设置</a></li>
|
||||||
|
<li><a th:href="${memberDomain + 'logout.html'}" title="退出">退出</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<ul class="contain-ul">
|
||||||
|
<li class="contain-li jiaoshirukou">
|
||||||
|
<a th:href="${memberDomain + 'regist.html'}" title="注册">注册</a><i class="li-icon iconfont icon-jiaoshi1"></i>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<script type="text/javascript" th:inline="javascript" th:fragment="header">
|
||||||
|
var mainHttp = [[${domainName}]];
|
||||||
|
</script>
|
@ -0,0 +1,92 @@
|
|||||||
|
<!DOCTYPE html SYSTEM "http://www.thymeleaf.org/dtd/xhtml1-strict-thymeleaf-4.dtd">
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">
|
||||||
|
<div id="passport-login-pop" class="tang-pass-pop-login-merge tang-pass-pop-login-tpl-do tang-pass-pop-login-color-blue tang-pass-pop-login" style="left:40%;top:10%;z-index: 60001;display:none;" th:fragment="minilogin">
|
||||||
|
<div class="tang-foreground" id="TANGRAM__PSP_19__foreground" style="width: 356px;">
|
||||||
|
<div class="tang-title tang-title-dragable" id="TANGRAM__PSP_19__title">
|
||||||
|
<div class="buttons" id="TANGRAM__PSP_19__titleButtons">
|
||||||
|
<a id="TANGRAM__PSP_19__closeBtn" class="close-btn" href="###" onmousedown="event.stopPropagation && event.stopPropagation(); event.cancelBubble = true; return false;" onclick="return false;"></a>
|
||||||
|
</div><span id="TANGRAM__PSP_19__titleText"> </span></div>
|
||||||
|
<div class="tang-body" id="TANGRAM__PSP_19__body">
|
||||||
|
<div class="tang-content" id="TANGRAM__PSP_19__content">
|
||||||
|
<div id="passport-login-pop-dialog">
|
||||||
|
<div class="clearfix">
|
||||||
|
<div class="pass-login-pop-content">
|
||||||
|
<div class="pass-login-pop-form">
|
||||||
|
<div id="passport-login-pop-api" class="tang-pass-login" style="display: block; visibility: visible; opacity: 1;">
|
||||||
|
<form id="TANGRAM__PSP_25__form" class="pass-form pass-form-normal" method="POST" autocomplete="off">
|
||||||
|
<p class="pass-form-logo">用户名密码登录</p>
|
||||||
|
<p id="TANGRAM__PSP_25__errorWrapper" class="pass-generalErrorWrapper"><span id="TANGRAM__PSP_25__error" class="pass-generalError pass-generalError-error"></span></p>
|
||||||
|
<p id="TANGRAM__PSP_25__MakeTextWrapper" class="pass-make-text" style="display:none;"></p>
|
||||||
|
<p id="TANGRAM__PSP_25__hiddenFields" style="display:none"><input type="hidden" id="TANGRAM__PSP_25__codeString" name="codeString" value=""><input type="hidden" id="TANGRAM__PSP_25__safeFlag" name="safeFlag" value="0"><input type="hidden" id="TANGRAM__PSP_25__isPhone" name="isPhone" value="false"><input type="hidden" id="TANGRAM__PSP_25__detect" name="detect" value="1"><input type="hidden" id="TANGRAM__PSP_25__gid" name="gid" value="526B53B-9A68-476F-9971-D1091BAC80E4"><input type="hidden" id="TANGRAM__PSP_25__quick_user" name="quick_user" value="0"><input type="hidden" id="TANGRAM__PSP_25__logintype" name="logintype" value="dialogLogin"><input type="hidden" id="TANGRAM__PSP_25__logLoginType" name="logLoginType" value="pc_loginDialog"><input type="hidden" id="TANGRAM__PSP_25__subpro" name="subpro" value=""><input type="hidden" id="TANGRAM__PSP_25__idc" name="idc" value=""><input type="hidden" id="TANGRAM__PSP_25__loginMerge" name="loginMerge" value="true"></p>
|
||||||
|
<p id="TANGRAM__PSP_25__userNameWrapper" class="pass-form-item pass-form-item-userName" style="display:">
|
||||||
|
<input type="text" style="display:none;">
|
||||||
|
<input id="TANGRAM__PSP_25__userName" type="text" name="userName" class="pass-text-input pass-text-input-userName open" autocomplete="new-password" value="" placeholder="手机/邮箱/用户名">
|
||||||
|
<span id="TANGRAM__PSP_25__userName_clearbtn" class="pass-clearbtn pass-clearbtn-userName" style="display: none; visibility: hidden; opacity: 1;"></span><span id="TANGRAM__PSP_25__userNameTip" class="pass-item-tip pass-item-tip-userName" style="display:none"><span id="TANGRAM__PSP_25__userNameTipText" class="pass-item-tiptext pass-item-tiptext-userName"></span></span>
|
||||||
|
</p>
|
||||||
|
<p id="TANGRAM__PSP_25__passwordWrapper" class="pass-form-item pass-form-item-password" style="display:"><input type="password" style="display: none;"><input id="TANGRAM__PSP_25__password" type="password" name="password" class="pass-text-input pass-text-input-password" autocomplete="new-password" value="" placeholder="密码"><span id="TANGRAM__PSP_25__password_clearbtn" class="pass-clearbtn pass-clearbtn-password" style="display: none; visibility: hidden;"></span><span id="TANGRAM__PSP_25__passwordTip" class="pass-item-tip pass-item-tip-password" style="display:none"><span id="TANGRAM__PSP_25__passwordTipText" class="pass-item-tiptext pass-item-tiptext-password"></span></span>
|
||||||
|
</p>
|
||||||
|
<p id="TANGRAM__PSP_25__verifyCodeImgWrapper" class="pass-form-item pass-form-item-verifyCode"><input id="TANGRAM__PSP_25__verifyCode" type="text" name="verifyCode" class="pass-text-input pass-text-input-verifyCode" maxlength="6" placeholder="验证码"><span id="TANGRAM__PSP_25__verifyCode_clearbtn" class="pass-clearbtn pass-clearbtn-verifyCode" style="display:none;"></span><span id="TANGRAM__PSP_25__verifyCodeImgParent" class="pass-verifyCodeImgParent">
|
||||||
|
<img id="TANGRAM__PSP_25__verifyCodeImg" class="pass-verifyCode" style="cursor:pointer;" th:src="${domainName + 'captcha.jpg'}"></span>
|
||||||
|
<a id="TANGRAM__PSP_25__verifyCodeChange" href="javascript:(0);" class="pass-change-verifyCode">换一张</a><span id="TANGRAM__PSP_25__verifyCodeError" class="pass-error pass-error-verifyCode"></span><span id="TANGRAM__PSP_25__verifyCodeTip" class="pass-tip pass-tip-verifyCode"></span><span id="TANGRAM__PSP_25__verifyCodeSuccess" class="pass-success pass-success-verifyCode"></span></p>
|
||||||
|
<p id="TANGRAM__PSP_25__memberPassWrapper" class="pass-form-item pass-form-item-memberPass"><input id="TANGRAM__PSP_25__memberPass" type="checkbox" name="memberPass" class="pass-checkbox-input pass-checkbox-memberPass" checked="checked"><label for="TANGRAM__PSP_25__memberPass" id="TANGRAM__PSP_25__memberPassLabel" class="">下次自动登录</label></p>
|
||||||
|
<p id="TANGRAM__PSP_25__submitWrapper" class="pass-form-item pass-form-item-submit">
|
||||||
|
<input id="TANGRAM__PSP_25__submit" type="submit" value="登录" class="pass-button pass-button-submit">
|
||||||
|
<a class="pass-sms-btn pass-link" title="短信快捷登录" data-type="sms" id="TANGRAM__PSP_25__smsSwitchWrapper">短信快捷登录</a>
|
||||||
|
<a class="pass-fgtpwd pass-link" th:href="${memberDomain + 'password/find.html'}" target="_blank">忘记密码?</a>
|
||||||
|
</p>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
<div id="TANGRAM__PSP_25__sms" class="tang-pass-login tang-pass-sms" style="display: none; visibility: hidden; opacity: 1;">
|
||||||
|
<p class="pass-form-logo">短信快捷登录</p>
|
||||||
|
<p class="tang-pass-sms-tip">验证即登录,未注册将自动创建探果帐号</p>
|
||||||
|
<form id="TANGRAM__PSP_25__smsForm" method="POST">
|
||||||
|
<p id="TANGRAM__PSP_25__smsHiddenFields" style="display:none"><input type="hidden" id="TANGRAM__PSP_25__smsHiddenFields_tpl" name="tpl" value="do"><input type="hidden" id="TANGRAM__PSP_25__smsHiddenFields_idc" name="idc" value=""><input type="hidden" id="TANGRAM__PSP_25__smsHiddenFields_isdpass" name="isdpass" value="1"><input type="hidden" id="TANGRAM__PSP_25__smsHiddenFields_gid" name="gid" value="526B53B-9A68-476F-9971-D1091BAC80E4"><input type="hidden" id="TANGRAM__PSP_25__smsHiddenFields_switchuname" name="switchuname" value=""><input type="hidden" id="TANGRAM__PSP_25__smsHiddenFields_smsCodeString" name="smsCodeString" value=""><input type="hidden" id="TANGRAM__PSP_25__smsHiddenFields_smsVcodesign" name="smsVcodesign" value=""><input type="hidden" id="TANGRAM__PSP_25__smsHiddenFields_smsVcodestr" name="smsVcodestr" value=""><input type="hidden" id="TANGRAM__PSP_25__smsHiddenFields_subpro" name="subpro" value=""><input type="hidden" id="TANGRAM__PSP_25__smsHiddenFields_is_voice_sms" name="is_voice_sms" value="0"><input type="hidden" id="TANGRAM__PSP_25__smsHiddenFields_voice_sms_flag" name="voice_sms_flag" value="0"></p>
|
||||||
|
<p id="TANGRAM__PSP_25__smsErrorWrapper" class="pass-generalErrorWrapper"><span id="TANGRAM__PSP_25__smsError" class="pass-generalError"></span></p>
|
||||||
|
<div id="TANGRAM__PSP_25__smsPhoneWrapper" class="pass-form-item pass-form-item-smsPhone"><input id="TANGRAM__PSP_25__smsPhone" type="text" name="username" class="pass-text-input pass-text-input-smsPhone" placeholder="请输入手机号"><span id="TANGRAM__PSP_25__smsPhone_clearbtn" class="pass-clearbtn pass-clearbtn-smsPhone" style="display:none;"></span><span id="TANGRAM__PSP_25__smsPhoneTip" class="pass-item-tip pass-item-tip-smsPhone" style="display:none"><span id="TANGRAM__PSP_25__smsPhoneTipText"></span></span>
|
||||||
|
</div>
|
||||||
|
<p id="TANGRAM__PSP_25__smsVerifyCodeWrapper" class="pass-form-item pass-form-item-smsVerifyCode"><input id="TANGRAM__PSP_25__smsVerifyCode" type="text" name="password" class="pass-text-input pass-text-input-smsVerifyCode" placeholder="验证码"><span id="TANGRAM__PSP_25__smsVerifyCode_clearbtn" class="pass-clearbtn pass-clearbtn-smsVerifyCode" style="display:none;"></span><button id="TANGRAM__PSP_25__smsTimer" class="pass-item-timer">发送验证码</button><span id="TANGRAM__PSP_25__smsVerifyCodeTip" class="pass-item-tip pass-item-tip-smsVerifyCode" style="display:none"><span id="TANGRAM__PSP_25__smsVerifyCodeTipText"></span></span>
|
||||||
|
</p>
|
||||||
|
<p id="TANGRAM__PSP_25__smsSubmitWrapper" class="pass-form-item pass-form-item-submit"><input id="TANGRAM__PSP_25__smsSubmit" type="submit" value="登录" class="pass-button pass-button-submit"><span class="tang-pass-sms-agreement pass-link">阅读并接受<a target="_blank" th:href="${domainName}">《探果用户协议》</a></span>
|
||||||
|
<a id="TANGRAM__PSP_25__sms_btn_back" class="pass-sms-link pass-sms-link-back pass-link">用户名密码登录</a>
|
||||||
|
</p>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
<div class="tang-pass-footerBar">
|
||||||
|
<p class="tang-pass-footerBarQrcode pass-link" title="扫码登录" data-type="qrcode" id="TANGRAM__PSP_25__footerQrcodeBtn" style="display: none;">扫码登录</p>
|
||||||
|
|
||||||
|
<a th:href="${domainName + 'login.html'}" title="探果网登录" target="_blank">
|
||||||
|
<p class="tang-pass-footerBarULogin pass-link" title="探果网登录" data-type="normal" id="TANGRAM__PSP_25__footerULoginBtn" style="display: block;">立即登录
|
||||||
|
</p></a>
|
||||||
|
<div class="tang-pass-footerBarPhoenix"><span class="tang-pass-footerBarPhoenixSplit"></span>
|
||||||
|
<div class="tang-pass-footerBarPhoenixItem" id="TANGRAM__PSP_25__PhoenixItem">
|
||||||
|
<div id="pass-phoenix-login" class="tang-pass-login-phoenix">
|
||||||
|
<div id="pass-phoenix-list-login" class="pass-phoenix-list clearfix">
|
||||||
|
<div class="pass-phoenix-btn clearfix" id="pass_phoenix_btn">
|
||||||
|
<ul class="bd-acc-list">
|
||||||
|
<li class="bd-acc-tsina" data-dialog="1" data-acc="2" data-height="669" data-width="800">
|
||||||
|
<a class="phoenix-btn-item" href="javascript:(0);" data-title="tsina" title="新浪微博">新浪微博</a>
|
||||||
|
</li>
|
||||||
|
<li class="bd-acc-weixin" data-dialog="1" data-acc="42" data-height="450" data-width="850">
|
||||||
|
<a class="phoenix-btn-item" href="javascript:(0);" data-title="weixin" title="微信">微信</a>
|
||||||
|
</li>
|
||||||
|
<li class="bd-acc-qzone" data-dialog="1" data-acc="15" data-height="450" data-width="750">
|
||||||
|
<a class="phoenix-btn-item" href="javascript:(0);" data-title="qzone" title="QQ帐号">QQ帐号</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="clear"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<a class="pass-reglink pass-link" th:href="${memberDomain + 'register.html'}" target="_blank">立即注册</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="mask firstleader" th:fragment="minilogin"></div>
|
@ -0,0 +1,124 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="zh-CN">
|
||||||
|
<head>
|
||||||
|
<title>聪明的学生都在这里 - 探果网</title>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
<meta name="renderer" content="webkit">
|
||||||
|
<meta name="author" content="tamguo" />
|
||||||
|
<meta name="site" content="https://book.tamguo.com" />
|
||||||
|
<meta name="keywords" content="高考,考研,财会类,建筑工程,职业资格,医卫类,会计类">
|
||||||
|
<meta name="description" content="MinDoc文档在线管理系统探果网,高考试题,高考试卷,高校试题,名校,名校试题,名校试卷,高校名师,名师专访,名师教案,名师课堂试题库,试卷库,智能题库,历年真题,模拟试题,押题,预测试题,高考,会计证,会计从业,会计师,经济师,施工员,建造师,建筑师,造价师,职业资格,证券资格,考研,计算机考试,建筑考试,财会类,医卫类,护士资格,公务员,知识点,试题,试卷">
|
||||||
|
|
||||||
|
<link th:href="${domainName + 'bootstrap/css/bootstrap.min.css'}" rel="stylesheet">
|
||||||
|
<link th:href="${domainName + 'font-awesome/css/font-awesome.min.css'}" rel="stylesheet">
|
||||||
|
<link th:href="${domainName + 'css/main.css'}" rel="stylesheet">
|
||||||
|
<link type="favicon" rel="shortcut icon" th:href="${domainName + 'images/favicon.png'}" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="manual-reader manual-container">
|
||||||
|
<header class="navbar navbar-static-top navbar-fixed-top manual-header" role="banner">
|
||||||
|
<div class="container">
|
||||||
|
<div class="navbar-header col-sm-12 col-md-9 col-lg-8">
|
||||||
|
<a th:href="${domainName}" class="navbar-brand" title="探果网">
|
||||||
|
<img alt="logo" src="https://www.tamguo.com/images/logo_731bc32.png">
|
||||||
|
</a>
|
||||||
|
<nav class="collapse navbar-collapse col-sm-10">
|
||||||
|
<ul class="nav navbar-nav">
|
||||||
|
<li class="active">
|
||||||
|
<a th:href="${domainName}" title="首页">首页</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<div class="searchbar pull-left visible-lg-inline-block visible-md-inline-block">
|
||||||
|
<form class="form-inline" th:action="${domainName}" method="get">
|
||||||
|
<input class="form-control" name="keyword" type="search" style="width: 230px;" placeholder="请输入关键词..." value="">
|
||||||
|
<button class="search-btn">
|
||||||
|
<i class="fa fa-search"></i>
|
||||||
|
</button>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
<div class="btn-group dropdown-menu-right pull-right slidebar visible-xs-inline-block visible-sm-inline-block">
|
||||||
|
<button class="btn btn-default dropdown-toggle hidden-lg" type="button" data-toggle="dropdown"><i class="fa fa-align-justify"></i></button>
|
||||||
|
<ul class="dropdown-menu" role="menu">
|
||||||
|
|
||||||
|
<li><a th:href="${memberDomain + 'login.html'}" title="用户登录">登录</a></li>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<nav class="navbar-collapse hidden-xs hidden-sm" role="navigation">
|
||||||
|
<ul class="nav navbar-nav navbar-right">
|
||||||
|
<li><a th:href="${memberDomain + 'login.html'}" title="用户登录">登录</a></li>
|
||||||
|
</ul>
|
||||||
|
</nav>
|
||||||
|
</div>
|
||||||
|
</header>
|
||||||
|
<div class="container manual-body">
|
||||||
|
<div class="row">
|
||||||
|
<div class="manual-list">
|
||||||
|
|
||||||
|
<div class="list-item" th:each="book,bookstatus:${bookPage.records}">
|
||||||
|
<dl class="manual-item-standard">
|
||||||
|
<dt>
|
||||||
|
<a th:href="${domainName + 'book/' + book.id + '.html'}" th:title="${book.name}" target="_blank">
|
||||||
|
<img th:src="${book.bookImage}" class="cover" th:alt="${book.name}" onerror="this.src='https://book.tamguo.com/images/book.jpg';">
|
||||||
|
</a>
|
||||||
|
</dt>
|
||||||
|
<dd>
|
||||||
|
<a th:href="${domainName + 'book/' + book.id + '.html'}" class="name" th:title="${book.name}" target="_blank" th:text="${book.name}">运行支持组</a>
|
||||||
|
</dd>
|
||||||
|
<dd>
|
||||||
|
<span class="author">
|
||||||
|
<b class="text">作者</b>
|
||||||
|
<b class="text">-</b>
|
||||||
|
<b class="text" th:text="${book.memberName}">mayun12</b>
|
||||||
|
</span>
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
</div>
|
||||||
|
<div class="clearfix"></div>
|
||||||
|
</div>
|
||||||
|
<nav class="pagination-container">
|
||||||
|
<ul class="pagination pagination-lg" >
|
||||||
|
<li th:class="${bookPage.current==1}?'disabled' : ''"><a href="#">上一页</a></li>
|
||||||
|
<li th:if="${bookPage.current-3 >=1}" ><a th:href="@{'index.html?current=' + ${bookPage.current-3}}" th:text="${bookPage.current -3}" >1</a></li>
|
||||||
|
<li th:if="${bookPage.current-2 >=1}" ><a th:href="@{'index.html?current=' + ${bookPage.current-2}}" th:text="${bookPage.current -2}" >1</a></li>
|
||||||
|
<li th:if="${bookPage.current-1 >=1}" ><a th:href="@{'index.html?current=' + ${bookPage.current-1}}" th:text="${bookPage.current -1}" >1</a></li>
|
||||||
|
<li class="active"><a href="#" th:text="${bookPage.current}" >1</a></li>
|
||||||
|
<li th:if="${bookPage.current+1 <=bookPage.pages}" ><a th:href="@{'index.html?current=' + ${bookPage.current+1}}" th:text="${bookPage.current +1}" >1</a></li>
|
||||||
|
<li th:if="${bookPage.current+2 <=bookPage.pages}" ><a th:href="@{'index.html?current=' + ${bookPage.current+2}}" th:text="${bookPage.current +2}" >1</a></li>
|
||||||
|
<li th:if="${bookPage.current+3 <=bookPage.pages}" ><a th:href="@{'index.html?current=' + ${bookPage.current+3}}" th:text="${bookPage.current +3}" >1</a></li>
|
||||||
|
|
||||||
|
<li th:class="${bookPage.current==bookPage.total}?'disabled' : ''" ><a href="#">下一页</a></li>
|
||||||
|
</ul>
|
||||||
|
<div class="clearfix"></div>
|
||||||
|
</nav>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="footer">
|
||||||
|
<div class="container">
|
||||||
|
<div class="row text-center border-top">
|
||||||
|
<span><a href="https://www.tamguo.com/" target="_blank">官方网站</a></span>
|
||||||
|
<span> · </span>
|
||||||
|
<span><a th:href="${domainName}" target="_blank">意见反馈</a></span>
|
||||||
|
<span> · </span>
|
||||||
|
<span><a th:href="${domainName}" target="_blank">项目源码</a></span>
|
||||||
|
<span> · </span>
|
||||||
|
<span><a th:href="${domainName}" target="_blank">使用手册</a></span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row text-center">
|
||||||
|
<a href="http://www.miitbeian.gov.cn" target="_blank">沪备案号 沪ICP备14022608号-1 Copyright © 2018 Tamguo</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<script th:src="${domainName + 'js/jquery-1.12.4.min.js'}" type="text/javascript"></script>
|
||||||
|
<script th:src="${domainName + 'bootstrap/js/bootstrap.min.js'}" type="text/javascript"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -1,130 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="zh-cn">
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<link type="favicon" rel="shortcut icon" th:href="${domainName + 'images/favicon.png'}" />
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
|
|
||||||
<meta name="renderer" content="webkit" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
||||||
<meta name="author" content="SmartWiki" />
|
|
||||||
<title>历史版本 - Tamguo</title>
|
|
||||||
<link th:href="${domainName + 'bootstrap/css/bootstrap.min.css'}" rel="stylesheet">
|
|
||||||
<link type="favicon" rel="shortcut icon" th:href="${domainName + 'images/favicon.png'}" />
|
|
||||||
<script th:src="${domainName + 'jquery/1.12.4/jquery.min.js'}"></script>
|
|
||||||
<style type="text/css">
|
|
||||||
.container{margin: 5px auto;}
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div class="container">
|
|
||||||
<div class="table-responsive">
|
|
||||||
<table class="table table-hover">
|
|
||||||
<thead>
|
|
||||||
<tr>
|
|
||||||
<td class="col-sm-6">修改时间</td>
|
|
||||||
<td class="col-sm-2">修改人</td>
|
|
||||||
<td class="col-sm-2">操作</td>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
|
|
||||||
<tr th:each="history,status:${historyList}">
|
|
||||||
<td th:text="${#dates.format(history.updateDate, 'yyyy-MM-dd HH:mm:ss')}">2018-11-14 06:55:34</td>
|
|
||||||
<td th:text="${history.owner}">admin</td>
|
|
||||||
<td>
|
|
||||||
<button class="btn btn-danger btn-sm delete-btn" th:attr="data-id=${history.id}" data-loading-text="删除中...">
|
|
||||||
删除
|
|
||||||
</button>
|
|
||||||
<button class="btn btn-success btn-sm restore-btn" th:attr="data-id=${history.id}" data-loading-text="恢复中...">
|
|
||||||
恢复
|
|
||||||
</button>
|
|
||||||
|
|
||||||
<button class="btn btn-success btn-sm compare-btn" th:attr="data-id=${history.id}">
|
|
||||||
合并
|
|
||||||
</button>
|
|
||||||
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<script th:src="${domainName + 'bootstrap/js/bootstrap.min.js'}"></script>
|
|
||||||
<script th:src="${domainName + 'layer/layer.js'}" type="text/javascript" ></script>
|
|
||||||
<script type="text/javascript">
|
|
||||||
$(function () {
|
|
||||||
$(".delete-btn").on("click",function () {
|
|
||||||
var id = $(this).attr('data-id');
|
|
||||||
var $btn = $(this).button('loading');
|
|
||||||
var $then = $(this);
|
|
||||||
|
|
||||||
if(!id){
|
|
||||||
layer.msg('参数错误');
|
|
||||||
}else{
|
|
||||||
$.ajax({
|
|
||||||
url : "[[${domainName}]]" + "member/document/history/delete",
|
|
||||||
type : "post",
|
|
||||||
dataType : "json",
|
|
||||||
data : { "id" : id },
|
|
||||||
success :function (res) {
|
|
||||||
if(res.code === 0){
|
|
||||||
$then.parents('tr').remove().empty();
|
|
||||||
}else{
|
|
||||||
layer.msg(res.message);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
error : function () {
|
|
||||||
$btn.button('reset');
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
$(".restore-btn").on("click",function () {
|
|
||||||
var id = $(this).attr('data-id');
|
|
||||||
var $btn = $(this).button('loading');
|
|
||||||
var $then = $(this);
|
|
||||||
var index = parent.layer.getFrameIndex(window.name);
|
|
||||||
|
|
||||||
if(!id){
|
|
||||||
layer.msg('参数错误');
|
|
||||||
}else{
|
|
||||||
$.ajax({
|
|
||||||
url : "[[${domainName}]]" + "member/document/history/restore",
|
|
||||||
type : "post",
|
|
||||||
dataType : "json",
|
|
||||||
data : { "id" : id },
|
|
||||||
success :function (res) {
|
|
||||||
if(res.code === 0){
|
|
||||||
var $node = { "node" : { "id" : res.result.id}};
|
|
||||||
|
|
||||||
parent.loadDocument($node);
|
|
||||||
parent.layer.close(index);
|
|
||||||
}else{
|
|
||||||
layer.msg(res.message);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
error : function () {
|
|
||||||
$btn.button('reset');
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
});
|
|
||||||
$(".compare-btn").on("click",function () {
|
|
||||||
var historyId = $(this).attr("data-id");
|
|
||||||
|
|
||||||
window.compareIndex = window.top.layer.open({
|
|
||||||
type: 2,
|
|
||||||
title: '文档比较【左侧为历史文档,右侧为当前文档,请将文档合并到右侧】',
|
|
||||||
shade: 0.8,
|
|
||||||
area: ['380px', '90%'],
|
|
||||||
content: "[[${domainName}]]" + "member/document/history/compare/" + historyId
|
|
||||||
});
|
|
||||||
window.top.layer.full(window.compareIndex);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -1,113 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="Zh-hans" xmlns:th="http://www.thymeleaf.org">
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<title>书籍列表 - 探果网</title>
|
|
||||||
<link rel="stylesheet" th:href="${domainName + 'css/reset.css'}" />
|
|
||||||
<link rel="stylesheet" th:href="${domainName + 'css/iconfont.css'}" />
|
|
||||||
<link rel="stylesheet" th:href="${domainName + 'css/member/bookList.css'}" />
|
|
||||||
<link rel="stylesheet" th:href="${domainName + 'css/member/memberMain.css'}" />
|
|
||||||
<link type="favicon" rel="shortcut icon" th:href="${domainName + 'images/favicon.png'}" />
|
|
||||||
<!-- 引入样式 -->
|
|
||||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/element-ui@2.4.2/lib/theme-chalk/index.css">
|
|
||||||
<style type="text/css">
|
|
||||||
.time {
|
|
||||||
font-size: 13px;
|
|
||||||
color: #999;
|
|
||||||
}
|
|
||||||
|
|
||||||
.bottom {
|
|
||||||
margin-top: 13px;
|
|
||||||
line-height: 12px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.button {
|
|
||||||
padding: 0;
|
|
||||||
float: right;
|
|
||||||
}
|
|
||||||
|
|
||||||
.image {
|
|
||||||
width: 100%;
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
|
|
||||||
.clearfix:before,
|
|
||||||
.clearfix:after {
|
|
||||||
display: table;
|
|
||||||
content: "";
|
|
||||||
}
|
|
||||||
|
|
||||||
.clearfix:after {
|
|
||||||
clear: both
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
<body style="position: relative;height: auto;min-height: 100%;">
|
|
||||||
|
|
||||||
<div class="head" th:fragment="memberHeader">
|
|
||||||
<div class="head-bar public">
|
|
||||||
<div class="logo">
|
|
||||||
<a target="_blank" th:href="${domainName}">
|
|
||||||
<img th:src="${domainName + 'images/logo_731bc32.png'}">
|
|
||||||
</a>
|
|
||||||
<p><span>书籍中心</span></p>
|
|
||||||
</div>
|
|
||||||
<ul class="nav">
|
|
||||||
<li><a th:href="${domainName + 'member/index.html'}">首页</a></li>
|
|
||||||
<li class="active"><a th:href="${domainName + 'member/book/list.html'}">书籍</a></li>
|
|
||||||
<li><a th:href="${domainName + 'member/account.html'}">帐号</a></li>
|
|
||||||
</ul>
|
|
||||||
<div class="mguser">
|
|
||||||
<div class="mguser-box">
|
|
||||||
<span th:text="${session.currMember.username}">tamguo</span>
|
|
||||||
<a th:href="${domainName + 'logout.html'}">退出</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="cnav">
|
|
||||||
<div class="public cnav_b">
|
|
||||||
<div class="cnav_left">
|
|
||||||
探果五步曲
|
|
||||||
</div>
|
|
||||||
<div class="cnav_right">
|
|
||||||
<ul>
|
|
||||||
<li><span class="Cnav_t">1</span><b>新建书籍</b></li>
|
|
||||||
<li><span>2</span>添加章节</li>
|
|
||||||
<li><span>3</span>书写内容</li>
|
|
||||||
<li><span>4</span>发布试卷</li>
|
|
||||||
<li><span>5</span>等待收益</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="plist test_public myPositionList ng-scope" style="padding:10px;">
|
|
||||||
<div class="topbt topbt-2">
|
|
||||||
<h3>我的试卷</h3>
|
|
||||||
</div>
|
|
||||||
<div class="pageShow" id="pageShow" style="padding:40px;">
|
|
||||||
<div class="con_top addNewPaper">
|
|
||||||
<span style="text-align: center;" id="addSiama"><a href="javascript:void(0)">+ 新建试卷</a></span>
|
|
||||||
</div>
|
|
||||||
<div class="slide-list" style="width: 4050px; left: -2025px;"><ul class="list-col list-col5 list-express slide-item clone">
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div class="clear" style="margin-top: 20px;"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- 尾部-->
|
|
||||||
<div th:replace="include/memberFooter :: memberFooter"></div>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
<script type="text/javascript" th:inline="javascript">
|
|
||||||
var mainHttp = [[${domainName}]];
|
|
||||||
</script>
|
|
||||||
<!-- import JavaScript -->
|
|
||||||
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.16"></script>
|
|
||||||
<script src="https://cdn.jsdelivr.net/npm/element-ui@2.4.2/lib/index.js"></script>
|
|
||||||
<script src="https://cdn.jsdelivr.net/npm/axios@0.18.0/dist/axios.min.js"></script>
|
|
||||||
<script type="text/javascript" th:src="${domainName + 'js/member/bookList.js'}" ></script>
|
|
||||||
</html>
|
|
@ -1,134 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="Zh-hans" xmlns:th="http://www.thymeleaf.org">
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<title>会员中心 - 探果网</title>
|
|
||||||
<link rel="stylesheet" th:href="${domainName + 'css/reset.css'}" />
|
|
||||||
<link rel="stylesheet" th:href="${domainName + 'css/iconfont.css'}" />
|
|
||||||
<link rel="stylesheet" th:href="${domainName + 'css/member/index.css'}" />
|
|
||||||
<link rel="stylesheet" th:href="${domainName + 'css/member/memberMain.css'}" />
|
|
||||||
<link type="favicon" rel="shortcut icon" th:href="${domainName + 'images/favicon.png'}" />
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<!-- 头部-->
|
|
||||||
<div class="head" th:fragment="memberHeader">
|
|
||||||
<div class="head-bar public">
|
|
||||||
<div class="logo">
|
|
||||||
<a target="_blank" th:href="${domainName}">
|
|
||||||
<img th:src="${domainName + 'images/logo_731bc32.png'}">
|
|
||||||
</a>
|
|
||||||
<p><span>书籍中心</span></p>
|
|
||||||
</div>
|
|
||||||
<ul class="nav">
|
|
||||||
<li class="active"><a th:href="${domainName + 'member/index.html'}">首页</a></li>
|
|
||||||
<li><a th:href="${domainName + 'member/book/list.html'}">书籍</a></li>
|
|
||||||
<li><a th:href="${domainName + 'member/account.html'}">帐号</a></li>
|
|
||||||
</ul>
|
|
||||||
<div class="mguser">
|
|
||||||
<div class="mguser-box">
|
|
||||||
<span th:text="${member.username}">tamguo</span>
|
|
||||||
<a th:href="${domainName + 'logout.html'}">退出</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!--主体-->
|
|
||||||
<div class="cnav">
|
|
||||||
<div class="public cnav_b">
|
|
||||||
<div class="cnav_left">
|
|
||||||
探果五步曲
|
|
||||||
</div>
|
|
||||||
<div class="cnav_right">
|
|
||||||
<ul>
|
|
||||||
<li><span class="Cnav_t">1</span><b>新建书籍</b></li>
|
|
||||||
<li><span>2</span>添加章节</li>
|
|
||||||
<li><span>3</span>书写内容</li>
|
|
||||||
<li><span>4</span>发布书籍</li>
|
|
||||||
<li><span>5</span>等待收益</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="PCshow hide" style="display: block;">
|
|
||||||
<div class="examContent public">
|
|
||||||
<h2>
|
|
||||||
<img th:src="${domainName + 'images/member/index/face-xiao.png'}"
|
|
||||||
style="position: relative; top: -2px;"> <span
|
|
||||||
style="letter-spacing: 4px;">
|
|
||||||
<b id="userName" style="font-weight: normal; color: #2abcb8" th:text="${member.nickName}">tamguo</b>,您好!欢迎来到探果网会员中心
|
|
||||||
</span>
|
|
||||||
</h2>
|
|
||||||
<!-- 左侧基本信息项 -->
|
|
||||||
<div class="newsLeft">
|
|
||||||
<div class="baseNews">
|
|
||||||
<h3><i></i> 基本信息</h3>
|
|
||||||
<div id="borderBox">
|
|
||||||
<table style="float: left;">
|
|
||||||
<tbody><tr>
|
|
||||||
<td>
|
|
||||||
<span class="logoV">
|
|
||||||
<img th:src="${domainName + member.avatar}">
|
|
||||||
</span>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</tbody></table>
|
|
||||||
<b th:title="${member.username}" style="font-size: 16px; margin-left: 14px;float: left;display: inline-block;font-weight: normal;max-width: 100px;overflow: hidden;white-space: nowrap;text-overflow: ellipsis;" th:text="${member.username}">盘诚软件</b>
|
|
||||||
<a style="font-size: 12px;" th:href="${domainName + 'member/account.html'}"><i class="iconfont icon-icon_edit"></i> 编辑</a>
|
|
||||||
</div>
|
|
||||||
<p style="clear: both;height: 0px;"></p>
|
|
||||||
</div>
|
|
||||||
<div class="well"></div>
|
|
||||||
<div class="userNews">
|
|
||||||
<h3><i></i> 账户信息</h3>
|
|
||||||
<ul>
|
|
||||||
<li style="padding-left: 21px;">积分:
|
|
||||||
<b style="margin-left:14px;color:#009688;" id="examCandsNum" th:text="${member.point + ' '}">1000</b>分
|
|
||||||
</li>
|
|
||||||
<li style="padding-left: 24px;">余额:<b style="margin-left: 19px;color:#009688;" th:text="${#numbers.formatDecimal(member.amount,1,2) + ' '}">50</b>元</li>
|
|
||||||
<li style="padding-left: 21px;">最近登录时间:<b style="margin-left: 13px;" th:text="${#dates.format(member.lastLoginTime * 1000, 'yyyy/MM/ss HH:mm')}">2018-04-27 10:32</b></li>
|
|
||||||
</ul>
|
|
||||||
<a th:href="${domainName}" target="_blank" id="addMoney">我的钱包</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- 右侧信息显示 -->
|
|
||||||
<div class="newsR">
|
|
||||||
<div class="topNews" id="numList1">
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
<img th:src="${domainName + 'images/member/index/peneil.png'}" style="margin-top: 26px;position: relative;top: -4px;"><br>
|
|
||||||
<span><b id="datab1" th:text="${member.downNum}">0</b> 次</span><br>
|
|
||||||
<span>下载总数</span>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<img th:src="${domainName + 'images/member/index/paperm.png'}" style="margin-top: 26px;position: relative;top: -4px;"><br>
|
|
||||||
<span><b id="datab2" th:text="${member.paperNum}">1</b> 套</span><br>
|
|
||||||
<span>书籍总数</span>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<img th:src="${domainName + 'images/member/index/peoplem.png'}" style="margin-top: 26px;position: relative;top: -4px;"><br>
|
|
||||||
<span><b id="datab3" th:text="${member.hitsNum}">0</b> 次</span><br>
|
|
||||||
<span>阅读总数</span>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<img th:src="${domainName + 'images/member/index/testnew.png'}" style="margin-top: 26px;position: relative;top: -6px;"><br>
|
|
||||||
<span><b id="datab4" th:text="${member.questionNum}">19</b> 章</span><br>
|
|
||||||
<span>章节总数</span>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<div class="newExam">
|
|
||||||
<div class="add-p">
|
|
||||||
<a th:href="${domainName + 'member/book/list.html'}"><i class="iconfont icon-jia" style="font-size:130px;"></i></a>
|
|
||||||
</div>
|
|
||||||
<a th:href="${domainName + 'member/book/list.html'}">开始新建书籍</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- 尾部-->
|
|
||||||
<div th:replace="include/memberFooter :: memberFooter"></div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
Loading…
Reference in new issue