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


برخی فایل ها در این مقایسه diff نمایش داده نمی شوند زیرا تعداد فایل ها بسیار زیاد است