修改优化

This commit is contained in:
chenhaodong
2026-06-24 23:47:49 +08:00
parent 3116d3bf8b
commit 6393b0fb5c
21 changed files with 467 additions and 176 deletions
+363
View File
@@ -0,0 +1,363 @@
-- MySQL dump 10.13
--
-- Host: localhost Database: jyt
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
--
-- Table structure for table `sys_config`
--
DROP TABLE IF EXISTS `sys_config`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `sys_config` (
`id` varchar(32) NOT NULL COMMENT 'ID',
`site_name` varchar(255) DEFAULT NULL COMMENT '系统名称',
`front_logo` varchar(255) DEFAULT NULL COMMENT '前端LOGO',
`back_logo` varchar(255) DEFAULT NULL COMMENT '后台LOGO',
`copy_right` varchar(255) DEFAULT NULL COMMENT '版权信息',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`create_by` varchar(255) DEFAULT '' COMMENT '创建人',
`update_by` varchar(255) DEFAULT '' COMMENT '修改人',
`data_flag` int(11) DEFAULT '0' COMMENT '数据标识',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='系统设置';
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `sys_config`
--
LOCK TABLES `sys_config` WRITE;
/*!40000 ALTER TABLE `sys_config` DISABLE KEYS */;
INSERT INTO `sys_config` VALUES ('1','墨韵智枢校园馆藏图书数字化运维系统','','','白城师范学院','2026-06-15 16:51:30','2026-06-15 16:51:30','','',1);
/*!40000 ALTER TABLE `sys_config` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `sys_dict_data`
--
DROP TABLE IF EXISTS `sys_dict_data`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `sys_dict_data` (
`id` varchar(32) NOT NULL COMMENT 'ID',
`code` varchar(32) NOT NULL DEFAULT '' COMMENT '码值类型',
`text` varchar(32) NOT NULL DEFAULT '' COMMENT '码值中文名称',
`value` varchar(32) NOT NULL DEFAULT '' COMMENT '码值',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`state` int(11) NOT NULL DEFAULT '0' COMMENT '状态',
`data_flag` int(11) NOT NULL DEFAULT '0' COMMENT '0正常,1隐藏',
`filter` varchar(32) DEFAULT NULL COMMENT '过滤条件',
`priority` int(11) NOT NULL DEFAULT '0' COMMENT '优先级',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='码值数据表';
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `sys_dict_data`
--
LOCK TABLES `sys_dict_data` WRITE;
/*!40000 ALTER TABLE `sys_dict_data` DISABLE KEYS */;
INSERT INTO `sys_dict_data` VALUES ('1','YESNO','','1','2022-11-24 14:50:16',NULL,0,0,NULL,0),('1630141555098644481','DIC_TSZL','天文','1','2023-02-27 17:43:28','2023-02-27 17:43:28',0,0,NULL,0),('1630141575969501185','DIC_TSZL','地理','2','2023-02-27 17:43:33','2023-02-27 17:43:33',0,0,NULL,0),('1630141596177657857','DIC_TSZL','数学','3','2023-02-27 17:43:38','2023-02-27 17:43:38',0,0,NULL,0),('1630141617769934849','DIC_TSZL','物理','4','2023-02-27 17:43:43','2023-02-27 17:43:43',0,0,NULL,0),('1630141646534471681','DIC_TSZL','化学','5','2023-02-27 17:43:50','2023-02-27 17:43:50',0,0,NULL,0),('1630141669217267714','DIC_TSZL','生物','6','2023-02-27 17:43:55','2023-02-27 17:43:55',0,0,NULL,0),('1630141690738241538','DIC_TSZL','机械','7','2023-02-27 17:44:00','2023-02-27 17:44:00',0,0,NULL,0),('1630141714524139522','DIC_TSZL','电信','8','2023-02-27 17:44:06','2023-02-27 17:44:06',0,0,NULL,0),('1632047485287182338','DIC_JHZT','待归还','0','2023-03-04 23:56:57','2023-03-04 23:56:57',0,0,'',0),('1632047513988804610','DIC_JHZT','已归还','1','2023-03-04 23:57:04','2023-03-04 23:57:04',0,0,'',0),('1632047724475756545','DIC_SFYQ','未逾期','0','2023-03-04 23:57:54','2023-03-04 23:57:54',0,0,'',0),('1632047751671623681','DIC_SFYQ','已逾期','1','2023-03-04 23:58:01','2023-03-04 23:58:01',0,0,'',0),('1632280097196908545','DIC_JHTYPE','借书','1','2023-03-05 15:21:16','2023-03-05 15:21:16',0,0,NULL,0),('1632280119367999489','DIC_JHTYPE','还书','2','2023-03-05 15:21:21','2023-03-05 15:21:21',0,0,NULL,0),('2','YESNO','','0','2022-11-24 14:50:58',NULL,0,0,NULL,0),('3','STATE','正常','0','2022-11-24 14:53:32',NULL,0,0,NULL,0),('4','STATE','失效','1','2022-11-24 14:53:50',NULL,0,0,NULL,0),('5','SOURCE','码值表','1','2022-11-24 15:08:19',NULL,0,0,NULL,0),('6','SOURCE','sql','2','2022-11-24 15:08:35',NULL,0,0,NULL,0);
/*!40000 ALTER TABLE `sys_dict_data` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `sys_dict_type`
--
DROP TABLE IF EXISTS `sys_dict_type`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `sys_dict_type` (
`id` varchar(32) NOT NULL COMMENT 'ID',
`code` varchar(32) NOT NULL DEFAULT '' COMMENT '码值类型',
`content` varchar(32) NOT NULL DEFAULT '' COMMENT '码值描述',
`source_type` varchar(32) NOT NULL DEFAULT '1' COMMENT '码值来源1: sys_dic_code, 2:sql',
`source_sql` varchar(500) DEFAULT '' COMMENT '码值来源sql',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`state` int(11) NOT NULL DEFAULT '0' COMMENT '状态',
`data_flag` int(11) NOT NULL DEFAULT '0' COMMENT '0正常,1隐藏',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='码值大类表';
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `sys_dict_type`
--
LOCK TABLES `sys_dict_type` WRITE;
/*!40000 ALTER TABLE `sys_dict_type` DISABLE KEYS */;
INSERT INTO `sys_dict_type` VALUES ('1','YESNO','是否','1','','2026-06-18 14:46:16',NULL,0,0),('1630141268560572418','DIC_TSZL','图书种类','1','','2026-06-18 17:42:20','2026-06-18 17:42:20',0,0),('1632047439778983938','DIC_JHZT','借还状态','1','','2026-06-16 23:56:46','2026-06-16 23:56:46',0,0),('1632047614517882882','DIC_SFYQ','是否逾期','1','','2026-06-16 23:57:28','2026-06-16 23:57:28',0,0),('1632280044340289538','DIC_JHTYPE','借书还书类型','1','','2026-06-18 15:21:04','2026-06-18 15:21:04',0,0),('2','STATE','状态','1','','2026-06-18 14:53:05',NULL,0,0),('3','SOURCE','码值来源','1','','2026-06-18 15:07:44',NULL,0,0),('4','USERDATA','用户信息','2','select \'USERDATA\' code,id value, real_name text from sys_user','2026-06-18 16:32:36',NULL,0,0);
/*!40000 ALTER TABLE `sys_dict_type` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `sys_role`
--
DROP TABLE IF EXISTS `sys_role`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `sys_role` (
`id` varchar(32) NOT NULL COMMENT '角色ID',
`role_name` varchar(255) NOT NULL DEFAULT '' COMMENT '角色名称',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='角色';
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `sys_role`
--
LOCK TABLES `sys_role` WRITE;
/*!40000 ALTER TABLE `sys_role` DISABLE KEYS */;
INSERT INTO `sys_role` VALUES ('root','超级管理员'),('student','学生'),('teacher','教师');
/*!40000 ALTER TABLE `sys_role` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `sys_user`
--
DROP TABLE IF EXISTS `sys_user`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `sys_user` (
`id` varchar(32) NOT NULL COMMENT 'ID',
`user_name` varchar(255) NOT NULL DEFAULT '' COMMENT '用户名',
`real_name` varchar(255) NOT NULL DEFAULT '' COMMENT '真实姓名',
`password` varchar(255) NOT NULL DEFAULT '' COMMENT '密码',
`salt` varchar(255) NOT NULL DEFAULT '' COMMENT '密码盐',
`role_ids` varchar(500) NOT NULL DEFAULT '' COMMENT '角色列表',
`depart_id` varchar(32) NOT NULL DEFAULT '' COMMENT '部门ID',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`state` int(11) NOT NULL DEFAULT '0' COMMENT '状态',
`data_flag` int(11) NOT NULL DEFAULT '0' COMMENT '0正常,1隐藏',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='管理用户';
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `sys_user`
--
LOCK TABLES `sys_user` WRITE;
/*!40000 ALTER TABLE `sys_user` DISABLE KEYS */;
INSERT INTO `sys_user` VALUES ('10001','admin','管理员','eee4adece16c20dd320dd7c48fc460ea','MyMUtL','root','1318103313740320770','2026-06-15 13:51:03','2026-06-15 13:51:03',0,0);
/*!40000 ALTER TABLE `sys_user` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `sys_user_role`
--
DROP TABLE IF EXISTS `sys_user_role`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `sys_user_role` (
`id` varchar(32) NOT NULL COMMENT 'ID',
`user_id` varchar(32) NOT NULL COMMENT '用户ID',
`role_id` varchar(32) NOT NULL COMMENT '角色ID',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='用户角色';
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `sys_user_role`
--
LOCK TABLES `sys_user_role` WRITE;
/*!40000 ALTER TABLE `sys_user_role` DISABLE KEYS */;
INSERT INTO `sys_user_role` VALUES ('1318103579445284865','10001','root');
/*!40000 ALTER TABLE `sys_user_role` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `t_gonggao`
--
DROP TABLE IF EXISTS `t_gonggao`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `t_gonggao` (
`id` varchar(32) NOT NULL,
`name` varchar(50) NOT NULL COMMENT '发布人',
`title` varchar(200) NOT NULL COMMENT '公告标题',
`text` varchar(200) NOT NULL COMMENT '公告内容',
`create_time` date NOT NULL COMMENT '发布时间',
`update_time` date NOT NULL COMMENT '更新时间'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='公告表';
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `t_gonggao`
--
LOCK TABLES `t_gonggao` WRITE;
/*!40000 ALTER TABLE `t_gonggao` DISABLE KEYS */;
INSERT INTO `t_gonggao` VALUES ('1636579532075036673','系统管理员','标题','内容','2026-06-18','2026-06-18');
/*!40000 ALTER TABLE `t_gonggao` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `t_jhxxb`
--
DROP TABLE IF EXISTS `t_jhxxb`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `t_jhxxb` (
`id` varchar(32) NOT NULL COMMENT 'ID',
`user_id` varchar(32) NOT NULL COMMENT '用户id',
`b_id` varchar(32) DEFAULT NULL COMMENT '书id',
`state` varchar(2) DEFAULT NULL COMMENT '借还状态0 待归还 1已归还',
`exceed_state` varchar(2) DEFAULT NULL COMMENT '是否逾期,0未逾期 1 逾期',
`start_time` datetime DEFAULT NULL COMMENT '借阅时间',
`end_time` datetime DEFAULT NULL COMMENT '应归还时间',
`return_time` datetime DEFAULT NULL COMMENT '实际归还时间',
`create_time` datetime DEFAULT NULL COMMENT '首次记录时间',
`update_time` datetime DEFAULT NULL COMMENT '最后更新时间',
`message` varchar(50) NOT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `t_jhxxb`
--
LOCK TABLES `t_jhxxb` WRITE;
/*!40000 ALTER TABLE `t_jhxxb` DISABLE KEYS */;
INSERT INTO `t_jhxxb` VALUES ('1632258271129423874','10001','1630145371776782337','1','0','2026-06-16 13:54:32','2026-07-16 13:54:32','2026-06-17 13:54:37','2026-06-16 13:54:32','2026-06-16 13:54:32','未逾期'),('1632258287524958210','10001','1630471358190522369','0','0','2026-06-16 13:54:36','2026-07-16 13:54:36',NULL,'2026-06-16 13:54:32','2026-06-16 13:54:32','10001借出1630471358190522369'),('1632258325999308801','10001','1632009805268742145','0','0','2026-06-16 13:54:45','2026-07-16 13:54:45',NULL,'2026-06-16 13:54:45','2026-06-16 13:54:45','10001借出1632009805268742145'),('1632258473303265281','10001','1630145371776782337','0','0','2026-06-16 13:55:21','2026-07-16 13:55:21',NULL,'2026-06-16 13:55:21','2026-06-16 13:55:21','10001借出1630145371776782337'),('1632258479749910530','10001','1630145371776782337','0','0','2026-06-16 13:55:22','2026-07-16 13:55:22',NULL,'2026-06-16 13:55:22','2026-06-16 13:55:22','10001借出1630145371776782337');
/*!40000 ALTER TABLE `t_jhxxb` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `t_liuyan`
--
DROP TABLE IF EXISTS `t_liuyan`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `t_liuyan` (
`id` varchar(32) NOT NULL,
`userid` varchar(32) NOT NULL COMMENT '发布人',
`itemname` varchar(100) NOT NULL COMMENT '使用昵称',
`text` varchar(200) NOT NULL COMMENT '留言内容',
`create_time` date NOT NULL COMMENT '发布时间',
`update_time` date NOT NULL COMMENT '更新时间'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='留言信息表';
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `t_liuyan`
--
LOCK TABLES `t_liuyan` WRITE;
/*!40000 ALTER TABLE `t_liuyan` DISABLE KEYS */;
INSERT INTO `t_liuyan` VALUES ('1636579818390810626','10001','111','222','2026-06-23','2026-06-23');
/*!40000 ALTER TABLE `t_liuyan` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `t_log`
--
DROP TABLE IF EXISTS `t_log`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `t_log` (
`id` varchar(32) NOT NULL COMMENT 'id',
`userid` varchar(32) NOT NULL COMMENT '用户id',
`state` varchar(2) NOT NULL COMMENT '1借出2归还',
`bookname` varchar(100) NOT NULL COMMENT '书名',
`create_time` date NOT NULL,
`update_time` date NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `t_log`
--
LOCK TABLES `t_log` WRITE;
/*!40000 ALTER TABLE `t_log` DISABLE KEYS */;
INSERT INTO `t_log` VALUES ('123','10001','2','testnname','2026-06-16','2026-06-16'),('123','10001','2','testnname','2026-06-16','2026-06-16'),('123','10001','2','testnname','2026-06-16','2026-06-16'),('123','10001','2','testnname','2026-06-16','2026-06-16'),('10001','10001','2','testnname','2026-06-16','2026-06-16'),('10001','10001','2','testnname','2026-06-16','2026-06-16'),('10001','10001','2','testnname','2026-06-16','2026-06-16'),('10001','10001','2','testnname','2026-06-16','2026-06-16'),('10001','10001','1','枪械之王','2026-06-16','2026-06-16'),('10001','10001','1','枪械之王','2026-06-16','2026-06-16'),('10001','10001','1','枪械之王','2026-06-16','2026-06-16'),('10001','10001','2','枪械之王','2026-06-16','2026-06-16'),('10001','10001','2','枪械之王','2026-06-16','2026-06-16'),('10001','10001','1','枪械之王','2026-06-16','2026-06-16'),('10001','10001','1','枪械之王','2026-06-16','2026-06-16'),('10001','10001','2','枪械之王','2026-06-16','2026-06-16'),('10001','10001','2','枪械之王','2026-06-16','2026-06-16'),('10001','10001','1','枪械之王','2026-06-16','2026-06-16'),('10001','10001','1','额为','2026-06-16','2026-06-16'),('10001','10001','1','枪械之王','2026-06-16','2026-06-16'),('10001','10001','2','枪械之王','2026-06-16','2026-06-16');
/*!40000 ALTER TABLE `t_log` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `t_sjxxb`
--
DROP TABLE IF EXISTS `t_sjxxb`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `t_sjxxb` (
`id` varchar(32) NOT NULL COMMENT 'ID',
`isbn` varchar(13) NOT NULL COMMENT 'ISBN书号',
`b_name` varchar(100) DEFAULT NULL COMMENT '书名',
`b_type` varchar(4) DEFAULT NULL COMMENT '图书类型',
`b_price` varchar(10) DEFAULT NULL COMMENT '价格',
`b_author` varchar(100) DEFAULT NULL COMMENT '作者',
`b_publisher` varchar(100) DEFAULT NULL COMMENT '出版商',
`b_publication_time` datetime DEFAULT NULL COMMENT '出版日期',
`b_num` int(11) DEFAULT NULL COMMENT '库存数量',
`b_not_return_num` int(11) DEFAULT NULL COMMENT '未归还数量',
`b_path` varchar(100) DEFAULT NULL COMMENT '封面图片oss地址',
`b_introduce` text COMMENT '介绍',
`b_lend_num` int(11) DEFAULT NULL COMMENT '借阅次数',
`b_state` int(2) DEFAULT NULL COMMENT '状态0正常 1失效',
`create_time` datetime DEFAULT NULL COMMENT '首次记录时间',
`update_time` datetime DEFAULT NULL COMMENT '最后更新时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `t_sjxxb`
--
LOCK TABLES `t_sjxxb` WRITE;
/*!40000 ALTER TABLE `t_sjxxb` DISABLE KEYS */;
INSERT INTO `t_sjxxb` VALUES ('1632025992283242498','9787547059883','谈判','1','1','史蒂芬妮・德莫林','布鲁塞尔自由大学','2023-03-27 00:00:00',220,2,'https://images-cn.ssl-images-amazon.cn/images/I/61KauWqw7EL.jpg','谈判介绍',3,1,'2026-06-15 22:31:33','2026-06-15 22:31:33'),('1637032598605410305','9787513931328','新大博弈','1','123','彼得・霍普柯克','泰晤士报','2023-03-18 18:05:48',122,1,'https://img1.doubanio.com/lpic/s33746157.jpg','新大博弈',3,0,'2026-06-15 18:06:01','2026-06-15 18:06:01'),('1637032891799842818','9787521724394','认识脑电波','2','111','R.道格拉斯・菲尔茨','时代','2023-03-18 18:07:03',122,1,'https://img2.doubanio.com/lpic/s33808251.jpg','认识脑电波',1,0,'2026-06-15 18:07:11','2026-06-15 18:07:11'),('1637047590092288001','9787521712438','记忆的革命','1','666','张海洋啊','中信出版社啊','2023-03-18 19:08:02',111,0,'https://images-cn.ssl-images-amazon.cn/images/I/513YjysO0vL.jpg','这是介绍么?',0,0,'2026-06-15 19:05:35','2026-06-15 19:05:35'),('1651045598629949442','9787521738582','瘟疫与发展的悖论','5','111','托马斯·J.博伊基','图书馆杂志','2023-04-26 10:08:09',11,0,'https://qq755141.oss-cn-hangzhou.aliyuncs.com/book/wyyfzdbl.png','要想防范下一场全球大流行病,我们该如何做出改变?',0,0,'2026-06-15 10:08:40','2026-06-15 10:08:40');
/*!40000 ALTER TABLE `t_sjxxb` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Dumping events for database 'jyt'
--
--
-- Dumping routines for database 'jyt'
--
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
-- Dump completed on 2026-06-24 23:27:31
@@ -61,6 +61,7 @@ public class ShiroConfig {
map.put("/exam/api/sys/user/login", "anon"); map.put("/exam/api/sys/user/login", "anon");
map.put("/exam/api/sys/user/reg", "anon"); map.put("/exam/api/sys/user/reg", "anon");
map.put("/exam/api/sys/user/quick-reg", "anon"); map.put("/exam/api/sys/user/quick-reg", "anon");
map.put("/exam/api/sys/user/logout", "anon");
// 获取网站基本信息 // 获取网站基本信息
map.put("/exam/api/sys/config/detail", "anon"); map.put("/exam/api/sys/config/detail", "anon");
-21
View File
@@ -1,21 +0,0 @@
MIT License
Copyright (c) 2017-present PanJiaChen
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
+1 -1
View File
@@ -6,7 +6,7 @@
<meta name="renderer" content="webkit"> <meta name="renderer" content="webkit">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
<link rel="icon" href="/favicon.png"> <link rel="icon" href="/favicon.png">
<title>图书管理系统</title> <title>校园馆藏图书数字化运维系统</title>
</head> </head>
<body> <body>
<div id="app"></div> <div id="app"></div>
+8 -23
View File
@@ -8,12 +8,13 @@
<div> <div>
<svg-icon class-name="size-icon" icon-class="size" /> <svg-icon class-name="size-icon" icon-class="size" />
</div> </div>
<el-dropdown-menu #dropdown> <template #dropdown>
<el-dropdown-menu>
<el-dropdown-item v-for="item of sizeOptions" :key="item.value" :disabled="size===item.value" :command="item.value"> <el-dropdown-item v-for="item of sizeOptions" :key="item.value" :disabled="size===item.value" :command="item.value">
{{ {{ item.label }}
item.label }}
</el-dropdown-item> </el-dropdown-item>
</el-dropdown-menu> </el-dropdown-menu>
</template>
</el-dropdown> </el-dropdown>
</template> </template>
@@ -23,9 +24,8 @@ export default {
return { return {
sizeOptions: [ sizeOptions: [
{ label: '默认', value: 'default' }, { label: '默认', value: 'default' },
{ label: '中等', value: 'medium' }, { label: '大号', value: 'large' },
{ label: '小', value: 'small' }, { label: '小', value: 'small' }
{ label: '极小', value: 'mini' }
] ]
} }
}, },
@@ -37,23 +37,8 @@ export default {
methods: { methods: {
handleSetSize(size) { handleSetSize(size) {
this.$store.dispatch('app/setSize', size) this.$store.dispatch('app/setSize', size)
this.refreshView() // Element Plus size is set at app init, need full reload to apply
this.$message({ window.location.reload()
message: '字体切换成功!',
type: 'success'
})
},
refreshView() {
// In order to make the cached page re-rendered
this.$store.dispatch('tagsView/delAllCachedViews', this.$route)
const { fullPath } = this.$route
this.$nextTick(() => {
this.$router.replace({
path: '/redirect' + fullPath
})
})
} }
} }
+3 -6
View File
@@ -5,11 +5,11 @@
--> -->
<template> <template>
<section class="app-main"> <section class="app-main">
<transition name="fade-transform" mode="out-in"> <router-view v-slot="{ Component, route }">
<keep-alive :include="cachedViews"> <keep-alive :include="cachedViews">
<router-view :key="key" /> <component :is="Component" :key="route.path" />
</keep-alive> </keep-alive>
</transition> </router-view>
</section> </section>
</template> </template>
@@ -19,9 +19,6 @@ export default {
computed: { computed: {
cachedViews() { cachedViews() {
return this.$store.state.tagsView.cachedViews return this.$store.state.tagsView.cachedViews
},
key() {
return this.$route.path
} }
} }
} }
+10 -9
View File
@@ -17,25 +17,23 @@
<screenfull id="screenfull" class="right-menu-item hover-effect" /> <screenfull id="screenfull" class="right-menu-item hover-effect" />
<el-tooltip content="字体大小" effect="dark" placement="bottom">
<size-select id="size-select" class="right-menu-item hover-effect" /> <size-select id="size-select" class="right-menu-item hover-effect" />
</el-tooltip>
</template> </template>
<el-dropdown class="avatar-container right-menu-item hover-effect" trigger="click"> <el-dropdown class="avatar-container right-menu-item hover-effect" trigger="click" @command="handleCommand">
<div class="avatar-wrapper"> <div class="avatar-wrapper">
{{ realName }} {{ realName }}
<el-icon class="el-icon-caret-bottom"><ArrowDown /></el-icon> <el-icon class="el-icon-caret-bottom"><ArrowDown /></el-icon>
</div> </div>
<el-dropdown-menu #dropdown> <template #dropdown>
<el-dropdown-menu>
<router-link to="/profile/index"> <router-link to="/profile/index">
<el-dropdown-item>个人资料</el-dropdown-item> <el-dropdown-item>个人资料</el-dropdown-item>
</router-link> </router-link>
<el-dropdown-item divided> <el-dropdown-item divided command="logout">退出登录</el-dropdown-item>
<span style="display:block;" @click="logout">退出登录</span>
</el-dropdown-item>
</el-dropdown-menu> </el-dropdown-menu>
</template>
</el-dropdown> </el-dropdown>
</div> </div>
</div> </div>
@@ -73,9 +71,12 @@ export default {
toggleSideBar() { toggleSideBar() {
this.$store.dispatch('app/toggleSideBar') this.$store.dispatch('app/toggleSideBar')
}, },
async logout() { handleCommand(command) {
await this.$store.dispatch('user/logout') if (command === 'logout') {
this.$store.dispatch('user/logout').finally(() => {
this.$router.push(`/login?redirect=${this.$route.fullPath}`) this.$router.push(`/login?redirect=${this.$route.fullPath}`)
})
}
} }
} }
} }
@@ -82,6 +82,10 @@ export default {
.sidebar-logo { .sidebar-logo {
margin-right: 0px; margin-right: 0px;
} }
.sidebar-title {
display: none;
}
} }
} }
</style> </style>
@@ -13,7 +13,7 @@
</app-link> </app-link>
</template> </template>
<el-submenu v-else ref="subMenu" :index="resolvePath(item.path)" teleported> <el-sub-menu v-else ref="subMenu" :index="resolvePath(item.path)" teleported>
<template #title> <template #title>
<item v-if="item.meta" :icon="item.meta && item.meta.icon" :title="item.meta.title" /> <item v-if="item.meta" :icon="item.meta && item.meta.icon" :title="item.meta.title" />
</template> </template>
@@ -25,7 +25,7 @@
:base-path="resolvePath(child.path)" :base-path="resolvePath(child.path)"
class="nest-menu" class="nest-menu"
/> />
</el-submenu> </el-sub-menu>
</div> </div>
</template> </template>
@@ -4,7 +4,7 @@
@date 20260616 @date 20260616
--> -->
<template> <template>
<div :class="{'has-logo':showLogo}"> <div :class="{'has-logo':showLogo}" :style="isCollapse ? { width: '54px', overflow: 'hidden', flex: '0 0 54px' } : {}">
<logo v-if="showLogo" :collapse="isCollapse" /> <logo v-if="showLogo" :collapse="isCollapse" />
<el-scrollbar wrap-class="scrollbar-wrapper"> <el-scrollbar wrap-class="scrollbar-wrapper">
<el-menu <el-menu
@@ -15,6 +15,7 @@
:unique-opened="false" :unique-opened="false"
:active-text-color="variables.menuActiveText" :active-text-color="variables.menuActiveText"
:collapse-transition="false" :collapse-transition="false"
:style="isCollapse ? { width: '54px' } : {}"
mode="vertical" mode="vertical"
> >
<sidebar-item v-for="route in permission_routes" :key="route.path" :item="route" :base-path="route.path" /> <sidebar-item v-for="route in permission_routes" :key="route.path" :item="route" :base-path="route.path" />
+12 -8
View File
@@ -273,15 +273,19 @@ const router = createRouter({
}) })
export function resetRouter() { export function resetRouter() {
const newRouter = createRouter({ // 递归收集 constantRoutes 中所有路由名称(含嵌套子路由),避免误删 Login 等常量子路由
history: createWebHashHistory(), const constantNames = new Set()
scrollBehavior: () => ({ top: 0 }), const collectNames = (routes) => {
routes: constantRoutes routes.forEach(route => {
if (route.name) constantNames.add(route.name)
if (route.children) collectNames(route.children)
}) })
// 注意:Vue Router 4 没有 matcher,通过移除所有路由再重新添加来重置 }
const currentRoutes = router.getRoutes() collectNames(constantRoutes)
currentRoutes.forEach(route => {
if (route.name && !constantRoutes.find(cr => cr.name === route.name)) { // 仅移除动态添加的路由(asyncRoutes),保留 constantRoutes 中的全部路由
router.getRoutes().forEach(route => {
if (route.name && !constantNames.has(route.name)) {
router.removeRoute(route.name) router.removeRoute(route.name)
} }
}) })
+1 -1
View File
@@ -4,7 +4,7 @@
* @date 20260615 * @date 20260615
*/ */
export default { export default {
title: '校园藏图书数字化运维系统', title: '校园藏图书数字化运维系统',
/** /**
* @type {boolean} true | false * @type {boolean} true | false
+1 -1
View File
@@ -11,7 +11,7 @@ const state = {
withoutAnimation: false withoutAnimation: false
}, },
device: 'desktop', device: 'desktop',
size: Cookies.get('size') || 'medium' size: Cookies.get('size') || 'default'
} }
const mutations = { const mutations = {
+2 -4
View File
@@ -122,8 +122,8 @@ const actions = {
// user logout // user logout
logout({ commit, state, dispatch }) { logout({ commit, state, dispatch }) {
return new Promise((resolve, reject) => { return new Promise((resolve) => {
logout(state.token).then(() => { logout(state.token).finally(() => {
commit('SET_TOKEN', '') commit('SET_TOKEN', '')
commit('SET_ROLES', []) commit('SET_ROLES', [])
removeToken() removeToken()
@@ -133,8 +133,6 @@ const actions = {
dispatch('tagsView/delAllViews', null, { root: true }) dispatch('tagsView/delAllViews', null, { root: true })
resolve() resolve()
}).catch(error => {
reject(error)
}) })
}) })
}, },
+28 -54
View File
@@ -27,11 +27,6 @@
z-index: 1001; z-index: 1001;
overflow: hidden; overflow: hidden;
// reset element-ui css
.horizontal-collapse-transition {
transition: 0s width ease-in-out, 0s padding-left ease-in-out, 0s padding-right ease-in-out;
}
.scrollbar-wrapper { .scrollbar-wrapper {
overflow-x: hidden !important; overflow-x: hidden !important;
} }
@@ -67,23 +62,22 @@
.el-menu { .el-menu {
border: none; border: none;
height: 100%; height: 100%;
width: 100% !important;
} }
// menu hover // menu hover
.submenu-title-noDropdown, .el-menu-item,
.el-submenu__title { .el-sub-menu__title {
&:hover { &:hover {
background-color: v.$menuHover !important; background-color: v.$menuHover !important;
} }
} }
.is-active>.el-submenu__title { .is-active > .el-sub-menu__title {
color: v.$subMenuActiveText !important; color: v.$subMenuActiveText !important;
} }
& .nest-menu .el-submenu>.el-submenu__title, & .nest-menu .el-sub-menu > .el-sub-menu__title,
& .el-submenu .el-menu-item { & .el-sub-menu .el-menu-item {
min-width: v.$sideBarWidth !important; min-width: v.$sideBarWidth !important;
background-color: v.$subMenuBg !important; background-color: v.$subMenuBg !important;
@@ -93,61 +87,42 @@
} }
} }
// ===== 侧边栏收缩状态 =====
.hideSidebar { .hideSidebar {
.sidebar-container { .sidebar-container {
width: 54px !important; width: 54px !important;
max-width: 54px !important;
min-width: 54px !important;
} }
.main-container { .main-container {
margin-left: 54px; margin-left: 54px;
} }
.submenu-title-noDropdown { // Element Plus el-scrollbar 在收缩时也要限制宽度
padding: 0 !important; .sidebar-container .el-scrollbar {
position: relative; width: 54px !important;
max-width: 54px !important;
.el-tooltip {
padding: 0 !important;
.svg-icon {
margin-left: 20px;
}
}
}
.el-submenu {
overflow: hidden;
&>.el-submenu__title {
padding: 0 !important;
.svg-icon {
margin-left: 20px;
}
.el-submenu__icon-arrow {
display: none;
}
}
} }
// 通过 CSS 变量覆盖 Element Plus 默认的 64px 收缩宽度,并用 !important 强制 54px
.el-menu--collapse { .el-menu--collapse {
.el-submenu { --el-menu-icon-width: 24px;
&>.el-submenu__title { --el-menu-base-level-padding: 15px;
&>span { width: 54px !important;
height: 0; max-width: 54px !important;
width: 0;
overflow: hidden; overflow: hidden;
visibility: hidden;
display: inline-block;
}
}
}
}
} }
.el-menu--collapse .el-menu .el-submenu { // 覆盖 Element Plus 的 .el-menu .el-sub-menu { min-width: 200px },防止子菜单撑开收缩后的侧边栏
min-width: v.$sideBarWidth !important; .sidebar-container .el-sub-menu {
min-width: 54px !important;
}
// 收缩时图标居中,去掉右边距
.el-menu--collapse .svg-icon {
margin-right: 0;
}
} }
// mobile responsive // mobile responsive
@@ -180,7 +155,7 @@
} }
} }
// when menu collapsed // when menu collapsed, submenu popup styles
.el-menu--vertical { .el-menu--vertical {
& > .el-menu { & > .el-menu {
.svg-icon { .svg-icon {
@@ -188,10 +163,9 @@
} }
} }
.nest-menu .el-submenu>.el-submenu__title, .nest-menu .el-sub-menu > .el-sub-menu__title,
.el-menu-item { .el-menu-item {
&:hover { &:hover {
// you can use v.$subMenuHover
background-color: v.$menuHover !important; background-color: v.$menuHover !important;
} }
} }
+3 -5
View File
@@ -50,18 +50,16 @@
<el-card class="box"> <el-card class="box">
<template #header> <template #header>
<div class="clearfix"> <div class="clearfix">
<span>支持信息</span> <span>系统信息</span>
</div> </div>
</template> </template>
<div> <div>
<div class="title" style="padding-top: 0px">商业咨询</div>
<div style="display: flex;"> <div style="display: flex;">
<div style="flex-grow: 1;"> <div style="flex-grow: 1;">
<div>校园管藏图书数字化运维系统</div> <div>墨韵智枢</div>
<div>校园藏图书数字化运维系统</div> <div>校园藏图书数字化运维系统</div>
<div>校园管藏图书数字化运维系统</div>
</div> </div>
</div> </div>
@@ -18,7 +18,7 @@
</div> </div>
</div> </div>
<app-main /> <router-view />
</div> </div>
@@ -30,11 +30,10 @@
<script> <script>
import { mapGetters } from 'vuex' import { mapGetters } from 'vuex'
import AppMain from '@/layout/components/AppMain.vue'
export default { export default {
name: 'LoginLayout', name: 'LoginLayout',
components: { AppMain }, components: {},
computed: { computed: {
...mapGetters([ ...mapGetters([
'siteData' 'siteData'
@@ -1,5 +1,5 @@
<!-- <!--
@description 用户信息卡片组件展示头像昵称等个人资料摘要 @description 用户信息卡片组件展示头像昵称等个人资料摘要 效果不好 暂时删除
@author D吕贺034244311 @author D吕贺034244311
@date 20260620 @date 20260620
--> -->
@@ -13,10 +13,10 @@
<div class="user-profile"> <div class="user-profile">
<div class="box-center"> <div class="box-center">
<pan-thumb :image="user.avatar" :height="'100px'" :width="'100px'" :hoverable="false"> <!-- <pan-thumb :image="user.avatar" :height="'100px'" :width="'100px'" :hoverable="false">-->
<div>欢迎</div> <!-- <div>欢迎</div>-->
{{ user.role }} <!-- {{ user.role }}-->
</pan-thumb> <!-- </pan-thumb>-->
</div> </div>
<div class="box-center"> <div class="box-center">
<div class="user-name text-center">{{ user.name }}</div> <div class="user-name text-center">{{ user.name }}</div>
+5 -5
View File
@@ -8,11 +8,11 @@
<div v-if="user"> <div v-if="user">
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :span="6" :xs="24"> <!-- <el-col :span="6" :xs="24">-->
<user-card :user="user" /> <!-- <user-card :user="user" />-->
</el-col> <!-- </el-col>-->
<el-col :span="18" :xs="24"> <el-col :span="6" :xs="24">
<el-card> <el-card>
<el-tabs v-model="activeTab"> <el-tabs v-model="activeTab">
<el-tab-pane label="修改资料" name="account"> <el-tab-pane label="修改资料" name="account">
@@ -34,7 +34,7 @@ import Account from './components/Account.vue'
export default { export default {
name: 'Profile', name: 'Profile',
components: { UserCard, Account }, components: { Account },
data() { data() {
return { return {
user: {}, user: {},
-7
View File
@@ -14,7 +14,6 @@
@multi-actions="handleMultiAction" @multi-actions="handleMultiAction"
> >
<template #filter-content> <template #filter-content>
<el-input v-model="listQuery.params.id" style="width: 200px" placeholder="搜索公告编码" class="filter-item"/>
<el-input v-model="listQuery.params.title" style="width: 200px" placeholder="搜索公告标题" class="filter-item"/> <el-input v-model="listQuery.params.title" style="width: 200px" placeholder="搜索公告标题" class="filter-item"/>
<el-input v-model="listQuery.params.text" style="width: 200px" placeholder="搜索公告内容" class="filter-item" /> <el-input v-model="listQuery.params.text" style="width: 200px" placeholder="搜索公告内容" class="filter-item" />
<label>开始时间</label> <label>开始时间</label>
@@ -35,12 +34,6 @@
</template> </template>
<template #data-columns> <template #data-columns>
<el-table-column align="center" label="公告编号" prop="id">
<template #default="scope">
<a style="color: #1890ff" @click="handleUpdate(scope.row)">{{ scope.row.id }}</a>
</template>
</el-table-column>
<el-table-column align="center" label="公告标题" prop="title"/> <el-table-column align="center" label="公告标题" prop="title"/>
<el-table-column align="center" label="公告内容" prop="text"/> <el-table-column align="center" label="公告内容" prop="text"/>
@@ -14,7 +14,6 @@
@multi-actions="handleMultiAction" @multi-actions="handleMultiAction"
> >
<template #filter-content> <template #filter-content>
<el-input v-model="listQuery.params.id" style="width: 200px" placeholder="搜索留言编码" class="filter-item"/>
<el-input v-model="listQuery.params.itemname" style="width: 200px" placeholder="搜索发布人昵称" class="filter-item"/> <el-input v-model="listQuery.params.itemname" style="width: 200px" placeholder="搜索发布人昵称" class="filter-item"/>
<el-input v-model="listQuery.params.text" style="width: 200px" placeholder="搜索留言内容" class="filter-item" /> <el-input v-model="listQuery.params.text" style="width: 200px" placeholder="搜索留言内容" class="filter-item" />
<label>开始时间</label> <label>开始时间</label>
@@ -38,11 +37,6 @@
</template> </template>
<template #data-columns> <template #data-columns>
<el-table-column align="center" label="留言编号" prop="id">
<template #default="scope">
<a style="color: #1890ff" @click="handleUpdate(scope.row)">{{ scope.row.id }}</a>
</template>
</el-table-column>
<el-table-column align="center" label="留言人昵称" prop="itemname"/> <el-table-column align="center" label="留言人昵称" prop="itemname"/>
<el-table-column align="center" label="留言内容" prop="text"/> <el-table-column align="center" label="留言内容" prop="text"/>