diff --git a/SeKeshedemo/.idea/.gitignore b/SeKeshedemo/.idea/.gitignore deleted file mode 100644 index 463c03e..0000000 --- a/SeKeshedemo/.idea/.gitignore +++ /dev/null @@ -1,8 +0,0 @@ -# 默认忽略的文件 -/shelf/ -/workspace.xml -# 基于编辑器的 HTTP 客户端请求 -/httpRequests/ -# Datasource local storage ignored files -/dataSources/ -/dataSources.local.xml diff --git a/SeKeshedemo/.idea/compiler.xml b/SeKeshedemo/.idea/compiler.xml deleted file mode 100644 index bfc71e1..0000000 --- a/SeKeshedemo/.idea/compiler.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/SeKeshedemo/.idea/encodings.xml b/SeKeshedemo/.idea/encodings.xml deleted file mode 100644 index 63e9001..0000000 --- a/SeKeshedemo/.idea/encodings.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/SeKeshedemo/.idea/jarRepositories.xml b/SeKeshedemo/.idea/jarRepositories.xml deleted file mode 100644 index 712ab9d..0000000 --- a/SeKeshedemo/.idea/jarRepositories.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/SeKeshedemo/.idea/misc.xml b/SeKeshedemo/.idea/misc.xml deleted file mode 100644 index 88aa9a7..0000000 --- a/SeKeshedemo/.idea/misc.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/SeKeshedemo/.idea/uiDesigner.xml b/SeKeshedemo/.idea/uiDesigner.xml deleted file mode 100644 index 2b63946..0000000 --- a/SeKeshedemo/.idea/uiDesigner.xml +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/SeKeshedemo/.idea/workspace.xml b/SeKeshedemo/.idea/workspace.xml deleted file mode 100644 index a045fe5..0000000 --- a/SeKeshedemo/.idea/workspace.xml +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - { - "keyToString": { - "RequestMappingsPanelOrder0": "0", - "RequestMappingsPanelOrder1": "1", - "RequestMappingsPanelWidth0": "75", - "RequestMappingsPanelWidth1": "75", - "RunOnceActivity.OpenProjectViewOnStart": "true", - "RunOnceActivity.ShowReadmeOnStart": "true", - "WebServerToolWindowFactoryState": "false", - "last_opened_file_path": "D:/2025666/SeKeshedemo/src/main/java/com/example/demo", - "node.js.detected.package.eslint": "true", - "node.js.detected.package.tslint": "true", - "node.js.selected.package.eslint": "(autodetect)", - "node.js.selected.package.tslint": "(autodetect)", - "nodejs_package_manager_path": "npm", - "spring.configuration.checksum": "fe01ce2a7fbac8fafaed7c982a04e229", - "vue.rearranger.settings.migration": "true" - } -} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1753251776913 - - - - - - - - - - file://$PROJECT_DIR$/src/main/java/com/example/demo/controller/UserController.java - 127 - - - - - - - \ No newline at end of file diff --git a/SeKeshedemo/.mvn/wrapper/maven-wrapper.properties b/SeKeshedemo/.mvn/wrapper/maven-wrapper.properties deleted file mode 100644 index 12fbe1e..0000000 --- a/SeKeshedemo/.mvn/wrapper/maven-wrapper.properties +++ /dev/null @@ -1,19 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -wrapperVersion=3.3.2 -distributionType=only-script -distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.11/apache-maven-3.9.11-bin.zip diff --git a/SeKeshedemo/pom.xml b/SeKeshedemo/pom.xml deleted file mode 100644 index 1c6089d..0000000 --- a/SeKeshedemo/pom.xml +++ /dev/null @@ -1,109 +0,0 @@ - - - 4.0.0 - - org.springframework.boot - spring-boot-starter-parent - 3.4.2 - - - com.example - demo - 0.0.1-SNAPSHOT - jar - demo - demo - - - - - - - - - - - - - - - 17 - - - - org.springframework.boot - spring-boot-starter-thymeleaf - - - org.springframework.boot - spring-boot-starter-web - - - - - - - - - org.springframework.boot - spring-boot-starter-web-services - - - org.mybatis.spring.boot - mybatis-spring-boot-starter - 3.0.4 - - - - com.mysql - mysql-connector-j - runtime - - - org.springframework.boot - spring-boot-starter-tomcat - provided - - - org.springframework.boot - spring-boot-starter-test - test - - - org.mybatis.spring.boot - mybatis-spring-boot-starter-test - 3.0.4 - test - - - org.projectlombok - lombok - - - com.auth0 - java-jwt - 4.4.0 - - - - org.apache.tomcat - tomcat-jdbc - - - - - - - - - - - - org.springframework.boot - spring-boot-maven-plugin - - - - - diff --git a/SeKeshedemo/src/main/java/com/example/demo/Demo4Application.java b/SeKeshedemo/src/main/java/com/example/demo/Demo4Application.java deleted file mode 100644 index 0344102..0000000 --- a/SeKeshedemo/src/main/java/com/example/demo/Demo4Application.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.example.demo; - -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; - -@SpringBootApplication -public class Demo4Application { - - public static void main(String[] args) { - SpringApplication.run(Demo4Application.class, args); - } - -} diff --git a/SeKeshedemo/src/main/java/com/example/demo/config/MyFilter.java b/SeKeshedemo/src/main/java/com/example/demo/config/MyFilter.java deleted file mode 100644 index 05a6e96..0000000 --- a/SeKeshedemo/src/main/java/com/example/demo/config/MyFilter.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.example.demo.config; - -import com.example.demo.pojo.Result; -import com.fasterxml.jackson.databind.ObjectMapper; -import jakarta.servlet.*; -import jakarta.servlet.annotation.WebFilter; -import jakarta.servlet.http.HttpServletRequest; -import jakarta.servlet.http.HttpServletResponse; -import org.springframework.stereotype.Component; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; - -@Component -//閲嶇偣 -@WebFilter({"/user/*","/api","/upload","/borrow","/api/rank"}) -public class MyFilter implements Filter{ - - List exclude; - - @Override - public void init(FilterConfig filterConfig) throws ServletException { - System.out.println("鍒濆鍖朚yFilter=========================="); - exclude = new ArrayList<>(); - exclude.add("/user/login"); - exclude.add("/user/register"); - } - @Override - public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { - HttpServletResponse response = (HttpServletResponse) servletResponse; - HttpServletRequest request = (HttpServletRequest) servletRequest; - String requestURI = request.getRequestURI(); - if (exclude.contains(requestURI) || - requestURI.endsWith(".html") || - requestURI.endsWith(".js") || - requestURI.endsWith(".css") || - requestURI.endsWith(".png") || - requestURI.endsWith(".jpg") || - requestURI.endsWith(".jpeg") - ) { - // 鍦ㄦ帓闄ゅ垪琛ㄤ腑锛岀户缁繃婊ら摼 - filterChain.doFilter(servletRequest,servletResponse); - return; - } - - boolean loginflag = request.getSession().getAttribute("username") != null; - if(loginflag){ - //鐧婚檰鎴愬姛 - //杩欏氨浠g爜灏辨槸鏀捐 - filterChain.doFilter(servletRequest, servletResponse); - }else{ - //鐧婚檰澶辫触锛屾墦鍥炶姹 - ObjectMapper mapper = new ObjectMapper(); - response.getWriter().write(mapper.writeValueAsString(Result.error("鏈櫥褰"))); - } - - System.out.println("filter=========================="); - } - @Override - public void destroy() { - System.out.println("閿姣乫ilter=========================="); - } -} diff --git a/SeKeshedemo/src/main/java/com/example/demo/controller/ArticleController.java b/SeKeshedemo/src/main/java/com/example/demo/controller/ArticleController.java deleted file mode 100644 index a5b6da0..0000000 --- a/SeKeshedemo/src/main/java/com/example/demo/controller/ArticleController.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.example.demo.controller; - -import com.example.demo.mapper.UserMapper; -import com.example.demo.pojo.Article; -import com.example.demo.pojo.Result; -import com.example.demo.service.ArticleService; -import com.fasterxml.jackson.core.JsonProcessingException; -import jakarta.servlet.http.HttpServletRequest; -import jakarta.servlet.http.HttpSession; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.*; - -import java.util.List; - -@RestController -@CrossOrigin -@RequestMapping("/api") -public class ArticleController { - - - @Autowired - ArticleService articleService; - - @Autowired - UserMapper userMapper; - - @PostMapping("/add") - public Result
addarticle(@RequestBody Article article, HttpSession session) throws JsonProcessingException { - System.out.println("Received article: " + article); // 娣诲姞姝よ浠ヨ皟璇 - int admin = userMapper.findByUserName(String.valueOf(session.getAttribute("username"))).getAdmin(); - if (admin == 1) { - articleService.addarticle(article); - return Result.success(article); - } - else{ - return Result.error("鏉冮檺涓嶅銆傘傘"); - } - } - - @GetMapping("/select") - public Result selectarticle(HttpServletRequest request) { - List
articles = articleService.selectarticle(); - System.out.println(request.getRequestURL()); - return Result.success(articles); - } - - - - //鏍规嵁涔︾睄鍚嶅瓧鎼滅储鍗曚釜涔︾睄淇℃伅 - @GetMapping("/selectone") - public Result
selectone(String title){ - Article article= articleService.selectonearticle(title); - return Result.success(article); - } - - - -} diff --git a/SeKeshedemo/src/main/java/com/example/demo/controller/BorrowController.java b/SeKeshedemo/src/main/java/com/example/demo/controller/BorrowController.java deleted file mode 100644 index bd6f248..0000000 --- a/SeKeshedemo/src/main/java/com/example/demo/controller/BorrowController.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.example.demo.controller; - -import com.example.demo.mapper.BorrowMapper; -import com.example.demo.pojo.Article; -import com.example.demo.pojo.Borrow; -import com.example.demo.pojo.Result; -import com.example.demo.service.ArticleService; -import com.example.demo.service.BorrowService; - -import com.example.demo.service.UserService; -import jakarta.servlet.http.HttpSession; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.CrossOrigin; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import java.time.LocalDateTime; - -@RestController -@CrossOrigin -@RequestMapping("/borrow") -public class BorrowController { - @Autowired - private BorrowService borrowService; - - @Autowired - private UserService userService; - - @Autowired - private ArticleService articleService; - @Autowired - private BorrowMapper borrowMapper; - - - //绉熷熶功 - @PostMapping("/borrowbook") - public Result borrowbook(String title, HttpSession session) { - Borrow borrow = new Borrow(); - borrow.setTitle(title); - borrow.setBorrower((String) session.getAttribute("username")); - borrow.setBorrow_time(LocalDateTime.now()); - Article article = articleService.selectonearticle(title); - float money = article.getMoney(); - float balance = userService.findmoney(session.getAttribute("username")); - if (balance >= money) { - borrowService.borrow(borrow); - userService.deduct(money,session.getAttribute("username")); - return Result.success(borrow); - } - else{ - return Result.error("浣欓涓嶈冻锛"); - } - } - - - //杩樹功 - @PostMapping("/returnbook") - public Result returnbook(String title, HttpSession session){ - Borrow borrow=new Borrow(); - borrow.setTitle(title); - borrow.setBorrower((String) session.getAttribute("username")); - borrow.setReturn_time(LocalDateTime.now()); - borrowService.returnbook(borrow); - borrowMapper.fine(); - return Result.success(borrow); - } -} diff --git a/SeKeshedemo/src/main/java/com/example/demo/controller/BorrowRankController.java b/SeKeshedemo/src/main/java/com/example/demo/controller/BorrowRankController.java deleted file mode 100644 index 7b522bb..0000000 --- a/SeKeshedemo/src/main/java/com/example/demo/controller/BorrowRankController.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.example.demo.controller; - -import com.example.demo.pojo.ArticleRentRankDTO; -import com.example.demo.service.BorrowRankService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; -import java.util.List; - -@RestController -@RequestMapping("/api/rank") -public class BorrowRankController { - - @Autowired - private BorrowRankService borrowRankService; - - /** - * 鏈懆鐑姒滃崟鎺ュ彛 - */ - @GetMapping("/weekly") - public List weeklyRank() { - return borrowRankService.getWeeklyRank(); - } - - /** - * 鏈湀鐑姒滃崟鎺ュ彛 - */ - @GetMapping("/monthly") - public List monthlyRank() { - return borrowRankService.getMonthlyRank(); - } -} \ No newline at end of file diff --git a/SeKeshedemo/src/main/java/com/example/demo/controller/UserController.java b/SeKeshedemo/src/main/java/com/example/demo/controller/UserController.java deleted file mode 100644 index 8d35b18..0000000 --- a/SeKeshedemo/src/main/java/com/example/demo/controller/UserController.java +++ /dev/null @@ -1,131 +0,0 @@ -package com.example.demo.controller; - - -import com.example.demo.mapper.BorrowMapper; -import com.example.demo.mapper.UserMapper; -import com.example.demo.pojo.*; -import com.example.demo.service.ArticleService; -import com.example.demo.service.UserService; -import jakarta.servlet.http.HttpSession; -import org.apache.ibatis.annotations.Delete; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.*; - -import java.util.List; - - -@CrossOrigin(origins = "http://localhost:8877") -@RestController -@RequestMapping("/user") - -public class UserController { - - @Autowired - private UserService userService; - @Autowired - private UserMapper userMapper; - - @Autowired - private BorrowMapper borrowMapper; - - @Autowired - private ArticleService articleService; - -//鑾峰彇鐢ㄦ埛鐧婚檰淇℃伅 - @GetMapping("/getinfo") - public ResponseEntity getInfo(HttpSession session) { - String username = (String) session.getAttribute("username"); - if (username == null) { - return ResponseEntity.status(HttpStatus.UNAUTHORIZED).body("{\"error\": \"Username not found in session\"}"); - } - info info = userService.getinfo(username); - System.out.println(info); - if (info == null) { - return ResponseEntity.status(HttpStatus.NOT_FOUND).body("{\"error\": \"User information not found for username: " + username + "\"}"); - } - return ResponseEntity.ok(info); - } - - - //娉ㄥ唽 - @PostMapping("/register") - public Result register(String username, String password) { - User u = userService.findByUserName(username); - if (u == null) { - userService.register(username, password); - return Result.success(); - } else { - return Result.error("璇ョ敤鎴峰悕宸茶娉ㄥ唽"); - } - } - //鐧婚檰 - @PostMapping("/login") - public Result login(String username, String password,HttpSession session) { - User u = userService.findByUserName(username); - if (u != null) { - userService.login(username, password); - String pass=userMapper.login(username); - - if (password.equals(pass)) { - session.setAttribute("username",username); - System.out.println("鐧婚檰鎴愬姛锛"); - return Result.success("鐧婚檰鎴愬姛锛"); - } else { - //杩欓噷宸茬粡澶勭悊濂戒簡 - return Result.error("璐﹀彿鎴栧瘑鐮侀敊璇紒"); - } - } else { - return null; - } - } -//鍏呭奸噾棰 - @PostMapping("/recharge") - public Result recharge(float money,HttpSession session){ - userService.recharge(money, (String) session.getAttribute("username")); - return Result.success("鎴愬姛鍏呭硷細"+money+"鍏"); - } - - //鏌ヨ閲戦+VIP - @PostMapping("/findmoney") - public Result findmoney(HttpSession session){ - float balance=userService.findmoney(session.getAttribute("username")); - userMapper.updateVIP(balance,(String) session.getAttribute("username")); - int VIP=userMapper.findVIP((String) session.getAttribute("username")); - return Result.success("浣欓涓猴細"+balance+"鍏"+" 褰撳墠VIP绛夌骇涓猴細"+VIP); - } - - //鏌ヨ涓汉鍊熶功璁板綍 - @GetMapping("findone") - public Result findone(HttpSession session){ - User user=userMapper.findByUserName((String) session.getAttribute("username")); - int admin=user.getAdmin(); - if(admin==1){ - List borrow=borrowMapper.findall(); - return Result.success(borrow); - } - else{ - Borrow borrow=borrowMapper.findone(user.getUsername()); - return Result.success(borrow); - } - } - - //绠$悊鍛樺垹闄や功绫 - @PostMapping("delete") - public Result delete(String title,HttpSession session) { - int admin = userMapper.findByUserName((String) session.getAttribute("username")).getAdmin(); - if (admin == 1) { - userMapper.deletebook(title); - return Result.success("璇ヤ功鏈凡鍒犻櫎锛"); - } - else{ - return Result.error("鏉冮檺涓嶅銆傘傘"); - } - } - - @GetMapping("/borrow/books") - public Result> getUserBorrowedBooks(HttpSession session) { - return Result.success(articleService.getUserBorrowedBooks((String) session.getAttribute("username"))); - } -} \ No newline at end of file diff --git a/SeKeshedemo/src/main/java/com/example/demo/mapper/ArticleMapper.java b/SeKeshedemo/src/main/java/com/example/demo/mapper/ArticleMapper.java deleted file mode 100644 index 134d6b1..0000000 --- a/SeKeshedemo/src/main/java/com/example/demo/mapper/ArticleMapper.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.example.demo.mapper; - - -import com.example.demo.pojo.Article; -import org.apache.ibatis.annotations.*; - -import java.util.List; - -@Mapper -public interface ArticleMapper { - - @Insert("INSERT INTO article (title, content, url, state)\n" + - "VALUES \n" + - "(#{title}, #{content}, #{url},#{state})") - @Options(useGeneratedKeys = true, keyColumn = "id", keyProperty = "id") - Long addarticle(Article article); - - - //鏌ヨ鎵鏈変功绫嶆墍鏈変俊鎭 - @Select("SELECT * FROM article") - List
selectarticle(); - - //鏌ヨ - -//绠$悊鍛樺垹闄や功绫 - @Delete("DELETE FROM article WHERE id = #{id}") - Integer deleteArticle(Long id); - - //鏌ヨ鍗曟湰涔 - @Select("SELECT * from article where title=#{title}") - Article selectonearticle(String title); - - - @Select("SELECT a.* " + - "FROM article a " + - "INNER JOIN borrow b ON a.title = b.title " + - "INNER JOIN user u ON b.borrower = u.username " + - "WHERE u.username = #{username} " + - "AND b.borrow_time IS NOT NULL " + - "AND b.return_time IS NULL") - List
findBorrowedBooksByUsername(String username); -} diff --git a/SeKeshedemo/src/main/java/com/example/demo/mapper/BorrowMapper.java b/SeKeshedemo/src/main/java/com/example/demo/mapper/BorrowMapper.java deleted file mode 100644 index 8560fec..0000000 --- a/SeKeshedemo/src/main/java/com/example/demo/mapper/BorrowMapper.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.example.demo.mapper; - -import com.example.demo.pojo.Article; -import com.example.demo.pojo.Borrow; -import org.apache.ibatis.annotations.Insert; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Select; -import org.apache.ibatis.annotations.Update; - -import java.util.List; - -@Mapper -public interface BorrowMapper { - //鍊熶功 - @Insert("INSERT INTO borrow (title, borrower, borrow_time)\n" + - "VALUES \n" + - "(#{title}, #{borrower}, now())") - void borrowrecord(Borrow borrow); - - // 鏇存柊瀵瑰簲鐗╁搧鐨勮绉熸暟閲忥紙number+1锛 - @Update("UPDATE article " + - "SET number = number + 1 " + - "WHERE title = #{title}") - void incrementArticleNumber(String title); - -//杩樹功 - @Insert("INSERT INTO borrow (title, borrower, return_time)\n" + - "VALUES \n" + - "(#{title}, #{borrower}, now())") - void returnrecord(Borrow borrow); - - //瓒呰繃涓涓湀缃氶噾鎵20鍏 - @Update("UPDATE user\n" + - "SET balance = balance - 20\n" + - "WHERE username IN (\n" + - " SELECT username\n" + - " FROM borrow\n" + - " WHERE DATEDIFF(CURRENT_DATE(), borrow_time) > 30\n" + - ");") - void fine(); - - //鏌ヨ杩樺熶功璁板綍锛堟墍鏈夛級 - @Select("select * from borrow") - List findall(); - - //鏌ヨ杩樹功璁板綍锛堜釜浜猴級 - @Select("select * from borrow where borrower=#{username}") - Borrow findone(String username); - - - //鏌ヨ涓汉宸茬粡鍊熺殑涔︾殑鎵鏈変俊鎭 - @Select("SELECT a.* " + - "FROM article a " + - "INNER JOIN borrow b ON a.title = b.title " + - "INNER JOIN user u ON b.borrower = u.username " + - "WHERE u.username = #{username} " + - "AND b.borrow_time IS NOT NULL " + - "AND b.return_time IS NULL") - List
findBorrowedBooksByUsername(String username); - - -} diff --git a/SeKeshedemo/src/main/java/com/example/demo/mapper/BorrowRankMapper.java b/SeKeshedemo/src/main/java/com/example/demo/mapper/BorrowRankMapper.java deleted file mode 100644 index 4e824eb..0000000 --- a/SeKeshedemo/src/main/java/com/example/demo/mapper/BorrowRankMapper.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.example.demo.mapper; - -import com.example.demo.pojo.ArticleRentRankDTO; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Select; -import java.util.List; - -@Mapper -public interface BorrowRankMapper { - - /** - * 鏌ヨ鏈懆鐑姒滃崟锛圱op10锛 - */ - @Select("SELECT " + - "b.title, " + - "a.url, " + - "a.money, " + - "COUNT(b.title) AS number " + - "FROM borrow b " + - "LEFT JOIN article a ON b.title = a.title " + - "WHERE b.borrow_time >= DATE_SUB(CURDATE(), INTERVAL WEEKDAY(CURDATE()) DAY) " + - "AND b.borrow_time < DATE_ADD(DATE_SUB(CURDATE(), INTERVAL WEEKDAY(CURDATE()) DAY), INTERVAL 7 DAY) " + - "GROUP BY b.title, a.url, a.money " + - "ORDER BY number DESC " + - "LIMIT 10") - List listWeeklyRank(); - - /** - * 鏌ヨ鏈湀鐑姒滃崟锛圱op10锛 - */ - @Select("SELECT " + - "b.title, " + - "a.url, " + - "a.money, " + - "COUNT(b.title) AS number " + - "FROM borrow b " + - "LEFT JOIN article a ON b.title = a.title " + - "WHERE b.borrow_time >= DATE_FORMAT(CURDATE(), '%Y-%m-01') " + - "AND b.borrow_time < DATE_ADD(DATE_FORMAT(CURDATE(), '%Y-%m-01'), INTERVAL 1 MONTH) " + - "GROUP BY b.title, a.url, a.money " + - "ORDER BY number DESC " + - "LIMIT 10") - List listMonthlyRank(); -} \ No newline at end of file diff --git a/SeKeshedemo/src/main/java/com/example/demo/mapper/UserMapper.java b/SeKeshedemo/src/main/java/com/example/demo/mapper/UserMapper.java deleted file mode 100644 index 9686fb8..0000000 --- a/SeKeshedemo/src/main/java/com/example/demo/mapper/UserMapper.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.example.demo.mapper; - - -import com.example.demo.pojo.User; -import com.example.demo.pojo.info; -import org.apache.ibatis.annotations.*; - -@Mapper -public interface UserMapper { - @Select("select * from user where username=#{username}") - User findByUserName(String username); - - @Insert("insert into user(username,password,vip,create_time,update_time,admin,balance)" + - " values(#{username},#{password},#{vip},now(),now(),#{admin},#{balance})") - void add(String username,String password,int vip,int admin,float balance); - - @Select("SELECT password FROM user WHERE username=#{username}") - String login(String username); - - - @Select("select username,pic from user where username=#{username}") - info getinfo( String username); - - - //鍏呴挶 - @Update("UPDATE user\n" + - "SET balance=balance+#{money1}\n" + - "WHERE username=#{username};") - void recharge(float money1,String username); - - - //鏌ヨ浣欓 - @Select("select balance from user where username=#{username}") - float findbalance(Object username); - - //鏇存柊VIP浣欓 - @Update("UPDATE `user`\n" + - "SET `vip` = CASE\n" + - " WHEN `balance` >= 10 AND `balance` < 30 THEN '1'\n" + - " WHEN `balance` >= 30 AND `balance` < 100 THEN '2'\n" + - " WHEN `balance` >= 100 AND `balance` < 300 THEN '3'\n" + - " WHEN `balance` >= 300 AND `balance` < 500 THEN '4'\n" + - " WHEN `balance` >= 500 THEN '5'\n" + - " ELSE `vip` -- 涓嶆弧瓒虫潯浠剁殑璁板綍淇濇寔鍘熸湁vip鍊糪n" + - "END\n" + - "WHERE `username` = #{username};") - void updateVIP( float balance,String username); - - @Select("select vip from user where username=#{username}") - int findVIP(String username); - - //鎵i挶 - @Update("UPDATE user\n" + - "SET balance=balance-#{money1}\n" + - "WHERE username=#{username};") - void deduct(float money1,String username); - - //绠$悊鍛樺垹闄や功 - @Delete("DELETE FROM article WHERE title=#{title}") - void deletebook(String title); - - -} diff --git a/SeKeshedemo/src/main/java/com/example/demo/pojo/Article.java b/SeKeshedemo/src/main/java/com/example/demo/pojo/Article.java deleted file mode 100644 index e39fcc3..0000000 --- a/SeKeshedemo/src/main/java/com/example/demo/pojo/Article.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.example.demo.pojo; - - -import lombok.Data; - -@Data -public class Article { - private int id; - private String title; - private String content; - private String url; - private String state; - private float money; - private int number; -} diff --git a/SeKeshedemo/src/main/java/com/example/demo/pojo/ArticleRentRankDTO.java b/SeKeshedemo/src/main/java/com/example/demo/pojo/ArticleRentRankDTO.java deleted file mode 100644 index f40c651..0000000 --- a/SeKeshedemo/src/main/java/com/example/demo/pojo/ArticleRentRankDTO.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.example.demo.pojo; - -import lombok.Data; - -@Data -public class ArticleRentRankDTO { - private String title; // 鐗╁搧鍚嶇О - private String url; // 灏侀潰鍥剧墖 - private Float money; // 绉熷熶环鏍 - private Integer number; // 绉熷熸鏁 -} \ No newline at end of file diff --git a/SeKeshedemo/src/main/java/com/example/demo/pojo/Borrow.java b/SeKeshedemo/src/main/java/com/example/demo/pojo/Borrow.java deleted file mode 100644 index 9db0a1d..0000000 --- a/SeKeshedemo/src/main/java/com/example/demo/pojo/Borrow.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.example.demo.pojo; - -import lombok.Data; - -import java.time.LocalDateTime; - -@Data -public class Borrow { - private String title; - private String borrower; - private LocalDateTime borrow_time; - private LocalDateTime return_time; -} diff --git a/SeKeshedemo/src/main/java/com/example/demo/pojo/Result.java b/SeKeshedemo/src/main/java/com/example/demo/pojo/Result.java deleted file mode 100644 index 9605aec..0000000 --- a/SeKeshedemo/src/main/java/com/example/demo/pojo/Result.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.example.demo.pojo; - - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -//缁熶竴鍝嶅簲缁撴灉 -@NoArgsConstructor -@AllArgsConstructor -@Data -public class Result { - private Integer code;//涓氬姟鐘舵佺爜 0-鎴愬姛 1-澶辫触锛屽墠绔幏鍙栧埌杩欎釜code灏卞彲浠ュ垽鏂簡 - private String message;//鎻愮ず淇℃伅 - private T data;//鍝嶅簲鏁版嵁 - - //蹇熻繑鍥炴搷浣滄垚鍔熷搷搴旂粨鏋(甯﹀搷搴旀暟鎹) - public static Result success(E data) { - return new Result<>(200, "鎿嶄綔鎴愬姛", data); - } - - //蹇熻繑鍥炴搷浣滄垚鍔熷搷搴旂粨鏋 - public static Result success() { - return new Result(200, "鎿嶄綔鎴愬姛", null); - } - - public static Result error(String message) { - return new Result(1, message, null); - } - -} diff --git a/SeKeshedemo/src/main/java/com/example/demo/pojo/User.java b/SeKeshedemo/src/main/java/com/example/demo/pojo/User.java deleted file mode 100644 index 820ce38..0000000 --- a/SeKeshedemo/src/main/java/com/example/demo/pojo/User.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.example.demo.pojo; - -import lombok.Data; - -import java.time.LocalDateTime; -@Data -public class User { - private Integer id; - private String username; - private String password; - private String vip; - private String userPic; - private LocalDateTime createTime; - private LocalDateTime updateTime; - private Integer admin; - private float balance; -} diff --git a/SeKeshedemo/src/main/java/com/example/demo/pojo/info.java b/SeKeshedemo/src/main/java/com/example/demo/pojo/info.java deleted file mode 100644 index 8aa8d91..0000000 --- a/SeKeshedemo/src/main/java/com/example/demo/pojo/info.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.example.demo.pojo; - -import lombok.Data; - -@Data -public class info { - private String username; - private String pic; -} diff --git a/SeKeshedemo/src/main/java/com/example/demo/service/ArticleService.java b/SeKeshedemo/src/main/java/com/example/demo/service/ArticleService.java deleted file mode 100644 index 32723d7..0000000 --- a/SeKeshedemo/src/main/java/com/example/demo/service/ArticleService.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.example.demo.service; - -import com.example.demo.pojo.Article; - -import java.util.List; - -public interface ArticleService { - Long addarticle(Article article); - - List
selectarticle(); - - List
getUserBorrowedBooks(String username); - - boolean deletearticle(Long id); - - Article selectonearticle(String title); -} - diff --git a/SeKeshedemo/src/main/java/com/example/demo/service/BorrowRankService.java b/SeKeshedemo/src/main/java/com/example/demo/service/BorrowRankService.java deleted file mode 100644 index 6bce2d3..0000000 --- a/SeKeshedemo/src/main/java/com/example/demo/service/BorrowRankService.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.example.demo.service; - -import com.example.demo.mapper.BorrowRankMapper; -import com.example.demo.pojo.ArticleRentRankDTO; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import java.util.List; - -@Service -public class BorrowRankService { - - @Autowired // 鏀圭敤Spring鐨凘Autowired娉ㄨВ - private BorrowRankMapper borrowRankMapper; - - /** - * 鑾峰彇鏈懆鐑姒滃崟 - */ - public List getWeeklyRank() { - return borrowRankMapper.listWeeklyRank(); - } - - /** - * 鑾峰彇鏈湀鐑姒滃崟 - */ - public List getMonthlyRank() { - return borrowRankMapper.listMonthlyRank(); - } -} \ No newline at end of file diff --git a/SeKeshedemo/src/main/java/com/example/demo/service/BorrowService.java b/SeKeshedemo/src/main/java/com/example/demo/service/BorrowService.java deleted file mode 100644 index 2189cd0..0000000 --- a/SeKeshedemo/src/main/java/com/example/demo/service/BorrowService.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.example.demo.service; - -import com.example.demo.mapper.BorrowMapper; -import com.example.demo.pojo.Borrow; -import org.springframework.beans.factory.annotation.Autowired; - -public interface BorrowService { - - - void borrow(Borrow borrow); - - void returnbook(Borrow borrow); - -} \ No newline at end of file diff --git a/SeKeshedemo/src/main/java/com/example/demo/service/UserService.java b/SeKeshedemo/src/main/java/com/example/demo/service/UserService.java deleted file mode 100644 index 1443d55..0000000 --- a/SeKeshedemo/src/main/java/com/example/demo/service/UserService.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.example.demo.service; - -import com.example.demo.pojo.User; -import com.example.demo.pojo.info; - -public interface UserService { - User findByUserName(String username); - - void register(String username, String password); - - void login(String username, String password); - - info getinfo(String username); - - void recharge(float money, String username); - - float findmoney(Object username); - - void deduct(float money, Object username); -} diff --git a/SeKeshedemo/src/main/java/com/example/demo/service/impl/ArticleServiceImpl.java b/SeKeshedemo/src/main/java/com/example/demo/service/impl/ArticleServiceImpl.java deleted file mode 100644 index 420d740..0000000 --- a/SeKeshedemo/src/main/java/com/example/demo/service/impl/ArticleServiceImpl.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.example.demo.service.impl; - -import com.example.demo.mapper.ArticleMapper; -import com.example.demo.pojo.Article; -import com.example.demo.service.ArticleService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.util.List; - -@Service -public class ArticleServiceImpl implements ArticleService { - - - @Autowired - ArticleMapper articleMapper; - @Override - public Long addarticle(Article article) { - - return articleMapper.addarticle(article); - } - - @Override - public List
selectarticle() { - return articleMapper.selectarticle(); - } - - @Override - public boolean deletearticle(Long id) { - final Integer integer = articleMapper.deleteArticle((long) Math.toIntExact(id)); - return integer == 1; - } - - @Override - public Article selectonearticle(String title) { - return articleMapper.selectonearticle(title); - } - - @Override - public List
getUserBorrowedBooks(String username) { - // 鍙坊鍔犲弬鏁版牎楠岋紙濡傜敤鎴峰悕闈炵┖锛 - if (username == null || username.trim().isEmpty()) { - throw new IllegalArgumentException("鐢ㄦ埛鍚嶄笉鑳戒负绌"); - } - return articleMapper.findBorrowedBooksByUsername(username); - } -} diff --git a/SeKeshedemo/src/main/java/com/example/demo/service/impl/BorrowServiceImpl.java b/SeKeshedemo/src/main/java/com/example/demo/service/impl/BorrowServiceImpl.java deleted file mode 100644 index 38f3618..0000000 --- a/SeKeshedemo/src/main/java/com/example/demo/service/impl/BorrowServiceImpl.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.example.demo.service.impl; - - -import com.example.demo.mapper.BorrowMapper; -import com.example.demo.pojo.Article; -import com.example.demo.pojo.Borrow; -import com.example.demo.service.BorrowService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.util.List; - -@Service -public class BorrowServiceImpl implements BorrowService { - - @Autowired - BorrowMapper borrowMapper ; - - @Transactional - public void borrow(Borrow borrow) { - // 1. 鏂板绉熷熻褰 - borrowMapper.borrowrecord(borrow); - // 2. 瀵瑰簲鐗╁搧鐨刵umber+1锛堟牴鎹畉itle鍏宠仈锛 - borrowMapper.incrementArticleNumber(borrow.getTitle()); - } - - - @Override - public void returnbook(Borrow borrow) { - borrowMapper.returnrecord(borrow); - } - - -} diff --git a/SeKeshedemo/src/main/java/com/example/demo/service/impl/UserServiceImpl.java b/SeKeshedemo/src/main/java/com/example/demo/service/impl/UserServiceImpl.java deleted file mode 100644 index 3d3dd30..0000000 --- a/SeKeshedemo/src/main/java/com/example/demo/service/impl/UserServiceImpl.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.example.demo.service.impl; - - -import com.example.demo.mapper.UserMapper; -import com.example.demo.pojo.User; -import com.example.demo.pojo.info; -import com.example.demo.service.UserService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -@Service -public class UserServiceImpl implements UserService { - - @Autowired - private UserMapper userMapper; - - - - - @Override - public User findByUserName(String username) { - User u=userMapper.findByUserName(username); - return u; - } - - @Override - public void register(String username, String password) { - userMapper.add(username,password,0,0,0); - } - - @Override - public void login(String username, String password) { - - - } - - - - public info getinfo(String username) { - return userMapper.getinfo(username); - } - - @Override - public void recharge(float money, String username) { - userMapper.recharge(money,username); - } - - @Override - public float findmoney(Object username) { - return userMapper.findbalance(username); - } - - @Override - public void deduct(float money,Object name) { - userMapper.deduct(money, (String) name); - } - -} diff --git a/SeKeshedemo/src/main/java/com/example/demo/utils/JwtUtil.java b/SeKeshedemo/src/main/java/com/example/demo/utils/JwtUtil.java deleted file mode 100644 index 425b01a..0000000 --- a/SeKeshedemo/src/main/java/com/example/demo/utils/JwtUtil.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.example.demo.utils; - -import com.auth0.jwt.JWT; -import com.auth0.jwt.algorithms.Algorithm; - -import java.util.Date; -import java.util.Map; - -public class JwtUtil { - - private static final String KEY = "itheima"; - - //鎺ユ敹涓氬姟鏁版嵁,鐢熸垚token骞惰繑鍥 - public static String genToken(Map claims) { - return JWT.create() - .withClaim("claims", claims) - .withExpiresAt(new Date(System.currentTimeMillis() + 1000 * 60 * 60 * 12)) - .sign(Algorithm.HMAC256(KEY)); - } - - //鎺ユ敹token,楠岃瘉token,骞惰繑鍥炰笟鍔℃暟鎹 - public static Map parseToken(String token) { - return JWT.require(Algorithm.HMAC256(KEY)) - .build() - .verify(token) - .getClaim("claims") - .asMap(); - } - -} diff --git a/SeKeshedemo/src/main/java/com/example/demo/utils/Md5Util.java b/SeKeshedemo/src/main/java/com/example/demo/utils/Md5Util.java deleted file mode 100644 index 002c882..0000000 --- a/SeKeshedemo/src/main/java/com/example/demo/utils/Md5Util.java +++ /dev/null @@ -1,73 +0,0 @@ -package com.example.demo.utils; - - -import java.security.MessageDigest; -import java.security.NoSuchAlgorithmException; - -public class Md5Util { - /** - * 榛樿鐨勫瘑鐮佸瓧绗︿覆缁勫悎锛岀敤鏉ュ皢瀛楄妭杞崲鎴 16 杩涘埗琛ㄧず鐨勫瓧绗,apache鏍¢獙涓嬭浇鐨勬枃浠剁殑姝g‘鎬х敤鐨勫氨鏄粯璁ょ殑杩欎釜缁勫悎 - */ - protected static char hexDigits[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'}; - - protected static MessageDigest messagedigest = null; - - static { - try { - messagedigest = MessageDigest.getInstance("MD5"); - } catch (NoSuchAlgorithmException nsaex) { - System.err.println(Md5Util.class.getName() + "鍒濆鍖栧け璐ワ紝MessageDigest涓嶆敮鎸丮D5Util銆"); - nsaex.printStackTrace(); - } - } - - /** - * 鐢熸垚瀛楃涓茬殑md5鏍¢獙鍊 - * - * @param s - * @return - */ - public static String getMD5String(String s) { - return getMD5String(s.getBytes()); - } - - /** - * 鍒ゆ柇瀛楃涓茬殑md5鏍¢獙鐮佹槸鍚︿笌涓涓凡鐭ョ殑md5鐮佺浉鍖归厤 - * - * @param password 瑕佹牎楠岀殑瀛楃涓 - * @param md5PwdStr 宸茬煡鐨刴d5鏍¢獙鐮 - * @return - */ - public static boolean checkPassword(String password, String md5PwdStr) { - String s = getMD5String(password); - return s.equals(md5PwdStr); - } - - - public static String getMD5String(byte[] bytes) { - messagedigest.update(bytes); - return bufferToHex(messagedigest.digest()); - } - - private static String bufferToHex(byte bytes[]) { - return bufferToHex(bytes, 0, bytes.length); - } - - private static String bufferToHex(byte bytes[], int m, int n) { - StringBuffer stringbuffer = new StringBuffer(2 * n); - int k = m + n; - for (int l = m; l < k; l++) { - appendHexPair(bytes[l], stringbuffer); - } - return stringbuffer.toString(); - } - - private static void appendHexPair(byte bt, StringBuffer stringbuffer) { - char c0 = hexDigits[(bt & 0xf0) >> 4];// 鍙栧瓧鑺備腑楂 4 浣嶇殑鏁板瓧杞崲, >>> - // 涓洪昏緫鍙崇Щ锛屽皢绗﹀彿浣嶄竴璧峰彸绉,姝ゅ鏈彂鐜颁袱绉嶇鍙锋湁浣曚笉鍚 - char c1 = hexDigits[bt & 0xf];// 鍙栧瓧鑺備腑浣 4 浣嶇殑鏁板瓧杞崲 - stringbuffer.append(c0); - stringbuffer.append(c1); - } - -} diff --git a/SeKeshedemo/src/main/resources/application.properties b/SeKeshedemo/src/main/resources/application.properties deleted file mode 100644 index 2ce5e24..0000000 --- a/SeKeshedemo/src/main/resources/application.properties +++ /dev/null @@ -1,25 +0,0 @@ - - -file.upload-dir=D:\\uploads\\files -# MySQL ????? - -#spring.datasource.url= jdbc:mysql://124.220.45.50:3306/big_event -#spring.datasource.username= big_event -#spring.datasource.password= 3cjBiCj3ZBafn3kP - -#spring.datasource.url= jdbc:mysql://127.0.0.1:3306/big_event -#spring.datasource.username=root -#spring.datasource.password=hsp - - -spring.datasource.url= jdbc:mysql://127.0.0.1:3306/big_event1 -spring.datasource.username= root -spring.datasource.password= hsp - - - -spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver -server.port=8877 -spring.servlet.multipart.max-file-size=5MB -spring.servlet.multipart.max-request-size=5MB - diff --git a/SeKeshedemo/src/test/java/com/example/demo/Demo4ApplicationTests.java b/SeKeshedemo/src/test/java/com/example/demo/Demo4ApplicationTests.java deleted file mode 100644 index bf176f8..0000000 --- a/SeKeshedemo/src/test/java/com/example/demo/Demo4ApplicationTests.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.example.demo; - -import org.junit.jupiter.api.Test; -import org.springframework.boot.test.context.SpringBootTest; - -@SpringBootTest -class Demo4ApplicationTests { - - @Test - void contextLoads() { - } - -} diff --git a/SeKeshedemo/target/classes/application.properties b/SeKeshedemo/target/classes/application.properties deleted file mode 100644 index 2ce5e24..0000000 --- a/SeKeshedemo/target/classes/application.properties +++ /dev/null @@ -1,25 +0,0 @@ - - -file.upload-dir=D:\\uploads\\files -# MySQL ????? - -#spring.datasource.url= jdbc:mysql://124.220.45.50:3306/big_event -#spring.datasource.username= big_event -#spring.datasource.password= 3cjBiCj3ZBafn3kP - -#spring.datasource.url= jdbc:mysql://127.0.0.1:3306/big_event -#spring.datasource.username=root -#spring.datasource.password=hsp - - -spring.datasource.url= jdbc:mysql://127.0.0.1:3306/big_event1 -spring.datasource.username= root -spring.datasource.password= hsp - - - -spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver -server.port=8877 -spring.servlet.multipart.max-file-size=5MB -spring.servlet.multipart.max-request-size=5MB - diff --git a/SeKeshedemo/target/classes/com/example/demo/Demo4Application.class b/SeKeshedemo/target/classes/com/example/demo/Demo4Application.class deleted file mode 100644 index 9b3b9e9..0000000 Binary files a/SeKeshedemo/target/classes/com/example/demo/Demo4Application.class and /dev/null differ diff --git a/SeKeshedemo/target/classes/com/example/demo/config/MyFilter.class b/SeKeshedemo/target/classes/com/example/demo/config/MyFilter.class deleted file mode 100644 index ba54374..0000000 Binary files a/SeKeshedemo/target/classes/com/example/demo/config/MyFilter.class and /dev/null differ diff --git a/SeKeshedemo/target/classes/com/example/demo/controller/ArticleController.class b/SeKeshedemo/target/classes/com/example/demo/controller/ArticleController.class deleted file mode 100644 index bdf58c0..0000000 Binary files a/SeKeshedemo/target/classes/com/example/demo/controller/ArticleController.class and /dev/null differ diff --git a/SeKeshedemo/target/classes/com/example/demo/controller/BorrowController.class b/SeKeshedemo/target/classes/com/example/demo/controller/BorrowController.class deleted file mode 100644 index c47d055..0000000 Binary files a/SeKeshedemo/target/classes/com/example/demo/controller/BorrowController.class and /dev/null differ diff --git a/SeKeshedemo/target/classes/com/example/demo/controller/BorrowRankController.class b/SeKeshedemo/target/classes/com/example/demo/controller/BorrowRankController.class deleted file mode 100644 index b7e56bb..0000000 Binary files a/SeKeshedemo/target/classes/com/example/demo/controller/BorrowRankController.class and /dev/null differ diff --git a/SeKeshedemo/target/classes/com/example/demo/controller/UserController.class b/SeKeshedemo/target/classes/com/example/demo/controller/UserController.class deleted file mode 100644 index 130026c..0000000 Binary files a/SeKeshedemo/target/classes/com/example/demo/controller/UserController.class and /dev/null differ diff --git a/SeKeshedemo/target/classes/com/example/demo/mapper/ArticleMapper.class b/SeKeshedemo/target/classes/com/example/demo/mapper/ArticleMapper.class deleted file mode 100644 index 2199b40..0000000 Binary files a/SeKeshedemo/target/classes/com/example/demo/mapper/ArticleMapper.class and /dev/null differ diff --git a/SeKeshedemo/target/classes/com/example/demo/mapper/BorrowMapper.class b/SeKeshedemo/target/classes/com/example/demo/mapper/BorrowMapper.class deleted file mode 100644 index 3afcca7..0000000 Binary files a/SeKeshedemo/target/classes/com/example/demo/mapper/BorrowMapper.class and /dev/null differ diff --git a/SeKeshedemo/target/classes/com/example/demo/mapper/BorrowRankMapper.class b/SeKeshedemo/target/classes/com/example/demo/mapper/BorrowRankMapper.class deleted file mode 100644 index 0e41720..0000000 Binary files a/SeKeshedemo/target/classes/com/example/demo/mapper/BorrowRankMapper.class and /dev/null differ diff --git a/SeKeshedemo/target/classes/com/example/demo/mapper/UserMapper.class b/SeKeshedemo/target/classes/com/example/demo/mapper/UserMapper.class deleted file mode 100644 index ae1983d..0000000 Binary files a/SeKeshedemo/target/classes/com/example/demo/mapper/UserMapper.class and /dev/null differ diff --git a/SeKeshedemo/target/classes/com/example/demo/pojo/Article.class b/SeKeshedemo/target/classes/com/example/demo/pojo/Article.class deleted file mode 100644 index 6a1dd63..0000000 Binary files a/SeKeshedemo/target/classes/com/example/demo/pojo/Article.class and /dev/null differ diff --git a/SeKeshedemo/target/classes/com/example/demo/pojo/ArticleRentRankDTO.class b/SeKeshedemo/target/classes/com/example/demo/pojo/ArticleRentRankDTO.class deleted file mode 100644 index 736f03e..0000000 Binary files a/SeKeshedemo/target/classes/com/example/demo/pojo/ArticleRentRankDTO.class and /dev/null differ diff --git a/SeKeshedemo/target/classes/com/example/demo/pojo/Borrow.class b/SeKeshedemo/target/classes/com/example/demo/pojo/Borrow.class deleted file mode 100644 index d893d0b..0000000 Binary files a/SeKeshedemo/target/classes/com/example/demo/pojo/Borrow.class and /dev/null differ diff --git a/SeKeshedemo/target/classes/com/example/demo/pojo/Result.class b/SeKeshedemo/target/classes/com/example/demo/pojo/Result.class deleted file mode 100644 index 74f881b..0000000 Binary files a/SeKeshedemo/target/classes/com/example/demo/pojo/Result.class and /dev/null differ diff --git a/SeKeshedemo/target/classes/com/example/demo/pojo/User.class b/SeKeshedemo/target/classes/com/example/demo/pojo/User.class deleted file mode 100644 index ed6303e..0000000 Binary files a/SeKeshedemo/target/classes/com/example/demo/pojo/User.class and /dev/null differ diff --git a/SeKeshedemo/target/classes/com/example/demo/pojo/info.class b/SeKeshedemo/target/classes/com/example/demo/pojo/info.class deleted file mode 100644 index 663dba0..0000000 Binary files a/SeKeshedemo/target/classes/com/example/demo/pojo/info.class and /dev/null differ diff --git a/SeKeshedemo/target/classes/com/example/demo/service/ArticleService.class b/SeKeshedemo/target/classes/com/example/demo/service/ArticleService.class deleted file mode 100644 index 253f484..0000000 Binary files a/SeKeshedemo/target/classes/com/example/demo/service/ArticleService.class and /dev/null differ diff --git a/SeKeshedemo/target/classes/com/example/demo/service/BorrowRankService.class b/SeKeshedemo/target/classes/com/example/demo/service/BorrowRankService.class deleted file mode 100644 index cca9ca5..0000000 Binary files a/SeKeshedemo/target/classes/com/example/demo/service/BorrowRankService.class and /dev/null differ diff --git a/SeKeshedemo/target/classes/com/example/demo/service/BorrowService.class b/SeKeshedemo/target/classes/com/example/demo/service/BorrowService.class deleted file mode 100644 index da4698b..0000000 Binary files a/SeKeshedemo/target/classes/com/example/demo/service/BorrowService.class and /dev/null differ diff --git a/SeKeshedemo/target/classes/com/example/demo/service/UserService.class b/SeKeshedemo/target/classes/com/example/demo/service/UserService.class deleted file mode 100644 index d0ded28..0000000 Binary files a/SeKeshedemo/target/classes/com/example/demo/service/UserService.class and /dev/null differ diff --git a/SeKeshedemo/target/classes/com/example/demo/service/impl/ArticleServiceImpl.class b/SeKeshedemo/target/classes/com/example/demo/service/impl/ArticleServiceImpl.class deleted file mode 100644 index de68acf..0000000 Binary files a/SeKeshedemo/target/classes/com/example/demo/service/impl/ArticleServiceImpl.class and /dev/null differ diff --git a/SeKeshedemo/target/classes/com/example/demo/service/impl/BorrowServiceImpl.class b/SeKeshedemo/target/classes/com/example/demo/service/impl/BorrowServiceImpl.class deleted file mode 100644 index 7709993..0000000 Binary files a/SeKeshedemo/target/classes/com/example/demo/service/impl/BorrowServiceImpl.class and /dev/null differ diff --git a/SeKeshedemo/target/classes/com/example/demo/service/impl/UserServiceImpl.class b/SeKeshedemo/target/classes/com/example/demo/service/impl/UserServiceImpl.class deleted file mode 100644 index 23d6cb9..0000000 Binary files a/SeKeshedemo/target/classes/com/example/demo/service/impl/UserServiceImpl.class and /dev/null differ diff --git a/SeKeshedemo/target/classes/com/example/demo/utils/JwtUtil.class b/SeKeshedemo/target/classes/com/example/demo/utils/JwtUtil.class deleted file mode 100644 index 581445d..0000000 Binary files a/SeKeshedemo/target/classes/com/example/demo/utils/JwtUtil.class and /dev/null differ diff --git a/SeKeshedemo/target/classes/com/example/demo/utils/Md5Util.class b/SeKeshedemo/target/classes/com/example/demo/utils/Md5Util.class deleted file mode 100644 index 1778082..0000000 Binary files a/SeKeshedemo/target/classes/com/example/demo/utils/Md5Util.class and /dev/null differ diff --git a/library_system/.gitignore b/library_system/.gitignore deleted file mode 100644 index a547bf3..0000000 --- a/library_system/.gitignore +++ /dev/null @@ -1,24 +0,0 @@ -# Logs -logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* -pnpm-debug.log* -lerna-debug.log* - -node_modules -dist -dist-ssr -*.local - -# Editor directories and files -.vscode/* -!.vscode/extensions.json -.idea -.DS_Store -*.suo -*.ntvs* -*.njsproj -*.sln -*.sw? diff --git a/library_system/.vscode/extensions.json b/library_system/.vscode/extensions.json deleted file mode 100644 index a7cea0b..0000000 --- a/library_system/.vscode/extensions.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "recommendations": ["Vue.volar"] -} diff --git a/library_system/README.md b/library_system/README.md deleted file mode 100644 index 1511959..0000000 --- a/library_system/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# Vue 3 + Vite - -This template should help get you started developing with Vue 3 in Vite. The template uses Vue 3 ` - - diff --git a/library_system/package-lock.json b/library_system/package-lock.json deleted file mode 100644 index f6fe63e..0000000 --- a/library_system/package-lock.json +++ /dev/null @@ -1,2498 +0,0 @@ -{ - "name": "library_system", - "version": "0.0.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "library_system", - "version": "0.0.0", - "dependencies": { - "axios": "^1.11.0", - "element-plus": "^2.10.4", - "pinia": "^3.0.3", - "vue": "^3.5.17", - "vue-router": "^4.5.1", - "vuex": "^4.1.0" - }, - "devDependencies": { - "@types/node": "^24.1.0", - "@vitejs/plugin-vue": "^6.0.0", - "unplugin-auto-import": "^19.3.0", - "unplugin-vue-components": "^28.8.0", - "vite": "^7.0.4" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", - "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", - "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/parser": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.0.tgz", - "integrity": "sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g==", - "license": "MIT", - "dependencies": { - "@babel/types": "^7.28.0" - }, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/types": { - "version": "7.28.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.2.tgz", - "integrity": "sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==", - "license": "MIT", - "dependencies": { - "@babel/helper-string-parser": "^7.27.1", - "@babel/helper-validator-identifier": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@ctrl/tinycolor": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-3.6.1.tgz", - "integrity": "sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==", - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/@element-plus/icons-vue": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/@element-plus/icons-vue/-/icons-vue-2.3.1.tgz", - "integrity": "sha512-XxVUZv48RZAd87ucGS48jPf6pKu0yV5UCg9f4FFwtrYxXOwWuVJo6wOvSLKEoMQKjv8GsX/mhP6UsC1lRwbUWg==", - "license": "MIT", - "peerDependencies": { - "vue": "^3.2.0" - } - }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.25.8", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.8.tgz", - "integrity": "sha512-urAvrUedIqEiFR3FYSLTWQgLu5tb+m0qZw0NBEasUeo6wuqatkMDaRT+1uABiGXEu5vqgPd7FGE1BhsAIy9QVA==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.25.8", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.8.tgz", - "integrity": "sha512-RONsAvGCz5oWyePVnLdZY/HHwA++nxYWIX1atInlaW6SEkwq6XkP3+cb825EUcRs5Vss/lGh/2YxAb5xqc07Uw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.25.8", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.8.tgz", - "integrity": "sha512-OD3p7LYzWpLhZEyATcTSJ67qB5D+20vbtr6vHlHWSQYhKtzUYrETuWThmzFpZtFsBIxRvhO07+UgVA9m0i/O1w==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.25.8", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.8.tgz", - "integrity": "sha512-yJAVPklM5+4+9dTeKwHOaA+LQkmrKFX96BM0A/2zQrbS6ENCmxc4OVoBs5dPkCCak2roAD+jKCdnmOqKszPkjA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.25.8", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.8.tgz", - "integrity": "sha512-Jw0mxgIaYX6R8ODrdkLLPwBqHTtYHJSmzzd+QeytSugzQ0Vg4c5rDky5VgkoowbZQahCbsv1rT1KW72MPIkevw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.25.8", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.8.tgz", - "integrity": "sha512-Vh2gLxxHnuoQ+GjPNvDSDRpoBCUzY4Pu0kBqMBDlK4fuWbKgGtmDIeEC081xi26PPjn+1tct+Bh8FjyLlw1Zlg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.25.8", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.8.tgz", - "integrity": "sha512-YPJ7hDQ9DnNe5vxOm6jaie9QsTwcKedPvizTVlqWG9GBSq+BuyWEDazlGaDTC5NGU4QJd666V0yqCBL2oWKPfA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.25.8", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.8.tgz", - "integrity": "sha512-MmaEXxQRdXNFsRN/KcIimLnSJrk2r5H8v+WVafRWz5xdSVmWLoITZQXcgehI2ZE6gioE6HirAEToM/RvFBeuhw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.25.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.8.tgz", - "integrity": "sha512-FuzEP9BixzZohl1kLf76KEVOsxtIBFwCaLupVuk4eFVnOZfU+Wsn+x5Ryam7nILV2pkq2TqQM9EZPsOBuMC+kg==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.25.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.8.tgz", - "integrity": "sha512-WIgg00ARWv/uYLU7lsuDK00d/hHSfES5BzdWAdAig1ioV5kaFNrtK8EqGcUBJhYqotlUByUKz5Qo6u8tt7iD/w==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.25.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.8.tgz", - "integrity": "sha512-A1D9YzRX1i+1AJZuFFUMP1E9fMaYY+GnSQil9Tlw05utlE86EKTUA7RjwHDkEitmLYiFsRd9HwKBPEftNdBfjg==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.25.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.8.tgz", - "integrity": "sha512-O7k1J/dwHkY1RMVvglFHl1HzutGEFFZ3kNiDMSOyUrB7WcoHGf96Sh+64nTRT26l3GMbCW01Ekh/ThKM5iI7hQ==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.25.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.8.tgz", - "integrity": "sha512-uv+dqfRazte3BzfMp8PAQXmdGHQt2oC/y2ovwpTteqrMx2lwaksiFZ/bdkXJC19ttTvNXBuWH53zy/aTj1FgGw==", - "cpu": [ - "mips64el" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.25.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.8.tgz", - "integrity": "sha512-GyG0KcMi1GBavP5JgAkkstMGyMholMDybAf8wF5A70CALlDM2p/f7YFE7H92eDeH/VBtFJA5MT4nRPDGg4JuzQ==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.25.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.8.tgz", - "integrity": "sha512-rAqDYFv3yzMrq7GIcen3XP7TUEG/4LK86LUPMIz6RT8A6pRIDn0sDcvjudVZBiiTcZCY9y2SgYX2lgK3AF+1eg==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.25.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.8.tgz", - "integrity": "sha512-Xutvh6VjlbcHpsIIbwY8GVRbwoviWT19tFhgdA7DlenLGC/mbc3lBoVb7jxj9Z+eyGqvcnSyIltYUrkKzWqSvg==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.25.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.8.tgz", - "integrity": "sha512-ASFQhgY4ElXh3nDcOMTkQero4b1lgubskNlhIfJrsH5OKZXDpUAKBlNS0Kx81jwOBp+HCeZqmoJuihTv57/jvQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/netbsd-arm64": { - "version": "0.25.8", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.8.tgz", - "integrity": "sha512-d1KfruIeohqAi6SA+gENMuObDbEjn22olAR7egqnkCD9DGBG0wsEARotkLgXDu6c4ncgWTZJtN5vcgxzWRMzcw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.25.8", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.8.tgz", - "integrity": "sha512-nVDCkrvx2ua+XQNyfrujIG38+YGyuy2Ru9kKVNyh5jAys6n+l44tTtToqHjino2My8VAY6Lw9H7RI73XFi66Cg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-arm64": { - "version": "0.25.8", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.8.tgz", - "integrity": "sha512-j8HgrDuSJFAujkivSMSfPQSAa5Fxbvk4rgNAS5i3K+r8s1X0p1uOO2Hl2xNsGFppOeHOLAVgYwDVlmxhq5h+SQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.25.8", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.8.tgz", - "integrity": "sha512-1h8MUAwa0VhNCDp6Af0HToI2TJFAn1uqT9Al6DJVzdIBAd21m/G0Yfc77KDM3uF3T/YaOgQq3qTJHPbTOInaIQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openharmony-arm64": { - "version": "0.25.8", - "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.8.tgz", - "integrity": "sha512-r2nVa5SIK9tSWd0kJd9HCffnDHKchTGikb//9c7HX+r+wHYCpQrSgxhlY6KWV1nFo1l4KFbsMlHk+L6fekLsUg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openharmony" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.25.8", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.8.tgz", - "integrity": "sha512-zUlaP2S12YhQ2UzUfcCuMDHQFJyKABkAjvO5YSndMiIkMimPmxA+BYSBikWgsRpvyxuRnow4nS5NPnf9fpv41w==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.25.8", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.8.tgz", - "integrity": "sha512-YEGFFWESlPva8hGL+zvj2z/SaK+pH0SwOM0Nc/d+rVnW7GSTFlLBGzZkuSU9kFIGIo8q9X3ucpZhu8PDN5A2sQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.25.8", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.8.tgz", - "integrity": "sha512-hiGgGC6KZ5LZz58OL/+qVVoZiuZlUYlYHNAmczOm7bs2oE1XriPFi5ZHHrS8ACpV5EjySrnoCKmcbQMN+ojnHg==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.25.8", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.8.tgz", - "integrity": "sha512-cn3Yr7+OaaZq1c+2pe+8yxC8E144SReCQjN6/2ynubzYjvyqZjTXfQJpAcQpsdJq3My7XADANiYGHoFC69pLQw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@floating-ui/core": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.7.2.tgz", - "integrity": "sha512-wNB5ooIKHQc+Kui96jE/n69rHFWAVoxn5CAzL1Xdd8FG03cgY3MLO+GF9U3W737fYDSgPWA6MReKhBQBop6Pcw==", - "license": "MIT", - "dependencies": { - "@floating-ui/utils": "^0.2.10" - } - }, - "node_modules/@floating-ui/dom": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.7.2.tgz", - "integrity": "sha512-7cfaOQuCS27HD7DX+6ib2OrnW+b4ZBwDNnCcT0uTyidcmyWb03FnQqJybDBoCnpdxwBSfA94UAYlRCt7mV+TbA==", - "license": "MIT", - "dependencies": { - "@floating-ui/core": "^1.7.2", - "@floating-ui/utils": "^0.2.10" - } - }, - "node_modules/@floating-ui/utils": { - "version": "0.2.10", - "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.10.tgz", - "integrity": "sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==", - "license": "MIT" - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.4.tgz", - "integrity": "sha512-VT2+G1VQs/9oz078bLrYbecdZKs912zQlkelYpuf+SXF+QvZDYJlbx/LSx+meSAwdDFnF8FVXW92AVjjkVmgFw==", - "license": "MIT" - }, - "node_modules/@popperjs/core": { - "name": "@sxzz/popperjs-es", - "version": "2.11.7", - "resolved": "https://registry.npmjs.org/@sxzz/popperjs-es/-/popperjs-es-2.11.7.tgz", - "integrity": "sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ==", - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/popperjs" - } - }, - "node_modules/@rolldown/pluginutils": { - "version": "1.0.0-beta.19", - "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.19.tgz", - "integrity": "sha512-3FL3mnMbPu0muGOCaKAhhFEYmqv9eTfPSJRJmANrCwtgK8VuxpsZDGK+m0LYAGoyO8+0j5uRe4PeyPDK1yA/hA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.45.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.45.1.tgz", - "integrity": "sha512-NEySIFvMY0ZQO+utJkgoMiCAjMrGvnbDLHvcmlA33UXJpYBCvlBEbMMtV837uCkS+plG2umfhn0T5mMAxGrlRA==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-android-arm64": { - "version": "4.45.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.45.1.tgz", - "integrity": "sha512-ujQ+sMXJkg4LRJaYreaVx7Z/VMgBBd89wGS4qMrdtfUFZ+TSY5Rs9asgjitLwzeIbhwdEhyj29zhst3L1lKsRQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.45.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.45.1.tgz", - "integrity": "sha512-FSncqHvqTm3lC6Y13xncsdOYfxGSLnP+73k815EfNmpewPs+EyM49haPS105Rh4aF5mJKywk9X0ogzLXZzN9lA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.45.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.45.1.tgz", - "integrity": "sha512-2/vVn/husP5XI7Fsf/RlhDaQJ7x9zjvC81anIVbr4b/f0xtSmXQTFcGIQ/B1cXIYM6h2nAhJkdMHTnD7OtQ9Og==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.45.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.45.1.tgz", - "integrity": "sha512-4g1kaDxQItZsrkVTdYQ0bxu4ZIQ32cotoQbmsAnW1jAE4XCMbcBPDirX5fyUzdhVCKgPcrwWuucI8yrVRBw2+g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.45.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.45.1.tgz", - "integrity": "sha512-L/6JsfiL74i3uK1Ti2ZFSNsp5NMiM4/kbbGEcOCps99aZx3g8SJMO1/9Y0n/qKlWZfn6sScf98lEOUe2mBvW9A==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.45.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.45.1.tgz", - "integrity": "sha512-RkdOTu2jK7brlu+ZwjMIZfdV2sSYHK2qR08FUWcIoqJC2eywHbXr0L8T/pONFwkGukQqERDheaGTeedG+rra6Q==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.45.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.45.1.tgz", - "integrity": "sha512-3kJ8pgfBt6CIIr1o+HQA7OZ9mp/zDk3ctekGl9qn/pRBgrRgfwiffaUmqioUGN9hv0OHv2gxmvdKOkARCtRb8Q==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.45.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.45.1.tgz", - "integrity": "sha512-k3dOKCfIVixWjG7OXTCOmDfJj3vbdhN0QYEqB+OuGArOChek22hn7Uy5A/gTDNAcCy5v2YcXRJ/Qcnm4/ma1xw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.45.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.45.1.tgz", - "integrity": "sha512-PmI1vxQetnM58ZmDFl9/Uk2lpBBby6B6rF4muJc65uZbxCs0EA7hhKCk2PKlmZKuyVSHAyIw3+/SiuMLxKxWog==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-loongarch64-gnu": { - "version": "4.45.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.45.1.tgz", - "integrity": "sha512-9UmI0VzGmNJ28ibHW2GpE2nF0PBQqsyiS4kcJ5vK+wuwGnV5RlqdczVocDSUfGX/Na7/XINRVoUgJyFIgipoRg==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.45.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.45.1.tgz", - "integrity": "sha512-7nR2KY8oEOUTD3pBAxIBBbZr0U7U+R9HDTPNy+5nVVHDXI4ikYniH1oxQz9VoB5PbBU1CZuDGHkLJkd3zLMWsg==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.45.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.45.1.tgz", - "integrity": "sha512-nlcl3jgUultKROfZijKjRQLUu9Ma0PeNv/VFHkZiKbXTBQXhpytS8CIj5/NfBeECZtY2FJQubm6ltIxm/ftxpw==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.45.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.45.1.tgz", - "integrity": "sha512-HJV65KLS51rW0VY6rvZkiieiBnurSzpzore1bMKAhunQiECPuxsROvyeaot/tcK3A3aGnI+qTHqisrpSgQrpgA==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.45.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.45.1.tgz", - "integrity": "sha512-NITBOCv3Qqc6hhwFt7jLV78VEO/il4YcBzoMGGNxznLgRQf43VQDae0aAzKiBeEPIxnDrACiMgbqjuihx08OOw==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.45.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.45.1.tgz", - "integrity": "sha512-+E/lYl6qu1zqgPEnTrs4WysQtvc/Sh4fC2nByfFExqgYrqkKWp1tWIbe+ELhixnenSpBbLXNi6vbEEJ8M7fiHw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.45.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.45.1.tgz", - "integrity": "sha512-a6WIAp89p3kpNoYStITT9RbTbTnqarU7D8N8F2CV+4Cl9fwCOZraLVuVFvlpsW0SbIiYtEnhCZBPLoNdRkjQFw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.45.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.45.1.tgz", - "integrity": "sha512-T5Bi/NS3fQiJeYdGvRpTAP5P02kqSOpqiopwhj0uaXB6nzs5JVi2XMJb18JUSKhCOX8+UE1UKQufyD6Or48dJg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.45.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.45.1.tgz", - "integrity": "sha512-lxV2Pako3ujjuUe9jiU3/s7KSrDfH6IgTSQOnDWr9aJ92YsFd7EurmClK0ly/t8dzMkDtd04g60WX6yl0sGfdw==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.45.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.45.1.tgz", - "integrity": "sha512-M/fKi4sasCdM8i0aWJjCSFm2qEnYRR8AMLG2kxp6wD13+tMGA4Z1tVAuHkNRjud5SW2EM3naLuK35w9twvf6aA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@types/estree": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", - "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-H3MHACvFUEiujabxhaI/ImO6gUrd8oOurg7LQtS7mbwIXA/cUqWrvBsaeJ23aZEPk1TAYkurjfMbSELfoCXlGA==", - "license": "MIT" - }, - "node_modules/@types/lodash-es": { - "version": "4.17.12", - "resolved": "https://registry.npmjs.org/@types/lodash-es/-/lodash-es-4.17.12.tgz", - "integrity": "sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==", - "license": "MIT", - "dependencies": { - "@types/lodash": "*" - } - }, - "node_modules/@types/node": { - "version": "24.1.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-24.1.0.tgz", - "integrity": "sha512-ut5FthK5moxFKH2T1CUOC6ctR67rQRvvHdFLCD2Ql6KXmMuCrjsSsRI9UsLCm9M18BMwClv4pn327UvB7eeO1w==", - "dev": true, - "license": "MIT", - "dependencies": { - "undici-types": "~7.8.0" - } - }, - "node_modules/@types/web-bluetooth": { - "version": "0.0.16", - "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.16.tgz", - "integrity": "sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==", - "license": "MIT" - }, - "node_modules/@vitejs/plugin-vue": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-6.0.0.tgz", - "integrity": "sha512-iAliE72WsdhjzTOp2DtvKThq1VBC4REhwRcaA+zPAAph6I+OQhUXv+Xu2KS7ElxYtb7Zc/3R30Hwv1DxEo7NXQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@rolldown/pluginutils": "1.0.0-beta.19" - }, - "engines": { - "node": "^20.19.0 || >=22.12.0" - }, - "peerDependencies": { - "vite": "^5.0.0 || ^6.0.0 || ^7.0.0", - "vue": "^3.2.25" - } - }, - "node_modules/@vue/compiler-core": { - "version": "3.5.18", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.18.tgz", - "integrity": "sha512-3slwjQrrV1TO8MoXgy3aynDQ7lslj5UqDxuHnrzHtpON5CBinhWjJETciPngpin/T3OuW3tXUf86tEurusnztw==", - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.28.0", - "@vue/shared": "3.5.18", - "entities": "^4.5.0", - "estree-walker": "^2.0.2", - "source-map-js": "^1.2.1" - } - }, - "node_modules/@vue/compiler-dom": { - "version": "3.5.18", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.18.tgz", - "integrity": "sha512-RMbU6NTU70++B1JyVJbNbeFkK+A+Q7y9XKE2EM4NLGm2WFR8x9MbAtWxPPLdm0wUkuZv9trpwfSlL6tjdIa1+A==", - "license": "MIT", - "dependencies": { - "@vue/compiler-core": "3.5.18", - "@vue/shared": "3.5.18" - } - }, - "node_modules/@vue/compiler-sfc": { - "version": "3.5.18", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.18.tgz", - "integrity": "sha512-5aBjvGqsWs+MoxswZPoTB9nSDb3dhd1x30xrrltKujlCxo48j8HGDNj3QPhF4VIS0VQDUrA1xUfp2hEa+FNyXA==", - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.28.0", - "@vue/compiler-core": "3.5.18", - "@vue/compiler-dom": "3.5.18", - "@vue/compiler-ssr": "3.5.18", - "@vue/shared": "3.5.18", - "estree-walker": "^2.0.2", - "magic-string": "^0.30.17", - "postcss": "^8.5.6", - "source-map-js": "^1.2.1" - } - }, - "node_modules/@vue/compiler-ssr": { - "version": "3.5.18", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.18.tgz", - "integrity": "sha512-xM16Ak7rSWHkM3m22NlmcdIM+K4BMyFARAfV9hYFl+SFuRzrZ3uGMNW05kA5pmeMa0X9X963Kgou7ufdbpOP9g==", - "license": "MIT", - "dependencies": { - "@vue/compiler-dom": "3.5.18", - "@vue/shared": "3.5.18" - } - }, - "node_modules/@vue/devtools-api": { - "version": "6.6.4", - "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.6.4.tgz", - "integrity": "sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==", - "license": "MIT" - }, - "node_modules/@vue/devtools-kit": { - "version": "7.7.7", - "resolved": "https://registry.npmjs.org/@vue/devtools-kit/-/devtools-kit-7.7.7.tgz", - "integrity": "sha512-wgoZtxcTta65cnZ1Q6MbAfePVFxfM+gq0saaeytoph7nEa7yMXoi6sCPy4ufO111B9msnw0VOWjPEFCXuAKRHA==", - "license": "MIT", - "dependencies": { - "@vue/devtools-shared": "^7.7.7", - "birpc": "^2.3.0", - "hookable": "^5.5.3", - "mitt": "^3.0.1", - "perfect-debounce": "^1.0.0", - "speakingurl": "^14.0.1", - "superjson": "^2.2.2" - } - }, - "node_modules/@vue/devtools-shared": { - "version": "7.7.7", - "resolved": "https://registry.npmjs.org/@vue/devtools-shared/-/devtools-shared-7.7.7.tgz", - "integrity": "sha512-+udSj47aRl5aKb0memBvcUG9koarqnxNM5yjuREvqwK6T3ap4mn3Zqqc17QrBFTqSMjr3HK1cvStEZpMDpfdyw==", - "license": "MIT", - "dependencies": { - "rfdc": "^1.4.1" - } - }, - "node_modules/@vue/reactivity": { - "version": "3.5.18", - "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.18.tgz", - "integrity": "sha512-x0vPO5Imw+3sChLM5Y+B6G1zPjwdOri9e8V21NnTnlEvkxatHEH5B5KEAJcjuzQ7BsjGrKtfzuQ5eQwXh8HXBg==", - "license": "MIT", - "dependencies": { - "@vue/shared": "3.5.18" - } - }, - "node_modules/@vue/runtime-core": { - "version": "3.5.18", - "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.18.tgz", - "integrity": "sha512-DUpHa1HpeOQEt6+3nheUfqVXRog2kivkXHUhoqJiKR33SO4x+a5uNOMkV487WPerQkL0vUuRvq/7JhRgLW3S+w==", - "license": "MIT", - "dependencies": { - "@vue/reactivity": "3.5.18", - "@vue/shared": "3.5.18" - } - }, - "node_modules/@vue/runtime-dom": { - "version": "3.5.18", - "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.18.tgz", - "integrity": "sha512-YwDj71iV05j4RnzZnZtGaXwPoUWeRsqinblgVJwR8XTXYZ9D5PbahHQgsbmzUvCWNF6x7siQ89HgnX5eWkr3mw==", - "license": "MIT", - "dependencies": { - "@vue/reactivity": "3.5.18", - "@vue/runtime-core": "3.5.18", - "@vue/shared": "3.5.18", - "csstype": "^3.1.3" - } - }, - "node_modules/@vue/server-renderer": { - "version": "3.5.18", - "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.18.tgz", - "integrity": "sha512-PvIHLUoWgSbDG7zLHqSqaCoZvHi6NNmfVFOqO+OnwvqMz/tqQr3FuGWS8ufluNddk7ZLBJYMrjcw1c6XzR12mA==", - "license": "MIT", - "dependencies": { - "@vue/compiler-ssr": "3.5.18", - "@vue/shared": "3.5.18" - }, - "peerDependencies": { - "vue": "3.5.18" - } - }, - "node_modules/@vue/shared": { - "version": "3.5.18", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.18.tgz", - "integrity": "sha512-cZy8Dq+uuIXbxCZpuLd2GJdeSO/lIzIspC2WtkqIpje5QyFbvLaI5wZtdUjLHjGZrlVX6GilejatWwVYYRc8tA==", - "license": "MIT" - }, - "node_modules/@vueuse/core": { - "version": "9.13.0", - "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-9.13.0.tgz", - "integrity": "sha512-pujnclbeHWxxPRqXWmdkKV5OX4Wk4YeK7wusHqRwU0Q7EFusHoqNA/aPhB6KCh9hEqJkLAJo7bb0Lh9b+OIVzw==", - "license": "MIT", - "dependencies": { - "@types/web-bluetooth": "^0.0.16", - "@vueuse/metadata": "9.13.0", - "@vueuse/shared": "9.13.0", - "vue-demi": "*" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@vueuse/core/node_modules/vue-demi": { - "version": "0.14.10", - "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.10.tgz", - "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==", - "hasInstallScript": true, - "license": "MIT", - "bin": { - "vue-demi-fix": "bin/vue-demi-fix.js", - "vue-demi-switch": "bin/vue-demi-switch.js" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - }, - "peerDependencies": { - "@vue/composition-api": "^1.0.0-rc.1", - "vue": "^3.0.0-0 || ^2.6.0" - }, - "peerDependenciesMeta": { - "@vue/composition-api": { - "optional": true - } - } - }, - "node_modules/@vueuse/metadata": { - "version": "9.13.0", - "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-9.13.0.tgz", - "integrity": "sha512-gdU7TKNAUVlXXLbaF+ZCfte8BjRJQWPCa2J55+7/h+yDtzw3vOoGQDRXzI6pyKyo6bXFT5/QoPE4hAknExjRLQ==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@vueuse/shared": { - "version": "9.13.0", - "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-9.13.0.tgz", - "integrity": "sha512-UrnhU+Cnufu4S6JLCPZnkWh0WwZGUp72ktOF2DFptMlOs3TOdVv8xJN53zhHGARmVOsz5KqOls09+J1NR6sBKw==", - "license": "MIT", - "dependencies": { - "vue-demi": "*" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@vueuse/shared/node_modules/vue-demi": { - "version": "0.14.10", - "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.10.tgz", - "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==", - "hasInstallScript": true, - "license": "MIT", - "bin": { - "vue-demi-fix": "bin/vue-demi-fix.js", - "vue-demi-switch": "bin/vue-demi-switch.js" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - }, - "peerDependencies": { - "@vue/composition-api": "^1.0.0-rc.1", - "vue": "^3.0.0-0 || ^2.6.0" - }, - "peerDependenciesMeta": { - "@vue/composition-api": { - "optional": true - } - } - }, - "node_modules/acorn": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", - "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", - "dev": true, - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "license": "ISC", - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/anymatch/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/async-validator": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/async-validator/-/async-validator-4.2.5.tgz", - "integrity": "sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==", - "license": "MIT" - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "license": "MIT" - }, - "node_modules/axios": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.11.0.tgz", - "integrity": "sha512-1Lx3WLFQWm3ooKDYZD1eXmoGO9fxYQjrycfHFC8P0sCfQVXyROp0p9PFWBehewBOdCwHc+f/b8I0fMto5eSfwA==", - "license": "MIT", - "dependencies": { - "follow-redirects": "^1.15.6", - "form-data": "^4.0.4", - "proxy-from-env": "^1.1.0" - } - }, - "node_modules/binary-extensions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", - "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/birpc": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/birpc/-/birpc-2.5.0.tgz", - "integrity": "sha512-VSWO/W6nNQdyP520F1mhf+Lc2f8pjGQOtoHHm7Ze8Go1kX7akpVIrtTa0fn+HB0QJEDVacl6aO08YE0PgXfdnQ==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, - "license": "MIT", - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/call-bind-apply-helpers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", - "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", - "dev": true, - "license": "MIT", - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "license": "MIT", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/confbox": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.2.2.tgz", - "integrity": "sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/copy-anything": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-3.0.5.tgz", - "integrity": "sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==", - "license": "MIT", - "dependencies": { - "is-what": "^4.1.8" - }, - "engines": { - "node": ">=12.13" - }, - "funding": { - "url": "https://github.com/sponsors/mesqueeb" - } - }, - "node_modules/csstype": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", - "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", - "license": "MIT" - }, - "node_modules/dayjs": { - "version": "1.11.13", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz", - "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==", - "license": "MIT" - }, - "node_modules/debug": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", - "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "license": "MIT", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/dunder-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", - "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-errors": "^1.3.0", - "gopd": "^1.2.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/element-plus": { - "version": "2.10.4", - "resolved": "https://registry.npmjs.org/element-plus/-/element-plus-2.10.4.tgz", - "integrity": "sha512-UD4elWHrCnp1xlPhbXmVcaKFLCRaRAY6WWRwemGfGW3ceIjXm9fSYc9RNH3AiOEA6Ds1p9ZvhCs76CR9J8Vd+A==", - "license": "MIT", - "dependencies": { - "@ctrl/tinycolor": "^3.4.1", - "@element-plus/icons-vue": "^2.3.1", - "@floating-ui/dom": "^1.0.1", - "@popperjs/core": "npm:@sxzz/popperjs-es@^2.11.7", - "@types/lodash": "^4.14.182", - "@types/lodash-es": "^4.17.6", - "@vueuse/core": "^9.1.0", - "async-validator": "^4.2.5", - "dayjs": "^1.11.13", - "escape-html": "^1.0.3", - "lodash": "^4.17.21", - "lodash-es": "^4.17.21", - "lodash-unified": "^1.0.2", - "memoize-one": "^6.0.0", - "normalize-wheel-es": "^1.2.0" - }, - "peerDependencies": { - "vue": "^3.2.0" - } - }, - "node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/es-define-property": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", - "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-object-atoms": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", - "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-set-tostringtag": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", - "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/esbuild": { - "version": "0.25.8", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.8.tgz", - "integrity": "sha512-vVC0USHGtMi8+R4Kz8rt6JhEWLxsv9Rnu/lGYbPR8u47B+DCBksq9JarW0zOO7bs37hyOK1l2/oqtbciutL5+Q==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.25.8", - "@esbuild/android-arm": "0.25.8", - "@esbuild/android-arm64": "0.25.8", - "@esbuild/android-x64": "0.25.8", - "@esbuild/darwin-arm64": "0.25.8", - "@esbuild/darwin-x64": "0.25.8", - "@esbuild/freebsd-arm64": "0.25.8", - "@esbuild/freebsd-x64": "0.25.8", - "@esbuild/linux-arm": "0.25.8", - "@esbuild/linux-arm64": "0.25.8", - "@esbuild/linux-ia32": "0.25.8", - "@esbuild/linux-loong64": "0.25.8", - "@esbuild/linux-mips64el": "0.25.8", - "@esbuild/linux-ppc64": "0.25.8", - "@esbuild/linux-riscv64": "0.25.8", - "@esbuild/linux-s390x": "0.25.8", - "@esbuild/linux-x64": "0.25.8", - "@esbuild/netbsd-arm64": "0.25.8", - "@esbuild/netbsd-x64": "0.25.8", - "@esbuild/openbsd-arm64": "0.25.8", - "@esbuild/openbsd-x64": "0.25.8", - "@esbuild/openharmony-arm64": "0.25.8", - "@esbuild/sunos-x64": "0.25.8", - "@esbuild/win32-arm64": "0.25.8", - "@esbuild/win32-ia32": "0.25.8", - "@esbuild/win32-x64": "0.25.8" - } - }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", - "license": "MIT" - }, - "node_modules/escape-string-regexp": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", - "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "license": "MIT" - }, - "node_modules/exsolve": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/exsolve/-/exsolve-1.0.7.tgz", - "integrity": "sha512-VO5fQUzZtI6C+vx4w/4BWJpg3s/5l+6pRQEHzFRM8WFi4XffSP1Z+4qi7GbjWbvRQEbdIco5mIMq+zX4rPuLrw==", - "dev": true, - "license": "MIT" - }, - "node_modules/fdir": { - "version": "6.4.6", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.6.tgz", - "integrity": "sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "picomatch": "^3 || ^4" - }, - "peerDependenciesMeta": { - "picomatch": { - "optional": true - } - } - }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, - "license": "MIT", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/follow-redirects": { - "version": "1.15.9", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", - "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "license": "MIT", - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/form-data": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz", - "integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==", - "license": "MIT", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "es-set-tostringtag": "^2.1.0", - "hasown": "^2.0.2", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-intrinsic": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", - "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "function-bind": "^1.1.2", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "math-intrinsics": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", - "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/gopd": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", - "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/hookable": { - "version": "5.5.3", - "resolved": "https://registry.npmjs.org/hookable/-/hookable-5.5.3.tgz", - "integrity": "sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==", - "license": "MIT" - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "license": "MIT", - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-what": { - "version": "4.1.16", - "resolved": "https://registry.npmjs.org/is-what/-/is-what-4.1.16.tgz", - "integrity": "sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==", - "license": "MIT", - "engines": { - "node": ">=12.13" - }, - "funding": { - "url": "https://github.com/sponsors/mesqueeb" - } - }, - "node_modules/js-tokens": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz", - "integrity": "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/local-pkg": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-1.1.1.tgz", - "integrity": "sha512-WunYko2W1NcdfAFpuLUoucsgULmgDBRkdxHxWQ7mK0cQqwPiy8E1enjuRBrhLtZkB5iScJ1XIPdhVEFK8aOLSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "mlly": "^1.7.4", - "pkg-types": "^2.0.1", - "quansync": "^0.2.8" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "license": "MIT" - }, - "node_modules/lodash-es": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", - "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", - "license": "MIT" - }, - "node_modules/lodash-unified": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/lodash-unified/-/lodash-unified-1.0.3.tgz", - "integrity": "sha512-WK9qSozxXOD7ZJQlpSqOT+om2ZfcT4yO+03FuzAHD0wF6S0l0090LRPDx3vhTTLZ8cFKpBn+IOcVXK6qOcIlfQ==", - "license": "MIT", - "peerDependencies": { - "@types/lodash-es": "*", - "lodash": "*", - "lodash-es": "*" - } - }, - "node_modules/magic-string": { - "version": "0.30.17", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", - "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0" - } - }, - "node_modules/math-intrinsics": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", - "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/memoize-one": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz", - "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==", - "license": "MIT" - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "license": "MIT", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mitt": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", - "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==", - "license": "MIT" - }, - "node_modules/mlly": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.7.4.tgz", - "integrity": "sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==", - "dev": true, - "license": "MIT", - "dependencies": { - "acorn": "^8.14.0", - "pathe": "^2.0.1", - "pkg-types": "^1.3.0", - "ufo": "^1.5.4" - } - }, - "node_modules/mlly/node_modules/confbox": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz", - "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==", - "dev": true, - "license": "MIT" - }, - "node_modules/mlly/node_modules/pkg-types": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.3.1.tgz", - "integrity": "sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "confbox": "^0.1.8", - "mlly": "^1.7.4", - "pathe": "^2.0.1" - } - }, - "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true, - "license": "MIT" - }, - "node_modules/nanoid": { - "version": "3.3.11", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", - "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/normalize-wheel-es": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/normalize-wheel-es/-/normalize-wheel-es-1.2.0.tgz", - "integrity": "sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw==", - "license": "BSD-3-Clause" - }, - "node_modules/pathe": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", - "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", - "dev": true, - "license": "MIT" - }, - "node_modules/perfect-debounce": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-1.0.0.tgz", - "integrity": "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==", - "license": "MIT" - }, - "node_modules/picocolors": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "license": "ISC" - }, - "node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pinia": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/pinia/-/pinia-3.0.3.tgz", - "integrity": "sha512-ttXO/InUULUXkMHpTdp9Fj4hLpD/2AoJdmAbAeW2yu1iy1k+pkFekQXw5VpC0/5p51IOR/jDaDRfRWRnMMsGOA==", - "license": "MIT", - "dependencies": { - "@vue/devtools-api": "^7.7.2" - }, - "funding": { - "url": "https://github.com/sponsors/posva" - }, - "peerDependencies": { - "typescript": ">=4.4.4", - "vue": "^2.7.0 || ^3.5.11" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/pinia/node_modules/@vue/devtools-api": { - "version": "7.7.7", - "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-7.7.7.tgz", - "integrity": "sha512-lwOnNBH2e7x1fIIbVT7yF5D+YWhqELm55/4ZKf45R9T8r9dE2AIOy8HKjfqzGsoTHFbWbr337O4E0A0QADnjBg==", - "license": "MIT", - "dependencies": { - "@vue/devtools-kit": "^7.7.7" - } - }, - "node_modules/pkg-types": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-2.2.0.tgz", - "integrity": "sha512-2SM/GZGAEkPp3KWORxQZns4M+WSeXbC2HEvmOIJe3Cmiv6ieAJvdVhDldtHqM5J1Y7MrR1XhkBT/rMlhh9FdqQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "confbox": "^0.2.2", - "exsolve": "^1.0.7", - "pathe": "^2.0.3" - } - }, - "node_modules/postcss": { - "version": "8.5.6", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", - "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "nanoid": "^3.3.11", - "picocolors": "^1.1.1", - "source-map-js": "^1.2.1" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", - "license": "MIT" - }, - "node_modules/quansync": { - "version": "0.2.10", - "resolved": "https://registry.npmjs.org/quansync/-/quansync-0.2.10.tgz", - "integrity": "sha512-t41VRkMYbkHyCYmOvx/6URnN80H7k4X0lLdBMGsz+maAwrJQYB1djpV6vHrQIBE0WBSGqhtEHrK9U3DWWH8v7A==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/antfu" - }, - { - "type": "individual", - "url": "https://github.com/sponsors/sxzz" - } - ], - "license": "MIT" - }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "license": "MIT", - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/readdirp/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/rfdc": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", - "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", - "license": "MIT" - }, - "node_modules/rollup": { - "version": "4.45.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.45.1.tgz", - "integrity": "sha512-4iya7Jb76fVpQyLoiVpzUrsjQ12r3dM7fIVz+4NwoYvZOShknRmiv+iu9CClZml5ZLGb0XMcYLutK6w9tgxHDw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "1.0.8" - }, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=18.0.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.45.1", - "@rollup/rollup-android-arm64": "4.45.1", - "@rollup/rollup-darwin-arm64": "4.45.1", - "@rollup/rollup-darwin-x64": "4.45.1", - "@rollup/rollup-freebsd-arm64": "4.45.1", - "@rollup/rollup-freebsd-x64": "4.45.1", - "@rollup/rollup-linux-arm-gnueabihf": "4.45.1", - "@rollup/rollup-linux-arm-musleabihf": "4.45.1", - "@rollup/rollup-linux-arm64-gnu": "4.45.1", - "@rollup/rollup-linux-arm64-musl": "4.45.1", - "@rollup/rollup-linux-loongarch64-gnu": "4.45.1", - "@rollup/rollup-linux-powerpc64le-gnu": "4.45.1", - "@rollup/rollup-linux-riscv64-gnu": "4.45.1", - "@rollup/rollup-linux-riscv64-musl": "4.45.1", - "@rollup/rollup-linux-s390x-gnu": "4.45.1", - "@rollup/rollup-linux-x64-gnu": "4.45.1", - "@rollup/rollup-linux-x64-musl": "4.45.1", - "@rollup/rollup-win32-arm64-msvc": "4.45.1", - "@rollup/rollup-win32-ia32-msvc": "4.45.1", - "@rollup/rollup-win32-x64-msvc": "4.45.1", - "fsevents": "~2.3.2" - } - }, - "node_modules/scule": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/scule/-/scule-1.3.0.tgz", - "integrity": "sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==", - "dev": true, - "license": "MIT" - }, - "node_modules/source-map-js": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", - "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/speakingurl": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/speakingurl/-/speakingurl-14.0.1.tgz", - "integrity": "sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strip-literal": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-3.0.0.tgz", - "integrity": "sha512-TcccoMhJOM3OebGhSBEmp3UZ2SfDMZUEBdRA/9ynfLi8yYajyWX3JiXArcJt4Umh4vISpspkQIY8ZZoCqjbviA==", - "dev": true, - "license": "MIT", - "dependencies": { - "js-tokens": "^9.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/superjson": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/superjson/-/superjson-2.2.2.tgz", - "integrity": "sha512-5JRxVqC8I8NuOUjzBbvVJAKNM8qoVuH0O77h4WInc/qC2q5IreqKxYwgkga3PfA22OayK2ikceb/B26dztPl+Q==", - "license": "MIT", - "dependencies": { - "copy-anything": "^3.0.2" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/tinyglobby": { - "version": "0.2.14", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz", - "integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "fdir": "^6.4.4", - "picomatch": "^4.0.2" - }, - "engines": { - "node": ">=12.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/SuperchupuDev" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/ufo": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.6.1.tgz", - "integrity": "sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==", - "dev": true, - "license": "MIT" - }, - "node_modules/undici-types": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.8.0.tgz", - "integrity": "sha512-9UJ2xGDvQ43tYyVMpuHlsgApydB8ZKfVYTsLDhXkFL/6gfkp+U8xTGdh8pMJv1SpZna0zxG1DwsKZsreLbXBxw==", - "dev": true, - "license": "MIT" - }, - "node_modules/unimport": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/unimport/-/unimport-4.2.0.tgz", - "integrity": "sha512-mYVtA0nmzrysnYnyb3ALMbByJ+Maosee2+WyE0puXl+Xm2bUwPorPaaeZt0ETfuroPOtG8jj1g/qeFZ6buFnag==", - "dev": true, - "license": "MIT", - "dependencies": { - "acorn": "^8.14.1", - "escape-string-regexp": "^5.0.0", - "estree-walker": "^3.0.3", - "local-pkg": "^1.1.1", - "magic-string": "^0.30.17", - "mlly": "^1.7.4", - "pathe": "^2.0.3", - "picomatch": "^4.0.2", - "pkg-types": "^2.1.0", - "scule": "^1.3.0", - "strip-literal": "^3.0.0", - "tinyglobby": "^0.2.12", - "unplugin": "^2.2.2", - "unplugin-utils": "^0.2.4" - }, - "engines": { - "node": ">=18.12.0" - } - }, - "node_modules/unimport/node_modules/estree-walker": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", - "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0" - } - }, - "node_modules/unplugin": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-2.3.5.tgz", - "integrity": "sha512-RyWSb5AHmGtjjNQ6gIlA67sHOsWpsbWpwDokLwTcejVdOjEkJZh7QKu14J00gDDVSh8kGH4KYC/TNBceXFZhtw==", - "dev": true, - "license": "MIT", - "dependencies": { - "acorn": "^8.14.1", - "picomatch": "^4.0.2", - "webpack-virtual-modules": "^0.6.2" - }, - "engines": { - "node": ">=18.12.0" - } - }, - "node_modules/unplugin-auto-import": { - "version": "19.3.0", - "resolved": "https://registry.npmjs.org/unplugin-auto-import/-/unplugin-auto-import-19.3.0.tgz", - "integrity": "sha512-iIi0u4Gq2uGkAOGqlPJOAMI8vocvjh1clGTfSK4SOrJKrt+tirrixo/FjgBwXQNNdS7ofcr7OxzmOb/RjWxeEQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "local-pkg": "^1.1.1", - "magic-string": "^0.30.17", - "picomatch": "^4.0.2", - "unimport": "^4.2.0", - "unplugin": "^2.3.4", - "unplugin-utils": "^0.2.4" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - }, - "peerDependencies": { - "@nuxt/kit": "^3.2.2", - "@vueuse/core": "*" - }, - "peerDependenciesMeta": { - "@nuxt/kit": { - "optional": true - }, - "@vueuse/core": { - "optional": true - } - } - }, - "node_modules/unplugin-utils": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/unplugin-utils/-/unplugin-utils-0.2.4.tgz", - "integrity": "sha512-8U/MtpkPkkk3Atewj1+RcKIjb5WBimZ/WSLhhR3w6SsIj8XJuKTacSP8g+2JhfSGw0Cb125Y+2zA/IzJZDVbhA==", - "dev": true, - "license": "MIT", - "dependencies": { - "pathe": "^2.0.2", - "picomatch": "^4.0.2" - }, - "engines": { - "node": ">=18.12.0" - }, - "funding": { - "url": "https://github.com/sponsors/sxzz" - } - }, - "node_modules/unplugin-vue-components": { - "version": "28.8.0", - "resolved": "https://registry.npmjs.org/unplugin-vue-components/-/unplugin-vue-components-28.8.0.tgz", - "integrity": "sha512-2Q6ZongpoQzuXDK0ZsVzMoshH0MWZQ1pzVL538G7oIDKRTVzHjppBDS8aB99SADGHN3lpGU7frraCG6yWNoL5Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "chokidar": "^3.6.0", - "debug": "^4.4.1", - "local-pkg": "^1.1.1", - "magic-string": "^0.30.17", - "mlly": "^1.7.4", - "tinyglobby": "^0.2.14", - "unplugin": "^2.3.5", - "unplugin-utils": "^0.2.4" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - }, - "peerDependencies": { - "@babel/parser": "^7.15.8", - "@nuxt/kit": "^3.2.2 || ^4.0.0", - "vue": "2 || 3" - }, - "peerDependenciesMeta": { - "@babel/parser": { - "optional": true - }, - "@nuxt/kit": { - "optional": true - } - } - }, - "node_modules/vite": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/vite/-/vite-7.0.6.tgz", - "integrity": "sha512-MHFiOENNBd+Bd9uvc8GEsIzdkn1JxMmEeYX35tI3fv0sJBUTfW5tQsoaOwuY4KhBI09A3dUJ/DXf2yxPVPUceg==", - "dev": true, - "license": "MIT", - "dependencies": { - "esbuild": "^0.25.0", - "fdir": "^6.4.6", - "picomatch": "^4.0.3", - "postcss": "^8.5.6", - "rollup": "^4.40.0", - "tinyglobby": "^0.2.14" - }, - "bin": { - "vite": "bin/vite.js" - }, - "engines": { - "node": "^20.19.0 || >=22.12.0" - }, - "funding": { - "url": "https://github.com/vitejs/vite?sponsor=1" - }, - "optionalDependencies": { - "fsevents": "~2.3.3" - }, - "peerDependencies": { - "@types/node": "^20.19.0 || >=22.12.0", - "jiti": ">=1.21.0", - "less": "^4.0.0", - "lightningcss": "^1.21.0", - "sass": "^1.70.0", - "sass-embedded": "^1.70.0", - "stylus": ">=0.54.8", - "sugarss": "^5.0.0", - "terser": "^5.16.0", - "tsx": "^4.8.1", - "yaml": "^2.4.2" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "jiti": { - "optional": true - }, - "less": { - "optional": true - }, - "lightningcss": { - "optional": true - }, - "sass": { - "optional": true - }, - "sass-embedded": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - }, - "tsx": { - "optional": true - }, - "yaml": { - "optional": true - } - } - }, - "node_modules/vue": { - "version": "3.5.18", - "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.18.tgz", - "integrity": "sha512-7W4Y4ZbMiQ3SEo+m9lnoNpV9xG7QVMLa+/0RFwwiAVkeYoyGXqWE85jabU4pllJNUzqfLShJ5YLptewhCWUgNA==", - "license": "MIT", - "dependencies": { - "@vue/compiler-dom": "3.5.18", - "@vue/compiler-sfc": "3.5.18", - "@vue/runtime-dom": "3.5.18", - "@vue/server-renderer": "3.5.18", - "@vue/shared": "3.5.18" - }, - "peerDependencies": { - "typescript": "*" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/vue-router": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.5.1.tgz", - "integrity": "sha512-ogAF3P97NPm8fJsE4by9dwSYtDwXIY1nFY9T6DyQnGHd1E2Da94w9JIolpe42LJGIl0DwOHBi8TcRPlPGwbTtw==", - "license": "MIT", - "dependencies": { - "@vue/devtools-api": "^6.6.4" - }, - "funding": { - "url": "https://github.com/sponsors/posva" - }, - "peerDependencies": { - "vue": "^3.2.0" - } - }, - "node_modules/vuex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/vuex/-/vuex-4.1.0.tgz", - "integrity": "sha512-hmV6UerDrPcgbSy9ORAtNXDr9M4wlNP4pEFKye4ujJF8oqgFFuxDCdOLS3eNoRTtq5O3hoBDh9Doj1bQMYHRbQ==", - "license": "MIT", - "dependencies": { - "@vue/devtools-api": "^6.0.0-beta.11" - }, - "peerDependencies": { - "vue": "^3.2.0" - } - }, - "node_modules/webpack-virtual-modules": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.6.2.tgz", - "integrity": "sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==", - "dev": true, - "license": "MIT" - } - } -} diff --git a/library_system/package.json b/library_system/package.json deleted file mode 100644 index f8dd95d..0000000 --- a/library_system/package.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "name": "library_system", - "private": true, - "version": "0.0.0", - "type": "module", - "scripts": { - "dev": "vite", - "build": "vite build", - "preview": "vite preview" - }, - "dependencies": { - "axios": "^1.11.0", - "element-plus": "^2.10.4", - "pinia": "^3.0.3", - "vue": "^3.5.17", - "vue-router": "^4.5.1", - "vuex": "^4.1.0" - }, - "devDependencies": { - "@types/node": "^24.1.0", - "@vitejs/plugin-vue": "^6.0.0", - "unplugin-auto-import": "^19.3.0", - "unplugin-vue-components": "^28.8.0", - "vite": "^7.0.4" - } -} diff --git a/library_system/public/vite.svg b/library_system/public/vite.svg deleted file mode 100644 index e7b8dfb..0000000 --- a/library_system/public/vite.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/library_system/src/App.vue b/library_system/src/App.vue deleted file mode 100644 index 6427272..0000000 --- a/library_system/src/App.vue +++ /dev/null @@ -1,71 +0,0 @@ - - - - - \ No newline at end of file diff --git a/library_system/src/assets/style.css b/library_system/src/assets/style.css deleted file mode 100644 index 92ac9fe..0000000 --- a/library_system/src/assets/style.css +++ /dev/null @@ -1,62 +0,0 @@ -/* Element Plus 涓婚瀹氬埗 */ -:root { - --el-color-primary: #165dff; - --el-color-primary-light-3: #3c8dff; - --el-color-primary-light-5: #6baaff; - --el-color-primary-light-7: #a3cfff; - --el-color-primary-light-8: #d6eaff; - --el-color-primary-light-9: #f4faff; -} - -body { - font-family: 'Segoe UI', 'PingFang SC', 'Hiragino Sans GB', 'Microsoft YaHei', Arial, sans-serif; - background: #f6f8fa; - color: #222; - margin: 0; -} - -.el-header, .el-footer { - background: #fff; - box-shadow: 0 2px 8px 0 rgba(0,0,0,0.03); -} - -.el-menu { - border-right: none; -} - -.el-card { - border-radius: 12px; - box-shadow: 0 2px 12px 0 rgba(22,93,255,0.04); -} - -.el-main { - padding: 32px 24px 24px 24px; - min-height: 80vh; -} - -a { - color: var(--el-color-primary); - text-decoration: none; -} - -a:hover { - text-decoration: underline; -} - -/* 鐧诲綍/娉ㄥ唽椤甸潰灞呬腑 */ -.page-center { - min-height: 100vh; - display: flex; - align-items: center; - justify-content: center; - background: linear-gradient(135deg, #e3f0ff 0%, #f6f8fa 100%); -} - -/* 澶村儚鏍峰紡 */ -.avatar { - width: 48px; - height: 48px; - border-radius: 50%; - object-fit: cover; - box-shadow: 0 2px 8px 0 rgba(22,93,255,0.08); -} diff --git a/library_system/src/assets/vue.svg b/library_system/src/assets/vue.svg deleted file mode 100644 index 770e9d3..0000000 --- a/library_system/src/assets/vue.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/library_system/src/components/BookCard.vue b/library_system/src/components/BookCard.vue deleted file mode 100644 index 8e01c96..0000000 --- a/library_system/src/components/BookCard.vue +++ /dev/null @@ -1,88 +0,0 @@ - - - - - \ No newline at end of file diff --git a/library_system/src/components/HeaderBar.vue b/library_system/src/components/HeaderBar.vue deleted file mode 100644 index 63f8f2f..0000000 --- a/library_system/src/components/HeaderBar.vue +++ /dev/null @@ -1,249 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/library_system/src/main.js b/library_system/src/main.js deleted file mode 100644 index 2b9699b..0000000 --- a/library_system/src/main.js +++ /dev/null @@ -1,25 +0,0 @@ -import { createApp } from 'vue' -import App from './App.vue' -import router from './router' -import store from './store' -import ElementPlus from 'element-plus' -import 'element-plus/dist/index.css' -import * as ElementPlusIconsVue from '@element-plus/icons-vue' - -const app = createApp(App) - -// 娉ㄥ唽鎵鏈夊浘鏍 -for (const [key, component] of Object.entries(ElementPlusIconsVue)) { - app.component(key, component) -} - -app.use(ElementPlus) -app.use(store) -app.use(router) - -// 鍒濆鍖栦細璇 -store.dispatch('initSession') - -app.mount('#app') - -window.store = store \ No newline at end of file diff --git a/library_system/src/router/index.js b/library_system/src/router/index.js deleted file mode 100644 index 6c4095f..0000000 --- a/library_system/src/router/index.js +++ /dev/null @@ -1,131 +0,0 @@ -import { createRouter, createWebHistory } from 'vue-router' -import store from '../store' - - - -const routes = [ - { - path: '/', - name: 'Home', - component: () => import('../views/Home.vue'), - meta: { requiresAuth: false } - }, - { - path: '/login', - name: 'Login', - component: () => import('../views/Auth/Login.vue') - }, - { - path: '/register', - name: 'Register', - component: () => import('../views/Auth/Register.vue') - }, - - { - path: '/books', - name: 'Books', - component: () => import('../views/Books/BookList.vue'), - meta: { requiresAuth: true } - }, - { - path: '/books/:id', - name: 'BookDetail', - component: () => import('../views/Books/BookDetail.vue'), - meta: { requiresAuth: true } - }, - { - path: '/books/add', - name: 'AddBook', - component: () => import('../views/Books/AddBook.vue'), - meta: { requiresAuth: true, requiresAdmin: true } - }, - // { - // path: '/books/edit/:id', - // name: 'EditBook', - // component: () => import('../views/Books/EditBook.vue'), - // meta: { requiresAuth: true, requiresAdmin: true } - // }, - { - path: '/borrow', - name: 'BorrowBook', - component: () => import('../views/Borrow/BorrowBook.vue'), - meta: { requiresAuth: true } - }, - { - path: '/return', - name: 'ReturnBook', - component: () => import('../views/Borrow/ReturnBook.vue'), - meta: { requiresAuth: true } - }, - { - path: '/borrow-records', - name: 'BorrowRecords', - component: () => import('../views/User/BorrowRecords.vue'), - meta: { requiresAuth: true } - }, - { - path: '/recharge', - name: 'Recharge', - component: () => import('../views/User/Recharge.vue'), - meta: { requiresAuth: true } - }, - { - path: '/ranking/weekly', - name: 'WeeklyRank', - component: () => import('../views/Ranking/WeeklyRank.vue'), - meta: { requiresAuth: true } - }, - { - path: '/ranking/monthly', - name: 'MonthlyRank', - component: () => import('../views/Ranking/MonthlyRank.vue'), - meta: { requiresAuth: true } - }, - { - path: '/admin/borrow-records', - name: 'AllBorrowRecords', - component: () => import('../views/Admin/AllBorrowRecords.vue'), - meta: { requiresAdmin: true } - }, - { - path: '/admin/books', - name: 'BookManagement', - component: () => import('../views/Admin/BookManagement.vue'), - meta: { requiresAdmin: true } - } -] - -const router = createRouter({ - history: createWebHistory(import.meta.env.BASE_URL), - routes -}) - -// 璺敱瀹堝崼 -router.beforeEach((to, from, next) => { - // 绛夊緟浼氳瘽鍒濆鍖栧畬鎴 - if (!store.state.sessionInitialized) { - return next() - } - - const isAuthenticated = store.getters.isAuthenticated - const isAdmin = store.getters.isAdmin - - // 濡傛灉璺敱闇瑕佽璇佷絾鐢ㄦ埛鏈櫥褰曪紝璺宠浆鍒扮櫥褰曢〉 - if (to.meta.requiresAuth && !isAuthenticated) { - return next('/login') - } - - // 濡傛灉璺敱闇瑕佺鐞嗗憳鏉冮檺浣嗙敤鎴蜂笉鏄鐞嗗憳 - if (to.meta.requiresAdmin && !isAdmin) { - return next({ name: 'Home' }) - } - - // 濡傛灉鐢ㄦ埛宸茬櫥褰曚絾璁块棶鐧诲綍/娉ㄥ唽椤碉紝璺宠浆鍒伴椤 - if ((to.name === 'Login' || to.name === 'Register') && isAuthenticated) { - return next({ name: 'Home' }) - } - - next() -}) - -export default router \ No newline at end of file diff --git a/library_system/src/store/index.js b/library_system/src/store/index.js deleted file mode 100644 index 38f5493..0000000 --- a/library_system/src/store/index.js +++ /dev/null @@ -1,370 +0,0 @@ -import { createStore } from 'vuex' -import service from '../utils/request' - -export default createStore({ - state: { - user: JSON.parse(sessionStorage.getItem('user')) || null, - balance: JSON.parse(sessionStorage.getItem('balance')) || 0, - vipLevel: JSON.parse(sessionStorage.getItem('vipLevel')) || 0, - borrowedBooks: JSON.parse(sessionStorage.getItem('borrowedBooks')) || [], - sessionInitialized: false - }, - getters: { - isAuthenticated: state => !!state.user, - isAdmin: state => state.user?.admin || false - }, - mutations: { - setUser(state, user) { - const admin = user.admin === 1; - const userData = { - ...user, - admin - }; - - state.user = user - console.log("user") - console.log(user) - console.log("state.user") - console.log(state.user) - sessionStorage.setItem('user', JSON.stringify(user)) - }, - setBalanceAndVip(state, { balance, vip }) { - state.balance = balance - state.vipLevel = vip - sessionStorage.setItem('balance', JSON.stringify(balance)) - sessionStorage.setItem('vipLevel', JSON.stringify(vip)) - }, - setBorrowedBooks(state, books) { - state.borrowedBooks = books - sessionStorage.setItem('borrowedBooks', JSON.stringify(books)) - }, - clearUser(state) { - state.user = null - state.balance = 0 - state.vipLevel = 0 - state.borrowedBooks = [] - sessionStorage.removeItem('user') - sessionStorage.removeItem('balance') - sessionStorage.removeItem('vipLevel') - sessionStorage.removeItem('borrowedBooks') - }, - removeBorrowedBook(state, title) { - state.borrowedBooks = state.borrowedBooks.filter(book => book.title !== title) - }, - setSessionInitialized(state, value) { - state.sessionInitialized = value - } - }, - actions: { - async initSession({ commit, dispatch }) { - try { - // 闈欓粯鑾峰彇鐢ㄦ埛淇℃伅 - const userData = await service.get('/user/getinfo', { - silent: true // 閬垮厤鏈櫥褰曟椂鏄剧ず閿欒 - }) - - if (userData && userData.username) { - const admin = userData.admin === 1; - - commit('setUser', { - username: userData.username, - pic: userData.pic || '', - admin - }) - - // 鑾峰彇鍏宠仈淇℃伅 - try { - await dispatch('fetchBalanceAndVip') - } catch (balanceError) { - console.warn('鑾峰彇浣欓淇℃伅澶辫触:', balanceError) - } - - try { - await dispatch('fetchBorrowedBooks') - } catch (booksError) { - console.warn('鑾峰彇鍊熼槄涔︾睄澶辫触:', booksError) - } - } - } catch (error) { - console.log('鏈娴嬪埌鏈夋晥浼氳瘽锛岀敤鎴烽渶瑕侀噸鏂扮櫥褰') - // 娓呴櫎鍙兘瀛樺湪鐨勬棤鏁堟暟鎹 - commit('clearUser') - } finally { - commit('setSessionInitialized', true) - } - }, - - - // 鐢ㄦ埛鐧诲綍 - async login({ dispatch }, { username, password }) { - const response = await service.post('/user/login', - `username=${encodeURIComponent(username)}&password=${encodeURIComponent(password)}`, - { headers: { 'Content-Type': 'application/x-www-form-urlencoded' } } - ) - - // 鐧诲綍鎴愬姛鍚庤幏鍙栫敤鎴蜂俊鎭 - const userInfo = await dispatch('fetchUser') - return { - ...response.data, - user: userInfo - } - }, - - // 鐢ㄦ埛娉ㄥ唽 - async register(_, { username, password }) { - const response = await service.post('/user/register', - `username=${encodeURIComponent(username)}&password=${encodeURIComponent(password)}`, - { headers: { 'Content-Type': 'application/x-www-form-urlencoded' } } - ) - - return response.data - }, - - // 鑾峰彇褰撳墠鐢ㄦ埛淇℃伅 - 绗﹀悎鎺ュ彛鏂囨。 - async fetchUser({ commit, dispatch }) { - try { - const response = await service.get('/user/getinfo') - const userData = response.data - console.log("fetchUer userData") - console.log(userData) - const admin = userData.admin === 1; - // 鐢ㄦ埛淇℃伅鎺ュ彛鐩存帴杩斿洖鐢ㄦ埛瀵硅薄 - commit('setUser', { - username: userData.username || '', - pic: userData.pic || '', - admin - }) - - // 鑾峰彇鍏宠仈淇℃伅 - try { - await dispatch('fetchBalanceAndVip') - } catch (balanceError) { - console.error('鑾峰彇浣欓淇℃伅澶辫触:', balanceError) - } - - try { - await dispatch('fetchBorrowedBooks') - } catch (booksError) { - console.error('鑾峰彇鍊熼槄涔︾睄澶辫触:', booksError) - } - - return userData - } catch (error) { - commit('clearUser') - throw error - } - }, - - // 鑾峰彇浣欓鍜孷IP绛夌骇 - 绗﹀悎鎺ュ彛鏂囨。1.5 - async fetchBalanceAndVip({ commit }) { - try { - const response = await service.post('/user/findmoney') - const resData = response.data || {} - if (resData.code === 200) { - console.log("fetchBalanceAndVip resData") - console.log(resData) - const balance = resData.data.balance - const vip = resData.data.vip - - // const message = resData.message || '' - // // 浣跨敤姝e垯琛ㄨ揪寮忚В鏋愪綑棰濆拰VIP绛夌骇 - // const balanceMatch = message.match(/浣欓涓猴細(\d+\.?\d*)鍏/) - // const vipMatch = message.match(/褰撳墠VIP绛夌骇涓猴細(\d+)/) - console.log("balance:"+balance+",vip:"+vip) - if (balance && vip) { - commit('setBalanceAndVip', { balance, vip }) - } else { - console.warn('鏃犳硶瑙f瀽浣欓鎴朧IP淇℃伅:', message) - commit('setBalanceAndVip', { balance: 0, vip: 0 }) - } - } else { - throw new Error(resData.message || '鑾峰彇浣欓淇℃伅澶辫触') - } - - return resData - } catch (error) { - console.error('鑾峰彇浣欓澶辫触:', error) - // 涓嶆姏鍑洪敊璇紝閬垮厤褰卞搷鍏朵粬鍔熻兘 - return { code: 500, message: '鑾峰彇浣欓澶辫触' } - } - }, - - - // 璐︽埛鍏呭 - async recharge({ dispatch }, { money }) { // 娣诲姞 { dispatch } 瑙f瀯 - const response = await service.post('/user/recharge', - `money=${money}`, - { headers: { 'Content-Type': 'application/x-www-form-urlencoded' } } - ) - - // 鍏呭煎悗鍒锋柊浣欓 - await dispatch('fetchBalanceAndVip') - return response.data - }, - - // 閫鍑虹櫥褰 - async logout({ commit }) { - commit('clearUser') - return { code: 200, message: '宸查鍑虹櫥褰' } - }, - - // 鏌ヨ涓汉鍊熶功璁板綍 - async fetchBorrowRecords() { - const response = await service.get('/user/findone') - return response.data - }, - - // 鑾峰彇褰撳墠鐢ㄦ埛宸插熶功绫 - async fetchBorrowedBooks({ commit }) { - const response = await service.get('/user/borrow/books') - - // 鎸夌収鎺ュ彛鏂囨。澶勭悊鍝嶅簲 - if (response.data.code === 200) { - commit('setBorrowedBooks', response.data.data || []) - } else { - throw new Error(response.data.message || '鑾峰彇宸插熶功绫嶅け璐') - } - - return response.data -}, - - // 绉熷熶功绫 -async borrowBook({ dispatch }, { title }) { - const response = await service.post('/borrow/borrowbook', - `title=${encodeURIComponent(title)}`, - { headers: { 'Content-Type': 'application/x-www-form-urlencoded' } } - ) - - // 鍊熶功鍚庡埛鏂扮敤鎴蜂俊鎭 - await dispatch('fetchUser') - return response.data -}, - -// 褰掕繕涔︾睄 - 绗﹀悎鎺ュ彛鏂囨。3.2 -async returnBook({ dispatch }, { title }) { - try { - const response = await service.post('/borrow/returnbook', - `title=${encodeURIComponent(title)}`, - { headers: { 'Content-Type': 'application/x-www-form-urlencoded' } } - ) - - // 杩樹功鎴愬姛鍚庡埛鏂板熼槄涔︾睄鍒楄〃 - await dispatch('fetchBorrowedBooks') - - return response.data - } catch (error) { - console.error('杩樹功澶辫触:', error) - throw error - } -}, - - // 鏌ヨ鍏ㄩ儴涔︾睄 - 绗﹀悎鎺ュ彛鏂囨。 - async fetchBooks(_, params = {}) { - const config = { - params: { - page: params.page || 1, - pageSize: params.pageSize || 10, - title: params.keyword || '' - } - } - - const response = await service.get('/api/select', config) - const countResponse = await service.get('/api/countArticle') - - // console.log('璇锋眰涔︾睄:', params.title) - // console.log('API鍝嶅簲:', response) - // 澶勭悊涓嶅悓鍝嶅簲鏍煎紡 - let list = [] - let total = countResponse.data.data - if (Array.isArray(response)) { - list = response - // total = response.length - } else if (Array.isArray(response.data)) { - list = response.data - // total = response.data.length - } else if (response.data && Array.isArray(response.data.data)) { - list = response.data.data - // total = response.data.total || response.data.data.length - } else if (response.data && Array.isArray(response.data.list)) { - list = response.data.list - // total = response.data.total || response.data.list.length - } - - return { - data: { - list, - total - } - } - }, - - // 鏍规嵁涔﹀悕鏌ュ崟鏈功 - 绗﹀悎鎺ュ彛鏂囨。2.3 - async fetchBookByTitle(_, payload) { - const { title } = payload; - - try { - const response = await service.get('/api/selectone', { - params: { title } - }) - - // 鏍规嵁鎺ュ彛鏂囨。澶勭悊鍝嶅簲 - if (response.data && response.data.code === 200) { - return { data: response.data.data } - } else { - throw new Error(response.data?.message || '鑾峰彇涔︾睄淇℃伅澶辫触') - } - } catch (error) { - console.error('API璇锋眰澶辫触:', error) - throw error - } - }, - async fetchBookById(_, payload) { - const { id } = payload; - - try { - const response = await service.get('/api/selectById/'+id) - - // 鏍规嵁鎺ュ彛鏂囨。澶勭悊鍝嶅簲 - if (response.data && response.data.code === 200) { - return { data: response.data.data } - } else { - throw new Error(response.data?.message || '鑾峰彇涔︾睄淇℃伅澶辫触') - } - } catch (error) { - console.error('API璇锋眰澶辫触:', error) - throw error - } - }, - - // 鏂板涔︾睄 - async addBook(_, bookData) { - const response = await service.post('/api/add', bookData, { - headers: { 'Content-Type': 'application/json' } - }) - - return response.data - }, - - // 绠$悊鍛樺垹闄や功绫 - async deleteBook(_, { title }) { - const response = await service.post('/user/delete', - `title=${encodeURIComponent(title)}`, - { headers: { 'Content-Type': 'application/x-www-form-urlencoded' } } - ) - - return response.data - }, - - // 鏈懆鐑姒 - 绗﹀悎鎺ュ彛鏂囨。 - async fetchWeeklyRank() { - const response = await service.get('/api/rank/weekly') - return { data: Array.isArray(response) ? response : response.data || [] } - }, - - // 鏈湀鐑姒 - 绗﹀悎鎺ュ彛鏂囨。 - async fetchMonthlyRank() { - const response = await service.get('/api/rank/monthly') - return { data: Array.isArray(response) ? response : response.data || [] } - } - } -}) \ No newline at end of file diff --git a/library_system/src/utils/date.js b/library_system/src/utils/date.js deleted file mode 100644 index 3e8c5fc..0000000 --- a/library_system/src/utils/date.js +++ /dev/null @@ -1,16 +0,0 @@ -export function formatDate(dateString) { - if (!dateString) return '鏈煡鏃堕棿' - - const date = new Date(dateString) - - // 澶勭悊鏃犳晥鏃ユ湡 - if (isNaN(date.getTime())) return dateString - - const year = date.getFullYear() - const month = String(date.getMonth() + 1).padStart(2, '0') - const day = String(date.getDate()).padStart(2, '0') - const hours = String(date.getHours()).padStart(2, '0') - const minutes = String(date.getMinutes()).padStart(2, '0') - - return `${year}-${month}-${day} ${hours}:${minutes}` -} \ No newline at end of file diff --git a/library_system/src/utils/request.js b/library_system/src/utils/request.js deleted file mode 100644 index d24e273..0000000 --- a/library_system/src/utils/request.js +++ /dev/null @@ -1,73 +0,0 @@ -import axios from 'axios' -import { ElMessage } from 'element-plus' -import store from '../store/index' -import router from '../router/index' - -// 鍒涘缓axios瀹炰緥 -const service = axios.create({ - baseURL: 'http://localhost:8877', - timeout: 10000, - withCredentials: true // 鍏佽鎼哄甫cookie -}) - -// 璇锋眰鎷︽埅鍣 -service.interceptors.request.use( - config => { - - return config - }, - error => { - return Promise.reject(error) - } -) - -// 鍝嶅簲鎷︽埅鍣 -service.interceptors.response.use( - response => { - // 澶勭悊鎴愬姛鍝嶅簲 - const res = response.data - - // 澶勭悊涓氬姟閿欒 (code !== 200) - if (res && typeof res === 'object' && res.code !== undefined && res.code !== 200) { - // 妫鏌ユ槸鍚︿负闈欓粯璇锋眰 - if (!response.config.silent) { - ElMessage.error(res.message || '璇锋眰澶辫触') - } - return Promise.reject(new Error(res.message || 'Error')) - } - - // 杩斿洖鏁翠釜鍝嶅簲瀵硅薄锛岀‘淇濈粍浠跺彲浠ヨ闂搷搴斿ご绛変俊鎭 - return response - }, - error => { - // 澶勭悊HTTP閿欒 - if (error.response) { - switch (error.response.status) { - case 401: - // 鍙湁鍦ㄩ潪闈欓粯璇锋眰鏃舵墠鏄剧ず閿欒淇℃伅 - if (!error.config?.silent) { - store.dispatch('logout') - router.push('/login') - ElMessage.error('璇峰厛鐧诲綍') - } - break - case 403: - if (!error.config?.silent) { - ElMessage.error('娌℃湁鎿嶄綔鏉冮檺') - } - break - default: - if (!error.config?.silent) { - ElMessage.error(error.response.data?.message || '璇锋眰澶辫触') - } - } - } else { - if (!error.config?.silent) { - ElMessage.error('缃戠粶閿欒锛岃妫鏌ヨ繛鎺') - } - } - return Promise.reject(error) - } -) - -export default service \ No newline at end of file diff --git a/library_system/src/utils/storage.js b/library_system/src/utils/storage.js deleted file mode 100644 index 6e019e3..0000000 --- a/library_system/src/utils/storage.js +++ /dev/null @@ -1,43 +0,0 @@ -// 瀹夊叏鍦拌В鏋怞SON瀛楃涓 -export function safeParseJSON(str, defaultValue = null) { - if (!str) return defaultValue - try { - return JSON.parse(str) - } catch (error) { - console.error('JSON瑙f瀽澶辫触:', error) - return defaultValue - } -} - -// 瀹夊叏鍦板瓨鍌ㄦ暟鎹埌sessionStorage -export function safeSetItem(key, value) { - try { - sessionStorage.setItem(key, JSON.stringify(value)) - return true - } catch (error) { - console.error('瀛樺偍鏁版嵁澶辫触:', error) - return false - } -} - -// 瀹夊叏鍦颁粠sessionStorage鑾峰彇鏁版嵁 -export function safeGetItem(key, defaultValue = null) { - try { - const item = sessionStorage.getItem(key) - return item ? JSON.parse(item) : defaultValue - } catch (error) { - console.error('鑾峰彇鏁版嵁澶辫触:', error) - return defaultValue - } -} - -// 瀹夊叏鍦颁粠sessionStorage鍒犻櫎鏁版嵁 -export function safeRemoveItem(key) { - try { - sessionStorage.removeItem(key) - return true - } catch (error) { - console.error('鍒犻櫎鏁版嵁澶辫触:', error) - return false - } -} \ No newline at end of file diff --git a/library_system/src/views/Admin/AllBorrowRecords.vue b/library_system/src/views/Admin/AllBorrowRecords.vue deleted file mode 100644 index 4c349b5..0000000 --- a/library_system/src/views/Admin/AllBorrowRecords.vue +++ /dev/null @@ -1,148 +0,0 @@ - - - - - diff --git a/library_system/src/views/Admin/BookManagement.vue b/library_system/src/views/Admin/BookManagement.vue deleted file mode 100644 index 593064b..0000000 --- a/library_system/src/views/Admin/BookManagement.vue +++ /dev/null @@ -1,188 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/library_system/src/views/Auth/Login.vue b/library_system/src/views/Auth/Login.vue deleted file mode 100644 index d5a5fa7..0000000 --- a/library_system/src/views/Auth/Login.vue +++ /dev/null @@ -1,133 +0,0 @@ - - - - - \ No newline at end of file diff --git a/library_system/src/views/Auth/Register.vue b/library_system/src/views/Auth/Register.vue deleted file mode 100644 index 817e739..0000000 --- a/library_system/src/views/Auth/Register.vue +++ /dev/null @@ -1,156 +0,0 @@ - - - - - \ No newline at end of file diff --git a/library_system/src/views/Books/AddBook.vue b/library_system/src/views/Books/AddBook.vue deleted file mode 100644 index 5d13af0..0000000 --- a/library_system/src/views/Books/AddBook.vue +++ /dev/null @@ -1,141 +0,0 @@ - - - - - \ No newline at end of file diff --git a/library_system/src/views/Books/BookDetail.vue b/library_system/src/views/Books/BookDetail.vue deleted file mode 100644 index 886041f..0000000 --- a/library_system/src/views/Books/BookDetail.vue +++ /dev/null @@ -1,186 +0,0 @@ - - - - - \ No newline at end of file diff --git a/library_system/src/views/Books/BookList.vue b/library_system/src/views/Books/BookList.vue deleted file mode 100644 index 9ee4e05..0000000 --- a/library_system/src/views/Books/BookList.vue +++ /dev/null @@ -1,202 +0,0 @@ - - - - - \ No newline at end of file diff --git a/library_system/src/views/Books/EditBook.vue b/library_system/src/views/Books/EditBook.vue deleted file mode 100644 index eeaf97a..0000000 --- a/library_system/src/views/Books/EditBook.vue +++ /dev/null @@ -1,3 +0,0 @@ - \ No newline at end of file diff --git a/library_system/src/views/Borrow/BorrowBook.vue b/library_system/src/views/Borrow/BorrowBook.vue deleted file mode 100644 index e92d27b..0000000 --- a/library_system/src/views/Borrow/BorrowBook.vue +++ /dev/null @@ -1,142 +0,0 @@ - - - - - \ No newline at end of file diff --git a/library_system/src/views/Borrow/ReturnBook.vue b/library_system/src/views/Borrow/ReturnBook.vue deleted file mode 100644 index f597661..0000000 --- a/library_system/src/views/Borrow/ReturnBook.vue +++ /dev/null @@ -1,155 +0,0 @@ - - - - - \ No newline at end of file diff --git a/library_system/src/views/Home.vue b/library_system/src/views/Home.vue deleted file mode 100644 index e75e16c..0000000 --- a/library_system/src/views/Home.vue +++ /dev/null @@ -1,164 +0,0 @@ - - - - - \ No newline at end of file diff --git a/library_system/src/views/Ranking/MonthlyRank.vue b/library_system/src/views/Ranking/MonthlyRank.vue deleted file mode 100644 index ff3ff3f..0000000 --- a/library_system/src/views/Ranking/MonthlyRank.vue +++ /dev/null @@ -1,114 +0,0 @@ - - - - - \ No newline at end of file diff --git a/library_system/src/views/Ranking/WeeklyRank.vue b/library_system/src/views/Ranking/WeeklyRank.vue deleted file mode 100644 index b719fb8..0000000 --- a/library_system/src/views/Ranking/WeeklyRank.vue +++ /dev/null @@ -1,113 +0,0 @@ - - - - - \ No newline at end of file diff --git a/library_system/src/views/User/BorrowRecords.vue b/library_system/src/views/User/BorrowRecords.vue deleted file mode 100644 index ffcad87..0000000 --- a/library_system/src/views/User/BorrowRecords.vue +++ /dev/null @@ -1,96 +0,0 @@ - - - - - \ No newline at end of file diff --git a/library_system/src/views/User/Profile.vue b/library_system/src/views/User/Profile.vue deleted file mode 100644 index b03de23..0000000 --- a/library_system/src/views/User/Profile.vue +++ /dev/null @@ -1,122 +0,0 @@ - - - - - \ No newline at end of file diff --git a/library_system/src/views/User/Recharge.vue b/library_system/src/views/User/Recharge.vue deleted file mode 100644 index cc1f495..0000000 --- a/library_system/src/views/User/Recharge.vue +++ /dev/null @@ -1,135 +0,0 @@ - - - - - \ No newline at end of file diff --git a/library_system/vite.config.js b/library_system/vite.config.js deleted file mode 100644 index fc42a82..0000000 --- a/library_system/vite.config.js +++ /dev/null @@ -1,13 +0,0 @@ -// vite.config.js -import { defineConfig } from 'vite' -import vue from '@vitejs/plugin-vue' -import path from 'path' // 纭繚寮曞叆 path 妯″潡 - -export default defineConfig({ - plugins: [vue()], - resolve: { - alias: { - '@': path.resolve(__dirname, 'src') // 鍏抽敭閰嶇疆锛欯 鎸囧悜 src 鐩綍 - } - } -}) \ No newline at end of file diff --git a/library_system/鏂囨。.md b/library_system/鏂囨。.md deleted file mode 100644 index 745b68f..0000000 --- a/library_system/鏂囨。.md +++ /dev/null @@ -1,170 +0,0 @@ -涔︾睄绉熻祦绯荤粺 -鍓嶇瀵规帴鍚庣鎺ュ彛鏂囨。锛堟棤 JWT 路 绾 Session锛 - ---- - -### 涓銆侀氱敤淇℃伅 -| 椤 | 鍊 | -| ---------------- | ----------------------------------------- | -| 鍩哄湴鍧 | `http://localhost:8877` | -| 璁よ瘉鏂瑰紡 | Cookie锛圫ession锛 | -| 缁熶竴杩斿洖 | `{ code: 200/1, message: "", data: ... }` | -| 鐧藉悕鍗曪紙鍏嶇櫥褰曪級 | `POST /user/login` `POST /user/register` | - ---- - -### 浜屻佺敤鎴锋ā鍧 -#### 1. 娉ㄥ唽 -``` -POST /user/register -Content-Type: application/x-www-form-urlencoded - -username=xxx&password=xxx -``` -鎴愬姛 鈫 `{ code:200, message:"鎿嶄綔鎴愬姛" }` - -#### 2. 鐧诲綍 -``` -POST /user/login -Content-Type: application/x-www-form-urlencoded - -username=xxx&password=xxx -``` -鎴愬姛 鈫 `{ code:200, message:"鐧婚檰鎴愬姛锛" }` -澶辫触 鈫 `{ code:1, message:"璐﹀彿鎴栧瘑鐮侀敊璇紒" }` - -#### 3. 鑾峰彇褰撳墠鐢ㄦ埛淇℃伅 -``` -GET /user/getinfo -``` -杩斿洖 -```json -{ - "username": "寮犱笁", - "pic": "http://xxx/avatar.png" -} -``` - -#### 4. 鍏呭 -``` -POST /user/recharge -Content-Type: application/x-www-form-urlencoded - -money=50 -``` -杩斿洖 -```json -{ code:200, message:"鎴愬姛鍏呭硷細50.0鍏" } -``` - -#### 5. 浣欓 + VIP -``` -POST /user/findmoney -``` -杩斿洖 -```json -{ code:200, message:"浣欓涓猴細100.0鍏 褰撳墠VIP绛夌骇涓猴細2" } -``` - -#### 6. 鍊熶功璁板綍 -``` -GET /user/findone -``` -- 鏅氱敤鎴凤細鍗曟潯瀵硅薄 -- 绠$悊鍛橈細鏁扮粍 - ---- - -### 涓夈佷功绫嶆ā鍧 -#### 1. 鏂板涔︾睄锛堢鐞嗗憳锛 -``` -POST /api/add -Content-Type: application/json - -{ - "title":"涓変綋", - "content":"绉戝够灏忚", - "url":"http://...jpg", - "state":"鑽夌ǹ", - "money":5.00, - "number":10 -} -``` -鎴愬姛 鈫 杩斿洖瀹屾暣涔︾睄瀵硅薄 - -#### 2. 鏌ヨ鍏ㄩ儴涔︾睄 -``` -GET /api/select -``` -杩斿洖鏁扮粍 - -#### 3. 涔﹀悕鏌ュ崟鏈 -``` -GET /api/selectone?title=涓変綋 -``` -杩斿洖鍗曟潯瀵硅薄 - -#### 4. 鍒犻櫎涔︾睄锛堢鐞嗗憳锛 -``` -POST /user/delete -Content-Type: application/x-www-form-urlencoded - -title=涓変綋 -``` -杩斿洖 -```json -{ code:200, message:"璇ヤ功鏈凡鍒犻櫎锛" } -``` - -#### 5. 褰撳墠鐢ㄦ埛宸插熶功绫 -``` -GET /user/borrow/books -``` -杩斿洖涔︾睄鏁扮粍 - ---- - -### 鍥涖佺鍊熸ā鍧 -#### 1. 鍊熶功 -``` -POST /borrow/borrowbook -Content-Type: application/x-www-form-urlencoded - -title=涓変綋 -``` -- 浣欓涓嶈冻 鈫 `{ code:1, message:"浣欓涓嶈冻锛" }` -- 鎴愬姛 鈫 `{ code:200, data:{...} }` - -#### 2. 杩樹功 -``` -POST /borrow/returnbook -Content-Type: application/x-www-form-urlencoded - -title=涓変綋 -``` -杩斿洖 -```json -{ code:200, data:{..., return_time:"2025-07-25T16:35:00"} } -``` - ---- - -### 浜斻佹帓琛屾ā鍧 -#### 1. 鏈懆鐑姒 -``` -GET /api/rank/weekly -``` -杩斿洖 -```json -[ - { "title":"涓変綋", "url":"...", "money":5, "number":12 }, - ... -] -``` - -#### 2. 鏈湀鐑姒 -``` -GET /api/rank/monthly -``` -缁撴瀯鍚屼笂 - diff --git a/src/assets/style.css b/src/assets/style.css deleted file mode 100644 index 92ac9fe..0000000 --- a/src/assets/style.css +++ /dev/null @@ -1,62 +0,0 @@ -/* Element Plus 涓婚瀹氬埗 */ -:root { - --el-color-primary: #165dff; - --el-color-primary-light-3: #3c8dff; - --el-color-primary-light-5: #6baaff; - --el-color-primary-light-7: #a3cfff; - --el-color-primary-light-8: #d6eaff; - --el-color-primary-light-9: #f4faff; -} - -body { - font-family: 'Segoe UI', 'PingFang SC', 'Hiragino Sans GB', 'Microsoft YaHei', Arial, sans-serif; - background: #f6f8fa; - color: #222; - margin: 0; -} - -.el-header, .el-footer { - background: #fff; - box-shadow: 0 2px 8px 0 rgba(0,0,0,0.03); -} - -.el-menu { - border-right: none; -} - -.el-card { - border-radius: 12px; - box-shadow: 0 2px 12px 0 rgba(22,93,255,0.04); -} - -.el-main { - padding: 32px 24px 24px 24px; - min-height: 80vh; -} - -a { - color: var(--el-color-primary); - text-decoration: none; -} - -a:hover { - text-decoration: underline; -} - -/* 鐧诲綍/娉ㄥ唽椤甸潰灞呬腑 */ -.page-center { - min-height: 100vh; - display: flex; - align-items: center; - justify-content: center; - background: linear-gradient(135deg, #e3f0ff 0%, #f6f8fa 100%); -} - -/* 澶村儚鏍峰紡 */ -.avatar { - width: 48px; - height: 48px; - border-radius: 50%; - object-fit: cover; - box-shadow: 0 2px 8px 0 rgba(22,93,255,0.08); -} diff --git a/src/assets/vue.svg b/src/assets/vue.svg deleted file mode 100644 index 770e9d3..0000000 --- a/src/assets/vue.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/components/BookCard.vue b/src/components/BookCard.vue deleted file mode 100644 index 8e01c96..0000000 --- a/src/components/BookCard.vue +++ /dev/null @@ -1,88 +0,0 @@ - - - - - \ No newline at end of file diff --git a/src/components/HeaderBar.vue b/src/components/HeaderBar.vue deleted file mode 100644 index 63f8f2f..0000000 --- a/src/components/HeaderBar.vue +++ /dev/null @@ -1,249 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/src/main.js b/src/main.js deleted file mode 100644 index 2b9699b..0000000 --- a/src/main.js +++ /dev/null @@ -1,25 +0,0 @@ -import { createApp } from 'vue' -import App from './App.vue' -import router from './router' -import store from './store' -import ElementPlus from 'element-plus' -import 'element-plus/dist/index.css' -import * as ElementPlusIconsVue from '@element-plus/icons-vue' - -const app = createApp(App) - -// 娉ㄥ唽鎵鏈夊浘鏍 -for (const [key, component] of Object.entries(ElementPlusIconsVue)) { - app.component(key, component) -} - -app.use(ElementPlus) -app.use(store) -app.use(router) - -// 鍒濆鍖栦細璇 -store.dispatch('initSession') - -app.mount('#app') - -window.store = store \ No newline at end of file diff --git a/src/router/index.js b/src/router/index.js deleted file mode 100644 index 6c4095f..0000000 --- a/src/router/index.js +++ /dev/null @@ -1,131 +0,0 @@ -import { createRouter, createWebHistory } from 'vue-router' -import store from '../store' - - - -const routes = [ - { - path: '/', - name: 'Home', - component: () => import('../views/Home.vue'), - meta: { requiresAuth: false } - }, - { - path: '/login', - name: 'Login', - component: () => import('../views/Auth/Login.vue') - }, - { - path: '/register', - name: 'Register', - component: () => import('../views/Auth/Register.vue') - }, - - { - path: '/books', - name: 'Books', - component: () => import('../views/Books/BookList.vue'), - meta: { requiresAuth: true } - }, - { - path: '/books/:id', - name: 'BookDetail', - component: () => import('../views/Books/BookDetail.vue'), - meta: { requiresAuth: true } - }, - { - path: '/books/add', - name: 'AddBook', - component: () => import('../views/Books/AddBook.vue'), - meta: { requiresAuth: true, requiresAdmin: true } - }, - // { - // path: '/books/edit/:id', - // name: 'EditBook', - // component: () => import('../views/Books/EditBook.vue'), - // meta: { requiresAuth: true, requiresAdmin: true } - // }, - { - path: '/borrow', - name: 'BorrowBook', - component: () => import('../views/Borrow/BorrowBook.vue'), - meta: { requiresAuth: true } - }, - { - path: '/return', - name: 'ReturnBook', - component: () => import('../views/Borrow/ReturnBook.vue'), - meta: { requiresAuth: true } - }, - { - path: '/borrow-records', - name: 'BorrowRecords', - component: () => import('../views/User/BorrowRecords.vue'), - meta: { requiresAuth: true } - }, - { - path: '/recharge', - name: 'Recharge', - component: () => import('../views/User/Recharge.vue'), - meta: { requiresAuth: true } - }, - { - path: '/ranking/weekly', - name: 'WeeklyRank', - component: () => import('../views/Ranking/WeeklyRank.vue'), - meta: { requiresAuth: true } - }, - { - path: '/ranking/monthly', - name: 'MonthlyRank', - component: () => import('../views/Ranking/MonthlyRank.vue'), - meta: { requiresAuth: true } - }, - { - path: '/admin/borrow-records', - name: 'AllBorrowRecords', - component: () => import('../views/Admin/AllBorrowRecords.vue'), - meta: { requiresAdmin: true } - }, - { - path: '/admin/books', - name: 'BookManagement', - component: () => import('../views/Admin/BookManagement.vue'), - meta: { requiresAdmin: true } - } -] - -const router = createRouter({ - history: createWebHistory(import.meta.env.BASE_URL), - routes -}) - -// 璺敱瀹堝崼 -router.beforeEach((to, from, next) => { - // 绛夊緟浼氳瘽鍒濆鍖栧畬鎴 - if (!store.state.sessionInitialized) { - return next() - } - - const isAuthenticated = store.getters.isAuthenticated - const isAdmin = store.getters.isAdmin - - // 濡傛灉璺敱闇瑕佽璇佷絾鐢ㄦ埛鏈櫥褰曪紝璺宠浆鍒扮櫥褰曢〉 - if (to.meta.requiresAuth && !isAuthenticated) { - return next('/login') - } - - // 濡傛灉璺敱闇瑕佺鐞嗗憳鏉冮檺浣嗙敤鎴蜂笉鏄鐞嗗憳 - if (to.meta.requiresAdmin && !isAdmin) { - return next({ name: 'Home' }) - } - - // 濡傛灉鐢ㄦ埛宸茬櫥褰曚絾璁块棶鐧诲綍/娉ㄥ唽椤碉紝璺宠浆鍒伴椤 - if ((to.name === 'Login' || to.name === 'Register') && isAuthenticated) { - return next({ name: 'Home' }) - } - - next() -}) - -export default router \ No newline at end of file diff --git a/src/store/index.js b/src/store/index.js deleted file mode 100644 index 38f5493..0000000 --- a/src/store/index.js +++ /dev/null @@ -1,370 +0,0 @@ -import { createStore } from 'vuex' -import service from '../utils/request' - -export default createStore({ - state: { - user: JSON.parse(sessionStorage.getItem('user')) || null, - balance: JSON.parse(sessionStorage.getItem('balance')) || 0, - vipLevel: JSON.parse(sessionStorage.getItem('vipLevel')) || 0, - borrowedBooks: JSON.parse(sessionStorage.getItem('borrowedBooks')) || [], - sessionInitialized: false - }, - getters: { - isAuthenticated: state => !!state.user, - isAdmin: state => state.user?.admin || false - }, - mutations: { - setUser(state, user) { - const admin = user.admin === 1; - const userData = { - ...user, - admin - }; - - state.user = user - console.log("user") - console.log(user) - console.log("state.user") - console.log(state.user) - sessionStorage.setItem('user', JSON.stringify(user)) - }, - setBalanceAndVip(state, { balance, vip }) { - state.balance = balance - state.vipLevel = vip - sessionStorage.setItem('balance', JSON.stringify(balance)) - sessionStorage.setItem('vipLevel', JSON.stringify(vip)) - }, - setBorrowedBooks(state, books) { - state.borrowedBooks = books - sessionStorage.setItem('borrowedBooks', JSON.stringify(books)) - }, - clearUser(state) { - state.user = null - state.balance = 0 - state.vipLevel = 0 - state.borrowedBooks = [] - sessionStorage.removeItem('user') - sessionStorage.removeItem('balance') - sessionStorage.removeItem('vipLevel') - sessionStorage.removeItem('borrowedBooks') - }, - removeBorrowedBook(state, title) { - state.borrowedBooks = state.borrowedBooks.filter(book => book.title !== title) - }, - setSessionInitialized(state, value) { - state.sessionInitialized = value - } - }, - actions: { - async initSession({ commit, dispatch }) { - try { - // 闈欓粯鑾峰彇鐢ㄦ埛淇℃伅 - const userData = await service.get('/user/getinfo', { - silent: true // 閬垮厤鏈櫥褰曟椂鏄剧ず閿欒 - }) - - if (userData && userData.username) { - const admin = userData.admin === 1; - - commit('setUser', { - username: userData.username, - pic: userData.pic || '', - admin - }) - - // 鑾峰彇鍏宠仈淇℃伅 - try { - await dispatch('fetchBalanceAndVip') - } catch (balanceError) { - console.warn('鑾峰彇浣欓淇℃伅澶辫触:', balanceError) - } - - try { - await dispatch('fetchBorrowedBooks') - } catch (booksError) { - console.warn('鑾峰彇鍊熼槄涔︾睄澶辫触:', booksError) - } - } - } catch (error) { - console.log('鏈娴嬪埌鏈夋晥浼氳瘽锛岀敤鎴烽渶瑕侀噸鏂扮櫥褰') - // 娓呴櫎鍙兘瀛樺湪鐨勬棤鏁堟暟鎹 - commit('clearUser') - } finally { - commit('setSessionInitialized', true) - } - }, - - - // 鐢ㄦ埛鐧诲綍 - async login({ dispatch }, { username, password }) { - const response = await service.post('/user/login', - `username=${encodeURIComponent(username)}&password=${encodeURIComponent(password)}`, - { headers: { 'Content-Type': 'application/x-www-form-urlencoded' } } - ) - - // 鐧诲綍鎴愬姛鍚庤幏鍙栫敤鎴蜂俊鎭 - const userInfo = await dispatch('fetchUser') - return { - ...response.data, - user: userInfo - } - }, - - // 鐢ㄦ埛娉ㄥ唽 - async register(_, { username, password }) { - const response = await service.post('/user/register', - `username=${encodeURIComponent(username)}&password=${encodeURIComponent(password)}`, - { headers: { 'Content-Type': 'application/x-www-form-urlencoded' } } - ) - - return response.data - }, - - // 鑾峰彇褰撳墠鐢ㄦ埛淇℃伅 - 绗﹀悎鎺ュ彛鏂囨。 - async fetchUser({ commit, dispatch }) { - try { - const response = await service.get('/user/getinfo') - const userData = response.data - console.log("fetchUer userData") - console.log(userData) - const admin = userData.admin === 1; - // 鐢ㄦ埛淇℃伅鎺ュ彛鐩存帴杩斿洖鐢ㄦ埛瀵硅薄 - commit('setUser', { - username: userData.username || '', - pic: userData.pic || '', - admin - }) - - // 鑾峰彇鍏宠仈淇℃伅 - try { - await dispatch('fetchBalanceAndVip') - } catch (balanceError) { - console.error('鑾峰彇浣欓淇℃伅澶辫触:', balanceError) - } - - try { - await dispatch('fetchBorrowedBooks') - } catch (booksError) { - console.error('鑾峰彇鍊熼槄涔︾睄澶辫触:', booksError) - } - - return userData - } catch (error) { - commit('clearUser') - throw error - } - }, - - // 鑾峰彇浣欓鍜孷IP绛夌骇 - 绗﹀悎鎺ュ彛鏂囨。1.5 - async fetchBalanceAndVip({ commit }) { - try { - const response = await service.post('/user/findmoney') - const resData = response.data || {} - if (resData.code === 200) { - console.log("fetchBalanceAndVip resData") - console.log(resData) - const balance = resData.data.balance - const vip = resData.data.vip - - // const message = resData.message || '' - // // 浣跨敤姝e垯琛ㄨ揪寮忚В鏋愪綑棰濆拰VIP绛夌骇 - // const balanceMatch = message.match(/浣欓涓猴細(\d+\.?\d*)鍏/) - // const vipMatch = message.match(/褰撳墠VIP绛夌骇涓猴細(\d+)/) - console.log("balance:"+balance+",vip:"+vip) - if (balance && vip) { - commit('setBalanceAndVip', { balance, vip }) - } else { - console.warn('鏃犳硶瑙f瀽浣欓鎴朧IP淇℃伅:', message) - commit('setBalanceAndVip', { balance: 0, vip: 0 }) - } - } else { - throw new Error(resData.message || '鑾峰彇浣欓淇℃伅澶辫触') - } - - return resData - } catch (error) { - console.error('鑾峰彇浣欓澶辫触:', error) - // 涓嶆姏鍑洪敊璇紝閬垮厤褰卞搷鍏朵粬鍔熻兘 - return { code: 500, message: '鑾峰彇浣欓澶辫触' } - } - }, - - - // 璐︽埛鍏呭 - async recharge({ dispatch }, { money }) { // 娣诲姞 { dispatch } 瑙f瀯 - const response = await service.post('/user/recharge', - `money=${money}`, - { headers: { 'Content-Type': 'application/x-www-form-urlencoded' } } - ) - - // 鍏呭煎悗鍒锋柊浣欓 - await dispatch('fetchBalanceAndVip') - return response.data - }, - - // 閫鍑虹櫥褰 - async logout({ commit }) { - commit('clearUser') - return { code: 200, message: '宸查鍑虹櫥褰' } - }, - - // 鏌ヨ涓汉鍊熶功璁板綍 - async fetchBorrowRecords() { - const response = await service.get('/user/findone') - return response.data - }, - - // 鑾峰彇褰撳墠鐢ㄦ埛宸插熶功绫 - async fetchBorrowedBooks({ commit }) { - const response = await service.get('/user/borrow/books') - - // 鎸夌収鎺ュ彛鏂囨。澶勭悊鍝嶅簲 - if (response.data.code === 200) { - commit('setBorrowedBooks', response.data.data || []) - } else { - throw new Error(response.data.message || '鑾峰彇宸插熶功绫嶅け璐') - } - - return response.data -}, - - // 绉熷熶功绫 -async borrowBook({ dispatch }, { title }) { - const response = await service.post('/borrow/borrowbook', - `title=${encodeURIComponent(title)}`, - { headers: { 'Content-Type': 'application/x-www-form-urlencoded' } } - ) - - // 鍊熶功鍚庡埛鏂扮敤鎴蜂俊鎭 - await dispatch('fetchUser') - return response.data -}, - -// 褰掕繕涔︾睄 - 绗﹀悎鎺ュ彛鏂囨。3.2 -async returnBook({ dispatch }, { title }) { - try { - const response = await service.post('/borrow/returnbook', - `title=${encodeURIComponent(title)}`, - { headers: { 'Content-Type': 'application/x-www-form-urlencoded' } } - ) - - // 杩樹功鎴愬姛鍚庡埛鏂板熼槄涔︾睄鍒楄〃 - await dispatch('fetchBorrowedBooks') - - return response.data - } catch (error) { - console.error('杩樹功澶辫触:', error) - throw error - } -}, - - // 鏌ヨ鍏ㄩ儴涔︾睄 - 绗﹀悎鎺ュ彛鏂囨。 - async fetchBooks(_, params = {}) { - const config = { - params: { - page: params.page || 1, - pageSize: params.pageSize || 10, - title: params.keyword || '' - } - } - - const response = await service.get('/api/select', config) - const countResponse = await service.get('/api/countArticle') - - // console.log('璇锋眰涔︾睄:', params.title) - // console.log('API鍝嶅簲:', response) - // 澶勭悊涓嶅悓鍝嶅簲鏍煎紡 - let list = [] - let total = countResponse.data.data - if (Array.isArray(response)) { - list = response - // total = response.length - } else if (Array.isArray(response.data)) { - list = response.data - // total = response.data.length - } else if (response.data && Array.isArray(response.data.data)) { - list = response.data.data - // total = response.data.total || response.data.data.length - } else if (response.data && Array.isArray(response.data.list)) { - list = response.data.list - // total = response.data.total || response.data.list.length - } - - return { - data: { - list, - total - } - } - }, - - // 鏍规嵁涔﹀悕鏌ュ崟鏈功 - 绗﹀悎鎺ュ彛鏂囨。2.3 - async fetchBookByTitle(_, payload) { - const { title } = payload; - - try { - const response = await service.get('/api/selectone', { - params: { title } - }) - - // 鏍规嵁鎺ュ彛鏂囨。澶勭悊鍝嶅簲 - if (response.data && response.data.code === 200) { - return { data: response.data.data } - } else { - throw new Error(response.data?.message || '鑾峰彇涔︾睄淇℃伅澶辫触') - } - } catch (error) { - console.error('API璇锋眰澶辫触:', error) - throw error - } - }, - async fetchBookById(_, payload) { - const { id } = payload; - - try { - const response = await service.get('/api/selectById/'+id) - - // 鏍规嵁鎺ュ彛鏂囨。澶勭悊鍝嶅簲 - if (response.data && response.data.code === 200) { - return { data: response.data.data } - } else { - throw new Error(response.data?.message || '鑾峰彇涔︾睄淇℃伅澶辫触') - } - } catch (error) { - console.error('API璇锋眰澶辫触:', error) - throw error - } - }, - - // 鏂板涔︾睄 - async addBook(_, bookData) { - const response = await service.post('/api/add', bookData, { - headers: { 'Content-Type': 'application/json' } - }) - - return response.data - }, - - // 绠$悊鍛樺垹闄や功绫 - async deleteBook(_, { title }) { - const response = await service.post('/user/delete', - `title=${encodeURIComponent(title)}`, - { headers: { 'Content-Type': 'application/x-www-form-urlencoded' } } - ) - - return response.data - }, - - // 鏈懆鐑姒 - 绗﹀悎鎺ュ彛鏂囨。 - async fetchWeeklyRank() { - const response = await service.get('/api/rank/weekly') - return { data: Array.isArray(response) ? response : response.data || [] } - }, - - // 鏈湀鐑姒 - 绗﹀悎鎺ュ彛鏂囨。 - async fetchMonthlyRank() { - const response = await service.get('/api/rank/monthly') - return { data: Array.isArray(response) ? response : response.data || [] } - } - } -}) \ No newline at end of file diff --git a/src/utils/date.js b/src/utils/date.js deleted file mode 100644 index 3e8c5fc..0000000 --- a/src/utils/date.js +++ /dev/null @@ -1,16 +0,0 @@ -export function formatDate(dateString) { - if (!dateString) return '鏈煡鏃堕棿' - - const date = new Date(dateString) - - // 澶勭悊鏃犳晥鏃ユ湡 - if (isNaN(date.getTime())) return dateString - - const year = date.getFullYear() - const month = String(date.getMonth() + 1).padStart(2, '0') - const day = String(date.getDate()).padStart(2, '0') - const hours = String(date.getHours()).padStart(2, '0') - const minutes = String(date.getMinutes()).padStart(2, '0') - - return `${year}-${month}-${day} ${hours}:${minutes}` -} \ No newline at end of file diff --git a/src/utils/request.js b/src/utils/request.js deleted file mode 100644 index d24e273..0000000 --- a/src/utils/request.js +++ /dev/null @@ -1,73 +0,0 @@ -import axios from 'axios' -import { ElMessage } from 'element-plus' -import store from '../store/index' -import router from '../router/index' - -// 鍒涘缓axios瀹炰緥 -const service = axios.create({ - baseURL: 'http://localhost:8877', - timeout: 10000, - withCredentials: true // 鍏佽鎼哄甫cookie -}) - -// 璇锋眰鎷︽埅鍣 -service.interceptors.request.use( - config => { - - return config - }, - error => { - return Promise.reject(error) - } -) - -// 鍝嶅簲鎷︽埅鍣 -service.interceptors.response.use( - response => { - // 澶勭悊鎴愬姛鍝嶅簲 - const res = response.data - - // 澶勭悊涓氬姟閿欒 (code !== 200) - if (res && typeof res === 'object' && res.code !== undefined && res.code !== 200) { - // 妫鏌ユ槸鍚︿负闈欓粯璇锋眰 - if (!response.config.silent) { - ElMessage.error(res.message || '璇锋眰澶辫触') - } - return Promise.reject(new Error(res.message || 'Error')) - } - - // 杩斿洖鏁翠釜鍝嶅簲瀵硅薄锛岀‘淇濈粍浠跺彲浠ヨ闂搷搴斿ご绛変俊鎭 - return response - }, - error => { - // 澶勭悊HTTP閿欒 - if (error.response) { - switch (error.response.status) { - case 401: - // 鍙湁鍦ㄩ潪闈欓粯璇锋眰鏃舵墠鏄剧ず閿欒淇℃伅 - if (!error.config?.silent) { - store.dispatch('logout') - router.push('/login') - ElMessage.error('璇峰厛鐧诲綍') - } - break - case 403: - if (!error.config?.silent) { - ElMessage.error('娌℃湁鎿嶄綔鏉冮檺') - } - break - default: - if (!error.config?.silent) { - ElMessage.error(error.response.data?.message || '璇锋眰澶辫触') - } - } - } else { - if (!error.config?.silent) { - ElMessage.error('缃戠粶閿欒锛岃妫鏌ヨ繛鎺') - } - } - return Promise.reject(error) - } -) - -export default service \ No newline at end of file diff --git a/src/utils/storage.js b/src/utils/storage.js deleted file mode 100644 index 6e019e3..0000000 --- a/src/utils/storage.js +++ /dev/null @@ -1,43 +0,0 @@ -// 瀹夊叏鍦拌В鏋怞SON瀛楃涓 -export function safeParseJSON(str, defaultValue = null) { - if (!str) return defaultValue - try { - return JSON.parse(str) - } catch (error) { - console.error('JSON瑙f瀽澶辫触:', error) - return defaultValue - } -} - -// 瀹夊叏鍦板瓨鍌ㄦ暟鎹埌sessionStorage -export function safeSetItem(key, value) { - try { - sessionStorage.setItem(key, JSON.stringify(value)) - return true - } catch (error) { - console.error('瀛樺偍鏁版嵁澶辫触:', error) - return false - } -} - -// 瀹夊叏鍦颁粠sessionStorage鑾峰彇鏁版嵁 -export function safeGetItem(key, defaultValue = null) { - try { - const item = sessionStorage.getItem(key) - return item ? JSON.parse(item) : defaultValue - } catch (error) { - console.error('鑾峰彇鏁版嵁澶辫触:', error) - return defaultValue - } -} - -// 瀹夊叏鍦颁粠sessionStorage鍒犻櫎鏁版嵁 -export function safeRemoveItem(key) { - try { - sessionStorage.removeItem(key) - return true - } catch (error) { - console.error('鍒犻櫎鏁版嵁澶辫触:', error) - return false - } -} \ No newline at end of file diff --git a/src/views/Admin/AllBorrowRecords.vue b/src/views/Admin/AllBorrowRecords.vue deleted file mode 100644 index ebf2a4e..0000000 --- a/src/views/Admin/AllBorrowRecords.vue +++ /dev/null @@ -1,148 +0,0 @@ - - - - - diff --git a/src/views/Admin/BookManagement.vue b/src/views/Admin/BookManagement.vue deleted file mode 100644 index 593064b..0000000 --- a/src/views/Admin/BookManagement.vue +++ /dev/null @@ -1,188 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/src/views/Auth/Login.vue b/src/views/Auth/Login.vue deleted file mode 100644 index d5a5fa7..0000000 --- a/src/views/Auth/Login.vue +++ /dev/null @@ -1,133 +0,0 @@ - - - - - \ No newline at end of file diff --git a/src/views/Auth/Register.vue b/src/views/Auth/Register.vue deleted file mode 100644 index 817e739..0000000 --- a/src/views/Auth/Register.vue +++ /dev/null @@ -1,156 +0,0 @@ - - - - - \ No newline at end of file diff --git a/src/views/Books/AddBook.vue b/src/views/Books/AddBook.vue deleted file mode 100644 index 5d13af0..0000000 --- a/src/views/Books/AddBook.vue +++ /dev/null @@ -1,141 +0,0 @@ - - - - - \ No newline at end of file diff --git a/src/views/Books/BookDetail.vue b/src/views/Books/BookDetail.vue deleted file mode 100644 index 886041f..0000000 --- a/src/views/Books/BookDetail.vue +++ /dev/null @@ -1,186 +0,0 @@ - - - - - \ No newline at end of file diff --git a/src/views/Books/BookList.vue b/src/views/Books/BookList.vue deleted file mode 100644 index 9ee4e05..0000000 --- a/src/views/Books/BookList.vue +++ /dev/null @@ -1,202 +0,0 @@ - - - - - \ No newline at end of file diff --git a/src/views/Books/EditBook.vue b/src/views/Books/EditBook.vue deleted file mode 100644 index eeaf97a..0000000 --- a/src/views/Books/EditBook.vue +++ /dev/null @@ -1,3 +0,0 @@ - \ No newline at end of file diff --git a/src/views/Borrow/BorrowBook.vue b/src/views/Borrow/BorrowBook.vue deleted file mode 100644 index e92d27b..0000000 --- a/src/views/Borrow/BorrowBook.vue +++ /dev/null @@ -1,142 +0,0 @@ - - - - - \ No newline at end of file diff --git a/src/views/Borrow/ReturnBook.vue b/src/views/Borrow/ReturnBook.vue deleted file mode 100644 index f597661..0000000 --- a/src/views/Borrow/ReturnBook.vue +++ /dev/null @@ -1,155 +0,0 @@ - - - - - \ No newline at end of file diff --git a/src/views/Home.vue b/src/views/Home.vue deleted file mode 100644 index e75e16c..0000000 --- a/src/views/Home.vue +++ /dev/null @@ -1,164 +0,0 @@ - - - - - \ No newline at end of file diff --git a/src/views/Ranking/MonthlyRank.vue b/src/views/Ranking/MonthlyRank.vue deleted file mode 100644 index ff3ff3f..0000000 --- a/src/views/Ranking/MonthlyRank.vue +++ /dev/null @@ -1,114 +0,0 @@ - - - - - \ No newline at end of file diff --git a/src/views/Ranking/WeeklyRank.vue b/src/views/Ranking/WeeklyRank.vue deleted file mode 100644 index b719fb8..0000000 --- a/src/views/Ranking/WeeklyRank.vue +++ /dev/null @@ -1,113 +0,0 @@ - - - - - \ No newline at end of file diff --git a/src/views/User/BorrowRecords.vue b/src/views/User/BorrowRecords.vue deleted file mode 100644 index ffcad87..0000000 --- a/src/views/User/BorrowRecords.vue +++ /dev/null @@ -1,96 +0,0 @@ - - - - - \ No newline at end of file diff --git a/src/views/User/Profile.vue b/src/views/User/Profile.vue deleted file mode 100644 index b03de23..0000000 --- a/src/views/User/Profile.vue +++ /dev/null @@ -1,122 +0,0 @@ - - - - - \ No newline at end of file diff --git a/src/views/User/Recharge.vue b/src/views/User/Recharge.vue deleted file mode 100644 index a258e97..0000000 --- a/src/views/User/Recharge.vue +++ /dev/null @@ -1,129 +0,0 @@ - - - - - \ No newline at end of file