From 5d12cb131d1ec056d617e80bb54f0561b0f5eca6 Mon Sep 17 00:00:00 2001
From: zengwh <81383286@qq.com>
Date: Wed, 8 Jul 2020 17:34:10 +0800
Subject: [PATCH] =?UTF-8?q?=E5=A4=87=E4=BB=BD=E6=95=B0=E6=8D=AE=E5=BA=93?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
doc/qfpower.sql | 1925 +++
.../src/main/webapp/static/js/jquery-3.2.1.js | 10253 ----------------
.../main/webapp/static/js/jquery-3.2.1.min.js | 4 -
3 files changed, 1925 insertions(+), 10257 deletions(-)
create mode 100644 doc/qfpower.sql
delete mode 100644 power-admin/src/main/webapp/static/js/jquery-3.2.1.js
delete mode 100644 power-admin/src/main/webapp/static/js/jquery-3.2.1.min.js
diff --git a/doc/qfpower.sql b/doc/qfpower.sql
new file mode 100644
index 0000000..343c23e
--- /dev/null
+++ b/doc/qfpower.sql
@@ -0,0 +1,1925 @@
+/*
+ Navicat Premium Data Transfer
+
+ Source Server : localhost_3306
+ Source Server Type : MySQL
+ Source Server Version : 50717
+ Source Host : localhost:3306
+ Source Schema : qfpower
+
+ Target Server Type : MySQL
+ Target Server Version : 50717
+ File Encoding : 65001
+
+ Date: 08/07/2020 17:32:07
+*/
+
+SET NAMES utf8mb4;
+SET FOREIGN_KEY_CHECKS = 0;
+
+-- ----------------------------
+-- Table structure for power_dept
+-- ----------------------------
+DROP TABLE IF EXISTS `power_dept`;
+CREATE TABLE `power_dept` (
+ `dept_id` int(11) NOT NULL AUTO_INCREMENT,
+ `dept_name` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
+ `dict_id` int(11) NULL DEFAULT NULL,
+ `effective` int(11) NULL DEFAULT NULL,
+ `create_date` char(32) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL,
+ `creater` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
+ `update_date` char(32) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL,
+ `updater` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
+ `remark` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
+ `dept_code` varchar(32) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,
+ PRIMARY KEY (`dept_id`, `updater`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of power_dept
+-- ----------------------------
+INSERT INTO `power_dept` VALUES (1, '管理部门', 1, 1, '2020-01-02', 'admin', '2020-01-02', 'admin', '', '');
+INSERT INTO `power_dept` VALUES (2, '病案室', 1, 1, '2020-03-31', 'admin', '2020-03-31', 'admin', '', '');
+INSERT INTO `power_dept` VALUES (3, '医生', 1, 1, '2020-03-31', 'admin', '2020-03-31', 'admin', '', '');
+INSERT INTO `power_dept` VALUES (4, '护士', 1, 1, '2020-03-31', 'admin', '2020-03-31', 'admin', '', '');
+
+-- ----------------------------
+-- Table structure for power_log
+-- ----------------------------
+DROP TABLE IF EXISTS `power_log`;
+CREATE TABLE `power_log` (
+ `log_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '日志ID',
+ `log_title` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '日志主题',
+ `ip` char(15) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
+ `log_content` varchar(1000) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '日志内容',
+ `sys_flag` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
+ `sys_id` int(11) NULL DEFAULT NULL,
+ `create_date` char(16) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '创建时间',
+ `creater` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '创建人',
+ `remark` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`log_id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 1200 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of power_log
+-- ----------------------------
+INSERT INTO `power_log` VALUES (1, '登录', '192.168.0.103', '用户登录成功', 'power', NULL, '2020-03-31 09:20', 'admin', NULL);
+INSERT INTO `power_log` VALUES (2, '登录', '192.168.0.103', '用户登录成功', 'power', NULL, '2020-03-31 09:33', 'admin', NULL);
+INSERT INTO `power_log` VALUES (3, '查看', '192.168.0.103', '用户管理页面', 'power', NULL, '2020-03-31 09:33', 'admin', NULL);
+INSERT INTO `power_log` VALUES (4, '查看', '192.168.0.103', '角色管理页面', 'power', NULL, '2020-03-31 09:33', 'admin', NULL);
+INSERT INTO `power_log` VALUES (5, '查看', '192.168.0.103', '用户管理页面', 'power', NULL, '2020-03-31 09:34', 'admin', NULL);
+INSERT INTO `power_log` VALUES (6, '查看', '192.168.0.103', '角色管理页面', 'power', NULL, '2020-03-31 09:34', 'admin', NULL);
+INSERT INTO `power_log` VALUES (7, '新增', '192.168.0.103', '角色管理', 'power', NULL, '2020-03-31 09:34', 'admin', '护士');
+INSERT INTO `power_log` VALUES (8, '查看', '192.168.0.103', '用户管理页面', 'power', NULL, '2020-03-31 09:34', 'admin', NULL);
+INSERT INTO `power_log` VALUES (9, '登录', '192.168.0.103', '用户登录成功', 'power', NULL, '2020-03-31 09:35', 'admin', NULL);
+INSERT INTO `power_log` VALUES (10, '登录', '192.168.0.103', '用户登录成功', 'power', NULL, '2020-03-31 09:39', 'admin', NULL);
+INSERT INTO `power_log` VALUES (11, '查看', '192.168.0.103', '用户管理页面', 'power', NULL, '2020-03-31 09:39', 'admin', NULL);
+INSERT INTO `power_log` VALUES (12, '查看', '192.168.0.103', '用户管理页面', 'power', NULL, '2020-03-31 09:39', 'admin', NULL);
+INSERT INTO `power_log` VALUES (13, '新增', '192.168.0.103', '用户管理', 'power', NULL, '2020-03-31 09:39', 'admin', 'hushi');
+INSERT INTO `power_log` VALUES (14, '查看', '192.168.0.103', '用户管理页面', 'power', NULL, '2020-03-31 09:39', 'admin', NULL);
+INSERT INTO `power_log` VALUES (15, '登录', '192.168.0.103', '用户登录成功', 'power', NULL, '2020-03-31 09:39', 'admin', NULL);
+INSERT INTO `power_log` VALUES (16, '登录', '192.168.0.103', '用户登录成功', 'power', NULL, '2020-03-31 09:42', 'admin', NULL);
+INSERT INTO `power_log` VALUES (17, '查看', '192.168.0.103', '用户管理页面', 'power', NULL, '2020-03-31 09:42', 'admin', NULL);
+INSERT INTO `power_log` VALUES (18, '查看', '192.168.0.103', '用户分配菜单页面', 'power', NULL, '2020-03-31 09:42', 'admin', NULL);
+INSERT INTO `power_log` VALUES (19, '查看', '192.168.0.103', '用户管理页面', 'power', NULL, '2020-03-31 09:46', 'admin', NULL);
+INSERT INTO `power_log` VALUES (20, '查看', '192.168.0.103', '用户管理页面', 'power', NULL, '2020-03-31 09:46', 'admin', NULL);
+INSERT INTO `power_log` VALUES (21, '查看', '192.168.0.103', '用户管理页面', 'power', NULL, '2020-03-31 09:47', 'admin', NULL);
+INSERT INTO `power_log` VALUES (22, '查看', '192.168.0.103', '用户管理页面', 'power', NULL, '2020-03-31 09:47', 'admin', NULL);
+INSERT INTO `power_log` VALUES (23, '查看', '192.168.0.103', '用户管理页面', 'power', NULL, '2020-03-31 09:47', 'admin', NULL);
+INSERT INTO `power_log` VALUES (24, '查看', '192.168.0.103', '用户管理页面', 'power', NULL, '2020-03-31 09:47', 'admin', NULL);
+INSERT INTO `power_log` VALUES (25, '查看', '192.168.0.103', '用户管理页面', 'power', NULL, '2020-03-31 09:47', 'admin', NULL);
+INSERT INTO `power_log` VALUES (26, '查看', '192.168.0.103', '用户管理页面', 'power', NULL, '2020-03-31 09:47', 'admin', NULL);
+INSERT INTO `power_log` VALUES (27, '查看', '192.168.0.103', '用户管理页面', 'power', NULL, '2020-03-31 09:47', 'admin', NULL);
+INSERT INTO `power_log` VALUES (28, '查看', '192.168.0.103', '用户管理页面', 'power', NULL, '2020-03-31 09:47', 'admin', NULL);
+INSERT INTO `power_log` VALUES (29, '查看', '192.168.0.103', '用户管理页面', 'power', NULL, '2020-03-31 09:47', 'admin', NULL);
+INSERT INTO `power_log` VALUES (30, '查看', '192.168.0.103', '部门管理页面', 'power', NULL, '2020-03-31 09:48', 'admin', NULL);
+INSERT INTO `power_log` VALUES (31, '查看', '192.168.0.103', '部门管理页面', 'power', NULL, '2020-03-31 09:48', 'admin', NULL);
+INSERT INTO `power_log` VALUES (32, '新增', '192.168.0.103', '科室管理', 'power', NULL, '2020-03-31 09:48', 'admin', '病案室');
+INSERT INTO `power_log` VALUES (33, '查看', '192.168.0.103', '部门管理页面', 'power', NULL, '2020-03-31 09:48', 'admin', NULL);
+INSERT INTO `power_log` VALUES (34, '查看', '192.168.0.103', '部门管理页面', 'power', NULL, '2020-03-31 09:50', 'admin', NULL);
+INSERT INTO `power_log` VALUES (35, '新增', '192.168.0.103', '科室管理', 'power', NULL, '2020-03-31 09:50', 'admin', '医生');
+INSERT INTO `power_log` VALUES (36, '查看', '192.168.0.103', '部门管理页面', 'power', NULL, '2020-03-31 09:50', 'admin', NULL);
+INSERT INTO `power_log` VALUES (37, '新增', '192.168.0.103', '科室管理', 'power', NULL, '2020-03-31 09:50', 'admin', '护士');
+INSERT INTO `power_log` VALUES (38, '查看', '192.168.0.103', '部门管理页面', 'power', NULL, '2020-03-31 09:50', 'admin', NULL);
+INSERT INTO `power_log` VALUES (39, '查看', '192.168.0.103', '用户管理页面', 'power', NULL, '2020-03-31 09:50', 'admin', NULL);
+INSERT INTO `power_log` VALUES (40, '查看', '192.168.0.103', '用户分配菜单页面', 'power', NULL, '2020-03-31 09:53', 'admin', NULL);
+INSERT INTO `power_log` VALUES (41, '查看', '192.168.0.103', '用户管理页面', 'power', NULL, '2020-03-31 09:53', 'admin', NULL);
+INSERT INTO `power_log` VALUES (42, '查看', '192.168.0.103', '用户分配菜单页面', 'power', NULL, '2020-03-31 09:53', 'admin', NULL);
+INSERT INTO `power_log` VALUES (43, '查看', '192.168.0.103', '角色管理页面', 'power', NULL, '2020-03-31 09:53', 'admin', NULL);
+INSERT INTO `power_log` VALUES (44, '查看', '192.168.0.103', '用户管理页面', 'power', NULL, '2020-03-31 09:53', 'admin', NULL);
+INSERT INTO `power_log` VALUES (45, '查看', '192.168.0.103', '用户分配菜单页面', 'power', NULL, '2020-03-31 09:53', 'admin', NULL);
+INSERT INTO `power_log` VALUES (46, '查看', '192.168.0.103', '用户管理页面', 'power', NULL, '2020-03-31 09:54', 'admin', NULL);
+INSERT INTO `power_log` VALUES (47, '查看', '192.168.0.103', '角色管理页面', 'power', NULL, '2020-03-31 09:54', 'admin', NULL);
+INSERT INTO `power_log` VALUES (48, '查看', '192.168.0.103', '用户管理页面', 'power', NULL, '2020-03-31 09:55', 'admin', NULL);
+INSERT INTO `power_log` VALUES (49, '查看', '192.168.0.103', '角色分配菜单页面', 'power', NULL, '2020-03-31 09:55', 'admin', NULL);
+INSERT INTO `power_log` VALUES (50, '查看', '192.168.0.103', '用户管理页面', 'power', NULL, '2020-03-31 09:55', 'admin', NULL);
+INSERT INTO `power_log` VALUES (51, '查看', '192.168.0.103', '角色管理页面', 'power', NULL, '2020-03-31 09:55', 'admin', NULL);
+INSERT INTO `power_log` VALUES (52, '查看', '192.168.0.103', '用户分配菜单页面', 'power', NULL, '2020-03-31 09:55', 'admin', NULL);
+INSERT INTO `power_log` VALUES (53, '查看', '192.168.0.103', '角色分配菜单页面', 'power', NULL, '2020-03-31 09:55', 'admin', NULL);
+INSERT INTO `power_log` VALUES (54, '查看', '192.168.0.103', '用户分配菜单页面', 'power', NULL, '2020-03-31 09:55', 'admin', NULL);
+INSERT INTO `power_log` VALUES (55, '查看', '192.168.0.103', '角色分配菜单页面', 'power', NULL, '2020-03-31 09:55', 'admin', NULL);
+INSERT INTO `power_log` VALUES (56, '查看', '192.168.0.103', '用户分配菜单页面', 'power', NULL, '2020-03-31 09:55', 'admin', NULL);
+INSERT INTO `power_log` VALUES (57, '查看', '192.168.0.103', '角色分配菜单页面', 'power', NULL, '2020-03-31 09:55', 'admin', NULL);
+INSERT INTO `power_log` VALUES (58, '查看', '192.168.0.103', '用户分配菜单页面', 'power', NULL, '2020-03-31 09:55', 'admin', NULL);
+INSERT INTO `power_log` VALUES (59, '查看', '192.168.0.103', '角色分配菜单页面', 'power', NULL, '2020-03-31 09:55', 'admin', NULL);
+INSERT INTO `power_log` VALUES (60, '查看', '192.168.0.103', '角色分配菜单页面', 'power', NULL, '2020-03-31 09:55', 'admin', NULL);
+INSERT INTO `power_log` VALUES (61, '查看', '192.168.0.103', '用户分配菜单页面', 'power', NULL, '2020-03-31 09:55', 'admin', NULL);
+INSERT INTO `power_log` VALUES (62, '查看', '192.168.0.103', '角色分配菜单页面', 'power', NULL, '2020-03-31 09:55', 'admin', NULL);
+INSERT INTO `power_log` VALUES (63, '查看', '192.168.0.103', '用户分配菜单页面', 'power', NULL, '2020-03-31 09:55', 'admin', NULL);
+INSERT INTO `power_log` VALUES (64, '查看', '192.168.0.103', '角色分配菜单页面', 'power', NULL, '2020-03-31 09:55', 'admin', NULL);
+INSERT INTO `power_log` VALUES (65, '查看', '192.168.0.103', '用户分配菜单页面', 'power', NULL, '2020-03-31 09:55', 'admin', NULL);
+INSERT INTO `power_log` VALUES (66, '查看', '192.168.0.103', '角色分配菜单页面', 'power', NULL, '2020-03-31 09:56', 'admin', NULL);
+INSERT INTO `power_log` VALUES (67, '查看', '192.168.0.103', '用户分配菜单页面', 'power', NULL, '2020-03-31 09:56', 'admin', NULL);
+INSERT INTO `power_log` VALUES (68, '查看', '192.168.0.103', '角色分配菜单页面', 'power', NULL, '2020-03-31 09:56', 'admin', NULL);
+INSERT INTO `power_log` VALUES (69, '查看', '192.168.0.103', '用户分配菜单页面', 'power', NULL, '2020-03-31 09:56', 'admin', NULL);
+INSERT INTO `power_log` VALUES (70, '查看', '192.168.0.103', '角色分配菜单页面', 'power', NULL, '2020-03-31 09:56', 'admin', NULL);
+INSERT INTO `power_log` VALUES (71, '查看', '192.168.0.103', '用户分配菜单页面', 'power', NULL, '2020-03-31 09:56', 'admin', NULL);
+INSERT INTO `power_log` VALUES (72, '查看', '192.168.0.103', '角色分配菜单页面', 'power', NULL, '2020-03-31 09:56', 'admin', NULL);
+INSERT INTO `power_log` VALUES (73, '查看', '192.168.0.103', '用户分配菜单页面', 'power', NULL, '2020-03-31 09:56', 'admin', NULL);
+INSERT INTO `power_log` VALUES (74, '查看', '192.168.0.103', '角色分配菜单页面', 'power', NULL, '2020-03-31 09:56', 'admin', NULL);
+INSERT INTO `power_log` VALUES (75, '查看', '192.168.0.103', '用户分配菜单页面', 'power', NULL, '2020-03-31 09:56', 'admin', NULL);
+INSERT INTO `power_log` VALUES (76, '查看', '192.168.0.103', '角色分配菜单页面', 'power', NULL, '2020-03-31 09:56', 'admin', NULL);
+INSERT INTO `power_log` VALUES (77, '查看', '192.168.0.103', '用户分配菜单页面', 'power', NULL, '2020-03-31 09:56', 'admin', NULL);
+INSERT INTO `power_log` VALUES (78, '查看', '192.168.0.103', '用户分配菜单页面', 'power', NULL, '2020-03-31 09:56', 'admin', NULL);
+INSERT INTO `power_log` VALUES (79, '查看', '192.168.0.103', '角色分配菜单页面', 'power', NULL, '2020-03-31 09:56', 'admin', NULL);
+INSERT INTO `power_log` VALUES (80, '查看', '192.168.0.103', '用户分配菜单页面', 'power', NULL, '2020-03-31 09:56', 'admin', NULL);
+INSERT INTO `power_log` VALUES (81, '查看', '192.168.0.103', '角色分配菜单页面', 'power', NULL, '2020-03-31 09:56', 'admin', NULL);
+INSERT INTO `power_log` VALUES (82, '查看', '192.168.0.103', '用户分配菜单页面', 'power', NULL, '2020-03-31 09:56', 'admin', NULL);
+INSERT INTO `power_log` VALUES (83, '查看', '192.168.0.103', '角色分配菜单页面', 'power', NULL, '2020-03-31 09:56', 'admin', NULL);
+INSERT INTO `power_log` VALUES (84, '查看', '192.168.0.103', '用户分配菜单页面', 'power', NULL, '2020-03-31 09:56', 'admin', NULL);
+INSERT INTO `power_log` VALUES (85, '查看', '192.168.0.103', '角色分配菜单页面', 'power', NULL, '2020-03-31 09:56', 'admin', NULL);
+INSERT INTO `power_log` VALUES (86, '查看', '192.168.0.103', '用户分配菜单页面', 'power', NULL, '2020-03-31 09:56', 'admin', NULL);
+INSERT INTO `power_log` VALUES (87, '查看', '192.168.0.103', '角色分配菜单页面', 'power', NULL, '2020-03-31 09:56', 'admin', NULL);
+INSERT INTO `power_log` VALUES (88, '查看', '192.168.0.103', '用户分配菜单页面', 'power', NULL, '2020-03-31 09:56', 'admin', NULL);
+INSERT INTO `power_log` VALUES (89, '查看', '192.168.0.103', '角色分配菜单页面', 'power', NULL, '2020-03-31 09:56', 'admin', NULL);
+INSERT INTO `power_log` VALUES (90, '查看', '192.168.0.103', '用户分配菜单页面', 'power', NULL, '2020-03-31 09:56', 'admin', NULL);
+INSERT INTO `power_log` VALUES (91, '查看', '192.168.0.103', '角色管理页面', 'power', NULL, '2020-03-31 09:56', 'admin', NULL);
+INSERT INTO `power_log` VALUES (92, '查看', '192.168.0.103', '用户管理页面', 'power', NULL, '2020-03-31 09:56', 'admin', NULL);
+INSERT INTO `power_log` VALUES (93, '查看', '192.168.0.103', '角色分配菜单页面', 'power', NULL, '2020-03-31 09:57', 'admin', NULL);
+INSERT INTO `power_log` VALUES (94, '查看', '192.168.0.103', '用户分配菜单页面', 'power', NULL, '2020-03-31 09:57', 'admin', NULL);
+INSERT INTO `power_log` VALUES (95, '查看', '192.168.0.103', '用户管理页面', 'power', NULL, '2020-03-31 09:57', 'admin', NULL);
+INSERT INTO `power_log` VALUES (96, '查看', '192.168.0.103', '角色分配菜单页面', 'power', NULL, '2020-03-31 09:58', 'admin', NULL);
+INSERT INTO `power_log` VALUES (97, '查看', '192.168.0.103', '用户分配菜单页面', 'power', NULL, '2020-03-31 09:58', 'admin', NULL);
+INSERT INTO `power_log` VALUES (98, '查看', '192.168.0.103', '用户分配菜单页面', 'power', NULL, '2020-03-31 09:59', 'admin', NULL);
+INSERT INTO `power_log` VALUES (99, '查看', '192.168.0.103', '用户管理页面', 'power', NULL, '2020-03-31 10:00', 'admin', NULL);
+INSERT INTO `power_log` VALUES (100, '新增', '192.168.0.103', '用户管理', 'power', NULL, '2020-03-31 10:01', 'admin', 'binganshi');
+INSERT INTO `power_log` VALUES (101, '查看', '192.168.0.103', '用户管理页面', 'power', NULL, '2020-03-31 10:01', 'admin', NULL);
+INSERT INTO `power_log` VALUES (102, '查看', '192.168.0.103', '角色分配菜单页面', 'power', NULL, '2020-03-31 10:01', 'admin', NULL);
+INSERT INTO `power_log` VALUES (103, '查看', '192.168.0.103', '用户分配菜单页面', 'power', NULL, '2020-03-31 10:01', 'admin', NULL);
+INSERT INTO `power_log` VALUES (104, '查看', '192.168.0.103', '角色分配菜单页面', 'power', NULL, '2020-03-31 10:01', 'admin', NULL);
+INSERT INTO `power_log` VALUES (105, '查看', '192.168.0.103', '角色分配菜单页面', 'power', NULL, '2020-03-31 10:02', 'admin', NULL);
+INSERT INTO `power_log` VALUES (106, '查看', '192.168.0.103', '角色分配菜单页面', 'power', NULL, '2020-03-31 10:02', 'admin', NULL);
+INSERT INTO `power_log` VALUES (107, '查看', '192.168.0.103', '用户分配菜单页面', 'power', NULL, '2020-03-31 10:05', 'admin', NULL);
+INSERT INTO `power_log` VALUES (108, '查看', '192.168.0.103', '角色分配菜单页面', 'power', NULL, '2020-03-31 10:05', 'admin', NULL);
+INSERT INTO `power_log` VALUES (109, '修改分配', '192.168.0.103', '角色分配菜单', 'power', NULL, '2020-03-31 10:05', 'admin', '医生');
+INSERT INTO `power_log` VALUES (110, '查看', '192.168.0.103', '用户分配菜单页面', 'power', NULL, '2020-03-31 10:05', 'admin', NULL);
+INSERT INTO `power_log` VALUES (111, '查看', '192.168.0.103', '用户管理页面', 'power', NULL, '2020-03-31 10:06', 'admin', NULL);
+INSERT INTO `power_log` VALUES (112, '新增', '192.168.0.103', '用户管理', 'power', NULL, '2020-03-31 10:06', 'admin', 'bignahsi1');
+INSERT INTO `power_log` VALUES (113, '查看', '192.168.0.103', '用户管理页面', 'power', NULL, '2020-03-31 10:06', 'admin', NULL);
+INSERT INTO `power_log` VALUES (114, '查看', '192.168.0.103', '用户分配菜单页面', 'power', NULL, '2020-03-31 10:06', 'admin', NULL);
+INSERT INTO `power_log` VALUES (115, '修改分配', '192.168.0.103', '用户分配菜单', 'power', NULL, '2020-03-31 10:07', 'admin', 'bignahsi1');
+INSERT INTO `power_log` VALUES (116, '查看', '192.168.0.103', '部门管理页面', 'power', NULL, '2020-03-31 10:08', 'admin', NULL);
+INSERT INTO `power_log` VALUES (117, '查看', '192.168.0.103', '用户管理页面', 'power', NULL, '2020-03-31 10:08', 'admin', NULL);
+INSERT INTO `power_log` VALUES (118, '查看', '192.168.0.103', '用户分配菜单页面', 'power', NULL, '2020-03-31 10:09', 'admin', NULL);
+INSERT INTO `power_log` VALUES (119, '查看', '192.168.0.103', '用户分配菜单页面', 'power', NULL, '2020-03-31 10:09', 'admin', NULL);
+INSERT INTO `power_log` VALUES (120, '查看', '192.168.0.103', '用户分配菜单页面', 'power', NULL, '2020-03-31 10:09', 'admin', NULL);
+INSERT INTO `power_log` VALUES (121, '查看', '192.168.0.103', '部门管理页面', 'power', NULL, '2020-03-31 10:09', 'admin', NULL);
+INSERT INTO `power_log` VALUES (122, '登录', '192.168.0.103', '用户登录成功', 'power', NULL, '2020-03-31 10:09', 'admin', NULL);
+INSERT INTO `power_log` VALUES (123, '登录', '192.168.0.103', '用户登录成功', 'power', NULL, '2020-03-31 10:09', 'admin', NULL);
+INSERT INTO `power_log` VALUES (124, '查看', '192.168.0.103', '用户管理页面', 'power', NULL, '2020-03-31 10:09', 'admin', NULL);
+INSERT INTO `power_log` VALUES (125, '查看', '192.168.0.103', '角色分配菜单页面', 'power', NULL, '2020-03-31 10:10', 'admin', NULL);
+INSERT INTO `power_log` VALUES (126, '查看', '192.168.0.103', '用户分配菜单页面', 'power', NULL, '2020-03-31 10:10', 'admin', NULL);
+INSERT INTO `power_log` VALUES (127, '查看', '192.168.0.103', '角色分配菜单页面', 'power', NULL, '2020-03-31 10:10', 'admin', NULL);
+INSERT INTO `power_log` VALUES (128, '登录', '192.168.0.103', '用户登录成功', 'power', NULL, '2020-03-31 10:10', 'admin', NULL);
+INSERT INTO `power_log` VALUES (129, '登录', '192.168.0.103', '用户登录成功', 'power', NULL, '2020-03-31 14:30', 'admin', NULL);
+INSERT INTO `power_log` VALUES (130, '登录', '192.168.0.103', '用户登录成功', 'power', NULL, '2020-03-31 14:35', 'admin', NULL);
+INSERT INTO `power_log` VALUES (131, '查看', '192.168.0.103', '用户管理页面', 'power', NULL, '2020-03-31 14:35', 'admin', NULL);
+INSERT INTO `power_log` VALUES (132, '查看', '192.168.0.103', '用户管理页面', 'power', NULL, '2020-03-31 14:35', 'admin', NULL);
+INSERT INTO `power_log` VALUES (133, '查看', '192.168.0.103', '用户管理页面', 'power', NULL, '2020-03-31 14:35', 'admin', NULL);
+INSERT INTO `power_log` VALUES (134, '查看', '192.168.0.103', '用户管理页面', 'power', NULL, '2020-03-31 14:35', 'admin', NULL);
+INSERT INTO `power_log` VALUES (135, '登录', '192.168.0.103', '用户登录成功', 'power', NULL, '2020-03-31 14:36', 'admin', NULL);
+INSERT INTO `power_log` VALUES (136, '登录', '192.168.0.103', '用户登录成功', 'power', NULL, '2020-03-31 14:38', 'admin', NULL);
+INSERT INTO `power_log` VALUES (137, '登录', '192.168.0.103', '用户登录成功', 'power', NULL, '2020-03-31 14:51', 'admin', NULL);
+INSERT INTO `power_log` VALUES (138, '登录', '192.168.0.103', '用户登录成功', 'power', NULL, '2020-03-31 14:56', 'admin', NULL);
+INSERT INTO `power_log` VALUES (139, '登录', '192.168.0.103', '用户密码错误', 'power', NULL, '2020-03-31 17:03', 'admin', '已错误【1】次');
+INSERT INTO `power_log` VALUES (140, '登录', '192.168.0.103', '用户登录成功', 'power', NULL, '2020-03-31 17:03', 'admin', NULL);
+INSERT INTO `power_log` VALUES (141, '登录', '192.168.0.103', '用户登录成功', 'power', NULL, '2020-03-31 17:06', 'admin', NULL);
+INSERT INTO `power_log` VALUES (142, '登录', '192.168.0.103', '用户登录成功', 'power', NULL, '2020-03-31 17:12', 'admin', NULL);
+INSERT INTO `power_log` VALUES (143, '登录', '192.168.0.103', '用户登录成功', 'power', NULL, '2020-03-31 17:14', 'admin', NULL);
+INSERT INTO `power_log` VALUES (144, '登录', '192.168.0.103', '用户登录成功', 'power', NULL, '2020-03-31 17:30', 'admin', NULL);
+INSERT INTO `power_log` VALUES (145, '登录', '192.168.0.103', '用户登录成功', 'power', NULL, '2020-03-31 17:33', 'admin', NULL);
+INSERT INTO `power_log` VALUES (146, '登录', '192.168.0.103', '用户登录成功', 'power', NULL, '2020-03-31 17:34', 'admin', NULL);
+INSERT INTO `power_log` VALUES (147, '登录', '192.168.0.103', '用户登录成功', 'power', NULL, '2020-03-31 17:41', 'admin', NULL);
+INSERT INTO `power_log` VALUES (148, '查看', '192.168.0.103', '用户管理页面', 'power', NULL, '2020-03-31 17:41', 'admin', NULL);
+INSERT INTO `power_log` VALUES (149, '登录', '192.168.0.103', '用户登录成功', 'power', NULL, '2020-03-31 17:41', 'admin', NULL);
+INSERT INTO `power_log` VALUES (150, '登录', '192.168.0.103', '用户登录成功', 'power', NULL, '2020-03-31 17:43', 'admin', NULL);
+INSERT INTO `power_log` VALUES (151, '登录', '192.168.0.103', '用户登录成功', 'power', NULL, '2020-03-31 17:46', 'admin', NULL);
+INSERT INTO `power_log` VALUES (152, '登录', '192.168.0.103', '用户登录成功', 'power', NULL, '2020-03-31 17:48', 'admin', NULL);
+INSERT INTO `power_log` VALUES (153, '登录', '192.168.0.103', '用户登录成功', 'power', NULL, '2020-03-31 17:48', 'admin', NULL);
+INSERT INTO `power_log` VALUES (154, '登录', '192.168.0.103', '用户登录成功', 'power', NULL, '2020-03-31 17:50', 'admin', NULL);
+INSERT INTO `power_log` VALUES (155, '登录', '192.168.0.103', '用户登录成功', 'power', NULL, '2020-03-31 17:50', 'admin', NULL);
+INSERT INTO `power_log` VALUES (156, '登录', '192.168.0.103', '用户登录成功', 'power', NULL, '2020-03-31 17:50', 'admin', NULL);
+INSERT INTO `power_log` VALUES (157, '登录', '192.168.0.103', '用户登录成功', 'power', NULL, '2020-03-31 17:52', 'admin', NULL);
+INSERT INTO `power_log` VALUES (158, '登录', '192.168.0.103', '用户登录成功', 'power', NULL, '2020-03-31 17:53', 'admin', NULL);
+INSERT INTO `power_log` VALUES (159, '登录', '192.168.0.103', '用户登录成功', 'power', NULL, '2020-03-31 17:59', 'admin', NULL);
+INSERT INTO `power_log` VALUES (160, '登录', '192.168.0.103', '用户登录成功', 'power', NULL, '2020-03-31 18:04', 'admin', NULL);
+INSERT INTO `power_log` VALUES (161, '登录', '192.168.0.103', '用户登录成功', 'power', NULL, '2020-04-01 09:23', 'admin', NULL);
+INSERT INTO `power_log` VALUES (162, '登录', '192.168.0.103', '用户登录成功', 'power', NULL, '2020-04-01 09:54', 'admin', NULL);
+INSERT INTO `power_log` VALUES (163, '登录', '192.168.0.103', '用户登录成功', 'power', NULL, '2020-04-01 09:55', 'admin', NULL);
+INSERT INTO `power_log` VALUES (164, '登录', '192.168.0.103', '用户登录成功', 'power', NULL, '2020-04-01 09:56', 'admin', NULL);
+INSERT INTO `power_log` VALUES (165, '登录', '192.168.0.103', '用户登录成功', 'power', NULL, '2020-04-01 10:36', 'admin', NULL);
+INSERT INTO `power_log` VALUES (166, '登录', '192.168.0.103', '用户登录成功', 'power', NULL, '2020-04-01 15:34', 'admin', NULL);
+INSERT INTO `power_log` VALUES (167, '登录', '192.168.0.103', '用户登录成功', 'power', NULL, '2020-04-01 15:49', 'admin', NULL);
+INSERT INTO `power_log` VALUES (168, '登录', '192.168.0.103', '用户登录成功', 'power', NULL, '2020-04-01 15:50', 'admin', NULL);
+INSERT INTO `power_log` VALUES (169, '登录', '192.168.0.103', '用户登录成功', 'power', NULL, '2020-04-01 15:56', 'admin', NULL);
+INSERT INTO `power_log` VALUES (170, '登录', '192.168.0.103', '用户登录成功', 'power', NULL, '2020-04-01 16:03', 'admin', NULL);
+INSERT INTO `power_log` VALUES (171, '登录', '192.168.0.101', '用户登录成功', 'power', NULL, '2020-04-01 18:02', 'admin', NULL);
+INSERT INTO `power_log` VALUES (172, '登录', '192.168.0.101', '用户登录成功', 'power', NULL, '2020-04-01 18:03', 'admin', NULL);
+INSERT INTO `power_log` VALUES (173, '登录', '192.168.0.101', '用户登录成功', 'power', NULL, '2020-04-01 18:04', 'admin', NULL);
+INSERT INTO `power_log` VALUES (174, '登录', '192.168.0.101', '用户登录成功', 'power', NULL, '2020-04-01 18:09', 'admin', NULL);
+INSERT INTO `power_log` VALUES (175, '登录', '192.168.0.101', '用户登录成功', 'power', NULL, '2020-04-01 18:14', 'admin', NULL);
+INSERT INTO `power_log` VALUES (176, '登录', '192.168.0.101', '用户登录成功', 'power', NULL, '2020-04-01 18:15', 'admin', NULL);
+INSERT INTO `power_log` VALUES (177, '登录', '192.168.0.101', '用户登录成功', 'power', NULL, '2020-04-02 09:18', 'admin', NULL);
+INSERT INTO `power_log` VALUES (178, '登录', '192.168.0.101', '用户登录成功', 'power', NULL, '2020-04-02 09:20', 'admin', NULL);
+INSERT INTO `power_log` VALUES (179, '登录', '192.168.0.101', '用户登录成功', 'power', NULL, '2020-04-02 09:25', 'admin', NULL);
+INSERT INTO `power_log` VALUES (180, '登录', '192.168.0.101', '用户登录成功', 'power', NULL, '2020-04-02 10:15', 'admin', NULL);
+INSERT INTO `power_log` VALUES (181, '登录', '192.168.0.101', '用户登录成功', 'power', NULL, '2020-04-02 13:36', 'admin', NULL);
+INSERT INTO `power_log` VALUES (182, '登录', '192.168.0.101', '用户登录成功', 'power', NULL, '2020-04-02 13:43', 'admin', NULL);
+INSERT INTO `power_log` VALUES (183, '登录', '192.168.0.101', '用户登录成功', 'power', NULL, '2020-04-02 13:48', 'admin', NULL);
+INSERT INTO `power_log` VALUES (184, '登录', '192.168.0.101', '用户登录成功', 'power', NULL, '2020-04-02 13:54', 'admin', NULL);
+INSERT INTO `power_log` VALUES (185, '登录', '192.168.0.101', '用户登录成功', 'power', NULL, '2020-04-02 13:56', 'admin', NULL);
+INSERT INTO `power_log` VALUES (186, '登录', '192.168.0.101', '用户登录成功', 'power', NULL, '2020-04-02 13:58', 'admin', NULL);
+INSERT INTO `power_log` VALUES (187, '登录', '192.168.0.101', '用户登录成功', 'power', NULL, '2020-04-02 13:59', 'admin', NULL);
+INSERT INTO `power_log` VALUES (188, '登录', '192.168.0.101', '用户登录成功', 'power', NULL, '2020-04-02 14:04', 'admin', NULL);
+INSERT INTO `power_log` VALUES (189, '查看', '192.168.0.101', '用户管理页面', 'power', NULL, '2020-04-02 14:04', 'admin', NULL);
+INSERT INTO `power_log` VALUES (190, '查看', '192.168.0.101', '用户分配菜单页面', 'power', NULL, '2020-04-02 14:04', 'admin', NULL);
+INSERT INTO `power_log` VALUES (191, '查看', '192.168.0.101', '用户管理页面', 'power', NULL, '2020-04-02 14:04', 'admin', NULL);
+INSERT INTO `power_log` VALUES (192, '查看', '192.168.0.101', '用户分配菜单页面', 'power', NULL, '2020-04-02 14:04', 'admin', NULL);
+INSERT INTO `power_log` VALUES (193, '查看', '192.168.0.101', '用户管理页面', 'power', NULL, '2020-04-02 14:06', 'admin', NULL);
+INSERT INTO `power_log` VALUES (194, '查看', '192.168.0.101', '用户分配菜单页面', 'power', NULL, '2020-04-02 14:06', 'admin', NULL);
+INSERT INTO `power_log` VALUES (195, '查看', '192.168.0.101', '角色分配菜单页面', 'power', NULL, '2020-04-02 14:07', 'admin', NULL);
+INSERT INTO `power_log` VALUES (196, '查看', '192.168.0.101', '用户分配菜单页面', 'power', NULL, '2020-04-02 14:07', 'admin', NULL);
+INSERT INTO `power_log` VALUES (197, '查看', '192.168.0.101', '角色分配菜单页面', 'power', NULL, '2020-04-02 14:07', 'admin', NULL);
+INSERT INTO `power_log` VALUES (198, '查看', '192.168.0.101', '用户分配菜单页面', 'power', NULL, '2020-04-02 14:07', 'admin', NULL);
+INSERT INTO `power_log` VALUES (199, '查看', '192.168.0.101', '用户管理页面', 'power', NULL, '2020-04-02 14:08', 'admin', NULL);
+INSERT INTO `power_log` VALUES (200, '查看', '192.168.0.101', '用户分配菜单页面', 'power', NULL, '2020-04-02 14:08', 'admin', NULL);
+INSERT INTO `power_log` VALUES (201, '查看', '192.168.0.101', '角色分配菜单页面', 'power', NULL, '2020-04-02 14:08', 'admin', NULL);
+INSERT INTO `power_log` VALUES (202, '查看', '192.168.0.101', '用户分配菜单页面', 'power', NULL, '2020-04-02 14:08', 'admin', NULL);
+INSERT INTO `power_log` VALUES (203, '查看', '192.168.0.101', '用户管理页面', 'power', NULL, '2020-04-02 14:09', 'admin', NULL);
+INSERT INTO `power_log` VALUES (204, '查看', '192.168.0.101', '用户分配菜单页面', 'power', NULL, '2020-04-02 14:09', 'admin', NULL);
+INSERT INTO `power_log` VALUES (205, '查看', '192.168.0.101', '角色分配菜单页面', 'power', NULL, '2020-04-02 14:10', 'admin', NULL);
+INSERT INTO `power_log` VALUES (206, '登录', '192.168.0.101', '用户登录成功', 'power', NULL, '2020-04-02 14:23', 'admin', NULL);
+INSERT INTO `power_log` VALUES (207, '登录', '127.0.0.1', '用户登录成功', 'power', NULL, '2020-04-02 15:18', 'admin', NULL);
+INSERT INTO `power_log` VALUES (208, '登录', '192.168.0.101', '用户登录成功', 'power', NULL, '2020-04-02 15:19', 'admin', NULL);
+INSERT INTO `power_log` VALUES (209, '查看', '192.168.0.101', '用户管理页面', 'power', NULL, '2020-04-02 15:19', 'admin', NULL);
+INSERT INTO `power_log` VALUES (210, '查看', '192.168.0.101', '用户管理页面', 'power', NULL, '2020-04-02 15:19', 'admin', NULL);
+INSERT INTO `power_log` VALUES (211, '登录', '192.168.0.101', '用户登录成功', 'power', NULL, '2020-04-02 15:19', 'admin', NULL);
+INSERT INTO `power_log` VALUES (212, '登录', '10.255.0.11', '用户登录成功', 'power', NULL, '2020-04-02 16:04', 'admin', NULL);
+INSERT INTO `power_log` VALUES (213, '登录', '10.255.0.11', '用户登录成功', 'power', NULL, '2020-04-02 16:09', 'admin', NULL);
+INSERT INTO `power_log` VALUES (214, '登录', '10.255.0.11', '用户登录成功', 'power', NULL, '2020-04-02 17:23', 'admin', NULL);
+INSERT INTO `power_log` VALUES (215, '登录', '10.255.0.12', '用户登录成功', 'power', NULL, '2020-04-03 09:36', 'admin', NULL);
+INSERT INTO `power_log` VALUES (216, '登录', '10.255.0.12', '用户登录成功', 'power', NULL, '2020-04-03 09:46', 'admin', NULL);
+INSERT INTO `power_log` VALUES (217, '登录', '10.255.0.12', '用户登录成功', 'power', NULL, '2020-04-03 10:02', 'admin', NULL);
+INSERT INTO `power_log` VALUES (218, '登录', '10.255.0.12', '用户登录成功', 'power', NULL, '2020-04-03 11:17', 'admin', NULL);
+INSERT INTO `power_log` VALUES (219, '登录', '10.255.0.12', '用户登录成功', 'power', NULL, '2020-04-03 11:17', 'admin', NULL);
+INSERT INTO `power_log` VALUES (220, '登录', '10.255.0.12', '用户登录成功', 'power', NULL, '2020-04-03 11:31', 'admin', NULL);
+INSERT INTO `power_log` VALUES (221, '登录', '10.255.0.12', '用户登录成功', 'power', NULL, '2020-04-03 14:39', 'admin', NULL);
+INSERT INTO `power_log` VALUES (222, '登录', '10.255.0.12', '用户登录成功', 'power', NULL, '2020-04-03 14:40', 'admin', NULL);
+INSERT INTO `power_log` VALUES (223, '登录', '10.255.0.12', '用户登录成功', 'power', NULL, '2020-04-03 14:46', 'admin', NULL);
+INSERT INTO `power_log` VALUES (224, '登录', '10.255.0.12', '用户登录成功', 'power', NULL, '2020-04-03 14:52', 'admin', NULL);
+INSERT INTO `power_log` VALUES (225, '登录', '10.255.0.12', '用户登录成功', 'power', NULL, '2020-04-03 15:01', 'admin', NULL);
+INSERT INTO `power_log` VALUES (226, '登录', '10.255.0.12', '用户登录成功', 'power', NULL, '2020-04-03 15:31', 'admin', NULL);
+INSERT INTO `power_log` VALUES (227, '登录', '10.255.0.12', '用户登录成功', 'power', NULL, '2020-04-03 15:49', 'admin', NULL);
+INSERT INTO `power_log` VALUES (228, '查看', '10.255.0.12', '用户管理页面', 'power', NULL, '2020-04-03 15:49', 'admin', NULL);
+INSERT INTO `power_log` VALUES (229, '查看', '10.255.0.12', '角色分配菜单页面', 'power', NULL, '2020-04-03 15:49', 'admin', NULL);
+INSERT INTO `power_log` VALUES (230, '登录', '10.255.0.12', '用户登录成功', 'power', NULL, '2020-04-03 15:50', 'admin', NULL);
+INSERT INTO `power_log` VALUES (231, '登录', '10.255.0.12', '用户登录成功', 'power', NULL, '2020-04-03 15:53', 'admin', NULL);
+INSERT INTO `power_log` VALUES (232, '登录', '10.255.0.12', '用户登录成功', 'power', NULL, '2020-04-03 16:20', 'admin', NULL);
+INSERT INTO `power_log` VALUES (233, '登录', '10.255.0.12', '用户登录成功', 'power', NULL, '2020-04-03 16:23', 'admin', NULL);
+INSERT INTO `power_log` VALUES (234, '登录', '192.168.0.101', '用户登录成功', 'power', NULL, '2020-04-07 09:38', 'admin', NULL);
+INSERT INTO `power_log` VALUES (235, '登录', '192.168.0.101', '用户登录成功', 'power', NULL, '2020-04-07 09:39', 'admin', NULL);
+INSERT INTO `power_log` VALUES (236, '登录', '192.168.0.101', '用户登录成功', 'power', NULL, '2020-04-07 09:47', 'admin', NULL);
+INSERT INTO `power_log` VALUES (237, '登录', '192.168.0.101', '用户登录成功', 'power', NULL, '2020-04-07 09:49', 'admin', NULL);
+INSERT INTO `power_log` VALUES (238, '登录', '192.168.0.101', '用户登录成功', 'power', NULL, '2020-04-07 10:12', 'admin', NULL);
+INSERT INTO `power_log` VALUES (239, '登录', '192.168.0.101', '用户登录成功', 'power', NULL, '2020-04-07 10:22', 'admin', NULL);
+INSERT INTO `power_log` VALUES (240, '查看', '192.168.0.101', '用户管理页面', 'power', NULL, '2020-04-07 10:22', 'admin', NULL);
+INSERT INTO `power_log` VALUES (241, '查看', '192.168.0.101', '部门管理页面', 'power', NULL, '2020-04-07 10:22', 'admin', NULL);
+INSERT INTO `power_log` VALUES (242, '查看', '192.168.0.101', '用户分配菜单页面', 'power', NULL, '2020-04-07 10:31', 'admin', NULL);
+INSERT INTO `power_log` VALUES (243, '查看', '192.168.0.101', '用户管理页面', 'power', NULL, '2020-04-07 10:32', 'admin', NULL);
+INSERT INTO `power_log` VALUES (244, '新增', '192.168.0.101', '用户管理', 'power', NULL, '2020-04-07 10:32', 'admin', '坏女孩');
+INSERT INTO `power_log` VALUES (245, '查看', '192.168.0.101', '用户管理页面', 'power', NULL, '2020-04-07 10:32', 'admin', NULL);
+INSERT INTO `power_log` VALUES (246, '查看', '192.168.0.101', '用户分配菜单页面', 'power', NULL, '2020-04-07 10:32', 'admin', NULL);
+INSERT INTO `power_log` VALUES (247, '查看', '192.168.0.101', '用户管理页面', 'power', NULL, '2020-04-07 10:36', 'admin', NULL);
+INSERT INTO `power_log` VALUES (248, '查看', '192.168.0.101', '用户分配菜单页面', 'power', NULL, '2020-04-07 10:36', 'admin', NULL);
+INSERT INTO `power_log` VALUES (249, '查看', '192.168.0.101', '用户分配菜单页面', 'power', NULL, '2020-04-07 10:36', 'admin', NULL);
+INSERT INTO `power_log` VALUES (250, '查看', '192.168.0.101', '部门管理页面', 'power', NULL, '2020-04-07 10:38', 'admin', NULL);
+INSERT INTO `power_log` VALUES (251, '查看', '192.168.0.101', '用户分配菜单页面', 'power', NULL, '2020-04-07 10:38', 'admin', NULL);
+INSERT INTO `power_log` VALUES (252, '查看', '192.168.0.101', '用户管理页面', 'power', NULL, '2020-04-07 10:41', 'admin', NULL);
+INSERT INTO `power_log` VALUES (253, '查看', '192.168.0.101', '用户分配菜单页面', 'power', NULL, '2020-04-07 10:41', 'admin', NULL);
+INSERT INTO `power_log` VALUES (254, '登录', '192.168.0.101', '用户登录成功', 'power', NULL, '2020-04-07 10:42', 'admin', NULL);
+INSERT INTO `power_log` VALUES (255, '查看', '192.168.0.101', '用户管理页面', 'power', NULL, '2020-04-07 10:42', 'admin', NULL);
+INSERT INTO `power_log` VALUES (256, '查看', '192.168.0.101', '用户分配菜单页面', 'power', NULL, '2020-04-07 10:42', 'admin', NULL);
+INSERT INTO `power_log` VALUES (257, '登录', '192.168.0.101', '用户登录成功', 'power', NULL, '2020-04-07 10:57', 'admin', NULL);
+INSERT INTO `power_log` VALUES (258, '登录', '192.168.0.101', '用户登录成功', 'power', NULL, '2020-04-07 14:43', 'admin', NULL);
+INSERT INTO `power_log` VALUES (259, '登录', '192.168.0.101', '用户登录成功', 'power', NULL, '2020-04-07 15:26', 'admin', NULL);
+INSERT INTO `power_log` VALUES (260, '登录', '192.168.0.101', '用户登录成功', 'power', NULL, '2020-04-07 15:36', 'admin', NULL);
+INSERT INTO `power_log` VALUES (261, '登录', '192.168.0.101', '用户登录成功', 'power', NULL, '2020-04-07 15:45', 'admin', NULL);
+INSERT INTO `power_log` VALUES (262, '查看', '192.168.0.101', '用户管理页面', 'power', NULL, '2020-04-07 15:46', 'admin', NULL);
+INSERT INTO `power_log` VALUES (263, '登录', '192.168.0.101', '用户登录成功', 'power', NULL, '2020-04-07 16:41', 'admin', NULL);
+INSERT INTO `power_log` VALUES (264, '查看', '192.168.0.101', '用户管理页面', 'power', NULL, '2020-04-07 16:41', 'admin', NULL);
+INSERT INTO `power_log` VALUES (265, '登录', '192.168.0.101', '用户登录成功', 'power', NULL, '2020-04-07 16:41', 'admin', NULL);
+INSERT INTO `power_log` VALUES (266, '登录', '192.168.0.101', '用户登录成功', 'power', NULL, '2020-04-08 09:45', 'admin', NULL);
+INSERT INTO `power_log` VALUES (267, '查看', '192.168.0.101', '用户管理页面', 'power', NULL, '2020-04-08 09:45', 'admin', NULL);
+INSERT INTO `power_log` VALUES (268, '查看', '192.168.0.101', '科室管理页面', 'power', NULL, '2020-04-08 09:45', 'admin', NULL);
+INSERT INTO `power_log` VALUES (269, '查看', '192.168.0.101', '用户管理页面', 'power', NULL, '2020-04-08 09:46', 'admin', NULL);
+INSERT INTO `power_log` VALUES (270, '查看', '192.168.0.101', '科室管理页面', 'power', NULL, '2020-04-08 09:46', 'admin', NULL);
+INSERT INTO `power_log` VALUES (271, '查看', '192.168.0.101', '用户管理页面', 'power', NULL, '2020-04-08 09:47', 'admin', NULL);
+INSERT INTO `power_log` VALUES (272, '查看', '192.168.0.101', '科室管理页面', 'power', NULL, '2020-04-08 09:47', 'admin', NULL);
+INSERT INTO `power_log` VALUES (273, '查看', '192.168.0.101', '用户管理页面', 'power', NULL, '2020-04-08 09:47', 'admin', NULL);
+INSERT INTO `power_log` VALUES (274, '查看', '192.168.0.101', '科室管理页面', 'power', NULL, '2020-04-08 09:47', 'admin', NULL);
+INSERT INTO `power_log` VALUES (275, '登录', '192.168.0.101', '用户登录成功', 'power', NULL, '2020-04-08 09:54', 'admin', NULL);
+INSERT INTO `power_log` VALUES (276, '查看', '192.168.0.101', '用户管理页面', 'power', NULL, '2020-04-08 09:54', 'admin', NULL);
+INSERT INTO `power_log` VALUES (277, '查看', '192.168.0.101', '科室管理页面', 'power', NULL, '2020-04-08 09:54', 'admin', NULL);
+INSERT INTO `power_log` VALUES (278, '查看', '192.168.0.101', '科室管理页面', 'power', NULL, '2020-04-08 09:55', 'admin', NULL);
+INSERT INTO `power_log` VALUES (279, '导出excel', '192.168.0.101', '科室管理', 'power', NULL, '2020-04-08 09:55', 'admin', NULL);
+INSERT INTO `power_log` VALUES (280, '登录', '192.168.0.101', '用户登录成功', 'power', NULL, '2020-04-08 09:59', 'admin', NULL);
+INSERT INTO `power_log` VALUES (281, '查看', '192.168.0.101', '用户管理页面', 'power', NULL, '2020-04-08 09:59', 'admin', NULL);
+INSERT INTO `power_log` VALUES (282, '查看', '192.168.0.101', '科室管理页面', 'power', NULL, '2020-04-08 09:59', 'admin', NULL);
+INSERT INTO `power_log` VALUES (283, '导出excel', '192.168.0.101', '科室管理', 'power', NULL, '2020-04-08 09:59', 'admin', NULL);
+INSERT INTO `power_log` VALUES (284, '查看', '192.168.0.101', '用户管理页面', 'power', NULL, '2020-04-08 09:59', 'admin', NULL);
+INSERT INTO `power_log` VALUES (285, '查看', '192.168.0.101', '用户管理页面', 'power', NULL, '2020-04-08 10:01', 'admin', NULL);
+INSERT INTO `power_log` VALUES (286, '查看', '192.168.0.101', '用户管理页面', 'power', NULL, '2020-04-08 10:01', 'admin', NULL);
+INSERT INTO `power_log` VALUES (287, '登录', '192.168.0.101', '用户登录成功', 'power', NULL, '2020-04-08 10:02', 'admin', NULL);
+INSERT INTO `power_log` VALUES (288, '查看', '192.168.0.101', '用户管理页面', 'power', NULL, '2020-04-08 10:02', 'admin', NULL);
+INSERT INTO `power_log` VALUES (289, '导出excel', '192.168.0.101', '用户管理', 'power', NULL, '2020-04-08 10:02', 'admin', NULL);
+INSERT INTO `power_log` VALUES (290, '查看', '192.168.0.101', '用户分配菜单页面', 'power', NULL, '2020-04-08 10:02', 'admin', NULL);
+INSERT INTO `power_log` VALUES (291, '查看', '192.168.0.101', '角色分配菜单页面', 'power', NULL, '2020-04-08 10:03', 'admin', NULL);
+INSERT INTO `power_log` VALUES (292, '查看', '192.168.0.101', '用户管理页面', 'power', NULL, '2020-04-08 10:03', 'admin', NULL);
+INSERT INTO `power_log` VALUES (293, '查看', '192.168.0.101', '用户管理页面', 'power', NULL, '2020-04-08 10:03', 'admin', NULL);
+INSERT INTO `power_log` VALUES (294, '查看', '192.168.0.101', '角色管理页面', 'power', NULL, '2020-04-08 10:03', 'admin', NULL);
+INSERT INTO `power_log` VALUES (295, '查看', '192.168.0.101', '科室管理页面', 'power', NULL, '2020-04-08 10:03', 'admin', NULL);
+INSERT INTO `power_log` VALUES (296, '查看', '192.168.0.101', '用户分配菜单页面', 'power', NULL, '2020-04-08 10:03', 'admin', NULL);
+INSERT INTO `power_log` VALUES (297, '查看', '192.168.0.101', '角色分配菜单页面', 'power', NULL, '2020-04-08 10:03', 'admin', NULL);
+INSERT INTO `power_log` VALUES (298, '查看', '192.168.0.101', '科室管理页面', 'power', NULL, '2020-04-08 10:03', 'admin', NULL);
+INSERT INTO `power_log` VALUES (299, '查看', '192.168.0.101', '角色分配菜单页面', 'power', NULL, '2020-04-08 10:03', 'admin', NULL);
+INSERT INTO `power_log` VALUES (300, '查看', '192.168.0.101', '用户分配菜单页面', 'power', NULL, '2020-04-08 10:03', 'admin', NULL);
+INSERT INTO `power_log` VALUES (301, '查看', '192.168.0.101', '用户管理页面', 'power', NULL, '2020-04-08 10:04', 'admin', NULL);
+INSERT INTO `power_log` VALUES (302, '查看', '192.168.0.101', '角色分配菜单页面', 'power', NULL, '2020-04-08 10:04', 'admin', NULL);
+INSERT INTO `power_log` VALUES (303, '查看', '192.168.0.101', '用户分配菜单页面', 'power', NULL, '2020-04-08 10:04', 'admin', NULL);
+INSERT INTO `power_log` VALUES (304, '查看', '192.168.0.101', '角色分配菜单页面', 'power', NULL, '2020-04-08 10:04', 'admin', NULL);
+INSERT INTO `power_log` VALUES (305, '查看', '192.168.0.101', '用户管理页面', 'power', NULL, '2020-04-08 10:05', 'admin', NULL);
+INSERT INTO `power_log` VALUES (306, '查看', '192.168.0.101', '角色分配菜单页面', 'power', NULL, '2020-04-08 10:05', 'admin', NULL);
+INSERT INTO `power_log` VALUES (307, '查看', '192.168.0.101', '角色管理页面', 'power', NULL, '2020-04-08 10:05', 'admin', NULL);
+INSERT INTO `power_log` VALUES (308, '查看', '192.168.0.101', '用户管理页面', 'power', NULL, '2020-04-08 10:05', 'admin', NULL);
+INSERT INTO `power_log` VALUES (309, '查看', '192.168.0.101', '角色分配菜单页面', 'power', NULL, '2020-04-08 10:05', 'admin', NULL);
+INSERT INTO `power_log` VALUES (310, '查看', '192.168.0.101', '用户分配菜单页面', 'power', NULL, '2020-04-08 10:05', 'admin', NULL);
+INSERT INTO `power_log` VALUES (311, '查看', '192.168.0.101', '科室管理页面', 'power', NULL, '2020-04-08 10:05', 'admin', NULL);
+INSERT INTO `power_log` VALUES (312, '查看', '192.168.0.101', '角色分配菜单页面', 'power', NULL, '2020-04-08 10:06', 'admin', NULL);
+INSERT INTO `power_log` VALUES (313, '查看', '192.168.0.101', '角色分配菜单页面', 'power', NULL, '2020-04-08 10:06', 'admin', NULL);
+INSERT INTO `power_log` VALUES (314, '查看', '192.168.0.101', '用户分配菜单页面', 'power', NULL, '2020-04-08 10:06', 'admin', NULL);
+INSERT INTO `power_log` VALUES (315, '查看', '192.168.0.101', '用户管理页面', 'power', NULL, '2020-04-08 10:06', 'admin', NULL);
+INSERT INTO `power_log` VALUES (316, '查看', '192.168.0.101', '用户分配菜单页面', 'power', NULL, '2020-04-08 10:06', 'admin', NULL);
+INSERT INTO `power_log` VALUES (317, '查看', '192.168.0.101', '用户管理页面', 'power', NULL, '2020-04-08 10:07', 'admin', NULL);
+INSERT INTO `power_log` VALUES (318, '查看', '192.168.0.101', '用户分配菜单页面', 'power', NULL, '2020-04-08 10:07', 'admin', NULL);
+INSERT INTO `power_log` VALUES (319, '查看', '192.168.0.101', '用户管理页面', 'power', NULL, '2020-04-08 10:07', 'admin', NULL);
+INSERT INTO `power_log` VALUES (320, '查看', '192.168.0.101', '用户分配菜单页面', 'power', NULL, '2020-04-08 10:07', 'admin', NULL);
+INSERT INTO `power_log` VALUES (321, '查看', '192.168.0.101', '用户管理页面', 'power', NULL, '2020-04-08 10:08', 'admin', NULL);
+INSERT INTO `power_log` VALUES (322, '查看', '192.168.0.101', '用户分配菜单页面', 'power', NULL, '2020-04-08 10:08', 'admin', NULL);
+INSERT INTO `power_log` VALUES (323, '查看', '192.168.0.101', '用户管理页面', 'power', NULL, '2020-04-08 10:08', 'admin', NULL);
+INSERT INTO `power_log` VALUES (324, '查看', '192.168.0.101', '用户分配菜单页面', 'power', NULL, '2020-04-08 10:08', 'admin', NULL);
+INSERT INTO `power_log` VALUES (325, '登录', '192.168.0.101', '用户登录成功', 'power', NULL, '2020-04-08 10:09', 'admin', NULL);
+INSERT INTO `power_log` VALUES (326, '查看', '192.168.0.101', '用户管理页面', 'power', NULL, '2020-04-08 10:09', 'admin', NULL);
+INSERT INTO `power_log` VALUES (327, '查看', '192.168.0.101', '用户分配菜单页面', 'power', NULL, '2020-04-08 10:09', 'admin', NULL);
+INSERT INTO `power_log` VALUES (328, '查看', '192.168.0.101', '角色分配菜单页面', 'power', NULL, '2020-04-08 10:09', 'admin', NULL);
+INSERT INTO `power_log` VALUES (329, '查看', '192.168.0.101', '用户管理页面', 'power', NULL, '2020-04-08 10:10', 'admin', NULL);
+INSERT INTO `power_log` VALUES (330, '查看', '192.168.0.101', '角色管理页面', 'power', NULL, '2020-04-08 10:10', 'admin', NULL);
+INSERT INTO `power_log` VALUES (331, '查看', '192.168.0.101', '科室管理页面', 'power', NULL, '2020-04-08 10:10', 'admin', NULL);
+INSERT INTO `power_log` VALUES (332, '查看', '192.168.0.101', '用户管理页面', 'power', NULL, '2020-04-08 10:27', 'admin', NULL);
+INSERT INTO `power_log` VALUES (333, '登录', '192.168.0.101', '用户登录成功', 'power', NULL, '2020-04-08 12:47', 'admin', NULL);
+INSERT INTO `power_log` VALUES (334, '登录', '192.168.0.101', '用户登录成功', 'power', NULL, '2020-04-08 12:57', 'admin', NULL);
+INSERT INTO `power_log` VALUES (335, '登录', '192.168.0.101', '用户登录成功', 'power', NULL, '2020-04-08 13:28', 'admin', NULL);
+INSERT INTO `power_log` VALUES (336, '登录', '192.168.0.101', '用户登录成功', 'power', NULL, '2020-04-08 13:33', 'admin', NULL);
+INSERT INTO `power_log` VALUES (337, '登录', '192.168.0.101', '用户登录成功', 'power', NULL, '2020-04-08 13:36', 'admin', NULL);
+INSERT INTO `power_log` VALUES (338, '登录', '192.168.0.101', '用户登录成功', 'power', NULL, '2020-04-09 14:17', 'admin', NULL);
+INSERT INTO `power_log` VALUES (339, '登录', '192.168.0.101', '用户登录成功', 'power', NULL, '2020-04-09 14:57', 'admin', NULL);
+INSERT INTO `power_log` VALUES (340, '登录', '192.168.0.101', '用户登录成功', 'power', NULL, '2020-04-09 15:01', 'admin', NULL);
+INSERT INTO `power_log` VALUES (341, '登录', '192.168.0.101', '用户登录成功', 'power', NULL, '2020-04-09 15:06', 'admin', NULL);
+INSERT INTO `power_log` VALUES (342, '登录', '192.168.0.101', '用户登录成功', 'power', NULL, '2020-04-09 15:07', 'admin', NULL);
+INSERT INTO `power_log` VALUES (343, '登录', '192.168.0.101', '用户登录成功', 'power', NULL, '2020-04-09 15:16', 'admin', NULL);
+INSERT INTO `power_log` VALUES (344, '登录', '192.168.0.101', '用户登录成功', 'power', NULL, '2020-04-09 15:18', 'admin', NULL);
+INSERT INTO `power_log` VALUES (345, '登录', '192.168.0.101', '用户登录成功', 'power', NULL, '2020-04-09 15:32', 'admin', NULL);
+INSERT INTO `power_log` VALUES (346, '登录', '192.168.0.101', '用户登录成功', 'power', NULL, '2020-04-09 15:48', 'admin', NULL);
+INSERT INTO `power_log` VALUES (347, '登录', '192.168.0.101', '用户登录成功', 'power', NULL, '2020-04-09 16:23', 'admin', NULL);
+INSERT INTO `power_log` VALUES (348, '登录', '192.168.0.101', '用户登录成功', 'power', NULL, '2020-04-09 16:38', 'admin', NULL);
+INSERT INTO `power_log` VALUES (349, '登录', '192.168.0.101', '用户登录成功', 'power', NULL, '2020-04-09 16:41', 'admin', NULL);
+INSERT INTO `power_log` VALUES (350, '登录', '192.168.0.101', '用户登录成功', 'power', NULL, '2020-04-09 17:16', 'admin', NULL);
+INSERT INTO `power_log` VALUES (351, '登录', '192.168.0.101', '用户登录成功', 'power', NULL, '2020-04-09 17:22', 'admin', NULL);
+INSERT INTO `power_log` VALUES (352, '登录', '192.168.0.101', '用户登录成功', 'power', NULL, '2020-04-09 17:25', 'admin', NULL);
+INSERT INTO `power_log` VALUES (353, '登录', '192.168.0.101', '用户登录成功', 'power', NULL, '2020-04-09 17:40', 'admin', NULL);
+INSERT INTO `power_log` VALUES (354, '登录', '192.168.0.101', '用户登录成功', 'power', NULL, '2020-04-09 17:44', 'admin', NULL);
+INSERT INTO `power_log` VALUES (355, '登录', '192.168.0.101', '用户登录成功', 'power', NULL, '2020-04-09 17:50', 'admin', NULL);
+INSERT INTO `power_log` VALUES (356, '登录', '10.255.0.18', '用户登录成功', 'power', NULL, '2020-04-10 10:15', 'admin', NULL);
+INSERT INTO `power_log` VALUES (357, '登录', '10.255.0.18', '用户登录成功', 'power', NULL, '2020-04-10 10:17', 'admin', NULL);
+INSERT INTO `power_log` VALUES (358, '登录', '10.255.0.18', '用户登录成功', 'power', NULL, '2020-04-10 10:20', 'admin', NULL);
+INSERT INTO `power_log` VALUES (359, '查看', '10.255.0.18', '用户管理页面', 'power', NULL, '2020-04-10 10:20', 'admin', NULL);
+INSERT INTO `power_log` VALUES (360, '登录', '10.255.0.18', '用户登录成功', 'power', NULL, '2020-04-10 10:20', 'admin', NULL);
+INSERT INTO `power_log` VALUES (361, '查看', '10.255.0.18', '通知管理页面', 'power', NULL, '2020-04-10 10:20', 'admin', NULL);
+INSERT INTO `power_log` VALUES (362, '查看', '10.255.0.18', '通知管理页面', 'power', NULL, '2020-04-10 10:20', 'admin', NULL);
+INSERT INTO `power_log` VALUES (363, '查看', '10.255.0.18', '通知管理页面', 'power', NULL, '2020-04-10 10:20', 'admin', NULL);
+INSERT INTO `power_log` VALUES (364, '登录', '10.255.0.18', '用户登录成功', 'power', NULL, '2020-04-10 10:21', 'admin', NULL);
+INSERT INTO `power_log` VALUES (365, '查看', '10.255.0.18', '用户管理页面', 'power', NULL, '2020-04-10 10:21', 'admin', NULL);
+INSERT INTO `power_log` VALUES (366, '登录', '10.255.0.18', '用户登录成功', 'power', NULL, '2020-04-10 10:21', 'admin', NULL);
+INSERT INTO `power_log` VALUES (367, '查看', '10.255.0.18', '通知管理页面', 'power', NULL, '2020-04-10 10:21', 'admin', NULL);
+INSERT INTO `power_log` VALUES (368, '查看', '10.255.0.18', '通知管理页面', 'power', NULL, '2020-04-10 10:22', 'admin', NULL);
+INSERT INTO `power_log` VALUES (369, '查看', '10.255.0.18', '通知管理页面', 'power', NULL, '2020-04-10 10:22', 'admin', NULL);
+INSERT INTO `power_log` VALUES (370, '登录', '10.255.0.18', '用户登录成功', 'power', NULL, '2020-04-10 10:22', 'admin', NULL);
+INSERT INTO `power_log` VALUES (371, '查看', '10.255.0.18', '用户管理页面', 'power', NULL, '2020-04-10 10:22', 'admin', NULL);
+INSERT INTO `power_log` VALUES (372, '登录', '10.255.0.18', '用户登录成功', 'power', NULL, '2020-04-10 10:22', 'admin', NULL);
+INSERT INTO `power_log` VALUES (373, '查看', '10.255.0.18', '通知管理页面', 'power', NULL, '2020-04-10 10:22', 'admin', NULL);
+INSERT INTO `power_log` VALUES (374, '登录', '10.255.0.18', '用户登录成功', 'power', NULL, '2020-04-10 10:22', 'admin', NULL);
+INSERT INTO `power_log` VALUES (375, '登录', '10.255.0.18', '用户登录成功', 'power', NULL, '2020-04-10 10:39', 'admin', NULL);
+INSERT INTO `power_log` VALUES (376, '查看', '10.255.0.18', '用户管理页面', 'power', NULL, '2020-04-10 10:39', 'admin', NULL);
+INSERT INTO `power_log` VALUES (377, '查看', '10.255.0.18', '科室管理页面', 'power', NULL, '2020-04-10 10:39', 'admin', NULL);
+INSERT INTO `power_log` VALUES (378, '查看', '10.255.0.18', '用户管理页面', 'power', NULL, '2020-04-10 10:39', 'admin', NULL);
+INSERT INTO `power_log` VALUES (379, '新增', '10.255.0.18', '用户管理', 'power', NULL, '2020-04-10 10:40', 'admin', '耳温枪热无群若');
+INSERT INTO `power_log` VALUES (380, '查看', '10.255.0.18', '用户管理页面', 'power', NULL, '2020-04-10 10:40', 'admin', NULL);
+INSERT INTO `power_log` VALUES (381, '登录', '10.255.0.18', '用户登录成功', 'power', NULL, '2020-04-10 10:40', 'admin', NULL);
+INSERT INTO `power_log` VALUES (382, '登录', '10.255.0.18', '用户登录成功', 'power', NULL, '2020-04-10 10:57', 'admin', NULL);
+INSERT INTO `power_log` VALUES (383, '登录', '10.255.0.18', '用户登录成功', 'power', NULL, '2020-04-10 10:58', 'admin', NULL);
+INSERT INTO `power_log` VALUES (384, '登录', '10.255.0.18', '用户登录成功', 'power', NULL, '2020-04-10 11:14', 'admin', NULL);
+INSERT INTO `power_log` VALUES (385, '登录', '10.255.0.18', '用户登录成功', 'power', NULL, '2020-04-10 14:19', 'admin', NULL);
+INSERT INTO `power_log` VALUES (386, '查看', '10.255.0.18', '用户管理页面', 'power', NULL, '2020-04-10 14:19', 'admin', NULL);
+INSERT INTO `power_log` VALUES (387, '删除', '10.255.0.18', '用户管理', 'power', NULL, '2020-04-10 14:20', 'admin', 'bignahsi1');
+INSERT INTO `power_log` VALUES (388, '删除', '10.255.0.18', '用户管理', 'power', NULL, '2020-04-10 14:20', 'admin', '坏女孩');
+INSERT INTO `power_log` VALUES (389, '删除', '10.255.0.18', '用户管理', 'power', NULL, '2020-04-10 14:20', 'admin', 'binganshi');
+INSERT INTO `power_log` VALUES (390, '新增', '10.255.0.18', '用户管理', 'power', NULL, '2020-04-10 14:20', 'admin', 'admin11');
+INSERT INTO `power_log` VALUES (391, '查看', '10.255.0.18', '用户管理页面', 'power', NULL, '2020-04-10 14:20', 'admin', NULL);
+INSERT INTO `power_log` VALUES (392, '删除', '10.255.0.18', '用户管理', 'power', NULL, '2020-04-10 14:20', 'admin', '耳温枪热无群若');
+INSERT INTO `power_log` VALUES (393, '登录', '10.255.0.18', '用户登录成功', 'power', NULL, '2020-04-10 14:27', 'admin', NULL);
+INSERT INTO `power_log` VALUES (394, '查看', '10.255.0.18', '用户管理页面', 'power', NULL, '2020-04-10 14:27', 'admin', NULL);
+INSERT INTO `power_log` VALUES (395, '登录', '10.255.0.18', '用户登录成功', 'power', NULL, '2020-04-10 14:27', 'admin', NULL);
+INSERT INTO `power_log` VALUES (396, '查看', '10.255.0.18', '通知管理页面', 'power', NULL, '2020-04-10 14:27', 'admin', NULL);
+INSERT INTO `power_log` VALUES (397, '登录', '10.255.0.18', '用户登录成功', 'power', NULL, '2020-04-10 14:42', 'admin', NULL);
+INSERT INTO `power_log` VALUES (398, '登录', '10.255.0.18', '用户登录成功', 'power', NULL, '2020-04-10 14:55', 'admin', NULL);
+INSERT INTO `power_log` VALUES (399, '登录', '10.255.0.18', '用户登录成功', 'power', NULL, '2020-04-10 15:26', 'admin', NULL);
+INSERT INTO `power_log` VALUES (400, '登录', '10.255.0.18', '用户登录成功', 'power', NULL, '2020-04-10 15:34', 'admin', NULL);
+INSERT INTO `power_log` VALUES (401, '登录', '10.255.0.18', '用户登录成功', 'power', NULL, '2020-04-10 15:39', 'admin', NULL);
+INSERT INTO `power_log` VALUES (402, '登录', '10.255.0.18', '用户登录成功', 'power', NULL, '2020-04-10 15:43', 'admin', NULL);
+INSERT INTO `power_log` VALUES (403, '登录', '10.255.0.18', '用户登录成功', 'power', NULL, '2020-04-10 15:48', 'admin', NULL);
+INSERT INTO `power_log` VALUES (404, '登录', '10.255.0.18', '用户登录成功', 'power', NULL, '2020-04-10 16:07', 'admin', NULL);
+INSERT INTO `power_log` VALUES (405, '登录', '10.255.0.18', '用户登录成功', 'power', NULL, '2020-04-10 16:18', 'admin', NULL);
+INSERT INTO `power_log` VALUES (406, '查看', '10.255.0.18', '用户管理页面', 'power', NULL, '2020-04-10 16:18', 'admin', NULL);
+INSERT INTO `power_log` VALUES (407, '新增', '10.255.0.18', '用户管理', 'power', NULL, '2020-04-10 16:18', 'admin', '432432');
+INSERT INTO `power_log` VALUES (408, '查看', '10.255.0.18', '用户管理页面', 'power', NULL, '2020-04-10 16:18', 'admin', NULL);
+INSERT INTO `power_log` VALUES (409, '查看', '10.255.0.18', '用户管理页面', 'power', NULL, '2020-04-10 16:20', 'admin', NULL);
+INSERT INTO `power_log` VALUES (410, '查看', '10.255.0.18', '用户管理页面', 'power', NULL, '2020-04-10 16:20', 'admin', NULL);
+INSERT INTO `power_log` VALUES (411, '查看', '10.255.0.18', '用户管理页面', 'power', NULL, '2020-04-10 16:21', 'admin', NULL);
+INSERT INTO `power_log` VALUES (412, '查看', '10.255.0.18', '用户管理页面', 'power', NULL, '2020-04-10 16:21', 'admin', NULL);
+INSERT INTO `power_log` VALUES (413, '删除', '10.255.0.18', '用户管理', 'power', NULL, '2020-04-10 16:21', 'admin', 'admin1');
+INSERT INTO `power_log` VALUES (414, '查看', '10.255.0.18', '用户管理页面', 'power', NULL, '2020-04-10 16:23', 'admin', NULL);
+INSERT INTO `power_log` VALUES (415, '查看', '10.255.0.18', '用户管理页面', 'power', NULL, '2020-04-10 16:25', 'admin', NULL);
+INSERT INTO `power_log` VALUES (416, '查看', '10.255.0.18', '用户管理页面', 'power', NULL, '2020-04-10 16:25', 'admin', NULL);
+INSERT INTO `power_log` VALUES (417, '查看', '10.255.0.18', '用户管理页面', 'power', NULL, '2020-04-10 16:25', 'admin', NULL);
+INSERT INTO `power_log` VALUES (418, '删除', '10.255.0.18', '用户管理', 'power', NULL, '2020-04-10 16:26', 'admin', 'admin11');
+INSERT INTO `power_log` VALUES (419, '删除', '10.255.0.18', '用户管理', 'power', NULL, '2020-04-10 16:26', 'admin', '432432');
+INSERT INTO `power_log` VALUES (420, '删除', '10.255.0.18', '用户管理', 'power', NULL, '2020-04-10 16:26', 'admin', 'hushi');
+INSERT INTO `power_log` VALUES (421, '查看', '10.255.0.18', '用户管理页面', 'power', NULL, '2020-04-10 16:26', 'admin', NULL);
+INSERT INTO `power_log` VALUES (422, '查看', '10.255.0.18', '用户管理页面', 'power', NULL, '2020-04-10 16:26', 'admin', NULL);
+INSERT INTO `power_log` VALUES (423, '查看', '10.255.0.18', '用户管理页面', 'power', NULL, '2020-04-10 16:26', 'admin', NULL);
+INSERT INTO `power_log` VALUES (424, '查看', '10.255.0.18', '用户管理页面', 'power', NULL, '2020-04-10 16:27', 'admin', NULL);
+INSERT INTO `power_log` VALUES (425, '查看', '10.255.0.18', '用户管理页面', 'power', NULL, '2020-04-10 16:27', 'admin', NULL);
+INSERT INTO `power_log` VALUES (426, '查看', '10.255.0.18', '用户管理页面', 'power', NULL, '2020-04-10 16:29', 'admin', NULL);
+INSERT INTO `power_log` VALUES (427, '查看', '10.255.0.18', '用户管理页面', 'power', NULL, '2020-04-10 16:30', 'admin', NULL);
+INSERT INTO `power_log` VALUES (428, '查看', '10.255.0.18', '用户管理页面', 'power', NULL, '2020-04-10 16:30', 'admin', NULL);
+INSERT INTO `power_log` VALUES (429, '新增', '10.255.0.18', '用户管理', 'power', NULL, '2020-04-10 16:30', 'admin', '32421432');
+INSERT INTO `power_log` VALUES (430, '查看', '10.255.0.18', '用户管理页面', 'power', NULL, '2020-04-10 16:30', 'admin', NULL);
+INSERT INTO `power_log` VALUES (431, '新增', '10.255.0.18', '用户管理', 'power', NULL, '2020-04-10 16:31', 'admin', '321321');
+INSERT INTO `power_log` VALUES (432, '查看', '10.255.0.18', '用户管理页面', 'power', NULL, '2020-04-10 16:31', 'admin', NULL);
+INSERT INTO `power_log` VALUES (433, '新增', '10.255.0.18', '用户管理', 'power', NULL, '2020-04-10 16:31', 'admin', '2432432');
+INSERT INTO `power_log` VALUES (434, '查看', '10.255.0.18', '用户管理页面', 'power', NULL, '2020-04-10 16:31', 'admin', NULL);
+INSERT INTO `power_log` VALUES (435, '修改', '10.255.0.18', '用户管理', 'power', NULL, '2020-04-10 16:31', 'admin', '321321');
+INSERT INTO `power_log` VALUES (436, '删除', '10.255.0.18', '用户管理', 'power', NULL, '2020-04-10 16:31', 'admin', '2432432');
+INSERT INTO `power_log` VALUES (437, '删除', '10.255.0.18', '用户管理', 'power', NULL, '2020-04-10 16:31', 'admin', '321321');
+INSERT INTO `power_log` VALUES (438, '查看', '10.255.0.18', '用户管理页面', 'power', NULL, '2020-04-10 16:32', 'admin', NULL);
+INSERT INTO `power_log` VALUES (439, '修改', '10.255.0.18', '用户管理', 'power', NULL, '2020-04-10 16:33', 'admin', '32421432');
+INSERT INTO `power_log` VALUES (440, '查看', '10.255.0.18', '用户管理页面', 'power', NULL, '2020-04-10 16:33', 'admin', NULL);
+INSERT INTO `power_log` VALUES (441, '修改', '10.255.0.18', '用户管理', 'power', NULL, '2020-04-10 16:33', 'admin', '32421432');
+INSERT INTO `power_log` VALUES (442, '删除', '10.255.0.18', '用户管理', 'power', NULL, '2020-04-10 16:33', 'admin', '32421432');
+INSERT INTO `power_log` VALUES (443, '查看', '10.255.0.18', '用户管理页面', 'power', NULL, '2020-04-10 16:33', 'admin', NULL);
+INSERT INTO `power_log` VALUES (444, '查看', '10.255.0.18', '角色管理页面', 'power', NULL, '2020-04-10 16:33', 'admin', NULL);
+INSERT INTO `power_log` VALUES (445, '查看', '10.255.0.18', '用户管理页面', 'power', NULL, '2020-04-10 16:33', 'admin', NULL);
+INSERT INTO `power_log` VALUES (446, '新增', '10.255.0.18', '用户管理', 'power', NULL, '2020-04-10 16:34', 'admin', '543543');
+INSERT INTO `power_log` VALUES (447, '查看', '10.255.0.18', '用户管理页面', 'power', NULL, '2020-04-10 16:34', 'admin', NULL);
+INSERT INTO `power_log` VALUES (448, '查看', '10.255.0.18', '用户管理页面', 'power', NULL, '2020-04-10 16:35', 'admin', NULL);
+INSERT INTO `power_log` VALUES (449, '删除', '10.255.0.18', '用户管理', 'power', NULL, '2020-04-10 16:35', 'admin', '543543');
+INSERT INTO `power_log` VALUES (450, '查看', '10.255.0.18', '用户管理页面', 'power', NULL, '2020-04-10 16:38', 'admin', NULL);
+INSERT INTO `power_log` VALUES (451, '查看', '10.255.0.18', '用户管理页面', 'power', NULL, '2020-04-10 16:38', 'admin', NULL);
+INSERT INTO `power_log` VALUES (452, '登录', '10.255.0.18', '用户登录成功', 'power', NULL, '2020-04-10 16:52', 'admin', NULL);
+INSERT INTO `power_log` VALUES (453, '查看', '10.255.0.18', '用户管理页面', 'power', NULL, '2020-04-10 16:52', 'admin', NULL);
+INSERT INTO `power_log` VALUES (454, '新增', '10.255.0.18', '用户管理', 'power', NULL, '2020-04-10 16:52', 'admin', '123456');
+INSERT INTO `power_log` VALUES (455, '查看', '10.255.0.18', '用户管理页面', 'power', NULL, '2020-04-10 16:52', 'admin', NULL);
+INSERT INTO `power_log` VALUES (456, '删除', '10.255.0.18', '用户管理', 'power', NULL, '2020-04-10 16:53', 'admin', '123456');
+INSERT INTO `power_log` VALUES (457, '登录', '10.255.0.18', '用户登录成功', 'power', NULL, '2020-04-10 17:12', 'admin', NULL);
+INSERT INTO `power_log` VALUES (458, '查看', '10.255.0.18', '用户管理页面', 'power', NULL, '2020-04-10 17:12', 'admin', NULL);
+INSERT INTO `power_log` VALUES (459, '查看', '10.255.0.18', '用户管理页面', 'power', NULL, '2020-04-10 17:12', 'admin', NULL);
+INSERT INTO `power_log` VALUES (460, '查看', '10.255.0.18', '角色管理页面', 'power', NULL, '2020-04-10 17:12', 'admin', NULL);
+INSERT INTO `power_log` VALUES (461, '查看', '10.255.0.18', '用户管理页面', 'power', NULL, '2020-04-10 17:12', 'admin', NULL);
+INSERT INTO `power_log` VALUES (462, '登录', '10.255.0.18', '用户登录成功', 'power', NULL, '2020-04-10 17:12', 'admin', NULL);
+INSERT INTO `power_log` VALUES (463, '查看', '10.255.0.18', '用户管理页面', 'power', NULL, '2020-04-10 17:12', 'admin', NULL);
+INSERT INTO `power_log` VALUES (464, '查看', '10.255.0.18', '用户管理页面', 'power', NULL, '2020-04-10 17:12', 'admin', NULL);
+INSERT INTO `power_log` VALUES (465, '登录', '10.255.0.18', '用户登录成功', 'power', NULL, '2020-04-10 17:22', 'admin', NULL);
+INSERT INTO `power_log` VALUES (466, '查看', '10.255.0.18', '用户管理页面', 'power', NULL, '2020-04-10 17:22', 'admin', NULL);
+INSERT INTO `power_log` VALUES (467, '登录', '10.255.0.18', '用户登录成功', 'power', NULL, '2020-04-10 17:24', 'admin', NULL);
+INSERT INTO `power_log` VALUES (468, '登录', '10.255.0.18', '用户登录成功', 'power', NULL, '2020-04-10 17:36', 'admin', NULL);
+INSERT INTO `power_log` VALUES (469, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-13 11:03', 'admin', NULL);
+INSERT INTO `power_log` VALUES (470, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-13 11:03', 'admin', NULL);
+INSERT INTO `power_log` VALUES (471, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-13 11:48', 'admin', NULL);
+INSERT INTO `power_log` VALUES (472, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-13 11:48', 'admin', NULL);
+INSERT INTO `power_log` VALUES (473, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-13 11:49', 'admin', NULL);
+INSERT INTO `power_log` VALUES (474, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-13 11:49', 'admin', NULL);
+INSERT INTO `power_log` VALUES (475, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-13 11:56', 'admin', NULL);
+INSERT INTO `power_log` VALUES (476, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-13 14:17', 'admin', NULL);
+INSERT INTO `power_log` VALUES (477, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-13 14:17', 'admin', NULL);
+INSERT INTO `power_log` VALUES (478, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-13 14:32', 'admin', NULL);
+INSERT INTO `power_log` VALUES (479, '查看', '192.168.179.1', '角色管理页面', 'power', NULL, '2020-04-13 14:32', 'admin', NULL);
+INSERT INTO `power_log` VALUES (480, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-13 14:32', 'admin', NULL);
+INSERT INTO `power_log` VALUES (481, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-13 14:32', 'admin', NULL);
+INSERT INTO `power_log` VALUES (482, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-14 09:44', 'admin', NULL);
+INSERT INTO `power_log` VALUES (483, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-14 09:44', 'admin', NULL);
+INSERT INTO `power_log` VALUES (484, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-14 10:00', 'admin', NULL);
+INSERT INTO `power_log` VALUES (485, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-14 10:02', 'admin', NULL);
+INSERT INTO `power_log` VALUES (486, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-14 10:52', 'admin', NULL);
+INSERT INTO `power_log` VALUES (487, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-14 10:55', 'admin', NULL);
+INSERT INTO `power_log` VALUES (488, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-14 11:00', 'admin', NULL);
+INSERT INTO `power_log` VALUES (489, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-14 11:02', 'admin', NULL);
+INSERT INTO `power_log` VALUES (490, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-14 11:03', 'admin', NULL);
+INSERT INTO `power_log` VALUES (491, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-14 11:11', 'admin', NULL);
+INSERT INTO `power_log` VALUES (492, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-14 13:50', 'admin', NULL);
+INSERT INTO `power_log` VALUES (493, '登录', '192.168.179.1', '用户密码错误', 'power', NULL, '2020-04-14 13:54', 'admin', '已错误【1】次');
+INSERT INTO `power_log` VALUES (494, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-14 13:55', 'admin', NULL);
+INSERT INTO `power_log` VALUES (495, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-14 13:56', 'admin', NULL);
+INSERT INTO `power_log` VALUES (496, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-14 13:56', 'admin', NULL);
+INSERT INTO `power_log` VALUES (497, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-14 14:00', 'admin', NULL);
+INSERT INTO `power_log` VALUES (498, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-14 14:00', 'admin', NULL);
+INSERT INTO `power_log` VALUES (499, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-14 14:11', 'admin', NULL);
+INSERT INTO `power_log` VALUES (500, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-14 14:11', 'admin', NULL);
+INSERT INTO `power_log` VALUES (501, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-14 14:23', 'admin', NULL);
+INSERT INTO `power_log` VALUES (502, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-14 14:23', 'admin', NULL);
+INSERT INTO `power_log` VALUES (503, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-14 14:23', 'admin', NULL);
+INSERT INTO `power_log` VALUES (504, '新增', '192.168.179.1', '用户管理', 'power', NULL, '2020-04-14 14:23', 'admin', '1');
+INSERT INTO `power_log` VALUES (505, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-14 14:23', 'admin', NULL);
+INSERT INTO `power_log` VALUES (506, '新增', '192.168.179.1', '用户管理', 'power', NULL, '2020-04-14 14:24', 'admin', '2');
+INSERT INTO `power_log` VALUES (507, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-14 14:24', 'admin', NULL);
+INSERT INTO `power_log` VALUES (508, '新增', '192.168.179.1', '用户管理', 'power', NULL, '2020-04-14 14:24', 'admin', '3');
+INSERT INTO `power_log` VALUES (509, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-14 14:24', 'admin', NULL);
+INSERT INTO `power_log` VALUES (510, '新增', '192.168.179.1', '用户管理', 'power', NULL, '2020-04-14 14:24', 'admin', '4');
+INSERT INTO `power_log` VALUES (511, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-14 14:24', 'admin', NULL);
+INSERT INTO `power_log` VALUES (512, '新增', '192.168.179.1', '用户管理', 'power', NULL, '2020-04-14 14:24', 'admin', '5');
+INSERT INTO `power_log` VALUES (513, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-14 14:24', 'admin', NULL);
+INSERT INTO `power_log` VALUES (514, '新增', '192.168.179.1', '用户管理', 'power', NULL, '2020-04-14 14:24', 'admin', '6');
+INSERT INTO `power_log` VALUES (515, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-14 14:24', 'admin', NULL);
+INSERT INTO `power_log` VALUES (516, '新增', '192.168.179.1', '用户管理', 'power', NULL, '2020-04-14 14:24', 'admin', '7');
+INSERT INTO `power_log` VALUES (517, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-14 14:24', 'admin', NULL);
+INSERT INTO `power_log` VALUES (518, '新增', '192.168.179.1', '用户管理', 'power', NULL, '2020-04-14 14:25', 'admin', '8');
+INSERT INTO `power_log` VALUES (519, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-14 14:25', 'admin', NULL);
+INSERT INTO `power_log` VALUES (520, '新增', '192.168.179.1', '用户管理', 'power', NULL, '2020-04-14 14:25', 'admin', '9');
+INSERT INTO `power_log` VALUES (521, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-14 14:25', 'admin', NULL);
+INSERT INTO `power_log` VALUES (522, '新增', '192.168.179.1', '用户管理', 'power', NULL, '2020-04-14 14:25', 'admin', '10');
+INSERT INTO `power_log` VALUES (523, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-14 14:25', 'admin', NULL);
+INSERT INTO `power_log` VALUES (524, '新增', '192.168.179.1', '用户管理', 'power', NULL, '2020-04-14 14:26', 'admin', '11');
+INSERT INTO `power_log` VALUES (525, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-14 14:26', 'admin', NULL);
+INSERT INTO `power_log` VALUES (526, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-14 14:27', 'admin', NULL);
+INSERT INTO `power_log` VALUES (527, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-14 14:27', 'admin', NULL);
+INSERT INTO `power_log` VALUES (528, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-14 14:32', 'admin', NULL);
+INSERT INTO `power_log` VALUES (529, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-14 14:38', 'admin', NULL);
+INSERT INTO `power_log` VALUES (530, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-14 15:18', 'admin', NULL);
+INSERT INTO `power_log` VALUES (531, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-14 15:18', 'admin', NULL);
+INSERT INTO `power_log` VALUES (532, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-14 15:18', 'admin', NULL);
+INSERT INTO `power_log` VALUES (533, '查看', '192.168.179.1', '角色管理页面', 'power', NULL, '2020-04-14 15:18', 'admin', NULL);
+INSERT INTO `power_log` VALUES (534, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-14 15:18', 'admin', NULL);
+INSERT INTO `power_log` VALUES (535, '查看', '192.168.179.1', '角色管理页面', 'power', NULL, '2020-04-14 15:18', 'admin', NULL);
+INSERT INTO `power_log` VALUES (536, '查看', '192.168.179.1', '科室管理页面', 'power', NULL, '2020-04-14 15:19', 'admin', NULL);
+INSERT INTO `power_log` VALUES (537, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-14 15:19', 'admin', NULL);
+INSERT INTO `power_log` VALUES (538, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-14 15:19', 'admin', NULL);
+INSERT INTO `power_log` VALUES (539, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-14 15:19', 'admin', NULL);
+INSERT INTO `power_log` VALUES (540, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-14 15:19', 'admin', NULL);
+INSERT INTO `power_log` VALUES (541, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-14 15:20', 'admin', NULL);
+INSERT INTO `power_log` VALUES (542, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-14 15:20', 'admin', NULL);
+INSERT INTO `power_log` VALUES (543, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-14 15:20', 'admin', NULL);
+INSERT INTO `power_log` VALUES (544, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-14 15:21', 'admin', NULL);
+INSERT INTO `power_log` VALUES (545, '查看', '192.168.179.1', '用户分配菜单页面', 'power', NULL, '2020-04-14 15:21', 'admin', NULL);
+INSERT INTO `power_log` VALUES (546, '查看', '192.168.179.1', '角色管理页面', 'power', NULL, '2020-04-14 15:21', 'admin', NULL);
+INSERT INTO `power_log` VALUES (547, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-14 15:21', 'admin', NULL);
+INSERT INTO `power_log` VALUES (548, '查看', '192.168.179.1', '角色管理页面', 'power', NULL, '2020-04-14 15:21', 'admin', NULL);
+INSERT INTO `power_log` VALUES (549, '查看', '192.168.179.1', '科室管理页面', 'power', NULL, '2020-04-14 15:21', 'admin', NULL);
+INSERT INTO `power_log` VALUES (550, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-14 15:22', 'admin', NULL);
+INSERT INTO `power_log` VALUES (551, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-14 15:22', 'admin', NULL);
+INSERT INTO `power_log` VALUES (552, '查看', '192.168.179.1', '角色管理页面', 'power', NULL, '2020-04-14 15:22', 'admin', NULL);
+INSERT INTO `power_log` VALUES (553, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-14 15:22', 'admin', NULL);
+INSERT INTO `power_log` VALUES (554, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-14 15:22', 'admin', NULL);
+INSERT INTO `power_log` VALUES (555, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-14 15:24', 'admin', NULL);
+INSERT INTO `power_log` VALUES (556, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-15 08:53', 'admin', NULL);
+INSERT INTO `power_log` VALUES (557, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-15 09:01', 'admin', NULL);
+INSERT INTO `power_log` VALUES (558, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-15 09:01', 'admin', NULL);
+INSERT INTO `power_log` VALUES (559, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-15 09:01', 'admin', NULL);
+INSERT INTO `power_log` VALUES (560, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-15 09:03', 'admin', NULL);
+INSERT INTO `power_log` VALUES (561, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-15 09:04', 'admin', NULL);
+INSERT INTO `power_log` VALUES (562, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-15 09:04', 'admin', NULL);
+INSERT INTO `power_log` VALUES (563, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-15 09:04', 'admin', NULL);
+INSERT INTO `power_log` VALUES (564, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-15 09:04', 'admin', NULL);
+INSERT INTO `power_log` VALUES (565, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-15 09:04', 'admin', NULL);
+INSERT INTO `power_log` VALUES (566, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-15 09:04', 'admin', NULL);
+INSERT INTO `power_log` VALUES (567, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-15 09:05', 'admin', NULL);
+INSERT INTO `power_log` VALUES (568, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-15 09:05', 'admin', NULL);
+INSERT INTO `power_log` VALUES (569, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-15 09:05', 'admin', NULL);
+INSERT INTO `power_log` VALUES (570, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-15 09:05', 'admin', NULL);
+INSERT INTO `power_log` VALUES (571, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-15 09:05', 'admin', NULL);
+INSERT INTO `power_log` VALUES (572, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-15 09:06', 'admin', NULL);
+INSERT INTO `power_log` VALUES (573, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-15 09:07', 'admin', NULL);
+INSERT INTO `power_log` VALUES (574, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-15 09:07', 'admin', NULL);
+INSERT INTO `power_log` VALUES (575, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-15 09:07', 'admin', NULL);
+INSERT INTO `power_log` VALUES (576, '查看', '192.168.179.1', '角色管理页面', 'power', NULL, '2020-04-15 09:07', 'admin', NULL);
+INSERT INTO `power_log` VALUES (577, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-15 09:07', 'admin', NULL);
+INSERT INTO `power_log` VALUES (578, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-15 09:07', 'admin', NULL);
+INSERT INTO `power_log` VALUES (579, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-15 09:08', 'admin', NULL);
+INSERT INTO `power_log` VALUES (580, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-15 09:08', 'admin', NULL);
+INSERT INTO `power_log` VALUES (581, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-15 09:08', 'admin', NULL);
+INSERT INTO `power_log` VALUES (582, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-15 09:08', 'admin', NULL);
+INSERT INTO `power_log` VALUES (583, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-15 09:08', 'admin', NULL);
+INSERT INTO `power_log` VALUES (584, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-15 09:10', 'admin', NULL);
+INSERT INTO `power_log` VALUES (585, '查看', '192.168.179.1', '角色管理页面', 'power', NULL, '2020-04-15 09:10', 'admin', NULL);
+INSERT INTO `power_log` VALUES (586, '查看', '192.168.179.1', '科室管理页面', 'power', NULL, '2020-04-15 09:10', 'admin', NULL);
+INSERT INTO `power_log` VALUES (587, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-15 09:10', 'admin', NULL);
+INSERT INTO `power_log` VALUES (588, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-15 09:11', 'admin', NULL);
+INSERT INTO `power_log` VALUES (589, '查看', '192.168.179.1', '角色管理页面', 'power', NULL, '2020-04-15 09:11', 'admin', NULL);
+INSERT INTO `power_log` VALUES (590, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-15 09:11', 'admin', NULL);
+INSERT INTO `power_log` VALUES (591, '查看', '192.168.179.1', '角色管理页面', 'power', NULL, '2020-04-15 09:11', 'admin', NULL);
+INSERT INTO `power_log` VALUES (592, '查看', '192.168.179.1', '科室管理页面', 'power', NULL, '2020-04-15 09:11', 'admin', NULL);
+INSERT INTO `power_log` VALUES (593, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-15 09:12', 'admin', NULL);
+INSERT INTO `power_log` VALUES (594, '查看', '192.168.179.1', '用户分配菜单页面', 'power', NULL, '2020-04-15 09:12', 'admin', NULL);
+INSERT INTO `power_log` VALUES (595, '登录', '10.255.0.20', '用户登录成功', 'power', NULL, '2020-04-15 09:24', 'admin', NULL);
+INSERT INTO `power_log` VALUES (596, '查看', '10.255.0.20', '用户管理页面', 'power', NULL, '2020-04-15 09:24', 'admin', NULL);
+INSERT INTO `power_log` VALUES (597, '查看', '10.255.0.20', '用户分配菜单页面', 'power', NULL, '2020-04-15 09:24', 'admin', NULL);
+INSERT INTO `power_log` VALUES (598, '登录', '10.255.0.20', '用户登录成功', 'power', NULL, '2020-04-15 09:28', 'admin', NULL);
+INSERT INTO `power_log` VALUES (599, '查看', '10.255.0.20', '用户管理页面', 'power', NULL, '2020-04-15 09:28', 'admin', NULL);
+INSERT INTO `power_log` VALUES (600, '查看', '10.255.0.20', '用户分配菜单页面', 'power', NULL, '2020-04-15 09:28', 'admin', NULL);
+INSERT INTO `power_log` VALUES (601, '查看', '10.255.0.20', '用户管理页面', 'power', NULL, '2020-04-15 09:30', 'admin', NULL);
+INSERT INTO `power_log` VALUES (602, '查看', '10.255.0.20', '用户分配菜单页面', 'power', NULL, '2020-04-15 09:30', 'admin', NULL);
+INSERT INTO `power_log` VALUES (603, '查看', '10.255.0.20', '用户管理页面', 'power', NULL, '2020-04-15 09:31', 'admin', NULL);
+INSERT INTO `power_log` VALUES (604, '查看', '10.255.0.20', '用户分配菜单页面', 'power', NULL, '2020-04-15 09:31', 'admin', NULL);
+INSERT INTO `power_log` VALUES (605, '查看', '10.255.0.20', '用户管理页面', 'power', NULL, '2020-04-15 09:32', 'admin', NULL);
+INSERT INTO `power_log` VALUES (606, '查看', '10.255.0.20', '用户分配菜单页面', 'power', NULL, '2020-04-15 09:32', 'admin', NULL);
+INSERT INTO `power_log` VALUES (607, '修改分配', '10.255.0.20', '用户分配菜单', 'power', NULL, '2020-04-15 09:32', 'admin', '10');
+INSERT INTO `power_log` VALUES (608, '修改分配', '10.255.0.20', '用户分配菜单', 'power', NULL, '2020-04-15 09:33', 'admin', '10');
+INSERT INTO `power_log` VALUES (609, '修改分配', '10.255.0.20', '用户分配菜单', 'power', NULL, '2020-04-15 09:33', 'admin', '11');
+INSERT INTO `power_log` VALUES (610, '查看', '10.255.0.20', '用户管理页面', 'power', NULL, '2020-04-15 09:33', 'admin', NULL);
+INSERT INTO `power_log` VALUES (611, '查看', '10.255.0.20', '用户分配菜单页面', 'power', NULL, '2020-04-15 09:33', 'admin', NULL);
+INSERT INTO `power_log` VALUES (612, '登录', '10.255.0.20', '用户登录成功', 'power', NULL, '2020-04-15 09:49', 'admin', NULL);
+INSERT INTO `power_log` VALUES (613, '登录', '10.255.0.20', '用户登录成功', 'power', NULL, '2020-04-15 09:55', 'admin', NULL);
+INSERT INTO `power_log` VALUES (614, '登录', '10.255.0.20', '用户登录成功', 'power', NULL, '2020-04-15 10:09', 'admin', NULL);
+INSERT INTO `power_log` VALUES (615, '登录', '10.255.0.20', '用户登录成功', 'power', NULL, '2020-04-15 10:29', 'admin', NULL);
+INSERT INTO `power_log` VALUES (616, '登录', '10.255.0.20', '用户登录成功', 'power', NULL, '2020-04-15 10:31', 'admin', NULL);
+INSERT INTO `power_log` VALUES (617, '登录', '10.255.0.20', '用户登录成功', 'power', NULL, '2020-04-15 10:56', 'admin', NULL);
+INSERT INTO `power_log` VALUES (618, '登录', '10.255.0.20', '用户登录成功', 'power', NULL, '2020-04-15 10:57', 'admin', NULL);
+INSERT INTO `power_log` VALUES (619, '登录', '10.255.0.20', '用户登录成功', 'power', NULL, '2020-04-15 10:58', 'admin', NULL);
+INSERT INTO `power_log` VALUES (620, '登录', '10.255.0.20', '用户登录成功', 'power', NULL, '2020-04-15 11:03', 'admin', NULL);
+INSERT INTO `power_log` VALUES (621, '登录', '10.255.0.20', '用户登录成功', 'power', NULL, '2020-04-15 11:11', 'admin', NULL);
+INSERT INTO `power_log` VALUES (622, '登录', '10.255.0.20', '用户登录成功', 'power', NULL, '2020-04-15 11:14', 'admin', NULL);
+INSERT INTO `power_log` VALUES (623, '登录', '10.255.0.20', '用户登录成功', 'power', NULL, '2020-04-15 11:28', 'admin', NULL);
+INSERT INTO `power_log` VALUES (624, '登录', '10.255.0.20', '用户登录成功', 'power', NULL, '2020-04-15 11:28', 'admin', NULL);
+INSERT INTO `power_log` VALUES (625, '登录', '10.255.0.20', '用户登录成功', 'power', NULL, '2020-04-15 11:28', 'admin', NULL);
+INSERT INTO `power_log` VALUES (626, '登录', '10.255.0.20', '用户登录成功', 'power', NULL, '2020-04-15 11:28', 'admin', NULL);
+INSERT INTO `power_log` VALUES (627, '登录', '10.255.0.20', '用户登录成功', 'power', NULL, '2020-04-15 11:29', 'admin', NULL);
+INSERT INTO `power_log` VALUES (628, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-15 16:52', 'admin', NULL);
+INSERT INTO `power_log` VALUES (629, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-15 16:54', 'admin', NULL);
+INSERT INTO `power_log` VALUES (630, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-15 16:58', 'admin', NULL);
+INSERT INTO `power_log` VALUES (631, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-15 17:20', 'admin', NULL);
+INSERT INTO `power_log` VALUES (632, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-15 17:23', 'admin', NULL);
+INSERT INTO `power_log` VALUES (633, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-15 17:24', 'admin', NULL);
+INSERT INTO `power_log` VALUES (634, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-15 17:39', 'admin', NULL);
+INSERT INTO `power_log` VALUES (635, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-15 17:39', 'admin', NULL);
+INSERT INTO `power_log` VALUES (636, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-15 17:39', 'admin', NULL);
+INSERT INTO `power_log` VALUES (637, '查看', '192.168.179.1', '角色管理页面', 'power', NULL, '2020-04-15 17:39', 'admin', NULL);
+INSERT INTO `power_log` VALUES (638, '查看', '192.168.179.1', '科室管理页面', 'power', NULL, '2020-04-15 17:39', 'admin', NULL);
+INSERT INTO `power_log` VALUES (639, '查看', '192.168.179.1', '用户分配菜单页面', 'power', NULL, '2020-04-15 17:39', 'admin', NULL);
+INSERT INTO `power_log` VALUES (640, '查看', '192.168.179.1', '角色分配菜单页面', 'power', NULL, '2020-04-15 17:39', 'admin', NULL);
+INSERT INTO `power_log` VALUES (641, '查看', '192.168.179.1', '日志管理页面', 'power', NULL, '2020-04-15 17:39', 'admin', NULL);
+INSERT INTO `power_log` VALUES (642, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-15 17:39', 'admin', NULL);
+INSERT INTO `power_log` VALUES (643, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-18 10:51', 'admin', NULL);
+INSERT INTO `power_log` VALUES (644, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-18 10:51', 'admin', NULL);
+INSERT INTO `power_log` VALUES (645, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-18 10:51', 'admin', NULL);
+INSERT INTO `power_log` VALUES (646, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-18 10:54', 'admin', NULL);
+INSERT INTO `power_log` VALUES (647, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-18 10:54', 'admin', NULL);
+INSERT INTO `power_log` VALUES (648, '查看', '192.168.179.1', '科室管理页面', 'power', NULL, '2020-04-18 10:55', 'admin', NULL);
+INSERT INTO `power_log` VALUES (649, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-18 10:55', 'admin', NULL);
+INSERT INTO `power_log` VALUES (650, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-18 10:55', 'admin', NULL);
+INSERT INTO `power_log` VALUES (651, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-18 10:55', '10', NULL);
+INSERT INTO `power_log` VALUES (652, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-18 10:56', 'admin', NULL);
+INSERT INTO `power_log` VALUES (653, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-18 10:56', 'admin', NULL);
+INSERT INTO `power_log` VALUES (654, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-18 10:59', '10', NULL);
+INSERT INTO `power_log` VALUES (655, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-18 11:07', '10', NULL);
+INSERT INTO `power_log` VALUES (656, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-18 11:07', '10', NULL);
+INSERT INTO `power_log` VALUES (657, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-18 11:07', '10', NULL);
+INSERT INTO `power_log` VALUES (658, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-18 11:07', 'admin', NULL);
+INSERT INTO `power_log` VALUES (659, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-18 11:07', 'admin', NULL);
+INSERT INTO `power_log` VALUES (660, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-18 11:07', 'admin', NULL);
+INSERT INTO `power_log` VALUES (661, '查看', '192.168.179.1', '角色分配菜单页面', 'power', NULL, '2020-04-18 11:07', 'admin', NULL);
+INSERT INTO `power_log` VALUES (662, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-18 11:08', 'admin', NULL);
+INSERT INTO `power_log` VALUES (663, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-18 11:11', '10', NULL);
+INSERT INTO `power_log` VALUES (664, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-18 11:14', 'admin', NULL);
+INSERT INTO `power_log` VALUES (665, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-18 11:14', 'admin', NULL);
+INSERT INTO `power_log` VALUES (666, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-18 11:15', 'admin', NULL);
+INSERT INTO `power_log` VALUES (667, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-18 11:17', '10', NULL);
+INSERT INTO `power_log` VALUES (668, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-18 11:46', 'admin', NULL);
+INSERT INTO `power_log` VALUES (669, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-18 11:47', 'admin', NULL);
+INSERT INTO `power_log` VALUES (670, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-18 11:47', '10', NULL);
+INSERT INTO `power_log` VALUES (671, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-18 11:47', '10', NULL);
+INSERT INTO `power_log` VALUES (672, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-16 17:49', 'admin', NULL);
+INSERT INTO `power_log` VALUES (673, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-16 18:02', 'admin', NULL);
+INSERT INTO `power_log` VALUES (674, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-16 18:02', 'admin', NULL);
+INSERT INTO `power_log` VALUES (675, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-16 18:05', 'admin', NULL);
+INSERT INTO `power_log` VALUES (676, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-17 13:44', 'admin', NULL);
+INSERT INTO `power_log` VALUES (677, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-17 13:46', 'admin', NULL);
+INSERT INTO `power_log` VALUES (678, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-17 13:54', 'admin', NULL);
+INSERT INTO `power_log` VALUES (679, '登录', '10.255.0.26', '用户登录成功', 'power', NULL, '2020-04-17 14:01', 'admin', NULL);
+INSERT INTO `power_log` VALUES (680, '登录', '10.255.0.26', '用户登录成功', 'power', NULL, '2020-04-17 14:14', 'admin', NULL);
+INSERT INTO `power_log` VALUES (681, '登录', '10.255.0.26', '用户密码错误', 'power', NULL, '2020-04-17 14:14', 'admin1', '已错误【1】次');
+INSERT INTO `power_log` VALUES (682, '登录', '10.255.0.26', '用户登录成功', 'power', NULL, '2020-04-17 14:14', 'admin', NULL);
+INSERT INTO `power_log` VALUES (683, '查看', '10.255.0.26', '用户管理页面', 'power', NULL, '2020-04-17 14:14', 'admin', NULL);
+INSERT INTO `power_log` VALUES (684, '登录', '10.255.0.26', '用户登录成功', 'power', NULL, '2020-04-17 14:14', '2', NULL);
+INSERT INTO `power_log` VALUES (685, '登录', '10.255.0.26', '用户登录成功', 'power', NULL, '2020-04-17 14:15', '2', NULL);
+INSERT INTO `power_log` VALUES (686, '查看', '10.255.0.26', '用户管理页面', 'power', NULL, '2020-04-17 14:15', '2', NULL);
+INSERT INTO `power_log` VALUES (687, '登录', '10.255.0.26', '用户登录成功', 'power', NULL, '2020-04-17 14:15', '9', NULL);
+INSERT INTO `power_log` VALUES (688, '登录', '10.255.0.26', '用户登录成功', 'power', NULL, '2020-04-17 14:15', 'admin', NULL);
+INSERT INTO `power_log` VALUES (689, '登录', '10.255.0.26', '用户登录成功', 'power', NULL, '2020-04-17 14:15', 'admin', NULL);
+INSERT INTO `power_log` VALUES (690, '查看', '10.255.0.26', '用户管理页面', 'power', NULL, '2020-04-17 14:15', 'admin', NULL);
+INSERT INTO `power_log` VALUES (691, '登录', '10.255.0.26', '用户登录成功', 'power', NULL, '2020-04-17 14:15', '10', NULL);
+INSERT INTO `power_log` VALUES (692, '登录', '10.255.0.26', '用户登录成功', 'power', NULL, '2020-04-17 14:15', '10', NULL);
+INSERT INTO `power_log` VALUES (693, '登录', '10.255.0.26', '用户登录成功', 'power', NULL, '2020-04-17 14:16', 'admin', NULL);
+INSERT INTO `power_log` VALUES (694, '登录', '10.255.0.26', '用户登录成功', 'power', NULL, '2020-04-17 14:16', 'admin', NULL);
+INSERT INTO `power_log` VALUES (695, '登录', '10.255.0.26', '用户登录成功', 'power', NULL, '2020-04-17 14:18', '10', NULL);
+INSERT INTO `power_log` VALUES (696, '登录', '10.255.0.26', '用户登录成功', 'power', NULL, '2020-04-17 14:19', '10', NULL);
+INSERT INTO `power_log` VALUES (697, '登录', '10.255.0.26', '用户登录成功', 'power', NULL, '2020-04-17 14:19', 'admin', NULL);
+INSERT INTO `power_log` VALUES (698, '登录', '10.255.0.26', '用户登录成功', 'power', NULL, '2020-04-17 14:19', 'admin', NULL);
+INSERT INTO `power_log` VALUES (699, '登录', '10.255.0.26', '用户登录成功', 'power', NULL, '2020-04-17 14:20', '10', NULL);
+INSERT INTO `power_log` VALUES (700, '登录', '10.255.0.26', '用户登录成功', 'power', NULL, '2020-04-17 14:20', '10', NULL);
+INSERT INTO `power_log` VALUES (701, '登录', '10.255.0.26', '用户登录成功', 'power', NULL, '2020-04-17 14:21', 'admin', NULL);
+INSERT INTO `power_log` VALUES (702, '登录', '10.255.0.26', '用户登录成功', 'power', NULL, '2020-04-17 14:21', 'admin', NULL);
+INSERT INTO `power_log` VALUES (703, '登录', '10.255.0.26', '用户登录成功', 'power', NULL, '2020-04-17 14:24', 'admin', NULL);
+INSERT INTO `power_log` VALUES (704, '查看', '10.255.0.26', '用户管理页面', 'power', NULL, '2020-04-17 14:24', 'admin', NULL);
+INSERT INTO `power_log` VALUES (705, '查看', '10.255.0.26', '用户管理页面', 'power', NULL, '2020-04-17 14:29', 'admin', NULL);
+INSERT INTO `power_log` VALUES (706, '登录', '10.255.0.26', '用户登录成功', 'power', NULL, '2020-04-17 14:29', 'admin', NULL);
+INSERT INTO `power_log` VALUES (707, '登录', '10.255.0.26', '用户登录成功', 'power', NULL, '2020-04-17 16:30', 'admin', NULL);
+INSERT INTO `power_log` VALUES (708, '登录', '10.255.0.26', '用户登录成功', 'power', NULL, '2020-04-17 16:30', 'admin', NULL);
+INSERT INTO `power_log` VALUES (709, '查看', '10.255.0.26', '用户管理页面', 'power', NULL, '2020-04-17 16:30', 'admin', NULL);
+INSERT INTO `power_log` VALUES (710, '登录', '10.255.0.26', '用户登录成功', 'power', NULL, '2020-04-17 16:30', '11', NULL);
+INSERT INTO `power_log` VALUES (711, '登录', '10.255.0.26', '用户登录成功', 'power', NULL, '2020-04-17 16:30', '10', NULL);
+INSERT INTO `power_log` VALUES (712, '登录', '10.255.0.26', '用户登录成功', 'power', NULL, '2020-04-17 16:30', '10', NULL);
+INSERT INTO `power_log` VALUES (713, '登录', '10.255.0.26', '用户登录成功', 'power', NULL, '2020-04-17 16:31', 'admin', NULL);
+INSERT INTO `power_log` VALUES (714, '登录', '10.255.0.26', '用户登录成功', 'power', NULL, '2020-04-17 16:31', 'admin', NULL);
+INSERT INTO `power_log` VALUES (715, '登录', '10.255.0.26', '用户登录成功', 'power', NULL, '2020-04-17 16:31', '11', NULL);
+INSERT INTO `power_log` VALUES (716, '登录', '10.255.0.26', '用户登录成功', 'power', NULL, '2020-04-17 16:31', '10', NULL);
+INSERT INTO `power_log` VALUES (717, '登录', '10.255.0.26', '用户登录成功', 'power', NULL, '2020-04-17 16:31', '10', NULL);
+INSERT INTO `power_log` VALUES (718, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-20 11:23', 'admin', NULL);
+INSERT INTO `power_log` VALUES (719, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-20 11:29', 'admin', NULL);
+INSERT INTO `power_log` VALUES (720, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-20 11:32', 'admin', NULL);
+INSERT INTO `power_log` VALUES (721, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-20 11:34', 'admin', NULL);
+INSERT INTO `power_log` VALUES (722, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-20 11:38', 'admin', NULL);
+INSERT INTO `power_log` VALUES (723, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-20 11:43', 'admin', NULL);
+INSERT INTO `power_log` VALUES (724, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-20 11:46', 'admin', NULL);
+INSERT INTO `power_log` VALUES (725, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-20 11:47', 'admin', NULL);
+INSERT INTO `power_log` VALUES (726, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-20 11:47', 'admin', NULL);
+INSERT INTO `power_log` VALUES (727, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-20 13:49', 'admin', NULL);
+INSERT INTO `power_log` VALUES (728, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-20 14:06', 'admin', NULL);
+INSERT INTO `power_log` VALUES (729, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-20 14:12', 'admin', NULL);
+INSERT INTO `power_log` VALUES (730, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-20 14:24', 'admin', NULL);
+INSERT INTO `power_log` VALUES (731, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-20 14:31', 'admin', NULL);
+INSERT INTO `power_log` VALUES (732, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-20 14:31', 'admin', NULL);
+INSERT INTO `power_log` VALUES (733, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-20 14:31', 'admin', NULL);
+INSERT INTO `power_log` VALUES (734, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-20 14:31', 'admin', NULL);
+INSERT INTO `power_log` VALUES (735, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-20 14:32', 'admin', NULL);
+INSERT INTO `power_log` VALUES (736, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-20 14:32', 'admin', NULL);
+INSERT INTO `power_log` VALUES (737, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-20 14:32', 'admin', NULL);
+INSERT INTO `power_log` VALUES (738, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-20 14:32', 'admin', NULL);
+INSERT INTO `power_log` VALUES (739, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-20 14:33', 'admin', NULL);
+INSERT INTO `power_log` VALUES (740, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-20 14:34', 'admin', NULL);
+INSERT INTO `power_log` VALUES (741, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-20 14:34', 'admin', NULL);
+INSERT INTO `power_log` VALUES (742, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-20 14:35', 'admin', NULL);
+INSERT INTO `power_log` VALUES (743, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-20 14:35', 'admin', NULL);
+INSERT INTO `power_log` VALUES (744, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-20 14:36', 'admin', NULL);
+INSERT INTO `power_log` VALUES (745, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-20 14:36', 'admin', NULL);
+INSERT INTO `power_log` VALUES (746, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-20 14:37', 'admin', NULL);
+INSERT INTO `power_log` VALUES (747, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-20 14:37', 'admin', NULL);
+INSERT INTO `power_log` VALUES (748, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-22 14:59', 'admin', NULL);
+INSERT INTO `power_log` VALUES (749, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-22 14:59', 'admin', NULL);
+INSERT INTO `power_log` VALUES (750, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-22 15:21', 'admin', NULL);
+INSERT INTO `power_log` VALUES (751, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-22 15:28', 'admin', NULL);
+INSERT INTO `power_log` VALUES (752, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-22 15:29', 'admin', NULL);
+INSERT INTO `power_log` VALUES (753, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-22 15:44', 'admin', NULL);
+INSERT INTO `power_log` VALUES (754, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-22 15:59', 'admin', NULL);
+INSERT INTO `power_log` VALUES (755, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-22 16:32', 'admin', NULL);
+INSERT INTO `power_log` VALUES (756, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-22 16:36', 'admin', NULL);
+INSERT INTO `power_log` VALUES (757, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-22 16:44', 'admin', NULL);
+INSERT INTO `power_log` VALUES (758, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-22 16:57', 'admin', NULL);
+INSERT INTO `power_log` VALUES (759, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-22 17:36', 'admin', NULL);
+INSERT INTO `power_log` VALUES (760, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-22 17:37', 'admin', NULL);
+INSERT INTO `power_log` VALUES (761, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-23 10:44', 'admin', NULL);
+INSERT INTO `power_log` VALUES (762, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-23 13:44', 'admin', NULL);
+INSERT INTO `power_log` VALUES (763, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-23 13:44', 'admin', NULL);
+INSERT INTO `power_log` VALUES (764, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-23 13:55', 'admin', NULL);
+INSERT INTO `power_log` VALUES (765, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-23 13:55', 'admin', NULL);
+INSERT INTO `power_log` VALUES (766, '查看', '192.168.179.1', '用户分配菜单页面', 'power', NULL, '2020-04-23 13:55', 'admin', NULL);
+INSERT INTO `power_log` VALUES (767, '修改分配', '192.168.179.1', '用户分配菜单', 'power', NULL, '2020-04-23 13:55', 'admin', '11');
+INSERT INTO `power_log` VALUES (768, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-23 13:55', '11', NULL);
+INSERT INTO `power_log` VALUES (769, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-23 13:55', '11', NULL);
+INSERT INTO `power_log` VALUES (770, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-23 14:11', '11', NULL);
+INSERT INTO `power_log` VALUES (771, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-23 14:11', '11', NULL);
+INSERT INTO `power_log` VALUES (772, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-23 14:11', '11', NULL);
+INSERT INTO `power_log` VALUES (773, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-23 14:17', '11', NULL);
+INSERT INTO `power_log` VALUES (774, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-23 14:17', '11', NULL);
+INSERT INTO `power_log` VALUES (775, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-23 14:17', 'admin', NULL);
+INSERT INTO `power_log` VALUES (776, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-23 14:17', 'admin', NULL);
+INSERT INTO `power_log` VALUES (777, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-23 14:17', 'admin', NULL);
+INSERT INTO `power_log` VALUES (778, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-23 14:18', 'admin', NULL);
+INSERT INTO `power_log` VALUES (779, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-23 14:18', 'admin', NULL);
+INSERT INTO `power_log` VALUES (780, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-23 14:19', 'admin', NULL);
+INSERT INTO `power_log` VALUES (781, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-23 14:19', 'admin', NULL);
+INSERT INTO `power_log` VALUES (782, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-23 15:45', 'admin', NULL);
+INSERT INTO `power_log` VALUES (783, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-23 15:59', 'admin', NULL);
+INSERT INTO `power_log` VALUES (784, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-23 17:04', 'admin', NULL);
+INSERT INTO `power_log` VALUES (785, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-23 17:04', 'admin', NULL);
+INSERT INTO `power_log` VALUES (786, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-23 17:54', 'admin', NULL);
+INSERT INTO `power_log` VALUES (787, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-24 09:41', 'admin', NULL);
+INSERT INTO `power_log` VALUES (788, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-24 09:41', 'admin', NULL);
+INSERT INTO `power_log` VALUES (789, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-24 09:41', 'admin', NULL);
+INSERT INTO `power_log` VALUES (790, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-24 09:42', 'admin', NULL);
+INSERT INTO `power_log` VALUES (791, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-24 09:42', 'admin', NULL);
+INSERT INTO `power_log` VALUES (792, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-24 09:42', 'admin', NULL);
+INSERT INTO `power_log` VALUES (793, '查看', '192.168.179.1', '通知管理页面', 'power', NULL, '2020-04-24 09:42', 'admin', NULL);
+INSERT INTO `power_log` VALUES (794, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-24 09:42', 'admin', NULL);
+INSERT INTO `power_log` VALUES (795, '查看', '192.168.179.1', '通知管理页面', 'power', NULL, '2020-04-24 09:42', 'admin', NULL);
+INSERT INTO `power_log` VALUES (796, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-24 09:42', 'admin', NULL);
+INSERT INTO `power_log` VALUES (797, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-24 09:42', 'admin', NULL);
+INSERT INTO `power_log` VALUES (798, '查看', '192.168.179.1', '通知管理页面', 'power', NULL, '2020-04-24 09:42', 'admin', NULL);
+INSERT INTO `power_log` VALUES (799, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-24 09:43', 'admin', NULL);
+INSERT INTO `power_log` VALUES (800, '查看', '192.168.179.1', '通知管理页面', 'power', NULL, '2020-04-24 09:43', 'admin', NULL);
+INSERT INTO `power_log` VALUES (801, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-24 09:43', 'admin', NULL);
+INSERT INTO `power_log` VALUES (802, '查看', '192.168.179.1', '通知管理页面', 'power', NULL, '2020-04-24 09:43', 'admin', NULL);
+INSERT INTO `power_log` VALUES (803, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-24 09:43', 'admin', NULL);
+INSERT INTO `power_log` VALUES (804, '查看', '192.168.179.1', '通知管理页面', 'power', NULL, '2020-04-24 09:43', 'admin', NULL);
+INSERT INTO `power_log` VALUES (805, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-24 09:43', 'admin', NULL);
+INSERT INTO `power_log` VALUES (806, '查看', '192.168.179.1', '通知管理页面', 'power', NULL, '2020-04-24 09:43', 'admin', NULL);
+INSERT INTO `power_log` VALUES (807, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-24 09:43', 'admin', NULL);
+INSERT INTO `power_log` VALUES (808, '查看', '192.168.179.1', '通知管理页面', 'power', NULL, '2020-04-24 09:43', 'admin', NULL);
+INSERT INTO `power_log` VALUES (809, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-24 09:43', 'admin', NULL);
+INSERT INTO `power_log` VALUES (810, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-24 09:43', 'admin', NULL);
+INSERT INTO `power_log` VALUES (811, '查看', '192.168.179.1', '通知管理页面', 'power', NULL, '2020-04-24 09:43', 'admin', NULL);
+INSERT INTO `power_log` VALUES (812, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-24 09:43', 'admin', NULL);
+INSERT INTO `power_log` VALUES (813, '查看', '192.168.179.1', '通知管理页面', 'power', NULL, '2020-04-24 09:43', 'admin', NULL);
+INSERT INTO `power_log` VALUES (814, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-24 09:43', 'admin', NULL);
+INSERT INTO `power_log` VALUES (815, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-24 09:44', 'admin', NULL);
+INSERT INTO `power_log` VALUES (816, '查看', '192.168.179.1', '角色管理页面', 'power', NULL, '2020-04-24 09:44', 'admin', NULL);
+INSERT INTO `power_log` VALUES (817, '查看', '192.168.179.1', '科室管理页面', 'power', NULL, '2020-04-24 09:44', 'admin', NULL);
+INSERT INTO `power_log` VALUES (818, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-24 09:44', 'admin', NULL);
+INSERT INTO `power_log` VALUES (819, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-24 09:45', 'admin', NULL);
+INSERT INTO `power_log` VALUES (820, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-24 09:45', 'admin', NULL);
+INSERT INTO `power_log` VALUES (821, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-24 09:55', 'admin', NULL);
+INSERT INTO `power_log` VALUES (822, '查看', '192.168.179.1', '通知管理页面', 'power', NULL, '2020-04-24 09:55', 'admin', NULL);
+INSERT INTO `power_log` VALUES (823, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-24 09:56', 'admin', NULL);
+INSERT INTO `power_log` VALUES (824, '查看', '192.168.179.1', '通知管理页面', 'power', NULL, '2020-04-24 09:56', 'admin', NULL);
+INSERT INTO `power_log` VALUES (825, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-24 09:56', '1', NULL);
+INSERT INTO `power_log` VALUES (826, '查看', '192.168.179.1', '通知管理页面', 'power', NULL, '2020-04-24 09:57', 'admin', NULL);
+INSERT INTO `power_log` VALUES (827, '查看', '192.168.179.1', '通知管理页面', 'power', NULL, '2020-04-24 09:57', 'admin', NULL);
+INSERT INTO `power_log` VALUES (828, '查看', '192.168.179.1', '通知管理页面', 'power', NULL, '2020-04-24 09:57', 'admin', NULL);
+INSERT INTO `power_log` VALUES (829, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-24 09:58', 'admin', NULL);
+INSERT INTO `power_log` VALUES (830, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-24 09:58', '3', NULL);
+INSERT INTO `power_log` VALUES (831, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-24 09:58', 'admin', NULL);
+INSERT INTO `power_log` VALUES (832, '查看', '192.168.179.1', '通知管理页面', 'power', NULL, '2020-04-24 09:58', 'admin', NULL);
+INSERT INTO `power_log` VALUES (833, '查看', '192.168.179.1', '通知管理页面', 'power', NULL, '2020-04-24 09:58', 'admin', NULL);
+INSERT INTO `power_log` VALUES (834, '查看', '192.168.179.1', '通知管理页面', 'power', NULL, '2020-04-24 09:59', 'admin', NULL);
+INSERT INTO `power_log` VALUES (835, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-24 10:00', '3', NULL);
+INSERT INTO `power_log` VALUES (836, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-24 10:00', 'admin', NULL);
+INSERT INTO `power_log` VALUES (837, '查看', '192.168.179.1', '通知管理页面', 'power', NULL, '2020-04-24 10:00', 'admin', NULL);
+INSERT INTO `power_log` VALUES (838, '查看', '192.168.179.1', '通知管理页面', 'power', NULL, '2020-04-24 10:00', 'admin', NULL);
+INSERT INTO `power_log` VALUES (839, '查看', '192.168.179.1', '通知管理页面', 'power', NULL, '2020-04-24 10:01', 'admin', NULL);
+INSERT INTO `power_log` VALUES (840, '查看', '192.168.179.1', '通知管理页面', 'power', NULL, '2020-04-24 10:01', 'admin', NULL);
+INSERT INTO `power_log` VALUES (841, '查看', '192.168.179.1', '通知管理页面', 'power', NULL, '2020-04-24 10:01', 'admin', NULL);
+INSERT INTO `power_log` VALUES (842, '查看', '192.168.179.1', '通知管理页面', 'power', NULL, '2020-04-24 10:02', 'admin', NULL);
+INSERT INTO `power_log` VALUES (843, '查看', '192.168.179.1', '通知管理页面', 'power', NULL, '2020-04-24 10:02', 'admin', NULL);
+INSERT INTO `power_log` VALUES (844, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-24 10:05', '3', NULL);
+INSERT INTO `power_log` VALUES (845, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-24 10:05', 'admin', NULL);
+INSERT INTO `power_log` VALUES (846, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-24 10:05', 'admin', NULL);
+INSERT INTO `power_log` VALUES (847, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-24 10:05', 'admin', NULL);
+INSERT INTO `power_log` VALUES (848, '查看', '192.168.179.1', '角色分配菜单页面', 'power', NULL, '2020-04-24 10:05', 'admin', NULL);
+INSERT INTO `power_log` VALUES (849, '查看', '192.168.179.1', '角色分配菜单页面', 'power', NULL, '2020-04-24 10:05', 'admin', NULL);
+INSERT INTO `power_log` VALUES (850, '修改分配', '192.168.179.1', '角色分配菜单', 'power', NULL, '2020-04-24 10:05', 'admin', '医生');
+INSERT INTO `power_log` VALUES (851, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-24 10:05', '3', NULL);
+INSERT INTO `power_log` VALUES (852, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-24 10:05', 'admin', NULL);
+INSERT INTO `power_log` VALUES (853, '查看', '192.168.179.1', '通知管理页面', 'power', NULL, '2020-04-24 10:05', 'admin', NULL);
+INSERT INTO `power_log` VALUES (854, '查看', '192.168.179.1', '通知管理页面', 'power', NULL, '2020-04-24 10:06', 'admin', NULL);
+INSERT INTO `power_log` VALUES (855, '查看', '192.168.179.1', '通知管理页面', 'power', NULL, '2020-04-24 10:06', 'admin', NULL);
+INSERT INTO `power_log` VALUES (856, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-24 10:13', 'admin', NULL);
+INSERT INTO `power_log` VALUES (857, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-24 10:13', '3', NULL);
+INSERT INTO `power_log` VALUES (858, '查看', '192.168.179.1', '通知管理页面', 'power', NULL, '2020-04-24 10:13', 'admin', NULL);
+INSERT INTO `power_log` VALUES (859, '查看', '192.168.179.1', '通知管理页面', 'power', NULL, '2020-04-24 10:13', 'admin', NULL);
+INSERT INTO `power_log` VALUES (860, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-24 10:15', 'admin', NULL);
+INSERT INTO `power_log` VALUES (861, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-24 10:15', '3', NULL);
+INSERT INTO `power_log` VALUES (862, '查看', '192.168.179.1', '通知管理页面', 'power', NULL, '2020-04-24 10:16', 'admin', NULL);
+INSERT INTO `power_log` VALUES (863, '查看', '192.168.179.1', '通知管理页面', 'power', NULL, '2020-04-24 10:17', 'admin', NULL);
+INSERT INTO `power_log` VALUES (864, '查看', '192.168.179.1', '通知管理页面', 'power', NULL, '2020-04-24 10:17', 'admin', NULL);
+INSERT INTO `power_log` VALUES (865, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-24 10:18', 'admin', NULL);
+INSERT INTO `power_log` VALUES (866, '查看', '192.168.179.1', '通知管理页面', 'power', NULL, '2020-04-24 10:18', 'admin', NULL);
+INSERT INTO `power_log` VALUES (867, '查看', '192.168.179.1', '通知管理页面', 'power', NULL, '2020-04-24 10:19', 'admin', NULL);
+INSERT INTO `power_log` VALUES (868, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-24 10:20', '3', NULL);
+INSERT INTO `power_log` VALUES (869, '查看', '192.168.179.1', '通知管理页面', 'power', NULL, '2020-04-24 10:20', '3', NULL);
+INSERT INTO `power_log` VALUES (870, '查看', '192.168.179.1', '通知管理页面', 'power', NULL, '2020-04-24 10:21', '3', NULL);
+INSERT INTO `power_log` VALUES (871, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-24 10:29', 'admin', NULL);
+INSERT INTO `power_log` VALUES (872, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-24 10:29', 'admin', NULL);
+INSERT INTO `power_log` VALUES (873, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-24 10:30', 'admin', NULL);
+INSERT INTO `power_log` VALUES (874, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-24 10:30', 'admin', NULL);
+INSERT INTO `power_log` VALUES (875, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-24 10:49', 'admin', NULL);
+INSERT INTO `power_log` VALUES (876, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-24 10:58', '3', NULL);
+INSERT INTO `power_log` VALUES (877, '登录', '192.168.179.1', '用户密码错误', 'power', NULL, '2020-04-24 11:25', 'admin\'', '已错误【1】次');
+INSERT INTO `power_log` VALUES (878, '登录', '192.168.179.1', '用户密码错误', 'power', NULL, '2020-04-24 11:25', 'admin\'', '已错误【2】次');
+INSERT INTO `power_log` VALUES (879, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-24 11:25', '3', NULL);
+INSERT INTO `power_log` VALUES (880, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-24 11:25', 'admin', NULL);
+INSERT INTO `power_log` VALUES (881, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-24 11:25', 'admin', NULL);
+INSERT INTO `power_log` VALUES (882, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-24 11:29', 'admin', NULL);
+INSERT INTO `power_log` VALUES (883, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-24 11:32', 'admin', NULL);
+INSERT INTO `power_log` VALUES (884, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-24 11:34', 'admin', NULL);
+INSERT INTO `power_log` VALUES (885, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-24 11:34', 'admin', NULL);
+INSERT INTO `power_log` VALUES (886, '查看', '192.168.179.1', '角色分配菜单页面', 'power', NULL, '2020-04-24 11:34', 'admin', NULL);
+INSERT INTO `power_log` VALUES (887, '修改分配', '192.168.179.1', '角色分配菜单', 'power', NULL, '2020-04-24 11:34', 'admin', '医生');
+INSERT INTO `power_log` VALUES (888, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-24 11:35', '3', NULL);
+INSERT INTO `power_log` VALUES (889, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-24 11:35', '3', NULL);
+INSERT INTO `power_log` VALUES (890, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-24 11:35', 'admin', NULL);
+INSERT INTO `power_log` VALUES (891, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-24 11:35', 'admin', NULL);
+INSERT INTO `power_log` VALUES (892, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-24 11:35', 'admin', NULL);
+INSERT INTO `power_log` VALUES (893, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-24 11:35', '3', NULL);
+INSERT INTO `power_log` VALUES (894, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-24 11:36', 'admin', NULL);
+INSERT INTO `power_log` VALUES (895, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-24 11:36', 'admin', NULL);
+INSERT INTO `power_log` VALUES (896, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-24 11:37', '3', NULL);
+INSERT INTO `power_log` VALUES (897, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-24 11:52', 'admin', NULL);
+INSERT INTO `power_log` VALUES (898, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-24 11:52', 'admin', NULL);
+INSERT INTO `power_log` VALUES (899, '查看', '192.168.179.1', '角色分配菜单页面', 'power', NULL, '2020-04-24 11:52', 'admin', NULL);
+INSERT INTO `power_log` VALUES (900, '修改分配', '192.168.179.1', '角色分配菜单', 'power', NULL, '2020-04-24 11:52', 'admin', '护士');
+INSERT INTO `power_log` VALUES (901, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-24 15:17', 'admin', NULL);
+INSERT INTO `power_log` VALUES (902, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-24 15:17', 'admin', NULL);
+INSERT INTO `power_log` VALUES (903, '查看', '192.168.179.1', '用户分配菜单页面', 'power', NULL, '2020-04-24 15:17', 'admin', NULL);
+INSERT INTO `power_log` VALUES (904, '查看', '192.168.179.1', '用户分配菜单页面', 'power', NULL, '2020-04-24 15:17', 'admin', NULL);
+INSERT INTO `power_log` VALUES (905, '修改分配', '192.168.179.1', '用户分配菜单', 'power', NULL, '2020-04-24 15:17', 'admin', '10');
+INSERT INTO `power_log` VALUES (906, '修改分配', '192.168.179.1', '用户分配菜单', 'power', NULL, '2020-04-24 15:18', 'admin', '11');
+INSERT INTO `power_log` VALUES (907, '修改分配', '192.168.179.1', '用户分配菜单', 'power', NULL, '2020-04-24 15:19', 'admin', '11');
+INSERT INTO `power_log` VALUES (908, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-24 15:28', 'admin', NULL);
+INSERT INTO `power_log` VALUES (909, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-24 15:28', '3', NULL);
+INSERT INTO `power_log` VALUES (910, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-24 15:32', 'admin', NULL);
+INSERT INTO `power_log` VALUES (911, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-24 15:39', 'admin', NULL);
+INSERT INTO `power_log` VALUES (912, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-24 15:39', 'admin', NULL);
+INSERT INTO `power_log` VALUES (913, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-24 15:49', 'admin', NULL);
+INSERT INTO `power_log` VALUES (914, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-24 15:54', 'admin', NULL);
+INSERT INTO `power_log` VALUES (915, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-24 15:55', 'admin', NULL);
+INSERT INTO `power_log` VALUES (916, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-24 15:58', 'admin', NULL);
+INSERT INTO `power_log` VALUES (917, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-24 16:01', 'admin', NULL);
+INSERT INTO `power_log` VALUES (918, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-24 16:29', 'admin', NULL);
+INSERT INTO `power_log` VALUES (919, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-24 16:33', 'admin', NULL);
+INSERT INTO `power_log` VALUES (920, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-24 17:11', 'admin', NULL);
+INSERT INTO `power_log` VALUES (921, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-24 17:11', 'admin', NULL);
+INSERT INTO `power_log` VALUES (922, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-24 17:11', 'admin', NULL);
+INSERT INTO `power_log` VALUES (923, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-24 17:12', 'admin', NULL);
+INSERT INTO `power_log` VALUES (924, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-24 17:16', 'admin', NULL);
+INSERT INTO `power_log` VALUES (925, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-24 17:17', 'admin', NULL);
+INSERT INTO `power_log` VALUES (926, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-24 17:17', 'admin', NULL);
+INSERT INTO `power_log` VALUES (927, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-24 17:17', 'admin', NULL);
+INSERT INTO `power_log` VALUES (928, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-24 17:21', 'admin', NULL);
+INSERT INTO `power_log` VALUES (929, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-24 17:21', 'admin', NULL);
+INSERT INTO `power_log` VALUES (930, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-24 17:26', 'admin', NULL);
+INSERT INTO `power_log` VALUES (931, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-24 17:28', 'admin', NULL);
+INSERT INTO `power_log` VALUES (932, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-24 17:37', 'admin', NULL);
+INSERT INTO `power_log` VALUES (933, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-24 17:37', 'admin', NULL);
+INSERT INTO `power_log` VALUES (934, '查看', '192.168.179.1', '角色管理页面', 'power', NULL, '2020-04-24 17:37', 'admin', NULL);
+INSERT INTO `power_log` VALUES (935, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-04-24 17:37', 'admin', NULL);
+INSERT INTO `power_log` VALUES (936, '查看', '192.168.179.1', '科室管理页面', 'power', NULL, '2020-04-24 17:37', 'admin', NULL);
+INSERT INTO `power_log` VALUES (937, '查看', '192.168.179.1', '用户分配菜单页面', 'power', NULL, '2020-04-24 17:37', 'admin', NULL);
+INSERT INTO `power_log` VALUES (938, '查看', '192.168.179.1', '角色分配菜单页面', 'power', NULL, '2020-04-24 17:37', 'admin', NULL);
+INSERT INTO `power_log` VALUES (939, '查看', '192.168.179.1', '日志管理页面', 'power', NULL, '2020-04-24 17:37', 'admin', NULL);
+INSERT INTO `power_log` VALUES (940, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-26 08:59', 'admin', NULL);
+INSERT INTO `power_log` VALUES (941, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-26 09:05', 'admin', NULL);
+INSERT INTO `power_log` VALUES (942, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-26 09:22', 'admin', NULL);
+INSERT INTO `power_log` VALUES (943, '登录', '10.255.0.11', '用户登录成功', 'power', NULL, '2020-04-26 10:06', 'admin', NULL);
+INSERT INTO `power_log` VALUES (944, '登录', '10.255.0.11', '用户登录成功', 'power', NULL, '2020-04-26 10:08', 'admin', NULL);
+INSERT INTO `power_log` VALUES (945, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-26 11:57', 'admin', NULL);
+INSERT INTO `power_log` VALUES (946, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-26 11:58', 'admin', NULL);
+INSERT INTO `power_log` VALUES (947, '登录', '10.255.0.14', '用户登录成功', 'power', NULL, '2020-04-27 08:49', 'admin', NULL);
+INSERT INTO `power_log` VALUES (948, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-27 10:21', 'admin', NULL);
+INSERT INTO `power_log` VALUES (949, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-27 10:22', 'admin', NULL);
+INSERT INTO `power_log` VALUES (950, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-27 10:35', 'admin', NULL);
+INSERT INTO `power_log` VALUES (951, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-27 10:37', 'admin', NULL);
+INSERT INTO `power_log` VALUES (952, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-27 11:27', 'admin', NULL);
+INSERT INTO `power_log` VALUES (953, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-27 11:27', 'admin', NULL);
+INSERT INTO `power_log` VALUES (954, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-27 11:39', 'admin', NULL);
+INSERT INTO `power_log` VALUES (955, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-04-28 17:50', 'admin', NULL);
+INSERT INTO `power_log` VALUES (956, '登录', '10.255.0.28', '用户登录成功', 'power', NULL, '2020-05-21 09:53', 'admin', NULL);
+INSERT INTO `power_log` VALUES (957, '查看', '10.255.0.28', '用户管理页面', 'power', NULL, '2020-05-21 09:53', 'admin', NULL);
+INSERT INTO `power_log` VALUES (958, '查看', '10.255.0.28', '角色分配菜单页面', 'power', NULL, '2020-05-21 09:53', 'admin', NULL);
+INSERT INTO `power_log` VALUES (959, '登录', '2.0.1.2', '用户登录成功', 'power', NULL, '2020-05-27 17:29', 'admin', NULL);
+INSERT INTO `power_log` VALUES (960, '登录', '2.0.1.2', '用户登录成功', 'power', NULL, '2020-05-27 17:34', 'admin', NULL);
+INSERT INTO `power_log` VALUES (961, '登录', '2.0.1.2', '用户登录成功', 'power', NULL, '2020-05-27 17:42', 'admin', NULL);
+INSERT INTO `power_log` VALUES (962, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-05-28 10:31', 'admin', NULL);
+INSERT INTO `power_log` VALUES (963, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-05-28 11:32', 'admin', NULL);
+INSERT INTO `power_log` VALUES (964, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-05-28 11:33', 'admin', NULL);
+INSERT INTO `power_log` VALUES (965, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-06-03 14:20', 'admin', NULL);
+INSERT INTO `power_log` VALUES (966, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-06-03 14:20', 'admin', NULL);
+INSERT INTO `power_log` VALUES (967, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-06-03 14:54', 'admin', NULL);
+INSERT INTO `power_log` VALUES (968, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-06-03 14:54', 'admin', NULL);
+INSERT INTO `power_log` VALUES (969, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-06-03 18:00', 'admin', NULL);
+INSERT INTO `power_log` VALUES (970, '登录', '192.168.1.200', '用户登录成功', 'power', NULL, '2020-06-04 10:33', 'admin', NULL);
+INSERT INTO `power_log` VALUES (971, '登录', '192.168.1.200', '用户登录成功', 'power', NULL, '2020-06-04 10:33', 'admin', NULL);
+INSERT INTO `power_log` VALUES (972, '登录', '192.168.1.200', '用户登录成功', 'power', NULL, '2020-06-04 10:38', 'admin', NULL);
+INSERT INTO `power_log` VALUES (973, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-06-15 08:55', 'admin', NULL);
+INSERT INTO `power_log` VALUES (974, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-06-15 10:37', 'admin', NULL);
+INSERT INTO `power_log` VALUES (975, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-06-15 10:38', 'admin', NULL);
+INSERT INTO `power_log` VALUES (976, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-06-15 15:25', 'admin', NULL);
+INSERT INTO `power_log` VALUES (977, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-06-15 16:16', 'admin', NULL);
+INSERT INTO `power_log` VALUES (978, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-06-15 17:23', 'admin', NULL);
+INSERT INTO `power_log` VALUES (979, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-06-16 09:04', 'admin', NULL);
+INSERT INTO `power_log` VALUES (980, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-06-16 09:04', 'admin', NULL);
+INSERT INTO `power_log` VALUES (981, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-06-16 09:04', 'admin', NULL);
+INSERT INTO `power_log` VALUES (982, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-06-16 11:39', 'admin', NULL);
+INSERT INTO `power_log` VALUES (983, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-06-16 15:45', 'admin', NULL);
+INSERT INTO `power_log` VALUES (984, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-06-17 13:40', 'admin', NULL);
+INSERT INTO `power_log` VALUES (985, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-06-17 13:45', 'admin', NULL);
+INSERT INTO `power_log` VALUES (986, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-06-17 13:47', 'admin', NULL);
+INSERT INTO `power_log` VALUES (987, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-06-17 13:51', 'admin', NULL);
+INSERT INTO `power_log` VALUES (988, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-06-18 08:54', 'admin', NULL);
+INSERT INTO `power_log` VALUES (989, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-06-18 09:31', 'admin', NULL);
+INSERT INTO `power_log` VALUES (990, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-06-18 09:31', 'admin', NULL);
+INSERT INTO `power_log` VALUES (991, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-06-18 09:41', 'admin', NULL);
+INSERT INTO `power_log` VALUES (992, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-06-18 09:43', 'admin', NULL);
+INSERT INTO `power_log` VALUES (993, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-06-18 09:44', 'admin', NULL);
+INSERT INTO `power_log` VALUES (994, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-06-18 15:59', 'admin', NULL);
+INSERT INTO `power_log` VALUES (995, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-06-18 16:10', 'admin', NULL);
+INSERT INTO `power_log` VALUES (996, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-06-19 08:50', 'admin', NULL);
+INSERT INTO `power_log` VALUES (997, '登录', '192.168.1.2', '用户登录成功', 'power', NULL, '2020-06-19 10:39', 'admin', NULL);
+INSERT INTO `power_log` VALUES (998, '登录', '192.168.1.2', '用户登录成功', 'power', NULL, '2020-06-19 10:39', 'admin', NULL);
+INSERT INTO `power_log` VALUES (999, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-06-19 11:08', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1000, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-06-19 11:14', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1001, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-06-19 11:16', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1002, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-06-19 11:28', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1003, '查看', '192.168.1.3', '用户管理页面', 'power', NULL, '2020-06-19 11:28', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1004, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-06-19 11:30', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1005, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-06-19 11:37', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1006, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-06-19 11:47', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1007, '查看', '192.168.1.3', '用户管理页面', 'power', NULL, '2020-06-19 11:47', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1008, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-06-19 13:54', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1009, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-06-19 14:15', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1010, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-06-19 14:21', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1011, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-06-19 14:35', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1012, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-06-19 14:36', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1013, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-06-19 14:38', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1014, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-06-19 14:41', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1015, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-06-19 14:48', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1016, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-06-19 14:54', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1017, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-06-19 15:50', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1018, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-06-19 17:11', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1019, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-06-22 09:07', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1020, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-06-22 10:01', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1021, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-06-22 11:03', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1022, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-06-22 14:04', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1023, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-06-22 14:06', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1024, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-06-22 16:16', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1025, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-06-23 09:07', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1026, '登录', '2.0.1.1', '用户登录成功', 'power', NULL, '2020-06-23 10:38', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1027, '登录', '2.0.1.2', '用户登录成功', 'power', NULL, '2020-06-24 11:08', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1028, '登录', '2.0.1.2', '用户登录成功', 'power', NULL, '2020-06-24 11:08', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1029, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-06-24 11:08', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1030, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-06-24 14:32', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1031, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-06-24 14:33', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1032, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-06-24 15:29', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1033, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-06-24 15:29', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1034, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-06-24 15:34', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1035, '登录', '192.168.1.101', '用户登录成功', 'power', NULL, '2020-06-24 15:45', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1036, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-06-24 15:50', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1037, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-06-28 09:05', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1038, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-06-28 09:05', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1039, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-06-28 15:48', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1040, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-06-28 15:51', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1041, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-06-28 16:04', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1042, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-06-28 16:06', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1043, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-06-28 16:06', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1044, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-06-29 09:14', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1045, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-06-29 14:49', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1046, '查看', '192.168.1.3', '通知管理页面', 'power', NULL, '2020-06-29 14:49', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1047, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-06-29 17:23', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1048, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-06-29 17:27', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1049, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-06-29 17:30', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1050, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-06-29 17:49', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1051, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-06-29 17:50', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1052, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-06-29 17:50', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1053, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-06-29 17:51', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1054, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-06-29 17:51', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1055, '查看', '192.168.1.3', '用户管理页面', 'power', NULL, '2020-06-29 17:52', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1056, '查看', '192.168.1.3', '用户管理页面', 'power', NULL, '2020-06-29 17:52', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1057, '查看', '192.168.1.3', '角色分配菜单页面', 'power', NULL, '2020-06-29 17:52', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1058, '查看', '192.168.1.3', '用户分配菜单页面', 'power', NULL, '2020-06-29 17:52', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1059, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-06-29 17:53', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1060, '查看', '192.168.1.3', '用户管理页面', 'power', NULL, '2020-06-29 17:53', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1061, '查看', '192.168.1.3', '用户管理页面', 'power', NULL, '2020-06-29 17:54', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1062, '查看', '192.168.1.3', '用户管理页面', 'power', NULL, '2020-06-29 17:54', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1063, '查看', '192.168.1.3', '用户管理页面', 'power', NULL, '2020-06-29 17:56', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1064, '查看', '192.168.1.3', '角色管理页面', 'power', NULL, '2020-06-29 17:56', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1065, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-06-30 10:19', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1066, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-06-30 14:26', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1067, '登录', '192.168.179.1', '用户密码错误', 'power', NULL, '2020-07-01 09:53', 'admin', '已错误【1】次');
+INSERT INTO `power_log` VALUES (1068, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-07-01 10:31', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1069, '登录', '192.168.179.1', '用户密码错误', 'power', NULL, '2020-07-01 11:22', 'admin', '已错误【1】次');
+INSERT INTO `power_log` VALUES (1070, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-07-01 11:22', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1071, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-07-01 11:22', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1072, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-07-01 11:22', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1073, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-07-01 11:22', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1074, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-07-01 11:23', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1075, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-07-01 11:23', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1076, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-07-01 11:24', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1077, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-07-01 11:24', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1078, '登录', '192.168.179.1', '用户密码错误', 'power', NULL, '2020-07-01 13:47', 'admin', '已错误【1】次');
+INSERT INTO `power_log` VALUES (1079, '登录', '192.168.179.1', '用户密码错误', 'power', NULL, '2020-07-01 13:47', 'admin', '已错误【2】次');
+INSERT INTO `power_log` VALUES (1080, '登录', '192.168.179.1', '用户密码错误', 'power', NULL, '2020-07-01 13:48', 'admin', '已错误【3】次');
+INSERT INTO `power_log` VALUES (1081, '登录', '192.168.179.1', '用户密码错误', 'power', NULL, '2020-07-01 13:48', 'admin', '已错误【4】次');
+INSERT INTO `power_log` VALUES (1082, '登录', '192.168.179.1', '用户密码错误', 'power', NULL, '2020-07-01 14:38', 'admin', '已错误【5】次');
+INSERT INTO `power_log` VALUES (1083, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-07-01 14:38', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1084, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-07-01 14:38', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1085, '登录', '192.168.179.1', '用户密码错误', 'power', NULL, '2020-07-01 16:26', 'admin', '已错误【1】次');
+INSERT INTO `power_log` VALUES (1086, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-07-01 16:26', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1087, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-07-01 16:27', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1088, '查看', '192.168.179.1', '用户管理页面', 'power', NULL, '2020-07-01 16:27', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1089, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-07-01 16:27', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1090, '查看', '192.168.179.1', '通知管理页面', 'power', NULL, '2020-07-01 16:27', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1091, '查看', '192.168.179.1', '通知管理页面', 'power', NULL, '2020-07-01 16:27', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1092, '查看', '192.168.179.1', '通知管理页面', 'power', NULL, '2020-07-01 16:27', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1093, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-07-01 16:27', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1094, '登录', '192.168.179.1', '用户密码错误', 'power', NULL, '2020-07-01 17:27', 'admin', '已错误【1】次');
+INSERT INTO `power_log` VALUES (1095, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-07-01 17:28', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1096, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-07-01 17:28', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1097, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-07-02 16:33', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1098, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-07-06 15:17', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1099, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-07-06 15:47', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1100, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-07-06 17:08', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1101, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-07-06 17:33', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1102, '查看', '192.168.1.3', '用户管理页面', 'power', NULL, '2020-07-06 17:33', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1103, '修改', '192.168.1.3', '用户管理', 'power', NULL, '2020-07-06 17:33', 'admin', '11');
+INSERT INTO `power_log` VALUES (1104, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-07-06 17:33', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1105, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-07-06 17:34', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1106, '查看', '192.168.1.3', '用户管理页面', 'power', NULL, '2020-07-06 17:34', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1107, '查看', '192.168.1.3', '用户分配菜单页面', 'power', NULL, '2020-07-06 17:34', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1108, '查看', '192.168.1.3', '用户管理页面', 'power', NULL, '2020-07-06 17:38', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1109, '查看', '192.168.1.3', '用户分配菜单页面', 'power', NULL, '2020-07-06 17:38', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1110, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-07-06 17:52', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1111, '登录', '192.168.1.3', '用户密码错误', 'power', NULL, '2020-07-06 17:54', '1234', '已错误【1】次');
+INSERT INTO `power_log` VALUES (1112, '登录', '192.168.1.3', '用户密码错误', 'power', NULL, '2020-07-06 17:54', '1234', '已错误【2】次');
+INSERT INTO `power_log` VALUES (1113, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-07-06 17:54', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1114, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-07-06 17:54', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1115, '查看', '192.168.1.3', '用户管理页面', 'power', NULL, '2020-07-06 17:54', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1116, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-07-06 17:54', '11', NULL);
+INSERT INTO `power_log` VALUES (1117, '登录', '192.168.179.1', '用户密码错误', 'power', NULL, '2020-07-07 08:43', '1234', '已错误【1】次');
+INSERT INTO `power_log` VALUES (1118, '登录', '192.168.179.1', '用户密码错误', 'power', NULL, '2020-07-07 08:43', '1234', '已错误【2】次');
+INSERT INTO `power_log` VALUES (1119, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-07-07 08:43', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1120, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-07-07 08:43', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1121, '登录', '192.168.1.3', '用户密码错误', 'power', NULL, '2020-07-07 08:49', '1234', '已错误【3】次');
+INSERT INTO `power_log` VALUES (1122, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-07-07 08:49', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1123, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-07-07 08:49', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1124, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-07-07 08:49', '11', NULL);
+INSERT INTO `power_log` VALUES (1125, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-07-07 08:56', '11', NULL);
+INSERT INTO `power_log` VALUES (1126, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-07-07 10:02', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1127, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-07-07 10:08', '11', NULL);
+INSERT INTO `power_log` VALUES (1128, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-07-07 10:46', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1129, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-07-07 10:46', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1130, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-07-07 11:11', '11', NULL);
+INSERT INTO `power_log` VALUES (1131, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-07-07 11:12', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1132, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-07-07 11:12', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1133, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-07-07 11:12', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1134, '查看', '192.168.1.3', '用户管理页面', 'power', NULL, '2020-07-07 11:12', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1135, '查看', '192.168.1.3', '角色分配菜单页面', 'power', NULL, '2020-07-07 11:12', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1136, '查看', '192.168.1.3', '角色分配菜单页面', 'power', NULL, '2020-07-07 11:12', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1137, '修改分配', '192.168.1.3', '角色分配菜单', 'power', NULL, '2020-07-07 11:12', 'admin', '医生');
+INSERT INTO `power_log` VALUES (1138, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-07-07 11:12', '11', NULL);
+INSERT INTO `power_log` VALUES (1139, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-07-07 11:16', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1140, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-07-07 11:16', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1141, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-07-07 11:32', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1142, '登录', '192.168.1.103', '用户登录成功', 'power', NULL, '2020-07-07 14:36', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1143, '登录', '192.168.1.103', '用户登录成功', 'power', NULL, '2020-07-07 14:36', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1144, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-07-07 15:05', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1145, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-07-07 15:08', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1146, '查看', '192.168.1.3', '用户管理页面', 'power', NULL, '2020-07-07 15:08', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1147, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-07-07 15:09', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1148, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-07-07 15:10', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1149, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-07-07 15:15', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1150, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-07-07 15:17', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1151, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-07-07 15:18', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1152, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-07-07 15:22', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1153, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-07-07 15:22', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1154, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-07-07 15:24', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1155, '查看', '192.168.1.3', '用户管理页面', 'power', NULL, '2020-07-07 15:24', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1156, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-07-07 15:24', '11', NULL);
+INSERT INTO `power_log` VALUES (1157, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-07-07 15:25', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1158, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-07-07 15:25', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1159, '查看', '192.168.1.3', '用户管理页面', 'power', NULL, '2020-07-07 15:25', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1160, '查看', '192.168.1.3', '角色管理页面', 'power', NULL, '2020-07-07 15:25', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1161, '修改', '192.168.1.3', '角色管理', 'power', NULL, '2020-07-07 15:25', 'admin', '医生');
+INSERT INTO `power_log` VALUES (1162, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-07-07 15:25', '11', NULL);
+INSERT INTO `power_log` VALUES (1163, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-07-07 15:25', '11', NULL);
+INSERT INTO `power_log` VALUES (1164, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-07-07 15:26', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1165, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-07-07 15:26', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1166, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-07-07 15:27', '11', NULL);
+INSERT INTO `power_log` VALUES (1167, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-07-07 15:29', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1168, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-07-07 15:53', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1169, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-07-07 15:53', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1170, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-07-07 16:26', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1171, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-07-07 16:28', '11', NULL);
+INSERT INTO `power_log` VALUES (1172, '登录', '192.168.179.1', '用户登录成功', 'power', NULL, '2020-07-07 16:29', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1173, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-07-07 16:30', '11', NULL);
+INSERT INTO `power_log` VALUES (1174, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-07-07 16:30', '11', NULL);
+INSERT INTO `power_log` VALUES (1175, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-07-07 16:30', '11', NULL);
+INSERT INTO `power_log` VALUES (1176, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-07-07 17:04', '11', NULL);
+INSERT INTO `power_log` VALUES (1177, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-07-07 17:04', '11', NULL);
+INSERT INTO `power_log` VALUES (1178, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-07-07 17:06', '11', NULL);
+INSERT INTO `power_log` VALUES (1179, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-07-07 17:08', '11', NULL);
+INSERT INTO `power_log` VALUES (1180, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-07-07 17:11', '11', NULL);
+INSERT INTO `power_log` VALUES (1181, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-07-07 17:11', '11', NULL);
+INSERT INTO `power_log` VALUES (1182, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-07-07 17:12', '11', NULL);
+INSERT INTO `power_log` VALUES (1183, '查看', '192.168.1.3', '角色管理页面', 'power', NULL, '2020-07-07 17:12', '11', NULL);
+INSERT INTO `power_log` VALUES (1184, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-07-07 17:12', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1185, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-07-07 17:12', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1186, '查看', '192.168.1.3', '用户管理页面', 'power', NULL, '2020-07-07 17:12', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1187, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-07-07 17:13', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1188, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-07-07 17:14', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1189, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-07-07 17:15', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1190, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-07-07 17:15', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1191, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-07-07 18:06', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1192, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-07-08 08:41', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1193, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-07-08 09:11', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1194, '登录', '10.255.0.46', '用户登录成功', 'power', NULL, '2020-07-08 14:21', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1195, '登录', '10.255.0.46', '用户登录成功', 'power', NULL, '2020-07-08 14:24', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1196, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-07-08 14:25', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1197, '登录', '10.255.0.48', '用户登录成功', 'power', NULL, '2020-07-08 16:48', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1198, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-07-08 16:50', 'admin', NULL);
+INSERT INTO `power_log` VALUES (1199, '登录', '192.168.1.3', '用户登录成功', 'power', NULL, '2020-07-08 17:01', 'admin', NULL);
+
+-- ----------------------------
+-- Table structure for power_login_set
+-- ----------------------------
+DROP TABLE IF EXISTS `power_login_set`;
+CREATE TABLE `power_login_set` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `context` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
+ `logo_path` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
+ `logo_width` int(11) NULL DEFAULT NULL,
+ `logo_height` int(11) NULL DEFAULT NULL,
+ `pic1_path` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
+ `foot_context` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
+ PRIMARY KEY (`id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of power_login_set
+-- ----------------------------
+INSERT INTO `power_login_set` VALUES (1, '嘉时 病历无纸化归档管理系统', 'static/img/login/logo/gaoming.png', 378, 76, 'static/img/login/图.png', '技术支持:厦门嘉时软件科技有限公司');
+
+-- ----------------------------
+-- Table structure for power_menu
+-- ----------------------------
+DROP TABLE IF EXISTS `power_menu`;
+CREATE TABLE `power_menu` (
+ `menu_id` int(11) NOT NULL AUTO_INCREMENT,
+ `menu_name` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
+ `menu_icon` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
+ `menu_url` varchar(1000) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
+ `menu_desc` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
+ `method` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
+ `function_type` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '功能类型',
+ `method_type` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '方法类别',
+ `sys_id` int(11) NULL DEFAULT NULL,
+ `sys_flag` varchar(32) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL,
+ `parent_id` int(11) NOT NULL,
+ `sort` int(11) NULL DEFAULT NULL,
+ `effective` int(11) NOT NULL,
+ `create_date` char(16) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,
+ `creater` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
+ `update_date` char(16) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL,
+ `updater` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
+ `remark` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
+ PRIMARY KEY (`menu_id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 416 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of power_menu
+-- ----------------------------
+INSERT INTO `power_menu` VALUES (2, '首页', 'fa fa-dashboard', '/index', '菜单', NULL, NULL, NULL, 0, 'power', 228, 2, 1, '2019-01-01', '001', '2019-05-13', '003', '');
+INSERT INTO `power_menu` VALUES (3, '基本管理', 'fa fa-dashboard', '#', '菜单', NULL, NULL, NULL, 0, 'power', 228, 3, 1, '2019-01-01', '001', '2019-09-03', 'admin', '');
+INSERT INTO `power_menu` VALUES (4, '用户管理', 'fa fa-circle-o', '/user/pageUI', '菜单', NULL, NULL, NULL, 0, 'power', 3, 4, 1, '2019-01-01', '001', '2019-01-01', '001', NULL);
+INSERT INTO `power_menu` VALUES (6, '角色管理', 'fa fa-circle-o', '/role/pageUI', '菜单', NULL, NULL, NULL, 0, 'power', 3, 2, 1, '2019-01-01', '001', '2019-09-03', 'admin', '');
+INSERT INTO `power_menu` VALUES (7, '科室管理', 'fa fa-circle-o', '/dept/pageUI', '菜单', NULL, NULL, NULL, 2, 'power', 3, 3, 1, '2019-01-01', '001', '2020-01-02', 'admin', '');
+INSERT INTO `power_menu` VALUES (8, '菜单管理', 'fa fa-circle-o', '/menu/pageUI', '菜单', NULL, NULL, NULL, 0, 'power', 3, 4, 1, '2019-01-01', '001', '2019-01-01', '001', NULL);
+INSERT INTO `power_menu` VALUES (9, '归属管理', 'fa fa-circle-o', '/dict/pageUI', '菜单', NULL, NULL, NULL, 0, 'power', 3, 5, 1, '2019-01-01', '001', '2019-01-01', '001', NULL);
+INSERT INTO `power_menu` VALUES (10, '授权管理', 'fa fa-dashboard', '#', '菜单', NULL, NULL, NULL, 0, 'power', 228, 4, 1, '2019-01-01', '001', '2019-09-03', 'admin', '');
+INSERT INTO `power_menu` VALUES (11, '用户分配菜单', 'fa fa-circle-o', '/menuPower/userPowerUI', '菜单', NULL, NULL, NULL, 0, 'power', 10, 1, 1, '2019-01-01', '001', '2019-09-03', 'admin', '');
+INSERT INTO `power_menu` VALUES (12, '角色分配菜单', 'fa fa-circle-o', '/menuPower/rolePowerUI', '菜单', NULL, NULL, NULL, 0, 'power', 10, 1, 1, '2019-01-01', '001', '2019-01-01', '001', NULL);
+INSERT INTO `power_menu` VALUES (13, '其它管理', 'fa fa-dashboard', '#', '菜单', NULL, NULL, NULL, 0, 'power', 228, 5, 1, '2019-01-01', '001', '2019-01-01', '001', NULL);
+INSERT INTO `power_menu` VALUES (14, '日志管理', 'fa fa-circle-o', '/otherManage/backupDatabase', '菜单', NULL, NULL, NULL, 0, 'power', 13, 1, 1, '2019-01-01', '001', '2019-10-14', 'admin', '');
+INSERT INTO `power_menu` VALUES (17, '查看用户列表', NULL, '/user/pageUI', '功能', 'pageUI1', NULL, '基本类', 0, 'power', 4, 1, 1, '2019-08-09', '003', '2019-08-09', '003', NULL);
+INSERT INTO `power_menu` VALUES (18, '重置密码', NULL, '/user/resetPassword', '功能', 'resetPassword', NULL, '基本类', 0, 'power', 4, 1, 1, '2019-08-09', '003', '2019-08-09', '003', NULL);
+INSERT INTO `power_menu` VALUES (19, '添加用户', NULL, '/user/add', '功能', 'add', NULL, '基本类', 0, 'power', 4, 2, 1, '2019-08-09', '003', '2019-08-09', '003', NULL);
+INSERT INTO `power_menu` VALUES (20, '修改用户', NULL, '/user/update', '功能', 'update', NULL, '基本类', 0, 'power', 4, 3, 1, '2019-08-09', '003', '2019-08-09', '003', NULL);
+INSERT INTO `power_menu` VALUES (21, '删除用户', NULL, '/user/delete', '功能', 'delete', NULL, '基本类', 0, 'power', 4, 4, 1, '2019-08-09', '003', '2019-08-09', '003', NULL);
+INSERT INTO `power_menu` VALUES (22, '导出用户列表', NULL, '/user/export', '功能', 'export', NULL, '文档类', 0, 'power', 4, 5, 1, '2019-08-01', '003', '209-08-01', '003', NULL);
+INSERT INTO `power_menu` VALUES (23, '查看角色列表', NULL, '/role/pageUI', '功能', 'pageUI', NULL, '基本类', 0, 'power', 6, 1, 1, '2019-08-09', '003', '2019-08-09', '003', NULL);
+INSERT INTO `power_menu` VALUES (24, '添加角色', NULL, '/role/add', '功能', 'add', NULL, '基本类', 0, 'power', 6, 2, 1, '2019-08-09', '003', '2019-08-09', '003', NULL);
+INSERT INTO `power_menu` VALUES (25, '修改角色', NULL, '/role/update', '功能', 'update', NULL, '基本类', 0, 'power', 6, 3, 1, '2019-08-09', '003', '2019-08-09', '003', NULL);
+INSERT INTO `power_menu` VALUES (26, '删除角色', NULL, '/role/delete', '功能', 'delete', NULL, '基本类', 0, 'power', 6, 4, 1, '2019-08-09', '003', '2019-08-09', '003', NULL);
+INSERT INTO `power_menu` VALUES (27, '导出角色列表', NULL, '/role/export', '功能', 'export', NULL, '文档类', 0, 'power', 6, 5, 1, '2019-08-02', '003', '2019-08-02', '003', NULL);
+INSERT INTO `power_menu` VALUES (28, '查看科室管理页面', NULL, '/dept/pageUI', '功能', 'pageUI', NULL, '基本类', 2, 'power', 7, 1, 1, '2019-08-02', '003', '2019-08-09', '003', NULL);
+INSERT INTO `power_menu` VALUES (29, '添加科室', NULL, '/dept/add', '功能', 'add', NULL, '基本类', 2, 'power', 7, 2, 1, '2019-08-02', '003', '2019-08-09', '003', NULL);
+INSERT INTO `power_menu` VALUES (30, '修改科室', NULL, '/dept/update', '功能', 'update', NULL, '基本类', 2, 'power', 7, 3, 1, '2019-08-09', '003', '2019-08-09', '003', NULL);
+INSERT INTO `power_menu` VALUES (31, '删除科室', NULL, '/dept/delete', '功能', 'delete', NULL, '基本类', 2, 'power', 7, 4, 1, '2019-08-09', '003', '2019-08-09', '003', NULL);
+INSERT INTO `power_menu` VALUES (32, '导出科室列表', NULL, '/dept/export', '功能', 'export', NULL, '文档类', 2, 'power', 7, 5, 1, '2019-08-02', '003', '2019-08-02', '003', NULL);
+INSERT INTO `power_menu` VALUES (33, '查看菜单管理', NULL, '/menu/pageUI', '功能', 'pageUI', NULL, '基本类', 0, 'power', 8, 1, 1, '2019-08-09', '003', '2019-08-09', '003', NULL);
+INSERT INTO `power_menu` VALUES (34, '添加菜单', NULL, '/menu/add', '功能', 'add', NULL, '基本类', 0, 'power', 8, 5, 1, '2019-08-02', '003', '2019-08-02', '003', NULL);
+INSERT INTO `power_menu` VALUES (35, '查看归属管理', NULL, '/dict/pageUI', '功能', 'pageUI', NULL, '基本类', 0, 'power', 9, 1, 1, '2019-08-09', '003', '2019-08-09', '003', NULL);
+INSERT INTO `power_menu` VALUES (36, '添加归属', NULL, '/dict/add', '功能', 'add', NULL, '基本类', 0, 'power', 9, 2, 1, '2019-08-09', '003', '2019-08-09', '003', NULL);
+INSERT INTO `power_menu` VALUES (37, '修改归属', NULL, '/dict/update', '功能', 'update', NULL, '基本类', 0, 'power', 9, 3, 1, '2019-08-09', '003', '2019-08-09', '003', NULL);
+INSERT INTO `power_menu` VALUES (38, '删除归属', NULL, '/dict/delete', '功能', 'delete', NULL, '基本类', 0, 'power', 9, 4, 1, '2019-08-09', '003', '2019-08-09', '003', NULL);
+INSERT INTO `power_menu` VALUES (39, '保存用户分配菜单', NULL, '/menuPower/addUserMenu', '功能', 'addUserMenu', NULL, '基本类', 0, 'power', 11, 1, 1, '2019-04-29', '001', '2019-04-29', '001', NULL);
+INSERT INTO `power_menu` VALUES (40, '保存角色分配菜单', NULL, '/menuPower/addRoleMenu', '功能', 'addRoleMenu', NULL, '基本类', 0, 'power', 12, 1, 1, '2019-04-29', '001', '2019-04-29', '001', NULL);
+INSERT INTO `power_menu` VALUES (99, '删除菜单', NULL, '/menu/delete', '功能', 'delete', NULL, '基本类', 0, 'power', 8, 1, 1, '2019-04-29', '001', '2019-04-29', '001', NULL);
+INSERT INTO `power_menu` VALUES (100, '查看用户分配菜单', NULL, '/menuPower/userPowerUI', '功能', 'userPowerUI', NULL, '基本类', 0, 'power', 11, 1, 1, '2019-08-14', '001', '2019-08-14', '001', NULL);
+INSERT INTO `power_menu` VALUES (101, '查看角色分配菜单', NULL, '/menuPower/rolePowerUI', '功能', 'rolePowerUI', NULL, '基本类', 0, 'power', 12, 1, 1, '2019-08-14', '001', '2019-08-14', '001', NULL);
+INSERT INTO `power_menu` VALUES (102, '修改菜单', NULL, '/menu/update', '功能', 'update', NULL, '基本类', 0, 'power', 8, 1, 1, '2019-08-14', '001', '2019-08-14', '001', NULL);
+INSERT INTO `power_menu` VALUES (103, '病案归档管理', 'fa fa-circle-o', '#', '目录', '', NULL, NULL, 7, 'emr_medical_record', 0, 1, 1, '2019-08-14', 'admin', '2019-08-14', 'admin', NULL);
+INSERT INTO `power_menu` VALUES (104, '归档列表', 'fa fa-dashboard', '#', '目录', NULL, NULL, NULL, 7, 'emr_medical_record', 103, 1, 1, '2019-08-14', 'admin', '2019-08-14', 'admin', NULL);
+INSERT INTO `power_menu` VALUES (105, '其它管理', 'fa fa-dashboard', '#', '目录', NULL, NULL, NULL, 7, 'emr_medical_record', 103, 2, 1, '2019-08-14', 'admin', '2019-08-14', 'admin', NULL);
+INSERT INTO `power_menu` VALUES (106, '在院浏览', 'fa fa-circle-o', '/inHosp/inHospitals', '菜单', NULL, NULL, NULL, 42, 'emr_medical_record', 104, 6, 1, '2019-08-14', 'admin', '2019-11-11', 'admin', '');
+INSERT INTO `power_menu` VALUES (107, '出院浏览', 'fa fa-circle-o', '/beHosp/beHosps', '菜单', NULL, NULL, NULL, 42, 'emr_medical_record', 104, 7, 1, '2019-08-14', 'admin', '2019-11-11', 'admin', '');
+INSERT INTO `power_menu` VALUES (108, '未终审病历列表', 'fa fa-circle-o', '/unfile/unfileMedicals', '菜单', NULL, NULL, NULL, 42, 'emr_medical_record', 104, 4, 1, '2019-08-14', 'admin', '2019-11-11', 'admin', '');
+INSERT INTO `power_menu` VALUES (109, '缺陷列表', 'fa fa-circle-o', '/fault/faults', '菜单', NULL, NULL, NULL, 42, 'emr_medical_record', 104, 5, 1, '2019-08-14', 'admin', '2019-11-11', 'admin', '');
+INSERT INTO `power_menu` VALUES (110, '病案终审退回', 'fa fa-circle-o', '/medicalRecall/recall', '菜单', NULL, NULL, NULL, 42, 'emr_medical_record', 104, 2, 1, '2019-08-14', 'admin', '2019-11-11', 'admin', '');
+INSERT INTO `power_menu` VALUES (111, '病案终审退回日志', 'fa fa-circle-o', '/recallDate/recallDates', '菜单', NULL, NULL, NULL, 42, 'emr_medical_record', 104, 3, 1, '2019-08-14', 'admin', '2019-11-11', 'admin', '');
+INSERT INTO `power_menu` VALUES (112, '病案室终审', 'fa fa-circle-o', '/lastVerify/lastVerifys', '菜单', NULL, NULL, NULL, 42, 'emr_medical_record', 104, 1, 1, '2019-08-14', 'admin', '2019-11-11', 'admin', '');
+INSERT INTO `power_menu` VALUES (113, '缺陷类别列表', 'fa fa-circle-o', '/faultType/faultTypes', '菜单', NULL, NULL, NULL, 7, 'emr_medical_record', 105, 1, 1, '2019-08-14', 'admin', '2019-08-14', 'admin', NULL);
+INSERT INTO `power_menu` VALUES (114, '字典列表', 'fa fa-circle-o', '/dictionary/dictionarys', '菜单', NULL, NULL, NULL, 7, 'emr_medical_record', 105, 2, 1, '2019-08-14', 'admin', '2019-08-14', 'admin', NULL);
+INSERT INTO `power_menu` VALUES (115, '在院浏览查看', NULL, '/inHosp/inHospitalList', '功能', 'inHospitalList', 'select', '基本类', 42, 'emr_medical_record', 106, 1, 1, '2019-08-14', 'admin', '2019-08-14', 'admin', NULL);
+INSERT INTO `power_menu` VALUES (116, '在院浏览文件上传', NULL, '/inHosp/uploadImgS', '功能', 'uploadImgS', 'upload', '文档类', 42, 'emr_medical_record', 106, 2, 1, '2019-08-14', 'admin', '2019-08-14', 'admin', NULL);
+INSERT INTO `power_menu` VALUES (117, '在院浏览查看分段PDF', NULL, '/inHosp/getPdfToPdf', '功能', 'getPdfToPdf', 'pdf', '文档类', 7, 'emr_medical_record', 106, 3, 1, '2019-08-14', 'admin', '2019-08-14', 'admin', NULL);
+INSERT INTO `power_menu` VALUES (118, '在院浏览编辑', NULL, '/inHosp/saveInfo', '功能', 'saveInfo', 'edit', '基本类', 42, 'emr_medical_record', 106, 4, 1, '2019-08-14', 'admin', '2019-08-14', 'admin', NULL);
+INSERT INTO `power_menu` VALUES (119, '在院浏览作废', NULL, '/inHosp/updateState', '功能', 'updateState', 'cancel', '基本类', 42, 'emr_medical_record', 106, 5, 1, '2019-08-14', 'admin', '2019-08-14', 'admin', NULL);
+INSERT INTO `power_menu` VALUES (120, '在院浏览选中作废', NULL, '/inHosp/updateStateAll', '功能', 'updateStateAll', 'cancelAll', '基本类', 42, 'emr_medical_record', 106, 6, 1, '2019-08-14', 'admin', '2019-08-14', 'admin', NULL);
+INSERT INTO `power_menu` VALUES (121, '在院浏览导出excel', NULL, '/inHosp/exportExcel', '功能', 'exportExcel', 'excel', '文档类', 42, 'emr_medical_record', 106, 7, 1, '2019-08-14', 'admin', '2019-08-14', 'admin', NULL);
+INSERT INTO `power_menu` VALUES (122, '出院浏览查看', NULL, '/beHosp/beHospList', '功能', 'beHospList', 'select', '基本类', 42, 'emr_medical_record', 107, 1, 1, '2019-08-14', 'admin', '2019-08-14', 'admin', NULL);
+INSERT INTO `power_menu` VALUES (123, '出院浏览初审', NULL, '/beHosp/updateStateByArchivId', '功能', 'updateStateByArchivId', 'first', '文档类', 42, 'emr_medical_record', 107, 2, 1, '2019-08-14', 'admin', '2019-08-14', 'admin', NULL);
+INSERT INTO `power_menu` VALUES (124, '出院浏览导出excel', NULL, '/beHosp/exportExcel', '功能', 'exportExcel', 'excel', '文档类', 42, 'emr_medical_record', 107, 3, 1, '2019-08-14', 'admin', '2019-08-14', 'admin', NULL);
+INSERT INTO `power_menu` VALUES (125, '出院浏览文件上传', NULL, '/inHosp/uploadImgS', '功能', 'uploadImgS', 'upload', '文档类', 42, 'emr_medical_record', 107, 4, 1, '2019-08-14', 'admin', '2019-08-14', 'admin', NULL);
+INSERT INTO `power_menu` VALUES (126, '出院浏览查看分段PDF', NULL, '/inHosp/getPdfToPdf', '功能', 'getPdfToPdf', 'pdf', '文档类', 7, 'emr_medical_record', 107, 5, 1, '2019-08-14', 'admin', '2019-08-14', 'admin', NULL);
+INSERT INTO `power_menu` VALUES (127, '出院浏览编辑', NULL, '/inHosp/saveInfo', '功能', 'saveInfo', 'edit', '基本类', 42, 'emr_medical_record', 107, 6, 1, '2019-08-14', 'admin', '2019-08-14', 'admin', NULL);
+INSERT INTO `power_menu` VALUES (128, '出院浏览作废', NULL, '/inHosp/updateState', '功能', 'updateState', 'cancel', '基本类', 42, 'emr_medical_record', 107, 7, 1, '2019-08-14', 'admin', '2019-08-14', 'admin', NULL);
+INSERT INTO `power_menu` VALUES (129, '出院浏览选中作废', NULL, '/inHosp/updateStateAll', '功能', 'updateStateAll', 'cancelAll', '基本类', 42, 'emr_medical_record', 107, 8, 1, '2019-08-14', 'admin', '2019-08-14', 'admin', NULL);
+INSERT INTO `power_menu` VALUES (130, '未终审病历列表查询', NULL, '/unfile/unfileList', '功能', 'unfileList', 'select', '基本类', 42, 'emr_medical_record', 108, 1, 1, '2019-08-14', 'admin', '2019-11-05', 'admin', '');
+INSERT INTO `power_menu` VALUES (131, '未终审病历列表导出', NULL, '/unfile/exportExcel', '功能', 'exportExcel', 'excel', '文档类', 42, 'emr_medical_record', 108, 2, 1, '2019-08-14', 'admin', '2019-11-05', 'admin', '');
+INSERT INTO `power_menu` VALUES (132, '未终审病历列表文件上传', NULL, '/unfile/uploadImgS', '功能', 'uploadImgS', 'upload', '文档类', 42, 'emr_medical_record', 108, 3, 1, '2019-08-14', 'admin', '2019-11-05', 'admin', '');
+INSERT INTO `power_menu` VALUES (133, '未归档病历列表查看分段PDF', NULL, '/inHosp/getPdfToPdf', '功能', 'getPdfToPdf', 'pdf', '文档类', 7, 'emr_medical_record', 108, 4, 1, '2019-08-14', 'admin', '2019-08-14', 'admin', NULL);
+INSERT INTO `power_menu` VALUES (134, '未终审病历列表编辑', NULL, '/unfile/saveInfo', '功能', 'saveInfo', 'edit', '基本类', 42, 'emr_medical_record', 108, 5, 1, '2019-08-14', 'admin', '2019-11-05', 'admin', '');
+INSERT INTO `power_menu` VALUES (135, '未终审病历列表作废', NULL, '/unfile/updateState', '功能', 'updateState', 'cancel', '基本类', 42, 'emr_medical_record', 108, 6, 1, '2019-08-14', 'admin', '2019-11-05', 'admin', '');
+INSERT INTO `power_menu` VALUES (136, '未终审病历列表选中作废', NULL, '/unfile/updateStateAll', '功能', 'updateStateAll', 'cancelAll', '基本类', 42, 'emr_medical_record', 108, 7, 1, '2019-08-14', 'admin', '2019-11-05', 'admin', '');
+INSERT INTO `power_menu` VALUES (137, '缺陷列表导出excel', NULL, '/fault/exportExcel', '功能', 'exportExcel', 'excel', '文档类', 42, 'emr_medical_record', 109, 1, 1, '2019-08-14', 'admin', '2019-08-14', 'admin', NULL);
+INSERT INTO `power_menu` VALUES (138, '病案终审导出excel', NULL, '/medicalRecall/exportExcel', '功能', 'exportExcel', 'excel', '文档类', 42, 'emr_medical_record', 110, 1, 1, '2019-08-14', 'admin', '2019-11-05', 'admin', '');
+INSERT INTO `power_menu` VALUES (139, '病案终审与日志', NULL, '/medicalRecall/updateState', '功能', 'updateState', 'recall', '基本类', 42, 'emr_medical_record', 110, 2, 1, '2019-08-14', 'admin', '2019-11-05', 'admin', '');
+INSERT INTO `power_menu` VALUES (140, '病案终审日志导出excel', NULL, '/recallDate/exportExcel', '功能', 'exportExcel', 'excel', '文档类', 42, 'emr_medical_record', 111, 1, 1, '2019-08-14', 'admin', '2019-11-05', 'admin', '');
+INSERT INTO `power_menu` VALUES (141, '病案室终审导出excel', NULL, '/lastVerify/exportExcel', '功能', 'exportExcel', 'excel', '文档类', 42, 'emr_medical_record', 112, 1, 1, '2019-08-14', 'admin', '2019-08-14', 'admin', NULL);
+INSERT INTO `power_menu` VALUES (142, '病案室终审查看', NULL, '/lastVerify/lastVerifyList', '功能', 'lastVerifyList', 'select', '基本类', 42, 'emr_medical_record', 112, 1, 1, '2019-08-14', 'admin', '2019-08-14', 'admin', NULL);
+INSERT INTO `power_menu` VALUES (143, '病案室终审退出', NULL, '/lastVerify/updateDetailByArchivId', '功能', 'updateDetailByArchivId', 'back', '基本类', 42, 'emr_medical_record', 112, 1, 1, '2019-08-14', 'admin', '2019-08-14', 'admin', NULL);
+INSERT INTO `power_menu` VALUES (144, '病案室终审终审', NULL, '/beHosp/updateStateByArchivId', '功能', 'updateStateByArchivId', 'last', '文档类', 42, 'emr_medical_record', 112, 1, 1, '2019-08-14', 'admin', '2019-08-14', 'admin', NULL);
+INSERT INTO `power_menu` VALUES (145, '病案终审文件上传', NULL, '/inHosp/uploadImgS', '功能', 'uploadImgS', 'upload', '文档类', 42, 'emr_medical_record', 112, 1, 1, '2019-08-14', 'admin', '2019-08-14', 'admin', NULL);
+INSERT INTO `power_menu` VALUES (146, '病案终审查看分段PDF', NULL, '/inHosp/getPdfToPdf', '功能', 'getPdfToPdf', 'pdf', '文档类', 7, 'emr_medical_record', 112, 1, 1, '2019-08-14', 'admin', '2019-08-14', 'admin', NULL);
+INSERT INTO `power_menu` VALUES (147, '病案终审选中作废', NULL, '/inHosp/updateStateAll', '功能', 'updateStateAll', 'cancelAll', '基本类', 42, 'emr_medical_record', 112, 1, 1, '2019-08-14', 'admin', '2019-08-14', 'admin', NULL);
+INSERT INTO `power_menu` VALUES (148, '病案终审编辑', NULL, '/inHosp/saveInfo', '功能', 'saveInfo', 'edit', '基本类', 42, 'emr_medical_record', 112, 1, 1, '2019-08-14', 'admin', '2019-08-14', 'admin', NULL);
+INSERT INTO `power_menu` VALUES (149, '病案终审作废', NULL, '/inHosp/updateState', '功能', 'updateState', 'cancel', '基本类', 42, 'emr_medical_record', 112, 1, 1, '2019-08-14', 'admin', '2019-08-14', 'admin', NULL);
+INSERT INTO `power_menu` VALUES (150, '缺陷类别列表添加', NULL, '/', '功能', 'add', 'add', '基本类', 7, 'emr_medical_record', 113, 1, 1, '2019-08-14', 'admin', '2019-08-14', 'admin', NULL);
+INSERT INTO `power_menu` VALUES (151, '缺陷类别列表删除', NULL, '/faultType/delById', '功能', 'delById', 'del', '基本类', 7, 'emr_medical_record', 113, 1, 1, '2019-08-14', 'admin', '2019-08-14', 'admin', NULL);
+INSERT INTO `power_menu` VALUES (152, '缺陷类别列表保存', NULL, '/faultType/updateByClo', '功能', 'updateByClo', 'save', '基本类', 7, 'emr_medical_record', 113, 1, 1, '2019-08-14', 'admin', '2019-08-14', 'admin', NULL);
+INSERT INTO `power_menu` VALUES (153, '字典列表添加类别节点', NULL, '/', '功能', 'addType', 'addType', '基本类', 7, 'emr_medical_record', 114, 1, 1, '2019-08-14', 'admin', '2019-08-14', 'admin', NULL);
+INSERT INTO `power_menu` VALUES (154, '字典列表添加叶子节点', NULL, '/', '功能', 'add', 'add', '基本类', 7, 'emr_medical_record', 114, 1, 1, '2019-08-14', 'admin', '2019-08-14', 'admin', NULL);
+INSERT INTO `power_menu` VALUES (155, '字典列表删除节点', NULL, '/faultType/delById', '功能', 'delById', 'del', '基本类', 7, 'emr_medical_record', 114, 1, 1, '2019-08-14', 'admin', '2019-08-14', 'admin', NULL);
+INSERT INTO `power_menu` VALUES (156, '字典列表保存节点', NULL, '/faultType/updateByClo', '功能', 'updateByClo', 'save', '基本类', 7, 'emr_medical_record', 114, 1, 1, '2019-08-14', 'admin', '2019-08-14', 'admin', NULL);
+INSERT INTO `power_menu` VALUES (208, '统计列表', 'fa fa-circle-o', '/vCount/vCounts', '菜单', NULL, NULL, NULL, 7, 'emr_medical_record', 105, 3, 1, '2019-09-02', 'admin', '2019-09-02', 'admin', NULL);
+INSERT INTO `power_menu` VALUES (209, '统计导出列表', NULL, '/vCount/exportExcel', '功能', 'exportExcel', 'excel', '文档类', 7, 'emr_medical_record', 208, 1, 1, '2019-09-02', 'admin', '2019-09-02', 'admin', NULL);
+INSERT INTO `power_menu` VALUES (210, '未归档列表详情', NULL, '/vCount/exportExcel2', '功能', 'exportExcel2', 'excel2', '文档类型', 7, 'emr_medical_record', 208, 2, 1, '2019-09-02', 'admin', '2019-09-02', 'admin', NULL);
+INSERT INTO `power_menu` VALUES (211, '档案管理', 'fa fa-dashboard', '#', '菜单', NULL, '', '', 3, 'emr_record', 229, 1, 1, '2019-09-02', 'admin', '2020-01-02', 'admin', '');
+INSERT INTO `power_menu` VALUES (212, '自定义模板', 'fa fa-circle-o', '/template/templateList', '菜单', NULL, '', '', 3, 'emr_record', 211, 1, 1, '2019-09-02', 'admin', '2020-01-02', 'admin', '');
+INSERT INTO `power_menu` VALUES (213, '自定义模板选择', 'fa fa-circle-o', '/template/templateSelectList', '菜单', NULL, '', '', 3, 'emr_record', 211, 2, 1, '2019-09-02', 'admin', '2020-01-02', 'admin', '');
+INSERT INTO `power_menu` VALUES (214, '自定义查询', 'fa fa-circle-o', '/template/customSearchListqf', '菜单', NULL, '', '', 3, 'emr_record', 211, 3, 1, '2019-09-02', 'admin', '2020-01-02', 'admin', '');
+INSERT INTO `power_menu` VALUES (215, '打印用途管理', 'fa fa-circle-o', '/printing/printManage', '菜单', NULL, '', '', 3, 'emr_record', 211, 4, 1, '2019-09-02', 'admin', '2019-09-02', 'admin', NULL);
+INSERT INTO `power_menu` VALUES (216, '常用查询', 'fa fa-circle-o', '/commom/commomListqf', '菜单', NULL, '', '', 3, 'emr_record', 211, 5, 1, '2019-09-02', 'admin', '2020-02-26', 'admin', '');
+INSERT INTO `power_menu` VALUES (217, '调阅权管理', 'fa fa-dashboard', '#', '菜单', NULL, '', '', 4, 'emr_record', 229, 2, 1, '2019-09-02', 'admin', '2019-09-02', 'admin', '');
+INSERT INTO `power_menu` VALUES (218, '用户分配调阅', 'fa fa-circle-o', '/distribution/userDistributionManage', '菜单', NULL, '', '', 4, 'emr_record', 217, 1, 1, '2019-09-02', 'admin', '2019-09-02', 'admin', '');
+INSERT INTO `power_menu` VALUES (219, '角色分配调阅', 'fa fa-circle-o', '/distribution/roleDistributionManage', '菜单', NULL, '', '', 4, 'emr_record', 217, 2, 1, '2019-09-02', 'admin', '2019-09-02', 'admin', '');
+INSERT INTO `power_menu` VALUES (220, '借阅管理', 'fa fa-dashboard', '#', '菜单', NULL, '', '', 4, 'emr_record', 229, 3, 1, '2019-09-02', 'admin', '2019-09-02', 'admin', '');
+INSERT INTO `power_menu` VALUES (221, '个人收藏', 'fa fa-circle-o', '/collect/collectManage174', '菜单', NULL, '', '', 4, 'emr_record', 220, 1, 1, '2019-09-02', 'admin', '2019-09-02', 'admin', '');
+INSERT INTO `power_menu` VALUES (222, '原因及批注模板', 'fa fa-circle-o', '/annotationTemplate/annotationTemplateList', '菜单', NULL, '', '', 4, 'emr_record', 220, 2, 1, '2019-09-02', 'admin', '2019-09-02', 'admin', '');
+INSERT INTO `power_menu` VALUES (223, '申请列表', 'fa fa-circle-o', '/approve/approveList174', '菜单', NULL, '', '', 3, 'emr_record', 220, 3, 1, '2019-09-02', 'admin', '2020-02-26', 'admin', '');
+INSERT INTO `power_menu` VALUES (224, '借阅审批管理', 'fa fa-circle-o', '/approve/approveManageList174', '菜单', NULL, '', '', 3, 'emr_record', 220, 4, 1, '2019-09-02', 'admin', '2020-02-26', 'admin', '');
+INSERT INTO `power_menu` VALUES (225, '其他管理', 'fa fa-dashboard', '#', '菜单', NULL, '', '', 15, 'emr_record', 229, 5, 1, '2019-09-02', 'admin', '2020-04-24', 'admin', '');
+INSERT INTO `power_menu` VALUES (226, '字典列表', 'fa fa-circle-o', '/dictionary/dictionaryList', '菜单', NULL, '', '', 15, 'emr_record', 225, 1, 1, '2019-09-02', 'admin', '2019-09-02', 'admin', '');
+INSERT INTO `power_menu` VALUES (227, '操作日志管理', 'fa fa-circle-o', '/otherManage/backupDatabase', '菜单', NULL, '', '', 15, 'emr_record', 409, 2, 1, '2019-09-02', 'admin', '2020-04-24', 'admin', '');
+INSERT INTO `power_menu` VALUES (228, '权限系统', NULL, '#', '菜单', NULL, NULL, NULL, 0, 'power', 0, 4, 1, '2019-09-02', 'admin', '2019-09-02', 'admin', NULL);
+INSERT INTO `power_menu` VALUES (229, '病案管理系统', NULL, '#', '菜单', NULL, NULL, NULL, 4, 'emr_record', 0, 5, 1, '2019-09-02', 'admin', '2019-09-02', 'admin', NULL);
+INSERT INTO `power_menu` VALUES (230, '自定义模板查看', '', '/template/templateList', '功能', 'templateList', NULL, '基本类', 3, 'emr_record', 212, 1, 1, '2019-09-02', 'admin', '2019-09-02', 'admin', '');
+INSERT INTO `power_menu` VALUES (231, '自定义模板添加', '', '/template/addTemplate', '功能', 'addTemplate', '', '基本类', 3, 'emr_record', 212, 1, 1, '2019-09-02', 'admin', '2019-09-02', 'admin', '');
+INSERT INTO `power_menu` VALUES (232, '自定义模板修改', '', '/template/updateTemplate', '功能', 'updateTemplate', '', '基本类', 3, 'emr_record', 212, 1, 1, '2019-09-02', 'admin', '2019-09-02', 'admin', '');
+INSERT INTO `power_menu` VALUES (233, '自定义模板删除', '', '/template/deleteTemplate', '功能', 'deleteTemplate', '', '基本类', 3, 'emr_record', 212, 1, 1, '2019-09-02', 'admin', '2019-09-02', 'admin', '');
+INSERT INTO `power_menu` VALUES (234, '自定义模板选择查看', '', '/template/templateSelectList', '功能', 'templateSelectList', '', '基本类', 3, 'emr_record', 213, 1, 1, '2019-09-02', 'admin', '2019-09-02', 'admin', '');
+INSERT INTO `power_menu` VALUES (235, '模板类别添加', '', '/template/addTemplateSelect', '功能', 'addTemplateSelect', '', '基本类', 3, 'emr_record', 213, 1, 1, '2019-09-02', 'admin', '2019-09-02', 'admin', '');
+INSERT INTO `power_menu` VALUES (236, '模板类别修改', '', '/template/updateTemplateSelect', '功能', 'deleteTemplate', '', '基本类', 3, 'emr_record', 213, 1, 1, '2019-09-02', 'admin', '2019-09-02', 'admin', '');
+INSERT INTO `power_menu` VALUES (237, '模板类别删除', '', '/template/deleteTemplateSelect', '功能', 'deleteTemplateSelect', '', '基本类', 3, 'emr_record', 213, 1, 1, '2019-09-02', 'admin', '2019-09-02', 'admin', '');
+INSERT INTO `power_menu` VALUES (238, '自定义模板选择保存', '', '/template/addModleRelated', '功能', 'addModleRelated', '', '基本类', 3, 'emr_record', 213, 1, 1, '2019-09-02', 'admin', '2019-09-02', 'admin', '');
+INSERT INTO `power_menu` VALUES (239, '自定义查询查看', '', '/template/customSearchListqf', '功能', 'customSearchListqf', '', '基本类', 3, 'emr_record', 214, 1, 1, '2019-09-02', 'admin', '2019-09-02', 'admin', '');
+INSERT INTO `power_menu` VALUES (249, '打印用途管理查看', '', '/printing/printManage', '功能', 'printManage', '', '基本类', 4, 'emr_record', 215, 1, 1, '2019-09-02', 'admin', '2019-09-02', 'admin', '');
+INSERT INTO `power_menu` VALUES (250, '打印用途管理类别添加', '', '/printing/addEmrType', '功能', 'addEmrType', '', '基本类', 4, 'emr_record', 215, 1, 1, '2019-09-02', 'admin', '2019-09-02', 'admin', '');
+INSERT INTO `power_menu` VALUES (251, '打印用途管理类别修改', '', '/printing/updateEmrType', '功能', 'updateEmrType', '', '基本类', 4, 'emr_record', 215, 1, 1, '2019-09-02', 'admin', '2019-09-02', 'admin', '');
+INSERT INTO `power_menu` VALUES (252, '打印用途管理类别删除', '', '/printing/deleteEmrType', '功能', 'deleteEmrType', '', '基本类', 4, 'emr_record', 215, 1, 1, '2019-09-02', 'admin', '2019-09-02', 'admin', '');
+INSERT INTO `power_menu` VALUES (253, '打印用途管理保存', '', '/printing/addTypeRelated', '功能', 'addTypeRelated', '', '基本类', 4, 'emr_record', 215, 1, 1, '2019-09-02', 'admin', '2019-09-02', 'admin', '');
+INSERT INTO `power_menu` VALUES (254, '常用查询查看', NULL, '/commom/commomListqf', '功能', 'commomListqf', '', '基本类', 3, 'emr_record', 216, 1, 1, '2019-09-05', 'admin', '2020-02-26', 'admin', '');
+INSERT INTO `power_menu` VALUES (255, '常用查询导出excel', NULL, '/commom/exportExcel', '功能', 'exportExcel', '', '文档类', 3, 'emr_record', 216, 3, 1, '2019-09-05', 'admin', '2020-03-19', 'admin', '');
+INSERT INTO `power_menu` VALUES (256, '常用查询下载(批量)', NULL, '/commom/downloadZip', '功能', 'downloadZip', '', '文档类', 3, 'emr_record', 216, 4, 1, '2019-09-05', 'admin', '2020-03-19', 'admin', '');
+INSERT INTO `power_menu` VALUES (257, '常用查询下载PDF', NULL, '/commom/downloadPdf', '功能', 'downloadPdf', '', '文档类', 3, 'emr_record', 216, 5, 1, '2019-09-05', 'admin', '2020-03-19', 'admin', '');
+INSERT INTO `power_menu` VALUES (258, '常用查询借阅申请', NULL, '/commom/addApplyApprove', '功能', 'addApplyApprove', '', '基本类', 3, 'emr_record', 216, 2, 1, '2019-09-05', 'admin', '2020-03-19', 'admin', '');
+INSERT INTO `power_menu` VALUES (259, '常用查询锁定', NULL, '/commom/addLockByPatientId', '功能', 'addLockByPatientId', '', '业务类', 3, 'emr_record', 216, 6, 1, '2019-09-05', 'admin', '2019-09-30', 'admin', '');
+INSERT INTO `power_menu` VALUES (260, '常用查询解锁', NULL, '/commom/updateLockByPatientId', '功能', 'updateLockByPatientId', '', '业务类', 3, 'emr_record', 216, 7, 1, '2019-09-05', 'admin', '2019-09-30', 'admin', '');
+INSERT INTO `power_menu` VALUES (261, '用户分配调阅查看', NULL, '/distribution/userDistributionManage', '功能', 'userDistributionManage', '', '基本类', 4, 'emr_record', 218, 1, 1, '2019-09-05', 'admin', '2019-09-05', 'admin', '');
+INSERT INTO `power_menu` VALUES (262, '用户分配调阅保存', NULL, '/distribution/saveUserReader', '功能', 'saveUserReader', '', '基本类', 4, 'emr_record', 218, 2, 1, '2019-09-05', 'admin', '2019-09-05', 'admin', '');
+INSERT INTO `power_menu` VALUES (263, '调阅分类保存', NULL, '/distribution/saveDistribution', '功能', 'saveDistribution', '', '基本类', 4, 'emr_record', 218, 3, 1, '2019-09-05', 'admin', '2019-09-05', 'admin', '');
+INSERT INTO `power_menu` VALUES (264, '调阅分类删除', NULL, '/distribution/deleteAssortByAssortId', '功能', 'deleteAssortByAssortId', '', '基本类', 4, 'emr_record', 218, 4, 1, '2019-09-05', 'admin', '2019-09-05', 'admin', '');
+INSERT INTO `power_menu` VALUES (265, '角色分配调阅查看', NULL, '/distribution/roleDistributionManage', '功能', 'roleDistributionManage', '', '基本类', 4, 'emr_record', 219, 1, 1, '2019-09-05', 'admin', '2019-09-05', 'admin', '');
+INSERT INTO `power_menu` VALUES (266, '角色分配调阅保存', NULL, '/distribution/saveRoleReader', '功能', 'saveRoleReader', '', '基本类', 4, 'emr_record', 219, 2, 1, '2019-09-05', 'admin', '2019-09-05', 'admin', '');
+INSERT INTO `power_menu` VALUES (267, '个人收藏查看', NULL, '/collect/collectManage174', '功能', 'collectManage1', '', '基本类', 4, 'emr_record', 221, 1, 1, '2019-09-05', 'admin', '2019-09-05', 'admin', '');
+INSERT INTO `power_menu` VALUES (268, '收藏类别添加', NULL, '/collect/addCollectType', '功能', 'addCollectType', '', '基本类', 4, 'emr_record', 221, 2, 1, '2019-09-05', 'admin', '2019-09-05', 'admin', '');
+INSERT INTO `power_menu` VALUES (269, '收藏类别删除', NULL, '/collect/deleteCollectType', '功能', 'deleteCollectType', '', '基本类', 4, 'emr_record', 221, 4, 1, '2019-09-05', 'admin', '2019-09-05', 'admin', '');
+INSERT INTO `power_menu` VALUES (270, '收藏类别修改', NULL, '/collect/updateCollectType', '功能', 'updateCollectType', '', '基本类', 4, 'emr_record', 221, 3, 1, '2019-09-05', 'admin', '2019-09-05', 'admin', '');
+INSERT INTO `power_menu` VALUES (271, '个人收藏添加', NULL, '/collect/addCollect', '功能', 'addCollect', '', '基本类', 4, 'emr_record', 221, 5, 1, '2019-09-05', 'admin', '2019-09-05', 'admin', '');
+INSERT INTO `power_menu` VALUES (272, '个人收藏修改', NULL, '/collect/updateCollect', '功能', 'updateCollect', '', '基本类', 4, 'emr_record', 221, 6, 1, '2019-09-05', 'admin', '2019-09-05', 'admin', '');
+INSERT INTO `power_menu` VALUES (273, '个人收藏删除', NULL, '/collect/deleteCollect', '功能', 'deleteCollect', '', '基本类', 4, 'emr_record', 221, 7, 1, '2019-09-05', 'admin', '2019-09-05', 'admin', '');
+INSERT INTO `power_menu` VALUES (274, '个人收藏导出excel', NULL, '/collect/exportExcel', '功能', 'exportExcel', '', '文档类', 4, 'emr_record', 221, 8, 1, '2019-09-05', 'admin', '2019-09-05', 'admin', '');
+INSERT INTO `power_menu` VALUES (275, '原因及批注模板查看', NULL, '/annotationTemplate/annotationTemplateList', '功能', 'annotationTemplateList', '', '基本类', 4, 'emr_record', 222, 1, 1, '2019-09-05', 'admin', '2019-09-05', 'admin', '');
+INSERT INTO `power_menu` VALUES (276, '原因及批注模板类别添加', NULL, '/annotationTemplate/addAnoType', '功能', 'addAnoType', '', '基本类', 4, 'emr_record', 222, 2, 1, '2019-09-05', 'admin', '2019-09-05', 'admin', '');
+INSERT INTO `power_menu` VALUES (277, '原因及批注模板类别修改', NULL, '/annotationTemplate/updateAnoType', '功能', 'updateAnoType', '', '基本类', 4, 'emr_record', 222, 3, 1, '2019-09-05', 'admin', '2019-09-05', 'admin', '');
+INSERT INTO `power_menu` VALUES (278, '原因及批注模板类别删除', NULL, '/annotationTemplate/deleteAnoType', '功能', 'deleteAnoType', '', '基本类', 4, 'emr_record', 222, 4, 1, '2019-09-05', 'admin', '2019-09-05', 'admin', '');
+INSERT INTO `power_menu` VALUES (279, '原因及批注模板添加', NULL, '/annotationTemplate/addAnno', '功能', 'addAnno', '', '基本类', 4, 'emr_record', 222, 5, 1, '2019-09-05', 'admin', '2019-09-05', 'admin', '');
+INSERT INTO `power_menu` VALUES (280, '原因及批注模板修改', NULL, '/annotationTemplate/updateAnno', '功能', 'updateAnno', '', '基本类', 4, 'emr_record', 222, 6, 1, '2019-09-05', 'admin', '2019-09-05', 'admin', '');
+INSERT INTO `power_menu` VALUES (281, '原因及批注模板删除', NULL, '/annotationTemplate/deleteAno', '功能', 'deleteAno', '', '基本类', 4, 'emr_record', 222, 7, 1, '2019-09-05', 'admin', '2019-09-05', 'admin', '');
+INSERT INTO `power_menu` VALUES (282, '原因及批注模板导出excel', NULL, '/annotationTemplate/exportExcel', '功能', 'exportExcel', '', '文档类', 4, 'emr_record', 222, 8, 1, '2019-09-05', 'admin', '2019-09-05', 'admin', '');
+INSERT INTO `power_menu` VALUES (283, '申请列表查看', NULL, '/approve/approveList174', '功能', 'approveList1', '', '基本类', 3, 'emr_record', 223, 1, 1, '2019-09-05', 'admin', '2020-02-26', 'admin', '');
+INSERT INTO `power_menu` VALUES (284, '申请借阅添加', NULL, '/approve/addApplyApprove', '功能', 'addApplyApprove', '', '基本类', 3, 'emr_record', 223, 2, 1, '2019-09-05', 'admin', '2019-09-05', 'admin', '');
+INSERT INTO `power_menu` VALUES (285, '申请借阅修改', NULL, '/approve/updateApplyApprove', '功能', 'updateApplyApprove', '', '基本类', 3, 'emr_record', 223, 3, 1, '2019-09-05', 'admin', '2019-09-05', 'admin', '');
+INSERT INTO `power_menu` VALUES (286, '申请借阅删除', NULL, '/approve/deleteApproveById', '功能', 'deleteApproveById', '', '基本类', 3, 'emr_record', 223, 4, 1, '2019-09-05', 'admin', '2019-09-05', 'admin', '');
+INSERT INTO `power_menu` VALUES (287, '申请列表导出excel', NULL, '/approve/exportExcelApplyList', '功能', 'exportExcelApplyList', '', '文档类', 3, 'emr_record', 223, 5, 1, '2019-09-05', 'admin', '2019-09-05', 'admin', '');
+INSERT INTO `power_menu` VALUES (288, '借阅审批管理查看', NULL, '/approve/approveManageList174', '功能', 'approveManageList1', '', '基本类', 3, 'emr_record', 224, 1, 1, '2019-09-05', 'admin', '2020-02-26', 'admin', '');
+INSERT INTO `power_menu` VALUES (289, '借阅审批管理批注', NULL, '/approve/updateApprove', '功能', 'updateApprove', '', '基本类', 3, 'emr_record', 224, 2, 1, '2019-09-05', 'admin', '2019-09-05', 'admin', '');
+INSERT INTO `power_menu` VALUES (290, '借阅审批管理导出excel', NULL, '/approve/exportExcelApproveList', '功能', 'exportExcelApproveList', '', '文档类', 3, 'emr_record', 224, 3, 1, '2019-09-05', 'admin', '2019-09-05', 'admin', '');
+INSERT INTO `power_menu` VALUES (291, '字典列表查看', NULL, '/dictionary/dictionaryList', '功能', 'dictionaryList', '', '基本类', 4, 'emr_record', 226, 1, 1, '2019-09-05', 'admin', '2019-09-05', 'admin', '');
+INSERT INTO `power_menu` VALUES (292, '字典列表添加', NULL, '/dictionary/add', '功能', 'add', '', '基本类', 4, 'emr_record', 226, 2, 1, '2019-09-05', 'admin', '2019-09-05', 'admin', '');
+INSERT INTO `power_menu` VALUES (293, '字典列表修改', NULL, '/dictionary/update', '功能', 'update', '', '基本类', 4, 'emr_record', 226, 3, 1, '2019-09-05', 'admin', '2019-09-05', 'admin', '');
+INSERT INTO `power_menu` VALUES (294, '字典列表删除', NULL, '/dictionary/delete', '功能', 'delete', '', '基本类', 4, 'emr_record', 226, 4, 1, '2019-09-05', 'admin', '2019-09-05', 'admin', '');
+INSERT INTO `power_menu` VALUES (295, '病案重新归页', NULL, '/commom/updateScanAssort', '功能', 'updateScanAssort', '', '业务类', 3, 'emr_record', 216, 8, 1, '2019-09-05', 'admin', '2019-09-05', 'admin', '');
+INSERT INTO `power_menu` VALUES (356, '日志管理查看', NULL, '/otherManage/backupDatabase', '功能', 'backupDatabase', '', '基本类', 15, 'emr_record', 227, NULL, 1, '2019-09-30', 'admin', '2019-09-30', 'admin', '');
+INSERT INTO `power_menu` VALUES (357, '日志管理删除', NULL, '/otherManage/deleteLogById', '功能', 'deleteLogById', '', '基本类', 15, 'emr_record', 227, NULL, 1, '2019-09-30', 'admin', '2019-09-30', 'admin', '');
+INSERT INTO `power_menu` VALUES (358, '日志管理批量删除', NULL, '/otherManage/deleteLogByIds', '功能', 'deleteLogByIds', '', '基本类', 15, 'emr_record', 227, NULL, 1, '2019-09-30', 'admin', '2019-09-30', 'admin', '');
+INSERT INTO `power_menu` VALUES (359, '日志管理导出', NULL, '/otherManage/exportExcel', '功能', 'exportExcel', '', '文档类', 15, 'emr_record', 227, NULL, 1, '2019-09-30', 'admin', '2019-09-30', 'admin', '');
+INSERT INTO `power_menu` VALUES (360, '导入用户列表', NULL, '/user/importExcel', '功能', 'importExcel', '', '文档类', 0, 'power', 4, 6, 1, '2019-10-14', 'admin', '2019-10-14', 'admin', '');
+INSERT INTO `power_menu` VALUES (361, '导入角色列表', NULL, '/role/importExcel', '功能', 'importExcel', '', '文档类', 0, 'power', 6, 6, 1, '2019-10-14', 'admin', '2019-10-14', 'admin', '');
+INSERT INTO `power_menu` VALUES (362, '导入科室列表', NULL, '/dept/importExcel', '功能', 'importExcel', '', '文档类', 2, 'power', 7, 6, 1, '2019-10-14', 'admin', '2019-10-14', 'admin', '');
+INSERT INTO `power_menu` VALUES (363, '日志管理查看', NULL, '/otherManage/backupDatabase', '功能', 'backupDatabase', '', '基本类', 0, 'power', 14, 1, 1, '2019-10-14', 'admin', '2019-10-14', 'admin', '');
+INSERT INTO `power_menu` VALUES (364, '日志管理删除', NULL, '/otherManage/deleteLogById', '功能', 'deleteLogById', '', '基本类', 0, 'power', 14, 2, 1, '2019-10-14', 'admin', '2019-10-14', 'admin', '');
+INSERT INTO `power_menu` VALUES (365, '日志管理批量删除', NULL, '/otherManage/deleteLogByIds', '功能', 'deleteLogByIds', '', '基本类', 0, 'power', 14, 3, 1, '2019-10-14', 'admin', '2019-10-14', 'admin', '');
+INSERT INTO `power_menu` VALUES (366, '日志管理导出', NULL, '/otherManage/exportExcel', '功能', 'exportExcel', '', '文档类', 0, 'power', 14, 4, 1, '2019-10-14', 'admin', '2019-10-14', 'admin', '');
+INSERT INTO `power_menu` VALUES (373, '在院浏览选中使用', NULL, '/inHosp/updateStateAll', '功能', 'updateStateAll', 'useAll', '基本类', 7, 'emr_medical_record', 106, 6, 1, '2019-08-14', 'admin', '2019-08-14', 'admin', NULL);
+INSERT INTO `power_menu` VALUES (374, '出院浏览选中使用', NULL, '/inHosp/updateStateAll', '功能', 'updateStateAll', 'useAll', '基本类', 7, 'emr_medical_record', 107, 8, 1, '2019-08-14', 'admin', '2019-08-14', 'admin', NULL);
+INSERT INTO `power_menu` VALUES (375, '未归档病历列表选中使用', NULL, '/inHosp/updateStateAll', '功能', 'updateStateAll', 'useAll', '基本类', 7, 'emr_medical_record', 108, 7, 1, '2019-08-14', 'admin', '2019-08-14', 'admin', NULL);
+INSERT INTO `power_menu` VALUES (376, '病案终审选中使用', NULL, '/inHosp/updateStateAll', '功能', 'updateStateAll', 'useAll', '基本类', 7, 'emr_medical_record', 112, 1, 1, '2019-08-14', 'admin', '2019-08-14', 'admin', NULL);
+INSERT INTO `power_menu` VALUES (377, '在院浏览查看PDF', NULL, '/inHosp/getPdfById', '功能', 'getPdfToPdf', 'pdf2', '文档类', 7, 'emr_medical_record', 106, 3, 1, '2019-08-14', 'admin', '2019-08-14', 'admin', NULL);
+INSERT INTO `power_menu` VALUES (378, '出院浏览查看PDF', NULL, '/inHosp/getPdfById', '功能', 'getPdfToPdf', 'pdf2', '文档类', 7, 'emr_medical_record', 107, 5, 1, '2019-08-14', 'admin', '2019-08-14', 'admin', NULL);
+INSERT INTO `power_menu` VALUES (379, '未归档病历列表查看PDF', NULL, '/inHosp/getPdfById', '功能', 'getPdfToPdf', 'pdf2', '文档类', 7, 'emr_medical_record', 108, 4, 1, '2019-08-14', 'admin', '2019-08-14', 'admin', NULL);
+INSERT INTO `power_menu` VALUES (380, '病案终审查看PDF', NULL, '/inHosp/getPdfById', '功能', 'getPdfToPdf', 'pdf2', '文档类', 7, 'emr_medical_record', 112, 1, 1, '2019-08-14', 'admin', '2019-08-14', 'admin', NULL);
+INSERT INTO `power_menu` VALUES (381, '节假日设置', 'fa fa-circle-o', '/holidaySet/holidaySetList', '菜单', NULL, NULL, NULL, 42, 'emr_medical_record', 105, 4, 1, '2019-12-23', 'admin', '2019-12-23', 'admin', '');
+INSERT INTO `power_menu` VALUES (382, '查看节假日设置', NULL, '/holidaySet/holidaySetList', '功能', 'holidaySetList', 'select', '基本类', 42, 'emr_medical_record', 381, 1, 1, '2019-12-23', 'admin', '2019-12-23', 'admin', '');
+INSERT INTO `power_menu` VALUES (383, '修改节假日设置', NULL, '/holidaySet/updateSet', '功能', 'updateSet', 'update', '基本类', 42, 'emr_medical_record', 381, 2, 1, '2019-12-23', 'admin', '2019-12-23', 'admin', '');
+INSERT INTO `power_menu` VALUES (384, '部门管理', 'fa fa-circle-o', '/dept/bloodUI', '菜单', 'bloodUI', NULL, NULL, 2, 'power', 3, 3, 0, '2020-01-02', 'admin', '2020-01-02', 'admin', '');
+INSERT INTO `power_menu` VALUES (385, '查看部门管理页面', NULL, '/dept/bloodUI', '功能', 'bloodUI', '', '基本类', 2, 'power', 384, 1, 1, '2020-01-02', 'admin', '2020-01-02', 'admin', '');
+INSERT INTO `power_menu` VALUES (386, '添加部门', NULL, '/dept/add', '功能', 'add', '', '基本类', 2, 'power', 384, 2, 1, '2020-01-02', 'admin', '2020-01-02', 'admin', '');
+INSERT INTO `power_menu` VALUES (387, '修改部门', NULL, '/dept/update', '功能', 'update', '', '基本类', 2, 'power', 384, NULL, 1, '2020-01-02', 'admin', '2020-01-02', 'admin', '');
+INSERT INTO `power_menu` VALUES (388, '删除部门', NULL, '/dept/delete', '功能', 'delete', '', '基本类', 2, 'power', 384, 3, 1, '2020-01-02', 'admin', '2020-01-02', 'admin', '');
+INSERT INTO `power_menu` VALUES (389, '导入部门列表', NULL, '/dept/import', '功能', 'import', '', '文档类', 2, 'power', 384, 5, 1, '2020-01-02', 'admin', '2020-01-02', 'admin', '');
+INSERT INTO `power_menu` VALUES (390, '导出部门列表', NULL, '/dept/export', '功能', 'export', '', '文档类', 2, 'power', 384, 6, 1, '2020-01-02', 'admin', '2020-01-02', 'admin', '');
+INSERT INTO `power_menu` VALUES (391, '打印记录列表', 'fa fa-circle-o', '/printInfoList/pageUI174', '菜单', NULL, NULL, NULL, 15, 'emr_record', 409, 4, 1, '2020-03-04', 'admin', '2020-03-04', 'admin', '');
+INSERT INTO `power_menu` VALUES (392, '查看打印记录', NULL, '/printInfoList/select', '功能', 'select', 'select', '基本类', 3, 'emr_record', 391, 1, 1, '2020-03-04', 'admin', '2020-03-04', 'admin', '');
+INSERT INTO `power_menu` VALUES (393, '导出打印记录', NULL, '/printInfoList/export', '功能', 'export', 'export', '文档类', 3, 'emr_record', 391, 2, 1, '2020-03-04', 'admin', '2020-03-04', 'admin', '');
+INSERT INTO `power_menu` VALUES (394, '下载记录列表', 'fa fa-circle-o', '/downloadInfoList/pageUI174', '菜单', NULL, NULL, NULL, 15, 'emr_record', 409, 5, 1, '2020-03-04', 'admin', '2020-03-04', 'admin', '');
+INSERT INTO `power_menu` VALUES (395, '查看下载记录', NULL, '/downloadInfoList/select', '功能', 'select', 'select', '基本类', 3, 'emr_record', 394, 1, 1, '2020-03-04', 'admin', '2020-03-04', 'admin', '');
+INSERT INTO `power_menu` VALUES (396, '导出下载记录', NULL, '/downloadInfoList/export', '功能', 'export', 'export', '文档类', 3, 'emr_record', 394, 2, 1, '2020-03-04', 'admin', '2020-03-04', 'admin', '');
+INSERT INTO `power_menu` VALUES (397, '参数设置', 'fa fa-circle-o', '/commomSet/commomSetList', '菜单', NULL, NULL, NULL, 15, 'emr_record', 225, 6, 1, '2020-03-05', 'admin', '2020-03-05', 'admin', '');
+INSERT INTO `power_menu` VALUES (398, '查看参数设置', NULL, '/commomSet/select', '功能', 'select', 'select', '基本类', 3, 'emr_record', 397, 1, 1, '2020-03-05', 'admin', '2020-03-05', 'admin', '');
+INSERT INTO `power_menu` VALUES (399, '保存参数设置', NULL, '/commomSet/update', '功能', 'update', 'update', '基本类', 3, 'emr_record', 397, 2, 1, '2020-03-05', 'admin', '2020-03-05', 'admin', '');
+INSERT INTO `power_menu` VALUES (400, '病案新增影像图片', NULL, '/commom/updatePic', '功能', 'updatePic', 'updatePic', '业务类', 3, 'emr_record', 216, 9, 1, '2020-03-09', 'admin', '2020-03-19', 'admin', '');
+INSERT INTO `power_menu` VALUES (401, '病案删除影像图片', NULL, '/commom/delScanAssort', '功能', 'delScanAssort', 'delScanAssort', '业务类', 3, 'emr_record', 216, 10, 1, '2020-03-09', 'admin', '2020-03-19', 'admin', '');
+INSERT INTO `power_menu` VALUES (402, '水印设置', 'fa fa-circle-o', '/pdfWaterSet/pdfWaterSetList', '菜单', NULL, NULL, NULL, 15, 'emr_record', 225, 7, 1, '2020-03-12', 'admin', '2020-03-12', 'admin', '');
+INSERT INTO `power_menu` VALUES (403, '查看水印设置', NULL, '/pdfWaterSet/select', '功能', 'select', 'select', '基本类', 3, 'emr_record', 402, 1, 1, '2020-03-12', 'admin', '2020-03-12', 'admin', '');
+INSERT INTO `power_menu` VALUES (404, '修改水印设置', NULL, '/pdfWaterSet/update', '功能', 'update', 'update', '基本类', 3, 'emr_record', 402, 2, 1, '2020-03-12', 'admin', '2020-03-12', 'admin', '');
+INSERT INTO `power_menu` VALUES (405, '病案打印', NULL, '/commom/printPdf', '功能', 'printPdf', 'printPdf', '业务类', 3, 'emr_record', 216, 11, 1, '2020-03-12', 'admin', '2020-03-12', 'admin', NULL);
+INSERT INTO `power_menu` VALUES (406, '病案锁定管理', 'fa fa-circle-o', '/emrLock/lockList', '菜单', NULL, NULL, NULL, 15, 'emr_record', 225, 7, 1, '2020-04-14', 'admin', '2020-04-14', 'admin', '');
+INSERT INTO `power_menu` VALUES (407, '查看病案锁定页面', NULL, '/emrLock/select', '功能', 'select', 'select', '基本类', 15, 'emr_record', 406, 1, 1, '2020-04-14', 'admin', '2020-04-14', 'admin', '');
+INSERT INTO `power_menu` VALUES (408, '解锁病案', NULL, '/emrLock/unLock', '功能', 'unLock', 'unLock', '业务类', 15, 'emr_record', 406, 2, 1, '2020-04-14', 'admin', '2020-04-14', 'admin', '');
+INSERT INTO `power_menu` VALUES (409, '日志管理', 'fa fa-dashboard', '#', '菜单', NULL, NULL, NULL, 15, 'emr_record', 229, 4, 1, '2020-04-24', 'admin', '2020-04-24', 'admin', '');
+INSERT INTO `power_menu` VALUES (414, '监控中心页面', 'fa fa-circle-o', '/monitoringCenter/monitoringCenterList', '菜单', NULL, NULL, NULL, 15, 'emr_record', 225, 5, 1, '2020-06-19', 'admin', '2020-06-19', 'admin', '');
+INSERT INTO `power_menu` VALUES (415, '查看监控中心页面', NULL, '/monitoringCenter/select', '功能', 'select', 'select', '基本类', 15, 'emr_record', 414, 1, 1, '2020-06-19', 'admin', '2020-06-19', 'admin', '');
+
+-- ----------------------------
+-- Table structure for power_notice
+-- ----------------------------
+DROP TABLE IF EXISTS `power_notice`;
+CREATE TABLE `power_notice` (
+ `notice_id` int(11) NOT NULL AUTO_INCREMENT,
+ `sys_id` int(11) NULL DEFAULT NULL COMMENT '系统id',
+ `notice_type_flag` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '通知类型标志',
+ `notice_type_name` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '通知类型名称',
+ `notice_title` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '通知标题',
+ `notice_content` varchar(300) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '通知内容',
+ `notice_send` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '通知人',
+ `notice_date` char(19) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '通知时间',
+ `notice_receive` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '接收人',
+ `effective` int(11) NOT NULL DEFAULT 1 COMMENT '有效否',
+ `read_flag` int(11) NULL DEFAULT NULL COMMENT '1、已读 0、未读',
+ `parent_id` int(11) NULL DEFAULT NULL COMMENT '父节点',
+ `remark` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '备注',
+ PRIMARY KEY (`notice_id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 28 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of power_notice
+-- ----------------------------
+INSERT INTO `power_notice` VALUES (1, NULL, 'power', '权限系统通知', NULL, NULL, NULL, NULL, NULL, 1, NULL, NULL, NULL);
+INSERT INTO `power_notice` VALUES (2, NULL, 'emr_record', '档案管理系统通知', NULL, NULL, NULL, NULL, NULL, 1, NULL, NULL, NULL);
+INSERT INTO `power_notice` VALUES (3, NULL, NULL, NULL, '213', '321321', '1', '2020-04-10 10:20:39', 'all', 1, 0, 1, '');
+INSERT INTO `power_notice` VALUES (4, NULL, NULL, NULL, '3232', '432432', '1', '2020-04-10 10:20:45', 'all', 1, 0, 2, '');
+INSERT INTO `power_notice` VALUES (5, NULL, 'emr_medical_record', '病案归档系统通知', NULL, NULL, NULL, NULL, NULL, 1, NULL, NULL, NULL);
+INSERT INTO `power_notice` VALUES (6, NULL, NULL, NULL, '4334324', '43242', '1', '2020-04-24 09:57:21', '2', 1, 0, 2, '43242');
+INSERT INTO `power_notice` VALUES (7, NULL, NULL, NULL, '11', '111', '1', '2020-04-24 09:57:46', '2', 1, 0, 2, '');
+INSERT INTO `power_notice` VALUES (8, NULL, NULL, NULL, '2121', '21', '1', '2020-04-24 09:57:55', '2', 1, 0, 5, '21');
+INSERT INTO `power_notice` VALUES (9, NULL, NULL, NULL, '3321', '321', '1', '2020-04-24 09:58:58', '4', 1, 0, 5, '321');
+INSERT INTO `power_notice` VALUES (10, NULL, NULL, NULL, '533', '5345', '1', '2020-04-24 09:59:42', 'all', 1, 0, 5, '');
+INSERT INTO `power_notice` VALUES (11, NULL, NULL, NULL, '231231', '3232', '1', '2020-04-24 10:00:54', '4', 1, 0, 5, '32');
+INSERT INTO `power_notice` VALUES (12, NULL, NULL, NULL, '654654', '654', '1', '2020-04-24 10:01:30', 'all', 1, 0, 5, '654');
+INSERT INTO `power_notice` VALUES (13, NULL, NULL, NULL, '6545654', '65464', '1', '2020-04-24 10:01:39', 'all', 1, 0, 1, '654');
+INSERT INTO `power_notice` VALUES (14, NULL, NULL, NULL, '654654', '654654', '1', '2020-04-24 10:02:00', 'all', 1, 0, 5, '654654');
+INSERT INTO `power_notice` VALUES (15, NULL, NULL, NULL, '6546', '645654', '1', '2020-04-24 10:02:24', 'all', 1, 0, 5, '654645');
+INSERT INTO `power_notice` VALUES (16, NULL, NULL, NULL, '433', '43242', '1', '2020-04-24 10:06:05', '4', 1, 0, 2, '432');
+INSERT INTO `power_notice` VALUES (17, NULL, NULL, NULL, '111111', '1111', '1', '2020-04-24 10:06:16', '4', 1, 0, 5, '432432');
+INSERT INTO `power_notice` VALUES (18, NULL, NULL, NULL, '33', '33', '1', '2020-04-24 10:13:53', '4', 1, 0, 2, '3');
+INSERT INTO `power_notice` VALUES (19, NULL, NULL, NULL, '111', '111', '1', '2020-04-24 10:17:02', '4', 1, 0, 2, '');
+INSERT INTO `power_notice` VALUES (20, NULL, NULL, NULL, '111', '111', '1', '2020-04-24 10:17:18', '4', 1, 0, 2, '111');
+INSERT INTO `power_notice` VALUES (21, NULL, NULL, NULL, '1111', '111', '1', '2020-04-24 10:18:42', '4', 1, 0, 2, '');
+INSERT INTO `power_notice` VALUES (22, NULL, NULL, NULL, '765756', '76576', '4', '2020-04-24 10:20:53', 'all', 1, 0, 2, '7657');
+INSERT INTO `power_notice` VALUES (23, NULL, NULL, NULL, '4242', '432', '1', '2020-07-01 16:27:20', '3', 1, 0, 1, '432');
+INSERT INTO `power_notice` VALUES (24, NULL, NULL, NULL, '4242', '432', '1', '2020-07-01 16:27:20', '4', 1, 0, 1, '432');
+INSERT INTO `power_notice` VALUES (25, NULL, NULL, NULL, '1111', '432423', '1', '2020-07-01 16:27:31', '3', 1, 0, 2, '432423');
+INSERT INTO `power_notice` VALUES (26, NULL, NULL, NULL, '1111', '432423', '1', '2020-07-01 16:27:31', '5', 1, 0, 2, '432423');
+INSERT INTO `power_notice` VALUES (27, NULL, NULL, NULL, '1111', '432423', '1', '2020-07-01 16:27:31', '6', 1, 0, 2, '432423');
+
+-- ----------------------------
+-- Table structure for power_role
+-- ----------------------------
+DROP TABLE IF EXISTS `power_role`;
+CREATE TABLE `power_role` (
+ `role_id` int(11) NOT NULL AUTO_INCREMENT,
+ `role_name` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
+ `show_record` smallint(1) NULL DEFAULT NULL,
+ `downLoad_record` smallint(1) NULL DEFAULT NULL,
+ `show_print` smallint(1) NULL DEFAULT NULL,
+ `remark` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
+ `effective` int(11) NOT NULL,
+ `create_date` char(16) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,
+ `creater` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
+ `update_date` char(16) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,
+ `updater` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
+ PRIMARY KEY (`role_id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of power_role
+-- ----------------------------
+INSERT INTO `power_role` VALUES (-100, '医院系统管理员', 1, 1, 1, '医院角色', 1, '2019-08-09', 'admin', '2020-03-18', 'admin');
+INSERT INTO `power_role` VALUES (0, '系统管理员', 0, 1, 1, '系统角色', 1, '2019-08-09', 'admin', '2019-08-09', 'admin');
+INSERT INTO `power_role` VALUES (1, '医生', 1, 0, 0, '', 1, '2020-03-18', 'admin', '2020-07-07', 'admin');
+INSERT INTO `power_role` VALUES (2, '护士', 0, 0, 0, '', 1, '2020-03-31', 'admin', '2020-03-31', 'admin');
+
+-- ----------------------------
+-- Table structure for power_role_menu
+-- ----------------------------
+DROP TABLE IF EXISTS `power_role_menu`;
+CREATE TABLE `power_role_menu` (
+ `role_menu_id` int(11) NOT NULL AUTO_INCREMENT,
+ `role_id` int(11) NOT NULL,
+ `menu_id` int(11) NOT NULL,
+ `create_date` char(16) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,
+ `creater` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
+ `update_date` char(16) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,
+ `updater` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
+ `remark` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
+ PRIMARY KEY (`role_menu_id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 190 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of power_role_menu
+-- ----------------------------
+INSERT INTO `power_role_menu` VALUES (1, 1, 103, '2020-03-31', 'admin', '2020-03-31', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (2, 1, 104, '2020-03-31', 'admin', '2020-03-31', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (3, 1, 112, '2020-03-31', 'admin', '2020-03-31', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (4, 1, 376, '2020-03-31', 'admin', '2020-03-31', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (5, 1, 142, '2020-03-31', 'admin', '2020-03-31', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (6, 1, 143, '2020-03-31', 'admin', '2020-03-31', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (7, 1, 147, '2020-03-31', 'admin', '2020-03-31', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (8, 1, 148, '2020-03-31', 'admin', '2020-03-31', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (9, 1, 149, '2020-03-31', 'admin', '2020-03-31', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (10, 1, 380, '2020-03-31', 'admin', '2020-03-31', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (11, 1, 141, '2020-03-31', 'admin', '2020-03-31', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (12, 1, 144, '2020-03-31', 'admin', '2020-03-31', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (13, 1, 145, '2020-03-31', 'admin', '2020-03-31', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (14, 1, 146, '2020-03-31', 'admin', '2020-03-31', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (100, 2, 229, '2020-04-24', 'admin', '2020-04-24', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (101, 2, 220, '2020-04-24', 'admin', '2020-04-24', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (102, 2, 221, '2020-04-24', 'admin', '2020-04-24', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (103, 2, 222, '2020-04-24', 'admin', '2020-04-24', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (104, 2, 223, '2020-04-24', 'admin', '2020-04-24', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (105, 2, 224, '2020-04-24', 'admin', '2020-04-24', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (106, 2, 267, '2020-04-24', 'admin', '2020-04-24', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (107, 2, 268, '2020-04-24', 'admin', '2020-04-24', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (108, 2, 270, '2020-04-24', 'admin', '2020-04-24', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (109, 2, 269, '2020-04-24', 'admin', '2020-04-24', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (110, 2, 271, '2020-04-24', 'admin', '2020-04-24', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (111, 2, 272, '2020-04-24', 'admin', '2020-04-24', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (112, 2, 273, '2020-04-24', 'admin', '2020-04-24', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (113, 2, 274, '2020-04-24', 'admin', '2020-04-24', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (114, 2, 275, '2020-04-24', 'admin', '2020-04-24', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (115, 2, 276, '2020-04-24', 'admin', '2020-04-24', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (116, 2, 277, '2020-04-24', 'admin', '2020-04-24', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (117, 2, 278, '2020-04-24', 'admin', '2020-04-24', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (118, 2, 279, '2020-04-24', 'admin', '2020-04-24', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (119, 2, 280, '2020-04-24', 'admin', '2020-04-24', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (120, 2, 281, '2020-04-24', 'admin', '2020-04-24', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (121, 2, 282, '2020-04-24', 'admin', '2020-04-24', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (122, 2, 283, '2020-04-24', 'admin', '2020-04-24', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (123, 2, 284, '2020-04-24', 'admin', '2020-04-24', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (124, 2, 285, '2020-04-24', 'admin', '2020-04-24', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (125, 2, 286, '2020-04-24', 'admin', '2020-04-24', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (126, 2, 287, '2020-04-24', 'admin', '2020-04-24', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (127, 2, 288, '2020-04-24', 'admin', '2020-04-24', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (128, 2, 289, '2020-04-24', 'admin', '2020-04-24', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (129, 2, 290, '2020-04-24', 'admin', '2020-04-24', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (130, 1, 229, '2020-07-07', 'admin', '2020-07-07', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (131, 1, 211, '2020-07-07', 'admin', '2020-07-07', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (132, 1, 213, '2020-07-07', 'admin', '2020-07-07', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (133, 1, 214, '2020-07-07', 'admin', '2020-07-07', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (134, 1, 215, '2020-07-07', 'admin', '2020-07-07', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (135, 1, 216, '2020-07-07', 'admin', '2020-07-07', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (136, 1, 220, '2020-07-07', 'admin', '2020-07-07', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (137, 1, 221, '2020-07-07', 'admin', '2020-07-07', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (138, 1, 222, '2020-07-07', 'admin', '2020-07-07', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (139, 1, 223, '2020-07-07', 'admin', '2020-07-07', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (140, 1, 224, '2020-07-07', 'admin', '2020-07-07', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (141, 1, 225, '2020-07-07', 'admin', '2020-07-07', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (142, 1, 414, '2020-07-07', 'admin', '2020-07-07', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (143, 1, 234, '2020-07-07', 'admin', '2020-07-07', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (144, 1, 235, '2020-07-07', 'admin', '2020-07-07', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (145, 1, 236, '2020-07-07', 'admin', '2020-07-07', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (146, 1, 237, '2020-07-07', 'admin', '2020-07-07', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (147, 1, 238, '2020-07-07', 'admin', '2020-07-07', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (148, 1, 239, '2020-07-07', 'admin', '2020-07-07', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (149, 1, 249, '2020-07-07', 'admin', '2020-07-07', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (150, 1, 250, '2020-07-07', 'admin', '2020-07-07', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (151, 1, 251, '2020-07-07', 'admin', '2020-07-07', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (152, 1, 252, '2020-07-07', 'admin', '2020-07-07', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (153, 1, 253, '2020-07-07', 'admin', '2020-07-07', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (154, 1, 254, '2020-07-07', 'admin', '2020-07-07', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (155, 1, 258, '2020-07-07', 'admin', '2020-07-07', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (156, 1, 255, '2020-07-07', 'admin', '2020-07-07', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (157, 1, 256, '2020-07-07', 'admin', '2020-07-07', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (158, 1, 257, '2020-07-07', 'admin', '2020-07-07', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (159, 1, 259, '2020-07-07', 'admin', '2020-07-07', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (160, 1, 260, '2020-07-07', 'admin', '2020-07-07', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (161, 1, 295, '2020-07-07', 'admin', '2020-07-07', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (162, 1, 400, '2020-07-07', 'admin', '2020-07-07', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (163, 1, 401, '2020-07-07', 'admin', '2020-07-07', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (164, 1, 405, '2020-07-07', 'admin', '2020-07-07', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (165, 1, 267, '2020-07-07', 'admin', '2020-07-07', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (166, 1, 268, '2020-07-07', 'admin', '2020-07-07', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (167, 1, 270, '2020-07-07', 'admin', '2020-07-07', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (168, 1, 269, '2020-07-07', 'admin', '2020-07-07', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (169, 1, 271, '2020-07-07', 'admin', '2020-07-07', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (170, 1, 272, '2020-07-07', 'admin', '2020-07-07', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (171, 1, 273, '2020-07-07', 'admin', '2020-07-07', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (172, 1, 274, '2020-07-07', 'admin', '2020-07-07', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (173, 1, 275, '2020-07-07', 'admin', '2020-07-07', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (174, 1, 276, '2020-07-07', 'admin', '2020-07-07', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (175, 1, 277, '2020-07-07', 'admin', '2020-07-07', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (176, 1, 278, '2020-07-07', 'admin', '2020-07-07', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (177, 1, 279, '2020-07-07', 'admin', '2020-07-07', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (178, 1, 280, '2020-07-07', 'admin', '2020-07-07', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (179, 1, 281, '2020-07-07', 'admin', '2020-07-07', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (180, 1, 282, '2020-07-07', 'admin', '2020-07-07', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (181, 1, 283, '2020-07-07', 'admin', '2020-07-07', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (182, 1, 284, '2020-07-07', 'admin', '2020-07-07', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (183, 1, 285, '2020-07-07', 'admin', '2020-07-07', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (184, 1, 286, '2020-07-07', 'admin', '2020-07-07', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (185, 1, 287, '2020-07-07', 'admin', '2020-07-07', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (186, 1, 288, '2020-07-07', 'admin', '2020-07-07', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (187, 1, 289, '2020-07-07', 'admin', '2020-07-07', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (188, 1, 290, '2020-07-07', 'admin', '2020-07-07', 'admin', NULL);
+INSERT INTO `power_role_menu` VALUES (189, 1, 415, '2020-07-07', 'admin', '2020-07-07', 'admin', NULL);
+
+-- ----------------------------
+-- Table structure for power_sys_dict
+-- ----------------------------
+DROP TABLE IF EXISTS `power_sys_dict`;
+CREATE TABLE `power_sys_dict` (
+ `dict_id` int(11) NOT NULL AUTO_INCREMENT,
+ `dept_id` int(11) NULL DEFAULT NULL,
+ `hospital_name` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
+ `sys_flag` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
+ `sys_name` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
+ `dict_area` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
+ `hospital_tel` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
+ `parent_id` int(11) NULL DEFAULT NULL,
+ `sys_type` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
+ `sort` int(11) NULL DEFAULT NULL,
+ `dict_status` int(11) NOT NULL,
+ `dict_edit` int(11) NOT NULL,
+ `create_date` char(16) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,
+ `creater` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
+ `update_date` char(16) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,
+ `updater` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
+ `remark` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
+ PRIMARY KEY (`dict_id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 23 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of power_sys_dict
+-- ----------------------------
+INSERT INTO `power_sys_dict` VALUES (1, NULL, '中国人民解放军第174医院', NULL, NULL, '', '', 0, '医院', NULL, 1, 1, '2020-03-18', 'admin', '2020-03-18', 'admin', NULL);
+INSERT INTO `power_sys_dict` VALUES (4, NULL, NULL, 'power', '权限系统', NULL, NULL, 1, '权限系统', 1, 1, 1, '2020-01-02', 'admin', '2020-01-02', '2020-01-02', NULL);
+INSERT INTO `power_sys_dict` VALUES (15, 1, NULL, 'emr_record', '病案管理系统', NULL, NULL, 1, '档案管理系统', NULL, 1, 1, '2020-04-08', 'admin', '2020-04-08', 'admin', '');
+INSERT INTO `power_sys_dict` VALUES (16, 2, NULL, 'emr_record', '病案管理系统', NULL, NULL, 1, '档案管理系统', NULL, 1, 1, '2020-04-08', 'admin', '2020-04-08', 'admin', '');
+INSERT INTO `power_sys_dict` VALUES (17, 3, NULL, 'emr_record', '病案管理系统', NULL, NULL, 1, '档案管理系统', NULL, 1, 1, '2020-04-08', 'admin', '2020-04-08', 'admin', '');
+INSERT INTO `power_sys_dict` VALUES (18, 4, NULL, 'emr_record', '病案管理系统', NULL, NULL, 1, '档案管理系统', NULL, 1, 1, '2020-04-08', 'admin', '2020-04-08', 'admin', '');
+INSERT INTO `power_sys_dict` VALUES (19, 1, NULL, 'emr_medical_record', '病案归档系统', NULL, NULL, 1, '档案归档系统', NULL, 1, 1, '2020-04-08', 'admin', '2020-04-08', 'admin', '');
+INSERT INTO `power_sys_dict` VALUES (20, 2, NULL, 'emr_medical_record', '病案归档系统', NULL, NULL, 1, '档案归档系统', NULL, 1, 1, '2020-04-08', 'admin', '2020-04-08', 'admin', '');
+INSERT INTO `power_sys_dict` VALUES (21, 3, NULL, 'emr_medical_record', '病案归档系统', NULL, NULL, 1, '档案归档系统', NULL, 1, 1, '2020-04-08', 'admin', '2020-04-08', 'admin', '');
+INSERT INTO `power_sys_dict` VALUES (22, 4, NULL, 'emr_medical_record', '病案归档系统', NULL, NULL, 1, '档案归档系统', NULL, 1, 1, '2020-04-08', 'admin', '2020-04-08', 'admin', '');
+
+-- ----------------------------
+-- Table structure for power_user
+-- ----------------------------
+DROP TABLE IF EXISTS `power_user`;
+CREATE TABLE `power_user` (
+ `user_id` int(11) NOT NULL AUTO_INCREMENT,
+ `user_name` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
+ `user_pwd` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
+ `user_sex` int(11) NULL DEFAULT NULL,
+ `user_age` int(11) NULL DEFAULT NULL,
+ `user_tel` varchar(11) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
+ `user_email` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
+ `user_position` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
+ `role_id` int(11) NOT NULL,
+ `dept_id` varchar(2000) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,
+ `effective` int(11) NOT NULL,
+ `create_date` char(16) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,
+ `creater` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
+ `update_date` char(16) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL,
+ `updater` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
+ `remark` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
+ `login_flag` int(1) NULL DEFAULT 0 COMMENT '登录标志 默认为0为未登录 1登录',
+ `name` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
+ `dept_code` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
+ PRIMARY KEY (`user_id`) USING BTREE,
+ INDEX `power_user_userName_index`(`user_name`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 13 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of power_user
+-- ----------------------------
+INSERT INTO `power_user` VALUES (1, 'admin', 'RUZHQEFC', 1, 12, '13085266547', '35845@qq.com', 'gly', 0, '', 1, '2019-08-27', 'xyadmin', '2019-08-27', 'admin1', '', 0, '管理员', NULL);
+INSERT INTO `power_user` VALUES (2, '1', 'RUZHQEFC', 1, NULL, '', '', '', -100, '1', 1, '2020-04-14', 'admin', '2020-04-14', 'admin', '', 0, '1', NULL);
+INSERT INTO `power_user` VALUES (3, '2', 'RUZHQEFC', 1, NULL, '', '', '', -100, '1', 1, '2020-04-14', 'admin', '2020-04-14', 'admin', '', 0, '', NULL);
+INSERT INTO `power_user` VALUES (4, '3', 'RUZHQEFC', 1, NULL, '', '', '', 1, '1', 1, '2020-04-14', 'admin', '2020-04-14', 'admin', '', 0, '', NULL);
+INSERT INTO `power_user` VALUES (5, '4', 'RUZHQEFC', 1, NULL, '', '', '', 2, '1', 1, '2020-04-14', 'admin', '2020-04-14', 'admin', '', 0, '4', NULL);
+INSERT INTO `power_user` VALUES (6, '5', 'RUZHQEFC', 1, NULL, '', '', '', 2, '1', 1, '2020-04-14', 'admin', '2020-04-14', 'admin', '', 0, '5', NULL);
+INSERT INTO `power_user` VALUES (7, '6', 'RUZHQEFC', 1, NULL, '', '', '', 1, '1', 1, '2020-04-14', 'admin', '2020-04-14', 'admin', '1', 0, '6', NULL);
+INSERT INTO `power_user` VALUES (8, '7', 'RUZHQEFC', 1, -1, '', '', '', 2, '1', 1, '2020-04-14', 'admin', '2020-04-14', 'admin', '1', 0, '', NULL);
+INSERT INTO `power_user` VALUES (9, '8', 'RUZHQEFC', 1, NULL, '', '', '', 1, '1', 1, '2020-04-14', 'admin', '2020-04-14', 'admin', '', 0, '8', NULL);
+INSERT INTO `power_user` VALUES (10, '9', 'RUZHQEFC', 1, NULL, '', '', '', 1, '1', 1, '2020-04-14', 'admin', '2020-04-14', 'admin', '', 0, '9', NULL);
+INSERT INTO `power_user` VALUES (11, '10', 'RUZHQEFC', 1, NULL, '', '', '', 1, '1,2,3,4', 1, '2020-04-14', 'admin', '2020-04-14', 'admin', '', 0, '10', NULL);
+INSERT INTO `power_user` VALUES (12, '11', 'RUZHQEFC', 1, NULL, '', '', '', 1, '1,2,3,4', 1, '2020-04-14', 'admin', '2020-07-06', 'admin', '', 0, '1234', NULL);
+
+-- ----------------------------
+-- Table structure for power_user_menu
+-- ----------------------------
+DROP TABLE IF EXISTS `power_user_menu`;
+CREATE TABLE `power_user_menu` (
+ `user_menu_id` int(11) NOT NULL AUTO_INCREMENT,
+ `user_id` int(11) NOT NULL,
+ `menu_id` int(11) NOT NULL,
+ `flag` int(11) NOT NULL,
+ `create_date` char(16) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,
+ `creater` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
+ `update_date` char(16) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,
+ `updater` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
+ `remark` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
+ PRIMARY KEY (`user_menu_id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 166 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
+
+-- ----------------------------
+-- Records of power_user_menu
+-- ----------------------------
+INSERT INTO `power_user_menu` VALUES (1, 5, 110, 1, '2020-03-31', 'admin', '2020-03-31', 'admin', NULL);
+INSERT INTO `power_user_menu` VALUES (2, 5, 139, 1, '2020-03-31', 'admin', '2020-03-31', 'admin', NULL);
+INSERT INTO `power_user_menu` VALUES (3, 5, 138, 1, '2020-03-31', 'admin', '2020-03-31', 'admin', NULL);
+INSERT INTO `power_user_menu` VALUES (4, 5, 380, 0, '2020-03-31', 'admin', '2020-03-31', 'admin', NULL);
+INSERT INTO `power_user_menu` VALUES (5, 5, 145, 0, '2020-03-31', 'admin', '2020-03-31', 'admin', NULL);
+INSERT INTO `power_user_menu` VALUES (6, 11, 228, 1, '2020-04-15', 'admin', '2020-04-15', 'admin', NULL);
+INSERT INTO `power_user_menu` VALUES (7, 11, 3, 1, '2020-04-15', 'admin', '2020-04-15', 'admin', NULL);
+INSERT INTO `power_user_menu` VALUES (8, 11, 6, 1, '2020-04-15', 'admin', '2020-04-15', 'admin', NULL);
+INSERT INTO `power_user_menu` VALUES (9, 11, 23, 1, '2020-04-15', 'admin', '2020-04-15', 'admin', NULL);
+INSERT INTO `power_user_menu` VALUES (10, 11, 24, 1, '2020-04-15', 'admin', '2020-04-15', 'admin', NULL);
+INSERT INTO `power_user_menu` VALUES (11, 11, 25, 1, '2020-04-15', 'admin', '2020-04-15', 'admin', NULL);
+INSERT INTO `power_user_menu` VALUES (12, 11, 26, 1, '2020-04-15', 'admin', '2020-04-15', 'admin', NULL);
+INSERT INTO `power_user_menu` VALUES (13, 11, 27, 1, '2020-04-15', 'admin', '2020-04-15', 'admin', NULL);
+INSERT INTO `power_user_menu` VALUES (14, 11, 361, 1, '2020-04-15', 'admin', '2020-04-15', 'admin', NULL);
+INSERT INTO `power_user_menu` VALUES (107, 12, 105, 1, '2020-04-15', 'admin', '2020-04-15', 'admin', NULL);
+INSERT INTO `power_user_menu` VALUES (108, 12, 113, 1, '2020-04-15', 'admin', '2020-04-15', 'admin', NULL);
+INSERT INTO `power_user_menu` VALUES (109, 12, 114, 1, '2020-04-15', 'admin', '2020-04-15', 'admin', NULL);
+INSERT INTO `power_user_menu` VALUES (110, 12, 208, 1, '2020-04-15', 'admin', '2020-04-15', 'admin', NULL);
+INSERT INTO `power_user_menu` VALUES (111, 12, 381, 1, '2020-04-15', 'admin', '2020-04-15', 'admin', NULL);
+INSERT INTO `power_user_menu` VALUES (112, 12, 150, 1, '2020-04-15', 'admin', '2020-04-15', 'admin', NULL);
+INSERT INTO `power_user_menu` VALUES (113, 12, 151, 1, '2020-04-15', 'admin', '2020-04-15', 'admin', NULL);
+INSERT INTO `power_user_menu` VALUES (114, 12, 152, 1, '2020-04-15', 'admin', '2020-04-15', 'admin', NULL);
+INSERT INTO `power_user_menu` VALUES (115, 12, 153, 1, '2020-04-15', 'admin', '2020-04-15', 'admin', NULL);
+INSERT INTO `power_user_menu` VALUES (116, 12, 154, 1, '2020-04-15', 'admin', '2020-04-15', 'admin', NULL);
+INSERT INTO `power_user_menu` VALUES (117, 12, 155, 1, '2020-04-15', 'admin', '2020-04-15', 'admin', NULL);
+INSERT INTO `power_user_menu` VALUES (118, 12, 156, 1, '2020-04-15', 'admin', '2020-04-15', 'admin', NULL);
+INSERT INTO `power_user_menu` VALUES (119, 12, 209, 1, '2020-04-15', 'admin', '2020-04-15', 'admin', NULL);
+INSERT INTO `power_user_menu` VALUES (120, 12, 382, 1, '2020-04-15', 'admin', '2020-04-15', 'admin', NULL);
+INSERT INTO `power_user_menu` VALUES (121, 12, 383, 1, '2020-04-15', 'admin', '2020-04-15', 'admin', NULL);
+INSERT INTO `power_user_menu` VALUES (122, 12, 228, 1, '2020-04-23', 'admin', '2020-04-23', 'admin', NULL);
+INSERT INTO `power_user_menu` VALUES (123, 12, 3, 1, '2020-04-23', 'admin', '2020-04-23', 'admin', NULL);
+INSERT INTO `power_user_menu` VALUES (124, 12, 6, 1, '2020-04-23', 'admin', '2020-04-23', 'admin', NULL);
+INSERT INTO `power_user_menu` VALUES (125, 12, 24, 1, '2020-04-23', 'admin', '2020-04-23', 'admin', NULL);
+INSERT INTO `power_user_menu` VALUES (126, 12, 25, 1, '2020-04-23', 'admin', '2020-04-23', 'admin', NULL);
+INSERT INTO `power_user_menu` VALUES (127, 12, 26, 1, '2020-04-23', 'admin', '2020-04-23', 'admin', NULL);
+INSERT INTO `power_user_menu` VALUES (128, 12, 27, 1, '2020-04-23', 'admin', '2020-04-23', 'admin', NULL);
+INSERT INTO `power_user_menu` VALUES (129, 12, 361, 1, '2020-04-23', 'admin', '2020-04-23', 'admin', NULL);
+INSERT INTO `power_user_menu` VALUES (130, 11, 217, 1, '2020-04-24', 'admin', '2020-04-24', 'admin', NULL);
+INSERT INTO `power_user_menu` VALUES (131, 11, 218, 1, '2020-04-24', 'admin', '2020-04-24', 'admin', NULL);
+INSERT INTO `power_user_menu` VALUES (132, 11, 219, 1, '2020-04-24', 'admin', '2020-04-24', 'admin', NULL);
+INSERT INTO `power_user_menu` VALUES (133, 11, 225, 1, '2020-04-24', 'admin', '2020-04-24', 'admin', NULL);
+INSERT INTO `power_user_menu` VALUES (134, 11, 226, 1, '2020-04-24', 'admin', '2020-04-24', 'admin', NULL);
+INSERT INTO `power_user_menu` VALUES (135, 11, 227, 1, '2020-04-24', 'admin', '2020-04-24', 'admin', NULL);
+INSERT INTO `power_user_menu` VALUES (136, 11, 391, 1, '2020-04-24', 'admin', '2020-04-24', 'admin', NULL);
+INSERT INTO `power_user_menu` VALUES (137, 11, 394, 1, '2020-04-24', 'admin', '2020-04-24', 'admin', NULL);
+INSERT INTO `power_user_menu` VALUES (138, 11, 397, 1, '2020-04-24', 'admin', '2020-04-24', 'admin', NULL);
+INSERT INTO `power_user_menu` VALUES (139, 11, 402, 1, '2020-04-24', 'admin', '2020-04-24', 'admin', NULL);
+INSERT INTO `power_user_menu` VALUES (140, 11, 406, 1, '2020-04-24', 'admin', '2020-04-24', 'admin', NULL);
+INSERT INTO `power_user_menu` VALUES (141, 11, 261, 1, '2020-04-24', 'admin', '2020-04-24', 'admin', NULL);
+INSERT INTO `power_user_menu` VALUES (142, 11, 262, 1, '2020-04-24', 'admin', '2020-04-24', 'admin', NULL);
+INSERT INTO `power_user_menu` VALUES (143, 11, 263, 1, '2020-04-24', 'admin', '2020-04-24', 'admin', NULL);
+INSERT INTO `power_user_menu` VALUES (144, 11, 264, 1, '2020-04-24', 'admin', '2020-04-24', 'admin', NULL);
+INSERT INTO `power_user_menu` VALUES (145, 11, 265, 1, '2020-04-24', 'admin', '2020-04-24', 'admin', NULL);
+INSERT INTO `power_user_menu` VALUES (146, 11, 266, 1, '2020-04-24', 'admin', '2020-04-24', 'admin', NULL);
+INSERT INTO `power_user_menu` VALUES (147, 11, 291, 1, '2020-04-24', 'admin', '2020-04-24', 'admin', NULL);
+INSERT INTO `power_user_menu` VALUES (148, 11, 292, 1, '2020-04-24', 'admin', '2020-04-24', 'admin', NULL);
+INSERT INTO `power_user_menu` VALUES (149, 11, 293, 1, '2020-04-24', 'admin', '2020-04-24', 'admin', NULL);
+INSERT INTO `power_user_menu` VALUES (150, 11, 294, 1, '2020-04-24', 'admin', '2020-04-24', 'admin', NULL);
+INSERT INTO `power_user_menu` VALUES (151, 11, 356, 1, '2020-04-24', 'admin', '2020-04-24', 'admin', NULL);
+INSERT INTO `power_user_menu` VALUES (152, 11, 357, 1, '2020-04-24', 'admin', '2020-04-24', 'admin', NULL);
+INSERT INTO `power_user_menu` VALUES (153, 11, 358, 1, '2020-04-24', 'admin', '2020-04-24', 'admin', NULL);
+INSERT INTO `power_user_menu` VALUES (154, 11, 359, 1, '2020-04-24', 'admin', '2020-04-24', 'admin', NULL);
+INSERT INTO `power_user_menu` VALUES (155, 11, 392, 1, '2020-04-24', 'admin', '2020-04-24', 'admin', NULL);
+INSERT INTO `power_user_menu` VALUES (156, 11, 393, 1, '2020-04-24', 'admin', '2020-04-24', 'admin', NULL);
+INSERT INTO `power_user_menu` VALUES (157, 11, 395, 1, '2020-04-24', 'admin', '2020-04-24', 'admin', NULL);
+INSERT INTO `power_user_menu` VALUES (158, 11, 396, 1, '2020-04-24', 'admin', '2020-04-24', 'admin', NULL);
+INSERT INTO `power_user_menu` VALUES (159, 11, 398, 1, '2020-04-24', 'admin', '2020-04-24', 'admin', NULL);
+INSERT INTO `power_user_menu` VALUES (160, 11, 399, 1, '2020-04-24', 'admin', '2020-04-24', 'admin', NULL);
+INSERT INTO `power_user_menu` VALUES (161, 11, 403, 1, '2020-04-24', 'admin', '2020-04-24', 'admin', NULL);
+INSERT INTO `power_user_menu` VALUES (162, 11, 404, 1, '2020-04-24', 'admin', '2020-04-24', 'admin', NULL);
+INSERT INTO `power_user_menu` VALUES (163, 11, 407, 1, '2020-04-24', 'admin', '2020-04-24', 'admin', NULL);
+INSERT INTO `power_user_menu` VALUES (164, 11, 408, 1, '2020-04-24', 'admin', '2020-04-24', 'admin', NULL);
+INSERT INTO `power_user_menu` VALUES (165, 11, 289, 0, '2020-04-24', 'admin', '2020-04-24', 'admin', NULL);
+
+-- ----------------------------
+-- View structure for power_user_dict
+-- ----------------------------
+DROP VIEW IF EXISTS `power_user_dict`;
+CREATE ALGORITHM = UNDEFINED SQL SECURITY DEFINER VIEW `power_user_dict` AS select `qfpower`.`power_user`.`user_id` AS `user_id`,`qfpower`.`power_dept`.`dict_id` AS `dict_id` from ((`qfpower`.`power_user` join `mysql`.`help_topic` `b` on((`b`.`help_topic_id` < ((length(`qfpower`.`power_user`.`dept_id`) - length(replace(`qfpower`.`power_user`.`dept_id`,',',''))) + 1)))) left join `qfpower`.`power_dept` on((`qfpower`.`power_dept`.`dept_id` = `qfpower`.`power_user`.`dept_id`))) group by `qfpower`.`power_user`.`user_id`;
+
+SET FOREIGN_KEY_CHECKS = 1;
diff --git a/power-admin/src/main/webapp/static/js/jquery-3.2.1.js b/power-admin/src/main/webapp/static/js/jquery-3.2.1.js
deleted file mode 100644
index d2d8ca4..0000000
--- a/power-admin/src/main/webapp/static/js/jquery-3.2.1.js
+++ /dev/null
@@ -1,10253 +0,0 @@
-/*!
- * jQuery JavaScript Library v3.2.1
- * https://jquery.com/
- *
- * Includes Sizzle.js
- * https://sizzlejs.com/
- *
- * Copyright JS Foundation and other contributors
- * Released under the MIT license
- * https://jquery.org/license
- *
- * Date: 2017-03-20T18:59Z
- */
-( function( global, factory ) {
-
- "use strict";
-
- if ( typeof module === "object" && typeof module.exports === "object" ) {
-
- // For CommonJS and CommonJS-like environments where a proper `window`
- // is present, execute the factory and get jQuery.
- // For environments that do not have a `window` with a `document`
- // (such as Node.js), expose a factory as module.exports.
- // This accentuates the need for the creation of a real `window`.
- // e.g. var jQuery = require("jquery")(window);
- // See ticket #14549 for more info.
- module.exports = global.document ?
- factory( global, true ) :
- function( w ) {
- if ( !w.document ) {
- throw new Error( "jQuery requires a window with a document" );
- }
- return factory( w );
- };
- } else {
- factory( global );
- }
-
-// Pass this if window is not defined yet
-} )( typeof window !== "undefined" ? window : this, function( window, noGlobal ) {
-
-// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1
-// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode
-// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common
-// enough that all such attempts are guarded in a try block.
-"use strict";
-
-var arr = [];
-
-var document = window.document;
-
-var getProto = Object.getPrototypeOf;
-
-var slice = arr.slice;
-
-var concat = arr.concat;
-
-var push = arr.push;
-
-var indexOf = arr.indexOf;
-
-var class2type = {};
-
-var toString = class2type.toString;
-
-var hasOwn = class2type.hasOwnProperty;
-
-var fnToString = hasOwn.toString;
-
-var ObjectFunctionString = fnToString.call( Object );
-
-var support = {};
-
-
-
- function DOMEval( code, doc ) {
- doc = doc || document;
-
- var script = doc.createElement( "script" );
-
- script.text = code;
- doc.head.appendChild( script ).parentNode.removeChild( script );
- }
-/* global Symbol */
-// Defining this global in .eslintrc.json would create a danger of using the global
-// unguarded in another place, it seems safer to define global only for this module
-
-
-
-var
- version = "3.2.1",
-
- // Define a local copy of jQuery
- jQuery = function( selector, context ) {
-
- // The jQuery object is actually just the init constructor 'enhanced'
- // Need init if jQuery is called (just allow error to be thrown if not included)
- return new jQuery.fn.init( selector, context );
- },
-
- // Support: Android <=4.0 only
- // Make sure we trim BOM and NBSP
- rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
-
- // Matches dashed string for camelizing
- rmsPrefix = /^-ms-/,
- rdashAlpha = /-([a-z])/g,
-
- // Used by jQuery.camelCase as callback to replace()
- fcamelCase = function( all, letter ) {
- return letter.toUpperCase();
- };
-
-jQuery.fn = jQuery.prototype = {
-
- // The current version of jQuery being used
- jquery: version,
-
- constructor: jQuery,
-
- // The default length of a jQuery object is 0
- length: 0,
-
- toArray: function() {
- return slice.call( this );
- },
-
- // Get the Nth element in the matched element set OR
- // Get the whole matched element set as a clean array
- get: function( num ) {
-
- // Return all the elements in a clean array
- if ( num == null ) {
- return slice.call( this );
- }
-
- // Return just the one element from the set
- return num < 0 ? this[ num + this.length ] : this[ num ];
- },
-
- // Take an array of elements and push it onto the stack
- // (returning the new matched element set)
- pushStack: function( elems ) {
-
- // Build a new jQuery matched element set
- var ret = jQuery.merge( this.constructor(), elems );
-
- // Add the old object onto the stack (as a reference)
- ret.prevObject = this;
-
- // Return the newly-formed element set
- return ret;
- },
-
- // Execute a callback for every element in the matched set.
- each: function( callback ) {
- return jQuery.each( this, callback );
- },
-
- map: function( callback ) {
- return this.pushStack( jQuery.map( this, function( elem, i ) {
- return callback.call( elem, i, elem );
- } ) );
- },
-
- slice: function() {
- return this.pushStack( slice.apply( this, arguments ) );
- },
-
- first: function() {
- return this.eq( 0 );
- },
-
- last: function() {
- return this.eq( -1 );
- },
-
- eq: function( i ) {
- var len = this.length,
- j = +i + ( i < 0 ? len : 0 );
- return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );
- },
-
- end: function() {
- return this.prevObject || this.constructor();
- },
-
- // For internal use only.
- // Behaves like an Array's method, not like a jQuery method.
- push: push,
- sort: arr.sort,
- splice: arr.splice
-};
-
-jQuery.extend = jQuery.fn.extend = function() {
- var options, name, src, copy, copyIsArray, clone,
- target = arguments[ 0 ] || {},
- i = 1,
- length = arguments.length,
- deep = false;
-
- // Handle a deep copy situation
- if ( typeof target === "boolean" ) {
- deep = target;
-
- // Skip the boolean and the target
- target = arguments[ i ] || {};
- i++;
- }
-
- // Handle case when target is a string or something (possible in deep copy)
- if ( typeof target !== "object" && !jQuery.isFunction( target ) ) {
- target = {};
- }
-
- // Extend jQuery itself if only one argument is passed
- if ( i === length ) {
- target = this;
- i--;
- }
-
- for ( ; i < length; i++ ) {
-
- // Only deal with non-null/undefined values
- if ( ( options = arguments[ i ] ) != null ) {
-
- // Extend the base object
- for ( name in options ) {
- src = target[ name ];
- copy = options[ name ];
-
- // Prevent never-ending loop
- if ( target === copy ) {
- continue;
- }
-
- // Recurse if we're merging plain objects or arrays
- if ( deep && copy && ( jQuery.isPlainObject( copy ) ||
- ( copyIsArray = Array.isArray( copy ) ) ) ) {
-
- if ( copyIsArray ) {
- copyIsArray = false;
- clone = src && Array.isArray( src ) ? src : [];
-
- } else {
- clone = src && jQuery.isPlainObject( src ) ? src : {};
- }
-
- // Never move original objects, clone them
- target[ name ] = jQuery.extend( deep, clone, copy );
-
- // Don't bring in undefined values
- } else if ( copy !== undefined ) {
- target[ name ] = copy;
- }
- }
- }
- }
-
- // Return the modified object
- return target;
-};
-
-jQuery.extend( {
-
- // Unique for each copy of jQuery on the page
- expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ),
-
- // Assume jQuery is ready without the ready module
- isReady: true,
-
- error: function( msg ) {
- throw new Error( msg );
- },
-
- noop: function() {},
-
- isFunction: function( obj ) {
- return jQuery.type( obj ) === "function";
- },
-
- isWindow: function( obj ) {
- return obj != null && obj === obj.window;
- },
-
- isNumeric: function( obj ) {
-
- // As of jQuery 3.0, isNumeric is limited to
- // strings and numbers (primitives or objects)
- // that can be coerced to finite numbers (gh-2662)
- var type = jQuery.type( obj );
- return ( type === "number" || type === "string" ) &&
-
- // parseFloat NaNs numeric-cast false positives ("")
- // ...but misinterprets leading-number strings, particularly hex literals ("0x...")
- // subtraction forces infinities to NaN
- !isNaN( obj - parseFloat( obj ) );
- },
-
- isPlainObject: function( obj ) {
- var proto, Ctor;
-
- // Detect obvious negatives
- // Use toString instead of jQuery.type to catch host objects
- if ( !obj || toString.call( obj ) !== "[object Object]" ) {
- return false;
- }
-
- proto = getProto( obj );
-
- // Objects with no prototype (e.g., `Object.create( null )`) are plain
- if ( !proto ) {
- return true;
- }
-
- // Objects with prototype are plain iff they were constructed by a global Object function
- Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor;
- return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString;
- },
-
- isEmptyObject: function( obj ) {
-
- /* eslint-disable no-unused-vars */
- // See https://github.com/eslint/eslint/issues/6125
- var name;
-
- for ( name in obj ) {
- return false;
- }
- return true;
- },
-
- type: function( obj ) {
- if ( obj == null ) {
- return obj + "";
- }
-
- // Support: Android <=2.3 only (functionish RegExp)
- return typeof obj === "object" || typeof obj === "function" ?
- class2type[ toString.call( obj ) ] || "object" :
- typeof obj;
- },
-
- // Evaluates a script in a global context
- globalEval: function( code ) {
- DOMEval( code );
- },
-
- // Convert dashed to camelCase; used by the css and data modules
- // Support: IE <=9 - 11, Edge 12 - 13
- // Microsoft forgot to hump their vendor prefix (#9572)
- camelCase: function( string ) {
- return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
- },
-
- each: function( obj, callback ) {
- var length, i = 0;
-
- if ( isArrayLike( obj ) ) {
- length = obj.length;
- for ( ; i < length; i++ ) {
- if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
- break;
- }
- }
- } else {
- for ( i in obj ) {
- if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
- break;
- }
- }
- }
-
- return obj;
- },
-
- // Support: Android <=4.0 only
- trim: function( text ) {
- return text == null ?
- "" :
- ( text + "" ).replace( rtrim, "" );
- },
-
- // results is for internal usage only
- makeArray: function( arr, results ) {
- var ret = results || [];
-
- if ( arr != null ) {
- if ( isArrayLike( Object( arr ) ) ) {
- jQuery.merge( ret,
- typeof arr === "string" ?
- [ arr ] : arr
- );
- } else {
- push.call( ret, arr );
- }
- }
-
- return ret;
- },
-
- inArray: function( elem, arr, i ) {
- return arr == null ? -1 : indexOf.call( arr, elem, i );
- },
-
- // Support: Android <=4.0 only, PhantomJS 1 only
- // push.apply(_, arraylike) throws on ancient WebKit
- merge: function( first, second ) {
- var len = +second.length,
- j = 0,
- i = first.length;
-
- for ( ; j < len; j++ ) {
- first[ i++ ] = second[ j ];
- }
-
- first.length = i;
-
- return first;
- },
-
- grep: function( elems, callback, invert ) {
- var callbackInverse,
- matches = [],
- i = 0,
- length = elems.length,
- callbackExpect = !invert;
-
- // Go through the array, only saving the items
- // that pass the validator function
- for ( ; i < length; i++ ) {
- callbackInverse = !callback( elems[ i ], i );
- if ( callbackInverse !== callbackExpect ) {
- matches.push( elems[ i ] );
- }
- }
-
- return matches;
- },
-
- // arg is for internal usage only
- map: function( elems, callback, arg ) {
- var length, value,
- i = 0,
- ret = [];
-
- // Go through the array, translating each of the items to their new values
- if ( isArrayLike( elems ) ) {
- length = elems.length;
- for ( ; i < length; i++ ) {
- value = callback( elems[ i ], i, arg );
-
- if ( value != null ) {
- ret.push( value );
- }
- }
-
- // Go through every key on the object,
- } else {
- for ( i in elems ) {
- value = callback( elems[ i ], i, arg );
-
- if ( value != null ) {
- ret.push( value );
- }
- }
- }
-
- // Flatten any nested arrays
- return concat.apply( [], ret );
- },
-
- // A global GUID counter for objects
- guid: 1,
-
- // Bind a function to a context, optionally partially applying any
- // arguments.
- proxy: function( fn, context ) {
- var tmp, args, proxy;
-
- if ( typeof context === "string" ) {
- tmp = fn[ context ];
- context = fn;
- fn = tmp;
- }
-
- // Quick check to determine if target is callable, in the spec
- // this throws a TypeError, but we will just return undefined.
- if ( !jQuery.isFunction( fn ) ) {
- return undefined;
- }
-
- // Simulated bind
- args = slice.call( arguments, 2 );
- proxy = function() {
- return fn.apply( context || this, args.concat( slice.call( arguments ) ) );
- };
-
- // Set the guid of unique handler to the same of original handler, so it can be removed
- proxy.guid = fn.guid = fn.guid || jQuery.guid++;
-
- return proxy;
- },
-
- now: Date.now,
-
- // jQuery.support is not used in Core but other projects attach their
- // properties to it so it needs to exist.
- support: support
-} );
-
-if ( typeof Symbol === "function" ) {
- jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];
-}
-
-// Populate the class2type map
-jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ),
-function( i, name ) {
- class2type[ "[object " + name + "]" ] = name.toLowerCase();
-} );
-
-function isArrayLike( obj ) {
-
- // Support: real iOS 8.2 only (not reproducible in simulator)
- // `in` check used to prevent JIT error (gh-2145)
- // hasOwn isn't used here due to false negatives
- // regarding Nodelist length in IE
- var length = !!obj && "length" in obj && obj.length,
- type = jQuery.type( obj );
-
- if ( type === "function" || jQuery.isWindow( obj ) ) {
- return false;
- }
-
- return type === "array" || length === 0 ||
- typeof length === "number" && length > 0 && ( length - 1 ) in obj;
-}
-var Sizzle =
-/*!
- * Sizzle CSS Selector Engine v2.3.3
- * https://sizzlejs.com/
- *
- * Copyright jQuery Foundation and other contributors
- * Released under the MIT license
- * http://jquery.org/license
- *
- * Date: 2016-08-08
- */
-(function( window ) {
-
-var i,
- support,
- Expr,
- getText,
- isXML,
- tokenize,
- compile,
- select,
- outermostContext,
- sortInput,
- hasDuplicate,
-
- // Local document vars
- setDocument,
- document,
- docElem,
- documentIsHTML,
- rbuggyQSA,
- rbuggyMatches,
- matches,
- contains,
-
- // Instance-specific data
- expando = "sizzle" + 1 * new Date(),
- preferredDoc = window.document,
- dirruns = 0,
- done = 0,
- classCache = createCache(),
- tokenCache = createCache(),
- compilerCache = createCache(),
- sortOrder = function( a, b ) {
- if ( a === b ) {
- hasDuplicate = true;
- }
- return 0;
- },
-
- // Instance methods
- hasOwn = ({}).hasOwnProperty,
- arr = [],
- pop = arr.pop,
- push_native = arr.push,
- push = arr.push,
- slice = arr.slice,
- // Use a stripped-down indexOf as it's faster than native
- // https://jsperf.com/thor-indexof-vs-for/5
- indexOf = function( list, elem ) {
- var i = 0,
- len = list.length;
- for ( ; i < len; i++ ) {
- if ( list[i] === elem ) {
- return i;
- }
- }
- return -1;
- },
-
- booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
-
- // Regular expressions
-
- // http://www.w3.org/TR/css3-selectors/#whitespace
- whitespace = "[\\x20\\t\\r\\n\\f]",
-
- // http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier
- identifier = "(?:\\\\.|[\\w-]|[^\0-\\xa0])+",
-
- // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors
- attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace +
- // Operator (capture 2)
- "*([*^$|!~]?=)" + whitespace +
- // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]"
- "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace +
- "*\\]",
-
- pseudos = ":(" + identifier + ")(?:\\((" +
- // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:
- // 1. quoted (capture 3; capture 4 or capture 5)
- "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" +
- // 2. simple (capture 6)
- "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" +
- // 3. anything else (capture 2)
- ".*" +
- ")\\)|)",
-
- // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
- rwhitespace = new RegExp( whitespace + "+", "g" ),
- rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ),
-
- rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
- rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ),
-
- rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ),
-
- rpseudo = new RegExp( pseudos ),
- ridentifier = new RegExp( "^" + identifier + "$" ),
-
- matchExpr = {
- "ID": new RegExp( "^#(" + identifier + ")" ),
- "CLASS": new RegExp( "^\\.(" + identifier + ")" ),
- "TAG": new RegExp( "^(" + identifier + "|[*])" ),
- "ATTR": new RegExp( "^" + attributes ),
- "PSEUDO": new RegExp( "^" + pseudos ),
- "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace +
- "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace +
- "*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
- "bool": new RegExp( "^(?:" + booleans + ")$", "i" ),
- // For use in libraries implementing .is()
- // We use this for POS matching in `select`
- "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" +
- whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )
- },
-
- rinputs = /^(?:input|select|textarea|button)$/i,
- rheader = /^h\d$/i,
-
- rnative = /^[^{]+\{\s*\[native \w/,
-
- // Easily-parseable/retrievable ID or TAG or CLASS selectors
- rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
-
- rsibling = /[+~]/,
-
- // CSS escapes
- // http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
- runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ),
- funescape = function( _, escaped, escapedWhitespace ) {
- var high = "0x" + escaped - 0x10000;
- // NaN means non-codepoint
- // Support: Firefox<24
- // Workaround erroneous numeric interpretation of +"0x"
- return high !== high || escapedWhitespace ?
- escaped :
- high < 0 ?
- // BMP codepoint
- String.fromCharCode( high + 0x10000 ) :
- // Supplemental Plane codepoint (surrogate pair)
- String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
- },
-
- // CSS string/identifier serialization
- // https://drafts.csswg.org/cssom/#common-serializing-idioms
- rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,
- fcssescape = function( ch, asCodePoint ) {
- if ( asCodePoint ) {
-
- // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER
- if ( ch === "\0" ) {
- return "\uFFFD";
- }
-
- // Control characters and (dependent upon position) numbers get escaped as code points
- return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " ";
- }
-
- // Other potentially-special ASCII characters get backslash-escaped
- return "\\" + ch;
- },
-
- // Used for iframes
- // See setDocument()
- // Removing the function wrapper causes a "Permission Denied"
- // error in IE
- unloadHandler = function() {
- setDocument();
- },
-
- disabledAncestor = addCombinator(
- function( elem ) {
- return elem.disabled === true && ("form" in elem || "label" in elem);
- },
- { dir: "parentNode", next: "legend" }
- );
-
-// Optimize for push.apply( _, NodeList )
-try {
- push.apply(
- (arr = slice.call( preferredDoc.childNodes )),
- preferredDoc.childNodes
- );
- // Support: Android<4.0
- // Detect silently failing push.apply
- arr[ preferredDoc.childNodes.length ].nodeType;
-} catch ( e ) {
- push = { apply: arr.length ?
-
- // Leverage slice if possible
- function( target, els ) {
- push_native.apply( target, slice.call(els) );
- } :
-
- // Support: IE<9
- // Otherwise append directly
- function( target, els ) {
- var j = target.length,
- i = 0;
- // Can't trust NodeList.length
- while ( (target[j++] = els[i++]) ) {}
- target.length = j - 1;
- }
- };
-}
-
-function Sizzle( selector, context, results, seed ) {
- var m, i, elem, nid, match, groups, newSelector,
- newContext = context && context.ownerDocument,
-
- // nodeType defaults to 9, since context defaults to document
- nodeType = context ? context.nodeType : 9;
-
- results = results || [];
-
- // Return early from calls with invalid selector or context
- if ( typeof selector !== "string" || !selector ||
- nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {
-
- return results;
- }
-
- // Try to shortcut find operations (as opposed to filters) in HTML documents
- if ( !seed ) {
-
- if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {
- setDocument( context );
- }
- context = context || document;
-
- if ( documentIsHTML ) {
-
- // If the selector is sufficiently simple, try using a "get*By*" DOM method
- // (excepting DocumentFragment context, where the methods don't exist)
- if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {
-
- // ID selector
- if ( (m = match[1]) ) {
-
- // Document context
- if ( nodeType === 9 ) {
- if ( (elem = context.getElementById( m )) ) {
-
- // Support: IE, Opera, Webkit
- // TODO: identify versions
- // getElementById can match elements by name instead of ID
- if ( elem.id === m ) {
- results.push( elem );
- return results;
- }
- } else {
- return results;
- }
-
- // Element context
- } else {
-
- // Support: IE, Opera, Webkit
- // TODO: identify versions
- // getElementById can match elements by name instead of ID
- if ( newContext && (elem = newContext.getElementById( m )) &&
- contains( context, elem ) &&
- elem.id === m ) {
-
- results.push( elem );
- return results;
- }
- }
-
- // Type selector
- } else if ( match[2] ) {
- push.apply( results, context.getElementsByTagName( selector ) );
- return results;
-
- // Class selector
- } else if ( (m = match[3]) && support.getElementsByClassName &&
- context.getElementsByClassName ) {
-
- push.apply( results, context.getElementsByClassName( m ) );
- return results;
- }
- }
-
- // Take advantage of querySelectorAll
- if ( support.qsa &&
- !compilerCache[ selector + " " ] &&
- (!rbuggyQSA || !rbuggyQSA.test( selector )) ) {
-
- if ( nodeType !== 1 ) {
- newContext = context;
- newSelector = selector;
-
- // qSA looks outside Element context, which is not what we want
- // Thanks to Andrew Dupont for this workaround technique
- // Support: IE <=8
- // Exclude object elements
- } else if ( context.nodeName.toLowerCase() !== "object" ) {
-
- // Capture the context ID, setting it first if necessary
- if ( (nid = context.getAttribute( "id" )) ) {
- nid = nid.replace( rcssescape, fcssescape );
- } else {
- context.setAttribute( "id", (nid = expando) );
- }
-
- // Prefix every selector in the list
- groups = tokenize( selector );
- i = groups.length;
- while ( i-- ) {
- groups[i] = "#" + nid + " " + toSelector( groups[i] );
- }
- newSelector = groups.join( "," );
-
- // Expand context for sibling selectors
- newContext = rsibling.test( selector ) && testContext( context.parentNode ) ||
- context;
- }
-
- if ( newSelector ) {
- try {
- push.apply( results,
- newContext.querySelectorAll( newSelector )
- );
- return results;
- } catch ( qsaError ) {
- } finally {
- if ( nid === expando ) {
- context.removeAttribute( "id" );
- }
- }
- }
- }
- }
- }
-
- // All others
- return select( selector.replace( rtrim, "$1" ), context, results, seed );
-}
-
-/**
- * Create key-value caches of limited size
- * @returns {function(string, object)} Returns the Object data after storing it on itself with
- * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
- * deleting the oldest entry
- */
-function createCache() {
- var keys = [];
-
- function cache( key, value ) {
- // Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
- if ( keys.push( key + " " ) > Expr.cacheLength ) {
- // Only keep the most recent entries
- delete cache[ keys.shift() ];
- }
- return (cache[ key + " " ] = value);
- }
- return cache;
-}
-
-/**
- * Mark a function for special use by Sizzle
- * @param {Function} fn The function to mark
- */
-function markFunction( fn ) {
- fn[ expando ] = true;
- return fn;
-}
-
-/**
- * Support testing using an element
- * @param {Function} fn Passed the created element and returns a boolean result
- */
-function assert( fn ) {
- var el = document.createElement("fieldset");
-
- try {
- return !!fn( el );
- } catch (e) {
- return false;
- } finally {
- // Remove from its parent by default
- if ( el.parentNode ) {
- el.parentNode.removeChild( el );
- }
- // release memory in IE
- el = null;
- }
-}
-
-/**
- * Adds the same handler for all of the specified attrs
- * @param {String} attrs Pipe-separated list of attributes
- * @param {Function} handler The method that will be applied
- */
-function addHandle( attrs, handler ) {
- var arr = attrs.split("|"),
- i = arr.length;
-
- while ( i-- ) {
- Expr.attrHandle[ arr[i] ] = handler;
- }
-}
-
-/**
- * Checks document order of two siblings
- * @param {Element} a
- * @param {Element} b
- * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b
- */
-function siblingCheck( a, b ) {
- var cur = b && a,
- diff = cur && a.nodeType === 1 && b.nodeType === 1 &&
- a.sourceIndex - b.sourceIndex;
-
- // Use IE sourceIndex if available on both nodes
- if ( diff ) {
- return diff;
- }
-
- // Check if b follows a
- if ( cur ) {
- while ( (cur = cur.nextSibling) ) {
- if ( cur === b ) {
- return -1;
- }
- }
- }
-
- return a ? 1 : -1;
-}
-
-/**
- * Returns a function to use in pseudos for input types
- * @param {String} type
- */
-function createInputPseudo( type ) {
- return function( elem ) {
- var name = elem.nodeName.toLowerCase();
- return name === "input" && elem.type === type;
- };
-}
-
-/**
- * Returns a function to use in pseudos for buttons
- * @param {String} type
- */
-function createButtonPseudo( type ) {
- return function( elem ) {
- var name = elem.nodeName.toLowerCase();
- return (name === "input" || name === "button") && elem.type === type;
- };
-}
-
-/**
- * Returns a function to use in pseudos for :enabled/:disabled
- * @param {Boolean} disabled true for :disabled; false for :enabled
- */
-function createDisabledPseudo( disabled ) {
-
- // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable
- return function( elem ) {
-
- // Only certain elements can match :enabled or :disabled
- // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled
- // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled
- if ( "form" in elem ) {
-
- // Check for inherited disabledness on relevant non-disabled elements:
- // * listed form-associated elements in a disabled fieldset
- // https://html.spec.whatwg.org/multipage/forms.html#category-listed
- // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled
- // * option elements in a disabled optgroup
- // https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled
- // All such elements have a "form" property.
- if ( elem.parentNode && elem.disabled === false ) {
-
- // Option elements defer to a parent optgroup if present
- if ( "label" in elem ) {
- if ( "label" in elem.parentNode ) {
- return elem.parentNode.disabled === disabled;
- } else {
- return elem.disabled === disabled;
- }
- }
-
- // Support: IE 6 - 11
- // Use the isDisabled shortcut property to check for disabled fieldset ancestors
- return elem.isDisabled === disabled ||
-
- // Where there is no isDisabled, check manually
- /* jshint -W018 */
- elem.isDisabled !== !disabled &&
- disabledAncestor( elem ) === disabled;
- }
-
- return elem.disabled === disabled;
-
- // Try to winnow out elements that can't be disabled before trusting the disabled property.
- // Some victims get caught in our net (label, legend, menu, track), but it shouldn't
- // even exist on them, let alone have a boolean value.
- } else if ( "label" in elem ) {
- return elem.disabled === disabled;
- }
-
- // Remaining elements are neither :enabled nor :disabled
- return false;
- };
-}
-
-/**
- * Returns a function to use in pseudos for positionals
- * @param {Function} fn
- */
-function createPositionalPseudo( fn ) {
- return markFunction(function( argument ) {
- argument = +argument;
- return markFunction(function( seed, matches ) {
- var j,
- matchIndexes = fn( [], seed.length, argument ),
- i = matchIndexes.length;
-
- // Match elements found at the specified indexes
- while ( i-- ) {
- if ( seed[ (j = matchIndexes[i]) ] ) {
- seed[j] = !(matches[j] = seed[j]);
- }
- }
- });
- });
-}
-
-/**
- * Checks a node for validity as a Sizzle context
- * @param {Element|Object=} context
- * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value
- */
-function testContext( context ) {
- return context && typeof context.getElementsByTagName !== "undefined" && context;
-}
-
-// Expose support vars for convenience
-support = Sizzle.support = {};
-
-/**
- * Detects XML nodes
- * @param {Element|Object} elem An element or a document
- * @returns {Boolean} True iff elem is a non-HTML XML node
- */
-isXML = Sizzle.isXML = function( elem ) {
- // documentElement is verified for cases where it doesn't yet exist
- // (such as loading iframes in IE - #4833)
- var documentElement = elem && (elem.ownerDocument || elem).documentElement;
- return documentElement ? documentElement.nodeName !== "HTML" : false;
-};
-
-/**
- * Sets document-related variables once based on the current document
- * @param {Element|Object} [doc] An element or document object to use to set the document
- * @returns {Object} Returns the current document
- */
-setDocument = Sizzle.setDocument = function( node ) {
- var hasCompare, subWindow,
- doc = node ? node.ownerDocument || node : preferredDoc;
-
- // Return early if doc is invalid or already selected
- if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {
- return document;
- }
-
- // Update global variables
- document = doc;
- docElem = document.documentElement;
- documentIsHTML = !isXML( document );
-
- // Support: IE 9-11, Edge
- // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936)
- if ( preferredDoc !== document &&
- (subWindow = document.defaultView) && subWindow.top !== subWindow ) {
-
- // Support: IE 11, Edge
- if ( subWindow.addEventListener ) {
- subWindow.addEventListener( "unload", unloadHandler, false );
-
- // Support: IE 9 - 10 only
- } else if ( subWindow.attachEvent ) {
- subWindow.attachEvent( "onunload", unloadHandler );
- }
- }
-
- /* Attributes
- ---------------------------------------------------------------------- */
-
- // Support: IE<8
- // Verify that getAttribute really returns attributes and not properties
- // (excepting IE8 booleans)
- support.attributes = assert(function( el ) {
- el.className = "i";
- return !el.getAttribute("className");
- });
-
- /* getElement(s)By*
- ---------------------------------------------------------------------- */
-
- // Check if getElementsByTagName("*") returns only elements
- support.getElementsByTagName = assert(function( el ) {
- el.appendChild( document.createComment("") );
- return !el.getElementsByTagName("*").length;
- });
-
- // Support: IE<9
- support.getElementsByClassName = rnative.test( document.getElementsByClassName );
-
- // Support: IE<10
- // Check if getElementById returns elements by name
- // The broken getElementById methods don't pick up programmatically-set names,
- // so use a roundabout getElementsByName test
- support.getById = assert(function( el ) {
- docElem.appendChild( el ).id = expando;
- return !document.getElementsByName || !document.getElementsByName( expando ).length;
- });
-
- // ID filter and find
- if ( support.getById ) {
- Expr.filter["ID"] = function( id ) {
- var attrId = id.replace( runescape, funescape );
- return function( elem ) {
- return elem.getAttribute("id") === attrId;
- };
- };
- Expr.find["ID"] = function( id, context ) {
- if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
- var elem = context.getElementById( id );
- return elem ? [ elem ] : [];
- }
- };
- } else {
- Expr.filter["ID"] = function( id ) {
- var attrId = id.replace( runescape, funescape );
- return function( elem ) {
- var node = typeof elem.getAttributeNode !== "undefined" &&
- elem.getAttributeNode("id");
- return node && node.value === attrId;
- };
- };
-
- // Support: IE 6 - 7 only
- // getElementById is not reliable as a find shortcut
- Expr.find["ID"] = function( id, context ) {
- if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
- var node, i, elems,
- elem = context.getElementById( id );
-
- if ( elem ) {
-
- // Verify the id attribute
- node = elem.getAttributeNode("id");
- if ( node && node.value === id ) {
- return [ elem ];
- }
-
- // Fall back on getElementsByName
- elems = context.getElementsByName( id );
- i = 0;
- while ( (elem = elems[i++]) ) {
- node = elem.getAttributeNode("id");
- if ( node && node.value === id ) {
- return [ elem ];
- }
- }
- }
-
- return [];
- }
- };
- }
-
- // Tag
- Expr.find["TAG"] = support.getElementsByTagName ?
- function( tag, context ) {
- if ( typeof context.getElementsByTagName !== "undefined" ) {
- return context.getElementsByTagName( tag );
-
- // DocumentFragment nodes don't have gEBTN
- } else if ( support.qsa ) {
- return context.querySelectorAll( tag );
- }
- } :
-
- function( tag, context ) {
- var elem,
- tmp = [],
- i = 0,
- // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too
- results = context.getElementsByTagName( tag );
-
- // Filter out possible comments
- if ( tag === "*" ) {
- while ( (elem = results[i++]) ) {
- if ( elem.nodeType === 1 ) {
- tmp.push( elem );
- }
- }
-
- return tmp;
- }
- return results;
- };
-
- // Class
- Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) {
- if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) {
- return context.getElementsByClassName( className );
- }
- };
-
- /* QSA/matchesSelector
- ---------------------------------------------------------------------- */
-
- // QSA and matchesSelector support
-
- // matchesSelector(:active) reports false when true (IE9/Opera 11.5)
- rbuggyMatches = [];
-
- // qSa(:focus) reports false when true (Chrome 21)
- // We allow this because of a bug in IE8/9 that throws an error
- // whenever `document.activeElement` is accessed on an iframe
- // So, we allow :focus to pass through QSA all the time to avoid the IE error
- // See https://bugs.jquery.com/ticket/13378
- rbuggyQSA = [];
-
- if ( (support.qsa = rnative.test( document.querySelectorAll )) ) {
- // Build QSA regex
- // Regex strategy adopted from Diego Perini
- assert(function( el ) {
- // Select is set to empty string on purpose
- // This is to test IE's treatment of not explicitly
- // setting a boolean content attribute,
- // since its presence should be enough
- // https://bugs.jquery.com/ticket/12359
- docElem.appendChild( el ).innerHTML = "" +
- "";
-
- // Support: IE8, Opera 11-12.16
- // Nothing should be selected when empty strings follow ^= or $= or *=
- // The test attribute must be unknown in Opera but "safe" for WinRT
- // https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section
- if ( el.querySelectorAll("[msallowcapture^='']").length ) {
- rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" );
- }
-
- // Support: IE8
- // Boolean attributes and "value" are not treated correctly
- if ( !el.querySelectorAll("[selected]").length ) {
- rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" );
- }
-
- // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+
- if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) {
- rbuggyQSA.push("~=");
- }
-
- // Webkit/Opera - :checked should return selected option elements
- // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
- // IE8 throws error here and will not see later tests
- if ( !el.querySelectorAll(":checked").length ) {
- rbuggyQSA.push(":checked");
- }
-
- // Support: Safari 8+, iOS 8+
- // https://bugs.webkit.org/show_bug.cgi?id=136851
- // In-page `selector#id sibling-combinator selector` fails
- if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) {
- rbuggyQSA.push(".#.+[+~]");
- }
- });
-
- assert(function( el ) {
- el.innerHTML = "" +
- "";
-
- // Support: Windows 8 Native Apps
- // The type and name attributes are restricted during .innerHTML assignment
- var input = document.createElement("input");
- input.setAttribute( "type", "hidden" );
- el.appendChild( input ).setAttribute( "name", "D" );
-
- // Support: IE8
- // Enforce case-sensitivity of name attribute
- if ( el.querySelectorAll("[name=d]").length ) {
- rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" );
- }
-
- // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
- // IE8 throws error here and will not see later tests
- if ( el.querySelectorAll(":enabled").length !== 2 ) {
- rbuggyQSA.push( ":enabled", ":disabled" );
- }
-
- // Support: IE9-11+
- // IE's :disabled selector does not pick up the children of disabled fieldsets
- docElem.appendChild( el ).disabled = true;
- if ( el.querySelectorAll(":disabled").length !== 2 ) {
- rbuggyQSA.push( ":enabled", ":disabled" );
- }
-
- // Opera 10-11 does not throw on post-comma invalid pseudos
- el.querySelectorAll("*,:x");
- rbuggyQSA.push(",.*:");
- });
- }
-
- if ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||
- docElem.webkitMatchesSelector ||
- docElem.mozMatchesSelector ||
- docElem.oMatchesSelector ||
- docElem.msMatchesSelector) )) ) {
-
- assert(function( el ) {
- // Check to see if it's possible to do matchesSelector
- // on a disconnected node (IE 9)
- support.disconnectedMatch = matches.call( el, "*" );
-
- // This should fail with an exception
- // Gecko does not error, returns false instead
- matches.call( el, "[s!='']:x" );
- rbuggyMatches.push( "!=", pseudos );
- });
- }
-
- rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") );
- rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") );
-
- /* Contains
- ---------------------------------------------------------------------- */
- hasCompare = rnative.test( docElem.compareDocumentPosition );
-
- // Element contains another
- // Purposefully self-exclusive
- // As in, an element does not contain itself
- contains = hasCompare || rnative.test( docElem.contains ) ?
- function( a, b ) {
- var adown = a.nodeType === 9 ? a.documentElement : a,
- bup = b && b.parentNode;
- return a === bup || !!( bup && bup.nodeType === 1 && (
- adown.contains ?
- adown.contains( bup ) :
- a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
- ));
- } :
- function( a, b ) {
- if ( b ) {
- while ( (b = b.parentNode) ) {
- if ( b === a ) {
- return true;
- }
- }
- }
- return false;
- };
-
- /* Sorting
- ---------------------------------------------------------------------- */
-
- // Document order sorting
- sortOrder = hasCompare ?
- function( a, b ) {
-
- // Flag for duplicate removal
- if ( a === b ) {
- hasDuplicate = true;
- return 0;
- }
-
- // Sort on method existence if only one input has compareDocumentPosition
- var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
- if ( compare ) {
- return compare;
- }
-
- // Calculate position if both inputs belong to the same document
- compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?
- a.compareDocumentPosition( b ) :
-
- // Otherwise we know they are disconnected
- 1;
-
- // Disconnected nodes
- if ( compare & 1 ||
- (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {
-
- // Choose the first element that is related to our preferred document
- if ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {
- return -1;
- }
- if ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {
- return 1;
- }
-
- // Maintain original order
- return sortInput ?
- ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
- 0;
- }
-
- return compare & 4 ? -1 : 1;
- } :
- function( a, b ) {
- // Exit early if the nodes are identical
- if ( a === b ) {
- hasDuplicate = true;
- return 0;
- }
-
- var cur,
- i = 0,
- aup = a.parentNode,
- bup = b.parentNode,
- ap = [ a ],
- bp = [ b ];
-
- // Parentless nodes are either documents or disconnected
- if ( !aup || !bup ) {
- return a === document ? -1 :
- b === document ? 1 :
- aup ? -1 :
- bup ? 1 :
- sortInput ?
- ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
- 0;
-
- // If the nodes are siblings, we can do a quick check
- } else if ( aup === bup ) {
- return siblingCheck( a, b );
- }
-
- // Otherwise we need full lists of their ancestors for comparison
- cur = a;
- while ( (cur = cur.parentNode) ) {
- ap.unshift( cur );
- }
- cur = b;
- while ( (cur = cur.parentNode) ) {
- bp.unshift( cur );
- }
-
- // Walk down the tree looking for a discrepancy
- while ( ap[i] === bp[i] ) {
- i++;
- }
-
- return i ?
- // Do a sibling check if the nodes have a common ancestor
- siblingCheck( ap[i], bp[i] ) :
-
- // Otherwise nodes in our document sort first
- ap[i] === preferredDoc ? -1 :
- bp[i] === preferredDoc ? 1 :
- 0;
- };
-
- return document;
-};
-
-Sizzle.matches = function( expr, elements ) {
- return Sizzle( expr, null, null, elements );
-};
-
-Sizzle.matchesSelector = function( elem, expr ) {
- // Set document vars if needed
- if ( ( elem.ownerDocument || elem ) !== document ) {
- setDocument( elem );
- }
-
- // Make sure that attribute selectors are quoted
- expr = expr.replace( rattributeQuotes, "='$1']" );
-
- if ( support.matchesSelector && documentIsHTML &&
- !compilerCache[ expr + " " ] &&
- ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&
- ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {
-
- try {
- var ret = matches.call( elem, expr );
-
- // IE 9's matchesSelector returns false on disconnected nodes
- if ( ret || support.disconnectedMatch ||
- // As well, disconnected nodes are said to be in a document
- // fragment in IE 9
- elem.document && elem.document.nodeType !== 11 ) {
- return ret;
- }
- } catch (e) {}
- }
-
- return Sizzle( expr, document, null, [ elem ] ).length > 0;
-};
-
-Sizzle.contains = function( context, elem ) {
- // Set document vars if needed
- if ( ( context.ownerDocument || context ) !== document ) {
- setDocument( context );
- }
- return contains( context, elem );
-};
-
-Sizzle.attr = function( elem, name ) {
- // Set document vars if needed
- if ( ( elem.ownerDocument || elem ) !== document ) {
- setDocument( elem );
- }
-
- var fn = Expr.attrHandle[ name.toLowerCase() ],
- // Don't get fooled by Object.prototype properties (jQuery #13807)
- val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?
- fn( elem, name, !documentIsHTML ) :
- undefined;
-
- return val !== undefined ?
- val :
- support.attributes || !documentIsHTML ?
- elem.getAttribute( name ) :
- (val = elem.getAttributeNode(name)) && val.specified ?
- val.value :
- null;
-};
-
-Sizzle.escape = function( sel ) {
- return (sel + "").replace( rcssescape, fcssescape );
-};
-
-Sizzle.error = function( msg ) {
- throw new Error( "Syntax error, unrecognized expression: " + msg );
-};
-
-/**
- * Document sorting and removing duplicates
- * @param {ArrayLike} results
- */
-Sizzle.uniqueSort = function( results ) {
- var elem,
- duplicates = [],
- j = 0,
- i = 0;
-
- // Unless we *know* we can detect duplicates, assume their presence
- hasDuplicate = !support.detectDuplicates;
- sortInput = !support.sortStable && results.slice( 0 );
- results.sort( sortOrder );
-
- if ( hasDuplicate ) {
- while ( (elem = results[i++]) ) {
- if ( elem === results[ i ] ) {
- j = duplicates.push( i );
- }
- }
- while ( j-- ) {
- results.splice( duplicates[ j ], 1 );
- }
- }
-
- // Clear input after sorting to release objects
- // See https://github.com/jquery/sizzle/pull/225
- sortInput = null;
-
- return results;
-};
-
-/**
- * Utility function for retrieving the text value of an array of DOM nodes
- * @param {Array|Element} elem
- */
-getText = Sizzle.getText = function( elem ) {
- var node,
- ret = "",
- i = 0,
- nodeType = elem.nodeType;
-
- if ( !nodeType ) {
- // If no nodeType, this is expected to be an array
- while ( (node = elem[i++]) ) {
- // Do not traverse comment nodes
- ret += getText( node );
- }
- } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
- // Use textContent for elements
- // innerText usage removed for consistency of new lines (jQuery #11153)
- if ( typeof elem.textContent === "string" ) {
- return elem.textContent;
- } else {
- // Traverse its children
- for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
- ret += getText( elem );
- }
- }
- } else if ( nodeType === 3 || nodeType === 4 ) {
- return elem.nodeValue;
- }
- // Do not include comment or processing instruction nodes
-
- return ret;
-};
-
-Expr = Sizzle.selectors = {
-
- // Can be adjusted by the user
- cacheLength: 50,
-
- createPseudo: markFunction,
-
- match: matchExpr,
-
- attrHandle: {},
-
- find: {},
-
- relative: {
- ">": { dir: "parentNode", first: true },
- " ": { dir: "parentNode" },
- "+": { dir: "previousSibling", first: true },
- "~": { dir: "previousSibling" }
- },
-
- preFilter: {
- "ATTR": function( match ) {
- match[1] = match[1].replace( runescape, funescape );
-
- // Move the given value to match[3] whether quoted or unquoted
- match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape );
-
- if ( match[2] === "~=" ) {
- match[3] = " " + match[3] + " ";
- }
-
- return match.slice( 0, 4 );
- },
-
- "CHILD": function( match ) {
- /* matches from matchExpr["CHILD"]
- 1 type (only|nth|...)
- 2 what (child|of-type)
- 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...)
- 4 xn-component of xn+y argument ([+-]?\d*n|)
- 5 sign of xn-component
- 6 x of xn-component
- 7 sign of y-component
- 8 y of y-component
- */
- match[1] = match[1].toLowerCase();
-
- if ( match[1].slice( 0, 3 ) === "nth" ) {
- // nth-* requires argument
- if ( !match[3] ) {
- Sizzle.error( match[0] );
- }
-
- // numeric x and y parameters for Expr.filter.CHILD
- // remember that false/true cast respectively to 0/1
- match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) );
- match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" );
-
- // other types prohibit arguments
- } else if ( match[3] ) {
- Sizzle.error( match[0] );
- }
-
- return match;
- },
-
- "PSEUDO": function( match ) {
- var excess,
- unquoted = !match[6] && match[2];
-
- if ( matchExpr["CHILD"].test( match[0] ) ) {
- return null;
- }
-
- // Accept quoted arguments as-is
- if ( match[3] ) {
- match[2] = match[4] || match[5] || "";
-
- // Strip excess characters from unquoted arguments
- } else if ( unquoted && rpseudo.test( unquoted ) &&
- // Get excess from tokenize (recursively)
- (excess = tokenize( unquoted, true )) &&
- // advance to the next closing parenthesis
- (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) {
-
- // excess is a negative index
- match[0] = match[0].slice( 0, excess );
- match[2] = unquoted.slice( 0, excess );
- }
-
- // Return only captures needed by the pseudo filter method (type and argument)
- return match.slice( 0, 3 );
- }
- },
-
- filter: {
-
- "TAG": function( nodeNameSelector ) {
- var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();
- return nodeNameSelector === "*" ?
- function() { return true; } :
- function( elem ) {
- return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
- };
- },
-
- "CLASS": function( className ) {
- var pattern = classCache[ className + " " ];
-
- return pattern ||
- (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) &&
- classCache( className, function( elem ) {
- return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" );
- });
- },
-
- "ATTR": function( name, operator, check ) {
- return function( elem ) {
- var result = Sizzle.attr( elem, name );
-
- if ( result == null ) {
- return operator === "!=";
- }
- if ( !operator ) {
- return true;
- }
-
- result += "";
-
- return operator === "=" ? result === check :
- operator === "!=" ? result !== check :
- operator === "^=" ? check && result.indexOf( check ) === 0 :
- operator === "*=" ? check && result.indexOf( check ) > -1 :
- operator === "$=" ? check && result.slice( -check.length ) === check :
- operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 :
- operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" :
- false;
- };
- },
-
- "CHILD": function( type, what, argument, first, last ) {
- var simple = type.slice( 0, 3 ) !== "nth",
- forward = type.slice( -4 ) !== "last",
- ofType = what === "of-type";
-
- return first === 1 && last === 0 ?
-
- // Shortcut for :nth-*(n)
- function( elem ) {
- return !!elem.parentNode;
- } :
-
- function( elem, context, xml ) {
- var cache, uniqueCache, outerCache, node, nodeIndex, start,
- dir = simple !== forward ? "nextSibling" : "previousSibling",
- parent = elem.parentNode,
- name = ofType && elem.nodeName.toLowerCase(),
- useCache = !xml && !ofType,
- diff = false;
-
- if ( parent ) {
-
- // :(first|last|only)-(child|of-type)
- if ( simple ) {
- while ( dir ) {
- node = elem;
- while ( (node = node[ dir ]) ) {
- if ( ofType ?
- node.nodeName.toLowerCase() === name :
- node.nodeType === 1 ) {
-
- return false;
- }
- }
- // Reverse direction for :only-* (if we haven't yet done so)
- start = dir = type === "only" && !start && "nextSibling";
- }
- return true;
- }
-
- start = [ forward ? parent.firstChild : parent.lastChild ];
-
- // non-xml :nth-child(...) stores cache data on `parent`
- if ( forward && useCache ) {
-
- // Seek `elem` from a previously-cached index
-
- // ...in a gzip-friendly way
- node = parent;
- outerCache = node[ expando ] || (node[ expando ] = {});
-
- // Support: IE <9 only
- // Defend against cloned attroperties (jQuery gh-1709)
- uniqueCache = outerCache[ node.uniqueID ] ||
- (outerCache[ node.uniqueID ] = {});
-
- cache = uniqueCache[ type ] || [];
- nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
- diff = nodeIndex && cache[ 2 ];
- node = nodeIndex && parent.childNodes[ nodeIndex ];
-
- while ( (node = ++nodeIndex && node && node[ dir ] ||
-
- // Fallback to seeking `elem` from the start
- (diff = nodeIndex = 0) || start.pop()) ) {
-
- // When found, cache indexes on `parent` and break
- if ( node.nodeType === 1 && ++diff && node === elem ) {
- uniqueCache[ type ] = [ dirruns, nodeIndex, diff ];
- break;
- }
- }
-
- } else {
- // Use previously-cached element index if available
- if ( useCache ) {
- // ...in a gzip-friendly way
- node = elem;
- outerCache = node[ expando ] || (node[ expando ] = {});
-
- // Support: IE <9 only
- // Defend against cloned attroperties (jQuery gh-1709)
- uniqueCache = outerCache[ node.uniqueID ] ||
- (outerCache[ node.uniqueID ] = {});
-
- cache = uniqueCache[ type ] || [];
- nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
- diff = nodeIndex;
- }
-
- // xml :nth-child(...)
- // or :nth-last-child(...) or :nth(-last)?-of-type(...)
- if ( diff === false ) {
- // Use the same loop as above to seek `elem` from the start
- while ( (node = ++nodeIndex && node && node[ dir ] ||
- (diff = nodeIndex = 0) || start.pop()) ) {
-
- if ( ( ofType ?
- node.nodeName.toLowerCase() === name :
- node.nodeType === 1 ) &&
- ++diff ) {
-
- // Cache the index of each encountered element
- if ( useCache ) {
- outerCache = node[ expando ] || (node[ expando ] = {});
-
- // Support: IE <9 only
- // Defend against cloned attroperties (jQuery gh-1709)
- uniqueCache = outerCache[ node.uniqueID ] ||
- (outerCache[ node.uniqueID ] = {});
-
- uniqueCache[ type ] = [ dirruns, diff ];
- }
-
- if ( node === elem ) {
- break;
- }
- }
- }
- }
- }
-
- // Incorporate the offset, then check against cycle size
- diff -= last;
- return diff === first || ( diff % first === 0 && diff / first >= 0 );
- }
- };
- },
-
- "PSEUDO": function( pseudo, argument ) {
- // pseudo-class names are case-insensitive
- // http://www.w3.org/TR/selectors/#pseudo-classes
- // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
- // Remember that setFilters inherits from pseudos
- var args,
- fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||
- Sizzle.error( "unsupported pseudo: " + pseudo );
-
- // The user may use createPseudo to indicate that
- // arguments are needed to create the filter function
- // just as Sizzle does
- if ( fn[ expando ] ) {
- return fn( argument );
- }
-
- // But maintain support for old signatures
- if ( fn.length > 1 ) {
- args = [ pseudo, pseudo, "", argument ];
- return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?
- markFunction(function( seed, matches ) {
- var idx,
- matched = fn( seed, argument ),
- i = matched.length;
- while ( i-- ) {
- idx = indexOf( seed, matched[i] );
- seed[ idx ] = !( matches[ idx ] = matched[i] );
- }
- }) :
- function( elem ) {
- return fn( elem, 0, args );
- };
- }
-
- return fn;
- }
- },
-
- pseudos: {
- // Potentially complex pseudos
- "not": markFunction(function( selector ) {
- // Trim the selector passed to compile
- // to avoid treating leading and trailing
- // spaces as combinators
- var input = [],
- results = [],
- matcher = compile( selector.replace( rtrim, "$1" ) );
-
- return matcher[ expando ] ?
- markFunction(function( seed, matches, context, xml ) {
- var elem,
- unmatched = matcher( seed, null, xml, [] ),
- i = seed.length;
-
- // Match elements unmatched by `matcher`
- while ( i-- ) {
- if ( (elem = unmatched[i]) ) {
- seed[i] = !(matches[i] = elem);
- }
- }
- }) :
- function( elem, context, xml ) {
- input[0] = elem;
- matcher( input, null, xml, results );
- // Don't keep the element (issue #299)
- input[0] = null;
- return !results.pop();
- };
- }),
-
- "has": markFunction(function( selector ) {
- return function( elem ) {
- return Sizzle( selector, elem ).length > 0;
- };
- }),
-
- "contains": markFunction(function( text ) {
- text = text.replace( runescape, funescape );
- return function( elem ) {
- return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;
- };
- }),
-
- // "Whether an element is represented by a :lang() selector
- // is based solely on the element's language value
- // being equal to the identifier C,
- // or beginning with the identifier C immediately followed by "-".
- // The matching of C against the element's language value is performed case-insensitively.
- // The identifier C does not have to be a valid language name."
- // http://www.w3.org/TR/selectors/#lang-pseudo
- "lang": markFunction( function( lang ) {
- // lang value must be a valid identifier
- if ( !ridentifier.test(lang || "") ) {
- Sizzle.error( "unsupported lang: " + lang );
- }
- lang = lang.replace( runescape, funescape ).toLowerCase();
- return function( elem ) {
- var elemLang;
- do {
- if ( (elemLang = documentIsHTML ?
- elem.lang :
- elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) {
-
- elemLang = elemLang.toLowerCase();
- return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0;
- }
- } while ( (elem = elem.parentNode) && elem.nodeType === 1 );
- return false;
- };
- }),
-
- // Miscellaneous
- "target": function( elem ) {
- var hash = window.location && window.location.hash;
- return hash && hash.slice( 1 ) === elem.id;
- },
-
- "root": function( elem ) {
- return elem === docElem;
- },
-
- "focus": function( elem ) {
- return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);
- },
-
- // Boolean properties
- "enabled": createDisabledPseudo( false ),
- "disabled": createDisabledPseudo( true ),
-
- "checked": function( elem ) {
- // In CSS3, :checked should return both checked and selected elements
- // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
- var nodeName = elem.nodeName.toLowerCase();
- return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected);
- },
-
- "selected": function( elem ) {
- // Accessing this property makes selected-by-default
- // options in Safari work properly
- if ( elem.parentNode ) {
- elem.parentNode.selectedIndex;
- }
-
- return elem.selected === true;
- },
-
- // Contents
- "empty": function( elem ) {
- // http://www.w3.org/TR/selectors/#empty-pseudo
- // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),
- // but not by others (comment: 8; processing instruction: 7; etc.)
- // nodeType < 6 works because attributes (2) do not appear as children
- for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
- if ( elem.nodeType < 6 ) {
- return false;
- }
- }
- return true;
- },
-
- "parent": function( elem ) {
- return !Expr.pseudos["empty"]( elem );
- },
-
- // Element/input types
- "header": function( elem ) {
- return rheader.test( elem.nodeName );
- },
-
- "input": function( elem ) {
- return rinputs.test( elem.nodeName );
- },
-
- "button": function( elem ) {
- var name = elem.nodeName.toLowerCase();
- return name === "input" && elem.type === "button" || name === "button";
- },
-
- "text": function( elem ) {
- var attr;
- return elem.nodeName.toLowerCase() === "input" &&
- elem.type === "text" &&
-
- // Support: IE<8
- // New HTML5 attribute values (e.g., "search") appear with elem.type === "text"
- ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" );
- },
-
- // Position-in-collection
- "first": createPositionalPseudo(function() {
- return [ 0 ];
- }),
-
- "last": createPositionalPseudo(function( matchIndexes, length ) {
- return [ length - 1 ];
- }),
-
- "eq": createPositionalPseudo(function( matchIndexes, length, argument ) {
- return [ argument < 0 ? argument + length : argument ];
- }),
-
- "even": createPositionalPseudo(function( matchIndexes, length ) {
- var i = 0;
- for ( ; i < length; i += 2 ) {
- matchIndexes.push( i );
- }
- return matchIndexes;
- }),
-
- "odd": createPositionalPseudo(function( matchIndexes, length ) {
- var i = 1;
- for ( ; i < length; i += 2 ) {
- matchIndexes.push( i );
- }
- return matchIndexes;
- }),
-
- "lt": createPositionalPseudo(function( matchIndexes, length, argument ) {
- var i = argument < 0 ? argument + length : argument;
- for ( ; --i >= 0; ) {
- matchIndexes.push( i );
- }
- return matchIndexes;
- }),
-
- "gt": createPositionalPseudo(function( matchIndexes, length, argument ) {
- var i = argument < 0 ? argument + length : argument;
- for ( ; ++i < length; ) {
- matchIndexes.push( i );
- }
- return matchIndexes;
- })
- }
-};
-
-Expr.pseudos["nth"] = Expr.pseudos["eq"];
-
-// Add button/input type pseudos
-for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {
- Expr.pseudos[ i ] = createInputPseudo( i );
-}
-for ( i in { submit: true, reset: true } ) {
- Expr.pseudos[ i ] = createButtonPseudo( i );
-}
-
-// Easy API for creating new setFilters
-function setFilters() {}
-setFilters.prototype = Expr.filters = Expr.pseudos;
-Expr.setFilters = new setFilters();
-
-tokenize = Sizzle.tokenize = function( selector, parseOnly ) {
- var matched, match, tokens, type,
- soFar, groups, preFilters,
- cached = tokenCache[ selector + " " ];
-
- if ( cached ) {
- return parseOnly ? 0 : cached.slice( 0 );
- }
-
- soFar = selector;
- groups = [];
- preFilters = Expr.preFilter;
-
- while ( soFar ) {
-
- // Comma and first run
- if ( !matched || (match = rcomma.exec( soFar )) ) {
- if ( match ) {
- // Don't consume trailing commas as valid
- soFar = soFar.slice( match[0].length ) || soFar;
- }
- groups.push( (tokens = []) );
- }
-
- matched = false;
-
- // Combinators
- if ( (match = rcombinators.exec( soFar )) ) {
- matched = match.shift();
- tokens.push({
- value: matched,
- // Cast descendant combinators to space
- type: match[0].replace( rtrim, " " )
- });
- soFar = soFar.slice( matched.length );
- }
-
- // Filters
- for ( type in Expr.filter ) {
- if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||
- (match = preFilters[ type ]( match ))) ) {
- matched = match.shift();
- tokens.push({
- value: matched,
- type: type,
- matches: match
- });
- soFar = soFar.slice( matched.length );
- }
- }
-
- if ( !matched ) {
- break;
- }
- }
-
- // Return the length of the invalid excess
- // if we're just parsing
- // Otherwise, throw an error or return tokens
- return parseOnly ?
- soFar.length :
- soFar ?
- Sizzle.error( selector ) :
- // Cache the tokens
- tokenCache( selector, groups ).slice( 0 );
-};
-
-function toSelector( tokens ) {
- var i = 0,
- len = tokens.length,
- selector = "";
- for ( ; i < len; i++ ) {
- selector += tokens[i].value;
- }
- return selector;
-}
-
-function addCombinator( matcher, combinator, base ) {
- var dir = combinator.dir,
- skip = combinator.next,
- key = skip || dir,
- checkNonElements = base && key === "parentNode",
- doneName = done++;
-
- return combinator.first ?
- // Check against closest ancestor/preceding element
- function( elem, context, xml ) {
- while ( (elem = elem[ dir ]) ) {
- if ( elem.nodeType === 1 || checkNonElements ) {
- return matcher( elem, context, xml );
- }
- }
- return false;
- } :
-
- // Check against all ancestor/preceding elements
- function( elem, context, xml ) {
- var oldCache, uniqueCache, outerCache,
- newCache = [ dirruns, doneName ];
-
- // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching
- if ( xml ) {
- while ( (elem = elem[ dir ]) ) {
- if ( elem.nodeType === 1 || checkNonElements ) {
- if ( matcher( elem, context, xml ) ) {
- return true;
- }
- }
- }
- } else {
- while ( (elem = elem[ dir ]) ) {
- if ( elem.nodeType === 1 || checkNonElements ) {
- outerCache = elem[ expando ] || (elem[ expando ] = {});
-
- // Support: IE <9 only
- // Defend against cloned attroperties (jQuery gh-1709)
- uniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {});
-
- if ( skip && skip === elem.nodeName.toLowerCase() ) {
- elem = elem[ dir ] || elem;
- } else if ( (oldCache = uniqueCache[ key ]) &&
- oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {
-
- // Assign to newCache so results back-propagate to previous elements
- return (newCache[ 2 ] = oldCache[ 2 ]);
- } else {
- // Reuse newcache so results back-propagate to previous elements
- uniqueCache[ key ] = newCache;
-
- // A match means we're done; a fail means we have to keep checking
- if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {
- return true;
- }
- }
- }
- }
- }
- return false;
- };
-}
-
-function elementMatcher( matchers ) {
- return matchers.length > 1 ?
- function( elem, context, xml ) {
- var i = matchers.length;
- while ( i-- ) {
- if ( !matchers[i]( elem, context, xml ) ) {
- return false;
- }
- }
- return true;
- } :
- matchers[0];
-}
-
-function multipleContexts( selector, contexts, results ) {
- var i = 0,
- len = contexts.length;
- for ( ; i < len; i++ ) {
- Sizzle( selector, contexts[i], results );
- }
- return results;
-}
-
-function condense( unmatched, map, filter, context, xml ) {
- var elem,
- newUnmatched = [],
- i = 0,
- len = unmatched.length,
- mapped = map != null;
-
- for ( ; i < len; i++ ) {
- if ( (elem = unmatched[i]) ) {
- if ( !filter || filter( elem, context, xml ) ) {
- newUnmatched.push( elem );
- if ( mapped ) {
- map.push( i );
- }
- }
- }
- }
-
- return newUnmatched;
-}
-
-function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {
- if ( postFilter && !postFilter[ expando ] ) {
- postFilter = setMatcher( postFilter );
- }
- if ( postFinder && !postFinder[ expando ] ) {
- postFinder = setMatcher( postFinder, postSelector );
- }
- return markFunction(function( seed, results, context, xml ) {
- var temp, i, elem,
- preMap = [],
- postMap = [],
- preexisting = results.length,
-
- // Get initial elements from seed or context
- elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ),
-
- // Prefilter to get matcher input, preserving a map for seed-results synchronization
- matcherIn = preFilter && ( seed || !selector ) ?
- condense( elems, preMap, preFilter, context, xml ) :
- elems,
-
- matcherOut = matcher ?
- // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
- postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
-
- // ...intermediate processing is necessary
- [] :
-
- // ...otherwise use results directly
- results :
- matcherIn;
-
- // Find primary matches
- if ( matcher ) {
- matcher( matcherIn, matcherOut, context, xml );
- }
-
- // Apply postFilter
- if ( postFilter ) {
- temp = condense( matcherOut, postMap );
- postFilter( temp, [], context, xml );
-
- // Un-match failing elements by moving them back to matcherIn
- i = temp.length;
- while ( i-- ) {
- if ( (elem = temp[i]) ) {
- matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);
- }
- }
- }
-
- if ( seed ) {
- if ( postFinder || preFilter ) {
- if ( postFinder ) {
- // Get the final matcherOut by condensing this intermediate into postFinder contexts
- temp = [];
- i = matcherOut.length;
- while ( i-- ) {
- if ( (elem = matcherOut[i]) ) {
- // Restore matcherIn since elem is not yet a final match
- temp.push( (matcherIn[i] = elem) );
- }
- }
- postFinder( null, (matcherOut = []), temp, xml );
- }
-
- // Move matched elements from seed to results to keep them synchronized
- i = matcherOut.length;
- while ( i-- ) {
- if ( (elem = matcherOut[i]) &&
- (temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {
-
- seed[temp] = !(results[temp] = elem);
- }
- }
- }
-
- // Add elements to results, through postFinder if defined
- } else {
- matcherOut = condense(
- matcherOut === results ?
- matcherOut.splice( preexisting, matcherOut.length ) :
- matcherOut
- );
- if ( postFinder ) {
- postFinder( null, results, matcherOut, xml );
- } else {
- push.apply( results, matcherOut );
- }
- }
- });
-}
-
-function matcherFromTokens( tokens ) {
- var checkContext, matcher, j,
- len = tokens.length,
- leadingRelative = Expr.relative[ tokens[0].type ],
- implicitRelative = leadingRelative || Expr.relative[" "],
- i = leadingRelative ? 1 : 0,
-
- // The foundational matcher ensures that elements are reachable from top-level context(s)
- matchContext = addCombinator( function( elem ) {
- return elem === checkContext;
- }, implicitRelative, true ),
- matchAnyContext = addCombinator( function( elem ) {
- return indexOf( checkContext, elem ) > -1;
- }, implicitRelative, true ),
- matchers = [ function( elem, context, xml ) {
- var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
- (checkContext = context).nodeType ?
- matchContext( elem, context, xml ) :
- matchAnyContext( elem, context, xml ) );
- // Avoid hanging onto element (issue #299)
- checkContext = null;
- return ret;
- } ];
-
- for ( ; i < len; i++ ) {
- if ( (matcher = Expr.relative[ tokens[i].type ]) ) {
- matchers = [ addCombinator(elementMatcher( matchers ), matcher) ];
- } else {
- matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );
-
- // Return special upon seeing a positional matcher
- if ( matcher[ expando ] ) {
- // Find the next relative operator (if any) for proper handling
- j = ++i;
- for ( ; j < len; j++ ) {
- if ( Expr.relative[ tokens[j].type ] ) {
- break;
- }
- }
- return setMatcher(
- i > 1 && elementMatcher( matchers ),
- i > 1 && toSelector(
- // If the preceding token was a descendant combinator, insert an implicit any-element `*`
- tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" })
- ).replace( rtrim, "$1" ),
- matcher,
- i < j && matcherFromTokens( tokens.slice( i, j ) ),
- j < len && matcherFromTokens( (tokens = tokens.slice( j )) ),
- j < len && toSelector( tokens )
- );
- }
- matchers.push( matcher );
- }
- }
-
- return elementMatcher( matchers );
-}
-
-function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
- var bySet = setMatchers.length > 0,
- byElement = elementMatchers.length > 0,
- superMatcher = function( seed, context, xml, results, outermost ) {
- var elem, j, matcher,
- matchedCount = 0,
- i = "0",
- unmatched = seed && [],
- setMatched = [],
- contextBackup = outermostContext,
- // We must always have either seed elements or outermost context
- elems = seed || byElement && Expr.find["TAG"]( "*", outermost ),
- // Use integer dirruns iff this is the outermost matcher
- dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),
- len = elems.length;
-
- if ( outermost ) {
- outermostContext = context === document || context || outermost;
- }
-
- // Add elements passing elementMatchers directly to results
- // Support: IE<9, Safari
- // Tolerate NodeList properties (IE: "length"; Safari: ) matching elements by id
- for ( ; i !== len && (elem = elems[i]) != null; i++ ) {
- if ( byElement && elem ) {
- j = 0;
- if ( !context && elem.ownerDocument !== document ) {
- setDocument( elem );
- xml = !documentIsHTML;
- }
- while ( (matcher = elementMatchers[j++]) ) {
- if ( matcher( elem, context || document, xml) ) {
- results.push( elem );
- break;
- }
- }
- if ( outermost ) {
- dirruns = dirrunsUnique;
- }
- }
-
- // Track unmatched elements for set filters
- if ( bySet ) {
- // They will have gone through all possible matchers
- if ( (elem = !matcher && elem) ) {
- matchedCount--;
- }
-
- // Lengthen the array for every element, matched or not
- if ( seed ) {
- unmatched.push( elem );
- }
- }
- }
-
- // `i` is now the count of elements visited above, and adding it to `matchedCount`
- // makes the latter nonnegative.
- matchedCount += i;
-
- // Apply set filters to unmatched elements
- // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`
- // equals `i`), unless we didn't visit _any_ elements in the above loop because we have
- // no element matchers and no seed.
- // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that
- // case, which will result in a "00" `matchedCount` that differs from `i` but is also
- // numerically zero.
- if ( bySet && i !== matchedCount ) {
- j = 0;
- while ( (matcher = setMatchers[j++]) ) {
- matcher( unmatched, setMatched, context, xml );
- }
-
- if ( seed ) {
- // Reintegrate element matches to eliminate the need for sorting
- if ( matchedCount > 0 ) {
- while ( i-- ) {
- if ( !(unmatched[i] || setMatched[i]) ) {
- setMatched[i] = pop.call( results );
- }
- }
- }
-
- // Discard index placeholder values to get only actual matches
- setMatched = condense( setMatched );
- }
-
- // Add matches to results
- push.apply( results, setMatched );
-
- // Seedless set matches succeeding multiple successful matchers stipulate sorting
- if ( outermost && !seed && setMatched.length > 0 &&
- ( matchedCount + setMatchers.length ) > 1 ) {
-
- Sizzle.uniqueSort( results );
- }
- }
-
- // Override manipulation of globals by nested matchers
- if ( outermost ) {
- dirruns = dirrunsUnique;
- outermostContext = contextBackup;
- }
-
- return unmatched;
- };
-
- return bySet ?
- markFunction( superMatcher ) :
- superMatcher;
-}
-
-compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {
- var i,
- setMatchers = [],
- elementMatchers = [],
- cached = compilerCache[ selector + " " ];
-
- if ( !cached ) {
- // Generate a function of recursive functions that can be used to check each element
- if ( !match ) {
- match = tokenize( selector );
- }
- i = match.length;
- while ( i-- ) {
- cached = matcherFromTokens( match[i] );
- if ( cached[ expando ] ) {
- setMatchers.push( cached );
- } else {
- elementMatchers.push( cached );
- }
- }
-
- // Cache the compiled function
- cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );
-
- // Save selector and tokenization
- cached.selector = selector;
- }
- return cached;
-};
-
-/**
- * A low-level selection function that works with Sizzle's compiled
- * selector functions
- * @param {String|Function} selector A selector or a pre-compiled
- * selector function built with Sizzle.compile
- * @param {Element} context
- * @param {Array} [results]
- * @param {Array} [seed] A set of elements to match against
- */
-select = Sizzle.select = function( selector, context, results, seed ) {
- var i, tokens, token, type, find,
- compiled = typeof selector === "function" && selector,
- match = !seed && tokenize( (selector = compiled.selector || selector) );
-
- results = results || [];
-
- // Try to minimize operations if there is only one selector in the list and no seed
- // (the latter of which guarantees us context)
- if ( match.length === 1 ) {
-
- // Reduce context if the leading compound selector is an ID
- tokens = match[0] = match[0].slice( 0 );
- if ( tokens.length > 2 && (token = tokens[0]).type === "ID" &&
- context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[1].type ] ) {
-
- context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];
- if ( !context ) {
- return results;
-
- // Precompiled matchers will still verify ancestry, so step up a level
- } else if ( compiled ) {
- context = context.parentNode;
- }
-
- selector = selector.slice( tokens.shift().value.length );
- }
-
- // Fetch a seed set for right-to-left matching
- i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length;
- while ( i-- ) {
- token = tokens[i];
-
- // Abort if we hit a combinator
- if ( Expr.relative[ (type = token.type) ] ) {
- break;
- }
- if ( (find = Expr.find[ type ]) ) {
- // Search, expanding context for leading sibling combinators
- if ( (seed = find(
- token.matches[0].replace( runescape, funescape ),
- rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context
- )) ) {
-
- // If seed is empty or no tokens remain, we can return early
- tokens.splice( i, 1 );
- selector = seed.length && toSelector( tokens );
- if ( !selector ) {
- push.apply( results, seed );
- return results;
- }
-
- break;
- }
- }
- }
- }
-
- // Compile and execute a filtering function if one is not provided
- // Provide `match` to avoid retokenization if we modified the selector above
- ( compiled || compile( selector, match ) )(
- seed,
- context,
- !documentIsHTML,
- results,
- !context || rsibling.test( selector ) && testContext( context.parentNode ) || context
- );
- return results;
-};
-
-// One-time assignments
-
-// Sort stability
-support.sortStable = expando.split("").sort( sortOrder ).join("") === expando;
-
-// Support: Chrome 14-35+
-// Always assume duplicates if they aren't passed to the comparison function
-support.detectDuplicates = !!hasDuplicate;
-
-// Initialize against the default document
-setDocument();
-
-// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)
-// Detached nodes confoundingly follow *each other*
-support.sortDetached = assert(function( el ) {
- // Should return 1, but returns 4 (following)
- return el.compareDocumentPosition( document.createElement("fieldset") ) & 1;
-});
-
-// Support: IE<8
-// Prevent attribute/property "interpolation"
-// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
-if ( !assert(function( el ) {
- el.innerHTML = "";
- return el.firstChild.getAttribute("href") === "#" ;
-}) ) {
- addHandle( "type|href|height|width", function( elem, name, isXML ) {
- if ( !isXML ) {
- return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 );
- }
- });
-}
-
-// Support: IE<9
-// Use defaultValue in place of getAttribute("value")
-if ( !support.attributes || !assert(function( el ) {
- el.innerHTML = "";
- el.firstChild.setAttribute( "value", "" );
- return el.firstChild.getAttribute( "value" ) === "";
-}) ) {
- addHandle( "value", function( elem, name, isXML ) {
- if ( !isXML && elem.nodeName.toLowerCase() === "input" ) {
- return elem.defaultValue;
- }
- });
-}
-
-// Support: IE<9
-// Use getAttributeNode to fetch booleans when getAttribute lies
-if ( !assert(function( el ) {
- return el.getAttribute("disabled") == null;
-}) ) {
- addHandle( booleans, function( elem, name, isXML ) {
- var val;
- if ( !isXML ) {
- return elem[ name ] === true ? name.toLowerCase() :
- (val = elem.getAttributeNode( name )) && val.specified ?
- val.value :
- null;
- }
- });
-}
-
-return Sizzle;
-
-})( window );
-
-
-
-jQuery.find = Sizzle;
-jQuery.expr = Sizzle.selectors;
-
-// Deprecated
-jQuery.expr[ ":" ] = jQuery.expr.pseudos;
-jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;
-jQuery.text = Sizzle.getText;
-jQuery.isXMLDoc = Sizzle.isXML;
-jQuery.contains = Sizzle.contains;
-jQuery.escapeSelector = Sizzle.escape;
-
-
-
-
-var dir = function( elem, dir, until ) {
- var matched = [],
- truncate = until !== undefined;
-
- while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {
- if ( elem.nodeType === 1 ) {
- if ( truncate && jQuery( elem ).is( until ) ) {
- break;
- }
- matched.push( elem );
- }
- }
- return matched;
-};
-
-
-var siblings = function( n, elem ) {
- var matched = [];
-
- for ( ; n; n = n.nextSibling ) {
- if ( n.nodeType === 1 && n !== elem ) {
- matched.push( n );
- }
- }
-
- return matched;
-};
-
-
-var rneedsContext = jQuery.expr.match.needsContext;
-
-
-
-function nodeName( elem, name ) {
-
- return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
-
-};
-var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i );
-
-
-
-var risSimple = /^.[^:#\[\.,]*$/;
-
-// Implement the identical functionality for filter and not
-function winnow( elements, qualifier, not ) {
- if ( jQuery.isFunction( qualifier ) ) {
- return jQuery.grep( elements, function( elem, i ) {
- return !!qualifier.call( elem, i, elem ) !== not;
- } );
- }
-
- // Single element
- if ( qualifier.nodeType ) {
- return jQuery.grep( elements, function( elem ) {
- return ( elem === qualifier ) !== not;
- } );
- }
-
- // Arraylike of elements (jQuery, arguments, Array)
- if ( typeof qualifier !== "string" ) {
- return jQuery.grep( elements, function( elem ) {
- return ( indexOf.call( qualifier, elem ) > -1 ) !== not;
- } );
- }
-
- // Simple selector that can be filtered directly, removing non-Elements
- if ( risSimple.test( qualifier ) ) {
- return jQuery.filter( qualifier, elements, not );
- }
-
- // Complex selector, compare the two sets, removing non-Elements
- qualifier = jQuery.filter( qualifier, elements );
- return jQuery.grep( elements, function( elem ) {
- return ( indexOf.call( qualifier, elem ) > -1 ) !== not && elem.nodeType === 1;
- } );
-}
-
-jQuery.filter = function( expr, elems, not ) {
- var elem = elems[ 0 ];
-
- if ( not ) {
- expr = ":not(" + expr + ")";
- }
-
- if ( elems.length === 1 && elem.nodeType === 1 ) {
- return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];
- }
-
- return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {
- return elem.nodeType === 1;
- } ) );
-};
-
-jQuery.fn.extend( {
- find: function( selector ) {
- var i, ret,
- len = this.length,
- self = this;
-
- if ( typeof selector !== "string" ) {
- return this.pushStack( jQuery( selector ).filter( function() {
- for ( i = 0; i < len; i++ ) {
- if ( jQuery.contains( self[ i ], this ) ) {
- return true;
- }
- }
- } ) );
- }
-
- ret = this.pushStack( [] );
-
- for ( i = 0; i < len; i++ ) {
- jQuery.find( selector, self[ i ], ret );
- }
-
- return len > 1 ? jQuery.uniqueSort( ret ) : ret;
- },
- filter: function( selector ) {
- return this.pushStack( winnow( this, selector || [], false ) );
- },
- not: function( selector ) {
- return this.pushStack( winnow( this, selector || [], true ) );
- },
- is: function( selector ) {
- return !!winnow(
- this,
-
- // If this is a positional/relative selector, check membership in the returned set
- // so $("p:first").is("p:last") won't return true for a doc with two "p".
- typeof selector === "string" && rneedsContext.test( selector ) ?
- jQuery( selector ) :
- selector || [],
- false
- ).length;
- }
-} );
-
-
-// Initialize a jQuery object
-
-
-// A central reference to the root jQuery(document)
-var rootjQuery,
-
- // A simple way to check for HTML strings
- // Prioritize #id over to avoid XSS via location.hash (#9521)
- // Strict HTML recognition (#11290: must start with <)
- // Shortcut simple #id case for speed
- rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,
-
- init = jQuery.fn.init = function( selector, context, root ) {
- var match, elem;
-
- // HANDLE: $(""), $(null), $(undefined), $(false)
- if ( !selector ) {
- return this;
- }
-
- // Method init() accepts an alternate rootjQuery
- // so migrate can support jQuery.sub (gh-2101)
- root = root || rootjQuery;
-
- // Handle HTML strings
- if ( typeof selector === "string" ) {
- if ( selector[ 0 ] === "<" &&
- selector[ selector.length - 1 ] === ">" &&
- selector.length >= 3 ) {
-
- // Assume that strings that start and end with <> are HTML and skip the regex check
- match = [ null, selector, null ];
-
- } else {
- match = rquickExpr.exec( selector );
- }
-
- // Match html or make sure no context is specified for #id
- if ( match && ( match[ 1 ] || !context ) ) {
-
- // HANDLE: $(html) -> $(array)
- if ( match[ 1 ] ) {
- context = context instanceof jQuery ? context[ 0 ] : context;
-
- // Option to run scripts is true for back-compat
- // Intentionally let the error be thrown if parseHTML is not present
- jQuery.merge( this, jQuery.parseHTML(
- match[ 1 ],
- context && context.nodeType ? context.ownerDocument || context : document,
- true
- ) );
-
- // HANDLE: $(html, props)
- if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {
- for ( match in context ) {
-
- // Properties of context are called as methods if possible
- if ( jQuery.isFunction( this[ match ] ) ) {
- this[ match ]( context[ match ] );
-
- // ...and otherwise set as attributes
- } else {
- this.attr( match, context[ match ] );
- }
- }
- }
-
- return this;
-
- // HANDLE: $(#id)
- } else {
- elem = document.getElementById( match[ 2 ] );
-
- if ( elem ) {
-
- // Inject the element directly into the jQuery object
- this[ 0 ] = elem;
- this.length = 1;
- }
- return this;
- }
-
- // HANDLE: $(expr, $(...))
- } else if ( !context || context.jquery ) {
- return ( context || root ).find( selector );
-
- // HANDLE: $(expr, context)
- // (which is just equivalent to: $(context).find(expr)
- } else {
- return this.constructor( context ).find( selector );
- }
-
- // HANDLE: $(DOMElement)
- } else if ( selector.nodeType ) {
- this[ 0 ] = selector;
- this.length = 1;
- return this;
-
- // HANDLE: $(function)
- // Shortcut for document ready
- } else if ( jQuery.isFunction( selector ) ) {
- return root.ready !== undefined ?
- root.ready( selector ) :
-
- // Execute immediately if ready is not present
- selector( jQuery );
- }
-
- return jQuery.makeArray( selector, this );
- };
-
-// Give the init function the jQuery prototype for later instantiation
-init.prototype = jQuery.fn;
-
-// Initialize central reference
-rootjQuery = jQuery( document );
-
-
-var rparentsprev = /^(?:parents|prev(?:Until|All))/,
-
- // Methods guaranteed to produce a unique set when starting from a unique set
- guaranteedUnique = {
- children: true,
- contents: true,
- next: true,
- prev: true
- };
-
-jQuery.fn.extend( {
- has: function( target ) {
- var targets = jQuery( target, this ),
- l = targets.length;
-
- return this.filter( function() {
- var i = 0;
- for ( ; i < l; i++ ) {
- if ( jQuery.contains( this, targets[ i ] ) ) {
- return true;
- }
- }
- } );
- },
-
- closest: function( selectors, context ) {
- var cur,
- i = 0,
- l = this.length,
- matched = [],
- targets = typeof selectors !== "string" && jQuery( selectors );
-
- // Positional selectors never match, since there's no _selection_ context
- if ( !rneedsContext.test( selectors ) ) {
- for ( ; i < l; i++ ) {
- for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {
-
- // Always skip document fragments
- if ( cur.nodeType < 11 && ( targets ?
- targets.index( cur ) > -1 :
-
- // Don't pass non-elements to Sizzle
- cur.nodeType === 1 &&
- jQuery.find.matchesSelector( cur, selectors ) ) ) {
-
- matched.push( cur );
- break;
- }
- }
- }
- }
-
- return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );
- },
-
- // Determine the position of an element within the set
- index: function( elem ) {
-
- // No argument, return index in parent
- if ( !elem ) {
- return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;
- }
-
- // Index in selector
- if ( typeof elem === "string" ) {
- return indexOf.call( jQuery( elem ), this[ 0 ] );
- }
-
- // Locate the position of the desired element
- return indexOf.call( this,
-
- // If it receives a jQuery object, the first element is used
- elem.jquery ? elem[ 0 ] : elem
- );
- },
-
- add: function( selector, context ) {
- return this.pushStack(
- jQuery.uniqueSort(
- jQuery.merge( this.get(), jQuery( selector, context ) )
- )
- );
- },
-
- addBack: function( selector ) {
- return this.add( selector == null ?
- this.prevObject : this.prevObject.filter( selector )
- );
- }
-} );
-
-function sibling( cur, dir ) {
- while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}
- return cur;
-}
-
-jQuery.each( {
- parent: function( elem ) {
- var parent = elem.parentNode;
- return parent && parent.nodeType !== 11 ? parent : null;
- },
- parents: function( elem ) {
- return dir( elem, "parentNode" );
- },
- parentsUntil: function( elem, i, until ) {
- return dir( elem, "parentNode", until );
- },
- next: function( elem ) {
- return sibling( elem, "nextSibling" );
- },
- prev: function( elem ) {
- return sibling( elem, "previousSibling" );
- },
- nextAll: function( elem ) {
- return dir( elem, "nextSibling" );
- },
- prevAll: function( elem ) {
- return dir( elem, "previousSibling" );
- },
- nextUntil: function( elem, i, until ) {
- return dir( elem, "nextSibling", until );
- },
- prevUntil: function( elem, i, until ) {
- return dir( elem, "previousSibling", until );
- },
- siblings: function( elem ) {
- return siblings( ( elem.parentNode || {} ).firstChild, elem );
- },
- children: function( elem ) {
- return siblings( elem.firstChild );
- },
- contents: function( elem ) {
- if ( nodeName( elem, "iframe" ) ) {
- return elem.contentDocument;
- }
-
- // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only
- // Treat the template element as a regular one in browsers that
- // don't support it.
- if ( nodeName( elem, "template" ) ) {
- elem = elem.content || elem;
- }
-
- return jQuery.merge( [], elem.childNodes );
- }
-}, function( name, fn ) {
- jQuery.fn[ name ] = function( until, selector ) {
- var matched = jQuery.map( this, fn, until );
-
- if ( name.slice( -5 ) !== "Until" ) {
- selector = until;
- }
-
- if ( selector && typeof selector === "string" ) {
- matched = jQuery.filter( selector, matched );
- }
-
- if ( this.length > 1 ) {
-
- // Remove duplicates
- if ( !guaranteedUnique[ name ] ) {
- jQuery.uniqueSort( matched );
- }
-
- // Reverse order for parents* and prev-derivatives
- if ( rparentsprev.test( name ) ) {
- matched.reverse();
- }
- }
-
- return this.pushStack( matched );
- };
-} );
-var rnothtmlwhite = ( /[^\x20\t\r\n\f]+/g );
-
-
-
-// Convert String-formatted options into Object-formatted ones
-function createOptions( options ) {
- var object = {};
- jQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {
- object[ flag ] = true;
- } );
- return object;
-}
-
-/*
- * Create a callback list using the following parameters:
- *
- * options: an optional list of space-separated options that will change how
- * the callback list behaves or a more traditional option object
- *
- * By default a callback list will act like an event callback list and can be
- * "fired" multiple times.
- *
- * Possible options:
- *
- * once: will ensure the callback list can only be fired once (like a Deferred)
- *
- * memory: will keep track of previous values and will call any callback added
- * after the list has been fired right away with the latest "memorized"
- * values (like a Deferred)
- *
- * unique: will ensure a callback can only be added once (no duplicate in the list)
- *
- * stopOnFalse: interrupt callings when a callback returns false
- *
- */
-jQuery.Callbacks = function( options ) {
-
- // Convert options from String-formatted to Object-formatted if needed
- // (we check in cache first)
- options = typeof options === "string" ?
- createOptions( options ) :
- jQuery.extend( {}, options );
-
- var // Flag to know if list is currently firing
- firing,
-
- // Last fire value for non-forgettable lists
- memory,
-
- // Flag to know if list was already fired
- fired,
-
- // Flag to prevent firing
- locked,
-
- // Actual callback list
- list = [],
-
- // Queue of execution data for repeatable lists
- queue = [],
-
- // Index of currently firing callback (modified by add/remove as needed)
- firingIndex = -1,
-
- // Fire callbacks
- fire = function() {
-
- // Enforce single-firing
- locked = locked || options.once;
-
- // Execute callbacks for all pending executions,
- // respecting firingIndex overrides and runtime changes
- fired = firing = true;
- for ( ; queue.length; firingIndex = -1 ) {
- memory = queue.shift();
- while ( ++firingIndex < list.length ) {
-
- // Run callback and check for early termination
- if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&
- options.stopOnFalse ) {
-
- // Jump to end and forget the data so .add doesn't re-fire
- firingIndex = list.length;
- memory = false;
- }
- }
- }
-
- // Forget the data if we're done with it
- if ( !options.memory ) {
- memory = false;
- }
-
- firing = false;
-
- // Clean up if we're done firing for good
- if ( locked ) {
-
- // Keep an empty list if we have data for future add calls
- if ( memory ) {
- list = [];
-
- // Otherwise, this object is spent
- } else {
- list = "";
- }
- }
- },
-
- // Actual Callbacks object
- self = {
-
- // Add a callback or a collection of callbacks to the list
- add: function() {
- if ( list ) {
-
- // If we have memory from a past run, we should fire after adding
- if ( memory && !firing ) {
- firingIndex = list.length - 1;
- queue.push( memory );
- }
-
- ( function add( args ) {
- jQuery.each( args, function( _, arg ) {
- if ( jQuery.isFunction( arg ) ) {
- if ( !options.unique || !self.has( arg ) ) {
- list.push( arg );
- }
- } else if ( arg && arg.length && jQuery.type( arg ) !== "string" ) {
-
- // Inspect recursively
- add( arg );
- }
- } );
- } )( arguments );
-
- if ( memory && !firing ) {
- fire();
- }
- }
- return this;
- },
-
- // Remove a callback from the list
- remove: function() {
- jQuery.each( arguments, function( _, arg ) {
- var index;
- while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {
- list.splice( index, 1 );
-
- // Handle firing indexes
- if ( index <= firingIndex ) {
- firingIndex--;
- }
- }
- } );
- return this;
- },
-
- // Check if a given callback is in the list.
- // If no argument is given, return whether or not list has callbacks attached.
- has: function( fn ) {
- return fn ?
- jQuery.inArray( fn, list ) > -1 :
- list.length > 0;
- },
-
- // Remove all callbacks from the list
- empty: function() {
- if ( list ) {
- list = [];
- }
- return this;
- },
-
- // Disable .fire and .add
- // Abort any current/pending executions
- // Clear all callbacks and values
- disable: function() {
- locked = queue = [];
- list = memory = "";
- return this;
- },
- disabled: function() {
- return !list;
- },
-
- // Disable .fire
- // Also disable .add unless we have memory (since it would have no effect)
- // Abort any pending executions
- lock: function() {
- locked = queue = [];
- if ( !memory && !firing ) {
- list = memory = "";
- }
- return this;
- },
- locked: function() {
- return !!locked;
- },
-
- // Call all callbacks with the given context and arguments
- fireWith: function( context, args ) {
- if ( !locked ) {
- args = args || [];
- args = [ context, args.slice ? args.slice() : args ];
- queue.push( args );
- if ( !firing ) {
- fire();
- }
- }
- return this;
- },
-
- // Call all the callbacks with the given arguments
- fire: function() {
- self.fireWith( this, arguments );
- return this;
- },
-
- // To know if the callbacks have already been called at least once
- fired: function() {
- return !!fired;
- }
- };
-
- return self;
-};
-
-
-function Identity( v ) {
- return v;
-}
-function Thrower( ex ) {
- throw ex;
-}
-
-function adoptValue( value, resolve, reject, noValue ) {
- var method;
-
- try {
-
- // Check for promise aspect first to privilege synchronous behavior
- if ( value && jQuery.isFunction( ( method = value.promise ) ) ) {
- method.call( value ).done( resolve ).fail( reject );
-
- // Other thenables
- } else if ( value && jQuery.isFunction( ( method = value.then ) ) ) {
- method.call( value, resolve, reject );
-
- // Other non-thenables
- } else {
-
- // Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:
- // * false: [ value ].slice( 0 ) => resolve( value )
- // * true: [ value ].slice( 1 ) => resolve()
- resolve.apply( undefined, [ value ].slice( noValue ) );
- }
-
- // For Promises/A+, convert exceptions into rejections
- // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in
- // Deferred#then to conditionally suppress rejection.
- } catch ( value ) {
-
- // Support: Android 4.0 only
- // Strict mode functions invoked without .call/.apply get global-object context
- reject.apply( undefined, [ value ] );
- }
-}
-
-jQuery.extend( {
-
- Deferred: function( func ) {
- var tuples = [
-
- // action, add listener, callbacks,
- // ... .then handlers, argument index, [final state]
- [ "notify", "progress", jQuery.Callbacks( "memory" ),
- jQuery.Callbacks( "memory" ), 2 ],
- [ "resolve", "done", jQuery.Callbacks( "once memory" ),
- jQuery.Callbacks( "once memory" ), 0, "resolved" ],
- [ "reject", "fail", jQuery.Callbacks( "once memory" ),
- jQuery.Callbacks( "once memory" ), 1, "rejected" ]
- ],
- state = "pending",
- promise = {
- state: function() {
- return state;
- },
- always: function() {
- deferred.done( arguments ).fail( arguments );
- return this;
- },
- "catch": function( fn ) {
- return promise.then( null, fn );
- },
-
- // Keep pipe for back-compat
- pipe: function( /* fnDone, fnFail, fnProgress */ ) {
- var fns = arguments;
-
- return jQuery.Deferred( function( newDefer ) {
- jQuery.each( tuples, function( i, tuple ) {
-
- // Map tuples (progress, done, fail) to arguments (done, fail, progress)
- var fn = jQuery.isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];
-
- // deferred.progress(function() { bind to newDefer or newDefer.notify })
- // deferred.done(function() { bind to newDefer or newDefer.resolve })
- // deferred.fail(function() { bind to newDefer or newDefer.reject })
- deferred[ tuple[ 1 ] ]( function() {
- var returned = fn && fn.apply( this, arguments );
- if ( returned && jQuery.isFunction( returned.promise ) ) {
- returned.promise()
- .progress( newDefer.notify )
- .done( newDefer.resolve )
- .fail( newDefer.reject );
- } else {
- newDefer[ tuple[ 0 ] + "With" ](
- this,
- fn ? [ returned ] : arguments
- );
- }
- } );
- } );
- fns = null;
- } ).promise();
- },
- then: function( onFulfilled, onRejected, onProgress ) {
- var maxDepth = 0;
- function resolve( depth, deferred, handler, special ) {
- return function() {
- var that = this,
- args = arguments,
- mightThrow = function() {
- var returned, then;
-
- // Support: Promises/A+ section 2.3.3.3.3
- // https://promisesaplus.com/#point-59
- // Ignore double-resolution attempts
- if ( depth < maxDepth ) {
- return;
- }
-
- returned = handler.apply( that, args );
-
- // Support: Promises/A+ section 2.3.1
- // https://promisesaplus.com/#point-48
- if ( returned === deferred.promise() ) {
- throw new TypeError( "Thenable self-resolution" );
- }
-
- // Support: Promises/A+ sections 2.3.3.1, 3.5
- // https://promisesaplus.com/#point-54
- // https://promisesaplus.com/#point-75
- // Retrieve `then` only once
- then = returned &&
-
- // Support: Promises/A+ section 2.3.4
- // https://promisesaplus.com/#point-64
- // Only check objects and functions for thenability
- ( typeof returned === "object" ||
- typeof returned === "function" ) &&
- returned.then;
-
- // Handle a returned thenable
- if ( jQuery.isFunction( then ) ) {
-
- // Special processors (notify) just wait for resolution
- if ( special ) {
- then.call(
- returned,
- resolve( maxDepth, deferred, Identity, special ),
- resolve( maxDepth, deferred, Thrower, special )
- );
-
- // Normal processors (resolve) also hook into progress
- } else {
-
- // ...and disregard older resolution values
- maxDepth++;
-
- then.call(
- returned,
- resolve( maxDepth, deferred, Identity, special ),
- resolve( maxDepth, deferred, Thrower, special ),
- resolve( maxDepth, deferred, Identity,
- deferred.notifyWith )
- );
- }
-
- // Handle all other returned values
- } else {
-
- // Only substitute handlers pass on context
- // and multiple values (non-spec behavior)
- if ( handler !== Identity ) {
- that = undefined;
- args = [ returned ];
- }
-
- // Process the value(s)
- // Default process is resolve
- ( special || deferred.resolveWith )( that, args );
- }
- },
-
- // Only normal processors (resolve) catch and reject exceptions
- process = special ?
- mightThrow :
- function() {
- try {
- mightThrow();
- } catch ( e ) {
-
- if ( jQuery.Deferred.exceptionHook ) {
- jQuery.Deferred.exceptionHook( e,
- process.stackTrace );
- }
-
- // Support: Promises/A+ section 2.3.3.3.4.1
- // https://promisesaplus.com/#point-61
- // Ignore post-resolution exceptions
- if ( depth + 1 >= maxDepth ) {
-
- // Only substitute handlers pass on context
- // and multiple values (non-spec behavior)
- if ( handler !== Thrower ) {
- that = undefined;
- args = [ e ];
- }
-
- deferred.rejectWith( that, args );
- }
- }
- };
-
- // Support: Promises/A+ section 2.3.3.3.1
- // https://promisesaplus.com/#point-57
- // Re-resolve promises immediately to dodge false rejection from
- // subsequent errors
- if ( depth ) {
- process();
- } else {
-
- // Call an optional hook to record the stack, in case of exception
- // since it's otherwise lost when execution goes async
- if ( jQuery.Deferred.getStackHook ) {
- process.stackTrace = jQuery.Deferred.getStackHook();
- }
- window.setTimeout( process );
- }
- };
- }
-
- return jQuery.Deferred( function( newDefer ) {
-
- // progress_handlers.add( ... )
- tuples[ 0 ][ 3 ].add(
- resolve(
- 0,
- newDefer,
- jQuery.isFunction( onProgress ) ?
- onProgress :
- Identity,
- newDefer.notifyWith
- )
- );
-
- // fulfilled_handlers.add( ... )
- tuples[ 1 ][ 3 ].add(
- resolve(
- 0,
- newDefer,
- jQuery.isFunction( onFulfilled ) ?
- onFulfilled :
- Identity
- )
- );
-
- // rejected_handlers.add( ... )
- tuples[ 2 ][ 3 ].add(
- resolve(
- 0,
- newDefer,
- jQuery.isFunction( onRejected ) ?
- onRejected :
- Thrower
- )
- );
- } ).promise();
- },
-
- // Get a promise for this deferred
- // If obj is provided, the promise aspect is added to the object
- promise: function( obj ) {
- return obj != null ? jQuery.extend( obj, promise ) : promise;
- }
- },
- deferred = {};
-
- // Add list-specific methods
- jQuery.each( tuples, function( i, tuple ) {
- var list = tuple[ 2 ],
- stateString = tuple[ 5 ];
-
- // promise.progress = list.add
- // promise.done = list.add
- // promise.fail = list.add
- promise[ tuple[ 1 ] ] = list.add;
-
- // Handle state
- if ( stateString ) {
- list.add(
- function() {
-
- // state = "resolved" (i.e., fulfilled)
- // state = "rejected"
- state = stateString;
- },
-
- // rejected_callbacks.disable
- // fulfilled_callbacks.disable
- tuples[ 3 - i ][ 2 ].disable,
-
- // progress_callbacks.lock
- tuples[ 0 ][ 2 ].lock
- );
- }
-
- // progress_handlers.fire
- // fulfilled_handlers.fire
- // rejected_handlers.fire
- list.add( tuple[ 3 ].fire );
-
- // deferred.notify = function() { deferred.notifyWith(...) }
- // deferred.resolve = function() { deferred.resolveWith(...) }
- // deferred.reject = function() { deferred.rejectWith(...) }
- deferred[ tuple[ 0 ] ] = function() {
- deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments );
- return this;
- };
-
- // deferred.notifyWith = list.fireWith
- // deferred.resolveWith = list.fireWith
- // deferred.rejectWith = list.fireWith
- deferred[ tuple[ 0 ] + "With" ] = list.fireWith;
- } );
-
- // Make the deferred a promise
- promise.promise( deferred );
-
- // Call given func if any
- if ( func ) {
- func.call( deferred, deferred );
- }
-
- // All done!
- return deferred;
- },
-
- // Deferred helper
- when: function( singleValue ) {
- var
-
- // count of uncompleted subordinates
- remaining = arguments.length,
-
- // count of unprocessed arguments
- i = remaining,
-
- // subordinate fulfillment data
- resolveContexts = Array( i ),
- resolveValues = slice.call( arguments ),
-
- // the master Deferred
- master = jQuery.Deferred(),
-
- // subordinate callback factory
- updateFunc = function( i ) {
- return function( value ) {
- resolveContexts[ i ] = this;
- resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;
- if ( !( --remaining ) ) {
- master.resolveWith( resolveContexts, resolveValues );
- }
- };
- };
-
- // Single- and empty arguments are adopted like Promise.resolve
- if ( remaining <= 1 ) {
- adoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject,
- !remaining );
-
- // Use .then() to unwrap secondary thenables (cf. gh-3000)
- if ( master.state() === "pending" ||
- jQuery.isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {
-
- return master.then();
- }
- }
-
- // Multiple arguments are aggregated like Promise.all array elements
- while ( i-- ) {
- adoptValue( resolveValues[ i ], updateFunc( i ), master.reject );
- }
-
- return master.promise();
- }
-} );
-
-
-// These usually indicate a programmer mistake during development,
-// warn about them ASAP rather than swallowing them by default.
-var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;
-
-jQuery.Deferred.exceptionHook = function( error, stack ) {
-
- // Support: IE 8 - 9 only
- // Console exists when dev tools are open, which can happen at any time
- if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {
- window.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, stack );
- }
-};
-
-
-
-
-jQuery.readyException = function( error ) {
- window.setTimeout( function() {
- throw error;
- } );
-};
-
-
-
-
-// The deferred used on DOM ready
-var readyList = jQuery.Deferred();
-
-jQuery.fn.ready = function( fn ) {
-
- readyList
- .then( fn )
-
- // Wrap jQuery.readyException in a function so that the lookup
- // happens at the time of error handling instead of callback
- // registration.
- .catch( function( error ) {
- jQuery.readyException( error );
- } );
-
- return this;
-};
-
-jQuery.extend( {
-
- // Is the DOM ready to be used? Set to true once it occurs.
- isReady: false,
-
- // A counter to track how many items to wait for before
- // the ready event fires. See #6781
- readyWait: 1,
-
- // Handle when the DOM is ready
- ready: function( wait ) {
-
- // Abort if there are pending holds or we're already ready
- if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {
- return;
- }
-
- // Remember that the DOM is ready
- jQuery.isReady = true;
-
- // If a normal DOM Ready event fired, decrement, and wait if need be
- if ( wait !== true && --jQuery.readyWait > 0 ) {
- return;
- }
-
- // If there are functions bound, to execute
- readyList.resolveWith( document, [ jQuery ] );
- }
-} );
-
-jQuery.ready.then = readyList.then;
-
-// The ready event handler and self cleanup method
-function completed() {
- document.removeEventListener( "DOMContentLoaded", completed );
- window.removeEventListener( "load", completed );
- jQuery.ready();
-}
-
-// Catch cases where $(document).ready() is called
-// after the browser event has already occurred.
-// Support: IE <=9 - 10 only
-// Older IE sometimes signals "interactive" too soon
-if ( document.readyState === "complete" ||
- ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) {
-
- // Handle it asynchronously to allow scripts the opportunity to delay ready
- window.setTimeout( jQuery.ready );
-
-} else {
-
- // Use the handy event callback
- document.addEventListener( "DOMContentLoaded", completed );
-
- // A fallback to window.onload, that will always work
- window.addEventListener( "load", completed );
-}
-
-
-
-
-// Multifunctional method to get and set values of a collection
-// The value/s can optionally be executed if it's a function
-var access = function( elems, fn, key, value, chainable, emptyGet, raw ) {
- var i = 0,
- len = elems.length,
- bulk = key == null;
-
- // Sets many values
- if ( jQuery.type( key ) === "object" ) {
- chainable = true;
- for ( i in key ) {
- access( elems, fn, i, key[ i ], true, emptyGet, raw );
- }
-
- // Sets one value
- } else if ( value !== undefined ) {
- chainable = true;
-
- if ( !jQuery.isFunction( value ) ) {
- raw = true;
- }
-
- if ( bulk ) {
-
- // Bulk operations run against the entire set
- if ( raw ) {
- fn.call( elems, value );
- fn = null;
-
- // ...except when executing function values
- } else {
- bulk = fn;
- fn = function( elem, key, value ) {
- return bulk.call( jQuery( elem ), value );
- };
- }
- }
-
- if ( fn ) {
- for ( ; i < len; i++ ) {
- fn(
- elems[ i ], key, raw ?
- value :
- value.call( elems[ i ], i, fn( elems[ i ], key ) )
- );
- }
- }
- }
-
- if ( chainable ) {
- return elems;
- }
-
- // Gets
- if ( bulk ) {
- return fn.call( elems );
- }
-
- return len ? fn( elems[ 0 ], key ) : emptyGet;
-};
-var acceptData = function( owner ) {
-
- // Accepts only:
- // - Node
- // - Node.ELEMENT_NODE
- // - Node.DOCUMENT_NODE
- // - Object
- // - Any
- return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );
-};
-
-
-
-
-function Data() {
- this.expando = jQuery.expando + Data.uid++;
-}
-
-Data.uid = 1;
-
-Data.prototype = {
-
- cache: function( owner ) {
-
- // Check if the owner object already has a cache
- var value = owner[ this.expando ];
-
- // If not, create one
- if ( !value ) {
- value = {};
-
- // We can accept data for non-element nodes in modern browsers,
- // but we should not, see #8335.
- // Always return an empty object.
- if ( acceptData( owner ) ) {
-
- // If it is a node unlikely to be stringify-ed or looped over
- // use plain assignment
- if ( owner.nodeType ) {
- owner[ this.expando ] = value;
-
- // Otherwise secure it in a non-enumerable property
- // configurable must be true to allow the property to be
- // deleted when data is removed
- } else {
- Object.defineProperty( owner, this.expando, {
- value: value,
- configurable: true
- } );
- }
- }
- }
-
- return value;
- },
- set: function( owner, data, value ) {
- var prop,
- cache = this.cache( owner );
-
- // Handle: [ owner, key, value ] args
- // Always use camelCase key (gh-2257)
- if ( typeof data === "string" ) {
- cache[ jQuery.camelCase( data ) ] = value;
-
- // Handle: [ owner, { properties } ] args
- } else {
-
- // Copy the properties one-by-one to the cache object
- for ( prop in data ) {
- cache[ jQuery.camelCase( prop ) ] = data[ prop ];
- }
- }
- return cache;
- },
- get: function( owner, key ) {
- return key === undefined ?
- this.cache( owner ) :
-
- // Always use camelCase key (gh-2257)
- owner[ this.expando ] && owner[ this.expando ][ jQuery.camelCase( key ) ];
- },
- access: function( owner, key, value ) {
-
- // In cases where either:
- //
- // 1. No key was specified
- // 2. A string key was specified, but no value provided
- //
- // Take the "read" path and allow the get method to determine
- // which value to return, respectively either:
- //
- // 1. The entire cache object
- // 2. The data stored at the key
- //
- if ( key === undefined ||
- ( ( key && typeof key === "string" ) && value === undefined ) ) {
-
- return this.get( owner, key );
- }
-
- // When the key is not a string, or both a key and value
- // are specified, set or extend (existing objects) with either:
- //
- // 1. An object of properties
- // 2. A key and value
- //
- this.set( owner, key, value );
-
- // Since the "set" path can have two possible entry points
- // return the expected data based on which path was taken[*]
- return value !== undefined ? value : key;
- },
- remove: function( owner, key ) {
- var i,
- cache = owner[ this.expando ];
-
- if ( cache === undefined ) {
- return;
- }
-
- if ( key !== undefined ) {
-
- // Support array or space separated string of keys
- if ( Array.isArray( key ) ) {
-
- // If key is an array of keys...
- // We always set camelCase keys, so remove that.
- key = key.map( jQuery.camelCase );
- } else {
- key = jQuery.camelCase( key );
-
- // If a key with the spaces exists, use it.
- // Otherwise, create an array by matching non-whitespace
- key = key in cache ?
- [ key ] :
- ( key.match( rnothtmlwhite ) || [] );
- }
-
- i = key.length;
-
- while ( i-- ) {
- delete cache[ key[ i ] ];
- }
- }
-
- // Remove the expando if there's no more data
- if ( key === undefined || jQuery.isEmptyObject( cache ) ) {
-
- // Support: Chrome <=35 - 45
- // Webkit & Blink performance suffers when deleting properties
- // from DOM nodes, so set to undefined instead
- // https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)
- if ( owner.nodeType ) {
- owner[ this.expando ] = undefined;
- } else {
- delete owner[ this.expando ];
- }
- }
- },
- hasData: function( owner ) {
- var cache = owner[ this.expando ];
- return cache !== undefined && !jQuery.isEmptyObject( cache );
- }
-};
-var dataPriv = new Data();
-
-var dataUser = new Data();
-
-
-
-// Implementation Summary
-//
-// 1. Enforce API surface and semantic compatibility with 1.9.x branch
-// 2. Improve the module's maintainability by reducing the storage
-// paths to a single mechanism.
-// 3. Use the same single mechanism to support "private" and "user" data.
-// 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData)
-// 5. Avoid exposing implementation details on user objects (eg. expando properties)
-// 6. Provide a clear path for implementation upgrade to WeakMap in 2014
-
-var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
- rmultiDash = /[A-Z]/g;
-
-function getData( data ) {
- if ( data === "true" ) {
- return true;
- }
-
- if ( data === "false" ) {
- return false;
- }
-
- if ( data === "null" ) {
- return null;
- }
-
- // Only convert to a number if it doesn't change the string
- if ( data === +data + "" ) {
- return +data;
- }
-
- if ( rbrace.test( data ) ) {
- return JSON.parse( data );
- }
-
- return data;
-}
-
-function dataAttr( elem, key, data ) {
- var name;
-
- // If nothing was found internally, try to fetch any
- // data from the HTML5 data-* attribute
- if ( data === undefined && elem.nodeType === 1 ) {
- name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase();
- data = elem.getAttribute( name );
-
- if ( typeof data === "string" ) {
- try {
- data = getData( data );
- } catch ( e ) {}
-
- // Make sure we set the data so it isn't changed later
- dataUser.set( elem, key, data );
- } else {
- data = undefined;
- }
- }
- return data;
-}
-
-jQuery.extend( {
- hasData: function( elem ) {
- return dataUser.hasData( elem ) || dataPriv.hasData( elem );
- },
-
- data: function( elem, name, data ) {
- return dataUser.access( elem, name, data );
- },
-
- removeData: function( elem, name ) {
- dataUser.remove( elem, name );
- },
-
- // TODO: Now that all calls to _data and _removeData have been replaced
- // with direct calls to dataPriv methods, these can be deprecated.
- _data: function( elem, name, data ) {
- return dataPriv.access( elem, name, data );
- },
-
- _removeData: function( elem, name ) {
- dataPriv.remove( elem, name );
- }
-} );
-
-jQuery.fn.extend( {
- data: function( key, value ) {
- var i, name, data,
- elem = this[ 0 ],
- attrs = elem && elem.attributes;
-
- // Gets all values
- if ( key === undefined ) {
- if ( this.length ) {
- data = dataUser.get( elem );
-
- if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) {
- i = attrs.length;
- while ( i-- ) {
-
- // Support: IE 11 only
- // The attrs elements can be null (#14894)
- if ( attrs[ i ] ) {
- name = attrs[ i ].name;
- if ( name.indexOf( "data-" ) === 0 ) {
- name = jQuery.camelCase( name.slice( 5 ) );
- dataAttr( elem, name, data[ name ] );
- }
- }
- }
- dataPriv.set( elem, "hasDataAttrs", true );
- }
- }
-
- return data;
- }
-
- // Sets multiple values
- if ( typeof key === "object" ) {
- return this.each( function() {
- dataUser.set( this, key );
- } );
- }
-
- return access( this, function( value ) {
- var data;
-
- // The calling jQuery object (element matches) is not empty
- // (and therefore has an element appears at this[ 0 ]) and the
- // `value` parameter was not undefined. An empty jQuery object
- // will result in `undefined` for elem = this[ 0 ] which will
- // throw an exception if an attempt to read a data cache is made.
- if ( elem && value === undefined ) {
-
- // Attempt to get data from the cache
- // The key will always be camelCased in Data
- data = dataUser.get( elem, key );
- if ( data !== undefined ) {
- return data;
- }
-
- // Attempt to "discover" the data in
- // HTML5 custom data-* attrs
- data = dataAttr( elem, key );
- if ( data !== undefined ) {
- return data;
- }
-
- // We tried really hard, but the data doesn't exist.
- return;
- }
-
- // Set the data...
- this.each( function() {
-
- // We always store the camelCased key
- dataUser.set( this, key, value );
- } );
- }, null, value, arguments.length > 1, null, true );
- },
-
- removeData: function( key ) {
- return this.each( function() {
- dataUser.remove( this, key );
- } );
- }
-} );
-
-
-jQuery.extend( {
- queue: function( elem, type, data ) {
- var queue;
-
- if ( elem ) {
- type = ( type || "fx" ) + "queue";
- queue = dataPriv.get( elem, type );
-
- // Speed up dequeue by getting out quickly if this is just a lookup
- if ( data ) {
- if ( !queue || Array.isArray( data ) ) {
- queue = dataPriv.access( elem, type, jQuery.makeArray( data ) );
- } else {
- queue.push( data );
- }
- }
- return queue || [];
- }
- },
-
- dequeue: function( elem, type ) {
- type = type || "fx";
-
- var queue = jQuery.queue( elem, type ),
- startLength = queue.length,
- fn = queue.shift(),
- hooks = jQuery._queueHooks( elem, type ),
- next = function() {
- jQuery.dequeue( elem, type );
- };
-
- // If the fx queue is dequeued, always remove the progress sentinel
- if ( fn === "inprogress" ) {
- fn = queue.shift();
- startLength--;
- }
-
- if ( fn ) {
-
- // Add a progress sentinel to prevent the fx queue from being
- // automatically dequeued
- if ( type === "fx" ) {
- queue.unshift( "inprogress" );
- }
-
- // Clear up the last queue stop function
- delete hooks.stop;
- fn.call( elem, next, hooks );
- }
-
- if ( !startLength && hooks ) {
- hooks.empty.fire();
- }
- },
-
- // Not public - generate a queueHooks object, or return the current one
- _queueHooks: function( elem, type ) {
- var key = type + "queueHooks";
- return dataPriv.get( elem, key ) || dataPriv.access( elem, key, {
- empty: jQuery.Callbacks( "once memory" ).add( function() {
- dataPriv.remove( elem, [ type + "queue", key ] );
- } )
- } );
- }
-} );
-
-jQuery.fn.extend( {
- queue: function( type, data ) {
- var setter = 2;
-
- if ( typeof type !== "string" ) {
- data = type;
- type = "fx";
- setter--;
- }
-
- if ( arguments.length < setter ) {
- return jQuery.queue( this[ 0 ], type );
- }
-
- return data === undefined ?
- this :
- this.each( function() {
- var queue = jQuery.queue( this, type, data );
-
- // Ensure a hooks for this queue
- jQuery._queueHooks( this, type );
-
- if ( type === "fx" && queue[ 0 ] !== "inprogress" ) {
- jQuery.dequeue( this, type );
- }
- } );
- },
- dequeue: function( type ) {
- return this.each( function() {
- jQuery.dequeue( this, type );
- } );
- },
- clearQueue: function( type ) {
- return this.queue( type || "fx", [] );
- },
-
- // Get a promise resolved when queues of a certain type
- // are emptied (fx is the type by default)
- promise: function( type, obj ) {
- var tmp,
- count = 1,
- defer = jQuery.Deferred(),
- elements = this,
- i = this.length,
- resolve = function() {
- if ( !( --count ) ) {
- defer.resolveWith( elements, [ elements ] );
- }
- };
-
- if ( typeof type !== "string" ) {
- obj = type;
- type = undefined;
- }
- type = type || "fx";
-
- while ( i-- ) {
- tmp = dataPriv.get( elements[ i ], type + "queueHooks" );
- if ( tmp && tmp.empty ) {
- count++;
- tmp.empty.add( resolve );
- }
- }
- resolve();
- return defer.promise( obj );
- }
-} );
-var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source;
-
-var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" );
-
-
-var cssExpand = [ "Top", "Right", "Bottom", "Left" ];
-
-var isHiddenWithinTree = function( elem, el ) {
-
- // isHiddenWithinTree might be called from jQuery#filter function;
- // in that case, element will be second argument
- elem = el || elem;
-
- // Inline style trumps all
- return elem.style.display === "none" ||
- elem.style.display === "" &&
-
- // Otherwise, check computed style
- // Support: Firefox <=43 - 45
- // Disconnected elements can have computed display: none, so first confirm that elem is
- // in the document.
- jQuery.contains( elem.ownerDocument, elem ) &&
-
- jQuery.css( elem, "display" ) === "none";
- };
-
-var swap = function( elem, options, callback, args ) {
- var ret, name,
- old = {};
-
- // Remember the old values, and insert the new ones
- for ( name in options ) {
- old[ name ] = elem.style[ name ];
- elem.style[ name ] = options[ name ];
- }
-
- ret = callback.apply( elem, args || [] );
-
- // Revert the old values
- for ( name in options ) {
- elem.style[ name ] = old[ name ];
- }
-
- return ret;
-};
-
-
-
-
-function adjustCSS( elem, prop, valueParts, tween ) {
- var adjusted,
- scale = 1,
- maxIterations = 20,
- currentValue = tween ?
- function() {
- return tween.cur();
- } :
- function() {
- return jQuery.css( elem, prop, "" );
- },
- initial = currentValue(),
- unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ),
-
- // Starting value computation is required for potential unit mismatches
- initialInUnit = ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) &&
- rcssNum.exec( jQuery.css( elem, prop ) );
-
- if ( initialInUnit && initialInUnit[ 3 ] !== unit ) {
-
- // Trust units reported by jQuery.css
- unit = unit || initialInUnit[ 3 ];
-
- // Make sure we update the tween properties later on
- valueParts = valueParts || [];
-
- // Iteratively approximate from a nonzero starting point
- initialInUnit = +initial || 1;
-
- do {
-
- // If previous iteration zeroed out, double until we get *something*.
- // Use string for doubling so we don't accidentally see scale as unchanged below
- scale = scale || ".5";
-
- // Adjust and apply
- initialInUnit = initialInUnit / scale;
- jQuery.style( elem, prop, initialInUnit + unit );
-
- // Update scale, tolerating zero or NaN from tween.cur()
- // Break the loop if scale is unchanged or perfect, or if we've just had enough.
- } while (
- scale !== ( scale = currentValue() / initial ) && scale !== 1 && --maxIterations
- );
- }
-
- if ( valueParts ) {
- initialInUnit = +initialInUnit || +initial || 0;
-
- // Apply relative offset (+=/-=) if specified
- adjusted = valueParts[ 1 ] ?
- initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :
- +valueParts[ 2 ];
- if ( tween ) {
- tween.unit = unit;
- tween.start = initialInUnit;
- tween.end = adjusted;
- }
- }
- return adjusted;
-}
-
-
-var defaultDisplayMap = {};
-
-function getDefaultDisplay( elem ) {
- var temp,
- doc = elem.ownerDocument,
- nodeName = elem.nodeName,
- display = defaultDisplayMap[ nodeName ];
-
- if ( display ) {
- return display;
- }
-
- temp = doc.body.appendChild( doc.createElement( nodeName ) );
- display = jQuery.css( temp, "display" );
-
- temp.parentNode.removeChild( temp );
-
- if ( display === "none" ) {
- display = "block";
- }
- defaultDisplayMap[ nodeName ] = display;
-
- return display;
-}
-
-function showHide( elements, show ) {
- var display, elem,
- values = [],
- index = 0,
- length = elements.length;
-
- // Determine new display value for elements that need to change
- for ( ; index < length; index++ ) {
- elem = elements[ index ];
- if ( !elem.style ) {
- continue;
- }
-
- display = elem.style.display;
- if ( show ) {
-
- // Since we force visibility upon cascade-hidden elements, an immediate (and slow)
- // check is required in this first loop unless we have a nonempty display value (either
- // inline or about-to-be-restored)
- if ( display === "none" ) {
- values[ index ] = dataPriv.get( elem, "display" ) || null;
- if ( !values[ index ] ) {
- elem.style.display = "";
- }
- }
- if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) {
- values[ index ] = getDefaultDisplay( elem );
- }
- } else {
- if ( display !== "none" ) {
- values[ index ] = "none";
-
- // Remember what we're overwriting
- dataPriv.set( elem, "display", display );
- }
- }
- }
-
- // Set the display of the elements in a second loop to avoid constant reflow
- for ( index = 0; index < length; index++ ) {
- if ( values[ index ] != null ) {
- elements[ index ].style.display = values[ index ];
- }
- }
-
- return elements;
-}
-
-jQuery.fn.extend( {
- show: function() {
- return showHide( this, true );
- },
- hide: function() {
- return showHide( this );
- },
- toggle: function( state ) {
- if ( typeof state === "boolean" ) {
- return state ? this.show() : this.hide();
- }
-
- return this.each( function() {
- if ( isHiddenWithinTree( this ) ) {
- jQuery( this ).show();
- } else {
- jQuery( this ).hide();
- }
- } );
- }
-} );
-var rcheckableType = ( /^(?:checkbox|radio)$/i );
-
-var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]+)/i );
-
-var rscriptType = ( /^$|\/(?:java|ecma)script/i );
-
-
-
-// We have to close these tags to support XHTML (#13200)
-var wrapMap = {
-
- // Support: IE <=9 only
- option: [ 1, "" ],
-
- // XHTML parsers do not magically insert elements in the
- // same way that tag soup parsers do. So we cannot shorten
- // this by omitting or other required elements.
- thead: [ 1, "" ],
- col: [ 2, "" ],
- tr: [ 2, "" ],
- td: [ 3, "" ],
-
- _default: [ 0, "", "" ]
-};
-
-// Support: IE <=9 only
-wrapMap.optgroup = wrapMap.option;
-
-wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
-wrapMap.th = wrapMap.td;
-
-
-function getAll( context, tag ) {
-
- // Support: IE <=9 - 11 only
- // Use typeof to avoid zero-argument method invocation on host objects (#15151)
- var ret;
-
- if ( typeof context.getElementsByTagName !== "undefined" ) {
- ret = context.getElementsByTagName( tag || "*" );
-
- } else if ( typeof context.querySelectorAll !== "undefined" ) {
- ret = context.querySelectorAll( tag || "*" );
-
- } else {
- ret = [];
- }
-
- if ( tag === undefined || tag && nodeName( context, tag ) ) {
- return jQuery.merge( [ context ], ret );
- }
-
- return ret;
-}
-
-
-// Mark scripts as having already been evaluated
-function setGlobalEval( elems, refElements ) {
- var i = 0,
- l = elems.length;
-
- for ( ; i < l; i++ ) {
- dataPriv.set(
- elems[ i ],
- "globalEval",
- !refElements || dataPriv.get( refElements[ i ], "globalEval" )
- );
- }
-}
-
-
-var rhtml = /<|?\w+;/;
-
-function buildFragment( elems, context, scripts, selection, ignored ) {
- var elem, tmp, tag, wrap, contains, j,
- fragment = context.createDocumentFragment(),
- nodes = [],
- i = 0,
- l = elems.length;
-
- for ( ; i < l; i++ ) {
- elem = elems[ i ];
-
- if ( elem || elem === 0 ) {
-
- // Add nodes directly
- if ( jQuery.type( elem ) === "object" ) {
-
- // Support: Android <=4.0 only, PhantomJS 1 only
- // push.apply(_, arraylike) throws on ancient WebKit
- jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );
-
- // Convert non-html into a text node
- } else if ( !rhtml.test( elem ) ) {
- nodes.push( context.createTextNode( elem ) );
-
- // Convert html into DOM nodes
- } else {
- tmp = tmp || fragment.appendChild( context.createElement( "div" ) );
-
- // Deserialize a standard representation
- tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase();
- wrap = wrapMap[ tag ] || wrapMap._default;
- tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];
-
- // Descend through wrappers to the right content
- j = wrap[ 0 ];
- while ( j-- ) {
- tmp = tmp.lastChild;
- }
-
- // Support: Android <=4.0 only, PhantomJS 1 only
- // push.apply(_, arraylike) throws on ancient WebKit
- jQuery.merge( nodes, tmp.childNodes );
-
- // Remember the top-level container
- tmp = fragment.firstChild;
-
- // Ensure the created nodes are orphaned (#12392)
- tmp.textContent = "";
- }
- }
- }
-
- // Remove wrapper from fragment
- fragment.textContent = "";
-
- i = 0;
- while ( ( elem = nodes[ i++ ] ) ) {
-
- // Skip elements already in the context collection (trac-4087)
- if ( selection && jQuery.inArray( elem, selection ) > -1 ) {
- if ( ignored ) {
- ignored.push( elem );
- }
- continue;
- }
-
- contains = jQuery.contains( elem.ownerDocument, elem );
-
- // Append to fragment
- tmp = getAll( fragment.appendChild( elem ), "script" );
-
- // Preserve script evaluation history
- if ( contains ) {
- setGlobalEval( tmp );
- }
-
- // Capture executables
- if ( scripts ) {
- j = 0;
- while ( ( elem = tmp[ j++ ] ) ) {
- if ( rscriptType.test( elem.type || "" ) ) {
- scripts.push( elem );
- }
- }
- }
- }
-
- return fragment;
-}
-
-
-( function() {
- var fragment = document.createDocumentFragment(),
- div = fragment.appendChild( document.createElement( "div" ) ),
- input = document.createElement( "input" );
-
- // Support: Android 4.0 - 4.3 only
- // Check state lost if the name is set (#11217)
- // Support: Windows Web Apps (WWA)
- // `name` and `type` must use .setAttribute for WWA (#14901)
- input.setAttribute( "type", "radio" );
- input.setAttribute( "checked", "checked" );
- input.setAttribute( "name", "t" );
-
- div.appendChild( input );
-
- // Support: Android <=4.1 only
- // Older WebKit doesn't clone checked state correctly in fragments
- support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;
-
- // Support: IE <=11 only
- // Make sure textarea (and checkbox) defaultValue is properly cloned
- div.innerHTML = "";
- support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;
-} )();
-var documentElement = document.documentElement;
-
-
-
-var
- rkeyEvent = /^key/,
- rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,
- rtypenamespace = /^([^.]*)(?:\.(.+)|)/;
-
-function returnTrue() {
- return true;
-}
-
-function returnFalse() {
- return false;
-}
-
-// Support: IE <=9 only
-// See #13393 for more info
-function safeActiveElement() {
- try {
- return document.activeElement;
- } catch ( err ) { }
-}
-
-function on( elem, types, selector, data, fn, one ) {
- var origFn, type;
-
- // Types can be a map of types/handlers
- if ( typeof types === "object" ) {
-
- // ( types-Object, selector, data )
- if ( typeof selector !== "string" ) {
-
- // ( types-Object, data )
- data = data || selector;
- selector = undefined;
- }
- for ( type in types ) {
- on( elem, type, selector, data, types[ type ], one );
- }
- return elem;
- }
-
- if ( data == null && fn == null ) {
-
- // ( types, fn )
- fn = selector;
- data = selector = undefined;
- } else if ( fn == null ) {
- if ( typeof selector === "string" ) {
-
- // ( types, selector, fn )
- fn = data;
- data = undefined;
- } else {
-
- // ( types, data, fn )
- fn = data;
- data = selector;
- selector = undefined;
- }
- }
- if ( fn === false ) {
- fn = returnFalse;
- } else if ( !fn ) {
- return elem;
- }
-
- if ( one === 1 ) {
- origFn = fn;
- fn = function( event ) {
-
- // Can use an empty set, since event contains the info
- jQuery().off( event );
- return origFn.apply( this, arguments );
- };
-
- // Use same guid so caller can remove using origFn
- fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );
- }
- return elem.each( function() {
- jQuery.event.add( this, types, fn, data, selector );
- } );
-}
-
-/*
- * Helper functions for managing events -- not part of the public interface.
- * Props to Dean Edwards' addEvent library for many of the ideas.
- */
-jQuery.event = {
-
- global: {},
-
- add: function( elem, types, handler, data, selector ) {
-
- var handleObjIn, eventHandle, tmp,
- events, t, handleObj,
- special, handlers, type, namespaces, origType,
- elemData = dataPriv.get( elem );
-
- // Don't attach events to noData or text/comment nodes (but allow plain objects)
- if ( !elemData ) {
- return;
- }
-
- // Caller can pass in an object of custom data in lieu of the handler
- if ( handler.handler ) {
- handleObjIn = handler;
- handler = handleObjIn.handler;
- selector = handleObjIn.selector;
- }
-
- // Ensure that invalid selectors throw exceptions at attach time
- // Evaluate against documentElement in case elem is a non-element node (e.g., document)
- if ( selector ) {
- jQuery.find.matchesSelector( documentElement, selector );
- }
-
- // Make sure that the handler has a unique ID, used to find/remove it later
- if ( !handler.guid ) {
- handler.guid = jQuery.guid++;
- }
-
- // Init the element's event structure and main handler, if this is the first
- if ( !( events = elemData.events ) ) {
- events = elemData.events = {};
- }
- if ( !( eventHandle = elemData.handle ) ) {
- eventHandle = elemData.handle = function( e ) {
-
- // Discard the second event of a jQuery.event.trigger() and
- // when an event is called after a page has unloaded
- return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ?
- jQuery.event.dispatch.apply( elem, arguments ) : undefined;
- };
- }
-
- // Handle multiple events separated by a space
- types = ( types || "" ).match( rnothtmlwhite ) || [ "" ];
- t = types.length;
- while ( t-- ) {
- tmp = rtypenamespace.exec( types[ t ] ) || [];
- type = origType = tmp[ 1 ];
- namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort();
-
- // There *must* be a type, no attaching namespace-only handlers
- if ( !type ) {
- continue;
- }
-
- // If event changes its type, use the special event handlers for the changed type
- special = jQuery.event.special[ type ] || {};
-
- // If selector defined, determine special event api type, otherwise given type
- type = ( selector ? special.delegateType : special.bindType ) || type;
-
- // Update special based on newly reset type
- special = jQuery.event.special[ type ] || {};
-
- // handleObj is passed to all event handlers
- handleObj = jQuery.extend( {
- type: type,
- origType: origType,
- data: data,
- handler: handler,
- guid: handler.guid,
- selector: selector,
- needsContext: selector && jQuery.expr.match.needsContext.test( selector ),
- namespace: namespaces.join( "." )
- }, handleObjIn );
-
- // Init the event handler queue if we're the first
- if ( !( handlers = events[ type ] ) ) {
- handlers = events[ type ] = [];
- handlers.delegateCount = 0;
-
- // Only use addEventListener if the special events handler returns false
- if ( !special.setup ||
- special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
-
- if ( elem.addEventListener ) {
- elem.addEventListener( type, eventHandle );
- }
- }
- }
-
- if ( special.add ) {
- special.add.call( elem, handleObj );
-
- if ( !handleObj.handler.guid ) {
- handleObj.handler.guid = handler.guid;
- }
- }
-
- // Add to the element's handler list, delegates in front
- if ( selector ) {
- handlers.splice( handlers.delegateCount++, 0, handleObj );
- } else {
- handlers.push( handleObj );
- }
-
- // Keep track of which events have ever been used, for event optimization
- jQuery.event.global[ type ] = true;
- }
-
- },
-
- // Detach an event or set of events from an element
- remove: function( elem, types, handler, selector, mappedTypes ) {
-
- var j, origCount, tmp,
- events, t, handleObj,
- special, handlers, type, namespaces, origType,
- elemData = dataPriv.hasData( elem ) && dataPriv.get( elem );
-
- if ( !elemData || !( events = elemData.events ) ) {
- return;
- }
-
- // Once for each type.namespace in types; type may be omitted
- types = ( types || "" ).match( rnothtmlwhite ) || [ "" ];
- t = types.length;
- while ( t-- ) {
- tmp = rtypenamespace.exec( types[ t ] ) || [];
- type = origType = tmp[ 1 ];
- namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort();
-
- // Unbind all events (on this namespace, if provided) for the element
- if ( !type ) {
- for ( type in events ) {
- jQuery.event.remove( elem, type + types[ t ], handler, selector, true );
- }
- continue;
- }
-
- special = jQuery.event.special[ type ] || {};
- type = ( selector ? special.delegateType : special.bindType ) || type;
- handlers = events[ type ] || [];
- tmp = tmp[ 2 ] &&
- new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" );
-
- // Remove matching events
- origCount = j = handlers.length;
- while ( j-- ) {
- handleObj = handlers[ j ];
-
- if ( ( mappedTypes || origType === handleObj.origType ) &&
- ( !handler || handler.guid === handleObj.guid ) &&
- ( !tmp || tmp.test( handleObj.namespace ) ) &&
- ( !selector || selector === handleObj.selector ||
- selector === "**" && handleObj.selector ) ) {
- handlers.splice( j, 1 );
-
- if ( handleObj.selector ) {
- handlers.delegateCount--;
- }
- if ( special.remove ) {
- special.remove.call( elem, handleObj );
- }
- }
- }
-
- // Remove generic event handler if we removed something and no more handlers exist
- // (avoids potential for endless recursion during removal of special event handlers)
- if ( origCount && !handlers.length ) {
- if ( !special.teardown ||
- special.teardown.call( elem, namespaces, elemData.handle ) === false ) {
-
- jQuery.removeEvent( elem, type, elemData.handle );
- }
-
- delete events[ type ];
- }
- }
-
- // Remove data and the expando if it's no longer used
- if ( jQuery.isEmptyObject( events ) ) {
- dataPriv.remove( elem, "handle events" );
- }
- },
-
- dispatch: function( nativeEvent ) {
-
- // Make a writable jQuery.Event from the native event object
- var event = jQuery.event.fix( nativeEvent );
-
- var i, j, ret, matched, handleObj, handlerQueue,
- args = new Array( arguments.length ),
- handlers = ( dataPriv.get( this, "events" ) || {} )[ event.type ] || [],
- special = jQuery.event.special[ event.type ] || {};
-
- // Use the fix-ed jQuery.Event rather than the (read-only) native event
- args[ 0 ] = event;
-
- for ( i = 1; i < arguments.length; i++ ) {
- args[ i ] = arguments[ i ];
- }
-
- event.delegateTarget = this;
-
- // Call the preDispatch hook for the mapped type, and let it bail if desired
- if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {
- return;
- }
-
- // Determine handlers
- handlerQueue = jQuery.event.handlers.call( this, event, handlers );
-
- // Run delegates first; they may want to stop propagation beneath us
- i = 0;
- while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {
- event.currentTarget = matched.elem;
-
- j = 0;
- while ( ( handleObj = matched.handlers[ j++ ] ) &&
- !event.isImmediatePropagationStopped() ) {
-
- // Triggered event must either 1) have no namespace, or 2) have namespace(s)
- // a subset or equal to those in the bound event (both can have no namespace).
- if ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) {
-
- event.handleObj = handleObj;
- event.data = handleObj.data;
-
- ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||
- handleObj.handler ).apply( matched.elem, args );
-
- if ( ret !== undefined ) {
- if ( ( event.result = ret ) === false ) {
- event.preventDefault();
- event.stopPropagation();
- }
- }
- }
- }
- }
-
- // Call the postDispatch hook for the mapped type
- if ( special.postDispatch ) {
- special.postDispatch.call( this, event );
- }
-
- return event.result;
- },
-
- handlers: function( event, handlers ) {
- var i, handleObj, sel, matchedHandlers, matchedSelectors,
- handlerQueue = [],
- delegateCount = handlers.delegateCount,
- cur = event.target;
-
- // Find delegate handlers
- if ( delegateCount &&
-
- // Support: IE <=9
- // Black-hole SVG