├── .gitignore ├── README.md ├── SpringBoot ├── pom.xml └── src │ └── main │ ├── java │ └── com │ │ └── example │ │ └── demo │ │ ├── DemoApplication.java │ │ ├── LoginUser.java │ │ └── controller │ │ ├── BookController.java │ │ ├── BookWithUserController.java │ │ ├── DashboardController.java │ │ ├── LendRecordController.java │ │ ├── LendRecordController1.java │ │ └── UserController.java │ └── resources │ └── application.properties ├── images ├── add_book.png ├── application.png ├── book.png ├── book_information.png ├── book_search.png ├── book_status2.png ├── dashboard.png ├── delete_book.png ├── edit_book.png ├── lendbook.png ├── lendbook_2.png ├── lendrecord.png ├── lendrecord_edit.png ├── lendstatus.png ├── login.png ├── person_edit.png ├── person_password.png ├── qq.svg ├── reader.png ├── returnbook.png ├── sql.png ├── ui.png └── weChat.svg ├── package-lock.json ├── package.json ├── run ├── demo-0.0.1-SNAPSHOT.jar.original └── start.cmd └── vue ├── babel.config.js ├── dist ├── css │ ├── app.90e92dc6.css │ ├── chunk-0ef1ccea.91552112.css │ ├── chunk-1d2b6d9d.750ab8fd.css │ ├── chunk-1e6a6472.a9697564.css │ ├── chunk-752ac4fb.e53c3c2c.css │ └── chunk-vendors.041c0013.css ├── favicon.ico ├── img │ ├── bg2.dd39329b.svg │ └── login.81e3ef50.png ├── index.html └── js │ ├── app.3d87220e.js │ ├── app.3d87220e.js.map │ ├── chunk-0be195b0.11a9a989.js │ ├── chunk-0be195b0.11a9a989.js.map │ ├── chunk-0ef1ccea.8151085a.js │ ├── chunk-0ef1ccea.8151085a.js.map │ ├── chunk-1d2b6d9d.13081618.js │ ├── chunk-1d2b6d9d.13081618.js.map │ ├── chunk-1e6a6472.ed80c125.js │ ├── chunk-1e6a6472.ed80c125.js.map │ ├── chunk-25f25a31.25ed3d91.js │ ├── chunk-25f25a31.25ed3d91.js.map │ ├── chunk-2d0c0df2.9b822a3f.js │ ├── chunk-2d0c0df2.9b822a3f.js.map │ ├── chunk-2d0c1074.8dbc50ec.js │ ├── chunk-2d0c1074.8dbc50ec.js.map │ ├── chunk-33419c76.697ed836.js │ ├── chunk-33419c76.697ed836.js.map │ ├── chunk-6cd47659.348c5279.js │ ├── chunk-6cd47659.348c5279.js.map │ ├── chunk-6fecba8e.e1b4f3ca.js │ ├── chunk-6fecba8e.e1b4f3ca.js.map │ ├── chunk-752ac4fb.b6d0ae67.js │ ├── chunk-752ac4fb.b6d0ae67.js.map │ ├── chunk-vendors.c2943193.js │ └── chunk-vendors.c2943193.js.map ├── package-lock.json ├── package.json ├── src ├── App.vue ├── assets │ ├── css │ │ ├── global.css │ │ └── style.css │ ├── icon │ │ ├── iconfont.css │ │ ├── iconfont.js │ │ └── login.png │ └── logo.png ├── components │ ├── Aside.vue │ ├── Header.vue │ └── Validate.vue ├── img │ └── bg2.svg ├── layout │ └── Layout.vue ├── main.js ├── store │ └── index.js ├── utils │ └── request.js └── views │ ├── Book.vue │ ├── BookWithUser.vue │ ├── Dashboard.vue │ ├── LendRecord.vue │ ├── Login.vue │ ├── Password.vue │ ├── Person.vue │ ├── Register.vue │ └── User.vue └── vue.config.js /.gitignore: -------------------------------------------------------------------------------- 1 | # basic 2 | *.class 3 | *.log 4 | target/ 5 | .classpath 6 | .project 7 | .settings 8 | 9 | # idea 10 | node_modules/ 11 | *.iml 12 | .idea/ 13 | *.ipr 14 | *.iws 15 | 16 | # Generated files 17 | bin/ 18 | gen/ 19 | 20 | # Package Files # 21 | *.jar 22 | *.war 23 | *.nar 24 | *.ear 25 | *.zip 26 | *.tar.gz 27 | *.rar 28 | 29 | # BlueJ files 30 | *.ctxt 31 | 32 | # Mobile Tools for Java (J2ME) 33 | .mtj.tmp/ 34 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | **完整代码收费 + 316595344 或 lz316595344 咨询** 2 | 3 | **接毕业设计和论文** 4 | 5 | **如果图片加载不出来可以去博客看 https://blog.csdn.net/qq_56450993/article/details/133581733** 6 | 7 | **毕业设计所有选题地址** 8 | 9 | **[github]👉https://github.com/XinChennn/allProjects** 10 | 11 | **[忻辰的个人博客]👉https://www.ixinjiu.cn/articles/156** 12 | 13 | 14 | # 图书馆管理系统(library-system) 15 | 16 | ## 本地快捷预览项目 17 | 18 | 第一步:运行 db 文件夹下的`springboot-vue.sql`(询问作者获取),创建`springboot-vue`数据库 19 | 20 | 第二步:修改后端数据库配置文件,启动后端 21 | 22 | 第三步:vue目录下:在cmd运行npm install,npm run serve ,浏览器访问`localhost:9876` 23 | 24 | 25 | 26 | ## 主要技术 27 | 28 | SpringBoot、Mybatis-Plus、MySQL、Vue3、ElementPlus等 29 | 30 | 31 | 32 | ## 主要功能 33 | 34 | 管理员模块:注册、登录、书籍管理、读者管理、借阅管理、借阅状态、修改个人信息、修改密码 35 | 36 | 读者模块:注册、登录、查询图书信息、借阅和归还图书、查看个人借阅记录、修改个人信息、修改密码 37 | 38 | 39 | 40 | ## 主要功能截图 41 | 42 | ### 登录 43 | 44 | 登录支持两种用户角色:管理员和读者 45 | 46 | 输入正确的账号、密码后,系统会自动识别管理员或者用户,并跳转到相应主页。 47 | 48 | 49 | 50 | ![](images/login.png) 51 | 52 | 53 | 54 | ### 展示板页面 55 | 56 | ![dashboard](images/dashboard.png) 57 | 58 | ### 管理员界面 59 | 60 | #### 图书管理 61 | 62 | - 图书表格列表 63 | 64 | ![book](images/book.png) 65 | 66 | - 添加图书 67 | 68 | ![add_book](images/add_book.png) 69 | 70 | - 编辑图书 71 | 72 | ![edit_book](images/edit_book.png) 73 | 74 | - 删除图书 75 | 76 | ![delete_book](images/delete_book.png) 77 | 78 | 79 | 80 | 81 | 82 | #### 读者管理 83 | 84 | - 读者管理的增删查改类似图书管理,不再赘述 85 | 86 | ![](images/reader.png) 87 | 88 | 89 | 90 | #### 借阅管理 91 | 92 | - 借阅记录查询 93 | 94 | ![](images/lendrecord.png) 95 | 96 | - 借阅记录编辑 97 | 98 | ![lendrecord_edit](images/lendrecord_edit.png) 99 | 100 | #### 借阅状态 101 | 102 | ![lendstatus](images/lendstatus.png) 103 | 104 | 105 | 106 | ### 读者界面 107 | 108 | #### 读者信息 109 | 110 | - 编辑个人信息 111 | 112 | ![](images/person_edit.png) 113 | 114 | - 修改密码 115 | 116 | 点击修改密码按钮,修改密码 117 | 118 | ![](images/person_password.png) 119 | 120 | 121 | 122 | #### 图书查询 123 | 124 | ![](images/book_search.png) 125 | 126 | #### 借阅图书 127 | 128 | ![](images/lendbook.png) 129 | 130 | ![](images/lendbook_2.png) 131 | 132 | #### 归还图书 133 | 134 | ![](images/returnbook.png) 135 | 136 | #### 借阅记录 137 | 138 | ![](images/book_information.png) 139 | 140 | #### 借阅状态 141 | 142 | ![book_status2](images/book_status2.png) 143 | 144 | 145 | 146 | ## 代码结构 147 | 148 | ### 前端 149 | 150 | ```shell 151 | library-ui 152 | ├─api // api接口 153 | ├─assets // 资源文件 154 | │ ├─icon // 图标 155 | │ ├─img // 图片 156 | │ └─styles // 样式 157 | ├─components // 自定义Vue组件 158 | ├─layout // 页面布局 159 | ├─router // Vue路由 160 | ├─utils // 工具函数 161 | └─views // 页面 162 | ``` 163 | 164 | ![](images/ui.png) 165 | 166 | 167 | 168 | ### 后端 169 | 170 | maven项目结构 171 | 172 | ```shell 173 | library-serve 174 | ├─java 175 | │ └─com 176 | │ └─admin 177 | │ └─library 178 | │ ├─common // 通用类 179 | │ │ ├─base // 基础类 180 | │ │ └─config // 配置类 181 | │ ├─controller // 控制层 182 | │ ├─domain // 实体类 183 | │ ├─mapper // 持久层 184 | │ └─service // 业务层 185 | └─resources // maven资源配置 186 | ``` 187 | 188 | ![](images/application.png) 189 | 190 | 191 | 192 | ## 数据库 193 | 194 | **使用Navicat生成ER模型图** 195 | 196 | ![](images/sql.png) 197 | 198 | **完整代码 + 316595344 或 lz316595344 咨询** 199 | 200 | **接毕业设计和论文** -------------------------------------------------------------------------------- /SpringBoot/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 4.0.0 5 | 6 | org.springframework.boot 7 | spring-boot-starter-parent 8 | 2.6.1 9 | 10 | 11 | com.example 12 | demo 13 | 0.0.1-SNAPSHOT 14 | demo 15 | Demo project for Spring Boot 16 | 17 | 1.8 18 | 19 | 20 | 21 | org.springframework.boot 22 | spring-boot-starter-web 23 | 24 | 25 | org.mybatis.spring.boot 26 | mybatis-spring-boot-starter 27 | 2.2.0 28 | 29 | 30 | 31 | mysql 32 | mysql-connector-java 33 | runtime 34 | 35 | 36 | org.projectlombok 37 | lombok 38 | true 39 | 40 | 41 | org.springframework.boot 42 | spring-boot-starter-test 43 | test 44 | 45 | 46 | com.baomidou 47 | mybatis-plus-boot-starter 48 | 3.4.3.1 49 | 50 | 51 | cn.hutool 52 | hutool-all 53 | 5.7.16 54 | 55 | 56 | com.fasterxml.jackson.core 57 | jackson-core 58 | 2.11.4 59 | 60 | 61 | com.fasterxml.jackson.core 62 | jackson-databind 63 | 2.11.4 64 | 65 | 66 | 67 | com.auth0 68 | java-jwt 69 | 3.18.2 70 | 71 | 72 | 73 | 74 | 75 | 76 | org.springframework.boot 77 | spring-boot-maven-plugin 78 | 2.6.1 79 | 80 | 81 | 82 | org.projectlombok 83 | lombok 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | -------------------------------------------------------------------------------- /SpringBoot/src/main/java/com/example/demo/DemoApplication.java: -------------------------------------------------------------------------------- 1 | package com.example.demo; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | 6 | @SpringBootApplication 7 | public class DemoApplication { 8 | 9 | public static void main(String[] args) { 10 | SpringApplication.run(DemoApplication.class, args); 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /SpringBoot/src/main/java/com/example/demo/LoginUser.java: -------------------------------------------------------------------------------- 1 | package com.example.demo; 2 | public class LoginUser { 3 | private static int visitCount = 0; 4 | public static void addVisitCount() { 5 | LoginUser.visitCount++; 6 | } 7 | 8 | public static int getVisitCount() { 9 | return LoginUser.visitCount; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /SpringBoot/src/main/java/com/example/demo/controller/BookController.java: -------------------------------------------------------------------------------- 1 | package com.example.demo.controller; 2 | 3 | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 4 | import com.baomidou.mybatisplus.core.toolkit.StringUtils; 5 | import com.baomidou.mybatisplus.core.toolkit.Wrappers; 6 | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 7 | import com.example.demo.commom.Result; 8 | import com.example.demo.entity.Book; 9 | import com.example.demo.mapper.BookMapper; 10 | import org.springframework.web.bind.annotation.*; 11 | 12 | import javax.annotation.Resource; 13 | import java.util.List; 14 | 15 | @RestController 16 | @RequestMapping("/book") 17 | public class BookController { 18 | @Resource 19 | BookMapper BookMapper; 20 | 21 | @PostMapping 22 | public Result save(@RequestBody Book Book){ 23 | BookMapper.insert(Book); 24 | return Result.success(); 25 | } 26 | @PutMapping 27 | public Result update(@RequestBody Book Book){ 28 | BookMapper.updateById(Book); 29 | return Result.success(); 30 | } 31 | 32 | // 批量删除 33 | @PostMapping("/deleteBatch") 34 | public Result deleteBatch(@RequestBody List ids){ 35 | BookMapper.deleteBatchIds(ids); 36 | return Result.success(); 37 | } 38 | @DeleteMapping("/{id}") 39 | public Result delete(@PathVariable Long id){ 40 | BookMapper.deleteById(id); 41 | return Result.success(); 42 | } 43 | @GetMapping 44 | public Result findPage(@RequestParam(defaultValue = "1") Integer pageNum, 45 | @RequestParam(defaultValue = "10") Integer pageSize, 46 | @RequestParam(defaultValue = "") String search1, 47 | @RequestParam(defaultValue = "") String search2, 48 | @RequestParam(defaultValue = "") String search3){ 49 | LambdaQueryWrapper wrappers = Wrappers.lambdaQuery(); 50 | if(StringUtils.isNotBlank(search1)){ 51 | wrappers.like(Book::getIsbn,search1); 52 | } 53 | if(StringUtils.isNotBlank(search2)){ 54 | wrappers.like(Book::getName,search2); 55 | } 56 | if(StringUtils.isNotBlank(search3)){ 57 | wrappers.like(Book::getAuthor,search3); 58 | } 59 | Page BookPage =BookMapper.selectPage(new Page<>(pageNum,pageSize), wrappers); 60 | return Result.success(BookPage); 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /SpringBoot/src/main/java/com/example/demo/controller/BookWithUserController.java: -------------------------------------------------------------------------------- 1 | package com.example.demo.controller; 2 | 3 | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 4 | import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; 5 | import com.baomidou.mybatisplus.core.toolkit.StringUtils; 6 | import com.baomidou.mybatisplus.core.toolkit.Wrappers; 7 | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 8 | import com.example.demo.commom.Result; 9 | import com.example.demo.entity.BookWithUser; 10 | import com.example.demo.entity.BookWithUser; 11 | import com.example.demo.mapper.BookWithUserMapper; 12 | import org.springframework.web.bind.annotation.*; 13 | 14 | import javax.annotation.Resource; 15 | import java.util.HashMap; 16 | import java.util.List; 17 | import java.util.Map; 18 | 19 | @RestController 20 | @RequestMapping("/bookwithuser") 21 | public class BookWithUserController { 22 | @Resource 23 | BookWithUserMapper BookWithUserMapper; 24 | // 25 | // @PostMapping 26 | // public Result save(@RequestBody Book Book){ 27 | // BookMapper.insert(Book); 28 | // return Result.success(); 29 | // } 30 | 31 | // // 批量删除 32 | // @PostMapping("/deleteBatch") 33 | // public Result deleteBatch(@RequestBody List ids){ 34 | // BookMapper.deleteBatchIds(ids); 35 | // return Result.success(); 36 | // } 37 | // @PutMapping 38 | // public Result update(@RequestBody Book Book){ 39 | // BookMapper.updateById(Book); 40 | // return Result.success(); 41 | // } 42 | // @DeleteMapping("/{id}") 43 | // public Result delete(@PathVariable Long id){ 44 | // BookMapper.deleteById(id); 45 | // return Result.success(); 46 | // } 47 | @PostMapping("/insertNew") 48 | public Result insertNew(@RequestBody BookWithUser BookWithUser){ 49 | BookWithUserMapper.insert(BookWithUser); 50 | return Result.success(); 51 | } 52 | @PostMapping 53 | public Result update(@RequestBody BookWithUser BookWithUser){ 54 | UpdateWrapper updateWrapper = new UpdateWrapper<>(); 55 | updateWrapper.eq("isbn",BookWithUser.getIsbn()).eq("id",BookWithUser.getId()); 56 | BookWithUserMapper.update(BookWithUser, updateWrapper); 57 | return Result.success(); 58 | } 59 | //删除一条记录 60 | @PostMapping("/deleteRecord") 61 | public Result deleteRecord(@RequestBody BookWithUser BookWithUser){ 62 | Map map = new HashMap<>(); 63 | map.put("isbn",BookWithUser.getIsbn()); 64 | map.put("id",BookWithUser.getId()); 65 | BookWithUserMapper.deleteByMap(map); 66 | return Result.success(); 67 | } 68 | 69 | @PostMapping("/deleteRecords") 70 | public Result deleteRecords(@RequestBody List BookWithUsers){ 71 | int len = BookWithUsers.size(); 72 | for(int i=0;i map = new HashMap<>(); 75 | map.put("isbn",curRecord.getIsbn()); 76 | map.put("id",curRecord.getId()); 77 | BookWithUserMapper.deleteByMap(map); 78 | } 79 | return Result.success(); 80 | } 81 | @GetMapping 82 | public Result findPage(@RequestParam(defaultValue = "1") Integer pageNum, 83 | @RequestParam(defaultValue = "10") Integer pageSize, 84 | @RequestParam(defaultValue = "") String search1, 85 | @RequestParam(defaultValue = "") String search2, 86 | @RequestParam(defaultValue = "") String search3){ 87 | LambdaQueryWrapper wrappers = Wrappers.lambdaQuery(); 88 | if(StringUtils.isNotBlank(search1)){ 89 | wrappers.like(BookWithUser::getIsbn,search1); 90 | } 91 | if(StringUtils.isNotBlank(search2)){ 92 | wrappers.like(BookWithUser::getBookName,search2); 93 | } 94 | if(StringUtils.isNotBlank(search3)){ 95 | wrappers.like(BookWithUser::getId,search3); 96 | } 97 | Page BookPage =BookWithUserMapper.selectPage(new Page<>(pageNum,pageSize), wrappers); 98 | return Result.success(BookPage); 99 | } 100 | } 101 | -------------------------------------------------------------------------------- /SpringBoot/src/main/java/com/example/demo/controller/DashboardController.java: -------------------------------------------------------------------------------- 1 | package com.example.demo.controller; 2 | 3 | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 4 | import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; 5 | import com.example.demo.LoginUser; 6 | import com.example.demo.commom.Result; 7 | import com.example.demo.entity.Book; 8 | import com.example.demo.entity.LendRecord; 9 | import com.example.demo.entity.User; 10 | import com.example.demo.mapper.BookMapper; 11 | import com.example.demo.mapper.LendRecordMapper; 12 | import com.example.demo.mapper.UserMapper; 13 | 14 | import org.springframework.web.bind.annotation.*; 15 | 16 | import javax.annotation.Resource; 17 | import java.util.HashMap; 18 | import java.util.Map; 19 | 20 | @RestController 21 | @RequestMapping("/dashboard") 22 | public class DashboardController { 23 | @Resource 24 | private UserMapper userMapper; 25 | @Resource 26 | private LendRecordMapper lendRecordMapper; 27 | @Resource 28 | private BookMapper bookMapper; 29 | @GetMapping 30 | public Result dashboardrecords(){ 31 | int visitCount = LoginUser.getVisitCount(); 32 | QueryWrapper queryWrapper1=new QueryWrapper(); 33 | int userCount = userMapper.selectCount(queryWrapper1); 34 | QueryWrapper queryWrapper2=new QueryWrapper(); 35 | int lendRecordCount = lendRecordMapper.selectCount(queryWrapper2); 36 | QueryWrapper queryWrapper3=new QueryWrapper(); 37 | int bookCount = bookMapper.selectCount(queryWrapper3); 38 | Map map = new HashMap<>();//键值对形式 39 | map.put("visitCount", visitCount);//放置visitCount到map中 40 | map.put("userCount", userCount); 41 | map.put("lendRecordCount", lendRecordCount); 42 | map.put("bookCount", bookCount); 43 | return Result.success(map); 44 | } 45 | 46 | 47 | 48 | } 49 | -------------------------------------------------------------------------------- /SpringBoot/src/main/java/com/example/demo/controller/LendRecordController.java: -------------------------------------------------------------------------------- 1 | package com.example.demo.controller; 2 | 3 | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 4 | import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; 5 | import com.baomidou.mybatisplus.core.toolkit.StringUtils; 6 | import com.baomidou.mybatisplus.core.toolkit.Wrappers; 7 | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 8 | import com.example.demo.commom.Result; 9 | import com.example.demo.entity.Book; 10 | import com.example.demo.entity.LendRecord; 11 | import com.example.demo.entity.LendRecord; 12 | import com.example.demo.entity.LendRecord; 13 | import com.example.demo.mapper.LendRecordMapper; 14 | import org.springframework.web.bind.annotation.*; 15 | 16 | import javax.annotation.Resource; 17 | import java.util.Date; 18 | import java.util.HashMap; 19 | import java.util.List; 20 | import java.util.Map; 21 | 22 | @RestController 23 | @RequestMapping("/LendRecord") 24 | public class LendRecordController { 25 | @Resource 26 | LendRecordMapper LendRecordMapper; 27 | 28 | @DeleteMapping("/{isbn}") 29 | public Result delete(@PathVariable String isbn){ 30 | Map map = new HashMap<>(); 31 | map.put("isbn",isbn); 32 | LendRecordMapper.deleteByMap(map); 33 | return Result.success(); 34 | } 35 | //删除一条记录 36 | @PostMapping("/deleteRecord") 37 | public Result deleteRecord(@RequestBody LendRecord LendRecord){ 38 | Map map = new HashMap<>(); 39 | map.put("isbn",LendRecord.getIsbn()); 40 | map.put("borrownum",LendRecord.getBorrownum()); 41 | LendRecordMapper.deleteByMap(map); 42 | return Result.success(); 43 | } 44 | @PostMapping("/deleteRecords") 45 | public Result deleteRecords(@RequestBody List LendRecords){ 46 | int len = LendRecords.size(); 47 | for(int i=0;i map = new HashMap<>(); 50 | map.put("isbn",curRecord.getIsbn()); 51 | map.put("borrownum",curRecord.getBorrownum()); 52 | LendRecordMapper.deleteByMap(map); 53 | } 54 | return Result.success(); 55 | } 56 | @PostMapping 57 | public Result save(@RequestBody LendRecord LendRecord){ 58 | LendRecordMapper.insert(LendRecord); 59 | return Result.success(); 60 | } 61 | @GetMapping 62 | public Result findPage(@RequestParam(defaultValue = "1") Integer pageNum, 63 | @RequestParam(defaultValue = "10") Integer pageSize, 64 | @RequestParam(defaultValue = "") String search1, 65 | @RequestParam(defaultValue = "") String search2, 66 | @RequestParam(defaultValue = "") String search3){ 67 | LambdaQueryWrapper wrappers = Wrappers.lambdaQuery(); 68 | if(StringUtils.isNotBlank(search1)){ 69 | wrappers.like(LendRecord::getIsbn,search1); 70 | } 71 | if(StringUtils.isNotBlank(search2)){ 72 | wrappers.like(LendRecord::getBookname,search2); 73 | } 74 | if(StringUtils.isNotBlank(search3)){ 75 | wrappers.like(LendRecord::getReaderId,search3); 76 | } 77 | Page LendRecordPage =LendRecordMapper.selectPage(new Page<>(pageNum,pageSize), wrappers); 78 | return Result.success(LendRecordPage); 79 | } 80 | 81 | @PutMapping("/{isbn}") 82 | public Result update(@PathVariable String isbn,@RequestBody LendRecord lendRecord){ 83 | UpdateWrapper updateWrapper = new UpdateWrapper<>(); 84 | updateWrapper.eq("isbn",isbn); 85 | LendRecord lendrecord = new LendRecord(); 86 | lendrecord.setLendTime(lendRecord.getLendTime()); 87 | lendrecord.setReturnTime(lendRecord.getReturnTime()); 88 | lendrecord.setStatus(lendRecord.getStatus()); 89 | LendRecordMapper.update(lendrecord, updateWrapper); 90 | return Result.success(); 91 | } 92 | @PutMapping("/{lendTime}") 93 | public Result update2(@PathVariable Date lendTime, @RequestBody LendRecord lendRecord){ 94 | UpdateWrapper updateWrapper = new UpdateWrapper<>(); 95 | updateWrapper.eq("lendTime",lendTime); 96 | LendRecord lendrecord = new LendRecord(); 97 | lendrecord.setReturnTime(lendRecord.getReturnTime()); 98 | lendrecord.setStatus(lendRecord.getStatus()); 99 | LendRecordMapper.update(lendrecord, updateWrapper); 100 | return Result.success(); 101 | } 102 | 103 | } 104 | -------------------------------------------------------------------------------- /SpringBoot/src/main/java/com/example/demo/controller/LendRecordController1.java: -------------------------------------------------------------------------------- 1 | package com.example.demo.controller; 2 | 3 | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 4 | import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; 5 | import com.baomidou.mybatisplus.core.toolkit.StringUtils; 6 | import com.baomidou.mybatisplus.core.toolkit.Wrappers; 7 | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 8 | import com.example.demo.commom.Result; 9 | import com.example.demo.entity.LendRecord; 10 | import com.example.demo.mapper.LendRecordMapper; 11 | import org.springframework.web.bind.annotation.*; 12 | 13 | import javax.annotation.Resource; 14 | import java.util.Date; 15 | import java.util.HashMap; 16 | import java.util.Map; 17 | 18 | @RestController 19 | @RequestMapping("/LendRecord1") 20 | public class LendRecordController1 { 21 | @Resource 22 | LendRecordMapper LendRecordMapper; 23 | @PutMapping 24 | public Result update2( @RequestBody LendRecord lendRecord){ 25 | UpdateWrapper updateWrapper = new UpdateWrapper<>(); 26 | updateWrapper.eq("isbn",lendRecord.getIsbn()).eq("reader_id",lendRecord.getReaderId()).eq("borrownum",lendRecord.getBorrownum()); 27 | LendRecord lendrecord = new LendRecord(); 28 | lendrecord.setReturnTime(lendRecord.getReturnTime()); 29 | lendrecord.setStatus(lendRecord.getStatus()); 30 | LendRecordMapper.update(lendrecord, updateWrapper); 31 | return Result.success(); 32 | } 33 | 34 | 35 | 36 | } 37 | -------------------------------------------------------------------------------- /SpringBoot/src/main/java/com/example/demo/controller/UserController.java: -------------------------------------------------------------------------------- 1 | package com.example.demo.controller; 2 | 3 | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 4 | import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; 5 | import com.baomidou.mybatisplus.core.toolkit.Constants; 6 | import com.baomidou.mybatisplus.core.toolkit.StringUtils; 7 | import com.baomidou.mybatisplus.core.toolkit.Wrappers; 8 | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 9 | import com.example.demo.LoginUser; 10 | import com.example.demo.commom.Result; 11 | import com.example.demo.entity.BookWithUser; 12 | import com.example.demo.entity.User; 13 | import com.example.demo.mapper.UserMapper; 14 | import org.apache.ibatis.annotations.Param; 15 | import org.apache.ibatis.jdbc.Null; 16 | import org.springframework.web.bind.annotation.*; 17 | import com.example.demo.utils.TokenUtils; 18 | 19 | 20 | import javax.annotation.Resource; 21 | import java.util.List; 22 | import java.util.Map; 23 | 24 | 25 | @RestController 26 | @RequestMapping("/user") 27 | public class UserController { 28 | @Resource 29 | UserMapper userMapper; 30 | @PostMapping("/register") 31 | public Result register(@RequestBody User user){ 32 | User res = userMapper.selectOne(Wrappers.lambdaQuery().eq(User::getUsername,user.getUsername())); 33 | if(res != null) 34 | { 35 | return Result.error("-1","用户名已重复"); 36 | } 37 | userMapper.insert(user); 38 | return Result.success(); 39 | } 40 | @CrossOrigin 41 | @PostMapping("/login") 42 | public Result login(@RequestBody User user){ 43 | User res = userMapper.selectOne(Wrappers.lambdaQuery().eq(User::getUsername,user.getUsername()).eq(User::getPassword,user.getPassword())); 44 | if(res == null) 45 | { 46 | return Result.error("-1","用户名或密码错误"); 47 | } 48 | String token = TokenUtils.genToken(res); 49 | res.setToken(token); 50 | LoginUser loginuser = new LoginUser(); 51 | loginuser.addVisitCount(); 52 | return Result.success(res); 53 | } 54 | @PostMapping 55 | public Result save(@RequestBody User user){ 56 | if(user.getPassword() == null){ 57 | user.setPassword("abc123456"); 58 | } 59 | userMapper.insert(user); 60 | return Result.success(); 61 | } 62 | @PutMapping("/password") 63 | public Result update( @RequestParam Integer id, 64 | @RequestParam String password2){ 65 | UpdateWrapper updateWrapper = new UpdateWrapper<>(); 66 | updateWrapper.eq("id",id); 67 | User user = new User(); 68 | user.setPassword(password2); 69 | userMapper.update(user,updateWrapper); 70 | return Result.success(); 71 | } 72 | @PutMapping 73 | public Result password(@RequestBody User user){ 74 | userMapper.updateById(user); 75 | return Result.success(); 76 | } 77 | @PostMapping("/deleteBatch") 78 | public Result deleteBatch(@RequestBody List ids){ 79 | userMapper.deleteBatchIds(ids); 80 | return Result.success(); 81 | } 82 | @DeleteMapping("/{id}") 83 | public Result delete(@PathVariable Long id){ 84 | userMapper.deleteById(id); 85 | return Result.success(); 86 | } 87 | @GetMapping 88 | public Result findPage(@RequestParam(defaultValue = "1") Integer pageNum, 89 | @RequestParam(defaultValue = "10") Integer pageSize, 90 | @RequestParam(defaultValue = "") String search){ 91 | LambdaQueryWrapper wrappers = Wrappers.lambdaQuery(); 92 | if(StringUtils.isNotBlank(search)){ 93 | wrappers.like(User::getNickName,search); 94 | } 95 | wrappers.like(User::getRole,2); 96 | Page userPage =userMapper.selectPage(new Page<>(pageNum,pageSize), wrappers); 97 | return Result.success(userPage); 98 | } 99 | @GetMapping("/usersearch") 100 | public Result findPage2(@RequestParam(defaultValue = "1") Integer pageNum, 101 | @RequestParam(defaultValue = "10") Integer pageSize, 102 | @RequestParam(defaultValue = "") String search1, 103 | @RequestParam(defaultValue = "") String search2, 104 | @RequestParam(defaultValue = "") String search3, 105 | @RequestParam(defaultValue = "") String search4){ 106 | LambdaQueryWrapper wrappers = Wrappers.lambdaQuery(); 107 | if(StringUtils.isNotBlank(search1)){ 108 | wrappers.like(User::getId,search1); 109 | } 110 | if(StringUtils.isNotBlank(search2)){ 111 | wrappers.like(User::getNickName,search2); 112 | } 113 | if(StringUtils.isNotBlank(search3)){ 114 | wrappers.like(User::getPhone,search3); 115 | } 116 | if(StringUtils.isNotBlank(search4)){ 117 | wrappers.like(User::getAddress,search4); 118 | } 119 | wrappers.like(User::getRole,2); 120 | Page userPage =userMapper.selectPage(new Page<>(pageNum,pageSize), wrappers); 121 | return Result.success(userPage); 122 | } 123 | } 124 | -------------------------------------------------------------------------------- /SpringBoot/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | server.port=9090 2 | spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver 3 | #spring.datasource.url=jdbc:mysql://localhost:3306/springboot-vue?useUnicode=true&characterEncoding=utf-8 4 | spring.datasource.url=jdbc:mysql://localhost:3306/springboot-vue?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false&serverTimezone=GMT%2b8 5 | spring.datasource.username=root 6 | spring.datasource.password=123456 7 | mybatis-plus.configuration.map-underscore-to-camel-case = true 8 | -------------------------------------------------------------------------------- /images/add_book.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XinChennn/xc016-library-system/f078e3c8157b09f9a1bffb74982327aaf2b0ba20/images/add_book.png -------------------------------------------------------------------------------- /images/application.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XinChennn/xc016-library-system/f078e3c8157b09f9a1bffb74982327aaf2b0ba20/images/application.png -------------------------------------------------------------------------------- /images/book.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XinChennn/xc016-library-system/f078e3c8157b09f9a1bffb74982327aaf2b0ba20/images/book.png -------------------------------------------------------------------------------- /images/book_information.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XinChennn/xc016-library-system/f078e3c8157b09f9a1bffb74982327aaf2b0ba20/images/book_information.png -------------------------------------------------------------------------------- /images/book_search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XinChennn/xc016-library-system/f078e3c8157b09f9a1bffb74982327aaf2b0ba20/images/book_search.png -------------------------------------------------------------------------------- /images/book_status2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XinChennn/xc016-library-system/f078e3c8157b09f9a1bffb74982327aaf2b0ba20/images/book_status2.png -------------------------------------------------------------------------------- /images/dashboard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XinChennn/xc016-library-system/f078e3c8157b09f9a1bffb74982327aaf2b0ba20/images/dashboard.png -------------------------------------------------------------------------------- /images/delete_book.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XinChennn/xc016-library-system/f078e3c8157b09f9a1bffb74982327aaf2b0ba20/images/delete_book.png -------------------------------------------------------------------------------- /images/edit_book.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XinChennn/xc016-library-system/f078e3c8157b09f9a1bffb74982327aaf2b0ba20/images/edit_book.png -------------------------------------------------------------------------------- /images/lendbook.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XinChennn/xc016-library-system/f078e3c8157b09f9a1bffb74982327aaf2b0ba20/images/lendbook.png -------------------------------------------------------------------------------- /images/lendbook_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XinChennn/xc016-library-system/f078e3c8157b09f9a1bffb74982327aaf2b0ba20/images/lendbook_2.png -------------------------------------------------------------------------------- /images/lendrecord.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XinChennn/xc016-library-system/f078e3c8157b09f9a1bffb74982327aaf2b0ba20/images/lendrecord.png -------------------------------------------------------------------------------- /images/lendrecord_edit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XinChennn/xc016-library-system/f078e3c8157b09f9a1bffb74982327aaf2b0ba20/images/lendrecord_edit.png -------------------------------------------------------------------------------- /images/lendstatus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XinChennn/xc016-library-system/f078e3c8157b09f9a1bffb74982327aaf2b0ba20/images/lendstatus.png -------------------------------------------------------------------------------- /images/login.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XinChennn/xc016-library-system/f078e3c8157b09f9a1bffb74982327aaf2b0ba20/images/login.png -------------------------------------------------------------------------------- /images/person_edit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XinChennn/xc016-library-system/f078e3c8157b09f9a1bffb74982327aaf2b0ba20/images/person_edit.png -------------------------------------------------------------------------------- /images/person_password.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XinChennn/xc016-library-system/f078e3c8157b09f9a1bffb74982327aaf2b0ba20/images/person_password.png -------------------------------------------------------------------------------- /images/qq.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /images/reader.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XinChennn/xc016-library-system/f078e3c8157b09f9a1bffb74982327aaf2b0ba20/images/reader.png -------------------------------------------------------------------------------- /images/returnbook.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XinChennn/xc016-library-system/f078e3c8157b09f9a1bffb74982327aaf2b0ba20/images/returnbook.png -------------------------------------------------------------------------------- /images/sql.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XinChennn/xc016-library-system/f078e3c8157b09f9a1bffb74982327aaf2b0ba20/images/sql.png -------------------------------------------------------------------------------- /images/ui.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XinChennn/xc016-library-system/f078e3c8157b09f9a1bffb74982327aaf2b0ba20/images/ui.png -------------------------------------------------------------------------------- /images/weChat.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "xc016-Vue-Springboot-Library", 3 | "lockfileVersion": 2, 4 | "requires": true, 5 | "packages": { 6 | "": { 7 | "dependencies": { 8 | "echarts": "^5.2.2", 9 | "element-plus": "^1.2.0-beta.4", 10 | "moment": "^2.29.1" 11 | } 12 | }, 13 | "node_modules/@element-plus/icons": { 14 | "version": "0.0.11", 15 | "resolved": "https://registry.npmmirror.com/@element-plus/icons/download/@element-plus/icons-0.0.11.tgz", 16 | "integrity": "sha512-iKQXSxXu131Ai+I9Ymtcof9WId7kaXvB1+WRfAfpQCW7UiAMYgdNDqb/u0hgTo2Yq3MwC4MWJnNuTBEpG8r7+A==", 17 | "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info." 18 | }, 19 | "node_modules/@popperjs/core": { 20 | "version": "2.11.0", 21 | "resolved": "https://registry.npmmirror.com/@popperjs/core/download/@popperjs/core-2.11.0.tgz", 22 | "integrity": "sha512-zrsUxjLOKAzdewIDRWy9nsV1GQsKBCWaGwsZQlCgr6/q+vjyZhFgqedLfFBuI9anTPEUT4APq9Mu0SZBTzIcGQ==", 23 | "funding": { 24 | "type": "opencollective", 25 | "url": "https://opencollective.com/popperjs" 26 | } 27 | }, 28 | "node_modules/@vueuse/core": { 29 | "version": "7.1.2", 30 | "resolved": "https://registry.npmmirror.com/@vueuse/core/download/@vueuse/core-7.1.2.tgz", 31 | "integrity": "sha512-SLoOPfhZdNRNUkZfx+wrHj6WycWdSw2RmNS8E4ngQ2kmBoJjRarGy51/GkGdjqHQqmhuwuFoNO2WaU0yBn3ffg==", 32 | "dependencies": { 33 | "@vueuse/shared": "7.1.2", 34 | "vue-demi": "*" 35 | }, 36 | "funding": { 37 | "url": "https://github.com/sponsors/antfu" 38 | }, 39 | "peerDependencies": { 40 | "@vue/composition-api": "^1.1.0", 41 | "vue": "^2.6.0 || ^3.2.0" 42 | }, 43 | "peerDependenciesMeta": { 44 | "@vue/composition-api": { 45 | "optional": true 46 | }, 47 | "vue": { 48 | "optional": true 49 | } 50 | } 51 | }, 52 | "node_modules/@vueuse/shared": { 53 | "version": "7.1.2", 54 | "resolved": "https://registry.npmmirror.com/@vueuse/shared/download/@vueuse/shared-7.1.2.tgz", 55 | "integrity": "sha512-AjYh4y9S5FMOoHDsysqcXY/1mpqNTrnWUD50yaaiyf+5kGWQVIpAkkjKZlYSC/NHKxxCRn0cLR4nWMzceUWewQ==", 56 | "dependencies": { 57 | "vue-demi": "*" 58 | }, 59 | "funding": { 60 | "url": "https://github.com/sponsors/antfu" 61 | }, 62 | "peerDependencies": { 63 | "@vue/composition-api": "^1.1.0", 64 | "vue": "^2.6.0 || ^3.2.0" 65 | }, 66 | "peerDependenciesMeta": { 67 | "@vue/composition-api": { 68 | "optional": true 69 | }, 70 | "vue": { 71 | "optional": true 72 | } 73 | } 74 | }, 75 | "node_modules/@vueuse/shared/node_modules/vue-demi": { 76 | "version": "0.12.1", 77 | "resolved": "https://registry.npmmirror.com/vue-demi/download/vue-demi-0.12.1.tgz", 78 | "integrity": "sha512-QL3ny+wX8c6Xm1/EZylbgzdoDolye+VpCXRhI2hug9dJTP3OUJ3lmiKN3CsVV3mOJKwFi0nsstbgob0vG7aoIw==", 79 | "hasInstallScript": true, 80 | "bin": { 81 | "vue-demi-fix": "bin/vue-demi-fix.js", 82 | "vue-demi-switch": "bin/vue-demi-switch.js" 83 | }, 84 | "engines": { 85 | "node": ">=12" 86 | }, 87 | "funding": { 88 | "url": "https://github.com/sponsors/antfu" 89 | }, 90 | "peerDependencies": { 91 | "@vue/composition-api": "^1.0.0-rc.1", 92 | "vue": "^3.0.0-0 || ^2.6.0" 93 | }, 94 | "peerDependenciesMeta": { 95 | "@vue/composition-api": { 96 | "optional": true 97 | } 98 | } 99 | }, 100 | "node_modules/async-validator": { 101 | "version": "4.0.7", 102 | "resolved": "https://registry.npmmirror.com/async-validator/download/async-validator-4.0.7.tgz?cache=0&sync_timestamp=1634529502627&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fasync-validator%2Fdownload%2Fasync-validator-4.0.7.tgz", 103 | "integrity": "sha512-Pj2IR7u8hmUEDOwB++su6baaRi+QvsgajuFB9j95foM1N2gy5HM4z60hfusIO0fBPG5uLAEl6yCJr1jNSVugEQ==" 104 | }, 105 | "node_modules/dayjs": { 106 | "version": "1.10.7", 107 | "resolved": "https://registry.npmmirror.com/dayjs/download/dayjs-1.10.7.tgz?cache=0&sync_timestamp=1632754559701&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fdayjs%2Fdownload%2Fdayjs-1.10.7.tgz", 108 | "integrity": "sha512-P6twpd70BcPK34K26uJ1KT3wlhpuOAPoMwJzpsIWUxHZ7wpmbdZL/hQqBDfz7hGurYSa5PhzdhDHtt319hL3ig==" 109 | }, 110 | "node_modules/echarts": { 111 | "version": "5.2.2", 112 | "resolved": "https://registry.npmjs.org/echarts/-/echarts-5.2.2.tgz", 113 | "integrity": "sha512-yxuBfeIH5c+0FsoRP60w4De6omXhA06c7eUYBsC1ykB6Ys2yK5fSteIYWvkJ4xJVLQgCvAdO8C4mN6MLeJpBaw==", 114 | "dependencies": { 115 | "tslib": "2.3.0", 116 | "zrender": "5.2.1" 117 | } 118 | }, 119 | "node_modules/element-plus": { 120 | "version": "1.2.0-beta.4", 121 | "resolved": "https://registry.npmmirror.com/element-plus/download/element-plus-1.2.0-beta.4.tgz", 122 | "integrity": "sha512-wYOwa/Zop5xMqhqkS7jOd32FF0Y2IpquIu8JLMbmvwlWvRUVetE5RO5lvxiF6etZgq8urRVttisXnOzJ9YOItQ==", 123 | "dependencies": { 124 | "@element-plus/icons": "^0.0.11", 125 | "@popperjs/core": "^2.10.2", 126 | "@vueuse/core": "^7.0.0", 127 | "async-validator": "^4.0.7", 128 | "dayjs": "^1.10.7", 129 | "lodash": "^4.17.21", 130 | "memoize-one": "^6.0.0", 131 | "normalize-wheel-es": "^1.1.1" 132 | }, 133 | "peerDependencies": { 134 | "vue": "^3.2.0" 135 | } 136 | }, 137 | "node_modules/lodash": { 138 | "version": "4.17.21", 139 | "resolved": "https://registry.npmmirror.com/lodash/download/lodash-4.17.21.tgz", 140 | "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" 141 | }, 142 | "node_modules/memoize-one": { 143 | "version": "6.0.0", 144 | "resolved": "https://registry.npmmirror.com/memoize-one/download/memoize-one-6.0.0.tgz?cache=0&sync_timestamp=1634697208428&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fmemoize-one%2Fdownload%2Fmemoize-one-6.0.0.tgz", 145 | "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==" 146 | }, 147 | "node_modules/moment": { 148 | "version": "2.29.1", 149 | "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz", 150 | "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==", 151 | "engines": { 152 | "node": "*" 153 | } 154 | }, 155 | "node_modules/normalize-wheel-es": { 156 | "version": "1.1.1", 157 | "resolved": "https://registry.npmmirror.com/normalize-wheel-es/download/normalize-wheel-es-1.1.1.tgz", 158 | "integrity": "sha512-157VNH4CngrcsvF8xOVOe22cwniIR3nxSltdctvQeHZj8JttEeOXffK28jucWfWBXs0QNetAumjc1GiInnwX4w==" 159 | }, 160 | "node_modules/tslib": { 161 | "version": "2.3.0", 162 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", 163 | "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" 164 | }, 165 | "node_modules/vue-demi": { 166 | "version": "0.12.1", 167 | "resolved": "https://registry.npmmirror.com/vue-demi/download/vue-demi-0.12.1.tgz", 168 | "integrity": "sha512-QL3ny+wX8c6Xm1/EZylbgzdoDolye+VpCXRhI2hug9dJTP3OUJ3lmiKN3CsVV3mOJKwFi0nsstbgob0vG7aoIw==", 169 | "hasInstallScript": true, 170 | "bin": { 171 | "vue-demi-fix": "bin/vue-demi-fix.js", 172 | "vue-demi-switch": "bin/vue-demi-switch.js" 173 | }, 174 | "engines": { 175 | "node": ">=12" 176 | }, 177 | "funding": { 178 | "url": "https://github.com/sponsors/antfu" 179 | }, 180 | "peerDependencies": { 181 | "@vue/composition-api": "^1.0.0-rc.1", 182 | "vue": "^3.0.0-0 || ^2.6.0" 183 | }, 184 | "peerDependenciesMeta": { 185 | "@vue/composition-api": { 186 | "optional": true 187 | } 188 | } 189 | }, 190 | "node_modules/zrender": { 191 | "version": "5.2.1", 192 | "resolved": "https://registry.npmjs.org/zrender/-/zrender-5.2.1.tgz", 193 | "integrity": "sha512-M3bPGZuyLTNBC6LiNKXJwSCtglMp8XUEqEBG+2MdICDI3d1s500Y4P0CzldQGsqpRVB7fkvf3BKQQRxsEaTlsw==", 194 | "dependencies": { 195 | "tslib": "2.3.0" 196 | } 197 | } 198 | }, 199 | "dependencies": { 200 | "@element-plus/icons": { 201 | "version": "0.0.11", 202 | "resolved": "https://registry.npmmirror.com/@element-plus/icons/download/@element-plus/icons-0.0.11.tgz", 203 | "integrity": "sha512-iKQXSxXu131Ai+I9Ymtcof9WId7kaXvB1+WRfAfpQCW7UiAMYgdNDqb/u0hgTo2Yq3MwC4MWJnNuTBEpG8r7+A==" 204 | }, 205 | "@popperjs/core": { 206 | "version": "2.11.0", 207 | "resolved": "https://registry.npmmirror.com/@popperjs/core/download/@popperjs/core-2.11.0.tgz", 208 | "integrity": "sha512-zrsUxjLOKAzdewIDRWy9nsV1GQsKBCWaGwsZQlCgr6/q+vjyZhFgqedLfFBuI9anTPEUT4APq9Mu0SZBTzIcGQ==" 209 | }, 210 | "@vueuse/core": { 211 | "version": "7.1.2", 212 | "resolved": "https://registry.npmmirror.com/@vueuse/core/download/@vueuse/core-7.1.2.tgz", 213 | "integrity": "sha512-SLoOPfhZdNRNUkZfx+wrHj6WycWdSw2RmNS8E4ngQ2kmBoJjRarGy51/GkGdjqHQqmhuwuFoNO2WaU0yBn3ffg==", 214 | "requires": { 215 | "@vueuse/shared": "7.1.2", 216 | "vue-demi": "*" 217 | } 218 | }, 219 | "@vueuse/shared": { 220 | "version": "7.1.2", 221 | "resolved": "https://registry.npmmirror.com/@vueuse/shared/download/@vueuse/shared-7.1.2.tgz", 222 | "integrity": "sha512-AjYh4y9S5FMOoHDsysqcXY/1mpqNTrnWUD50yaaiyf+5kGWQVIpAkkjKZlYSC/NHKxxCRn0cLR4nWMzceUWewQ==", 223 | "requires": { 224 | "vue-demi": "*" 225 | }, 226 | "dependencies": { 227 | "vue-demi": { 228 | "version": "0.12.1", 229 | "resolved": "https://registry.npmmirror.com/vue-demi/download/vue-demi-0.12.1.tgz", 230 | "integrity": "sha512-QL3ny+wX8c6Xm1/EZylbgzdoDolye+VpCXRhI2hug9dJTP3OUJ3lmiKN3CsVV3mOJKwFi0nsstbgob0vG7aoIw==", 231 | "requires": {} 232 | } 233 | } 234 | }, 235 | "async-validator": { 236 | "version": "4.0.7", 237 | "resolved": "https://registry.npmmirror.com/async-validator/download/async-validator-4.0.7.tgz?cache=0&sync_timestamp=1634529502627&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fasync-validator%2Fdownload%2Fasync-validator-4.0.7.tgz", 238 | "integrity": "sha512-Pj2IR7u8hmUEDOwB++su6baaRi+QvsgajuFB9j95foM1N2gy5HM4z60hfusIO0fBPG5uLAEl6yCJr1jNSVugEQ==" 239 | }, 240 | "dayjs": { 241 | "version": "1.10.7", 242 | "resolved": "https://registry.npmmirror.com/dayjs/download/dayjs-1.10.7.tgz?cache=0&sync_timestamp=1632754559701&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fdayjs%2Fdownload%2Fdayjs-1.10.7.tgz", 243 | "integrity": "sha512-P6twpd70BcPK34K26uJ1KT3wlhpuOAPoMwJzpsIWUxHZ7wpmbdZL/hQqBDfz7hGurYSa5PhzdhDHtt319hL3ig==" 244 | }, 245 | "echarts": { 246 | "version": "5.2.2", 247 | "resolved": "https://registry.npmjs.org/echarts/-/echarts-5.2.2.tgz", 248 | "integrity": "sha512-yxuBfeIH5c+0FsoRP60w4De6omXhA06c7eUYBsC1ykB6Ys2yK5fSteIYWvkJ4xJVLQgCvAdO8C4mN6MLeJpBaw==", 249 | "requires": { 250 | "tslib": "2.3.0", 251 | "zrender": "5.2.1" 252 | } 253 | }, 254 | "element-plus": { 255 | "version": "1.2.0-beta.4", 256 | "resolved": "https://registry.npmmirror.com/element-plus/download/element-plus-1.2.0-beta.4.tgz", 257 | "integrity": "sha512-wYOwa/Zop5xMqhqkS7jOd32FF0Y2IpquIu8JLMbmvwlWvRUVetE5RO5lvxiF6etZgq8urRVttisXnOzJ9YOItQ==", 258 | "requires": { 259 | "@element-plus/icons": "^0.0.11", 260 | "@popperjs/core": "^2.10.2", 261 | "@vueuse/core": "^7.0.0", 262 | "async-validator": "^4.0.7", 263 | "dayjs": "^1.10.7", 264 | "lodash": "^4.17.21", 265 | "memoize-one": "^6.0.0", 266 | "normalize-wheel-es": "^1.1.1" 267 | } 268 | }, 269 | "lodash": { 270 | "version": "4.17.21", 271 | "resolved": "https://registry.npmmirror.com/lodash/download/lodash-4.17.21.tgz", 272 | "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" 273 | }, 274 | "memoize-one": { 275 | "version": "6.0.0", 276 | "resolved": "https://registry.npmmirror.com/memoize-one/download/memoize-one-6.0.0.tgz?cache=0&sync_timestamp=1634697208428&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fmemoize-one%2Fdownload%2Fmemoize-one-6.0.0.tgz", 277 | "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==" 278 | }, 279 | "moment": { 280 | "version": "2.29.1", 281 | "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz", 282 | "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==" 283 | }, 284 | "normalize-wheel-es": { 285 | "version": "1.1.1", 286 | "resolved": "https://registry.npmmirror.com/normalize-wheel-es/download/normalize-wheel-es-1.1.1.tgz", 287 | "integrity": "sha512-157VNH4CngrcsvF8xOVOe22cwniIR3nxSltdctvQeHZj8JttEeOXffK28jucWfWBXs0QNetAumjc1GiInnwX4w==" 288 | }, 289 | "tslib": { 290 | "version": "2.3.0", 291 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", 292 | "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" 293 | }, 294 | "vue-demi": { 295 | "version": "0.12.1", 296 | "resolved": "https://registry.npmmirror.com/vue-demi/download/vue-demi-0.12.1.tgz", 297 | "integrity": "sha512-QL3ny+wX8c6Xm1/EZylbgzdoDolye+VpCXRhI2hug9dJTP3OUJ3lmiKN3CsVV3mOJKwFi0nsstbgob0vG7aoIw==", 298 | "requires": {} 299 | }, 300 | "zrender": { 301 | "version": "5.2.1", 302 | "resolved": "https://registry.npmjs.org/zrender/-/zrender-5.2.1.tgz", 303 | "integrity": "sha512-M3bPGZuyLTNBC6LiNKXJwSCtglMp8XUEqEBG+2MdICDI3d1s500Y4P0CzldQGsqpRVB7fkvf3BKQQRxsEaTlsw==", 304 | "requires": { 305 | "tslib": "2.3.0" 306 | } 307 | } 308 | } 309 | } 310 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "echarts": "^5.2.2", 4 | "element-plus": "^1.2.0-beta.4", 5 | "moment": "^2.29.1" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /run/demo-0.0.1-SNAPSHOT.jar.original: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XinChennn/xc016-library-system/f078e3c8157b09f9a1bffb74982327aaf2b0ba20/run/demo-0.0.1-SNAPSHOT.jar.original -------------------------------------------------------------------------------- /run/start.cmd: -------------------------------------------------------------------------------- 1 | java -jar demo-0.0.1-SNAPSHOT.jar -------------------------------------------------------------------------------- /vue/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/cli-plugin-babel/preset' 4 | ] 5 | } 6 | -------------------------------------------------------------------------------- /vue/dist/css/app.90e92dc6.css: -------------------------------------------------------------------------------- 1 | .icon[data-v-f4e55176]{width:40px;height:40px;padding-top:5px;padding-right:10px}.icon[data-v-f5394220]{width:30px;height:30px;padding-top:5px;padding-right:10px}*{margin:0;padding:0;box-sizing:border-box}.icon{width:1em;height:1em;vertical-align:-.15em;fill:currentColor;overflow:hidden} -------------------------------------------------------------------------------- /vue/dist/css/chunk-0ef1ccea.91552112.css: -------------------------------------------------------------------------------- 1 | .box-card[data-v-4dae75ff]{width:80%;margin-bottom:25px;margin-left:10px}.clearfix[data-v-4dae75ff]{text-align:center;font-size:15px}.text[data-v-4dae75ff]{text-align:center;font-size:24px;font-weight:700;vertical-align:super}#main[data-v-4dae75ff]{width:100%;height:450px;margin-top:20px}.icon[data-v-4dae75ff]{width:50px;height:50px;padding-top:5px;padding-right:10px} -------------------------------------------------------------------------------- /vue/dist/css/chunk-1d2b6d9d.750ab8fd.css: -------------------------------------------------------------------------------- 1 | .ValidCode[data-v-4bf328f2]{display:flex;justify-content:center;align-items:center;cursor:pointer}.ValidCode span[data-v-4bf328f2]{display:inline-block}.login-container[data-v-70b225b5]{position:fixed;width:100%;height:100%;background:url(../img/bg2.dd39329b.svg);background-size:contain}.login-page[data-v-70b225b5]{border-radius:5px;margin:180px auto;width:350px;padding:35px 35px 15px;background:#fff;border:1px solid #eaeaea;box-shadow:0 0 25px #cac6c6} -------------------------------------------------------------------------------- /vue/dist/css/chunk-1e6a6472.a9697564.css: -------------------------------------------------------------------------------- 1 | .avatar-uploader{border:1px dashed #d9d9d9;border-radius:6px;cursor:pointer;position:relative;overflow:hidden}.avatar-uploader:hover{border-color:#409eff}.avatar{width:178px;height:178px;display:block}.box-card{width:60%;margin:auto;padding:20px} -------------------------------------------------------------------------------- /vue/dist/css/chunk-752ac4fb.e53c3c2c.css: -------------------------------------------------------------------------------- 1 | .ValidCode[data-v-4bf328f2]{display:flex;justify-content:center;align-items:center;cursor:pointer}.ValidCode span[data-v-4bf328f2]{display:inline-block}.login-container[data-v-a8e2f1f2]{position:fixed;width:100%;height:100vh;background:url(../img/bg2.dd39329b.svg);background-size:contain;overflow:hidden}.login-page[data-v-a8e2f1f2]{border-radius:5px;margin:180px auto;width:350px;padding:35px 35px 15px;background:#fff;border:1px solid #eaeaea;box-shadow:0 0 25px #cac6c6} -------------------------------------------------------------------------------- /vue/dist/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XinChennn/xc016-library-system/f078e3c8157b09f9a1bffb74982327aaf2b0ba20/vue/dist/favicon.ico -------------------------------------------------------------------------------- /vue/dist/img/bg2.dd39329b.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /vue/dist/img/login.81e3ef50.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XinChennn/xc016-library-system/f078e3c8157b09f9a1bffb74982327aaf2b0ba20/vue/dist/img/login.81e3ef50.png -------------------------------------------------------------------------------- /vue/dist/index.html: -------------------------------------------------------------------------------- 1 | vue_demo
-------------------------------------------------------------------------------- /vue/dist/js/chunk-1d2b6d9d.13081618.js: -------------------------------------------------------------------------------- 1 | (window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-1d2b6d9d"],{"0b42":function(e,t,r){var o=r("da84"),n=r("e8b5"),c=r("68ee"),a=r("861d"),i=r("b622"),u=i("species"),d=o.Array;e.exports=function(e){var t;return n(e)&&(t=e.constructor,c(t)&&(t===d||n(t.prototype))?t=void 0:a(t)&&(t=t[u],null===t&&(t=void 0))),void 0===t?d:t}},"1ab2":function(e,t,r){},"1dde":function(e,t,r){var o=r("d039"),n=r("b622"),c=r("2d00"),a=n("species");e.exports=function(e){return c>=51||!o((function(){var t=[],r=t.constructor={};return r[a]=function(){return{foo:1}},1!==t[e](Boolean).foo}))}},"2a6c":function(e,t,r){},"349a":function(e,t,r){"use strict";r("2a6c")},"408a":function(e,t,r){var o=r("e330");e.exports=o(1..valueOf)},5899:function(e,t){e.exports="\t\n\v\f\r                 \u2028\u2029\ufeff"},"58a8":function(e,t,r){var o=r("e330"),n=r("1d80"),c=r("577e"),a=r("5899"),i=o("".replace),u="["+a+"]",d=RegExp("^"+u+u+"*"),l=RegExp(u+u+"*$"),f=function(e){return function(t){var r=c(n(t));return 1&e&&(r=i(r,d,"")),2&e&&(r=i(r,l,"")),r}};e.exports={start:f(1),end:f(2),trim:f(3)}},"5c64":function(e,t,r){"use strict";r("1ab2")},"65f0":function(e,t,r){var o=r("0b42");e.exports=function(e,t){return new(o(e))(0===t?0:t)}},7156:function(e,t,r){var o=r("1626"),n=r("861d"),c=r("d2bb");e.exports=function(e,t,r){var a,i;return c&&o(a=t.constructor)&&a!==r&&n(i=a.prototype)&&i!==r.prototype&&c(e,i),e}},"73cf":function(e,t,r){"use strict";r.r(t);var o=r("7a23"),n=function(e){return Object(o["pushScopeId"])("data-v-70b225b5"),e=e(),Object(o["popScopeId"])(),e},c={class:"login-container"},a=n((function(){return Object(o["createElementVNode"])("h2",{class:"title",style:{"margin-bottom":"20px"}},"用户注册",-1)})),i=Object(o["createTextVNode"])("读者"),u=Object(o["createTextVNode"])("管理员"),d={style:{display:"flex"}},l=Object(o["createTextVNode"])("注 册"),f=Object(o["createTextVNode"])("前往登录>> ");function s(e,t,r,n,s,b){var p=Object(o["resolveComponent"])("User"),m=Object(o["resolveComponent"])("el-icon"),h=Object(o["resolveComponent"])("el-input"),j=Object(o["resolveComponent"])("el-form-item"),O=Object(o["resolveComponent"])("Lock"),v=Object(o["resolveComponent"])("el-radio"),V=Object(o["resolveComponent"])("ValidCode"),g=Object(o["resolveComponent"])("el-button"),C=Object(o["resolveComponent"])("el-form");return Object(o["openBlock"])(),Object(o["createElementBlock"])("div",c,[Object(o["createVNode"])(C,{ref:"form",model:s.form,rules:s.rules,class:"login-page"},{default:Object(o["withCtx"])((function(){return[a,Object(o["createVNode"])(j,{prop:"username"},{default:Object(o["withCtx"])((function(){return[Object(o["createVNode"])(h,{modelValue:s.form.username,"onUpdate:modelValue":t[0]||(t[0]=function(e){return s.form.username=e}),placeholder:"请输入用户名",clearable:""},{prefix:Object(o["withCtx"])((function(){return[Object(o["createVNode"])(m,{class:"el-input__icon"},{default:Object(o["withCtx"])((function(){return[Object(o["createVNode"])(p)]})),_:1})]})),_:1},8,["modelValue"])]})),_:1}),Object(o["createVNode"])(j,{prop:"password"},{default:Object(o["withCtx"])((function(){return[Object(o["createVNode"])(h,{modelValue:s.form.password,"onUpdate:modelValue":t[1]||(t[1]=function(e){return s.form.password=e}),placeholder:"请输入密码",clearable:"","show-password":""},{prefix:Object(o["withCtx"])((function(){return[Object(o["createVNode"])(m,{class:"el-input__icon"},{default:Object(o["withCtx"])((function(){return[Object(o["createVNode"])(O)]})),_:1})]})),_:1},8,["modelValue"])]})),_:1}),Object(o["createVNode"])(j,{prop:"confirm"},{default:Object(o["withCtx"])((function(){return[Object(o["createVNode"])(h,{modelValue:s.form.confirm,"onUpdate:modelValue":t[2]||(t[2]=function(e){return s.form.confirm=e}),placeholder:"请再次确认密码",clearable:"","show-password":""},{prefix:Object(o["withCtx"])((function(){return[Object(o["createVNode"])(m,{class:"el-input__icon"},{default:Object(o["withCtx"])((function(){return[Object(o["createVNode"])(O)]})),_:1})]})),_:1},8,["modelValue"])]})),_:1}),Object(o["createVNode"])(j,{prop:"role"},{default:Object(o["withCtx"])((function(){return[Object(o["createVNode"])(v,{modelValue:s.form.role,"onUpdate:modelValue":t[3]||(t[3]=function(e){return s.form.role=e}),label:"2"},{default:Object(o["withCtx"])((function(){return[i]})),_:1},8,["modelValue"]),Object(o["createVNode"])(v,{modelValue:s.form.role,"onUpdate:modelValue":t[4]||(t[4]=function(e){return s.form.role=e}),label:"1"},{default:Object(o["withCtx"])((function(){return[u]})),_:1},8,["modelValue"])]})),_:1}),1==s.form.role?(Object(o["openBlock"])(),Object(o["createBlock"])(j,{key:0,prop:"authorize"},{default:Object(o["withCtx"])((function(){return[Object(o["createVNode"])(h,{modelValue:s.form.authorize,"onUpdate:modelValue":t[5]||(t[5]=function(e){return s.form.authorize=e}),placeholder:"请输入管理员注册码",clearable:"","show-password":""},{prefix:Object(o["withCtx"])((function(){return[Object(o["createVNode"])(m,{class:"el-input__icon"},{default:Object(o["withCtx"])((function(){return[Object(o["createVNode"])(O)]})),_:1})]})),_:1},8,["modelValue"])]})),_:1})):Object(o["createCommentVNode"])("",!0),Object(o["createVNode"])(j,null,{default:Object(o["withCtx"])((function(){return[Object(o["createElementVNode"])("div",d,[Object(o["createVNode"])(h,{modelValue:s.form.validCode,"onUpdate:modelValue":t[6]||(t[6]=function(e){return s.form.validCode=e}),style:{width:"45%"},placeholder:"请输入验证码"},null,8,["modelValue"]),Object(o["createVNode"])(V,{onInput:b.createValidCode,style:{width:"50%"}},null,8,["onInput"])])]})),_:1}),Object(o["createVNode"])(j,null,{default:Object(o["withCtx"])((function(){return[Object(o["createVNode"])(g,{type:"primary",style:{width:"100%"},onClick:b.register},{default:Object(o["withCtx"])((function(){return[l]})),_:1},8,["onClick"])]})),_:1}),Object(o["createVNode"])(j,null,{default:Object(o["withCtx"])((function(){return[Object(o["createVNode"])(g,{type:"text",onClick:t[7]||(t[7]=function(t){return e.$router.push("/login")})},{default:Object(o["withCtx"])((function(){return[f]})),_:1})]})),_:1})]})),_:1},8,["model","rules"])])}var b=r("b775"),p=r("3ef4"),m=r("df8f"),h={name:"Login",components:{ValidCode:m["a"]},data:function(){return{form:{},validCode:"",rules:{username:[{required:!0,message:"请输入用户名",trigger:"blur"},{min:2,max:13,message:"长度要求为2到13位",trigger:"blur"}],password:[{required:!0,message:"请输入密码",trigger:"blur"}],confirm:[{required:!0,message:"请确认密码",trigger:"blur"}],authorize:[{required:!0,message:"请输入注册码",trigger:"blur"}]}}},methods:{createValidCode:function(e){this.validCode=e},register:function(){var e=this;this.$refs["form"].validate((function(t){if(t){if(!e.form.validCode)return void p["a"].error("请填写验证码");if(e.form.validCode.toLowerCase()!==e.validCode.toLowerCase())return void p["a"].error("验证码错误");if(e.form.password!=e.form.confirm)return void p["a"].error("两次密码输入不一致");if(1==e.form.role&&"1234"!=e.form.authorize)return void p["a"].error("请输入正确的注册码");b["a"].post("user/register",e.form).then((function(t){0==t.code?(p["a"].success("注册成功"),e.$router.push("/login")):p["a"].error(t.msg)}))}}))}}},j=(r("5c64"),r("6b0d")),O=r.n(j);const v=O()(h,[["render",s],["__scopeId","data-v-70b225b5"]]);t["default"]=v},8418:function(e,t,r){"use strict";var o=r("a04b"),n=r("9bf2"),c=r("5c6c");e.exports=function(e,t,r){var a=o(t);a in e?n.f(e,a,c(0,r)):e[a]=r}},"99af":function(e,t,r){"use strict";var o=r("23e7"),n=r("da84"),c=r("d039"),a=r("e8b5"),i=r("861d"),u=r("7b0b"),d=r("07fa"),l=r("8418"),f=r("65f0"),s=r("1dde"),b=r("b622"),p=r("2d00"),m=b("isConcatSpreadable"),h=9007199254740991,j="Maximum allowed index exceeded",O=n.TypeError,v=p>=51||!c((function(){var e=[];return e[m]=!1,e.concat()[0]!==e})),V=s("concat"),g=function(e){if(!i(e))return!1;var t=e[m];return void 0!==t?!!t:a(e)},C=!v||!V;o({target:"Array",proto:!0,forced:C},{concat:function(e){var t,r,o,n,c,a=u(this),i=f(a,0),s=0;for(t=-1,o=arguments.length;th)throw O(j);for(r=0;r=h)throw O(j);l(i,s++,c)}return i.length=s,i}})},a15b:function(e,t,r){"use strict";var o=r("23e7"),n=r("e330"),c=r("44ad"),a=r("fc6a"),i=r("a640"),u=n([].join),d=c!=Object,l=i("join",",");o({target:"Array",proto:!0,forced:d||!l},{join:function(e){return u(a(this),void 0===e?",":e)}})},a640:function(e,t,r){"use strict";var o=r("d039");e.exports=function(e,t){var r=[][e];return!!r&&o((function(){r.call(null,t||function(){throw 1},1)}))}},a9e3:function(e,t,r){"use strict";var o=r("83ab"),n=r("da84"),c=r("e330"),a=r("94ca"),i=r("6eeb"),u=r("1a2d"),d=r("7156"),l=r("3a9b"),f=r("d9b5"),s=r("c04e"),b=r("d039"),p=r("241c").f,m=r("06cf").f,h=r("9bf2").f,j=r("408a"),O=r("58a8").trim,v="Number",V=n[v],g=V.prototype,C=n.TypeError,w=c("".slice),x=c("".charCodeAt),N=function(e){var t=s(e,"number");return"bigint"==typeof t?t:y(t)},y=function(e){var t,r,o,n,c,a,i,u,d=s(e,"number");if(f(d))throw C("Cannot convert a Symbol value to a number");if("string"==typeof d&&d.length>2)if(d=O(d),t=x(d,0),43===t||45===t){if(r=x(d,2),88===r||120===r)return NaN}else if(48===t){switch(x(d,1)){case 66:case 98:o=2,n=49;break;case 79:case 111:o=8,n=55;break;default:return+d}for(c=w(d,2),a=c.length,i=0;in)return NaN;return parseInt(c,o)}return+d};if(a(v,!V(" 0o1")||!V("0b1")||V("+0x1"))){for(var _,I=function(e){var t=arguments.length<1?0:V(N(e)),r=this;return l(g,r)&&b((function(){j(r)}))?d(Object(t),r,I):t},E=o?p(V):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,isFinite,isInteger,isNaN,isSafeInteger,parseFloat,parseInt,fromString,range".split(","),k=0;E.length>k;k++)u(V,_=E[k])&&!u(I,_)&&h(I,_,m(V,_));I.prototype=g,g.constructor=I,i(n,v,I)}},b727:function(e,t,r){var o=r("0366"),n=r("e330"),c=r("44ad"),a=r("7b0b"),i=r("07fa"),u=r("65f0"),d=n([].push),l=function(e){var t=1==e,r=2==e,n=3==e,l=4==e,f=6==e,s=7==e,b=5==e||f;return function(p,m,h,j){for(var O,v,V=a(p),g=c(V),C=o(m,h),w=i(g),x=0,N=j||u,y=t?N(p,w):r||s?N(p,0):void 0;w>x;x++)if((b||x in g)&&(O=g[x],v=C(O,x,V),e))if(t)y[x]=v;else if(v)switch(e){case 3:return!0;case 5:return O;case 6:return x;case 2:d(y,O)}else switch(e){case 4:return!1;case 7:d(y,O)}return f?-1:n||l?l:y}};e.exports={forEach:l(0),map:l(1),filter:l(2),some:l(3),every:l(4),find:l(5),findIndex:l(6),filterReject:l(7)}},d81d:function(e,t,r){"use strict";var o=r("23e7"),n=r("b727").map,c=r("1dde"),a=c("map");o({target:"Array",proto:!0,forced:!a},{map:function(e){return n(this,e,arguments.length>1?arguments[1]:void 0)}})},df8f:function(e,t,r){"use strict";r("99af");var o=r("7a23");function n(e,t,r,n,c,a){return Object(o["openBlock"])(),Object(o["createElementBlock"])("div",{class:"ValidCode disabled-select",style:Object(o["normalizeStyle"])("width:".concat(r.width,"; height:").concat(r.height)),onClick:t[0]||(t[0]=function(){return a.refreshCode&&a.refreshCode.apply(a,arguments)})},[(Object(o["openBlock"])(!0),Object(o["createElementBlock"])(o["Fragment"],null,Object(o["renderList"])(c.codeList,(function(e,t){return Object(o["openBlock"])(),Object(o["createElementBlock"])("span",{key:t,style:Object(o["normalizeStyle"])(a.getStyle(e))},Object(o["toDisplayString"])(e.code),5)})),128))],4)}r("a9e3"),r("a15b"),r("d81d");var c={name:"ValidCode",model:{prop:"value",event:"input"},props:{width:{type:String,default:"100px"},height:{type:String,default:"40px"},length:{type:Number,default:4},refresh:{type:Number}},data:function(){return{codeList:[]}},watch:{refresh:function(){this.createdCode()}},mounted:function(){this.createdCode()},methods:{refreshCode:function(){this.createdCode()},createdCode:function(){for(var e=this.length,t=[],r="ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz0123456789",o=r.length,n=0;n\r\n
\r\n \r\n

个人信息

\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 管理员\r\n 读者\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n 保存\r\n
\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n\r\n","import { render } from \"./Person.vue?vue&type=template&id=667d9c48\"\nimport script from \"./Person.vue?vue&type=script&lang=js\"\nexport * from \"./Person.vue?vue&type=script&lang=js\"\n\nimport \"./Person.vue?vue&type=style&index=0&id=667d9c48&lang=css\"\n\nimport exportComponent from \"C:\\\\Users\\\\Administrator4\\\\Desktop\\\\library-system\\\\vue\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","var $ = require('../internals/export');\nvar global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar apply = require('../internals/function-apply');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\n\nvar Array = global.Array;\nvar $stringify = getBuiltIn('JSON', 'stringify');\nvar exec = uncurryThis(/./.exec);\nvar charAt = uncurryThis(''.charAt);\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar replace = uncurryThis(''.replace);\nvar numberToString = uncurryThis(1.0.toString);\n\nvar tester = /[\\uD800-\\uDFFF]/g;\nvar low = /^[\\uD800-\\uDBFF]$/;\nvar hi = /^[\\uDC00-\\uDFFF]$/;\n\nvar fix = function (match, offset, string) {\n var prev = charAt(string, offset - 1);\n var next = charAt(string, offset + 1);\n if ((exec(low, match) && !exec(hi, next)) || (exec(hi, match) && !exec(low, prev))) {\n return '\\\\u' + numberToString(charCodeAt(match, 0), 16);\n } return match;\n};\n\nvar FORCED = fails(function () {\n return $stringify('\\uDF06\\uD834') !== '\"\\\\udf06\\\\ud834\"'\n || $stringify('\\uDEAD') !== '\"\\\\udead\"';\n});\n\nif ($stringify) {\n // `JSON.stringify` method\n // https://tc39.es/ecma262/#sec-json.stringify\n // https://github.com/tc39/proposal-well-formed-stringify\n $({ target: 'JSON', stat: true, forced: FORCED }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n stringify: function stringify(it, replacer, space) {\n for (var i = 0, l = arguments.length, args = Array(l); i < l; i++) args[i] = arguments[i];\n var result = apply($stringify, null, args);\n return typeof result == 'string' ? replace(result, tester, fix) : result;\n }\n });\n}\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./Person.vue?vue&type=style&index=0&id=667d9c48&lang=css\""],"sourceRoot":""} -------------------------------------------------------------------------------- /vue/dist/js/chunk-2d0c0df2.9b822a3f.js: -------------------------------------------------------------------------------- 1 | (window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d0c0df2"],{4440:function(e,t,o){"use strict";o.r(t);var n=o("7a23"),r={class:"home",style:{padding:"10px"}},c={style:{margin:"10px 0"}},a=Object(n["createTextVNode"])("查询"),l=Object(n["createTextVNode"])("重置"),i={style:{margin:"10px 0"}},u=Object(n["createTextVNode"])("批量删除"),d=Object(n["createTextVNode"])("修改"),s=Object(n["createTextVNode"])("删除"),b=Object(n["createTextVNode"])("续借"),h={style:{margin:"10px 0"}},f={class:"dialog-footer"},m=Object(n["createTextVNode"])("取 消"),O=Object(n["createTextVNode"])("确 定");function j(e,t,o,j,p,V){var g=Object(n["resolveComponent"])("search"),C=Object(n["resolveComponent"])("el-icon"),N=Object(n["resolveComponent"])("el-input"),w=Object(n["resolveComponent"])("el-form-item"),x=Object(n["resolveComponent"])("el-button"),k=Object(n["resolveComponent"])("el-form"),_=Object(n["resolveComponent"])("el-popconfirm"),y=Object(n["resolveComponent"])("el-table-column"),v=Object(n["resolveComponent"])("el-table"),z=Object(n["resolveComponent"])("el-pagination"),S=Object(n["resolveComponent"])("el-dialog");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",r,[Object(n["createElementVNode"])("div",c,[Object(n["createVNode"])(k,{inline:"true",size:"small"},{default:Object(n["withCtx"])((function(){return[Object(n["createVNode"])(w,{label:"图书编号"},{default:Object(n["withCtx"])((function(){return[Object(n["createVNode"])(N,{modelValue:p.search1,"onUpdate:modelValue":t[0]||(t[0]=function(e){return p.search1=e}),placeholder:"请输入图书编号",clearable:""},{prefix:Object(n["withCtx"])((function(){return[Object(n["createVNode"])(C,{class:"el-input__icon"},{default:Object(n["withCtx"])((function(){return[Object(n["createVNode"])(g)]})),_:1})]})),_:1},8,["modelValue"])]})),_:1}),Object(n["createVNode"])(w,{label:"图书名称"},{default:Object(n["withCtx"])((function(){return[Object(n["createVNode"])(N,{modelValue:p.search2,"onUpdate:modelValue":t[1]||(t[1]=function(e){return p.search2=e}),placeholder:"请输入图书名称",clearable:""},{prefix:Object(n["withCtx"])((function(){return[Object(n["createVNode"])(C,{class:"el-input__icon"},{default:Object(n["withCtx"])((function(){return[Object(n["createVNode"])(g)]})),_:1})]})),_:1},8,["modelValue"])]})),_:1}),1==p.user.role?(Object(n["openBlock"])(),Object(n["createBlock"])(w,{key:0,label:"借阅者"},{default:Object(n["withCtx"])((function(){return[Object(n["createVNode"])(N,{modelValue:p.search3,"onUpdate:modelValue":t[2]||(t[2]=function(e){return p.search3=e}),placeholder:"请输入借阅者昵称",clearable:""},{prefix:Object(n["withCtx"])((function(){return[Object(n["createVNode"])(C,{class:"el-input__icon"},{default:Object(n["withCtx"])((function(){return[Object(n["createVNode"])(g)]})),_:1})]})),_:1},8,["modelValue"])]})),_:1})):Object(n["createCommentVNode"])("",!0),Object(n["createVNode"])(w,null,{default:Object(n["withCtx"])((function(){return[Object(n["createVNode"])(x,{type:"primary",style:{"margin-left":"1%"},onClick:V.load,size:"mini"},{default:Object(n["withCtx"])((function(){return[a]})),_:1},8,["onClick"])]})),_:1}),Object(n["createVNode"])(w,null,{default:Object(n["withCtx"])((function(){return[Object(n["createVNode"])(x,{size:"mini",type:"danger",onClick:V.clear},{default:Object(n["withCtx"])((function(){return[l]})),_:1},8,["onClick"])]})),_:1})]})),_:1})]),Object(n["createElementVNode"])("div",i,[1==p.user.role?(Object(n["openBlock"])(),Object(n["createBlock"])(_,{key:0,title:"确认删除?",onConfirm:V.deleteBatch},{reference:Object(n["withCtx"])((function(){return[Object(n["createVNode"])(x,{type:"danger",size:"mini"},{default:Object(n["withCtx"])((function(){return[u]})),_:1})]})),_:1},8,["onConfirm"])):Object(n["createCommentVNode"])("",!0)]),Object(n["createVNode"])(v,{data:p.tableData,stripe:"",border:"true",onSelectionChange:V.handleSelectionChange},{default:Object(n["withCtx"])((function(){return[1==p.user.role?(Object(n["openBlock"])(),Object(n["createBlock"])(y,{key:0,type:"selection",width:"55"})):Object(n["createCommentVNode"])("",!0),Object(n["createVNode"])(y,{prop:"isbn",label:"图书编号",sortable:""}),Object(n["createVNode"])(y,{prop:"bookName",label:"图书名称"}),Object(n["createVNode"])(y,{prop:"nickName",label:"借阅者"}),Object(n["createVNode"])(y,{prop:"lendtime",label:"借阅时间"}),Object(n["createVNode"])(y,{prop:"deadtime",label:"最迟归还日期"}),Object(n["createVNode"])(y,{prop:"prolong",label:"可续借次数"}),Object(n["createVNode"])(y,{fixed:"right",label:"操作"},{default:Object(n["withCtx"])((function(e){return[1==p.user.role?(Object(n["openBlock"])(),Object(n["createBlock"])(x,{key:0,size:"mini",onClick:function(t){return V.handleEdit(e.row)}},{default:Object(n["withCtx"])((function(){return[d]})),_:2},1032,["onClick"])):Object(n["createCommentVNode"])("",!0),1==p.user.role?(Object(n["openBlock"])(),Object(n["createBlock"])(_,{key:1,title:"确认删除?",onConfirm:function(t){return V.handleDelete(e.row)}},{reference:Object(n["withCtx"])((function(){return[Object(n["createVNode"])(x,{type:"danger",size:"mini"},{default:Object(n["withCtx"])((function(){return[s]})),_:1})]})),_:2},1032,["onConfirm"])):Object(n["createCommentVNode"])("",!0),2==p.user.role?(Object(n["openBlock"])(),Object(n["createBlock"])(_,{key:2,title:"确认续借(续借一次延长30天)?",onConfirm:function(t){return V.handlereProlong(e.row)},disabled:0==e.row.prolong},{reference:Object(n["withCtx"])((function(){return[Object(n["createVNode"])(x,{type:"danger",size:"mini",disabled:0==e.row.prolong},{default:Object(n["withCtx"])((function(){return[b]})),_:2},1032,["disabled"])]})),_:2},1032,["onConfirm","disabled"])):Object(n["createCommentVNode"])("",!0)]})),_:1})]})),_:1},8,["data","onSelectionChange"]),Object(n["createElementVNode"])("div",h,[Object(n["createVNode"])(z,{currentPage:p.currentPage,"onUpdate:currentPage":t[3]||(t[3]=function(e){return p.currentPage=e}),"page-sizes":[5,10,20],"page-size":p.pageSize,layout:"total, sizes, prev, pager, next, jumper",total:p.total,onSizeChange:V.handleSizeChange,onCurrentChange:V.handleCurrentChange},null,8,["currentPage","page-size","total","onSizeChange","onCurrentChange"]),Object(n["createVNode"])(S,{modelValue:p.dialogVisible2,"onUpdate:modelValue":t[9]||(t[9]=function(e){return p.dialogVisible2=e}),title:"修改借阅信息",width:"30%"},{footer:Object(n["withCtx"])((function(){return[Object(n["createElementVNode"])("span",f,[Object(n["createVNode"])(x,{onClick:t[8]||(t[8]=function(e){return p.dialogVisible2=!1})},{default:Object(n["withCtx"])((function(){return[m]})),_:1}),Object(n["createVNode"])(x,{type:"primary",onClick:V.save},{default:Object(n["withCtx"])((function(){return[O]})),_:1},8,["onClick"])])]})),default:Object(n["withCtx"])((function(){return[Object(n["createVNode"])(k,{model:p.form,"label-width":"120px"},{default:Object(n["withCtx"])((function(){return[Object(n["createVNode"])(w,{label:"图书编号"},{default:Object(n["withCtx"])((function(){return[Object(n["createVNode"])(N,{style:{width:"80%"},modelValue:p.form.isbn,"onUpdate:modelValue":t[4]||(t[4]=function(e){return p.form.isbn=e})},null,8,["modelValue"])]})),_:1}),Object(n["createVNode"])(w,{label:"图书名称"},{default:Object(n["withCtx"])((function(){return[Object(n["createVNode"])(N,{style:{width:"80%"},modelValue:p.form.bookName,"onUpdate:modelValue":t[5]||(t[5]=function(e){return p.form.bookName=e})},null,8,["modelValue"])]})),_:1}),Object(n["createVNode"])(w,{label:"借阅者"},{default:Object(n["withCtx"])((function(){return[Object(n["createVNode"])(N,{style:{width:"80%"},modelValue:p.form.nickName,"onUpdate:modelValue":t[6]||(t[6]=function(e){return p.form.nickName=e})},null,8,["modelValue"])]})),_:1}),Object(n["createVNode"])(w,{label:"续借次数"},{default:Object(n["withCtx"])((function(){return[Object(n["createVNode"])(N,{style:{width:"80%"},modelValue:p.form.prolong,"onUpdate:modelValue":t[7]||(t[7]=function(e){return p.form.prolong=e})},null,8,["modelValue"])]})),_:1})]})),_:1},8,["model"])]})),_:1},8,["modelValue"])])])}o("e9c4");var p=o("b775"),V=o("3ef4"),g=o("4e22"),C=o.n(g),N={created:function(){var e=sessionStorage.getItem("user")||"{}";this.user=JSON.parse(e),this.load()},name:"bookwithuser",methods:{handleSelectionChange:function(e){this.forms=e},deleteBatch:function(){var e=this;this.forms.length?p["a"].post("bookwithuser/deleteRecords",this.forms).then((function(t){"0"===t.code?(V["a"].success("批量删除成功"),e.load()):V["a"].error(t.msg)})):V["a"].warning("请选择数据!")},load:function(){var e=this;1==this.user.role?p["a"].get("/bookwithuser",{params:{pageNum:this.currentPage,pageSize:this.pageSize,search1:this.search1,search2:this.search2,search3:this.search3}}).then((function(t){console.log(t),e.tableData=t.data.records,e.total=t.data.total})):p["a"].get("/bookwithuser",{params:{pageNum:this.currentPage,pageSize:this.pageSize,search1:this.search1,search2:this.search2,search3:this.user.id}}).then((function(t){console.log(t),e.tableData=t.data.records,e.total=t.data.total}))},clear:function(){this.search1="",this.search2="",this.search3="",this.load()},handleDelete:function(e){var t=this,o=JSON.parse(JSON.stringify(e));p["a"].post("bookwithuser/deleteRecord",o).then((function(e){console.log(e),0==e.code?V["a"].success("删除成功"):V["a"].error(e.msg),t.load()}))},handlereProlong:function(e){var t=this,o=new Date(e.deadtime);o.setDate(o.getDate()+30),e.deadtime=C()(o).format("yyyy-MM-DD HH:mm:ss"),e.prolong=e.prolong-1,p["a"].post("/bookwithuser",e).then((function(e){console.log(e),0==e.code?Object(V["a"])({message:"续借成功",type:"success"}):V["a"].error(e.msg),t.load(),t.dialogVisible2=!1}))},save:function(){var e=this;p["a"].post("/bookwithuser",this.form).then((function(t){console.log(t),0==t.code?Object(V["a"])({message:"修改信息成功",type:"success"}):V["a"].error(t.msg),e.load(),e.dialogVisible2=!1}))},handleEdit:function(e){this.form=JSON.parse(JSON.stringify(e)),this.dialogVisible2=!0},handleSizeChange:function(e){this.pageSize=e,this.load()},handleCurrentChange:function(e){this.pageNum=e,this.load()}},data:function(){return{form:{},form2:{},form3:{},dialogVisible:!1,dialogVisible2:!1,search1:"",search2:"",search3:"",total:10,currentPage:1,pageSize:10,tableData:[],user:{},forms:[]}}},w=o("6b0d"),x=o.n(w);const k=x()(N,[["render",j]]);t["default"]=k}}]); 2 | //# sourceMappingURL=chunk-2d0c0df2.9b822a3f.js.map -------------------------------------------------------------------------------- /vue/dist/js/chunk-2d0c0df2.9b822a3f.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["webpack:///./src/views/BookWithUser.vue","webpack:///./src/views/BookWithUser.vue?4e1b"],"names":["class","style","inline","size","label","search1","placeholder","clearable","prefix","search2","user","role","search3","type","load","clear","title","deleteBatch","reference","data","tableData","stripe","border","handleSelectionChange","width","prop","sortable","fixed","handleEdit","scope","row","handleDelete","handlereProlong","disabled","prolong","currentPage","page-sizes","page-size","pageSize","layout","total","handleSizeChange","handleCurrentChange","dialogVisible2","footer","save","model","form","label-width","isbn","bookName","nickName","created","userStr","sessionStorage","getItem","this","JSON","parse","name","methods","val","forms","length","request","post","then","res","code","success","error","msg","warning","get","params","pageNum","console","log","records","id","form3","stringify","nowDate","Date","deadtime","setDate","getDate","format","message","form2","dialogVisible","__exports__","render"],"mappings":"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","file":"js/chunk-2d0c0df2.9b822a3f.js","sourcesContent":["\r\n\r\n\r\n","import { render } from \"./BookWithUser.vue?vue&type=template&id=1cf804b8\"\nimport script from \"./BookWithUser.vue?vue&type=script&lang=js\"\nexport * from \"./BookWithUser.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"C:\\\\Users\\\\Administrator4\\\\Desktop\\\\library-system\\\\vue\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__"],"sourceRoot":""} -------------------------------------------------------------------------------- /vue/dist/js/chunk-2d0c1074.8dbc50ec.js: -------------------------------------------------------------------------------- 1 | (window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d0c1074"],{"43fe":function(e,t,r){"use strict";r.r(t);var o=r("7a23"),n=Object(o["createTextVNode"])("提交"),a=Object(o["createTextVNode"])("重置");function s(e,t,r,s,c,u){var l=Object(o["resolveComponent"])("el-input"),d=Object(o["resolveComponent"])("el-form-item"),i=Object(o["resolveComponent"])("el-button"),f=Object(o["resolveComponent"])("el-form"),p=Object(o["resolveComponent"])("el-card");return Object(o["openBlock"])(),Object(o["createElementBlock"])("div",null,[Object(o["createVNode"])(p,{style:{width:"40%","margin-left":"120px","margin-top":"40px"}},{default:Object(o["withCtx"])((function(){return[Object(o["createVNode"])(f,{ref:"form",model:c.form,"status-icon":"",rules:c.rules,"label-width":"100px",class:"demo-ruleForm"},{default:Object(o["withCtx"])((function(){return[Object(o["createVNode"])(d,{label:"老密码",prop:"password2"},{default:Object(o["withCtx"])((function(){return[Object(o["createVNode"])(l,{modelValue:c.form.password2,"onUpdate:modelValue":t[0]||(t[0]=function(e){return c.form.password2=e}),type:"password",autocomplete:"off"},null,8,["modelValue"])]})),_:1}),Object(o["createVNode"])(d,{label:"新密码",prop:"password"},{default:Object(o["withCtx"])((function(){return[Object(o["createVNode"])(l,{modelValue:c.form2.password,"onUpdate:modelValue":t[1]||(t[1]=function(e){return c.form2.password=e}),type:"password",autocomplete:"off"},null,8,["modelValue"])]})),_:1}),Object(o["createVNode"])(d,{label:"确认新密码",prop:"checkpassword"},{default:Object(o["withCtx"])((function(){return[Object(o["createVNode"])(l,{modelValue:c.form.checkpassword,"onUpdate:modelValue":t[2]||(t[2]=function(e){return c.form.checkpassword=e}),type:"password",autocomplete:"off"},null,8,["modelValue"])]})),_:1}),Object(o["createVNode"])(d,null,{default:Object(o["withCtx"])((function(){return[Object(o["createVNode"])(i,{type:"primary",onClick:u.submitForm,style:{"text-align":"center"}},{default:Object(o["withCtx"])((function(){return[n]})),_:1},8,["onClick"]),Object(o["createVNode"])(i,{onClick:t[3]||(t[3]=function(e){return u.resetForm("form")}),style:{"text-align":"center"}},{default:Object(o["withCtx"])((function(){return[a]})),_:1})]})),_:1})]})),_:1},8,["model","rules"])]})),_:1})])}var c=r("b775"),u=r("3ef4"),l={name:"Password",data:function(){var e=this,t=function(t,r,o){""==r?o(new Error("请输入老密码")):(e.form.password2!==e.form.truepassword&&o(new Error("密码错误")),o())},r=function(e,t,r){""===t?r(new Error("请输入新密码")):r()},o=function(t,r,o){""===r?o(new Error("请再次输入密码")):r!==e.form2.password?o(new Error("两次输入密码不匹配")):o()};return{form:{password2:"",checkpassword:"",truepassword:""},form2:{password:"",id:0},rules:{password:[{validator:r,trigger:"blur",required:!0}],checkpassword:[{validator:o,trigger:"blur",required:!0}],password2:[{validator:t,trigger:"blur",required:!0}]}}},created:function(){var e=JSON.parse(sessionStorage.getItem("user"));this.form.truepassword=e.password,this.form2.id=e.id},methods:{submitForm:function(){var e=this;this.$refs["form"].validate((function(t){t&&c["a"].put("/user",e.form2).then((function(t){0==t.code?(u["a"].success("密码修改成功,请重新登录"),sessionStorage.removeItem("user"),e.$router.push("/login")):u["a"].error(t.msg)}))}))},resetForm:function(e){this.$refs[e].resetFields()}}},d=r("6b0d"),i=r.n(d);const f=i()(l,[["render",s]]);t["default"]=f}}]); 2 | //# sourceMappingURL=chunk-2d0c1074.8dbc50ec.js.map -------------------------------------------------------------------------------- /vue/dist/js/chunk-2d0c1074.8dbc50ec.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["webpack:///./src/views/Password.vue","webpack:///./src/views/Password.vue?72a1"],"names":["style","ref","model","form","status-icon","rules","label-width","class","label","prop","password2","type","autocomplete","form2","password","checkpassword","submitForm","resetForm","name","data","validatePass2","rule","value","callback","Error","truepassword","validatePass","validatePass3","id","validator","trigger","required","created","user","JSON","parse","sessionStorage","getItem","this","methods","$refs","validate","valid","request","put","then","res","code","success","removeItem","$router","push","error","msg","formName","resetFields","__exports__","render"],"mappings":"wKAiCmF,M,+BACR,M,2RAjCzE,gCAqCM,YApCJ,yBAmCU,GAnCDA,MAAA,yDAAwD,C,8BAC/D,iBAiCU,CAjCV,yBAiCU,GAhCNC,IAAI,OACHC,MAAO,EAAAC,KACRC,cAAA,GACCC,MAAO,EAAAA,MACRC,cAAY,QACZC,MAAM,iB,+BAER,iBAMe,CANf,yBAMe,GANDC,MAAM,MAAMC,KAAK,a,+BAC7B,iBAIY,CAJZ,yBAIY,G,WAHC,EAAAN,KAAKO,U,qDAAL,EAAAP,KAAKO,UAAS,IACvBC,KAAK,WACLC,aAAa,O,iCAGnB,yBAMe,GANDJ,MAAM,MAAMC,KAAK,Y,+BAC7B,iBAIY,CAJZ,yBAIY,G,WAHC,EAAAI,MAAMC,S,qDAAN,EAAAD,MAAMC,SAAQ,IACvBH,KAAK,WACLC,aAAa,O,iCAGnB,yBAMe,GANDJ,MAAM,QAAQC,KAAK,iB,+BAC/B,iBAIY,CAJZ,yBAIY,G,WAHC,EAAAN,KAAKY,c,qDAAL,EAAAZ,KAAKY,cAAa,IAC3BJ,KAAK,WACLC,aAAa,O,iCAGnB,yBAGe,Q,8BAFb,iBAAuF,CAAvF,yBAAuF,GAA5ED,KAAK,UAAW,QAAO,EAAAK,WAAYhB,MAAA,yB,+BAA2B,iBAAE,C,0BAC3E,yBAA+E,GAAnE,QAAK,+BAAE,EAAAiB,UAAS,UAAUjB,MAAA,yB,+BAA2B,iBAAE,C,4FAW9D,GACbkB,KAAM,WACNC,KAFa,WAEN,WACCC,EAAgB,SAACC,EAAMC,EAAOC,GACrB,IAATD,EACFC,EAAS,IAAIC,MAAM,YAEf,EAAKrB,KAAKO,YAAc,EAAKP,KAAKsB,cACpCF,EAAS,IAAIC,MAAM,SAErBD,MAGEG,EAAe,SAACL,EAAMC,EAAOC,GACnB,KAAVD,EACFC,EAAS,IAAIC,MAAM,WAKnBD,KAGEI,EAAgB,SAACN,EAAMC,EAAOC,GACpB,KAAVD,EACFC,EAAS,IAAIC,MAAM,YACVF,IAAU,EAAKT,MAAMC,SAC9BS,EAAS,IAAIC,MAAM,cAEnBD,KAGJ,MAAO,CACLpB,KAAM,CACJO,UAAW,GACXK,cAAe,GACfU,aAAa,IAEfZ,MAAM,CACJC,SAAS,GACTc,GAAG,GAELvB,MAAO,CACLS,SAAU,CAAC,CAAEe,UAAWH,EAAcI,QAAS,OAAQC,UAAU,IACjEhB,cAAe,CAAC,CAAEc,UAAWF,EAAeG,QAAS,OAAOC,UAAU,IACtErB,UAAW,CAAC,CAAEmB,UAAWT,EAAeU,QAAS,OAAOC,UAAU,OAIxEC,QAjDa,WAkDX,IAAIC,EAAOC,KAAKC,MAAMC,eAAeC,QAAQ,SAC7CC,KAAKnC,KAAKsB,aAAeQ,EAAKnB,SAC9BwB,KAAKzB,MAAMe,GAAKK,EAAKL,IAGvBW,QAAS,CACPvB,WADO,WACM,WACXsB,KAAKE,MAAM,QAAQC,UAAS,SAACC,GACvBA,GAEFC,EAAA,KAAQC,IAAI,QAAS,EAAK/B,OAAOgC,MAAK,SAAAC,GACpB,GAAZA,EAAIC,MACN,OAAUC,QAAQ,gBAClBZ,eAAea,WAAW,QAC1B,EAAKC,QAAQC,KAAK,WAElB,OAAUC,MAAMN,EAAIO,YAM9BpC,UAjBO,SAiBGqC,GACRhB,KAAKE,MAAMc,GAAUC,iB,qBCjH3B,MAAMC,EAA2B,IAAgB,EAAQ,CAAC,CAAC,SAASC,KAErD","file":"js/chunk-2d0c1074.8dbc50ec.js","sourcesContent":["\r\n\r\n\r\n\r\n\r\n","import { render } from \"./Password.vue?vue&type=template&id=69e33813\"\nimport script from \"./Password.vue?vue&type=script&lang=js\"\nexport * from \"./Password.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"C:\\\\Users\\\\Administrator4\\\\Desktop\\\\library-system\\\\vue\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__"],"sourceRoot":""} -------------------------------------------------------------------------------- /vue/dist/js/chunk-33419c76.697ed836.js: -------------------------------------------------------------------------------- 1 | (window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-33419c76"],{"0b42":function(e,t,r){var n=r("da84"),o=r("e8b5"),c=r("68ee"),a=r("861d"),l=r("b622"),i=l("species"),u=n.Array;e.exports=function(e){var t;return o(e)&&(t=e.constructor,c(t)&&(t===u||o(t.prototype))?t=void 0:a(t)&&(t=t[i],null===t&&(t=void 0))),void 0===t?u:t}},1511:function(e,t,r){"use strict";r.r(t);var n=r("7a23"),o={class:"home",style:{padding:"10px"}},c={style:{margin:"10px 0"}},a=Object(n["createTextVNode"])("查询"),l=Object(n["createTextVNode"])("重置"),i={style:{margin:"10px 0"}},u=Object(n["createTextVNode"])("批量删除"),d=Object(n["createTextVNode"])("编辑"),s=Object(n["createTextVNode"])("删除"),f={style:{margin:"10px 0"}},b=Object(n["createTextVNode"])("男"),h=Object(n["createTextVNode"])("女"),O={class:"dialog-footer"},j=Object(n["createTextVNode"])("取 消"),m=Object(n["createTextVNode"])("确 定");function p(e,t,r,p,V,C){var N=Object(n["resolveComponent"])("search"),g=Object(n["resolveComponent"])("el-icon"),x=Object(n["resolveComponent"])("el-input"),w=Object(n["resolveComponent"])("el-form-item"),v=Object(n["resolveComponent"])("el-button"),_=Object(n["resolveComponent"])("el-form"),y=Object(n["resolveComponent"])("el-popconfirm"),k=Object(n["resolveComponent"])("el-table-column"),S=Object(n["resolveComponent"])("el-table"),z=Object(n["resolveComponent"])("el-pagination"),U=Object(n["resolveComponent"])("el-radio"),B=Object(n["resolveComponent"])("el-dialog");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",o,[Object(n["createElementVNode"])("div",c,[Object(n["createVNode"])(_,{inline:"true",size:"small"},{default:Object(n["withCtx"])((function(){return[Object(n["createVNode"])(w,{label:"读者编号"},{default:Object(n["withCtx"])((function(){return[Object(n["createVNode"])(x,{modelValue:V.search1,"onUpdate:modelValue":t[0]||(t[0]=function(e){return V.search1=e}),placeholder:"请输入读者编号",clearable:""},{prefix:Object(n["withCtx"])((function(){return[Object(n["createVNode"])(g,{class:"el-input__icon"},{default:Object(n["withCtx"])((function(){return[Object(n["createVNode"])(N)]})),_:1})]})),_:1},8,["modelValue"])]})),_:1}),Object(n["createVNode"])(w,{label:"姓名"},{default:Object(n["withCtx"])((function(){return[Object(n["createVNode"])(x,{modelValue:V.search2,"onUpdate:modelValue":t[1]||(t[1]=function(e){return V.search2=e}),placeholder:"请输入姓名",clearable:""},{prefix:Object(n["withCtx"])((function(){return[Object(n["createVNode"])(g,{class:"el-input__icon"},{default:Object(n["withCtx"])((function(){return[Object(n["createVNode"])(N)]})),_:1})]})),_:1},8,["modelValue"])]})),_:1}),Object(n["createVNode"])(w,{label:"电话号码"},{default:Object(n["withCtx"])((function(){return[Object(n["createVNode"])(x,{modelValue:V.search3,"onUpdate:modelValue":t[2]||(t[2]=function(e){return V.search3=e}),placeholder:"请输入电话号码",clearable:""},{prefix:Object(n["withCtx"])((function(){return[Object(n["createVNode"])(g,{class:"el-input__icon"},{default:Object(n["withCtx"])((function(){return[Object(n["createVNode"])(N)]})),_:1})]})),_:1},8,["modelValue"])]})),_:1}),Object(n["createVNode"])(w,{label:"地址"},{default:Object(n["withCtx"])((function(){return[Object(n["createVNode"])(x,{modelValue:V.search4,"onUpdate:modelValue":t[3]||(t[3]=function(e){return V.search4=e}),placeholder:"请输入地址",clearable:""},{prefix:Object(n["withCtx"])((function(){return[Object(n["createVNode"])(g,{class:"el-input__icon"},{default:Object(n["withCtx"])((function(){return[Object(n["createVNode"])(N)]})),_:1})]})),_:1},8,["modelValue"])]})),_:1}),Object(n["createVNode"])(w,null,{default:Object(n["withCtx"])((function(){return[Object(n["createVNode"])(v,{type:"primary",style:{"margin-left":"1%"},onClick:C.load,size:"mini"},{default:Object(n["withCtx"])((function(){return[a]})),_:1},8,["onClick"])]})),_:1}),Object(n["createVNode"])(w,null,{default:Object(n["withCtx"])((function(){return[Object(n["createVNode"])(v,{size:"mini",type:"danger",onClick:C.clear},{default:Object(n["withCtx"])((function(){return[l]})),_:1},8,["onClick"])]})),_:1})]})),_:1})]),Object(n["createElementVNode"])("div",i,[1==V.user.role?(Object(n["openBlock"])(),Object(n["createBlock"])(y,{key:0,title:"确认删除?",onConfirm:C.deleteBatch},{reference:Object(n["withCtx"])((function(){return[Object(n["createVNode"])(v,{type:"danger",size:"mini"},{default:Object(n["withCtx"])((function(){return[u]})),_:1})]})),_:1},8,["onConfirm"])):Object(n["createCommentVNode"])("",!0)]),Object(n["createVNode"])(S,{data:V.tableData,stripe:"",border:"true",onSelectionChange:C.handleSelectionChange},{default:Object(n["withCtx"])((function(){return[1==V.user.role?(Object(n["openBlock"])(),Object(n["createBlock"])(k,{key:0,type:"selection",width:"55"})):Object(n["createCommentVNode"])("",!0),Object(n["createVNode"])(k,{prop:"id",label:"读者编号",sortable:""}),Object(n["createVNode"])(k,{prop:"username",label:"用户名"}),Object(n["createVNode"])(k,{prop:"nickName",label:"姓名"}),Object(n["createVNode"])(k,{prop:"phone",label:"电话号码"}),Object(n["createVNode"])(k,{prop:"sex",label:"性别"}),Object(n["createVNode"])(k,{prop:"address",label:"地址"}),Object(n["createVNode"])(k,{fixed:"right",label:"操作"},{default:Object(n["withCtx"])((function(e){return[Object(n["createVNode"])(v,{size:"mini",onClick:function(t){return C.handleEdit(e.row)}},{default:Object(n["withCtx"])((function(){return[d]})),_:2},1032,["onClick"]),Object(n["createVNode"])(y,{title:"确认删除?",onConfirm:function(t){return C.handleDelete(e.row.id)}},{reference:Object(n["withCtx"])((function(){return[Object(n["createVNode"])(v,{type:"danger",size:"mini"},{default:Object(n["withCtx"])((function(){return[s]})),_:1})]})),_:2},1032,["onConfirm"])]})),_:1})]})),_:1},8,["data","onSelectionChange"]),Object(n["createElementVNode"])("div",f,[Object(n["createVNode"])(z,{currentPage:V.currentPage,"onUpdate:currentPage":t[4]||(t[4]=function(e){return V.currentPage=e}),"page-sizes":[5,10,20],"page-size":V.pageSize,layout:"total, sizes, prev, pager, next, jumper",total:V.total,onSizeChange:C.handleSizeChange,onCurrentChange:C.handleCurrentChange},null,8,["currentPage","page-size","total","onSizeChange","onCurrentChange"]),Object(n["createVNode"])(B,{modelValue:V.dialogVisible,"onUpdate:modelValue":t[12]||(t[12]=function(e){return V.dialogVisible=e}),title:"编辑读者信息",width:"30%"},{footer:Object(n["withCtx"])((function(){return[Object(n["createElementVNode"])("span",O,[Object(n["createVNode"])(v,{onClick:t[11]||(t[11]=function(e){return V.dialogVisible=!1})},{default:Object(n["withCtx"])((function(){return[j]})),_:1}),Object(n["createVNode"])(v,{type:"primary",onClick:C.save},{default:Object(n["withCtx"])((function(){return[m]})),_:1},8,["onClick"])])]})),default:Object(n["withCtx"])((function(){return[Object(n["createVNode"])(_,{model:V.form,"label-width":"120px"},{default:Object(n["withCtx"])((function(){return[Object(n["createVNode"])(w,{label:"用户名"},{default:Object(n["withCtx"])((function(){return[Object(n["createVNode"])(x,{style:{width:"80%"},modelValue:V.form.username,"onUpdate:modelValue":t[5]||(t[5]=function(e){return V.form.username=e})},null,8,["modelValue"])]})),_:1}),Object(n["createVNode"])(w,{label:"昵称"},{default:Object(n["withCtx"])((function(){return[Object(n["createVNode"])(x,{style:{width:"80%"},modelValue:V.form.nickName,"onUpdate:modelValue":t[6]||(t[6]=function(e){return V.form.nickName=e})},null,8,["modelValue"])]})),_:1}),Object(n["createVNode"])(w,{label:"电话号码"},{default:Object(n["withCtx"])((function(){return[Object(n["createVNode"])(x,{style:{width:"80%"},modelValue:V.form.phone,"onUpdate:modelValue":t[7]||(t[7]=function(e){return V.form.phone=e})},null,8,["modelValue"])]})),_:1}),Object(n["createVNode"])(w,{label:"性别"},{default:Object(n["withCtx"])((function(){return[Object(n["createElementVNode"])("div",null,[Object(n["createVNode"])(U,{modelValue:V.form.sex,"onUpdate:modelValue":t[8]||(t[8]=function(e){return V.form.sex=e}),label:"男"},{default:Object(n["withCtx"])((function(){return[b]})),_:1},8,["modelValue"]),Object(n["createVNode"])(U,{modelValue:V.form.sex,"onUpdate:modelValue":t[9]||(t[9]=function(e){return V.form.sex=e}),label:"女"},{default:Object(n["withCtx"])((function(){return[h]})),_:1},8,["modelValue"])])]})),_:1}),Object(n["createVNode"])(w,{label:"地址"},{default:Object(n["withCtx"])((function(){return[Object(n["createVNode"])(x,{type:"textarea",style:{width:"80%"},modelValue:V.form.address,"onUpdate:modelValue":t[10]||(t[10]=function(e){return V.form.address=e})},null,8,["modelValue"])]})),_:1})]})),_:1},8,["model"])]})),_:1},8,["modelValue"])])])}r("d81d"),r("e9c4");var V=r("b775"),C=r("3ef4"),N={created:function(){this.load();var e=sessionStorage.getItem("user")||"{}";this.user=JSON.parse(e)},name:"User",methods:{handleSelectionChange:function(e){this.ids=e.map((function(e){return e.id}))},deleteBatch:function(){var e=this;this.ids.length?V["a"].post("/user/deleteBatch",this.ids).then((function(t){"0"===t.code?(C["a"].success("批量删除成功"),e.load()):C["a"].error(t.msg)})):C["a"].warning("请选择数据!")},load:function(){var e=this;V["a"].get("user/usersearch",{params:{pageNum:this.currentPage,pageSize:this.pageSize,search1:this.search1,search2:this.search2,search3:this.search3,search4:this.search4}}).then((function(t){console.log(t),e.tableData=t.data.records,e.total=t.data.total}))},clear:function(){this.search1="",this.search2="",this.search3="",this.load()},handleDelete:function(e){var t=this;V["a"].delete("user/"+e).then((function(e){console.log(e),0==e.code?C["a"].success("删除成功"):C["a"].error(e.msg),t.load()}))},add:function(){this.dialogVisible=!0,this.form={}},save:function(){var e=this;this.form.id?V["a"].put("/user",this.form).then((function(t){console.log(t),0==t.code?Object(C["a"])({message:"更新成功",type:"success"}):C["a"].error(t.msg),e.load(),e.dialogVisible=!1})):V["a"].post("/user",this.form).then((function(t){console.log(t),0==t.code?C["a"].success("添加成功"):C["a"].error(t.msg),e.load(),e.dialogVisible=!1}))},handleEdit:function(e){this.form=JSON.parse(JSON.stringify(e)),this.dialogVisible=!0},handleSizeChange:function(e){this.pageSize=e,this.load()},handleCurrentChange:function(e){this.pageNum=e,this.load()}},data:function(){return{form:{},dialogVisible:!1,search1:"",search2:"",search3:"",search4:"",total:10,currentPage:1,pageSize:10,tableData:[],user:{},ids:[]}}},g=r("6b0d"),x=r.n(g);const w=x()(N,[["render",p]]);t["default"]=w},"1dde":function(e,t,r){var n=r("d039"),o=r("b622"),c=r("2d00"),a=o("species");e.exports=function(e){return c>=51||!n((function(){var t=[],r=t.constructor={};return r[a]=function(){return{foo:1}},1!==t[e](Boolean).foo}))}},"65f0":function(e,t,r){var n=r("0b42");e.exports=function(e,t){return new(n(e))(0===t?0:t)}},b727:function(e,t,r){var n=r("0366"),o=r("e330"),c=r("44ad"),a=r("7b0b"),l=r("07fa"),i=r("65f0"),u=o([].push),d=function(e){var t=1==e,r=2==e,o=3==e,d=4==e,s=6==e,f=7==e,b=5==e||s;return function(h,O,j,m){for(var p,V,C=a(h),N=c(C),g=n(O,j),x=l(N),w=0,v=m||i,_=t?v(h,x):r||f?v(h,0):void 0;x>w;w++)if((b||w in N)&&(p=N[w],V=g(p,w,C),e))if(t)_[w]=V;else if(V)switch(e){case 3:return!0;case 5:return p;case 6:return w;case 2:u(_,p)}else switch(e){case 4:return!1;case 7:u(_,p)}return s?-1:o||d?d:_}};e.exports={forEach:d(0),map:d(1),filter:d(2),some:d(3),every:d(4),find:d(5),findIndex:d(6),filterReject:d(7)}},d81d:function(e,t,r){"use strict";var n=r("23e7"),o=r("b727").map,c=r("1dde"),a=c("map");n({target:"Array",proto:!0,forced:!a},{map:function(e){return o(this,e,arguments.length>1?arguments[1]:void 0)}})},e8b5:function(e,t,r){var n=r("c6b6");e.exports=Array.isArray||function(e){return"Array"==n(e)}},e9c4:function(e,t,r){var n=r("23e7"),o=r("da84"),c=r("d066"),a=r("2ba4"),l=r("e330"),i=r("d039"),u=o.Array,d=c("JSON","stringify"),s=l(/./.exec),f=l("".charAt),b=l("".charCodeAt),h=l("".replace),O=l(1..toString),j=/[\uD800-\uDFFF]/g,m=/^[\uD800-\uDBFF]$/,p=/^[\uDC00-\uDFFF]$/,V=function(e,t,r){var n=f(r,t-1),o=f(r,t+1);return s(m,e)&&!s(p,o)||s(p,e)&&!s(m,n)?"\\u"+O(b(e,0),16):e},C=i((function(){return'"\\udf06\\ud834"'!==d("\udf06\ud834")||'"\\udead"'!==d("\udead")}));d&&n({target:"JSON",stat:!0,forced:C},{stringify:function(e,t,r){for(var n=0,o=arguments.length,c=u(o);n=51||!n((function(){var t=[],r=t.constructor={};return r[c]=function(){return{foo:1}},1!==t[e](Boolean).foo}))}},"2a6c":function(e,t,r){},"349a":function(e,t,r){"use strict";r("2a6c")},"408a":function(e,t,r){var n=r("e330");e.exports=n(1..valueOf)},5899:function(e,t){e.exports="\t\n\v\f\r                 \u2028\u2029\ufeff"},"58a8":function(e,t,r){var n=r("e330"),o=r("1d80"),a=r("577e"),c=r("5899"),i=n("".replace),u="["+c+"]",d=RegExp("^"+u+u+"*"),f=RegExp(u+u+"*$"),s=function(e){return function(t){var r=a(o(t));return 1&e&&(r=i(r,d,"")),2&e&&(r=i(r,f,"")),r}};e.exports={start:s(1),end:s(2),trim:s(3)}},"5d6d":function(e,t,r){},"65f0":function(e,t,r){var n=r("0b42");e.exports=function(e,t){return new(n(e))(0===t?0:t)}},7156:function(e,t,r){var n=r("1626"),o=r("861d"),a=r("d2bb");e.exports=function(e,t,r){var c,i;return a&&n(c=t.constructor)&&c!==r&&o(i=c.prototype)&&i!==r.prototype&&a(e,i),e}},8232:function(e,t,r){"use strict";r("5d6d")},8418:function(e,t,r){"use strict";var n=r("a04b"),o=r("9bf2"),a=r("5c6c");e.exports=function(e,t,r){var c=n(t);c in e?o.f(e,c,a(0,r)):e[c]=r}},"99af":function(e,t,r){"use strict";var n=r("23e7"),o=r("da84"),a=r("d039"),c=r("e8b5"),i=r("861d"),u=r("7b0b"),d=r("07fa"),f=r("8418"),s=r("65f0"),l=r("1dde"),p=r("b622"),b=r("2d00"),h=p("isConcatSpreadable"),m=9007199254740991,v="Maximum allowed index exceeded",j=o.TypeError,O=b>=51||!a((function(){var e=[];return e[h]=!1,e.concat()[0]!==e})),g=l("concat"),C=function(e){if(!i(e))return!1;var t=e[h];return void 0!==t?!!t:c(e)},y=!O||!g;n({target:"Array",proto:!0,forced:y},{concat:function(e){var t,r,n,o,a,c=u(this),i=s(c,0),l=0;for(t=-1,n=arguments.length;tm)throw j(v);for(r=0;r=m)throw j(v);f(i,l++,a)}return i.length=l,i}})},a15b:function(e,t,r){"use strict";var n=r("23e7"),o=r("e330"),a=r("44ad"),c=r("fc6a"),i=r("a640"),u=o([].join),d=a!=Object,f=i("join",",");n({target:"Array",proto:!0,forced:d||!f},{join:function(e){return u(c(this),void 0===e?",":e)}})},a55b:function(e,t,r){"use strict";r.r(t);var n=r("7a23"),o=function(e){return Object(n["pushScopeId"])("data-v-a8e2f1f2"),e=e(),Object(n["popScopeId"])(),e},a={class:"login-container"},c=o((function(){return Object(n["createElementVNode"])("h2",{class:"title",style:{"margin-bottom":"20px"}},"系统登陆",-1)})),i={style:{display:"flex"}},u=Object(n["createTextVNode"])("登 录"),d=Object(n["createTextVNode"])("前往注册 >> ");function f(e,t,r,o,f,s){var l=Object(n["resolveComponent"])("User"),p=Object(n["resolveComponent"])("el-icon"),b=Object(n["resolveComponent"])("el-input"),h=Object(n["resolveComponent"])("el-form-item"),m=Object(n["resolveComponent"])("Lock"),v=Object(n["resolveComponent"])("ValidCode"),j=Object(n["resolveComponent"])("el-button"),O=Object(n["resolveComponent"])("el-form");return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",a,[Object(n["createVNode"])(O,{ref:"form",model:f.form,rules:f.rules,class:"login-page"},{default:Object(n["withCtx"])((function(){return[c,Object(n["createVNode"])(h,{prop:"username"},{default:Object(n["withCtx"])((function(){return[Object(n["createVNode"])(b,{modelValue:f.form.username,"onUpdate:modelValue":t[0]||(t[0]=function(e){return f.form.username=e}),clearable:""},{prefix:Object(n["withCtx"])((function(){return[Object(n["createVNode"])(p,{class:"el-input__icon"},{default:Object(n["withCtx"])((function(){return[Object(n["createVNode"])(l)]})),_:1})]})),_:1},8,["modelValue"])]})),_:1}),Object(n["createVNode"])(h,{prop:"password"},{default:Object(n["withCtx"])((function(){return[Object(n["createVNode"])(b,{modelValue:f.form.password,"onUpdate:modelValue":t[1]||(t[1]=function(e){return f.form.password=e}),clearable:"","show-password":""},{prefix:Object(n["withCtx"])((function(){return[Object(n["createVNode"])(p,{class:"el-input__icon"},{default:Object(n["withCtx"])((function(){return[Object(n["createVNode"])(m)]})),_:1})]})),_:1},8,["modelValue"])]})),_:1}),Object(n["createVNode"])(h,null,{default:Object(n["withCtx"])((function(){return[Object(n["createElementVNode"])("div",i,[Object(n["createVNode"])(b,{modelValue:f.form.validCode,"onUpdate:modelValue":t[2]||(t[2]=function(e){return f.form.validCode=e}),style:{width:"45%"},placeholder:"请输入验证码"},null,8,["modelValue"]),Object(n["createVNode"])(v,{onInput:s.createValidCode,style:{width:"50%"}},null,8,["onInput"])])]})),_:1}),Object(n["createVNode"])(h,null,{default:Object(n["withCtx"])((function(){return[Object(n["createVNode"])(j,{type:"primary",style:{width:"100%"},onClick:s.login},{default:Object(n["withCtx"])((function(){return[u]})),_:1},8,["onClick"])]})),_:1}),Object(n["createVNode"])(h,null,{default:Object(n["withCtx"])((function(){return[Object(n["createVNode"])(j,{type:"text",onClick:t[3]||(t[3]=function(t){return e.$router.push("/register")})},{default:Object(n["withCtx"])((function(){return[d]})),_:1})]})),_:1})]})),_:1},8,["model","rules"])])}r("e9c4");var s=r("b775"),l=r("3ef4"),p=r("df8f"),b={name:"Login",components:{ValidCode:p["a"]},data:function(){return{validCode:"",form:{},rules:{username:[{required:!0,message:"请输入用户名",trigger:"blur"}],password:[{required:!0,message:"请输入密码",trigger:"blur"}]}}},methods:{createValidCode:function(e){this.validCode=e},login:function(){var e=this;this.$refs["form"].validate((function(t){if(t){if(!e.form.validCode)return void l["a"].error("请填写验证码");if(e.form.validCode.toLowerCase()!==e.validCode.toLowerCase())return void l["a"].error("验证码错误");s["a"].post("user/login",e.form).then((function(t){0==t.code?(l["a"].success("登录成功"),sessionStorage.setItem("user",JSON.stringify(t.data)),e.$router.push("/dashboard")):l["a"].error(t.msg)}))}}))}}},h=(r("8232"),r("6b0d")),m=r.n(h);const v=m()(b,[["render",f],["__scopeId","data-v-a8e2f1f2"]]);t["default"]=v},a640:function(e,t,r){"use strict";var n=r("d039");e.exports=function(e,t){var r=[][e];return!!r&&n((function(){r.call(null,t||function(){throw 1},1)}))}},a9e3:function(e,t,r){"use strict";var n=r("83ab"),o=r("da84"),a=r("e330"),c=r("94ca"),i=r("6eeb"),u=r("1a2d"),d=r("7156"),f=r("3a9b"),s=r("d9b5"),l=r("c04e"),p=r("d039"),b=r("241c").f,h=r("06cf").f,m=r("9bf2").f,v=r("408a"),j=r("58a8").trim,O="Number",g=o[O],C=g.prototype,y=o.TypeError,N=a("".slice),w=a("".charCodeAt),x=function(e){var t=l(e,"number");return"bigint"==typeof t?t:V(t)},V=function(e){var t,r,n,o,a,c,i,u,d=l(e,"number");if(s(d))throw y("Cannot convert a Symbol value to a number");if("string"==typeof d&&d.length>2)if(d=j(d),t=w(d,0),43===t||45===t){if(r=w(d,2),88===r||120===r)return NaN}else if(48===t){switch(w(d,1)){case 66:case 98:n=2,o=49;break;case 79:case 111:n=8,o=55;break;default:return+d}for(a=N(d,2),c=a.length,i=0;io)return NaN;return parseInt(a,n)}return+d};if(c(O,!g(" 0o1")||!g("0b1")||g("+0x1"))){for(var _,I=function(e){var t=arguments.length<1?0:g(x(e)),r=this;return f(C,r)&&p((function(){v(r)}))?d(Object(t),r,I):t},S=n?b(g):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,isFinite,isInteger,isNaN,isSafeInteger,parseFloat,parseInt,fromString,range".split(","),E=0;S.length>E;E++)u(g,_=S[E])&&!u(I,_)&&m(I,_,h(g,_));I.prototype=C,C.constructor=I,i(o,O,I)}},b727:function(e,t,r){var n=r("0366"),o=r("e330"),a=r("44ad"),c=r("7b0b"),i=r("07fa"),u=r("65f0"),d=o([].push),f=function(e){var t=1==e,r=2==e,o=3==e,f=4==e,s=6==e,l=7==e,p=5==e||s;return function(b,h,m,v){for(var j,O,g=c(b),C=a(g),y=n(h,m),N=i(C),w=0,x=v||u,V=t?x(b,N):r||l?x(b,0):void 0;N>w;w++)if((p||w in C)&&(j=C[w],O=y(j,w,g),e))if(t)V[w]=O;else if(O)switch(e){case 3:return!0;case 5:return j;case 6:return w;case 2:d(V,j)}else switch(e){case 4:return!1;case 7:d(V,j)}return s?-1:o||f?f:V}};e.exports={forEach:f(0),map:f(1),filter:f(2),some:f(3),every:f(4),find:f(5),findIndex:f(6),filterReject:f(7)}},d81d:function(e,t,r){"use strict";var n=r("23e7"),o=r("b727").map,a=r("1dde"),c=a("map");n({target:"Array",proto:!0,forced:!c},{map:function(e){return o(this,e,arguments.length>1?arguments[1]:void 0)}})},df8f:function(e,t,r){"use strict";r("99af");var n=r("7a23");function o(e,t,r,o,a,c){return Object(n["openBlock"])(),Object(n["createElementBlock"])("div",{class:"ValidCode disabled-select",style:Object(n["normalizeStyle"])("width:".concat(r.width,"; height:").concat(r.height)),onClick:t[0]||(t[0]=function(){return c.refreshCode&&c.refreshCode.apply(c,arguments)})},[(Object(n["openBlock"])(!0),Object(n["createElementBlock"])(n["Fragment"],null,Object(n["renderList"])(a.codeList,(function(e,t){return Object(n["openBlock"])(),Object(n["createElementBlock"])("span",{key:t,style:Object(n["normalizeStyle"])(c.getStyle(e))},Object(n["toDisplayString"])(e.code),5)})),128))],4)}r("a9e3"),r("a15b"),r("d81d");var a={name:"ValidCode",model:{prop:"value",event:"input"},props:{width:{type:String,default:"100px"},height:{type:String,default:"40px"},length:{type:Number,default:4},refresh:{type:Number}},data:function(){return{codeList:[]}},watch:{refresh:function(){this.createdCode()}},mounted:function(){this.createdCode()},methods:{refreshCode:function(){this.createdCode()},createdCode:function(){for(var e=this.length,t=[],r="ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz0123456789",n=r.length,o=0;o 1%", 29 | "last 2 versions", 30 | "not dead" 31 | ] 32 | } 33 | -------------------------------------------------------------------------------- /vue/src/App.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | 13 | -------------------------------------------------------------------------------- /vue/src/assets/css/global.css: -------------------------------------------------------------------------------- 1 | /* 所有元素都生效*/ 2 | *{ 3 | margin: 0; 4 | padding: 0; 5 | box-sizing: border-box; 6 | } -------------------------------------------------------------------------------- /vue/src/assets/css/style.css: -------------------------------------------------------------------------------- 1 | /** 2 | * 全局样式表 3 | */ 4 | 5 | /** 全局字体 */ 6 | body { 7 | font-family: 'Helvetica Neue', Helvetica, 'PingFang SC', 'Hiragino Sans GB', 'Microsoft YaHei', '微软雅黑', Arial, 8 | sans-serif; 9 | } 10 | 11 | .el-table__header-wrapper th, 12 | .el-table__fixed-header-wrapper th { 13 | word-break: break-word; 14 | background-color: #f8f8f9; 15 | color: #515a6e; 16 | height: 40px; 17 | font-size: 14px; 18 | } 19 | 20 | .el-pagination { 21 | float: right; 22 | margin-top: 20px; 23 | margin-right: 100px; 24 | } 25 | 26 | /** 动画过渡 */ 27 | /* fade-transform */ 28 | .fade-transform-leave-active, 29 | .fade-transform-enter-active { 30 | transition: all 0.5s; 31 | } 32 | 33 | .fade-transform-enter { 34 | opacity: 0; 35 | transform: translateX(-15px); 36 | } 37 | 38 | .fade-transform-leave-to { 39 | opacity: 0; 40 | transform: translateX(15px); 41 | } 42 | 43 | /* breadcrumb transition */ 44 | .breadcrumb-enter-active, 45 | .breadcrumb-leave-active { 46 | transition: all 0.5s; 47 | } 48 | 49 | .breadcrumb-enter, 50 | .breadcrumb-leave-active { 51 | opacity: 0; 52 | transform: translateX(20px); 53 | } 54 | 55 | .breadcrumb-move { 56 | transition: all 0.5s; 57 | } 58 | 59 | .breadcrumb-leave-active { 60 | position: absolute; 61 | } 62 | -------------------------------------------------------------------------------- /vue/src/assets/icon/iconfont.css: -------------------------------------------------------------------------------- 1 | .icon { 2 | width: 1em; 3 | height: 1em; 4 | vertical-align: -0.15em; 5 | fill: currentColor; 6 | overflow: hidden; 7 | } 8 | -------------------------------------------------------------------------------- /vue/src/assets/icon/login.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XinChennn/xc016-library-system/f078e3c8157b09f9a1bffb74982327aaf2b0ba20/vue/src/assets/icon/login.png -------------------------------------------------------------------------------- /vue/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XinChennn/xc016-library-system/f078e3c8157b09f9a1bffb74982327aaf2b0ba20/vue/src/assets/logo.png -------------------------------------------------------------------------------- /vue/src/components/Aside.vue: -------------------------------------------------------------------------------- 1 | 78 | 79 | 98 | 99 | -------------------------------------------------------------------------------- /vue/src/components/Header.vue: -------------------------------------------------------------------------------- 1 | 23 | 24 | 50 | 51 | -------------------------------------------------------------------------------- /vue/src/components/Validate.vue: -------------------------------------------------------------------------------- 1 | 14 | 15 | 84 | 85 | 96 | -------------------------------------------------------------------------------- /vue/src/img/bg2.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /vue/src/layout/Layout.vue: -------------------------------------------------------------------------------- 1 | 11 | 12 | 24 | 25 | -------------------------------------------------------------------------------- /vue/src/main.js: -------------------------------------------------------------------------------- 1 | import { createApp } from 'vue' 2 | import App from './App.vue' 3 | import router from './router' 4 | import store from './store' 5 | import '@/assets/css/global.css' 6 | 7 | import zhCn from 'element-plus/es/locale/lang/zh-cn' 8 | import ElementPlus from 'element-plus' 9 | import 'element-plus/dist/index.css' 10 | import '@/assets/icon/iconfont.js' // 图标 11 | import '@/assets/icon/iconfont.css' 12 | const app =createApp(App) 13 | import * as ElIconModules from '@element-plus/icons' 14 | for(let iconName in ElIconModules){ 15 | app.component(iconName,ElIconModules[iconName]) 16 | } 17 | app.use(store).use(router).use(ElementPlus,{locale: zhCn,size:"small"}).mount('#app') 18 | -------------------------------------------------------------------------------- /vue/src/store/index.js: -------------------------------------------------------------------------------- 1 | import { createStore } from 'vuex' 2 | 3 | export default createStore({ 4 | state: { 5 | }, 6 | mutations: { 7 | }, 8 | actions: { 9 | }, 10 | modules: { 11 | } 12 | }) 13 | -------------------------------------------------------------------------------- /vue/src/utils/request.js: -------------------------------------------------------------------------------- 1 | import axios from 'axios' 2 | import router from "../router"; 3 | 4 | const request = axios.create({ 5 | baseURL: '/api', 6 | timeout: 5000 7 | }) 8 | 9 | // request 拦截器 10 | // 可以自请求发送前对请求做一些处理 11 | // 比如统一加token,对请求参数统一加密 12 | request.interceptors.request.use(config => { 13 | config.headers['Content-Type'] = 'application/json;charset=utf-8'; 14 | 15 | // config.headers['token'] = user.token; // 设置请求头 16 | //取出sessionStorage里面缓存的用户信息 17 | let userJson = sessionStorage.getItem("user") 18 | if(!userJson) 19 | { 20 | router.push("/login") 21 | } 22 | return config 23 | }, error => { 24 | return Promise.reject(error) 25 | }); 26 | 27 | // response 拦截器 28 | // 可以在接口响应后统一处理结果 29 | request.interceptors.response.use( 30 | response => { 31 | let res = response.data; 32 | // 如果是返回的文件 33 | if (response.config.responseType === 'blob') { 34 | return res 35 | } 36 | // 兼容服务端返回的字符串数据 37 | if (typeof res === 'string') { 38 | res = res ? JSON.parse(res) : res 39 | } 40 | return res; 41 | }, 42 | error => { 43 | console.log('err' + error) // for debug 44 | return Promise.reject(error) 45 | } 46 | ) 47 | 48 | 49 | export default request 50 | 51 | -------------------------------------------------------------------------------- /vue/src/views/BookWithUser.vue: -------------------------------------------------------------------------------- 1 | 106 | 107 | 264 | -------------------------------------------------------------------------------- /vue/src/views/Dashboard.vue: -------------------------------------------------------------------------------- 1 | 21 | 22 | 137 | 138 | -------------------------------------------------------------------------------- /vue/src/views/LendRecord.vue: -------------------------------------------------------------------------------- 1 | 119 | 120 | 293 | -------------------------------------------------------------------------------- /vue/src/views/Login.vue: -------------------------------------------------------------------------------- 1 | 33 | 34 | 101 | 102 | -------------------------------------------------------------------------------- /vue/src/views/Password.vue: -------------------------------------------------------------------------------- 1 | 41 | 42 | 124 | 125 | 128 | -------------------------------------------------------------------------------- /vue/src/views/Person.vue: -------------------------------------------------------------------------------- 1 | 35 | 36 | 69 | 70 | 93 | -------------------------------------------------------------------------------- /vue/src/views/Register.vue: -------------------------------------------------------------------------------- 1 | 51 | 52 | 146 | 147 | -------------------------------------------------------------------------------- /vue/src/views/User.vue: -------------------------------------------------------------------------------- 1 | 110 | 111 | 251 | -------------------------------------------------------------------------------- /vue/vue.config.js: -------------------------------------------------------------------------------- 1 | // 跨域配置 2 | module.exports = { 3 | devServer: { //记住,别写错了devServer//设置本地默认端口 选填 4 | port: 9876, 5 | proxy: { //设置代理,必须填 6 | '/api': { //设置拦截器 拦截器格式 斜杠+拦截器名字,名字可以自己定 7 | target: 'http://localhost:9090', //代理的目标地址 8 | changeOrigin: true, //是否设置同源,输入是的 9 | pathRewrite: { //路径重写 10 | '^/api': '' //选择忽略拦截器里面的内容 11 | } 12 | } 13 | } 14 | } 15 | } 16 | --------------------------------------------------------------------------------