mirror of https://gitee.com/y_project/RuoYi.git
若依3.3
parent
7e67c233dc
commit
87b7e8665a
34
README.md
34
README.md
|
@ -6,11 +6,9 @@
|
||||||
|
|
||||||
若依基于hplus和inspinia两套后台系统模板开发。有需要可自行到群内下载。
|
若依基于hplus和inspinia两套后台系统模板开发。有需要可自行到群内下载。
|
||||||
|
|
||||||
> RuoYi从3.0开始,进行模块拆分,将原先的单应用转变为多模块,如需单应用,请移步 [RuoYi-fast](https://gitee.com/y_project/RuoYi-fast)
|
> 如需单应用,请移步 [RuoYi-fast](https://gitee.com/y_project/RuoYi-fast) `(保持同步更新)`,如需Oracle版本,请移步 [RuoYi-oracle](http://doc.ruoyi.vip/#/standard/xmkz) `(不定时更新)`
|
||||||
|
|
||||||
> 推荐使用阿里云部署,通用云产品代金券 :[点我领取](https://promotion.aliyun.com/ntms/yunparter/invite.html?userCode=brki8iof)
|
> 阿里云通用云产品1888优惠券 :[点我领取](https://promotion.aliyun.com/ntms/yunparter/invite.html?userCode=brki8iof) 腾讯云通用云产品2860优惠券 :[点我领取](https://cloud.tencent.com/redirect.php?redirect=1025&cps_key=198c8df2ed259157187173bc7f4f32fd&from=console) `(仅限新用户)`
|
||||||
|
|
||||||
> 2019阿里云开年Hi购季 云服务器全场限时5折 :[活动入口](https://www.aliyun.com/acts/product-section-2019/new-users?spm=5176.11533457.1089570.1.424777e3bwsfme&userCode=brki8iof)
|
|
||||||
|
|
||||||
## 内置功能
|
## 内置功能
|
||||||
|
|
||||||
|
@ -44,30 +42,34 @@
|
||||||
<table>
|
<table>
|
||||||
<tr>
|
<tr>
|
||||||
<td><img src="https://oscimg.oschina.net/oscnet/25b5e333768d013d45a990c152dbe4d9d6e.jpg"/></td>
|
<td><img src="https://oscimg.oschina.net/oscnet/25b5e333768d013d45a990c152dbe4d9d6e.jpg"/></td>
|
||||||
<td><img src="https://oscimg.oschina.net/oscnet/dfadf4d864242745486aa0167110dfcbeb8.jpg"/></td>
|
<td><img src="https://oscimg.oschina.net/oscnet/5ac52ccc07a59f12205948c9408791f5c5b.jpg"/></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td><img src="https://oscimg.oschina.net/oscnet/2e1ed87df9b476ed73ed650df20cf009b78.jpg"/></td>
|
<td><img src="https://oscimg.oschina.net/oscnet/66f8b5b24720dabe0e11ae84bd1ad4b038e.jpg"/></td>
|
||||||
<td><img src="https://oscimg.oschina.net/oscnet/693955d8914ee3c34ab904fa0602bc31267.jpg"/></td>
|
<td><img src="https://oscimg.oschina.net/oscnet/a46f34786bc9fc400697b6f3677be5bb3f0.jpg"/></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td><img src="https://oscimg.oschina.net/oscnet/9a2851988f4e7433c9322154534865f57d7.jpg"/></td>
|
<td><img src="https://oscimg.oschina.net/oscnet/6010201b078dbc9e1d8c09c6a3e53f4344c.jpg"/></td>
|
||||||
<td><img src="https://oscimg.oschina.net/oscnet/396293f80b1e8cce8671f56c296bee78a3a.jpg"/></td>
|
<td><img src="https://oscimg.oschina.net/oscnet/058928ad3a6e6de67b43d62d42dbf071355.jpg"/></td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><img src="https://oscimg.oschina.net/oscnet/21acdcade5e306f2c5d7ae26993b4e6bd06.jpg"/></td>
|
||||||
|
<td><img src="https://oscimg.oschina.net/oscnet/ad5ea3c4c2ea2e91d1f05f6cc384cbad2a1.jpg"/></td>
|
||||||
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td><img src="https://oscimg.oschina.net/oscnet/787b3b06430a403655b48b9bcd1fa829555.jpg"/></td>
|
<td><img src="https://oscimg.oschina.net/oscnet/6ca845cca1701fbf71881efe4f341c82f99.jpg"/></td>
|
||||||
<td><img src="https://oscimg.oschina.net/oscnet/a51820009836276b778bc89d4d0e217e26d.jpg"/></td>
|
<td><img src="https://oscimg.oschina.net/oscnet/e3aeb8fff585594f6e947218e14f2806ea1.jpg"/></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td><img src="https://oscimg.oschina.net/oscnet/5fb138478adeda6825e206d21f67ecd0625.jpg"/></td>
|
<td><img src="https://oscimg.oschina.net/oscnet/197ddc2fdffc27020f8624bd7ca1a971f61.jpg"/></td>
|
||||||
<td><img src="https://oscimg.oschina.net/oscnet/fa2f027a10707a4eb4fc47d5ea1c3d2b772.jpg"/></td>
|
<td><img src="https://oscimg.oschina.net/oscnet/a2dabea752d7d70aede20908dee0b419829.jpg"/></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td><img src="https://oscimg.oschina.net/oscnet/a714056081523b7dfa782cda866e8be4adc.jpg"/></td>
|
<td><img src="https://oscimg.oschina.net/oscnet/c5699c5726b5aebde71a37bb5163d840bc2.jpg"/></td>
|
||||||
<td><img src="https://oscimg.oschina.net/oscnet/ab4b5797dfb2bc68c4974ad5458bd5f5bcf.jpg"/></td>
|
<td><img src="https://oscimg.oschina.net/oscnet/24740d59377e826d0d8664ebad66dc84abd.jpg"/></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td><img src="https://oscimg.oschina.net/oscnet/98beb69118d9ab59aa898d5d5baad20b755.jpg"/></td>
|
<td><img src="https://oscimg.oschina.net/oscnet/bbe7fe1048d29217ba73bd3ed88d6743b55.jpg"/></td>
|
||||||
<td><img src="https://oscimg.oschina.net/oscnet/5f3d39a141f21f81b90536f391b8408f1fa.jpg"/></td>
|
<td><img src="https://oscimg.oschina.net/oscnet/5f3d39a141f21f81b90536f391b8408f1fa.jpg"/></td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
Binary file not shown.
8
pom.xml
8
pom.xml
|
@ -6,21 +6,21 @@
|
||||||
|
|
||||||
<groupId>com.ruoyi</groupId>
|
<groupId>com.ruoyi</groupId>
|
||||||
<artifactId>ruoyi</artifactId>
|
<artifactId>ruoyi</artifactId>
|
||||||
<version>3.2</version>
|
<version>3.3</version>
|
||||||
|
|
||||||
<name>ruoyi</name>
|
<name>ruoyi</name>
|
||||||
<url>http://www.ruoyi.vip</url>
|
<url>http://www.ruoyi.vip</url>
|
||||||
<description>若依管理系统</description>
|
<description>若依管理系统</description>
|
||||||
|
|
||||||
<properties>
|
<properties>
|
||||||
<ruoyi.version>3.2</ruoyi.version>
|
<ruoyi.version>3.3</ruoyi.version>
|
||||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
|
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
|
||||||
<java.version>1.8</java.version>
|
<java.version>1.8</java.version>
|
||||||
<shiro.version>1.4.0</shiro.version>
|
<shiro.version>1.4.0</shiro.version>
|
||||||
<thymeleaf.extras.shiro.version>2.0.0</thymeleaf.extras.shiro.version>
|
<thymeleaf.extras.shiro.version>2.0.0</thymeleaf.extras.shiro.version>
|
||||||
<mybatis.boot.version>1.3.2</mybatis.boot.version>
|
<mybatis.boot.version>1.3.2</mybatis.boot.version>
|
||||||
<druid.version>1.1.13</druid.version>
|
<druid.version>1.1.14</druid.version>
|
||||||
<bitwalker.version>1.19</bitwalker.version>
|
<bitwalker.version>1.19</bitwalker.version>
|
||||||
<kaptcha.version>2.3.2</kaptcha.version>
|
<kaptcha.version>2.3.2</kaptcha.version>
|
||||||
<swagger.version>2.7.0</swagger.version>
|
<swagger.version>2.7.0</swagger.version>
|
||||||
|
@ -34,7 +34,7 @@
|
||||||
<velocity.version>1.7</velocity.version>
|
<velocity.version>1.7</velocity.version>
|
||||||
</properties>
|
</properties>
|
||||||
|
|
||||||
<!-- 依赖声明 -->
|
<!-- 依赖声明 -->
|
||||||
<dependencyManagement>
|
<dependencyManagement>
|
||||||
<dependencies>
|
<dependencies>
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
<parent>
|
<parent>
|
||||||
<artifactId>ruoyi</artifactId>
|
<artifactId>ruoyi</artifactId>
|
||||||
<groupId>com.ruoyi</groupId>
|
<groupId>com.ruoyi</groupId>
|
||||||
<version>3.2</version>
|
<version>3.3</version>
|
||||||
</parent>
|
</parent>
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<packaging>jar</packaging>
|
<packaging>jar</packaging>
|
||||||
|
|
|
@ -13,6 +13,7 @@ import org.springframework.web.bind.annotation.ResponseBody;
|
||||||
import com.ruoyi.common.annotation.Log;
|
import com.ruoyi.common.annotation.Log;
|
||||||
import com.ruoyi.common.core.controller.BaseController;
|
import com.ruoyi.common.core.controller.BaseController;
|
||||||
import com.ruoyi.common.core.domain.AjaxResult;
|
import com.ruoyi.common.core.domain.AjaxResult;
|
||||||
|
import com.ruoyi.common.core.domain.AjaxResult.Type;
|
||||||
import com.ruoyi.common.core.domain.Ztree;
|
import com.ruoyi.common.core.domain.Ztree;
|
||||||
import com.ruoyi.common.enums.BusinessType;
|
import com.ruoyi.common.enums.BusinessType;
|
||||||
import com.ruoyi.common.utils.StringUtils;
|
import com.ruoyi.common.utils.StringUtils;
|
||||||
|
@ -113,11 +114,11 @@ public class SysDeptController extends BaseController
|
||||||
{
|
{
|
||||||
if (deptService.selectDeptCount(deptId) > 0)
|
if (deptService.selectDeptCount(deptId) > 0)
|
||||||
{
|
{
|
||||||
return error(1, "存在下级部门,不允许删除");
|
return error(Type.WARN, "存在下级部门,不允许删除");
|
||||||
}
|
}
|
||||||
if (deptService.checkDeptExistUser(deptId))
|
if (deptService.checkDeptExistUser(deptId))
|
||||||
{
|
{
|
||||||
return error(1, "部门存在用户,不允许删除");
|
return error(Type.WARN, "部门存在用户,不允许删除");
|
||||||
}
|
}
|
||||||
return toAjax(deptService.deleteDeptById(deptId));
|
return toAjax(deptService.deleteDeptById(deptId));
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,6 +13,7 @@ import org.springframework.web.bind.annotation.ResponseBody;
|
||||||
import com.ruoyi.common.annotation.Log;
|
import com.ruoyi.common.annotation.Log;
|
||||||
import com.ruoyi.common.core.controller.BaseController;
|
import com.ruoyi.common.core.controller.BaseController;
|
||||||
import com.ruoyi.common.core.domain.AjaxResult;
|
import com.ruoyi.common.core.domain.AjaxResult;
|
||||||
|
import com.ruoyi.common.core.domain.AjaxResult.Type;
|
||||||
import com.ruoyi.common.core.domain.Ztree;
|
import com.ruoyi.common.core.domain.Ztree;
|
||||||
import com.ruoyi.common.enums.BusinessType;
|
import com.ruoyi.common.enums.BusinessType;
|
||||||
import com.ruoyi.framework.util.ShiroUtils;
|
import com.ruoyi.framework.util.ShiroUtils;
|
||||||
|
@ -61,11 +62,11 @@ public class SysMenuController extends BaseController
|
||||||
{
|
{
|
||||||
if (menuService.selectCountMenuByParentId(menuId) > 0)
|
if (menuService.selectCountMenuByParentId(menuId) > 0)
|
||||||
{
|
{
|
||||||
return error(1, "存在子菜单,不允许删除");
|
return error(Type.WARN, "存在子菜单,不允许删除");
|
||||||
}
|
}
|
||||||
if (menuService.selectCountRoleMenuByMenuId(menuId) > 0)
|
if (menuService.selectCountRoleMenuByMenuId(menuId) > 0)
|
||||||
{
|
{
|
||||||
return error(1, "菜单已分配,不允许删除");
|
return error(Type.WARN, "菜单已分配,不允许删除");
|
||||||
}
|
}
|
||||||
ShiroUtils.clearCachedAuthorizationInfo();
|
ShiroUtils.clearCachedAuthorizationInfo();
|
||||||
return toAjax(menuService.deleteMenuById(menuId));
|
return toAjax(menuService.deleteMenuById(menuId));
|
||||||
|
|
|
@ -21,7 +21,6 @@ import com.ruoyi.common.utils.file.FileUploadUtils;
|
||||||
import com.ruoyi.framework.shiro.service.SysPasswordService;
|
import com.ruoyi.framework.shiro.service.SysPasswordService;
|
||||||
import com.ruoyi.framework.util.ShiroUtils;
|
import com.ruoyi.framework.util.ShiroUtils;
|
||||||
import com.ruoyi.system.domain.SysUser;
|
import com.ruoyi.system.domain.SysUser;
|
||||||
import com.ruoyi.system.service.ISysDictDataService;
|
|
||||||
import com.ruoyi.system.service.ISysUserService;
|
import com.ruoyi.system.service.ISysUserService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -43,9 +42,6 @@ public class SysProfileController extends BaseController
|
||||||
@Autowired
|
@Autowired
|
||||||
private SysPasswordService passwordService;
|
private SysPasswordService passwordService;
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private ISysDictDataService dictDataService;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 个人信息
|
* 个人信息
|
||||||
*/
|
*/
|
||||||
|
@ -53,7 +49,6 @@ public class SysProfileController extends BaseController
|
||||||
public String profile(ModelMap mmap)
|
public String profile(ModelMap mmap)
|
||||||
{
|
{
|
||||||
SysUser user = ShiroUtils.getSysUser();
|
SysUser user = ShiroUtils.getSysUser();
|
||||||
user.setSex(dictDataService.selectDictLabel("sys_user_sex", user.getSex()));
|
|
||||||
mmap.put("user", user);
|
mmap.put("user", user);
|
||||||
mmap.put("roleGroup", userService.selectUserRoleGroup(user.getUserId()));
|
mmap.put("roleGroup", userService.selectUserRoleGroup(user.getUserId()));
|
||||||
mmap.put("postGroup", userService.selectUserPostGroup(user.getUserId()));
|
mmap.put("postGroup", userService.selectUserPostGroup(user.getUserId()));
|
||||||
|
|
|
@ -18,7 +18,10 @@ import com.ruoyi.common.enums.BusinessType;
|
||||||
import com.ruoyi.common.utils.poi.ExcelUtil;
|
import com.ruoyi.common.utils.poi.ExcelUtil;
|
||||||
import com.ruoyi.framework.util.ShiroUtils;
|
import com.ruoyi.framework.util.ShiroUtils;
|
||||||
import com.ruoyi.system.domain.SysRole;
|
import com.ruoyi.system.domain.SysRole;
|
||||||
|
import com.ruoyi.system.domain.SysUser;
|
||||||
|
import com.ruoyi.system.domain.SysUserRole;
|
||||||
import com.ruoyi.system.service.ISysRoleService;
|
import com.ruoyi.system.service.ISysRoleService;
|
||||||
|
import com.ruoyi.system.service.ISysUserService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 角色信息
|
* 角色信息
|
||||||
|
@ -34,6 +37,9 @@ public class SysRoleController extends BaseController
|
||||||
@Autowired
|
@Autowired
|
||||||
private ISysRoleService roleService;
|
private ISysRoleService roleService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private ISysUserService userService;
|
||||||
|
|
||||||
@RequiresPermissions("system:role:view")
|
@RequiresPermissions("system:role:view")
|
||||||
@GetMapping()
|
@GetMapping()
|
||||||
public String role()
|
public String role()
|
||||||
|
@ -111,26 +117,25 @@ public class SysRoleController extends BaseController
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 新增数据权限
|
* 角色分配数据权限
|
||||||
*/
|
*/
|
||||||
@GetMapping("/rule/{roleId}")
|
@GetMapping("/authDataScope/{roleId}")
|
||||||
public String rule(@PathVariable("roleId") Long roleId, ModelMap mmap)
|
public String authDataScope(@PathVariable("roleId") Long roleId, ModelMap mmap)
|
||||||
{
|
{
|
||||||
mmap.put("role", roleService.selectRoleById(roleId));
|
mmap.put("role", roleService.selectRoleById(roleId));
|
||||||
return prefix + "/rule";
|
return prefix + "/dataScope";
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 修改保存数据权限
|
* 保存角色分配数据权限
|
||||||
*/
|
*/
|
||||||
@RequiresPermissions("system:role:edit")
|
@RequiresPermissions("system:role:edit")
|
||||||
@Log(title = "角色管理", businessType = BusinessType.UPDATE)
|
@Log(title = "角色管理", businessType = BusinessType.UPDATE)
|
||||||
@PostMapping("/rule")
|
@PostMapping("/authDataScope")
|
||||||
@ResponseBody
|
@ResponseBody
|
||||||
public AjaxResult ruleSave(SysRole role)
|
public AjaxResult authDataScopeSave(SysRole role)
|
||||||
{
|
{
|
||||||
role.setUpdateBy(ShiroUtils.getLoginName());
|
return toAjax(roleService.authDataScope(role));
|
||||||
return toAjax(roleService.updateRule(role));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@RequiresPermissions("system:role:remove")
|
@RequiresPermissions("system:role:remove")
|
||||||
|
@ -189,4 +194,84 @@ public class SysRoleController extends BaseController
|
||||||
{
|
{
|
||||||
return toAjax(roleService.changeStatus(role));
|
return toAjax(roleService.changeStatus(role));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分配用户
|
||||||
|
*/
|
||||||
|
@RequiresPermissions("system:role:edit")
|
||||||
|
@GetMapping("/authUser/{roleId}")
|
||||||
|
public String authUser(@PathVariable("roleId") Long roleId, ModelMap mmap)
|
||||||
|
{
|
||||||
|
mmap.put("role", roleService.selectRoleById(roleId));
|
||||||
|
return prefix + "/authUser";
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询已分配用户角色列表
|
||||||
|
*/
|
||||||
|
@RequiresPermissions("system:role:list")
|
||||||
|
@PostMapping("/authUser/allocatedList")
|
||||||
|
@ResponseBody
|
||||||
|
public TableDataInfo allocatedList(SysUser user)
|
||||||
|
{
|
||||||
|
startPage();
|
||||||
|
List<SysUser> list = userService.selectAllocatedList(user);
|
||||||
|
return getDataTable(list);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 取消授权
|
||||||
|
*/
|
||||||
|
@Log(title = "角色管理", businessType = BusinessType.GRANT)
|
||||||
|
@PostMapping("/authUser/cancel")
|
||||||
|
@ResponseBody
|
||||||
|
public AjaxResult cancelAuthUser(SysUserRole userRole)
|
||||||
|
{
|
||||||
|
return toAjax(roleService.deleteAuthUser(userRole));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量取消授权
|
||||||
|
*/
|
||||||
|
@Log(title = "角色管理", businessType = BusinessType.GRANT)
|
||||||
|
@PostMapping("/authUser/cancelAll")
|
||||||
|
@ResponseBody
|
||||||
|
public AjaxResult cancelAuthUserAll(Long roleId, String userIds)
|
||||||
|
{
|
||||||
|
return toAjax(roleService.deleteAuthUsers(roleId, userIds));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 选择用户
|
||||||
|
*/
|
||||||
|
@GetMapping("/authUser/selectUser/{roleId}")
|
||||||
|
public String selectUser(@PathVariable("roleId") Long roleId, ModelMap mmap)
|
||||||
|
{
|
||||||
|
mmap.put("role", roleService.selectRoleById(roleId));
|
||||||
|
return prefix + "/selectUser";
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询未分配用户角色列表
|
||||||
|
*/
|
||||||
|
@RequiresPermissions("system:role:list")
|
||||||
|
@PostMapping("/authUser/unallocatedList")
|
||||||
|
@ResponseBody
|
||||||
|
public TableDataInfo unallocatedList(SysUser user)
|
||||||
|
{
|
||||||
|
startPage();
|
||||||
|
List<SysUser> list = userService.selectUnallocatedList(user);
|
||||||
|
return getDataTable(list);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量选择用户授权
|
||||||
|
*/
|
||||||
|
@Log(title = "角色管理", businessType = BusinessType.GRANT)
|
||||||
|
@PostMapping("/authUser/selectAll")
|
||||||
|
@ResponseBody
|
||||||
|
public AjaxResult selectAuthUserAll(Long roleId, String userIds)
|
||||||
|
{
|
||||||
|
return toAjax(roleService.insertAuthUsers(roleId, userIds));
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -3,7 +3,7 @@ ruoyi:
|
||||||
# 名称
|
# 名称
|
||||||
name: RuoYi
|
name: RuoYi
|
||||||
# 版本
|
# 版本
|
||||||
version: 3.2.0
|
version: 3.3.0
|
||||||
# 版权年份
|
# 版权年份
|
||||||
copyrightYear: 2019
|
copyrightYear: 2019
|
||||||
# 文件上传
|
# 文件上传
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -50,6 +50,130 @@
|
||||||
margin-left: 20px;
|
margin-left: 20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.section-content {
|
||||||
|
min-height: 250px;
|
||||||
|
margin-right: auto;
|
||||||
|
margin-left: auto;
|
||||||
|
padding: 5px 5px 5px 5px;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
position: absolute;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ibox {
|
||||||
|
margin-bottom: 25px;
|
||||||
|
background-color: #fff;
|
||||||
|
border: 1px solid #ddd;
|
||||||
|
border-radius: 4px;
|
||||||
|
height: 100%;
|
||||||
|
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .05);
|
||||||
|
}
|
||||||
|
|
||||||
|
.list-group-striped > .list-group-item {
|
||||||
|
border-left: 0;
|
||||||
|
border-right: 0;
|
||||||
|
border-radius: 0;
|
||||||
|
padding-left: 0;
|
||||||
|
padding-right: 0
|
||||||
|
}
|
||||||
|
|
||||||
|
.ibox-title-gray {
|
||||||
|
height: 41px;
|
||||||
|
background-color: #f0f3f4;
|
||||||
|
color: #333;
|
||||||
|
font-weight: 700;
|
||||||
|
border-radius: 2px 2px 0 0;
|
||||||
|
padding: 13px !important;
|
||||||
|
border-bottom: 1px solid #eee;
|
||||||
|
display: block;
|
||||||
|
clear: both;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dashboard-header h5 {
|
||||||
|
padding: 8px 0 0 0;
|
||||||
|
display: inline-block;
|
||||||
|
font-size: 14px;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
float: left;
|
||||||
|
font-weight: 400;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ibox-title-gray h5 {
|
||||||
|
display: inline-block;
|
||||||
|
font-size: 14px;
|
||||||
|
margin: 0 0 7px;
|
||||||
|
padding: 0;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 导航页签 */
|
||||||
|
.nav-tabs-custom {
|
||||||
|
margin-bottom: 20px;
|
||||||
|
background: #fff;
|
||||||
|
box-shadow: 0 1px 1px rgba(0,0,0,0.1);
|
||||||
|
border-radius: 3px
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav-tabs-custom>.nav-tabs {
|
||||||
|
margin: 0;
|
||||||
|
border-bottom-color: #f4f4f4;
|
||||||
|
border-top-right-radius: 3px;
|
||||||
|
border-top-left-radius: 3px
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav-tabs-custom>.nav-tabs>li {
|
||||||
|
border-top: 3px solid transparent;
|
||||||
|
margin-bottom: -2px;
|
||||||
|
margin-right: 5px
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav-tabs-custom>.nav-tabs>li.disabled>a {
|
||||||
|
color: #777
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav-tabs-custom>.nav-tabs>li>a {
|
||||||
|
color: #444;
|
||||||
|
font-weight: normal;
|
||||||
|
border-radius: 0
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav-tabs-custom>.nav-tabs>li>a,.nav-tabs-custom>.nav-tabs>li>a:hover {
|
||||||
|
background: transparent;
|
||||||
|
margin: 0
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav-tabs-custom>.nav-tabs>li>a:hover {
|
||||||
|
color: #999
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav-tabs-custom>.nav-tabs>li:not(.active)>a:hover,.nav-tabs-custom>.nav-tabs>li:not(.active)>a:focus,.nav-tabs-custom>.nav-tabs>li:not(.active)>a:active {
|
||||||
|
border-color: transparent
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav-tabs-custom>.nav-tabs>li.active {
|
||||||
|
border-top-color: #1890ff
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav-tabs-custom>.nav-tabs>li.active>a,.nav-tabs-custom>.nav-tabs>li.active:hover>a {
|
||||||
|
background-color: #fff;
|
||||||
|
color: #444
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav-tabs-custom>.nav-tabs>li.active>a {
|
||||||
|
border-top-color: transparent;
|
||||||
|
border-bottom-color: transparent;
|
||||||
|
border-left-color: #f4f4f4;
|
||||||
|
border-right-color: #f4f4f4
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav-tabs-custom>.tab-content {
|
||||||
|
background: #fff;
|
||||||
|
padding: 10px;
|
||||||
|
border-bottom-right-radius: 3px;
|
||||||
|
border-bottom-left-radius: 3px
|
||||||
|
}
|
||||||
|
|
||||||
/** 弹层组件 禁用样式 **/
|
/** 弹层组件 禁用样式 **/
|
||||||
.layer-disabled {
|
.layer-disabled {
|
||||||
border: 1px #dedede solid !important;
|
border: 1px #dedede solid !important;
|
||||||
|
|
|
@ -32,6 +32,7 @@
|
||||||
showToggle: true,
|
showToggle: true,
|
||||||
showExport: false,
|
showExport: false,
|
||||||
clickToSelect: false,
|
clickToSelect: false,
|
||||||
|
rememberSelected: false,
|
||||||
fixedColumns: false,
|
fixedColumns: false,
|
||||||
fixedNumber: 0,
|
fixedNumber: 0,
|
||||||
rightFixedColumns: false,
|
rightFixedColumns: false,
|
||||||
|
@ -68,6 +69,7 @@
|
||||||
showToggle: options.showToggle, // 是否显示详细视图和列表视图的切换按钮
|
showToggle: options.showToggle, // 是否显示详细视图和列表视图的切换按钮
|
||||||
showExport: options.showExport, // 是否支持导出文件
|
showExport: options.showExport, // 是否支持导出文件
|
||||||
clickToSelect: options.clickToSelect, // 是否启用点击选中行
|
clickToSelect: options.clickToSelect, // 是否启用点击选中行
|
||||||
|
rememberSelected: options.rememberSelected, // 启用翻页记住前面的选择
|
||||||
fixedColumns: options.fixedColumns, // 是否启用冻结列(左侧)
|
fixedColumns: options.fixedColumns, // 是否启用冻结列(左侧)
|
||||||
fixedNumber: options.fixedNumber, // 列冻结的个数(左侧)
|
fixedNumber: options.fixedNumber, // 列冻结的个数(左侧)
|
||||||
rightFixedColumns: options.rightFixedColumns, // 是否启用冻结列(右侧)
|
rightFixedColumns: options.rightFixedColumns, // 是否启用冻结列(右侧)
|
||||||
|
@ -106,11 +108,21 @@
|
||||||
onLoadSuccess: function(data) {
|
onLoadSuccess: function(data) {
|
||||||
// 浮动提示框特效
|
// 浮动提示框特效
|
||||||
$("[data-toggle='tooltip']").tooltip();
|
$("[data-toggle='tooltip']").tooltip();
|
||||||
// 触发行点击事件
|
// 触发行点击事件 加载成功事件
|
||||||
$("#" + $.table._option.id).on("check.bs.table uncheck.bs.table check-all.bs.table uncheck-all.bs.table load-success.bs.table", function () {
|
$("#" + $.table._option.id).on("check.bs.table uncheck.bs.table check-all.bs.table uncheck-all.bs.table load-success.bs.table", function () {
|
||||||
var ids = $("#" + $.table._option.id).bootstrapTable("getSelections");
|
// 工具栏按钮控制
|
||||||
$('#' + $.table._option.toolbar + ' .btn-del').toggleClass('disabled', !ids.length);
|
var rows = $.common.isEmpty($.table._option.uniqueId) ? $.table.selectFirstColumns() : $.table.selectColumns($.table._option.uniqueId);
|
||||||
$('#' + $.table._option.toolbar + ' .btn-edit').toggleClass('disabled', ids.length!=1);
|
$('#' + $.table._option.toolbar + ' .btn-del').toggleClass('disabled', !rows.length);
|
||||||
|
$('#' + $.table._option.toolbar + ' .btn-edit').toggleClass('disabled', rows.length!=1);
|
||||||
|
});
|
||||||
|
// 绑定选中事件、取消事件、全部选中、全部取消
|
||||||
|
$("#" + $.table._option.id).on("check.bs.table check-all.bs.table uncheck.bs.table uncheck-all.bs.table", function (e, rows) {
|
||||||
|
// 复选框分页保留保存选中数组
|
||||||
|
var rows = $.common.isEmpty($.table._option.uniqueId) ? $.table.selectFirstColumns() : $.table.selectColumns($.table._option.uniqueId);
|
||||||
|
if ($.common.isNotEmpty($.table._option.rememberSelected) && $.table._option.rememberSelected) {
|
||||||
|
func = $.inArray(e.type, ['check', 'check-all']) > -1 ? 'union' : 'difference';
|
||||||
|
selectionIds = _[func](selectionIds, rows);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
// 表格销毁
|
// 表格销毁
|
||||||
|
@ -169,15 +181,19 @@
|
||||||
},
|
},
|
||||||
// 导出数据
|
// 导出数据
|
||||||
exportExcel: function(formId) {
|
exportExcel: function(formId) {
|
||||||
var currentId = $.common.isEmpty(formId) ? $('form').attr('id') : formId;
|
$.modal.confirm("确定导出所有" + $.table._option.modalName + "吗?", function() {
|
||||||
$.modal.loading("正在导出数据,请稍后...");
|
var currentId = $.common.isEmpty(formId) ? $('form').attr('id') : formId;
|
||||||
$.post($.table._option.exportUrl, $("#" + currentId).serializeArray(), function(result) {
|
$.modal.loading("正在导出数据,请稍后...");
|
||||||
if (result.code == web_status.SUCCESS) {
|
$.post($.table._option.exportUrl, $("#" + currentId).serializeArray(), function(result) {
|
||||||
window.location.href = ctx + "common/download?fileName=" + encodeURI(result.msg) + "&delete=" + true;
|
if (result.code == web_status.SUCCESS) {
|
||||||
} else {
|
window.location.href = ctx + "common/download?fileName=" + encodeURI(result.msg) + "&delete=" + true;
|
||||||
$.modal.alertError(result.msg);
|
} else if (result.code == web_status.WARNING) {
|
||||||
}
|
$.modal.alertWarning(result.msg)
|
||||||
$.modal.closeLoading();
|
} else {
|
||||||
|
$.modal.alertError(result.msg);
|
||||||
|
}
|
||||||
|
$.modal.closeLoading();
|
||||||
|
});
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
// 下载模板
|
// 下载模板
|
||||||
|
@ -185,7 +201,9 @@
|
||||||
$.get($.table._option.importTemplateUrl, function(result) {
|
$.get($.table._option.importTemplateUrl, function(result) {
|
||||||
if (result.code == web_status.SUCCESS) {
|
if (result.code == web_status.SUCCESS) {
|
||||||
window.location.href = ctx + "common/download?fileName=" + encodeURI(result.msg) + "&delete=" + true;
|
window.location.href = ctx + "common/download?fileName=" + encodeURI(result.msg) + "&delete=" + true;
|
||||||
} else {
|
} else if (result.code == web_status.WARNING) {
|
||||||
|
$.modal.alertWarning(result.msg)
|
||||||
|
} else {
|
||||||
$.modal.alertError(result.msg);
|
$.modal.alertError(result.msg);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -229,7 +247,11 @@
|
||||||
$.modal.closeAll();
|
$.modal.closeAll();
|
||||||
$.modal.alertSuccess(result.msg);
|
$.modal.alertSuccess(result.msg);
|
||||||
$.table.refresh();
|
$.table.refresh();
|
||||||
} else {
|
} else if (result.code == web_status.WARNING) {
|
||||||
|
layer.close(index);
|
||||||
|
$.modal.enable();
|
||||||
|
$.modal.alertWarning(result.msg)
|
||||||
|
} else {
|
||||||
layer.close(index);
|
layer.close(index);
|
||||||
$.modal.enable();
|
$.modal.enable();
|
||||||
$.modal.alertError(result.msg);
|
$.modal.alertError(result.msg);
|
||||||
|
@ -247,15 +269,23 @@
|
||||||
},
|
},
|
||||||
// 查询表格指定列值
|
// 查询表格指定列值
|
||||||
selectColumns: function(column) {
|
selectColumns: function(column) {
|
||||||
return $.map($('#' + $.table._option.id).bootstrapTable('getSelections'), function (row) {
|
var rows = $.map($('#' + $.table._option.id).bootstrapTable('getSelections'), function (row) {
|
||||||
return row[column];
|
return row[column];
|
||||||
});
|
});
|
||||||
|
if ($.common.isNotEmpty($.table._option.rememberSelected) && $.table._option.rememberSelected) {
|
||||||
|
rows = rows.concat(selectionIds);
|
||||||
|
}
|
||||||
|
return $.common.uniqueFn(rows);
|
||||||
},
|
},
|
||||||
// 查询表格首列值
|
// 查询表格首列值
|
||||||
selectFirstColumns: function() {
|
selectFirstColumns: function() {
|
||||||
return $.map($('#' + $.table._option.id).bootstrapTable('getSelections'), function (row) {
|
var rows = $.map($('#' + $.table._option.id).bootstrapTable('getSelections'), function (row) {
|
||||||
return row[$.table._option.columns[1].field];
|
return row[$.table._option.columns[1].field];
|
||||||
});
|
});
|
||||||
|
if ($.common.isNotEmpty($.table._option.rememberSelected) && $.table._option.rememberSelected) {
|
||||||
|
rows = rows.concat(selectionIds);
|
||||||
|
}
|
||||||
|
return $.common.uniqueFn(rows);
|
||||||
},
|
},
|
||||||
// 回显数据字典
|
// 回显数据字典
|
||||||
selectDictLabel: function(datas, value) {
|
selectDictLabel: function(datas, value) {
|
||||||
|
@ -736,7 +766,7 @@
|
||||||
}
|
}
|
||||||
return url;
|
return url;
|
||||||
},
|
},
|
||||||
// 保存信息
|
// 保存信息 刷新表格
|
||||||
save: function(url, data) {
|
save: function(url, data) {
|
||||||
var config = {
|
var config = {
|
||||||
url: url,
|
url: url,
|
||||||
|
@ -753,6 +783,29 @@
|
||||||
};
|
};
|
||||||
$.ajax(config)
|
$.ajax(config)
|
||||||
},
|
},
|
||||||
|
// 保存信息 弹出提示框
|
||||||
|
saveModal: function(url, data) {
|
||||||
|
var config = {
|
||||||
|
url: url,
|
||||||
|
type: "post",
|
||||||
|
dataType: "json",
|
||||||
|
data: data,
|
||||||
|
beforeSend: function () {
|
||||||
|
$.modal.loading("正在处理中,请稍后...");
|
||||||
|
},
|
||||||
|
success: function(result) {
|
||||||
|
if (result.code == web_status.SUCCESS) {
|
||||||
|
$.modal.alertSuccess(result.msg)
|
||||||
|
} else if (result.code == web_status.WARNING) {
|
||||||
|
$.modal.alertWarning(result.msg)
|
||||||
|
} else {
|
||||||
|
$.modal.alertError(result.msg);
|
||||||
|
}
|
||||||
|
$.modal.closeLoading();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
$.ajax(config)
|
||||||
|
},
|
||||||
// 保存选项卡信息
|
// 保存选项卡信息
|
||||||
saveTab: function(url, data) {
|
saveTab: function(url, data) {
|
||||||
var config = {
|
var config = {
|
||||||
|
@ -777,7 +830,9 @@
|
||||||
} else if (result.code == web_status.SUCCESS && $.table._option.type == table_type.bootstrapTreeTable) {
|
} else if (result.code == web_status.SUCCESS && $.table._option.type == table_type.bootstrapTreeTable) {
|
||||||
$.modal.msgSuccess(result.msg);
|
$.modal.msgSuccess(result.msg);
|
||||||
$.treeTable.refresh();
|
$.treeTable.refresh();
|
||||||
} else {
|
} else if (result.code == web_status.WARNING) {
|
||||||
|
$.modal.alertWarning(result.msg)
|
||||||
|
} else {
|
||||||
$.modal.alertError(result.msg);
|
$.modal.alertError(result.msg);
|
||||||
}
|
}
|
||||||
$.modal.closeLoading();
|
$.modal.closeLoading();
|
||||||
|
@ -786,7 +841,9 @@
|
||||||
saveSuccess: function (result) {
|
saveSuccess: function (result) {
|
||||||
if (result.code == web_status.SUCCESS) {
|
if (result.code == web_status.SUCCESS) {
|
||||||
$.modal.msgReload("保存成功,正在刷新数据请稍后……", modal_status.SUCCESS);
|
$.modal.msgReload("保存成功,正在刷新数据请稍后……", modal_status.SUCCESS);
|
||||||
} else {
|
} else if (result.code == web_status.WARNING) {
|
||||||
|
$.modal.alertWarning(result.msg)
|
||||||
|
} else {
|
||||||
$.modal.alertError(result.msg);
|
$.modal.alertError(result.msg);
|
||||||
}
|
}
|
||||||
$.modal.closeLoading();
|
$.modal.closeLoading();
|
||||||
|
@ -806,7 +863,9 @@
|
||||||
} else {
|
} else {
|
||||||
$.modal.msgReload("保存成功,正在刷新数据请稍后……", modal_status.SUCCESS);
|
$.modal.msgReload("保存成功,正在刷新数据请稍后……", modal_status.SUCCESS);
|
||||||
}
|
}
|
||||||
} else {
|
} else if (result.code == web_status.WARNING) {
|
||||||
|
$.modal.alertWarning(result.msg)
|
||||||
|
} else {
|
||||||
$.modal.alertError(result.msg);
|
$.modal.alertError(result.msg);
|
||||||
}
|
}
|
||||||
$.modal.closeLoading();
|
$.modal.closeLoading();
|
||||||
|
@ -827,6 +886,8 @@
|
||||||
$contentWindow.$.treeTable.refresh();
|
$contentWindow.$.treeTable.refresh();
|
||||||
}
|
}
|
||||||
closeItem();
|
closeItem();
|
||||||
|
} else if (result.code == web_status.WARNING) {
|
||||||
|
$.modal.alertWarning(result.msg)
|
||||||
} else {
|
} else {
|
||||||
$.modal.alertError(result.msg);
|
$.modal.alertError(result.msg);
|
||||||
}
|
}
|
||||||
|
@ -1057,6 +1118,19 @@
|
||||||
}
|
}
|
||||||
return value.toString().replace(/(^\s*)|(\s*$)|\r|\n/g, "");
|
return value.toString().replace(/(^\s*)|(\s*$)|\r|\n/g, "");
|
||||||
},
|
},
|
||||||
|
// 字符串格式化(%s )
|
||||||
|
sprintf: function (str) {
|
||||||
|
var args = arguments, flag = true, i = 1;
|
||||||
|
str = str.replace(/%s/g, function () {
|
||||||
|
var arg = args[i++];
|
||||||
|
if (typeof arg === 'undefined') {
|
||||||
|
flag = false;
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
return arg;
|
||||||
|
});
|
||||||
|
return flag ? str : '';
|
||||||
|
},
|
||||||
// 指定随机数返回
|
// 指定随机数返回
|
||||||
random: function (min, max) {
|
random: function (min, max) {
|
||||||
return Math.floor((Math.random() * max) + min);
|
return Math.floor((Math.random() * max) + min);
|
||||||
|
@ -1070,6 +1144,18 @@
|
||||||
endWith: function(value, end) {
|
endWith: function(value, end) {
|
||||||
var reg = new RegExp(end + "$");
|
var reg = new RegExp(end + "$");
|
||||||
return reg.test(value)
|
return reg.test(value)
|
||||||
|
},
|
||||||
|
// 数组去重
|
||||||
|
uniqueFn: function(array) {
|
||||||
|
var result = [];
|
||||||
|
var hashObj = {};
|
||||||
|
for (var i = 0; i < array.length; i++) {
|
||||||
|
if (!hashObj[array[i]]) {
|
||||||
|
hashObj[array[i]] = true;
|
||||||
|
result.push(array[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -1084,7 +1170,8 @@ table_type = {
|
||||||
/** 消息状态码 */
|
/** 消息状态码 */
|
||||||
web_status = {
|
web_status = {
|
||||||
SUCCESS: 0,
|
SUCCESS: 0,
|
||||||
FAIL: 500
|
FAIL: 500,
|
||||||
|
WARNING: 301
|
||||||
};
|
};
|
||||||
|
|
||||||
/** 弹窗状态码 */
|
/** 弹窗状态码 */
|
||||||
|
|
|
@ -1,9 +1,10 @@
|
||||||
<head th:fragment="header">
|
<!-- 通用CSS -->
|
||||||
|
<head th:fragment=header(title)>
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<title></title>
|
|
||||||
<meta name="keywords" content="">
|
<meta name="keywords" content="">
|
||||||
<meta name="description" content="">
|
<meta name="description" content="">
|
||||||
|
<title th:text="${title}"></title>
|
||||||
<link rel="shortcut icon" href="favicon.ico">
|
<link rel="shortcut icon" href="favicon.ico">
|
||||||
<link th:href="@{/css/bootstrap.min.css}" rel="stylesheet"/>
|
<link th:href="@{/css/bootstrap.min.css}" rel="stylesheet"/>
|
||||||
<link th:href="@{/css/font-awesome.min.css}" rel="stylesheet"/>
|
<link th:href="@{/css/font-awesome.min.css}" rel="stylesheet"/>
|
||||||
|
@ -13,13 +14,13 @@
|
||||||
<link th:href="@{/ajax/libs/bootstrap-table/extensions/columns/bootstrap-table-fixed-columns.css}" rel="stylesheet"/>
|
<link th:href="@{/ajax/libs/bootstrap-table/extensions/columns/bootstrap-table-fixed-columns.css}" rel="stylesheet"/>
|
||||||
<link th:href="@{/css/animate.css}" rel="stylesheet"/>
|
<link th:href="@{/css/animate.css}" rel="stylesheet"/>
|
||||||
<link th:href="@{/css/style.css}" rel="stylesheet"/>
|
<link th:href="@{/css/style.css}" rel="stylesheet"/>
|
||||||
<link th:href="@{/ajax/libs/select/select2.css}" rel="stylesheet"/>
|
|
||||||
<link th:href="@{/ruoyi/css/ry-ui.css}" rel="stylesheet"/>
|
<link th:href="@{/ruoyi/css/ry-ui.css}" rel="stylesheet"/>
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
|
<!-- 通用JS -->
|
||||||
<div th:fragment="footer">
|
<div th:fragment="footer">
|
||||||
<script th:src="@{/js/jquery.min.js}"></script>
|
<script th:src="@{/js/jquery.min.js}"></script>
|
||||||
<script th:src="@{/js/bootstrap.min.js}"></script>
|
<script th:src="@{/js/bootstrap.min.js}"></script>
|
||||||
|
|
||||||
<!-- bootstrap-table 表格插件 -->
|
<!-- bootstrap-table 表格插件 -->
|
||||||
<script th:src="@{/ajax/libs/bootstrap-table/bootstrap-table.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/locale/bootstrap-table-zh-CN.min.js}"></script>
|
||||||
|
@ -37,11 +38,69 @@
|
||||||
<script th:src="@{/ajax/libs/bootstrap-table/extensions/export/tableExport.js}"></script>
|
<script th:src="@{/ajax/libs/bootstrap-table/extensions/export/tableExport.js}"></script>
|
||||||
<!-- 遮罩层 -->
|
<!-- 遮罩层 -->
|
||||||
<script th:src="@{/ajax/libs/blockUI/jquery.blockUI.js}"></script>
|
<script th:src="@{/ajax/libs/blockUI/jquery.blockUI.js}"></script>
|
||||||
<script th:src="@{/ajax/libs/iCheck/icheck.min.js}"></script>
|
<script th:src="@{/ajax/libs/iCheck/icheck.min.js}"></script>
|
||||||
<script th:src="@{/ajax/libs/layer/layer.min.js}"></script>
|
<script th:src="@{/ajax/libs/layer/layer.min.js}"></script>
|
||||||
<script th:src="@{/ajax/libs/layui/layui.js}"></script>
|
<script th:src="@{/ajax/libs/layui/layui.js}"></script>
|
||||||
<script th:src="@{/ruoyi/js/common.js?v=3.2.0}"></script>
|
<script th:src="@{/ruoyi/js/common.js?v=3.3.0}"></script>
|
||||||
<script th:src="@{/ruoyi/js/ry-ui.js?v=3.2.0}"></script>
|
<script th:src="@{/ruoyi/js/ry-ui.js?v=3.3.0}"></script>
|
||||||
<script src="http://tajs.qq.com/stats?sId=62048022"></script>
|
<script src="http://tajs.qq.com/stats?sId=62048022"></script>
|
||||||
<script th:inline="javascript"> var ctx = [[@{/}]]; </script>
|
<script th:inline="javascript"> var ctx = [[@{/}]]; </script>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<!-- ztree树插件 -->
|
||||||
|
<div th:fragment="ztree-css">
|
||||||
|
<link th:href="@{/ajax/libs/jquery-ztree/3.5/css/metro/zTreeStyle.css}" rel="stylesheet"/>
|
||||||
|
</div>
|
||||||
|
<div th:fragment="ztree-js">
|
||||||
|
<script th:src="@{/ajax/libs/jquery-ztree/3.5/js/jquery.ztree.all-3.5.js}"></script>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- select下拉框插件 -->
|
||||||
|
<div th:fragment="select2-css">
|
||||||
|
<link th:href="@{/ajax/libs/select/select2.css}" rel="stylesheet"/>
|
||||||
|
</div>
|
||||||
|
<div th:fragment="select2-js">
|
||||||
|
<script th:src="@{/ajax/libs/select/select2.js}"></script>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- datetimepicker日期和时间插件 -->
|
||||||
|
<div th:fragment="datetimepicker-css">
|
||||||
|
<link th:href="@{/ajax/libs/datapicker/bootstrap-datetimepicker.min.css}" rel="stylesheet"/>
|
||||||
|
</div>
|
||||||
|
<div th:fragment="datetimepicker-js">
|
||||||
|
<script th:src="@{/ajax/libs//datapicker/bootstrap-datetimepicker.min.js}"></script>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- ui布局插件 -->
|
||||||
|
<div th:fragment="layout-latest-css">
|
||||||
|
<link th:href="@{/ajax/libs/jquery-layout/jquery.layout-latest.css}" rel="stylesheet"/>
|
||||||
|
</div>
|
||||||
|
<div th:fragment="layout-latest-js">
|
||||||
|
<script th:src="@{/ajax/libs/jquery-layout/jquery.layout-latest.js}"></script>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- summernote富文本编辑器插件 -->
|
||||||
|
<div th:fragment="summernote-css">
|
||||||
|
<link th:href="@{/ajax/libs/summernote/summernote.css}" rel="stylesheet"/>
|
||||||
|
<link th:href="@{/ajax/libs/summernote/summernote-bs3.css}" rel="stylesheet"/>
|
||||||
|
</div>
|
||||||
|
<div th:fragment="summernote-js">
|
||||||
|
<script th:src="@{/ajax/libs/summernote/summernote.min.js}"></script>
|
||||||
|
<script th:src="@{/ajax/libs/summernote/summernote-zh-CN.js}"></script>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- cropbox图像裁剪插件 -->
|
||||||
|
<div th:fragment="cropbox-css">
|
||||||
|
<link th:href="@{/ajax/libs/cropbox/cropbox.css}" rel="stylesheet"/>
|
||||||
|
</div>
|
||||||
|
<div th:fragment="cropbox-js">
|
||||||
|
<script th:src="@{/ajax/libs/cropbox/cropbox.js}"></script>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- jsonview格式化和语法高亮JSON格式数据查看插件 -->
|
||||||
|
<div th:fragment="jsonview-css">
|
||||||
|
<link th:href="@{/ajax/libs/jsonview/jquery.jsonview.css}" rel="stylesheet"/>
|
||||||
|
</div>
|
||||||
|
<div th:fragment="jsonview-js">
|
||||||
|
<script th:src="@{/ajax/libs/jsonview/jquery.jsonview.js}"></script>
|
||||||
|
</div>
|
|
@ -16,7 +16,7 @@
|
||||||
<link th:href="@{/css/animate.css}" rel="stylesheet"/>
|
<link th:href="@{/css/animate.css}" rel="stylesheet"/>
|
||||||
<link th:href="@{/css/style.css}" rel="stylesheet"/>
|
<link th:href="@{/css/style.css}" rel="stylesheet"/>
|
||||||
<link th:href="@{/css/skins.css}" rel="stylesheet"/>
|
<link th:href="@{/css/skins.css}" rel="stylesheet"/>
|
||||||
<link th:href="@{/ruoyi/css/ry-ui.css?v=3.2.0}" rel="stylesheet"/>
|
<link th:href="@{/ruoyi/css/ry-ui.css?v=3.3.0}" rel="stylesheet"/>
|
||||||
<style type="text/css">
|
<style type="text/css">
|
||||||
.nav > li:hover .dropdown-menu {display: block;}
|
.nav > li:hover .dropdown-menu {display: block;}
|
||||||
#content-main.max { height: calc(100% - 110px); overflow: hidden; width: 100%; height: 100%; left: 0px; position: absolute; top: 0px; z-index: 9998; margin: 0; }
|
#content-main.max { height: calc(100% - 110px); overflow: hidden; width: 100%; height: 100%; left: 0px; position: absolute; top: 0px; z-index: 9998; margin: 0; }
|
||||||
|
@ -159,7 +159,7 @@
|
||||||
<script th:src="@{/ajax/libs/blockUI/jquery.blockUI.js}"></script>
|
<script th:src="@{/ajax/libs/blockUI/jquery.blockUI.js}"></script>
|
||||||
<script th:src="@{/ajax/libs/layer/layer.min.js}"></script>
|
<script th:src="@{/ajax/libs/layer/layer.min.js}"></script>
|
||||||
<script src="http://tajs.qq.com/stats?sId=62048022"></script>
|
<script src="http://tajs.qq.com/stats?sId=62048022"></script>
|
||||||
<script th:src="@{/ruoyi/js/ry-ui.js?v=3.2.0}"></script>
|
<script th:src="@{/ruoyi/js/ry-ui.js?v=3.3.0}"></script>
|
||||||
<script th:src="@{/ruoyi/index.js}"></script>
|
<script th:src="@{/ruoyi/index.js}"></script>
|
||||||
<script th:src="@{/ajax/libs/fullscreen/jquery.fullscreen.js}"></script>
|
<script th:src="@{/ajax/libs/fullscreen/jquery.fullscreen.js}"></script>
|
||||||
<script th:inline="javascript">
|
<script th:inline="javascript">
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
<link href="../static/css/font-awesome.min.css" th:href="@{/css/font-awesome.min.css}" rel="stylesheet"/>
|
<link href="../static/css/font-awesome.min.css" th:href="@{/css/font-awesome.min.css}" rel="stylesheet"/>
|
||||||
<link href="../static/css/style.css" th:href="@{/css/style.css}" rel="stylesheet"/>
|
<link href="../static/css/style.css" th:href="@{/css/style.css}" rel="stylesheet"/>
|
||||||
<link href="../static/css/login.min.css" th:href="@{/css/login.min.css}" rel="stylesheet"/>
|
<link href="../static/css/login.min.css" th:href="@{/css/login.min.css}" rel="stylesheet"/>
|
||||||
<link href="../static/ruoyi/css/ry-ui.css" th:href="@{/ruoyi/css/ry-ui.css?v=3.2.0}" rel="stylesheet"/>
|
<link href="../static/ruoyi/css/ry-ui.css" th:href="@{/ruoyi/css/ry-ui.css?v=3.3.0}" rel="stylesheet"/>
|
||||||
<!--[if lt IE 9]>
|
<!--[if lt IE 9]>
|
||||||
<meta http-equiv="refresh" content="0;ie.html" />
|
<meta http-equiv="refresh" content="0;ie.html" />
|
||||||
<![endif]-->
|
<![endif]-->
|
||||||
|
@ -83,7 +83,7 @@
|
||||||
<script src="../static/ajax/libs/layer/layer.min.js" th:src="@{/ajax/libs/layer/layer.min.js}"></script>
|
<script src="../static/ajax/libs/layer/layer.min.js" th:src="@{/ajax/libs/layer/layer.min.js}"></script>
|
||||||
<script src="../static/ajax/libs/blockUI/jquery.blockUI.js" th:src="@{/ajax/libs/blockUI/jquery.blockUI.js}"></script>
|
<script src="../static/ajax/libs/blockUI/jquery.blockUI.js" th:src="@{/ajax/libs/blockUI/jquery.blockUI.js}"></script>
|
||||||
<script src="http://tajs.qq.com/stats?sId=62048022"></script>
|
<script src="http://tajs.qq.com/stats?sId=62048022"></script>
|
||||||
<script src="../static/ruoyi/js/ry-ui.js" th:src="@{/ruoyi/js/ry-ui.js?v=3.2.0}"></script>
|
<script src="../static/ruoyi/js/ry-ui.js" th:src="@{/ruoyi/js/ry-ui.js?v=3.3.0}"></script>
|
||||||
<script src="../static/ruoyi/login.js" th:src="@{/ruoyi/login.js}"></script>
|
<script src="../static/ruoyi/login.js" th:src="@{/ruoyi/login.js}"></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -16,10 +16,11 @@
|
||||||
<div class="row border-bottom white-bg dashboard-header">
|
<div class="row border-bottom white-bg dashboard-header">
|
||||||
<div class="col-sm-12">
|
<div class="col-sm-12">
|
||||||
<blockquote class="text-warning" style="font-size:14px">
|
<blockquote class="text-warning" style="font-size:14px">
|
||||||
领取阿里云1888通用代金券(新老客户均可用)
|
领取阿里云通用云产品1888优惠券
|
||||||
<br><a target="_blank" href="https://promotion.aliyun.com/ntms/yunparter/invite.html?userCode=brki8iof">https://promotion.aliyun.com/ntms/yunparter/invite.html?userCode=brki8iof</a>
|
<br><a target="_blank" href="https://promotion.aliyun.com/ntms/yunparter/invite.html?userCode=brki8iof">https://promotion.aliyun.com/ntms/yunparter/invite.html?userCode=brki8iof</a><br>
|
||||||
<h4 class="text-danger">云产品通用红包,可叠加官网常规优惠使用。</h4>
|
领取腾讯云通用云产品2860优惠券
|
||||||
<h4 class="text-danger">2019阿里云开年Hi购季 云服务器全场限时5折。<a target="_blank" href="https://www.aliyun.com/acts/product-section-2019/new-users?spm=5176.11533457.1089570.1.424777e3bwsfme&userCode=brki8iof">活动入口</a></h4>
|
<br><a target="_blank" href="https://cloud.tencent.com/redirect.php?redirect=1025&cps_key=198c8df2ed259157187173bc7f4f32fd&from=console">https://cloud.tencent.com/redirect.php?redirect=1025&cps_key=198c8df2ed259157187173bc7f4f32fd&from=console</a>
|
||||||
|
<h4 class="text-danger">云产品通用红包,可叠加官网常规优惠使用。(仅限新用户)</h4>
|
||||||
</blockquote>
|
</blockquote>
|
||||||
|
|
||||||
<hr>
|
<hr>
|
||||||
|
@ -95,13 +96,59 @@
|
||||||
<div class="ibox-content no-padding">
|
<div class="ibox-content no-padding">
|
||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
<div class="panel-group" id="version">
|
<div class="panel-group" id="version">
|
||||||
|
<div class="panel panel-default">
|
||||||
|
<div class="panel-heading">
|
||||||
|
<h5 class="panel-title">
|
||||||
|
<a data-toggle="collapse" data-parent="#version" href="#v33">v3.3.0</a><code class="pull-right">2019.04.01</code>
|
||||||
|
</h5>
|
||||||
|
</div>
|
||||||
|
<div id="v33" class="panel-collapse collapse in">
|
||||||
|
<div class="panel-body">
|
||||||
|
<ol>
|
||||||
|
<li>新增线程池统一管理</li>
|
||||||
|
<li>新增支持左右冻结列</li>
|
||||||
|
<li>新增表格字符超长浮动提示</li>
|
||||||
|
<li>升级datepicker拓展并汉化</li>
|
||||||
|
<li>升级druid到最新版本v1.1.14</li>
|
||||||
|
<li>修复个人头像为图片服务器跨域问题</li>
|
||||||
|
<li>修改上传文件按日期存储</li>
|
||||||
|
<li>新增表格客户端分页选项</li>
|
||||||
|
<li>新增表格的高度参数</li>
|
||||||
|
<li>新增表格销毁方法</li>
|
||||||
|
<li>新增表格下拉按钮切换方法</li>
|
||||||
|
<li>新增表格分页跳转到指定页码</li>
|
||||||
|
<li>新增表格启用点击选中行参数</li>
|
||||||
|
<li>修复表格数据重新加载未触发部分按钮禁用</li>
|
||||||
|
<li>使用jsonview展示操作日志参数</li>
|
||||||
|
<li>新增方法(addTab、editTab)</li>
|
||||||
|
<li>修改用户管理界面为Tab打开方式</li>
|
||||||
|
<li>表单验证代码优化</li>
|
||||||
|
<li>修复@Excel注解 prompt 属性使用报错</li>
|
||||||
|
<li>修复combo属性Excel兼容性问题</li>
|
||||||
|
<li>新增@Excel导入导出支持父类字段</li>
|
||||||
|
<li>修复关闭最后选项卡无法激活滚动问题</li>
|
||||||
|
<li>增加日期控件显示类型及回显格式扩展选项</li>
|
||||||
|
<li>修复定时任务执行失败后入库状态为成功状态</li>
|
||||||
|
<li>支持定时任务并发开关控制</li>
|
||||||
|
<li>优化权限校验失败普通请求跳转页面</li>
|
||||||
|
<li>捕获线程池执行任务抛出的异常</li>
|
||||||
|
<li>修复IE浏览器导出功能报错</li>
|
||||||
|
<li>新增角色管理分配用户功能</li>
|
||||||
|
<li>新增表格翻页记住前面的选择</li>
|
||||||
|
<li>调整用户个人中心页面</li>
|
||||||
|
<li>修复界面存在的一些安全问题</li>
|
||||||
|
<li>其他细节优化</li>
|
||||||
|
</ol>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<div class="panel panel-default">
|
<div class="panel panel-default">
|
||||||
<div class="panel-heading">
|
<div class="panel-heading">
|
||||||
<h5 class="panel-title">
|
<h5 class="panel-title">
|
||||||
<a data-toggle="collapse" data-parent="#version" href="#v32">v3.2.0</a><code class="pull-right">2019.01.18</code>
|
<a data-toggle="collapse" data-parent="#version" href="#v32">v3.2.0</a><code class="pull-right">2019.01.18</code>
|
||||||
</h5>
|
</h5>
|
||||||
</div>
|
</div>
|
||||||
<div id="v32" class="panel-collapse collapse in">
|
<div id="v32" class="panel-collapse collapse">
|
||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
<ol>
|
<ol>
|
||||||
<li>部门修改时不允许选择最后节点</li>
|
<li>部门修改时不允许选择最后节点</li>
|
||||||
|
|
|
@ -1,10 +1,9 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org"
|
<html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
|
||||||
xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
|
<head>
|
||||||
<meta charset="utf-8">
|
<th:block th:include="include :: header('登录日志列表')" />
|
||||||
<head th:include="include :: header"></head>
|
</head>
|
||||||
<body class="gray-bg">
|
<body class="gray-bg">
|
||||||
|
|
||||||
<div class="container-div">
|
<div class="container-div">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-sm-12 search-collapse">
|
<div class="col-sm-12 search-collapse">
|
||||||
|
@ -56,7 +55,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div th:include="include :: footer"></div>
|
<th:block th:include="include :: footer" />
|
||||||
<script th:inline="javascript">
|
<script th:inline="javascript">
|
||||||
var datas = [[${@dict.getType('sys_common_status')}]];
|
var datas = [[${@dict.getType('sys_common_status')}]];
|
||||||
var prefix = ctx + "monitor/logininfor";
|
var prefix = ctx + "monitor/logininfor";
|
||||||
|
@ -72,6 +71,7 @@
|
||||||
modalName: "登录日志",
|
modalName: "登录日志",
|
||||||
escape: true,
|
escape: true,
|
||||||
showPageGo: true,
|
showPageGo: true,
|
||||||
|
rememberSelected: true,
|
||||||
columns: [{
|
columns: [{
|
||||||
checkbox: true
|
checkbox: true
|
||||||
},
|
},
|
||||||
|
|
|
@ -1,10 +1,9 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org"
|
<html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
|
||||||
xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
|
<head>
|
||||||
<meta charset="utf-8">
|
<th:block th:include="include :: header('在线用户列表')" />
|
||||||
<head th:include="include :: header"></head>
|
</head>
|
||||||
<body class="gray-bg">
|
<body class="gray-bg">
|
||||||
|
|
||||||
<div class="container-div">
|
<div class="container-div">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-sm-12 search-collapse">
|
<div class="col-sm-12 search-collapse">
|
||||||
|
@ -37,7 +36,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div th:include="include :: footer"></div>
|
<th:block th:include="include :: footer" />
|
||||||
<script th:inline="javascript">
|
<script th:inline="javascript">
|
||||||
var forceFlag = [[${@permission.hasPermi('monitor:online:forceLogout')}]];
|
var forceFlag = [[${@permission.hasPermi('monitor:online:forceLogout')}]];
|
||||||
var prefix = ctx + "monitor/online";
|
var prefix = ctx + "monitor/online";
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org"
|
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
|
||||||
xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
|
<head>
|
||||||
<meta charset="utf-8">
|
<th:block th:include="include :: header('操作日志详细')" />
|
||||||
<head th:include="include :: header"></head>
|
<th:block th:include="include :: jsonview-css" />
|
||||||
<link th:href="@{/ajax/libs/jsonview/jquery.jsonview.css}" rel="stylesheet"/>
|
</head>
|
||||||
<body class="white-bg">
|
<body class="white-bg">
|
||||||
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
|
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
|
||||||
<form class="form-horizontal m-t" id="signupForm">
|
<form class="form-horizontal m-t" id="signupForm">
|
||||||
|
@ -43,8 +43,8 @@
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
<div th:include="include :: footer"></div>
|
<th:block th:include="include :: footer" />
|
||||||
<script th:src="@{/ajax/libs/jsonview/jquery.jsonview.js}"></script>
|
<th:block th:include="include :: jsonview-js" />
|
||||||
<script th:inline="javascript">
|
<script th:inline="javascript">
|
||||||
$(function() {
|
$(function() {
|
||||||
var json = [[${operLog.operParam}]];
|
var json = [[${operLog.operParam}]];
|
||||||
|
|
|
@ -1,10 +1,9 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org"
|
<html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
|
||||||
xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
|
<head>
|
||||||
<meta charset="utf-8">
|
<th:block th:include="include :: header('操作日志列表')" />
|
||||||
<head th:include="include :: header"></head>
|
</head>
|
||||||
<body class="gray-bg">
|
<body class="gray-bg">
|
||||||
|
|
||||||
<div class="container-div">
|
<div class="container-div">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-sm-12 search-collapse">
|
<div class="col-sm-12 search-collapse">
|
||||||
|
@ -56,7 +55,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div th:include="include :: footer"></div>
|
<th:block th:include="include :: footer" />
|
||||||
<script th:inline="javascript">
|
<script th:inline="javascript">
|
||||||
var detailFlag = [[${@permission.hasPermi('monitor:operlog:detail')}]];
|
var detailFlag = [[${@permission.hasPermi('monitor:operlog:detail')}]];
|
||||||
var datas = [[${@dict.getType('sys_oper_type')}]];
|
var datas = [[${@dict.getType('sys_oper_type')}]];
|
||||||
|
@ -74,6 +73,7 @@
|
||||||
modalName: "操作日志",
|
modalName: "操作日志",
|
||||||
escape: true,
|
escape: true,
|
||||||
showPageGo: true,
|
showPageGo: true,
|
||||||
|
rememberSelected: true,
|
||||||
columns: [{
|
columns: [{
|
||||||
checkbox: true
|
checkbox: true
|
||||||
},
|
},
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org"
|
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
|
||||||
xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
|
<head>
|
||||||
<meta charset="utf-8">
|
<th:block th:include="include :: header('服务器监控')" />
|
||||||
<head th:include="include :: header"></head>
|
</head>
|
||||||
<body class="gray-bg" id="test">
|
<body class="gray-bg">
|
||||||
<div class="wrapper wrapper-content">
|
<div class="wrapper wrapper-content">
|
||||||
<div class="col-sm-12">
|
<div class="col-sm-12">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
|
@ -234,7 +234,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
<div th:include="include :: footer"></div>
|
<th:block th:include="include :: footer" />
|
||||||
<script>
|
<script>
|
||||||
$(".modal").appendTo("body"), $("[data-toggle=popover]").popover(), $(".collapse-link").click(function() {
|
$(".modal").appendTo("body"), $("[data-toggle=popover]").popover(), $(".collapse-link").click(function() {
|
||||||
var div_ibox = $(this).closest("div.ibox"),
|
var div_ibox = $(this).closest("div.ibox"),
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
|
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
|
||||||
<meta charset="utf-8">
|
<head>
|
||||||
<head th:include="include :: header"></head>
|
<th:block th:include="include :: header('新增参数')" />
|
||||||
|
</head>
|
||||||
<body class="white-bg">
|
<body class="white-bg">
|
||||||
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
|
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
|
||||||
<form class="form-horizontal m" id="form-config-add" name="form-config-add">
|
<form class="form-horizontal m" id="form-config-add" name="form-config-add">
|
||||||
|
@ -40,7 +41,7 @@
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
<div th:include="include::footer"></div>
|
<th:block th:include="include :: footer" />
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var prefix = ctx + "system/config";
|
var prefix = ctx + "system/config";
|
||||||
|
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
|
<html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
|
||||||
<meta charset="utf-8">
|
<head>
|
||||||
<head th:include="include :: header"></head>
|
<th:block th:include="include :: header('参数列表')" />
|
||||||
|
</head>
|
||||||
<body class="gray-bg">
|
<body class="gray-bg">
|
||||||
|
|
||||||
<div class="container-div">
|
<div class="container-div">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-sm-12 search-collapse">
|
<div class="col-sm-12 search-collapse">
|
||||||
|
@ -56,7 +56,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div th:include="include :: footer"></div>
|
<th:block th:include="include :: footer" />
|
||||||
<script th:inline="javascript">
|
<script th:inline="javascript">
|
||||||
var editFlag = [[${@permission.hasPermi('system:config:edit')}]];
|
var editFlag = [[${@permission.hasPermi('system:config:edit')}]];
|
||||||
var removeFlag = [[${@permission.hasPermi('system:config:remove')}]];
|
var removeFlag = [[${@permission.hasPermi('system:config:remove')}]];
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
|
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
|
||||||
<meta charset="utf-8">
|
<head>
|
||||||
<head th:include="include :: header"></head>
|
<th:block th:include="include :: header('修改参数')" />
|
||||||
|
</head>
|
||||||
<body class="white-bg">
|
<body class="white-bg">
|
||||||
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
|
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
|
||||||
<form class="form-horizontal m" id="form-config-edit" th:object="${config}">
|
<form class="form-horizontal m" id="form-config-edit" th:object="${config}">
|
||||||
|
@ -41,7 +42,7 @@
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
<div th:include="include::footer"></div>
|
<th:block th:include="include :: footer" />
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var prefix = ctx + "system/config";
|
var prefix = ctx + "system/config";
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
|
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
|
||||||
<meta charset="utf-8">
|
<head>
|
||||||
<head th:include="include :: header"></head>
|
<th:block th:include="include :: header('新增部门')" />
|
||||||
|
</head>
|
||||||
<body class="white-bg">
|
<body class="white-bg">
|
||||||
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
|
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
|
||||||
<form class="form-horizontal m" id="form-dept-add">
|
<form class="form-horizontal m" id="form-dept-add">
|
||||||
|
@ -56,7 +57,7 @@
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
<div th:include="include::footer"></div>
|
<th:block th:include="include :: footer" />
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var prefix = ctx + "system/dept";
|
var prefix = ctx + "system/dept";
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org"
|
<html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
|
||||||
xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
|
<head>
|
||||||
<meta charset="utf-8">
|
<th:block th:include="include :: header('部门列表')" />
|
||||||
<head th:include="include :: header"></head>
|
</head>
|
||||||
<body class="gray-bg">
|
<body class="gray-bg">
|
||||||
<div class="container-div">
|
<div class="container-div">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
|
@ -44,7 +44,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div th:include="include :: footer"></div>
|
<th:block th:include="include :: footer" />
|
||||||
<script th:inline="javascript">
|
<script th:inline="javascript">
|
||||||
var addFlag = [[${@permission.hasPermi('system:dept:add')}]];
|
var addFlag = [[${@permission.hasPermi('system:dept:add')}]];
|
||||||
var editFlag = [[${@permission.hasPermi('system:dept:edit')}]];
|
var editFlag = [[${@permission.hasPermi('system:dept:edit')}]];
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
|
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
|
||||||
<meta charset="utf-8">
|
<head>
|
||||||
<head th:include="include :: header"></head>
|
<th:block th:include="include :: header('修改部门')" />
|
||||||
|
</head>
|
||||||
<body class="white-bg">
|
<body class="white-bg">
|
||||||
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
|
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
|
||||||
<form class="form-horizontal m" id="form-dept-edit" th:object="${dept}">
|
<form class="form-horizontal m" id="form-dept-edit" th:object="${dept}">
|
||||||
|
@ -57,7 +58,7 @@
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
<div th:include="include::footer"></div>
|
<th:block th:include="include :: footer" />
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var prefix = ctx + "system/dept";
|
var prefix = ctx + "system/dept";
|
||||||
|
|
||||||
|
|
|
@ -1,11 +1,12 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
|
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
|
||||||
<meta charset="utf-8">
|
<head>
|
||||||
<head th:include="include :: header"></head>
|
<th:block th:include="include :: header('部门树选择')" />
|
||||||
<link th:href="@{/ajax/libs/jquery-ztree/3.5/css/metro/zTreeStyle.css}" rel="stylesheet"/>
|
<th:block th:include="include :: ztree-css" />
|
||||||
|
</head>
|
||||||
<style>
|
<style>
|
||||||
body{height:auto;font-family: "Microsoft YaHei";}
|
body{height:auto;font-family: "Microsoft YaHei";}
|
||||||
button{font-family: "SimSun","Helvetica Neue",Helvetica,Arial;}
|
button{font-family: "SimSun","Helvetica Neue",Helvetica,Arial;}
|
||||||
</style>
|
</style>
|
||||||
<body class="hold-transition box box-main">
|
<body class="hold-transition box box-main">
|
||||||
<input id="treeId" name="treeId" type="hidden" th:value="${dept.deptId}"/>
|
<input id="treeId" name="treeId" type="hidden" th:value="${dept.deptId}"/>
|
||||||
|
@ -24,8 +25,8 @@ button{font-family: "SimSun","Helvetica Neue",Helvetica,Arial;}
|
||||||
</div>
|
</div>
|
||||||
<div id="tree" class="ztree treeselect"></div>
|
<div id="tree" class="ztree treeselect"></div>
|
||||||
</div>
|
</div>
|
||||||
<div th:include="include::footer"></div>
|
<th:block th:include="include :: footer" />
|
||||||
<script th:src="@{/ajax/libs/jquery-ztree/3.5/js/jquery.ztree.all-3.5.js}"></script>
|
<th:block th:include="include :: ztree-js" />
|
||||||
<script th:inline="javascript">
|
<script th:inline="javascript">
|
||||||
$(function() {
|
$(function() {
|
||||||
var url = ctx + "system/dept/treeData";
|
var url = ctx + "system/dept/treeData";
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
|
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
|
||||||
<meta charset="utf-8">
|
<head>
|
||||||
<head th:include="include :: header"></head>
|
<th:block th:include="include :: header('新增字典数据')" />
|
||||||
|
</head>
|
||||||
<body class="white-bg">
|
<body class="white-bg">
|
||||||
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
|
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
|
||||||
<form class="form-horizontal m" id="form-dict-add">
|
<form class="form-horizontal m" id="form-dict-add">
|
||||||
|
@ -76,7 +77,7 @@
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
<div th:include="include::footer"></div>
|
<th:block th:include="include :: footer" />
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var prefix = ctx + "system/dict/data";
|
var prefix = ctx + "system/dict/data";
|
||||||
|
|
||||||
|
|
|
@ -1,10 +1,9 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org"
|
<html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
|
||||||
xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
|
<head>
|
||||||
<meta charset="utf-8">
|
<th:block th:include="include :: header('字典数据列表')" />
|
||||||
<head th:include="include :: header"></head>
|
</head>
|
||||||
<body class="gray-bg">
|
<body class="gray-bg">
|
||||||
|
|
||||||
<div class="container-div">
|
<div class="container-div">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-sm-12 search-collapse">
|
<div class="col-sm-12 search-collapse">
|
||||||
|
@ -54,8 +53,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div th:include="include :: footer"></div>
|
<th:block th:include="include :: footer" />
|
||||||
<script th:src="@{/ajax/libs/select/select2.js}"></script>
|
|
||||||
<script th:inline="javascript">
|
<script th:inline="javascript">
|
||||||
var editFlag = [[${@permission.hasPermi('system:dict:edit')}]];
|
var editFlag = [[${@permission.hasPermi('system:dict:edit')}]];
|
||||||
var removeFlag = [[${@permission.hasPermi('system:dict:remove')}]];
|
var removeFlag = [[${@permission.hasPermi('system:dict:remove')}]];
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
|
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
|
||||||
<meta charset="utf-8">
|
<head>
|
||||||
<head th:include="include :: header"></head>
|
<th:block th:include="include :: header('修改字典数据')" />
|
||||||
|
</head>
|
||||||
<body class="white-bg">
|
<body class="white-bg">
|
||||||
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
|
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
|
||||||
<form class="form-horizontal m" id="form-dict-edit" th:object="${dict}">
|
<form class="form-horizontal m" id="form-dict-edit" th:object="${dict}">
|
||||||
|
@ -77,7 +78,7 @@
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
<div th:include="include::footer"></div>
|
<th:block th:include="include :: footer" />
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var prefix = ctx + "system/dict/data";
|
var prefix = ctx + "system/dict/data";
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html xmlns:th="http://www.w3.org/1999/xhtml">
|
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
|
||||||
<meta charset="utf-8">
|
<head>
|
||||||
<head th:include="include :: header"></head>
|
<th:block th:include="include :: header('新增字典类型')" />
|
||||||
|
</head>
|
||||||
<body class="white-bg">
|
<body class="white-bg">
|
||||||
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
|
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
|
||||||
<form class="form-horizontal m" id="form-dict-add">
|
<form class="form-horizontal m" id="form-dict-add">
|
||||||
|
@ -34,7 +35,7 @@
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
<div th:include="include::footer"></div>
|
<th:block th:include="include :: footer" />
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var prefix = ctx + "system/dict";
|
var prefix = ctx + "system/dict";
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html xmlns:th="http://www.w3.org/1999/xhtml">
|
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
|
||||||
<meta charset="utf-8">
|
<head>
|
||||||
<head th:include="include :: header"></head>
|
<th:block th:include="include :: header('修改字典类型')" />
|
||||||
|
</head>
|
||||||
<body class="white-bg">
|
<body class="white-bg">
|
||||||
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
|
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
|
||||||
<form class="form-horizontal m" id="form-dict-edit" th:object="${dict}">
|
<form class="form-horizontal m" id="form-dict-edit" th:object="${dict}">
|
||||||
|
@ -35,7 +36,7 @@
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
<div th:include="include::footer"></div>
|
<th:block th:include="include :: footer" />
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var prefix = ctx + "system/dict";
|
var prefix = ctx + "system/dict";
|
||||||
|
|
||||||
|
|
|
@ -1,10 +1,9 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="zh_CN" xmlns:th="http://www.thymeleaf.org"
|
<html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
|
||||||
xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
|
<head>
|
||||||
<meta charset="utf-8">
|
<th:block th:include="include :: header('字典类型列表')" />
|
||||||
<head th:include="include :: header"></head>
|
</head>
|
||||||
<body class="gray-bg">
|
<body class="gray-bg">
|
||||||
|
|
||||||
<div class="container-div">
|
<div class="container-div">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-sm-12 search-collapse">
|
<div class="col-sm-12 search-collapse">
|
||||||
|
@ -58,7 +57,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div th:include="include :: footer"></div>
|
<th:block th:include="include :: footer" />
|
||||||
<script th:inline="javascript">
|
<script th:inline="javascript">
|
||||||
var editFlag = [[${@permission.hasPermi('system:dict:edit')}]];
|
var editFlag = [[${@permission.hasPermi('system:dict:edit')}]];
|
||||||
var listFlag = [[${@permission.hasPermi('system:dict:list')}]];
|
var listFlag = [[${@permission.hasPermi('system:dict:list')}]];
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
|
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
|
||||||
<meta charset="utf-8">
|
<head>
|
||||||
<head th:include="include :: header"></head>
|
<th:block th:include="include :: header('新增菜单')" />
|
||||||
|
</head>
|
||||||
<body class="white-bg">
|
<body class="white-bg">
|
||||||
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
|
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
|
||||||
<form class="form-horizontal m" id="form-menu-add">
|
<form class="form-horizontal m" id="form-menu-add">
|
||||||
|
@ -69,7 +70,7 @@
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
<div th:include="include::footer"></div>
|
<th:block th:include="include :: footer" />
|
||||||
<script>
|
<script>
|
||||||
var prefix = ctx + "system/menu";
|
var prefix = ctx + "system/menu";
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
|
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
|
||||||
<meta charset="utf-8">
|
<head>
|
||||||
<head th:include="include :: header"></head>
|
<th:block th:include="include :: header('修改菜单')" />
|
||||||
|
</head>
|
||||||
<body class="white-bg">
|
<body class="white-bg">
|
||||||
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
|
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
|
||||||
<form class="form-horizontal m" id="form-menu-edit" th:object="${menu}">
|
<form class="form-horizontal m" id="form-menu-edit" th:object="${menu}">
|
||||||
|
@ -70,7 +71,7 @@
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
<div th:include="include::footer"></div>
|
<th:block th:include="include :: footer" />
|
||||||
<script>
|
<script>
|
||||||
var prefix = ctx + "system/menu";
|
var prefix = ctx + "system/menu";
|
||||||
|
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
|
<html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
|
||||||
<meta charset="utf-8">
|
<head>
|
||||||
<head th:include="include :: header"></head>
|
<th:block th:include="include :: header('菜单列表')" />
|
||||||
|
</head>
|
||||||
<body class="gray-bg">
|
<body class="gray-bg">
|
||||||
|
|
||||||
<div class="container-div">
|
<div class="container-div">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-sm-12 search-collapse">
|
<div class="col-sm-12 search-collapse">
|
||||||
|
@ -45,7 +45,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div th:include="include :: footer"></div>
|
<th:block th:include="include :: footer" />
|
||||||
<script th:inline="javascript">
|
<script th:inline="javascript">
|
||||||
var addFlag = [[${@permission.hasPermi('system:menu:add')}]];
|
var addFlag = [[${@permission.hasPermi('system:menu:add')}]];
|
||||||
var editFlag = [[${@permission.hasPermi('system:menu:edit')}]];
|
var editFlag = [[${@permission.hasPermi('system:menu:edit')}]];
|
||||||
|
|
|
@ -1,11 +1,12 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
|
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
|
||||||
<meta charset="utf-8">
|
<head>
|
||||||
<head th:include="include :: header"></head>
|
<th:block th:include="include :: header('菜单树选择')" />
|
||||||
<link th:href="@{/ajax/libs/jquery-ztree/3.5/css/metro/zTreeStyle.css}" rel="stylesheet"/>
|
<th:block th:include="include :: ztree-css" />
|
||||||
|
</head>
|
||||||
<style>
|
<style>
|
||||||
body{height:auto;font-family: "Microsoft YaHei";}
|
body{height:auto;font-family: "Microsoft YaHei";}
|
||||||
button{font-family: "SimSun","Helvetica Neue",Helvetica,Arial;}
|
button{font-family: "SimSun","Helvetica Neue",Helvetica,Arial;}
|
||||||
</style>
|
</style>
|
||||||
<body class="hold-transition box box-main">
|
<body class="hold-transition box box-main">
|
||||||
<input id="treeId" name="treeId" type="hidden" th:value="${menu.menuId}"/>
|
<input id="treeId" name="treeId" type="hidden" th:value="${menu.menuId}"/>
|
||||||
|
@ -24,8 +25,8 @@ button{font-family: "SimSun","Helvetica Neue",Helvetica,Arial;}
|
||||||
</div>
|
</div>
|
||||||
<div id="tree" class="ztree treeselect"></div>
|
<div id="tree" class="ztree treeselect"></div>
|
||||||
</div>
|
</div>
|
||||||
<div th:include="include::footer"></div>
|
<th:block th:include="include :: footer" />
|
||||||
<script th:src="@{/ajax/libs/jquery-ztree/3.5/js/jquery.ztree.all-3.5.js}"></script>
|
<th:block th:include="include :: ztree-js" />
|
||||||
<script th:inline="javascript">
|
<script th:inline="javascript">
|
||||||
$(function() {
|
$(function() {
|
||||||
var url = ctx + "system/menu/menuTreeData";
|
var url = ctx + "system/menu/menuTreeData";
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
<!DOCTYPE HTML>
|
<!DOCTYPE html>
|
||||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org">
|
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
|
||||||
<meta charset="utf-8">
|
<head>
|
||||||
<head th:include="include :: header"></head>
|
<th:block th:include="include :: header('新增通知公告')" />
|
||||||
<link th:href="@{/ajax/libs/summernote/summernote.css}" rel="stylesheet"/>
|
<th:block th:include="include :: summernote-css" />
|
||||||
<link th:href="@{/ajax/libs/summernote/summernote-bs3.css}" rel="stylesheet"/>
|
</head>
|
||||||
<body class="white-bg">
|
<body class="white-bg">
|
||||||
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
|
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
|
||||||
<form class="form-horizontal m" id="form-notice-add">
|
<form class="form-horizontal m" id="form-notice-add">
|
||||||
|
@ -39,9 +39,8 @@
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
<div th:include="include::footer"></div>
|
<th:block th:include="include :: footer" />
|
||||||
<script th:src="@{/ajax/libs/summernote/summernote.min.js}"></script>
|
<th:block th:include="include :: summernote-js" />
|
||||||
<script th:src="@{/ajax/libs/summernote/summernote-zh-CN.js}"></script>
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var prefix = ctx + "system/notice";
|
var prefix = ctx + "system/notice";
|
||||||
|
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
<!DOCTYPE HTML>
|
<!DOCTYPE html>
|
||||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org">
|
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
|
||||||
<meta charset="utf-8">
|
<head>
|
||||||
<head th:include="include :: header"></head>
|
<th:block th:include="include :: header('修改通知公告')" />
|
||||||
<link th:href="@{/ajax/libs/summernote/summernote.css}" rel="stylesheet"/>
|
<th:block th:include="include :: summernote-css" />
|
||||||
<link th:href="@{/ajax/libs/summernote/summernote-bs3.css}" rel="stylesheet"/>
|
</head>
|
||||||
<body class="white-bg">
|
<body class="white-bg">
|
||||||
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
|
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
|
||||||
<form class="form-horizontal m" id="form-notice-edit" th:object="${notice}">
|
<form class="form-horizontal m" id="form-notice-edit" th:object="${notice}">
|
||||||
|
@ -40,9 +40,8 @@
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
<div th:include="include::footer"></div>
|
<th:block th:include="include :: footer" />
|
||||||
<script th:src="@{/ajax/libs/summernote/summernote.min.js}"></script>
|
<th:block th:include="include :: summernote-js" />
|
||||||
<script th:src="@{/ajax/libs/summernote/summernote-zh-CN.js}"></script>
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var prefix = ctx + "system/notice";
|
var prefix = ctx + "system/notice";
|
||||||
|
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
<!DOCTYPE HTML>
|
<!DOCTYPE html>
|
||||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
|
<html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
|
||||||
<meta charset="utf-8">
|
<head>
|
||||||
<head th:include="include :: header"></head>
|
<th:block th:include="include :: header('通知公告列表')" />
|
||||||
|
</head>
|
||||||
<body class="gray-bg">
|
<body class="gray-bg">
|
||||||
|
|
||||||
<div class="container-div">
|
<div class="container-div">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-sm-12 search-collapse">
|
<div class="col-sm-12 search-collapse">
|
||||||
|
@ -48,7 +48,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div th:include="include :: footer"></div>
|
<th:block th:include="include :: footer" />
|
||||||
<script th:inline="javascript">
|
<script th:inline="javascript">
|
||||||
var editFlag = [[${@permission.hasPermi('system:notice:edit')}]];
|
var editFlag = [[${@permission.hasPermi('system:notice:edit')}]];
|
||||||
var removeFlag = [[${@permission.hasPermi('system:notice:remove')}]];
|
var removeFlag = [[${@permission.hasPermi('system:notice:remove')}]];
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
|
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
|
||||||
<meta charset="utf-8">
|
<head>
|
||||||
<head th:include="include :: header"></head>
|
<th:block th:include="include :: header('新增岗位')" />
|
||||||
|
</head>
|
||||||
<body class="white-bg">
|
<body class="white-bg">
|
||||||
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
|
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
|
||||||
<form class="form-horizontal m" id="form-post-add">
|
<form class="form-horizontal m" id="form-post-add">
|
||||||
|
@ -40,7 +41,7 @@
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
<div th:include="include::footer"></div>
|
<th:block th:include="include :: footer" />
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var prefix = ctx + "system/post";
|
var prefix = ctx + "system/post";
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
|
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
|
||||||
<meta charset="utf-8">
|
<head>
|
||||||
<head th:include="include :: header"></head>
|
<th:block th:include="include :: header('修改岗位')" />
|
||||||
|
</head>
|
||||||
<body class="white-bg">
|
<body class="white-bg">
|
||||||
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
|
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
|
||||||
<form class="form-horizontal m" id="form-post-edit" th:object="${post}">
|
<form class="form-horizontal m" id="form-post-edit" th:object="${post}">
|
||||||
|
@ -41,7 +42,7 @@
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
<div th:include="include::footer"></div>
|
<th:block th:include="include :: footer" />
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var prefix = ctx + "system/post";
|
var prefix = ctx + "system/post";
|
||||||
|
|
||||||
|
|
|
@ -1,10 +1,9 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org"
|
<html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
|
||||||
xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
|
<head>
|
||||||
<meta charset="utf-8">
|
<th:block th:include="include :: header('岗位列表')" />
|
||||||
<head th:include="include :: header"></head>
|
</head>
|
||||||
<body class="gray-bg">
|
<body class="gray-bg">
|
||||||
|
|
||||||
<div class="container-div">
|
<div class="container-div">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-sm-12 search-collapse">
|
<div class="col-sm-12 search-collapse">
|
||||||
|
@ -52,7 +51,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div th:include="include :: footer"></div>
|
<th:block th:include="include :: footer" />
|
||||||
<script th:inline="javascript">
|
<script th:inline="javascript">
|
||||||
var editFlag = [[${@permission.hasPermi('system:post:edit')}]];
|
var editFlag = [[${@permission.hasPermi('system:post:edit')}]];
|
||||||
var removeFlag = [[${@permission.hasPermi('system:post:remove')}]];
|
var removeFlag = [[${@permission.hasPermi('system:post:remove')}]];
|
||||||
|
|
|
@ -1,8 +1,9 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
|
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
|
||||||
<meta charset="utf-8">
|
<head>
|
||||||
<head th:include="include :: header"></head>
|
<th:block th:include="include :: header('新增角色')" />
|
||||||
<link th:href="@{/ajax/libs/jquery-ztree/3.5/css/metro/zTreeStyle.css}" rel="stylesheet"/>
|
<th:block th:include="include :: ztree-css" />
|
||||||
|
</head>
|
||||||
<body class="white-bg">
|
<body class="white-bg">
|
||||||
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
|
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
|
||||||
<form class="form-horizontal m" id="form-role-add">
|
<form class="form-horizontal m" id="form-role-add">
|
||||||
|
@ -50,8 +51,8 @@
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
<div th:include="include::footer"></div>
|
<th:block th:include="include :: footer" />
|
||||||
<script th:src="@{/ajax/libs/jquery-ztree/3.5/js/jquery.ztree.all-3.5.js}"></script>
|
<th:block th:include="include :: ztree-js" />
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
$(function() {
|
$(function() {
|
||||||
var url = ctx + "system/menu/roleMenuTreeData";
|
var url = ctx + "system/menu/roleMenuTreeData";
|
||||||
|
|
|
@ -0,0 +1,154 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
|
||||||
|
<head>
|
||||||
|
<th:block th:include="include :: header('角色用户分配')" />
|
||||||
|
</head>
|
||||||
|
<body class="gray-bg">
|
||||||
|
<div class="container-div">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-12 search-collapse">
|
||||||
|
<form id="role-form">
|
||||||
|
<input type="hidden" id="roleId" name="roleId" th:value="${role.roleId}">
|
||||||
|
<div class="select-list">
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
登录名称:<input type="text" name="loginName"/>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
手机号码:<input type="text" name="phonenumber"/>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i> 搜索</a>
|
||||||
|
<a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset()"><i class="fa fa-refresh"></i> 重置</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="btn-group-sm" id="toolbar" role="group">
|
||||||
|
<a class="btn btn-success" onclick="selectUser()" shiro:hasPermission="system:role:add">
|
||||||
|
<i class="fa fa-plus"></i> 分配用户
|
||||||
|
</a>
|
||||||
|
<a class="btn btn-danger btn-del disabled" onclick="cancelAuthUserAll()" shiro:hasPermission="system:role:remove">
|
||||||
|
<i class="fa fa-remove"></i> 批量取消授权
|
||||||
|
</a>
|
||||||
|
<a class="btn btn-warning" onclick="closeItem()">
|
||||||
|
<i class="fa fa-reply-all"></i> 关闭
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-sm-12 select-table table-striped">
|
||||||
|
<table id="bootstrap-table" data-mobile-responsive="true"></table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<th:block th:include="include :: footer" />
|
||||||
|
<script th:inline="javascript">
|
||||||
|
var removeFlag = [[${@permission.hasPermi('system:role:remove')}]];
|
||||||
|
var datas = [[${@dict.getType('sys_normal_disable')}]];
|
||||||
|
var prefix = ctx + "system/role/authUser";
|
||||||
|
|
||||||
|
$(function() {
|
||||||
|
var options = {
|
||||||
|
url: prefix + "/allocatedList",
|
||||||
|
createUrl: prefix + "/add",
|
||||||
|
updateUrl: prefix + "/edit/{id}",
|
||||||
|
removeUrl: prefix + "/remove",
|
||||||
|
exportUrl: prefix + "/export",
|
||||||
|
importUrl: prefix + "/importData",
|
||||||
|
importTemplateUrl: prefix + "/importTemplate",
|
||||||
|
queryParams: queryParams,
|
||||||
|
sortName: "createTime",
|
||||||
|
sortOrder: "desc",
|
||||||
|
modalName: "用户",
|
||||||
|
columns: [{
|
||||||
|
checkbox: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'userId',
|
||||||
|
title: '用户ID',
|
||||||
|
visible: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'loginName',
|
||||||
|
title: '登录名称',
|
||||||
|
sortable: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'userName',
|
||||||
|
title: '用户名称'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'email',
|
||||||
|
title: '邮箱'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'phonenumber',
|
||||||
|
title: '手机'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'status',
|
||||||
|
title: '用户状态',
|
||||||
|
align: 'center',
|
||||||
|
formatter: function (value, row, index) {
|
||||||
|
return $.table.selectDictLabel(datas, value);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'createTime',
|
||||||
|
title: '创建时间',
|
||||||
|
sortable: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '操作',
|
||||||
|
align: 'center',
|
||||||
|
formatter: function(value, row, index) {
|
||||||
|
var actions = [];
|
||||||
|
actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="#" onclick="cancelAuthUser(\'' + row.userId + '\')"><i class="fa fa-remove"></i>取消授权</a> ');
|
||||||
|
return actions.join('');
|
||||||
|
}
|
||||||
|
}]
|
||||||
|
};
|
||||||
|
$.table.init(options);
|
||||||
|
});
|
||||||
|
|
||||||
|
function queryParams(params) {
|
||||||
|
return {
|
||||||
|
roleId: $("#roleId").val(),
|
||||||
|
pageSize: params.limit,
|
||||||
|
pageNum: params.offset / params.limit + 1,
|
||||||
|
searchValue: params.search,
|
||||||
|
orderByColumn: params.sort,
|
||||||
|
isAsc: params.order
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 分配用户-选择用户 */
|
||||||
|
function selectUser() {
|
||||||
|
var url = prefix + '/selectUser/' + $("#roleId").val();
|
||||||
|
$.modal.open("选择用户", url);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 分配用户-批量取消授权 */
|
||||||
|
function cancelAuthUserAll(userId) {
|
||||||
|
var rows = $.table.selectFirstColumns();
|
||||||
|
if (rows.length == 0) {
|
||||||
|
$.modal.alertWarning("请至少选择一条记录");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
$.modal.confirm("确认要删除选中的" + rows.length + "条数据吗?", function() {
|
||||||
|
var data = { "roleId": $("#roleId").val(), "userIds": rows.join() };
|
||||||
|
$.operate.submit(prefix + "/cancelAll", "post", "json", data);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 分配用户-取消授权 */
|
||||||
|
function cancelAuthUser(userId) {
|
||||||
|
$.modal.confirm("确认要取消该用户角色吗?", function() {
|
||||||
|
$.operate.post(prefix + "/cancel", { "roleId": $("#roleId").val(), "userId": userId });
|
||||||
|
})
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -1,8 +1,9 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
|
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
|
||||||
<meta charset="utf-8">
|
<head>
|
||||||
<head th:include="include :: header"></head>
|
<th:block th:include="include :: header('角色数据权限')" />
|
||||||
<link th:href="@{/ajax/libs/jquery-ztree/3.5/css/metro/zTreeStyle.css}" rel="stylesheet"/>
|
<th:block th:include="include :: ztree-css" />
|
||||||
|
</head>
|
||||||
<body class="white-bg">
|
<body class="white-bg">
|
||||||
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
|
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
|
||||||
<form class="form-horizontal m" id="form-role-edit" th:object="${role}">
|
<form class="form-horizontal m" id="form-role-edit" th:object="${role}">
|
||||||
|
@ -29,7 +30,7 @@
|
||||||
<span class="help-block m-b-none"><i class="fa fa-info-circle"></i> 特殊情况下,设置为“自定数据权限”</span>
|
<span class="help-block m-b-none"><i class="fa fa-info-circle"></i> 特殊情况下,设置为“自定数据权限”</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group" id="roleRule" th:style="'display:' + @{(*{dataScope=='1'} ? 'none' : 'block')} + ''">
|
<div class="form-group" id="authDataScope" th:style="'display:' + @{(*{dataScope=='1'} ? 'none' : 'block')} + ''">
|
||||||
<label class="col-sm-3 control-label">数据权限</label>
|
<label class="col-sm-3 control-label">数据权限</label>
|
||||||
<div class="col-sm-8">
|
<div class="col-sm-8">
|
||||||
<div id="deptTrees" class="ztree"></div>
|
<div id="deptTrees" class="ztree"></div>
|
||||||
|
@ -37,8 +38,8 @@
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
<div th:include="include::footer"></div>
|
<th:block th:include="include :: footer" />
|
||||||
<script th:src="@{/ajax/libs/jquery-ztree/3.5/js/jquery.ztree.all-3.5.js}"></script>
|
<th:block th:include="include :: ztree-js" />
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
|
|
||||||
$(function() {
|
$(function() {
|
||||||
|
@ -67,7 +68,7 @@
|
||||||
$.ajax({
|
$.ajax({
|
||||||
cache : true,
|
cache : true,
|
||||||
type : "POST",
|
type : "POST",
|
||||||
url : ctx + "system/role/rule",
|
url : ctx + "system/role/authDataScope",
|
||||||
data : {
|
data : {
|
||||||
"roleId": roleId,
|
"roleId": roleId,
|
||||||
"roleName": roleName,
|
"roleName": roleName,
|
||||||
|
@ -92,10 +93,10 @@
|
||||||
|
|
||||||
function dataScopeVisible(dataScope) {
|
function dataScopeVisible(dataScope) {
|
||||||
if (dataScope == 2) {
|
if (dataScope == 2) {
|
||||||
$("#roleRule").show();
|
$("#authDataScope").show();
|
||||||
} else {
|
} else {
|
||||||
$._tree.checkAllNodes(false);
|
$._tree.checkAllNodes(false);
|
||||||
$("#roleRule").hide();
|
$("#authDataScope").hide();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
|
@ -1,8 +1,9 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
|
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
|
||||||
<meta charset="utf-8">
|
<head>
|
||||||
<head th:include="include :: header"></head>
|
<th:block th:include="include :: header('修改角色')" />
|
||||||
<link th:href="@{/ajax/libs/jquery-ztree/3.5/css/metro/zTreeStyle.css}" rel="stylesheet"/>
|
<th:block th:include="include :: ztree-css" />
|
||||||
|
</head>
|
||||||
<body class="white-bg">
|
<body class="white-bg">
|
||||||
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
|
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
|
||||||
<form class="form-horizontal m" id="form-role-edit" th:object="${role}">
|
<form class="form-horizontal m" id="form-role-edit" th:object="${role}">
|
||||||
|
@ -51,8 +52,8 @@
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
<div th:include="include::footer"></div>
|
<th:block th:include="include :: footer" />
|
||||||
<script th:src="@{/ajax/libs/jquery-ztree/3.5/js/jquery.ztree.all-3.5.js}"></script>
|
<th:block th:include="include :: ztree-js" />
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
$(function() {
|
$(function() {
|
||||||
var url = ctx + "system/menu/roleMenuTreeData?roleId=" + $("#roleId").val();
|
var url = ctx + "system/menu/roleMenuTreeData?roleId=" + $("#roleId").val();
|
||||||
|
|
|
@ -1,10 +1,9 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org"
|
<html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
|
||||||
xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
|
<head>
|
||||||
<meta charset="utf-8">
|
<th:block th:include="include :: header('角色列表')" />
|
||||||
<head th:include="include :: header"></head>
|
</head>
|
||||||
<body class="gray-bg">
|
<body class="gray-bg">
|
||||||
|
|
||||||
<div class="container-div">
|
<div class="container-div">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-sm-12 search-collapse">
|
<div class="col-sm-12 search-collapse">
|
||||||
|
@ -58,7 +57,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div th:include="include :: footer"></div>
|
<th:block th:include="include :: footer" />
|
||||||
<script th:inline="javascript">
|
<script th:inline="javascript">
|
||||||
var editFlag = [[${@permission.hasPermi('system:role:edit')}]];
|
var editFlag = [[${@permission.hasPermi('system:role:edit')}]];
|
||||||
var removeFlag = [[${@permission.hasPermi('system:role:remove')}]];
|
var removeFlag = [[${@permission.hasPermi('system:role:remove')}]];
|
||||||
|
@ -116,8 +115,9 @@
|
||||||
formatter: function(value, row, index) {
|
formatter: function(value, row, index) {
|
||||||
var actions = [];
|
var actions = [];
|
||||||
actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="#" onclick="$.operate.edit(\'' + row.roleId + '\')"><i class="fa fa-edit"></i>编辑</a> ');
|
actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="#" onclick="$.operate.edit(\'' + row.roleId + '\')"><i class="fa fa-edit"></i>编辑</a> ');
|
||||||
actions.push('<a class="btn btn-primary btn-xs ' + editFlag + '" href="#" onclick="rule(\'' + row.roleId + '\')"><i class="fa fa-check-square-o"></i>数据权限</a> ');
|
actions.push('<a class="btn btn-primary btn-xs ' + editFlag + '" href="#" onclick="authDataScope(\'' + row.roleId + '\')"><i class="fa fa-check-square-o"></i>数据权限</a> ');
|
||||||
actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="#" onclick="$.operate.remove(\'' + row.roleId + '\')"><i class="fa fa-remove"></i>删除</a>');
|
actions.push('<a class="btn btn-info btn-xs ' + editFlag + '" href="#" onclick="authUser(\'' + row.roleId + '\')"><i class="fa fa-user"></i>分配用户</a> ');
|
||||||
|
actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="#" onclick="$.operate.remove(\'' + row.roleId + '\')"><i class="fa fa-remove"></i>删除</a> ');
|
||||||
return actions.join('');
|
return actions.join('');
|
||||||
}
|
}
|
||||||
}]
|
}]
|
||||||
|
@ -126,11 +126,17 @@
|
||||||
});
|
});
|
||||||
|
|
||||||
/* 角色管理-分配数据权限 */
|
/* 角色管理-分配数据权限 */
|
||||||
function rule(roleId) {
|
function authDataScope(roleId) {
|
||||||
var url = prefix + '/rule/' + roleId;
|
var url = prefix + '/authDataScope/' + roleId;
|
||||||
$.modal.open("分配数据权限", url);
|
$.modal.open("分配数据权限", url);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* 角色管理-分配用户 */
|
||||||
|
function authUser(roleId) {
|
||||||
|
var url = prefix + '/authUser/' + roleId;
|
||||||
|
$.modal.openTab("分配用户", url);
|
||||||
|
}
|
||||||
|
|
||||||
/* 角色状态显示 */
|
/* 角色状态显示 */
|
||||||
function statusTools(row) {
|
function statusTools(row) {
|
||||||
if (row.status == 1) {
|
if (row.status == 1) {
|
||||||
|
|
|
@ -0,0 +1,124 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
|
||||||
|
<head>
|
||||||
|
<th:block th:include="include :: header('分配角色选择用户')" />
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body class="gray-bg">
|
||||||
|
<div class="container-div">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-12 search-collapse">
|
||||||
|
<form id="role-form">
|
||||||
|
<input type="hidden" id="roleId" name="roleId" th:value="${role.roleId}">
|
||||||
|
<div class="select-list">
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
登录名称:<input type="text" name="loginName"/>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
手机号码:<input type="text" name="phonenumber"/>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i> 搜索</a>
|
||||||
|
<a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset()"><i class="fa fa-refresh"></i> 重置</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-sm-12 select-table table-striped">
|
||||||
|
<table id="bootstrap-table" data-mobile-responsive="true"></table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<th:block th:include="include :: footer" />
|
||||||
|
<script th:inline="javascript">
|
||||||
|
var datas = [[${@dict.getType('sys_normal_disable')}]];
|
||||||
|
var prefix = ctx + "system/role/authUser";
|
||||||
|
|
||||||
|
$(function() {
|
||||||
|
var options = {
|
||||||
|
url: prefix + "/unallocatedList",
|
||||||
|
createUrl: prefix + "/add",
|
||||||
|
updateUrl: prefix + "/edit/{id}",
|
||||||
|
removeUrl: prefix + "/remove",
|
||||||
|
exportUrl: prefix + "/export",
|
||||||
|
importUrl: prefix + "/importData",
|
||||||
|
importTemplateUrl: prefix + "/importTemplate",
|
||||||
|
queryParams: queryParams,
|
||||||
|
sortName: "createTime",
|
||||||
|
sortOrder: "desc",
|
||||||
|
modalName: "用户",
|
||||||
|
showSearch: false,
|
||||||
|
showRefresh: false,
|
||||||
|
showToggle: false,
|
||||||
|
showColumns: false,
|
||||||
|
clickToSelect: true,
|
||||||
|
rememberSelected: true,
|
||||||
|
columns: [{
|
||||||
|
checkbox: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'userId',
|
||||||
|
title: '用户ID',
|
||||||
|
visible: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'loginName',
|
||||||
|
title: '登录名称',
|
||||||
|
sortable: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'userName',
|
||||||
|
title: '用户名称'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'email',
|
||||||
|
title: '邮箱'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'phonenumber',
|
||||||
|
title: '手机'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'status',
|
||||||
|
title: '用户状态',
|
||||||
|
align: 'center',
|
||||||
|
formatter: function (value, row, index) {
|
||||||
|
return $.table.selectDictLabel(datas, value);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: 'createTime',
|
||||||
|
title: '创建时间',
|
||||||
|
sortable: true
|
||||||
|
}]
|
||||||
|
};
|
||||||
|
$.table.init(options);
|
||||||
|
});
|
||||||
|
|
||||||
|
function queryParams(params) {
|
||||||
|
return {
|
||||||
|
roleId: $("#roleId").val(),
|
||||||
|
pageSize: params.limit,
|
||||||
|
pageNum: params.offset / params.limit + 1,
|
||||||
|
searchValue: params.search,
|
||||||
|
orderByColumn: params.sort,
|
||||||
|
isAsc: params.order
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 分配用户-选择用户-提交 */
|
||||||
|
function submitHandler() {
|
||||||
|
var rows = $.table.selectFirstColumns();
|
||||||
|
if (rows.length == 0) {
|
||||||
|
$.modal.alertWarning("请至少选择一条记录");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var data = { "roleId": $("#roleId").val(), "userIds": rows.join() };
|
||||||
|
$.operate.save(prefix + "/selectAll", data);
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -1,7 +1,9 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
|
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
|
||||||
<meta charset="utf-8">
|
<head>
|
||||||
<head th:include="include :: header"></head>
|
<th:block th:include="include :: select2-css" />
|
||||||
|
<th:block th:include="include :: header('新增用户')" />
|
||||||
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div class="form-content">
|
<div class="form-content">
|
||||||
<form id="form-user-add" class="form-horizontal">
|
<form id="form-user-add" class="form-horizontal">
|
||||||
|
@ -135,8 +137,8 @@
|
||||||
<button type="button" class="btn btn-sm btn-danger" onclick="closeItem()"><i class="fa fa-reply-all"></i>关 闭 </button>
|
<button type="button" class="btn btn-sm btn-danger" onclick="closeItem()"><i class="fa fa-reply-all"></i>关 闭 </button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div th:include="include::footer"></div>
|
<th:block th:include="include :: footer" />
|
||||||
<script th:src="@{/ajax/libs/select/select2.js}"></script>
|
<th:block th:include="include :: select2-js" />
|
||||||
<script>
|
<script>
|
||||||
var prefix = ctx + "system/user";
|
var prefix = ctx + "system/user";
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,9 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
|
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
|
||||||
<meta charset="utf-8">
|
<head>
|
||||||
<head th:include="include :: header"></head>
|
<th:block th:include="include :: select2-css" />
|
||||||
|
<th:block th:include="include :: header('修改用户')" />
|
||||||
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div class="form-content">
|
<div class="form-content">
|
||||||
<form class="form-horizontal" id="form-user-edit" th:object="${user}">
|
<form class="form-horizontal" id="form-user-edit" th:object="${user}">
|
||||||
|
@ -126,9 +128,9 @@
|
||||||
<button type="button" class="btn btn-sm btn-danger" onclick="closeItem()"><i class="fa fa-reply-all"></i>关 闭 </button>
|
<button type="button" class="btn btn-sm btn-danger" onclick="closeItem()"><i class="fa fa-reply-all"></i>关 闭 </button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div th:include="include::footer"></div>
|
<th:block th:include="include :: footer" />
|
||||||
<script th:src="@{/ajax/libs/select/select2.js}"></script>
|
<th:block th:include="include :: select2-js" />
|
||||||
<script>
|
<script type="text/javascript">
|
||||||
var prefix = ctx + "system/user";
|
var prefix = ctx + "system/user";
|
||||||
|
|
||||||
$("#form-user-edit").validate({
|
$("#form-user-edit").validate({
|
||||||
|
|
|
@ -1,8 +1,9 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
|
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
|
||||||
<meta charset="utf-8">
|
<head>
|
||||||
<title>用户头像修改</title>
|
<th:block th:include="include :: header('修改用户头像')" />
|
||||||
<link th:href="@{/ajax/libs/cropbox/cropbox.css}" rel="stylesheet"/>
|
<th:block th:include="include :: cropbox-css" />
|
||||||
|
</head>
|
||||||
<body class="white-bg">
|
<body class="white-bg">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="imageBox">
|
<div class="imageBox">
|
||||||
|
@ -20,8 +21,8 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="cropped"></div>
|
<div class="cropped"></div>
|
||||||
</div>
|
</div>
|
||||||
<div th:include="include::footer"></div>
|
<th:block th:include="include :: footer" />
|
||||||
<script th:src="@{/ajax/libs/cropbox/cropbox.js}"></script>
|
<th:block th:include="include :: cropbox-js" />
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var cropper;
|
var cropper;
|
||||||
$(window).load(function() {
|
$(window).load(function() {
|
||||||
|
@ -38,7 +39,7 @@ $(window).load(function() {
|
||||||
options.imgSrc = e.target.result;
|
options.imgSrc = e.target.result;
|
||||||
//根据MIME判断上传的文件是不是图片类型
|
//根据MIME判断上传的文件是不是图片类型
|
||||||
if((options.imgSrc).indexOf("image/")==-1){
|
if((options.imgSrc).indexOf("image/")==-1){
|
||||||
$.modal.alertWarning("文件格式错误,请上传图片类型,如:JPG,JPEG,PNG后缀的文件。");
|
$.modal.alertWarning("文件格式错误,请上传图片类型,如:JPG,PNG后缀的文件。");
|
||||||
} else {
|
} else {
|
||||||
cropper = $('.imageBox').cropbox(options);
|
cropper = $('.imageBox').cropbox(options);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,122 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<head th:include="include :: header"></head>
|
|
||||||
<body class="white-bg">
|
|
||||||
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
|
|
||||||
<form class="form-horizontal m" id="form-user-edit" th:object="${user}">
|
|
||||||
<input name="userId" type="hidden" th:field="*{userId}" />
|
|
||||||
<div class="form-group">
|
|
||||||
<label class="col-sm-3 control-label ">登录名称:</label>
|
|
||||||
<div class="col-sm-8">
|
|
||||||
<input class="form-control" type="text" readonly="true" th:field="*{loginName}"/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="form-group">
|
|
||||||
<label class="col-sm-3 control-label">部门名称:</label>
|
|
||||||
<div class="col-sm-8">
|
|
||||||
<input class="form-control" type="text" readonly="true" th:field="*{dept.deptName}">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="form-group">
|
|
||||||
<label class="col-sm-3 control-label">用户名称:</label>
|
|
||||||
<div class="col-sm-8">
|
|
||||||
<input class="form-control" type="text" name="userName" id="userName" th:field="*{userName}">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="form-group">
|
|
||||||
<label class="col-sm-3 control-label">邮箱:</label>
|
|
||||||
<div class="col-sm-8">
|
|
||||||
<input class="form-control" type="text" name="email" th:field="*{email}">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="form-group">
|
|
||||||
<label class="col-sm-3 control-label">手机:</label>
|
|
||||||
<div class="col-sm-8">
|
|
||||||
<input class="form-control" type="text" name="phonenumber" id="phonenumber" th:field="*{phonenumber}">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="form-group">
|
|
||||||
<label class="col-sm-3 control-label">性别:</label>
|
|
||||||
<div class="col-sm-8">
|
|
||||||
<div class="radio-box">
|
|
||||||
<input type="radio" id="radio1" th:field="*{sex}" name="sex" value="0">
|
|
||||||
<label for="radio1">男</label>
|
|
||||||
</div>
|
|
||||||
<div class="radio-box">
|
|
||||||
<input type="radio" id="radio2" th:field="*{sex}" name="sex" value="1">
|
|
||||||
<label for="radio2">女</label>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
<div th:include="include::footer"></div>
|
|
||||||
<script>
|
|
||||||
$("#form-user-edit").validate({
|
|
||||||
onkeyup: false,
|
|
||||||
rules:{
|
|
||||||
userName:{
|
|
||||||
required:true,
|
|
||||||
},
|
|
||||||
email:{
|
|
||||||
required:true,
|
|
||||||
email:true,
|
|
||||||
remote: {
|
|
||||||
url: ctx + "system/user/checkEmailUnique",
|
|
||||||
type: "post",
|
|
||||||
dataType: "json",
|
|
||||||
data: {
|
|
||||||
"userId": function() {
|
|
||||||
return $("#userId").val();
|
|
||||||
},
|
|
||||||
"email": function() {
|
|
||||||
return $.common.trim($("#email").val());
|
|
||||||
}
|
|
||||||
},
|
|
||||||
dataFilter: function (data, type) {
|
|
||||||
return $.validate.unique(data);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
phonenumber:{
|
|
||||||
required:true,
|
|
||||||
isPhone:true,
|
|
||||||
remote: {
|
|
||||||
url: ctx + "system/user/checkPhoneUnique",
|
|
||||||
type: "post",
|
|
||||||
dataType: "json",
|
|
||||||
data: {
|
|
||||||
"userId": function() {
|
|
||||||
return $("#userId").val();
|
|
||||||
},
|
|
||||||
"phonenumber": function() {
|
|
||||||
return $.common.trim($("#phonenumber").val());
|
|
||||||
}
|
|
||||||
},
|
|
||||||
dataFilter: function (data, type) {
|
|
||||||
return $.validate.unique(data);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
},
|
|
||||||
messages: {
|
|
||||||
"email": {
|
|
||||||
remote: "Email已经存在"
|
|
||||||
},
|
|
||||||
"phonenumber":{
|
|
||||||
remote: "手机号码已经存在"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
focusCleanup: true
|
|
||||||
});
|
|
||||||
|
|
||||||
function submitHandler() {
|
|
||||||
if ($.validate.form()) {
|
|
||||||
$.operate.save(ctx + "system/user/profile/update", $('#form-user-edit').serialize());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,78 +1,277 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
|
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8">
|
<th:block th:include="include :: header('用户个人信息')" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<style type="text/css">
|
||||||
<!--360浏览器优先以webkit内核解析-->
|
|
||||||
<title>个人信息</title>
|
|
||||||
<link rel="shortcut icon" href="favicon.ico">
|
</style>
|
||||||
<link th:href="@{/css/bootstrap.min.css}" rel="stylesheet"/>
|
|
||||||
<link th:href="@{/css/font-awesome.min.css}" rel="stylesheet"/>
|
|
||||||
<link th:href="@{/css/main/animate.min.css}" rel="stylesheet"/>
|
|
||||||
<link th:href="@{/css/main/style.min862f.css}" rel="stylesheet"/>
|
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body class="gray-bg">
|
<body class="gray-bg" style="font: 14px Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif !important;">
|
||||||
<div class="wrapper wrapper-content">
|
<input id="userId" name="userId" type="hidden" th:value="${user.userId}" />
|
||||||
<div class="row animated fadeInRight">
|
<section class="section-content">
|
||||||
<div class="col-sm-6">
|
<div class="row">
|
||||||
<div class="ibox float-e-margins">
|
<div class="col-xs-3 pr5">
|
||||||
<div class="ibox-title">
|
<div class="ibox float-e-margins">
|
||||||
<h5>个人信息</h5>
|
<div class="ibox-title ibox-title-gray dashboard-header gray-bg">
|
||||||
<div class="ibox-tools">
|
<h5>个人资料</h5>
|
||||||
|
</div>
|
||||||
<a class="dropdown-toggle" data-toggle="dropdown" href="profile.html#">
|
<div class="ibox-content">
|
||||||
<i class="fa fa-edit"></i>
|
<div class="text-center">
|
||||||
</a>
|
<p><img width="120" height="120" th:src="(${user.avatar} == '') ? @{/img/profile.jpg} : @{/profile/avatar/} + ${user.avatar}"></p>
|
||||||
<ul class="dropdown-menu dropdown-user">
|
<p><a href="javascript:avatar()">修改头像</a></p>
|
||||||
<li><a href="javascript:edit()">修改信息</a></li>
|
</div>
|
||||||
<li><a href="javascript:resetPwd()">修改密码</a></li>
|
<ul class="list-group list-group-striped">
|
||||||
<li><a href="javascript:avatar()">修改头像</a></li>
|
<li class="list-group-item"><i class="fa fa-user"></i>
|
||||||
|
<b class="font-noraml">登录名称:</b>
|
||||||
|
<p class="pull-right">[[${user.loginName}]]</p>
|
||||||
|
</li>
|
||||||
|
<li class="list-group-item"><i class="fa fa-phone"></i>
|
||||||
|
<b class="font-noraml">手机号码:</b>
|
||||||
|
<p class="pull-right">[[${user.phonenumber}]]</p>
|
||||||
|
</li>
|
||||||
|
<li class="list-group-item"><i class="fa fa-group"></i>
|
||||||
|
<b class="font-noraml">所属部门:</b>
|
||||||
|
<p class="pull-right" >[[${user.dept?.deptName}]] / [[${#strings.defaultString(postGroup,'无岗位')}]]</p>
|
||||||
|
</li>
|
||||||
|
<li class="list-group-item"><i class="fa fa-envelope-o"></i>
|
||||||
|
<b class="font-noraml">邮箱地址:</b>
|
||||||
|
<p class="pull-right" >[[${user.email}]]</p>
|
||||||
|
</li>
|
||||||
|
<li class="list-group-item"><i class="fa fa-calendar"></i>
|
||||||
|
<b class="font-noraml">创建时间:</b>
|
||||||
|
<p class="pull-right" >[[${#dates.format(user.createTime, 'yyyy-MM-dd')}]]</p>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-xs-9" style="padding-left: 0px">
|
||||||
|
<div class="ibox float-e-margins">
|
||||||
|
<div class="ibox-title ibox-title-gray dashboard-header">
|
||||||
|
<h5>基本资料</h5>
|
||||||
|
</div>
|
||||||
|
<div class="ibox-content">
|
||||||
|
<div class="nav-tabs-custom">
|
||||||
|
<ul class="nav nav-tabs">
|
||||||
|
<li class="active"><a href="#user_info" data-toggle="tab" aria-expanded="true">基本资料</a></li>
|
||||||
|
<li><a href="#modify_password" data-toggle="tab" aria-expanded="false">修改密码</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
<div class="tab-content">
|
||||||
</div>
|
<!--用户信息-->
|
||||||
</div>
|
<div class="tab-pane active" id="user_info" th:object="${user}">
|
||||||
<div class="contact-box">
|
<form class="form-horizontal" id="form-user-edit">
|
||||||
<div class="col-sm-4">
|
<!--隐藏ID-->
|
||||||
<div class="text-center">
|
<input name="id" id="id" type="hidden">
|
||||||
<img alt="image" class="img-circle m-t-xs img-responsive" th:src="(${user.avatar} == '') ? @{/img/profile.jpg} : @{/profile/avatar/} + ${user.avatar}">
|
<div class="form-group">
|
||||||
<div class="m-t-xs font-bold">[[${user.loginIp}]]</div>
|
<label class="col-sm-2 control-label">用户名称:</label>
|
||||||
</div>
|
<div class="col-sm-10">
|
||||||
</div>
|
<input type="text" autocomplete="off" class="form-control" name="userName" th:field="*{userName}" placeholder="请输入用户名称">
|
||||||
<div class="col-sm-8">
|
</div>
|
||||||
<h3><strong>[[${user.loginName}]]</strong></h3>
|
</div>
|
||||||
<p><i class="fa fa-user"></i> [[${user.userName}]] / [[${#strings.defaultString(roleGroup,'无角色')}]]
|
<div class="form-group">
|
||||||
<p><i class="fa fa-phone"></i> [[${user.phonenumber}]]</p>
|
<label class="col-sm-2 control-label">手机号码:</label>
|
||||||
<p><i class="fa fa-group"></i> [[${user.dept?.deptName}]] / [[${#strings.defaultString(postGroup,'无岗位')}]]</p>
|
<div class="col-sm-10">
|
||||||
<p><i class="fa fa-transgender"></i> 性别:[[${user.sex}]]</p>
|
<input type="text" autocomplete="off" class="form-control" name="phonenumber" maxlength="11" th:field="*{phonenumber}" placeholder="请输入手机号码">
|
||||||
<p><i class="fa fa-envelope-o"></i> [[${user.email}]]</p>
|
</div>
|
||||||
<p><i class="fa fa-calendar"></i> [[${#dates.format(user.createTime, 'yyyy-MM-dd HH:mm:ss')}]]</p>
|
</div>
|
||||||
</div>
|
<div class="form-group">
|
||||||
<div class="clearfix"></div>
|
<label class="col-sm-2 control-label">邮箱:</label>
|
||||||
</a>
|
<div class="col-sm-10">
|
||||||
|
<input type="text" autocomplete="off" class="form-control" name="email" th:field="*{email}" placeholder="请输入邮箱">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="col-sm-2 control-label">性别:</label>
|
||||||
|
<div class="col-sm-10">
|
||||||
|
<div class="radio-box">
|
||||||
|
<input type="radio" id="radio1" th:field="*{sex}" name="sex" value="0">
|
||||||
|
<label for="radio1">男</label>
|
||||||
|
</div>
|
||||||
|
<div class="radio-box">
|
||||||
|
<input type="radio" id="radio2" th:field="*{sex}" name="sex" value="1">
|
||||||
|
<label for="radio2">女</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<div class="col-sm-offset-2 col-sm-10">
|
||||||
|
<button type="button" class="btn btn-sm btn-primary" onclick="submitUserInfo()"><i class="fa fa-check"></i>保 存</button>
|
||||||
|
<button type="button" class="btn btn-sm btn-danger" onclick="closeItem()"><i class="fa fa-reply-all"></i>关 闭 </button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!--修改密码-->
|
||||||
|
<div class="tab-pane" id="modify_password">
|
||||||
|
<form class="form-horizontal" id="form-user-resetPwd">
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="col-sm-2 control-label">旧密码:</label>
|
||||||
|
<div class="col-sm-10">
|
||||||
|
<input type="password" class="form-control" name="oldPassword" placeholder="请输入旧密码">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="col-sm-2 control-label">新密码:</label>
|
||||||
|
<div class="col-sm-10">
|
||||||
|
<input type="password" class="form-control" name="newPassword" id="newPassword" placeholder="请输入新密码">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="col-sm-2 control-label">确认密码:</label>
|
||||||
|
<div class="col-sm-10">
|
||||||
|
<input type="password" class="form-control" name="confirmPassword" placeholder="请确认密码">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<div class="col-sm-offset-2 col-sm-10">
|
||||||
|
<button type="button" class="btn btn-sm btn-primary" onclick="submitChangPassword()"><i class="fa fa-check"></i>保 存</button>
|
||||||
|
<button type="button" class="btn btn-sm btn-danger" onclick="closeItem()"><i class="fa fa-reply-all"></i>关 闭 </button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
<div th:include="include::footer"></div>
|
<th:block th:include="include :: footer" />
|
||||||
<script>
|
<script>
|
||||||
/*用户信息-修改*/
|
|
||||||
function edit() {
|
|
||||||
var url = ctx + 'system/user/profile/edit';
|
|
||||||
$.modal.open("修改用户", url);
|
|
||||||
}
|
|
||||||
/*用户管理-重置密码*/
|
|
||||||
function resetPwd() {
|
|
||||||
var url = ctx + 'system/user/profile/resetPwd';
|
|
||||||
$.modal.open("重置密码", url, '800', '500');
|
|
||||||
}
|
|
||||||
/*用户管理-头像*/
|
/*用户管理-头像*/
|
||||||
function avatar() {
|
function avatar() {
|
||||||
var url = ctx + 'system/user/profile/avatar';
|
var url = ctx + 'system/user/profile/avatar';
|
||||||
$.modal.open("修改头像", url);
|
$.modal.open("修改头像", url);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*用户信息-修改*/
|
||||||
|
$("#form-user-edit").validate({
|
||||||
|
onkeyup: false,
|
||||||
|
rules:{
|
||||||
|
userName:{
|
||||||
|
required:true,
|
||||||
|
},
|
||||||
|
email:{
|
||||||
|
required:true,
|
||||||
|
email:true,
|
||||||
|
remote: {
|
||||||
|
url: ctx + "system/user/checkEmailUnique",
|
||||||
|
type: "post",
|
||||||
|
dataType: "json",
|
||||||
|
data: {
|
||||||
|
"userId": function() {
|
||||||
|
return $("#userId").val();
|
||||||
|
},
|
||||||
|
"email": function() {
|
||||||
|
return $.common.trim($("#email").val());
|
||||||
|
}
|
||||||
|
},
|
||||||
|
dataFilter: function (data, type) {
|
||||||
|
return $.validate.unique(data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
phonenumber:{
|
||||||
|
required:true,
|
||||||
|
isPhone:true,
|
||||||
|
remote: {
|
||||||
|
url: ctx + "system/user/checkPhoneUnique",
|
||||||
|
type: "post",
|
||||||
|
dataType: "json",
|
||||||
|
data: {
|
||||||
|
"userId": function() {
|
||||||
|
return $("#userId").val();
|
||||||
|
},
|
||||||
|
"phonenumber": function() {
|
||||||
|
return $.common.trim($("#phonenumber").val());
|
||||||
|
}
|
||||||
|
},
|
||||||
|
dataFilter: function (data, type) {
|
||||||
|
return $.validate.unique(data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
messages: {
|
||||||
|
"userName": {
|
||||||
|
required: "请输入用户名称",
|
||||||
|
},
|
||||||
|
"email": {
|
||||||
|
required: "请输入邮箱",
|
||||||
|
remote: "Email已经存在"
|
||||||
|
},
|
||||||
|
"phonenumber":{
|
||||||
|
required: "请输入手机号码",
|
||||||
|
remote: "手机号码已经存在"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
focusCleanup: true
|
||||||
|
});
|
||||||
|
|
||||||
|
function submitUserInfo() {
|
||||||
|
if ($.validate.form()) {
|
||||||
|
$.operate.saveModal(ctx + "system/user/profile/update", $('#form-user-edit').serialize());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*用户管理-修改密码*/
|
||||||
|
$("#form-user-resetPwd").validate({
|
||||||
|
onkeyup: false,
|
||||||
|
rules:{
|
||||||
|
oldPassword:{
|
||||||
|
required:true,
|
||||||
|
remote: {
|
||||||
|
url: ctx + "system/user/profile/checkPassword",
|
||||||
|
type: "get",
|
||||||
|
dataType: "json",
|
||||||
|
data: {
|
||||||
|
password: function() {
|
||||||
|
return $("input[name='oldPassword']").val();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
newPassword: {
|
||||||
|
required: true,
|
||||||
|
minlength: 6,
|
||||||
|
maxlength: 20
|
||||||
|
},
|
||||||
|
confirmPassword: {
|
||||||
|
required: true,
|
||||||
|
equalTo: "#newPassword"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
messages: {
|
||||||
|
oldPassword: {
|
||||||
|
required: "请输入原密码",
|
||||||
|
remote: "原密码错误"
|
||||||
|
},
|
||||||
|
newPassword: {
|
||||||
|
required: "请输入新密码",
|
||||||
|
minlength: "密码不能小于6个字符",
|
||||||
|
maxlength: "密码不能大于20个字符"
|
||||||
|
},
|
||||||
|
confirmPassword: {
|
||||||
|
required: "请再次输入新密码",
|
||||||
|
equalTo: "两次密码输入不一致"
|
||||||
|
}
|
||||||
|
|
||||||
|
},
|
||||||
|
focusCleanup: true
|
||||||
|
});
|
||||||
|
|
||||||
|
function submitChangPassword () {
|
||||||
|
if ($.validate.form("form-user-resetPwd")) {
|
||||||
|
$.operate.saveModal(ctx + "system/user/profile/resetPwd", $('#form-user-resetPwd').serialize());
|
||||||
|
}
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
|
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
|
||||||
<meta charset="utf-8">
|
<head>
|
||||||
<head th:include="include :: header"></head>
|
<th:block th:include="include :: header('修改用户密码')" />
|
||||||
|
</head>
|
||||||
<body class="white-bg">
|
<body class="white-bg">
|
||||||
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
|
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
|
||||||
<form class="form-horizontal m" id="form-user-resetPwd">
|
<form class="form-horizontal m" id="form-user-resetPwd">
|
||||||
|
@ -33,7 +34,7 @@
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
<div th:include="include :: footer"></div>
|
<th:block th:include="include :: footer" />
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
$("#form-user-resetPwd").validate({
|
$("#form-user-resetPwd").validate({
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
|
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
|
||||||
<meta charset="utf-8">
|
<head>
|
||||||
<head th:include="include :: header"></head>
|
<th:block th:include="include :: header('修改密码')" />
|
||||||
|
</head>
|
||||||
<body class="white-bg">
|
<body class="white-bg">
|
||||||
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
|
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
|
||||||
<form class="form-horizontal m" id="form-user-resetPwd">
|
<form class="form-horizontal m" id="form-user-resetPwd">
|
||||||
|
@ -20,7 +21,7 @@
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
<div th:include="include :: footer"></div>
|
<th:block th:include="include :: footer" />
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
$("#form-user-resetPwd").validate({
|
$("#form-user-resetPwd").validate({
|
||||||
rules:{
|
rules:{
|
||||||
|
|
|
@ -1,11 +1,10 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org"
|
<html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
|
||||||
xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
|
<head>
|
||||||
<meta charset="utf-8">
|
<th:block th:include="include :: header('用户列表')" />
|
||||||
<head th:include="include :: header"></head>
|
<th:block th:include="include :: layout-latest-css" />
|
||||||
<link th:href="@{/ajax/libs/jquery-layout/jquery.layout-latest.css}" rel="stylesheet"/>
|
<th:block th:include="include :: ztree-css" />
|
||||||
<link th:href="@{/ajax/libs/jquery-ztree/3.5/css/metro/zTreeStyle.css}" rel="stylesheet"/>
|
</head>
|
||||||
|
|
||||||
<body class="gray-bg">
|
<body class="gray-bg">
|
||||||
<div class="ui-layout-west">
|
<div class="ui-layout-west">
|
||||||
<div class="main-content">
|
<div class="main-content">
|
||||||
|
@ -87,9 +86,9 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div th:include="include :: footer"></div>
|
<th:block th:include="include :: footer" />
|
||||||
<script th:src="@{/ajax/libs/jquery-layout/jquery.layout-latest.js}"></script>
|
<th:block th:include="include :: layout-latest-js" />
|
||||||
<script th:src="@{/ajax/libs/jquery-ztree/3.5/js/jquery.ztree.all-3.5.js}"></script>
|
<th:block th:include="include :: ztree-js" />
|
||||||
<script th:inline="javascript">
|
<script th:inline="javascript">
|
||||||
var editFlag = [[${@permission.hasPermi('system:user:edit')}]];
|
var editFlag = [[${@permission.hasPermi('system:user:edit')}]];
|
||||||
var removeFlag = [[${@permission.hasPermi('system:user:remove')}]];
|
var removeFlag = [[${@permission.hasPermi('system:user:remove')}]];
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
|
<html lang="zh">
|
||||||
<meta charset="utf-8">
|
<head>
|
||||||
<head th:include="include :: header"></head>
|
<th:block th:include="include :: header('表单构建器')" />
|
||||||
<link th:href="@{/ruoyi/css/ry-ui.css}" rel="stylesheet"/>
|
<th:block th:include="include :: datetimepicker-css" />
|
||||||
<link th:href="@{/ajax/libs/datapicker/bootstrap-datetimepicker.min.css}" rel="stylesheet"/>
|
</head>
|
||||||
<style>
|
<style>
|
||||||
.droppable-active{background-color:#ffe!important}.tools a{cursor:pointer;font-size:80%}.form-body .col-md-6,.form-body .col-md-12{min-height:400px}.draggable{cursor:move}
|
.droppable-active{background-color:#ffe!important}.tools a{cursor:pointer;font-size:80%}.form-body .col-md-6,.form-body .col-md-12{min-height:400px}.draggable{cursor:move}
|
||||||
</style>
|
</style>
|
||||||
|
@ -162,12 +162,11 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div th:include="include :: footer"></div>
|
<th:block th:include="include :: footer" />
|
||||||
<script th:src="@{/js/jquery-ui-1.10.4.min.js}"></script>
|
<script th:src="@{/js/jquery-ui-1.10.4.min.js}"></script>
|
||||||
<script th:src="@{/ajax/libs/iCheck/icheck.min.js}"></script>
|
<th:block th:include="include :: datetimepicker-js" />
|
||||||
<script th:src="@{/ajax/libs//datapicker/bootstrap-datetimepicker.min.js}"></script>
|
|
||||||
<script th:src="@{/ajax/libs/beautifyhtml/beautifyhtml.js}"></script>
|
<script th:src="@{/ajax/libs/beautifyhtml/beautifyhtml.js}"></script>
|
||||||
<script>
|
<script type="text/javascript">
|
||||||
$(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">×</a><h4 class="modal-title">编辑HTML</h4></div><div class="modal-body ui-front"> <textarea class="form-control textarea-show-src" style="min-height: 200px; margin-bottom: 10px;font-family: Monaco, Fixed"></textarea><button class="btn btn-success">更新HTML</button></div></div></div></div>').appendTo(document.body);var doms = document.getElementsByClassName("textarea-show-src");for (var i = 0; i < doms.length; i++) {doms.item(i).innerHTML = content;}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(){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">×</a><h4 class="modal-title">编辑HTML</h4></div><div class="modal-body ui-front"> <textarea class="form-control textarea-show-src" style="min-height: 200px; margin-bottom: 10px;font-family: Monaco, Fixed"></textarea><button class="btn btn-success">更新HTML</button></div></div></div></div>').appendTo(document.body);var doms = document.getElementsByClassName("textarea-show-src");for (var i = 0; i < doms.length; i++) {doms.item(i).innerHTML = content;}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()});
|
||||||
$(".input-group.date").datetimepicker({
|
$(".input-group.date").datetimepicker({
|
||||||
format: "yyyy-mm-dd",
|
format: "yyyy-mm-dd",
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
<parent>
|
<parent>
|
||||||
<artifactId>ruoyi</artifactId>
|
<artifactId>ruoyi</artifactId>
|
||||||
<groupId>com.ruoyi</groupId>
|
<groupId>com.ruoyi</groupId>
|
||||||
<version>3.2</version>
|
<version>3.3</version>
|
||||||
</parent>
|
</parent>
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
|
@ -84,7 +84,7 @@
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!-- servlet包 -->
|
<!-- servlet包 -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>javax.servlet</groupId>
|
<groupId>javax.servlet</groupId>
|
||||||
<artifactId>javax.servlet-api</artifactId>
|
<artifactId>javax.servlet-api</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
|
@ -81,7 +81,7 @@ public class Global
|
||||||
*/
|
*/
|
||||||
public static String getVersion()
|
public static String getVersion()
|
||||||
{
|
{
|
||||||
return StringUtils.nvl(getConfig("ruoyi.version"), "3.2.0");
|
return StringUtils.nvl(getConfig("ruoyi.version"), "3.3.0");
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -13,6 +13,7 @@ import org.springframework.web.bind.annotation.InitBinder;
|
||||||
import com.github.pagehelper.PageHelper;
|
import com.github.pagehelper.PageHelper;
|
||||||
import com.github.pagehelper.PageInfo;
|
import com.github.pagehelper.PageInfo;
|
||||||
import com.ruoyi.common.core.domain.AjaxResult;
|
import com.ruoyi.common.core.domain.AjaxResult;
|
||||||
|
import com.ruoyi.common.core.domain.AjaxResult.Type;
|
||||||
import com.ruoyi.common.core.page.PageDomain;
|
import com.ruoyi.common.core.page.PageDomain;
|
||||||
import com.ruoyi.common.core.page.TableDataInfo;
|
import com.ruoyi.common.core.page.TableDataInfo;
|
||||||
import com.ruoyi.common.core.page.TableSupport;
|
import com.ruoyi.common.core.page.TableSupport;
|
||||||
|
@ -156,9 +157,9 @@ public class BaseController
|
||||||
/**
|
/**
|
||||||
* 返回错误码消息
|
* 返回错误码消息
|
||||||
*/
|
*/
|
||||||
public AjaxResult error(int code, String message)
|
public AjaxResult error(Type type, String message)
|
||||||
{
|
{
|
||||||
return AjaxResult.error(code, message);
|
return new AjaxResult(type, message);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
package com.ruoyi.common.core.domain;
|
package com.ruoyi.common.core.domain;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import org.apache.commons.lang3.builder.ToStringBuilder;
|
||||||
|
import org.apache.commons.lang3.builder.ToStringStyle;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 操作消息提醒
|
* 操作消息提醒
|
||||||
|
@ -11,63 +13,81 @@ public class AjaxResult extends HashMap<String, Object>
|
||||||
{
|
{
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
public static final String CODE_TAG = "code";
|
||||||
|
|
||||||
|
public static final String MSG_TAG = "msg";
|
||||||
|
|
||||||
|
public static final String DATA_TAG = "data";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 初始化一个新创建的 Message 对象
|
* 状态类型
|
||||||
|
*/
|
||||||
|
public enum Type
|
||||||
|
{
|
||||||
|
/** 成功 */
|
||||||
|
SUCCESS(0),
|
||||||
|
/** 警告 */
|
||||||
|
WARN(301),
|
||||||
|
/** 错误 */
|
||||||
|
ERROR(500);
|
||||||
|
private final int value;
|
||||||
|
|
||||||
|
Type(int value)
|
||||||
|
{
|
||||||
|
this.value = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int value()
|
||||||
|
{
|
||||||
|
return this.value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 状态类型 */
|
||||||
|
private Type type;
|
||||||
|
|
||||||
|
/** 状态码 */
|
||||||
|
private int code;
|
||||||
|
|
||||||
|
/** 返回内容 */
|
||||||
|
private String msg;
|
||||||
|
|
||||||
|
/** 数据对象 */
|
||||||
|
private Object data;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 初始化一个新创建的 AjaxResult 对象,使其表示一个空消息。
|
||||||
*/
|
*/
|
||||||
public AjaxResult()
|
public AjaxResult()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 返回错误消息
|
* 初始化一个新创建的 AjaxResult 对象
|
||||||
*
|
*
|
||||||
* @return 错误消息
|
* @param type 状态类型
|
||||||
|
* @param msg 返回内容
|
||||||
*/
|
*/
|
||||||
public static AjaxResult error()
|
public AjaxResult(Type type, String msg)
|
||||||
{
|
{
|
||||||
return error(1, "操作失败");
|
super.put(CODE_TAG, type.value);
|
||||||
|
super.put(MSG_TAG, msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 返回错误消息
|
* 初始化一个新创建的 AjaxResult 对象
|
||||||
*
|
*
|
||||||
* @param msg 内容
|
* @param type 状态类型
|
||||||
* @return 错误消息
|
* @param msg 返回内容
|
||||||
|
* @param data 数据对象
|
||||||
*/
|
*/
|
||||||
public static AjaxResult error(String msg)
|
public AjaxResult(Type type, String msg, Object data)
|
||||||
{
|
{
|
||||||
return error(500, msg);
|
super.put(CODE_TAG, type.value);
|
||||||
|
super.put(MSG_TAG, msg);
|
||||||
|
super.put(DATA_TAG, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 返回错误消息
|
|
||||||
*
|
|
||||||
* @param code 错误码
|
|
||||||
* @param msg 内容
|
|
||||||
* @return 错误消息
|
|
||||||
*/
|
|
||||||
public static AjaxResult error(int code, String msg)
|
|
||||||
{
|
|
||||||
AjaxResult json = new AjaxResult();
|
|
||||||
json.put("code", code);
|
|
||||||
json.put("msg", msg);
|
|
||||||
return json;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 返回成功消息
|
|
||||||
*
|
|
||||||
* @param msg 内容
|
|
||||||
* @return 成功消息
|
|
||||||
*/
|
|
||||||
public static AjaxResult success(String msg)
|
|
||||||
{
|
|
||||||
AjaxResult json = new AjaxResult();
|
|
||||||
json.put("msg", msg);
|
|
||||||
json.put("code", 0);
|
|
||||||
return json;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 返回成功消息
|
* 返回成功消息
|
||||||
*
|
*
|
||||||
|
@ -81,14 +101,128 @@ public class AjaxResult extends HashMap<String, Object>
|
||||||
/**
|
/**
|
||||||
* 返回成功消息
|
* 返回成功消息
|
||||||
*
|
*
|
||||||
* @param key 键值
|
* @param msg 返回内容
|
||||||
* @param value 内容
|
|
||||||
* @return 成功消息
|
* @return 成功消息
|
||||||
*/
|
*/
|
||||||
@Override
|
public static AjaxResult success(String msg)
|
||||||
public AjaxResult put(String key, Object value)
|
|
||||||
{
|
{
|
||||||
super.put(key, value);
|
return AjaxResult.success(msg, null);
|
||||||
return this;
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 返回成功消息
|
||||||
|
*
|
||||||
|
* @param msg 返回内容
|
||||||
|
* @param data 数据对象
|
||||||
|
* @return 成功消息
|
||||||
|
*/
|
||||||
|
public static AjaxResult success(String msg, Object data)
|
||||||
|
{
|
||||||
|
return new AjaxResult(Type.SUCCESS, msg, data);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 返回警告消息
|
||||||
|
*
|
||||||
|
* @param msg 返回内容
|
||||||
|
* @return 警告消息
|
||||||
|
*/
|
||||||
|
public static AjaxResult warn(String msg)
|
||||||
|
{
|
||||||
|
return AjaxResult.warn(msg, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 返回警告消息
|
||||||
|
*
|
||||||
|
* @param msg 返回内容
|
||||||
|
* @param data 数据对象
|
||||||
|
* @return 警告消息
|
||||||
|
*/
|
||||||
|
public static AjaxResult warn(String msg, Object data)
|
||||||
|
{
|
||||||
|
return new AjaxResult(Type.WARN, msg, data);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 返回错误消息
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static AjaxResult error()
|
||||||
|
{
|
||||||
|
return AjaxResult.error("操作失败");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 返回错误消息
|
||||||
|
*
|
||||||
|
* @param msg 返回内容
|
||||||
|
* @return 警告消息
|
||||||
|
*/
|
||||||
|
public static AjaxResult error(String msg)
|
||||||
|
{
|
||||||
|
return AjaxResult.error(msg, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 返回错误消息
|
||||||
|
*
|
||||||
|
* @param msg 返回内容
|
||||||
|
* @param data 数据对象
|
||||||
|
* @return 警告消息
|
||||||
|
*/
|
||||||
|
public static AjaxResult error(String msg, Object data)
|
||||||
|
{
|
||||||
|
return new AjaxResult(Type.ERROR, msg, data);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Type getType()
|
||||||
|
{
|
||||||
|
return type;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setType(Type type)
|
||||||
|
{
|
||||||
|
this.type = type;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getCode()
|
||||||
|
{
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCode(int code)
|
||||||
|
{
|
||||||
|
this.code = code;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getMsg()
|
||||||
|
{
|
||||||
|
return msg;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMsg(String msg)
|
||||||
|
{
|
||||||
|
this.msg = msg;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Object getData()
|
||||||
|
{
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setData(Object data)
|
||||||
|
{
|
||||||
|
this.data = data;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
|
||||||
|
.append("code", getCode())
|
||||||
|
.append("msg", getMsg())
|
||||||
|
.append("data", getData())
|
||||||
|
.toString();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
<parent>
|
<parent>
|
||||||
<artifactId>ruoyi</artifactId>
|
<artifactId>ruoyi</artifactId>
|
||||||
<groupId>com.ruoyi</groupId>
|
<groupId>com.ruoyi</groupId>
|
||||||
<version>3.2</version>
|
<version>3.3</version>
|
||||||
</parent>
|
</parent>
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
<parent>
|
<parent>
|
||||||
<artifactId>ruoyi</artifactId>
|
<artifactId>ruoyi</artifactId>
|
||||||
<groupId>com.ruoyi</groupId>
|
<groupId>com.ruoyi</groupId>
|
||||||
<version>3.2</version>
|
<version>3.3</version>
|
||||||
</parent>
|
</parent>
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
|
@ -18,10 +18,10 @@
|
||||||
<dependencies>
|
<dependencies>
|
||||||
|
|
||||||
<!--Shiro核心框架 -->
|
<!--Shiro核心框架 -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.apache.shiro</groupId>
|
<groupId>org.apache.shiro</groupId>
|
||||||
<artifactId>shiro-core</artifactId>
|
<artifactId>shiro-core</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!--velocity代码生成使用模板 -->
|
<!--velocity代码生成使用模板 -->
|
||||||
<dependency>
|
<dependency>
|
||||||
|
|
|
@ -209,7 +209,7 @@ public class GenUtils
|
||||||
|
|
||||||
public static String replaceKeyword(String keyword)
|
public static String replaceKeyword(String keyword)
|
||||||
{
|
{
|
||||||
String keyName = keyword.replaceAll("(?:表|信息)", "");
|
String keyName = keyword.replaceAll("(?:表|信息|管理)", "");
|
||||||
return keyName;
|
return keyName;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
|
<html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
|
||||||
<meta charset="utf-8">
|
<head>
|
||||||
<head th:include="include :: header"></head>
|
<th:block th:include="include :: header('代码生成列表')" />
|
||||||
|
</head>
|
||||||
<body class="gray-bg">
|
<body class="gray-bg">
|
||||||
|
|
||||||
<div class="container-div">
|
<div class="container-div">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-sm-12 search-collapse">
|
<div class="col-sm-12 search-collapse">
|
||||||
|
@ -42,7 +42,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div th:include="include :: footer"></div>
|
<th:block th:include="include :: footer" />
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var prefix = ctx + "tool/gen";
|
var prefix = ctx + "tool/gen";
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
<!DOCTYPE HTML>
|
<!DOCTYPE html>
|
||||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org">
|
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
|
||||||
<meta charset="utf-8">
|
<head>
|
||||||
<head th:include="include :: header"></head>
|
<th:block th:include="include :: header('新增${tableComment}')" />
|
||||||
|
</head>
|
||||||
<body class="white-bg">
|
<body class="white-bg">
|
||||||
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
|
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
|
||||||
<form class="form-horizontal m" id="form-${classname}-add">
|
<form class="form-horizontal m" id="form-${classname}-add">
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
<!DOCTYPE HTML>
|
<!DOCTYPE html>
|
||||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org">
|
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
|
||||||
<meta charset="utf-8">
|
<head>
|
||||||
<head th:include="include :: header"></head>
|
<th:block th:include="include :: header('修改${tableComment}')" />
|
||||||
|
</head>
|
||||||
<body class="white-bg">
|
<body class="white-bg">
|
||||||
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
|
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
|
||||||
<form class="form-horizontal m" id="form-${classname}-edit" th:object="${${classname}}">
|
<form class="form-horizontal m" id="form-${classname}-edit" th:object="${${classname}}">
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
<!DOCTYPE HTML>
|
<!DOCTYPE html>
|
||||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
|
<html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
|
||||||
<meta charset="utf-8">
|
<head>
|
||||||
<head th:include="include :: header"></head>
|
<th:block th:include="include :: header('${tableComment}列表')" />
|
||||||
|
</head>
|
||||||
<body class="gray-bg">
|
<body class="gray-bg">
|
||||||
|
|
||||||
<div class="container-div">
|
<div class="container-div">
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
<parent>
|
<parent>
|
||||||
<artifactId>ruoyi</artifactId>
|
<artifactId>ruoyi</artifactId>
|
||||||
<groupId>com.ruoyi</groupId>
|
<groupId>com.ruoyi</groupId>
|
||||||
<version>3.2</version>
|
<version>3.3</version>
|
||||||
</parent>
|
</parent>
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
|
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
|
||||||
<meta charset="utf-8">
|
<head>
|
||||||
<head th:include="include :: header"></head>
|
<th:block th:include="include :: header('新增定时任务')" />
|
||||||
|
</head>
|
||||||
<body class="white-bg">
|
<body class="white-bg">
|
||||||
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
|
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
|
||||||
<form class="form-horizontal m" id="form-job-add">
|
<form class="form-horizontal m" id="form-job-add">
|
||||||
|
@ -67,7 +68,7 @@
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
<div th:include="include::footer"></div>
|
<th:block th:include="include :: footer" />
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var prefix = ctx + "monitor/job";
|
var prefix = ctx + "monitor/job";
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org"
|
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
|
||||||
xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
|
<head>
|
||||||
<meta charset="utf-8">
|
<th:block th:include="include :: header('定时任务详细')" />
|
||||||
<head th:include="include :: header"></head>
|
</head>
|
||||||
<body class="white-bg">
|
<body class="white-bg">
|
||||||
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
|
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
|
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
|
||||||
<meta charset="utf-8">
|
<head>
|
||||||
<head th:include="include :: header"></head>
|
<th:block th:include="include :: header('修改定时任务')" />
|
||||||
|
</head>
|
||||||
<body class="white-bg">
|
<body class="white-bg">
|
||||||
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
|
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
|
||||||
<form class="form-horizontal m" id="form-job-edit" th:object="${job}">
|
<form class="form-horizontal m" id="form-job-edit" th:object="${job}">
|
||||||
|
@ -68,7 +69,7 @@
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
<div th:include="include::footer"></div>
|
<th:block th:include="include :: footer" />
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var prefix = ctx + "monitor/job";
|
var prefix = ctx + "monitor/job";
|
||||||
|
|
||||||
|
|
|
@ -1,10 +1,9 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org"
|
<html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
|
||||||
xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
|
<head>
|
||||||
<meta charset="utf-8">
|
<th:block th:include="include :: header('定时任务列表')" />
|
||||||
<head th:include="include :: header"></head>
|
</head>
|
||||||
<body class="gray-bg">
|
<body class="gray-bg">
|
||||||
|
|
||||||
<div class="container-div">
|
<div class="container-div">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-sm-12 search-collapse">
|
<div class="col-sm-12 search-collapse">
|
||||||
|
@ -55,7 +54,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div th:include="include :: footer"></div>
|
<th:block th:include="include :: footer" />
|
||||||
<script th:inline="javascript">
|
<script th:inline="javascript">
|
||||||
var detailFlag = [[${@permission.hasPermi('monitor:job:detail')}]];
|
var detailFlag = [[${@permission.hasPermi('monitor:job:detail')}]];
|
||||||
var editFlag = [[${@permission.hasPermi('monitor:job:edit')}]];
|
var editFlag = [[${@permission.hasPermi('monitor:job:edit')}]];
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org"
|
<html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
|
||||||
xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
|
<head>
|
||||||
<meta charset="utf-8">
|
<th:block th:include="include :: header('定时任务日志列表')" />
|
||||||
<head th:include="include :: header"></head>
|
</head>
|
||||||
<body class="gray-bg">
|
<body class="gray-bg">
|
||||||
|
|
||||||
<div class="container-div">
|
<div class="container-div">
|
||||||
|
@ -55,7 +55,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div th:include="include :: footer"></div>
|
<th:block th:include="include :: footer" />
|
||||||
<script th:inline="javascript">
|
<script th:inline="javascript">
|
||||||
var detailFlag = [[${@permission.hasPermi('monitor:job:detail')}]];
|
var detailFlag = [[${@permission.hasPermi('monitor:job:detail')}]];
|
||||||
var datas = [[${@dict.getType('sys_common_status')}]];
|
var datas = [[${@dict.getType('sys_common_status')}]];
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
<parent>
|
<parent>
|
||||||
<artifactId>ruoyi</artifactId>
|
<artifactId>ruoyi</artifactId>
|
||||||
<groupId>com.ruoyi</groupId>
|
<groupId>com.ruoyi</groupId>
|
||||||
<version>3.2</version>
|
<version>3.3</version>
|
||||||
</parent>
|
</parent>
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
|
@ -23,7 +23,7 @@
|
||||||
<artifactId>mysql-connector-java</artifactId>
|
<artifactId>mysql-connector-java</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!-- 通用工具-->
|
<!-- 通用工具-->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.ruoyi</groupId>
|
<groupId>com.ruoyi</groupId>
|
||||||
<artifactId>ruoyi-common</artifactId>
|
<artifactId>ruoyi-common</artifactId>
|
||||||
|
|
|
@ -27,6 +27,9 @@ public class SysUser extends BaseEntity
|
||||||
|
|
||||||
/** 部门父ID */
|
/** 部门父ID */
|
||||||
private Long parentId;
|
private Long parentId;
|
||||||
|
|
||||||
|
/** 角色ID */
|
||||||
|
private Long roleId;
|
||||||
|
|
||||||
/** 登录名称 */
|
/** 登录名称 */
|
||||||
@Excel(name = "登录名称")
|
@Excel(name = "登录名称")
|
||||||
|
@ -124,6 +127,16 @@ public class SysUser extends BaseEntity
|
||||||
this.parentId = parentId;
|
this.parentId = parentId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Long getRoleId()
|
||||||
|
{
|
||||||
|
return roleId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRoleId(Long roleId)
|
||||||
|
{
|
||||||
|
this.roleId = roleId;
|
||||||
|
}
|
||||||
|
|
||||||
public String getLoginName()
|
public String getLoginName()
|
||||||
{
|
{
|
||||||
return loginName;
|
return loginName;
|
||||||
|
|
|
@ -11,13 +11,29 @@ import com.ruoyi.system.domain.SysUser;
|
||||||
public interface SysUserMapper
|
public interface SysUserMapper
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* 根据条件分页查询用户对象
|
* 根据条件分页查询用户列表
|
||||||
*
|
*
|
||||||
* @param sysUser 用户信息
|
* @param sysUser 用户信息
|
||||||
* @return 用户信息集合信息
|
* @return 用户信息集合信息
|
||||||
*/
|
*/
|
||||||
public List<SysUser> selectUserList(SysUser sysUser);
|
public List<SysUser> selectUserList(SysUser sysUser);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据条件分页查询未已配用户角色列表
|
||||||
|
*
|
||||||
|
* @param user 用户信息
|
||||||
|
* @return 用户信息集合信息
|
||||||
|
*/
|
||||||
|
public List<SysUser> selectAllocatedList(SysUser user);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据条件分页查询未分配用户角色列表
|
||||||
|
*
|
||||||
|
* @param user 用户信息
|
||||||
|
* @return 用户信息集合信息
|
||||||
|
*/
|
||||||
|
public List<SysUser> selectUnallocatedList(SysUser user);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 通过用户名查询用户
|
* 通过用户名查询用户
|
||||||
*
|
*
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package com.ruoyi.system.mapper;
|
package com.ruoyi.system.mapper;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
import com.ruoyi.system.domain.SysUserRole;
|
import com.ruoyi.system.domain.SysUserRole;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -41,4 +42,21 @@ public interface SysUserRoleMapper
|
||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
public int batchUserRole(List<SysUserRole> userRoleList);
|
public int batchUserRole(List<SysUserRole> userRoleList);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除用户和角色关联信息
|
||||||
|
*
|
||||||
|
* @param userRole 用户和角色关联信息
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
public int deleteUserRoleInfo(SysUserRole userRole);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量取消授权用户角色
|
||||||
|
*
|
||||||
|
* @param roleId 角色ID
|
||||||
|
* @param userIds 需要删除的用户数据ID
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
public int deleteUserRoleInfos(@Param("roleId") Long roleId, @Param("userIds") Long[] userIds);
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,6 +3,7 @@ package com.ruoyi.system.service;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import com.ruoyi.system.domain.SysRole;
|
import com.ruoyi.system.domain.SysRole;
|
||||||
|
import com.ruoyi.system.domain.SysUserRole;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 角色业务层
|
* 角色业务层
|
||||||
|
@ -89,7 +90,7 @@ public interface ISysRoleService
|
||||||
* @param role 角色信息
|
* @param role 角色信息
|
||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
public int updateRule(SysRole role);
|
public int authDataScope(SysRole role);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 校验角色名称是否唯一
|
* 校验角色名称是否唯一
|
||||||
|
@ -122,4 +123,29 @@ public interface ISysRoleService
|
||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
public int changeStatus(SysRole role);
|
public int changeStatus(SysRole role);
|
||||||
|
/**
|
||||||
|
* 取消授权用户角色
|
||||||
|
*
|
||||||
|
* @param userRole 用户和角色关联信息
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
public int deleteAuthUser(SysUserRole userRole);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量取消授权用户角色
|
||||||
|
*
|
||||||
|
* @param roleId 角色ID
|
||||||
|
* @param userIds 需要删除的用户数据ID
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
public int deleteAuthUsers(Long roleId, String userIds);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量选择授权用户角色
|
||||||
|
*
|
||||||
|
* @param roleId 角色ID
|
||||||
|
* @param userIds 需要删除的用户数据ID
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
public int insertAuthUsers(Long roleId, String userIds);
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,13 +11,29 @@ import com.ruoyi.system.domain.SysUser;
|
||||||
public interface ISysUserService
|
public interface ISysUserService
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* 根据条件分页查询用户对象
|
* 根据条件分页查询用户列表
|
||||||
*
|
*
|
||||||
* @param user 用户信息
|
* @param user 用户信息
|
||||||
* @return 用户信息集合信息
|
* @return 用户信息集合信息
|
||||||
*/
|
*/
|
||||||
public List<SysUser> selectUserList(SysUser user);
|
public List<SysUser> selectUserList(SysUser user);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据条件分页查询已分配用户角色列表
|
||||||
|
*
|
||||||
|
* @param user 用户信息
|
||||||
|
* @return 用户信息集合信息
|
||||||
|
*/
|
||||||
|
public List<SysUser> selectAllocatedList(SysUser user);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据条件分页查询未分配用户角色列表
|
||||||
|
*
|
||||||
|
* @param user 用户信息
|
||||||
|
* @return 用户信息集合信息
|
||||||
|
*/
|
||||||
|
public List<SysUser> selectUnallocatedList(SysUser user);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 通过用户名查询用户
|
* 通过用户名查询用户
|
||||||
*
|
*
|
||||||
|
|
|
@ -16,6 +16,7 @@ import com.ruoyi.common.utils.StringUtils;
|
||||||
import com.ruoyi.system.domain.SysRole;
|
import com.ruoyi.system.domain.SysRole;
|
||||||
import com.ruoyi.system.domain.SysRoleDept;
|
import com.ruoyi.system.domain.SysRoleDept;
|
||||||
import com.ruoyi.system.domain.SysRoleMenu;
|
import com.ruoyi.system.domain.SysRoleMenu;
|
||||||
|
import com.ruoyi.system.domain.SysUserRole;
|
||||||
import com.ruoyi.system.mapper.SysRoleDeptMapper;
|
import com.ruoyi.system.mapper.SysRoleDeptMapper;
|
||||||
import com.ruoyi.system.mapper.SysRoleMapper;
|
import com.ruoyi.system.mapper.SysRoleMapper;
|
||||||
import com.ruoyi.system.mapper.SysRoleMenuMapper;
|
import com.ruoyi.system.mapper.SysRoleMenuMapper;
|
||||||
|
@ -197,7 +198,7 @@ public class SysRoleServiceImpl implements ISysRoleService
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
@Transactional
|
@Transactional
|
||||||
public int updateRule(SysRole role)
|
public int authDataScope(SysRole role)
|
||||||
{
|
{
|
||||||
// 修改角色信息
|
// 修改角色信息
|
||||||
roleMapper.updateRole(role);
|
roleMapper.updateRole(role);
|
||||||
|
@ -314,4 +315,49 @@ public class SysRoleServiceImpl implements ISysRoleService
|
||||||
{
|
{
|
||||||
return roleMapper.updateRole(role);
|
return roleMapper.updateRole(role);
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* 取消授权用户角色
|
||||||
|
*
|
||||||
|
* @param userRole 用户和角色关联信息
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public int deleteAuthUser(SysUserRole userRole)
|
||||||
|
{
|
||||||
|
return userRoleMapper.deleteUserRoleInfo(userRole);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量取消授权用户角色
|
||||||
|
*
|
||||||
|
* @param roleId 角色ID
|
||||||
|
* @param userIds 需要删除的用户数据ID
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
public int deleteAuthUsers(Long roleId, String userIds)
|
||||||
|
{
|
||||||
|
return userRoleMapper.deleteUserRoleInfos(roleId, Convert.toLongArray(userIds));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量选择授权用户角色
|
||||||
|
*
|
||||||
|
* @param roleId 角色ID
|
||||||
|
* @param userIds 需要删除的用户数据ID
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
public int insertAuthUsers(Long roleId, String userIds)
|
||||||
|
{
|
||||||
|
Long[] users = Convert.toLongArray(userIds);
|
||||||
|
// 新增用户与角色管理
|
||||||
|
List<SysUserRole> list = new ArrayList<SysUserRole>();
|
||||||
|
for (Long userId : users)
|
||||||
|
{
|
||||||
|
SysUserRole ur = new SysUserRole();
|
||||||
|
ur.setUserId(userId);
|
||||||
|
ur.setRoleId(roleId);
|
||||||
|
list.add(ur);
|
||||||
|
}
|
||||||
|
return userRoleMapper.batchUserRole(list);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -55,10 +55,9 @@ public class SysUserServiceImpl implements ISysUserService
|
||||||
private ISysConfigService configService;
|
private ISysConfigService configService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据条件分页查询用户对象
|
* 根据条件分页查询用户列表
|
||||||
*
|
*
|
||||||
* @param user 用户信息
|
* @param user 用户信息
|
||||||
*
|
|
||||||
* @return 用户信息集合信息
|
* @return 用户信息集合信息
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
|
@ -68,6 +67,30 @@ public class SysUserServiceImpl implements ISysUserService
|
||||||
return userMapper.selectUserList(user);
|
return userMapper.selectUserList(user);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据条件分页查询已分配用户角色列表
|
||||||
|
*
|
||||||
|
* @param user 用户信息
|
||||||
|
* @return 用户信息集合信息
|
||||||
|
*/
|
||||||
|
@DataScope(tableAlias = "u")
|
||||||
|
public List<SysUser> selectAllocatedList(SysUser user)
|
||||||
|
{
|
||||||
|
return userMapper.selectAllocatedList(user);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据条件分页查询未分配用户角色列表
|
||||||
|
*
|
||||||
|
* @param user 用户信息
|
||||||
|
* @return 用户信息集合信息
|
||||||
|
*/
|
||||||
|
@DataScope(tableAlias = "u")
|
||||||
|
public List<SysUser> selectUnallocatedList(SysUser user)
|
||||||
|
{
|
||||||
|
return userMapper.selectUnallocatedList(user);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 通过用户名查询用户
|
* 通过用户名查询用户
|
||||||
*
|
*
|
||||||
|
|
|
@ -81,6 +81,41 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
${params.dataScope}
|
${params.dataScope}
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<select id="selectAllocatedList" parameterType="SysUser" resultMap="SysUserResult">
|
||||||
|
select distinct u.user_id, u.dept_id, u.login_name, u.user_name, u.email, u.phonenumber, u.status, u.create_time
|
||||||
|
from sys_user u
|
||||||
|
left join sys_dept d on u.dept_id = d.dept_id
|
||||||
|
left join sys_user_role ur on u.user_id = ur.user_id
|
||||||
|
left join sys_role r on r.role_id = ur.role_id
|
||||||
|
where u.del_flag = '0' and r.role_id = #{roleId}
|
||||||
|
<if test="loginName != null and loginName != ''">
|
||||||
|
AND u.login_name like concat('%', #{loginName}, '%')
|
||||||
|
</if>
|
||||||
|
<if test="phonenumber != null and phonenumber != ''">
|
||||||
|
AND u.phonenumber like concat('%', #{phonenumber}, '%')
|
||||||
|
</if>
|
||||||
|
<!-- 数据范围过滤 -->
|
||||||
|
${params.dataScope}
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<select id="selectUnallocatedList" parameterType="SysUser" resultMap="SysUserResult">
|
||||||
|
select distinct u.user_id, u.dept_id, u.login_name, u.user_name, u.email, u.phonenumber, u.status, u.create_time
|
||||||
|
from sys_user u
|
||||||
|
left join sys_dept d on u.dept_id = d.dept_id
|
||||||
|
left join sys_user_role ur on u.user_id = ur.user_id
|
||||||
|
left join sys_role r on r.role_id = ur.role_id
|
||||||
|
where u.del_flag = '0' and (r.role_id != #{roleId} or r.role_id IS NULL)
|
||||||
|
and u.user_id not in (select u.user_id from sys_user u inner join sys_user_role ur on u.user_id = ur.user_id and ur.role_id = #{roleId})
|
||||||
|
<if test="loginName != null and loginName != ''">
|
||||||
|
AND u.login_name like concat('%', #{loginName}, '%')
|
||||||
|
</if>
|
||||||
|
<if test="phonenumber != null and phonenumber != ''">
|
||||||
|
AND u.phonenumber like concat('%', #{phonenumber}, '%')
|
||||||
|
</if>
|
||||||
|
<!-- 数据范围过滤 -->
|
||||||
|
${params.dataScope}
|
||||||
|
</select>
|
||||||
|
|
||||||
<select id="selectUserByLoginName" parameterType="String" resultMap="SysUserResult">
|
<select id="selectUserByLoginName" parameterType="String" resultMap="SysUserResult">
|
||||||
<include refid="selectUserVo"/>
|
<include refid="selectUserVo"/>
|
||||||
where u.login_name = #{userName}
|
where u.login_name = #{userName}
|
||||||
|
|
|
@ -31,4 +31,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
</foreach>
|
</foreach>
|
||||||
</insert>
|
</insert>
|
||||||
|
|
||||||
|
<delete id="deleteUserRoleInfo" parameterType="SysUserRole">
|
||||||
|
delete from sys_user_role where user_id=#{userId} and role_id=#{roleId}
|
||||||
|
</delete>
|
||||||
|
|
||||||
|
<delete id="deleteUserRoleInfos">
|
||||||
|
delete from sys_user_role where role_id=#{roleId} and user_id in
|
||||||
|
<foreach collection="userIds" item="userId" open="(" separator="," close=")">
|
||||||
|
#{userId}
|
||||||
|
</foreach>
|
||||||
|
</delete>
|
||||||
</mapper>
|
</mapper>
|
|
@ -14,7 +14,7 @@ create table QRTZ_JOB_DETAILS (
|
||||||
requests_recovery varchar(1) not null,
|
requests_recovery varchar(1) not null,
|
||||||
job_data blob null,
|
job_data blob null,
|
||||||
primary key (sched_name,job_name,job_group)
|
primary key (sched_name,job_name,job_group)
|
||||||
) engine=innodb default charset=utf8;
|
) engine=innodb;
|
||||||
|
|
||||||
-- ----------------------------
|
-- ----------------------------
|
||||||
-- 2、 存储已配置的 Trigger 的信息
|
-- 2、 存储已配置的 Trigger 的信息
|
||||||
|
@ -39,7 +39,7 @@ create table QRTZ_TRIGGERS (
|
||||||
job_data blob null,
|
job_data blob null,
|
||||||
primary key (sched_name,trigger_name,trigger_group),
|
primary key (sched_name,trigger_name,trigger_group),
|
||||||
foreign key (sched_name,job_name,job_group) references QRTZ_JOB_DETAILS(sched_name,job_name,job_group)
|
foreign key (sched_name,job_name,job_group) references QRTZ_JOB_DETAILS(sched_name,job_name,job_group)
|
||||||
) engine=innodb default charset=utf8;
|
) engine=innodb;
|
||||||
|
|
||||||
-- ----------------------------
|
-- ----------------------------
|
||||||
-- 3、 存储简单的 Trigger,包括重复次数,间隔,以及已触发的次数
|
-- 3、 存储简单的 Trigger,包括重复次数,间隔,以及已触发的次数
|
||||||
|
@ -54,7 +54,7 @@ create table QRTZ_SIMPLE_TRIGGERS (
|
||||||
times_triggered bigint(10) not null,
|
times_triggered bigint(10) not null,
|
||||||
primary key (sched_name,trigger_name,trigger_group),
|
primary key (sched_name,trigger_name,trigger_group),
|
||||||
foreign key (sched_name,trigger_name,trigger_group) references QRTZ_TRIGGERS(sched_name,trigger_name,trigger_group)
|
foreign key (sched_name,trigger_name,trigger_group) references QRTZ_TRIGGERS(sched_name,trigger_name,trigger_group)
|
||||||
) engine=innodb default charset=utf8;
|
) engine=innodb;
|
||||||
|
|
||||||
-- ----------------------------
|
-- ----------------------------
|
||||||
-- 4、 存储 Cron Trigger,包括 Cron 表达式和时区信息
|
-- 4、 存储 Cron Trigger,包括 Cron 表达式和时区信息
|
||||||
|
@ -68,7 +68,7 @@ create table QRTZ_CRON_TRIGGERS (
|
||||||
time_zone_id varchar(80),
|
time_zone_id varchar(80),
|
||||||
primary key (sched_name,trigger_name,trigger_group),
|
primary key (sched_name,trigger_name,trigger_group),
|
||||||
foreign key (sched_name,trigger_name,trigger_group) references QRTZ_TRIGGERS(sched_name,trigger_name,trigger_group)
|
foreign key (sched_name,trigger_name,trigger_group) references QRTZ_TRIGGERS(sched_name,trigger_name,trigger_group)
|
||||||
) engine=innodb default charset=utf8;
|
) engine=innodb;
|
||||||
|
|
||||||
-- ----------------------------
|
-- ----------------------------
|
||||||
-- 5、 Trigger 作为 Blob 类型存储(用于 Quartz 用户用 JDBC 创建他们自己定制的 Trigger 类型,JobStore 并不知道如何存储实例的时候)
|
-- 5、 Trigger 作为 Blob 类型存储(用于 Quartz 用户用 JDBC 创建他们自己定制的 Trigger 类型,JobStore 并不知道如何存储实例的时候)
|
||||||
|
@ -81,7 +81,7 @@ create table QRTZ_BLOB_TRIGGERS (
|
||||||
blob_data blob null,
|
blob_data blob null,
|
||||||
primary key (sched_name,trigger_name,trigger_group),
|
primary key (sched_name,trigger_name,trigger_group),
|
||||||
foreign key (sched_name,trigger_name,trigger_group) references QRTZ_TRIGGERS(sched_name,trigger_name,trigger_group)
|
foreign key (sched_name,trigger_name,trigger_group) references QRTZ_TRIGGERS(sched_name,trigger_name,trigger_group)
|
||||||
) engine=innodb default charset=utf8;
|
) engine=innodb;
|
||||||
|
|
||||||
-- ----------------------------
|
-- ----------------------------
|
||||||
-- 6、 以 Blob 类型存储存放日历信息, quartz可配置一个日历来指定一个时间范围
|
-- 6、 以 Blob 类型存储存放日历信息, quartz可配置一个日历来指定一个时间范围
|
||||||
|
@ -92,7 +92,7 @@ create table QRTZ_CALENDARS (
|
||||||
calendar_name varchar(200) not null,
|
calendar_name varchar(200) not null,
|
||||||
calendar blob not null,
|
calendar blob not null,
|
||||||
primary key (sched_name,calendar_name)
|
primary key (sched_name,calendar_name)
|
||||||
) engine=innodb default charset=utf8;
|
) engine=innodb;
|
||||||
|
|
||||||
-- ----------------------------
|
-- ----------------------------
|
||||||
-- 7、 存储已暂停的 Trigger 组的信息
|
-- 7、 存储已暂停的 Trigger 组的信息
|
||||||
|
@ -102,7 +102,7 @@ create table QRTZ_PAUSED_TRIGGER_GRPS (
|
||||||
sched_name varchar(120) not null,
|
sched_name varchar(120) not null,
|
||||||
trigger_group varchar(200) not null,
|
trigger_group varchar(200) not null,
|
||||||
primary key (sched_name,trigger_group)
|
primary key (sched_name,trigger_group)
|
||||||
) engine=innodb default charset=utf8;
|
) engine=innodb;
|
||||||
|
|
||||||
-- ----------------------------
|
-- ----------------------------
|
||||||
-- 8、 存储与已触发的 Trigger 相关的状态信息,以及相联 Job 的执行信息
|
-- 8、 存储与已触发的 Trigger 相关的状态信息,以及相联 Job 的执行信息
|
||||||
|
@ -123,7 +123,7 @@ create table QRTZ_FIRED_TRIGGERS (
|
||||||
is_nonconcurrent varchar(1) null,
|
is_nonconcurrent varchar(1) null,
|
||||||
requests_recovery varchar(1) null,
|
requests_recovery varchar(1) null,
|
||||||
primary key (sched_name,entry_id)
|
primary key (sched_name,entry_id)
|
||||||
) engine=innodb default charset=utf8;
|
) engine=innodb;
|
||||||
|
|
||||||
-- ----------------------------
|
-- ----------------------------
|
||||||
-- 9、 存储少量的有关 Scheduler 的状态信息,假如是用于集群中,可以看到其他的 Scheduler 实例
|
-- 9、 存储少量的有关 Scheduler 的状态信息,假如是用于集群中,可以看到其他的 Scheduler 实例
|
||||||
|
@ -135,7 +135,7 @@ create table QRTZ_SCHEDULER_STATE (
|
||||||
last_checkin_time bigint(13) not null,
|
last_checkin_time bigint(13) not null,
|
||||||
checkin_interval bigint(13) not null,
|
checkin_interval bigint(13) not null,
|
||||||
primary key (sched_name,instance_name)
|
primary key (sched_name,instance_name)
|
||||||
) engine=innodb default charset=utf8;
|
) engine=innodb;
|
||||||
|
|
||||||
-- ----------------------------
|
-- ----------------------------
|
||||||
-- 10、 存储程序的悲观锁的信息(假如使用了悲观锁)
|
-- 10、 存储程序的悲观锁的信息(假如使用了悲观锁)
|
||||||
|
@ -145,7 +145,7 @@ create table QRTZ_LOCKS (
|
||||||
sched_name varchar(120) not null,
|
sched_name varchar(120) not null,
|
||||||
lock_name varchar(40) not null,
|
lock_name varchar(40) not null,
|
||||||
primary key (sched_name,lock_name)
|
primary key (sched_name,lock_name)
|
||||||
) engine=innodb default charset=utf8;
|
) engine=innodb;
|
||||||
|
|
||||||
drop table if exists QRTZ_SIMPROP_TRIGGERS;
|
drop table if exists QRTZ_SIMPROP_TRIGGERS;
|
||||||
create table QRTZ_SIMPROP_TRIGGERS (
|
create table QRTZ_SIMPROP_TRIGGERS (
|
||||||
|
@ -165,6 +165,6 @@ create table QRTZ_SIMPROP_TRIGGERS (
|
||||||
bool_prop_2 varchar(1) null,
|
bool_prop_2 varchar(1) null,
|
||||||
primary key (sched_name,trigger_name,trigger_group),
|
primary key (sched_name,trigger_name,trigger_group),
|
||||||
foreign key (sched_name,trigger_name,trigger_group) references QRTZ_TRIGGERS(sched_name,trigger_name,trigger_group)
|
foreign key (sched_name,trigger_name,trigger_group) references QRTZ_TRIGGERS(sched_name,trigger_name,trigger_group)
|
||||||
) engine=innodb default charset=utf8;
|
) engine=innodb;
|
||||||
|
|
||||||
commit;
|
commit;
|
|
@ -3,8 +3,8 @@
|
||||||
-- ----------------------------
|
-- ----------------------------
|
||||||
drop table if exists sys_dept;
|
drop table if exists sys_dept;
|
||||||
create table sys_dept (
|
create table sys_dept (
|
||||||
dept_id int(11) not null auto_increment comment '部门id',
|
dept_id bigint(20) not null auto_increment comment '部门id',
|
||||||
parent_id int(11) default 0 comment '父部门id',
|
parent_id bigint(20) default 0 comment '父部门id',
|
||||||
ancestors varchar(50) default '' comment '祖级列表',
|
ancestors varchar(50) default '' comment '祖级列表',
|
||||||
dept_name varchar(30) default '' comment '部门名称',
|
dept_name varchar(30) default '' comment '部门名称',
|
||||||
order_num int(4) default 0 comment '显示顺序',
|
order_num int(4) default 0 comment '显示顺序',
|
||||||
|
@ -18,7 +18,7 @@ create table sys_dept (
|
||||||
update_by varchar(64) default '' comment '更新者',
|
update_by varchar(64) default '' comment '更新者',
|
||||||
update_time datetime comment '更新时间',
|
update_time datetime comment '更新时间',
|
||||||
primary key (dept_id)
|
primary key (dept_id)
|
||||||
) engine=innodb auto_increment=200 default charset=utf8 comment = '部门表';
|
) engine=innodb auto_increment=200 comment = '部门表';
|
||||||
|
|
||||||
-- ----------------------------
|
-- ----------------------------
|
||||||
-- 初始化-部门表数据
|
-- 初始化-部门表数据
|
||||||
|
@ -39,8 +39,8 @@ insert into sys_dept values(109, 102, '0,100,102', '财务部门', 2, '若
|
||||||
-- ----------------------------
|
-- ----------------------------
|
||||||
drop table if exists sys_user;
|
drop table if exists sys_user;
|
||||||
create table sys_user (
|
create table sys_user (
|
||||||
user_id int(11) not null auto_increment comment '用户ID',
|
user_id bigint(20) not null auto_increment comment '用户ID',
|
||||||
dept_id int(11) default null comment '部门ID',
|
dept_id bigint(20) default null comment '部门ID',
|
||||||
login_name varchar(30) not null comment '登录账号',
|
login_name varchar(30) not null comment '登录账号',
|
||||||
user_name varchar(30) not null comment '用户昵称',
|
user_name varchar(30) not null comment '用户昵称',
|
||||||
user_type varchar(2) default '00' comment '用户类型(00系统用户)',
|
user_type varchar(2) default '00' comment '用户类型(00系统用户)',
|
||||||
|
@ -60,7 +60,7 @@ create table sys_user (
|
||||||
update_time datetime comment '更新时间',
|
update_time datetime comment '更新时间',
|
||||||
remark varchar(500) default '' comment '备注',
|
remark varchar(500) default '' comment '备注',
|
||||||
primary key (user_id)
|
primary key (user_id)
|
||||||
) engine=innodb auto_increment=100 default charset=utf8 comment = '用户信息表';
|
) engine=innodb auto_increment=100 comment = '用户信息表';
|
||||||
|
|
||||||
-- ----------------------------
|
-- ----------------------------
|
||||||
-- 初始化-用户信息表数据
|
-- 初始化-用户信息表数据
|
||||||
|
@ -75,7 +75,7 @@ insert into sys_user values(2, 105, 'ry', '若依', '00', 'ry@qq.com', '156
|
||||||
drop table if exists sys_post;
|
drop table if exists sys_post;
|
||||||
create table sys_post
|
create table sys_post
|
||||||
(
|
(
|
||||||
post_id int(11) not null auto_increment comment '岗位ID',
|
post_id bigint(20) not null auto_increment comment '岗位ID',
|
||||||
post_code varchar(64) not null comment '岗位编码',
|
post_code varchar(64) not null comment '岗位编码',
|
||||||
post_name varchar(50) not null comment '岗位名称',
|
post_name varchar(50) not null comment '岗位名称',
|
||||||
post_sort int(4) not null comment '显示顺序',
|
post_sort int(4) not null comment '显示顺序',
|
||||||
|
@ -86,7 +86,7 @@ create table sys_post
|
||||||
update_time datetime comment '更新时间',
|
update_time datetime comment '更新时间',
|
||||||
remark varchar(500) default null comment '备注',
|
remark varchar(500) default null comment '备注',
|
||||||
primary key (post_id)
|
primary key (post_id)
|
||||||
) engine=innodb default charset=utf8 comment = '岗位信息表';
|
) engine=innodb comment = '岗位信息表';
|
||||||
|
|
||||||
-- ----------------------------
|
-- ----------------------------
|
||||||
-- 初始化-岗位信息表数据
|
-- 初始化-岗位信息表数据
|
||||||
|
@ -102,7 +102,7 @@ insert into sys_post values(4, 'user', '普通员工', 4, '0', 'admin', '2018-0
|
||||||
-- ----------------------------
|
-- ----------------------------
|
||||||
drop table if exists sys_role;
|
drop table if exists sys_role;
|
||||||
create table sys_role (
|
create table sys_role (
|
||||||
role_id int(11) not null auto_increment comment '角色ID',
|
role_id bigint(20) not null auto_increment comment '角色ID',
|
||||||
role_name varchar(30) not null comment '角色名称',
|
role_name varchar(30) not null comment '角色名称',
|
||||||
role_key varchar(100) not null comment '角色权限字符串',
|
role_key varchar(100) not null comment '角色权限字符串',
|
||||||
role_sort int(4) not null comment '显示顺序',
|
role_sort int(4) not null comment '显示顺序',
|
||||||
|
@ -115,7 +115,7 @@ create table sys_role (
|
||||||
update_time datetime comment '更新时间',
|
update_time datetime comment '更新时间',
|
||||||
remark varchar(500) default null comment '备注',
|
remark varchar(500) default null comment '备注',
|
||||||
primary key (role_id)
|
primary key (role_id)
|
||||||
) engine=innodb auto_increment=100 default charset=utf8 comment = '角色信息表';
|
) engine=innodb auto_increment=100 comment = '角色信息表';
|
||||||
|
|
||||||
-- ----------------------------
|
-- ----------------------------
|
||||||
-- 初始化-角色信息表数据
|
-- 初始化-角色信息表数据
|
||||||
|
@ -129,9 +129,9 @@ insert into sys_role values('2', '普通角色', 'common', 2, 2, '0', '0', 'admi
|
||||||
-- ----------------------------
|
-- ----------------------------
|
||||||
drop table if exists sys_menu;
|
drop table if exists sys_menu;
|
||||||
create table sys_menu (
|
create table sys_menu (
|
||||||
menu_id int(11) not null auto_increment comment '菜单ID',
|
menu_id bigint(20) not null auto_increment comment '菜单ID',
|
||||||
menu_name varchar(50) not null comment '菜单名称',
|
menu_name varchar(50) not null comment '菜单名称',
|
||||||
parent_id int(11) default 0 comment '父菜单ID',
|
parent_id bigint(20) default 0 comment '父菜单ID',
|
||||||
order_num int(4) default 0 comment '显示顺序',
|
order_num int(4) default 0 comment '显示顺序',
|
||||||
url varchar(200) default '#' comment '请求地址',
|
url varchar(200) default '#' comment '请求地址',
|
||||||
menu_type char(1) default '' comment '菜单类型(M目录 C菜单 F按钮)',
|
menu_type char(1) default '' comment '菜单类型(M目录 C菜单 F按钮)',
|
||||||
|
@ -144,7 +144,7 @@ create table sys_menu (
|
||||||
update_time datetime comment '更新时间',
|
update_time datetime comment '更新时间',
|
||||||
remark varchar(500) default '' comment '备注',
|
remark varchar(500) default '' comment '备注',
|
||||||
primary key (menu_id)
|
primary key (menu_id)
|
||||||
) engine=innodb auto_increment=2000 default charset=utf8 comment = '菜单权限表';
|
) engine=innodb auto_increment=2000 comment = '菜单权限表';
|
||||||
|
|
||||||
-- ----------------------------
|
-- ----------------------------
|
||||||
-- 初始化-菜单信息表数据
|
-- 初始化-菜单信息表数据
|
||||||
|
@ -251,10 +251,10 @@ insert into sys_menu values('1057', '生成代码', '114', '2', '#', 'F', '0',
|
||||||
-- ----------------------------
|
-- ----------------------------
|
||||||
drop table if exists sys_user_role;
|
drop table if exists sys_user_role;
|
||||||
create table sys_user_role (
|
create table sys_user_role (
|
||||||
user_id int(11) not null comment '用户ID',
|
user_id bigint(20) not null comment '用户ID',
|
||||||
role_id int(11) not null comment '角色ID',
|
role_id bigint(20) not null comment '角色ID',
|
||||||
primary key(user_id, role_id)
|
primary key(user_id, role_id)
|
||||||
) engine=innodb default charset=utf8 comment = '用户和角色关联表';
|
) engine=innodb comment = '用户和角色关联表';
|
||||||
|
|
||||||
-- ----------------------------
|
-- ----------------------------
|
||||||
-- 初始化-用户和角色关联表数据
|
-- 初始化-用户和角色关联表数据
|
||||||
|
@ -268,10 +268,10 @@ insert into sys_user_role values ('2', '2');
|
||||||
-- ----------------------------
|
-- ----------------------------
|
||||||
drop table if exists sys_role_menu;
|
drop table if exists sys_role_menu;
|
||||||
create table sys_role_menu (
|
create table sys_role_menu (
|
||||||
role_id int(11) not null comment '角色ID',
|
role_id bigint(20) not null comment '角色ID',
|
||||||
menu_id int(11) not null comment '菜单ID',
|
menu_id bigint(20) not null comment '菜单ID',
|
||||||
primary key(role_id, menu_id)
|
primary key(role_id, menu_id)
|
||||||
) engine=innodb default charset=utf8 comment = '角色和菜单关联表';
|
) engine=innodb comment = '角色和菜单关联表';
|
||||||
|
|
||||||
-- ----------------------------
|
-- ----------------------------
|
||||||
-- 初始化-角色和菜单关联表数据
|
-- 初始化-角色和菜单关联表数据
|
||||||
|
@ -361,10 +361,10 @@ insert into sys_role_menu values ('2', '1057');
|
||||||
-- ----------------------------
|
-- ----------------------------
|
||||||
drop table if exists sys_role_dept;
|
drop table if exists sys_role_dept;
|
||||||
create table sys_role_dept (
|
create table sys_role_dept (
|
||||||
role_id int(11) not null comment '角色ID',
|
role_id bigint(20) not null comment '角色ID',
|
||||||
dept_id int(11) not null comment '部门ID',
|
dept_id bigint(20) not null comment '部门ID',
|
||||||
primary key(role_id, dept_id)
|
primary key(role_id, dept_id)
|
||||||
) engine=innodb default charset=utf8 comment = '角色和部门关联表';
|
) engine=innodb comment = '角色和部门关联表';
|
||||||
|
|
||||||
-- ----------------------------
|
-- ----------------------------
|
||||||
-- 初始化-角色和部门关联表数据
|
-- 初始化-角色和部门关联表数据
|
||||||
|
@ -379,10 +379,10 @@ insert into sys_role_dept values ('2', '105');
|
||||||
drop table if exists sys_user_post;
|
drop table if exists sys_user_post;
|
||||||
create table sys_user_post
|
create table sys_user_post
|
||||||
(
|
(
|
||||||
user_id int(11) not null comment '用户ID',
|
user_id bigint(20) not null comment '用户ID',
|
||||||
post_id int(11) not null comment '岗位ID',
|
post_id bigint(20) not null comment '岗位ID',
|
||||||
primary key (user_id, post_id)
|
primary key (user_id, post_id)
|
||||||
) engine=innodb default charset=utf8 comment = '用户与岗位关联表';
|
) engine=innodb comment = '用户与岗位关联表';
|
||||||
|
|
||||||
-- ----------------------------
|
-- ----------------------------
|
||||||
-- 初始化-用户与岗位关联表数据
|
-- 初始化-用户与岗位关联表数据
|
||||||
|
@ -396,7 +396,7 @@ insert into sys_user_post values ('2', '2');
|
||||||
-- ----------------------------
|
-- ----------------------------
|
||||||
drop table if exists sys_oper_log;
|
drop table if exists sys_oper_log;
|
||||||
create table sys_oper_log (
|
create table sys_oper_log (
|
||||||
oper_id int(11) not null auto_increment comment '日志主键',
|
oper_id bigint(20) not null auto_increment comment '日志主键',
|
||||||
title varchar(50) default '' comment '模块标题',
|
title varchar(50) default '' comment '模块标题',
|
||||||
business_type int(2) default 0 comment '业务类型(0其它 1新增 2修改 3删除)',
|
business_type int(2) default 0 comment '业务类型(0其它 1新增 2修改 3删除)',
|
||||||
method varchar(100) default '' comment '方法名称',
|
method varchar(100) default '' comment '方法名称',
|
||||||
|
@ -411,7 +411,7 @@ create table sys_oper_log (
|
||||||
error_msg varchar(2000) default '' comment '错误消息',
|
error_msg varchar(2000) default '' comment '错误消息',
|
||||||
oper_time datetime comment '操作时间',
|
oper_time datetime comment '操作时间',
|
||||||
primary key (oper_id)
|
primary key (oper_id)
|
||||||
) engine=innodb auto_increment=100 default charset=utf8 comment = '操作日志记录';
|
) engine=innodb auto_increment=100 comment = '操作日志记录';
|
||||||
|
|
||||||
|
|
||||||
-- ----------------------------
|
-- ----------------------------
|
||||||
|
@ -420,7 +420,7 @@ create table sys_oper_log (
|
||||||
drop table if exists sys_dict_type;
|
drop table if exists sys_dict_type;
|
||||||
create table sys_dict_type
|
create table sys_dict_type
|
||||||
(
|
(
|
||||||
dict_id int(11) not null auto_increment comment '字典主键',
|
dict_id bigint(20) not null auto_increment comment '字典主键',
|
||||||
dict_name varchar(100) default '' comment '字典名称',
|
dict_name varchar(100) default '' comment '字典名称',
|
||||||
dict_type varchar(100) default '' comment '字典类型',
|
dict_type varchar(100) default '' comment '字典类型',
|
||||||
status char(1) default '0' comment '状态(0正常 1停用)',
|
status char(1) default '0' comment '状态(0正常 1停用)',
|
||||||
|
@ -431,7 +431,7 @@ create table sys_dict_type
|
||||||
remark varchar(500) default null comment '备注',
|
remark varchar(500) default null comment '备注',
|
||||||
primary key (dict_id),
|
primary key (dict_id),
|
||||||
unique (dict_type)
|
unique (dict_type)
|
||||||
) engine=innodb auto_increment=100 default charset=utf8 comment = '字典类型表';
|
) engine=innodb auto_increment=100 comment = '字典类型表';
|
||||||
|
|
||||||
insert into sys_dict_type values(1, '用户性别', 'sys_user_sex', '0', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '用户性别列表');
|
insert into sys_dict_type values(1, '用户性别', 'sys_user_sex', '0', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '用户性别列表');
|
||||||
insert into sys_dict_type values(2, '菜单状态', 'sys_show_hide', '0', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '菜单状态列表');
|
insert into sys_dict_type values(2, '菜单状态', 'sys_show_hide', '0', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '菜单状态列表');
|
||||||
|
@ -450,7 +450,7 @@ insert into sys_dict_type values(9, '系统状态', 'sys_common_status', '0',
|
||||||
drop table if exists sys_dict_data;
|
drop table if exists sys_dict_data;
|
||||||
create table sys_dict_data
|
create table sys_dict_data
|
||||||
(
|
(
|
||||||
dict_code int(11) not null auto_increment comment '字典编码',
|
dict_code bigint(20) not null auto_increment comment '字典编码',
|
||||||
dict_sort int(4) default 0 comment '字典排序',
|
dict_sort int(4) default 0 comment '字典排序',
|
||||||
dict_label varchar(100) default '' comment '字典标签',
|
dict_label varchar(100) default '' comment '字典标签',
|
||||||
dict_value varchar(100) default '' comment '字典键值',
|
dict_value varchar(100) default '' comment '字典键值',
|
||||||
|
@ -465,7 +465,7 @@ create table sys_dict_data
|
||||||
update_time datetime comment '更新时间',
|
update_time datetime comment '更新时间',
|
||||||
remark varchar(500) default null comment '备注',
|
remark varchar(500) default null comment '备注',
|
||||||
primary key (dict_code)
|
primary key (dict_code)
|
||||||
) engine=innodb auto_increment=100 default charset=utf8 comment = '字典数据表';
|
) engine=innodb auto_increment=100 comment = '字典数据表';
|
||||||
|
|
||||||
|
|
||||||
insert into sys_dict_data values(1, 1, '男', '0', 'sys_user_sex', '', '', 'Y', '0', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '性别男');
|
insert into sys_dict_data values(1, 1, '男', '0', 'sys_user_sex', '', '', 'Y', '0', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '性别男');
|
||||||
|
@ -512,7 +512,7 @@ create table sys_config (
|
||||||
update_time datetime comment '更新时间',
|
update_time datetime comment '更新时间',
|
||||||
remark varchar(500) default null comment '备注',
|
remark varchar(500) default null comment '备注',
|
||||||
primary key (config_id)
|
primary key (config_id)
|
||||||
) engine=innodb auto_increment=100 default charset=utf8 comment = '参数配置表';
|
) engine=innodb auto_increment=100 comment = '参数配置表';
|
||||||
|
|
||||||
insert into sys_config values(1, '主框架页-默认皮肤样式名称', 'sys.index.skinName', 'skin-blue', 'Y', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '蓝色 skin-blue、绿色 skin-green、紫色 skin-purple、红色 skin-red、黄色 skin-yellow' );
|
insert into sys_config values(1, '主框架页-默认皮肤样式名称', 'sys.index.skinName', 'skin-blue', 'Y', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '蓝色 skin-blue、绿色 skin-green、紫色 skin-purple、红色 skin-red、黄色 skin-yellow' );
|
||||||
insert into sys_config values(2, '用户管理-账号初始密码', 'sys.user.initPassword', '123456', 'Y', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '初始化密码 123456' );
|
insert into sys_config values(2, '用户管理-账号初始密码', 'sys.user.initPassword', '123456', 'Y', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '初始化密码 123456' );
|
||||||
|
@ -523,7 +523,7 @@ insert into sys_config values(2, '用户管理-账号初始密码', 'sys.use
|
||||||
-- ----------------------------
|
-- ----------------------------
|
||||||
drop table if exists sys_logininfor;
|
drop table if exists sys_logininfor;
|
||||||
create table sys_logininfor (
|
create table sys_logininfor (
|
||||||
info_id int(11) not null auto_increment comment '访问ID',
|
info_id bigint(20) not null auto_increment comment '访问ID',
|
||||||
login_name varchar(50) default '' comment '登录账号',
|
login_name varchar(50) default '' comment '登录账号',
|
||||||
ipaddr varchar(50) default '' comment '登录IP地址',
|
ipaddr varchar(50) default '' comment '登录IP地址',
|
||||||
login_location varchar(255) default '' comment '登录地点',
|
login_location varchar(255) default '' comment '登录地点',
|
||||||
|
@ -533,7 +533,7 @@ create table sys_logininfor (
|
||||||
msg varchar(255) default '' comment '提示消息',
|
msg varchar(255) default '' comment '提示消息',
|
||||||
login_time datetime comment '访问时间',
|
login_time datetime comment '访问时间',
|
||||||
primary key (info_id)
|
primary key (info_id)
|
||||||
) engine=innodb auto_increment=100 default charset=utf8 comment = '系统访问记录';
|
) engine=innodb auto_increment=100 comment = '系统访问记录';
|
||||||
|
|
||||||
|
|
||||||
-- ----------------------------
|
-- ----------------------------
|
||||||
|
@ -553,7 +553,7 @@ create table sys_user_online (
|
||||||
last_access_time datetime comment 'session最后访问时间',
|
last_access_time datetime comment 'session最后访问时间',
|
||||||
expire_time int(5) default 0 comment '超时时间,单位为分钟',
|
expire_time int(5) default 0 comment '超时时间,单位为分钟',
|
||||||
primary key (sessionId)
|
primary key (sessionId)
|
||||||
) engine=innodb default charset=utf8 comment = '在线用户记录';
|
) engine=innodb comment = '在线用户记录';
|
||||||
|
|
||||||
|
|
||||||
-- ----------------------------
|
-- ----------------------------
|
||||||
|
@ -561,7 +561,7 @@ create table sys_user_online (
|
||||||
-- ----------------------------
|
-- ----------------------------
|
||||||
drop table if exists sys_job;
|
drop table if exists sys_job;
|
||||||
create table sys_job (
|
create table sys_job (
|
||||||
job_id int(11) not null auto_increment comment '任务ID',
|
job_id bigint(20) not null auto_increment comment '任务ID',
|
||||||
job_name varchar(64) default '' comment '任务名称',
|
job_name varchar(64) default '' comment '任务名称',
|
||||||
job_group varchar(64) default '' comment '任务组名',
|
job_group varchar(64) default '' comment '任务组名',
|
||||||
method_name varchar(500) default '' comment '任务方法',
|
method_name varchar(500) default '' comment '任务方法',
|
||||||
|
@ -576,7 +576,7 @@ create table sys_job (
|
||||||
update_time datetime comment '更新时间',
|
update_time datetime comment '更新时间',
|
||||||
remark varchar(500) default '' comment '备注信息',
|
remark varchar(500) default '' comment '备注信息',
|
||||||
primary key (job_id, job_name, job_group)
|
primary key (job_id, job_name, job_group)
|
||||||
) engine=innodb auto_increment=100 default charset=utf8 comment = '定时任务调度表';
|
) engine=innodb auto_increment=100 comment = '定时任务调度表';
|
||||||
|
|
||||||
insert into sys_job values(1, 'ryTask', '系统默认(无参)', 'ryNoParams', '', '0/10 * * * * ?', '3', '1', '1', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '');
|
insert into sys_job values(1, 'ryTask', '系统默认(无参)', 'ryNoParams', '', '0/10 * * * * ?', '3', '1', '1', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '');
|
||||||
insert into sys_job values(2, 'ryTask', '系统默认(有参)', 'ryParams', 'ry', '0/20 * * * * ?', '3', '1', '1', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '');
|
insert into sys_job values(2, 'ryTask', '系统默认(有参)', 'ryParams', 'ry', '0/20 * * * * ?', '3', '1', '1', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '');
|
||||||
|
@ -587,7 +587,7 @@ insert into sys_job values(2, 'ryTask', '系统默认(有参)', 'ryParams',
|
||||||
-- ----------------------------
|
-- ----------------------------
|
||||||
drop table if exists sys_job_log;
|
drop table if exists sys_job_log;
|
||||||
create table sys_job_log (
|
create table sys_job_log (
|
||||||
job_log_id int(11) not null auto_increment comment '任务日志ID',
|
job_log_id bigint(20) not null auto_increment comment '任务日志ID',
|
||||||
job_name varchar(64) not null comment '任务名称',
|
job_name varchar(64) not null comment '任务名称',
|
||||||
job_group varchar(64) not null comment '任务组名',
|
job_group varchar(64) not null comment '任务组名',
|
||||||
method_name varchar(500) comment '任务方法',
|
method_name varchar(500) comment '任务方法',
|
||||||
|
@ -597,7 +597,7 @@ create table sys_job_log (
|
||||||
exception_info varchar(2000) default '' comment '异常信息',
|
exception_info varchar(2000) default '' comment '异常信息',
|
||||||
create_time datetime comment '创建时间',
|
create_time datetime comment '创建时间',
|
||||||
primary key (job_log_id)
|
primary key (job_log_id)
|
||||||
) engine=innodb default charset=utf8 comment = '定时任务调度日志表';
|
) engine=innodb comment = '定时任务调度日志表';
|
||||||
|
|
||||||
|
|
||||||
-- ----------------------------
|
-- ----------------------------
|
||||||
|
@ -616,7 +616,7 @@ create table sys_notice (
|
||||||
update_time datetime comment '更新时间',
|
update_time datetime comment '更新时间',
|
||||||
remark varchar(255) default null comment '备注',
|
remark varchar(255) default null comment '备注',
|
||||||
primary key (notice_id)
|
primary key (notice_id)
|
||||||
) engine=innodb auto_increment=10 default charset=utf8 comment = '通知公告表';
|
) engine=innodb auto_increment=10 comment = '通知公告表';
|
||||||
|
|
||||||
-- ----------------------------
|
-- ----------------------------
|
||||||
-- 初始化-公告信息表数据
|
-- 初始化-公告信息表数据
|
Loading…
Reference in New Issue