Pārlūkot izejas kodu

格式化代码格式

bihuisong 6 mēneši atpakaļ
vecāks
revīzija
d8664dc7fb
100 mainītis faili ar 39765 papildinājumiem un 35196 dzēšanām
  1. 4 4
      pom.xml
  2. 106 95
      sql/quartz.sql
  3. 4831 2825
      sql/ruoyi.html
  4. 892 518
      sql/ry_20240601.sql
  5. 8 8
      zhjq-admin/pom.xml
  6. 0 30
      zhjq-admin/src/main/java/com/zhjq/RuoYiApplication.java
  7. 4 6
      zhjq-admin/src/main/java/com/zhjq/RuoYiServletInitializer.java
  8. 19 0
      zhjq-admin/src/main/java/com/zhjq/ZHJQApplication.java
  9. 33 55
      zhjq-admin/src/main/java/com/zhjq/web/controller/common/CommonController.java
  10. 11 21
      zhjq-admin/src/main/java/com/zhjq/web/controller/demo/controller/DemoDialogController.java
  11. 62 90
      zhjq-admin/src/main/java/com/zhjq/web/controller/demo/controller/DemoFormController.java
  12. 4 7
      zhjq-admin/src/main/java/com/zhjq/web/controller/demo/controller/DemoIconController.java
  13. 49 93
      zhjq-admin/src/main/java/com/zhjq/web/controller/demo/controller/DemoOperateController.java
  14. 6 11
      zhjq-admin/src/main/java/com/zhjq/web/controller/demo/controller/DemoReportController.java
  15. 222 307
      zhjq-admin/src/main/java/com/zhjq/web/controller/demo/controller/DemoTableController.java
  16. 24 36
      zhjq-admin/src/main/java/com/zhjq/web/controller/demo/domain/CustomerModel.java
  17. 22 32
      zhjq-admin/src/main/java/com/zhjq/web/controller/demo/domain/GoodsModel.java
  18. 23 43
      zhjq-admin/src/main/java/com/zhjq/web/controller/demo/domain/UserOperateModel.java
  19. 12 20
      zhjq-admin/src/main/java/com/zhjq/web/controller/monitor/CacheController.java
  20. 4 6
      zhjq-admin/src/main/java/com/zhjq/web/controller/monitor/DruidController.java
  21. 5 7
      zhjq-admin/src/main/java/com/zhjq/web/controller/monitor/ServerController.java
  22. 19 25
      zhjq-admin/src/main/java/com/zhjq/web/controller/monitor/SysLogininforController.java
  23. 16 26
      zhjq-admin/src/main/java/com/zhjq/web/controller/monitor/SysOperlogController.java
  24. 20 27
      zhjq-admin/src/main/java/com/zhjq/web/controller/monitor/SysUserOnlineController.java
  25. 21 34
      zhjq-admin/src/main/java/com/zhjq/web/controller/system/SysCaptchaController.java
  26. 22 38
      zhjq-admin/src/main/java/com/zhjq/web/controller/system/SysConfigController.java
  27. 31 55
      zhjq-admin/src/main/java/com/zhjq/web/controller/system/SysDeptController.java
  28. 18 30
      zhjq-admin/src/main/java/com/zhjq/web/controller/system/SysDictDataController.java
  29. 25 44
      zhjq-admin/src/main/java/com/zhjq/web/controller/system/SysDictTypeController.java
  30. 32 52
      zhjq-admin/src/main/java/com/zhjq/web/controller/system/SysIndexController.java
  31. 18 26
      zhjq-admin/src/main/java/com/zhjq/web/controller/system/SysLoginController.java
  32. 28 51
      zhjq-admin/src/main/java/com/zhjq/web/controller/system/SysMenuController.java
  33. 18 30
      zhjq-admin/src/main/java/com/zhjq/web/controller/system/SysNoticeController.java
  34. 26 49
      zhjq-admin/src/main/java/com/zhjq/web/controller/system/SysPostController.java
  35. 28 53
      zhjq-admin/src/main/java/com/zhjq/web/controller/system/SysProfileController.java
  36. 10 14
      zhjq-admin/src/main/java/com/zhjq/web/controller/system/SysRegisterController.java
  37. 37 70
      zhjq-admin/src/main/java/com/zhjq/web/controller/system/SysRoleController.java
  38. 45 83
      zhjq-admin/src/main/java/com/zhjq/web/controller/system/SysUserController.java
  39. 4 6
      zhjq-admin/src/main/java/com/zhjq/web/controller/tool/BuildController.java
  40. 4 6
      zhjq-admin/src/main/java/com/zhjq/web/controller/tool/SwaggerController.java
  41. 36 72
      zhjq-admin/src/main/java/com/zhjq/web/controller/tool/TestController.java
  42. 10 11
      zhjq-admin/src/main/java/com/zhjq/web/core/config/SwaggerConfig.java
  43. 59 59
      zhjq-admin/src/main/resources/application-druid.yml
  44. 1 1
      zhjq-admin/src/main/resources/application.yml
  45. 1 23
      zhjq-admin/src/main/resources/banner.txt
  46. 8 8
      zhjq-admin/src/main/resources/ehcache/ehcache-shiro.xml
  47. 46 46
      zhjq-admin/src/main/resources/logback.xml
  48. 10 10
      zhjq-admin/src/main/resources/mybatis/mybatis-config.xml
  49. 507 524
      zhjq-admin/src/main/resources/static/ajax/libs/beautifyhtml/beautifyhtml.js
  50. 598 600
      zhjq-admin/src/main/resources/static/ajax/libs/blockUI/jquery.blockUI.js
  51. 103 103
      zhjq-admin/src/main/resources/static/ajax/libs/bootstrap-fileinput/fileinput.js
  52. 322 245
      zhjq-admin/src/main/resources/static/ajax/libs/bootstrap-select/bootstrap-select.css
  53. 2919 2909
      zhjq-admin/src/main/resources/static/ajax/libs/bootstrap-select/bootstrap-select.js
  54. 57 57
      zhjq-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/auto-refresh/bootstrap-table-auto-refresh.js
  55. 521 521
      zhjq-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/cookie/bootstrap-table-cookie.js
  56. 93 93
      zhjq-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/custom-view/bootstrap-table-custom-view.js
  57. 311 263
      zhjq-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/editable/bootstrap-editable.css
  58. 147 147
      zhjq-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/editable/bootstrap-table-editable.js
  59. 235 235
      zhjq-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/export/bootstrap-table-export.js
  60. 97 97
      zhjq-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/mobile/bootstrap-table-mobile.js
  61. 203 203
      zhjq-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/print/bootstrap-table-print.js
  62. 163 163
      zhjq-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/reorder-columns/bootstrap-table-reorder-columns.js
  63. 112 111
      zhjq-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/reorder-rows/bootstrap-table-reorder-rows.js
  64. 482 485
      zhjq-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/reorder-rows/jquery.tablednd.js
  65. 38 38
      zhjq-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/resizable/bootstrap-table-resizable.js
  66. 194 196
      zhjq-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/tree/bootstrap-table-tree.js
  67. 101 101
      zhjq-admin/src/main/resources/static/ajax/libs/bootstrap-table/locale/bootstrap-table-zh-CN.js
  68. 161 161
      zhjq-admin/src/main/resources/static/ajax/libs/cropper/cropper.css
  69. 3363 3316
      zhjq-admin/src/main/resources/static/ajax/libs/cropper/cropper.js
  70. 394 337
      zhjq-admin/src/main/resources/static/ajax/libs/cxselect/jquery.cxselect.js
  71. 154 154
      zhjq-admin/src/main/resources/static/ajax/libs/datapicker/bootstrap-datetimepicker.css
  72. 1888 1883
      zhjq-admin/src/main/resources/static/ajax/libs/datapicker/bootstrap-datetimepicker.js
  73. 30 29
      zhjq-admin/src/main/resources/static/ajax/libs/duallistbox/bootstrap-duallistbox.css
  74. 789 789
      zhjq-admin/src/main/resources/static/ajax/libs/duallistbox/bootstrap-duallistbox.js
  75. 17 17
      zhjq-admin/src/main/resources/static/ajax/libs/flot/curvedLines.js
  76. 351 189
      zhjq-admin/src/main/resources/static/ajax/libs/flot/jquery.flot.js
  77. 595 655
      zhjq-admin/src/main/resources/static/ajax/libs/flot/jquery.flot.pie.js
  78. 62 2
      zhjq-admin/src/main/resources/static/ajax/libs/flot/jquery.flot.resize.js
  79. 35 36
      zhjq-admin/src/main/resources/static/ajax/libs/flot/jquery.flot.spline.js
  80. 4 4
      zhjq-admin/src/main/resources/static/ajax/libs/flot/jquery.flot.symbol.js
  81. 40 61
      zhjq-admin/src/main/resources/static/ajax/libs/fullscreen/jquery.fullscreen.js
  82. 15 7
      zhjq-admin/src/main/resources/static/ajax/libs/iCheck/custom.css
  83. 402 288
      zhjq-admin/src/main/resources/static/ajax/libs/jasny/jasny-bootstrap.css
  84. 278 263
      zhjq-admin/src/main/resources/static/ajax/libs/jasny/jasny-bootstrap.js
  85. 352 79
      zhjq-admin/src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/default/zTreeStyle.css
  86. 428 86
      zhjq-admin/src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/metro/zTreeStyle.css
  87. 450 96
      zhjq-admin/src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/simple/zTreeStyle.css
  88. 3811 3765
      zhjq-admin/src/main/resources/static/ajax/libs/jquery-ztree/3.5/js/jquery.ztree.all-3.5.js
  89. 1645 1609
      zhjq-admin/src/main/resources/static/ajax/libs/jquery-ztree/3.5/js/jquery.ztree.core-3.5.js
  90. 598 594
      zhjq-admin/src/main/resources/static/ajax/libs/jquery-ztree/3.5/js/jquery.ztree.excheck-3.5.js
  91. 1171 1165
      zhjq-admin/src/main/resources/static/ajax/libs/jquery-ztree/3.5/js/jquery.ztree.exedit-3.5.js
  92. 342 341
      zhjq-admin/src/main/resources/static/ajax/libs/jquery-ztree/3.5/js/jquery.ztree.exhide-3.5.js
  93. 65 34
      zhjq-admin/src/main/resources/static/ajax/libs/jsonview/jquery.jsonview.css
  94. 234 234
      zhjq-admin/src/main/resources/static/ajax/libs/jsonview/jquery.jsonview.js
  95. 1146 199
      zhjq-admin/src/main/resources/static/ajax/libs/layer/css/layer.css
  96. 193 96
      zhjq-admin/src/main/resources/static/ajax/libs/layer/theme/moon/style.css
  97. 442 295
      zhjq-admin/src/main/resources/static/ajax/libs/select2/select2.css
  98. 5077 5084
      zhjq-admin/src/main/resources/static/ajax/libs/select2/select2.js
  99. 1096 1074
      zhjq-admin/src/main/resources/static/ajax/libs/suggest/bootstrap-suggest.js
  100. 0 0
      zhjq-admin/src/main/resources/static/ajax/libs/summernote/summernote-zh-CN.js

+ 4 - 4
pom.xml

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<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>
@@ -10,7 +10,7 @@
     <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>
@@ -96,7 +96,7 @@
                 <artifactId>druid-spring-boot-starter</artifactId>
                 <version>${druid.version}</version>
             </dependency>
-            
+
             <!-- 验证码 -->
             <dependency>
                 <groupId>pro.fessional</groupId>

+ 106 - 95
sql/quartz.sql

@@ -13,162 +13,173 @@ DROP TABLE IF EXISTS QRTZ_CALENDARS;
 -- ----------------------------
 -- 1、存储每一个已配置的 jobDetail 的详细信息
 -- ----------------------------
-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对象',
+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 = '任务详细信息表';
 
 -- ----------------------------
 -- 2、 存储已配置的 Trigger 的信息
 -- ----------------------------
-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对象',
+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)
+    foreign key (sched_name, job_name, job_group) references QRTZ_JOB_DETAILS (sched_name, job_name, job_group)
 ) engine=innodb comment = '触发器详细信息表';
 
 -- ----------------------------
 -- 3、 存储简单的 Trigger,包括重复次数,间隔,以及已触发的次数
 -- ----------------------------
-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 '已经触发的次数',
+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)
+    foreign key (sched_name, trigger_name, trigger_group) references QRTZ_TRIGGERS (sched_name, trigger_name, trigger_group)
 ) engine=innodb comment = '简单触发器的信息表';
 
 -- ----------------------------
 -- 4、 存储 Cron Trigger,包括 Cron 表达式和时区信息
 -- ---------------------------- 
-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 '时区',
+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)
+    foreign key (sched_name, trigger_name, trigger_group) references QRTZ_TRIGGERS (sched_name, trigger_name, trigger_group)
 ) engine=innodb comment = 'Cron类型的触发器表';
 
 -- ----------------------------
 -- 5、 Trigger 作为 Blob 类型存储(用于 Quartz 用户用 JDBC 创建他们自己定制的 Trigger 类型,JobStore 并不知道如何存储实例的时候)
 -- ---------------------------- 
-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对象',
+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)
+    foreign key (sched_name, trigger_name, trigger_group) references QRTZ_TRIGGERS (sched_name, trigger_name, trigger_group)
 ) engine=innodb comment = 'Blob类型的触发器表';
 
 -- ----------------------------
 -- 6、 以 Blob 类型存储存放日历信息, quartz可配置一个日历来指定一个时间范围
 -- ---------------------------- 
-create table QRTZ_CALENDARS (
-    sched_name           varchar(120)    not null            comment '调度名称',
-    calendar_name        varchar(200)    not null            comment '日历名称',
-    calendar             blob            not null            comment '存放持久化calendar对象',
+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 = '日历信息表';
 
 -- ----------------------------
 -- 7、 存储已暂停的 Trigger 组的信息
 -- ---------------------------- 
-create table QRTZ_PAUSED_TRIGGER_GRPS (
-    sched_name           varchar(120)    not null            comment '调度名称',
-    trigger_group        varchar(200)    not null            comment 'qrtz_triggers表trigger_group的外键',
+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 = '暂停的触发器表';
 
 -- ----------------------------
 -- 8、 存储与已触发的 Trigger 相关的状态信息,以及相联 Job 的执行信息
 -- ---------------------------- 
-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 '是否接受恢复执行',
+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 = '已触发的触发器表';
 
 -- ----------------------------
 -- 9、 存储少量的有关 Scheduler 的状态信息,假如是用于集群中,可以看到其他的 Scheduler 实例
 -- ---------------------------- 
-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 '检查间隔时间',
+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 = '调度器状态表';
 
 -- ----------------------------
 -- 10、 存储程序的悲观锁的信息(假如使用了悲观锁)
 -- ---------------------------- 
-create table QRTZ_LOCKS (
-    sched_name           varchar(120)    not null            comment '调度名称',
-    lock_name            varchar(40)     not null            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 = '存储的悲观锁信息表';
 
 -- ----------------------------
 -- 11、 Quartz集群实现同步机制的行锁表
 -- ---------------------------- 
-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的第二个参数',
+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)
+    foreign key (sched_name, trigger_name, trigger_group) references QRTZ_TRIGGERS (sched_name, trigger_name, trigger_group)
 ) engine=innodb comment = '同步机制的行锁表';
 
 commit;

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 4831 - 2825
sql/ruoyi.html


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 892 - 518
sql/ry_20240601.sql


+ 8 - 8
zhjq-admin/pom.xml

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+<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>
@@ -86,15 +86,15 @@
                     </execution>
                 </executions>
             </plugin>
-            <plugin>   
-                <groupId>org.apache.maven.plugins</groupId>   
-                <artifactId>maven-war-plugin</artifactId>   
-                <version>3.0.0</version>   
+            <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>   
+                </configuration>
+            </plugin>
             <!-- YUI Compressor (CSS/JS压缩) 
             <plugin>
                 <groupId>net.alchim31.maven</groupId>

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

@@ -1,30 +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 RuoYiApplication
-{
-    public static void main(String[] args)
-    {
-        // System.setProperty("spring.devtools.restart.enabled", "false");
-        SpringApplication.run(RuoYiApplication.class, args);
-        System.out.println("(♥◠‿◠)ノ゙  若依启动成功   ლ(´ڡ`ლ)゙  \n" +
-                " .-------.       ____     __        \n" +
-                " |  _ _   \\      \\   \\   /  /    \n" +
-                " | ( ' )  |       \\  _. /  '       \n" +
-                " |(_ o _) /        _( )_ .'         \n" +
-                " | (_,_).' __  ___(_ o _)'          \n" +
-                " |  |\\ \\  |  ||   |(_,_)'         \n" +
-                " |  | \\ `'   /|   `-'  /           \n" +
-                " |  |  \\    /  \\      /           \n" +
-                " ''-'   `'-'    `-..-'              ");
-    }
-}

+ 4 - 6
zhjq-admin/src/main/java/com/zhjq/RuoYiServletInitializer.java

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

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

@@ -0,0 +1,19 @@
+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("(♥◠‿◠)ノ゙  智慧景区启动成功   ლ(´ڡ`ლ)゙");
+    }
+}

+ 33 - 55
zhjq-admin/src/main/java/com/zhjq/web/controller/common/CommonController.java

@@ -1,9 +1,12 @@
 package com.zhjq.web.controller.common;
 
-import java.util.ArrayList;
-import java.util.List;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+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;
@@ -14,43 +17,35 @@ import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.multipart.MultipartFile;
-import com.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 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
-{
+public class CommonController {
     private static final Logger log = LoggerFactory.getLogger(CommonController.class);
-
+    private static final String FILE_DELIMETER = ",";
     @Autowired
     private ServerConfig serverConfig;
 
-    private static final String FILE_DELIMETER = ",";
-
     /**
      * 通用下载请求
-     * 
+     *
      * @param fileName 文件名称
-     * @param delete 是否删除
+     * @param delete   是否删除
      */
     @GetMapping("/download")
-    public void fileDownload(String fileName, Boolean delete, HttpServletResponse response, HttpServletRequest request)
-    {
-        try
-        {
-            if (!FileUtils.checkAllowDownload(fileName))
-            {
+    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);
@@ -59,13 +54,10 @@ public class CommonController
             response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
             FileUtils.setAttachmentResponseHeader(response, realFileName);
             FileUtils.writeBytes(filePath, response.getOutputStream());
-            if (delete)
-            {
+            if (delete) {
                 FileUtils.deleteFile(filePath);
             }
-        }
-        catch (Exception e)
-        {
+        } catch (Exception e) {
             log.error("下载文件失败", e);
         }
     }
@@ -75,10 +67,8 @@ public class CommonController
      */
     @PostMapping("/upload")
     @ResponseBody
-    public AjaxResult uploadFile(MultipartFile file) throws Exception
-    {
-        try
-        {
+    public AjaxResult uploadFile(MultipartFile file) throws Exception {
+        try {
             // 上传文件路径
             String filePath = RuoYiConfig.getUploadPath();
             // 上传并返回新文件名称
@@ -90,9 +80,7 @@ public class CommonController
             ajax.put("newFileName", FileUtils.getName(fileName));
             ajax.put("originalFilename", file.getOriginalFilename());
             return ajax;
-        }
-        catch (Exception e)
-        {
+        } catch (Exception e) {
             return AjaxResult.error(e.getMessage());
         }
     }
@@ -102,18 +90,15 @@ public class CommonController
      */
     @PostMapping("/uploads")
     @ResponseBody
-    public AjaxResult uploadFiles(List<MultipartFile> files) throws Exception
-    {
-        try
-        {
+    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)
-            {
+            for (MultipartFile file : files) {
                 // 上传并返回新文件名称
                 String fileName = FileUploadUtils.upload(filePath, file);
                 String url = serverConfig.getUrl() + fileName;
@@ -128,9 +113,7 @@ public class CommonController
             ajax.put("newFileNames", StringUtils.join(newFileNames, FILE_DELIMETER));
             ajax.put("originalFilenames", StringUtils.join(originalFilenames, FILE_DELIMETER));
             return ajax;
-        }
-        catch (Exception e)
-        {
+        } catch (Exception e) {
             return AjaxResult.error(e.getMessage());
         }
     }
@@ -140,12 +123,9 @@ public class CommonController
      */
     @GetMapping("/download/resource")
     public void resourceDownload(String resource, HttpServletRequest request, HttpServletResponse response)
-            throws Exception
-    {
-        try
-        {
-            if (!FileUtils.checkAllowDownload(resource))
-            {
+            throws Exception {
+        try {
+            if (!FileUtils.checkAllowDownload(resource)) {
                 throw new Exception(StringUtils.format("资源文件({})非法,不允许下载。 ", resource));
             }
             // 本地资源路径
@@ -157,9 +137,7 @@ public class CommonController
             response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
             FileUtils.setAttachmentResponseHeader(response, downloadName);
             FileUtils.writeBytes(downloadPath, response.getOutputStream());
-        }
-        catch (Exception e)
-        {
+        } catch (Exception e) {
             log.error("下载文件失败", e);
         }
     }

+ 11 - 21
zhjq-admin/src/main/java/com/zhjq/web/controller/demo/controller/DemoDialogController.java

@@ -6,21 +6,19 @@ import org.springframework.web.bind.annotation.RequestMapping;
 
 /**
  * 模态窗口
- * 
+ *
  * @author ruoyi
  */
 @Controller
 @RequestMapping("/demo/modal")
-public class DemoDialogController
-{
+public class DemoDialogController {
     private String prefix = "demo/modal";
 
     /**
      * 模态窗口
      */
     @GetMapping("/dialog")
-    public String dialog()
-    {
+    public String dialog() {
         return prefix + "/dialog";
     }
 
@@ -28,8 +26,7 @@ public class DemoDialogController
      * 弹层组件
      */
     @GetMapping("/layer")
-    public String layer()
-    {
+    public String layer() {
         return prefix + "/layer";
     }
 
@@ -37,8 +34,7 @@ public class DemoDialogController
      * 表单
      */
     @GetMapping("/form")
-    public String form()
-    {
+    public String form() {
         return prefix + "/form";
     }
 
@@ -46,8 +42,7 @@ public class DemoDialogController
      * 表格
      */
     @GetMapping("/table")
-    public String table()
-    {
+    public String table() {
         return prefix + "/table";
     }
 
@@ -55,8 +50,7 @@ public class DemoDialogController
      * 表格check
      */
     @GetMapping("/check")
-    public String check()
-    {
+    public String check() {
         return prefix + "/table/check";
     }
 
@@ -64,8 +58,7 @@ public class DemoDialogController
      * 表格radio
      */
     @GetMapping("/radio")
-    public String radio()
-    {
+    public String radio() {
         return prefix + "/table/radio";
     }
 
@@ -73,8 +66,7 @@ public class DemoDialogController
      * 表格回传父窗体
      */
     @GetMapping("/parent")
-    public String parent()
-    {
+    public String parent() {
         return prefix + "/table/parent";
     }
 
@@ -82,8 +74,7 @@ public class DemoDialogController
      * 多层窗口frame1
      */
     @GetMapping("/frame1")
-    public String frame1()
-    {
+    public String frame1() {
         return prefix + "/table/frame1";
     }
 
@@ -91,8 +82,7 @@ public class DemoDialogController
      * 多层窗口frame2
      */
     @GetMapping("/frame2")
-    public String frame2()
-    {
+    public String frame2() {
         return prefix + "/table/frame2";
     }
 }

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 62 - 90
zhjq-admin/src/main/java/com/zhjq/web/controller/demo/controller/DemoFormController.java


+ 4 - 7
zhjq-admin/src/main/java/com/zhjq/web/controller/demo/controller/DemoIconController.java

@@ -6,21 +6,19 @@ import org.springframework.web.bind.annotation.RequestMapping;
 
 /**
  * 图标相关
- * 
+ *
  * @author ruoyi
  */
 @Controller
 @RequestMapping("/demo/icon")
-public class DemoIconController
-{
+public class DemoIconController {
     private String prefix = "demo/icon";
 
     /**
      * FontAwesome图标
      */
     @GetMapping("/fontawesome")
-    public String fontAwesome()
-    {
+    public String fontAwesome() {
         return prefix + "/fontawesome";
     }
 
@@ -28,8 +26,7 @@ public class DemoIconController
      * Glyphicons图标
      */
     @GetMapping("/glyphicons")
-    public String glyphicons()
-    {
+    public String glyphicons() {
         return prefix + "/glyphicons";
     }
 }

+ 49 - 93
zhjq-admin/src/main/java/com/zhjq/web/controller/demo/controller/DemoOperateController.java

@@ -1,17 +1,5 @@
 package com.zhjq.web.controller.demo.controller;
 
-import java.util.ArrayList;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-import org.springframework.stereotype.Controller;
-import org.springframework.ui.ModelMap;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.ResponseBody;
-import org.springframework.web.multipart.MultipartFile;
 import com.zhjq.common.core.controller.BaseController;
 import com.zhjq.common.core.domain.AjaxResult;
 import com.zhjq.common.core.page.PageDomain;
@@ -23,19 +11,27 @@ 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
-{
+public class DemoOperateController extends BaseController {
+    private final static Map<Integer, UserOperateModel> users = new LinkedHashMap<Integer, UserOperateModel>();
     private String prefix = "demo/operate";
 
-    private final static Map<Integer, UserOperateModel> users = new LinkedHashMap<Integer, UserOperateModel>();
     {
         users.put(1, new UserOperateModel(1, "1000001", "测试1", "0", "15888888888", "ry@qq.com", 150.0, "0"));
         users.put(2, new UserOperateModel(2, "1000002", "测试2", "1", "15666666666", "ry@qq.com", 180.0, "1"));
@@ -69,8 +65,7 @@ public class DemoOperateController extends BaseController
      * 表格
      */
     @GetMapping("/table")
-    public String table()
-    {
+    public String table() {
         return prefix + "/table";
     }
 
@@ -78,8 +73,7 @@ public class DemoOperateController extends BaseController
      * 其他
      */
     @GetMapping("/other")
-    public String other()
-    {
+    public String other() {
         return prefix + "/other";
     }
 
@@ -88,44 +82,34 @@ public class DemoOperateController extends BaseController
      */
     @PostMapping("/list")
     @ResponseBody
-    public TableDataInfo list(UserOperateModel userModel)
-    {
+    public TableDataInfo list(UserOperateModel userModel) {
         TableDataInfo rspData = new TableDataInfo();
         List<UserOperateModel> userList = new ArrayList<UserOperateModel>(users.values());
         // 查询条件过滤
-        if (StringUtils.isNotEmpty(userModel.getSearchValue()))
-        {
+        if (StringUtils.isNotEmpty(userModel.getSearchValue())) {
             userList.clear();
-            for (Map.Entry<Integer, UserOperateModel> entry : users.entrySet())
-            {
-                if (entry.getValue().getUserName().equals(userModel.getSearchValue()))
-                {
+            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()))
-        {
+        } else if (StringUtils.isNotEmpty(userModel.getUserName())) {
             userList.clear();
-            for (Map.Entry<Integer, UserOperateModel> entry : users.entrySet())
-            {
-                if (entry.getValue().getUserName().equals(userModel.getUserName()))
-                {
+            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())
-        {
+        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())
-        {
+        if (pageSize > userList.size()) {
             pageSize = userList.size();
         }
         rspData.setRows(userList.subList(pageNum, pageSize));
@@ -137,8 +121,7 @@ public class DemoOperateController extends BaseController
      * 新增用户
      */
     @GetMapping("/add")
-    public String add(ModelMap mmap)
-    {
+    public String add(ModelMap mmap) {
         return prefix + "/add";
     }
 
@@ -147,8 +130,7 @@ public class DemoOperateController extends BaseController
      */
     @PostMapping("/add")
     @ResponseBody
-    public AjaxResult addSave(UserOperateModel user)
-    {
+    public AjaxResult addSave(UserOperateModel user) {
         Integer userId = users.size() + 1;
         user.setUserId(userId);
         return AjaxResult.success(users.put(userId, user));
@@ -159,8 +141,7 @@ public class DemoOperateController extends BaseController
      */
     @PostMapping("/customer/add")
     @ResponseBody
-    public AjaxResult addSave(CustomerModel customerModel)
-    {
+    public AjaxResult addSave(CustomerModel customerModel) {
         System.out.println(customerModel.toString());
         return AjaxResult.success();
     }
@@ -169,8 +150,7 @@ public class DemoOperateController extends BaseController
      * 修改用户
      */
     @GetMapping("/edit/{userId}")
-    public String edit(@PathVariable("userId") Integer userId, ModelMap mmap)
-    {
+    public String edit(@PathVariable("userId") Integer userId, ModelMap mmap) {
         mmap.put("user", users.get(userId));
         return prefix + "/edit";
     }
@@ -180,8 +160,7 @@ public class DemoOperateController extends BaseController
      */
     @PostMapping("/edit")
     @ResponseBody
-    public AjaxResult editSave(UserOperateModel user)
-    {
+    public AjaxResult editSave(UserOperateModel user) {
         return AjaxResult.success(users.put(user.getUserId(), user));
     }
 
@@ -190,8 +169,7 @@ public class DemoOperateController extends BaseController
      */
     @PostMapping("/export")
     @ResponseBody
-    public AjaxResult export(UserOperateModel user)
-    {
+    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, "用户数据");
@@ -202,8 +180,7 @@ public class DemoOperateController extends BaseController
      */
     @GetMapping("/importTemplate")
     @ResponseBody
-    public AjaxResult importTemplate()
-    {
+    public AjaxResult importTemplate() {
         ExcelUtil<UserOperateModel> util = new ExcelUtil<UserOperateModel>(UserOperateModel.class);
         return util.importTemplateExcel("用户数据");
     }
@@ -213,8 +190,7 @@ public class DemoOperateController extends BaseController
      */
     @PostMapping("/importData")
     @ResponseBody
-    public AjaxResult importData(MultipartFile file, boolean updateSupport) throws Exception
-    {
+    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);
@@ -226,11 +202,9 @@ public class DemoOperateController extends BaseController
      */
     @PostMapping("/remove")
     @ResponseBody
-    public AjaxResult remove(String ids)
-    {
+    public AjaxResult remove(String ids) {
         Integer[] userIds = Convert.toIntArray(ids);
-        for (Integer userId : userIds)
-        {
+        for (Integer userId : userIds) {
             users.remove(userId);
         }
         return AjaxResult.success();
@@ -240,85 +214,67 @@ public class DemoOperateController extends BaseController
      * 查看详细
      */
     @GetMapping("/detail/{userId}")
-    public String detail(@PathVariable("userId") Integer userId, ModelMap mmap)
-    {
+    public String detail(@PathVariable("userId") Integer userId, ModelMap mmap) {
         mmap.put("user", users.get(userId));
         return prefix + "/detail";
     }
 
     @PostMapping("/clean")
     @ResponseBody
-    public AjaxResult clean()
-    {
+    public AjaxResult clean() {
         users.clear();
         return success();
     }
 
     /**
      * 导入用户数据
-     * 
-     * @param userList 用户数据列表
+     *
+     * @param userList        用户数据列表
      * @param isUpdateSupport 是否更新支持,如果已存在,则进行更新数据
      * @return 结果
      */
-    public String importUser(List<UserOperateModel> userList, Boolean isUpdateSupport)
-    {
-        if (StringUtils.isNull(userList) || userList.size() == 0)
-        {
+    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
-            {
+        for (UserOperateModel user : userList) {
+            try {
                 // 验证是否存在这个用户
                 boolean userFlag = false;
-                for (Map.Entry<Integer, UserOperateModel> entry : users.entrySet())
-                {
-                    if (entry.getValue().getUserName().equals(user.getUserName()))
-                    {
+                for (Map.Entry<Integer, UserOperateModel> entry : users.entrySet()) {
+                    if (entry.getValue().getUserName().equals(user.getUserName())) {
                         userFlag = true;
                         break;
                     }
                 }
-                if (!userFlag)
-                {
+                if (!userFlag) {
                     Integer userId = users.size() + 1;
                     user.setUserId(userId);
                     users.put(userId, user);
                     successNum++;
                     successMsg.append("<br/>" + successNum + "、用户 " + user.getUserName() + " 导入成功");
-                }
-                else if (isUpdateSupport)
-                {
+                } else if (isUpdateSupport) {
                     users.put(user.getUserId(), user);
                     successNum++;
                     successMsg.append("<br/>" + successNum + "、用户 " + user.getUserName() + " 更新成功");
-                }
-                else
-                {
+                } else {
                     failureNum++;
                     failureMsg.append("<br/>" + failureNum + "、用户 " + user.getUserName() + " 已存在");
                 }
-            }
-            catch (Exception e)
-            {
+            } catch (Exception e) {
                 failureNum++;
                 String msg = "<br/>" + failureNum + "、账号 " + user.getUserName() + " 导入失败:";
                 failureMsg.append(msg + e.getMessage());
             }
         }
-        if (failureNum > 0)
-        {
+        if (failureNum > 0) {
             failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确,错误如下:");
             throw new ServiceException(failureMsg.toString());
-        }
-        else
-        {
+        } else {
             successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条,数据如下:");
         }
         return successMsg.toString();

+ 6 - 11
zhjq-admin/src/main/java/com/zhjq/web/controller/demo/controller/DemoReportController.java

@@ -6,21 +6,19 @@ import org.springframework.web.bind.annotation.RequestMapping;
 
 /**
  * 报表
- * 
+ *
  * @author ruoyi
  */
 @Controller
 @RequestMapping("/demo/report")
-public class DemoReportController
-{
+public class DemoReportController {
     private String prefix = "demo/report";
 
     /**
      * 百度ECharts
      */
     @GetMapping("/echarts")
-    public String echarts()
-    {
+    public String echarts() {
         return prefix + "/echarts";
     }
 
@@ -28,8 +26,7 @@ public class DemoReportController
      * 图表插件
      */
     @GetMapping("/peity")
-    public String peity()
-    {
+    public String peity() {
         return prefix + "/peity";
     }
 
@@ -37,8 +34,7 @@ public class DemoReportController
      * 线状图插件
      */
     @GetMapping("/sparkline")
-    public String sparkline()
-    {
+    public String sparkline() {
         return prefix + "/sparkline";
     }
 
@@ -46,8 +42,7 @@ public class DemoReportController
      * 图表组合
      */
     @GetMapping("/metrics")
-    public String metrics()
-    {
+    public String metrics() {
         return prefix + "/metrics";
     }
 }

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 222 - 307
zhjq-admin/src/main/java/com/zhjq/web/controller/demo/controller/DemoTableController.java


+ 24 - 36
zhjq-admin/src/main/java/com/zhjq/web/controller/demo/domain/CustomerModel.java

@@ -1,16 +1,16 @@
 package com.zhjq.web.controller.demo.domain;
 
-import java.util.List;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
 
+import java.util.List;
+
 /**
  * 客户测试信息
- * 
+ *
  * @author ruoyi
  */
-public class CustomerModel
-{
+public class CustomerModel {
     /**
      * 客户姓名
      */
@@ -41,76 +41,64 @@ public class CustomerModel
      */
     private List<GoodsModel> goods;
 
-    public String getName()
-    {
+    public String getName() {
         return name;
     }
 
-    public void setName(String name)
-    {
+    public void setName(String name) {
         this.name = name;
     }
 
-    public String getPhonenumber()
-    {
+    public String getPhonenumber() {
         return phonenumber;
     }
 
-    public void setPhonenumber(String phonenumber)
-    {
+    public void setPhonenumber(String phonenumber) {
         this.phonenumber = phonenumber;
     }
 
 
-    public String getSex()
-    {
+    public String getSex() {
         return sex;
     }
 
-    public void setSex(String sex)
-    {
+    public void setSex(String sex) {
         this.sex = sex;
     }
 
-    public String getBirthday()
-    {
+    public String getBirthday() {
         return birthday;
     }
 
-    public void setBirthday(String birthday)
-    {
+    public void setBirthday(String birthday) {
         this.birthday = birthday;
     }
 
-    public String getRemark()
-    {
+    public String getRemark() {
         return remark;
     }
 
-    public void setRemark(String remark)
-    {
+    public void setRemark(String remark) {
         this.remark = remark;
     }
 
-    public List<GoodsModel> getGoods()
-    {
+    public List<GoodsModel> getGoods() {
         return goods;
     }
 
-    public void setGoods(List<GoodsModel> 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();
+        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();
     }
 }

+ 22 - 32
zhjq-admin/src/main/java/com/zhjq/web/controller/demo/domain/GoodsModel.java

@@ -1,16 +1,16 @@
 package com.zhjq.web.controller.demo.domain;
 
-import java.util.Date;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
 
+import java.util.Date;
+
 /**
  * 商品测试信息
- * 
+ *
  * @author ruoyi
  */
-public class GoodsModel
-{
+public class GoodsModel {
     /**
      * 商品名称
      */
@@ -25,7 +25,7 @@ public class GoodsModel
      * 商品价格
      */
     private Double price;
-    
+
     /**
      * 商品日期
      */
@@ -36,64 +36,54 @@ public class GoodsModel
      */
     private String type;
 
-    public String getName()
-    {
+    public String getName() {
         return name;
     }
 
-    public void setName(String name)
-    {
+    public void setName(String name) {
         this.name = name;
     }
 
-    public Integer getWeight()
-    {
+    public Integer getWeight() {
         return weight;
     }
 
-    public void setWeight(Integer weight)
-    {
+    public void setWeight(Integer weight) {
         this.weight = weight;
     }
 
-    public Double getPrice()
-    {
+    public Double getPrice() {
         return price;
     }
 
-    public void setPrice(Double price)
-    {
+    public void setPrice(Double price) {
         this.price = price;
     }
 
-    public Date getDate()
-    {
+    public Date getDate() {
         return date;
     }
 
-    public void setDate(Date date)
-    {
+    public void setDate(Date date) {
         this.date = date;
     }
 
-    public String getType()
-    {
+    public String getType() {
         return type;
     }
 
-    public void setType(String 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();
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+                .append("name", getName())
+                .append("weight", getWeight())
+                .append("price", getPrice())
+                .append("date", getDate())
+                .append("type", getType())
+                .toString();
     }
 }

+ 23 - 43
zhjq-admin/src/main/java/com/zhjq/web/controller/demo/domain/UserOperateModel.java

@@ -1,13 +1,13 @@
 package com.zhjq.web.controller.demo.domain;
 
-import java.util.Date;
 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;
 
-public class UserOperateModel extends BaseEntity
-{
+import java.util.Date;
+
+public class UserOperateModel extends BaseEntity {
     private static final long serialVersionUID = 1L;
 
     private int userId;
@@ -36,14 +36,12 @@ public class UserOperateModel extends BaseEntity
     @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss", type = Type.EXPORT)
     private Date createTime;
 
-    public UserOperateModel()
-    {
+    public UserOperateModel() {
 
     }
 
     public UserOperateModel(int userId, String userCode, String userName, String userSex, String userPhone,
-            String userEmail, double userBalance, String status)
-    {
+                            String userEmail, double userBalance, String status) {
         this.userId = userId;
         this.userCode = userCode;
         this.userName = userName;
@@ -55,95 +53,77 @@ public class UserOperateModel extends BaseEntity
         this.createTime = DateUtils.getNowDate();
     }
 
-    public int getUserId()
-    {
+    public int getUserId() {
         return userId;
     }
 
-    public void setUserId(int userId)
-    {
+    public void setUserId(int userId) {
         this.userId = userId;
     }
 
-    public String getUserCode()
-    {
+    public String getUserCode() {
         return userCode;
     }
 
-    public void setUserCode(String userCode)
-    {
+    public void setUserCode(String userCode) {
         this.userCode = userCode;
     }
 
-    public String getUserName()
-    {
+    public String getUserName() {
         return userName;
     }
 
-    public void setUserName(String userName)
-    {
+    public void setUserName(String userName) {
         this.userName = userName;
     }
 
-    public String getUserSex()
-    {
+    public String getUserSex() {
         return userSex;
     }
 
-    public void setUserSex(String userSex)
-    {
+    public void setUserSex(String userSex) {
         this.userSex = userSex;
     }
 
-    public String getUserPhone()
-    {
+    public String getUserPhone() {
         return userPhone;
     }
 
-    public void setUserPhone(String userPhone)
-    {
+    public void setUserPhone(String userPhone) {
         this.userPhone = userPhone;
     }
 
-    public String getUserEmail()
-    {
+    public String getUserEmail() {
         return userEmail;
     }
 
-    public void setUserEmail(String userEmail)
-    {
+    public void setUserEmail(String userEmail) {
         this.userEmail = userEmail;
     }
 
-    public double getUserBalance()
-    {
+    public double getUserBalance() {
         return userBalance;
     }
 
-    public void setUserBalance(double userBalance)
-    {
+    public void setUserBalance(double userBalance) {
         this.userBalance = userBalance;
     }
 
-    public String getStatus()
-    {
+    public String getStatus() {
         return status;
     }
 
-    public void setStatus(String status)
-    {
+    public void setStatus(String status) {
         this.status = status;
     }
 
     @Override
-    public Date getCreateTime()
-    {
+    public Date getCreateTime() {
         return createTime;
     }
 
     @Override
-    public void setCreateTime(Date createTime)
-    {
+    public void setCreateTime(Date createTime) {
         this.createTime = createTime;
     }
 }

+ 12 - 20
zhjq-admin/src/main/java/com/zhjq/web/controller/monitor/CacheController.java

@@ -1,5 +1,8 @@
 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;
@@ -8,19 +11,15 @@ import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.ResponseBody;
-import com.zhjq.common.core.controller.BaseController;
-import com.zhjq.common.core.domain.AjaxResult;
-import com.zhjq.framework.web.service.CacheService;
 
 /**
  * 缓存监控
- * 
+ *
  * @author ruoyi
  */
 @Controller
 @RequestMapping("/monitor/cache")
-public class CacheController extends BaseController
-{
+public class CacheController extends BaseController {
     private String prefix = "monitor/cache";
 
     @Autowired
@@ -28,24 +27,21 @@ public class CacheController extends BaseController
 
     @RequiresPermissions("monitor:cache:view")
     @GetMapping()
-    public String cache(ModelMap mmap)
-    {
+    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)
-    {
+    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)
-    {
+    public String getCacheKeys(String fragment, String cacheName, ModelMap mmap) {
         mmap.put("cacheName", cacheName);
         mmap.put("cacheKeys", cacheService.getCacheKeys(cacheName));
         return prefix + "/cache::" + fragment;
@@ -53,8 +49,7 @@ public class CacheController extends BaseController
 
     @RequiresPermissions("monitor:cache:view")
     @PostMapping("/getValue")
-    public String getCacheValue(String fragment, String cacheName, String cacheKey, ModelMap mmap)
-    {
+    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));
@@ -64,8 +59,7 @@ public class CacheController extends BaseController
     @RequiresPermissions("monitor:cache:view")
     @PostMapping("/clearCacheName")
     @ResponseBody
-    public AjaxResult clearCacheName(String cacheName, ModelMap mmap)
-    {
+    public AjaxResult clearCacheName(String cacheName, ModelMap mmap) {
         cacheService.clearCacheName(cacheName);
         return AjaxResult.success();
     }
@@ -73,8 +67,7 @@ public class CacheController extends BaseController
     @RequiresPermissions("monitor:cache:view")
     @PostMapping("/clearCacheKey")
     @ResponseBody
-    public AjaxResult clearCacheKey(String cacheName, String cacheKey, ModelMap mmap)
-    {
+    public AjaxResult clearCacheKey(String cacheName, String cacheKey, ModelMap mmap) {
         cacheService.clearCacheKey(cacheName, cacheKey);
         return AjaxResult.success();
     }
@@ -82,8 +75,7 @@ public class CacheController extends BaseController
     @RequiresPermissions("monitor:cache:view")
     @GetMapping("/clearAll")
     @ResponseBody
-    public AjaxResult clearAll(ModelMap mmap)
-    {
+    public AjaxResult clearAll(ModelMap mmap) {
         cacheService.clearAll();
         return AjaxResult.success();
     }

+ 4 - 6
zhjq-admin/src/main/java/com/zhjq/web/controller/monitor/DruidController.java

@@ -1,26 +1,24 @@
 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;
-import com.zhjq.common.core.controller.BaseController;
 
 /**
  * druid 监控
- * 
+ *
  * @author ruoyi
  */
 @Controller
 @RequestMapping("/monitor/data")
-public class DruidController extends BaseController
-{
+public class DruidController extends BaseController {
     private String prefix = "/druid";
 
     @RequiresPermissions("monitor:data:view")
     @GetMapping()
-    public String index()
-    {
+    public String index() {
         return redirect(prefix + "/index.html");
     }
 }

+ 5 - 7
zhjq-admin/src/main/java/com/zhjq/web/controller/monitor/ServerController.java

@@ -1,28 +1,26 @@
 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;
-import com.zhjq.common.core.controller.BaseController;
-import com.zhjq.framework.web.domain.Server;
 
 /**
  * 服务器监控
- * 
+ *
  * @author ruoyi
  */
 @Controller
 @RequestMapping("/monitor/server")
-public class ServerController extends BaseController
-{
+public class ServerController extends BaseController {
     private String prefix = "monitor/server";
 
     @RequiresPermissions("monitor:server:view")
     @GetMapping()
-    public String server(ModelMap mmap) throws Exception
-    {
+    public String server(ModelMap mmap) throws Exception {
         Server server = new Server();
         server.copyTo();
         mmap.put("server", server);

+ 19 - 25
zhjq-admin/src/main/java/com/zhjq/web/controller/monitor/SysLogininforController.java

@@ -1,32 +1,32 @@
 package com.zhjq.web.controller.monitor;
 
-import java.util.List;
-import com.zhjq.framework.shiro.service.SysPasswordService;
-import org.apache.shiro.authz.annotation.RequiresPermissions;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.ResponseBody;
 import com.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
-{
+public class SysLogininforController extends BaseController {
     private String prefix = "monitor/logininfor";
 
     @Autowired
@@ -37,16 +37,14 @@ public class SysLogininforController extends BaseController
 
     @RequiresPermissions("monitor:logininfor:view")
     @GetMapping()
-    public String logininfor()
-    {
+    public String logininfor() {
         return prefix + "/logininfor";
     }
 
     @RequiresPermissions("monitor:logininfor:list")
     @PostMapping("/list")
     @ResponseBody
-    public TableDataInfo list(SysLogininfor logininfor)
-    {
+    public TableDataInfo list(SysLogininfor logininfor) {
         startPage();
         List<SysLogininfor> list = logininforService.selectLogininforList(logininfor);
         return getDataTable(list);
@@ -56,8 +54,7 @@ public class SysLogininforController extends BaseController
     @RequiresPermissions("monitor:logininfor:export")
     @PostMapping("/export")
     @ResponseBody
-    public AjaxResult export(SysLogininfor logininfor)
-    {
+    public AjaxResult export(SysLogininfor logininfor) {
         List<SysLogininfor> list = logininforService.selectLogininforList(logininfor);
         ExcelUtil<SysLogininfor> util = new ExcelUtil<SysLogininfor>(SysLogininfor.class);
         return util.exportExcel(list, "登录日志");
@@ -67,17 +64,15 @@ public class SysLogininforController extends BaseController
     @Log(title = "登录日志", businessType = BusinessType.DELETE)
     @PostMapping("/remove")
     @ResponseBody
-    public AjaxResult remove(String ids)
-    {
+    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()
-    {
+    public AjaxResult clean() {
         logininforService.cleanLogininfor();
         return success();
     }
@@ -86,8 +81,7 @@ public class SysLogininforController extends BaseController
     @Log(title = "账户解锁", businessType = BusinessType.OTHER)
     @PostMapping("/unlock")
     @ResponseBody
-    public AjaxResult unlock(String loginName)
-    {
+    public AjaxResult unlock(String loginName) {
         passwordService.clearLoginRecordCache(loginName);
         return success();
     }

+ 16 - 26
zhjq-admin/src/main/java/com/zhjq/web/controller/monitor/SysOperlogController.java

@@ -1,15 +1,5 @@
 package com.zhjq.web.controller.monitor;
 
-import java.util.List;
-import org.apache.shiro.authz.annotation.RequiresPermissions;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Controller;
-import org.springframework.ui.ModelMap;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.ResponseBody;
 import com.zhjq.common.annotation.Log;
 import com.zhjq.common.core.controller.BaseController;
 import com.zhjq.common.core.domain.AjaxResult;
@@ -18,16 +8,22 @@ 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
-{
+public class SysOperlogController extends BaseController {
     private String prefix = "monitor/operlog";
 
     @Autowired
@@ -35,16 +31,14 @@ public class SysOperlogController extends BaseController
 
     @RequiresPermissions("monitor:operlog:view")
     @GetMapping()
-    public String operlog()
-    {
+    public String operlog() {
         return prefix + "/operlog";
     }
 
     @RequiresPermissions("monitor:operlog:list")
     @PostMapping("/list")
     @ResponseBody
-    public TableDataInfo list(SysOperLog operLog)
-    {
+    public TableDataInfo list(SysOperLog operLog) {
         startPage();
         List<SysOperLog> list = operLogService.selectOperLogList(operLog);
         return getDataTable(list);
@@ -54,8 +48,7 @@ public class SysOperlogController extends BaseController
     @RequiresPermissions("monitor:operlog:export")
     @PostMapping("/export")
     @ResponseBody
-    public AjaxResult export(SysOperLog operLog)
-    {
+    public AjaxResult export(SysOperLog operLog) {
         List<SysOperLog> list = operLogService.selectOperLogList(operLog);
         ExcelUtil<SysOperLog> util = new ExcelUtil<SysOperLog>(SysOperLog.class);
         return util.exportExcel(list, "操作日志");
@@ -65,25 +58,22 @@ public class SysOperlogController extends BaseController
     @RequiresPermissions("monitor:operlog:remove")
     @PostMapping("/remove")
     @ResponseBody
-    public AjaxResult remove(String ids)
-    {
+    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)
-    {
+    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()
-    {
+    public AjaxResult clean() {
         operLogService.cleanOperLog();
         return success();
     }

+ 20 - 27
zhjq-admin/src/main/java/com/zhjq/web/controller/monitor/SysUserOnlineController.java

@@ -1,14 +1,5 @@
 package com.zhjq.web.controller.monitor;
 
-import java.util.List;
-import org.apache.shiro.authz.annotation.Logical;
-import org.apache.shiro.authz.annotation.RequiresPermissions;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.ResponseBody;
 import com.zhjq.common.annotation.Log;
 import com.zhjq.common.core.controller.BaseController;
 import com.zhjq.common.core.domain.AjaxResult;
@@ -21,16 +12,25 @@ 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
-{
+public class SysUserOnlineController extends BaseController {
     private String prefix = "monitor/online";
 
     @Autowired
@@ -41,41 +41,34 @@ public class SysUserOnlineController extends BaseController
 
     @RequiresPermissions("monitor:online:view")
     @GetMapping()
-    public String online()
-    {
+    public String online() {
         return prefix + "/online";
     }
 
     @RequiresPermissions("monitor:online:list")
     @PostMapping("/list")
     @ResponseBody
-    public TableDataInfo list(SysUserOnline userOnline)
-    {
+    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)
+    @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))
-        {
+    public AjaxResult batchForceLogout(String ids) {
+        for (String sessionId : Convert.toStrArray(ids)) {
             SysUserOnline online = userOnlineService.selectOnlineById(sessionId);
-            if (online == null)
-            {
+            if (online == null) {
                 return error("用户已下线");
             }
             OnlineSession onlineSession = (OnlineSession) onlineSessionDAO.readSession(online.getSessionId());
-            if (onlineSession == null)
-            {
+            if (onlineSession == null) {
                 return error("用户已下线");
             }
-            if (sessionId.equals(ShiroUtils.getSessionId()))
-            {
+            if (sessionId.equals(ShiroUtils.getSessionId())) {
                 return error("当前登录用户无法强退");
             }
             onlineSessionDAO.delete(onlineSession);

+ 21 - 34
zhjq-admin/src/main/java/com/zhjq/web/controller/system/SysCaptchaController.java

@@ -1,30 +1,30 @@
 package com.zhjq.web.controller.system;
 
-import java.awt.image.BufferedImage;
-import java.io.IOException;
+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 org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.servlet.ModelAndView;
-import com.google.code.kaptcha.Constants;
-import com.google.code.kaptcha.Producer;
-import com.zhjq.common.core.controller.BaseController;
+import java.awt.image.BufferedImage;
+import java.io.IOException;
 
 /**
  * 图片验证码(支持算术形式)
- * 
+ *
  * @author ruoyi
  */
 @Controller
 @RequestMapping("/captcha")
-public class SysCaptchaController extends BaseController
-{
+public class SysCaptchaController extends BaseController {
     @Resource(name = "captchaProducer")
     private Producer captchaProducer;
 
@@ -35,11 +35,9 @@ public class SysCaptchaController extends BaseController
      * 验证码生成
      */
     @GetMapping(value = "/captchaImage")
-    public ModelAndView getKaptchaImage(HttpServletRequest request, HttpServletResponse response)
-    {
+    public ModelAndView getKaptchaImage(HttpServletRequest request, HttpServletResponse response) {
         ServletOutputStream out = null;
-        try
-        {
+        try {
             HttpSession session = request.getSession();
             response.setDateHeader("Expires", 0);
             response.setHeader("Cache-Control", "no-store, no-cache, must-revalidate");
@@ -51,15 +49,12 @@ public class SysCaptchaController extends BaseController
             String capStr = null;
             String code = null;
             BufferedImage bi = null;
-            if ("math".equals(type))
-            {
+            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))
-            {
+            } else if ("char".equals(type)) {
                 capStr = code = captchaProducer.createText();
                 bi = captchaProducer.createImage(capStr);
             }
@@ -68,22 +63,14 @@ public class SysCaptchaController extends BaseController
             ImageIO.write(bi, "jpg", out);
             out.flush();
 
-        }
-        catch (Exception e)
-        {
+        } catch (Exception e) {
             e.printStackTrace();
-        }
-        finally
-        {
-            try
-            {
-                if (out != null)
-                {
+        } finally {
+            try {
+                if (out != null) {
                     out.close();
                 }
-            }
-            catch (IOException e)
-            {
+            } catch (IOException e) {
                 e.printStackTrace();
             }
         }

+ 22 - 38
zhjq-admin/src/main/java/com/zhjq/web/controller/system/SysConfigController.java

@@ -1,16 +1,5 @@
 package com.zhjq.web.controller.system;
 
-import java.util.List;
-import org.apache.shiro.authz.annotation.RequiresPermissions;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Controller;
-import org.springframework.ui.ModelMap;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.ResponseBody;
 import com.zhjq.common.annotation.Log;
 import com.zhjq.common.core.controller.BaseController;
 import com.zhjq.common.core.domain.AjaxResult;
@@ -19,16 +8,23 @@ 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
-{
+public class SysConfigController extends BaseController {
     private String prefix = "system/config";
 
     @Autowired
@@ -36,8 +32,7 @@ public class SysConfigController extends BaseController
 
     @RequiresPermissions("system:config:view")
     @GetMapping()
-    public String config()
-    {
+    public String config() {
         return prefix + "/config";
     }
 
@@ -47,8 +42,7 @@ public class SysConfigController extends BaseController
     @RequiresPermissions("system:config:list")
     @PostMapping("/list")
     @ResponseBody
-    public TableDataInfo list(SysConfig config)
-    {
+    public TableDataInfo list(SysConfig config) {
         startPage();
         List<SysConfig> list = configService.selectConfigList(config);
         return getDataTable(list);
@@ -58,8 +52,7 @@ public class SysConfigController extends BaseController
     @RequiresPermissions("system:config:export")
     @PostMapping("/export")
     @ResponseBody
-    public AjaxResult export(SysConfig config)
-    {
+    public AjaxResult export(SysConfig config) {
         List<SysConfig> list = configService.selectConfigList(config);
         ExcelUtil<SysConfig> util = new ExcelUtil<SysConfig>(SysConfig.class);
         return util.exportExcel(list, "参数数据");
@@ -69,8 +62,7 @@ public class SysConfigController extends BaseController
      * 新增参数配置
      */
     @GetMapping("/add")
-    public String add()
-    {
+    public String add() {
         return prefix + "/add";
     }
 
@@ -81,10 +73,8 @@ public class SysConfigController extends BaseController
     @Log(title = "参数管理", businessType = BusinessType.INSERT)
     @PostMapping("/add")
     @ResponseBody
-    public AjaxResult addSave(@Validated SysConfig config)
-    {
-        if (!configService.checkConfigKeyUnique(config))
-        {
+    public AjaxResult addSave(@Validated SysConfig config) {
+        if (!configService.checkConfigKeyUnique(config)) {
             return error("新增参数'" + config.getConfigName() + "'失败,参数键名已存在");
         }
         config.setCreateBy(getLoginName());
@@ -96,8 +86,7 @@ public class SysConfigController extends BaseController
      */
     @RequiresPermissions("system:config:edit")
     @GetMapping("/edit/{configId}")
-    public String edit(@PathVariable("configId") Long configId, ModelMap mmap)
-    {
+    public String edit(@PathVariable("configId") Long configId, ModelMap mmap) {
         mmap.put("config", configService.selectConfigById(configId));
         return prefix + "/edit";
     }
@@ -109,10 +98,8 @@ public class SysConfigController extends BaseController
     @Log(title = "参数管理", businessType = BusinessType.UPDATE)
     @PostMapping("/edit")
     @ResponseBody
-    public AjaxResult editSave(@Validated SysConfig config)
-    {
-        if (!configService.checkConfigKeyUnique(config))
-        {
+    public AjaxResult editSave(@Validated SysConfig config) {
+        if (!configService.checkConfigKeyUnique(config)) {
             return error("修改参数'" + config.getConfigName() + "'失败,参数键名已存在");
         }
         config.setUpdateBy(getLoginName());
@@ -126,8 +113,7 @@ public class SysConfigController extends BaseController
     @Log(title = "参数管理", businessType = BusinessType.DELETE)
     @PostMapping("/remove")
     @ResponseBody
-    public AjaxResult remove(String ids)
-    {
+    public AjaxResult remove(String ids) {
         configService.deleteConfigByIds(ids);
         return success();
     }
@@ -139,8 +125,7 @@ public class SysConfigController extends BaseController
     @Log(title = "参数管理", businessType = BusinessType.CLEAN)
     @GetMapping("/refreshCache")
     @ResponseBody
-    public AjaxResult refreshCache()
-    {
+    public AjaxResult refreshCache() {
         configService.resetConfigCache();
         return success();
     }
@@ -150,8 +135,7 @@ public class SysConfigController extends BaseController
      */
     @PostMapping("/checkConfigKeyUnique")
     @ResponseBody
-    public boolean checkConfigKeyUnique(SysConfig config)
-    {
+    public boolean checkConfigKeyUnique(SysConfig config) {
         return configService.checkConfigKeyUnique(config);
     }
 }

+ 31 - 55
zhjq-admin/src/main/java/com/zhjq/web/controller/system/SysDeptController.java

@@ -1,16 +1,5 @@
 package com.zhjq.web.controller.system;
 
-import java.util.List;
-import org.apache.shiro.authz.annotation.RequiresPermissions;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Controller;
-import org.springframework.ui.ModelMap;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.ResponseBody;
 import com.zhjq.common.annotation.Log;
 import com.zhjq.common.constant.UserConstants;
 import com.zhjq.common.core.controller.BaseController;
@@ -20,16 +9,23 @@ 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
-{
+public class SysDeptController extends BaseController {
     private String prefix = "system/dept";
 
     @Autowired
@@ -37,16 +33,14 @@ public class SysDeptController extends BaseController
 
     @RequiresPermissions("system:dept:view")
     @GetMapping()
-    public String dept()
-    {
+    public String dept() {
         return prefix + "/dept";
     }
 
     @RequiresPermissions("system:dept:list")
     @PostMapping("/list")
     @ResponseBody
-    public List<SysDept> list(SysDept dept)
-    {
+    public List<SysDept> list(SysDept dept) {
         List<SysDept> deptList = deptService.selectDeptList(dept);
         return deptList;
     }
@@ -55,10 +49,8 @@ public class SysDeptController extends BaseController
      * 新增部门
      */
     @GetMapping("/add/{parentId}")
-    public String add(@PathVariable("parentId") Long parentId, ModelMap mmap)
-    {
-        if (!getSysUser().isAdmin())
-        {
+    public String add(@PathVariable("parentId") Long parentId, ModelMap mmap) {
+        if (!getSysUser().isAdmin()) {
             parentId = getSysUser().getDeptId();
         }
         mmap.put("dept", deptService.selectDeptById(parentId));
@@ -72,10 +64,8 @@ public class SysDeptController extends BaseController
     @RequiresPermissions("system:dept:add")
     @PostMapping("/add")
     @ResponseBody
-    public AjaxResult addSave(@Validated SysDept dept)
-    {
-        if (!deptService.checkDeptNameUnique(dept))
-        {
+    public AjaxResult addSave(@Validated SysDept dept) {
+        if (!deptService.checkDeptNameUnique(dept)) {
             return error("新增部门'" + dept.getDeptName() + "'失败,部门名称已存在");
         }
         dept.setCreateBy(getLoginName());
@@ -87,12 +77,10 @@ public class SysDeptController extends BaseController
      */
     @RequiresPermissions("system:dept:edit")
     @GetMapping("/edit/{deptId}")
-    public String edit(@PathVariable("deptId") Long deptId, ModelMap mmap)
-    {
+    public String edit(@PathVariable("deptId") Long deptId, ModelMap mmap) {
         deptService.checkDeptDataScope(deptId);
         SysDept dept = deptService.selectDeptById(deptId);
-        if (StringUtils.isNotNull(dept) && 100L == deptId)
-        {
+        if (StringUtils.isNotNull(dept) && 100L == deptId) {
             dept.setParentName("无");
         }
         mmap.put("dept", dept);
@@ -106,20 +94,14 @@ public class SysDeptController extends BaseController
     @RequiresPermissions("system:dept:edit")
     @PostMapping("/edit")
     @ResponseBody
-    public AjaxResult editSave(@Validated SysDept dept)
-    {
+    public AjaxResult editSave(@Validated SysDept dept) {
         Long deptId = dept.getDeptId();
         deptService.checkDeptDataScope(deptId);
-        if (!deptService.checkDeptNameUnique(dept))
-        {
+        if (!deptService.checkDeptNameUnique(dept)) {
             return error("修改部门'" + dept.getDeptName() + "'失败,部门名称已存在");
-        }
-        else if (dept.getParentId().equals(deptId))
-        {
+        } else if (dept.getParentId().equals(deptId)) {
             return error("修改部门'" + dept.getDeptName() + "'失败,上级部门不能是自己");
-        }
-        else if (StringUtils.equals(UserConstants.DEPT_DISABLE, dept.getStatus()) && deptService.selectNormalChildrenDeptById(deptId) > 0)
-        {
+        } else if (StringUtils.equals(UserConstants.DEPT_DISABLE, dept.getStatus()) && deptService.selectNormalChildrenDeptById(deptId) > 0) {
             return AjaxResult.error("该部门包含未停用的子部门!");
         }
         dept.setUpdateBy(getLoginName());
@@ -133,14 +115,11 @@ public class SysDeptController extends BaseController
     @RequiresPermissions("system:dept:remove")
     @GetMapping("/remove/{deptId}")
     @ResponseBody
-    public AjaxResult remove(@PathVariable("deptId") Long deptId)
-    {
-        if (deptService.selectDeptCount(deptId) > 0)
-        {
+    public AjaxResult remove(@PathVariable("deptId") Long deptId) {
+        if (deptService.selectDeptCount(deptId) > 0) {
             return AjaxResult.warn("存在下级部门,不允许删除");
         }
-        if (deptService.checkDeptExistUser(deptId))
-        {
+        if (deptService.checkDeptExistUser(deptId)) {
             return AjaxResult.warn("部门存在用户,不允许删除");
         }
         deptService.checkDeptDataScope(deptId);
@@ -152,21 +131,19 @@ public class SysDeptController extends BaseController
      */
     @PostMapping("/checkDeptNameUnique")
     @ResponseBody
-    public boolean checkDeptNameUnique(SysDept dept)
-    {
+    public boolean checkDeptNameUnique(SysDept dept) {
         return deptService.checkDeptNameUnique(dept);
     }
 
     /**
      * 选择部门树
-     * 
-     * @param deptId 部门ID
+     *
+     * @param deptId    部门ID
      * @param excludeId 排除ID
      */
-    @GetMapping(value = { "/selectDeptTree/{deptId}", "/selectDeptTree/{deptId}/{excludeId}" })
+    @GetMapping(value = {"/selectDeptTree/{deptId}", "/selectDeptTree/{deptId}/{excludeId}"})
     public String selectDeptTree(@PathVariable("deptId") Long deptId,
-            @PathVariable(value = "excludeId", required = false) Long excludeId, ModelMap mmap)
-    {
+                                 @PathVariable(value = "excludeId", required = false) Long excludeId, ModelMap mmap) {
         mmap.put("dept", deptService.selectDeptById(deptId));
         mmap.put("excludeId", excludeId);
         return prefix + "/tree";
@@ -177,8 +154,7 @@ public class SysDeptController extends BaseController
      */
     @GetMapping("/treeData/{excludeId}")
     @ResponseBody
-    public List<Ztree> treeDataExcludeChild(@PathVariable(value = "excludeId", required = false) Long excludeId)
-    {
+    public List<Ztree> treeDataExcludeChild(@PathVariable(value = "excludeId", required = false) Long excludeId) {
         SysDept dept = new SysDept();
         dept.setExcludeId(excludeId);
         List<Ztree> ztrees = deptService.selectDeptTreeExcludeChild(dept);

+ 18 - 30
zhjq-admin/src/main/java/com/zhjq/web/controller/system/SysDictDataController.java

@@ -1,16 +1,5 @@
 package com.zhjq.web.controller.system;
 
-import java.util.List;
-import org.apache.shiro.authz.annotation.RequiresPermissions;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Controller;
-import org.springframework.ui.ModelMap;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.ResponseBody;
 import com.zhjq.common.annotation.Log;
 import com.zhjq.common.core.controller.BaseController;
 import com.zhjq.common.core.domain.AjaxResult;
@@ -19,16 +8,23 @@ 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
-{
+public class SysDictDataController extends BaseController {
     private String prefix = "system/dict/data";
 
     @Autowired
@@ -36,16 +32,14 @@ public class SysDictDataController extends BaseController
 
     @RequiresPermissions("system:dict:view")
     @GetMapping()
-    public String dictData()
-    {
+    public String dictData() {
         return prefix + "/data";
     }
 
     @PostMapping("/list")
     @RequiresPermissions("system:dict:list")
     @ResponseBody
-    public TableDataInfo list(SysDictData dictData)
-    {
+    public TableDataInfo list(SysDictData dictData) {
         startPage();
         List<SysDictData> list = dictDataService.selectDictDataList(dictData);
         return getDataTable(list);
@@ -55,8 +49,7 @@ public class SysDictDataController extends BaseController
     @RequiresPermissions("system:dict:export")
     @PostMapping("/export")
     @ResponseBody
-    public AjaxResult export(SysDictData dictData)
-    {
+    public AjaxResult export(SysDictData dictData) {
         List<SysDictData> list = dictDataService.selectDictDataList(dictData);
         ExcelUtil<SysDictData> util = new ExcelUtil<SysDictData>(SysDictData.class);
         return util.exportExcel(list, "字典数据");
@@ -66,8 +59,7 @@ public class SysDictDataController extends BaseController
      * 新增字典类型
      */
     @GetMapping("/add/{dictType}")
-    public String add(@PathVariable("dictType") String dictType, ModelMap mmap)
-    {
+    public String add(@PathVariable("dictType") String dictType, ModelMap mmap) {
         mmap.put("dictType", dictType);
         return prefix + "/add";
     }
@@ -79,8 +71,7 @@ public class SysDictDataController extends BaseController
     @RequiresPermissions("system:dict:add")
     @PostMapping("/add")
     @ResponseBody
-    public AjaxResult addSave(@Validated SysDictData dict)
-    {
+    public AjaxResult addSave(@Validated SysDictData dict) {
         dict.setCreateBy(getLoginName());
         return toAjax(dictDataService.insertDictData(dict));
     }
@@ -90,8 +81,7 @@ public class SysDictDataController extends BaseController
      */
     @RequiresPermissions("system:dict:edit")
     @GetMapping("/edit/{dictCode}")
-    public String edit(@PathVariable("dictCode") Long dictCode, ModelMap mmap)
-    {
+    public String edit(@PathVariable("dictCode") Long dictCode, ModelMap mmap) {
         mmap.put("dict", dictDataService.selectDictDataById(dictCode));
         return prefix + "/edit";
     }
@@ -103,8 +93,7 @@ public class SysDictDataController extends BaseController
     @RequiresPermissions("system:dict:edit")
     @PostMapping("/edit")
     @ResponseBody
-    public AjaxResult editSave(@Validated SysDictData dict)
-    {
+    public AjaxResult editSave(@Validated SysDictData dict) {
         dict.setUpdateBy(getLoginName());
         return toAjax(dictDataService.updateDictData(dict));
     }
@@ -113,8 +102,7 @@ public class SysDictDataController extends BaseController
     @RequiresPermissions("system:dict:remove")
     @PostMapping("/remove")
     @ResponseBody
-    public AjaxResult remove(String ids)
-    {
+    public AjaxResult remove(String ids) {
         dictDataService.deleteDictDataByIds(ids);
         return success();
     }

+ 25 - 44
zhjq-admin/src/main/java/com/zhjq/web/controller/system/SysDictTypeController.java

@@ -1,16 +1,5 @@
 package com.zhjq.web.controller.system;
 
-import java.util.List;
-import org.apache.shiro.authz.annotation.RequiresPermissions;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Controller;
-import org.springframework.ui.ModelMap;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.ResponseBody;
 import com.zhjq.common.annotation.Log;
 import com.zhjq.common.core.controller.BaseController;
 import com.zhjq.common.core.domain.AjaxResult;
@@ -20,16 +9,23 @@ 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
-{
+public class SysDictTypeController extends BaseController {
     private String prefix = "system/dict/type";
 
     @Autowired
@@ -37,16 +33,14 @@ public class SysDictTypeController extends BaseController
 
     @RequiresPermissions("system:dict:view")
     @GetMapping()
-    public String dictType()
-    {
+    public String dictType() {
         return prefix + "/type";
     }
 
     @PostMapping("/list")
     @RequiresPermissions("system:dict:list")
     @ResponseBody
-    public TableDataInfo list(SysDictType dictType)
-    {
+    public TableDataInfo list(SysDictType dictType) {
         startPage();
         List<SysDictType> list = dictTypeService.selectDictTypeList(dictType);
         return getDataTable(list);
@@ -56,8 +50,7 @@ public class SysDictTypeController extends BaseController
     @RequiresPermissions("system:dict:export")
     @PostMapping("/export")
     @ResponseBody
-    public AjaxResult export(SysDictType dictType)
-    {
+    public AjaxResult export(SysDictType dictType) {
 
         List<SysDictType> list = dictTypeService.selectDictTypeList(dictType);
         ExcelUtil<SysDictType> util = new ExcelUtil<SysDictType>(SysDictType.class);
@@ -68,8 +61,7 @@ public class SysDictTypeController extends BaseController
      * 新增字典类型
      */
     @GetMapping("/add")
-    public String add()
-    {
+    public String add() {
         return prefix + "/add";
     }
 
@@ -80,10 +72,8 @@ public class SysDictTypeController extends BaseController
     @RequiresPermissions("system:dict:add")
     @PostMapping("/add")
     @ResponseBody
-    public AjaxResult addSave(@Validated SysDictType dict)
-    {
-        if (!dictTypeService.checkDictTypeUnique(dict))
-        {
+    public AjaxResult addSave(@Validated SysDictType dict) {
+        if (!dictTypeService.checkDictTypeUnique(dict)) {
             return error("新增字典'" + dict.getDictName() + "'失败,字典类型已存在");
         }
         dict.setCreateBy(getLoginName());
@@ -95,8 +85,7 @@ public class SysDictTypeController extends BaseController
      */
     @RequiresPermissions("system:dict:edit")
     @GetMapping("/edit/{dictId}")
-    public String edit(@PathVariable("dictId") Long dictId, ModelMap mmap)
-    {
+    public String edit(@PathVariable("dictId") Long dictId, ModelMap mmap) {
         mmap.put("dict", dictTypeService.selectDictTypeById(dictId));
         return prefix + "/edit";
     }
@@ -108,10 +97,8 @@ public class SysDictTypeController extends BaseController
     @RequiresPermissions("system:dict:edit")
     @PostMapping("/edit")
     @ResponseBody
-    public AjaxResult editSave(@Validated SysDictType dict)
-    {
-        if (!dictTypeService.checkDictTypeUnique(dict))
-        {
+    public AjaxResult editSave(@Validated SysDictType dict) {
+        if (!dictTypeService.checkDictTypeUnique(dict)) {
             return error("修改字典'" + dict.getDictName() + "'失败,字典类型已存在");
         }
         dict.setUpdateBy(getLoginName());
@@ -122,8 +109,7 @@ public class SysDictTypeController extends BaseController
     @RequiresPermissions("system:dict:remove")
     @PostMapping("/remove")
     @ResponseBody
-    public AjaxResult remove(String ids)
-    {
+    public AjaxResult remove(String ids) {
         dictTypeService.deleteDictTypeByIds(ids);
         return success();
     }
@@ -135,8 +121,7 @@ public class SysDictTypeController extends BaseController
     @Log(title = "字典类型", businessType = BusinessType.CLEAN)
     @GetMapping("/refreshCache")
     @ResponseBody
-    public AjaxResult refreshCache()
-    {
+    public AjaxResult refreshCache() {
         dictTypeService.resetDictCache();
         return success();
     }
@@ -146,8 +131,7 @@ public class SysDictTypeController extends BaseController
      */
     @RequiresPermissions("system:dict:list")
     @GetMapping("/detail/{dictId}")
-    public String detail(@PathVariable("dictId") Long dictId, ModelMap mmap)
-    {
+    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";
@@ -158,8 +142,7 @@ public class SysDictTypeController extends BaseController
      */
     @PostMapping("/checkDictTypeUnique")
     @ResponseBody
-    public boolean checkDictTypeUnique(SysDictType dictType)
-    {
+    public boolean checkDictTypeUnique(SysDictType dictType) {
         return dictTypeService.checkDictTypeUnique(dictType);
     }
 
@@ -168,8 +151,7 @@ public class SysDictTypeController extends BaseController
      */
     @GetMapping("/selectDictTree/{columnId}/{dictType}")
     public String selectDeptTree(@PathVariable("columnId") Long columnId, @PathVariable("dictType") String dictType,
-            ModelMap mmap)
-    {
+                                 ModelMap mmap) {
         mmap.put("columnId", columnId);
         mmap.put("dict", dictTypeService.selectDictTypeByType(dictType));
         return prefix + "/tree";
@@ -180,8 +162,7 @@ public class SysDictTypeController extends BaseController
      */
     @GetMapping("/treeData")
     @ResponseBody
-    public List<Ztree> treeData()
-    {
+    public List<Ztree> treeData() {
         List<Ztree> ztrees = dictTypeService.selectDictTree(new SysDictType());
         return ztrees;
     }

+ 32 - 52
zhjq-admin/src/main/java/com/zhjq/web/controller/system/SysIndexController.java

@@ -1,16 +1,5 @@
 package com.zhjq.web.controller.system;
 
-import java.util.Date;
-import java.util.List;
-import javax.servlet.http.Cookie;
-import javax.servlet.http.HttpServletResponse;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Controller;
-import org.springframework.ui.ModelMap;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.ResponseBody;
 import com.zhjq.common.config.RuoYiConfig;
 import com.zhjq.common.constant.ShiroConstants;
 import com.zhjq.common.core.controller.BaseController;
@@ -25,15 +14,26 @@ 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
-{
+public class SysIndexController extends BaseController {
     @Autowired
     private ISysMenuService menuService;
 
@@ -45,8 +45,7 @@ public class SysIndexController extends BaseController
 
     // 系统首页
     @GetMapping("/index")
-    public String index(ModelMap mmap)
-    {
+    public String index(ModelMap mmap) {
         // 取身份信息
         SysUser user = getSysUser();
         // 根据用户id取出菜单
@@ -73,10 +72,8 @@ public class SysIndexController extends BaseController
 
         // 优先Cookie配置导航菜单
         Cookie[] cookies = ServletUtils.getRequest().getCookies();
-        for (Cookie cookie : cookies)
-        {
-            if (StringUtils.isNotEmpty(cookie.getName()) && "nav-style".equalsIgnoreCase(cookie.getName()))
-            {
+        for (Cookie cookie : cookies) {
+            if (StringUtils.isNotEmpty(cookie.getName()) && "nav-style".equalsIgnoreCase(cookie.getName())) {
                 indexStyle = cookie.getValue();
                 break;
             }
@@ -87,8 +84,7 @@ public class SysIndexController extends BaseController
 
     // 锁定屏幕
     @GetMapping("/lockscreen")
-    public String lockscreen(ModelMap mmap)
-    {
+    public String lockscreen(ModelMap mmap) {
         mmap.put("user", getSysUser());
         ServletUtils.getSession().setAttribute(ShiroConstants.LOCK_SCREEN, true);
         return "lock";
@@ -97,15 +93,12 @@ public class SysIndexController extends BaseController
     // 解锁屏幕
     @PostMapping("/unlockscreen")
     @ResponseBody
-    public AjaxResult unlockscreen(String password)
-    {
+    public AjaxResult unlockscreen(String password) {
         SysUser user = getSysUser();
-        if (StringUtils.isNull(user))
-        {
+        if (StringUtils.isNull(user)) {
             return AjaxResult.error("服务器超时,请重新登录");
         }
-        if (passwordService.matches(user, password))
-        {
+        if (passwordService.matches(user, password)) {
             ServletUtils.getSession().removeAttribute(ShiroConstants.LOCK_SCREEN);
             return AjaxResult.success();
         }
@@ -114,59 +107,46 @@ public class SysIndexController extends BaseController
 
     // 切换主题
     @GetMapping("/system/switchSkin")
-    public String switchSkin()
-    {
+    public String switchSkin() {
         return "skin";
     }
 
     // 切换菜单
     @GetMapping("/system/menuStyle/{style}")
-    public void menuStyle(@PathVariable String style, HttpServletResponse response)
-    {
+    public void menuStyle(@PathVariable String style, HttpServletResponse response) {
         CookieUtils.setCookie(response, "nav-style", style);
     }
 
     // 系统介绍
     @GetMapping("/system/main")
-    public String main(ModelMap mmap)
-    {
+    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)
-        {
+    public String contentMainClass(Boolean footer, Boolean tagsView) {
+        if (!footer && !tagsView) {
             return "tagsview-footer-hide";
-        }
-        else if (!footer)
-        {
+        } else if (!footer) {
             return "footer-hide";
-        }
-        else if (!tagsView)
-        {
+        } else if (!tagsView) {
             return "tagsview-hide";
         }
         return StringUtils.EMPTY;
     }
 
     // 检查初始密码是否提醒修改
-    public boolean initPasswordIsModify(Date pwdUpdateDate)
-    {
+    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)
-    {
+    public boolean passwordIsExpiration(Date pwdUpdateDate) {
         Integer passwordValidateDays = Convert.toInt(configService.selectConfigByKey("sys.account.passwordValidateDays"));
-        if (passwordValidateDays != null && passwordValidateDays > 0)
-        {
-            if (StringUtils.isNull(pwdUpdateDate))
-            {
+        if (passwordValidateDays != null && passwordValidateDays > 0) {
+            if (StringUtils.isNull(pwdUpdateDate)) {
                 // 如果从未修改过初始密码,直接提醒过期
                 return true;
             }

+ 18 - 26
zhjq-admin/src/main/java/com/zhjq/web/controller/system/SysLoginController.java

@@ -1,7 +1,11 @@
 package com.zhjq.web.controller.system;
 
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+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;
@@ -13,21 +17,17 @@ import org.springframework.ui.ModelMap;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.ResponseBody;
-import com.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 javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
 
 /**
  * 登录验证
- * 
+ *
  * @author ruoyi
  */
 @Controller
-public class SysLoginController extends BaseController
-{
+public class SysLoginController extends BaseController {
     /**
      * 是否开启记住我功能
      */
@@ -38,11 +38,9 @@ public class SysLoginController extends BaseController
     private ConfigService configService;
 
     @GetMapping("/login")
-    public String login(HttpServletRequest request, HttpServletResponse response, ModelMap mmap)
-    {
+    public String login(HttpServletRequest request, HttpServletResponse response, ModelMap mmap) {
         // 如果是Ajax请求,返回Json字符串。
-        if (ServletUtils.isAjaxRequest(request))
-        {
+        if (ServletUtils.isAjaxRequest(request)) {
             return ServletUtils.renderString(response, "{\"code\":\"1\",\"msg\":\"未登录或登录超时。请重新登录\"}");
         }
         // 是否开启记住我
@@ -54,20 +52,15 @@ public class SysLoginController extends BaseController
 
     @PostMapping("/login")
     @ResponseBody
-    public AjaxResult ajaxLogin(String username, String password, Boolean rememberMe)
-    {
+    public AjaxResult ajaxLogin(String username, String password, Boolean rememberMe) {
         UsernamePasswordToken token = new UsernamePasswordToken(username, password, rememberMe);
         Subject subject = SecurityUtils.getSubject();
-        try
-        {
+        try {
             subject.login(token);
             return success();
-        }
-        catch (AuthenticationException e)
-        {
+        } catch (AuthenticationException e) {
             String msg = "用户或密码错误";
-            if (StringUtils.isNotEmpty(e.getMessage()))
-            {
+            if (StringUtils.isNotEmpty(e.getMessage())) {
                 msg = e.getMessage();
             }
             return error(msg);
@@ -75,8 +68,7 @@ public class SysLoginController extends BaseController
     }
 
     @GetMapping("/unauth")
-    public String unauth()
-    {
+    public String unauth() {
         return "error/unauth";
     }
 }

+ 28 - 51
zhjq-admin/src/main/java/com/zhjq/web/controller/system/SysMenuController.java

@@ -1,16 +1,5 @@
 package com.zhjq.web.controller.system;
 
-import java.util.List;
-import org.apache.shiro.authz.annotation.RequiresPermissions;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Controller;
-import org.springframework.ui.ModelMap;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.ResponseBody;
 import com.zhjq.common.annotation.Log;
 import com.zhjq.common.core.controller.BaseController;
 import com.zhjq.common.core.domain.AjaxResult;
@@ -21,16 +10,23 @@ 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
-{
+public class SysMenuController extends BaseController {
     private String prefix = "system/menu";
 
     @Autowired
@@ -38,16 +34,14 @@ public class SysMenuController extends BaseController
 
     @RequiresPermissions("system:menu:view")
     @GetMapping()
-    public String menu()
-    {
+    public String menu() {
         return prefix + "/menu";
     }
 
     @RequiresPermissions("system:menu:list")
     @PostMapping("/list")
     @ResponseBody
-    public List<SysMenu> list(SysMenu menu)
-    {
+    public List<SysMenu> list(SysMenu menu) {
         Long userId = ShiroUtils.getUserId();
         List<SysMenu> menuList = menuService.selectMenuList(menu, userId);
         return menuList;
@@ -60,14 +54,11 @@ public class SysMenuController extends BaseController
     @RequiresPermissions("system:menu:remove")
     @GetMapping("/remove/{menuId}")
     @ResponseBody
-    public AjaxResult remove(@PathVariable("menuId") Long menuId)
-    {
-        if (menuService.selectCountMenuByParentId(menuId) > 0)
-        {
+    public AjaxResult remove(@PathVariable("menuId") Long menuId) {
+        if (menuService.selectCountMenuByParentId(menuId) > 0) {
             return AjaxResult.warn("存在子菜单,不允许删除");
         }
-        if (menuService.selectCountRoleMenuByMenuId(menuId) > 0)
-        {
+        if (menuService.selectCountRoleMenuByMenuId(menuId) > 0) {
             return AjaxResult.warn("菜单已分配,不允许删除");
         }
         AuthorizationUtils.clearAllCachedAuthorizationInfo();
@@ -78,15 +69,11 @@ public class SysMenuController extends BaseController
      * 新增
      */
     @GetMapping("/add/{parentId}")
-    public String add(@PathVariable("parentId") Long parentId, ModelMap mmap)
-    {
+    public String add(@PathVariable("parentId") Long parentId, ModelMap mmap) {
         SysMenu menu = null;
-        if (0L != parentId)
-        {
+        if (0L != parentId) {
             menu = menuService.selectMenuById(parentId);
-        }
-        else
-        {
+        } else {
             menu = new SysMenu();
             menu.setMenuId(0L);
             menu.setMenuName("主目录");
@@ -102,10 +89,8 @@ public class SysMenuController extends BaseController
     @RequiresPermissions("system:menu:add")
     @PostMapping("/add")
     @ResponseBody
-    public AjaxResult addSave(@Validated SysMenu menu)
-    {
-        if (!menuService.checkMenuNameUnique(menu))
-        {
+    public AjaxResult addSave(@Validated SysMenu menu) {
+        if (!menuService.checkMenuNameUnique(menu)) {
             return error("新增菜单'" + menu.getMenuName() + "'失败,菜单名称已存在");
         }
         menu.setCreateBy(getLoginName());
@@ -118,8 +103,7 @@ public class SysMenuController extends BaseController
      */
     @RequiresPermissions("system:menu:edit")
     @GetMapping("/edit/{menuId}")
-    public String edit(@PathVariable("menuId") Long menuId, ModelMap mmap)
-    {
+    public String edit(@PathVariable("menuId") Long menuId, ModelMap mmap) {
         mmap.put("menu", menuService.selectMenuById(menuId));
         return prefix + "/edit";
     }
@@ -131,10 +115,8 @@ public class SysMenuController extends BaseController
     @RequiresPermissions("system:menu:edit")
     @PostMapping("/edit")
     @ResponseBody
-    public AjaxResult editSave(@Validated SysMenu menu)
-    {
-        if (!menuService.checkMenuNameUnique(menu))
-        {
+    public AjaxResult editSave(@Validated SysMenu menu) {
+        if (!menuService.checkMenuNameUnique(menu)) {
             return error("修改菜单'" + menu.getMenuName() + "'失败,菜单名称已存在");
         }
         menu.setUpdateBy(getLoginName());
@@ -146,8 +128,7 @@ public class SysMenuController extends BaseController
      * 选择菜单图标
      */
     @GetMapping("/icon")
-    public String icon()
-    {
+    public String icon() {
         return prefix + "/icon";
     }
 
@@ -156,8 +137,7 @@ public class SysMenuController extends BaseController
      */
     @PostMapping("/checkMenuNameUnique")
     @ResponseBody
-    public boolean checkMenuNameUnique(SysMenu menu)
-    {
+    public boolean checkMenuNameUnique(SysMenu menu) {
         return menuService.checkMenuNameUnique(menu);
     }
 
@@ -166,8 +146,7 @@ public class SysMenuController extends BaseController
      */
     @GetMapping("/roleMenuTreeData")
     @ResponseBody
-    public List<Ztree> roleMenuTreeData(SysRole role)
-    {
+    public List<Ztree> roleMenuTreeData(SysRole role) {
         Long userId = ShiroUtils.getUserId();
         List<Ztree> ztrees = menuService.roleMenuTreeData(role, userId);
         return ztrees;
@@ -178,8 +157,7 @@ public class SysMenuController extends BaseController
      */
     @GetMapping("/menuTreeData")
     @ResponseBody
-    public List<Ztree> menuTreeData()
-    {
+    public List<Ztree> menuTreeData() {
         Long userId = ShiroUtils.getUserId();
         List<Ztree> ztrees = menuService.menuTreeData(userId);
         return ztrees;
@@ -189,8 +167,7 @@ public class SysMenuController extends BaseController
      * 选择菜单树
      */
     @GetMapping("/selectMenuTree/{menuId}")
-    public String selectMenuTree(@PathVariable("menuId") Long menuId, ModelMap mmap)
-    {
+    public String selectMenuTree(@PathVariable("menuId") Long menuId, ModelMap mmap) {
         mmap.put("menu", menuService.selectMenuById(menuId));
         return prefix + "/tree";
     }

+ 18 - 30
zhjq-admin/src/main/java/com/zhjq/web/controller/system/SysNoticeController.java

@@ -1,16 +1,5 @@
 package com.zhjq.web.controller.system;
 
-import java.util.List;
-import org.apache.shiro.authz.annotation.RequiresPermissions;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Controller;
-import org.springframework.ui.ModelMap;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.ResponseBody;
 import com.zhjq.common.annotation.Log;
 import com.zhjq.common.core.controller.BaseController;
 import com.zhjq.common.core.domain.AjaxResult;
@@ -18,16 +7,23 @@ 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
-{
+public class SysNoticeController extends BaseController {
     private String prefix = "system/notice";
 
     @Autowired
@@ -35,8 +31,7 @@ public class SysNoticeController extends BaseController
 
     @RequiresPermissions("system:notice:view")
     @GetMapping()
-    public String notice()
-    {
+    public String notice() {
         return prefix + "/notice";
     }
 
@@ -46,8 +41,7 @@ public class SysNoticeController extends BaseController
     @RequiresPermissions("system:notice:list")
     @PostMapping("/list")
     @ResponseBody
-    public TableDataInfo list(SysNotice notice)
-    {
+    public TableDataInfo list(SysNotice notice) {
         startPage();
         List<SysNotice> list = noticeService.selectNoticeList(notice);
         return getDataTable(list);
@@ -57,8 +51,7 @@ public class SysNoticeController extends BaseController
      * 新增公告
      */
     @GetMapping("/add")
-    public String add()
-    {
+    public String add() {
         return prefix + "/add";
     }
 
@@ -69,8 +62,7 @@ public class SysNoticeController extends BaseController
     @Log(title = "通知公告", businessType = BusinessType.INSERT)
     @PostMapping("/add")
     @ResponseBody
-    public AjaxResult addSave(@Validated SysNotice notice)
-    {
+    public AjaxResult addSave(@Validated SysNotice notice) {
         notice.setCreateBy(getLoginName());
         return toAjax(noticeService.insertNotice(notice));
     }
@@ -80,8 +72,7 @@ public class SysNoticeController extends BaseController
      */
     @RequiresPermissions("system:notice:edit")
     @GetMapping("/edit/{noticeId}")
-    public String edit(@PathVariable("noticeId") Long noticeId, ModelMap mmap)
-    {
+    public String edit(@PathVariable("noticeId") Long noticeId, ModelMap mmap) {
         mmap.put("notice", noticeService.selectNoticeById(noticeId));
         return prefix + "/edit";
     }
@@ -93,8 +84,7 @@ public class SysNoticeController extends BaseController
     @Log(title = "通知公告", businessType = BusinessType.UPDATE)
     @PostMapping("/edit")
     @ResponseBody
-    public AjaxResult editSave(@Validated SysNotice notice)
-    {
+    public AjaxResult editSave(@Validated SysNotice notice) {
         notice.setUpdateBy(getLoginName());
         return toAjax(noticeService.updateNotice(notice));
     }
@@ -104,8 +94,7 @@ public class SysNoticeController extends BaseController
      */
     @RequiresPermissions("system:notice:list")
     @GetMapping("/view/{noticeId}")
-    public String view(@PathVariable("noticeId") Long noticeId, ModelMap mmap)
-    {
+    public String view(@PathVariable("noticeId") Long noticeId, ModelMap mmap) {
         mmap.put("notice", noticeService.selectNoticeById(noticeId));
         return prefix + "/view";
     }
@@ -117,8 +106,7 @@ public class SysNoticeController extends BaseController
     @Log(title = "通知公告", businessType = BusinessType.DELETE)
     @PostMapping("/remove")
     @ResponseBody
-    public AjaxResult remove(String ids)
-    {
+    public AjaxResult remove(String ids) {
         return toAjax(noticeService.deleteNoticeByIds(ids));
     }
 }

+ 26 - 49
zhjq-admin/src/main/java/com/zhjq/web/controller/system/SysPostController.java

@@ -1,16 +1,5 @@
 package com.zhjq.web.controller.system;
 
-import java.util.List;
-import org.apache.shiro.authz.annotation.RequiresPermissions;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Controller;
-import org.springframework.ui.ModelMap;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.ResponseBody;
 import com.zhjq.common.annotation.Log;
 import com.zhjq.common.core.controller.BaseController;
 import com.zhjq.common.core.domain.AjaxResult;
@@ -19,16 +8,23 @@ 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
-{
+public class SysPostController extends BaseController {
     private String prefix = "system/post";
 
     @Autowired
@@ -36,16 +32,14 @@ public class SysPostController extends BaseController
 
     @RequiresPermissions("system:post:view")
     @GetMapping()
-    public String operlog()
-    {
+    public String operlog() {
         return prefix + "/post";
     }
 
     @RequiresPermissions("system:post:list")
     @PostMapping("/list")
     @ResponseBody
-    public TableDataInfo list(SysPost post)
-    {
+    public TableDataInfo list(SysPost post) {
         startPage();
         List<SysPost> list = postService.selectPostList(post);
         return getDataTable(list);
@@ -55,8 +49,7 @@ public class SysPostController extends BaseController
     @RequiresPermissions("system:post:export")
     @PostMapping("/export")
     @ResponseBody
-    public AjaxResult export(SysPost post)
-    {
+    public AjaxResult export(SysPost post) {
         List<SysPost> list = postService.selectPostList(post);
         ExcelUtil<SysPost> util = new ExcelUtil<SysPost>(SysPost.class);
         return util.exportExcel(list, "岗位数据");
@@ -66,14 +59,10 @@ public class SysPostController extends BaseController
     @Log(title = "岗位管理", businessType = BusinessType.DELETE)
     @PostMapping("/remove")
     @ResponseBody
-    public AjaxResult remove(String ids)
-    {
-        try
-        {
+    public AjaxResult remove(String ids) {
+        try {
             return toAjax(postService.deletePostByIds(ids));
-        }
-        catch (Exception e)
-        {
+        } catch (Exception e) {
             return error(e.getMessage());
         }
     }
@@ -82,8 +71,7 @@ public class SysPostController extends BaseController
      * 新增岗位
      */
     @GetMapping("/add")
-    public String add()
-    {
+    public String add() {
         return prefix + "/add";
     }
 
@@ -94,14 +82,10 @@ public class SysPostController extends BaseController
     @Log(title = "岗位管理", businessType = BusinessType.INSERT)
     @PostMapping("/add")
     @ResponseBody
-    public AjaxResult addSave(@Validated SysPost post)
-    {
-        if (!postService.checkPostNameUnique(post))
-        {
+    public AjaxResult addSave(@Validated SysPost post) {
+        if (!postService.checkPostNameUnique(post)) {
             return error("新增岗位'" + post.getPostName() + "'失败,岗位名称已存在");
-        }
-        else if (!postService.checkPostCodeUnique(post))
-        {
+        } else if (!postService.checkPostCodeUnique(post)) {
             return error("新增岗位'" + post.getPostName() + "'失败,岗位编码已存在");
         }
         post.setCreateBy(getLoginName());
@@ -113,8 +97,7 @@ public class SysPostController extends BaseController
      */
     @RequiresPermissions("system:post:edit")
     @GetMapping("/edit/{postId}")
-    public String edit(@PathVariable("postId") Long postId, ModelMap mmap)
-    {
+    public String edit(@PathVariable("postId") Long postId, ModelMap mmap) {
         mmap.put("post", postService.selectPostById(postId));
         return prefix + "/edit";
     }
@@ -126,14 +109,10 @@ public class SysPostController extends BaseController
     @Log(title = "岗位管理", businessType = BusinessType.UPDATE)
     @PostMapping("/edit")
     @ResponseBody
-    public AjaxResult editSave(@Validated SysPost post)
-    {
-        if (!postService.checkPostNameUnique(post))
-        {
+    public AjaxResult editSave(@Validated SysPost post) {
+        if (!postService.checkPostNameUnique(post)) {
             return error("修改岗位'" + post.getPostName() + "'失败,岗位名称已存在");
-        }
-        else if (!postService.checkPostCodeUnique(post))
-        {
+        } else if (!postService.checkPostCodeUnique(post)) {
             return error("修改岗位'" + post.getPostName() + "'失败,岗位编码已存在");
         }
         post.setUpdateBy(getLoginName());
@@ -145,8 +124,7 @@ public class SysPostController extends BaseController
      */
     @PostMapping("/checkPostNameUnique")
     @ResponseBody
-    public boolean checkPostNameUnique(SysPost post)
-    {
+    public boolean checkPostNameUnique(SysPost post) {
         return postService.checkPostNameUnique(post);
     }
 
@@ -155,8 +133,7 @@ public class SysPostController extends BaseController
      */
     @PostMapping("/checkPostCodeUnique")
     @ResponseBody
-    public boolean checkPostCodeUnique(SysPost post)
-    {
+    public boolean checkPostCodeUnique(SysPost post) {
         return postService.checkPostCodeUnique(post);
     }
 }

+ 28 - 53
zhjq-admin/src/main/java/com/zhjq/web/controller/system/SysProfileController.java

@@ -1,16 +1,5 @@
 package com.zhjq.web.controller.system;
 
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Controller;
-import org.springframework.ui.ModelMap;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.ResponseBody;
-import org.springframework.web.multipart.MultipartFile;
 import com.zhjq.common.annotation.Log;
 import com.zhjq.common.config.RuoYiConfig;
 import com.zhjq.common.core.controller.BaseController;
@@ -24,23 +13,29 @@ 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
-{
+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;
 
@@ -48,8 +43,7 @@ public class SysProfileController extends BaseController
      * 个人信息
      */
     @GetMapping()
-    public String profile(ModelMap mmap)
-    {
+    public String profile(ModelMap mmap) {
         SysUser user = getSysUser();
         mmap.put("user", user);
         mmap.put("roleGroup", userService.selectUserRoleGroup(user.getUserId()));
@@ -59,15 +53,13 @@ public class SysProfileController extends BaseController
 
     @GetMapping("/checkPassword")
     @ResponseBody
-    public boolean checkPassword(String password)
-    {
+    public boolean checkPassword(String password) {
         SysUser user = getSysUser();
         return passwordService.matches(user, password);
     }
 
     @GetMapping("/resetPwd")
-    public String resetPwd(ModelMap mmap)
-    {
+    public String resetPwd(ModelMap mmap) {
         SysUser user = getSysUser();
         mmap.put("user", userService.selectUserById(user.getUserId()));
         return prefix + "/resetPwd";
@@ -76,22 +68,18 @@ public class SysProfileController extends BaseController
     @Log(title = "重置密码", businessType = BusinessType.UPDATE)
     @PostMapping("/resetPwd")
     @ResponseBody
-    public AjaxResult resetPwd(String oldPassword, String newPassword)
-    {
+    public AjaxResult resetPwd(String oldPassword, String newPassword) {
         SysUser user = getSysUser();
-        if (!passwordService.matches(user, oldPassword))
-        {
+        if (!passwordService.matches(user, oldPassword)) {
             return error("修改密码失败,旧密码错误");
         }
-        if (passwordService.matches(user, newPassword))
-        {
+        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)
-        {
+        if (userService.resetUserPwd(user) > 0) {
             setSysUser(userService.selectUserById(user.getUserId()));
             return success();
         }
@@ -102,8 +90,7 @@ public class SysProfileController extends BaseController
      * 修改用户
      */
     @GetMapping("/edit")
-    public String edit(ModelMap mmap)
-    {
+    public String edit(ModelMap mmap) {
         SysUser user = getSysUser();
         mmap.put("user", userService.selectUserById(user.getUserId()));
         return prefix + "/edit";
@@ -113,8 +100,7 @@ public class SysProfileController extends BaseController
      * 修改头像
      */
     @GetMapping("/avatar")
-    public String avatar(ModelMap mmap)
-    {
+    public String avatar(ModelMap mmap) {
         SysUser user = getSysUser();
         mmap.put("user", userService.selectUserById(user.getUserId()));
         return prefix + "/avatar";
@@ -126,23 +112,18 @@ public class SysProfileController extends BaseController
     @Log(title = "个人信息", businessType = BusinessType.UPDATE)
     @PostMapping("/update")
     @ResponseBody
-    public AjaxResult update(SysUser user)
-    {
+    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))
-        {
+        if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(currentUser)) {
             return error("修改用户'" + currentUser.getLoginName() + "'失败,手机号码已存在");
-        }
-        else if (StringUtils.isNotEmpty(user.getEmail()) && !userService.checkEmailUnique(currentUser))
-        {
+        } else if (StringUtils.isNotEmpty(user.getEmail()) && !userService.checkEmailUnique(currentUser)) {
             return error("修改用户'" + currentUser.getLoginName() + "'失败,邮箱账号已存在");
         }
-        if (userService.updateUserInfo(currentUser) > 0)
-        {
+        if (userService.updateUserInfo(currentUser) > 0) {
             setSysUser(userService.selectUserById(currentUser.getUserId()));
             return success();
         }
@@ -155,25 +136,19 @@ public class SysProfileController extends BaseController
     @Log(title = "个人信息", businessType = BusinessType.UPDATE)
     @PostMapping("/updateAvatar")
     @ResponseBody
-    public AjaxResult updateAvatar(@RequestParam("avatarfile") MultipartFile file)
-    {
+    public AjaxResult updateAvatar(@RequestParam("avatarfile") MultipartFile file) {
         SysUser currentUser = getSysUser();
-        try
-        {
-            if (!file.isEmpty())
-            {
+        try {
+            if (!file.isEmpty()) {
                 String avatar = FileUploadUtils.upload(RuoYiConfig.getAvatarPath(), file, MimeTypeUtils.IMAGE_EXTENSION);
                 currentUser.setAvatar(avatar);
-                if (userService.updateUserInfo(currentUser) > 0)
-                {
+                if (userService.updateUserInfo(currentUser) > 0) {
                     setSysUser(userService.selectUserById(currentUser.getUserId()));
                     return success();
                 }
             }
             return error();
-        }
-        catch (Exception e)
-        {
+        } catch (Exception e) {
             log.error("修改头像失败!", e);
             return error(e.getMessage());
         }

+ 10 - 14
zhjq-admin/src/main/java/com/zhjq/web/controller/system/SysRegisterController.java

@@ -1,25 +1,24 @@
 package com.zhjq.web.controller.system;
 
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.ResponseBody;
 import com.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
-{
+public class SysRegisterController extends BaseController {
     @Autowired
     private SysRegisterService registerService;
 
@@ -27,17 +26,14 @@ public class SysRegisterController extends BaseController
     private ISysConfigService configService;
 
     @GetMapping("/register")
-    public String register()
-    {
+    public String register() {
         return "register";
     }
 
     @PostMapping("/register")
     @ResponseBody
-    public AjaxResult ajaxRegister(SysUser user)
-    {
-        if (!("true".equals(configService.selectConfigByKey("sys.account.registerUser"))))
-        {
+    public AjaxResult ajaxRegister(SysUser user) {
+        if (!("true".equals(configService.selectConfigByKey("sys.account.registerUser")))) {
             return error("当前系统没有开启注册功能!");
         }
         String msg = registerService.register(user);

+ 37 - 70
zhjq-admin/src/main/java/com/zhjq/web/controller/system/SysRoleController.java

@@ -1,16 +1,5 @@
 package com.zhjq.web.controller.system;
 
-import java.util.List;
-import org.apache.shiro.authz.annotation.RequiresPermissions;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Controller;
-import org.springframework.ui.ModelMap;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.ResponseBody;
 import com.zhjq.common.annotation.Log;
 import com.zhjq.common.core.controller.BaseController;
 import com.zhjq.common.core.domain.AjaxResult;
@@ -25,16 +14,23 @@ 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
-{
+public class SysRoleController extends BaseController {
     private String prefix = "system/role";
 
     @Autowired
@@ -48,16 +44,14 @@ public class SysRoleController extends BaseController
 
     @RequiresPermissions("system:role:view")
     @GetMapping()
-    public String role()
-    {
+    public String role() {
         return prefix + "/role";
     }
 
     @RequiresPermissions("system:role:list")
     @PostMapping("/list")
     @ResponseBody
-    public TableDataInfo list(SysRole role)
-    {
+    public TableDataInfo list(SysRole role) {
         startPage();
         List<SysRole> list = roleService.selectRoleList(role);
         return getDataTable(list);
@@ -67,8 +61,7 @@ public class SysRoleController extends BaseController
     @RequiresPermissions("system:role:export")
     @PostMapping("/export")
     @ResponseBody
-    public AjaxResult export(SysRole role)
-    {
+    public AjaxResult export(SysRole role) {
         List<SysRole> list = roleService.selectRoleList(role);
         ExcelUtil<SysRole> util = new ExcelUtil<SysRole>(SysRole.class);
         return util.exportExcel(list, "角色数据");
@@ -78,8 +71,7 @@ public class SysRoleController extends BaseController
      * 新增角色
      */
     @GetMapping("/add")
-    public String add()
-    {
+    public String add() {
         return prefix + "/add";
     }
 
@@ -90,14 +82,10 @@ public class SysRoleController extends BaseController
     @Log(title = "角色管理", businessType = BusinessType.INSERT)
     @PostMapping("/add")
     @ResponseBody
-    public AjaxResult addSave(@Validated SysRole role)
-    {
-        if (!roleService.checkRoleNameUnique(role))
-        {
+    public AjaxResult addSave(@Validated SysRole role) {
+        if (!roleService.checkRoleNameUnique(role)) {
             return error("新增角色'" + role.getRoleName() + "'失败,角色名称已存在");
-        }
-        else if (!roleService.checkRoleKeyUnique(role))
-        {
+        } else if (!roleService.checkRoleKeyUnique(role)) {
             return error("新增角色'" + role.getRoleName() + "'失败,角色权限已存在");
         }
         role.setCreateBy(getLoginName());
@@ -111,8 +99,7 @@ public class SysRoleController extends BaseController
      */
     @RequiresPermissions("system:role:edit")
     @GetMapping("/edit/{roleId}")
-    public String edit(@PathVariable("roleId") Long roleId, ModelMap mmap)
-    {
+    public String edit(@PathVariable("roleId") Long roleId, ModelMap mmap) {
         roleService.checkRoleDataScope(roleId);
         mmap.put("role", roleService.selectRoleById(roleId));
         return prefix + "/edit";
@@ -125,16 +112,12 @@ public class SysRoleController extends BaseController
     @Log(title = "角色管理", businessType = BusinessType.UPDATE)
     @PostMapping("/edit")
     @ResponseBody
-    public AjaxResult editSave(@Validated SysRole role)
-    {
+    public AjaxResult editSave(@Validated SysRole role) {
         roleService.checkRoleAllowed(role);
         roleService.checkRoleDataScope(role.getRoleId());
-        if (!roleService.checkRoleNameUnique(role))
-        {
+        if (!roleService.checkRoleNameUnique(role)) {
             return error("修改角色'" + role.getRoleName() + "'失败,角色名称已存在");
-        }
-        else if (!roleService.checkRoleKeyUnique(role))
-        {
+        } else if (!roleService.checkRoleKeyUnique(role)) {
             return error("修改角色'" + role.getRoleName() + "'失败,角色权限已存在");
         }
         role.setUpdateBy(getLoginName());
@@ -146,8 +129,7 @@ public class SysRoleController extends BaseController
      * 角色分配数据权限
      */
     @GetMapping("/authDataScope/{roleId}")
-    public String authDataScope(@PathVariable("roleId") Long roleId, ModelMap mmap)
-    {
+    public String authDataScope(@PathVariable("roleId") Long roleId, ModelMap mmap) {
         mmap.put("role", roleService.selectRoleById(roleId));
         return prefix + "/dataScope";
     }
@@ -159,13 +141,11 @@ public class SysRoleController extends BaseController
     @Log(title = "角色管理", businessType = BusinessType.UPDATE)
     @PostMapping("/authDataScope")
     @ResponseBody
-    public AjaxResult authDataScopeSave(SysRole role)
-    {
+    public AjaxResult authDataScopeSave(SysRole role) {
         roleService.checkRoleAllowed(role);
         roleService.checkRoleDataScope(role.getRoleId());
         role.setUpdateBy(getLoginName());
-        if (roleService.authDataScope(role) > 0)
-        {
+        if (roleService.authDataScope(role) > 0) {
             setSysUser(userService.selectUserById(getUserId()));
             return success();
         }
@@ -176,8 +156,7 @@ public class SysRoleController extends BaseController
     @Log(title = "角色管理", businessType = BusinessType.DELETE)
     @PostMapping("/remove")
     @ResponseBody
-    public AjaxResult remove(String ids)
-    {
+    public AjaxResult remove(String ids) {
         return toAjax(roleService.deleteRoleByIds(ids));
     }
 
@@ -186,8 +165,7 @@ public class SysRoleController extends BaseController
      */
     @PostMapping("/checkRoleNameUnique")
     @ResponseBody
-    public boolean checkRoleNameUnique(SysRole role)
-    {
+    public boolean checkRoleNameUnique(SysRole role) {
         return roleService.checkRoleNameUnique(role);
     }
 
@@ -196,8 +174,7 @@ public class SysRoleController extends BaseController
      */
     @PostMapping("/checkRoleKeyUnique")
     @ResponseBody
-    public boolean checkRoleKeyUnique(SysRole role)
-    {
+    public boolean checkRoleKeyUnique(SysRole role) {
         return roleService.checkRoleKeyUnique(role);
     }
 
@@ -205,8 +182,7 @@ public class SysRoleController extends BaseController
      * 选择菜单树
      */
     @GetMapping("/selectMenuTree")
-    public String selectMenuTree()
-    {
+    public String selectMenuTree() {
         return prefix + "/tree";
     }
 
@@ -217,8 +193,7 @@ public class SysRoleController extends BaseController
     @RequiresPermissions("system:role:edit")
     @PostMapping("/changeStatus")
     @ResponseBody
-    public AjaxResult changeStatus(SysRole role)
-    {
+    public AjaxResult changeStatus(SysRole role) {
         roleService.checkRoleAllowed(role);
         roleService.checkRoleDataScope(role.getRoleId());
         return toAjax(roleService.changeStatus(role));
@@ -229,8 +204,7 @@ public class SysRoleController extends BaseController
      */
     @RequiresPermissions("system:role:edit")
     @GetMapping("/authUser/{roleId}")
-    public String authUser(@PathVariable("roleId") Long roleId, ModelMap mmap)
-    {
+    public String authUser(@PathVariable("roleId") Long roleId, ModelMap mmap) {
         mmap.put("role", roleService.selectRoleById(roleId));
         return prefix + "/authUser";
     }
@@ -241,8 +215,7 @@ public class SysRoleController extends BaseController
     @RequiresPermissions("system:role:list")
     @PostMapping("/authUser/allocatedList")
     @ResponseBody
-    public TableDataInfo allocatedList(SysUser user)
-    {
+    public TableDataInfo allocatedList(SysUser user) {
         startPage();
         List<SysUser> list = userService.selectAllocatedList(user);
         return getDataTable(list);
@@ -255,8 +228,7 @@ public class SysRoleController extends BaseController
     @Log(title = "角色管理", businessType = BusinessType.GRANT)
     @PostMapping("/authUser/cancel")
     @ResponseBody
-    public AjaxResult cancelAuthUser(SysUserRole userRole)
-    {
+    public AjaxResult cancelAuthUser(SysUserRole userRole) {
         return toAjax(roleService.deleteAuthUser(userRole));
     }
 
@@ -267,8 +239,7 @@ public class SysRoleController extends BaseController
     @Log(title = "角色管理", businessType = BusinessType.GRANT)
     @PostMapping("/authUser/cancelAll")
     @ResponseBody
-    public AjaxResult cancelAuthUserAll(Long roleId, String userIds)
-    {
+    public AjaxResult cancelAuthUserAll(Long roleId, String userIds) {
         return toAjax(roleService.deleteAuthUsers(roleId, userIds));
     }
 
@@ -276,8 +247,7 @@ public class SysRoleController extends BaseController
      * 选择用户
      */
     @GetMapping("/authUser/selectUser/{roleId}")
-    public String selectUser(@PathVariable("roleId") Long roleId, ModelMap mmap)
-    {
+    public String selectUser(@PathVariable("roleId") Long roleId, ModelMap mmap) {
         mmap.put("role", roleService.selectRoleById(roleId));
         return prefix + "/selectUser";
     }
@@ -288,8 +258,7 @@ public class SysRoleController extends BaseController
     @RequiresPermissions("system:role:list")
     @PostMapping("/authUser/unallocatedList")
     @ResponseBody
-    public TableDataInfo unallocatedList(SysUser user)
-    {
+    public TableDataInfo unallocatedList(SysUser user) {
         startPage();
         List<SysUser> list = userService.selectUnallocatedList(user);
         return getDataTable(list);
@@ -302,8 +271,7 @@ public class SysRoleController extends BaseController
     @Log(title = "角色管理", businessType = BusinessType.GRANT)
     @PostMapping("/authUser/selectAll")
     @ResponseBody
-    public AjaxResult selectAuthUserAll(Long roleId, String userIds)
-    {
+    public AjaxResult selectAuthUserAll(Long roleId, String userIds) {
         roleService.checkRoleDataScope(roleId);
         return toAjax(roleService.insertAuthUsers(roleId, userIds));
     }
@@ -314,8 +282,7 @@ public class SysRoleController extends BaseController
     @RequiresPermissions("system:role:edit")
     @GetMapping("/deptTreeData")
     @ResponseBody
-    public List<Ztree> deptTreeData(SysRole role)
-    {
+    public List<Ztree> deptTreeData(SysRole role) {
         List<Ztree> ztrees = deptService.roleDeptTreeData(role);
         return ztrees;
     }

+ 45 - 83
zhjq-admin/src/main/java/com/zhjq/web/controller/system/SysUserController.java

@@ -1,19 +1,5 @@
 package com.zhjq.web.controller.system;
 
-import java.util.List;
-import java.util.stream.Collectors;
-import org.apache.commons.lang3.ArrayUtils;
-import org.apache.shiro.authz.annotation.RequiresPermissions;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Controller;
-import org.springframework.ui.ModelMap;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.ResponseBody;
-import org.springframework.web.multipart.MultipartFile;
 import com.zhjq.common.annotation.Log;
 import com.zhjq.common.core.controller.BaseController;
 import com.zhjq.common.core.domain.AjaxResult;
@@ -34,16 +20,26 @@ 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
-{
+public class SysUserController extends BaseController {
     private String prefix = "system/user";
 
     @Autowired
@@ -51,7 +47,7 @@ public class SysUserController extends BaseController
 
     @Autowired
     private ISysRoleService roleService;
-    
+
     @Autowired
     private ISysDeptService deptService;
 
@@ -63,16 +59,14 @@ public class SysUserController extends BaseController
 
     @RequiresPermissions("system:user:view")
     @GetMapping()
-    public String user()
-    {
+    public String user() {
         return prefix + "/user";
     }
 
     @RequiresPermissions("system:user:list")
     @PostMapping("/list")
     @ResponseBody
-    public TableDataInfo list(SysUser user)
-    {
+    public TableDataInfo list(SysUser user) {
         startPage();
         List<SysUser> list = userService.selectUserList(user);
         return getDataTable(list);
@@ -82,8 +76,7 @@ public class SysUserController extends BaseController
     @RequiresPermissions("system:user:export")
     @PostMapping("/export")
     @ResponseBody
-    public AjaxResult export(SysUser user)
-    {
+    public AjaxResult export(SysUser user) {
         List<SysUser> list = userService.selectUserList(user);
         ExcelUtil<SysUser> util = new ExcelUtil<SysUser>(SysUser.class);
         return util.exportExcel(list, "用户数据");
@@ -93,8 +86,7 @@ public class SysUserController extends BaseController
     @RequiresPermissions("system:user:import")
     @PostMapping("/importData")
     @ResponseBody
-    public AjaxResult importData(MultipartFile file, boolean updateSupport) throws Exception
-    {
+    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());
@@ -104,8 +96,7 @@ public class SysUserController extends BaseController
     @RequiresPermissions("system:user:view")
     @GetMapping("/importTemplate")
     @ResponseBody
-    public AjaxResult importTemplate()
-    {
+    public AjaxResult importTemplate() {
         ExcelUtil<SysUser> util = new ExcelUtil<SysUser>(SysUser.class);
         return util.importTemplateExcel("用户数据");
     }
@@ -114,8 +105,7 @@ public class SysUserController extends BaseController
      * 新增用户
      */
     @GetMapping("/add")
-    public String add(ModelMap mmap)
-    {
+    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";
@@ -128,20 +118,14 @@ public class SysUserController extends BaseController
     @Log(title = "用户管理", businessType = BusinessType.INSERT)
     @PostMapping("/add")
     @ResponseBody
-    public AjaxResult addSave(@Validated SysUser user)
-    {
+    public AjaxResult addSave(@Validated SysUser user) {
         deptService.checkDeptDataScope(user.getDeptId());
         roleService.checkRoleDataScope(user.getRoleIds());
-        if (!userService.checkLoginNameUnique(user))
-        {
+        if (!userService.checkLoginNameUnique(user)) {
             return error("新增用户'" + user.getLoginName() + "'失败,登录账号已存在");
-        }
-        else if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user))
-        {
+        } else if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user)) {
             return error("新增用户'" + user.getLoginName() + "'失败,手机号码已存在");
-        }
-        else if (StringUtils.isNotEmpty(user.getEmail()) && !userService.checkEmailUnique(user))
-        {
+        } else if (StringUtils.isNotEmpty(user.getEmail()) && !userService.checkEmailUnique(user)) {
             return error("新增用户'" + user.getLoginName() + "'失败,邮箱账号已存在");
         }
         user.setSalt(ShiroUtils.randomSalt());
@@ -156,8 +140,7 @@ public class SysUserController extends BaseController
      */
     @RequiresPermissions("system:user:edit")
     @GetMapping("/edit/{userId}")
-    public String edit(@PathVariable("userId") Long userId, ModelMap mmap)
-    {
+    public String edit(@PathVariable("userId") Long userId, ModelMap mmap) {
         userService.checkUserDataScope(userId);
         List<SysRole> roles = roleService.selectRolesByUserId(userId);
         mmap.put("user", userService.selectUserById(userId));
@@ -171,8 +154,7 @@ public class SysUserController extends BaseController
      */
     @RequiresPermissions("system:user:list")
     @GetMapping("/view/{userId}")
-    public String view(@PathVariable("userId") Long userId, ModelMap mmap)
-    {
+    public String view(@PathVariable("userId") Long userId, ModelMap mmap) {
         userService.checkUserDataScope(userId);
         mmap.put("user", userService.selectUserById(userId));
         mmap.put("roleGroup", userService.selectUserRoleGroup(userId));
@@ -187,22 +169,16 @@ public class SysUserController extends BaseController
     @Log(title = "用户管理", businessType = BusinessType.UPDATE)
     @PostMapping("/edit")
     @ResponseBody
-    public AjaxResult editSave(@Validated SysUser user)
-    {
+    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))
-        {
+        if (!userService.checkLoginNameUnique(user)) {
             return error("修改用户'" + user.getLoginName() + "'失败,登录账号已存在");
-        }
-        else if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user))
-        {
+        } else if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user)) {
             return error("修改用户'" + user.getLoginName() + "'失败,手机号码已存在");
-        }
-        else if (StringUtils.isNotEmpty(user.getEmail()) && !userService.checkEmailUnique(user))
-        {
+        } else if (StringUtils.isNotEmpty(user.getEmail()) && !userService.checkEmailUnique(user)) {
             return error("修改用户'" + user.getLoginName() + "'失败,邮箱账号已存在");
         }
         user.setUpdateBy(getLoginName());
@@ -212,8 +188,7 @@ public class SysUserController extends BaseController
 
     @RequiresPermissions("system:user:resetPwd")
     @GetMapping("/resetPwd/{userId}")
-    public String resetPwd(@PathVariable("userId") Long userId, ModelMap mmap)
-    {
+    public String resetPwd(@PathVariable("userId") Long userId, ModelMap mmap) {
         mmap.put("user", userService.selectUserById(userId));
         return prefix + "/resetPwd";
     }
@@ -222,16 +197,13 @@ public class SysUserController extends BaseController
     @Log(title = "重置密码", businessType = BusinessType.UPDATE)
     @PostMapping("/resetPwd")
     @ResponseBody
-    public AjaxResult resetPwdSave(SysUser user)
-    {
+    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())
-            {
+        if (userService.resetUserPwd(user) > 0) {
+            if (ShiroUtils.getUserId().longValue() == user.getUserId().longValue()) {
                 setSysUser(userService.selectUserById(user.getUserId()));
             }
             return success();
@@ -243,8 +215,7 @@ public class SysUserController extends BaseController
      * 进入授权角色页
      */
     @GetMapping("/authRole/{userId}")
-    public String authRole(@PathVariable("userId") Long userId, ModelMap mmap)
-    {
+    public String authRole(@PathVariable("userId") Long userId, ModelMap mmap) {
         SysUser user = userService.selectUserById(userId);
         // 获取用户所属的角色列表
         List<SysRole> roles = roleService.selectRolesByUserId(userId);
@@ -260,8 +231,7 @@ public class SysUserController extends BaseController
     @Log(title = "用户管理", businessType = BusinessType.GRANT)
     @PostMapping("/authRole/insertAuthRole")
     @ResponseBody
-    public AjaxResult insertAuthRole(Long userId, Long[] roleIds)
-    {
+    public AjaxResult insertAuthRole(Long userId, Long[] roleIds) {
         userService.checkUserDataScope(userId);
         roleService.checkRoleDataScope(roleIds);
         userService.insertUserAuth(userId, roleIds);
@@ -273,10 +243,8 @@ public class SysUserController extends BaseController
     @Log(title = "用户管理", businessType = BusinessType.DELETE)
     @PostMapping("/remove")
     @ResponseBody
-    public AjaxResult remove(String ids)
-    {
-        if (ArrayUtils.contains(Convert.toLongArray(ids), getUserId()))
-        {
+    public AjaxResult remove(String ids) {
+        if (ArrayUtils.contains(Convert.toLongArray(ids), getUserId())) {
             return error("当前用户不能删除");
         }
         return toAjax(userService.deleteUserByIds(ids));
@@ -287,8 +255,7 @@ public class SysUserController extends BaseController
      */
     @PostMapping("/checkLoginNameUnique")
     @ResponseBody
-    public boolean checkLoginNameUnique(SysUser user)
-    {
+    public boolean checkLoginNameUnique(SysUser user) {
         return userService.checkLoginNameUnique(user);
     }
 
@@ -297,8 +264,7 @@ public class SysUserController extends BaseController
      */
     @PostMapping("/checkPhoneUnique")
     @ResponseBody
-    public boolean checkPhoneUnique(SysUser user)
-    {
+    public boolean checkPhoneUnique(SysUser user) {
         return userService.checkPhoneUnique(user);
     }
 
@@ -307,8 +273,7 @@ public class SysUserController extends BaseController
      */
     @PostMapping("/checkEmailUnique")
     @ResponseBody
-    public boolean checkEmailUnique(SysUser user)
-    {
+    public boolean checkEmailUnique(SysUser user) {
         return userService.checkEmailUnique(user);
     }
 
@@ -319,8 +284,7 @@ public class SysUserController extends BaseController
     @RequiresPermissions("system:user:edit")
     @PostMapping("/changeStatus")
     @ResponseBody
-    public AjaxResult changeStatus(SysUser user)
-    {
+    public AjaxResult changeStatus(SysUser user) {
         userService.checkUserAllowed(user);
         userService.checkUserDataScope(user.getUserId());
         return toAjax(userService.changeStatus(user));
@@ -332,21 +296,19 @@ public class SysUserController extends BaseController
     @RequiresPermissions("system:user:list")
     @GetMapping("/deptTreeData")
     @ResponseBody
-    public List<Ztree> deptTreeData()
-    {
+    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)
-    {
+    public String selectDeptTree(@PathVariable("deptId") Long deptId, ModelMap mmap) {
         mmap.put("dept", deptService.selectDeptById(deptId));
         return prefix + "/deptTree";
     }

+ 4 - 6
zhjq-admin/src/main/java/com/zhjq/web/controller/tool/BuildController.java

@@ -1,26 +1,24 @@
 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;
-import com.zhjq.common.core.controller.BaseController;
 
 /**
  * build 表单构建
- * 
+ *
  * @author ruoyi
  */
 @Controller
 @RequestMapping("/tool/build")
-public class BuildController extends BaseController
-{
+public class BuildController extends BaseController {
     private String prefix = "tool/build";
 
     @RequiresPermissions("tool:build:view")
     @GetMapping()
-    public String build()
-    {
+    public String build() {
         return prefix + "/build";
     }
 }

+ 4 - 6
zhjq-admin/src/main/java/com/zhjq/web/controller/tool/SwaggerController.java

@@ -1,24 +1,22 @@
 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;
-import com.zhjq.common.core.controller.BaseController;
 
 /**
  * swagger 接口
- * 
+ *
  * @author ruoyi
  */
 @Controller
 @RequestMapping("/tool/swagger")
-public class SwaggerController extends BaseController
-{
+public class SwaggerController extends BaseController {
     @RequiresPermissions("tool:swagger:view")
     @GetMapping()
-    public String index()
-    {
+    public String index() {
         return redirect("/swagger-ui/index.html");
     }
 }

+ 36 - 72
zhjq-admin/src/main/java/com/zhjq/web/controller/tool/TestController.java

@@ -1,38 +1,27 @@
 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;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.PutMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-import com.zhjq.common.core.controller.BaseController;
-import com.zhjq.common.core.domain.R;
-import com.zhjq.common.utils.StringUtils;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiImplicitParam;
-import io.swagger.annotations.ApiImplicitParams;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import io.swagger.annotations.ApiOperation;
 
 /**
  * swagger 用户测试方法
- * 
+ *
  * @author ruoyi
  */
 @Api("用户信息管理")
 @RestController
 @RequestMapping("/test/user")
-public class TestController extends BaseController
-{
+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"));
@@ -40,8 +29,7 @@ public class TestController extends BaseController
 
     @ApiOperation("获取用户列表")
     @GetMapping("/list")
-    public R<List<UserEntity>> userList()
-    {
+    public R<List<UserEntity>> userList() {
         List<UserEntity> userList = new ArrayList<UserEntity>(users.values());
         return R.ok(userList);
     }
@@ -49,30 +37,24 @@ public class TestController extends BaseController
     @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))
-        {
+    public R<UserEntity> getUser(@PathVariable Integer userId) {
+        if (!users.isEmpty() && users.containsKey(userId)) {
             return R.ok(users.get(userId));
-        }
-        else
-        {
+        } 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)
+            @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()))
-        {
+    public R<String> save(UserEntity user) {
+        if (StringUtils.isNull(user) || StringUtils.isNull(user.getUserId())) {
             return R.fail("用户ID不能为空");
         }
         users.put(user.getUserId(), user);
@@ -81,14 +63,11 @@ public class TestController extends BaseController
 
     @ApiOperation("更新用户")
     @PutMapping("/update")
-    public R<String> update(@RequestBody UserEntity user)
-    {
-        if (StringUtils.isNull(user) || StringUtils.isNull(user.getUserId()))
-        {
+    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()))
-        {
+        if (users.isEmpty() || !users.containsKey(user.getUserId())) {
             return R.fail("用户不存在");
         }
         users.remove(user.getUserId());
@@ -99,23 +78,18 @@ public class TestController extends BaseController
     @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))
-        {
+    public R<String> delete(@PathVariable Integer userId) {
+        if (!users.isEmpty() && users.containsKey(userId)) {
             users.remove(userId);
             return R.ok();
-        }
-        else
-        {
+        } else {
             return R.fail("用户不存在");
         }
     }
 }
 
 @ApiModel(value = "UserEntity", description = "用户实体")
-class UserEntity
-{
+class UserEntity {
     @ApiModelProperty("用户ID")
     private Integer userId;
 
@@ -128,56 +102,46 @@ class UserEntity
     @ApiModelProperty("用户手机")
     private String mobile;
 
-    public UserEntity()
-    {
+    public UserEntity() {
 
     }
 
-    public UserEntity(Integer userId, String username, String password, String mobile)
-    {
+    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()
-    {
+    public Integer getUserId() {
         return userId;
     }
 
-    public void setUserId(Integer userId)
-    {
+    public void setUserId(Integer userId) {
         this.userId = userId;
     }
 
-    public String getUsername()
-    {
+    public String getUsername() {
         return username;
     }
 
-    public void setUsername(String username)
-    {
+    public void setUsername(String username) {
         this.username = username;
     }
 
-    public String getPassword()
-    {
+    public String getPassword() {
         return password;
     }
 
-    public void setPassword(String password)
-    {
+    public void setPassword(String password) {
         this.password = password;
     }
 
-    public String getMobile()
-    {
+    public String getMobile() {
         return mobile;
     }
 
-    public void setMobile(String mobile)
-    {
+    public void setMobile(String mobile) {
         this.mobile = mobile;
     }
 }

+ 10 - 11
zhjq-admin/src/main/java/com/zhjq/web/core/config/SwaggerConfig.java

@@ -1,10 +1,10 @@
 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 com.zhjq.common.config.RuoYiConfig;
-import io.swagger.annotations.ApiOperation;
 import springfox.documentation.builders.ApiInfoBuilder;
 import springfox.documentation.builders.PathSelectors;
 import springfox.documentation.builders.RequestHandlerSelectors;
@@ -15,22 +15,22 @@ import springfox.documentation.spring.web.plugins.Docket;
 
 /**
  * Swagger2的接口配置
- * 
+ *
  * @author ruoyi
  */
 @Configuration
-public class SwaggerConfig
-{
-    /** 是否开启swagger */
+public class SwaggerConfig {
+    /**
+     * 是否开启swagger
+     */
     @Value("${swagger.enabled}")
     private boolean enabled;
-    
+
     /**
      * 创建API
      */
     @Bean
-    public Docket createRestApi()
-    {
+    public Docket createRestApi() {
         return new Docket(DocumentationType.OAS_30)
                 // 是否启用Swagger
                 .enable(enabled)
@@ -50,8 +50,7 @@ public class SwaggerConfig
     /**
      * 添加摘要信息
      */
-    private ApiInfo apiInfo()
-    {
+    private ApiInfo apiInfo() {
         // 用ApiInfoBuilder进行定制
         return new ApiInfoBuilder()
                 // 设置标题

+ 59 - 59
zhjq-admin/src/main/resources/application-druid.yml

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

+ 1 - 1
zhjq-admin/src/main/resources/application.yml

@@ -30,7 +30,7 @@ server:
       max: 800
       # Tomcat启动初始化的线程数,默认值10
       min-spare: 100
- 
+
 # 日志配置
 logging:
   level:

+ 1 - 23
zhjq-admin/src/main/resources/banner.txt

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

+ 8 - 8
zhjq-admin/src/main/resources/ehcache/ehcache-shiro.xml

@@ -3,7 +3,7 @@
 
     <!-- 磁盘缓存位置 -->
     <diskStore path="java.io.tmpdir"/>
-    
+
     <!-- maxEntriesLocalHeap:堆内存中最大缓存对象数,0没有限制 -->
     <!-- maxElementsInMemory: 在内存中缓存的element的最大数目。-->
     <!-- eternal:elements是否永久有效,如果为true,timeouts将被忽略,element将永不过期 -->
@@ -11,7 +11,7 @@
     <!-- timeToLiveSeconds:失效前的存活秒数,创建时间到失效时间的间隔为存活时间,当eternal为false时,这个属性才有效,0为不限制 -->
     <!-- overflowToDisk: 如果内存中数据超过内存限制,是否要缓存到磁盘上 -->
     <!-- statistics:是否收集统计信息。如果需要监控缓存使用情况,应该打开这个选项。默认为关闭(统计会影响性能)。设置statistics="true"开启统计 -->
-    
+
     <!-- 默认缓存 -->
     <defaultCache
             maxEntriesLocalHeap="1000"
@@ -41,7 +41,7 @@
            timeToIdleSeconds="0"
            statistics="false">
     </cache>
-    
+
     <!-- 系统用户授权缓存  没必要过期 -->
     <cache name="sys-authCache"
            maxEntriesLocalHeap="10000"
@@ -52,7 +52,7 @@
            timeToIdleSeconds="0"
            memoryStoreEvictionPolicy="LRU"
            statistics="false"/>
-    
+
     <!-- 系统缓存 -->
     <cache name="sys-cache"
            maxEntriesLocalHeap="1000"
@@ -60,7 +60,7 @@
            overflowToDisk="true"
            statistics="false">
     </cache>
-    
+
     <!-- 系统参数缓存 -->
     <cache name="sys-config"
            maxEntriesLocalHeap="1000"
@@ -68,7 +68,7 @@
            overflowToDisk="true"
            statistics="false">
     </cache>
-    
+
     <!-- 系统字典缓存 -->
     <cache name="sys-dict"
            maxEntriesLocalHeap="1000"
@@ -76,7 +76,7 @@
            overflowToDisk="true"
            statistics="false">
     </cache>
-    
+
     <!-- 系统会话缓存 -->
     <cache name="shiro-activeSessionCache"
            maxEntriesLocalHeap="10000"
@@ -86,6 +86,6 @@
            timeToLiveSeconds="0"
            timeToIdleSeconds="0"
            statistics="false"/>
-    
+
 </ehcache>
 	

+ 46 - 46
zhjq-admin/src/main/resources/logback.xml

@@ -1,31 +1,31 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <configuration>
     <!-- 日志存放路径 -->
-	<property name="log.path" value="/home/ruoyi/logs" />
+    <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" />
+    <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>
+    <!-- 控制台输出 -->
+    <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">
+        <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">
+            <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>
             <!-- 匹配时的操作:接收(记录) -->
@@ -33,16 +33,16 @@
             <!-- 不匹配时的操作:拒绝(不记录) -->
             <onMismatch>DENY</onMismatch>
         </filter>
-	</appender>
-	
-	<appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
-	    <file>${log.path}/sys-error.log</file>
+    </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>
+            <!-- 日志最大的历史 60天 -->
+            <maxHistory>60</maxHistory>
         </rollingPolicy>
         <encoder>
             <pattern>${log.pattern}</pattern>
@@ -50,16 +50,16 @@
         <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>
+        <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>
@@ -70,23 +70,23 @@
             <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>
-	
-	<!--系统操作日志-->
+    <!-- 系统模块日志级别控制  -->
+    <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" />
+        <appender-ref ref="file_info"/>
+        <appender-ref ref="file_error"/>
     </root>
-	
-	<!--系统用户操作日志-->
+
+    <!--系统用户操作日志-->
     <logger name="sys-user" level="info">
         <appender-ref ref="sys-user"/>
     </logger>

+ 10 - 10
zhjq-admin/src/main/resources/mybatis/mybatis-config.xml

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

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 507 - 524
zhjq-admin/src/main/resources/static/ajax/libs/beautifyhtml/beautifyhtml.js


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 598 - 600
zhjq-admin/src/main/resources/static/ajax/libs/blockUI/jquery.blockUI.js


+ 103 - 103
zhjq-admin/src/main/resources/static/ajax/libs/bootstrap-fileinput/fileinput.js

@@ -6562,110 +6562,110 @@
             close: 'Close detailed preview'
         }
     };
-    
+
     $.fn.fileinputLocales.zh = {
-    		sizeUnits: ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'], 
-            bitRateUnits: ['B/s', 'KB/s', 'MB/s', 'GB/s', 'TB/s', 'PB/s', 'EB/s', 'ZB/s', 'YB/s'],
-            fileSingle: '文件',
-            filePlural: '个文件',
-            browseLabel: '选择 &hellip;',
-            removeLabel: '移除',
-            removeTitle: '清除选中文件',
-            cancelLabel: '取消',
-            cancelTitle: '取消进行中的上传',
-            pauseLabel: '暂停',
-            pauseTitle: '暂停上传',
-            uploadLabel: '上传',
-            uploadTitle: '上传选中文件',
-            msgNo: '没有',
-            msgNoFilesSelected: '未选择文件',
-            msgPaused: '已暂停',
-            msgCancelled: '取消',
-            msgPlaceholder: '选择 {files} ...',
-            msgZoomModalHeading: '详细预览',
-            msgFileRequired: '必须选择一个文件上传.',
-            msgSizeTooSmall: '文件 "{name}" (<b>{size}</b>) 必须大于限定大小 <b>{minSize}</b>.',
-            msgSizeTooLarge: '文件 "{name}" (<b>{size}</b>) 超过了允许大小 <b>{maxSize}</b>.',
-            msgFilesTooLess: '你必须选择最少 <b>{n}</b> {files} 来上传. ',
-            msgFilesTooMany: '选择的上传文件个数 <b>({n})</b> 超出最大文件的限制个数 <b>{m}</b>.',
-            msgTotalFilesTooMany: '你最多可以上传 <b>{m}</b> 个文件 (当前有<b>{n}</b> 个文件).',
-            msgFileNotFound: '文件 "{name}" 未找到!',
-            msgFileSecured: '安全限制,为了防止读取文件 "{name}".',
-            msgFileNotReadable: '文件 "{name}" 不可读.',
-            msgFilePreviewAborted: '取消 "{name}" 的预览.',
-            msgFilePreviewError: '读取 "{name}" 时出现了一个错误.',
-            msgInvalidFileName: '文件名 "{name}" 包含非法字符.',
-            msgInvalidFileType: '不正确的类型 "{name}". 只支持 "{types}" 类型的文件.',
-            msgInvalidFileExtension: '不正确的文件扩展名 "{name}". 只支持 "{extensions}" 的文件扩展名.',
-            msgFileTypes: {
-                'image': 'image',
-                'html': 'HTML',
-                'text': 'text',
-                'video': 'video',
-                'audio': 'audio',
-                'flash': 'flash',
-                'pdf': 'PDF',
-                'object': 'object'
-            },
-            msgUploadAborted: '该文件上传被中止',
-            msgUploadThreshold: '处理中 &hellip;',
-            msgUploadBegin: '正在初始化 &hellip;',
-            msgUploadEnd: '完成',
-            msgUploadResume: '继续上传 &hellip;',
-            msgUploadEmpty: '无效的文件上传.',
-            msgUploadError: '上传出错',
-            msgDeleteError: '删除出错',
-            msgProgressError: '上传出错',
-            msgValidationError: '验证错误',
-            msgLoading: '加载第 {index} 文件 共 {files} &hellip;',
-            msgProgress: '加载第 {index} 文件 共 {files} - {name} - {percent}% 完成.',
-            msgSelected: '{n} {files} 选中',
-            msgProcessing: '处理中 ...',
-            msgFoldersNotAllowed: '只支持拖拽文件! 跳过 {n} 拖拽的文件夹.',
-            msgImageWidthSmall: '图像文件的"{name}"的宽度必须是至少{size}像素.',
-            msgImageHeightSmall: '图像文件的"{name}"的高度必须至少为{size}像素.',
-            msgImageWidthLarge: '图像文件"{name}"的宽度不能超过{size}像素.',
-            msgImageHeightLarge: '图像文件"{name}"的高度不能超过{size}像素.',
-            msgImageResizeError: '无法获取的图像尺寸调整。',
-            msgImageResizeException: '调整图像大小时发生错误。<pre>{errors}</pre>',
-            msgAjaxError: '{operation} 发生错误. 请重试!',
-            msgAjaxProgressError: '{operation} 失败',
-            msgDuplicateFile: '文件 "{name}",大小 "{size}" 已经被选中.忽略相同的文件.',
-            msgResumableUploadRetriesExceeded:  '文件 <b>{file}</b> 上传失败超过 <b>{max}</b> 次重试 ! 错误详情: <pre>{error}</pre>',
-            msgPendingTime: '{time} 剩余',
-            msgCalculatingTime: '计算剩余时间',
-            ajaxOperations: {
-                deleteThumb: '删除文件',
-                uploadThumb: '上传文件',
-                uploadBatch: '批量上传',
-                uploadExtra: '表单数据上传'
-            },
-            dropZoneTitle: '拖拽文件到这里 &hellip;<br>支持多文件同时上传',
-            dropZoneClickTitle: '<br>(或点击{files}按钮选择文件)',
-            fileActionSettings: {
-                removeTitle: '删除文件',
-                uploadTitle: '上传文件',
-                downloadTitle: '下载文件',
-                uploadRetryTitle: '重试',
-                rotateTitle: '顺时针旋转90度',
-                zoomTitle: '查看详情',
-                dragTitle: '移动 / 重置',
-                indicatorNewTitle: '没有上传',
-                indicatorSuccessTitle: '上传',
-                indicatorErrorTitle: '上传错误',
-                indicatorPausedTitle: '上传已暂停',
-                indicatorLoadingTitle:  '上传 &hellip;'
-            },
-            previewZoomButtonTitles: {
-                prev: '预览上一个文件',
-                next: '预览下一个文件',
-                rotate: '顺时针旋转90度',
-                toggleheader: '缩放',
-                fullscreen: '全屏',
-                borderless: '无边界模式',
-                close: '关闭当前预览'
-            }
-        };
+        sizeUnits: ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'],
+        bitRateUnits: ['B/s', 'KB/s', 'MB/s', 'GB/s', 'TB/s', 'PB/s', 'EB/s', 'ZB/s', 'YB/s'],
+        fileSingle: '文件',
+        filePlural: '个文件',
+        browseLabel: '选择 &hellip;',
+        removeLabel: '移除',
+        removeTitle: '清除选中文件',
+        cancelLabel: '取消',
+        cancelTitle: '取消进行中的上传',
+        pauseLabel: '暂停',
+        pauseTitle: '暂停上传',
+        uploadLabel: '上传',
+        uploadTitle: '上传选中文件',
+        msgNo: '没有',
+        msgNoFilesSelected: '未选择文件',
+        msgPaused: '已暂停',
+        msgCancelled: '取消',
+        msgPlaceholder: '选择 {files} ...',
+        msgZoomModalHeading: '详细预览',
+        msgFileRequired: '必须选择一个文件上传.',
+        msgSizeTooSmall: '文件 "{name}" (<b>{size}</b>) 必须大于限定大小 <b>{minSize}</b>.',
+        msgSizeTooLarge: '文件 "{name}" (<b>{size}</b>) 超过了允许大小 <b>{maxSize}</b>.',
+        msgFilesTooLess: '你必须选择最少 <b>{n}</b> {files} 来上传. ',
+        msgFilesTooMany: '选择的上传文件个数 <b>({n})</b> 超出最大文件的限制个数 <b>{m}</b>.',
+        msgTotalFilesTooMany: '你最多可以上传 <b>{m}</b> 个文件 (当前有<b>{n}</b> 个文件).',
+        msgFileNotFound: '文件 "{name}" 未找到!',
+        msgFileSecured: '安全限制,为了防止读取文件 "{name}".',
+        msgFileNotReadable: '文件 "{name}" 不可读.',
+        msgFilePreviewAborted: '取消 "{name}" 的预览.',
+        msgFilePreviewError: '读取 "{name}" 时出现了一个错误.',
+        msgInvalidFileName: '文件名 "{name}" 包含非法字符.',
+        msgInvalidFileType: '不正确的类型 "{name}". 只支持 "{types}" 类型的文件.',
+        msgInvalidFileExtension: '不正确的文件扩展名 "{name}". 只支持 "{extensions}" 的文件扩展名.',
+        msgFileTypes: {
+            'image': 'image',
+            'html': 'HTML',
+            'text': 'text',
+            'video': 'video',
+            'audio': 'audio',
+            'flash': 'flash',
+            'pdf': 'PDF',
+            'object': 'object'
+        },
+        msgUploadAborted: '该文件上传被中止',
+        msgUploadThreshold: '处理中 &hellip;',
+        msgUploadBegin: '正在初始化 &hellip;',
+        msgUploadEnd: '完成',
+        msgUploadResume: '继续上传 &hellip;',
+        msgUploadEmpty: '无效的文件上传.',
+        msgUploadError: '上传出错',
+        msgDeleteError: '删除出错',
+        msgProgressError: '上传出错',
+        msgValidationError: '验证错误',
+        msgLoading: '加载第 {index} 文件 共 {files} &hellip;',
+        msgProgress: '加载第 {index} 文件 共 {files} - {name} - {percent}% 完成.',
+        msgSelected: '{n} {files} 选中',
+        msgProcessing: '处理中 ...',
+        msgFoldersNotAllowed: '只支持拖拽文件! 跳过 {n} 拖拽的文件夹.',
+        msgImageWidthSmall: '图像文件的"{name}"的宽度必须是至少{size}像素.',
+        msgImageHeightSmall: '图像文件的"{name}"的高度必须至少为{size}像素.',
+        msgImageWidthLarge: '图像文件"{name}"的宽度不能超过{size}像素.',
+        msgImageHeightLarge: '图像文件"{name}"的高度不能超过{size}像素.',
+        msgImageResizeError: '无法获取的图像尺寸调整。',
+        msgImageResizeException: '调整图像大小时发生错误。<pre>{errors}</pre>',
+        msgAjaxError: '{operation} 发生错误. 请重试!',
+        msgAjaxProgressError: '{operation} 失败',
+        msgDuplicateFile: '文件 "{name}",大小 "{size}" 已经被选中.忽略相同的文件.',
+        msgResumableUploadRetriesExceeded: '文件 <b>{file}</b> 上传失败超过 <b>{max}</b> 次重试 ! 错误详情: <pre>{error}</pre>',
+        msgPendingTime: '{time} 剩余',
+        msgCalculatingTime: '计算剩余时间',
+        ajaxOperations: {
+            deleteThumb: '删除文件',
+            uploadThumb: '上传文件',
+            uploadBatch: '批量上传',
+            uploadExtra: '表单数据上传'
+        },
+        dropZoneTitle: '拖拽文件到这里 &hellip;<br>支持多文件同时上传',
+        dropZoneClickTitle: '<br>(或点击{files}按钮选择文件)',
+        fileActionSettings: {
+            removeTitle: '删除文件',
+            uploadTitle: '上传文件',
+            downloadTitle: '下载文件',
+            uploadRetryTitle: '重试',
+            rotateTitle: '顺时针旋转90度',
+            zoomTitle: '查看详情',
+            dragTitle: '移动 / 重置',
+            indicatorNewTitle: '没有上传',
+            indicatorSuccessTitle: '上传',
+            indicatorErrorTitle: '上传错误',
+            indicatorPausedTitle: '上传已暂停',
+            indicatorLoadingTitle: '上传 &hellip;'
+        },
+        previewZoomButtonTitles: {
+            prev: '预览上一个文件',
+            next: '预览下一个文件',
+            rotate: '顺时针旋转90度',
+            toggleheader: '缩放',
+            fullscreen: '全屏',
+            borderless: '无边界模式',
+            close: '关闭当前预览'
+        }
+    };
 
     $.fn.fileinput.Constructor = FileInput;
 

+ 322 - 245
zhjq-admin/src/main/resources/static/ajax/libs/bootstrap-select/bootstrap-select.css

@@ -6,66 +6,74 @@
  */
 
 @-webkit-keyframes bs-notify-fadeOut {
-  0% {
-    opacity: 0.9;
-  }
-  100% {
-    opacity: 0;
-  }
+    0% {
+        opacity: 0.9;
+    }
+    100% {
+        opacity: 0;
+    }
 }
+
 @-o-keyframes bs-notify-fadeOut {
-  0% {
-    opacity: 0.9;
-  }
-  100% {
-    opacity: 0;
-  }
+    0% {
+        opacity: 0.9;
+    }
+    100% {
+        opacity: 0;
+    }
 }
+
 @keyframes bs-notify-fadeOut {
-  0% {
-    opacity: 0.9;
-  }
-  100% {
-    opacity: 0;
-  }
+    0% {
+        opacity: 0.9;
+    }
+    100% {
+        opacity: 0;
+    }
 }
+
 select.bs-select-hidden,
 .bootstrap-select > select.bs-select-hidden,
 select.selectpicker {
-  display: none !important;
+    display: none !important;
 }
+
 .bootstrap-select {
-  width: 220px \0;
-  /*IE9 and below*/
-  vertical-align: middle;
+    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;
+    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;
+    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;
+    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,
@@ -90,370 +98,439 @@ select.selectpicker {
 .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);
+    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;
+    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;
+    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;
+    border-color: #b94a48;
 }
+
 .bootstrap-select.is-valid .dropdown-toggle,
 .was-validated .bootstrap-select select:valid + .dropdown-toggle {
-  border-color: #28a745;
+    border-color: #28a745;
 }
+
 .bootstrap-select.fit-width {
-  width: auto !important;
+    width: auto !important;
 }
+
 .bootstrap-select:not([class*="col-"]):not([class*="form-control"]):not(.input-group-btn) {
-  width: 220px;
+    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;
+    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;
+    margin-bottom: 0;
+    padding: 0;
+    border: none;
+    height: auto;
 }
+
 :not(.input-group) > .bootstrap-select.form-control:not([class*="col-"]) {
-  width: 100%;
+    width: 100%;
 }
+
 .bootstrap-select.form-control.input-group-btn {
-  float: none;
-  z-index: auto;
+    float: none;
+    z-index: auto;
 }
+
 .form-inline .bootstrap-select,
 .form-inline .bootstrap-select.form-control:not([class*="col-"]) {
-  width: auto;
+    width: auto;
 }
+
 .bootstrap-select:not(.input-group-btn),
 .bootstrap-select[class*="col-"] {
-  float: none;
-  display: inline-block;
-  margin-left: 0;
+    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;
+    float: right;
 }
+
 .form-inline .bootstrap-select,
 .form-horizontal .bootstrap-select,
 .form-group .bootstrap-select {
-  margin-bottom: 0;
+    margin-bottom: 0;
 }
+
 .form-group-lg .bootstrap-select.form-control,
 .form-group-sm .bootstrap-select.form-control {
-  padding: 0;
+    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;
+    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;
+    font-size: inherit;
+    line-height: inherit;
+    border-radius: inherit;
 }
+
 .bootstrap-select.form-control-sm .dropdown-toggle {
-  padding: 0.25rem 0.5rem;
+    padding: 0.25rem 0.5rem;
 }
+
 .bootstrap-select.form-control-lg .dropdown-toggle {
-  padding: 0.5rem 1rem;
+    padding: 0.5rem 1rem;
 }
+
 .form-inline .bootstrap-select .form-control {
-  width: 100%;
+    width: 100%;
 }
+
 .bootstrap-select.disabled,
 .bootstrap-select > .disabled {
-  cursor: not-allowed;
+    cursor: not-allowed;
 }
+
 .bootstrap-select.disabled:focus,
 .bootstrap-select > .disabled:focus {
-  outline: none !important;
+    outline: none !important;
 }
+
 .bootstrap-select.bs-container {
-  position: absolute;
-  top: 0;
-  left: 0;
-  height: 0 !important;
-  padding: 0 !important;
+    position: absolute;
+    top: 0;
+    left: 0;
+    height: 0 !important;
+    padding: 0 !important;
 }
+
 .bootstrap-select.bs-container .dropdown-menu {
-  z-index: 1060;
+    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;
+    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;
+    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;
+    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;
+    padding-right: inherit;
 }
+
 .bootstrap-select .dropdown-toggle .filter-option-inner-inner {
-  overflow: hidden;
+    overflow: hidden;
 }
+
 .bootstrap-select .dropdown-toggle .filter-expand {
-  width: 0 !important;
-  float: left;
-  opacity: 0 !important;
-  overflow: hidden;
+    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;
+    position: absolute;
+    top: 50%;
+    right: 12px;
+    margin-top: -2px;
+    vertical-align: middle;
 }
+
 .input-group .bootstrap-select.form-control .dropdown-toggle {
-  border-radius: inherit;
+    border-radius: inherit;
 }
+
 .bootstrap-select[class*="col-"] .dropdown-toggle {
-  width: 100%;
+    width: 100%;
 }
+
 .bootstrap-select .dropdown-menu {
-  min-width: 100%;
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
+    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;
+    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;
+    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;
+    position: relative;
 }
+
 .bootstrap-select .dropdown-menu li.active small {
-  color: rgba(255, 255, 255, 0.5) !important;
+    color: rgba(255, 255, 255, 0.5) !important;
 }
+
 .bootstrap-select .dropdown-menu li.disabled a {
-  cursor: not-allowed;
+    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;
+    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;
+    position: relative;
+    padding-left: 2.25em;
 }
+
 .bootstrap-select .dropdown-menu li a span.check-mark {
-  display: none;
+    display: none;
 }
+
 .bootstrap-select .dropdown-menu li a span.text {
-  display: inline-block;
+    display: inline-block;
 }
+
 .bootstrap-select .dropdown-menu li small {
-  padding-left: 0.5em;
+    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;
+    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;
+    -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;
+    padding: 3px;
+    background: #f5f5f5;
+    margin: 0 5px;
+    white-space: nowrap;
 }
+
 .bootstrap-select.fit-width .dropdown-toggle .filter-option {
-  position: static;
-  display: inline;
-  padding: 0;
+    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;
+    display: inline;
 }
+
 .bootstrap-select.fit-width .dropdown-toggle .bs-caret:before {
-  content: '\00a0';
+    content: '\00a0';
 }
+
 .bootstrap-select.fit-width .dropdown-toggle .caret {
-  position: static;
-  top: auto;
-  margin-top: -1px;
+    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;
+    position: absolute;
+    display: inline-block;
+    right: 15px;
+    top: 5px;
 }
+
 .bootstrap-select.show-tick .dropdown-menu li a span.text {
-  margin-right: 34px;
+    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);
+    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;
+    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;
+    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;
+    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;
+    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;
+    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;
+    right: 12px;
+    left: auto;
 }
+
 .bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle .filter-option:after {
-  right: 13px;
-  left: auto;
+    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;
+    display: block;
 }
+
 .bs-searchbox,
 .bs-actionsbox,
 .bs-donebutton {
-  padding: 4px 8px;
+    padding: 4px 8px;
 }
+
 .bs-actionsbox {
-  width: 100%;
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
+    width: 100%;
+    -webkit-box-sizing: border-box;
+    -moz-box-sizing: border-box;
+    box-sizing: border-box;
 }
+
 .bs-actionsbox .btn-group button {
-  width: 50%;
+    width: 50%;
 }
+
 .bs-donebutton {
-  float: left;
-  width: 100%;
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
+    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%;
+    width: 100%;
 }
+
 .bs-searchbox + .bs-actionsbox {
-  padding: 0 8px 4px;
+    padding: 0 8px 4px;
 }
+
 .bs-searchbox .form-control {
-  margin-bottom: 0;
-  width: 100%;
-  float: none;
+    margin-bottom: 0;
+    width: 100%;
+    float: none;
 }

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 2919 - 2909
zhjq-admin/src/main/resources/static/ajax/libs/bootstrap-select/bootstrap-select.js


+ 57 - 57
zhjq-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/auto-refresh/bootstrap-table-auto-refresh.js

@@ -7,45 +7,45 @@
 var Utils = $.fn.bootstrapTable.utils
 
 $.extend($.fn.bootstrapTable.defaults, {
-  autoRefresh: false,
-  showAutoRefresh: true,
-  autoRefreshInterval: 60,
-  autoRefreshSilent: true,
-  autoRefreshStatus: true,
-  autoRefreshFunction: null
+    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'
+    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'
-  }
+    formatAutoRefresh() {
+        return 'Auto Refresh'
+    }
 })
 
 $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales)
 
 $.BootstrapTable = class extends $.BootstrapTable {
-  init (...args) {
-    super.init(...args)
+    init(...args) {
+        super.init(...args)
 
-    if (this.options.autoRefresh && this.options.autoRefreshStatus) {
-      this.setupRefreshInterval()
+        if (this.options.autoRefresh && this.options.autoRefreshStatus) {
+            this.setupRefreshInterval()
+        }
     }
-  }
 
-  initToolbar (...args) {
-    if (this.options.autoRefresh) {
-      this.buttons = Object.assign(this.buttons, {
-        autoRefresh: {
-          html: `
+    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()}">
@@ -53,43 +53,43 @@ $.BootstrapTable = class extends $.BootstrapTable {
               ${this.options.showButtonText ? this.options.formatAutoRefresh() : ''}
             </button>
            `,
-          event: this.toggleAutoRefresh
+                    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
+        super.initToolbar(...args)
     }
-  }
 
-  destroy () {
-    if (this.options.autoRefresh && this.options.autoRefreshStatus) {
-      clearInterval(this.options.autoRefreshFunction)
+    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
+        }
     }
 
-    super.destroy()
-  }
+    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)
-  }
+    setupRefreshInterval() {
+        this.options.autoRefreshFunction = setInterval(() => {
+            if (!this.options.autoRefresh || !this.options.autoRefreshStatus) {
+                return
+            }
+            this.refresh({silent: this.options.autoRefreshSilent})
+        }, this.options.autoRefreshInterval * 1000)
+    }
 }

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 521 - 521
zhjq-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/cookie/bootstrap-table-cookie.js


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

@@ -6,130 +6,130 @@
 var Utils = $.fn.bootstrapTable.utils
 
 Object.assign($.fn.bootstrapTable.defaults, {
-  customView: false,
-  showCustomView: false,
-  customViewDefaultView: false
+    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'
+    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
-  }
+    onCustomViewPostBody() {
+        return false
+    },
+    onCustomViewPreBody() {
+        return false
+    },
+    onToggleCustomView() {
+        return false
+    }
 })
 
 Object.assign($.fn.bootstrapTable.locales, {
-  formatToggleCustomViewOn () {
-    return 'Show custom view'
-  },
-  formatToggleCustomViewOff () {
-    return 'Hide custom view'
-  }
+    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'
+    '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()
-          }
+    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)
     }
 
-    super.initToolbar(...args)
-  }
+    initBody() {
+        super.initBody()
 
-  initBody () {
-    super.initBody()
+        if (!this.options.customView) {
+            return
+        }
 
-    if (!this.options.customView) {
-      return
-    }
+        const $table = this.$el
+        const $customViewContainer = this.$container.find('.fixed-table-custom-view')
 
-    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
+        }
 
-    $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], '')
 
-    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-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)
     }
 
-    this.trigger('custom-view-post-body', data, value)
-  }
-
-  toggleCustomView () {
-    this.customViewDefaultView = !this.customViewDefaultView
+    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() : ''
+        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.$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)
-  }
+        this.initBody()
+        this.trigger('toggle-custom-view', this.customViewDefaultView)
+    }
 }

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

@@ -17,8 +17,8 @@
     See: https://github.com/vitalets/x-editable/issues/682
 */
 .form-horizontal .editable-popup .editableform .form-group {
-    margin-left:0;
-    margin-right:0;
+    margin-left: 0;
+    margin-right: 0;
 }
 
 
@@ -31,52 +31,52 @@
 }
 
 .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;
+    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;
+    display: block;
+    margin-top: 7px;
+    margin-left: 0;
 }
 
 .editable-input {
-    vertical-align: top; 
+    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;   
+    /* display-inline emulation for IE7*/
+    zoom: 1;
+    *display: inline;
 }
 
 .editable-buttons .editable-cancel {
-   margin-left: 7px; 
+    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;
+    height: 24px;
+    width: 30px;
 }
 
 .editableform-loading {
-    background: url('loading.gif') center center no-repeat;  
+    background: url('loading.gif') center center no-repeat;
     height: 25px;
-    width: auto; 
-    min-width: 25px; 
+    width: auto;
+    min-width: 25px;
 }
 
 .editable-inline .editableform-loading {
-    background-position: left 5px;      
+    background-position: left 5px;
 }
 
- .editable-error-block {
+.editable-error-block {
     max-width: 300px;
     margin: 5px 0 0 0;
     width: auto;
@@ -85,141 +85,141 @@
 
 /*add padding for jquery ui*/
 .editable-error-block.ui-state-error {
-    padding: 3px;  
-}  
+    padding: 3px;
+}
 
 .editable-error {
-   color: red;  
+    color: red;
 }
 
 /* ---- For specific types ---- */
 
 .editableform .editable-date {
-    padding: 0; 
+    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; 
+    margin-top: 3px;
+    margin-left: 1px;
 }
 
 
 /* checklist vertical alignment */
-.editable-checklist label input[type="checkbox"], 
+.editable-checklist label input[type="checkbox"],
 .editable-checklist label span {
     vertical-align: middle;
     margin: 0;
 }
 
 .editable-checklist label {
-    white-space: nowrap; 
+    white-space: nowrap;
 }
 
 /* set exact width of textarea to fit buttons toolbar */
 .editable-wysihtml5 {
-    width: 566px; 
-    height: 250px; 
+    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;
+    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;
-   
+    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;
+    opacity: 1;
 }
 
 .editable-pre-wrapped {
-   white-space: pre-wrap;
+    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; 
+    display: inline-block;
     vertical-align: middle;
     width: auto;
     /* inline-block emulation for IE7*/
-    zoom: 1; 
-    *display: inline;    
+    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 */
+    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, 
+
+.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, 
+.editable-click.editable-disabled,
+a.editable-click.editable-disabled,
 a.editable-click.editable-disabled:hover {
-   color: #585858;  
-   cursor: default;
-   border-bottom: none;
+    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-empty, .editable-empty:hover, .editable-empty:focus {
+    font-style: italic;
+    color: #DD1144;
+    /* border-bottom: none; */
+    text-decoration: none;
 }
 
 .editable-unsaved {
-  font-weight: bold; 
+    font-weight: bold;
 }
 
 .editable-unsaved:after {
-/*    content: '*'*/
+    /*    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;  
+    -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
-{ 
+.form-horizontal .editable {
     padding-top: 5px;
-    display:inline-block;
+    display: inline-block;
 }
 
 
@@ -233,111 +233,129 @@ a.editable-click.editable-disabled:hover {
  *
  */
 .datepicker {
-  padding: 4px;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-  direction: ltr;
-  /*.dow {
-		border-top: 1px solid #ddd !important;
-	}*/
+    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;
+    width: 220px;
 }
+
 .datepicker.datepicker-rtl {
-  direction: rtl;
+    direction: rtl;
 }
+
 .datepicker.datepicker-rtl table tr td span {
-  float: right;
+    float: right;
 }
+
 .datepicker-dropdown {
-  top: 0;
-  left: 0;
+    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;
+    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;
+    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;
+    display: none;
 }
+
 .datepicker.days div.datepicker-days {
-  display: block;
+    display: block;
 }
+
 .datepicker.months div.datepicker-months {
-  display: block;
+    display: block;
 }
+
 .datepicker.years div.datepicker-years {
-  display: block;
+    display: block;
 }
+
 .datepicker table {
-  margin: 0;
+    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;
+    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;
+    background-color: transparent;
 }
+
 .datepicker table tr td.day:hover {
-  background: #eeeeee;
-  cursor: pointer;
+    background: #eeeeee;
+    cursor: pointer;
 }
+
 .datepicker table tr td.old,
 .datepicker table tr td.new {
-  color: #999999;
+    color: #999999;
 }
+
 .datepicker table tr td.disabled,
 .datepicker table tr td.disabled:hover {
-  background: none;
-  color: #999999;
-  cursor: default;
+    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;
+    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,
@@ -358,8 +376,9 @@ a.editable-click.editable-disabled:hover {
 .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;
+    background-color: #fdf59a;
 }
+
 .datepicker table tr td.today:active,
 .datepicker table tr td.today:hover:active,
 .datepicker table tr td.today.disabled:active,
@@ -368,43 +387,48 @@ a.editable-click.editable-disabled:hover {
 .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;
+    background-color: #fbf069 \9;
 }
+
 .datepicker table tr td.today:hover:hover {
-  color: #000;
+    color: #000;
 }
+
 .datepicker table tr td.today.active:hover {
-  color: #fff;
+    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;
+    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;
+    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,
@@ -425,8 +449,9 @@ a.editable-click.editable-disabled:hover {
 .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;
+    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,
@@ -435,27 +460,29 @@ a.editable-click.editable-disabled:hover {
 .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;
+    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);
+    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,
@@ -476,8 +503,9 @@ a.editable-click.editable-disabled:hover {
 .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;
+    background-color: #808080;
 }
+
 .datepicker table tr td.selected:active,
 .datepicker table tr td.selected:hover:active,
 .datepicker table tr td.selected.disabled:active,
@@ -486,27 +514,29 @@ a.editable-click.editable-disabled:hover {
 .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;
+    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);
+    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,
@@ -527,8 +557,9 @@ a.editable-click.editable-disabled:hover {
 .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;
+    background-color: #0044cc;
 }
+
 .datepicker table tr td.active:active,
 .datepicker table tr td.active:hover:active,
 .datepicker table tr td.active.disabled:active,
@@ -537,48 +568,53 @@ a.editable-click.editable-disabled:hover {
 .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;
+    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;
+    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;
+    background: #eeeeee;
 }
+
 .datepicker table tr td span.disabled,
 .datepicker table tr td span.disabled:hover {
-  background: none;
-  color: #999999;
-  cursor: default;
+    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);
+    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,
@@ -599,8 +635,9 @@ a.editable-click.editable-disabled:hover {
 .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;
+    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,
@@ -609,66 +646,77 @@ a.editable-click.editable-disabled:hover {
 .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;
+    background-color: #003399 \9;
 }
+
 .datepicker table tr td span.old,
 .datepicker table tr td span.new {
-  color: #999999;
+    color: #999999;
 }
+
 .datepicker th.datepicker-switch {
-  width: 145px;
+    width: 145px;
 }
+
 .datepicker thead tr:first-child th,
 .datepicker tfoot tr th {
-  cursor: pointer;
+    cursor: pointer;
 }
+
 .datepicker thead tr:first-child th:hover,
 .datepicker tfoot tr th:hover {
-  background: #eeeeee;
+    background: #eeeeee;
 }
+
 .datepicker .cw {
-  font-size: 10px;
-  width: 12px;
-  padding: 0 2px 0 5px;
-  vertical-align: middle;
+    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;
+    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;
+    display: block;
+    cursor: pointer;
+    width: 16px;
+    height: 16px;
 }
+
 .input-daterange input {
-  text-align: center;
+    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;
+    -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;
+    -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;
+    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;
 }

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

@@ -7,183 +7,183 @@
 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
-  }
+    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
+    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'
+    '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
-    }
+    initTable() {
+        super.initTable()
 
-    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
+        if (!this.options.editable) {
+            return
         }
-      }
 
-      $.each(this.options, processDataOptions)
+        this.editedCells = []
+        $.each(this.columns, (i, column) => {
+            if (!column.editable) {
+                return
+            }
 
-      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)
+            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()}`)
 
-        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 (dashKey.indexOf(editableDataPrefix) === 0) {
+                    editableOptions[dashKey.replace(editableDataPrefix, 'data-')] = value
+                }
+            }
 
-          if ($.inArray(column.field + uniqueId, this.editedCells) !== -1) {
-            result = value
-          }
-        }
+            $.each(this.options, processDataOptions)
 
-        $.each(column, 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)
 
-        $.each(editableOptions, (key, value) => {
-          editableDataMarkup.push(` ${key}="${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)
 
-        let noEditFormatter = false
-        const editableOpts = Utils.calculateObjectValue(column,
-          column.editable, [index, row], {})
+                    if ($.inArray(column.field + uniqueId, this.editedCells) !== -1) {
+                        result = value
+                    }
+                }
 
-        if (editableOpts.hasOwnProperty('noEditFormatter')) {
-          noEditFormatter = editableOpts.noEditFormatter(value, row, index, field)
-        }
+                $.each(column, processDataOptions)
 
-        if (noEditFormatter === false) {
-          return `<a href="javascript:void(0)"
+                $.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
+                }
+                return noEditFormatter
+            }
+        })
     }
 
-    $.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)
-      })
+    initBody(fixedScroll) {
+        super.initBody(fixedScroll)
 
-      $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.editable) {
+            return
+        }
 
-        if (this.options.uniqueId !== undefined && !column.alwaysUseFormatter) {
-          const uniqueId = Utils.getItemField(row, this.options.uniqueId, false)
+        $.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')
+    }
 
-          if ($.inArray(column.field + uniqueId, this.editedCells) === -1) {
-            this.editedCells.push(column.field + uniqueId)
-          }
+    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)
+                    }
+                }
+            }
         }
 
-        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
     }
-
-    return data
-  }
 }

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

@@ -6,96 +6,96 @@
 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'
+    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
+    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
+    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'
+    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'
-  }
+    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
-  }
+    // 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'
+    'export-saved.bs.table': 'onExportSaved',
+    'export-started.bs.table': 'onExportStarted'
 })
 
 $.BootstrapTable = class extends $.BootstrapTable {
-  initToolbar (...args) {
-    const o = this.options
-    let exportTypes = o.exportTypes
+    initToolbar(...args) {
+        const o = this.options
+        let exportTypes = o.exportTypes
 
-    this.showToolbar = this.showToolbar || o.showExport
+        this.showToolbar = this.showToolbar || o.showExport
 
-    if (this.options.showExport) {
+        if (this.options.showExport) {
 
-      if (typeof exportTypes === 'string') {
-        const types = exportTypes.slice(1, -1).replace(/ /g, '').split(',')
+            if (typeof exportTypes === 'string') {
+                const types = exportTypes.slice(1, -1).replace(/ /g, '').split(',')
 
-        exportTypes = types.map(t => t.slice(1, -1))
-      }
+                exportTypes = types.map(t => t.slice(1, -1))
+            }
 
-      if (typeof o.exportOptions === 'string') {
-        o.exportOptions = Utils.calculateObjectValue(null, o.exportOptions)
-      }
+            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 `
+            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}"
@@ -107,11 +107,11 @@ $.BootstrapTable = class extends $.BootstrapTable {
                   </button>
                   </div>
                 `
-              }
+                            }
 
-              const html = []
+                            const html = []
 
-              html.push(`
+                            html.push(`
                 <div class="export ${this.constants.classes.buttonsDropdown}">
                 <button class="${this.constants.buttonsClass} dropdown-toggle"
                 aria-label="${o.formatExport()}"
@@ -125,211 +125,211 @@ $.BootstrapTable = class extends $.BootstrapTable {
                 ${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]))
+                            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'))
-                }
-              }
+                                    $item.attr('data-type', type)
+                                    html.push($item.prop('outerHTML'))
+                                }
+                            }
 
-              html.push(this.constants.html.toolbarDropdown[1], '</div>')
-              return html.join('')
-            }
+                            html.push(this.constants.html.toolbarDropdown[1], '</div>')
+                            return html.join('')
+                        }
+                }
+            })
         }
-      })
-    }
 
-    super.initToolbar(...args)
-    this.$export = this.$toolbar.find('>.columns div.export')
+        super.initToolbar(...args)
+        this.$export = this.$toolbar.find('>.columns div.export')
 
-    if (!this.options.showExport) {
-      return
-    }
+        if (!this.options.showExport) {
+            return
+        }
 
-    this.updateExportButton()
-    let $exportButtons = this.$export.find('[data-type]')
+        this.updateExportButton()
+        let $exportButtons = this.$export.find('[data-type]')
 
-    if (exportTypes.length === 1) {
-      $exportButtons = this.$export
-    }
+        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
+        $exportButtons.click(e => {
+            e.preventDefault()
+            this.trigger('export-started')
+            this.exportTable({
+                type: $(e.currentTarget).data('type')
+            })
+        })
+        this.handleToolbar()
     }
 
-    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)
+    handleToolbar() {
+        if (!this.$export) {
+            return
         }
-      })
 
-      const data = this.getData()
+        if (super.handleToolbar) {
+            super.handleToolbar()
+        }
+    }
 
-      if (o.detailView && o.detailViewIcon) {
-        const detailViewIndex = o.detailViewAlign === 'left' ? 0 : this.getVisibleFields().length + Utils.getDetailViewIndexOffset(this.options)
+    exportTable(options) {
+        const o = this.options
+        const stateField = this.header.stateField
+        const isCardView = o.cardView
 
-        o.exportOptions.ignoreColumn = [detailViewIndex].concat(o.exportOptions.ignoreColumn || [])
-      }
+        const doExport = callback => {
+            if (stateField) {
+                this.hideColumn(stateField)
+            }
+            if (isCardView) {
+                this.toggleView()
+            }
 
-      if (o.exportFooter && o.height) {
-        const $footerRow = this.$tableFooter.find('tr').first()
-        const footerData = {}
-        const footerHtml = []
+            this.columns.forEach(row => {
+                if (row.forceHide) {
+                    this.hideColumn(row.field)
+                }
+            })
 
-        $.each($footerRow.children(), (index, footerCell) => {
-          const footerCellHtml = $(footerCell).children('.th-inner').first().html()
+            const data = this.getData()
 
-          footerData[this.columns[index].field] = footerCellHtml === '&nbsp;' ? null : footerCellHtml
+            if (o.detailView && o.detailViewIcon) {
+                const detailViewIndex = o.detailViewAlign === 'left' ? 0 : this.getVisibleFields().length + Utils.getDetailViewIndexOffset(this.options)
 
-          // grab footer cell text into cell index-based array
-          footerHtml.push(footerCellHtml)
-        })
+                o.exportOptions.ignoreColumn = [detailViewIndex].concat(o.exportOptions.ignoreColumn || [])
+            }
 
-        this.$body.append(this.$body.children().last()[0].outerHTML)
-        const $lastTableRow = this.$body.children().last()
+            if (o.exportFooter && o.height) {
+                const $footerRow = this.$tableFooter.find('tr').first()
+                const footerData = {}
+                const footerHtml = []
 
-        $.each($lastTableRow.children(), (index, lastTableRowCell) => {
-          $(lastTableRowCell).html(footerHtml[index])
-        })
-      }
+                $.each($footerRow.children(), (index, footerCell) => {
+                    const footerCellHtml = $(footerCell).children('.th-inner').first().html()
 
-      const hiddenColumns = this.getHiddenColumns()
+                    footerData[this.columns[index].field] = footerCellHtml === '&nbsp;' ? null : footerCellHtml
 
-      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)
+                    // 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])
+                })
             }
-          })
 
-          this.columns.forEach(row => {
-            if (row.forceHide) {
-              this.showColumn(row.field)
+            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()
             }
-          })
 
-          if (callback) callback()
+            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))
         }
-      }, 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
+        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
+            }
 
-      this.$el.one(eventName, () => {
-        setTimeout(() => {
-          const data = this.getData()
+            if (o.sidePagination === 'server') {
+                data = {
+                    total: o.totalRows,
+                    [this.options.dataField]: data
+                }
+                selectedData = {
+                    total: selectedData.length,
+                    [this.options.dataField]: selectedData
+                }
+            }
 
-          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(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))
         }
-        this.load(data)
-      })
-      this.trigger('export-saved', selectedData)
-    } else {
-      doExport()
-      this.trigger('export-saved', this.getData(true))
     }
-  }
 
-  updateSelected () {
-    super.updateSelected()
-    this.updateExportButton()
-  }
+    updateSelected() {
+        super.updateSelected()
+        this.updateExportButton()
+    }
 
-  updateExportButton () {
-    if (this.options.exportDataType === 'selected') {
-      this.$export.find('> button')
-        .prop('disabled', !this.getSelections().length)
+    updateExportButton() {
+        if (this.options.exportDataType === 'selected') {
+            this.$export.find('> button')
+                .prop('disabled', !this.getSelections().length)
+        }
     }
-  }
 }

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

@@ -4,120 +4,120 @@
  */
 
 const debounce = (func, wait) => {
-  let timeout = 0
+    let timeout = 0
 
-  return (...args) => {
-    const later = () => {
-      timeout = 0
-      func(...args)
-    }
+    return (...args) => {
+        const later = () => {
+            timeout = 0
+            func(...args)
+        }
 
-    clearTimeout(timeout)
-    timeout = setTimeout(later, wait)
-  }
+        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: []
+    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)
+    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()
+        }
 
-    if (!this.options.mobileResponsive || !this.options.minWidth) {
-      return
+        $(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
+            }
+        }
     }
 
-    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
+    conditionCardView() {
+        this.changeTableView(false)
+        this.showHideColumns(false)
     }
 
-    let old = {
-      width: $(window).width(),
-      height: $(window).height()
+    conditionFullView() {
+        this.changeTableView(true)
+        this.showHideColumns(true)
     }
 
-    $(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
-      }
+    changeTableView(cardViewState) {
+        this.options.cardView = cardViewState
+        this.toggleView()
     }
-  }
-
-  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)
-          }
+
+    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()
-  }
+    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()
+    }
 }

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

@@ -4,8 +4,8 @@
 
 var Utils = $.fn.bootstrapTable.utils
 
-function printPageBuilderDefault (table, styles) {
-  return `
+function printPageBuilderDefault(table, styles) {
+    return `
     <html>
     <head>
     ${styles}
@@ -51,262 +51,262 @@ function printPageBuilderDefault (table, styles) {
 }
 
 Object.assign($.fn.bootstrapTable.locales, {
-  formatPrint () {
-    return 'Print'
-  }
+    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)
-  }
+    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
+    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'
+    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)
+    init(...args) {
+        super.init(...args)
 
-    if (!this.options.showPrint) {
-      return
+        if (!this.options.showPrint) {
+            return
+        }
+
+        this.mergedCells = []
     }
 
-    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()
-          }
+    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)
     }
 
-    super.initToolbar(...args)
-  }
+    mergeCells(options) {
+        super.mergeCells(options)
 
-  mergeCells (options) {
-    super.mergeCells(options)
+        if (!this.options.showPrint) {
+            return
+        }
 
-    if (!this.options.showPrint) {
-      return
-    }
+        let col = this.getVisibleFields().indexOf(options.field)
 
-    let col = this.getVisibleFields().indexOf(options.field)
+        if (Utils.hasDetailViewIcon(this.options)) {
+            col += 1
+        }
 
-    if (Utils.hasDetailViewIcon(this.options)) {
-      col += 1
+        this.mergedCells.push({
+            row: options.index,
+            col,
+            rowspan: options.rowspan || 1,
+            colspan: options.colspan || 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
-    }
+    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_)
+        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
-    }
+            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>`]
+        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
+            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('</tr>')
+            }
 
-      html.push('</thead><tbody>')
+            html.push('</thead><tbody>')
 
-      const notRender = []
+            const notRender = []
 
-      if (this.mergedCells) {
-        for (let mc = 0; mc < this.mergedCells.length; mc++) {
-          const currentMergedCell = this.mergedCells[mc]
+            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 rs = 0; rs < currentMergedCell.rowspan; rs++) {
+                        const row = currentMergedCell.row + rs
 
-            for (let cs = 0; cs < currentMergedCell.colspan; cs++) {
-              const col = currentMergedCell.col + cs
+                        for (let cs = 0; cs < currentMergedCell.colspan; cs++) {
+                            const col = currentMergedCell.col + cs
 
-              notRender.push(`${row},${col}`)
+                            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 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>')
+            }
 
-        for (let j = 0; j < columns.length; j++) {
-          if (columns[j].colspanGroup > 0) continue
+            html.push('</tbody>')
+            if (this.options.showFooter) {
+                html.push('<footer><tr>')
 
-          let rowspan = 0
-          let colspan = 0
+                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] || '')
 
-          if (this.mergedCells) {
-            for (let mc = 0; mc < this.mergedCells.length; mc++) {
-              const currentMergedCell = this.mergedCells[mc]
+                            html.push(`<th>${footerValue}</th>`)
+                        }
+                    }
+                }
 
-              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></footer>')
             }
-          }
+            html.push('</table>')
+            return html.join('')
         }
 
-        html.push('</tr>')
-      }
-
-      html.push('</tbody>')
-      if (this.options.showFooter) {
-        html.push('<footer><tr>')
+        const sortRows = (data, colName, sortOrder) => {
+            if (!colName) {
+                return data
+            }
+            let reverse = sortOrder !== 'asc'
 
-        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] || '')
+            reverse = -(+reverse || -1)
+            return data.sort((a, b) => reverse * a[colName].localeCompare(b[colName]))
+        }
 
-              html.push(`<th>${footerValue}</th>`)
+        const filterRow = (row, filters) => {
+            for (let index = 0; index < filters.length; ++index) {
+                if (row[filters[index].colName] !== filters[index].value) {
+                    return false
+                }
             }
-          }
+            return true
         }
 
-        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
+        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()
         }
-      }
-      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()
+        newWin.document.write(calculatedPrintPage)
+        newWin.document.close()
 
-    if (printStyles.length) {
-      const links = document.getElementsByTagName('link')
-      const lastLink = links[links.length - 1]
+        if (printStyles.length) {
+            const links = document.getElementsByTagName('link')
+            const lastLink = links[links.length - 1]
 
-      lastLink.onload = startPrint
-    } else {
-      startPrint()
+            lastLink.onload = startPrint
+        } else {
+            startPrint()
+        }
     }
-  }
 }

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

@@ -5,208 +5,208 @@
  */
 
 $.akottr.dragtable.prototype._restoreState = function (persistObj) {
-  let i = 0
+    let i = 0
 
-  for (const [field, value] of Object.entries(persistObj)) {
-    const $th = this.originalTable.el.find(`th[data-field="${field}"]`)
+    for (const [field, value] of Object.entries(persistObj)) {
+        const $th = this.originalTable.el.find(`th[data-field="${field}"]`)
 
-    if (!$th.length) {
-      i++
-      continue
-    }
+        if (!$th.length) {
+            i++
+            continue
+        }
 
-    this.originalTable.startIndex = $th.prevAll().length + 1
-    this.originalTable.endIndex = parseInt(value, 10) + 1 - i
-    this._bubbleCols()
-  }
+        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)
-          }
-        }
-      }
+    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()
+            }
 
-      return res
+            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
+    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'
+    '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()
-  }
+    initHeader(...args) {
+        super.initHeader(...args)
 
-  _toggleColumn (...args) {
-    super._toggleColumn(...args)
+        if (!this.options.reorderableColumns) {
+            return
+        }
 
-    if (!this.options.reorderableColumns) {
-      return
+        this.makeColumnsReorderable()
     }
 
-    this.makeColumnsReorderable()
-  }
+    _toggleColumn(...args) {
+        super._toggleColumn(...args)
 
-  toggleView (...args) {
-    super.toggleView(...args)
+        if (!this.options.reorderableColumns) {
+            return
+        }
 
-    if (!this.options.reorderableColumns) {
-      return
+        this.makeColumnsReorderable()
     }
 
-    if (this.options.cardView) {
-      return
-    }
+    toggleView(...args) {
+        super.toggleView(...args)
 
-    this.makeColumnsReorderable()
-  }
+        if (!this.options.reorderableColumns) {
+            return
+        }
 
-  resetView (...args) {
-    super.resetView(...args)
+        if (this.options.cardView) {
+            return
+        }
 
-    if (!this.options.reorderableColumns) {
-      return
+        this.makeColumnsReorderable()
     }
 
-    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
-        })
+    resetView(...args) {
+        super.resetView(...args)
 
-        this.columnsSortOrder = sortOrder
-        if (this.options.cookie) {
-          this.persistReorderColumnsState(this)
+        if (!this.options.reorderableColumns) {
+            return
         }
 
-        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)
-          }
-        }
+        this.makeColumnsReorderable()
+    }
 
-        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])
-          }
+    makeColumnsReorderable(order = null) {
+        try {
+            $(this.$el).dragtable('destroy')
+        } catch (e) {
+            // do nothing
         }
-
-        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
+        $(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)
             }
-            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()
-  }
+    orderColumns(order) {
+        this.columnsSortOrder = order
+        this.makeColumnsReorderable()
+    }
 }

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

@@ -4,142 +4,143 @@
  */
 
 const rowAttr = (row, index) => ({
-  id: `customId_${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
-  }
+    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'
+    'reorder-row.bs.table': 'onReorderRow'
 })
 
 $.BootstrapTable = class extends $.BootstrapTable {
-  init (...args) {
-    if (!this.options.reorderableRows) {
-      super.init(...args)
-      return
+    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
+        })
     }
 
-    if (this.options.useRowAttrFunc) {
-      this.options.rowAttributes = rowAttr
+    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])
     }
 
-    const onPostBody = this.options.onPostBody
+    onDragStop(table, draggedRow) {
+        const rowIndexDraggedRow = $(draggedRow).data('index')
+        const draggedRowItem = this.data[rowIndexDraggedRow]
 
-    this.options.onPostBody = () => {
-      setTimeout(() => {
-        this.makeRowsReorderable()
-        onPostBody.call(this.options, this.options.data)
-      }, 1)
+        this.options.onDragStop(table, draggedRowItem, draggedRow)
     }
 
-    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)
+    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)
     }
 
-    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])
+    onDrop(table) {
+        this.$draggingTd.css('cursor', '')
+        const pageNum = this.options.pageNumber
+        const pageSize = this.options.pageSize
+        const newData = []
 
-    this.options.data.splice(this.options.data.indexOf(draggingRow), 1)
-    this.options.data.splice(index, 0, draggingRow)
+        for (let i = 0; i < table.tBodies[0].rows.length; i++) {
+            const $tr = $(table.tBodies[0].rows[i])
 
-    this.initSearch()
+            newData.push(this.data[$tr.data('index')])
+            $tr.data('index', i)
+        }
 
-    if (this.options.sidePagination === 'server') {
-      this.data = [...this.options.data]
-    }
+        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])
 
-    // Call the user defined function
-    this.options.onReorderRowsDrop(droppedRow)
+        this.options.data.splice(this.options.data.indexOf(draggingRow), 1)
+        this.options.data.splice(index, 0, draggingRow)
 
-    // Call the event reorder-row
-    this.trigger('reorder-row', newData, draggingRow, droppedRow)
-  }
+        this.initSearch()
 
-  initSearch () {
-    this.ignoreInitSort = true
-    super.initSearch()
-  }
+        if (this.options.sidePagination === 'server') {
+            this.data = [...this.options.data]
+        }
 
-  initSort () {
-    if (this.ignoreInitSort) {
-      this.ignoreInitSort = false
-      return
+        // 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()
     }
 
-    super.initSort()
-  }
+    initSort() {
+        if (this.ignoreInitSort) {
+            this.ignoreInitSort = false
+            return
+        }
+
+        super.initSort()
+    }
 }

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 482 - 485
zhjq-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/reorder-rows/jquery.tablednd.js


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

@@ -6,63 +6,63 @@
 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
-    })
-  }
+    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()
-  }
+    if (isInit(that)) {
+        that.$el.data('resizableColumns').destroy()
+    }
 }
 
 const reInitResizable = that => {
-  destroy(that)
-  initResizable(that)
+    destroy(that)
+    initResizable(that)
 }
 
 Object.assign($.fn.bootstrapTable.defaults, {
-  resizable: false
+    resizable: false
 })
 
 $.BootstrapTable = class extends $.BootstrapTable {
 
-  initBody (...args) {
-    super.initBody(...args)
+    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)
-      })
+        this.$el.off('column-switch.bs.table page-change.bs.table')
+            .on('column-switch.bs.table page-change.bs.table', () => {
+                reInitResizable(this)
+            })
 
-    reInitResizable(this)
-  }
+        reInitResizable(this)
+    }
 
-  toggleView (...args) {
-    super.toggleView(...args)
+    toggleView(...args) {
+        super.toggleView(...args)
 
-    if (this.options.resizable && this.options.cardView) {
-      // Destroy the plugin
-      destroy(this)
+        if (this.options.resizable && this.options.cardView) {
+            // Destroy the plugin
+            destroy(this)
+        }
     }
-  }
 
-  resetView (...args) {
-    super.resetView(...args)
+    resetView(...args) {
+        super.resetView(...args)
 
-    if (this.options.resizable) {
-      // because in fitHeader function, we use setTimeout(func, 100);
-      setTimeout(() => {
-        initResizable(this)
-      }, 100)
+        if (this.options.resizable) {
+            // because in fitHeader function, we use setTimeout(func, 100);
+            setTimeout(() => {
+                initResizable(this)
+            }, 100)
+        }
     }
-  }
 }

+ 194 - 196
zhjq-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/tree/bootstrap-table-tree.js

@@ -2,10 +2,10 @@
  * 基于bootstrapTreeTable/bootstrap-table-treegrid修改
  * Copyright (c) 2019 ruoyi
  */
-(function($) {
+(function ($) {
     "use strict";
 
-    $.fn.bootstrapTreeTable = function(options, param) {
+    $.fn.bootstrapTreeTable = function (options, param) {
         var target = $(this).data('bootstrap.tree.table');
         target = target ? target : $(this);
         // 如果是调用方法
@@ -19,11 +19,11 @@
         target.data_obj = null;          // 用于缓存格式化后的数据-按id存对象
         target.hiddenColumns = [];       // 用于存放被隐藏列的field
         target.lastAjaxParams;           // 用户最后一次请求的参数
-        target.isFixWidth=false;         // 是否有固定宽度
+        target.isFixWidth = false;         // 是否有固定宽度
         target.totalRows = 0;            // 记录总数
         target.totalPages = 0;           // 总页数
         // 初始化
-        var init = function() {
+        var init = function () {
             // 初始化容器
             initContainer();
             // 初始化工具栏
@@ -40,7 +40,7 @@
             target.data('bootstrap.tree.table', target);
         }
         // 初始化容器
-        var initContainer = function() {
+        var initContainer = function () {
             // 在外层包装一下div,样式用的bootstrap-table的
             var $main_div = $("<div class='bootstrap-tree-table'></div>");
             var $treetable = $("<div class='treetable-table'></div>");
@@ -63,7 +63,7 @@
             target.html("");
         }
         // 初始化工具栏
-        var initToolbar = function() {
+        var initToolbar = function () {
             var $toolbar = $("<div class='treetable-bars'></div>");
             if (options.toolbar) {
                 $(options.toolbar).addClass('tool-left');
@@ -88,13 +88,13 @@
             if (options.showColumns) {
                 var $columns_div = $('<div class="btn-group pull-right" title="列"><button type="button" aria-label="columns" class="btn btn-default btn-outline dropdown-toggle" data-toggle="dropdown" aria-expanded="false"><i class="glyphicon glyphicon-list"></i> <span class="caret"></span></button></div>');
                 var $columns_ul = $('<ul class="dropdown-menu columns" role="menu"></ul>');
-                $.each(options.columns, function(i, column) {
+                $.each(options.columns, function (i, column) {
                     if (column.field != 'selectItem') {
                         var _li = null;
-                        if(typeof column.visible == "undefined"||column.visible==true){
-                            _li = $('<li role="menuitem"><label><input type="checkbox" checked="checked" data-field="'+column.field+'" value="'+column.field+'" > '+column.title+'</label></li>');
-                        }else{
-                            _li = $('<li role="menuitem"><label><input type="checkbox" data-field="'+column.field+'" value="'+column.field+'" > '+column.title+'</label></li>');
+                        if (typeof column.visible == "undefined" || column.visible == true) {
+                            _li = $('<li role="menuitem"><label><input type="checkbox" checked="checked" data-field="' + column.field + '" value="' + column.field + '" > ' + column.title + '</label></li>');
+                        } else {
+                            _li = $('<li role="menuitem"><label><input type="checkbox" data-field="' + column.field + '" value="' + column.field + '" > ' + column.title + '</label></li>');
                             target.hiddenColumns.push(column.field);
                         }
                         $columns_ul.append(_li);
@@ -104,10 +104,10 @@
                 $rightToolbar.append($columns_div);
                 // 注册列选项事件
                 registerColumnClickEvent();
-            }else{
-                $.each(options.columns, function(i, column) {
+            } else {
+                $.each(options.columns, function (i, column) {
                     if (column.field != 'selectItem') {
-                        if(!(typeof column.visible == "undefined"||column.visible==true)){
+                        if (!(typeof column.visible == "undefined" || column.visible == true)) {
                             target.hiddenColumns.push(column.field);
                         }
                     }
@@ -115,15 +115,15 @@
             }
         }
         // 初始化隐藏列
-        var initHiddenColumns = function(){
-            $.each(target.hiddenColumns, function(i, field) {
-                target.find("."+field+"_cls").hide();
+        var initHiddenColumns = function () {
+            $.each(target.hiddenColumns, function (i, field) {
+                target.find("." + field + "_cls").hide();
             });
         }
         // 初始化表头
-        var initHeader = function() {
+        var initHeader = function () {
             var $thr = $('<tr></tr>');
-            $.each(options.columns, function(i, column) {
+            $.each(options.columns, function (i, column) {
                 var $th = null;
                 // 判断有没有选择列
                 if (i == 0 && column.field == 'selectItem') {
@@ -135,8 +135,8 @@
                         $th.css("text-align", column.align);
                     }
                 }
-                if((!target.isFixWidth)&& column.width){
-                    target.isFixWidth = column.width.indexOf("px")>-1?true:false;
+                if ((!target.isFixWidth) && column.width) {
+                    target.isFixWidth = column.width.indexOf("px") > -1 ? true : false;
                 }
                 $th.html(column.title);
                 $thr.append($th);
@@ -146,7 +146,7 @@
             target.append($thead);
         }
         // 初始化表体
-        var initBody = function() {
+        var initBody = function () {
             var $tbody = $('<tbody class="treetable-tbody"></tbody>');
             target.append($tbody);
             // 默认高度
@@ -159,9 +159,9 @@
             }
         }
         // 初始化数据服务
-        var initServer = function(parms) {
+        var initServer = function (parms) {
             if (options.pagination) {
-                if(parms == undefined || parms == null) {
+                if (parms == undefined || parms == null) {
                     parms = {};
                 }
                 parms[options.parentCode] = options.rootIdValue;
@@ -174,7 +174,7 @@
                 var params = {};
                 params.offset = options.pageSize * (options.pageNumber - 1);
                 params.limit = options.pageSize;
-                var curParams = { pageSize: params.limit, pageNum: params.offset / params.limit + 1 };
+                var curParams = {pageSize: params.limit, pageNum: params.offset / params.limit + 1};
                 parms = $.extend(curParams, parms);
             }
             var $tbody = target.find("tbody");
@@ -187,12 +187,12 @@
                     url: options.url,
                     data: $.extend(parms, options.ajaxParams),
                     dataType: "json",
-                    success: function(data, textStatus, jqXHR) {
-                    	data = calculateObjectValue(options, options.responseHandler, [data], data);
+                    success: function (data, textStatus, jqXHR) {
+                        data = calculateObjectValue(options, options.responseHandler, [data], data);
                         renderTable(data);
                         calculateObjectValue(options, options.onLoadSuccess, [data], data);
                     },
-                    error: function(xhr, textStatus) {
+                    error: function (xhr, textStatus) {
                         var _errorMsg = '<tr><td colspan="' + options.columns.length + '"><div style="display: block;text-align: center;">' + xhr.responseText + '</div></td></tr>'
                         $tbody.html(_errorMsg);
                     }
@@ -202,16 +202,16 @@
             }
         }
         // 加载完数据后渲染表格
-        var renderTable = function(data) {
+        var renderTable = function (data) {
             var list, totalPage = 0, currPage = 0;
             if (options.pagination) {
-            	list = data.rows;  // 数据
+                list = data.rows;  // 数据
                 currPage = options.pageNumber; // 当前页
                 totalPage = ~~((data.total - 1) / options.pageSize) + 1 // 总页数
-                target.totalPages  = totalPage;
+                target.totalPages = totalPage;
                 target.totalRows = data.total; // 总记录数
             } else {
-            	list = data;
+                list = data;
             }
             data = list;
             var $tbody = target.find("tbody");
@@ -230,13 +230,13 @@
             var rootNode = target.data_list["_root_"];
             // 开始绘制
             if (rootNode) {
-                $.each(rootNode, function(i, item) {
+                $.each(rootNode, function (i, item) {
                     var _child_row_id = "row_id_" + i
                     recursionNode(item, 1, _child_row_id, "row_root", item[options.code]);
                 });
             }
             // 下边的操作主要是为了查询时让一些没有根节点的节点显示
-            $.each(data, function(i, item) {
+            $.each(data, function (i, item) {
                 if (!item.isShow) {
                     var tr = renderRow(item, false, 1, "", "", options.pagination, item[options.code]);
                     $tbody.append(tr);
@@ -253,22 +253,22 @@
             // 移动端适配
             var treetableTable = $(target).parent('.treetable-table');
             var availableHeight = treetableTable.outerWidth();
-            if($.common.isMobile() || availableHeight < 769){
+            if ($.common.isMobile() || availableHeight < 769) {
                 var tableStyle = "width: " + availableHeight + "px;overflow: auto;position: relative;";
                 treetableTable.attr('style', tableStyle);
                 var w = 0;
-                $.each(options.columns, function(i, column) {
+                $.each(options.columns, function (i, column) {
                     if (i == 0 && column.field == 'selectItem') {
                         w += 36;
                     } else {
                         w += 200;
                     }
                 });
-                $(target).attr('style','width:' + w +'px');
+                $(target).attr('style', 'width:' + w + 'px');
             }
         }
         // 初始化分页
-        var initPagination = function (totalPage,currPage) {
+        var initPagination = function (totalPage, currPage) {
             var $pagination = target.find(".fixed-table-pagination");
             $pagination.empty();
             var html = [];
@@ -284,11 +284,11 @@
             html.push('<span class="pagination-info">' + formatShowingRows(pageFrom, pageTo, target.totalRows) + '</span>');
             var pageList = false;
             $.each(options.pageList, function (i, page) {
-                if(target.totalRows > page){
+                if (target.totalRows > page) {
                     pageList = true;
                 }
             })
-            if(pageList){
+            if (pageList) {
                 var _page_list = [];
                 _page_list.push('<span class="page-list">');
                 _page_list.push('<span class="btn-group dropup">');
@@ -298,13 +298,11 @@
                 _page_list.push('</button>');
                 _page_list.push('<ul class="dropdown-menu" role="menu">');
                 $.each(options.pageList, function (i, page) {
-                    if(page == options.pageSize){
+                    if (page == options.pageSize) {
                         _page_list.push('<li class="active"><a href="javascript:void(0)">' + page + '</a></li>');
-                    }
-                    else if(page >= target.totalRows && i === 1){
+                    } else if (page >= target.totalRows && i === 1) {
                         _page_list.push('<li><a href="javascript:void(0)">' + page + '</a></li>');
-                    }
-                    else if(page <= target.totalRows){
+                    } else if (page <= target.totalRows) {
                         _page_list.push('<li><a href="javascript:void(0)">' + page + '</a></li>');
                     }
                 })
@@ -315,7 +313,7 @@
             }
             html.push('</div>');
 
-            if(totalPage > 1){
+            if (totalPage > 1) {
                 html.push('<div class="pull-right pagination">');
                 html.push('<ul class="pagination pagination-outline">');
                 html.push('<li class="page-pre"><a href="javascript:void(0)">' + options.paginationPreText + '</a></li>');
@@ -401,19 +399,19 @@
             $last.off('click').on('click', $.proxy(onPageLast, this));
             $next.off('click').on('click', $.proxy(onPageNext, this));
         }
-        var onPageListChange = function(event){
+        var onPageListChange = function (event) {
             var $this = $(event.currentTarget);
             $this.parent().addClass('active').siblings().removeClass('active');
             var $pagination = target.find(".fixed-table-pagination");
-            options.pageSize = $this.text().toUpperCase() === target.totalRows ? target.totalRows : + $this.text();
-            
-            if(target.totalRows < options.pageSize * options.pageNumber){
+            options.pageSize = $this.text().toUpperCase() === target.totalRows ? target.totalRows : +$this.text();
+
+            if (target.totalRows < options.pageSize * options.pageNumber) {
                 options.pageNumber = 1;
             }
             $pagination.find('.page-size').text(options.pageSize);
             initServer();
         }
-        var onPagePre = function(event){
+        var onPagePre = function (event) {
             if ((options.pageNumber - 1) === 0) {
                 options.pageNumber = target.totalPages;
             } else {
@@ -421,14 +419,14 @@
             }
             initServer();
         }
-        var onPageNumber = function(event){
+        var onPageNumber = function (event) {
             if (options.pageNumber == $(event.currentTarget).text()) {
                 return;
             }
             options.pageNumber = $(event.currentTarget).text();
             initServer();
         }
-        var onPageFirst = function(event){
+        var onPageFirst = function (event) {
             options.pageNumber = 1;
             initServer();
         }
@@ -436,7 +434,7 @@
             options.pageNumber = target.totalPages;
             initServer();
         }
-        var onPageNext = function(event){
+        var onPageNext = function (event) {
             if ((options.pageNumber + 1) > target.totalPages) {
                 options.pageNumber = 1;
             } else {
@@ -445,21 +443,21 @@
             initServer();
         }
         // 动态设置表头宽度
-        var autoTheadWidth = function(initFlag) {
-            if(options.height>0){
+        var autoTheadWidth = function (initFlag) {
+            if (options.height > 0) {
                 var $thead = target.find("thead");
                 var $tbody = target.find("tbody");
                 var borderWidth = parseInt(target.css("border-left-width")) + parseInt(target.css("border-right-width"))
-                
+
                 $thead.css("width", $tbody.children(":first").width());
-                if(initFlag){
+                if (initFlag) {
                     var resizeWaiter = false;
-                    $(window).resize(function() {
-                        if(!resizeWaiter){
+                    $(window).resize(function () {
+                        if (!resizeWaiter) {
                             resizeWaiter = true;
-                            setTimeout(function(){
-                                if(!target.isFixWidth){
-                                    $tbody.css("width", target.parent().width()-borderWidth);
+                            setTimeout(function () {
+                                if (!target.isFixWidth) {
+                                    $tbody.css("width", target.parent().width() - borderWidth);
                                 }
                                 $thead.css("width", $tbody.children(":first").width());
                                 resizeWaiter = false;
@@ -468,20 +466,20 @@
                     });
                 }
             }
-        
+
         }
         // 缓存并格式化数据
-        var formatData = function(data) {
+        var formatData = function (data) {
             var _root = options.rootIdValue ? options.rootIdValue : null;
             // 父节点属性列表
             var parentCodes = [];
             var rootFlag = false;
-            $.each(data, function(index, item) {
-            	if($.inArray(item[options.parentCode], parentCodes) == -1){
-            		parentCodes.push(item[options.parentCode]);
+            $.each(data, function (index, item) {
+                if ($.inArray(item[options.parentCode], parentCodes) == -1) {
+                    parentCodes.push(item[options.parentCode]);
                 }
             });
-            $.each(data, function(index, item) {
+            $.each(data, function (index, item) {
                 // 添加一个默认属性,用来判断当前节点有没有被显示
                 item.isShow = false;
                 // 是否分页
@@ -489,18 +487,18 @@
                     if (item.isTreeLeaf == undefined || item.isTreeLeaf == null) {
                         item.isTreeLeaf = false;
                     } else {
-                        item.isTreeLeaf = (item["isTreeLeaf"] == 1 ? true: false) || ((item["isTreeLeaf"] == 'true' || item["isTreeLeaf"] == true) ? true: false);
+                        item.isTreeLeaf = (item["isTreeLeaf"] == 1 ? true : false) || ((item["isTreeLeaf"] == 'true' || item["isTreeLeaf"] == true) ? true : false);
                     }
                 }
                 // 顶级节点校验判断,兼容0,'0','',null
                 var _defaultRootFlag = item[options.parentCode] == '0' ||
-                item[options.parentCode] == 0 ||
-                item[options.parentCode] == null ||
-                item[options.parentCode] == '' ||
-                $.inArray(item[options.code], parentCodes) > 0 && !rootFlag;
+                    item[options.parentCode] == 0 ||
+                    item[options.parentCode] == null ||
+                    item[options.parentCode] == '' ||
+                    $.inArray(item[options.code], parentCodes) > 0 && !rootFlag;
                 if (!item[options.parentCode] || (_root ? (item[options.parentCode] == options.rootIdValue) : _defaultRootFlag)) {
-                	rootFlag = true;
-                	if (!target.data_list["_root_"]) {
+                    rootFlag = true;
+                    if (!target.data_list["_root_"]) {
                         target.data_list["_root_"] = [];
                     }
                     if (!target.data_obj["id_" + item[options.code]]) {
@@ -518,20 +516,20 @@
             });
         }
         // 递归获取子节点并且设置子节点
-        var recursionNode = function(parentNode, lv, row_id, p_id, k) {
+        var recursionNode = function (parentNode, lv, row_id, p_id, k) {
             var $tbody = target.find("tbody");
             var _ls = target.data_list["_n_" + parentNode[options.code]];
             var $tr = renderRow(parentNode, _ls ? true : false, lv, row_id, p_id, options.pagination, k);
             $tbody.append($tr);
             if (_ls) {
-                $.each(_ls, function(i, item) {
+                $.each(_ls, function (i, item) {
                     var _child_row_id = row_id + "_" + i
                     recursionNode(item, (lv + 1), _child_row_id, row_id, item[options.code])
                 });
             }
         };
         // 绘制行
-        var renderRow = function(item, isP, lv, row_id, p_id, _pagination, k) {
+        var renderRow = function (item, isP, lv, row_id, p_id, _pagination, k) {
             // 标记已显示
             item.isShow = true;
             item.row_id = row_id;
@@ -560,7 +558,7 @@
                 $tr.css("display", "none");
                 _icon = options.expanderCollapsedClass;
             }
-            $.each(options.columns, function(index, column) {
+            $.each(options.columns, function (index, column) {
                 // 判断有没有选择列
                 if (column.field == 'selectItem') {
                     target.hasSelectItem = true;
@@ -576,46 +574,46 @@
                     $tr.append($td);
                 } else {
                     var $td = $('<td name="' + column.field + '" class="' + column.field + '_cls"></td>');
-                    if(column.width){
-                        $td.css("width",column.width + (column.widthUnit ? column.widthUnit : 'px'));
+                    if (column.width) {
+                        $td.css("width", column.width + (column.widthUnit ? column.widthUnit : 'px'));
                     }
-                    if(column.align){
-                        $td.css("text-align",column.align);
+                    if (column.align) {
+                        $td.css("text-align", column.align);
                     }
-                    if(options.expandColumn == index){
-                        $td.css("text-align","left");
+                    if (options.expandColumn == index) {
+                        $td.css("text-align", "left");
                     }
-                    if(column.valign){
-                        $td.css("vertical-align",column.valign);
+                    if (column.valign) {
+                        $td.css("vertical-align", column.valign);
                     }
-                    if(options.showTitle){
+                    if (options.showTitle) {
                         $td.addClass("ellipsis");
                     }
                     // 增加formatter渲染
                     if (column.formatter) {
                         $td.html(column.formatter.call(this, getItemField(item, column.field), item, index));
                     } else {
-                        if(options.showTitle){
+                        if (options.showTitle) {
                             // 只在字段没有formatter时才添加title属性
-                            $td.attr("title",item[column.field]);
+                            $td.attr("title", item[column.field]);
                         }
                         $td.text(getItemField(item, column.field));
                     }
                     if (options.expandColumn == index) {
-                    	if (_pagination) {
-                    	    if (item["isTreeLeaf"]) {
-                    	        $td.prepend('<span class="treetable-expander ' + _icon + '"></span>');
-                    	    } else {
-                    	        $td.prepend('<span class="treetable-expander"></span>')
-                    	    }
-                    	} else {
-	                        if (!isP) {
-	                            $td.prepend('<span class="treetable-expander"></span>')
-	                        } else {
-	                            $td.prepend('<span class="treetable-expander ' + _icon + '"></span>');
-	                        }
-                    	}
-                    	for (var int = 0; int < (lv - options.expandColumn); int++) {
+                        if (_pagination) {
+                            if (item["isTreeLeaf"]) {
+                                $td.prepend('<span class="treetable-expander ' + _icon + '"></span>');
+                            } else {
+                                $td.prepend('<span class="treetable-expander"></span>')
+                            }
+                        } else {
+                            if (!isP) {
+                                $td.prepend('<span class="treetable-expander"></span>')
+                            } else {
+                                $td.prepend('<span class="treetable-expander ' + _icon + '"></span>');
+                            }
+                        }
+                        for (var int = 0; int < (lv - options.expandColumn); int++) {
                             $td.prepend('<span class="treetable-indent"></span>')
                         }
                     }
@@ -625,32 +623,32 @@
             return $tr;
         }
         // 检索信息按钮点击事件
-        var registerSearchBtnClickEvent = function(btn) {
+        var registerSearchBtnClickEvent = function (btn) {
             $(btn).off('click').on('click', function () {
                 $(".search-collapse").slideToggle();
             });
         }
         // 注册刷新按钮点击事件
-        var registerRefreshBtnClickEvent = function(btn) {
+        var registerRefreshBtnClickEvent = function (btn) {
             $(btn).off('click').on('click', function () {
                 target.refresh();
             });
         }
         // 注册列选项事件
-        var registerColumnClickEvent = function() {
+        var registerColumnClickEvent = function () {
             $(".bootstrap-tree-table .treetable-bars .columns label input").off('click').on('click', function () {
                 var $this = $(this);
-                if($this.prop('checked')){
+                if ($this.prop('checked')) {
                     target.showColumn($(this).val());
-                }else{
+                } else {
                     target.hideColumn($(this).val());
                 }
             });
         }
         // 注册行点击选中事件
-        var registerRowClickEvent = function() {
+        var registerRowClickEvent = function () {
             target.find("tbody").find("tr").unbind();
-            target.find("tbody").find("tr").click(function() {
+            target.find("tbody").find("tr").click(function () {
                 if (target.hasSelectItem) {
                     var _ipt = $(this).find("input[name='select_item']");
                     if (_ipt.attr("type") == "radio") {
@@ -658,14 +656,14 @@
                         target.find("tbody").find("tr").removeClass("treetable-selected");
                         $(this).addClass("treetable-selected");
                     } else if (_ipt.attr("type") == "checkbox") {
-                    	if (_ipt.prop('checked')) {
-                    		_ipt.prop('checked', true);
-                    		target.find("tbody").find("tr").removeClass("treetable-selected");
-                    		$(this).addClass("treetable-selected");
-                    	} else {
-                    		_ipt.prop('checked', false);
-                    		target.find("tbody").find("tr").removeClass("treetable-selected");
-                    	}
+                        if (_ipt.prop('checked')) {
+                            _ipt.prop('checked', true);
+                            target.find("tbody").find("tr").removeClass("treetable-selected");
+                            $(this).addClass("treetable-selected");
+                        } else {
+                            _ipt.prop('checked', false);
+                            target.find("tbody").find("tr").removeClass("treetable-selected");
+                        }
                     } else {
                         if (_ipt.prop('checked')) {
                             _ipt.prop('checked', false);
@@ -681,9 +679,9 @@
             });
         }
         // 注册小图标点击事件--展开缩起
-        var registerExpanderEvent = function() {
+        var registerExpanderEvent = function () {
             target.find("tbody").find("tr").find(".treetable-expander").unbind();
-            target.find("tbody").find("tr").find(".treetable-expander").click(function() {
+            target.find("tbody").find("tr").find(".treetable-expander").click(function () {
                 var _isExpanded = $(this).hasClass(options.expanderExpandedClass);
                 var _isCollapsed = $(this).hasClass(options.expanderCollapsedClass);
                 if (_isExpanded || _isCollapsed) {
@@ -693,60 +691,60 @@
                     var _id = tr.attr("data-id");
                     var _ls = target.find("tbody").find("tr[id^='" + row_id + "_']");
                     if (!options.pagination) {
-	                    if (_isExpanded) {
-	                        $(this).removeClass(options.expanderExpandedClass);
-	                        $(this).addClass(options.expanderCollapsedClass);
-	                        if (_ls && _ls.length > 0) {
-	                            $.each(_ls, function(index, item) {
-	                                $(item).css("display", "none");
-	                            });
-	                        }
-	                    } else {
-	                        $(this).removeClass(options.expanderCollapsedClass);
-	                        $(this).addClass(options.expanderExpandedClass);
-	                        if (_ls && _ls.length > 0) {
-	                            $.each(_ls, function(index, item) {
-	                                var _p_icon = $("#" + $(item).attr("pid")).children().eq(options.expandColumn).find(".treetable-expander");
-	                                var _p_display = $("#" + $(item).attr("pid")).css('display');
-	                                if (_p_icon.hasClass(options.expanderExpandedClass) && _p_display == 'table') {
-	                                    $(item).css("display", "table");
-	                                }
-	                            });
-	                        }
-	                    }
+                        if (_isExpanded) {
+                            $(this).removeClass(options.expanderExpandedClass);
+                            $(this).addClass(options.expanderCollapsedClass);
+                            if (_ls && _ls.length > 0) {
+                                $.each(_ls, function (index, item) {
+                                    $(item).css("display", "none");
+                                });
+                            }
+                        } else {
+                            $(this).removeClass(options.expanderCollapsedClass);
+                            $(this).addClass(options.expanderExpandedClass);
+                            if (_ls && _ls.length > 0) {
+                                $.each(_ls, function (index, item) {
+                                    var _p_icon = $("#" + $(item).attr("pid")).children().eq(options.expandColumn).find(".treetable-expander");
+                                    var _p_display = $("#" + $(item).attr("pid")).css('display');
+                                    if (_p_icon.hasClass(options.expanderExpandedClass) && _p_display == 'table') {
+                                        $(item).css("display", "table");
+                                    }
+                                });
+                            }
+                        }
                     } else {
                         var _ls = target.find("tbody").find("tr[id^='" + row_id + "_']");
                         if (_ls && _ls.length > 0) {
                             if (_isExpanded) {
                                 if (row_pid == "row_root") {
                                     $('table tr[id^="' + row_id + '_"]').css("display", "none");
-                                    $('table tr[id^="' + row_id + '_"]').each(function(i,n) {
+                                    $('table tr[id^="' + row_id + '_"]').each(function (i, n) {
                                         var _isExpanded = $(n).find(".treetable-expander").hasClass(options.expanderExpandedClass);
                                         if (_isExpanded) {
                                             $(n).find(".treetable-expander").trigger("click");
                                         }
                                     })
                                 } else {
-                                    $.each(_ls, function(index, item) {
+                                    $.each(_ls, function (index, item) {
                                         $(item).css("display", "none");
                                         var _isExpanded = $(item).find(".treetable-expander").hasClass(options.expanderExpandedClass);
                                         if (_isExpanded) {
                                             $(item).find(".treetable-expander").trigger("click");
                                         }
-                                     });
-                            	}
+                                    });
+                                }
                             } else {
                                 if (row_pid == "row_root") {
                                     $('table tr[pid="' + row_id + '"]').css("display", "table");
                                 } else {
-	                                $.each(_ls, function(index, item) {
-	                                    var _p_icon = $("#" + $(item).attr("pid")).children().eq(options.expandColumn).find(".treetable-expander");
+                                    $.each(_ls, function (index, item) {
+                                        var _p_icon = $("#" + $(item).attr("pid")).children().eq(options.expandColumn).find(".treetable-expander");
                                         var _isExpanded = _p_icon.hasClass(options.expanderExpandedClass);
                                         var _isCollapsed = _p_icon.hasClass(options.expanderCollapsedClass);
-	                                    if (row_id == $(item).attr("pid")) {
-		                                    $(item).css("display", "table");
-	                                    }
-	                                });
+                                        if (row_id == $(item).attr("pid")) {
+                                            $(item).css("display", "table");
+                                        }
+                                    });
                                 }
                             }
                         } else {
@@ -759,13 +757,13 @@
                                         url: options.dataUrl,
                                         data: parms,
                                         dataType: "json",
-                                        success: function(data, textStatus, jqXHR) {
+                                        success: function (data, textStatus, jqXHR) {
                                             $("#" + row_id + "_load").remove();
                                             var list = data;
                                             data = list;
                                             target.appendData(data)
                                         },
-                                        error: function(xhr, textStatus) {
+                                        error: function (xhr, textStatus) {
                                             var _errorMsg = '<tr><td colspan="' + options.columns.length + '"><div style="display: block;text-align: center;">' + xhr.responseText + '</div></td></tr>'
                                             $("#" + row_id).after(_errorMsg);
                                         }
@@ -785,19 +783,19 @@
             });
         }
         // 刷新数据
-        target.refresh = function(parms) {
-            if(parms){
-                target.lastAjaxParams=parms;
+        target.refresh = function (parms) {
+            if (parms) {
+                target.lastAjaxParams = parms;
             }
             initServer(target.lastAjaxParams);
         }
         // 添加数据刷新表格
-        target.appendData = function(data) {
+        target.appendData = function (data) {
             data.reverse()
             // 下边的操作主要是为了查询时让一些没有根节点的节点显示
-            $.each(data, function(i, item) {
+            $.each(data, function (i, item) {
                 if (options.pagination) {
-                    item.__nodes = (item["nodes"] == 1 ? true: false) || ((item["nodes"] == 'true' || item["nodes"] == true) ? true: false);
+                    item.__nodes = (item["nodes"] == 1 ? true : false) || ((item["nodes"] == 'true' || item["nodes"] == true) ? true : false);
                 }
                 var _data = target.data_obj["id_" + item[options.code]];
                 var _p_data = target.data_obj["id_" + item[options.parentCode]];
@@ -866,32 +864,32 @@
         }
 
         // 展开/折叠指定的行
-        target.toggleRow=function(id) {
+        target.toggleRow = function (id) {
             var _rowData = target.data_obj["id_" + id];
-            var $row_expander = $("#"+_rowData.row_id).find(".treetable-expander");
+            var $row_expander = $("#" + _rowData.row_id).find(".treetable-expander");
             $row_expander.trigger("click");
         }
         // 展开指定的行
-        target.expandRow=function(id) {
+        target.expandRow = function (id) {
             var _rowData = target.data_obj["id_" + id];
-            var $row_expander = $("#"+_rowData.row_id).find(".treetable-expander");
+            var $row_expander = $("#" + _rowData.row_id).find(".treetable-expander");
             var _isCollapsed = $row_expander.hasClass(target.options.expanderCollapsedClass);
             if (_isCollapsed) {
                 $row_expander.trigger("click");
             }
         }
         // 折叠 指定的行
-        target.collapseRow=function(id) {
+        target.collapseRow = function (id) {
             var _rowData = target.data_obj["id_" + id];
-            var $row_expander = $("#"+_rowData.row_id).find(".treetable-expander");
+            var $row_expander = $("#" + _rowData.row_id).find(".treetable-expander");
             var _isExpanded = $row_expander.hasClass(target.options.expanderExpandedClass);
             if (_isExpanded) {
                 $row_expander.trigger("click");
             }
         }
         // 展开所有的行
-        target.expandAll=function() {
-            target.find("tbody").find("tr").find(".treetable-expander").each(function(i,n){
+        target.expandAll = function () {
+            target.find("tbody").find("tr").find(".treetable-expander").each(function (i, n) {
                 var _isCollapsed = $(n).hasClass(options.expanderCollapsedClass);
                 if (_isCollapsed) {
                     $(n).trigger("click");
@@ -899,8 +897,8 @@
             })
         }
         // 折叠所有的行
-        target.collapseAll=function() {
-            target.find("tbody").find("tr").find(".treetable-expander").each(function(i,n){
+        target.collapseAll = function () {
+            target.find("tbody").find("tr").find(".treetable-expander").each(function (i, n) {
                 var _isExpanded = $(n).hasClass(options.expanderExpandedClass);
                 if (_isExpanded) {
                     $(n).trigger("click");
@@ -908,25 +906,25 @@
             })
         }
         // 显示指定列
-        target.showColumn=function(field,flag) {
+        target.showColumn = function (field, flag) {
             var _index = $.inArray(field, target.hiddenColumns);
             if (_index > -1) {
                 target.hiddenColumns.splice(_index, 1);
             }
-            target.find("."+field+"_cls").show();
+            target.find("." + field + "_cls").show();
             //是否更新列选项状态
-            if(flag&&options.showColumns){
-                var $input = $(".bootstrap-tree-table .treetable-bars .columns label").find("input[value='"+field+"']")
+            if (flag && options.showColumns) {
+                var $input = $(".bootstrap-tree-table .treetable-bars .columns label").find("input[value='" + field + "']")
                 $input.prop("checked", 'checked');
             }
         }
         // 隐藏指定列
-        target.hideColumn=function(field,flag) {
+        target.hideColumn = function (field, flag) {
             target.hiddenColumns.push(field);
-            target.find("."+field+"_cls").hide();
+            target.find("." + field + "_cls").hide();
             //是否更新列选项状态
-            if(flag&&options.showColumns){
-                var $input = $(".bootstrap-tree-table .treetable-bars .columns label").find("input[value='"+field+"']")
+            if (flag && options.showColumns) {
+                var $input = $(".bootstrap-tree-table .treetable-bars .columns label").find("input[value='" + field + "']")
                 $input.prop("checked", '');
             }
         }
@@ -970,11 +968,11 @@
             }
             return defaultValue;
         };
-        var  formatRecordsPerPage =  function (pageNumber) {
+        var formatRecordsPerPage = function (pageNumber) {
             return '每页显示 ' + pageNumber + ' 条记录';
         };
         var formatShowingRows = function (pageFrom, pageTo, totalRows) {
-        	return '显示第 ' + pageFrom + ' 到第 ' + pageTo + ' 条记录,总共 ' + totalRows + ' 条记录。';
+            return '显示第 ' + pageFrom + ' 到第 ' + pageTo + ' 条记录,总共 ' + totalRows + ' 条记录。';
         };
         // 初始化
         init();
@@ -984,7 +982,7 @@
     // 组件方法封装........
     $.fn.bootstrapTreeTable.methods = {
         // 为了兼容bootstrap-table的写法,统一返回数组,这里返回了表格显示列的数据
-        getSelections: function(target, data) {
+        getSelections: function (target, data) {
             // 所有被选中的记录input
             var _ipt = target.find("tbody").find("tr").find("input[name='select_item']:checked");
             var chk_value = [];
@@ -993,7 +991,7 @@
                 var _data = target.data_obj["id_" + _ipt.val()];
                 chk_value.push(_data);
             } else {
-                _ipt.each(function(_i, _item) {
+                _ipt.each(function (_i, _item) {
                     var _data = target.data_obj["id_" + $(_item).val()];
                     chk_value.push(_data);
                 });
@@ -1001,7 +999,7 @@
             return chk_value;
         },
         // 刷新记录
-        refresh: function(target, parms) {
+        refresh: function (target, parms) {
             if (parms) {
                 target.refresh(parms);
             } else {
@@ -1009,38 +1007,38 @@
             }
         },
         // 添加数据到表格
-        appendData: function(target, data) {
+        appendData: function (target, data) {
             if (data) {
                 target.appendData(data);
             }
         },
         // 展开/折叠指定的行
-        toggleRow: function(target, id) {
+        toggleRow: function (target, id) {
             target.toggleRow(id);
         },
         // 展开指定的行
-        expandRow: function(target, id) {
+        expandRow: function (target, id) {
             target.expandRow(id);
         },
         // 折叠 指定的行
-        collapseRow: function(target, id) {
+        collapseRow: function (target, id) {
             target.collapseRow(id);
         },
         // 展开所有的行
-        expandAll: function(target) {
+        expandAll: function (target) {
             target.expandAll();
         },
         // 折叠所有的行
-        collapseAll: function(target) {
+        collapseAll: function (target) {
             target.collapseAll();
         },
         // 显示指定列
-        showColumn: function(target,field) {
-            target.showColumn(field,true);
+        showColumn: function (target, field) {
+            target.showColumn(field, true);
         },
         // 隐藏指定列
-        hideColumn: function(target,field) {
-            target.hideColumn(field,true);
+        hideColumn: function (target, field) {
+            target.hideColumn(field, true);
         }
         // 组件的其他方法也可以进行类似封装........
     };
@@ -1077,10 +1075,10 @@
         paginationNextText: '&rsaquo;',
         expanderExpandedClass: 'glyphicon glyphicon-chevron-down',   // 展开的按钮的图标
         expanderCollapsedClass: 'glyphicon glyphicon-chevron-right', // 缩起的按钮的图标
-        responseHandler: function(res) {
+        responseHandler: function (res) {
             return false;
         },
-        onLoadSuccess: function(res) {
+        onLoadSuccess: function (res) {
             return false;
         }
     };

+ 101 - 101
zhjq-admin/src/main/resources/static/ajax/libs/bootstrap-table/locale/bootstrap-table-zh-CN.js

@@ -3,107 +3,107 @@
  * 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, " 总记录中过滤)");
+    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 '显示过滤控制';
     }
-    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']);

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

@@ -9,27 +9,27 @@
  */
 
 .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;
+    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%;
+    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,
@@ -37,268 +37,268 @@
 .cropper-drag-box,
 .cropper-crop-box,
 .cropper-modal {
-  bottom: 0;
-  left: 0;
-  position: absolute;
-  right: 0;
-  top: 0;
+    bottom: 0;
+    left: 0;
+    position: absolute;
+    right: 0;
+    top: 0;
 }
 
 .cropper-wrap-box,
 .cropper-canvas {
-  overflow: hidden;
+    overflow: hidden;
 }
 
 .cropper-drag-box {
-  background-color: #fff;
-  opacity: 0;
+    background-color: #fff;
+    opacity: 0;
 }
 
 .cropper-modal {
-  background-color: #000;
-  opacity: 0.5;
+    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%;
+    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;
+    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%;
+    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);
+    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;
+    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;
+    background-color: #eee;
+    content: ' ';
+    display: block;
+    position: absolute;
 }
 
 .cropper-center::before {
-  height: 1px;
-  left: -3px;
-  top: 0;
-  width: 7px;
+    height: 1px;
+    left: -3px;
+    top: 0;
+    width: 7px;
 }
 
 .cropper-center::after {
-  height: 7px;
-  left: 0;
-  top: -3px;
-  width: 1px;
+    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%;
+    display: block;
+    height: 100%;
+    opacity: 0.1;
+    position: absolute;
+    width: 100%;
 }
 
 .cropper-face {
-  background-color: #fff;
-  left: 0;
-  top: 0;
+    background-color: #fff;
+    left: 0;
+    top: 0;
 }
 
 .cropper-line {
-  background-color: #39f;
+    background-color: #39f;
 }
 
 .cropper-line.line-e {
-  cursor: ew-resize;
-  right: -3px;
-  top: 0;
-  width: 5px;
+    cursor: ew-resize;
+    right: -3px;
+    top: 0;
+    width: 5px;
 }
 
 .cropper-line.line-n {
-  cursor: ns-resize;
-  height: 5px;
-  left: 0;
-  top: -3px;
+    cursor: ns-resize;
+    height: 5px;
+    left: 0;
+    top: -3px;
 }
 
 .cropper-line.line-w {
-  cursor: ew-resize;
-  left: -3px;
-  top: 0;
-  width: 5px;
+    cursor: ew-resize;
+    left: -3px;
+    top: 0;
+    width: 5px;
 }
 
 .cropper-line.line-s {
-  bottom: -3px;
-  cursor: ns-resize;
-  height: 5px;
-  left: 0;
+    bottom: -3px;
+    cursor: ns-resize;
+    height: 5px;
+    left: 0;
 }
 
 .cropper-point {
-  background-color: #39f;
-  height: 5px;
-  opacity: 0.75;
-  width: 5px;
+    background-color: #39f;
+    height: 5px;
+    opacity: 0.75;
+    width: 5px;
 }
 
 .cropper-point.point-e {
-  cursor: ew-resize;
-  margin-top: -3px;
-  right: -3px;
-  top: 50%;
+    cursor: ew-resize;
+    margin-top: -3px;
+    right: -3px;
+    top: 50%;
 }
 
 .cropper-point.point-n {
-  cursor: ns-resize;
-  left: 50%;
-  margin-left: -3px;
-  top: -3px;
+    cursor: ns-resize;
+    left: 50%;
+    margin-left: -3px;
+    top: -3px;
 }
 
 .cropper-point.point-w {
-  cursor: ew-resize;
-  left: -3px;
-  margin-top: -3px;
-  top: 50%;
+    cursor: ew-resize;
+    left: -3px;
+    margin-top: -3px;
+    top: 50%;
 }
 
 .cropper-point.point-s {
-  bottom: -3px;
-  cursor: s-resize;
-  left: 50%;
-  margin-left: -3px;
+    bottom: -3px;
+    cursor: s-resize;
+    left: 50%;
+    margin-left: -3px;
 }
 
 .cropper-point.point-ne {
-  cursor: nesw-resize;
-  right: -3px;
-  top: -3px;
+    cursor: nesw-resize;
+    right: -3px;
+    top: -3px;
 }
 
 .cropper-point.point-nw {
-  cursor: nwse-resize;
-  left: -3px;
-  top: -3px;
+    cursor: nwse-resize;
+    left: -3px;
+    top: -3px;
 }
 
 .cropper-point.point-sw {
-  bottom: -3px;
-  cursor: nesw-resize;
-  left: -3px;
+    bottom: -3px;
+    cursor: nesw-resize;
+    left: -3px;
 }
 
 .cropper-point.point-se {
-  bottom: -3px;
-  cursor: nwse-resize;
-  height: 20px;
-  opacity: 1;
-  right: -3px;
-  width: 20px;
+    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;
-  }
+    .cropper-point.point-se {
+        height: 15px;
+        width: 15px;
+    }
 }
 
 @media (min-width: 992px) {
-  .cropper-point.point-se {
-    height: 10px;
-    width: 10px;
-  }
+    .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 {
+        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%;
+    background-color: #39f;
+    bottom: -50%;
+    content: ' ';
+    display: block;
+    height: 200%;
+    opacity: 0;
+    position: absolute;
+    right: -50%;
+    width: 200%;
 }
 
 .cropper-invisible {
-  opacity: 0;
+    opacity: 0;
 }
 
 .cropper-bg {
-  background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAAA3NCSVQICAjb4U/gAAAABlBMVEXMzMz////TjRV2AAAACXBIWXMAAArrAAAK6wGCiw1aAAAAHHRFWHRTb2Z0d2FyZQBBZG9iZSBGaXJld29ya3MgQ1M26LyyjAAAABFJREFUCJlj+M/AgBVhF/0PAH6/D/HkDxOGAAAAAElFTkSuQmCC');
+    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;
+    display: block;
+    height: 0;
+    position: absolute;
+    width: 0;
 }
 
 .cropper-hidden {
-  display: none !important;
+    display: none !important;
 }
 
 .cropper-move {
-  cursor: move;
+    cursor: move;
 }
 
 .cropper-crop {
-  cursor: crosshair;
+    cursor: crosshair;
 }
 
 .cropper-disabled .cropper-drag-box,
 .cropper-disabled .cropper-face,
 .cropper-disabled .cropper-line,
 .cropper-disabled .cropper-point {
-  cursor: not-allowed;
+    cursor: not-allowed;
 }

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 3363 - 3316
zhjq-admin/src/main/resources/static/ajax/libs/cropper/cropper.js


+ 394 - 337
zhjq-admin/src/main/resources/static/ajax/libs/cxselect/jquery.cxselect.js

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

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

@@ -8,196 +8,196 @@
  *
  */
 .datetimepicker {
-	padding: 4px;
-	margin-top: 1px;
-	-webkit-border-radius: 4px;
-	-moz-border-radius: 4px;
-	border-radius: 4px;
-	direction: ltr;
+    padding: 4px;
+    margin-top: 1px;
+    -webkit-border-radius: 4px;
+    -moz-border-radius: 4px;
+    border-radius: 4px;
+    direction: ltr;
 }
 
 .datetimepicker-inline {
-	width: 220px;
+    width: 220px;
 }
 
 .datetimepicker.datetimepicker-rtl {
-	direction: rtl;
+    direction: rtl;
 }
 
 .datetimepicker.datetimepicker-rtl table tr td span {
-	float: right;
+    float: right;
 }
 
 .datetimepicker-dropdown, .datetimepicker-dropdown-left {
-	top: 0;
-	left: 0;
+    top: 0;
+    left: 0;
 }
 
 [class*=" datetimepicker-dropdown"]:before {
-	content: '';
-	display: inline-block;
-	border-left: 7px solid transparent;
-	border-right: 7px solid transparent;
-	border-bottom: 7px solid #cccccc;
-	border-bottom-color: rgba(0, 0, 0, 0.2);
-	position: absolute;
+    content: '';
+    display: inline-block;
+    border-left: 7px solid transparent;
+    border-right: 7px solid transparent;
+    border-bottom: 7px solid #cccccc;
+    border-bottom-color: rgba(0, 0, 0, 0.2);
+    position: absolute;
 }
 
 [class*=" datetimepicker-dropdown"]:after {
-	content: '';
-	display: inline-block;
-	border-left: 6px solid transparent;
-	border-right: 6px solid transparent;
-	border-bottom: 6px solid #ffffff;
-	position: absolute;
+    content: '';
+    display: inline-block;
+    border-left: 6px solid transparent;
+    border-right: 6px solid transparent;
+    border-bottom: 6px solid #ffffff;
+    position: absolute;
 }
 
 [class*=" datetimepicker-dropdown-top"]:before {
-	content: '';
-	display: inline-block;
-	border-left: 7px solid transparent;
-	border-right: 7px solid transparent;
-	border-top: 7px solid #cccccc;
-	border-top-color: rgba(0, 0, 0, 0.2);
-	border-bottom: 0;
+    content: '';
+    display: inline-block;
+    border-left: 7px solid transparent;
+    border-right: 7px solid transparent;
+    border-top: 7px solid #cccccc;
+    border-top-color: rgba(0, 0, 0, 0.2);
+    border-bottom: 0;
 }
 
 [class*=" datetimepicker-dropdown-top"]:after {
-	content: '';
-	display: inline-block;
-	border-left: 6px solid transparent;
-	border-right: 6px solid transparent;
-	border-top: 6px solid #ffffff;
-	border-bottom: 0;
+    content: '';
+    display: inline-block;
+    border-left: 6px solid transparent;
+    border-right: 6px solid transparent;
+    border-top: 6px solid #ffffff;
+    border-bottom: 0;
 }
 
 .datetimepicker-dropdown-bottom-left:before {
-	top: -7px;
-	right: 6px;
+    top: -7px;
+    right: 6px;
 }
 
 .datetimepicker-dropdown-bottom-left:after {
-	top: -6px;
-	right: 7px;
+    top: -6px;
+    right: 7px;
 }
 
 .datetimepicker-dropdown-bottom-right:before {
-	top: -7px;
-	left: 6px;
+    top: -7px;
+    left: 6px;
 }
 
 .datetimepicker-dropdown-bottom-right:after {
-	top: -6px;
-	left: 7px;
+    top: -6px;
+    left: 7px;
 }
 
 .datetimepicker-dropdown-top-left:before {
-	bottom: -7px;
-	right: 6px;
+    bottom: -7px;
+    right: 6px;
 }
 
 .datetimepicker-dropdown-top-left:after {
-	bottom: -6px;
-	right: 7px;
+    bottom: -6px;
+    right: 7px;
 }
 
 .datetimepicker-dropdown-top-right:before {
-	bottom: -7px;
-	left: 6px;
+    bottom: -7px;
+    left: 6px;
 }
 
 .datetimepicker-dropdown-top-right:after {
-	bottom: -6px;
-	left: 7px;
+    bottom: -6px;
+    left: 7px;
 }
 
 .datetimepicker > div {
-	display: none;
+    display: none;
 }
 
 .datetimepicker.minutes div.datetimepicker-minutes {
-	display: block;
+    display: block;
 }
 
 .datetimepicker.hours div.datetimepicker-hours {
-	display: block;
+    display: block;
 }
 
 .datetimepicker.days div.datetimepicker-days {
-	display: block;
+    display: block;
 }
 
 .datetimepicker.months div.datetimepicker-months {
-	display: block;
+    display: block;
 }
 
 .datetimepicker.years div.datetimepicker-years {
-	display: block;
+    display: block;
 }
 
 .datetimepicker table {
-	margin: 0;
+    margin: 0;
 }
 
-.datetimepicker  td,
+.datetimepicker td,
 .datetimepicker th {
-	text-align: center;
-	width: 20px;
-	height: 20px;
-	-webkit-border-radius: 4px;
-	-moz-border-radius: 4px;
-	border-radius: 4px;
-	border: none;
+    text-align: center;
+    width: 20px;
+    height: 20px;
+    -webkit-border-radius: 4px;
+    -moz-border-radius: 4px;
+    border-radius: 4px;
+    border: none;
 }
 
 .table-striped .datetimepicker table tr td,
 .table-striped .datetimepicker table tr th {
-	background-color: transparent;
+    background-color: transparent;
 }
 
 .datetimepicker table tr td.minute:hover {
-	background: #eeeeee;
-	cursor: pointer;
+    background: #eeeeee;
+    cursor: pointer;
 }
 
 .datetimepicker table tr td.hour:hover {
-	background: #eeeeee;
-	cursor: pointer;
+    background: #eeeeee;
+    cursor: pointer;
 }
 
 .datetimepicker table tr td.day:hover {
-	background: #eeeeee;
-	cursor: pointer;
+    background: #eeeeee;
+    cursor: pointer;
 }
 
 .datetimepicker table tr td.old,
 .datetimepicker table tr td.new {
-	color: #999999;
+    color: #999999;
 }
 
 .datetimepicker table tr td.disabled,
 .datetimepicker table tr td.disabled:hover {
-	background: none;
-	color: #999999;
-	cursor: default;
+    background: none;
+    color: #999999;
+    cursor: default;
 }
 
 .datetimepicker table tr td.today,
 .datetimepicker table tr td.today:hover,
 .datetimepicker table tr td.today.disabled,
 .datetimepicker 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(to bottom, #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);
+    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(to bottom, #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);
 }
 
 .datetimepicker table tr td.today:hover,
@@ -220,7 +220,7 @@
 .datetimepicker table tr td.today:hover[disabled],
 .datetimepicker table tr td.today.disabled[disabled],
 .datetimepicker table tr td.today.disabled:hover[disabled] {
-	background-color: #fdf59a;
+    background-color: #fdf59a;
 }
 
 .datetimepicker table tr td.today:active,
@@ -231,27 +231,27 @@
 .datetimepicker table tr td.today:hover.active,
 .datetimepicker table tr td.today.disabled.active,
 .datetimepicker table tr td.today.disabled:hover.active {
-	background-color: #fbf069;
+    background-color: #fbf069;
 }
 
 .datetimepicker table tr td.active,
 .datetimepicker table tr td.active:hover,
 .datetimepicker table tr td.active.disabled,
 .datetimepicker 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(to bottom, #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: #ffffff;
-	text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+    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(to bottom, #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: #ffffff;
+    text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
 }
 
 .datetimepicker table tr td.active:hover,
@@ -274,7 +274,7 @@
 .datetimepicker table tr td.active:hover[disabled],
 .datetimepicker table tr td.active.disabled[disabled],
 .datetimepicker table tr td.active.disabled:hover[disabled] {
-	background-color: #0044cc;
+    background-color: #0044cc;
 }
 
 .datetimepicker table tr td.active:active,
@@ -285,72 +285,72 @@
 .datetimepicker table tr td.active:hover.active,
 .datetimepicker table tr td.active.disabled.active,
 .datetimepicker table tr td.active.disabled:hover.active {
-	background-color: #003399;
+    background-color: #003399;
 }
 
 .datetimepicker 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;
+    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;
 }
 
 .datetimepicker .datetimepicker-hours span {
-	height: 26px;
-	line-height: 26px;
+    height: 26px;
+    line-height: 26px;
 }
 
 .datetimepicker .datetimepicker-hours table tr td span.hour_am,
 .datetimepicker .datetimepicker-hours table tr td span.hour_pm {
-	width: 14.6%;
+    width: 14.6%;
 }
 
 .datetimepicker .datetimepicker-hours fieldset legend,
 .datetimepicker .datetimepicker-minutes fieldset legend {
-	margin-bottom: inherit;
-	line-height: 30px;
+    margin-bottom: inherit;
+    line-height: 30px;
 }
 
 .datetimepicker .datetimepicker-minutes span {
-	height: 26px;
-	line-height: 26px;
+    height: 26px;
+    line-height: 26px;
 }
 
 .datetimepicker table tr td span:hover {
-	background: #eeeeee;
+    background: #eeeeee;
 }
 
 .datetimepicker table tr td span.disabled,
 .datetimepicker table tr td span.disabled:hover {
-	background: none;
-	color: #999999;
-	cursor: default;
+    background: none;
+    color: #999999;
+    cursor: default;
 }
 
 .datetimepicker table tr td span.active,
 .datetimepicker table tr td span.active:hover,
 .datetimepicker table tr td span.active.disabled,
 .datetimepicker 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(to bottom, #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: #ffffff;
-	text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+    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(to bottom, #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: #ffffff;
+    text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
 }
 
 .datetimepicker table tr td span.active:hover,
@@ -373,7 +373,7 @@
 .datetimepicker table tr td span.active:hover[disabled],
 .datetimepicker table tr td span.active.disabled[disabled],
 .datetimepicker table tr td span.active.disabled:hover[disabled] {
-	background-color: #0044cc;
+    background-color: #0044cc;
 }
 
 .datetimepicker table tr td span.active:active,
@@ -384,35 +384,35 @@
 .datetimepicker table tr td span.active:hover.active,
 .datetimepicker table tr td span.active.disabled.active,
 .datetimepicker table tr td span.active.disabled:hover.active {
-	background-color: #003399;
+    background-color: #003399;
 }
 
 .datetimepicker table tr td span.old {
-	color: #999999;
+    color: #999999;
 }
 
 .datetimepicker th.switch {
-	width: 145px;
+    width: 145px;
 }
 
 .datetimepicker th span.glyphicon {
-	pointer-events: none;
+    pointer-events: none;
 }
 
 .datetimepicker thead tr:first-child th,
 .datetimepicker tfoot th {
-	cursor: pointer;
+    cursor: pointer;
 }
 
 .datetimepicker thead tr:first-child th:hover,
 .datetimepicker tfoot th:hover {
-	background: #eeeeee;
+    background: #eeeeee;
 }
 
 .input-append.date .add-on i,
 .input-prepend.date .add-on i,
 .input-group.date .input-group-addon span {
-	cursor: pointer;
-	width: 14px;
-	height: 14px;
+    cursor: pointer;
+    width: 14px;
+    height: 14px;
 }

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 1888 - 1883
zhjq-admin/src/main/resources/static/ajax/libs/datapicker/bootstrap-datetimepicker.js


+ 30 - 29
zhjq-admin/src/main/resources/static/ajax/libs/duallistbox/bootstrap-duallistbox.css

@@ -7,80 +7,81 @@
  *  Under Apache License v2.0 License
  */
 .bootstrap-duallistbox-container .buttons {
-  width: 100%;
-  margin-bottom: -1px;
+    width: 100%;
+    margin-bottom: -1px;
 }
 
 .bootstrap-duallistbox-container label {
-  display: block;
+    display: block;
 }
 
 .bootstrap-duallistbox-container .info {
-  display: inline-block;
-  margin-bottom: 5px;
-  font-size: 11px;
+    display: inline-block;
+    margin-bottom: 5px;
+    font-size: 11px;
 }
 
 .bootstrap-duallistbox-container .clear1,
 .bootstrap-duallistbox-container .clear2 {
-  display: none;
-  font-size: 10px;
+    display: none;
+    font-size: 10px;
 }
 
 .bootstrap-duallistbox-container .box1.filtered .clear1,
 .bootstrap-duallistbox-container .box2.filtered .clear2 {
-  display: inline-block;
+    display: inline-block;
 }
 
 .bootstrap-duallistbox-container .move,
 .bootstrap-duallistbox-container .remove {
-  width: 60%;
+    width: 60%;
 }
 
 .bootstrap-duallistbox-container .btn-group .btn {
-  border-bottom-left-radius: 0;
-  border-bottom-right-radius: 0;
+    border-bottom-left-radius: 0;
+    border-bottom-right-radius: 0;
 }
+
 .bootstrap-duallistbox-container select {
-  border-top-left-radius: 0;
-  border-top-right-radius: 0;
+    border-top-left-radius: 0;
+    border-top-right-radius: 0;
 }
 
 .bootstrap-duallistbox-container .moveall,
 .bootstrap-duallistbox-container .removeall {
-  width: 40%;
+    width: 40%;
 }
 
 .bootstrap-duallistbox-container.bs2compatible .btn-group > .btn + .btn {
-  margin-left: 0;
+    margin-left: 0;
 }
 
 .bootstrap-duallistbox-container select {
-  width: 100%;
-  height: 300px;
-  padding: 0;
+    width: 100%;
+    height: 300px;
+    padding: 0;
 }
 
 .bootstrap-duallistbox-container .filter {
-  display: inline-block;
-  width: 100%;
-  height: 31px;
-  margin: 0 0 5px 0;
-  -webkit-box-sizing: border-box;
-  -moz-box-sizing: border-box;
-  box-sizing: border-box;
+    display: inline-block;
+    width: 100%;
+    height: 31px;
+    margin: 0 0 5px 0;
+    -webkit-box-sizing: border-box;
+    -moz-box-sizing: border-box;
+    box-sizing: border-box;
 }
 
 .bootstrap-duallistbox-container .filter.placeholder {
-  color: #aaa;
+    color: #aaa;
 }
 
 .bootstrap-duallistbox-container.moveonselect .move,
 .bootstrap-duallistbox-container.moveonselect .remove {
-  display:none;
+    display: none;
 }
 
 .bootstrap-duallistbox-container.moveonselect .moveall,
 .bootstrap-duallistbox-container.moveonselect .removeall {
-  width: 100%;
+    width: 100%;
 }

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 789 - 789
zhjq-admin/src/main/resources/static/ajax/libs/duallistbox/bootstrap-duallistbox.js


+ 17 - 17
zhjq-admin/src/main/resources/static/ajax/libs/flot/curvedLines.js

@@ -84,16 +84,16 @@
  *  v0.6   flot 0.8 compatibility and some bug fixes
  */
 
-(function($) {
+(function ($) {
 
     var options = {
-        series : {
-            curvedLines : {
-                active : false,
+        series: {
+            curvedLines: {
+                active: false,
                 apply: false,
-                fit : false,
-                curvePointFactor : 20,
-                fitPointDist : undefined
+                fit: false,
+                curvePointFactor: 20,
+                fitPointDist: undefined
             }
         }
     };
@@ -118,7 +118,7 @@
                 if (series.lines.fill) {
 
                     var pointsTop = calculateCurvePoints(datapoints, series.curvedLines, 1)
-                        ,pointsBottom = calculateCurvePoints(datapoints, series.curvedLines, 2); //flot makes sure for us that we've got a second y point if fill is true !
+                        , pointsBottom = calculateCurvePoints(datapoints, series.curvedLines, 2); //flot makes sure for us that we've got a second y point if fill is true !
 
                     //Merge top and bottom curve
                     datapoints.pointsize = 3;
@@ -138,11 +138,11 @@
                         } else if (pointsTop[i] < pointsBottom[j]) {
                             datapoints.points[k] = pointsTop[i];
                             datapoints.points[k + 1] = pointsTop[i + 1];
-                            datapoints.points[k + 2] = k > 0 ? datapoints.points[k-1] : null;
+                            datapoints.points[k + 2] = k > 0 ? datapoints.points[k - 1] : null;
                             i += ps;
                         } else {
                             datapoints.points[k] = pointsBottom[j];
-                            datapoints.points[k + 1] = k > 1 ? datapoints.points[k-2] : null;
+                            datapoints.points[k + 1] = k > 1 ? datapoints.points[k - 2] : null;
                             datapoints.points[k + 2] = pointsBottom[j + 1];
                             j += ps;
                         }
@@ -174,10 +174,10 @@
                 //to have a max,min at the data point.
 
                 var fpDist;
-                if(typeof curvedLinesOptions.fitPointDist == 'undefined') {
+                if (typeof curvedLinesOptions.fitPointDist == 'undefined') {
                     //estimate it
                     var minX = points[0];
-                    var maxX = points[points.length-ps];
+                    var maxX = points[points.length - ps];
                     fpDist = (maxX - minX) / (500 * 100); //x range / (estimated pixel length of placeholder * factor)
                 } else {
                     //use user defined value
@@ -267,7 +267,7 @@
             result.push(xnew[0]);
             result.push(ynew[0]);
 
-            for ( j = 1; j < num; ++j) {
+            for (j = 1; j < num; ++j) {
                 //new x point (sampling point for the created curve)
                 xnew[j] = xnew[0] + j * step;
 
@@ -306,10 +306,10 @@
     }//end init
 
     $.plot.plugins.push({
-        init : init,
-        options : options,
-        name : 'curvedLines',
-        version : '0.5'
+        init: init,
+        options: options,
+        name: 'curvedLines',
+        version: '0.5'
     });
 
 })(jQuery);

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 351 - 189
zhjq-admin/src/main/resources/static/ajax/libs/flot/jquery.flot.js


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 595 - 655
zhjq-admin/src/main/resources/static/ajax/libs/flot/jquery.flot.pie.js


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 62 - 2
zhjq-admin/src/main/resources/static/ajax/libs/flot/jquery.flot.resize.js


+ 35 - 36
zhjq-admin/src/main/resources/static/ajax/libs/flot/jquery.flot.spline.js

@@ -3,42 +3,42 @@
  * author: Alex Bardas < alex.bardas@gmail.com >
  * modified by: Avi Kohn https://github.com/AMKohn
  * based on the spline interpolation described at:
- *		 http://scaledinnovation.com/analytics/splines/aboutSplines.html
+ *         http://scaledinnovation.com/analytics/splines/aboutSplines.html
  *
  * Example usage: (add in plot options series object)
- *		for linespline:
- *			series: {
- *				...
- *				lines: {
- *					show: false
- *				},
- *				splines: {
- *					show: true,
- *					tension: x, (float between 0 and 1, defaults to 0.5),
- *					lineWidth: y (number, defaults to 2),
- *					fill: z (float between 0 .. 1 or false, as in flot documentation)
- *				},
- *				...
- *			}
- *		areaspline:
- *			series: {
- *				...
- *				lines: {
- *					show: true,
- *					lineWidth: 0, (line drawing will not execute)
- *					fill: x, (float between 0 .. 1, as in flot documentation)
- *					...
- *				},
- *				splines: {
- *					show: true,
- *					tension: 0.5 (float between 0 and 1)
- *				},
- *				...
- *			}
+ *        for linespline:
+ *            series: {
+ *                ...
+ *                lines: {
+ *                    show: false
+ *                },
+ *                splines: {
+ *                    show: true,
+ *                    tension: x, (float between 0 and 1, defaults to 0.5),
+ *                    lineWidth: y (number, defaults to 2),
+ *                    fill: z (float between 0 .. 1 or false, as in flot documentation)
+ *                },
+ *                ...
+ *            }
+ *        areaspline:
+ *            series: {
+ *                ...
+ *                lines: {
+ *                    show: true,
+ *                    lineWidth: 0, (line drawing will not execute)
+ *                    fill: x, (float between 0 .. 1, as in flot documentation)
+ *                    ...
+ *                },
+ *                splines: {
+ *                    show: true,
+ *                    tension: 0.5 (float between 0 and 1)
+ *                },
+ *                ...
+ *            }
  *
  */
 
-(function($) {
+(function ($) {
     'use strict'
 
     /**
@@ -46,7 +46,7 @@
      * @param {Number} x2, y2: the next knot (not connected, but needed to calculate p2)
      * @param {Number} tension: control how far the control points spread
      * @return {Array}: p1 -> control point, from x1 back toward x0
-     * 					p2 -> the next control point, returned to become the next segment's p1
+     *                    p2 -> the next control point, returned to become the next segment's p1
      *
      * @api private
      */
@@ -123,8 +123,7 @@
             cpoints = cpoints.slice(0, 2).concat(points);
 
             line.push([points[0], points[1], cpoints, type]);
-        }
-        else line.push([points[2], points[3], cpoints.concat(points.slice(2)), type]);
+        } else line.push([points[2], points[3], cpoints.concat(points.slice(2)), type]);
     }
 
     /**
@@ -142,7 +141,7 @@
         }
 
         var cp = [],
-        // array of control points
+            // array of control points
             tension = series.splines.tension || 0.5,
             idx, x, y, points = series.datapoints.points,
             ps = series.datapoints.pointsize,
@@ -193,7 +192,7 @@
     }
 
     $.plot.plugins.push({
-        init: function(plot) {
+        init: function (plot) {
             plot.hooks.drawSeries.push(drawSpline);
         },
         options: {

+ 4 - 4
zhjq-admin/src/main/resources/static/ajax/libs/flot/jquery.flot.symbol.js

@@ -37,11 +37,11 @@
                 // pi * r^2 = 1/2 * s^2 * sin (pi / 3)  =>  s = r * sqrt(2 * pi / sin(pi / 3))
                 var size = radius * Math.sqrt(2 * Math.PI / Math.sin(Math.PI / 3));
                 var height = size * Math.sin(Math.PI / 3);
-                ctx.moveTo(x - size/2, y + height/2);
-                ctx.lineTo(x + size/2, y + height/2);
+                ctx.moveTo(x - size / 2, y + height / 2);
+                ctx.lineTo(x + size / 2, y + height / 2);
                 if (!shadow) {
-                    ctx.lineTo(x, y - height/2);
-                    ctx.lineTo(x - size/2, y + height/2);
+                    ctx.lineTo(x, y - height / 2);
+                    ctx.lineTo(x - size / 2, y + height / 2);
                 }
             },
             cross: function (ctx, x, y, radius, shadow) {

+ 40 - 61
zhjq-admin/src/main/resources/static/ajax/libs/fullscreen/jquery.fullscreen.js

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

+ 15 - 7
zhjq-admin/src/main/resources/static/ajax/libs/iCheck/custom.css

@@ -14,7 +14,7 @@
     cursor: pointer;
 }
 
-.icheckbox_square-green-login{
+.icheckbox_square-green-login {
     display: inline-block;
     *display: inline;
     vertical-align: middle;
@@ -27,43 +27,51 @@
     cursor: pointer;
 }
 
-.icheckbox_square-green,.icheckbox_square-green-login {
+.icheckbox_square-green, .icheckbox_square-green-login {
     background-position: 0 0;
 }
-.icheckbox_square-green.hover,.icheckbox_square-green-login.hover {
+
+.icheckbox_square-green.hover, .icheckbox_square-green-login.hover {
     background-position: -24px 0;
 }
-.icheckbox_square-green.checked,.icheckbox_square-green-login.checked {
+
+.icheckbox_square-green.checked, .icheckbox_square-green-login.checked {
     background-position: -48px 0;
 }
-.icheckbox_square-green.disabled,.icheckbox_square-green.disabled-login {
+
+.icheckbox_square-green.disabled, .icheckbox_square-green.disabled-login {
     background-position: -72px 0;
     cursor: default;
 }
-.icheckbox_square-green.checked.disabled,.icheckbox_square-green-login.checked.disabled {
+
+.icheckbox_square-green.checked.disabled, .icheckbox_square-green-login.checked.disabled {
     background-position: -96px 0;
 }
 
 .iradio_square-green {
     background-position: -120px 0;
 }
+
 .iradio_square-green.hover {
     background-position: -144px 0;
 }
+
 .iradio_square-green.checked {
     background-position: -168px 0;
 }
+
 .iradio_square-green.disabled {
     background-position: -192px 0;
     cursor: default;
 }
+
 .iradio_square-green.checked.disabled {
     background-position: -216px 0;
 }
 
 /* HiDPI support */
 @media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) {
-    .icheckbox_square-green,.icheckbox_square-green-login,
+    .icheckbox_square-green, .icheckbox_square-green-login,
     .iradio_square-green {
         background-image: url(green%402x.png);
         -webkit-background-size: 240px 24px;

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 402 - 288
zhjq-admin/src/main/resources/static/ajax/libs/jasny/jasny-bootstrap.css


+ 278 - 263
zhjq-admin/src/main/resources/static/ajax/libs/jasny/jasny-bootstrap.js

@@ -4,321 +4,336 @@
  * Licensed under Apache-2.0 (https://github.com/jasny/bootstrap/blob/master/LICENSE)
  */
 
-+function ($) { "use strict";
++function ($) {
+    "use strict";
 
-  var isIE = window.navigator.appName == 'Microsoft Internet Explorer'
+    var isIE = window.navigator.appName == 'Microsoft Internet Explorer'
 
-  // FILEUPLOAD PUBLIC CLASS DEFINITION
-  // =================================
+    // FILEUPLOAD PUBLIC CLASS DEFINITION
+    // =================================
 
-  var Fileinput = function (element, options) {
-    this.$element = $(element)
+    var Fileinput = function (element, options) {
+        this.$element = $(element)
 
-    this.options = $.extend({}, Fileinput.DEFAULTS, options)
-    this.$input = this.$element.find(':file')
-    if (this.$input.length === 0) return
+        this.options = $.extend({}, Fileinput.DEFAULTS, options)
+        this.$input = this.$element.find(':file')
+        if (this.$input.length === 0) return
 
-    this.name = this.$input.attr('name') || options.name
+        this.name = this.$input.attr('name') || options.name
 
-    this.$hidden = this.$element.find('input[type=hidden][name="' + this.name + '"]')
-    if (this.$hidden.length === 0) {
-      this.$hidden = $('<input type="hidden">').insertBefore(this.$input)
-    }
-
-    this.$preview = this.$element.find('.fileinput-preview')
-    var height = this.$preview.css('height')
-    if (this.$preview.css('display') !== 'inline' && height !== '0px' && height !== 'none') {
-      this.$preview.css('line-height', height)
-    }
-
-    this.original = {
-      exists: this.$element.hasClass('fileinput-exists'),
-      preview: this.$preview.html(),
-      hiddenVal: this.$hidden.val()
-    }
-
-    this.listen()
-    this.reset()
-  }
-
-  Fileinput.DEFAULTS = {
-    clearName: true
-  }
-
-  Fileinput.prototype.listen = function() {
-    this.$input.on('change.bs.fileinput', $.proxy(this.change, this))
-    $(this.$input[0].form).on('reset.bs.fileinput', $.proxy(this.reset, this))
-
-    this.$element.find('[data-trigger="fileinput"]').on('click.bs.fileinput', $.proxy(this.trigger, this))
-    this.$element.find('[data-dismiss="fileinput"]').on('click.bs.fileinput', $.proxy(this.clear, this))
-  },
-
-  Fileinput.prototype.verifySizes = function(files) {
-    if (typeof this.options.maxSize === 'undefined') return true
+        this.$hidden = this.$element.find('input[type=hidden][name="' + this.name + '"]')
+        if (this.$hidden.length === 0) {
+            this.$hidden = $('<input type="hidden">').insertBefore(this.$input)
+        }
 
-    var max = parseFloat(this.options.maxSize)
-    if (max !== this.options.maxSize) return true
+        this.$preview = this.$element.find('.fileinput-preview')
+        var height = this.$preview.css('height')
+        if (this.$preview.css('display') !== 'inline' && height !== '0px' && height !== 'none') {
+            this.$preview.css('line-height', height)
+        }
 
-    for (var i = 0; i < files.length; i++) {
-      var size = typeof files[i].size !== 'undefined' ? files[i].size : null
-      if (size === null) continue
+        this.original = {
+            exists: this.$element.hasClass('fileinput-exists'),
+            preview: this.$preview.html(),
+            hiddenVal: this.$hidden.val()
+        }
 
-      size = size / 1000 / 1000 /* convert from bytes to MB */
-      if (size > max) return false
+        this.listen()
+        this.reset()
     }
 
-    return true
-  }
+    Fileinput.DEFAULTS = {
+        clearName: true
+    }
 
-  Fileinput.prototype.change = function(e) {
-    var files = e.target.files === undefined ? (e.target && e.target.value ? [{ name: e.target.value.replace(/^.+\\/, '')}] : []) : e.target.files
+    Fileinput.prototype.listen = function () {
+        this.$input.on('change.bs.fileinput', $.proxy(this.change, this))
+        $(this.$input[0].form).on('reset.bs.fileinput', $.proxy(this.reset, this))
 
-    e.stopPropagation()
+        this.$element.find('[data-trigger="fileinput"]').on('click.bs.fileinput', $.proxy(this.trigger, this))
+        this.$element.find('[data-dismiss="fileinput"]').on('click.bs.fileinput', $.proxy(this.clear, this))
+    },
 
-    if (files.length === 0) {
-      this.clear()
-      this.$element.trigger('clear.bs.fileinput')
-      return
-    }
+        Fileinput.prototype.verifySizes = function (files) {
+            if (typeof this.options.maxSize === 'undefined') return true
 
-    if (!this.verifySizes(files)) {
-      this.$element.trigger('max_size.bs.fileinput')
+            var max = parseFloat(this.options.maxSize)
+            if (max !== this.options.maxSize) return true
 
-      this.clear()
-      this.$element.trigger('clear.bs.fileinput')
-      return
-    }
+            for (var i = 0; i < files.length; i++) {
+                var size = typeof files[i].size !== 'undefined' ? files[i].size : null
+                if (size === null) continue
 
-    this.$hidden.val('')
-    this.$hidden.attr('name', '')
-    this.$input.attr('name', this.name)
+                size = size / 1000 / 1000 /* convert from bytes to MB */
+                if (size > max) return false
+            }
 
-    var file = files[0]
+            return true
+        }
 
-    if (this.$preview.length > 0 && (typeof file.type !== "undefined" ? file.type.match(/^image\/(gif|png|jpeg|svg\+xml)$/) : file.name.match(/\.(gif|png|jpe?g|svg)$/i)) && typeof FileReader !== "undefined") {
-      var Fileinput = this
-      var reader = new FileReader()
-      var preview = this.$preview
-      var element = this.$element
+    Fileinput.prototype.change = function (e) {
+        var files = e.target.files === undefined ? (e.target && e.target.value ? [{name: e.target.value.replace(/^.+\\/, '')}] : []) : e.target.files
 
-      reader.onload = function(re) {
-        var $img = $('<img>')
-        $img[0].src = re.target.result
-        files[0].result = re.target.result
+        e.stopPropagation()
 
-        element.find('.fileinput-filename').text(file.name)
+        if (files.length === 0) {
+            this.clear()
+            this.$element.trigger('clear.bs.fileinput')
+            return
+        }
 
-        // if parent has max-height, using `(max-)height: 100%` on child doesn't take padding and border into account
-        if (preview.css('max-height') != 'none') {
-          var mh = parseInt(preview.css('max-height'), 10) || 0
-          var pt = parseInt(preview.css('padding-top'), 10) || 0
-          var pb = parseInt(preview.css('padding-bottom'), 10) || 0
-          var bt = parseInt(preview.css('border-top'), 10) || 0
-          var bb = parseInt(preview.css('border-bottom'), 10) || 0
+        if (!this.verifySizes(files)) {
+            this.$element.trigger('max_size.bs.fileinput')
 
-          $img.css('max-height', mh - pt - pb - bt - bb)
+            this.clear()
+            this.$element.trigger('clear.bs.fileinput')
+            return
         }
 
-        preview.html($img)
-        if (Fileinput.options.exif) {
-          //Fix image tranformation if this is possible
-          Fileinput.setImageTransform($img, file);
+        this.$hidden.val('')
+        this.$hidden.attr('name', '')
+        this.$input.attr('name', this.name)
+
+        var file = files[0]
+
+        if (this.$preview.length > 0 && (typeof file.type !== "undefined" ? file.type.match(/^image\/(gif|png|jpeg|svg\+xml)$/) : file.name.match(/\.(gif|png|jpe?g|svg)$/i)) && typeof FileReader !== "undefined") {
+            var Fileinput = this
+            var reader = new FileReader()
+            var preview = this.$preview
+            var element = this.$element
+
+            reader.onload = function (re) {
+                var $img = $('<img>')
+                $img[0].src = re.target.result
+                files[0].result = re.target.result
+
+                element.find('.fileinput-filename').text(file.name)
+
+                // if parent has max-height, using `(max-)height: 100%` on child doesn't take padding and border into account
+                if (preview.css('max-height') != 'none') {
+                    var mh = parseInt(preview.css('max-height'), 10) || 0
+                    var pt = parseInt(preview.css('padding-top'), 10) || 0
+                    var pb = parseInt(preview.css('padding-bottom'), 10) || 0
+                    var bt = parseInt(preview.css('border-top'), 10) || 0
+                    var bb = parseInt(preview.css('border-bottom'), 10) || 0
+
+                    $img.css('max-height', mh - pt - pb - bt - bb)
+                }
+
+                preview.html($img)
+                if (Fileinput.options.exif) {
+                    //Fix image tranformation if this is possible
+                    Fileinput.setImageTransform($img, file);
+                }
+                element.addClass('fileinput-exists').removeClass('fileinput-new')
+
+                element.trigger('change.bs.fileinput', files)
+            }
+
+            reader.readAsDataURL(file)
+        } else {
+            var text = file.name
+            var $nameView = this.$element.find('.fileinput-filename')
+
+            if (files.length > 1) {
+                text = $.map(files, function (file) {
+                    return file.name;
+                }).join(', ')
+            }
+
+            $nameView.text(text)
+            this.$preview.text(file.name)
+            this.$element.addClass('fileinput-exists').removeClass('fileinput-new')
+            this.$element.trigger('change.bs.fileinput')
         }
-        element.addClass('fileinput-exists').removeClass('fileinput-new')
-
-        element.trigger('change.bs.fileinput', files)
-      }
-
-      reader.readAsDataURL(file)
-    } else {
-      var text = file.name
-      var $nameView = this.$element.find('.fileinput-filename')
-
-      if (files.length > 1) {
-        text = $.map(files, function(file) {
-          return file.name;
-        }).join(', ')
-      }
-
-      $nameView.text(text)
-      this.$preview.text(file.name)
-      this.$element.addClass('fileinput-exists').removeClass('fileinput-new')
-      this.$element.trigger('change.bs.fileinput')
-    }
-  },
-
-  Fileinput.prototype.setImageTransform = function($img, file) {
-      var Fileinput = this;
-      var reader = new FileReader();
-      reader.onload = function(me) {
-        var transform = false;
-        var view = new DataView(reader.result);
-        var exif = Fileinput.getImageExif(view);
-        if (exif) {
-            Fileinput.resetOrientation($img, exif);
+    },
+
+        Fileinput.prototype.setImageTransform = function ($img, file) {
+            var Fileinput = this;
+            var reader = new FileReader();
+            reader.onload = function (me) {
+                var transform = false;
+                var view = new DataView(reader.result);
+                var exif = Fileinput.getImageExif(view);
+                if (exif) {
+                    Fileinput.resetOrientation($img, exif);
+                }
+            }
+
+            reader.readAsArrayBuffer(file);
         }
-      }
-
-      reader.readAsArrayBuffer(file);
-  }
 
-  Fileinput.prototype.getImageExif = function(view) {
-    if (view.getUint16(0, false) != 0xFFD8) {
-      return -2;
-    }
-    var length = view.byteLength, offset = 2;
-    while (offset < length) {
-      var marker = view.getUint16(offset, false);
-          offset += 2;
-      if (marker == 0xFFE1) {
-        if (view.getUint32(offset += 2, false) != 0x45786966) {
-          return -1;
+    Fileinput.prototype.getImageExif = function (view) {
+        if (view.getUint16(0, false) != 0xFFD8) {
+            return -2;
         }
-        var little = view.getUint16(offset += 6, false) == 0x4949;
-            offset += view.getUint32(offset + 4, little);
-        var tags = view.getUint16(offset, little);
+        var length = view.byteLength, offset = 2;
+        while (offset < length) {
+            var marker = view.getUint16(offset, false);
             offset += 2;
-        for (var i = 0; i < tags; i++)   {
-          if (view.getUint16(offset + (i * 12), little) == 0x0112) {
-            return view.getUint16(offset + (i * 12) + 8, little);
-          }
+            if (marker == 0xFFE1) {
+                if (view.getUint32(offset += 2, false) != 0x45786966) {
+                    return -1;
+                }
+                var little = view.getUint16(offset += 6, false) == 0x4949;
+                offset += view.getUint32(offset + 4, little);
+                var tags = view.getUint16(offset, little);
+                offset += 2;
+                for (var i = 0; i < tags; i++) {
+                    if (view.getUint16(offset + (i * 12), little) == 0x0112) {
+                        return view.getUint16(offset + (i * 12) + 8, little);
+                    }
+                }
+            } else if ((marker & 0xFF00) != 0xFF00) {
+                break;
+            } else {
+                offset += view.getUint16(offset, false);
+            }
         }
-      }
-      else if ((marker & 0xFF00) != 0xFF00){
-         break;
-      } else {
-        offset += view.getUint16(offset, false);
-      }
-    }
 
-    return -1;
-  }
-
-  Fileinput.prototype.resetOrientation = function($img, transform) {
-  var img = new Image();
-
-  img.onload = function() {
-    var width = img.width,
-        height = img.height,
-        canvas = document.createElement('canvas'),
-        ctx = canvas.getContext("2d");
-
-    // set proper canvas dimensions before transform & export
-    if ([5,6,7,8].indexOf(transform) > -1) {
-      canvas.width = height;
-      canvas.height = width;
-    } else {
-      canvas.width = width;
-      canvas.height = height;
+        return -1;
     }
 
-    // transform context before drawing image
-    switch (transform) {
-      case 2: ctx.transform(-1, 0, 0, 1, width, 0); break;
-      case 3: ctx.transform(-1, 0, 0, -1, width, height ); break;
-      case 4: ctx.transform(1, 0, 0, -1, 0, height ); break;
-      case 5: ctx.transform(0, 1, 1, 0, 0, 0); break;
-      case 6: ctx.transform(0, 1, -1, 0, height , 0); break;
-      case 7: ctx.transform(0, -1, -1, 0, height , width); break;
-      case 8: ctx.transform(0, -1, 1, 0, 0, width); break;
-      default: ctx.transform(1, 0, 0, 1, 0, 0);
-    }
-
-    // draw image
-    ctx.drawImage(img, 0, 0);
-
-    // export base64
-    $img.attr('src', canvas.toDataURL());
-  };
-
-  img.src = $img.attr('src');
-};
-
-  Fileinput.prototype.clear = function(e) {
-    if (e) e.preventDefault()
-
-    this.$hidden.val('')
-    this.$hidden.attr('name', this.name)
-    if (this.options.clearName) this.$input.attr('name', '')
-
-    //ie8+ doesn't support changing the value of input with type=file so clone instead
-    if (isIE) {
-      var inputClone = this.$input.clone(true);
-      this.$input.after(inputClone);
-      this.$input.remove();
-      this.$input = inputClone;
-    } else {
-      this.$input.val('')
-    }
+    Fileinput.prototype.resetOrientation = function ($img, transform) {
+        var img = new Image();
+
+        img.onload = function () {
+            var width = img.width,
+                height = img.height,
+                canvas = document.createElement('canvas'),
+                ctx = canvas.getContext("2d");
+
+            // set proper canvas dimensions before transform & export
+            if ([5, 6, 7, 8].indexOf(transform) > -1) {
+                canvas.width = height;
+                canvas.height = width;
+            } else {
+                canvas.width = width;
+                canvas.height = height;
+            }
+
+            // transform context before drawing image
+            switch (transform) {
+                case 2:
+                    ctx.transform(-1, 0, 0, 1, width, 0);
+                    break;
+                case 3:
+                    ctx.transform(-1, 0, 0, -1, width, height);
+                    break;
+                case 4:
+                    ctx.transform(1, 0, 0, -1, 0, height);
+                    break;
+                case 5:
+                    ctx.transform(0, 1, 1, 0, 0, 0);
+                    break;
+                case 6:
+                    ctx.transform(0, 1, -1, 0, height, 0);
+                    break;
+                case 7:
+                    ctx.transform(0, -1, -1, 0, height, width);
+                    break;
+                case 8:
+                    ctx.transform(0, -1, 1, 0, 0, width);
+                    break;
+                default:
+                    ctx.transform(1, 0, 0, 1, 0, 0);
+            }
+
+            // draw image
+            ctx.drawImage(img, 0, 0);
+
+            // export base64
+            $img.attr('src', canvas.toDataURL());
+        };
+
+        img.src = $img.attr('src');
+    };
+
+    Fileinput.prototype.clear = function (e) {
+        if (e) e.preventDefault()
+
+        this.$hidden.val('')
+        this.$hidden.attr('name', this.name)
+        if (this.options.clearName) this.$input.attr('name', '')
+
+        //ie8+ doesn't support changing the value of input with type=file so clone instead
+        if (isIE) {
+            var inputClone = this.$input.clone(true);
+            this.$input.after(inputClone);
+            this.$input.remove();
+            this.$input = inputClone;
+        } else {
+            this.$input.val('')
+        }
 
-    this.$preview.html('')
-    this.$element.find('.fileinput-filename').text('')
-    this.$element.addClass('fileinput-new').removeClass('fileinput-exists')
+        this.$preview.html('')
+        this.$element.find('.fileinput-filename').text('')
+        this.$element.addClass('fileinput-new').removeClass('fileinput-exists')
 
-    if (e !== undefined) {
-      this.$input.trigger('change')
-      this.$element.trigger('clear.bs.fileinput')
-    }
-  },
+        if (e !== undefined) {
+            this.$input.trigger('change')
+            this.$element.trigger('clear.bs.fileinput')
+        }
+    },
 
-  Fileinput.prototype.reset = function() {
-    this.clear()
+        Fileinput.prototype.reset = function () {
+            this.clear()
 
-    this.$hidden.val(this.original.hiddenVal)
-    this.$preview.html(this.original.preview)
-    this.$element.find('.fileinput-filename').text('')
+            this.$hidden.val(this.original.hiddenVal)
+            this.$preview.html(this.original.preview)
+            this.$element.find('.fileinput-filename').text('')
 
-    if (this.original.exists) this.$element.addClass('fileinput-exists').removeClass('fileinput-new')
-     else this.$element.addClass('fileinput-new').removeClass('fileinput-exists')
+            if (this.original.exists) this.$element.addClass('fileinput-exists').removeClass('fileinput-new')
+            else this.$element.addClass('fileinput-new').removeClass('fileinput-exists')
 
-    this.$element.trigger('reseted.bs.fileinput')
-  },
+            this.$element.trigger('reseted.bs.fileinput')
+        },
 
-  Fileinput.prototype.trigger = function(e) {
-    this.$input.trigger('click')
-    e.preventDefault()
-  }
+        Fileinput.prototype.trigger = function (e) {
+            this.$input.trigger('click')
+            e.preventDefault()
+        }
 
 
-  // FILEUPLOAD PLUGIN DEFINITION
-  // ===========================
+    // FILEUPLOAD PLUGIN DEFINITION
+    // ===========================
 
-  var old = $.fn.fileinput
+    var old = $.fn.fileinput
 
-  $.fn.fileinput = function (options) {
-    return this.each(function () {
-      var $this = $(this),
-          data = $this.data('bs.fileinput')
-      if (!data) $this.data('bs.fileinput', (data = new Fileinput(this, options)))
-      if (typeof options == 'string') data[options]()
-    })
-  }
+    $.fn.fileinput = function (options) {
+        return this.each(function () {
+            var $this = $(this),
+                data = $this.data('bs.fileinput')
+            if (!data) $this.data('bs.fileinput', (data = new Fileinput(this, options)))
+            if (typeof options == 'string') data[options]()
+        })
+    }
 
-  $.fn.fileinput.Constructor = Fileinput
+    $.fn.fileinput.Constructor = Fileinput
 
 
-  // FILEINPUT NO CONFLICT
-  // ====================
+    // FILEINPUT NO CONFLICT
+    // ====================
 
-  $.fn.fileinput.noConflict = function () {
-    $.fn.fileinput = old
-    return this
-  }
+    $.fn.fileinput.noConflict = function () {
+        $.fn.fileinput = old
+        return this
+    }
 
 
-  // FILEUPLOAD DATA-API
-  // ==================
+    // FILEUPLOAD DATA-API
+    // ==================
 
-  $(document).on('click.fileinput.data-api', '[data-provides="fileinput"]', function (e) {
-    var $this = $(this)
-    if ($this.data('bs.fileinput')) return
-    $this.fileinput($this.data())
+    $(document).on('click.fileinput.data-api', '[data-provides="fileinput"]', function (e) {
+        var $this = $(this)
+        if ($this.data('bs.fileinput')) return
+        $this.fileinput($this.data())
 
-    var $target = $(e.target).closest('[data-dismiss="fileinput"],[data-trigger="fileinput"]');
-    if ($target.length > 0) {
-      e.preventDefault()
-      $target.trigger('click.bs.fileinput')
-    }
-  })
+        var $target = $(e.target).closest('[data-dismiss="fileinput"],[data-trigger="fileinput"]');
+        if ($target.length > 0) {
+            e.preventDefault()
+            $target.trigger('click.bs.fileinput')
+        }
+    })
 
 }(window.jQuery);

+ 352 - 79
zhjq-admin/src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/default/zTreeStyle.css

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

+ 428 - 86
zhjq-admin/src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/metro/zTreeStyle.css

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

+ 450 - 96
zhjq-admin/src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/simple/zTreeStyle.css

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

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 3811 - 3765
zhjq-admin/src/main/resources/static/ajax/libs/jquery-ztree/3.5/js/jquery.ztree.all-3.5.js


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 1645 - 1609
zhjq-admin/src/main/resources/static/ajax/libs/jquery-ztree/3.5/js/jquery.ztree.core-3.5.js


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 598 - 594
zhjq-admin/src/main/resources/static/ajax/libs/jquery-ztree/3.5/js/jquery.ztree.excheck-3.5.js


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 1171 - 1165
zhjq-admin/src/main/resources/static/ajax/libs/jquery-ztree/3.5/js/jquery.ztree.exedit-3.5.js


+ 342 - 341
zhjq-admin/src/main/resources/static/ajax/libs/jquery-ztree/3.5/js/jquery.ztree.exhide-3.5.js

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

+ 65 - 34
zhjq-admin/src/main/resources/static/ajax/libs/jsonview/jquery.jsonview.css

@@ -1,50 +1,81 @@
 @charset "UTF-8";
 .jsonview {
-  font-family: monospace;
-  font-size: 1.1em;
-  white-space: pre-wrap; }
-  .jsonview .prop {
-    font-weight: bold; }
-  .jsonview .null {
-    color: red; }
-  .jsonview .bool {
-    color: blue; }
-  .jsonview .num {
-    color: blue; }
-  .jsonview .string {
+    font-family: monospace;
+    font-size: 1.1em;
+    white-space: pre-wrap;
+}
+
+.jsonview .prop {
+    font-weight: bold;
+}
+
+.jsonview .null {
+    color: red;
+}
+
+.jsonview .bool {
+    color: blue;
+}
+
+.jsonview .num {
+    color: blue;
+}
+
+.jsonview .string {
     color: green;
-    white-space: pre-wrap; }
-    .jsonview .string.multiline {
-      display: inline-block;
-      vertical-align: text-top; }
-  .jsonview .collapser {
+    white-space: pre-wrap;
+}
+
+.jsonview .string.multiline {
+    display: inline-block;
+    vertical-align: text-top;
+}
+
+.jsonview .collapser {
     position: absolute;
     left: -1em;
-    cursor: pointer; }
-  .jsonview .collapsible {
+    cursor: pointer;
+}
+
+.jsonview .collapsible {
     transition: height 1.2s;
-    transition: width 1.2s; }
-  .jsonview .collapsible.collapsed {
+    transition: width 1.2s;
+}
+
+.jsonview .collapsible.collapsed {
     height: .8em;
     width: 1em;
     display: inline-block;
     overflow: hidden;
-    margin: 0; }
-  .jsonview .collapsible.collapsed:before {
+    margin: 0;
+}
+
+.jsonview .collapsible.collapsed:before {
     content: "…";
     width: 1em;
-    margin-left: .2em; }
-  .jsonview .collapser.collapsed {
-    transform: rotate(0deg); }
-  .jsonview .q {
+    margin-left: .2em;
+}
+
+.jsonview .collapser.collapsed {
+    transform: rotate(0deg);
+}
+
+.jsonview .q {
     display: inline-block;
     width: 0px;
-    color: transparent; }
-  .jsonview li {
-    position: relative; }
-  .jsonview ul {
+    color: transparent;
+}
+
+.jsonview li {
+    position: relative;
+}
+
+.jsonview ul {
     list-style: none;
     margin: 0 0 0 2em;
-    padding: 0; }
-  .jsonview h1 {
-    font-size: 1.2em; }
+    padding: 0;
+}
+
+.jsonview h1 {
+    font-size: 1.2em;
+}

+ 234 - 234
zhjq-admin/src/main/resources/static/ajax/libs/jsonview/jquery.jsonview.js

@@ -1,250 +1,250 @@
-(function(jQuery) {
-  var $, Collapser, JSONFormatter, JSONView;
-  JSONFormatter = (function() {
-    function JSONFormatter(options) {
-      if (options == null) {
-        options = {};
-      }
-      this.options = options;
-    }
+(function (jQuery) {
+    var $, Collapser, JSONFormatter, JSONView;
+    JSONFormatter = (function () {
+        function JSONFormatter(options) {
+            if (options == null) {
+                options = {};
+            }
+            this.options = options;
+        }
 
-    JSONFormatter.prototype.htmlEncode = function(html) {
-      if (html !== null) {
-        return html.toString().replace(/&/g, "&amp;").replace(/"/g, "&quot;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
-      } else {
-        return '';
-      }
-    };
+        JSONFormatter.prototype.htmlEncode = function (html) {
+            if (html !== null) {
+                return html.toString().replace(/&/g, "&amp;").replace(/"/g, "&quot;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
+            } else {
+                return '';
+            }
+        };
 
-    JSONFormatter.prototype.jsString = function(s) {
-      s = JSON.stringify(s).slice(1, -1);
-      return this.htmlEncode(s);
-    };
+        JSONFormatter.prototype.jsString = function (s) {
+            s = JSON.stringify(s).slice(1, -1);
+            return this.htmlEncode(s);
+        };
 
-    JSONFormatter.prototype.decorateWithSpan = function(value, className) {
-      return "<span class=\"" + className + "\">" + (this.htmlEncode(value)) + "</span>";
-    };
+        JSONFormatter.prototype.decorateWithSpan = function (value, className) {
+            return "<span class=\"" + className + "\">" + (this.htmlEncode(value)) + "</span>";
+        };
 
-    JSONFormatter.prototype.valueToHTML = function(value, level) {
-      var valueType;
-      if (level == null) {
-        level = 0;
-      }
-      valueType = Object.prototype.toString.call(value).match(/\s(.+)]/)[1].toLowerCase();
-      return this["" + valueType + "ToHTML"].call(this, value, level);
-    };
+        JSONFormatter.prototype.valueToHTML = function (value, level) {
+            var valueType;
+            if (level == null) {
+                level = 0;
+            }
+            valueType = Object.prototype.toString.call(value).match(/\s(.+)]/)[1].toLowerCase();
+            return this["" + valueType + "ToHTML"].call(this, value, level);
+        };
 
-    JSONFormatter.prototype.nullToHTML = function(value) {
-      return this.decorateWithSpan('null', 'null');
-    };
+        JSONFormatter.prototype.nullToHTML = function (value) {
+            return this.decorateWithSpan('null', 'null');
+        };
 
-    JSONFormatter.prototype.numberToHTML = function(value) {
-      return this.decorateWithSpan(value, 'num');
-    };
+        JSONFormatter.prototype.numberToHTML = function (value) {
+            return this.decorateWithSpan(value, 'num');
+        };
 
-    JSONFormatter.prototype.stringToHTML = function(value) {
-      var multilineClass, newLinePattern;
-      if (/^(http|https|file):\/\/[^\s]+$/i.test(value)) {
-        return "<a href=\"" + (this.htmlEncode(value)) + "\"><span class=\"q\">\"</span>" + (this.jsString(value)) + "<span class=\"q\">\"</span></a>";
-      } else {
-        multilineClass = '';
-        value = this.jsString(value);
-        if (this.options.nl2br) {
-          newLinePattern = /([^>\\r\\n]?)(\\r\\n|\\n\\r|\\r|\\n)/g;
-          if (newLinePattern.test(value)) {
-            multilineClass = ' multiline';
-            value = (value + '').replace(newLinePattern, '$1' + '<br />');
-          }
-        }
-        return "<span class=\"string" + multilineClass + "\">\"" + value + "\"</span>";
-      }
-    };
+        JSONFormatter.prototype.stringToHTML = function (value) {
+            var multilineClass, newLinePattern;
+            if (/^(http|https|file):\/\/[^\s]+$/i.test(value)) {
+                return "<a href=\"" + (this.htmlEncode(value)) + "\"><span class=\"q\">\"</span>" + (this.jsString(value)) + "<span class=\"q\">\"</span></a>";
+            } else {
+                multilineClass = '';
+                value = this.jsString(value);
+                if (this.options.nl2br) {
+                    newLinePattern = /([^>\\r\\n]?)(\\r\\n|\\n\\r|\\r|\\n)/g;
+                    if (newLinePattern.test(value)) {
+                        multilineClass = ' multiline';
+                        value = (value + '').replace(newLinePattern, '$1' + '<br />');
+                    }
+                }
+                return "<span class=\"string" + multilineClass + "\">\"" + value + "\"</span>";
+            }
+        };
 
-    JSONFormatter.prototype.booleanToHTML = function(value) {
-      return this.decorateWithSpan(value, 'bool');
-    };
+        JSONFormatter.prototype.booleanToHTML = function (value) {
+            return this.decorateWithSpan(value, 'bool');
+        };
 
-    JSONFormatter.prototype.arrayToHTML = function(array, level) {
-      var collapsible, hasContents, index, numProps, output, value, _i, _len;
-      if (level == null) {
-        level = 0;
-      }
-      hasContents = false;
-      output = '';
-      numProps = array.length;
-      for (index = _i = 0, _len = array.length; _i < _len; index = ++_i) {
-        value = array[index];
-        hasContents = true;
-        output += '<li>' + this.valueToHTML(value, level + 1);
-        if (numProps > 1) {
-          output += ',';
-        }
-        output += '</li>';
-        numProps--;
-      }
-      if (hasContents) {
-        collapsible = level === 0 ? '' : ' collapsible';
-        return "[<ul class=\"array level" + level + collapsible + "\">" + output + "</ul>]";
-      } else {
-        return '[ ]';
-      }
-    };
+        JSONFormatter.prototype.arrayToHTML = function (array, level) {
+            var collapsible, hasContents, index, numProps, output, value, _i, _len;
+            if (level == null) {
+                level = 0;
+            }
+            hasContents = false;
+            output = '';
+            numProps = array.length;
+            for (index = _i = 0, _len = array.length; _i < _len; index = ++_i) {
+                value = array[index];
+                hasContents = true;
+                output += '<li>' + this.valueToHTML(value, level + 1);
+                if (numProps > 1) {
+                    output += ',';
+                }
+                output += '</li>';
+                numProps--;
+            }
+            if (hasContents) {
+                collapsible = level === 0 ? '' : ' collapsible';
+                return "[<ul class=\"array level" + level + collapsible + "\">" + output + "</ul>]";
+            } else {
+                return '[ ]';
+            }
+        };
 
-    JSONFormatter.prototype.objectToHTML = function(object, level) {
-      var collapsible, hasContents, numProps, output, prop, value;
-      if (level == null) {
-        level = 0;
-      }
-      hasContents = false;
-      output = '';
-      numProps = 0;
-      for (prop in object) {
-        numProps++;
-      }
-      for (prop in object) {
-        value = object[prop];
-        hasContents = true;
-        output += "<li><span class=\"prop\"><span class=\"q\">\"</span>" + (this.jsString(prop)) + "<span class=\"q\">\"</span></span>: " + (this.valueToHTML(value, level + 1));
-        if (numProps > 1) {
-          output += ',';
-        }
-        output += '</li>';
-        numProps--;
-      }
-      if (hasContents) {
-        collapsible = level === 0 ? '' : ' collapsible';
-        return "{<ul class=\"obj level" + level + collapsible + "\">" + output + "</ul>}";
-      } else {
-        return '{ }';
-      }
-    };
+        JSONFormatter.prototype.objectToHTML = function (object, level) {
+            var collapsible, hasContents, numProps, output, prop, value;
+            if (level == null) {
+                level = 0;
+            }
+            hasContents = false;
+            output = '';
+            numProps = 0;
+            for (prop in object) {
+                numProps++;
+            }
+            for (prop in object) {
+                value = object[prop];
+                hasContents = true;
+                output += "<li><span class=\"prop\"><span class=\"q\">\"</span>" + (this.jsString(prop)) + "<span class=\"q\">\"</span></span>: " + (this.valueToHTML(value, level + 1));
+                if (numProps > 1) {
+                    output += ',';
+                }
+                output += '</li>';
+                numProps--;
+            }
+            if (hasContents) {
+                collapsible = level === 0 ? '' : ' collapsible';
+                return "{<ul class=\"obj level" + level + collapsible + "\">" + output + "</ul>}";
+            } else {
+                return '{ }';
+            }
+        };
 
-    JSONFormatter.prototype.jsonToHTML = function(json) {
-      return "<div class=\"jsonview\">" + (this.valueToHTML(json)) + "</div>";
-    };
+        JSONFormatter.prototype.jsonToHTML = function (json) {
+            return "<div class=\"jsonview\">" + (this.valueToHTML(json)) + "</div>";
+        };
 
-    return JSONFormatter;
+        return JSONFormatter;
 
-  })();
-  (typeof module !== "undefined" && module !== null) && (module.exports = JSONFormatter);
-  Collapser = {
-    bindEvent: function(item, collapsed) {
-      var collapser;
-      collapser = document.createElement('div');
-      collapser.className = 'collapser';
-      collapser.innerHTML = collapsed ? '+' : '-';
-      collapser.addEventListener('click', (function(_this) {
-        return function(event) {
-          return _this.toggle(event.target);
-        };
-      })(this));
-      item.insertBefore(collapser, item.firstChild);
-      if (collapsed) {
-        return this.collapse(collapser);
-      }
-    },
-    expand: function(collapser) {
-      var ellipsis, target;
-      target = this.collapseTarget(collapser);
-      ellipsis = target.parentNode.getElementsByClassName('ellipsis')[0];
-      target.parentNode.removeChild(ellipsis);
-      target.style.display = '';
-      return collapser.innerHTML = '-';
-    },
-    collapse: function(collapser) {
-      var ellipsis, target;
-      target = this.collapseTarget(collapser);
-      target.style.display = 'none';
-      ellipsis = document.createElement('span');
-      ellipsis.className = 'ellipsis';
-      ellipsis.innerHTML = ' &hellip; ';
-      target.parentNode.insertBefore(ellipsis, target);
-      return collapser.innerHTML = '+';
-    },
-    toggle: function(collapser) {
-      var target;
-      target = this.collapseTarget(collapser);
-      if (target.style.display === 'none') {
-        return this.expand(collapser);
-      } else {
-        return this.collapse(collapser);
-      }
-    },
-    collapseTarget: function(collapser) {
-      var target, targets;
-      targets = collapser.parentNode.getElementsByClassName('collapsible');
-      if (!targets.length) {
-        return;
-      }
-      return target = targets[0];
-    }
-  };
-  $ = jQuery;
-  JSONView = {
-    collapse: function(el) {
-      if (el.innerHTML === '-') {
-        return Collapser.collapse(el);
-      }
-    },
-    expand: function(el) {
-      if (el.innerHTML === '+') {
-        return Collapser.expand(el);
-      }
-    },
-    toggle: function(el) {
-      return Collapser.toggle(el);
-    }
-  };
-  return $.fn.JSONView = function() {
-    var args, defaultOptions, formatter, json, method, options, outputDoc;
-    args = arguments;
-    if (JSONView[args[0]] != null) {
-      method = args[0];
-      return this.each(function() {
-        var $this, level;
-        $this = $(this);
-        if (args[1] != null) {
-          level = args[1];
-          return $this.find(".jsonview .collapsible.level" + level).siblings('.collapser').each(function() {
-            return JSONView[method](this);
-          });
-        } else {
-          return $this.find('.jsonview > ul > li > .collapsible').siblings('.collapser').each(function() {
-            return JSONView[method](this);
-          });
+    })();
+    (typeof module !== "undefined" && module !== null) && (module.exports = JSONFormatter);
+    Collapser = {
+        bindEvent: function (item, collapsed) {
+            var collapser;
+            collapser = document.createElement('div');
+            collapser.className = 'collapser';
+            collapser.innerHTML = collapsed ? '+' : '-';
+            collapser.addEventListener('click', (function (_this) {
+                return function (event) {
+                    return _this.toggle(event.target);
+                };
+            })(this));
+            item.insertBefore(collapser, item.firstChild);
+            if (collapsed) {
+                return this.collapse(collapser);
+            }
+        },
+        expand: function (collapser) {
+            var ellipsis, target;
+            target = this.collapseTarget(collapser);
+            ellipsis = target.parentNode.getElementsByClassName('ellipsis')[0];
+            target.parentNode.removeChild(ellipsis);
+            target.style.display = '';
+            return collapser.innerHTML = '-';
+        },
+        collapse: function (collapser) {
+            var ellipsis, target;
+            target = this.collapseTarget(collapser);
+            target.style.display = 'none';
+            ellipsis = document.createElement('span');
+            ellipsis.className = 'ellipsis';
+            ellipsis.innerHTML = ' &hellip; ';
+            target.parentNode.insertBefore(ellipsis, target);
+            return collapser.innerHTML = '+';
+        },
+        toggle: function (collapser) {
+            var target;
+            target = this.collapseTarget(collapser);
+            if (target.style.display === 'none') {
+                return this.expand(collapser);
+            } else {
+                return this.collapse(collapser);
+            }
+        },
+        collapseTarget: function (collapser) {
+            var target, targets;
+            targets = collapser.parentNode.getElementsByClassName('collapsible');
+            if (!targets.length) {
+                return;
+            }
+            return target = targets[0];
+        }
+    };
+    $ = jQuery;
+    JSONView = {
+        collapse: function (el) {
+            if (el.innerHTML === '-') {
+                return Collapser.collapse(el);
+            }
+        },
+        expand: function (el) {
+            if (el.innerHTML === '+') {
+                return Collapser.expand(el);
+            }
+        },
+        toggle: function (el) {
+            return Collapser.toggle(el);
         }
-      });
-    } else {
-      json = args[0];
-      options = args[1] || {};
-      defaultOptions = {
-        collapsed: false,
-        nl2br: false
-      };
-      options = $.extend(defaultOptions, options);
-      formatter = new JSONFormatter({
-        nl2br: options.nl2br
-      });
-      if (Object.prototype.toString.call(json) === '[object String]') {
-        json = JSON.parse(json);
-      }
-      outputDoc = formatter.jsonToHTML(json);
-      return this.each(function() {
-        var $this, item, items, _i, _len, _results;
-        $this = $(this);
-        $this.html(outputDoc);
-        items = $this[0].getElementsByClassName('collapsible');
-        _results = [];
-        for (_i = 0, _len = items.length; _i < _len; _i++) {
-          item = items[_i];
-          if (item.parentNode.nodeName === 'LI') {
-            _results.push(Collapser.bindEvent(item.parentNode, options.collapsed));
-          } else {
-            _results.push(void 0);
-          }
+    };
+    return $.fn.JSONView = function () {
+        var args, defaultOptions, formatter, json, method, options, outputDoc;
+        args = arguments;
+        if (JSONView[args[0]] != null) {
+            method = args[0];
+            return this.each(function () {
+                var $this, level;
+                $this = $(this);
+                if (args[1] != null) {
+                    level = args[1];
+                    return $this.find(".jsonview .collapsible.level" + level).siblings('.collapser').each(function () {
+                        return JSONView[method](this);
+                    });
+                } else {
+                    return $this.find('.jsonview > ul > li > .collapsible').siblings('.collapser').each(function () {
+                        return JSONView[method](this);
+                    });
+                }
+            });
+        } else {
+            json = args[0];
+            options = args[1] || {};
+            defaultOptions = {
+                collapsed: false,
+                nl2br: false
+            };
+            options = $.extend(defaultOptions, options);
+            formatter = new JSONFormatter({
+                nl2br: options.nl2br
+            });
+            if (Object.prototype.toString.call(json) === '[object String]') {
+                json = JSON.parse(json);
+            }
+            outputDoc = formatter.jsonToHTML(json);
+            return this.each(function () {
+                var $this, item, items, _i, _len, _results;
+                $this = $(this);
+                $this.html(outputDoc);
+                items = $this[0].getElementsByClassName('collapsible');
+                _results = [];
+                for (_i = 0, _len = items.length; _i < _len; _i++) {
+                    item = items[_i];
+                    if (item.parentNode.nodeName === 'LI') {
+                        _results.push(Collapser.bindEvent(item.parentNode, options.collapsed));
+                    } else {
+                        _results.push(void 0);
+                    }
+                }
+                return _results;
+            });
         }
-        return _results;
-      });
-    }
-  };
+    };
 })(jQuery);

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 1146 - 199
zhjq-admin/src/main/resources/static/ajax/libs/layer/css/layer.css


+ 193 - 96
zhjq-admin/src/main/resources/static/ajax/libs/layer/theme/moon/style.css

@@ -3,167 +3,264 @@
  * Copyright (c) 2019 ruoyi
  */
 html #layui_layer_skinmoonstylecss {
-	display: none;
-	position: absolute;
-	width: 1989px;
+    display: none;
+    position: absolute;
+    width: 1989px;
 }
 
 body .layer-ext-moon[type="dialog"] {
-	min-width: 320px;
+    min-width: 320px;
 }
-body .layer-ext-moon-msg[type="dialog"]{min-width:200px;}
+
+body .layer-ext-moon-msg[type="dialog"] {
+    min-width: 200px;
+}
+
 body .layer-ext-moon .layui-layer-title {
-	background: #F8F8F8;
-	color: #333;
-	font-size: 14px;
-	height: 42px;
-	line-height: 42px;
+    background: #F8F8F8;
+    color: #333;
+    font-size: 14px;
+    height: 42px;
+    line-height: 42px;
     border: none;
 }
 
 body .layer-ext-moon .layui-layer-content .layui-layer-face {
-	height: 32px;
-	width: 32px;
-	top:18.5px;
+    height: 32px;
+    width: 32px;
+    top: 18.5px;
 }
+
 body .layer-ext-moon .layui-icon-tips {
-	background: url(default.png) no-repeat -96px 0;
+    background: url(default.png) no-repeat -96px 0;
 }
+
 body .layer-ext-moon .layui-icon-success {
-	background: url(default.png) no-repeat -224px 0;
+    background: url(default.png) no-repeat -224px 0;
 }
+
 body .layer-ext-moon .layui-icon-error {
-	background: url(default.png) no-repeat -192px 0;
+    background: url(default.png) no-repeat -192px 0;
 }
+
 body .layer-ext-moon .layui-icon-question {
-	background: url(default.png) no-repeat -160px 0;
+    background: url(default.png) no-repeat -160px 0;
 }
+
 body .layer-ext-moon .layui-icon-lock {
-	background: url(default.png) no-repeat -320px 0;
+    background: url(default.png) no-repeat -320px 0;
 }
+
 body .layer-ext-moon .layui-icon-face-cry {
-	background: url(default.png) no-repeat -288px 0;
+    background: url(default.png) no-repeat -288px 0;
 }
+
 body .layer-ext-moon .layui-icon-face-smile {
-	background: url(default.png) -256px 0;
+    background: url(default.png) -256px 0;
 }
+
 body .layer-ext-moon .layui-layer-download {
-	background: url(default.png) no-repeat -128px 0;
+    background: url(default.png) no-repeat -128px 0;
 }
+
 body .layer-ext-moon .layui-layer-setwin {
-	top: 15px;
-	right: 15px;
+    top: 15px;
+    right: 15px;
 }
+
 body .layer-ext-moon .layui-layer-setwin a {
-	width: 16px;
-	height: 16px;
+    width: 16px;
+    height: 16px;
 }
+
 body .layer-ext-moon .layui-layer-setwin .layui-layer-min cite:hover {
-	background-color: #56abe4;
+    background-color: #56abe4;
 }
+
 body .layer-ext-moon .layui-layer-setwin .layui-layer-max {
-	background: url(default.png) no-repeat -80px 0;
+    background: url(default.png) no-repeat -80px 0;
 }
+
 body .layer-ext-moon .layui-layer-setwin .layui-layer-max:hover {
-	background: url(default.png) no-repeat -64px 0;
+    background: url(default.png) no-repeat -64px 0;
 }
+
 body .layer-ext-moon .layui-layer-setwin .layui-layer-maxmin {
-	background: url(default.png) no-repeat -32px 0;
+    background: url(default.png) no-repeat -32px 0;
 }
+
 body .layer-ext-moon .layui-layer-setwin .layui-layer-maxmin:hover {
-	background: url(default.png) no-repeat -16px 0;
+    background: url(default.png) no-repeat -16px 0;
+}
+
+body .layer-ext-moon .layui-layer-setwin .layui-layer-close1, body .layer-ext-moon .layui-layer-setwin .layui-layer-close2, body .layui-layer-tab .layui-layer-setwin .layui-layer-close1, body .layui-layer-tab .layui-layer-setwin .layui-layer-close2 {
+    background: url(default.png) 0 0;
 }
-body .layer-ext-moon .layui-layer-setwin .layui-layer-close1,body .layer-ext-moon .layui-layer-setwin .layui-layer-close2, body .layui-layer-tab .layui-layer-setwin .layui-layer-close1,body .layui-layer-tab .layui-layer-setwin .layui-layer-close2 {
-	background: url(default.png) 0 0;
+
+body .layer-ext-moon .layui-layer-setwin .layui-layer-close1:hover, body .layer-ext-moon .layui-layer-setwin .layui-layer-close2:hover, body .layui-layer-tab .layui-layer-setwin .layui-layer-close1:hover, body .layui-layer-tab .layui-layer-setwin .layui-layer-close2:hover {
+    background: url(default.png) -48px 0;
 }
-body .layer-ext-moon .layui-layer-setwin .layui-layer-close1:hover,body .layer-ext-moon .layui-layer-setwin .layui-layer-close2:hover, body .layui-layer-tab .layui-layer-setwin .layui-layer-close1:hover,body .layui-layer-tab .layui-layer-setwin .layui-layer-close2:hover {
-	background: url(default.png) -48px 0;
+
+body .layer-ext-moon .layui-layer-padding {
+    padding-top: 24px;
 }
-body .layer-ext-moon .layui-layer-padding{padding-top: 24px;}
+
 body .layer-ext-moon .layui-layer-btn {
     text-align: right;
     padding: 10px 15px 12px;
-	background: #f0f4f7;
-	border-top: 1px #c7c7c7 solid;
+    background: #f0f4f7;
+    border-top: 1px #c7c7c7 solid;
 }
+
 body .layer-ext-moon .layui-layer-btn a {
-	font-size: 12px;
-	font-weight: normal;
-	margin: 0 3px;
-	margin-right: 7px;
-	margin-left: 7px;
-	padding: 0 15px;
-	color: #fff;
-	border: 1px solid #0064b6;
-	background: #0071ce;
-	border-radius: 3px;
-	display: inline-block;
-	height: 30px;
-	line-height: 30px;
-	text-align: center;
-	vertical-align: middle;
-	background-repeat: no-repeat;
-	text-decoration: none;
-	outline: none;
-	-moz-box-sizing: content-box;
-	-webkit-box-sizing: content-box;
-	box-sizing: content-box;
+    font-size: 12px;
+    font-weight: normal;
+    margin: 0 3px;
+    margin-right: 7px;
+    margin-left: 7px;
+    padding: 0 15px;
+    color: #fff;
+    border: 1px solid #0064b6;
+    background: #0071ce;
+    border-radius: 3px;
+    display: inline-block;
+    height: 30px;
+    line-height: 30px;
+    text-align: center;
+    vertical-align: middle;
+    background-repeat: no-repeat;
+    text-decoration: none;
+    outline: none;
+    -moz-box-sizing: content-box;
+    -webkit-box-sizing: content-box;
+    box-sizing: content-box;
 }
+
 body .layer-ext-moon .layui-layer-btn .layui-layer-btn0 {
-	background: #0071ce;
+    background: #0071ce;
 }
+
 body .layer-ext-moon .layui-layer-btn .layui-layer-btn1 {
-	background: #fff;
-	color: #404a58;
-	border: 1px solid #c0c4cd;
-	border-radius: 3px;
+    background: #fff;
+    color: #404a58;
+    border: 1px solid #c0c4cd;
+    border-radius: 3px;
 }
+
 body .layer-ext-moon .layui-layer-btn .layui-layer-btn2 {
-	background: #f60;
-	color: #fff;
-	border: 1px solid #f60;
-	border-radius: 3px;
+    background: #f60;
+    color: #fff;
+    border: 1px solid #f60;
+    border-radius: 3px;
 }
+
 body .layer-ext-moon .layui-layer-btn .layui-layer-btn3 {
-	background: #f00;
-	color: #fff;
-	border: 1px solid #f00;
-	border-radius: 3px;
+    background: #f00;
+    color: #fff;
+    border: 1px solid #f00;
+    border-radius: 3px;
 }
 
-body .layer-ext-moon .layui-layer-title span.layui-layer-tabnow{
-	height:47px;
+body .layer-ext-moon .layui-layer-title span.layui-layer-tabnow {
+    height: 47px;
 }
 
 /** 图标字体 **/
 @font-face {
-  font-family: 'layui-icon';
-  src: url('../../../../../fonts/iconfont.woff?v=282') format('woff');
+    font-family: 'layui-icon';
+    src: url('../../../../../fonts/iconfont.woff?v=282') format('woff');
 }
 
-.layui-icon{
-  font-family:"layui-icon" !important;
-  font-style: normal;
-  -webkit-font-smoothing: antialiased;
-  -moz-osx-font-smoothing: grayscale;
+.layui-icon {
+    font-family: "layui-icon" !important;
+    font-style: normal;
+    -webkit-font-smoothing: antialiased;
+    -moz-osx-font-smoothing: grayscale;
 }
+
 /* font-class */
-.layui-icon-left:before{content:"\e603"}
-.layui-icon-right:before{content:"\e602"}
-.layui-icon-refresh:before{content:"\e669"}
-.layui-icon-slider:before{content:"\e714"}
-.layui-icon-add-circle:before{content:"\e61f"}
-.layui-icon-reduce-circle:before{content:"\e616"}
-.layui-icon-refresh-1:before{content:"\e666"}
-.layui-icon-loading:before{content:"\e63d"}
-.layui-icon-loading-1:before{content:"\e63e"}
+.layui-icon-left:before {
+    content: "\e603"
+}
+
+.layui-icon-right:before {
+    content: "\e602"
+}
+
+.layui-icon-refresh:before {
+    content: "\e669"
+}
+
+.layui-icon-slider:before {
+    content: "\e714"
+}
+
+.layui-icon-add-circle:before {
+    content: "\e61f"
+}
+
+.layui-icon-reduce-circle:before {
+    content: "\e616"
+}
+
+.layui-icon-refresh-1:before {
+    content: "\e666"
+}
+
+.layui-icon-loading:before {
+    content: "\e63d"
+}
+
+.layui-icon-loading-1:before {
+    content: "\e63e"
+}
 
 /** 循环旋转动画 **/
-.layui-anim{-webkit-animation-duration: 0.3s; -webkit-animation-fill-mode: both; animation-duration: 0.3s; animation-fill-mode: both;}
-.layui-anim.layui-icon{display: inline-block;}
-.layui-anim-loop{-webkit-animation-iteration-count: infinite; animation-iteration-count: infinite;}
+.layui-anim {
+    -webkit-animation-duration: 0.3s;
+    -webkit-animation-fill-mode: both;
+    animation-duration: 0.3s;
+    animation-fill-mode: both;
+}
+
+.layui-anim.layui-icon {
+    display: inline-block;
+}
+
+.layui-anim-loop {
+    -webkit-animation-iteration-count: infinite;
+    animation-iteration-count: infinite;
+}
+
 .layui-trans,
-.layui-trans a{transition: all .2s; -webkit-transition: all .2s;}
-@-webkit-keyframes layui-rotate{from {-webkit-transform: rotate(0deg);} to {-webkit-transform: rotate(360deg);}}
-@keyframes layui-rotate{from {transform: rotate(0deg);} to {transform: rotate(360deg);}}
-.layui-anim-rotate{-webkit-animation-name: layui-rotate; animation-name: layui-rotate; -webkit-animation-duration: 1s; animation-duration: 1s;  -webkit-animation-timing-function: linear; animation-timing-function: linear;}
+.layui-trans a {
+    transition: all .2s;
+    -webkit-transition: all .2s;
+}
+
+@-webkit-keyframes layui-rotate {
+    from {
+        -webkit-transform: rotate(0deg);
+    }
+    to {
+        -webkit-transform: rotate(360deg);
+    }
+}
+
+@keyframes layui-rotate {
+    from {
+        transform: rotate(0deg);
+    }
+    to {
+        transform: rotate(360deg);
+    }
+}
+
+.layui-anim-rotate {
+    -webkit-animation-name: layui-rotate;
+    animation-name: layui-rotate;
+    -webkit-animation-duration: 1s;
+    animation-duration: 1s;
+    -webkit-animation-timing-function: linear;
+    animation-timing-function: linear;
+}

+ 442 - 295
zhjq-admin/src/main/resources/static/ajax/libs/select2/select2.css

@@ -1,201 +1,263 @@
 .select2-container {
-  box-sizing: border-box;
-  display: inline-block;
-  margin: 0;
-  position: relative;
-  vertical-align: middle; }
-  .select2-container .select2-selection--single {
+    box-sizing: border-box;
+    display: inline-block;
+    margin: 0;
+    position: relative;
+    vertical-align: middle;
+}
+
+.select2-container .select2-selection--single {
     box-sizing: border-box;
     cursor: pointer;
     display: block;
     height: 28px;
     user-select: none;
-    -webkit-user-select: none; }
-    .select2-container .select2-selection--single .select2-selection__rendered {
-      display: block;
-      padding-left: 8px;
-      padding-right: 20px;
-      overflow: hidden;
-      text-overflow: ellipsis;
-      white-space: nowrap; }
-    .select2-container .select2-selection--single .select2-selection__clear {
-      position: relative; }
-  .select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered {
+    -webkit-user-select: none;
+}
+
+.select2-container .select2-selection--single .select2-selection__rendered {
+    display: block;
+    padding-left: 8px;
+    padding-right: 20px;
+    overflow: hidden;
+    text-overflow: ellipsis;
+    white-space: nowrap;
+}
+
+.select2-container .select2-selection--single .select2-selection__clear {
+    position: relative;
+}
+
+.select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered {
     padding-right: 8px;
-    padding-left: 20px; }
-  .select2-container .select2-selection--multiple {
+    padding-left: 20px;
+}
+
+.select2-container .select2-selection--multiple {
     box-sizing: border-box;
     cursor: pointer;
     display: block;
     min-height: 32px;
     user-select: none;
-    -webkit-user-select: none; }
-    .select2-container .select2-selection--multiple .select2-selection__rendered {
-      display: inline-block;
-      overflow: hidden;
-      padding-left: 8px;
-      text-overflow: ellipsis;
-      white-space: nowrap; }
-  .select2-container .select2-search--inline {
-    float: left; }
-    .select2-container .select2-search--inline .select2-search__field {
-      box-sizing: border-box;
-      border: none;
-      font-size: 100%;
-      margin-top: 5px;
-      padding: 0; }
-      .select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button {
-        -webkit-appearance: none; }
+    -webkit-user-select: none;
+}
+
+.select2-container .select2-selection--multiple .select2-selection__rendered {
+    display: inline-block;
+    overflow: hidden;
+    padding-left: 8px;
+    text-overflow: ellipsis;
+    white-space: nowrap;
+}
+
+.select2-container .select2-search--inline {
+    float: left;
+}
+
+.select2-container .select2-search--inline .select2-search__field {
+    box-sizing: border-box;
+    border: none;
+    font-size: 100%;
+    margin-top: 5px;
+    padding: 0;
+}
+
+.select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button {
+    -webkit-appearance: none;
+}
 
 .select2-dropdown {
-  background-color: white;
-  border: 1px solid #aaa;
-  border-radius: 4px;
-  box-sizing: border-box;
-  display: block;
-  position: absolute;
-  left: -100000px;
-  width: 100%;
-  z-index: 1051; }
+    background-color: white;
+    border: 1px solid #aaa;
+    border-radius: 4px;
+    box-sizing: border-box;
+    display: block;
+    position: absolute;
+    left: -100000px;
+    width: 100%;
+    z-index: 1051;
+}
 
 .select2-results {
-  display: block; }
+    display: block;
+}
 
 .select2-results__options {
-  list-style: none;
-  margin: 0;
-  padding: 0; }
+    list-style: none;
+    margin: 0;
+    padding: 0;
+}
 
 .select2-results__option {
-  padding: 6px;
-  user-select: none;
-  -webkit-user-select: none; }
-  .select2-results__option[aria-selected] {
-    cursor: pointer; }
+    padding: 6px;
+    user-select: none;
+    -webkit-user-select: none;
+}
+
+.select2-results__option[aria-selected] {
+    cursor: pointer;
+}
 
 .select2-container--open .select2-dropdown {
-  left: 0; }
+    left: 0;
+}
 
 .select2-container--open .select2-dropdown--above {
-  border-bottom: none;
-  border-bottom-left-radius: 0;
-  border-bottom-right-radius: 0; }
+    border-bottom: none;
+    border-bottom-left-radius: 0;
+    border-bottom-right-radius: 0;
+}
 
 .select2-container--open .select2-dropdown--below {
-  border-top: none;
-  border-top-left-radius: 0;
-  border-top-right-radius: 0; }
+    border-top: none;
+    border-top-left-radius: 0;
+    border-top-right-radius: 0;
+}
 
 .select2-search--dropdown {
-  display: block;
-  padding: 4px; }
-  .select2-search--dropdown .select2-search__field {
+    display: block;
+    padding: 4px;
+}
+
+.select2-search--dropdown .select2-search__field {
     padding: 4px;
     width: 100%;
-    box-sizing: border-box; }
-    .select2-search--dropdown .select2-search__field::-webkit-search-cancel-button {
-      -webkit-appearance: none; }
-  .select2-search--dropdown.select2-search--hide {
-    display: none; }
+    box-sizing: border-box;
+}
+
+.select2-search--dropdown .select2-search__field::-webkit-search-cancel-button {
+    -webkit-appearance: none;
+}
+
+.select2-search--dropdown.select2-search--hide {
+    display: none;
+}
 
 .select2-close-mask {
-  border: 0;
-  margin: 0;
-  padding: 0;
-  display: block;
-  position: fixed;
-  left: 0;
-  top: 0;
-  min-height: 100%;
-  min-width: 100%;
-  height: auto;
-  width: auto;
-  opacity: 0;
-  z-index: 99;
-  background-color: #fff;
-  filter: alpha(opacity=0); }
+    border: 0;
+    margin: 0;
+    padding: 0;
+    display: block;
+    position: fixed;
+    left: 0;
+    top: 0;
+    min-height: 100%;
+    min-width: 100%;
+    height: auto;
+    width: auto;
+    opacity: 0;
+    z-index: 99;
+    background-color: #fff;
+    filter: alpha(opacity=0);
+}
 
 .select2-hidden-accessible {
-  border: 0 !important;
-  clip: rect(0 0 0 0) !important;
-  -webkit-clip-path: inset(50%) !important;
-  clip-path: inset(50%) !important;
-  height: 1px !important;
-  overflow: hidden !important;
-  padding: 0 !important;
-  position: absolute !important;
-  width: 1px !important;
-  white-space: nowrap !important; }
+    border: 0 !important;
+    clip: rect(0 0 0 0) !important;
+    -webkit-clip-path: inset(50%) !important;
+    clip-path: inset(50%) !important;
+    height: 1px !important;
+    overflow: hidden !important;
+    padding: 0 !important;
+    position: absolute !important;
+    width: 1px !important;
+    white-space: nowrap !important;
+}
 
 .select2-container--default .select2-selection--single {
-  background-color: #fff;
-  border: 1px solid #aaa;
-  border-radius: 4px; }
-  .select2-container--default .select2-selection--single .select2-selection__rendered {
+    background-color: #fff;
+    border: 1px solid #aaa;
+    border-radius: 4px;
+}
+
+.select2-container--default .select2-selection--single .select2-selection__rendered {
     color: #444;
-    line-height: 28px; }
-  .select2-container--default .select2-selection--single .select2-selection__clear {
+    line-height: 28px;
+}
+
+.select2-container--default .select2-selection--single .select2-selection__clear {
     cursor: pointer;
     float: right;
-    font-weight: bold; }
-  .select2-container--default .select2-selection--single .select2-selection__placeholder {
-    color: #999; }
-  .select2-container--default .select2-selection--single .select2-selection__arrow {
+    font-weight: bold;
+}
+
+.select2-container--default .select2-selection--single .select2-selection__placeholder {
+    color: #999;
+}
+
+.select2-container--default .select2-selection--single .select2-selection__arrow {
     height: 26px;
     position: absolute;
     top: 1px;
     right: 1px;
-    width: 20px; }
-    .select2-container--default .select2-selection--single .select2-selection__arrow b {
-      border-color: #888 transparent transparent transparent;
-      border-style: solid;
-      border-width: 5px 4px 0 4px;
-      height: 0;
-      left: 50%;
-      margin-left: -4px;
-      margin-top: -2px;
-      position: absolute;
-      top: 50%;
-      width: 0; }
+    width: 20px;
+}
+
+.select2-container--default .select2-selection--single .select2-selection__arrow b {
+    border-color: #888 transparent transparent transparent;
+    border-style: solid;
+    border-width: 5px 4px 0 4px;
+    height: 0;
+    left: 50%;
+    margin-left: -4px;
+    margin-top: -2px;
+    position: absolute;
+    top: 50%;
+    width: 0;
+}
 
 .select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__clear {
-  float: left; }
+    float: left;
+}
 
 .select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__arrow {
-  left: 1px;
-  right: auto; }
+    left: 1px;
+    right: auto;
+}
 
 .select2-container--default.select2-container--disabled .select2-selection--single {
-  background-color: #eee;
-  cursor: default; }
-  .select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear {
-    display: none; }
+    background-color: #eee;
+    cursor: default;
+}
+
+.select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear {
+    display: none;
+}
 
 .select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b {
-  border-color: transparent transparent #888 transparent;
-  border-width: 0 4px 5px 4px; }
+    border-color: transparent transparent #888 transparent;
+    border-width: 0 4px 5px 4px;
+}
 
 .select2-container--default .select2-selection--multiple {
-  background-color: white;
-  border: 1px solid #aaa;
-  border-radius: 4px;
-  cursor: text; }
-  .select2-container--default .select2-selection--multiple .select2-selection__rendered {
+    background-color: white;
+    border: 1px solid #aaa;
+    border-radius: 4px;
+    cursor: text;
+}
+
+.select2-container--default .select2-selection--multiple .select2-selection__rendered {
     box-sizing: border-box;
     list-style: none;
     margin: 0;
     padding: 0 5px;
-    width: 100%; }
-    .select2-container--default .select2-selection--multiple .select2-selection__rendered li {
-      list-style: none; }
-  .select2-container--default .select2-selection--multiple .select2-selection__clear {
+    width: 100%;
+}
+
+.select2-container--default .select2-selection--multiple .select2-selection__rendered li {
+    list-style: none;
+}
+
+.select2-container--default .select2-selection--multiple .select2-selection__clear {
     cursor: pointer;
     float: right;
     font-weight: bold;
     margin-top: 5px;
     margin-right: 10px;
-    padding: 1px; }
-  .select2-container--default .select2-selection--multiple .select2-selection__choice {
+    padding: 1px;
+}
+
+.select2-container--default .select2-selection--multiple .select2-selection__choice {
     background-color: #e4e4e4;
     border: 1px solid #aaa;
     border-radius: 4px;
@@ -203,121 +265,165 @@
     float: left;
     margin-right: 5px;
     margin-top: 5px;
-    padding: 0 5px; }
-  .select2-container--default .select2-selection--multiple .select2-selection__choice__remove {
+    padding: 0 5px;
+}
+
+.select2-container--default .select2-selection--multiple .select2-selection__choice__remove {
     color: #999;
     cursor: pointer;
     display: inline-block;
     font-weight: bold;
-    margin-right: 2px; }
-    .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover {
-      color: #333; }
+    margin-right: 2px;
+}
+
+.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover {
+    color: #333;
+}
 
 .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice, .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-search--inline {
-  float: right; }
+    float: right;
+}
 
 .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice {
-  margin-left: 5px;
-  margin-right: auto; }
+    margin-left: 5px;
+    margin-right: auto;
+}
 
 .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove {
-  margin-left: 2px;
-  margin-right: auto; }
+    margin-left: 2px;
+    margin-right: auto;
+}
 
 .select2-container--default.select2-container--focus .select2-selection--multiple {
-  border: solid black 1px;
-  outline: 0; }
+    border: solid black 1px;
+    outline: 0;
+}
 
 .select2-container--default.select2-container--disabled .select2-selection--multiple {
-  background-color: #eee;
-  cursor: default; }
+    background-color: #eee;
+    cursor: default;
+}
 
 .select2-container--default.select2-container--disabled .select2-selection__choice__remove {
-  display: none; }
+    display: none;
+}
 
 .select2-container--default.select2-container--open.select2-container--above .select2-selection--single, .select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple {
-  border-top-left-radius: 0;
-  border-top-right-radius: 0; }
+    border-top-left-radius: 0;
+    border-top-right-radius: 0;
+}
 
 .select2-container--default.select2-container--open.select2-container--below .select2-selection--single, .select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple {
-  border-bottom-left-radius: 0;
-  border-bottom-right-radius: 0; }
+    border-bottom-left-radius: 0;
+    border-bottom-right-radius: 0;
+}
 
 .select2-container--default .select2-search--dropdown .select2-search__field {
-  border: 1px solid #aaa; }
+    border: 1px solid #aaa;
+}
 
 .select2-container--default .select2-search--inline .select2-search__field {
-  background: transparent;
-  border: none;
-  outline: 0;
-  box-shadow: none;
-  -webkit-appearance: textfield; }
+    background: transparent;
+    border: none;
+    outline: 0;
+    box-shadow: none;
+    -webkit-appearance: textfield;
+}
 
 .select2-container--default .select2-results > .select2-results__options {
-  max-height: 200px;
-  overflow-y: auto; }
+    max-height: 200px;
+    overflow-y: auto;
+}
 
 .select2-container--default .select2-results__option[role=group] {
-  padding: 0; }
+    padding: 0;
+}
 
 .select2-container--default .select2-results__option[aria-disabled=true] {
-  color: #999; }
+    color: #999;
+}
 
 .select2-container--default .select2-results__option[aria-selected=true] {
-  background-color: #ddd; }
+    background-color: #ddd;
+}
 
 .select2-container--default .select2-results__option .select2-results__option {
-  padding-left: 1em; }
-  .select2-container--default .select2-results__option .select2-results__option .select2-results__group {
-    padding-left: 0; }
-  .select2-container--default .select2-results__option .select2-results__option .select2-results__option {
+    padding-left: 1em;
+}
+
+.select2-container--default .select2-results__option .select2-results__option .select2-results__group {
+    padding-left: 0;
+}
+
+.select2-container--default .select2-results__option .select2-results__option .select2-results__option {
     margin-left: -1em;
-    padding-left: 2em; }
-    .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
-      margin-left: -2em;
-      padding-left: 3em; }
-      .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
-        margin-left: -3em;
-        padding-left: 4em; }
-        .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
-          margin-left: -4em;
-          padding-left: 5em; }
-          .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
-            margin-left: -5em;
-            padding-left: 6em; }
+    padding-left: 2em;
+}
+
+.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
+    margin-left: -2em;
+    padding-left: 3em;
+}
+
+.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
+    margin-left: -3em;
+    padding-left: 4em;
+}
+
+.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
+    margin-left: -4em;
+    padding-left: 5em;
+}
+
+.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
+    margin-left: -5em;
+    padding-left: 6em;
+}
 
 .select2-container--default .select2-results__option--highlighted[aria-selected] {
-  background-color: #5897fb;
-  color: white; }
+    background-color: #5897fb;
+    color: white;
+}
 
 .select2-container--default .select2-results__group {
-  cursor: default;
-  display: block;
-  padding: 6px; }
+    cursor: default;
+    display: block;
+    padding: 6px;
+}
 
 .select2-container--classic .select2-selection--single {
-  background-color: #f7f7f7;
-  border: 1px solid #aaa;
-  border-radius: 4px;
-  outline: 0;
-  background-image: -webkit-linear-gradient(top, white 50%, #eeeeee 100%);
-  background-image: -o-linear-gradient(top, white 50%, #eeeeee 100%);
-  background-image: linear-gradient(to bottom, white 50%, #eeeeee 100%);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0); }
-  .select2-container--classic .select2-selection--single:focus {
-    border: 1px solid #5897fb; }
-  .select2-container--classic .select2-selection--single .select2-selection__rendered {
+    background-color: #f7f7f7;
+    border: 1px solid #aaa;
+    border-radius: 4px;
+    outline: 0;
+    background-image: -webkit-linear-gradient(top, white 50%, #eeeeee 100%);
+    background-image: -o-linear-gradient(top, white 50%, #eeeeee 100%);
+    background-image: linear-gradient(to bottom, white 50%, #eeeeee 100%);
+    background-repeat: repeat-x;
+    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0);
+}
+
+.select2-container--classic .select2-selection--single:focus {
+    border: 1px solid #5897fb;
+}
+
+.select2-container--classic .select2-selection--single .select2-selection__rendered {
     color: #444;
-    line-height: 28px; }
-  .select2-container--classic .select2-selection--single .select2-selection__clear {
+    line-height: 28px;
+}
+
+.select2-container--classic .select2-selection--single .select2-selection__clear {
     cursor: pointer;
     float: right;
     font-weight: bold;
-    margin-right: 10px; }
-  .select2-container--classic .select2-selection--single .select2-selection__placeholder {
-    color: #999; }
-  .select2-container--classic .select2-selection--single .select2-selection__arrow {
+    margin-right: 10px;
+}
+
+.select2-container--classic .select2-selection--single .select2-selection__placeholder {
+    color: #999;
+}
+
+.select2-container--classic .select2-selection--single .select2-selection__arrow {
     background-color: #ddd;
     border: none;
     border-left: 1px solid #aaa;
@@ -332,75 +438,95 @@
     background-image: -o-linear-gradient(top, #eeeeee 50%, #cccccc 100%);
     background-image: linear-gradient(to bottom, #eeeeee 50%, #cccccc 100%);
     background-repeat: repeat-x;
-    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFCCCCCC', GradientType=0); }
-    .select2-container--classic .select2-selection--single .select2-selection__arrow b {
-      border-color: #888 transparent transparent transparent;
-      border-style: solid;
-      border-width: 5px 4px 0 4px;
-      height: 0;
-      left: 50%;
-      margin-left: -4px;
-      margin-top: -2px;
-      position: absolute;
-      top: 50%;
-      width: 0; }
+    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFCCCCCC', GradientType=0);
+}
+
+.select2-container--classic .select2-selection--single .select2-selection__arrow b {
+    border-color: #888 transparent transparent transparent;
+    border-style: solid;
+    border-width: 5px 4px 0 4px;
+    height: 0;
+    left: 50%;
+    margin-left: -4px;
+    margin-top: -2px;
+    position: absolute;
+    top: 50%;
+    width: 0;
+}
 
 .select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__clear {
-  float: left; }
+    float: left;
+}
 
 .select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__arrow {
-  border: none;
-  border-right: 1px solid #aaa;
-  border-radius: 0;
-  border-top-left-radius: 4px;
-  border-bottom-left-radius: 4px;
-  left: 1px;
-  right: auto; }
+    border: none;
+    border-right: 1px solid #aaa;
+    border-radius: 0;
+    border-top-left-radius: 4px;
+    border-bottom-left-radius: 4px;
+    left: 1px;
+    right: auto;
+}
 
 .select2-container--classic.select2-container--open .select2-selection--single {
-  border: 1px solid #5897fb; }
-  .select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow {
+    border: 1px solid #5897fb;
+}
+
+.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow {
     background: transparent;
-    border: none; }
-    .select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b {
-      border-color: transparent transparent #888 transparent;
-      border-width: 0 4px 5px 4px; }
+    border: none;
+}
+
+.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b {
+    border-color: transparent transparent #888 transparent;
+    border-width: 0 4px 5px 4px;
+}
 
 .select2-container--classic.select2-container--open.select2-container--above .select2-selection--single {
-  border-top: none;
-  border-top-left-radius: 0;
-  border-top-right-radius: 0;
-  background-image: -webkit-linear-gradient(top, white 0%, #eeeeee 50%);
-  background-image: -o-linear-gradient(top, white 0%, #eeeeee 50%);
-  background-image: linear-gradient(to bottom, white 0%, #eeeeee 50%);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0); }
+    border-top: none;
+    border-top-left-radius: 0;
+    border-top-right-radius: 0;
+    background-image: -webkit-linear-gradient(top, white 0%, #eeeeee 50%);
+    background-image: -o-linear-gradient(top, white 0%, #eeeeee 50%);
+    background-image: linear-gradient(to bottom, white 0%, #eeeeee 50%);
+    background-repeat: repeat-x;
+    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0);
+}
 
 .select2-container--classic.select2-container--open.select2-container--below .select2-selection--single {
-  border-bottom: none;
-  border-bottom-left-radius: 0;
-  border-bottom-right-radius: 0;
-  background-image: -webkit-linear-gradient(top, #eeeeee 50%, white 100%);
-  background-image: -o-linear-gradient(top, #eeeeee 50%, white 100%);
-  background-image: linear-gradient(to bottom, #eeeeee 50%, white 100%);
-  background-repeat: repeat-x;
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFFFFFFF', GradientType=0); }
+    border-bottom: none;
+    border-bottom-left-radius: 0;
+    border-bottom-right-radius: 0;
+    background-image: -webkit-linear-gradient(top, #eeeeee 50%, white 100%);
+    background-image: -o-linear-gradient(top, #eeeeee 50%, white 100%);
+    background-image: linear-gradient(to bottom, #eeeeee 50%, white 100%);
+    background-repeat: repeat-x;
+    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFFFFFFF', GradientType=0);
+}
 
 .select2-container--classic .select2-selection--multiple {
-  background-color: white;
-  border: 1px solid #aaa;
-  border-radius: 4px;
-  cursor: text;
-  outline: 0; }
-  .select2-container--classic .select2-selection--multiple:focus {
-    border: 1px solid #5897fb; }
-  .select2-container--classic .select2-selection--multiple .select2-selection__rendered {
+    background-color: white;
+    border: 1px solid #aaa;
+    border-radius: 4px;
+    cursor: text;
+    outline: 0;
+}
+
+.select2-container--classic .select2-selection--multiple:focus {
+    border: 1px solid #5897fb;
+}
+
+.select2-container--classic .select2-selection--multiple .select2-selection__rendered {
     list-style: none;
     margin: 0;
-    padding: 0 5px; }
-  .select2-container--classic .select2-selection--multiple .select2-selection__clear {
-    display: none; }
-  .select2-container--classic .select2-selection--multiple .select2-selection__choice {
+    padding: 0 5px;
+}
+
+.select2-container--classic .select2-selection--multiple .select2-selection__clear {
+    display: none;
+}
+
+.select2-container--classic .select2-selection--multiple .select2-selection__choice {
     background-color: #e4e4e4;
     border: 1px solid #aaa;
     border-radius: 4px;
@@ -408,74 +534,95 @@
     float: left;
     margin-right: 5px;
     margin-top: 5px;
-    padding: 0 5px; }
-  .select2-container--classic .select2-selection--multiple .select2-selection__choice__remove {
+    padding: 0 5px;
+}
+
+.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove {
     color: #888;
     cursor: pointer;
     display: inline-block;
     font-weight: bold;
-    margin-right: 2px; }
-    .select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover {
-      color: #555; }
+    margin-right: 2px;
+}
+
+.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover {
+    color: #555;
+}
 
 .select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice {
-  float: right;
-  margin-left: 5px;
-  margin-right: auto; }
+    float: right;
+    margin-left: 5px;
+    margin-right: auto;
+}
 
 .select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove {
-  margin-left: 2px;
-  margin-right: auto; }
+    margin-left: 2px;
+    margin-right: auto;
+}
 
 .select2-container--classic.select2-container--open .select2-selection--multiple {
-  border: 1px solid #5897fb; }
+    border: 1px solid #5897fb;
+}
 
 .select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple {
-  border-top: none;
-  border-top-left-radius: 0;
-  border-top-right-radius: 0; }
+    border-top: none;
+    border-top-left-radius: 0;
+    border-top-right-radius: 0;
+}
 
 .select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple {
-  border-bottom: none;
-  border-bottom-left-radius: 0;
-  border-bottom-right-radius: 0; }
+    border-bottom: none;
+    border-bottom-left-radius: 0;
+    border-bottom-right-radius: 0;
+}
 
 .select2-container--classic .select2-search--dropdown .select2-search__field {
-  border: 1px solid #aaa;
-  outline: 0; }
+    border: 1px solid #aaa;
+    outline: 0;
+}
 
 .select2-container--classic .select2-search--inline .select2-search__field {
-  outline: 0;
-  box-shadow: none; }
+    outline: 0;
+    box-shadow: none;
+}
 
 .select2-container--classic .select2-dropdown {
-  background-color: white;
-  border: 1px solid transparent; }
+    background-color: white;
+    border: 1px solid transparent;
+}
 
 .select2-container--classic .select2-dropdown--above {
-  border-bottom: none; }
+    border-bottom: none;
+}
 
 .select2-container--classic .select2-dropdown--below {
-  border-top: none; }
+    border-top: none;
+}
 
 .select2-container--classic .select2-results > .select2-results__options {
-  max-height: 200px;
-  overflow-y: auto; }
+    max-height: 200px;
+    overflow-y: auto;
+}
 
 .select2-container--classic .select2-results__option[role=group] {
-  padding: 0; }
+    padding: 0;
+}
 
 .select2-container--classic .select2-results__option[aria-disabled=true] {
-  color: grey; }
+    color: grey;
+}
 
 .select2-container--classic .select2-results__option--highlighted[aria-selected] {
-  background-color: #3875d7;
-  color: white; }
+    background-color: #3875d7;
+    color: white;
+}
 
 .select2-container--classic .select2-results__group {
-  cursor: default;
-  display: block;
-  padding: 6px; }
+    cursor: default;
+    display: block;
+    padding: 6px;
+}
 
 .select2-container--classic.select2-container--open .select2-dropdown {
-  border-color: #5897fb; }
+    border-color: #5897fb;
+}

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 5077 - 5084
zhjq-admin/src/main/resources/static/ajax/libs/select2/select2.js


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 1096 - 1074
zhjq-admin/src/main/resources/static/ajax/libs/suggest/bootstrap-suggest.js


+ 0 - 0
zhjq-admin/src/main/resources/static/ajax/libs/summernote/summernote-zh-CN.js


Daži faili netika attēloti, jo izmaiņu fails ir pārāk liels