优化代码

master
RuoYi 6 years ago committed by Limy
parent 7e20260e02
commit 4dc6070fb0

@ -40,7 +40,6 @@
<kaptcha.version>2.3.2</kaptcha.version>
<swagger.version>2.7.0</swagger.version>
<jsoup.version>1.11.3</jsoup.version>
<poi.version>3.17</poi.version>
</properties>
<dependencies>
@ -247,19 +246,6 @@
<version>${jsoup.version}</version>
</dependency>
<!-- POI-->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>${poi.version}</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>${poi.version}</version>
</dependency>
</dependencies>
<build>

@ -1,78 +0,0 @@
package com.ruoyi.common.utils;
import org.apache.poi.hssf.usermodel.HSSFDateUtil;
import org.apache.poi.ss.usermodel.Cell;
import java.text.DecimalFormat;
import java.util.Date;
/**
* Excel
*/
public class ExcelImportUtils {
/** 是否是2003的excel返回true是2003Excel文件**/
public static boolean isExcel2003(String filePath){
return filePath.matches("^.+\\.(?i)(xls)$");
}
/** 是否是2007以上的excel返回true是2007Excel文件**/
public static boolean isExcel2007(String filePath){
return filePath.matches("^.+\\.(?i)(xlsx)$");
}
/**
* EXCEL
*
* @param filePath
* @return
*/
public static boolean validateExcel(String filePath) {
if (filePath == null || !(isExcel2003(filePath) || isExcel2007(filePath))) {
return false;
}
return true;
}
/**
*
* @param cell
* @return
*/
public static String getCellValue(Cell cell) {
String value = "";
if (cell != null) {
switch(cell.getCellTypeEnum()){
case NUMERIC:// 数字
value = cell.getNumericCellValue()+ " ";
if(HSSFDateUtil.isCellDateFormatted(cell)){
Date date = cell.getDateCellValue();
if(date != null){
value = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD,date); // 日期格式化
}else{
value = "";
}
}else {
// 解析cell时候 数字类型默认是double类型的 但是想要获取整数类型 需要格式化
value = new DecimalFormat("0").format(cell.getNumericCellValue());
}
break;
case STRING: // 字符串
value = cell.getStringCellValue();
break;
case BOOLEAN: // Boolean类型
value = cell.getBooleanCellValue()+"";
break;
case BLANK: // 空值
value = "";
break;
case ERROR: // 错误类型
value ="非法字符";
break;
default:
value = "未知类型";
break;
}
}
return value.trim();
}
}

@ -40,7 +40,7 @@ public class JobController extends BaseController
}
@RequiresPermissions("monitor:job:list")
@GetMapping("/list")
@PostMapping("/list")
@ResponseBody
public TableDataInfo list(Job job)
{

@ -39,7 +39,7 @@ public class JobLogController extends BaseController
}
@RequiresPermissions("monitor:job:list")
@GetMapping("/list")
@PostMapping("/list")
@ResponseBody
public TableDataInfo list(JobLog jobLog)
{

@ -38,7 +38,7 @@ public class LogininforController extends BaseController
}
@RequiresPermissions("monitor:logininfor:list")
@GetMapping("/list")
@PostMapping("/list")
@ResponseBody
public TableDataInfo list(Logininfor logininfor)
{

@ -44,7 +44,7 @@ public class UserOnlineController extends BaseController
}
@RequiresPermissions("monitor:online:list")
@GetMapping("/list")
@PostMapping("/list")
@ResponseBody
public TableDataInfo list(UserOnline userOnline)
{

@ -39,7 +39,7 @@ public class OperlogController extends BaseController
}
@RequiresPermissions("monitor:operlog:list")
@GetMapping("/list")
@PostMapping("/list")
@ResponseBody
public TableDataInfo list(OperLog operLog)
{

@ -43,7 +43,7 @@ public class ConfigController extends BaseController
*
*/
@RequiresPermissions("system:config:list")
@GetMapping("/list")
@PostMapping("/list")
@ResponseBody
public TableDataInfo list(Config config)
{

@ -39,7 +39,7 @@ public class DictDataController extends BaseController
return prefix + "/data";
}
@GetMapping("/list")
@PostMapping("/list")
@RequiresPermissions("system:dict:list")
@ResponseBody
public TableDataInfo list(DictData dictData)

@ -39,7 +39,7 @@ public class DictTypeController extends BaseController
return prefix + "/type";
}
@GetMapping("/list")
@PostMapping("/list")
@RequiresPermissions("system:dict:list")
@ResponseBody
public TableDataInfo list(DictType dictType)

@ -40,7 +40,7 @@ public class PostController extends BaseController
}
@RequiresPermissions("system:post:list")
@GetMapping("/list")
@PostMapping("/list")
@ResponseBody
public TableDataInfo list(Post post)
{

@ -1,6 +1,5 @@
package com.ruoyi.project.system.user.controller;
import com.ruoyi.common.exception.user.UserException;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.framework.aspectj.lang.annotation.Log;
import com.ruoyi.framework.web.controller.BaseController;
@ -14,15 +13,11 @@ import com.ruoyi.project.system.user.domain.User;
import com.ruoyi.project.system.user.domain.UserStatus;
import com.ruoyi.project.system.user.service.IUserService;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;
/**
@ -34,7 +29,6 @@ import java.util.List;
@RequestMapping("/system/user")
public class UserController extends BaseController
{
private static final Logger log = LoggerFactory.getLogger(UserController.class);
private String prefix = "system/user";
@Autowired
@ -54,7 +48,7 @@ public class UserController extends BaseController
}
@RequiresPermissions("system:user:list")
@GetMapping("/list")
@PostMapping("/list")
@ResponseBody
public TableDataInfo list(User user)
{
@ -171,28 +165,6 @@ public class UserController extends BaseController
return userService.saveUser(user) > 0 ? Message.success() : Message.error();
}
/**
*
*/
@RequiresPermissions("system:user:batchAdd")
@Log(title = "系统管理", action = "用户管理-批量新增用户")
@PostMapping("/batchAdd")
@Transactional(rollbackFor = Exception.class)
@ResponseBody
public Message batchAdd( @RequestParam("uploadfile") MultipartFile file)
{
try {
if(!file.isEmpty()){
int rows=userService.batchImportUsers(file);
return Message.success(String.valueOf(rows));
}
return Message.error();
}catch (UserException e){
log.error("批量添加用户失败 !---{}", e.getMessage());
return Message.error(e.getMessage());
}
}
/**
*
*/

@ -1,8 +1,6 @@
package com.ruoyi.project.system.user.service;
import com.ruoyi.project.system.user.domain.User;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;
/**
@ -101,7 +99,6 @@ public interface IUserService
*/
public String checkLoginNameUnique(String loginName);
/**
*
*
@ -110,7 +107,6 @@ public interface IUserService
*/
public String checkPhoneUnique(User user);
/**
* email
*
@ -134,12 +130,4 @@ public interface IUserService
* @return
*/
public String selectUserPostGroup(Long userId);
/**
* Excel
* @param myFile
* @return
*/
public int batchImportUsers(MultipartFile myFile);
}

@ -1,13 +1,9 @@
package com.ruoyi.project.system.user.service;
import com.ruoyi.common.constant.UserConstants;
import com.ruoyi.common.exception.user.UserException;
import com.ruoyi.common.utils.ExcelImportUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.security.ShiroUtils;
import com.ruoyi.framework.shiro.service.PasswordService;
import com.ruoyi.project.system.dept.domain.Dept;
import com.ruoyi.project.system.dept.service.IDeptService;
import com.ruoyi.project.system.post.domain.Post;
import com.ruoyi.project.system.post.mapper.PostMapper;
import com.ruoyi.project.system.role.domain.Role;
@ -18,18 +14,8 @@ import com.ruoyi.project.system.user.domain.UserRole;
import com.ruoyi.project.system.user.mapper.UserMapper;
import com.ruoyi.project.system.user.mapper.UserPostMapper;
import com.ruoyi.project.system.user.mapper.UserRoleMapper;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.util.*;
/**
@ -40,7 +26,6 @@ import java.util.*;
@Service("userService")
public class UserServiceImpl implements IUserService
{
private static final Logger log = LoggerFactory.getLogger(UserServiceImpl.class);
@Autowired
private UserMapper userMapper;
@ -59,10 +44,6 @@ public class UserServiceImpl implements IUserService
@Autowired
private PasswordService passwordService;
@Autowired
private IDeptService deptService;
/**
*
*
@ -195,248 +176,6 @@ public class UserServiceImpl implements IUserService
return count;
}
/**
* Execl
* 1. 使HSSFWorkbook Excel
* 2. HSSFWorkbooksheet
* 3. sheetCell
* 4. Cell
* @param myFile
* @return
*/
@Override
public int batchImportUsers(MultipartFile myFile) {
//Excel工作簿
Workbook workbook=null;
//获取文件名
String filename=myFile.getOriginalFilename();
log.info("【ExeclfileName】={}",filename);
if(StringUtils.isNotEmpty(filename)){
//根据文件名判断文件是2003版本还是2007版本
if(ExcelImportUtils.isExcel2003(filename)){
try {
workbook=new HSSFWorkbook(myFile.getInputStream());//2003版本
}catch (IOException e){
throw new UserException("user.import.excel.fileinput.error",null);
}
}else if(ExcelImportUtils.isExcel2007(filename)){
try {
workbook=new XSSFWorkbook(myFile.getInputStream());//2007以上版本
}catch (IOException e){
throw new UserException("user.import.excel.fileinputx.error",null);
}
}else{
throw new UserException("user.import.excel.filetype.error",null);
}
}else {
throw new UserException("user.import.excel.file.error",null);
}
//得到第一个sheet
Sheet sheet = workbook.getSheetAt(0);
//得到Excel的行数
int totalRows = sheet.getLastRowNum();
log.info("【rows】{}",totalRows);
//新建用户list
List<User> users=new ArrayList<User>();
List<Dept> depts=new ArrayList<Dept>();
List<Role> roles=new ArrayList<Role>();
List<Post> posts=new ArrayList<Post>();
//如果行数为空
/**
* getPhysicalNumberOfRows
*
* nmn-m
*/
if((totalRows==0)&&(sheet.getPhysicalNumberOfRows()==0)){
throw new UserException("user.import.excel.null",null);
}else if((totalRows==0)&&(sheet.getPhysicalNumberOfRows()==1)){
throw new UserException("user.import.excel.data.null",null);
} else{
//获取全部部门信息
depts=deptService.selectDeptAll();
//获取全部角色信息
roles=roleMapper.selectRolesAll();
//获取全部岗位信息
posts=postMapper.selectPostAll();
}
for(int i=1;i<=totalRows;i++){
Row row = sheet.getRow(i);
if(row!=null){
User user=new User();
//登录名(用户名)
String userName=ExcelImportUtils.getCellValue(row.getCell(0));
if(userName.isEmpty()){
continue;
}else{
//判断用户名是否唯一
if(checkLoginNameUnique(userName).equals(UserConstants.USER_NAME_UNIQUE)){
user.setLoginName(userName);
}else {
log.error("【rows】{}行用户名{}已经存在",i+1,userName);
continue;
}
}
//姓名
String userRealName=ExcelImportUtils.getCellValue(row.getCell(1));
user.setUserName(userRealName);
//性别
String userSex=ExcelImportUtils.getCellValue(row.getCell(2));
if(StringUtils.isNotEmpty(userSex)){
if(userSex.equals("男")){
user.setSex("0");
}else if(userSex.equals("女")){
user.setSex("1");
}else {
user.setSex("2");
}
}
//密码
String passWord=ExcelImportUtils.getCellValue(row.getCell(3));
if(passWord.isEmpty()){
continue;
}else{
user.randomSalt();
user.setPassword(passwordService.encryptPassword(userName, passWord, user.getSalt()));
}
//部门
String dept=ExcelImportUtils.getCellValue(row.getCell(4));
if(StringUtils.isNotEmpty(dept)){
for (int k=0;k<depts.size();k++){
if(dept.equals(depts.get(k).getDeptName())){
user.setDeptId(depts.get(k).getDeptId());
break;
}
}
}
user.setCreateBy(ShiroUtils.getLoginName());
//角色--多个角色以","分割
String userRolesExcel=ExcelImportUtils.getCellValue(row.getCell(5));
if(StringUtils.isNotEmpty(userRolesExcel)){
//Set可以去掉重复的值
Set<Long> sets=new HashSet<Long>();
//判断是否有英文的"," 号
if(userRolesExcel.contains(",")){
List<String> results= Arrays.asList(userRolesExcel.split(","));
for(String s:results){
for(int l=0;l<roles.size();l++){
if(s.equals(roles.get(l).getRoleName())){
sets.add(roles.get(l).getRoleId());
break;
}
}
}
}else {
for(int j=0;j<roles.size();j++){
if(userRolesExcel.equals(roles.get(j).getRoleName())){
sets.add(roles.get(j).getRoleId());
break;
}
}
}
for(Long longTes:sets){
log.info("用户名={},角色ID={}",userName,longTes);
}
user.setRoleIds(sets.toArray(new Long[sets.size()]));
}
//岗位--多个岗位以","分割
String userPostExcel=ExcelImportUtils.getCellValue(row.getCell(6));
if(StringUtils.isNotEmpty(userPostExcel)){
//去掉重复的值,
Set<Long> setPosts=new HashSet<Long>();
//判断是否有英文的"," 号
if(userPostExcel.contains(",")){
List<String> resultsp= Arrays.asList(userPostExcel.split(","));
for(String p:resultsp){
for(int h=0;h<posts.size();h++){
if(p.equals(posts.get(h).getPostName())){
setPosts.add(posts.get(h).getPostId());
break;
}
}
}
}else {
for(int m=0;m<posts.size();m++){
if(userPostExcel.equals(posts.get(m).getPostName())){
setPosts.add(posts.get(m).getPostId());
break;
}
}
}
for(Long longTest:setPosts){
log.info("用户名={},岗位ID={}",userName,longTest);
}
user.setPostIds(setPosts.toArray(new Long[setPosts.size()]));
}
//手机号
String phoneNumber=ExcelImportUtils.getCellValue(row.getCell(7));
if(StringUtils.isNotEmpty(phoneNumber)){
//验证是否是手机号
if(phoneNumber.matches(UserConstants.MOBILE_PHONE_NUMBER_PATTERN)){
user.setPhonenumber(phoneNumber);
}
}
//邮箱
String userEmail=ExcelImportUtils.getCellValue(row.getCell(8));
if(StringUtils.isNotEmpty(userEmail)){
//验证是否是邮箱
if(userEmail.matches(UserConstants.EMAIL_PATTERN)){
user.setEmail(userEmail);
}
}
users.add(user);
}
}
//实际添加行数
int realRow=0;
//如果添加的列表不为空
if(users.size()>0){
//批量插入用户
realRow=userMapper.batchAddUser(users);
}
log.info("成功导入用户共{}个",realRow);
if(realRow>0){
//用户和角色关联
List<UserRole> userRoles=new ArrayList<UserRole>();
//用户和岗位关联
List<UserPost> userPosts=new ArrayList<UserPost>();
for(User test:users){
//添加用户-角色关联表
for(int q=0;q<test.getRoleIds().length;q++){
UserRole userRole=new UserRole();
userRole.setUserId(test.getUserId());
userRole.setRoleId(test.getRoleIds()[q]);
userRoles.add(userRole);
}
for(int r=0;r<test.getPostIds().length;r++){
UserPost userPost=new UserPost();
userPost.setUserId(test.getUserId());
userPost.setPostId(test.getPostIds()[r]);
userPosts.add(userPost);
}
}
//批量添加用户-角色关联数据
userRoleMapper.batchUserRole(userRoles);
log.info("成功导入用户-角色关联数据");
//批量添加用户-岗位关联数据
userPostMapper.batchUserPost(userPosts);
log.info("成功导入用户-岗位关联数据");
}
return realRow;
}
/**
*
*

@ -9,6 +9,7 @@ import org.springframework.beans.factory.annotation.Autowired;
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.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.alibaba.fastjson.JSON;
@ -40,7 +41,7 @@ public class GenController extends BaseController
}
@RequiresPermissions("tool:gen:list")
@GetMapping("/list")
@PostMapping("/list")
@ResponseBody
public TableDataInfo list(TableInfo tableInfo)
{

@ -20,14 +20,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select id="selectRoleList" parameterType="Role" resultMap="RoleResult">
select role_id, role_name, role_key, role_sort, status, create_time, remark from sys_role
<where>
<if test="roleName != null and roleName != ''">
AND role_name like concat('%', #{roleName}, '%')
</if>
<if test="roleKey != null and roleKey != ''">
AND role_key like concat('%', #{roleKey}, '%')
</if>
<if test="status != null and status != ''">
AND status = #{status}
<if test="searchValue != null and searchValue != ''">
AND role_key like concat('%', #{searchValue}, '%') OR role_name like concat('%', #{searchValue}, '%')
</if>
</where>
</select>

@ -76,7 +76,7 @@ $(function(){
// 初始bootstrap table数据
$.initTable = function (_columns, _url) {
$('.bootstrap-table').bootstrapTable({
method: 'get', // 请求方式(*
method: 'post', // 请求方式(*
dataType: "json", // 返回格式(*
url: _url, // 请求后台的URL*
pagination: true, // 是否显示分页(*
@ -93,6 +93,7 @@ $(function(){
showToggle: true, // 是否显示详细视图和列表视图的切换按钮
cache: false, // 是否使用缓存
showExport: true, // 是否支持导出文件
contentType: "application/x-www-form-urlencoded", // 编码类型
queryParams: function(params) {
return {
// 传递参数查询参数
@ -109,7 +110,7 @@ $(function(){
// 初始bootstrap table 自定义参数
$.initTableParams = function (_columns, _url, _queryParams) {
$('.bootstrap-table').bootstrapTable({
method: 'get', // 请求方式(*
method: 'post', // 请求方式(*
dataType: "json", // 返回格式(*
url: _url, // 请求后台的URL*
pagination: true, // 是否显示分页(*
@ -126,6 +127,7 @@ $(function(){
showToggle: true, // 是否显示详细视图和列表视图的切换按钮
cache: false, // 是否使用缓存
showExport: true, // 是否支持导出文件
contentType: "application/x-www-form-urlencoded", // 编码类型
queryParams: _queryParams,
columns: _columns
});

@ -1,10 +1,7 @@
var prefix = ctx + "system/role"
$(function() {
var options = {
url: prefix + "/list",
queryParams: queryParams,
columns: [{
var columns = [{
checkbox: true
},
{
@ -48,9 +45,9 @@ $(function() {
actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="#" onclick="remove(\'' + row.roleId + '\')"><i class="fa fa-remove"></i>删除</a>');
return actions.join('');
}
}]
};
$.table.init(options);
}];
var url = prefix + "/list";
$.initTable(columns, url);
});
/*角色管理-搜索*/

@ -5,37 +5,37 @@
<meta name="keywords" content="">
<meta name="description" content="">
<link rel="shortcut icon" href="favicon.ico">
<link href="../static/css/bootstrap.min.css" th:href="@{/css/bootstrap.min.css}" rel="stylesheet"/>
<link href="../static/css/font-awesome.css" th:href="@{/css/font-awesome.css}" rel="stylesheet"/>
<link th:href="@{/css/bootstrap.min.css}" rel="stylesheet"/>
<link th:href="@{/css/font-awesome.css}" rel="stylesheet"/>
<!-- bootstrap-table 表格插件样式 -->
<link href="../static/ajax/libs/bootstrap-table/bootstrap-table.min.css" th:href="@{/ajax/libs/bootstrap-table/bootstrap-table.min.css}" rel="stylesheet"/>
<link href="../static/ajax/libs/jqTreeGrid/jquery.treegrid.css" th:href="@{/ajax/libs/jqTreeGrid/jquery.treegrid.css}" rel="stylesheet"/>
<link href="../static/css/animate.css" th:href="@{/css/animate.css}" rel="stylesheet"/>
<link href="../static/css/style.css" th:href="@{/css/style.css}" rel="stylesheet"/>
<link href="../static/css/checkbox.css" th:href="@{/css/checkbox.css}" rel="stylesheet"/>
<link th:href="@{/ajax/libs/bootstrap-table/bootstrap-table.min.css}" rel="stylesheet"/>
<link th:href="@{/ajax/libs/jqTreeGrid/jquery.treegrid.css}" rel="stylesheet"/>
<link th:href="@{/css/animate.css}" rel="stylesheet"/>
<link th:href="@{/css/style.css}" rel="stylesheet"/>
<link th:href="@{/css/checkbox.css}" rel="stylesheet"/>
</head>
<div th:fragment="footer">
<script src="../static/js/jquery.min.js" th:src="@{/js/jquery.min.js}"></script>
<script src="../static/js/bootstrap.min.js" th:src="@{/js/bootstrap.min.js}"></script>
<script th:src="@{/js/jquery.min.js}"></script>
<script th:src="@{/js/bootstrap.min.js}"></script>
<!-- bootstrap-table 表格插件 -->
<script src="../static/ajax/libs/bootstrap-table/bootstrap-table.min.js" th:src="@{/ajax/libs/bootstrap-table/bootstrap-table.min.js}"></script>
<script src="../static/ajax/libs/bootstrap-table/locale/bootstrap-table-zh-CN.min.js" th:src="@{/ajax/libs/bootstrap-table/locale/bootstrap-table-zh-CN.min.js}"></script>
<script src="../static/ajax/libs/bootstrap-table/extensions/mobile/bootstrap-table-mobile.min.js" th:src="@{/ajax/libs/bootstrap-table/extensions/mobile/bootstrap-table-mobile.min.js}"></script>
<script src="../static/ajax/libs/bootstrap-table/extensions/toolbar/bootstrap-table-toolbar.min.js" th:src="@{/ajax/libs/bootstrap-table/extensions/toolbar/bootstrap-table-toolbar.min.js}"></script>
<script th:src="@{/ajax/libs/bootstrap-table/bootstrap-table.min.js}"></script>
<script th:src="@{/ajax/libs/bootstrap-table/locale/bootstrap-table-zh-CN.min.js}"></script>
<script th:src="@{/ajax/libs/bootstrap-table/extensions/mobile/bootstrap-table-mobile.min.js}"></script>
<script th:src="@{/ajax/libs/bootstrap-table/extensions/toolbar/bootstrap-table-toolbar.min.js}"></script>
<!-- jquery-validate 表单验证插件 -->
<script src="../static/ajax/libs/validate/jquery.validate.min.js" th:src="@{/ajax/libs/validate/jquery.validate.min.js}"></script>
<script src="../static/ajax/libs/validate/messages_zh.min.js" th:src="@{/ajax/libs/validate/messages_zh.min.js}"></script>
<script src="../static/ajax/libs/validate/jquery.validate.extend.js" th:src="@{/ajax/libs/validate/jquery.validate.extend.js}"></script>
<script th:src="@{/ajax/libs/validate/jquery.validate.min.js}"></script>
<script th:src="@{/ajax/libs/validate/messages_zh.min.js}"></script>
<script th:src="@{/ajax/libs/validate/jquery.validate.extend.js}"></script>
<!-- jquery-validate 表单树插件 -->
<script src="../static/ajax/libs/jqTreeGrid/jquery.treegrid.min.js" th:src="@{/ajax/libs/jqTreeGrid/jquery.treegrid.min.js}"></script>
<script src="../static/ajax/libs/jqTreeGrid/jquery.treegrid.extension.js" th:src="@{/ajax/libs/jqTreeGrid/jquery.treegrid.extension.js}"></script>
<script th:src="@{/ajax/libs/jqTreeGrid/jquery.treegrid.min.js}"></script>
<script th:src="@{/ajax/libs/jqTreeGrid/jquery.treegrid.extension.js}"></script>
<!-- jquery-export 表格导出插件 -->
<script src="../static/ajax/libs/bootstrap-table/extensions/export/bootstrap-table-export.js" th:src="@{/ajax/libs/bootstrap-table/extensions/export/bootstrap-table-export.js}"></script>
<script src="../static/ajax/libs/bootstrap-table/extensions/export/tableExport.js" th:src="@{/ajax/libs/bootstrap-table/extensions/export/tableExport.js}"></script>
<script src="../static/ajax/libs/layer/layer.min.js" th:src="@{/ajax/libs/layer/layer.min.js}"></script>
<script src="../static/ruoyi/js/common.js?v=1.1.6" th:src="@{/ruoyi/js/common.js?v=1.1.6}"></script>
<script src="../static/ruoyi/js/ry-ui.js?v=1.1.6" th:src="@{/ruoyi/js/ry-ui.js?v=1.1.6}"></script>
<script th:inline="javascript"> var ctx = [[@{/}]]; </script>
<script th:src="@{/ajax/libs/bootstrap-table/extensions/export/bootstrap-table-export.js}"></script>
<script th:src="@{/ajax/libs/bootstrap-table/extensions/export/tableExport.js}"></script>
<script th:src="@{/ajax/libs/layer/layer.min.js}"></script>
<script th:src="@{/ruoyi/js/common.js?v=1.1.6}"></script>
<script th:src="@{/ruoyi/js/ry-ui.js?v=1.1.6}"></script>
<script src="http://tajs.qq.com/stats?sId=62048022"></script>
<script th:inline="javascript"> var ctx = [[@{/}]]; </script>
</div>

@ -10,11 +10,11 @@
<!--[if lt IE 9]>
<meta http-equiv="refresh" content="0;ie.html"/>
<![endif]-->
<link href="../static/favicon.ico" th:href="@{favicon.ico}" rel="stylesheet"/>
<link href="../static/css/bootstrap.min.css" th:href="@{/css/bootstrap.min.css}" rel="stylesheet"/>
<link href="../static/css/font-awesome.min.css" th:href="@{/css/font-awesome.css}" rel="stylesheet"/>
<link href="../static/css/animate.css" th:href="@{/css/animate.css}" rel="stylesheet"/>
<link href="../static/css/style.css" th:href="@{/css/style.css}" rel="stylesheet"/>
<link th:href="@{favicon.ico}" rel="stylesheet"/>
<link th:href="@{/css/bootstrap.min.css}" rel="stylesheet"/>
<link th:href="@{/css/font-awesome.css}" rel="stylesheet"/>
<link th:href="@{/css/animate.css}" rel="stylesheet"/>
<link th:href="@{/css/style.css}" rel="stylesheet"/>
<style type="text/css">
.nav > li:hover .dropdown-menu {display: block;}
</style>
@ -124,10 +124,10 @@
<!--右侧部分结束-->
</div>
<!-- 全局js -->
<script src="../static/js/jquery.min.js" th:src="@{/js/jquery.min.js}"></script>
<script src="../static/js/bootstrap.min.js" th:src="@{/js/bootstrap.min.js}"></script>
<script src="../static/js/plugins/metisMenu/jquery.metisMenu.js" th:src="@{/js/plugins/metisMenu/jquery.metisMenu.js}"></script>
<script src="../static/js/plugins/slimscroll/jquery.slimscroll.min.js" th:src="@{/js/plugins/slimscroll/jquery.slimscroll.min.js}"></script>
<script src="../static/ruoyi/index.js" th:src="@{/ruoyi/index.js}"></script>
<script th:src="@{/js/jquery.min.js}"></script>
<script th:src="@{/js/bootstrap.min.js}"></script>
<script th:src="@{/js/plugins/metisMenu/jquery.metisMenu.js}"></script>
<script th:src="@{/js/plugins/slimscroll/jquery.slimscroll.min.js}"></script>
<script th:src="@{/ruoyi/index.js}"></script>
</body>
</html>

@ -415,7 +415,7 @@
</div>
</div>
</div>
<script src="../static/js/jquery.min.js" th:src="@{/js/jquery.min.js}"></script>
<script src="../static/js/bootstrap.min.js" th:src="@{/js/bootstrap.min.js}"></script>
<script th:src="@{/js/jquery.min.js}"></script>
<script th:src="@{/js/bootstrap.min.js}"></script>
</body>
</html>

@ -59,7 +59,6 @@
</form>
</div>
<div th:include="include::footer"></div>
<script src="/ruoyi/monitor/job/add.js" th:src="@{/ruoyi/monitor/job/add.js}">
</script>
<script th:src="@{/ruoyi/monitor/job/add.js}"></script>
</body>
</html>

@ -60,7 +60,6 @@
</form>
</div>
<div th:include="include::footer"></div>
<script src="/ruoyi/monitor/job/edit.js" th:src="@{/ruoyi/monitor/job/edit.js}">
</script>
<script th:src="@{/ruoyi/monitor/job/edit.js}"></script>
</body>
</html>

@ -21,7 +21,7 @@
</table>
</div>
<div th:include="include :: footer"></div>
<script src="/ruoyi/monitor/job/job.js" th:src="@{/ruoyi/monitor/job/job.js}"></script>
<script th:src="@{/ruoyi/monitor/job/job.js}"></script>
<script th:inline="javascript">
var editFlag = [[${@permissionService.hasPermi('monitor:job:edit')}]];
var removeFlag = [[${@permissionService.hasPermi('monitor:job:remove')}]];

@ -15,7 +15,7 @@
</table>
</div>
<div th:include="include :: footer"></div>
<script src="/ruoyi/monitor/job/jobLog.js" th:src="@{/ruoyi/monitor/job/jobLog.js}"></script>
<script th:src="@{/ruoyi/monitor/job/jobLog.js}"></script>
<script th:inline="javascript">
var removeFlag = [[${@permissionService.hasPermi('monitor:job:remove')}]];
</script>

@ -15,6 +15,6 @@
</table>
</div>
<div th:include="include :: footer"></div>
<script src="/ruoyi/monitor/logininfor/logininfor.js" th:src="@{/ruoyi/monitor/logininfor/logininfor.js}"></script>
<script th:src="@{/ruoyi/monitor/logininfor/logininfor.js}"></script>
</body>
</html>

@ -16,7 +16,7 @@
</table>
</div>
<div th:include="include :: footer"></div>
<script src="/ruoyi/monitor/online/online.js" th:src="@{/ruoyi/monitor/online/online.js}"></script>
<script th:src="@{/ruoyi/monitor/online/online.js}"></script>
<script th:inline="javascript">
var forceFlag = [[${@permissionService.hasPermi('monitor:online:forceLogout')}]];
</script>

@ -16,7 +16,7 @@
</table>
</div>
<div th:include="include :: footer"></div>
<script src="/ruoyi/monitor/operlog/operlog.js" th:src="@{/ruoyi/monitor/operlog/operlog.js}"></script>
<script th:src="@{/ruoyi/monitor/operlog/operlog.js}"></script>
<script th:inline="javascript">
var detailFlag = [[${@permissionService.hasPermi('monitor:operlog:detail')}]];
</script>

@ -47,7 +47,6 @@
</form>
</div>
<div th:include="include::footer"></div>
<script src="/ruoyi/system/config/add.js" th:src="@{/ruoyi/system/config/add.js}">
</script>
<script th:src="@{/ruoyi/system/config/add.js}"></script>
</body>
</html>

@ -16,7 +16,7 @@
</table>
</div>
<div th:include="include :: footer"></div>
<script src="/ruoyi/system/config/config.js" th:src="@{/ruoyi/system/config/config.js}"></script>
<script th:src="@{/ruoyi/system/config/config.js}"></script>
<script th:inline="javascript">
var editFlag = [[${@permissionService.hasPermi('system:config:edit')}]];
var removeFlag = [[${@permissionService.hasPermi('system:config:remove')}]];

@ -48,7 +48,6 @@
</form>
</div>
<div th:include="include::footer"></div>
<script src="/ruoyi/system/config/edit.js" th:src="@{/ruoyi/system/config/edit.js}">
</script>
<script th:src="@{/ruoyi/system/config/edit.js}"></script>
</body>
</html>

@ -61,7 +61,6 @@
</form>
</div>
<div th:include="include::footer"></div>
<script src="/ruoyi/system/dept/add.js" th:src="@{/ruoyi/system/dept/add.js}">
</script>
<script th:src="@{/ruoyi/system/dept/add.js}"></script>
</body>
</html>

@ -16,7 +16,7 @@
</table>
</div>
<div th:include="include :: footer"></div>
<script src="/ruoyi/system/dept/dept.js" th:src="@{/ruoyi/system/dept/dept.js}"></script>
<script th:src="@{/ruoyi/system/dept/dept.js}"></script>
<script th:inline="javascript">
var addFlag = [[${@permissionService.hasPermi('system:dept:add')}]];
var editFlag = [[${@permissionService.hasPermi('system:dept:edit')}]];

@ -61,7 +61,6 @@
</form>
</div>
<div th:include="include::footer"></div>
<script src="/ruoyi/system/dept/edit.js" th:src="@{/ruoyi/system/dept/edit.js}">
</script>
<script th:src="@{/ruoyi/system/dept/edit.js}"></script>
</body>
</html>

@ -30,8 +30,8 @@ button{font-family: "SimSun","Helvetica Neue",Helvetica,Arial;}
<a class="layui-layer-btn1" th:onclick="'javascript:layer_close()'"><i class="fa fa-close"></i> 关闭</a>
</div>
<div th:include="include::footer"></div>
<script src="/ajax/libs/jquery-ztree/3.5/js/jquery.ztree.all-3.5.js" th:src="@{/ajax/libs/jquery-ztree/3.5/js/jquery.ztree.all-3.5.js}"></script>
<script src="/ruoyi/system/dept/tree.js" th:src="@{/ruoyi/system/dept/tree.js}"></script>
<script th:src="@{/ajax/libs/jquery-ztree/3.5/js/jquery.ztree.all-3.5.js}"></script>
<script th:src="@{/ruoyi/system/dept/tree.js}"></script>
<script th:inline="javascript">
var treeName = [[${treeName}]];
$("#treeName").val(treeName);

@ -69,6 +69,6 @@
</form>
</div>
<div th:include="include::footer"></div>
<script src="/ruoyi/system/dict/data/add.js" th:src="@{/ruoyi/system/dict/data/add.js}"></script>
<script th:src="@{/ruoyi/system/dict/data/add.js}"></script>
</body>
</html>

@ -20,7 +20,7 @@
</table>
</div>
<div th:include="include :: footer"></div>
<script src="/ruoyi/system/dict/data/data.js" th:src="@{/ruoyi/system/dict/data/data.js}"></script>
<script th:src="@{/ruoyi/system/dict/data/data.js}"></script>
<script th:inline="javascript">
var editFlag = [[${@permissionService.hasPermi('system:dict:edit')}]];
var removeFlag = [[${@permissionService.hasPermi('system:dict:remove')}]];

@ -70,6 +70,6 @@
</form>
</div>
<div th:include="include::footer"></div>
<script src="/ruoyi/system/dict/data/edit.js" th:src="@{/ruoyi/system/dict/data/edit.js}"></script>
<script th:src="@{/ruoyi/system/dict/data/edit.js}"></script>
</body>
</html>

@ -42,6 +42,6 @@
</form>
</div>
<div th:include="include::footer"></div>
<script src="/ruoyi/system/dict/type/add.js" th:src="@{/ruoyi/system/dict/type/add.js}"></script>
<script th:src="@{/ruoyi/system/dict/type/add.js}"></script>
</body>
</html>

@ -43,6 +43,6 @@
</form>
</div>
<div th:include="include::footer"></div>
<script src="/ruoyi/system/dict/type/edit.js" th:src="@{/ruoyi/system/dict/type/edit.js}"></script>
<script th:src="@{/ruoyi/system/dict/type/edit.js}"></script>
</body>
</html>

@ -19,7 +19,7 @@
</table>
</div>
<div th:include="include :: footer"></div>
<script src="/ruoyi/system/dict/type/type.js" th:src="@{/ruoyi/system/dict/type/type.js}"></script>
<script th:src="@{/ruoyi/system/dict/type/type.js}"></script>
<script th:inline="javascript">
var editFlag = [[${@permissionService.hasPermi('system:dict:edit')}]];
var listFlag = [[${@permissionService.hasPermi('system:dict:list')}]];

@ -74,8 +74,8 @@
</form>
</div>
<div th:include="include::footer"></div>
<script src="/ruoyi/system/menu/add.js" th:src="@{/ruoyi/system/menu/add.js}"></script>
<script src="/ajax/libs/iCheck/icheck.min.js" th:src="@{/ajax/libs/iCheck/icheck.min.js}"></script>
<script th:src="@{/ruoyi/system/menu/add.js}"></script>
<script th:src="@{/ajax/libs/iCheck/icheck.min.js}"></script>
<script>
$(document).ready(function(){$(".i-checks").iCheck({checkboxClass:"icheckbox_square-green",radioClass:"iradio_square-green",})});
</script>

@ -75,8 +75,8 @@
</form>
</div>
<div th:include="include::footer"></div>
<script src="/ruoyi/system/menu/edit.js" th:src="@{/ruoyi/system/menu/edit.js}"></script>
<script src="/ajax/libs/iCheck/icheck.min.js" th:src="@{/ajax/libs/iCheck/icheck.min.js}"></script>
<script th:src="@{/ruoyi/system/menu/edit.js}"></script>
<script th:src="@{/ajax/libs/iCheck/icheck.min.js}"></script>
<script>
$(document).ready(function(){$(".i-checks").iCheck({checkboxClass:"icheckbox_square-green",radioClass:"iradio_square-green",})});
</script>

@ -15,7 +15,7 @@
</table>
</div>
<div th:include="include :: footer"></div>
<script src="/ruoyi/system/menu/menu.js" th:src="@{/ruoyi/system/menu/menu.js}"></script>
<script th:src="@{/ruoyi/system/menu/menu.js}"></script>
<script th:inline="javascript">
var addFlag = [[${@permissionService.hasPermi('system:menu:add')}]];
var editFlag = [[${@permissionService.hasPermi('system:menu:edit')}]];

@ -30,8 +30,8 @@ button{font-family: "SimSun","Helvetica Neue",Helvetica,Arial;}
<a class="layui-layer-btn1" th:onclick="'javascript:layer_close()'"><i class="fa fa-close"></i> 关闭</a>
</div>
<div th:include="include::footer"></div>
<script src="/ajax/libs/jquery-ztree/3.5/js/jquery.ztree.all-3.5.js" th:src="@{/ajax/libs/jquery-ztree/3.5/js/jquery.ztree.all-3.5.js}"></script>
<script src="/ruoyi/system/menu/tree.js" th:src="@{/ruoyi/system/menu/tree.js}"></script>
<script th:src="@{/ajax/libs/jquery-ztree/3.5/js/jquery.ztree.all-3.5.js}"></script>
<script th:src="@{/ruoyi/system/menu/tree.js}"></script>
<script th:inline="javascript">
var treeName = [[${treeName}]];
$("#treeName").val(treeName);

@ -47,7 +47,6 @@
</form>
</div>
<div th:include="include::footer"></div>
<script src="/ruoyi/system/post/add.js" th:src="@{/ruoyi/system/post/add.js}">
</script>
<script th:src="@{/ruoyi/system/post/add.js}"></script>
</body>
</html>

@ -48,7 +48,6 @@
</form>
</div>
<div th:include="include::footer"></div>
<script src="/ruoyi/system/post/edit.js" th:src="@{/ruoyi/system/post/edit.js}">
</script>
<script th:src="@{/ruoyi/system/post/edit.js}"></script>
</body>
</html>

@ -57,8 +57,7 @@
</form>
</div>
<div th:include="include::footer"></div>
<script src="/ajax/libs/jquery-ztree/3.5/js/jquery.ztree.all-3.5.js" th:src="@{/ajax/libs/jquery-ztree/3.5/js/jquery.ztree.all-3.5.js}"></script>
<script src="/ruoyi/system/role/add.js" th:src="@{/ruoyi/system/role/add.js}">
</script>
<script th:src="@{/ajax/libs/jquery-ztree/3.5/js/jquery.ztree.all-3.5.js}"></script>
<script th:src="@{/ruoyi/system/role/add.js}"></script>
</body>
</html>

@ -58,8 +58,8 @@
</form>
</div>
<div th:include="include::footer"></div>
<script src="/ajax/libs/jquery-ztree/3.5/js/jquery.ztree.all-3.5.js" th:src="@{/ajax/libs/jquery-ztree/3.5/js/jquery.ztree.all-3.5.js}"></script>
<script src="/ruoyi/system/role/edit.js" th:src="@{/ruoyi/system/role/edit.js}">
<script th:src="@{/ajax/libs/jquery-ztree/3.5/js/jquery.ztree.all-3.5.js}"></script>
<script th:src="@{/ruoyi/system/role/edit.js}">
</script>
</body>
</html>

@ -3,71 +3,22 @@
xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
<meta charset="utf-8">
<head th:include="include :: header"></head>
<body class="white-bg">
<div class="row col-sm-12">
<div class="ibox float-e-margins">
<div class="ibox-title">
<h5>角色管理</h5>
<div class="ibox-tools">
<a href="javascript:add()" shiro:hasPermission="system:role:add">
<i class="fa fa-plus"></i>新增
</a>
<a href="javascript:batchRemove()" shiro:hasPermission="system:role:batchRemove">
<i class="fa fa-trash-o"></i>删除
</a>
<body class="gray-bg">
<div class="wrapper wrapper-content">
<div class="btn-group hidden-xs" id="toolbar" role="group">
<button class="btn btn-outline btn-default" onclick="javascript:add()" shiro:hasPermission="system:role:add">
<i class="fa fa-plus"></i> 新增
</button>
<button class="btn btn-outline btn-default" onclick="javascript:batchRemove()" shiro:hasPermission="system:role:batchRemove">
<i class="fa fa-trash-o"></i> 删除
</button>
</div>
</div>
<div class="ibox-content">
<div class="row">
<div class="col-xs-3">
<div class="input-group">
<div class="input-group-btn">
<button class="btn btn-white" type="button">角色名称</button>
</div>
<input type="text" class="form-control" id="roleName" placeholder="角色名称">
</div>
</div>
<div class="col-xs-3">
<div class="input-group">
<div class="input-group-btn">
<button class="btn btn-white" type="button">权限字符</button>
</div>
<input type="text" class="form-control" id="roleKey" placeholder="权限字符">
</div>
</div>
<div class="col-xs-3">
<div class="input-group">
<div class="input-group-btn">
<button class="btn btn-white" type="button">角色状态</button>
</div>
<select class="form-control input-s-sm inline" id="status" th:with="type=${@dictService.selectDictData('sys_normal_disable')}">
<option value="">请选择</option>
<option th:each="e : ${type}" th:text="${e['dictLabel']}" th:value="${e['dictValue']}"></option>
</select>
</div>
</div>
<div class="col-xs-3">
<div class="col-lg-12 col-sm-12">
<button type="button" class="btn btn-primary" onclick="search()" id=""><i class="fa fa-search"></i>&nbsp;搜索</button>
</div>
</div>
</div>
<div class="table-responsive">
<table class="bootstrap-table" data-mobile-responsive="true"
data-sort-name="role_sort" data-sort-order="asc">
</table>
</div>
</div>
</div>
</div>
<div th:include="include :: footer"></div>
<script src="../static/ruoyi/js/ry-table.js?v=1.1.6" th:src="@{/ruoyi/js/ry-table.js?v=1.1.6}"></script>
<script src="/ruoyi/system/role/role.js" th:src="@{/ruoyi/system/role/role.js}"></script>
<script th:src="@{/ruoyi/system/role/role.js}"></script>
<script th:inline="javascript">
var editFlag = [[${@permissionService.hasPermi('system:role:edit')}]];
var removeFlag = [[${@permissionService.hasPermi('system:role:remove')}]];

@ -92,10 +92,9 @@
</form>
</div>
<div th:include="include::footer"></div>
<script src="/ruoyi/system/user/add.js" th:src="@{/ruoyi/system/user/add.js}">
</script>
<script src="/ajax/libs/iCheck/icheck.min.js" th:src="@{/ajax/libs/iCheck/icheck.min.js}"></script>
<script src="/ajax/libs/select/select2.js" th:src="@{/ajax/libs/select/select2.js}"></script>
<script th:src="@{/ruoyi/system/user/add.js}"></script>
<script th:src="@{/ajax/libs/iCheck/icheck.min.js}"></script>
<script th:src="@{/ajax/libs/select/select2.js}"></script>
<script>
$(document).ready(function(){$(".i-checks").iCheck({checkboxClass:"icheckbox_square-green",radioClass:"iradio_square-green",})});
</script>

@ -87,10 +87,9 @@
</form>
</div>
<div th:include="include::footer"></div>
<script src="/ruoyi/system/user/edit.js" th:src="@{/ruoyi/system/user/edit.js}">
</script>
<script src="/ajax/libs/iCheck/icheck.min.js" th:src="@{/ajax/libs/iCheck/icheck.min.js}"></script>
<script src="/ajax/libs/select/select2.js" th:src="@{/ajax/libs/select/select2.js}"></script>
<script th:src="@{/ruoyi/system/user/edit.js}"></script>
<script th:src="@{/ajax/libs/iCheck/icheck.min.js}"></script>
<script th:src="@{/ajax/libs/select/select2.js}"></script>
<script>
$(document).ready(function(){$(".i-checks").iCheck({checkboxClass:"icheckbox_square-green",radioClass:"iradio_square-green",})});
</script>

@ -23,7 +23,7 @@
<div class="cropped"></div>
</div>
<div th:include="include::footer"></div>
<script src="/ajax/libs/cropbox/cropbox.js" th:src="@{/ajax/libs/cropbox/cropbox.js}"></script>
<script th:src="@{/ajax/libs/cropbox/cropbox.js}"></script>
<script type="text/javascript">
$(window).load(function() {
var options = {

@ -6,8 +6,6 @@
<link href="/ruoyi/css/RuoYi.css" th:href="@{/ruoyi/css/RuoYi.css}" rel="stylesheet"/>
<link href="/ajax/libs/jquery-layout/jquery.layout-latest.css" th:href="@{/ajax/libs/jquery-layout/jquery.layout-latest.css}" rel="stylesheet"/>
<link href="/ajax/libs/jquery-ztree/3.5/css/metro/zTreeStyle.css" th:href="@{/ajax/libs/jquery-ztree/3.5/css/metro/zTreeStyle.css}" rel="stylesheet"/>
<!-- 文件输入框-->
<link href="/css/plugins/fileinput/fileinput.min.css" th:href="@{/css/plugins/fileinput/fileinput.min.css}" rel="stylesheet"/>
<body class="white-bg">
<div class="ui-layout-west">
@ -36,10 +34,6 @@
<button class="btn btn-outline btn-default" onclick="javascript:add()" shiro:hasPermission="system:user:add">
<i class="fa fa-plus"></i> 新增
</button>
<button class="btn btn-outline btn-default" data-toggle="modal" data-target="#exampleModal" shiro:hasPermission="system:user:batchAdd">
<i class="fa fa-plus-square"></i> 批量新增
</button>
<button class="btn btn-outline btn-default" onclick="javascript:batchRemove()" shiro:hasPermission="system:user:batchRemove">
<i class="fa fa-trash-o"></i> 删除
</button>
@ -50,46 +44,11 @@
data-sort-name="create_time" data-sort-order="desc">
</table>
</div>
<!-- Modal -->
<div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog modal-lg" role="document">
<div class="modal-content">
<div class="modal-header">
<h3 class="modal-title" id="exampleModalLabel">导入Execl表</h3>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
<a class="btn" style="font-size:15px" href="../static/template/用户导入模板.xlsx" th:href="@{/template/用户导入模板.xlsx}">
用户导入模板.xlsx
</a>
</div>
<div class="modal-body">
<div class="file-loading">
<input id="uploadfile" name="uploadfile" multiple type="file" accept=".xls,.xlsx">
</div>
<div id="upload-file-errors"></div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">关闭</button>
<button type="button" class="btn btn-primary" onclick="javascript:batchAdd()">保存</button>
</div>
</div>
</div>
</div>
</div>
<div th:include="include :: footer"></div>
<script src="/ruoyi/system/user/user.js" th:src="@{/ruoyi/system/user/user.js}"></script>
<script src="/ajax/libs/jquery-layout/jquery.layout-latest.js" th:src="@{/ajax/libs/jquery-layout/jquery.layout-latest.js}"></script>
<script src="/ajax/libs/jquery-ztree/3.5/js/jquery.ztree.all-3.5.js" th:src="@{/ajax/libs/jquery-ztree/3.5/js/jquery.ztree.all-3.5.js}"></script>
<!-- 文件输入框-->
<script src="/js/plugins/fileinput/fileinput.min.js" th:src="@{/js/plugins/fileinput/fileinput.min.js}"></script>
<script src="/js/plugins/fileinput/locales/zh.js" th:src="@{/js/plugins/fileinput/locales/zh.js}"></script>
<script src="/js/plugins/fileinput/plugins/piexif.js" th:src="@{/js/plugins/fileinput/plugins/piexif.js}"></script>
<script src="/js/plugins/fileinput/plugins/purify.js" th:src="@{/js/plugins/fileinput/plugins/purify.js}"></script>
<script src="/js/plugins/fileinput/plugins/sortable.js" th:src="@{/js/plugins/fileinput/plugins/sortable.js}"></script>
<script th:src="@{/ruoyi/system/user/user.js}"></script>
<script th:src="@{/ajax/libs/jquery-layout/jquery.layout-latest.js}"></script>
<script th:src="@{/ajax/libs/jquery-ztree/3.5/js/jquery.ztree.all-3.5.js}"></script>
<script th:inline="javascript">
var editFlag = [[${@permissionService.hasPermi('system:user:edit')}]];
var removeFlag = [[${@permissionService.hasPermi('system:user:remove')}]];

@ -155,10 +155,10 @@
</div>
</div>
<div th:include="include :: footer"></div>
<script src="/js/jquery-ui-1.10.4.min.js" th:src="@{/js/jquery-ui-1.10.4.min.js}"></script>
<script src="/ajax/libs/iCheck/icheck.min.js" th:src="@{/ajax/libs/iCheck/icheck.min.js}"></script>
<script src="/ajax/libs//datapicker/bootstrap-datepicker.js" th:src="@{/ajax/libs//datapicker/bootstrap-datepicker.js}"></script>
<script src="/ajax/libs/beautifyhtml/beautifyhtml.js" th:src="@{/ajax/libs/beautifyhtml/beautifyhtml.js}"></script>
<script th:src="@{/js/jquery-ui-1.10.4.min.js}"></script>
<script th:src="@{/ajax/libs/iCheck/icheck.min.js}"></script>
<script th:src="@{/ajax/libs//datapicker/bootstrap-datepicker.js}"></script>
<script th:src="@{/ajax/libs/beautifyhtml/beautifyhtml.js}"></script>
<script>
$(document).ready(function(){setup_draggable();$("#n-columns").on("change",function(){var v=$(this).val();if(v==="1"){var $col=$(".form-body .col-md-12").toggle(true);$(".form-body .col-md-6 .draggable").each(function(i,el){$(this).remove().appendTo($col)});$(".form-body .col-md-6").toggle(false)}else{var $col=$(".form-body .col-md-6").toggle(true);$(".form-body .col-md-12 .draggable").each(function(i,el){$(this).remove().appendTo(i%2?$col[1]:$col[0])});$(".form-body .col-md-12").toggle(false)}});$("#copy-to-clipboard").on("click",function(){var $copy=$(".form-body").clone().appendTo(document.body);$copy.find(".tools, :hidden").remove();$.each(["draggable","droppable","sortable","dropped","ui-sortable","ui-draggable","ui-droppable","form-body"],function(i,c){$copy.find("."+c).removeClass(c).removeAttr("style")});var html=html_beautify($copy.html());$copy.remove();$modal=get_modal(html).modal("show");$modal.find(".btn").remove();$modal.find(".modal-title").html("复制HTML代码");$modal.find(":input:first").select().focus();return false})});var setup_draggable=function(){$(".draggable").draggable({appendTo:"body",helper:"clone"});$(".droppable").droppable({accept:".draggable",helper:"clone",hoverClass:"droppable-active",drop:function(event,ui){$(".empty-form").remove();var $orig=$(ui.draggable);if(!$(ui.draggable).hasClass("dropped")){var $el=$orig.clone().addClass("dropped").css({"position":"static","left":null,"right":null}).appendTo(this);var id=$orig.find(":input").attr("id");if(id){id=id.split("-").slice(0,-1).join("-")+"-"+(parseInt(id.split("-").slice(-1)[0])+1);$orig.find(":input").attr("id",id);$orig.find("label").attr("for",id)}$('<p class="tools col-sm-12 col-sm-offset-3"> <a class="edit-link">编辑HTML<a> | <a class="remove-link">移除</a></p>').appendTo($el)}else{if($(this)[0]!=$orig.parent()[0]){var $el=$orig.clone().css({"position":"static","left":null,"right":null}).appendTo(this);$orig.remove()}}}}).sortable()};var get_modal=function(content){var modal=$('<div class="modal" style="overflow: auto;" tabindex="-1"> <div class="modal-dialog"><div class="modal-content"><div class="modal-header"><a type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</a><h4 class="modal-title">编辑HTML</h4></div><div class="modal-body ui-front"> <textarea class="form-control" style="min-height: 200px; margin-bottom: 10px;font-family: Monaco, Fixed">'+content+'</textarea><button class="btn btn-success">更新HTML</button></div> </div></div></div>').appendTo(document.body);return modal};$(document).on("click",".edit-link",function(ev){var $el=$(this).parent().parent();var $el_copy=$el.clone();var $edit_btn=$el_copy.find(".edit-link").parent().remove();var $modal=get_modal(html_beautify($el_copy.html())).modal("show");$modal.find(":input:first").focus();$modal.find(".btn-success").click(function(ev2){var html=$modal.find("textarea").val();if(!html){$el.remove()}else{$el.html(html);$edit_btn.appendTo($el)}$modal.modal("hide");return false})});$(document).on("click",".remove-link",function(ev){$(this).parent().parent().remove()});
$(document).ready(function(){$(".i-checks").iCheck({checkboxClass:"icheckbox_square-green",radioClass:"iradio_square-green",})});

@ -14,6 +14,6 @@
</table>
</div>
<div th:include="include :: footer"></div>
<script src="/ruoyi/tool/gen/gen.js" th:src="@{/ruoyi/tool/gen/gen.js}"></script>
<script th:src="@{/ruoyi/tool/gen/gen.js}"></script>
</body>
</html>

@ -24,7 +24,6 @@
</form>
</div>
<div th:include="include::footer"></div>
<script src="/ruoyi/${moduleName}/${classname}/add.js" th:src="@{/ruoyi/${moduleName}/${classname}/add.js}">
</script>
<script th:src="@{/ruoyi/${moduleName}/${classname}/add.js}"></script>
</body>
</html>

@ -25,7 +25,6 @@
</form>
</div>
<div th:include="include::footer"></div>
<script src="/ruoyi/${moduleName}/${classname}/edit.js" th:src="@{/ruoyi/${moduleName}/${classname}/edit.js}">
</script>
<script th:src="@{/ruoyi/${moduleName}/${classname}/edit.js}"></script>
</body>
</html>

@ -16,7 +16,7 @@
</table>
</div>
<div th:include="include :: footer"></div>
<script src="/ruoyi/${moduleName}/${classname}/${classname}.js" th:src="@{/ruoyi/${moduleName}/${classname}/${classname}.js}"></script>
<script th:src="@{/ruoyi/${moduleName}/${classname}/${classname}.js}"></script>
<script th:inline="javascript">
var editFlag = [[${@permissionService.hasPermi('${moduleName}:${classname}:edit')}]];
var removeFlag = [[${@permissionService.hasPermi('${moduleName}:${classname}:remove')}]];

Loading…
Cancel
Save