Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d066539616 | ||
|
|
5c736e96c9 | ||
|
|
0307599eed | ||
|
|
55da596a80 | ||
|
|
6fa8c991b8 | ||
|
|
51f98aa0cb | ||
|
|
07042ac9b1 | ||
|
|
3df553c488 | ||
|
|
5426ba9d5e | ||
|
|
6b9ee80ca4 | ||
|
|
05b5b314ee | ||
|
|
f8491c36e2 | ||
|
|
06751acbf9 | ||
|
|
567ab47ae9 | ||
|
|
82f8dadbae | ||
|
|
ca6a4b2ecf | ||
|
|
9247e004d0 | ||
|
|
e1e494de33 | ||
|
|
3988b12e72 | ||
|
|
c6bf712de4 | ||
|
|
18e0a2a27d | ||
|
|
6ce34b1790 | ||
|
|
b5678994da | ||
|
|
2aa98dcbe1 | ||
|
|
96d0bd2581 | ||
|
|
f826a79633 | ||
|
|
c958d6ec83 | ||
|
|
5cb3430791 | ||
|
|
d93e43cc2c | ||
|
|
47f007ba97 | ||
|
|
f96328ea6b | ||
|
|
2d55917f2e | ||
|
|
1c6e5cf665 | ||
|
|
9d316c44d2 | ||
|
|
2f8422278a | ||
|
|
98dd156396 | ||
|
|
b65263fdd7 | ||
|
|
21992c1be7 | ||
|
|
d80c1d2a73 | ||
|
|
55978c7f15 | ||
|
|
b2012e699b | ||
|
|
382d1868be | ||
|
|
82df046e59 | ||
|
|
4f116a6a77 | ||
|
|
77d3db4cb0 | ||
|
|
1155bcb22d | ||
|
|
208c4a8417 | ||
|
|
62a0018041 | ||
|
|
f276a83956 | ||
|
|
28b8f3e36f | ||
|
|
56a6e940c2 | ||
|
|
868edbc88c | ||
|
|
b05a539970 | ||
|
|
2c48aedda7 | ||
|
|
87b8d032ca | ||
|
|
080237cabf | ||
|
|
005418e065 | ||
|
|
b32111f1ab | ||
|
|
25f51371f5 | ||
|
|
14bad9bf20 | ||
|
|
da2d0ba32f | ||
|
|
0b34c3e910 | ||
|
|
1557a858ea | ||
|
|
9a0098cca1 | ||
|
|
fe8c142cd6 | ||
|
|
5346af9ab0 | ||
|
|
de1979212a | ||
|
|
aa0f33b5e7 | ||
|
|
ecb77e2be4 | ||
|
|
db9d1a7720 | ||
|
|
6ad6f90968 | ||
|
|
b1b0542f72 | ||
|
|
7e749c25c6 | ||
|
|
23bbd23032 | ||
|
|
68f65cf77b | ||
|
|
9b93a151fb | ||
|
|
3e18ca6613 | ||
|
|
a3e946b57e | ||
|
|
0ebd155be4 | ||
|
|
660fc42750 | ||
|
|
46b08d9474 | ||
|
|
9ac3ca79f8 | ||
|
|
7eade0d43c | ||
|
|
cf2ae2bccb | ||
|
|
f9a2f9e0f4 | ||
|
|
01f40d91ec | ||
|
|
dd57a4fb1a | ||
|
|
69cc7a4111 | ||
|
|
9f5067fbad | ||
|
|
c3a6f4af6a | ||
|
|
ac9666db76 | ||
|
|
2d064a9723 | ||
|
|
01de32cc58 | ||
|
|
39fdb02022 | ||
|
|
e0f091819b | ||
|
|
b2cbc3b28c | ||
|
|
3d10d26110 | ||
|
|
f4ab77f80a | ||
|
|
9532ad5fcd | ||
|
|
d1c5ec58df | ||
|
|
509032ff8b | ||
|
|
1447fc413b | ||
|
|
661b6fe5d5 | ||
|
|
ac97d15a7f | ||
|
|
83ed5fc243 | ||
|
|
39b063ff6a | ||
|
|
1166be1ea0 | ||
|
|
4a44e097a2 | ||
|
|
2d07fcb4b4 | ||
|
|
81ec67d4ea | ||
|
|
3d9f48c365 | ||
|
|
f600cdf527 | ||
|
|
d66b5811f7 | ||
|
|
af6a313d06 | ||
|
|
cf211fa19c | ||
|
|
e1d2d72282 | ||
|
|
ee8fb0e87b | ||
|
|
a6367e9453 | ||
|
|
65640603d1 | ||
|
|
925d2b13d8 | ||
|
|
c2e425aa12 | ||
|
|
538e7dcc29 | ||
|
|
ad8e475bb7 | ||
|
|
f5071e0c4d | ||
|
|
c24758f451 | ||
|
|
f83a8ff4c0 | ||
|
|
e6bacada22 | ||
|
|
16270ae869 | ||
|
|
64f0e9d282 | ||
|
|
d5d2ae1da8 | ||
|
|
6dfc2a0a3d | ||
|
|
0f7952b9d5 | ||
|
|
fcc889ca07 | ||
|
|
362374d0b7 | ||
|
|
c6c71a7e70 | ||
|
|
e1a38a3bd5 | ||
|
|
f169eaf6cc | ||
|
|
c920d3ec5b | ||
|
|
ac5f45d11a | ||
|
|
e4984b85f2 | ||
|
|
1bd8dd00d1 | ||
|
|
29ac3e21b2 | ||
|
|
7acd197389 | ||
|
|
025d28d80d | ||
|
|
7d26bfb247 | ||
|
|
2c0042c3df | ||
|
|
5a7fcde102 | ||
|
|
5be2aaae15 | ||
|
|
1b302b9bde | ||
|
|
5c7f6b7c7d | ||
|
|
a1d9354de7 | ||
|
|
2a6761d47e | ||
|
|
18786fc669 | ||
|
|
67e6aa0067 | ||
|
|
12e68fab27 | ||
|
|
478520572c | ||
|
|
e7050f5a38 | ||
|
|
79197b1977 | ||
|
|
bf68719e2e | ||
|
|
9b45b78ba7 | ||
|
|
ca48d313a2 | ||
|
|
d9fabe556c | ||
|
|
12ef6d07cf | ||
|
|
bed647427b | ||
|
|
d408e2bf54 | ||
|
|
b5cef34426 | ||
|
|
129cea08ce | ||
|
|
cd10f48f53 | ||
|
|
a2c1bfef8f |
@@ -4,11 +4,11 @@
|
||||
|
||||
性别男,若依是给还没有出生女儿取的名字(寓意:你若不离不弃,我必生死相依)
|
||||
|
||||
若依参考后台模板。有需要可自行到群内下载。
|
||||
> 如需前后端分离版本,请移步 [RuoYi-Vue](https://gitee.com/y_project/RuoYi-Vue)
|
||||
|
||||
> 如需单应用,请移步 [RuoYi-fast](https://gitee.com/y_project/RuoYi-fast) `(保持同步更新)`,如需其他版本,请移步 [项目扩展](http://doc.ruoyi.vip/#/standard/xmkz) `(不定时更新)`
|
||||
> 如需单应用,请移步 [RuoYi-fast](https://gitee.com/y_project/RuoYi-fast) `(保持同步更新)`,如需其他版本,请移步 [项目扩展](http://doc.ruoyi.vip/ruoyi/document/xmkz.html) `(不定时更新)`
|
||||
|
||||
> 阿里云通用云产品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) `(仅限新用户)`
|
||||
> 阿里云通用云产品1888优惠券 :[点我领取](https://www.aliyun.com/minisite/goods?userCode=brki8iof) 腾讯云通用云产品2860优惠券 :[点我领取](https://cloud.tencent.com/redirect.php?redirect=1025&cps_key=198c8df2ed259157187173bc7f4f32fd&from=console) `(仅限新用户)`
|
||||
|
||||
> 阿里云Hi拼购 限量爆款 低至199元/年 [点我进入](https://www.aliyun.com/acts/hi-group-buying?userCode=brki8iof) `(仅限新用户)`
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
10. 登录日志:系统登录日志记录查询包含登录异常。
|
||||
11. 在线用户:当前系统中活跃用户状态监控。
|
||||
12. 定时任务:在线(添加、修改、删除)任务调度包含执行结果日志。
|
||||
13. 代码生成:前后端代码的生成(java、html、xml、sql)支持CRUD下载 。
|
||||
13. 代码生成:前后端代码的生成(java、html、xml、sql)支持CRUD下载 。
|
||||
14. 系统接口:根据业务代码自动生成相关的api接口文档。
|
||||
15. 服务监控:监视当前系统CPU、内存、磁盘、堆栈等相关信息。
|
||||
16. 在线构建器:拖动表单元素生成相应的HTML代码。
|
||||
@@ -80,11 +80,11 @@
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="https://oscimg.oschina.net/oscnet/bed2b98a44e7ae820c2885329e711965c28.jpg"/></td>
|
||||
<td><img src="https://oscimg.oschina.net/oscnet/5f3d39a141f21f81b90536f391b8408f1fa.jpg"/></td>
|
||||
<td><img src="https://oscimg.oschina.net/oscnet/up-6d73c2140ce694e3de4c05035fdc1868d4c.png"/></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
|
||||
## 若依交流群
|
||||
|
||||
QQ群: [](https://jq.qq.com/?_wv=1027&k=5HBAaYN) [](https://jq.qq.com/?_wv=1027&k=5cHeRVW) [](https://jq.qq.com/?_wv=1027&k=53R0L5Z) [](https://jq.qq.com/?_wv=1027&k=5g75dCU) [](https://jq.qq.com/?_wv=1027&k=58cPoHA) [](https://jq.qq.com/?_wv=1027&k=5Ofd4Pb) [](https://jq.qq.com/?_wv=1027&k=5yugASz) 点击按钮入群。
|
||||
QQ群: [](https://jq.qq.com/?_wv=1027&k=5HBAaYN) [](https://jq.qq.com/?_wv=1027&k=5cHeRVW) [](https://jq.qq.com/?_wv=1027&k=53R0L5Z) [](https://jq.qq.com/?_wv=1027&k=5g75dCU) [](https://jq.qq.com/?_wv=1027&k=58cPoHA) [](https://jq.qq.com/?_wv=1027&k=5Ofd4Pb) [](https://jq.qq.com/?_wv=1027&k=5yugASz) [](https://jq.qq.com/?_wv=1027&k=5Rf3d2P) [](https://jq.qq.com/?_wv=1027&k=5ZIjaeP) [](https://jq.qq.com/?_wv=1027&k=5CJw1jY) [](https://jq.qq.com/?_wv=1027&k=5omzbKc)
|
||||
@@ -6,18 +6,18 @@
|
||||
|
||||
<groupId>com.ruoyi</groupId>
|
||||
<artifactId>ruoyi</artifactId>
|
||||
<version>4.0.0</version>
|
||||
<version>4.2.0</version>
|
||||
|
||||
<name>ruoyi</name>
|
||||
<url>http://www.ruoyi.vip</url>
|
||||
<description>若依管理系统</description>
|
||||
|
||||
<properties>
|
||||
<ruoyi.version>4.0.0</ruoyi.version>
|
||||
<ruoyi.version>4.2.0</ruoyi.version>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
|
||||
<java.version>1.8</java.version>
|
||||
<shiro.version>1.4.0</shiro.version>
|
||||
<shiro.version>1.4.2</shiro.version>
|
||||
<thymeleaf.extras.shiro.version>2.0.0</thymeleaf.extras.shiro.version>
|
||||
<mybatis.boot.version>1.3.2</mybatis.boot.version>
|
||||
<druid.version>1.1.14</druid.version>
|
||||
@@ -25,11 +25,10 @@
|
||||
<kaptcha.version>2.3.2</kaptcha.version>
|
||||
<swagger.version>2.9.2</swagger.version>
|
||||
<pagehelper.boot.version>1.2.5</pagehelper.boot.version>
|
||||
<fastjson.version>1.2.47</fastjson.version>
|
||||
<fastjson.version>1.2.60</fastjson.version>
|
||||
<oshi.version>3.9.1</oshi.version>
|
||||
<commons.io.version>2.5</commons.io.version>
|
||||
<commons.fileupload.version>1.3.3</commons.fileupload.version>
|
||||
<jsoup.version>1.11.3</jsoup.version>
|
||||
<poi.version>3.17</poi.version>
|
||||
<velocity.version>1.7</velocity.version>
|
||||
</properties>
|
||||
@@ -148,13 +147,6 @@
|
||||
<version>${commons.fileupload.version}</version>
|
||||
</dependency>
|
||||
|
||||
<!-- HTML解析器 -->
|
||||
<dependency>
|
||||
<groupId>org.jsoup</groupId>
|
||||
<artifactId>jsoup</artifactId>
|
||||
<version>${jsoup.version}</version>
|
||||
</dependency>
|
||||
|
||||
<!-- excel工具 -->
|
||||
<dependency>
|
||||
<groupId>org.apache.poi</groupId>
|
||||
@@ -236,6 +228,7 @@
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<version>3.1</version>
|
||||
<configuration>
|
||||
<source>${java.version}</source>
|
||||
<target>${java.version}</target>
|
||||
|
||||
+4
-3
@@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<artifactId>ruoyi</artifactId>
|
||||
<groupId>com.ruoyi</groupId>
|
||||
<version>4.0.0</version>
|
||||
<version>4.2.0</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<packaging>jar</packaging>
|
||||
@@ -80,6 +80,7 @@
|
||||
<plugin>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-maven-plugin</artifactId>
|
||||
<version>2.1.1.RELEASE</version>
|
||||
<configuration>
|
||||
<fork>true</fork> <!-- 如果没有该配置,devtools不会生效 -->
|
||||
</configuration>
|
||||
@@ -97,11 +98,11 @@
|
||||
<version>3.0.0</version>
|
||||
<configuration>
|
||||
<failOnMissingWebXml>false</failOnMissingWebXml>
|
||||
<warName>${artifactId}</warName>
|
||||
<warName>${project.artifactId}</warName>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
<finalName>${artifactId}</finalName>
|
||||
<finalName>${project.artifactId}</finalName>
|
||||
</build>
|
||||
|
||||
</project>
|
||||
@@ -12,6 +12,7 @@ import org.springframework.web.bind.annotation.ResponseBody;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
import com.ruoyi.common.config.Global;
|
||||
import com.ruoyi.common.config.ServerConfig;
|
||||
import com.ruoyi.common.constant.Constants;
|
||||
import com.ruoyi.common.core.domain.AjaxResult;
|
||||
import com.ruoyi.common.utils.StringUtils;
|
||||
import com.ruoyi.common.utils.file.FileUploadUtils;
|
||||
@@ -88,4 +89,24 @@ public class CommonController
|
||||
return AjaxResult.error(e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 本地资源通用下载
|
||||
*/
|
||||
@GetMapping("/common/download/resource")
|
||||
public void resourceDownload(String resource, HttpServletRequest request, HttpServletResponse response)
|
||||
throws Exception
|
||||
{
|
||||
// 本地资源路径
|
||||
String localPath = Global.getProfile();
|
||||
// 数据库资源地址
|
||||
String downloadPath = localPath + StringUtils.substringAfter(resource, Constants.RESOURCE_PREFIX);
|
||||
// 下载名称
|
||||
String downloadName = StringUtils.substringAfterLast(downloadPath, "/");
|
||||
response.setCharacterEncoding("utf-8");
|
||||
response.setContentType("multipart/form-data");
|
||||
response.setHeader("Content-Disposition",
|
||||
"attachment;fileName=" + FileUtils.setFileDownloadHeader(request, downloadName));
|
||||
FileUtils.writeBytes(downloadPath, response.getOutputStream());
|
||||
}
|
||||
}
|
||||
|
||||
+9
@@ -46,6 +46,15 @@ public class DemoFormController
|
||||
return prefix + "/select";
|
||||
}
|
||||
|
||||
/**
|
||||
* 时间轴
|
||||
*/
|
||||
@GetMapping("/timeline")
|
||||
public String timeline()
|
||||
{
|
||||
return prefix + "/timeline";
|
||||
}
|
||||
|
||||
/**
|
||||
* 表单校验
|
||||
*/
|
||||
|
||||
+11
@@ -103,6 +103,17 @@ public class DemoOperateController extends BaseController
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (StringUtils.isNotEmpty(userModel.getUserName()))
|
||||
{
|
||||
userList.clear();
|
||||
for (Map.Entry<Integer, UserOperateModel> entry : users.entrySet())
|
||||
{
|
||||
if (entry.getValue().getUserName().equals(userModel.getUserName()))
|
||||
{
|
||||
userList.add(entry.getValue());
|
||||
}
|
||||
}
|
||||
}
|
||||
PageDomain pageDomain = TableSupport.buildPageRequest();
|
||||
if (null == pageDomain.getPageNum() || null == pageDomain.getPageSize())
|
||||
{
|
||||
|
||||
+18
@@ -166,6 +166,15 @@ public class DemoTableController extends BaseController
|
||||
{
|
||||
return prefix + "/detail";
|
||||
}
|
||||
|
||||
/**
|
||||
* 表格父子视图
|
||||
*/
|
||||
@GetMapping("/child")
|
||||
public String child()
|
||||
{
|
||||
return prefix + "/child";
|
||||
}
|
||||
|
||||
/**
|
||||
* 表格图片预览
|
||||
@@ -194,6 +203,15 @@ public class DemoTableController extends BaseController
|
||||
return prefix + "/reorder";
|
||||
}
|
||||
|
||||
/**
|
||||
* 表格行内编辑操作
|
||||
*/
|
||||
@GetMapping("/editable")
|
||||
public String editable()
|
||||
{
|
||||
return prefix + "/editable";
|
||||
}
|
||||
|
||||
/**
|
||||
* 表格其他操作
|
||||
*/
|
||||
|
||||
+14
@@ -1,6 +1,7 @@
|
||||
package com.ruoyi.web.controller.monitor;
|
||||
|
||||
import java.util.List;
|
||||
import com.ruoyi.framework.shiro.service.SysPasswordService;
|
||||
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Controller;
|
||||
@@ -31,6 +32,9 @@ public class SysLogininforController extends BaseController
|
||||
@Autowired
|
||||
private ISysLogininforService logininforService;
|
||||
|
||||
@Autowired
|
||||
private SysPasswordService passwordService;
|
||||
|
||||
@RequiresPermissions("monitor:logininfor:view")
|
||||
@GetMapping()
|
||||
public String logininfor()
|
||||
@@ -77,4 +81,14 @@ public class SysLogininforController extends BaseController
|
||||
logininforService.cleanLogininfor();
|
||||
return success();
|
||||
}
|
||||
|
||||
@RequiresPermissions("monitor:logininfor:unlock")
|
||||
@Log(title = "账户解锁", businessType = BusinessType.OTHER)
|
||||
@PostMapping("/unlock")
|
||||
@ResponseBody
|
||||
public AjaxResult unlock(String loginName)
|
||||
{
|
||||
passwordService.unlock(loginName);
|
||||
return success();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -132,6 +132,19 @@ public class SysConfigController extends BaseController
|
||||
return toAjax(configService.deleteConfigByIds(ids));
|
||||
}
|
||||
|
||||
/**
|
||||
* 清空缓存
|
||||
*/
|
||||
@RequiresPermissions("system:config:remove")
|
||||
@Log(title = "参数管理", businessType = BusinessType.CLEAN)
|
||||
@GetMapping("/clearCache")
|
||||
@ResponseBody
|
||||
public AjaxResult clearCache()
|
||||
{
|
||||
configService.clearCache();
|
||||
return success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验参数键名
|
||||
*/
|
||||
|
||||
+14
-8
@@ -125,14 +125,20 @@ public class SysDictTypeController extends BaseController
|
||||
@ResponseBody
|
||||
public AjaxResult remove(String ids)
|
||||
{
|
||||
try
|
||||
{
|
||||
return toAjax(dictTypeService.deleteDictTypeByIds(ids));
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
return error(e.getMessage());
|
||||
}
|
||||
return toAjax(dictTypeService.deleteDictTypeByIds(ids));
|
||||
}
|
||||
|
||||
/**
|
||||
* 清空缓存
|
||||
*/
|
||||
@RequiresPermissions("system:dict:remove")
|
||||
@Log(title = "字典类型", businessType = BusinessType.CLEAN)
|
||||
@GetMapping("/clearCache")
|
||||
@ResponseBody
|
||||
public AjaxResult clearCache()
|
||||
{
|
||||
dictTypeService.clearCache();
|
||||
return success();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -10,6 +10,7 @@ import com.ruoyi.common.core.controller.BaseController;
|
||||
import com.ruoyi.framework.util.ShiroUtils;
|
||||
import com.ruoyi.system.domain.SysMenu;
|
||||
import com.ruoyi.system.domain.SysUser;
|
||||
import com.ruoyi.system.service.ISysConfigService;
|
||||
import com.ruoyi.system.service.ISysMenuService;
|
||||
|
||||
/**
|
||||
@@ -23,6 +24,9 @@ public class SysIndexController extends BaseController
|
||||
@Autowired
|
||||
private ISysMenuService menuService;
|
||||
|
||||
@Autowired
|
||||
private ISysConfigService configService;
|
||||
|
||||
// 系统首页
|
||||
@GetMapping("/index")
|
||||
public String index(ModelMap mmap)
|
||||
@@ -33,11 +37,20 @@ public class SysIndexController extends BaseController
|
||||
List<SysMenu> menus = menuService.selectMenusByUser(user);
|
||||
mmap.put("menus", menus);
|
||||
mmap.put("user", user);
|
||||
mmap.put("sideTheme", configService.selectConfigByKey("sys.index.sideTheme"));
|
||||
mmap.put("skinName", configService.selectConfigByKey("sys.index.skinName"));
|
||||
mmap.put("copyrightYear", Global.getCopyrightYear());
|
||||
mmap.put("demoEnabled", Global.isDemoEnabled());
|
||||
return "index";
|
||||
}
|
||||
|
||||
// 切换主题
|
||||
@GetMapping("/system/switchSkin")
|
||||
public String switchSkin(ModelMap mmap)
|
||||
{
|
||||
return "skin";
|
||||
}
|
||||
|
||||
// 系统介绍
|
||||
@GetMapping("/system/main")
|
||||
public String main(ModelMap mmap)
|
||||
|
||||
@@ -0,0 +1,46 @@
|
||||
package com.ruoyi.web.controller.system;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.util.StringUtils;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.ResponseBody;
|
||||
import com.ruoyi.common.core.controller.BaseController;
|
||||
import com.ruoyi.common.core.domain.AjaxResult;
|
||||
import com.ruoyi.framework.shiro.service.SysRegisterService;
|
||||
import com.ruoyi.system.domain.SysUser;
|
||||
import com.ruoyi.system.service.ISysConfigService;
|
||||
|
||||
/**
|
||||
* 注册验证
|
||||
*
|
||||
* @author ruoyi
|
||||
*/
|
||||
@Controller
|
||||
public class SysRegisterController extends BaseController
|
||||
{
|
||||
@Autowired
|
||||
private SysRegisterService registerService;
|
||||
|
||||
@Autowired
|
||||
private ISysConfigService configService;
|
||||
|
||||
@GetMapping("/register")
|
||||
public String register()
|
||||
{
|
||||
return "register";
|
||||
}
|
||||
|
||||
@PostMapping("/register")
|
||||
@ResponseBody
|
||||
public AjaxResult ajaxRegister(SysUser user)
|
||||
{
|
||||
if (!("true".equals(configService.selectConfigByKey("sys.account.registerUser"))))
|
||||
{
|
||||
return error("当前系统没有开启注册功能!");
|
||||
}
|
||||
String msg = registerService.register(user);
|
||||
return StringUtils.isEmpty(msg) ? success() : error(msg);
|
||||
}
|
||||
}
|
||||
@@ -121,6 +121,7 @@ public class SysRoleController extends BaseController
|
||||
@ResponseBody
|
||||
public AjaxResult editSave(@Validated SysRole role)
|
||||
{
|
||||
roleService.checkRoleAllowed(role);
|
||||
if (UserConstants.ROLE_NAME_NOT_UNIQUE.equals(roleService.checkRoleNameUnique(role)))
|
||||
{
|
||||
return error("修改角色'" + role.getRoleName() + "'失败,角色名称已存在");
|
||||
@@ -153,6 +154,7 @@ public class SysRoleController extends BaseController
|
||||
@ResponseBody
|
||||
public AjaxResult authDataScopeSave(SysRole role)
|
||||
{
|
||||
roleService.checkRoleAllowed(role);
|
||||
role.setUpdateBy(ShiroUtils.getLoginName());
|
||||
if (roleService.authDataScope(role) > 0)
|
||||
{
|
||||
@@ -216,6 +218,7 @@ public class SysRoleController extends BaseController
|
||||
@ResponseBody
|
||||
public AjaxResult changeStatus(SysRole role)
|
||||
{
|
||||
roleService.checkRoleAllowed(role);
|
||||
return toAjax(roleService.changeStatus(role));
|
||||
}
|
||||
|
||||
|
||||
@@ -18,11 +18,11 @@ import com.ruoyi.common.core.controller.BaseController;
|
||||
import com.ruoyi.common.core.domain.AjaxResult;
|
||||
import com.ruoyi.common.core.page.TableDataInfo;
|
||||
import com.ruoyi.common.enums.BusinessType;
|
||||
import com.ruoyi.common.utils.StringUtils;
|
||||
import com.ruoyi.common.utils.poi.ExcelUtil;
|
||||
import com.ruoyi.framework.shiro.service.SysPasswordService;
|
||||
import com.ruoyi.framework.util.ShiroUtils;
|
||||
import com.ruoyi.system.domain.SysUser;
|
||||
import com.ruoyi.system.domain.SysUserRole;
|
||||
import com.ruoyi.system.service.ISysPostService;
|
||||
import com.ruoyi.system.service.ISysRoleService;
|
||||
import com.ruoyi.system.service.ISysUserService;
|
||||
@@ -159,11 +159,8 @@ public class SysUserController extends BaseController
|
||||
@ResponseBody
|
||||
public AjaxResult editSave(@Validated SysUser user)
|
||||
{
|
||||
if (StringUtils.isNotNull(user.getUserId()) && SysUser.isAdmin(user.getUserId()))
|
||||
{
|
||||
return error("不允许修改超级管理员用户");
|
||||
}
|
||||
else if (UserConstants.USER_PHONE_NOT_UNIQUE.equals(userService.checkPhoneUnique(user)))
|
||||
userService.checkUserAllowed(user);
|
||||
if (UserConstants.USER_PHONE_NOT_UNIQUE.equals(userService.checkPhoneUnique(user)))
|
||||
{
|
||||
return error("修改用户'" + user.getLoginName() + "'失败,手机号码已存在");
|
||||
}
|
||||
@@ -190,6 +187,7 @@ public class SysUserController extends BaseController
|
||||
@ResponseBody
|
||||
public AjaxResult resetPwdSave(SysUser user)
|
||||
{
|
||||
userService.checkUserAllowed(user);
|
||||
user.setSalt(ShiroUtils.randomSalt());
|
||||
user.setPassword(passwordService.encryptPassword(user.getLoginName(), user.getPassword(), user.getSalt()));
|
||||
if (userService.resetUserPwd(user) > 0)
|
||||
@@ -203,6 +201,33 @@ public class SysUserController extends BaseController
|
||||
return error();
|
||||
}
|
||||
|
||||
/**
|
||||
* 进入授权角色页
|
||||
*/
|
||||
@GetMapping("/authRole/{userId}")
|
||||
public String authRole(@PathVariable("userId") Long userId, ModelMap mmap)
|
||||
{
|
||||
SysUser user = userService.selectUserById(userId);
|
||||
// 获取用户所属的角色列表
|
||||
List<SysUserRole> userRoles = userService.selectUserRoleByUserId(userId);
|
||||
mmap.put("user", user);
|
||||
mmap.put("userRoles", userRoles);
|
||||
return prefix + "/authRole";
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户授权角色
|
||||
*/
|
||||
@RequiresPermissions("system:user:add")
|
||||
@Log(title = "用户管理", businessType = BusinessType.GRANT)
|
||||
@PostMapping("/authRole/insertAuthRole")
|
||||
@ResponseBody
|
||||
public AjaxResult insertAuthRole(Long userId, Long[] roleIds)
|
||||
{
|
||||
userService.insertUserAuth(userId, roleIds);
|
||||
return success();
|
||||
}
|
||||
|
||||
@RequiresPermissions("system:user:remove")
|
||||
@Log(title = "用户管理", businessType = BusinessType.DELETE)
|
||||
@PostMapping("/remove")
|
||||
@@ -258,6 +283,7 @@ public class SysUserController extends BaseController
|
||||
@ResponseBody
|
||||
public AjaxResult changeStatus(SysUser user)
|
||||
{
|
||||
userService.checkUserAllowed(user);
|
||||
return toAjax(userService.changeStatus(user));
|
||||
}
|
||||
}
|
||||
@@ -3,7 +3,7 @@ ruoyi:
|
||||
# 名称
|
||||
name: RuoYi
|
||||
# 版本
|
||||
version: 4.0.0
|
||||
version: 4.2.0
|
||||
# 版权年份
|
||||
copyrightYear: 2019
|
||||
# 实例演示开关
|
||||
@@ -73,7 +73,7 @@ spring:
|
||||
# MyBatis
|
||||
mybatis:
|
||||
# 搜索指定包别名
|
||||
typeAliasesPackage: com.ruoyi
|
||||
typeAliasesPackage: com.ruoyi.**.domain
|
||||
# 配置mapper的扫描,找到所有的mapper.xml映射文件
|
||||
mapperLocations: classpath*:mapper/**/*Mapper.xml
|
||||
# 加载全局的配置文件
|
||||
@@ -109,7 +109,7 @@ shiro:
|
||||
# 设置Cookie的过期时间,天为单位
|
||||
maxAge: 30
|
||||
session:
|
||||
# Session超时时间(默认30分钟)
|
||||
# Session超时时间,-1代表永不过期(默认30分钟)
|
||||
expireTime: 30
|
||||
# 同步session到数据库的周期(默认1分钟)
|
||||
dbSyncPeriod: 1
|
||||
|
||||
@@ -3,7 +3,15 @@
|
||||
|
||||
<!-- 磁盘缓存位置 -->
|
||||
<diskStore path="java.io.tmpdir"/>
|
||||
|
||||
|
||||
<!-- maxEntriesLocalHeap:堆内存中最大缓存对象数,0没有限制 -->
|
||||
<!-- maxElementsInMemory: 在内存中缓存的element的最大数目。-->
|
||||
<!-- eternal:elements是否永久有效,如果为true,timeouts将被忽略,element将永不过期 -->
|
||||
<!-- timeToIdleSeconds:失效前的空闲秒数,当eternal为false时,这个属性才有效,0为不限制 -->
|
||||
<!-- timeToLiveSeconds:失效前的存活秒数,创建时间到失效时间的间隔为存活时间,当eternal为false时,这个属性才有效,0为不限制 -->
|
||||
<!-- overflowToDisk: 如果内存中数据超过内存限制,是否要缓存到磁盘上 -->
|
||||
<!-- statistics:是否收集统计信息。如果需要监控缓存使用情况,应该打开这个选项。默认为关闭(统计会影响性能)。设置statistics="true"开启统计 -->
|
||||
|
||||
<!-- 默认缓存 -->
|
||||
<defaultCache
|
||||
maxEntriesLocalHeap="1000"
|
||||
@@ -22,8 +30,8 @@
|
||||
overflowToDisk="false"
|
||||
statistics="true">
|
||||
</cache>
|
||||
|
||||
<!-- 系统活跃用户缓存 -->
|
||||
|
||||
<!-- 系统活跃用户缓存 -->
|
||||
<cache name="sys-userCache"
|
||||
maxEntriesLocalHeap="10000"
|
||||
overflowToDisk="false"
|
||||
@@ -32,7 +40,42 @@
|
||||
timeToLiveSeconds="0"
|
||||
timeToIdleSeconds="0"
|
||||
statistics="true">
|
||||
</cache>
|
||||
|
||||
</cache>
|
||||
|
||||
<!-- 系统缓存 -->
|
||||
<cache name="sys-cache"
|
||||
maxEntriesLocalHeap="1000"
|
||||
eternal="true"
|
||||
overflowToDisk="true"
|
||||
statistics="true">
|
||||
</cache>
|
||||
|
||||
<!-- 系统参数缓存 -->
|
||||
<cache name="sys-config"
|
||||
maxEntriesLocalHeap="1000"
|
||||
eternal="true"
|
||||
overflowToDisk="true"
|
||||
statistics="true">
|
||||
</cache>
|
||||
|
||||
<!-- 系统字典缓存 -->
|
||||
<cache name="sys-dict"
|
||||
maxEntriesLocalHeap="1000"
|
||||
eternal="true"
|
||||
overflowToDisk="true"
|
||||
statistics="true">
|
||||
</cache>
|
||||
|
||||
<!-- 系统会话缓存 -->
|
||||
<cache name="shiro-activeSessionCache"
|
||||
maxElementsInMemory="10000"
|
||||
overflowToDisk="true"
|
||||
eternal="true"
|
||||
timeToLiveSeconds="0"
|
||||
timeToIdleSeconds="0"
|
||||
diskPersistent="true"
|
||||
diskExpiryThreadIntervalSeconds="600">
|
||||
</cache>
|
||||
|
||||
</ehcache>
|
||||
|
||||
@@ -61,7 +61,7 @@
|
||||
}
|
||||
|
||||
.krajee-default .file-thumb-progress .progress, .krajee-default .file-thumb-progress .progress-bar {
|
||||
height: 11px;
|
||||
height: 20px;
|
||||
font-family: Verdana, Helvetica, sans-serif;
|
||||
font-size: 9px;
|
||||
}
|
||||
|
||||
+1
-1
File diff suppressed because one or more lines are too long
+2
-2
File diff suppressed because one or more lines are too long
+1
-1
@@ -233,7 +233,7 @@
|
||||
});
|
||||
});
|
||||
|
||||
$.btTable.on("check.bs.table uncheck.bs.table", function (e, rows, $element) {
|
||||
$("#" + table.options.id).on("check.bs.table uncheck.bs.table", function (e, rows, $element) {
|
||||
var index= $element.data('index');
|
||||
$(this).find('.bs-checkbox').find('input[data-index="' + index + '"]').prop("checked", true);
|
||||
var selectFixedItem = $('.left-fixed-body-columns input[name=btSelectItem]');
|
||||
|
||||
+663
@@ -0,0 +1,663 @@
|
||||
/*! X-editable - v1.5.1
|
||||
* In-place editing with Twitter Bootstrap, jQuery UI or pure jQuery
|
||||
* http://github.com/vitalets/x-editable
|
||||
* Copyright (c) 2013 Vitaliy Potapov; Licensed MIT */
|
||||
.editableform {
|
||||
margin-bottom: 0; /* overwrites bootstrap margin */
|
||||
}
|
||||
|
||||
.editableform .control-group {
|
||||
margin-bottom: 0; /* overwrites bootstrap margin */
|
||||
white-space: nowrap; /* prevent wrapping buttons on new line */
|
||||
line-height: 20px; /* overwriting bootstrap line-height. See #133 */
|
||||
}
|
||||
|
||||
/*
|
||||
BS3 width:1005 for inputs breaks editable form in popup
|
||||
See: https://github.com/vitalets/x-editable/issues/393
|
||||
*/
|
||||
.editableform .form-control {
|
||||
width: auto;
|
||||
}
|
||||
|
||||
.editable-buttons {
|
||||
display: inline-block; /* should be inline to take effect of parent's white-space: nowrap */
|
||||
vertical-align: top;
|
||||
margin-left: 7px;
|
||||
/* inline-block emulation for IE7*/
|
||||
zoom: 1;
|
||||
*display: inline;
|
||||
}
|
||||
|
||||
.editable-buttons.editable-buttons-bottom {
|
||||
display: block;
|
||||
margin-top: 7px;
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
.editable-input {
|
||||
vertical-align: top;
|
||||
display: inline-block; /* should be inline to take effect of parent's white-space: nowrap */
|
||||
width: auto; /* bootstrap-responsive has width: 100% that breakes layout */
|
||||
white-space: normal; /* reset white-space decalred in parent*/
|
||||
/* display-inline emulation for IE7*/
|
||||
zoom: 1;
|
||||
*display: inline;
|
||||
}
|
||||
|
||||
.editable-buttons .editable-cancel {
|
||||
margin-left: 7px;
|
||||
}
|
||||
|
||||
/*for jquery-ui buttons need set height to look more pretty*/
|
||||
.editable-buttons button.ui-button-icon-only {
|
||||
height: 24px;
|
||||
width: 30px;
|
||||
}
|
||||
|
||||
.editableform-loading {
|
||||
background: url('loading.gif') center center no-repeat;
|
||||
height: 25px;
|
||||
width: auto;
|
||||
min-width: 25px;
|
||||
}
|
||||
|
||||
.editable-inline .editableform-loading {
|
||||
background-position: left 5px;
|
||||
}
|
||||
|
||||
.editable-error-block {
|
||||
max-width: 300px;
|
||||
margin: 5px 0 0 0;
|
||||
width: auto;
|
||||
white-space: normal;
|
||||
}
|
||||
|
||||
/*add padding for jquery ui*/
|
||||
.editable-error-block.ui-state-error {
|
||||
padding: 3px;
|
||||
}
|
||||
|
||||
.editable-error {
|
||||
color: red;
|
||||
}
|
||||
|
||||
/* ---- For specific types ---- */
|
||||
|
||||
.editableform .editable-date {
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
float: left;
|
||||
}
|
||||
|
||||
/* move datepicker icon to center of add-on button. See https://github.com/vitalets/x-editable/issues/183 */
|
||||
.editable-inline .add-on .icon-th {
|
||||
margin-top: 3px;
|
||||
margin-left: 1px;
|
||||
}
|
||||
|
||||
|
||||
/* checklist vertical alignment */
|
||||
.editable-checklist label input[type="checkbox"],
|
||||
.editable-checklist label span {
|
||||
vertical-align: middle;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.editable-checklist label {
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
/* set exact width of textarea to fit buttons toolbar */
|
||||
.editable-wysihtml5 {
|
||||
width: 566px;
|
||||
height: 250px;
|
||||
}
|
||||
|
||||
/* clear button shown as link in date inputs */
|
||||
.editable-clear {
|
||||
clear: both;
|
||||
font-size: 0.9em;
|
||||
text-decoration: none;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
/* IOS-style clear button for text inputs */
|
||||
.editable-clear-x {
|
||||
background: url('clear.png') center center no-repeat;
|
||||
display: block;
|
||||
width: 13px;
|
||||
height: 13px;
|
||||
position: absolute;
|
||||
opacity: 0.6;
|
||||
z-index: 100;
|
||||
|
||||
top: 50%;
|
||||
right: 6px;
|
||||
margin-top: -6px;
|
||||
|
||||
}
|
||||
|
||||
.editable-clear-x:hover {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.editable-pre-wrapped {
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
.editable-container.editable-popup {
|
||||
max-width: none !important; /* without this rule poshytip/tooltip does not stretch */
|
||||
}
|
||||
|
||||
.editable-container.popover {
|
||||
width: auto; /* without this rule popover does not stretch */
|
||||
}
|
||||
|
||||
.editable-container.editable-inline {
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
width: auto;
|
||||
/* inline-block emulation for IE7*/
|
||||
zoom: 1;
|
||||
*display: inline;
|
||||
}
|
||||
|
||||
.editable-container.ui-widget {
|
||||
font-size: inherit; /* jqueryui widget font 1.1em too big, overwrite it */
|
||||
z-index: 9990; /* should be less than select2 dropdown z-index to close dropdown first when click */
|
||||
}
|
||||
.editable-click,
|
||||
a.editable-click,
|
||||
a.editable-click:hover {
|
||||
text-decoration: none;
|
||||
border-bottom: dashed 1px #0088cc;
|
||||
}
|
||||
|
||||
.editable-click.editable-disabled,
|
||||
a.editable-click.editable-disabled,
|
||||
a.editable-click.editable-disabled:hover {
|
||||
color: #585858;
|
||||
cursor: default;
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
.editable-empty, .editable-empty:hover, .editable-empty:focus{
|
||||
font-style: italic;
|
||||
color: #DD1144;
|
||||
/* border-bottom: none; */
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.editable-unsaved {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.editable-unsaved:after {
|
||||
/* content: '*'*/
|
||||
}
|
||||
|
||||
.editable-bg-transition {
|
||||
-webkit-transition: background-color 1400ms ease-out;
|
||||
-moz-transition: background-color 1400ms ease-out;
|
||||
-o-transition: background-color 1400ms ease-out;
|
||||
-ms-transition: background-color 1400ms ease-out;
|
||||
transition: background-color 1400ms ease-out;
|
||||
}
|
||||
|
||||
/*see https://github.com/vitalets/x-editable/issues/139 */
|
||||
.form-horizontal .editable
|
||||
{
|
||||
padding-top: 5px;
|
||||
display:inline-block;
|
||||
}
|
||||
|
||||
|
||||
/*!
|
||||
* Datepicker for Bootstrap
|
||||
*
|
||||
* Copyright 2012 Stefan Petre
|
||||
* Improvements by Andrew Rowls
|
||||
* Licensed under the Apache License v2.0
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
*/
|
||||
.datepicker {
|
||||
padding: 4px;
|
||||
-webkit-border-radius: 4px;
|
||||
-moz-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
direction: ltr;
|
||||
/*.dow {
|
||||
border-top: 1px solid #ddd !important;
|
||||
}*/
|
||||
|
||||
}
|
||||
.datepicker-inline {
|
||||
width: 220px;
|
||||
}
|
||||
.datepicker.datepicker-rtl {
|
||||
direction: rtl;
|
||||
}
|
||||
.datepicker.datepicker-rtl table tr td span {
|
||||
float: right;
|
||||
}
|
||||
.datepicker-dropdown {
|
||||
top: 0;
|
||||
left: 0;
|
||||
}
|
||||
.datepicker-dropdown:before {
|
||||
content: '';
|
||||
display: inline-block;
|
||||
border-left: 7px solid transparent;
|
||||
border-right: 7px solid transparent;
|
||||
border-bottom: 7px solid #ccc;
|
||||
border-bottom-color: rgba(0, 0, 0, 0.2);
|
||||
position: absolute;
|
||||
top: -7px;
|
||||
left: 6px;
|
||||
}
|
||||
.datepicker-dropdown:after {
|
||||
content: '';
|
||||
display: inline-block;
|
||||
border-left: 6px solid transparent;
|
||||
border-right: 6px solid transparent;
|
||||
border-bottom: 6px solid #ffffff;
|
||||
position: absolute;
|
||||
top: -6px;
|
||||
left: 7px;
|
||||
}
|
||||
.datepicker > div {
|
||||
display: none;
|
||||
}
|
||||
.datepicker.days div.datepicker-days {
|
||||
display: block;
|
||||
}
|
||||
.datepicker.months div.datepicker-months {
|
||||
display: block;
|
||||
}
|
||||
.datepicker.years div.datepicker-years {
|
||||
display: block;
|
||||
}
|
||||
.datepicker table {
|
||||
margin: 0;
|
||||
}
|
||||
.datepicker td,
|
||||
.datepicker th {
|
||||
text-align: center;
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
-webkit-border-radius: 4px;
|
||||
-moz-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
border: none;
|
||||
}
|
||||
.table-striped .datepicker table tr td,
|
||||
.table-striped .datepicker table tr th {
|
||||
background-color: transparent;
|
||||
}
|
||||
.datepicker table tr td.day:hover {
|
||||
background: #eeeeee;
|
||||
cursor: pointer;
|
||||
}
|
||||
.datepicker table tr td.old,
|
||||
.datepicker table tr td.new {
|
||||
color: #999999;
|
||||
}
|
||||
.datepicker table tr td.disabled,
|
||||
.datepicker table tr td.disabled:hover {
|
||||
background: none;
|
||||
color: #999999;
|
||||
cursor: default;
|
||||
}
|
||||
.datepicker table tr td.today,
|
||||
.datepicker table tr td.today:hover,
|
||||
.datepicker table tr td.today.disabled,
|
||||
.datepicker table tr td.today.disabled:hover {
|
||||
background-color: #fde19a;
|
||||
background-image: -moz-linear-gradient(top, #fdd49a, #fdf59a);
|
||||
background-image: -ms-linear-gradient(top, #fdd49a, #fdf59a);
|
||||
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fdd49a), to(#fdf59a));
|
||||
background-image: -webkit-linear-gradient(top, #fdd49a, #fdf59a);
|
||||
background-image: -o-linear-gradient(top, #fdd49a, #fdf59a);
|
||||
background-image: linear-gradient(top, #fdd49a, #fdf59a);
|
||||
background-repeat: repeat-x;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fdd49a', endColorstr='#fdf59a', GradientType=0);
|
||||
border-color: #fdf59a #fdf59a #fbed50;
|
||||
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
|
||||
color: #000;
|
||||
}
|
||||
.datepicker table tr td.today:hover,
|
||||
.datepicker table tr td.today:hover:hover,
|
||||
.datepicker table tr td.today.disabled:hover,
|
||||
.datepicker table tr td.today.disabled:hover:hover,
|
||||
.datepicker table tr td.today:active,
|
||||
.datepicker table tr td.today:hover:active,
|
||||
.datepicker table tr td.today.disabled:active,
|
||||
.datepicker table tr td.today.disabled:hover:active,
|
||||
.datepicker table tr td.today.active,
|
||||
.datepicker table tr td.today:hover.active,
|
||||
.datepicker table tr td.today.disabled.active,
|
||||
.datepicker table tr td.today.disabled:hover.active,
|
||||
.datepicker table tr td.today.disabled,
|
||||
.datepicker table tr td.today:hover.disabled,
|
||||
.datepicker table tr td.today.disabled.disabled,
|
||||
.datepicker table tr td.today.disabled:hover.disabled,
|
||||
.datepicker table tr td.today[disabled],
|
||||
.datepicker table tr td.today:hover[disabled],
|
||||
.datepicker table tr td.today.disabled[disabled],
|
||||
.datepicker table tr td.today.disabled:hover[disabled] {
|
||||
background-color: #fdf59a;
|
||||
}
|
||||
.datepicker table tr td.today:active,
|
||||
.datepicker table tr td.today:hover:active,
|
||||
.datepicker table tr td.today.disabled:active,
|
||||
.datepicker table tr td.today.disabled:hover:active,
|
||||
.datepicker table tr td.today.active,
|
||||
.datepicker table tr td.today:hover.active,
|
||||
.datepicker table tr td.today.disabled.active,
|
||||
.datepicker table tr td.today.disabled:hover.active {
|
||||
background-color: #fbf069 \9;
|
||||
}
|
||||
.datepicker table tr td.today:hover:hover {
|
||||
color: #000;
|
||||
}
|
||||
.datepicker table tr td.today.active:hover {
|
||||
color: #fff;
|
||||
}
|
||||
.datepicker table tr td.range,
|
||||
.datepicker table tr td.range:hover,
|
||||
.datepicker table tr td.range.disabled,
|
||||
.datepicker table tr td.range.disabled:hover {
|
||||
background: #eeeeee;
|
||||
-webkit-border-radius: 0;
|
||||
-moz-border-radius: 0;
|
||||
border-radius: 0;
|
||||
}
|
||||
.datepicker table tr td.range.today,
|
||||
.datepicker table tr td.range.today:hover,
|
||||
.datepicker table tr td.range.today.disabled,
|
||||
.datepicker table tr td.range.today.disabled:hover {
|
||||
background-color: #f3d17a;
|
||||
background-image: -moz-linear-gradient(top, #f3c17a, #f3e97a);
|
||||
background-image: -ms-linear-gradient(top, #f3c17a, #f3e97a);
|
||||
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f3c17a), to(#f3e97a));
|
||||
background-image: -webkit-linear-gradient(top, #f3c17a, #f3e97a);
|
||||
background-image: -o-linear-gradient(top, #f3c17a, #f3e97a);
|
||||
background-image: linear-gradient(top, #f3c17a, #f3e97a);
|
||||
background-repeat: repeat-x;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f3c17a', endColorstr='#f3e97a', GradientType=0);
|
||||
border-color: #f3e97a #f3e97a #edde34;
|
||||
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
|
||||
-webkit-border-radius: 0;
|
||||
-moz-border-radius: 0;
|
||||
border-radius: 0;
|
||||
}
|
||||
.datepicker table tr td.range.today:hover,
|
||||
.datepicker table tr td.range.today:hover:hover,
|
||||
.datepicker table tr td.range.today.disabled:hover,
|
||||
.datepicker table tr td.range.today.disabled:hover:hover,
|
||||
.datepicker table tr td.range.today:active,
|
||||
.datepicker table tr td.range.today:hover:active,
|
||||
.datepicker table tr td.range.today.disabled:active,
|
||||
.datepicker table tr td.range.today.disabled:hover:active,
|
||||
.datepicker table tr td.range.today.active,
|
||||
.datepicker table tr td.range.today:hover.active,
|
||||
.datepicker table tr td.range.today.disabled.active,
|
||||
.datepicker table tr td.range.today.disabled:hover.active,
|
||||
.datepicker table tr td.range.today.disabled,
|
||||
.datepicker table tr td.range.today:hover.disabled,
|
||||
.datepicker table tr td.range.today.disabled.disabled,
|
||||
.datepicker table tr td.range.today.disabled:hover.disabled,
|
||||
.datepicker table tr td.range.today[disabled],
|
||||
.datepicker table tr td.range.today:hover[disabled],
|
||||
.datepicker table tr td.range.today.disabled[disabled],
|
||||
.datepicker table tr td.range.today.disabled:hover[disabled] {
|
||||
background-color: #f3e97a;
|
||||
}
|
||||
.datepicker table tr td.range.today:active,
|
||||
.datepicker table tr td.range.today:hover:active,
|
||||
.datepicker table tr td.range.today.disabled:active,
|
||||
.datepicker table tr td.range.today.disabled:hover:active,
|
||||
.datepicker table tr td.range.today.active,
|
||||
.datepicker table tr td.range.today:hover.active,
|
||||
.datepicker table tr td.range.today.disabled.active,
|
||||
.datepicker table tr td.range.today.disabled:hover.active {
|
||||
background-color: #efe24b \9;
|
||||
}
|
||||
.datepicker table tr td.selected,
|
||||
.datepicker table tr td.selected:hover,
|
||||
.datepicker table tr td.selected.disabled,
|
||||
.datepicker table tr td.selected.disabled:hover {
|
||||
background-color: #9e9e9e;
|
||||
background-image: -moz-linear-gradient(top, #b3b3b3, #808080);
|
||||
background-image: -ms-linear-gradient(top, #b3b3b3, #808080);
|
||||
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#b3b3b3), to(#808080));
|
||||
background-image: -webkit-linear-gradient(top, #b3b3b3, #808080);
|
||||
background-image: -o-linear-gradient(top, #b3b3b3, #808080);
|
||||
background-image: linear-gradient(top, #b3b3b3, #808080);
|
||||
background-repeat: repeat-x;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#b3b3b3', endColorstr='#808080', GradientType=0);
|
||||
border-color: #808080 #808080 #595959;
|
||||
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
|
||||
color: #fff;
|
||||
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
|
||||
}
|
||||
.datepicker table tr td.selected:hover,
|
||||
.datepicker table tr td.selected:hover:hover,
|
||||
.datepicker table tr td.selected.disabled:hover,
|
||||
.datepicker table tr td.selected.disabled:hover:hover,
|
||||
.datepicker table tr td.selected:active,
|
||||
.datepicker table tr td.selected:hover:active,
|
||||
.datepicker table tr td.selected.disabled:active,
|
||||
.datepicker table tr td.selected.disabled:hover:active,
|
||||
.datepicker table tr td.selected.active,
|
||||
.datepicker table tr td.selected:hover.active,
|
||||
.datepicker table tr td.selected.disabled.active,
|
||||
.datepicker table tr td.selected.disabled:hover.active,
|
||||
.datepicker table tr td.selected.disabled,
|
||||
.datepicker table tr td.selected:hover.disabled,
|
||||
.datepicker table tr td.selected.disabled.disabled,
|
||||
.datepicker table tr td.selected.disabled:hover.disabled,
|
||||
.datepicker table tr td.selected[disabled],
|
||||
.datepicker table tr td.selected:hover[disabled],
|
||||
.datepicker table tr td.selected.disabled[disabled],
|
||||
.datepicker table tr td.selected.disabled:hover[disabled] {
|
||||
background-color: #808080;
|
||||
}
|
||||
.datepicker table tr td.selected:active,
|
||||
.datepicker table tr td.selected:hover:active,
|
||||
.datepicker table tr td.selected.disabled:active,
|
||||
.datepicker table tr td.selected.disabled:hover:active,
|
||||
.datepicker table tr td.selected.active,
|
||||
.datepicker table tr td.selected:hover.active,
|
||||
.datepicker table tr td.selected.disabled.active,
|
||||
.datepicker table tr td.selected.disabled:hover.active {
|
||||
background-color: #666666 \9;
|
||||
}
|
||||
.datepicker table tr td.active,
|
||||
.datepicker table tr td.active:hover,
|
||||
.datepicker table tr td.active.disabled,
|
||||
.datepicker table tr td.active.disabled:hover {
|
||||
background-color: #006dcc;
|
||||
background-image: -moz-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: -ms-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));
|
||||
background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: -o-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: linear-gradient(top, #0088cc, #0044cc);
|
||||
background-repeat: repeat-x;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0);
|
||||
border-color: #0044cc #0044cc #002a80;
|
||||
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
|
||||
color: #fff;
|
||||
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
|
||||
}
|
||||
.datepicker table tr td.active:hover,
|
||||
.datepicker table tr td.active:hover:hover,
|
||||
.datepicker table tr td.active.disabled:hover,
|
||||
.datepicker table tr td.active.disabled:hover:hover,
|
||||
.datepicker table tr td.active:active,
|
||||
.datepicker table tr td.active:hover:active,
|
||||
.datepicker table tr td.active.disabled:active,
|
||||
.datepicker table tr td.active.disabled:hover:active,
|
||||
.datepicker table tr td.active.active,
|
||||
.datepicker table tr td.active:hover.active,
|
||||
.datepicker table tr td.active.disabled.active,
|
||||
.datepicker table tr td.active.disabled:hover.active,
|
||||
.datepicker table tr td.active.disabled,
|
||||
.datepicker table tr td.active:hover.disabled,
|
||||
.datepicker table tr td.active.disabled.disabled,
|
||||
.datepicker table tr td.active.disabled:hover.disabled,
|
||||
.datepicker table tr td.active[disabled],
|
||||
.datepicker table tr td.active:hover[disabled],
|
||||
.datepicker table tr td.active.disabled[disabled],
|
||||
.datepicker table tr td.active.disabled:hover[disabled] {
|
||||
background-color: #0044cc;
|
||||
}
|
||||
.datepicker table tr td.active:active,
|
||||
.datepicker table tr td.active:hover:active,
|
||||
.datepicker table tr td.active.disabled:active,
|
||||
.datepicker table tr td.active.disabled:hover:active,
|
||||
.datepicker table tr td.active.active,
|
||||
.datepicker table tr td.active:hover.active,
|
||||
.datepicker table tr td.active.disabled.active,
|
||||
.datepicker table tr td.active.disabled:hover.active {
|
||||
background-color: #003399 \9;
|
||||
}
|
||||
.datepicker table tr td span {
|
||||
display: block;
|
||||
width: 23%;
|
||||
height: 54px;
|
||||
line-height: 54px;
|
||||
float: left;
|
||||
margin: 1%;
|
||||
cursor: pointer;
|
||||
-webkit-border-radius: 4px;
|
||||
-moz-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
}
|
||||
.datepicker table tr td span:hover {
|
||||
background: #eeeeee;
|
||||
}
|
||||
.datepicker table tr td span.disabled,
|
||||
.datepicker table tr td span.disabled:hover {
|
||||
background: none;
|
||||
color: #999999;
|
||||
cursor: default;
|
||||
}
|
||||
.datepicker table tr td span.active,
|
||||
.datepicker table tr td span.active:hover,
|
||||
.datepicker table tr td span.active.disabled,
|
||||
.datepicker table tr td span.active.disabled:hover {
|
||||
background-color: #006dcc;
|
||||
background-image: -moz-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: -ms-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));
|
||||
background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: -o-linear-gradient(top, #0088cc, #0044cc);
|
||||
background-image: linear-gradient(top, #0088cc, #0044cc);
|
||||
background-repeat: repeat-x;
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0);
|
||||
border-color: #0044cc #0044cc #002a80;
|
||||
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
|
||||
color: #fff;
|
||||
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
|
||||
}
|
||||
.datepicker table tr td span.active:hover,
|
||||
.datepicker table tr td span.active:hover:hover,
|
||||
.datepicker table tr td span.active.disabled:hover,
|
||||
.datepicker table tr td span.active.disabled:hover:hover,
|
||||
.datepicker table tr td span.active:active,
|
||||
.datepicker table tr td span.active:hover:active,
|
||||
.datepicker table tr td span.active.disabled:active,
|
||||
.datepicker table tr td span.active.disabled:hover:active,
|
||||
.datepicker table tr td span.active.active,
|
||||
.datepicker table tr td span.active:hover.active,
|
||||
.datepicker table tr td span.active.disabled.active,
|
||||
.datepicker table tr td span.active.disabled:hover.active,
|
||||
.datepicker table tr td span.active.disabled,
|
||||
.datepicker table tr td span.active:hover.disabled,
|
||||
.datepicker table tr td span.active.disabled.disabled,
|
||||
.datepicker table tr td span.active.disabled:hover.disabled,
|
||||
.datepicker table tr td span.active[disabled],
|
||||
.datepicker table tr td span.active:hover[disabled],
|
||||
.datepicker table tr td span.active.disabled[disabled],
|
||||
.datepicker table tr td span.active.disabled:hover[disabled] {
|
||||
background-color: #0044cc;
|
||||
}
|
||||
.datepicker table tr td span.active:active,
|
||||
.datepicker table tr td span.active:hover:active,
|
||||
.datepicker table tr td span.active.disabled:active,
|
||||
.datepicker table tr td span.active.disabled:hover:active,
|
||||
.datepicker table tr td span.active.active,
|
||||
.datepicker table tr td span.active:hover.active,
|
||||
.datepicker table tr td span.active.disabled.active,
|
||||
.datepicker table tr td span.active.disabled:hover.active {
|
||||
background-color: #003399 \9;
|
||||
}
|
||||
.datepicker table tr td span.old,
|
||||
.datepicker table tr td span.new {
|
||||
color: #999999;
|
||||
}
|
||||
.datepicker th.datepicker-switch {
|
||||
width: 145px;
|
||||
}
|
||||
.datepicker thead tr:first-child th,
|
||||
.datepicker tfoot tr th {
|
||||
cursor: pointer;
|
||||
}
|
||||
.datepicker thead tr:first-child th:hover,
|
||||
.datepicker tfoot tr th:hover {
|
||||
background: #eeeeee;
|
||||
}
|
||||
.datepicker .cw {
|
||||
font-size: 10px;
|
||||
width: 12px;
|
||||
padding: 0 2px 0 5px;
|
||||
vertical-align: middle;
|
||||
}
|
||||
.datepicker thead tr:first-child th.cw {
|
||||
cursor: default;
|
||||
background-color: transparent;
|
||||
}
|
||||
.input-append.date .add-on i,
|
||||
.input-prepend.date .add-on i {
|
||||
display: block;
|
||||
cursor: pointer;
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
}
|
||||
.input-daterange input {
|
||||
text-align: center;
|
||||
}
|
||||
.input-daterange input:first-child {
|
||||
-webkit-border-radius: 3px 0 0 3px;
|
||||
-moz-border-radius: 3px 0 0 3px;
|
||||
border-radius: 3px 0 0 3px;
|
||||
}
|
||||
.input-daterange input:last-child {
|
||||
-webkit-border-radius: 0 3px 3px 0;
|
||||
-moz-border-radius: 0 3px 3px 0;
|
||||
border-radius: 0 3px 3px 0;
|
||||
}
|
||||
.input-daterange .add-on {
|
||||
display: inline-block;
|
||||
width: auto;
|
||||
min-width: 16px;
|
||||
height: 18px;
|
||||
padding: 4px 5px;
|
||||
font-weight: normal;
|
||||
line-height: 18px;
|
||||
text-align: center;
|
||||
text-shadow: 0 1px 0 #ffffff;
|
||||
vertical-align: middle;
|
||||
background-color: #eeeeee;
|
||||
border: 1px solid #ccc;
|
||||
margin-left: -5px;
|
||||
margin-right: -5px;
|
||||
}
|
||||
+7
File diff suppressed because one or more lines are too long
-7
@@ -1,7 +0,0 @@
|
||||
/*
|
||||
* bootstrap-table - v1.11.0 - 2016-07-02
|
||||
* https://github.com/wenzhixin/bootstrap-table
|
||||
* Copyright (c) 2016 zhixin wen
|
||||
* Licensed MIT License
|
||||
*/
|
||||
!function(a){"use strict";a.extend(a.fn.bootstrapTable.defaults,{editable:!0,onEditableInit:function(){return!1},onEditableSave:function(){return!1},onEditableShown:function(){return!1},onEditableHidden:function(){return!1}}),a.extend(a.fn.bootstrapTable.Constructor.EVENTS,{"editable-init.bs.table":"onEditableInit","editable-save.bs.table":"onEditableSave","editable-shown.bs.table":"onEditableShown","editable-hidden.bs.table":"onEditableHidden"});var b=a.fn.bootstrapTable.Constructor,c=b.prototype.initTable,d=b.prototype.initBody;b.prototype.initTable=function(){var b=this;c.apply(this,Array.prototype.slice.apply(arguments)),this.options.editable&&a.each(this.columns,function(c,d){if(d.editable){var e={},f=[],g="editable-",h=function(a,b){var c=a.replace(/([A-Z])/g,function(a){return"-"+a.toLowerCase()});if(c.slice(0,g.length)==g){var d=c.replace(g,"data-");e[d]=b}};a.each(b.options,h),d.formatter=d.formatter||function(a){return a},d._formatter=d._formatter?d._formatter:d.formatter,d.formatter=function(c,g,i){var j=d._formatter?d._formatter(c,g,i):c;a.each(d,h),a.each(e,function(a,b){f.push(" "+a+'="'+b+'"')});var k=!1;return d.editable.hasOwnProperty("noeditFormatter")&&(k=d.editable.noeditFormatter(c,g,i)),k===!1?['<a href="javascript:void(0)"',' data-name="'+d.field+'"',' data-pk="'+g[b.options.idField]+'"',' data-value="'+j+'"',f.join(""),"></a>"].join(""):k}}})},b.prototype.initBody=function(){var b=this;d.apply(this,Array.prototype.slice.apply(arguments)),this.options.editable&&(a.each(this.columns,function(c,d){d.editable&&(b.$body.find('a[data-name="'+d.field+'"]').editable(d.editable).off("save").on("save",function(c,e){var f=b.getData(),g=a(this).parents("tr[data-index]").data("index"),h=f[g],i=h[d.field];a(this).data("value",e.submitValue),h[d.field]=e.submitValue,b.trigger("editable-save",d.field,h,i,a(this)),b.resetFooter()}),b.$body.find('a[data-name="'+d.field+'"]').editable(d.editable).off("shown").on("shown",function(c,e){var f=b.getData(),g=a(this).parents("tr[data-index]").data("index"),h=f[g];b.trigger("editable-shown",d.field,h,a(this),e)}),b.$body.find('a[data-name="'+d.field+'"]').editable(d.editable).off("hidden").on("hidden",function(c,e){var f=b.getData(),g=a(this).parents("tr[data-index]").data("index"),h=f[g];b.trigger("editable-hidden",d.field,h,a(this),e)}))}),this.trigger("editable-init"))}}(jQuery);
|
||||
BIN
Binary file not shown.
|
After Width: | Height: | Size: 244 B |
BIN
Binary file not shown.
|
After Width: | Height: | Size: 1.8 KiB |
+1
-1
@@ -29,7 +29,7 @@
|
||||
|
||||
$.extend($.fn.bootstrapTable.locales, {
|
||||
formatExport: function () {
|
||||
return 'Export data';
|
||||
return '导出';
|
||||
}
|
||||
});
|
||||
$.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales);
|
||||
|
||||
+15
-8
@@ -241,19 +241,26 @@
|
||||
// 缓存并格式化数据
|
||||
var formatData = function(data) {
|
||||
var _root = options.rootIdValue ? options.rootIdValue : null;
|
||||
var firstCode = data[0][options.parentCode];
|
||||
// 父节点属性列表
|
||||
var parentCodes = [];
|
||||
var rootFlag = false;
|
||||
$.each(data, function(index, item) {
|
||||
if($.inArray(item[options.parentCode], parentCodes) == -1){
|
||||
parentCodes.push(item[options.parentCode]);
|
||||
}
|
||||
});
|
||||
$.each(data, function(index, item) {
|
||||
// 添加一个默认属性,用来判断当前节点有没有被显示
|
||||
item.isShow = false;
|
||||
// 这里兼容几种常见Root节点写法
|
||||
// 默认的几种判断
|
||||
// 顶级节点校验判断,兼容0,'0','',null
|
||||
var _defaultRootFlag = item[options.parentCode] == '0' ||
|
||||
item[options.parentCode] == 0 ||
|
||||
item[options.parentCode] == null ||
|
||||
item[options.parentCode] == firstCode ||
|
||||
item[options.parentCode] == '';
|
||||
item[options.parentCode] == 0 ||
|
||||
item[options.parentCode] == null ||
|
||||
item[options.parentCode] == '' ||
|
||||
$.inArray(item[options.code], parentCodes) > 0 && !rootFlag;
|
||||
if (!item[options.parentCode] || (_root ? (item[options.parentCode] == options.rootIdValue) : _defaultRootFlag)) {
|
||||
if (!target.data_list["_root_"]) {
|
||||
rootFlag = true;
|
||||
if (!target.data_list["_root_"]) {
|
||||
target.data_list["_root_"] = [];
|
||||
}
|
||||
if (!target.data_obj["id_" + item[options.code]]) {
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
top: 0;
|
||||
width: 200px;
|
||||
border: 1px #ddd solid;
|
||||
height: 440px;
|
||||
height: 450px;
|
||||
padding: 4px;
|
||||
box-shadow: 0px 0px 12px #ddd;
|
||||
text-align: center;
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -4590,12 +4590,12 @@ S2.define('select2/i18n/en',[],function () {
|
||||
// English
|
||||
return {
|
||||
errorLoading: function () {
|
||||
return 'The results could not be loaded.';
|
||||
return '无法载入结果';
|
||||
},
|
||||
inputTooLong: function (args) {
|
||||
var overChars = args.input.length - args.maximum;
|
||||
|
||||
var message = 'Please delete ' + overChars + ' character';
|
||||
var message = '请删除' + overChars + '个字符';
|
||||
|
||||
if (overChars != 1) {
|
||||
message += 's';
|
||||
@@ -4606,15 +4606,15 @@ S2.define('select2/i18n/en',[],function () {
|
||||
inputTooShort: function (args) {
|
||||
var remainingChars = args.minimum - args.input.length;
|
||||
|
||||
var message = 'Please enter ' + remainingChars + ' or more characters';
|
||||
var message = '请再输入至少' + remainingChars + '个字符';
|
||||
|
||||
return message;
|
||||
},
|
||||
loadingMore: function () {
|
||||
return 'Loading more results…';
|
||||
return '载入更多结果…';
|
||||
},
|
||||
maximumSelected: function (args) {
|
||||
var message = 'You can only select ' + args.maximum + ' item';
|
||||
var message = '最多只能' + args.maximum + '个选项';
|
||||
|
||||
if (args.maximum != 1) {
|
||||
message += 's';
|
||||
@@ -4623,13 +4623,13 @@ S2.define('select2/i18n/en',[],function () {
|
||||
return message;
|
||||
},
|
||||
noResults: function () {
|
||||
return 'No results found';
|
||||
return '未找到结果';
|
||||
},
|
||||
searching: function () {
|
||||
return 'Searching…';
|
||||
return '搜索中…';
|
||||
},
|
||||
removeAllItems: function () {
|
||||
return 'Remove all items';
|
||||
return '删除所有项目';
|
||||
}
|
||||
};
|
||||
});
|
||||
@@ -5012,7 +5012,7 @@ S2.define('select2/defaults',[
|
||||
return selection.text;
|
||||
},
|
||||
theme: 'default',
|
||||
width: 'resolve'
|
||||
width: '100%'
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -5778,7 +5778,7 @@ td.visible-lg {
|
||||
display: table-cell !important;
|
||||
}
|
||||
}
|
||||
.hidden-xs {
|
||||
.summernote .hidden-xs {
|
||||
display: block !important;
|
||||
}
|
||||
tr.hidden-xs {
|
||||
|
||||
@@ -1,155 +1,155 @@
|
||||
(function($) {
|
||||
$.extend($.summernote.lang, {
|
||||
'zh-CN': {
|
||||
font: {
|
||||
bold: '粗体',
|
||||
italic: '斜体',
|
||||
underline: '下划线',
|
||||
clear: '清除格式',
|
||||
height: '行高',
|
||||
name: '字体',
|
||||
strikethrough: '删除线',
|
||||
subscript: '下标',
|
||||
superscript: '上标',
|
||||
size: '字号'
|
||||
},
|
||||
image: {
|
||||
image: '图片',
|
||||
insert: '插入图片',
|
||||
resizeFull: '缩放至 100%',
|
||||
resizeHalf: '缩放至 50%',
|
||||
resizeQuarter: '缩放至 25%',
|
||||
floatLeft: '靠左浮动',
|
||||
floatRight: '靠右浮动',
|
||||
floatNone: '取消浮动',
|
||||
shapeRounded: '形状: 圆角',
|
||||
shapeCircle: '形状: 圆',
|
||||
shapeThumbnail: '形状: 缩略图',
|
||||
shapeNone: '形状: 无',
|
||||
dragImageHere: '将图片拖拽至此处',
|
||||
dropImage: '拖拽图片或文本',
|
||||
selectFromFiles: '从本地上传',
|
||||
maximumFileSize: '文件大小最大值',
|
||||
maximumFileSizeError: '文件大小超出最大值。',
|
||||
url: '图片地址',
|
||||
remove: '移除图片',
|
||||
original: '原始图片'
|
||||
},
|
||||
video: {
|
||||
video: '视频',
|
||||
videoLink: '视频链接',
|
||||
insert: '插入视频',
|
||||
url: '视频地址',
|
||||
providers: '(优酷, 腾讯, Instagram, DailyMotion, Youtube等)'
|
||||
},
|
||||
link: {
|
||||
link: '链接',
|
||||
insert: '插入链接',
|
||||
unlink: '去除链接',
|
||||
edit: '编辑链接',
|
||||
textToDisplay: '显示文本',
|
||||
url: '链接地址',
|
||||
openInNewWindow: '在新窗口打开'
|
||||
},
|
||||
table: {
|
||||
table: '表格',
|
||||
addRowAbove: '在上方插入行',
|
||||
addRowBelow: '在下方插入行',
|
||||
addColLeft: '在左侧插入列',
|
||||
addColRight: '在右侧插入列',
|
||||
delRow: '删除行',
|
||||
delCol: '删除列',
|
||||
delTable: '删除表格'
|
||||
},
|
||||
hr: {
|
||||
insert: '水平线'
|
||||
},
|
||||
style: {
|
||||
style: '样式',
|
||||
p: '普通',
|
||||
blockquote: '引用',
|
||||
pre: '代码',
|
||||
h1: '标题 1',
|
||||
h2: '标题 2',
|
||||
h3: '标题 3',
|
||||
h4: '标题 4',
|
||||
h5: '标题 5',
|
||||
h6: '标题 6'
|
||||
},
|
||||
lists: {
|
||||
unordered: '无序列表',
|
||||
ordered: '有序列表'
|
||||
},
|
||||
options: {
|
||||
help: '帮助',
|
||||
fullscreen: '全屏',
|
||||
codeview: '源代码'
|
||||
},
|
||||
paragraph: {
|
||||
paragraph: '段落',
|
||||
outdent: '减少缩进',
|
||||
indent: '增加缩进',
|
||||
left: '左对齐',
|
||||
center: '居中对齐',
|
||||
right: '右对齐',
|
||||
justify: '两端对齐'
|
||||
},
|
||||
color: {
|
||||
recent: '最近使用',
|
||||
more: '更多',
|
||||
background: '背景',
|
||||
foreground: '前景',
|
||||
transparent: '透明',
|
||||
setTransparent: '透明',
|
||||
reset: '重置',
|
||||
resetToDefault: '默认'
|
||||
},
|
||||
shortcut: {
|
||||
shortcuts: '快捷键',
|
||||
close: '关闭',
|
||||
textFormatting: '文本格式',
|
||||
action: '动作',
|
||||
paragraphFormatting: '段落格式',
|
||||
documentStyle: '文档样式',
|
||||
extraKeys: '额外按键'
|
||||
},
|
||||
help: {
|
||||
insertParagraph: '插入段落',
|
||||
undo: '撤销',
|
||||
redo: '重做',
|
||||
tab: '增加缩进',
|
||||
untab: '减少缩进',
|
||||
bold: '粗体',
|
||||
italic: '斜体',
|
||||
underline: '下划线',
|
||||
strikethrough: '删除线',
|
||||
removeFormat: '清除格式',
|
||||
justifyLeft: '左对齐',
|
||||
justifyCenter: '居中对齐',
|
||||
justifyRight: '右对齐',
|
||||
justifyFull: '两端对齐',
|
||||
insertUnorderedList: '无序列表',
|
||||
insertOrderedList: '有序列表',
|
||||
outdent: '减少缩进',
|
||||
indent: '增加缩进',
|
||||
formatPara: '设置选中内容样式为 普通',
|
||||
formatH1: '设置选中内容样式为 标题1',
|
||||
formatH2: '设置选中内容样式为 标题2',
|
||||
formatH3: '设置选中内容样式为 标题3',
|
||||
formatH4: '设置选中内容样式为 标题4',
|
||||
formatH5: '设置选中内容样式为 标题5',
|
||||
formatH6: '设置选中内容样式为 标题6',
|
||||
insertHorizontalRule: '插入水平线',
|
||||
'linkDialog.show': '显示链接对话框'
|
||||
},
|
||||
history: {
|
||||
undo: '撤销',
|
||||
redo: '重做'
|
||||
},
|
||||
specialChar: {
|
||||
specialChar: '特殊字符',
|
||||
select: '选取特殊字符'
|
||||
}
|
||||
}
|
||||
});
|
||||
})(jQuery);
|
||||
(function($) {
|
||||
$.extend($.summernote.lang, {
|
||||
'zh-CN': {
|
||||
font: {
|
||||
bold: '粗体',
|
||||
italic: '斜体',
|
||||
underline: '下划线',
|
||||
clear: '清除格式',
|
||||
height: '行高',
|
||||
name: '字体',
|
||||
strikethrough: '删除线',
|
||||
subscript: '下标',
|
||||
superscript: '上标',
|
||||
size: '字号',
|
||||
},
|
||||
image: {
|
||||
image: '图片',
|
||||
insert: '插入图片',
|
||||
resizeFull: '缩放至 100%',
|
||||
resizeHalf: '缩放至 50%',
|
||||
resizeQuarter: '缩放至 25%',
|
||||
floatLeft: '靠左浮动',
|
||||
floatRight: '靠右浮动',
|
||||
floatNone: '取消浮动',
|
||||
shapeRounded: '形状: 圆角',
|
||||
shapeCircle: '形状: 圆',
|
||||
shapeThumbnail: '形状: 缩略图',
|
||||
shapeNone: '形状: 无',
|
||||
dragImageHere: '将图片拖拽至此处',
|
||||
dropImage: '拖拽图片或文本',
|
||||
selectFromFiles: '从本地上传',
|
||||
maximumFileSize: '文件大小最大值',
|
||||
maximumFileSizeError: '文件大小超出最大值。',
|
||||
url: '图片地址',
|
||||
remove: '移除图片',
|
||||
original: '原始图片',
|
||||
},
|
||||
video: {
|
||||
video: '视频',
|
||||
videoLink: '视频链接',
|
||||
insert: '插入视频',
|
||||
url: '视频地址',
|
||||
providers: '(优酷, 腾讯, Instagram, DailyMotion, Youtube等)',
|
||||
},
|
||||
link: {
|
||||
link: '链接',
|
||||
insert: '插入链接',
|
||||
unlink: '去除链接',
|
||||
edit: '编辑链接',
|
||||
textToDisplay: '显示文本',
|
||||
url: '链接地址',
|
||||
openInNewWindow: '在新窗口打开',
|
||||
},
|
||||
table: {
|
||||
table: '表格',
|
||||
addRowAbove: '在上方插入行',
|
||||
addRowBelow: '在下方插入行',
|
||||
addColLeft: '在左侧插入列',
|
||||
addColRight: '在右侧插入列',
|
||||
delRow: '删除行',
|
||||
delCol: '删除列',
|
||||
delTable: '删除表格',
|
||||
},
|
||||
hr: {
|
||||
insert: '水平线',
|
||||
},
|
||||
style: {
|
||||
style: '样式',
|
||||
p: '普通',
|
||||
blockquote: '引用',
|
||||
pre: '代码',
|
||||
h1: '标题 1',
|
||||
h2: '标题 2',
|
||||
h3: '标题 3',
|
||||
h4: '标题 4',
|
||||
h5: '标题 5',
|
||||
h6: '标题 6',
|
||||
},
|
||||
lists: {
|
||||
unordered: '无序列表',
|
||||
ordered: '有序列表',
|
||||
},
|
||||
options: {
|
||||
help: '帮助',
|
||||
fullscreen: '全屏',
|
||||
codeview: '源代码',
|
||||
},
|
||||
paragraph: {
|
||||
paragraph: '段落',
|
||||
outdent: '减少缩进',
|
||||
indent: '增加缩进',
|
||||
left: '左对齐',
|
||||
center: '居中对齐',
|
||||
right: '右对齐',
|
||||
justify: '两端对齐',
|
||||
},
|
||||
color: {
|
||||
recent: '最近使用',
|
||||
more: '更多',
|
||||
background: '背景',
|
||||
foreground: '前景',
|
||||
transparent: '透明',
|
||||
setTransparent: '透明',
|
||||
reset: '重置',
|
||||
resetToDefault: '默认',
|
||||
},
|
||||
shortcut: {
|
||||
shortcuts: '快捷键',
|
||||
close: '关闭',
|
||||
textFormatting: '文本格式',
|
||||
action: '动作',
|
||||
paragraphFormatting: '段落格式',
|
||||
documentStyle: '文档样式',
|
||||
extraKeys: '额外按键',
|
||||
},
|
||||
help: {
|
||||
insertParagraph: '插入段落',
|
||||
undo: '撤销',
|
||||
redo: '重做',
|
||||
tab: '增加缩进',
|
||||
untab: '减少缩进',
|
||||
bold: '粗体',
|
||||
italic: '斜体',
|
||||
underline: '下划线',
|
||||
strikethrough: '删除线',
|
||||
removeFormat: '清除格式',
|
||||
justifyLeft: '左对齐',
|
||||
justifyCenter: '居中对齐',
|
||||
justifyRight: '右对齐',
|
||||
justifyFull: '两端对齐',
|
||||
insertUnorderedList: '无序列表',
|
||||
insertOrderedList: '有序列表',
|
||||
outdent: '减少缩进',
|
||||
indent: '增加缩进',
|
||||
formatPara: '设置选中内容样式为 普通',
|
||||
formatH1: '设置选中内容样式为 标题1',
|
||||
formatH2: '设置选中内容样式为 标题2',
|
||||
formatH3: '设置选中内容样式为 标题3',
|
||||
formatH4: '设置选中内容样式为 标题4',
|
||||
formatH5: '设置选中内容样式为 标题5',
|
||||
formatH6: '设置选中内容样式为 标题6',
|
||||
insertHorizontalRule: '插入水平线',
|
||||
'linkDialog.show': '显示链接对话框',
|
||||
},
|
||||
history: {
|
||||
undo: '撤销',
|
||||
redo: '重做',
|
||||
},
|
||||
specialChar: {
|
||||
specialChar: '特殊字符',
|
||||
select: '选取特殊字符',
|
||||
},
|
||||
},
|
||||
});
|
||||
})(jQuery);
|
||||
|
||||
-3
@@ -1,3 +0,0 @@
|
||||
/*! Summernote v0.8.11 | (c) 2013- Alan Hong and other contributors | MIT license */
|
||||
|
||||
!function(e){e.extend(e.summernote.lang,{"zh-CN":{font:{bold:"粗体",italic:"斜体",underline:"下划线",clear:"清除格式",height:"行高",name:"字体",strikethrough:"删除线",subscript:"下标",superscript:"上标",size:"字号"},image:{image:"图片",insert:"插入图片",resizeFull:"缩放至 100%",resizeHalf:"缩放至 50%",resizeQuarter:"缩放至 25%",floatLeft:"靠左浮动",floatRight:"靠右浮动",floatNone:"取消浮动",shapeRounded:"形状: 圆角",shapeCircle:"形状: 圆",shapeThumbnail:"形状: 缩略图",shapeNone:"形状: 无",dragImageHere:"将图片拖拽至此处",dropImage:"拖拽图片或文本",selectFromFiles:"从本地上传",maximumFileSize:"文件大小最大值",maximumFileSizeError:"文件大小超出最大值。",url:"图片地址",remove:"移除图片",original:"原始图片"},video:{video:"视频",videoLink:"视频链接",insert:"插入视频",url:"视频地址",providers:"(优酷, 腾讯, Instagram, DailyMotion, Youtube等)"},link:{link:"链接",insert:"插入链接",unlink:"去除链接",edit:"编辑链接",textToDisplay:"显示文本",url:"链接地址",openInNewWindow:"在新窗口打开"},table:{table:"表格",addRowAbove:"在上方插入行",addRowBelow:"在下方插入行",addColLeft:"在左侧插入列",addColRight:"在右侧插入列",delRow:"删除行",delCol:"删除列",delTable:"删除表格"},hr:{insert:"水平线"},style:{style:"样式",p:"普通",blockquote:"引用",pre:"代码",h1:"标题 1",h2:"标题 2",h3:"标题 3",h4:"标题 4",h5:"标题 5",h6:"标题 6"},lists:{unordered:"无序列表",ordered:"有序列表"},options:{help:"帮助",fullscreen:"全屏",codeview:"源代码"},paragraph:{paragraph:"段落",outdent:"减少缩进",indent:"增加缩进",left:"左对齐",center:"居中对齐",right:"右对齐",justify:"两端对齐"},color:{recent:"最近使用",more:"更多",background:"背景",foreground:"前景",transparent:"透明",setTransparent:"透明",reset:"重置",resetToDefault:"默认"},shortcut:{shortcuts:"快捷键",close:"关闭",textFormatting:"文本格式",action:"动作",paragraphFormatting:"段落格式",documentStyle:"文档样式",extraKeys:"额外按键"},help:{insertParagraph:"插入段落",undo:"撤销",redo:"重做",tab:"增加缩进",untab:"减少缩进",bold:"粗体",italic:"斜体",underline:"下划线",strikethrough:"删除线",removeFormat:"清除格式",justifyLeft:"左对齐",justifyCenter:"居中对齐",justifyRight:"右对齐",justifyFull:"两端对齐",insertUnorderedList:"无序列表",insertOrderedList:"有序列表",outdent:"减少缩进",indent:"增加缩进",formatPara:"设置选中内容样式为 普通",formatH1:"设置选中内容样式为 标题1",formatH2:"设置选中内容样式为 标题2",formatH3:"设置选中内容样式为 标题3",formatH4:"设置选中内容样式为 标题4",formatH5:"设置选中内容样式为 标题5",formatH6:"设置选中内容样式为 标题6",insertHorizontalRule:"插入水平线","linkDialog.show":"显示链接对话框"},history:{undo:"撤销",redo:"重做"},specialChar:{specialChar:"特殊字符",select:"选取特殊字符"}}})}(jQuery);
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
+3
-3
File diff suppressed because one or more lines are too long
@@ -5,7 +5,7 @@
|
||||
*
|
||||
*/
|
||||
/** 蓝色主题 skin-blue **/
|
||||
.skin-blue .navbar {
|
||||
.navbar, .skin-blue .navbar {
|
||||
background-color: #3c8dbc
|
||||
}
|
||||
|
||||
@@ -103,11 +103,6 @@
|
||||
border-left: none;
|
||||
}
|
||||
|
||||
.skin-blue .nav>li>.treeview-menu {
|
||||
margin: 0 1px;
|
||||
background: #2c3b41
|
||||
}
|
||||
|
||||
.skin-blue .sidebar a {
|
||||
color: #b8c7ce
|
||||
}
|
||||
@@ -116,15 +111,6 @@
|
||||
text-decoration: none
|
||||
}
|
||||
|
||||
.skin-blue .treeview-menu>li>a {
|
||||
color: #8aa4af
|
||||
}
|
||||
|
||||
.skin-blue .treeview-menu>li.active>a,
|
||||
.skin-blue .treeview-menu>li>a:hover {
|
||||
color: #fff
|
||||
}
|
||||
|
||||
.skin-blue .sidebar-form {
|
||||
border-radius: 3px;
|
||||
border: 1px solid #374850;
|
||||
@@ -292,11 +278,6 @@
|
||||
border-left: none;
|
||||
}
|
||||
|
||||
.skin-green .nav>li>.treeview-menu {
|
||||
margin: 0 1px;
|
||||
background: #2c3b41
|
||||
}
|
||||
|
||||
.skin-green .sidebar a {
|
||||
color: #b8c7ce
|
||||
}
|
||||
@@ -305,15 +286,6 @@
|
||||
text-decoration: none
|
||||
}
|
||||
|
||||
.skin-green .treeview-menu>li>a {
|
||||
color: #8aa4af
|
||||
}
|
||||
|
||||
.skin-green .treeview-menu>li.active>a,
|
||||
.skin-green .treeview-menu>li>a:hover {
|
||||
color: #fff
|
||||
}
|
||||
|
||||
.skin-green .sidebar-form {
|
||||
border-radius: 3px;
|
||||
border: 1px solid #374850;
|
||||
@@ -457,11 +429,6 @@
|
||||
border-bottom: 1px solid #e5e5e5;
|
||||
}
|
||||
|
||||
.skin-red .nav>li>.treeview-menu {
|
||||
margin: 0 1px;
|
||||
background: #2c3b41
|
||||
}
|
||||
|
||||
.skin-red .sidebar a {
|
||||
color: #b8c7ce
|
||||
}
|
||||
@@ -470,15 +437,6 @@
|
||||
text-decoration: none
|
||||
}
|
||||
|
||||
.skin-red .treeview-menu>li>a {
|
||||
color: #8aa4af
|
||||
}
|
||||
|
||||
.skin-red .treeview-menu>li.active>a,
|
||||
.skin-red .treeview-menu>li>a:hover {
|
||||
color: #fff
|
||||
}
|
||||
|
||||
.skin-red .sidebar-form {
|
||||
border-radius: 3px;
|
||||
border: 1px solid #374850;
|
||||
@@ -622,11 +580,6 @@
|
||||
border-bottom: 1px solid #e5e5e5;
|
||||
}
|
||||
|
||||
.skin-yellow .nav>li>.treeview-menu {
|
||||
margin: 0 1px;
|
||||
background: #2c3b41
|
||||
}
|
||||
|
||||
.skin-yellow .sidebar a {
|
||||
color: #b8c7ce
|
||||
}
|
||||
@@ -635,15 +588,6 @@
|
||||
text-decoration: none
|
||||
}
|
||||
|
||||
.skin-yellow .treeview-menu>li>a {
|
||||
color: #8aa4af
|
||||
}
|
||||
|
||||
.skin-yellow .treeview-menu>li.active>a,
|
||||
.skin-yellow .treeview-menu>li>a:hover {
|
||||
color: #fff
|
||||
}
|
||||
|
||||
.skin-yellow .sidebar-form {
|
||||
border-radius: 3px;
|
||||
border: 1px solid #374850;
|
||||
@@ -787,11 +731,6 @@
|
||||
border-bottom: 1px solid #e5e5e5;
|
||||
}
|
||||
|
||||
.skin-purple .nav>li>.treeview-menu {
|
||||
margin: 0 1px;
|
||||
background: #2c3b41
|
||||
}
|
||||
|
||||
.skin-purple .sidebar a {
|
||||
color: #b8c7ce
|
||||
}
|
||||
@@ -800,15 +739,6 @@
|
||||
text-decoration: none
|
||||
}
|
||||
|
||||
.skin-purple .treeview-menu>li>a {
|
||||
color: #8aa4af
|
||||
}
|
||||
|
||||
.skin-purple .treeview-menu>li.active>a,
|
||||
.skin-purple .treeview-menu>li>a:hover {
|
||||
color: #fff
|
||||
}
|
||||
|
||||
.skin-purple .sidebar-form {
|
||||
border-radius: 3px;
|
||||
border: 1px solid #374850;
|
||||
@@ -855,7 +785,7 @@
|
||||
* NAME - .theme-dark/theme-light
|
||||
*
|
||||
*/
|
||||
/** 深色主题 .theme-dark **/
|
||||
/** 深黑主题 .theme-dark **/
|
||||
.theme-dark .user-panel>.info>p, .theme-dark .user-panel>.info, .theme-dark .user-panel>.info>a{
|
||||
color: #fff
|
||||
}
|
||||
@@ -961,4 +891,94 @@
|
||||
.fixed-sidebar.theme-light.mini-navbar .nav li:hover>.nav-second-level {
|
||||
background-color: #f9fafc;
|
||||
}
|
||||
|
||||
|
||||
/** 深蓝主题 theme-light **/
|
||||
/**
|
||||
.skin-blue.theme-blue .logo, .skin-white.theme-blue .logo {
|
||||
background-color: rgba(15,41,80,1) !important;
|
||||
color: #fff;
|
||||
}
|
||||
**/
|
||||
.theme-blue .user-panel>.info>p, .theme-blue .user-panel>.info, .theme-blue .user-panel>.info>a{
|
||||
color: #a3b1cc
|
||||
}
|
||||
|
||||
.theme-blue .nav>li.active{
|
||||
background-color: rgba(15,41,80,1);
|
||||
}
|
||||
|
||||
.theme-blue .navbar-static-side {
|
||||
background-color: rgba(15,41,80,1);
|
||||
box-shadow: 2px 0 2px 0 rgba(29,35,41,.05);
|
||||
}
|
||||
|
||||
.theme-blue .user-panel {
|
||||
background-color: rgba(15,41,80,1);
|
||||
}
|
||||
|
||||
.theme-blue .navbar-default .nav>li>a {
|
||||
color: #a3b1cc;
|
||||
}
|
||||
|
||||
.theme-blue.skin-blue .navbar-default .nav>li.active>a {
|
||||
color: #1890ff;
|
||||
}
|
||||
|
||||
.theme-blue.skin-blue .navbar-default .nav>li.selected>a,
|
||||
.theme-blue.skin-blue .navbar-default .nav>li.selected>a:focus {
|
||||
background-color: #1890ff;
|
||||
}
|
||||
|
||||
.theme-blue.skin-green .navbar-default .nav>li.active>a {
|
||||
color: #52c41a;
|
||||
}
|
||||
|
||||
.theme-blue.skin-green .navbar-default .nav>li.selected>a,
|
||||
.theme-blue.skin-green .navbar-default .nav>li.selected>a:focus {
|
||||
background-color: #52c41a;
|
||||
color: rgba(255,255,255,1);
|
||||
}
|
||||
|
||||
.theme-blue.skin-purple .navbar-default .nav>li.active>a {
|
||||
color: rgb(114, 46, 209);
|
||||
}
|
||||
|
||||
.theme-blue.skin-purple .navbar-default .nav>li.selected>a,
|
||||
.theme-blue.skin-purple .navbar-default .nav>li.selected>a:focus {
|
||||
background-color: #722ed1;
|
||||
color: rgba(255,255,255,1);
|
||||
}
|
||||
|
||||
.theme-blue.skin-red .navbar-default .nav>li.active>a {
|
||||
color: rgb(245, 34, 45);
|
||||
}
|
||||
|
||||
.theme-blue.skin-red .navbar-default .nav>li.selected>a,
|
||||
.theme-blue.skin-red .navbar-default .nav>li.selected>a:focus {
|
||||
background-color: #f5222d;
|
||||
color: rgba(255,255,255,1);
|
||||
}
|
||||
|
||||
.theme-blue.skin-yellow .navbar-default .nav>li.active>a {
|
||||
color: rgb(250, 173, 20);
|
||||
}
|
||||
|
||||
.theme-blue.skin-yellow .navbar-default .nav>li.selected>a,
|
||||
.theme-blue.skin-yellow .navbar-default .nav>li.selected>a:focus {
|
||||
background-color: #faad14;
|
||||
color: rgba(255,255,255,1);
|
||||
}
|
||||
|
||||
.theme-blue .navbar-default .nav>li>a:hover,
|
||||
.theme-blue .navbar-default .nav>li>a:focus {
|
||||
background-color: rgba(15,41,80,1);
|
||||
box-shadow: 2px 0 2px 0 rgba(29,35,41,.05);
|
||||
}
|
||||
|
||||
.fixed-sidebar.theme-blue.mini-navbar .nav li:hover>a> span.nav-label {
|
||||
background-color: rgba(15,41,80,1);
|
||||
}
|
||||
|
||||
.fixed-sidebar.theme-blue.mini-navbar .nav li:hover>.nav-second-level {
|
||||
background-color: rgba(15,41,80,1);
|
||||
}
|
||||
|
||||
@@ -763,15 +763,15 @@ body.canvas-menu.mini-navbar nav.navbar-static-side {
|
||||
}
|
||||
|
||||
.btn-default {
|
||||
background-color: #c2c2c2;
|
||||
border-color: #c2c2c2;
|
||||
color: #FFFFFF;
|
||||
background-color: #f4f4f4;
|
||||
border-color: #ddd;
|
||||
color: #444;
|
||||
}
|
||||
|
||||
.btn-default:hover, .btn-default:focus, .btn-default:active, .btn-default.active, .open .dropdown-toggle.btn-default {
|
||||
background-color: #bababa;
|
||||
border-color: #bababa;
|
||||
color: #FFFFFF;
|
||||
background-color: #e7e7e7;
|
||||
border-color: #e7e7e7;
|
||||
color: #444;
|
||||
}
|
||||
|
||||
.btn-default:active, .btn-default.active, .open .dropdown-toggle.btn-default {
|
||||
@@ -6939,7 +6939,7 @@ body.rtls .top-navigation .footer.fixed, body.rtls.top-navigation .footer.fixed
|
||||
background: #f5f5f5;
|
||||
}
|
||||
|
||||
.nav .logo {
|
||||
nav .logo {
|
||||
background-color: #367fa9;
|
||||
color: #fff;
|
||||
border-bottom: 0 solid transparent;
|
||||
|
||||
@@ -18,6 +18,7 @@ user.password.not.valid=* 5-50个字符
|
||||
user.email.not.valid=邮箱格式错误
|
||||
user.mobile.phone.number.not.valid=手机号格式错误
|
||||
user.login.success=登录成功
|
||||
user.register.success=注册成功
|
||||
user.notfound=请重新登录
|
||||
user.forcelogout=管理员强制退出,请重新登录
|
||||
user.unknown.error=未知错误,请重新登录
|
||||
|
||||
@@ -322,12 +322,18 @@
|
||||
}
|
||||
|
||||
/** 表单验证 样式布局 **/
|
||||
.control-label.is-required:before {
|
||||
content: '* ';
|
||||
color: red;
|
||||
}
|
||||
|
||||
label.error {
|
||||
position: absolute;
|
||||
right: 18px;
|
||||
top: 10px;
|
||||
color: #ef392b;
|
||||
font-size: 12px
|
||||
font-size: 12px;
|
||||
z-index:99;
|
||||
}
|
||||
|
||||
.input-group label.error {
|
||||
@@ -573,14 +579,14 @@ label.error {
|
||||
}
|
||||
}
|
||||
|
||||
/** 表单查询条件 **/
|
||||
ul {
|
||||
/** 表单查询条件 **/
|
||||
.select-list ul, .layui-layer-content ul {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
-webkit-tap-highlight-color: rgba(0,0,0,0);
|
||||
}
|
||||
|
||||
li {
|
||||
.select-list li, .layui-layer-content li {
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
@@ -638,10 +644,10 @@ label {
|
||||
margin: 5px 15px 5px 0px;
|
||||
}
|
||||
|
||||
.select-list li p{
|
||||
.select-list li p, .select-list li label:not(.radio-box){
|
||||
float: left;
|
||||
width: 80px;
|
||||
margin: 5px 15px 5px 0px;
|
||||
width: 65px;
|
||||
margin: 5px 5px 5px 0px;
|
||||
text-align:right;
|
||||
}
|
||||
|
||||
@@ -737,6 +743,20 @@ label {
|
||||
background-color: #12889a
|
||||
}
|
||||
|
||||
.select-list .select2-container--bootstrap {
|
||||
width: 200px!important;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.select-list .select2-container--bootstrap .select2-selection {
|
||||
border-radius: 6px;
|
||||
}
|
||||
|
||||
.select-list .select2-container--bootstrap .select2-selection--single {
|
||||
height: 30px!important;
|
||||
padding: 5px 10px;
|
||||
}
|
||||
|
||||
.select-list .select-time input {
|
||||
width: 93px;
|
||||
}
|
||||
@@ -797,12 +817,26 @@ label {
|
||||
border: 0px!important;
|
||||
}
|
||||
|
||||
.table-striped .table, .table-striped .table, .table>thead>tr>th, .table>tbody>tr>th, .table>tfoot>tr>th, .table>thead>tr>td, .table>tbody>tr>td, .table>tfoot>tr>td {
|
||||
.table-striped table>thead>tr>th, .table-striped table>tbody>tr>th, .table-striped table>tfoot>tr>th, .table-striped table>thead>tr>td, .table-striped table>tbody>tr>td, .table-striped table>tfoot>tr>td {
|
||||
border-bottom: 1px solid #e7eaec!important;
|
||||
background-color: transparent!important;
|
||||
background-color: transparent;
|
||||
border: 0px;
|
||||
}
|
||||
|
||||
|
||||
.table-bordered table>thead>tr>th:first-child, .table-bordered table>tbody>tr>td:first-child {
|
||||
border-left: 1px solid #ddd;
|
||||
}
|
||||
|
||||
.table-bordered table>thead>tr>th:last-child, .table-bordered table>tbody>tr>td:last-child {
|
||||
border-right: 1px solid #ddd;
|
||||
}
|
||||
|
||||
.table-bordered table>thead>tr>th, .table-bordered table>tbody>tr>td {
|
||||
border-top: 1px solid #ddd!important;
|
||||
border-bottom: 1px solid #ddd;
|
||||
}
|
||||
|
||||
.fixed-table-footer {
|
||||
border-top: 0px solid #ddd;
|
||||
}
|
||||
@@ -824,14 +858,14 @@ label {
|
||||
background-color: #eff3f8;
|
||||
}
|
||||
|
||||
.table-bordered td,.table-bordered th {
|
||||
border: 1px solid #ddd!important
|
||||
}
|
||||
|
||||
.fixed-table-container thead th >.both{
|
||||
display: inline-block
|
||||
}
|
||||
|
||||
.editable-input .input-sm {
|
||||
height: 32px!important;
|
||||
}
|
||||
|
||||
/** 表格冻结列样式 **/
|
||||
.left-fixed-table-columns, .left-fixed-body-columns {
|
||||
position: absolute;
|
||||
@@ -875,7 +909,7 @@ label {
|
||||
.bootstrap-tree-table .treetable-table thead, .treetable-table tbody tr {display:table;width:100%;table-layout:fixed;}
|
||||
.bootstrap-tree-table .treetable-thead th{line-height:24px;border: 0 !important;border-radius: 4px;border-left:0px solid #e7eaec !important;border-bottom:1px solid #ccc!important;text-align: left;}
|
||||
.bootstrap-tree-table .treetable-thead tr :first-child{border-left:0 !important}
|
||||
.bootstrap-tree-table .treetable-tbody td{overflow:hidden;border: 0 !important;border-left:0px solid #e7eaec !important;border-bottom:1px solid #e7eaec!important;white-space: nowrap; text-overflow: ellipsis;}
|
||||
.bootstrap-tree-table .treetable-tbody td{border: 0 !important;border-left:0px solid #e7eaec !important;border-bottom:1px solid #e7eaec!important;white-space: nowrap; text-overflow: ellipsis;}
|
||||
.bootstrap-tree-table .treetable-tbody tr :first-child{border-left:0 !important}
|
||||
.bootstrap-tree-table .treetable-bars .tool-left, .bootstrap-tree-table .treetable-bars .tool-right{margin-top: 10px; margin-bottom: 10px;}
|
||||
.bootstrap-tree-table .treetable-bars .tool-left{float: left;}
|
||||
@@ -980,6 +1014,50 @@ label {
|
||||
background-color: #F5F5F5;
|
||||
}
|
||||
|
||||
/** 气泡弹出框样式 **/
|
||||
.popover {
|
||||
font-size: 13px;
|
||||
max-width: unset;
|
||||
}
|
||||
|
||||
.popover-title {
|
||||
padding: 8px 14px;
|
||||
margin: 0 !important;
|
||||
font-size: 14px;
|
||||
background-color: #f7f7f7;
|
||||
border-bottom: 1px solid #ebebeb;
|
||||
border-radius: 5px 5px 0 0;
|
||||
}
|
||||
|
||||
.popover-content {
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
/** 向上滚动样式 **/
|
||||
#scroll-up {
|
||||
border-width: 0;
|
||||
position: fixed;
|
||||
right: 2px;
|
||||
z-index: 99;
|
||||
-webkit-transition-duration: .3s;
|
||||
transition-duration: .3s;
|
||||
opacity: 0;
|
||||
filter: alpha(opacity=0);
|
||||
bottom: -24px;
|
||||
visibility: hidden;
|
||||
background-color: #aaa;
|
||||
color: #fff;
|
||||
font-size: 14px;
|
||||
display: none;
|
||||
}
|
||||
|
||||
#scroll-up.display {
|
||||
opacity: .7;
|
||||
filter: alpha(opacity=70);
|
||||
bottom: 2px;
|
||||
visibility: visible;
|
||||
}
|
||||
|
||||
::-webkit-scrollbar {
|
||||
width: 6px;
|
||||
height: 10px;
|
||||
|
||||
@@ -7,14 +7,16 @@ layer.config({
|
||||
skin: 'layer-ext-moon'
|
||||
});
|
||||
|
||||
var isMobile = $.common.isMobile() || $(window).width() < 769;
|
||||
|
||||
$(function() {
|
||||
// MetsiMenu
|
||||
$('#side-menu').metisMenu();
|
||||
|
||||
//固定菜单栏
|
||||
// 固定菜单栏
|
||||
$(function() {
|
||||
$('.sidebar-collapse').slimScroll({
|
||||
height: '100%',
|
||||
height: '96%',
|
||||
railOpacity: 0.9,
|
||||
alwaysVisible: false
|
||||
});
|
||||
@@ -22,16 +24,21 @@ $(function() {
|
||||
|
||||
// 菜单切换
|
||||
$('.navbar-minimalize').click(function() {
|
||||
$("body").toggleClass("mini-navbar");
|
||||
if (isMobile) {
|
||||
$("body").toggleClass("canvas-menu");
|
||||
} else {
|
||||
$("body").toggleClass("mini-navbar");
|
||||
}
|
||||
SmoothlyMenu();
|
||||
});
|
||||
|
||||
|
||||
$('#side-menu>li').click(function() {
|
||||
if ($('body').hasClass('mini-navbar')) {
|
||||
if ($('body').hasClass('canvas-menu mini-navbar')) {
|
||||
NavToggle();
|
||||
}
|
||||
|
||||
});
|
||||
$('#side-menu>li li a').click(function() {
|
||||
$('#side-menu>li li a:not(:has(span))').click(function() {
|
||||
if ($(window).width() < 769) {
|
||||
NavToggle();
|
||||
}
|
||||
@@ -49,9 +56,8 @@ $(function() {
|
||||
$(window).bind("load resize",
|
||||
function() {
|
||||
if ($(this).width() < 769) {
|
||||
$('body').addClass('mini-navbar');
|
||||
$('.navbar-static-side').fadeIn();
|
||||
$(".sidebar-collapse .logo").addClass("hide");
|
||||
$('body').addClass('canvas-menu');
|
||||
$("nav .logo").addClass("hide");
|
||||
$(".slimScrollDiv").css({ "overflow":"hidden" })
|
||||
}
|
||||
});
|
||||
@@ -60,21 +66,27 @@ function NavToggle() {
|
||||
$('.navbar-minimalize').trigger('click');
|
||||
}
|
||||
|
||||
function fixedSidebar() {
|
||||
$('#side-menu').hide();
|
||||
$("nav .logo").addClass("hide");
|
||||
setTimeout(function() {
|
||||
$('#side-menu').fadeIn(500);
|
||||
},
|
||||
100);
|
||||
}
|
||||
|
||||
function SmoothlyMenu() {
|
||||
if (!$('body').hasClass('mini-navbar')) {
|
||||
$('#side-menu').hide();
|
||||
$(".sidebar-collapse .logo").removeClass("hide");
|
||||
setTimeout(function() {
|
||||
$('#side-menu').fadeIn(500);
|
||||
},
|
||||
100);
|
||||
} else if ($('body').hasClass('fixed-sidebar')) {
|
||||
$('#side-menu').hide();
|
||||
$(".sidebar-collapse .logo").addClass("hide");
|
||||
setTimeout(function() {
|
||||
$('#side-menu').fadeIn(500);
|
||||
},
|
||||
300);
|
||||
if (isMobile && !$('body').hasClass('canvas-menu')) {
|
||||
$('.navbar-static-side').fadeIn();
|
||||
fixedSidebar();
|
||||
} else if (!isMobile &&!$('body').hasClass('mini-navbar')) {
|
||||
fixedSidebar();
|
||||
$("nav .logo").removeClass("hide");
|
||||
} else if (isMobile && $('body').hasClass('fixed-sidebar')) {
|
||||
$('.navbar-static-side').fadeOut();
|
||||
fixedSidebar();
|
||||
} else if (!isMobile && $('body').hasClass('fixed-sidebar')) {
|
||||
fixedSidebar();
|
||||
} else {
|
||||
$('#side-menu').removeAttr('style');
|
||||
}
|
||||
@@ -219,6 +231,7 @@ $(function() {
|
||||
flag = true;
|
||||
$(".nav ul li, .nav li").removeClass("selected");
|
||||
$(this).parent("li").addClass("selected");
|
||||
setIframeUrl($(this).attr("href"));
|
||||
if (dataUrl == undefined || $.trim(dataUrl).length == 0) return false;
|
||||
|
||||
// 选项卡菜单已存在
|
||||
@@ -398,6 +411,13 @@ $(function() {
|
||||
target.attr('src', url).ready();
|
||||
}
|
||||
|
||||
// 页签全屏
|
||||
function fullScreenTab() {
|
||||
var currentId = $('.page-tabs-content').find('.active').attr('data-id');
|
||||
var target = $('.RuoYi_iframe[data-id="' + currentId + '"]');
|
||||
target.fullScreen(true);
|
||||
}
|
||||
|
||||
// 关闭当前选项卡
|
||||
function tabCloseCurrent() {
|
||||
$('.page-tabs-content').find('.active i').trigger("click");
|
||||
@@ -431,8 +451,11 @@ $(function() {
|
||||
$(document).toggleFullScreen();
|
||||
});
|
||||
|
||||
// 刷新按钮
|
||||
// 页签刷新按钮
|
||||
$('.tabReload').on('click', refreshTab);
|
||||
|
||||
// 页签全屏按钮
|
||||
$('.tabFullScreen').on('click', fullScreenTab);
|
||||
|
||||
// 双击选项卡全屏显示
|
||||
$('.menuTabs').on('dblclick', '.menuTab', activeTabMax);
|
||||
@@ -469,6 +492,17 @@ $(function() {
|
||||
$('#ax_close_max').show();
|
||||
}
|
||||
|
||||
// 设置锚点
|
||||
function setIframeUrl(href) {
|
||||
if($.common.equals("history", mode)) {
|
||||
storage.set('publicPath', href);
|
||||
} else {
|
||||
var nowUrl = window.location.href;
|
||||
var newUrl = nowUrl.substring(0, nowUrl.indexOf("#"));
|
||||
window.location.href = newUrl + "#" + href;
|
||||
}
|
||||
}
|
||||
|
||||
$(window).keydown(function(event) {
|
||||
if (event.keyCode == 27) {
|
||||
$('#content-main').removeClass('max');
|
||||
@@ -476,6 +510,12 @@ $(function() {
|
||||
}
|
||||
});
|
||||
|
||||
window.onhashchange = function() {
|
||||
var hash = location.hash;
|
||||
var url = hash.substring(1, hash.length);
|
||||
$('a[href$="' + url + '"]').click();
|
||||
};
|
||||
|
||||
// 右键菜单实现
|
||||
$.contextMenu({
|
||||
selector: ".menuTab",
|
||||
@@ -547,7 +587,6 @@ $(function() {
|
||||
setActiveTab(this);
|
||||
var target = $('.RuoYi_iframe[data-id="' + this.data('id') + '"]');
|
||||
var url = target.attr('src');
|
||||
target.attr('src', url).ready();
|
||||
$.modal.loading("数据加载中,请稍后...");
|
||||
target.attr('src', url).load(function () {
|
||||
$.modal.closeLoading();
|
||||
@@ -564,4 +603,4 @@ $(function() {
|
||||
},
|
||||
}
|
||||
})
|
||||
});
|
||||
});
|
||||
|
||||
@@ -3,6 +3,20 @@
|
||||
* Copyright (c) 2019 ruoyi
|
||||
*/
|
||||
$(function() {
|
||||
|
||||
// layer扩展皮肤
|
||||
if (window.layer !== undefined) {
|
||||
layer.config({
|
||||
extend: 'moon/style.css',
|
||||
skin: 'layer-ext-moon'
|
||||
});
|
||||
}
|
||||
|
||||
// 回到顶部绑定
|
||||
if ($.fn.toTop !== undefined) {
|
||||
$('#scroll-up').toTop();
|
||||
}
|
||||
|
||||
// select2复选框事件绑定
|
||||
if ($.fn.select2 !== undefined) {
|
||||
$.fn.select2.defaults.set( "theme", "bootstrap" );
|
||||
@@ -57,9 +71,9 @@ $(function() {
|
||||
startDate.config.max.month = date.month - 1;
|
||||
startDate.config.max.date = date.date;
|
||||
} else {
|
||||
startDate.config.max.year = '';
|
||||
startDate.config.max.month = '';
|
||||
startDate.config.max.date = '';
|
||||
startDate.config.max.year = '2099';
|
||||
startDate.config.max.month = '12';
|
||||
startDate.config.max.date = '31';
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -128,7 +142,7 @@ $(function() {
|
||||
// tree表格树 展开/折叠
|
||||
var expandFlag;
|
||||
$("#expandAllBtn").click(function() {
|
||||
var dataExpand = $.common.isEmpty($.table._option.expandAll) ? true : $.table._option.expandAll;
|
||||
var dataExpand = $.common.isEmpty(table.options.expandAll) ? true : table.options.expandAll;
|
||||
expandFlag = $.common.isEmpty(expandFlag) ? dataExpand : expandFlag;
|
||||
if (!expandFlag) {
|
||||
$.bttTable.bootstrapTreeTable('expandAll');
|
||||
@@ -145,6 +159,49 @@ $(function() {
|
||||
});
|
||||
});
|
||||
|
||||
(function ($) {
|
||||
'use strict';
|
||||
$.fn.toTop = function(opt) {
|
||||
var elem = this;
|
||||
var win = $(window);
|
||||
var doc = $('html, body');
|
||||
var options = $.extend({
|
||||
autohide: true,
|
||||
offset: 50,
|
||||
speed: 500,
|
||||
position: true,
|
||||
right: 15,
|
||||
bottom: 5
|
||||
}, opt);
|
||||
elem.css({
|
||||
'cursor': 'pointer'
|
||||
});
|
||||
if (options.autohide) {
|
||||
elem.css('display', 'none');
|
||||
}
|
||||
if (options.position) {
|
||||
elem.css({
|
||||
'position': 'fixed',
|
||||
'right': options.right,
|
||||
'bottom': options.bottom,
|
||||
});
|
||||
}
|
||||
elem.click(function() {
|
||||
doc.animate({
|
||||
scrollTop: 0
|
||||
}, options.speed);
|
||||
});
|
||||
win.scroll(function() {
|
||||
var scrolling = win.scrollTop();
|
||||
if (options.autohide) {
|
||||
if (scrolling > options.offset) {
|
||||
elem.fadeIn(options.speed);
|
||||
} else elem.fadeOut(options.speed);
|
||||
}
|
||||
});
|
||||
};
|
||||
})(jQuery);
|
||||
|
||||
/** 刷新选项卡 */
|
||||
var refreshItem = function(){
|
||||
var topWindow = $(window.parent.document);
|
||||
@@ -225,17 +282,33 @@ function createMenuItem(dataUrl, menuName) {
|
||||
|
||||
//日志打印封装处理
|
||||
var log = {
|
||||
log: function (msg) {
|
||||
console.log(msg);
|
||||
log: function(msg) {
|
||||
console.log(msg);
|
||||
},
|
||||
info: function(msg) {
|
||||
console.info(msg);
|
||||
console.info(msg);
|
||||
},
|
||||
warn: function(msg) {
|
||||
console.warn(msg);
|
||||
console.warn(msg);
|
||||
},
|
||||
error: function(msg) {
|
||||
console.error(msg);
|
||||
console.error(msg);
|
||||
}
|
||||
};
|
||||
|
||||
//本地缓存处理
|
||||
var storage = {
|
||||
set: function(key, value) {
|
||||
window.localStorage.setItem(key, value);
|
||||
},
|
||||
get: function(key) {
|
||||
return window.localStorage.getItem(key);
|
||||
},
|
||||
remove: function(key) {
|
||||
window.localStorage.removeItem(key);
|
||||
},
|
||||
clear: function() {
|
||||
window.localStorage.clear();
|
||||
}
|
||||
};
|
||||
|
||||
@@ -253,7 +326,3 @@ $.ajaxSetup({
|
||||
}
|
||||
}
|
||||
});
|
||||
layer.config({
|
||||
extend: 'moon/style.css',
|
||||
skin: 'layer-ext-moon'
|
||||
});
|
||||
|
||||
@@ -2,14 +2,37 @@
|
||||
* 通用js方法封装处理
|
||||
* Copyright (c) 2019 ruoyi
|
||||
*/
|
||||
|
||||
// 当前table相关信息
|
||||
var table = {
|
||||
config: {},
|
||||
// 当前实例配置
|
||||
options: {},
|
||||
// 设置实例配置
|
||||
set: function(id) {
|
||||
if($.common.getLength(table.config) > 1) {
|
||||
var tableId = $.common.isEmpty(id) ? $(event.currentTarget).parents(".bootstrap-table").find(".table").attr("id") : id;
|
||||
if ($.common.isNotEmpty(tableId)) {
|
||||
table.options = table.get(tableId);
|
||||
}
|
||||
}
|
||||
},
|
||||
// 获取实例配置
|
||||
get: function(id) {
|
||||
return table.config[id];
|
||||
},
|
||||
// 记住选择实例组
|
||||
rememberSelecteds: {},
|
||||
// 记住选择ID组
|
||||
rememberSelectedIds: {}
|
||||
};
|
||||
|
||||
(function ($) {
|
||||
$.extend({
|
||||
_tree: {},
|
||||
btTable: {},
|
||||
bttTable: {},
|
||||
// 表格封装处理
|
||||
table: {
|
||||
_option: {},
|
||||
// 初始化表格参数
|
||||
init: function(options) {
|
||||
var defaults = {
|
||||
@@ -35,6 +58,8 @@
|
||||
showToggle: true,
|
||||
showExport: false,
|
||||
clickToSelect: false,
|
||||
singleSelect: false,
|
||||
mobileResponsive: true,
|
||||
rememberSelected: false,
|
||||
fixedColumns: false,
|
||||
fixedNumber: 0,
|
||||
@@ -44,10 +69,11 @@
|
||||
rowStyle: {},
|
||||
};
|
||||
var options = $.extend(defaults, options);
|
||||
$.table._option = options;
|
||||
$.btTable = $('#' + options.id);
|
||||
table.options = options;
|
||||
table.config[options.id] = options;
|
||||
$.table.initEvent();
|
||||
$('#' + options.id).bootstrapTable({
|
||||
id: options.id,
|
||||
url: options.url, // 请求后台的URL(*)
|
||||
contentType: "application/x-www-form-urlencoded", // 编码类型
|
||||
method: 'post', // 请求方式(*)
|
||||
@@ -78,11 +104,15 @@
|
||||
showExport: options.showExport, // 是否支持导出文件
|
||||
uniqueId: options.uniqueId, // 唯 一的标识符
|
||||
clickToSelect: options.clickToSelect, // 是否启用点击选中行
|
||||
singleSelect: options.singleSelect, // 是否单选checkbox
|
||||
mobileResponsive: options.mobileResponsive, // 是否支持移动端适配
|
||||
detailView: options.detailView, // 是否启用显示细节视图
|
||||
onClickRow: options.onClickRow, // 点击某行触发的事件
|
||||
onDblClickRow: options.onDblClickRow, // 双击某行触发的事件
|
||||
onClickCell: options.onClickCell, // 单击某格触发的事件
|
||||
onDblClickCell: options.onDblClickCell, // 双击某格触发的事件
|
||||
onEditableSave: options.onEditableSave, // 行内编辑保存的事件
|
||||
onExpandRow: options.onExpandRow, // 点击详细视图的事件
|
||||
rememberSelected: options.rememberSelected, // 启用翻页记住前面的选择
|
||||
fixedColumns: options.fixedColumns, // 是否启用冻结列(左侧)
|
||||
fixedNumber: options.fixedNumber, // 列冻结的个数(左侧)
|
||||
@@ -98,6 +128,15 @@
|
||||
detailFormatter: options.detailFormatter, // 在行下面展示其他数据列表
|
||||
});
|
||||
},
|
||||
// 获取实例ID,如存在多个返回#id1,#id2 delimeter分隔符
|
||||
getOptionsIds: function(separator) {
|
||||
var _separator = $.common.isEmpty(separator) ? "," : separator;
|
||||
var optionsIds = "";
|
||||
$.each(table.config, function(key, value){
|
||||
optionsIds += "#" + key + _separator;
|
||||
});
|
||||
return optionsIds.substring(0, optionsIds.length - 1);
|
||||
},
|
||||
// 查询条件
|
||||
queryParams: function(params) {
|
||||
var curParams = {
|
||||
@@ -108,22 +147,22 @@
|
||||
orderByColumn: params.sort,
|
||||
isAsc: params.order
|
||||
};
|
||||
var currentId = $.common.isEmpty($.table._option.formId) ? $('form').attr('id') : $.table._option.formId;
|
||||
var currentId = $.common.isEmpty(table.options.formId) ? $('form').attr('id') : table.options.formId;
|
||||
return $.extend(curParams, $.common.formToJSON(currentId));
|
||||
},
|
||||
// 请求获取数据后处理回调函数
|
||||
responseHandler: function(res) {
|
||||
if (typeof $.table._option.responseHandler == "function") {
|
||||
$.table._option.responseHandler(res);
|
||||
if (typeof table.options.responseHandler == "function") {
|
||||
table.options.responseHandler(res);
|
||||
}
|
||||
if (res.code == 0) {
|
||||
if ($.common.isNotEmpty($.table._option.sidePagination) && $.table._option.sidePagination == 'client') {
|
||||
if ($.common.isNotEmpty(table.options.sidePagination) && table.options.sidePagination == 'client') {
|
||||
return res.rows;
|
||||
} else {
|
||||
if ($.common.isNotEmpty($.table._option.rememberSelected) && $.table._option.rememberSelected) {
|
||||
var column = $.common.isEmpty($.table._option.uniqueId) ? $.table._option.columns[1].field : $.table._option.uniqueId;
|
||||
if ($.common.isNotEmpty(table.options.rememberSelected) && table.options.rememberSelected) {
|
||||
var column = $.common.isEmpty(table.options.uniqueId) ? table.options.columns[1].field : table.options.uniqueId;
|
||||
$.each(res.rows, function(i, row) {
|
||||
row.state = $.inArray(row[column], selectionIds) !== -1;
|
||||
row.state = $.inArray(row[column], table.rememberSelectedIds[table.options.id]) !== -1;
|
||||
})
|
||||
}
|
||||
return { rows: res.rows, total: res.total };
|
||||
@@ -134,27 +173,46 @@
|
||||
}
|
||||
},
|
||||
// 初始化事件
|
||||
initEvent: function(data) {
|
||||
// 触发行点击事件 加载成功事件
|
||||
$.btTable.on("check.bs.table uncheck.bs.table check-all.bs.table uncheck-all.bs.table load-success.bs.table", function () {
|
||||
// 工具栏按钮控制
|
||||
var rows = $.common.isEmpty($.table._option.uniqueId) ? $.table.selectFirstColumns() : $.table.selectColumns($.table._option.uniqueId);
|
||||
// 非多个禁用
|
||||
$('#' + $.table._option.toolbar + ' .multiple').toggleClass('disabled', !rows.length);
|
||||
// 非单个禁用
|
||||
$('#' + $.table._option.toolbar + ' .single').toggleClass('disabled', rows.length!=1);
|
||||
initEvent: function() {
|
||||
// 实例ID信息
|
||||
var optionsIds = $.table.getOptionsIds();
|
||||
// 监听事件处理
|
||||
$(optionsIds).on(TABLE_EVENTS, function () {
|
||||
table.set($(this).attr("id"));
|
||||
});
|
||||
// 绑定选中事件、取消事件、全部选中、全部取消
|
||||
$.btTable.on("check.bs.table check-all.bs.table uncheck.bs.table uncheck-all.bs.table", function (e, rows) {
|
||||
// 选中、取消、全部选中、全部取消(事件)
|
||||
$(optionsIds).on("check.bs.table check-all.bs.table uncheck.bs.table uncheck-all.bs.table", function (e, rows) {
|
||||
// 复选框分页保留保存选中数组
|
||||
var rowIds = $.table.affectedRowIds(rows);
|
||||
if ($.common.isNotEmpty($.table._option.rememberSelected) && $.table._option.rememberSelected) {
|
||||
if ($.common.isNotEmpty(table.options.rememberSelected) && table.options.rememberSelected) {
|
||||
func = $.inArray(e.type, ['check', 'check-all']) > -1 ? 'union' : 'difference';
|
||||
selectionIds = _[func](selectionIds, rowIds);
|
||||
var selectedIds = table.rememberSelectedIds[table.options.id];
|
||||
if($.common.isNotEmpty(selectedIds)) {
|
||||
table.rememberSelectedIds[table.options.id] = _[func](selectedIds, rowIds);
|
||||
} else {
|
||||
table.rememberSelectedIds[table.options.id] = _[func]([], rowIds);
|
||||
}
|
||||
var selectedRows = table.rememberSelecteds[table.options.id];
|
||||
if($.common.isNotEmpty(selectedRows)) {
|
||||
table.rememberSelecteds[table.options.id] = _[func](selectedRows, rows);
|
||||
} else {
|
||||
table.rememberSelecteds[table.options.id] = _[func]([], rows);
|
||||
}
|
||||
}
|
||||
});
|
||||
// 加载成功、选中、取消、全部选中、全部取消(事件)
|
||||
$(optionsIds).on("check.bs.table uncheck.bs.table check-all.bs.table uncheck-all.bs.table load-success.bs.table", function () {
|
||||
var toolbar = table.options.toolbar;
|
||||
var uniqueId = table.options.uniqueId;
|
||||
// 工具栏按钮控制
|
||||
var rows = $.common.isEmpty(uniqueId) ? $.table.selectFirstColumns() : $.table.selectColumns(uniqueId);
|
||||
// 非多个禁用
|
||||
$('#' + toolbar + ' .multiple').toggleClass('disabled', !rows.length);
|
||||
// 非单个禁用
|
||||
$('#' + toolbar + ' .single').toggleClass('disabled', rows.length!=1);
|
||||
});
|
||||
// 图片预览事件
|
||||
$.btTable.on('click', '.img-circle', function() {
|
||||
$(optionsIds).off("click").on("click", '.img-circle', function() {
|
||||
var src = $(this).attr('src');
|
||||
var target = $(this).data('target');
|
||||
var height = $(this).data('height');
|
||||
@@ -172,44 +230,77 @@
|
||||
window.open(src);
|
||||
}
|
||||
});
|
||||
// 单击tooltip复制文本
|
||||
$.btTable.on('click', '.tooltip-show', function() {
|
||||
// 单击tooltip事件
|
||||
$(optionsIds).on("click", '.tooltip-show', function() {
|
||||
var target = $(this).data('target');
|
||||
var input = $(this).prev();
|
||||
input.select();
|
||||
document.execCommand("copy");
|
||||
if ($.common.equals("copy", target)) {
|
||||
input.select();
|
||||
document.execCommand("copy");
|
||||
} else if ($.common.equals("open", target)) {
|
||||
parent.layer.alert(input.val(), {
|
||||
title: "信息内容",
|
||||
shadeClose: true,
|
||||
btn: ['确认'],
|
||||
btnclass: ['btn btn-primary'],
|
||||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
// 当所有数据被加载时触发
|
||||
onLoadSuccess: function(data) {
|
||||
if (typeof $.table._option.onLoadSuccess == "function") {
|
||||
$.table._option.onLoadSuccess(data);
|
||||
if (typeof table.options.onLoadSuccess == "function") {
|
||||
table.options.onLoadSuccess(data);
|
||||
}
|
||||
// 浮动提示框特效
|
||||
$("[data-toggle='tooltip']").tooltip();
|
||||
$(".table [data-toggle='tooltip']").tooltip();
|
||||
|
||||
// 气泡弹出框特效
|
||||
$('.table [data-toggle="popover"]').each(function() {
|
||||
$(this).popover({ trigger: "manual", html: true, animation: false, container: "body", placement: "left"
|
||||
}).on("mouseenter",
|
||||
function() {
|
||||
var _this = this;
|
||||
$(this).popover("show");
|
||||
$(".popover").on("mouseleave", function() {
|
||||
$(_this).popover('hide');
|
||||
});
|
||||
}).on("mouseleave",
|
||||
function() {
|
||||
var _this = this;
|
||||
setTimeout(function() {
|
||||
if (!$(".popover:hover").length)
|
||||
$(_this).popover("hide");
|
||||
}, 100);
|
||||
});
|
||||
});
|
||||
},
|
||||
// 表格销毁
|
||||
destroy: function (tableId) {
|
||||
var currentId = $.common.isEmpty(tableId) ? $.table._option.id : tableId;
|
||||
var currentId = $.common.isEmpty(tableId) ? table.options.id : tableId;
|
||||
$("#" + currentId).bootstrapTable('destroy');
|
||||
},
|
||||
// 序列号生成
|
||||
serialNumber: function (index) {
|
||||
var table = $.btTable.bootstrapTable('getOptions');
|
||||
var pageSize = table.pageSize;
|
||||
var pageNumber = table.pageNumber;
|
||||
serialNumber: function (index, tableId) {
|
||||
var currentId = $.common.isEmpty(tableId) ? table.options.id : tableId;
|
||||
var tableParams = $("#" + currentId).bootstrapTable('getOptions');
|
||||
var pageSize = tableParams.pageSize;
|
||||
var pageNumber = tableParams.pageNumber;
|
||||
return pageSize * (pageNumber - 1) + index + 1;
|
||||
},
|
||||
// 列超出指定长度浮动提示(单击文本复制)
|
||||
tooltip: function (value, length) {
|
||||
// 列超出指定长度浮动提示 target(copy单击复制文本 open弹窗打开文本)
|
||||
tooltip: function (value, length, target) {
|
||||
var _length = $.common.isEmpty(length) ? 20 : length;
|
||||
var _text = "";
|
||||
var _value = $.common.nullToStr(value);
|
||||
var _target = $.common.isEmpty(target) ? 'copy' : target;
|
||||
if (_value.length > _length) {
|
||||
_text = _value.substr(0, _length) + "...";
|
||||
_value = _value.replace(/\'/g,"’");
|
||||
_value = _value.replace(/\'/g,"'");
|
||||
_value = _value.replace(/\"/g,""");
|
||||
var actions = [];
|
||||
actions.push($.common.sprintf('<input id="tooltip-show" style="opacity: 0;position: absolute;z-index:-1" type="text" value="%s"/>', _value));
|
||||
actions.push($.common.sprintf("<a href='###' class='tooltip-show' data-toggle='tooltip' title='%s'>%s</a>", _value, _text));
|
||||
actions.push($.common.sprintf('<a href="###" class="tooltip-show" data-toggle="tooltip" data-target="%s" title="%s">%s</a>', _target, _value, _text));
|
||||
return actions.join('');
|
||||
} else {
|
||||
_text = _value;
|
||||
@@ -239,16 +330,17 @@
|
||||
// blank or self
|
||||
var _target = $.common.isEmpty(target) ? 'self' : target;
|
||||
if ($.common.isNotEmpty(value)) {
|
||||
return $.common.sprintf("<img class='img-circle img-xs' data-height='%s' data-width='%s' data-target='%s' src='%s'/>", width, height, _target, value);
|
||||
return $.common.sprintf("<img class='img-circle img-xs' data-height='%s' data-width='%s' data-target='%s' src='%s'/>", height, width, _target, value);
|
||||
} else {
|
||||
return $.common.nullToStr(value);
|
||||
}
|
||||
},
|
||||
// 搜索-默认第一个form
|
||||
search: function(formId, data) {
|
||||
search: function(formId, tableId, data) {
|
||||
table.set(tableId);
|
||||
var currentId = $.common.isEmpty(formId) ? $('form').attr('id') : formId;
|
||||
var params = $.btTable.bootstrapTable('getOptions');
|
||||
params.queryParams = function(params) {
|
||||
var params = $.common.isEmpty(tableId) ? $("#" + table.options.id).bootstrapTable('getOptions') : $("#" + tableId).bootstrapTable('getOptions');
|
||||
params.queryParams = function(params) {
|
||||
var search = $.common.formToJSON(currentId);
|
||||
if($.common.isNotEmpty(data)){
|
||||
$.each(data, function(key) {
|
||||
@@ -262,14 +354,23 @@
|
||||
search.isAsc = params.order;
|
||||
return search;
|
||||
}
|
||||
$.btTable.bootstrapTable('refresh', params);
|
||||
if($.common.isNotEmpty(tableId)){
|
||||
$("#" + tableId).bootstrapTable('refresh', params);
|
||||
} else{
|
||||
$("#" + table.options.id).bootstrapTable('refresh', params);
|
||||
}
|
||||
},
|
||||
// 导出数据
|
||||
exportExcel: function(formId) {
|
||||
$.modal.confirm("确定导出所有" + $.table._option.modalName + "吗?", function() {
|
||||
table.set();
|
||||
$.modal.confirm("确定导出所有" + table.options.modalName + "吗?", function() {
|
||||
var currentId = $.common.isEmpty(formId) ? $('form').attr('id') : formId;
|
||||
var params = $("#" + table.options.id).bootstrapTable('getOptions');
|
||||
var dataParam = $("#" + currentId).serializeArray();
|
||||
dataParam.push({ "name": "orderByColumn", "value": params.sortName });
|
||||
dataParam.push({ "name": "isAsc", "value": params.sortOrder });
|
||||
$.modal.loading("正在导出数据,请稍后...");
|
||||
$.post($.table._option.exportUrl, $("#" + currentId).serializeArray(), function(result) {
|
||||
$.post(table.options.exportUrl, dataParam, function(result) {
|
||||
if (result.code == web_status.SUCCESS) {
|
||||
window.location.href = ctx + "common/download?fileName=" + encodeURI(result.msg) + "&delete=" + true;
|
||||
} else if (result.code == web_status.WARNING) {
|
||||
@@ -283,7 +384,8 @@
|
||||
},
|
||||
// 下载模板
|
||||
importTemplate: function() {
|
||||
$.get($.table._option.importTemplateUrl, function(result) {
|
||||
table.set();
|
||||
$.get(table.options.importTemplateUrl, function(result) {
|
||||
if (result.code == web_status.SUCCESS) {
|
||||
window.location.href = ctx + "common/download?fileName=" + encodeURI(result.msg) + "&delete=" + true;
|
||||
} else if (result.code == web_status.WARNING) {
|
||||
@@ -295,6 +397,7 @@
|
||||
},
|
||||
// 导入数据
|
||||
importExcel: function(formId) {
|
||||
table.set();
|
||||
var currentId = $.common.isEmpty(formId) ? 'importTpl' : formId;
|
||||
layer.open({
|
||||
type: 1,
|
||||
@@ -303,7 +406,7 @@
|
||||
//不固定
|
||||
maxmin: true,
|
||||
shade: 0.3,
|
||||
title: '导入' + $.table._option.modalName + '数据',
|
||||
title: '导入' + table.options.modalName + '数据',
|
||||
content: $('#' + currentId).html(),
|
||||
btn: ['<i class="fa fa-check"></i> 导入', '<i class="fa fa-remove"></i> 取消'],
|
||||
// 弹层外区域关闭
|
||||
@@ -316,11 +419,9 @@
|
||||
}
|
||||
var index = layer.load(2, {shade: false});
|
||||
$.modal.disable();
|
||||
var formData = new FormData();
|
||||
formData.append("file", $('#file')[0].files[0]);
|
||||
formData.append("updateSupport", $("input[name='updateSupport']").is(':checked'));
|
||||
var formData = new FormData(layero.find('form')[0]);
|
||||
$.ajax({
|
||||
url: $.table._option.importUrl,
|
||||
url: table.options.importUrl,
|
||||
data: formData,
|
||||
cache: false,
|
||||
contentType: false,
|
||||
@@ -346,24 +447,30 @@
|
||||
});
|
||||
},
|
||||
// 刷新表格
|
||||
refresh: function() {
|
||||
$.btTable.bootstrapTable('refresh', {
|
||||
refresh: function(tableId) {
|
||||
var currentId = $.common.isEmpty(tableId) ? table.options.id : tableId;
|
||||
$("#" + currentId).bootstrapTable('refresh', {
|
||||
silent: true
|
||||
});
|
||||
},
|
||||
// 查询表格指定列值
|
||||
selectColumns: function(column) {
|
||||
var rows = $.map($.btTable.bootstrapTable('getSelections'), function (row) {
|
||||
var rows = $.map($("#" + table.options.id).bootstrapTable('getSelections'), function (row) {
|
||||
return row[column];
|
||||
});
|
||||
if ($.common.isNotEmpty($.table._option.rememberSelected) && $.table._option.rememberSelected) {
|
||||
rows = rows.concat(selectionIds);
|
||||
if ($.common.isNotEmpty(table.options.rememberSelected) && table.options.rememberSelected) {
|
||||
var selectedRows = table.rememberSelecteds[table.options.id];
|
||||
if($.common.isNotEmpty(selectedRows)) {
|
||||
rows = $.map(table.rememberSelecteds[table.options.id], function (row) {
|
||||
return row[column];
|
||||
});
|
||||
}
|
||||
}
|
||||
return $.common.uniqueFn(rows);
|
||||
},
|
||||
// 获取当前页选中或者取消的行ID
|
||||
affectedRowIds: function(rows) {
|
||||
var column = $.common.isEmpty($.table._option.uniqueId) ? $.table._option.columns[1].field : $.table._option.uniqueId;
|
||||
var column = $.common.isEmpty(table.options.uniqueId) ? table.options.columns[1].field : table.options.uniqueId;
|
||||
var rowIds;
|
||||
if ($.isArray(rows)) {
|
||||
rowIds = $.map(rows, function(row) {
|
||||
@@ -376,11 +483,16 @@
|
||||
},
|
||||
// 查询表格首列值
|
||||
selectFirstColumns: function() {
|
||||
var rows = $.map($.btTable.bootstrapTable('getSelections'), function (row) {
|
||||
return row[$.table._option.columns[1].field];
|
||||
var rows = $.map($("#" + table.options.id).bootstrapTable('getSelections'), function (row) {
|
||||
return row[table.options.columns[1].field];
|
||||
});
|
||||
if ($.common.isNotEmpty($.table._option.rememberSelected) && $.table._option.rememberSelected) {
|
||||
rows = rows.concat(selectionIds);
|
||||
if ($.common.isNotEmpty(table.options.rememberSelected) && table.options.rememberSelected) {
|
||||
var selectedRows = table.rememberSelecteds[table.options.id];
|
||||
if($.common.isNotEmpty(selectedRows)) {
|
||||
rows = $.map(selectedRows, function (row) {
|
||||
return row[table.options.columns[1].field];
|
||||
});
|
||||
}
|
||||
}
|
||||
return $.common.uniqueFn(rows);
|
||||
},
|
||||
@@ -397,12 +509,14 @@
|
||||
return actions.join('');
|
||||
},
|
||||
// 显示表格指定列
|
||||
showColumn: function(column) {
|
||||
$.btTable.bootstrapTable('showColumn', column);
|
||||
showColumn: function(column, tableId) {
|
||||
var currentId = $.common.isEmpty(tableId) ? table.options.id : tableId;
|
||||
$("#" + currentId).bootstrapTable('showColumn', column);
|
||||
},
|
||||
// 隐藏表格指定列
|
||||
hideColumn: function(column) {
|
||||
$.btTable.bootstrapTable('hideColumn', column);
|
||||
hideColumn: function(column, tableId) {
|
||||
var currentId = $.common.isEmpty(tableId) ? table.options.id : tableId;
|
||||
$("#" + currentId).bootstrapTable('hideColumn', column);
|
||||
}
|
||||
},
|
||||
// 表格树封装处理
|
||||
@@ -425,18 +539,20 @@
|
||||
expandFirst: true
|
||||
};
|
||||
var options = $.extend(defaults, options);
|
||||
$.table._option = options;
|
||||
table.options = options;
|
||||
table.config[options.id] = options;
|
||||
$.bttTable = $('#' + options.id).bootstrapTreeTable({
|
||||
code: options.code, // 用于设置父子关系
|
||||
parentCode: options.parentCode, // 用于设置父子关系
|
||||
type: 'post', // 请求方式(*)
|
||||
type: 'post', // 请求方式(*)
|
||||
url: options.url, // 请求后台的URL(*)
|
||||
data: options.data, // 无url时用于渲染的数据
|
||||
ajaxParams: options.ajaxParams, // 请求数据的ajax的data属性
|
||||
rootIdValue: options.rootIdValue, // 设置指定根节点id值
|
||||
height: options.height, // 表格树的高度
|
||||
expandColumn: options.expandColumn, // 在哪一列上面显示展开按钮
|
||||
striped: options.striped, // 是否显示行间隔色
|
||||
bordered: true, // 是否显示边框
|
||||
bordered: false, // 是否显示边框
|
||||
toolbar: '#' + options.toolbar, // 指定工作栏
|
||||
showSearch: options.showSearch, // 是否显示检索信息
|
||||
showRefresh: options.showRefresh, // 是否显示刷新按钮
|
||||
@@ -465,22 +581,38 @@
|
||||
return $.common.uniqueFn(rows);
|
||||
},
|
||||
// 请求获取数据后处理回调函数,校验异常状态提醒
|
||||
responseHandler: function(data) {
|
||||
if (data.code != undefined && data.code != 0) {
|
||||
$.modal.alertWarning(data.msg);
|
||||
responseHandler: function(res) {
|
||||
if (typeof table.options.responseHandler == "function") {
|
||||
table.options.responseHandler(res);
|
||||
}
|
||||
if (res.code != undefined && res.code != 0) {
|
||||
$.modal.alertWarning(res.msg);
|
||||
return [];
|
||||
} else {
|
||||
return data;
|
||||
return res;
|
||||
}
|
||||
},
|
||||
},
|
||||
// 表单封装处理
|
||||
form: {
|
||||
// 表单重置
|
||||
reset: function(formId) {
|
||||
reset: function(formId, tableId) {
|
||||
table.set(tableId);
|
||||
var currentId = $.common.isEmpty(formId) ? $('form').attr('id') : formId;
|
||||
$("#" + currentId)[0].reset();
|
||||
$.btTable.bootstrapTable('refresh');
|
||||
if (table.options.type == table_type.bootstrapTable) {
|
||||
if($.common.isEmpty(tableId)){
|
||||
$("#" + table.options.id).bootstrapTable('refresh');
|
||||
} else{
|
||||
$("#" + tableId).bootstrapTable('refresh');
|
||||
}
|
||||
} else if (table.options.type == table_type.bootstrapTreeTable) {
|
||||
if($.common.isEmpty(tableId)){
|
||||
$("#" + table.options.id).bootstrapTreeTable('refresh', []);
|
||||
} else{
|
||||
$("#" + tableId).bootstrapTreeTable('refresh', []);
|
||||
}
|
||||
}
|
||||
},
|
||||
// 获取选中复选框项
|
||||
selectCheckeds: function(name) {
|
||||
@@ -598,7 +730,7 @@
|
||||
// 弹出层指定宽度
|
||||
open: function (title, url, width, height, callback) {
|
||||
//如果是移动端,就使用自适应大小弹窗
|
||||
if (navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)) {
|
||||
if ($.common.isMobile()) {
|
||||
width = 'auto';
|
||||
height = 'auto';
|
||||
}
|
||||
@@ -670,7 +802,7 @@
|
||||
// 弹出层全屏
|
||||
openFull: function (title, url, width, height) {
|
||||
//如果是移动端,就使用自适应大小弹窗
|
||||
if (navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)) {
|
||||
if ($.common.isMobile()) {
|
||||
width = 'auto';
|
||||
height = 'auto';
|
||||
}
|
||||
@@ -778,12 +910,20 @@
|
||||
},
|
||||
// 详细信息
|
||||
detail: function(id, width, height) {
|
||||
table.set();
|
||||
var _url = $.operate.detailUrl(id);
|
||||
var _width = $.common.isEmpty(width) ? "800" : width;
|
||||
var _height = $.common.isEmpty(height) ? ($(window).height() - 50) : height;
|
||||
//如果是移动端,就使用自适应大小弹窗
|
||||
if ($.common.isMobile()) {
|
||||
_width = 'auto';
|
||||
_height = 'auto';
|
||||
}
|
||||
var options = {
|
||||
title: $.table._option.modalName + "详细",
|
||||
width: width,
|
||||
height: height,
|
||||
url: $.operate.detailUrl(id),
|
||||
title: table.options.modalName + "详细",
|
||||
width: _width,
|
||||
height: _height,
|
||||
url: _url,
|
||||
skin: 'layui-layer-gray',
|
||||
btn: ['关闭'],
|
||||
yes: function (index, layero) {
|
||||
@@ -796,22 +936,23 @@
|
||||
detailUrl: function(id) {
|
||||
var url = "/404.html";
|
||||
if ($.common.isNotEmpty(id)) {
|
||||
url = $.table._option.detailUrl.replace("{id}", id);
|
||||
url = table.options.detailUrl.replace("{id}", id);
|
||||
} else {
|
||||
var id = $.common.isEmpty($.table._option.uniqueId) ? $.table.selectFirstColumns() : $.table.selectColumns($.table._option.uniqueId);
|
||||
var id = $.common.isEmpty(table.options.uniqueId) ? $.table.selectFirstColumns() : $.table.selectColumns(table.options.uniqueId);
|
||||
if (id.length == 0) {
|
||||
$.modal.alertWarning("请至少选择一条记录");
|
||||
return;
|
||||
}
|
||||
url = $.table._option.detailUrl.replace("{id}", id);
|
||||
url = table.options.detailUrl.replace("{id}", id);
|
||||
}
|
||||
return url;
|
||||
},
|
||||
// 删除信息
|
||||
remove: function(id) {
|
||||
$.modal.confirm("确定删除该条" + $.table._option.modalName + "信息吗?", function() {
|
||||
var url = $.common.isEmpty(id) ? $.table._option.removeUrl : $.table._option.removeUrl.replace("{id}", id);
|
||||
if($.table._option.type == table_type.bootstrapTreeTable) {
|
||||
table.set();
|
||||
$.modal.confirm("确定删除该条" + table.options.modalName + "信息吗?", function() {
|
||||
var url = $.common.isEmpty(id) ? table.options.removeUrl : table.options.removeUrl.replace("{id}", id);
|
||||
if(table.options.type == table_type.bootstrapTreeTable) {
|
||||
$.operate.get(url);
|
||||
} else {
|
||||
var data = { "ids": id };
|
||||
@@ -822,83 +963,91 @@
|
||||
},
|
||||
// 批量删除信息
|
||||
removeAll: function() {
|
||||
var rows = $.common.isEmpty($.table._option.uniqueId) ? $.table.selectFirstColumns() : $.table.selectColumns($.table._option.uniqueId);
|
||||
table.set();
|
||||
var rows = $.common.isEmpty(table.options.uniqueId) ? $.table.selectFirstColumns() : $.table.selectColumns(table.options.uniqueId);
|
||||
if (rows.length == 0) {
|
||||
$.modal.alertWarning("请至少选择一条记录");
|
||||
return;
|
||||
}
|
||||
$.modal.confirm("确认要删除选中的" + rows.length + "条数据吗?", function() {
|
||||
var url = $.table._option.removeUrl;
|
||||
var url = table.options.removeUrl;
|
||||
var data = { "ids": rows.join() };
|
||||
$.operate.submit(url, "post", "json", data);
|
||||
});
|
||||
},
|
||||
// 清空信息
|
||||
clean: function() {
|
||||
$.modal.confirm("确定清空所有" + $.table._option.modalName + "吗?", function() {
|
||||
var url = $.table._option.cleanUrl;
|
||||
table.set();
|
||||
$.modal.confirm("确定清空所有" + table.options.modalName + "吗?", function() {
|
||||
var url = table.options.cleanUrl;
|
||||
$.operate.submit(url, "post", "json", "");
|
||||
});
|
||||
},
|
||||
// 添加信息
|
||||
add: function(id) {
|
||||
$.modal.open("添加" + $.table._option.modalName, $.operate.addUrl(id));
|
||||
table.set();
|
||||
$.modal.open("添加" + table.options.modalName, $.operate.addUrl(id));
|
||||
},
|
||||
// 添加信息,以tab页展现
|
||||
addTab: function (id) {
|
||||
$.modal.openTab("添加" + $.table._option.modalName, $.operate.addUrl(id));
|
||||
table.set();
|
||||
$.modal.openTab("添加" + table.options.modalName, $.operate.addUrl(id));
|
||||
},
|
||||
// 添加信息 全屏
|
||||
addFull: function(id) {
|
||||
var url = $.common.isEmpty(id) ? $.table._option.createUrl : $.table._option.createUrl.replace("{id}", id);
|
||||
$.modal.openFull("添加" + $.table._option.modalName, url);
|
||||
table.set();
|
||||
var url = $.common.isEmpty(id) ? table.options.createUrl : table.options.createUrl.replace("{id}", id);
|
||||
$.modal.openFull("添加" + table.options.modalName, url);
|
||||
},
|
||||
// 添加访问地址
|
||||
addUrl: function(id) {
|
||||
var url = $.common.isEmpty(id) ? $.table._option.createUrl.replace("{id}", "") : $.table._option.createUrl.replace("{id}", id);
|
||||
var url = $.common.isEmpty(id) ? table.options.createUrl.replace("{id}", "") : table.options.createUrl.replace("{id}", id);
|
||||
return url;
|
||||
},
|
||||
// 修改信息
|
||||
edit: function(id) {
|
||||
if($.common.isEmpty(id) && $.table._option.type == table_type.bootstrapTreeTable) {
|
||||
var row = $.bttTable.bootstrapTreeTable('getSelections')[0];
|
||||
table.set();
|
||||
if($.common.isEmpty(id) && table.options.type == table_type.bootstrapTreeTable) {
|
||||
var row = $("#" + table.options.id).bootstrapTreeTable('getSelections')[0];
|
||||
if ($.common.isEmpty(row)) {
|
||||
$.modal.alertWarning("请至少选择一条记录");
|
||||
return;
|
||||
}
|
||||
var url = $.table._option.updateUrl.replace("{id}", row[$.table._option.uniqueId]);
|
||||
$.modal.open("修改" + $.table._option.modalName, url);
|
||||
var url = table.options.updateUrl.replace("{id}", row[table.options.uniqueId]);
|
||||
$.modal.open("修改" + table.options.modalName, url);
|
||||
} else {
|
||||
$.modal.open("修改" + $.table._option.modalName, $.operate.editUrl(id));
|
||||
$.modal.open("修改" + table.options.modalName, $.operate.editUrl(id));
|
||||
}
|
||||
},
|
||||
// 修改信息,以tab页展现
|
||||
editTab: function(id) {
|
||||
$.modal.openTab("修改" + $.table._option.modalName, $.operate.editUrl(id));
|
||||
table.set();
|
||||
$.modal.openTab("修改" + table.options.modalName, $.operate.editUrl(id));
|
||||
},
|
||||
// 修改信息 全屏
|
||||
editFull: function(id) {
|
||||
table.set();
|
||||
var url = "/404.html";
|
||||
if ($.common.isNotEmpty(id)) {
|
||||
url = $.table._option.updateUrl.replace("{id}", id);
|
||||
url = table.options.updateUrl.replace("{id}", id);
|
||||
} else {
|
||||
var row = $.common.isEmpty($.table._option.uniqueId) ? $.table.selectFirstColumns() : $.table.selectColumns($.table._option.uniqueId);
|
||||
url = $.table._option.updateUrl.replace("{id}", row);
|
||||
var row = $.common.isEmpty(table.options.uniqueId) ? $.table.selectFirstColumns() : $.table.selectColumns(table.options.uniqueId);
|
||||
url = table.options.updateUrl.replace("{id}", row);
|
||||
}
|
||||
$.modal.openFull("修改" + $.table._option.modalName, url);
|
||||
$.modal.openFull("修改" + table.options.modalName, url);
|
||||
},
|
||||
// 修改访问地址
|
||||
editUrl: function(id) {
|
||||
var url = "/404.html";
|
||||
if ($.common.isNotEmpty(id)) {
|
||||
url = $.table._option.updateUrl.replace("{id}", id);
|
||||
url = table.options.updateUrl.replace("{id}", id);
|
||||
} else {
|
||||
var id = $.common.isEmpty($.table._option.uniqueId) ? $.table.selectFirstColumns() : $.table.selectColumns($.table._option.uniqueId);
|
||||
var id = $.common.isEmpty(table.options.uniqueId) ? $.table.selectFirstColumns() : $.table.selectColumns(table.options.uniqueId);
|
||||
if (id.length == 0) {
|
||||
$.modal.alertWarning("请至少选择一条记录");
|
||||
return;
|
||||
}
|
||||
url = $.table._option.updateUrl.replace("{id}", id);
|
||||
url = table.options.updateUrl.replace("{id}", id);
|
||||
}
|
||||
return url;
|
||||
},
|
||||
@@ -969,13 +1118,15 @@
|
||||
},
|
||||
// 保存结果弹出msg刷新table表格
|
||||
ajaxSuccess: function (result) {
|
||||
if (result.code == web_status.SUCCESS && $.table._option.type == table_type.bootstrapTable) {
|
||||
if (result.code == web_status.SUCCESS && table.options.type == table_type.bootstrapTable) {
|
||||
$.modal.msgSuccess(result.msg);
|
||||
$.table.refresh();
|
||||
} else if (result.code == web_status.SUCCESS && $.table._option.type == table_type.bootstrapTreeTable) {
|
||||
} else if (result.code == web_status.SUCCESS && table.options.type == table_type.bootstrapTreeTable) {
|
||||
$.modal.msgSuccess(result.msg);
|
||||
$.treeTable.refresh();
|
||||
} else if (result.code == web_status.WARNING) {
|
||||
} else if (result.code == web_status.SUCCESS && table.option.type == undefined) {
|
||||
$.modal.msgSuccess(result.msg)
|
||||
} else if (result.code == web_status.WARNING) {
|
||||
$.modal.alertWarning(result.msg)
|
||||
} else {
|
||||
$.modal.alertError(result.msg);
|
||||
@@ -997,11 +1148,11 @@
|
||||
successCallback: function(result) {
|
||||
if (result.code == web_status.SUCCESS) {
|
||||
var parent = window.parent;
|
||||
if (parent.$.table._option.type == table_type.bootstrapTable) {
|
||||
if (parent.table.options.type == table_type.bootstrapTable) {
|
||||
$.modal.close();
|
||||
parent.$.modal.msgSuccess(result.msg);
|
||||
parent.$.table.refresh();
|
||||
} else if (parent.$.table._option.type == table_type.bootstrapTreeTable) {
|
||||
} else if (parent.table.options.type == table_type.bootstrapTreeTable) {
|
||||
$.modal.close();
|
||||
parent.$.modal.msgSuccess(result.msg);
|
||||
parent.$.treeTable.refresh();
|
||||
@@ -1025,9 +1176,9 @@
|
||||
$.modal.close();
|
||||
$contentWindow.$.modal.msgSuccess(result.msg);
|
||||
$contentWindow.$(".layui-layer-padding").removeAttr("style");
|
||||
if ($contentWindow.$.table._option.type == table_type.bootstrapTable) {
|
||||
if ($contentWindow.table.options.type == table_type.bootstrapTable) {
|
||||
$contentWindow.$.table.refresh();
|
||||
} else if ($contentWindow.$.table._option.type == table_type.bootstrapTreeTable) {
|
||||
} else if ($contentWindow.table.options.type == table_type.bootstrapTreeTable) {
|
||||
$contentWindow.$.treeTable.refresh();
|
||||
}
|
||||
$.modal.closeTab();
|
||||
@@ -1052,6 +1203,11 @@
|
||||
form: function (formId) {
|
||||
var currentId = $.common.isEmpty(formId) ? $('form').attr('id') : formId;
|
||||
return $("#" + currentId).validate().form();
|
||||
},
|
||||
// 重置表单验证(清除提示信息)
|
||||
reset: function (formId) {
|
||||
var currentId = $.common.isEmpty(formId) ? $('form').attr('id') : formId;
|
||||
return $("#" + currentId).validate().resetForm();
|
||||
}
|
||||
},
|
||||
// 树插件封装处理
|
||||
@@ -1190,6 +1346,10 @@
|
||||
// 不允许根父节点选择
|
||||
notAllowParents: function(_tree) {
|
||||
var nodes = _tree.getSelectedNodes();
|
||||
if(nodes.length == 0){
|
||||
$.modal.msgError("请选择节点后提交");
|
||||
return false;
|
||||
}
|
||||
for (var i = 0; i < nodes.length; i++) {
|
||||
if (nodes[i].level == 0) {
|
||||
$.modal.msgError("不能选择根节点(" + nodes[i].name + ")");
|
||||
@@ -1329,10 +1489,28 @@
|
||||
formToJSON: function(formId) {
|
||||
var json = {};
|
||||
$.each($("#" + formId).serializeArray(), function(i, field) {
|
||||
json[field.name] = field.value;
|
||||
if(json[field.name]) {
|
||||
json[field.name] += ("," + field.value);
|
||||
} else {
|
||||
json[field.name] = field.value;
|
||||
}
|
||||
});
|
||||
return json;
|
||||
}
|
||||
},
|
||||
// 获取obj对象长度
|
||||
getLength: function(obj) {
|
||||
var count = 0;
|
||||
for (var i in obj) {
|
||||
if (obj.hasOwnProperty(i)) {
|
||||
count++;
|
||||
}
|
||||
}
|
||||
return count;
|
||||
},
|
||||
// 判断移动端
|
||||
isMobile: function () {
|
||||
return navigator.userAgent.match(/(Android|iPhone|SymbianOS|Windows Phone|iPad|iPod)/i);
|
||||
},
|
||||
}
|
||||
});
|
||||
})(jQuery);
|
||||
|
||||
@@ -26,7 +26,7 @@ function login() {
|
||||
data: {
|
||||
"username": username,
|
||||
"password": password,
|
||||
"validateCode" : validateCode,
|
||||
"validateCode": validateCode,
|
||||
"rememberMe": rememberMe
|
||||
},
|
||||
success: function(r) {
|
||||
|
||||
@@ -0,0 +1,82 @@
|
||||
|
||||
$(function() {
|
||||
validateRule();
|
||||
$('.imgcode').click(function() {
|
||||
var url = ctx + "captcha/captchaImage?type=" + captchaType + "&s=" + Math.random();
|
||||
$(".imgcode").attr("src", url);
|
||||
});
|
||||
});
|
||||
|
||||
$.validator.setDefaults({
|
||||
submitHandler: function() {
|
||||
register();
|
||||
}
|
||||
});
|
||||
|
||||
function register() {
|
||||
$.modal.loading($("#btnSubmit").data("loading"));
|
||||
var username = $.common.trim($("input[name='username']").val());
|
||||
var password = $.common.trim($("input[name='password']").val());
|
||||
var validateCode = $("input[name='validateCode']").val();
|
||||
$.ajax({
|
||||
type: "post",
|
||||
url: ctx + "register",
|
||||
data: {
|
||||
"loginName": username,
|
||||
"password": password,
|
||||
"validateCode": validateCode
|
||||
},
|
||||
success: function(r) {
|
||||
if (r.code == 0) {
|
||||
layer.alert("<font color='red'>恭喜你,您的账号 " + username + " 注册成功!</font>", {
|
||||
icon: 1,
|
||||
title: "系统提示"
|
||||
},
|
||||
function(index) {
|
||||
//关闭弹窗
|
||||
layer.close(index);
|
||||
location.href = ctx + 'login';
|
||||
});
|
||||
} else {
|
||||
$.modal.closeLoading();
|
||||
$('.imgcode').click();
|
||||
$(".code").val("");
|
||||
$.modal.msg(r.msg);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function validateRule() {
|
||||
var icon = "<i class='fa fa-times-circle'></i> ";
|
||||
$("#registerForm").validate({
|
||||
rules: {
|
||||
username: {
|
||||
required: true,
|
||||
minlength: 2
|
||||
},
|
||||
password: {
|
||||
required: true,
|
||||
minlength: 5
|
||||
},
|
||||
confirmPassword: {
|
||||
required: true,
|
||||
equalTo: "[name='password']"
|
||||
}
|
||||
},
|
||||
messages: {
|
||||
username: {
|
||||
required: icon + "请输入您的用户名",
|
||||
minlength: icon + "用户名不能小于2个字符"
|
||||
},
|
||||
password: {
|
||||
required: icon + "请输入您的密码",
|
||||
minlength: icon + "密码不能小于5个字符",
|
||||
},
|
||||
confirmPassword: {
|
||||
required: icon + "请再次输入您的密码",
|
||||
equalTo: icon + "两次密码输入不一致"
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
@@ -99,7 +99,7 @@
|
||||
<hr>
|
||||
<div class="form-group">
|
||||
<label class="font-noraml">相关参数详细信息</label>
|
||||
<div><a href="http://doc.ruoyi.vip/#/standard/zjwd?id=bootstrap-suggest" target="_blank">http://doc.ruoyi.vip/#/standard/zjwd?id=bootstrap-suggest</a></div>
|
||||
<div><a href="http://doc.ruoyi.vip/ruoyi/document/zjwd.html#bootstrap-suggest" target="_blank">http://doc.ruoyi.vip/ruoyi/document/zjwd.html#bootstrap-suggest</a></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -145,7 +145,7 @@
|
||||
<hr>
|
||||
<div class="form-group">
|
||||
<label class="font-noraml">相关参数详细信息</label>
|
||||
<div><a href="http://doc.ruoyi.vip/#/standard/zjwd?id=bootstrap-typeahead" target="_blank">http://doc.ruoyi.vip/#/standard/zjwd?id=bootstrap-typeahead</a></div>
|
||||
<div><a href="http://doc.ruoyi.vip/ruoyi/document/zjwd.html#bootstrap-typeahead" target="_blank">http://doc.ruoyi.vip/ruoyi/document/zjwd.html#bootstrap-typeahead</a></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -57,7 +57,7 @@
|
||||
<hr>
|
||||
<div class="form-group">
|
||||
<label class="font-noraml">相关参数详细信息</label>
|
||||
<div><a href="http://doc.ruoyi.vip/#/standard/zjwd?id=bootstrap-datetimepicker" target="_blank">http://doc.ruoyi.vip/#/standard/zjwd?id=bootstrap-datetimepicker</a></div>
|
||||
<div><a href="http://doc.ruoyi.vip/ruoyi/document/zjwd.html#bootstrap-datetimepicker" target="_blank">http://doc.ruoyi.vip/ruoyi/document/zjwd.html#bootstrap-datetimepicker</a></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -111,7 +111,7 @@
|
||||
<hr>
|
||||
<div class="form-group">
|
||||
<label class="font-noraml">相关参数详细信息</label>
|
||||
<div><a href="http://doc.ruoyi.vip/#/standard/zjwd?id=laydate" target="_blank">http://doc.ruoyi.vip/#/standard/zjwd?id=laydate</a></div>
|
||||
<div><a href="http://doc.ruoyi.vip/ruoyi/document/zjwd.html#laydate" target="_blank">http://doc.ruoyi.vip/ruoyi/document/zjwd.html#laydate</a></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -33,6 +33,11 @@
|
||||
<option value="12">若依12</option>
|
||||
</select>
|
||||
</form>
|
||||
<hr>
|
||||
<div class="form-group">
|
||||
<label class="font-noraml">相关参数详细信息</label>
|
||||
<div><a href="http://doc.ruoyi.vip/ruoyi/document/zjwd.html#bootstrap-duallistbox" target="_blank">http://doc.ruoyi.vip/ruoyi/document/zjwd.html#bootstrap-duallistbox</a></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -62,7 +62,7 @@
|
||||
<hr>
|
||||
<div class="form-group">
|
||||
<label class="font-noraml">相关参数详细信息</label>
|
||||
<div><a href="http://doc.ruoyi.vip/#/standard/zjwd?id=jasny-bootstrap" target="_blank">http://doc.ruoyi.vip/#/standard/zjwd?id=jasny-bootstrap</a></div>
|
||||
<div><a href="http://doc.ruoyi.vip/ruoyi/document/zjwd.html#jasny-bootstrap" target="_blank">http://doc.ruoyi.vip/ruoyi/document/zjwd.html#jasny-bootstrap</a></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -105,7 +105,7 @@
|
||||
<hr>
|
||||
<div class="form-group">
|
||||
<label class="font-noraml">相关参数详细信息</label>
|
||||
<div><a href="http://doc.ruoyi.vip/#/standard/zjwd?id=jasny-bootstrap" target="_blank">http://doc.ruoyi.vip/#/standard/zjwd?id=jasny-bootstrap</a></div>
|
||||
<div><a href="http://doc.ruoyi.vip/ruoyi/document/zjwd.html#jasny-bootstrap" target="_blank">http://doc.ruoyi.vip/ruoyi/document/zjwd.html#jasny-bootstrap</a></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -69,7 +69,7 @@
|
||||
<hr>
|
||||
<div class="form-group">
|
||||
<label class="font-noraml">相关参数详细信息</label>
|
||||
<div><a href="http://doc.ruoyi.vip/#/standard/zjwd?id=select2" target="_blank">http://doc.ruoyi.vip/#/standard/zjwd?id=select2</a></div>
|
||||
<div><a href="http://doc.ruoyi.vip/ruoyi/document/zjwd.html#select2" target="_blank">http://doc.ruoyi.vip/ruoyi/document/zjwd.html#select2</a></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -133,7 +133,7 @@
|
||||
<hr>
|
||||
<div class="form-group">
|
||||
<label class="font-noraml">相关参数详细信息</label>
|
||||
<div><a href="http://doc.ruoyi.vip/#/standard/zjwd?id=bootstrap-select" target="_blank">http://doc.ruoyi.vip/#/standard/zjwd?id=bootstrap-select</a></div>
|
||||
<div><a href="http://doc.ruoyi.vip/ruoyi/document/zjwd.html#bootstrap-select" target="_blank">http://doc.ruoyi.vip/ruoyi/document/zjwd.html#bootstrap-select</a></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
<h2>若依后台管理系统</h2>
|
||||
<p>ruoyi是一个完全响应式,基于Bootstrap3.3.6最新版本开发的扁平化主题,她采用了主流的左右两栏式布局,使用了Html5+CSS3等现代技术,她提供了诸多的强大的可以重新组合的UI组件,并集成了最新的jQuery版本(v2.1.1),当然,也集成了很多功能强大,用途广泛的就jQuery插件,她可以用于所有的Web应用程序,如<b>网站管理后台</b>,<b>网站会员中心</b>,<b>CMS</b>,<b>CRM</b>,<b>OA</b>等等,当然,您也可以对她进行深度定制,以做出更强系统。</p>
|
||||
<p>
|
||||
<b>当前版本:</b>v4.0.0
|
||||
<b>当前版本:</b>v4.2.0
|
||||
</p>
|
||||
<p>
|
||||
<span class="label label-warning">免费开源</span>
|
||||
@@ -56,7 +56,7 @@
|
||||
<h3>你好,若依 </h3>
|
||||
<p>H+是一个完全响应式,基于Bootstrap3.3.6最新版本开发的扁平化主题,她采用了主流的左右两栏式布局,使用了Html5+CSS3等现代技术,她提供了诸多的强大的可以重新组合的UI组件,并集成了最新的jQuery版本(v2.1.1),当然,也集成了很多功能强大,用途广泛的就jQuery插件,她可以用于所有的Web应用程序,如<b>网站管理后台</b>,<b>网站会员中心</b>,<b>CMS</b>,<b>CRM</b>,<b>OA</b>等等,当然,您也可以对她进行深度定制,以做出更强系统。</p>
|
||||
<p>
|
||||
<b>当前版本:</b>v4.0.0
|
||||
<b>当前版本:</b>v4.2.0
|
||||
</p>
|
||||
<p>
|
||||
<span class="label label-warning">开源免费</span>
|
||||
|
||||
@@ -0,0 +1,113 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>时间轴</title>
|
||||
<link href="../static/css/bootstrap.min.css" th:href="@{/css/bootstrap.min.css}" rel="stylesheet"/>
|
||||
<link href="../static/css/font-awesome.min.css" th:href="@{/css/font-awesome.min.css}" rel="stylesheet"/>
|
||||
<link href="../static/css/main/animate.min.css" th:href="@{/css/main/animate.min.css}" rel="stylesheet"/>
|
||||
<link th:href="@{/css/style.css}" rel="stylesheet"/>
|
||||
</head>
|
||||
<body class="gray-bg">
|
||||
<div class="row animated fadeInRight">
|
||||
<div class="ibox float-e-margins">
|
||||
<div class="text-center float-e-margins p-md">
|
||||
<span>打开/关闭颜色/背景或方向版本: </span>
|
||||
<a href="#" class="btn btn-xs btn-primary" id="lightVersion">轻型版本 </a>
|
||||
<a href="#" class="btn btn-xs btn-primary" id="darkVersion">黑色版本 </a>
|
||||
</div>
|
||||
<div id="ibox-content">
|
||||
<div id="vertical-timeline" class="vertical-container light-timeline">
|
||||
<div class="vertical-timeline-block">
|
||||
<div class="vertical-timeline-icon navy-bg">
|
||||
<i class="fa fa-briefcase"></i>
|
||||
</div>
|
||||
|
||||
<div class="vertical-timeline-content">
|
||||
<h2>会议</h2>
|
||||
<p>上一年的销售业绩发布会。总结产品营销和销售趋势及销售的现状。
|
||||
</p>
|
||||
<a href="#" class="btn btn-sm btn-primary"> 更多信息</a>
|
||||
<span class="vertical-date">
|
||||
今天 <br>
|
||||
<small>2月3日</small>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="vertical-timeline-block">
|
||||
<div class="vertical-timeline-icon blue-bg">
|
||||
<i class="fa fa-file-text"></i>
|
||||
</div>
|
||||
|
||||
<div class="vertical-timeline-content">
|
||||
<h2>给张三发送文档</h2>
|
||||
<p>发送上年度《销售业绩报告》</p>
|
||||
<a href="#" class="btn btn-sm btn-success"> 下载文档 </a>
|
||||
<span class="vertical-date">
|
||||
今天 <br>
|
||||
<small>2月3日</small>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="vertical-timeline-block">
|
||||
<div class="vertical-timeline-icon lazur-bg">
|
||||
<i class="fa fa-coffee"></i>
|
||||
</div>
|
||||
|
||||
<div class="vertical-timeline-content">
|
||||
<h2>喝咖啡休息</h2>
|
||||
<p>喝咖啡啦,啦啦啦~~</p>
|
||||
<a href="#" class="btn btn-sm btn-info">更多</a>
|
||||
<span class="vertical-date"> 昨天 <br><small>2月2日</small></span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="vertical-timeline-block">
|
||||
<div class="vertical-timeline-icon yellow-bg">
|
||||
<i class="fa fa-phone"></i>
|
||||
</div>
|
||||
|
||||
<div class="vertical-timeline-content">
|
||||
<h2>给李四打电话</h2>
|
||||
<p>给李四打电话分配本月工作任务</p>
|
||||
<span class="vertical-date">昨天 <br><small>2月2日</small></span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="vertical-timeline-block">
|
||||
<div class="vertical-timeline-icon lazur-bg">
|
||||
<i class="fa fa-user-md"></i>
|
||||
</div>
|
||||
|
||||
<div class="vertical-timeline-content">
|
||||
<h2>公司年会</h2>
|
||||
<p>发年终奖啦,啦啦啦~~</p>
|
||||
<span class="vertical-date">前天 <br><small>2月1日</small></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<th:block th:include="include :: footer" />
|
||||
<script>
|
||||
$(document).ready(function(){
|
||||
$('#lightVersion').click(function(event) {
|
||||
event.preventDefault()
|
||||
$('#ibox-content').removeClass('ibox-content');
|
||||
$('#vertical-timeline').removeClass('dark-timeline');
|
||||
$('#vertical-timeline').addClass('light-timeline');
|
||||
});
|
||||
$('#darkVersion').click(function(event) {
|
||||
event.preventDefault()
|
||||
$('#ibox-content').addClass('ibox-content');
|
||||
$('#vertical-timeline').removeClass('light-timeline');
|
||||
$('#vertical-timeline').addClass('dark-timeline');
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -29,7 +29,7 @@
|
||||
<hr>
|
||||
<div class="form-group">
|
||||
<label class="font-noraml">相关参数详细信息</label>
|
||||
<div><a href="http://doc.ruoyi.vip/#/standard/zjwd?id=jasny-bootstrap" target="_blank">http://doc.ruoyi.vip/#/standard/zjwd?id=jasny-bootstrap</a></div>
|
||||
<div><a href="http://doc.ruoyi.vip/ruoyi/document/zjwd.html#bootstrap-fileinput" target="_blank">http://doc.ruoyi.vip/ruoyi/document/zjwd.html#bootstrap-fileinput</a></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -71,7 +71,7 @@
|
||||
<div class="ibox-content">
|
||||
<p class="m-t">更多示例请访问官方示例页面:<a href="http://jqueryvalidation.org/files/demo/" target="_blank">查看</a>
|
||||
</p>
|
||||
<p>中文API可参考:<a href="http://doc.ruoyi.vip/#/standard/zjwd?id=jquery-validate" target="_blank">http://doc.ruoyi.vip/#/standard/zjwd?id=jquery-validate</a>
|
||||
<p>中文API可参考:<a href="http://doc.ruoyi.vip/ruoyi/document/zjwd.html#jquery-validate" target="_blank">http://doc.ruoyi.vip/ruoyi/document/zjwd.html#jquery-validate</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
<div class="row">
|
||||
<div class="col-sm-6">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-4 control-label"><span style="color: red; ">*</span>用户名称:</label>
|
||||
<label class="col-sm-4 control-label is-required">用户名称:</label>
|
||||
<div class="col-sm-8">
|
||||
<input name="userName" placeholder="请输入用户名称" class="form-control" type="text">
|
||||
</div>
|
||||
@@ -17,7 +17,7 @@
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-4 control-label"><span style="color: red; ">*</span>归属部门:</label>
|
||||
<label class="col-sm-4 control-label is-required">归属部门:</label>
|
||||
<div class="col-sm-8">
|
||||
<div class="input-group">
|
||||
<input name="deptName" type="text" placeholder="请选择归属部门" class="form-control">
|
||||
@@ -30,7 +30,7 @@
|
||||
<div class="row">
|
||||
<div class="col-sm-6">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-4 control-label"><span style="color: red; ">*</span>手机号码:</label>
|
||||
<label class="col-sm-4 control-label is-required">手机号码:</label>
|
||||
<div class="col-sm-8">
|
||||
<input name="phonenumber" placeholder="请输入手机号码" class="form-control" type="text">
|
||||
</div>
|
||||
@@ -38,7 +38,7 @@
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-4 control-label"><span style="color: red; ">*</span>邮箱:</label>
|
||||
<label class="col-sm-4 control-label is-required">邮箱:</label>
|
||||
<div class="col-sm-8">
|
||||
<input name="email" class="form-control" type="text" placeholder="请输入邮箱">
|
||||
</div>
|
||||
@@ -48,7 +48,7 @@
|
||||
<div class="row">
|
||||
<div class="col-sm-6">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-4 control-label"><span style="color: red; ">*</span>登录账号:</label>
|
||||
<label class="col-sm-4 control-label is-required">登录账号:</label>
|
||||
<div class="col-sm-8">
|
||||
<input name="loginName" placeholder="请输入登录账号" class="form-control" type="text">
|
||||
</div>
|
||||
@@ -56,7 +56,7 @@
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-4 control-label"><span style="color: red; ">*</span>登录密码:</label>
|
||||
<label class="col-sm-4 control-label is-required">登录密码:</label>
|
||||
<div class="col-sm-8">
|
||||
<input name="password" placeholder="请输入登录密码" class="form-control" type="password">
|
||||
</div>
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
<div class="container-div">
|
||||
<div class="row">
|
||||
<div class="col-sm-12 select-table table-striped">
|
||||
<table id="bootstrap-table" data-mobile-responsive="true"></table>
|
||||
<table id="bootstrap-table"></table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
<div class="container-div">
|
||||
<div class="row">
|
||||
<div class="col-sm-12 select-table table-striped">
|
||||
<table id="bootstrap-table" data-mobile-responsive="true"></table>
|
||||
<table id="bootstrap-table"></table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
<div class="container-div">
|
||||
<div class="row">
|
||||
<div class="col-sm-12 select-table table-striped">
|
||||
<table id="bootstrap-table" data-mobile-responsive="true"></table>
|
||||
<table id="bootstrap-table"></table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label ">用户姓名:</label>
|
||||
<label class="col-sm-3 control-label">用户姓名:</label>
|
||||
<div class="col-sm-8">
|
||||
<input class="form-control" type="text" name="userName" id="userName" required>
|
||||
</div>
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
<div class="form-control-static" th:text="${user.userCode}"></div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label ">用户姓名:</label>
|
||||
<label class="col-sm-3 control-label">用户姓名:</label>
|
||||
<div class="col-sm-8">
|
||||
<div class="form-control-static" th:text="${user.userName}"></div>
|
||||
</div>
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label ">用户姓名:</label>
|
||||
<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}" required>
|
||||
</div>
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-12 select-table table-striped">
|
||||
<table id="bootstrap-table" data-mobile-responsive="true"></table>
|
||||
<table id="bootstrap-table"></table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -180,33 +180,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div class="ibox float-e-margins">
|
||||
<div class="ibox-title">
|
||||
<h5>和弦图</h5>
|
||||
<div class="ibox-tools">
|
||||
<a class="collapse-link">
|
||||
<i class="fa fa-chevron-up"></i>
|
||||
</a>
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="graph_flot.html#">
|
||||
<i class="fa fa-wrench"></i>
|
||||
</a>
|
||||
<ul class="dropdown-menu dropdown-user">
|
||||
<li><a href="graph_flot.html#">选项1</a>
|
||||
</li>
|
||||
<li><a href="graph_flot.html#">选项2</a>
|
||||
</li>
|
||||
</ul>
|
||||
<a class="close-link">
|
||||
<i class="fa fa-times"></i>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="ibox-content">
|
||||
<div class="echarts" id="echarts-chord-chart"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div class="ibox float-e-margins">
|
||||
<div class="ibox-title">
|
||||
@@ -261,33 +234,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div class="ibox float-e-margins">
|
||||
<div class="ibox-title">
|
||||
<h5>力导向布局图</h5>
|
||||
<div class="ibox-tools">
|
||||
<a class="collapse-link">
|
||||
<i class="fa fa-chevron-up"></i>
|
||||
</a>
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="graph_flot.html#">
|
||||
<i class="fa fa-wrench"></i>
|
||||
</a>
|
||||
<ul class="dropdown-menu dropdown-user">
|
||||
<li><a href="graph_flot.html#">选项1</a>
|
||||
</li>
|
||||
<li><a href="graph_flot.html#">选项2</a>
|
||||
</li>
|
||||
</ul>
|
||||
<a class="close-link">
|
||||
<i class="fa fa-times"></i>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="ibox-content">
|
||||
<div class="echarts" id="echarts-force-chart"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
@@ -1065,182 +1011,6 @@
|
||||
mapChart.setOption(mapoption);
|
||||
$(window).resize(mapChart.resize);
|
||||
|
||||
var chordChart = echarts.init(document.getElementById("echarts-chord-chart"));
|
||||
var chordoption = {
|
||||
title : {
|
||||
text: '测试数据',
|
||||
subtext: 'From d3.js',
|
||||
x:'right',
|
||||
y:'bottom'
|
||||
},
|
||||
tooltip : {
|
||||
trigger: 'item',
|
||||
formatter: function (params) {
|
||||
if (params.indicator2) { // is edge
|
||||
return params.value.weight;
|
||||
} else {// is node
|
||||
return params.name
|
||||
}
|
||||
}
|
||||
},
|
||||
toolbox: {
|
||||
show : true,
|
||||
feature : {
|
||||
restore : {show: true},
|
||||
magicType: {show: true, type: ['force', 'chord']},
|
||||
saveAsImage : {show: true}
|
||||
}
|
||||
},
|
||||
legend: {
|
||||
x: 'left',
|
||||
data:['group1','group2', 'group3', 'group4']
|
||||
},
|
||||
series : [
|
||||
{
|
||||
type:'chord',
|
||||
sort : 'ascending',
|
||||
sortSub : 'descending',
|
||||
showScale : true,
|
||||
showScaleText : true,
|
||||
data : [
|
||||
{name : 'group1'},
|
||||
{name : 'group2'},
|
||||
{name : 'group3'},
|
||||
{name : 'group4'}
|
||||
],
|
||||
itemStyle : {
|
||||
normal : {
|
||||
label : {
|
||||
show : false
|
||||
}
|
||||
}
|
||||
},
|
||||
matrix : [
|
||||
[11975, 5871, 8916, 2868],
|
||||
[ 1951, 10048, 2060, 6171],
|
||||
[ 8010, 16145, 8090, 8045],
|
||||
[ 1013, 990, 940, 6907]
|
||||
]
|
||||
}
|
||||
]
|
||||
};
|
||||
|
||||
chordChart.setOption(chordoption);
|
||||
$(window).resize(chordChart.resize);
|
||||
|
||||
var forceChart = echarts.init(document.getElementById("echarts-force-chart"));
|
||||
var forceoption ={
|
||||
title : {
|
||||
text: '人物关系:乔布斯',
|
||||
subtext: '数据来自人立方',
|
||||
x:'right',
|
||||
y:'bottom'
|
||||
},
|
||||
tooltip : {
|
||||
trigger: 'item',
|
||||
formatter: '{a} : {b}'
|
||||
},
|
||||
toolbox: {
|
||||
show : true,
|
||||
feature : {
|
||||
restore : {show: true},
|
||||
magicType: {show: true, type: ['force', 'chord']},
|
||||
saveAsImage : {show: true}
|
||||
}
|
||||
},
|
||||
legend: {
|
||||
x: 'left',
|
||||
data:['家人','朋友']
|
||||
},
|
||||
series : [
|
||||
{
|
||||
type:'force',
|
||||
name : "人物关系",
|
||||
ribbonType: false,
|
||||
categories : [
|
||||
{
|
||||
name: '人物'
|
||||
},
|
||||
{
|
||||
name: '家人'
|
||||
},
|
||||
{
|
||||
name:'朋友'
|
||||
}
|
||||
],
|
||||
itemStyle: {
|
||||
normal: {
|
||||
label: {
|
||||
show: true,
|
||||
textStyle: {
|
||||
color: '#333'
|
||||
}
|
||||
},
|
||||
nodeStyle : {
|
||||
brushType : 'both',
|
||||
borderColor : 'rgba(255,215,0,0.4)',
|
||||
borderWidth : 1
|
||||
},
|
||||
linkStyle: {
|
||||
type: 'curve'
|
||||
}
|
||||
},
|
||||
emphasis: {
|
||||
label: {
|
||||
show: false
|
||||
// textStyle: null // 默认使用全局文本样式,详见TEXTSTYLE
|
||||
},
|
||||
nodeStyle : {
|
||||
//r: 30
|
||||
},
|
||||
linkStyle : {}
|
||||
}
|
||||
},
|
||||
useWorker: false,
|
||||
minRadius : 15,
|
||||
maxRadius : 25,
|
||||
gravity: 1.1,
|
||||
scaling: 1.1,
|
||||
roam: 'move',
|
||||
nodes:[
|
||||
{category:0, name: '乔布斯', value : 10},
|
||||
{category:1, name: '丽萨-乔布斯',value : 2},
|
||||
{category:1, name: '保罗-乔布斯',value : 3},
|
||||
{category:1, name: '克拉拉-乔布斯',value : 3},
|
||||
{category:1, name: '劳伦-鲍威尔',value : 7},
|
||||
{category:2, name: '史蒂夫-沃兹尼艾克',value : 5},
|
||||
{category:2, name: '奥巴马',value : 8},
|
||||
{category:2, name: '比尔-盖茨',value : 9},
|
||||
{category:2, name: '乔纳森-艾夫',value : 4},
|
||||
{category:2, name: '蒂姆-库克',value : 4},
|
||||
{category:2, name: '龙-韦恩',value : 1},
|
||||
],
|
||||
links : [
|
||||
{source : '丽萨-乔布斯', target : '乔布斯', weight : 1, name: '女儿'},
|
||||
{source : '保罗-乔布斯', target : '乔布斯', weight : 2, name: '父亲'},
|
||||
{source : '克拉拉-乔布斯', target : '乔布斯', weight : 1, name: '母亲'},
|
||||
{source : '劳伦-鲍威尔', target : '乔布斯', weight : 2},
|
||||
{source : '史蒂夫-沃兹尼艾克', target : '乔布斯', weight : 3, name: '合伙人'},
|
||||
{source : '奥巴马', target : '乔布斯', weight : 1},
|
||||
{source : '比尔-盖茨', target : '乔布斯', weight : 6, name: '竞争对手'},
|
||||
{source : '乔纳森-艾夫', target : '乔布斯', weight : 1, name: '爱将'},
|
||||
{source : '蒂姆-库克', target : '乔布斯', weight : 1},
|
||||
{source : '龙-韦恩', target : '乔布斯', weight : 1},
|
||||
{source : '克拉拉-乔布斯', target : '保罗-乔布斯', weight : 1},
|
||||
{source : '奥巴马', target : '保罗-乔布斯', weight : 1},
|
||||
{source : '奥巴马', target : '克拉拉-乔布斯', weight : 1},
|
||||
{source : '奥巴马', target : '劳伦-鲍威尔', weight : 1},
|
||||
{source : '奥巴马', target : '史蒂夫-沃兹尼艾克', weight : 1},
|
||||
{source : '比尔-盖茨', target : '奥巴马', weight : 6},
|
||||
{source : '比尔-盖茨', target : '克拉拉-乔布斯', weight : 1},
|
||||
{source : '蒂姆-库克', target : '奥巴马', weight : 1}
|
||||
]
|
||||
}
|
||||
]
|
||||
};
|
||||
forceChart.setOption(forceoption);
|
||||
$(window).resize(forceChart.resize);
|
||||
|
||||
var gaugeChart = echarts.init(document.getElementById("echarts-gauge-chart"));
|
||||
var gaugeoption = {
|
||||
tooltip : {
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
</div>
|
||||
|
||||
<div class="col-sm-12 select-table table-striped">
|
||||
<table id="bootstrap-table" data-mobile-responsive="true"></table>
|
||||
<table id="bootstrap-table"></table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -0,0 +1,113 @@
|
||||
<!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 select-table table-striped">
|
||||
<table id="bootstrap-table"></table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div th:include="include :: footer"></div>
|
||||
<script th:inline="javascript">
|
||||
var prefix = ctx + "demo/table";
|
||||
var datas = [[${@dict.getType('sys_normal_disable')}]];
|
||||
|
||||
$(function() {
|
||||
var options = {
|
||||
url: prefix + "/list",
|
||||
showSearch: false,
|
||||
showRefresh: false,
|
||||
showToggle: false,
|
||||
showColumns: false,
|
||||
detailView: true,
|
||||
onExpandRow : function(index, row, $detail) {
|
||||
initChildTable(index, row, $detail);
|
||||
},
|
||||
columns: [{
|
||||
checkbox: true
|
||||
},
|
||||
{
|
||||
field : 'userId',
|
||||
title : '用户ID'
|
||||
},
|
||||
{
|
||||
field : 'userCode',
|
||||
title : '用户编号'
|
||||
},
|
||||
{
|
||||
field : 'userName',
|
||||
title : '用户姓名'
|
||||
},
|
||||
{
|
||||
field : 'userPhone',
|
||||
title : '用户手机'
|
||||
},
|
||||
{
|
||||
field : 'userEmail',
|
||||
title : '用户邮箱'
|
||||
},
|
||||
{
|
||||
field : 'userBalance',
|
||||
title : '用户余额'
|
||||
},
|
||||
{
|
||||
field: 'status',
|
||||
title: '用户状态',
|
||||
align: 'center',
|
||||
formatter: function(value, row, index) {
|
||||
return $.table.selectDictLabel(datas, value);
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '操作',
|
||||
align: 'center',
|
||||
formatter: function(value, row, index) {
|
||||
var actions = [];
|
||||
actions.push('<a class="btn btn-success btn-xs" href="#"><i class="fa fa-edit"></i>编辑</a> ');
|
||||
actions.push('<a class="btn btn-danger btn-xs" href="#"><i class="fa fa-remove"></i>删除</a>');
|
||||
return actions.join('');
|
||||
}
|
||||
}]
|
||||
};
|
||||
$.table.init(options);
|
||||
});
|
||||
|
||||
initChildTable = function(index, row, $detail) {
|
||||
var childTable = $detail.html('<table style="table-layout:fixed"></table>').find('table');
|
||||
$(childTable).bootstrapTable({
|
||||
url: prefix + "/list",
|
||||
method: 'post',
|
||||
sidePagination: "server",
|
||||
contentType: "application/x-www-form-urlencoded",
|
||||
queryParams : {
|
||||
userName: '测试8'
|
||||
},
|
||||
columns: [{
|
||||
field : 'userId',
|
||||
title : '子表ID'
|
||||
},
|
||||
{
|
||||
field : 'userCode',
|
||||
title : '子表编号'
|
||||
},
|
||||
{
|
||||
field : 'userName',
|
||||
title : '子表姓名'
|
||||
},
|
||||
{
|
||||
field: 'status',
|
||||
title: '子表状态',
|
||||
align: 'center',
|
||||
formatter: function(value, row, index) {
|
||||
return $.table.selectDictLabel(datas, value);
|
||||
}
|
||||
}]
|
||||
});
|
||||
};
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -15,7 +15,7 @@
|
||||
<a class="btn btn-danger" onclick="removeRowByUniqueId()">
|
||||
<i class="fa fa-remove"></i> 根据值删除行
|
||||
</a>
|
||||
<a class="btn btn-danger" onclick="removeRowAll()">
|
||||
<a class="btn btn-danger" onclick="removeRowAll()">
|
||||
<i class="fa fa-remove"></i> 删除所有行
|
||||
</a>
|
||||
<a class="btn btn-info" onclick="updateRow()">
|
||||
@@ -36,7 +36,7 @@
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-12 select-table table-striped">
|
||||
<table id="bootstrap-table" data-mobile-responsive="true"></table>
|
||||
<table id="bootstrap-table"></table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -88,7 +88,7 @@
|
||||
/* 新增表格行 */
|
||||
function insertRow(){
|
||||
var randomId = 100 + ~~(Math.random() * 100)
|
||||
$.btTable.bootstrapTable('insertRow', {
|
||||
$("#" + table.options.id).bootstrapTable('insertRow', {
|
||||
index: 0, // 你想插入到哪,0表示第一行
|
||||
row: {
|
||||
userId: randomId,
|
||||
@@ -108,7 +108,7 @@
|
||||
$.modal.alertWarning("请至少选择一条记录");
|
||||
return;
|
||||
}
|
||||
$.btTable.bootstrapTable('remove', {
|
||||
$("#" + table.options.id).bootstrapTable('remove', {
|
||||
field: 'userId',
|
||||
values: ids
|
||||
})
|
||||
@@ -116,18 +116,18 @@
|
||||
|
||||
/* 删除行ID值为1的数据 */
|
||||
function removeRowByUniqueId(){
|
||||
$.btTable.bootstrapTable('removeByUniqueId', 1)
|
||||
$("#" + table.options.id).bootstrapTable('removeByUniqueId', 1)
|
||||
}
|
||||
|
||||
/* 删除所有表格行 */
|
||||
function removeRowAll(){
|
||||
$.btTable.bootstrapTable('removeAll')
|
||||
$("#" + table.options.id).bootstrapTable('removeAll')
|
||||
}
|
||||
|
||||
/* 修改表格行 */
|
||||
function updateRow(){
|
||||
var randomId = 100 + ~~(Math.random() * 100)
|
||||
$.btTable.bootstrapTable('updateRow', {
|
||||
$("#" + table.options.id).bootstrapTable('updateRow', {
|
||||
index: 0, // 你想修改哪行,0表示第一行
|
||||
row: {
|
||||
userId: randomId,
|
||||
@@ -143,7 +143,7 @@
|
||||
/* 修改行ID值为1的数据 */
|
||||
function updateRowByUniqueId(){
|
||||
var randomId = 100 + ~~(Math.random() * 100)
|
||||
$.btTable.bootstrapTable('updateByUniqueId', {
|
||||
$("#" + table.options.id).bootstrapTable('updateByUniqueId', {
|
||||
id: 1,
|
||||
row: {
|
||||
userId: randomId,
|
||||
@@ -158,19 +158,19 @@
|
||||
|
||||
/* 查询表格所有数据值 */
|
||||
function getData(){
|
||||
var data = $.btTable.bootstrapTable('getData');
|
||||
var data = $("#" + table.options.id).bootstrapTable('getData');
|
||||
alert(JSON.stringify(data))
|
||||
}
|
||||
|
||||
/* 查询行ID值为1的数据 */
|
||||
function getRowByUniqueId(){
|
||||
var data = $.btTable.bootstrapTable('getRowByUniqueId', 1);
|
||||
var data = $("#" + table.options.id).bootstrapTable('getRowByUniqueId', 1);
|
||||
alert(JSON.stringify(data))
|
||||
}
|
||||
|
||||
/* 查询表格选择行数据值 */
|
||||
function getSelections(){
|
||||
var data = $.btTable.bootstrapTable('getSelections');
|
||||
var data = $("#" + table.options.id).bootstrapTable('getSelections');
|
||||
alert(JSON.stringify(data))
|
||||
}
|
||||
</script>
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
<!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('跳转至指定页')" />
|
||||
<th:block th:include="include :: header('表格细节视图')" />
|
||||
</head>
|
||||
<body class="gray-bg">
|
||||
<div class="container-div">
|
||||
<div class="row">
|
||||
<div class="col-sm-12 select-table table-striped">
|
||||
<table id="bootstrap-table" data-mobile-responsive="true"></table>
|
||||
<table id="bootstrap-table"></table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -0,0 +1,128 @@
|
||||
<!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('表格行内编辑')" />
|
||||
<th:block th:include="include :: bootstrap-editable-css" />
|
||||
</head>
|
||||
<body class="gray-bg">
|
||||
<div class="container-div">
|
||||
<div class="btn-group-sm" id="toolbar" role="group">
|
||||
<a class="btn btn-info" onclick="getSelections()">
|
||||
<i class="fa fa-search"></i> 查询选择数据
|
||||
</a>
|
||||
<a class="btn btn-primary" onclick="getData()">
|
||||
<i class="fa fa-search"></i> 获取所有数据
|
||||
</a>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-12 select-table table-striped">
|
||||
<table id="bootstrap-table"></table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<th:block th:include="include :: footer" />
|
||||
<th:block th:include="include :: bootstrap-table-editable-js" />
|
||||
|
||||
<script th:inline="javascript">
|
||||
var prefix = ctx + "demo/table";
|
||||
var datas = [[${@dict.getType('sys_normal_disable')}]];
|
||||
|
||||
$(function() {
|
||||
var options = {
|
||||
url: prefix + "/list",
|
||||
showSearch: false,
|
||||
showRefresh: false,
|
||||
showToggle: false,
|
||||
showColumns: false,
|
||||
showPageGo: true,
|
||||
onEditableSave: onEditableSave,
|
||||
columns: [{
|
||||
checkbox: true
|
||||
},
|
||||
{
|
||||
field : 'userId',
|
||||
title : '用户ID'
|
||||
},
|
||||
{
|
||||
field : 'userCode',
|
||||
title : '用户编号',
|
||||
editable: true
|
||||
},
|
||||
{
|
||||
field : 'userName',
|
||||
title : '用户姓名',
|
||||
editable : {
|
||||
type : 'text',
|
||||
title : '名称',
|
||||
emptytext : "【名称】为空",
|
||||
validate : function(value) {
|
||||
if (value.length > 30) {
|
||||
return '名称不能超过30个字符';
|
||||
}
|
||||
if (value.length == 0) {
|
||||
return '名称不能为空';
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
field : 'userPhone',
|
||||
title : '用户手机'
|
||||
},
|
||||
{
|
||||
field : 'userEmail',
|
||||
title : '用户邮箱'
|
||||
},
|
||||
{
|
||||
field : 'userBalance',
|
||||
title : '用户余额'
|
||||
},
|
||||
{
|
||||
field: 'status',
|
||||
title: '用户状态',
|
||||
align: 'center',
|
||||
editable : {
|
||||
type : 'select',
|
||||
title : '状态',
|
||||
source : [{
|
||||
value : 0,
|
||||
text : "正常"
|
||||
}, {
|
||||
value : 1,
|
||||
text : "停用"
|
||||
}]
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '操作',
|
||||
align: 'center',
|
||||
formatter: function(value, row, index) {
|
||||
var actions = [];
|
||||
actions.push('<a class="btn btn-success btn-xs" href="#"><i class="fa fa-edit"></i>编辑</a> ');
|
||||
actions.push('<a class="btn btn-danger btn-xs" href="#"><i class="fa fa-remove"></i>删除</a>');
|
||||
return actions.join('');
|
||||
}
|
||||
}]
|
||||
};
|
||||
$.table.init(options);
|
||||
});
|
||||
|
||||
function onEditableSave (field, row, oldValue, $el) {
|
||||
alert("字段名:" + field + ",当前值:" + row[field] + ",旧值:" + oldValue);
|
||||
}
|
||||
|
||||
/* 查询表格所有数据值 */
|
||||
function getData(){
|
||||
var data = $("#" + table.options.id).bootstrapTable('getData');
|
||||
alert(JSON.stringify(data))
|
||||
}
|
||||
|
||||
/* 查询表格选择行数据值 */
|
||||
function getSelections(){
|
||||
var data = $("#" + table.options.id).bootstrapTable('getSelections');
|
||||
alert(JSON.stringify(data))
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -8,7 +8,7 @@
|
||||
<div class="row">
|
||||
<div class="col-sm-12 select-table table-striped">
|
||||
<p class="select-title">自定义触发事件(点击某行/双击某行/单击某格/双击某格/服务器发送数据前触发/数据被加载时触发)</p>
|
||||
<table id="bootstrap-table" data-mobile-responsive="true"></table>
|
||||
<table id="bootstrap-table"></table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
<div class="container-div">
|
||||
<div class="row">
|
||||
<div class="col-sm-12 select-table table-striped">
|
||||
<table id="bootstrap-table" data-mobile-responsive="true"></table>
|
||||
<table id="bootstrap-table"></table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
</a>
|
||||
</div>
|
||||
<div class="col-sm-12 select-table table-striped">
|
||||
<table id="bootstrap-table" data-mobile-responsive="true"></table>
|
||||
<table id="bootstrap-table"></table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
<div class="container-div">
|
||||
<div class="row">
|
||||
<div class="col-sm-12 select-table table-striped">
|
||||
<table id="bootstrap-table" data-mobile-responsive="true"></table>
|
||||
<table id="bootstrap-table"></table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
<div class="container-div">
|
||||
<div class="row">
|
||||
<div class="col-sm-12 select-table table-bordered">
|
||||
<table id="bootstrap-table" data-mobile-responsive="true"></table>
|
||||
<table id="bootstrap-table"></table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
<div class="container-div">
|
||||
<div class="row">
|
||||
<div class="col-sm-12 select-table table-striped">
|
||||
<table id="bootstrap-table" data-mobile-responsive="true"></table>
|
||||
<table id="bootstrap-table"></table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -4,35 +4,94 @@
|
||||
<th:block th:include="include :: header('初始多表格')" />
|
||||
</head>
|
||||
<body class="gray-bg">
|
||||
<div class="container-div">
|
||||
<div class="row">
|
||||
<div class="container-div">
|
||||
<div class="row">
|
||||
<div class="col-sm-12 search-collapse">
|
||||
<form id="form1">
|
||||
<div class="select-list">
|
||||
<ul>
|
||||
<li>
|
||||
用户名称:<input type="text" name="userName"/>
|
||||
</li>
|
||||
<li>
|
||||
<a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search('form1', 'bootstrap-table1')"><i class="fa fa-search"></i> 搜索</a>
|
||||
<a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset('form1', 'bootstrap-table1')"><i class="fa fa-refresh"></i> 重置</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="btn-group-sm" id="toolbar1" role="group">
|
||||
<a class="btn btn-success" onclick="options1()">
|
||||
<i class="fa fa-search"></i> options
|
||||
</a>
|
||||
<a class="btn btn-success" onclick="$.operate.add()">
|
||||
<i class="fa fa-plus"></i> 新增
|
||||
</a>
|
||||
<a class="btn btn-primary single disabled" onclick="$.operate.edit()">
|
||||
<i class="fa fa-edit"></i> 修改
|
||||
</a>
|
||||
<a class="btn btn-danger multiple disabled" onclick="$.operate.removeAll()">
|
||||
<i class="fa fa-remove"></i> 删除
|
||||
</a>
|
||||
</div>
|
||||
<div class="col-sm-12 select-table table-striped">
|
||||
<table id="bootstrap-table-1" data-mobile-responsive="true"></table>
|
||||
<table id="bootstrap-table1"></table>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
</div>
|
||||
|
||||
<div class="container-div">
|
||||
<div class="row">
|
||||
<div class="col-sm-12 search-collapse">
|
||||
<form id="form2">
|
||||
<div class="select-list">
|
||||
<ul>
|
||||
<li>
|
||||
用户名称:<input type="text" name="userName"/>
|
||||
</li>
|
||||
<li>
|
||||
<a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search('form2', 'bootstrap-table2')"><i class="fa fa-search"></i> 搜索</a>
|
||||
<a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset('form2', 'bootstrap-table2')"><i class="fa fa-refresh"></i> 重置</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div class="btn-group-sm" id="toolbar2" role="group">
|
||||
<a class="btn btn-success" onclick="options2()">
|
||||
<i class="fa fa-search"></i> options
|
||||
</a>
|
||||
<a class="btn btn-success" onclick="$.operate.add()">
|
||||
<i class="fa fa-plus"></i> 新增
|
||||
</a>
|
||||
<a class="btn btn-primary single disabled" onclick="$.operate.edit()">
|
||||
<i class="fa fa-edit"></i> 修改
|
||||
</a>
|
||||
<a class="btn btn-danger multiple disabled" onclick="$.operate.removeAll()">
|
||||
<i class="fa fa-remove"></i> 删除
|
||||
</a>
|
||||
</div>
|
||||
<div class="col-sm-12 select-table table-striped">
|
||||
<table id="bootstrap-table-2" data-mobile-responsive="true"></table>
|
||||
<table id="bootstrap-table2"></table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div th:include="include :: footer"></div>
|
||||
<script th:inline="javascript">
|
||||
var prefix = ctx + "demo/table";
|
||||
var prefix = ctx + "demo/operate";
|
||||
var datas = [[${@dict.getType('sys_normal_disable')}]];
|
||||
|
||||
$(function() {
|
||||
var options = {
|
||||
id: "bootstrap-table-1",
|
||||
id: "bootstrap-table1",
|
||||
toolbar: "toolbar1",
|
||||
url: prefix + "/list",
|
||||
createUrl: prefix + "/add",
|
||||
updateUrl: prefix + "/edit/{id}",
|
||||
removeUrl: prefix + "/remove",
|
||||
exportUrl: prefix + "/export",
|
||||
showSearch: false,
|
||||
showRefresh: false,
|
||||
showToggle: false,
|
||||
showColumns: false,
|
||||
updateUrl: prefix + "/edit/{id}",
|
||||
modalName: "用户",
|
||||
columns: [{
|
||||
checkbox: true
|
||||
},
|
||||
@@ -73,8 +132,8 @@
|
||||
align: 'center',
|
||||
formatter: function(value, row, index) {
|
||||
var actions = [];
|
||||
actions.push('<a class="btn btn-success btn-xs" href="#"><i class="fa fa-edit"></i>编辑</a> ');
|
||||
actions.push('<a class="btn btn-danger btn-xs" href="#"><i class="fa fa-remove"></i>删除</a>');
|
||||
actions.push('<a class="btn btn-success btn-xs" href="###" onclick="$.operate.edit(\'' + row.userId + '\')"><i class="fa fa-edit"></i>编辑</a> ');
|
||||
actions.push('<a class="btn btn-danger btn-xs" href="###" onclick="$.operate.remove(\'' + row.userId + '\')"><i class="fa fa-remove"></i>删除</a>');
|
||||
return actions.join('');
|
||||
}
|
||||
}]
|
||||
@@ -82,21 +141,16 @@
|
||||
$.table.init(options);
|
||||
});
|
||||
|
||||
function queryParams(params) {
|
||||
var search = $.table.queryParams(params);
|
||||
search.userName = '测试1';
|
||||
return search;
|
||||
}
|
||||
|
||||
$(function() {
|
||||
var options = {
|
||||
id: "bootstrap-table-2",
|
||||
id: "bootstrap-table2",
|
||||
toolbar: "toolbar2",
|
||||
url: prefix + "/list",
|
||||
showSearch: false,
|
||||
showRefresh: false,
|
||||
showToggle: false,
|
||||
showColumns: false,
|
||||
queryParams: queryParams,
|
||||
createUrl: prefix + "/add",
|
||||
removeUrl: prefix + "/remove",
|
||||
updateUrl: prefix + "/edit/{id}",
|
||||
modalName: "用户",
|
||||
columns: [{
|
||||
checkbox: true
|
||||
},
|
||||
@@ -137,14 +191,32 @@
|
||||
align: 'center',
|
||||
formatter: function(value, row, index) {
|
||||
var actions = [];
|
||||
actions.push('<a class="btn btn-success btn-xs" href="#"><i class="fa fa-edit"></i>编辑</a> ');
|
||||
actions.push('<a class="btn btn-danger btn-xs" href="#"><i class="fa fa-remove"></i>删除</a>');
|
||||
actions.push('<a class="btn btn-success btn-xs" href="###" onclick="$.operate.edit(\'' + row.userId + '\')"><i class="fa fa-edit"></i>编辑</a> ');
|
||||
actions.push('<a class="btn btn-danger btn-xs" href="###" onclick="$.operate.remove(\'' + row.userId + '\')"><i class="fa fa-remove"></i>删除</a>');
|
||||
return actions.join('');
|
||||
}
|
||||
}]
|
||||
};
|
||||
$.table.init(options);
|
||||
});
|
||||
|
||||
function options1() {
|
||||
var temp = "";
|
||||
var obj = table.config['bootstrap-table1'];
|
||||
for (var i in obj) {
|
||||
temp += i + ":" + obj[i] + "<br/>";
|
||||
}
|
||||
$.modal.alert(temp);
|
||||
}
|
||||
|
||||
function options2() {
|
||||
var temp = "";
|
||||
var obj = table.config['bootstrap-table2'];
|
||||
for (var i in obj) {
|
||||
temp += i + ":" + obj[i] + "<br/>";
|
||||
}
|
||||
$.modal.alert(temp);
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -27,7 +27,7 @@
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-12 select-table table-striped">
|
||||
<table id="bootstrap-table" data-mobile-responsive="true"></table>
|
||||
<table id="bootstrap-table"></table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
<div class="container-div">
|
||||
<div class="row">
|
||||
<div class="col-sm-12 select-table table-striped">
|
||||
<table id="bootstrap-table" data-mobile-responsive="true"></table>
|
||||
<table id="bootstrap-table"></table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
<div class="row">
|
||||
<div class="col-sm-12 select-table table-striped">
|
||||
<p class="select-title">通过queryParams方法设置</p>
|
||||
<table id="bootstrap-table" data-mobile-responsive="true"></table>
|
||||
<table id="bootstrap-table"></table>
|
||||
</div>
|
||||
|
||||
<div class="col-sm-12 search-collapse">
|
||||
@@ -24,7 +24,7 @@
|
||||
</div>
|
||||
<div class="col-sm-12 select-table table-striped">
|
||||
<p class="select-title">通过form自动填充</p>
|
||||
<table id="bootstrap-table-form" data-mobile-responsive="true"></table>
|
||||
<table id="bootstrap-table-form"></table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-12 select-table table-striped">
|
||||
<table id="bootstrap-table" data-mobile-responsive="true"></table>
|
||||
<table id="bootstrap-table"></table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -24,10 +24,6 @@
|
||||
$(function() {
|
||||
var options = {
|
||||
url: prefix + "/list",
|
||||
showSearch: false,
|
||||
showRefresh: false,
|
||||
showToggle: false,
|
||||
showColumns: false,
|
||||
rememberSelected: true,
|
||||
columns: [{
|
||||
field: 'state',
|
||||
@@ -81,7 +77,8 @@
|
||||
|
||||
// 选中数据
|
||||
function checkItem(){
|
||||
var arrays = $.table.selectColumns("userId");
|
||||
// var arrays = $.table.selectColumns("userId");
|
||||
var arrays = $.table.selectColumns("userCode");
|
||||
alert(arrays);
|
||||
}
|
||||
</script>
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
<div class="row">
|
||||
<div class="col-sm-12 select-table table-striped">
|
||||
<p class="select-title">按住表格拖拽</p>
|
||||
<table id="bootstrap-table" data-mobile-responsive="true"
|
||||
<table id="bootstrap-table"
|
||||
data-use-row-attr-func="true"
|
||||
data-reorderable-rows="true"></table>
|
||||
</div>
|
||||
|
||||
@@ -97,19 +97,19 @@
|
||||
<div class="select-list">
|
||||
<ul>
|
||||
<li>
|
||||
<p>商户编号:</p>
|
||||
<label style="width: 80px">商户编号:</label>
|
||||
<input type="text" name="userId"/>
|
||||
</li>
|
||||
<li>
|
||||
<p>订单号:</p>
|
||||
<label style="width: 80px">订单号:</label>
|
||||
<input type="text" name="orderNo"/>
|
||||
</li>
|
||||
<li>
|
||||
<p>日期:</p>
|
||||
<label style="width: 80px">日期:</label>
|
||||
<input type="text" class="time-input" placeholder="日期"/>
|
||||
</li>
|
||||
<li class="select-selectpicker">
|
||||
<p>状态:</p>
|
||||
<label style="width: 80px">状态:</label>
|
||||
<select class="selectpicker" data-none-selected-text="请选择" multiple>
|
||||
<option value="">所有</option>
|
||||
<option value="0">初始</option>
|
||||
@@ -119,7 +119,7 @@
|
||||
</select>
|
||||
</li>
|
||||
<li>
|
||||
<p>供货商通道:</p>
|
||||
<label style="width: 80px">供货商通道:</label>
|
||||
<select>
|
||||
<option value="">所有</option>
|
||||
<option value="0">腾讯</option>
|
||||
@@ -128,7 +128,7 @@
|
||||
</select>
|
||||
</li>
|
||||
<li>
|
||||
<p>来源:</p>
|
||||
<label style="width: 80px">来源:</label>
|
||||
<select>
|
||||
<option value="">所有</option>
|
||||
<option value="0">手机</option>
|
||||
@@ -137,7 +137,7 @@
|
||||
</select>
|
||||
</li>
|
||||
<li>
|
||||
<p>运营商:</p>
|
||||
<label style="width: 80px">运营商:</label>
|
||||
<select>
|
||||
<option value="">所有</option>
|
||||
<option value="0">移动</option>
|
||||
@@ -146,7 +146,7 @@
|
||||
</select>
|
||||
</li>
|
||||
<li class="select-time">
|
||||
<p>回调时间:</p>
|
||||
<label style="width: 80px">回调时间:</label>
|
||||
<input type="text" class="time-input" placeholder="开始时间"/>
|
||||
<span>-</span>
|
||||
<input type="text" class="time-input" placeholder="结束时间"/>
|
||||
|
||||
@@ -4,9 +4,9 @@
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>RuoYi - 404</title>
|
||||
<link href="/css/bootstrap.min.css" rel="stylesheet"/>
|
||||
<link href="/css/animate.css" rel="stylesheet"/>
|
||||
<link href="/css/style.css" rel="stylesheet"/>
|
||||
<link th:href="@{/css/bootstrap.min.css}" rel="stylesheet"/>
|
||||
<link th:href="@{/css/animate.css}" rel="stylesheet"/>
|
||||
<link th:href="@{/css/style.css}" rel="stylesheet"/>
|
||||
</head>
|
||||
<body class="gray-bg">
|
||||
<div class="middle-box text-center animated fadeInDown">
|
||||
@@ -14,8 +14,14 @@
|
||||
<h3 class="font-bold">找不到网页!</h3>
|
||||
<div class="error-desc">
|
||||
对不起,您正在寻找的页面不存在。尝试检查URL的错误,然后按浏览器上的刷新按钮或尝试在我们的应用程序中找到其他内容。
|
||||
<a href="javascript:top.document.location.href='/'" class="btn btn-primary m-t">主页</a>
|
||||
<a href="javascript:index()" class="btn btn-primary m-t">主页</a>
|
||||
</div>
|
||||
</div>
|
||||
<script th:inline="javascript">
|
||||
var ctx = [[@{/}]];
|
||||
function index() {
|
||||
window.parent.frames.location.href = ctx + "index";
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -4,9 +4,9 @@
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>RuoYi - 500</title>
|
||||
<link href="/css/bootstrap.min.css" rel="stylesheet"/>
|
||||
<link href="/css/animate.css" rel="stylesheet"/>
|
||||
<link href="/css/style.css" rel="stylesheet"/>
|
||||
<link th:href="@{/css/bootstrap.min.css}" rel="stylesheet"/>
|
||||
<link th:href="@{/css/animate.css}" rel="stylesheet"/>
|
||||
<link th:href="@{/css/style.css}" rel="stylesheet"/>
|
||||
</head>
|
||||
<body class="gray-bg">
|
||||
<div class="middle-box text-center animated fadeInDown">
|
||||
@@ -15,8 +15,14 @@
|
||||
|
||||
<div class="error-desc">
|
||||
服务器遇到意外事件,不允许完成请求。我们抱歉。您可以返回主页面。
|
||||
<a href="javascript:top.document.location.href='/'" class="btn btn-primary m-t">主页</a>
|
||||
<a href="javascript:index()" class="btn btn-primary m-t">主页</a>
|
||||
</div>
|
||||
</div>
|
||||
<script th:inline="javascript">
|
||||
var ctx = [[@{/}]];
|
||||
function index() {
|
||||
window.parent.frames.location.href = ctx + "index";
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -4,9 +4,9 @@
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>RuoYi - 403</title>
|
||||
<link href="/css/bootstrap.min.css" rel="stylesheet"/>
|
||||
<link href="/css/animate.css" rel="stylesheet"/>
|
||||
<link href="/css/style.css" rel="stylesheet"/>
|
||||
<link th:href="@{/css/bootstrap.min.css}" rel="stylesheet"/>
|
||||
<link th:href="@{/css/animate.css}" rel="stylesheet"/>
|
||||
<link th:href="@{/css/style.css}" rel="stylesheet"/>
|
||||
</head>
|
||||
<body class="gray-bg">
|
||||
<div class="middle-box text-center animated fadeInDown">
|
||||
|
||||
@@ -4,9 +4,9 @@
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>RuoYi - 403</title>
|
||||
<link href="/css/bootstrap.min.css" rel="stylesheet"/>
|
||||
<link href="/css/animate.css" rel="stylesheet"/>
|
||||
<link href="/css/style.css" rel="stylesheet"/>
|
||||
<link th:href="@{/css/bootstrap.min.css}" rel="stylesheet"/>
|
||||
<link th:href="@{/css/animate.css}" rel="stylesheet"/>
|
||||
<link th:href="@{/css/style.css}" rel="stylesheet"/>
|
||||
</head>
|
||||
<body class="gray-bg">
|
||||
<div class="middle-box text-center animated fadeInDown">
|
||||
@@ -15,8 +15,14 @@
|
||||
|
||||
<div class="error-desc">
|
||||
对不起,您没有访问权限,请不要进行非法操作!您可以返回主页面
|
||||
<a href="javascript:top.document.location.href='/'" class="btn btn-outline btn-primary btn-xs">返回主页</a>
|
||||
<a href="javascript:index()" class="btn btn-outline btn-primary btn-xs">返回主页</a>
|
||||
</div>
|
||||
</div>
|
||||
<script th:inline="javascript">
|
||||
var ctx = [[@{/}]];
|
||||
function index() {
|
||||
window.parent.frames.location.href = ctx + "index";
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
<head th:fragment=header(title)>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="keywords" content="">
|
||||
<meta name="description" content="">
|
||||
<title th:text="${title}"></title>
|
||||
@@ -11,16 +12,17 @@
|
||||
<!-- bootstrap-table 表格插件样式 -->
|
||||
<link th:href="@{/ajax/libs/bootstrap-table/bootstrap-table.min.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?v=20200318}" rel="stylesheet"/>
|
||||
<link th:href="@{/ruoyi/css/ry-ui.css}" rel="stylesheet"/>
|
||||
</head>
|
||||
|
||||
<!-- 通用JS -->
|
||||
<div th:fragment="footer">
|
||||
<a id="scroll-up" href="#" class="btn btn-sm display"><i class="fa fa-angle-double-up"></i></a>
|
||||
<script th:src="@{/js/jquery.min.js}"></script>
|
||||
<script th:src="@{/js/bootstrap.min.js}"></script>
|
||||
<!-- 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?v=20191219}"></script>
|
||||
<script th:src="@{/ajax/libs/bootstrap-table/locale/bootstrap-table-zh-CN.min.js}"></script>
|
||||
<script th:src="@{/ajax/libs/bootstrap-table/extensions/mobile/bootstrap-table-mobile.js}"></script>
|
||||
<script th:src="@{/ajax/libs/bootstrap-table/extensions/toolbar/bootstrap-table-toolbar.min.js}"></script>
|
||||
@@ -39,8 +41,8 @@
|
||||
<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/layui/layui.js}"></script>
|
||||
<script th:src="@{/ruoyi/js/common.js?v=4.0.0}"></script>
|
||||
<script th:src="@{/ruoyi/js/ry-ui.js?v=4.0.0}"></script>
|
||||
<script th:src="@{/ruoyi/js/common.js?v=4.2.0}"></script>
|
||||
<script th:src="@{/ruoyi/js/ry-ui.js?v=4.2.0}"></script>
|
||||
<script th:inline="javascript"> var ctx = [[@{/}]]; </script>
|
||||
</div>
|
||||
|
||||
@@ -74,7 +76,7 @@
|
||||
<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>
|
||||
<script th:src="@{/ajax/libs/datapicker/bootstrap-datetimepicker.min.js}"></script>
|
||||
</div>
|
||||
|
||||
<!-- ui布局插件 -->
|
||||
@@ -172,4 +174,13 @@
|
||||
<div th:fragment="bootstrap-table-reorder-js">
|
||||
<script th:src="@{/ajax/libs/bootstrap-table/extensions/reorder/bootstrap-table-reorder.js}"></script>
|
||||
<script th:src="@{/ajax/libs/bootstrap-table/extensions/reorder/jquery.tablednd.js}"></script>
|
||||
</div>
|
||||
|
||||
<!-- 表格行内编辑插件 -->
|
||||
<div th:fragment="bootstrap-editable-css">
|
||||
<link th:href="@{/ajax/libs/bootstrap-table/extensions/editable/bootstrap-editable.css}" rel="stylesheet"/>
|
||||
</div>
|
||||
<div th:fragment="bootstrap-table-editable-js">
|
||||
<script th:src="@{/ajax/libs/bootstrap-table/extensions/editable/bootstrap-editable.min.js}"></script>
|
||||
<script th:src="@{/ajax/libs/bootstrap-table/extensions/editable/bootstrap-table-editable.js}"></script>
|
||||
</div>
|
||||
@@ -5,9 +5,8 @@
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta name="renderer" content="webkit">
|
||||
<title>若依系统首页</title>
|
||||
<!--[if lt IE 9]>
|
||||
<meta http-equiv="refresh" content="0;ie.html"/>
|
||||
<![endif]-->
|
||||
<!-- 避免IE使用兼容模式 -->
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<link th:href="@{favicon.ico}" rel="stylesheet"/>
|
||||
<link th:href="@{/css/bootstrap.min.css}" rel="stylesheet"/>
|
||||
<link th:href="@{/css/jquery.contextMenu.min.css}" rel="stylesheet"/>
|
||||
@@ -15,9 +14,9 @@
|
||||
<link th:href="@{/css/animate.css}" rel="stylesheet"/>
|
||||
<link th:href="@{/css/style.css}" rel="stylesheet"/>
|
||||
<link th:href="@{/css/skins.css}" rel="stylesheet"/>
|
||||
<link th:href="@{/ruoyi/css/ry-ui.css?v=4.0.0}" rel="stylesheet"/>
|
||||
<link th:href="@{/ruoyi/css/ry-ui.css?v=4.2.0}" rel="stylesheet"/>
|
||||
</head>
|
||||
<body class="fixed-sidebar full-height-layout gray-bg" style="overflow: hidden" th:classappend="|${@config.getKey('sys.index.sideTheme')} ${@config.getKey('sys.index.skinName')}|">
|
||||
<body class="fixed-sidebar full-height-layout gray-bg" style="overflow: hidden">
|
||||
<div id="wrapper">
|
||||
|
||||
<!--左侧导航开始-->
|
||||
@@ -25,11 +24,13 @@
|
||||
<div class="nav-close">
|
||||
<i class="fa fa-times-circle"></i>
|
||||
</div>
|
||||
<a th:href="@{/index}">
|
||||
<li class="logo hidden-xs">
|
||||
<span class="logo-lg">RuoYi</span>
|
||||
</li>
|
||||
</a>
|
||||
<div class="sidebar-collapse">
|
||||
<ul class="nav" id="side-menu">
|
||||
<li class="logo">
|
||||
<span class="logo-lg">RuoYi</span>
|
||||
</li>
|
||||
<li>
|
||||
<div class="user-panel">
|
||||
<a class="menuItem" title="个人中心" th:href="@{/system/user/profile}">
|
||||
@@ -45,10 +46,10 @@
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="active">
|
||||
<a href="index.html"><i class="fa fa-home"></i> <span class="nav-label">主页</span> <span class="fa arrow"></span></a>
|
||||
<li>
|
||||
<a href="#"><i class="fa fa-home"></i> <span class="nav-label">主页</span> <span class="fa arrow"></span></a>
|
||||
<ul class="nav nav-second-level">
|
||||
<li class="active"><a class="menuItem" th:href="@{/system/main}">了解若依</a></li>
|
||||
<li><a class="menuItem" th:href="@{/system/main}">了解若依</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li th:each="menu : ${menus}">
|
||||
@@ -62,7 +63,13 @@
|
||||
<a th:if="${#lists.isEmpty(cmenu.children)}" th:class="${cmenu.target == ''} ? |menuItem| : ${cmenu.target}" th:utext="${cmenu.menuName}" th:href="@{${cmenu.url}}">二级菜单</a>
|
||||
<a th:if="${not #lists.isEmpty(cmenu.children)}" href="#">[[${cmenu.menuName}]]<span class="fa arrow"></span></a>
|
||||
<ul th:if="${not #lists.isEmpty(cmenu.children)}" class="nav nav-third-level">
|
||||
<li th:each="emenu : ${cmenu.children}"><a th:class="${emenu.target == ''} ? |menuItem| : ${emenu.target}" th:text="${emenu.menuName}" th:href="@{${emenu.url}}">三级菜单</a></li>
|
||||
<li th:each="emenu : ${cmenu.children}">
|
||||
<a th:if="${#lists.isEmpty(emenu.children)}" th:class="${emenu.target == ''} ? |menuItem| : ${emenu.target}" th:text="${emenu.menuName}" th:href="@{${emenu.url}}">三级菜单</a>
|
||||
<a th:if="${not #lists.isEmpty(emenu.children)}" href="#">[[${emenu.menuName}]]<span class="fa arrow"></span></a>
|
||||
<ul th:if="${not #lists.isEmpty(emenu.children)}" class="nav nav-four-level">
|
||||
<li th:each="fmenu : ${emenu.children}"><a th:if="${#lists.isEmpty(fmenu.children)}" th:class="${fmenu.target == ''} ? |menuItem| : ${fmenu.target}" th:text="${fmenu.menuName}" th:href="@{${fmenu.url}}">四级菜单</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
@@ -75,6 +82,7 @@
|
||||
<li><a class="menuItem" th:href="@{/demo/form/button}">按钮</a></li>
|
||||
<li><a class="menuItem" th:href="@{/demo/form/grid}">栅格</a></li>
|
||||
<li><a class="menuItem" th:href="@{/demo/form/select}">下拉框</a></li>
|
||||
<li><a class="menuItem" th:href="@{/demo/form/timeline}">时间轴</a></li>
|
||||
<li><a class="menuItem" th:href="@{/demo/form/basic}">基本表单</a></li>
|
||||
<li><a class="menuItem" th:href="@{/demo/form/cards}">卡片列表</a></li>
|
||||
<li><a class="menuItem" th:href="@{/demo/form/jasny}">功能扩展</a></li>
|
||||
@@ -103,9 +111,11 @@
|
||||
<li><a class="menuItem" th:href="@{/demo/table/fixedColumns}">表格冻结列</a></li>
|
||||
<li><a class="menuItem" th:href="@{/demo/table/event}">自定义触发事件</a></li>
|
||||
<li><a class="menuItem" th:href="@{/demo/table/detail}">表格细节视图</a></li>
|
||||
<li><a class="menuItem" th:href="@{/demo/table/child}">表格父子视图</a></li>
|
||||
<li><a class="menuItem" th:href="@{/demo/table/image}">表格图片预览</a></li>
|
||||
<li><a class="menuItem" th:href="@{/demo/table/curd}">动态增删改查</a></li>
|
||||
<li><a class="menuItem" th:href="@{/demo/table/reorder}">表格拖拽操作</a></li>
|
||||
<li><a class="menuItem" th:href="@{/demo/table/editable}">表格行内编辑</a></li>
|
||||
<li><a class="menuItem" th:href="@{/demo/table/other}">表格其他操作</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
@@ -170,13 +180,13 @@
|
||||
</a>
|
||||
</div>
|
||||
<ul class="nav navbar-top-links navbar-right welcome-message">
|
||||
<li><a title="视频教程" href="http://doc.ruoyi.vip/#/standard/spjc" target="_blank"><i class="fa fa-video-camera"></i> 视频教程</a></li>
|
||||
<li><a title="视频教程" href="http://doc.ruoyi.vip/ruoyi/document/spjc.html" target="_blank"><i class="fa fa-video-camera"></i> 视频教程</a></li>
|
||||
<li><a title="开发文档" href="http://doc.ruoyi.vip" target="_blank"><i class="fa fa-question-circle"></i> 开发文档</a></li>
|
||||
<li><a title="全屏显示" href="javascript:void(0)" id="fullScreen"><i class="fa fa-arrows-alt"></i> 全屏显示</a></li>
|
||||
<li class="dropdown user-menu">
|
||||
<a href="javascript:void(0)" class="dropdown-toggle" data-hover="dropdown">
|
||||
<img th:src="(${user.avatar} == '') ? @{/img/profile.jpg} : @{${user.avatar}}" class="user-image">
|
||||
<span class="hidden-xs">[[${user.userName}]]</span>
|
||||
<span class="hidden-xs">[[${#strings.defaultString(user.userName, '-')}]]</span>
|
||||
</a>
|
||||
<ul class="dropdown-menu">
|
||||
<li class="mt5">
|
||||
@@ -184,9 +194,13 @@
|
||||
<i class="fa fa-user"></i> 个人中心</a>
|
||||
</li>
|
||||
<li>
|
||||
<a onclick="resetPwd()" class="menuItem">
|
||||
<a onclick="resetPwd()">
|
||||
<i class="fa fa-key"></i> 修改密码</a>
|
||||
</li>
|
||||
<li>
|
||||
<a onclick="switchSkin()">
|
||||
<i class="fa fa-dashboard"></i> 切换主题</a>
|
||||
</li>
|
||||
<li class="divider"></li>
|
||||
<li>
|
||||
<a th:href="@{logout}">
|
||||
@@ -209,7 +223,7 @@
|
||||
<button class="roll-nav roll-right tabRight">
|
||||
<i class="fa fa-forward"></i>
|
||||
</button>
|
||||
<a href="#" class="roll-nav roll-right tabReload"><i class="fa fa-refresh"></i> 刷新</a>
|
||||
<a href="javascript:void(0);" class="roll-nav roll-right tabReload"><i class="fa fa-refresh"></i> 刷新</a>
|
||||
</div>
|
||||
|
||||
<a id="ax_close_max" class="ax_close_max" href="#" title="关闭全屏"> <i class="fa fa-times-circle-o"></i> </a>
|
||||
@@ -232,16 +246,68 @@
|
||||
<script th:src="@{/js/jquery.contextMenu.min.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="@{/ruoyi/js/ry-ui.js?v=4.0.0}"></script>
|
||||
<script th:src="@{/ruoyi/js/ry-ui.js?v=4.2.0}"></script>
|
||||
<script th:src="@{/ruoyi/js/common.js?v=4.2.0}"></script>
|
||||
<script th:src="@{/ruoyi/index.js}"></script>
|
||||
<script th:src="@{/ajax/libs/fullscreen/jquery.fullscreen.js}"></script>
|
||||
<script th:inline="javascript">
|
||||
<script th:inline="javascript">
|
||||
var ctx = [[@{/}]];
|
||||
/*用户管理-重置密码*/
|
||||
// 皮肤缓存
|
||||
var skin = storage.get("skin");
|
||||
// history(表示去掉地址的#)否则地址以"#"形式展示
|
||||
var mode = "history";
|
||||
// 历史访问路径缓存
|
||||
var historyPath = storage.get("historyPath");
|
||||
// 排除非左侧菜单链接
|
||||
var excludesUrl = ["/system/user/profile"];
|
||||
|
||||
// 本地主题优先,未设置取系统配置
|
||||
if($.common.isNotEmpty(skin)){
|
||||
$("body").addClass(skin.split('|')[0]);
|
||||
$("body").addClass(skin.split('|')[1]);
|
||||
} else {
|
||||
$("body").addClass([[${sideTheme}]]);
|
||||
$("body").addClass([[${skinName}]]);
|
||||
}
|
||||
|
||||
/* 用户管理-重置密码 */
|
||||
function resetPwd() {
|
||||
var url = ctx + 'system/user/profile/resetPwd';
|
||||
$.modal.open("重置密码", url, '800', '500');
|
||||
$.modal.open("重置密码", url, '770', '380');
|
||||
}
|
||||
/* 切换主题 */
|
||||
function switchSkin() {
|
||||
layer.open({
|
||||
type : 2,
|
||||
shadeClose : true,
|
||||
title : "切换主题",
|
||||
area : ["530px", "386px"],
|
||||
content : [ctx + "system/switchSkin", 'no']
|
||||
})
|
||||
}
|
||||
|
||||
/** 刷新时访问路径页签 */
|
||||
function applyPath(url) {
|
||||
$('a[href$="' + decodeURI(url) + '"]').click();
|
||||
if($.inArray(url, excludesUrl)){
|
||||
$('a[href$="' + url + '"]').parent("li").addClass("selected").parents("li").addClass("active").end().parents("ul").addClass("in");
|
||||
}
|
||||
}
|
||||
|
||||
$(function() {
|
||||
if($.common.equals("history", mode) && window.performance.navigation.type == 1) {
|
||||
var url = storage.get('publicPath');
|
||||
if ($.common.isNotEmpty(url)) {
|
||||
applyPath(url);
|
||||
}
|
||||
} else {
|
||||
var hash = location.hash;
|
||||
if ($.common.isNotEmpty(hash)) {
|
||||
var url = hash.substring(1, hash.length);
|
||||
applyPath(url);
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -3,26 +3,24 @@
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">
|
||||
|
||||
<title>登录若依系统</title>
|
||||
<meta name="description" content="若依后台管理框架">
|
||||
<link href="../static/css/bootstrap.min.css" th:href="@{/css/bootstrap.min.css}" rel="stylesheet"/>
|
||||
<link href="../static/css/font-awesome.min.css" th:href="@{/css/font-awesome.min.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/ruoyi/css/ry-ui.css" th:href="@{/ruoyi/css/ry-ui.css?v=4.0.0}" rel="stylesheet"/>
|
||||
<!--[if lt IE 9]>
|
||||
<meta http-equiv="refresh" content="0;ie.html" />
|
||||
<![endif]-->
|
||||
<link href="../static/ruoyi/css/ry-ui.css" th:href="@{/ruoyi/css/ry-ui.css?v=4.2.0}" rel="stylesheet"/>
|
||||
<!-- 360浏览器急速模式 -->
|
||||
<meta name="renderer" content="webkit">
|
||||
<!-- 避免IE使用兼容模式 -->
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<link rel="shortcut icon" href="../static/favicon.ico" th:href="@{favicon.ico}"/>
|
||||
<style type="text/css">label.error { position:inherit; }</style>
|
||||
<script>
|
||||
if(window.top!==window.self){window.top.location=window.location};
|
||||
if(window.top!==window.self){alert('未登录或登录超时。请重新登录');window.top.location=window.location};
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body class="signin">
|
||||
|
||||
<div class="signinpanel">
|
||||
<div class="row">
|
||||
<div class="col-sm-7">
|
||||
@@ -39,18 +37,18 @@
|
||||
<li><i class="fa fa-arrow-circle-o-right m-r-xs"></i> Thymeleaf</li>
|
||||
<li><i class="fa fa-arrow-circle-o-right m-r-xs"></i> Bootstrap</li>
|
||||
</ul>
|
||||
<strong>还没有账号? <a href="#">立即注册»</a></strong>
|
||||
<strong th:if="${@config.getKey('sys.account.registerUser')}">还没有账号? <a th:href="@{/register}">立即注册»</a></strong>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-5">
|
||||
<form id="signupForm">
|
||||
<form id="signupForm" autocomplete="off">
|
||||
<h4 class="no-margins">登录:</h4>
|
||||
<p class="m-t-md">你若不离不弃,我必生死相依</p>
|
||||
<input type="text" name="username" class="form-control uname" placeholder="用户名" value="admin" />
|
||||
<input type="password" name="password" class="form-control pword" placeholder="密码" value="admin123" />
|
||||
<div class="row m-t" th:if="${captchaEnabled==true}">
|
||||
<div class="col-xs-6">
|
||||
<input type="text" name="validateCode" class="form-control code" placeholder="验证码" maxlength="5" autocomplete="off">
|
||||
<input type="text" name="validateCode" class="form-control code" placeholder="验证码" maxlength="5" />
|
||||
</div>
|
||||
<div class="col-xs-6">
|
||||
<a href="javascript:void(0);" title="点击更换验证码">
|
||||
@@ -80,7 +78,7 @@
|
||||
<script src="../static/ajax/libs/validate/messages_zh.min.js" th:src="@{/ajax/libs/validate/messages_zh.min.js}"></script>
|
||||
<script src="../static/ajax/libs/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/ruoyi/js/ry-ui.js" th:src="@{/ruoyi/js/ry-ui.js?v=4.0.0}"></script>
|
||||
<script src="../static/ruoyi/js/ry-ui.js" th:src="@{/ruoyi/js/ry-ui.js?v=4.2.0}"></script>
|
||||
<script src="../static/ruoyi/login.js" th:src="@{/ruoyi/login.js}"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -17,11 +17,9 @@
|
||||
<div class="col-sm-12">
|
||||
<blockquote class="text-warning" style="font-size:14px">
|
||||
领取阿里云通用云产品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>
|
||||
<br><a target="_blank" href="https://www.aliyun.com/minisite/goods?userCode=brki8iof">https://www.aliyun.com/minisite/goods?userCode=brki8iof</a><br>
|
||||
领取腾讯云通用云产品2860优惠券
|
||||
<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><br>
|
||||
阿里云Hi拼购 限量爆款 低至199元/年
|
||||
<br><a target="_blank" href="https://www.aliyun.com/acts/hi-group-buying?userCode=brki8iof">https://www.aliyun.com/acts/hi-group-buying?userCode=brki8iof</a>
|
||||
<h4 class="text-danger">云产品通用红包,可叠加官网常规优惠使用。(仅限新用户)</h4>
|
||||
</blockquote>
|
||||
|
||||
@@ -81,7 +79,7 @@
|
||||
<div class="ibox-content">
|
||||
<p><i class="fa fa-send-o"></i> 官网:<a href="http://www.ruoyi.vip" target="_blank">http://www.ruoyi.vip</a>
|
||||
</p>
|
||||
<p><i class="fa fa-qq"></i> QQ群:<s>满1389287</s> <s>满1679294</s> <s>满1529866</s> <s>满1772718</s> <s>满1366522</s> <s>满1382251</s> <a href="https://jq.qq.com/?_wv=1027&k=5fdQ1eG" target="_blank">1145125</a>
|
||||
<p><i class="fa fa-qq"></i> QQ群:<s>满1389287</s> <s>满1679294</s> <s>满1529866</s> <s>满1772718</s> <s>满1366522</s> <s>满1382251</s> <s>满1145125</s> <s>满86752435</s> <s>满134072510</s> <s>满210336300</s> <a href="https://jq.qq.com/?_wv=1027&k=5omzbKc" target="_blank">339522636</a>
|
||||
</p>
|
||||
<p><i class="fa fa-weixin"></i> 微信:<a href="javascript:;">/ *若依</a>
|
||||
</p>
|
||||
@@ -98,13 +96,125 @@
|
||||
<div class="ibox-content no-padding">
|
||||
<div class="panel-body">
|
||||
<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="#v42">v4.2.0</a><code class="pull-right">2020.03.23</code>
|
||||
</h5>
|
||||
</div>
|
||||
<div id="v42" class="panel-collapse collapse in">
|
||||
<div class="panel-body">
|
||||
<ol>
|
||||
<li>用户管理添加分配角色页面</li>
|
||||
<li>定时任务添加调度日志按钮</li>
|
||||
<li>新增是否开启用户注册功能</li>
|
||||
<li>新增页面滚动显示返回顶部按钮</li>
|
||||
<li>用户&角色&任务添加更多操作按钮</li>
|
||||
<li>iframe框架页会话过期弹出超时提示</li>
|
||||
<li>移动端登录不显示左侧菜单</li>
|
||||
<li>侧边栏添加一套深蓝色主题</li>
|
||||
<li>首页logo固定,不随菜单滚动</li>
|
||||
<li>支持mode配置history(表示去掉地址栏的#)</li>
|
||||
<li>任务分组字典翻译(调度日志详细)</li>
|
||||
<li>字典管理添加缓存读取</li>
|
||||
<li>字典数据列表标签显示样式</li>
|
||||
<li>参数管理支持缓存操作</li>
|
||||
<li>日期控件清空结束时间设置开始默认值为2099-12-31</li>
|
||||
<li>表格树添加获取数据后响应回调处理</li>
|
||||
<li>批量替换表前缀调整</li>
|
||||
<li>支持表格导入模板的弹窗表单加入其它输入控件</li>
|
||||
<li>表单重置刷新表格树</li>
|
||||
<li>新增支持导出数据字段排序</li>
|
||||
<li>新增表格参数(是否单选checkbox)</li>
|
||||
<li>druid未授权不允许访问</li>
|
||||
<li>表格树父节点兼容0,'0','',null</li>
|
||||
<li>表单必填的项添加星号</li>
|
||||
<li>修复select2不显示校验错误信息</li>
|
||||
<li>添加自定义HTML过滤器</li>
|
||||
<li>修复多数据源下开关关闭出现异常问题</li>
|
||||
<li>修复翻页记住选择项数据问题</li>
|
||||
<li>用户邮箱长度限制20</li>
|
||||
<li>修改错误页面返回主页出现嵌套问题</li>
|
||||
<li>表格浮动提示单双引号转义</li>
|
||||
<li>支持配置四级菜单</li>
|
||||
<li>升级shiro到最新版1.4.2 阻止rememberMe漏洞攻击</li>
|
||||
<li>升级summernote到最新版本v0.8.12</li>
|
||||
<li>导入Excel根据dateFormat属性格式处理</li>
|
||||
<li>修复War部署无法正常shutdown,ehcache内存泄漏</li>
|
||||
<li>修复代码生成短字段无法识别问题</li>
|
||||
<li>修复serviceImpl模版,修改方法判断日期错误</li>
|
||||
<li>代码生成模板增加导出功能日志记录</li>
|
||||
<li>代码生成唯一编号调整为tableId</li>
|
||||
<li>代码生成查询时忽略大小写</li>
|
||||
<li>代码生成支持翻页记住选中</li>
|
||||
<li>代码生成表注释未填写也允许导入</li>
|
||||
<li>Global全局配置类修改为注解,防止多环境配置下读取问题</li>
|
||||
<li>修复多表格情况下,firstLoad只对第一个表格生效</li>
|
||||
<li>处理Maven打包出现警告问题</li>
|
||||
<li>默认主题样式,防止网速慢情况下出现空白</li>
|
||||
<li>修复文件上传多级目录识别问题</li>
|
||||
<li>锚链接解码url,防止中文导致页面不能加载问题</li>
|
||||
<li>修复右键Tab页刷新事件重复请求问题</li>
|
||||
<li>角色禁用&菜单隐藏不查询权限</li>
|
||||
<li>其他细节优化</li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h5 class="panel-title">
|
||||
<a data-toggle="collapse" data-parent="#version" href="#v41">v4.1.0</a><code class="pull-right">2019.10.22</code>
|
||||
</h5>
|
||||
</div>
|
||||
<div id="v41" class="panel-collapse collapse">
|
||||
<div class="panel-body">
|
||||
<ol>
|
||||
<li>支持多表格实例操作</li>
|
||||
<li>浮动提示方法tooltip支持弹窗</li>
|
||||
<li>代码生成&字典数据支持模糊条件查询</li>
|
||||
<li>增加页签全屏方法</li>
|
||||
<li>增加清除表单验证错误信息方法</li>
|
||||
<li>支持iframe局部刷新页面</li>
|
||||
<li>支持在线切换主题</li>
|
||||
<li>修改图片预览设置的高宽参数颠倒问题</li>
|
||||
<li>操作日志新增解锁账户功能</li>
|
||||
<li>管理员用户&角色不允许操作</li>
|
||||
<li>去掉jsoup包调用自定义转义工具</li>
|
||||
<li>添加时间轴示例</li>
|
||||
<li>修复翻页记住选择时获取指定列值的问题</li>
|
||||
<li>代码生成sql脚本添加导出按钮</li>
|
||||
<li>添加表格父子视图示例</li>
|
||||
<li>添加表格行内编辑示例</li>
|
||||
<li>升级fastjson到最新版1.2.60 阻止漏洞攻击</li>
|
||||
<li>升级echarts到最新版4.2.1</li>
|
||||
<li>操作日志新增返回参数</li>
|
||||
<li>支持mybatis通配符扫描任意多个包</li>
|
||||
<li>权限验证多种情况处理</li>
|
||||
<li>修复树形类型的代码生成的部分必要属性无法显示</li>
|
||||
<li>修复非表格插件情况下重置出现异常</li>
|
||||
<li>修复富文本编辑器有序列表冲突</li>
|
||||
<li>代码生成表前缀配置支持多个</li>
|
||||
<li>修复自动去除表前缀配置无效问题</li>
|
||||
<li>菜单列表按钮数据可见不显示(权限标识控制)</li>
|
||||
<li>修复设置会话超时时间无效问题</li>
|
||||
<li>新增本地资源通用下载方法</li>
|
||||
<li>操作日志记录新增请求方式</li>
|
||||
<li>代码生成单选按钮属性重名修复</li>
|
||||
<li>优化select2下拉框宽度不会随浏览器改变</li>
|
||||
<li>修复代码生成树表异常</li>
|
||||
<li>其他细节优化</li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h5 class="panel-title">
|
||||
<a data-toggle="collapse" data-parent="#version" href="#v40">v4.0.0</a><code class="pull-right">2019.08.08</code>
|
||||
</h5>
|
||||
</div>
|
||||
<div id="v40" class="panel-collapse collapse in">
|
||||
<div id="v40" class="panel-collapse collapse">
|
||||
<div class="panel-body">
|
||||
<ol>
|
||||
<li>代码生成支持预览、编辑,保存方案</li>
|
||||
@@ -158,8 +268,8 @@
|
||||
<li>其他细节优化</li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h5 class="panel-title">
|
||||
|
||||
@@ -44,13 +44,16 @@
|
||||
<a class="btn btn-danger" onclick="$.operate.clean()" shiro:hasPermission="monitor:logininfor:remove">
|
||||
<i class="fa fa-trash"></i> 清空
|
||||
</a>
|
||||
<a class="btn btn-primary single disabled" onclick="unlock()" shiro:hasPermission="monitor:logininfor:unlock">
|
||||
<i class="fa fa-unlock"></i> 解锁
|
||||
</a>
|
||||
<a class="btn btn-warning" onclick="$.table.exportExcel()" shiro:hasPermission="monitor:logininfor:export">
|
||||
<i class="fa fa-download"></i> 导出
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="col-sm-12 select-table table-striped">
|
||||
<table id="bootstrap-table" data-mobile-responsive="true"></table>
|
||||
<table id="bootstrap-table"></table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -121,6 +124,10 @@
|
||||
};
|
||||
$.table.init(options);
|
||||
});
|
||||
|
||||
function unlock() {
|
||||
$.operate.post(prefix + "/unlock?loginName=" + $.table.selectColumns("loginName"));
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -14,7 +14,7 @@
|
||||
登录地址:<input type="text" name="ipaddr"/>
|
||||
</li>
|
||||
<li>
|
||||
操作人员:<input type="text" name="loginName"/>
|
||||
登录名称:<input type="text" name="loginName"/>
|
||||
</li>
|
||||
<li>
|
||||
<a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i> 搜索</a>
|
||||
@@ -32,7 +32,7 @@
|
||||
</div>
|
||||
|
||||
<div class="col-sm-12 select-table table-striped">
|
||||
<table id="bootstrap-table" data-mobile-responsive="true"></table>
|
||||
<table id="bootstrap-table"></table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -22,6 +22,11 @@
|
||||
<div class="form-control-static" th:text="${operLog.operUrl}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label">请求方式:</label>
|
||||
<div class="form-control-static" th:text="${operLog.requestMethod}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label">操作方法:</label>
|
||||
<div class="form-control-static" th:text="${operLog.method}">
|
||||
@@ -31,6 +36,10 @@
|
||||
<label class="col-sm-2 control-label">请求参数:</label>
|
||||
<div class="form-control-static"><pre id="operParam"></pre></div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label">返回参数:</label>
|
||||
<div class="form-control-static"><pre id="jsonResult"></pre></div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label">状态:</label>
|
||||
<div class="form-control-static" th:class="${operLog.status == 0 ? 'label label-primary' : 'label label-danger'}" th:text="${operLog.status == 0 ? '正常' : '异常'}">
|
||||
@@ -47,11 +56,17 @@
|
||||
<th:block th:include="include :: jsonview-js" />
|
||||
<script th:inline="javascript">
|
||||
$(function() {
|
||||
var json = [[${operLog.operParam}]];
|
||||
if ($.common.isNotEmpty(json) && json.length < 2000) {
|
||||
$("#operParam").JSONView(json);
|
||||
var operParam = [[${operLog.operParam}]];
|
||||
if ($.common.isNotEmpty(operParam) && operParam.length < 2000) {
|
||||
$("#operParam").JSONView(operParam);
|
||||
} else {
|
||||
$("#operParam").text(json);
|
||||
$("#operParam").text(operParam);
|
||||
}
|
||||
var jsonResult = [[${operLog.jsonResult}]];
|
||||
if ($.common.isNotEmpty(jsonResult) && jsonResult.length < 2000) {
|
||||
$("#jsonResult").JSONView(jsonResult);
|
||||
} else {
|
||||
$("#jsonResult").text(jsonResult);
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
@@ -56,7 +56,7 @@
|
||||
</div>
|
||||
|
||||
<div class="col-sm-12 select-table table-striped">
|
||||
<table id="bootstrap-table" data-mobile-responsive="true"></table>
|
||||
<table id="bootstrap-table"></table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -151,12 +151,13 @@
|
||||
function searchPre() {
|
||||
var data = {};
|
||||
data.businessTypes = $.common.join($('#businessTypes').selectpicker('val'));
|
||||
$.table.search('operlog-form', data);
|
||||
$.table.search('operlog-form', 'bootstrap-table', data);
|
||||
}
|
||||
|
||||
function resetPre() {
|
||||
$.form.reset();
|
||||
$("#operlog-form")[0].reset();
|
||||
$("#businessTypes").selectpicker('refresh');
|
||||
$.table.search('operlog-form', 'bootstrap-table');
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
|
||||
@@ -0,0 +1,83 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">
|
||||
<title>注册若依系统</title>
|
||||
<meta name="description" content="若依后台管理框架">
|
||||
<link href="../static/css/bootstrap.min.css" th:href="@{/css/bootstrap.min.css}" rel="stylesheet"/>
|
||||
<link href="../static/css/font-awesome.min.css" th:href="@{/css/font-awesome.min.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/ruoyi/css/ry-ui.css" th:href="@{/ruoyi/css/ry-ui.css?v=4.2.0}" rel="stylesheet"/>
|
||||
<!-- 360浏览器急速模式 -->
|
||||
<meta name="renderer" content="webkit">
|
||||
<!-- 避免IE使用兼容模式 -->
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<link rel="shortcut icon" href="../static/favicon.ico" th:href="@{favicon.ico}"/>
|
||||
<style type="text/css">label.error { position:inherit; }</style>
|
||||
</head>
|
||||
<body class="signin">
|
||||
<div class="signinpanel">
|
||||
<div class="row">
|
||||
<div class="col-sm-7">
|
||||
<div class="signin-info">
|
||||
<div class="logopanel m-b">
|
||||
<h1><img alt="[ 若依 ]" src="../static/ruoyi.png" th:src="@{/ruoyi.png}"></h1>
|
||||
</div>
|
||||
<div class="m-b"></div>
|
||||
<h4>欢迎使用 <strong>若依 后台管理系统</strong></h4>
|
||||
<ul class="m-b">
|
||||
<li><i class="fa fa-arrow-circle-o-right m-r-xs"></i> SpringBoot</li>
|
||||
<li><i class="fa fa-arrow-circle-o-right m-r-xs"></i> Mybatis</li>
|
||||
<li><i class="fa fa-arrow-circle-o-right m-r-xs"></i> Shiro</li>
|
||||
<li><i class="fa fa-arrow-circle-o-right m-r-xs"></i> Thymeleaf</li>
|
||||
<li><i class="fa fa-arrow-circle-o-right m-r-xs"></i> Bootstrap</li>
|
||||
</ul>
|
||||
<strong>已经注册过? <a th:href="@{/login}">直接登录»</a></strong>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-5">
|
||||
<form id="registerForm" autocomplete="off">
|
||||
<h4 class="no-margins">注册:</h4>
|
||||
<p class="m-t-md">你若不离不弃,我必生死相依</p>
|
||||
<input type="text" name="username" class="form-control uname" placeholder="用户名" maxlength="20" />
|
||||
<input type="password" name="password" class="form-control pword" placeholder="密码" maxlength="20" />
|
||||
<input type="password" name="confirmPassword" class="form-control pword" placeholder="确认密码" maxlength="20" />
|
||||
<div class="row m-t" th:if="${captchaEnabled==true}">
|
||||
<div class="col-xs-6">
|
||||
<input type="text" name="validateCode" class="form-control code" placeholder="验证码" maxlength="5" >
|
||||
</div>
|
||||
<div class="col-xs-6">
|
||||
<a href="javascript:void(0);" title="点击更换验证码">
|
||||
<img th:src="@{captcha/captchaImage(type=${captchaType})}" class="imgcode" width="85%"/>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="checkbox-custom" th:classappend="${captchaEnabled==false} ? 'm-t'">
|
||||
<input type="checkbox" id="acceptTerm" name="acceptTerm"> <label for="acceptTerm">我已阅读并同意</label>
|
||||
<a href="https://gitee.com/y_project/RuoYi/blob/master/README.md" target="_blank">使用条款</a>
|
||||
</div>
|
||||
<button class="btn btn-success btn-block" id="btnSubmit" data-loading="正在验证注册,请稍后...">注册</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<div class="signup-footer">
|
||||
<div class="pull-left">
|
||||
© 2019 All Rights Reserved. RuoYi <br>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script th:inline="javascript"> var ctx = [[@{/}]]; var captchaType = [[${captchaType}]]; </script>
|
||||
<!-- 全局js -->
|
||||
<script src="../static/js/jquery.min.js" th:src="@{/js/jquery.min.js}"></script>
|
||||
<script src="../static/js/bootstrap.min.js" th:src="@{/js/bootstrap.min.js}"></script>
|
||||
<!-- 验证插件 -->
|
||||
<script src="../static/ajax/libs/validate/jquery.validate.min.js" th:src="@{/ajax/libs/validate/jquery.validate.min.js}"></script>
|
||||
<script src="../static/ajax/libs/validate/messages_zh.min.js" th:src="@{/ajax/libs/validate/messages_zh.min.js}"></script>
|
||||
<script src="../static/ajax/libs/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/ruoyi/js/ry-ui.js" th:src="@{/ruoyi/js/ry-ui.js?v=4.2.0}"></script>
|
||||
<script src="../static/ruoyi/register.js" th:src="@{/ruoyi/register.js}"></script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,165 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta name="renderer" content="webkit">
|
||||
<title>主题选择</title>
|
||||
<!--[if lt IE 9]>
|
||||
<meta http-equiv="refresh" content="0;ie.html"/>
|
||||
<![endif]-->
|
||||
<link rel="shortcut icon" href="../static/favicon.ico" th:href="@{favicon.ico}"/>
|
||||
<link th:href="@{/css/bootstrap.min.css}" rel="stylesheet"/>
|
||||
<link th:href="@{/css/style.css}" rel="stylesheet"/>
|
||||
<style type="text/css">
|
||||
.list-unstyled{margin:10px;}
|
||||
.full-opacity-hover{opacity:1;filter:alpha(opacity=1);border:1px solid #fff}
|
||||
.full-opacity-hover:hover{border:1px solid #f00;}
|
||||
</style>
|
||||
</head>
|
||||
<body class="gray-bg">
|
||||
<ul class="list-unstyled clearfix">
|
||||
<li style="float:left; width: 33.33333%; padding: 5px;">
|
||||
<a href="javascript:" data-skin="skin-blue|theme-dark" style="display: block; box-shadow: 0 0 3px rgba(0,0,0,0.4)" class="clearfix full-opacity-hover">
|
||||
<span style="width: 20%; float: left; height: 13px; background: #367fa9"></span>
|
||||
<span style="width: 80%; float: left; height: 13px; background: #3c8dbc"></span>
|
||||
<span style="width: 20%; float: left; height: 30px; background: #2f4050"></span>
|
||||
<span style="width: 80%; float: left; height: 30px; background: #f4f5f7"></span>
|
||||
</a>
|
||||
<p class="text-center">蓝</p>
|
||||
</li>
|
||||
|
||||
<li style="float:left; width: 33.33333%; padding: 5px;">
|
||||
<a href="javascript:" data-skin="skin-green|theme-dark" style="display: block; box-shadow: 0 0 3px rgba(0,0,0,0.4)" class="clearfix full-opacity-hover">
|
||||
<span style="width: 20%; float: left; height: 13px; background: #008d4c"></span>
|
||||
<span style="width: 80%; float: left; height: 13px; background: #00a65a"></span>
|
||||
<span style="width: 20%; float: left; height: 30px; background: #222d32"></span>
|
||||
<span style="width: 80%; float: left; height: 30px; background: #f4f5f7"></span>
|
||||
</a>
|
||||
<p class="text-center">绿</p>
|
||||
</li>
|
||||
|
||||
<li style="float:left; width: 33.33333%; padding: 5px;">
|
||||
<a href="javascript:" data-skin="skin-purple|theme-dark" style="display: block; box-shadow: 0 0 3px rgba(0,0,0,0.4)" class="clearfix full-opacity-hover">
|
||||
<span style="width: 20%; float: left; height: 13px; background: #555299"></span>
|
||||
<span style="width: 80%; float: left; height: 13px; background: #605ca8"></span>
|
||||
<span style="width: 20%; float: left; height: 30px; background: #222d32"></span>
|
||||
<span style="width: 80%; float: left; height: 30px; background: #f4f5f7"></span>
|
||||
</a>
|
||||
<p class="text-center">紫</p>
|
||||
</li>
|
||||
|
||||
<li style="float:left; width: 33.33333%; padding: 5px;">
|
||||
<a href="javascript:" data-skin="skin-red|theme-dark" style="display: block; box-shadow: 0 0 3px rgba(0,0,0,0.4)" class="clearfix full-opacity-hover">
|
||||
<span style="width: 20%; float: left; height: 13px; background: #dd4b39"></span>
|
||||
<span style="width: 80%; float: left; height: 13px; background: #d73925"></span>
|
||||
<span style="width: 20%; float: left; height: 30px; background: #222d32"></span>
|
||||
<span style="width: 80%; float: left; height: 30px; background: #f4f5f7"></span>
|
||||
</a>
|
||||
<p class="text-center">红</p>
|
||||
</li>
|
||||
|
||||
<li style="float:left; width: 33.33333%; padding: 5px;">
|
||||
<a href="javascript:" data-skin="skin-yellow|theme-dark" style="display: block; box-shadow: 0 0 3px rgba(0,0,0,0.4)" class="clearfix full-opacity-hover">
|
||||
<span style="width: 20%; float: left; height: 13px; background: #f39c12"></span>
|
||||
<span style="width: 80%; float: left; height: 13px; background: #e08e0b"></span>
|
||||
<span style="width: 20%; float: left; height: 30px; background: #222d32"></span>
|
||||
<span style="width: 80%; float: left; height: 30px; background: #f4f5f7"></span>
|
||||
</a>
|
||||
<p class="text-center">黄</p>
|
||||
</li>
|
||||
|
||||
<li style="float:left; width: 33.33333%; padding: 5px;">
|
||||
<a href="javascript:" data-skin="skin-blue|theme-light" style="display: block; box-shadow: 0 0 3px rgba(0,0,0,0.4)" class="clearfix full-opacity-hover">
|
||||
<span style="width: 20%; float: left; height: 13px; background: #367fa9"></span>
|
||||
<span style="width: 80%; float: left; height: 13px; background: #3c8dbc"></span>
|
||||
<span style="width: 20%; float: left; height: 30px; background: #f9fafc"></span>
|
||||
<span style="width: 80%; float: left; height: 30px; background: #f4f5f7"></span>
|
||||
</a>
|
||||
<p class="text-center">蓝灰</p>
|
||||
</li>
|
||||
|
||||
<li style="float:left; width: 33.33333%; padding: 5px;">
|
||||
<a href="javascript:" data-skin="skin-green|theme-light" style="display: block; box-shadow: 0 0 3px rgba(0,0,0,0.4)" class="clearfix full-opacity-hover">
|
||||
<span style="width: 20%; float: left; height: 13px; background: #008d4c"></span>
|
||||
<span style="width: 80%; float: left; height: 13px; background: #00a65a"></span>
|
||||
<span style="width: 20%; float: left; height: 30px; background: #f9fafc"></span>
|
||||
<span style="width: 80%; float: left; height: 30px; background: #f4f5f7"></span>
|
||||
</a>
|
||||
<p class="text-center">绿灰</p>
|
||||
</li>
|
||||
|
||||
<li style="float:left; width: 33.33333%; padding: 5px;">
|
||||
<a href="javascript:" data-skin="skin-purple|theme-light" style="display: block; box-shadow: 0 0 3px rgba(0,0,0,0.4)" class="clearfix full-opacity-hover">
|
||||
<span style="width: 20%; float: left; height: 13px; background: #555299"></span>
|
||||
<span style="width: 80%; float: left; height: 13px; background: #605ca8"></span>
|
||||
<span style="width: 20%; float: left; height: 30px; background: #f9fafc"></span>
|
||||
<span style="width: 80%; float: left; height: 30px; background: #f4f5f7"></span>
|
||||
</a>
|
||||
<p class="text-center">紫灰</p>
|
||||
</li>
|
||||
|
||||
<li style="float:left; width: 33.33333%; padding: 5px;">
|
||||
<a href="javascript:" data-skin="skin-red|theme-light" style="display: block; box-shadow: 0 0 3px rgba(0,0,0,0.4)" class="clearfix full-opacity-hover">
|
||||
<span style="width: 20%; float: left; height: 13px; background: #dd4b39"></span>
|
||||
<span style="width: 80%; float: left; height: 13px; background: #d73925"></span>
|
||||
<span style="width: 20%; float: left; height: 30px; background: #f9fafc"></span>
|
||||
<span style="width: 80%; float: left; height: 30px; background: #f4f5f7"></span>
|
||||
</a>
|
||||
<p class="text-center">红灰</p>
|
||||
</li>
|
||||
|
||||
<li style="float:left; width: 33.33333%; padding: 5px;">
|
||||
<a href="javascript:" data-skin="skin-yellow|theme-light" style="display: block; box-shadow: 0 0 3px rgba(0,0,0,0.4)" class="clearfix full-opacity-hover">
|
||||
<span style="width: 20%; float: left; height: 13px; background: #f39c12"></span>
|
||||
<span style="width: 80%; float: left; height: 13px; background: #e08e0b"></span>
|
||||
<span style="width: 20%; float: left; height: 30px; background: #f9fafc"></span>
|
||||
<span style="width: 80%; float: left; height: 30px; background: #f4f5f7"></span>
|
||||
</a>
|
||||
<p class="text-center">黄灰</p>
|
||||
</li>
|
||||
|
||||
<li style="float:left; width: 33.33333%; padding: 5px;">
|
||||
<a href="javascript:" data-skin="skin-blue|theme-blue" style="display: block; box-shadow: 0 0 3px rgba(0,0,0,0.4)" class="clearfix full-opacity-hover">
|
||||
<span style="width: 20%; float: left; height: 13px; background: #367fa9"></span>
|
||||
<span style="width: 80%; float: left; height: 13px; background: #3c8dbc"></span>
|
||||
<span style="width: 20%; float: left; height: 30px; background: rgba(15,41,80,1)"></span>
|
||||
<span style="width: 80%; float: left; height: 30px; background: #f4f5f7"></span>
|
||||
</a>
|
||||
<p class="text-center">蓝浅(新)</p>
|
||||
</li>
|
||||
<li style="float:left; width: 33.33333%; padding: 5px;">
|
||||
<a href="javascript:" data-skin="skin-green|theme-blue" style="display: block; box-shadow: 0 0 3px rgba(0,0,0,0.4)" class="clearfix full-opacity-hover">
|
||||
<span style="width: 20%; float: left; height: 13px; background: #008d4c"></span>
|
||||
<span style="width: 80%; float: left; height: 13px; background: #00a65a"></span>
|
||||
<span style="width: 20%; float: left; height: 30px; background: rgba(15,41,80,1)"></span>
|
||||
<span style="width: 80%; float: left; height: 30px; background: #f4f5f7"></span>
|
||||
</a>
|
||||
<p class="text-center">绿浅(新)</p>
|
||||
</li>
|
||||
</ul>
|
||||
</body>
|
||||
<script th:src="@{/js/jquery.min.js}"></script>
|
||||
<script th:src="@{/ruoyi/js/common.js?v=4.2.0}"></script>
|
||||
<script type="text/javascript">
|
||||
//皮肤样式列表
|
||||
var skins = ["skin-blue", "skin-green", "skin-purple", "skin-red", "skin-yellow"];
|
||||
|
||||
// 主题样式列表
|
||||
var themes = ["theme-dark", "theme-light", "theme-blue"];
|
||||
|
||||
$("[data-skin]").on('click',
|
||||
function(e) {
|
||||
var skin = $(this).data('skin');
|
||||
$.each(skins, function(i) {
|
||||
parent.$("body").removeClass(skins[i]);
|
||||
});
|
||||
$.each(themes, function(i) {
|
||||
parent.$("body").removeClass(themes[i]);
|
||||
});
|
||||
parent.$("body").addClass(skin.split('|')[0]);
|
||||
parent.$("body").addClass(skin.split('|')[1]);
|
||||
storage.set('skin', skin);
|
||||
});
|
||||
</script>
|
||||
</html>
|
||||
@@ -7,19 +7,19 @@
|
||||
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
|
||||
<form class="form-horizontal m" id="form-config-add" name="form-config-add">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">参数名称:</label>
|
||||
<label class="col-sm-3 control-label is-required">参数名称:</label>
|
||||
<div class="col-sm-8">
|
||||
<input id="configName" name="configName" class="form-control" type="text" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">参数键名:</label>
|
||||
<label class="col-sm-3 control-label is-required">参数键名:</label>
|
||||
<div class="col-sm-8">
|
||||
<input id="configKey" name="configKey" class="form-control" type="text" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">参数键值:</label>
|
||||
<label class="col-sm-3 control-label is-required">参数键值:</label>
|
||||
<div class="col-sm-8">
|
||||
<input id="configValue" name="configValue" class="form-control" type="text" required>
|
||||
</div>
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user