更新基础框架
parent
37bc8c7973
commit
f391d962ac
|
@ -35,7 +35,8 @@
|
||||||
* https://gitee.com/whvse/treetable-lay
|
* https://gitee.com/whvse/treetable-lay
|
||||||
* 图标库使用
|
* 图标库使用
|
||||||
* http://www.fontawesome.com.cn/faicons
|
* http://www.fontawesome.com.cn/faicons
|
||||||
* 发送 ajax 示例:[详情](./docs/ajax.md)
|
* 发送 Ajax 示例:[详情](./docs/ajax.md)
|
||||||
|
* FreeMarker 文档:[详情](./docs/FreeMarker.md)
|
||||||
* 后端
|
* 后端
|
||||||
* Hutool 是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,让Java语言也可以“甜甜的”。
|
* Hutool 是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,让Java语言也可以“甜甜的”。
|
||||||
* 枚举
|
* 枚举
|
||||||
|
|
|
@ -0,0 +1,12 @@
|
||||||
|
### FreeMarker 文档
|
||||||
|
|
||||||
|
* html 或者 js 中遍历 model 中的 `List<Map<String, Object>> result`
|
||||||
|
|
||||||
|
```
|
||||||
|
<#list result as map>
|
||||||
|
<#list map?keys as key> //关键点
|
||||||
|
console.log('${key}')
|
||||||
|
console.log('${map[key]}')
|
||||||
|
</#list>
|
||||||
|
</#list>
|
||||||
|
```
|
|
@ -20,12 +20,12 @@ import javax.servlet.http.HttpServletRequest;
|
||||||
@ControllerAdvice
|
@ControllerAdvice
|
||||||
public class ExceptionAdvice {
|
public class ExceptionAdvice {
|
||||||
|
|
||||||
Logger log = LoggerFactory.getLogger(ExceptionAdvice.class);
|
Logger logger = LoggerFactory.getLogger(ExceptionAdvice.class);
|
||||||
|
|
||||||
@ExceptionHandler(AuthorizationException.class)
|
@ExceptionHandler(AuthorizationException.class)
|
||||||
@ResponseBody
|
@ResponseBody
|
||||||
public Object handleAuthorizationException(AuthorizationException e, HttpServletRequest request) {
|
public Object handleAuthorizationException(AuthorizationException e, HttpServletRequest request) {
|
||||||
log.error(e.getMessage(), e);
|
logger.error(e.getMessage(), e);
|
||||||
if (HttpUtil.isAjax(request)) {
|
if (HttpUtil.isAjax(request)) {
|
||||||
return Result.failure("未授权");
|
return Result.failure("未授权");
|
||||||
}
|
}
|
||||||
|
@ -35,7 +35,7 @@ public class ExceptionAdvice {
|
||||||
@ExceptionHandler(DuplicateKeyException.class)
|
@ExceptionHandler(DuplicateKeyException.class)
|
||||||
@ResponseBody
|
@ResponseBody
|
||||||
public Object handleDuplicateKeyException(DuplicateKeyException e, HttpServletRequest request) {
|
public Object handleDuplicateKeyException(DuplicateKeyException e, HttpServletRequest request) {
|
||||||
log.error(e.getMessage(), e);
|
logger.error(e.getMessage(), e);
|
||||||
if (HttpUtil.isAjax(request)) {
|
if (HttpUtil.isAjax(request)) {
|
||||||
return Result.failure("数据重复");
|
return Result.failure("数据重复");
|
||||||
}
|
}
|
||||||
|
@ -45,7 +45,7 @@ public class ExceptionAdvice {
|
||||||
@ExceptionHandler({Exception.class})
|
@ExceptionHandler({Exception.class})
|
||||||
@ResponseBody
|
@ResponseBody
|
||||||
public Object handleException(Exception e, HttpServletRequest request) {
|
public Object handleException(Exception e, HttpServletRequest request) {
|
||||||
log.error(e.getMessage(), e);
|
logger.error(e.getMessage(), e);
|
||||||
if (HttpUtil.isAjax(request)) {
|
if (HttpUtil.isAjax(request)) {
|
||||||
return Result.failure("服务器错误,请联系管理员");
|
return Result.failure("服务器错误,请联系管理员");
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,18 +17,18 @@ import java.time.LocalDateTime;
|
||||||
@Component
|
@Component
|
||||||
public class SpMetaObjectHandler implements MetaObjectHandler {
|
public class SpMetaObjectHandler implements MetaObjectHandler {
|
||||||
|
|
||||||
Logger log = LoggerFactory.getLogger(SpMetaObjectHandler.class);
|
Logger logger = LoggerFactory.getLogger(SpMetaObjectHandler.class);
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void insertFill(MetaObject metaObject) {
|
public void insertFill(MetaObject metaObject) {
|
||||||
log.info("start insert fill ...");
|
logger.info("start insert fill ...");
|
||||||
this.setInsertData(metaObject);
|
this.setInsertData(metaObject);
|
||||||
this.setUpdateData(metaObject);
|
this.setUpdateData(metaObject);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void updateFill(MetaObject metaObject) {
|
public void updateFill(MetaObject metaObject) {
|
||||||
log.info("start update fill ...");
|
logger.info("start update fill ...");
|
||||||
this.setUpdateData(metaObject);
|
this.setUpdateData(metaObject);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,27 @@
|
||||||
|
package com.songpeng.sparchetype.common.controller.admin;
|
||||||
|
|
||||||
|
import org.springframework.stereotype.Controller;
|
||||||
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
import org.springframework.web.bind.annotation.PathVariable;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 公共 Controller
|
||||||
|
*
|
||||||
|
* @author SongPeng
|
||||||
|
* @date 2020/3/11
|
||||||
|
*/
|
||||||
|
@RequestMapping("/admin/common")
|
||||||
|
@Controller("adminCommonController")
|
||||||
|
public class CommonController {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 公用 UI
|
||||||
|
* @param fileName
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@GetMapping({"/ui/{fileName}"})
|
||||||
|
public String searchPanelUI(@PathVariable String fileName) {
|
||||||
|
return "/common/" + fileName;
|
||||||
|
}
|
||||||
|
}
|
|
@ -19,7 +19,7 @@ import java.util.Random;
|
||||||
*/
|
*/
|
||||||
public class RandomVerificationCodeUtil {
|
public class RandomVerificationCodeUtil {
|
||||||
|
|
||||||
private static final Logger log = LoggerFactory.getLogger(RandomVerificationCodeUtil.class);
|
private static final Logger logger = LoggerFactory.getLogger(RandomVerificationCodeUtil.class);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 放到session中的key
|
* 放到session中的key
|
||||||
|
@ -104,7 +104,7 @@ public class RandomVerificationCodeUtil {
|
||||||
for (int i = 1; i <= stringNum; i++) {
|
for (int i = 1; i <= stringNum; i++) {
|
||||||
randomString = drowString(g, randomString, i);
|
randomString = drowString(g, randomString, i);
|
||||||
}
|
}
|
||||||
log.info(randomString);
|
logger.info(randomString);
|
||||||
// 将生成的随机字符串保存到session中
|
// 将生成的随机字符串保存到session中
|
||||||
session.removeAttribute(RANDOM_CODE_KEY);
|
session.removeAttribute(RANDOM_CODE_KEY);
|
||||||
session.setAttribute(RANDOM_CODE_KEY, randomString);
|
session.setAttribute(RANDOM_CODE_KEY, randomString);
|
||||||
|
@ -113,7 +113,7 @@ public class RandomVerificationCodeUtil {
|
||||||
// 将内存中的图片通过流动形式输出到客户端
|
// 将内存中的图片通过流动形式输出到客户端
|
||||||
ImageIO.write(image, "JPEG", response.getOutputStream());
|
ImageIO.write(image, "JPEG", response.getOutputStream());
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.error("将内存中的图片通过流形式输出到客户端失败", e);
|
logger.error("将内存中的图片通过流形式输出到客户端失败", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -17,7 +17,7 @@ import java.util.concurrent.atomic.AtomicInteger;
|
||||||
*/
|
*/
|
||||||
public class RetryLimitCredentialsMatcher extends HashedCredentialsMatcher {
|
public class RetryLimitCredentialsMatcher extends HashedCredentialsMatcher {
|
||||||
|
|
||||||
Logger log = LoggerFactory.getLogger(RetryLimitCredentialsMatcher.class);
|
Logger logger = LoggerFactory.getLogger(RetryLimitCredentialsMatcher.class);
|
||||||
|
|
||||||
private Cache<String, AtomicInteger> loginRetryCache;
|
private Cache<String, AtomicInteger> loginRetryCache;
|
||||||
|
|
||||||
|
@ -48,9 +48,9 @@ public class RetryLimitCredentialsMatcher extends HashedCredentialsMatcher {
|
||||||
String username = (String) token.getPrincipal();
|
String username = (String) token.getPrincipal();
|
||||||
//retry count + 1
|
//retry count + 1
|
||||||
AtomicInteger retryCount = loginRetryCache.get(username) == null ? new AtomicInteger(0) : loginRetryCache.get(username);
|
AtomicInteger retryCount = loginRetryCache.get(username) == null ? new AtomicInteger(0) : loginRetryCache.get(username);
|
||||||
log.info("retryCount:{}, username:{}", retryCount, username);
|
logger.info("retryCount:{}, username:{}", retryCount, username);
|
||||||
if (retryCount.incrementAndGet() > this.maxRetryCount) {
|
if (retryCount.incrementAndGet() > this.maxRetryCount) {
|
||||||
log.warn("username: {} tried to login more than {} times in perid", username, this.maxRetryCount);
|
logger.warn("username: {} tried to login more than {} times in perid", username, this.maxRetryCount);
|
||||||
throw new ExcessiveAttemptsException("username: " + username + "tried to login more than " + this.maxRetryCount + " times in perid");
|
throw new ExcessiveAttemptsException("username: " + username + "tried to login more than " + this.maxRetryCount + " times in perid");
|
||||||
}
|
}
|
||||||
boolean matches = super.doCredentialsMatch(token, info);
|
boolean matches = super.doCredentialsMatch(token, info);
|
||||||
|
@ -59,7 +59,7 @@ public class RetryLimitCredentialsMatcher extends HashedCredentialsMatcher {
|
||||||
loginRetryCache.remove(username);
|
loginRetryCache.remove(username);
|
||||||
} else {
|
} else {
|
||||||
loginRetryCache.put(username, retryCount);
|
loginRetryCache.put(username, retryCount);
|
||||||
log.info(String.valueOf(retryCount.get()));
|
logger.info(String.valueOf(retryCount.get()));
|
||||||
}
|
}
|
||||||
return matches;
|
return matches;
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,7 +31,7 @@ import java.util.Set;
|
||||||
*/
|
*/
|
||||||
public class ShiroRealm extends AuthorizingRealm {
|
public class ShiroRealm extends AuthorizingRealm {
|
||||||
|
|
||||||
Logger log = LoggerFactory.getLogger(ShiroRealm.class);
|
Logger logger = LoggerFactory.getLogger(ShiroRealm.class);
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private ISysUserService sysUserService;
|
private ISysUserService sysUserService;
|
||||||
|
@ -64,19 +64,19 @@ public class ShiroRealm extends AuthorizingRealm {
|
||||||
try {
|
try {
|
||||||
user = sysUserService.getUserAndRoleAndMenuByUsername(username);
|
user = sysUserService.getUserAndRoleAndMenuByUsername(username);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.error("账号数据查询异常,请联系管理员", e);
|
logger.error("账号数据查询异常,请联系管理员", e);
|
||||||
throw new UnknownAccountException("账号数据查询异常,请联系管理员");
|
throw new UnknownAccountException("账号数据查询异常,请联系管理员");
|
||||||
}
|
}
|
||||||
|
|
||||||
// 账号不存在
|
// 账号不存在
|
||||||
if (null == user) {
|
if (null == user) {
|
||||||
log.error("账号不存在");
|
logger.error("账号不存在");
|
||||||
throw new UnknownAccountException("账号不存在");
|
throw new UnknownAccountException("账号不存在");
|
||||||
}
|
}
|
||||||
|
|
||||||
// 账号锁定
|
// 账号锁定
|
||||||
if (!user.getDeleted().equals(SysUserEnum.DELETED_NORMAL.getCode())) {
|
if (!user.getDeleted().equals(SysUserEnum.DELETED_NORMAL.getCode())) {
|
||||||
log.error("账号已被锁定,请联系管理员");
|
logger.error("账号已被锁定,请联系管理员");
|
||||||
throw new LockedAccountException("账号已被锁定,请联系管理员");
|
throw new LockedAccountException("账号已被锁定,请联系管理员");
|
||||||
}
|
}
|
||||||
// TODO 根据用户名(唯一不可变)作为密码加盐,当然也可以自定义加盐方式,如增加数据库字段等
|
// TODO 根据用户名(唯一不可变)作为密码加盐,当然也可以自定义加盐方式,如增加数据库字段等
|
||||||
|
|
|
@ -16,7 +16,7 @@ import javax.servlet.http.HttpServletResponse;
|
||||||
*/
|
*/
|
||||||
public class SpLoginFormFilter extends FormAuthenticationFilter {
|
public class SpLoginFormFilter extends FormAuthenticationFilter {
|
||||||
|
|
||||||
private static final Logger log = LoggerFactory.getLogger(SpLoginFormFilter.class);
|
private static final Logger logger = LoggerFactory.getLogger(SpLoginFormFilter.class);
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected boolean onAccessDenied(ServletRequest request, ServletResponse response) throws Exception {
|
protected boolean onAccessDenied(ServletRequest request, ServletResponse response) throws Exception {
|
||||||
|
@ -24,20 +24,20 @@ public class SpLoginFormFilter extends FormAuthenticationFilter {
|
||||||
HttpServletResponse httpServletResponse = (HttpServletResponse) response;
|
HttpServletResponse httpServletResponse = (HttpServletResponse) response;
|
||||||
if (isLoginRequest(request, response)) {
|
if (isLoginRequest(request, response)) {
|
||||||
if (isLoginSubmission(request, response)) {
|
if (isLoginSubmission(request, response)) {
|
||||||
if (log.isTraceEnabled()) {
|
if (logger.isTraceEnabled()) {
|
||||||
log.trace("Login submission detected. Attempting to execute login.");
|
logger.trace("Login submission detected. Attempting to execute login.");
|
||||||
}
|
}
|
||||||
return executeLogin(request, response);
|
return executeLogin(request, response);
|
||||||
} else {
|
} else {
|
||||||
if (log.isTraceEnabled()) {
|
if (logger.isTraceEnabled()) {
|
||||||
log.trace("Login page view.");
|
logger.trace("Login page view.");
|
||||||
}
|
}
|
||||||
//allow them to see the login page
|
//allow them to see the login page
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (log.isTraceEnabled()) {
|
if (logger.isTraceEnabled()) {
|
||||||
log.trace("Attempting to access a path which requires authentication. Forwarding to the " +
|
logger.trace("Attempting to access a path which requires authentication. Forwarding to the " +
|
||||||
"Authentication url [" + getLoginUrl() + "]");
|
"Authentication url [" + getLoginUrl() + "]");
|
||||||
}
|
}
|
||||||
//如果是Ajax请求,不跳转登录
|
//如果是Ajax请求,不跳转登录
|
||||||
|
|
|
@ -34,7 +34,7 @@ import org.springframework.web.bind.annotation.ResponseBody;
|
||||||
@RequestMapping("/admin/sys/department")
|
@RequestMapping("/admin/sys/department")
|
||||||
public class SysDepartmentController extends BaseController {
|
public class SysDepartmentController extends BaseController {
|
||||||
|
|
||||||
Logger log = LoggerFactory.getLogger(SysDepartmentController.class);
|
Logger logger = LoggerFactory.getLogger(SysDepartmentController.class);
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private ISysDepartmentService sysDepartmentService;
|
private ISysDepartmentService sysDepartmentService;
|
||||||
|
|
|
@ -35,7 +35,7 @@ import org.springframework.web.bind.annotation.ResponseBody;
|
||||||
@RequestMapping("/admin/sys/dict")
|
@RequestMapping("/admin/sys/dict")
|
||||||
public class SysDictController extends BaseController {
|
public class SysDictController extends BaseController {
|
||||||
|
|
||||||
Logger log = LoggerFactory.getLogger(SysDictController.class);
|
Logger logger = LoggerFactory.getLogger(SysDictController.class);
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private ISysDictService sysDictService;
|
private ISysDictService sysDictService;
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package com.songpeng.sparchetype.system.controller.admin;
|
package com.songpeng.sparchetype.system.controller.admin;
|
||||||
|
|
||||||
|
import com.songpeng.sparchetype.common.BaseController;
|
||||||
import com.songpeng.sparchetype.common.Result;
|
import com.songpeng.sparchetype.common.Result;
|
||||||
import com.songpeng.sparchetype.system.service.ISysMenuService;
|
import com.songpeng.sparchetype.system.service.ISysMenuService;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
|
@ -22,9 +23,9 @@ import java.util.Map;
|
||||||
*/
|
*/
|
||||||
@RequestMapping("/admin")
|
@RequestMapping("/admin")
|
||||||
@Controller("adminSysLoginController")
|
@Controller("adminSysLoginController")
|
||||||
public class SysLoginController {
|
public class SysLoginController extends BaseController {
|
||||||
|
|
||||||
Logger log = LoggerFactory.getLogger(SysLoginController.class);
|
Logger logger = LoggerFactory.getLogger(SysLoginController.class);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 系统菜单 Service
|
* 系统菜单 Service
|
||||||
|
|
|
@ -21,7 +21,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
@RequestMapping("/admin/sys/tool")
|
@RequestMapping("/admin/sys/tool")
|
||||||
public class SysToolController extends BaseController {
|
public class SysToolController extends BaseController {
|
||||||
|
|
||||||
Logger log = LoggerFactory.getLogger(SysToolController.class);
|
Logger logger = LoggerFactory.getLogger(SysToolController.class);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 图标列表
|
* 图标列表
|
||||||
|
|
|
@ -35,7 +35,7 @@ import java.util.List;
|
||||||
@RequestMapping("/admin/sys/user")
|
@RequestMapping("/admin/sys/user")
|
||||||
public class SysUserController extends BaseController {
|
public class SysUserController extends BaseController {
|
||||||
|
|
||||||
Logger log = LoggerFactory.getLogger(SysUserController.class);
|
Logger logger = LoggerFactory.getLogger(SysUserController.class);
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private ISysUserService sysUserService;
|
private ISysUserService sysUserService;
|
||||||
|
@ -52,6 +52,12 @@ public class SysUserController extends BaseController {
|
||||||
@ResponseBody
|
@ResponseBody
|
||||||
public Result page(SysUserPageReq req) throws Exception {
|
public Result page(SysUserPageReq req) throws Exception {
|
||||||
QueryWrapper qw = new QueryWrapper();
|
QueryWrapper qw = new QueryWrapper();
|
||||||
|
if (StringUtils.isNotEmpty(req.getNameLike())) {
|
||||||
|
qw.likeRight("name", req.getNameLike());
|
||||||
|
}
|
||||||
|
if (StringUtils.isNotEmpty(req.getUsernameLike())) {
|
||||||
|
qw.likeRight("username", req.getUsernameLike());
|
||||||
|
}
|
||||||
qw.orderByDesc(req.getOrderBy());
|
qw.orderByDesc(req.getOrderBy());
|
||||||
IPage page = sysUserService.page(req, qw);
|
IPage page = sysUserService.page(req, qw);
|
||||||
return Result.success(page);
|
return Result.success(page);
|
||||||
|
|
|
@ -26,7 +26,7 @@ import javax.servlet.http.HttpServletResponse;
|
||||||
@Controller("clientSysLoginController")
|
@Controller("clientSysLoginController")
|
||||||
public class SysLoginController {
|
public class SysLoginController {
|
||||||
|
|
||||||
Logger log = LoggerFactory.getLogger(SysLoginController.class);
|
Logger logger = LoggerFactory.getLogger(SysLoginController.class);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 首页默认跳转到博客主页
|
* 首页默认跳转到博客主页
|
||||||
|
@ -55,7 +55,7 @@ public class SysLoginController {
|
||||||
// 输出验证码图片方法
|
// 输出验证码图片方法
|
||||||
randomValidateCode.getRandcode(request, response);
|
randomValidateCode.getRandcode(request, response);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.error("获取验证码失败", e);
|
logger.error("获取验证码失败", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -90,25 +90,25 @@ public class SysLoginController {
|
||||||
subject.login(token);
|
subject.login(token);
|
||||||
return Result.success();
|
return Result.success();
|
||||||
} catch (LockedAccountException e) {
|
} catch (LockedAccountException e) {
|
||||||
log.error("锁定的帐号", e);
|
logger.error("锁定的帐号", e);
|
||||||
return Result.failure("锁定的帐号");
|
return Result.failure("锁定的帐号");
|
||||||
} catch (DisabledAccountException e) {
|
} catch (DisabledAccountException e) {
|
||||||
log.error("禁用的帐号", e);
|
logger.error("禁用的帐号", e);
|
||||||
return Result.failure("禁用的帐号");
|
return Result.failure("禁用的帐号");
|
||||||
} catch (UnknownAccountException e) {
|
} catch (UnknownAccountException e) {
|
||||||
log.error("错误的帐号", e);
|
logger.error("错误的帐号", e);
|
||||||
return Result.failure("错误的帐号");
|
return Result.failure("错误的帐号");
|
||||||
} catch (ExcessiveAttemptsException e) {
|
} catch (ExcessiveAttemptsException e) {
|
||||||
log.error("登录失败次数过多", e);
|
logger.error("登录失败次数过多", e);
|
||||||
return Result.failure("登录失败次数过多");
|
return Result.failure("登录失败次数过多");
|
||||||
} catch (IncorrectCredentialsException e) {
|
} catch (IncorrectCredentialsException e) {
|
||||||
log.error("错误的凭证", e);
|
logger.error("错误的凭证", e);
|
||||||
return Result.failure("错误的凭证");
|
return Result.failure("错误的凭证");
|
||||||
} catch (ExpiredCredentialsException e) {
|
} catch (ExpiredCredentialsException e) {
|
||||||
log.error("过期的凭证", e);
|
logger.error("过期的凭证", e);
|
||||||
return Result.failure("过期的凭证");
|
return Result.failure("过期的凭证");
|
||||||
} catch (AuthenticationException e) {
|
} catch (AuthenticationException e) {
|
||||||
log.error("用户或密码错误", e);
|
logger.error("用户或密码错误", e);
|
||||||
return Result.failure("用户或密码错误");
|
return Result.failure("用户或密码错误");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,4 +12,29 @@ import com.songpeng.sparchetype.common.BasePageReq;
|
||||||
*/
|
*/
|
||||||
public class SysUserPageReq extends BasePageReq {
|
public class SysUserPageReq extends BasePageReq {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 姓名
|
||||||
|
*/
|
||||||
|
private String nameLike;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 用户名
|
||||||
|
*/
|
||||||
|
private String usernameLike;
|
||||||
|
|
||||||
|
public String getNameLike() {
|
||||||
|
return nameLike;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setNameLike(String nameLike) {
|
||||||
|
this.nameLike = nameLike;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getUsernameLike() {
|
||||||
|
return usernameLike;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setUsernameLike(String usernameLike) {
|
||||||
|
this.usernameLike = usernameLike;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 4.0 KiB |
|
@ -1,7 +1,5 @@
|
||||||
/**
|
/**
|
||||||
* date:2019/08/16
|
* 宋鹏:layui 自定义组件配置
|
||||||
* author:Mr.Chung
|
|
||||||
* description:此处放layui自定义扩展
|
|
||||||
*/
|
*/
|
||||||
window.rootPath = (function (src) {
|
window.rootPath = (function (src) {
|
||||||
src = document.scripts[document.scripts.length - 1].src;
|
src = document.scripts[document.scripts.length - 1].src;
|
||||||
|
@ -13,7 +11,15 @@ layui.config({
|
||||||
version: true
|
version: true
|
||||||
}).extend({
|
}).extend({
|
||||||
// layui扩展
|
// layui扩展
|
||||||
splayui: "splayui/splayui",
|
spLayui: "sp/spLayui",
|
||||||
|
// 自定义layer扩展组件
|
||||||
|
spLayer: 'sp/spLayer',
|
||||||
|
// 自定义table扩展组件
|
||||||
|
spTable: 'sp/spTable',
|
||||||
|
// 自定义table扩展组件
|
||||||
|
spSearchPanel: 'sp/spSearchPanel',
|
||||||
|
// 大气风格的网络公司企业模版
|
||||||
|
spCompany: 'sp/spCompany',
|
||||||
// 分步表单扩展
|
// 分步表单扩展
|
||||||
step: 'step-lay/step',
|
step: 'step-lay/step',
|
||||||
//table树形扩展
|
//table树形扩展
|
||||||
|
@ -22,16 +28,6 @@ layui.config({
|
||||||
tableSelect: 'tableSelect/tableSelect',
|
tableSelect: 'tableSelect/tableSelect',
|
||||||
// fa图标选择扩展
|
// fa图标选择扩展
|
||||||
iconPickerFa: 'iconPicker/iconPickerFa',
|
iconPickerFa: 'iconPicker/iconPickerFa',
|
||||||
// echarts图表扩展
|
|
||||||
echarts: 'echarts/echarts',
|
|
||||||
// echarts图表主题扩展
|
|
||||||
echartsTheme: 'echarts/echartsTheme',
|
|
||||||
// wangEditor富文本扩展
|
// wangEditor富文本扩展
|
||||||
wangEditor: 'wangEditor/wangEditor',
|
wangEditor: 'wangEditor/wangEditor'
|
||||||
// 自定义layer扩展组件
|
|
||||||
splayer: 'splayer/splayer',
|
|
||||||
// 自定义table扩展组件
|
|
||||||
sptable: 'sptable/sptable',
|
|
||||||
// 大气风格的网络公司企业模版
|
|
||||||
company: 'company/company'
|
|
||||||
});
|
});
|
File diff suppressed because one or more lines are too long
|
@ -1,492 +0,0 @@
|
||||||
layui.define(function(exports) {
|
|
||||||
exports('echartsTheme',
|
|
||||||
{
|
|
||||||
"color": [
|
|
||||||
"#3fb1e3",
|
|
||||||
"#6be6c1",
|
|
||||||
"#626c91",
|
|
||||||
"#a0a7e6",
|
|
||||||
"#c4ebad",
|
|
||||||
"#96dee8"
|
|
||||||
],
|
|
||||||
"backgroundColor": "rgba(252,252,252,0)",
|
|
||||||
"textStyle": {},
|
|
||||||
"title": {
|
|
||||||
"textStyle": {
|
|
||||||
"color": "#666666"
|
|
||||||
},
|
|
||||||
"subtextStyle": {
|
|
||||||
"color": "#999999"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"line": {
|
|
||||||
"itemStyle": {
|
|
||||||
"normal": {
|
|
||||||
"borderWidth": "3"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"lineStyle": {
|
|
||||||
"normal": {
|
|
||||||
"width": "4"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"symbolSize": "10",
|
|
||||||
"symbol": "emptyCircle",
|
|
||||||
"smooth": true
|
|
||||||
},
|
|
||||||
"radar": {
|
|
||||||
"itemStyle": {
|
|
||||||
"normal": {
|
|
||||||
"borderWidth": "3"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"lineStyle": {
|
|
||||||
"normal": {
|
|
||||||
"width": "4"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"symbolSize": "10",
|
|
||||||
"symbol": "emptyCircle",
|
|
||||||
"smooth": true
|
|
||||||
},
|
|
||||||
"bar": {
|
|
||||||
"itemStyle": {
|
|
||||||
"normal": {
|
|
||||||
"barBorderWidth": 0,
|
|
||||||
"barBorderColor": "#ccc"
|
|
||||||
},
|
|
||||||
"emphasis": {
|
|
||||||
"barBorderWidth": 0,
|
|
||||||
"barBorderColor": "#ccc"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"pie": {
|
|
||||||
"itemStyle": {
|
|
||||||
"normal": {
|
|
||||||
"borderWidth": 0,
|
|
||||||
"borderColor": "#ccc"
|
|
||||||
},
|
|
||||||
"emphasis": {
|
|
||||||
"borderWidth": 0,
|
|
||||||
"borderColor": "#ccc"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"scatter": {
|
|
||||||
"itemStyle": {
|
|
||||||
"normal": {
|
|
||||||
"borderWidth": 0,
|
|
||||||
"borderColor": "#ccc"
|
|
||||||
},
|
|
||||||
"emphasis": {
|
|
||||||
"borderWidth": 0,
|
|
||||||
"borderColor": "#ccc"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"boxplot": {
|
|
||||||
"itemStyle": {
|
|
||||||
"normal": {
|
|
||||||
"borderWidth": 0,
|
|
||||||
"borderColor": "#ccc"
|
|
||||||
},
|
|
||||||
"emphasis": {
|
|
||||||
"borderWidth": 0,
|
|
||||||
"borderColor": "#ccc"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"parallel": {
|
|
||||||
"itemStyle": {
|
|
||||||
"normal": {
|
|
||||||
"borderWidth": 0,
|
|
||||||
"borderColor": "#ccc"
|
|
||||||
},
|
|
||||||
"emphasis": {
|
|
||||||
"borderWidth": 0,
|
|
||||||
"borderColor": "#ccc"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"sankey": {
|
|
||||||
"itemStyle": {
|
|
||||||
"normal": {
|
|
||||||
"borderWidth": 0,
|
|
||||||
"borderColor": "#ccc"
|
|
||||||
},
|
|
||||||
"emphasis": {
|
|
||||||
"borderWidth": 0,
|
|
||||||
"borderColor": "#ccc"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"funnel": {
|
|
||||||
"itemStyle": {
|
|
||||||
"normal": {
|
|
||||||
"borderWidth": 0,
|
|
||||||
"borderColor": "#ccc"
|
|
||||||
},
|
|
||||||
"emphasis": {
|
|
||||||
"borderWidth": 0,
|
|
||||||
"borderColor": "#ccc"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"gauge": {
|
|
||||||
"itemStyle": {
|
|
||||||
"normal": {
|
|
||||||
"borderWidth": 0,
|
|
||||||
"borderColor": "#ccc"
|
|
||||||
},
|
|
||||||
"emphasis": {
|
|
||||||
"borderWidth": 0,
|
|
||||||
"borderColor": "#ccc"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"candlestick": {
|
|
||||||
"itemStyle": {
|
|
||||||
"normal": {
|
|
||||||
"color": "#e6a0d2",
|
|
||||||
"color0": "transparent",
|
|
||||||
"borderColor": "#e6a0d2",
|
|
||||||
"borderColor0": "#3fb1e3",
|
|
||||||
"borderWidth": "2"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"graph": {
|
|
||||||
"itemStyle": {
|
|
||||||
"normal": {
|
|
||||||
"borderWidth": 0,
|
|
||||||
"borderColor": "#ccc"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"lineStyle": {
|
|
||||||
"normal": {
|
|
||||||
"width": "1",
|
|
||||||
"color": "#cccccc"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"symbolSize": "10",
|
|
||||||
"symbol": "emptyCircle",
|
|
||||||
"smooth": true,
|
|
||||||
"color": [
|
|
||||||
"#3fb1e3",
|
|
||||||
"#6be6c1",
|
|
||||||
"#626c91",
|
|
||||||
"#a0a7e6",
|
|
||||||
"#c4ebad",
|
|
||||||
"#96dee8"
|
|
||||||
],
|
|
||||||
"label": {
|
|
||||||
"normal": {
|
|
||||||
"textStyle": {
|
|
||||||
"color": "#ffffff"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"map": {
|
|
||||||
"itemStyle": {
|
|
||||||
"normal": {
|
|
||||||
"areaColor": "#eeeeee",
|
|
||||||
"borderColor": "#aaaaaa",
|
|
||||||
"borderWidth": 0.5
|
|
||||||
},
|
|
||||||
"emphasis": {
|
|
||||||
"areaColor": "rgba(63,177,227,0.25)",
|
|
||||||
"borderColor": "#3fb1e3",
|
|
||||||
"borderWidth": 1
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"label": {
|
|
||||||
"normal": {
|
|
||||||
"textStyle": {
|
|
||||||
"color": "#ffffff"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"emphasis": {
|
|
||||||
"textStyle": {
|
|
||||||
"color": "rgb(63,177,227)"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"geo": {
|
|
||||||
"itemStyle": {
|
|
||||||
"normal": {
|
|
||||||
"areaColor": "#eeeeee",
|
|
||||||
"borderColor": "#aaaaaa",
|
|
||||||
"borderWidth": 0.5
|
|
||||||
},
|
|
||||||
"emphasis": {
|
|
||||||
"areaColor": "rgba(63,177,227,0.25)",
|
|
||||||
"borderColor": "#3fb1e3",
|
|
||||||
"borderWidth": 1
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"label": {
|
|
||||||
"normal": {
|
|
||||||
"textStyle": {
|
|
||||||
"color": "#ffffff"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"emphasis": {
|
|
||||||
"textStyle": {
|
|
||||||
"color": "rgb(63,177,227)"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"categoryAxis": {
|
|
||||||
"axisLine": {
|
|
||||||
"show": true,
|
|
||||||
"lineStyle": {
|
|
||||||
"color": "#cccccc"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"axisTick": {
|
|
||||||
"show": false,
|
|
||||||
"lineStyle": {
|
|
||||||
"color": "#333"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"axisLabel": {
|
|
||||||
"show": true,
|
|
||||||
"textStyle": {
|
|
||||||
"color": "#999999"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"splitLine": {
|
|
||||||
"show": true,
|
|
||||||
"lineStyle": {
|
|
||||||
"color": [
|
|
||||||
"#eeeeee"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"splitArea": {
|
|
||||||
"show": false,
|
|
||||||
"areaStyle": {
|
|
||||||
"color": [
|
|
||||||
"rgba(250,250,250,0.05)",
|
|
||||||
"rgba(200,200,200,0.02)"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"valueAxis": {
|
|
||||||
"axisLine": {
|
|
||||||
"show": true,
|
|
||||||
"lineStyle": {
|
|
||||||
"color": "#cccccc"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"axisTick": {
|
|
||||||
"show": false,
|
|
||||||
"lineStyle": {
|
|
||||||
"color": "#333"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"axisLabel": {
|
|
||||||
"show": true,
|
|
||||||
"textStyle": {
|
|
||||||
"color": "#999999"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"splitLine": {
|
|
||||||
"show": true,
|
|
||||||
"lineStyle": {
|
|
||||||
"color": [
|
|
||||||
"#eeeeee"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"splitArea": {
|
|
||||||
"show": false,
|
|
||||||
"areaStyle": {
|
|
||||||
"color": [
|
|
||||||
"rgba(250,250,250,0.05)",
|
|
||||||
"rgba(200,200,200,0.02)"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"logAxis": {
|
|
||||||
"axisLine": {
|
|
||||||
"show": true,
|
|
||||||
"lineStyle": {
|
|
||||||
"color": "#cccccc"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"axisTick": {
|
|
||||||
"show": false,
|
|
||||||
"lineStyle": {
|
|
||||||
"color": "#333"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"axisLabel": {
|
|
||||||
"show": true,
|
|
||||||
"textStyle": {
|
|
||||||
"color": "#999999"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"splitLine": {
|
|
||||||
"show": true,
|
|
||||||
"lineStyle": {
|
|
||||||
"color": [
|
|
||||||
"#eeeeee"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"splitArea": {
|
|
||||||
"show": false,
|
|
||||||
"areaStyle": {
|
|
||||||
"color": [
|
|
||||||
"rgba(250,250,250,0.05)",
|
|
||||||
"rgba(200,200,200,0.02)"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"timeAxis": {
|
|
||||||
"axisLine": {
|
|
||||||
"show": true,
|
|
||||||
"lineStyle": {
|
|
||||||
"color": "#cccccc"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"axisTick": {
|
|
||||||
"show": false,
|
|
||||||
"lineStyle": {
|
|
||||||
"color": "#333"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"axisLabel": {
|
|
||||||
"show": true,
|
|
||||||
"textStyle": {
|
|
||||||
"color": "#999999"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"splitLine": {
|
|
||||||
"show": true,
|
|
||||||
"lineStyle": {
|
|
||||||
"color": [
|
|
||||||
"#eeeeee"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"splitArea": {
|
|
||||||
"show": false,
|
|
||||||
"areaStyle": {
|
|
||||||
"color": [
|
|
||||||
"rgba(250,250,250,0.05)",
|
|
||||||
"rgba(200,200,200,0.02)"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"toolbox": {
|
|
||||||
"iconStyle": {
|
|
||||||
"normal": {
|
|
||||||
"borderColor": "#999999"
|
|
||||||
},
|
|
||||||
"emphasis": {
|
|
||||||
"borderColor": "#666666"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"legend": {
|
|
||||||
"textStyle": {
|
|
||||||
"color": "#999999"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"tooltip": {
|
|
||||||
"axisPointer": {
|
|
||||||
"lineStyle": {
|
|
||||||
"color": "#cccccc",
|
|
||||||
"width": 1
|
|
||||||
},
|
|
||||||
"crossStyle": {
|
|
||||||
"color": "#cccccc",
|
|
||||||
"width": 1
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"timeline": {
|
|
||||||
"lineStyle": {
|
|
||||||
"color": "#626c91",
|
|
||||||
"width": 1
|
|
||||||
},
|
|
||||||
"itemStyle": {
|
|
||||||
"normal": {
|
|
||||||
"color": "#626c91",
|
|
||||||
"borderWidth": 1
|
|
||||||
},
|
|
||||||
"emphasis": {
|
|
||||||
"color": "#626c91"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"controlStyle": {
|
|
||||||
"normal": {
|
|
||||||
"color": "#626c91",
|
|
||||||
"borderColor": "#626c91",
|
|
||||||
"borderWidth": 0.5
|
|
||||||
},
|
|
||||||
"emphasis": {
|
|
||||||
"color": "#626c91",
|
|
||||||
"borderColor": "#626c91",
|
|
||||||
"borderWidth": 0.5
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"checkpointStyle": {
|
|
||||||
"color": "#3fb1e3",
|
|
||||||
"borderColor": "rgba(63,177,227,0.15)"
|
|
||||||
},
|
|
||||||
"label": {
|
|
||||||
"normal": {
|
|
||||||
"textStyle": {
|
|
||||||
"color": "#626c91"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"emphasis": {
|
|
||||||
"textStyle": {
|
|
||||||
"color": "#626c91"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"visualMap": {
|
|
||||||
"color": [
|
|
||||||
"#2a99c9",
|
|
||||||
"#afe8ff"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"dataZoom": {
|
|
||||||
"backgroundColor": "rgba(255,255,255,0)",
|
|
||||||
"dataBackgroundColor": "rgba(222,222,222,1)",
|
|
||||||
"fillerColor": "rgba(114,230,212,0.25)",
|
|
||||||
"handleColor": "#cccccc",
|
|
||||||
"handleSize": "100%",
|
|
||||||
"textStyle": {
|
|
||||||
"color": "#999999"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"markPoint": {
|
|
||||||
"label": {
|
|
||||||
"normal": {
|
|
||||||
"textStyle": {
|
|
||||||
"color": "#ffffff"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"emphasis": {
|
|
||||||
"textStyle": {
|
|
||||||
"color": "#ffffff"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
|
@ -93,5 +93,5 @@ layui.define(['jquery', 'element', 'carousel', 'laypage'], function (exports) {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
exports('company', {});
|
exports('spCompany', {});
|
||||||
});
|
});
|
|
@ -1,13 +1,11 @@
|
||||||
/**
|
/**
|
||||||
* date: 2019/12/24
|
* 组件:扩展layui弹出框
|
||||||
* author: SongPeng
|
|
||||||
* description: 扩展layui弹出框 框架扩展
|
|
||||||
*/
|
*/
|
||||||
layui.define(['layer'], function (exports) {
|
layui.define(['layer'], function (exports) {
|
||||||
var $ = layui.jquery,
|
var $ = layui.jquery,
|
||||||
layer = layui.layer;
|
layer = layui.layer;
|
||||||
|
|
||||||
var splayer = {
|
var spLayer = {
|
||||||
// 渲染弹出框
|
// 渲染弹出框
|
||||||
open: function (param) {
|
open: function (param) {
|
||||||
// 默认配置
|
// 默认配置
|
||||||
|
@ -20,6 +18,12 @@ layui.define(['layer'], function (exports) {
|
||||||
//点击确认触发 iframe 内容中的按钮提交
|
//点击确认触发 iframe 内容中的按钮提交
|
||||||
var submit = layero.find('iframe').contents().find("#js-submit");
|
var submit = layero.find('iframe').contents().find("#js-submit");
|
||||||
submit.click();
|
submit.click();
|
||||||
|
|
||||||
|
// 如果是搜索弹窗面板,之下如下逻辑,以便调用页面可以通过回调函数获取数据
|
||||||
|
if (param.spCallback && (param.spCallback instanceof Function)) {
|
||||||
|
var callbackData = layero.find('iframe')[0].contentWindow.callbackData();
|
||||||
|
param.spCallback(callbackData);
|
||||||
|
}
|
||||||
},
|
},
|
||||||
btn2: function (index, layero) {
|
btn2: function (index, layero) {
|
||||||
//按钮【按钮二】的回调
|
//按钮【按钮二】的回调
|
||||||
|
@ -41,9 +45,10 @@ layui.define(['layer'], function (exports) {
|
||||||
content: param.content + '?' + spUtil.parseParam(param.spWhere)
|
content: param.content + '?' + spUtil.parseParam(param.spWhere)
|
||||||
});
|
});
|
||||||
|
|
||||||
layer.open(config);
|
return layer.open(config);
|
||||||
}
|
},
|
||||||
|
checkStatus: {}
|
||||||
};
|
};
|
||||||
|
|
||||||
exports('splayer', splayer);
|
exports('spLayer', spLayer);
|
||||||
});
|
});
|
|
@ -1,7 +1,5 @@
|
||||||
/**
|
/**
|
||||||
* date:2019/06/10
|
* 组件:后台管理页面
|
||||||
* author:Mr.Chung
|
|
||||||
* description:splayui 框架扩展
|
|
||||||
*/
|
*/
|
||||||
layui.define(["element", "jquery"], function (exports) {
|
layui.define(["element", "jquery"], function (exports) {
|
||||||
var element = layui.element,
|
var element = layui.element,
|
||||||
|
@ -13,7 +11,7 @@ layui.define(["element", "jquery"], function (exports) {
|
||||||
return layer.alert("请先将项目部署至web容器(Apache/Tomcat/Nginx/IIS/等),否则部分数据将无法显示");
|
return layer.alert("请先将项目部署至web容器(Apache/Tomcat/Nginx/IIS/等),否则部分数据将无法显示");
|
||||||
}
|
}
|
||||||
|
|
||||||
splayui = new function () {
|
spLayui = new function () {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 系统配置
|
* 系统配置
|
||||||
|
@ -42,20 +40,20 @@ layui.define(["element", "jquery"], function (exports) {
|
||||||
*/
|
*/
|
||||||
this.init = function (url) {
|
this.init = function (url) {
|
||||||
var loading = layer.load(0, {shade: false, time: 2 * 1000});
|
var loading = layer.load(0, {shade: false, time: 2 * 1000});
|
||||||
splayui.initBgColor();
|
spLayui.initBgColor();
|
||||||
splayui.initDevice();
|
spLayui.initDevice();
|
||||||
$.getJSON(url, function (data, status) {
|
$.getJSON(url, function (data, status) {
|
||||||
if (!data.data) {
|
if (!data.data) {
|
||||||
splayui.msg_error('暂无菜单信息');
|
spLayui.msg_error('暂无菜单信息');
|
||||||
} else {
|
} else {
|
||||||
splayui.initHome(data.data.homeInfo);
|
spLayui.initHome(data.data.homeInfo);
|
||||||
splayui.initLogo(data.data.logoInfo);
|
spLayui.initLogo(data.data.logoInfo);
|
||||||
splayui.initClear(data.data.clearInfo);
|
spLayui.initClear(data.data.clearInfo);
|
||||||
splayui.initMenu(data.data.menuInfo);
|
spLayui.initMenu(data.data.menuInfo);
|
||||||
splayui.initTab();
|
spLayui.initTab();
|
||||||
}
|
}
|
||||||
}).fail(function () {
|
}).fail(function () {
|
||||||
splayui.msg_error('菜单接口有误');
|
spLayui.msg_error('菜单接口有误');
|
||||||
});
|
});
|
||||||
layer.close(loading);
|
layer.close(loading);
|
||||||
};
|
};
|
||||||
|
@ -64,7 +62,7 @@ layui.define(["element", "jquery"], function (exports) {
|
||||||
* 初始化设备端
|
* 初始化设备端
|
||||||
*/
|
*/
|
||||||
this.initDevice = function () {
|
this.initDevice = function () {
|
||||||
if (splayui.checkMobile()) {
|
if (spLayui.checkMobile()) {
|
||||||
$('.splayui-tool i').attr('data-side-fold', 0);
|
$('.splayui-tool i').attr('data-side-fold', 0);
|
||||||
$('.splayui-tool i').attr('class', 'fa fa-indent');
|
$('.splayui-tool i').attr('class', 'fa fa-indent');
|
||||||
$('.layui-layout-body').attr('class', 'layui-layout-body splayui-admin');
|
$('.layui-layout-body').attr('class', 'layui-layout-body splayui-admin');
|
||||||
|
@ -108,9 +106,9 @@ layui.define(["element", "jquery"], function (exports) {
|
||||||
this.initBgColor = function () {
|
this.initBgColor = function () {
|
||||||
var bgcolorId = sessionStorage.getItem('splayuiBgcolorId');
|
var bgcolorId = sessionStorage.getItem('splayuiBgcolorId');
|
||||||
if (bgcolorId == null || bgcolorId == undefined || bgcolorId == '') {
|
if (bgcolorId == null || bgcolorId == undefined || bgcolorId == '') {
|
||||||
bgcolorId = splayui.config('BgColorDefault');
|
bgcolorId = spLayui.config('BgColorDefault');
|
||||||
}
|
}
|
||||||
var bgcolorData = splayui.bgColorConfig(bgcolorId);
|
var bgcolorData = spLayui.bgColorConfig(bgcolorId);
|
||||||
var styleHtml = '.layui-layout-admin .layui-header{background-color:' + bgcolorData.headerRight + '!important;}\n' +
|
var styleHtml = '.layui-layout-admin .layui-header{background-color:' + bgcolorData.headerRight + '!important;}\n' +
|
||||||
'.layui-header>ul>.layui-nav-item.layui-this,.splayui-tool i:hover{background-color:' + bgcolorData.headerRightThis + '!important;}\n' +
|
'.layui-header>ul>.layui-nav-item.layui-this,.splayui-tool i:hover{background-color:' + bgcolorData.headerRightThis + '!important;}\n' +
|
||||||
'.layui-layout-admin .layui-logo {background-color:' + bgcolorData.headerLogo + '!important;}\n' +
|
'.layui-layout-admin .layui-logo {background-color:' + bgcolorData.headerLogo + '!important;}\n' +
|
||||||
|
@ -186,13 +184,13 @@ layui.define(["element", "jquery"], function (exports) {
|
||||||
var href = urlArr.pop();
|
var href = urlArr.pop();
|
||||||
|
|
||||||
// 判断链接是否有效
|
// 判断链接是否有效
|
||||||
var checkUrl = splayui.checkUrl(href);
|
var checkUrl = spLayui.checkUrl(href);
|
||||||
if (checkUrl != true) {
|
if (checkUrl != true) {
|
||||||
return splayui.msg_error(checkUrl);
|
return spLayui.msg_error(checkUrl);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 判断tab是否存在
|
// 判断tab是否存在
|
||||||
var checkTab = splayui.checkTab(href);
|
var checkTab = spLayui.checkTab(href);
|
||||||
if (!checkTab) {
|
if (!checkTab) {
|
||||||
var title = href,
|
var title = href,
|
||||||
tabId = href;
|
tabId = href;
|
||||||
|
@ -200,7 +198,7 @@ layui.define(["element", "jquery"], function (exports) {
|
||||||
var checkHref = $(this).attr("data-tab");
|
var checkHref = $(this).attr("data-tab");
|
||||||
|
|
||||||
// 判断是否带参数了
|
// 判断是否带参数了
|
||||||
if (splayui.config('urlSuffixDefault')) {
|
if (spLayui.config('urlSuffixDefault')) {
|
||||||
if (href.indexOf("mpi=") > -1) {
|
if (href.indexOf("mpi=") > -1) {
|
||||||
var menuParameId = $(this).attr('data-tab-mpi');
|
var menuParameId = $(this).attr('data-tab-mpi');
|
||||||
if (checkHref.indexOf("?") > -1) {
|
if (checkHref.indexOf("?") > -1) {
|
||||||
|
@ -259,13 +257,13 @@ layui.define(["element", "jquery"], function (exports) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (splayuiHomeTab != href && splayuiHomeHref != href) {
|
if (splayuiHomeTab != href && splayuiHomeHref != href) {
|
||||||
splayui.addTab(tabId, href, title, true);
|
spLayui.addTab(tabId, href, title, true);
|
||||||
splayui.changeTab(tabId);
|
spLayui.changeTab(tabId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (splayui.config('urlHashLocation')) {
|
if (spLayui.config('urlHashLocation')) {
|
||||||
splayui.hashTab();
|
spLayui.hashTab();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -391,7 +389,7 @@ layui.define(["element", "jquery"], function (exports) {
|
||||||
if (bgcolorId == null || bgcolorId == undefined || bgcolorId == '') {
|
if (bgcolorId == null || bgcolorId == undefined || bgcolorId == '') {
|
||||||
bgcolorId = 0;
|
bgcolorId = 0;
|
||||||
}
|
}
|
||||||
var bgColorConfig = splayui.bgColorConfig();
|
var bgColorConfig = spLayui.bgColorConfig();
|
||||||
$.each(bgColorConfig, function (key, val) {
|
$.each(bgColorConfig, function (key, val) {
|
||||||
if (key == bgcolorId) {
|
if (key == bgcolorId) {
|
||||||
html += '<li class="layui-this" data-select-bgcolor="' + key + '">\n';
|
html += '<li class="layui-this" data-select-bgcolor="' + key + '">\n';
|
||||||
|
@ -522,7 +520,7 @@ layui.define(["element", "jquery"], function (exports) {
|
||||||
* @returns {boolean}
|
* @returns {boolean}
|
||||||
*/
|
*/
|
||||||
this.checkUrl = function (url) {
|
this.checkUrl = function (url) {
|
||||||
if (!splayui.config('checkUrlDefault')) {
|
if (!spLayui.config('checkUrlDefault')) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
var msg = true;
|
var msg = true;
|
||||||
|
@ -661,9 +659,9 @@ layui.define(["element", "jquery"], function (exports) {
|
||||||
$parent = $(this).parent();
|
$parent = $(this).parent();
|
||||||
tabId = $parent.attr('lay-id');
|
tabId = $parent.attr('lay-id');
|
||||||
if (tabId != undefined || tabId != null) {
|
if (tabId != undefined || tabId != null) {
|
||||||
splayui.delTab(tabId);
|
spLayui.delTab(tabId);
|
||||||
}
|
}
|
||||||
splayui.tabRoll();
|
spLayui.tabRoll();
|
||||||
layer.close(loading);
|
layer.close(loading);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -684,7 +682,7 @@ layui.define(["element", "jquery"], function (exports) {
|
||||||
title = title.replace('style="display: none;"', '');
|
title = title.replace('style="display: none;"', '');
|
||||||
|
|
||||||
// 拼接参数
|
// 拼接参数
|
||||||
if (splayui.config('urlSuffixDefault')) {
|
if (spLayui.config('urlSuffixDefault')) {
|
||||||
var menuParameId = $(this).attr('data-tab-mpi');
|
var menuParameId = $(this).attr('data-tab-mpi');
|
||||||
if (href.indexOf("?") > -1) {
|
if (href.indexOf("?") > -1) {
|
||||||
href = href + '&mpi=' + menuParameId;
|
href = href + '&mpi=' + menuParameId;
|
||||||
|
@ -696,22 +694,22 @@ layui.define(["element", "jquery"], function (exports) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// 判断链接是否有效
|
// 判断链接是否有效
|
||||||
var checkUrl = splayui.checkUrl(href);
|
var checkUrl = spLayui.checkUrl(href);
|
||||||
if (checkUrl != true) {
|
if (checkUrl != true) {
|
||||||
return splayui.msg_error(checkUrl);
|
return spLayui.msg_error(checkUrl);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (tabId == null || tabId == undefined) {
|
if (tabId == null || tabId == undefined) {
|
||||||
tabId = new Date().getTime();
|
tabId = new Date().getTime();
|
||||||
}
|
}
|
||||||
// 判断该窗口是否已经打开过
|
// 判断该窗口是否已经打开过
|
||||||
var checkTab = splayui.checkTab(tabId);
|
var checkTab = spLayui.checkTab(tabId);
|
||||||
if (!checkTab) {
|
if (!checkTab) {
|
||||||
splayui.addTab(tabId, href, title, true);
|
spLayui.addTab(tabId, href, title, true);
|
||||||
}
|
}
|
||||||
element.tabChange('splayuiTab', tabId);
|
element.tabChange('splayuiTab', tabId);
|
||||||
splayui.initDevice();
|
spLayui.initDevice();
|
||||||
splayui.tabRoll();
|
spLayui.tabRoll();
|
||||||
layer.close(loading);
|
layer.close(loading);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -735,7 +733,7 @@ layui.define(["element", "jquery"], function (exports) {
|
||||||
tabId = new Date().getTime();
|
tabId = new Date().getTime();
|
||||||
}
|
}
|
||||||
// 判断该窗口是否已经打开过
|
// 判断该窗口是否已经打开过
|
||||||
var checkTab = splayui.checkTab(tabId, true);
|
var checkTab = spLayui.checkTab(tabId, true);
|
||||||
if (!checkTab) {
|
if (!checkTab) {
|
||||||
var splayuiTabInfo = JSON.parse(sessionStorage.getItem("splayuiTabInfo"));
|
var splayuiTabInfo = JSON.parse(sessionStorage.getItem("splayuiTabInfo"));
|
||||||
if (splayuiTabInfo == null) {
|
if (splayuiTabInfo == null) {
|
||||||
|
@ -750,7 +748,7 @@ layui.define(["element", "jquery"], function (exports) {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
parent.layui.element.tabChange('splayuiTab', tabId);
|
parent.layui.element.tabChange('splayuiTab', tabId);
|
||||||
splayui.tabRoll();
|
spLayui.tabRoll();
|
||||||
parent.layer.close(loading);
|
parent.layer.close(loading);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -785,17 +783,17 @@ layui.define(["element", "jquery"], function (exports) {
|
||||||
$.getJSON(clearUrl, function (data, status) {
|
$.getJSON(clearUrl, function (data, status) {
|
||||||
layer.close(loading);
|
layer.close(loading);
|
||||||
if (data.code != 1) {
|
if (data.code != 1) {
|
||||||
return splayui.msg_error(data.msg);
|
return spLayui.msg_error(data.msg);
|
||||||
} else {
|
} else {
|
||||||
return splayui.msg_success(data.msg);
|
return spLayui.msg_success(data.msg);
|
||||||
}
|
}
|
||||||
}).fail(function () {
|
}).fail(function () {
|
||||||
layer.close(loading);
|
layer.close(loading);
|
||||||
return splayui.msg_error('清理缓存接口有误');
|
return spLayui.msg_error('清理缓存接口有误');
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
layer.close(loading);
|
layer.close(loading);
|
||||||
return splayui.msg_success('清除缓存成功');
|
return spLayui.msg_success('清除缓存成功');
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -804,7 +802,7 @@ layui.define(["element", "jquery"], function (exports) {
|
||||||
*/
|
*/
|
||||||
$('body').on('click', '[data-refresh]', function () {
|
$('body').on('click', '[data-refresh]', function () {
|
||||||
$(".layui-tab-item.layui-show").find("iframe")[0].contentWindow.location.reload();
|
$(".layui-tab-item.layui-show").find("iframe")[0].contentWindow.location.reload();
|
||||||
splayui.msg_success('刷新成功');
|
spLayui.msg_success('刷新成功');
|
||||||
});
|
});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -819,15 +817,15 @@ layui.define(["element", "jquery"], function (exports) {
|
||||||
if (id != 'splayuiHomeTabId') {
|
if (id != 'splayuiHomeTabId') {
|
||||||
var tabClass = $(this).attr('class');
|
var tabClass = $(this).attr('class');
|
||||||
if (closeType == 'all') {
|
if (closeType == 'all') {
|
||||||
splayui.delTab(tabId);
|
spLayui.delTab(tabId);
|
||||||
} else {
|
} else {
|
||||||
if (tabClass != 'layui-this') {
|
if (tabClass != 'layui-this') {
|
||||||
splayui.delTab(tabId);
|
spLayui.delTab(tabId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
splayui.tabRoll();
|
spLayui.tabRoll();
|
||||||
layer.close(loading);
|
layer.close(loading);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -846,7 +844,7 @@ layui.define(["element", "jquery"], function (exports) {
|
||||||
$('.splayui-tool i').attr('class', 'fa fa-outdent');
|
$('.splayui-tool i').attr('class', 'fa fa-outdent');
|
||||||
$('.layui-layout-body').attr('class', 'layui-layout-body splayui-all');
|
$('.layui-layout-body').attr('class', 'layui-layout-body splayui-all');
|
||||||
}
|
}
|
||||||
splayui.tabRoll();
|
spLayui.tabRoll();
|
||||||
element.init();
|
element.init();
|
||||||
layer.close(loading);
|
layer.close(loading);
|
||||||
});
|
});
|
||||||
|
@ -879,7 +877,7 @@ layui.define(["element", "jquery"], function (exports) {
|
||||||
$('body').on('click', '[data-bgcolor]', function () {
|
$('body').on('click', '[data-bgcolor]', function () {
|
||||||
var loading = layer.load(0, {shade: false, time: 2 * 1000});
|
var loading = layer.load(0, {shade: false, time: 2 * 1000});
|
||||||
var clientHeight = (document.documentElement.clientHeight) - 95;
|
var clientHeight = (document.documentElement.clientHeight) - 95;
|
||||||
var bgColorHtml = splayui.buildBgColorHtml();
|
var bgColorHtml = spLayui.buildBgColorHtml();
|
||||||
var html = '<div class="splayui-color">\n' +
|
var html = '<div class="splayui-color">\n' +
|
||||||
'<div class="color-title">\n' +
|
'<div class="color-title">\n' +
|
||||||
'<span>配色方案</span>\n' +
|
'<span>配色方案</span>\n' +
|
||||||
|
@ -914,8 +912,8 @@ layui.define(["element", "jquery"], function (exports) {
|
||||||
$('.splayui-color .color-content ul .layui-this').attr('class', '');
|
$('.splayui-color .color-content ul .layui-this').attr('class', '');
|
||||||
$(this).attr('class', 'layui-this');
|
$(this).attr('class', 'layui-this');
|
||||||
sessionStorage.setItem('splayuiBgcolorId', bgcolorId);
|
sessionStorage.setItem('splayuiBgcolorId', bgcolorId);
|
||||||
splayui.initBgColor();
|
spLayui.initBgColor();
|
||||||
});
|
});
|
||||||
|
|
||||||
exports("splayui", splayui);
|
exports("spLayui", spLayui);
|
||||||
});
|
})
|
|
@ -1,13 +1,11 @@
|
||||||
/**
|
/**
|
||||||
* date: 2019/12/24
|
* 组件:扩展layui数据表格
|
||||||
* author: SongPeng
|
|
||||||
* description: 扩展layui数据表格 框架扩展
|
|
||||||
*/
|
*/
|
||||||
layui.define(['table'], function (exports) {
|
layui.define(['table'], function (exports) {
|
||||||
var $ = layui.jquery,
|
var $ = layui.jquery,
|
||||||
table = layui.table;
|
table = layui.table;
|
||||||
|
|
||||||
var sptable = {
|
var spSearchPanel = {
|
||||||
// 渲染表格
|
// 渲染表格
|
||||||
render: function (param) {
|
render: function (param) {
|
||||||
var defaultConfig = {
|
var defaultConfig = {
|
||||||
|
@ -39,5 +37,5 @@ layui.define(['table'], function (exports) {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
exports('sptable', sptable);
|
exports('spSearchPanel', spSearchPanel);
|
||||||
});
|
});
|
|
@ -0,0 +1,41 @@
|
||||||
|
/**
|
||||||
|
* 组件:扩展layui数据表格
|
||||||
|
*/
|
||||||
|
layui.define(['table'], function (exports) {
|
||||||
|
var $ = layui.jquery,
|
||||||
|
table = layui.table;
|
||||||
|
|
||||||
|
var spTable = {
|
||||||
|
// 渲染表格
|
||||||
|
render: function (param) {
|
||||||
|
var defaultConfig = {
|
||||||
|
elem: '#js-record-table',
|
||||||
|
toolbar: '#js-record-table-toolbar-top',
|
||||||
|
method: 'POST',
|
||||||
|
limits: [10, 20, 50, 100],
|
||||||
|
limit: 10,
|
||||||
|
page: true,
|
||||||
|
height: 'full-' + ($('#js-search-form').height() + 40),
|
||||||
|
request: {
|
||||||
|
pageName: 'current'
|
||||||
|
, limitName: 'size'
|
||||||
|
},
|
||||||
|
parseData: function (res) {
|
||||||
|
return {
|
||||||
|
"code": res.code,
|
||||||
|
"msg": res.msg,
|
||||||
|
"count": res.data ? res.data.total : 0,
|
||||||
|
"data": res.data ? res.data.records : []
|
||||||
|
};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
var config = $.extend({}, defaultConfig, param, {
|
||||||
|
});
|
||||||
|
|
||||||
|
return table.render(config);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
exports('spTable', spTable);
|
||||||
|
});
|
File diff suppressed because one or more lines are too long
|
@ -89,12 +89,12 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<script>
|
<script>
|
||||||
layui.use(['element', 'layer', 'splayui'], function () {
|
layui.use(['element', 'layer', 'spLayui'], function () {
|
||||||
var element = layui.element,
|
var element = layui.element,
|
||||||
layer = layui.layer,
|
layer = layui.layer,
|
||||||
splayui = layui.splayui;
|
spLayui = layui.spLayui;
|
||||||
|
|
||||||
splayui.init('${request.contextPath}/admin/list/index/menu/tree');
|
spLayui.init('${request.contextPath}/admin/list/index/menu/tree');
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
|
|
|
@ -27,7 +27,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-inline">
|
<div class="layui-inline">
|
||||||
<a class="layui-btn" lay-submit lay-filter="js-search-filter"><i class="layui-icon layui-icon-search layuiadmin-button-btn"></i></a>
|
<a class="layui-btn" lay-submit lay-filter="js-search-filter"><i class="layui-icon layui-icon-search"></i></a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
@ -43,6 +43,7 @@
|
||||||
<button class="layui-btn layui-btn-danger layui-btn-sm" lay-event="deleteBatch"><i class="layui-icon"></i>批量删除</button>
|
<button class="layui-btn layui-btn-danger layui-btn-sm" lay-event="deleteBatch"><i class="layui-icon"></i>批量删除</button>
|
||||||
<@shiro.hasPermission name="user:add">
|
<@shiro.hasPermission name="user:add">
|
||||||
<button class="layui-btn layui-btn-sm" lay-event="add"><i class="layui-icon"></i>添加</button>
|
<button class="layui-btn layui-btn-sm" lay-event="add"><i class="layui-icon"></i>添加</button>
|
||||||
|
<button class="layui-btn layui-btn-sm" lay-event="spSearchPanel"><i class="layui-icon"></i>测试搜索弹框</button>
|
||||||
</@shiro.hasPermission>
|
</@shiro.hasPermission>
|
||||||
</div>
|
</div>
|
||||||
</script>
|
</script>
|
||||||
|
@ -55,14 +56,14 @@
|
||||||
|
|
||||||
<!--js逻辑-->
|
<!--js逻辑-->
|
||||||
<script>
|
<script>
|
||||||
layui.use(['form', 'table', 'splayer', 'sptable'], function () {
|
layui.use(['form', 'table', 'spLayer', 'spTable'], function () {
|
||||||
var form = layui.form,
|
var form = layui.form,
|
||||||
table = layui.table,
|
table = layui.table,
|
||||||
splayer = layui.splayer,
|
spLayer = layui.spLayer,
|
||||||
sptable = layui.sptable;
|
spTable = layui.spTable;
|
||||||
|
|
||||||
// 表格及数据初始化
|
// 表格及数据初始化
|
||||||
var tableIns = sptable.render({
|
var tableIns = spTable.render({
|
||||||
url: '${request.contextPath}/admin/sys/user/page',
|
url: '${request.contextPath}/admin/sys/user/page',
|
||||||
cols: [
|
cols: [
|
||||||
[{
|
[{
|
||||||
|
@ -160,13 +161,31 @@
|
||||||
|
|
||||||
// 添加
|
// 添加
|
||||||
if (obj.event === 'add') {
|
if (obj.event === 'add') {
|
||||||
var index = splayer.open({
|
var index = spLayer.open({
|
||||||
title: '添加',
|
title: '添加',
|
||||||
area: ['90%', '90%'],
|
area: ['90%', '90%'],
|
||||||
content: '${request.contextPath}/admin/sys/user/add-or-update-ui'
|
content: '${request.contextPath}/admin/sys/user/add-or-update-ui'
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 测试搜索弹框
|
||||||
|
if (obj.event === 'spSearchPanel') {
|
||||||
|
var index = spLayer.open({
|
||||||
|
type: 2,
|
||||||
|
area: ['680px', '500px'],
|
||||||
|
content: '${request.contextPath}/admin/common/ui/spSearchPanel4SysUser',
|
||||||
|
// 如果是搜索弹窗,需要添加回调函数来获取选中数据
|
||||||
|
spCallback: spSearchPanel4SysUserCallback
|
||||||
});
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 回调函数
|
||||||
|
*/
|
||||||
|
function spSearchPanel4SysUserCallback(result) {
|
||||||
|
console.log(result);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 监听行工具事件
|
* 监听行工具事件
|
||||||
|
@ -176,7 +195,7 @@
|
||||||
|
|
||||||
// 编辑
|
// 编辑
|
||||||
if (obj.event === 'edit') {
|
if (obj.event === 'edit') {
|
||||||
splayer.open({
|
spLayer.open({
|
||||||
title: '编辑',
|
title: '编辑',
|
||||||
area: ['90%', '90%'],
|
area: ['90%', '90%'],
|
||||||
// 请求url参数
|
// 请求url参数
|
||||||
|
|
|
@ -0,0 +1,103 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<title>搜索面板</title>
|
||||||
|
<meta name="renderer" content="webkit">
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
|
||||||
|
<#include "${request.contextPath}/common/common.ftl">
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<div class="splayui-container">
|
||||||
|
<div class="splayui-main">
|
||||||
|
<!--查询参数-->
|
||||||
|
<form id="js-search-form" class="layui-form" lay-filter="js-q-form-filter">
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<div class="layui-inline">
|
||||||
|
<label class="layui-form-label">姓名</label>
|
||||||
|
<div class="layui-input-inline" style="width: 120px;">
|
||||||
|
<input type="text" name="nameLike" autocomplete="off" class="layui-input">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="layui-inline">
|
||||||
|
<label class="layui-form-label">用户名</label>
|
||||||
|
<div class="layui-input-inline" style="width: 120px;">
|
||||||
|
<input type="text" name="usernameLike" autocomplete="off" class="layui-input">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="layui-inline">
|
||||||
|
<a class="layui-btn" lay-submit lay-filter="js-search-filter"><i class="layui-icon layui-icon-search"></i></a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
<!--表格-->
|
||||||
|
<table class="layui-hide" id="js-record-table" lay-filter="js-record-table-filter"></table>
|
||||||
|
|
||||||
|
<form class="layui-form splayui-form">
|
||||||
|
<div class="layui-row">
|
||||||
|
<div class="layui-form-item layui-hide">
|
||||||
|
<div class="layui-input-block">
|
||||||
|
<input id="js-id" name="id" value=""/>
|
||||||
|
<button id="js-submit" class="layui-btn" lay-submit lay-filter="js-submit-filter">确定</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<script>
|
||||||
|
var tableChecked;
|
||||||
|
layui.use(['form', 'util', 'table', 'spTable'], function () {
|
||||||
|
var form = layui.form,
|
||||||
|
util = layui.util,
|
||||||
|
table = layui.table,
|
||||||
|
spTable = layui.spTable;
|
||||||
|
|
||||||
|
// 表格及数据初始化
|
||||||
|
var tableIns = spTable.render({
|
||||||
|
toolbar: '',
|
||||||
|
url: '${request.contextPath}/admin/sys/user/page',
|
||||||
|
cols: [
|
||||||
|
[{
|
||||||
|
type: 'checkbox'
|
||||||
|
}, {
|
||||||
|
field: 'name', title: '姓名'
|
||||||
|
}, {
|
||||||
|
field: 'username', title: '用户名'
|
||||||
|
}]
|
||||||
|
],
|
||||||
|
done: function (res, curr, count) {
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 搜索按钮事件
|
||||||
|
*/
|
||||||
|
form.on('submit(js-search-filter)', function (data) {
|
||||||
|
tableIns.reload({
|
||||||
|
where: data.field,
|
||||||
|
page: {
|
||||||
|
// 重新从第 1 页开始
|
||||||
|
curr: 1
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// 阻止表单跳转。如果需要表单跳转,去掉这段即可。
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
|
||||||
|
// 监听提交
|
||||||
|
form.on('submit(js-submit-filter)', function (data) {
|
||||||
|
tableChecked = table.checkStatus('js-record-table');
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
function callbackData() {
|
||||||
|
return tableChecked;
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
Loading…
Reference in New Issue