Compare commits
126 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
54ba9b8c02 | ||
![]() |
e728c37b64 | ||
![]() |
0eaeba0298 | ||
![]() |
7b6ed52181 | ||
![]() |
72868aeb6f | ||
![]() |
c0afd904d0 | ||
![]() |
cac84c1bab | ||
![]() |
fb4f63c883 | ||
![]() |
66ebd480e1 | ||
![]() |
758dd95c07 | ||
![]() |
c0ce3fd7c2 | ||
![]() |
9b68013b2a | ||
![]() |
c34d9f0c09 | ||
![]() |
3b968d735f | ||
![]() |
b2a491c99a | ||
![]() |
13fffa0ba8 | ||
![]() |
d9fbae538b | ||
![]() |
adb22846a4 | ||
![]() |
5bef005075 | ||
![]() |
ad5cd1921e | ||
![]() |
c6c8f8b3fb | ||
![]() |
e9550ab5bd | ||
![]() |
447542656a | ||
![]() |
32e448b6b4 | ||
![]() |
116bed00a5 | ||
![]() |
4f5bf990bf | ||
![]() |
0144cb855f | ||
![]() |
e8f9bfb5c6 | ||
![]() |
56b1354496 | ||
![]() |
8e1a89bcbe | ||
![]() |
4c9bfd8683 | ||
![]() |
ec6d84aa88 | ||
![]() |
05c29a2a6c | ||
![]() |
18ef1ea816 | ||
![]() |
3c574b45dc | ||
![]() |
0e08cc7ca4 | ||
![]() |
b2d832edab | ||
![]() |
60889185d8 | ||
![]() |
b95280aba2 | ||
![]() |
96b2c0d9b7 | ||
![]() |
f0efa914fe | ||
![]() |
edb1c614d0 | ||
![]() |
61c2e96aaa | ||
![]() |
f31e6bd1bb | ||
![]() |
f5805fd79e | ||
![]() |
55913e8707 | ||
![]() |
45f71a5125 | ||
![]() |
4218cf7cfd | ||
![]() |
4963454f23 | ||
![]() |
85cf318a94 | ||
![]() |
82a0eaed4a | ||
![]() |
f6ce55be47 | ||
![]() |
fd37e8b4a7 | ||
![]() |
d43fea60e2 | ||
![]() |
05075e21a3 | ||
![]() |
f2f6b25ed2 | ||
![]() |
4a5ea50a14 | ||
![]() |
81c1ffb07e | ||
![]() |
6dd8bbfc38 | ||
![]() |
bcb6222c61 | ||
![]() |
0ce40fc039 | ||
![]() |
0cde5c2446 | ||
![]() |
69714747d7 | ||
![]() |
83b90c3267 | ||
![]() |
5b19d33af9 | ||
![]() |
c8fd0b0470 | ||
![]() |
8c8d53a9cc | ||
![]() |
f84b77993c | ||
![]() |
192c0c5241 | ||
![]() |
92d121175d | ||
![]() |
d6e599d6ac | ||
![]() |
a4c8026265 | ||
![]() |
90022df5a6 | ||
![]() |
0699c2350a | ||
![]() |
fd4fe83e9f | ||
![]() |
4933ea6d2f | ||
![]() |
07ddbfeabf | ||
![]() |
8db4a059d9 | ||
![]() |
11a59e7f77 | ||
![]() |
f2f27c7ea3 | ||
![]() |
e3be485727 | ||
![]() |
752dd06cd9 | ||
![]() |
a2d0fd7057 | ||
![]() |
09b41e8b24 | ||
![]() |
40835fa733 | ||
![]() |
b838533558 | ||
![]() |
6994ee771c | ||
![]() |
7be8b2fbe1 | ||
![]() |
61bc1891c3 | ||
![]() |
b7f015cd07 | ||
![]() |
d18cd2e662 | ||
![]() |
5f941c6b87 | ||
![]() |
7d91e58594 | ||
![]() |
d7f58f4128 | ||
![]() |
52b9f43ea0 | ||
![]() |
ff6845f5ce | ||
![]() |
e4e2faa93b | ||
![]() |
8dd40158ec | ||
![]() |
64e6ae4fe4 | ||
![]() |
f05195d373 | ||
![]() |
fbeacbb026 | ||
![]() |
24d21eda23 | ||
![]() |
2cb417dab2 | ||
![]() |
6c89c9896a | ||
![]() |
705e627908 | ||
![]() |
049ca00930 | ||
![]() |
43dd9ae664 | ||
![]() |
8445d6a078 | ||
![]() |
bf58ce6067 | ||
![]() |
364b471d2b | ||
![]() |
c2deb14284 | ||
![]() |
2ebedeb5df | ||
![]() |
e4585f5dcb | ||
![]() |
62db29627a | ||
![]() |
b15106d139 | ||
![]() |
d7a2e80bf6 | ||
![]() |
e405becf9a | ||
![]() |
e8d8325ead | ||
![]() |
c21eb3507b | ||
![]() |
c92059d356 | ||
![]() |
b36ba5a16c | ||
![]() |
cc74bde7be | ||
![]() |
7358a2027d | ||
![]() |
21ea871ada | ||
![]() |
1207052749 | ||
![]() |
6f8a388e8e |
@ -1,11 +1,11 @@
|
||||
<p align="center">
|
||||
<img alt="logo" src="https://oscimg.oschina.net/oscnet/up-dd77653d7c9f197dd9d93684f3c8dcfbab6.png">
|
||||
</p>
|
||||
<h1 align="center" style="margin: 30px 0 30px; font-weight: bold;">RuoYi v4.7.7</h1>
|
||||
<h1 align="center" style="margin: 30px 0 30px; font-weight: bold;">RuoYi v4.7.9</h1>
|
||||
<h4 align="center">基于SpringBoot开发的轻量级Java快速开发框架</h4>
|
||||
<p align="center">
|
||||
<a href="https://gitee.com/y_project/RuoYi/stargazers"><img src="https://gitee.com/y_project/RuoYi/badge/star.svg?theme=gvp"></a>
|
||||
<a href="https://gitee.com/y_project/RuoYi"><img src="https://img.shields.io/badge/RuoYi-v4.7.7-brightgreen.svg"></a>
|
||||
<a href="https://gitee.com/y_project/RuoYi"><img src="https://img.shields.io/badge/RuoYi-v4.7.9-brightgreen.svg"></a>
|
||||
<a href="https://gitee.com/y_project/RuoYi/blob/master/LICENSE"><img src="https://img.shields.io/github/license/mashape/apistatus.svg"></a>
|
||||
</p>
|
||||
|
||||
@ -99,4 +99,4 @@
|
||||
|
||||
## 若依交流群
|
||||
|
||||
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) [](https://jq.qq.com/?_wv=1027&k=qPIKBb7s) [](https://jq.qq.com/?_wv=1027&k=4NsjKbtU) [](https://jq.qq.com/?_wv=1027&k=VD2pkz2G) [](https://jq.qq.com/?_wv=1027&k=HlshFwkJ) [](https://jq.qq.com/?_wv=1027&k=0ARRrO9V) [](https://jq.qq.com/?_wv=1027&k=up9k3ZXJ) [](https://jq.qq.com/?_wv=1027&k=540WfdEr) [](https://jq.qq.com/?_wv=1027&k=ss91fC4t) [](https://jq.qq.com/?_wv=1027&k=Cqd66IKe) [](https://jq.qq.com/?_wv=1027&k=7FplYUnR)
|
||||
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) [](https://jq.qq.com/?_wv=1027&k=qPIKBb7s) [](https://jq.qq.com/?_wv=1027&k=4NsjKbtU) [](https://jq.qq.com/?_wv=1027&k=VD2pkz2G) [](https://jq.qq.com/?_wv=1027&k=HlshFwkJ) [](https://jq.qq.com/?_wv=1027&k=0ARRrO9V) [](https://jq.qq.com/?_wv=1027&k=up9k3ZXJ) [](https://jq.qq.com/?_wv=1027&k=540WfdEr) [](https://jq.qq.com/?_wv=1027&k=ss91fC4t) [](https://jq.qq.com/?_wv=1027&k=Cqd66IKe) [](https://jq.qq.com/?_wv=1027&k=7FplYUnR) [](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=lqMHu_5Fskm7H2S1vNAQTtzAUokVydwc&authKey=ptw0Fpch5pbNocML3CIJKKqZBaq2DI7cusKuzIgfMNiY3t9Pvd9hP%2BA8WYx3yaY1&noverify=0&group_code=174942938) [](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=blYlRDmwZXSXI5pVrPPU7ZJ1stFJ6Q2Q&authKey=ForGBWffHVlPt9NE3d7g4DoOIouBh%2BqvAj2lp1CLReHfZAUaK7SRrdwsChKpRJDJ&noverify=0&group_code=287843737) [](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=KTVAIhggR3rR3uZWK9A8kR4yYNREQ4jo&authKey=An4DUV9e7uK8I8VgBbp949z0ypQoDrOoqvVg%2FWOr2vuNNDMZUAMPvqHor6TFMIgz&noverify=0&group_code=232896766)
|
62
pom.xml
@ -5,45 +5,91 @@
|
||||
|
||||
<groupId>com.ruoyi</groupId>
|
||||
<artifactId>ruoyi</artifactId>
|
||||
<version>4.7.7</version>
|
||||
<version>4.7.9</version>
|
||||
|
||||
<name>ruoyi</name>
|
||||
<url>http://www.ruoyi.vip</url>
|
||||
<description>若依管理系统</description>
|
||||
|
||||
<properties>
|
||||
<ruoyi.version>4.7.7</ruoyi.version>
|
||||
<ruoyi.version>4.7.9</ruoyi.version>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
|
||||
<java.version>1.8</java.version>
|
||||
<maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>
|
||||
<shiro.version>1.10.1</shiro.version>
|
||||
<spring-boot.version>2.5.15</spring-boot.version>
|
||||
<shiro.version>1.13.0</shiro.version>
|
||||
<thymeleaf.extras.shiro.version>2.1.0</thymeleaf.extras.shiro.version>
|
||||
<druid.version>1.2.16</druid.version>
|
||||
<druid.version>1.2.23</druid.version>
|
||||
<bitwalker.version>1.21</bitwalker.version>
|
||||
<kaptcha.version>2.3.3</kaptcha.version>
|
||||
<swagger.version>3.0.0</swagger.version>
|
||||
<pagehelper.boot.version>1.4.6</pagehelper.boot.version>
|
||||
<pagehelper.boot.version>1.4.7</pagehelper.boot.version>
|
||||
<fastjson.version>1.2.83</fastjson.version>
|
||||
<oshi.version>6.4.1</oshi.version>
|
||||
<commons.io.version>2.11.0</commons.io.version>
|
||||
<oshi.version>6.6.5</oshi.version>
|
||||
<commons.io.version>2.16.1</commons.io.version>
|
||||
<poi.version>4.1.2</poi.version>
|
||||
<velocity.version>2.3</velocity.version>
|
||||
<!-- override dependency version -->
|
||||
<tomcat.version>9.0.96</tomcat.version>
|
||||
<logback.version>1.2.13</logback.version>
|
||||
<spring-framework.version>5.3.39</spring-framework.version>
|
||||
</properties>
|
||||
|
||||
<!-- 依赖声明 -->
|
||||
<dependencyManagement>
|
||||
<dependencies>
|
||||
|
||||
<!-- 覆盖SpringFramework的依赖配置-->
|
||||
<dependency>
|
||||
<groupId>org.springframework</groupId>
|
||||
<artifactId>spring-framework-bom</artifactId>
|
||||
<version>${spring-framework.version}</version>
|
||||
<type>pom</type>
|
||||
<scope>import</scope>
|
||||
</dependency>
|
||||
|
||||
<!-- SpringBoot的依赖配置-->
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-dependencies</artifactId>
|
||||
<version>2.5.14</version>
|
||||
<version>${spring-boot.version}</version>
|
||||
<type>pom</type>
|
||||
<scope>import</scope>
|
||||
</dependency>
|
||||
|
||||
<!-- 覆盖logback的依赖配置-->
|
||||
<dependency>
|
||||
<groupId>ch.qos.logback</groupId>
|
||||
<artifactId>logback-core</artifactId>
|
||||
<version>${logback.version}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>ch.qos.logback</groupId>
|
||||
<artifactId>logback-classic</artifactId>
|
||||
<version>${logback.version}</version>
|
||||
</dependency>
|
||||
|
||||
<!-- 覆盖tomcat的依赖配置-->
|
||||
<dependency>
|
||||
<groupId>org.apache.tomcat.embed</groupId>
|
||||
<artifactId>tomcat-embed-core</artifactId>
|
||||
<version>${tomcat.version}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.apache.tomcat.embed</groupId>
|
||||
<artifactId>tomcat-embed-el</artifactId>
|
||||
<version>${tomcat.version}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.apache.tomcat.embed</groupId>
|
||||
<artifactId>tomcat-embed-websocket</artifactId>
|
||||
<version>${tomcat.version}</version>
|
||||
</dependency>
|
||||
|
||||
<!-- 阿里数据库连接池 -->
|
||||
<dependency>
|
||||
<groupId>com.alibaba</groupId>
|
||||
|
@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<artifactId>ruoyi</artifactId>
|
||||
<groupId>com.ruoyi</groupId>
|
||||
<version>4.7.7</version>
|
||||
<version>4.7.9</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<packaging>jar</packaging>
|
||||
@ -74,7 +74,7 @@
|
||||
<plugin>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-maven-plugin</artifactId>
|
||||
<version>2.1.1.RELEASE</version>
|
||||
<version>2.5.15</version>
|
||||
<configuration>
|
||||
<fork>true</fork> <!-- 如果没有该配置,devtools不会生效 -->
|
||||
</configuration>
|
||||
@ -123,6 +123,7 @@
|
||||
<exclude>**/*.min.js</exclude>
|
||||
<exclude>**/*.min.css</exclude>
|
||||
<exclude>**/fileinput.js</exclude>
|
||||
<exclude>**/validate/**</exclude>
|
||||
<exclude>**/bootstrap-table/**</exclude>
|
||||
</excludes>
|
||||
</configuration>
|
||||
|
@ -16,6 +16,7 @@ import com.ruoyi.common.annotation.Excel;
|
||||
import com.ruoyi.common.annotation.Excel.ColumnType;
|
||||
import com.ruoyi.common.core.controller.BaseController;
|
||||
import com.ruoyi.common.core.domain.AjaxResult;
|
||||
import com.ruoyi.common.core.domain.BaseEntity;
|
||||
import com.ruoyi.common.core.page.PageDomain;
|
||||
import com.ruoyi.common.core.page.TableDataInfo;
|
||||
import com.ruoyi.common.core.page.TableSupport;
|
||||
@ -126,6 +127,22 @@ public class DemoTableController extends BaseController
|
||||
columns.add(new UserTableColumn("用户状态", "status"));
|
||||
}
|
||||
|
||||
private final static List<DocumentModel> documents = new ArrayList<DocumentModel>();
|
||||
{
|
||||
documents.add(new DocumentModel(1, "247-XW·2024-D10-0001", "新闻热线[2024]000001", "索尼射击游戏《Concord》停止运营,玩家将获全额退款", "索尼宣布多人射击游戏《Concord》将于9月6日停止运营,玩家将获得全额退款。游戏总监Ryan Ellis在给玩家的信中表示,这款游戏首次发布“并没有像我们预期的那样顺利”。《Concord》的开发历时8年,投资超过1.5亿美元。游戏在Steam平台的售价为40美元,采用买断制销售模式。据SteamDB统计,游戏上市后的最高同时在线人数为697人。"));
|
||||
documents.add(new DocumentModel(2, "247-XW·2024-D30-0002", "新闻热线[2024]000002", "网红账号被封,央媒:如此炫富毒瘤早就该拔了", "在社交平台上分享自己的生活日常,本来无可厚非。但无底线地展示物欲、宣扬拜金,取笑甚至嘲讽工薪者的烟火生活,就会遮蔽普通人的平凡质朴和坚韧奋斗,在无形中消解芸芸众生脚踏实地、自立自强的社会正气。对这种助长金钱至上、刺激公众焦虑,既污染网络生态,又撕裂社会和谐的炫富“毒瘤”,必须坚决拔除之。在国家有关部门的部署下,近日,多个网络平台开展“不良价值导向内容专项治理”行动,对“奢靡浪费”“炫富拜金”等问题从严打击,倡导理性、文明的消费观和价值观。"));
|
||||
documents.add(new DocumentModel(3, "CT01-XW·2024-Y-0003", "新闻热线[2024]000003", "重庆一夫妻被骗至缅甸,家属:两人已被解救,预计很快能回国", "5月25日,重庆一对夫妻在前往泰国后失联,疑被诈骗集团骗至缅甸的消息引发广泛关注。警方已对此事立案调查,而这对夫妻的亲属则每天生活在焦急和不安之中。亲属:家都瘫痪了,事情一经曝光,迅速登上了热搜,成为公众热议的话题。据了解,这对夫妻原计划是去泰国谈生意,但不幸的是,他们的泰国之行变成了一场噩梦。亲属李先生透露,4月14日,他们夫妻二人抵达泰国,不久后便疑似被人以10万元的价格卖到缅甸,目前被困在缅甸妙瓦底的一个电信诈骗园区。"));
|
||||
documents.add(new DocumentModel(4, "CT01-XW·2024-Y-0004", "新闻热线[2024]000004", "江滨社区联合派出所、金霞消防站开展电动自行车安全隐患夜查活动", "近日,长沙市开福区江滨社区联合派出所、金霞消防站深入居民小区、单位场所,以电动车自行车火灾防范为重点,开展消防安全夜查行动。此次夜查紧紧围绕老旧居民区、“三合一”场所、沿街门店、夜间经营使用场所等场所开展监督检查,重点检查电动自行车违规停放充电、堵塞疏散通道和安全出口,架空层违规作为电动自行车停放充电场所,电动自行车违规“进楼入户”“飞线充电”,电动自行车擅自改装等五大类问题。"));
|
||||
documents.add(new DocumentModel(5, "CT01-XW·2024-Y-0005", "新闻热线[2024]000005", "《黑神话》让海外玩家迷上“悟空”", "备受全球玩家瞩目的首款国产3A游戏《黑神话:悟空》日前正式发布。精美绝伦的东方美学世界、精彩纷呈的中国神话故事、酣畅淋漓的游戏体验,这款游戏为全球玩家带来一场视觉与文化的双重盛宴。从“悟空”成功出海的背后,海外人士看到了中国游戏产业的巨大进步,感受到了中国文化的多元精彩,并对下一个“悟空”的诞生及更多中国文化产品走向世界充满期待。"));
|
||||
documents.add(new DocumentModel(6, "CT01-XW·2024-Y-0006", "新闻热线[2024]000006", "市场状况充满挑战!极星宣布裁员全球约15%的员工", "据路透社报道,极星周五以“充满挑战的市场状况”为由,宣布计划在全球范围内裁减约450个职位。此次裁员之际,许多人都对电动汽车需求降温表示担忧,而且极星预计汽车业务最早将在2025年开始实现收支平衡。极星发言人表示:“作为该商业计划的一部分,我们需要调整我们的业务和运营规模。” “这涉及减少外部支出,遗憾的是,还包括我们的员工数量。”该公司还表示,希望减少对沃尔沃及其母公司吉利外部融资的依赖,最近还表示希望削减成本并提高电动汽车的利润率。"));
|
||||
documents.add(new DocumentModel(7, "CT01-XW·2024-Y-0007", "新闻热线[2024]000007", "浙江隐秘富豪涉百亿非法集资案,部分资金流入新造车公司", "5月10日、11日,上海北广投资管理有限公司(下称“北广投”)非法集资案在上海黄浦区人民法院一审公开开庭审理,北广投实控人周敏、法定代表人朱江等30余名中高管被控非法吸收公众存款罪。根据财新报道,这一案件中,非法集资的资金有部分流入了两家新能源车企——爱驰汽车、万象汽车。同时,有多位投资人引述与经侦部门沟通时的说法称,该案事发时未兑付金额有130余亿元,其中去往广微控股45亿元、万象汽车63亿元、爱驰汽车15亿元。"));
|
||||
documents.add(new DocumentModel(8, "CT01-XW·2024-Y-0008", "新闻热线[2024]000008", "特斯拉宣布Model Y升级:搭载HW4.0硬件,售价仍25.89万元起", "2月1日,特斯拉官方宣布ModelY升级。外观上,新增ModelY专属色“快银车漆”,并采用烈焰红代替中国红、星空灰代替冷光银;性能上,ModelY全系配备全新一代自动辅助驾驶硬件(HW4.0),通过搭载超远距离双目摄像头,ModelY的最远探测距离达424米。由此,特斯拉全系车型均配备了自动辅助驾驶硬件HW4.0。在售价方面,特斯拉中国官网显示,ModelY车型依然保持原价。ModelY后轮驱动版25.89万元起、ModelY长续航版29.99万元起、ModelY高性能版售价36.39万元起。"));
|
||||
documents.add(new DocumentModel(9, "CT01-XW·2024-D10-0009", "新闻热线[2024]000009", "华为手机归来,谁最受伤?", "低迷周期下的智能手机市场在2023年下半年迎来了华为的回归,这也给本就竞争激烈的市场环境带来了更大变数。1月29日,有消息称,华为已注册“星耀手机”品牌商标,定位中端手机市场,但上述消息并未获得华为方面确认。“目前星耀的相关信息我们看到了,但是没有获得产品信息以及启动线下铺货的通知。对于和其他品牌的二选一问题,听其他省份的经销商说过,但目前(华为渠道)这边也没有更多动作。”一位广东区域的华为核心经销商对记者说。但华为手机的反扑已经开始。在多家调研机构公布的2023年四季度智能手机出货数据中,华为手机的量正在明显上升,当季增幅在35%到47%之间。不过,从全年数据来看,并未登上前五榜单。"));
|
||||
documents.add(new DocumentModel(10, "CT01-XW·2024-D10-0010", "新闻热线[2024]000010", "疯狂裁员的硅谷大厂:除了AI,其它都是将就", "放眼望去,近期科技企业财报形势一片大好,裁员浪潮却仍在不断蔓延。国内职场动态看脉脉,那硅谷裁员情况就得看layoff.fyi了。数据显示,2024年,103家科技企业进行了裁员,28963位员工失去了饭碗。其中,电子支付公司PayPal大笔一挥,裁掉2500人,微软则在开年就裁掉1900人。回望2023年,谷歌、Meta、亚马逊、微软均为裁员重灾区,裁员人数在一万左右。具体而言,谷歌近日披露的财报指出,2023年谷歌解雇了12000多名员工,光是在遣散费和其他费用上就花费了21亿美元。而且裁员费用还在不断增加,2024年刚过去一个月,谷歌就已经花费了7亿美元用来裁员。"));
|
||||
documents.add(new DocumentModel(11, "CT01-XW·2024-D30-0011", "新闻热线[2024]000011", "国产手机品牌重新崛起背后:市场正在逐步恢复活力,竞争也愈发激烈", "2024年伊始,随着全球经济的逐渐复苏,手机消费市场也展现出勃勃生机。中国信通院最新数据显示,2023年中国市场手机出货量实现了6.5%的同比增长,其中5G手机增长势头更为强劲,占比高达82.8%。1月25日,国际数据公司(IDC)发布了最新手机季度跟踪报告,揭示了中国智能手机市场在2023年第四季度的出货量情况。报告显示,该季度中国智能手机市场出货量达到了约7363万台,同比增长1.2%。这是在连续十个季度同比下降后,中国智能手机市场首次实现反弹。这一积极信号表明,市场正在逐步恢复活力,各大品牌之间的竞争也愈发激烈。"));
|
||||
documents.add(new DocumentModel(12, "CT01-XW·2024-D30-0012", "新闻热线[2024]000012", "SpaceX将于1月31日向国际空间站发射天鹅号货运飞船", "1月29日消息,美国太空探索技术公司SpaceX计划于当地时间1月30日,利用“猎鹰9号”火箭从佛罗里达州肯尼迪航天中心发射诺斯罗普·格鲁曼公司的“天鹅号”货运飞船至国际空间站。此次任务是执行NG-20商业补给,将运送约8200多磅的物资、设备及科学实验器材。"));
|
||||
}
|
||||
|
||||
/**
|
||||
* 搜索相关
|
||||
*/
|
||||
@ -209,6 +226,15 @@ public class DemoTableController extends BaseController
|
||||
return prefix + "/remember";
|
||||
}
|
||||
|
||||
/**
|
||||
* 表格保存状态
|
||||
*/
|
||||
@GetMapping("/cookie")
|
||||
public String cookie()
|
||||
{
|
||||
return prefix + "/cookie";
|
||||
}
|
||||
|
||||
/**
|
||||
* 跳转至指定页
|
||||
*/
|
||||
@ -390,6 +416,15 @@ public class DemoTableController extends BaseController
|
||||
return prefix + "/dynamicColumns";
|
||||
}
|
||||
|
||||
/**
|
||||
* 表格虚拟滚动
|
||||
*/
|
||||
@GetMapping("/virtualScroll")
|
||||
public String virtualScroll()
|
||||
{
|
||||
return prefix + "/virtualScroll";
|
||||
}
|
||||
|
||||
/**
|
||||
* 自定义视图分页
|
||||
*/
|
||||
@ -399,6 +434,15 @@ public class DemoTableController extends BaseController
|
||||
return prefix + "/customView";
|
||||
}
|
||||
|
||||
/**
|
||||
* 全文索引
|
||||
*/
|
||||
@GetMapping("/textSearch")
|
||||
public String textSearch()
|
||||
{
|
||||
return prefix + "/textSearch";
|
||||
}
|
||||
|
||||
/**
|
||||
* 异步加载表格树
|
||||
*/
|
||||
@ -473,6 +517,57 @@ public class DemoTableController extends BaseController
|
||||
return rspData;
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询全文索引数据
|
||||
*/
|
||||
@PostMapping("/text/list")
|
||||
@ResponseBody
|
||||
public TableDataInfo textList(BaseEntity baseEntity)
|
||||
{
|
||||
TableDataInfo rspData = new TableDataInfo();
|
||||
List<DocumentModel> documentList = new ArrayList<DocumentModel>(Arrays.asList(new DocumentModel[documents.size()]));
|
||||
Collections.copy(documentList, documents);
|
||||
// 查询条件过滤
|
||||
if (StringUtils.isNotEmpty(baseEntity.getSearchValue()))
|
||||
{
|
||||
documentList.clear();
|
||||
for (DocumentModel document : documents)
|
||||
{
|
||||
boolean indexFlag = false;
|
||||
if (document.getTitle().contains(baseEntity.getSearchValue()))
|
||||
{
|
||||
indexFlag = true;
|
||||
document.setTitle(document.getTitle().replace(baseEntity.getSearchValue(), "<font color=\"red\">" + baseEntity.getSearchValue() + "</font>"));
|
||||
}
|
||||
if (document.getContent().contains(baseEntity.getSearchValue()))
|
||||
{
|
||||
indexFlag = true;
|
||||
document.setContent(document.getContent().replace(baseEntity.getSearchValue(), "<font color=\"red\">" + baseEntity.getSearchValue() + "</font>"));
|
||||
}
|
||||
if (indexFlag)
|
||||
{
|
||||
documentList.add(document);
|
||||
}
|
||||
}
|
||||
}
|
||||
PageDomain pageDomain = TableSupport.buildPageRequest();
|
||||
if (null == pageDomain.getPageNum() || null == pageDomain.getPageSize())
|
||||
{
|
||||
rspData.setRows(documentList);
|
||||
rspData.setTotal(documentList.size());
|
||||
return rspData;
|
||||
}
|
||||
Integer pageNum = (pageDomain.getPageNum() - 1) * 10;
|
||||
Integer pageSize = pageDomain.getPageNum() * 10;
|
||||
if (pageSize > documentList.size())
|
||||
{
|
||||
pageSize = documentList.size();
|
||||
}
|
||||
rspData.setRows(documentList.subList(pageNum, pageSize));
|
||||
rspData.setTotal(documentList.size());
|
||||
return rspData;
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询树表数据
|
||||
*/
|
||||
@ -844,3 +939,85 @@ class AreaModel
|
||||
this.isTreeLeaf = isTreeLeaf;
|
||||
}
|
||||
}
|
||||
|
||||
class DocumentModel
|
||||
{
|
||||
/** 编号 */
|
||||
private int tableId;
|
||||
|
||||
/** 档号 */
|
||||
private String archiveNo;
|
||||
|
||||
/** 文件编号 */
|
||||
private String docNo;
|
||||
|
||||
/** 标题 */
|
||||
private String title;
|
||||
|
||||
/** 内容 */
|
||||
private String content;
|
||||
|
||||
public DocumentModel()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public DocumentModel(int tableId, String archiveNo, String docNo, String title, String content)
|
||||
{
|
||||
this.tableId = tableId;
|
||||
this.archiveNo = archiveNo;
|
||||
this.docNo = docNo;
|
||||
this.title = title;
|
||||
this.content = content;
|
||||
}
|
||||
|
||||
public int getTableId()
|
||||
{
|
||||
return tableId;
|
||||
}
|
||||
|
||||
public String getArchiveNo()
|
||||
{
|
||||
return archiveNo;
|
||||
}
|
||||
|
||||
public String getDocNo()
|
||||
{
|
||||
return docNo;
|
||||
}
|
||||
|
||||
public String getTitle()
|
||||
{
|
||||
return title;
|
||||
}
|
||||
|
||||
public String getContent()
|
||||
{
|
||||
return content;
|
||||
}
|
||||
|
||||
public void setTableId(int tableId)
|
||||
{
|
||||
this.tableId = tableId;
|
||||
}
|
||||
|
||||
public void setArchiveNo(String archiveNo)
|
||||
{
|
||||
this.archiveNo = archiveNo;
|
||||
}
|
||||
|
||||
public void setDocNo(String docNo)
|
||||
{
|
||||
this.docNo = docNo;
|
||||
}
|
||||
|
||||
public void setTitle(String title)
|
||||
{
|
||||
this.title = title;
|
||||
}
|
||||
|
||||
public void setContent(String content)
|
||||
{
|
||||
this.content = content;
|
||||
}
|
||||
}
|
||||
|
@ -99,6 +99,17 @@ public class SysNoticeController extends BaseController
|
||||
return toAjax(noticeService.updateNotice(notice));
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询公告详细
|
||||
*/
|
||||
@RequiresPermissions("system:notice:list")
|
||||
@GetMapping("/view/{noticeId}")
|
||||
public String view(@PathVariable("noticeId") Long noticeId, ModelMap mmap)
|
||||
{
|
||||
mmap.put("notice", noticeService.selectNoticeById(noticeId));
|
||||
return prefix + "/view";
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除公告
|
||||
*/
|
||||
|
@ -24,6 +24,7 @@ import com.ruoyi.common.core.domain.entity.SysUser;
|
||||
import com.ruoyi.common.core.page.TableDataInfo;
|
||||
import com.ruoyi.common.core.text.Convert;
|
||||
import com.ruoyi.common.enums.BusinessType;
|
||||
import com.ruoyi.common.utils.DateUtils;
|
||||
import com.ruoyi.common.utils.ShiroUtils;
|
||||
import com.ruoyi.common.utils.StringUtils;
|
||||
import com.ruoyi.common.utils.poi.ExcelUtil;
|
||||
@ -129,6 +130,8 @@ public class SysUserController extends BaseController
|
||||
@ResponseBody
|
||||
public AjaxResult addSave(@Validated SysUser user)
|
||||
{
|
||||
deptService.checkDeptDataScope(user.getDeptId());
|
||||
roleService.checkRoleDataScope(user.getRoleIds());
|
||||
if (!userService.checkLoginNameUnique(user))
|
||||
{
|
||||
return error("新增用户'" + user.getLoginName() + "'失败,登录账号已存在");
|
||||
@ -143,6 +146,7 @@ public class SysUserController extends BaseController
|
||||
}
|
||||
user.setSalt(ShiroUtils.randomSalt());
|
||||
user.setPassword(passwordService.encryptPassword(user.getLoginName(), user.getPassword(), user.getSalt()));
|
||||
user.setPwdUpdateDate(DateUtils.getNowDate());
|
||||
user.setCreateBy(getLoginName());
|
||||
return toAjax(userService.insertUser(user));
|
||||
}
|
||||
@ -162,6 +166,20 @@ public class SysUserController extends BaseController
|
||||
return prefix + "/edit";
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询用户详细
|
||||
*/
|
||||
@RequiresPermissions("system:user:list")
|
||||
@GetMapping("/view/{userId}")
|
||||
public String view(@PathVariable("userId") Long userId, ModelMap mmap)
|
||||
{
|
||||
userService.checkUserDataScope(userId);
|
||||
mmap.put("user", userService.selectUserById(userId));
|
||||
mmap.put("roleGroup", userService.selectUserRoleGroup(userId));
|
||||
mmap.put("postGroup", userService.selectUserPostGroup(userId));
|
||||
return prefix + "/view";
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改保存用户
|
||||
*/
|
||||
@ -173,6 +191,8 @@ public class SysUserController extends BaseController
|
||||
{
|
||||
userService.checkUserAllowed(user);
|
||||
userService.checkUserDataScope(user.getUserId());
|
||||
deptService.checkDeptDataScope(user.getDeptId());
|
||||
roleService.checkRoleDataScope(user.getRoleIds());
|
||||
if (!userService.checkLoginNameUnique(user))
|
||||
{
|
||||
return error("修改用户'" + user.getLoginName() + "'失败,登录账号已存在");
|
||||
@ -243,6 +263,7 @@ public class SysUserController extends BaseController
|
||||
public AjaxResult insertAuthRole(Long userId, Long[] roleIds)
|
||||
{
|
||||
userService.checkUserDataScope(userId);
|
||||
roleService.checkRoleDataScope(roleIds);
|
||||
userService.insertUserAuth(userId, roleIds);
|
||||
AuthorizationUtils.clearAllCachedAuthorizationInfo();
|
||||
return success();
|
||||
|
@ -3,9 +3,9 @@ ruoyi:
|
||||
# 名称
|
||||
name: RuoYi
|
||||
# 版本
|
||||
version: 4.7.7
|
||||
version: 4.7.9
|
||||
# 版权年份
|
||||
copyrightYear: 2023
|
||||
copyrightYear: 2024
|
||||
# 实例演示开关
|
||||
demoEnabled: true
|
||||
# 文件路径 示例( Windows配置D:/ruoyi/uploadPath,Linux配置 /home/ruoyi/uploadPath)
|
||||
@ -99,7 +99,7 @@ shiro:
|
||||
indexUrl: /index
|
||||
# 验证码开关
|
||||
captchaEnabled: true
|
||||
# 验证码类型 math 数组计算 char 字符
|
||||
# 验证码类型 math 数字计算 char 字符验证
|
||||
captchaType: math
|
||||
cookie:
|
||||
# 设置Cookie的域名 默认空,即当前访问的域名
|
||||
|
@ -0,0 +1,606 @@
|
||||
/**
|
||||
* @author: Dennis Hernández
|
||||
* @update zhixin wen <wenzhixin2010@gmail.com>
|
||||
*/
|
||||
var Utils = $.fn.bootstrapTable.utils
|
||||
var UtilsCookie = {
|
||||
cookieIds: {
|
||||
sortOrder: 'bs.table.sortOrder',
|
||||
sortName: 'bs.table.sortName',
|
||||
sortPriority: 'bs.table.sortPriority',
|
||||
pageNumber: 'bs.table.pageNumber',
|
||||
pageList: 'bs.table.pageList',
|
||||
hiddenColumns: 'bs.table.hiddenColumns',
|
||||
cardView: 'bs.table.cardView',
|
||||
customView: 'bs.table.customView',
|
||||
searchText: 'bs.table.searchText',
|
||||
reorderColumns: 'bs.table.reorderColumns',
|
||||
filterControl: 'bs.table.filterControl',
|
||||
filterBy: 'bs.table.filterBy'
|
||||
},
|
||||
getCurrentHeader (that) {
|
||||
return that.options.height ? that.$tableHeader : that.$header
|
||||
},
|
||||
getCurrentSearchControls (that) {
|
||||
return that.options.height ? 'table select, table input' : 'select, input'
|
||||
},
|
||||
isCookieSupportedByBrowser () {
|
||||
return navigator.cookieEnabled
|
||||
},
|
||||
isCookieEnabled (that, cookieName) {
|
||||
return that.options.cookiesEnabled.includes(cookieName)
|
||||
},
|
||||
setCookie (that, cookieName, cookieValue) {
|
||||
if (
|
||||
!that.options.cookie ||
|
||||
!UtilsCookie.isCookieEnabled(that, cookieName)
|
||||
) {
|
||||
return
|
||||
}
|
||||
|
||||
return that._storage.setItem(`${that.options.cookieIdTable}.${cookieName}`, cookieValue)
|
||||
},
|
||||
getCookie (that, cookieName) {
|
||||
if (
|
||||
!cookieName ||
|
||||
!UtilsCookie.isCookieEnabled(that, cookieName)
|
||||
) {
|
||||
return null
|
||||
}
|
||||
|
||||
return that._storage.getItem(`${that.options.cookieIdTable}.${cookieName}`)
|
||||
},
|
||||
deleteCookie (that, cookieName) {
|
||||
return that._storage.removeItem(`${that.options.cookieIdTable}.${cookieName}`)
|
||||
},
|
||||
calculateExpiration (cookieExpire) {
|
||||
const time = cookieExpire.replace(/[0-9]*/, '') // s,mi,h,d,m,y
|
||||
|
||||
cookieExpire = cookieExpire.replace(/[A-Za-z]{1,2}/, '') // number
|
||||
|
||||
switch (time.toLowerCase()) {
|
||||
case 's':
|
||||
cookieExpire = +cookieExpire
|
||||
break
|
||||
case 'mi':
|
||||
cookieExpire *= 60
|
||||
break
|
||||
case 'h':
|
||||
cookieExpire = cookieExpire * 60 * 60
|
||||
break
|
||||
case 'd':
|
||||
cookieExpire = cookieExpire * 24 * 60 * 60
|
||||
break
|
||||
case 'm':
|
||||
cookieExpire = cookieExpire * 30 * 24 * 60 * 60
|
||||
break
|
||||
case 'y':
|
||||
cookieExpire = cookieExpire * 365 * 24 * 60 * 60
|
||||
break
|
||||
default:
|
||||
cookieExpire = undefined
|
||||
break
|
||||
}
|
||||
if (!cookieExpire) {
|
||||
return ''
|
||||
}
|
||||
const d = new Date()
|
||||
|
||||
d.setTime(d.getTime() + cookieExpire * 1000)
|
||||
return d.toGMTString()
|
||||
},
|
||||
initCookieFilters (that) {
|
||||
setTimeout(() => {
|
||||
const parsedCookieFilters = JSON.parse(
|
||||
UtilsCookie.getCookie(that, UtilsCookie.cookieIds.filterControl))
|
||||
|
||||
if (!that._filterControlValuesLoaded && parsedCookieFilters) {
|
||||
const cachedFilters = {}
|
||||
const header = UtilsCookie.getCurrentHeader(that)
|
||||
const searchControls = UtilsCookie.getCurrentSearchControls(that)
|
||||
|
||||
const applyCookieFilters = (element, filteredCookies) => {
|
||||
filteredCookies.forEach(cookie => {
|
||||
const value = element.value.toString()
|
||||
const text = cookie.text
|
||||
|
||||
if (
|
||||
text === '' ||
|
||||
element.type === 'radio' &&
|
||||
value !== text
|
||||
) {
|
||||
return
|
||||
}
|
||||
|
||||
if (
|
||||
element.tagName === 'INPUT' &&
|
||||
element.type === 'radio' &&
|
||||
value === text
|
||||
) {
|
||||
element.checked = true
|
||||
cachedFilters[cookie.field] = text
|
||||
} else if (element.tagName === 'INPUT') {
|
||||
element.value = text
|
||||
cachedFilters[cookie.field] = text
|
||||
} else if (
|
||||
element.tagName === 'SELECT' &&
|
||||
that.options.filterControlContainer
|
||||
) {
|
||||
element.value = text
|
||||
cachedFilters[cookie.field] = text
|
||||
} else if (text !== '' && element.tagName === 'SELECT') {
|
||||
cachedFilters[cookie.field] = text
|
||||
for (const currentElement of element) {
|
||||
if (currentElement.value === text) {
|
||||
currentElement.selected = true
|
||||
return
|
||||
}
|
||||
}
|
||||
const option = document.createElement('option')
|
||||
|
||||
option.value = text
|
||||
option.text = text
|
||||
element.add(option, element[1])
|
||||
element.selectedIndex = 1
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
let filterContainer = header
|
||||
|
||||
if (that.options.filterControlContainer) {
|
||||
filterContainer = $(`${that.options.filterControlContainer}`)
|
||||
}
|
||||
|
||||
filterContainer.find(searchControls).each(function () {
|
||||
const field = $(this).closest('[data-field]').data('field')
|
||||
const filteredCookies = parsedCookieFilters.filter(cookie => cookie.field === field)
|
||||
|
||||
applyCookieFilters(this, filteredCookies)
|
||||
})
|
||||
|
||||
that.initColumnSearch(cachedFilters)
|
||||
that._filterControlValuesLoaded = true
|
||||
that.initServer()
|
||||
}
|
||||
}, 250)
|
||||
}
|
||||
}
|
||||
|
||||
Object.assign($.fn.bootstrapTable.defaults, {
|
||||
cookie: false,
|
||||
cookieExpire: '2h',
|
||||
cookiePath: null,
|
||||
cookieDomain: null,
|
||||
cookieSecure: null,
|
||||
cookieSameSite: 'Lax',
|
||||
cookieIdTable: '',
|
||||
cookiesEnabled: [
|
||||
'bs.table.sortOrder', 'bs.table.sortName', 'bs.table.sortPriority',
|
||||
'bs.table.pageNumber', 'bs.table.pageList',
|
||||
'bs.table.hiddenColumns', 'bs.table.searchText',
|
||||
'bs.table.filterControl', 'bs.table.filterBy',
|
||||
'bs.table.reorderColumns', 'bs.table.cardView', 'bs.table.customView'
|
||||
],
|
||||
cookieStorage: 'cookieStorage', // localStorage, sessionStorage, customStorage
|
||||
cookieCustomStorageGet: null,
|
||||
cookieCustomStorageSet: null,
|
||||
cookieCustomStorageDelete: null,
|
||||
// internal variable
|
||||
_filterControls: [],
|
||||
_filterControlValuesLoaded: false,
|
||||
_storage: {
|
||||
setItem: undefined,
|
||||
getItem: undefined,
|
||||
removeItem: undefined
|
||||
}
|
||||
})
|
||||
|
||||
$.fn.bootstrapTable.methods.push('getCookies')
|
||||
$.fn.bootstrapTable.methods.push('deleteCookie')
|
||||
|
||||
Object.assign($.fn.bootstrapTable.utils, {
|
||||
setCookie: UtilsCookie.setCookie,
|
||||
getCookie: UtilsCookie.getCookie
|
||||
})
|
||||
|
||||
$.BootstrapTable = class extends $.BootstrapTable {
|
||||
init () {
|
||||
if (this.options.cookie) {
|
||||
if (
|
||||
this.options.cookieStorage === 'cookieStorage' &&
|
||||
!UtilsCookie.isCookieSupportedByBrowser()
|
||||
) {
|
||||
throw new Error('Cookies are not enabled in this browser.')
|
||||
}
|
||||
|
||||
this.configureStorage()
|
||||
|
||||
// FilterBy logic
|
||||
const filterByCookieValue = UtilsCookie.getCookie(this, UtilsCookie.cookieIds.filterBy)
|
||||
|
||||
if (typeof filterByCookieValue === 'boolean' && !filterByCookieValue) {
|
||||
throw new Error('The cookie value of filterBy must be a json!')
|
||||
}
|
||||
|
||||
let filterByCookie = {}
|
||||
|
||||
try {
|
||||
filterByCookie = JSON.parse(filterByCookieValue)
|
||||
} catch (e) {
|
||||
throw new Error('Could not parse the json of the filterBy cookie!')
|
||||
}
|
||||
this.filterColumns = filterByCookie ? filterByCookie : {}
|
||||
|
||||
// FilterControl logic
|
||||
this._filterControls = []
|
||||
this._filterControlValuesLoaded = false
|
||||
|
||||
this.options.cookiesEnabled = typeof this.options.cookiesEnabled === 'string' ?
|
||||
this.options.cookiesEnabled.replace('[', '').replace(']', '')
|
||||
.replace(/'/g, '').replace(/ /g, '').split(',') :
|
||||
this.options.cookiesEnabled
|
||||
|
||||
if (this.options.filterControl) {
|
||||
const that = this
|
||||
|
||||
this.$el.on('column-search.bs.table', (e, field, text) => {
|
||||
let isNewField = true
|
||||
|
||||
for (let i = 0; i < that._filterControls.length; i++) {
|
||||
if (that._filterControls[i].field === field) {
|
||||
that._filterControls[i].text = text
|
||||
isNewField = false
|
||||
break
|
||||
}
|
||||
}
|
||||
if (isNewField) {
|
||||
that._filterControls.push({
|
||||
field,
|
||||
text
|
||||
})
|
||||
}
|
||||
|
||||
UtilsCookie.setCookie(that, UtilsCookie.cookieIds.filterControl, JSON.stringify(that._filterControls))
|
||||
}).on('created-controls.bs.table', UtilsCookie.initCookieFilters(that))
|
||||
}
|
||||
}
|
||||
super.init()
|
||||
}
|
||||
|
||||
initServer (...args) {
|
||||
if (
|
||||
this.options.cookie &&
|
||||
this.options.filterControl &&
|
||||
!this._filterControlValuesLoaded
|
||||
) {
|
||||
const cookie = JSON.parse(UtilsCookie.getCookie(this, UtilsCookie.cookieIds.filterControl))
|
||||
|
||||
if (cookie) {
|
||||
return
|
||||
}
|
||||
}
|
||||
super.initServer(...args)
|
||||
}
|
||||
|
||||
initTable (...args) {
|
||||
super.initTable(...args)
|
||||
this.initCookie()
|
||||
}
|
||||
|
||||
onSort (...args) {
|
||||
super.onSort(...args)
|
||||
|
||||
if (!this.options.cookie) {
|
||||
return
|
||||
}
|
||||
|
||||
if (this.options.sortName === undefined || this.options.sortOrder === undefined) {
|
||||
UtilsCookie.deleteCookie(this, UtilsCookie.cookieIds.sortName)
|
||||
UtilsCookie.deleteCookie(this, UtilsCookie.cookieIds.sortOrder)
|
||||
} else {
|
||||
this.options.sortPriority = null
|
||||
UtilsCookie.deleteCookie(this, UtilsCookie.cookieIds.sortPriority)
|
||||
|
||||
UtilsCookie.setCookie(this, UtilsCookie.cookieIds.sortOrder, this.options.sortOrder)
|
||||
UtilsCookie.setCookie(this, UtilsCookie.cookieIds.sortName, this.options.sortName)
|
||||
}
|
||||
}
|
||||
|
||||
onMultipleSort (...args) {
|
||||
super.onMultipleSort(...args)
|
||||
|
||||
if (!this.options.cookie) {
|
||||
return
|
||||
}
|
||||
|
||||
if (this.options.sortPriority === undefined) {
|
||||
UtilsCookie.deleteCookie(this, UtilsCookie.cookieIds.sortPriority)
|
||||
} else {
|
||||
this.options.sortName = undefined
|
||||
this.options.sortOrder = undefined
|
||||
UtilsCookie.deleteCookie(this, UtilsCookie.cookieIds.sortName)
|
||||
UtilsCookie.deleteCookie(this, UtilsCookie.cookieIds.sortOrder)
|
||||
|
||||
UtilsCookie.setCookie(this, UtilsCookie.cookieIds.sortPriority, JSON.stringify(this.options.sortPriority))
|
||||
}
|
||||
}
|
||||
|
||||
onPageNumber (...args) {
|
||||
super.onPageNumber(...args)
|
||||
if (!this.options.cookie) {
|
||||
return
|
||||
}
|
||||
UtilsCookie.setCookie(this, UtilsCookie.cookieIds.pageNumber, this.options.pageNumber)
|
||||
}
|
||||
|
||||
onPageListChange (...args) {
|
||||
super.onPageListChange(...args)
|
||||
if (!this.options.cookie) {
|
||||
return
|
||||
}
|
||||
UtilsCookie.setCookie(this, UtilsCookie.cookieIds.pageList,
|
||||
this.options.pageSize === this.options.formatAllRows() ? 'all' : this.options.pageSize)
|
||||
UtilsCookie.setCookie(this, UtilsCookie.cookieIds.pageNumber, this.options.pageNumber)
|
||||
}
|
||||
|
||||
onPagePre (...args) {
|
||||
super.onPagePre(...args)
|
||||
if (!this.options.cookie) {
|
||||
return
|
||||
}
|
||||
UtilsCookie.setCookie(this, UtilsCookie.cookieIds.pageNumber, this.options.pageNumber)
|
||||
}
|
||||
|
||||
onPageNext (...args) {
|
||||
super.onPageNext(...args)
|
||||
if (!this.options.cookie) {
|
||||
return
|
||||
}
|
||||
UtilsCookie.setCookie(this, UtilsCookie.cookieIds.pageNumber, this.options.pageNumber)
|
||||
}
|
||||
|
||||
_toggleColumn (...args) {
|
||||
super._toggleColumn(...args)
|
||||
if (!this.options.cookie) {
|
||||
return
|
||||
}
|
||||
UtilsCookie.setCookie(this, UtilsCookie.cookieIds.hiddenColumns, JSON.stringify(this.getHiddenColumns().map(column => column.field)))
|
||||
}
|
||||
|
||||
_toggleAllColumns (...args) {
|
||||
super._toggleAllColumns(...args)
|
||||
if (!this.options.cookie) {
|
||||
return
|
||||
}
|
||||
UtilsCookie.setCookie(this, UtilsCookie.cookieIds.hiddenColumns, JSON.stringify(this.getHiddenColumns().map(column => column.field)))
|
||||
}
|
||||
|
||||
toggleView () {
|
||||
super.toggleView()
|
||||
UtilsCookie.setCookie(this, UtilsCookie.cookieIds.cardView, this.options.cardView)
|
||||
}
|
||||
|
||||
toggleCustomView () {
|
||||
super.toggleCustomView()
|
||||
UtilsCookie.setCookie(this, UtilsCookie.cookieIds.customView, this.customViewDefaultView)
|
||||
}
|
||||
|
||||
selectPage (page) {
|
||||
super.selectPage(page)
|
||||
if (!this.options.cookie) {
|
||||
return
|
||||
}
|
||||
UtilsCookie.setCookie(this, UtilsCookie.cookieIds.pageNumber, page)
|
||||
}
|
||||
|
||||
onSearch (event) {
|
||||
super.onSearch(event, arguments.length > 1 ? arguments[1] : true)
|
||||
if (!this.options.cookie) {
|
||||
return
|
||||
}
|
||||
if (this.options.search) {
|
||||
UtilsCookie.setCookie(this, UtilsCookie.cookieIds.searchText, this.searchText)
|
||||
}
|
||||
UtilsCookie.setCookie(this, UtilsCookie.cookieIds.pageNumber, this.options.pageNumber)
|
||||
}
|
||||
|
||||
initHeader (...args) {
|
||||
if (this.options.reorderableColumns && this.options.cookie) {
|
||||
this.columnsSortOrder = JSON.parse(UtilsCookie.getCookie(this, UtilsCookie.cookieIds.reorderColumns))
|
||||
}
|
||||
super.initHeader(...args)
|
||||
}
|
||||
|
||||
persistReorderColumnsState (that) {
|
||||
UtilsCookie.setCookie(that, UtilsCookie.cookieIds.reorderColumns, JSON.stringify(that.columnsSortOrder))
|
||||
}
|
||||
|
||||
filterBy (...args) {
|
||||
super.filterBy(...args)
|
||||
if (!this.options.cookie) {
|
||||
return
|
||||
}
|
||||
UtilsCookie.setCookie(this, UtilsCookie.cookieIds.filterBy, JSON.stringify(this.filterColumns))
|
||||
}
|
||||
|
||||
initCookie () {
|
||||
if (!this.options.cookie) {
|
||||
return
|
||||
}
|
||||
|
||||
if (this.options.cookieIdTable === '' || this.options.cookieExpire === '') {
|
||||
console.error('Configuration error. Please review the cookieIdTable and the cookieExpire property. If the properties are correct, then this browser does not support cookies.')
|
||||
this.options.cookie = false // Make sure that the cookie extension is disabled
|
||||
return
|
||||
}
|
||||
|
||||
const sortOrderCookie = UtilsCookie.getCookie(this, UtilsCookie.cookieIds.sortOrder)
|
||||
const sortOrderNameCookie = UtilsCookie.getCookie(this, UtilsCookie.cookieIds.sortName)
|
||||
let sortPriorityCookie = UtilsCookie.getCookie(this, UtilsCookie.cookieIds.sortPriority)
|
||||
const pageNumberCookie = UtilsCookie.getCookie(this, UtilsCookie.cookieIds.pageNumber)
|
||||
const pageListCookie = UtilsCookie.getCookie(this, UtilsCookie.cookieIds.pageList)
|
||||
const searchTextCookie = UtilsCookie.getCookie(this, UtilsCookie.cookieIds.searchText)
|
||||
const cardViewCookie = UtilsCookie.getCookie(this, UtilsCookie.cookieIds.cardView)
|
||||
const customViewCookie = UtilsCookie.getCookie(this, UtilsCookie.cookieIds.customView)
|
||||
const hiddenColumnsCookieValue = UtilsCookie.getCookie(this, UtilsCookie.cookieIds.hiddenColumns)
|
||||
|
||||
let hiddenColumnsCookie = {}
|
||||
|
||||
try {
|
||||
hiddenColumnsCookie = JSON.parse(hiddenColumnsCookieValue)
|
||||
} catch (e) {
|
||||
throw new Error('Could not parse the json of the hidden columns cookie!', hiddenColumnsCookieValue)
|
||||
}
|
||||
|
||||
try {
|
||||
sortPriorityCookie = JSON.parse(sortPriorityCookie)
|
||||
} catch (e) {
|
||||
throw new Error('Could not parse the json of the sortPriority cookie!', sortPriorityCookie)
|
||||
}
|
||||
|
||||
if (!sortPriorityCookie) {
|
||||
// sortOrder
|
||||
this.options.sortOrder = sortOrderCookie ? sortOrderCookie : this.options.sortOrder
|
||||
// sortName
|
||||
this.options.sortName = sortOrderNameCookie ? sortOrderNameCookie : this.options.sortName
|
||||
} else {
|
||||
this.options.sortOrder = undefined
|
||||
this.options.sortName = undefined
|
||||
}
|
||||
|
||||
// sortPriority
|
||||
this.options.sortPriority = sortPriorityCookie ? sortPriorityCookie : this.options.sortPriority
|
||||
|
||||
if (this.options.sortOrder || this.options.sortName) {
|
||||
// sortPriority
|
||||
this.options.sortPriority = null
|
||||
}
|
||||
|
||||
// pageNumber
|
||||
this.options.pageNumber = pageNumberCookie ? +pageNumberCookie : this.options.pageNumber
|
||||
// pageSize
|
||||
this.options.pageSize = pageListCookie ? pageListCookie === 'all' ?
|
||||
this.options.formatAllRows() : +pageListCookie : this.options.pageSize
|
||||
// searchText
|
||||
if (UtilsCookie.isCookieEnabled(this, UtilsCookie.cookieIds.searchText) && this.options.searchText === '') {
|
||||
this.options.searchText = searchTextCookie ? searchTextCookie : ''
|
||||
}
|
||||
// cardView
|
||||
if (cardViewCookie !== null) {
|
||||
this.options.cardView = cardViewCookie === 'true' ? cardViewCookie : false
|
||||
}
|
||||
this.customViewDefaultView = customViewCookie === 'true'
|
||||
|
||||
if (hiddenColumnsCookie) {
|
||||
for (const column of this.columns) {
|
||||
if (!column.switchable) {
|
||||
continue
|
||||
}
|
||||
|
||||
column.visible = this.isSelectionColumn(column) ||
|
||||
!hiddenColumnsCookie.includes(column.field)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
getCookies () {
|
||||
const bootstrapTable = this
|
||||
const cookies = {}
|
||||
|
||||
for (const [key, value] of Object.entries(UtilsCookie.cookieIds)) {
|
||||
cookies[key] = UtilsCookie.getCookie(bootstrapTable, value)
|
||||
if (key === 'columns' || key === 'hiddenColumns' || key === 'sortPriority') {
|
||||
cookies[key] = JSON.parse(cookies[key])
|
||||
}
|
||||
}
|
||||
return cookies
|
||||
}
|
||||
|
||||
deleteCookie (cookieName) {
|
||||
if (!cookieName) {
|
||||
return
|
||||
}
|
||||
|
||||
UtilsCookie.deleteCookie(this, UtilsCookie.cookieIds[cookieName])
|
||||
}
|
||||
|
||||
configureStorage () {
|
||||
const that = this
|
||||
|
||||
this._storage = {}
|
||||
switch (this.options.cookieStorage) {
|
||||
case 'cookieStorage':
|
||||
this._storage.setItem = function (cookieName, cookieValue) {
|
||||
document.cookie = [
|
||||
cookieName, '=', encodeURIComponent(cookieValue),
|
||||
`; expires=${UtilsCookie.calculateExpiration(that.options.cookieExpire)}`,
|
||||
that.options.cookiePath ? `; path=${that.options.cookiePath}` : '',
|
||||
that.options.cookieDomain ? `; domain=${that.options.cookieDomain}` : '',
|
||||
that.options.cookieSecure ? '; secure' : '',
|
||||
`;SameSite=${that.options.cookieSameSite}`
|
||||
].join('')
|
||||
}
|
||||
this._storage.getItem = function (cookieName) {
|
||||
const value = `; ${document.cookie}`
|
||||
const parts = value.split(`; ${cookieName}=`)
|
||||
|
||||
return parts.length === 2 ? decodeURIComponent(parts.pop().split(';').shift()) : null
|
||||
}
|
||||
this._storage.removeItem = function (cookieName) {
|
||||
document.cookie = [
|
||||
encodeURIComponent(cookieName), '=',
|
||||
'; expires=Thu, 01 Jan 1970 00:00:00 GMT',
|
||||
that.options.cookiePath ? `; path=${that.options.cookiePath}` : '',
|
||||
that.options.cookieDomain ? `; domain=${that.options.cookieDomain}` : '',
|
||||
`;SameSite=${that.options.cookieSameSite}`
|
||||
].join('')
|
||||
}
|
||||
break
|
||||
case 'localStorage':
|
||||
this._storage.setItem = function (cookieName, cookieValue) {
|
||||
localStorage.setItem(cookieName, cookieValue)
|
||||
}
|
||||
this._storage.getItem = function (cookieName) {
|
||||
return localStorage.getItem(cookieName)
|
||||
}
|
||||
this._storage.removeItem = function (cookieName) {
|
||||
localStorage.removeItem(cookieName)
|
||||
}
|
||||
break
|
||||
case 'sessionStorage':
|
||||
this._storage.setItem = function (cookieName, cookieValue) {
|
||||
sessionStorage.setItem(cookieName, cookieValue)
|
||||
}
|
||||
this._storage.getItem = function (cookieName) {
|
||||
return sessionStorage.getItem(cookieName)
|
||||
}
|
||||
this._storage.removeItem = function (cookieName) {
|
||||
sessionStorage.removeItem(cookieName)
|
||||
}
|
||||
break
|
||||
case 'customStorage':
|
||||
if (
|
||||
!this.options.cookieCustomStorageSet ||
|
||||
!this.options.cookieCustomStorageGet ||
|
||||
!this.options.cookieCustomStorageDelete
|
||||
) {
|
||||
throw new Error('The following options must be set while using the customStorage: cookieCustomStorageSet, cookieCustomStorageGet and cookieCustomStorageDelete')
|
||||
}
|
||||
|
||||
this._storage.setItem = function (cookieName, cookieValue) {
|
||||
Utils.calculateObjectValue(that.options, that.options.cookieCustomStorageSet, [cookieName, cookieValue], '')
|
||||
}
|
||||
this._storage.getItem = function (cookieName) {
|
||||
return Utils.calculateObjectValue(that.options, that.options.cookieCustomStorageGet, [cookieName], '')
|
||||
}
|
||||
this._storage.removeItem = function (cookieName) {
|
||||
Utils.calculateObjectValue(that.options, that.options.cookieCustomStorageDelete, [cookieName], '')
|
||||
}
|
||||
|
||||
break
|
||||
default:
|
||||
throw new Error('Storage method not supported.')
|
||||
}
|
||||
}
|
||||
}
|
@ -5,65 +5,81 @@
|
||||
|
||||
var Utils = $.fn.bootstrapTable.utils
|
||||
|
||||
$.extend($.fn.bootstrapTable.defaults, {
|
||||
Object.assign($.fn.bootstrapTable.defaults, {
|
||||
customView: false,
|
||||
showCustomView: false,
|
||||
showCustomViewButton: false
|
||||
customViewDefaultView: false
|
||||
})
|
||||
|
||||
$.extend($.fn.bootstrapTable.defaults.icons, {
|
||||
customView: {
|
||||
Object.assign($.fn.bootstrapTable.defaults.icons, {
|
||||
customViewOn: {
|
||||
bootstrap3: 'glyphicon glyphicon-list',
|
||||
bootstrap5: 'bi-list',
|
||||
bootstrap4: 'fa fa-list',
|
||||
semantic: 'fa fa-list',
|
||||
foundation: 'fa fa-list',
|
||||
bulma: 'fa fa-list',
|
||||
materialize: 'list'
|
||||
}[$.fn.bootstrapTable.theme] || 'fa-list',
|
||||
customViewOff: {
|
||||
bootstrap3: 'glyphicon glyphicon-eye-open',
|
||||
bootstrap5: 'bi-eye',
|
||||
bootstrap4: 'fa fa-eye',
|
||||
semantic: 'fa fa-eye',
|
||||
foundation: 'fa fa-eye',
|
||||
bulma: 'fa fa-eye',
|
||||
materialize: 'remove_red_eye'
|
||||
}[$.fn.bootstrapTable.theme] || 'fa-eye'
|
||||
bootstrap5: 'bi-grid',
|
||||
bootstrap4: 'fa fa-th',
|
||||
semantic: 'fa fa-th',
|
||||
foundation: 'fa fa-th',
|
||||
bulma: 'fa fa-th',
|
||||
materialize: 'grid_on'
|
||||
}[$.fn.bootstrapTable.theme] || 'fa-th'
|
||||
})
|
||||
|
||||
$.extend($.fn.bootstrapTable.defaults, {
|
||||
Object.assign($.fn.bootstrapTable.defaults, {
|
||||
onCustomViewPostBody () {
|
||||
return false
|
||||
},
|
||||
onCustomViewPreBody () {
|
||||
return false
|
||||
},
|
||||
onToggleCustomView () {
|
||||
return false
|
||||
}
|
||||
})
|
||||
|
||||
$.extend($.fn.bootstrapTable.locales, {
|
||||
formatToggleCustomView () {
|
||||
return 'Toggle custom view'
|
||||
Object.assign($.fn.bootstrapTable.locales, {
|
||||
formatToggleCustomViewOn () {
|
||||
return 'Show custom view'
|
||||
},
|
||||
formatToggleCustomViewOff () {
|
||||
return 'Hide custom view'
|
||||
}
|
||||
})
|
||||
$.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales)
|
||||
Object.assign($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales)
|
||||
|
||||
$.fn.bootstrapTable.methods.push('toggleCustomView')
|
||||
|
||||
$.extend($.fn.bootstrapTable.Constructor.EVENTS, {
|
||||
Object.assign($.fn.bootstrapTable.events, {
|
||||
'custom-view-post-body.bs.table': 'onCustomViewPostBody',
|
||||
'custom-view-pre-body.bs.table': 'onCustomViewPreBody'
|
||||
'custom-view-pre-body.bs.table': 'onCustomViewPreBody',
|
||||
'toggle-custom-view.bs.table': 'onToggleCustomView'
|
||||
})
|
||||
|
||||
$.BootstrapTable = class extends $.BootstrapTable {
|
||||
|
||||
init () {
|
||||
this.showCustomView = this.options.showCustomView
|
||||
this.customViewDefaultView = this.options.customViewDefaultView
|
||||
|
||||
super.init()
|
||||
}
|
||||
|
||||
initToolbar (...args) {
|
||||
if (this.options.customView && this.options.showCustomViewButton) {
|
||||
if (this.options.customView && this.options.showCustomView) {
|
||||
this.buttons = Object.assign(this.buttons, {
|
||||
customView: {
|
||||
text: this.options.formatToggleCustomView(),
|
||||
icon: this.options.icons.customView,
|
||||
text: this.options.customViewDefaultView ? this.options.formatToggleCustomViewOff() : this.options.formatToggleCustomViewOn(),
|
||||
icon: this.options.customViewDefaultView ? this.options.icons.customViewOn : this.options.icons.customViewOff,
|
||||
event: this.toggleCustomView,
|
||||
attributes: {
|
||||
'aria-label': this.options.formatToggleCustomView(),
|
||||
title: this.options.formatToggleCustomView()
|
||||
'aria-label': this.options.customViewDefaultView ? this.options.formatToggleCustomViewOff() : this.options.formatToggleCustomViewOn(),
|
||||
title: this.options.customViewDefaultView ? this.options.formatToggleCustomViewOff() : this.options.formatToggleCustomViewOn()
|
||||
}
|
||||
}
|
||||
})
|
||||
@ -84,7 +100,7 @@ $.BootstrapTable = class extends $.BootstrapTable {
|
||||
|
||||
$table.hide()
|
||||
$customViewContainer.hide()
|
||||
if (!this.options.customView || !this.showCustomView) {
|
||||
if (!this.options.customView || !this.customViewDefaultView) {
|
||||
$table.show()
|
||||
return
|
||||
}
|
||||
@ -103,7 +119,17 @@ $.BootstrapTable = class extends $.BootstrapTable {
|
||||
}
|
||||
|
||||
toggleCustomView () {
|
||||
this.showCustomView = !this.showCustomView
|
||||
this.customViewDefaultView = !this.customViewDefaultView
|
||||
|
||||
const icon = this.options.showButtonIcons ? this.customViewDefaultView ? this.options.icons.customViewOn : this.options.icons.customViewOff : ''
|
||||
const text = this.options.showButtonText ? this.customViewDefaultView ? this.options.formatToggleCustomViewOff() : this.options.formatToggleCustomViewOn() : ''
|
||||
|
||||
this.$toolbar.find('button[name="customView"]')
|
||||
.html(`${Utils.sprintf(this.constants.html.icon, this.options.iconsPrefix, icon)} ${text}`)
|
||||
.attr('aria-label', text)
|
||||
.attr('title', text)
|
||||
|
||||
this.initBody()
|
||||
this.trigger('toggle-custom-view', this.customViewDefaultView)
|
||||
}
|
||||
}
|
@ -1,7 +1,7 @@
|
||||
/*! X-editable - v1.5.1
|
||||
/*! X-editable - v1.5.3
|
||||
* In-place editing with Twitter Bootstrap, jQuery UI or pure jQuery
|
||||
* http://github.com/vitalets/x-editable
|
||||
* Copyright (c) 2013 Vitaliy Potapov; Licensed MIT */
|
||||
* Copyright (c) 2019 Vitaliy Potapov; Licensed MIT */
|
||||
.editableform {
|
||||
margin-bottom: 0; /* overwrites bootstrap margin */
|
||||
}
|
||||
@ -12,6 +12,16 @@
|
||||
line-height: 20px; /* overwriting bootstrap line-height. See #133 */
|
||||
}
|
||||
|
||||
/*
|
||||
BS3 fix: stop css from breaking when the form is inside a popup and inside a form with the class .form-horizontal
|
||||
See: https://github.com/vitalets/x-editable/issues/682
|
||||
*/
|
||||
.form-horizontal .editable-popup .editableform .form-group {
|
||||
margin-left:0;
|
||||
margin-right:0;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
BS3 width:1005 for inputs breaks editable form in popup
|
||||
See: https://github.com/vitalets/x-editable/issues/393
|
||||
@ -145,6 +155,7 @@
|
||||
.editable-pre-wrapped {
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
|
||||
.editable-container.editable-popup {
|
||||
max-width: none !important; /* without this rule poshytip/tooltip does not stretch */
|
||||
}
|
||||
|
@ -26,7 +26,7 @@ $.extend($.fn.bootstrapTable.columnDefaults, {
|
||||
alwaysUseFormatter: false
|
||||
})
|
||||
|
||||
$.extend($.fn.bootstrapTable.Constructor.EVENTS, {
|
||||
$.extend($.fn.bootstrapTable.events, {
|
||||
'editable-init.bs.table': 'onEditableInit',
|
||||
'editable-save.bs.table': 'onEditableSave',
|
||||
'editable-shown.bs.table': 'onEditableShown',
|
||||
@ -63,7 +63,7 @@ $.BootstrapTable = class extends $.BootstrapTable {
|
||||
|
||||
column.formatter = column.formatter || (value => value)
|
||||
column._formatter = column._formatter ? column._formatter : column.formatter
|
||||
column.formatter = (value, row, index) => {
|
||||
column.formatter = (value, row, index, field) => {
|
||||
let result = Utils.calculateObjectValue(column, column._formatter, [value, row, index], value)
|
||||
|
||||
result = typeof result === 'undefined' || result === null ? this.options.undefinedText : result
|
||||
@ -86,7 +86,7 @@ $.BootstrapTable = class extends $.BootstrapTable {
|
||||
column.editable, [index, row], {})
|
||||
|
||||
if (editableOpts.hasOwnProperty('noEditFormatter')) {
|
||||
noEditFormatter = editableOpts.noEditFormatter(value, row, index)
|
||||
noEditFormatter = editableOpts.noEditFormatter(value, row, index, field)
|
||||
}
|
||||
|
||||
if (noEditFormatter === false) {
|
||||
@ -177,10 +177,12 @@ $.BootstrapTable = class extends $.BootstrapTable {
|
||||
if (params && params.escape) {
|
||||
for (const row of data) {
|
||||
for (const [key, value] of Object.entries(row)) {
|
||||
if (typeof(value) !== "number") {
|
||||
row[key] = Utils.unescapeHTML(value)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return data
|
||||
}
|
||||
|
@ -19,28 +19,20 @@ const TYPE_NAME = {
|
||||
pdf: 'PDF'
|
||||
}
|
||||
|
||||
$.extend($.fn.bootstrapTable.defaults, {
|
||||
Object.assign($.fn.bootstrapTable.defaults, {
|
||||
showExport: false,
|
||||
exportDataType: 'basic', // basic, all, selected
|
||||
exportTypes: ['json', 'xml', 'csv', 'txt', 'sql', 'excel'],
|
||||
exportOptions: {
|
||||
onCellHtmlData (cell, rowIndex, colIndex, htmlData) {
|
||||
if (cell.is('th')) {
|
||||
return cell.find('.th-inner').text()
|
||||
}
|
||||
|
||||
return htmlData
|
||||
}
|
||||
},
|
||||
exportOptions: {},
|
||||
exportFooter: false
|
||||
})
|
||||
|
||||
$.extend($.fn.bootstrapTable.columnDefaults, {
|
||||
Object.assign($.fn.bootstrapTable.columnDefaults, {
|
||||
forceExport: false,
|
||||
forceHide: false
|
||||
})
|
||||
|
||||
$.extend($.fn.bootstrapTable.defaults.icons, {
|
||||
Object.assign($.fn.bootstrapTable.defaults.icons, {
|
||||
export: {
|
||||
bootstrap3: 'glyphicon-export icon-share',
|
||||
bootstrap5: 'bi-download',
|
||||
@ -49,24 +41,28 @@ $.extend($.fn.bootstrapTable.defaults.icons, {
|
||||
}[$.fn.bootstrapTable.theme] || 'fa-download'
|
||||
})
|
||||
|
||||
$.extend($.fn.bootstrapTable.locales, {
|
||||
Object.assign($.fn.bootstrapTable.locales, {
|
||||
formatExport () {
|
||||
return 'Export data'
|
||||
}
|
||||
})
|
||||
$.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales)
|
||||
Object.assign($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales)
|
||||
|
||||
$.fn.bootstrapTable.methods.push('exportTable')
|
||||
|
||||
$.extend($.fn.bootstrapTable.defaults, {
|
||||
Object.assign($.fn.bootstrapTable.defaults, {
|
||||
// eslint-disable-next-line no-unused-vars
|
||||
onExportSaved (exportedRows) {
|
||||
return false
|
||||
},
|
||||
onExportStarted () {
|
||||
return false
|
||||
}
|
||||
})
|
||||
|
||||
$.extend($.fn.bootstrapTable.Constructor.EVENTS, {
|
||||
'export-saved.bs.table': 'onExportSaved'
|
||||
Object.assign($.fn.bootstrapTable.events, {
|
||||
'export-saved.bs.table': 'onExportSaved',
|
||||
'export-started.bs.table': 'onExportStarted'
|
||||
})
|
||||
|
||||
$.BootstrapTable = class extends $.BootstrapTable {
|
||||
@ -84,6 +80,10 @@ $.BootstrapTable = class extends $.BootstrapTable {
|
||||
exportTypes = types.map(t => t.slice(1, -1))
|
||||
}
|
||||
|
||||
if (typeof o.exportOptions === 'string') {
|
||||
o.exportOptions = Utils.calculateObjectValue(null, o.exportOptions)
|
||||
}
|
||||
|
||||
this.$export = this.$toolbar.find('>.columns div.export')
|
||||
if (this.$export.length) {
|
||||
this.updateExportButton()
|
||||
@ -93,13 +93,13 @@ $.BootstrapTable = class extends $.BootstrapTable {
|
||||
this.buttons = Object.assign(this.buttons, {
|
||||
export: {
|
||||
html:
|
||||
(() => {
|
||||
() => {
|
||||
if (exportTypes.length === 1) {
|
||||
return `
|
||||
<div class="export ${this.constants.classes.buttonsDropdown}"
|
||||
data-type="${exportTypes[0]}">
|
||||
<button class="${this.constants.buttonsClass}"
|
||||
aria-label="Export"
|
||||
aria-label="${o.formatExport()}"
|
||||
type="button"
|
||||
title="${o.formatExport()}">
|
||||
${o.showButtonIcons ? Utils.sprintf(this.constants.html.icon, o.iconsPrefix, o.icons.export) : ''}
|
||||
@ -114,7 +114,7 @@ $.BootstrapTable = class extends $.BootstrapTable {
|
||||
html.push(`
|
||||
<div class="export ${this.constants.classes.buttonsDropdown}">
|
||||
<button class="${this.constants.buttonsClass} dropdown-toggle"
|
||||
aria-label="Export"
|
||||
aria-label="${o.formatExport()}"
|
||||
${this.constants.dataToggle}="dropdown"
|
||||
type="button"
|
||||
title="${o.formatExport()}">
|
||||
@ -136,7 +136,7 @@ $.BootstrapTable = class extends $.BootstrapTable {
|
||||
|
||||
html.push(this.constants.html.toolbarDropdown[1], '</div>')
|
||||
return html.join('')
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
@ -152,19 +152,15 @@ $.BootstrapTable = class extends $.BootstrapTable {
|
||||
let $exportButtons = this.$export.find('[data-type]')
|
||||
|
||||
if (exportTypes.length === 1) {
|
||||
$exportButtons = this.$export.find('button')
|
||||
$exportButtons = this.$export
|
||||
}
|
||||
|
||||
$exportButtons.click(e => {
|
||||
e.preventDefault()
|
||||
|
||||
const type = $(e.currentTarget).data('type')
|
||||
const exportOptions = {
|
||||
type,
|
||||
escape: false
|
||||
}
|
||||
|
||||
this.exportTable(exportOptions)
|
||||
this.trigger('export-started')
|
||||
this.exportTable({
|
||||
type: $(e.currentTarget).data('type')
|
||||
})
|
||||
})
|
||||
this.handleToolbar()
|
||||
}
|
||||
@ -206,7 +202,7 @@ $.BootstrapTable = class extends $.BootstrapTable {
|
||||
o.exportOptions.ignoreColumn = [detailViewIndex].concat(o.exportOptions.ignoreColumn || [])
|
||||
}
|
||||
|
||||
if (o.exportFooter) {
|
||||
if (o.exportFooter && o.height) {
|
||||
const $footerRow = this.$tableFooter.find('tr').first()
|
||||
const footerData = {}
|
||||
const footerHtml = []
|
||||
@ -240,7 +236,7 @@ $.BootstrapTable = class extends $.BootstrapTable {
|
||||
options.fileName = o.exportOptions.fileName()
|
||||
}
|
||||
|
||||
this.$el.tableExport($.extend({
|
||||
this.$el.tableExport(Utils.extend({
|
||||
onAfterSaveToFile: () => {
|
||||
if (o.exportFooter) {
|
||||
this.load(data)
|
||||
@ -277,15 +273,17 @@ $.BootstrapTable = class extends $.BootstrapTable {
|
||||
|
||||
this.$el.one(eventName, () => {
|
||||
setTimeout(() => {
|
||||
const data = this.getData()
|
||||
|
||||
doExport(() => {
|
||||
this.options.virtualScroll = virtualScroll
|
||||
this.togglePagination()
|
||||
})
|
||||
this.trigger('export-saved', data)
|
||||
}, 0)
|
||||
})
|
||||
this.options.virtualScroll = false
|
||||
this.togglePagination()
|
||||
this.trigger('export-saved', this.getData())
|
||||
} else if (o.exportDataType === 'selected') {
|
||||
let data = this.getData()
|
||||
let selectedData = this.getSelections()
|
||||
|
@ -1,6 +1,5 @@
|
||||
/**
|
||||
* @author: Dennis Hernández
|
||||
* @webSite: http://djhvscf.github.io/Blog
|
||||
* @update zhixin wen <wenzhixin2010@gmail.com>
|
||||
*/
|
||||
|
||||
@ -18,7 +17,7 @@ const debounce = (func, wait) => {
|
||||
}
|
||||
}
|
||||
|
||||
$.extend($.fn.bootstrapTable.defaults, {
|
||||
Object.assign($.fn.bootstrapTable.defaults, {
|
||||
mobileResponsive: false,
|
||||
minWidth: 562,
|
||||
minHeight: undefined,
|
||||
@ -108,9 +107,9 @@ $.BootstrapTable = class extends $.BootstrapTable {
|
||||
|
||||
changeView (width, height) {
|
||||
if (this.options.minHeight) {
|
||||
if ((width <= this.options.minWidth) && (height <= this.options.minHeight)) {
|
||||
if (width <= this.options.minWidth && height <= this.options.minHeight) {
|
||||
this.conditionCardView()
|
||||
} else if ((width > this.options.minWidth) && (height > this.options.minHeight)) {
|
||||
} else if (width > this.options.minWidth && height > this.options.minHeight) {
|
||||
this.conditionFullView()
|
||||
}
|
||||
} else if (width <= this.options.minWidth) {
|
||||
|
@ -4,10 +4,11 @@
|
||||
|
||||
var Utils = $.fn.bootstrapTable.utils
|
||||
|
||||
function printPageBuilderDefault (table) {
|
||||
function printPageBuilderDefault (table, styles) {
|
||||
return `
|
||||
<html>
|
||||
<head>
|
||||
${styles}
|
||||
<style type="text/css" media="print">
|
||||
@page {
|
||||
size: auto;
|
||||
@ -45,35 +46,38 @@ function printPageBuilderDefault (table) {
|
||||
<p>Printed on: ${new Date} </p>
|
||||
<div class="bs-table-print">${table}</div>
|
||||
</body>
|
||||
</html>`
|
||||
</html>
|
||||
`
|
||||
}
|
||||
|
||||
$.extend($.fn.bootstrapTable.locales, {
|
||||
Object.assign($.fn.bootstrapTable.locales, {
|
||||
formatPrint () {
|
||||
return 'Print'
|
||||
}
|
||||
})
|
||||
$.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales)
|
||||
Object.assign($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales)
|
||||
|
||||
$.extend($.fn.bootstrapTable.defaults, {
|
||||
Object.assign($.fn.bootstrapTable.defaults, {
|
||||
showPrint: false,
|
||||
printAsFilteredAndSortedOnUI: true,
|
||||
printSortColumn: undefined,
|
||||
printSortOrder: 'asc',
|
||||
printPageBuilder (table) {
|
||||
return printPageBuilderDefault(table)
|
||||
printStyles: [],
|
||||
printPageBuilder (table, styles) {
|
||||
return printPageBuilderDefault(table, styles)
|
||||
}
|
||||
})
|
||||
|
||||
$.extend($.fn.bootstrapTable.COLUMN_DEFAULTS, {
|
||||
Object.assign($.fn.bootstrapTable.columnDefaults, {
|
||||
printFilter: undefined,
|
||||
printIgnore: false,
|
||||
printFormatter: undefined
|
||||
})
|
||||
|
||||
$.extend($.fn.bootstrapTable.defaults.icons, {
|
||||
Object.assign($.fn.bootstrapTable.defaults.icons, {
|
||||
print: {
|
||||
bootstrap3: 'glyphicon-print icon-share',
|
||||
bootstrap5: 'bi-printer',
|
||||
'bootstrap-table': 'icon-printer'
|
||||
}[$.fn.bootstrapTable.theme] || 'fa-print'
|
||||
})
|
||||
@ -133,10 +137,15 @@ $.BootstrapTable = class extends $.BootstrapTable {
|
||||
}
|
||||
|
||||
doPrint (data) {
|
||||
const canPrint = column => {
|
||||
return !column.printIgnore && column.visible
|
||||
}
|
||||
|
||||
const formatValue = (row, i, column) => {
|
||||
const value_ = Utils.getItemField(row, column.field, this.options.escape, column.escape)
|
||||
const value = Utils.calculateObjectValue(column,
|
||||
column.printFormatter || column.formatter,
|
||||
[$.common.getItemField(row, column.field), row, i], $.common.getItemField(row, column.field))
|
||||
[value_, row, i], value_)
|
||||
|
||||
return typeof value === 'undefined' || value === null ?
|
||||
this.options.undefinedText : value
|
||||
@ -149,7 +158,7 @@ $.BootstrapTable = class extends $.BootstrapTable {
|
||||
for (const columns of columnsArray) {
|
||||
html.push('<tr>')
|
||||
for (let h = 0; h < columns.length; h++) {
|
||||
if (!columns[h].printIgnore) {
|
||||
if (canPrint(columns[h])) {
|
||||
html.push(
|
||||
`<th
|
||||
${Utils.sprintf(' rowspan="%s"', columns[h].rowspan)}
|
||||
@ -162,7 +171,7 @@ $.BootstrapTable = class extends $.BootstrapTable {
|
||||
|
||||
html.push('</thead><tbody>')
|
||||
|
||||
const dontRender = []
|
||||
const notRender = []
|
||||
|
||||
if (this.mergedCells) {
|
||||
for (let mc = 0; mc < this.mergedCells.length; mc++) {
|
||||
@ -174,7 +183,7 @@ $.BootstrapTable = class extends $.BootstrapTable {
|
||||
for (let cs = 0; cs < currentMergedCell.colspan; cs++) {
|
||||
const col = currentMergedCell.col + cs
|
||||
|
||||
dontRender.push(`${row },${ col}`)
|
||||
notRender.push(`${row},${col}`)
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -207,10 +216,10 @@ $.BootstrapTable = class extends $.BootstrapTable {
|
||||
}
|
||||
|
||||
if (
|
||||
!columns[j].printIgnore && columns[j].field &&
|
||||
canPrint(columns[j]) &&
|
||||
(
|
||||
!dontRender.includes(`${i },${ j}`) ||
|
||||
(rowspan > 0 && colspan > 0)
|
||||
!notRender.includes(`${i},${j}`) ||
|
||||
rowspan > 0 && colspan > 0
|
||||
)
|
||||
) {
|
||||
if (rowspan > 0 && colspan > 0) {
|
||||
@ -221,7 +230,6 @@ $.BootstrapTable = class extends $.BootstrapTable {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
html.push('</tr>')
|
||||
}
|
||||
|
||||
@ -231,7 +239,7 @@ $.BootstrapTable = class extends $.BootstrapTable {
|
||||
|
||||
for (const columns of columnsArray) {
|
||||
for (let h = 0; h < columns.length; h++) {
|
||||
if (!columns[h].printIgnore) {
|
||||
if (canPrint(columns)) {
|
||||
const footerData = Utils.trToData(columns, this.$el.find('>tfoot>tr'))
|
||||
const footerValue = Utils.calculateObjectValue(columns[h], columns[h].footerFormatter, [data], footerData[0] && footerData[0][columns[h].field] || '')
|
||||
|
||||
@ -252,8 +260,8 @@ $.BootstrapTable = class extends $.BootstrapTable {
|
||||
}
|
||||
let reverse = sortOrder !== 'asc'
|
||||
|
||||
reverse = -((+reverse) || -1)
|
||||
return data.sort((a, b) => reverse * (a[colName].localeCompare(b[colName])))
|
||||
reverse = -(+reverse || -1)
|
||||
return data.sort((a, b) => reverse * a[colName].localeCompare(b[colName]))
|
||||
}
|
||||
|
||||
const filterRow = (row, filters) => {
|
||||
@ -275,11 +283,30 @@ $.BootstrapTable = class extends $.BootstrapTable {
|
||||
data = sortRows(data, this.options.printSortColumn, this.options.printSortOrder)
|
||||
const table = buildTable(data, this.options.columns)
|
||||
const newWin = window.open('')
|
||||
const printStyles = typeof this.options.printStyles === 'string' ?
|
||||
this.options.printStyles.replace(/\[|\]| /g, '').toLowerCase().split(',') :
|
||||
this.options.printStyles
|
||||
const styles = printStyles.map(it =>
|
||||
`<link rel="stylesheet" href="${it}" />`).join('')
|
||||
|
||||
newWin.document.write(this.options.printPageBuilder.call(this, table))
|
||||
newWin.document.close()
|
||||
const calculatedPrintPage = Utils.calculateObjectValue(this, this.options.printPageBuilder,
|
||||
[table, styles], printPageBuilderDefault(table, styles))
|
||||
const startPrint = () => {
|
||||
newWin.focus()
|
||||
newWin.print()
|
||||
newWin.close()
|
||||
}
|
||||
|
||||
newWin.document.write(calculatedPrintPage)
|
||||
newWin.document.close()
|
||||
|
||||
if (printStyles.length) {
|
||||
const links = document.getElementsByTagName('link')
|
||||
const lastLink = links[links.length - 1]
|
||||
|
||||
lastLink.onload = startPrint
|
||||
} else {
|
||||
startPrint()
|
||||
}
|
||||
}
|
||||
}
|
@ -1,6 +1,5 @@
|
||||
/**
|
||||
* @author: Dennis Hernández
|
||||
* @webSite: http://djhvscf.github.io/Blog
|
||||
* @update: https://github.com/wenzhixin
|
||||
* @version: v1.2.0
|
||||
*/
|
||||
@ -60,7 +59,7 @@ const filterFn = () => {
|
||||
}
|
||||
}
|
||||
|
||||
$.extend($.fn.bootstrapTable.defaults, {
|
||||
Object.assign($.fn.bootstrapTable.defaults, {
|
||||
reorderableColumns: false,
|
||||
maxMovingRows: 10,
|
||||
// eslint-disable-next-line no-unused-vars
|
||||
@ -70,7 +69,7 @@ $.extend($.fn.bootstrapTable.defaults, {
|
||||
dragaccept: null
|
||||
})
|
||||
|
||||
$.extend($.fn.bootstrapTable.Constructor.EVENTS, {
|
||||
Object.assign($.fn.bootstrapTable.events, {
|
||||
'reorder-column.bs.table': 'onReorderColumn'
|
||||
})
|
||||
|
||||
@ -84,7 +83,7 @@ $.BootstrapTable = class extends $.BootstrapTable {
|
||||
return
|
||||
}
|
||||
|
||||
this.makeRowsReorderable()
|
||||
this.makeColumnsReorderable()
|
||||
}
|
||||
|
||||
_toggleColumn (...args) {
|
||||
@ -94,7 +93,7 @@ $.BootstrapTable = class extends $.BootstrapTable {
|
||||
return
|
||||
}
|
||||
|
||||
this.makeRowsReorderable()
|
||||
this.makeColumnsReorderable()
|
||||
}
|
||||
|
||||
toggleView (...args) {
|
||||
@ -108,7 +107,7 @@ $.BootstrapTable = class extends $.BootstrapTable {
|
||||
return
|
||||
}
|
||||
|
||||
this.makeRowsReorderable()
|
||||
this.makeColumnsReorderable()
|
||||
}
|
||||
|
||||
resetView (...args) {
|
||||
@ -118,10 +117,10 @@ $.BootstrapTable = class extends $.BootstrapTable {
|
||||
return
|
||||
}
|
||||
|
||||
this.makeRowsReorderable()
|
||||
this.makeColumnsReorderable()
|
||||
}
|
||||
|
||||
makeRowsReorderable (order = null) {
|
||||
makeColumnsReorderable (order = null) {
|
||||
try {
|
||||
$(this.$el).dragtable('destroy')
|
||||
} catch (e) {
|
||||
@ -208,6 +207,6 @@ $.BootstrapTable = class extends $.BootstrapTable {
|
||||
|
||||
orderColumns (order) {
|
||||
this.columnsSortOrder = order
|
||||
this.makeRowsReorderable()
|
||||
this.makeColumnsReorderable()
|
||||
}
|
||||
}
|
@ -1,6 +1,5 @@
|
||||
/**
|
||||
* @author: Dennis Hernández
|
||||
* @webSite: http://djhvscf.github.io/Blog
|
||||
* @update zhixin wen <wenzhixin2010@gmail.com>
|
||||
*/
|
||||
|
||||
@ -8,11 +7,11 @@ const rowAttr = (row, index) => ({
|
||||
id: `customId_${index}`
|
||||
})
|
||||
|
||||
$.extend($.fn.bootstrapTable.defaults, {
|
||||
Object.assign($.fn.bootstrapTable.defaults, {
|
||||
reorderableRows: false,
|
||||
onDragStyle: null,
|
||||
onDropStyle: null,
|
||||
onDragClass: 'reorder_rows_onDragClass',
|
||||
onDragClass: 'reorder-rows-on-drag-class',
|
||||
dragHandle: '>tbody>tr>td:not(.bs-checkbox)',
|
||||
useRowAttrFunc: false,
|
||||
// eslint-disable-next-line no-unused-vars
|
||||
@ -26,10 +25,14 @@ $.extend($.fn.bootstrapTable.defaults, {
|
||||
// eslint-disable-next-line no-unused-vars
|
||||
onReorderRow (newData) {
|
||||
return false
|
||||
},
|
||||
onDragStop () {},
|
||||
onAllowDrop () {
|
||||
return true
|
||||
}
|
||||
})
|
||||
|
||||
$.extend($.fn.bootstrapTable.Constructor.EVENTS, {
|
||||
Object.assign($.fn.bootstrapTable.events, {
|
||||
'reorder-row.bs.table': 'onReorderRow'
|
||||
})
|
||||
|
||||
@ -61,6 +64,8 @@ $.BootstrapTable = class extends $.BootstrapTable {
|
||||
onDragStyle: this.options.onDragStyle,
|
||||
onDropStyle: this.options.onDropStyle,
|
||||
onDragClass: this.options.onDragClass,
|
||||
onAllowDrop: (hoveredRow, draggedRow) => this.onAllowDrop(hoveredRow, draggedRow),
|
||||
onDragStop: (table, draggedRow) => this.onDragStop(table, draggedRow),
|
||||
onDragStart: (table, droppedRow) => this.onDropStart(table, droppedRow),
|
||||
onDrop: (table, droppedRow) => this.onDrop(table, droppedRow),
|
||||
dragHandle: this.options.dragHandle
|
||||
@ -74,8 +79,26 @@ $.BootstrapTable = class extends $.BootstrapTable {
|
||||
this.options.onReorderRowsDrag(this.data[this.draggingIndex])
|
||||
}
|
||||
|
||||
onDragStop (table, draggedRow) {
|
||||
const rowIndexDraggedRow = $(draggedRow).data('index')
|
||||
const draggedRowItem = this.data[rowIndexDraggedRow]
|
||||
|
||||
this.options.onDragStop(table, draggedRowItem, draggedRow)
|
||||
}
|
||||
|
||||
onAllowDrop (hoveredRow, draggedRow) {
|
||||
const rowIndexDraggedRow = $(draggedRow).data('index')
|
||||
const rowIndexHoveredRow = $(hoveredRow).data('index')
|
||||
const draggedRowItem = this.data[rowIndexDraggedRow]
|
||||
const hoveredRowItem = this.data[rowIndexHoveredRow]
|
||||
|
||||
return this.options.onAllowDrop(hoveredRowItem, draggedRowItem, hoveredRow, draggedRow)
|
||||
}
|
||||
|
||||
onDrop (table) {
|
||||
this.$draggingTd.css('cursor', '')
|
||||
const pageNum = this.options.pageNumber
|
||||
const pageSize = this.options.pageSize
|
||||
const newData = []
|
||||
|
||||
for (let i = 0; i < table.tBodies[0].rows.length; i++) {
|
||||
@ -88,13 +111,17 @@ $.BootstrapTable = class extends $.BootstrapTable {
|
||||
const draggingRow = this.data[this.draggingIndex]
|
||||
const droppedIndex = newData.indexOf(this.data[this.draggingIndex])
|
||||
const droppedRow = this.data[droppedIndex]
|
||||
const index = this.options.data.indexOf(this.data[droppedIndex])
|
||||
const index = (pageNum - 1) * pageSize + this.options.data.indexOf(this.data[droppedIndex])
|
||||
|
||||
this.options.data.splice(this.options.data.indexOf(draggingRow), 1)
|
||||
this.options.data.splice(index, 0, draggingRow)
|
||||
|
||||
this.initSearch()
|
||||
|
||||
if (this.options.sidePagination === 'server') {
|
||||
this.data = [...this.options.data]
|
||||
}
|
||||
|
||||
// Call the user defined function
|
||||
this.options.onReorderRowsDrop(droppedRow)
|
||||
|
||||
|
@ -1,6 +1,5 @@
|
||||
/**
|
||||
* @author: Dennis Hernández
|
||||
* @webSite: http://djhvscf.github.io/Blog
|
||||
* @version: v2.0.0
|
||||
*/
|
||||
|
||||
@ -30,7 +29,7 @@ const reInitResizable = that => {
|
||||
initResizable(that)
|
||||
}
|
||||
|
||||
$.extend($.fn.bootstrapTable.defaults, {
|
||||
Object.assign($.fn.bootstrapTable.defaults, {
|
||||
resizable: false
|
||||
})
|
||||
|
||||
|
@ -131,6 +131,9 @@
|
||||
$th = $('<th style="width:36px"></th>');
|
||||
} else {
|
||||
$th = $('<th style="' + ((column.width) ? ('width:' + column.width + ((column.widthUnit) ? column.widthUnit : 'px')) : '') + '" class="' + column.field + '_cls"></th>');
|
||||
if (column.align) {
|
||||
$th.css("text-align", column.align);
|
||||
}
|
||||
}
|
||||
if((!target.isFixWidth)&& column.width){
|
||||
target.isFixWidth = column.width.indexOf("px")>-1?true:false;
|
||||
@ -217,6 +220,8 @@
|
||||
if (!data || data.length <= 0) {
|
||||
var _empty = '<tr><td colspan="' + options.columns.length + '"><div style="display: block;text-align: center;">没有找到匹配的记录</div></td></tr>'
|
||||
$tbody.html(_empty);
|
||||
options.pageNumber = 1;
|
||||
initPagination(0, 0);
|
||||
return;
|
||||
}
|
||||
// 缓存并格式化数据
|
||||
@ -272,6 +277,9 @@
|
||||
if (pageTo > target.totalRows) {
|
||||
pageTo = target.totalRows;
|
||||
}
|
||||
if (pageFrom > pageTo) {
|
||||
pageFrom = pageTo;
|
||||
}
|
||||
html.push('<div class="pull-left pagination-detail">');
|
||||
html.push('<span class="pagination-info">' + formatShowingRows(pageFrom, pageTo, target.totalRows) + '</span>');
|
||||
var pageList = false;
|
||||
@ -681,6 +689,7 @@
|
||||
if (_isExpanded || _isCollapsed) {
|
||||
var tr = $(this).parent().parent();
|
||||
var row_id = tr.attr("id");
|
||||
var row_pid = tr.attr("pid");
|
||||
var _id = tr.attr("data-id");
|
||||
var _ls = target.find("tbody").find("tr[id^='" + row_id + "_']");
|
||||
if (!options.pagination) {
|
||||
@ -709,19 +718,37 @@
|
||||
var _ls = target.find("tbody").find("tr[id^='" + row_id + "_']");
|
||||
if (_ls && _ls.length > 0) {
|
||||
if (_isExpanded) {
|
||||
if (row_pid == "row_root") {
|
||||
$('table tr[id^="' + row_id + '_"]').css("display", "none");
|
||||
$('table tr[id^="' + row_id + '_"]').each(function(i,n) {
|
||||
var _isExpanded = $(n).find(".treetable-expander").hasClass(options.expanderExpandedClass);
|
||||
if (_isExpanded) {
|
||||
$(n).find(".treetable-expander").trigger("click");
|
||||
}
|
||||
})
|
||||
} else {
|
||||
$.each(_ls, function(index, item) {
|
||||
$(item).css("display", "none");
|
||||
var _isExpanded = $(item).find(".treetable-expander").hasClass(options.expanderExpandedClass);
|
||||
if (_isExpanded) {
|
||||
$(item).find(".treetable-expander").trigger("click");
|
||||
}
|
||||
});
|
||||
}
|
||||
} else {
|
||||
if (row_pid == "row_root") {
|
||||
$('table tr[pid="' + row_id + '"]').css("display", "table");
|
||||
} else {
|
||||
$.each(_ls, function(index, item) {
|
||||
var _icon = $(item).eq(options.expandColumn).find(".treetable-expander");
|
||||
if (_icon && _icon.hasClass(options.expanderExpandedClass)) {
|
||||
$(item).css("display", "table");
|
||||
} else {
|
||||
var _p_icon = $("#" + $(item).attr("pid")).children().eq(options.expandColumn).find(".treetable-expander");
|
||||
var _isExpanded = _p_icon.hasClass(options.expanderExpandedClass);
|
||||
var _isCollapsed = _p_icon.hasClass(options.expanderCollapsedClass);
|
||||
if (row_id == $(item).attr("pid")) {
|
||||
$(item).css("display", "table");
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (options.pagination) {
|
||||
var parms = {};
|
||||
|
@ -1,4 +1,3 @@
|
||||
/* *html{background-image: url(about:blank); background-attachment: fixed;} */
|
||||
html #layuicss-layer{display: none; position: absolute; width: 1989px;}
|
||||
|
||||
/* common */
|
||||
@ -9,11 +8,8 @@ html #layuicss-layer{display: none; position: absolute; width: 1989px;}
|
||||
.layui-layer-close{position:absolute;}
|
||||
.layui-layer-content{position:relative;}
|
||||
.layui-layer-border{border: 1px solid #B2B2B2; border: 1px solid rgba(0,0,0,.1); box-shadow: 1px 1px 5px rgba(0,0,0,.2);}
|
||||
.layui-layer-load{background:url(loading-1.gif) #eee center center no-repeat;}
|
||||
.layui-layer-ico{ background:url(icon.png) no-repeat;}
|
||||
.layui-layer-dialog .layui-layer-ico,
|
||||
.layui-layer-setwin a,
|
||||
.layui-layer-btn a{display:inline-block; *display:inline; *zoom:1; vertical-align:top;}
|
||||
.layui-layer-setwin span,
|
||||
.layui-layer-btn a{display: inline-block; vertical-align: middle; *display: inline; *zoom:1; }
|
||||
|
||||
.layui-layer-move{display: none; position: fixed; *position: absolute; left: 0px; top: 0px; width: 100%; height: 100%; cursor: move; opacity: 0; filter:alpha(opacity=0); background-color: #fff; z-index: 2147483647;}
|
||||
.layui-layer-resize{position: absolute; width: 15px; height: 15px; right: 0; bottom: 0; cursor: se-resize;}
|
||||
@ -43,54 +39,139 @@ html #layuicss-layer{display: none; position: absolute; width: 1989px;}
|
||||
|
||||
@-webkit-keyframes layer-shake{0%,100%{-webkit-transform:translateX(0);transform:translateX(0)}10%,30%,50%,70%,90%{-webkit-transform:translateX(-10px);transform:translateX(-10px)}20%,40%,60%,80%{-webkit-transform:translateX(10px);transform:translateX(10px)}}@keyframes layer-shake{0%,100%{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}10%,30%,50%,70%,90%{-webkit-transform:translateX(-10px);-ms-transform:translateX(-10px);transform:translateX(-10px)}20%,40%,60%,80%{-webkit-transform:translateX(10px);-ms-transform:translateX(10px);transform:translateX(10px)}}.layer-anim-06{-webkit-animation-name:layer-shake;animation-name:layer-shake}@-webkit-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}
|
||||
|
||||
/* 从上往下 */
|
||||
@keyframes layer-slide-down {
|
||||
from {
|
||||
transform: translate3d(0,-100%,0);
|
||||
} to {
|
||||
transform: translate3d(0,0,0);
|
||||
}
|
||||
}
|
||||
@keyframes layer-slide-down-out {
|
||||
from {
|
||||
transform: translate3d(0,0,0);
|
||||
} to {
|
||||
transform: translate3d(0,-100%,0);
|
||||
}
|
||||
}
|
||||
.layer-anim-slide-down{animation-name: layer-slide-down}
|
||||
.layer-anim-slide-down-out{animation-name: layer-slide-down-out}
|
||||
|
||||
/* 从右往左 */
|
||||
@keyframes layer-slide-left {
|
||||
from {
|
||||
transform: translate3d(100%,0,0);
|
||||
} to {
|
||||
transform: translate3d(0,0,0);
|
||||
}
|
||||
}
|
||||
@keyframes layer-slide-left-out {
|
||||
from {
|
||||
transform: translate3d(0,0,0);
|
||||
} to {
|
||||
transform: translate3d(100%,0,0);
|
||||
}
|
||||
}
|
||||
.layer-anim-slide-left{animation-name: layer-slide-left}
|
||||
.layer-anim-slide-left-out{animation-name: layer-slide-left-out}
|
||||
|
||||
/* 从下往上 */
|
||||
@keyframes layer-slide-up {
|
||||
from {
|
||||
transform: translate3d(0,100%,0);
|
||||
} to {
|
||||
transform: translate3d(0,0,0);
|
||||
}
|
||||
}
|
||||
@keyframes layer-slide-up-out {
|
||||
from {
|
||||
transform: translate3d(0,0,0);
|
||||
} to {
|
||||
transform: translate3d(0,100%,0);
|
||||
}
|
||||
}
|
||||
.layer-anim-slide-up{animation-name: layer-slide-up}
|
||||
.layer-anim-slide-up-out{animation-name: layer-slide-up-out}
|
||||
|
||||
/* 从左往右 */
|
||||
@keyframes layer-slide-right {
|
||||
from {
|
||||
transform: translate3d(-100%,0,0);
|
||||
} to {
|
||||
transform: translate3d(0,0,0);
|
||||
}
|
||||
}
|
||||
@keyframes layer-slide-right-out {
|
||||
from {
|
||||
transform: translate3d(0,0,0);
|
||||
} to {
|
||||
transform: translate3d(-100%,0,0);
|
||||
}
|
||||
}
|
||||
.layer-anim-slide-right{animation-name: layer-slide-right;}
|
||||
.layer-anim-slide-right-out{animation-name: layer-slide-right-out;}
|
||||
|
||||
|
||||
|
||||
/* 标题栏 */
|
||||
.layui-layer-title{padding:0 80px 0 20px; height: 50px; line-height: 50px; border-bottom:1px solid #F0F0F0; font-size: 14px; color:#333; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; border-radius: 2px 2px 0 0;}
|
||||
.layui-layer-setwin{position:absolute; right: 15px; *right:0; top: 17px; font-size:0; line-height: initial;}
|
||||
.layui-layer-setwin a{position:relative; width: 16px; height:16px; margin-left:10px; font-size:12px; _overflow:hidden;}
|
||||
.layui-layer-setwin .layui-layer-min cite{position:absolute; width:14px; height:2px; left:0; top:50%; margin-top:-1px; background-color:#2E2D3C; cursor:pointer; _overflow:hidden;}
|
||||
.layui-layer-setwin .layui-layer-min:hover cite{background-color:#2D93CA; }
|
||||
.layui-layer-setwin .layui-layer-max{background-position:-32px -40px;}
|
||||
.layui-layer-setwin .layui-layer-max:hover{background-position:-16px -40px;}
|
||||
.layui-layer-setwin .layui-layer-maxmin{background-position:-65px -40px;}
|
||||
.layui-layer-setwin .layui-layer-maxmin:hover{background-position:-49px -40px;}
|
||||
.layui-layer-setwin .layui-layer-close1{background-position: 1px -40px; cursor: pointer;}
|
||||
.layui-layer-setwin .layui-layer-close1:hover{opacity:0.7;}
|
||||
.layui-layer-setwin .layui-layer-close2{position:absolute; right:-28px; top:-28px; width:30px; height:30px; margin-left:0; background-position:-149px -31px; *right:-18px; _display:none;}
|
||||
.layui-layer-setwin .layui-layer-close2:hover{ background-position:-180px -31px;}
|
||||
.layui-layer-title{padding: 0 81px 0 16px; height: 50px; line-height: 50px; border-bottom:1px solid #F0F0F0; font-size: 14px; color:#333; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; border-radius: 2px 2px 0 0;}
|
||||
.layui-layer-setwin{position:absolute; right: 15px; *right:0; top: 16px; font-size:0; line-height: initial;}
|
||||
.layui-layer-setwin span{position:relative; width: 16px; height: 16px; line-height: 18px; margin-left: 10px; text-align: center; font-size: 16px; cursor: pointer; color: #000; _overflow: hidden; box-sizing: border-box;}
|
||||
.layui-layer-setwin .layui-layer-min:before{content: ''; position: absolute; width: 12px; border-bottom: 1px solid #2E2D3C; left: 50%; top: 50%; margin: -0.5px 0 0 -6px; cursor: pointer; _overflow:hidden;}
|
||||
.layui-layer-setwin .layui-layer-min:hover:before{background-color: #2D93CA}
|
||||
.layui-layer-setwin .layui-layer-max:hover:before,
|
||||
.layui-layer-setwin .layui-layer-max:hover:after{border-color: #2D93CA;}
|
||||
.layui-layer-setwin .layui-layer-min:hover:before{background-color: #2D93CA}
|
||||
.layui-layer-setwin .layui-layer-maxmin:before,
|
||||
.layui-layer-setwin .layui-layer-maxmin:after{width: 7px; height: 7px; margin: -3px 0 0 -3px; background-color: #fff;}
|
||||
.layui-layer-setwin .layui-layer-maxmin:after{z-index: 0; margin: -5px 0 0 -1px;}
|
||||
.layui-layer-setwin .layui-layer-close{cursor: pointer;}
|
||||
.layui-layer-setwin .layui-layer-close:hover{opacity:0.7;}
|
||||
.layui-layer-setwin .layui-layer-close2{position:absolute; right: -28px; top: -28px; color: #fff; background-color: #787878; padding: 3px; width: 16px; height: 20px; font-size: 16px; font-weight: bolder; border-radius: 50%; margin-left: 0; *right:-18px; _display:none;}
|
||||
.layui-layer-setwin .layui-layer-close2:hover{opacity: unset; background-color: #3888f6;}
|
||||
|
||||
/* 按钮栏 */
|
||||
.layui-layer-btn{text-align: right; padding: 0 15px 12px; pointer-events: auto; user-select: none; -webkit-user-select: none;}
|
||||
.layui-layer-btn a{height: 28px; line-height: 28px; margin: 5px 5px 0; padding: 0 15px; border: 1px solid #dedede; background-color:#fff; color: #333; border-radius: 2px; font-weight:400; cursor:pointer; text-decoration: none;}
|
||||
.layui-layer-btn a{height: 30px; line-height: 30px; margin: 5px 5px 0; padding: 0 16px; border: 1px solid #dedede; background-color: #fff; color: #333; border-radius: 2px; font-weight: 400; cursor: pointer; text-decoration: none; box-sizing: border-box;}
|
||||
.layui-layer-btn a:hover{opacity: 0.9; text-decoration: none;}
|
||||
.layui-layer-btn a:active{opacity: 0.8;}
|
||||
.layui-layer-btn .layui-layer-btn0{border-color: #1E9FFF; background-color: #1E9FFF; color:#fff;}
|
||||
.layui-layer-btn .layui-layer-btn0{border-color: transparent; background-color: #1E9FFF; color:#fff;}
|
||||
.layui-layer-btn-l{text-align: left;}
|
||||
.layui-layer-btn-c{text-align: center;}
|
||||
|
||||
/* 定制化 */
|
||||
.layui-layer-dialog{min-width: 300px;}
|
||||
.layui-layer-dialog .layui-layer-content{position: relative; padding:20px; line-height:24px; word-break: break-all; overflow:hidden; font-size:14px; overflow-x: hidden; overflow-y:auto;}
|
||||
.layui-layer-dialog .layui-layer-content .layui-layer-ico{position:absolute; top:16px; left:15px; _left:-40px; width:30px; height:30px;}
|
||||
.layui-layer-ico1{background-position:-30px 0 }
|
||||
.layui-layer-ico2{background-position:-60px 0;}
|
||||
.layui-layer-ico3{background-position:-90px 0;}
|
||||
.layui-layer-ico4{background-position:-120px 0;}
|
||||
.layui-layer-ico5{background-position:-150px 0;}
|
||||
.layui-layer-ico6{background-position:-180px 0;}
|
||||
.layui-layer-dialog{min-width: 240px;}
|
||||
.layui-layer-dialog .layui-layer-content{position: relative; padding: 16px; line-height: 24px; word-break: break-all; overflow:hidden; font-size:14px; overflow-x: hidden; overflow-y:auto;}
|
||||
.layui-layer-dialog .layui-layer-content .layui-layer-face{position: absolute; top: 18px; left: 16px; color: #959595; font-size: 32px; _left: -40px;}
|
||||
.layui-layer-dialog .layui-layer-content .layui-icon-tips{color: #F39B12;}
|
||||
.layui-layer-dialog .layui-layer-content .layui-icon-success{color: #16b777;}
|
||||
.layui-layer-dialog .layui-layer-content .layui-icon-error{top: 19px; color: #FF5722;}
|
||||
.layui-layer-dialog .layui-layer-content .layui-icon-question{color: #FFB800;}
|
||||
.layui-layer-dialog .layui-layer-content .layui-icon-lock{color: #787878;}
|
||||
.layui-layer-dialog .layui-layer-content .layui-icon-face-cry{color: #FF5722;}
|
||||
.layui-layer-dialog .layui-layer-content .layui-icon-face-smile{color: #16b777;}
|
||||
|
||||
.layui-layer-rim{border:6px solid #8D8D8D; border:6px solid rgba(0,0,0,.3); border-radius:5px; box-shadow: none;}
|
||||
.layui-layer-msg{min-width:180px; border:1px solid #D3D4D3; box-shadow: none;}
|
||||
.layui-layer-hui{min-width:100px; background-color: #000; filter:alpha(opacity=60); background-color: rgba(0,0,0,0.6); color: #fff; border:none;}
|
||||
.layui-layer-hui .layui-layer-content{padding:12px 25px; text-align:center;}
|
||||
.layui-layer-dialog .layui-layer-padding{padding: 20px 20px 20px 55px; text-align: left;}
|
||||
.layui-layer-hui .layui-layer-close{color: #fff;}
|
||||
.layui-layer-hui .layui-layer-content{padding: 11px 24px; text-align: center;}
|
||||
.layui-layer-dialog .layui-layer-padding{padding: 18px 24px 18px 58px; text-align: left;}
|
||||
.layui-layer-page .layui-layer-content{position:relative; overflow:auto;}
|
||||
.layui-layer-page .layui-layer-btn,.layui-layer-iframe .layui-layer-btn{padding-top:10px;}
|
||||
.layui-layer-nobg{background:none;}
|
||||
.layui-layer-iframe iframe{display: block; width: 100%;}
|
||||
|
||||
.layui-layer-loading{border-radius:100%; background:none; box-shadow:none; border:none;}
|
||||
.layui-layer-loading .layui-layer-content{width:60px; height:24px; background:url(loading-0.gif) no-repeat;}
|
||||
.layui-layer-loading .layui-layer-loading1{width:37px; height:37px; background:url(loading-1.gif) no-repeat;}
|
||||
.layui-layer-loading .layui-layer-loading2, .layui-layer-ico16{width:32px; height:32px; background:url(loading-2.gif) no-repeat;}
|
||||
.layui-layer-loading .layui-layer-content{width: 76px; height: 38px; line-height: 38px; text-align: center;}
|
||||
.layui-layer-loading-icon{font-size: 38px; color: #959595;}
|
||||
.layui-layer-loading2{text-align: center;}
|
||||
.layui-layer-loading-2{position: relative; height: 38px;}
|
||||
.layui-layer-loading-2:before,
|
||||
.layui-layer-loading-2:after{content: ''; position: absolute; left: 50%; top: 50%; width: 38px; height: 38px; margin: -19px 0 0 -19px; border-radius: 50%; border: 3px solid #d2d2d2; box-sizing: border-box;}
|
||||
.layui-layer-loading-2:after{border-color: transparent; border-left-color: #1E9FFF;}
|
||||
|
||||
|
||||
.layui-layer-tips{background: none; box-shadow:none; border:none;}
|
||||
.layui-layer-tips .layui-layer-content{position: relative; line-height: 22px; min-width: 12px; padding: 8px 15px; font-size: 12px; _float:left; border-radius: 2px; box-shadow: 1px 1px 3px rgba(0,0,0,.2); background-color: #000; color: #fff;}
|
||||
.layui-layer-tips .layui-layer-close{right:-2px; top:-1px;}
|
||||
@ -102,15 +183,31 @@ html #layuicss-layer{display: none; position: absolute; width: 1989px;}
|
||||
.layui-layer-tips i.layui-layer-TipsR{left:-8px;}
|
||||
.layui-layer-tips i.layui-layer-TipsL{right:-8px;}
|
||||
|
||||
/* skin */
|
||||
.layui-layer-lan[type="dialog"]{min-width:280px;}
|
||||
/* 内置 skin */
|
||||
.layui-layer-lan .layui-layer-title{background:#4476A7; color:#fff; border: none;}
|
||||
.layui-layer-lan .layui-layer-btn{padding: 5px 10px 10px; text-align: right; border-top:1px solid #E9E7E7}
|
||||
.layui-layer-lan .layui-layer-btn{padding: 5px 10px 10px; border-top:1px solid #E9E7E7}
|
||||
.layui-layer-lan .layui-layer-btn a{background: #fff; border-color: #E9E7E7; color: #333;}
|
||||
.layui-layer-lan .layui-layer-btn .layui-layer-btn1{background:#C9C5C5;}
|
||||
.layui-layer-molv .layui-layer-title{background: #009f95; color:#fff; border: none;}
|
||||
.layui-layer-molv .layui-layer-btn a{background: #009f95; border-color: #009f95;}
|
||||
.layui-layer-molv .layui-layer-btn .layui-layer-btn1{background:#92B8B1;}
|
||||
.layui-layer-lan .layui-layer-setwin .layui-icon,
|
||||
.layui-layer-molv .layui-layer-setwin .layui-icon{color: #fff;}
|
||||
|
||||
/* Windows 10 风格主题 */
|
||||
.layui-layer-win10{border: 1px solid #aaa; box-shadow: 1px 1px 6px rgba(0,0,0,.3); border-radius: none;}
|
||||
.layui-layer-win10 .layui-layer-title{height: 32px; line-height: 32px; padding-left: 8px; border-bottom: none; font-size: 12px;}
|
||||
.layui-layer-win10 .layui-layer-setwin{right: 0; top: 0;}
|
||||
.layui-layer-win10 .layui-layer-setwin span{margin-left: 0; width: 32px; height: 32px; padding: 8px;}
|
||||
.layui-layer-win10.layui-layer-page .layui-layer-setwin span{width: 38px;}
|
||||
.layui-layer-win10 .layui-layer-setwin span:hover{background-color: #E5E5E5;}
|
||||
.layui-layer-win10 .layui-layer-setwin span.layui-icon-close:hover{background-color: #E81123; color: #fff;}
|
||||
.layui-layer-win10.layui-layer-dialog .layui-layer-content{padding: 8px 16px 32px; color: #0033BC;}
|
||||
.layui-layer-win10.layui-layer-dialog .layui-layer-padding{padding-top: 18px; padding-left: 58px;}
|
||||
.layui-layer-win10 .layui-layer-btn{padding: 5px 5px 10px; border-top:1px solid #DFDFDF; background-color: #F0F0F0;}
|
||||
.layui-layer-win10 .layui-layer-btn a{height: 20px; line-height: 18px; background-color: #E1E1E1; border-color: #ADADAD; color: #000; font-size: 12px; transition: all .3s;}
|
||||
.layui-layer-win10 .layui-layer-btn a:hover{border-color: #2A8EDD; background-color: #E5F1FB;}
|
||||
.layui-layer-win10 .layui-layer-btn .layui-layer-btn0{border-color: #0078D7;}
|
||||
|
||||
|
||||
/**
|
||||
@ -119,39 +216,44 @@ html #layuicss-layer{display: none; position: absolute; width: 1989px;}
|
||||
|
||||
*/
|
||||
|
||||
.layui-layer-iconext{background:url(icon-ext.png) no-repeat;}
|
||||
|
||||
/* prompt模式 */
|
||||
.layui-layer-prompt .layui-layer-input{display: block; width: 260px; height: 36px; margin: 0 auto; line-height: 30px; padding-left: 10px; border: 1px solid #e6e6e6; color: #333;}
|
||||
.layui-layer-prompt textarea.layui-layer-input{width: 300px; height: 100px; line-height: 20px; padding: 6px 10px;}
|
||||
.layui-layer-prompt .layui-layer-content{padding: 20px;}
|
||||
.layui-layer-prompt .layui-layer-content{padding: 16px;}
|
||||
.layui-layer-prompt .layui-layer-btn{padding-top: 0;}
|
||||
|
||||
/* tab模式 */
|
||||
.layui-layer-tab{box-shadow:1px 1px 50px rgba(0,0,0,.4);}
|
||||
.layui-layer-tab .layui-layer-title{padding-left:0; overflow: visible;}
|
||||
.layui-layer-tab .layui-layer-title span{position:relative; float:left; min-width:80px; max-width: 300px; padding:0 20px; text-align:center; cursor:default; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; cursor: pointer;}
|
||||
.layui-layer-tab .layui-layer-title span.layui-this{height: 51px; border-left: 1px solid #eee; border-right: 1px solid #eee; background-color: #fff; z-index: 10;}
|
||||
.layui-layer-tab .layui-layer-title span:first-child{border-left:none;}
|
||||
.layui-layer-tab .layui-layer-title span{position:relative; display: inline-block; vertical-align: top; border-left: 1px solid transparent; border-right: 1px solid transparent; min-width:80px; max-width: 300px; padding:0 16px; text-align:center; cursor:default; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; cursor: pointer;}
|
||||
.layui-layer-tab .layui-layer-title span.layui-this{height: 51px; border-left-color: #eee; border-right-color: #eee; background-color: #fff; z-index: 10;}
|
||||
.layui-layer-tab .layui-layer-title span:first-child{border-left-color: transparent;}
|
||||
.layui-layer-tabmain{line-height:24px; clear: both;}
|
||||
.layui-layer-tabmain .layui-layer-tabli{display:none;}
|
||||
.layui-layer-tabmain .layui-layer-tabli.layui-this{display: block;}
|
||||
|
||||
/* photo模式 */
|
||||
/* photos */
|
||||
.layui-layer-photos{background: none; box-shadow: none;}
|
||||
.layui-layer-photos .layui-layer-content{overflow:hidden; text-align: center;}
|
||||
.layui-layer-photos .layui-layer-phimg img{position: relative; width:100%; display: inline-block; *display:inline; *zoom:1; vertical-align:top;}
|
||||
.layui-layer-imgprev, .layui-layer-imgnext{position: fixed; top: 50%; width: 27px; _width: 44px; height: 44px; margin-top:-22px; outline:none;blr:expression(this.onFocus=this.blur());}
|
||||
.layui-layer-imgprev{left: 30px; background-position:-5px -5px; _background-position:-70px -5px;}
|
||||
.layui-layer-imgprev:hover{background-position:-33px -5px; _background-position:-120px -5px;}
|
||||
.layui-layer-imgnext{right: 30px; _right:8px; background-position:-5px -50px; _background-position:-70px -50px;}
|
||||
.layui-layer-imgnext:hover{background-position: -33px -50px; _background-position: -120px -50px;}
|
||||
.layui-layer-imgbar{position: fixed; left:0; right: 0; bottom:0; width:100%; height: 40px; line-height: 40px; background-color:#000\9; filter:Alpha(opacity=60); background-color: rgba(2,0,0,.35); color: #fff; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; font-size:0;}
|
||||
.layui-layer-imgtit{/*position:absolute; left:20px;*/}
|
||||
.layui-layer-imgtit *{display:inline-block; *display:inline; *zoom:1; vertical-align:top; font-size:12px;}
|
||||
.layui-layer-imgtit a{max-width:65%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; color:#fff;}
|
||||
.layui-layer-imgtit a:hover{color:#fff; text-decoration:underline;}
|
||||
.layui-layer-imgtit em{padding-left:10px; font-style: normal;}
|
||||
.layui-layer-photos .layui-layer-content{overflow: visible; text-align: center;}
|
||||
.layui-layer-photos .layer-layer-photos-main img{position: relative; width:100%; display: inline-block; *display:inline; *zoom:1; vertical-align:top;}
|
||||
.layui-layer-photos-prev,
|
||||
.layui-layer-photos-next{position: fixed; top: 50%; width: 52px; height: 52px; line-height: 52px; margin-top: -26px; cursor: pointer; font-size: 52px; color: #717171;}
|
||||
.layui-layer-photos-prev{left: 32px;}
|
||||
.layui-layer-photos-next{right: 32px;}
|
||||
.layui-layer-photos-prev:hover,
|
||||
.layui-layer-photos-next:hover{color: #959595;}
|
||||
|
||||
.layui-layer-photos-toolbar{position: fixed; left: 0; right: 0; bottom: 0; width: 100%; height: 52px; line-height: 52px; background-color: #000\9; filter: Alpha(opacity=60); background-color: rgba(0,0,0,.32); color: #fff; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; font-size:0;}
|
||||
.layui-layer-photos-toolbar > *{display:inline-block; vertical-align: top; padding: 0 16px; font-size: 12px; color: #fff; *display:inline; *zoom: 1;}
|
||||
.layui-layer-photos-toolbar *{font-size: 12px;}
|
||||
.layui-layer-photos-header{top: 0; bottom: auto;}
|
||||
.layui-layer-photos-header > span{cursor: pointer;}
|
||||
.layui-layer-photos-header > span:hover{background-color: rgba(51,51,51,.32);}
|
||||
.layui-layer-photos-header .layui-icon{font-size: 18px;}
|
||||
.layui-layer-photos-footer > h3{max-width: 65%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap;}
|
||||
.layui-layer-photos-footer a:hover{text-decoration: underline;}
|
||||
.layui-layer-photos-footer em{font-style: normal;}
|
||||
|
||||
|
||||
/* 关闭动画 */
|
||||
@-webkit-keyframes layer-bounceOut {
|
Before Width: | Height: | Size: 5.8 KiB |
Before Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 5.7 KiB |
Before Width: | Height: | Size: 701 B |
Before Width: | Height: | Size: 1.7 KiB |
@ -21,35 +21,33 @@ body .layer-ext-moon .layui-layer-title {
|
||||
border: none;
|
||||
}
|
||||
|
||||
body .layer-ext-moon .layui-layer-content .layui-layer-ico {
|
||||
body .layer-ext-moon .layui-layer-content .layui-layer-face {
|
||||
height: 32px;
|
||||
width: 32px;
|
||||
top:18.5px;
|
||||
}
|
||||
body .layer-ext-moon .layui-layer-ico0 {
|
||||
body .layer-ext-moon .layui-icon-tips {
|
||||
background: url(default.png) no-repeat -96px 0;
|
||||
;
|
||||
}
|
||||
body .layer-ext-moon .layui-layer-ico1 {
|
||||
body .layer-ext-moon .layui-icon-success {
|
||||
background: url(default.png) no-repeat -224px 0;
|
||||
;
|
||||
}
|
||||
body .layer-ext-moon .layui-layer-ico2 {
|
||||
body .layer-ext-moon .layui-icon-error {
|
||||
background: url(default.png) no-repeat -192px 0;
|
||||
}
|
||||
body .layer-ext-moon .layui-layer-ico3 {
|
||||
body .layer-ext-moon .layui-icon-question {
|
||||
background: url(default.png) no-repeat -160px 0;
|
||||
}
|
||||
body .layer-ext-moon .layui-layer-ico4 {
|
||||
body .layer-ext-moon .layui-icon-lock {
|
||||
background: url(default.png) no-repeat -320px 0;
|
||||
}
|
||||
body .layer-ext-moon .layui-layer-ico5 {
|
||||
body .layer-ext-moon .layui-icon-face-cry {
|
||||
background: url(default.png) no-repeat -288px 0;
|
||||
}
|
||||
body .layer-ext-moon .layui-layer-ico6 {
|
||||
body .layer-ext-moon .layui-icon-face-smile {
|
||||
background: url(default.png) -256px 0;
|
||||
}
|
||||
body .layer-ext-moon .layui-layer-ico7 {
|
||||
body .layer-ext-moon .layui-layer-download {
|
||||
background: url(default.png) no-repeat -128px 0;
|
||||
}
|
||||
body .layer-ext-moon .layui-layer-setwin {
|
||||
@ -75,10 +73,10 @@ body .layer-ext-moon .layui-layer-setwin .layui-layer-maxmin {
|
||||
body .layer-ext-moon .layui-layer-setwin .layui-layer-maxmin:hover {
|
||||
background: url(default.png) no-repeat -16px 0;
|
||||
}
|
||||
body .layer-ext-moon .layui-layer-setwin .layui-layer-close1,body .layer-ext-moon .layui-layer-setwin .layui-layer-close2 {
|
||||
body .layer-ext-moon .layui-layer-setwin .layui-layer-close1,body .layer-ext-moon .layui-layer-setwin .layui-layer-close2, body .layui-layer-tab .layui-layer-setwin .layui-layer-close1,body .layui-layer-tab .layui-layer-setwin .layui-layer-close2 {
|
||||
background: url(default.png) 0 0;
|
||||
}
|
||||
body .layer-ext-moon .layui-layer-setwin .layui-layer-close1:hover,body .layer-ext-moon .layui-layer-setwin .layui-layer-close2:hover {
|
||||
body .layer-ext-moon .layui-layer-setwin .layui-layer-close1:hover,body .layer-ext-moon .layui-layer-setwin .layui-layer-close2:hover, body .layui-layer-tab .layui-layer-setwin .layui-layer-close1:hover,body .layui-layer-tab .layui-layer-setwin .layui-layer-close2:hover {
|
||||
background: url(default.png) -48px 0;
|
||||
}
|
||||
body .layer-ext-moon .layui-layer-padding{padding-top: 24px;}
|
||||
@ -136,3 +134,36 @@ body .layer-ext-moon .layui-layer-btn .layui-layer-btn3 {
|
||||
body .layer-ext-moon .layui-layer-title span.layui-layer-tabnow{
|
||||
height:47px;
|
||||
}
|
||||
|
||||
/** 图标字体 **/
|
||||
@font-face {
|
||||
font-family: 'layui-icon';
|
||||
src: url('../../../../../fonts/iconfont.woff?v=282') format('woff');
|
||||
}
|
||||
|
||||
.layui-icon{
|
||||
font-family:"layui-icon" !important;
|
||||
font-style: normal;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
}
|
||||
/* font-class */
|
||||
.layui-icon-left:before{content:"\e603"}
|
||||
.layui-icon-right:before{content:"\e602"}
|
||||
.layui-icon-refresh:before{content:"\e669"}
|
||||
.layui-icon-slider:before{content:"\e714"}
|
||||
.layui-icon-add-circle:before{content:"\e61f"}
|
||||
.layui-icon-reduce-circle:before{content:"\e616"}
|
||||
.layui-icon-refresh-1:before{content:"\e666"}
|
||||
.layui-icon-loading:before{content:"\e63d"}
|
||||
.layui-icon-loading-1:before{content:"\e63e"}
|
||||
|
||||
/** 循环旋转动画 **/
|
||||
.layui-anim{-webkit-animation-duration: 0.3s; -webkit-animation-fill-mode: both; animation-duration: 0.3s; animation-fill-mode: both;}
|
||||
.layui-anim.layui-icon{display: inline-block;}
|
||||
.layui-anim-loop{-webkit-animation-iteration-count: infinite; animation-iteration-count: infinite;}
|
||||
.layui-trans,
|
||||
.layui-trans a{transition: all .2s; -webkit-transition: all .2s;}
|
||||
@-webkit-keyframes layui-rotate{from {-webkit-transform: rotate(0deg);} to {-webkit-transform: rotate(360deg);}}
|
||||
@keyframes layui-rotate{from {transform: rotate(0deg);} to {transform: rotate(360deg);}}
|
||||
.layui-anim-rotate{-webkit-animation-name: layui-rotate; animation-name: layui-rotate; -webkit-animation-duration: 1s; animation-duration: 1s; -webkit-animation-timing-function: linear; animation-timing-function: linear;}
|
||||
|
@ -1,45 +0,0 @@
|
||||
<?xml version="1.0" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
|
||||
<!--
|
||||
2013-9-30: Created.
|
||||
-->
|
||||
<svg>
|
||||
<metadata>
|
||||
Created by iconfont
|
||||
</metadata>
|
||||
<defs>
|
||||
|
||||
<font id="laydate-icon" horiz-adv-x="1024" >
|
||||
<font-face
|
||||
font-family="laydate-icon"
|
||||
font-weight="500"
|
||||
font-stretch="normal"
|
||||
units-per-em="1024"
|
||||
ascent="896"
|
||||
descent="-128"
|
||||
/>
|
||||
<missing-glyph />
|
||||
|
||||
<glyph glyph-name="x" unicode="x" horiz-adv-x="1001"
|
||||
d="M281 543q-27 -1 -53 -1h-83q-18 0 -36.5 -6t-32.5 -18.5t-23 -32t-9 -45.5v-76h912v41q0 16 -0.5 30t-0.5 18q0 13 -5 29t-17 29.5t-31.5 22.5t-49.5 9h-133v-97h-438v97zM955 310v-52q0 -23 0.5 -52t0.5 -58t-10.5 -47.5t-26 -30t-33 -16t-31.5 -4.5q-14 -1 -29.5 -0.5
|
||||
t-29.5 0.5h-32l-45 128h-439l-44 -128h-29h-34q-20 0 -45 1q-25 0 -41 9.5t-25.5 23t-13.5 29.5t-4 30v167h911zM163 247q-12 0 -21 -8.5t-9 -21.5t9 -21.5t21 -8.5q13 0 22 8.5t9 21.5t-9 21.5t-22 8.5zM316 123q-8 -26 -14 -48q-5 -19 -10.5 -37t-7.5 -25t-3 -15t1 -14.5
|
||||
t9.5 -10.5t21.5 -4h37h67h81h80h64h36q23 0 34 12t2 38q-5 13 -9.5 30.5t-9.5 34.5q-5 19 -11 39h-368zM336 498v228q0 11 2.5 23t10 21.5t20.5 15.5t34 6h188q31 0 51.5 -14.5t20.5 -52.5v-227h-327z" />
|
||||
|
||||
|
||||
|
||||
<glyph glyph-name="youyou" unicode="" d="M283.648 721.918976 340.873216 780.926976 740.352 383.997952 340.876288-12.925952 283.648 46.077952 619.52 383.997952Z" horiz-adv-x="1024" />
|
||||
|
||||
|
||||
<glyph glyph-name="zuozuo" unicode="" d="M740.352 721.918976 683.126784 780.926976 283.648 383.997952 683.123712-12.925952 740.352 46.077952 404.48 383.997952Z" horiz-adv-x="1024" />
|
||||
|
||||
|
||||
<glyph glyph-name="xiayiye" unicode="" d="M62.573 384.103l423.401 423.662c18.985 18.985 49.757 18.985 68.727 0 18.982-18.972 18.985-49.746 0-68.729l-355.058-355.067 356.796-356.796c18.977-18.971 18.976-49.746 0-68.727-18.982-18.976-49.751-18.976-68.727 0l-39.753 39.753 0.269 0.246-385.655 385.661zM451.365 384.103l423.407 423.662c18.985 18.985 49.757 18.985 68.727 0 18.982-18.972 18.985-49.746 0-68.729l-355.058-355.067 356.796-356.796c18.977-18.971 18.976-49.746 0-68.727-18.982-18.976-49.757-18.977-68.727 0l-39.762 39.754 0.273 0.249-385.662 385.661zM451.365 384.103z" horiz-adv-x="1024" />
|
||||
|
||||
|
||||
<glyph glyph-name="xiayiye1" unicode="" d="M948.066926 382.958838l-411.990051-412.24426c-18.47333-18.47333-48.417689-18.47333-66.875207 0-18.47333 18.461167-18.47333 48.405526 0 66.875207L814.691135 383.088983 467.512212 730.269123c-18.466032 18.458735-18.466032 48.405526 0 66.873991 18.468465 18.464816 48.410391 18.464816 66.872774 0l38.682336-38.682336-0.261507-0.239614 375.259894-375.265975v0.003649m-378.312834 0L157.756743-29.285422c-18.47333-18.47333-48.415256-18.47333-66.872775 0-18.47333 18.461167-18.47333 48.405526 0 66.875207L436.369787 383.088983 89.19208 730.269123c-18.4636 18.458735-18.4636 48.405526 0 66.873991 18.470898 18.464816 48.415256 18.464816 66.872774 0l38.692067-38.682336-0.266372-0.239614 375.267191-375.265975-0.004865 0.003649m0 0z" horiz-adv-x="1024" />
|
||||
|
||||
|
||||
|
||||
|
||||
</font>
|
||||
</defs></svg>
|
Before Width: | Height: | Size: 3.0 KiB |
@ -5,6 +5,11 @@ $(document).ready(function(){
|
||||
form.submit();
|
||||
}
|
||||
});
|
||||
// 非法字符验证
|
||||
jQuery.validator.addMethod("specialSign",function(value,element) {
|
||||
var char = /^[^<>"'|\\]+$/;
|
||||
return this.optional(element) || (char.test(value));
|
||||
},"不能包含非法字符:< > \" ' \\\ |");
|
||||
// 手机号码验证身份证正则合并:(^\d{15}$)|(^\d{17}([0-9]|X)$)
|
||||
jQuery.validator.addMethod("isPhone",function(value,element) {
|
||||
var length = value.length;
|
||||
@ -26,7 +31,6 @@ $(document).ready(function(){
|
||||
var userName = /^[a-zA-Z0-9]{2,13}$/;
|
||||
return this.optional(element) || (userName).test(value);
|
||||
},'请输入数字或者字母,不包含特殊字符');
|
||||
|
||||
// 校验身份证
|
||||
jQuery.validator.addMethod("isIdentity",function(value,element) {
|
||||
var id = /^(\d{15}$|^\d{18}$|^\d{17}(\d|X))$/;
|
||||
|
@ -159,3 +159,17 @@ body.signin {
|
||||
.form-control:focus {
|
||||
border-color: #1ab394 !important;
|
||||
}
|
||||
|
||||
body .layer-ext-moon-msg[type="dialog"]{
|
||||
min-width: 100px !important;
|
||||
}
|
||||
body .layer-ext-moon-msg {
|
||||
background-color: rgba(0,0,0,0.6);
|
||||
color: #fff;
|
||||
border: none;
|
||||
}
|
||||
|
||||
body .layer-ext-moon-msg .layui-layer-content{
|
||||
padding: 12px 25px;
|
||||
text-align: center;
|
||||
}
|
@ -1 +1 @@
|
||||
html{height:100%}body.signin{height:auto;background:url(../img/login-background.jpg) no-repeat center fixed;-webkit-background-size:cover;-moz-background-size:cover;-o-background-size:cover;background-size:cover}.signinpanel{width:750px;margin:10% auto 0;color:rgba(255,255,255,.95)}.signinpanel .logopanel{float:none;width:auto;padding:0;background:0}.signinpanel .signin-info ul{list-style:none;padding:0;margin:20px 0}.signinpanel .form-control{display:block;margin-top:15px}.signinpanel .uname{background:#fff url(../img/user.png) no-repeat 95% center;color:#333}.signinpanel .pword{background:#fff url(../img/locked.png) no-repeat 95% center;color:#333}.signinpanel .code{background:#fff no-repeat 95% center;color:#333;margin:0 0 15px 0}.signinpanel .btn{margin-top:15px}.signinpanel form{background:rgba(255,255,255,.2);border:1px solid rgba(255,255,255,.3);-moz-box-shadow:0 3px 0 rgba(12,12,12,.03);-webkit-box-shadow:0 3px 0 rgba(12,12,12,.03);box-shadow:0 3px 0 rgba(12,12,12,.03);-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;padding:30px}.signup-footer{border-top:solid 1px rgba(255,255,255,.3);margin:20px 0;padding-top:15px}@media screen and (max-width:768px){.signinpanel,.signuppanel{margin:0 auto;width:380px!important;padding:20px}.signinpanel form{margin-top:20px}.signup-footer,.signuppanel .form-control{margin-bottom:10px}.signup-footer .pull-left,.signup-footer .pull-right{float:none!important;text-align:center}.signinpanel .signin-info ul{display:none}}@media screen and (max-width:320px){.signinpanel,.signuppanel{margin:0 20px;width:auto}}.checkbox-custom{position:relative;padding:0 15px 0 25px;margin-bottom:7px;display:inline-block}.checkbox-custom input[type="checkbox"]{opacity:0;position:absolute;cursor:pointer;z-index:2;margin:-6px 0 0 0;top:50%;left:3px}.checkbox-custom label:before{content:'';position:absolute;top:50%;left:0;margin-top:-9px;width:18px;height:17px;display:inline-block;border-radius:2px;border:1px solid #bbb;background:#fff}.checkbox-custom input[type="checkbox"]:checked+label:after{position:absolute;display:inline-block;font-family:'Glyphicons Halflings';content:"\e013";top:42%;left:3px;margin-top:-5px;font-size:11px;line-height:1;width:16px;height:16px;color:#333}.checkbox-custom label{cursor:pointer;line-height:1.2;font-weight:normal;margin-bottom:0;text-align:left}.form-control,.form-control:focus,.has-error .form-control:focus,.has-success .form-control:focus,.has-warning .form-control:focus,.navbar-collapse,.navbar-form,.navbar-form-custom .form-control:focus,.navbar-form-custom .form-control:hover,.open .btn.dropdown-toggle,.panel,.popover,.progress,.progress-bar{box-shadow:none}.form-control{border-radius:1px!important;padding:6px 12px!important;height:34px!important}.form-control:focus{border-color:#1ab394!important}
|
||||
html{height:100%}body.signin{height:auto;background:url(../img/login-background.jpg) no-repeat center fixed;-webkit-background-size:cover;-moz-background-size:cover;-o-background-size:cover;background-size:cover}.signinpanel{width:750px;margin:10% auto 0;color:rgba(255,255,255,.95)}.signinpanel .logopanel{float:none;width:auto;padding:0;background:0}.signinpanel .signin-info ul{list-style:none;padding:0;margin:20px 0}.signinpanel .form-control{display:block;margin-top:15px}.signinpanel .uname{background:#fff url(../img/user.png) no-repeat 95% center;color:#333}.signinpanel .pword{background:#fff url(../img/locked.png) no-repeat 95% center;color:#333}.signinpanel .code{background:#fff no-repeat 95% center;color:#333;margin:0 0 15px 0}.signinpanel .btn{margin-top:15px}.signinpanel form{background:rgba(255,255,255,.2);border:1px solid rgba(255,255,255,.3);-moz-box-shadow:0 3px 0 rgba(12,12,12,.03);-webkit-box-shadow:0 3px 0 rgba(12,12,12,.03);box-shadow:0 3px 0 rgba(12,12,12,.03);-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;padding:30px}.signup-footer{border-top:solid 1px rgba(255,255,255,.3);margin:20px 0;padding-top:15px}@media screen and (max-width:768px){.signinpanel,.signuppanel{margin:0 auto;width:380px!important;padding:20px}.signinpanel form{margin-top:20px}.signup-footer,.signuppanel .form-control{margin-bottom:10px}.signup-footer .pull-left,.signup-footer .pull-right{float:none!important;text-align:center}.signinpanel .signin-info ul{display:none}}@media screen and (max-width:320px){.signinpanel,.signuppanel{margin:0 20px;width:auto}}.checkbox-custom{position:relative;padding:0 15px 0 25px;margin-bottom:7px;display:inline-block}.checkbox-custom input[type="checkbox"]{opacity:0;position:absolute;cursor:pointer;z-index:2;margin:-6px 0 0 0;top:50%;left:3px}.checkbox-custom label:before{content:'';position:absolute;top:50%;left:0;margin-top:-9px;width:18px;height:17px;display:inline-block;border-radius:2px;border:1px solid #bbb;background:#fff}.checkbox-custom input[type="checkbox"]:checked+label:after{position:absolute;display:inline-block;font-family:'Glyphicons Halflings';content:"\e013";top:42%;left:3px;margin-top:-5px;font-size:11px;line-height:1;width:16px;height:16px;color:#333}.checkbox-custom label{cursor:pointer;line-height:1.2;font-weight:normal;margin-bottom:0;text-align:left}.form-control,.form-control:focus,.has-error .form-control:focus,.has-success .form-control:focus,.has-warning .form-control:focus,.navbar-collapse,.navbar-form,.navbar-form-custom .form-control:focus,.navbar-form-custom .form-control:hover,.open .btn.dropdown-toggle,.panel,.popover,.progress,.progress-bar{box-shadow:none}.form-control{border-radius:1px!important;padding:6px 12px!important;height:34px!important}.form-control:focus{border-color:#1ab394!important}body .layer-ext-moon-msg[type="dialog"]{min-width:100px!important}body .layer-ext-moon-msg{background-color:rgba(0,0,0,0.6);color:#fff;border:0}body .layer-ext-moon-msg .layui-layer-content{padding:12px 25px;text-align:center}
|
BIN
ruoyi-admin/src/main/resources/static/fonts/iconfont.eot
Normal file
405
ruoyi-admin/src/main/resources/static/fonts/iconfont.svg
Normal file
After Width: | Height: | Size: 322 KiB |
BIN
ruoyi-admin/src/main/resources/static/fonts/iconfont.ttf
Normal file
BIN
ruoyi-admin/src/main/resources/static/fonts/iconfont.woff
Normal file
@ -384,12 +384,12 @@ label.error {
|
||||
position: relative;
|
||||
padding-left: 25px;
|
||||
padding-right: 15px;
|
||||
padding-top: 8px;
|
||||
padding-top: 7px;
|
||||
}
|
||||
|
||||
.icheckbox, .icheckbox-blue, .iradio, .iradio-blue, .iradio-purple {
|
||||
position: absolute;
|
||||
top: 8px;
|
||||
top: 7px;
|
||||
left: 0
|
||||
}
|
||||
|
||||
@ -1008,6 +1008,37 @@ table.rc-table-resizing thead > th > a {
|
||||
padding-bottom:5px
|
||||
}
|
||||
|
||||
.form-control-plaintext {
|
||||
display: block;
|
||||
width: 100%;
|
||||
padding-top: .286rem;
|
||||
padding-bottom: .286rem;
|
||||
margin-bottom: 0;
|
||||
line-height: 1.57142857;
|
||||
color: #212529;
|
||||
background-color: transparent;
|
||||
border: solid transparent;
|
||||
border-width: 1px 0;
|
||||
font-weight: 500;
|
||||
border-bottom: 1px dashed #ccd5db;
|
||||
min-height: 25px
|
||||
}
|
||||
|
||||
.form-control-plaintext-no-content {
|
||||
display: block;
|
||||
width: 100%;
|
||||
padding-top: .286rem;
|
||||
padding-bottom: .286rem;
|
||||
margin-bottom: 0;
|
||||
line-height: 1.57142857;
|
||||
color: #ddd !important;
|
||||
background-color: transparent;
|
||||
border: solid transparent;
|
||||
border-width: 1px 0;
|
||||
border-bottom: 1px dashed #ccd5db;
|
||||
min-height: 25px
|
||||
}
|
||||
|
||||
.main-content {
|
||||
background-color: #ffffff;
|
||||
color: inherit;
|
||||
@ -1036,7 +1067,7 @@ table.rc-table-resizing thead > th > a {
|
||||
}
|
||||
|
||||
/** 表格行拖拽样式 **/
|
||||
.reorder_rows_onDragClass td {
|
||||
.reorder-rows-on-drag-class td {
|
||||
color:yellow!important;
|
||||
background-color:#999!important;
|
||||
text-shadow:0 0 10px black,0 0 10px black,0 0 8px black,0 0 6px black,0 0 6px black;
|
||||
|
@ -2,11 +2,6 @@
|
||||
* 首页方法封装处理
|
||||
* Copyright (c) 2019 ruoyi
|
||||
*/
|
||||
layer.config({
|
||||
extend: 'moon/style.css',
|
||||
skin: 'layer-ext-moon'
|
||||
});
|
||||
|
||||
var isMobile = false;
|
||||
var sidebarHeight = isMobile ? '100%' : '96%';
|
||||
|
||||
@ -72,10 +67,19 @@ $(window).bind("load resize", function() {
|
||||
}
|
||||
});
|
||||
|
||||
function openToCurrentTab(obj) {
|
||||
if (isScrollToTop) {
|
||||
$(obj).show().siblings('.RuoYi_iframe').hide();
|
||||
} else {
|
||||
$(obj).css({"visibility": "visible", "position": "static"}).siblings('.RuoYi_iframe').css({"visibility": "hidden", "position": "absolute"});
|
||||
}
|
||||
}
|
||||
|
||||
function syncMenuTab(dataId) {
|
||||
if (isLinkage) {
|
||||
var $dataObj = $('a[href$="' + decodeURI(dataId) + '"]');
|
||||
if ($dataObj.attr("class") != null && !$dataObj.hasClass("noactive")) {
|
||||
$('.tab-pane li').removeClass("active");
|
||||
$('.nav ul').removeClass("in");
|
||||
$dataObj.parents("ul").addClass("in")
|
||||
$dataObj.parents("li").addClass("active").siblings().removeClass("active").find('li').removeClass("active");
|
||||
@ -156,7 +160,7 @@ $(function() {
|
||||
// 显示tab对应的内容区
|
||||
$('.RuoYi_iframe').each(function() {
|
||||
if ($(this).data('id') == currentId) {
|
||||
$(this).show().siblings('.RuoYi_iframe').hide();
|
||||
openToCurrentTab(this);
|
||||
}
|
||||
});
|
||||
$(element).addClass('active').siblings('.menuTab').removeClass('active');
|
||||
@ -288,7 +292,7 @@ $(function() {
|
||||
// 显示tab对应的内容区
|
||||
$('.mainContent .RuoYi_iframe').each(function() {
|
||||
if ($(this).data('id') == dataUrl) {
|
||||
$(this).show().siblings('.RuoYi_iframe').hide();
|
||||
openToCurrentTab(this);
|
||||
return false;
|
||||
}
|
||||
});
|
||||
@ -307,7 +311,11 @@ $(function() {
|
||||
|
||||
// 添加选项卡对应的iframe
|
||||
var str1 = '<iframe class="RuoYi_iframe" name="iframe' + dataIndex + '" width="100%" height="100%" src="' + dataUrl + '" frameborder="0" data-id="' + dataUrl + '" data-refresh="' + isRefresh + '" seamless></iframe>';
|
||||
if (isScrollToTop) {
|
||||
$('.mainContent').find('iframe.RuoYi_iframe').hide().parents('.mainContent').append(str1);
|
||||
} else {
|
||||
$('.mainContent').find('iframe.RuoYi_iframe').css({"visibility": "hidden", "position": "absolute"}).parents('.mainContent').append(str1);
|
||||
}
|
||||
|
||||
$.modal.loading("数据加载中,请稍候...");
|
||||
|
||||
@ -349,7 +357,7 @@ $(function() {
|
||||
|
||||
$('.mainContent .RuoYi_iframe').each(function() {
|
||||
if ($(this).data('id') == activeId) {
|
||||
$(this).show().siblings('.RuoYi_iframe').hide();
|
||||
openToCurrentTab(this);
|
||||
return false;
|
||||
}
|
||||
});
|
||||
@ -377,7 +385,7 @@ $(function() {
|
||||
$(this).parents('.menuTab').prev('.menuTab:last').addClass('active');
|
||||
$('.mainContent .RuoYi_iframe').each(function() {
|
||||
if ($(this).data('id') == activeId) {
|
||||
$(this).show().siblings('.RuoYi_iframe').hide();
|
||||
openToCurrentTab(this);
|
||||
return false;
|
||||
}
|
||||
});
|
||||
@ -397,7 +405,7 @@ $(function() {
|
||||
$('.menuTab[data-id="' + panelUrl + '"]').addClass('active').siblings('.menuTab').removeClass('active');
|
||||
$('.mainContent .RuoYi_iframe').each(function() {
|
||||
if ($(this).data('id') == panelUrl) {
|
||||
$(this).show().siblings('.RuoYi_iframe').hide();
|
||||
openToCurrentTab(this);
|
||||
return false;
|
||||
}
|
||||
});
|
||||
@ -418,7 +426,7 @@ $(function() {
|
||||
});
|
||||
}
|
||||
scrollToTab($('.menuTab.active'));
|
||||
syncMenuTab($('.page-tabs-content').find('.active').attr('data-id'));
|
||||
syncMenuTab($.common.isNotEmpty(panelUrl) ? panelUrl : $('.page-tabs-content').find('.active').attr('data-id'));
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -439,7 +447,7 @@ $(function() {
|
||||
// 显示tab对应的内容区
|
||||
$('.mainContent .RuoYi_iframe').each(function() {
|
||||
if ($(this).data('id') == currentId) {
|
||||
$(this).show().siblings('.RuoYi_iframe').hide();
|
||||
openToCurrentTab(this);
|
||||
isRefresh = $.common.nullToDefault($(this).data('refresh'), false);
|
||||
return false;
|
||||
}
|
||||
@ -491,7 +499,11 @@ $(function() {
|
||||
$(this).remove();
|
||||
});
|
||||
$('.page-tabs-content').children("[data-id]:first").each(function() {
|
||||
if (isScrollToTop) {
|
||||
$('.RuoYi_iframe[data-id="' + $(this).data('id') + '"]').show();
|
||||
} else {
|
||||
$('.RuoYi_iframe[data-id="' + $(this).data('id') + '"]').css({"visibility": "visible", "position": "static"});
|
||||
}
|
||||
$(this).addClass("active");
|
||||
});
|
||||
$('.page-tabs-content').css("margin-left", "0");
|
||||
|
@ -5,15 +5,9 @@
|
||||
|
||||
var startLayDate;
|
||||
var endLayDate;
|
||||
$(function() {
|
||||
var isScrollToTop = parent.isScrollToTop;
|
||||
|
||||
// layer扩展皮肤
|
||||
if (window.layer !== undefined) {
|
||||
layer.config({
|
||||
extend: 'moon/style.css',
|
||||
skin: 'layer-ext-moon'
|
||||
});
|
||||
}
|
||||
$(function() {
|
||||
|
||||
// 回到顶部绑定
|
||||
if ($.fn.toTop !== undefined) {
|
||||
@ -48,7 +42,7 @@ $(function() {
|
||||
});
|
||||
|
||||
// laydate 时间控件绑定
|
||||
if ($(".select-time").length > 0) {
|
||||
if ($(".select-time").length > 0 && $('#startTime').length > 0 && $('#endTime').length > 0) {
|
||||
layui.use('laydate', function() {
|
||||
var laydate = layui.laydate;
|
||||
startLayDate = laydate.render({
|
||||
@ -245,7 +239,7 @@ var closeItem = function(dataId){
|
||||
$('.menuTab[data-id="' + panelUrl + '"]', topWindow).addClass('active').siblings('.menuTab').removeClass('active');
|
||||
$('.mainContent .RuoYi_iframe', topWindow).each(function() {
|
||||
if ($(this).data('id') == panelUrl) {
|
||||
$(this).show().siblings('.RuoYi_iframe').hide();
|
||||
openToCurrentTab(this);
|
||||
return false;
|
||||
}
|
||||
});
|
||||
@ -269,7 +263,7 @@ function createMenuItem(dataUrl, menuName, isRefresh) {
|
||||
// 显示tab对应的内容区
|
||||
$('.mainContent .RuoYi_iframe', topWindow).each(function() {
|
||||
if ($(this).data('id') == dataUrl) {
|
||||
$(this).show().siblings('.RuoYi_iframe').hide();
|
||||
openToCurrentTab(this);
|
||||
return false;
|
||||
}
|
||||
});
|
||||
@ -288,7 +282,11 @@ function createMenuItem(dataUrl, menuName, isRefresh) {
|
||||
|
||||
// 添加选项卡对应的iframe
|
||||
var str1 = '<iframe class="RuoYi_iframe" name="iframe' + dataIndex + '" width="100%" height="100%" src="' + dataUrl + '" frameborder="0" data-id="' + dataUrl + '" data-panel="' + panelUrl + '" seamless></iframe>';
|
||||
if (isScrollToTop) {
|
||||
$('.mainContent', topWindow).find('iframe.RuoYi_iframe').hide().parents('.mainContent').append(str1);
|
||||
} else {
|
||||
$('.mainContent', topWindow).find('iframe.RuoYi_iframe').css({"visibility": "hidden", "position": "absolute"}).parents('.mainContent').append(str1);
|
||||
}
|
||||
|
||||
window.parent.$.modal.loading("数据加载中,请稍候...");
|
||||
$('.mainContent iframe:visible', topWindow).on('load', function() {
|
||||
@ -358,6 +356,14 @@ function activeWindow() {
|
||||
return $('.RuoYi_iframe[data-id="' + currentId + '"]', topWindow)[0].contentWindow;
|
||||
}
|
||||
|
||||
function openToCurrentTab(obj) {
|
||||
if (isScrollToTop) {
|
||||
$(obj).show().siblings('.RuoYi_iframe').hide();
|
||||
} else {
|
||||
$(obj).css({"visibility": "visible", "position": "static"}).siblings('.RuoYi_iframe').css({"visibility": "hidden", "position": "absolute"});
|
||||
}
|
||||
}
|
||||
|
||||
/** 密码规则范围验证 */
|
||||
function checkpwd(chrtype, password) {
|
||||
if (chrtype == 1) {
|
||||
|
@ -41,17 +41,18 @@ var table = {
|
||||
method: 'post',
|
||||
height: undefined,
|
||||
sidePagination: "server",
|
||||
undefinedText: '-',
|
||||
sortName: undefined,
|
||||
sortOrder: "asc",
|
||||
pagination: true,
|
||||
paginationLoop: false,
|
||||
pageSize: 10,
|
||||
pageNumber: 1,
|
||||
pageList: [10, 25, 50],
|
||||
pageList: [10, 25, 50, 100],
|
||||
toolbar: "toolbar",
|
||||
loadingFontSize: 13,
|
||||
striped: false,
|
||||
escape: false,
|
||||
escape: true,
|
||||
firstLoad: true,
|
||||
showFooter: false,
|
||||
search: false,
|
||||
@ -87,6 +88,7 @@ var table = {
|
||||
cache: false, // 是否使用缓存
|
||||
height: options.height, // 表格的高度
|
||||
striped: options.striped, // 是否显示行间隔色
|
||||
undefinedText: options.undefinedText, // 数据值为空时显示的内容
|
||||
sortable: true, // 是否启用排序
|
||||
sortStable: true, // 设置为 true 将获得稳定的排序
|
||||
sortName: options.sortName, // 排序列名称
|
||||
@ -101,6 +103,7 @@ var table = {
|
||||
showFooter: options.showFooter, // 是否显示表尾
|
||||
iconSize: 'outline', // 图标大小:undefined默认的按钮尺寸 xs超小按钮sm小按钮lg大按钮
|
||||
toolbar: '#' + options.toolbar, // 指定工作栏
|
||||
virtualScroll: options.virtualScroll, // 是否启动虚拟滚动(大量数据纯展示时使用)
|
||||
loadingFontSize: options.loadingFontSize, // 自定义加载文本的字体大小
|
||||
sidePagination: options.sidePagination, // server启用服务端分页client客户端分页
|
||||
search: options.search, // 是否显示搜索框功能
|
||||
@ -316,7 +319,7 @@ var table = {
|
||||
_value = _value.replace(/\'/g,"'");
|
||||
_value = _value.replace(/\"/g,""");
|
||||
var actions = [];
|
||||
actions.push($.common.sprintf('<input style="opacity: 0;position: absolute;width:5px;z-index:-1" type="text" value="%s"/>', _value));
|
||||
actions.push($.common.sprintf('<input 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" data-target="%s" title="%s">%s</a>', _target, _value, _text));
|
||||
return actions.join('');
|
||||
} else {
|
||||
@ -539,7 +542,8 @@ var table = {
|
||||
$.each(datas, function(index, dict) {
|
||||
if (dict.dictValue == ('' + value)) {
|
||||
var listClass = $.common.equals("default", dict.listClass) || $.common.isEmpty(dict.listClass) ? "" : "badge badge-" + dict.listClass;
|
||||
actions.push($.common.sprintf("<span class='%s'>%s</span>", listClass, dict.dictLabel));
|
||||
var cssClass = $.common.isNotEmpty(dict.cssClass) ? dict.cssClass : listClass;
|
||||
actions.push($.common.sprintf("<span class='%s'>%s</span>", cssClass, dict.dictLabel));
|
||||
return false;
|
||||
}
|
||||
});
|
||||
@ -694,9 +698,7 @@ var table = {
|
||||
var tableId = $.common.isEmpty(tableId) ? table.options.id : tableId;
|
||||
if (table.options.type == table_type.bootstrapTable) {
|
||||
var params = $("#" + tableId).bootstrapTable('getOptions');
|
||||
if ($.common.isNotEmpty(pageNumber)) {
|
||||
params.pageNumber = pageNumber;
|
||||
}
|
||||
params.pageNumber = 1;
|
||||
if ($.common.isNotEmpty(pageSize)) {
|
||||
params.pageSize = pageSize;
|
||||
}
|
||||
@ -918,6 +920,7 @@ var table = {
|
||||
fix: false,
|
||||
area: [_width + 'px', _height + 'px'],
|
||||
content: _url,
|
||||
closeBtn: $.common.isEmpty(options.closeBtn) ? 1 : options.closeBtn,
|
||||
shadeClose: $.common.isEmpty(options.shadeClose) ? true : options.shadeClose,
|
||||
skin: options.skin,
|
||||
// options.btn设置为0表示不显示按钮
|
||||
@ -988,18 +991,38 @@ var table = {
|
||||
createMenuItem(url, title);
|
||||
closeItem(dataId);
|
||||
},
|
||||
// 右侧弹出窗口打开
|
||||
popupRight: function(title, url){
|
||||
var width = 150;
|
||||
if (top.location !== self.location) {
|
||||
if ($(top.window).outerWidth() < 400) {
|
||||
width = 50;
|
||||
}
|
||||
}
|
||||
top.layer.open({
|
||||
type: 2,
|
||||
offset: 'r',
|
||||
anim: 'slideLeft',
|
||||
move: false,
|
||||
title: title,
|
||||
shade: 0.3,
|
||||
shadeClose: true,
|
||||
area: [($(window).outerWidth() - width) + 'px', '100%'],
|
||||
content: url
|
||||
});
|
||||
},
|
||||
// 关闭选项卡
|
||||
closeTab: function (dataId) {
|
||||
closeItem(dataId);
|
||||
},
|
||||
// 禁用按钮
|
||||
disable: function() {
|
||||
var doc = window.top == window.parent ? window.document : window.parent.document;
|
||||
var doc = window.top == window.parent ? top.window.document : window.parent.document;
|
||||
$("a[class*=layui-layer-btn]", doc).addClass("layer-disabled");
|
||||
},
|
||||
// 启用按钮
|
||||
enable: function() {
|
||||
var doc = window.top == window.parent ? window.document : window.parent.document;
|
||||
var doc = window.top == window.parent ? top.window.document : window.parent.document;
|
||||
$("a[class*=layui-layer-btn]", doc).removeClass("layer-disabled");
|
||||
},
|
||||
// 打开遮罩层
|
||||
@ -1055,8 +1078,7 @@ var table = {
|
||||
width: width,
|
||||
height: height,
|
||||
url: _url,
|
||||
skin: 'layui-layer-gray',
|
||||
btn: ['关闭'],
|
||||
btn: 0,
|
||||
yes: function (index, layero) {
|
||||
$.modal.close(index);
|
||||
}
|
||||
@ -1194,6 +1216,12 @@ var table = {
|
||||
}
|
||||
return url;
|
||||
},
|
||||
// 右侧弹出详情
|
||||
view: function(id){
|
||||
table.set();
|
||||
var url = table.options.viewUrl.replace("{id}", id);
|
||||
$.modal.popupRight(table.options.modalName + "信息详情", url);
|
||||
},
|
||||
// 保存信息 刷新表格
|
||||
save: function(url, data, callback) {
|
||||
var config = {
|
||||
|
@ -8,18 +8,15 @@ $(function() {
|
||||
});
|
||||
});
|
||||
|
||||
$.validator.setDefaults({
|
||||
submitHandler: function() {
|
||||
login();
|
||||
}
|
||||
});
|
||||
|
||||
function login() {
|
||||
$.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();
|
||||
var rememberMe = $("input[name='rememberme']").is(':checked');
|
||||
if($.common.isEmpty(validateCode) && captchaEnabled) {
|
||||
$.modal.msg("请输入验证码");
|
||||
return false;
|
||||
}
|
||||
$.ajax({
|
||||
type: "post",
|
||||
url: ctx + "login",
|
||||
@ -29,6 +26,9 @@ function login() {
|
||||
"validateCode": validateCode,
|
||||
"rememberMe": rememberMe
|
||||
},
|
||||
beforeSend: function () {
|
||||
$.modal.loading($("#btnSubmit").data("loading"));
|
||||
},
|
||||
success: function(r) {
|
||||
if (r.code == web_status.SUCCESS) {
|
||||
location.href = ctx + 'index';
|
||||
@ -60,6 +60,9 @@ function validateRule() {
|
||||
password: {
|
||||
required: icon + "请输入您的密码",
|
||||
}
|
||||
},
|
||||
submitHandler: function(form) {
|
||||
login();
|
||||
}
|
||||
})
|
||||
}
|
||||
|
@ -7,17 +7,14 @@ $(function() {
|
||||
});
|
||||
});
|
||||
|
||||
$.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();
|
||||
if($.common.isEmpty(validateCode) && captchaEnabled) {
|
||||
$.modal.msg("请输入验证码");
|
||||
return false;
|
||||
}
|
||||
$.ajax({
|
||||
type: "post",
|
||||
url: ctx + "register",
|
||||
@ -26,6 +23,9 @@ function register() {
|
||||
"password": password,
|
||||
"validateCode": validateCode
|
||||
},
|
||||
beforeSend: function () {
|
||||
$.modal.loading($("#btnSubmit").data("loading"));
|
||||
},
|
||||
success: function(r) {
|
||||
if (r.code == web_status.SUCCESS) {
|
||||
layer.alert("<font color='red'>恭喜你,您的账号 " + username + " 注册成功!</font>", {
|
||||
@ -57,7 +57,8 @@ function validateRule() {
|
||||
},
|
||||
password: {
|
||||
required: true,
|
||||
minlength: 5
|
||||
minlength: 5,
|
||||
specialSign: true
|
||||
},
|
||||
confirmPassword: {
|
||||
required: true,
|
||||
@ -77,6 +78,9 @@ function validateRule() {
|
||||
required: icon + "请再次输入您的密码",
|
||||
equalTo: icon + "两次密码输入不一致"
|
||||
}
|
||||
},
|
||||
submitHandler: function(form) {
|
||||
register();
|
||||
}
|
||||
})
|
||||
}
|
||||
|
@ -14,13 +14,13 @@
|
||||
<a class="collapse-link">
|
||||
<i class="fa fa-chevron-up"></i>
|
||||
</a>
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="#">
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="javascript:;">
|
||||
<i class="fa fa-wrench"></i>
|
||||
</a>
|
||||
<ul class="dropdown-menu dropdown-user">
|
||||
<li><a href="#">选项1</a>
|
||||
<li><a href="javascript:;">选项1</a>
|
||||
</li>
|
||||
<li><a href="#">选项2</a>
|
||||
<li><a href="javascript:;">选项2</a>
|
||||
</li>
|
||||
</ul>
|
||||
<a class="close-link">
|
||||
@ -54,7 +54,7 @@
|
||||
<h4>还不是会员?</h4>
|
||||
<p>您可以注册一个新账户</p>
|
||||
<p class="text-center">
|
||||
<a href="#"><i class="fa fa-sign-in big-icon"></i></a>
|
||||
<a href="javascript:;"><i class="fa fa-sign-in big-icon"></i></a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
@ -69,13 +69,13 @@
|
||||
<a class="collapse-link">
|
||||
<i class="fa fa-chevron-up"></i>
|
||||
</a>
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="#">
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="javascript:;">
|
||||
<i class="fa fa-wrench"></i>
|
||||
</a>
|
||||
<ul class="dropdown-menu dropdown-user">
|
||||
<li><a href="#">选项1</a>
|
||||
<li><a href="javascript:;">选项1</a>
|
||||
</li>
|
||||
<li><a href="#">选项2</a>
|
||||
<li><a href="javascript:;">选项2</a>
|
||||
</li>
|
||||
</ul>
|
||||
<a class="close-link">
|
||||
@ -119,13 +119,13 @@
|
||||
<a class="collapse-link">
|
||||
<i class="fa fa-chevron-up"></i>
|
||||
</a>
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="#">
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="javascript:;">
|
||||
<i class="fa fa-wrench"></i>
|
||||
</a>
|
||||
<ul class="dropdown-menu dropdown-user">
|
||||
<li><a href="#">选项1</a>
|
||||
<li><a href="javascript:;">选项1</a>
|
||||
</li>
|
||||
<li><a href="#">选项2</a>
|
||||
<li><a href="javascript:;">选项2</a>
|
||||
</li>
|
||||
</ul>
|
||||
<a class="close-link">
|
||||
@ -160,13 +160,13 @@
|
||||
<a class="collapse-link">
|
||||
<i class="fa fa-chevron-up"></i>
|
||||
</a>
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="#">
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="javascript:;">
|
||||
<i class="fa fa-wrench"></i>
|
||||
</a>
|
||||
<ul class="dropdown-menu dropdown-user">
|
||||
<li><a href="#">选项1</a>
|
||||
<li><a href="javascript:;">选项1</a>
|
||||
</li>
|
||||
<li><a href="#">选项2</a>
|
||||
<li><a href="javascript:;">选项2</a>
|
||||
</li>
|
||||
</ul>
|
||||
<a class="close-link">
|
||||
@ -191,13 +191,13 @@
|
||||
<a class="collapse-link">
|
||||
<i class="fa fa-chevron-up"></i>
|
||||
</a>
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="#">
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="javascript:;">
|
||||
<i class="fa fa-wrench"></i>
|
||||
</a>
|
||||
<ul class="dropdown-menu dropdown-user">
|
||||
<li><a href="#">选项1</a>
|
||||
<li><a href="javascript:;">选项1</a>
|
||||
</li>
|
||||
<li><a href="#">选项2</a>
|
||||
<li><a href="javascript:;">选项2</a>
|
||||
</li>
|
||||
</ul>
|
||||
<a class="close-link">
|
||||
@ -463,14 +463,14 @@
|
||||
<button data-toggle="dropdown" class="btn btn-white dropdown-toggle" type="button">操作 <span class="caret"></span>
|
||||
</button>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a href="#">选项1</a>
|
||||
<li><a href="javascript:;">选项1</a>
|
||||
</li>
|
||||
<li><a href="#">选项2</a>
|
||||
<li><a href="javascript:;">选项2</a>
|
||||
</li>
|
||||
<li><a href="#">选项3</a>
|
||||
<li><a href="javascript:;">选项3</a>
|
||||
</li>
|
||||
<li class="divider"></li>
|
||||
<li><a href="#">选项4</a>
|
||||
<li><a href="javascript:;">选项4</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
@ -483,14 +483,14 @@
|
||||
<button data-toggle="dropdown" class="btn btn-white dropdown-toggle" type="button">操作 <span class="caret"></span>
|
||||
</button>
|
||||
<ul class="dropdown-menu pull-right">
|
||||
<li><a href="#">选项1</a>
|
||||
<li><a href="javascript:;">选项1</a>
|
||||
</li>
|
||||
<li><a href="#">选项2</a>
|
||||
<li><a href="javascript:;">选项2</a>
|
||||
</li>
|
||||
<li><a href="#">选项3</a>
|
||||
<li><a href="javascript:;">选项3</a>
|
||||
</li>
|
||||
<li class="divider"></li>
|
||||
<li><a href="#">选项4</a>
|
||||
<li><a href="javascript:;">选项4</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
@ -508,14 +508,14 @@
|
||||
<button data-toggle="dropdown" class="btn btn-white dropdown-toggle" type="button"><span class="caret"></span>
|
||||
</button>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a href="#">选项1</a>
|
||||
<li><a href="javascript:;">选项1</a>
|
||||
</li>
|
||||
<li><a href="#">选项2</a>
|
||||
<li><a href="javascript:;">选项2</a>
|
||||
</li>
|
||||
<li><a href="#">选项3</a>
|
||||
<li><a href="javascript:;">选项3</a>
|
||||
</li>
|
||||
<li class="divider"></li>
|
||||
<li><a href="#">选项4</a>
|
||||
<li><a href="javascript:;">选项4</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
@ -580,7 +580,7 @@
|
||||
<h4>还不是会员?</h4>
|
||||
<p>您可以注册一个账户</p>
|
||||
<p class="text-center">
|
||||
<a href="#"><i class="fa fa-sign-in big-icon"></i></a>
|
||||
<a href="javascript:;"><i class="fa fa-sign-in big-icon"></i></a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -13,13 +13,13 @@
|
||||
<a class="collapse-link">
|
||||
<i class="fa fa-chevron-up"></i>
|
||||
</a>
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="#">
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="javascript:;">
|
||||
<i class="fa fa-wrench"></i>
|
||||
</a>
|
||||
<ul class="dropdown-menu dropdown-user">
|
||||
<li><a href="#">选项1</a>
|
||||
<li><a href="javascript:;">选项1</a>
|
||||
</li>
|
||||
<li><a href="#">选项2</a>
|
||||
<li><a href="javascript:;">选项2</a>
|
||||
</li>
|
||||
</ul>
|
||||
<a class="close-link">
|
||||
@ -56,13 +56,13 @@
|
||||
<a class="collapse-link">
|
||||
<i class="fa fa-chevron-up"></i>
|
||||
</a>
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="#">
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="javascript:;">
|
||||
<i class="fa fa-wrench"></i>
|
||||
</a>
|
||||
<ul class="dropdown-menu dropdown-user">
|
||||
<li><a href="#">选项1</a>
|
||||
<li><a href="javascript:;">选项1</a>
|
||||
</li>
|
||||
<li><a href="#">选项2</a>
|
||||
<li><a href="javascript:;">选项2</a>
|
||||
</li>
|
||||
</ul>
|
||||
<a class="close-link">
|
||||
@ -99,13 +99,13 @@
|
||||
<a class="collapse-link">
|
||||
<i class="fa fa-chevron-up"></i>
|
||||
</a>
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="#">
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="javascript:;">
|
||||
<i class="fa fa-wrench"></i>
|
||||
</a>
|
||||
<ul class="dropdown-menu dropdown-user">
|
||||
<li><a href="#">选项1</a>
|
||||
<li><a href="javascript:;">选项1</a>
|
||||
</li>
|
||||
<li><a href="#">选项2</a>
|
||||
<li><a href="javascript:;">选项2</a>
|
||||
</li>
|
||||
</ul>
|
||||
<a class="close-link">
|
||||
@ -143,13 +143,13 @@
|
||||
<a class="collapse-link">
|
||||
<i class="fa fa-chevron-up"></i>
|
||||
</a>
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="#">
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="javascript:;">
|
||||
<i class="fa fa-wrench"></i>
|
||||
</a>
|
||||
<ul class="dropdown-menu dropdown-user">
|
||||
<li><a href="#">选项1</a>
|
||||
<li><a href="javascript:;">选项1</a>
|
||||
</li>
|
||||
<li><a href="#">选项2</a>
|
||||
<li><a href="javascript:;">选项2</a>
|
||||
</li>
|
||||
</ul>
|
||||
<a class="close-link">
|
||||
@ -217,13 +217,13 @@
|
||||
<a class="collapse-link">
|
||||
<i class="fa fa-chevron-up"></i>
|
||||
</a>
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="#">
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="javascript:;">
|
||||
<i class="fa fa-wrench"></i>
|
||||
</a>
|
||||
<ul class="dropdown-menu dropdown-user">
|
||||
<li><a href="#">选项1</a>
|
||||
<li><a href="javascript:;">选项1</a>
|
||||
</li>
|
||||
<li><a href="#">选项2</a>
|
||||
<li><a href="javascript:;">选项2</a>
|
||||
</li>
|
||||
</ul>
|
||||
<a class="close-link">
|
||||
@ -241,14 +241,14 @@
|
||||
<button data-toggle="dropdown" class="btn btn-primary dropdown-toggle">操作 <span class="caret"></span>
|
||||
</button>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a href="#">置顶</a>
|
||||
<li><a href="javascript:;">置顶</a>
|
||||
</li>
|
||||
<li><a href="#" class="font-bold">修改</a>
|
||||
<li><a href="javascript:;" class="font-bold">修改</a>
|
||||
</li>
|
||||
<li><a href="#">禁用</a>
|
||||
<li><a href="javascript:;">禁用</a>
|
||||
</li>
|
||||
<li class="divider"></li>
|
||||
<li><a href="#">删除</a>
|
||||
<li><a href="javascript:;">删除</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
@ -256,14 +256,14 @@
|
||||
<button data-toggle="dropdown" class="btn btn-warning dropdown-toggle">操作 <span class="caret"></span>
|
||||
</button>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a href="#">置顶</a>
|
||||
<li><a href="javascript:;">置顶</a>
|
||||
</li>
|
||||
<li><a href="#">修改</a>
|
||||
<li><a href="javascript:;">修改</a>
|
||||
</li>
|
||||
<li><a href="#">禁用</a>
|
||||
<li><a href="javascript:;">禁用</a>
|
||||
</li>
|
||||
<li class="divider"></li>
|
||||
<li><a href="#">删除</a>
|
||||
<li><a href="javascript:;">删除</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
@ -271,14 +271,14 @@
|
||||
<button data-toggle="dropdown" class="btn btn-default dropdown-toggle">操作 <span class="caret"></span>
|
||||
</button>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a href="#">置顶</a>
|
||||
<li><a href="javascript:;">置顶</a>
|
||||
</li>
|
||||
<li><a href="#" class="font-bold">修改</a>
|
||||
<li><a href="javascript:;" class="font-bold">修改</a>
|
||||
</li>
|
||||
<li><a href="#">禁用</a>
|
||||
<li><a href="javascript:;">禁用</a>
|
||||
</li>
|
||||
<li class="divider"></li>
|
||||
<li><a href="#">删除</a>
|
||||
<li><a href="javascript:;">删除</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
@ -288,14 +288,14 @@
|
||||
<button data-toggle="dropdown" class="btn btn-primary btn-sm dropdown-toggle">操作 <span class="caret"></span>
|
||||
</button>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a href="#">置顶</a>
|
||||
<li><a href="javascript:;">置顶</a>
|
||||
</li>
|
||||
<li><a href="#" class="font-bold">修改</a>
|
||||
<li><a href="javascript:;" class="font-bold">修改</a>
|
||||
</li>
|
||||
<li><a href="#">禁用</a>
|
||||
<li><a href="javascript:;">禁用</a>
|
||||
</li>
|
||||
<li class="divider"></li>
|
||||
<li><a href="#">删除</a>
|
||||
<li><a href="javascript:;">删除</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
@ -303,14 +303,14 @@
|
||||
<button data-toggle="dropdown" class="btn btn-warning btn-sm dropdown-toggle">操作 <span class="caret"></span>
|
||||
</button>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a href="#">置顶</a>
|
||||
<li><a href="javascript:;">置顶</a>
|
||||
</li>
|
||||
<li><a href="#" class="font-bold">修改</a>
|
||||
<li><a href="javascript:;" class="font-bold">修改</a>
|
||||
</li>
|
||||
<li><a href="#">禁用</a>
|
||||
<li><a href="javascript:;">禁用</a>
|
||||
</li>
|
||||
<li class="divider"></li>
|
||||
<li><a href="#">删除</a>
|
||||
<li><a href="javascript:;">删除</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
@ -318,14 +318,14 @@
|
||||
<button data-toggle="dropdown" class="btn btn-default btn-sm dropdown-toggle">操作 <span class="caret"></span>
|
||||
</button>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a href="#">置顶</a>
|
||||
<li><a href="javascript:;">置顶</a>
|
||||
</li>
|
||||
<li><a href="#" class="font-bold">修改</a>
|
||||
<li><a href="javascript:;" class="font-bold">修改</a>
|
||||
</li>
|
||||
<li><a href="#">禁用</a>
|
||||
<li><a href="javascript:;">禁用</a>
|
||||
</li>
|
||||
<li class="divider"></li>
|
||||
<li><a href="#">删除</a>
|
||||
<li><a href="javascript:;">删除</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
@ -334,14 +334,14 @@
|
||||
<button data-toggle="dropdown" class="btn btn-primary btn-xs dropdown-toggle">操作 <span class="caret"></span>
|
||||
</button>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a href="#">置顶</a>
|
||||
<li><a href="javascript:;">置顶</a>
|
||||
</li>
|
||||
<li><a href="#" class="font-bold">修改</a>
|
||||
<li><a href="javascript:;" class="font-bold">修改</a>
|
||||
</li>
|
||||
<li><a href="#">禁用</a>
|
||||
<li><a href="javascript:;">禁用</a>
|
||||
</li>
|
||||
<li class="divider"></li>
|
||||
<li><a href="#">删除</a>
|
||||
<li><a href="javascript:;">删除</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
@ -349,14 +349,14 @@
|
||||
<button data-toggle="dropdown" class="btn btn-warning btn-xs dropdown-toggle">操作 <span class="caret"></span>
|
||||
</button>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a href="#">置顶</a>
|
||||
<li><a href="javascript:;">置顶</a>
|
||||
</li>
|
||||
<li><a href="#" class="font-bold">修改</a>
|
||||
<li><a href="javascript:;" class="font-bold">修改</a>
|
||||
</li>
|
||||
<li><a href="#">禁用</a>
|
||||
<li><a href="javascript:;">禁用</a>
|
||||
</li>
|
||||
<li class="divider"></li>
|
||||
<li><a href="#">删除</a>
|
||||
<li><a href="javascript:;">删除</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
@ -364,14 +364,14 @@
|
||||
<button data-toggle="dropdown" class="btn btn-default btn-xs dropdown-toggle">操作 <span class="caret"></span>
|
||||
</button>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a href="#">置顶</a>
|
||||
<li><a href="javascript:;">置顶</a>
|
||||
</li>
|
||||
<li><a href="#" class="font-bold">修改</a>
|
||||
<li><a href="javascript:;" class="font-bold">修改</a>
|
||||
</li>
|
||||
<li><a href="#">禁用</a>
|
||||
<li><a href="javascript:;">禁用</a>
|
||||
</li>
|
||||
<li class="divider"></li>
|
||||
<li><a href="#">删除</a>
|
||||
<li><a href="javascript:;">删除</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
@ -386,13 +386,13 @@
|
||||
<a class="collapse-link">
|
||||
<i class="fa fa-chevron-up"></i>
|
||||
</a>
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="#">
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="javascript:;">
|
||||
<i class="fa fa-wrench"></i>
|
||||
</a>
|
||||
<ul class="dropdown-menu dropdown-user">
|
||||
<li><a href="#">选项1</a>
|
||||
<li><a href="javascript:;">选项1</a>
|
||||
</li>
|
||||
<li><a href="#">选项2</a>
|
||||
<li><a href="javascript:;">选项2</a>
|
||||
</li>
|
||||
</ul>
|
||||
<a class="close-link">
|
||||
@ -431,13 +431,13 @@
|
||||
<a class="collapse-link">
|
||||
<i class="fa fa-chevron-up"></i>
|
||||
</a>
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="#">
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="javascript:;">
|
||||
<i class="fa fa-wrench"></i>
|
||||
</a>
|
||||
<ul class="dropdown-menu dropdown-user">
|
||||
<li><a href="#">选项1</a>
|
||||
<li><a href="javascript:;">选项1</a>
|
||||
</li>
|
||||
<li><a href="#">选项2</a>
|
||||
<li><a href="javascript:;">选项2</a>
|
||||
</li>
|
||||
</ul>
|
||||
<a class="close-link">
|
||||
@ -513,13 +513,13 @@
|
||||
<a class="collapse-link">
|
||||
<i class="fa fa-chevron-up"></i>
|
||||
</a>
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="#">
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="javascript:;">
|
||||
<i class="fa fa-wrench"></i>
|
||||
</a>
|
||||
<ul class="dropdown-menu dropdown-user">
|
||||
<li><a href="#">选项1</a>
|
||||
<li><a href="javascript:;">选项1</a>
|
||||
</li>
|
||||
<li><a href="#">选项2</a>
|
||||
<li><a href="javascript:;">选项2</a>
|
||||
</li>
|
||||
</ul>
|
||||
<a class="close-link">
|
||||
@ -576,13 +576,13 @@
|
||||
<a class="collapse-link">
|
||||
<i class="fa fa-chevron-up"></i>
|
||||
</a>
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="#">
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="javascript:;">
|
||||
<i class="fa fa-wrench"></i>
|
||||
</a>
|
||||
<ul class="dropdown-menu dropdown-user">
|
||||
<li><a href="#">选项1</a>
|
||||
<li><a href="javascript:;">选项1</a>
|
||||
</li>
|
||||
<li><a href="#">选项2</a>
|
||||
<li><a href="javascript:;">选项2</a>
|
||||
</li>
|
||||
</ul>
|
||||
<a class="close-link">
|
||||
@ -597,16 +597,16 @@
|
||||
|
||||
<h3 class="font-bold">按钮组</h3>
|
||||
<p>
|
||||
<a class="btn btn-default btn-rounded" href="#">默认</a>
|
||||
<a class="btn btn-primary btn-rounded" href="#">主要</a>
|
||||
<a class="btn btn-success btn-rounded" href="#">成果</a>
|
||||
<a class="btn btn-info btn-rounded" href="#">信息</a>
|
||||
<a class="btn btn-warning btn-rounded" href="#">警告</a>
|
||||
<a class="btn btn-danger btn-rounded" href="#">危险</a>
|
||||
<a class="btn btn-danger btn-rounded btn-outline" href="#">危险</a>
|
||||
<a class="btn btn-default btn-rounded" href="javascript:;">默认</a>
|
||||
<a class="btn btn-primary btn-rounded" href="javascript:;">主要</a>
|
||||
<a class="btn btn-success btn-rounded" href="javascript:;">成果</a>
|
||||
<a class="btn btn-info btn-rounded" href="javascript:;">信息</a>
|
||||
<a class="btn btn-warning btn-rounded" href="javascript:;">警告</a>
|
||||
<a class="btn btn-danger btn-rounded" href="javascript:;">危险</a>
|
||||
<a class="btn btn-danger btn-rounded btn-outline" href="javascript:;">危险</a>
|
||||
<br/>
|
||||
<br/>
|
||||
<a class="btn btn-primary btn-rounded btn-block" href="#"><i class="fa fa-info-circle"></i> 圆角块级带图标按钮</a>
|
||||
<a class="btn btn-primary btn-rounded btn-block" href="javascript:;"><i class="fa fa-info-circle"></i> 圆角块级带图标按钮</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -14,13 +14,13 @@
|
||||
<a class="collapse-link">
|
||||
<i class="fa fa-chevron-up"></i>
|
||||
</a>
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="#">
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="javascript:;">
|
||||
<i class="fa fa-wrench"></i>
|
||||
</a>
|
||||
<ul class="dropdown-menu dropdown-user">
|
||||
<li><a href="#">选项1</a>
|
||||
<li><a href="javascript:;">选项1</a>
|
||||
</li>
|
||||
<li><a href="#">选项2</a>
|
||||
<li><a href="javascript:;">选项2</a>
|
||||
</li>
|
||||
</ul>
|
||||
<a class="close-link">
|
||||
@ -124,13 +124,13 @@
|
||||
<a class="collapse-link">
|
||||
<i class="fa fa-chevron-up"></i>
|
||||
</a>
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="#">
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="javascript:;">
|
||||
<i class="fa fa-wrench"></i>
|
||||
</a>
|
||||
<ul class="dropdown-menu dropdown-user">
|
||||
<li><a href="#">选项1</a>
|
||||
<li><a href="javascript:;">选项1</a>
|
||||
</li>
|
||||
<li><a href="#">选项2</a>
|
||||
<li><a href="javascript:;">选项2</a>
|
||||
</li>
|
||||
</ul>
|
||||
<a class="close-link">
|
||||
@ -183,13 +183,13 @@
|
||||
<a class="collapse-link">
|
||||
<i class="fa fa-chevron-up"></i>
|
||||
</a>
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="#">
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="javascript:;">
|
||||
<i class="fa fa-wrench"></i>
|
||||
</a>
|
||||
<ul class="dropdown-menu dropdown-user">
|
||||
<li><a href="#">选项1</a>
|
||||
<li><a href="javascript:;">选项1</a>
|
||||
</li>
|
||||
<li><a href="#">选项2</a>
|
||||
<li><a href="javascript:;">选项2</a>
|
||||
</li>
|
||||
</ul>
|
||||
<a class="close-link">
|
||||
@ -227,13 +227,13 @@
|
||||
<a class="collapse-link">
|
||||
<i class="fa fa-chevron-up"></i>
|
||||
</a>
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="#">
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="javascript:;">
|
||||
<i class="fa fa-wrench"></i>
|
||||
</a>
|
||||
<ul class="dropdown-menu dropdown-user">
|
||||
<li><a href="#">选项1</a>
|
||||
<li><a href="javascript:;">选项1</a>
|
||||
</li>
|
||||
<li><a href="#">选项2</a>
|
||||
<li><a href="javascript:;">选项2</a>
|
||||
</li>
|
||||
</ul>
|
||||
<a class="close-link">
|
||||
@ -270,13 +270,13 @@
|
||||
<a class="collapse-link">
|
||||
<i class="fa fa-chevron-up"></i>
|
||||
</a>
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="#">
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="javascript:;">
|
||||
<i class="fa fa-wrench"></i>
|
||||
</a>
|
||||
<ul class="dropdown-menu dropdown-user">
|
||||
<li><a href="#">选项1</a>
|
||||
<li><a href="javascript:;">选项1</a>
|
||||
</li>
|
||||
<li><a href="#">选项2</a>
|
||||
<li><a href="javascript:;">选项2</a>
|
||||
</li>
|
||||
</ul>
|
||||
<a class="close-link">
|
||||
@ -315,13 +315,13 @@
|
||||
<a class="collapse-link">
|
||||
<i class="fa fa-chevron-up"></i>
|
||||
</a>
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="#">
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="javascript:;">
|
||||
<i class="fa fa-wrench"></i>
|
||||
</a>
|
||||
<ul class="dropdown-menu dropdown-user">
|
||||
<li><a href="#">选项1</a>
|
||||
<li><a href="javascript:;">选项1</a>
|
||||
</li>
|
||||
<li><a href="#">选项2</a>
|
||||
<li><a href="javascript:;">选项2</a>
|
||||
</li>
|
||||
</ul>
|
||||
<a class="close-link">
|
||||
@ -358,13 +358,13 @@
|
||||
<a class="collapse-link">
|
||||
<i class="fa fa-chevron-up"></i>
|
||||
</a>
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="#">
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="javascript:;">
|
||||
<i class="fa fa-wrench"></i>
|
||||
</a>
|
||||
<ul class="dropdown-menu dropdown-user">
|
||||
<li><a href="#">选项1</a>
|
||||
<li><a href="javascript:;">选项1</a>
|
||||
</li>
|
||||
<li><a href="#">选项2</a>
|
||||
<li><a href="javascript:;">选项2</a>
|
||||
</li>
|
||||
</ul>
|
||||
<a class="close-link">
|
||||
@ -401,13 +401,13 @@
|
||||
<a class="collapse-link">
|
||||
<i class="fa fa-chevron-up"></i>
|
||||
</a>
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="#">
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="javascript:;">
|
||||
<i class="fa fa-wrench"></i>
|
||||
</a>
|
||||
<ul class="dropdown-menu dropdown-user">
|
||||
<li><a href="#">选项1</a>
|
||||
<li><a href="javascript:;">选项1</a>
|
||||
</li>
|
||||
<li><a href="#">选项2</a>
|
||||
<li><a href="javascript:;">选项2</a>
|
||||
</li>
|
||||
</ul>
|
||||
<a class="close-link">
|
||||
|
@ -19,7 +19,7 @@
|
||||
<div class="fileinput fileinput-new input-group" data-provides="fileinput">
|
||||
<div class="form-control" data-trigger="fileinput"><i class="glyphicon glyphicon-file fileinput-exists"></i> <span class="fileinput-filename"></span></div>
|
||||
<span class="input-group-addon btn btn-white btn-file"><span class="fileinput-new">选择文件</span><span class="fileinput-exists">更改</span><input type="file"></span>
|
||||
<a href="#" class="input-group-addon btn btn-white fileinput-exists" data-dismiss="fileinput">清除</a>
|
||||
<a href="javascript:;" class="input-group-addon btn btn-white fileinput-exists" data-dismiss="fileinput">清除</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -29,7 +29,7 @@
|
||||
<div class="fileinput fileinput-new" data-provides="fileinput">
|
||||
<span class="btn btn-white btn-file"><span class="fileinput-new">选择文件</span><span class="fileinput-exists">更改</span><input type="file" name="..."></span>
|
||||
<span class="fileinput-filename"></span>
|
||||
<a href="#" class="close fileinput-exists" data-dismiss="fileinput" style="float: none">×</a>
|
||||
<a href="javascript:;" class="close fileinput-exists" data-dismiss="fileinput" style="float: none">×</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -40,7 +40,7 @@
|
||||
<div class="fileinput-preview thumbnail" data-trigger="fileinput" style="width: 200px; height: 150px;"></div>
|
||||
<div>
|
||||
<span class="btn btn-white btn-file"><span class="fileinput-new">选择图片</span><span class="fileinput-exists">更改</span><input type="file"></span>
|
||||
<a href="#" class="btn btn-white fileinput-exists" data-dismiss="fileinput">清除</a>
|
||||
<a href="javascript:;" class="btn btn-white fileinput-exists" data-dismiss="fileinput">清除</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -55,7 +55,7 @@
|
||||
<div class="fileinput-preview fileinput-exists thumbnail" style="max-width: 200px; max-height: 150px;"></div>
|
||||
<div>
|
||||
<span class="btn btn-white btn-file"><span class="fileinput-new">选择图片</span><span class="fileinput-exists">更改</span><input type="file"></span>
|
||||
<a href="#" class="btn btn-white fileinput-exists" data-dismiss="fileinput">清除</a>
|
||||
<a href="javascript:;" class="btn btn-white fileinput-exists" data-dismiss="fileinput">清除</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -14,13 +14,13 @@
|
||||
<a class="collapse-link">
|
||||
<i class="fa fa-chevron-up"></i>
|
||||
</a>
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="#">
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="javascript:;">
|
||||
<i class="fa fa-wrench"></i>
|
||||
</a>
|
||||
<ul class="dropdown-menu dropdown-user">
|
||||
<li><a href="#">选项1</a>
|
||||
<li><a href="javascript:;">选项1</a>
|
||||
</li>
|
||||
<li><a href="#">选项2</a>
|
||||
<li><a href="javascript:;">选项2</a>
|
||||
</li>
|
||||
</ul>
|
||||
<a class="close-link">
|
||||
@ -56,13 +56,13 @@
|
||||
<a class="collapse-link">
|
||||
<i class="fa fa-chevron-up"></i>
|
||||
</a>
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="#">
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="javascript:;">
|
||||
<i class="fa fa-wrench"></i>
|
||||
</a>
|
||||
<ul class="dropdown-menu dropdown-user">
|
||||
<li><a href="#">选项1</a>
|
||||
<li><a href="javascript:;">选项1</a>
|
||||
</li>
|
||||
<li><a href="#">选项2</a>
|
||||
<li><a href="javascript:;">选项2</a>
|
||||
</li>
|
||||
</ul>
|
||||
<a class="close-link">
|
||||
@ -100,13 +100,13 @@
|
||||
<a class="collapse-link">
|
||||
<i class="fa fa-chevron-up"></i>
|
||||
</a>
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="#">
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="javascript:;">
|
||||
<i class="fa fa-wrench"></i>
|
||||
</a>
|
||||
<ul class="dropdown-menu dropdown-user">
|
||||
<li><a href="#">选项1</a>
|
||||
<li><a href="javascript:;">选项1</a>
|
||||
</li>
|
||||
<li><a href="#">选项2</a>
|
||||
<li><a href="javascript:;">选项2</a>
|
||||
</li>
|
||||
</ul>
|
||||
<a class="close-link">
|
||||
@ -116,16 +116,16 @@
|
||||
</div>
|
||||
<div class="ibox-content">
|
||||
<div class="alert alert-success">
|
||||
RuoYi是一个很棒的后台UI框架 <a class="alert-link" href="#">了解更多</a>.
|
||||
RuoYi是一个很棒的后台UI框架 <a class="alert-link" href="javascript:;">了解更多</a>.
|
||||
</div>
|
||||
<div class="alert alert-info">
|
||||
RuoYi是一个很棒的后台UI框架 <a class="alert-link" href="#">了解更多</a>.
|
||||
RuoYi是一个很棒的后台UI框架 <a class="alert-link" href="javascript:;">了解更多</a>.
|
||||
</div>
|
||||
<div class="alert alert-warning">
|
||||
RuoYi是一个很棒的后台UI框架 <a class="alert-link" href="#">了解更多</a>.
|
||||
RuoYi是一个很棒的后台UI框架 <a class="alert-link" href="javascript:;">了解更多</a>.
|
||||
</div>
|
||||
<div class="alert alert-danger">
|
||||
RuoYi是一个很棒的后台UI框架 <a class="alert-link" href="#">了解更多</a>.
|
||||
RuoYi是一个很棒的后台UI框架 <a class="alert-link" href="javascript:;">了解更多</a>.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -138,13 +138,13 @@
|
||||
<a class="collapse-link">
|
||||
<i class="fa fa-chevron-up"></i>
|
||||
</a>
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="#">
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="javascript:;">
|
||||
<i class="fa fa-wrench"></i>
|
||||
</a>
|
||||
<ul class="dropdown-menu dropdown-user">
|
||||
<li><a href="#">选项1</a>
|
||||
<li><a href="javascript:;">选项1</a>
|
||||
</li>
|
||||
<li><a href="#">选项2</a>
|
||||
<li><a href="javascript:;">选项2</a>
|
||||
</li>
|
||||
</ul>
|
||||
<a class="close-link">
|
||||
@ -155,19 +155,19 @@
|
||||
<div class="ibox-content">
|
||||
<div class="alert alert-success alert-dismissable">
|
||||
<button aria-hidden="true" data-dismiss="alert" class="close" type="button">×</button>
|
||||
RuoYi是一个很棒的后台UI框架 <a class="alert-link" href="#">了解更多</a>.
|
||||
RuoYi是一个很棒的后台UI框架 <a class="alert-link" href="javascript:;">了解更多</a>.
|
||||
</div>
|
||||
<div class="alert alert-info alert-dismissable">
|
||||
<button aria-hidden="true" data-dismiss="alert" class="close" type="button">×</button>
|
||||
RuoYi是一个很棒的后台UI框架 <a class="alert-link" href="#">了解更多</a>.
|
||||
RuoYi是一个很棒的后台UI框架 <a class="alert-link" href="javascript:;">了解更多</a>.
|
||||
</div>
|
||||
<div class="alert alert-warning alert-dismissable">
|
||||
<button aria-hidden="true" data-dismiss="alert" class="close" type="button">×</button>
|
||||
RuoYi是一个很棒的后台UI框架 <a class="alert-link" href="#">了解更多</a>.
|
||||
RuoYi是一个很棒的后台UI框架 <a class="alert-link" href="javascript:;">了解更多</a>.
|
||||
</div>
|
||||
<div class="alert alert-danger alert-dismissable">
|
||||
<button aria-hidden="true" data-dismiss="alert" class="close" type="button">×</button>
|
||||
RuoYi是一个很棒的后台UI框架 <a class="alert-link" href="#">了解更多</a>.
|
||||
RuoYi是一个很棒的后台UI框架 <a class="alert-link" href="javascript:;">了解更多</a>.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -183,13 +183,13 @@
|
||||
<a class="collapse-link">
|
||||
<i class="fa fa-chevron-up"></i>
|
||||
</a>
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="#">
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="javascript:;">
|
||||
<i class="fa fa-wrench"></i>
|
||||
</a>
|
||||
<ul class="dropdown-menu dropdown-user">
|
||||
<li><a href="#">选项1</a>
|
||||
<li><a href="javascript:;">选项1</a>
|
||||
</li>
|
||||
<li><a href="#">选项2</a>
|
||||
<li><a href="javascript:;">选项2</a>
|
||||
</li>
|
||||
</ul>
|
||||
<a class="close-link">
|
||||
|
@ -29,7 +29,7 @@
|
||||
<li th:if="${tasks != null}" th:each="item : ${tasks}" class="warning-element">
|
||||
[[${item.name}]]
|
||||
<div class="agile-detail">
|
||||
<a href="#" class="pull-right btn btn-xs btn-white">[[${item.type}]]</a>
|
||||
<a href="javascript:;" class="pull-right btn btn-xs btn-white">[[${item.type}]]</a>
|
||||
<i class="fa fa-clock-o"></i>
|
||||
[[${item.date}]]
|
||||
</div>
|
||||
|
@ -14,13 +14,13 @@
|
||||
<a class="collapse-link">
|
||||
<i class="fa fa-chevron-up"></i>
|
||||
</a>
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="#">
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="javascript:;">
|
||||
<i class="fa fa-wrench"></i>
|
||||
</a>
|
||||
<ul class="dropdown-menu dropdown-user">
|
||||
<li><a href="#">选项1</a>
|
||||
<li><a href="javascript:;">选项1</a>
|
||||
</li>
|
||||
<li><a href="#">选项2</a>
|
||||
<li><a href="javascript:;">选项2</a>
|
||||
</li>
|
||||
</ul>
|
||||
<a class="close-link">
|
||||
|
@ -91,7 +91,7 @@
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label class="font-noraml">分组多选</label>
|
||||
<label class="font-noraml">分组单选</label>
|
||||
<select class="form-control noselect2 selectpicker">
|
||||
<optgroup label="--请选择开发语言--">
|
||||
<option value="Java">Java</option>
|
||||
|
@ -23,56 +23,56 @@
|
||||
<li class="warning-element">
|
||||
加强过程管理,及时统计教育经费使用情况,做到底码清楚,
|
||||
<div class="agile-detail">
|
||||
<a href="#" class="pull-right btn btn-xs btn-white">标签</a>
|
||||
<a href="javascript:;" class="pull-right btn btn-xs btn-white">标签</a>
|
||||
<i class="fa fa-clock-o"></i> 2018.09.01
|
||||
</div>
|
||||
</li>
|
||||
<li class="success-element">
|
||||
支持财会人员的继续培训工作。
|
||||
<div class="agile-detail">
|
||||
<a href="#" class="pull-right btn btn-xs btn-white">标记</a>
|
||||
<a href="javascript:;" class="pull-right btn btn-xs btn-white">标记</a>
|
||||
<i class="fa fa-clock-o"></i> 2018.05.12
|
||||
</div>
|
||||
</li>
|
||||
<li class="info-element">
|
||||
协同教导处搞好助学金、减免教科书费的工作。
|
||||
<div class="agile-detail">
|
||||
<a href="#" class="pull-right btn btn-xs btn-white">标记</a>
|
||||
<a href="javascript:;" class="pull-right btn btn-xs btn-white">标记</a>
|
||||
<i class="fa fa-clock-o"></i> 2018.09.10
|
||||
</div>
|
||||
</li>
|
||||
<li class="danger-element">
|
||||
要求会计、出纳人员严格执行财务制度,遵守岗位职责,按时上报各种资料。
|
||||
<div class="agile-detail">
|
||||
<a href="#" class="pull-right btn btn-xs btn-primary">确定</a>
|
||||
<a href="javascript:;" class="pull-right btn btn-xs btn-primary">确定</a>
|
||||
<i class="fa fa-clock-o"></i> 2018.06.10
|
||||
</div>
|
||||
</li>
|
||||
<li class="warning-element">
|
||||
做好职工公费医疗工作,按时发放门诊费。
|
||||
<div class="agile-detail">
|
||||
<a href="#" class="pull-right btn btn-xs btn-white">标签</a>
|
||||
<a href="javascript:;" class="pull-right btn btn-xs btn-white">标签</a>
|
||||
<i class="fa fa-clock-o"></i> 2018.09.09
|
||||
</div>
|
||||
</li>
|
||||
<li class="warning-element">
|
||||
有计划地把课本复习三至五遍。
|
||||
<div class="agile-detail">
|
||||
<a href="#" class="pull-right btn btn-xs btn-primary">确定</a>
|
||||
<a href="javascript:;" class="pull-right btn btn-xs btn-primary">确定</a>
|
||||
<i class="fa fa-clock-o"></i> 2018.08.04
|
||||
</div>
|
||||
</li>
|
||||
<li class="success-element">
|
||||
看一本高质量的高中语法书
|
||||
<div class="agile-detail">
|
||||
<a href="#" class="pull-right btn btn-xs btn-white">标记</a>
|
||||
<a href="javascript:;" class="pull-right btn btn-xs btn-white">标记</a>
|
||||
<i class="fa fa-clock-o"></i> 2018.05.12
|
||||
</div>
|
||||
</li>
|
||||
<li class="info-element">
|
||||
选择一份较好的英语报纸,通过阅读提高英语学习效果。
|
||||
<div class="agile-detail">
|
||||
<a href="#" class="pull-right btn btn-xs btn-white">标记</a>
|
||||
<a href="javascript:;" class="pull-right btn btn-xs btn-white">标记</a>
|
||||
<i class="fa fa-clock-o"></i> 2018.09.10
|
||||
</div>
|
||||
</li>
|
||||
@ -89,49 +89,49 @@
|
||||
<li class="success-element">
|
||||
全面、较深入地掌握我们“产品”的功能、特色和优势并做到应用自如。
|
||||
<div class="agile-detail">
|
||||
<a href="#" class="pull-right btn btn-xs btn-white">标签</a>
|
||||
<a href="javascript:;" class="pull-right btn btn-xs btn-white">标签</a>
|
||||
<i class="fa fa-clock-o"></i> 2018.09.01
|
||||
</div>
|
||||
</li>
|
||||
<li class="success-element">
|
||||
根据自己以前所了解的和从其他途径搜索到的信息,录入客户资料150家。
|
||||
<div class="agile-detail">
|
||||
<a href="#" class="pull-right btn btn-xs btn-white">标记</a>
|
||||
<a href="javascript:;" class="pull-right btn btn-xs btn-white">标记</a>
|
||||
<i class="fa fa-clock-o"></i> 2018.05.12
|
||||
</div>
|
||||
</li>
|
||||
<li class="warning-element">
|
||||
锁定有意向客户20家。
|
||||
<div class="agile-detail">
|
||||
<a href="#" class="pull-right btn btn-xs btn-white">标记</a>
|
||||
<a href="javascript:;" class="pull-right btn btn-xs btn-white">标记</a>
|
||||
<i class="fa fa-clock-o"></i> 2018.09.10
|
||||
</div>
|
||||
</li>
|
||||
<li class="warning-element">
|
||||
力争完成销售指标。
|
||||
<div class="agile-detail">
|
||||
<a href="#" class="pull-right btn btn-xs btn-white">标签</a>
|
||||
<a href="javascript:;" class="pull-right btn btn-xs btn-white">标签</a>
|
||||
<i class="fa fa-clock-o"></i> 2018.09.09
|
||||
</div>
|
||||
</li>
|
||||
<li class="info-element">
|
||||
在总结和摸索中前进。
|
||||
<div class="agile-detail">
|
||||
<a href="#" class="pull-right btn btn-xs btn-primary">确定</a>
|
||||
<a href="javascript:;" class="pull-right btn btn-xs btn-primary">确定</a>
|
||||
<i class="fa fa-clock-o"></i> 2018.08.04
|
||||
</div>
|
||||
</li>
|
||||
<li class="success-element">
|
||||
不断学习行业知识、产品知识,为客户带来实用介绍内容
|
||||
<div class="agile-detail">
|
||||
<a href="#" class="pull-right btn btn-xs btn-white">标记</a>
|
||||
<a href="javascript:;" class="pull-right btn btn-xs btn-white">标记</a>
|
||||
<i class="fa fa-clock-o"></i> 2018.05.12
|
||||
</div>
|
||||
</li>
|
||||
<li class="danger-element">
|
||||
先友后单:与客户发展良好友谊,转换销售员角色,处处为客户着想
|
||||
<div class="agile-detail">
|
||||
<a href="#" class="pull-right btn btn-xs btn-white">标记</a>
|
||||
<a href="javascript:;" class="pull-right btn btn-xs btn-white">标记</a>
|
||||
<i class="fa fa-clock-o"></i> 2018.11.04
|
||||
</div>
|
||||
</li>
|
||||
@ -148,35 +148,35 @@
|
||||
<li class="info-element">
|
||||
制定工作日程表
|
||||
<div class="agile-detail">
|
||||
<a href="#" class="pull-right btn btn-xs btn-white">标记</a>
|
||||
<a href="javascript:;" class="pull-right btn btn-xs btn-white">标记</a>
|
||||
<i class="fa fa-clock-o"></i> 2018.09.10
|
||||
</div>
|
||||
</li>
|
||||
<li class="warning-element">
|
||||
每天坚持打40个有效电话,挖掘潜在客户
|
||||
<div class="agile-detail">
|
||||
<a href="#" class="pull-right btn btn-xs btn-white">标签</a>
|
||||
<a href="javascript:;" class="pull-right btn btn-xs btn-white">标签</a>
|
||||
<i class="fa fa-clock-o"></i> 2018.09.09
|
||||
</div>
|
||||
</li>
|
||||
<li class="warning-element">
|
||||
拜访客户之前要对该客户做全面的了解(客户的潜在需求、职位、权限以及个人性格和爱好)
|
||||
<div class="agile-detail">
|
||||
<a href="#" class="pull-right btn btn-xs btn-white">标签</a>
|
||||
<a href="javascript:;" class="pull-right btn btn-xs btn-white">标签</a>
|
||||
<i class="fa fa-clock-o"></i> 2018.09.09
|
||||
</div>
|
||||
</li>
|
||||
<li class="warning-element">
|
||||
提高自己电话营销技巧,灵活专业地与客户进行电话交流
|
||||
<div class="agile-detail">
|
||||
<a href="#" class="pull-right btn btn-xs btn-primary">确定</a>
|
||||
<a href="javascript:;" class="pull-right btn btn-xs btn-primary">确定</a>
|
||||
<i class="fa fa-clock-o"></i> 2018.08.04
|
||||
</div>
|
||||
</li>
|
||||
<li class="success-element">
|
||||
通过电话销售过程中了解各盛市的设备仪器使用、采购情况及相关重要追踪人
|
||||
<div class="agile-detail">
|
||||
<a href="#" class="pull-right btn btn-xs btn-white">标记</a>
|
||||
<a href="javascript:;" class="pull-right btn btn-xs btn-white">标记</a>
|
||||
<i class="fa fa-clock-o"></i> 2018.05.12
|
||||
</div>
|
||||
</li>
|
||||
|
@ -17,7 +17,7 @@
|
||||
<h2>若依后台管理系统</h2>
|
||||
<p>ruoyi是一个完全响应式,基于Bootstrap3.3.7最新版本开发的扁平化主题,她采用了主流的左右两栏式布局,使用了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.7.7
|
||||
<b>当前版本:</b>v4.7.9
|
||||
</p>
|
||||
<p>
|
||||
<span class="label label-warning">免费开源</span>
|
||||
@ -56,7 +56,7 @@
|
||||
<h3>你好,若依 </h3>
|
||||
<p>H+是一个完全响应式,基于Bootstrap3.3.7最新版本开发的扁平化主题,她采用了主流的左右两栏式布局,使用了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.7.7
|
||||
<b>当前版本:</b>v4.7.9
|
||||
</p>
|
||||
<p>
|
||||
<span class="label label-warning">开源免费</span>
|
||||
|
@ -14,13 +14,13 @@
|
||||
<a class="collapse-link">
|
||||
<i class="fa fa-chevron-up"></i>
|
||||
</a>
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="#">
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="javascript:;">
|
||||
<i class="fa fa-wrench"></i>
|
||||
</a>
|
||||
<ul class="dropdown-menu dropdown-user">
|
||||
<li><a href="#">选项1</a>
|
||||
<li><a href="javascript:;">选项1</a>
|
||||
</li>
|
||||
<li><a href="#">选项2</a>
|
||||
<li><a href="javascript:;">选项2</a>
|
||||
</li>
|
||||
</ul>
|
||||
<a class="close-link">
|
||||
@ -273,13 +273,13 @@
|
||||
<a class="collapse-link">
|
||||
<i class="fa fa-chevron-up"></i>
|
||||
</a>
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="#">
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="javascript:;">
|
||||
<i class="fa fa-wrench"></i>
|
||||
</a>
|
||||
<ul class="dropdown-menu dropdown-user">
|
||||
<li><a href="#">选项1</a>
|
||||
<li><a href="javascript:;">选项1</a>
|
||||
</li>
|
||||
<li><a href="#">选项2</a>
|
||||
<li><a href="javascript:;">选项2</a>
|
||||
</li>
|
||||
</ul>
|
||||
<a class="close-link">
|
||||
|
@ -14,8 +14,8 @@
|
||||
<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>
|
||||
<a href="javascript:;" class="btn btn-xs btn-primary" id="lightVersion">轻型版本 </a>
|
||||
<a href="javascript:;" class="btn btn-xs btn-primary" id="darkVersion">黑色版本 </a>
|
||||
</div>
|
||||
<div id="ibox-content">
|
||||
<div id="vertical-timeline" class="vertical-container light-timeline">
|
||||
@ -28,7 +28,7 @@
|
||||
<h2>会议</h2>
|
||||
<p>上一年的销售业绩发布会。总结产品营销和销售趋势及销售的现状。
|
||||
</p>
|
||||
<a href="#" class="btn btn-sm btn-primary"> 更多信息</a>
|
||||
<a href="javascript:;" class="btn btn-sm btn-primary"> 更多信息</a>
|
||||
<span class="vertical-date">
|
||||
今天 <br>
|
||||
<small>2月3日</small>
|
||||
@ -44,7 +44,7 @@
|
||||
<div class="vertical-timeline-content">
|
||||
<h2>给张三发送文档</h2>
|
||||
<p>发送上年度《销售业绩报告》</p>
|
||||
<a href="#" class="btn btn-sm btn-success"> 下载文档 </a>
|
||||
<a href="javascript:;" class="btn btn-sm btn-success"> 下载文档 </a>
|
||||
<span class="vertical-date">
|
||||
今天 <br>
|
||||
<small>2月3日</small>
|
||||
@ -60,7 +60,7 @@
|
||||
<div class="vertical-timeline-content">
|
||||
<h2>喝咖啡休息</h2>
|
||||
<p>喝咖啡啦,啦啦啦~~</p>
|
||||
<a href="#" class="btn btn-sm btn-info">更多</a>
|
||||
<a href="javascript:;" class="btn btn-sm btn-info">更多</a>
|
||||
<span class="vertical-date"> 昨天 <br><small>2月2日</small></span>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -21,13 +21,13 @@
|
||||
<a class="collapse-link">
|
||||
<i class="fa fa-chevron-up"></i>
|
||||
</a>
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="#">
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="javascript:;">
|
||||
<i class="fa fa-wrench"></i>
|
||||
</a>
|
||||
<ul class="dropdown-menu dropdown-user">
|
||||
<li><a href="#">选项1</a>
|
||||
<li><a href="javascript:;">选项1</a>
|
||||
</li>
|
||||
<li><a href="#">选项2</a>
|
||||
<li><a href="javascript:;">选项2</a>
|
||||
</li>
|
||||
</ul>
|
||||
<a class="close-link">
|
||||
|
@ -19,13 +19,13 @@
|
||||
<a class="collapse-link">
|
||||
<i class="fa fa-chevron-up"></i>
|
||||
</a>
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="#">
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="javascript:;">
|
||||
<i class="fa fa-wrench"></i>
|
||||
</a>
|
||||
<ul class="dropdown-menu dropdown-user">
|
||||
<li><a href="#">选项1</a>
|
||||
<li><a href="javascript:;">选项1</a>
|
||||
</li>
|
||||
<li><a href="#">选项2</a>
|
||||
<li><a href="javascript:;">选项2</a>
|
||||
</li>
|
||||
</ul>
|
||||
<a class="close-link">
|
||||
|
@ -137,7 +137,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<th:block th:include="include :: footer" />
|
||||
<script type="text/javascript">
|
||||
<script th:inline="javascript">
|
||||
var prefix = ctx + "demo/modal";
|
||||
|
||||
$("#button-confirm").click(function(){
|
||||
@ -266,14 +266,14 @@
|
||||
{
|
||||
"alt": "默认头像",
|
||||
"pid": 1, //图片id
|
||||
"src": "/img/profile.jpg", //原图地址
|
||||
"thumb": "/img/profile.jpg" //缩略图地址
|
||||
"src": ctx + "img/profile.jpg", //原图地址
|
||||
"thumb": ctx + "img/profile.jpg" //缩略图地址
|
||||
},
|
||||
{
|
||||
"alt": "打赏",
|
||||
"pid": 2, //图片id
|
||||
"src": "/img/pay.png", //原图地址
|
||||
"thumb": "/img/pay.png" //缩略图地址
|
||||
"src": ctx + "img/pay.png", //原图地址
|
||||
"thumb": ctx + "img/pay.png" //缩略图地址
|
||||
}
|
||||
]
|
||||
};
|
||||
|
@ -63,8 +63,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="javascript:;"><i class="fa fa-edit"></i>编辑</a> ');
|
||||
actions.push('<a class="btn btn-danger btn-xs" href="javascript:;"><i class="fa fa-remove"></i>删除</a>');
|
||||
return actions.join('');
|
||||
}
|
||||
}]
|
||||
|
@ -64,8 +64,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="javascript:;"><i class="fa fa-edit"></i>编辑</a> ');
|
||||
actions.push('<a class="btn btn-danger btn-xs" href="javascript:;"><i class="fa fa-remove"></i>删除</a>');
|
||||
return actions.join('');
|
||||
}
|
||||
}]
|
||||
|
@ -63,8 +63,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="javascript:;"><i class="fa fa-edit"></i>编辑</a> ');
|
||||
actions.push('<a class="btn btn-danger btn-xs" href="javascript:;"><i class="fa fa-remove"></i>删除</a>');
|
||||
return actions.join('');
|
||||
}
|
||||
}]
|
||||
|
@ -96,9 +96,9 @@
|
||||
align: 'center',
|
||||
formatter: function(value, row, index) {
|
||||
var actions = [];
|
||||
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-info btn-xs" href="#" onclick="$.operate.detail(\'' + row.userId + '\')"><i class="fa fa-search"></i>详细</a> ');
|
||||
actions.push('<a class="btn btn-danger btn-xs" href="#" onclick="$.operate.remove(\'' + row.userId + '\')"><i class="fa fa-remove"></i>删除</a>');
|
||||
actions.push('<a class="btn btn-success btn-xs" href="javascript:;" onclick="$.operate.edit(\'' + row.userId + '\')"><i class="fa fa-edit"></i>编辑</a> ');
|
||||
actions.push('<a class="btn btn-info btn-xs" href="javascript:;" onclick="$.operate.detail(\'' + row.userId + '\')"><i class="fa fa-search"></i>详细</a> ');
|
||||
actions.push('<a class="btn btn-danger btn-xs" href="javascript:;" onclick="$.operate.remove(\'' + row.userId + '\')"><i class="fa fa-remove"></i>删除</a>');
|
||||
return actions.join('');
|
||||
}
|
||||
}]
|
||||
|
@ -23,13 +23,13 @@
|
||||
<a class="collapse-link">
|
||||
<i class="fa fa-chevron-up"></i>
|
||||
</a>
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="#">
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="javascript:;">
|
||||
<i class="fa fa-wrench"></i>
|
||||
</a>
|
||||
<ul class="dropdown-menu dropdown-user">
|
||||
<li><a href="#">选项1</a>
|
||||
<li><a href="javascript:;">选项1</a>
|
||||
</li>
|
||||
<li><a href="#">选项2</a>
|
||||
<li><a href="javascript:;">选项2</a>
|
||||
</li>
|
||||
</ul>
|
||||
<a class="close-link">
|
||||
@ -50,13 +50,13 @@
|
||||
<a class="collapse-link">
|
||||
<i class="fa fa-chevron-up"></i>
|
||||
</a>
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="#">
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="javascript:;">
|
||||
<i class="fa fa-wrench"></i>
|
||||
</a>
|
||||
<ul class="dropdown-menu dropdown-user">
|
||||
<li><a href="#">选项1</a>
|
||||
<li><a href="javascript:;">选项1</a>
|
||||
</li>
|
||||
<li><a href="#">选项2</a>
|
||||
<li><a href="javascript:;">选项2</a>
|
||||
</li>
|
||||
</ul>
|
||||
<a class="close-link">
|
||||
@ -80,13 +80,13 @@
|
||||
<a class="collapse-link">
|
||||
<i class="fa fa-chevron-up"></i>
|
||||
</a>
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="#">
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="javascript:;">
|
||||
<i class="fa fa-wrench"></i>
|
||||
</a>
|
||||
<ul class="dropdown-menu dropdown-user">
|
||||
<li><a href="#">选项1</a>
|
||||
<li><a href="javascript:;">选项1</a>
|
||||
</li>
|
||||
<li><a href="#">选项2</a>
|
||||
<li><a href="javascript:;">选项2</a>
|
||||
</li>
|
||||
</ul>
|
||||
<a class="close-link">
|
||||
@ -107,13 +107,13 @@
|
||||
<a class="collapse-link">
|
||||
<i class="fa fa-chevron-up"></i>
|
||||
</a>
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="#">
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="javascript:;">
|
||||
<i class="fa fa-wrench"></i>
|
||||
</a>
|
||||
<ul class="dropdown-menu dropdown-user">
|
||||
<li><a href="#">选项1</a>
|
||||
<li><a href="javascript:;">选项1</a>
|
||||
</li>
|
||||
<li><a href="#">选项2</a>
|
||||
<li><a href="javascript:;">选项2</a>
|
||||
</li>
|
||||
</ul>
|
||||
<a class="close-link">
|
||||
@ -134,13 +134,13 @@
|
||||
<a class="collapse-link">
|
||||
<i class="fa fa-chevron-up"></i>
|
||||
</a>
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="#">
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="javascript:;">
|
||||
<i class="fa fa-wrench"></i>
|
||||
</a>
|
||||
<ul class="dropdown-menu dropdown-user">
|
||||
<li><a href="#">选项1</a>
|
||||
<li><a href="javascript:;">选项1</a>
|
||||
</li>
|
||||
<li><a href="#">选项2</a>
|
||||
<li><a href="javascript:;">选项2</a>
|
||||
</li>
|
||||
</ul>
|
||||
<a class="close-link">
|
||||
@ -161,13 +161,13 @@
|
||||
<a class="collapse-link">
|
||||
<i class="fa fa-chevron-up"></i>
|
||||
</a>
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="#">
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="javascript:;">
|
||||
<i class="fa fa-wrench"></i>
|
||||
</a>
|
||||
<ul class="dropdown-menu dropdown-user">
|
||||
<li><a href="#">选项1</a>
|
||||
<li><a href="javascript:;">选项1</a>
|
||||
</li>
|
||||
<li><a href="#">选项2</a>
|
||||
<li><a href="javascript:;">选项2</a>
|
||||
</li>
|
||||
</ul>
|
||||
<a class="close-link">
|
||||
@ -188,13 +188,13 @@
|
||||
<a class="collapse-link">
|
||||
<i class="fa fa-chevron-up"></i>
|
||||
</a>
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="#">
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="javascript:;">
|
||||
<i class="fa fa-wrench"></i>
|
||||
</a>
|
||||
<ul class="dropdown-menu dropdown-user">
|
||||
<li><a href="#">选项1</a>
|
||||
<li><a href="javascript:;">选项1</a>
|
||||
</li>
|
||||
<li><a href="#">选项2</a>
|
||||
<li><a href="javascript:;">选项2</a>
|
||||
</li>
|
||||
</ul>
|
||||
<a class="close-link">
|
||||
@ -215,13 +215,13 @@
|
||||
<a class="collapse-link">
|
||||
<i class="fa fa-chevron-up"></i>
|
||||
</a>
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="#">
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="javascript:;">
|
||||
<i class="fa fa-wrench"></i>
|
||||
</a>
|
||||
<ul class="dropdown-menu dropdown-user">
|
||||
<li><a href="#">选项1</a>
|
||||
<li><a href="javascript:;">选项1</a>
|
||||
</li>
|
||||
<li><a href="#">选项2</a>
|
||||
<li><a href="javascript:;">选项2</a>
|
||||
</li>
|
||||
</ul>
|
||||
<a class="close-link">
|
||||
@ -245,13 +245,13 @@
|
||||
<a class="collapse-link">
|
||||
<i class="fa fa-chevron-up"></i>
|
||||
</a>
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="#">
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="javascript:;">
|
||||
<i class="fa fa-wrench"></i>
|
||||
</a>
|
||||
<ul class="dropdown-menu dropdown-user">
|
||||
<li><a href="#">选项1</a>
|
||||
<li><a href="javascript:;">选项1</a>
|
||||
</li>
|
||||
<li><a href="#">选项2</a>
|
||||
<li><a href="javascript:;">选项2</a>
|
||||
</li>
|
||||
</ul>
|
||||
<a class="close-link">
|
||||
|
@ -98,13 +98,13 @@
|
||||
<a class="collapse-link">
|
||||
<i class="fa fa-chevron-up"></i>
|
||||
</a>
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="#">
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="javascript:;">
|
||||
<i class="fa fa-wrench"></i>
|
||||
</a>
|
||||
<ul class="dropdown-menu dropdown-user">
|
||||
<li><a href="#">选项1</a>
|
||||
<li><a href="javascript:;">选项1</a>
|
||||
</li>
|
||||
<li><a href="#">选项2</a>
|
||||
<li><a href="javascript:;">选项2</a>
|
||||
</li>
|
||||
</ul>
|
||||
<a class="close-link">
|
||||
@ -125,13 +125,13 @@
|
||||
<a class="collapse-link">
|
||||
<i class="fa fa-chevron-up"></i>
|
||||
</a>
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="#">
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="javascript:;">
|
||||
<i class="fa fa-wrench"></i>
|
||||
</a>
|
||||
<ul class="dropdown-menu dropdown-user">
|
||||
<li><a href="#">选项1</a>
|
||||
<li><a href="javascript:;">选项1</a>
|
||||
</li>
|
||||
<li><a href="#">选项2</a>
|
||||
<li><a href="javascript:;">选项2</a>
|
||||
</li>
|
||||
</ul>
|
||||
<a class="close-link">
|
||||
@ -152,13 +152,13 @@
|
||||
<a class="collapse-link">
|
||||
<i class="fa fa-chevron-up"></i>
|
||||
</a>
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="#">
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="javascript:;">
|
||||
<i class="fa fa-wrench"></i>
|
||||
</a>
|
||||
<ul class="dropdown-menu dropdown-user">
|
||||
<li><a href="#">选项1</a>
|
||||
<li><a href="javascript:;">选项1</a>
|
||||
</li>
|
||||
<li><a href="#">选项2</a>
|
||||
<li><a href="javascript:;">选项2</a>
|
||||
</li>
|
||||
</ul>
|
||||
<a class="close-link">
|
||||
|
@ -79,8 +79,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="javascript:;"><i class="fa fa-edit"></i>编辑</a> ');
|
||||
actions.push('<a class="btn btn-danger btn-xs" href="javascript:;"><i class="fa fa-remove"></i>删除</a>');
|
||||
return actions.join('');
|
||||
}
|
||||
}]
|
||||
|
@ -70,8 +70,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="javascript:;"><i class="fa fa-edit"></i>编辑</a> ');
|
||||
actions.push('<a class="btn btn-danger btn-xs" href="javascript:;"><i class="fa fa-remove"></i>删除</a>');
|
||||
return actions.join('');
|
||||
}
|
||||
}]
|
||||
|
@ -0,0 +1,78 @@
|
||||
<!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" data-cookie="true" data-cookie-id-table="userTableId"></table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div th:include="include :: footer"></div>
|
||||
<th:block th:include="include :: bootstrap-table-cookie-js" />
|
||||
<script th:inline="javascript">
|
||||
var prefix = ctx + "demo/table";
|
||||
var datas = [[${@dict.getType('sys_normal_disable')}]];
|
||||
|
||||
$(function() {
|
||||
var options = {
|
||||
url: prefix + "/list",
|
||||
search: true,
|
||||
showSearch: false,
|
||||
showRefresh: false,
|
||||
showToggle: false,
|
||||
columns: [{
|
||||
field: 'state',
|
||||
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="javascript:;"><i class="fa fa-edit"></i>编辑</a> ');
|
||||
actions.push('<a class="btn btn-danger btn-xs" href="javascript:;"><i class="fa fa-remove"></i>删除</a>');
|
||||
return actions.join('');
|
||||
}
|
||||
}]
|
||||
};
|
||||
$.table.init(options);
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -9,7 +9,7 @@
|
||||
<div class="col-sm-12 select-table table-striped">
|
||||
<table id="bootstrap-table" data-page-size="10"
|
||||
data-show-custom-view="true" data-custom-view="customViewFormatter"
|
||||
data-show-custom-view-button="true">
|
||||
data-custom-view-default-view="true">
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
@ -94,8 +94,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="javascript:;"><i class="fa fa-edit"></i>编辑</a> ');
|
||||
actions.push('<a class="btn btn-danger btn-xs" href="javascript:;"><i class="fa fa-remove"></i>删除</a>');
|
||||
return actions.join('');
|
||||
}
|
||||
}]
|
||||
|
@ -63,8 +63,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="javascript:;"><i class="fa fa-edit"></i>编辑</a> ');
|
||||
actions.push('<a class="btn btn-danger btn-xs" href="javascript:;"><i class="fa fa-remove"></i>删除</a>');
|
||||
return actions.join('');
|
||||
}
|
||||
}]
|
||||
|
@ -65,8 +65,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="javascript:;"><i class="fa fa-edit"></i>编辑</a> ');
|
||||
actions.push('<a class="btn btn-danger btn-xs" href="javascript:;"><i class="fa fa-remove"></i>删除</a>');
|
||||
return actions.join('');
|
||||
}
|
||||
}]
|
||||
|
@ -79,8 +79,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="javascript:;"><i class="fa fa-edit"></i>编辑</a> ');
|
||||
actions.push('<a class="btn btn-danger btn-xs" href="javascript:;"><i class="fa fa-remove"></i>删除</a>');
|
||||
return actions.join('');
|
||||
}
|
||||
});
|
||||
|
@ -99,8 +99,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="javascript:;"><i class="fa fa-edit"></i>编辑</a> ');
|
||||
actions.push('<a class="btn btn-danger btn-xs" href="javascript:;"><i class="fa fa-remove"></i>删除</a>');
|
||||
return actions.join('');
|
||||
}
|
||||
}]
|
||||
|
@ -74,8 +74,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="javascript:;"><i class="fa fa-edit"></i>编辑</a> ');
|
||||
actions.push('<a class="btn btn-danger btn-xs" href="javascript:;"><i class="fa fa-remove"></i>删除</a>');
|
||||
return actions.join('');
|
||||
}
|
||||
}]
|
||||
|
@ -72,8 +72,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="javascript:;"><i class="fa fa-edit"></i>编辑</a> ');
|
||||
actions.push('<a class="btn btn-danger btn-xs" href="javascript:;"><i class="fa fa-remove"></i>删除</a>');
|
||||
return actions.join('');
|
||||
}
|
||||
}]
|
||||
|
@ -87,8 +87,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="javascript:;"><i class="fa fa-edit"></i>编辑</a> ');
|
||||
actions.push('<a class="btn btn-danger btn-xs" href="javascript:;"><i class="fa fa-remove"></i>删除</a>');
|
||||
return actions.join('');
|
||||
}
|
||||
}]
|
||||
|
@ -71,8 +71,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="javascript:;"><i class="fa fa-edit"></i>编辑</a> ');
|
||||
actions.push('<a class="btn btn-danger btn-xs" href="javascript:;"><i class="fa fa-remove"></i>删除</a>');
|
||||
return actions.join('');
|
||||
}
|
||||
}]
|
||||
|
@ -65,8 +65,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="javascript:;"><i class="fa fa-edit"></i>编辑</a> ');
|
||||
actions.push('<a class="btn btn-danger btn-xs" href="javascript:;"><i class="fa fa-remove"></i>删除</a>');
|
||||
return actions.join('');
|
||||
}
|
||||
}
|
||||
|
@ -64,8 +64,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="javascript:;"><i class="fa fa-edit"></i>编辑</a> ');
|
||||
actions.push('<a class="btn btn-danger btn-xs" href="javascript:;"><i class="fa fa-remove"></i>删除</a>');
|
||||
return actions.join('');
|
||||
}
|
||||
}]
|
||||
|
@ -66,8 +66,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="javascript:;"><i class="fa fa-edit"></i>编辑</a> ');
|
||||
actions.push('<a class="btn btn-danger btn-xs" href="javascript:;"><i class="fa fa-remove"></i>删除</a>');
|
||||
return actions.join('');
|
||||
}
|
||||
}]
|
||||
|
@ -83,8 +83,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="javascript:;"><i class="fa fa-edit"></i>编辑</a> ');
|
||||
actions.push('<a class="btn btn-danger btn-xs" href="javascript:;"><i class="fa fa-remove"></i>删除</a>');
|
||||
return actions.join('');
|
||||
}
|
||||
}]
|
||||
|
@ -64,8 +64,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="javascript:;"><i class="fa fa-edit"></i>编辑</a> ');
|
||||
actions.push('<a class="btn btn-danger btn-xs" href="javascript:;"><i class="fa fa-remove"></i>删除</a>');
|
||||
return actions.join('');
|
||||
}
|
||||
}]
|
||||
|
@ -81,8 +81,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="javascript:;"><i class="fa fa-edit"></i>编辑</a> ');
|
||||
actions.push('<a class="btn btn-danger btn-xs" href="javascript:;"><i class="fa fa-remove"></i>删除</a>');
|
||||
return actions.join('');
|
||||
}
|
||||
}]
|
||||
@ -145,8 +145,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="javascript:;"><i class="fa fa-edit"></i>编辑</a> ');
|
||||
actions.push('<a class="btn btn-danger btn-xs" href="javascript:;"><i class="fa fa-remove"></i>删除</a>');
|
||||
return actions.join('');
|
||||
}
|
||||
}]
|
||||
|
@ -66,8 +66,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="javascript:;"><i class="fa fa-edit"></i>编辑</a> ');
|
||||
actions.push('<a class="btn btn-danger btn-xs" href="javascript:;"><i class="fa fa-remove"></i>删除</a>');
|
||||
return actions.join('');
|
||||
}
|
||||
}]
|
||||
|
@ -65,8 +65,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="javascript:;"><i class="fa fa-edit"></i>编辑</a> ');
|
||||
actions.push('<a class="btn btn-danger btn-xs" href="javascript:;"><i class="fa fa-remove"></i>删除</a>');
|
||||
return actions.join('');
|
||||
}
|
||||
}]
|
||||
|
@ -0,0 +1,112 @@
|
||||
<!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" data-page-size="10" data-search-align="left"
|
||||
data-show-custom-view="true" data-custom-view="customViewFormatter"
|
||||
data-custom-view-default-view="true">
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<template id="textSearchTemplate">
|
||||
<div class="col-sm-12">
|
||||
<p style="margin-top:10px;line-height:1.5;">
|
||||
<span style="color:blue;font-size:medium">%title%</span><br>
|
||||
<span style="color:#000000;font-size:medium">%content%</span><br>
|
||||
<span style="color:#008000;font-size:medium">
|
||||
档号:<a href="javascript:void(0)" onclick="handleView('%tableId%', '%archiveNo%')">%archiveNo%</a>
|
||||
%docNo%
|
||||
</span>
|
||||
</p>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<div th:include="include :: footer"></div>
|
||||
<th:block th:include="include :: bootstrap-table-custom-view-js" />
|
||||
<script th:inline="javascript">
|
||||
var prefix = ctx + "demo/table";
|
||||
|
||||
$(function() {
|
||||
var options = {
|
||||
url: prefix + "/text/list",
|
||||
search: true,
|
||||
showSearch: false,
|
||||
showRefresh: false,
|
||||
showToggle: false,
|
||||
showColumns: false,
|
||||
showExport: true,
|
||||
columns: [{
|
||||
checkbox: true
|
||||
},
|
||||
{
|
||||
field : 'tableId',
|
||||
title : '编号',
|
||||
visible: false
|
||||
},
|
||||
{
|
||||
field : 'archiveNo',
|
||||
title : '档号'
|
||||
},
|
||||
{
|
||||
field : 'docNo',
|
||||
title : '文件编号'
|
||||
},
|
||||
{
|
||||
field : 'title',
|
||||
title : '标题',
|
||||
formatter: function(value, row, index) {
|
||||
return $.table.tooltip(value, 20, "open");
|
||||
}
|
||||
},
|
||||
{
|
||||
field : 'content',
|
||||
title : '内容',
|
||||
formatter: function(value, row, index) {
|
||||
return $.table.tooltip(value, 30, "open");
|
||||
}
|
||||
}]
|
||||
};
|
||||
$.table.init(options);
|
||||
});
|
||||
|
||||
function customViewFormatter (data) {
|
||||
var template = $('#textSearchTemplate').html()
|
||||
var view = ''
|
||||
if(data.length > 0) {
|
||||
$.each(data, function (i, row) {
|
||||
view += template.replace('%tableId%', row.tableId)
|
||||
.replaceAll('%archiveNo%', row.archiveNo)
|
||||
.replace('%title%', row.title)
|
||||
.replace('%docNo%', row.docNo)
|
||||
.replace('%content%', truncateString(row.content, 500))
|
||||
})
|
||||
return `<div class="row mx-0">${view}</div>`;
|
||||
} else {
|
||||
return `<div class="row mx-0"><div class="col-sm-12"><p style="margin-top:10px;line-height:1.5;"><span style="font-size:medium">没有找到记录。请检查过滤条件。</span></p></div></div>`
|
||||
}
|
||||
}
|
||||
|
||||
function handleView(tableId, archiveNo) {
|
||||
alert("tableId:" + tableId + ",archiveNo:" + archiveNo);
|
||||
}
|
||||
|
||||
function truncateString(str, maxLength) {
|
||||
if (str.length > maxLength) {
|
||||
return str.slice(0, maxLength) + '...';
|
||||
}
|
||||
return str;
|
||||
}
|
||||
|
||||
$(document).ready(function() {
|
||||
$('.search-input').css('width', '320px');
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,98 @@
|
||||
<!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="btn-group-sm" id="toolbar" role="group">
|
||||
<a class="btn btn-success" onclick="loadRows()">
|
||||
<i class="fa fa-plus"></i> 加载10000行数据
|
||||
</a>
|
||||
<a class="btn btn-info" onclick="appendRows()">
|
||||
<i class="fa fa-edit"></i> 追加10000行数据
|
||||
</a>
|
||||
<span id="total" class="badge badge-success"></span>
|
||||
</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>
|
||||
var total = 0
|
||||
|
||||
$(function() {
|
||||
var options = {
|
||||
data: getData(20),
|
||||
height: 400,
|
||||
sidePagination: "client",
|
||||
pagination: false,
|
||||
showSearch: false,
|
||||
virtualScroll: true,
|
||||
columns: [{
|
||||
field : 'userId',
|
||||
title : '用户ID'
|
||||
},
|
||||
{
|
||||
field : 'userCode',
|
||||
title : '用户编号'
|
||||
},
|
||||
{
|
||||
field : 'userName',
|
||||
title : '用户姓名'
|
||||
},
|
||||
{
|
||||
field : 'userPhone',
|
||||
title : '用户手机'
|
||||
},
|
||||
{
|
||||
field : 'userEmail',
|
||||
title : '用户邮箱'
|
||||
},
|
||||
{
|
||||
field : 'userBalance',
|
||||
title : '用户余额'
|
||||
}]
|
||||
};
|
||||
$.table.init(options);
|
||||
});
|
||||
|
||||
function getData(number, isAppend) {
|
||||
if (!isAppend) {
|
||||
total = 0
|
||||
}
|
||||
var data = []
|
||||
for (var i = total; i < total + number; i++) {
|
||||
var randomId = 100 + ~~ (Math.random() * 100);
|
||||
data.push({
|
||||
userId: i + 1,
|
||||
userCode: 2000000 + randomId,
|
||||
userName: '测试' + randomId,
|
||||
userPhone: '1588888888',
|
||||
userEmail: 'ry1@qq.com',
|
||||
userBalance: 10 + randomId,
|
||||
})
|
||||
}
|
||||
if (isAppend) {
|
||||
total += number
|
||||
} else {
|
||||
total = number
|
||||
}
|
||||
$('#total').text(total);
|
||||
return data;
|
||||
}
|
||||
|
||||
function loadRows() {
|
||||
$('#bootstrap-table').bootstrapTable('load', getData(10000))
|
||||
}
|
||||
|
||||
function appendRows() {
|
||||
$('#bootstrap-table').bootstrapTable('append', getData(10000, true))
|
||||
}
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
@ -9,35 +9,35 @@
|
||||
<link th:href="@{/css/bootstrap.min.css?v=3.3.7}" rel="stylesheet"/>
|
||||
<link th:href="@{/css/font-awesome.min.css?v=4.7.0}" rel="stylesheet"/>
|
||||
<!-- bootstrap-table 表格插件样式 -->
|
||||
<link th:href="@{/ajax/libs/bootstrap-table/bootstrap-table.min.css?v=1.18.3}" rel="stylesheet"/>
|
||||
<link th:href="@{/ajax/libs/bootstrap-table/bootstrap-table.min.css?v=1.22.6}" rel="stylesheet"/>
|
||||
<link th:href="@{/css/animate.min.css?v=20210831}" rel="stylesheet"/>
|
||||
<link th:href="@{/css/style.min.css?v=20210831}" rel="stylesheet"/>
|
||||
<link th:href="@{/ruoyi/css/ry-ui.css?v=4.7.7}" rel="stylesheet"/>
|
||||
<link th:href="@{/ruoyi/css/ry-ui.css?v=4.7.9}" rel="stylesheet"/>
|
||||
</head>
|
||||
|
||||
<!-- 通用JS -->
|
||||
<div th:fragment="footer">
|
||||
<script th:inline="javascript"> var ctx = [[@{/}]]; var lockscreen = [[${session.lockscreen}]]; if(lockscreen){window.top.location=ctx+"lockscreen";} </script>
|
||||
<a id="scroll-up" href="#" class="btn btn-sm display"><i class="fa fa-angle-double-up"></i></a>
|
||||
<a id="scroll-up" href="javascript:;" class="btn btn-sm display"><i class="fa fa-angle-double-up"></i></a>
|
||||
<script th:src="@{/js/jquery.min.js?v=3.6.3}"></script>
|
||||
<script th:src="@{/js/bootstrap.min.js?v=3.3.7}"></script>
|
||||
<!-- bootstrap-table 表格插件 -->
|
||||
<script th:src="@{/ajax/libs/bootstrap-table/bootstrap-table.min.js?v=1.18.3}"></script>
|
||||
<script th:src="@{/ajax/libs/bootstrap-table/locale/bootstrap-table-zh-CN.min.js?v=1.18.3}"></script>
|
||||
<script th:src="@{/ajax/libs/bootstrap-table/extensions/mobile/bootstrap-table-mobile.js?v=1.18.3}"></script>
|
||||
<script th:src="@{/ajax/libs/bootstrap-table/bootstrap-table.min.js?v=1.22.6}"></script>
|
||||
<script th:src="@{/ajax/libs/bootstrap-table/locale/bootstrap-table-zh-CN.min.js?v=1.22.6}"></script>
|
||||
<script th:src="@{/ajax/libs/bootstrap-table/extensions/mobile/bootstrap-table-mobile.js?v=1.22.6}"></script>
|
||||
<!-- jquery-validate 表单验证插件 -->
|
||||
<script th:src="@{/ajax/libs/validate/jquery.validate.min.js?v=1.19.3}"></script>
|
||||
<script th:src="@{/ajax/libs/validate/jquery.validate.extend.js?v=1.19.3}"></script>
|
||||
<script th:src="@{/ajax/libs/validate/messages_zh.js?v=1.19.3}"></script>
|
||||
<!-- bootstrap-table 表格树插件 -->
|
||||
<script th:src="@{/ajax/libs/bootstrap-table/extensions/tree/bootstrap-table-tree.min.js?v=1.18.3}"></script>
|
||||
<script th:src="@{/ajax/libs/bootstrap-table/extensions/tree/bootstrap-table-tree.min.js?v=1.22.6}"></script>
|
||||
<!-- 遮罩层 -->
|
||||
<script th:src="@{/ajax/libs/blockUI/jquery.blockUI.js?v=2.70.0}"></script>
|
||||
<script th:src="@{/ajax/libs/iCheck/icheck.min.js?v=1.0.3}"></script>
|
||||
<script th:src="@{/ajax/libs/layer/layer.min.js?v=3.5.1}"></script>
|
||||
<script th:src="@{/ajax/libs/layui/layui.min.js?v=2.7.5}"></script>
|
||||
<script th:src="@{/ruoyi/js/common.js?v=4.7.7}"></script>
|
||||
<script th:src="@{/ruoyi/js/ry-ui.js?v=4.7.7}"></script>
|
||||
<script th:src="@{/ajax/libs/layer/layer.min.js?v=3.7.0}"></script>
|
||||
<script th:src="@{/ajax/libs/layui/layui.min.js?v=2.8.18}"></script>
|
||||
<script th:src="@{/ruoyi/js/common.js?v=4.7.9}"></script>
|
||||
<script th:src="@{/ruoyi/js/ry-ui.js?v=4.7.9}"></script>
|
||||
</div>
|
||||
|
||||
<!-- ztree树插件 -->
|
||||
@ -170,20 +170,20 @@
|
||||
|
||||
<!-- 表格行拖拽插件 -->
|
||||
<div th:fragment="bootstrap-table-reorder-rows-js">
|
||||
<script th:src="@{/ajax/libs/bootstrap-table/extensions/reorder-rows/bootstrap-table-reorder-rows.js?v=1.18.3}"></script>
|
||||
<script th:src="@{/ajax/libs/bootstrap-table/extensions/reorder-rows/bootstrap-table-reorder-rows.js?v=1.22.6}"></script>
|
||||
<script th:src="@{/ajax/libs/bootstrap-table/extensions/reorder-rows/jquery.tablednd.js?v=1.0.3}"></script>
|
||||
</div>
|
||||
|
||||
<!-- 表格列拖拽插件 -->
|
||||
<div th:fragment="bootstrap-table-reorder-columns-js">
|
||||
<script th:src="@{/ajax/libs/bootstrap-table/extensions/reorder-columns/jquery.dragtable.js?v=5.3.5}"></script>
|
||||
<script th:src="@{/ajax/libs/bootstrap-table/extensions/reorder-columns/bootstrap-table-reorder-columns.js?v=1.18.3}"></script>
|
||||
<script th:src="@{/ajax/libs/bootstrap-table/extensions/reorder-columns/bootstrap-table-reorder-columns.js?v=1.22.6}"></script>
|
||||
</div>
|
||||
|
||||
<!-- 表格列宽拖动插件 -->
|
||||
<div th:fragment="bootstrap-table-resizable-js">
|
||||
<script th:src="@{/ajax/libs/bootstrap-table/extensions/resizable/jquery.resizableColumns.min.js?v=0.1.0}"></script>
|
||||
<script th:src="@{/ajax/libs/bootstrap-table/extensions/resizable/bootstrap-table-resizable.js?v=1.18.3}"></script>
|
||||
<script th:src="@{/ajax/libs/bootstrap-table/extensions/resizable/bootstrap-table-resizable.js?v=1.22.6}"></script>
|
||||
</div>
|
||||
|
||||
<!-- 表格行内编辑插件 -->
|
||||
@ -192,31 +192,36 @@
|
||||
</div>
|
||||
<div th:fragment="bootstrap-table-editable-js">
|
||||
<script th:src="@{/ajax/libs/bootstrap-table/extensions/editable/bootstrap-editable.min.js?v=1.5.1}"></script>
|
||||
<script th:src="@{/ajax/libs/bootstrap-table/extensions/editable/bootstrap-table-editable.js?v=1.18.3}"></script>
|
||||
<script th:src="@{/ajax/libs/bootstrap-table/extensions/editable/bootstrap-table-editable.js?v=1.22.6}"></script>
|
||||
</div>
|
||||
|
||||
<!-- 表格导出插件 -->
|
||||
<div th:fragment="bootstrap-table-export-js">
|
||||
<script th:src="@{/ajax/libs/bootstrap-table/extensions/export/bootstrap-table-export.js?v=1.18.3}"></script>
|
||||
<script th:src="@{/ajax/libs/bootstrap-table/extensions/export/bootstrap-table-export.js?v=1.22.6}"></script>
|
||||
<script th:src="@{/ajax/libs/bootstrap-table/extensions/export/tableExport.min.js?v=1.10.24}"></script>
|
||||
</div>
|
||||
|
||||
<!-- 表格冻结列插件 -->
|
||||
<div th:fragment="bootstrap-table-fixed-columns-js">
|
||||
<script th:src="@{/ajax/libs/bootstrap-table/extensions/columns/bootstrap-table-fixed-columns.js?v=1.18.3}"></script>
|
||||
<script th:src="@{/ajax/libs/bootstrap-table/extensions/columns/bootstrap-table-fixed-columns.js?v=1.22.6}"></script>
|
||||
</div>
|
||||
|
||||
<!-- 表格自动刷新插件 -->
|
||||
<div th:fragment="bootstrap-table-auto-refresh-js">
|
||||
<script th:src="@{/ajax/libs/bootstrap-table/extensions/auto-refresh/bootstrap-table-auto-refresh.js?v=1.18.3}"></script>
|
||||
<script th:src="@{/ajax/libs/bootstrap-table/extensions/auto-refresh/bootstrap-table-auto-refresh.js?v=1.22.6}"></script>
|
||||
</div>
|
||||
|
||||
<!-- 表格打印插件 -->
|
||||
<div th:fragment="bootstrap-table-print-js">
|
||||
<script th:src="@{/ajax/libs/bootstrap-table/extensions/print/bootstrap-table-print.js?v=1.18.3}"></script>
|
||||
<script th:src="@{/ajax/libs/bootstrap-table/extensions/print/bootstrap-table-print.js?v=1.22.6}"></script>
|
||||
</div>
|
||||
|
||||
<!-- 表格视图分页插件 -->
|
||||
<div th:fragment="bootstrap-table-custom-view-js">
|
||||
<script th:src="@{/ajax/libs/bootstrap-table/extensions/custom-view/bootstrap-table-custom-view.js?v=1.18.3}"></script>
|
||||
<script th:src="@{/ajax/libs/bootstrap-table/extensions/custom-view/bootstrap-table-custom-view.js?v=1.22.6}"></script>
|
||||
</div>
|
||||
|
||||
<!-- 表格保存状态插件 -->
|
||||
<div th:fragment="bootstrap-table-cookie-js">
|
||||
<script th:src="@{/ajax/libs/bootstrap-table/extensions/cookie/bootstrap-table-cookie.js?v=1.22.6}"></script>
|
||||
</div>
|
||||
|
@ -14,7 +14,7 @@
|
||||
<link th:href="@{/css/animate.min.css}" rel="stylesheet"/>
|
||||
<link th:href="@{/css/style.min.css}" rel="stylesheet"/>
|
||||
<link th:href="@{/css/skins.css?v=20200902}" rel="stylesheet"/>
|
||||
<link th:href="@{/ruoyi/css/ry-ui.css?v=4.7.7}" rel="stylesheet"/>
|
||||
<link th:href="@{/ruoyi/css/ry-ui.css?v=4.7.9}" rel="stylesheet"/>
|
||||
<style type="text/css">.fixed-sidebar .nav:not(.navbar-toolbar)>li.active{border-left:0px!important;}</style>
|
||||
</head>
|
||||
<body class="fixed-sidebar full-height-layout gray-bg" th:classappend="${isMobile} ? 'canvas-menu'" style="overflow: hidden">
|
||||
@ -40,7 +40,7 @@
|
||||
</a>
|
||||
<div class="pull-left info">
|
||||
<p>[[${user.loginName}]]</p>
|
||||
<a href="#"><i class="fa fa-circle text-success"></i> 在线</a>
|
||||
<a href="javascript:;"><i class="fa fa-circle text-success"></i> 在线</a>
|
||||
<a th:href="@{logout}" style="padding-left:5px;"><i class="fa fa-sign-out text-danger"></i> 注销</a>
|
||||
</div>
|
||||
</div>
|
||||
@ -53,7 +53,7 @@
|
||||
<a class="menu-content" th:if="${#lists.isEmpty(cmenu.children)}" th:href="@{${cmenu.url}}" th:classappend="${#strings.isEmpty(cmenu.target)} ? |menuItem| : ${cmenu.target}" th:data-refresh="${cmenu.isRefresh == '0'}">
|
||||
<i th:class="${cmenu.icon} + ' fa-fw'"></i> <span class="nav-label">[[${cmenu.menuName}]]</span>
|
||||
</a>
|
||||
<a class="menu-content" th:if="${not #lists.isEmpty(cmenu.children)}" href="#">
|
||||
<a class="menu-content" th:if="${not #lists.isEmpty(cmenu.children)}" href="javascript:;">
|
||||
<i th:class="${cmenu.icon} + ' fa-fw'"></i>
|
||||
<span class="nav-label">[[${cmenu.menuName}]]</span>
|
||||
<span class="fa arrow"></span>
|
||||
@ -64,7 +64,7 @@
|
||||
<i th:class="${emenu.icon} + ' fa-fw'"></i>
|
||||
[[${emenu.menuName}]]
|
||||
</a>
|
||||
<a th:if="${not #lists.isEmpty(emenu.children)}" href="#">
|
||||
<a th:if="${not #lists.isEmpty(emenu.children)}" href="javascript:;">
|
||||
<i th:class="${emenu.icon} + ' fa-fw'"></i>
|
||||
[[${emenu.menuName}]]
|
||||
<span class="fa arrow"></span>
|
||||
@ -93,7 +93,7 @@
|
||||
<div class="tab-pane fade height-full" id="demo" th:if="${demoEnabled}">
|
||||
<ul class="nav">
|
||||
<li>
|
||||
<a href="#"><i class="fa fa-edit"></i> <span class="nav-label">表单</span><span class="fa arrow"></span></a>
|
||||
<a href="javascript:;"><i class="fa fa-edit"></i> <span class="nav-label">表单</span><span class="fa arrow"></span></a>
|
||||
<ul class="nav nav-second-level collapse">
|
||||
<li><a class="menuItem" th:href="@{/demo/form/button}">按钮</a></li>
|
||||
<li><a class="menuItem" th:href="@{/demo/form/grid}">栅格</a></li>
|
||||
@ -119,14 +119,16 @@
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#"><i class="fa fa-table"></i> <span class="nav-label">表格</span><span class="fa arrow"></span></a>
|
||||
<a href="javascript:;"><i class="fa fa-table"></i> <span class="nav-label">表格</span><span class="fa arrow"></span></a>
|
||||
<ul class="nav nav-second-level collapse">
|
||||
<li><a class="menuItem" th:href="@{/demo/table/search}">查询条件</a></li>
|
||||
<li><a class="menuItem" th:href="@{/demo/table/footer}">数据汇总</a></li>
|
||||
<li><a class="menuItem" th:href="@{/demo/table/groupHeader}">组合表头</a></li>
|
||||
<li><a class="menuItem" th:href="@{/demo/table/export}">表格导出</a></li>
|
||||
<li><a class="menuItem" th:href="@{/demo/table/textSearch}">全文索引</a></li>
|
||||
<li><a class="menuItem" th:href="@{/demo/table/exportSelected}">导出选择列</a></li>
|
||||
<li><a class="menuItem" th:href="@{/demo/table/remember}">翻页记住选择</a></li>
|
||||
<li><a class="menuItem" th:href="@{/demo/table/cookie}">表格保存状态</a></li>
|
||||
<li><a class="menuItem" th:href="@{/demo/table/pageGo}">跳转至指定页</a></li>
|
||||
<li><a class="menuItem" th:href="@{/demo/table/params}">自定义查询参数</a></li>
|
||||
<li><a class="menuItem" th:href="@{/demo/table/multi}">初始多表格</a></li>
|
||||
@ -147,13 +149,14 @@
|
||||
<li><a class="menuItem" th:href="@{/demo/table/refresh}">表格自动刷新</a></li>
|
||||
<li><a class="menuItem" th:href="@{/demo/table/print}">表格打印配置</a></li>
|
||||
<li><a class="menuItem" th:href="@{/demo/table/dynamicColumns}">表格动态列</a></li>
|
||||
<li><a class="menuItem" th:href="@{/demo/table/virtualScroll}">表格虚拟滚动</a></li>
|
||||
<li><a class="menuItem" th:href="@{/demo/table/customView}">自定义视图分页</a></li>
|
||||
<li><a class="menuItem" th:href="@{/demo/table/asynTree}">异步加载表格树</a></li>
|
||||
<li><a class="menuItem" th:href="@{/demo/table/other}">表格其他操作</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#"><i class="fa fa-flask"></i> <span class="nav-label">弹框</span><span class="fa arrow"></span></a>
|
||||
<a href="javascript:;"><i class="fa fa-flask"></i> <span class="nav-label">弹框</span><span class="fa arrow"></span></a>
|
||||
<ul class="nav nav-second-level collapse">
|
||||
<li><a class="menuItem" th:href="@{/demo/modal/dialog}">模态窗口</a></li>
|
||||
<li><a class="menuItem" th:href="@{/demo/modal/layer}">弹层组件</a></li>
|
||||
@ -161,14 +164,14 @@
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#"><i class="fa fa-wpforms"></i> <span class="nav-label">操作</span><span class="fa arrow"></span></a>
|
||||
<a href="javascript:;"><i class="fa fa-wpforms"></i> <span class="nav-label">操作</span><span class="fa arrow"></span></a>
|
||||
<ul class="nav nav-second-level collapse">
|
||||
<li><a class="menuItem" th:href="@{/demo/operate/table}">表格</a></li>
|
||||
<li><a class="menuItem" th:href="@{/demo/operate/other}">其他</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#"><i class="fa fa-bar-chart-o"></i> <span class="nav-label">报表</span><span class="fa arrow"></span></a>
|
||||
<a href="javascript:;"><i class="fa fa-bar-chart-o"></i> <span class="nav-label">报表</span><span class="fa arrow"></span></a>
|
||||
<ul class="nav nav-second-level collapse">
|
||||
<li><a class="menuItem" th:href="@{/demo/report/echarts}">百度ECharts</a></li>
|
||||
<li><a class="menuItem" th:href="@{/demo/report/peity}">peity</a></li>
|
||||
@ -177,27 +180,27 @@
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#"><i class="fa fa-book"></i> <span class="nav-label">图标</span><span class="fa arrow"></span></a>
|
||||
<a href="javascript:;"><i class="fa fa-book"></i> <span class="nav-label">图标</span><span class="fa arrow"></span></a>
|
||||
<ul class="nav nav-second-level collapse">
|
||||
<li><a class="menuItem" th:href="@{/demo/icon/fontawesome}">Font Awesome</a></li>
|
||||
<li><a class="menuItem" th:href="@{/demo/icon/glyphicons}">Glyphicons</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#"><i class="fa fa-navicon"></i> <span class="nav-label">四层菜单</span><span class="fa arrow"></span></a>
|
||||
<a href="javascript:;"><i class="fa fa-navicon"></i> <span class="nav-label">四层菜单</span><span class="fa arrow"></span></a>
|
||||
<ul class="nav nav-second-level collapse">
|
||||
<li>
|
||||
<a href="#" id="damian">三级菜单1<span class="fa arrow"></span></a>
|
||||
<a href="javascript:;" id="damian">三级菜单1<span class="fa arrow"></span></a>
|
||||
<ul class="nav nav-third-level collapse">
|
||||
<li>
|
||||
<a href="#">四级菜单1</a>
|
||||
<a href="javascript:;">四级菜单1</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#">四级菜单2</a>
|
||||
<a href="javascript:;">四级菜单2</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#">三级菜单2</a></li>
|
||||
<li><a href="javascript:;">三级菜单2</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
@ -211,7 +214,7 @@
|
||||
<div class="row border-bottom">
|
||||
<nav class="navbar navbar-static-top" role="navigation" style="margin-bottom: 0">
|
||||
<div class="navbar-header">
|
||||
<a class="navbar-minimalize minimalize-styl-2" style="color:#FFF;" href="#" title="收起菜单">
|
||||
<a class="navbar-minimalize minimalize-styl-2" style="color:#FFF;" href="javascript:;" title="收起菜单">
|
||||
<i class="fa fa-bars"></i>
|
||||
</a>
|
||||
</div>
|
||||
@ -247,8 +250,8 @@
|
||||
<!-- 右侧栏 -->
|
||||
<ul class="nav navbar-top-links navbar-right welcome-message">
|
||||
<li><a data-toggle="tooltip" data-trigger="hover" data-placement="bottom" title="开发文档" href="http://doc.ruoyi.vip/ruoyi" target="_blank"><i class="fa fa-question-circle"></i> 文档</a></li>
|
||||
<li><a data-toggle="tooltip" data-trigger="hover" data-placement="bottom" title="锁定屏幕" href="#" id="lockScreen"><i class="fa fa-lock"></i> 锁屏</a></li>
|
||||
<li><a data-toggle="tooltip" data-trigger="hover" data-placement="bottom" title="全屏显示" href="#" id="fullScreen"><i class="fa fa-arrows-alt"></i> 全屏</a></li>
|
||||
<li><a data-toggle="tooltip" data-trigger="hover" data-placement="bottom" title="锁定屏幕" href="javascript:;" id="lockScreen"><i class="fa fa-lock"></i> 锁屏</a></li>
|
||||
<li><a data-toggle="tooltip" data-trigger="hover" data-placement="bottom" title="全屏显示" href="javascript:;" 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">
|
||||
@ -297,7 +300,7 @@
|
||||
<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>
|
||||
<a id="ax_close_max" class="ax_close_max" href="javascript:;" title="关闭全屏"> <i class="fa fa-times-circle-o"></i> </a>
|
||||
|
||||
<div class="row mainContent" id="content-main" th:classappend="${mainClass}">
|
||||
<iframe class="RuoYi_iframe" name="iframe0" width="100%" height="100%" th:data-id="@{/system/main}"
|
||||
@ -318,8 +321,8 @@
|
||||
<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.7.7}"></script>
|
||||
<script th:src="@{/ruoyi/js/common.js?v=4.7.7}"></script>
|
||||
<script th:src="@{/ruoyi/js/ry-ui.js?v=4.7.9}"></script>
|
||||
<script th:src="@{/ruoyi/js/common.js?v=4.7.9}"></script>
|
||||
<script th:src="@{/ruoyi/index.js?v=20201208}"></script>
|
||||
<script th:src="@{/ajax/libs/fullscreen/jquery.fullscreen.js}"></script>
|
||||
<script th:src="@{/js/resize-tabs.js}"></script>
|
||||
@ -336,6 +339,8 @@ var mode = "history";
|
||||
var historyPath = storage.get("historyPath");
|
||||
// 是否页签与菜单联动
|
||||
var isLinkage = true;
|
||||
// 是否页签切换滚动到顶部
|
||||
var isScrollToTop = true;
|
||||
|
||||
// 本地主题优先,未设置取系统配置
|
||||
if($.common.isNotEmpty(skin)){
|
||||
|
@ -14,7 +14,7 @@
|
||||
<link th:href="@{/css/animate.min.css}" rel="stylesheet"/>
|
||||
<link th:href="@{/css/style.min.css}" rel="stylesheet"/>
|
||||
<link th:href="@{/css/skins.css}" rel="stylesheet"/>
|
||||
<link th:href="@{/ruoyi/css/ry-ui.css?v=4.7.7}" rel="stylesheet"/>
|
||||
<link th:href="@{/ruoyi/css/ry-ui.css?v=4.7.9}" rel="stylesheet"/>
|
||||
</head>
|
||||
<body class="fixed-sidebar full-height-layout gray-bg" th:classappend="${isMobile} ? 'canvas-menu'" style="overflow: hidden">
|
||||
<div id="wrapper">
|
||||
@ -41,7 +41,7 @@
|
||||
</a>
|
||||
<div class="pull-left info">
|
||||
<p>[[${user.loginName}]]</p>
|
||||
<a href="#"><i class="fa fa-circle text-success"></i> 在线</a>
|
||||
<a href="javascript:;"><i class="fa fa-circle text-success"></i> 在线</a>
|
||||
<a th:href="@{logout}" style="padding-left:5px;"><i class="fa fa-sign-out text-danger"></i> 注销</a>
|
||||
</div>
|
||||
</div>
|
||||
@ -58,11 +58,11 @@
|
||||
<ul class="nav nav-second-level collapse">
|
||||
<li th:each="cmenu : ${menu.children}">
|
||||
<a th:if="${#lists.isEmpty(cmenu.children)}" th:class="${#strings.isEmpty(cmenu.target)} ? |menuItem| : ${cmenu.target}" th:utext="${cmenu.menuName}" th:href="@{${cmenu.url}}" th:data-refresh="${cmenu.isRefresh == '0'}">二级菜单</a>
|
||||
<a th:if="${not #lists.isEmpty(cmenu.children)}" href="#">[[${cmenu.menuName}]]<span class="fa arrow"></span></a>
|
||||
<a th:if="${not #lists.isEmpty(cmenu.children)}" href="javascript:;">[[${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:if="${#lists.isEmpty(emenu.children)}" th:class="${#strings.isEmpty(emenu.target)} ? |menuItem| : ${emenu.target}" th:text="${emenu.menuName}" th:href="@{${emenu.url}}" th:data-refresh="${emenu.isRefresh == '0'}">三级菜单</a>
|
||||
<a th:if="${not #lists.isEmpty(emenu.children)}" href="#">[[${emenu.menuName}]]<span class="fa arrow"></span></a>
|
||||
<a th:if="${not #lists.isEmpty(emenu.children)}" href="javascript:;">[[${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="${#strings.isEmpty(fmenu.target)} ? |menuItem| : ${fmenu.target}" th:text="${fmenu.menuName}" th:href="@{${fmenu.url}}" th:data-refresh="${fmenu.isRefresh == '0'}">四级菜单</a></li>
|
||||
</ul>
|
||||
@ -72,7 +72,7 @@
|
||||
</ul>
|
||||
</li>
|
||||
<li th:if="${demoEnabled}">
|
||||
<a href="#"><i class="fa fa-desktop"></i><span class="nav-label">实例演示</span><span class="fa arrow"></span></a>
|
||||
<a href="javascript:;"><i class="fa fa-desktop"></i><span class="nav-label">实例演示</span><span class="fa arrow"></span></a>
|
||||
<ul class="nav nav-second-level collapse">
|
||||
<li> <a>表单<span class="fa arrow"></span></a>
|
||||
<ul class="nav nav-third-level">
|
||||
@ -105,8 +105,10 @@
|
||||
<li><a class="menuItem" th:href="@{/demo/table/footer}">数据汇总</a></li>
|
||||
<li><a class="menuItem" th:href="@{/demo/table/groupHeader}">组合表头</a></li>
|
||||
<li><a class="menuItem" th:href="@{/demo/table/export}">表格导出</a></li>
|
||||
<li><a class="menuItem" th:href="@{/demo/table/textSearch}">全文索引</a></li>
|
||||
<li><a class="menuItem" th:href="@{/demo/table/exportSelected}">导出选择列</a></li>
|
||||
<li><a class="menuItem" th:href="@{/demo/table/remember}">翻页记住选择</a></li>
|
||||
<li><a class="menuItem" th:href="@{/demo/table/cookie}">表格保存状态</a></li>
|
||||
<li><a class="menuItem" th:href="@{/demo/table/pageGo}">跳转至指定页</a></li>
|
||||
<li><a class="menuItem" th:href="@{/demo/table/params}">自定义查询参数</a></li>
|
||||
<li><a class="menuItem" th:href="@{/demo/table/multi}">初始多表格</a></li>
|
||||
@ -127,6 +129,7 @@
|
||||
<li><a class="menuItem" th:href="@{/demo/table/refresh}">表格自动刷新</a></li>
|
||||
<li><a class="menuItem" th:href="@{/demo/table/print}">表格打印配置</a></li>
|
||||
<li><a class="menuItem" th:href="@{/demo/table/dynamicColumns}">表格动态列</a></li>
|
||||
<li><a class="menuItem" th:href="@{/demo/table/virtualScroll}">表格虚拟滚动</a></li>
|
||||
<li><a class="menuItem" th:href="@{/demo/table/customView}">自定义视图分页</a></li>
|
||||
<li><a class="menuItem" th:href="@{/demo/table/asynTree}">异步加载表格树</a></li>
|
||||
<li><a class="menuItem" th:href="@{/demo/table/other}">表格其他操作</a></li>
|
||||
@ -160,20 +163,20 @@
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#"><i class="fa fa-sitemap"></i>四层菜单<span class="fa arrow"></span></a>
|
||||
<a href="javascript:;"><i class="fa fa-sitemap"></i>四层菜单<span class="fa arrow"></span></a>
|
||||
<ul class="nav nav-third-level collapse">
|
||||
<li>
|
||||
<a href="#" id="damian">三级菜单1<span class="fa arrow"></span></a>
|
||||
<a href="javascript:;" id="damian">三级菜单1<span class="fa arrow"></span></a>
|
||||
<ul class="nav nav-third-level">
|
||||
<li>
|
||||
<a href="#">四级菜单1</a>
|
||||
<a href="javascript:;">四级菜单1</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#">四级菜单2</a>
|
||||
<a href="javascript:;">四级菜单2</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#">三级菜单2</a></li>
|
||||
<li><a href="javascript:;">三级菜单2</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
@ -188,14 +191,14 @@
|
||||
<div class="row border-bottom">
|
||||
<nav class="navbar navbar-static-top" role="navigation" style="margin-bottom: 0">
|
||||
<div class="navbar-header">
|
||||
<a class="navbar-minimalize minimalize-styl-2" style="color:#FFF;" href="#" title="收起菜单">
|
||||
<a class="navbar-minimalize minimalize-styl-2" style="color:#FFF;" href="javascript:;" title="收起菜单">
|
||||
<i class="fa fa-bars"></i>
|
||||
</a>
|
||||
</div>
|
||||
<ul class="nav navbar-top-links navbar-right welcome-message">
|
||||
<li><a data-toggle="tooltip" data-trigger="hover" data-placement="bottom" title="开发文档" href="http://doc.ruoyi.vip/ruoyi" target="_blank"><i class="fa fa-question-circle"></i> 文档</a></li>
|
||||
<li><a data-toggle="tooltip" data-trigger="hover" data-placement="bottom" title="锁定屏幕" href="#" id="lockScreen"><i class="fa fa-lock"></i> 锁屏</a></li>
|
||||
<li><a data-toggle="tooltip" data-trigger="hover" data-placement="bottom" title="全屏显示" href="#" id="fullScreen"><i class="fa fa-arrows-alt"></i> 全屏</a></li>
|
||||
<li><a data-toggle="tooltip" data-trigger="hover" data-placement="bottom" title="锁定屏幕" href="javascript:;" id="lockScreen"><i class="fa fa-lock"></i> 锁屏</a></li>
|
||||
<li><a data-toggle="tooltip" data-trigger="hover" data-placement="bottom" title="全屏显示" href="javascript:;" 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="(${#strings.isEmpty(user.avatar)}) ? @{/img/profile.jpg} : @{${user.avatar}}" th:onerror="this.src='img/profile.jpg'" class="user-image">
|
||||
@ -243,7 +246,7 @@
|
||||
<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>
|
||||
<a id="ax_close_max" class="ax_close_max" href="javascript:;" title="关闭全屏"> <i class="fa fa-times-circle-o"></i> </a>
|
||||
|
||||
<div class="row mainContent" id="content-main" th:classappend="${mainClass}">
|
||||
<iframe class="RuoYi_iframe" name="iframe0" width="100%" height="100%" th:data-id="@{/system/main}"
|
||||
@ -264,8 +267,8 @@
|
||||
<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.7.7}"></script>
|
||||
<script th:src="@{/ruoyi/js/common.js?v=4.7.7}"></script>
|
||||
<script th:src="@{/ruoyi/js/ry-ui.js?v=4.7.9}"></script>
|
||||
<script th:src="@{/ruoyi/js/common.js?v=4.7.9}"></script>
|
||||
<script th:src="@{/ruoyi/index.js?v=20201208}"></script>
|
||||
<script th:src="@{/ajax/libs/fullscreen/jquery.fullscreen.js}"></script>
|
||||
<script th:inline="javascript">
|
||||
@ -281,6 +284,8 @@ var mode = "history";
|
||||
var historyPath = storage.get("historyPath");
|
||||
// 是否页签与菜单联动
|
||||
var isLinkage = true;
|
||||
// 是否页签切换滚动到顶部
|
||||
var isScrollToTop = true;
|
||||
|
||||
// 本地主题优先,未设置取系统配置
|
||||
if($.common.isNotEmpty(skin)){
|
||||
|
@ -38,7 +38,7 @@
|
||||
<script src="../static/js/bootstrap.min.js" th:src="@{/js/bootstrap.min.js}"></script>
|
||||
<script src="../static/js/three.min.js" th:src="@{/js/three.min.js}"></script>
|
||||
<script src="../static/ajax/libs/layer/layer.min.js" th:src="@{/ajax/libs/layer/layer.min.js}"></script>
|
||||
<script src="../static/ruoyi/js/ry-ui.js" th:src="@{/ruoyi/js/ry-ui.js?v=4.7.7}"></script>
|
||||
<script src="../static/ruoyi/js/ry-ui.js" th:src="@{/ruoyi/js/ry-ui.js?v=4.7.9}"></script>
|
||||
</body>
|
||||
<script th:inline="javascript">
|
||||
var ctx = [[@{/}]];
|
||||
|
@ -9,7 +9,7 @@
|
||||
<link href="../static/css/font-awesome.min.css" th:href="@{/css/font-awesome.min.css}" rel="stylesheet"/>
|
||||
<link href="../static/css/style.min.css" th:href="@{/css/style.min.css}" rel="stylesheet"/>
|
||||
<link href="../static/css/login.min.css" th:href="@{/css/login.min.css}" rel="stylesheet"/>
|
||||
<link href="../static/ruoyi/css/ry-ui.css" th:href="@{/ruoyi/css/ry-ui.css?v=4.7.7}" rel="stylesheet"/>
|
||||
<link href="../static/ruoyi/css/ry-ui.css" th:href="@{/ruoyi/css/ry-ui.css?v=4.7.9}" rel="stylesheet"/>
|
||||
<!-- 360浏览器急速模式 -->
|
||||
<meta name="renderer" content="webkit">
|
||||
<!-- 避免IE使用兼容模式 -->
|
||||
@ -65,18 +65,18 @@
|
||||
</div>
|
||||
<div class="signup-footer">
|
||||
<div class="pull-left">
|
||||
Copyright © 2018-2023 ruoyi.vip All Rights Reserved. <br>
|
||||
Copyright © 2018-2024 ruoyi.vip All Rights Reserved. <br>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script th:inline="javascript"> var ctx = [[@{/}]]; var captchaType = [[${captchaType}]]; </script>
|
||||
<script th:inline="javascript"> var ctx = [[@{/}]]; var captchaType = [[${captchaType}]]; var captchaEnabled = [[${captchaEnabled}]];</script>
|
||||
<!--[if lte IE 8]><script>window.location.href=ctx+'html/ie.html';</script><![endif]-->
|
||||
<!-- 全局js -->
|
||||
<script src="../static/js/jquery.min.js" th:src="@{/js/jquery.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/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.7.7}"></script>
|
||||
<script src="../static/ruoyi/js/ry-ui.js" th:src="@{/ruoyi/js/ry-ui.js?v=4.7.9}"></script>
|
||||
<script src="../static/ruoyi/login.js" th:src="@{/ruoyi/login.js}"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
@ -79,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> <s>满1145125</s> <s>满86752435</s> <s>满134072510</s> <s>满210336300</s> <s>满339522636</s> <s>满130035985</s> <s>满143151071</s> <s>满158781320</s> <s>满201531282</s> <s>满101526938</s> <s>满264355400</s> <s>满298522656</s> <s>满139845794</s> <s>满185760789</s> <a href="https://jq.qq.com/?_wv=1027&k=7FplYUnR" target="_blank">175104288</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> <s>满339522636</s> <s>满130035985</s> <s>满143151071</s> <s>满158781320</s> <s>满201531282</s> <s>满101526938</s> <s>满264355400</s> <s>满298522656</s> <s>满139845794</s> <s>满185760789</s> <s>满175104288</s> <s>满174942938</s> <s>满287843737</s> <a href="http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=KTVAIhggR3rR3uZWK9A8kR4yYNREQ4jo&authKey=An4DUV9e7uK8I8VgBbp949z0ypQoDrOoqvVg%2FWOr2vuNNDMZUAMPvqHor6TFMIgz&noverify=0&group_code=232896766" target="_blank">232896766</a>
|
||||
</p>
|
||||
<p><i class="fa fa-weixin"></i> 微信:<a href="javascript:;">/ *若依</a>
|
||||
</p>
|
||||
@ -96,13 +96,104 @@
|
||||
<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="#v479">v4.7.9</a><code class="pull-right">2024.06.06</code>
|
||||
</h5>
|
||||
</div>
|
||||
<div id="v479" class="panel-collapse collapse in">
|
||||
<div class="panel-body">
|
||||
<ol>
|
||||
<li>通知公告新增详细显示</li>
|
||||
<li>新增数据脱敏过滤注解</li>
|
||||
<li>新增表格示例(虚拟滚动)</li>
|
||||
<li>新增表格示例(全文检索)</li>
|
||||
<li>新增表格示例(保存状态)</li>
|
||||
<li>代码生成支持表单布局选项</li>
|
||||
<li>限制用户操作数据权限范围</li>
|
||||
<li>用户密码新增非法字符验证</li>
|
||||
<li>默认加载layer扩展皮肤</li>
|
||||
<li>未修改初始密码弹框提醒</li>
|
||||
<li>定时任务白名单配置范围缩小</li>
|
||||
<li>操作日志列表重置回第一页</li>
|
||||
<li>定时任务日志默认按时间排序</li>
|
||||
<li>Excel注解ColumnType类型新增文本</li>
|
||||
<li>Excel注解新增属性comboReadDict</li>
|
||||
<li>新增Anonymous匿名访问不鉴权注解</li>
|
||||
<li>升级oshi到最新版本6.6.1</li>
|
||||
<li>升级druid到最新版本1.2.23</li>
|
||||
<li>升级commons.io到最新版本2.13.0</li>
|
||||
<li>升级spring-framework到安全版本</li>
|
||||
<li>升级bootstrap-table到最新版本1.22.6</li>
|
||||
<li>修复重置日期时出现的异常问题</li>
|
||||
<li>修复页签关闭后存在的跳转问题</li>
|
||||
<li>修复tooltip单击复制文本不生效的问题</li>
|
||||
<li>更新缓存管理键名排序方式</li>
|
||||
<li>更新HttpUtils中的User-Agent</li>
|
||||
<li>优化自定义XSS注解匹配方式</li>
|
||||
<li>优化登录注册页面验证码验证</li>
|
||||
<li>优化数据权限自定义匹配方式</li>
|
||||
<li>优化高频率定时任务不执行问题</li>
|
||||
<li>优化树表格align属性在标题生效</li>
|
||||
<li>优化代码生成主子表关联查询方式</li>
|
||||
<li>优化导入Excel时设置dictType属性重复查缓存问题</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="#v478">v4.7.8</a><code class="pull-right">2023.11.23</code>
|
||||
</h5>
|
||||
</div>
|
||||
<div id="v478" class="panel-collapse collapse">
|
||||
<div class="panel-body">
|
||||
<ol>
|
||||
<li>用户列表新增抽屉效果详细信息</li>
|
||||
<li>操作日志列表新增IP地址查询</li>
|
||||
<li>定时任务新增页去除状态选项</li>
|
||||
<li>系统管理角色列表显示数据权限</li>
|
||||
<li>通用排序属性orderBy参数限制长度</li>
|
||||
<li>新增isScrollToTop页签切换滚动到顶部</li>
|
||||
<li>Excel自定义数据处理器增加单元格/工作簿对象</li>
|
||||
<li>新增表格参数(数据值为空时显示的内容undefinedText)</li>
|
||||
<li>升级oshi到最新版本6.4.7</li>
|
||||
<li>升级shiro到最新版本1.13.0</li>
|
||||
<li>升级druid到最新版本1.2.20</li>
|
||||
<li>升级pagehelper到最新版1.4.7</li>
|
||||
<li>升级spring-boot到最新版本2.5.15</li>
|
||||
<li>升级jquery到最新版v3.7.1</li>
|
||||
<li>升级layer到最新版本v3.7.0</li>
|
||||
<li>升级layui到最新版本v2.8.18</li>
|
||||
<li>升级x-editable到最新版本1.5.3</li>
|
||||
<li>修复自定义字典样式不生效的问题</li>
|
||||
<li>修复弹窗按钮启用禁用方法无效问题</li>
|
||||
<li>修复横向菜单关闭最后一个页签状态问题</li>
|
||||
<li>修复Excel导入数据临时文件无法删除问题</li>
|
||||
<li>修复表格行内编辑启用翻页记住选择无效问题</li>
|
||||
<li>修复Excels导入时无法获取到dictType字典值问题</li>
|
||||
<li>优化重置密码鼠标按下显示密码</li>
|
||||
<li>优化参数键值文本框改为文本域</li>
|
||||
<li>优化表格重置默认返回到第一页</li>
|
||||
<li>优化菜单管理类型为按钮状态可选</li>
|
||||
<li>优化数字金额大写转换精度丢失问题</li>
|
||||
<li>优化树表查询无数据时清除分页信息</li>
|
||||
<li>优化通用detail详细信息弹窗不显示按钮</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="#v477">v4.7.7</a><code class="pull-right">2023.04.14</code>
|
||||
</h5>
|
||||
</div>
|
||||
<div id="v477" class="panel-collapse collapse in">
|
||||
<div id="v477" class="panel-collapse collapse">
|
||||
<div class="panel-body">
|
||||
<ol>
|
||||
<li>操作日志新增消耗时间属性</li>
|
||||
|