liuyuqiang 2 年 前
コミット
f2440f96e3
100 ファイル変更156 行追加27432 行削除
  1. 1 1
      .github/FUNDING.yml
  2. 19 19
      LICENSE
  3. 101 101
      README.md
  4. 35 27
      pom.xml
  5. 0 134
      ruoyi-admin/pom.xml
  6. 0 30
      ruoyi-admin/src/main/java/com/ruoyi/RuoYiApplication.java
  7. 0 18
      ruoyi-admin/src/main/java/com/ruoyi/RuoYiServletInitializer.java
  8. 0 166
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java
  9. 0 98
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/demo/controller/DemoDialogController.java
  10. 0 399
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/demo/controller/DemoFormController.java
  11. 0 35
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/demo/controller/DemoIconController.java
  12. 0 326
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/demo/controller/DemoOperateController.java
  13. 0 53
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/demo/controller/DemoReportController.java
  14. 0 846
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/demo/controller/DemoTableController.java
  15. 0 116
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/demo/domain/CustomerModel.java
  16. 0 99
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/demo/domain/GoodsModel.java
  17. 0 149
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/demo/domain/UserOperateModel.java
  18. 0 90
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/CacheController.java
  19. 0 26
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/DruidController.java
  20. 0 31
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/ServerController.java
  21. 0 94
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/SysLogininforController.java
  22. 0 90
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/SysOperlogController.java
  23. 0 88
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/SysUserOnlineController.java
  24. 0 92
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysCaptchaController.java
  25. 0 158
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysConfigController.java
  26. 0 187
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDeptController.java
  27. 0 121
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDictDataController.java
  28. 0 189
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDictTypeController.java
  29. 0 178
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysIndexController.java
  30. 0 82
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
  31. 0 198
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysMenuController.java
  32. 0 113
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysNoticeController.java
  33. 0 163
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysPostController.java
  34. 0 184
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysProfileController.java
  35. 0 46
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRegisterController.java
  36. 0 323
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRoleController.java
  37. 0 337
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java
  38. 0 26
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/tool/BuildController.java
  39. 0 24
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/tool/SwaggerController.java
  40. 0 183
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/tool/TestController.java
  41. 0 67
      ruoyi-admin/src/main/java/com/ruoyi/web/core/config/SwaggerConfig.java
  42. 0 61
      ruoyi-admin/src/main/resources/application-druid.yml
  43. 0 142
      ruoyi-admin/src/main/resources/application.yml
  44. 0 24
      ruoyi-admin/src/main/resources/banner.txt
  45. 0 91
      ruoyi-admin/src/main/resources/ehcache/ehcache-shiro.xml
  46. 0 93
      ruoyi-admin/src/main/resources/logback.xml
  47. 0 617
      ruoyi-admin/src/main/resources/static/ajax/libs/beautifyhtml/beautifyhtml.js
  48. 0 620
      ruoyi-admin/src/main/resources/static/ajax/libs/blockUI/jquery.blockUI.js
  49. 0 688
      ruoyi-admin/src/main/resources/static/ajax/libs/bootstrap-fileinput/fileinput.css
  50. 0 13
      ruoyi-admin/src/main/resources/static/ajax/libs/bootstrap-fileinput/fileinput.min.css
  51. 0 11
      ruoyi-admin/src/main/resources/static/ajax/libs/bootstrap-fileinput/fileinput.min.js
  52. 0 459
      ruoyi-admin/src/main/resources/static/ajax/libs/bootstrap-select/bootstrap-select.css
  53. 0 3247
      ruoyi-admin/src/main/resources/static/ajax/libs/bootstrap-select/bootstrap-select.js
  54. 0 6
      ruoyi-admin/src/main/resources/static/ajax/libs/bootstrap-select/bootstrap-select.min.css
  55. 0 6
      ruoyi-admin/src/main/resources/static/ajax/libs/bootstrap-table/bootstrap-table.min.js
  56. 0 95
      ruoyi-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/auto-refresh/bootstrap-table-auto-refresh.js
  57. 0 663
      ruoyi-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/editable/bootstrap-editable.css
  58. 0 7
      ruoyi-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/editable/bootstrap-editable.min.js
  59. 0 213
      ruoyi-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/reorder-columns/bootstrap-table-reorder-columns.js
  60. 0 22
      ruoyi-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/reorder-columns/jquery.dragtable.js
  61. 0 69
      ruoyi-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/resizable/bootstrap-table-resizable.js
  62. 0 8
      ruoyi-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/resizable/jquery.resizableColumns.min.js
  63. 0 1060
      ruoyi-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/tree/bootstrap-table-tree.js
  64. 0 5
      ruoyi-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/tree/bootstrap-table-tree.min.js
  65. 0 109
      ruoyi-admin/src/main/resources/static/ajax/libs/bootstrap-table/locale/bootstrap-table-zh-CN.js
  66. 0 406
      ruoyi-admin/src/main/resources/static/ajax/libs/cxselect/jquery.cxselect.js
  67. 0 11
      ruoyi-admin/src/main/resources/static/ajax/libs/cxselect/jquery.cxselect.min.js
  68. 0 844
      ruoyi-admin/src/main/resources/static/ajax/libs/duallistbox/bootstrap-duallistbox.js
  69. 0 10
      ruoyi-admin/src/main/resources/static/ajax/libs/duallistbox/bootstrap-duallistbox.min.js
  70. 0 182
      ruoyi-admin/src/main/resources/static/ajax/libs/fullscreen/jquery.fullscreen.js
  71. 0 79
      ruoyi-admin/src/main/resources/static/ajax/libs/highlight/default.min.css
  72. 0 1102
      ruoyi-admin/src/main/resources/static/ajax/libs/highlight/highlight.min.js
  73. 0 72
      ruoyi-admin/src/main/resources/static/ajax/libs/iCheck/custom.css
  74. 0 2
      ruoyi-admin/src/main/resources/static/ajax/libs/jquery-layout/jquery.layout-latest.js
  75. 0 102
      ruoyi-admin/src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/default/zTreeStyle.css
  76. 0 107
      ruoyi-admin/src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/metro/zTreeStyle.css
  77. 0 118
      ruoyi-admin/src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/simple/zTreeStyle.css
  78. 0 3820
      ruoyi-admin/src/main/resources/static/ajax/libs/jquery-ztree/3.5/js/jquery.ztree.all-3.5.js
  79. 0 1650
      ruoyi-admin/src/main/resources/static/ajax/libs/jquery-ztree/3.5/js/jquery.ztree.core-3.5.js
  80. 0 624
      ruoyi-admin/src/main/resources/static/ajax/libs/jquery-ztree/3.5/js/jquery.ztree.excheck-3.5.js
  81. 0 1178
      ruoyi-admin/src/main/resources/static/ajax/libs/jquery-ztree/3.5/js/jquery.ztree.exedit-3.5.js
  82. 0 366
      ruoyi-admin/src/main/resources/static/ajax/libs/jquery-ztree/3.5/js/jquery.ztree.exhide-3.5.js
  83. 0 170
      ruoyi-admin/src/main/resources/static/ajax/libs/jquery-ztree/3.5/log v3.x.txt
  84. 0 2
      ruoyi-admin/src/main/resources/static/ajax/libs/layer/layer.min.js
  85. 0 138
      ruoyi-admin/src/main/resources/static/ajax/libs/layer/theme/moon/style.css
  86. 0 45
      ruoyi-admin/src/main/resources/static/ajax/libs/layui/css/modules/laydate/default/font/iconfont.svg
  87. 0 2
      ruoyi-admin/src/main/resources/static/ajax/libs/layui/css/modules/laydate/default/laydate.css
  88. 0 2
      ruoyi-admin/src/main/resources/static/ajax/libs/layui/layui.min.js
  89. 0 2
      ruoyi-admin/src/main/resources/static/ajax/libs/layui/modules/laydate.js
  90. 0 7
      ruoyi-admin/src/main/resources/static/ajax/libs/select2/select2-bootstrap.min.css
  91. 0 1180
      ruoyi-admin/src/main/resources/static/ajax/libs/suggest/bootstrap-suggest.js
  92. 0 9
      ruoyi-admin/src/main/resources/static/ajax/libs/suggest/bootstrap-suggest.min.js
  93. 0 774
      ruoyi-admin/src/main/resources/static/ajax/libs/typeahead/bootstrap-typeahead.js
  94. 0 185
      ruoyi-admin/src/main/resources/static/ajax/libs/validate/jquery.validate.extend.js
  95. 0 25
      ruoyi-admin/src/main/resources/static/ajax/libs/validate/messages_zh.js
  96. 0 12
      ruoyi-admin/src/main/resources/static/css/animate.min.css
  97. 0 5
      ruoyi-admin/src/main/resources/static/css/bootstrap.min.css
  98. 0 4
      ruoyi-admin/src/main/resources/static/css/font-awesome.min.css
  99. 0 161
      ruoyi-admin/src/main/resources/static/css/login.css
  100. 0 0
      ruoyi-admin/src/main/resources/static/css/skins.css

+ 1 - 1
.github/FUNDING.yml

@@ -1 +1 @@
-custom: http://doc.ruoyi.vip/ruoyi/other/donate.html
+custom: http://doc.sooka.vip/sooka/other/donate.html

+ 19 - 19
LICENSE

@@ -1,20 +1,20 @@
-The MIT License (MIT)
-
-Copyright (c) 2018 RuoYi
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of
-this software and associated documentation files (the "Software"), to deal in
-the Software without restriction, including without limitation the rights to
-use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
-the Software, and to permit persons to whom the Software is furnished to do so,
-subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
-FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
-COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
-IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+The MIT License (MIT)
+
+Copyright (c) 2018 sooka
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
 CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

ファイルの差分が大きいため隠しています
+ 101 - 101
README.md


+ 35 - 27
pom.xml

@@ -3,16 +3,16 @@
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
 
-    <groupId>com.ruoyi</groupId>
-    <artifactId>ruoyi</artifactId>
+    <groupId>com.sooka</groupId>
+    <artifactId>sooka</artifactId>
     <version>4.7.6</version>
 
-    <name>ruoyi</name>
-    <url>http://www.ruoyi.vip</url>
-    <description>若依管理系统</description>
+    <name>sooka</name>
+    <url>http://www.sooka.vip</url>
+    <description>首佳管理系统</description>
     
     <properties>
-        <ruoyi.version>4.7.6</ruoyi.version>
+        <sooka.version>4.7.6</sooka.version>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
         <java.version>1.8</java.version>
@@ -158,49 +158,57 @@
 
             <!-- 定时任务-->
             <dependency>
-                <groupId>com.ruoyi</groupId>
-                <artifactId>ruoyi-quartz</artifactId>
-                <version>${ruoyi.version}</version>
+                <groupId>com.sooka</groupId>
+                <artifactId>sooka-quartz</artifactId>
+                <version>${sooka.version}</version>
             </dependency>
 
             <!-- 代码生成-->
             <dependency>
-                <groupId>com.ruoyi</groupId>
-                <artifactId>ruoyi-generator</artifactId>
-                <version>${ruoyi.version}</version>
+                <groupId>com.sooka</groupId>
+                <artifactId>sooka-generator</artifactId>
+                <version>${sooka.version}</version>
             </dependency>
 
             <!-- 核心模块-->
             <dependency>
-                <groupId>com.ruoyi</groupId>
-                <artifactId>ruoyi-framework</artifactId>
-                <version>${ruoyi.version}</version>
+                <groupId>com.sooka</groupId>
+                <artifactId>sooka-framework</artifactId>
+                <version>${sooka.version}</version>
             </dependency>
 
             <!-- 系统模块-->
             <dependency>
-                <groupId>com.ruoyi</groupId>
-                <artifactId>ruoyi-system</artifactId>
-                <version>${ruoyi.version}</version>
+                <groupId>com.sooka</groupId>
+                <artifactId>sooka-system</artifactId>
+                <version>${sooka.version}</version>
+            </dependency>
+
+            <!-- 业务模块-->
+            <dependency>
+                <groupId>com.sooka</groupId>
+                <artifactId>sooka-business</artifactId>
+                <version>${sooka.version}</version>
             </dependency>
 
             <!-- 通用工具-->
             <dependency>
-                <groupId>com.ruoyi</groupId>
-                <artifactId>ruoyi-common</artifactId>
-                <version>${ruoyi.version}</version>
+                <groupId>com.sooka</groupId>
+                <artifactId>sooka-common</artifactId>
+                <version>${sooka.version}</version>
             </dependency>
 
         </dependencies>
     </dependencyManagement>
 
     <modules>
-        <module>ruoyi-admin</module>
-        <module>ruoyi-framework</module>
-        <module>ruoyi-system</module>
-        <module>ruoyi-quartz</module>
-        <module>ruoyi-generator</module>
-        <module>ruoyi-common</module>
+        <module>sooka-admin</module>
+        <module>sooka-framework</module>
+        <module>sooka-system</module>
+        <module>sooka-business</module>
+        <module>sooka-quartz</module>
+        <module>sooka-generator</module>
+        <module>sooka-common</module>
     </modules>
     <packaging>pom</packaging>
 

+ 0 - 134
ruoyi-admin/pom.xml

@@ -1,134 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <artifactId>ruoyi</artifactId>
-        <groupId>com.ruoyi</groupId>
-        <version>4.7.6</version>
-    </parent>
-    <modelVersion>4.0.0</modelVersion>
-    <packaging>jar</packaging>
-    <artifactId>ruoyi-admin</artifactId>
-
-    <description>
-        web服务入口
-    </description>
-
-    <dependencies>
-
-        <!-- SpringBoot集成thymeleaf模板 -->
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-thymeleaf</artifactId>
-        </dependency>
-
-        <!-- spring-boot-devtools -->
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-devtools</artifactId>
-            <optional>true</optional> <!-- 表示依赖不会传递 -->
-        </dependency>
-
-        <!-- swagger3-->
-        <dependency>
-            <groupId>io.springfox</groupId>
-            <artifactId>springfox-boot-starter</artifactId>
-        </dependency>
-
-        <!-- 防止进入swagger页面报类型转换错误,排除3.0.0中的引用,手动增加1.6.2版本 -->
-        <dependency>
-            <groupId>io.swagger</groupId>
-            <artifactId>swagger-models</artifactId>
-            <version>1.6.2</version>
-        </dependency>
-
-        <!-- Mysql驱动包 -->
-        <dependency>
-            <groupId>mysql</groupId>
-            <artifactId>mysql-connector-java</artifactId>
-        </dependency>
-
-        <!-- 核心模块-->
-        <dependency>
-            <groupId>com.ruoyi</groupId>
-            <artifactId>ruoyi-framework</artifactId>
-        </dependency>
-
-        <!-- 定时任务-->
-        <dependency>
-            <groupId>com.ruoyi</groupId>
-            <artifactId>ruoyi-quartz</artifactId>
-        </dependency>
-
-        <!-- 代码生成-->
-        <dependency>
-            <groupId>com.ruoyi</groupId>
-            <artifactId>ruoyi-generator</artifactId>
-        </dependency>
-
-    </dependencies>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.springframework.boot</groupId>
-                <artifactId>spring-boot-maven-plugin</artifactId>
-                <version>2.1.1.RELEASE</version>
-                <configuration>
-                    <fork>true</fork> <!-- 如果没有该配置,devtools不会生效 -->
-                </configuration>
-                <executions>
-                    <execution>
-                        <goals>
-                            <goal>repackage</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-            <plugin>   
-                <groupId>org.apache.maven.plugins</groupId>   
-                <artifactId>maven-war-plugin</artifactId>   
-                <version>3.0.0</version>   
-                <configuration>
-                    <failOnMissingWebXml>false</failOnMissingWebXml>
-                    <warName>${project.artifactId}</warName>
-                </configuration>   
-            </plugin>   
-            <!-- YUI Compressor (CSS/JS压缩) 
-            <plugin>
-                <groupId>net.alchim31.maven</groupId>
-                <artifactId>yuicompressor-maven-plugin</artifactId>
-                <version>1.5.1</version>
-                <executions>
-                    <execution>
-                        <phase>prepare-package</phase>
-                        <goals>
-                            <goal>compress</goal>
-                        </goals>
-                    </execution>
-                </executions>
-                <configuration>
-                    <encoding>UTF-8</encoding>
-                    <jswarn>false</jswarn>
-                    <nosuffix>true</nosuffix>
-                    <linebreakpos>50000</linebreakpos>
-                    <sourceDirectory>src/main/resources/static</sourceDirectory>
-                    <force>true</force>
-                    <includes>
-                        <include>**/*.js</include>
-                        <include>**/*.css</include>
-                    </includes>
-                    <excludes>
-                        <exclude>**/*.min.js</exclude>
-                        <exclude>**/*.min.css</exclude>
-                        <exclude>**/fileinput.js</exclude>
-                        <exclude>**/bootstrap-table/**</exclude>
-                    </excludes>
-                </configuration>
-            </plugin> -->
-        </plugins>
-        <finalName>${project.artifactId}</finalName>
-    </build>
-
-</project>

+ 0 - 30
ruoyi-admin/src/main/java/com/ruoyi/RuoYiApplication.java

@@ -1,30 +0,0 @@
-package com.ruoyi;
-
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
-
-/**
- * 启动程序
- * 
- * @author ruoyi
- */
-@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })
-public class RuoYiApplication
-{
-    public static void main(String[] args)
-    {
-        // System.setProperty("spring.devtools.restart.enabled", "false");
-        SpringApplication.run(RuoYiApplication.class, args);
-        System.out.println("(♥◠‿◠)ノ゙  若依启动成功   ლ(´ڡ`ლ)゙  \n" +
-                " .-------.       ____     __        \n" +
-                " |  _ _   \\      \\   \\   /  /    \n" +
-                " | ( ' )  |       \\  _. /  '       \n" +
-                " |(_ o _) /        _( )_ .'         \n" +
-                " | (_,_).' __  ___(_ o _)'          \n" +
-                " |  |\\ \\  |  ||   |(_,_)'         \n" +
-                " |  | \\ `'   /|   `-'  /           \n" +
-                " |  |  \\    /  \\      /           \n" +
-                " ''-'   `'-'    `-..-'              ");
-    }
-}

+ 0 - 18
ruoyi-admin/src/main/java/com/ruoyi/RuoYiServletInitializer.java

@@ -1,18 +0,0 @@
-package com.ruoyi;
-
-import org.springframework.boot.builder.SpringApplicationBuilder;
-import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
-
-/**
- * web容器中进行部署
- * 
- * @author ruoyi
- */
-public class RuoYiServletInitializer extends SpringBootServletInitializer
-{
-    @Override
-    protected SpringApplicationBuilder configure(SpringApplicationBuilder application)
-    {
-        return application.sources(RuoYiApplication.class);
-    }
-}

+ 0 - 166
ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java

@@ -1,166 +0,0 @@
-package com.ruoyi.web.controller.common;
-
-import java.util.ArrayList;
-import java.util.List;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.MediaType;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.ResponseBody;
-import org.springframework.web.multipart.MultipartFile;
-import com.ruoyi.common.config.RuoYiConfig;
-import com.ruoyi.common.config.ServerConfig;
-import com.ruoyi.common.constant.Constants;
-import com.ruoyi.common.core.domain.AjaxResult;
-import com.ruoyi.common.utils.StringUtils;
-import com.ruoyi.common.utils.file.FileUploadUtils;
-import com.ruoyi.common.utils.file.FileUtils;
-
-/**
- * 通用请求处理
- * 
- * @author ruoyi
- */
-@Controller
-@RequestMapping("/common")
-public class CommonController
-{
-    private static final Logger log = LoggerFactory.getLogger(CommonController.class);
-
-    @Autowired
-    private ServerConfig serverConfig;
-
-    private static final String FILE_DELIMETER = ",";
-
-    /**
-     * 通用下载请求
-     * 
-     * @param fileName 文件名称
-     * @param delete 是否删除
-     */
-    @GetMapping("/download")
-    public void fileDownload(String fileName, Boolean delete, HttpServletResponse response, HttpServletRequest request)
-    {
-        try
-        {
-            if (!FileUtils.checkAllowDownload(fileName))
-            {
-                throw new Exception(StringUtils.format("文件名称({})非法,不允许下载。 ", fileName));
-            }
-            String realFileName = System.currentTimeMillis() + fileName.substring(fileName.indexOf("_") + 1);
-            String filePath = RuoYiConfig.getDownloadPath() + fileName;
-
-            response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
-            FileUtils.setAttachmentResponseHeader(response, realFileName);
-            FileUtils.writeBytes(filePath, response.getOutputStream());
-            if (delete)
-            {
-                FileUtils.deleteFile(filePath);
-            }
-        }
-        catch (Exception e)
-        {
-            log.error("下载文件失败", e);
-        }
-    }
-
-    /**
-     * 通用上传请求(单个)
-     */
-    @PostMapping("/upload")
-    @ResponseBody
-    public AjaxResult uploadFile(MultipartFile file) throws Exception
-    {
-        try
-        {
-            // 上传文件路径
-            String filePath = RuoYiConfig.getUploadPath();
-            // 上传并返回新文件名称
-            String fileName = FileUploadUtils.upload(filePath, file);
-            String url = serverConfig.getUrl() + fileName;
-            AjaxResult ajax = AjaxResult.success();
-            ajax.put("url", url);
-            ajax.put("fileName", fileName);
-            ajax.put("newFileName", FileUtils.getName(fileName));
-            ajax.put("originalFilename", file.getOriginalFilename());
-            return ajax;
-        }
-        catch (Exception e)
-        {
-            return AjaxResult.error(e.getMessage());
-        }
-    }
-
-    /**
-     * 通用上传请求(多个)
-     */
-    @PostMapping("/uploads")
-    @ResponseBody
-    public AjaxResult uploadFiles(List<MultipartFile> files) throws Exception
-    {
-        try
-        {
-            // 上传文件路径
-            String filePath = RuoYiConfig.getUploadPath();
-            List<String> urls = new ArrayList<String>();
-            List<String> fileNames = new ArrayList<String>();
-            List<String> newFileNames = new ArrayList<String>();
-            List<String> originalFilenames = new ArrayList<String>();
-            for (MultipartFile file : files)
-            {
-                // 上传并返回新文件名称
-                String fileName = FileUploadUtils.upload(filePath, file);
-                String url = serverConfig.getUrl() + fileName;
-                urls.add(url);
-                fileNames.add(fileName);
-                newFileNames.add(FileUtils.getName(fileName));
-                originalFilenames.add(file.getOriginalFilename());
-            }
-            AjaxResult ajax = AjaxResult.success();
-            ajax.put("urls", StringUtils.join(urls, FILE_DELIMETER));
-            ajax.put("fileNames", StringUtils.join(fileNames, FILE_DELIMETER));
-            ajax.put("newFileNames", StringUtils.join(newFileNames, FILE_DELIMETER));
-            ajax.put("originalFilenames", StringUtils.join(originalFilenames, FILE_DELIMETER));
-            return ajax;
-        }
-        catch (Exception e)
-        {
-            return AjaxResult.error(e.getMessage());
-        }
-    }
-
-    /**
-     * 本地资源通用下载
-     */
-    @GetMapping("/download/resource")
-    public void resourceDownload(String resource, HttpServletRequest request, HttpServletResponse response)
-            throws Exception
-    {
-        try
-        {
-            if (!FileUtils.checkAllowDownload(resource))
-            {
-                throw new Exception(StringUtils.format("资源文件({})非法,不允许下载。 ", resource));
-            }
-            // 本地资源路径
-            String localPath = RuoYiConfig.getProfile();
-            // 数据库资源地址
-            String downloadPath = localPath + StringUtils.substringAfter(resource, Constants.RESOURCE_PREFIX);
-            // 下载名称
-            String downloadName = StringUtils.substringAfterLast(downloadPath, "/");
-            response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
-            FileUtils.setAttachmentResponseHeader(response, downloadName);
-            FileUtils.writeBytes(downloadPath, response.getOutputStream());
-        }
-        catch (Exception e)
-        {
-            log.error("下载文件失败", e);
-        }
-    }
-}

+ 0 - 98
ruoyi-admin/src/main/java/com/ruoyi/web/controller/demo/controller/DemoDialogController.java

@@ -1,98 +0,0 @@
-package com.ruoyi.web.controller.demo.controller;
-
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-
-/**
- * 模态窗口
- * 
- * @author ruoyi
- */
-@Controller
-@RequestMapping("/demo/modal")
-public class DemoDialogController
-{
-    private String prefix = "demo/modal";
-
-    /**
-     * 模态窗口
-     */
-    @GetMapping("/dialog")
-    public String dialog()
-    {
-        return prefix + "/dialog";
-    }
-
-    /**
-     * 弹层组件
-     */
-    @GetMapping("/layer")
-    public String layer()
-    {
-        return prefix + "/layer";
-    }
-
-    /**
-     * 表单
-     */
-    @GetMapping("/form")
-    public String form()
-    {
-        return prefix + "/form";
-    }
-
-    /**
-     * 表格
-     */
-    @GetMapping("/table")
-    public String table()
-    {
-        return prefix + "/table";
-    }
-
-    /**
-     * 表格check
-     */
-    @GetMapping("/check")
-    public String check()
-    {
-        return prefix + "/table/check";
-    }
-
-    /**
-     * 表格radio
-     */
-    @GetMapping("/radio")
-    public String radio()
-    {
-        return prefix + "/table/radio";
-    }
-
-    /**
-     * 表格回传父窗体
-     */
-    @GetMapping("/parent")
-    public String parent()
-    {
-        return prefix + "/table/parent";
-    }
-
-    /**
-     * 多层窗口frame1
-     */
-    @GetMapping("/frame1")
-    public String frame1()
-    {
-        return prefix + "/table/frame1";
-    }
-
-    /**
-     * 多层窗口frame2
-     */
-    @GetMapping("/frame2")
-    public String frame2()
-    {
-        return prefix + "/table/frame2";
-    }
-}

ファイルの差分が大きいため隠しています
+ 0 - 399
ruoyi-admin/src/main/java/com/ruoyi/web/controller/demo/controller/DemoFormController.java


+ 0 - 35
ruoyi-admin/src/main/java/com/ruoyi/web/controller/demo/controller/DemoIconController.java

@@ -1,35 +0,0 @@
-package com.ruoyi.web.controller.demo.controller;
-
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-
-/**
- * 图标相关
- * 
- * @author ruoyi
- */
-@Controller
-@RequestMapping("/demo/icon")
-public class DemoIconController
-{
-    private String prefix = "demo/icon";
-
-    /**
-     * FontAwesome图标
-     */
-    @GetMapping("/fontawesome")
-    public String fontAwesome()
-    {
-        return prefix + "/fontawesome";
-    }
-
-    /**
-     * Glyphicons图标
-     */
-    @GetMapping("/glyphicons")
-    public String glyphicons()
-    {
-        return prefix + "/glyphicons";
-    }
-}

+ 0 - 326
ruoyi-admin/src/main/java/com/ruoyi/web/controller/demo/controller/DemoOperateController.java

@@ -1,326 +0,0 @@
-package com.ruoyi.web.controller.demo.controller;
-
-import java.util.ArrayList;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-import org.springframework.stereotype.Controller;
-import org.springframework.ui.ModelMap;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.ResponseBody;
-import org.springframework.web.multipart.MultipartFile;
-import com.ruoyi.common.core.controller.BaseController;
-import com.ruoyi.common.core.domain.AjaxResult;
-import com.ruoyi.common.core.page.PageDomain;
-import com.ruoyi.common.core.page.TableDataInfo;
-import com.ruoyi.common.core.page.TableSupport;
-import com.ruoyi.common.core.text.Convert;
-import com.ruoyi.common.exception.ServiceException;
-import com.ruoyi.common.utils.StringUtils;
-import com.ruoyi.common.utils.poi.ExcelUtil;
-import com.ruoyi.web.controller.demo.domain.CustomerModel;
-import com.ruoyi.web.controller.demo.domain.UserOperateModel;
-
-/**
- * 操作控制
- * 
- * @author ruoyi
- */
-@Controller
-@RequestMapping("/demo/operate")
-public class DemoOperateController extends BaseController
-{
-    private String prefix = "demo/operate";
-
-    private final static Map<Integer, UserOperateModel> users = new LinkedHashMap<Integer, UserOperateModel>();
-    {
-        users.put(1, new UserOperateModel(1, "1000001", "测试1", "0", "15888888888", "ry@qq.com", 150.0, "0"));
-        users.put(2, new UserOperateModel(2, "1000002", "测试2", "1", "15666666666", "ry@qq.com", 180.0, "1"));
-        users.put(3, new UserOperateModel(3, "1000003", "测试3", "0", "15666666666", "ry@qq.com", 110.0, "1"));
-        users.put(4, new UserOperateModel(4, "1000004", "测试4", "1", "15666666666", "ry@qq.com", 220.0, "1"));
-        users.put(5, new UserOperateModel(5, "1000005", "测试5", "0", "15666666666", "ry@qq.com", 140.0, "1"));
-        users.put(6, new UserOperateModel(6, "1000006", "测试6", "1", "15666666666", "ry@qq.com", 330.0, "1"));
-        users.put(7, new UserOperateModel(7, "1000007", "测试7", "0", "15666666666", "ry@qq.com", 160.0, "1"));
-        users.put(8, new UserOperateModel(8, "1000008", "测试8", "1", "15666666666", "ry@qq.com", 170.0, "1"));
-        users.put(9, new UserOperateModel(9, "1000009", "测试9", "0", "15666666666", "ry@qq.com", 180.0, "1"));
-        users.put(10, new UserOperateModel(10, "1000010", "测试10", "0", "15666666666", "ry@qq.com", 210.0, "1"));
-        users.put(11, new UserOperateModel(11, "1000011", "测试11", "1", "15666666666", "ry@qq.com", 110.0, "1"));
-        users.put(12, new UserOperateModel(12, "1000012", "测试12", "0", "15666666666", "ry@qq.com", 120.0, "1"));
-        users.put(13, new UserOperateModel(13, "1000013", "测试13", "1", "15666666666", "ry@qq.com", 380.0, "1"));
-        users.put(14, new UserOperateModel(14, "1000014", "测试14", "0", "15666666666", "ry@qq.com", 280.0, "1"));
-        users.put(15, new UserOperateModel(15, "1000015", "测试15", "0", "15666666666", "ry@qq.com", 570.0, "1"));
-        users.put(16, new UserOperateModel(16, "1000016", "测试16", "1", "15666666666", "ry@qq.com", 260.0, "1"));
-        users.put(17, new UserOperateModel(17, "1000017", "测试17", "1", "15666666666", "ry@qq.com", 210.0, "1"));
-        users.put(18, new UserOperateModel(18, "1000018", "测试18", "1", "15666666666", "ry@qq.com", 340.0, "1"));
-        users.put(19, new UserOperateModel(19, "1000019", "测试19", "1", "15666666666", "ry@qq.com", 160.0, "1"));
-        users.put(20, new UserOperateModel(20, "1000020", "测试20", "1", "15666666666", "ry@qq.com", 220.0, "1"));
-        users.put(21, new UserOperateModel(21, "1000021", "测试21", "1", "15666666666", "ry@qq.com", 120.0, "1"));
-        users.put(22, new UserOperateModel(22, "1000022", "测试22", "1", "15666666666", "ry@qq.com", 130.0, "1"));
-        users.put(23, new UserOperateModel(23, "1000023", "测试23", "1", "15666666666", "ry@qq.com", 490.0, "1"));
-        users.put(24, new UserOperateModel(24, "1000024", "测试24", "1", "15666666666", "ry@qq.com", 570.0, "1"));
-        users.put(25, new UserOperateModel(25, "1000025", "测试25", "1", "15666666666", "ry@qq.com", 250.0, "1"));
-        users.put(26, new UserOperateModel(26, "1000026", "测试26", "1", "15666666666", "ry@qq.com", 250.0, "1"));
-    }
-
-    /**
-     * 表格
-     */
-    @GetMapping("/table")
-    public String table()
-    {
-        return prefix + "/table";
-    }
-
-    /**
-     * 其他
-     */
-    @GetMapping("/other")
-    public String other()
-    {
-        return prefix + "/other";
-    }
-
-    /**
-     * 查询数据
-     */
-    @PostMapping("/list")
-    @ResponseBody
-    public TableDataInfo list(UserOperateModel userModel)
-    {
-        TableDataInfo rspData = new TableDataInfo();
-        List<UserOperateModel> userList = new ArrayList<UserOperateModel>(users.values());
-        // 查询条件过滤
-        if (StringUtils.isNotEmpty(userModel.getSearchValue()))
-        {
-            userList.clear();
-            for (Map.Entry<Integer, UserOperateModel> entry : users.entrySet())
-            {
-                if (entry.getValue().getUserName().equals(userModel.getSearchValue()))
-                {
-                    userList.add(entry.getValue());
-                }
-            }
-        }
-        else if (StringUtils.isNotEmpty(userModel.getUserName()))
-        {
-            userList.clear();
-            for (Map.Entry<Integer, UserOperateModel> entry : users.entrySet())
-            {
-                if (entry.getValue().getUserName().equals(userModel.getUserName()))
-                {
-                    userList.add(entry.getValue());
-                }
-            }
-        }
-        PageDomain pageDomain = TableSupport.buildPageRequest();
-        if (null == pageDomain.getPageNum() || null == pageDomain.getPageSize())
-        {
-            rspData.setRows(userList);
-            rspData.setTotal(userList.size());
-            return rspData;
-        }
-        Integer pageNum = (pageDomain.getPageNum() - 1) * 10;
-        Integer pageSize = pageDomain.getPageNum() * 10;
-        if (pageSize > userList.size())
-        {
-            pageSize = userList.size();
-        }
-        rspData.setRows(userList.subList(pageNum, pageSize));
-        rspData.setTotal(userList.size());
-        return rspData;
-    }
-
-    /**
-     * 新增用户
-     */
-    @GetMapping("/add")
-    public String add(ModelMap mmap)
-    {
-        return prefix + "/add";
-    }
-
-    /**
-     * 新增保存用户
-     */
-    @PostMapping("/add")
-    @ResponseBody
-    public AjaxResult addSave(UserOperateModel user)
-    {
-        Integer userId = users.size() + 1;
-        user.setUserId(userId);
-        return AjaxResult.success(users.put(userId, user));
-    }
-
-    /**
-     * 新增保存主子表信息
-     */
-    @PostMapping("/customer/add")
-    @ResponseBody
-    public AjaxResult addSave(CustomerModel customerModel)
-    {
-        System.out.println(customerModel.toString());
-        return AjaxResult.success();
-    }
-
-    /**
-     * 修改用户
-     */
-    @GetMapping("/edit/{userId}")
-    public String edit(@PathVariable("userId") Integer userId, ModelMap mmap)
-    {
-        mmap.put("user", users.get(userId));
-        return prefix + "/edit";
-    }
-
-    /**
-     * 修改保存用户
-     */
-    @PostMapping("/edit")
-    @ResponseBody
-    public AjaxResult editSave(UserOperateModel user)
-    {
-        return AjaxResult.success(users.put(user.getUserId(), user));
-    }
-
-    /**
-     * 导出
-     */
-    @PostMapping("/export")
-    @ResponseBody
-    public AjaxResult export(UserOperateModel user)
-    {
-        List<UserOperateModel> list = new ArrayList<UserOperateModel>(users.values());
-        ExcelUtil<UserOperateModel> util = new ExcelUtil<UserOperateModel>(UserOperateModel.class);
-        return util.exportExcel(list, "用户数据");
-    }
-
-    /**
-     * 下载模板
-     */
-    @GetMapping("/importTemplate")
-    @ResponseBody
-    public AjaxResult importTemplate()
-    {
-        ExcelUtil<UserOperateModel> util = new ExcelUtil<UserOperateModel>(UserOperateModel.class);
-        return util.importTemplateExcel("用户数据");
-    }
-
-    /**
-     * 导入数据
-     */
-    @PostMapping("/importData")
-    @ResponseBody
-    public AjaxResult importData(MultipartFile file, boolean updateSupport) throws Exception
-    {
-        ExcelUtil<UserOperateModel> util = new ExcelUtil<UserOperateModel>(UserOperateModel.class);
-        List<UserOperateModel> userList = util.importExcel(file.getInputStream());
-        String message = importUser(userList, updateSupport);
-        return AjaxResult.success(message);
-    }
-
-    /**
-     * 删除用户
-     */
-    @PostMapping("/remove")
-    @ResponseBody
-    public AjaxResult remove(String ids)
-    {
-        Integer[] userIds = Convert.toIntArray(ids);
-        for (Integer userId : userIds)
-        {
-            users.remove(userId);
-        }
-        return AjaxResult.success();
-    }
-
-    /**
-     * 查看详细
-     */
-    @GetMapping("/detail/{userId}")
-    public String detail(@PathVariable("userId") Integer userId, ModelMap mmap)
-    {
-        mmap.put("user", users.get(userId));
-        return prefix + "/detail";
-    }
-
-    @PostMapping("/clean")
-    @ResponseBody
-    public AjaxResult clean()
-    {
-        users.clear();
-        return success();
-    }
-
-    /**
-     * 导入用户数据
-     * 
-     * @param userList 用户数据列表
-     * @param isUpdateSupport 是否更新支持,如果已存在,则进行更新数据
-     * @return 结果
-     */
-    public String importUser(List<UserOperateModel> userList, Boolean isUpdateSupport)
-    {
-        if (StringUtils.isNull(userList) || userList.size() == 0)
-        {
-            throw new ServiceException("导入用户数据不能为空!");
-        }
-        int successNum = 0;
-        int failureNum = 0;
-        StringBuilder successMsg = new StringBuilder();
-        StringBuilder failureMsg = new StringBuilder();
-        for (UserOperateModel user : userList)
-        {
-            try
-            {
-                // 验证是否存在这个用户
-                boolean userFlag = false;
-                for (Map.Entry<Integer, UserOperateModel> entry : users.entrySet())
-                {
-                    if (entry.getValue().getUserName().equals(user.getUserName()))
-                    {
-                        userFlag = true;
-                        break;
-                    }
-                }
-                if (!userFlag)
-                {
-                    Integer userId = users.size() + 1;
-                    user.setUserId(userId);
-                    users.put(userId, user);
-                    successNum++;
-                    successMsg.append("<br/>" + successNum + "、用户 " + user.getUserName() + " 导入成功");
-                }
-                else if (isUpdateSupport)
-                {
-                    users.put(user.getUserId(), user);
-                    successNum++;
-                    successMsg.append("<br/>" + successNum + "、用户 " + user.getUserName() + " 更新成功");
-                }
-                else
-                {
-                    failureNum++;
-                    failureMsg.append("<br/>" + failureNum + "、用户 " + user.getUserName() + " 已存在");
-                }
-            }
-            catch (Exception e)
-            {
-                failureNum++;
-                String msg = "<br/>" + failureNum + "、账号 " + user.getUserName() + " 导入失败:";
-                failureMsg.append(msg + e.getMessage());
-            }
-        }
-        if (failureNum > 0)
-        {
-            failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确,错误如下:");
-            throw new ServiceException(failureMsg.toString());
-        }
-        else
-        {
-            successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条,数据如下:");
-        }
-        return successMsg.toString();
-    }
-}

+ 0 - 53
ruoyi-admin/src/main/java/com/ruoyi/web/controller/demo/controller/DemoReportController.java

@@ -1,53 +0,0 @@
-package com.ruoyi.web.controller.demo.controller;
-
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-
-/**
- * 报表
- * 
- * @author ruoyi
- */
-@Controller
-@RequestMapping("/demo/report")
-public class DemoReportController
-{
-    private String prefix = "demo/report";
-
-    /**
-     * 百度ECharts
-     */
-    @GetMapping("/echarts")
-    public String echarts()
-    {
-        return prefix + "/echarts";
-    }
-
-    /**
-     * 图表插件
-     */
-    @GetMapping("/peity")
-    public String peity()
-    {
-        return prefix + "/peity";
-    }
-
-    /**
-     * 线状图插件
-     */
-    @GetMapping("/sparkline")
-    public String sparkline()
-    {
-        return prefix + "/sparkline";
-    }
-
-    /**
-     * 图表组合
-     */
-    @GetMapping("/metrics")
-    public String metrics()
-    {
-        return prefix + "/metrics";
-    }
-}

+ 0 - 846
ruoyi-admin/src/main/java/com/ruoyi/web/controller/demo/controller/DemoTableController.java

@@ -1,846 +0,0 @@
-package com.ruoyi.web.controller.demo.controller;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.Date;
-import java.util.List;
-import org.springframework.stereotype.Controller;
-import org.springframework.ui.ModelMap;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.ResponseBody;
-import com.fasterxml.jackson.annotation.JsonFormat;
-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.page.PageDomain;
-import com.ruoyi.common.core.page.TableDataInfo;
-import com.ruoyi.common.core.page.TableSupport;
-import com.ruoyi.common.core.text.Convert;
-import com.ruoyi.common.utils.DateUtils;
-import com.ruoyi.common.utils.StringUtils;
-import com.ruoyi.common.utils.poi.ExcelUtil;
-
-/**
- * 表格相关
- * 
- * @author ruoyi
- */
-@Controller
-@RequestMapping("/demo/table")
-public class DemoTableController extends BaseController
-{
-    private String prefix = "demo/table";
-
-    private final static List<UserTableModel> users = new ArrayList<UserTableModel>();
-    {
-        users.add(new UserTableModel(1, "1000001", "测试1", "0", "15888888888", "ry@qq.com", 150.0, "0"));
-        users.add(new UserTableModel(2, "1000002", "测试2", "1", "15666666666", "ry@qq.com", 180.0, "1"));
-        users.add(new UserTableModel(3, "1000003", "测试3", "0", "15666666666", "ry@qq.com", 110.0, "1"));
-        users.add(new UserTableModel(4, "1000004", "测试4", "1", "15666666666", "ry@qq.com", 220.0, "1"));
-        users.add(new UserTableModel(5, "1000005", "测试5", "0", "15666666666", "ry@qq.com", 140.0, "1"));
-        users.add(new UserTableModel(6, "1000006", "测试6", "1", "15666666666", "ry@qq.com", 330.0, "1"));
-        users.add(new UserTableModel(7, "1000007", "测试7", "0", "15666666666", "ry@qq.com", 160.0, "1"));
-        users.add(new UserTableModel(8, "1000008", "测试8", "1", "15666666666", "ry@qq.com", 170.0, "1"));
-        users.add(new UserTableModel(9, "1000009", "测试9", "0", "15666666666", "ry@qq.com", 180.0, "1"));
-        users.add(new UserTableModel(10, "1000010", "测试10", "0", "15666666666", "ry@qq.com", 210.0, "1"));
-        users.add(new UserTableModel(11, "1000011", "测试11", "1", "15666666666", "ry@qq.com", 110.0, "1"));
-        users.add(new UserTableModel(12, "1000012", "测试12", "0", "15666666666", "ry@qq.com", 120.0, "1"));
-        users.add(new UserTableModel(13, "1000013", "测试13", "1", "15666666666", "ry@qq.com", 380.0, "1"));
-        users.add(new UserTableModel(14, "1000014", "测试14", "0", "15666666666", "ry@qq.com", 280.0, "1"));
-        users.add(new UserTableModel(15, "1000015", "测试15", "0", "15666666666", "ry@qq.com", 570.0, "1"));
-        users.add(new UserTableModel(16, "1000016", "测试16", "1", "15666666666", "ry@qq.com", 260.0, "1"));
-        users.add(new UserTableModel(17, "1000017", "测试17", "1", "15666666666", "ry@qq.com", 210.0, "1"));
-        users.add(new UserTableModel(18, "1000018", "测试18", "1", "15666666666", "ry@qq.com", 340.0, "1"));
-        users.add(new UserTableModel(19, "1000019", "测试19", "1", "15666666666", "ry@qq.com", 160.0, "1"));
-        users.add(new UserTableModel(20, "1000020", "测试20", "1", "15666666666", "ry@qq.com", 220.0, "1"));
-        users.add(new UserTableModel(21, "1000021", "测试21", "1", "15666666666", "ry@qq.com", 120.0, "1"));
-        users.add(new UserTableModel(22, "1000022", "测试22", "1", "15666666666", "ry@qq.com", 130.0, "1"));
-        users.add(new UserTableModel(23, "1000023", "测试23", "1", "15666666666", "ry@qq.com", 490.0, "1"));
-        users.add(new UserTableModel(24, "1000024", "测试24", "1", "15666666666", "ry@qq.com", 570.0, "1"));
-        users.add(new UserTableModel(25, "1000025", "测试25", "1", "15666666666", "ry@qq.com", 250.0, "1"));
-        users.add(new UserTableModel(26, "1000026", "测试26", "1", "15666666666", "ry@qq.com", 250.0, "1"));
-    }
-
-    private final static List<AreaModel> areas = new ArrayList<AreaModel>();
-    {
-        areas.add(new AreaModel(1, 0, "广东省", "440000", "GDS", "GuangDongSheng", 1));
-        areas.add(new AreaModel(2, 0, "湖南省", "430000", "HNS", "HuNanSheng", 1));
-        areas.add(new AreaModel(3, 0, "河南省", "410000", "HNS", "HeNanSheng", 0));
-        areas.add(new AreaModel(4, 0, "湖北省", "420000", "HBS", "HuBeiSheng", 0));
-        areas.add(new AreaModel(5, 0, "辽宁省", "210000", "LNS", "LiaoNingSheng", 0));
-        areas.add(new AreaModel(6, 0, "山东省", "370000", "SDS", "ShanDongSheng", 0));
-        areas.add(new AreaModel(7, 0, "陕西省", "610000", "SXS", "ShanXiSheng", 0));
-        areas.add(new AreaModel(8, 0, "贵州省", "520000", "GZS", "GuiZhouSheng", 0));
-        areas.add(new AreaModel(9,  0, "上海市", "310000", "SHS", "ShangHaiShi", 0));
-        areas.add(new AreaModel(10, 0, "重庆市", "500000", "CQS", "ChongQingShi", 0));
-        areas.add(new AreaModel(11, 0, "若依省", "666666", "YYS", "RuoYiSheng", 0));
-        areas.add(new AreaModel(12, 0, "安徽省", "340000", "AHS", "AnHuiSheng", 0));
-        areas.add(new AreaModel(13, 0, "福建省", "350000", "FJS", "FuJianSheng", 0));
-        areas.add(new AreaModel(14, 0, "海南省", "460000", "HNS", "HaiNanSheng", 0));
-        areas.add(new AreaModel(15, 0, "江苏省", "320000", "JSS", "JiangSuSheng", 0));
-        areas.add(new AreaModel(16, 0, "青海省", "630000", "QHS", "QingHaiSheng", 0));
-        areas.add(new AreaModel(17, 0, "广西壮族自治区", "450000", "GXZZZZQ", "GuangXiZhuangZuZiZhiQu", 0));
-        areas.add(new AreaModel(18, 0, "宁夏回族自治区", "640000", "NXHZZZQ", "NingXiaHuiZuZiZhiQu", 0));
-        areas.add(new AreaModel(19, 0, "内蒙古自治区", "150000", "NMGZZQ", "NeiMengGuZiZhiQu", 0));
-        areas.add(new AreaModel(20, 0, "新疆维吾尔自治区", "650000", "XJWWEZZQ", "XinJiangWeiWuErZiZhiQu", 0));
-        areas.add(new AreaModel(21, 0, "江西省", "360000", "JXS", "JiangXiSheng", 0));
-        areas.add(new AreaModel(22, 0, "浙江省", "330000", "ZJS", "ZheJiangSheng", 0));
-        areas.add(new AreaModel(23, 0, "河北省", "130000", "HBS", "HeBeiSheng", 0));
-        areas.add(new AreaModel(24, 0, "天津市", "120000", "TJS", "TianJinShi", 0));
-        areas.add(new AreaModel(25, 0, "山西省", "140000", "SXS", "ShanXiSheng", 0));
-        areas.add(new AreaModel(26, 0, "台湾省", "710000", "TWS", "TaiWanSheng", 0));
-        areas.add(new AreaModel(27, 0, "甘肃省", "620000", "GSS", "GanSuSheng", 0));
-        areas.add(new AreaModel(28, 0, "四川省", "510000", "SCS", "SiChuanSheng", 0));
-        areas.add(new AreaModel(29, 0, "云南省", "530000", "YNS", "YunNanSheng", 0));
-        areas.add(new AreaModel(30, 0, "北京市", "110000", "BJS", "BeiJingShi", 0));
-        areas.add(new AreaModel(31, 0, "香港特别行政区", "810000", "XGTBXZQ", "XiangGangTeBieXingZhengQu", 0));
-        areas.add(new AreaModel(32, 0, "澳门特别行政区", "820000", "AMTBXZQ", "AoMenTeBieXingZhengQu", 0));
-        
-        areas.add(new AreaModel(100, 1, "深圳市", "440300", "SZS", "ShenZhenShi", 1));
-        areas.add(new AreaModel(101, 1, "广州市", "440100", "GZS", "GuangZhouShi", 0));
-        areas.add(new AreaModel(102, 1, "东莞市", "441900", "DGS", "DongGuanShi", 0));
-        areas.add(new AreaModel(103, 2, "长沙市", "410005", "CSS", "ChangShaShi", 1));
-        areas.add(new AreaModel(104, 2, "岳阳市", "414000", "YYS", "YueYangShi", 0));
-        
-        areas.add(new AreaModel(1000, 100, "龙岗区", "518172", "LGQ", "LongGangQu", 0));
-        areas.add(new AreaModel(1001, 100, "南山区", "518051", "NSQ", "NanShanQu", 0));
-        areas.add(new AreaModel(1002, 100, "宝安区", "518101", "BAQ", "BaoAnQu", 0));
-        areas.add(new AreaModel(1003, 100, "福田区", "518081", "FTQ", "FuTianQu", 0));
-        areas.add(new AreaModel(1004, 103, "天心区", "410004", "TXQ", "TianXinQu", 0));
-        areas.add(new AreaModel(1005, 103, "开福区", "410008", "KFQ", "KaiFuQu", 0));
-        areas.add(new AreaModel(1006, 103, "芙蓉区", "410011", "FRQ", "FuRongQu", 0));
-        areas.add(new AreaModel(1007, 103, "雨花区", "410011", "YHQ", "YuHuaQu", 0));
-    }
-
-    private final static List<UserTableColumn> columns = new ArrayList<UserTableColumn>();
-    {
-        columns.add(new UserTableColumn("用户ID", "userId"));
-        columns.add(new UserTableColumn("用户编号", "userCode"));
-        columns.add(new UserTableColumn("用户姓名", "userName"));
-        columns.add(new UserTableColumn("用户手机", "userPhone"));
-        columns.add(new UserTableColumn("用户邮箱", "userEmail"));
-        columns.add(new UserTableColumn("用户状态", "status"));
-    }
-
-    /**
-     * 搜索相关
-     */
-    @GetMapping("/search")
-    public String search()
-    {
-        return prefix + "/search";
-    }
-
-    /**
-     * 数据汇总
-     */
-    @GetMapping("/footer")
-    public String footer()
-    {
-        return prefix + "/footer";
-    }
-
-    /**
-     * 组合表头
-     */
-    @GetMapping("/groupHeader")
-    public String groupHeader()
-    {
-        return prefix + "/groupHeader";
-    }
-
-    /**
-     * 表格导出
-     */
-    @GetMapping("/export")
-    public String export()
-    {
-        return prefix + "/export";
-    }
-
-    /**
-     * 表格导出选择列
-     */
-    @GetMapping("/exportSelected")
-    public String exportSelected()
-    {
-        return prefix + "/exportSelected";
-    }
-
-    /**
-     * 导出数据
-     */
-    @PostMapping("/exportData")
-    @ResponseBody
-    public AjaxResult exportSelected(UserTableModel userModel, String userIds)
-    {
-        List<UserTableModel> userList = new ArrayList<UserTableModel>(Arrays.asList(new UserTableModel[users.size()]));
-        Collections.copy(userList, users);
-
-        // 条件过滤
-        if (StringUtils.isNotEmpty(userIds))
-        {
-            userList.clear();
-            for (Long userId : Convert.toLongArray(userIds))
-            {
-                for (UserTableModel user : users)
-                {
-                    if (user.getUserId() == userId)
-                    {
-                        userList.add(user);
-                    }
-                }
-            }
-        }
-        ExcelUtil<UserTableModel> util = new ExcelUtil<UserTableModel>(UserTableModel.class);
-        return util.exportExcel(userList, "用户数据");
-    }
-
-    /**
-     * 翻页记住选择
-     */
-    @GetMapping("/remember")
-    public String remember()
-    {
-        return prefix + "/remember";
-    }
-
-    /**
-     * 跳转至指定页
-     */
-    @GetMapping("/pageGo")
-    public String pageGo()
-    {
-        return prefix + "/pageGo";
-    }
-
-    /**
-     * 自定义查询参数
-     */
-    @GetMapping("/params")
-    public String params()
-    {
-        return prefix + "/params";
-    }
-
-    /**
-     * 多表格
-     */
-    @GetMapping("/multi")
-    public String multi()
-    {
-        return prefix + "/multi";
-    }
-
-    /**
-     * 点击按钮加载表格
-     */
-    @GetMapping("/button")
-    public String button()
-    {
-        return prefix + "/button";
-    }
-
-    /**
-     * 直接加载表格数据
-     */
-    @GetMapping("/data")
-    public String data(ModelMap mmap)
-    {
-        mmap.put("users", users);
-        return prefix + "/data";
-    }
-
-    /**
-     * 表格冻结列
-     */
-    @GetMapping("/fixedColumns")
-    public String fixedColumns()
-    {
-        return prefix + "/fixedColumns";
-    }
-
-    /**
-     * 自定义触发事件
-     */
-    @GetMapping("/event")
-    public String event()
-    {
-        return prefix + "/event";
-    }
-
-    /**
-     * 表格细节视图
-     */
-    @GetMapping("/detail")
-    public String detail()
-    {
-        return prefix + "/detail";
-    }
-
-    /**
-     * 表格父子视图
-     */
-    @GetMapping("/child")
-    public String child()
-    {
-        return prefix + "/child";
-    }
-
-    /**
-     * 表格图片预览
-     */
-    @GetMapping("/image")
-    public String image()
-    {
-        return prefix + "/image";
-    }
-
-    /**
-     * 动态增删改查
-     */
-    @GetMapping("/curd")
-    public String curd()
-    {
-        return prefix + "/curd";
-    }
-
-    /**
-     * 表格行拖拽操作
-     */
-    @GetMapping("/reorderRows")
-    public String reorderRows()
-    {
-        return prefix + "/reorderRows";
-    }
-
-    /**
-     * 表格列拖拽操作
-     */
-    @GetMapping("/reorderColumns")
-    public String reorderColumns()
-    {
-        return prefix + "/reorderColumns";
-    }
-
-    /**
-     * 表格列宽拖动
-     */
-    @GetMapping("/resizable")
-    public String resizable()
-    {
-        return prefix + "/resizable";
-    }
-
-    /**
-     * 表格行内编辑操作
-     */
-    @GetMapping("/editable")
-    public String editable()
-    {
-        return prefix + "/editable";
-    }
-
-    /**
-     * 主子表提交
-     */
-    @GetMapping("/subdata")
-    public String subdata()
-    {
-        return prefix + "/subdata";
-    }
-
-    /**
-     * 表格自动刷新
-     */
-    @GetMapping("/refresh")
-    public String refresh()
-    {
-        return prefix + "/refresh";
-    }
-
-    /**
-     * 表格打印配置
-     */
-    @GetMapping("/print")
-    public String print()
-    {
-        return prefix + "/print";
-    }
-
-    /**
-     * 表格标题格式化
-     */
-    @GetMapping("/headerStyle")
-    public String headerStyle()
-    {
-        return prefix + "/headerStyle";
-    }
-
-    /**
-     * 表格动态列
-     */
-    @GetMapping("/dynamicColumns")
-    public String dynamicColumns()
-    {
-        return prefix + "/dynamicColumns";
-    }
-
-    /**
-     * 自定义视图分页
-     */
-    @GetMapping("/customView")
-    public String customView()
-    {
-        return prefix + "/customView";
-    }
-
-    /**
-     * 异步加载表格树
-     */
-    @GetMapping("/asynTree")
-    public String asynTree()
-    {
-        return prefix + "/asynTree";
-    }
-
-    /**
-     * 表格其他操作
-     */
-    @GetMapping("/other")
-    public String other()
-    {
-        return prefix + "/other";
-    }
-
-    /**
-     * 动态获取列
-     */
-    @PostMapping("/ajaxColumns")
-    @ResponseBody
-    public AjaxResult ajaxColumns(UserTableColumn userColumn)
-    {
-        List<UserTableColumn> columnList = new ArrayList<UserTableColumn>(Arrays.asList(new UserTableColumn[columns.size()]));
-        Collections.copy(columnList, columns);
-        if (userColumn != null && "userBalance".equals(userColumn.getField()))
-        {
-            columnList.add(new UserTableColumn("用户余额", "userBalance"));
-        }
-        return AjaxResult.success(columnList);
-    }
-
-    /**
-     * 查询数据
-     */
-    @PostMapping("/list")
-    @ResponseBody
-    public TableDataInfo list(UserTableModel userModel)
-    {
-        TableDataInfo rspData = new TableDataInfo();
-        List<UserTableModel> userList = new ArrayList<UserTableModel>(Arrays.asList(new UserTableModel[users.size()]));
-        Collections.copy(userList, users);
-        // 查询条件过滤
-        if (StringUtils.isNotEmpty(userModel.getUserName()))
-        {
-            userList.clear();
-            for (UserTableModel user : users)
-            {
-                if (user.getUserName().equals(userModel.getUserName()))
-                {
-                    userList.add(user);
-                }
-            }
-        }
-        PageDomain pageDomain = TableSupport.buildPageRequest();
-        if (null == pageDomain.getPageNum() || null == pageDomain.getPageSize())
-        {
-            rspData.setRows(userList);
-            rspData.setTotal(userList.size());
-            return rspData;
-        }
-        Integer pageNum = (pageDomain.getPageNum() - 1) * 10;
-        Integer pageSize = pageDomain.getPageNum() * 10;
-        if (pageSize > userList.size())
-        {
-            pageSize = userList.size();
-        }
-        rspData.setRows(userList.subList(pageNum, pageSize));
-        rspData.setTotal(userList.size());
-        return rspData;
-    }
-
-    /**
-     * 查询树表数据
-     */
-    @PostMapping("/tree/list")
-    @ResponseBody
-    public TableDataInfo treeList(AreaModel areaModel)
-    {
-        TableDataInfo rspData = new TableDataInfo();
-        List<AreaModel> areaList = new ArrayList<AreaModel>(Arrays.asList(new AreaModel[areas.size()]));
-        // 默认查询条件 parentId 0
-        Collections.copy(areaList, areas);
-        areaList.clear();
-        if (StringUtils.isNotEmpty(areaModel.getAreaName()))
-        {
-            for (AreaModel area : areas)
-            {
-                if (area.getParentId() == 0 && area.getAreaName().equals(areaModel.getAreaName()))
-                {
-                    areaList.add(area);
-                }
-            }
-        }
-        else
-        {
-            for (AreaModel area : areas)
-            {
-                if (area.getParentId() == 0)
-                {
-                    areaList.add(area);
-                }
-            }
-        }
-        PageDomain pageDomain = TableSupport.buildPageRequest();
-        Integer pageNum = (pageDomain.getPageNum() - 1) * pageDomain.getPageSize();
-        Integer pageSize = pageDomain.getPageNum() * pageDomain.getPageSize();
-        if (pageSize > areaList.size())
-        {
-            pageSize = areaList.size();
-        }
-        rspData.setRows(areaList.subList(pageNum, pageSize));
-        rspData.setTotal(areaList.size());
-        return rspData;
-    }
-
-    /**
-     * 查询树表子节点数据
-     */
-    @PostMapping("/tree/listChild")
-    @ResponseBody
-    public List<AreaModel> listChild(AreaModel areaModel)
-    {
-        List<AreaModel> areaList = new ArrayList<AreaModel>(Arrays.asList(new AreaModel[areas.size()]));
-        // 查询条件 parentId
-        Collections.copy(areaList, areas);
-        areaList.clear();
-        if (StringUtils.isNotEmpty(areaModel.getAreaName()))
-        {
-            for (AreaModel area : areas)
-            {
-                if (area.getParentId().intValue() == areaModel.getParentId().intValue() && area.getAreaName().equals(areaModel.getAreaName()))
-                {
-                    areaList.add(area);
-                }
-            }
-        }
-        else
-        {
-            for (AreaModel area : areas)
-            {
-                if (area.getParentId().intValue() == areaModel.getParentId().intValue())
-                {
-                    areaList.add(area);
-                }
-            }
-        }
-        return areaList;
-    }
-}
-
-class UserTableColumn
-{
-    /** 表头 */
-    private String title;
-    /** 字段 */
-    private String field;
-
-    public UserTableColumn()
-    {
-
-    }
-
-    public UserTableColumn(String title, String field)
-    {
-        this.title = title;
-        this.field = field;
-    }
-
-    public String getTitle()
-    {
-        return title;
-    }
-
-    public void setTitle(String title)
-    {
-        this.title = title;
-    }
-
-    public String getField()
-    {
-        return field;
-    }
-
-    public void setField(String field)
-    {
-        this.field = field;
-    }
-}
-
-class UserTableModel
-{
-    /** 用户ID */
-    private int userId;
-
-    /** 用户编号 */
-    @Excel(name = "用户编号", cellType = ColumnType.NUMERIC)
-    private String userCode;
-
-    /** 用户姓名 */
-    @Excel(name = "用户姓名")
-    private String userName;
-
-    /** 用户性别 */
-    private String userSex;
-
-    /** 用户手机 */
-    @Excel(name = "用户手机")
-    private String userPhone;
-
-    /** 用户邮箱 */
-    @Excel(name = "用户邮箱")
-    private String userEmail;
-
-    /** 用户余额 */
-    @Excel(name = "用户余额", cellType = ColumnType.NUMERIC)
-    private double userBalance;
-
-    /** 用户状态(0正常 1停用) */
-    private String status;
-
-    /** 创建时间 */
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    private Date createTime;
-
-    public UserTableModel()
-    {
-
-    }
-
-    public UserTableModel(int userId, String userCode, String userName, String userSex, String userPhone,
-            String userEmail, double userBalance, String status)
-    {
-        this.userId = userId;
-        this.userCode = userCode;
-        this.userName = userName;
-        this.userSex = userSex;
-        this.userPhone = userPhone;
-        this.userEmail = userEmail;
-        this.userBalance = userBalance;
-        this.status = status;
-        this.createTime = DateUtils.getNowDate();
-    }
-
-    public int getUserId()
-    {
-        return userId;
-    }
-
-    public void setUserId(int userId)
-    {
-        this.userId = userId;
-    }
-
-    public String getUserCode()
-    {
-        return userCode;
-    }
-
-    public void setUserCode(String userCode)
-    {
-        this.userCode = userCode;
-    }
-
-    public String getUserName()
-    {
-        return userName;
-    }
-
-    public void setUserName(String userName)
-    {
-        this.userName = userName;
-    }
-
-    public String getUserSex()
-    {
-        return userSex;
-    }
-
-    public void setUserSex(String userSex)
-    {
-        this.userSex = userSex;
-    }
-
-    public String getUserPhone()
-    {
-        return userPhone;
-    }
-
-    public void setUserPhone(String userPhone)
-    {
-        this.userPhone = userPhone;
-    }
-
-    public String getUserEmail()
-    {
-        return userEmail;
-    }
-
-    public void setUserEmail(String userEmail)
-    {
-        this.userEmail = userEmail;
-    }
-
-    public double getUserBalance()
-    {
-        return userBalance;
-    }
-
-    public void setUserBalance(double userBalance)
-    {
-        this.userBalance = userBalance;
-    }
-
-    public String getStatus()
-    {
-        return status;
-    }
-
-    public void setStatus(String status)
-    {
-        this.status = status;
-    }
-
-    public Date getCreateTime()
-    {
-        return createTime;
-    }
-
-    public void setCreateTime(Date createTime)
-    {
-        this.createTime = createTime;
-    }
-}
-class AreaModel
-{
-    /** 编号 */
-    private Long id;
-
-    /** 父编号 */
-    private Long parentId;
-
-    /** 区域名称 */
-    private String areaName;
-
-    /** 区域代码 */
-    private String areaCode;
-
-    /** 名称首字母 */
-    private String simplePy;
-
-    /** 名称全拼 */
-    private String pinYin;
-
-    /** 是否有子节点(0无 1有) */
-    private Integer isTreeLeaf = 1;
-
-    public AreaModel()
-    {
-
-    }
-
-    public AreaModel(int id, int parentId, String areaName, String areaCode, String simplePy, String pinYin, Integer isTreeLeaf)
-    {
-        this.id = Long.valueOf(id);
-        this.parentId = Long.valueOf(parentId);
-        this.areaName = areaName;
-        this.areaCode = areaCode;
-        this.simplePy = simplePy;
-        this.pinYin = pinYin;
-        this.isTreeLeaf = isTreeLeaf;
-    }
-
-    public Long getId()
-    {
-        return id;
-    }
-
-    public void setId(Long id)
-    {
-        this.id = id;
-    }
-
-    public Long getParentId()
-    {
-        return parentId;
-    }
-
-    public void setParentId(Long parentId)
-    {
-        this.parentId = parentId;
-    }
-
-    public String getAreaName()
-    {
-        return areaName;
-    }
-
-    public void setAreaName(String areaName)
-    {
-        this.areaName = areaName;
-    }
-
-    public String getAreaCode()
-    {
-        return areaCode;
-    }
-
-    public void setAreaCode(String areaCode)
-    {
-        this.areaCode = areaCode;
-    }
-
-    public String getSimplePy()
-    {
-        return simplePy;
-    }
-
-    public void setSimplePy(String simplePy)
-    {
-        this.simplePy = simplePy;
-    }
-
-    public String getPinYin()
-    {
-        return pinYin;
-    }
-
-    public void setPinYin(String pinYin)
-    {
-        this.pinYin = pinYin;
-    }
-
-    public Integer getIsTreeLeaf()
-    {
-        return isTreeLeaf;
-    }
-
-    public void setIsTreeLeaf(Integer isTreeLeaf)
-    {
-        this.isTreeLeaf = isTreeLeaf;
-    }
-}

+ 0 - 116
ruoyi-admin/src/main/java/com/ruoyi/web/controller/demo/domain/CustomerModel.java

@@ -1,116 +0,0 @@
-package com.ruoyi.web.controller.demo.domain;
-
-import java.util.List;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-
-/**
- * 客户测试信息
- * 
- * @author ruoyi
- */
-public class CustomerModel
-{
-    /**
-     * 客户姓名
-     */
-    private String name;
-
-    /**
-     * 客户手机
-     */
-    private String phonenumber;
-
-    /**
-     * 客户性别
-     */
-    private String sex;
-
-    /**
-     * 客户生日
-     */
-    private String birthday;
-
-    /**
-     * 客户描述
-     */
-    private String remark;
-
-    /**
-     * 商品信息
-     */
-    private List<GoodsModel> goods;
-
-    public String getName()
-    {
-        return name;
-    }
-
-    public void setName(String name)
-    {
-        this.name = name;
-    }
-
-    public String getPhonenumber()
-    {
-        return phonenumber;
-    }
-
-    public void setPhonenumber(String phonenumber)
-    {
-        this.phonenumber = phonenumber;
-    }
-
-
-    public String getSex()
-    {
-        return sex;
-    }
-
-    public void setSex(String sex)
-    {
-        this.sex = sex;
-    }
-
-    public String getBirthday()
-    {
-        return birthday;
-    }
-
-    public void setBirthday(String birthday)
-    {
-        this.birthday = birthday;
-    }
-
-    public String getRemark()
-    {
-        return remark;
-    }
-
-    public void setRemark(String remark)
-    {
-        this.remark = remark;
-    }
-
-    public List<GoodsModel> getGoods()
-    {
-        return goods;
-    }
-
-    public void setGoods(List<GoodsModel> goods)
-    {
-        this.goods = goods;
-    }
-
-    @Override
-    public String toString() {
-        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
-            .append("name", getName())
-            .append("phonenumber", getPhonenumber())
-            .append("sex", getSex())
-            .append("birthday", getBirthday())
-            .append("goods", getGoods())
-            .append("remark", getRemark())
-            .toString();
-    }
-}

+ 0 - 99
ruoyi-admin/src/main/java/com/ruoyi/web/controller/demo/domain/GoodsModel.java

@@ -1,99 +0,0 @@
-package com.ruoyi.web.controller.demo.domain;
-
-import java.util.Date;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-
-/**
- * 商品测试信息
- * 
- * @author ruoyi
- */
-public class GoodsModel
-{
-    /**
-     * 商品名称
-     */
-    private String name;
-
-    /**
-     * 商品重量
-     */
-    private Integer weight;
-
-    /**
-     * 商品价格
-     */
-    private Double price;
-    
-    /**
-     * 商品日期
-     */
-    private Date date;
-
-    /**
-     * 商品种类
-     */
-    private String type;
-
-    public String getName()
-    {
-        return name;
-    }
-
-    public void setName(String name)
-    {
-        this.name = name;
-    }
-
-    public Integer getWeight()
-    {
-        return weight;
-    }
-
-    public void setWeight(Integer weight)
-    {
-        this.weight = weight;
-    }
-
-    public Double getPrice()
-    {
-        return price;
-    }
-
-    public void setPrice(Double price)
-    {
-        this.price = price;
-    }
-
-    public Date getDate()
-    {
-        return date;
-    }
-
-    public void setDate(Date date)
-    {
-        this.date = date;
-    }
-
-    public String getType()
-    {
-        return type;
-    }
-
-    public void setType(String type)
-    {
-        this.type = type;
-    }
-
-    @Override
-    public String toString() {
-        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
-            .append("name", getName())
-            .append("weight", getWeight())
-            .append("price", getPrice())
-            .append("date", getDate())
-            .append("type", getType())
-            .toString();
-    }
-}

+ 0 - 149
ruoyi-admin/src/main/java/com/ruoyi/web/controller/demo/domain/UserOperateModel.java

@@ -1,149 +0,0 @@
-package com.ruoyi.web.controller.demo.domain;
-
-import java.util.Date;
-import com.ruoyi.common.annotation.Excel;
-import com.ruoyi.common.annotation.Excel.Type;
-import com.ruoyi.common.core.domain.BaseEntity;
-import com.ruoyi.common.utils.DateUtils;
-
-public class UserOperateModel extends BaseEntity
-{
-    private static final long serialVersionUID = 1L;
-
-    private int userId;
-
-    @Excel(name = "用户编号")
-    private String userCode;
-
-    @Excel(name = "用户姓名")
-    private String userName;
-
-    @Excel(name = "用户性别", readConverterExp = "0=男,1=女,2=未知")
-    private String userSex;
-
-    @Excel(name = "用户手机")
-    private String userPhone;
-
-    @Excel(name = "用户邮箱")
-    private String userEmail;
-
-    @Excel(name = "用户余额")
-    private double userBalance;
-
-    @Excel(name = "用户状态", readConverterExp = "0=正常,1=停用")
-    private String status;
-
-    @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss", type = Type.EXPORT)
-    private Date createTime;
-
-    public UserOperateModel()
-    {
-
-    }
-
-    public UserOperateModel(int userId, String userCode, String userName, String userSex, String userPhone,
-            String userEmail, double userBalance, String status)
-    {
-        this.userId = userId;
-        this.userCode = userCode;
-        this.userName = userName;
-        this.userSex = userSex;
-        this.userPhone = userPhone;
-        this.userEmail = userEmail;
-        this.userBalance = userBalance;
-        this.status = status;
-        this.createTime = DateUtils.getNowDate();
-    }
-
-    public int getUserId()
-    {
-        return userId;
-    }
-
-    public void setUserId(int userId)
-    {
-        this.userId = userId;
-    }
-
-    public String getUserCode()
-    {
-        return userCode;
-    }
-
-    public void setUserCode(String userCode)
-    {
-        this.userCode = userCode;
-    }
-
-    public String getUserName()
-    {
-        return userName;
-    }
-
-    public void setUserName(String userName)
-    {
-        this.userName = userName;
-    }
-
-    public String getUserSex()
-    {
-        return userSex;
-    }
-
-    public void setUserSex(String userSex)
-    {
-        this.userSex = userSex;
-    }
-
-    public String getUserPhone()
-    {
-        return userPhone;
-    }
-
-    public void setUserPhone(String userPhone)
-    {
-        this.userPhone = userPhone;
-    }
-
-    public String getUserEmail()
-    {
-        return userEmail;
-    }
-
-    public void setUserEmail(String userEmail)
-    {
-        this.userEmail = userEmail;
-    }
-
-    public double getUserBalance()
-    {
-        return userBalance;
-    }
-
-    public void setUserBalance(double userBalance)
-    {
-        this.userBalance = userBalance;
-    }
-
-    public String getStatus()
-    {
-        return status;
-    }
-
-    public void setStatus(String status)
-    {
-        this.status = status;
-    }
-
-    @Override
-    public Date getCreateTime()
-    {
-        return createTime;
-    }
-
-    @Override
-    public void setCreateTime(Date createTime)
-    {
-        this.createTime = createTime;
-    }
-}

+ 0 - 90
ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/CacheController.java

@@ -1,90 +0,0 @@
-package com.ruoyi.web.controller.monitor;
-
-import org.apache.shiro.authz.annotation.RequiresPermissions;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Controller;
-import org.springframework.ui.ModelMap;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.ResponseBody;
-import com.ruoyi.common.core.controller.BaseController;
-import com.ruoyi.common.core.domain.AjaxResult;
-import com.ruoyi.framework.web.service.CacheService;
-
-/**
- * 缓存监控
- * 
- * @author ruoyi
- */
-@Controller
-@RequestMapping("/monitor/cache")
-public class CacheController extends BaseController
-{
-    private String prefix = "monitor/cache";
-
-    @Autowired
-    private CacheService cacheService;
-
-    @RequiresPermissions("monitor:cache:view")
-    @GetMapping()
-    public String cache(ModelMap mmap)
-    {
-        mmap.put("cacheNames", cacheService.getCacheNames());
-        return prefix + "/cache";
-    }
-
-    @RequiresPermissions("monitor:cache:view")
-    @PostMapping("/getNames")
-    public String getCacheNames(String fragment, ModelMap mmap)
-    {
-        mmap.put("cacheNames", cacheService.getCacheNames());
-        return prefix + "/cache::" + fragment;
-    }
-
-    @RequiresPermissions("monitor:cache:view")
-    @PostMapping("/getKeys")
-    public String getCacheKeys(String fragment, String cacheName, ModelMap mmap)
-    {
-        mmap.put("cacheName", cacheName);
-        mmap.put("cacheKeys", cacheService.getCacheKeys(cacheName));
-        return prefix + "/cache::" + fragment;
-    }
-
-    @RequiresPermissions("monitor:cache:view")
-    @PostMapping("/getValue")
-    public String getCacheValue(String fragment, String cacheName, String cacheKey, ModelMap mmap)
-    {
-        mmap.put("cacheName", cacheName);
-        mmap.put("cacheKey", cacheKey);
-        mmap.put("cacheValue", cacheService.getCacheValue(cacheName, cacheKey));
-        return prefix + "/cache::" + fragment;
-    }
-
-    @RequiresPermissions("monitor:cache:view")
-    @PostMapping("/clearCacheName")
-    @ResponseBody
-    public AjaxResult clearCacheName(String cacheName, ModelMap mmap)
-    {
-        cacheService.clearCacheName(cacheName);
-        return AjaxResult.success();
-    }
-
-    @RequiresPermissions("monitor:cache:view")
-    @PostMapping("/clearCacheKey")
-    @ResponseBody
-    public AjaxResult clearCacheKey(String cacheName, String cacheKey, ModelMap mmap)
-    {
-        cacheService.clearCacheKey(cacheName, cacheKey);
-        return AjaxResult.success();
-    }
-
-    @RequiresPermissions("monitor:cache:view")
-    @GetMapping("/clearAll")
-    @ResponseBody
-    public AjaxResult clearAll(ModelMap mmap)
-    {
-        cacheService.clearAll();
-        return AjaxResult.success();
-    }
-}

+ 0 - 26
ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/DruidController.java

@@ -1,26 +0,0 @@
-package com.ruoyi.web.controller.monitor;
-
-import org.apache.shiro.authz.annotation.RequiresPermissions;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import com.ruoyi.common.core.controller.BaseController;
-
-/**
- * druid 监控
- * 
- * @author ruoyi
- */
-@Controller
-@RequestMapping("/monitor/data")
-public class DruidController extends BaseController
-{
-    private String prefix = "/druid";
-
-    @RequiresPermissions("monitor:data:view")
-    @GetMapping()
-    public String index()
-    {
-        return redirect(prefix + "/index.html");
-    }
-}

+ 0 - 31
ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/ServerController.java

@@ -1,31 +0,0 @@
-package com.ruoyi.web.controller.monitor;
-
-import org.apache.shiro.authz.annotation.RequiresPermissions;
-import org.springframework.stereotype.Controller;
-import org.springframework.ui.ModelMap;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import com.ruoyi.common.core.controller.BaseController;
-import com.ruoyi.framework.web.domain.Server;
-
-/**
- * 服务器监控
- * 
- * @author ruoyi
- */
-@Controller
-@RequestMapping("/monitor/server")
-public class ServerController extends BaseController
-{
-    private String prefix = "monitor/server";
-
-    @RequiresPermissions("monitor:server:view")
-    @GetMapping()
-    public String server(ModelMap mmap) throws Exception
-    {
-        Server server = new Server();
-        server.copyTo();
-        mmap.put("server", server);
-        return prefix + "/server";
-    }
-}

+ 0 - 94
ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/SysLogininforController.java

@@ -1,94 +0,0 @@
-package com.ruoyi.web.controller.monitor;
-
-import java.util.List;
-import com.ruoyi.framework.shiro.service.SysPasswordService;
-import org.apache.shiro.authz.annotation.RequiresPermissions;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.ResponseBody;
-import com.ruoyi.common.annotation.Log;
-import com.ruoyi.common.core.controller.BaseController;
-import com.ruoyi.common.core.domain.AjaxResult;
-import com.ruoyi.common.core.page.TableDataInfo;
-import com.ruoyi.common.enums.BusinessType;
-import com.ruoyi.common.utils.poi.ExcelUtil;
-import com.ruoyi.system.domain.SysLogininfor;
-import com.ruoyi.system.service.ISysLogininforService;
-
-/**
- * 系统访问记录
- * 
- * @author ruoyi
- */
-@Controller
-@RequestMapping("/monitor/logininfor")
-public class SysLogininforController extends BaseController
-{
-    private String prefix = "monitor/logininfor";
-
-    @Autowired
-    private ISysLogininforService logininforService;
-
-    @Autowired
-    private SysPasswordService passwordService;
-
-    @RequiresPermissions("monitor:logininfor:view")
-    @GetMapping()
-    public String logininfor()
-    {
-        return prefix + "/logininfor";
-    }
-
-    @RequiresPermissions("monitor:logininfor:list")
-    @PostMapping("/list")
-    @ResponseBody
-    public TableDataInfo list(SysLogininfor logininfor)
-    {
-        startPage();
-        List<SysLogininfor> list = logininforService.selectLogininforList(logininfor);
-        return getDataTable(list);
-    }
-
-    @Log(title = "登录日志", businessType = BusinessType.EXPORT)
-    @RequiresPermissions("monitor:logininfor:export")
-    @PostMapping("/export")
-    @ResponseBody
-    public AjaxResult export(SysLogininfor logininfor)
-    {
-        List<SysLogininfor> list = logininforService.selectLogininforList(logininfor);
-        ExcelUtil<SysLogininfor> util = new ExcelUtil<SysLogininfor>(SysLogininfor.class);
-        return util.exportExcel(list, "登录日志");
-    }
-
-    @RequiresPermissions("monitor:logininfor:remove")
-    @Log(title = "登录日志", businessType = BusinessType.DELETE)
-    @PostMapping("/remove")
-    @ResponseBody
-    public AjaxResult remove(String ids)
-    {
-        return toAjax(logininforService.deleteLogininforByIds(ids));
-    }
-    
-    @RequiresPermissions("monitor:logininfor:remove")
-    @Log(title = "登录日志", businessType = BusinessType.CLEAN)
-    @PostMapping("/clean")
-    @ResponseBody
-    public AjaxResult clean()
-    {
-        logininforService.cleanLogininfor();
-        return success();
-    }
-
-    @RequiresPermissions("monitor:logininfor:unlock")
-    @Log(title = "账户解锁", businessType = BusinessType.OTHER)
-    @PostMapping("/unlock")
-    @ResponseBody
-    public AjaxResult unlock(String loginName)
-    {
-        passwordService.clearLoginRecordCache(loginName);
-        return success();
-    }
-}

+ 0 - 90
ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/SysOperlogController.java

@@ -1,90 +0,0 @@
-package com.ruoyi.web.controller.monitor;
-
-import java.util.List;
-import org.apache.shiro.authz.annotation.RequiresPermissions;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Controller;
-import org.springframework.ui.ModelMap;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.ResponseBody;
-import com.ruoyi.common.annotation.Log;
-import com.ruoyi.common.core.controller.BaseController;
-import com.ruoyi.common.core.domain.AjaxResult;
-import com.ruoyi.common.core.page.TableDataInfo;
-import com.ruoyi.common.enums.BusinessType;
-import com.ruoyi.common.utils.poi.ExcelUtil;
-import com.ruoyi.system.domain.SysOperLog;
-import com.ruoyi.system.service.ISysOperLogService;
-
-/**
- * 操作日志记录
- * 
- * @author ruoyi
- */
-@Controller
-@RequestMapping("/monitor/operlog")
-public class SysOperlogController extends BaseController
-{
-    private String prefix = "monitor/operlog";
-
-    @Autowired
-    private ISysOperLogService operLogService;
-
-    @RequiresPermissions("monitor:operlog:view")
-    @GetMapping()
-    public String operlog()
-    {
-        return prefix + "/operlog";
-    }
-
-    @RequiresPermissions("monitor:operlog:list")
-    @PostMapping("/list")
-    @ResponseBody
-    public TableDataInfo list(SysOperLog operLog)
-    {
-        startPage();
-        List<SysOperLog> list = operLogService.selectOperLogList(operLog);
-        return getDataTable(list);
-    }
-
-    @Log(title = "操作日志", businessType = BusinessType.EXPORT)
-    @RequiresPermissions("monitor:operlog:export")
-    @PostMapping("/export")
-    @ResponseBody
-    public AjaxResult export(SysOperLog operLog)
-    {
-        List<SysOperLog> list = operLogService.selectOperLogList(operLog);
-        ExcelUtil<SysOperLog> util = new ExcelUtil<SysOperLog>(SysOperLog.class);
-        return util.exportExcel(list, "操作日志");
-    }
-
-    @Log(title = "操作日志", businessType = BusinessType.DELETE)
-    @RequiresPermissions("monitor:operlog:remove")
-    @PostMapping("/remove")
-    @ResponseBody
-    public AjaxResult remove(String ids)
-    {
-        return toAjax(operLogService.deleteOperLogByIds(ids));
-    }
-
-    @RequiresPermissions("monitor:operlog:detail")
-    @GetMapping("/detail/{operId}")
-    public String detail(@PathVariable("operId") Long operId, ModelMap mmap)
-    {
-        mmap.put("operLog", operLogService.selectOperLogById(operId));
-        return prefix + "/detail";
-    }
-    
-    @Log(title = "操作日志", businessType = BusinessType.CLEAN)
-    @RequiresPermissions("monitor:operlog:remove")
-    @PostMapping("/clean")
-    @ResponseBody
-    public AjaxResult clean()
-    {
-        operLogService.cleanOperLog();
-        return success();
-    }
-}

+ 0 - 88
ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/SysUserOnlineController.java

@@ -1,88 +0,0 @@
-package com.ruoyi.web.controller.monitor;
-
-import java.util.List;
-import org.apache.shiro.authz.annotation.Logical;
-import org.apache.shiro.authz.annotation.RequiresPermissions;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.ResponseBody;
-import com.ruoyi.common.annotation.Log;
-import com.ruoyi.common.core.controller.BaseController;
-import com.ruoyi.common.core.domain.AjaxResult;
-import com.ruoyi.common.core.page.TableDataInfo;
-import com.ruoyi.common.core.text.Convert;
-import com.ruoyi.common.enums.BusinessType;
-import com.ruoyi.common.enums.OnlineStatus;
-import com.ruoyi.common.utils.ShiroUtils;
-import com.ruoyi.framework.shiro.session.OnlineSession;
-import com.ruoyi.framework.shiro.session.OnlineSessionDAO;
-import com.ruoyi.system.domain.SysUserOnline;
-import com.ruoyi.system.service.ISysUserOnlineService;
-
-/**
- * 在线用户监控
- * 
- * @author ruoyi
- */
-@Controller
-@RequestMapping("/monitor/online")
-public class SysUserOnlineController extends BaseController
-{
-    private String prefix = "monitor/online";
-
-    @Autowired
-    private ISysUserOnlineService userOnlineService;
-
-    @Autowired
-    private OnlineSessionDAO onlineSessionDAO;
-
-    @RequiresPermissions("monitor:online:view")
-    @GetMapping()
-    public String online()
-    {
-        return prefix + "/online";
-    }
-
-    @RequiresPermissions("monitor:online:list")
-    @PostMapping("/list")
-    @ResponseBody
-    public TableDataInfo list(SysUserOnline userOnline)
-    {
-        startPage();
-        List<SysUserOnline> list = userOnlineService.selectUserOnlineList(userOnline);
-        return getDataTable(list);
-    }
-
-    @RequiresPermissions(value = { "monitor:online:batchForceLogout", "monitor:online:forceLogout" }, logical = Logical.OR)
-    @Log(title = "在线用户", businessType = BusinessType.FORCE)
-    @PostMapping("/batchForceLogout")
-    @ResponseBody
-    public AjaxResult batchForceLogout(String ids)
-    {
-        for (String sessionId : Convert.toStrArray(ids))
-        {
-            SysUserOnline online = userOnlineService.selectOnlineById(sessionId);
-            if (online == null)
-            {
-                return error("用户已下线");
-            }
-            OnlineSession onlineSession = (OnlineSession) onlineSessionDAO.readSession(online.getSessionId());
-            if (onlineSession == null)
-            {
-                return error("用户已下线");
-            }
-            if (sessionId.equals(ShiroUtils.getSessionId()))
-            {
-                return error("当前登录用户无法强退");
-            }
-            onlineSessionDAO.delete(onlineSession);
-            online.setStatus(OnlineStatus.off_line);
-            userOnlineService.saveOnline(online);
-            userOnlineService.removeUserCache(online.getLoginName(), sessionId);
-        }
-        return success();
-    }
-}

+ 0 - 92
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysCaptchaController.java

@@ -1,92 +0,0 @@
-package com.ruoyi.web.controller.system;
-
-import java.awt.image.BufferedImage;
-import java.io.IOException;
-import javax.annotation.Resource;
-import javax.imageio.ImageIO;
-import javax.servlet.ServletOutputStream;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpSession;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.servlet.ModelAndView;
-import com.google.code.kaptcha.Constants;
-import com.google.code.kaptcha.Producer;
-import com.ruoyi.common.core.controller.BaseController;
-
-/**
- * 图片验证码(支持算术形式)
- * 
- * @author ruoyi
- */
-@Controller
-@RequestMapping("/captcha")
-public class SysCaptchaController extends BaseController
-{
-    @Resource(name = "captchaProducer")
-    private Producer captchaProducer;
-
-    @Resource(name = "captchaProducerMath")
-    private Producer captchaProducerMath;
-
-    /**
-     * 验证码生成
-     */
-    @GetMapping(value = "/captchaImage")
-    public ModelAndView getKaptchaImage(HttpServletRequest request, HttpServletResponse response)
-    {
-        ServletOutputStream out = null;
-        try
-        {
-            HttpSession session = request.getSession();
-            response.setDateHeader("Expires", 0);
-            response.setHeader("Cache-Control", "no-store, no-cache, must-revalidate");
-            response.addHeader("Cache-Control", "post-check=0, pre-check=0");
-            response.setHeader("Pragma", "no-cache");
-            response.setContentType("image/jpeg");
-
-            String type = request.getParameter("type");
-            String capStr = null;
-            String code = null;
-            BufferedImage bi = null;
-            if ("math".equals(type))
-            {
-                String capText = captchaProducerMath.createText();
-                capStr = capText.substring(0, capText.lastIndexOf("@"));
-                code = capText.substring(capText.lastIndexOf("@") + 1);
-                bi = captchaProducerMath.createImage(capStr);
-            }
-            else if ("char".equals(type))
-            {
-                capStr = code = captchaProducer.createText();
-                bi = captchaProducer.createImage(capStr);
-            }
-            session.setAttribute(Constants.KAPTCHA_SESSION_KEY, code);
-            out = response.getOutputStream();
-            ImageIO.write(bi, "jpg", out);
-            out.flush();
-
-        }
-        catch (Exception e)
-        {
-            e.printStackTrace();
-        }
-        finally
-        {
-            try
-            {
-                if (out != null)
-                {
-                    out.close();
-                }
-            }
-            catch (IOException e)
-            {
-                e.printStackTrace();
-            }
-        }
-        return null;
-    }
-}

+ 0 - 158
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysConfigController.java

@@ -1,158 +0,0 @@
-package com.ruoyi.web.controller.system;
-
-import java.util.List;
-import org.apache.shiro.authz.annotation.RequiresPermissions;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Controller;
-import org.springframework.ui.ModelMap;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.ResponseBody;
-import com.ruoyi.common.annotation.Log;
-import com.ruoyi.common.constant.UserConstants;
-import com.ruoyi.common.core.controller.BaseController;
-import com.ruoyi.common.core.domain.AjaxResult;
-import com.ruoyi.common.core.page.TableDataInfo;
-import com.ruoyi.common.enums.BusinessType;
-import com.ruoyi.common.utils.poi.ExcelUtil;
-import com.ruoyi.system.domain.SysConfig;
-import com.ruoyi.system.service.ISysConfigService;
-
-/**
- * 参数配置 信息操作处理
- * 
- * @author ruoyi
- */
-@Controller
-@RequestMapping("/system/config")
-public class SysConfigController extends BaseController
-{
-    private String prefix = "system/config";
-
-    @Autowired
-    private ISysConfigService configService;
-
-    @RequiresPermissions("system:config:view")
-    @GetMapping()
-    public String config()
-    {
-        return prefix + "/config";
-    }
-
-    /**
-     * 查询参数配置列表
-     */
-    @RequiresPermissions("system:config:list")
-    @PostMapping("/list")
-    @ResponseBody
-    public TableDataInfo list(SysConfig config)
-    {
-        startPage();
-        List<SysConfig> list = configService.selectConfigList(config);
-        return getDataTable(list);
-    }
-
-    @Log(title = "参数管理", businessType = BusinessType.EXPORT)
-    @RequiresPermissions("system:config:export")
-    @PostMapping("/export")
-    @ResponseBody
-    public AjaxResult export(SysConfig config)
-    {
-        List<SysConfig> list = configService.selectConfigList(config);
-        ExcelUtil<SysConfig> util = new ExcelUtil<SysConfig>(SysConfig.class);
-        return util.exportExcel(list, "参数数据");
-    }
-
-    /**
-     * 新增参数配置
-     */
-    @GetMapping("/add")
-    public String add()
-    {
-        return prefix + "/add";
-    }
-
-    /**
-     * 新增保存参数配置
-     */
-    @RequiresPermissions("system:config:add")
-    @Log(title = "参数管理", businessType = BusinessType.INSERT)
-    @PostMapping("/add")
-    @ResponseBody
-    public AjaxResult addSave(@Validated SysConfig config)
-    {
-        if (UserConstants.CONFIG_KEY_NOT_UNIQUE.equals(configService.checkConfigKeyUnique(config)))
-        {
-            return error("新增参数'" + config.getConfigName() + "'失败,参数键名已存在");
-        }
-        config.setCreateBy(getLoginName());
-        return toAjax(configService.insertConfig(config));
-    }
-
-    /**
-     * 修改参数配置
-     */
-    @RequiresPermissions("system:config:edit")
-    @GetMapping("/edit/{configId}")
-    public String edit(@PathVariable("configId") Long configId, ModelMap mmap)
-    {
-        mmap.put("config", configService.selectConfigById(configId));
-        return prefix + "/edit";
-    }
-
-    /**
-     * 修改保存参数配置
-     */
-    @RequiresPermissions("system:config:edit")
-    @Log(title = "参数管理", businessType = BusinessType.UPDATE)
-    @PostMapping("/edit")
-    @ResponseBody
-    public AjaxResult editSave(@Validated SysConfig config)
-    {
-        if (UserConstants.CONFIG_KEY_NOT_UNIQUE.equals(configService.checkConfigKeyUnique(config)))
-        {
-            return error("修改参数'" + config.getConfigName() + "'失败,参数键名已存在");
-        }
-        config.setUpdateBy(getLoginName());
-        return toAjax(configService.updateConfig(config));
-    }
-
-    /**
-     * 删除参数配置
-     */
-    @RequiresPermissions("system:config:remove")
-    @Log(title = "参数管理", businessType = BusinessType.DELETE)
-    @PostMapping("/remove")
-    @ResponseBody
-    public AjaxResult remove(String ids)
-    {
-        configService.deleteConfigByIds(ids);
-        return success();
-    }
-
-    /**
-     * 刷新参数缓存
-     */
-    @RequiresPermissions("system:config:remove")
-    @Log(title = "参数管理", businessType = BusinessType.CLEAN)
-    @GetMapping("/refreshCache")
-    @ResponseBody
-    public AjaxResult refreshCache()
-    {
-        configService.resetConfigCache();
-        return success();
-    }
-
-    /**
-     * 校验参数键名
-     */
-    @PostMapping("/checkConfigKeyUnique")
-    @ResponseBody
-    public String checkConfigKeyUnique(SysConfig config)
-    {
-        return configService.checkConfigKeyUnique(config);
-    }
-}

+ 0 - 187
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDeptController.java

@@ -1,187 +0,0 @@
-package com.ruoyi.web.controller.system;
-
-import java.util.List;
-import org.apache.shiro.authz.annotation.RequiresPermissions;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Controller;
-import org.springframework.ui.ModelMap;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.ResponseBody;
-import com.ruoyi.common.annotation.Log;
-import com.ruoyi.common.constant.UserConstants;
-import com.ruoyi.common.core.controller.BaseController;
-import com.ruoyi.common.core.domain.AjaxResult;
-import com.ruoyi.common.core.domain.Ztree;
-import com.ruoyi.common.core.domain.entity.SysDept;
-import com.ruoyi.common.enums.BusinessType;
-import com.ruoyi.common.utils.StringUtils;
-import com.ruoyi.system.service.ISysDeptService;
-
-/**
- * 部门信息
- * 
- * @author ruoyi
- */
-@Controller
-@RequestMapping("/system/dept")
-public class SysDeptController extends BaseController
-{
-    private String prefix = "system/dept";
-
-    @Autowired
-    private ISysDeptService deptService;
-
-    @RequiresPermissions("system:dept:view")
-    @GetMapping()
-    public String dept()
-    {
-        return prefix + "/dept";
-    }
-
-    @RequiresPermissions("system:dept:list")
-    @PostMapping("/list")
-    @ResponseBody
-    public List<SysDept> list(SysDept dept)
-    {
-        List<SysDept> deptList = deptService.selectDeptList(dept);
-        return deptList;
-    }
-
-    /**
-     * 新增部门
-     */
-    @GetMapping("/add/{parentId}")
-    public String add(@PathVariable("parentId") Long parentId, ModelMap mmap)
-    {
-        if (!getSysUser().isAdmin())
-        {
-            parentId = getSysUser().getDeptId();
-        }
-        mmap.put("dept", deptService.selectDeptById(parentId));
-        return prefix + "/add";
-    }
-
-    /**
-     * 新增保存部门
-     */
-    @Log(title = "部门管理", businessType = BusinessType.INSERT)
-    @RequiresPermissions("system:dept:add")
-    @PostMapping("/add")
-    @ResponseBody
-    public AjaxResult addSave(@Validated SysDept dept)
-    {
-        if (UserConstants.DEPT_NAME_NOT_UNIQUE.equals(deptService.checkDeptNameUnique(dept)))
-        {
-            return error("新增部门'" + dept.getDeptName() + "'失败,部门名称已存在");
-        }
-        dept.setCreateBy(getLoginName());
-        return toAjax(deptService.insertDept(dept));
-    }
-
-    /**
-     * 修改部门
-     */
-    @RequiresPermissions("system:dept:edit")
-    @GetMapping("/edit/{deptId}")
-    public String edit(@PathVariable("deptId") Long deptId, ModelMap mmap)
-    {
-        deptService.checkDeptDataScope(deptId);
-        SysDept dept = deptService.selectDeptById(deptId);
-        if (StringUtils.isNotNull(dept) && 100L == deptId)
-        {
-            dept.setParentName("无");
-        }
-        mmap.put("dept", dept);
-        return prefix + "/edit";
-    }
-
-    /**
-     * 修改保存部门
-     */
-    @Log(title = "部门管理", businessType = BusinessType.UPDATE)
-    @RequiresPermissions("system:dept:edit")
-    @PostMapping("/edit")
-    @ResponseBody
-    public AjaxResult editSave(@Validated SysDept dept)
-    {
-        Long deptId = dept.getDeptId();
-        deptService.checkDeptDataScope(deptId);
-        if (UserConstants.DEPT_NAME_NOT_UNIQUE.equals(deptService.checkDeptNameUnique(dept)))
-        {
-            return error("修改部门'" + dept.getDeptName() + "'失败,部门名称已存在");
-        }
-        else if (dept.getParentId().equals(deptId))
-        {
-            return error("修改部门'" + dept.getDeptName() + "'失败,上级部门不能是自己");
-        }
-        else if (StringUtils.equals(UserConstants.DEPT_DISABLE, dept.getStatus()) && deptService.selectNormalChildrenDeptById(deptId) > 0)
-        {
-            return AjaxResult.error("该部门包含未停用的子部门!");
-        }
-        dept.setUpdateBy(getLoginName());
-        return toAjax(deptService.updateDept(dept));
-    }
-
-    /**
-     * 删除
-     */
-    @Log(title = "部门管理", businessType = BusinessType.DELETE)
-    @RequiresPermissions("system:dept:remove")
-    @GetMapping("/remove/{deptId}")
-    @ResponseBody
-    public AjaxResult remove(@PathVariable("deptId") Long deptId)
-    {
-        if (deptService.selectDeptCount(deptId) > 0)
-        {
-            return AjaxResult.warn("存在下级部门,不允许删除");
-        }
-        if (deptService.checkDeptExistUser(deptId))
-        {
-            return AjaxResult.warn("部门存在用户,不允许删除");
-        }
-        deptService.checkDeptDataScope(deptId);
-        return toAjax(deptService.deleteDeptById(deptId));
-    }
-
-    /**
-     * 校验部门名称
-     */
-    @PostMapping("/checkDeptNameUnique")
-    @ResponseBody
-    public String checkDeptNameUnique(SysDept dept)
-    {
-        return deptService.checkDeptNameUnique(dept);
-    }
-
-    /**
-     * 选择部门树
-     * 
-     * @param deptId 部门ID
-     * @param excludeId 排除ID
-     */
-    @GetMapping(value = { "/selectDeptTree/{deptId}", "/selectDeptTree/{deptId}/{excludeId}" })
-    public String selectDeptTree(@PathVariable("deptId") Long deptId,
-            @PathVariable(value = "excludeId", required = false) Long excludeId, ModelMap mmap)
-    {
-        mmap.put("dept", deptService.selectDeptById(deptId));
-        mmap.put("excludeId", excludeId);
-        return prefix + "/tree";
-    }
-
-    /**
-     * 加载部门列表树(排除下级)
-     */
-    @GetMapping("/treeData/{excludeId}")
-    @ResponseBody
-    public List<Ztree> treeDataExcludeChild(@PathVariable(value = "excludeId", required = false) Long excludeId)
-    {
-        SysDept dept = new SysDept();
-        dept.setExcludeId(excludeId);
-        List<Ztree> ztrees = deptService.selectDeptTreeExcludeChild(dept);
-        return ztrees;
-    }
-}

+ 0 - 121
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDictDataController.java

@@ -1,121 +0,0 @@
-package com.ruoyi.web.controller.system;
-
-import java.util.List;
-import org.apache.shiro.authz.annotation.RequiresPermissions;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Controller;
-import org.springframework.ui.ModelMap;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.ResponseBody;
-import com.ruoyi.common.annotation.Log;
-import com.ruoyi.common.core.controller.BaseController;
-import com.ruoyi.common.core.domain.AjaxResult;
-import com.ruoyi.common.core.domain.entity.SysDictData;
-import com.ruoyi.common.core.page.TableDataInfo;
-import com.ruoyi.common.enums.BusinessType;
-import com.ruoyi.common.utils.poi.ExcelUtil;
-import com.ruoyi.system.service.ISysDictDataService;
-
-/**
- * 数据字典信息
- * 
- * @author ruoyi
- */
-@Controller
-@RequestMapping("/system/dict/data")
-public class SysDictDataController extends BaseController
-{
-    private String prefix = "system/dict/data";
-
-    @Autowired
-    private ISysDictDataService dictDataService;
-
-    @RequiresPermissions("system:dict:view")
-    @GetMapping()
-    public String dictData()
-    {
-        return prefix + "/data";
-    }
-
-    @PostMapping("/list")
-    @RequiresPermissions("system:dict:list")
-    @ResponseBody
-    public TableDataInfo list(SysDictData dictData)
-    {
-        startPage();
-        List<SysDictData> list = dictDataService.selectDictDataList(dictData);
-        return getDataTable(list);
-    }
-
-    @Log(title = "字典数据", businessType = BusinessType.EXPORT)
-    @RequiresPermissions("system:dict:export")
-    @PostMapping("/export")
-    @ResponseBody
-    public AjaxResult export(SysDictData dictData)
-    {
-        List<SysDictData> list = dictDataService.selectDictDataList(dictData);
-        ExcelUtil<SysDictData> util = new ExcelUtil<SysDictData>(SysDictData.class);
-        return util.exportExcel(list, "字典数据");
-    }
-
-    /**
-     * 新增字典类型
-     */
-    @GetMapping("/add/{dictType}")
-    public String add(@PathVariable("dictType") String dictType, ModelMap mmap)
-    {
-        mmap.put("dictType", dictType);
-        return prefix + "/add";
-    }
-
-    /**
-     * 新增保存字典类型
-     */
-    @Log(title = "字典数据", businessType = BusinessType.INSERT)
-    @RequiresPermissions("system:dict:add")
-    @PostMapping("/add")
-    @ResponseBody
-    public AjaxResult addSave(@Validated SysDictData dict)
-    {
-        dict.setCreateBy(getLoginName());
-        return toAjax(dictDataService.insertDictData(dict));
-    }
-
-    /**
-     * 修改字典类型
-     */
-    @RequiresPermissions("system:dict:edit")
-    @GetMapping("/edit/{dictCode}")
-    public String edit(@PathVariable("dictCode") Long dictCode, ModelMap mmap)
-    {
-        mmap.put("dict", dictDataService.selectDictDataById(dictCode));
-        return prefix + "/edit";
-    }
-
-    /**
-     * 修改保存字典类型
-     */
-    @Log(title = "字典数据", businessType = BusinessType.UPDATE)
-    @RequiresPermissions("system:dict:edit")
-    @PostMapping("/edit")
-    @ResponseBody
-    public AjaxResult editSave(@Validated SysDictData dict)
-    {
-        dict.setUpdateBy(getLoginName());
-        return toAjax(dictDataService.updateDictData(dict));
-    }
-
-    @Log(title = "字典数据", businessType = BusinessType.DELETE)
-    @RequiresPermissions("system:dict:remove")
-    @PostMapping("/remove")
-    @ResponseBody
-    public AjaxResult remove(String ids)
-    {
-        dictDataService.deleteDictDataByIds(ids);
-        return success();
-    }
-}

+ 0 - 189
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDictTypeController.java

@@ -1,189 +0,0 @@
-package com.ruoyi.web.controller.system;
-
-import java.util.List;
-import org.apache.shiro.authz.annotation.RequiresPermissions;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Controller;
-import org.springframework.ui.ModelMap;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.ResponseBody;
-import com.ruoyi.common.annotation.Log;
-import com.ruoyi.common.constant.UserConstants;
-import com.ruoyi.common.core.controller.BaseController;
-import com.ruoyi.common.core.domain.AjaxResult;
-import com.ruoyi.common.core.domain.Ztree;
-import com.ruoyi.common.core.domain.entity.SysDictType;
-import com.ruoyi.common.core.page.TableDataInfo;
-import com.ruoyi.common.enums.BusinessType;
-import com.ruoyi.common.utils.poi.ExcelUtil;
-import com.ruoyi.system.service.ISysDictTypeService;
-
-/**
- * 数据字典信息
- * 
- * @author ruoyi
- */
-@Controller
-@RequestMapping("/system/dict")
-public class SysDictTypeController extends BaseController
-{
-    private String prefix = "system/dict/type";
-
-    @Autowired
-    private ISysDictTypeService dictTypeService;
-
-    @RequiresPermissions("system:dict:view")
-    @GetMapping()
-    public String dictType()
-    {
-        return prefix + "/type";
-    }
-
-    @PostMapping("/list")
-    @RequiresPermissions("system:dict:list")
-    @ResponseBody
-    public TableDataInfo list(SysDictType dictType)
-    {
-        startPage();
-        List<SysDictType> list = dictTypeService.selectDictTypeList(dictType);
-        return getDataTable(list);
-    }
-
-    @Log(title = "字典类型", businessType = BusinessType.EXPORT)
-    @RequiresPermissions("system:dict:export")
-    @PostMapping("/export")
-    @ResponseBody
-    public AjaxResult export(SysDictType dictType)
-    {
-
-        List<SysDictType> list = dictTypeService.selectDictTypeList(dictType);
-        ExcelUtil<SysDictType> util = new ExcelUtil<SysDictType>(SysDictType.class);
-        return util.exportExcel(list, "字典类型");
-    }
-
-    /**
-     * 新增字典类型
-     */
-    @GetMapping("/add")
-    public String add()
-    {
-        return prefix + "/add";
-    }
-
-    /**
-     * 新增保存字典类型
-     */
-    @Log(title = "字典类型", businessType = BusinessType.INSERT)
-    @RequiresPermissions("system:dict:add")
-    @PostMapping("/add")
-    @ResponseBody
-    public AjaxResult addSave(@Validated SysDictType dict)
-    {
-        if (UserConstants.DICT_TYPE_NOT_UNIQUE.equals(dictTypeService.checkDictTypeUnique(dict)))
-        {
-            return error("新增字典'" + dict.getDictName() + "'失败,字典类型已存在");
-        }
-        dict.setCreateBy(getLoginName());
-        return toAjax(dictTypeService.insertDictType(dict));
-    }
-
-    /**
-     * 修改字典类型
-     */
-    @RequiresPermissions("system:dict:edit")
-    @GetMapping("/edit/{dictId}")
-    public String edit(@PathVariable("dictId") Long dictId, ModelMap mmap)
-    {
-        mmap.put("dict", dictTypeService.selectDictTypeById(dictId));
-        return prefix + "/edit";
-    }
-
-    /**
-     * 修改保存字典类型
-     */
-    @Log(title = "字典类型", businessType = BusinessType.UPDATE)
-    @RequiresPermissions("system:dict:edit")
-    @PostMapping("/edit")
-    @ResponseBody
-    public AjaxResult editSave(@Validated SysDictType dict)
-    {
-        if (UserConstants.DICT_TYPE_NOT_UNIQUE.equals(dictTypeService.checkDictTypeUnique(dict)))
-        {
-            return error("修改字典'" + dict.getDictName() + "'失败,字典类型已存在");
-        }
-        dict.setUpdateBy(getLoginName());
-        return toAjax(dictTypeService.updateDictType(dict));
-    }
-
-    @Log(title = "字典类型", businessType = BusinessType.DELETE)
-    @RequiresPermissions("system:dict:remove")
-    @PostMapping("/remove")
-    @ResponseBody
-    public AjaxResult remove(String ids)
-    {
-        dictTypeService.deleteDictTypeByIds(ids);
-        return success();
-    }
-
-    /**
-     * 刷新字典缓存
-     */
-    @RequiresPermissions("system:dict:remove")
-    @Log(title = "字典类型", businessType = BusinessType.CLEAN)
-    @GetMapping("/refreshCache")
-    @ResponseBody
-    public AjaxResult refreshCache()
-    {
-        dictTypeService.resetDictCache();
-        return success();
-    }
-
-    /**
-     * 查询字典详细
-     */
-    @RequiresPermissions("system:dict:list")
-    @GetMapping("/detail/{dictId}")
-    public String detail(@PathVariable("dictId") Long dictId, ModelMap mmap)
-    {
-        mmap.put("dict", dictTypeService.selectDictTypeById(dictId));
-        mmap.put("dictList", dictTypeService.selectDictTypeAll());
-        return "system/dict/data/data";
-    }
-
-    /**
-     * 校验字典类型
-     */
-    @PostMapping("/checkDictTypeUnique")
-    @ResponseBody
-    public String checkDictTypeUnique(SysDictType dictType)
-    {
-        return dictTypeService.checkDictTypeUnique(dictType);
-    }
-
-    /**
-     * 选择字典树
-     */
-    @GetMapping("/selectDictTree/{columnId}/{dictType}")
-    public String selectDeptTree(@PathVariable("columnId") Long columnId, @PathVariable("dictType") String dictType,
-            ModelMap mmap)
-    {
-        mmap.put("columnId", columnId);
-        mmap.put("dict", dictTypeService.selectDictTypeByType(dictType));
-        return prefix + "/tree";
-    }
-
-    /**
-     * 加载字典列表树
-     */
-    @GetMapping("/treeData")
-    @ResponseBody
-    public List<Ztree> treeData()
-    {
-        List<Ztree> ztrees = dictTypeService.selectDictTree(new SysDictType());
-        return ztrees;
-    }
-}

+ 0 - 178
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysIndexController.java

@@ -1,178 +0,0 @@
-package com.ruoyi.web.controller.system;
-
-import java.util.Date;
-import java.util.List;
-import javax.servlet.http.Cookie;
-import javax.servlet.http.HttpServletResponse;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Controller;
-import org.springframework.ui.ModelMap;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.ResponseBody;
-import com.ruoyi.common.config.RuoYiConfig;
-import com.ruoyi.common.constant.ShiroConstants;
-import com.ruoyi.common.core.controller.BaseController;
-import com.ruoyi.common.core.domain.AjaxResult;
-import com.ruoyi.common.core.domain.entity.SysMenu;
-import com.ruoyi.common.core.domain.entity.SysUser;
-import com.ruoyi.common.core.text.Convert;
-import com.ruoyi.common.utils.CookieUtils;
-import com.ruoyi.common.utils.DateUtils;
-import com.ruoyi.common.utils.ServletUtils;
-import com.ruoyi.common.utils.StringUtils;
-import com.ruoyi.framework.shiro.service.SysPasswordService;
-import com.ruoyi.system.service.ISysConfigService;
-import com.ruoyi.system.service.ISysMenuService;
-
-/**
- * 首页 业务处理
- * 
- * @author ruoyi
- */
-@Controller
-public class SysIndexController extends BaseController
-{
-    @Autowired
-    private ISysMenuService menuService;
-
-    @Autowired
-    private ISysConfigService configService;
-
-    @Autowired
-    private SysPasswordService passwordService;
-
-    // 系统首页
-    @GetMapping("/index")
-    public String index(ModelMap mmap)
-    {
-        // 取身份信息
-        SysUser user = getSysUser();
-        // 根据用户id取出菜单
-        List<SysMenu> menus = menuService.selectMenusByUser(user);
-        mmap.put("menus", menus);
-        mmap.put("user", user);
-        mmap.put("sideTheme", configService.selectConfigByKey("sys.index.sideTheme"));
-        mmap.put("skinName", configService.selectConfigByKey("sys.index.skinName"));
-        Boolean footer = Convert.toBool(configService.selectConfigByKey("sys.index.footer"), true);
-        Boolean tagsView = Convert.toBool(configService.selectConfigByKey("sys.index.tagsView"), true);
-        mmap.put("footer", footer);
-        mmap.put("tagsView", tagsView);
-        mmap.put("mainClass", contentMainClass(footer, tagsView));
-        mmap.put("copyrightYear", RuoYiConfig.getCopyrightYear());
-        mmap.put("demoEnabled", RuoYiConfig.isDemoEnabled());
-        mmap.put("isDefaultModifyPwd", initPasswordIsModify(user.getPwdUpdateDate()));
-        mmap.put("isPasswordExpired", passwordIsExpiration(user.getPwdUpdateDate()));
-        mmap.put("isMobile", ServletUtils.checkAgentIsMobile(ServletUtils.getRequest().getHeader("User-Agent")));
-
-        // 菜单导航显示风格
-        String menuStyle = configService.selectConfigByKey("sys.index.menuStyle");
-        // 移动端,默认使左侧导航菜单,否则取默认配置
-        String indexStyle = ServletUtils.checkAgentIsMobile(ServletUtils.getRequest().getHeader("User-Agent")) ? "index" : menuStyle;
-
-        // 优先Cookie配置导航菜单
-        Cookie[] cookies = ServletUtils.getRequest().getCookies();
-        for (Cookie cookie : cookies)
-        {
-            if (StringUtils.isNotEmpty(cookie.getName()) && "nav-style".equalsIgnoreCase(cookie.getName()))
-            {
-                indexStyle = cookie.getValue();
-                break;
-            }
-        }
-        String webIndex = "topnav".equalsIgnoreCase(indexStyle) ? "index-topnav" : "index";
-        return webIndex;
-    }
-
-    // 锁定屏幕
-    @GetMapping("/lockscreen")
-    public String lockscreen(ModelMap mmap)
-    {
-        mmap.put("user", getSysUser());
-        ServletUtils.getSession().setAttribute(ShiroConstants.LOCK_SCREEN, true);
-        return "lock";
-    }
-
-    // 解锁屏幕
-    @PostMapping("/unlockscreen")
-    @ResponseBody
-    public AjaxResult unlockscreen(String password)
-    {
-        SysUser user = getSysUser();
-        if (StringUtils.isNull(user))
-        {
-            return AjaxResult.error("服务器超时,请重新登录");
-        }
-        if (passwordService.matches(user, password))
-        {
-            ServletUtils.getSession().removeAttribute(ShiroConstants.LOCK_SCREEN);
-            return AjaxResult.success();
-        }
-        return AjaxResult.error("密码不正确,请重新输入。");
-    }
-
-    // 切换主题
-    @GetMapping("/system/switchSkin")
-    public String switchSkin()
-    {
-        return "skin";
-    }
-
-    // 切换菜单
-    @GetMapping("/system/menuStyle/{style}")
-    public void menuStyle(@PathVariable String style, HttpServletResponse response)
-    {
-        CookieUtils.setCookie(response, "nav-style", style);
-    }
-
-    // 系统介绍
-    @GetMapping("/system/main")
-    public String main(ModelMap mmap)
-    {
-        mmap.put("version", RuoYiConfig.getVersion());
-        return "main";
-    }
-
-    // content-main class
-    public String contentMainClass(Boolean footer, Boolean tagsView)
-    {
-        if (!footer && !tagsView)
-        {
-            return "tagsview-footer-hide";
-        }
-        else if (!footer)
-        {
-            return "footer-hide";
-        }
-        else if (!tagsView)
-        {
-            return "tagsview-hide";
-        }
-        return StringUtils.EMPTY;
-    }
-
-    // 检查初始密码是否提醒修改
-    public boolean initPasswordIsModify(Date pwdUpdateDate)
-    {
-        Integer initPasswordModify = Convert.toInt(configService.selectConfigByKey("sys.account.initPasswordModify"));
-        return initPasswordModify != null && initPasswordModify == 1 && pwdUpdateDate == null;
-    }
-
-    // 检查密码是否过期
-    public boolean passwordIsExpiration(Date pwdUpdateDate)
-    {
-        Integer passwordValidateDays = Convert.toInt(configService.selectConfigByKey("sys.account.passwordValidateDays"));
-        if (passwordValidateDays != null && passwordValidateDays > 0)
-        {
-            if (StringUtils.isNull(pwdUpdateDate))
-            {
-                // 如果从未修改过初始密码,直接提醒过期
-                return true;
-            }
-            Date nowDate = DateUtils.getNowDate();
-            return DateUtils.differentDaysByMillisecond(nowDate, pwdUpdateDate) > passwordValidateDays;
-        }
-        return false;
-    }
-}

+ 0 - 82
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java

@@ -1,82 +0,0 @@
-package com.ruoyi.web.controller.system;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import org.apache.shiro.SecurityUtils;
-import org.apache.shiro.authc.AuthenticationException;
-import org.apache.shiro.authc.UsernamePasswordToken;
-import org.apache.shiro.subject.Subject;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Controller;
-import org.springframework.ui.ModelMap;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.ResponseBody;
-import com.ruoyi.common.core.controller.BaseController;
-import com.ruoyi.common.core.domain.AjaxResult;
-import com.ruoyi.common.core.text.Convert;
-import com.ruoyi.common.utils.ServletUtils;
-import com.ruoyi.common.utils.StringUtils;
-import com.ruoyi.framework.web.service.ConfigService;
-
-/**
- * 登录验证
- * 
- * @author ruoyi
- */
-@Controller
-public class SysLoginController extends BaseController
-{
-    /**
-     * 是否开启记住我功能
-     */
-    @Value("${shiro.rememberMe.enabled: false}")
-    private boolean rememberMe;
-
-    @Autowired
-    private ConfigService configService;
-
-    @GetMapping("/login")
-    public String login(HttpServletRequest request, HttpServletResponse response, ModelMap mmap)
-    {
-        // 如果是Ajax请求,返回Json字符串。
-        if (ServletUtils.isAjaxRequest(request))
-        {
-            return ServletUtils.renderString(response, "{\"code\":\"1\",\"msg\":\"未登录或登录超时。请重新登录\"}");
-        }
-        // 是否开启记住我
-        mmap.put("isRemembered", rememberMe);
-        // 是否开启用户注册
-        mmap.put("isAllowRegister", Convert.toBool(configService.getKey("sys.account.registerUser"), false));
-        return "login";
-    }
-
-    @PostMapping("/login")
-    @ResponseBody
-    public AjaxResult ajaxLogin(String username, String password, Boolean rememberMe)
-    {
-        UsernamePasswordToken token = new UsernamePasswordToken(username, password, rememberMe);
-        Subject subject = SecurityUtils.getSubject();
-        try
-        {
-            subject.login(token);
-            return success();
-        }
-        catch (AuthenticationException e)
-        {
-            String msg = "用户或密码错误";
-            if (StringUtils.isNotEmpty(e.getMessage()))
-            {
-                msg = e.getMessage();
-            }
-            return error(msg);
-        }
-    }
-
-    @GetMapping("/unauth")
-    public String unauth()
-    {
-        return "error/unauth";
-    }
-}

+ 0 - 198
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysMenuController.java

@@ -1,198 +0,0 @@
-package com.ruoyi.web.controller.system;
-
-import java.util.List;
-import org.apache.shiro.authz.annotation.RequiresPermissions;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Controller;
-import org.springframework.ui.ModelMap;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.ResponseBody;
-import com.ruoyi.common.annotation.Log;
-import com.ruoyi.common.constant.UserConstants;
-import com.ruoyi.common.core.controller.BaseController;
-import com.ruoyi.common.core.domain.AjaxResult;
-import com.ruoyi.common.core.domain.Ztree;
-import com.ruoyi.common.core.domain.entity.SysMenu;
-import com.ruoyi.common.core.domain.entity.SysRole;
-import com.ruoyi.common.enums.BusinessType;
-import com.ruoyi.common.utils.ShiroUtils;
-import com.ruoyi.framework.shiro.util.AuthorizationUtils;
-import com.ruoyi.system.service.ISysMenuService;
-
-/**
- * 菜单信息
- * 
- * @author ruoyi
- */
-@Controller
-@RequestMapping("/system/menu")
-public class SysMenuController extends BaseController
-{
-    private String prefix = "system/menu";
-
-    @Autowired
-    private ISysMenuService menuService;
-
-    @RequiresPermissions("system:menu:view")
-    @GetMapping()
-    public String menu()
-    {
-        return prefix + "/menu";
-    }
-
-    @RequiresPermissions("system:menu:list")
-    @PostMapping("/list")
-    @ResponseBody
-    public List<SysMenu> list(SysMenu menu)
-    {
-        Long userId = ShiroUtils.getUserId();
-        List<SysMenu> menuList = menuService.selectMenuList(menu, userId);
-        return menuList;
-    }
-
-    /**
-     * 删除菜单
-     */
-    @Log(title = "菜单管理", businessType = BusinessType.DELETE)
-    @RequiresPermissions("system:menu:remove")
-    @GetMapping("/remove/{menuId}")
-    @ResponseBody
-    public AjaxResult remove(@PathVariable("menuId") Long menuId)
-    {
-        if (menuService.selectCountMenuByParentId(menuId) > 0)
-        {
-            return AjaxResult.warn("存在子菜单,不允许删除");
-        }
-        if (menuService.selectCountRoleMenuByMenuId(menuId) > 0)
-        {
-            return AjaxResult.warn("菜单已分配,不允许删除");
-        }
-        AuthorizationUtils.clearAllCachedAuthorizationInfo();
-        return toAjax(menuService.deleteMenuById(menuId));
-    }
-
-    /**
-     * 新增
-     */
-    @GetMapping("/add/{parentId}")
-    public String add(@PathVariable("parentId") Long parentId, ModelMap mmap)
-    {
-        SysMenu menu = null;
-        if (0L != parentId)
-        {
-            menu = menuService.selectMenuById(parentId);
-        }
-        else
-        {
-            menu = new SysMenu();
-            menu.setMenuId(0L);
-            menu.setMenuName("主目录");
-        }
-        mmap.put("menu", menu);
-        return prefix + "/add";
-    }
-
-    /**
-     * 新增保存菜单
-     */
-    @Log(title = "菜单管理", businessType = BusinessType.INSERT)
-    @RequiresPermissions("system:menu:add")
-    @PostMapping("/add")
-    @ResponseBody
-    public AjaxResult addSave(@Validated SysMenu menu)
-    {
-        if (UserConstants.MENU_NAME_NOT_UNIQUE.equals(menuService.checkMenuNameUnique(menu)))
-        {
-            return error("新增菜单'" + menu.getMenuName() + "'失败,菜单名称已存在");
-        }
-        menu.setCreateBy(getLoginName());
-        AuthorizationUtils.clearAllCachedAuthorizationInfo();
-        return toAjax(menuService.insertMenu(menu));
-    }
-
-    /**
-     * 修改菜单
-     */
-    @RequiresPermissions("system:menu:edit")
-    @GetMapping("/edit/{menuId}")
-    public String edit(@PathVariable("menuId") Long menuId, ModelMap mmap)
-    {
-        mmap.put("menu", menuService.selectMenuById(menuId));
-        return prefix + "/edit";
-    }
-
-    /**
-     * 修改保存菜单
-     */
-    @Log(title = "菜单管理", businessType = BusinessType.UPDATE)
-    @RequiresPermissions("system:menu:edit")
-    @PostMapping("/edit")
-    @ResponseBody
-    public AjaxResult editSave(@Validated SysMenu menu)
-    {
-        if (UserConstants.MENU_NAME_NOT_UNIQUE.equals(menuService.checkMenuNameUnique(menu)))
-        {
-            return error("修改菜单'" + menu.getMenuName() + "'失败,菜单名称已存在");
-        }
-        menu.setUpdateBy(getLoginName());
-        AuthorizationUtils.clearAllCachedAuthorizationInfo();
-        return toAjax(menuService.updateMenu(menu));
-    }
-
-    /**
-     * 选择菜单图标
-     */
-    @GetMapping("/icon")
-    public String icon()
-    {
-        return prefix + "/icon";
-    }
-
-    /**
-     * 校验菜单名称
-     */
-    @PostMapping("/checkMenuNameUnique")
-    @ResponseBody
-    public String checkMenuNameUnique(SysMenu menu)
-    {
-        return menuService.checkMenuNameUnique(menu);
-    }
-
-    /**
-     * 加载角色菜单列表树
-     */
-    @GetMapping("/roleMenuTreeData")
-    @ResponseBody
-    public List<Ztree> roleMenuTreeData(SysRole role)
-    {
-        Long userId = ShiroUtils.getUserId();
-        List<Ztree> ztrees = menuService.roleMenuTreeData(role, userId);
-        return ztrees;
-    }
-
-    /**
-     * 加载所有菜单列表树
-     */
-    @GetMapping("/menuTreeData")
-    @ResponseBody
-    public List<Ztree> menuTreeData()
-    {
-        Long userId = ShiroUtils.getUserId();
-        List<Ztree> ztrees = menuService.menuTreeData(userId);
-        return ztrees;
-    }
-
-    /**
-     * 选择菜单树
-     */
-    @GetMapping("/selectMenuTree/{menuId}")
-    public String selectMenuTree(@PathVariable("menuId") Long menuId, ModelMap mmap)
-    {
-        mmap.put("menu", menuService.selectMenuById(menuId));
-        return prefix + "/tree";
-    }
-}

+ 0 - 113
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysNoticeController.java

@@ -1,113 +0,0 @@
-package com.ruoyi.web.controller.system;
-
-import java.util.List;
-import org.apache.shiro.authz.annotation.RequiresPermissions;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Controller;
-import org.springframework.ui.ModelMap;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.ResponseBody;
-import com.ruoyi.common.annotation.Log;
-import com.ruoyi.common.core.controller.BaseController;
-import com.ruoyi.common.core.domain.AjaxResult;
-import com.ruoyi.common.core.page.TableDataInfo;
-import com.ruoyi.common.enums.BusinessType;
-import com.ruoyi.system.domain.SysNotice;
-import com.ruoyi.system.service.ISysNoticeService;
-
-/**
- * 公告 信息操作处理
- * 
- * @author ruoyi
- */
-@Controller
-@RequestMapping("/system/notice")
-public class SysNoticeController extends BaseController
-{
-    private String prefix = "system/notice";
-
-    @Autowired
-    private ISysNoticeService noticeService;
-
-    @RequiresPermissions("system:notice:view")
-    @GetMapping()
-    public String notice()
-    {
-        return prefix + "/notice";
-    }
-
-    /**
-     * 查询公告列表
-     */
-    @RequiresPermissions("system:notice:list")
-    @PostMapping("/list")
-    @ResponseBody
-    public TableDataInfo list(SysNotice notice)
-    {
-        startPage();
-        List<SysNotice> list = noticeService.selectNoticeList(notice);
-        return getDataTable(list);
-    }
-
-    /**
-     * 新增公告
-     */
-    @GetMapping("/add")
-    public String add()
-    {
-        return prefix + "/add";
-    }
-
-    /**
-     * 新增保存公告
-     */
-    @RequiresPermissions("system:notice:add")
-    @Log(title = "通知公告", businessType = BusinessType.INSERT)
-    @PostMapping("/add")
-    @ResponseBody
-    public AjaxResult addSave(@Validated SysNotice notice)
-    {
-        notice.setCreateBy(getLoginName());
-        return toAjax(noticeService.insertNotice(notice));
-    }
-
-    /**
-     * 修改公告
-     */
-    @RequiresPermissions("system:notice:edit")
-    @GetMapping("/edit/{noticeId}")
-    public String edit(@PathVariable("noticeId") Long noticeId, ModelMap mmap)
-    {
-        mmap.put("notice", noticeService.selectNoticeById(noticeId));
-        return prefix + "/edit";
-    }
-
-    /**
-     * 修改保存公告
-     */
-    @RequiresPermissions("system:notice:edit")
-    @Log(title = "通知公告", businessType = BusinessType.UPDATE)
-    @PostMapping("/edit")
-    @ResponseBody
-    public AjaxResult editSave(@Validated SysNotice notice)
-    {
-        notice.setUpdateBy(getLoginName());
-        return toAjax(noticeService.updateNotice(notice));
-    }
-
-    /**
-     * 删除公告
-     */
-    @RequiresPermissions("system:notice:remove")
-    @Log(title = "通知公告", businessType = BusinessType.DELETE)
-    @PostMapping("/remove")
-    @ResponseBody
-    public AjaxResult remove(String ids)
-    {
-        return toAjax(noticeService.deleteNoticeByIds(ids));
-    }
-}

+ 0 - 163
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysPostController.java

@@ -1,163 +0,0 @@
-package com.ruoyi.web.controller.system;
-
-import java.util.List;
-import org.apache.shiro.authz.annotation.RequiresPermissions;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Controller;
-import org.springframework.ui.ModelMap;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.ResponseBody;
-import com.ruoyi.common.annotation.Log;
-import com.ruoyi.common.constant.UserConstants;
-import com.ruoyi.common.core.controller.BaseController;
-import com.ruoyi.common.core.domain.AjaxResult;
-import com.ruoyi.common.core.page.TableDataInfo;
-import com.ruoyi.common.enums.BusinessType;
-import com.ruoyi.common.utils.poi.ExcelUtil;
-import com.ruoyi.system.domain.SysPost;
-import com.ruoyi.system.service.ISysPostService;
-
-/**
- * 岗位信息操作处理
- * 
- * @author ruoyi
- */
-@Controller
-@RequestMapping("/system/post")
-public class SysPostController extends BaseController
-{
-    private String prefix = "system/post";
-
-    @Autowired
-    private ISysPostService postService;
-
-    @RequiresPermissions("system:post:view")
-    @GetMapping()
-    public String operlog()
-    {
-        return prefix + "/post";
-    }
-
-    @RequiresPermissions("system:post:list")
-    @PostMapping("/list")
-    @ResponseBody
-    public TableDataInfo list(SysPost post)
-    {
-        startPage();
-        List<SysPost> list = postService.selectPostList(post);
-        return getDataTable(list);
-    }
-
-    @Log(title = "岗位管理", businessType = BusinessType.EXPORT)
-    @RequiresPermissions("system:post:export")
-    @PostMapping("/export")
-    @ResponseBody
-    public AjaxResult export(SysPost post)
-    {
-        List<SysPost> list = postService.selectPostList(post);
-        ExcelUtil<SysPost> util = new ExcelUtil<SysPost>(SysPost.class);
-        return util.exportExcel(list, "岗位数据");
-    }
-
-    @RequiresPermissions("system:post:remove")
-    @Log(title = "岗位管理", businessType = BusinessType.DELETE)
-    @PostMapping("/remove")
-    @ResponseBody
-    public AjaxResult remove(String ids)
-    {
-        try
-        {
-            return toAjax(postService.deletePostByIds(ids));
-        }
-        catch (Exception e)
-        {
-            return error(e.getMessage());
-        }
-    }
-
-    /**
-     * 新增岗位
-     */
-    @GetMapping("/add")
-    public String add()
-    {
-        return prefix + "/add";
-    }
-
-    /**
-     * 新增保存岗位
-     */
-    @RequiresPermissions("system:post:add")
-    @Log(title = "岗位管理", businessType = BusinessType.INSERT)
-    @PostMapping("/add")
-    @ResponseBody
-    public AjaxResult addSave(@Validated SysPost post)
-    {
-        if (UserConstants.POST_NAME_NOT_UNIQUE.equals(postService.checkPostNameUnique(post)))
-        {
-            return error("新增岗位'" + post.getPostName() + "'失败,岗位名称已存在");
-        }
-        else if (UserConstants.POST_CODE_NOT_UNIQUE.equals(postService.checkPostCodeUnique(post)))
-        {
-            return error("新增岗位'" + post.getPostName() + "'失败,岗位编码已存在");
-        }
-        post.setCreateBy(getLoginName());
-        return toAjax(postService.insertPost(post));
-    }
-
-    /**
-     * 修改岗位
-     */
-    @RequiresPermissions("system:post:edit")
-    @GetMapping("/edit/{postId}")
-    public String edit(@PathVariable("postId") Long postId, ModelMap mmap)
-    {
-        mmap.put("post", postService.selectPostById(postId));
-        return prefix + "/edit";
-    }
-
-    /**
-     * 修改保存岗位
-     */
-    @RequiresPermissions("system:post:edit")
-    @Log(title = "岗位管理", businessType = BusinessType.UPDATE)
-    @PostMapping("/edit")
-    @ResponseBody
-    public AjaxResult editSave(@Validated SysPost post)
-    {
-        if (UserConstants.POST_NAME_NOT_UNIQUE.equals(postService.checkPostNameUnique(post)))
-        {
-            return error("修改岗位'" + post.getPostName() + "'失败,岗位名称已存在");
-        }
-        else if (UserConstants.POST_CODE_NOT_UNIQUE.equals(postService.checkPostCodeUnique(post)))
-        {
-            return error("修改岗位'" + post.getPostName() + "'失败,岗位编码已存在");
-        }
-        post.setUpdateBy(getLoginName());
-        return toAjax(postService.updatePost(post));
-    }
-
-    /**
-     * 校验岗位名称
-     */
-    @PostMapping("/checkPostNameUnique")
-    @ResponseBody
-    public String checkPostNameUnique(SysPost post)
-    {
-        return postService.checkPostNameUnique(post);
-    }
-
-    /**
-     * 校验岗位编码
-     */
-    @PostMapping("/checkPostCodeUnique")
-    @ResponseBody
-    public String checkPostCodeUnique(SysPost post)
-    {
-        return postService.checkPostCodeUnique(post);
-    }
-}

+ 0 - 184
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysProfileController.java

@@ -1,184 +0,0 @@
-package com.ruoyi.web.controller.system;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Controller;
-import org.springframework.ui.ModelMap;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.ResponseBody;
-import org.springframework.web.multipart.MultipartFile;
-import com.ruoyi.common.annotation.Log;
-import com.ruoyi.common.config.RuoYiConfig;
-import com.ruoyi.common.constant.UserConstants;
-import com.ruoyi.common.core.controller.BaseController;
-import com.ruoyi.common.core.domain.AjaxResult;
-import com.ruoyi.common.core.domain.entity.SysUser;
-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.file.FileUploadUtils;
-import com.ruoyi.common.utils.file.MimeTypeUtils;
-import com.ruoyi.framework.shiro.service.SysPasswordService;
-import com.ruoyi.system.service.ISysUserService;
-
-/**
- * 个人信息 业务处理
- * 
- * @author ruoyi
- */
-@Controller
-@RequestMapping("/system/user/profile")
-public class SysProfileController extends BaseController
-{
-    private static final Logger log = LoggerFactory.getLogger(SysProfileController.class);
-
-    private String prefix = "system/user/profile";
-
-    @Autowired
-    private ISysUserService userService;
-    
-    @Autowired
-    private SysPasswordService passwordService;
-
-    /**
-     * 个人信息
-     */
-    @GetMapping()
-    public String profile(ModelMap mmap)
-    {
-        SysUser user = getSysUser();
-        mmap.put("user", user);
-        mmap.put("roleGroup", userService.selectUserRoleGroup(user.getUserId()));
-        mmap.put("postGroup", userService.selectUserPostGroup(user.getUserId()));
-        return prefix + "/profile";
-    }
-
-    @GetMapping("/checkPassword")
-    @ResponseBody
-    public boolean checkPassword(String password)
-    {
-        SysUser user = getSysUser();
-        return passwordService.matches(user, password);
-    }
-
-    @GetMapping("/resetPwd")
-    public String resetPwd(ModelMap mmap)
-    {
-        SysUser user = getSysUser();
-        mmap.put("user", userService.selectUserById(user.getUserId()));
-        return prefix + "/resetPwd";
-    }
-
-    @Log(title = "重置密码", businessType = BusinessType.UPDATE)
-    @PostMapping("/resetPwd")
-    @ResponseBody
-    public AjaxResult resetPwd(String oldPassword, String newPassword)
-    {
-        SysUser user = getSysUser();
-        if (!passwordService.matches(user, oldPassword))
-        {
-            return error("修改密码失败,旧密码错误");
-        }
-        if (passwordService.matches(user, newPassword))
-        {
-            return error("新密码不能与旧密码相同");
-        }
-        user.setSalt(ShiroUtils.randomSalt());
-        user.setPassword(passwordService.encryptPassword(user.getLoginName(), newPassword, user.getSalt()));
-        user.setPwdUpdateDate(DateUtils.getNowDate());
-        if (userService.resetUserPwd(user) > 0)
-        {
-            setSysUser(userService.selectUserById(user.getUserId()));
-            return success();
-        }
-        return error("修改密码异常,请联系管理员");
-    }
-
-    /**
-     * 修改用户
-     */
-    @GetMapping("/edit")
-    public String edit(ModelMap mmap)
-    {
-        SysUser user = getSysUser();
-        mmap.put("user", userService.selectUserById(user.getUserId()));
-        return prefix + "/edit";
-    }
-
-    /**
-     * 修改头像
-     */
-    @GetMapping("/avatar")
-    public String avatar(ModelMap mmap)
-    {
-        SysUser user = getSysUser();
-        mmap.put("user", userService.selectUserById(user.getUserId()));
-        return prefix + "/avatar";
-    }
-
-    /**
-     * 修改用户
-     */
-    @Log(title = "个人信息", businessType = BusinessType.UPDATE)
-    @PostMapping("/update")
-    @ResponseBody
-    public AjaxResult update(SysUser user)
-    {
-        SysUser currentUser = getSysUser();
-        currentUser.setUserName(user.getUserName());
-        currentUser.setEmail(user.getEmail());
-        currentUser.setPhonenumber(user.getPhonenumber());
-        currentUser.setSex(user.getSex());
-        if (StringUtils.isNotEmpty(user.getPhonenumber())
-                && UserConstants.USER_PHONE_NOT_UNIQUE.equals(userService.checkPhoneUnique(currentUser)))
-        {
-            return error("修改用户'" + currentUser.getLoginName() + "'失败,手机号码已存在");
-        }
-        else if (StringUtils.isNotEmpty(user.getEmail())
-                && UserConstants.USER_EMAIL_NOT_UNIQUE.equals(userService.checkEmailUnique(currentUser)))
-        {
-            return error("修改用户'" + currentUser.getLoginName() + "'失败,邮箱账号已存在");
-        }
-        if (userService.updateUserInfo(currentUser) > 0)
-        {
-            setSysUser(userService.selectUserById(currentUser.getUserId()));
-            return success();
-        }
-        return error();
-    }
-
-    /**
-     * 保存头像
-     */
-    @Log(title = "个人信息", businessType = BusinessType.UPDATE)
-    @PostMapping("/updateAvatar")
-    @ResponseBody
-    public AjaxResult updateAvatar(@RequestParam("avatarfile") MultipartFile file)
-    {
-        SysUser currentUser = getSysUser();
-        try
-        {
-            if (!file.isEmpty())
-            {
-                String avatar = FileUploadUtils.upload(RuoYiConfig.getAvatarPath(), file, MimeTypeUtils.IMAGE_EXTENSION);
-                currentUser.setAvatar(avatar);
-                if (userService.updateUserInfo(currentUser) > 0)
-                {
-                    setSysUser(userService.selectUserById(currentUser.getUserId()));
-                    return success();
-                }
-            }
-            return error();
-        }
-        catch (Exception e)
-        {
-            log.error("修改头像失败!", e);
-            return error(e.getMessage());
-        }
-    }
-}

+ 0 - 46
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRegisterController.java

@@ -1,46 +0,0 @@
-package com.ruoyi.web.controller.system;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.ResponseBody;
-import com.ruoyi.common.core.controller.BaseController;
-import com.ruoyi.common.core.domain.AjaxResult;
-import com.ruoyi.common.core.domain.entity.SysUser;
-import com.ruoyi.common.utils.StringUtils;
-import com.ruoyi.framework.shiro.service.SysRegisterService;
-import com.ruoyi.system.service.ISysConfigService;
-
-/**
- * 注册验证
- * 
- * @author ruoyi
- */
-@Controller
-public class SysRegisterController extends BaseController
-{
-    @Autowired
-    private SysRegisterService registerService;
-
-    @Autowired
-    private ISysConfigService configService;
-
-    @GetMapping("/register")
-    public String register()
-    {
-        return "register";
-    }
-
-    @PostMapping("/register")
-    @ResponseBody
-    public AjaxResult ajaxRegister(SysUser user)
-    {
-        if (!("true".equals(configService.selectConfigByKey("sys.account.registerUser"))))
-        {
-            return error("当前系统没有开启注册功能!");
-        }
-        String msg = registerService.register(user);
-        return StringUtils.isEmpty(msg) ? success() : error(msg);
-    }
-}

+ 0 - 323
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRoleController.java

@@ -1,323 +0,0 @@
-package com.ruoyi.web.controller.system;
-
-import java.util.List;
-import org.apache.shiro.authz.annotation.RequiresPermissions;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Controller;
-import org.springframework.ui.ModelMap;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.ResponseBody;
-import com.ruoyi.common.annotation.Log;
-import com.ruoyi.common.constant.UserConstants;
-import com.ruoyi.common.core.controller.BaseController;
-import com.ruoyi.common.core.domain.AjaxResult;
-import com.ruoyi.common.core.domain.Ztree;
-import com.ruoyi.common.core.domain.entity.SysRole;
-import com.ruoyi.common.core.domain.entity.SysUser;
-import com.ruoyi.common.core.page.TableDataInfo;
-import com.ruoyi.common.enums.BusinessType;
-import com.ruoyi.common.utils.poi.ExcelUtil;
-import com.ruoyi.framework.shiro.util.AuthorizationUtils;
-import com.ruoyi.system.domain.SysUserRole;
-import com.ruoyi.system.service.ISysDeptService;
-import com.ruoyi.system.service.ISysRoleService;
-import com.ruoyi.system.service.ISysUserService;
-
-/**
- * 角色信息
- * 
- * @author ruoyi
- */
-@Controller
-@RequestMapping("/system/role")
-public class SysRoleController extends BaseController
-{
-    private String prefix = "system/role";
-
-    @Autowired
-    private ISysRoleService roleService;
-
-    @Autowired
-    private ISysUserService userService;
-
-    @Autowired
-    private ISysDeptService deptService;
-
-    @RequiresPermissions("system:role:view")
-    @GetMapping()
-    public String role()
-    {
-        return prefix + "/role";
-    }
-
-    @RequiresPermissions("system:role:list")
-    @PostMapping("/list")
-    @ResponseBody
-    public TableDataInfo list(SysRole role)
-    {
-        startPage();
-        List<SysRole> list = roleService.selectRoleList(role);
-        return getDataTable(list);
-    }
-
-    @Log(title = "角色管理", businessType = BusinessType.EXPORT)
-    @RequiresPermissions("system:role:export")
-    @PostMapping("/export")
-    @ResponseBody
-    public AjaxResult export(SysRole role)
-    {
-        List<SysRole> list = roleService.selectRoleList(role);
-        ExcelUtil<SysRole> util = new ExcelUtil<SysRole>(SysRole.class);
-        return util.exportExcel(list, "角色数据");
-    }
-
-    /**
-     * 新增角色
-     */
-    @GetMapping("/add")
-    public String add()
-    {
-        return prefix + "/add";
-    }
-
-    /**
-     * 新增保存角色
-     */
-    @RequiresPermissions("system:role:add")
-    @Log(title = "角色管理", businessType = BusinessType.INSERT)
-    @PostMapping("/add")
-    @ResponseBody
-    public AjaxResult addSave(@Validated SysRole role)
-    {
-        if (UserConstants.ROLE_NAME_NOT_UNIQUE.equals(roleService.checkRoleNameUnique(role)))
-        {
-            return error("新增角色'" + role.getRoleName() + "'失败,角色名称已存在");
-        }
-        else if (UserConstants.ROLE_KEY_NOT_UNIQUE.equals(roleService.checkRoleKeyUnique(role)))
-        {
-            return error("新增角色'" + role.getRoleName() + "'失败,角色权限已存在");
-        }
-        role.setCreateBy(getLoginName());
-        AuthorizationUtils.clearAllCachedAuthorizationInfo();
-        return toAjax(roleService.insertRole(role));
-
-    }
-
-    /**
-     * 修改角色
-     */
-    @RequiresPermissions("system:role:edit")
-    @GetMapping("/edit/{roleId}")
-    public String edit(@PathVariable("roleId") Long roleId, ModelMap mmap)
-    {
-        roleService.checkRoleDataScope(roleId);
-        mmap.put("role", roleService.selectRoleById(roleId));
-        return prefix + "/edit";
-    }
-
-    /**
-     * 修改保存角色
-     */
-    @RequiresPermissions("system:role:edit")
-    @Log(title = "角色管理", businessType = BusinessType.UPDATE)
-    @PostMapping("/edit")
-    @ResponseBody
-    public AjaxResult editSave(@Validated SysRole role)
-    {
-        roleService.checkRoleAllowed(role);
-        roleService.checkRoleDataScope(role.getRoleId());
-        if (UserConstants.ROLE_NAME_NOT_UNIQUE.equals(roleService.checkRoleNameUnique(role)))
-        {
-            return error("修改角色'" + role.getRoleName() + "'失败,角色名称已存在");
-        }
-        else if (UserConstants.ROLE_KEY_NOT_UNIQUE.equals(roleService.checkRoleKeyUnique(role)))
-        {
-            return error("修改角色'" + role.getRoleName() + "'失败,角色权限已存在");
-        }
-        role.setUpdateBy(getLoginName());
-        AuthorizationUtils.clearAllCachedAuthorizationInfo();
-        return toAjax(roleService.updateRole(role));
-    }
-
-    /**
-     * 角色分配数据权限
-     */
-    @GetMapping("/authDataScope/{roleId}")
-    public String authDataScope(@PathVariable("roleId") Long roleId, ModelMap mmap)
-    {
-        mmap.put("role", roleService.selectRoleById(roleId));
-        return prefix + "/dataScope";
-    }
-
-    /**
-     * 保存角色分配数据权限
-     */
-    @RequiresPermissions("system:role:edit")
-    @Log(title = "角色管理", businessType = BusinessType.UPDATE)
-    @PostMapping("/authDataScope")
-    @ResponseBody
-    public AjaxResult authDataScopeSave(SysRole role)
-    {
-        roleService.checkRoleAllowed(role);
-        roleService.checkRoleDataScope(role.getRoleId());
-        role.setUpdateBy(getLoginName());
-        if (roleService.authDataScope(role) > 0)
-        {
-            setSysUser(userService.selectUserById(getUserId()));
-            return success();
-        }
-        return error();
-    }
-
-    @RequiresPermissions("system:role:remove")
-    @Log(title = "角色管理", businessType = BusinessType.DELETE)
-    @PostMapping("/remove")
-    @ResponseBody
-    public AjaxResult remove(String ids)
-    {
-        return toAjax(roleService.deleteRoleByIds(ids));
-    }
-
-    /**
-     * 校验角色名称
-     */
-    @PostMapping("/checkRoleNameUnique")
-    @ResponseBody
-    public String checkRoleNameUnique(SysRole role)
-    {
-        return roleService.checkRoleNameUnique(role);
-    }
-
-    /**
-     * 校验角色权限
-     */
-    @PostMapping("/checkRoleKeyUnique")
-    @ResponseBody
-    public String checkRoleKeyUnique(SysRole role)
-    {
-        return roleService.checkRoleKeyUnique(role);
-    }
-
-    /**
-     * 选择菜单树
-     */
-    @GetMapping("/selectMenuTree")
-    public String selectMenuTree()
-    {
-        return prefix + "/tree";
-    }
-
-    /**
-     * 角色状态修改
-     */
-    @Log(title = "角色管理", businessType = BusinessType.UPDATE)
-    @RequiresPermissions("system:role:edit")
-    @PostMapping("/changeStatus")
-    @ResponseBody
-    public AjaxResult changeStatus(SysRole role)
-    {
-        roleService.checkRoleAllowed(role);
-        roleService.checkRoleDataScope(role.getRoleId());
-        return toAjax(roleService.changeStatus(role));
-    }
-
-    /**
-     * 分配用户
-     */
-    @RequiresPermissions("system:role:edit")
-    @GetMapping("/authUser/{roleId}")
-    public String authUser(@PathVariable("roleId") Long roleId, ModelMap mmap)
-    {
-        mmap.put("role", roleService.selectRoleById(roleId));
-        return prefix + "/authUser";
-    }
-
-    /**
-     * 查询已分配用户角色列表
-     */
-    @RequiresPermissions("system:role:list")
-    @PostMapping("/authUser/allocatedList")
-    @ResponseBody
-    public TableDataInfo allocatedList(SysUser user)
-    {
-        startPage();
-        List<SysUser> list = userService.selectAllocatedList(user);
-        return getDataTable(list);
-    }
-
-    /**
-     * 取消授权
-     */
-    @RequiresPermissions("system:role:edit")
-    @Log(title = "角色管理", businessType = BusinessType.GRANT)
-    @PostMapping("/authUser/cancel")
-    @ResponseBody
-    public AjaxResult cancelAuthUser(SysUserRole userRole)
-    {
-        return toAjax(roleService.deleteAuthUser(userRole));
-    }
-
-    /**
-     * 批量取消授权
-     */
-    @RequiresPermissions("system:role:edit")
-    @Log(title = "角色管理", businessType = BusinessType.GRANT)
-    @PostMapping("/authUser/cancelAll")
-    @ResponseBody
-    public AjaxResult cancelAuthUserAll(Long roleId, String userIds)
-    {
-        return toAjax(roleService.deleteAuthUsers(roleId, userIds));
-    }
-
-    /**
-     * 选择用户
-     */
-    @GetMapping("/authUser/selectUser/{roleId}")
-    public String selectUser(@PathVariable("roleId") Long roleId, ModelMap mmap)
-    {
-        mmap.put("role", roleService.selectRoleById(roleId));
-        return prefix + "/selectUser";
-    }
-
-    /**
-     * 查询未分配用户角色列表
-     */
-    @RequiresPermissions("system:role:list")
-    @PostMapping("/authUser/unallocatedList")
-    @ResponseBody
-    public TableDataInfo unallocatedList(SysUser user)
-    {
-        startPage();
-        List<SysUser> list = userService.selectUnallocatedList(user);
-        return getDataTable(list);
-    }
-
-    /**
-     * 批量选择用户授权
-     */
-    @RequiresPermissions("system:role:edit")
-    @Log(title = "角色管理", businessType = BusinessType.GRANT)
-    @PostMapping("/authUser/selectAll")
-    @ResponseBody
-    public AjaxResult selectAuthUserAll(Long roleId, String userIds)
-    {
-        roleService.checkRoleDataScope(roleId);
-        return toAjax(roleService.insertAuthUsers(roleId, userIds));
-    }
-
-    /**
-     * 加载角色部门(数据权限)列表树
-     */
-    @RequiresPermissions("system:role:edit")
-    @GetMapping("/deptTreeData")
-    @ResponseBody
-    public List<Ztree> deptTreeData(SysRole role)
-    {
-        List<Ztree> ztrees = deptService.roleDeptTreeData(role);
-        return ztrees;
-    }
-}

+ 0 - 337
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java

@@ -1,337 +0,0 @@
-package com.ruoyi.web.controller.system;
-
-import java.util.List;
-import java.util.stream.Collectors;
-import org.apache.commons.lang3.ArrayUtils;
-import org.apache.shiro.authz.annotation.RequiresPermissions;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Controller;
-import org.springframework.ui.ModelMap;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.ResponseBody;
-import org.springframework.web.multipart.MultipartFile;
-import com.ruoyi.common.annotation.Log;
-import com.ruoyi.common.constant.UserConstants;
-import com.ruoyi.common.core.controller.BaseController;
-import com.ruoyi.common.core.domain.AjaxResult;
-import com.ruoyi.common.core.domain.Ztree;
-import com.ruoyi.common.core.domain.entity.SysDept;
-import com.ruoyi.common.core.domain.entity.SysRole;
-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.ShiroUtils;
-import com.ruoyi.common.utils.StringUtils;
-import com.ruoyi.common.utils.poi.ExcelUtil;
-import com.ruoyi.framework.shiro.service.SysPasswordService;
-import com.ruoyi.framework.shiro.util.AuthorizationUtils;
-import com.ruoyi.system.service.ISysDeptService;
-import com.ruoyi.system.service.ISysPostService;
-import com.ruoyi.system.service.ISysRoleService;
-import com.ruoyi.system.service.ISysUserService;
-
-/**
- * 用户信息
- * 
- * @author ruoyi
- */
-@Controller
-@RequestMapping("/system/user")
-public class SysUserController extends BaseController
-{
-    private String prefix = "system/user";
-
-    @Autowired
-    private ISysUserService userService;
-
-    @Autowired
-    private ISysRoleService roleService;
-    
-    @Autowired
-    private ISysDeptService deptService;
-
-    @Autowired
-    private ISysPostService postService;
-
-    @Autowired
-    private SysPasswordService passwordService;
-
-    @RequiresPermissions("system:user:view")
-    @GetMapping()
-    public String user()
-    {
-        return prefix + "/user";
-    }
-
-    @RequiresPermissions("system:user:list")
-    @PostMapping("/list")
-    @ResponseBody
-    public TableDataInfo list(SysUser user)
-    {
-        startPage();
-        List<SysUser> list = userService.selectUserList(user);
-        return getDataTable(list);
-    }
-
-    @Log(title = "用户管理", businessType = BusinessType.EXPORT)
-    @RequiresPermissions("system:user:export")
-    @PostMapping("/export")
-    @ResponseBody
-    public AjaxResult export(SysUser user)
-    {
-        List<SysUser> list = userService.selectUserList(user);
-        ExcelUtil<SysUser> util = new ExcelUtil<SysUser>(SysUser.class);
-        return util.exportExcel(list, "用户数据");
-    }
-
-    @Log(title = "用户管理", businessType = BusinessType.IMPORT)
-    @RequiresPermissions("system:user:import")
-    @PostMapping("/importData")
-    @ResponseBody
-    public AjaxResult importData(MultipartFile file, boolean updateSupport) throws Exception
-    {
-        ExcelUtil<SysUser> util = new ExcelUtil<SysUser>(SysUser.class);
-        List<SysUser> userList = util.importExcel(file.getInputStream());
-        String message = userService.importUser(userList, updateSupport, getLoginName());
-        return AjaxResult.success(message);
-    }
-
-    @RequiresPermissions("system:user:view")
-    @GetMapping("/importTemplate")
-    @ResponseBody
-    public AjaxResult importTemplate()
-    {
-        ExcelUtil<SysUser> util = new ExcelUtil<SysUser>(SysUser.class);
-        return util.importTemplateExcel("用户数据");
-    }
-
-    /**
-     * 新增用户
-     */
-    @GetMapping("/add")
-    public String add(ModelMap mmap)
-    {
-        mmap.put("roles", roleService.selectRoleAll().stream().filter(r -> !r.isAdmin()).collect(Collectors.toList()));
-        mmap.put("posts", postService.selectPostAll());
-        return prefix + "/add";
-    }
-
-    /**
-     * 新增保存用户
-     */
-    @RequiresPermissions("system:user:add")
-    @Log(title = "用户管理", businessType = BusinessType.INSERT)
-    @PostMapping("/add")
-    @ResponseBody
-    public AjaxResult addSave(@Validated SysUser user)
-    {
-        if (UserConstants.USER_NAME_NOT_UNIQUE.equals(userService.checkLoginNameUnique(user)))
-        {
-            return error("新增用户'" + user.getLoginName() + "'失败,登录账号已存在");
-        }
-        else if (StringUtils.isNotEmpty(user.getPhonenumber())
-                && UserConstants.USER_PHONE_NOT_UNIQUE.equals(userService.checkPhoneUnique(user)))
-        {
-            return error("新增用户'" + user.getLoginName() + "'失败,手机号码已存在");
-        }
-        else if (StringUtils.isNotEmpty(user.getEmail())
-                && UserConstants.USER_EMAIL_NOT_UNIQUE.equals(userService.checkEmailUnique(user)))
-        {
-            return error("新增用户'" + user.getLoginName() + "'失败,邮箱账号已存在");
-        }
-        user.setSalt(ShiroUtils.randomSalt());
-        user.setPassword(passwordService.encryptPassword(user.getLoginName(), user.getPassword(), user.getSalt()));
-        user.setCreateBy(getLoginName());
-        return toAjax(userService.insertUser(user));
-    }
-
-    /**
-     * 修改用户
-     */
-    @RequiresPermissions("system:user:edit")
-    @GetMapping("/edit/{userId}")
-    public String edit(@PathVariable("userId") Long userId, ModelMap mmap)
-    {
-        userService.checkUserDataScope(userId);
-        List<SysRole> roles = roleService.selectRolesByUserId(userId);
-        mmap.put("user", userService.selectUserById(userId));
-        mmap.put("roles", SysUser.isAdmin(userId) ? roles : roles.stream().filter(r -> !r.isAdmin()).collect(Collectors.toList()));
-        mmap.put("posts", postService.selectPostsByUserId(userId));
-        return prefix + "/edit";
-    }
-
-    /**
-     * 修改保存用户
-     */
-    @RequiresPermissions("system:user:edit")
-    @Log(title = "用户管理", businessType = BusinessType.UPDATE)
-    @PostMapping("/edit")
-    @ResponseBody
-    public AjaxResult editSave(@Validated SysUser user)
-    {
-        userService.checkUserAllowed(user);
-        userService.checkUserDataScope(user.getUserId());
-        if (UserConstants.USER_NAME_NOT_UNIQUE.equals(userService.checkLoginNameUnique(user)))
-        {
-            return error("修改用户'" + user.getLoginName() + "'失败,登录账号已存在");
-        }
-        else if (StringUtils.isNotEmpty(user.getPhonenumber())
-                && UserConstants.USER_PHONE_NOT_UNIQUE.equals(userService.checkPhoneUnique(user)))
-        {
-            return error("修改用户'" + user.getLoginName() + "'失败,手机号码已存在");
-        }
-        else if (StringUtils.isNotEmpty(user.getEmail())
-                && UserConstants.USER_EMAIL_NOT_UNIQUE.equals(userService.checkEmailUnique(user)))
-        {
-            return error("修改用户'" + user.getLoginName() + "'失败,邮箱账号已存在");
-        }
-        user.setUpdateBy(getLoginName());
-        AuthorizationUtils.clearAllCachedAuthorizationInfo();
-        return toAjax(userService.updateUser(user));
-    }
-
-    @RequiresPermissions("system:user:resetPwd")
-    @GetMapping("/resetPwd/{userId}")
-    public String resetPwd(@PathVariable("userId") Long userId, ModelMap mmap)
-    {
-        mmap.put("user", userService.selectUserById(userId));
-        return prefix + "/resetPwd";
-    }
-
-    @RequiresPermissions("system:user:resetPwd")
-    @Log(title = "重置密码", businessType = BusinessType.UPDATE)
-    @PostMapping("/resetPwd")
-    @ResponseBody
-    public AjaxResult resetPwdSave(SysUser user)
-    {
-        userService.checkUserAllowed(user);
-        userService.checkUserDataScope(user.getUserId());
-        user.setSalt(ShiroUtils.randomSalt());
-        user.setPassword(passwordService.encryptPassword(user.getLoginName(), user.getPassword(), user.getSalt()));
-        if (userService.resetUserPwd(user) > 0)
-        {
-            if (ShiroUtils.getUserId().longValue() == user.getUserId().longValue())
-            {
-                setSysUser(userService.selectUserById(user.getUserId()));
-            }
-            return success();
-        }
-        return error();
-    }
-
-    /**
-     * 进入授权角色页
-     */
-    @GetMapping("/authRole/{userId}")
-    public String authRole(@PathVariable("userId") Long userId, ModelMap mmap)
-    {
-        SysUser user = userService.selectUserById(userId);
-        // 获取用户所属的角色列表
-        List<SysRole> roles = roleService.selectRolesByUserId(userId);
-        mmap.put("user", user);
-        mmap.put("roles", SysUser.isAdmin(userId) ? roles : roles.stream().filter(r -> !r.isAdmin()).collect(Collectors.toList()));
-        return prefix + "/authRole";
-    }
-
-    /**
-     * 用户授权角色
-     */
-    @RequiresPermissions("system:user:edit")
-    @Log(title = "用户管理", businessType = BusinessType.GRANT)
-    @PostMapping("/authRole/insertAuthRole")
-    @ResponseBody
-    public AjaxResult insertAuthRole(Long userId, Long[] roleIds)
-    {
-        userService.checkUserDataScope(userId);
-        userService.insertUserAuth(userId, roleIds);
-        AuthorizationUtils.clearAllCachedAuthorizationInfo();
-        return success();
-    }
-
-    @RequiresPermissions("system:user:remove")
-    @Log(title = "用户管理", businessType = BusinessType.DELETE)
-    @PostMapping("/remove")
-    @ResponseBody
-    public AjaxResult remove(String ids)
-    {
-        if (ArrayUtils.contains(Convert.toLongArray(ids), getUserId()))
-        {
-            return error("当前用户不能删除");
-        }
-        return toAjax(userService.deleteUserByIds(ids));
-    }
-
-    /**
-     * 校验用户名
-     */
-    @PostMapping("/checkLoginNameUnique")
-    @ResponseBody
-    public String checkLoginNameUnique(SysUser user)
-    {
-        return userService.checkLoginNameUnique(user);
-    }
-
-    /**
-     * 校验手机号码
-     */
-    @PostMapping("/checkPhoneUnique")
-    @ResponseBody
-    public String checkPhoneUnique(SysUser user)
-    {
-        return userService.checkPhoneUnique(user);
-    }
-
-    /**
-     * 校验email邮箱
-     */
-    @PostMapping("/checkEmailUnique")
-    @ResponseBody
-    public String checkEmailUnique(SysUser user)
-    {
-        return userService.checkEmailUnique(user);
-    }
-
-    /**
-     * 用户状态修改
-     */
-    @Log(title = "用户管理", businessType = BusinessType.UPDATE)
-    @RequiresPermissions("system:user:edit")
-    @PostMapping("/changeStatus")
-    @ResponseBody
-    public AjaxResult changeStatus(SysUser user)
-    {
-        userService.checkUserAllowed(user);
-        userService.checkUserDataScope(user.getUserId());
-        return toAjax(userService.changeStatus(user));
-    }
-
-    /**
-     * 加载部门列表树
-     */
-    @RequiresPermissions("system:user:list")
-    @GetMapping("/deptTreeData")
-    @ResponseBody
-    public List<Ztree> deptTreeData()
-    {
-        List<Ztree> ztrees = deptService.selectDeptTree(new SysDept());
-        return ztrees;
-    }
-
-    /**
-     * 选择部门树
-     * 
-     * @param deptId 部门ID
-     */
-    @RequiresPermissions("system:user:list")
-    @GetMapping("/selectDeptTree/{deptId}")
-    public String selectDeptTree(@PathVariable("deptId") Long deptId, ModelMap mmap)
-    {
-        mmap.put("dept", deptService.selectDeptById(deptId));
-        return prefix + "/deptTree";
-    }
-}

+ 0 - 26
ruoyi-admin/src/main/java/com/ruoyi/web/controller/tool/BuildController.java

@@ -1,26 +0,0 @@
-package com.ruoyi.web.controller.tool;
-
-import org.apache.shiro.authz.annotation.RequiresPermissions;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import com.ruoyi.common.core.controller.BaseController;
-
-/**
- * build 表单构建
- * 
- * @author ruoyi
- */
-@Controller
-@RequestMapping("/tool/build")
-public class BuildController extends BaseController
-{
-    private String prefix = "tool/build";
-
-    @RequiresPermissions("tool:build:view")
-    @GetMapping()
-    public String build()
-    {
-        return prefix + "/build";
-    }
-}

+ 0 - 24
ruoyi-admin/src/main/java/com/ruoyi/web/controller/tool/SwaggerController.java

@@ -1,24 +0,0 @@
-package com.ruoyi.web.controller.tool;
-
-import org.apache.shiro.authz.annotation.RequiresPermissions;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import com.ruoyi.common.core.controller.BaseController;
-
-/**
- * swagger 接口
- * 
- * @author ruoyi
- */
-@Controller
-@RequestMapping("/tool/swagger")
-public class SwaggerController extends BaseController
-{
-    @RequiresPermissions("tool:swagger:view")
-    @GetMapping()
-    public String index()
-    {
-        return redirect("/swagger-ui/index.html");
-    }
-}

+ 0 - 183
ruoyi-admin/src/main/java/com/ruoyi/web/controller/tool/TestController.java

@@ -1,183 +0,0 @@
-package com.ruoyi.web.controller.tool;
-
-import java.util.ArrayList;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.PutMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-import com.ruoyi.common.core.controller.BaseController;
-import com.ruoyi.common.core.domain.R;
-import com.ruoyi.common.utils.StringUtils;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiImplicitParam;
-import io.swagger.annotations.ApiImplicitParams;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import io.swagger.annotations.ApiOperation;
-
-/**
- * swagger 用户测试方法
- * 
- * @author ruoyi
- */
-@Api("用户信息管理")
-@RestController
-@RequestMapping("/test/user")
-public class TestController extends BaseController
-{
-    private final static Map<Integer, UserEntity> users = new LinkedHashMap<Integer, UserEntity>();
-    {
-        users.put(1, new UserEntity(1, "admin", "admin123", "15888888888"));
-        users.put(2, new UserEntity(2, "ry", "admin123", "15666666666"));
-    }
-
-    @ApiOperation("获取用户列表")
-    @GetMapping("/list")
-    public R<List<UserEntity>> userList()
-    {
-        List<UserEntity> userList = new ArrayList<UserEntity>(users.values());
-        return R.ok(userList);
-    }
-
-    @ApiOperation("获取用户详细")
-    @ApiImplicitParam(name = "userId", value = "用户ID", required = true, dataType = "int", paramType = "path", dataTypeClass = Integer.class)
-    @GetMapping("/{userId}")
-    public R<UserEntity> getUser(@PathVariable Integer userId)
-    {
-        if (!users.isEmpty() && users.containsKey(userId))
-        {
-            return R.ok(users.get(userId));
-        }
-        else
-        {
-            return R.fail("用户不存在");
-        }
-    }
-
-    @ApiOperation("新增用户")
-    @ApiImplicitParams({
-        @ApiImplicitParam(name = "userId", value = "用户id", dataType = "Integer", dataTypeClass = Integer.class),
-        @ApiImplicitParam(name = "username", value = "用户名称", dataType = "String", dataTypeClass = String.class),
-        @ApiImplicitParam(name = "password", value = "用户密码", dataType = "String", dataTypeClass = String.class),
-        @ApiImplicitParam(name = "mobile", value = "用户手机", dataType = "String", dataTypeClass = String.class)
-    })
-    @PostMapping("/save")
-    public R<String> save(UserEntity user)
-    {
-        if (StringUtils.isNull(user) || StringUtils.isNull(user.getUserId()))
-        {
-            return R.fail("用户ID不能为空");
-        }
-        users.put(user.getUserId(), user);
-        return R.ok();
-    }
-
-    @ApiOperation("更新用户")
-    @PutMapping("/update")
-    public R<String> update(@RequestBody UserEntity user)
-    {
-        if (StringUtils.isNull(user) || StringUtils.isNull(user.getUserId()))
-        {
-            return R.fail("用户ID不能为空");
-        }
-        if (users.isEmpty() || !users.containsKey(user.getUserId()))
-        {
-            return R.fail("用户不存在");
-        }
-        users.remove(user.getUserId());
-        users.put(user.getUserId(), user);
-        return R.ok();
-    }
-
-    @ApiOperation("删除用户信息")
-    @ApiImplicitParam(name = "userId", value = "用户ID", required = true, dataType = "int", paramType = "path", dataTypeClass = Integer.class)
-    @DeleteMapping("/{userId}")
-    public R<String> delete(@PathVariable Integer userId)
-    {
-        if (!users.isEmpty() && users.containsKey(userId))
-        {
-            users.remove(userId);
-            return R.ok();
-        }
-        else
-        {
-            return R.fail("用户不存在");
-        }
-    }
-}
-
-@ApiModel(value = "UserEntity", description = "用户实体")
-class UserEntity
-{
-    @ApiModelProperty("用户ID")
-    private Integer userId;
-
-    @ApiModelProperty("用户名称")
-    private String username;
-
-    @ApiModelProperty("用户密码")
-    private String password;
-
-    @ApiModelProperty("用户手机")
-    private String mobile;
-
-    public UserEntity()
-    {
-
-    }
-
-    public UserEntity(Integer userId, String username, String password, String mobile)
-    {
-        this.userId = userId;
-        this.username = username;
-        this.password = password;
-        this.mobile = mobile;
-    }
-
-    public Integer getUserId()
-    {
-        return userId;
-    }
-
-    public void setUserId(Integer userId)
-    {
-        this.userId = userId;
-    }
-
-    public String getUsername()
-    {
-        return username;
-    }
-
-    public void setUsername(String username)
-    {
-        this.username = username;
-    }
-
-    public String getPassword()
-    {
-        return password;
-    }
-
-    public void setPassword(String password)
-    {
-        this.password = password;
-    }
-
-    public String getMobile()
-    {
-        return mobile;
-    }
-
-    public void setMobile(String mobile)
-    {
-        this.mobile = mobile;
-    }
-}

+ 0 - 67
ruoyi-admin/src/main/java/com/ruoyi/web/core/config/SwaggerConfig.java

@@ -1,67 +0,0 @@
-package com.ruoyi.web.core.config;
-
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import com.ruoyi.common.config.RuoYiConfig;
-import io.swagger.annotations.ApiOperation;
-import springfox.documentation.builders.ApiInfoBuilder;
-import springfox.documentation.builders.PathSelectors;
-import springfox.documentation.builders.RequestHandlerSelectors;
-import springfox.documentation.service.ApiInfo;
-import springfox.documentation.service.Contact;
-import springfox.documentation.spi.DocumentationType;
-import springfox.documentation.spring.web.plugins.Docket;
-
-/**
- * Swagger2的接口配置
- * 
- * @author ruoyi
- */
-@Configuration
-public class SwaggerConfig
-{
-    /** 是否开启swagger */
-    @Value("${swagger.enabled}")
-    private boolean enabled;
-    
-    /**
-     * 创建API
-     */
-    @Bean
-    public Docket createRestApi()
-    {
-        return new Docket(DocumentationType.OAS_30)
-                // 是否启用Swagger
-                .enable(enabled)
-                // 用来创建该API的基本信息,展示在文档的页面中(自定义展示的信息)
-                .apiInfo(apiInfo())
-                // 设置哪些接口暴露给Swagger展示
-                .select()
-                // 扫描所有有注解的api,用这种方式更灵活
-                .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
-                // 扫描指定包中的swagger注解
-                //.apis(RequestHandlerSelectors.basePackage("com.ruoyi.project.tool.swagger"))
-                // 扫描所有 .apis(RequestHandlerSelectors.any())
-                .paths(PathSelectors.any())
-                .build();
-    }
-
-    /**
-     * 添加摘要信息
-     */
-    private ApiInfo apiInfo()
-    {
-        // 用ApiInfoBuilder进行定制
-        return new ApiInfoBuilder()
-                // 设置标题
-                .title("标题:若依管理系统_接口文档")
-                // 描述
-                .description("描述:用于管理集团旗下公司的人员信息,具体包括XXX,XXX模块...")
-                // 作者信息
-                .contact(new Contact(RuoYiConfig.getName(), null, null))
-                // 版本
-                .version("版本号:" + RuoYiConfig.getVersion())
-                .build();
-    }
-}

+ 0 - 61
ruoyi-admin/src/main/resources/application-druid.yml

@@ -1,61 +0,0 @@
-# 数据源配置
-spring:
-    datasource:
-        type: com.alibaba.druid.pool.DruidDataSource
-        driverClassName: com.mysql.cj.jdbc.Driver
-        druid:
-            # 主库数据源
-            master:
-                url: jdbc:mysql://localhost:3306/ry?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
-                username: root
-                password: password
-            # 从库数据源
-            slave:
-                # 从数据源开关/默认关闭
-                enabled: false
-                url: 
-                username: 
-                password: 
-            # 初始连接数
-            initialSize: 5
-            # 最小连接池数量
-            minIdle: 10
-            # 最大连接池数量
-            maxActive: 20
-            # 配置获取连接等待超时的时间
-            maxWait: 60000
-            # 配置连接超时时间
-            connectTimeout: 30000
-            # 配置网络超时时间
-            socketTimeout: 60000
-            # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
-            timeBetweenEvictionRunsMillis: 60000
-            # 配置一个连接在池中最小生存的时间,单位是毫秒
-            minEvictableIdleTimeMillis: 300000
-            # 配置一个连接在池中最大生存的时间,单位是毫秒
-            maxEvictableIdleTimeMillis: 900000
-            # 配置检测连接是否有效
-            validationQuery: SELECT 1 FROM DUAL
-            testWhileIdle: true
-            testOnBorrow: false
-            testOnReturn: false
-            webStatFilter: 
-                enabled: true
-            statViewServlet:
-                enabled: true
-                # 设置白名单,不填则允许所有访问
-                allow:
-                url-pattern: /druid/*
-                # 控制台管理用户名和密码
-                login-username: ruoyi
-                login-password: 123456
-            filter:
-                stat:
-                    enabled: true
-                    # 慢SQL记录
-                    log-slow-sql: true
-                    slow-sql-millis: 1000
-                    merge-sql: true
-                wall:
-                    config:
-                        multi-statement-allow: true

+ 0 - 142
ruoyi-admin/src/main/resources/application.yml

@@ -1,142 +0,0 @@
-# 项目相关配置
-ruoyi:
-  # 名称
-  name: RuoYi
-  # 版本
-  version: 4.7.6
-  # 版权年份
-  copyrightYear: 2023
-  # 实例演示开关
-  demoEnabled: true
-  # 文件路径 示例( Windows配置D:/ruoyi/uploadPath,Linux配置 /home/ruoyi/uploadPath)
-  profile: D:/ruoyi/uploadPath
-  # 获取ip地址开关
-  addressEnabled: false
-
-# 开发环境配置
-server:
-  # 服务器的HTTP端口,默认为80
-  port: 80
-  servlet:
-    # 应用的访问路径
-    context-path: /
-  tomcat:
-    # tomcat的URI编码
-    uri-encoding: UTF-8
-    # 连接数满后的排队数,默认为100
-    accept-count: 1000
-    threads:
-      # tomcat最大线程数,默认为200
-      max: 800
-      # Tomcat启动初始化的线程数,默认值10
-      min-spare: 100
- 
-# 日志配置
-logging:
-  level:
-    com.ruoyi: debug
-    org.springframework: warn
-
-# 用户配置
-user:
-  password:
-    # 密码错误{maxRetryCount}次锁定10分钟
-    maxRetryCount: 5
-
-# Spring配置
-spring:
-  # 模板引擎
-  thymeleaf:
-    mode: HTML
-    encoding: utf-8
-    # 禁用缓存
-    cache: false
-  # 资源信息
-  messages:
-    # 国际化资源文件路径
-    basename: static/i18n/messages
-  jackson:
-    time-zone: GMT+8
-    date-format: yyyy-MM-dd HH:mm:ss
-  profiles: 
-    active: druid
-  # 文件上传
-  servlet:
-     multipart:
-       # 单个文件大小
-       max-file-size:  10MB
-       # 设置总上传的文件大小
-       max-request-size:  20MB
-  # 服务模块
-  devtools:
-    restart:
-      # 热部署开关
-      enabled: true
-
-# MyBatis
-mybatis:
-    # 搜索指定包别名
-    typeAliasesPackage: com.ruoyi.**.domain
-    # 配置mapper的扫描,找到所有的mapper.xml映射文件
-    mapperLocations: classpath*:mapper/**/*Mapper.xml
-    # 加载全局的配置文件
-    configLocation: classpath:mybatis/mybatis-config.xml
-
-# PageHelper分页插件
-pagehelper: 
-  helperDialect: mysql
-  supportMethodsArguments: true
-  params: count=countSql 
-
-# Shiro
-shiro:
-  user:
-    # 登录地址
-    loginUrl: /login
-    # 权限认证失败地址
-    unauthorizedUrl: /unauth
-    # 首页地址
-    indexUrl: /index
-    # 验证码开关
-    captchaEnabled: true
-    # 验证码类型 math 数组计算 char 字符
-    captchaType: math
-  cookie:
-    # 设置Cookie的域名 默认空,即当前访问的域名
-    domain: 
-    # 设置cookie的有效访问路径
-    path: /
-    # 设置HttpOnly属性
-    httpOnly: true
-    # 设置Cookie的过期时间,天为单位
-    maxAge: 30
-    # 设置密钥,务必保持唯一性(生成方式,直接拷贝到main运行即可)Base64.encodeToString(CipherUtils.generateNewKey(128, "AES").getEncoded()) (默认启动生成随机秘钥,随机秘钥会导致之前客户端RememberMe Cookie无效,如设置固定秘钥RememberMe Cookie则有效)
-    cipherKey: 
-  session:
-    # Session超时时间,-1代表永不过期(默认30分钟)
-    expireTime: 30
-    # 同步session到数据库的周期(默认1分钟)
-    dbSyncPeriod: 1
-    # 相隔多久检查一次session的有效性,默认就是10分钟
-    validationInterval: 10
-    # 同一个用户最大会话数,比如2的意思是同一个账号允许最多同时两个人登录(默认-1不限制)
-    maxSession: -1
-    # 踢出之前登录的/之后登录的用户,默认踢出之前登录的用户
-    kickoutAfter: false
-  rememberMe:
-    # 是否开启记住我
-    enabled: true
-
-# 防止XSS攻击
-xss: 
-  # 过滤开关
-  enabled: true
-  # 排除链接(多个用逗号分隔)
-  excludes: /system/notice/*
-  # 匹配链接
-  urlPatterns: /system/*,/monitor/*,/tool/*
-
-# Swagger配置
-swagger:
-  # 是否开启swagger
-  enabled: true

+ 0 - 24
ruoyi-admin/src/main/resources/banner.txt

@@ -1,24 +0,0 @@
-Application Version: ${ruoyi.version}
-Spring Boot Version: ${spring-boot.version}
-////////////////////////////////////////////////////////////////////
-//                          _ooOoo_                               //
-//                         o8888888o                              //
-//                         88" . "88                              //
-//                         (| ^_^ |)                              //
-//                         O\  =  /O                              //
-//                      ____/`---'\____                           //
-//                    .'  \\|     |//  `.                         //
-//                   /  \\|||  :  |||//  \                        //
-//                  /  _||||| -:- |||||-  \                       //
-//                  |   | \\\  -  /// |   |                       //
-//                  | \_|  ''\---/''  |   |                       //
-//                  \  .-\__  `-`  ___/-. /                       //
-//                ___`. .'  /--.--\  `. . ___                     //
-//              ."" '<  `.___\_<|>_/___.'  >'"".                  //
-//            | | :  `- \`.;`\ _ /`;.`/ - ` : | |                 //
-//            \  \ `-.   \_ __\ /__ _/   .-` /  /                 //
-//      ========`-.____`-.___\_____/___.-`____.-'========         //
-//                           `=---='                              //
-//      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^        //
-//             佛祖保佑       永不宕机      永无BUG               //
-////////////////////////////////////////////////////////////////////

+ 0 - 91
ruoyi-admin/src/main/resources/ehcache/ehcache-shiro.xml

@@ -1,91 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<ehcache name="ruoyi" updateCheck="false">
-
-    <!-- 磁盘缓存位置 -->
-    <diskStore path="java.io.tmpdir"/>
-    
-    <!-- maxEntriesLocalHeap:堆内存中最大缓存对象数,0没有限制 -->
-    <!-- maxElementsInMemory: 在内存中缓存的element的最大数目。-->
-    <!-- eternal:elements是否永久有效,如果为true,timeouts将被忽略,element将永不过期 -->
-    <!-- timeToIdleSeconds:失效前的空闲秒数,当eternal为false时,这个属性才有效,0为不限制 -->
-    <!-- timeToLiveSeconds:失效前的存活秒数,创建时间到失效时间的间隔为存活时间,当eternal为false时,这个属性才有效,0为不限制 -->
-    <!-- overflowToDisk: 如果内存中数据超过内存限制,是否要缓存到磁盘上 -->
-    <!-- statistics:是否收集统计信息。如果需要监控缓存使用情况,应该打开这个选项。默认为关闭(统计会影响性能)。设置statistics="true"开启统计 -->
-    
-    <!-- 默认缓存 -->
-    <defaultCache
-            maxEntriesLocalHeap="1000"
-            eternal="false"
-            timeToIdleSeconds="3600"
-            timeToLiveSeconds="3600"
-            overflowToDisk="false">
-    </defaultCache>
-
-    <!-- 登录记录缓存 锁定10分钟 -->
-    <cache name="loginRecordCache"
-           maxEntriesLocalHeap="2000"
-           eternal="false"
-           timeToIdleSeconds="600"
-           timeToLiveSeconds="0"
-           overflowToDisk="false"
-           statistics="false">
-    </cache>
-
-    <!-- 系统活跃用户缓存 -->
-    <cache name="sys-userCache"
-           maxEntriesLocalHeap="10000"
-           overflowToDisk="false"
-           eternal="false"
-           diskPersistent="false"
-           timeToLiveSeconds="0"
-           timeToIdleSeconds="0"
-           statistics="false">
-    </cache>
-    
-    <!-- 系统用户授权缓存  没必要过期 -->
-    <cache name="sys-authCache"
-           maxEntriesLocalHeap="10000"
-           overflowToDisk="false"
-           eternal="false"
-           diskPersistent="false"
-           timeToLiveSeconds="0"
-           timeToIdleSeconds="0"
-           memoryStoreEvictionPolicy="LRU"
-           statistics="false"/>
-    
-    <!-- 系统缓存 -->
-    <cache name="sys-cache"
-           maxEntriesLocalHeap="1000"
-           eternal="true"
-           overflowToDisk="true"
-           statistics="false">
-    </cache>
-    
-    <!-- 系统参数缓存 -->
-    <cache name="sys-config"
-           maxEntriesLocalHeap="1000"
-           eternal="true"
-           overflowToDisk="true"
-           statistics="false">
-    </cache>
-    
-    <!-- 系统字典缓存 -->
-    <cache name="sys-dict"
-           maxEntriesLocalHeap="1000"
-           eternal="true"
-           overflowToDisk="true"
-           statistics="false">
-    </cache>
-    
-    <!-- 系统会话缓存 -->
-    <cache name="shiro-activeSessionCache"
-           maxEntriesLocalHeap="10000"
-           overflowToDisk="false"
-           eternal="false"
-           diskPersistent="false"
-           timeToLiveSeconds="0"
-           timeToIdleSeconds="0"
-           statistics="false"/>
-    
-</ehcache>
-	

+ 0 - 93
ruoyi-admin/src/main/resources/logback.xml

@@ -1,93 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<configuration>
-    <!-- 日志存放路径 -->
-	<property name="log.path" value="/home/ruoyi/logs" />
-    <!-- 日志输出格式 -->
-	<property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" />
-
-	<!-- 控制台输出 -->
-	<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
-		<encoder>
-			<pattern>${log.pattern}</pattern>
-		</encoder>
-	</appender>
-	
-	<!-- 系统日志输出 -->
-	<appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
-	    <file>${log.path}/sys-info.log</file>
-        <!-- 循环政策:基于时间创建日志文件 -->
-		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <!-- 日志文件名格式 -->
-			<fileNamePattern>${log.path}/sys-info.%d{yyyy-MM-dd}.log</fileNamePattern>
-			<!-- 日志最大的历史 60天 -->
-			<maxHistory>60</maxHistory>
-		</rollingPolicy>
-		<encoder>
-			<pattern>${log.pattern}</pattern>
-		</encoder>
-		<filter class="ch.qos.logback.classic.filter.LevelFilter">
-            <!-- 过滤的级别 -->
-            <level>INFO</level>
-            <!-- 匹配时的操作:接收(记录) -->
-            <onMatch>ACCEPT</onMatch>
-            <!-- 不匹配时的操作:拒绝(不记录) -->
-            <onMismatch>DENY</onMismatch>
-        </filter>
-	</appender>
-	
-	<appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
-	    <file>${log.path}/sys-error.log</file>
-        <!-- 循环政策:基于时间创建日志文件 -->
-        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <!-- 日志文件名格式 -->
-            <fileNamePattern>${log.path}/sys-error.%d{yyyy-MM-dd}.log</fileNamePattern>
-			<!-- 日志最大的历史 60天 -->
-			<maxHistory>60</maxHistory>
-        </rollingPolicy>
-        <encoder>
-            <pattern>${log.pattern}</pattern>
-        </encoder>
-        <filter class="ch.qos.logback.classic.filter.LevelFilter">
-            <!-- 过滤的级别 -->
-            <level>ERROR</level>
-			<!-- 匹配时的操作:接收(记录) -->
-            <onMatch>ACCEPT</onMatch>
-			<!-- 不匹配时的操作:拒绝(不记录) -->
-            <onMismatch>DENY</onMismatch>
-        </filter>
-    </appender>
-	
-	<!-- 用户访问日志输出  -->
-    <appender name="sys-user" class="ch.qos.logback.core.rolling.RollingFileAppender">
-		<file>${log.path}/sys-user.log</file>
-        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <!-- 按天回滚 daily -->
-            <fileNamePattern>${log.path}/sys-user.%d{yyyy-MM-dd}.log</fileNamePattern>
-            <!-- 日志最大的历史 60天 -->
-            <maxHistory>60</maxHistory>
-        </rollingPolicy>
-        <encoder>
-            <pattern>${log.pattern}</pattern>
-        </encoder>
-    </appender>
-	
-	<!-- 系统模块日志级别控制  -->
-	<logger name="com.ruoyi" level="info" />
-	<!-- Spring日志级别控制  -->
-	<logger name="org.springframework" level="warn" />
-
-	<root level="info">
-		<appender-ref ref="console" />
-	</root>
-	
-	<!--系统操作日志-->
-    <root level="info">
-        <appender-ref ref="file_info" />
-        <appender-ref ref="file_error" />
-    </root>
-	
-	<!--系统用户操作日志-->
-    <logger name="sys-user" level="info">
-        <appender-ref ref="sys-user"/>
-    </logger>
-</configuration> 

+ 0 - 617
ruoyi-admin/src/main/resources/static/ajax/libs/beautifyhtml/beautifyhtml.js

@@ -1,617 +0,0 @@
-/*jshint curly:true, eqeqeq:true, laxbreak:true, noempty:false */
-/*
-
-  The MIT License (MIT)
-
-  Copyright (c) 2007-2013 Einar Lielmanis and contributors.
-
-  Permission is hereby granted, free of charge, to any person
-  obtaining a copy of this software and associated documentation files
-  (the "Software"), to deal in the Software without restriction,
-  including without limitation the rights to use, copy, modify, merge,
-  publish, distribute, sublicense, and/or sell copies of the Software,
-  and to permit persons to whom the Software is furnished to do so,
-  subject to the following conditions:
-
-  The above copyright notice and this permission notice shall be
-  included in all copies or substantial portions of the Software.
-
-  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
-  BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
-  ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-  CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-  SOFTWARE.
-
-
- Style HTML
----------------
-
-  Written by Nochum Sossonko, (nsossonko@hotmail.com)
-
-  Based on code initially developed by: Einar Lielmanis, <elfz@laacz.lv>
-    http://jsbeautifier.org/
-
-  Usage:
-    style_html(html_source);
-
-    style_html(html_source, options);
-
-  The options are:
-    indent_size (default 4)          — indentation size,
-    indent_char (default space)      — character to indent with,
-    max_char (default 250)            -  maximum amount of characters per line (0 = disable)
-    brace_style (default "collapse") - "collapse" | "expand" | "end-expand"
-            put braces on the same line as control statements (default), or put braces on own line (Allman / ANSI style), or just put end braces on own line.
-    unformatted (defaults to inline tags) - list of tags, that shouldn't be reformatted
-    indent_scripts (default normal)  - "keep"|"separate"|"normal"
-
-    e.g.
-
-    style_html(html_source, {
-      'indent_size': 2,
-      'indent_char': ' ',
-      'max_char': 78,
-      'brace_style': 'expand',
-      'unformatted': ['a', 'sub', 'sup', 'b', 'i', 'u']
-    });
-*/
-
-(function() {
-
-    function style_html(html_source, options, js_beautify, css_beautify) {
-    //Wrapper function to invoke all the necessary constructors and deal with the output.
-
-      var multi_parser,
-          indent_size,
-          indent_character,
-          max_char,
-          brace_style,
-          unformatted;
-
-      options = options || {};
-      indent_size = options.indent_size || 4;
-      indent_character = options.indent_char || ' ';
-      brace_style = options.brace_style || 'collapse';
-      max_char = options.max_char === 0 ? Infinity : options.max_char || 250;
-      unformatted = options.unformatted || ['a', 'span', 'bdo', 'em', 'strong', 'dfn', 'code', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'q', 'sub', 'sup', 'tt', 'i', 'b', 'big', 'small', 'u', 's', 'strike', 'font', 'ins', 'del', 'pre', 'address', 'dt', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6'];
-
-      function Parser() {
-
-        this.pos = 0; //Parser position
-        this.token = '';
-        this.current_mode = 'CONTENT'; //reflects the current Parser mode: TAG/CONTENT
-        this.tags = { //An object to hold tags, their position, and their parent-tags, initiated with default values
-          parent: 'parent1',
-          parentcount: 1,
-          parent1: ''
-        };
-        this.tag_type = '';
-        this.token_text = this.last_token = this.last_text = this.token_type = '';
-
-        this.Utils = { //Uilities made available to the various functions
-          whitespace: "\n\r\t ".split(''),
-          single_token: 'br,input,link,meta,!doctype,basefont,base,area,hr,wbr,param,img,isindex,?xml,embed,?php,?,?='.split(','), //all the single tags for HTML
-          extra_liners: 'head,body,/html'.split(','), //for tags that need a line of whitespace before them
-          in_array: function (what, arr) {
-            for (var i=0; i<arr.length; i++) {
-              if (what === arr[i]) {
-                return true;
-              }
-            }
-            return false;
-          }
-        };
-
-        this.get_content = function () { //function to capture regular content between tags
-
-          var input_char = '',
-              content = [],
-              space = false; //if a space is needed
-
-          while (this.input.charAt(this.pos) !== '<') {
-            if (this.pos >= this.input.length) {
-              return content.length?content.join(''):['', 'TK_EOF'];
-            }
-
-            input_char = this.input.charAt(this.pos);
-            this.pos++;
-            this.line_char_count++;
-
-            if (this.Utils.in_array(input_char, this.Utils.whitespace)) {
-              if (content.length) {
-                space = true;
-              }
-              this.line_char_count--;
-              continue; //don't want to insert unnecessary space
-            }
-            else if (space) {
-              if (this.line_char_count >= this.max_char) { //insert a line when the max_char is reached
-                content.push('\n');
-                for (var i=0; i<this.indent_level; i++) {
-                  content.push(this.indent_string);
-                }
-                this.line_char_count = 0;
-              }
-              else{
-                content.push(' ');
-                this.line_char_count++;
-              }
-              space = false;
-            }
-            content.push(input_char); //letter at-a-time (or string) inserted to an array
-          }
-          return content.length?content.join(''):'';
-        };
-
-        this.get_contents_to = function (name) { //get the full content of a script or style to pass to js_beautify
-          if (this.pos === this.input.length) {
-            return ['', 'TK_EOF'];
-          }
-          var input_char = '';
-          var content = '';
-          var reg_match = new RegExp('</' + name + '\\s*>', 'igm');
-          reg_match.lastIndex = this.pos;
-          var reg_array = reg_match.exec(this.input);
-          var end_script = reg_array?reg_array.index:this.input.length; //absolute end of script
-          if(this.pos < end_script) { //get everything in between the script tags
-            content = this.input.substring(this.pos, end_script);
-            this.pos = end_script;
-          }
-          return content;
-        };
-
-        this.record_tag = function (tag){ //function to record a tag and its parent in this.tags Object
-          if (this.tags[tag + 'count']) { //check for the existence of this tag type
-            this.tags[tag + 'count']++;
-            this.tags[tag + this.tags[tag + 'count']] = this.indent_level; //and record the present indent level
-          }
-          else { //otherwise initialize this tag type
-            this.tags[tag + 'count'] = 1;
-            this.tags[tag + this.tags[tag + 'count']] = this.indent_level; //and record the present indent level
-          }
-          this.tags[tag + this.tags[tag + 'count'] + 'parent'] = this.tags.parent; //set the parent (i.e. in the case of a div this.tags.div1parent)
-          this.tags.parent = tag + this.tags[tag + 'count']; //and make this the current parent (i.e. in the case of a div 'div1')
-        };
-
-        this.retrieve_tag = function (tag) { //function to retrieve the opening tag to the corresponding closer
-          if (this.tags[tag + 'count']) { //if the openener is not in the Object we ignore it
-            var temp_parent = this.tags.parent; //check to see if it's a closable tag.
-            while (temp_parent) { //till we reach '' (the initial value);
-              if (tag + this.tags[tag + 'count'] === temp_parent) { //if this is it use it
-                break;
-              }
-              temp_parent = this.tags[temp_parent + 'parent']; //otherwise keep on climbing up the DOM Tree
-            }
-            if (temp_parent) { //if we caught something
-              this.indent_level = this.tags[tag + this.tags[tag + 'count']]; //set the indent_level accordingly
-              this.tags.parent = this.tags[temp_parent + 'parent']; //and set the current parent
-            }
-            delete this.tags[tag + this.tags[tag + 'count'] + 'parent']; //delete the closed tags parent reference...
-            delete this.tags[tag + this.tags[tag + 'count']]; //...and the tag itself
-            if (this.tags[tag + 'count'] === 1) {
-              delete this.tags[tag + 'count'];
-            }
-            else {
-              this.tags[tag + 'count']--;
-            }
-          }
-        };
-
-        this.get_tag = function (peek) { //function to get a full tag and parse its type
-          var input_char = '',
-              content = [],
-              comment = '',
-              space = false,
-              tag_start, tag_end,
-              orig_pos = this.pos,
-              orig_line_char_count = this.line_char_count;
-
-          peek = peek !== undefined ? peek : false;
-
-          do {
-            if (this.pos >= this.input.length) {
-              if (peek) {
-                this.pos = orig_pos;
-                this.line_char_count = orig_line_char_count;
-              }
-              return content.length?content.join(''):['', 'TK_EOF'];
-            }
-
-            input_char = this.input.charAt(this.pos);
-            this.pos++;
-            this.line_char_count++;
-
-            if (this.Utils.in_array(input_char, this.Utils.whitespace)) { //don't want to insert unnecessary space
-              space = true;
-              this.line_char_count--;
-              continue;
-            }
-
-            if (input_char === "'" || input_char === '"') {
-              if (!content[1] || content[1] !== '!') { //if we're in a comment strings don't get treated specially
-                input_char += this.get_unformatted(input_char);
-                space = true;
-              }
-            }
-
-            if (input_char === '=') { //no space before =
-              space = false;
-            }
-
-            if (content.length && content[content.length-1] !== '=' && input_char !== '>' && space) {
-                //no space after = or before >
-              if (this.line_char_count >= this.max_char) {
-                this.print_newline(false, content);
-                this.line_char_count = 0;
-              }
-              else {
-                content.push(' ');
-                this.line_char_count++;
-              }
-              space = false;
-            }
-            if (input_char === '<') {
-              tag_start = this.pos - 1;
-            }
-            content.push(input_char); //inserts character at-a-time (or string)
-          } while (input_char !== '>');
-
-          var tag_complete = content.join('');
-          var tag_index;
-          if (tag_complete.indexOf(' ') !== -1) { //if there's whitespace, thats where the tag name ends
-            tag_index = tag_complete.indexOf(' ');
-          }
-          else { //otherwise go with the tag ending
-            tag_index = tag_complete.indexOf('>');
-          }
-          var tag_check = tag_complete.substring(1, tag_index).toLowerCase();
-          if (tag_complete.charAt(tag_complete.length-2) === '/' ||
-            this.Utils.in_array(tag_check, this.Utils.single_token)) { //if this tag name is a single tag type (either in the list or has a closing /)
-            if ( ! peek) {
-              this.tag_type = 'SINGLE';
-            }
-          }
-          else if (tag_check === 'script') { //for later script handling
-            if ( ! peek) {
-              this.record_tag(tag_check);
-              this.tag_type = 'SCRIPT';
-            }
-          }
-          else if (tag_check === 'style') { //for future style handling (for now it justs uses get_content)
-            if ( ! peek) {
-              this.record_tag(tag_check);
-              this.tag_type = 'STYLE';
-            }
-          }
-          else if (this.is_unformatted(tag_check, unformatted)) { // do not reformat the "unformatted" tags
-            comment = this.get_unformatted('</'+tag_check+'>', tag_complete); //...delegate to get_unformatted function
-            content.push(comment);
-            // Preserve collapsed whitespace either before or after this tag.
-            if (tag_start > 0 && this.Utils.in_array(this.input.charAt(tag_start - 1), this.Utils.whitespace)){
-                content.splice(0, 0, this.input.charAt(tag_start - 1));
-            }
-            tag_end = this.pos - 1;
-            if (this.Utils.in_array(this.input.charAt(tag_end + 1), this.Utils.whitespace)){
-                content.push(this.input.charAt(tag_end + 1));
-            }
-            this.tag_type = 'SINGLE';
-          }
-          else if (tag_check.charAt(0) === '!') { //peek for <!-- comment
-            if (tag_check.indexOf('[if') !== -1) { //peek for <!--[if conditional comment
-              if (tag_complete.indexOf('!IE') !== -1) { //this type needs a closing --> so...
-                comment = this.get_unformatted('-->', tag_complete); //...delegate to get_unformatted
-                content.push(comment);
-              }
-              if ( ! peek) {
-                this.tag_type = 'START';
-              }
-            }
-            else if (tag_check.indexOf('[endif') !== -1) {//peek for <!--[endif end conditional comment
-              this.tag_type = 'END';
-              this.unindent();
-            }
-            else if (tag_check.indexOf('[cdata[') !== -1) { //if it's a <[cdata[ comment...
-              comment = this.get_unformatted(']]>', tag_complete); //...delegate to get_unformatted function
-              content.push(comment);
-              if ( ! peek) {
-                this.tag_type = 'SINGLE'; //<![CDATA[ comments are treated like single tags
-              }
-            }
-            else {
-              comment = this.get_unformatted('-->', tag_complete);
-              content.push(comment);
-              this.tag_type = 'SINGLE';
-            }
-          }
-          else if ( ! peek) {
-            if (tag_check.charAt(0) === '/') { //this tag is a double tag so check for tag-ending
-              this.retrieve_tag(tag_check.substring(1)); //remove it and all ancestors
-              this.tag_type = 'END';
-            }
-            else { //otherwise it's a start-tag
-              this.record_tag(tag_check); //push it on the tag stack
-              this.tag_type = 'START';
-            }
-            if (this.Utils.in_array(tag_check, this.Utils.extra_liners)) { //check if this double needs an extra line
-              this.print_newline(true, this.output);
-            }
-          }
-
-          if (peek) {
-            this.pos = orig_pos;
-            this.line_char_count = orig_line_char_count;
-          }
-
-          return content.join(''); //returns fully formatted tag
-        };
-
-        this.get_unformatted = function (delimiter, orig_tag) { //function to return unformatted content in its entirety
-
-          if (orig_tag && orig_tag.toLowerCase().indexOf(delimiter) !== -1) {
-            return '';
-          }
-          var input_char = '';
-          var content = '';
-          var space = true;
-          do {
-
-            if (this.pos >= this.input.length) {
-              return content;
-            }
-
-            input_char = this.input.charAt(this.pos);
-            this.pos++;
-
-            if (this.Utils.in_array(input_char, this.Utils.whitespace)) {
-              if (!space) {
-                this.line_char_count--;
-                continue;
-              }
-              if (input_char === '\n' || input_char === '\r') {
-                content += '\n';
-                /*  Don't change tab indention for unformatted blocks.  If using code for html editing, this will greatly affect <pre> tags if they are specified in the 'unformatted array'
-                for (var i=0; i<this.indent_level; i++) {
-                  content += this.indent_string;
-                }
-                space = false; //...and make sure other indentation is erased
-                */
-                this.line_char_count = 0;
-                continue;
-              }
-            }
-            content += input_char;
-            this.line_char_count++;
-            space = true;
-
-
-          } while (content.toLowerCase().indexOf(delimiter) === -1);
-          return content;
-        };
-
-        this.get_token = function () { //initial handler for token-retrieval
-          var token;
-
-          if (this.last_token === 'TK_TAG_SCRIPT' || this.last_token === 'TK_TAG_STYLE') { //check if we need to format javascript
-           var type = this.last_token.substr(7);
-           token = this.get_contents_to(type);
-            if (typeof token !== 'string') {
-              return token;
-            }
-            return [token, 'TK_' + type];
-          }
-          if (this.current_mode === 'CONTENT') {
-            token = this.get_content();
-            if (typeof token !== 'string') {
-              return token;
-            }
-            else {
-              return [token, 'TK_CONTENT'];
-            }
-          }
-
-          if (this.current_mode === 'TAG') {
-            token = this.get_tag();
-            if (typeof token !== 'string') {
-              return token;
-            }
-            else {
-              var tag_name_type = 'TK_TAG_' + this.tag_type;
-              return [token, tag_name_type];
-            }
-          }
-        };
-
-        this.get_full_indent = function (level) {
-          level = this.indent_level + level || 0;
-          if (level < 1) {
-            return '';
-          }
-
-          return Array(level + 1).join(this.indent_string);
-        };
-
-        this.is_unformatted = function(tag_check, unformatted) {
-            //is this an HTML5 block-level link?
-            if (!this.Utils.in_array(tag_check, unformatted)){
-                return false;
-            }
-
-            if (tag_check.toLowerCase() !== 'a' || !this.Utils.in_array('a', unformatted)){
-                return true;
-            }
-
-            //at this point we have an  tag; is its first child something we want to remain
-            //unformatted?
-            var next_tag = this.get_tag(true /* peek. */);
-
-            // tets next_tag to see if it is just html tag (no external content)
-            var tag = (next_tag || "").match(/^\s*<\s*\/?([a-z]*)\s*[^>]*>\s*$/);
-
-            // if next_tag comes back but is not an isolated tag, then
-            // let's treat the 'a' tag as having content
-            // and respect the unformatted option
-            if (!tag || this.Utils.in_array(tag, unformatted)){
-                return true;
-            } else {
-                return false;
-            }
-        };
-
-        this.printer = function (js_source, indent_character, indent_size, max_char, brace_style) { //handles input/output and some other printing functions
-
-          this.input = js_source || ''; //gets the input for the Parser
-          this.output = [];
-          this.indent_character = indent_character;
-          this.indent_string = '';
-          this.indent_size = indent_size;
-          this.brace_style = brace_style;
-          this.indent_level = 0;
-          this.max_char = max_char;
-          this.line_char_count = 0; //count to see if max_char was exceeded
-
-          for (var i=0; i<this.indent_size; i++) {
-            this.indent_string += this.indent_character;
-          }
-
-          this.print_newline = function (ignore, arr) {
-            this.line_char_count = 0;
-            if (!arr || !arr.length) {
-              return;
-            }
-            if (!ignore) { //we might want the extra line
-              while (this.Utils.in_array(arr[arr.length-1], this.Utils.whitespace)) {
-                arr.pop();
-              }
-            }
-            arr.push('\n');
-            for (var i=0; i<this.indent_level; i++) {
-              arr.push(this.indent_string);
-            }
-          };
-
-          this.print_token = function (text) {
-            this.output.push(text);
-          };
-
-          this.indent = function () {
-            this.indent_level++;
-          };
-
-          this.unindent = function () {
-            if (this.indent_level > 0) {
-              this.indent_level--;
-            }
-          };
-        };
-        return this;
-      }
-
-      /*_____________________--------------------_____________________*/
-
-      multi_parser = new Parser(); //wrapping functions Parser
-      multi_parser.printer(html_source, indent_character, indent_size, max_char, brace_style); //initialize starting values
-
-      while (true) {
-          var t = multi_parser.get_token();
-          multi_parser.token_text = t[0];
-          multi_parser.token_type = t[1];
-
-        if (multi_parser.token_type === 'TK_EOF') {
-          break;
-        }
-
-        switch (multi_parser.token_type) {
-          case 'TK_TAG_START':
-            multi_parser.print_newline(false, multi_parser.output);
-            multi_parser.print_token(multi_parser.token_text);
-            multi_parser.indent();
-            multi_parser.current_mode = 'CONTENT';
-            break;
-          case 'TK_TAG_STYLE':
-          case 'TK_TAG_SCRIPT':
-            multi_parser.print_newline(false, multi_parser.output);
-            multi_parser.print_token(multi_parser.token_text);
-            multi_parser.current_mode = 'CONTENT';
-            break;
-          case 'TK_TAG_END':
-            //Print new line only if the tag has no content and has child
-            if (multi_parser.last_token === 'TK_CONTENT' && multi_parser.last_text === '') {
-                var tag_name = multi_parser.token_text.match(/\w+/)[0];
-                var tag_extracted_from_last_output = multi_parser.output[multi_parser.output.length -1].match(/<\s*(\w+)/);
-                if (tag_extracted_from_last_output === null || tag_extracted_from_last_output[1] !== tag_name) {
-                    multi_parser.print_newline(true, multi_parser.output);
-                }
-            }
-            multi_parser.print_token(multi_parser.token_text);
-            multi_parser.current_mode = 'CONTENT';
-            break;
-          case 'TK_TAG_SINGLE':
-            // Don't add a newline before elements that should remain unformatted.
-            var tag_check = multi_parser.token_text.match(/^\s*<([a-z]+)/i);
-            if (!tag_check || !multi_parser.Utils.in_array(tag_check[1], unformatted)){
-                multi_parser.print_newline(false, multi_parser.output);
-            }
-            multi_parser.print_token(multi_parser.token_text);
-            multi_parser.current_mode = 'CONTENT';
-            break;
-          case 'TK_CONTENT':
-            if (multi_parser.token_text !== '') {
-              multi_parser.print_token(multi_parser.token_text);
-            }
-            multi_parser.current_mode = 'TAG';
-            break;
-          case 'TK_STYLE':
-          case 'TK_SCRIPT':
-            if (multi_parser.token_text !== '') {
-              multi_parser.output.push('\n');
-              var text = multi_parser.token_text,
-                  _beautifier,
-                  script_indent_level = 1;
-              if (multi_parser.token_type === 'TK_SCRIPT') {
-                _beautifier = typeof js_beautify === 'function' && js_beautify;
-              } else if (multi_parser.token_type === 'TK_STYLE') {
-                _beautifier = typeof css_beautify === 'function' && css_beautify;
-              }
-
-              if (options.indent_scripts === "keep") {
-                script_indent_level = 0;
-              } else if (options.indent_scripts === "separate") {
-                script_indent_level = -multi_parser.indent_level;
-              }
-
-              var indentation = multi_parser.get_full_indent(script_indent_level);
-              if (_beautifier) {
-                // call the Beautifier if avaliable
-                text = _beautifier(text.replace(/^\s*/, indentation), options);
-              } else {
-                // simply indent the string otherwise
-                var white = text.match(/^\s*/)[0];
-                var _level = white.match(/[^\n\r]*$/)[0].split(multi_parser.indent_string).length - 1;
-                var reindent = multi_parser.get_full_indent(script_indent_level -_level);
-                text = text.replace(/^\s*/, indentation)
-                       .replace(/\r\n|\r|\n/g, '\n' + reindent)
-                       .replace(/\s*$/, '');
-              }
-              if (text) {
-                multi_parser.print_token(text);
-                multi_parser.print_newline(true, multi_parser.output);
-              }
-            }
-            multi_parser.current_mode = 'TAG';
-            break;
-        }
-        multi_parser.last_token = multi_parser.token_type;
-        multi_parser.last_text = multi_parser.token_text;
-      }
-      return multi_parser.output.join('');
-    }
-
-    // If we're running a web page and don't have either of the above, add our one global
-    window.html_beautify = function(html_source, options) {
-        return style_html(html_source, options, window.js_beautify, window.css_beautify);
-    };
-
-}());

+ 0 - 620
ruoyi-admin/src/main/resources/static/ajax/libs/blockUI/jquery.blockUI.js

@@ -1,620 +0,0 @@
-/*!
- * jQuery blockUI plugin
- * Version 2.70.0-2014.11.23
- * Requires jQuery v1.7 or later
- *
- * Examples at: http://malsup.com/jquery/block/
- * Copyright (c) 2007-2013 M. Alsup
- * Dual licensed under the MIT and GPL licenses:
- * http://www.opensource.org/licenses/mit-license.php
- * http://www.gnu.org/licenses/gpl.html
- *
- * Thanks to Amir-Hossein Sobhi for some excellent contributions!
- */
-
-;(function() {
-/*jshint eqeqeq:false curly:false latedef:false */
-"use strict";
-
-	function setup($) {
-		$.fn._fadeIn = $.fn.fadeIn;
-
-		var noOp = $.noop || function() {};
-
-		// this bit is to ensure we don't call setExpression when we shouldn't (with extra muscle to handle
-		// confusing userAgent strings on Vista)
-		var msie = /MSIE/.test(navigator.userAgent);
-		var ie6  = /MSIE 6.0/.test(navigator.userAgent) && ! /MSIE 8.0/.test(navigator.userAgent);
-		var mode = document.documentMode || 0;
-		var setExpr = $.isFunction( document.createElement('div').style.setExpression );
-
-		// global $ methods for blocking/unblocking the entire page
-		$.blockUI   = function(opts) { install(window, opts); };
-		$.unblockUI = function(opts) { remove(window, opts); };
-
-		// convenience method for quick growl-like notifications  (http://www.google.com/search?q=growl)
-		$.growlUI = function(title, message, timeout, onClose) {
-			var $m = $('<div class="growlUI"></div>');
-			if (title) $m.append('<h1>'+title+'</h1>');
-			if (message) $m.append('<h2>'+message+'</h2>');
-			if (timeout === undefined) timeout = 3000;
-
-			// Added by konapun: Set timeout to 30 seconds if this growl is moused over, like normal toast notifications
-			var callBlock = function(opts) {
-				opts = opts || {};
-
-				$.blockUI({
-					message: $m,
-					fadeIn : typeof opts.fadeIn  !== 'undefined' ? opts.fadeIn  : 700,
-					fadeOut: typeof opts.fadeOut !== 'undefined' ? opts.fadeOut : 1000,
-					timeout: typeof opts.timeout !== 'undefined' ? opts.timeout : timeout,
-					centerY: false,
-					showOverlay: false,
-					onUnblock: onClose,
-					css: $.blockUI.defaults.growlCSS
-				});
-			};
-
-			callBlock();
-			var nonmousedOpacity = $m.css('opacity');
-			$m.mouseover(function() {
-				callBlock({
-					fadeIn: 0,
-					timeout: 30000
-				});
-
-				var displayBlock = $('.blockMsg');
-				displayBlock.stop(); // cancel fadeout if it has started
-				displayBlock.fadeTo(300, 1); // make it easier to read the message by removing transparency
-			}).mouseout(function() {
-				$('.blockMsg').fadeOut(1000);
-			});
-			// End konapun additions
-		};
-
-		// plugin method for blocking element content
-		$.fn.block = function(opts) {
-			if ( this[0] === window ) {
-				$.blockUI( opts );
-				return this;
-			}
-			var fullOpts = $.extend({}, $.blockUI.defaults, opts || {});
-			this.each(function() {
-				var $el = $(this);
-				if (fullOpts.ignoreIfBlocked && $el.data('blockUI.isBlocked'))
-					return;
-				$el.unblock({ fadeOut: 0 });
-			});
-
-			return this.each(function() {
-				if ($.css(this,'position') == 'static') {
-					this.style.position = 'relative';
-					$(this).data('blockUI.static', true);
-				}
-				this.style.zoom = 1; // force 'hasLayout' in ie
-				install(this, opts);
-			});
-		};
-
-		// plugin method for unblocking element content
-		$.fn.unblock = function(opts) {
-			if ( this[0] === window ) {
-				$.unblockUI( opts );
-				return this;
-			}
-			return this.each(function() {
-				remove(this, opts);
-			});
-		};
-
-		$.blockUI.version = 2.70; // 2nd generation blocking at no extra cost!
-
-		// override these in your code to change the default behavior and style
-		$.blockUI.defaults = {
-			// message displayed when blocking (use null for no message)
-			message:  '<div class="loaderbox"><div class="loading-activity"></div> 加载中......</div>',
-
-			title: null,		// title string; only used when theme == true
-			draggable: true,	// only used when theme == true (requires jquery-ui.js to be loaded)
-
-			theme: false, // set to true to use with jQuery UI themes
-
-			// styles for the message when blocking; if you wish to disable
-			// these and use an external stylesheet then do this in your code:
-			// $.blockUI.defaults.css = {};
-			css: {
-				padding:	0,
-				margin:		0,
-				width:		'30%',
-				top:		'40%',
-				left:		'35%',
-				textAlign:	'center',
-				color:		'#000',
-				border:		'0px',
-				backgroundColor:'transparent',
-				cursor:		'wait'
-			},
-
-			// minimal style set used when themes are used
-			themedCSS: {
-				width:	'30%',
-				top:	'40%',
-				left:	'35%'
-			},
-
-			// styles for the overlay
-			overlayCSS:  {
-				backgroundColor:	'#000',
-				opacity:			0.6,
-				cursor:				'wait'
-			},
-
-			// style to replace wait cursor before unblocking to correct issue
-			// of lingering wait cursor
-			cursorReset: 'default',
-
-			// styles applied when using $.growlUI
-			growlCSS: {
-				width:		'350px',
-				top:		'10px',
-				left:		'',
-				right:		'10px',
-				border:		'none',
-				padding:	'5px',
-				opacity:	0.6,
-				cursor:		'default',
-				color:		'#fff',
-				backgroundColor: '#000',
-				'-webkit-border-radius':'10px',
-				'-moz-border-radius':	'10px',
-				'border-radius':		'10px'
-			},
-
-			// IE issues: 'about:blank' fails on HTTPS and javascript:false is s-l-o-w
-			// (hat tip to Jorge H. N. de Vasconcelos)
-			/*jshint scripturl:true */
-			iframeSrc: /^https/i.test(window.location.href || '') ? 'javascript:false' : 'about:blank',
-
-			// force usage of iframe in non-IE browsers (handy for blocking applets)
-			forceIframe: false,
-
-			// z-index for the blocking overlay
-			baseZ: 1000,
-
-			// set these to true to have the message automatically centered
-			centerX: true, // <-- only effects element blocking (page block controlled via css above)
-			centerY: true,
-
-			// allow body element to be stetched in ie6; this makes blocking look better
-			// on "short" pages.  disable if you wish to prevent changes to the body height
-			allowBodyStretch: true,
-
-			// enable if you want key and mouse events to be disabled for content that is blocked
-			bindEvents: true,
-
-			// be default blockUI will supress tab navigation from leaving blocking content
-			// (if bindEvents is true)
-			constrainTabKey: true,
-
-			// fadeIn time in millis; set to 0 to disable fadeIn on block
-			fadeIn:  200,
-
-			// fadeOut time in millis; set to 0 to disable fadeOut on unblock
-			fadeOut:  400,
-
-			// time in millis to wait before auto-unblocking; set to 0 to disable auto-unblock
-			timeout: 0,
-
-			// disable if you don't want to show the overlay
-			showOverlay: true,
-
-			// if true, focus will be placed in the first available input field when
-			// page blocking
-			focusInput: true,
-
-            // elements that can receive focus
-            focusableElements: ':input:enabled:visible',
-
-			// suppresses the use of overlay styles on FF/Linux (due to performance issues with opacity)
-			// no longer needed in 2012
-			// applyPlatformOpacityRules: true,
-
-			// callback method invoked when fadeIn has completed and blocking message is visible
-			onBlock: null,
-
-			// callback method invoked when unblocking has completed; the callback is
-			// passed the element that has been unblocked (which is the window object for page
-			// blocks) and the options that were passed to the unblock call:
-			//	onUnblock(element, options)
-			onUnblock: null,
-
-			// callback method invoked when the overlay area is clicked.
-			// setting this will turn the cursor to a pointer, otherwise cursor defined in overlayCss will be used.
-			onOverlayClick: null,
-
-			// don't ask; if you really must know: http://groups.google.com/group/jquery-en/browse_thread/thread/36640a8730503595/2f6a79a77a78e493#2f6a79a77a78e493
-			quirksmodeOffsetHack: 4,
-
-			// class name of the message block
-			blockMsgClass: 'blockMsg',
-
-			// if it is already blocked, then ignore it (don't unblock and reblock)
-			ignoreIfBlocked: false
-		};
-
-		// private data and functions follow...
-
-		var pageBlock = null;
-		var pageBlockEls = [];
-
-		function install(el, opts) {
-			var css, themedCSS;
-			var full = (el == window);
-			var msg = (opts && opts.message !== undefined ? opts.message : undefined);
-			opts = $.extend({}, $.blockUI.defaults, opts || {});
-
-			if (opts.ignoreIfBlocked && $(el).data('blockUI.isBlocked'))
-				return;
-
-			opts.overlayCSS = $.extend({}, $.blockUI.defaults.overlayCSS, opts.overlayCSS || {});
-			css = $.extend({}, $.blockUI.defaults.css, opts.css || {});
-			if (opts.onOverlayClick)
-				opts.overlayCSS.cursor = 'pointer';
-
-			themedCSS = $.extend({}, $.blockUI.defaults.themedCSS, opts.themedCSS || {});
-			msg = msg === undefined ? opts.message : msg;
-
-			// remove the current block (if there is one)
-			if (full && pageBlock)
-				remove(window, {fadeOut:0});
-
-			// if an existing element is being used as the blocking content then we capture
-			// its current place in the DOM (and current display style) so we can restore
-			// it when we unblock
-			if (msg && typeof msg != 'string' && (msg.parentNode || msg.jquery)) {
-				var node = msg.jquery ? msg[0] : msg;
-				var data = {};
-				$(el).data('blockUI.history', data);
-				data.el = node;
-				data.parent = node.parentNode;
-				data.display = node.style.display;
-				data.position = node.style.position;
-				if (data.parent)
-					data.parent.removeChild(node);
-			}
-
-			$(el).data('blockUI.onUnblock', opts.onUnblock);
-			var z = opts.baseZ;
-
-			// blockUI uses 3 layers for blocking, for simplicity they are all used on every platform;
-			// layer1 is the iframe layer which is used to supress bleed through of underlying content
-			// layer2 is the overlay layer which has opacity and a wait cursor (by default)
-			// layer3 is the message content that is displayed while blocking
-			var lyr1, lyr2, lyr3, s;
-			if (msie || opts.forceIframe)
-				lyr1 = $('<iframe class="blockUI" style="z-index:'+ (z++) +';display:none;border:none;margin:0;padding:0;position:absolute;width:100%;height:100%;top:0;left:0" src="'+opts.iframeSrc+'"></iframe>');
-			else
-				lyr1 = $('<div class="blockUI" style="display:none"></div>');
-
-			if (opts.theme)
-				lyr2 = $('<div class="blockUI blockOverlay ui-widget-overlay" style="z-index:'+ (z++) +';display:none"></div>');
-			else
-				lyr2 = $('<div class="blockUI blockOverlay" style="z-index:'+ (z++) +';display:none;border:none;margin:0;padding:0;width:100%;height:100%;top:0;left:0"></div>');
-
-			if (opts.theme && full) {
-				s = '<div class="blockUI ' + opts.blockMsgClass + ' blockPage ui-dialog ui-widget ui-corner-all" style="z-index:'+(z+10)+';display:none;position:fixed">';
-				if ( opts.title ) {
-					s += '<div class="ui-widget-header ui-dialog-titlebar ui-corner-all blockTitle">'+(opts.title || '&nbsp;')+'</div>';
-				}
-				s += '<div class="ui-widget-content ui-dialog-content"></div>';
-				s += '</div>';
-			}
-			else if (opts.theme) {
-				s = '<div class="blockUI ' + opts.blockMsgClass + ' blockElement ui-dialog ui-widget ui-corner-all" style="z-index:'+(z+10)+';display:none;position:absolute">';
-				if ( opts.title ) {
-					s += '<div class="ui-widget-header ui-dialog-titlebar ui-corner-all blockTitle">'+(opts.title || '&nbsp;')+'</div>';
-				}
-				s += '<div class="ui-widget-content ui-dialog-content"></div>';
-				s += '</div>';
-			}
-			else if (full) {
-				s = '<div class="blockUI ' + opts.blockMsgClass + ' blockPage" style="z-index:'+(z+10)+';display:none;position:fixed"></div>';
-			}
-			else {
-				s = '<div class="blockUI ' + opts.blockMsgClass + ' blockElement" style="z-index:'+(z+10)+';display:none;position:absolute"></div>';
-			}
-			lyr3 = $(s);
-
-			// if we have a message, style it
-			if (msg) {
-				if (opts.theme) {
-					lyr3.css(themedCSS);
-					lyr3.addClass('ui-widget-content');
-				}
-				else
-					lyr3.css(css);
-			}
-
-			// style the overlay
-			if (!opts.theme /*&& (!opts.applyPlatformOpacityRules)*/)
-				lyr2.css(opts.overlayCSS);
-			lyr2.css('position', full ? 'fixed' : 'absolute');
-
-			// make iframe layer transparent in IE
-			if (msie || opts.forceIframe)
-				lyr1.css('opacity',0.0);
-
-			//$([lyr1[0],lyr2[0],lyr3[0]]).appendTo(full ? 'body' : el);
-			var layers = [lyr1,lyr2,lyr3], $par = full ? $('body') : $(el);
-			$.each(layers, function() {
-				this.appendTo($par);
-			});
-
-			if (opts.theme && opts.draggable && $.fn.draggable) {
-				lyr3.draggable({
-					handle: '.ui-dialog-titlebar',
-					cancel: 'li'
-				});
-			}
-
-			// ie7 must use absolute positioning in quirks mode and to account for activex issues (when scrolling)
-			var expr = setExpr && (!$.support.boxModel || $('object,embed', full ? null : el).length > 0);
-			if (ie6 || expr) {
-				// give body 100% height
-				if (full && opts.allowBodyStretch && $.support.boxModel)
-					$('html,body').css('height','100%');
-
-				// fix ie6 issue when blocked element has a border width
-				if ((ie6 || !$.support.boxModel) && !full) {
-					var t = sz(el,'borderTopWidth'), l = sz(el,'borderLeftWidth');
-					var fixT = t ? '(0 - '+t+')' : 0;
-					var fixL = l ? '(0 - '+l+')' : 0;
-				}
-
-				// simulate fixed position
-				$.each(layers, function(i,o) {
-					var s = o[0].style;
-					s.position = 'absolute';
-					if (i < 2) {
-						if (full)
-							s.setExpression('height','Math.max(document.body.scrollHeight, document.body.offsetHeight) - (jQuery.support.boxModel?0:'+opts.quirksmodeOffsetHack+') + "px"');
-						else
-							s.setExpression('height','this.parentNode.offsetHeight + "px"');
-						if (full)
-							s.setExpression('width','jQuery.support.boxModel && document.documentElement.clientWidth || document.body.clientWidth + "px"');
-						else
-							s.setExpression('width','this.parentNode.offsetWidth + "px"');
-						if (fixL) s.setExpression('left', fixL);
-						if (fixT) s.setExpression('top', fixT);
-					}
-					else if (opts.centerY) {
-						if (full) s.setExpression('top','(document.documentElement.clientHeight || document.body.clientHeight) / 2 - (this.offsetHeight / 2) + (blah = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + "px"');
-						s.marginTop = 0;
-					}
-					else if (!opts.centerY && full) {
-						var top = (opts.css && opts.css.top) ? parseInt(opts.css.top, 10) : 0;
-						var expression = '((document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + '+top+') + "px"';
-						s.setExpression('top',expression);
-					}
-				});
-			}
-
-			// show the message
-			if (msg) {
-				if (opts.theme)
-					lyr3.find('.ui-widget-content').append(msg);
-				else
-					lyr3.append(msg);
-				if (msg.jquery || msg.nodeType)
-					$(msg).show();
-			}
-
-			if ((msie || opts.forceIframe) && opts.showOverlay)
-				lyr1.show(); // opacity is zero
-			if (opts.fadeIn) {
-				var cb = opts.onBlock ? opts.onBlock : noOp;
-				var cb1 = (opts.showOverlay && !msg) ? cb : noOp;
-				var cb2 = msg ? cb : noOp;
-				if (opts.showOverlay)
-					lyr2._fadeIn(opts.fadeIn, cb1);
-				if (msg)
-					lyr3._fadeIn(opts.fadeIn, cb2);
-			}
-			else {
-				if (opts.showOverlay)
-					lyr2.show();
-				if (msg)
-					lyr3.show();
-				if (opts.onBlock)
-					opts.onBlock.bind(lyr3)();
-			}
-
-			// bind key and mouse events
-			bind(1, el, opts);
-
-			if (full) {
-				pageBlock = lyr3[0];
-				pageBlockEls = $(opts.focusableElements,pageBlock);
-				if (opts.focusInput)
-					setTimeout(focus, 20);
-			}
-			else
-				center(lyr3[0], opts.centerX, opts.centerY);
-
-			if (opts.timeout) {
-				// auto-unblock
-				var to = setTimeout(function() {
-					if (full)
-						$.unblockUI(opts);
-					else
-						$(el).unblock(opts);
-				}, opts.timeout);
-				$(el).data('blockUI.timeout', to);
-			}
-		}
-
-		// remove the block
-		function remove(el, opts) {
-			var count;
-			var full = (el == window);
-			var $el = $(el);
-			var data = $el.data('blockUI.history');
-			var to = $el.data('blockUI.timeout');
-			if (to) {
-				clearTimeout(to);
-				$el.removeData('blockUI.timeout');
-			}
-			opts = $.extend({}, $.blockUI.defaults, opts || {});
-			bind(0, el, opts); // unbind events
-
-			if (opts.onUnblock === null) {
-				opts.onUnblock = $el.data('blockUI.onUnblock');
-				$el.removeData('blockUI.onUnblock');
-			}
-
-			var els;
-			if (full) // crazy selector to handle odd field errors in ie6/7
-				els = $('body').children().filter('.blockUI').add('body > .blockUI');
-			else
-				els = $el.find('>.blockUI');
-
-			// fix cursor issue
-			if ( opts.cursorReset ) {
-				if ( els.length > 1 )
-					els[1].style.cursor = opts.cursorReset;
-				if ( els.length > 2 )
-					els[2].style.cursor = opts.cursorReset;
-			}
-
-			if (full)
-				pageBlock = pageBlockEls = null;
-
-			if (opts.fadeOut) {
-				count = els.length;
-				els.stop().fadeOut(opts.fadeOut, function() {
-					if ( --count === 0)
-						reset(els,data,opts,el);
-				});
-			}
-			else
-				reset(els, data, opts, el);
-		}
-
-		// move blocking element back into the DOM where it started
-		function reset(els,data,opts,el) {
-			var $el = $(el);
-			if ( $el.data('blockUI.isBlocked') )
-				return;
-
-			els.each(function(i,o) {
-				// remove via DOM calls so we don't lose event handlers
-				if (this.parentNode)
-					this.parentNode.removeChild(this);
-			});
-
-			if (data && data.el) {
-				data.el.style.display = data.display;
-				data.el.style.position = data.position;
-				data.el.style.cursor = 'default'; // #59
-				if (data.parent)
-					data.parent.appendChild(data.el);
-				$el.removeData('blockUI.history');
-			}
-
-			if ($el.data('blockUI.static')) {
-				$el.css('position', 'static'); // #22
-			}
-
-			if (typeof opts.onUnblock == 'function')
-				opts.onUnblock(el,opts);
-
-			// fix issue in Safari 6 where block artifacts remain until reflow
-			var body = $(document.body), w = body.width(), cssW = body[0].style.width;
-			body.width(w-1).width(w);
-			body[0].style.width = cssW;
-		}
-
-		// bind/unbind the handler
-		function bind(b, el, opts) {
-			var full = el == window, $el = $(el);
-
-			// don't bother unbinding if there is nothing to unbind
-			if (!b && (full && !pageBlock || !full && !$el.data('blockUI.isBlocked')))
-				return;
-
-			$el.data('blockUI.isBlocked', b);
-
-			// don't bind events when overlay is not in use or if bindEvents is false
-			if (!full || !opts.bindEvents || (b && !opts.showOverlay))
-				return;
-
-			// bind anchors and inputs for mouse and key events
-			var events = 'mousedown mouseup keydown keypress keyup touchstart touchend touchmove';
-			if (b)
-				$(document).bind(events, opts, handler);
-			else
-				$(document).unbind(events, handler);
-
-		// former impl...
-		//		var $e = $('a,:input');
-		//		b ? $e.bind(events, opts, handler) : $e.unbind(events, handler);
-		}
-
-		// event handler to suppress keyboard/mouse events when blocking
-		function handler(e) {
-			// allow tab navigation (conditionally)
-			if (e.type === 'keydown' && e.keyCode && e.keyCode == 9) {
-				if (pageBlock && e.data.constrainTabKey) {
-					var els = pageBlockEls;
-					var fwd = !e.shiftKey && e.target === els[els.length-1];
-					var back = e.shiftKey && e.target === els[0];
-					if (fwd || back) {
-						setTimeout(function(){focus(back);},10);
-						return false;
-					}
-				}
-			}
-			var opts = e.data;
-			var target = $(e.target);
-			if (target.hasClass('blockOverlay') && opts.onOverlayClick)
-				opts.onOverlayClick(e);
-
-			// allow events within the message content
-			if (target.parents('div.' + opts.blockMsgClass).length > 0)
-				return true;
-
-			// allow events for content that is not being blocked
-			return target.parents().children().filter('div.blockUI').length === 0;
-		}
-
-		function focus(back) {
-			if (!pageBlockEls)
-				return;
-			var e = pageBlockEls[back===true ? pageBlockEls.length-1 : 0];
-			if (e)
-				e.focus();
-		}
-
-		function center(el, x, y) {
-			var p = el.parentNode, s = el.style;
-			var l = ((p.offsetWidth - el.offsetWidth)/2) - sz(p,'borderLeftWidth');
-			var t = ((p.offsetHeight - el.offsetHeight)/2) - sz(p,'borderTopWidth');
-			if (x) s.left = l > 0 ? (l+'px') : '0';
-			if (y) s.top  = t > 0 ? (t+'px') : '0';
-		}
-
-		function sz(el, p) {
-			return parseInt($.css(el,p),10)||0;
-		}
-
-	}
-
-
-	/*global define:true */
-	if (typeof define === 'function' && define.amd && define.amd.jQuery) {
-		define(['jquery'], setup);
-	} else {
-		setup(jQuery);
-	}
-
-})();

+ 0 - 688
ruoyi-admin/src/main/resources/static/ajax/libs/bootstrap-fileinput/fileinput.css

@@ -1,688 +0,0 @@
-/*!
- * bootstrap-fileinput v5.5.2
- * http://plugins.krajee.com/file-input
- *
- * Krajee default styling for bootstrap-fileinput.
- *
- * Author: Kartik Visweswaran
- * Copyright: 2014 - 2022, Kartik Visweswaran, Krajee.com
- *
- * Licensed under the BSD-3-Clause
- * https://github.com/kartik-v/bootstrap-fileinput/blob/master/LICENSE.md
- */
-
-.file-loading input[type=file],
-input[type=file].file-loading {
-    width: 0;
-    height: 0;
-}
-
-.file-no-browse {
-    position: absolute;
-    left: 50%;
-    bottom: 20%;
-    width: 1px;
-    height: 1px;
-    font-size: 0;
-    opacity: 0;
-    border: none;
-    background: none;
-    outline: none;
-    box-shadow: none;
-}
-
-.kv-hidden,
-.file-caption-icon,
-.file-zoom-dialog .modal-header:before,
-.file-zoom-dialog .modal-header:after,
-.file-input-new .file-preview,
-.file-input-new .close,
-.file-input-new .glyphicon-file,
-.file-input-new .fileinput-remove-button,
-.file-input-new .fileinput-upload-button,
-.file-input-new .no-browse .input-group-btn,
-.file-input-ajax-new .fileinput-remove-button,
-.file-input-ajax-new .fileinput-upload-button,
-.file-input-ajax-new .no-browse .input-group-btn,
-.hide-content .kv-file-content,
-.is-locked .fileinput-upload-button,
-.is-locked .fileinput-remove-button {
-    display: none;
-}
-
-.file-caption .input-group {
-    align-items: center;
-}
-
-.btn-file input[type=file],
-.file-caption-icon,
-.file-preview .fileinput-remove,
-.krajee-default .file-thumb-progress,
-.file-zoom-dialog .btn-navigate,
-.file-zoom-dialog .floating-buttons {
-    position: absolute;
-}
-
-.file-caption-icon .kv-caption-icon {
-    line-height: inherit;
-}
-
-.file-input,
-.file-loading:before,
-.btn-file,
-.file-caption,
-.file-preview,
-.krajee-default.file-preview-frame,
-.krajee-default .file-thumbnail-footer,
-.file-zoom-dialog .modal-dialog {
-    position: relative;
-}
-
-.file-error-message pre,
-.file-error-message ul,
-.krajee-default .file-actions,
-.krajee-default .file-other-error {
-    text-align: left;
-}
-
-.file-error-message pre,
-.file-error-message ul {
-    margin: 0;
-}
-
-.krajee-default .file-drag-handle,
-.krajee-default .file-upload-indicator {
-    float: left;
-    margin-top: 10px;
-    width: 16px;
-    height: 16px;
-}
-
-.file-thumb-progress .progress,
-.file-thumb-progress .progress-bar {
-    font-family: Verdana, Helvetica, sans-serif;
-    font-size: 0.7rem;
-}
-
-.krajee-default .file-thumb-progress .progress,
-.kv-upload-progress .progress {
-    background-color: #ccc;
-}
-
-.krajee-default .file-caption-info,
-.krajee-default .file-size-info {
-    display: block;
-    white-space: nowrap;
-    overflow: hidden;
-    text-overflow: ellipsis;
-    width: 160px;
-    height: 15px;
-    margin: auto;
-}
-
-.file-zoom-content > .file-object.type-video,
-.file-zoom-content > .file-object.type-flash,
-.file-zoom-content > .file-object.type-image {
-    max-width: 100%;
-    max-height: 100%;
-    width: auto;
-}
-
-.file-zoom-content > .file-object.type-video,
-.file-zoom-content > .file-object.type-flash {
-    height: 100%;
-}
-
-.file-zoom-content > .file-object.type-pdf,
-.file-zoom-content > .file-object.type-html,
-.file-zoom-content > .file-object.type-text,
-.file-zoom-content > .file-object.type-default {
-    width: 100%;
-}
-
-.file-loading:before {
-    content: " Loading...";
-    display: inline-block;
-    padding-left: 20px;
-    line-height: 16px;
-    font-size: 13px;
-    font-variant: small-caps;
-    color: #999;
-    background: transparent url(loading.gif) top left no-repeat;
-}
-
-.file-object {
-    margin: 0 0 -5px 0;
-    padding: 0;
-}
-
-.btn-file {
-    overflow: hidden;
-}
-
-.btn-file input[type=file] {
-    top: 0;
-    left: 0;
-    min-width: 100%;
-    min-height: 100%;
-    text-align: right;
-    opacity: 0;
-    background: none repeat scroll 0 0 transparent;
-    cursor: inherit;
-    display: block;
-}
-
-.btn-file ::-ms-browse {
-    font-size: 10000px;
-    width: 100%;
-    height: 100%;
-}
-
-.file-caption.icon-visible .file-caption-icon {
-    display: inline-block;
-}
-
-.file-caption.icon-visible .file-caption-name {
-    padding-left: 25px;
-}
-
-.file-caption.icon-visible > .input-group-lg .file-caption-name {
-    padding-left: 30px;
-}
-
-.file-caption.icon-visible > .input-group-sm .file-caption-name {
-    padding-left: 22px;
-}
-
-.file-caption-name:not(.file-caption-disabled) {
-    background-color: transparent;
-}
-
-.file-caption-name.file-processing {
-    font-style: italic;
-    border-color: #bbb;
-    opacity: 0.5;
-}
-
-.file-caption-icon {
-    padding: 7px 5px;
-    left: 4px;
-}
-
-.input-group-lg .file-caption-icon {
-    font-size: 1.25rem;
-}
-
-.input-group-sm .file-caption-icon {
-    font-size: 0.875rem;
-    padding: 0.25rem;
-}
-
-.file-error-message {
-    color: #a94442;
-    background-color: #f2dede;
-    margin: 5px;
-    border: 1px solid #ebccd1;
-    border-radius: 4px;
-    padding: 15px;
-}
-
-.file-error-message pre {
-    margin: 5px 0;
-}
-
-.file-caption-disabled {
-    background-color: #eee;
-    cursor: not-allowed;
-    opacity: 1;
-}
-
-.file-preview {
-    border-radius: 5px;
-    border: 1px solid #ddd;
-    padding: 8px;
-    width: 100%;
-    margin-bottom: 5px;
-}
-
-.file-preview .btn-xs {
-    padding: 1px 5px;
-    font-size: 12px;
-    line-height: 1.5;
-    border-radius: 3px;
-}
-
-.file-preview .fileinput-remove {
-    top: 1px;
-    right: 1px;
-    line-height: 10px;
-}
-
-.file-preview .clickable {
-    cursor: pointer;
-}
-
-.file-preview-image {
-    font: 40px Impact, Charcoal, sans-serif;
-    color: #008000;
-    width: auto;
-    height: auto;
-    max-width: 100%;
-    max-height: 100%;
-}
-
-.krajee-default.file-preview-frame {
-    margin: 8px;
-    border: 1px solid rgba(0, 0, 0, 0.2);
-    box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.2);
-    padding: 6px;
-    float: left;
-    text-align: center;
-
-}
-
-.krajee-default.file-preview-frame .kv-file-content {
-    width: 213px;
-    height: 160px;
-}
-
-.krajee-default.file-preview-frame .kv-file-content.kv-pdf-rendered {
-    width: 400px;
-}
-
-.krajee-default.file-preview-frame[data-template="audio"] .kv-file-content {
-    width: 240px;
-    height: 55px;
-}
-
-.krajee-default.file-preview-frame .file-thumbnail-footer {
-    height: 70px;
-}
-
-.krajee-default.file-preview-frame:not(.file-preview-error):hover {
-    border: 1px solid rgba(0, 0, 0, 0.3);
-    box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.4);
-}
-
-.krajee-default .file-preview-text {
-    color: #428bca;
-    border: 1px solid #ddd;
-    outline: none;
-    resize: none;
-}
-
-.krajee-default .file-preview-html {
-    border: 1px solid #ddd;
-}
-
-.krajee-default .file-other-icon {
-    font-size: 6em;
-    line-height: 1;
-}
-
-.krajee-default .file-footer-buttons {
-    float: right;
-}
-
-.krajee-default .file-footer-caption {
-    display: block;
-    text-align: center;
-    padding-top: 4px;
-    font-size: 11px;
-    color: #999;
-    margin-bottom: 30px;
-}
-
-.file-upload-stats {
-    font-size: 10px;
-    text-align: center;
-    width: 100%;
-}
-
-.kv-upload-progress .file-upload-stats {
-    font-size: 12px;
-    margin: -10px 0 5px;
-}
-
-.krajee-default .file-preview-error {
-    opacity: 0.65;
-    box-shadow: none;
-}
-
-.krajee-default .file-thumb-progress {
-    top: 37px;
-    left: 0;
-    right: 0;
-}
-
-.krajee-default.kvsortable-ghost {
-    background: #e1edf7;
-    border: 2px solid #a1abff;
-}
-
-.krajee-default .file-preview-other:hover {
-    opacity: 0.8;
-}
-
-.krajee-default .file-preview-frame:not(.file-preview-error) .file-footer-caption:hover {
-    color: #000;
-}
-
-.kv-upload-progress .progress {
-    height: 20px;
-    margin: 10px 0;
-    overflow: hidden;
-}
-
-.kv-upload-progress .progress-bar {
-    height: 20px;
-    font-family: Verdana, Helvetica, sans-serif;
-}
-
-
-/*noinspection CssOverwrittenProperties*/
-
-.file-zoom-dialog .file-other-icon {
-    font-size: 22em;
-    font-size: 50vmin;
-}
-
-.file-zoom-dialog .modal-dialog {
-    width: auto;
-}
-
-.file-zoom-dialog .modal-header {
-    display: flex;
-    align-items: center;
-    justify-content: space-between;
-}
-
-.file-zoom-dialog .btn-navigate {
-    margin: 0 0.1rem;
-    padding: 0;
-    font-size: 1.2rem;
-    width: 2.4rem;
-    height: 2.4rem;
-    top: 50%;
-    border-radius: 50%;
-    text-align: center;
-}
-
-.btn-navigate * {
-    width: auto;
-}
-
-.file-zoom-dialog .floating-buttons {
-    top: 5px;
-    right: 10px;
-}
-
-.file-zoom-dialog .btn-kv-prev {
-    left: 0;
-}
-
-.file-zoom-dialog .btn-kv-next {
-    right: 0;
-}
-
-.file-zoom-dialog .kv-zoom-header {
-    padding: 0.5rem;
-}
-
-.file-zoom-dialog .kv-zoom-body {
-    padding: 0.25rem;
-}
-
-.file-zoom-dialog .kv-zoom-description {
-    position: absolute;
-    opacity: 0.8;
-    font-size: 0.8rem;
-    background-color: #1a1a1a;
-    padding: 1rem;
-    text-align: center;
-    border-radius: 0.5rem;
-    color: #fff;
-    left: 15%;
-    right: 15%;
-    bottom: 15%;
-}
-
-.file-zoom-dialog .kv-desc-hide {
-    float: right;
-    color: #fff;
-    padding: 0 0.1rem;
-    background: none;
-    border: none;
-}
-
-.file-zoom-dialog .kv-desc-hide:hover {
-    opacity: 0.7;
-}
-
-.file-zoom-dialog .kv-desc-hide:focus {
-    opacity: 0.9;
-}
-
-.file-input-new .no-browse .form-control {
-    border-top-right-radius: 4px;
-    border-bottom-right-radius: 4px;
-}
-
-.file-input-ajax-new .no-browse .form-control {
-    border-top-right-radius: 4px;
-    border-bottom-right-radius: 4px;
-}
-
-.file-caption {
-    width: 100%;
-    position: relative;
-}
-
-.file-thumb-loading {
-    background: transparent url(loading.gif) no-repeat scroll center center content-box !important;
-}
-
-.file-drop-zone {
-    border: 1px dashed #aaa;
-    min-height: 260px;
-    border-radius: 4px;
-    text-align: center;
-    vertical-align: middle;
-    margin: 12px 15px 12px 12px;
-    padding: 5px;
-}
-
-.file-drop-zone.clickable:hover {
-    border: 2px dashed #999;
-}
-
-.file-drop-zone.clickable:focus {
-    border: 2px solid #5acde2;
-}
-
-.file-drop-zone .file-preview-thumbnails {
-    cursor: default;
-}
-
-.file-drop-zone-title {
-    color: #aaa;
-    font-size: 1.6em;
-    text-align: center;
-    padding: 85px 10px;
-    cursor: default;
-}
-
-.file-highlighted {
-    border: 2px dashed #999 !important;
-    background-color: #eee;
-}
-
-.file-uploading {
-    background: url(loading-sm.gif) no-repeat center bottom 10px;
-    opacity: 0.65;
-}
-
-.file-zoom-fullscreen .modal-dialog {
-    min-width: 100%;
-    margin: 0;
-}
-
-.file-zoom-fullscreen .modal-content {
-    border-radius: 0;
-    box-shadow: none;
-    min-height: 100vh;
-}
-
-.file-zoom-fullscreen .kv-zoom-body {
-    overflow-y: auto;
-}
-
-.floating-buttons {
-    z-index: 3000;
-}
-
-.floating-buttons .btn-kv {
-    margin-left: 3px;
-    z-index: 3000;
-}
-
-.kv-zoom-actions {
-    min-width: 140px;
-}
-
-.kv-zoom-actions .btn-kv {
-    margin-left: 3px;
-}
-
-.file-zoom-content {
-    text-align: center;
-    white-space: nowrap;
-    min-height: 300px;
-}
-
-.file-zoom-content:hover {
-    background: transparent;
-}
-
-.file-zoom-content .file-preview-image {
-    max-height: 100%;
-}
-
-.file-zoom-content .file-preview-video {
-    max-height: 100%;
-}
-
-.file-zoom-content > .file-object.type-image {
-    height: auto;
-    min-height: inherit;
-}
-
-.file-zoom-content > .file-object.type-audio {
-    width: auto;
-    height: 30px;
-}
-
-@media (min-width: 576px) {
-    .file-zoom-dialog .modal-dialog {
-        max-width: 500px;
-    }
-}
-
-@media (min-width: 992px) {
-    .file-zoom-dialog .modal-lg {
-        max-width: 800px;
-    }
-}
-
-@media (max-width: 767px) {
-    .file-preview-thumbnails {
-        display: flex;
-        justify-content: center;
-        align-items: center;
-        flex-direction: column;
-    }
-
-    .file-zoom-dialog .modal-header {
-        flex-direction: column;
-    }
-}
-
-@media (max-width: 350px) {
-    .krajee-default.file-preview-frame:not([data-template="audio"]) .kv-file-content {
-        width: 160px;
-    }
-}
-
-@media (max-width: 420px) {
-    .krajee-default.file-preview-frame .kv-file-content.kv-pdf-rendered {
-        width: 100%;
-    }
-}
-
-.file-loading[dir=rtl]:before {
-    background: transparent url(loading.gif) top right no-repeat;
-    padding-left: 0;
-    padding-right: 20px;
-}
-
-.clickable .file-drop-zone-title {
-    cursor: pointer;
-}
-
-.file-sortable .file-drag-handle:hover {
-    opacity: 0.7;
-}
-
-.file-sortable .file-drag-handle {
-    cursor: grab;
-    opacity: 1;
-}
-
-.file-grabbing,
-.file-grabbing * {
-    cursor: not-allowed !important;
-}
-
-.file-grabbing .file-preview-thumbnails * {
-    cursor: grabbing !important;
-}
-
-.file-preview-frame.sortable-chosen {
-    background-color: #d9edf7;
-    border-color: #17a2b8;
-    box-shadow: none !important;
-}
-
-.file-preview .kv-zoom-cache {
-    display: none;
-}
-
-.file-preview-other-frame, .file-preview-object, .kv-file-content, .kv-zoom-body {
-    display: flex;
-    align-items: center;
-    justify-content: center;
-}
-
-.btn-kv-rotate,
-.kv-file-rotate {
-    display: none;
-}
-
-.rotatable:not(.hide-rotate) .btn-kv-rotate,
-.rotatable:not(.hide-rotate) .kv-file-rotate {
-    display: inline-block;
-}
-
-.rotatable .file-zoom-detail,
-.rotatable .kv-file-content,
-.rotatable .kv-file-content > :first-child {
-    transform-origin: center center;
-}
-
-.rotate-animate {
-    transition: transform 0.3s ease;
-}
-
-.kv-overflow-hidden {
-    overflow: hidden;
-}

ファイルの差分が大きいため隠しています
+ 0 - 13
ruoyi-admin/src/main/resources/static/ajax/libs/bootstrap-fileinput/fileinput.min.css


ファイルの差分が大きいため隠しています
+ 0 - 11
ruoyi-admin/src/main/resources/static/ajax/libs/bootstrap-fileinput/fileinput.min.js


+ 0 - 459
ruoyi-admin/src/main/resources/static/ajax/libs/bootstrap-select/bootstrap-select.css

@@ -1,459 +0,0 @@
-/*!
- * Bootstrap-select v1.13.18 (https://developer.snapappointments.com/bootstrap-select)
- *
- * Copyright 2012-2020 SnapAppointments, LLC
- * Licensed under MIT (https://github.com/snapappointments/bootstrap-select/blob/master/LICENSE)
- */
-
-@-webkit-keyframes bs-notify-fadeOut {
-  0% {
-    opacity: 0.9;
-  }
-  100% {
-    opacity: 0;
-  }
-}
-@-o-keyframes bs-notify-fadeOut {
-  0% {
-    opacity: 0.9;
-  }
-  100% {
-    opacity: 0;
-  }
-}
-@keyframes bs-notify-fadeOut {
-  0% {
-    opacity: 0.9;
-  }
-  100% {
-    opacity: 0;
-  }
-}
-select.bs-select-hidden,
-.bootstrap-select > select.bs-select-hidden,
-select.selectpicker {
-  display: none !important;
-}
-.bootstrap-select {
-  width: 220px \0;
-  /*IE9 and below*/
-  vertical-align: middle;
-}
-.bootstrap-select > .dropdown-toggle {
-  position: relative;
-  width: 100%;
-  text-align: right;
-  white-space: nowrap;
-  display: -webkit-inline-box;
-  display: -webkit-inline-flex;
-  display: -ms-inline-flexbox;
-  display: inline-flex;
-  -webkit-box-align: center;
-  -webkit-align-items: center;
-      -ms-flex-align: center;
-          align-items: center;
-  -webkit-box-pack: justify;
-  -webkit-justify-content: space-between;
-      -ms-flex-pack: justify;
-          justify-content: space-between;
-}
-.bootstrap-select > .dropdown-toggle:after {
-  margin-top: -1px;
-}
-.bootstrap-select > .dropdown-toggle.bs-placeholder,
-.bootstrap-select > .dropdown-toggle.bs-placeholder:hover,
-.bootstrap-select > .dropdown-toggle.bs-placeholder:focus,
-.bootstrap-select > .dropdown-toggle.bs-placeholder:active {
-  color: #999;
-}
-.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-primary,
-.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-secondary,
-.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-success,
-.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-danger,
-.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-info,
-.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-dark,
-.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-primary:hover,
-.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-secondary:hover,
-.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-success:hover,
-.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-danger:hover,
-.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-info:hover,
-.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-dark:hover,
-.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-primary:focus,
-.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-secondary:focus,
-.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-success:focus,
-.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-danger:focus,
-.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-info:focus,
-.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-dark:focus,
-.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-primary:active,
-.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-secondary:active,
-.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-success:active,
-.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-danger:active,
-.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-info:active,
-.bootstrap-select > .dropdown-toggle.bs-placeholder.btn-dark:active {
-  color: rgba(255, 255, 255, 0.5);
-}
-.bootstrap-select > select {
-  position: absolute !important;
-  bottom: 0;
-  left: 50%;
-  display: block !important;
-  width: 0.5px !important;
-  height: 100% !important;
-  padding: 0 !important;
-  opacity: 0 !important;
-  border: none;
-  z-index: 0 !important;
-}
-.bootstrap-select > select.mobile-device {
-  top: 0;
-  left: 0;
-  display: block !important;
-  width: 100% !important;
-  z-index: 2 !important;
-}
-.has-error .bootstrap-select .dropdown-toggle,
-.error .bootstrap-select .dropdown-toggle,
-.bootstrap-select.is-invalid .dropdown-toggle,
-.was-validated .bootstrap-select select:invalid + .dropdown-toggle {
-  border-color: #b94a48;
-}
-.bootstrap-select.is-valid .dropdown-toggle,
-.was-validated .bootstrap-select select:valid + .dropdown-toggle {
-  border-color: #28a745;
-}
-.bootstrap-select.fit-width {
-  width: auto !important;
-}
-.bootstrap-select:not([class*="col-"]):not([class*="form-control"]):not(.input-group-btn) {
-  width: 220px;
-}
-.bootstrap-select > select.mobile-device:focus + .dropdown-toggle,
-.bootstrap-select .dropdown-toggle:focus {
-  outline: thin dotted #333333 !important;
-  outline: 5px auto -webkit-focus-ring-color !important;
-  outline-offset: -2px;
-}
-.bootstrap-select.form-control {
-  margin-bottom: 0;
-  padding: 0;
-  border: none;
-  height: auto;
-}
-:not(.input-group) > .bootstrap-select.form-control:not([class*="col-"]) {
-  width: 100%;
-}
-.bootstrap-select.form-control.input-group-btn {
-  float: none;
-  z-index: auto;
-}
-.form-inline .bootstrap-select,
-.form-inline .bootstrap-select.form-control:not([class*="col-"]) {
-  width: auto;
-}
-.bootstrap-select:not(.input-group-btn),
-.bootstrap-select[class*="col-"] {
-  float: none;
-  display: inline-block;
-  margin-left: 0;
-}
-.bootstrap-select.dropdown-menu-right,
-.bootstrap-select[class*="col-"].dropdown-menu-right,
-.row .bootstrap-select[class*="col-"].dropdown-menu-right {
-  float: right;
-}
-.form-inline .bootstrap-select,
-.form-horizontal .bootstrap-select,
-.form-group .bootstrap-select {
-  margin-bottom: 0;
-}
-.form-group-lg .bootstrap-select.form-control,
-.form-group-sm .bootstrap-select.form-control {
-  padding: 0;
-}
-.form-group-lg .bootstrap-select.form-control .dropdown-toggle,
-.form-group-sm .bootstrap-select.form-control .dropdown-toggle {
-  height: 100%;
-  font-size: inherit;
-  line-height: inherit;
-  border-radius: inherit;
-}
-.bootstrap-select.form-control-sm .dropdown-toggle,
-.bootstrap-select.form-control-lg .dropdown-toggle {
-  font-size: inherit;
-  line-height: inherit;
-  border-radius: inherit;
-}
-.bootstrap-select.form-control-sm .dropdown-toggle {
-  padding: 0.25rem 0.5rem;
-}
-.bootstrap-select.form-control-lg .dropdown-toggle {
-  padding: 0.5rem 1rem;
-}
-.form-inline .bootstrap-select .form-control {
-  width: 100%;
-}
-.bootstrap-select.disabled,
-.bootstrap-select > .disabled {
-  cursor: not-allowed;
-}
-.bootstrap-select.disabled:focus,
-.bootstrap-select > .disabled:focus {
-  outline: none !important;
-}
-.bootstrap-select.bs-container {
-  position: absolute;
-  top: 0;
-  left: 0;
-  height: 0 !important;
-  padding: 0 !important;
-}
-.bootstrap-select.bs-container .dropdown-menu {
-  z-index: 1060;
-}
-.bootstrap-select .dropdown-toggle .filter-option {
-  position: static;
-  top: 0;
-  left: 0;
-  float: left;
-  height: 100%;
-  width: 100%;
-  text-align: left;
-  overflow: hidden;
-  -webkit-box-flex: 0;
-  -webkit-flex: 0 1 auto;
-      -ms-flex: 0 1 auto;
-          flex: 0 1 auto;
-}
-.bs3.bootstrap-select .dropdown-toggle .filter-option {
-  padding-right: inherit;
-}
-.input-group .bs3-has-addon.bootstrap-select .dropdown-toggle .filter-option {
-  position: absolute;
-  padding-top: inherit;
-  padding-bottom: inherit;
-  padding-left: inherit;
-  float: none;
-}
-.input-group .bs3-has-addon.bootstrap-select .dropdown-toggle .filter-option .filter-option-inner {
-  padding-right: inherit;
-}
-.bootstrap-select .dropdown-toggle .filter-option-inner-inner {
-  overflow: hidden;
-}
-.bootstrap-select .dropdown-toggle .filter-expand {
-  width: 0 !important;
-  float: left;
-  opacity: 0 !important;
-  overflow: hidden;
-}
-.bootstrap-select .dropdown-toggle .caret {
-  position: absolute;
-  top: 50%;
-  right: 12px;
-  margin-top: -2px;
-  vertical-align: middle;
-}
-.input-group .bootstrap-select.form-control .dropdown-toggle {
-  border-radius: inherit;
-}
-.bootstrap-select[class*="col-"] .dropdown-toggle {
-  width: 100%;
-}
-.bootstrap-select .dropdown-menu {
-  min-width: 100%;
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-}
-.bootstrap-select .dropdown-menu > .inner:focus {
-  outline: none !important;
-}
-.bootstrap-select .dropdown-menu.inner {
-  position: static;
-  float: none;
-  border: 0;
-  padding: 0;
-  margin: 0;
-  border-radius: 0;
-  -webkit-box-shadow: none;
-          box-shadow: none;
-}
-.bootstrap-select .dropdown-menu li {
-  position: relative;
-}
-.bootstrap-select .dropdown-menu li.active small {
-  color: rgba(255, 255, 255, 0.5) !important;
-}
-.bootstrap-select .dropdown-menu li.disabled a {
-  cursor: not-allowed;
-}
-.bootstrap-select .dropdown-menu li a {
-  cursor: pointer;
-  -webkit-user-select: none;
-     -moz-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
-}
-.bootstrap-select .dropdown-menu li a.opt {
-  position: relative;
-  padding-left: 2.25em;
-}
-.bootstrap-select .dropdown-menu li a span.check-mark {
-  display: none;
-}
-.bootstrap-select .dropdown-menu li a span.text {
-  display: inline-block;
-}
-.bootstrap-select .dropdown-menu li small {
-  padding-left: 0.5em;
-}
-.bootstrap-select .dropdown-menu .notify {
-  position: absolute;
-  bottom: 5px;
-  width: 96%;
-  margin: 0 2%;
-  min-height: 26px;
-  padding: 3px 5px;
-  background: #f5f5f5;
-  border: 1px solid #e3e3e3;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
-          box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
-  pointer-events: none;
-  opacity: 0.9;
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-}
-.bootstrap-select .dropdown-menu .notify.fadeOut {
-  -webkit-animation: 300ms linear 750ms forwards bs-notify-fadeOut;
-       -o-animation: 300ms linear 750ms forwards bs-notify-fadeOut;
-          animation: 300ms linear 750ms forwards bs-notify-fadeOut;
-}
-.bootstrap-select .no-results {
-  padding: 3px;
-  background: #f5f5f5;
-  margin: 0 5px;
-  white-space: nowrap;
-}
-.bootstrap-select.fit-width .dropdown-toggle .filter-option {
-  position: static;
-  display: inline;
-  padding: 0;
-}
-.bootstrap-select.fit-width .dropdown-toggle .filter-option-inner,
-.bootstrap-select.fit-width .dropdown-toggle .filter-option-inner-inner {
-  display: inline;
-}
-.bootstrap-select.fit-width .dropdown-toggle .bs-caret:before {
-  content: '\00a0';
-}
-.bootstrap-select.fit-width .dropdown-toggle .caret {
-  position: static;
-  top: auto;
-  margin-top: -1px;
-}
-.bootstrap-select.show-tick .dropdown-menu .selected span.check-mark {
-  position: absolute;
-  display: inline-block;
-  right: 15px;
-  top: 5px;
-}
-.bootstrap-select.show-tick .dropdown-menu li a span.text {
-  margin-right: 34px;
-}
-.bootstrap-select .bs-ok-default:after {
-  content: '';
-  display: block;
-  width: 0.5em;
-  height: 1em;
-  border-style: solid;
-  border-width: 0 0.26em 0.26em 0;
-  -webkit-transform-style: preserve-3d;
-          transform-style: preserve-3d;
-  -webkit-transform: rotate(45deg);
-      -ms-transform: rotate(45deg);
-       -o-transform: rotate(45deg);
-          transform: rotate(45deg);
-}
-.bootstrap-select.show-menu-arrow.open > .dropdown-toggle,
-.bootstrap-select.show-menu-arrow.show > .dropdown-toggle {
-  z-index: 1061;
-}
-.bootstrap-select.show-menu-arrow .dropdown-toggle .filter-option:before {
-  content: '';
-  border-left: 7px solid transparent;
-  border-right: 7px solid transparent;
-  border-bottom: 7px solid rgba(204, 204, 204, 0.2);
-  position: absolute;
-  bottom: -4px;
-  left: 9px;
-  display: none;
-}
-.bootstrap-select.show-menu-arrow .dropdown-toggle .filter-option:after {
-  content: '';
-  border-left: 6px solid transparent;
-  border-right: 6px solid transparent;
-  border-bottom: 6px solid white;
-  position: absolute;
-  bottom: -4px;
-  left: 10px;
-  display: none;
-}
-.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle .filter-option:before {
-  bottom: auto;
-  top: -4px;
-  border-top: 7px solid rgba(204, 204, 204, 0.2);
-  border-bottom: 0;
-}
-.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle .filter-option:after {
-  bottom: auto;
-  top: -4px;
-  border-top: 6px solid white;
-  border-bottom: 0;
-}
-.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle .filter-option:before {
-  right: 12px;
-  left: auto;
-}
-.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle .filter-option:after {
-  right: 13px;
-  left: auto;
-}
-.bootstrap-select.show-menu-arrow.open > .dropdown-toggle .filter-option:before,
-.bootstrap-select.show-menu-arrow.show > .dropdown-toggle .filter-option:before,
-.bootstrap-select.show-menu-arrow.open > .dropdown-toggle .filter-option:after,
-.bootstrap-select.show-menu-arrow.show > .dropdown-toggle .filter-option:after {
-  display: block;
-}
-.bs-searchbox,
-.bs-actionsbox,
-.bs-donebutton {
-  padding: 4px 8px;
-}
-.bs-actionsbox {
-  width: 100%;
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-}
-.bs-actionsbox .btn-group button {
-  width: 50%;
-}
-.bs-donebutton {
-  float: left;
-  width: 100%;
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-}
-.bs-donebutton .btn-group button {
-  width: 100%;
-}
-.bs-searchbox + .bs-actionsbox {
-  padding: 0 8px 4px;
-}
-.bs-searchbox .form-control {
-  margin-bottom: 0;
-  width: 100%;
-  float: none;
-}

ファイルの差分が大きいため隠しています
+ 0 - 3247
ruoyi-admin/src/main/resources/static/ajax/libs/bootstrap-select/bootstrap-select.js


ファイルの差分が大きいため隠しています
+ 0 - 6
ruoyi-admin/src/main/resources/static/ajax/libs/bootstrap-select/bootstrap-select.min.css


ファイルの差分が大きいため隠しています
+ 0 - 6
ruoyi-admin/src/main/resources/static/ajax/libs/bootstrap-table/bootstrap-table.min.js


+ 0 - 95
ruoyi-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/auto-refresh/bootstrap-table-auto-refresh.js

@@ -1,95 +0,0 @@
-/**
- * @author: Alec Fenichel
- * @webSite: https://fenichelar.com
- * @update: zhixin wen <wenzhixin2010@gmail.com>
- */
-
-var Utils = $.fn.bootstrapTable.utils
-
-$.extend($.fn.bootstrapTable.defaults, {
-  autoRefresh: false,
-  showAutoRefresh: true,
-  autoRefreshInterval: 60,
-  autoRefreshSilent: true,
-  autoRefreshStatus: true,
-  autoRefreshFunction: null
-})
-
-$.extend($.fn.bootstrapTable.defaults.icons, {
-  autoRefresh: {
-    bootstrap3: 'glyphicon-time icon-time',
-    bootstrap5: 'bi-clock',
-    materialize: 'access_time',
-    'bootstrap-table': 'icon-clock'
-  }[$.fn.bootstrapTable.theme] || 'fa-clock'
-})
-
-$.extend($.fn.bootstrapTable.locales, {
-  formatAutoRefresh () {
-    return 'Auto Refresh'
-  }
-})
-
-$.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales)
-
-$.BootstrapTable = class extends $.BootstrapTable {
-  init (...args) {
-    super.init(...args)
-
-    if (this.options.autoRefresh && this.options.autoRefreshStatus) {
-      this.setupRefreshInterval()
-    }
-  }
-
-  initToolbar (...args) {
-    if (this.options.autoRefresh) {
-      this.buttons = Object.assign(this.buttons, {
-        autoRefresh: {
-          html: `
-            <button class="auto-refresh ${this.constants.buttonsClass}
-              ${this.options.autoRefreshStatus ? ` ${this.constants.classes.buttonActive}` : ''}"
-              type="button" name="autoRefresh" title="${this.options.formatAutoRefresh()}">
-              ${ this.options.showButtonIcons ? Utils.sprintf(this.constants.html.icon, this.options.iconsPrefix, this.options.icons.autoRefresh) : ''}
-              ${ this.options.showButtonText ? this.options.formatAutoRefresh() : ''}
-            </button>
-           `,
-          event: this.toggleAutoRefresh
-        }
-      })
-    }
-
-    super.initToolbar(...args)
-  }
-
-  toggleAutoRefresh () {
-    if (this.options.autoRefresh) {
-      if (this.options.autoRefreshStatus) {
-        clearInterval(this.options.autoRefreshFunction)
-        this.$toolbar.find('>.columns .auto-refresh')
-          .removeClass(this.constants.classes.buttonActive)
-      } else {
-        this.setupRefreshInterval()
-        this.$toolbar.find('>.columns .auto-refresh')
-          .addClass(this.constants.classes.buttonActive)
-      }
-      this.options.autoRefreshStatus = !this.options.autoRefreshStatus
-    }
-  }
-
-  destroy () {
-    if (this.options.autoRefresh && this.options.autoRefreshStatus) {
-      clearInterval(this.options.autoRefreshFunction)
-    }
-
-    super.destroy()
-  }
-
-  setupRefreshInterval () {
-    this.options.autoRefreshFunction = setInterval(() => {
-      if (!this.options.autoRefresh || !this.options.autoRefreshStatus) {
-        return
-      }
-      this.refresh({ silent: this.options.autoRefreshSilent })
-    }, this.options.autoRefreshInterval * 1000)
-  }
-}

+ 0 - 663
ruoyi-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/editable/bootstrap-editable.css

@@ -1,663 +0,0 @@
-/*! X-editable - v1.5.1 
-* In-place editing with Twitter Bootstrap, jQuery UI or pure jQuery
-* http://github.com/vitalets/x-editable
-* Copyright (c) 2013 Vitaliy Potapov; Licensed MIT */
-.editableform {
-    margin-bottom: 0; /* overwrites bootstrap margin */
-}
-
-.editableform .control-group {
-    margin-bottom: 0; /* overwrites bootstrap margin */
-    white-space: nowrap; /* prevent wrapping buttons on new line */
-    line-height: 20px; /* overwriting bootstrap line-height. See #133 */
-}
-
-/* 
-  BS3 width:1005 for inputs breaks editable form in popup 
-  See: https://github.com/vitalets/x-editable/issues/393
-*/
-.editableform .form-control {
-    width: auto;
-}
-
-.editable-buttons {
-   display: inline-block; /* should be inline to take effect of parent's white-space: nowrap */
-   vertical-align: top;
-   margin-left: 7px;
-   /* inline-block emulation for IE7*/
-   zoom: 1; 
-   *display: inline;
-}
-
-.editable-buttons.editable-buttons-bottom {
-   display: block; 
-   margin-top: 7px;
-   margin-left: 0;
-}
-
-.editable-input {
-    vertical-align: top; 
-    display: inline-block; /* should be inline to take effect of parent's white-space: nowrap */
-    width: auto; /* bootstrap-responsive has width: 100% that breakes layout */
-    white-space: normal; /* reset white-space decalred in parent*/
-   /* display-inline emulation for IE7*/
-   zoom: 1; 
-   *display: inline;   
-}
-
-.editable-buttons .editable-cancel {
-   margin-left: 7px; 
-}
-
-/*for jquery-ui buttons need set height to look more pretty*/
-.editable-buttons button.ui-button-icon-only {
-   height: 24px; 
-   width: 30px;
-}
-
-.editableform-loading {
-    background: url('loading.gif') center center no-repeat;  
-    height: 25px;
-    width: auto; 
-    min-width: 25px; 
-}
-
-.editable-inline .editableform-loading {
-    background-position: left 5px;      
-}
-
- .editable-error-block {
-    max-width: 300px;
-    margin: 5px 0 0 0;
-    width: auto;
-    white-space: normal;
-}
-
-/*add padding for jquery ui*/
-.editable-error-block.ui-state-error {
-    padding: 3px;  
-}  
-
-.editable-error {
-   color: red;  
-}
-
-/* ---- For specific types ---- */
-
-.editableform .editable-date {
-    padding: 0; 
-    margin: 0;
-    float: left;
-}
-
-/* move datepicker icon to center of add-on button. See https://github.com/vitalets/x-editable/issues/183 */
-.editable-inline .add-on .icon-th {
-   margin-top: 3px;
-   margin-left: 1px; 
-}
-
-
-/* checklist vertical alignment */
-.editable-checklist label input[type="checkbox"], 
-.editable-checklist label span {
-    vertical-align: middle;
-    margin: 0;
-}
-
-.editable-checklist label {
-    white-space: nowrap; 
-}
-
-/* set exact width of textarea to fit buttons toolbar */
-.editable-wysihtml5 {
-    width: 566px; 
-    height: 250px; 
-}
-
-/* clear button shown as link in date inputs */
-.editable-clear {
-   clear: both;
-   font-size: 0.9em;
-   text-decoration: none;
-   text-align: right;
-}
-
-/* IOS-style clear button for text inputs */
-.editable-clear-x {
-   background: url('clear.png') center center no-repeat;
-   display: block;
-   width: 13px;    
-   height: 13px;
-   position: absolute;
-   opacity: 0.6;
-   z-index: 100;
-   
-   top: 50%;
-   right: 6px;
-   margin-top: -6px;
-   
-}
-
-.editable-clear-x:hover {
-   opacity: 1;
-}
-
-.editable-pre-wrapped {
-   white-space: pre-wrap;
-}
-.editable-container.editable-popup {
-    max-width: none !important; /* without this rule poshytip/tooltip does not stretch */
-}  
-
-.editable-container.popover {
-    width: auto; /* without this rule popover does not stretch */
-}
-
-.editable-container.editable-inline {
-    display: inline-block; 
-    vertical-align: middle;
-    width: auto;
-    /* inline-block emulation for IE7*/
-    zoom: 1; 
-    *display: inline;    
-}
-
-.editable-container.ui-widget {
-   font-size: inherit;  /* jqueryui widget font 1.1em too big, overwrite it */
-   z-index: 9990; /* should be less than select2 dropdown z-index to close dropdown first when click */
-}
-.editable-click, 
-a.editable-click, 
-a.editable-click:hover {
-    text-decoration: none;
-    border-bottom: dashed 1px #0088cc;
-}
-
-.editable-click.editable-disabled, 
-a.editable-click.editable-disabled, 
-a.editable-click.editable-disabled:hover {
-   color: #585858;  
-   cursor: default;
-   border-bottom: none;
-}
-
-.editable-empty, .editable-empty:hover, .editable-empty:focus{
-  font-style: italic; 
-  color: #DD1144;  
-  /* border-bottom: none; */
-  text-decoration: none;
-}
-
-.editable-unsaved {
-  font-weight: bold; 
-}
-
-.editable-unsaved:after {
-/*    content: '*'*/
-}
-
-.editable-bg-transition {
-  -webkit-transition: background-color 1400ms ease-out;
-  -moz-transition: background-color 1400ms ease-out;
-  -o-transition: background-color 1400ms ease-out;
-  -ms-transition: background-color 1400ms ease-out;
-  transition: background-color 1400ms ease-out;  
-}
-
-/*see https://github.com/vitalets/x-editable/issues/139 */
-.form-horizontal .editable
-{ 
-    padding-top: 5px;
-    display:inline-block;
-}
-
-
-/*!
- * Datepicker for Bootstrap
- *
- * Copyright 2012 Stefan Petre
- * Improvements by Andrew Rowls
- * Licensed under the Apache License v2.0
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- */
-.datepicker {
-  padding: 4px;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-  direction: ltr;
-  /*.dow {
-		border-top: 1px solid #ddd !important;
-	}*/
-
-}
-.datepicker-inline {
-  width: 220px;
-}
-.datepicker.datepicker-rtl {
-  direction: rtl;
-}
-.datepicker.datepicker-rtl table tr td span {
-  float: right;
-}
-.datepicker-dropdown {
-  top: 0;
-  left: 0;
-}
-.datepicker-dropdown:before {
-  content: '';
-  display: inline-block;
-  border-left: 7px solid transparent;
-  border-right: 7px solid transparent;
-  border-bottom: 7px solid #ccc;
-  border-bottom-color: rgba(0, 0, 0, 0.2);
-  position: absolute;
-  top: -7px;
-  left: 6px;
-}
-.datepicker-dropdown:after {
-  content: '';
-  display: inline-block;
-  border-left: 6px solid transparent;
-  border-right: 6px solid transparent;
-  border-bottom: 6px solid #ffffff;
-  position: absolute;
-  top: -6px;
-  left: 7px;
-}
-.datepicker > div {
-  display: none;
-}
-.datepicker.days div.datepicker-days {
-  display: block;
-}
-.datepicker.months div.datepicker-months {
-  display: block;
-}
-.datepicker.years div.datepicker-years {
-  display: block;
-}
-.datepicker table {
-  margin: 0;
-}
-.datepicker td,
-.datepicker th {
-  text-align: center;
-  width: 20px;
-  height: 20px;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-  border: none;
-}
-.table-striped .datepicker table tr td,
-.table-striped .datepicker table tr th {
-  background-color: transparent;
-}
-.datepicker table tr td.day:hover {
-  background: #eeeeee;
-  cursor: pointer;
-}
-.datepicker table tr td.old,
-.datepicker table tr td.new {
-  color: #999999;
-}
-.datepicker table tr td.disabled,
-.datepicker table tr td.disabled:hover {
-  background: none;
-  color: #999999;
-  cursor: default;
-}
-.datepicker table tr td.today,
-.datepicker table tr td.today:hover,
-.datepicker table tr td.today.disabled,
-.datepicker table tr td.today.disabled:hover {
-  background-color: #fde19a;
-  background-image: -moz-linear-gradient(top, #fdd49a, #fdf59a);
-  background-image: -ms-linear-gradient(top, #fdd49a, #fdf59a);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fdd49a), to(#fdf59a));
-  background-image: -webkit-linear-gradient(top, #fdd49a, #fdf59a);
-  background-image: -o-linear-gradient(top, #fdd49a, #fdf59a);
-  background-image: linear-gradient(top, #fdd49a, #fdf59a);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fdd49a', endColorstr='#fdf59a', GradientType=0);
-  border-color: #fdf59a #fdf59a #fbed50;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
-  color: #000;
-}
-.datepicker table tr td.today:hover,
-.datepicker table tr td.today:hover:hover,
-.datepicker table tr td.today.disabled:hover,
-.datepicker table tr td.today.disabled:hover:hover,
-.datepicker table tr td.today:active,
-.datepicker table tr td.today:hover:active,
-.datepicker table tr td.today.disabled:active,
-.datepicker table tr td.today.disabled:hover:active,
-.datepicker table tr td.today.active,
-.datepicker table tr td.today:hover.active,
-.datepicker table tr td.today.disabled.active,
-.datepicker table tr td.today.disabled:hover.active,
-.datepicker table tr td.today.disabled,
-.datepicker table tr td.today:hover.disabled,
-.datepicker table tr td.today.disabled.disabled,
-.datepicker table tr td.today.disabled:hover.disabled,
-.datepicker table tr td.today[disabled],
-.datepicker table tr td.today:hover[disabled],
-.datepicker table tr td.today.disabled[disabled],
-.datepicker table tr td.today.disabled:hover[disabled] {
-  background-color: #fdf59a;
-}
-.datepicker table tr td.today:active,
-.datepicker table tr td.today:hover:active,
-.datepicker table tr td.today.disabled:active,
-.datepicker table tr td.today.disabled:hover:active,
-.datepicker table tr td.today.active,
-.datepicker table tr td.today:hover.active,
-.datepicker table tr td.today.disabled.active,
-.datepicker table tr td.today.disabled:hover.active {
-  background-color: #fbf069 \9;
-}
-.datepicker table tr td.today:hover:hover {
-  color: #000;
-}
-.datepicker table tr td.today.active:hover {
-  color: #fff;
-}
-.datepicker table tr td.range,
-.datepicker table tr td.range:hover,
-.datepicker table tr td.range.disabled,
-.datepicker table tr td.range.disabled:hover {
-  background: #eeeeee;
-  -webkit-border-radius: 0;
-  -moz-border-radius: 0;
-  border-radius: 0;
-}
-.datepicker table tr td.range.today,
-.datepicker table tr td.range.today:hover,
-.datepicker table tr td.range.today.disabled,
-.datepicker table tr td.range.today.disabled:hover {
-  background-color: #f3d17a;
-  background-image: -moz-linear-gradient(top, #f3c17a, #f3e97a);
-  background-image: -ms-linear-gradient(top, #f3c17a, #f3e97a);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f3c17a), to(#f3e97a));
-  background-image: -webkit-linear-gradient(top, #f3c17a, #f3e97a);
-  background-image: -o-linear-gradient(top, #f3c17a, #f3e97a);
-  background-image: linear-gradient(top, #f3c17a, #f3e97a);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f3c17a', endColorstr='#f3e97a', GradientType=0);
-  border-color: #f3e97a #f3e97a #edde34;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
-  -webkit-border-radius: 0;
-  -moz-border-radius: 0;
-  border-radius: 0;
-}
-.datepicker table tr td.range.today:hover,
-.datepicker table tr td.range.today:hover:hover,
-.datepicker table tr td.range.today.disabled:hover,
-.datepicker table tr td.range.today.disabled:hover:hover,
-.datepicker table tr td.range.today:active,
-.datepicker table tr td.range.today:hover:active,
-.datepicker table tr td.range.today.disabled:active,
-.datepicker table tr td.range.today.disabled:hover:active,
-.datepicker table tr td.range.today.active,
-.datepicker table tr td.range.today:hover.active,
-.datepicker table tr td.range.today.disabled.active,
-.datepicker table tr td.range.today.disabled:hover.active,
-.datepicker table tr td.range.today.disabled,
-.datepicker table tr td.range.today:hover.disabled,
-.datepicker table tr td.range.today.disabled.disabled,
-.datepicker table tr td.range.today.disabled:hover.disabled,
-.datepicker table tr td.range.today[disabled],
-.datepicker table tr td.range.today:hover[disabled],
-.datepicker table tr td.range.today.disabled[disabled],
-.datepicker table tr td.range.today.disabled:hover[disabled] {
-  background-color: #f3e97a;
-}
-.datepicker table tr td.range.today:active,
-.datepicker table tr td.range.today:hover:active,
-.datepicker table tr td.range.today.disabled:active,
-.datepicker table tr td.range.today.disabled:hover:active,
-.datepicker table tr td.range.today.active,
-.datepicker table tr td.range.today:hover.active,
-.datepicker table tr td.range.today.disabled.active,
-.datepicker table tr td.range.today.disabled:hover.active {
-  background-color: #efe24b \9;
-}
-.datepicker table tr td.selected,
-.datepicker table tr td.selected:hover,
-.datepicker table tr td.selected.disabled,
-.datepicker table tr td.selected.disabled:hover {
-  background-color: #9e9e9e;
-  background-image: -moz-linear-gradient(top, #b3b3b3, #808080);
-  background-image: -ms-linear-gradient(top, #b3b3b3, #808080);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#b3b3b3), to(#808080));
-  background-image: -webkit-linear-gradient(top, #b3b3b3, #808080);
-  background-image: -o-linear-gradient(top, #b3b3b3, #808080);
-  background-image: linear-gradient(top, #b3b3b3, #808080);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#b3b3b3', endColorstr='#808080', GradientType=0);
-  border-color: #808080 #808080 #595959;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
-  color: #fff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-}
-.datepicker table tr td.selected:hover,
-.datepicker table tr td.selected:hover:hover,
-.datepicker table tr td.selected.disabled:hover,
-.datepicker table tr td.selected.disabled:hover:hover,
-.datepicker table tr td.selected:active,
-.datepicker table tr td.selected:hover:active,
-.datepicker table tr td.selected.disabled:active,
-.datepicker table tr td.selected.disabled:hover:active,
-.datepicker table tr td.selected.active,
-.datepicker table tr td.selected:hover.active,
-.datepicker table tr td.selected.disabled.active,
-.datepicker table tr td.selected.disabled:hover.active,
-.datepicker table tr td.selected.disabled,
-.datepicker table tr td.selected:hover.disabled,
-.datepicker table tr td.selected.disabled.disabled,
-.datepicker table tr td.selected.disabled:hover.disabled,
-.datepicker table tr td.selected[disabled],
-.datepicker table tr td.selected:hover[disabled],
-.datepicker table tr td.selected.disabled[disabled],
-.datepicker table tr td.selected.disabled:hover[disabled] {
-  background-color: #808080;
-}
-.datepicker table tr td.selected:active,
-.datepicker table tr td.selected:hover:active,
-.datepicker table tr td.selected.disabled:active,
-.datepicker table tr td.selected.disabled:hover:active,
-.datepicker table tr td.selected.active,
-.datepicker table tr td.selected:hover.active,
-.datepicker table tr td.selected.disabled.active,
-.datepicker table tr td.selected.disabled:hover.active {
-  background-color: #666666 \9;
-}
-.datepicker table tr td.active,
-.datepicker table tr td.active:hover,
-.datepicker table tr td.active.disabled,
-.datepicker table tr td.active.disabled:hover {
-  background-color: #006dcc;
-  background-image: -moz-linear-gradient(top, #0088cc, #0044cc);
-  background-image: -ms-linear-gradient(top, #0088cc, #0044cc);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));
-  background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);
-  background-image: -o-linear-gradient(top, #0088cc, #0044cc);
-  background-image: linear-gradient(top, #0088cc, #0044cc);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0);
-  border-color: #0044cc #0044cc #002a80;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
-  color: #fff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-}
-.datepicker table tr td.active:hover,
-.datepicker table tr td.active:hover:hover,
-.datepicker table tr td.active.disabled:hover,
-.datepicker table tr td.active.disabled:hover:hover,
-.datepicker table tr td.active:active,
-.datepicker table tr td.active:hover:active,
-.datepicker table tr td.active.disabled:active,
-.datepicker table tr td.active.disabled:hover:active,
-.datepicker table tr td.active.active,
-.datepicker table tr td.active:hover.active,
-.datepicker table tr td.active.disabled.active,
-.datepicker table tr td.active.disabled:hover.active,
-.datepicker table tr td.active.disabled,
-.datepicker table tr td.active:hover.disabled,
-.datepicker table tr td.active.disabled.disabled,
-.datepicker table tr td.active.disabled:hover.disabled,
-.datepicker table tr td.active[disabled],
-.datepicker table tr td.active:hover[disabled],
-.datepicker table tr td.active.disabled[disabled],
-.datepicker table tr td.active.disabled:hover[disabled] {
-  background-color: #0044cc;
-}
-.datepicker table tr td.active:active,
-.datepicker table tr td.active:hover:active,
-.datepicker table tr td.active.disabled:active,
-.datepicker table tr td.active.disabled:hover:active,
-.datepicker table tr td.active.active,
-.datepicker table tr td.active:hover.active,
-.datepicker table tr td.active.disabled.active,
-.datepicker table tr td.active.disabled:hover.active {
-  background-color: #003399 \9;
-}
-.datepicker table tr td span {
-  display: block;
-  width: 23%;
-  height: 54px;
-  line-height: 54px;
-  float: left;
-  margin: 1%;
-  cursor: pointer;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-}
-.datepicker table tr td span:hover {
-  background: #eeeeee;
-}
-.datepicker table tr td span.disabled,
-.datepicker table tr td span.disabled:hover {
-  background: none;
-  color: #999999;
-  cursor: default;
-}
-.datepicker table tr td span.active,
-.datepicker table tr td span.active:hover,
-.datepicker table tr td span.active.disabled,
-.datepicker table tr td span.active.disabled:hover {
-  background-color: #006dcc;
-  background-image: -moz-linear-gradient(top, #0088cc, #0044cc);
-  background-image: -ms-linear-gradient(top, #0088cc, #0044cc);
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));
-  background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);
-  background-image: -o-linear-gradient(top, #0088cc, #0044cc);
-  background-image: linear-gradient(top, #0088cc, #0044cc);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0);
-  border-color: #0044cc #0044cc #002a80;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
-  color: #fff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-}
-.datepicker table tr td span.active:hover,
-.datepicker table tr td span.active:hover:hover,
-.datepicker table tr td span.active.disabled:hover,
-.datepicker table tr td span.active.disabled:hover:hover,
-.datepicker table tr td span.active:active,
-.datepicker table tr td span.active:hover:active,
-.datepicker table tr td span.active.disabled:active,
-.datepicker table tr td span.active.disabled:hover:active,
-.datepicker table tr td span.active.active,
-.datepicker table tr td span.active:hover.active,
-.datepicker table tr td span.active.disabled.active,
-.datepicker table tr td span.active.disabled:hover.active,
-.datepicker table tr td span.active.disabled,
-.datepicker table tr td span.active:hover.disabled,
-.datepicker table tr td span.active.disabled.disabled,
-.datepicker table tr td span.active.disabled:hover.disabled,
-.datepicker table tr td span.active[disabled],
-.datepicker table tr td span.active:hover[disabled],
-.datepicker table tr td span.active.disabled[disabled],
-.datepicker table tr td span.active.disabled:hover[disabled] {
-  background-color: #0044cc;
-}
-.datepicker table tr td span.active:active,
-.datepicker table tr td span.active:hover:active,
-.datepicker table tr td span.active.disabled:active,
-.datepicker table tr td span.active.disabled:hover:active,
-.datepicker table tr td span.active.active,
-.datepicker table tr td span.active:hover.active,
-.datepicker table tr td span.active.disabled.active,
-.datepicker table tr td span.active.disabled:hover.active {
-  background-color: #003399 \9;
-}
-.datepicker table tr td span.old,
-.datepicker table tr td span.new {
-  color: #999999;
-}
-.datepicker th.datepicker-switch {
-  width: 145px;
-}
-.datepicker thead tr:first-child th,
-.datepicker tfoot tr th {
-  cursor: pointer;
-}
-.datepicker thead tr:first-child th:hover,
-.datepicker tfoot tr th:hover {
-  background: #eeeeee;
-}
-.datepicker .cw {
-  font-size: 10px;
-  width: 12px;
-  padding: 0 2px 0 5px;
-  vertical-align: middle;
-}
-.datepicker thead tr:first-child th.cw {
-  cursor: default;
-  background-color: transparent;
-}
-.input-append.date .add-on i,
-.input-prepend.date .add-on i {
-  display: block;
-  cursor: pointer;
-  width: 16px;
-  height: 16px;
-}
-.input-daterange input {
-  text-align: center;
-}
-.input-daterange input:first-child {
-  -webkit-border-radius: 3px 0 0 3px;
-  -moz-border-radius: 3px 0 0 3px;
-  border-radius: 3px 0 0 3px;
-}
-.input-daterange input:last-child {
-  -webkit-border-radius: 0 3px 3px 0;
-  -moz-border-radius: 0 3px 3px 0;
-  border-radius: 0 3px 3px 0;
-}
-.input-daterange .add-on {
-  display: inline-block;
-  width: auto;
-  min-width: 16px;
-  height: 18px;
-  padding: 4px 5px;
-  font-weight: normal;
-  line-height: 18px;
-  text-align: center;
-  text-shadow: 0 1px 0 #ffffff;
-  vertical-align: middle;
-  background-color: #eeeeee;
-  border: 1px solid #ccc;
-  margin-left: -5px;
-  margin-right: -5px;
-}

ファイルの差分が大きいため隠しています
+ 0 - 7
ruoyi-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/editable/bootstrap-editable.min.js


+ 0 - 213
ruoyi-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/reorder-columns/bootstrap-table-reorder-columns.js

@@ -1,213 +0,0 @@
-/**
- * @author: Dennis Hernández
- * @webSite: http://djhvscf.github.io/Blog
- * @update: https://github.com/wenzhixin
- * @version: v1.2.0
- */
-
-$.akottr.dragtable.prototype._restoreState = function (persistObj) {
-  let i = 0
-
-  for (const [field, value] of Object.entries(persistObj)) {
-    const $th = this.originalTable.el.find(`th[data-field="${field}"]`)
-
-    if (!$th.length) {
-      i++
-      continue
-    }
-
-    this.originalTable.startIndex = $th.prevAll().length + 1
-    this.originalTable.endIndex = parseInt(value, 10) + 1 - i
-    this._bubbleCols()
-  }
-}
-
-// From MDN site, https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter
-const filterFn = () => {
-  if (!Array.prototype.filter) {
-    Array.prototype.filter = function (fun/* , thisArg*/) {
-      if (this === undefined || this === null) {
-        throw new TypeError()
-      }
-
-      const t = Object(this)
-      const len = t.length >>> 0
-
-      if (typeof fun !== 'function') {
-        throw new TypeError()
-      }
-
-      const res = []
-      const thisArg = arguments.length >= 2 ? arguments[1] : undefined
-
-      for (let i = 0; i < len; i++) {
-        if (i in t) {
-          const val = t[i]
-
-          // NOTE: Technically this should Object.defineProperty at
-          //       the next index, as push can be affected by
-          //       properties on Object.prototype and Array.prototype.
-          //       But this method's new, and collisions should be
-          //       rare, so use the more-compatible alternative.
-          if (fun.call(thisArg, val, i, t)) {
-            res.push(val)
-          }
-        }
-      }
-
-      return res
-    }
-  }
-}
-
-$.extend($.fn.bootstrapTable.defaults, {
-  reorderableColumns: false,
-  maxMovingRows: 10,
-  // eslint-disable-next-line no-unused-vars
-  onReorderColumn (headerFields) {
-    return false
-  },
-  dragaccept: null
-})
-
-$.extend($.fn.bootstrapTable.Constructor.EVENTS, {
-  'reorder-column.bs.table': 'onReorderColumn'
-})
-
-$.fn.bootstrapTable.methods.push('orderColumns')
-
-$.BootstrapTable = class extends $.BootstrapTable {
-  initHeader (...args) {
-    super.initHeader(...args)
-
-    if (!this.options.reorderableColumns) {
-      return
-    }
-
-    this.makeRowsReorderable()
-  }
-
-  _toggleColumn (...args) {
-    super._toggleColumn(...args)
-
-    if (!this.options.reorderableColumns) {
-      return
-    }
-
-    this.makeRowsReorderable()
-  }
-
-  toggleView (...args) {
-    super.toggleView(...args)
-
-    if (!this.options.reorderableColumns) {
-      return
-    }
-
-    if (this.options.cardView) {
-      return
-    }
-
-    this.makeRowsReorderable()
-  }
-
-  resetView (...args) {
-    super.resetView(...args)
-
-    if (!this.options.reorderableColumns) {
-      return
-    }
-
-    this.makeRowsReorderable()
-  }
-
-  makeRowsReorderable (order = null) {
-    try {
-      $(this.$el).dragtable('destroy')
-    } catch (e) {
-      // do nothing
-    }
-    $(this.$el).dragtable({
-      maxMovingRows: this.options.maxMovingRows,
-      dragaccept: this.options.dragaccept,
-      clickDelay: 200,
-      dragHandle: '.th-inner',
-      restoreState: order ? order : this.columnsSortOrder,
-      beforeStop: table => {
-        const sortOrder = {}
-
-        table.el.find('th').each((i, el) => {
-          sortOrder[$(el).data('field')] = i
-        })
-
-        this.columnsSortOrder = sortOrder
-        if (this.options.cookie) {
-          this.persistReorderColumnsState(this)
-        }
-
-        const ths = []
-        const formatters = []
-        const columns = []
-        let columnsHidden = []
-        let columnIndex = -1
-        const optionsColumns = []
-
-        this.$header.find('th:not(.detail)').each((i, el) => {
-          ths.push($(el).data('field'))
-          formatters.push($(el).data('formatter'))
-        })
-
-        // Exist columns not shown
-        if (ths.length < this.columns.length) {
-          columnsHidden = this.columns.filter(column => !column.visible)
-          for (let i = 0; i < columnsHidden.length; i++) {
-            ths.push(columnsHidden[i].field)
-            formatters.push(columnsHidden[i].formatter)
-          }
-        }
-
-        for (let i = 0; i < ths.length; i++) {
-          columnIndex = this.fieldsColumnsIndex[ths[i]]
-          if (columnIndex !== -1) {
-            this.fieldsColumnsIndex[ths[i]] = i
-            this.columns[columnIndex].fieldIndex = i
-            columns.push(this.columns[columnIndex])
-          }
-        }
-
-        this.columns = columns
-
-        filterFn() // Support <IE9
-        $.each(this.columns, (i, column) => {
-          let found = false
-          const field = column.field
-
-          this.options.columns[0].filter(item => {
-            if (!found && item['field'] === field) {
-              optionsColumns.push(item)
-              found = true
-              return false
-            }
-            return true
-          })
-        })
-
-        this.options.columns[0] = optionsColumns
-
-        this.header.fields = ths
-        this.header.formatters = formatters
-        this.initHeader()
-        this.initToolbar()
-        this.initSearchText()
-        this.initBody()
-        this.resetView()
-        this.trigger('reorder-column', ths)
-      }
-    })
-  }
-
-  orderColumns (order) {
-    this.columnsSortOrder = order
-    this.makeRowsReorderable()
-  }
-}

ファイルの差分が大きいため隠しています
+ 0 - 22
ruoyi-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/reorder-columns/jquery.dragtable.js


+ 0 - 69
ruoyi-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/resizable/bootstrap-table-resizable.js

@@ -1,69 +0,0 @@
-/**
- * @author: Dennis Hernández
- * @webSite: http://djhvscf.github.io/Blog
- * @version: v2.0.0
- */
-
-const isInit = that => that.$el.data('resizableColumns') !== undefined
-
-const initResizable = that => {
-  if (
-    that.options.resizable &&
-    !that.options.cardView &&
-    !isInit(that) &&
-    that.$el.is(':visible')
-  ) {
-    that.$el.resizableColumns({
-      store: window.store
-    })
-  }
-}
-
-const destroy = that => {
-  if (isInit(that)) {
-    that.$el.data('resizableColumns').destroy()
-  }
-}
-
-const reInitResizable = that => {
-  destroy(that)
-  initResizable(that)
-}
-
-$.extend($.fn.bootstrapTable.defaults, {
-  resizable: false
-})
-
-$.BootstrapTable = class extends $.BootstrapTable {
-
-  initBody (...args) {
-    super.initBody(...args)
-
-    this.$el.off('column-switch.bs.table page-change.bs.table')
-      .on('column-switch.bs.table page-change.bs.table', () => {
-        reInitResizable(this)
-      })
-
-    reInitResizable(this)
-  }
-
-  toggleView (...args) {
-    super.toggleView(...args)
-
-    if (this.options.resizable && this.options.cardView) {
-      // Destroy the plugin
-      destroy(this)
-    }
-  }
-
-  resetView (...args) {
-    super.resetView(...args)
-
-    if (this.options.resizable) {
-      // because in fitHeader function, we use setTimeout(func, 100);
-      setTimeout(() => {
-        initResizable(this)
-      }, 100)
-    }
-  }
-}

ファイルの差分が大きいため隠しています
+ 0 - 8
ruoyi-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/resizable/jquery.resizableColumns.min.js


ファイルの差分が大きいため隠しています
+ 0 - 1060
ruoyi-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/tree/bootstrap-table-tree.js


ファイルの差分が大きいため隠しています
+ 0 - 5
ruoyi-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/tree/bootstrap-table-tree.min.js


+ 0 - 109
ruoyi-admin/src/main/resources/static/ajax/libs/bootstrap-table/locale/bootstrap-table-zh-CN.js

@@ -1,109 +0,0 @@
-/**
- * Bootstrap Table Chinese translation
- * Author: Zhixin Wen<wenzhixin2010@gmail.com>
- */
-$.fn.bootstrapTable.locales['zh-CN'] = {
-  formatShowSearch: function formatShowSearch() {
-    return '隐藏/显示搜索';
-  },
-  formatPageGo: function formatPageGo() {
-    return '跳转';
-  },
-  formatCopyRows: function formatCopyRows() {
-    return '复制行';
-  },
-  formatPrint: function formatPrint() {
-    return '打印';
-  },
-  formatLoadingMessage: function formatLoadingMessage() {
-    return '正在努力地加载数据中,请稍候';
-  },
-  formatRecordsPerPage: function formatRecordsPerPage(pageNumber) {
-    return "每页显示 ".concat(pageNumber, " 条记录");
-  },
-  formatShowingRows: function formatShowingRows(pageFrom, pageTo, totalRows, totalNotFiltered) {
-    if (totalNotFiltered !== undefined && totalNotFiltered > 0 && totalNotFiltered > totalRows) {
-      return "显示第 ".concat(pageFrom, " 到第 ").concat(pageTo, " 条记录,总共 ").concat(totalRows, " 条记录(从 ").concat(totalNotFiltered, " 总记录中过滤)");
-    }
-    return "显示第 ".concat(pageFrom, " 到第 ").concat(pageTo, " 条记录,总共 ").concat(totalRows, " 条记录");
-  },
-  formatSRPaginationPreText: function formatSRPaginationPreText() {
-    return '上一页';
-  },
-  formatSRPaginationPageText: function formatSRPaginationPageText(page) {
-    return "第".concat(page, "页");
-  },
-  formatSRPaginationNextText: function formatSRPaginationNextText() {
-    return '下一页';
-  },
-  formatDetailPagination: function formatDetailPagination(totalRows) {
-    return "总共 ".concat(totalRows, " 条记录");
-  },
-  formatClearSearch: function formatClearSearch() {
-    return '清空过滤';
-  },
-  formatSearch: function formatSearch() {
-    return '搜索';
-  },
-  formatNoMatches: function formatNoMatches() {
-    return '没有找到匹配的记录';
-  },
-  formatPaginationSwitch: function formatPaginationSwitch() {
-    return '隐藏/显示分页';
-  },
-  formatPaginationSwitchDown: function formatPaginationSwitchDown() {
-    return '显示分页';
-  },
-  formatPaginationSwitchUp: function formatPaginationSwitchUp() {
-    return '隐藏分页';
-  },
-  formatRefresh: function formatRefresh() {
-    return '刷新';
-  },
-  formatToggle: function formatToggle() {
-    return '切换';
-  },
-  formatToggleOn: function formatToggleOn() {
-    return '显示卡片视图';
-  },
-  formatToggleOff: function formatToggleOff() {
-    return '隐藏卡片视图';
-  },
-  formatColumns: function formatColumns() {
-    return '列';
-  },
-  formatColumnsToggleAll: function formatColumnsToggleAll() {
-    return '切换所有';
-  },
-  formatFullscreen: function formatFullscreen() {
-    return '全屏';
-  },
-  formatAllRows: function formatAllRows() {
-    return '所有';
-  },
-  formatAutoRefresh: function formatAutoRefresh() {
-    return '自动刷新';
-  },
-  formatExport: function formatExport() {
-    return '导出数据';
-  },
-  formatJumpTo: function formatJumpTo() {
-    return '跳转';
-  },
-  formatAdvancedSearch: function formatAdvancedSearch() {
-    return '高级搜索';
-  },
-  formatAdvancedCloseButton: function formatAdvancedCloseButton() {
-    return '关闭';
-  },
-  formatFilterControlSwitch: function formatFilterControlSwitch() {
-    return '隐藏/显示过滤控制';
-  },
-  formatFilterControlSwitchHide: function formatFilterControlSwitchHide() {
-    return '隐藏过滤控制';
-  },
-  formatFilterControlSwitchShow: function formatFilterControlSwitchShow() {
-    return '显示过滤控制';
-  }
-};
-$.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['zh-CN']);

+ 0 - 406
ruoyi-admin/src/main/resources/static/ajax/libs/cxselect/jquery.cxselect.js

@@ -1,406 +0,0 @@
-/*!
- * jQuery cxSelect
- * @name jquery.cxselect.js
- * @version 1.4.2
- * @date 2017-09-26
- * @author ciaoca
- * @email ciaoca@gmail.com
- * @site https://github.com/ciaoca/cxSelect
- * @license Released under the MIT license
- */
-(function(factory) {
-  if (typeof define === 'function' && define.amd) {
-    define(['jquery'], factory);
-  } else {
-    factory(window.jQuery || window.Zepto || window.$);
-  };
-}(function($) {
-  var cxSelect = function() {
-    var self = this;
-    var dom, settings, callback;
-
-    // 分配参数
-    for (var i = 0, l = arguments.length; i < l; i++) {
-      if (cxSelect.isJquery(arguments[i]) || cxSelect.isZepto(arguments[i])) {
-        dom = arguments[i];
-      } else if (cxSelect.isElement(arguments[i])) {
-        dom = $(arguments[i]);
-      } else if (typeof arguments[i] === 'function') {
-        callback = arguments[i];
-      } else if (typeof arguments[i] === 'object') {
-        settings = arguments[i];
-      };
-    };
-
-    var api = new cxSelect.init(dom, settings);
-
-    if (typeof callback === 'function') {
-      callback(api);
-    };
-
-    return api;
-  };
-
-  cxSelect.isElement = function(o){
-    if (o && (typeof HTMLElement === 'function' || typeof HTMLElement === 'object') && o instanceof HTMLElement) {
-      return true;
-    } else {
-      return (o && o.nodeType && o.nodeType === 1) ? true : false;
-    };
-  };
-
-  cxSelect.isJquery = function(o){
-    return (o && o.length && (typeof jQuery === 'function' || typeof jQuery === 'object') && o instanceof jQuery) ? true : false;
-  };
-
-  cxSelect.isZepto = function(o){
-    return (o && o.length && (typeof Zepto === 'function' || typeof Zepto === 'object') && Zepto.zepto.isZ(o)) ? true : false;
-  };
-
-  cxSelect.getIndex = function(n, required) {
-    return required ? n : n - 1;
-  };
-
-  cxSelect.getData = function(data, space) {
-    if (typeof space === 'string' && space.length) {
-      space = space.split('.');
-      for (var i = 0, l = space.length; i < l; i++) {
-        data = data[space[i]];
-      };
-    };
-    return data;
-  };
-
-  cxSelect.init = function(dom, settings) {
-    var self = this;
-
-    if (!cxSelect.isJquery(dom) && !cxSelect.isZepto(dom)) {return};
-
-    var theSelect = {
-      dom: {
-        box: dom
-      }
-    };
-
-    self.attach = cxSelect.attach.bind(theSelect);
-    self.detach = cxSelect.detach.bind(theSelect);
-    self.setOptions = cxSelect.setOptions.bind(theSelect);
-    self.clear = cxSelect.clear.bind(theSelect);
-
-    theSelect.changeEvent = function() {
-      cxSelect.selectChange.call(theSelect, this.className);
-    };
-
-    theSelect.settings = $.extend({}, $.cxSelect.defaults, settings, {
-      url: theSelect.dom.box.data('url'),
-      emptyStyle: theSelect.dom.box.data('emptyStyle'),
-      required: theSelect.dom.box.data('required'),
-      firstTitle: theSelect.dom.box.data('firstTitle'),
-      firstValue: theSelect.dom.box.data('firstValue'),
-      jsonSpace: theSelect.dom.box.data('jsonSpace'),
-      jsonName: theSelect.dom.box.data('jsonName'),
-      jsonValue: theSelect.dom.box.data('jsonValue'),
-      jsonSub: theSelect.dom.box.data('jsonSub')
-    });
-
-    var _dataSelects = theSelect.dom.box.data('selects');
-
-    if (typeof _dataSelects === 'string' && _dataSelects.length) {
-      theSelect.settings.selects = _dataSelects.split(',');
-    };
-
-    self.setOptions();
-    self.attach();
-
-    // 使用独立接口获取数据
-    if (!theSelect.settings.url && !theSelect.settings.data) {
-      cxSelect.start.apply(theSelect);
-
-    // 设置自定义数据
-    } else if ($.isArray(theSelect.settings.data)) {
-      cxSelect.start.call(theSelect, theSelect.settings.data);
-
-    // 设置 URL,通过 Ajax 获取数据
-    } else if (typeof theSelect.settings.url === 'string' && theSelect.settings.url.length) {
-      $.getJSON(theSelect.settings.url, function(json) {
-        cxSelect.start.call(theSelect, json);
-      });
-    };
-  };
-
-  // 设置参数
-  cxSelect.setOptions = function(opts) {
-    var self = this;
-
-    if (opts) {
-      $.extend(self.settings, opts);
-    };
-
-    // 初次或重设选择器组
-    if (!$.isArray(self.selectArray) || !self.selectArray.length || (opts && opts.selects)) {
-      self.selectArray = [];
-
-      if ($.isArray(self.settings.selects) && self.settings.selects.length) {
-        var _tempSelect;
-
-        for (var i = 0, l = self.settings.selects.length; i < l; i++) {
-          _tempSelect = self.dom.box.find('select.' + self.settings.selects[i]);
-
-          if (!_tempSelect || !_tempSelect.length) {break};
-
-          self.selectArray.push(_tempSelect);
-        };
-      };
-    };
-
-    if (opts) {
-      if (!$.isArray(opts.data) && typeof opts.url === 'string' && opts.url.length) {
-        $.getJSON(self.settings.url, function(json) {
-          cxSelect.start.call(self, json);
-        });
-
-      } else {
-        cxSelect.start.call(self, opts.data);
-      };
-    };
-  };
-
-  // 绑定
-  cxSelect.attach = function() {
-    var self = this;
-
-    if (!self.attachStatus) {
-      self.dom.box.on('change', 'select', self.changeEvent);
-    };
-
-    if (typeof self.attachStatus === 'boolean') {
-      cxSelect.start.call(self);
-    };
-
-    self.attachStatus = true;
-  };
-
-  // 移除绑定
-  cxSelect.detach = function() {
-    var self = this;
-    self.dom.box.off('change', 'select', self.changeEvent);
-    self.attachStatus = false;
-  };
-
-  // 清空选项
-  cxSelect.clear = function(index) {
-    var self = this;
-    var _style = {
-      display: '',
-      visibility: ''
-    };
-
-    index = isNaN(index) ? 0 : index;
-
-    // 清空后面的 select
-    for (var i = index, l = self.selectArray.length; i < l; i++) {
-      self.selectArray[i].empty().prop('disabled', true);
-
-      if (self.settings.emptyStyle === 'none') {
-        _style.display = 'none';
-      } else if (self.settings.emptyStyle === 'hidden') {
-        _style.visibility = 'hidden';
-      };
-
-      self.selectArray[i].css(_style);
-    };
-  };
-
-  cxSelect.start = function(data) {
-    var self = this;
-
-    if ($.isArray(data)) {
-      self.settings.data = cxSelect.getData(data, self.settings.jsonSpace);
-    };
-
-    if (!self.selectArray.length) {return};
-
-    // 保存默认值
-    for (var i = 0, l = self.selectArray.length; i < l; i++) {
-      if (typeof self.selectArray[i].attr('data-value') !== 'string' && self.selectArray[i][0].options.length) {
-        self.selectArray[i].attr('data-value', self.selectArray[i].val());
-      };
-    };
-
-    if (self.settings.data || (typeof self.selectArray[0].data('url') === 'string' && self.selectArray[0].data('url').length)) {
-      cxSelect.getOptionData.call(self, 0);
-    } else if (self.selectArray[0][0].options.length && typeof self.selectArray[0].attr('data-value') === 'string' && self.selectArray[0].attr('data-value').length) {
-      self.selectArray[0].val(self.selectArray[0].attr('data-value'));
-      cxSelect.getOptionData.call(self, 1);
-    } else {
-      self.selectArray[0].prop('disabled', false).css({
-        'display': '',
-        'visibility': ''
-      });
-    };
-  };
-
-  // 获取选项数据
-  cxSelect.getOptionData = function(index) {
-    var self = this;
-
-    if (typeof index !== 'number' || isNaN(index) || index < 0 || index >= self.selectArray.length) {return};
-
-    var _indexPrev = index - 1;
-    var _select = self.selectArray[index];
-    var _selectData;
-    var _valueIndex;
-    var _dataUrl = _select.data('url');
-    var _jsonSpace = typeof _select.data('jsonSpace') === 'undefined' ? self.settings.jsonSpace : _select.data('jsonSpace');
-    var _query = {};
-    var _queryName;
-    var _selectName;
-    var _selectValue;
-
-    cxSelect.clear.call(self, index);
-
-    // 使用独立接口
-    if (typeof _dataUrl === 'string' && _dataUrl.length) {
-      if (index > 0) {
-        for (var i = 0, j = 1; i < index; i++, j++) {
-          _queryName = self.selectArray[j].data('queryName');
-          _selectName = self.selectArray[i].attr('name');
-          _selectValue = self.selectArray[i].val();
-
-          if (typeof _queryName === 'string' && _queryName.length) {
-            _query[_queryName] = _selectValue;
-          } else if (typeof _selectName === 'string' && _selectName.length) {
-            _query[_selectName] = _selectValue;
-          };
-        };
-      };
-
-      $.getJSON(_dataUrl, _query, function(json) {
-        _selectData = cxSelect.getData(json, _jsonSpace);
-
-        cxSelect.buildOption.call(self, index, _selectData);
-      });
-
-    // 使用整合数据
-    } else if (self.settings.data && typeof self.settings.data === 'object') {
-      _selectData = self.settings.data;
-
-      for (var i = 0; i < index; i++) {
-        _valueIndex = cxSelect.getIndex(self.selectArray[i][0].selectedIndex, typeof self.selectArray[i].data('required') === 'boolean' ? self.selectArray[i].data('required') : self.settings.required);
-
-        if (typeof _selectData[_valueIndex] === 'object' && $.isArray(_selectData[_valueIndex][self.settings.jsonSub]) && _selectData[_valueIndex][self.settings.jsonSub].length) {
-          _selectData = _selectData[_valueIndex][self.settings.jsonSub];
-        } else {
-          _selectData = null;
-          break;
-        };
-      };
-
-      cxSelect.buildOption.call(self, index, _selectData);
-    };
-  };
-
-  // 构建选项列表
-  cxSelect.buildOption = function(index, data) {
-    var self = this;
-
-    var _select = self.selectArray[index];
-    var _required = typeof _select.data('required') === 'boolean' ? _select.data('required') : self.settings.required;
-    var _firstTitle = typeof _select.data('firstTitle') === 'undefined' ? self.settings.firstTitle : _select.data('firstTitle');
-    var _firstValue = typeof _select.data('firstValue') === 'undefined' ? self.settings.firstValue : _select.data('firstValue');
-    var _jsonName = typeof _select.data('jsonName') === 'undefined' ? self.settings.jsonName : _select.data('jsonName');
-    var _jsonValue = typeof _select.data('jsonValue') === 'undefined' ? self.settings.jsonValue : _select.data('jsonValue');
-
-    if (!$.isArray(data)) {return};
-
-    var _html = !_required ? '<option value="' + String(_firstValue) + '">' + String(_firstTitle) + '</option>' : '';
-
-    // 区分标题、值的数据
-    if (typeof _jsonName === 'string' && _jsonName.length) {
-      // 无值字段时使用标题作为值
-      if (typeof _jsonValue !== 'string' || !_jsonValue.length) {
-        _jsonValue = _jsonName;
-      };
-
-      for (var i = 0, l = data.length; i < l; i++) {
-        _html += '<option value="' + String(data[i][_jsonValue]) + '">' + String(data[i][_jsonName]) + '</option>';
-      };
-
-    // 数组即为值的数据
-    } else {
-      for (var i = 0, l = data.length; i < l; i++) {
-        _html += '<option value="' + String(data[i]) + '">' + String(data[i]) + '</option>';
-      };
-    };
-
-    _select.html(_html).prop('disabled', false).css({
-      'display': '',
-      'visibility': ''
-    });
-
-    // 初次加载设置默认值
-    if (typeof _select.attr('data-value') === 'string') {
-      _select.val(String(_select.attr('data-value'))).removeAttr('data-value');
-
-      if (_select[0].selectedIndex < 0) {
-        _select[0].options[0].selected = true;
-      };
-    };
-
-    if (_required || _select[0].selectedIndex > 0) {
-      _select.trigger('change');
-    };
-
-  };
-
-  // 改变选择时的处理
-  cxSelect.selectChange = function(name) {
-    var self = this;
-
-    if (typeof name !== 'string' || !name.length) {return};
-
-    var index;
-
-    name = name.replace(/\s+/g, ',');
-    name = ',' + name + ',';
-
-    // 获取当前 select 位置
-    for (var i = 0, l = self.selectArray.length; i < l; i++) {
-      if (name.indexOf(',' + self.settings.selects[i] + ',') > -1) {
-        index = i;
-        break;
-      };
-    };
-
-    if (typeof index === 'number' && index > -1) {
-      index += 1;
-      cxSelect.getOptionData.call(self, index);
-    };
-  };
-
-  $.cxSelect = function() {
-    return cxSelect.apply(this, arguments);
-  };
-
-  // 默认值
-  $.cxSelect.defaults = {
-    selects: [],            // 下拉选框组
-    url: null,              // 列表数据文件路径(URL)或数组数据
-    data: null,             // 自定义数据
-    emptyStyle: null,       // 无数据状态显示方式
-    required: false,        // 是否为必选
-    firstTitle: '请选择',    // 第一个选项的标题
-    firstValue: '',         // 第一个选项的值
-    jsonSpace: '',          // 数据命名空间
-    jsonName: 'n',          // 数据标题字段名称
-    jsonValue: '',          // 数据值字段名称
-    jsonSub: 's'            // 子集数据字段名称
-  };
-
-  $.fn.cxSelect = function(settings, callback) {
-    this.each(function(i) {
-      $.cxSelect(this, settings, callback);
-    });
-    return this;
-  };
-}));

ファイルの差分が大きいため隠しています
+ 0 - 11
ruoyi-admin/src/main/resources/static/ajax/libs/cxselect/jquery.cxselect.min.js


+ 0 - 844
ruoyi-admin/src/main/resources/static/ajax/libs/duallistbox/bootstrap-duallistbox.js

@@ -1,844 +0,0 @@
-/*
- *  Bootstrap Duallistbox - v3.0.9
- *  A responsive dual listbox widget optimized for Twitter Bootstrap. It works on all modern browsers and on touch devices.
- *  https://www.virtuosoft.eu/code/bootstrap-duallistbox/
- *
- *  Made by István Ujj-Mészáros
- *  Under Apache License v2.0 License
- */
-;(function ($, window, document, undefined) {
-  // Create the defaults once
-  var pluginName = 'bootstrapDualListbox',
-    defaults = {
-      bootstrap2Compatible: false,
-      filterTextClear: 'show all',
-      filterPlaceHolder: 'Filter',
-      moveSelectedLabel: 'Move selected',
-      moveAllLabel: 'Move all',
-      removeSelectedLabel: 'Remove selected',
-      removeAllLabel: 'Remove all',
-      moveOnSelect: true,                                                                 // true/false (forced true on androids, see the comment later)
-      moveOnDoubleClick: true,                                                            // true/false (forced false on androids, cause moveOnSelect is forced to true)
-      preserveSelectionOnMove: false,                                                     // 'all' / 'moved' / false
-      selectedListLabel: false,                                                           // 'string', false
-      nonSelectedListLabel: false,                                                        // 'string', false
-      helperSelectNamePostfix: '_helper',                                                 // 'string_of_postfix' / false
-      selectorMinimalHeight: 100,
-      showFilterInputs: true,                                                             // whether to show filter inputs
-      nonSelectedFilter: '',                                                              // string, filter the non selected options
-      selectedFilter: '',                                                                 // string, filter the selected options
-      infoText: 'Showing all {0}',                                                        // text when all options are visible / false for no info text
-      infoTextFiltered: '<span class="label label-warning">Filtered</span> {0} from {1}', // when not all of the options are visible due to the filter
-      infoTextEmpty: 'Empty list',                                                        // when there are no options present in the list
-      filterOnValues: false,                                                              // filter by selector's values, boolean
-      sortByInputOrder: false,
-      eventMoveOverride: false,                                                           // boolean, allows user to unbind default event behaviour and run their own instead
-      eventMoveAllOverride: false,                                                        // boolean, allows user to unbind default event behaviour and run their own instead
-      eventRemoveOverride: false,                                                         // boolean, allows user to unbind default event behaviour and run their own instead
-      eventRemoveAllOverride: false                                                       // boolean, allows user to unbind default event behaviour and run their own instead
-    },
-    // Selections are invisible on android if the containing select is styled with CSS
-    // http://code.google.com/p/android/issues/detail?id=16922
-    isBuggyAndroid = /android/i.test(navigator.userAgent.toLowerCase());
-
-  // The actual plugin constructor
-  function BootstrapDualListbox(element, options) {
-    this.element = $(element);
-    // jQuery has an extend method which merges the contents of two or
-    // more objects, storing the result in the first object. The first object
-    // is generally empty as we don't want to alter the default options for
-    // future instances of the plugin
-    this.settings = $.extend({}, defaults, options);
-    this._defaults = defaults;
-    this._name = pluginName;
-    this.init();
-  }
-
-  function triggerChangeEvent(dualListbox) {
-    dualListbox.element.trigger('change');
-  }
-
-  function updateSelectionStates(dualListbox) {
-    dualListbox.element.find('option').each(function(index, item) {
-      var $item = $(item);
-      if (typeof($item.data('original-index')) === 'undefined') {
-        $item.data('original-index', dualListbox.elementCount++);
-      }
-      if (typeof($item.data('_selected')) === 'undefined') {
-        $item.data('_selected', false);
-      }
-    });
-  }
-
-  function changeSelectionState(dualListbox, original_index, selected) {
-    dualListbox.element.find('option').each(function(index, item) {
-      var $item = $(item);
-      if ($item.data('original-index') === original_index) {
-        $item.prop('selected', selected);
-        if(selected){
-          $item.attr('data-sortindex', dualListbox.sortIndex);
-          dualListbox.sortIndex++;
-        } else {
-          $item.removeAttr('data-sortindex');
-        }
-      }
-    });
-  }
-
-  function formatString(s, args) {
-    return s.replace(/\{(\d+)\}/g, function(match, number) {
-      return typeof args[number] !== 'undefined' ? args[number] : match;
-    });
-  }
-
-  function refreshInfo(dualListbox) {
-    if (!dualListbox.settings.infoText) {
-      return;
-    }
-
-    var visible1 = dualListbox.elements.select1.find('option').length,
-      visible2 = dualListbox.elements.select2.find('option').length,
-      all1 = dualListbox.element.find('option').length - dualListbox.selectedElements,
-      all2 = dualListbox.selectedElements,
-      content = '';
-
-    if (all1 === 0) {
-      content = dualListbox.settings.infoTextEmpty;
-    } else if (visible1 === all1) {
-      content = formatString(dualListbox.settings.infoText, [visible1, all1]);
-    } else {
-      content = formatString(dualListbox.settings.infoTextFiltered, [visible1, all1]);
-    }
-
-    dualListbox.elements.info1.html(content);
-    dualListbox.elements.box1.toggleClass('filtered', !(visible1 === all1 || all1 === 0));
-
-    if (all2 === 0) {
-      content = dualListbox.settings.infoTextEmpty;
-    } else if (visible2 === all2) {
-      content = formatString(dualListbox.settings.infoText, [visible2, all2]);
-    } else {
-      content = formatString(dualListbox.settings.infoTextFiltered, [visible2, all2]);
-    }
-
-    dualListbox.elements.info2.html(content);
-    dualListbox.elements.box2.toggleClass('filtered', !(visible2 === all2 || all2 === 0));
-  }
-
-  function refreshSelects(dualListbox) {
-    dualListbox.selectedElements = 0;
-
-    dualListbox.elements.select1.empty();
-    dualListbox.elements.select2.empty();
-
-    dualListbox.element.find('option').each(function(index, item) {
-      var $item = $(item);
-      if ($item.prop('selected')) {
-        dualListbox.selectedElements++;
-        dualListbox.elements.select2.append($item.clone(true).prop('selected', $item.data('_selected')));
-      } else {
-        dualListbox.elements.select1.append($item.clone(true).prop('selected', $item.data('_selected')));
-      }
-    });
-
-    if (dualListbox.settings.showFilterInputs) {
-      filter(dualListbox, 1);
-      filter(dualListbox, 2);
-    }
-    refreshInfo(dualListbox);
-  }
-
-  function filter(dualListbox, selectIndex) {
-    if (!dualListbox.settings.showFilterInputs) {
-      return;
-    }
-
-    saveSelections(dualListbox, selectIndex);
-
-    dualListbox.elements['select'+selectIndex].empty().scrollTop(0);
-    var regex = new RegExp($.trim(dualListbox.elements['filterInput'+selectIndex].val()), 'gi'),
-      allOptions = dualListbox.element.find('option'),
-      options = dualListbox.element;
-
-    if (selectIndex === 1) {
-      options = allOptions.not(':selected');
-    } else  {
-      options = options.find('option:selected');
-    }
-
-    options.each(function(index, item) {
-      var $item = $(item),
-        isFiltered = true;
-      if (item.text.match(regex) || (dualListbox.settings.filterOnValues && $item.attr('value').match(regex) ) ) {
-        isFiltered = false;
-        dualListbox.elements['select'+selectIndex].append($item.clone(true).prop('selected', $item.data('_selected')));
-      }
-      allOptions.eq($item.data('original-index')).data('filtered'+selectIndex, isFiltered);
-    });
-
-    refreshInfo(dualListbox);
-  }
-
-  function saveSelections(dualListbox, selectIndex) {
-    var options = dualListbox.element.find('option');
-    dualListbox.elements['select'+selectIndex].find('option').each(function(index, item) {
-      var $item = $(item);
-      options.eq($item.data('original-index')).data('_selected', $item.prop('selected'));
-    });
-  }
-
-  function sortOptionsByInputOrder(select){
-    var selectopt = select.children('option');
-
-    selectopt.sort(function(a,b){
-      var an = parseInt(a.getAttribute('data-sortindex')),
-          bn = parseInt(b.getAttribute('data-sortindex'));
-
-          if(an > bn) {
-             return 1;
-          }
-          if(an < bn) {
-            return -1;
-          }
-          return 0;
-    });
-
-    selectopt.detach().appendTo(select);
-  }
-
-  function sortOptions(select, dualListbox) {
-    select.find('option').sort(function(a, b) {
-      return ($(a).data('original-index') > $(b).data('original-index')) ? 1 : -1;
-    }).appendTo(select);
-
-    // workaround for chromium bug: https://bugs.chromium.org/p/chromium/issues/detail?id=1072475
-    refreshSelects(dualListbox);
-  }
-
-  function clearSelections(dualListbox) {
-    dualListbox.elements.select1.find('option').each(function() {
-      dualListbox.element.find('option').data('_selected', false);
-    });
-  }
-
-  function move(dualListbox) {
-    if (dualListbox.settings.preserveSelectionOnMove === 'all' && !dualListbox.settings.moveOnSelect) {
-      saveSelections(dualListbox, 1);
-      saveSelections(dualListbox, 2);
-    } else if (dualListbox.settings.preserveSelectionOnMove === 'moved' && !dualListbox.settings.moveOnSelect) {
-      saveSelections(dualListbox, 1);
-    }
-
-    dualListbox.elements.select1.find('option:selected').each(function(index, item) {
-      var $item = $(item);
-      if (!$item.data('filtered1')) {
-        changeSelectionState(dualListbox, $item.data('original-index'), true);
-      }
-    });
-
-    refreshSelects(dualListbox);
-    triggerChangeEvent(dualListbox);
-    if(dualListbox.settings.sortByInputOrder){
-        sortOptionsByInputOrder(dualListbox.elements.select2);
-    } else {
-        sortOptions(dualListbox.elements.select2, dualListbox);
-    }
-  }
-
-  function remove(dualListbox) {
-    if (dualListbox.settings.preserveSelectionOnMove === 'all' && !dualListbox.settings.moveOnSelect) {
-      saveSelections(dualListbox, 1);
-      saveSelections(dualListbox, 2);
-    } else if (dualListbox.settings.preserveSelectionOnMove === 'moved' && !dualListbox.settings.moveOnSelect) {
-      saveSelections(dualListbox, 2);
-    }
-
-    dualListbox.elements.select2.find('option:selected').each(function(index, item) {
-      var $item = $(item);
-      if (!$item.data('filtered2')) {
-        changeSelectionState(dualListbox, $item.data('original-index'), false);
-      }
-    });
-
-    refreshSelects(dualListbox);
-    triggerChangeEvent(dualListbox);
-    sortOptions(dualListbox.elements.select1, dualListbox);
-    if(dualListbox.settings.sortByInputOrder){
-        sortOptionsByInputOrder(dualListbox.elements.select2);
-    }
-  }
-
-  function moveAll(dualListbox) {
-    if (dualListbox.settings.preserveSelectionOnMove === 'all' && !dualListbox.settings.moveOnSelect) {
-      saveSelections(dualListbox, 1);
-      saveSelections(dualListbox, 2);
-    } else if (dualListbox.settings.preserveSelectionOnMove === 'moved' && !dualListbox.settings.moveOnSelect) {
-      saveSelections(dualListbox, 1);
-    }
-
-    dualListbox.element.find('option').each(function(index, item) {
-      var $item = $(item);
-      if (!$item.data('filtered1')) {
-        $item.prop('selected', true);
-        $item.attr('data-sortindex', dualListbox.sortIndex);
-        dualListbox.sortIndex++;
-      }
-    });
-
-    refreshSelects(dualListbox);
-    triggerChangeEvent(dualListbox);
-  }
-
-  function removeAll(dualListbox) {
-    if (dualListbox.settings.preserveSelectionOnMove === 'all' && !dualListbox.settings.moveOnSelect) {
-      saveSelections(dualListbox, 1);
-      saveSelections(dualListbox, 2);
-    } else if (dualListbox.settings.preserveSelectionOnMove === 'moved' && !dualListbox.settings.moveOnSelect) {
-      saveSelections(dualListbox, 2);
-    }
-
-    dualListbox.element.find('option').each(function(index, item) {
-      var $item = $(item);
-      if (!$item.data('filtered2')) {
-        $item.prop('selected', false);
-        $item.removeAttr('data-sortindex');
-      }
-    });
-
-    refreshSelects(dualListbox);
-    triggerChangeEvent(dualListbox);
-  }
-
-  function bindEvents(dualListbox) {
-    dualListbox.elements.form.submit(function(e) {
-      if (dualListbox.elements.filterInput1.is(':focus')) {
-        e.preventDefault();
-        dualListbox.elements.filterInput1.focusout();
-      } else if (dualListbox.elements.filterInput2.is(':focus')) {
-        e.preventDefault();
-        dualListbox.elements.filterInput2.focusout();
-      }
-    });
-
-    dualListbox.element.on('bootstrapDualListbox.refresh', function(e, mustClearSelections){
-      dualListbox.refresh(mustClearSelections);
-    });
-
-    dualListbox.elements.filterClear1.on('click', function() {
-      dualListbox.setNonSelectedFilter('', true);
-    });
-
-    dualListbox.elements.filterClear2.on('click', function() {
-      dualListbox.setSelectedFilter('', true);
-    });
-
-    if (dualListbox.settings.eventMoveOverride === false) {
-      dualListbox.elements.moveButton.on('click', function() {
-        move(dualListbox);
-      });
-    }
-
-    if (dualListbox.settings.eventMoveAllOverride === false) {
-      dualListbox.elements.moveAllButton.on('click', function() {
-        moveAll(dualListbox);
-      });
-    }
-
-    if (dualListbox.settings.eventRemoveOverride === false) {
-      dualListbox.elements.removeButton.on('click', function() {
-        remove(dualListbox);
-      });
-    }
-
-    if (dualListbox.settings.eventRemoveAllOverride === false) {
-      dualListbox.elements.removeAllButton.on('click', function() {
-        removeAll(dualListbox);
-      });
-    }
-
-    dualListbox.elements.filterInput1.on('change keyup', function() {
-      filter(dualListbox, 1);
-    });
-
-    dualListbox.elements.filterInput2.on('change keyup', function() {
-      filter(dualListbox, 2);
-    });
-  }
-
-  BootstrapDualListbox.prototype = {
-    init: function () {
-      // Add the custom HTML template
-      this.container = $('' +
-        '<div class="bootstrap-duallistbox-container">' +
-        ' <div class="box1">' +
-        '   <label></label>' +
-        '   <span class="info-container">' +
-        '     <span class="info"></span>' +
-        '     <button type="button" class="btn clear1 pull-right"></button>' +
-        '   </span>' +
-        '   <input class="filter" type="text">' +
-        '   <div class="btn-group buttons">' +
-        '     <button type="button" class="btn moveall">' +
-        '       <i></i>' +
-        '       <i></i>' +
-        '     </button>' +
-        '     <button type="button" class="btn move">' +
-        '       <i></i>' +
-        '     </button>' +
-        '   </div>' +
-        '   <select multiple="multiple"></select>' +
-        ' </div>' +
-        ' <div class="box2">' +
-        '   <label></label>' +
-        '   <span class="info-container">' +
-        '     <span class="info"></span>' +
-        '     <button type="button" class="btn clear2 pull-right"></button>' +
-        '   </span>' +
-        '   <input class="filter" type="text">' +
-        '   <div class="btn-group buttons">' +
-        '     <button type="button" class="btn remove">' +
-        '       <i></i>' +
-        '     </button>' +
-        '     <button type="button" class="btn removeall">' +
-        '       <i></i>' +
-        '       <i></i>' +
-        '     </button>' +
-        '   </div>' +
-        '   <select multiple="multiple"></select>' +
-        ' </div>' +
-        '</div>')
-        .insertBefore(this.element);
-
-      // Cache the inner elements
-      this.elements = {
-        originalSelect: this.element,
-        box1: $('.box1', this.container),
-        box2: $('.box2', this.container),
-        filterInput1: $('.box1 .filter', this.container),
-        filterInput2: $('.box2 .filter', this.container),
-        filterClear1: $('.box1 .clear1', this.container),
-        filterClear2: $('.box2 .clear2', this.container),
-        label1: $('.box1 > label', this.container),
-        label2: $('.box2 > label', this.container),
-        info1: $('.box1 .info', this.container),
-        info2: $('.box2 .info', this.container),
-        select1: $('.box1 select', this.container),
-        select2: $('.box2 select', this.container),
-        moveButton: $('.box1 .move', this.container),
-        removeButton: $('.box2 .remove', this.container),
-        moveAllButton: $('.box1 .moveall', this.container),
-        removeAllButton: $('.box2 .removeall', this.container),
-        form: $($('.box1 .filter', this.container)[0].form)
-      };
-
-      // Set select IDs
-      this.originalSelectName = this.element.attr('name') || '';
-      var select1Id = 'bootstrap-duallistbox-nonselected-list_' + this.originalSelectName,
-        select2Id = 'bootstrap-duallistbox-selected-list_' + this.originalSelectName;
-      this.elements.select1.attr('id', select1Id);
-      this.elements.select2.attr('id', select2Id);
-      this.elements.label1.attr('for', select1Id);
-      this.elements.label2.attr('for', select2Id);
-
-      // Apply all settings
-      this.selectedElements = 0;
-      this.sortIndex = 0;
-      this.elementCount = 0;
-      this.setBootstrap2Compatible(this.settings.bootstrap2Compatible);
-      this.setFilterTextClear(this.settings.filterTextClear);
-      this.setFilterPlaceHolder(this.settings.filterPlaceHolder);
-      this.setMoveSelectedLabel(this.settings.moveSelectedLabel);
-      this.setMoveAllLabel(this.settings.moveAllLabel);
-      this.setRemoveSelectedLabel(this.settings.removeSelectedLabel);
-      this.setRemoveAllLabel(this.settings.removeAllLabel);
-      this.setMoveOnSelect(this.settings.moveOnSelect);
-      this.setMoveOnDoubleClick(this.settings.moveOnDoubleClick);
-      this.setPreserveSelectionOnMove(this.settings.preserveSelectionOnMove);
-      this.setSelectedListLabel(this.settings.selectedListLabel);
-      this.setNonSelectedListLabel(this.settings.nonSelectedListLabel);
-      this.setHelperSelectNamePostfix(this.settings.helperSelectNamePostfix);
-      this.setSelectOrMinimalHeight(this.settings.selectorMinimalHeight);
-
-      updateSelectionStates(this);
-
-      this.setShowFilterInputs(this.settings.showFilterInputs);
-      this.setNonSelectedFilter(this.settings.nonSelectedFilter);
-      this.setSelectedFilter(this.settings.selectedFilter);
-      this.setInfoText(this.settings.infoText);
-      this.setInfoTextFiltered(this.settings.infoTextFiltered);
-      this.setInfoTextEmpty(this.settings.infoTextEmpty);
-      this.setFilterOnValues(this.settings.filterOnValues);
-      this.setSortByInputOrder(this.settings.sortByInputOrder);
-      this.setEventMoveOverride(this.settings.eventMoveOverride);
-      this.setEventMoveAllOverride(this.settings.eventMoveAllOverride);
-      this.setEventRemoveOverride(this.settings.eventRemoveOverride);
-      this.setEventRemoveAllOverride(this.settings.eventRemoveAllOverride);
-
-      // Hide the original select
-      this.element.hide();
-
-      bindEvents(this);
-      refreshSelects(this);
-
-      return this.element;
-    },
-    setBootstrap2Compatible: function(value, refresh) {
-      this.settings.bootstrap2Compatible = value;
-      if (value) {
-        this.container.removeClass('row').addClass('row-fluid bs2compatible');
-        this.container.find('.box1, .box2').removeClass('col-md-6').addClass('span6');
-        this.container.find('.clear1, .clear2').removeClass('btn-default btn-xs').addClass('btn-mini');
-        this.container.find('input, select').removeClass('form-control');
-        this.container.find('.btn').removeClass('btn-default');
-        this.container.find('.moveall > i, .move > i').removeClass('glyphicon glyphicon-arrow-right').addClass('icon-arrow-right');
-        this.container.find('.removeall > i, .remove > i').removeClass('glyphicon glyphicon-arrow-left').addClass('icon-arrow-left');
-      } else {
-        this.container.removeClass('row-fluid bs2compatible').addClass('row');
-        this.container.find('.box1, .box2').removeClass('span6').addClass('col-md-6');
-        this.container.find('.clear1, .clear2').removeClass('btn-mini').addClass('btn-default btn-xs');
-        this.container.find('input, select').addClass('form-control');
-        this.container.find('.btn').addClass('btn-default');
-        this.container.find('.moveall > i, .move > i').removeClass('icon-arrow-right').addClass('glyphicon glyphicon-arrow-right');
-        this.container.find('.removeall > i, .remove > i').removeClass('icon-arrow-left').addClass('glyphicon glyphicon-arrow-left');
-      }
-      if (refresh) {
-        refreshSelects(this);
-      }
-      return this.element;
-    },
-    setFilterTextClear: function(value, refresh) {
-      this.settings.filterTextClear = value;
-      this.elements.filterClear1.html(value);
-      this.elements.filterClear2.html(value);
-      if (refresh) {
-        refreshSelects(this);
-      }
-      return this.element;
-    },
-    setFilterPlaceHolder: function(value, refresh) {
-      this.settings.filterPlaceHolder = value;
-      this.elements.filterInput1.attr('placeholder', value);
-      this.elements.filterInput2.attr('placeholder', value);
-      if (refresh) {
-        refreshSelects(this);
-      }
-      return this.element;
-    },
-    setMoveSelectedLabel: function(value, refresh) {
-      this.settings.moveSelectedLabel = value;
-      this.elements.moveButton.attr('title', value);
-      if (refresh) {
-        refreshSelects(this);
-      }
-      return this.element;
-    },
-    setMoveAllLabel: function(value, refresh) {
-      this.settings.moveAllLabel = value;
-      this.elements.moveAllButton.attr('title', value);
-      if (refresh) {
-        refreshSelects(this);
-      }
-      return this.element;
-    },
-    setRemoveSelectedLabel: function(value, refresh) {
-      this.settings.removeSelectedLabel = value;
-      this.elements.removeButton.attr('title', value);
-      if (refresh) {
-        refreshSelects(this);
-      }
-      return this.element;
-    },
-    setRemoveAllLabel: function(value, refresh) {
-      this.settings.removeAllLabel = value;
-      this.elements.removeAllButton.attr('title', value);
-      if (refresh) {
-        refreshSelects(this);
-      }
-      return this.element;
-    },
-    setMoveOnSelect: function(value, refresh) {
-      if (isBuggyAndroid) {
-        value = true;
-      }
-      this.settings.moveOnSelect = value;
-      if (this.settings.moveOnSelect) {
-        this.container.addClass('moveonselect');
-        var self = this;
-        this.elements.select1.on('change', function() {
-          move(self);
-        });
-        this.elements.select2.on('change', function() {
-          remove(self);
-        });
-      } else {
-        this.container.removeClass('moveonselect');
-        this.elements.select1.off('change');
-        this.elements.select2.off('change');
-      }
-      if (refresh) {
-        refreshSelects(this);
-      }
-      return this.element;
-    },
-    setMoveOnDoubleClick: function(value, refresh) {
-      if (isBuggyAndroid) {
-        value = false;
-      }
-      this.settings.moveOnDoubleClick = value;
-      if (this.settings.moveOnDoubleClick) {
-        this.container.addClass('moveondoubleclick');
-        var self = this;
-        this.elements.select1.on('dblclick', function() {
-          move(self);
-        });
-        this.elements.select2.on('dblclick', function() {
-          remove(self);
-        });
-      } else {
-        this.container.removeClass('moveondoubleclick');
-        this.elements.select1.off('dblclick');
-        this.elements.select2.off('dblclick');
-      }
-      if (refresh) {
-        refreshSelects(this);
-      }
-      return this.element;
-    },
-    setPreserveSelectionOnMove: function(value, refresh) {
-      // We are forcing to move on select and disabling preserveSelectionOnMove on Android
-      if (isBuggyAndroid) {
-        value = false;
-      }
-      this.settings.preserveSelectionOnMove = value;
-      if (refresh) {
-        refreshSelects(this);
-      }
-      return this.element;
-    },
-    setSelectedListLabel: function(value, refresh) {
-      this.settings.selectedListLabel = value;
-      if (value) {
-        this.elements.label2.show().html(value);
-      } else {
-        this.elements.label2.hide().html(value);
-      }
-      if (refresh) {
-        refreshSelects(this);
-      }
-      return this.element;
-    },
-    setNonSelectedListLabel: function(value, refresh) {
-      this.settings.nonSelectedListLabel = value;
-      if (value) {
-        this.elements.label1.show().html(value);
-      } else {
-        this.elements.label1.hide().html(value);
-      }
-      if (refresh) {
-        refreshSelects(this);
-      }
-      return this.element;
-    },
-    setHelperSelectNamePostfix: function(value, refresh) {
-      this.settings.helperSelectNamePostfix = value;
-      if (value) {
-        this.elements.select1.attr('name', this.originalSelectName + value + '1');
-        this.elements.select2.attr('name', this.originalSelectName + value + '2');
-      } else {
-        this.elements.select1.removeAttr('name');
-        this.elements.select2.removeAttr('name');
-      }
-      if (refresh) {
-        refreshSelects(this);
-      }
-      return this.element;
-    },
-    setSelectOrMinimalHeight: function(value, refresh) {
-      this.settings.selectorMinimalHeight = value;
-      var height = this.element.height();
-      if (this.element.height() < value) {
-        height = value;
-      }
-      this.elements.select1.height(height);
-      this.elements.select2.height(height);
-      if (refresh) {
-        refreshSelects(this);
-      }
-      return this.element;
-    },
-    setShowFilterInputs: function(value, refresh) {
-      if (!value) {
-        this.setNonSelectedFilter('');
-        this.setSelectedFilter('');
-        refreshSelects(this);
-        this.elements.filterInput1.hide();
-        this.elements.filterInput2.hide();
-      } else {
-        this.elements.filterInput1.show();
-        this.elements.filterInput2.show();
-      }
-      this.settings.showFilterInputs = value;
-      if (refresh) {
-        refreshSelects(this);
-      }
-      return this.element;
-    },
-    setNonSelectedFilter: function(value, refresh) {
-      if (this.settings.showFilterInputs) {
-        this.settings.nonSelectedFilter = value;
-        this.elements.filterInput1.val(value);
-        if (refresh) {
-          refreshSelects(this);
-        }
-        return this.element;
-      }
-    },
-    setSelectedFilter: function(value, refresh) {
-      if (this.settings.showFilterInputs) {
-        this.settings.selectedFilter = value;
-        this.elements.filterInput2.val(value);
-        if (refresh) {
-          refreshSelects(this);
-        }
-        return this.element;
-      }
-    },
-    setInfoText: function(value, refresh) {
-      this.settings.infoText = value;
-      if (value) {
-        this.elements.info1.show();
-        this.elements.info2.show();
-      } else {
-        this.elements.info1.hide();
-        this.elements.info2.hide();
-      }
-      if (refresh) {
-        refreshSelects(this);
-      }
-      return this.element;
-    },
-    setInfoTextFiltered: function(value, refresh) {
-      this.settings.infoTextFiltered = value;
-      if (refresh) {
-        refreshSelects(this);
-      }
-      return this.element;
-    },
-    setInfoTextEmpty: function(value, refresh) {
-      this.settings.infoTextEmpty = value;
-      if (refresh) {
-        refreshSelects(this);
-      }
-      return this.element;
-    },
-    setFilterOnValues: function(value, refresh) {
-      this.settings.filterOnValues = value;
-      if (refresh) {
-        refreshSelects(this);
-      }
-      return this.element;
-    },
-    setSortByInputOrder: function(value, refresh){
-        this.settings.sortByInputOrder = value;
-        if (refresh) {
-          refreshSelects(this);
-        }
-        return this.element;
-    },
-    setEventMoveOverride: function(value, refresh) {
-        this.settings.eventMoveOverride = value;
-        if (refresh) {
-          refreshSelects(this);
-        }
-        return this.element;
-    },
-    setEventMoveAllOverride: function(value, refresh) {
-        this.settings.eventMoveAllOverride = value;
-        if (refresh) {
-          refreshSelects(this);
-        }
-        return this.element;
-    },
-    setEventRemoveOverride: function(value, refresh) {
-        this.settings.eventRemoveOverride = value;
-        if (refresh) {
-          refreshSelects(this);
-        }
-        return this.element;
-    },
-    setEventRemoveAllOverride: function(value, refresh) {
-        this.settings.eventRemoveAllOverride = value;
-        if (refresh) {
-          refreshSelects(this);
-        }
-        return this.element;
-    },
-    getContainer: function() {
-      return this.container;
-    },
-    refresh: function(mustClearSelections) {
-      updateSelectionStates(this);
-
-      if (!mustClearSelections) {
-        saveSelections(this, 1);
-        saveSelections(this, 2);
-      } else {
-        clearSelections(this);
-      }
-
-      refreshSelects(this);
-    },
-    destroy: function() {
-      this.container.remove();
-      this.element.show();
-      $.data(this, 'plugin_' + pluginName, null);
-      return this.element;
-    }
-  };
-
-  // A really lightweight plugin wrapper around the constructor,
-  // preventing against multiple instantiations
-  $.fn[ pluginName ] = function (options) {
-    var args = arguments;
-
-    // Is the first parameter an object (options), or was omitted, instantiate a new instance of the plugin.
-    if (options === undefined || typeof options === 'object') {
-      return this.each(function () {
-        // If this is not a select
-        if (!$(this).is('select')) {
-          $(this).find('select').each(function(index, item) {
-            // For each nested select, instantiate the Dual List Box
-            $(item).bootstrapDualListbox(options);
-          });
-        } else if (!$.data(this, 'plugin_' + pluginName)) {
-          // Only allow the plugin to be instantiated once so we check that the element has no plugin instantiation yet
-
-          // if it has no instance, create a new one, pass options to our plugin constructor,
-          // and store the plugin instance in the elements jQuery data object.
-          $.data(this, 'plugin_' + pluginName, new BootstrapDualListbox(this, options));
-        }
-      });
-      // If the first parameter is a string and it doesn't start with an underscore or "contains" the `init`-function,
-      // treat this as a call to a public method.
-    } else if (typeof options === 'string' && options[0] !== '_' && options !== 'init') {
-
-      // Cache the method call to make it possible to return a value
-      var returns;
-
-      this.each(function () {
-        var instance = $.data(this, 'plugin_' + pluginName);
-        // Tests that there's already a plugin-instance and checks that the requested public method exists
-        if (instance instanceof BootstrapDualListbox && typeof instance[options] === 'function') {
-          // Call the method of our plugin instance, and pass it the supplied arguments.
-          returns = instance[options].apply(instance, Array.prototype.slice.call(args, 1));
-        }
-      });
-
-      // If the earlier cached method gives a value back return the value,
-      // otherwise return this to preserve chainability.
-      return returns !== undefined ? returns : this;
-    }
-
-  };
-
-})(jQuery, window, document);

ファイルの差分が大きいため隠しています
+ 0 - 10
ruoyi-admin/src/main/resources/static/ajax/libs/duallistbox/bootstrap-duallistbox.min.js


+ 0 - 182
ruoyi-admin/src/main/resources/static/ajax/libs/fullscreen/jquery.fullscreen.js

@@ -1,182 +0,0 @@
-/**
- * 基于jQuery FullScreen修改
- * 新增支持IE全屏显示
- * Copyright (c) 2019 ruoyi
- */
-(function(jQuery) {
-    
-    /**
-     * Sets or gets the fullscreen state.
-     * 
-     * @param {boolean=} state
-     *            True to enable fullscreen mode, false to disable it. If not
-     *            specified then the current fullscreen state is returned.
-     * @return {boolean|Element|jQuery|null}
-     *            When querying the fullscreen state then the current fullscreen
-     *            element (or true if browser doesn't support it) is returned
-     *            when browser is currently in full screen mode. False is returned
-     *            if browser is not in full screen mode. Null is returned if 
-     *            browser doesn't support fullscreen mode at all. When setting 
-     *            the fullscreen state then the current jQuery selection is 
-     *            returned for chaining.
-     * @this {jQuery}
-     */
-    function fullScreen(state)
-    {
-        var e, func, doc;
-        
-        // Do nothing when nothing was selected
-        if (!this.length) return this;
-        
-        // We only use the first selected element because it doesn't make sense
-        // to fullscreen multiple elements.
-        e = (/** @type {Element} */ this[0]);
-        
-        // Find the real element and the document (Depends on whether the
-        // document itself or a HTML element was selected)
-        if (e.ownerDocument)
-        {
-            doc = e.ownerDocument;
-        }
-        else
-        {
-            doc = e;
-            e = doc.documentElement;
-        }
-        
-        // When no state was specified then return the current state.
-        if (state == null)
-        {
-            // When fullscreen mode is not supported then return null
-            if (!((/** @type {?Function} */ doc["exitFullscreen"])
-                || (/** @type {?Function} */ doc["webkitExitFullscreen"])
-                || (/** @type {?Function} */ doc["webkitCancelFullScreen"])
-                || (/** @type {?Function} */ doc["msExitFullscreen"])
-                || (/** @type {?Function} */ doc["mozCancelFullScreen"])))
-            {
-                return null;
-            }
-            
-            // Check fullscreen state
-            state = !!doc["fullscreenElement"]
-                || !!doc["msFullscreenElement"]
-                || !!doc["webkitIsFullScreen"]
-                || !!doc["mozFullScreen"];
-            if (!state) return state;
-            
-            // Return current fullscreen element or "true" if browser doesn't
-            // support this
-            return (/** @type {?Element} */ doc["fullscreenElement"])
-                || (/** @type {?Element} */ doc["webkitFullscreenElement"])
-                || (/** @type {?Element} */ doc["webkitCurrentFullScreenElement"])
-                || (/** @type {?Element} */ doc["msFullscreenElement"])
-                || (/** @type {?Element} */ doc["mozFullScreenElement"])
-                || state;
-        }
-        
-        // When state was specified then enter or exit fullscreen mode.
-        if (state)
-        {
-            // Enter fullscreen
-            func = (/** @type {?Function} */ e["requestFullscreen"])
-                || (/** @type {?Function} */ e["webkitRequestFullscreen"])
-                || (/** @type {?Function} */ e["webkitRequestFullScreen"])
-                || (/** @type {?Function} */ e["msRequestFullscreen"])
-                || (/** @type {?Function} */ e["mozRequestFullScreen"]);
-            if (func) 
-            {
-                func.call(e);
-            }
-            return this;
-        }
-        else
-        {
-            // Exit fullscreen
-            func = (/** @type {?Function} */ doc["exitFullscreen"])
-                || (/** @type {?Function} */ doc["webkitExitFullscreen"])
-                || (/** @type {?Function} */ doc["webkitCancelFullScreen"])
-                || (/** @type {?Function} */ doc["msExitFullscreen"])
-                || (/** @type {?Function} */ doc["mozCancelFullScreen"]);
-            if (func) func.call(doc);
-            return this;
-        }
-    }
-    
-    /**
-     * Toggles the fullscreen mode.
-     * 
-     * @return {!jQuery}
-     *            The jQuery selection for chaining.
-     * @this {jQuery}
-     */
-    function toggleFullScreen()
-    {
-        return (/** @type {!jQuery} */ fullScreen.call(this, 
-            !fullScreen.call(this)));
-    }
-    
-    /**
-     * Handles the browser-specific fullscreenchange event and triggers
-     * a jquery event for it.
-     *
-     * @param {?Event} event
-     *            The fullscreenchange event.
-     */
-    function fullScreenChangeHandler(event)
-    {
-        jQuery(document).trigger(new jQuery.Event("fullscreenchange"));
-    }
-    
-    /**
-     * Handles the browser-specific fullscreenerror event and triggers
-     * a jquery event for it.
-     *
-     * @param {?Event} event
-     *            The fullscreenerror event.
-     */
-    function fullScreenErrorHandler(event)
-    {
-        jQuery(document).trigger(new jQuery.Event("fullscreenerror"));
-    }
-    
-    /**
-     * Installs the fullscreenchange event handler.
-     */
-    function installFullScreenHandlers()
-    {
-        var e, change, error;
-        
-        // Determine event name
-        e = document;
-        if (e["webkitCancelFullScreen"])
-        {
-            change = "webkitfullscreenchange";
-            error = "webkitfullscreenerror";
-        }
-        else if (e["msExitFullscreen"])
-        {
-            change = "MSFullscreenChange";
-            error = "MSFullscreenError";
-        }
-        else if (e["mozCancelFullScreen"])
-        {
-            change = "mozfullscreenchange";
-            error = "mozfullscreenerror";
-        }
-        else 
-        {
-            change = "fullscreenchange";
-            error = "fullscreenerror";
-        }
-    
-        // Install the event handlers
-        jQuery(document).bind(change, fullScreenChangeHandler);
-        jQuery(document).bind(error, fullScreenErrorHandler);
-    }
-    
-    jQuery.fn["fullScreen"] = fullScreen;
-    jQuery.fn["toggleFullScreen"] = toggleFullScreen;
-    installFullScreenHandlers();
-    
-    })(jQuery);
-    

+ 0 - 79
ruoyi-admin/src/main/resources/static/ajax/libs/highlight/default.min.css

@@ -1,79 +0,0 @@
-/**
- * GitHub Gist Theme
- * Author : Anthony Attard - https://github.com/AnthonyAttard
- * Author : Louis Barranqueiro - https://github.com/LouisBarranqueiro
- */
-
-.hljs {
-  display: block;
-  background: white;
-  padding: 0.5em;
-  color: #333333;
-  overflow-x: auto;
-}
-
-.hljs-comment,
-.hljs-meta {
-  color: #969896;
-}
-
-.hljs-variable,
-.hljs-template-variable,
-.hljs-strong,
-.hljs-emphasis,
-.hljs-quote {
-  color: #df5000;
-}
-
-.hljs-keyword,
-.hljs-selector-tag,
-.hljs-type {
-  color: #d73a49;
-}
-
-.hljs-literal,
-.hljs-symbol,
-.hljs-bullet,
-.hljs-attribute {
-  color: #0086b3;
-}
-
-.hljs-section,
-.hljs-name {
-  color: #63a35c;
-}
-
-.hljs-tag {
-  color: #333333;
-}
-
-.hljs-title,
-.hljs-attr,
-.hljs-selector-id,
-.hljs-selector-class,
-.hljs-selector-attr,
-.hljs-selector-pseudo {
-  color: #6f42c1;
-}
-
-.hljs-addition {
-  color: #55a532;
-  background-color: #eaffea;
-}
-
-.hljs-deletion {
-  color: #bd2c00;
-  background-color: #ffecec;
-}
-
-.hljs-link {
-  text-decoration: underline;
-}
-
-.hljs-number {
-  color: #005cc5;
-}
-
-.hljs-string {
-  color: #032f62;
-}

ファイルの差分が大きいため隠しています
+ 0 - 1102
ruoyi-admin/src/main/resources/static/ajax/libs/highlight/highlight.min.js


+ 0 - 72
ruoyi-admin/src/main/resources/static/ajax/libs/iCheck/custom.css

@@ -1,72 +0,0 @@
-/* iCheck plugin Square skin, green
------------------------------------ */
-.icheckbox_square-green,
-.iradio_square-green {
-    display: inline-block;
-    *display: inline;
-    vertical-align: middle;
-    margin: 0;
-    padding: 0;
-    width: 22px;
-    height: 22px;
-    background: url(green.png) no-repeat;
-    border: none;
-    cursor: pointer;
-}
-
-.icheckbox_square-green-login{
-    display: inline-block;
-    *display: inline;
-    vertical-align: middle;
-    margin: 0;
-    padding: 0;
-    width: 22px;
-    height: 22px;
-    background: url(green-login.png) no-repeat;
-    border: none;
-    cursor: pointer;
-}
-
-.icheckbox_square-green,.icheckbox_square-green-login {
-    background-position: 0 0;
-}
-.icheckbox_square-green.hover,.icheckbox_square-green-login.hover {
-    background-position: -24px 0;
-}
-.icheckbox_square-green.checked,.icheckbox_square-green-login.checked {
-    background-position: -48px 0;
-}
-.icheckbox_square-green.disabled,.icheckbox_square-green.disabled-login {
-    background-position: -72px 0;
-    cursor: default;
-}
-.icheckbox_square-green.checked.disabled,.icheckbox_square-green-login.checked.disabled {
-    background-position: -96px 0;
-}
-
-.iradio_square-green {
-    background-position: -120px 0;
-}
-.iradio_square-green.hover {
-    background-position: -144px 0;
-}
-.iradio_square-green.checked {
-    background-position: -168px 0;
-}
-.iradio_square-green.disabled {
-    background-position: -192px 0;
-    cursor: default;
-}
-.iradio_square-green.checked.disabled {
-    background-position: -216px 0;
-}
-
-/* HiDPI support */
-@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) {
-    .icheckbox_square-green,.icheckbox_square-green-login,
-    .iradio_square-green {
-        background-image: url(green%402x.png);
-        -webkit-background-size: 240px 24px;
-        background-size: 240px 24px;
-    }
-}

ファイルの差分が大きいため隠しています
+ 0 - 2
ruoyi-admin/src/main/resources/static/ajax/libs/jquery-layout/jquery.layout-latest.js


+ 0 - 102
ruoyi-admin/src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/default/zTreeStyle.css

@@ -1,102 +0,0 @@
-/*-------------------------------------
-zTree Style
-
-version:	3.4
-author:		Hunter.z
-email:		hunter.z@263.net
-website:	http://code.google.com/p/jquerytree/
-
--------------------------------------*/
-
-.ztree * {padding:0; margin:0; font-size:12px;}
-.ztree {margin:0; padding:2px; color:#333}
-.ztree li{padding:0; margin:0; list-style:none; line-height:18px; text-align:left; white-space:nowrap; outline:0}
-.ztree li ul{ margin:0; padding:0 0 0 18px}
-.ztree li ul.line{ background:url(./img/line_conn.gif) 0 0 repeat-y;}
-
-.ztree li a {padding:1px 3px 0 0; margin:0; cursor:pointer; /* height:17px; */ color:#333; background-color: transparent;
-	text-decoration:none; vertical-align:top; display: inline-block}
-.ztree li a:hover {text-decoration:underline}
-/*.ztree li a.curSelectedNode {padding-top:0px; background-color:#FFE6B0; color:black; height:16px; border:1px #FFB951 solid; opacity:0.8;}*/
-.ztree li a.curSelectedNode {padding-top:0px; background-color:#F6F6F6; color:#0663A2; border:1px #DDDDDD solid; opacity:0.8;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}
-/*.ztree li a.curSelectedNode {padding-top:0px; color:#0663a2; font-weight:bold; height:16px; opacity:0.8;}*/
-.ztree li a.curSelectedNode_Edit {padding-top:0px; background-color:#FFE6B0; color:black; height:16px; border:1px #FFB951 solid; opacity:0.8;}
-.ztree li a.tmpTargetNode_inner {padding-top:0px; background-color:#316AC5; color:white; height:16px; border:1px #316AC5 solid;
-	opacity:0.8; filter:alpha(opacity=80)}
-.ztree li a.tmpTargetNode_prev {}
-.ztree li a.tmpTargetNode_next {}
-.ztree li a input.rename {height:14px; width:80px; padding:0; margin:0;
-	font-size:12px; border:1px #7EC4CC solid; *border:0px}
-.ztree li span {line-height:16px; margin-right:2px}
-.ztree li span.button {line-height:0; margin:0; width:16px; height:16px; display: inline-block; vertical-align:middle;
-	border:0 none; cursor: pointer;outline:none;
-	background-color:transparent; background-repeat:no-repeat; background-attachment: scroll;
-	background-image:url("./img/zTreeStandard.png"); *background-image:url("./img/zTreeStandard.gif")}
-
-/* IE7 fix */
-.ztree li span.button.level0 {*margin-left:-15px;}
-
-.ztree li span.button.chk {width:13px; height:13px; margin:0 3px 0 0; cursor: auto}
-.ztree li span.button.chk.checkbox_false_full {background-position:0 0}
-.ztree li span.button.chk.checkbox_false_full_focus {background-position:0 -14px}
-.ztree li span.button.chk.checkbox_false_part {background-position:0 -28px}
-.ztree li span.button.chk.checkbox_false_part_focus {background-position:0 -42px}
-.ztree li span.button.chk.checkbox_false_disable {background-position:0 -56px}
-.ztree li span.button.chk.checkbox_true_full {background-position:-14px 0}
-.ztree li span.button.chk.checkbox_true_full_focus {background-position:-14px -14px}
-.ztree li span.button.chk.checkbox_true_part {background-position:-14px -28px}
-.ztree li span.button.chk.checkbox_true_part_focus {background-position:-14px -42px}
-.ztree li span.button.chk.checkbox_true_disable {background-position:-14px -56px}
-.ztree li span.button.chk.radio_false_full {background-position:-28px 0}
-.ztree li span.button.chk.radio_false_full_focus {background-position:-28px -14px}
-.ztree li span.button.chk.radio_false_part {background-position:-28px -28px}
-.ztree li span.button.chk.radio_false_part_focus {background-position:-28px -42px}
-.ztree li span.button.chk.radio_false_disable {background-position:-28px -56px}
-.ztree li span.button.chk.radio_true_full {background-position:-42px 0}
-.ztree li span.button.chk.radio_true_full_focus {background-position:-42px -14px}
-.ztree li span.button.chk.radio_true_part {background-position:-42px -28px}
-.ztree li span.button.chk.radio_true_part_focus {background-position:-42px -42px}
-.ztree li span.button.chk.radio_true_disable {background-position:-42px -56px}
-
-.ztree li span.button.switch {width:18px; height:18px}
-.ztree li span.button.root_open{background-position:-92px -54px}
-.ztree li span.button.root_close{background-position:-74px -54px}
-.ztree li span.button.roots_open{background-position:-92px 0}
-.ztree li span.button.roots_close{background-position:-74px 0}
-.ztree li span.button.center_open{background-position:-92px -18px}
-.ztree li span.button.center_close{background-position:-74px -18px}
-.ztree li span.button.bottom_open{background-position:-92px -36px}
-.ztree li span.button.bottom_close{background-position:-74px -36px}
-.ztree li span.button.noline_open{background-position:-92px -72px}
-.ztree li span.button.noline_close{background-position:-74px -72px}
-.ztree li span.button.root_docu{ background:none;}
-.ztree li span.button.roots_docu{background-position:-56px 0}
-.ztree li span.button.center_docu{background-position:-56px -18px}
-.ztree li span.button.bottom_docu{background-position:-56px -36px}
-.ztree li span.button.noline_docu{ background:none;}
-
-.ztree li span.button.ico_open{margin-right:2px; background-position:-110px -16px; vertical-align:top; *vertical-align:middle}
-.ztree li span.button.ico_close{margin-right:2px; background-position:-110px 0; vertical-align:top; *vertical-align:middle}
-.ztree li span.button.ico_docu{margin-right:2px; background-position:-110px -32px; /* vertical-align:top; * */vertical-align:middle}
-.ztree li span.button.edit {margin-right:2px; background-position:-110px -48px; vertical-align:top; *vertical-align:middle}
-.ztree li span.button.remove {margin-right:2px; background-position:-110px -64px; vertical-align:top; *vertical-align:middle}
-
-.ztree li span.button.ico_loading{margin-right:2px; background:url(./img/loading.gif) no-repeat scroll 0 0 transparent; vertical-align:top; *vertical-align:middle}
-
-ul.tmpTargetzTree {background-color:#FFE6B0; opacity:0.8; filter:alpha(opacity=80)}
-
-span.tmpzTreeMove_arrow {width:16px; height:16px; display: inline-block; padding:0; margin:2px 0 0 1px; border:0 none; position:absolute;
-	background-color:transparent; background-repeat:no-repeat; background-attachment: scroll;
-	background-position:-110px -80px; background-image:url("./img/zTreeStandard.png"); *background-image:url("./img/zTreeStandard.gif")}
-
-ul.ztree.zTreeDragUL {margin:0; padding:0; position:absolute; width:auto; height:auto;overflow:hidden; background-color:#cfcfcf; border:1px #00B83F dotted; opacity:0.8; filter:alpha(opacity=80)}
-.zTreeMask {z-index:10000; background-color:#cfcfcf; opacity:0.0; filter:alpha(opacity=0); position:absolute}
-
-/* level style*/
-/*.ztree li span.button.level0 {
-	display:none;
-}
-.ztree li ul.level0 {
-	padding:0;
-	background:none;
-}*/

+ 0 - 107
ruoyi-admin/src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/metro/zTreeStyle.css

@@ -1,107 +0,0 @@
-/*-------------------------------------
-zTree Style
-
-version:    3.4
-author:     Hunter.z
-email:      hunter.z@263.net
-website:    http://code.google.com/p/jquerytree/
-
--------------------------------------*/
-
-.ztree * {padding:0; margin:0; font-size:12px; font-family: Verdana, Arial, Helvetica, AppleGothic, sans-serif}
-.ztree {margin:0; padding:5px; color:#333}
-.ztree li{padding:0; margin:0; list-style:none; line-height:21px; text-align:left; white-space:nowrap; outline:0}
-.ztree li ul{ margin:0; padding:0 0 0 18px}
-.ztree li ul.line{ background:url(./img/line_conn.png) 0 0 repeat-y;}
-
-.ztree li a {padding-right:3px; margin:0; cursor:pointer; height:21px; color:#333; background-color: transparent; text-decoration:none; display: inline-block}
-.ztree li a:hover {text-decoration:underline}
-.ztree li a.curSelectedNode {padding-top:0px; background-color:#e5e5e5; color:black; height:22px; -webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}
-.ztree li a.curSelectedNode_Edit {padding-top:0px; background-color:#e5e5e5; color:black; height:22px; border:1px #666 solid; -webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}
-.ztree li a.tmpTargetNode_inner {padding-top:0px; background-color:#aaa; color:white; height:21px; border:1px #666 solid;
-    opacity:0.8; filter:alpha(opacity=80)}
-.ztree li a.tmpTargetNode_prev {}
-.ztree li a.tmpTargetNode_next {}
-.ztree li a input.rename {height:14px; width:80px; padding:0; margin:0;
-    font-size:12px; border:1px #7EC4CC solid; *border:0px}
-.ztree li span {line-height:21px; margin-right:2px}
-.ztree li span.button {line-height:0; margin:0; width:21px; height:21px; display: inline-block; vertical-align:middle;
-    border:0 none; cursor: pointer;outline:none;
-    background-color:transparent; background-repeat:no-repeat; background-attachment: scroll;
-    background-image:url("./img/metro.png"); *background-image:url("./img/metro.gif")}
-
-.ztree li span.button.chk {width:13px; height:13px; margin:0 2px; cursor: auto}
-.ztree li span.button.chk.checkbox_false_full {background-position: -5px -5px;}
-.ztree li span.button.chk.checkbox_false_full_focus {background-position: -5px -26px;}
-.ztree li span.button.chk.checkbox_false_part {background-position: -5px -48px;}
-.ztree li span.button.chk.checkbox_false_part_focus {background-position: -5px -68px;}
-.ztree li span.button.chk.checkbox_false_disable {background-position: -5px -89px;}
-.ztree li span.button.chk.checkbox_true_full {background-position: -26px -5px;}
-.ztree li span.button.chk.checkbox_true_full_focus {background-position: -26px -26px;}
-.ztree li span.button.chk.checkbox_true_part {background-position: -26px -48px;}
-.ztree li span.button.chk.checkbox_true_part_focus {background-position: -26px -68px;}
-.ztree li span.button.chk.checkbox_true_disable {background-position: -26px -89px;}
-.ztree li span.button.chk.radio_false_full {background-position: -47px -5px;}
-.ztree li span.button.chk.radio_false_full_focus {background-position: -47px -26px;}
-.ztree li span.button.chk.radio_false_part {background-position: -47px -47px;}
-.ztree li span.button.chk.radio_false_part_focus {background-position: -47px -68px;}
-.ztree li span.button.chk.radio_false_disable {background-position: -47px -89px;}
-.ztree li span.button.chk.radio_true_full {background-position: -68px -5px;}
-.ztree li span.button.chk.radio_true_full_focus {background-position: -68px -26px;}
-.ztree li span.button.chk.radio_true_part {background-position: -68px -47px;}
-.ztree li span.button.chk.radio_true_part_focus {background-position: -68px -68px;}
-.ztree li span.button.chk.radio_true_disable {background-position: -68px -89px;}
-
-.ztree li span.button.switch {width:21px; height:21px}
-.ztree li span.button.root_open{background-position:-105px -85px}
-.ztree li span.button.root_close{background-position:-126px -85px}
-.ztree li span.button.roots_open{background-position: -105px 0;}
-.ztree li span.button.roots_close{background-position: -126px 0;}
-.ztree li span.button.center_open{background-position: -105px -21px;}
-.ztree li span.button.center_close{background-position: -126px -21px;}
-.ztree li span.button.bottom_open{background-position: -105px -42px;}
-.ztree li span.button.bottom_close{background-position: -126px -42px;}
-.ztree li span.button.noline_open{background-position: -126px -84px;}
-.ztree li span.button.noline_close{background-position: -105px -84px;}
-.ztree li span.button.root_docu{ background:none;}
-.ztree li span.button.roots_docu{background-position: -84px 0;}
-.ztree li span.button.center_docu{background-position: -84px -21px;}
-.ztree li span.button.bottom_docu{background-position: -84px -42px;}
-.ztree li span.button.noline_docu{ background:none;}
-
-.ztree li span.button.ico_open{margin-right:2px; background-position: -147px -21px; vertical-align:top; *vertical-align:middle}
-.ztree li span.button.ico_close{margin-right:2px; margin-right:2px; background-position: -147px 0; vertical-align:top; *vertical-align:middle}
-.ztree li span.button.ico_docu{margin-right:2px; background-position: -147px -42px; vertical-align:top; *vertical-align:middle}
-.ztree li span.button.edit {margin-left:2px; margin-right: -1px; background-position: -189px -21px; vertical-align:top; *vertical-align:middle}
-.ztree li span.button.edit:hover {
-  background-position: -168px -21px;
-}
-.ztree li span.button.remove {margin-left:2px; margin-right: -1px; background-position: -189px -42px; vertical-align:top; *vertical-align:middle}
-.ztree li span.button.remove:hover {
-  background-position: -168px -42px;
-}
-.ztree li span.button.add {margin-left:2px; margin-right: -1px; background-position: -189px 0; vertical-align:top; *vertical-align:middle}
-.ztree li span.button.add:hover {
-  background-position: -168px 0;
-}
-.ztree li span.button.ico_loading{margin-right:2px; background:url(./img/loading.gif) no-repeat scroll 0 0 transparent; vertical-align:top; *vertical-align:middle}
-
-ul.tmpTargetzTree {background-color:#FFE6B0; opacity:0.8; filter:alpha(opacity=80)}
-
-span.tmpzTreeMove_arrow {width:16px; height:21px; display: inline-block; padding:0; margin:2px 0 0 1px; border:0 none; position:absolute;
-    background-color:transparent; background-repeat:no-repeat; background-attachment: scroll;
-    background-position:-168px -84px; background-image:url("./img/metro.png"); *background-image:url("./img/metro.gif")}
-
-ul.ztree.zTreeDragUL {margin:0; padding:0; position:absolute; width:auto; height:auto;overflow:hidden; background-color:#cfcfcf; border:1px #00B83F dotted; opacity:0.8; filter:alpha(opacity=80)}
-.zTreeMask {z-index:10000; background-color:#cfcfcf; opacity:0.0; filter:alpha(opacity=0); position:absolute}
-
-/* 树搜索相关 */
-.treeSearchInput {padding:13px 0 0 20px;}
-.treeSearchInput label {padding:5px 0 3px 0;font-size:13px;font-weight:normal;vertical-align:middle;}
-.treeSearchInput input {width:145px;vertical-align:middle;line-height:24px;height:26px;border:1px solid #bbb;padding:0 4px;}
-.treeSearchInput button {border:1px solid #bbb;vertical-align:middle;height:26px;height:26px\9;font-size:13px;background:#efefef;padding:0 8px;}
-.treeShowHideButton {position:absolute;right:8px;top:2px;font-size:12px;color:#333;z-index:3;}
-.treeShowHideButton label {cursor:pointer;}
-.treeExpandCollapse {float:right;margin:6px 5px;padding:5px;font-size:12px;color:#333;position:relative;z-index:2;background:#fff;}
-.treeExpandCollapse a {text-decoration:none;color:#333}
-.treeselect.ztree {padding:10px 20px;}

+ 0 - 118
ruoyi-admin/src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/simple/zTreeStyle.css

@@ -1,118 +0,0 @@
-/*-------------------------------------
-zTree Style
-
-version:    3.4
-author:     Hunter.z
-email:      hunter.z@263.net
-website:    http://code.google.com/p/jquerytree/
-
--------------------------------------*/
-
-.ztree * {padding:0; margin:0; font-size:12px; font-family: Verdana, Arial, Helvetica, AppleGothic, sans-serif}
-.ztree {margin:0; padding:5px; color:#333}
-.ztree li{padding:0; margin:0; list-style:none; line-height:21px; text-align:left; white-space:nowrap; outline:0}
-.ztree li ul{ margin:0; padding:0 0 0 18px}
-.ztree li ul.line{ background:url(./img/line_conn.png) 0 0 repeat-y;}
-
-.ztree li a {padding-right:3px; margin:0; cursor:pointer; height:21px; color:#333; background-color: transparent; text-decoration:none; display: inline-block}
-.ztree li a:hover {text-decoration:underline}
-.ztree li a.curSelectedNode {padding-top:0px; background-color:#e5e5e5; color:black; height:21px; opacity:0.8;}
-.ztree li a.curSelectedNode_Edit {padding-top:0px; background-color:#e5e5e5; color:black; height:21px; border:1px #666 solid; opacity:0.8;}
-.ztree li a.tmpTargetNode_inner {padding-top:0px; background-color:#aaa; color:white; height:21px; border:1px #666 solid;
-    opacity:0.8; filter:alpha(opacity=80)}
-.ztree li a.tmpTargetNode_prev {}
-.ztree li a.tmpTargetNode_next {}
-.ztree li a input.rename {height:14px; width:80px; padding:0; margin:0;
-    font-size:12px; border:1px #7EC4CC solid; *border:0px}
-.ztree li span {line-height:21px; margin-right:2px}
-.ztree li span.button {line-height:0; margin:0; width:21px; height:21px; display: inline-block; vertical-align:middle;
-    border:0 none; cursor: pointer;outline:none;
-    background-color:transparent; background-repeat:no-repeat; background-attachment: scroll;
-    background-image:url("./img/metro.png"); *background-image:url("./img/metro.gif")}
-
-.ztree li span.button.chk {width:13px; height:13px; margin:0 2px; cursor: auto}
-.ztree li span.button.chk.checkbox_false_full {background-position: -5px -5px;}
-.ztree li span.button.chk.checkbox_false_full_focus {background-position: -5px -26px;}
-.ztree li span.button.chk.checkbox_false_part {background-position: -5px -48px;}
-.ztree li span.button.chk.checkbox_false_part_focus {background-position: -5px -68px;}
-.ztree li span.button.chk.checkbox_false_disable {background-position: -5px -89px;}
-.ztree li span.button.chk.checkbox_true_full {background-position: -26px -5px;}
-.ztree li span.button.chk.checkbox_true_full_focus {background-position: -26px -26px;}
-.ztree li span.button.chk.checkbox_true_part {background-position: -26px -48px;}
-.ztree li span.button.chk.checkbox_true_part_focus {background-position: -26px -68px;}
-.ztree li span.button.chk.checkbox_true_disable {background-position: -26px -89px;}
-.ztree li span.button.chk.radio_false_full {background-position: -47px -5px;}
-.ztree li span.button.chk.radio_false_full_focus {background-position: -47px -26px;}
-.ztree li span.button.chk.radio_false_part {background-position: -47px -47px;}
-.ztree li span.button.chk.radio_false_part_focus {background-position: -47px -68px;}
-.ztree li span.button.chk.radio_false_disable {background-position: -47px -89px;}
-.ztree li span.button.chk.radio_true_full {background-position: -68px -5px;}
-.ztree li span.button.chk.radio_true_full_focus {background-position: -68px -26px;}
-.ztree li span.button.chk.radio_true_part {background-position: -68px -47px;}
-.ztree li span.button.chk.radio_true_part_focus {background-position: -68px -68px;}
-.ztree li span.button.chk.radio_true_disable {background-position: -68px -89px;}
-
-.ztree li span.button.switch {width:21px; height:21px}
-.ztree li span.button.root_open{background-position:-92px -54px}
-.ztree li span.button.root_close{background-position:-74px -54px}
-.ztree li span.button.roots_open{background-position: -105px 0;}
-.ztree li span.button.roots_close{background-position: -126px 0;}
-.ztree li span.button.center_open{background-position: -105px -21px;}
-.ztree li span.button.center_close{background-position: -126px -21px;}
-.ztree li span.button.bottom_open{background-position: -105px -42px;}
-.ztree li span.button.bottom_close{background-position: -126px -42px;}
-.ztree li span.button.noline_open{background-position: -126px -84px;}
-.ztree li span.button.noline_close{background-position: -105px -84px;}
-.ztree li span.button.root_docu{ background:none;}
-.ztree li span.button.roots_docu{background-position: -84px 0;}
-.ztree li span.button.center_docu{background-position: -84px -21px;}
-.ztree li span.button.bottom_docu{background-position: -84px -42px;}
-.ztree li span.button.noline_docu{ background:none;}
-
-.ztree li span.button.ico_open{margin-right:2px; background-position: -147px -21px; vertical-align:top; *vertical-align:middle}
-.ztree li span.button.ico_close{margin-right:2px; margin-right:2px; background-position: -147px 0; vertical-align:top; *vertical-align:middle}
-.ztree li span.button.ico_docu{margin-right:2px; background-position: -147px -42px; vertical-align:top; *vertical-align:middle}
-.ztree li span.button.edit {margin-left:2px; margin-right: -1px; background-position: -189px -21px; vertical-align:top; *vertical-align:middle}
-.ztree li span.button.edit:hover {
-  background-position: -168px -21px;
-}
-.ztree li span.button.remove {margin-left:2px; margin-right: -1px; background-position: -189px -42px; vertical-align:top; *vertical-align:middle}
-.ztree li span.button.remove:hover {
-  background-position: -168px -42px;
-}
-.ztree li span.button.add {margin-left:2px; margin-right: -1px; background-position: -189px 0; vertical-align:top; *vertical-align:middle}
-.ztree li span.button.add:hover {
-  background-position: -168px 0;
-}
-.ztree li span.button.ico_loading{margin-right:2px; background:url(./img/loading.gif) no-repeat scroll 0 0 transparent; vertical-align:top; *vertical-align:middle}
-
-ul.tmpTargetzTree {background-color:#FFE6B0; opacity:0.8; filter:alpha(opacity=80)}
-
-span.tmpzTreeMove_arrow {width:16px; height:21px; display: inline-block; padding:0; margin:2px 0 0 1px; border:0 none; position:absolute;
-    background-color:transparent; background-repeat:no-repeat; background-attachment: scroll;
-    background-position:-168px -84px; background-image:url("./img/metro.png"); *background-image:url("./img/metro.gif")}
-
-ul.ztree.zTreeDragUL {margin:0; padding:0; position:absolute; width:auto; height:auto;overflow:hidden; background-color:#cfcfcf; border:1px #00B83F dotted; opacity:0.8; filter:alpha(opacity=80)}
-.zTreeMask {z-index:10000; background-color:#cfcfcf; opacity:0.0; filter:alpha(opacity=0); position:absolute}
-
-/* simple */
-
-.ztree * {font-size:14px;font-family:"Microsoft Yahei",Verdana,Simsun,"Segoe UI Web Light","Segoe UI Light","Segoe UI Web Regular","Segoe UI","Segoe UI Symbol","Helvetica Neue",Arial;}
-.ztree li ul{ margin:0; padding:0}
-.ztree li {line-height:28px;}
-.ztree li a {width:100%;height:28px;padding-top: 0px;}
-.ztree li a:hover {text-decoration:none; background-color: #E7E7E7;}
-.ztree11 li a span.button.switch {visibility:hidden}
-.ztree11.showIcon li a span.button.switch {visibility:visible}
-.ztree li a.curSelectedNode {background-color:#D4D4D4;border:0;height:28px;}
-.ztree li span {line-height:26px;margin-right:0px;}
-.ztree li span.button {margin-top: -7px;}
-.ztree li span.button.switch {width:16px;height: 16px;}
-.ztree li a.level0 span {font-size:15px;font-weight:bold;}
-.ztree li span.button {background-image:url("img/left_menu.png"); *background-image:url("./left_menu.gif")}
-.ztree li span.button.switch.level0 {width: 20px; height:20px}
-.ztree li span.button.switch.level1 {width: 20px; height:20px}
-.ztree li span.button.noline_open {background-position: 0 0;}
-.ztree li span.button.noline_close {background-position: -18px 0;}
-.ztree li span.button.noline_open.level0 {background-position: 0 -17px;}
-.ztree li span.button.noline_close.level0 {background-position: -18px -17px;}

ファイルの差分が大きいため隠しています
+ 0 - 3820
ruoyi-admin/src/main/resources/static/ajax/libs/jquery-ztree/3.5/js/jquery.ztree.all-3.5.js


ファイルの差分が大きいため隠しています
+ 0 - 1650
ruoyi-admin/src/main/resources/static/ajax/libs/jquery-ztree/3.5/js/jquery.ztree.core-3.5.js


+ 0 - 624
ruoyi-admin/src/main/resources/static/ajax/libs/jquery-ztree/3.5/js/jquery.ztree.excheck-3.5.js

@@ -1,624 +0,0 @@
-/*
- * JQuery zTree excheck 3.5.12
- * http://zTree.me/
- *
- * Copyright (c) 2010 Hunter.z
- *
- * Licensed same as jquery - MIT License
- * http://www.opensource.org/licenses/mit-license.php
- *
- * email: hunter.z@263.net
- * Date: 2013-03-11
- */
-(function($){
-	//default consts of excheck
-	var _consts = {
-		event: {
-			CHECK: "ztree_check"
-		},
-		id: {
-			CHECK: "_check"
-		},
-		checkbox: {
-			STYLE: "checkbox",
-			DEFAULT: "chk",
-			DISABLED: "disable",
-			FALSE: "false",
-			TRUE: "true",
-			FULL: "full",
-			PART: "part",
-			FOCUS: "focus"
-		},
-		radio: {
-			STYLE: "radio",
-			TYPE_ALL: "all",
-			TYPE_LEVEL: "level"
-		}
-	},
-	//default setting of excheck
-	_setting = {
-		check: {
-			enable: false,
-			autoCheckTrigger: false,
-			chkStyle: _consts.checkbox.STYLE,
-			nocheckInherit: false,
-			chkDisabledInherit: false,
-			radioType: _consts.radio.TYPE_LEVEL,
-			chkboxType: {
-				"Y": "ps",
-				"N": "ps"
-			}
-		},
-		data: {
-			key: {
-				checked: "checked"
-			}
-		},
-		callback: {
-			beforeCheck:null,
-			onCheck:null
-		}
-	},
-	//default root of excheck
-	_initRoot = function (setting) {
-		var r = data.getRoot(setting);
-		r.radioCheckedList = [];
-	},
-	//default cache of excheck
-	_initCache = function(treeId) {},
-	//default bind event of excheck
-	_bindEvent = function(setting) {
-		var o = setting.treeObj,
-		c = consts.event;
-		o.bind(c.CHECK, function (event, srcEvent, treeId, node) {
-			tools.apply(setting.callback.onCheck, [!!srcEvent?srcEvent : event, treeId, node]);
-		});
-	},
-	_unbindEvent = function(setting) {
-		var o = setting.treeObj,
-		c = consts.event;
-		o.unbind(c.CHECK);
-	},
-	//default event proxy of excheck
-	_eventProxy = function(e) {
-		var target = e.target,
-		setting = data.getSetting(e.data.treeId),
-		tId = "", node = null,
-		nodeEventType = "", treeEventType = "",
-		nodeEventCallback = null, treeEventCallback = null;
-
-		if (tools.eqs(e.type, "mouseover")) {
-			if (setting.check.enable && tools.eqs(target.tagName, "span") && target.getAttribute("treeNode"+ consts.id.CHECK) !== null) {
-				tId = target.parentNode.id;
-				nodeEventType = "mouseoverCheck";
-			}
-		} else if (tools.eqs(e.type, "mouseout")) {
-			if (setting.check.enable && tools.eqs(target.tagName, "span") && target.getAttribute("treeNode"+ consts.id.CHECK) !== null) {
-				tId = target.parentNode.id;
-				nodeEventType = "mouseoutCheck";
-			}
-		} else if (tools.eqs(e.type, "click")) {
-			if (setting.check.enable && tools.eqs(target.tagName, "span") && target.getAttribute("treeNode"+ consts.id.CHECK) !== null) {
-				tId = target.parentNode.id;
-				nodeEventType = "checkNode";
-			}
-		}
-		if (tId.length>0) {
-			node = data.getNodeCache(setting, tId);
-			switch (nodeEventType) {
-				case "checkNode" :
-					nodeEventCallback = _handler.onCheckNode;
-					break;
-				case "mouseoverCheck" :
-					nodeEventCallback = _handler.onMouseoverCheck;
-					break;
-				case "mouseoutCheck" :
-					nodeEventCallback = _handler.onMouseoutCheck;
-					break;
-			}
-		}
-		var proxyResult = {
-			stop: false,
-			node: node,
-			nodeEventType: nodeEventType,
-			nodeEventCallback: nodeEventCallback,
-			treeEventType: treeEventType,
-			treeEventCallback: treeEventCallback
-		};
-		return proxyResult
-	},
-	//default init node of excheck
-	_initNode = function(setting, level, n, parentNode, isFirstNode, isLastNode, openFlag) {
-		if (!n) return;
-		var checkedKey = setting.data.key.checked;
-		if (typeof n[checkedKey] == "string") n[checkedKey] = tools.eqs(n[checkedKey], "true");
-		n[checkedKey] = !!n[checkedKey];
-		n.checkedOld = n[checkedKey];
-		if (typeof n.nocheck == "string") n.nocheck = tools.eqs(n.nocheck, "true");
-		n.nocheck = !!n.nocheck || (setting.check.nocheckInherit && parentNode && !!parentNode.nocheck);
-		if (typeof n.chkDisabled == "string") n.chkDisabled = tools.eqs(n.chkDisabled, "true");
-		n.chkDisabled = !!n.chkDisabled || (setting.check.chkDisabledInherit && parentNode && !!parentNode.chkDisabled);
-		if (typeof n.halfCheck == "string") n.halfCheck = tools.eqs(n.halfCheck, "true");
-		n.halfCheck = !!n.halfCheck;
-		n.check_Child_State = -1;
-		n.check_Focus = false;
-		n.getCheckStatus = function() {return data.getCheckStatus(setting, n);};
-	},
-	//add dom for check
-	_beforeA = function(setting, node, html) {
-		var checkedKey = setting.data.key.checked;
-		if (setting.check.enable) {
-			data.makeChkFlag(setting, node);
-			if (setting.check.chkStyle == consts.radio.STYLE && setting.check.radioType == consts.radio.TYPE_ALL && node[checkedKey] ) {
-				var r = data.getRoot(setting);
-				r.radioCheckedList.push(node);
-			}
-			html.push("<span ID='", node.tId, consts.id.CHECK, "' class='", view.makeChkClass(setting, node), "' treeNode", consts.id.CHECK, (node.nocheck === true?" style='display:none;'":""),"></span>");
-		}
-	},
-	//update zTreeObj, add method of check
-	_zTreeTools = function(setting, zTreeTools) {
-		zTreeTools.checkNode = function(node, checked, checkTypeFlag, callbackFlag) {
-			var checkedKey = this.setting.data.key.checked;
-			if (node.chkDisabled === true) return;
-			if (checked !== true && checked !== false) {
-				checked = !node[checkedKey];
-			}
-			callbackFlag = !!callbackFlag;
-			
-			if (node[checkedKey] === checked && !checkTypeFlag) {
-				return;
-			} else if (callbackFlag && tools.apply(this.setting.callback.beforeCheck, [this.setting.treeId, node], true) == false) {
-				return;
-			}
-			if (tools.uCanDo(this.setting) && this.setting.check.enable && node.nocheck !== true) {
-				node[checkedKey] = checked;
-				var checkObj = $("#" + node.tId + consts.id.CHECK);
-				if (checkTypeFlag || this.setting.check.chkStyle === consts.radio.STYLE) view.checkNodeRelation(this.setting, node);
-				view.setChkClass(this.setting, checkObj, node);
-				view.repairParentChkClassWithSelf(this.setting, node);
-				if (callbackFlag) {
-					setting.treeObj.trigger(consts.event.CHECK, [null, setting.treeId, node]);
-				}
-			}
-		}
-
-		zTreeTools.checkAllNodes = function(checked) {
-			view.repairAllChk(this.setting, !!checked);
-		}
-
-		zTreeTools.getCheckedNodes = function(checked) {
-			var childKey = this.setting.data.key.children;
-			checked = (checked !== false);
-			return data.getTreeCheckedNodes(this.setting, data.getRoot(setting)[childKey], checked);
-		}
-
-		zTreeTools.getChangeCheckedNodes = function() {
-			var childKey = this.setting.data.key.children;
-			return data.getTreeChangeCheckedNodes(this.setting, data.getRoot(setting)[childKey]);
-		}
-
-		zTreeTools.setChkDisabled = function(node, disabled, inheritParent, inheritChildren) {
-			disabled = !!disabled;
-			inheritParent = !!inheritParent;
-			inheritChildren = !!inheritChildren;
-			view.repairSonChkDisabled(this.setting, node, disabled, inheritChildren);
-			view.repairParentChkDisabled(this.setting, node.getParentNode(), disabled, inheritParent);
-		}
-
-		var _updateNode = zTreeTools.updateNode;
-		zTreeTools.updateNode = function(node, checkTypeFlag) {
-			if (_updateNode) _updateNode.apply(zTreeTools, arguments);
-			if (!node || !this.setting.check.enable) return;
-			var nObj = $("#" + node.tId);
-			if (nObj.get(0) && tools.uCanDo(this.setting)) {
-				var checkObj = $("#" + node.tId + consts.id.CHECK);
-				if (checkTypeFlag == true || this.setting.check.chkStyle === consts.radio.STYLE) view.checkNodeRelation(this.setting, node);
-				view.setChkClass(this.setting, checkObj, node);
-				view.repairParentChkClassWithSelf(this.setting, node);
-			}
-		}
-	},
-	//method of operate data
-	_data = {
-		getRadioCheckedList: function(setting) {
-			var checkedList = data.getRoot(setting).radioCheckedList;
-			for (var i=0, j=checkedList.length; i<j; i++) {
-				if(!data.getNodeCache(setting, checkedList[i].tId)) {
-					checkedList.splice(i, 1);
-					i--; j--;
-				}
-			}
-			return checkedList;
-		},
-		getCheckStatus: function(setting, node) {
-			if (!setting.check.enable || node.nocheck || node.chkDisabled) return null;
-			var checkedKey = setting.data.key.checked,
-			r = {
-				checked: node[checkedKey],
-				half: node.halfCheck ? node.halfCheck : (setting.check.chkStyle == consts.radio.STYLE ? (node.check_Child_State === 2) : (node[checkedKey] ? (node.check_Child_State > -1 && node.check_Child_State < 2) : (node.check_Child_State > 0)))
-			};
-			return r;
-		},
-		getTreeCheckedNodes: function(setting, nodes, checked, results) {
-			if (!nodes) return [];
-			var childKey = setting.data.key.children,
-			checkedKey = setting.data.key.checked,
-			onlyOne = (checked && setting.check.chkStyle == consts.radio.STYLE && setting.check.radioType == consts.radio.TYPE_ALL);
-			results = !results ? [] : results;
-			for (var i = 0, l = nodes.length; i < l; i++) {
-				if (nodes[i].nocheck !== true && nodes[i].chkDisabled !== true && nodes[i][checkedKey] == checked) {
-					results.push(nodes[i]);
-					if(onlyOne) {
-						break;
-					}
-				}
-				data.getTreeCheckedNodes(setting, nodes[i][childKey], checked, results);
-				if(onlyOne && results.length > 0) {
-					break;
-				}
-			}
-			return results;
-		},
-		getTreeChangeCheckedNodes: function(setting, nodes, results) {
-			if (!nodes) return [];
-			var childKey = setting.data.key.children,
-			checkedKey = setting.data.key.checked;
-			results = !results ? [] : results;
-			for (var i = 0, l = nodes.length; i < l; i++) {
-				if (nodes[i].nocheck !== true && nodes[i].chkDisabled !== true && nodes[i][checkedKey] != nodes[i].checkedOld) {
-					results.push(nodes[i]);
-				}
-				data.getTreeChangeCheckedNodes(setting, nodes[i][childKey], results);
-			}
-			return results;
-		},
-		makeChkFlag: function(setting, node) {
-			if (!node) return;
-			var childKey = setting.data.key.children,
-			checkedKey = setting.data.key.checked,
-			chkFlag = -1;
-			if (node[childKey]) {
-				for (var i = 0, l = node[childKey].length; i < l; i++) {
-					var cNode = node[childKey][i];
-					var tmp = -1;
-					if (setting.check.chkStyle == consts.radio.STYLE) {
-						if (cNode.nocheck === true || cNode.chkDisabled === true) {
-							tmp = cNode.check_Child_State;
-						} else if (cNode.halfCheck === true) {
-							tmp = 2;
-						} else if (cNode[checkedKey]) {
-							tmp = 2;
-						} else {
-							tmp = cNode.check_Child_State > 0 ? 2:0;
-						}
-						if (tmp == 2) {
-							chkFlag = 2; break;
-						} else if (tmp == 0){
-							chkFlag = 0;
-						}
-					} else if (setting.check.chkStyle == consts.checkbox.STYLE) {
-						if (cNode.nocheck === true || cNode.chkDisabled === true) {
-							tmp = cNode.check_Child_State;
-						} else if (cNode.halfCheck === true) {
-							tmp = 1;
-						} else if (cNode[checkedKey] ) {
-							tmp = (cNode.check_Child_State === -1 || cNode.check_Child_State === 2) ? 2 : 1;
-						} else {
-							tmp = (cNode.check_Child_State > 0) ? 1 : 0;
-						}
-						if (tmp === 1) {
-							chkFlag = 1; break;
-						} else if (tmp === 2 && chkFlag > -1 && i > 0 && tmp !== chkFlag) {
-							chkFlag = 1; break;
-						} else if (chkFlag === 2 && tmp > -1 && tmp < 2) {
-							chkFlag = 1; break;
-						} else if (tmp > -1) {
-							chkFlag = tmp;
-						}
-					}
-				}
-			}
-			node.check_Child_State = chkFlag;
-		}
-	},
-	//method of event proxy
-	_event = {
-
-	},
-	//method of event handler
-	_handler = {
-		onCheckNode: function (event, node) {
-			if (node.chkDisabled === true) return false;
-			var setting = data.getSetting(event.data.treeId),
-			checkedKey = setting.data.key.checked;
-			if (tools.apply(setting.callback.beforeCheck, [setting.treeId, node], true) == false) return true;
-			node[checkedKey] = !node[checkedKey];
-			view.checkNodeRelation(setting, node);
-			var checkObj = $("#" + node.tId + consts.id.CHECK);
-			view.setChkClass(setting, checkObj, node);
-			view.repairParentChkClassWithSelf(setting, node);
-			setting.treeObj.trigger(consts.event.CHECK, [event, setting.treeId, node]);
-			return true;
-		},
-		onMouseoverCheck: function(event, node) {
-			if (node.chkDisabled === true) return false;
-			var setting = data.getSetting(event.data.treeId),
-			checkObj = $("#" + node.tId + consts.id.CHECK);
-			node.check_Focus = true;
-			view.setChkClass(setting, checkObj, node);
-			return true;
-		},
-		onMouseoutCheck: function(event, node) {
-			if (node.chkDisabled === true) return false;
-			var setting = data.getSetting(event.data.treeId),
-			checkObj = $("#" + node.tId + consts.id.CHECK);
-			node.check_Focus = false;
-			view.setChkClass(setting, checkObj, node);
-			return true;
-		}
-	},
-	//method of tools for zTree
-	_tools = {
-
-	},
-	//method of operate ztree dom
-	_view = {
-		checkNodeRelation: function(setting, node) {
-			var pNode, i, l,
-			childKey = setting.data.key.children,
-			checkedKey = setting.data.key.checked,
-			r = consts.radio;
-			if (setting.check.chkStyle == r.STYLE) {
-				var checkedList = data.getRadioCheckedList(setting);
-				if (node[checkedKey]) {
-					if (setting.check.radioType == r.TYPE_ALL) {
-						for (i = checkedList.length-1; i >= 0; i--) {
-							pNode = checkedList[i];
-							pNode[checkedKey] = false;
-							checkedList.splice(i, 1);
-
-							view.setChkClass(setting, $("#" + pNode.tId + consts.id.CHECK), pNode);
-							if (pNode.parentTId != node.parentTId) {
-								view.repairParentChkClassWithSelf(setting, pNode);
-							}
-						}
-						checkedList.push(node);
-					} else {
-						var parentNode = (node.parentTId) ? node.getParentNode() : data.getRoot(setting);
-						for (i = 0, l = parentNode[childKey].length; i < l; i++) {
-							pNode = parentNode[childKey][i];
-							if (pNode[checkedKey] && pNode != node) {
-								pNode[checkedKey] = false;
-								view.setChkClass(setting, $("#" + pNode.tId + consts.id.CHECK), pNode);
-							}
-						}
-					}
-				} else if (setting.check.radioType == r.TYPE_ALL) {
-					for (i = 0, l = checkedList.length; i < l; i++) {
-						if (node == checkedList[i]) {
-							checkedList.splice(i, 1);
-							break;
-						}
-					}
-				}
-
-			} else {
-				if (node[checkedKey] && (!node[childKey] || node[childKey].length==0 || setting.check.chkboxType.Y.indexOf("s") > -1)) {
-					view.setSonNodeCheckBox(setting, node, true);
-				}
-				if (!node[checkedKey] && (!node[childKey] || node[childKey].length==0 || setting.check.chkboxType.N.indexOf("s") > -1)) {
-					view.setSonNodeCheckBox(setting, node, false);
-				}
-				if (node[checkedKey] && setting.check.chkboxType.Y.indexOf("p") > -1) {
-					view.setParentNodeCheckBox(setting, node, true);
-				}
-				if (!node[checkedKey] && setting.check.chkboxType.N.indexOf("p") > -1) {
-					view.setParentNodeCheckBox(setting, node, false);
-				}
-			}
-		},
-		makeChkClass: function(setting, node) {
-			var checkedKey = setting.data.key.checked,
-			c = consts.checkbox, r = consts.radio,
-			fullStyle = "";
-			if (node.chkDisabled === true) {
-				fullStyle = c.DISABLED;
-			} else if (node.halfCheck) {
-				fullStyle = c.PART;
-			} else if (setting.check.chkStyle == r.STYLE) {
-				fullStyle = (node.check_Child_State < 1)? c.FULL:c.PART;
-			} else {
-				fullStyle = node[checkedKey] ? ((node.check_Child_State === 2 || node.check_Child_State === -1) ? c.FULL:c.PART) : ((node.check_Child_State < 1)? c.FULL:c.PART);
-			}
-			var chkName = setting.check.chkStyle + "_" + (node[checkedKey] ? c.TRUE : c.FALSE) + "_" + fullStyle;
-			chkName = (node.check_Focus && node.chkDisabled !== true) ? chkName + "_" + c.FOCUS : chkName;
-			return consts.className.BUTTON + " " + c.DEFAULT + " " + chkName;
-		},
-		repairAllChk: function(setting, checked) {
-			if (setting.check.enable && setting.check.chkStyle === consts.checkbox.STYLE) {
-				var checkedKey = setting.data.key.checked,
-				childKey = setting.data.key.children,
-				root = data.getRoot(setting);
-				for (var i = 0, l = root[childKey].length; i<l ; i++) {
-					var node = root[childKey][i];
-					if (node.nocheck !== true && node.chkDisabled !== true) {
-						node[checkedKey] = checked;
-					}
-					view.setSonNodeCheckBox(setting, node, checked);
-				}
-			}
-		},
-		repairChkClass: function(setting, node) {
-			if (!node) return;
-			data.makeChkFlag(setting, node);
-			if (node.nocheck !== true) {
-				var checkObj = $("#" + node.tId + consts.id.CHECK);
-				view.setChkClass(setting, checkObj, node);
-			}
-		},
-		repairParentChkClass: function(setting, node) {
-			if (!node || !node.parentTId) return;
-			var pNode = node.getParentNode();
-			view.repairChkClass(setting, pNode);
-			view.repairParentChkClass(setting, pNode);
-		},
-		repairParentChkClassWithSelf: function(setting, node) {
-			if (!node) return;
-			var childKey = setting.data.key.children;
-			if (node[childKey] && node[childKey].length > 0) {
-				view.repairParentChkClass(setting, node[childKey][0]);
-			} else {
-				view.repairParentChkClass(setting, node);
-			}
-		},
-		repairSonChkDisabled: function(setting, node, chkDisabled, inherit) {
-			if (!node) return;
-			var childKey = setting.data.key.children;
-			if (node.chkDisabled != chkDisabled) {
-				node.chkDisabled = chkDisabled;
-			}
-			view.repairChkClass(setting, node);
-			if (node[childKey] && inherit) {
-				for (var i = 0, l = node[childKey].length; i < l; i++) {
-					var sNode = node[childKey][i];
-					view.repairSonChkDisabled(setting, sNode, chkDisabled, inherit);
-				}
-			}
-		},
-		repairParentChkDisabled: function(setting, node, chkDisabled, inherit) {
-			if (!node) return;
-			if (node.chkDisabled != chkDisabled && inherit) {
-				node.chkDisabled = chkDisabled;
-			}
-			view.repairChkClass(setting, node);
-			view.repairParentChkDisabled(setting, node.getParentNode(), chkDisabled, inherit);
-		},
-		setChkClass: function(setting, obj, node) {
-			if (!obj) return;
-			if (node.nocheck === true) {
-				obj.hide();
-			} else {
-				obj.show();
-			}
-			obj.removeClass();
-			obj.addClass(view.makeChkClass(setting, node));
-		},
-		setParentNodeCheckBox: function(setting, node, value, srcNode) {
-			var childKey = setting.data.key.children,
-			checkedKey = setting.data.key.checked,
-			checkObj = $("#" + node.tId + consts.id.CHECK);
-			if (!srcNode) srcNode = node;
-			data.makeChkFlag(setting, node);
-			if (node.nocheck !== true && node.chkDisabled !== true) {
-				node[checkedKey] = value;
-				view.setChkClass(setting, checkObj, node);
-				if (setting.check.autoCheckTrigger && node != srcNode) {
-					setting.treeObj.trigger(consts.event.CHECK, [null, setting.treeId, node]);
-				}
-			}
-			if (node.parentTId) {
-				var pSign = true;
-				if (!value) {
-					var pNodes = node.getParentNode()[childKey];
-					for (var i = 0, l = pNodes.length; i < l; i++) {
-						if ((pNodes[i].nocheck !== true && pNodes[i].chkDisabled !== true && pNodes[i][checkedKey])
-						|| ((pNodes[i].nocheck === true || pNodes[i].chkDisabled === true) && pNodes[i].check_Child_State > 0)) {
-							pSign = false;
-							break;
-						}
-					}
-				}
-				if (pSign) {
-					view.setParentNodeCheckBox(setting, node.getParentNode(), value, srcNode);
-				}
-			}
-		},
-		setSonNodeCheckBox: function(setting, node, value, srcNode) {
-			if (!node) return;
-			var childKey = setting.data.key.children,
-			checkedKey = setting.data.key.checked,
-			checkObj = $("#" + node.tId + consts.id.CHECK);
-			if (!srcNode) srcNode = node;
-
-			var hasDisable = false;
-			if (node[childKey]) {
-				for (var i = 0, l = node[childKey].length; i < l && node.chkDisabled !== true; i++) {
-					var sNode = node[childKey][i];
-					view.setSonNodeCheckBox(setting, sNode, value, srcNode);
-					if (sNode.chkDisabled === true) hasDisable = true;
-				}
-			}
-			
-			if (node != data.getRoot(setting) && node.chkDisabled !== true) {
-				if (hasDisable && node.nocheck !== true) {
-					data.makeChkFlag(setting, node);
-				}
-				if (node.nocheck !== true && node.chkDisabled !== true) {
-					node[checkedKey] = value;
-					if (!hasDisable) node.check_Child_State = (node[childKey] && node[childKey].length > 0) ? (value ? 2 : 0) : -1;
-				} else {
-					node.check_Child_State = -1;
-				}
-				view.setChkClass(setting, checkObj, node);
-				if (setting.check.autoCheckTrigger && node != srcNode && node.nocheck !== true && node.chkDisabled !== true) {
-					setting.treeObj.trigger(consts.event.CHECK, [null, setting.treeId, node]);
-				}
-			}
-
-		}
-	},
-
-	_z = {
-		tools: _tools,
-		view: _view,
-		event: _event,
-		data: _data
-	};
-	$.extend(true, $.fn.zTree.consts, _consts);
-	$.extend(true, $.fn.zTree._z, _z);
-
-	var zt = $.fn.zTree,
-	tools = zt._z.tools,
-	consts = zt.consts,
-	view = zt._z.view,
-	data = zt._z.data,
-	event = zt._z.event;
-
-	data.exSetting(_setting);
-	data.addInitBind(_bindEvent);
-	data.addInitUnBind(_unbindEvent);
-	data.addInitCache(_initCache);
-	data.addInitNode(_initNode);
-	data.addInitProxy(_eventProxy);
-	data.addInitRoot(_initRoot);
-	data.addBeforeA(_beforeA);
-	data.addZTreeTools(_zTreeTools);
-
-	var _createNodes = view.createNodes;
-	view.createNodes = function(setting, level, nodes, parentNode) {
-		if (_createNodes) _createNodes.apply(view, arguments);
-		if (!nodes) return;
-		view.repairParentChkClassWithSelf(setting, parentNode);
-	}
-	var _removeNode = view.removeNode;
-	view.removeNode = function(setting, node) {
-		var parentNode = node.getParentNode();
-		if (_removeNode) _removeNode.apply(view, arguments);
-		if (!node || !parentNode) return;
-		view.repairChkClass(setting, parentNode);
-		view.repairParentChkClass(setting, parentNode);
-	}
-
-	var _appendNodes = view.appendNodes;
-	view.appendNodes = function(setting, level, nodes, parentNode, initFlag, openFlag) {
-		var html = "";
-		if (_appendNodes) {
-			html = _appendNodes.apply(view, arguments);
-		}
-		if (parentNode) {
-			data.makeChkFlag(setting, parentNode);
-		}
-		return html;
-	}
-})(jQuery);

ファイルの差分が大きいため隠しています
+ 0 - 1178
ruoyi-admin/src/main/resources/static/ajax/libs/jquery-ztree/3.5/js/jquery.ztree.exedit-3.5.js


+ 0 - 366
ruoyi-admin/src/main/resources/static/ajax/libs/jquery-ztree/3.5/js/jquery.ztree.exhide-3.5.js

@@ -1,366 +0,0 @@
-/*
- * JQuery zTree exHideNodes 3.5.12
- * http://zTree.me/
- *
- * Copyright (c) 2010 Hunter.z
- *
- * Licensed same as jquery - MIT License
- * http://www.opensource.org/licenses/mit-license.php
- *
- * email: hunter.z@263.net
- * Date: 2013-03-11
- */
-(function($){
-	//default init node of exLib
-	var _initNode = function(setting, level, n, parentNode, isFirstNode, isLastNode, openFlag) {
-		if (typeof n.isHidden == "string") n.isHidden = tools.eqs(n.isHidden, "true");
-		n.isHidden = !!n.isHidden;
-		data.initHideForExCheck(setting, n);
-	},
-	//add dom for check
-	_beforeA = function(setting, node, html) {},
-	//update zTreeObj, add method of exLib
-	_zTreeTools = function(setting, zTreeTools) {
-		zTreeTools.showNodes = function(nodes, options) {
-			view.showNodes(setting, nodes, options);
-		}
-		zTreeTools.showNode = function(node, options) {
-			if (!node) {
-				return;
-			}
-			view.showNodes(setting, [node], options);
-		}
-		zTreeTools.hideNodes = function(nodes, options) {
-			view.hideNodes(setting, nodes, options);
-		}
-		zTreeTools.hideNode = function(node, options) {
-			if (!node) {
-				return;
-			}
-			view.hideNodes(setting, [node], options);
-		}
-
-		var _checkNode = zTreeTools.checkNode;
-		if (_checkNode) {
-			zTreeTools.checkNode = function(node, checked, checkTypeFlag, callbackFlag) {
-				if (!!node && !!node.isHidden) {
-					return;
-				}
-				_checkNode.apply(zTreeTools, arguments);
-			}
-		}
-	},
-	//method of operate data
-	_data = {
-		initHideForExCheck: function(setting, n) {
-			if (n.isHidden && setting.check && setting.check.enable) {
-				if(typeof n._nocheck == "undefined") {
-					n._nocheck = !!n.nocheck
-					n.nocheck = true;
-				}
-				n.check_Child_State = -1;
-				if (view.repairParentChkClassWithSelf) {
-					view.repairParentChkClassWithSelf(setting, n);
-				}
-			}
-		},
-		initShowForExCheck: function(setting, n) {
-			if (!n.isHidden && setting.check && setting.check.enable) {
-				if(typeof n._nocheck != "undefined") {
-					n.nocheck = n._nocheck;
-					delete n._nocheck;
-				}
-				if (view.setChkClass) {
-					var checkObj = $("#" + n.tId + consts.id.CHECK);
-					view.setChkClass(setting, checkObj, n);
-				}
-				if (view.repairParentChkClassWithSelf) {
-					view.repairParentChkClassWithSelf(setting, n);
-				}
-			}
-		}
-	},
-	//method of operate ztree dom
-	_view = {
-		clearOldFirstNode: function(setting, node) {
-			var n = node.getNextNode();
-			while(!!n){
-				if (n.isFirstNode) {
-					n.isFirstNode = false;
-					view.setNodeLineIcos(setting, n);
-					break;
-				}
-				if (n.isLastNode) {
-					break;
-				}
-				n = n.getNextNode();
-			}
-		},
-		clearOldLastNode: function(setting, node) {
-			var n = node.getPreNode();
-			while(!!n){
-				if (n.isLastNode) {
-					n.isLastNode = false;
-					view.setNodeLineIcos(setting, n);
-					break;
-				}
-				if (n.isFirstNode) {
-					break;
-				}
-				n = n.getPreNode();
-			}
-		},
-		makeDOMNodeMainBefore: function(html, setting, node) {
-			html.push("<li ", (node.isHidden ? "style='display:none;' " : ""), "id='", node.tId, "' class='", consts.className.LEVEL, node.level,"' tabindex='0' hidefocus='true' treenode>");
-		},
-		showNode: function(setting, node, options) {
-			node.isHidden = false;
-			data.initShowForExCheck(setting, node);
-			$("#" + node.tId).show();
-		},
-		showNodes: function(setting, nodes, options) {
-			if (!nodes || nodes.length == 0) {
-				return;
-			}
-			var pList = {}, i, j;
-			for (i=0, j=nodes.length; i<j; i++) {
-				var n = nodes[i];
-				if (!pList[n.parentTId]) {
-					var pn = n.getParentNode();
-					pList[n.parentTId] = (pn === null) ? data.getRoot(setting) : n.getParentNode();
-				}
-				view.showNode(setting, n, options);
-			}
-			for (var tId in pList) {
-				var children = pList[tId][setting.data.key.children];
-				view.setFirstNodeForShow(setting, children);
-				view.setLastNodeForShow(setting, children);
-			}
-		},
-		hideNode: function(setting, node, options) {
-			node.isHidden = true;
-			node.isFirstNode = false;
-			node.isLastNode = false;
-			data.initHideForExCheck(setting, node);
-			view.cancelPreSelectedNode(setting, node);
-			$("#" + node.tId).hide();
-		},
-		hideNodes: function(setting, nodes, options) {
-			if (!nodes || nodes.length == 0) {
-				return;
-			}
-			var pList = {}, i, j;
-			for (i=0, j=nodes.length; i<j; i++) {
-				var n = nodes[i];
-				if ((n.isFirstNode || n.isLastNode) && !pList[n.parentTId]) {
-					var pn = n.getParentNode();
-					pList[n.parentTId] = (pn === null) ? data.getRoot(setting) : n.getParentNode();
-				}
-				view.hideNode(setting, n, options);
-			}
-			for (var tId in pList) {
-				var children = pList[tId][setting.data.key.children];
-				view.setFirstNodeForHide(setting, children);
-				view.setLastNodeForHide(setting, children);
-			}
-		},
-		setFirstNode: function(setting, parentNode) {
-			var childKey = setting.data.key.children, childLength = parentNode[childKey].length;
-			if (childLength > 0 && !parentNode[childKey][0].isHidden) {
-				parentNode[childKey][0].isFirstNode = true;
-			} else if (childLength > 0) {
-				view.setFirstNodeForHide(setting, parentNode[childKey]);
-			}
-		},
-		setLastNode: function(setting, parentNode) {
-			var childKey = setting.data.key.children, childLength = parentNode[childKey].length;
-			if (childLength > 0 && !parentNode[childKey][0].isHidden) {
-				parentNode[childKey][childLength - 1].isLastNode = true;
-			} else if (childLength > 0) {
-				view.setLastNodeForHide(setting, parentNode[childKey]);
-			}
-		},
-		setFirstNodeForHide: function(setting, nodes) {
-			var n,i,j;
-			for (i=0, j=nodes.length; i<j; i++) {
-				n = nodes[i];
-				if (n.isFirstNode) {
-					break;
-				}
-				if (!n.isHidden && !n.isFirstNode) {
-					n.isFirstNode = true;
-					view.setNodeLineIcos(setting, n);
-					break;
-				} else {
-					n = null;
-				}
-			}
-			return n;
-		},
-		setFirstNodeForShow: function(setting, nodes) {
-			var n,i,j, first, old;
-			for(i=0, j=nodes.length; i<j; i++) {
-				n = nodes[i];
-				if (!first && !n.isHidden && n.isFirstNode) {
-					first = n;
-					break;
-				} else if (!first && !n.isHidden && !n.isFirstNode) {
-					n.isFirstNode = true;
-					first = n;
-					view.setNodeLineIcos(setting, n);
-				} else if (first && n.isFirstNode) {
-					n.isFirstNode = false;
-					old = n;
-					view.setNodeLineIcos(setting, n);
-					break;
-				} else {
-					n = null;
-				}
-			}
-			return {"new":first, "old":old};
-		},
-		setLastNodeForHide: function(setting, nodes) {
-			var n,i;
-			for (i=nodes.length-1; i>=0; i--) {
-				n = nodes[i];
-				if (n.isLastNode) {
-					break;
-				}
-				if (!n.isHidden && !n.isLastNode) {
-					n.isLastNode = true;
-					view.setNodeLineIcos(setting, n);
-					break;
-				} else {
-					n = null;
-				}
-			}
-			return n;
-		},
-		setLastNodeForShow: function(setting, nodes) {
-			var n,i,j, last, old;
-			for (i=nodes.length-1; i>=0; i--) {
-				n = nodes[i];
-				if (!last && !n.isHidden && n.isLastNode) {
-					last = n;
-					break;
-				} else if (!last && !n.isHidden && !n.isLastNode) {
-					n.isLastNode = true;
-					last = n;
-					view.setNodeLineIcos(setting, n);
-				} else if (last && n.isLastNode) {
-					n.isLastNode = false;
-					old = n;
-					view.setNodeLineIcos(setting, n);
-					break;
-				} else {
-					n = null;
-				}
-			}
-			return {"new":last, "old":old};
-		}
-	},
-
-	_z = {
-		view: _view,
-		data: _data
-	};
-	$.extend(true, $.fn.zTree._z, _z);
-
-	var zt = $.fn.zTree,
-	tools = zt._z.tools,
-	consts = zt.consts,
-	view = zt._z.view,
-	data = zt._z.data,
-	event = zt._z.event;
-
-	data.addInitNode(_initNode);
-	data.addBeforeA(_beforeA);
-	data.addZTreeTools(_zTreeTools);
-
-//	Override method in core
-	var _dInitNode = data.initNode;
-	data.tmpHideParent = -1;
-	data.initNode = function(setting, level, node, parentNode, isFirstNode, isLastNode, openFlag) {
-		if (data.tmpHideParent !== parentNode) {
-			data.tmpHideParent = parentNode;
-			var tmpPNode = (parentNode) ? parentNode: data.getRoot(setting),
-			children = tmpPNode[setting.data.key.children];
-			data.tmpHideFirstNode = view.setFirstNodeForHide(setting, children);
-			data.tmpHideLastNode = view.setLastNodeForHide(setting, children);
-			view.setNodeLineIcos(setting, data.tmpHideFirstNode);
-			view.setNodeLineIcos(setting, data.tmpHideLastNode);
-		}
-		isFirstNode = (data.tmpHideFirstNode === node);
-		isLastNode = (data.tmpHideLastNode === node);
-		if (_dInitNode) _dInitNode.apply(data, arguments);
-		if (isLastNode) {
-			view.clearOldLastNode(setting, node);
-		}
-	}
-
-	var _makeChkFlag = data.makeChkFlag;
-	if (!!_makeChkFlag) {
-		data.makeChkFlag = function(setting, node) {
-			if (!!node && !!node.isHidden) {
-				return;
-			}
-			_makeChkFlag.apply(data, arguments);
-		}
-	}
-
-	var _getTreeCheckedNodes = data.getTreeCheckedNodes;
-	if (!!_getTreeCheckedNodes) {
-		data.getTreeCheckedNodes = function(setting, nodes, checked, results) {
-			if (!!nodes && nodes.length > 0) {
-				var p = nodes[0].getParentNode();
-				if (!!p && !!p.isHidden) {
-					return [];
-				}
-			}
-			return _getTreeCheckedNodes.apply(data, arguments);
-		}
-	}
-
-	var _getTreeChangeCheckedNodes = data.getTreeChangeCheckedNodes;
-	if (!!_getTreeChangeCheckedNodes) {
-		data.getTreeChangeCheckedNodes = function(setting, nodes, results) {
-			if (!!nodes && nodes.length > 0) {
-				var p = nodes[0].getParentNode();
-				if (!!p && !!p.isHidden) {
-					return [];
-				}
-			}
-			return _getTreeChangeCheckedNodes.apply(data, arguments);
-		}
-	}
-
-	var _expandCollapseSonNode = view.expandCollapseSonNode;
-	if (!!_expandCollapseSonNode) {
-		view.expandCollapseSonNode = function(setting, node, expandFlag, animateFlag, callback) {
-			if (!!node && !!node.isHidden) {
-				return;
-			}
-			_expandCollapseSonNode.apply(view, arguments);
-		}
-	}
-
-	var _setSonNodeCheckBox = view.setSonNodeCheckBox;
-	if (!!_setSonNodeCheckBox) {
-		view.setSonNodeCheckBox = function(setting, node, value, srcNode) {
-			if (!!node && !!node.isHidden) {
-				return;
-			}
-			_setSonNodeCheckBox.apply(view, arguments);
-		}
-	}
-
-	var _repairParentChkClassWithSelf = view.repairParentChkClassWithSelf;
-	if (!!_repairParentChkClassWithSelf) {
-		view.repairParentChkClassWithSelf = function(setting, node) {
-			if (!!node && !!node.isHidden) {
-				return;
-			}
-			_repairParentChkClassWithSelf.apply(view, arguments);
-		}
-	}
-})(jQuery);

+ 0 - 170
ruoyi-admin/src/main/resources/static/ajax/libs/jquery-ztree/3.5/log v3.x.txt

@@ -1,170 +0,0 @@
-=ZTree v3.x (JQuery Tree插件) 更新日志=
-
-<font color="red">为了更好的优化及扩展zTree, 因此决定升级为v3.x,并且对之前的v2.x不兼容,会有很多结构上的修改,对此深感无奈与抱歉,请大家谅解。</font>
-<font color="red">
-
-具体修改内容可参考:
-
-   * [http://www.ztree.me/v3/api.php zTree v3.0 API 文档]
-
-   * [http://www.ztree.me/v3/demo.php#_101 zTree v3.0 Demo 演示]
-
-   * [http://www.ztree.me/v3/faq.php#_101 zTree v3.0 常见问题]
-
-</font>
-
-<font color=#041594>
-*2013.03.11* v3.5.12
-   * 【修改】由于 jquery 1.9 中移除 event.srcElement 导致的 js 报错的bug。
-   * 【修改】在异步加载模式下,使用 moveNode 方法,且 moveType != "inner" 时,也会导致 targetNode 自动加载子节点的 bug
-   * 【修改】对已经显示的节点(nochecked=true)使用 showNodes 或 showNode 方法后,导致勾选框出现的bug。
-   * 【修改】对已经隐藏的节点(nochecked=false)使用 hideNodes 或 hideNode 方法后,导致勾选框消失的bug。
-   * 【修改】getNodesByParamFuzzy 支持 大小写模糊。
-   * 【修改】className 结构,提取 _consts.className.BUTTON / LEVEL / ICO_LOADING / SWITCH,便于快速修改 css 冲突。
-     例如:与 WordPress 产生冲突后,直接修改 core 中的 "button" 和 "level" 即可。  Issue: https://github.com/zTree/zTree_v3/issues/2
-
-*2013.01.28* v3.5.02
-   * 【增加】setting.check.chkDisabledInherit 属性,用于设置 chkDisabled 在初始化时子节点是否可以继承父节点的 chkDisabled 属性
-   * 【删除】内部 noSel 方法,使用 selectstart事件 和 "-moz-user-select"样式 处理禁止 节点文字被选择的功能
-   * 【修改】不兼容 jQuery 1.9 的bug
-   * 【修改】onDrop 的触发规则,保证异步加载模式下,可以在延迟加载结束后触发,避免 onDrop 中被拖拽的节点是已经更新后的数据。
-   * 【修改】setChkDisabled 方法,增加 inheritParent, inheritChildren 参数设置是否让父子节点继承 disabled
-   * 【修改】异步加载时 拼接参数的方法,由 string 修改为 json 对象
-   * 【修正】1-2-3 3级节点时,如果 2级节点 全部设置为 nocheck 或 chkDisabled后,勾选3级节点时,1级节点的半勾选状态错误的 bug
-   * 【修改】Demo: checkbox_nocheck.html & checkbox_chkDisabled.html;
-   * 【修改】Demo: edit_super.html,增加 showRenameBtn & showRemoveBtn 的演示
-   * 【修改】Demo: asyncForAll, 将 post 修改为 get;为了避免由于 IE10 的 bug 造成的客户端 以及 服务端崩溃
-      IE10 ajax Post 无法提交参数的bug (http://bugs.jquery.com/ticket/12790)
-
-*2012.12.21* v3.5.01
-   * 【优化】clone 方法
-   * 【修正】对于初始化无 children 属性的父节点进行 reAsyncChildNodes 操作时出错的 bug
-   * 【修正】beforeRename 回调中使用 cancelEditName 方法后,再 return false 导致无法重新进行编辑的 bug
-   * 【修正】exedit 扩展包让 setting.data.key.url 失效的 bug
-   * 【修正】setting.check.autoCheckTrigger 设置为 true 时,onCheck 回调缺少 event 参数的 bug
-   * 【修正】singlepath.html Demo 中的 bug
-
-*2012.11.20* v3.5
-   * 【优化】原先的 clone 方法 (特别感谢:愚人码头)
-   * 【修改】隐藏父节点后,使用 expandAll 方法导致 父节点展开的 bug
-   * 【修改】使用 jQuery v1.7 以上时,设置 zTree 容器 ul 隐藏(visibility: hidden;)后, 调用 selectNode 导致 IE 浏览器报错 Can't move focus 的 bug
-   * 【修改】正在异步加载时,执行 destory 或 init 方法后,异步加载的节点影响新树的 bug
-   * 【修改】方法 reAsyncChildNodes 在 refresh 的时候未清空内部 cache 导致内存泄露 的 bug
-   * 【修改】批量节点拖拽到其他父节点内(inner)时,导致顺序反转 的 bug
-   * 【修改】对于 使用 html格式的 节点无法触发 双击事件 的 bug
-   * 【修改】onCheck 回调中的 event ,保证与触发事件中的 event 一致
-   * 【修改】异步加载时,在 onNodeCreated 中执行 selectNode 后,导致节点折叠的 bug
-   * 【修改】API 中 dataFilter 的参数名称 childNodes ->  responseData
-   * 【修改】API 中 iconSkin 的 举例内容
-   * 【修改】API 中 chkDisabled 的说明
-   * 【修改】Demo 中 index.html 内的 loadReady 重复绑定问题
-
-*2012.09.03* v3.4
-   * 【增加】 Demo —— OutLook 样式的左侧菜单
-   * 【增加】清空 zTree 的方法 $.fn.zTree.destory(treeId) & zTree.destory()
-
-   * 【修改】core核心文件内 _eventProxy 方法中获取 tId 的方法,提高 DOM 的灵活性
-   * 【修改】初始化时 多层父节点的 checkbox 半选状态计算错误的 bug
-   * 【修改】同时选中父、子节点后,利用 getSelectedNodes 获取选中节点并利用 removeNode 删除时报错的 bug
-   * 【修改】treeNode.chkDisabled / nocheck 属性,支持字符串格式的 "false"/"true"
-   * 【修改】异步加载模式下无法利用 server 返回 xml 并且 在 dataFilter 中继续处理的 bug
-   * 【修改】title 只允许设置为 string 类型值的问题。 修正后允许设置为 number 类型的值
-   * 【修改】zId 计数规则 & Cache 保存,减少 IE9 的 bug 造成的内存泄漏
-   * 【修改】API 页面搜索功能导致 IE 崩溃的 bug
-
-*2012.07.16* v3.3
-   * 【增加】扩展库 exhide -- 节点隐藏功能
-
-   * 【修改】getNodesByFilter 方法,添加 invokeParam 自定义参数
-   * 【修改】拖拽中测试代码未删除,导致出现黄颜色的 iframe 遮罩层的 bug
-   * 【修改】延迟加载方法 对于使用 expandAll 进行全部展开时,导致 onNodeCreated 回调 和 addDiyDom 方法触发过早的 bug
-   * 【修改】使用 moveNode 移动尚未生成 DOM 的节点时,视图会出现异常的 bug
-   * 【修改】删除节点后,相关节点的 isFirstNode 属性未重置的 bug
-   * 【修改】getPreNode(),getNextNode() 方法在对于特殊情况时计算错误的 bug
-   * 【修改】设置 title 之后,如果重新将 title 内容设置为空后,会导致无法更新 title 的 bug
-   * 【修改】针对 setting.check.chkStyle=="radio" && setting.check.radioType=="all" 的情况时,getTreeCheckedNodes方法优化,找到一个结果就 break
-   * 【修改】zTreeObj.getCheckedNodes(false) 在 radioType = "all" 时计算错误的 bug
-   * 【修改】完善 API 中 beforeDrop / onDrop 的关于 treeId 的说明
-
-*2012.05.13* v3.2
-   * 【增加】setting.data.key.url 允许修改 treeNode.url 属性
-   * 【增加】getNodesByFilter(filter, isSingle) 方法
-   * 【增加】"与其他 DOM 拖拽互动" 的 Demo (http://www.ztree.me/v3/demo.php#_511)
-   * 【增加】"异步加载模式下全部展开" 的 Demo (http://www.ztree.me/v3/demo.php#_512)
-
-   * 【修改】代码结构,将 addNodes、removeNode、removeChildNodes 方法 和 beforeRemove、onRemove 回调 转移到 core 内
-   * 【修改】IE7的环境下无子节点的父节点反复展开出现多余空行的 bug
-   * 【修改】异步加载时,如果出现网络异常等,会导致 图标显示错误的 bug
-   * 【修改】dataFilter中 return null 导致异常 的 bug
-   * 【修改】removeChildNodes 方法清空子节点后,无法正常添加节点的 bug
-   * 【修改】moveNode 后节点中的自定义元素的事件丢失的 bug
-   * 【修改】moveNode 方法中设置 isSilent = true 时,如果移动到已展开的 父节点后,出现异常的 bug
-   * 【修改】onClick/onDrag/onDrop 回调中 event 不是原始 event 的 bug
-   * 【修改】onDrop 回调中 当拖拽无效时,无法获得 treeNodes 的 bug
-   * 【修改】onDrop 无法判断拖拽是 移动还是复制的问题
-   * 【修改】未开启异步加载模式时,拖拽节点到子节点为空的父节点内时 出现异常 的 bug
-   * 【修改】拖拽过程中,反复在 父节点图标上划动时,会出现停顿的 bug
-            (需要css 结构—— button -> span.button)
-
-   * 【修改】拖拽操作时箭头 与 targetNode 背景之间的细节现实问题,便于用户拖拽时更容易区分 prev、next 和 inner 操作
-   * 【修改】拖拽操作时IE6/7 下 在 节点<a> 右侧 10px 内会导致 targetNode = root 的 bug
-   * 【修改】编辑模式下 默认的编辑按钮、删除按钮点击后,如果相应的 before 回调 return false 时会触发 onClick 回调的 bug
-
-*2012.02.14* v3.1
-   * 【增加】ajax 的参数 setting.async.contentType ,让提交参数适用于 json 数据提交 (主要适用于 .Net 的开发)。
-   * 【增加】setting.edit.editNameSelectAll, 用于设定编辑节点名称时初次显示 input 后 text 内容为全选
-   * 【修改】异步加载 规则,不再仅仅依靠父节点的子节点数来判定,增加内部属性 zAsync,保证默认状态下父节点及时无子节点也只能异步加载一次,除非使用 reAsyncChildNodes 方法强行控制异步加载。
-   * 【修改】放大浏览器后导致 界面出现多余连接线的bug (需要更新:icon 图标和 css )
-   * 【修改】在编辑状态,如果节点名超过编辑框宽度,左右键在框内不起作用的bug(IE 6 7 8 出现)
-      CSS 中 filter:alpha(opacity=80) 造成的,应该是 ie 的 bug,需要更新 css 文件
-   * 【修改】title 设置后,如果属性不存在,则默认为 title 为空,便于数据容错和用户灵活使用
-   * 【修改】editName 方法如果针对尚未展开的 父节点,会导致该父节点自动展开的 bug
-   * 【修改】title 中存在标签时导致 title 显示异常的bug(例如:蓝色字22%"'`<input/>`)
-
-*2012.01.10* v3.0
-   * 【增加】setting.check.autoCheckTrigger 默认值 false,可以设置联动选中时是否触发事件回调函数
-   * 【增加】setting.callback.beforeEditName 回调函数,以保证用户可以捕获点击编辑按钮的事件
-   * 【增加】treeNode.chkDisabled 属性,显示 checkbox 但是用户无法修改 checkbox 状态,并且该 checkbox 会影响父节点的 checkbox 的半选状态
-   * 【增加】setting.check.nocheckInherit 属性,用户设置子节点继承 nocheck 属性,用于批量初始化节点,不适用于已经显示的节点
-   * 【增加】setting.edit.drag.autoExpandTrigger 默认值 false,可以设置自动展开、折叠操作时是否触发事件回调函数
-   * 【增加】setting.view.nameIsHTML 默认值 false,允许用户对 name 设置 DOM 对象
-   * 【增加】treeNode.click 属性的说明文档
-   * 【增加】treeObj.setChkDisabled 方法用于设置 checkbox / radio disabled 状态
-   * 【增加】treeNode.halfCheck 属性,用于强制设定节点的半选状态
-
-   * 【修改】异步加载 & 编辑功能 共存时,拖拽节点 或 增加节点 导致 ie 上报错的 bug (apply 方法引起)
-   * 【修改】zTreeStyle 样式冲突
-   * 【修改】setting.data.key.title 默认值设置为 "",初始化时自动赋值为 setting.data.key.name 这样可避免希望 title 与 name 一致的用户反复设置参数
-   * 【修改】点击叶子节点的连接线会触发 expand 事件的 bug
-   * 【修改】IE 下 点击叶子节点连线会出现虚线框的 bug
-   * 【修改】updateNode 导致 checkbox 半选状态错误的 bug
-   * 【修改】checkNode 方法实现 toggle 操作, 取消 expandAll 方法的 toggle 操作
-   * 【修改】zTree 内鼠标移动会抢页面上 input 内的焦点的 bug
-   * 【修改】beforeRename / onRename 的触发方式——即使名称内容未改变也会触发,便于用户配合 beforeEditName 捕获编辑状态的结束,赋予用户更多调整规则的权利
-   * 【修改】与 easyUI 共存时无法拖拽的bug
-   * 【修改】beforeRename 在 Firefox 下如果利用 alert,会触发两次的 bug
-   * 【修改】checkNode/expandNode/removeNode 方法,默认不触发回调函数,恢复 v2.6 的默认状态,同时增加 callbackFlag 参数,设置为 true 时,可以触发回调函数
-   * 【修改】IE9下“根据参数查找节点”的Demo 报错:行14 重新声明常量属性(Demo 自身的问题,定义了history变量)
-   * 【修改】初始化 zTree 时 onNodeCreated 事件回调函数中无法 用 getZTreeObj 获取 zTree 对象的 bug
-   * 【修改】setting.edit.drag.prev / next / inner 参数,增加被拖拽的节点集合
-   * 【修改】异步加载模式下,otherParam 使用Array数组会出错的 bug。例如: ["id", "1", "name", "test"]
-   * 【修改】FireFox 下多棵树拖拽异常的 bug
-   * 【修改】exedit 中调用 excheck库的方法时没有进行容错处理,导致如果只加入 exedit 而没有 excheck的时候,会出现 js 错误
-   * 【修改】显示 checkbox 的 zTree 在编辑模式下,移动节点不会更新父节点半选状态的 bug
-   * 【修改】treeNode.childs --> children; treeObject.removeChilds --> removeChildNodes; setting.data.key.childs --> children(英文不好惹的祸!抱歉了!)
-   * 【修改】onRemove 回调中得到的 treeNode 还可以查找 preNode、nextNode 的bug。 修正后,getPreNode 和 getNextNode 都返回 null; 为了便于查找父节点,getParentNode 仍保留
-   * 【修改】简单数据模式下,如果 id 与 pId 的值相同会导致该节点无法正常加载的 bug
-   * 【修改】移动或删除中间节点会导致最后一个节点连接线图标变小的 bug
-
-*2011.09.05* v3.0 beta
-   * 【修改】zTree 的 js 代码架构全面修改,并且拆分
-   * 【修改】zTree 的 css 样式全面修改,对浏览器可以更好地兼容,同时解决了以前1个像素差的问题
-   * 【优化】采用延迟加载技术,一次性加载大数据量的节点性能飞速提升
-   * 【增加】支持多节点同时选中、拖拽
-   * 【增加】checkNode、checkAllNodes 等多种方法
-   * 【增加】IE6 自动取消动画展开、折叠的功能
-   * 【修正】异步加载 & 编辑模式 能够更完美的共存
-   * 【修正】setting 配置更加合理,并且增加了若干项配置参数
-   * 【修正】treeNode 节点数据的属性更加合理,并且增加了一些方法
-   * 【修正】拖拽操作更加灵活方便,更容易制定自己的规则
-   * 【修正】其他若干修改,详细对比请参考 url:[http://www.ztree.me/v3/faq.php#_101 zTree v3.0 常见问题]

ファイルの差分が大きいため隠しています
+ 0 - 2
ruoyi-admin/src/main/resources/static/ajax/libs/layer/layer.min.js


+ 0 - 138
ruoyi-admin/src/main/resources/static/ajax/libs/layer/theme/moon/style.css

@@ -1,138 +0,0 @@
-/**
- * layer皮肤
- * Copyright (c) 2019 ruoyi
- */
-html #layui_layer_skinmoonstylecss {
-	display: none;
-	position: absolute;
-	width: 1989px;
-}
-
-body .layer-ext-moon[type="dialog"] {
-	min-width: 320px;
-}
-body .layer-ext-moon-msg[type="dialog"]{min-width:200px;}
-body .layer-ext-moon .layui-layer-title {
-	background: #F8F8F8;
-	color: #333;
-	font-size: 14px;
-	height: 42px;
-	line-height: 42px;
-    border: none;
-}
-
-body .layer-ext-moon .layui-layer-content .layui-layer-ico {
-	height: 32px;
-	width: 32px;
-	top:18.5px;
-}
-body .layer-ext-moon .layui-layer-ico0 {
-	background: url(default.png) no-repeat -96px 0;
-	;
-}
-body .layer-ext-moon .layui-layer-ico1 {
-	background: url(default.png) no-repeat -224px 0;
-	;
-}
-body .layer-ext-moon .layui-layer-ico2 {
-	background: url(default.png) no-repeat -192px 0;
-}
-body .layer-ext-moon .layui-layer-ico3 {
-	background: url(default.png) no-repeat -160px 0;
-}
-body .layer-ext-moon .layui-layer-ico4 {
-	background: url(default.png) no-repeat -320px 0;
-}
-body .layer-ext-moon .layui-layer-ico5 {
-	background: url(default.png) no-repeat -288px 0;
-}
-body .layer-ext-moon .layui-layer-ico6 {
-	background: url(default.png) -256px 0;
-}
-body .layer-ext-moon .layui-layer-ico7 {
-	background: url(default.png) no-repeat -128px 0;
-}
-body .layer-ext-moon .layui-layer-setwin {
-	top: 15px;
-	right: 15px;
-}
-body .layer-ext-moon .layui-layer-setwin a {
-	width: 16px;
-	height: 16px;
-}
-body .layer-ext-moon .layui-layer-setwin .layui-layer-min cite:hover {
-	background-color: #56abe4;
-}
-body .layer-ext-moon .layui-layer-setwin .layui-layer-max {
-	background: url(default.png) no-repeat -80px 0;
-}
-body .layer-ext-moon .layui-layer-setwin .layui-layer-max:hover {
-	background: url(default.png) no-repeat -64px 0;
-}
-body .layer-ext-moon .layui-layer-setwin .layui-layer-maxmin {
-	background: url(default.png) no-repeat -32px 0;
-}
-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 {
-	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 {
-	background: url(default.png) -48px 0;
-}
-body .layer-ext-moon .layui-layer-padding{padding-top: 24px;}
-body .layer-ext-moon .layui-layer-btn {
-    text-align: right;
-    padding: 10px 15px 12px;
-	background: #f0f4f7;
-	border-top: 1px #c7c7c7 solid;
-}
-body .layer-ext-moon .layui-layer-btn a {
-	font-size: 12px;
-	font-weight: normal;
-	margin: 0 3px;
-	margin-right: 7px;
-	margin-left: 7px;
-	padding: 0 15px;
-	color: #fff;
-	border: 1px solid #0064b6;
-	background: #0071ce;
-	border-radius: 3px;
-	display: inline-block;
-	height: 30px;
-	line-height: 30px;
-	text-align: center;
-	vertical-align: middle;
-	background-repeat: no-repeat;
-	text-decoration: none;
-	outline: none;
-	-moz-box-sizing: content-box;
-	-webkit-box-sizing: content-box;
-	box-sizing: content-box;
-}
-body .layer-ext-moon .layui-layer-btn .layui-layer-btn0 {
-	background: #0071ce;
-}
-body .layer-ext-moon .layui-layer-btn .layui-layer-btn1 {
-	background: #fff;
-	color: #404a58;
-	border: 1px solid #c0c4cd;
-	border-radius: 3px;
-}
-body .layer-ext-moon .layui-layer-btn .layui-layer-btn2 {
-	background: #f60;
-	color: #fff;
-	border: 1px solid #f60;
-	border-radius: 3px;
-}
-body .layer-ext-moon .layui-layer-btn .layui-layer-btn3 {
-	background: #f00;
-	color: #fff;
-	border: 1px solid #f00;
-	border-radius: 3px;
-}
-
-body .layer-ext-moon .layui-layer-title span.layui-layer-tabnow{
-	height:47px;
-}

ファイルの差分が大きいため隠しています
+ 0 - 45
ruoyi-admin/src/main/resources/static/ajax/libs/layui/css/modules/laydate/default/font/iconfont.svg


ファイルの差分が大きいため隠しています
+ 0 - 2
ruoyi-admin/src/main/resources/static/ajax/libs/layui/css/modules/laydate/default/laydate.css


ファイルの差分が大きいため隠しています
+ 0 - 2
ruoyi-admin/src/main/resources/static/ajax/libs/layui/layui.min.js


ファイルの差分が大きいため隠しています
+ 0 - 2
ruoyi-admin/src/main/resources/static/ajax/libs/layui/modules/laydate.js


ファイルの差分が大きいため隠しています
+ 0 - 7
ruoyi-admin/src/main/resources/static/ajax/libs/select2/select2-bootstrap.min.css


ファイルの差分が大きいため隠しています
+ 0 - 1180
ruoyi-admin/src/main/resources/static/ajax/libs/suggest/bootstrap-suggest.js


ファイルの差分が大きいため隠しています
+ 0 - 9
ruoyi-admin/src/main/resources/static/ajax/libs/suggest/bootstrap-suggest.min.js


+ 0 - 774
ruoyi-admin/src/main/resources/static/ajax/libs/typeahead/bootstrap-typeahead.js

@@ -1,774 +0,0 @@
-/* =============================================================
- * bootstrap3-typeahead.js v4.0.2
- * https://github.com/bassjobsen/Bootstrap-3-Typeahead
- * =============================================================
- * Original written by @mdo and @fat
- * =============================================================
- * Copyright 2014 Bass Jobsen @bassjobsen
- *
- * Licensed under the Apache License, Version 2.0 (the 'License');
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an 'AS IS' BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============================================================ */
-
-
-(function (root, factory) {
-
-    'use strict';
-
-    // CommonJS module is defined
-    if (typeof module !== 'undefined' && module.exports) {
-        module.exports = factory(require('jquery'));
-    }
-    // AMD module is defined
-    else if (typeof define === 'function' && define.amd) {
-        define(['jquery'], function ($) {
-            return factory($);
-        });
-    } else {
-        factory(root.jQuery);
-    }
-
-}(this, function ($) {
-
-    'use strict';
-    // jshint laxcomma: true
-
-
-    /* TYPEAHEAD PUBLIC CLASS DEFINITION
-     * ================================= */
-
-    var Typeahead = function (element, options) {
-        this.$element = $(element);
-        this.options = $.extend({}, Typeahead.defaults, options);
-        this.matcher = this.options.matcher || this.matcher;
-        this.sorter = this.options.sorter || this.sorter;
-        this.select = this.options.select || this.select;
-        this.autoSelect = typeof this.options.autoSelect == 'boolean' ? this.options.autoSelect : true;
-        this.highlighter = this.options.highlighter || this.highlighter;
-        this.render = this.options.render || this.render;
-        this.updater = this.options.updater || this.updater;
-        this.displayText = this.options.displayText || this.displayText;
-        this.itemLink = this.options.itemLink || this.itemLink;
-        this.itemTitle = this.options.itemTitle || this.itemTitle;
-        this.followLinkOnSelect = this.options.followLinkOnSelect || this.followLinkOnSelect;
-        this.source = this.options.source;
-        this.delay = this.options.delay;
-        this.theme = this.options.theme && this.options.themes && this.options.themes[this.options.theme] || Typeahead.defaults.themes[Typeahead.defaults.theme];
-        this.$menu = $(this.options.menu || this.theme.menu);
-        this.$appendTo = this.options.appendTo ? $(this.options.appendTo) : null;
-        this.fitToElement = typeof this.options.fitToElement == 'boolean' ? this.options.fitToElement : false;
-        this.shown = false;
-        this.listen();
-        this.showHintOnFocus = typeof this.options.showHintOnFocus == 'boolean' || this.options.showHintOnFocus === 'all' ? this.options.showHintOnFocus : false;
-        this.afterSelect = this.options.afterSelect;
-        this.afterEmptySelect = this.options.afterEmptySelect;
-        this.addItem = false;
-        this.value = this.$element.val() || this.$element.text();
-        this.keyPressed = false;
-        this.focused = this.$element.is(':focus');
-        this.changeInputOnSelect = this.options.changeInputOnSelect || this.changeInputOnSelect;
-        this.changeInputOnMove = this.options.changeInputOnMove || this.changeInputOnMove;
-        this.openLinkInNewTab = this.options.openLinkInNewTab || this.openLinkInNewTab;
-        this.selectOnBlur = this.options.selectOnBlur || this.selectOnBlur;
-        this.showCategoryHeader = this.options.showCategoryHeader || this.showCategoryHeader;
-    };
-
-    Typeahead.prototype = {
-
-        constructor: Typeahead,
-
-
-        setDefault: function (val) {
-            // var val = this.$menu.find('.active').data('value');
-            this.$element.data('active', val);
-            if (this.autoSelect || val) {
-                var newVal = this.updater(val);
-                // Updater can be set to any random functions via "options" parameter in constructor above.
-                // Add null check for cases when updater returns void or undefined.
-                if (!newVal) {
-                    newVal = '';
-                }
-                this.$element
-                    .val(this.displayText(newVal) || newVal)
-                    .text(this.displayText(newVal) || newVal)
-                    .change();
-                this.afterSelect(newVal);
-            }
-            return this.hide();
-        },
-
-        select: function () {
-            var val = this.$menu.find('.active').data('value');
-
-            this.$element.data('active', val);
-            if (this.autoSelect || val) {
-                var newVal = this.updater(val);
-                // Updater can be set to any random functions via "options" parameter in constructor above.
-                // Add null check for cases when updater returns void or undefined.
-                if (!newVal) {
-                    newVal = '';
-                }
-
-                if (this.changeInputOnSelect) {
-                    this.$element
-                        .val(this.displayText(newVal) || newVal)
-                        .text(this.displayText(newVal) || newVal)
-                        .change();
-                }
-
-                if (this.followLinkOnSelect && this.itemLink(val)) {
-                    if (this.openLinkInNewTab) {
-                        window.open(this.itemLink(val), '_blank');
-                    } else {
-                        document.location = this.itemLink(val);
-                    }
-                    this.afterSelect(newVal);
-                } else if (this.followLinkOnSelect && !this.itemLink(val)) {
-                    this.afterEmptySelect(newVal);
-                } else {
-                    this.afterSelect(newVal);
-                }
-            } else {
-                this.afterEmptySelect();
-            }
-
-            return this.hide();
-        },
-
-        updater: function (item) {
-            return item;
-        },
-
-        setSource: function (source) {
-            this.source = source;
-        },
-
-        show: function () {
-            var pos = $.extend({}, this.$element.position(), {
-                height: this.$element[0].offsetHeight
-            });
-
-            var scrollHeight = typeof this.options.scrollHeight == 'function' ?
-                this.options.scrollHeight.call() :
-                this.options.scrollHeight;
-
-            var element;
-            if (this.shown) {
-                element = this.$menu;
-            } else if (this.$appendTo) {
-                element = this.$menu.appendTo(this.$appendTo);
-                this.hasSameParent = this.$appendTo.is(this.$element.parent());
-            } else {
-                element = this.$menu.insertAfter(this.$element);
-                this.hasSameParent = true;
-            }
-
-            if (!this.hasSameParent) {
-                // We cannot rely on the element position, need to position relative to the window
-                element.css('position', 'fixed');
-                var offset = this.$element.offset();
-                pos.top = offset.top;
-                pos.left = offset.left;
-            }
-            // The rules for bootstrap are: 'dropup' in the parent and 'dropdown-menu-right' in the element.
-            // Note that to get right alignment, you'll need to specify `menu` in the options to be:
-            // '<ul class="typeahead dropdown-menu" role="listbox"></ul>'
-            var dropup = $(element).parent().hasClass('dropup');
-            var newTop = dropup ? 'auto' : (pos.top + pos.height + scrollHeight);
-            var right = $(element).hasClass('dropdown-menu-right');
-            var newLeft = right ? 'auto' : pos.left;
-            // it seems like setting the css is a bad idea (just let Bootstrap do it), but I'll keep the old
-            // logic in place except for the dropup/right-align cases.
-            element.css({ top: newTop, left: newLeft }).show();
-
-            if (this.options.fitToElement === true) {
-                element.css('width', this.$element.outerWidth() + 'px');
-            }
-
-            this.shown = true;
-            return this;
-        },
-
-        hide: function () {
-            this.$menu.hide();
-            this.shown = false;
-            return this;
-        },
-
-        lookup: function (query) {
-            if (typeof(query) != 'undefined' && query !== null) {
-                this.query = query;
-            } else {
-                this.query = this.$element.val();
-            }
-
-            if (this.query.length < this.options.minLength && !this.options.showHintOnFocus) {
-                return this.shown ? this.hide() : this;
-            }
-
-            var worker = $.proxy(function () {
-
-                // Bloodhound (since 0.11) needs three arguments.
-                // Two of them are callback functions (sync and async) for local and remote data processing
-                // see https://github.com/twitter/typeahead.js/blob/master/src/bloodhound/bloodhound.js#L132
-                if ($.isFunction(this.source) && this.source.length === 3) {
-                    this.source(this.query, $.proxy(this.process, this), $.proxy(this.process, this));
-                } else if ($.isFunction(this.source)) {
-                    this.source(this.query, $.proxy(this.process, this));
-                } else if (this.source) {
-                    this.process(this.source);
-                }
-            }, this);
-
-            clearTimeout(this.lookupWorker);
-            this.lookupWorker = setTimeout(worker, this.delay);
-        },
-
-        process: function (items) {
-            var that = this;
-
-            items = $.grep(items, function (item) {
-                return that.matcher(item);
-            });
-
-            items = this.sorter(items);
-
-            if (!items.length && !this.options.addItem) {
-                return this.shown ? this.hide() : this;
-            }
-
-            if (items.length > 0) {
-                this.$element.data('active', items[0]);
-            } else {
-                this.$element.data('active', null);
-            }
-
-            if (this.options.items != 'all') {
-                items = items.slice(0, this.options.items);
-            }
-
-            // Add item
-            if (this.options.addItem) {
-                items.push(this.options.addItem);
-            }
-
-            return this.render(items).show();
-        },
-
-        matcher: function (item) {
-            var it = this.displayText(item);
-            return ~it.toLowerCase().indexOf(this.query.toLowerCase());
-        },
-
-        sorter: function (items) {
-            var beginswith = [];
-            var caseSensitive = [];
-            var caseInsensitive = [];
-            var item;
-
-            while ((item = items.shift())) {
-                var it = this.displayText(item);
-                if (!it.toLowerCase().indexOf(this.query.toLowerCase())) {
-                    beginswith.push(item);
-                } else if (~it.indexOf(this.query)) {
-                    caseSensitive.push(item);
-                } else {
-                    caseInsensitive.push(item);
-                }
-            }
-
-            return beginswith.concat(caseSensitive, caseInsensitive);
-        },
-
-        highlighter: function (item) {
-            var text = this.query;
-            if (text === '') {
-                return item;
-            }
-            var matches = item.match(/(>)([^<]*)(<)/g);
-            var first = [];
-            var second = [];
-            var i;
-            if (matches && matches.length) {
-                // html
-                for (i = 0; i < matches.length; ++i) {
-                    if (matches[i].length > 2) {// escape '><'
-                        first.push(matches[i]);
-                    }
-                }
-            } else {
-                // text
-                first = [];
-                first.push(item);
-            }
-            text = text.replace((/[\(\)\/\.\*\+\?\[\]]/g), function (mat) {
-                return '\\' + mat;
-            });
-            var reg = new RegExp(text, 'g');
-            var m;
-            for (i = 0; i < first.length; ++i) {
-                m = first[i].match(reg);
-                if (m && m.length > 0) {// find all text nodes matches
-                    second.push(first[i]);
-                }
-            }
-            for (i = 0; i < second.length; ++i) {
-                item = item.replace(second[i], second[i].replace(reg, '<strong>$&</strong>'));
-            }
-            return item;
-        },
-
-        render: function (items) {
-            var that = this;
-            var self = this;
-            var activeFound = false;
-            var data = [];
-            var _category = that.options.separator;
-
-            $.each(items, function (key, value) {
-                // inject separator
-                if (key > 0 && value[_category] !== items[key - 1][_category]) {
-                    data.push({
-                        __type: 'divider'
-                    });
-                }
-
-                if (this.showCategoryHeader) {
-                    // inject category header
-                    if (value[_category] && (key === 0 || value[_category] !== items[key - 1][_category])) {
-                        data.push({
-                            __type: 'category',
-                            name: value[_category]
-                        });
-                    }
-                }
-
-                data.push(value);
-            });
-
-            items = $(data).map(function (i, item) {
-                    if ((item.__type || false) == 'category'){
-                        return $(that.options.headerHtml || that.theme.headerHtml).text(item.name)[0];
-                    }
-
-                    if ((item.__type || false) == 'divider'){
-                        return $(that.options.headerDivider || that.theme.headerDivider)[0];
-                    }
-
-                    var text = self.displayText(item);
-                    i = $(that.options.item || that.theme.item).data('value', item);
-                    i.find(that.options.itemContentSelector || that.theme.itemContentSelector)
-                        .addBack(that.options.itemContentSelector || that.theme.itemContentSelector)
-                        .html(that.highlighter(text, item));
-                    if(that.options.followLinkOnSelect) {
-                        i.find('a').attr('href', self.itemLink(item));
-                    }
-                    i.find('a').attr('title', self.itemTitle(item));
-                    if (text == self.$element.val()) {
-                        i.addClass('active');
-                        self.$element.data('active', item);
-                        activeFound = true;
-                    }
-                    return i[0];
-                });
-
-            if (this.autoSelect && !activeFound) {
-                items.filter(':not(.dropdown-header)').first().addClass('active');
-                this.$element.data('active', items.first().data('value'));
-            }
-            this.$menu.html(items);
-            return this;
-        },
-
-        displayText: function (item) {
-            return typeof item !== 'undefined' && typeof item.name != 'undefined' ? item.name : item;
-        },
-
-        itemLink: function (item) {
-            return null;
-        },
-
-        itemTitle: function (item) {
-            return null;
-        },
-
-        next: function (event) {
-            var active = this.$menu.find('.active').removeClass('active');
-            var next = active.next();
-
-            if (!next.length) {
-                next = $(this.$menu.find($(this.options.item || this.theme.item).prop('tagName'))[0]);
-            }
-
-            while (next.hasClass('divider') || next.hasClass('dropdown-header')) {
-                next = next.next();
-            }
-
-            next.addClass('active');
-            // added for screen reader
-            var newVal = this.updater(next.data('value'));
-            if (this.changeInputOnMove) {
-                this.$element.val(this.displayText(newVal) || newVal);
-            }
-        },
-
-        prev: function (event) {
-            var active = this.$menu.find('.active').removeClass('active');
-            var prev = active.prev();
-
-            if (!prev.length) {
-                prev = this.$menu.find($(this.options.item || this.theme.item).prop('tagName')).last();
-            }
-
-            while (prev.hasClass('divider') || prev.hasClass('dropdown-header')) {
-                prev = prev.prev();
-            }
-
-            prev.addClass('active');
-            // added for screen reader
-            var newVal = this.updater(prev.data('value'));
-            if (this.changeInputOnMove) {
-                this.$element.val(this.displayText(newVal) || newVal);
-            }
-        },
-
-        listen: function () {
-            this.$element
-                .on('focus.bootstrap3Typeahead', $.proxy(this.focus, this))
-                .on('blur.bootstrap3Typeahead', $.proxy(this.blur, this))
-                .on('keypress.bootstrap3Typeahead', $.proxy(this.keypress, this))
-                .on('propertychange.bootstrap3Typeahead input.bootstrap3Typeahead', $.proxy(this.input, this))
-                .on('keyup.bootstrap3Typeahead', $.proxy(this.keyup, this));
-
-            if (this.eventSupported('keydown')) {
-                this.$element.on('keydown.bootstrap3Typeahead', $.proxy(this.keydown, this));
-            }
-
-            var itemTagName = $(this.options.item || this.theme.item).prop('tagName');
-            if ('ontouchstart' in document.documentElement && 'onmousemove' in document.documentElement) {
-		        this.$menu
-		            .on('touchstart', itemTagName, $.proxy(this.touchstart, this))
-		            .on('touchend', itemTagName, $.proxy(this.click, this))
-		            .on('click', $.proxy(this.click, this))
-		            .on('mouseenter', itemTagName, $.proxy(this.mouseenter, this))
-		            .on('mouseleave', itemTagName, $.proxy(this.mouseleave, this))
-		            .on('mousedown', $.proxy(this.mousedown,this));
-	        } else if ('ontouchstart' in document.documentElement) {
-		        this.$menu
-		            .on('touchstart', itemTagName, $.proxy(this.touchstart, this))
-		            .on('touchend', itemTagName, $.proxy(this.click, this));
-	        } else {
-                this.$menu
-                    .on('click', $.proxy(this.click, this))
-                    .on('mouseenter', itemTagName, $.proxy(this.mouseenter, this))
-                    .on('mouseleave', itemTagName, $.proxy(this.mouseleave, this))
-                    .on('mousedown', $.proxy(this.mousedown, this));
-            }
-        },
-
-        destroy: function () {
-            this.$element.data('typeahead', null);
-            this.$element.data('active', null);
-            this.$element
-                .unbind('focus.bootstrap3Typeahead')
-                .unbind('blur.bootstrap3Typeahead')
-                .unbind('keypress.bootstrap3Typeahead')
-                .unbind('propertychange.bootstrap3Typeahead input.bootstrap3Typeahead')
-                .unbind('keyup.bootstrap3Typeahead');
-
-            if (this.eventSupported('keydown')) {
-                this.$element.unbind('keydown.bootstrap3-typeahead');
-            }
-
-            this.$menu.remove();
-            this.destroyed = true;
-        },
-
-        eventSupported: function (eventName) {
-            var isSupported = eventName in this.$element;
-            if (!isSupported) {
-                this.$element.setAttribute(eventName, 'return;');
-                isSupported = typeof this.$element[eventName] === 'function';
-            }
-            return isSupported;
-        },
-
-        move: function (e) {
-            if (!this.shown) {
-                return;
-            }
-
-            switch (e.keyCode) {
-                case 9: // tab
-                case 13: // enter
-                case 27: // escape
-                    e.preventDefault();
-                    break;
-
-                case 38: // up arrow
-                    // with the shiftKey (this is actually the left parenthesis)
-                    if (e.shiftKey) {
-                        return;
-                    }
-                    e.preventDefault();
-                    this.prev();
-                    break;
-
-                case 40: // down arrow
-                    // with the shiftKey (this is actually the right parenthesis)
-                    if (e.shiftKey) {
-                        return;
-                    }
-                    e.preventDefault();
-                    this.next();
-                    break;
-            }
-        },
-
-        keydown: function (e) {
-            /**
-             * Prevent to make an ajax call while copying and pasting.
-             *
-             * @author Simone Sacchi
-             * @version 2018/01/18
-             */
-            if (e.keyCode === 17) { // ctrl
-                return;
-            }
-            this.keyPressed = true;
-            this.suppressKeyPressRepeat = ~$.inArray(e.keyCode, [40, 38, 9, 13, 27]);
-            if (!this.shown && e.keyCode == 40) {
-                this.lookup();
-            } else {
-                this.move(e);
-            }
-        },
-
-        keypress: function (e) {
-            if (this.suppressKeyPressRepeat) {
-                return;
-            }
-            this.move(e);
-        },
-
-        input: function (e) {
-            // This is a fixed for IE10/11 that fires the input event when a placehoder is changed
-            // (https://connect.microsoft.com/IE/feedback/details/810538/ie-11-fires-input-event-on-focus)
-            var currentValue = this.$element.val() || this.$element.text();
-            if (this.value !== currentValue) {
-                this.value = currentValue;
-                this.lookup();
-            }
-        },
-
-        keyup: function (e) {
-            if (this.destroyed) {
-                return;
-            }
-            switch (e.keyCode) {
-                case 40: // down arrow
-                case 38: // up arrow
-                case 16: // shift
-                case 17: // ctrl
-                case 18: // alt
-                    break;
-
-                case 9: // tab
-                    if (!this.shown || (this.showHintOnFocus && !this.keyPressed)) {
-                        return;
-                    }
-                    this.select();
-                    break;
-                case 13: // enter
-                    if (!this.shown) {
-                        return;
-                    }
-                    this.select();
-                    break;
-
-                case 27: // escape
-                    if (!this.shown) {
-                        return;
-                    }
-                    this.hide();
-                    break;
-            }
-
-        },
-
-        focus: function (e) {
-            if (!this.focused) {
-                this.focused = true;
-                this.keyPressed = false;
-                if (this.options.showHintOnFocus && this.skipShowHintOnFocus !== true) {
-                    if (this.options.showHintOnFocus === 'all') {
-                        this.lookup('');
-                    } else {
-                        this.lookup();
-                    }
-                }
-            }
-            if (this.skipShowHintOnFocus) {
-                this.skipShowHintOnFocus = false;
-            }
-        },
-
-        blur: function (e) {
-            if (!this.mousedover && !this.mouseddown && this.shown) {
-                if (this.selectOnBlur) {
-                    this.select();
-                }
-                this.hide();
-                this.focused = false;
-                this.keyPressed = false;
-            } else if (this.mouseddown) {
-                // This is for IE that blurs the input when user clicks on scroll.
-                // We set the focus back on the input and prevent the lookup to occur again
-                this.skipShowHintOnFocus = true;
-                this.$element.focus();
-                this.mouseddown = false;
-            }
-        },
-
-        click: function (e) {
-            e.preventDefault();
-            this.skipShowHintOnFocus = true;
-            this.select();
-            this.$element.focus();
-            this.hide();
-        },
-
-        mouseenter: function (e) {
-            this.mousedover = true;
-            this.$menu.find('.active').removeClass('active');
-            $(e.currentTarget).addClass('active');
-        },
-
-        mouseleave: function (e) {
-            this.mousedover = false;
-            if (!this.focused && this.shown) {
-                this.hide();
-            }
-        },
-
-        /**
-         * We track the mousedown for IE. When clicking on the menu scrollbar, IE makes the input blur thus hiding the menu.
-         */
-        mousedown: function (e) {
-            this.mouseddown = true;
-            this.$menu.one('mouseup', function (e) {
-                // IE won't fire this, but FF and Chrome will so we reset our flag for them here
-                this.mouseddown = false;
-            }.bind(this));
-        },
-
-        touchstart: function (e) {
-            e.preventDefault();
-            this.$menu.find('.active').removeClass('active');
-            $(e.currentTarget).addClass('active');
-        },
-
-        touchend: function (e) {
-            e.preventDefault();
-            this.select();
-            this.$element.focus();
-        }
-
-    };
-
-
-    /* TYPEAHEAD PLUGIN DEFINITION
-     * =========================== */
-
-    var old = $.fn.typeahead;
-
-    $.fn.typeahead = function (option) {
-        var arg = arguments;
-        if (typeof option == 'string' && option == 'getActive') {
-            return this.data('active');
-        }
-        return this.each(function () {
-            var $this = $(this);
-            var data = $this.data('typeahead');
-            var options = typeof option == 'object' && option;
-            if (!data) {
-                $this.data('typeahead', (data = new Typeahead(this, options)));
-            }
-            if (typeof option == 'string' && data[option]) {
-                if (arg.length > 1) {
-                    data[option].apply(data, Array.prototype.slice.call(arg, 1));
-                } else {
-                    data[option]();
-                }
-            }
-        });
-    };
-
-    Typeahead.defaults = {
-        source: [],
-        items: 8,
-        minLength: 1,
-        scrollHeight: 0,
-        autoSelect: true,
-        afterSelect: $.noop,
-        afterEmptySelect: $.noop,
-        addItem: false,
-        followLinkOnSelect: false,
-        delay: 0,
-        separator: 'category',
-        changeInputOnSelect: true,
-        changeInputOnMove: true,
-        openLinkInNewTab: false,
-        selectOnBlur: true,
-        showCategoryHeader: true,
-        theme: "bootstrap3",
-        themes: {
-        bootstrap3: {
-            menu: '<ul class="typeahead dropdown-menu" role="listbox"></ul>',
-            item: '<li><a class="dropdown-item" href="#" role="option"></a></li>',
-            itemContentSelector: "a",
-            headerHtml: '<li class="dropdown-header"></li>',
-            headerDivider: '<li class="divider" role="separator"></li>'
-        },
-        bootstrap4: {
-            menu: '<div class="typeahead dropdown-menu" role="listbox"></div>',
-            item: '<button class="dropdown-item" role="option"></button>',
-            itemContentSelector: '.dropdown-item',
-            headerHtml: '<h6 class="dropdown-header"></h6>',
-            headerDivider: '<div class="dropdown-divider"></div>'
-        }
-    }
-};
-
-    $.fn.typeahead.Constructor = Typeahead;
-
-    /* TYPEAHEAD NO CONFLICT
-     * =================== */
-
-    $.fn.typeahead.noConflict = function () {
-        $.fn.typeahead = old;
-        return this;
-    };
-
-
-    /* TYPEAHEAD DATA-API
-     * ================== */
-
-    $(document).on('focus.typeahead.data-api', '[data-provide="typeahead"]', function (e) {
-        var $this = $(this);
-        if ($this.data('typeahead')) {
-            return;
-        }
-        $this.typeahead($this.data());
-    });
-
-}));

+ 0 - 185
ruoyi-admin/src/main/resources/static/ajax/libs/validate/jquery.validate.extend.js

@@ -1,185 +0,0 @@
-/*this is basic form validation using for validation person's basic information author:Clara Guo data:2017/07/20*/
-$(document).ready(function(){
-	$.validator.setDefaults({       
-		  submitHandler: function(form) {    
-		 		form.submit();    
-		}       
-	});  
-	//手机号码验证身份证正则合并:(^\d{15}$)|(^\d{17}([0-9]|X)$)
-	jQuery.validator.addMethod("isPhone",function(value,element){
-		var length = value.length;
-		var phone=/^1[3-9]\d{9}$/;
-		return this.optional(element)||(length == 11 && phone.test(value));
-	},"请填写正确的11位手机号");
-	//电话号码验证
-	jQuery.validator.addMethod("isTel",function(value,element){
-		var tel = /^(0\d{2,3}-)?\d{7,8}$/g;//区号3,4位,号码7,8位
-		return this.optional(element) || (tel.test(value));
-	},"请填写正确的座机号码");
-	//姓名校验
-	jQuery.validator.addMethod("isName",function(value,element){
-		var name=/^[\u4e00-\u9fa5]{2,6}$/;
-		return this.optional(element) || (name.test(value));
-	},"姓名只能用汉字,长度2-4位");
-	//校验用户名
-	jQuery.validator.addMethod("isUserName",function(value,element){
-		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))$/;
-		return this.optional(element) || (id.test(value));
-	},"请输入正确的15或18位身份证号,末尾若为X请大写");
-	//校验二代身份证
-	jQuery.validator.addMethod("isIdentity18",function(value,element){
-		var id= /^(^\d{17}(\d|X))$/;
-		return this.optional(element) || (id.test(value));
-	},"请输入正确的18位身份证号,末尾若为X请大写");
-	//校验出生日期
-	jQuery.validator.addMethod("isBirth",function(value,element){
-		var birth = /^(19|20)\d{2}-(1[0-2]|0?[1-9])-(0?[1-9]|[1-2][0-9]|3[0-1])$/;
-		return this.optional(element) || (birth).test(value);
-	},"出生日期格式示例2000-01-01");
-	//校验IP地址
-	jQuery.validator.addMethod("isIp",function(value,element){
-		var ip = /^(?:(?:2[0-4][0-9]\.)|(?:25[0-5]\.)|(?:1[0-9][0-9]\.)|(?:[1-9][0-9]\.)|(?:[0-9]\.)){3}(?:(?:2[0-4][0-9])|(?:25[0-5])|(?:1[0-9][0-9])|(?:[1-9][0-9])|(?:[0-9]))$/;
-		return this.optional(element) || (ip).test(value);
-	},"IP地址格式示例127.0.0.1");
-	jQuery.validator.addMethod("notEqual", function(value, element, param) {
-        return value != param;
-    }, $.validator.format("输入值不允许为{0}"));
-	jQuery.validator.addMethod("gt", function(value, element, param) {
-        return value > param;
-    }, $.validator.format("输入值必须大于{0}"));
-	//校验新旧密码是否相同
-	jQuery.validator.addMethod("isdiff",function(){
-		var p1=$("#pwdOld").val();
-		var p2=$("#pwdNew").val();
-		if(p1==p2){
-			return false;
-		}else{
-			 return true;
-		}
-		});
-	//校验新密码和确认密码是否相同
-	jQuery.validator.addMethod("issame",function(){
-		var p3=$("#confirm_password").val();
-		var p4=$("#pwdNew").val();
-		if(p3==p4){
-			return true;
-		}else{
-			 return false;
-		}
-		});
-	//校验基础信息表单
-	$("#basicInfoForm").validate({
-		errorElement:'span',
-		errorClass:'help-block error-mes',
-		rules:{
-			name:{
-				required:true,
-				isName:true
-			},
-			sex:"required",
-			birth:"required",
-            mobile:{
-				required:true,
-				isPhone:true
-			},
-			email:{
-				required:true,
-				email:true
-			}
-		},
-		messages:{
-			name:{
-				required:"请输入中文姓名",
-				isName:"姓名只能为汉字"
-			},
-			sex:{
-				required:"请输入性别"
-			},
-			birth:{
-				required:"请输入出生年月"
-			},
-            mobile:{
-				required:"请输入手机号",
-				isPhone:"请填写正确的11位手机号"
-			},
-			email:{
-				required:"请输入邮箱",
-				email:"请填写正确的邮箱格式"
-			}
-		},
-	
-		errorPlacement:function(error,element){
-			element.next().remove();
-			element.closest('.gg-formGroup').append(error);
-		},
-		
-		highlight:function(element){
-			$(element).closest('.gg-formGroup').addClass('has-error has-feedback');
-		},
-		success:function(label){
-			var el = label.closest('.gg-formGroup').find("input");
-			el.next().remove();
-			label.closest('.gg-formGroup').removeClass('has-error').addClass("has-feedback has-success");
-			label.remove();
-		},
-		submitHandler:function(form){
-			alert("保存成功!");
-		}
-	});
-	
-	//校验修改密码表单
-	$("#modifyPwd").validate({
-		onfocusout: function(element) { $(element).valid()},
-		 debug:false, //表示校验通过后是否直接提交表单
-		 onkeyup:false, //表示按键松开时候监听验证
-		rules:{
-			pwdOld:{
-				required:true,
-				minlength:6
-			},
-            pwdNew:{
-			   required:true,
-			   minlength:6,
-			   isdiff:true,
-			   //issame:true,
-		   },
-			confirm_password:{
-			  required:true,
-			  minlength:6,
-			  issame:true,
-			}
-		  
-		   },
-		messages:{
-			 	pwdOld : {
-					 required:'必填',
-					 minlength:$.validator.format('密码长度要大于6')
-				},
-            	pwdNew:{
-				   required:'必填',
-				   minlength:$.validator.format('密码长度要大于6'),
-				   isdiff:'原密码与新密码不能重复',
-				  
-			   },
-				confirm_password:{
-				   required:'必填',
-				   minlength:$.validator.format('密码长度要大于6'),
-				   issame:'新密码要与确认新密码一致',
-				}
-		
-		},
-		errorElement:"mes",
-		errorClass:"gg-star",
-		errorPlacement: function(error, element) 
-		{ 
-			element.closest('.gg-formGroup').append(error);
-
-		}
-	});
-});

+ 0 - 25
ruoyi-admin/src/main/resources/static/ajax/libs/validate/messages_zh.js

@@ -1,25 +0,0 @@
-/*
- * Translated default messages for the jQuery validation plugin.
- * Locale: ZH (Chinese, 中文 (Zhōngwén), 汉语, 漢語)
- */
-var icon = "<i class='fa fa-times-circle'></i>  ";
-$.extend($.validator.messages, {
-	required: icon + "必填",
-	remote: icon + "请修正此字段",
-	email: icon + "请输入有效的电子邮件",
-	url: icon + "请输入有效的网址",
-	date: icon + "请输入有效的日期",
-	dateISO: icon + "请输入有效的日期 (YYYY-MM-DD)",
-	number: icon + "请输入有效的数字",
-	digits: icon + "只能输入数字",
-	creditcard: icon + "请输入有效的信用卡号码",
-	equalTo: icon + "你的输入不相同",
-	extension: icon + "请输入有效的后缀",
-	maxlength: $.validator.format(icon + "最多可以输入 {0} 个字符"),
-	minlength: $.validator.format(icon + "最少要输入 {0} 个字符"),
-	rangelength: $.validator.format(icon + "请输入长度在 {0} 到 {1} 之间的字符串"),
-	range: $.validator.format(icon + "请输入范围在 {0} 到 {1} 之间的数值"),
-	step: $.validator.format(icon + "请输入 {0} 的整数倍值" ),
-	max: $.validator.format(icon + "请输入不大于 {0} 的数值"),
-	min: $.validator.format(icon + "请输入不小于 {0} 的数值")
-});

ファイルの差分が大きいため隠しています
+ 0 - 12
ruoyi-admin/src/main/resources/static/css/animate.min.css


ファイルの差分が大きいため隠しています
+ 0 - 5
ruoyi-admin/src/main/resources/static/css/bootstrap.min.css


ファイルの差分が大きいため隠しています
+ 0 - 4
ruoyi-admin/src/main/resources/static/css/font-awesome.min.css


+ 0 - 161
ruoyi-admin/src/main/resources/static/css/login.css

@@ -1,161 +0,0 @@
-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 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
-}
-}
-/*
-登录界面check样式
-*/
-.checkbox-custom {
-    position: relative;
-    padding: 0 15px 0 25px;
-    margin-bottom: 7px;
-    display: inline-block;
-}
-/*
-将初始的checkbox的样式改变
-*/
-.checkbox-custom input[type="checkbox"] {
-    opacity: 0; /*将初始的checkbox隐藏起来*/
-    position: absolute;
-    cursor: pointer;
-    z-index: 2;
-    margin: -6px 0 0 0;
-    top: 50%;
-    left: 3px;
-}
-/*
-设计新的checkbox,位置
-*/
-.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,将新的checkbox关联起来
-*/
-.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; /*改变了rememberme的字体*/
-    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;
-}

+ 0 - 0
ruoyi-admin/src/main/resources/static/css/skins.css


この差分においてかなりの量のファイルが変更されているため、一部のファイルを表示していません