bihuisong 6 mesi fa
parent
commit
7a638d07e9
100 ha cambiato i file con 0 aggiunte e 38785 eliminazioni
  1. 0 46
      .gitignore
  2. 0 20
      LICENSE
  3. 0 12
      bin/clean.bat
  4. 0 12
      bin/package.bat
  5. 0 14
      bin/run.bat
  6. BIN
      doc/若依环境使用手册.docx
  7. 0 290
      pom.xml
  8. 0 67
      ry.bat
  9. 0 86
      ry.sh
  10. 0 152
      sql/quartz.sql
  11. 0 4896
      sql/ruoyi.html
  12. 0 4851
      sql/ruoyi.pdm
  13. 0 990
      sql/ry_20240601.sql
  14. 0 135
      zhjq-admin/pom.xml
  15. 0 16
      zhjq-admin/src/main/java/com/zhjq/RuoYiServletInitializer.java
  16. 0 19
      zhjq-admin/src/main/java/com/zhjq/ZHJQApplication.java
  17. 0 144
      zhjq-admin/src/main/java/com/zhjq/web/controller/common/CommonController.java
  18. 0 88
      zhjq-admin/src/main/java/com/zhjq/web/controller/demo/controller/DemoDialogController.java
  19. 0 371
      zhjq-admin/src/main/java/com/zhjq/web/controller/demo/controller/DemoFormController.java
  20. 0 32
      zhjq-admin/src/main/java/com/zhjq/web/controller/demo/controller/DemoIconController.java
  21. 0 282
      zhjq-admin/src/main/java/com/zhjq/web/controller/demo/controller/DemoOperateController.java
  22. 0 48
      zhjq-admin/src/main/java/com/zhjq/web/controller/demo/controller/DemoReportController.java
  23. 0 938
      zhjq-admin/src/main/java/com/zhjq/web/controller/demo/controller/DemoTableController.java
  24. 0 104
      zhjq-admin/src/main/java/com/zhjq/web/controller/demo/domain/CustomerModel.java
  25. 0 89
      zhjq-admin/src/main/java/com/zhjq/web/controller/demo/domain/GoodsModel.java
  26. 0 129
      zhjq-admin/src/main/java/com/zhjq/web/controller/demo/domain/UserOperateModel.java
  27. 0 82
      zhjq-admin/src/main/java/com/zhjq/web/controller/monitor/CacheController.java
  28. 0 24
      zhjq-admin/src/main/java/com/zhjq/web/controller/monitor/DruidController.java
  29. 0 29
      zhjq-admin/src/main/java/com/zhjq/web/controller/monitor/ServerController.java
  30. 0 88
      zhjq-admin/src/main/java/com/zhjq/web/controller/monitor/SysLogininforController.java
  31. 0 80
      zhjq-admin/src/main/java/com/zhjq/web/controller/monitor/SysOperlogController.java
  32. 0 81
      zhjq-admin/src/main/java/com/zhjq/web/controller/monitor/SysUserOnlineController.java
  33. 0 79
      zhjq-admin/src/main/java/com/zhjq/web/controller/system/SysCaptchaController.java
  34. 0 141
      zhjq-admin/src/main/java/com/zhjq/web/controller/system/SysConfigController.java
  35. 0 163
      zhjq-admin/src/main/java/com/zhjq/web/controller/system/SysDeptController.java
  36. 0 109
      zhjq-admin/src/main/java/com/zhjq/web/controller/system/SysDictDataController.java
  37. 0 169
      zhjq-admin/src/main/java/com/zhjq/web/controller/system/SysDictTypeController.java
  38. 0 158
      zhjq-admin/src/main/java/com/zhjq/web/controller/system/SysIndexController.java
  39. 0 74
      zhjq-admin/src/main/java/com/zhjq/web/controller/system/SysLoginController.java
  40. 0 174
      zhjq-admin/src/main/java/com/zhjq/web/controller/system/SysMenuController.java
  41. 0 112
      zhjq-admin/src/main/java/com/zhjq/web/controller/system/SysNoticeController.java
  42. 0 139
      zhjq-admin/src/main/java/com/zhjq/web/controller/system/SysPostController.java
  43. 0 156
      zhjq-admin/src/main/java/com/zhjq/web/controller/system/SysProfileController.java
  44. 0 42
      zhjq-admin/src/main/java/com/zhjq/web/controller/system/SysRegisterController.java
  45. 0 289
      zhjq-admin/src/main/java/com/zhjq/web/controller/system/SysRoleController.java
  46. 0 315
      zhjq-admin/src/main/java/com/zhjq/web/controller/system/SysUserController.java
  47. 0 24
      zhjq-admin/src/main/java/com/zhjq/web/controller/tool/BuildController.java
  48. 0 22
      zhjq-admin/src/main/java/com/zhjq/web/controller/tool/SwaggerController.java
  49. 0 147
      zhjq-admin/src/main/java/com/zhjq/web/controller/tool/TestController.java
  50. 0 66
      zhjq-admin/src/main/java/com/zhjq/web/core/config/SwaggerConfig.java
  51. 0 61
      zhjq-admin/src/main/resources/application-druid.yml
  52. 0 142
      zhjq-admin/src/main/resources/application.yml
  53. 0 2
      zhjq-admin/src/main/resources/banner.txt
  54. 0 91
      zhjq-admin/src/main/resources/ehcache/ehcache-shiro.xml
  55. 0 93
      zhjq-admin/src/main/resources/logback.xml
  56. 0 20
      zhjq-admin/src/main/resources/mybatis/mybatis-config.xml
  57. 0 600
      zhjq-admin/src/main/resources/static/ajax/libs/beautifyhtml/beautifyhtml.js
  58. 0 618
      zhjq-admin/src/main/resources/static/ajax/libs/blockUI/jquery.blockUI.js
  59. 0 688
      zhjq-admin/src/main/resources/static/ajax/libs/bootstrap-fileinput/fileinput.css
  60. 0 6681
      zhjq-admin/src/main/resources/static/ajax/libs/bootstrap-fileinput/fileinput.js
  61. 0 13
      zhjq-admin/src/main/resources/static/ajax/libs/bootstrap-fileinput/fileinput.min.css
  62. 0 11
      zhjq-admin/src/main/resources/static/ajax/libs/bootstrap-fileinput/fileinput.min.js
  63. BIN
      zhjq-admin/src/main/resources/static/ajax/libs/bootstrap-fileinput/loading-sm.gif
  64. BIN
      zhjq-admin/src/main/resources/static/ajax/libs/bootstrap-fileinput/loading.gif
  65. 0 536
      zhjq-admin/src/main/resources/static/ajax/libs/bootstrap-select/bootstrap-select.css
  66. 0 3257
      zhjq-admin/src/main/resources/static/ajax/libs/bootstrap-select/bootstrap-select.js
  67. 0 6
      zhjq-admin/src/main/resources/static/ajax/libs/bootstrap-select/bootstrap-select.min.css
  68. 0 8
      zhjq-admin/src/main/resources/static/ajax/libs/bootstrap-select/bootstrap-select.min.js
  69. 0 6
      zhjq-admin/src/main/resources/static/ajax/libs/bootstrap-table/bootstrap-table.min.css
  70. 0 6
      zhjq-admin/src/main/resources/static/ajax/libs/bootstrap-table/bootstrap-table.min.js
  71. 0 95
      zhjq-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/auto-refresh/bootstrap-table-auto-refresh.js
  72. 0 5
      zhjq-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/columns/bootstrap-table-fixed-columns.js
  73. 0 606
      zhjq-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/cookie/bootstrap-table-cookie.js
  74. 0 135
      zhjq-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/custom-view/bootstrap-table-custom-view.js
  75. 0 722
      zhjq-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/editable/bootstrap-editable.css
  76. 0 7
      zhjq-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/editable/bootstrap-editable.min.js
  77. 0 189
      zhjq-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/editable/bootstrap-table-editable.js
  78. BIN
      zhjq-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/editable/clear.png
  79. BIN
      zhjq-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/editable/loading.gif
  80. 0 335
      zhjq-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/export/bootstrap-table-export.js
  81. 0 92
      zhjq-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/export/tableExport.min.js
  82. 0 123
      zhjq-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/mobile/bootstrap-table-mobile.js
  83. 0 312
      zhjq-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/print/bootstrap-table-print.js
  84. 0 212
      zhjq-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/reorder-columns/bootstrap-table-reorder-columns.js
  85. 0 22
      zhjq-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/reorder-columns/jquery.dragtable.js
  86. 0 146
      zhjq-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/reorder-rows/bootstrap-table-reorder-rows.js
  87. 0 600
      zhjq-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/reorder-rows/jquery.tablednd.js
  88. 0 68
      zhjq-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/resizable/bootstrap-table-resizable.js
  89. 0 8
      zhjq-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/resizable/jquery.resizableColumns.min.js
  90. 0 1085
      zhjq-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/tree/bootstrap-table-tree.js
  91. 0 5
      zhjq-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/tree/bootstrap-table-tree.min.js
  92. 0 109
      zhjq-admin/src/main/resources/static/ajax/libs/bootstrap-table/locale/bootstrap-table-zh-CN.js
  93. 0 1
      zhjq-admin/src/main/resources/static/ajax/libs/bootstrap-table/locale/bootstrap-table-zh-CN.min.js
  94. 0 304
      zhjq-admin/src/main/resources/static/ajax/libs/cropper/cropper.css
  95. 0 3678
      zhjq-admin/src/main/resources/static/ajax/libs/cropper/cropper.js
  96. 0 9
      zhjq-admin/src/main/resources/static/ajax/libs/cropper/cropper.min.css
  97. 0 10
      zhjq-admin/src/main/resources/static/ajax/libs/cropper/cropper.min.js
  98. 0 463
      zhjq-admin/src/main/resources/static/ajax/libs/cxselect/jquery.cxselect.js
  99. 0 11
      zhjq-admin/src/main/resources/static/ajax/libs/cxselect/jquery.cxselect.min.js
  100. 0 0
      zhjq-admin/src/main/resources/static/ajax/libs/datapicker/bootstrap-datetimepicker.css

+ 0 - 46
.gitignore

@@ -1,46 +0,0 @@
-######################################################################
-# Build Tools
-
-.gradle
-/build/
-!gradle/wrapper/gradle-wrapper.jar
-
-target/
-!.mvn/wrapper/maven-wrapper.jar
-
-######################################################################
-# IDE
-
-### STS ###
-.apt_generated
-.classpath
-.factorypath
-.project
-.settings
-.springBeans
-
-### IntelliJ IDEA ###
-.idea
-*.iws
-*.iml
-*.ipr
-
-### JRebel ###
-rebel.xml
-### NetBeans ###
-nbproject/private/
-build/*
-nbbuild/
-dist/
-nbdist/
-.nb-gradle/
-
-######################################################################
-# Others
-*.log
-*.xml.versionsBackup
-*.swp
-
-!*/build/*.java
-!*/build/*.html
-!*/build/*.xml

+ 0 - 20
LICENSE

@@ -1,20 +0,0 @@
-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
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+ 0 - 12
bin/clean.bat

@@ -1,12 +0,0 @@
-@echo off
-echo.
-echo [信息] 清理工程target生成路径。
-echo.
-
-%~d0
-cd %~dp0
-
-cd ..
-call mvn clean
-
-pause

+ 0 - 12
bin/package.bat

@@ -1,12 +0,0 @@
-@echo off
-echo.
-echo [信息] 打包Web工程,生成war/jar包文件。
-echo.
-
-%~d0
-cd %~dp0
-
-cd ..
-call mvn clean package -Dmaven.test.skip=true
-
-pause

+ 0 - 14
bin/run.bat

@@ -1,14 +0,0 @@
-@echo off
-echo.
-echo [信息] 使用Jar命令运行Web工程。
-echo.
-
-cd %~dp0
-cd ../zhjq-admin/target
-
-set JAVA_OPTS=-Xms256m -Xmx1024m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m
-
-java -jar %JAVA_OPTS% zhjq-admin.jar
-
-cd bin
-pause

BIN
doc/若依环境使用手册.docx


+ 0 - 290
pom.xml

@@ -1,290 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
-         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.zhjq</groupId>
-    <artifactId>zhjq</artifactId>
-    <version>4.7.9</version>
-
-    <name>zhjq</name>
-    <url>http://www.ruoyi.vip</url>
-    <description>智慧景区</description>
-
-    <properties>
-        <zhjq.version>4.7.9</zhjq.version>
-        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
-        <java.version>1.8</java.version>
-        <maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>
-        <spring-boot.version>2.5.15</spring-boot.version>
-        <shiro.version>1.13.0</shiro.version>
-        <thymeleaf.extras.shiro.version>2.1.0</thymeleaf.extras.shiro.version>
-        <druid.version>1.2.23</druid.version>
-        <bitwalker.version>1.21</bitwalker.version>
-        <kaptcha.version>2.3.3</kaptcha.version>
-        <swagger.version>3.0.0</swagger.version>
-        <pagehelper.boot.version>1.4.7</pagehelper.boot.version>
-        <fastjson.version>1.2.83</fastjson.version>
-        <oshi.version>6.6.5</oshi.version>
-        <commons.io.version>2.16.1</commons.io.version>
-        <poi.version>4.1.2</poi.version>
-        <velocity.version>2.3</velocity.version>
-        <!-- override dependency version -->
-        <tomcat.version>9.0.96</tomcat.version>
-        <logback.version>1.2.13</logback.version>
-        <spring-framework.version>5.3.39</spring-framework.version>
-    </properties>
-
-    <!-- 依赖声明 -->
-    <dependencyManagement>
-        <dependencies>
-
-            <!-- 覆盖SpringFramework的依赖配置-->
-            <dependency>
-                <groupId>org.springframework</groupId>
-                <artifactId>spring-framework-bom</artifactId>
-                <version>${spring-framework.version}</version>
-                <type>pom</type>
-                <scope>import</scope>
-            </dependency>
-
-            <!-- SpringBoot的依赖配置-->
-            <dependency>
-                <groupId>org.springframework.boot</groupId>
-                <artifactId>spring-boot-dependencies</artifactId>
-                <version>${spring-boot.version}</version>
-                <type>pom</type>
-                <scope>import</scope>
-            </dependency>
-
-            <!-- 覆盖logback的依赖配置-->
-            <dependency>
-                <groupId>ch.qos.logback</groupId>
-                <artifactId>logback-core</artifactId>
-                <version>${logback.version}</version>
-            </dependency>
-
-            <dependency>
-                <groupId>ch.qos.logback</groupId>
-                <artifactId>logback-classic</artifactId>
-                <version>${logback.version}</version>
-            </dependency>
-
-            <!-- 覆盖tomcat的依赖配置-->
-            <dependency>
-                <groupId>org.apache.tomcat.embed</groupId>
-                <artifactId>tomcat-embed-core</artifactId>
-                <version>${tomcat.version}</version>
-            </dependency>
-
-            <dependency>
-                <groupId>org.apache.tomcat.embed</groupId>
-                <artifactId>tomcat-embed-el</artifactId>
-                <version>${tomcat.version}</version>
-            </dependency>
-
-            <dependency>
-                <groupId>org.apache.tomcat.embed</groupId>
-                <artifactId>tomcat-embed-websocket</artifactId>
-                <version>${tomcat.version}</version>
-            </dependency>
-
-            <!-- 阿里数据库连接池 -->
-            <dependency>
-                <groupId>com.alibaba</groupId>
-                <artifactId>druid-spring-boot-starter</artifactId>
-                <version>${druid.version}</version>
-            </dependency>
-
-            <!-- 验证码 -->
-            <dependency>
-                <groupId>pro.fessional</groupId>
-                <artifactId>kaptcha</artifactId>
-                <version>${kaptcha.version}</version>
-            </dependency>
-
-            <!-- Shiro核心框架 -->
-            <dependency>
-                <groupId>org.apache.shiro</groupId>
-                <artifactId>shiro-core</artifactId>
-                <version>${shiro.version}</version>
-            </dependency>
-
-            <!-- Shiro使用Spring框架 -->
-            <dependency>
-                <groupId>org.apache.shiro</groupId>
-                <artifactId>shiro-spring</artifactId>
-                <version>${shiro.version}</version>
-            </dependency>
-
-            <!-- Shiro使用EhCache缓存框架 -->
-            <dependency>
-                <groupId>org.apache.shiro</groupId>
-                <artifactId>shiro-ehcache</artifactId>
-                <version>${shiro.version}</version>
-            </dependency>
-
-            <!-- thymeleaf模板引擎和shiro框架的整合 -->
-            <dependency>
-                <groupId>com.github.theborakompanioni</groupId>
-                <artifactId>thymeleaf-extras-shiro</artifactId>
-                <version>${thymeleaf.extras.shiro.version}</version>
-            </dependency>
-
-            <!-- 解析客户端操作系统、浏览器等 -->
-            <dependency>
-                <groupId>eu.bitwalker</groupId>
-                <artifactId>UserAgentUtils</artifactId>
-                <version>${bitwalker.version}</version>
-            </dependency>
-
-            <!-- pagehelper 分页插件 -->
-            <dependency>
-                <groupId>com.github.pagehelper</groupId>
-                <artifactId>pagehelper-spring-boot-starter</artifactId>
-                <version>${pagehelper.boot.version}</version>
-            </dependency>
-
-            <!-- 获取系统信息 -->
-            <dependency>
-                <groupId>com.github.oshi</groupId>
-                <artifactId>oshi-core</artifactId>
-                <version>${oshi.version}</version>
-            </dependency>
-
-            <!-- Swagger3依赖 -->
-            <dependency>
-                <groupId>io.springfox</groupId>
-                <artifactId>springfox-boot-starter</artifactId>
-                <version>${swagger.version}</version>
-                <exclusions>
-                    <exclusion>
-                        <groupId>io.swagger</groupId>
-                        <artifactId>swagger-models</artifactId>
-                    </exclusion>
-                </exclusions>
-            </dependency>
-
-            <!-- io常用工具类 -->
-            <dependency>
-                <groupId>commons-io</groupId>
-                <artifactId>commons-io</artifactId>
-                <version>${commons.io.version}</version>
-            </dependency>
-
-            <!-- excel工具 -->
-            <dependency>
-                <groupId>org.apache.poi</groupId>
-                <artifactId>poi-ooxml</artifactId>
-                <version>${poi.version}</version>
-            </dependency>
-
-            <!-- velocity代码生成使用模板 -->
-            <dependency>
-                <groupId>org.apache.velocity</groupId>
-                <artifactId>velocity-engine-core</artifactId>
-                <version>${velocity.version}</version>
-            </dependency>
-
-            <!-- 阿里JSON解析器 -->
-            <dependency>
-                <groupId>com.alibaba</groupId>
-                <artifactId>fastjson</artifactId>
-                <version>${fastjson.version}</version>
-            </dependency>
-
-            <!-- 定时任务-->
-            <dependency>
-                <groupId>com.zhjq</groupId>
-                <artifactId>zhjq-quartz</artifactId>
-                <version>${zhjq.version}</version>
-            </dependency>
-
-            <!-- 代码生成-->
-            <dependency>
-                <groupId>com.zhjq</groupId>
-                <artifactId>zhjq-generator</artifactId>
-                <version>${zhjq.version}</version>
-            </dependency>
-
-            <!-- 核心模块-->
-            <dependency>
-                <groupId>com.zhjq</groupId>
-                <artifactId>zhjq-framework</artifactId>
-                <version>${zhjq.version}</version>
-            </dependency>
-
-            <!-- 系统模块-->
-            <dependency>
-                <groupId>com.zhjq</groupId>
-                <artifactId>zhjq-system</artifactId>
-                <version>${zhjq.version}</version>
-            </dependency>
-
-            <!-- 通用工具-->
-            <dependency>
-                <groupId>com.zhjq</groupId>
-                <artifactId>zhjq-common</artifactId>
-                <version>${zhjq.version}</version>
-            </dependency>
-
-        </dependencies>
-    </dependencyManagement>
-
-    <modules>
-        <module>zhjq-admin</module>
-        <module>zhjq-framework</module>
-        <module>zhjq-system</module>
-        <module>zhjq-quartz</module>
-        <module>zhjq-generator</module>
-        <module>zhjq-common</module>
-    </modules>
-    <packaging>pom</packaging>
-
-
-    <dependencies>
-
-    </dependencies>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-compiler-plugin</artifactId>
-                <version>3.1</version>
-                <configuration>
-                    <source>${java.version}</source>
-                    <target>${java.version}</target>
-                    <encoding>${project.build.sourceEncoding}</encoding>
-                </configuration>
-            </plugin>
-        </plugins>
-    </build>
-
-    <repositories>
-        <repository>
-            <id>public</id>
-            <name>aliyun nexus</name>
-            <url>https://maven.aliyun.com/repository/public</url>
-            <releases>
-                <enabled>true</enabled>
-            </releases>
-        </repository>
-    </repositories>
-
-    <pluginRepositories>
-        <pluginRepository>
-            <id>public</id>
-            <name>aliyun nexus</name>
-            <url>https://maven.aliyun.com/repository/public</url>
-            <releases>
-                <enabled>true</enabled>
-            </releases>
-            <snapshots>
-                <enabled>false</enabled>
-            </snapshots>
-        </pluginRepository>
-    </pluginRepositories>
-
-</project>

+ 0 - 67
ry.bat

@@ -1,67 +0,0 @@
-@echo off
-
-rem jar平级目录
-set AppName=zhjq-admin.jar
-
-rem JVM参数
-set JVM_OPTS="-Dname=%AppName%  -Duser.timezone=Asia/Shanghai -Xms512m -Xmx1024m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m -XX:+HeapDumpOnOutOfMemoryError -XX:+PrintGCDateStamps  -XX:+PrintGCDetails -XX:NewRatio=1 -XX:SurvivorRatio=30 -XX:+UseParallelGC -XX:+UseParallelOldGC"
-
-
-ECHO.
-	ECHO.  [1] 启动%AppName%
-	ECHO.  [2] 关闭%AppName%
-	ECHO.  [3] 重启%AppName%
-	ECHO.  [4] 启动状态 %AppName%
-	ECHO.  [5] 退 出
-ECHO.
-
-ECHO.请输入选择项目的序号:
-set /p ID=
-	IF "%id%"=="1" GOTO start
-	IF "%id%"=="2" GOTO stop
-	IF "%id%"=="3" GOTO restart
-	IF "%id%"=="4" GOTO status
-	IF "%id%"=="5" EXIT
-PAUSE
-:start
-    for /f "usebackq tokens=1-2" %%a in (`jps -l ^| findstr %AppName%`) do (
-		set pid=%%a
-		set image_name=%%b
-	)
-	if  defined pid (
-		echo %%is running
-		PAUSE
-	)
-
-start javaw %JVM_OPTS% -jar %AppName%
-
-echo  starting……
-echo  Start %AppName% success...
-goto:eof
-
-rem 函数stop通过jps命令查找pid并结束进程
-:stop
-	for /f "usebackq tokens=1-2" %%a in (`jps -l ^| findstr %AppName%`) do (
-		set pid=%%a
-		set image_name=%%b
-	)
-	if not defined pid (echo process %AppName% does not exists) else (
-		echo prepare to kill %image_name%
-		echo start kill %pid% ...
-		rem 根据进程ID,kill进程
-		taskkill /f /pid %pid%
-	)
-goto:eof
-:restart
-	call :stop
-    call :start
-goto:eof
-:status
-	for /f "usebackq tokens=1-2" %%a in (`jps -l ^| findstr %AppName%`) do (
-		set pid=%%a
-		set image_name=%%b
-	)
-	if not defined pid (echo process %AppName% is dead ) else (
-		echo %image_name% is running
-	)
-goto:eof

+ 0 - 86
ry.sh

@@ -1,86 +0,0 @@
-#!/bin/sh
-# ./ry.sh start 启动 stop 停止 restart 重启 status 状态
-AppName=zhjq-admin.jar
-
-# JVM参数
-JVM_OPTS="-Dname=$AppName  -Duser.timezone=Asia/Shanghai -Xms512m -Xmx1024m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m -XX:+HeapDumpOnOutOfMemoryError -XX:+PrintGCDateStamps  -XX:+PrintGCDetails -XX:NewRatio=1 -XX:SurvivorRatio=30 -XX:+UseParallelGC -XX:+UseParallelOldGC"
-APP_HOME=`pwd`
-LOG_PATH=$APP_HOME/logs/$AppName.log
-
-if [ "$1" = "" ];
-then
-    echo -e "\033[0;31m 未输入操作名 \033[0m  \033[0;34m {start|stop|restart|status} \033[0m"
-    exit 1
-fi
-
-if [ "$AppName" = "" ];
-then
-    echo -e "\033[0;31m 未输入应用名 \033[0m"
-    exit 1
-fi
-
-function start()
-{
-    PID=`ps -ef |grep java|grep $AppName|grep -v grep|awk '{print $2}'`
-
-	if [ x"$PID" != x"" ]; then
-	    echo "$AppName is running..."
-	else
-		nohup java $JVM_OPTS -jar $AppName > /dev/null 2>&1 &
-		echo "Start $AppName success..."
-	fi
-}
-
-function stop()
-{
-    echo "Stop $AppName"
-
-	PID=""
-	query(){
-		PID=`ps -ef |grep java|grep $AppName|grep -v grep|awk '{print $2}'`
-	}
-
-	query
-	if [ x"$PID" != x"" ]; then
-		kill -TERM $PID
-		echo "$AppName (pid:$PID) exiting..."
-		while [ x"$PID" != x"" ]
-		do
-			sleep 1
-			query
-		done
-		echo "$AppName exited."
-	else
-		echo "$AppName already stopped."
-	fi
-}
-
-function restart()
-{
-    stop
-    sleep 2
-    start
-}
-
-function status()
-{
-    PID=`ps -ef |grep java|grep $AppName|grep -v grep|wc -l`
-    if [ $PID != 0 ];then
-        echo "$AppName is running..."
-    else
-        echo "$AppName is not running..."
-    fi
-}
-
-case $1 in
-    start)
-    start;;
-    stop)
-    stop;;
-    restart)
-    restart;;
-    status)
-    status;;
-    *)
-
-esac

+ 0 - 152
sql/quartz.sql

@@ -1,185 +0,0 @@
-DROP TABLE IF EXISTS QRTZ_FIRED_TRIGGERS;
-DROP TABLE IF EXISTS QRTZ_PAUSED_TRIGGER_GRPS;
-DROP TABLE IF EXISTS QRTZ_SCHEDULER_STATE;
-DROP TABLE IF EXISTS QRTZ_LOCKS;
-DROP TABLE IF EXISTS QRTZ_SIMPLE_TRIGGERS;
-DROP TABLE IF EXISTS QRTZ_SIMPROP_TRIGGERS;
-DROP TABLE IF EXISTS QRTZ_CRON_TRIGGERS;
-DROP TABLE IF EXISTS QRTZ_BLOB_TRIGGERS;
-DROP TABLE IF EXISTS QRTZ_TRIGGERS;
-DROP TABLE IF EXISTS QRTZ_JOB_DETAILS;
-DROP TABLE IF EXISTS QRTZ_CALENDARS;
-
-create table QRTZ_JOB_DETAILS
-(
-    sched_name        varchar(120) not null comment '调度名称',
-    job_name          varchar(200) not null comment '任务名称',
-    job_group         varchar(200) not null comment '任务组名',
-    description       varchar(250) null comment '相关介绍',
-    job_class_name    varchar(250) not null comment '执行任务类名称',
-    is_durable        varchar(1)   not null comment '是否持久化',
-    is_nonconcurrent  varchar(1)   not null comment '是否并发',
-    is_update_data    varchar(1)   not null comment '是否更新数据',
-    requests_recovery varchar(1)   not null comment '是否接受恢复执行',
-    job_data          blob null comment '存放持久化job对象',
-    primary key (sched_name, job_name, job_group)
-) engine=innodb comment = '任务详细信息表';
-
-create table QRTZ_TRIGGERS
-(
-    sched_name     varchar(120) not null comment '调度名称',
-    trigger_name   varchar(200) not null comment '触发器的名字',
-    trigger_group  varchar(200) not null comment '触发器所属组的名字',
-    job_name       varchar(200) not null comment 'qrtz_job_details表job_name的外键',
-    job_group      varchar(200) not null comment 'qrtz_job_details表job_group的外键',
-    description    varchar(250) null comment '相关介绍',
-    next_fire_time bigint(13) null comment '上一次触发时间(毫秒)',
-    prev_fire_time bigint(13) null comment '下一次触发时间(默认为-1表示不触发)',
-    priority       integer null comment '优先级',
-    trigger_state  varchar(16)  not null comment '触发器状态',
-    trigger_type   varchar(8)   not null comment '触发器的类型',
-    start_time     bigint(13) not null comment '开始时间',
-    end_time       bigint(13) null comment '结束时间',
-    calendar_name  varchar(200) null comment '日程表名称',
-    misfire_instr  smallint(2) null comment '补偿执行的策略',
-    job_data       blob null comment '存放持久化job对象',
-    primary key (sched_name, trigger_name, trigger_group),
-    foreign key (sched_name, job_name, job_group) references QRTZ_JOB_DETAILS (sched_name, job_name, job_group)
-) engine=innodb comment = '触发器详细信息表';
-
-create table QRTZ_SIMPLE_TRIGGERS
-(
-    sched_name      varchar(120) not null comment '调度名称',
-    trigger_name    varchar(200) not null comment 'qrtz_triggers表trigger_name的外键',
-    trigger_group   varchar(200) not null comment 'qrtz_triggers表trigger_group的外键',
-    repeat_count    bigint(7) not null comment '重复的次数统计',
-    repeat_interval bigint(12) not null comment '重复的间隔时间',
-    times_triggered bigint(10) not null comment '已经触发的次数',
-    primary key (sched_name, trigger_name, trigger_group),
-    foreign key (sched_name, trigger_name, trigger_group) references QRTZ_TRIGGERS (sched_name, trigger_name, trigger_group)
-) engine=innodb comment = '简单触发器的信息表';
-
-create table QRTZ_CRON_TRIGGERS
-(
-    sched_name      varchar(120) not null comment '调度名称',
-    trigger_name    varchar(200) not null comment 'qrtz_triggers表trigger_name的外键',
-    trigger_group   varchar(200) not null comment 'qrtz_triggers表trigger_group的外键',
-    cron_expression varchar(200) not null comment 'cron表达式',
-    time_zone_id    varchar(80) comment '时区',
-    primary key (sched_name, trigger_name, trigger_group),
-    foreign key (sched_name, trigger_name, trigger_group) references QRTZ_TRIGGERS (sched_name, trigger_name, trigger_group)
-) engine=innodb comment = 'Cron类型的触发器表';
-
-create table QRTZ_BLOB_TRIGGERS
-(
-    sched_name    varchar(120) not null comment '调度名称',
-    trigger_name  varchar(200) not null comment 'qrtz_triggers表trigger_name的外键',
-    trigger_group varchar(200) not null comment 'qrtz_triggers表trigger_group的外键',
-    blob_data     blob null comment '存放持久化Trigger对象',
-    primary key (sched_name, trigger_name, trigger_group),
-    foreign key (sched_name, trigger_name, trigger_group) references QRTZ_TRIGGERS (sched_name, trigger_name, trigger_group)
-) engine=innodb comment = 'Blob类型的触发器表';
-
-create table QRTZ_CALENDARS
-(
-    sched_name    varchar(120) not null comment '调度名称',
-    calendar_name varchar(200) not null comment '日历名称',
-    calendar      blob         not null comment '存放持久化calendar对象',
-    primary key (sched_name, calendar_name)
-) engine=innodb comment = '日历信息表';
-
-create table QRTZ_PAUSED_TRIGGER_GRPS
-(
-    sched_name    varchar(120) not null comment '调度名称',
-    trigger_group varchar(200) not null comment 'qrtz_triggers表trigger_group的外键',
-    primary key (sched_name, trigger_group)
-) engine=innodb comment = '暂停的触发器表';
-
-create table QRTZ_FIRED_TRIGGERS
-(
-    sched_name        varchar(120) not null comment '调度名称',
-    entry_id          varchar(95)  not null comment '调度器实例id',
-    trigger_name      varchar(200) not null comment 'qrtz_triggers表trigger_name的外键',
-    trigger_group     varchar(200) not null comment 'qrtz_triggers表trigger_group的外键',
-    instance_name     varchar(200) not null comment '调度器实例名',
-    fired_time        bigint(13) not null comment '触发的时间',
-    sched_time        bigint(13) not null comment '定时器制定的时间',
-    priority          integer      not null comment '优先级',
-    state             varchar(16)  not null comment '状态',
-    job_name          varchar(200) null comment '任务名称',
-    job_group         varchar(200) null comment '任务组名',
-    is_nonconcurrent  varchar(1) null comment '是否并发',
-    requests_recovery varchar(1) null comment '是否接受恢复执行',
-    primary key (sched_name, entry_id)
-) engine=innodb comment = '已触发的触发器表';
-
-create table QRTZ_SCHEDULER_STATE
-(
-    sched_name        varchar(120) not null comment '调度名称',
-    instance_name     varchar(200) not null comment '实例名称',
-    last_checkin_time bigint(13) not null comment '上次检查时间',
-    checkin_interval  bigint(13) not null comment '检查间隔时间',
-    primary key (sched_name, instance_name)
-) engine=innodb comment = '调度器状态表';
-
-create table QRTZ_LOCKS
-(
-    sched_name varchar(120) not null comment '调度名称',
-    lock_name  varchar(40)  not null comment '悲观锁名称',
-    primary key (sched_name, lock_name)
-) engine=innodb comment = '存储的悲观锁信息表';
-
-create table QRTZ_SIMPROP_TRIGGERS
-(
-    sched_name    varchar(120) not null comment '调度名称',
-    trigger_name  varchar(200) not null comment 'qrtz_triggers表trigger_name的外键',
-    trigger_group varchar(200) not null comment 'qrtz_triggers表trigger_group的外键',
-    str_prop_1    varchar(512) null comment 'String类型的trigger的第一个参数',
-    str_prop_2    varchar(512) null comment 'String类型的trigger的第二个参数',
-    str_prop_3    varchar(512) null comment 'String类型的trigger的第三个参数',
-    int_prop_1    int null comment 'int类型的trigger的第一个参数',
-    int_prop_2    int null comment 'int类型的trigger的第二个参数',
-    long_prop_1   bigint null comment 'long类型的trigger的第一个参数',
-    long_prop_2   bigint null comment 'long类型的trigger的第二个参数',
-    dec_prop_1    numeric(13, 4) null comment 'decimal类型的trigger的第一个参数',
-    dec_prop_2    numeric(13, 4) null comment 'decimal类型的trigger的第二个参数',
-    bool_prop_1   varchar(1) null comment 'Boolean类型的trigger的第一个参数',
-    bool_prop_2   varchar(1) null comment 'Boolean类型的trigger的第二个参数',
-    primary key (sched_name, trigger_name, trigger_group),
-    foreign key (sched_name, trigger_name, trigger_group) references QRTZ_TRIGGERS (sched_name, trigger_name, trigger_group)
-) engine=innodb comment = '同步机制的行锁表';
-
-commit;

File diff suppressed because it is too large
+ 0 - 4896
sql/ruoyi.html


File diff suppressed because it is too large
+ 0 - 4851
sql/ruoyi.pdm


File diff suppressed because it is too large
+ 0 - 990
sql/ry_20240601.sql


+ 0 - 135
zhjq-admin/pom.xml

@@ -1,135 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xmlns="http://maven.apache.org/POM/4.0.0"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <artifactId>zhjq</artifactId>
-        <groupId>com.zhjq</groupId>
-        <version>4.7.9</version>
-    </parent>
-    <modelVersion>4.0.0</modelVersion>
-    <packaging>jar</packaging>
-    <artifactId>zhjq-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.zhjq</groupId>
-            <artifactId>zhjq-framework</artifactId>
-        </dependency>
-
-        <!-- 定时任务-->
-        <dependency>
-            <groupId>com.zhjq</groupId>
-            <artifactId>zhjq-quartz</artifactId>
-        </dependency>
-
-        <!-- 代码生成-->
-        <dependency>
-            <groupId>com.zhjq</groupId>
-            <artifactId>zhjq-generator</artifactId>
-        </dependency>
-
-    </dependencies>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.springframework.boot</groupId>
-                <artifactId>spring-boot-maven-plugin</artifactId>
-                <version>2.5.15</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>**/validate/**</exclude>
-                        <exclude>**/bootstrap-table/**</exclude>
-                    </excludes>
-                </configuration>
-            </plugin> -->
-        </plugins>
-        <finalName>${project.artifactId}</finalName>
-    </build>
-
-</project>

+ 0 - 16
zhjq-admin/src/main/java/com/zhjq/RuoYiServletInitializer.java

@@ -1,16 +0,0 @@
-package com.zhjq;
-
-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(ZHJQApplication.class);
-    }
-}

+ 0 - 19
zhjq-admin/src/main/java/com/zhjq/ZHJQApplication.java

@@ -1,19 +0,0 @@
-package com.zhjq;
-
-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 ZHJQApplication {
-    public static void main(String[] args) {
-        // System.setProperty("spring.devtools.restart.enabled", "false");
-        SpringApplication.run(ZHJQApplication.class, args);
-        System.out.println("(♥◠‿◠)ノ゙  智慧景区启动成功   ლ(´ڡ`ლ)゙");
-    }
-}

+ 0 - 144
zhjq-admin/src/main/java/com/zhjq/web/controller/common/CommonController.java

@@ -1,144 +0,0 @@
-package com.zhjq.web.controller.common;
-
-import com.zhjq.common.config.RuoYiConfig;
-import com.zhjq.common.config.ServerConfig;
-import com.zhjq.common.constant.Constants;
-import com.zhjq.common.core.domain.AjaxResult;
-import com.zhjq.common.utils.StringUtils;
-import com.zhjq.common.utils.file.FileUploadUtils;
-import com.zhjq.common.utils.file.FileUtils;
-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 javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * 通用请求处理
- *
- * @author ruoyi
- */
-@Controller
-@RequestMapping("/common")
-public class CommonController {
-    private static final Logger log = LoggerFactory.getLogger(CommonController.class);
-    private static final String FILE_DELIMETER = ",";
-    @Autowired
-    private ServerConfig serverConfig;
-
-    /**
-     * 通用下载请求
-     *
-     * @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 - 88
zhjq-admin/src/main/java/com/zhjq/web/controller/demo/controller/DemoDialogController.java

@@ -1,88 +0,0 @@
-package com.zhjq.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";
-    }
-}

File diff suppressed because it is too large
+ 0 - 371
zhjq-admin/src/main/java/com/zhjq/web/controller/demo/controller/DemoFormController.java


+ 0 - 32
zhjq-admin/src/main/java/com/zhjq/web/controller/demo/controller/DemoIconController.java

@@ -1,32 +0,0 @@
-package com.zhjq.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 - 282
zhjq-admin/src/main/java/com/zhjq/web/controller/demo/controller/DemoOperateController.java

@@ -1,282 +0,0 @@
-package com.zhjq.web.controller.demo.controller;
-
-import com.zhjq.common.core.controller.BaseController;
-import com.zhjq.common.core.domain.AjaxResult;
-import com.zhjq.common.core.page.PageDomain;
-import com.zhjq.common.core.page.TableDataInfo;
-import com.zhjq.common.core.page.TableSupport;
-import com.zhjq.common.core.text.Convert;
-import com.zhjq.common.exception.ServiceException;
-import com.zhjq.common.utils.StringUtils;
-import com.zhjq.common.utils.poi.ExcelUtil;
-import com.zhjq.web.controller.demo.domain.CustomerModel;
-import com.zhjq.web.controller.demo.domain.UserOperateModel;
-import org.springframework.stereotype.Controller;
-import org.springframework.ui.ModelMap;
-import org.springframework.web.bind.annotation.*;
-import org.springframework.web.multipart.MultipartFile;
-
-import java.util.ArrayList;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-
-/**
- * 操作控制
- *
- * @author ruoyi
- */
-@Controller
-@RequestMapping("/demo/operate")
-public class DemoOperateController extends BaseController {
-    private final static Map<Integer, UserOperateModel> users = new LinkedHashMap<Integer, UserOperateModel>();
-    private String prefix = "demo/operate";
-
-    {
-        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 - 48
zhjq-admin/src/main/java/com/zhjq/web/controller/demo/controller/DemoReportController.java

@@ -1,48 +0,0 @@
-package com.zhjq.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";
-    }
-}

File diff suppressed because it is too large
+ 0 - 938
zhjq-admin/src/main/java/com/zhjq/web/controller/demo/controller/DemoTableController.java


+ 0 - 104
zhjq-admin/src/main/java/com/zhjq/web/controller/demo/domain/CustomerModel.java

@@ -1,104 +0,0 @@
-package com.zhjq.web.controller.demo.domain;
-
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-
-import java.util.List;
-
-/**
- * 客户测试信息
- *
- * @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 - 89
zhjq-admin/src/main/java/com/zhjq/web/controller/demo/domain/GoodsModel.java

@@ -1,89 +0,0 @@
-package com.zhjq.web.controller.demo.domain;
-
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-
-import java.util.Date;
-
-/**
- * 商品测试信息
- *
- * @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 - 129
zhjq-admin/src/main/java/com/zhjq/web/controller/demo/domain/UserOperateModel.java

@@ -1,129 +0,0 @@
-package com.zhjq.web.controller.demo.domain;
-
-import com.zhjq.common.annotation.Excel;
-import com.zhjq.common.annotation.Excel.Type;
-import com.zhjq.common.core.domain.BaseEntity;
-import com.zhjq.common.utils.DateUtils;
-
-import java.util.Date;
-
-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 - 82
zhjq-admin/src/main/java/com/zhjq/web/controller/monitor/CacheController.java

@@ -1,82 +0,0 @@
-package com.zhjq.web.controller.monitor;
-
-import com.zhjq.common.core.controller.BaseController;
-import com.zhjq.common.core.domain.AjaxResult;
-import com.zhjq.framework.web.service.CacheService;
-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;
-
-/**
- * 缓存监控
- *
- * @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 - 24
zhjq-admin/src/main/java/com/zhjq/web/controller/monitor/DruidController.java

@@ -1,24 +0,0 @@
-package com.zhjq.web.controller.monitor;
-
-import com.zhjq.common.core.controller.BaseController;
-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;
-
-/**
- * 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 - 29
zhjq-admin/src/main/java/com/zhjq/web/controller/monitor/ServerController.java

@@ -1,29 +0,0 @@
-package com.zhjq.web.controller.monitor;
-
-import com.zhjq.common.core.controller.BaseController;
-import com.zhjq.framework.web.domain.Server;
-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;
-
-/**
- * 服务器监控
- *
- * @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 - 88
zhjq-admin/src/main/java/com/zhjq/web/controller/monitor/SysLogininforController.java

@@ -1,88 +0,0 @@
-package com.zhjq.web.controller.monitor;
-
-import com.zhjq.common.annotation.Log;
-import com.zhjq.common.core.controller.BaseController;
-import com.zhjq.common.core.domain.AjaxResult;
-import com.zhjq.common.core.page.TableDataInfo;
-import com.zhjq.common.enums.BusinessType;
-import com.zhjq.common.utils.poi.ExcelUtil;
-import com.zhjq.framework.shiro.service.SysPasswordService;
-import com.zhjq.system.domain.SysLogininfor;
-import com.zhjq.system.service.ISysLogininforService;
-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 java.util.List;
-
-/**
- * 系统访问记录
- *
- * @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 - 80
zhjq-admin/src/main/java/com/zhjq/web/controller/monitor/SysOperlogController.java

@@ -1,80 +0,0 @@
-package com.zhjq.web.controller.monitor;
-
-import com.zhjq.common.annotation.Log;
-import com.zhjq.common.core.controller.BaseController;
-import com.zhjq.common.core.domain.AjaxResult;
-import com.zhjq.common.core.page.TableDataInfo;
-import com.zhjq.common.enums.BusinessType;
-import com.zhjq.common.utils.poi.ExcelUtil;
-import com.zhjq.system.domain.SysOperLog;
-import com.zhjq.system.service.ISysOperLogService;
-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.*;
-
-import java.util.List;
-
-/**
- * 操作日志记录
- *
- * @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 - 81
zhjq-admin/src/main/java/com/zhjq/web/controller/monitor/SysUserOnlineController.java

@@ -1,81 +0,0 @@
-package com.zhjq.web.controller.monitor;
-
-import com.zhjq.common.annotation.Log;
-import com.zhjq.common.core.controller.BaseController;
-import com.zhjq.common.core.domain.AjaxResult;
-import com.zhjq.common.core.page.TableDataInfo;
-import com.zhjq.common.core.text.Convert;
-import com.zhjq.common.enums.BusinessType;
-import com.zhjq.common.enums.OnlineStatus;
-import com.zhjq.common.utils.ShiroUtils;
-import com.zhjq.framework.shiro.session.OnlineSession;
-import com.zhjq.framework.shiro.session.OnlineSessionDAO;
-import com.zhjq.system.domain.SysUserOnline;
-import com.zhjq.system.service.ISysUserOnlineService;
-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 java.util.List;
-
-/**
- * 在线用户监控
- *
- * @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 - 79
zhjq-admin/src/main/java/com/zhjq/web/controller/system/SysCaptchaController.java

@@ -1,79 +0,0 @@
-package com.zhjq.web.controller.system;
-
-import com.google.code.kaptcha.Constants;
-import com.google.code.kaptcha.Producer;
-import com.zhjq.common.core.controller.BaseController;
-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 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 java.awt.image.BufferedImage;
-import java.io.IOException;
-
-/**
- * 图片验证码(支持算术形式)
- *
- * @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 - 141
zhjq-admin/src/main/java/com/zhjq/web/controller/system/SysConfigController.java

@@ -1,141 +0,0 @@
-package com.zhjq.web.controller.system;
-
-import com.zhjq.common.annotation.Log;
-import com.zhjq.common.core.controller.BaseController;
-import com.zhjq.common.core.domain.AjaxResult;
-import com.zhjq.common.core.page.TableDataInfo;
-import com.zhjq.common.enums.BusinessType;
-import com.zhjq.common.utils.poi.ExcelUtil;
-import com.zhjq.system.domain.SysConfig;
-import com.zhjq.system.service.ISysConfigService;
-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.*;
-
-import java.util.List;
-
-/**
- * 参数配置 信息操作处理
- *
- * @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 (!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 (!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 boolean checkConfigKeyUnique(SysConfig config) {
-        return configService.checkConfigKeyUnique(config);
-    }
-}

+ 0 - 163
zhjq-admin/src/main/java/com/zhjq/web/controller/system/SysDeptController.java

@@ -1,163 +0,0 @@
-package com.zhjq.web.controller.system;
-
-import com.zhjq.common.annotation.Log;
-import com.zhjq.common.constant.UserConstants;
-import com.zhjq.common.core.controller.BaseController;
-import com.zhjq.common.core.domain.AjaxResult;
-import com.zhjq.common.core.domain.Ztree;
-import com.zhjq.common.core.domain.entity.SysDept;
-import com.zhjq.common.enums.BusinessType;
-import com.zhjq.common.utils.StringUtils;
-import com.zhjq.system.service.ISysDeptService;
-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.*;
-
-import java.util.List;
-
-/**
- * 部门信息
- *
- * @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 (!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 (!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 boolean 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 - 109
zhjq-admin/src/main/java/com/zhjq/web/controller/system/SysDictDataController.java

@@ -1,109 +0,0 @@
-package com.zhjq.web.controller.system;
-
-import com.zhjq.common.annotation.Log;
-import com.zhjq.common.core.controller.BaseController;
-import com.zhjq.common.core.domain.AjaxResult;
-import com.zhjq.common.core.domain.entity.SysDictData;
-import com.zhjq.common.core.page.TableDataInfo;
-import com.zhjq.common.enums.BusinessType;
-import com.zhjq.common.utils.poi.ExcelUtil;
-import com.zhjq.system.service.ISysDictDataService;
-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.*;
-
-import java.util.List;
-
-/**
- * 数据字典信息
- *
- * @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 - 169
zhjq-admin/src/main/java/com/zhjq/web/controller/system/SysDictTypeController.java

@@ -1,169 +0,0 @@
-package com.zhjq.web.controller.system;
-
-import com.zhjq.common.annotation.Log;
-import com.zhjq.common.core.controller.BaseController;
-import com.zhjq.common.core.domain.AjaxResult;
-import com.zhjq.common.core.domain.Ztree;
-import com.zhjq.common.core.domain.entity.SysDictType;
-import com.zhjq.common.core.page.TableDataInfo;
-import com.zhjq.common.enums.BusinessType;
-import com.zhjq.common.utils.poi.ExcelUtil;
-import com.zhjq.system.service.ISysDictTypeService;
-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.*;
-
-import java.util.List;
-
-/**
- * 数据字典信息
- *
- * @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 (!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 (!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 boolean 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 - 158
zhjq-admin/src/main/java/com/zhjq/web/controller/system/SysIndexController.java

@@ -1,158 +0,0 @@
-package com.zhjq.web.controller.system;
-
-import com.zhjq.common.config.RuoYiConfig;
-import com.zhjq.common.constant.ShiroConstants;
-import com.zhjq.common.core.controller.BaseController;
-import com.zhjq.common.core.domain.AjaxResult;
-import com.zhjq.common.core.domain.entity.SysMenu;
-import com.zhjq.common.core.domain.entity.SysUser;
-import com.zhjq.common.core.text.Convert;
-import com.zhjq.common.utils.CookieUtils;
-import com.zhjq.common.utils.DateUtils;
-import com.zhjq.common.utils.ServletUtils;
-import com.zhjq.common.utils.StringUtils;
-import com.zhjq.framework.shiro.service.SysPasswordService;
-import com.zhjq.system.service.ISysConfigService;
-import com.zhjq.system.service.ISysMenuService;
-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 javax.servlet.http.Cookie;
-import javax.servlet.http.HttpServletResponse;
-import java.util.Date;
-import java.util.List;
-
-/**
- * 首页 业务处理
- *
- * @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 - 74
zhjq-admin/src/main/java/com/zhjq/web/controller/system/SysLoginController.java

@@ -1,74 +0,0 @@
-package com.zhjq.web.controller.system;
-
-import com.zhjq.common.core.controller.BaseController;
-import com.zhjq.common.core.domain.AjaxResult;
-import com.zhjq.common.core.text.Convert;
-import com.zhjq.common.utils.ServletUtils;
-import com.zhjq.common.utils.StringUtils;
-import com.zhjq.framework.web.service.ConfigService;
-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 javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-/**
- * 登录验证
- *
- * @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 - 174
zhjq-admin/src/main/java/com/zhjq/web/controller/system/SysMenuController.java

@@ -1,174 +0,0 @@
-package com.zhjq.web.controller.system;
-
-import com.zhjq.common.annotation.Log;
-import com.zhjq.common.core.controller.BaseController;
-import com.zhjq.common.core.domain.AjaxResult;
-import com.zhjq.common.core.domain.Ztree;
-import com.zhjq.common.core.domain.entity.SysMenu;
-import com.zhjq.common.core.domain.entity.SysRole;
-import com.zhjq.common.enums.BusinessType;
-import com.zhjq.common.utils.ShiroUtils;
-import com.zhjq.framework.shiro.util.AuthorizationUtils;
-import com.zhjq.system.service.ISysMenuService;
-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.*;
-
-import java.util.List;
-
-/**
- * 菜单信息
- *
- * @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 (!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 (!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 boolean 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 - 112
zhjq-admin/src/main/java/com/zhjq/web/controller/system/SysNoticeController.java

@@ -1,112 +0,0 @@
-package com.zhjq.web.controller.system;
-
-import com.zhjq.common.annotation.Log;
-import com.zhjq.common.core.controller.BaseController;
-import com.zhjq.common.core.domain.AjaxResult;
-import com.zhjq.common.core.page.TableDataInfo;
-import com.zhjq.common.enums.BusinessType;
-import com.zhjq.system.domain.SysNotice;
-import com.zhjq.system.service.ISysNoticeService;
-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.*;
-
-import java.util.List;
-
-/**
- * 公告 信息操作处理
- *
- * @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:list")
-    @GetMapping("/view/{noticeId}")
-    public String view(@PathVariable("noticeId") Long noticeId, ModelMap mmap) {
-        mmap.put("notice", noticeService.selectNoticeById(noticeId));
-        return prefix + "/view";
-    }
-
-    /**
-     * 删除公告
-     */
-    @RequiresPermissions("system:notice:remove")
-    @Log(title = "通知公告", businessType = BusinessType.DELETE)
-    @PostMapping("/remove")
-    @ResponseBody
-    public AjaxResult remove(String ids) {
-        return toAjax(noticeService.deleteNoticeByIds(ids));
-    }
-}

+ 0 - 139
zhjq-admin/src/main/java/com/zhjq/web/controller/system/SysPostController.java

@@ -1,139 +0,0 @@
-package com.zhjq.web.controller.system;
-
-import com.zhjq.common.annotation.Log;
-import com.zhjq.common.core.controller.BaseController;
-import com.zhjq.common.core.domain.AjaxResult;
-import com.zhjq.common.core.page.TableDataInfo;
-import com.zhjq.common.enums.BusinessType;
-import com.zhjq.common.utils.poi.ExcelUtil;
-import com.zhjq.system.domain.SysPost;
-import com.zhjq.system.service.ISysPostService;
-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.*;
-
-import java.util.List;
-
-/**
- * 岗位信息操作处理
- *
- * @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 (!postService.checkPostNameUnique(post)) {
-            return error("新增岗位'" + post.getPostName() + "'失败,岗位名称已存在");
-        } else if (!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 (!postService.checkPostNameUnique(post)) {
-            return error("修改岗位'" + post.getPostName() + "'失败,岗位名称已存在");
-        } else if (!postService.checkPostCodeUnique(post)) {
-            return error("修改岗位'" + post.getPostName() + "'失败,岗位编码已存在");
-        }
-        post.setUpdateBy(getLoginName());
-        return toAjax(postService.updatePost(post));
-    }
-
-    /**
-     * 校验岗位名称
-     */
-    @PostMapping("/checkPostNameUnique")
-    @ResponseBody
-    public boolean checkPostNameUnique(SysPost post) {
-        return postService.checkPostNameUnique(post);
-    }
-
-    /**
-     * 校验岗位编码
-     */
-    @PostMapping("/checkPostCodeUnique")
-    @ResponseBody
-    public boolean checkPostCodeUnique(SysPost post) {
-        return postService.checkPostCodeUnique(post);
-    }
-}

+ 0 - 156
zhjq-admin/src/main/java/com/zhjq/web/controller/system/SysProfileController.java

@@ -1,156 +0,0 @@
-package com.zhjq.web.controller.system;
-
-import com.zhjq.common.annotation.Log;
-import com.zhjq.common.config.RuoYiConfig;
-import com.zhjq.common.core.controller.BaseController;
-import com.zhjq.common.core.domain.AjaxResult;
-import com.zhjq.common.core.domain.entity.SysUser;
-import com.zhjq.common.enums.BusinessType;
-import com.zhjq.common.utils.DateUtils;
-import com.zhjq.common.utils.ShiroUtils;
-import com.zhjq.common.utils.StringUtils;
-import com.zhjq.common.utils.file.FileUploadUtils;
-import com.zhjq.common.utils.file.MimeTypeUtils;
-import com.zhjq.framework.shiro.service.SysPasswordService;
-import com.zhjq.system.service.ISysUserService;
-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.*;
-import org.springframework.web.multipart.MultipartFile;
-
-/**
- * 个人信息 业务处理
- *
- * @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()) && !userService.checkPhoneUnique(currentUser)) {
-            return error("修改用户'" + currentUser.getLoginName() + "'失败,手机号码已存在");
-        } else if (StringUtils.isNotEmpty(user.getEmail()) && !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 - 42
zhjq-admin/src/main/java/com/zhjq/web/controller/system/SysRegisterController.java

@@ -1,42 +0,0 @@
-package com.zhjq.web.controller.system;
-
-import com.zhjq.common.core.controller.BaseController;
-import com.zhjq.common.core.domain.AjaxResult;
-import com.zhjq.common.core.domain.entity.SysUser;
-import com.zhjq.common.utils.StringUtils;
-import com.zhjq.framework.shiro.service.SysRegisterService;
-import com.zhjq.system.service.ISysConfigService;
-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;
-
-/**
- * 注册验证
- *
- * @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 - 289
zhjq-admin/src/main/java/com/zhjq/web/controller/system/SysRoleController.java

@@ -1,289 +0,0 @@
-package com.zhjq.web.controller.system;
-
-import com.zhjq.common.annotation.Log;
-import com.zhjq.common.core.controller.BaseController;
-import com.zhjq.common.core.domain.AjaxResult;
-import com.zhjq.common.core.domain.Ztree;
-import com.zhjq.common.core.domain.entity.SysRole;
-import com.zhjq.common.core.domain.entity.SysUser;
-import com.zhjq.common.core.page.TableDataInfo;
-import com.zhjq.common.enums.BusinessType;
-import com.zhjq.common.utils.poi.ExcelUtil;
-import com.zhjq.framework.shiro.util.AuthorizationUtils;
-import com.zhjq.system.domain.SysUserRole;
-import com.zhjq.system.service.ISysDeptService;
-import com.zhjq.system.service.ISysRoleService;
-import com.zhjq.system.service.ISysUserService;
-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.*;
-
-import java.util.List;
-
-/**
- * 角色信息
- *
- * @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 (!roleService.checkRoleNameUnique(role)) {
-            return error("新增角色'" + role.getRoleName() + "'失败,角色名称已存在");
-        } else if (!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 (!roleService.checkRoleNameUnique(role)) {
-            return error("修改角色'" + role.getRoleName() + "'失败,角色名称已存在");
-        } else if (!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 boolean checkRoleNameUnique(SysRole role) {
-        return roleService.checkRoleNameUnique(role);
-    }
-
-    /**
-     * 校验角色权限
-     */
-    @PostMapping("/checkRoleKeyUnique")
-    @ResponseBody
-    public boolean 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 - 315
zhjq-admin/src/main/java/com/zhjq/web/controller/system/SysUserController.java

@@ -1,315 +0,0 @@
-package com.zhjq.web.controller.system;
-
-import com.zhjq.common.annotation.Log;
-import com.zhjq.common.core.controller.BaseController;
-import com.zhjq.common.core.domain.AjaxResult;
-import com.zhjq.common.core.domain.Ztree;
-import com.zhjq.common.core.domain.entity.SysDept;
-import com.zhjq.common.core.domain.entity.SysRole;
-import com.zhjq.common.core.domain.entity.SysUser;
-import com.zhjq.common.core.page.TableDataInfo;
-import com.zhjq.common.core.text.Convert;
-import com.zhjq.common.enums.BusinessType;
-import com.zhjq.common.utils.DateUtils;
-import com.zhjq.common.utils.ShiroUtils;
-import com.zhjq.common.utils.StringUtils;
-import com.zhjq.common.utils.poi.ExcelUtil;
-import com.zhjq.framework.shiro.service.SysPasswordService;
-import com.zhjq.framework.shiro.util.AuthorizationUtils;
-import com.zhjq.system.service.ISysDeptService;
-import com.zhjq.system.service.ISysPostService;
-import com.zhjq.system.service.ISysRoleService;
-import com.zhjq.system.service.ISysUserService;
-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.*;
-import org.springframework.web.multipart.MultipartFile;
-
-import java.util.List;
-import java.util.stream.Collectors;
-
-/**
- * 用户信息
- *
- * @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) {
-        deptService.checkDeptDataScope(user.getDeptId());
-        roleService.checkRoleDataScope(user.getRoleIds());
-        if (!userService.checkLoginNameUnique(user)) {
-            return error("新增用户'" + user.getLoginName() + "'失败,登录账号已存在");
-        } else if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user)) {
-            return error("新增用户'" + user.getLoginName() + "'失败,手机号码已存在");
-        } else if (StringUtils.isNotEmpty(user.getEmail()) && !userService.checkEmailUnique(user)) {
-            return error("新增用户'" + user.getLoginName() + "'失败,邮箱账号已存在");
-        }
-        user.setSalt(ShiroUtils.randomSalt());
-        user.setPassword(passwordService.encryptPassword(user.getLoginName(), user.getPassword(), user.getSalt()));
-        user.setPwdUpdateDate(DateUtils.getNowDate());
-        user.setCreateBy(getLoginName());
-        return toAjax(userService.insertUser(user));
-    }
-
-    /**
-     * 修改用户
-     */
-    @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:list")
-    @GetMapping("/view/{userId}")
-    public String view(@PathVariable("userId") Long userId, ModelMap mmap) {
-        userService.checkUserDataScope(userId);
-        mmap.put("user", userService.selectUserById(userId));
-        mmap.put("roleGroup", userService.selectUserRoleGroup(userId));
-        mmap.put("postGroup", userService.selectUserPostGroup(userId));
-        return prefix + "/view";
-    }
-
-    /**
-     * 修改保存用户
-     */
-    @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());
-        deptService.checkDeptDataScope(user.getDeptId());
-        roleService.checkRoleDataScope(user.getRoleIds());
-        if (!userService.checkLoginNameUnique(user)) {
-            return error("修改用户'" + user.getLoginName() + "'失败,登录账号已存在");
-        } else if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user)) {
-            return error("修改用户'" + user.getLoginName() + "'失败,手机号码已存在");
-        } else if (StringUtils.isNotEmpty(user.getEmail()) && !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);
-        roleService.checkRoleDataScope(roleIds);
-        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 boolean checkLoginNameUnique(SysUser user) {
-        return userService.checkLoginNameUnique(user);
-    }
-
-    /**
-     * 校验手机号码
-     */
-    @PostMapping("/checkPhoneUnique")
-    @ResponseBody
-    public boolean checkPhoneUnique(SysUser user) {
-        return userService.checkPhoneUnique(user);
-    }
-
-    /**
-     * 校验email邮箱
-     */
-    @PostMapping("/checkEmailUnique")
-    @ResponseBody
-    public boolean 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 - 24
zhjq-admin/src/main/java/com/zhjq/web/controller/tool/BuildController.java

@@ -1,24 +0,0 @@
-package com.zhjq.web.controller.tool;
-
-import com.zhjq.common.core.controller.BaseController;
-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;
-
-/**
- * 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 - 22
zhjq-admin/src/main/java/com/zhjq/web/controller/tool/SwaggerController.java

@@ -1,22 +0,0 @@
-package com.zhjq.web.controller.tool;
-
-import com.zhjq.common.core.controller.BaseController;
-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;
-
-/**
- * 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 - 147
zhjq-admin/src/main/java/com/zhjq/web/controller/tool/TestController.java

@@ -1,147 +0,0 @@
-package com.zhjq.web.controller.tool;
-
-import com.zhjq.common.core.controller.BaseController;
-import com.zhjq.common.core.domain.R;
-import com.zhjq.common.utils.StringUtils;
-import io.swagger.annotations.*;
-import org.springframework.web.bind.annotation.*;
-
-import java.util.ArrayList;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-
-/**
- * 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 - 66
zhjq-admin/src/main/java/com/zhjq/web/core/config/SwaggerConfig.java

@@ -1,66 +0,0 @@
-package com.zhjq.web.core.config;
-
-import com.zhjq.common.config.RuoYiConfig;
-import io.swagger.annotations.ApiOperation;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-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.zhjq.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
zhjq-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://www.sooka.onest.db:63306/zhjq?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
-        username: sooka
-        password: sooka1a2b3c4d%...
-      # 从库数据源
-      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
zhjq-admin/src/main/resources/application.yml

@@ -1,142 +0,0 @@
-# 项目相关配置
-ruoyi:
-  # 名称
-  name: RuoYi
-  # 版本
-  version: 4.7.9
-  # 版权年份
-  copyrightYear: 2024
-  # 实例演示开关
-  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.zhjq: 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.zhjq.**.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 - 2
zhjq-admin/src/main/resources/banner.txt

@@ -1,2 +0,0 @@
-Application Version: ${ruoyi.version}
-Spring Boot Version: ${spring-boot.version}

+ 0 - 91
zhjq-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
zhjq-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.zhjq" 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 - 20
zhjq-admin/src/main/resources/mybatis/mybatis-config.xml

@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!DOCTYPE configuration
-        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
-        "http://mybatis.org/dtd/mybatis-3-config.dtd">
-<configuration>
-    <!-- 全局参数 -->
-    <settings>
-        <!-- 使全局的映射器启用或禁用缓存 -->
-        <setting name="cacheEnabled" value="true"/>
-        <!-- 允许JDBC 支持自动生成主键 -->
-        <setting name="useGeneratedKeys" value="true"/>
-        <!-- 配置默认的执行器.SIMPLE就是普通执行器;REUSE执行器会重用预处理语句(prepared statements);BATCH执行器将重用语句并执行批量更新 -->
-        <setting name="defaultExecutorType" value="SIMPLE"/>
-        <!-- 指定 MyBatis 所用日志的具体实现 -->
-        <setting name="logImpl" value="SLF4J"/>
-        <!-- 使用驼峰命名法转换字段 -->
-        <!-- <setting name="mapUnderscoreToCamelCase" value="true"/> -->
-    </settings>
-
-</configuration>

+ 0 - 600
zhjq-admin/src/main/resources/static/ajax/libs/beautifyhtml/beautifyhtml.js

@@ -1,600 +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 - 618
zhjq-admin/src/main/resources/static/ajax/libs/blockUI/jquery.blockUI.js

@@ -1,618 +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
zhjq-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;
-}

File diff suppressed because it is too large
+ 0 - 6681
zhjq-admin/src/main/resources/static/ajax/libs/bootstrap-fileinput/fileinput.js


File diff suppressed because it is too large
+ 0 - 13
zhjq-admin/src/main/resources/static/ajax/libs/bootstrap-fileinput/fileinput.min.css


File diff suppressed because it is too large
+ 0 - 11
zhjq-admin/src/main/resources/static/ajax/libs/bootstrap-fileinput/fileinput.min.js


BIN
zhjq-admin/src/main/resources/static/ajax/libs/bootstrap-fileinput/loading-sm.gif


BIN
zhjq-admin/src/main/resources/static/ajax/libs/bootstrap-fileinput/loading.gif


+ 0 - 536
zhjq-admin/src/main/resources/static/ajax/libs/bootstrap-select/bootstrap-select.css

@@ -1,536 +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;
-}

File diff suppressed because it is too large
+ 0 - 3257
zhjq-admin/src/main/resources/static/ajax/libs/bootstrap-select/bootstrap-select.js


File diff suppressed because it is too large
+ 0 - 6
zhjq-admin/src/main/resources/static/ajax/libs/bootstrap-select/bootstrap-select.min.css


File diff suppressed because it is too large
+ 0 - 8
zhjq-admin/src/main/resources/static/ajax/libs/bootstrap-select/bootstrap-select.min.js


File diff suppressed because it is too large
+ 0 - 6
zhjq-admin/src/main/resources/static/ajax/libs/bootstrap-table/bootstrap-table.min.css


File diff suppressed because it is too large
+ 0 - 6
zhjq-admin/src/main/resources/static/ajax/libs/bootstrap-table/bootstrap-table.min.js


+ 0 - 95
zhjq-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)
-    }
-}

File diff suppressed because it is too large
+ 0 - 5
zhjq-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/columns/bootstrap-table-fixed-columns.js


+ 0 - 606
zhjq-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/cookie/bootstrap-table-cookie.js

@@ -1,606 +0,0 @@
-/**
- * @author: Dennis Hernández
- * @update zhixin wen <wenzhixin2010@gmail.com>
- */
-var Utils = $.fn.bootstrapTable.utils
-var UtilsCookie = {
-    cookieIds: {
-        sortOrder: 'bs.table.sortOrder',
-        sortName: 'bs.table.sortName',
-        sortPriority: 'bs.table.sortPriority',
-        pageNumber: 'bs.table.pageNumber',
-        pageList: 'bs.table.pageList',
-        hiddenColumns: 'bs.table.hiddenColumns',
-        cardView: 'bs.table.cardView',
-        customView: 'bs.table.customView',
-        searchText: 'bs.table.searchText',
-        reorderColumns: 'bs.table.reorderColumns',
-        filterControl: 'bs.table.filterControl',
-        filterBy: 'bs.table.filterBy'
-    },
-    getCurrentHeader(that) {
-        return that.options.height ? that.$tableHeader : that.$header
-    },
-    getCurrentSearchControls(that) {
-        return that.options.height ? 'table select, table input' : 'select, input'
-    },
-    isCookieSupportedByBrowser() {
-        return navigator.cookieEnabled
-    },
-    isCookieEnabled(that, cookieName) {
-        return that.options.cookiesEnabled.includes(cookieName)
-    },
-    setCookie(that, cookieName, cookieValue) {
-        if (
-            !that.options.cookie ||
-            !UtilsCookie.isCookieEnabled(that, cookieName)
-        ) {
-            return
-        }
-
-        return that._storage.setItem(`${that.options.cookieIdTable}.${cookieName}`, cookieValue)
-    },
-    getCookie(that, cookieName) {
-        if (
-            !cookieName ||
-            !UtilsCookie.isCookieEnabled(that, cookieName)
-        ) {
-            return null
-        }
-
-        return that._storage.getItem(`${that.options.cookieIdTable}.${cookieName}`)
-    },
-    deleteCookie(that, cookieName) {
-        return that._storage.removeItem(`${that.options.cookieIdTable}.${cookieName}`)
-    },
-    calculateExpiration(cookieExpire) {
-        const time = cookieExpire.replace(/[0-9]*/, '') // s,mi,h,d,m,y
-
-        cookieExpire = cookieExpire.replace(/[A-Za-z]{1,2}/, '') // number
-
-        switch (time.toLowerCase()) {
-            case 's':
-                cookieExpire = +cookieExpire
-                break
-            case 'mi':
-                cookieExpire *= 60
-                break
-            case 'h':
-                cookieExpire = cookieExpire * 60 * 60
-                break
-            case 'd':
-                cookieExpire = cookieExpire * 24 * 60 * 60
-                break
-            case 'm':
-                cookieExpire = cookieExpire * 30 * 24 * 60 * 60
-                break
-            case 'y':
-                cookieExpire = cookieExpire * 365 * 24 * 60 * 60
-                break
-            default:
-                cookieExpire = undefined
-                break
-        }
-        if (!cookieExpire) {
-            return ''
-        }
-        const d = new Date()
-
-        d.setTime(d.getTime() + cookieExpire * 1000)
-        return d.toGMTString()
-    },
-    initCookieFilters(that) {
-        setTimeout(() => {
-            const parsedCookieFilters = JSON.parse(
-                UtilsCookie.getCookie(that, UtilsCookie.cookieIds.filterControl))
-
-            if (!that._filterControlValuesLoaded && parsedCookieFilters) {
-                const cachedFilters = {}
-                const header = UtilsCookie.getCurrentHeader(that)
-                const searchControls = UtilsCookie.getCurrentSearchControls(that)
-
-                const applyCookieFilters = (element, filteredCookies) => {
-                    filteredCookies.forEach(cookie => {
-                        const value = element.value.toString()
-                        const text = cookie.text
-
-                        if (
-                            text === '' ||
-                            element.type === 'radio' &&
-                            value !== text
-                        ) {
-                            return
-                        }
-
-                        if (
-                            element.tagName === 'INPUT' &&
-                            element.type === 'radio' &&
-                            value === text
-                        ) {
-                            element.checked = true
-                            cachedFilters[cookie.field] = text
-                        } else if (element.tagName === 'INPUT') {
-                            element.value = text
-                            cachedFilters[cookie.field] = text
-                        } else if (
-                            element.tagName === 'SELECT' &&
-                            that.options.filterControlContainer
-                        ) {
-                            element.value = text
-                            cachedFilters[cookie.field] = text
-                        } else if (text !== '' && element.tagName === 'SELECT') {
-                            cachedFilters[cookie.field] = text
-                            for (const currentElement of element) {
-                                if (currentElement.value === text) {
-                                    currentElement.selected = true
-                                    return
-                                }
-                            }
-                            const option = document.createElement('option')
-
-                            option.value = text
-                            option.text = text
-                            element.add(option, element[1])
-                            element.selectedIndex = 1
-                        }
-                    })
-                }
-
-                let filterContainer = header
-
-                if (that.options.filterControlContainer) {
-                    filterContainer = $(`${that.options.filterControlContainer}`)
-                }
-
-                filterContainer.find(searchControls).each(function () {
-                    const field = $(this).closest('[data-field]').data('field')
-                    const filteredCookies = parsedCookieFilters.filter(cookie => cookie.field === field)
-
-                    applyCookieFilters(this, filteredCookies)
-                })
-
-                that.initColumnSearch(cachedFilters)
-                that._filterControlValuesLoaded = true
-                that.initServer()
-            }
-        }, 250)
-    }
-}
-
-Object.assign($.fn.bootstrapTable.defaults, {
-    cookie: false,
-    cookieExpire: '2h',
-    cookiePath: null,
-    cookieDomain: null,
-    cookieSecure: null,
-    cookieSameSite: 'Lax',
-    cookieIdTable: '',
-    cookiesEnabled: [
-        'bs.table.sortOrder', 'bs.table.sortName', 'bs.table.sortPriority',
-        'bs.table.pageNumber', 'bs.table.pageList',
-        'bs.table.hiddenColumns', 'bs.table.searchText',
-        'bs.table.filterControl', 'bs.table.filterBy',
-        'bs.table.reorderColumns', 'bs.table.cardView', 'bs.table.customView'
-    ],
-    cookieStorage: 'cookieStorage', // localStorage, sessionStorage, customStorage
-    cookieCustomStorageGet: null,
-    cookieCustomStorageSet: null,
-    cookieCustomStorageDelete: null,
-    // internal variable
-    _filterControls: [],
-    _filterControlValuesLoaded: false,
-    _storage: {
-        setItem: undefined,
-        getItem: undefined,
-        removeItem: undefined
-    }
-})
-
-$.fn.bootstrapTable.methods.push('getCookies')
-$.fn.bootstrapTable.methods.push('deleteCookie')
-
-Object.assign($.fn.bootstrapTable.utils, {
-    setCookie: UtilsCookie.setCookie,
-    getCookie: UtilsCookie.getCookie
-})
-
-$.BootstrapTable = class extends $.BootstrapTable {
-    init() {
-        if (this.options.cookie) {
-            if (
-                this.options.cookieStorage === 'cookieStorage' &&
-                !UtilsCookie.isCookieSupportedByBrowser()
-            ) {
-                throw new Error('Cookies are not enabled in this browser.')
-            }
-
-            this.configureStorage()
-
-            // FilterBy logic
-            const filterByCookieValue = UtilsCookie.getCookie(this, UtilsCookie.cookieIds.filterBy)
-
-            if (typeof filterByCookieValue === 'boolean' && !filterByCookieValue) {
-                throw new Error('The cookie value of filterBy must be a json!')
-            }
-
-            let filterByCookie = {}
-
-            try {
-                filterByCookie = JSON.parse(filterByCookieValue)
-            } catch (e) {
-                throw new Error('Could not parse the json of the filterBy cookie!')
-            }
-            this.filterColumns = filterByCookie ? filterByCookie : {}
-
-            // FilterControl logic
-            this._filterControls = []
-            this._filterControlValuesLoaded = false
-
-            this.options.cookiesEnabled = typeof this.options.cookiesEnabled === 'string' ?
-                this.options.cookiesEnabled.replace('[', '').replace(']', '')
-                    .replace(/'/g, '').replace(/ /g, '').split(',') :
-                this.options.cookiesEnabled
-
-            if (this.options.filterControl) {
-                const that = this
-
-                this.$el.on('column-search.bs.table', (e, field, text) => {
-                    let isNewField = true
-
-                    for (let i = 0; i < that._filterControls.length; i++) {
-                        if (that._filterControls[i].field === field) {
-                            that._filterControls[i].text = text
-                            isNewField = false
-                            break
-                        }
-                    }
-                    if (isNewField) {
-                        that._filterControls.push({
-                            field,
-                            text
-                        })
-                    }
-
-                    UtilsCookie.setCookie(that, UtilsCookie.cookieIds.filterControl, JSON.stringify(that._filterControls))
-                }).on('created-controls.bs.table', UtilsCookie.initCookieFilters(that))
-            }
-        }
-        super.init()
-    }
-
-    initServer(...args) {
-        if (
-            this.options.cookie &&
-            this.options.filterControl &&
-            !this._filterControlValuesLoaded
-        ) {
-            const cookie = JSON.parse(UtilsCookie.getCookie(this, UtilsCookie.cookieIds.filterControl))
-
-            if (cookie) {
-                return
-            }
-        }
-        super.initServer(...args)
-    }
-
-    initTable(...args) {
-        super.initTable(...args)
-        this.initCookie()
-    }
-
-    onSort(...args) {
-        super.onSort(...args)
-
-        if (!this.options.cookie) {
-            return
-        }
-
-        if (this.options.sortName === undefined || this.options.sortOrder === undefined) {
-            UtilsCookie.deleteCookie(this, UtilsCookie.cookieIds.sortName)
-            UtilsCookie.deleteCookie(this, UtilsCookie.cookieIds.sortOrder)
-        } else {
-            this.options.sortPriority = null
-            UtilsCookie.deleteCookie(this, UtilsCookie.cookieIds.sortPriority)
-
-            UtilsCookie.setCookie(this, UtilsCookie.cookieIds.sortOrder, this.options.sortOrder)
-            UtilsCookie.setCookie(this, UtilsCookie.cookieIds.sortName, this.options.sortName)
-        }
-    }
-
-    onMultipleSort(...args) {
-        super.onMultipleSort(...args)
-
-        if (!this.options.cookie) {
-            return
-        }
-
-        if (this.options.sortPriority === undefined) {
-            UtilsCookie.deleteCookie(this, UtilsCookie.cookieIds.sortPriority)
-        } else {
-            this.options.sortName = undefined
-            this.options.sortOrder = undefined
-            UtilsCookie.deleteCookie(this, UtilsCookie.cookieIds.sortName)
-            UtilsCookie.deleteCookie(this, UtilsCookie.cookieIds.sortOrder)
-
-            UtilsCookie.setCookie(this, UtilsCookie.cookieIds.sortPriority, JSON.stringify(this.options.sortPriority))
-        }
-    }
-
-    onPageNumber(...args) {
-        super.onPageNumber(...args)
-        if (!this.options.cookie) {
-            return
-        }
-        UtilsCookie.setCookie(this, UtilsCookie.cookieIds.pageNumber, this.options.pageNumber)
-    }
-
-    onPageListChange(...args) {
-        super.onPageListChange(...args)
-        if (!this.options.cookie) {
-            return
-        }
-        UtilsCookie.setCookie(this, UtilsCookie.cookieIds.pageList,
-            this.options.pageSize === this.options.formatAllRows() ? 'all' : this.options.pageSize)
-        UtilsCookie.setCookie(this, UtilsCookie.cookieIds.pageNumber, this.options.pageNumber)
-    }
-
-    onPagePre(...args) {
-        super.onPagePre(...args)
-        if (!this.options.cookie) {
-            return
-        }
-        UtilsCookie.setCookie(this, UtilsCookie.cookieIds.pageNumber, this.options.pageNumber)
-    }
-
-    onPageNext(...args) {
-        super.onPageNext(...args)
-        if (!this.options.cookie) {
-            return
-        }
-        UtilsCookie.setCookie(this, UtilsCookie.cookieIds.pageNumber, this.options.pageNumber)
-    }
-
-    _toggleColumn(...args) {
-        super._toggleColumn(...args)
-        if (!this.options.cookie) {
-            return
-        }
-        UtilsCookie.setCookie(this, UtilsCookie.cookieIds.hiddenColumns, JSON.stringify(this.getHiddenColumns().map(column => column.field)))
-    }
-
-    _toggleAllColumns(...args) {
-        super._toggleAllColumns(...args)
-        if (!this.options.cookie) {
-            return
-        }
-        UtilsCookie.setCookie(this, UtilsCookie.cookieIds.hiddenColumns, JSON.stringify(this.getHiddenColumns().map(column => column.field)))
-    }
-
-    toggleView() {
-        super.toggleView()
-        UtilsCookie.setCookie(this, UtilsCookie.cookieIds.cardView, this.options.cardView)
-    }
-
-    toggleCustomView() {
-        super.toggleCustomView()
-        UtilsCookie.setCookie(this, UtilsCookie.cookieIds.customView, this.customViewDefaultView)
-    }
-
-    selectPage(page) {
-        super.selectPage(page)
-        if (!this.options.cookie) {
-            return
-        }
-        UtilsCookie.setCookie(this, UtilsCookie.cookieIds.pageNumber, page)
-    }
-
-    onSearch(event) {
-        super.onSearch(event, arguments.length > 1 ? arguments[1] : true)
-        if (!this.options.cookie) {
-            return
-        }
-        if (this.options.search) {
-            UtilsCookie.setCookie(this, UtilsCookie.cookieIds.searchText, this.searchText)
-        }
-        UtilsCookie.setCookie(this, UtilsCookie.cookieIds.pageNumber, this.options.pageNumber)
-    }
-
-    initHeader(...args) {
-        if (this.options.reorderableColumns && this.options.cookie) {
-            this.columnsSortOrder = JSON.parse(UtilsCookie.getCookie(this, UtilsCookie.cookieIds.reorderColumns))
-        }
-        super.initHeader(...args)
-    }
-
-    persistReorderColumnsState(that) {
-        UtilsCookie.setCookie(that, UtilsCookie.cookieIds.reorderColumns, JSON.stringify(that.columnsSortOrder))
-    }
-
-    filterBy(...args) {
-        super.filterBy(...args)
-        if (!this.options.cookie) {
-            return
-        }
-        UtilsCookie.setCookie(this, UtilsCookie.cookieIds.filterBy, JSON.stringify(this.filterColumns))
-    }
-
-    initCookie() {
-        if (!this.options.cookie) {
-            return
-        }
-
-        if (this.options.cookieIdTable === '' || this.options.cookieExpire === '') {
-            console.error('Configuration error. Please review the cookieIdTable and the cookieExpire property. If the properties are correct, then this browser does not support cookies.')
-            this.options.cookie = false // Make sure that the cookie extension is disabled
-            return
-        }
-
-        const sortOrderCookie = UtilsCookie.getCookie(this, UtilsCookie.cookieIds.sortOrder)
-        const sortOrderNameCookie = UtilsCookie.getCookie(this, UtilsCookie.cookieIds.sortName)
-        let sortPriorityCookie = UtilsCookie.getCookie(this, UtilsCookie.cookieIds.sortPriority)
-        const pageNumberCookie = UtilsCookie.getCookie(this, UtilsCookie.cookieIds.pageNumber)
-        const pageListCookie = UtilsCookie.getCookie(this, UtilsCookie.cookieIds.pageList)
-        const searchTextCookie = UtilsCookie.getCookie(this, UtilsCookie.cookieIds.searchText)
-        const cardViewCookie = UtilsCookie.getCookie(this, UtilsCookie.cookieIds.cardView)
-        const customViewCookie = UtilsCookie.getCookie(this, UtilsCookie.cookieIds.customView)
-        const hiddenColumnsCookieValue = UtilsCookie.getCookie(this, UtilsCookie.cookieIds.hiddenColumns)
-
-        let hiddenColumnsCookie = {}
-
-        try {
-            hiddenColumnsCookie = JSON.parse(hiddenColumnsCookieValue)
-        } catch (e) {
-            throw new Error('Could not parse the json of the hidden columns cookie!', hiddenColumnsCookieValue)
-        }
-
-        try {
-            sortPriorityCookie = JSON.parse(sortPriorityCookie)
-        } catch (e) {
-            throw new Error('Could not parse the json of the sortPriority cookie!', sortPriorityCookie)
-        }
-
-        if (!sortPriorityCookie) {
-            // sortOrder
-            this.options.sortOrder = sortOrderCookie ? sortOrderCookie : this.options.sortOrder
-            // sortName
-            this.options.sortName = sortOrderNameCookie ? sortOrderNameCookie : this.options.sortName
-        } else {
-            this.options.sortOrder = undefined
-            this.options.sortName = undefined
-        }
-
-        // sortPriority
-        this.options.sortPriority = sortPriorityCookie ? sortPriorityCookie : this.options.sortPriority
-
-        if (this.options.sortOrder || this.options.sortName) {
-            // sortPriority
-            this.options.sortPriority = null
-        }
-
-        // pageNumber
-        this.options.pageNumber = pageNumberCookie ? +pageNumberCookie : this.options.pageNumber
-        // pageSize
-        this.options.pageSize = pageListCookie ? pageListCookie === 'all' ?
-            this.options.formatAllRows() : +pageListCookie : this.options.pageSize
-        // searchText
-        if (UtilsCookie.isCookieEnabled(this, UtilsCookie.cookieIds.searchText) && this.options.searchText === '') {
-            this.options.searchText = searchTextCookie ? searchTextCookie : ''
-        }
-        // cardView
-        if (cardViewCookie !== null) {
-            this.options.cardView = cardViewCookie === 'true' ? cardViewCookie : false
-        }
-        this.customViewDefaultView = customViewCookie === 'true'
-
-        if (hiddenColumnsCookie) {
-            for (const column of this.columns) {
-                if (!column.switchable) {
-                    continue
-                }
-
-                column.visible = this.isSelectionColumn(column) ||
-                    !hiddenColumnsCookie.includes(column.field)
-            }
-        }
-    }
-
-    getCookies() {
-        const bootstrapTable = this
-        const cookies = {}
-
-        for (const [key, value] of Object.entries(UtilsCookie.cookieIds)) {
-            cookies[key] = UtilsCookie.getCookie(bootstrapTable, value)
-            if (key === 'columns' || key === 'hiddenColumns' || key === 'sortPriority') {
-                cookies[key] = JSON.parse(cookies[key])
-            }
-        }
-        return cookies
-    }
-
-    deleteCookie(cookieName) {
-        if (!cookieName) {
-            return
-        }
-
-        UtilsCookie.deleteCookie(this, UtilsCookie.cookieIds[cookieName])
-    }
-
-    configureStorage() {
-        const that = this
-
-        this._storage = {}
-        switch (this.options.cookieStorage) {
-            case 'cookieStorage':
-                this._storage.setItem = function (cookieName, cookieValue) {
-                    document.cookie = [
-                        cookieName, '=', encodeURIComponent(cookieValue),
-                        `; expires=${UtilsCookie.calculateExpiration(that.options.cookieExpire)}`,
-                        that.options.cookiePath ? `; path=${that.options.cookiePath}` : '',
-                        that.options.cookieDomain ? `; domain=${that.options.cookieDomain}` : '',
-                        that.options.cookieSecure ? '; secure' : '',
-                        `;SameSite=${that.options.cookieSameSite}`
-                    ].join('')
-                }
-                this._storage.getItem = function (cookieName) {
-                    const value = `; ${document.cookie}`
-                    const parts = value.split(`; ${cookieName}=`)
-
-                    return parts.length === 2 ? decodeURIComponent(parts.pop().split(';').shift()) : null
-                }
-                this._storage.removeItem = function (cookieName) {
-                    document.cookie = [
-                        encodeURIComponent(cookieName), '=',
-                        '; expires=Thu, 01 Jan 1970 00:00:00 GMT',
-                        that.options.cookiePath ? `; path=${that.options.cookiePath}` : '',
-                        that.options.cookieDomain ? `; domain=${that.options.cookieDomain}` : '',
-                        `;SameSite=${that.options.cookieSameSite}`
-                    ].join('')
-                }
-                break
-            case 'localStorage':
-                this._storage.setItem = function (cookieName, cookieValue) {
-                    localStorage.setItem(cookieName, cookieValue)
-                }
-                this._storage.getItem = function (cookieName) {
-                    return localStorage.getItem(cookieName)
-                }
-                this._storage.removeItem = function (cookieName) {
-                    localStorage.removeItem(cookieName)
-                }
-                break
-            case 'sessionStorage':
-                this._storage.setItem = function (cookieName, cookieValue) {
-                    sessionStorage.setItem(cookieName, cookieValue)
-                }
-                this._storage.getItem = function (cookieName) {
-                    return sessionStorage.getItem(cookieName)
-                }
-                this._storage.removeItem = function (cookieName) {
-                    sessionStorage.removeItem(cookieName)
-                }
-                break
-            case 'customStorage':
-                if (
-                    !this.options.cookieCustomStorageSet ||
-                    !this.options.cookieCustomStorageGet ||
-                    !this.options.cookieCustomStorageDelete
-                ) {
-                    throw new Error('The following options must be set while using the customStorage: cookieCustomStorageSet, cookieCustomStorageGet and cookieCustomStorageDelete')
-                }
-
-                this._storage.setItem = function (cookieName, cookieValue) {
-                    Utils.calculateObjectValue(that.options, that.options.cookieCustomStorageSet, [cookieName, cookieValue], '')
-                }
-                this._storage.getItem = function (cookieName) {
-                    return Utils.calculateObjectValue(that.options, that.options.cookieCustomStorageGet, [cookieName], '')
-                }
-                this._storage.removeItem = function (cookieName) {
-                    Utils.calculateObjectValue(that.options, that.options.cookieCustomStorageDelete, [cookieName], '')
-                }
-
-                break
-            default:
-                throw new Error('Storage method not supported.')
-        }
-    }
-}

+ 0 - 135
zhjq-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/custom-view/bootstrap-table-custom-view.js

@@ -1,135 +0,0 @@
-/**
- * @author: Dustin Utecht
- * @github: https://github.com/UtechtDustin
- */
-
-var Utils = $.fn.bootstrapTable.utils
-
-Object.assign($.fn.bootstrapTable.defaults, {
-    customView: false,
-    showCustomView: false,
-    customViewDefaultView: false
-})
-
-Object.assign($.fn.bootstrapTable.defaults.icons, {
-    customViewOn: {
-        bootstrap3: 'glyphicon glyphicon-list',
-        bootstrap5: 'bi-list',
-        bootstrap4: 'fa fa-list',
-        semantic: 'fa fa-list',
-        foundation: 'fa fa-list',
-        bulma: 'fa fa-list',
-        materialize: 'list'
-    }[$.fn.bootstrapTable.theme] || 'fa-list',
-    customViewOff: {
-        bootstrap3: 'glyphicon glyphicon-eye-open',
-        bootstrap5: 'bi-grid',
-        bootstrap4: 'fa fa-th',
-        semantic: 'fa fa-th',
-        foundation: 'fa fa-th',
-        bulma: 'fa fa-th',
-        materialize: 'grid_on'
-    }[$.fn.bootstrapTable.theme] || 'fa-th'
-})
-
-Object.assign($.fn.bootstrapTable.defaults, {
-    onCustomViewPostBody() {
-        return false
-    },
-    onCustomViewPreBody() {
-        return false
-    },
-    onToggleCustomView() {
-        return false
-    }
-})
-
-Object.assign($.fn.bootstrapTable.locales, {
-    formatToggleCustomViewOn() {
-        return 'Show custom view'
-    },
-    formatToggleCustomViewOff() {
-        return 'Hide custom view'
-    }
-})
-Object.assign($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales)
-
-$.fn.bootstrapTable.methods.push('toggleCustomView')
-
-Object.assign($.fn.bootstrapTable.events, {
-    'custom-view-post-body.bs.table': 'onCustomViewPostBody',
-    'custom-view-pre-body.bs.table': 'onCustomViewPreBody',
-    'toggle-custom-view.bs.table': 'onToggleCustomView'
-})
-
-$.BootstrapTable = class extends $.BootstrapTable {
-
-    init() {
-        this.customViewDefaultView = this.options.customViewDefaultView
-
-        super.init()
-    }
-
-    initToolbar(...args) {
-        if (this.options.customView && this.options.showCustomView) {
-            this.buttons = Object.assign(this.buttons, {
-                customView: {
-                    text: this.options.customViewDefaultView ? this.options.formatToggleCustomViewOff() : this.options.formatToggleCustomViewOn(),
-                    icon: this.options.customViewDefaultView ? this.options.icons.customViewOn : this.options.icons.customViewOff,
-                    event: this.toggleCustomView,
-                    attributes: {
-                        'aria-label': this.options.customViewDefaultView ? this.options.formatToggleCustomViewOff() : this.options.formatToggleCustomViewOn(),
-                        title: this.options.customViewDefaultView ? this.options.formatToggleCustomViewOff() : this.options.formatToggleCustomViewOn()
-                    }
-                }
-            })
-        }
-
-        super.initToolbar(...args)
-    }
-
-    initBody() {
-        super.initBody()
-
-        if (!this.options.customView) {
-            return
-        }
-
-        const $table = this.$el
-        const $customViewContainer = this.$container.find('.fixed-table-custom-view')
-
-        $table.hide()
-        $customViewContainer.hide()
-        if (!this.options.customView || !this.customViewDefaultView) {
-            $table.show()
-            return
-        }
-
-        const data = this.getData().slice(this.pageFrom - 1, this.pageTo)
-        const value = Utils.calculateObjectValue(this, this.options.customView, [data], '')
-
-        this.trigger('custom-view-pre-body', data, value)
-        if ($customViewContainer.length === 1) {
-            $customViewContainer.show().html(value)
-        } else {
-            this.$tableBody.after(`<div class="fixed-table-custom-view">${value}</div>`)
-        }
-
-        this.trigger('custom-view-post-body', data, value)
-    }
-
-    toggleCustomView() {
-        this.customViewDefaultView = !this.customViewDefaultView
-
-        const icon = this.options.showButtonIcons ? this.customViewDefaultView ? this.options.icons.customViewOn : this.options.icons.customViewOff : ''
-        const text = this.options.showButtonText ? this.customViewDefaultView ? this.options.formatToggleCustomViewOff() : this.options.formatToggleCustomViewOn() : ''
-
-        this.$toolbar.find('button[name="customView"]')
-            .html(`${Utils.sprintf(this.constants.html.icon, this.options.iconsPrefix, icon)} ${text}`)
-            .attr('aria-label', text)
-            .attr('title', text)
-
-        this.initBody()
-        this.trigger('toggle-custom-view', this.customViewDefaultView)
-    }
-}

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

@@ -1,722 +0,0 @@
-/*! X-editable - v1.5.3 
-* In-place editing with Twitter Bootstrap, jQuery UI or pure jQuery
-* http://github.com/vitalets/x-editable
-* Copyright (c) 2019 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 fix: stop css from breaking when the form is inside a popup and inside a form with the class .form-horizontal
-    See: https://github.com/vitalets/x-editable/issues/682
-*/
-.form-horizontal .editable-popup .editableform .form-group {
-    margin-left: 0;
-    margin-right: 0;
-}
-
-
-/* 
-  BS3 width:1005 for inputs breaks editable form in popup 
-  See: https://github.com/vitalets/x-editable/issues/393
-*/
-.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;
-}

File diff suppressed because it is too large
+ 0 - 7
zhjq-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/editable/bootstrap-editable.min.js


+ 0 - 189
zhjq-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/editable/bootstrap-table-editable.js

@@ -1,189 +0,0 @@
-/* eslint-disable no-unused-vars */
-/**
- * @author zhixin wen <wenzhixin2010@gmail.com>
- * extensions: https://github.com/vitalets/x-editable
- */
-
-var Utils = $.fn.bootstrapTable.utils
-
-$.extend($.fn.bootstrapTable.defaults, {
-    editable: true,
-    onEditableInit() {
-        return false
-    },
-    onEditableSave(field, row, rowIndex, oldValue, $el) {
-        return false
-    },
-    onEditableShown(field, row, $el, editable) {
-        return false
-    },
-    onEditableHidden(field, row, $el, reason) {
-        return false
-    }
-})
-
-$.extend($.fn.bootstrapTable.columnDefaults, {
-    alwaysUseFormatter: false
-})
-
-$.extend($.fn.bootstrapTable.events, {
-    'editable-init.bs.table': 'onEditableInit',
-    'editable-save.bs.table': 'onEditableSave',
-    'editable-shown.bs.table': 'onEditableShown',
-    'editable-hidden.bs.table': 'onEditableHidden'
-})
-
-$.BootstrapTable = class extends $.BootstrapTable {
-    initTable() {
-        super.initTable()
-
-        if (!this.options.editable) {
-            return
-        }
-
-        this.editedCells = []
-        $.each(this.columns, (i, column) => {
-            if (!column.editable) {
-                return
-            }
-
-            const editableOptions = {}
-            const editableDataMarkup = []
-            const editableDataPrefix = 'editable-'
-            const processDataOptions = (key, value) => {
-                // Replace camel case with dashes.
-                const dashKey = key.replace(/([A-Z])/g, $1 => `-${$1.toLowerCase()}`)
-
-                if (dashKey.indexOf(editableDataPrefix) === 0) {
-                    editableOptions[dashKey.replace(editableDataPrefix, 'data-')] = value
-                }
-            }
-
-            $.each(this.options, processDataOptions)
-
-            column.formatter = column.formatter || (value => value)
-            column._formatter = column._formatter ? column._formatter : column.formatter
-            column.formatter = (value, row, index, field) => {
-                let result = Utils.calculateObjectValue(column, column._formatter, [value, row, index], value)
-
-                result = typeof result === 'undefined' || result === null ? this.options.undefinedText : result
-                if (this.options.uniqueId !== undefined && !column.alwaysUseFormatter) {
-                    const uniqueId = Utils.getItemField(row, this.options.uniqueId, false)
-
-                    if ($.inArray(column.field + uniqueId, this.editedCells) !== -1) {
-                        result = value
-                    }
-                }
-
-                $.each(column, processDataOptions)
-
-                $.each(editableOptions, (key, value) => {
-                    editableDataMarkup.push(` ${key}="${value}"`)
-                })
-
-                let noEditFormatter = false
-                const editableOpts = Utils.calculateObjectValue(column,
-                    column.editable, [index, row], {})
-
-                if (editableOpts.hasOwnProperty('noEditFormatter')) {
-                    noEditFormatter = editableOpts.noEditFormatter(value, row, index, field)
-                }
-
-                if (noEditFormatter === false) {
-                    return `<a href="javascript:void(0)"
-            data-name="${column.field}"
-            data-pk="${row[this.options.idField]}"
-            data-value="${result}"
-            ${editableDataMarkup.join('')}></a>`
-                }
-                return noEditFormatter
-            }
-        })
-    }
-
-    initBody(fixedScroll) {
-        super.initBody(fixedScroll)
-
-        if (!this.options.editable) {
-            return
-        }
-
-        $.each(this.columns, (i, column) => {
-            if (!column.editable) {
-                return
-            }
-
-            const data = this.getData({escape: true})
-            const $field = this.$body.find(`a[data-name="${column.field}"]`)
-
-            $field.each((i, element) => {
-                const $element = $(element)
-                const $tr = $element.closest('tr')
-                const index = $tr.data('index')
-                const row = data[index]
-
-                const editableOpts = Utils.calculateObjectValue(column,
-                    column.editable, [index, row, $element], {})
-
-                $element.editable(editableOpts)
-            })
-
-            $field.off('save').on('save', ({currentTarget}, {submitValue}) => {
-                const $this = $(currentTarget)
-                const data = this.getData()
-                const rowIndex = $this.parents('tr[data-index]').data('index')
-                const row = data[rowIndex]
-                const oldValue = row[column.field]
-
-                if (this.options.uniqueId !== undefined && !column.alwaysUseFormatter) {
-                    const uniqueId = Utils.getItemField(row, this.options.uniqueId, false)
-
-                    if ($.inArray(column.field + uniqueId, this.editedCells) === -1) {
-                        this.editedCells.push(column.field + uniqueId)
-                    }
-                }
-
-                submitValue = Utils.escapeHTML(submitValue)
-                $this.data('value', submitValue)
-                row[column.field] = submitValue
-                this.trigger('editable-save', column.field, row, rowIndex, oldValue, $this)
-                this.initBody()
-            })
-
-            $field.off('shown').on('shown', ({currentTarget}, editable) => {
-                const $this = $(currentTarget)
-                const data = this.getData()
-                const rowIndex = $this.parents('tr[data-index]').data('index')
-                const row = data[rowIndex]
-
-                this.trigger('editable-shown', column.field, row, $this, editable)
-            })
-
-            $field.off('hidden').on('hidden', ({currentTarget}, reason) => {
-                const $this = $(currentTarget)
-                const data = this.getData()
-                const rowIndex = $this.parents('tr[data-index]').data('index')
-                const row = data[rowIndex]
-
-                this.trigger('editable-hidden', column.field, row, $this, reason)
-            })
-        })
-        this.trigger('editable-init')
-    }
-
-    getData(params) {
-        const data = super.getData(params)
-
-        if (params && params.escape) {
-            for (const row of data) {
-                for (const [key, value] of Object.entries(row)) {
-                    if (typeof (value) !== "number") {
-                        row[key] = Utils.unescapeHTML(value)
-                    }
-                }
-            }
-        }
-
-        return data
-    }
-}

BIN
zhjq-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/editable/clear.png


BIN
zhjq-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/editable/loading.gif


+ 0 - 335
zhjq-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/export/bootstrap-table-export.js

@@ -1,335 +0,0 @@
-/**
- * @author zhixin wen <wenzhixin2010@gmail.com>
- * extensions: https://github.com/hhurz/tableExport.jquery.plugin
- */
-
-var Utils = $.fn.bootstrapTable.utils
-
-const TYPE_NAME = {
-    json: 'JSON',
-    xml: 'XML',
-    png: 'PNG',
-    csv: 'CSV',
-    txt: 'TXT',
-    sql: 'SQL',
-    doc: 'MS-Word',
-    excel: 'MS-Excel',
-    xlsx: 'MS-Excel (OpenXML)',
-    powerpoint: 'MS-Powerpoint',
-    pdf: 'PDF'
-}
-
-Object.assign($.fn.bootstrapTable.defaults, {
-    showExport: false,
-    exportDataType: 'basic', // basic, all, selected
-    exportTypes: ['json', 'xml', 'csv', 'txt', 'sql', 'excel'],
-    exportOptions: {},
-    exportFooter: false
-})
-
-Object.assign($.fn.bootstrapTable.columnDefaults, {
-    forceExport: false,
-    forceHide: false
-})
-
-Object.assign($.fn.bootstrapTable.defaults.icons, {
-    export: {
-        bootstrap3: 'glyphicon-export icon-share',
-        bootstrap5: 'bi-download',
-        materialize: 'file_download',
-        'bootstrap-table': 'icon-download'
-    }[$.fn.bootstrapTable.theme] || 'fa-download'
-})
-
-Object.assign($.fn.bootstrapTable.locales, {
-    formatExport() {
-        return 'Export data'
-    }
-})
-Object.assign($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales)
-
-$.fn.bootstrapTable.methods.push('exportTable')
-
-Object.assign($.fn.bootstrapTable.defaults, {
-    // eslint-disable-next-line no-unused-vars
-    onExportSaved(exportedRows) {
-        return false
-    },
-    onExportStarted() {
-        return false
-    }
-})
-
-Object.assign($.fn.bootstrapTable.events, {
-    'export-saved.bs.table': 'onExportSaved',
-    'export-started.bs.table': 'onExportStarted'
-})
-
-$.BootstrapTable = class extends $.BootstrapTable {
-    initToolbar(...args) {
-        const o = this.options
-        let exportTypes = o.exportTypes
-
-        this.showToolbar = this.showToolbar || o.showExport
-
-        if (this.options.showExport) {
-
-            if (typeof exportTypes === 'string') {
-                const types = exportTypes.slice(1, -1).replace(/ /g, '').split(',')
-
-                exportTypes = types.map(t => t.slice(1, -1))
-            }
-
-            if (typeof o.exportOptions === 'string') {
-                o.exportOptions = Utils.calculateObjectValue(null, o.exportOptions)
-            }
-
-            this.$export = this.$toolbar.find('>.columns div.export')
-            if (this.$export.length) {
-                this.updateExportButton()
-                return
-            }
-
-            this.buttons = Object.assign(this.buttons, {
-                export: {
-                    html:
-                        () => {
-                            if (exportTypes.length === 1) {
-                                return `
-                  <div class="export ${this.constants.classes.buttonsDropdown}"
-                  data-type="${exportTypes[0]}">
-                  <button class="${this.constants.buttonsClass}"
-                  aria-label="${o.formatExport()}"
-                  type="button"
-                  title="${o.formatExport()}">
-                  ${o.showButtonIcons ? Utils.sprintf(this.constants.html.icon, o.iconsPrefix, o.icons.export) : ''}
-                  ${o.showButtonText ? o.formatExport() : ''}
-                  </button>
-                  </div>
-                `
-                            }
-
-                            const html = []
-
-                            html.push(`
-                <div class="export ${this.constants.classes.buttonsDropdown}">
-                <button class="${this.constants.buttonsClass} dropdown-toggle"
-                aria-label="${o.formatExport()}"
-                ${this.constants.dataToggle}="dropdown"
-                type="button"
-                title="${o.formatExport()}">
-                ${o.showButtonIcons ? Utils.sprintf(this.constants.html.icon, o.iconsPrefix, o.icons.export) : ''}
-                ${o.showButtonText ? o.formatExport() : ''}
-                ${this.constants.html.dropdownCaret}
-                </button>
-                ${this.constants.html.toolbarDropdown[0]}
-              `)
-
-                            for (const type of exportTypes) {
-                                if (TYPE_NAME.hasOwnProperty(type)) {
-                                    const $item = $(Utils.sprintf(this.constants.html.pageDropdownItem, '', TYPE_NAME[type]))
-
-                                    $item.attr('data-type', type)
-                                    html.push($item.prop('outerHTML'))
-                                }
-                            }
-
-                            html.push(this.constants.html.toolbarDropdown[1], '</div>')
-                            return html.join('')
-                        }
-                }
-            })
-        }
-
-        super.initToolbar(...args)
-        this.$export = this.$toolbar.find('>.columns div.export')
-
-        if (!this.options.showExport) {
-            return
-        }
-
-        this.updateExportButton()
-        let $exportButtons = this.$export.find('[data-type]')
-
-        if (exportTypes.length === 1) {
-            $exportButtons = this.$export
-        }
-
-        $exportButtons.click(e => {
-            e.preventDefault()
-            this.trigger('export-started')
-            this.exportTable({
-                type: $(e.currentTarget).data('type')
-            })
-        })
-        this.handleToolbar()
-    }
-
-    handleToolbar() {
-        if (!this.$export) {
-            return
-        }
-
-        if (super.handleToolbar) {
-            super.handleToolbar()
-        }
-    }
-
-    exportTable(options) {
-        const o = this.options
-        const stateField = this.header.stateField
-        const isCardView = o.cardView
-
-        const doExport = callback => {
-            if (stateField) {
-                this.hideColumn(stateField)
-            }
-            if (isCardView) {
-                this.toggleView()
-            }
-
-            this.columns.forEach(row => {
-                if (row.forceHide) {
-                    this.hideColumn(row.field)
-                }
-            })
-
-            const data = this.getData()
-
-            if (o.detailView && o.detailViewIcon) {
-                const detailViewIndex = o.detailViewAlign === 'left' ? 0 : this.getVisibleFields().length + Utils.getDetailViewIndexOffset(this.options)
-
-                o.exportOptions.ignoreColumn = [detailViewIndex].concat(o.exportOptions.ignoreColumn || [])
-            }
-
-            if (o.exportFooter && o.height) {
-                const $footerRow = this.$tableFooter.find('tr').first()
-                const footerData = {}
-                const footerHtml = []
-
-                $.each($footerRow.children(), (index, footerCell) => {
-                    const footerCellHtml = $(footerCell).children('.th-inner').first().html()
-
-                    footerData[this.columns[index].field] = footerCellHtml === '&nbsp;' ? null : footerCellHtml
-
-                    // grab footer cell text into cell index-based array
-                    footerHtml.push(footerCellHtml)
-                })
-
-                this.$body.append(this.$body.children().last()[0].outerHTML)
-                const $lastTableRow = this.$body.children().last()
-
-                $.each($lastTableRow.children(), (index, lastTableRowCell) => {
-                    $(lastTableRowCell).html(footerHtml[index])
-                })
-            }
-
-            const hiddenColumns = this.getHiddenColumns()
-
-            hiddenColumns.forEach(row => {
-                if (row.forceExport) {
-                    this.showColumn(row.field)
-                }
-            })
-
-            if (typeof o.exportOptions.fileName === 'function') {
-                options.fileName = o.exportOptions.fileName()
-            }
-
-            this.$el.tableExport(Utils.extend({
-                onAfterSaveToFile: () => {
-                    if (o.exportFooter) {
-                        this.load(data)
-                    }
-
-                    if (stateField) {
-                        this.showColumn(stateField)
-                    }
-                    if (isCardView) {
-                        this.toggleView()
-                    }
-
-                    hiddenColumns.forEach(row => {
-                        if (row.forceExport) {
-                            this.hideColumn(row.field)
-                        }
-                    })
-
-                    this.columns.forEach(row => {
-                        if (row.forceHide) {
-                            this.showColumn(row.field)
-                        }
-                    })
-
-                    if (callback) callback()
-                }
-            }, o.exportOptions, options))
-        }
-
-        if (o.exportDataType === 'all' && o.pagination) {
-            const eventName = o.sidePagination === 'server' ?
-                'post-body.bs.table' : 'page-change.bs.table'
-            const virtualScroll = this.options.virtualScroll
-
-            this.$el.one(eventName, () => {
-                setTimeout(() => {
-                    const data = this.getData()
-
-                    doExport(() => {
-                        this.options.virtualScroll = virtualScroll
-                        this.togglePagination()
-                    })
-                    this.trigger('export-saved', data)
-                }, 0)
-            })
-            this.options.virtualScroll = false
-            this.togglePagination()
-        } else if (o.exportDataType === 'selected') {
-            let data = this.getData()
-            let selectedData = this.getSelections()
-            const pagination = o.pagination
-
-            if (!selectedData.length) {
-                return
-            }
-
-            if (o.sidePagination === 'server') {
-                data = {
-                    total: o.totalRows,
-                    [this.options.dataField]: data
-                }
-                selectedData = {
-                    total: selectedData.length,
-                    [this.options.dataField]: selectedData
-                }
-            }
-
-            this.load(selectedData)
-            if (pagination) {
-                this.togglePagination()
-            }
-            doExport(() => {
-                if (pagination) {
-                    this.togglePagination()
-                }
-                this.load(data)
-            })
-            this.trigger('export-saved', selectedData)
-        } else {
-            doExport()
-            this.trigger('export-saved', this.getData(true))
-        }
-    }
-
-    updateSelected() {
-        super.updateSelected()
-        this.updateExportButton()
-    }
-
-    updateExportButton() {
-        if (this.options.exportDataType === 'selected') {
-            this.$export.find('> button')
-                .prop('disabled', !this.getSelections().length)
-        }
-    }
-}

File diff suppressed because it is too large
+ 0 - 92
zhjq-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/export/tableExport.min.js


+ 0 - 123
zhjq-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/mobile/bootstrap-table-mobile.js

@@ -1,123 +0,0 @@
-/**
- * @author: Dennis Hernández
- * @update zhixin wen <wenzhixin2010@gmail.com>
- */
-
-const debounce = (func, wait) => {
-    let timeout = 0
-
-    return (...args) => {
-        const later = () => {
-            timeout = 0
-            func(...args)
-        }
-
-        clearTimeout(timeout)
-        timeout = setTimeout(later, wait)
-    }
-}
-
-Object.assign($.fn.bootstrapTable.defaults, {
-    mobileResponsive: false,
-    minWidth: 562,
-    minHeight: undefined,
-    heightThreshold: 100, // just slightly larger than mobile chrome's auto-hiding toolbar
-    checkOnInit: true,
-    columnsHidden: []
-})
-
-$.BootstrapTable = class extends $.BootstrapTable {
-    init(...args) {
-        super.init(...args)
-
-        if (!this.options.mobileResponsive || !this.options.minWidth) {
-            return
-        }
-
-        if (this.options.minWidth < 100 && this.options.resizable) {
-            console.warn('The minWidth when the resizable extension is active should be greater or equal than 100')
-            this.options.minWidth = 100
-        }
-
-        let old = {
-            width: $(window).width(),
-            height: $(window).height()
-        }
-
-        $(window).on('resize orientationchange', debounce(() => {
-            // reset view if height has only changed by at least the threshold.
-            const width = $(window).width()
-            const height = $(window).height()
-            const $activeElement = $(document.activeElement)
-
-            if ($activeElement.length && ['INPUT', 'SELECT', 'TEXTAREA'].includes($activeElement.prop('nodeName'))) {
-                return
-            }
-
-            if (
-                Math.abs(old.height - height) > this.options.heightThreshold ||
-                old.width !== width
-            ) {
-                this.changeView(width, height)
-                old = {
-                    width,
-                    height
-                }
-            }
-        }, 200))
-
-        if (this.options.checkOnInit) {
-            const width = $(window).width()
-            const height = $(window).height()
-
-            this.changeView(width, height)
-            old = {
-                width,
-                height
-            }
-        }
-    }
-
-    conditionCardView() {
-        this.changeTableView(false)
-        this.showHideColumns(false)
-    }
-
-    conditionFullView() {
-        this.changeTableView(true)
-        this.showHideColumns(true)
-    }
-
-    changeTableView(cardViewState) {
-        this.options.cardView = cardViewState
-        this.toggleView()
-    }
-
-    showHideColumns(checked) {
-        if (this.options.columnsHidden.length > 0) {
-            this.columns.forEach(column => {
-                if (this.options.columnsHidden.includes(column.field)) {
-                    if (column.visible !== checked) {
-                        this._toggleColumn(this.fieldsColumnsIndex[column.field], checked, true)
-                    }
-                }
-            })
-        }
-    }
-
-    changeView(width, height) {
-        if (this.options.minHeight) {
-            if (width <= this.options.minWidth && height <= this.options.minHeight) {
-                this.conditionCardView()
-            } else if (width > this.options.minWidth && height > this.options.minHeight) {
-                this.conditionFullView()
-            }
-        } else if (width <= this.options.minWidth) {
-            this.conditionCardView()
-        } else if (width > this.options.minWidth) {
-            this.conditionFullView()
-        }
-
-        this.resetView()
-    }
-}

+ 0 - 312
zhjq-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/print/bootstrap-table-print.js

@@ -1,312 +0,0 @@
-/**
- * @update zhixin wen <wenzhixin2010@gmail.com>
- */
-
-var Utils = $.fn.bootstrapTable.utils
-
-function printPageBuilderDefault(table, styles) {
-    return `
-    <html>
-    <head>
-    ${styles}
-    <style type="text/css" media="print">
-    @page {
-      size: auto;
-      margin: 25px 0 25px 0;
-    }
-    </style>
-    <style type="text/css" media="all">
-    table {
-      border-collapse: collapse;
-      font-size: 12px;
-    }
-    table, th, td {
-      border: 1px solid grey;
-    }
-    th, td {
-      text-align: center;
-      vertical-align: middle;
-    }
-    p {
-      font-weight: bold;
-      margin-left:20px;
-    }
-    table {
-      width: 94%;
-      margin-left: 3%;
-      margin-right: 3%;
-    }
-    div.bs-table-print {
-      text-align: center;
-    }
-    </style>
-    </head>
-    <title>Print Table</title>
-    <body>
-    <p>Printed on: ${new Date} </p>
-    <div class="bs-table-print">${table}</div>
-    </body>
-    </html>
-  `
-}
-
-Object.assign($.fn.bootstrapTable.locales, {
-    formatPrint() {
-        return 'Print'
-    }
-})
-Object.assign($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales)
-
-Object.assign($.fn.bootstrapTable.defaults, {
-    showPrint: false,
-    printAsFilteredAndSortedOnUI: true,
-    printSortColumn: undefined,
-    printSortOrder: 'asc',
-    printStyles: [],
-    printPageBuilder(table, styles) {
-        return printPageBuilderDefault(table, styles)
-    }
-})
-
-Object.assign($.fn.bootstrapTable.columnDefaults, {
-    printFilter: undefined,
-    printIgnore: false,
-    printFormatter: undefined
-})
-
-Object.assign($.fn.bootstrapTable.defaults.icons, {
-    print: {
-        bootstrap3: 'glyphicon-print icon-share',
-        bootstrap5: 'bi-printer',
-        'bootstrap-table': 'icon-printer'
-    }[$.fn.bootstrapTable.theme] || 'fa-print'
-})
-
-$.BootstrapTable = class extends $.BootstrapTable {
-    init(...args) {
-        super.init(...args)
-
-        if (!this.options.showPrint) {
-            return
-        }
-
-        this.mergedCells = []
-    }
-
-    initToolbar(...args) {
-        this.showToolbar = this.showToolbar || this.options.showPrint
-
-        if (this.options.showPrint) {
-            this.buttons = Object.assign(this.buttons, {
-                print: {
-                    text: this.options.formatPrint(),
-                    icon: this.options.icons.print,
-                    event: () => {
-                        this.doPrint(this.options.printAsFilteredAndSortedOnUI ? this.getData() : this.options.data.slice(0))
-                    },
-                    attributes: {
-                        'aria-label': this.options.formatPrint(),
-                        title: this.options.formatPrint()
-                    }
-                }
-            })
-        }
-
-        super.initToolbar(...args)
-    }
-
-    mergeCells(options) {
-        super.mergeCells(options)
-
-        if (!this.options.showPrint) {
-            return
-        }
-
-        let col = this.getVisibleFields().indexOf(options.field)
-
-        if (Utils.hasDetailViewIcon(this.options)) {
-            col += 1
-        }
-
-        this.mergedCells.push({
-            row: options.index,
-            col,
-            rowspan: options.rowspan || 1,
-            colspan: options.colspan || 1
-        })
-    }
-
-    doPrint(data) {
-        const canPrint = column => {
-            return !column.printIgnore && column.visible
-        }
-
-        const formatValue = (row, i, column) => {
-            const value_ = Utils.getItemField(row, column.field, this.options.escape, column.escape)
-            const value = Utils.calculateObjectValue(column,
-                column.printFormatter || column.formatter,
-                [value_, row, i], value_)
-
-            return typeof value === 'undefined' || value === null ?
-                this.options.undefinedText : value
-        }
-
-        const buildTable = (data, columnsArray) => {
-            const dir = this.$el.attr('dir') || 'ltr'
-            const html = [`<table dir="${dir}"><thead>`]
-
-            for (const columns of columnsArray) {
-                html.push('<tr>')
-                for (let h = 0; h < columns.length; h++) {
-                    if (canPrint(columns[h])) {
-                        html.push(
-                            `<th
-              ${Utils.sprintf(' rowspan="%s"', columns[h].rowspan)}
-              ${Utils.sprintf(' colspan="%s"', columns[h].colspan)}
-              >${columns[h].title}</th>`)
-                    }
-                }
-                html.push('</tr>')
-            }
-
-            html.push('</thead><tbody>')
-
-            const notRender = []
-
-            if (this.mergedCells) {
-                for (let mc = 0; mc < this.mergedCells.length; mc++) {
-                    const currentMergedCell = this.mergedCells[mc]
-
-                    for (let rs = 0; rs < currentMergedCell.rowspan; rs++) {
-                        const row = currentMergedCell.row + rs
-
-                        for (let cs = 0; cs < currentMergedCell.colspan; cs++) {
-                            const col = currentMergedCell.col + cs
-
-                            notRender.push(`${row},${col}`)
-                        }
-                    }
-                }
-            }
-
-            for (let i = 0; i < data.length; i++) {
-                html.push('<tr>')
-
-                const columns = columnsArray.flat(1)
-
-                columns.sort((c1, c2) => {
-                    return c1.colspanIndex - c2.colspanIndex
-                })
-
-                for (let j = 0; j < columns.length; j++) {
-                    if (columns[j].colspanGroup > 0) continue
-
-                    let rowspan = 0
-                    let colspan = 0
-
-                    if (this.mergedCells) {
-                        for (let mc = 0; mc < this.mergedCells.length; mc++) {
-                            const currentMergedCell = this.mergedCells[mc]
-
-                            if (currentMergedCell.col === j && currentMergedCell.row === i) {
-                                rowspan = currentMergedCell.rowspan
-                                colspan = currentMergedCell.colspan
-                            }
-                        }
-                    }
-
-                    if (
-                        canPrint(columns[j]) &&
-                        (
-                            !notRender.includes(`${i},${j}`) ||
-                            rowspan > 0 && colspan > 0
-                        )
-                    ) {
-                        if (rowspan > 0 && colspan > 0) {
-                            html.push(`<td ${Utils.sprintf(' rowspan="%s"', rowspan)} ${Utils.sprintf(' colspan="%s"', colspan)}>`, formatValue(data[i], i, columns[j]), '</td>')
-                        } else {
-                            html.push('<td>', formatValue(data[i], i, columns[j]), '</td>')
-                        }
-                    }
-                }
-
-                html.push('</tr>')
-            }
-
-            html.push('</tbody>')
-            if (this.options.showFooter) {
-                html.push('<footer><tr>')
-
-                for (const columns of columnsArray) {
-                    for (let h = 0; h < columns.length; h++) {
-                        if (canPrint(columns)) {
-                            const footerData = Utils.trToData(columns, this.$el.find('>tfoot>tr'))
-                            const footerValue = Utils.calculateObjectValue(columns[h], columns[h].footerFormatter, [data], footerData[0] && footerData[0][columns[h].field] || '')
-
-                            html.push(`<th>${footerValue}</th>`)
-                        }
-                    }
-                }
-
-                html.push('</tr></footer>')
-            }
-            html.push('</table>')
-            return html.join('')
-        }
-
-        const sortRows = (data, colName, sortOrder) => {
-            if (!colName) {
-                return data
-            }
-            let reverse = sortOrder !== 'asc'
-
-            reverse = -(+reverse || -1)
-            return data.sort((a, b) => reverse * a[colName].localeCompare(b[colName]))
-        }
-
-        const filterRow = (row, filters) => {
-            for (let index = 0; index < filters.length; ++index) {
-                if (row[filters[index].colName] !== filters[index].value) {
-                    return false
-                }
-            }
-            return true
-        }
-
-        const filterRows = (data, filters) => data.filter(row => filterRow(row, filters))
-        const getColumnFilters = columns => !columns || !columns[0] ? [] : columns[0].filter(col => col.printFilter).map(col => ({
-            colName: col.field,
-            value: col.printFilter
-        }))
-
-        data = filterRows(data, getColumnFilters(this.options.columns))
-        data = sortRows(data, this.options.printSortColumn, this.options.printSortOrder)
-        const table = buildTable(data, this.options.columns)
-        const newWin = window.open('')
-        const printStyles = typeof this.options.printStyles === 'string' ?
-            this.options.printStyles.replace(/\[|\]| /g, '').toLowerCase().split(',') :
-            this.options.printStyles
-        const styles = printStyles.map(it =>
-            `<link rel="stylesheet" href="${it}" />`).join('')
-
-        const calculatedPrintPage = Utils.calculateObjectValue(this, this.options.printPageBuilder,
-            [table, styles], printPageBuilderDefault(table, styles))
-        const startPrint = () => {
-            newWin.focus()
-            newWin.print()
-            newWin.close()
-        }
-
-        newWin.document.write(calculatedPrintPage)
-        newWin.document.close()
-
-        if (printStyles.length) {
-            const links = document.getElementsByTagName('link')
-            const lastLink = links[links.length - 1]
-
-            lastLink.onload = startPrint
-        } else {
-            startPrint()
-        }
-    }
-}

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

@@ -1,212 +0,0 @@
-/**
- * @author: Dennis Hernández
- * @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
-        }
-    }
-}
-
-Object.assign($.fn.bootstrapTable.defaults, {
-    reorderableColumns: false,
-    maxMovingRows: 10,
-    // eslint-disable-next-line no-unused-vars
-    onReorderColumn(headerFields) {
-        return false
-    },
-    dragaccept: null
-})
-
-Object.assign($.fn.bootstrapTable.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.makeColumnsReorderable()
-    }
-
-    _toggleColumn(...args) {
-        super._toggleColumn(...args)
-
-        if (!this.options.reorderableColumns) {
-            return
-        }
-
-        this.makeColumnsReorderable()
-    }
-
-    toggleView(...args) {
-        super.toggleView(...args)
-
-        if (!this.options.reorderableColumns) {
-            return
-        }
-
-        if (this.options.cardView) {
-            return
-        }
-
-        this.makeColumnsReorderable()
-    }
-
-    resetView(...args) {
-        super.resetView(...args)
-
-        if (!this.options.reorderableColumns) {
-            return
-        }
-
-        this.makeColumnsReorderable()
-    }
-
-    makeColumnsReorderable(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.makeColumnsReorderable()
-    }
-}

File diff suppressed because it is too large
+ 0 - 22
zhjq-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/reorder-columns/jquery.dragtable.js


+ 0 - 146
zhjq-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/reorder-rows/bootstrap-table-reorder-rows.js

@@ -1,146 +0,0 @@
-/**
- * @author: Dennis Hernández
- * @update zhixin wen <wenzhixin2010@gmail.com>
- */
-
-const rowAttr = (row, index) => ({
-    id: `customId_${index}`
-})
-
-Object.assign($.fn.bootstrapTable.defaults, {
-    reorderableRows: false,
-    onDragStyle: null,
-    onDropStyle: null,
-    onDragClass: 'reorder-rows-on-drag-class',
-    dragHandle: '>tbody>tr>td:not(.bs-checkbox)',
-    useRowAttrFunc: false,
-    // eslint-disable-next-line no-unused-vars
-    onReorderRowsDrag(row) {
-        return false
-    },
-    // eslint-disable-next-line no-unused-vars
-    onReorderRowsDrop(row) {
-        return false
-    },
-    // eslint-disable-next-line no-unused-vars
-    onReorderRow(newData) {
-        return false
-    },
-    onDragStop() {
-    },
-    onAllowDrop() {
-        return true
-    }
-})
-
-Object.assign($.fn.bootstrapTable.events, {
-    'reorder-row.bs.table': 'onReorderRow'
-})
-
-$.BootstrapTable = class extends $.BootstrapTable {
-    init(...args) {
-        if (!this.options.reorderableRows) {
-            super.init(...args)
-            return
-        }
-
-        if (this.options.useRowAttrFunc) {
-            this.options.rowAttributes = rowAttr
-        }
-
-        const onPostBody = this.options.onPostBody
-
-        this.options.onPostBody = () => {
-            setTimeout(() => {
-                this.makeRowsReorderable()
-                onPostBody.call(this.options, this.options.data)
-            }, 1)
-        }
-
-        super.init(...args)
-    }
-
-    makeRowsReorderable() {
-        this.$el.tableDnD({
-            onDragStyle: this.options.onDragStyle,
-            onDropStyle: this.options.onDropStyle,
-            onDragClass: this.options.onDragClass,
-            onAllowDrop: (hoveredRow, draggedRow) => this.onAllowDrop(hoveredRow, draggedRow),
-            onDragStop: (table, draggedRow) => this.onDragStop(table, draggedRow),
-            onDragStart: (table, droppedRow) => this.onDropStart(table, droppedRow),
-            onDrop: (table, droppedRow) => this.onDrop(table, droppedRow),
-            dragHandle: this.options.dragHandle
-        })
-    }
-
-    onDropStart(table, draggingTd) {
-        this.$draggingTd = $(draggingTd).css('cursor', 'move')
-        this.draggingIndex = $(this.$draggingTd.parent()).data('index')
-        // Call the user defined function
-        this.options.onReorderRowsDrag(this.data[this.draggingIndex])
-    }
-
-    onDragStop(table, draggedRow) {
-        const rowIndexDraggedRow = $(draggedRow).data('index')
-        const draggedRowItem = this.data[rowIndexDraggedRow]
-
-        this.options.onDragStop(table, draggedRowItem, draggedRow)
-    }
-
-    onAllowDrop(hoveredRow, draggedRow) {
-        const rowIndexDraggedRow = $(draggedRow).data('index')
-        const rowIndexHoveredRow = $(hoveredRow).data('index')
-        const draggedRowItem = this.data[rowIndexDraggedRow]
-        const hoveredRowItem = this.data[rowIndexHoveredRow]
-
-        return this.options.onAllowDrop(hoveredRowItem, draggedRowItem, hoveredRow, draggedRow)
-    }
-
-    onDrop(table) {
-        this.$draggingTd.css('cursor', '')
-        const pageNum = this.options.pageNumber
-        const pageSize = this.options.pageSize
-        const newData = []
-
-        for (let i = 0; i < table.tBodies[0].rows.length; i++) {
-            const $tr = $(table.tBodies[0].rows[i])
-
-            newData.push(this.data[$tr.data('index')])
-            $tr.data('index', i)
-        }
-
-        const draggingRow = this.data[this.draggingIndex]
-        const droppedIndex = newData.indexOf(this.data[this.draggingIndex])
-        const droppedRow = this.data[droppedIndex]
-        const index = (pageNum - 1) * pageSize + this.options.data.indexOf(this.data[droppedIndex])
-
-        this.options.data.splice(this.options.data.indexOf(draggingRow), 1)
-        this.options.data.splice(index, 0, draggingRow)
-
-        this.initSearch()
-
-        if (this.options.sidePagination === 'server') {
-            this.data = [...this.options.data]
-        }
-
-        // Call the user defined function
-        this.options.onReorderRowsDrop(droppedRow)
-
-        // Call the event reorder-row
-        this.trigger('reorder-row', newData, draggingRow, droppedRow)
-    }
-
-    initSearch() {
-        this.ignoreInitSort = true
-        super.initSearch()
-    }
-
-    initSort() {
-        if (this.ignoreInitSort) {
-            this.ignoreInitSort = false
-            return
-        }
-
-        super.initSort()
-    }
-}

+ 0 - 600
zhjq-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/reorder-rows/jquery.tablednd.js

@@ -1,600 +0,0 @@
-/**
- * TableDnD plug-in for JQuery, allows you to drag and drop table rows
- * You can set up various options to control how the system will work
- * Copyright (c) Denis Howlett <denish@isocra.com>
- * License: MIT.
- * See https://github.com/isocra/TableDnD
- */
-!function ($, window, document, undefined) {
-
-    var startEvent = 'touchstart mousedown',
-        moveEvent = 'touchmove mousemove',
-        endEvent = 'touchend mouseup';
-
-    $(document).ready(function () {
-        function parseStyle(css) {
-            var objMap = {},
-                parts = css.match(/([^;:]+)/g) || [];
-            while (parts.length)
-                objMap[parts.shift()] = parts.shift().trim();
-
-            return objMap;
-        }
-
-        $('table').each(function () {
-            if ($(this).data('table') === 'dnd') {
-
-                $(this).tableDnD({
-                    onDragStyle: $(this).data('ondragstyle') && parseStyle($(this).data('ondragstyle')) || null,
-                    onDropStyle: $(this).data('ondropstyle') && parseStyle($(this).data('ondropstyle')) || null,
-                    onDragClass: $(this).data('ondragclass') === undefined && "tDnD_whileDrag" || $(this).data('ondragclass'),
-                    onDrop: $(this).data('ondrop') && new Function('table', 'row', $(this).data('ondrop')), // 'return eval("'+$(this).data('ondrop')+'");') || null,
-                    onDragStart: $(this).data('ondragstart') && new Function('table', 'row', $(this).data('ondragstart')), // 'return eval("'+$(this).data('ondragstart')+'");') || null,
-                    onDragStop: $(this).data('ondragstop') && new Function('table', 'row', $(this).data('ondragstop')),
-                    scrollAmount: $(this).data('scrollamount') || 5,
-                    sensitivity: $(this).data('sensitivity') || 10,
-                    hierarchyLevel: $(this).data('hierarchylevel') || 0,
-                    indentArtifact: $(this).data('indentartifact') || '<div class="indent">&nbsp;</div>',
-                    autoWidthAdjust: $(this).data('autowidthadjust') || true,
-                    autoCleanRelations: $(this).data('autocleanrelations') || true,
-                    jsonPretifySeparator: $(this).data('jsonpretifyseparator') || '\t',
-                    serializeRegexp: $(this).data('serializeregexp') && new RegExp($(this).data('serializeregexp')) || /[^\-]*$/,
-                    serializeParamName: $(this).data('serializeparamname') || false,
-                    dragHandle: $(this).data('draghandle') || null
-                });
-            }
-
-
-        });
-    });
-
-    jQuery.tableDnD = {
-        /** Keep hold of the current table being dragged */
-        currentTable: null,
-        /** Keep hold of the current drag object if any */
-        dragObject: null,
-        /** The current mouse offset */
-        mouseOffset: null,
-        /** Remember the old value of X and Y so that we don't do too much processing */
-        oldX: 0,
-        oldY: 0,
-
-        /** Actually build the structure */
-        build: function (options) {
-            // Set up the defaults if any
-
-            this.each(function () {
-                // This is bound to each matching table, set up the defaults and override with user options
-                this.tableDnDConfig = $.extend({
-                    onDragStyle: null,
-                    onDropStyle: null,
-                    // Add in the default class for whileDragging
-                    onDragClass: "tDnD_whileDrag",
-                    onDrop: null,
-                    onDragStart: null,
-                    onDragStop: null,
-                    scrollAmount: 5,
-                    /** Sensitivity setting will throttle the trigger rate for movement detection */
-                    sensitivity: 10,
-                    /** Hierarchy level to support parent child. 0 switches this functionality off */
-                    hierarchyLevel: 0,
-                    /** The html artifact to prepend the first cell with as indentation */
-                    indentArtifact: '<div class="indent">&nbsp;</div>',
-                    /** Automatically adjust width of first cell */
-                    autoWidthAdjust: true,
-                    /** Automatic clean-up to ensure relationship integrity */
-                    autoCleanRelations: true,
-                    /** Specify a number (4) as number of spaces or any indent string for JSON.stringify */
-                    jsonPretifySeparator: '\t',
-                    /** The regular expression to use to trim row IDs */
-                    serializeRegexp: /[^\-]*$/,
-                    /** If you want to specify another parameter name instead of the table ID */
-                    serializeParamName: false,
-                    /** If you give the name of a class here, then only Cells with this class will be draggable */
-                    dragHandle: null
-                }, options || {});
-
-                // Now make the rows draggable
-                $.tableDnD.makeDraggable(this);
-                // Prepare hierarchy support
-                this.tableDnDConfig.hierarchyLevel
-                && $.tableDnD.makeIndented(this);
-            });
-
-            // Don't break the chain
-            return this;
-        },
-        makeIndented: function (table) {
-            var config = table.tableDnDConfig,
-                rows = table.rows,
-                firstCell = $(rows).first().find('td:first')[0],
-                indentLevel = 0,
-                cellWidth = 0,
-                longestCell,
-                tableStyle;
-
-            if ($(table).hasClass('indtd'))
-                return null;
-
-            tableStyle = $(table).addClass('indtd').attr('style');
-            $(table).css({whiteSpace: "nowrap"});
-
-            for (var w = 0; w < rows.length; w++) {
-                if (cellWidth < $(rows[w]).find('td:first').text().length) {
-                    cellWidth = $(rows[w]).find('td:first').text().length;
-                    longestCell = w;
-                }
-            }
-            $(firstCell).css({width: 'auto'});
-            for (w = 0; w < config.hierarchyLevel; w++)
-                $(rows[longestCell]).find('td:first').prepend(config.indentArtifact);
-            firstCell && $(firstCell).css({width: firstCell.offsetWidth});
-            tableStyle && $(table).css(tableStyle);
-
-            for (w = 0; w < config.hierarchyLevel; w++)
-                $(rows[longestCell]).find('td:first').children(':first').remove();
-
-            config.hierarchyLevel
-            && $(rows).each(function () {
-                indentLevel = $(this).data('level') || 0;
-                indentLevel <= config.hierarchyLevel
-                && $(this).data('level', indentLevel)
-                || $(this).data('level', 0);
-                for (var i = 0; i < $(this).data('level'); i++)
-                    $(this).find('td:first').prepend(config.indentArtifact);
-            });
-
-            return this;
-        },
-        /** This function makes all the rows on the table draggable apart from those marked as "NoDrag" */
-        makeDraggable: function (table) {
-            var config = table.tableDnDConfig;
-
-            config.dragHandle
-            // We only need to add the event to the specified cells
-            && $(config.dragHandle, table).each(function () {
-                if (!$(this).hasClass("nodrag")) {
-                    // The cell is bound to "this"
-                    $(this).bind(startEvent, function (e) {
-                        if (e.target.tagName === "TD" && event.target.className !== "nodrag") {
-                            $.tableDnD.initialiseDrag($(this).parents('tr')[0], table, this, e, config);
-                            return false;
-                        }
-                        return true;
-                    });
-                }
-            })
-            // For backwards compatibility, we add the event to the whole row
-            // get all the rows as a wrapped set
-            || $(table.rows).each(function () {
-                // Iterate through each row, the row is bound to "this"
-                if (!$(this).hasClass("nodrag")) {
-                    $(this).bind(startEvent, function (e) {
-                        if (e.target.tagName === "TD" && event.target.className !== "nodrag") {
-                            $.tableDnD.initialiseDrag(this, table, this, e, config);
-                            return false;
-                        }
-                    }).css("cursor", "move"); // Store the tableDnD object
-                } else {
-                    $(this).css("cursor", ""); // Remove the cursor if we don't have the nodrag class
-                }
-            });
-        },
-        currentOrder: function () {
-            var rows = this.currentTable.rows;
-            return $.map(rows, function (val) {
-                return ($(val).data('level') + val.id).replace(/\s/g, '');
-            }).join('');
-        },
-        initialiseDrag: function (dragObject, table, target, e, config) {
-            this.dragObject = dragObject;
-            this.currentTable = table;
-            this.mouseOffset = this.getMouseOffset(target, e);
-            this.originalOrder = this.currentOrder();
-
-            // Now we need to capture the mouse up and mouse move event
-            // We can use bind so that we don't interfere with other event handlers
-            $(document)
-                .bind(moveEvent, this.mousemove)
-                .bind(endEvent, this.mouseup);
-
-            // Call the onDragStart method if there is one
-            config.onDragStart
-            && config.onDragStart(table, target);
-        },
-        updateTables: function () {
-            this.each(function () {
-                // this is now bound to each matching table
-                if (this.tableDnDConfig)
-                    $.tableDnD.makeDraggable(this);
-            });
-        },
-        /** Get the mouse coordinates from the event (allowing for browser differences) */
-        mouseCoords: function (e) {
-            if (e.originalEvent.changedTouches)
-                return {
-                    x: e.originalEvent.changedTouches[0].clientX,
-                    y: e.originalEvent.changedTouches[0].clientY
-                };
-
-            if (e.pageX || e.pageY)
-                return {
-                    x: e.pageX,
-                    y: e.pageY
-                };
-
-            return {
-                x: e.clientX + document.body.scrollLeft - document.body.clientLeft,
-                y: e.clientY + document.body.scrollTop - document.body.clientTop
-            };
-        },
-        /** Given a target element and a mouse eent, get the mouse offset from that element.
-         To do this we need the element's position and the mouse position */
-        getMouseOffset: function (target, e) {
-            var mousePos,
-                docPos;
-
-            e = e || window.event;
-
-            docPos = this.getPosition(target);
-            mousePos = this.mouseCoords(e);
-
-            return {
-                x: mousePos.x - docPos.x,
-                y: mousePos.y - docPos.y
-            };
-        },
-        /** Get the position of an element by going up the DOM tree and adding up all the offsets */
-        getPosition: function (element) {
-            var left = 0,
-                top = 0;
-
-            // Safari fix -- thanks to Luis Chato for this!
-            // Safari 2 doesn't correctly grab the offsetTop of a table row
-            // this is detailed here:
-            // http://jacob.peargrove.com/blog/2006/technical/table-row-offsettop-bug-in-safari/
-            // the solution is likewise noted there, grab the offset of a table cell in the row - the firstChild.
-            // note that firefox will return a text node as a first child, so designing a more thorough
-            // solution may need to take that into account, for now this seems to work in firefox, safari, ie
-            if (element.offsetHeight === 0)
-                element = element.firstChild; // a table cell
-
-            while (element.offsetParent) {
-                left += element.offsetLeft;
-                top += element.offsetTop;
-                element = element.offsetParent;
-            }
-
-            left += element.offsetLeft;
-            top += element.offsetTop;
-
-            return {
-                x: left,
-                y: top
-            };
-        },
-        autoScroll: function (mousePos) {
-            var config = this.currentTable.tableDnDConfig,
-                yOffset = window.pageYOffset,
-                windowHeight = window.innerHeight
-                    ? window.innerHeight
-                    : document.documentElement.clientHeight
-                        ? document.documentElement.clientHeight
-                        : document.body.clientHeight;
-
-            // Windows version
-            // yOffset=document.body.scrollTop;
-            if (document.all)
-                if (typeof document.compatMode !== 'undefined'
-                    && document.compatMode !== 'BackCompat')
-                    yOffset = document.documentElement.scrollTop;
-                else if (typeof document.body !== 'undefined')
-                    yOffset = document.body.scrollTop;
-
-            mousePos.y - yOffset < config.scrollAmount
-            && window.scrollBy(0, -config.scrollAmount)
-            || windowHeight - (mousePos.y - yOffset) < config.scrollAmount
-            && window.scrollBy(0, config.scrollAmount);
-
-        },
-        moveVerticle: function (moving, currentRow) {
-
-            if (0 !== moving.vertical
-                // If we're over a row then move the dragged row to there so that the user sees the
-                // effect dynamically
-                && currentRow
-                && this.dragObject !== currentRow
-                && this.dragObject.parentNode === currentRow.parentNode)
-                0 > moving.vertical
-                && this.dragObject.parentNode.insertBefore(this.dragObject, currentRow.nextSibling)
-                || 0 < moving.vertical
-                && this.dragObject.parentNode.insertBefore(this.dragObject, currentRow);
-
-        },
-        moveHorizontal: function (moving, currentRow) {
-            var config = this.currentTable.tableDnDConfig,
-                currentLevel;
-
-            if (!config.hierarchyLevel
-                || 0 === moving.horizontal
-                // We only care if moving left or right on the current row
-                || !currentRow
-                || this.dragObject !== currentRow)
-                return null;
-
-            currentLevel = $(currentRow).data('level');
-
-            0 < moving.horizontal
-            && currentLevel > 0
-            && $(currentRow).find('td:first').children(':first').remove()
-            && $(currentRow).data('level', --currentLevel);
-
-            0 > moving.horizontal
-            && currentLevel < config.hierarchyLevel
-            && $(currentRow).prev().data('level') >= currentLevel
-            && $(currentRow).children(':first').prepend(config.indentArtifact)
-            && $(currentRow).data('level', ++currentLevel);
-
-        },
-        mousemove: function (e) {
-            var dragObj = $($.tableDnD.dragObject),
-                config = $.tableDnD.currentTable.tableDnDConfig,
-                currentRow,
-                mousePos,
-                moving,
-                x,
-                y;
-
-            e && e.preventDefault();
-
-            if (!$.tableDnD.dragObject)
-                return false;
-
-            // prevent touch device screen scrolling
-            e.type === 'touchmove'
-            && event.preventDefault(); // TODO verify this is event and not really e
-
-            // update the style to show we're dragging
-            config.onDragClass
-            && dragObj.addClass(config.onDragClass)
-            || dragObj.css(config.onDragStyle);
-
-            mousePos = $.tableDnD.mouseCoords(e);
-            x = mousePos.x - $.tableDnD.mouseOffset.x;
-            y = mousePos.y - $.tableDnD.mouseOffset.y;
-
-            // auto scroll the window
-            $.tableDnD.autoScroll(mousePos);
-
-            currentRow = $.tableDnD.findDropTargetRow(dragObj, y);
-            moving = $.tableDnD.findDragDirection(x, y);
-
-            $.tableDnD.moveVerticle(moving, currentRow);
-            $.tableDnD.moveHorizontal(moving, currentRow);
-
-            return false;
-        },
-        findDragDirection: function (x, y) {
-            var sensitivity = this.currentTable.tableDnDConfig.sensitivity,
-                oldX = this.oldX,
-                oldY = this.oldY,
-                xMin = oldX - sensitivity,
-                xMax = oldX + sensitivity,
-                yMin = oldY - sensitivity,
-                yMax = oldY + sensitivity,
-                moving = {
-                    horizontal: x >= xMin && x <= xMax ? 0 : x > oldX ? -1 : 1,
-                    vertical: y >= yMin && y <= yMax ? 0 : y > oldY ? -1 : 1
-                };
-
-            // update the old value
-            if (moving.horizontal !== 0)
-                this.oldX = x;
-            if (moving.vertical !== 0)
-                this.oldY = y;
-
-            return moving;
-        },
-        /** We're only worried about the y position really, because we can only move rows up and down */
-        findDropTargetRow: function (draggedRow, y) {
-            var rowHeight = 0,
-                rows = this.currentTable.rows,
-                config = this.currentTable.tableDnDConfig,
-                rowY = 0,
-                row = null;
-
-            for (var i = 0; i < rows.length; i++) {
-                row = rows[i];
-                rowY = this.getPosition(row).y;
-                rowHeight = parseInt(row.offsetHeight) / 2;
-                if (row.offsetHeight === 0) {
-                    rowY = this.getPosition(row.firstChild).y;
-                    rowHeight = parseInt(row.firstChild.offsetHeight) / 2;
-                }
-                // Because we always have to insert before, we need to offset the height a bit
-                if (y > (rowY - rowHeight) && y < (rowY + rowHeight))
-                    // that's the row we're over
-                    // If it's the same as the current row, ignore it
-                    if (draggedRow.is(row)
-                        || (config.onAllowDrop
-                            && !config.onAllowDrop(draggedRow, row))
-                        // If a row has nodrop class, then don't allow dropping (inspired by John Tarr and Famic)
-                        || $(row).hasClass("nodrop"))
-                        return null;
-                    else
-                        return row;
-            }
-            return null;
-        },
-        processMouseup: function () {
-            if (!this.currentTable || !this.dragObject)
-                return null;
-
-            var config = this.currentTable.tableDnDConfig,
-                droppedRow = this.dragObject,
-                parentLevel = 0,
-                myLevel = 0;
-
-            // Unbind the event handlers
-            $(document)
-                .unbind(moveEvent, this.mousemove)
-                .unbind(endEvent, this.mouseup);
-
-            config.hierarchyLevel
-            && config.autoCleanRelations
-            && $(this.currentTable.rows).first().find('td:first').children().each(function () {
-                myLevel = $(this).parents('tr:first').data('level');
-                myLevel
-                && $(this).parents('tr:first').data('level', --myLevel)
-                && $(this).remove();
-            })
-            && config.hierarchyLevel > 1
-            && $(this.currentTable.rows).each(function () {
-                myLevel = $(this).data('level');
-                if (myLevel > 1) {
-                    parentLevel = $(this).prev().data('level');
-                    while (myLevel > parentLevel + 1) {
-                        $(this).find('td:first').children(':first').remove();
-                        $(this).data('level', --myLevel);
-                    }
-                }
-            });
-
-            // If we have a dragObject, then we need to release it,
-            // The row will already have been moved to the right place so we just reset stuff
-            config.onDragClass
-            && $(droppedRow).removeClass(config.onDragClass)
-            || $(droppedRow).css(config.onDropStyle);
-
-            this.dragObject = null;
-            // Call the onDrop method if there is one
-            config.onDrop
-            && this.originalOrder !== this.currentOrder()
-            && $(droppedRow).hide().fadeIn('fast')
-            && config.onDrop(this.currentTable, droppedRow);
-
-            // Call the onDragStop method if there is one
-            config.onDragStop
-            && config.onDragStop(this.currentTable, droppedRow);
-
-            this.currentTable = null; // let go of the table too
-        },
-        mouseup: function (e) {
-            e && e.preventDefault();
-            $.tableDnD.processMouseup();
-            return false;
-        },
-        jsonize: function (pretify) {
-            var table = this.currentTable;
-            if (pretify)
-                return JSON.stringify(
-                    this.tableData(table),
-                    null,
-                    table.tableDnDConfig.jsonPretifySeparator
-                );
-            return JSON.stringify(this.tableData(table));
-        },
-        serialize: function () {
-            return $.param(this.tableData(this.currentTable));
-        },
-        serializeTable: function (table) {
-            var result = "";
-            var paramName = table.tableDnDConfig.serializeParamName || table.id;
-            var rows = table.rows;
-            for (var i = 0; i < rows.length; i++) {
-                if (result.length > 0) result += "&";
-                var rowId = rows[i].id;
-                if (rowId && table.tableDnDConfig && table.tableDnDConfig.serializeRegexp) {
-                    rowId = rowId.match(table.tableDnDConfig.serializeRegexp)[0];
-                    result += paramName + '[]=' + rowId;
-                }
-            }
-            return result;
-        },
-        serializeTables: function () {
-            var result = [];
-            $('table').each(function () {
-                this.id && result.push($.param($.tableDnD.tableData(this)));
-            });
-            return result.join('&');
-        },
-        tableData: function (table) {
-            var config = table.tableDnDConfig,
-                previousIDs = [],
-                currentLevel = 0,
-                indentLevel = 0,
-                rowID = null,
-                data = {},
-                getSerializeRegexp,
-                paramName,
-                currentID,
-                rows;
-
-            if (!table)
-                table = this.currentTable;
-            if (!table || !table.rows || !table.rows.length)
-                return {error: {code: 500, message: "Not a valid table."}};
-            if (!table.id && !config.serializeParamName)
-                return {error: {code: 500, message: "No serializable unique id provided."}};
-
-            rows = config.autoCleanRelations
-                && table.rows
-                || $.makeArray(table.rows);
-            paramName = config.serializeParamName || table.id;
-            currentID = paramName;
-
-            getSerializeRegexp = function (rowId) {
-                if (rowId && config && config.serializeRegexp)
-                    return rowId.match(config.serializeRegexp)[0];
-                return rowId;
-            };
-
-            data[currentID] = [];
-            !config.autoCleanRelations
-            && $(rows[0]).data('level')
-            && rows.unshift({id: 'undefined'});
-
-
-            for (var i = 0; i < rows.length; i++) {
-                if (config.hierarchyLevel) {
-                    indentLevel = $(rows[i]).data('level') || 0;
-                    if (indentLevel === 0) {
-                        currentID = paramName;
-                        previousIDs = [];
-                    } else if (indentLevel > currentLevel) {
-                        previousIDs.push([currentID, currentLevel]);
-                        currentID = getSerializeRegexp(rows[i - 1].id);
-                    } else if (indentLevel < currentLevel) {
-                        for (var h = 0; h < previousIDs.length; h++) {
-                            if (previousIDs[h][1] === indentLevel)
-                                currentID = previousIDs[h][0];
-                            if (previousIDs[h][1] >= currentLevel)
-                                previousIDs[h][1] = 0;
-                        }
-                    }
-                    currentLevel = indentLevel;
-
-                    if (!$.isArray(data[currentID]))
-                        data[currentID] = [];
-                    rowID = getSerializeRegexp(rows[i].id);
-                    rowID && data[currentID].push(rowID);
-                } else {
-                    rowID = getSerializeRegexp(rows[i].id);
-                    rowID && data[currentID].push(rowID);
-                }
-            }
-            return data;
-        }
-    };
-
-    jQuery.fn.extend(
-        {
-            tableDnD: $.tableDnD.build,
-            tableDnDUpdate: $.tableDnD.updateTables,
-            tableDnDSerialize: $.proxy($.tableDnD.serialize, $.tableDnD),
-            tableDnDSerializeAll: $.tableDnD.serializeTables,
-            tableDnDData: $.proxy($.tableDnD.tableData, $.tableDnD)
-        }
-    );
-
-}(jQuery, window, window.document);

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

@@ -1,68 +0,0 @@
-/**
- * @author: Dennis Hernández
- * @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)
-}
-
-Object.assign($.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)
-        }
-    }
-}

File diff suppressed because it is too large
+ 0 - 8
zhjq-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/resizable/jquery.resizableColumns.min.js


File diff suppressed because it is too large
+ 0 - 1085
zhjq-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/tree/bootstrap-table-tree.js


File diff suppressed because it is too large
+ 0 - 5
zhjq-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/tree/bootstrap-table-tree.min.js


+ 0 - 109
zhjq-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']);

File diff suppressed because it is too large
+ 0 - 1
zhjq-admin/src/main/resources/static/ajax/libs/bootstrap-table/locale/bootstrap-table-zh-CN.min.js


+ 0 - 304
zhjq-admin/src/main/resources/static/ajax/libs/cropper/cropper.css

@@ -1,304 +0,0 @@
-/*!
- * Cropper.js v1.5.12
- * https://fengyuanchen.github.io/cropperjs
- *
- * Copyright 2015-present Chen Fengyuan
- * Released under the MIT license
- *
- * Date: 2021-06-12T08:00:11.623Z
- */
-
-.cropper-container {
-    direction: ltr;
-    font-size: 0;
-    line-height: 0;
-    position: relative;
-    -ms-touch-action: none;
-    touch-action: none;
-    -webkit-user-select: none;
-    -moz-user-select: none;
-    -ms-user-select: none;
-    user-select: none;
-}
-
-.cropper-container img {
-    display: block;
-    height: 100%;
-    image-orientation: 0deg;
-    max-height: none !important;
-    max-width: none !important;
-    min-height: 0 !important;
-    min-width: 0 !important;
-    width: 100%;
-}
-
-.cropper-wrap-box,
-.cropper-canvas,
-.cropper-drag-box,
-.cropper-crop-box,
-.cropper-modal {
-    bottom: 0;
-    left: 0;
-    position: absolute;
-    right: 0;
-    top: 0;
-}
-
-.cropper-wrap-box,
-.cropper-canvas {
-    overflow: hidden;
-}
-
-.cropper-drag-box {
-    background-color: #fff;
-    opacity: 0;
-}
-
-.cropper-modal {
-    background-color: #000;
-    opacity: 0.5;
-}
-
-.cropper-view-box {
-    display: block;
-    height: 100%;
-    outline: 1px solid #39f;
-    outline-color: rgba(51, 153, 255, 0.75);
-    overflow: hidden;
-    width: 100%;
-}
-
-.cropper-dashed {
-    border: 0 dashed #eee;
-    display: block;
-    opacity: 0.5;
-    position: absolute;
-}
-
-.cropper-dashed.dashed-h {
-    border-bottom-width: 1px;
-    border-top-width: 1px;
-    height: calc(100% / 3);
-    left: 0;
-    top: calc(100% / 3);
-    width: 100%;
-}
-
-.cropper-dashed.dashed-v {
-    border-left-width: 1px;
-    border-right-width: 1px;
-    height: 100%;
-    left: calc(100% / 3);
-    top: 0;
-    width: calc(100% / 3);
-}
-
-.cropper-center {
-    display: block;
-    height: 0;
-    left: 50%;
-    opacity: 0.75;
-    position: absolute;
-    top: 50%;
-    width: 0;
-}
-
-.cropper-center::before,
-.cropper-center::after {
-    background-color: #eee;
-    content: ' ';
-    display: block;
-    position: absolute;
-}
-
-.cropper-center::before {
-    height: 1px;
-    left: -3px;
-    top: 0;
-    width: 7px;
-}
-
-.cropper-center::after {
-    height: 7px;
-    left: 0;
-    top: -3px;
-    width: 1px;
-}
-
-.cropper-face,
-.cropper-line,
-.cropper-point {
-    display: block;
-    height: 100%;
-    opacity: 0.1;
-    position: absolute;
-    width: 100%;
-}
-
-.cropper-face {
-    background-color: #fff;
-    left: 0;
-    top: 0;
-}
-
-.cropper-line {
-    background-color: #39f;
-}
-
-.cropper-line.line-e {
-    cursor: ew-resize;
-    right: -3px;
-    top: 0;
-    width: 5px;
-}
-
-.cropper-line.line-n {
-    cursor: ns-resize;
-    height: 5px;
-    left: 0;
-    top: -3px;
-}
-
-.cropper-line.line-w {
-    cursor: ew-resize;
-    left: -3px;
-    top: 0;
-    width: 5px;
-}
-
-.cropper-line.line-s {
-    bottom: -3px;
-    cursor: ns-resize;
-    height: 5px;
-    left: 0;
-}
-
-.cropper-point {
-    background-color: #39f;
-    height: 5px;
-    opacity: 0.75;
-    width: 5px;
-}
-
-.cropper-point.point-e {
-    cursor: ew-resize;
-    margin-top: -3px;
-    right: -3px;
-    top: 50%;
-}
-
-.cropper-point.point-n {
-    cursor: ns-resize;
-    left: 50%;
-    margin-left: -3px;
-    top: -3px;
-}
-
-.cropper-point.point-w {
-    cursor: ew-resize;
-    left: -3px;
-    margin-top: -3px;
-    top: 50%;
-}
-
-.cropper-point.point-s {
-    bottom: -3px;
-    cursor: s-resize;
-    left: 50%;
-    margin-left: -3px;
-}
-
-.cropper-point.point-ne {
-    cursor: nesw-resize;
-    right: -3px;
-    top: -3px;
-}
-
-.cropper-point.point-nw {
-    cursor: nwse-resize;
-    left: -3px;
-    top: -3px;
-}
-
-.cropper-point.point-sw {
-    bottom: -3px;
-    cursor: nesw-resize;
-    left: -3px;
-}
-
-.cropper-point.point-se {
-    bottom: -3px;
-    cursor: nwse-resize;
-    height: 20px;
-    opacity: 1;
-    right: -3px;
-    width: 20px;
-}
-
-@media (min-width: 768px) {
-    .cropper-point.point-se {
-        height: 15px;
-        width: 15px;
-    }
-}
-
-@media (min-width: 992px) {
-    .cropper-point.point-se {
-        height: 10px;
-        width: 10px;
-    }
-}
-
-@media (min-width: 1200px) {
-    .cropper-point.point-se {
-        height: 5px;
-        opacity: 0.75;
-        width: 5px;
-    }
-}
-
-.cropper-point.point-se::before {
-    background-color: #39f;
-    bottom: -50%;
-    content: ' ';
-    display: block;
-    height: 200%;
-    opacity: 0;
-    position: absolute;
-    right: -50%;
-    width: 200%;
-}
-
-.cropper-invisible {
-    opacity: 0;
-}
-
-.cropper-bg {
-    background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAAA3NCSVQICAjb4U/gAAAABlBMVEXMzMz////TjRV2AAAACXBIWXMAAArrAAAK6wGCiw1aAAAAHHRFWHRTb2Z0d2FyZQBBZG9iZSBGaXJld29ya3MgQ1M26LyyjAAAABFJREFUCJlj+M/AgBVhF/0PAH6/D/HkDxOGAAAAAElFTkSuQmCC');
-}
-
-.cropper-hide {
-    display: block;
-    height: 0;
-    position: absolute;
-    width: 0;
-}
-
-.cropper-hidden {
-    display: none !important;
-}
-
-.cropper-move {
-    cursor: move;
-}
-
-.cropper-crop {
-    cursor: crosshair;
-}
-
-.cropper-disabled .cropper-drag-box,
-.cropper-disabled .cropper-face,
-.cropper-disabled .cropper-line,
-.cropper-disabled .cropper-point {
-    cursor: not-allowed;
-}

File diff suppressed because it is too large
+ 0 - 3678
zhjq-admin/src/main/resources/static/ajax/libs/cropper/cropper.js


File diff suppressed because it is too large
+ 0 - 9
zhjq-admin/src/main/resources/static/ajax/libs/cropper/cropper.min.css


File diff suppressed because it is too large
+ 0 - 10
zhjq-admin/src/main/resources/static/ajax/libs/cropper/cropper.min.js


+ 0 - 463
zhjq-admin/src/main/resources/static/ajax/libs/cxselect/jquery.cxselect.js

@@ -1,463 +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;
-    };
-}));

File diff suppressed because it is too large
+ 0 - 11
zhjq-admin/src/main/resources/static/ajax/libs/cxselect/jquery.cxselect.min.js


+ 0 - 0
zhjq-admin/src/main/resources/static/ajax/libs/datapicker/bootstrap-datetimepicker.css


Some files were not shown because too many files changed in this diff