diff --git a/server/.idea/data_source_mapping.xml b/server/.idea/data_source_mapping.xml deleted file mode 100644 index 82176b25..00000000 --- a/server/.idea/data_source_mapping.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/server/internal/baseoverview/handler/baseOverview/getbaseoverviewhandler.go b/server/internal/baseoverview/handler/baseOverview/getbaseoverviewhandler.go index 8b224d39..d2ac40ba 100644 --- a/server/internal/baseoverview/handler/baseOverview/getbaseoverviewhandler.go +++ b/server/internal/baseoverview/handler/baseOverview/getbaseoverviewhandler.go @@ -4,11 +4,14 @@ package baseOverview import ( + "fmt" "net/http" "github.com/JACKYMYPERSON/hldrCenter/config" "github.com/JACKYMYPERSON/hldrCenter/internal/baseoverview/internal/logic/baseOverview" + "github.com/JACKYMYPERSON/hldrCenter/internal/baseoverview/internal/model" "github.com/JACKYMYPERSON/hldrCenter/internal/baseoverview/internal/types" + "github.com/zeromicro/go-zero/core/stores/sqlx" "github.com/zeromicro/go-zero/rest/httpx" ) @@ -20,7 +23,23 @@ func GetBaseOverviewHandler(cfg *config.Config) http.HandlerFunc { return } - l := baseOverview.NewGetBaseOverviewLogic(r.Context(), cfg) + mysqlCfg := cfg.MySQL + dsn := fmt.Sprintf( + "%s:%s@tcp(%s:%d)/%s?charset=%s&parseTime=true&loc=Local", + mysqlCfg.Username, + mysqlCfg.Password, + mysqlCfg.Host, + mysqlCfg.Port, + mysqlCfg.Database, + mysqlCfg.Charset, + ) + fmt.Println("接收到articlePost请求") + + conn := sqlx.NewSqlConn("mysql", dsn) + + baseModel := model.NewBaseoverviewModel(conn) + + l := baseOverview.NewGetBaseOverviewLogic(r.Context(), cfg, baseModel) resp, err := l.GetBaseOverview(&req) if err != nil { httpx.ErrorCtx(r.Context(), w, err) diff --git a/server/internal/baseoverview/handler/baseOverview/updatebaseoverviewpartialhandler.go b/server/internal/baseoverview/handler/baseOverview/updatebaseoverviewpartialhandler.go index f938dec2..a6a4c023 100644 --- a/server/internal/baseoverview/handler/baseOverview/updatebaseoverviewpartialhandler.go +++ b/server/internal/baseoverview/handler/baseOverview/updatebaseoverviewpartialhandler.go @@ -4,11 +4,14 @@ package baseOverview import ( + "fmt" "net/http" "github.com/JACKYMYPERSON/hldrCenter/config" "github.com/JACKYMYPERSON/hldrCenter/internal/baseoverview/internal/logic/baseOverview" + "github.com/JACKYMYPERSON/hldrCenter/internal/baseoverview/internal/model" "github.com/JACKYMYPERSON/hldrCenter/internal/baseoverview/internal/types" + "github.com/zeromicro/go-zero/core/stores/sqlx" "github.com/zeromicro/go-zero/rest/httpx" ) @@ -20,7 +23,22 @@ func UpdateBaseOverviewPartialHandler(cfg *config.Config) http.HandlerFunc { return } - l := baseOverview.NewUpdateBaseOverviewPartialLogic(r.Context(), cfg) + mysqlCfg := cfg.MySQL + dsn := fmt.Sprintf( + "%s:%s@tcp(%s:%d)/%s?charset=%s&parseTime=true&loc=Local", + mysqlCfg.Username, + mysqlCfg.Password, + mysqlCfg.Host, + mysqlCfg.Port, + mysqlCfg.Database, + mysqlCfg.Charset, + ) + fmt.Println("接收到articlePost请求") + + conn := sqlx.NewSqlConn("mysql", dsn) + baseModel := model.NewBaseoverviewModel(conn) + + l := baseOverview.NewUpdateBaseOverviewPartialLogic(r.Context(), cfg, baseModel) resp, err := l.UpdateBaseOverviewPartial(&req) if err != nil { httpx.ErrorCtx(r.Context(), w, err) diff --git a/server/internal/baseoverview/internal/handler/baseOverview/getbaseoverviewhandler.go b/server/internal/baseoverview/internal/handler/baseOverview/getbaseoverviewhandler.go deleted file mode 100644 index 8b224d39..00000000 --- a/server/internal/baseoverview/internal/handler/baseOverview/getbaseoverviewhandler.go +++ /dev/null @@ -1,31 +0,0 @@ -// Code scaffolded by goctl. Safe to edit. -// goctl 1.9.2 - -package baseOverview - -import ( - "net/http" - - "github.com/JACKYMYPERSON/hldrCenter/config" - "github.com/JACKYMYPERSON/hldrCenter/internal/baseoverview/internal/logic/baseOverview" - "github.com/JACKYMYPERSON/hldrCenter/internal/baseoverview/internal/types" - "github.com/zeromicro/go-zero/rest/httpx" -) - -func GetBaseOverviewHandler(cfg *config.Config) http.HandlerFunc { - return func(w http.ResponseWriter, r *http.Request) { - var req types.GetBaseOverviewReq - if err := httpx.Parse(r, &req); err != nil { - httpx.ErrorCtx(r.Context(), w, err) - return - } - - l := baseOverview.NewGetBaseOverviewLogic(r.Context(), cfg) - resp, err := l.GetBaseOverview(&req) - if err != nil { - httpx.ErrorCtx(r.Context(), w, err) - } else { - httpx.OkJsonCtx(r.Context(), w, resp) - } - } -} diff --git a/server/internal/baseoverview/internal/handler/baseOverview/updatebaseoverviewpartialhandler.go b/server/internal/baseoverview/internal/handler/baseOverview/updatebaseoverviewpartialhandler.go deleted file mode 100644 index f938dec2..00000000 --- a/server/internal/baseoverview/internal/handler/baseOverview/updatebaseoverviewpartialhandler.go +++ /dev/null @@ -1,31 +0,0 @@ -// Code scaffolded by goctl. Safe to edit. -// goctl 1.9.2 - -package baseOverview - -import ( - "net/http" - - "github.com/JACKYMYPERSON/hldrCenter/config" - "github.com/JACKYMYPERSON/hldrCenter/internal/baseoverview/internal/logic/baseOverview" - "github.com/JACKYMYPERSON/hldrCenter/internal/baseoverview/internal/types" - "github.com/zeromicro/go-zero/rest/httpx" -) - -func UpdateBaseOverviewPartialHandler(cfg *config.Config) http.HandlerFunc { - return func(w http.ResponseWriter, r *http.Request) { - var req types.UpdateBaseOverviewPartialReq - if err := httpx.Parse(r, &req); err != nil { - httpx.ErrorCtx(r.Context(), w, err) - return - } - - l := baseOverview.NewUpdateBaseOverviewPartialLogic(r.Context(), cfg) - resp, err := l.UpdateBaseOverviewPartial(&req) - if err != nil { - httpx.ErrorCtx(r.Context(), w, err) - } else { - httpx.OkJsonCtx(r.Context(), w, resp) - } - } -} diff --git a/server/internal/baseoverview/internal/logic/baseOverview/getbaseoverviewlogic.go b/server/internal/baseoverview/internal/logic/baseOverview/getbaseoverviewlogic.go index 95dbebb1..7f5fa735 100644 --- a/server/internal/baseoverview/internal/logic/baseOverview/getbaseoverviewlogic.go +++ b/server/internal/baseoverview/internal/logic/baseOverview/getbaseoverviewlogic.go @@ -7,6 +7,7 @@ import ( "context" "github.com/JACKYMYPERSON/hldrCenter/config" + "github.com/JACKYMYPERSON/hldrCenter/internal/baseoverview/internal/model" "github.com/JACKYMYPERSON/hldrCenter/internal/baseoverview/internal/types" "github.com/zeromicro/go-zero/core/logx" @@ -14,20 +15,44 @@ import ( type GetBaseOverviewLogic struct { logx.Logger - ctx context.Context - cfg *config.Config + ctx context.Context + cfg *config.Config + model model.BaseoverviewModel } -func NewGetBaseOverviewLogic(ctx context.Context, cfg *config.Config) *GetBaseOverviewLogic { +func NewGetBaseOverviewLogic(ctx context.Context, cfg *config.Config, model model.BaseoverviewModel) *GetBaseOverviewLogic { return &GetBaseOverviewLogic{ Logger: logx.WithContext(ctx), ctx: ctx, cfg: cfg, + model: model, } } func (l *GetBaseOverviewLogic) GetBaseOverview(req *types.GetBaseOverviewReq) (resp *types.GetBaseOverviewResp, err error) { - // todo: add your logic here and delete this line + result, err := l.model.FindOne(l.ctx, 1) + if err != nil { + return nil, err + } + + baseOverview := types.BaseOverview{ + Id: result.Id, // 基地ID + Introduction: result.Introduction.String, + Regulations: result.Regulations.String, + Address: result.Address.String, + Phone: result.Phone.String, + Email: result.Email.String, + Website: result.Website.String, + Director: result.Director.String, + DeputyDirector: result.DeputyDirector.String, + Researchers: result.Researchers.String, + } + + // 构造成功响应 + resp = &types.GetBaseOverviewResp{ + Data: baseOverview, + Success: true, // 操作成功标识 + } + return resp, nil - return } diff --git a/server/internal/baseoverview/internal/logic/baseOverview/updatebaseoverviewpartiallogic.go b/server/internal/baseoverview/internal/logic/baseOverview/updatebaseoverviewpartiallogic.go index a00744f1..84cb3563 100644 --- a/server/internal/baseoverview/internal/logic/baseOverview/updatebaseoverviewpartiallogic.go +++ b/server/internal/baseoverview/internal/logic/baseOverview/updatebaseoverviewpartiallogic.go @@ -5,8 +5,10 @@ package baseOverview import ( "context" + "database/sql" "github.com/JACKYMYPERSON/hldrCenter/config" + "github.com/JACKYMYPERSON/hldrCenter/internal/baseoverview/internal/model" "github.com/JACKYMYPERSON/hldrCenter/internal/baseoverview/internal/types" "github.com/zeromicro/go-zero/core/logx" @@ -14,20 +16,67 @@ import ( type UpdateBaseOverviewPartialLogic struct { logx.Logger - ctx context.Context - cfg *config.Config + ctx context.Context + cfg *config.Config + model model.BaseoverviewModel } -func NewUpdateBaseOverviewPartialLogic(ctx context.Context, cfg *config.Config) *UpdateBaseOverviewPartialLogic { +func NewUpdateBaseOverviewPartialLogic(ctx context.Context, cfg *config.Config, model model.BaseoverviewModel) *UpdateBaseOverviewPartialLogic { return &UpdateBaseOverviewPartialLogic{ Logger: logx.WithContext(ctx), ctx: ctx, cfg: cfg, + model: model, } } func (l *UpdateBaseOverviewPartialLogic) UpdateBaseOverviewPartial(req *types.UpdateBaseOverviewPartialReq) (resp *types.UpdateBaseOverviewPartialResp, err error) { - // todo: add your logic here and delete this line + // 1. 先查询当前基地信息(根据ID) + current, err := l.model.FindOne(l.ctx, req.Id) + if err != nil { + return nil, err // 查询失败(如ID不存在)返回错误 + } + + // 2. 用请求中的非空字段更新当前数据(只更新传入了有效值的字段) + // 注意:请求字段是 string 类型,非空字符串表示需要更新 + if req.Introduction != "" { + current.Introduction = sql.NullString{String: req.Introduction, Valid: true} + } + if req.Regulations != "" { + current.Regulations = sql.NullString{String: req.Regulations, Valid: true} + } + if req.Address != "" { + current.Address = sql.NullString{String: req.Address, Valid: true} + } + if req.Phone != "" { + current.Phone = sql.NullString{String: req.Phone, Valid: true} + } + if req.Email != "" { + current.Email = sql.NullString{String: req.Email, Valid: true} + } + if req.Website != "" { + current.Website = sql.NullString{String: req.Website, Valid: true} + } + if req.Director != "" { + current.Director = sql.NullString{String: req.Director, Valid: true} + } + if req.DeputyDirector != "" { + current.DeputyDirector = sql.NullString{String: req.DeputyDirector, Valid: true} + } + if req.Researchers != "" { + current.Researchers = sql.NullString{String: req.Researchers, Valid: true} + } + + // 3. 调用模型的 Update 方法保存更新 + err = l.model.Update(l.ctx, current) + if err != nil { + return nil, err // 更新失败返回错误 + } + + // 4. 构造响应 + return &types.UpdateBaseOverviewPartialResp{ + Success: true, + Msg: "基地信息更新成功", // 可选:成功时也可省略 Msg(会被 omitempty 忽略) + }, nil - return } diff --git a/server/router/router.go b/server/router/router.go index ab562218..6cbdfd19 100644 --- a/server/router/router.go +++ b/server/router/router.go @@ -3,6 +3,7 @@ package router import ( "github.com/JACKYMYPERSON/hldrCenter/config" "github.com/JACKYMYPERSON/hldrCenter/internal/article/handler/article" + "github.com/JACKYMYPERSON/hldrCenter/internal/baseoverview/handler/baseOverview" ping "github.com/JACKYMYPERSON/hldrCenter/internal/ping/handler/ping" uploadimg "github.com/JACKYMYPERSON/hldrCenter/internal/upload/handler/upload" "github.com/JACKYMYPERSON/hldrCenter/middleware" @@ -40,6 +41,14 @@ func SetupRouter(cfg *config.Config) *gin.Engine { // 5. 删除文章(DELETE /api/articles/:id) articles.DELETE("/:id", gin.WrapH(article.DeleteArticleHandler(cfg))) } + + baseOverviewapi := api.Group("/base-overview") // 用资源路径区分,避免与根路径冲突 + { + // 获取基地概况(对应 service 中的 GET /) + baseOverviewapi.GET("", gin.WrapH(baseOverview.GetBaseOverviewHandler(cfg))) + // 部分更新基地概况(对应 service 中的 PATCH /) + baseOverviewapi.PATCH("", gin.WrapH(baseOverview.UpdateBaseOverviewPartialHandler(cfg))) + } } return r diff --git a/web/package-lock.json b/web/package-lock.json index 4b434085..329a6c48 100644 --- a/web/package-lock.json +++ b/web/package-lock.json @@ -63,7 +63,6 @@ "resolved": "https://registry.npmmirror.com/@babel/core/-/core-7.28.4.tgz", "integrity": "sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==", "dev": true, - "peer": true, "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.3", @@ -1597,7 +1596,6 @@ "version": "4.17.12", "resolved": "https://registry.npmmirror.com/@types/lodash-es/-/lodash-es-4.17.12.tgz", "integrity": "sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==", - "peer": true, "dependencies": { "@types/lodash": "*" } @@ -1607,7 +1605,6 @@ "resolved": "https://registry.npmmirror.com/@types/node/-/node-22.18.8.tgz", "integrity": "sha512-pAZSHMiagDR7cARo/cch1f3rXy0AEXwsVsVH09FcyeJVAzCnGgmYis7P3JidtTUjyadhTeSo8TgRPswstghDaw==", "dev": true, - "peer": true, "dependencies": { "undici-types": "~6.21.0" } @@ -1660,7 +1657,6 @@ "resolved": "https://registry.npmmirror.com/@typescript-eslint/parser/-/parser-8.45.0.tgz", "integrity": "sha512-TGf22kon8KW+DeKaUmOibKWktRY8b2NSAZNdtWh798COm1NWx8+xJ6iFBtk3IvLdv6+LGLJLRlyhrhEDZWargQ==", "dev": true, - "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "8.45.0", "@typescript-eslint/types": "8.45.0", @@ -2309,7 +2305,6 @@ "resolved": "https://registry.npmmirror.com/acorn/-/acorn-8.15.0.tgz", "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "dev": true, - "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -2452,7 +2447,6 @@ "url": "https://github.com/sponsors/ai" } ], - "peer": true, "dependencies": { "baseline-browser-mapping": "^2.8.9", "caniuse-lite": "^1.0.30001746", @@ -2793,7 +2787,6 @@ "resolved": "https://registry.npmmirror.com/eslint/-/eslint-9.36.0.tgz", "integrity": "sha512-hB4FIzXovouYzwzECDcUkJ4OcfOEkXTv2zRY6B9bkwjx/cprAq0uvm1nl7zvQ0/TsUk0zQiN4uPfJpB9m+rPMQ==", "dev": true, - "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", @@ -2854,7 +2847,6 @@ "resolved": "https://registry.npmmirror.com/eslint-config-prettier/-/eslint-config-prettier-10.1.8.tgz", "integrity": "sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==", "dev": true, - "peer": true, "bin": { "eslint-config-prettier": "bin/cli.js" }, @@ -2900,7 +2892,6 @@ "resolved": "https://registry.npmmirror.com/eslint-plugin-vue/-/eslint-plugin-vue-10.4.0.tgz", "integrity": "sha512-K6tP0dW8FJVZLQxa2S7LcE1lLw3X8VvB3t887Q6CLrFVxHYBXGANbXvwNzYIu6Ughx1bSJ5BDT0YB3ybPT39lw==", "dev": true, - "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", "natural-compare": "^1.4.0", @@ -3484,7 +3475,6 @@ "resolved": "https://registry.npmmirror.com/jiti/-/jiti-2.6.1.tgz", "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==", "dev": true, - "peer": true, "bin": { "jiti": "lib/jiti-cli.mjs" } @@ -3604,14 +3594,12 @@ "node_modules/lodash": { "version": "4.17.21", "resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "peer": true + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, "node_modules/lodash-es": { "version": "4.17.21", "resolved": "https://registry.npmmirror.com/lodash-es/-/lodash-es-4.17.21.tgz", - "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", - "peer": true + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" }, "node_modules/lodash-unified": { "version": "1.0.3", @@ -4125,7 +4113,6 @@ "resolved": "https://registry.npmmirror.com/prettier/-/prettier-3.6.2.tgz", "integrity": "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==", "dev": true, - "peer": true, "bin": { "prettier": "bin/prettier.cjs" }, @@ -4492,7 +4479,6 @@ "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-4.0.3.tgz", "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true, - "peer": true, "engines": { "node": ">=12" }, @@ -4550,7 +4536,6 @@ "resolved": "https://registry.npmmirror.com/typescript/-/typescript-5.9.3.tgz", "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "devOptional": true, - "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -4679,7 +4664,6 @@ "integrity": "sha512-ZWyE8YXEXqJrrSLvYgrRP7p62OziLW7xI5HYGWFzOvupfAlrLvURSzv/FyGyy0eidogEM3ujU+kUG1zuHgb6Ug==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "esbuild": "^0.25.0", "fdir": "^6.5.0", @@ -4907,7 +4891,6 @@ "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-4.0.3.tgz", "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true, - "peer": true, "engines": { "node": ">=12" }, @@ -4925,7 +4908,6 @@ "version": "3.5.22", "resolved": "https://registry.npmmirror.com/vue/-/vue-3.5.22.tgz", "integrity": "sha512-toaZjQ3a/G/mYaLSbV+QsQhIdMo9x5rrqIpYRObsJ6T/J+RyCSFwN2LHNVH9v8uIcljDNa3QzPVdv3Y6b9hAJQ==", - "peer": true, "dependencies": { "@vue/compiler-dom": "3.5.22", "@vue/compiler-sfc": "3.5.22", @@ -5114,7 +5096,6 @@ "resolved": "https://registry.npmmirror.com/@babel/core/-/core-7.28.4.tgz", "integrity": "sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==", "dev": true, - "peer": true, "requires": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.3", @@ -6066,7 +6047,6 @@ "version": "4.17.12", "resolved": "https://registry.npmmirror.com/@types/lodash-es/-/lodash-es-4.17.12.tgz", "integrity": "sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==", - "peer": true, "requires": { "@types/lodash": "*" } @@ -6076,7 +6056,6 @@ "resolved": "https://registry.npmmirror.com/@types/node/-/node-22.18.8.tgz", "integrity": "sha512-pAZSHMiagDR7cARo/cch1f3rXy0AEXwsVsVH09FcyeJVAzCnGgmYis7P3JidtTUjyadhTeSo8TgRPswstghDaw==", "dev": true, - "peer": true, "requires": { "undici-types": "~6.21.0" } @@ -6116,7 +6095,6 @@ "resolved": "https://registry.npmmirror.com/@typescript-eslint/parser/-/parser-8.45.0.tgz", "integrity": "sha512-TGf22kon8KW+DeKaUmOibKWktRY8b2NSAZNdtWh798COm1NWx8+xJ6iFBtk3IvLdv6+LGLJLRlyhrhEDZWargQ==", "dev": true, - "peer": true, "requires": { "@typescript-eslint/scope-manager": "8.45.0", "@typescript-eslint/types": "8.45.0", @@ -6557,8 +6535,7 @@ "version": "8.15.0", "resolved": "https://registry.npmmirror.com/acorn/-/acorn-8.15.0.tgz", "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", - "dev": true, - "peer": true + "dev": true }, "acorn-jsx": { "version": "5.3.2", @@ -6657,7 +6634,6 @@ "resolved": "https://registry.npmmirror.com/browserslist/-/browserslist-4.26.3.tgz", "integrity": "sha512-lAUU+02RFBuCKQPj/P6NgjlbCnLBMp4UtgTx7vNHd3XSIJF87s9a5rA3aH2yw3GS9DqZAUbOtZdCCiZeVRqt0w==", "dev": true, - "peer": true, "requires": { "baseline-browser-mapping": "^2.8.9", "caniuse-lite": "^1.0.30001746", @@ -6891,7 +6867,6 @@ "resolved": "https://registry.npmmirror.com/eslint/-/eslint-9.36.0.tgz", "integrity": "sha512-hB4FIzXovouYzwzECDcUkJ4OcfOEkXTv2zRY6B9bkwjx/cprAq0uvm1nl7zvQ0/TsUk0zQiN4uPfJpB9m+rPMQ==", "dev": true, - "peer": true, "requires": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", @@ -6962,7 +6937,6 @@ "resolved": "https://registry.npmmirror.com/eslint-config-prettier/-/eslint-config-prettier-10.1.8.tgz", "integrity": "sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==", "dev": true, - "peer": true, "requires": {} }, "eslint-plugin-prettier": { @@ -6980,7 +6954,6 @@ "resolved": "https://registry.npmmirror.com/eslint-plugin-vue/-/eslint-plugin-vue-10.4.0.tgz", "integrity": "sha512-K6tP0dW8FJVZLQxa2S7LcE1lLw3X8VvB3t887Q6CLrFVxHYBXGANbXvwNzYIu6Ughx1bSJ5BDT0YB3ybPT39lw==", "dev": true, - "peer": true, "requires": { "@eslint-community/eslint-utils": "^4.4.0", "natural-compare": "^1.4.0", @@ -7351,8 +7324,7 @@ "version": "2.6.1", "resolved": "https://registry.npmmirror.com/jiti/-/jiti-2.6.1.tgz", "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==", - "dev": true, - "peer": true + "dev": true }, "js-tokens": { "version": "4.0.0", @@ -7442,14 +7414,12 @@ "lodash": { "version": "4.17.21", "resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "peer": true + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, "lodash-es": { "version": "4.17.21", "resolved": "https://registry.npmmirror.com/lodash-es/-/lodash-es-4.17.21.tgz", - "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", - "peer": true + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" }, "lodash-unified": { "version": "1.0.3", @@ -7793,8 +7763,7 @@ "version": "3.6.2", "resolved": "https://registry.npmmirror.com/prettier/-/prettier-3.6.2.tgz", "integrity": "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==", - "dev": true, - "peer": true + "dev": true }, "prettier-linter-helpers": { "version": "1.0.0", @@ -8013,8 +7982,7 @@ "version": "4.0.3", "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-4.0.3.tgz", "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", - "dev": true, - "peer": true + "dev": true } } }, @@ -8053,8 +8021,7 @@ "version": "5.9.3", "resolved": "https://registry.npmmirror.com/typescript/-/typescript-5.9.3.tgz", "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", - "devOptional": true, - "peer": true + "devOptional": true }, "typescript-eslint": { "version": "8.45.0", @@ -8128,7 +8095,6 @@ "resolved": "https://registry.npmjs.org/vite/-/vite-7.1.12.tgz", "integrity": "sha512-ZWyE8YXEXqJrrSLvYgrRP7p62OziLW7xI5HYGWFzOvupfAlrLvURSzv/FyGyy0eidogEM3ujU+kUG1zuHgb6Ug==", "dev": true, - "peer": true, "requires": { "esbuild": "^0.25.0", "fdir": "^6.5.0", @@ -8150,8 +8116,7 @@ "version": "4.0.3", "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-4.0.3.tgz", "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", - "dev": true, - "peer": true + "dev": true } } }, @@ -8271,7 +8236,6 @@ "version": "3.5.22", "resolved": "https://registry.npmmirror.com/vue/-/vue-3.5.22.tgz", "integrity": "sha512-toaZjQ3a/G/mYaLSbV+QsQhIdMo9x5rrqIpYRObsJ6T/J+RyCSFwN2LHNVH9v8uIcljDNa3QzPVdv3Y6b9hAJQ==", - "peer": true, "requires": { "@vue/compiler-dom": "3.5.22", "@vue/compiler-sfc": "3.5.22",