From 810cda76b8bcfbc1f66007e6b8762a5fcf3a6f3f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=80=9D=E7=BB=B4=E8=B7=B3=E8=B7=83=E7=A7=91=E6=8A=80?= Date: Wed, 25 Sep 2024 08:24:08 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=99=E7=A8=8B=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/404.html | 6 +- ....html.4005bb68.js => 404.html.e9cffbf9.js} | 2 +- ...tml.b4f327dd.js => admin.html.84fbabc7.js} | 2 +- ...tml.eeeebf5a.js => admin.html.b49cbbe5.js} | 54 +++++++++--------- .../{app.d00a1887.js => app.ee529b4c.js} | 2 +- ....5e7c8999.js => database.html.899276e6.js} | 2 +- ...ml.c8c4e875.js => deploy.html.2c8ceef5.js} | 2 +- ...l.e8acac83.js => develop.html.29d0133c.js} | 2 +- ...l.269ba688.js => feature.html.f69d07d5.js} | 2 +- ...tml.1bf545d5.js => index.html.e8015e4a.js} | 2 +- ...tml.03087e5a.js => skill.html.76c41637.js} | 2 +- ...l.79831c63.js => student.html.440619d8.js} | 2 +- ...l.5690993d.js => student.html.63d2bdb9.js} | 2 +- ...tml.00e64dae.js => video.html.86ee6545.js} | 2 +- ...tml.048c06d9.js => video.html.b5826efb.js} | 6 +- ...x.html.7aefa0b3.js => wx.html.3a4f171f.js} | 2 +- ...x.html.50145a60.js => wx.html.7ec80f51.js} | 22 ++++---- docs/guide/admin.html | 56 +++++++++---------- docs/guide/database.html | 4 +- docs/guide/deploy.html | 4 +- docs/guide/develop.html | 4 +- docs/guide/feature.html | 4 +- docs/guide/skill.html | 4 +- docs/guide/student.html | 4 +- docs/guide/video.html | 6 +- docs/guide/wx.html | 24 ++++---- docs/index.html | 4 +- 27 files changed, 114 insertions(+), 114 deletions(-) rename docs/assets/{404.html.4005bb68.js => 404.html.e9cffbf9.js} (63%) rename docs/assets/{admin.html.b4f327dd.js => admin.html.84fbabc7.js} (97%) rename docs/assets/{admin.html.eeeebf5a.js => admin.html.b49cbbe5.js} (98%) rename docs/assets/{app.d00a1887.js => app.ee529b4c.js} (99%) rename docs/assets/{database.html.5e7c8999.js => database.html.899276e6.js} (99%) rename docs/assets/{deploy.html.c8c4e875.js => deploy.html.2c8ceef5.js} (99%) rename docs/assets/{develop.html.e8acac83.js => develop.html.29d0133c.js} (99%) rename docs/assets/{feature.html.269ba688.js => feature.html.f69d07d5.js} (98%) rename docs/assets/{index.html.1bf545d5.js => index.html.e8015e4a.js} (98%) rename docs/assets/{skill.html.03087e5a.js => skill.html.76c41637.js} (96%) rename docs/assets/{student.html.79831c63.js => student.html.440619d8.js} (95%) rename docs/assets/{student.html.5690993d.js => student.html.63d2bdb9.js} (99%) rename docs/assets/{video.html.00e64dae.js => video.html.86ee6545.js} (91%) rename docs/assets/{video.html.048c06d9.js => video.html.b5826efb.js} (79%) rename docs/assets/{wx.html.7aefa0b3.js => wx.html.3a4f171f.js} (94%) rename docs/assets/{wx.html.50145a60.js => wx.html.7ec80f51.js} (98%) diff --git a/docs/404.html b/docs/404.html index 2d468d6f..11593d40 100644 --- a/docs/404.html +++ b/docs/404.html @@ -24,10 +24,10 @@ | 学之思教程 - + -

404

That's a Four-Oh-Four.
Take me home
- +

404

How did we get here?
Take me home
+ diff --git a/docs/assets/404.html.4005bb68.js b/docs/assets/404.html.e9cffbf9.js similarity index 63% rename from docs/assets/404.html.4005bb68.js rename to docs/assets/404.html.e9cffbf9.js index e3df2b6a..8a0f3ed1 100644 --- a/docs/assets/404.html.4005bb68.js +++ b/docs/assets/404.html.e9cffbf9.js @@ -1 +1 @@ -import{_ as e,o as c,c as t}from"./app.d00a1887.js";const _={};function o(r,n){return c(),t("div")}const a=e(_,[["render",o],["__file","404.html.vue"]]);export{a as default}; +import{_ as e,o as c,c as t}from"./app.ee529b4c.js";const _={};function o(r,n){return c(),t("div")}const a=e(_,[["render",o],["__file","404.html.vue"]]);export{a as default}; diff --git a/docs/assets/admin.html.b4f327dd.js b/docs/assets/admin.html.84fbabc7.js similarity index 97% rename from docs/assets/admin.html.b4f327dd.js rename to docs/assets/admin.html.84fbabc7.js index eb3b13e3..e909d555 100644 --- a/docs/assets/admin.html.b4f327dd.js +++ b/docs/assets/admin.html.84fbabc7.js @@ -1 +1 @@ -const l=JSON.parse('{"key":"v-55bcf8d6","path":"/guide/admin.html","title":"4.3 管理端","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":3,"title":"4.3.1 登录","slug":"_4-3-1-登录","link":"#_4-3-1-登录","children":[]},{"level":3,"title":"4.3.2 登出","slug":"_4-3-2-登出","link":"#_4-3-2-登出","children":[]},{"level":3,"title":"4.3.3 首页","slug":"_4-3-3-首页","link":"#_4-3-3-首页","children":[]},{"level":3,"title":"4.3.4 用户分页","slug":"_4-3-4-用户分页","link":"#_4-3-4-用户分页","children":[]},{"level":3,"title":"4.3.5 用户查询","slug":"_4-3-5-用户查询","link":"#_4-3-5-用户查询","children":[]},{"level":3,"title":"4.3.6 用户编辑","slug":"_4-3-6-用户编辑","link":"#_4-3-6-用户编辑","children":[]},{"level":3,"title":"4.3.7 用户删除","slug":"_4-3-7-用户删除","link":"#_4-3-7-用户删除","children":[]},{"level":3,"title":"4.3.8 用户状态修改","slug":"_4-3-8-用户状态修改","link":"#_4-3-8-用户状态修改","children":[]},{"level":3,"title":"4.3.9 学科列表","slug":"_4-3-9-学科列表","link":"#_4-3-9-学科列表","children":[]},{"level":3,"title":"4.3.10 学科分页","slug":"_4-3-10-学科分页","link":"#_4-3-10-学科分页","children":[]},{"level":3,"title":"4.3.11 学科查询","slug":"_4-3-11-学科查询","link":"#_4-3-11-学科查询","children":[]},{"level":3,"title":"4.3.12 学科编辑","slug":"_4-3-12-学科编辑","link":"#_4-3-12-学科编辑","children":[]},{"level":3,"title":"4.3.13 学科删除","slug":"_4-3-13-学科删除","link":"#_4-3-13-学科删除","children":[]},{"level":3,"title":"4.3.14 试卷分页","slug":"_4-3-14-试卷分页","link":"#_4-3-14-试卷分页","children":[]},{"level":3,"title":"4.3.15 试卷查询","slug":"_4-3-15-试卷查询","link":"#_4-3-15-试卷查询","children":[]},{"level":3,"title":"4.3.16 试卷编辑","slug":"_4-3-16-试卷编辑","link":"#_4-3-16-试卷编辑","children":[]},{"level":3,"title":"4.3.17 试卷删除","slug":"_4-3-17-试卷删除","link":"#_4-3-17-试卷删除","children":[]},{"level":3,"title":"4.3.18 任务试卷分页","slug":"_4-3-18-任务试卷分页","link":"#_4-3-18-任务试卷分页","children":[]},{"level":3,"title":"4.3.19 题目分页","slug":"_4-3-19-题目分页","link":"#_4-3-19-题目分页","children":[]},{"level":3,"title":"4.3.20 题目查询","slug":"_4-3-20-题目查询","link":"#_4-3-20-题目查询","children":[]},{"level":3,"title":"4.3.21 题目编辑","slug":"_4-3-21-题目编辑","link":"#_4-3-21-题目编辑","children":[]},{"level":3,"title":"4.3.22 题目删除","slug":"_4-3-22-题目删除","link":"#_4-3-22-题目删除","children":[]},{"level":3,"title":"4.3.23 任务分页","slug":"_4-3-23-任务分页","link":"#_4-3-23-任务分页","children":[]},{"level":3,"title":"4.3.24 任务查询","slug":"_4-3-24-任务查询","link":"#_4-3-24-任务查询","children":[]},{"level":3,"title":"4.3.25 任务编辑","slug":"_4-3-25-任务编辑","link":"#_4-3-25-任务编辑","children":[]},{"level":3,"title":"4.3.26 任务删除","slug":"_4-3-26-任务删除","link":"#_4-3-26-任务删除","children":[]},{"level":3,"title":"4.3.27 消息分页","slug":"_4-3-27-消息分页","link":"#_4-3-27-消息分页","children":[]},{"level":3,"title":"4.3.28 消息发送","slug":"_4-3-28-消息发送","link":"#_4-3-28-消息发送","children":[]},{"level":3,"title":"4.3.29 答卷分页","slug":"_4-3-29-答卷分页","link":"#_4-3-29-答卷分页","children":[]},{"level":3,"title":"4.3.30 用户日志","slug":"_4-3-30-用户日志","link":"#_4-3-30-用户日志","children":[]},{"level":3,"title":"4.3.31 当前用户信息","slug":"_4-3-31-当前用户信息","link":"#_4-3-31-当前用户信息","children":[]},{"level":3,"title":"4.3.32 用户信息更新","slug":"_4-3-32-用户信息更新","link":"#_4-3-32-用户信息更新","children":[]},{"level":3,"title":"4.3.32 用户信息更新","slug":"_4-3-32-用户信息更新-1","link":"#_4-3-32-用户信息更新-1","children":[]},{"level":3,"title":"4.3.33 图片上传","slug":"_4-3-33-图片上传","link":"#_4-3-33-图片上传","children":[]},{"level":3,"title":"4.3.34 个人信息修改","slug":"_4-3-34-个人信息修改","link":"#_4-3-34-个人信息修改","children":[]}],"git":{"updatedTime":1726100103000,"contributors":[{"name":"mindskip","email":"mindskip@qq.com","commits":51},{"name":"思维跳跃科技","email":"mindskip@qq.com","commits":12}]},"filePathRelative":"guide/admin.md"}');export{l as data}; +const l=JSON.parse('{"key":"v-55bcf8d6","path":"/guide/admin.html","title":"4.3 管理端","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":3,"title":"4.3.1 登录","slug":"_4-3-1-登录","link":"#_4-3-1-登录","children":[]},{"level":3,"title":"4.3.2 登出","slug":"_4-3-2-登出","link":"#_4-3-2-登出","children":[]},{"level":3,"title":"4.3.3 首页","slug":"_4-3-3-首页","link":"#_4-3-3-首页","children":[]},{"level":3,"title":"4.3.4 用户分页","slug":"_4-3-4-用户分页","link":"#_4-3-4-用户分页","children":[]},{"level":3,"title":"4.3.5 用户查询","slug":"_4-3-5-用户查询","link":"#_4-3-5-用户查询","children":[]},{"level":3,"title":"4.3.6 用户编辑","slug":"_4-3-6-用户编辑","link":"#_4-3-6-用户编辑","children":[]},{"level":3,"title":"4.3.7 用户删除","slug":"_4-3-7-用户删除","link":"#_4-3-7-用户删除","children":[]},{"level":3,"title":"4.3.8 用户状态修改","slug":"_4-3-8-用户状态修改","link":"#_4-3-8-用户状态修改","children":[]},{"level":3,"title":"4.3.9 学科列表","slug":"_4-3-9-学科列表","link":"#_4-3-9-学科列表","children":[]},{"level":3,"title":"4.3.10 学科分页","slug":"_4-3-10-学科分页","link":"#_4-3-10-学科分页","children":[]},{"level":3,"title":"4.3.11 学科查询","slug":"_4-3-11-学科查询","link":"#_4-3-11-学科查询","children":[]},{"level":3,"title":"4.3.12 学科编辑","slug":"_4-3-12-学科编辑","link":"#_4-3-12-学科编辑","children":[]},{"level":3,"title":"4.3.13 学科删除","slug":"_4-3-13-学科删除","link":"#_4-3-13-学科删除","children":[]},{"level":3,"title":"4.3.14 试卷分页","slug":"_4-3-14-试卷分页","link":"#_4-3-14-试卷分页","children":[]},{"level":3,"title":"4.3.15 试卷查询","slug":"_4-3-15-试卷查询","link":"#_4-3-15-试卷查询","children":[]},{"level":3,"title":"4.3.16 试卷编辑","slug":"_4-3-16-试卷编辑","link":"#_4-3-16-试卷编辑","children":[]},{"level":3,"title":"4.3.17 试卷删除","slug":"_4-3-17-试卷删除","link":"#_4-3-17-试卷删除","children":[]},{"level":3,"title":"4.3.18 任务试卷分页","slug":"_4-3-18-任务试卷分页","link":"#_4-3-18-任务试卷分页","children":[]},{"level":3,"title":"4.3.19 题目分页","slug":"_4-3-19-题目分页","link":"#_4-3-19-题目分页","children":[]},{"level":3,"title":"4.3.20 题目查询","slug":"_4-3-20-题目查询","link":"#_4-3-20-题目查询","children":[]},{"level":3,"title":"4.3.21 题目编辑","slug":"_4-3-21-题目编辑","link":"#_4-3-21-题目编辑","children":[]},{"level":3,"title":"4.3.22 题目删除","slug":"_4-3-22-题目删除","link":"#_4-3-22-题目删除","children":[]},{"level":3,"title":"4.3.23 任务分页","slug":"_4-3-23-任务分页","link":"#_4-3-23-任务分页","children":[]},{"level":3,"title":"4.3.24 任务查询","slug":"_4-3-24-任务查询","link":"#_4-3-24-任务查询","children":[]},{"level":3,"title":"4.3.25 任务编辑","slug":"_4-3-25-任务编辑","link":"#_4-3-25-任务编辑","children":[]},{"level":3,"title":"4.3.26 任务删除","slug":"_4-3-26-任务删除","link":"#_4-3-26-任务删除","children":[]},{"level":3,"title":"4.3.27 消息分页","slug":"_4-3-27-消息分页","link":"#_4-3-27-消息分页","children":[]},{"level":3,"title":"4.3.28 消息发送","slug":"_4-3-28-消息发送","link":"#_4-3-28-消息发送","children":[]},{"level":3,"title":"4.3.29 答卷分页","slug":"_4-3-29-答卷分页","link":"#_4-3-29-答卷分页","children":[]},{"level":3,"title":"4.3.30 用户日志","slug":"_4-3-30-用户日志","link":"#_4-3-30-用户日志","children":[]},{"level":3,"title":"4.3.31 当前用户信息","slug":"_4-3-31-当前用户信息","link":"#_4-3-31-当前用户信息","children":[]},{"level":3,"title":"4.3.32 用户信息更新","slug":"_4-3-32-用户信息更新","link":"#_4-3-32-用户信息更新","children":[]},{"level":3,"title":"4.3.32 用户信息更新","slug":"_4-3-32-用户信息更新-1","link":"#_4-3-32-用户信息更新-1","children":[]},{"level":3,"title":"4.3.33 图片上传","slug":"_4-3-33-图片上传","link":"#_4-3-33-图片上传","children":[]},{"level":3,"title":"4.3.34 个人信息修改","slug":"_4-3-34-个人信息修改","link":"#_4-3-34-个人信息修改","children":[]}],"git":{"updatedTime":1727171446000,"contributors":[{"name":"mindskip","email":"mindskip@qq.com","commits":51},{"name":"思维跳跃科技","email":"mindskip@qq.com","commits":13}]},"filePathRelative":"guide/admin.md"}');export{l as data}; diff --git a/docs/assets/admin.html.eeeebf5a.js b/docs/assets/admin.html.b49cbbe5.js similarity index 98% rename from docs/assets/admin.html.eeeebf5a.js rename to docs/assets/admin.html.b49cbbe5.js index c9440b79..a542f70b 100644 --- a/docs/assets/admin.html.eeeebf5a.js +++ b/docs/assets/admin.html.b49cbbe5.js @@ -1,4 +1,4 @@ -import{_ as e,o as i,c as n,e as u}from"./app.d00a1887.js";const l={},d=u(`

4.3 管理端

4.3.1 登录

{
+import{_ as e,o as i,c as n,e as u}from"./app.ee529b4c.js";const l={},d=u(`

4.3 管理端

4.3.1 登录

  • 接口地址:/api/user/login
  • 请求参数:
{
     "userName": "admin",  //用户名
     "password": "",  //密码
     "remember": false  //记住我
@@ -152,7 +152,7 @@ import{_ as e,o as i,c as n,e as u}from"./app.d00a1887.js";const l={},d=u(`

4.3.12 学科编辑

  • 接口地址:/api/admin/education/subject/edit
  • 请求参数:
{
-    "id": 96,
+    "id": 82,
     "name": "数学",  //学科名称
     "level": 2,   //年级
     "levelName": "二年级"  //年级名称
@@ -221,7 +221,7 @@ import{_ as e,o as i,c as n,e as u}from"./app.d00a1887.js";const l={},d=u(`

4.3.16 试卷编辑

  • 接口地址:/api/admin/exam/paper/edit
  • 请求参数:
{
-    "id": 96,  //试卷id
+    "id": 82,  //试卷id
     "level": 1,  //年级
     "subjectId": 1,  //学科
     "paperType": 6,  //试卷类型
@@ -282,7 +282,7 @@ import{_ as e,o as i,c as n,e as u}from"./app.d00a1887.js";const l={},d=u(`

4.3.21 题目编辑

  • 接口地址:/api/admin/question/edit
  • 请求参数:
{
-    "id": 96, //题目id
+    "id": 82, //题目id
     "questionType": 5, //题型
     "subjectId": 1,  //学科
     "title": "默写咏鹅",   //题干
@@ -472,7 +472,7 @@ import{_ as e,o as i,c as n,e as u}from"./app.d00a1887.js";const l={},d=u(`

4.3.25 任务编辑

  • 接口地址:/api/admin/task/edit
  • 请求参数:
{
-    "id": 96,
+    "id": 82,
     "gradeLevel": 1,
     "title": "中级任务",
     "paperItems": [
         {
-            "id": 96,  //试卷id
+            "id": 82,  //试卷id
             "name": "中级任务一",  //试卷名称
             "questionCount": 5,  //题目数量
             "score": 180,  //试卷分数
@@ -527,12 +527,12 @@ import{_ as e,o as i,c as n,e as u}from"./app.d00a1887.js";const l={},d=u(`

4.3.32 用户信息更新

  • 接口地址:/api/admin/user/update
  • 请求参数:
{
-    "id": 96,  //用户id
+    "id": 82,  //用户id
     "userUuid": "52045f5f-a13f-4ccc-93dd-f7ee8270ad4c", //用户标识
     "userName": "admin", //用户名
     "realName": "管理员", //真实姓名
@@ -702,7 +702,7 @@ import{_ as e,o as i,c as n,e as u}from"./app.d00a1887.js";const l={},d=u(`

4.3.34 个人信息修改

  • 接口地址:/api/admin/user/update
  • 请求参数:
{
-    "id": 96,
+    "id": 82,
     "userUuid": "52045f5f-a13f-4ccc-93dd-f7ee8270ad4c",  //用户uuid
     "userName": "admin", //用户名
     "realName": "管理员", //真实姓名
diff --git a/docs/assets/app.d00a1887.js b/docs/assets/app.ee529b4c.js
similarity index 99%
rename from docs/assets/app.d00a1887.js
rename to docs/assets/app.ee529b4c.js
index d863efd4..f59556a8 100644
--- a/docs/assets/app.d00a1887.js
+++ b/docs/assets/app.ee529b4c.js
@@ -1,4 +1,4 @@
-const Bl="modulepreload",zl=function(e){return"/xzs-mysql/"+e},qo={},Te=function(t,n,r){return!n||n.length===0?t():Promise.all(n.map(o=>{if(o=zl(o),o in qo)return;qo[o]=!0;const s=o.endsWith(".css"),i=s?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${o}"]${i}`))return;const l=document.createElement("link");if(l.rel=s?"stylesheet":Bl,s||(l.as="script",l.crossOrigin=""),l.href=o,document.head.appendChild(l),s)return new Promise((a,u)=>{l.addEventListener("load",a),l.addEventListener("error",()=>u(new Error(`Unable to preload CSS for ${o}`)))})})).then(()=>t())},jl={"v-8daa1a0e":()=>Te(()=>import("./index.html.aa5f7d07.js"),[]).then(({data:e})=>e),"v-55bcf8d6":()=>Te(()=>import("./admin.html.b4f327dd.js"),[]).then(({data:e})=>e),"v-7dc58ad2":()=>Te(()=>import("./database.html.d0f44a34.js"),[]).then(({data:e})=>e),"v-8a14f834":()=>Te(()=>import("./deploy.html.4d7a3964.js"),[]).then(({data:e})=>e),"v-745beb88":()=>Te(()=>import("./develop.html.f3fd5729.js"),[]).then(({data:e})=>e),"v-5c93668f":()=>Te(()=>import("./feature.html.261d99f8.js"),[]).then(({data:e})=>e),"v-e6eb79d8":()=>Te(()=>import("./skill.html.a2155b8b.js"),[]).then(({data:e})=>e),"v-1362226a":()=>Te(()=>import("./student.html.79831c63.js"),[]).then(({data:e})=>e),"v-676a79ac":()=>Te(()=>import("./video.html.00e64dae.js"),[]).then(({data:e})=>e),"v-45a87c2c":()=>Te(()=>import("./wx.html.7aefa0b3.js"),[]).then(({data:e})=>e),"v-3706649a":()=>Te(()=>import("./404.html.c3e557d0.js"),[]).then(({data:e})=>e)};function co(e,t){const n=Object.create(null),r=e.split(",");for(let o=0;o!!n[o.toLowerCase()]:o=>!!n[o]}function Hn(e){if(X(e)){const t={};for(let n=0;n{if(n){const r=n.split(Kl);r.length>1&&(t[r[0].trim()]=r[1].trim())}}),t}function qe(e){let t="";if(me(e))t=e;else if(X(e))for(let n=0;nme(e)?e:e==null?"":X(e)||xe(e)&&(e.toString===ci||!se(e.toString))?JSON.stringify(e,ii,2):String(e),ii=(e,t)=>t&&t.__v_isRef?ii(e,t.value):on(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[r,o])=>(n[`${r} =>`]=o,n),{})}:li(t)?{[`Set(${t.size})`]:[...t.values()]}:xe(t)&&!X(t)&&!ui(t)?String(t):t,Ee={},rn=[],st=()=>{},Yl=()=>!1,Gl=/^on[^a-z]/,Dn=e=>Gl.test(e),uo=e=>e.startsWith("onUpdate:"),He=Object.assign,fo=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},Jl=Object.prototype.hasOwnProperty,ue=(e,t)=>Jl.call(e,t),X=Array.isArray,on=e=>mr(e)==="[object Map]",li=e=>mr(e)==="[object Set]",se=e=>typeof e=="function",me=e=>typeof e=="string",ho=e=>typeof e=="symbol",xe=e=>e!==null&&typeof e=="object",ai=e=>xe(e)&&se(e.then)&&se(e.catch),ci=Object.prototype.toString,mr=e=>ci.call(e),Zl=e=>mr(e).slice(8,-1),ui=e=>mr(e)==="[object Object]",po=e=>me(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Ln=co(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),gr=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},Xl=/-(\w)/g,ft=gr(e=>e.replace(Xl,(t,n)=>n?n.toUpperCase():"")),ea=/\B([A-Z])/g,Gt=gr(e=>e.replace(ea,"-$1").toLowerCase()),vr=gr(e=>e.charAt(0).toUpperCase()+e.slice(1)),kr=gr(e=>e?`on${vr(e)}`:""),An=(e,t)=>!Object.is(e,t),Ar=(e,t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})},mo=e=>{const t=parseFloat(e);return isNaN(t)?e:t};let Wo;const ta=()=>Wo||(Wo=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});let Ve;class na{constructor(t=!1){this.detached=t,this.active=!0,this.effects=[],this.cleanups=[],this.parent=Ve,!t&&Ve&&(this.index=(Ve.scopes||(Ve.scopes=[])).push(this)-1)}run(t){if(this.active){const n=Ve;try{return Ve=this,t()}finally{Ve=n}}}on(){Ve=this}off(){Ve=this.parent}stop(t){if(this.active){let n,r;for(n=0,r=this.effects.length;n{const t=new Set(e);return t.w=0,t.n=0,t},fi=e=>(e.w&kt)>0,di=e=>(e.n&kt)>0,ia=({deps:e})=>{if(e.length)for(let t=0;t{const{deps:t}=e;if(t.length){let n=0;for(let r=0;r{(c==="length"||c>=a)&&l.push(u)})}else switch(n!==void 0&&l.push(i.get(n)),t){case"add":X(e)?po(n)&&l.push(i.get("length")):(l.push(i.get(Vt)),on(e)&&l.push(i.get(Vr)));break;case"delete":X(e)||(l.push(i.get(Vt)),on(e)&&l.push(i.get(Vr)));break;case"set":on(e)&&l.push(i.get(Vt));break}if(l.length===1)l[0]&&Qr(l[0]);else{const a=[];for(const u of l)u&&a.push(...u);Qr(go(a))}}function Qr(e,t){const n=X(e)?e:[...e];for(const r of n)r.computed&&Qo(r);for(const r of n)r.computed||Qo(r)}function Qo(e,t){(e!==rt||e.allowRecurse)&&(e.scheduler?e.scheduler():e.run())}const aa=co("__proto__,__v_isRef,__isVue"),mi=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(ho)),ca=_o(),ua=_o(!1,!0),fa=_o(!0),Yo=da();function da(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...n){const r=he(this);for(let s=0,i=this.length;s{e[t]=function(...n){mn();const r=he(this)[t].apply(this,n);return gn(),r}}),e}function _o(e=!1,t=!1){return function(r,o,s){if(o==="__v_isReactive")return!e;if(o==="__v_isReadonly")return e;if(o==="__v_isShallow")return t;if(o==="__v_raw"&&s===(e?t?Oa:yi:t?bi:_i).get(r))return r;const i=X(r);if(!e&&i&&ue(Yo,o))return Reflect.get(Yo,o,s);const l=Reflect.get(r,o,s);return(ho(o)?mi.has(o):aa(o))||(e||Ye(r,"get",o),t)?l:Ie(l)?i&&po(o)?l:l.value:xe(l)?e?wo(l):vn(l):l}}const ha=gi(),pa=gi(!0);function gi(e=!1){return function(n,r,o,s){let i=n[r];if(cn(i)&&Ie(i)&&!Ie(o))return!1;if(!e&&(!rr(o)&&!cn(o)&&(i=he(i),o=he(o)),!X(n)&&Ie(i)&&!Ie(o)))return i.value=o,!0;const l=X(n)&&po(r)?Number(r)e,_r=e=>Reflect.getPrototypeOf(e);function Un(e,t,n=!1,r=!1){e=e.__v_raw;const o=he(e),s=he(t);n||(t!==s&&Ye(o,"get",t),Ye(o,"get",s));const{has:i}=_r(o),l=r?bo:n?Co:Rn;if(i.call(o,t))return l(e.get(t));if(i.call(o,s))return l(e.get(s));e!==o&&e.get(t)}function Kn(e,t=!1){const n=this.__v_raw,r=he(n),o=he(e);return t||(e!==o&&Ye(r,"has",e),Ye(r,"has",o)),e===o?n.has(e):n.has(e)||n.has(o)}function qn(e,t=!1){return e=e.__v_raw,!t&&Ye(he(e),"iterate",Vt),Reflect.get(e,"size",e)}function Go(e){e=he(e);const t=he(this);return _r(t).has.call(t,e)||(t.add(e),vt(t,"add",e,e)),this}function Jo(e,t){t=he(t);const n=he(this),{has:r,get:o}=_r(n);let s=r.call(n,e);s||(e=he(e),s=r.call(n,e));const i=o.call(n,e);return n.set(e,t),s?An(t,i)&&vt(n,"set",e,t):vt(n,"add",e,t),this}function Zo(e){const t=he(this),{has:n,get:r}=_r(t);let o=n.call(t,e);o||(e=he(e),o=n.call(t,e)),r&&r.call(t,e);const s=t.delete(e);return o&&vt(t,"delete",e,void 0),s}function Xo(){const e=he(this),t=e.size!==0,n=e.clear();return t&&vt(e,"clear",void 0,void 0),n}function Wn(e,t){return function(r,o){const s=this,i=s.__v_raw,l=he(i),a=t?bo:e?Co:Rn;return!e&&Ye(l,"iterate",Vt),i.forEach((u,c)=>r.call(o,a(u),a(c),s))}}function Vn(e,t,n){return function(...r){const o=this.__v_raw,s=he(o),i=on(s),l=e==="entries"||e===Symbol.iterator&&i,a=e==="keys"&&i,u=o[e](...r),c=n?bo:t?Co:Rn;return!t&&Ye(s,"iterate",a?Vr:Vt),{next(){const{value:d,done:h}=u.next();return h?{value:d,done:h}:{value:l?[c(d[0]),c(d[1])]:c(d),done:h}},[Symbol.iterator](){return this}}}}function wt(e){return function(...t){return e==="delete"?!1:this}}function ya(){const e={get(s){return Un(this,s)},get size(){return qn(this)},has:Kn,add:Go,set:Jo,delete:Zo,clear:Xo,forEach:Wn(!1,!1)},t={get(s){return Un(this,s,!1,!0)},get size(){return qn(this)},has:Kn,add:Go,set:Jo,delete:Zo,clear:Xo,forEach:Wn(!1,!0)},n={get(s){return Un(this,s,!0)},get size(){return qn(this,!0)},has(s){return Kn.call(this,s,!0)},add:wt("add"),set:wt("set"),delete:wt("delete"),clear:wt("clear"),forEach:Wn(!0,!1)},r={get(s){return Un(this,s,!0,!0)},get size(){return qn(this,!0)},has(s){return Kn.call(this,s,!0)},add:wt("add"),set:wt("set"),delete:wt("delete"),clear:wt("clear"),forEach:Wn(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(s=>{e[s]=Vn(s,!1,!1),n[s]=Vn(s,!0,!1),t[s]=Vn(s,!1,!0),r[s]=Vn(s,!0,!0)}),[e,n,t,r]}const[wa,Ea,Ca,xa]=ya();function yo(e,t){const n=t?e?xa:Ca:e?Ea:wa;return(r,o,s)=>o==="__v_isReactive"?!e:o==="__v_isReadonly"?e:o==="__v_raw"?r:Reflect.get(ue(n,o)&&o in r?n:r,o,s)}const La={get:yo(!1,!1)},Ta={get:yo(!1,!0)},Sa={get:yo(!0,!1)},_i=new WeakMap,bi=new WeakMap,yi=new WeakMap,Oa=new WeakMap;function Pa(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function ka(e){return e.__v_skip||!Object.isExtensible(e)?0:Pa(Zl(e))}function vn(e){return cn(e)?e:Eo(e,!1,vi,La,_i)}function Aa(e){return Eo(e,!1,ba,Ta,bi)}function wo(e){return Eo(e,!0,_a,Sa,yi)}function Eo(e,t,n,r,o){if(!xe(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const s=o.get(e);if(s)return s;const i=ka(e);if(i===0)return e;const l=new Proxy(e,i===2?r:n);return o.set(e,l),l}function sn(e){return cn(e)?sn(e.__v_raw):!!(e&&e.__v_isReactive)}function cn(e){return!!(e&&e.__v_isReadonly)}function rr(e){return!!(e&&e.__v_isShallow)}function wi(e){return sn(e)||cn(e)}function he(e){const t=e&&e.__v_raw;return t?he(t):e}function Ei(e){return nr(e,"__v_skip",!0),e}const Rn=e=>xe(e)?vn(e):e,Co=e=>xe(e)?wo(e):e;function Ci(e){St&&rt&&(e=he(e),pi(e.dep||(e.dep=go())))}function xi(e,t){e=he(e),e.dep&&Qr(e.dep)}function Ie(e){return!!(e&&e.__v_isRef===!0)}function Ce(e){return Ti(e,!1)}function Li(e){return Ti(e,!0)}function Ti(e,t){return Ie(e)?e:new Ra(e,t)}class Ra{constructor(t,n){this.__v_isShallow=n,this.dep=void 0,this.__v_isRef=!0,this._rawValue=n?t:he(t),this._value=n?t:Rn(t)}get value(){return Ci(this),this._value}set value(t){const n=this.__v_isShallow||rr(t)||cn(t);t=n?t:he(t),An(t,this._rawValue)&&(this._rawValue=t,this._value=n?t:Rn(t),xi(this))}}function k(e){return Ie(e)?e.value:e}const $a={get:(e,t,n)=>k(Reflect.get(e,t,n)),set:(e,t,n,r)=>{const o=e[t];return Ie(o)&&!Ie(n)?(o.value=n,!0):Reflect.set(e,t,n,r)}};function Si(e){return sn(e)?e:new Proxy(e,$a)}function xo(e){const t=X(e)?new Array(e.length):{};for(const n in e)t[n]=Na(e,n);return t}class Ia{constructor(t,n,r){this._object=t,this._key=n,this._defaultValue=r,this.__v_isRef=!0}get value(){const t=this._object[this._key];return t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}}function Na(e,t,n){const r=e[t];return Ie(r)?r:new Ia(e,t,n)}var Oi;class Ma{constructor(t,n,r,o){this._setter=n,this.dep=void 0,this.__v_isRef=!0,this[Oi]=!1,this._dirty=!0,this.effect=new vo(t,()=>{this._dirty||(this._dirty=!0,xi(this))}),this.effect.computed=this,this.effect.active=this._cacheable=!o,this.__v_isReadonly=r}get value(){const t=he(this);return Ci(t),(t._dirty||!t._cacheable)&&(t._dirty=!1,t._value=t.effect.run()),t._value}set value(t){this._setter(t)}}Oi="__v_isReadonly";function Ha(e,t,n=!1){let r,o;const s=se(e);return s?(r=e,o=st):(r=e.get,o=e.set),new Ma(r,o,s||!o,n)}function Ot(e,t,n,r){let o;try{o=r?e(...r):e()}catch(s){Fn(s,t,n)}return o}function Xe(e,t,n,r){if(se(e)){const s=Ot(e,t,n,r);return s&&ai(s)&&s.catch(i=>{Fn(i,t,n)}),s}const o=[];for(let s=0;s>>1;In(Be[r])ct&&Be.splice(t,1)}function za(e){X(e)?ln.push(...e):(!pt||!pt.includes(e,e.allowRecurse?zt+1:zt))&&ln.push(e),ki()}function es(e,t=$n?ct+1:0){for(;tIn(n)-In(r)),zt=0;zte.id==null?1/0:e.id,ja=(e,t)=>{const n=In(e)-In(t);if(n===0){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return n};function Ai(e){Yr=!1,$n=!0,Be.sort(ja);const t=st;try{for(ct=0;ctme(m)?m.trim():m)),d&&(o=n.map(mo))}let l,a=r[l=kr(t)]||r[l=kr(ft(t))];!a&&s&&(a=r[l=kr(Gt(t))]),a&&Xe(a,e,6,o);const u=r[l+"Once"];if(u){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,Xe(u,e,6,o)}}function Ri(e,t,n=!1){const r=t.emitsCache,o=r.get(e);if(o!==void 0)return o;const s=e.emits;let i={},l=!1;if(!se(e)){const a=u=>{const c=Ri(u,t,!0);c&&(l=!0,He(i,c))};!n&&t.mixins.length&&t.mixins.forEach(a),e.extends&&a(e.extends),e.mixins&&e.mixins.forEach(a)}return!s&&!l?(xe(e)&&r.set(e,null),null):(X(s)?s.forEach(a=>i[a]=null):He(i,s),xe(e)&&r.set(e,i),i)}function wr(e,t){return!e||!Dn(t)?!1:(t=t.slice(2).replace(/Once$/,""),ue(e,t[0].toLowerCase()+t.slice(1))||ue(e,Gt(t))||ue(e,t))}let Me=null,$i=null;function sr(e){const t=Me;return Me=e,$i=e&&e.type.__scopeId||null,t}function Ne(e,t=Me,n){if(!t||e._n)return e;const r=(...o)=>{r._d&&us(-1);const s=sr(t);let i;try{i=e(...o)}finally{sr(s),r._d&&us(1)}return i};return r._n=!0,r._c=!0,r._d=!0,r}function Rr(e){const{type:t,vnode:n,proxy:r,withProxy:o,props:s,propsOptions:[i],slots:l,attrs:a,emit:u,render:c,renderCache:d,data:h,setupState:m,ctx:_,inheritAttrs:E}=e;let T,g;const b=sr(e);try{if(n.shapeFlag&4){const M=o||r;T=nt(c.call(M,M,d,s,m,h,_)),g=a}else{const M=t;T=nt(M.length>1?M(s,{attrs:a,slots:l,emit:u}):M(s,null)),g=t.props?a:Ka(a)}}catch(M){On.length=0,Fn(M,e,1),T=te(Qe)}let C=T;if(g&&E!==!1){const M=Object.keys(g),{shapeFlag:K}=C;M.length&&K&7&&(i&&M.some(uo)&&(g=qa(g,i)),C=Rt(C,g))}return n.dirs&&(C=Rt(C),C.dirs=C.dirs?C.dirs.concat(n.dirs):n.dirs),n.transition&&(C.transition=n.transition),T=C,sr(b),T}const Ka=e=>{let t;for(const n in e)(n==="class"||n==="style"||Dn(n))&&((t||(t={}))[n]=e[n]);return t},qa=(e,t)=>{const n={};for(const r in e)(!uo(r)||!(r.slice(9)in t))&&(n[r]=e[r]);return n};function Wa(e,t,n){const{props:r,children:o,component:s}=e,{props:i,children:l,patchFlag:a}=t,u=s.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&a>=0){if(a&1024)return!0;if(a&16)return r?ts(r,i,u):!!i;if(a&8){const c=t.dynamicProps;for(let d=0;de.__isSuspense;function Ii(e,t){t&&t.pendingBranch?X(e)?t.effects.push(...e):t.effects.push(e):za(e)}function Qt(e,t){if(Ae){let n=Ae.provides;const r=Ae.parent&&Ae.parent.provides;r===n&&(n=Ae.provides=Object.create(r)),n[e]=t}}function $e(e,t,n=!1){const r=Ae||Me;if(r){const o=r.parent==null?r.vnode.appContext&&r.vnode.appContext.provides:r.parent.provides;if(o&&e in o)return o[e];if(arguments.length>1)return n&&se(t)?t.call(r.proxy):t}}function Ya(e,t){return To(e,null,t)}const Qn={};function ut(e,t,n){return To(e,t,n)}function To(e,t,{immediate:n,deep:r,flush:o,onTrack:s,onTrigger:i}=Ee){const l=Ae;let a,u=!1,c=!1;if(Ie(e)?(a=()=>e.value,u=rr(e)):sn(e)?(a=()=>e,r=!0):X(e)?(c=!0,u=e.some(C=>sn(C)||rr(C)),a=()=>e.map(C=>{if(Ie(C))return C.value;if(sn(C))return qt(C);if(se(C))return Ot(C,l,2)})):se(e)?t?a=()=>Ot(e,l,2):a=()=>{if(!(l&&l.isUnmounted))return d&&d(),Xe(e,l,3,[h])}:a=st,t&&r){const C=a;a=()=>qt(C())}let d,h=C=>{d=g.onStop=()=>{Ot(C,l,4)}},m;if(dn)if(h=st,t?n&&Xe(t,l,3,[a(),c?[]:void 0,h]):a(),o==="sync"){const C=Uc();m=C.__watcherHandles||(C.__watcherHandles=[])}else return st;let _=c?new Array(e.length).fill(Qn):Qn;const E=()=>{if(!!g.active)if(t){const C=g.run();(r||u||(c?C.some((M,K)=>An(M,_[K])):An(C,_)))&&(d&&d(),Xe(t,l,3,[C,_===Qn?void 0:c&&_[0]===Qn?[]:_,h]),_=C)}else g.run()};E.allowRecurse=!!t;let T;o==="sync"?T=E:o==="post"?T=()=>Ke(E,l&&l.suspense):(E.pre=!0,l&&(E.id=l.uid),T=()=>yr(E));const g=new vo(a,T);t?n?E():_=g.run():o==="post"?Ke(g.run.bind(g),l&&l.suspense):g.run();const b=()=>{g.stop(),l&&l.scope&&fo(l.scope.effects,g)};return m&&m.push(b),b}function Ga(e,t,n){const r=this.proxy,o=me(e)?e.includes(".")?Ni(r,e):()=>r[e]:e.bind(r,r);let s;se(t)?s=t:(s=t.handler,n=t);const i=Ae;fn(this);const l=To(o,s.bind(r),n);return i?fn(i):Yt(),l}function Ni(e,t){const n=t.split(".");return()=>{let r=e;for(let o=0;o{qt(n,t)});else if(ui(e))for(const n in e)qt(e[n],t);return e}function Ja(){const e={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return Ge(()=>{e.isMounted=!0}),Cr(()=>{e.isUnmounting=!0}),e}const Je=[Function,Array],Za={name:"BaseTransition",props:{mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:Je,onEnter:Je,onAfterEnter:Je,onEnterCancelled:Je,onBeforeLeave:Je,onLeave:Je,onAfterLeave:Je,onLeaveCancelled:Je,onBeforeAppear:Je,onAppear:Je,onAfterAppear:Je,onAppearCancelled:Je},setup(e,{slots:t}){const n=Zi(),r=Ja();let o;return()=>{const s=t.default&&Di(t.default(),!0);if(!s||!s.length)return;let i=s[0];if(s.length>1){for(const E of s)if(E.type!==Qe){i=E;break}}const l=he(e),{mode:a}=l;if(r.isLeaving)return $r(i);const u=ns(i);if(!u)return $r(i);const c=Gr(u,l,r,n);Jr(u,c);const d=n.subTree,h=d&&ns(d);let m=!1;const{getTransitionKey:_}=u.type;if(_){const E=_();o===void 0?o=E:E!==o&&(o=E,m=!0)}if(h&&h.type!==Qe&&(!jt(u,h)||m)){const E=Gr(h,l,r,n);if(Jr(h,E),a==="out-in")return r.isLeaving=!0,E.afterLeave=()=>{r.isLeaving=!1,n.update.active!==!1&&n.update()},$r(i);a==="in-out"&&u.type!==Qe&&(E.delayLeave=(T,g,b)=>{const C=Hi(r,h);C[String(h.key)]=h,T._leaveCb=()=>{g(),T._leaveCb=void 0,delete c.delayedLeave},c.delayedLeave=b})}return i}}},Mi=Za;function Hi(e,t){const{leavingVNodes:n}=e;let r=n.get(t.type);return r||(r=Object.create(null),n.set(t.type,r)),r}function Gr(e,t,n,r){const{appear:o,mode:s,persisted:i=!1,onBeforeEnter:l,onEnter:a,onAfterEnter:u,onEnterCancelled:c,onBeforeLeave:d,onLeave:h,onAfterLeave:m,onLeaveCancelled:_,onBeforeAppear:E,onAppear:T,onAfterAppear:g,onAppearCancelled:b}=t,C=String(e.key),M=Hi(n,e),K=(v,Q)=>{v&&Xe(v,r,9,Q)},Z=(v,Q)=>{const j=Q[1];K(v,Q),X(v)?v.every(q=>q.length<=1)&&j():v.length<=1&&j()},P={mode:s,persisted:i,beforeEnter(v){let Q=l;if(!n.isMounted)if(o)Q=E||l;else return;v._leaveCb&&v._leaveCb(!0);const j=M[C];j&&jt(e,j)&&j.el._leaveCb&&j.el._leaveCb(),K(Q,[v])},enter(v){let Q=a,j=u,q=c;if(!n.isMounted)if(o)Q=T||a,j=g||u,q=b||c;else return;let L=!1;const I=v._enterCb=A=>{L||(L=!0,A?K(q,[v]):K(j,[v]),P.delayedLeave&&P.delayedLeave(),v._enterCb=void 0)};Q?Z(Q,[v,I]):I()},leave(v,Q){const j=String(e.key);if(v._enterCb&&v._enterCb(!0),n.isUnmounting)return Q();K(d,[v]);let q=!1;const L=v._leaveCb=I=>{q||(q=!0,Q(),I?K(_,[v]):K(m,[v]),v._leaveCb=void 0,M[j]===e&&delete M[j])};M[j]=e,h?Z(h,[v,L]):L()},clone(v){return Gr(v,t,n,r)}};return P}function $r(e){if(Bn(e))return e=Rt(e),e.children=null,e}function ns(e){return Bn(e)?e.children?e.children[0]:void 0:e}function Jr(e,t){e.shapeFlag&6&&e.component?Jr(e.component.subTree,t):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function Di(e,t=!1,n){let r=[],o=0;for(let s=0;s1)for(let s=0;s!!e.type.__asyncLoader;function tt(e){se(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:r,delay:o=200,timeout:s,suspensible:i=!0,onError:l}=e;let a=null,u,c=0;const d=()=>(c++,a=null,h()),h=()=>{let m;return a||(m=a=t().catch(_=>{if(_=_ instanceof Error?_:new Error(String(_)),l)return new Promise((E,T)=>{l(_,()=>E(d()),()=>T(_),c+1)});throw _}).then(_=>m!==a&&a?a:(_&&(_.__esModule||_[Symbol.toStringTag]==="Module")&&(_=_.default),u=_,_)))};return de({name:"AsyncComponentWrapper",__asyncLoader:h,get __asyncResolved(){return u},setup(){const m=Ae;if(u)return()=>Ir(u,m);const _=b=>{a=null,Fn(b,m,13,!r)};if(i&&m.suspense||dn)return h().then(b=>()=>Ir(b,m)).catch(b=>(_(b),()=>r?te(r,{error:b}):null));const E=Ce(!1),T=Ce(),g=Ce(!!o);return o&&setTimeout(()=>{g.value=!1},o),s!=null&&setTimeout(()=>{if(!E.value&&!T.value){const b=new Error(`Async component timed out after ${s}ms.`);_(b),T.value=b}},s),h().then(()=>{E.value=!0,m.parent&&Bn(m.parent.vnode)&&yr(m.parent.update)}).catch(b=>{_(b),T.value=b}),()=>{if(E.value&&u)return Ir(u,m);if(T.value&&r)return te(r,{error:T.value});if(n&&!g.value)return te(n)}}})}function Ir(e,t){const{ref:n,props:r,children:o,ce:s}=t.vnode,i=te(e,r,o);return i.ref=n,i.ce=s,delete t.vnode.ce,i}const Bn=e=>e.type.__isKeepAlive;function Xa(e,t){Fi(e,"a",t)}function ec(e,t){Fi(e,"da",t)}function Fi(e,t,n=Ae){const r=e.__wdc||(e.__wdc=()=>{let o=n;for(;o;){if(o.isDeactivated)return;o=o.parent}return e()});if(Er(t,r,n),n){let o=n.parent;for(;o&&o.parent;)Bn(o.parent.vnode)&&tc(r,t,n,o),o=o.parent}}function tc(e,t,n,r){const o=Er(t,e,r,!0);xr(()=>{fo(r[t],o)},n)}function Er(e,t,n=Ae,r=!1){if(n){const o=n[e]||(n[e]=[]),s=t.__weh||(t.__weh=(...i)=>{if(n.isUnmounted)return;mn(),fn(n);const l=Xe(t,n,e,i);return Yt(),gn(),l});return r?o.unshift(s):o.push(s),s}}const bt=e=>(t,n=Ae)=>(!dn||e==="sp")&&Er(e,(...r)=>t(...r),n),nc=bt("bm"),Ge=bt("m"),rc=bt("bu"),oc=bt("u"),Cr=bt("bum"),xr=bt("um"),sc=bt("sp"),ic=bt("rtg"),lc=bt("rtc");function ac(e,t=Ae){Er("ec",e,t)}function ir(e,t){const n=Me;if(n===null)return e;const r=Tr(n)||n.proxy,o=e.dirs||(e.dirs=[]);for(let s=0;st(i,l,void 0,s&&s[l]));else{const i=Object.keys(e);o=new Array(i.length);for(let l=0,a=i.length;lcr(t)?!(t.type===Qe||t.type===ye&&!zi(t.children)):!0)?e:null}const Zr=e=>e?Xi(e)?Tr(e)||e.proxy:Zr(e.parent):null,Tn=He(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>Zr(e.parent),$root:e=>Zr(e.root),$emit:e=>e.emit,$options:e=>So(e),$forceUpdate:e=>e.f||(e.f=()=>yr(e.update)),$nextTick:e=>e.n||(e.n=br.bind(e.proxy)),$watch:e=>Ga.bind(e)}),Nr=(e,t)=>e!==Ee&&!e.__isScriptSetup&&ue(e,t),fc={get({_:e},t){const{ctx:n,setupState:r,data:o,props:s,accessCache:i,type:l,appContext:a}=e;let u;if(t[0]!=="$"){const m=i[t];if(m!==void 0)switch(m){case 1:return r[t];case 2:return o[t];case 4:return n[t];case 3:return s[t]}else{if(Nr(r,t))return i[t]=1,r[t];if(o!==Ee&&ue(o,t))return i[t]=2,o[t];if((u=e.propsOptions[0])&&ue(u,t))return i[t]=3,s[t];if(n!==Ee&&ue(n,t))return i[t]=4,n[t];Xr&&(i[t]=0)}}const c=Tn[t];let d,h;if(c)return t==="$attrs"&&Ye(e,"get",t),c(e);if((d=l.__cssModules)&&(d=d[t]))return d;if(n!==Ee&&ue(n,t))return i[t]=4,n[t];if(h=a.config.globalProperties,ue(h,t))return h[t]},set({_:e},t,n){const{data:r,setupState:o,ctx:s}=e;return Nr(o,t)?(o[t]=n,!0):r!==Ee&&ue(r,t)?(r[t]=n,!0):ue(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(s[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:r,appContext:o,propsOptions:s}},i){let l;return!!n[i]||e!==Ee&&ue(e,i)||Nr(t,i)||(l=s[0])&&ue(l,i)||ue(r,i)||ue(Tn,i)||ue(o.config.globalProperties,i)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:ue(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};let Xr=!0;function dc(e){const t=So(e),n=e.proxy,r=e.ctx;Xr=!1,t.beforeCreate&&os(t.beforeCreate,e,"bc");const{data:o,computed:s,methods:i,watch:l,provide:a,inject:u,created:c,beforeMount:d,mounted:h,beforeUpdate:m,updated:_,activated:E,deactivated:T,beforeDestroy:g,beforeUnmount:b,destroyed:C,unmounted:M,render:K,renderTracked:Z,renderTriggered:P,errorCaptured:v,serverPrefetch:Q,expose:j,inheritAttrs:q,components:L,directives:I,filters:A}=t;if(u&&hc(u,r,null,e.appContext.config.unwrapInjectedRef),i)for(const ee in i){const re=i[ee];se(re)&&(r[ee]=re.bind(n))}if(o){const ee=o.call(n,n);xe(ee)&&(e.data=vn(ee))}if(Xr=!0,s)for(const ee in s){const re=s[ee],Oe=se(re)?re.bind(n,n):se(re.get)?re.get.bind(n,n):st,De=!se(re)&&se(re.set)?re.set.bind(n):st,ze=U({get:Oe,set:De});Object.defineProperty(r,ee,{enumerable:!0,configurable:!0,get:()=>ze.value,set:Fe=>ze.value=Fe})}if(l)for(const ee in l)ji(l[ee],r,n,ee);if(a){const ee=se(a)?a.call(n):a;Reflect.ownKeys(ee).forEach(re=>{Qt(re,ee[re])})}c&&os(c,e,"c");function B(ee,re){X(re)?re.forEach(Oe=>ee(Oe.bind(n))):re&&ee(re.bind(n))}if(B(nc,d),B(Ge,h),B(rc,m),B(oc,_),B(Xa,E),B(ec,T),B(ac,v),B(lc,Z),B(ic,P),B(Cr,b),B(xr,M),B(sc,Q),X(j))if(j.length){const ee=e.exposed||(e.exposed={});j.forEach(re=>{Object.defineProperty(ee,re,{get:()=>n[re],set:Oe=>n[re]=Oe})})}else e.exposed||(e.exposed={});K&&e.render===st&&(e.render=K),q!=null&&(e.inheritAttrs=q),L&&(e.components=L),I&&(e.directives=I)}function hc(e,t,n=st,r=!1){X(e)&&(e=eo(e));for(const o in e){const s=e[o];let i;xe(s)?"default"in s?i=$e(s.from||o,s.default,!0):i=$e(s.from||o):i=$e(s),Ie(i)&&r?Object.defineProperty(t,o,{enumerable:!0,configurable:!0,get:()=>i.value,set:l=>i.value=l}):t[o]=i}}function os(e,t,n){Xe(X(e)?e.map(r=>r.bind(t.proxy)):e.bind(t.proxy),t,n)}function ji(e,t,n,r){const o=r.includes(".")?Ni(n,r):()=>n[r];if(me(e)){const s=t[e];se(s)&&ut(o,s)}else if(se(e))ut(o,e.bind(n));else if(xe(e))if(X(e))e.forEach(s=>ji(s,t,n,r));else{const s=se(e.handler)?e.handler.bind(n):t[e.handler];se(s)&&ut(o,s,e)}}function So(e){const t=e.type,{mixins:n,extends:r}=t,{mixins:o,optionsCache:s,config:{optionMergeStrategies:i}}=e.appContext,l=s.get(t);let a;return l?a=l:!o.length&&!n&&!r?a=t:(a={},o.length&&o.forEach(u=>lr(a,u,i,!0)),lr(a,t,i)),xe(t)&&s.set(t,a),a}function lr(e,t,n,r=!1){const{mixins:o,extends:s}=t;s&&lr(e,s,n,!0),o&&o.forEach(i=>lr(e,i,n,!0));for(const i in t)if(!(r&&i==="expose")){const l=pc[i]||n&&n[i];e[i]=l?l(e[i],t[i]):t[i]}return e}const pc={data:ss,props:Dt,emits:Dt,methods:Dt,computed:Dt,beforeCreate:je,created:je,beforeMount:je,mounted:je,beforeUpdate:je,updated:je,beforeDestroy:je,beforeUnmount:je,destroyed:je,unmounted:je,activated:je,deactivated:je,errorCaptured:je,serverPrefetch:je,components:Dt,directives:Dt,watch:gc,provide:ss,inject:mc};function ss(e,t){return t?e?function(){return He(se(e)?e.call(this,this):e,se(t)?t.call(this,this):t)}:t:e}function mc(e,t){return Dt(eo(e),eo(t))}function eo(e){if(X(e)){const t={};for(let n=0;n0)&&!(i&16)){if(i&8){const c=e.vnode.dynamicProps;for(let d=0;d{a=!0;const[h,m]=Ki(d,t,!0);He(i,h),m&&l.push(...m)};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}if(!s&&!a)return xe(e)&&r.set(e,rn),rn;if(X(s))for(let c=0;c-1,m[1]=E<0||_-1||ue(m,"default"))&&l.push(d)}}}const u=[i,l];return xe(e)&&r.set(e,u),u}function is(e){return e[0]!=="$"}function ls(e){const t=e&&e.toString().match(/^\s*function (\w+)/);return t?t[1]:e===null?"null":""}function as(e,t){return ls(e)===ls(t)}function cs(e,t){return X(t)?t.findIndex(n=>as(n,e)):se(t)&&as(t,e)?0:-1}const qi=e=>e[0]==="_"||e==="$stable",Oo=e=>X(e)?e.map(nt):[nt(e)],bc=(e,t,n)=>{if(t._n)return t;const r=Ne((...o)=>Oo(t(...o)),n);return r._c=!1,r},Wi=(e,t,n)=>{const r=e._ctx;for(const o in e){if(qi(o))continue;const s=e[o];if(se(s))t[o]=bc(o,s,r);else if(s!=null){const i=Oo(s);t[o]=()=>i}}},Vi=(e,t)=>{const n=Oo(t);e.slots.default=()=>n},yc=(e,t)=>{if(e.vnode.shapeFlag&32){const n=t._;n?(e.slots=he(t),nr(t,"_",n)):Wi(t,e.slots={})}else e.slots={},t&&Vi(e,t);nr(e.slots,Lr,1)},wc=(e,t,n)=>{const{vnode:r,slots:o}=e;let s=!0,i=Ee;if(r.shapeFlag&32){const l=t._;l?n&&l===1?s=!1:(He(o,t),!n&&l===1&&delete o._):(s=!t.$stable,Wi(t,o)),i=t}else t&&(Vi(e,t),i={default:1});if(s)for(const l in o)!qi(l)&&!(l in i)&&delete o[l]};function Qi(){return{app:null,config:{isNativeTag:Yl,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let Ec=0;function Cc(e,t){return function(r,o=null){se(r)||(r=Object.assign({},r)),o!=null&&!xe(o)&&(o=null);const s=Qi(),i=new Set;let l=!1;const a=s.app={_uid:Ec++,_component:r,_props:o,_container:null,_context:s,_instance:null,version:Kc,get config(){return s.config},set config(u){},use(u,...c){return i.has(u)||(u&&se(u.install)?(i.add(u),u.install(a,...c)):se(u)&&(i.add(u),u(a,...c))),a},mixin(u){return s.mixins.includes(u)||s.mixins.push(u),a},component(u,c){return c?(s.components[u]=c,a):s.components[u]},directive(u,c){return c?(s.directives[u]=c,a):s.directives[u]},mount(u,c,d){if(!l){const h=te(r,o);return h.appContext=s,c&&t?t(h,u):e(h,u,d),l=!0,a._container=u,u.__vue_app__=a,Tr(h.component)||h.component.proxy}},unmount(){l&&(e(null,a._container),delete a._container.__vue_app__)},provide(u,c){return s.provides[u]=c,a}};return a}}function ar(e,t,n,r,o=!1){if(X(e)){e.forEach((h,m)=>ar(h,t&&(X(t)?t[m]:t),n,r,o));return}if(an(r)&&!o)return;const s=r.shapeFlag&4?Tr(r.component)||r.component.proxy:r.el,i=o?null:s,{i:l,r:a}=e,u=t&&t.r,c=l.refs===Ee?l.refs={}:l.refs,d=l.setupState;if(u!=null&&u!==a&&(me(u)?(c[u]=null,ue(d,u)&&(d[u]=null)):Ie(u)&&(u.value=null)),se(a))Ot(a,l,12,[i,c]);else{const h=me(a),m=Ie(a);if(h||m){const _=()=>{if(e.f){const E=h?ue(d,a)?d[a]:c[a]:a.value;o?X(E)&&fo(E,s):X(E)?E.includes(s)||E.push(s):h?(c[a]=[s],ue(d,a)&&(d[a]=c[a])):(a.value=[s],e.k&&(c[e.k]=a.value))}else h?(c[a]=i,ue(d,a)&&(d[a]=i)):m&&(a.value=i,e.k&&(c[e.k]=i))};i?(_.id=-1,Ke(_,n)):_()}}}let Et=!1;const Yn=e=>/svg/.test(e.namespaceURI)&&e.tagName!=="foreignObject",Gn=e=>e.nodeType===8;function xc(e){const{mt:t,p:n,o:{patchProp:r,createText:o,nextSibling:s,parentNode:i,remove:l,insert:a,createComment:u}}=e,c=(g,b)=>{if(!b.hasChildNodes()){n(null,g,b),or(),b._vnode=g;return}Et=!1,d(b.firstChild,g,null,null,null),or(),b._vnode=g,Et&&console.error("Hydration completed but contains mismatches.")},d=(g,b,C,M,K,Z=!1)=>{const P=Gn(g)&&g.data==="[",v=()=>E(g,b,C,M,K,P),{type:Q,ref:j,shapeFlag:q,patchFlag:L}=b;let I=g.nodeType;b.el=g,L===-2&&(Z=!1,b.dynamicChildren=null);let A=null;switch(Q){case un:I!==3?b.children===""?(a(b.el=o(""),i(g),g),A=g):A=v():(g.data!==b.children&&(Et=!0,g.data=b.children),A=s(g));break;case Qe:I!==8||P?A=v():A=s(g);break;case Sn:if(P&&(g=s(g),I=g.nodeType),I===1||I===3){A=g;const ie=!b.children.length;for(let B=0;B{Z=Z||!!b.dynamicChildren;const{type:P,props:v,patchFlag:Q,shapeFlag:j,dirs:q}=b,L=P==="input"&&q||P==="option";if(L||Q!==-1){if(q&&at(b,null,C,"created"),v)if(L||!Z||Q&48)for(const A in v)(L&&A.endsWith("value")||Dn(A)&&!Ln(A))&&r(g,A,null,v[A],!1,void 0,C);else v.onClick&&r(g,"onClick",null,v.onClick,!1,void 0,C);let I;if((I=v&&v.onVnodeBeforeMount)&&Ze(I,C,b),q&&at(b,null,C,"beforeMount"),((I=v&&v.onVnodeMounted)||q)&&Ii(()=>{I&&Ze(I,C,b),q&&at(b,null,C,"mounted")},M),j&16&&!(v&&(v.innerHTML||v.textContent))){let A=m(g.firstChild,b,g,C,M,K,Z);for(;A;){Et=!0;const ie=A;A=A.nextSibling,l(ie)}}else j&8&&g.textContent!==b.children&&(Et=!0,g.textContent=b.children)}return g.nextSibling},m=(g,b,C,M,K,Z,P)=>{P=P||!!b.dynamicChildren;const v=b.children,Q=v.length;for(let j=0;j{const{slotScopeIds:P}=b;P&&(K=K?K.concat(P):P);const v=i(g),Q=m(s(g),b,v,C,M,K,Z);return Q&&Gn(Q)&&Q.data==="]"?s(b.anchor=Q):(Et=!0,a(b.anchor=u("]"),v,Q),Q)},E=(g,b,C,M,K,Z)=>{if(Et=!0,b.el=null,Z){const Q=T(g);for(;;){const j=s(g);if(j&&j!==Q)l(j);else break}}const P=s(g),v=i(g);return l(g),n(null,b,v,P,C,M,Yn(v),K),P},T=g=>{let b=0;for(;g;)if(g=s(g),g&&Gn(g)&&(g.data==="["&&b++,g.data==="]")){if(b===0)return s(g);b--}return g};return[c,d]}const Ke=Ii;function Lc(e){return Tc(e,xc)}function Tc(e,t){const n=ta();n.__VUE__=!0;const{insert:r,remove:o,patchProp:s,createElement:i,createText:l,createComment:a,setText:u,setElementText:c,parentNode:d,nextSibling:h,setScopeId:m=st,insertStaticContent:_}=e,E=(f,p,y,w=null,S=null,R=null,D=!1,$=null,N=!!p.dynamicChildren)=>{if(f===p)return;f&&!jt(f,p)&&(w=H(f),Fe(f,S,R,!0),f=null),p.patchFlag===-2&&(N=!1,p.dynamicChildren=null);const{type:O,ref:Y,shapeFlag:W}=p;switch(O){case un:T(f,p,y,w);break;case Qe:g(f,p,y,w);break;case Sn:f==null&&b(p,y,w,D);break;case ye:L(f,p,y,w,S,R,D,$,N);break;default:W&1?K(f,p,y,w,S,R,D,$,N):W&6?I(f,p,y,w,S,R,D,$,N):(W&64||W&128)&&O.process(f,p,y,w,S,R,D,$,N,ae)}Y!=null&&S&&ar(Y,f&&f.ref,R,p||f,!p)},T=(f,p,y,w)=>{if(f==null)r(p.el=l(p.children),y,w);else{const S=p.el=f.el;p.children!==f.children&&u(S,p.children)}},g=(f,p,y,w)=>{f==null?r(p.el=a(p.children||""),y,w):p.el=f.el},b=(f,p,y,w)=>{[f.el,f.anchor]=_(f.children,p,y,w,f.el,f.anchor)},C=({el:f,anchor:p},y,w)=>{let S;for(;f&&f!==p;)S=h(f),r(f,y,w),f=S;r(p,y,w)},M=({el:f,anchor:p})=>{let y;for(;f&&f!==p;)y=h(f),o(f),f=y;o(p)},K=(f,p,y,w,S,R,D,$,N)=>{D=D||p.type==="svg",f==null?Z(p,y,w,S,R,D,$,N):Q(f,p,S,R,D,$,N)},Z=(f,p,y,w,S,R,D,$)=>{let N,O;const{type:Y,props:W,shapeFlag:G,transition:ne,dirs:le}=f;if(N=f.el=i(f.type,R,W&&W.is,W),G&8?c(N,f.children):G&16&&v(f.children,N,null,w,S,R&&Y!=="foreignObject",D,$),le&&at(f,null,w,"created"),W){for(const ge in W)ge!=="value"&&!Ln(ge)&&s(N,ge,null,W[ge],R,f.children,w,S,z);"value"in W&&s(N,"value",null,W.value),(O=W.onVnodeBeforeMount)&&Ze(O,w,f)}P(N,f,f.scopeId,D,w),le&&at(f,null,w,"beforeMount");const _e=(!S||S&&!S.pendingBranch)&&ne&&!ne.persisted;_e&&ne.beforeEnter(N),r(N,p,y),((O=W&&W.onVnodeMounted)||_e||le)&&Ke(()=>{O&&Ze(O,w,f),_e&&ne.enter(N),le&&at(f,null,w,"mounted")},S)},P=(f,p,y,w,S)=>{if(y&&m(f,y),w)for(let R=0;R{for(let O=N;O{const $=p.el=f.el;let{patchFlag:N,dynamicChildren:O,dirs:Y}=p;N|=f.patchFlag&16;const W=f.props||Ee,G=p.props||Ee;let ne;y&&Nt(y,!1),(ne=G.onVnodeBeforeUpdate)&&Ze(ne,y,p,f),Y&&at(p,f,y,"beforeUpdate"),y&&Nt(y,!0);const le=S&&p.type!=="foreignObject";if(O?j(f.dynamicChildren,O,$,y,w,le,R):D||re(f,p,$,null,y,w,le,R,!1),N>0){if(N&16)q($,p,W,G,y,w,S);else if(N&2&&W.class!==G.class&&s($,"class",null,G.class,S),N&4&&s($,"style",W.style,G.style,S),N&8){const _e=p.dynamicProps;for(let ge=0;ge<_e.length;ge++){const Pe=_e[ge],et=W[Pe],Xt=G[Pe];(Xt!==et||Pe==="value")&&s($,Pe,et,Xt,S,f.children,y,w,z)}}N&1&&f.children!==p.children&&c($,p.children)}else!D&&O==null&&q($,p,W,G,y,w,S);((ne=G.onVnodeUpdated)||Y)&&Ke(()=>{ne&&Ze(ne,y,p,f),Y&&at(p,f,y,"updated")},w)},j=(f,p,y,w,S,R,D)=>{for(let $=0;${if(y!==w){if(y!==Ee)for(const $ in y)!Ln($)&&!($ in w)&&s(f,$,y[$],null,D,p.children,S,R,z);for(const $ in w){if(Ln($))continue;const N=w[$],O=y[$];N!==O&&$!=="value"&&s(f,$,O,N,D,p.children,S,R,z)}"value"in w&&s(f,"value",y.value,w.value)}},L=(f,p,y,w,S,R,D,$,N)=>{const O=p.el=f?f.el:l(""),Y=p.anchor=f?f.anchor:l("");let{patchFlag:W,dynamicChildren:G,slotScopeIds:ne}=p;ne&&($=$?$.concat(ne):ne),f==null?(r(O,y,w),r(Y,y,w),v(p.children,y,Y,S,R,D,$,N)):W>0&&W&64&&G&&f.dynamicChildren?(j(f.dynamicChildren,G,y,S,R,D,$),(p.key!=null||S&&p===S.subTree)&&Yi(f,p,!0)):re(f,p,y,Y,S,R,D,$,N)},I=(f,p,y,w,S,R,D,$,N)=>{p.slotScopeIds=$,f==null?p.shapeFlag&512?S.ctx.activate(p,y,w,D,N):A(p,y,w,S,R,D,N):ie(f,p,N)},A=(f,p,y,w,S,R,D)=>{const $=f.component=Nc(f,w,S);if(Bn(f)&&($.ctx.renderer=ae),Mc($),$.asyncDep){if(S&&S.registerDep($,B),!f.el){const N=$.subTree=te(Qe);g(null,N,p,y)}return}B($,f,p,y,S,R,D)},ie=(f,p,y)=>{const w=p.component=f.component;if(Wa(f,p,y))if(w.asyncDep&&!w.asyncResolved){ee(w,p,y);return}else w.next=p,Ba(w.update),w.update();else p.el=f.el,w.vnode=p},B=(f,p,y,w,S,R,D)=>{const $=()=>{if(f.isMounted){let{next:Y,bu:W,u:G,parent:ne,vnode:le}=f,_e=Y,ge;Nt(f,!1),Y?(Y.el=le.el,ee(f,Y,D)):Y=le,W&&Ar(W),(ge=Y.props&&Y.props.onVnodeBeforeUpdate)&&Ze(ge,ne,Y,le),Nt(f,!0);const Pe=Rr(f),et=f.subTree;f.subTree=Pe,E(et,Pe,d(et.el),H(et),f,S,R),Y.el=Pe.el,_e===null&&Va(f,Pe.el),G&&Ke(G,S),(ge=Y.props&&Y.props.onVnodeUpdated)&&Ke(()=>Ze(ge,ne,Y,le),S)}else{let Y;const{el:W,props:G}=p,{bm:ne,m:le,parent:_e}=f,ge=an(p);if(Nt(f,!1),ne&&Ar(ne),!ge&&(Y=G&&G.onVnodeBeforeMount)&&Ze(Y,_e,p),Nt(f,!0),W&&oe){const Pe=()=>{f.subTree=Rr(f),oe(W,f.subTree,f,S,null)};ge?p.type.__asyncLoader().then(()=>!f.isUnmounted&&Pe()):Pe()}else{const Pe=f.subTree=Rr(f);E(null,Pe,y,w,f,S,R),p.el=Pe.el}if(le&&Ke(le,S),!ge&&(Y=G&&G.onVnodeMounted)){const Pe=p;Ke(()=>Ze(Y,_e,Pe),S)}(p.shapeFlag&256||_e&&an(_e.vnode)&&_e.vnode.shapeFlag&256)&&f.a&&Ke(f.a,S),f.isMounted=!0,p=y=w=null}},N=f.effect=new vo($,()=>yr(O),f.scope),O=f.update=()=>N.run();O.id=f.uid,Nt(f,!0),O()},ee=(f,p,y)=>{p.component=f;const w=f.vnode.props;f.vnode=p,f.next=null,_c(f,p.props,w,y),wc(f,p.children,y),mn(),es(),gn()},re=(f,p,y,w,S,R,D,$,N=!1)=>{const O=f&&f.children,Y=f?f.shapeFlag:0,W=p.children,{patchFlag:G,shapeFlag:ne}=p;if(G>0){if(G&128){De(O,W,y,w,S,R,D,$,N);return}else if(G&256){Oe(O,W,y,w,S,R,D,$,N);return}}ne&8?(Y&16&&z(O,S,R),W!==O&&c(y,W)):Y&16?ne&16?De(O,W,y,w,S,R,D,$,N):z(O,S,R,!0):(Y&8&&c(y,""),ne&16&&v(W,y,w,S,R,D,$,N))},Oe=(f,p,y,w,S,R,D,$,N)=>{f=f||rn,p=p||rn;const O=f.length,Y=p.length,W=Math.min(O,Y);let G;for(G=0;GY?z(f,S,R,!0,!1,W):v(p,y,w,S,R,D,$,N,W)},De=(f,p,y,w,S,R,D,$,N)=>{let O=0;const Y=p.length;let W=f.length-1,G=Y-1;for(;O<=W&&O<=G;){const ne=f[O],le=p[O]=N?Lt(p[O]):nt(p[O]);if(jt(ne,le))E(ne,le,y,null,S,R,D,$,N);else break;O++}for(;O<=W&&O<=G;){const ne=f[W],le=p[G]=N?Lt(p[G]):nt(p[G]);if(jt(ne,le))E(ne,le,y,null,S,R,D,$,N);else break;W--,G--}if(O>W){if(O<=G){const ne=G+1,le=neG)for(;O<=W;)Fe(f[O],S,R,!0),O++;else{const ne=O,le=O,_e=new Map;for(O=le;O<=G;O++){const We=p[O]=N?Lt(p[O]):nt(p[O]);We.key!=null&&_e.set(We.key,O)}let ge,Pe=0;const et=G-le+1;let Xt=!1,jo=0;const bn=new Array(et);for(O=0;O=et){Fe(We,S,R,!0);continue}let lt;if(We.key!=null)lt=_e.get(We.key);else for(ge=le;ge<=G;ge++)if(bn[ge-le]===0&&jt(We,p[ge])){lt=ge;break}lt===void 0?Fe(We,S,R,!0):(bn[lt-le]=O+1,lt>=jo?jo=lt:Xt=!0,E(We,p[lt],y,null,S,R,D,$,N),Pe++)}const Uo=Xt?Sc(bn):rn;for(ge=Uo.length-1,O=et-1;O>=0;O--){const We=le+O,lt=p[We],Ko=We+1{const{el:R,type:D,transition:$,children:N,shapeFlag:O}=f;if(O&6){ze(f.component.subTree,p,y,w);return}if(O&128){f.suspense.move(p,y,w);return}if(O&64){D.move(f,p,y,ae);return}if(D===ye){r(R,p,y);for(let W=0;W$.enter(R),S);else{const{leave:W,delayLeave:G,afterLeave:ne}=$,le=()=>r(R,p,y),_e=()=>{W(R,()=>{le(),ne&&ne()})};G?G(R,le,_e):_e()}else r(R,p,y)},Fe=(f,p,y,w=!1,S=!1)=>{const{type:R,props:D,ref:$,children:N,dynamicChildren:O,shapeFlag:Y,patchFlag:W,dirs:G}=f;if($!=null&&ar($,null,y,f,!0),Y&256){p.ctx.deactivate(f);return}const ne=Y&1&&G,le=!an(f);let _e;if(le&&(_e=D&&D.onVnodeBeforeUnmount)&&Ze(_e,p,f),Y&6)x(f.component,y,w);else{if(Y&128){f.suspense.unmount(y,w);return}ne&&at(f,null,p,"beforeUnmount"),Y&64?f.type.remove(f,p,y,S,ae,w):O&&(R!==ye||W>0&&W&64)?z(O,p,y,!1,!0):(R===ye&&W&384||!S&&Y&16)&&z(N,p,y),w&&yt(f)}(le&&(_e=D&&D.onVnodeUnmounted)||ne)&&Ke(()=>{_e&&Ze(_e,p,f),ne&&at(f,null,p,"unmounted")},y)},yt=f=>{const{type:p,el:y,anchor:w,transition:S}=f;if(p===ye){Zt(y,w);return}if(p===Sn){M(f);return}const R=()=>{o(y),S&&!S.persisted&&S.afterLeave&&S.afterLeave()};if(f.shapeFlag&1&&S&&!S.persisted){const{leave:D,delayLeave:$}=S,N=()=>D(y,R);$?$(f.el,R,N):N()}else R()},Zt=(f,p)=>{let y;for(;f!==p;)y=h(f),o(f),f=y;o(p)},x=(f,p,y)=>{const{bum:w,scope:S,update:R,subTree:D,um:$}=f;w&&Ar(w),S.stop(),R&&(R.active=!1,Fe(D,f,p,y)),$&&Ke($,p),Ke(()=>{f.isUnmounted=!0},p),p&&p.pendingBranch&&!p.isUnmounted&&f.asyncDep&&!f.asyncResolved&&f.suspenseId===p.pendingId&&(p.deps--,p.deps===0&&p.resolve())},z=(f,p,y,w=!1,S=!1,R=0)=>{for(let D=R;Df.shapeFlag&6?H(f.component.subTree):f.shapeFlag&128?f.suspense.next():h(f.anchor||f.el),V=(f,p,y)=>{f==null?p._vnode&&Fe(p._vnode,null,null,!0):E(p._vnode||null,f,p,null,null,null,y),es(),or(),p._vnode=f},ae={p:E,um:Fe,m:ze,r:yt,mt:A,mc:v,pc:re,pbc:j,n:H,o:e};let we,oe;return t&&([we,oe]=t(ae)),{render:V,hydrate:we,createApp:Cc(V,we)}}function Nt({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function Yi(e,t,n=!1){const r=e.children,o=t.children;if(X(r)&&X(o))for(let s=0;s>1,e[n[l]]0&&(t[r]=n[s-1]),n[s]=r)}}for(s=n.length,i=n[s-1];s-- >0;)n[s]=i,i=t[i];return n}const Oc=e=>e.__isTeleport,ye=Symbol(void 0),un=Symbol(void 0),Qe=Symbol(void 0),Sn=Symbol(void 0),On=[];let ot=null;function F(e=!1){On.push(ot=e?null:[])}function Pc(){On.pop(),ot=On[On.length-1]||null}let Nn=1;function us(e){Nn+=e}function Gi(e){return e.dynamicChildren=Nn>0?ot||rn:null,Pc(),Nn>0&&ot&&ot.push(e),e}function J(e,t,n,r,o,s){return Gi(fe(e,t,n,r,o,s,!0))}function ke(e,t,n,r,o){return Gi(te(e,t,n,r,o,!0))}function cr(e){return e?e.__v_isVNode===!0:!1}function jt(e,t){return e.type===t.type&&e.key===t.key}const Lr="__vInternal",Ji=({key:e})=>e!=null?e:null,Xn=({ref:e,ref_key:t,ref_for:n})=>e!=null?me(e)||Ie(e)||se(e)?{i:Me,r:e,k:t,f:!!n}:e:null;function fe(e,t=null,n=null,r=0,o=null,s=e===ye?0:1,i=!1,l=!1){const a={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Ji(t),ref:t&&Xn(t),scopeId:$i,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:s,patchFlag:r,dynamicProps:o,dynamicChildren:null,appContext:null,ctx:Me};return l?(Po(a,n),s&128&&e.normalize(a)):n&&(a.shapeFlag|=me(n)?8:16),Nn>0&&!i&&ot&&(a.patchFlag>0||s&6)&&a.patchFlag!==32&&ot.push(a),a}const te=kc;function kc(e,t=null,n=null,r=0,o=null,s=!1){if((!e||e===cc)&&(e=Qe),cr(e)){const l=Rt(e,t,!0);return n&&Po(l,n),Nn>0&&!s&&ot&&(l.shapeFlag&6?ot[ot.indexOf(e)]=l:ot.push(l)),l.patchFlag|=-2,l}if(zc(e)&&(e=e.__vccOpts),t){t=Ac(t);let{class:l,style:a}=t;l&&!me(l)&&(t.class=qe(l)),xe(a)&&(wi(a)&&!X(a)&&(a=He({},a)),t.style=Hn(a))}const i=me(e)?1:Qa(e)?128:Oc(e)?64:xe(e)?4:se(e)?2:0;return fe(e,t,n,r,o,i,s,!0)}function Ac(e){return e?wi(e)||Lr in e?He({},e):e:null}function Rt(e,t,n=!1){const{props:r,ref:o,patchFlag:s,children:i}=e,l=t?no(r||{},t):r;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:l,key:l&&Ji(l),ref:t&&t.ref?n&&o?X(o)?o.concat(Xn(t)):[o,Xn(t)]:Xn(t):o,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:i,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==ye?s===-1?16:s|16:s,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Rt(e.ssContent),ssFallback:e.ssFallback&&Rt(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx}}function $t(e=" ",t=0){return te(un,null,e,t)}function Rc(e,t){const n=te(Sn,null,e);return n.staticCount=t,n}function Se(e="",t=!1){return t?(F(),ke(Qe,null,e)):te(Qe,null,e)}function nt(e){return e==null||typeof e=="boolean"?te(Qe):X(e)?te(ye,null,e.slice()):typeof e=="object"?Lt(e):te(un,null,String(e))}function Lt(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:Rt(e)}function Po(e,t){let n=0;const{shapeFlag:r}=e;if(t==null)t=null;else if(X(t))n=16;else if(typeof t=="object")if(r&65){const o=t.default;o&&(o._c&&(o._d=!1),Po(e,o()),o._c&&(o._d=!0));return}else{n=32;const o=t._;!o&&!(Lr in t)?t._ctx=Me:o===3&&Me&&(Me.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else se(t)?(t={default:t,_ctx:Me},n=32):(t=String(t),r&64?(n=16,t=[$t(t)]):n=8);e.children=t,e.shapeFlag|=n}function no(...e){const t={};for(let n=0;nAe||Me,fn=e=>{Ae=e,e.scope.on()},Yt=()=>{Ae&&Ae.scope.off(),Ae=null};function Xi(e){return e.vnode.shapeFlag&4}let dn=!1;function Mc(e,t=!1){dn=t;const{props:n,children:r}=e.vnode,o=Xi(e);vc(e,n,o,t),yc(e,r);const s=o?Hc(e,t):void 0;return dn=!1,s}function Hc(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=Ei(new Proxy(e.ctx,fc));const{setup:r}=n;if(r){const o=e.setupContext=r.length>1?Fc(e):null;fn(e),mn();const s=Ot(r,e,0,[e.props,o]);if(gn(),Yt(),ai(s)){if(s.then(Yt,Yt),t)return s.then(i=>{fs(e,i,t)}).catch(i=>{Fn(i,e,0)});e.asyncDep=s}else fs(e,s,t)}else el(e,t)}function fs(e,t,n){se(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:xe(t)&&(e.setupState=Si(t)),el(e,n)}let ds;function el(e,t,n){const r=e.type;if(!e.render){if(!t&&ds&&!r.render){const o=r.template||So(e).template;if(o){const{isCustomElement:s,compilerOptions:i}=e.appContext.config,{delimiters:l,compilerOptions:a}=r,u=He(He({isCustomElement:s,delimiters:l},i),a);r.render=ds(o,u)}}e.render=r.render||st}fn(e),mn(),dc(e),gn(),Yt()}function Dc(e){return new Proxy(e.attrs,{get(t,n){return Ye(e,"get","$attrs"),t[n]}})}function Fc(e){const t=r=>{e.exposed=r||{}};let n;return{get attrs(){return n||(n=Dc(e))},slots:e.slots,emit:e.emit,expose:t}}function Tr(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(Si(Ei(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in Tn)return Tn[n](e)},has(t,n){return n in t||n in Tn}}))}function Bc(e,t=!0){return se(e)?e.displayName||e.name:e.name||t&&e.__name}function zc(e){return se(e)&&"__vccOpts"in e}const U=(e,t)=>Ha(e,t,dn);function ve(e,t,n){const r=arguments.length;return r===2?xe(t)&&!X(t)?cr(t)?te(e,null,[t]):te(e,t):te(e,null,t):(r>3?n=Array.prototype.slice.call(arguments,2):r===3&&cr(n)&&(n=[n]),te(e,t,n))}const jc=Symbol(""),Uc=()=>$e(jc),Kc="3.2.45",qc="http://www.w3.org/2000/svg",Ut=typeof document<"u"?document:null,hs=Ut&&Ut.createElement("template"),Wc={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,r)=>{const o=t?Ut.createElementNS(qc,e):Ut.createElement(e,n?{is:n}:void 0);return e==="select"&&r&&r.multiple!=null&&o.setAttribute("multiple",r.multiple),o},createText:e=>Ut.createTextNode(e),createComment:e=>Ut.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Ut.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,r,o,s){const i=n?n.previousSibling:t.lastChild;if(o&&(o===s||o.nextSibling))for(;t.insertBefore(o.cloneNode(!0),n),!(o===s||!(o=o.nextSibling)););else{hs.innerHTML=r?`${e}`:e;const l=hs.content;if(r){const a=l.firstChild;for(;a.firstChild;)l.appendChild(a.firstChild);l.removeChild(a)}t.insertBefore(l,n)}return[i?i.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}};function Vc(e,t,n){const r=e._vtc;r&&(t=(t?[t,...r]:[...r]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}function Qc(e,t,n){const r=e.style,o=me(n);if(n&&!o){for(const s in n)ro(r,s,n[s]);if(t&&!me(t))for(const s in t)n[s]==null&&ro(r,s,"")}else{const s=r.display;o?t!==n&&(r.cssText=n):t&&e.removeAttribute("style"),"_vod"in e&&(r.display=s)}}const ps=/\s*!important$/;function ro(e,t,n){if(X(n))n.forEach(r=>ro(e,t,r));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const r=Yc(e,t);ps.test(n)?e.setProperty(Gt(r),n.replace(ps,""),"important"):e[r]=n}}const ms=["Webkit","Moz","ms"],Mr={};function Yc(e,t){const n=Mr[t];if(n)return n;let r=ft(t);if(r!=="filter"&&r in e)return Mr[t]=r;r=vr(r);for(let o=0;oHr||(nu.then(()=>Hr=0),Hr=Date.now());function ou(e,t){const n=r=>{if(!r._vts)r._vts=Date.now();else if(r._vts<=n.attached)return;Xe(su(r,n.value),t,5,[r])};return n.value=e,n.attached=ru(),n}function su(e,t){if(X(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(r=>o=>!o._stopped&&r&&r(o))}else return t}const _s=/^on[a-z]/,iu=(e,t,n,r,o=!1,s,i,l,a)=>{t==="class"?Vc(e,r,o):t==="style"?Qc(e,n,r):Dn(t)?uo(t)||eu(e,t,n,r,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):lu(e,t,r,o))?Jc(e,t,r,s,i,l,a):(t==="true-value"?e._trueValue=r:t==="false-value"&&(e._falseValue=r),Gc(e,t,r,o))};function lu(e,t,n,r){return r?!!(t==="innerHTML"||t==="textContent"||t in e&&_s.test(t)&&se(n)):t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA"||_s.test(t)&&me(n)?!1:t in e}const Ct="transition",yn="animation",zn=(e,{slots:t})=>ve(Mi,au(e),t);zn.displayName="Transition";const tl={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String};zn.props=He({},Mi.props,tl);const Mt=(e,t=[])=>{X(e)?e.forEach(n=>n(...t)):e&&e(...t)},bs=e=>e?X(e)?e.some(t=>t.length>1):e.length>1:!1;function au(e){const t={};for(const L in e)L in tl||(t[L]=e[L]);if(e.css===!1)return t;const{name:n="v",type:r,duration:o,enterFromClass:s=`${n}-enter-from`,enterActiveClass:i=`${n}-enter-active`,enterToClass:l=`${n}-enter-to`,appearFromClass:a=s,appearActiveClass:u=i,appearToClass:c=l,leaveFromClass:d=`${n}-leave-from`,leaveActiveClass:h=`${n}-leave-active`,leaveToClass:m=`${n}-leave-to`}=e,_=cu(o),E=_&&_[0],T=_&&_[1],{onBeforeEnter:g,onEnter:b,onEnterCancelled:C,onLeave:M,onLeaveCancelled:K,onBeforeAppear:Z=g,onAppear:P=b,onAppearCancelled:v=C}=t,Q=(L,I,A)=>{Ht(L,I?c:l),Ht(L,I?u:i),A&&A()},j=(L,I)=>{L._isLeaving=!1,Ht(L,d),Ht(L,m),Ht(L,h),I&&I()},q=L=>(I,A)=>{const ie=L?P:b,B=()=>Q(I,L,A);Mt(ie,[I,B]),ys(()=>{Ht(I,L?a:s),xt(I,L?c:l),bs(ie)||ws(I,r,E,B)})};return He(t,{onBeforeEnter(L){Mt(g,[L]),xt(L,s),xt(L,i)},onBeforeAppear(L){Mt(Z,[L]),xt(L,a),xt(L,u)},onEnter:q(!1),onAppear:q(!0),onLeave(L,I){L._isLeaving=!0;const A=()=>j(L,I);xt(L,d),du(),xt(L,h),ys(()=>{!L._isLeaving||(Ht(L,d),xt(L,m),bs(M)||ws(L,r,T,A))}),Mt(M,[L,A])},onEnterCancelled(L){Q(L,!1),Mt(C,[L])},onAppearCancelled(L){Q(L,!0),Mt(v,[L])},onLeaveCancelled(L){j(L),Mt(K,[L])}})}function cu(e){if(e==null)return null;if(xe(e))return[Dr(e.enter),Dr(e.leave)];{const t=Dr(e);return[t,t]}}function Dr(e){return mo(e)}function xt(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e._vtc||(e._vtc=new Set)).add(t)}function Ht(e,t){t.split(/\s+/).forEach(r=>r&&e.classList.remove(r));const{_vtc:n}=e;n&&(n.delete(t),n.size||(e._vtc=void 0))}function ys(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let uu=0;function ws(e,t,n,r){const o=e._endId=++uu,s=()=>{o===e._endId&&r()};if(n)return setTimeout(s,n);const{type:i,timeout:l,propCount:a}=fu(e,t);if(!i)return r();const u=i+"end";let c=0;const d=()=>{e.removeEventListener(u,h),s()},h=m=>{m.target===e&&++c>=a&&d()};setTimeout(()=>{c(n[_]||"").split(", "),o=r(`${Ct}Delay`),s=r(`${Ct}Duration`),i=Es(o,s),l=r(`${yn}Delay`),a=r(`${yn}Duration`),u=Es(l,a);let c=null,d=0,h=0;t===Ct?i>0&&(c=Ct,d=i,h=s.length):t===yn?u>0&&(c=yn,d=u,h=a.length):(d=Math.max(i,u),c=d>0?i>u?Ct:yn:null,h=c?c===Ct?s.length:a.length:0);const m=c===Ct&&/\b(transform|all)(,|$)/.test(r(`${Ct}Property`).toString());return{type:c,timeout:d,propCount:h,hasTransform:m}}function Es(e,t){for(;e.lengthCs(n)+Cs(e[r])))}function Cs(e){return Number(e.slice(0,-1).replace(",","."))*1e3}function du(){return document.body.offsetHeight}const hu={esc:"escape",space:" ",up:"arrow-up",left:"arrow-left",right:"arrow-right",down:"arrow-down",delete:"backspace"},pu=(e,t)=>n=>{if(!("key"in n))return;const r=Gt(n.key);if(t.some(o=>o===r||hu[o]===r))return e(n)},ur={beforeMount(e,{value:t},{transition:n}){e._vod=e.style.display==="none"?"":e.style.display,n&&t?n.beforeEnter(e):wn(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:r}){!t!=!n&&(r?t?(r.beforeEnter(e),wn(e,!0),r.enter(e)):r.leave(e,()=>{wn(e,!1)}):wn(e,t))},beforeUnmount(e,{value:t}){wn(e,t)}};function wn(e,t){e.style.display=t?e._vod:"none"}const mu=He({patchProp:iu},Wc);let Fr,xs=!1;function gu(){return Fr=xs?Fr:Lc(mu),xs=!0,Fr}const vu=(...e)=>{const t=gu().createApp(...e),{mount:n}=t;return t.mount=r=>{const o=_u(r);if(o)return n(o,!0,o instanceof SVGElement)},t};function _u(e){return me(e)?document.querySelector(e):e}const bu=JSON.parse('{"base":"/xzs-mysql/","lang":"zh-CN","title":"学之思教程","description":"学之思开发部署教程","head":[],"locales":{}}');var yu=([e,t,n])=>e==="meta"&&t.name?`${e}.${t.name}`:["title","base"].includes(e)?e:e==="template"&&t.id?`${e}.${t.id}`:JSON.stringify([e,t,n]),wu=e=>{const t=new Set,n=[];return e.forEach(r=>{const o=yu(r);t.has(o)||(t.add(o),n.push(r))}),n},jn=e=>/^(https?:)?\/\//.test(e),Eu=e=>/^mailto:/.test(e),Cu=e=>/^tel:/.test(e),ko=e=>Object.prototype.toString.call(e)==="[object Object]",nl=e=>e.replace(/\/$/,""),rl=e=>e.replace(/^\//,""),ol=(e,t)=>{const n=Object.keys(e).sort((r,o)=>{const s=o.split("/").length-r.split("/").length;return s!==0?s:o.length-r.length});for(const r of n)if(t.startsWith(r))return r;return"/"};const sl={"v-8daa1a0e":tt(()=>Te(()=>import("./index.html.1bf545d5.js"),[])),"v-55bcf8d6":tt(()=>Te(()=>import("./admin.html.eeeebf5a.js"),[])),"v-7dc58ad2":tt(()=>Te(()=>import("./database.html.5e7c8999.js"),[])),"v-8a14f834":tt(()=>Te(()=>import("./deploy.html.c8c4e875.js"),[])),"v-745beb88":tt(()=>Te(()=>import("./develop.html.e8acac83.js"),[])),"v-5c93668f":tt(()=>Te(()=>import("./feature.html.269ba688.js"),[])),"v-e6eb79d8":tt(()=>Te(()=>import("./skill.html.03087e5a.js"),[])),"v-1362226a":tt(()=>Te(()=>import("./student.html.5690993d.js"),[])),"v-676a79ac":tt(()=>Te(()=>import("./video.html.048c06d9.js"),[])),"v-45a87c2c":tt(()=>Te(()=>import("./wx.html.50145a60.js"),[])),"v-3706649a":tt(()=>Te(()=>import("./404.html.4005bb68.js"),[]))};var Jt=(e={})=>e;function il(e,t,n){var r,o,s;t===void 0&&(t=50),n===void 0&&(n={});var i=(r=n.isImmediate)!=null&&r,l=(o=n.callback)!=null&&o,a=n.maxWait,u=Date.now(),c=[];function d(){if(a!==void 0){var m=Date.now()-u;if(m+t>=a)return a-m}return t}var h=function(){var m=[].slice.call(arguments),_=this;return new Promise(function(E,T){var g=i&&s===void 0;if(s!==void 0&&clearTimeout(s),s=setTimeout(function(){if(s=void 0,u=Date.now(),!i){var C=e.apply(_,m);l&&l(C),c.forEach(function(M){return(0,M.resolve)(C)}),c=[]}},d()),g){var b=e.apply(_,m);return l&&l(b),E(b)}c.push({resolve:E,reject:T})})};return h.cancel=function(m){s!==void 0&&clearTimeout(s),c.forEach(function(_){return(0,_.reject)(m)}),c=[]},h}/*!
+const Bl="modulepreload",zl=function(e){return"/xzs-mysql/"+e},qo={},Te=function(t,n,r){return!n||n.length===0?t():Promise.all(n.map(o=>{if(o=zl(o),o in qo)return;qo[o]=!0;const s=o.endsWith(".css"),i=s?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${o}"]${i}`))return;const l=document.createElement("link");if(l.rel=s?"stylesheet":Bl,s||(l.as="script",l.crossOrigin=""),l.href=o,document.head.appendChild(l),s)return new Promise((a,u)=>{l.addEventListener("load",a),l.addEventListener("error",()=>u(new Error(`Unable to preload CSS for ${o}`)))})})).then(()=>t())},jl={"v-8daa1a0e":()=>Te(()=>import("./index.html.aa5f7d07.js"),[]).then(({data:e})=>e),"v-55bcf8d6":()=>Te(()=>import("./admin.html.84fbabc7.js"),[]).then(({data:e})=>e),"v-7dc58ad2":()=>Te(()=>import("./database.html.d0f44a34.js"),[]).then(({data:e})=>e),"v-8a14f834":()=>Te(()=>import("./deploy.html.4d7a3964.js"),[]).then(({data:e})=>e),"v-745beb88":()=>Te(()=>import("./develop.html.f3fd5729.js"),[]).then(({data:e})=>e),"v-5c93668f":()=>Te(()=>import("./feature.html.261d99f8.js"),[]).then(({data:e})=>e),"v-e6eb79d8":()=>Te(()=>import("./skill.html.a2155b8b.js"),[]).then(({data:e})=>e),"v-1362226a":()=>Te(()=>import("./student.html.440619d8.js"),[]).then(({data:e})=>e),"v-676a79ac":()=>Te(()=>import("./video.html.86ee6545.js"),[]).then(({data:e})=>e),"v-45a87c2c":()=>Te(()=>import("./wx.html.3a4f171f.js"),[]).then(({data:e})=>e),"v-3706649a":()=>Te(()=>import("./404.html.c3e557d0.js"),[]).then(({data:e})=>e)};function co(e,t){const n=Object.create(null),r=e.split(",");for(let o=0;o!!n[o.toLowerCase()]:o=>!!n[o]}function Hn(e){if(X(e)){const t={};for(let n=0;n{if(n){const r=n.split(Kl);r.length>1&&(t[r[0].trim()]=r[1].trim())}}),t}function qe(e){let t="";if(me(e))t=e;else if(X(e))for(let n=0;nme(e)?e:e==null?"":X(e)||xe(e)&&(e.toString===ci||!se(e.toString))?JSON.stringify(e,ii,2):String(e),ii=(e,t)=>t&&t.__v_isRef?ii(e,t.value):on(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[r,o])=>(n[`${r} =>`]=o,n),{})}:li(t)?{[`Set(${t.size})`]:[...t.values()]}:xe(t)&&!X(t)&&!ui(t)?String(t):t,Ee={},rn=[],st=()=>{},Yl=()=>!1,Gl=/^on[^a-z]/,Dn=e=>Gl.test(e),uo=e=>e.startsWith("onUpdate:"),He=Object.assign,fo=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},Jl=Object.prototype.hasOwnProperty,ue=(e,t)=>Jl.call(e,t),X=Array.isArray,on=e=>mr(e)==="[object Map]",li=e=>mr(e)==="[object Set]",se=e=>typeof e=="function",me=e=>typeof e=="string",ho=e=>typeof e=="symbol",xe=e=>e!==null&&typeof e=="object",ai=e=>xe(e)&&se(e.then)&&se(e.catch),ci=Object.prototype.toString,mr=e=>ci.call(e),Zl=e=>mr(e).slice(8,-1),ui=e=>mr(e)==="[object Object]",po=e=>me(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Ln=co(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),gr=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},Xl=/-(\w)/g,ft=gr(e=>e.replace(Xl,(t,n)=>n?n.toUpperCase():"")),ea=/\B([A-Z])/g,Gt=gr(e=>e.replace(ea,"-$1").toLowerCase()),vr=gr(e=>e.charAt(0).toUpperCase()+e.slice(1)),kr=gr(e=>e?`on${vr(e)}`:""),An=(e,t)=>!Object.is(e,t),Ar=(e,t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})},mo=e=>{const t=parseFloat(e);return isNaN(t)?e:t};let Wo;const ta=()=>Wo||(Wo=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});let Ve;class na{constructor(t=!1){this.detached=t,this.active=!0,this.effects=[],this.cleanups=[],this.parent=Ve,!t&&Ve&&(this.index=(Ve.scopes||(Ve.scopes=[])).push(this)-1)}run(t){if(this.active){const n=Ve;try{return Ve=this,t()}finally{Ve=n}}}on(){Ve=this}off(){Ve=this.parent}stop(t){if(this.active){let n,r;for(n=0,r=this.effects.length;n{const t=new Set(e);return t.w=0,t.n=0,t},fi=e=>(e.w&kt)>0,di=e=>(e.n&kt)>0,ia=({deps:e})=>{if(e.length)for(let t=0;t{const{deps:t}=e;if(t.length){let n=0;for(let r=0;r{(c==="length"||c>=a)&&l.push(u)})}else switch(n!==void 0&&l.push(i.get(n)),t){case"add":X(e)?po(n)&&l.push(i.get("length")):(l.push(i.get(Vt)),on(e)&&l.push(i.get(Vr)));break;case"delete":X(e)||(l.push(i.get(Vt)),on(e)&&l.push(i.get(Vr)));break;case"set":on(e)&&l.push(i.get(Vt));break}if(l.length===1)l[0]&&Qr(l[0]);else{const a=[];for(const u of l)u&&a.push(...u);Qr(go(a))}}function Qr(e,t){const n=X(e)?e:[...e];for(const r of n)r.computed&&Qo(r);for(const r of n)r.computed||Qo(r)}function Qo(e,t){(e!==rt||e.allowRecurse)&&(e.scheduler?e.scheduler():e.run())}const aa=co("__proto__,__v_isRef,__isVue"),mi=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(ho)),ca=_o(),ua=_o(!1,!0),fa=_o(!0),Yo=da();function da(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...n){const r=he(this);for(let s=0,i=this.length;s{e[t]=function(...n){mn();const r=he(this)[t].apply(this,n);return gn(),r}}),e}function _o(e=!1,t=!1){return function(r,o,s){if(o==="__v_isReactive")return!e;if(o==="__v_isReadonly")return e;if(o==="__v_isShallow")return t;if(o==="__v_raw"&&s===(e?t?Oa:yi:t?bi:_i).get(r))return r;const i=X(r);if(!e&&i&&ue(Yo,o))return Reflect.get(Yo,o,s);const l=Reflect.get(r,o,s);return(ho(o)?mi.has(o):aa(o))||(e||Ye(r,"get",o),t)?l:Ie(l)?i&&po(o)?l:l.value:xe(l)?e?wo(l):vn(l):l}}const ha=gi(),pa=gi(!0);function gi(e=!1){return function(n,r,o,s){let i=n[r];if(cn(i)&&Ie(i)&&!Ie(o))return!1;if(!e&&(!rr(o)&&!cn(o)&&(i=he(i),o=he(o)),!X(n)&&Ie(i)&&!Ie(o)))return i.value=o,!0;const l=X(n)&&po(r)?Number(r)e,_r=e=>Reflect.getPrototypeOf(e);function Un(e,t,n=!1,r=!1){e=e.__v_raw;const o=he(e),s=he(t);n||(t!==s&&Ye(o,"get",t),Ye(o,"get",s));const{has:i}=_r(o),l=r?bo:n?Co:Rn;if(i.call(o,t))return l(e.get(t));if(i.call(o,s))return l(e.get(s));e!==o&&e.get(t)}function Kn(e,t=!1){const n=this.__v_raw,r=he(n),o=he(e);return t||(e!==o&&Ye(r,"has",e),Ye(r,"has",o)),e===o?n.has(e):n.has(e)||n.has(o)}function qn(e,t=!1){return e=e.__v_raw,!t&&Ye(he(e),"iterate",Vt),Reflect.get(e,"size",e)}function Go(e){e=he(e);const t=he(this);return _r(t).has.call(t,e)||(t.add(e),vt(t,"add",e,e)),this}function Jo(e,t){t=he(t);const n=he(this),{has:r,get:o}=_r(n);let s=r.call(n,e);s||(e=he(e),s=r.call(n,e));const i=o.call(n,e);return n.set(e,t),s?An(t,i)&&vt(n,"set",e,t):vt(n,"add",e,t),this}function Zo(e){const t=he(this),{has:n,get:r}=_r(t);let o=n.call(t,e);o||(e=he(e),o=n.call(t,e)),r&&r.call(t,e);const s=t.delete(e);return o&&vt(t,"delete",e,void 0),s}function Xo(){const e=he(this),t=e.size!==0,n=e.clear();return t&&vt(e,"clear",void 0,void 0),n}function Wn(e,t){return function(r,o){const s=this,i=s.__v_raw,l=he(i),a=t?bo:e?Co:Rn;return!e&&Ye(l,"iterate",Vt),i.forEach((u,c)=>r.call(o,a(u),a(c),s))}}function Vn(e,t,n){return function(...r){const o=this.__v_raw,s=he(o),i=on(s),l=e==="entries"||e===Symbol.iterator&&i,a=e==="keys"&&i,u=o[e](...r),c=n?bo:t?Co:Rn;return!t&&Ye(s,"iterate",a?Vr:Vt),{next(){const{value:d,done:h}=u.next();return h?{value:d,done:h}:{value:l?[c(d[0]),c(d[1])]:c(d),done:h}},[Symbol.iterator](){return this}}}}function wt(e){return function(...t){return e==="delete"?!1:this}}function ya(){const e={get(s){return Un(this,s)},get size(){return qn(this)},has:Kn,add:Go,set:Jo,delete:Zo,clear:Xo,forEach:Wn(!1,!1)},t={get(s){return Un(this,s,!1,!0)},get size(){return qn(this)},has:Kn,add:Go,set:Jo,delete:Zo,clear:Xo,forEach:Wn(!1,!0)},n={get(s){return Un(this,s,!0)},get size(){return qn(this,!0)},has(s){return Kn.call(this,s,!0)},add:wt("add"),set:wt("set"),delete:wt("delete"),clear:wt("clear"),forEach:Wn(!0,!1)},r={get(s){return Un(this,s,!0,!0)},get size(){return qn(this,!0)},has(s){return Kn.call(this,s,!0)},add:wt("add"),set:wt("set"),delete:wt("delete"),clear:wt("clear"),forEach:Wn(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(s=>{e[s]=Vn(s,!1,!1),n[s]=Vn(s,!0,!1),t[s]=Vn(s,!1,!0),r[s]=Vn(s,!0,!0)}),[e,n,t,r]}const[wa,Ea,Ca,xa]=ya();function yo(e,t){const n=t?e?xa:Ca:e?Ea:wa;return(r,o,s)=>o==="__v_isReactive"?!e:o==="__v_isReadonly"?e:o==="__v_raw"?r:Reflect.get(ue(n,o)&&o in r?n:r,o,s)}const La={get:yo(!1,!1)},Ta={get:yo(!1,!0)},Sa={get:yo(!0,!1)},_i=new WeakMap,bi=new WeakMap,yi=new WeakMap,Oa=new WeakMap;function Pa(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function ka(e){return e.__v_skip||!Object.isExtensible(e)?0:Pa(Zl(e))}function vn(e){return cn(e)?e:Eo(e,!1,vi,La,_i)}function Aa(e){return Eo(e,!1,ba,Ta,bi)}function wo(e){return Eo(e,!0,_a,Sa,yi)}function Eo(e,t,n,r,o){if(!xe(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const s=o.get(e);if(s)return s;const i=ka(e);if(i===0)return e;const l=new Proxy(e,i===2?r:n);return o.set(e,l),l}function sn(e){return cn(e)?sn(e.__v_raw):!!(e&&e.__v_isReactive)}function cn(e){return!!(e&&e.__v_isReadonly)}function rr(e){return!!(e&&e.__v_isShallow)}function wi(e){return sn(e)||cn(e)}function he(e){const t=e&&e.__v_raw;return t?he(t):e}function Ei(e){return nr(e,"__v_skip",!0),e}const Rn=e=>xe(e)?vn(e):e,Co=e=>xe(e)?wo(e):e;function Ci(e){St&&rt&&(e=he(e),pi(e.dep||(e.dep=go())))}function xi(e,t){e=he(e),e.dep&&Qr(e.dep)}function Ie(e){return!!(e&&e.__v_isRef===!0)}function Ce(e){return Ti(e,!1)}function Li(e){return Ti(e,!0)}function Ti(e,t){return Ie(e)?e:new Ra(e,t)}class Ra{constructor(t,n){this.__v_isShallow=n,this.dep=void 0,this.__v_isRef=!0,this._rawValue=n?t:he(t),this._value=n?t:Rn(t)}get value(){return Ci(this),this._value}set value(t){const n=this.__v_isShallow||rr(t)||cn(t);t=n?t:he(t),An(t,this._rawValue)&&(this._rawValue=t,this._value=n?t:Rn(t),xi(this))}}function k(e){return Ie(e)?e.value:e}const $a={get:(e,t,n)=>k(Reflect.get(e,t,n)),set:(e,t,n,r)=>{const o=e[t];return Ie(o)&&!Ie(n)?(o.value=n,!0):Reflect.set(e,t,n,r)}};function Si(e){return sn(e)?e:new Proxy(e,$a)}function xo(e){const t=X(e)?new Array(e.length):{};for(const n in e)t[n]=Na(e,n);return t}class Ia{constructor(t,n,r){this._object=t,this._key=n,this._defaultValue=r,this.__v_isRef=!0}get value(){const t=this._object[this._key];return t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}}function Na(e,t,n){const r=e[t];return Ie(r)?r:new Ia(e,t,n)}var Oi;class Ma{constructor(t,n,r,o){this._setter=n,this.dep=void 0,this.__v_isRef=!0,this[Oi]=!1,this._dirty=!0,this.effect=new vo(t,()=>{this._dirty||(this._dirty=!0,xi(this))}),this.effect.computed=this,this.effect.active=this._cacheable=!o,this.__v_isReadonly=r}get value(){const t=he(this);return Ci(t),(t._dirty||!t._cacheable)&&(t._dirty=!1,t._value=t.effect.run()),t._value}set value(t){this._setter(t)}}Oi="__v_isReadonly";function Ha(e,t,n=!1){let r,o;const s=se(e);return s?(r=e,o=st):(r=e.get,o=e.set),new Ma(r,o,s||!o,n)}function Ot(e,t,n,r){let o;try{o=r?e(...r):e()}catch(s){Fn(s,t,n)}return o}function Xe(e,t,n,r){if(se(e)){const s=Ot(e,t,n,r);return s&&ai(s)&&s.catch(i=>{Fn(i,t,n)}),s}const o=[];for(let s=0;s>>1;In(Be[r])ct&&Be.splice(t,1)}function za(e){X(e)?ln.push(...e):(!pt||!pt.includes(e,e.allowRecurse?zt+1:zt))&&ln.push(e),ki()}function es(e,t=$n?ct+1:0){for(;tIn(n)-In(r)),zt=0;zte.id==null?1/0:e.id,ja=(e,t)=>{const n=In(e)-In(t);if(n===0){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return n};function Ai(e){Yr=!1,$n=!0,Be.sort(ja);const t=st;try{for(ct=0;ctme(m)?m.trim():m)),d&&(o=n.map(mo))}let l,a=r[l=kr(t)]||r[l=kr(ft(t))];!a&&s&&(a=r[l=kr(Gt(t))]),a&&Xe(a,e,6,o);const u=r[l+"Once"];if(u){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,Xe(u,e,6,o)}}function Ri(e,t,n=!1){const r=t.emitsCache,o=r.get(e);if(o!==void 0)return o;const s=e.emits;let i={},l=!1;if(!se(e)){const a=u=>{const c=Ri(u,t,!0);c&&(l=!0,He(i,c))};!n&&t.mixins.length&&t.mixins.forEach(a),e.extends&&a(e.extends),e.mixins&&e.mixins.forEach(a)}return!s&&!l?(xe(e)&&r.set(e,null),null):(X(s)?s.forEach(a=>i[a]=null):He(i,s),xe(e)&&r.set(e,i),i)}function wr(e,t){return!e||!Dn(t)?!1:(t=t.slice(2).replace(/Once$/,""),ue(e,t[0].toLowerCase()+t.slice(1))||ue(e,Gt(t))||ue(e,t))}let Me=null,$i=null;function sr(e){const t=Me;return Me=e,$i=e&&e.type.__scopeId||null,t}function Ne(e,t=Me,n){if(!t||e._n)return e;const r=(...o)=>{r._d&&us(-1);const s=sr(t);let i;try{i=e(...o)}finally{sr(s),r._d&&us(1)}return i};return r._n=!0,r._c=!0,r._d=!0,r}function Rr(e){const{type:t,vnode:n,proxy:r,withProxy:o,props:s,propsOptions:[i],slots:l,attrs:a,emit:u,render:c,renderCache:d,data:h,setupState:m,ctx:_,inheritAttrs:E}=e;let T,g;const b=sr(e);try{if(n.shapeFlag&4){const M=o||r;T=nt(c.call(M,M,d,s,m,h,_)),g=a}else{const M=t;T=nt(M.length>1?M(s,{attrs:a,slots:l,emit:u}):M(s,null)),g=t.props?a:Ka(a)}}catch(M){On.length=0,Fn(M,e,1),T=te(Qe)}let C=T;if(g&&E!==!1){const M=Object.keys(g),{shapeFlag:K}=C;M.length&&K&7&&(i&&M.some(uo)&&(g=qa(g,i)),C=Rt(C,g))}return n.dirs&&(C=Rt(C),C.dirs=C.dirs?C.dirs.concat(n.dirs):n.dirs),n.transition&&(C.transition=n.transition),T=C,sr(b),T}const Ka=e=>{let t;for(const n in e)(n==="class"||n==="style"||Dn(n))&&((t||(t={}))[n]=e[n]);return t},qa=(e,t)=>{const n={};for(const r in e)(!uo(r)||!(r.slice(9)in t))&&(n[r]=e[r]);return n};function Wa(e,t,n){const{props:r,children:o,component:s}=e,{props:i,children:l,patchFlag:a}=t,u=s.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&a>=0){if(a&1024)return!0;if(a&16)return r?ts(r,i,u):!!i;if(a&8){const c=t.dynamicProps;for(let d=0;de.__isSuspense;function Ii(e,t){t&&t.pendingBranch?X(e)?t.effects.push(...e):t.effects.push(e):za(e)}function Qt(e,t){if(Ae){let n=Ae.provides;const r=Ae.parent&&Ae.parent.provides;r===n&&(n=Ae.provides=Object.create(r)),n[e]=t}}function $e(e,t,n=!1){const r=Ae||Me;if(r){const o=r.parent==null?r.vnode.appContext&&r.vnode.appContext.provides:r.parent.provides;if(o&&e in o)return o[e];if(arguments.length>1)return n&&se(t)?t.call(r.proxy):t}}function Ya(e,t){return To(e,null,t)}const Qn={};function ut(e,t,n){return To(e,t,n)}function To(e,t,{immediate:n,deep:r,flush:o,onTrack:s,onTrigger:i}=Ee){const l=Ae;let a,u=!1,c=!1;if(Ie(e)?(a=()=>e.value,u=rr(e)):sn(e)?(a=()=>e,r=!0):X(e)?(c=!0,u=e.some(C=>sn(C)||rr(C)),a=()=>e.map(C=>{if(Ie(C))return C.value;if(sn(C))return qt(C);if(se(C))return Ot(C,l,2)})):se(e)?t?a=()=>Ot(e,l,2):a=()=>{if(!(l&&l.isUnmounted))return d&&d(),Xe(e,l,3,[h])}:a=st,t&&r){const C=a;a=()=>qt(C())}let d,h=C=>{d=g.onStop=()=>{Ot(C,l,4)}},m;if(dn)if(h=st,t?n&&Xe(t,l,3,[a(),c?[]:void 0,h]):a(),o==="sync"){const C=Uc();m=C.__watcherHandles||(C.__watcherHandles=[])}else return st;let _=c?new Array(e.length).fill(Qn):Qn;const E=()=>{if(!!g.active)if(t){const C=g.run();(r||u||(c?C.some((M,K)=>An(M,_[K])):An(C,_)))&&(d&&d(),Xe(t,l,3,[C,_===Qn?void 0:c&&_[0]===Qn?[]:_,h]),_=C)}else g.run()};E.allowRecurse=!!t;let T;o==="sync"?T=E:o==="post"?T=()=>Ke(E,l&&l.suspense):(E.pre=!0,l&&(E.id=l.uid),T=()=>yr(E));const g=new vo(a,T);t?n?E():_=g.run():o==="post"?Ke(g.run.bind(g),l&&l.suspense):g.run();const b=()=>{g.stop(),l&&l.scope&&fo(l.scope.effects,g)};return m&&m.push(b),b}function Ga(e,t,n){const r=this.proxy,o=me(e)?e.includes(".")?Ni(r,e):()=>r[e]:e.bind(r,r);let s;se(t)?s=t:(s=t.handler,n=t);const i=Ae;fn(this);const l=To(o,s.bind(r),n);return i?fn(i):Yt(),l}function Ni(e,t){const n=t.split(".");return()=>{let r=e;for(let o=0;o{qt(n,t)});else if(ui(e))for(const n in e)qt(e[n],t);return e}function Ja(){const e={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return Ge(()=>{e.isMounted=!0}),Cr(()=>{e.isUnmounting=!0}),e}const Je=[Function,Array],Za={name:"BaseTransition",props:{mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:Je,onEnter:Je,onAfterEnter:Je,onEnterCancelled:Je,onBeforeLeave:Je,onLeave:Je,onAfterLeave:Je,onLeaveCancelled:Je,onBeforeAppear:Je,onAppear:Je,onAfterAppear:Je,onAppearCancelled:Je},setup(e,{slots:t}){const n=Zi(),r=Ja();let o;return()=>{const s=t.default&&Di(t.default(),!0);if(!s||!s.length)return;let i=s[0];if(s.length>1){for(const E of s)if(E.type!==Qe){i=E;break}}const l=he(e),{mode:a}=l;if(r.isLeaving)return $r(i);const u=ns(i);if(!u)return $r(i);const c=Gr(u,l,r,n);Jr(u,c);const d=n.subTree,h=d&&ns(d);let m=!1;const{getTransitionKey:_}=u.type;if(_){const E=_();o===void 0?o=E:E!==o&&(o=E,m=!0)}if(h&&h.type!==Qe&&(!jt(u,h)||m)){const E=Gr(h,l,r,n);if(Jr(h,E),a==="out-in")return r.isLeaving=!0,E.afterLeave=()=>{r.isLeaving=!1,n.update.active!==!1&&n.update()},$r(i);a==="in-out"&&u.type!==Qe&&(E.delayLeave=(T,g,b)=>{const C=Hi(r,h);C[String(h.key)]=h,T._leaveCb=()=>{g(),T._leaveCb=void 0,delete c.delayedLeave},c.delayedLeave=b})}return i}}},Mi=Za;function Hi(e,t){const{leavingVNodes:n}=e;let r=n.get(t.type);return r||(r=Object.create(null),n.set(t.type,r)),r}function Gr(e,t,n,r){const{appear:o,mode:s,persisted:i=!1,onBeforeEnter:l,onEnter:a,onAfterEnter:u,onEnterCancelled:c,onBeforeLeave:d,onLeave:h,onAfterLeave:m,onLeaveCancelled:_,onBeforeAppear:E,onAppear:T,onAfterAppear:g,onAppearCancelled:b}=t,C=String(e.key),M=Hi(n,e),K=(v,Q)=>{v&&Xe(v,r,9,Q)},Z=(v,Q)=>{const j=Q[1];K(v,Q),X(v)?v.every(q=>q.length<=1)&&j():v.length<=1&&j()},P={mode:s,persisted:i,beforeEnter(v){let Q=l;if(!n.isMounted)if(o)Q=E||l;else return;v._leaveCb&&v._leaveCb(!0);const j=M[C];j&&jt(e,j)&&j.el._leaveCb&&j.el._leaveCb(),K(Q,[v])},enter(v){let Q=a,j=u,q=c;if(!n.isMounted)if(o)Q=T||a,j=g||u,q=b||c;else return;let L=!1;const I=v._enterCb=A=>{L||(L=!0,A?K(q,[v]):K(j,[v]),P.delayedLeave&&P.delayedLeave(),v._enterCb=void 0)};Q?Z(Q,[v,I]):I()},leave(v,Q){const j=String(e.key);if(v._enterCb&&v._enterCb(!0),n.isUnmounting)return Q();K(d,[v]);let q=!1;const L=v._leaveCb=I=>{q||(q=!0,Q(),I?K(_,[v]):K(m,[v]),v._leaveCb=void 0,M[j]===e&&delete M[j])};M[j]=e,h?Z(h,[v,L]):L()},clone(v){return Gr(v,t,n,r)}};return P}function $r(e){if(Bn(e))return e=Rt(e),e.children=null,e}function ns(e){return Bn(e)?e.children?e.children[0]:void 0:e}function Jr(e,t){e.shapeFlag&6&&e.component?Jr(e.component.subTree,t):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function Di(e,t=!1,n){let r=[],o=0;for(let s=0;s1)for(let s=0;s!!e.type.__asyncLoader;function tt(e){se(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:r,delay:o=200,timeout:s,suspensible:i=!0,onError:l}=e;let a=null,u,c=0;const d=()=>(c++,a=null,h()),h=()=>{let m;return a||(m=a=t().catch(_=>{if(_=_ instanceof Error?_:new Error(String(_)),l)return new Promise((E,T)=>{l(_,()=>E(d()),()=>T(_),c+1)});throw _}).then(_=>m!==a&&a?a:(_&&(_.__esModule||_[Symbol.toStringTag]==="Module")&&(_=_.default),u=_,_)))};return de({name:"AsyncComponentWrapper",__asyncLoader:h,get __asyncResolved(){return u},setup(){const m=Ae;if(u)return()=>Ir(u,m);const _=b=>{a=null,Fn(b,m,13,!r)};if(i&&m.suspense||dn)return h().then(b=>()=>Ir(b,m)).catch(b=>(_(b),()=>r?te(r,{error:b}):null));const E=Ce(!1),T=Ce(),g=Ce(!!o);return o&&setTimeout(()=>{g.value=!1},o),s!=null&&setTimeout(()=>{if(!E.value&&!T.value){const b=new Error(`Async component timed out after ${s}ms.`);_(b),T.value=b}},s),h().then(()=>{E.value=!0,m.parent&&Bn(m.parent.vnode)&&yr(m.parent.update)}).catch(b=>{_(b),T.value=b}),()=>{if(E.value&&u)return Ir(u,m);if(T.value&&r)return te(r,{error:T.value});if(n&&!g.value)return te(n)}}})}function Ir(e,t){const{ref:n,props:r,children:o,ce:s}=t.vnode,i=te(e,r,o);return i.ref=n,i.ce=s,delete t.vnode.ce,i}const Bn=e=>e.type.__isKeepAlive;function Xa(e,t){Fi(e,"a",t)}function ec(e,t){Fi(e,"da",t)}function Fi(e,t,n=Ae){const r=e.__wdc||(e.__wdc=()=>{let o=n;for(;o;){if(o.isDeactivated)return;o=o.parent}return e()});if(Er(t,r,n),n){let o=n.parent;for(;o&&o.parent;)Bn(o.parent.vnode)&&tc(r,t,n,o),o=o.parent}}function tc(e,t,n,r){const o=Er(t,e,r,!0);xr(()=>{fo(r[t],o)},n)}function Er(e,t,n=Ae,r=!1){if(n){const o=n[e]||(n[e]=[]),s=t.__weh||(t.__weh=(...i)=>{if(n.isUnmounted)return;mn(),fn(n);const l=Xe(t,n,e,i);return Yt(),gn(),l});return r?o.unshift(s):o.push(s),s}}const bt=e=>(t,n=Ae)=>(!dn||e==="sp")&&Er(e,(...r)=>t(...r),n),nc=bt("bm"),Ge=bt("m"),rc=bt("bu"),oc=bt("u"),Cr=bt("bum"),xr=bt("um"),sc=bt("sp"),ic=bt("rtg"),lc=bt("rtc");function ac(e,t=Ae){Er("ec",e,t)}function ir(e,t){const n=Me;if(n===null)return e;const r=Tr(n)||n.proxy,o=e.dirs||(e.dirs=[]);for(let s=0;st(i,l,void 0,s&&s[l]));else{const i=Object.keys(e);o=new Array(i.length);for(let l=0,a=i.length;lcr(t)?!(t.type===Qe||t.type===ye&&!zi(t.children)):!0)?e:null}const Zr=e=>e?Xi(e)?Tr(e)||e.proxy:Zr(e.parent):null,Tn=He(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>Zr(e.parent),$root:e=>Zr(e.root),$emit:e=>e.emit,$options:e=>So(e),$forceUpdate:e=>e.f||(e.f=()=>yr(e.update)),$nextTick:e=>e.n||(e.n=br.bind(e.proxy)),$watch:e=>Ga.bind(e)}),Nr=(e,t)=>e!==Ee&&!e.__isScriptSetup&&ue(e,t),fc={get({_:e},t){const{ctx:n,setupState:r,data:o,props:s,accessCache:i,type:l,appContext:a}=e;let u;if(t[0]!=="$"){const m=i[t];if(m!==void 0)switch(m){case 1:return r[t];case 2:return o[t];case 4:return n[t];case 3:return s[t]}else{if(Nr(r,t))return i[t]=1,r[t];if(o!==Ee&&ue(o,t))return i[t]=2,o[t];if((u=e.propsOptions[0])&&ue(u,t))return i[t]=3,s[t];if(n!==Ee&&ue(n,t))return i[t]=4,n[t];Xr&&(i[t]=0)}}const c=Tn[t];let d,h;if(c)return t==="$attrs"&&Ye(e,"get",t),c(e);if((d=l.__cssModules)&&(d=d[t]))return d;if(n!==Ee&&ue(n,t))return i[t]=4,n[t];if(h=a.config.globalProperties,ue(h,t))return h[t]},set({_:e},t,n){const{data:r,setupState:o,ctx:s}=e;return Nr(o,t)?(o[t]=n,!0):r!==Ee&&ue(r,t)?(r[t]=n,!0):ue(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(s[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:r,appContext:o,propsOptions:s}},i){let l;return!!n[i]||e!==Ee&&ue(e,i)||Nr(t,i)||(l=s[0])&&ue(l,i)||ue(r,i)||ue(Tn,i)||ue(o.config.globalProperties,i)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:ue(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};let Xr=!0;function dc(e){const t=So(e),n=e.proxy,r=e.ctx;Xr=!1,t.beforeCreate&&os(t.beforeCreate,e,"bc");const{data:o,computed:s,methods:i,watch:l,provide:a,inject:u,created:c,beforeMount:d,mounted:h,beforeUpdate:m,updated:_,activated:E,deactivated:T,beforeDestroy:g,beforeUnmount:b,destroyed:C,unmounted:M,render:K,renderTracked:Z,renderTriggered:P,errorCaptured:v,serverPrefetch:Q,expose:j,inheritAttrs:q,components:L,directives:I,filters:A}=t;if(u&&hc(u,r,null,e.appContext.config.unwrapInjectedRef),i)for(const ee in i){const re=i[ee];se(re)&&(r[ee]=re.bind(n))}if(o){const ee=o.call(n,n);xe(ee)&&(e.data=vn(ee))}if(Xr=!0,s)for(const ee in s){const re=s[ee],Oe=se(re)?re.bind(n,n):se(re.get)?re.get.bind(n,n):st,De=!se(re)&&se(re.set)?re.set.bind(n):st,ze=U({get:Oe,set:De});Object.defineProperty(r,ee,{enumerable:!0,configurable:!0,get:()=>ze.value,set:Fe=>ze.value=Fe})}if(l)for(const ee in l)ji(l[ee],r,n,ee);if(a){const ee=se(a)?a.call(n):a;Reflect.ownKeys(ee).forEach(re=>{Qt(re,ee[re])})}c&&os(c,e,"c");function B(ee,re){X(re)?re.forEach(Oe=>ee(Oe.bind(n))):re&&ee(re.bind(n))}if(B(nc,d),B(Ge,h),B(rc,m),B(oc,_),B(Xa,E),B(ec,T),B(ac,v),B(lc,Z),B(ic,P),B(Cr,b),B(xr,M),B(sc,Q),X(j))if(j.length){const ee=e.exposed||(e.exposed={});j.forEach(re=>{Object.defineProperty(ee,re,{get:()=>n[re],set:Oe=>n[re]=Oe})})}else e.exposed||(e.exposed={});K&&e.render===st&&(e.render=K),q!=null&&(e.inheritAttrs=q),L&&(e.components=L),I&&(e.directives=I)}function hc(e,t,n=st,r=!1){X(e)&&(e=eo(e));for(const o in e){const s=e[o];let i;xe(s)?"default"in s?i=$e(s.from||o,s.default,!0):i=$e(s.from||o):i=$e(s),Ie(i)&&r?Object.defineProperty(t,o,{enumerable:!0,configurable:!0,get:()=>i.value,set:l=>i.value=l}):t[o]=i}}function os(e,t,n){Xe(X(e)?e.map(r=>r.bind(t.proxy)):e.bind(t.proxy),t,n)}function ji(e,t,n,r){const o=r.includes(".")?Ni(n,r):()=>n[r];if(me(e)){const s=t[e];se(s)&&ut(o,s)}else if(se(e))ut(o,e.bind(n));else if(xe(e))if(X(e))e.forEach(s=>ji(s,t,n,r));else{const s=se(e.handler)?e.handler.bind(n):t[e.handler];se(s)&&ut(o,s,e)}}function So(e){const t=e.type,{mixins:n,extends:r}=t,{mixins:o,optionsCache:s,config:{optionMergeStrategies:i}}=e.appContext,l=s.get(t);let a;return l?a=l:!o.length&&!n&&!r?a=t:(a={},o.length&&o.forEach(u=>lr(a,u,i,!0)),lr(a,t,i)),xe(t)&&s.set(t,a),a}function lr(e,t,n,r=!1){const{mixins:o,extends:s}=t;s&&lr(e,s,n,!0),o&&o.forEach(i=>lr(e,i,n,!0));for(const i in t)if(!(r&&i==="expose")){const l=pc[i]||n&&n[i];e[i]=l?l(e[i],t[i]):t[i]}return e}const pc={data:ss,props:Dt,emits:Dt,methods:Dt,computed:Dt,beforeCreate:je,created:je,beforeMount:je,mounted:je,beforeUpdate:je,updated:je,beforeDestroy:je,beforeUnmount:je,destroyed:je,unmounted:je,activated:je,deactivated:je,errorCaptured:je,serverPrefetch:je,components:Dt,directives:Dt,watch:gc,provide:ss,inject:mc};function ss(e,t){return t?e?function(){return He(se(e)?e.call(this,this):e,se(t)?t.call(this,this):t)}:t:e}function mc(e,t){return Dt(eo(e),eo(t))}function eo(e){if(X(e)){const t={};for(let n=0;n0)&&!(i&16)){if(i&8){const c=e.vnode.dynamicProps;for(let d=0;d{a=!0;const[h,m]=Ki(d,t,!0);He(i,h),m&&l.push(...m)};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}if(!s&&!a)return xe(e)&&r.set(e,rn),rn;if(X(s))for(let c=0;c-1,m[1]=E<0||_-1||ue(m,"default"))&&l.push(d)}}}const u=[i,l];return xe(e)&&r.set(e,u),u}function is(e){return e[0]!=="$"}function ls(e){const t=e&&e.toString().match(/^\s*function (\w+)/);return t?t[1]:e===null?"null":""}function as(e,t){return ls(e)===ls(t)}function cs(e,t){return X(t)?t.findIndex(n=>as(n,e)):se(t)&&as(t,e)?0:-1}const qi=e=>e[0]==="_"||e==="$stable",Oo=e=>X(e)?e.map(nt):[nt(e)],bc=(e,t,n)=>{if(t._n)return t;const r=Ne((...o)=>Oo(t(...o)),n);return r._c=!1,r},Wi=(e,t,n)=>{const r=e._ctx;for(const o in e){if(qi(o))continue;const s=e[o];if(se(s))t[o]=bc(o,s,r);else if(s!=null){const i=Oo(s);t[o]=()=>i}}},Vi=(e,t)=>{const n=Oo(t);e.slots.default=()=>n},yc=(e,t)=>{if(e.vnode.shapeFlag&32){const n=t._;n?(e.slots=he(t),nr(t,"_",n)):Wi(t,e.slots={})}else e.slots={},t&&Vi(e,t);nr(e.slots,Lr,1)},wc=(e,t,n)=>{const{vnode:r,slots:o}=e;let s=!0,i=Ee;if(r.shapeFlag&32){const l=t._;l?n&&l===1?s=!1:(He(o,t),!n&&l===1&&delete o._):(s=!t.$stable,Wi(t,o)),i=t}else t&&(Vi(e,t),i={default:1});if(s)for(const l in o)!qi(l)&&!(l in i)&&delete o[l]};function Qi(){return{app:null,config:{isNativeTag:Yl,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let Ec=0;function Cc(e,t){return function(r,o=null){se(r)||(r=Object.assign({},r)),o!=null&&!xe(o)&&(o=null);const s=Qi(),i=new Set;let l=!1;const a=s.app={_uid:Ec++,_component:r,_props:o,_container:null,_context:s,_instance:null,version:Kc,get config(){return s.config},set config(u){},use(u,...c){return i.has(u)||(u&&se(u.install)?(i.add(u),u.install(a,...c)):se(u)&&(i.add(u),u(a,...c))),a},mixin(u){return s.mixins.includes(u)||s.mixins.push(u),a},component(u,c){return c?(s.components[u]=c,a):s.components[u]},directive(u,c){return c?(s.directives[u]=c,a):s.directives[u]},mount(u,c,d){if(!l){const h=te(r,o);return h.appContext=s,c&&t?t(h,u):e(h,u,d),l=!0,a._container=u,u.__vue_app__=a,Tr(h.component)||h.component.proxy}},unmount(){l&&(e(null,a._container),delete a._container.__vue_app__)},provide(u,c){return s.provides[u]=c,a}};return a}}function ar(e,t,n,r,o=!1){if(X(e)){e.forEach((h,m)=>ar(h,t&&(X(t)?t[m]:t),n,r,o));return}if(an(r)&&!o)return;const s=r.shapeFlag&4?Tr(r.component)||r.component.proxy:r.el,i=o?null:s,{i:l,r:a}=e,u=t&&t.r,c=l.refs===Ee?l.refs={}:l.refs,d=l.setupState;if(u!=null&&u!==a&&(me(u)?(c[u]=null,ue(d,u)&&(d[u]=null)):Ie(u)&&(u.value=null)),se(a))Ot(a,l,12,[i,c]);else{const h=me(a),m=Ie(a);if(h||m){const _=()=>{if(e.f){const E=h?ue(d,a)?d[a]:c[a]:a.value;o?X(E)&&fo(E,s):X(E)?E.includes(s)||E.push(s):h?(c[a]=[s],ue(d,a)&&(d[a]=c[a])):(a.value=[s],e.k&&(c[e.k]=a.value))}else h?(c[a]=i,ue(d,a)&&(d[a]=i)):m&&(a.value=i,e.k&&(c[e.k]=i))};i?(_.id=-1,Ke(_,n)):_()}}}let Et=!1;const Yn=e=>/svg/.test(e.namespaceURI)&&e.tagName!=="foreignObject",Gn=e=>e.nodeType===8;function xc(e){const{mt:t,p:n,o:{patchProp:r,createText:o,nextSibling:s,parentNode:i,remove:l,insert:a,createComment:u}}=e,c=(g,b)=>{if(!b.hasChildNodes()){n(null,g,b),or(),b._vnode=g;return}Et=!1,d(b.firstChild,g,null,null,null),or(),b._vnode=g,Et&&console.error("Hydration completed but contains mismatches.")},d=(g,b,C,M,K,Z=!1)=>{const P=Gn(g)&&g.data==="[",v=()=>E(g,b,C,M,K,P),{type:Q,ref:j,shapeFlag:q,patchFlag:L}=b;let I=g.nodeType;b.el=g,L===-2&&(Z=!1,b.dynamicChildren=null);let A=null;switch(Q){case un:I!==3?b.children===""?(a(b.el=o(""),i(g),g),A=g):A=v():(g.data!==b.children&&(Et=!0,g.data=b.children),A=s(g));break;case Qe:I!==8||P?A=v():A=s(g);break;case Sn:if(P&&(g=s(g),I=g.nodeType),I===1||I===3){A=g;const ie=!b.children.length;for(let B=0;B{Z=Z||!!b.dynamicChildren;const{type:P,props:v,patchFlag:Q,shapeFlag:j,dirs:q}=b,L=P==="input"&&q||P==="option";if(L||Q!==-1){if(q&&at(b,null,C,"created"),v)if(L||!Z||Q&48)for(const A in v)(L&&A.endsWith("value")||Dn(A)&&!Ln(A))&&r(g,A,null,v[A],!1,void 0,C);else v.onClick&&r(g,"onClick",null,v.onClick,!1,void 0,C);let I;if((I=v&&v.onVnodeBeforeMount)&&Ze(I,C,b),q&&at(b,null,C,"beforeMount"),((I=v&&v.onVnodeMounted)||q)&&Ii(()=>{I&&Ze(I,C,b),q&&at(b,null,C,"mounted")},M),j&16&&!(v&&(v.innerHTML||v.textContent))){let A=m(g.firstChild,b,g,C,M,K,Z);for(;A;){Et=!0;const ie=A;A=A.nextSibling,l(ie)}}else j&8&&g.textContent!==b.children&&(Et=!0,g.textContent=b.children)}return g.nextSibling},m=(g,b,C,M,K,Z,P)=>{P=P||!!b.dynamicChildren;const v=b.children,Q=v.length;for(let j=0;j{const{slotScopeIds:P}=b;P&&(K=K?K.concat(P):P);const v=i(g),Q=m(s(g),b,v,C,M,K,Z);return Q&&Gn(Q)&&Q.data==="]"?s(b.anchor=Q):(Et=!0,a(b.anchor=u("]"),v,Q),Q)},E=(g,b,C,M,K,Z)=>{if(Et=!0,b.el=null,Z){const Q=T(g);for(;;){const j=s(g);if(j&&j!==Q)l(j);else break}}const P=s(g),v=i(g);return l(g),n(null,b,v,P,C,M,Yn(v),K),P},T=g=>{let b=0;for(;g;)if(g=s(g),g&&Gn(g)&&(g.data==="["&&b++,g.data==="]")){if(b===0)return s(g);b--}return g};return[c,d]}const Ke=Ii;function Lc(e){return Tc(e,xc)}function Tc(e,t){const n=ta();n.__VUE__=!0;const{insert:r,remove:o,patchProp:s,createElement:i,createText:l,createComment:a,setText:u,setElementText:c,parentNode:d,nextSibling:h,setScopeId:m=st,insertStaticContent:_}=e,E=(f,p,y,w=null,S=null,R=null,D=!1,$=null,N=!!p.dynamicChildren)=>{if(f===p)return;f&&!jt(f,p)&&(w=H(f),Fe(f,S,R,!0),f=null),p.patchFlag===-2&&(N=!1,p.dynamicChildren=null);const{type:O,ref:Y,shapeFlag:W}=p;switch(O){case un:T(f,p,y,w);break;case Qe:g(f,p,y,w);break;case Sn:f==null&&b(p,y,w,D);break;case ye:L(f,p,y,w,S,R,D,$,N);break;default:W&1?K(f,p,y,w,S,R,D,$,N):W&6?I(f,p,y,w,S,R,D,$,N):(W&64||W&128)&&O.process(f,p,y,w,S,R,D,$,N,ae)}Y!=null&&S&&ar(Y,f&&f.ref,R,p||f,!p)},T=(f,p,y,w)=>{if(f==null)r(p.el=l(p.children),y,w);else{const S=p.el=f.el;p.children!==f.children&&u(S,p.children)}},g=(f,p,y,w)=>{f==null?r(p.el=a(p.children||""),y,w):p.el=f.el},b=(f,p,y,w)=>{[f.el,f.anchor]=_(f.children,p,y,w,f.el,f.anchor)},C=({el:f,anchor:p},y,w)=>{let S;for(;f&&f!==p;)S=h(f),r(f,y,w),f=S;r(p,y,w)},M=({el:f,anchor:p})=>{let y;for(;f&&f!==p;)y=h(f),o(f),f=y;o(p)},K=(f,p,y,w,S,R,D,$,N)=>{D=D||p.type==="svg",f==null?Z(p,y,w,S,R,D,$,N):Q(f,p,S,R,D,$,N)},Z=(f,p,y,w,S,R,D,$)=>{let N,O;const{type:Y,props:W,shapeFlag:G,transition:ne,dirs:le}=f;if(N=f.el=i(f.type,R,W&&W.is,W),G&8?c(N,f.children):G&16&&v(f.children,N,null,w,S,R&&Y!=="foreignObject",D,$),le&&at(f,null,w,"created"),W){for(const ge in W)ge!=="value"&&!Ln(ge)&&s(N,ge,null,W[ge],R,f.children,w,S,z);"value"in W&&s(N,"value",null,W.value),(O=W.onVnodeBeforeMount)&&Ze(O,w,f)}P(N,f,f.scopeId,D,w),le&&at(f,null,w,"beforeMount");const _e=(!S||S&&!S.pendingBranch)&&ne&&!ne.persisted;_e&&ne.beforeEnter(N),r(N,p,y),((O=W&&W.onVnodeMounted)||_e||le)&&Ke(()=>{O&&Ze(O,w,f),_e&&ne.enter(N),le&&at(f,null,w,"mounted")},S)},P=(f,p,y,w,S)=>{if(y&&m(f,y),w)for(let R=0;R{for(let O=N;O{const $=p.el=f.el;let{patchFlag:N,dynamicChildren:O,dirs:Y}=p;N|=f.patchFlag&16;const W=f.props||Ee,G=p.props||Ee;let ne;y&&Nt(y,!1),(ne=G.onVnodeBeforeUpdate)&&Ze(ne,y,p,f),Y&&at(p,f,y,"beforeUpdate"),y&&Nt(y,!0);const le=S&&p.type!=="foreignObject";if(O?j(f.dynamicChildren,O,$,y,w,le,R):D||re(f,p,$,null,y,w,le,R,!1),N>0){if(N&16)q($,p,W,G,y,w,S);else if(N&2&&W.class!==G.class&&s($,"class",null,G.class,S),N&4&&s($,"style",W.style,G.style,S),N&8){const _e=p.dynamicProps;for(let ge=0;ge<_e.length;ge++){const Pe=_e[ge],et=W[Pe],Xt=G[Pe];(Xt!==et||Pe==="value")&&s($,Pe,et,Xt,S,f.children,y,w,z)}}N&1&&f.children!==p.children&&c($,p.children)}else!D&&O==null&&q($,p,W,G,y,w,S);((ne=G.onVnodeUpdated)||Y)&&Ke(()=>{ne&&Ze(ne,y,p,f),Y&&at(p,f,y,"updated")},w)},j=(f,p,y,w,S,R,D)=>{for(let $=0;${if(y!==w){if(y!==Ee)for(const $ in y)!Ln($)&&!($ in w)&&s(f,$,y[$],null,D,p.children,S,R,z);for(const $ in w){if(Ln($))continue;const N=w[$],O=y[$];N!==O&&$!=="value"&&s(f,$,O,N,D,p.children,S,R,z)}"value"in w&&s(f,"value",y.value,w.value)}},L=(f,p,y,w,S,R,D,$,N)=>{const O=p.el=f?f.el:l(""),Y=p.anchor=f?f.anchor:l("");let{patchFlag:W,dynamicChildren:G,slotScopeIds:ne}=p;ne&&($=$?$.concat(ne):ne),f==null?(r(O,y,w),r(Y,y,w),v(p.children,y,Y,S,R,D,$,N)):W>0&&W&64&&G&&f.dynamicChildren?(j(f.dynamicChildren,G,y,S,R,D,$),(p.key!=null||S&&p===S.subTree)&&Yi(f,p,!0)):re(f,p,y,Y,S,R,D,$,N)},I=(f,p,y,w,S,R,D,$,N)=>{p.slotScopeIds=$,f==null?p.shapeFlag&512?S.ctx.activate(p,y,w,D,N):A(p,y,w,S,R,D,N):ie(f,p,N)},A=(f,p,y,w,S,R,D)=>{const $=f.component=Nc(f,w,S);if(Bn(f)&&($.ctx.renderer=ae),Mc($),$.asyncDep){if(S&&S.registerDep($,B),!f.el){const N=$.subTree=te(Qe);g(null,N,p,y)}return}B($,f,p,y,S,R,D)},ie=(f,p,y)=>{const w=p.component=f.component;if(Wa(f,p,y))if(w.asyncDep&&!w.asyncResolved){ee(w,p,y);return}else w.next=p,Ba(w.update),w.update();else p.el=f.el,w.vnode=p},B=(f,p,y,w,S,R,D)=>{const $=()=>{if(f.isMounted){let{next:Y,bu:W,u:G,parent:ne,vnode:le}=f,_e=Y,ge;Nt(f,!1),Y?(Y.el=le.el,ee(f,Y,D)):Y=le,W&&Ar(W),(ge=Y.props&&Y.props.onVnodeBeforeUpdate)&&Ze(ge,ne,Y,le),Nt(f,!0);const Pe=Rr(f),et=f.subTree;f.subTree=Pe,E(et,Pe,d(et.el),H(et),f,S,R),Y.el=Pe.el,_e===null&&Va(f,Pe.el),G&&Ke(G,S),(ge=Y.props&&Y.props.onVnodeUpdated)&&Ke(()=>Ze(ge,ne,Y,le),S)}else{let Y;const{el:W,props:G}=p,{bm:ne,m:le,parent:_e}=f,ge=an(p);if(Nt(f,!1),ne&&Ar(ne),!ge&&(Y=G&&G.onVnodeBeforeMount)&&Ze(Y,_e,p),Nt(f,!0),W&&oe){const Pe=()=>{f.subTree=Rr(f),oe(W,f.subTree,f,S,null)};ge?p.type.__asyncLoader().then(()=>!f.isUnmounted&&Pe()):Pe()}else{const Pe=f.subTree=Rr(f);E(null,Pe,y,w,f,S,R),p.el=Pe.el}if(le&&Ke(le,S),!ge&&(Y=G&&G.onVnodeMounted)){const Pe=p;Ke(()=>Ze(Y,_e,Pe),S)}(p.shapeFlag&256||_e&&an(_e.vnode)&&_e.vnode.shapeFlag&256)&&f.a&&Ke(f.a,S),f.isMounted=!0,p=y=w=null}},N=f.effect=new vo($,()=>yr(O),f.scope),O=f.update=()=>N.run();O.id=f.uid,Nt(f,!0),O()},ee=(f,p,y)=>{p.component=f;const w=f.vnode.props;f.vnode=p,f.next=null,_c(f,p.props,w,y),wc(f,p.children,y),mn(),es(),gn()},re=(f,p,y,w,S,R,D,$,N=!1)=>{const O=f&&f.children,Y=f?f.shapeFlag:0,W=p.children,{patchFlag:G,shapeFlag:ne}=p;if(G>0){if(G&128){De(O,W,y,w,S,R,D,$,N);return}else if(G&256){Oe(O,W,y,w,S,R,D,$,N);return}}ne&8?(Y&16&&z(O,S,R),W!==O&&c(y,W)):Y&16?ne&16?De(O,W,y,w,S,R,D,$,N):z(O,S,R,!0):(Y&8&&c(y,""),ne&16&&v(W,y,w,S,R,D,$,N))},Oe=(f,p,y,w,S,R,D,$,N)=>{f=f||rn,p=p||rn;const O=f.length,Y=p.length,W=Math.min(O,Y);let G;for(G=0;GY?z(f,S,R,!0,!1,W):v(p,y,w,S,R,D,$,N,W)},De=(f,p,y,w,S,R,D,$,N)=>{let O=0;const Y=p.length;let W=f.length-1,G=Y-1;for(;O<=W&&O<=G;){const ne=f[O],le=p[O]=N?Lt(p[O]):nt(p[O]);if(jt(ne,le))E(ne,le,y,null,S,R,D,$,N);else break;O++}for(;O<=W&&O<=G;){const ne=f[W],le=p[G]=N?Lt(p[G]):nt(p[G]);if(jt(ne,le))E(ne,le,y,null,S,R,D,$,N);else break;W--,G--}if(O>W){if(O<=G){const ne=G+1,le=neG)for(;O<=W;)Fe(f[O],S,R,!0),O++;else{const ne=O,le=O,_e=new Map;for(O=le;O<=G;O++){const We=p[O]=N?Lt(p[O]):nt(p[O]);We.key!=null&&_e.set(We.key,O)}let ge,Pe=0;const et=G-le+1;let Xt=!1,jo=0;const bn=new Array(et);for(O=0;O=et){Fe(We,S,R,!0);continue}let lt;if(We.key!=null)lt=_e.get(We.key);else for(ge=le;ge<=G;ge++)if(bn[ge-le]===0&&jt(We,p[ge])){lt=ge;break}lt===void 0?Fe(We,S,R,!0):(bn[lt-le]=O+1,lt>=jo?jo=lt:Xt=!0,E(We,p[lt],y,null,S,R,D,$,N),Pe++)}const Uo=Xt?Sc(bn):rn;for(ge=Uo.length-1,O=et-1;O>=0;O--){const We=le+O,lt=p[We],Ko=We+1{const{el:R,type:D,transition:$,children:N,shapeFlag:O}=f;if(O&6){ze(f.component.subTree,p,y,w);return}if(O&128){f.suspense.move(p,y,w);return}if(O&64){D.move(f,p,y,ae);return}if(D===ye){r(R,p,y);for(let W=0;W$.enter(R),S);else{const{leave:W,delayLeave:G,afterLeave:ne}=$,le=()=>r(R,p,y),_e=()=>{W(R,()=>{le(),ne&&ne()})};G?G(R,le,_e):_e()}else r(R,p,y)},Fe=(f,p,y,w=!1,S=!1)=>{const{type:R,props:D,ref:$,children:N,dynamicChildren:O,shapeFlag:Y,patchFlag:W,dirs:G}=f;if($!=null&&ar($,null,y,f,!0),Y&256){p.ctx.deactivate(f);return}const ne=Y&1&&G,le=!an(f);let _e;if(le&&(_e=D&&D.onVnodeBeforeUnmount)&&Ze(_e,p,f),Y&6)x(f.component,y,w);else{if(Y&128){f.suspense.unmount(y,w);return}ne&&at(f,null,p,"beforeUnmount"),Y&64?f.type.remove(f,p,y,S,ae,w):O&&(R!==ye||W>0&&W&64)?z(O,p,y,!1,!0):(R===ye&&W&384||!S&&Y&16)&&z(N,p,y),w&&yt(f)}(le&&(_e=D&&D.onVnodeUnmounted)||ne)&&Ke(()=>{_e&&Ze(_e,p,f),ne&&at(f,null,p,"unmounted")},y)},yt=f=>{const{type:p,el:y,anchor:w,transition:S}=f;if(p===ye){Zt(y,w);return}if(p===Sn){M(f);return}const R=()=>{o(y),S&&!S.persisted&&S.afterLeave&&S.afterLeave()};if(f.shapeFlag&1&&S&&!S.persisted){const{leave:D,delayLeave:$}=S,N=()=>D(y,R);$?$(f.el,R,N):N()}else R()},Zt=(f,p)=>{let y;for(;f!==p;)y=h(f),o(f),f=y;o(p)},x=(f,p,y)=>{const{bum:w,scope:S,update:R,subTree:D,um:$}=f;w&&Ar(w),S.stop(),R&&(R.active=!1,Fe(D,f,p,y)),$&&Ke($,p),Ke(()=>{f.isUnmounted=!0},p),p&&p.pendingBranch&&!p.isUnmounted&&f.asyncDep&&!f.asyncResolved&&f.suspenseId===p.pendingId&&(p.deps--,p.deps===0&&p.resolve())},z=(f,p,y,w=!1,S=!1,R=0)=>{for(let D=R;Df.shapeFlag&6?H(f.component.subTree):f.shapeFlag&128?f.suspense.next():h(f.anchor||f.el),V=(f,p,y)=>{f==null?p._vnode&&Fe(p._vnode,null,null,!0):E(p._vnode||null,f,p,null,null,null,y),es(),or(),p._vnode=f},ae={p:E,um:Fe,m:ze,r:yt,mt:A,mc:v,pc:re,pbc:j,n:H,o:e};let we,oe;return t&&([we,oe]=t(ae)),{render:V,hydrate:we,createApp:Cc(V,we)}}function Nt({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function Yi(e,t,n=!1){const r=e.children,o=t.children;if(X(r)&&X(o))for(let s=0;s>1,e[n[l]]0&&(t[r]=n[s-1]),n[s]=r)}}for(s=n.length,i=n[s-1];s-- >0;)n[s]=i,i=t[i];return n}const Oc=e=>e.__isTeleport,ye=Symbol(void 0),un=Symbol(void 0),Qe=Symbol(void 0),Sn=Symbol(void 0),On=[];let ot=null;function F(e=!1){On.push(ot=e?null:[])}function Pc(){On.pop(),ot=On[On.length-1]||null}let Nn=1;function us(e){Nn+=e}function Gi(e){return e.dynamicChildren=Nn>0?ot||rn:null,Pc(),Nn>0&&ot&&ot.push(e),e}function J(e,t,n,r,o,s){return Gi(fe(e,t,n,r,o,s,!0))}function ke(e,t,n,r,o){return Gi(te(e,t,n,r,o,!0))}function cr(e){return e?e.__v_isVNode===!0:!1}function jt(e,t){return e.type===t.type&&e.key===t.key}const Lr="__vInternal",Ji=({key:e})=>e!=null?e:null,Xn=({ref:e,ref_key:t,ref_for:n})=>e!=null?me(e)||Ie(e)||se(e)?{i:Me,r:e,k:t,f:!!n}:e:null;function fe(e,t=null,n=null,r=0,o=null,s=e===ye?0:1,i=!1,l=!1){const a={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Ji(t),ref:t&&Xn(t),scopeId:$i,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:s,patchFlag:r,dynamicProps:o,dynamicChildren:null,appContext:null,ctx:Me};return l?(Po(a,n),s&128&&e.normalize(a)):n&&(a.shapeFlag|=me(n)?8:16),Nn>0&&!i&&ot&&(a.patchFlag>0||s&6)&&a.patchFlag!==32&&ot.push(a),a}const te=kc;function kc(e,t=null,n=null,r=0,o=null,s=!1){if((!e||e===cc)&&(e=Qe),cr(e)){const l=Rt(e,t,!0);return n&&Po(l,n),Nn>0&&!s&&ot&&(l.shapeFlag&6?ot[ot.indexOf(e)]=l:ot.push(l)),l.patchFlag|=-2,l}if(zc(e)&&(e=e.__vccOpts),t){t=Ac(t);let{class:l,style:a}=t;l&&!me(l)&&(t.class=qe(l)),xe(a)&&(wi(a)&&!X(a)&&(a=He({},a)),t.style=Hn(a))}const i=me(e)?1:Qa(e)?128:Oc(e)?64:xe(e)?4:se(e)?2:0;return fe(e,t,n,r,o,i,s,!0)}function Ac(e){return e?wi(e)||Lr in e?He({},e):e:null}function Rt(e,t,n=!1){const{props:r,ref:o,patchFlag:s,children:i}=e,l=t?no(r||{},t):r;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:l,key:l&&Ji(l),ref:t&&t.ref?n&&o?X(o)?o.concat(Xn(t)):[o,Xn(t)]:Xn(t):o,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:i,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==ye?s===-1?16:s|16:s,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Rt(e.ssContent),ssFallback:e.ssFallback&&Rt(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx}}function $t(e=" ",t=0){return te(un,null,e,t)}function Rc(e,t){const n=te(Sn,null,e);return n.staticCount=t,n}function Se(e="",t=!1){return t?(F(),ke(Qe,null,e)):te(Qe,null,e)}function nt(e){return e==null||typeof e=="boolean"?te(Qe):X(e)?te(ye,null,e.slice()):typeof e=="object"?Lt(e):te(un,null,String(e))}function Lt(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:Rt(e)}function Po(e,t){let n=0;const{shapeFlag:r}=e;if(t==null)t=null;else if(X(t))n=16;else if(typeof t=="object")if(r&65){const o=t.default;o&&(o._c&&(o._d=!1),Po(e,o()),o._c&&(o._d=!0));return}else{n=32;const o=t._;!o&&!(Lr in t)?t._ctx=Me:o===3&&Me&&(Me.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else se(t)?(t={default:t,_ctx:Me},n=32):(t=String(t),r&64?(n=16,t=[$t(t)]):n=8);e.children=t,e.shapeFlag|=n}function no(...e){const t={};for(let n=0;nAe||Me,fn=e=>{Ae=e,e.scope.on()},Yt=()=>{Ae&&Ae.scope.off(),Ae=null};function Xi(e){return e.vnode.shapeFlag&4}let dn=!1;function Mc(e,t=!1){dn=t;const{props:n,children:r}=e.vnode,o=Xi(e);vc(e,n,o,t),yc(e,r);const s=o?Hc(e,t):void 0;return dn=!1,s}function Hc(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=Ei(new Proxy(e.ctx,fc));const{setup:r}=n;if(r){const o=e.setupContext=r.length>1?Fc(e):null;fn(e),mn();const s=Ot(r,e,0,[e.props,o]);if(gn(),Yt(),ai(s)){if(s.then(Yt,Yt),t)return s.then(i=>{fs(e,i,t)}).catch(i=>{Fn(i,e,0)});e.asyncDep=s}else fs(e,s,t)}else el(e,t)}function fs(e,t,n){se(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:xe(t)&&(e.setupState=Si(t)),el(e,n)}let ds;function el(e,t,n){const r=e.type;if(!e.render){if(!t&&ds&&!r.render){const o=r.template||So(e).template;if(o){const{isCustomElement:s,compilerOptions:i}=e.appContext.config,{delimiters:l,compilerOptions:a}=r,u=He(He({isCustomElement:s,delimiters:l},i),a);r.render=ds(o,u)}}e.render=r.render||st}fn(e),mn(),dc(e),gn(),Yt()}function Dc(e){return new Proxy(e.attrs,{get(t,n){return Ye(e,"get","$attrs"),t[n]}})}function Fc(e){const t=r=>{e.exposed=r||{}};let n;return{get attrs(){return n||(n=Dc(e))},slots:e.slots,emit:e.emit,expose:t}}function Tr(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(Si(Ei(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in Tn)return Tn[n](e)},has(t,n){return n in t||n in Tn}}))}function Bc(e,t=!0){return se(e)?e.displayName||e.name:e.name||t&&e.__name}function zc(e){return se(e)&&"__vccOpts"in e}const U=(e,t)=>Ha(e,t,dn);function ve(e,t,n){const r=arguments.length;return r===2?xe(t)&&!X(t)?cr(t)?te(e,null,[t]):te(e,t):te(e,null,t):(r>3?n=Array.prototype.slice.call(arguments,2):r===3&&cr(n)&&(n=[n]),te(e,t,n))}const jc=Symbol(""),Uc=()=>$e(jc),Kc="3.2.45",qc="http://www.w3.org/2000/svg",Ut=typeof document<"u"?document:null,hs=Ut&&Ut.createElement("template"),Wc={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,r)=>{const o=t?Ut.createElementNS(qc,e):Ut.createElement(e,n?{is:n}:void 0);return e==="select"&&r&&r.multiple!=null&&o.setAttribute("multiple",r.multiple),o},createText:e=>Ut.createTextNode(e),createComment:e=>Ut.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Ut.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,r,o,s){const i=n?n.previousSibling:t.lastChild;if(o&&(o===s||o.nextSibling))for(;t.insertBefore(o.cloneNode(!0),n),!(o===s||!(o=o.nextSibling)););else{hs.innerHTML=r?`${e}`:e;const l=hs.content;if(r){const a=l.firstChild;for(;a.firstChild;)l.appendChild(a.firstChild);l.removeChild(a)}t.insertBefore(l,n)}return[i?i.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}};function Vc(e,t,n){const r=e._vtc;r&&(t=(t?[t,...r]:[...r]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}function Qc(e,t,n){const r=e.style,o=me(n);if(n&&!o){for(const s in n)ro(r,s,n[s]);if(t&&!me(t))for(const s in t)n[s]==null&&ro(r,s,"")}else{const s=r.display;o?t!==n&&(r.cssText=n):t&&e.removeAttribute("style"),"_vod"in e&&(r.display=s)}}const ps=/\s*!important$/;function ro(e,t,n){if(X(n))n.forEach(r=>ro(e,t,r));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const r=Yc(e,t);ps.test(n)?e.setProperty(Gt(r),n.replace(ps,""),"important"):e[r]=n}}const ms=["Webkit","Moz","ms"],Mr={};function Yc(e,t){const n=Mr[t];if(n)return n;let r=ft(t);if(r!=="filter"&&r in e)return Mr[t]=r;r=vr(r);for(let o=0;oHr||(nu.then(()=>Hr=0),Hr=Date.now());function ou(e,t){const n=r=>{if(!r._vts)r._vts=Date.now();else if(r._vts<=n.attached)return;Xe(su(r,n.value),t,5,[r])};return n.value=e,n.attached=ru(),n}function su(e,t){if(X(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(r=>o=>!o._stopped&&r&&r(o))}else return t}const _s=/^on[a-z]/,iu=(e,t,n,r,o=!1,s,i,l,a)=>{t==="class"?Vc(e,r,o):t==="style"?Qc(e,n,r):Dn(t)?uo(t)||eu(e,t,n,r,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):lu(e,t,r,o))?Jc(e,t,r,s,i,l,a):(t==="true-value"?e._trueValue=r:t==="false-value"&&(e._falseValue=r),Gc(e,t,r,o))};function lu(e,t,n,r){return r?!!(t==="innerHTML"||t==="textContent"||t in e&&_s.test(t)&&se(n)):t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA"||_s.test(t)&&me(n)?!1:t in e}const Ct="transition",yn="animation",zn=(e,{slots:t})=>ve(Mi,au(e),t);zn.displayName="Transition";const tl={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String};zn.props=He({},Mi.props,tl);const Mt=(e,t=[])=>{X(e)?e.forEach(n=>n(...t)):e&&e(...t)},bs=e=>e?X(e)?e.some(t=>t.length>1):e.length>1:!1;function au(e){const t={};for(const L in e)L in tl||(t[L]=e[L]);if(e.css===!1)return t;const{name:n="v",type:r,duration:o,enterFromClass:s=`${n}-enter-from`,enterActiveClass:i=`${n}-enter-active`,enterToClass:l=`${n}-enter-to`,appearFromClass:a=s,appearActiveClass:u=i,appearToClass:c=l,leaveFromClass:d=`${n}-leave-from`,leaveActiveClass:h=`${n}-leave-active`,leaveToClass:m=`${n}-leave-to`}=e,_=cu(o),E=_&&_[0],T=_&&_[1],{onBeforeEnter:g,onEnter:b,onEnterCancelled:C,onLeave:M,onLeaveCancelled:K,onBeforeAppear:Z=g,onAppear:P=b,onAppearCancelled:v=C}=t,Q=(L,I,A)=>{Ht(L,I?c:l),Ht(L,I?u:i),A&&A()},j=(L,I)=>{L._isLeaving=!1,Ht(L,d),Ht(L,m),Ht(L,h),I&&I()},q=L=>(I,A)=>{const ie=L?P:b,B=()=>Q(I,L,A);Mt(ie,[I,B]),ys(()=>{Ht(I,L?a:s),xt(I,L?c:l),bs(ie)||ws(I,r,E,B)})};return He(t,{onBeforeEnter(L){Mt(g,[L]),xt(L,s),xt(L,i)},onBeforeAppear(L){Mt(Z,[L]),xt(L,a),xt(L,u)},onEnter:q(!1),onAppear:q(!0),onLeave(L,I){L._isLeaving=!0;const A=()=>j(L,I);xt(L,d),du(),xt(L,h),ys(()=>{!L._isLeaving||(Ht(L,d),xt(L,m),bs(M)||ws(L,r,T,A))}),Mt(M,[L,A])},onEnterCancelled(L){Q(L,!1),Mt(C,[L])},onAppearCancelled(L){Q(L,!0),Mt(v,[L])},onLeaveCancelled(L){j(L),Mt(K,[L])}})}function cu(e){if(e==null)return null;if(xe(e))return[Dr(e.enter),Dr(e.leave)];{const t=Dr(e);return[t,t]}}function Dr(e){return mo(e)}function xt(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e._vtc||(e._vtc=new Set)).add(t)}function Ht(e,t){t.split(/\s+/).forEach(r=>r&&e.classList.remove(r));const{_vtc:n}=e;n&&(n.delete(t),n.size||(e._vtc=void 0))}function ys(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let uu=0;function ws(e,t,n,r){const o=e._endId=++uu,s=()=>{o===e._endId&&r()};if(n)return setTimeout(s,n);const{type:i,timeout:l,propCount:a}=fu(e,t);if(!i)return r();const u=i+"end";let c=0;const d=()=>{e.removeEventListener(u,h),s()},h=m=>{m.target===e&&++c>=a&&d()};setTimeout(()=>{c(n[_]||"").split(", "),o=r(`${Ct}Delay`),s=r(`${Ct}Duration`),i=Es(o,s),l=r(`${yn}Delay`),a=r(`${yn}Duration`),u=Es(l,a);let c=null,d=0,h=0;t===Ct?i>0&&(c=Ct,d=i,h=s.length):t===yn?u>0&&(c=yn,d=u,h=a.length):(d=Math.max(i,u),c=d>0?i>u?Ct:yn:null,h=c?c===Ct?s.length:a.length:0);const m=c===Ct&&/\b(transform|all)(,|$)/.test(r(`${Ct}Property`).toString());return{type:c,timeout:d,propCount:h,hasTransform:m}}function Es(e,t){for(;e.lengthCs(n)+Cs(e[r])))}function Cs(e){return Number(e.slice(0,-1).replace(",","."))*1e3}function du(){return document.body.offsetHeight}const hu={esc:"escape",space:" ",up:"arrow-up",left:"arrow-left",right:"arrow-right",down:"arrow-down",delete:"backspace"},pu=(e,t)=>n=>{if(!("key"in n))return;const r=Gt(n.key);if(t.some(o=>o===r||hu[o]===r))return e(n)},ur={beforeMount(e,{value:t},{transition:n}){e._vod=e.style.display==="none"?"":e.style.display,n&&t?n.beforeEnter(e):wn(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:r}){!t!=!n&&(r?t?(r.beforeEnter(e),wn(e,!0),r.enter(e)):r.leave(e,()=>{wn(e,!1)}):wn(e,t))},beforeUnmount(e,{value:t}){wn(e,t)}};function wn(e,t){e.style.display=t?e._vod:"none"}const mu=He({patchProp:iu},Wc);let Fr,xs=!1;function gu(){return Fr=xs?Fr:Lc(mu),xs=!0,Fr}const vu=(...e)=>{const t=gu().createApp(...e),{mount:n}=t;return t.mount=r=>{const o=_u(r);if(o)return n(o,!0,o instanceof SVGElement)},t};function _u(e){return me(e)?document.querySelector(e):e}const bu=JSON.parse('{"base":"/xzs-mysql/","lang":"zh-CN","title":"学之思教程","description":"学之思开发部署教程","head":[],"locales":{}}');var yu=([e,t,n])=>e==="meta"&&t.name?`${e}.${t.name}`:["title","base"].includes(e)?e:e==="template"&&t.id?`${e}.${t.id}`:JSON.stringify([e,t,n]),wu=e=>{const t=new Set,n=[];return e.forEach(r=>{const o=yu(r);t.has(o)||(t.add(o),n.push(r))}),n},jn=e=>/^(https?:)?\/\//.test(e),Eu=e=>/^mailto:/.test(e),Cu=e=>/^tel:/.test(e),ko=e=>Object.prototype.toString.call(e)==="[object Object]",nl=e=>e.replace(/\/$/,""),rl=e=>e.replace(/^\//,""),ol=(e,t)=>{const n=Object.keys(e).sort((r,o)=>{const s=o.split("/").length-r.split("/").length;return s!==0?s:o.length-r.length});for(const r of n)if(t.startsWith(r))return r;return"/"};const sl={"v-8daa1a0e":tt(()=>Te(()=>import("./index.html.e8015e4a.js"),[])),"v-55bcf8d6":tt(()=>Te(()=>import("./admin.html.b49cbbe5.js"),[])),"v-7dc58ad2":tt(()=>Te(()=>import("./database.html.899276e6.js"),[])),"v-8a14f834":tt(()=>Te(()=>import("./deploy.html.2c8ceef5.js"),[])),"v-745beb88":tt(()=>Te(()=>import("./develop.html.29d0133c.js"),[])),"v-5c93668f":tt(()=>Te(()=>import("./feature.html.f69d07d5.js"),[])),"v-e6eb79d8":tt(()=>Te(()=>import("./skill.html.76c41637.js"),[])),"v-1362226a":tt(()=>Te(()=>import("./student.html.63d2bdb9.js"),[])),"v-676a79ac":tt(()=>Te(()=>import("./video.html.b5826efb.js"),[])),"v-45a87c2c":tt(()=>Te(()=>import("./wx.html.7ec80f51.js"),[])),"v-3706649a":tt(()=>Te(()=>import("./404.html.e9cffbf9.js"),[]))};var Jt=(e={})=>e;function il(e,t,n){var r,o,s;t===void 0&&(t=50),n===void 0&&(n={});var i=(r=n.isImmediate)!=null&&r,l=(o=n.callback)!=null&&o,a=n.maxWait,u=Date.now(),c=[];function d(){if(a!==void 0){var m=Date.now()-u;if(m+t>=a)return a-m}return t}var h=function(){var m=[].slice.call(arguments),_=this;return new Promise(function(E,T){var g=i&&s===void 0;if(s!==void 0&&clearTimeout(s),s=setTimeout(function(){if(s=void 0,u=Date.now(),!i){var C=e.apply(_,m);l&&l(C),c.forEach(function(M){return(0,M.resolve)(C)}),c=[]}},d()),g){var b=e.apply(_,m);return l&&l(b),E(b)}c.push({resolve:E,reject:T})})};return h.cancel=function(m){s!==void 0&&clearTimeout(s),c.forEach(function(_){return(0,_.reject)(m)}),c=[]},h}/*!
   * vue-router v4.1.6
   * (c) 2022 Eduardo San Martin Morote
   * @license MIT
diff --git a/docs/assets/database.html.5e7c8999.js b/docs/assets/database.html.899276e6.js
similarity index 99%
rename from docs/assets/database.html.5e7c8999.js
rename to docs/assets/database.html.899276e6.js
index b7bf74fb..7bfbc126 100644
--- a/docs/assets/database.html.5e7c8999.js
+++ b/docs/assets/database.html.899276e6.js
@@ -1 +1 @@
-import{_ as t,o as d,c as r,e}from"./app.d00a1887.js";const a={},i=e('

3. 数据库设计

3.1 试卷表

  • 表名:t_exam_paper
  • 字段注释:
字段名类型注释
idint
namevarchar试卷名称
subject_idint学科
paper_typeint试卷类型( 1.固定试卷 4.时段试卷 6.任务试卷 )
grade_levelint年级
scoreint试卷总分(千分制)
question_countint题目数量
suggest_timeint建议时长(分钟)
limit_start_timedatetime时段试卷 开始时间
limit_end_timedatetime时段试卷 结束时间
frame_text_content_idint试卷框架 内容为JSON
create_userint
create_timedatetime
deletedbit
task_exam_idint

3.2 试卷答案表

  • 表名:t_exam_paper_answer
  • 字段注释:
字段名类型注释
idint
exam_paper_idint
paper_namevarchar试卷名称
paper_typeint试卷类型( 1.固定试卷 4.时段试卷 6.任务试卷 )
subject_idint学科
system_scoreint系统判定得分
user_scoreint最终得分(千分制)
paper_scoreint试卷总分
question_correctint做对题目数量
question_countint题目总数量
do_timeint做题时间(秒)
statusint试卷状态(1待判分 2完成)
create_userint学生
create_timedatetime提交时间
task_exam_idint

3.3 试卷题目答案表

  • 表名:t_exam_paper_question_customer_answer
  • 字段注释:
字段名类型注释
idint
question_idint题目Id
exam_paper_idint答案Id
exam_paper_answer_idint
question_typeint题型
subject_idint学科
customer_scoreint得分
question_scoreint题目原始分数
question_text_content_idint问题内容
answervarchar做题答案
text_content_idint做题内容
do_rightbit是否正确
create_userint做题人
create_timedatetime
item_orderint

3.4 消息表

  • 表名:t_message
  • 字段注释:
字段名类型注释
idint
titlevarchar标题
contentvarchar内容
create_timedatetime
send_user_idint发送者用户ID
send_user_namevarchar发送者用户名
send_real_namevarchar发送者真实姓名
receive_user_countint接收人数
read_countint已读人数

3.5 用户消息表

  • 表名:t_message_user
  • 字段注释:
字段名类型注释
idint
message_idint消息内容ID
receive_user_idint接收人ID
receive_user_namevarchar接收人用户名
receive_real_namevarchar接收人真实姓名
readedbit是否已读
create_timedatetime
read_timedatetime阅读时间

3.6 题目表

  • 表名:t_question
  • 字段注释:
字段名类型注释
idint
question_typeint1.单选题 2.多选题 3.判断题 4.填空题 5.简答题
subject_idint学科
scoreint题目总分(千分制)
grade_levelint级别
difficultint题目难度
correcttext正确答案
info_text_content_idint题目 填空、 题干、解析、答案等信息
create_userint创建人
statusint1.正常
create_timedatetime创建时间
deletedbit

3.7 学科表

  • 表名:t_subject
  • 字段注释:
字段名类型注释
idint
namevarchar语文 数学 英语 等
levelint年级 (1-12) 小学 初中 高中 大学
level_namevarchar一年级、二年级等
item_orderint排序
deletedbit

3.8 任务表

  • 表名:t_task_exam
  • 字段注释:
字段名类型注释
idint
titlevarchar
grade_levelint级别
frame_text_content_idint任务框架 内容为JSON
create_userint
create_timedatetime
deletedbit
create_user_namevarchar

3.9 用户任务表

  • 表名:t_task_exam_customer_answer
  • 字段注释:
字段名类型注释
idint
task_exam_idint
create_userint
create_timedatetime
text_content_idint任务完成情况(Json)

3.10 文本表

  • 表名:t_text_content
  • 字段注释:
字段名类型注释
idint
contenttext
create_timedatetime

3.11 用户表

  • 表名:t_user
  • 字段注释:
字段名类型注释
idint
user_uuidvarchar
user_namevarchar用户名
passwordvarchar
real_namevarchar真实姓名
ageint
sexint1.男 2女
birth_daydatetime
user_levelint学生年级(1-12)
phonevarchar
roleint1.学生 3.管理员
statusint1.启用 2禁用
image_pathvarchar头像地址
create_timedatetime
modify_timedatetime
last_active_timedatetime
deletedbit是否删除
wx_open_idvarchar微信openId

3.12 用户日志表

  • 表名:t_user_event_log
  • 字段注释:
字段名类型注释
idint
user_idint用户id
user_namevarchar用户名
real_namevarchar真实姓名
contenttext内容
create_timedatetime时间

3.13 用户Token表

  • 表名:t_user_token
  • 字段注释:
字段名类型注释
idint
tokenvarchar
user_idint用户Id
wx_open_idvarchar微信openId
create_timedatetime
end_timedatetime
user_namevarchar用户名
',40),h=[i];function n(_,l){return d(),r("div",null,h)}const s=t(a,[["render",n],["__file","database.html.vue"]]);export{s as default}; +import{_ as t,o as d,c as r,e}from"./app.ee529b4c.js";const a={},i=e('

3. 数据库设计

3.1 试卷表

  • 表名:t_exam_paper
  • 字段注释:
字段名类型注释
idint
namevarchar试卷名称
subject_idint学科
paper_typeint试卷类型( 1.固定试卷 4.时段试卷 6.任务试卷 )
grade_levelint年级
scoreint试卷总分(千分制)
question_countint题目数量
suggest_timeint建议时长(分钟)
limit_start_timedatetime时段试卷 开始时间
limit_end_timedatetime时段试卷 结束时间
frame_text_content_idint试卷框架 内容为JSON
create_userint
create_timedatetime
deletedbit
task_exam_idint

3.2 试卷答案表

  • 表名:t_exam_paper_answer
  • 字段注释:
字段名类型注释
idint
exam_paper_idint
paper_namevarchar试卷名称
paper_typeint试卷类型( 1.固定试卷 4.时段试卷 6.任务试卷 )
subject_idint学科
system_scoreint系统判定得分
user_scoreint最终得分(千分制)
paper_scoreint试卷总分
question_correctint做对题目数量
question_countint题目总数量
do_timeint做题时间(秒)
statusint试卷状态(1待判分 2完成)
create_userint学生
create_timedatetime提交时间
task_exam_idint

3.3 试卷题目答案表

  • 表名:t_exam_paper_question_customer_answer
  • 字段注释:
字段名类型注释
idint
question_idint题目Id
exam_paper_idint答案Id
exam_paper_answer_idint
question_typeint题型
subject_idint学科
customer_scoreint得分
question_scoreint题目原始分数
question_text_content_idint问题内容
answervarchar做题答案
text_content_idint做题内容
do_rightbit是否正确
create_userint做题人
create_timedatetime
item_orderint

3.4 消息表

  • 表名:t_message
  • 字段注释:
字段名类型注释
idint
titlevarchar标题
contentvarchar内容
create_timedatetime
send_user_idint发送者用户ID
send_user_namevarchar发送者用户名
send_real_namevarchar发送者真实姓名
receive_user_countint接收人数
read_countint已读人数

3.5 用户消息表

  • 表名:t_message_user
  • 字段注释:
字段名类型注释
idint
message_idint消息内容ID
receive_user_idint接收人ID
receive_user_namevarchar接收人用户名
receive_real_namevarchar接收人真实姓名
readedbit是否已读
create_timedatetime
read_timedatetime阅读时间

3.6 题目表

  • 表名:t_question
  • 字段注释:
字段名类型注释
idint
question_typeint1.单选题 2.多选题 3.判断题 4.填空题 5.简答题
subject_idint学科
scoreint题目总分(千分制)
grade_levelint级别
difficultint题目难度
correcttext正确答案
info_text_content_idint题目 填空、 题干、解析、答案等信息
create_userint创建人
statusint1.正常
create_timedatetime创建时间
deletedbit

3.7 学科表

  • 表名:t_subject
  • 字段注释:
字段名类型注释
idint
namevarchar语文 数学 英语 等
levelint年级 (1-12) 小学 初中 高中 大学
level_namevarchar一年级、二年级等
item_orderint排序
deletedbit

3.8 任务表

  • 表名:t_task_exam
  • 字段注释:
字段名类型注释
idint
titlevarchar
grade_levelint级别
frame_text_content_idint任务框架 内容为JSON
create_userint
create_timedatetime
deletedbit
create_user_namevarchar

3.9 用户任务表

  • 表名:t_task_exam_customer_answer
  • 字段注释:
字段名类型注释
idint
task_exam_idint
create_userint
create_timedatetime
text_content_idint任务完成情况(Json)

3.10 文本表

  • 表名:t_text_content
  • 字段注释:
字段名类型注释
idint
contenttext
create_timedatetime

3.11 用户表

  • 表名:t_user
  • 字段注释:
字段名类型注释
idint
user_uuidvarchar
user_namevarchar用户名
passwordvarchar
real_namevarchar真实姓名
ageint
sexint1.男 2女
birth_daydatetime
user_levelint学生年级(1-12)
phonevarchar
roleint1.学生 3.管理员
statusint1.启用 2禁用
image_pathvarchar头像地址
create_timedatetime
modify_timedatetime
last_active_timedatetime
deletedbit是否删除
wx_open_idvarchar微信openId

3.12 用户日志表

  • 表名:t_user_event_log
  • 字段注释:
字段名类型注释
idint
user_idint用户id
user_namevarchar用户名
real_namevarchar真实姓名
contenttext内容
create_timedatetime时间

3.13 用户Token表

  • 表名:t_user_token
  • 字段注释:
字段名类型注释
idint
tokenvarchar
user_idint用户Id
wx_open_idvarchar微信openId
create_timedatetime
end_timedatetime
user_namevarchar用户名
',40),h=[i];function n(_,l){return d(),r("div",null,h)}const s=t(a,[["render",n],["__file","database.html.vue"]]);export{s as default}; diff --git a/docs/assets/deploy.html.c8c4e875.js b/docs/assets/deploy.html.2c8ceef5.js similarity index 99% rename from docs/assets/deploy.html.c8c4e875.js rename to docs/assets/deploy.html.2c8ceef5.js index 1d3fb1c6..3102c576 100644 --- a/docs/assets/deploy.html.c8c4e875.js +++ b/docs/assets/deploy.html.2c8ceef5.js @@ -1,4 +1,4 @@ -import{_ as t,r as i,o,c as r,a as n,b as s,d as a,e as l}from"./app.d00a1887.js";const c={},p=l(`

6. 项目部署

6.1 集成部署

  • 在win11系统中输入命令,低版本的win会出现不兼容的问题,无法执行对应的命令。
  • 分别在\\source\\vue\\xzs-student目录和source\\vue\\xzs-admin目录,执行前端打包命令
npm config set sass_binary_site https://registry.npmmirror.com
+import{_ as t,r as i,o,c as r,a as n,b as s,d as a,e as l}from"./app.ee529b4c.js";const c={},p=l(`

6. 项目部署

6.1 集成部署

  • 在win11系统中输入命令,低版本的win会出现不兼容的问题,无法执行对应的命令。
  • 分别在\\source\\vue\\xzs-student目录和source\\vue\\xzs-admin目录,执行前端打包命令
npm config set sass_binary_site https://registry.npmmirror.com
 npm install --registry https://registry.npmmirror.com
 npm run build
 
`,4),d=n("li",null,"打包后的目录为student和admin",-1),u=n("li",null,"将文件放到\\source\\xzs\\src\\main\\resources\\static下,然后将java程序打包成jar包",-1),m=n("li",null,"修改application-prod.yml中的datasource地址",-1),k={href:"http://ip:8000/student",target:"_blank",rel:"noopener noreferrer"},v={href:"http://ip:8000/admin",target:"_blank",rel:"noopener noreferrer"},h=n("li",null,"执行下列命令,运行程序",-1),_=l(`
nohup java -Duser.timezone=Asia/Shanghai -jar -Dspring.profiles.active=prod  xzs-3.9.0.jar  > start1.log  2>&1 &
diff --git a/docs/assets/develop.html.e8acac83.js b/docs/assets/develop.html.29d0133c.js
similarity index 99%
rename from docs/assets/develop.html.e8acac83.js
rename to docs/assets/develop.html.29d0133c.js
index 87739f7b..eb8c25a9 100644
--- a/docs/assets/develop.html.e8acac83.js
+++ b/docs/assets/develop.html.29d0133c.js
@@ -1,4 +1,4 @@
-import{_ as l,r as d,o as a,c as r,a as e,b as n,d as s,e as t}from"./app.d00a1887.js";const c={},o=e("h1",{id:"_5-项目开发",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#_5-项目开发","aria-hidden":"true"},"#"),n(" 5. 项目开发")],-1),v=e("h3",{id:"_5-1-开发环境",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#_5-1-开发环境","aria-hidden":"true"},"#"),n(" 5.1 开发环境")],-1),u=e("thead",null,[e("tr",null,[e("th",null,"环境"),e("th",null,"版本"),e("th",null,"下载地址")])],-1),m=e("td",null,"NodeJs",-1),h=e("td",null,"16",-1),b={href:"https://nodejs.org/download/release/latest-v16.x/",target:"_blank",rel:"noopener noreferrer"},_=e("td",null,"Jdk",-1),p=e("td",null,"1.8",-1),x={href:"https://www.oracle.com/java/technologies/downloads/#java8-windows",target:"_blank",rel:"noopener noreferrer"},g=e("td",null,"Mysql",-1),w=e("td",null,"8.0",-1),f={href:"https://dev.mysql.com/downloads/windows/installer/8.0.html",target:"_blank",rel:"noopener noreferrer"},y=e("h3",{id:"_5-2-开发说明",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#_5-2-开发说明","aria-hidden":"true"},"#"),n(" 5.2 开发说明")],-1),k={href:"https://www.mindskip.net:999",target:"_blank",rel:"noopener noreferrer"},z=e("li",null,"代码下载 mysql版本,配合相应的数据库使用",-1),q=e("li",null,"安装mysql ,导入xzs-mysql.sql脚本",-1),j=e("li",null,"学生端默认账号:student / 123456",-1),I=e("li",null,"管理端默认账号:admin / 123456",-1),B=e("h3",{id:"_5-3-后端开发",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#_5-3-后端开发","aria-hidden":"true"},"#"),n(" 5.3 后端开发")],-1),N=e("li",null,"/uexam/source/xzs为后台代码,建议使用IntelliJ IDEA打开",-1),T=e("li",null,"打开application-dev.yml文件中,配置好mysql的服务地址",-1),V=e("li",null,"去七牛云官网申请好对象存储账号,修改application.yml中的qn相关的配置,七牛云主要用于文件存储",-1),E=e("li",null,"启动后台程序,默认端口为8000",-1),J={href:"http://ip:8000/student",target:"_blank",rel:"noopener noreferrer"},S={href:"http://ip:8000/admin",target:"_blank",rel:"noopener noreferrer"},L=t(`

5.4 前端开发

  • 在win11系统中输入命令,低版本的win会出现不兼容的问题,无法执行对应的命令。
  • 前端使用webstorm或者vscode,分别打开文件夹打开源代码\\source\\vue\\xzs-student和source\\vue\\xzs-admin
  • 执行下面2个命令,安装node_module:
npm config set sass_binary_site https://registry.npmmirror.com
+import{_ as l,r as d,o as a,c as r,a as e,b as n,d as s,e as t}from"./app.ee529b4c.js";const c={},o=e("h1",{id:"_5-项目开发",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#_5-项目开发","aria-hidden":"true"},"#"),n(" 5. 项目开发")],-1),v=e("h3",{id:"_5-1-开发环境",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#_5-1-开发环境","aria-hidden":"true"},"#"),n(" 5.1 开发环境")],-1),u=e("thead",null,[e("tr",null,[e("th",null,"环境"),e("th",null,"版本"),e("th",null,"下载地址")])],-1),m=e("td",null,"NodeJs",-1),h=e("td",null,"16",-1),b={href:"https://nodejs.org/download/release/latest-v16.x/",target:"_blank",rel:"noopener noreferrer"},_=e("td",null,"Jdk",-1),p=e("td",null,"1.8",-1),x={href:"https://www.oracle.com/java/technologies/downloads/#java8-windows",target:"_blank",rel:"noopener noreferrer"},g=e("td",null,"Mysql",-1),w=e("td",null,"8.0",-1),f={href:"https://dev.mysql.com/downloads/windows/installer/8.0.html",target:"_blank",rel:"noopener noreferrer"},y=e("h3",{id:"_5-2-开发说明",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#_5-2-开发说明","aria-hidden":"true"},"#"),n(" 5.2 开发说明")],-1),k={href:"https://www.mindskip.net:999",target:"_blank",rel:"noopener noreferrer"},z=e("li",null,"代码下载 mysql版本,配合相应的数据库使用",-1),q=e("li",null,"安装mysql ,导入xzs-mysql.sql脚本",-1),j=e("li",null,"学生端默认账号:student / 123456",-1),I=e("li",null,"管理端默认账号:admin / 123456",-1),B=e("h3",{id:"_5-3-后端开发",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#_5-3-后端开发","aria-hidden":"true"},"#"),n(" 5.3 后端开发")],-1),N=e("li",null,"/uexam/source/xzs为后台代码,建议使用IntelliJ IDEA打开",-1),T=e("li",null,"打开application-dev.yml文件中,配置好mysql的服务地址",-1),V=e("li",null,"去七牛云官网申请好对象存储账号,修改application.yml中的qn相关的配置,七牛云主要用于文件存储",-1),E=e("li",null,"启动后台程序,默认端口为8000",-1),J={href:"http://ip:8000/student",target:"_blank",rel:"noopener noreferrer"},S={href:"http://ip:8000/admin",target:"_blank",rel:"noopener noreferrer"},L=t(`

5.4 前端开发

  • 在win11系统中输入命令,低版本的win会出现不兼容的问题,无法执行对应的命令。
  • 前端使用webstorm或者vscode,分别打开文件夹打开源代码\\source\\vue\\xzs-student和source\\vue\\xzs-admin
  • 执行下面2个命令,安装node_module:
npm config set sass_binary_site https://registry.npmmirror.com
 npm install --registry https://registry.npmmirror.com  
 
  • 若执行上面命令报错,先删除node_modules文件夹,再解压node_modules.zip文件到当前文件夹。
  • 执行下面命令,启动前端代码
npm run serve
 
  • 打包命名
npm run build
diff --git a/docs/assets/feature.html.269ba688.js b/docs/assets/feature.html.f69d07d5.js
similarity index 98%
rename from docs/assets/feature.html.269ba688.js
rename to docs/assets/feature.html.f69d07d5.js
index 0588fd1b..e6c700be 100644
--- a/docs/assets/feature.html.269ba688.js
+++ b/docs/assets/feature.html.f69d07d5.js
@@ -1 +1 @@
-import{_ as t,o as d,c as r,e}from"./app.d00a1887.js";const a={},i=e('

1. 功能列表

1.1 学生系统功能

模块介绍
登录用户名、密码
注册年级、用户名、密码
任务中心管理员发布的年级任务,每个学生只能做一次
考试题干支持文本、图片、数学公式、表格等,学生答题支持:文本
固定试卷可重复练习、自行批改的试卷
时段试卷在时间限制内,可重复练习、自行批改的试卷
考试记录查看答卷记录和试卷信息
错题本答错题目会自动进入错题本,显示题目基本信息
个人信息显示学生个人资料
更新信息修改个人资料、头像
个人动态显示用户最近的个人动态
消息中心用于接收管理员发送的消息

1.2 管理系统功能

模块介绍
登录用户名、密码
主页试卷总数、题目总数、用户活跃度、题目月数量
学生列表显示系统所有的学生,新增、修改、删除、禁用
管理员列表显示系统所有的管理员,新增、修改、删除、禁用
学科列表学科查询、修改、删除
学科创编创建学科
试卷列表试卷查询、修改、删除
试卷创编创建的试卷为时段试卷、固定试卷、任务试卷
题目列表题目查询、修改、删除
题目创建题目支持单选题、多选题、判断题、填空题、简答题,题干支持文本、图片、表格、数学公式
任务列表任务查询、修改、删除
消息列表显示已发送的消息,消息已读人数等信息
消息发送发送消息给多个用户
用户日志显示所有用户日志
个人资料显示管理员用户名、真实姓名
时间线显示管理员创建时间
修改资料修改姓名、手机号

1.3 小程序功能

模块介绍
登录用户登录登出功能,登录会自动绑定微信账号,登出会解绑
注册年级、用户名、密码
任务中心管理员发布的年级任务,每个学生只能做一次
考试题干支持文本、图片、数学公式、表格等,学生答题支持:文本
固定试卷可重复练习、自行批改的试卷
时段试卷在时间限制内,可重复练习、自行批改的试卷
考试记录查看答卷记录和试卷信息
错题本答错题目会自动进入错题本,显示题目基本信息
个人信息显示学生个人资料
更新信息修改个人资料、头像
个人动态显示用户最近的个人动态
消息中心用于接收管理员发送的消息

展示图

',11),s=[i];function h(n,c){return d(),r("div",null,s)}const p=t(a,[["render",h],["__file","feature.html.vue"]]);export{p as default}; +import{_ as t,o as d,c as r,e}from"./app.ee529b4c.js";const a={},i=e('

1. 功能列表

1.1 学生系统功能

模块介绍
登录用户名、密码
注册年级、用户名、密码
任务中心管理员发布的年级任务,每个学生只能做一次
考试题干支持文本、图片、数学公式、表格等,学生答题支持:文本
固定试卷可重复练习、自行批改的试卷
时段试卷在时间限制内,可重复练习、自行批改的试卷
考试记录查看答卷记录和试卷信息
错题本答错题目会自动进入错题本,显示题目基本信息
个人信息显示学生个人资料
更新信息修改个人资料、头像
个人动态显示用户最近的个人动态
消息中心用于接收管理员发送的消息

1.2 管理系统功能

模块介绍
登录用户名、密码
主页试卷总数、题目总数、用户活跃度、题目月数量
学生列表显示系统所有的学生,新增、修改、删除、禁用
管理员列表显示系统所有的管理员,新增、修改、删除、禁用
学科列表学科查询、修改、删除
学科创编创建学科
试卷列表试卷查询、修改、删除
试卷创编创建的试卷为时段试卷、固定试卷、任务试卷
题目列表题目查询、修改、删除
题目创建题目支持单选题、多选题、判断题、填空题、简答题,题干支持文本、图片、表格、数学公式
任务列表任务查询、修改、删除
消息列表显示已发送的消息,消息已读人数等信息
消息发送发送消息给多个用户
用户日志显示所有用户日志
个人资料显示管理员用户名、真实姓名
时间线显示管理员创建时间
修改资料修改姓名、手机号

1.3 小程序功能

模块介绍
登录用户登录登出功能,登录会自动绑定微信账号,登出会解绑
注册年级、用户名、密码
任务中心管理员发布的年级任务,每个学生只能做一次
考试题干支持文本、图片、数学公式、表格等,学生答题支持:文本
固定试卷可重复练习、自行批改的试卷
时段试卷在时间限制内,可重复练习、自行批改的试卷
考试记录查看答卷记录和试卷信息
错题本答错题目会自动进入错题本,显示题目基本信息
个人信息显示学生个人资料
更新信息修改个人资料、头像
个人动态显示用户最近的个人动态
消息中心用于接收管理员发送的消息

展示图

',11),s=[i];function h(n,c){return d(),r("div",null,s)}const p=t(a,[["render",h],["__file","feature.html.vue"]]);export{p as default}; diff --git a/docs/assets/index.html.1bf545d5.js b/docs/assets/index.html.e8015e4a.js similarity index 98% rename from docs/assets/index.html.1bf545d5.js rename to docs/assets/index.html.e8015e4a.js index c8504077..3594d327 100644 --- a/docs/assets/index.html.1bf545d5.js +++ b/docs/assets/index.html.e8015e4a.js @@ -1 +1 @@ -import{_ as n,r,o,c as a,a as i,b as t,d as l,e as s}from"./app.d00a1887.js";const h={},d=i("h3",{id:"项目介绍",tabindex:"-1"},[i("a",{class:"header-anchor",href:"#项目介绍","aria-hidden":"true"},"#"),t(" 项目介绍")],-1),c=i("p",null,"学之思开源考试系统是一款 java + vue 的前后端分离的考试系统。主要优点是开发、部署简单快捷、界面设计友好、代码结构清晰。支持web端和微信小程序,能覆盖到pc机和手机等设备。 支持多种部署方式:集成部署、前后端分离部署、docker部署。",-1),p=i("ul",null,[i("li",null,"码云最有价值开源项目"),i("li",null,"累计star数超过 20000+"),i("li",null,"开源在线考试系统排行首位"),i("li",null,"交流人数超过 9000+")],-1),m=i("h3",{id:"数据库脚本下载教程-gitee-码云",tabindex:"-1"},[i("a",{class:"header-anchor",href:"#数据库脚本下载教程-gitee-码云","aria-hidden":"true"},"#"),t(" 数据库脚本下载教程( gitee/码云 )")],-1),g={href:"https://gitee.com/mindskip",target:"_blank",rel:"noopener noreferrer"},_={start:"2"},u={href:"https://gitee.com/mindskip/xzs-mysql",target:"_blank",rel:"noopener noreferrer"},b={href:"https://gitee.com/mindskip/uexam",target:"_blank",rel:"noopener noreferrer"},k={start:"3"},w={href:"https://gitee.com/oauth/authorize?client_id=4d99f4231e5d977170b0e34d1ebedf1a3b2a4301a61f2524716f82f2ddd5b52c&redirect_uri=https://www.mindskip.net/gitee.html&response_type=code",target:"_blank",rel:"noopener noreferrer"},f=s('
  • ',5),x=i("h3",{id:"数据库脚本下载教程-github",tabindex:"-1"},[i("a",{class:"header-anchor",href:"#数据库脚本下载教程-github","aria-hidden":"true"},"#"),t(" 数据库脚本下载教程( github )")],-1),q={href:"https://github.com/mindskip",target:"_blank",rel:"noopener noreferrer"},y={start:"2"},j={href:"https://github.com/mindskip/xzs-mysql",target:"_blank",rel:"noopener noreferrer"},z={href:"https://github.com/mindskip/xzs",target:"_blank",rel:"noopener noreferrer"},v={start:"3"},N={href:"https://github.com/login/oauth/authorize?client_id=b03c1e08799da8352da5&redirect_uri=https://www.mindskip.net/github.html",target:"_blank",rel:"noopener noreferrer"},V=s('
    1. 如无法下载,可使用 gitee/码云 脚本下载,github脚本下载不稳定
  • ',6),B=i("h3",{id:"视频教程",tabindex:"-1"},[i("a",{class:"header-anchor",href:"#视频教程","aria-hidden":"true"},"#"),t(" 视频教程")],-1),E={href:"https://space.bilibili.com/1389892305",target:"_blank",rel:"noopener noreferrer"},I=s('

    QQ交流群

    • 开源交流群⑰:624825080
    • 开源交流群⑯:556522923 (满)
    • 开源交流群⑮:675037554 (满)
    • 开源交流群⑭:249966898 (满)
    • 开源交流群⑬:629266246 (满)
    • 开源交流群⑫:490584561 (满)
    • 开源交流群⑪:626073476 (满)
    • 开源交流群⑩:575732100 (满)
    • 开源交流群⑨:604864648 (满)
    • 开源交流群⑧:902855996 (满)
    • 开源交流群⑦:873533715 (满)
    • 开源交流群⑥:593529956 (满)
    • 开源交流群⑤:1074095891 (满)
    • 开源交流群④:1039666905 (满)
    • 开源交流群③:670546875 (满)
    • 开源交流群②:947654489 (满)
    • 开源交流群①:530136203 (满)
    ',2);function L(Q,C){const e=r("ExternalLinkIcon");return o(),a("div",null,[d,c,p,m,i("ul",null,[i("li",null,[i("ol",null,[i("li",null,[t("注册登录码云账号,然后点击仓库地址"),i("a",g,[t("https://gitee.com/mindskip"),l(e)])])])]),i("li",null,[i("ol",_,[i("li",null,[t("star "),i("a",u,[t("https://gitee.com/mindskip/xzs-mysql"),l(e)]),t(" 或者 "),i("a",b,[t("https://gitee.com/mindskip/uexam"),l(e)]),t(" 仓库")])])]),i("li",null,[i("ol",k,[i("li",null,[i("a",w,[t("点我下载数据脚本"),l(e)])])])]),f]),x,i("ul",null,[i("li",null,[i("ol",null,[i("li",null,[t("注册登录github账号,然后点击仓库地址"),i("a",q,[t("https://github.com/mindskip"),l(e)])])])]),i("li",null,[i("ol",y,[i("li",null,[t("star "),i("a",j,[t("https://github.com/mindskip/xzs-mysql"),l(e)]),t(" 或者 "),i("a",z,[t("https://github.com/mindskip/xzs"),l(e)]),t(" 仓库")])])]),i("li",null,[i("ol",v,[i("li",null,[i("a",N,[t("点我下载数据脚本"),l(e)])])])]),V]),B,i("ul",null,[i("li",null,[i("a",E,[t("https://space.bilibili.com/1389892305"),l(e)])])]),I])}const T=n(h,[["render",L],["__file","index.html.vue"]]);export{T as default}; +import{_ as n,r,o,c as a,a as i,b as t,d as l,e as s}from"./app.ee529b4c.js";const h={},d=i("h3",{id:"项目介绍",tabindex:"-1"},[i("a",{class:"header-anchor",href:"#项目介绍","aria-hidden":"true"},"#"),t(" 项目介绍")],-1),c=i("p",null,"学之思开源考试系统是一款 java + vue 的前后端分离的考试系统。主要优点是开发、部署简单快捷、界面设计友好、代码结构清晰。支持web端和微信小程序,能覆盖到pc机和手机等设备。 支持多种部署方式:集成部署、前后端分离部署、docker部署。",-1),p=i("ul",null,[i("li",null,"码云最有价值开源项目"),i("li",null,"累计star数超过 20000+"),i("li",null,"开源在线考试系统排行首位"),i("li",null,"交流人数超过 9000+")],-1),m=i("h3",{id:"数据库脚本下载教程-gitee-码云",tabindex:"-1"},[i("a",{class:"header-anchor",href:"#数据库脚本下载教程-gitee-码云","aria-hidden":"true"},"#"),t(" 数据库脚本下载教程( gitee/码云 )")],-1),g={href:"https://gitee.com/mindskip",target:"_blank",rel:"noopener noreferrer"},_={start:"2"},u={href:"https://gitee.com/mindskip/xzs-mysql",target:"_blank",rel:"noopener noreferrer"},b={href:"https://gitee.com/mindskip/uexam",target:"_blank",rel:"noopener noreferrer"},k={start:"3"},w={href:"https://gitee.com/oauth/authorize?client_id=4d99f4231e5d977170b0e34d1ebedf1a3b2a4301a61f2524716f82f2ddd5b52c&redirect_uri=https://www.mindskip.net/gitee.html&response_type=code",target:"_blank",rel:"noopener noreferrer"},f=s('
  • ',5),x=i("h3",{id:"数据库脚本下载教程-github",tabindex:"-1"},[i("a",{class:"header-anchor",href:"#数据库脚本下载教程-github","aria-hidden":"true"},"#"),t(" 数据库脚本下载教程( github )")],-1),q={href:"https://github.com/mindskip",target:"_blank",rel:"noopener noreferrer"},y={start:"2"},j={href:"https://github.com/mindskip/xzs-mysql",target:"_blank",rel:"noopener noreferrer"},z={href:"https://github.com/mindskip/xzs",target:"_blank",rel:"noopener noreferrer"},v={start:"3"},N={href:"https://github.com/login/oauth/authorize?client_id=b03c1e08799da8352da5&redirect_uri=https://www.mindskip.net/github.html",target:"_blank",rel:"noopener noreferrer"},V=s('
    1. 如无法下载,可使用 gitee/码云 脚本下载,github脚本下载不稳定
  • ',6),B=i("h3",{id:"视频教程",tabindex:"-1"},[i("a",{class:"header-anchor",href:"#视频教程","aria-hidden":"true"},"#"),t(" 视频教程")],-1),E={href:"https://space.bilibili.com/1389892305",target:"_blank",rel:"noopener noreferrer"},I=s('

    QQ交流群

    • 开源交流群⑰:624825080
    • 开源交流群⑯:556522923 (满)
    • 开源交流群⑮:675037554 (满)
    • 开源交流群⑭:249966898 (满)
    • 开源交流群⑬:629266246 (满)
    • 开源交流群⑫:490584561 (满)
    • 开源交流群⑪:626073476 (满)
    • 开源交流群⑩:575732100 (满)
    • 开源交流群⑨:604864648 (满)
    • 开源交流群⑧:902855996 (满)
    • 开源交流群⑦:873533715 (满)
    • 开源交流群⑥:593529956 (满)
    • 开源交流群⑤:1074095891 (满)
    • 开源交流群④:1039666905 (满)
    • 开源交流群③:670546875 (满)
    • 开源交流群②:947654489 (满)
    • 开源交流群①:530136203 (满)
    ',2);function L(Q,C){const e=r("ExternalLinkIcon");return o(),a("div",null,[d,c,p,m,i("ul",null,[i("li",null,[i("ol",null,[i("li",null,[t("注册登录码云账号,然后点击仓库地址"),i("a",g,[t("https://gitee.com/mindskip"),l(e)])])])]),i("li",null,[i("ol",_,[i("li",null,[t("star "),i("a",u,[t("https://gitee.com/mindskip/xzs-mysql"),l(e)]),t(" 或者 "),i("a",b,[t("https://gitee.com/mindskip/uexam"),l(e)]),t(" 仓库")])])]),i("li",null,[i("ol",k,[i("li",null,[i("a",w,[t("点我下载数据脚本"),l(e)])])])]),f]),x,i("ul",null,[i("li",null,[i("ol",null,[i("li",null,[t("注册登录github账号,然后点击仓库地址"),i("a",q,[t("https://github.com/mindskip"),l(e)])])])]),i("li",null,[i("ol",y,[i("li",null,[t("star "),i("a",j,[t("https://github.com/mindskip/xzs-mysql"),l(e)]),t(" 或者 "),i("a",z,[t("https://github.com/mindskip/xzs"),l(e)]),t(" 仓库")])])]),i("li",null,[i("ol",v,[i("li",null,[i("a",N,[t("点我下载数据脚本"),l(e)])])])]),V]),B,i("ul",null,[i("li",null,[i("a",E,[t("https://space.bilibili.com/1389892305"),l(e)])])]),I])}const T=n(h,[["render",L],["__file","index.html.vue"]]);export{T as default}; diff --git a/docs/assets/skill.html.03087e5a.js b/docs/assets/skill.html.76c41637.js similarity index 96% rename from docs/assets/skill.html.03087e5a.js rename to docs/assets/skill.html.76c41637.js index 5c512b83..89fe2872 100644 --- a/docs/assets/skill.html.03087e5a.js +++ b/docs/assets/skill.html.76c41637.js @@ -1 +1 @@ -import{_ as e,o as t,c as i,e as a}from"./app.d00a1887.js";const d={},r=a('

    2. 技术栈

    2.1 运行环境

    环境版本
    操作系统Windows / Linux
    NodeJs16
    Jdk1.8
    Mysql8.0

    2.2 后端系统

    • spring-boot 2.1.6.RELEASE
    • spring-boot-security 用户登录验证
    • undertow web容器
    • mysql 最流行的开源数据库
    • mybatis 数据库中间件
    • hikari 速度最快的数据库连接池
    • 七牛云存储 分布式文件存储中心

    2.3 前端系统

    • vue 采用新版,使用了vue-cli4搭建的系统,减少大量配置文件
    • element-ui 最流行的vue UI框架
    • vue-element-admin 深度定制版
    • echarts 图表统计
    • ueditor 题目编辑器

    2.4 微信小程序

    • iView 主题样式

    2.5 架构图

    架构图

    ',11),l=[r];function h(n,s){return t(),i("div",null,l)}const o=e(d,[["render",h],["__file","skill.html.vue"]]);export{o as default}; +import{_ as e,o as t,c as i,e as a}from"./app.ee529b4c.js";const d={},r=a('

    2. 技术栈

    2.1 运行环境

    环境版本
    操作系统Windows / Linux
    NodeJs16
    Jdk1.8
    Mysql8.0

    2.2 后端系统

    • spring-boot 2.1.6.RELEASE
    • spring-boot-security 用户登录验证
    • undertow web容器
    • mysql 最流行的开源数据库
    • mybatis 数据库中间件
    • hikari 速度最快的数据库连接池
    • 七牛云存储 分布式文件存储中心

    2.3 前端系统

    • vue 采用新版,使用了vue-cli4搭建的系统,减少大量配置文件
    • element-ui 最流行的vue UI框架
    • vue-element-admin 深度定制版
    • echarts 图表统计
    • ueditor 题目编辑器

    2.4 微信小程序

    • iView 主题样式

    2.5 架构图

    架构图

    ',11),l=[r];function h(n,s){return t(),i("div",null,l)}const o=e(d,[["render",h],["__file","skill.html.vue"]]);export{o as default}; diff --git a/docs/assets/student.html.79831c63.js b/docs/assets/student.html.440619d8.js similarity index 95% rename from docs/assets/student.html.79831c63.js rename to docs/assets/student.html.440619d8.js index 836f159b..d0ee919d 100644 --- a/docs/assets/student.html.79831c63.js +++ b/docs/assets/student.html.440619d8.js @@ -1 +1 @@ -const l=JSON.parse('{"key":"v-1362226a","path":"/guide/student.html","title":"4.1 学生端","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":3,"title":"4.1.1 登录","slug":"_4-1-1-登录","link":"#_4-1-1-登录","children":[]},{"level":3,"title":"4.1.2 注册","slug":"_4-1-2-注册","link":"#_4-1-2-注册","children":[]},{"level":3,"title":"4.1.3 登出","slug":"_4-1-3-登出","link":"#_4-1-3-登出","children":[]},{"level":3,"title":"4.1.4 首页","slug":"_4-1-4-首页","link":"#_4-1-4-首页","children":[]},{"level":3,"title":"4.1.5 任务中心","slug":"_4-1-5-任务中心","link":"#_4-1-5-任务中心","children":[]},{"level":3,"title":"4.1.6 学科列表","slug":"_4-1-6-学科列表","link":"#_4-1-6-学科列表","children":[]},{"level":3,"title":"4.1.7 试卷分页","slug":"_4-1-7-试卷分页","link":"#_4-1-7-试卷分页","children":[]},{"level":3,"title":"4.1.8 试卷查询","slug":"_4-1-8-试卷查询","link":"#_4-1-8-试卷查询","children":[]},{"level":3,"title":"4.1.9 试卷提交","slug":"_4-1-9-试卷提交","link":"#_4-1-9-试卷提交","children":[]},{"level":3,"title":"4.1.10 答卷查询","slug":"_4-1-10-答卷查询","link":"#_4-1-10-答卷查询","children":[]},{"level":3,"title":"4.1.11 试卷批改","slug":"_4-1-11-试卷批改","link":"#_4-1-11-试卷批改","children":[]},{"level":3,"title":"4.1.12 考试记录分页","slug":"_4-1-12-考试记录分页","link":"#_4-1-12-考试记录分页","children":[]},{"level":3,"title":"4.1.13 错题本分页","slug":"_4-1-13-错题本分页","link":"#_4-1-13-错题本分页","children":[]},{"level":3,"title":"4.1.14 答题详情","slug":"_4-1-14-答题详情","link":"#_4-1-14-答题详情","children":[]},{"level":3,"title":"4.1.15 用户动态","slug":"_4-1-15-用户动态","link":"#_4-1-15-用户动态","children":[]},{"level":3,"title":"4.1.16 当前用户信息","slug":"_4-1-16-当前用户信息","link":"#_4-1-16-当前用户信息","children":[]},{"level":3,"title":"4.1.17 修改用户信息","slug":"_4-1-17-修改用户信息","link":"#_4-1-17-修改用户信息","children":[]},{"level":3,"title":"4.1.18 消息分页","slug":"_4-1-18-消息分页","link":"#_4-1-18-消息分页","children":[]},{"level":3,"title":"4.1.19 消息标记已读","slug":"_4-1-19-消息标记已读","link":"#_4-1-19-消息标记已读","children":[]},{"level":3,"title":"4.1.20 未读消息数量","slug":"_4-1-20-未读消息数量","link":"#_4-1-20-未读消息数量","children":[]}],"git":{"updatedTime":1726100103000,"contributors":[{"name":"mindskip","email":"mindskip@qq.com","commits":23},{"name":"思维跳跃科技","email":"mindskip@qq.com","commits":12}]},"filePathRelative":"guide/student.md"}');export{l as data}; +const l=JSON.parse('{"key":"v-1362226a","path":"/guide/student.html","title":"4.1 学生端","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":3,"title":"4.1.1 登录","slug":"_4-1-1-登录","link":"#_4-1-1-登录","children":[]},{"level":3,"title":"4.1.2 注册","slug":"_4-1-2-注册","link":"#_4-1-2-注册","children":[]},{"level":3,"title":"4.1.3 登出","slug":"_4-1-3-登出","link":"#_4-1-3-登出","children":[]},{"level":3,"title":"4.1.4 首页","slug":"_4-1-4-首页","link":"#_4-1-4-首页","children":[]},{"level":3,"title":"4.1.5 任务中心","slug":"_4-1-5-任务中心","link":"#_4-1-5-任务中心","children":[]},{"level":3,"title":"4.1.6 学科列表","slug":"_4-1-6-学科列表","link":"#_4-1-6-学科列表","children":[]},{"level":3,"title":"4.1.7 试卷分页","slug":"_4-1-7-试卷分页","link":"#_4-1-7-试卷分页","children":[]},{"level":3,"title":"4.1.8 试卷查询","slug":"_4-1-8-试卷查询","link":"#_4-1-8-试卷查询","children":[]},{"level":3,"title":"4.1.9 试卷提交","slug":"_4-1-9-试卷提交","link":"#_4-1-9-试卷提交","children":[]},{"level":3,"title":"4.1.10 答卷查询","slug":"_4-1-10-答卷查询","link":"#_4-1-10-答卷查询","children":[]},{"level":3,"title":"4.1.11 试卷批改","slug":"_4-1-11-试卷批改","link":"#_4-1-11-试卷批改","children":[]},{"level":3,"title":"4.1.12 考试记录分页","slug":"_4-1-12-考试记录分页","link":"#_4-1-12-考试记录分页","children":[]},{"level":3,"title":"4.1.13 错题本分页","slug":"_4-1-13-错题本分页","link":"#_4-1-13-错题本分页","children":[]},{"level":3,"title":"4.1.14 答题详情","slug":"_4-1-14-答题详情","link":"#_4-1-14-答题详情","children":[]},{"level":3,"title":"4.1.15 用户动态","slug":"_4-1-15-用户动态","link":"#_4-1-15-用户动态","children":[]},{"level":3,"title":"4.1.16 当前用户信息","slug":"_4-1-16-当前用户信息","link":"#_4-1-16-当前用户信息","children":[]},{"level":3,"title":"4.1.17 修改用户信息","slug":"_4-1-17-修改用户信息","link":"#_4-1-17-修改用户信息","children":[]},{"level":3,"title":"4.1.18 消息分页","slug":"_4-1-18-消息分页","link":"#_4-1-18-消息分页","children":[]},{"level":3,"title":"4.1.19 消息标记已读","slug":"_4-1-19-消息标记已读","link":"#_4-1-19-消息标记已读","children":[]},{"level":3,"title":"4.1.20 未读消息数量","slug":"_4-1-20-未读消息数量","link":"#_4-1-20-未读消息数量","children":[]}],"git":{"updatedTime":1727171446000,"contributors":[{"name":"mindskip","email":"mindskip@qq.com","commits":23},{"name":"思维跳跃科技","email":"mindskip@qq.com","commits":13}]},"filePathRelative":"guide/student.md"}');export{l as data}; diff --git a/docs/assets/student.html.5690993d.js b/docs/assets/student.html.63d2bdb9.js similarity index 99% rename from docs/assets/student.html.5690993d.js rename to docs/assets/student.html.63d2bdb9.js index fad32486..a00da294 100644 --- a/docs/assets/student.html.5690993d.js +++ b/docs/assets/student.html.63d2bdb9.js @@ -1,4 +1,4 @@ -import{_ as e,o as i,c as n,e as u}from"./app.d00a1887.js";const d={},s=u(`

    4.1 学生端

    4.1.1 登录

    • 接口地址:/api/user/login
    • 请求参数:
    {
    +import{_ as e,o as i,c as n,e as u}from"./app.ee529b4c.js";const d={},s=u(`

    4.1 学生端

    4.1.1 登录

    • 接口地址:/api/user/login
    • 请求参数:
    {
         "userName": "student",  //用户名
         "password": "",  //密码
         "remember": false  //下次自动登录
    diff --git a/docs/assets/video.html.00e64dae.js b/docs/assets/video.html.86ee6545.js
    similarity index 91%
    rename from docs/assets/video.html.00e64dae.js
    rename to docs/assets/video.html.86ee6545.js
    index 0814bf75..9cae6797 100644
    --- a/docs/assets/video.html.00e64dae.js
    +++ b/docs/assets/video.html.86ee6545.js
    @@ -1 +1 @@
    -const e=JSON.parse('{"key":"v-676a79ac","path":"/guide/video.html","title":"7. 视频教程","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":3,"title":"7.1 基础软件安装","slug":"_7-1-基础软件安装","link":"#_7-1-基础软件安装","children":[]},{"level":3,"title":"7.2 本地代码调试运行","slug":"_7-2-本地代码调试运行","link":"#_7-2-本地代码调试运行","children":[]},{"level":3,"title":"7.3 微信小程序开发","slug":"_7-3-微信小程序开发","link":"#_7-3-微信小程序开发","children":[]},{"level":3,"title":"7.4 代码配置介绍","slug":"_7-4-代码配置介绍","link":"#_7-4-代码配置介绍","children":[]},{"level":3,"title":"7.5 win系统部署","slug":"_7-5-win系统部署","link":"#_7-5-win系统部署","children":[]},{"level":3,"title":"7.6 CentOS系统部署","slug":"_7-6-centos系统部署","link":"#_7-6-centos系统部署","children":[]},{"level":3,"title":"7.7 宝塔面板部署考试系统","slug":"_7-7-宝塔面板部署考试系统","link":"#_7-7-宝塔面板部署考试系统","children":[]},{"level":3,"title":"7.8 使用手册","slug":"_7-8-使用手册","link":"#_7-8-使用手册","children":[]}],"git":{"updatedTime":1719794967000,"contributors":[{"name":"mindskip","email":"mindskip@qq.com","commits":10},{"name":"思维跳跃科技","email":"mindskip@qq.com","commits":1}]},"filePathRelative":"guide/video.md"}');export{e as data};
    +const e=JSON.parse('{"key":"v-676a79ac","path":"/guide/video.html","title":"7. 视频教程","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":3,"title":"7.1 基础软件安装","slug":"_7-1-基础软件安装","link":"#_7-1-基础软件安装","children":[]},{"level":3,"title":"7.2 本地代码调试运行","slug":"_7-2-本地代码调试运行","link":"#_7-2-本地代码调试运行","children":[]},{"level":3,"title":"7.3 微信小程序开发","slug":"_7-3-微信小程序开发","link":"#_7-3-微信小程序开发","children":[]},{"level":3,"title":"7.4 代码配置介绍","slug":"_7-4-代码配置介绍","link":"#_7-4-代码配置介绍","children":[]},{"level":3,"title":"7.5 win系统部署","slug":"_7-5-win系统部署","link":"#_7-5-win系统部署","children":[]},{"level":3,"title":"7.6 CentOS系统部署","slug":"_7-6-centos系统部署","link":"#_7-6-centos系统部署","children":[]},{"level":3,"title":"7.7 宝塔面板部署考试系统","slug":"_7-7-宝塔面板部署考试系统","link":"#_7-7-宝塔面板部署考试系统","children":[]},{"level":3,"title":"7.8 使用手册","slug":"_7-8-使用手册","link":"#_7-8-使用手册","children":[]}],"git":{"updatedTime":1727171446000,"contributors":[{"name":"mindskip","email":"mindskip@qq.com","commits":10},{"name":"思维跳跃科技","email":"mindskip@qq.com","commits":2}]},"filePathRelative":"guide/video.md"}');export{e as data};
    diff --git a/docs/assets/video.html.048c06d9.js b/docs/assets/video.html.b5826efb.js
    similarity index 79%
    rename from docs/assets/video.html.048c06d9.js
    rename to docs/assets/video.html.b5826efb.js
    index eb88580f..36207144 100644
    --- a/docs/assets/video.html.048c06d9.js
    +++ b/docs/assets/video.html.b5826efb.js
    @@ -1,13 +1,13 @@
    -import{_ as t,r as o,o as a,c as d,a as l,b as i,d as n,e as s}from"./app.d00a1887.js";const r={},c=l("h1",{id:"_7-视频教程",tabindex:"-1"},[l("a",{class:"header-anchor",href:"#_7-视频教程","aria-hidden":"true"},"#"),i(" 7. 视频教程")],-1),_=l("h3",{id:"_7-1-基础软件安装",tabindex:"-1"},[l("a",{class:"header-anchor",href:"#_7-1-基础软件安装","aria-hidden":"true"},"#"),i(" 7.1 基础软件安装")],-1),h={href:"https://gitee.com/mindskip/xzs-mysql",target:"_blank",rel:"noopener noreferrer"},u=l("li",null,"加群QQ交流群,找管理员拿到数据库脚本",-1),m=l("li",null,"工具介绍",-1),p=s(`
        ideaIU-2020.3.3 : java开发工具
    +import{_ as t,r as o,o as a,c as d,a as l,b as i,d as n,e as s}from"./app.ee529b4c.js";const r={},c=l("h1",{id:"_7-视频教程",tabindex:"-1"},[l("a",{class:"header-anchor",href:"#_7-视频教程","aria-hidden":"true"},"#"),i(" 7. 视频教程")],-1),_=l("h3",{id:"_7-1-基础软件安装",tabindex:"-1"},[l("a",{class:"header-anchor",href:"#_7-1-基础软件安装","aria-hidden":"true"},"#"),i(" 7.1 基础软件安装")],-1),h={href:"https://gitee.com/mindskip/xzs-mysql",target:"_blank",rel:"noopener noreferrer"},u={href:"https://www.mindskip.net:999",target:"_blank",rel:"noopener noreferrer"},m=l("li",null,"工具介绍",-1),p=s(`
        ideaIU-2020.3.3 : java开发工具
         mysql-installer-community-8.0.19.0 : Mysql数据库安装包
         navicat150_mysql_cs_x64 : Mysql数据库连接工具
         WebStorm-2020.3.3:  前端开发工具
         jdk-8u241-windows-x64:java运行环境
         node-v12.16.1-x64:前端vue运行环境
    -
    `,1),v=l("li",null,"工具安装",-1),b=l("li",null,"所有准备工具安装已结束,下一步是调试开发环境",-1),w={href:"https://www.bilibili.com/video/BV1rp4y1b7Se",target:"_blank",rel:"noopener noreferrer"},g=l("h3",{id:"_7-2-本地代码调试运行",tabindex:"-1"},[l("a",{class:"header-anchor",href:"#_7-2-本地代码调试运行","aria-hidden":"true"},"#"),i(" 7.2 本地代码调试运行")],-1),x={href:"https://gitee.com/mindskip/xzs-mysql",target:"_blank",rel:"noopener noreferrer"},f={href:"https://www.mindskip.net/style/git",target:"_blank",rel:"noopener noreferrer"},y=s("
  • 修改java的镜像,改为阿里云镜像,默认是国外的,速度比较慢。默认是没有.m2文件夹的,可以自己新建一个。
  • 打开数据库连接工具,导入mysql脚本
  • 打开java代码,等待组件自动下载完成即可启动
  • 添加sdk,建议使用1.8
  • 启动后端程序
  • 修改下配置文件,我们是本地连接,需要改下数据库连接地址
  • 再打开教程,开始启动前端开发工具
  • 前端依赖组件默认也是国外的,可按教程修为成国内的
  • 组件下载完成,执行运行命令
  • 学生前端也同样操作,启动
  • 建议先将package-lock.json文件删掉,再执行npm install命令
  • 前后端都已启动完成
  • ",12),k={href:"https://www.bilibili.com/video/BV1Qh411S7RY",target:"_blank",rel:"noopener noreferrer"},q=l("h3",{id:"_7-3-微信小程序开发",tabindex:"-1"},[l("a",{class:"header-anchor",href:"#_7-3-微信小程序开发","aria-hidden":"true"},"#"),i(" 7.3 微信小程序开发")],-1),V=l("li",null,"去官网下载小程序开发工具,并安装",-1),j=l("li",null,"去微信小程序官网 (微信公众平台),创建小程序",-1),B=l("li",null,"登录成功后,点击左边菜单开发下面的开发管理,在点击开发设置",-1),z=l("li",null,"拿到appId、AppSecret后配置到代码中",-1),S=l("li",null,"修改代码配置后,重新启动后台程序",-1),D=l("li",null,"打开微信开发工具,导入微信小程序代码",-1),M={href:"http://localhost:8000",target:"_blank",rel:"noopener noreferrer"},X=l("li",null,"启动后需要修改appid,和代码中的保持一致",-1),A=l("li",null,"微信小程序就启动成功了",-1),C={href:"https://www.bilibili.com/video/BV1mK4y127C5",target:"_blank",rel:"noopener noreferrer"},I=l("h3",{id:"_7-4-代码配置介绍",tabindex:"-1"},[l("a",{class:"header-anchor",href:"#_7-4-代码配置介绍","aria-hidden":"true"},"#"),i(" 7.4 代码配置介绍")],-1),K=l("li",null,"下面介绍下常用的配置",-1),N=l("li",null,"后端配置主要在 yml 文件中",-1),Q=l("li",null,"七牛云配置完成后,测试一下,重新启动,加载配置文件",-1),R=l("li",null,"图片替换成功,说明七牛云配置是ok的",-1),Y=l("li",null,"application-prod.yml 用于正式环境的配置,和dev基本是一样的",-1),E=l("li",null,"学生端vue配置",-1),F=l("li",null,"管理端vue配置",-1),L=l("li",null,"微信小程序配置",-1),P=l("li",null,"配置都已经介绍完毕",-1),O={href:"https://www.bilibili.com/video/BV19V411n7XV",target:"_blank",rel:"noopener noreferrer"},T=s(`

    7.5 win系统部署

    • 下面介绍下在win平台下怎么部署学之思,包含win所有平台
    • 先预装好下面软件,不会的可以看第一部分视频
        mysql-installer-community-8.0.19.0 : Mysql数据库安装包
    +
    `,1),b=l("li",null,"工具安装",-1),v=l("li",null,"所有准备工具安装已结束,下一步是调试开发环境",-1),w={href:"https://www.bilibili.com/video/BV1rp4y1b7Se",target:"_blank",rel:"noopener noreferrer"},g=l("h3",{id:"_7-2-本地代码调试运行",tabindex:"-1"},[l("a",{class:"header-anchor",href:"#_7-2-本地代码调试运行","aria-hidden":"true"},"#"),i(" 7.2 本地代码调试运行")],-1),x={href:"https://gitee.com/mindskip/xzs-mysql",target:"_blank",rel:"noopener noreferrer"},f={href:"https://www.mindskip.net/style/git",target:"_blank",rel:"noopener noreferrer"},y=s("
  • 修改java的镜像,改为阿里云镜像,默认是国外的,速度比较慢。默认是没有.m2文件夹的,可以自己新建一个。
  • 打开数据库连接工具,导入mysql脚本
  • 打开java代码,等待组件自动下载完成即可启动
  • 添加sdk,建议使用1.8
  • 启动后端程序
  • 修改下配置文件,我们是本地连接,需要改下数据库连接地址
  • 再打开教程,开始启动前端开发工具
  • 前端依赖组件默认也是国外的,可按教程修为成国内的
  • 组件下载完成,执行运行命令
  • 学生前端也同样操作,启动
  • 建议先将package-lock.json文件删掉,再执行npm install命令
  • 前后端都已启动完成
  • ",12),k={href:"https://www.bilibili.com/video/BV1Qh411S7RY",target:"_blank",rel:"noopener noreferrer"},q=l("h3",{id:"_7-3-微信小程序开发",tabindex:"-1"},[l("a",{class:"header-anchor",href:"#_7-3-微信小程序开发","aria-hidden":"true"},"#"),i(" 7.3 微信小程序开发")],-1),V=l("li",null,"去官网下载小程序开发工具,并安装",-1),j=l("li",null,"去微信小程序官网 (微信公众平台),创建小程序",-1),B=l("li",null,"登录成功后,点击左边菜单开发下面的开发管理,在点击开发设置",-1),z=l("li",null,"拿到appId、AppSecret后配置到代码中",-1),S=l("li",null,"修改代码配置后,重新启动后台程序",-1),D=l("li",null,"打开微信开发工具,导入微信小程序代码",-1),M={href:"http://localhost:8000",target:"_blank",rel:"noopener noreferrer"},X=l("li",null,"启动后需要修改appid,和代码中的保持一致",-1),A=l("li",null,"微信小程序就启动成功了",-1),C={href:"https://www.bilibili.com/video/BV1mK4y127C5",target:"_blank",rel:"noopener noreferrer"},I=l("h3",{id:"_7-4-代码配置介绍",tabindex:"-1"},[l("a",{class:"header-anchor",href:"#_7-4-代码配置介绍","aria-hidden":"true"},"#"),i(" 7.4 代码配置介绍")],-1),K=l("li",null,"下面介绍下常用的配置",-1),N=l("li",null,"后端配置主要在 yml 文件中",-1),R=l("li",null,"七牛云配置完成后,测试一下,重新启动,加载配置文件",-1),Y=l("li",null,"图片替换成功,说明七牛云配置是ok的",-1),E=l("li",null,"application-prod.yml 用于正式环境的配置,和dev基本是一样的",-1),F=l("li",null,"学生端vue配置",-1),L=l("li",null,"管理端vue配置",-1),P=l("li",null,"微信小程序配置",-1),Q=l("li",null,"配置都已经介绍完毕",-1),O={href:"https://www.bilibili.com/video/BV19V411n7XV",target:"_blank",rel:"noopener noreferrer"},T=s(`

    7.5 win系统部署

    • 下面介绍下在win平台下怎么部署学之思,包含win所有平台
    • 先预装好下面软件,不会的可以看第一部分视频
        mysql-installer-community-8.0.19.0 : Mysql数据库安装包
         navicat150_mysql_cs_x64 : Mysql数据库连接工具
         jdk-8u241-windows-x64:java运行环
     
    • 按文档教程中的项目部署操作来
    • 首先展示集成部署
    • 这个jar包就是打包之后的运行程序,我们使用命令运行
       java -Duser.timezone=Asia/Shanghai -jar -Dspring.profiles.active=prod  xzs-3.9.0.jar 
     
    `,5),U=s('
  • 访问成功,说明部署没问题
  • 下面我们看下前后的分离部署,需要安装nginx
  • 访问localhost,看到这个页面就说nginx启动没问题
  • 配置学之思
  • 先启动后端程序
  • 再修改前端配置,启动前端程序,访问地址没问题,就说明部署成功了
  • 这里需要注意两点:
    1. 8001端口默认是微信开发工具的启动端口,建议先关闭微信开发工具,再启动nginx
    1. root C:/xzs/release/web; 这里的路径要填反斜杠,不能直接用win的复制路径
  • win系统部署结束
  • ',10),W={href:"https://www.bilibili.com/video/BV1XA41157P4",target:"_blank",rel:"noopener noreferrer"},G=s(`

    7.6 CentOS系统部署

    • 下载好xshell和xftp,这个工具用于连接centos服务器的
    • 可在群文件中找到Xftp-7.0.0063p 和 Xshell-7.0.0065p ,直接安装
    • 打开xshell , 连接准备好的centos服务器
    • 服务器中要安装好 mysql 8 、jdk 1.8、nginx , 可以自行搜索教程进行安装
    • 安装好后,我们检测下是否都在运行
    • 创建数据库xzs、导入xzs-mysql.sql脚本
    • 登录mysql,执行导入命令:
        mysql -u root -p -D xzs < /usr/local/xzs/sql/xzs-mysql.sql
     
    • 数据导入成功后,可以登录mysql数据库,检查一下是否成功
    • 打包jar文件,注意修改配置文件application-prod.yml ,正式环境用的这个文件,这里里面的数据库连接地址和账号等,由于都是服务器本地的,都用localhost即可
    • 上传jar包到服务器中
    • 启动学之思后端程序
        nohup java -Duser.timezone=Asia/Shanghai -jar -Dspring.profiles.active=prod  xzs-3.9.0.jar  > start1.log  2>&1 &
    -
    `,5),H=l("li",null,"打开浏览器,检查是否启动成功",-1),J=l("li",null,"集成部署已经完成,下面介绍下前后端分离部署,分离部署前端页面要放在nginx中,需要配置nginx",-1),Z=l("li",null,"上传成功后配置nginx,nginx默认配置目录为 /etc/nginx/conf.d ,在里面新建xzs.conf配置文件即可",-1),$=l("li",null,"执行命令:nginx -s reload ,重新加载nginx配置文件",-1),ll=l("li",null,"在浏览器中能访问成功说明部署正确",-1),il=l("li",null,"docker部署,先安装好docker",-1),el=l("li",null,"执行教程中的命令,下载镜像,运行容器",-1),nl=l("li",null,"打开浏览器验证下是否能访问,访问成功表示docker版运行正常",-1),sl={href:"https://www.bilibili.com/video/BV17b4y1D7Re",target:"_blank",rel:"noopener noreferrer"},tl=l("h3",{id:"_7-7-宝塔面板部署考试系统",tabindex:"-1"},[l("a",{class:"header-anchor",href:"#_7-7-宝塔面板部署考试系统","aria-hidden":"true"},"#"),i(" 7.7 宝塔面板部署考试系统")],-1),ol=l("li",null,"打开宝塔,查看linux教程,安装教程安装好宝塔",-1),al=l("li",null,"登录宝塔",-1),dl=l("li",null,"安装基础软件:mysql8 、 java8 、nginx 等常用软件",-1),rl=l("li",null,"导入sql脚本和考试系统安装包",-1),cl=l("li",null,"这里注意下数据库用户名、密码、名称要和mysql的保持一致",-1),_l=l("li",null,"打包java程序",-1),hl=l("li",null,"启动考试系统",-1),ul=l("li",null,"开启端口:8000",-1),ml=l("li",null,"集成部署成功",-1),pl={href:"https://www.bilibili.com/video/BV19M4y1K7uc",target:"_blank",rel:"noopener noreferrer"},vl=l("h3",{id:"_7-8-使用手册",tabindex:"-1"},[l("a",{class:"header-anchor",href:"#_7-8-使用手册","aria-hidden":"true"},"#"),i(" 7.8 使用手册")],-1),bl=l("li",null,"用户管理:学生添加、管理员添加",-1),wl=l("li",null,"题目管理:添加题目、单选题、多选题、判断题、填空题、解答题",-1),gl=l("li",null,"教育管理:添加学科",-1),xl=l("li",null,"试卷管理:添加试卷 固定试卷 时段试卷 任务试卷",-1),fl=l("li",null,"任务管理:添加任务",-1),yl=l("li",null,"消息管理:消息发送",-1),kl=l("li",null,"成绩管理:查看成绩",-1),ql={href:"https://www.bilibili.com/video/BV1884y1F71Y",target:"_blank",rel:"noopener noreferrer"};function Vl(jl,Bl){const e=o("ExternalLinkIcon");return a(),d("div",null,[c,_,l("ul",null,[l("li",null,[i("打开学之思开源仓库地址:"),l("a",h,[i("https://gitee.com/mindskip/xzs-mysql"),n(e)])]),u,m]),p,l("ul",null,[v,b,l("li",null,[i("哔哩哔哩:"),l("a",w,[i("https://www.bilibili.com/video/BV1rp4y1b7Se"),n(e)])])]),g,l("ul",null,[l("li",null,[i("打开仓库地址 "),l("a",x,[i("https://gitee.com/mindskip/xzs-mysql"),n(e)]),i(" ,下载源代码")]),l("li",null,[i("打开教学文档 "),l("a",f,[i("https://www.mindskip.net/style/git"),n(e)])]),y,l("li",null,[i("哔哩哔哩:"),l("a",k,[i("https://www.bilibili.com/video/BV1Qh411S7RY"),n(e)])])]),q,l("ul",null,[V,j,B,z,S,D,l("li",null,[i("微信接口默认是"),l("a",M,[i("http://localhost:8000"),n(e)]),i(",默认就可以了,和后端端口保持一致")]),X,A,l("li",null,[i("哔哩哔哩:"),l("a",C,[i("https://www.bilibili.com/video/BV1mK4y127C5"),n(e)])])]),I,l("ul",null,[K,N,Q,R,Y,E,F,L,P,l("li",null,[i("哔哩哔哩:"),l("a",O,[i("https://www.bilibili.com/video/BV19V411n7XV"),n(e)])])]),T,l("ul",null,[U,l("li",null,[i("哔哩哔哩:"),l("a",W,[i("https://www.bilibili.com/video/BV1XA41157P4"),n(e)])])]),G,l("ul",null,[H,J,Z,$,ll,il,el,nl,l("li",null,[i("哔哩哔哩:"),l("a",sl,[i("https://www.bilibili.com/video/BV17b4y1D7Re"),n(e)])])]),tl,l("ul",null,[ol,al,dl,rl,cl,_l,hl,ul,ml,l("li",null,[i("哔哩哔哩:"),l("a",pl,[i("https://www.bilibili.com/video/BV19M4y1K7uc"),n(e)])])]),vl,l("ul",null,[bl,wl,gl,xl,fl,yl,kl,l("li",null,[i("哔哩哔哩:"),l("a",ql,[i("https://www.bilibili.com/video/BV1884y1F71Y"),n(e)])])])])}const Sl=t(r,[["render",Vl],["__file","video.html.vue"]]);export{Sl as default}; +
    `,5),H=l("li",null,"打开浏览器,检查是否启动成功",-1),J=l("li",null,"集成部署已经完成,下面介绍下前后端分离部署,分离部署前端页面要放在nginx中,需要配置nginx",-1),Z=l("li",null,"上传成功后配置nginx,nginx默认配置目录为 /etc/nginx/conf.d ,在里面新建xzs.conf配置文件即可",-1),$=l("li",null,"执行命令:nginx -s reload ,重新加载nginx配置文件",-1),ll=l("li",null,"在浏览器中能访问成功说明部署正确",-1),il=l("li",null,"docker部署,先安装好docker",-1),el=l("li",null,"执行教程中的命令,下载镜像,运行容器",-1),nl=l("li",null,"打开浏览器验证下是否能访问,访问成功表示docker版运行正常",-1),sl={href:"https://www.bilibili.com/video/BV17b4y1D7Re",target:"_blank",rel:"noopener noreferrer"},tl=l("h3",{id:"_7-7-宝塔面板部署考试系统",tabindex:"-1"},[l("a",{class:"header-anchor",href:"#_7-7-宝塔面板部署考试系统","aria-hidden":"true"},"#"),i(" 7.7 宝塔面板部署考试系统")],-1),ol=l("li",null,"打开宝塔,查看linux教程,安装教程安装好宝塔",-1),al=l("li",null,"登录宝塔",-1),dl=l("li",null,"安装基础软件:mysql8 、 java8 、nginx 等常用软件",-1),rl=l("li",null,"导入sql脚本和考试系统安装包",-1),cl=l("li",null,"这里注意下数据库用户名、密码、名称要和mysql的保持一致",-1),_l=l("li",null,"打包java程序",-1),hl=l("li",null,"启动考试系统",-1),ul=l("li",null,"开启端口:8000",-1),ml=l("li",null,"集成部署成功",-1),pl={href:"https://www.bilibili.com/video/BV19M4y1K7uc",target:"_blank",rel:"noopener noreferrer"},bl=l("h3",{id:"_7-8-使用手册",tabindex:"-1"},[l("a",{class:"header-anchor",href:"#_7-8-使用手册","aria-hidden":"true"},"#"),i(" 7.8 使用手册")],-1),vl=l("li",null,"用户管理:学生添加、管理员添加",-1),wl=l("li",null,"题目管理:添加题目、单选题、多选题、判断题、填空题、解答题",-1),gl=l("li",null,"教育管理:添加学科",-1),xl=l("li",null,"试卷管理:添加试卷 固定试卷 时段试卷 任务试卷",-1),fl=l("li",null,"任务管理:添加任务",-1),yl=l("li",null,"消息管理:消息发送",-1),kl=l("li",null,"成绩管理:查看成绩",-1),ql={href:"https://www.bilibili.com/video/BV1884y1F71Y",target:"_blank",rel:"noopener noreferrer"};function Vl(jl,Bl){const e=o("ExternalLinkIcon");return a(),d("div",null,[c,_,l("ul",null,[l("li",null,[i("打开学之思开源仓库地址:"),l("a",h,[i("https://gitee.com/mindskip/xzs-mysql"),n(e)])]),l("li",null,[i("下载数据库脚本"),l("a",u,[i("https://www.mindskip.net:999"),n(e)])]),m]),p,l("ul",null,[b,v,l("li",null,[i("哔哩哔哩:"),l("a",w,[i("https://www.bilibili.com/video/BV1rp4y1b7Se"),n(e)])])]),g,l("ul",null,[l("li",null,[i("打开仓库地址 "),l("a",x,[i("https://gitee.com/mindskip/xzs-mysql"),n(e)]),i(" ,下载源代码")]),l("li",null,[i("打开教学文档 "),l("a",f,[i("https://www.mindskip.net/style/git"),n(e)])]),y,l("li",null,[i("哔哩哔哩:"),l("a",k,[i("https://www.bilibili.com/video/BV1Qh411S7RY"),n(e)])])]),q,l("ul",null,[V,j,B,z,S,D,l("li",null,[i("微信接口默认是"),l("a",M,[i("http://localhost:8000"),n(e)]),i(",默认就可以了,和后端端口保持一致")]),X,A,l("li",null,[i("哔哩哔哩:"),l("a",C,[i("https://www.bilibili.com/video/BV1mK4y127C5"),n(e)])])]),I,l("ul",null,[K,N,R,Y,E,F,L,P,Q,l("li",null,[i("哔哩哔哩:"),l("a",O,[i("https://www.bilibili.com/video/BV19V411n7XV"),n(e)])])]),T,l("ul",null,[U,l("li",null,[i("哔哩哔哩:"),l("a",W,[i("https://www.bilibili.com/video/BV1XA41157P4"),n(e)])])]),G,l("ul",null,[H,J,Z,$,ll,il,el,nl,l("li",null,[i("哔哩哔哩:"),l("a",sl,[i("https://www.bilibili.com/video/BV17b4y1D7Re"),n(e)])])]),tl,l("ul",null,[ol,al,dl,rl,cl,_l,hl,ul,ml,l("li",null,[i("哔哩哔哩:"),l("a",pl,[i("https://www.bilibili.com/video/BV19M4y1K7uc"),n(e)])])]),bl,l("ul",null,[vl,wl,gl,xl,fl,yl,kl,l("li",null,[i("哔哩哔哩:"),l("a",ql,[i("https://www.bilibili.com/video/BV1884y1F71Y"),n(e)])])])])}const Sl=t(r,[["render",Vl],["__file","video.html.vue"]]);export{Sl as default}; diff --git a/docs/assets/wx.html.7aefa0b3.js b/docs/assets/wx.html.3a4f171f.js similarity index 94% rename from docs/assets/wx.html.7aefa0b3.js rename to docs/assets/wx.html.3a4f171f.js index d162280c..8ca391af 100644 --- a/docs/assets/wx.html.7aefa0b3.js +++ b/docs/assets/wx.html.3a4f171f.js @@ -1 +1 @@ -const l=JSON.parse('{"key":"v-45a87c2c","path":"/guide/wx.html","title":"4.2 小程序","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":3,"title":"4.2.1 登录","slug":"_4-2-1-登录","link":"#_4-2-1-登录","children":[]},{"level":3,"title":"4.2.2 注册","slug":"_4-2-2-注册","link":"#_4-2-2-注册","children":[]},{"level":3,"title":"4.2.3 检查绑定","slug":"_4-2-3-检查绑定","link":"#_4-2-3-检查绑定","children":[]},{"level":3,"title":"4.2.3 解绑退出","slug":"_4-2-3-解绑退出","link":"#_4-2-3-解绑退出","children":[]},{"level":3,"title":"4.2.3 主页试卷列表","slug":"_4-2-3-主页试卷列表","link":"#_4-2-3-主页试卷列表","children":[]},{"level":3,"title":"4.2.4 任务中心","slug":"_4-2-4-任务中心","link":"#_4-2-4-任务中心","children":[]},{"level":3,"title":"4.2.4 试卷列表","slug":"_4-2-4-试卷列表","link":"#_4-2-4-试卷列表","children":[]},{"level":3,"title":"4.2.5 试卷查询","slug":"_4-2-5-试卷查询","link":"#_4-2-5-试卷查询","children":[]},{"level":3,"title":"4.2.6 答卷列表","slug":"_4-2-6-答卷列表","link":"#_4-2-6-答卷列表","children":[]},{"level":3,"title":"4.2.7 试卷提交","slug":"_4-2-7-试卷提交","link":"#_4-2-7-试卷提交","children":[]},{"level":3,"title":"4.2.8 获取当前用户信息","slug":"_4-2-8-获取当前用户信息","link":"#_4-2-8-获取当前用户信息","children":[]},{"level":3,"title":"4.2.9 用户信息更新","slug":"_4-2-9-用户信息更新","link":"#_4-2-9-用户信息更新","children":[]},{"level":3,"title":"4.2.10 用户动态","slug":"_4-2-10-用户动态","link":"#_4-2-10-用户动态","children":[]},{"level":3,"title":"4.2.11 消息列表","slug":"_4-2-11-消息列表","link":"#_4-2-11-消息列表","children":[]},{"level":3,"title":"4.2.12 消息详情","slug":"_4-2-12-消息详情","link":"#_4-2-12-消息详情","children":[]},{"level":3,"title":"4.1.13 消息未读数","slug":"_4-1-13-消息未读数","link":"#_4-1-13-消息未读数","children":[]},{"level":3,"title":"4.1.14 消息标记已读","slug":"_4-1-14-消息标记已读","link":"#_4-1-14-消息标记已读","children":[]}],"git":{"updatedTime":1726100103000,"contributors":[{"name":"mindskip","email":"mindskip@qq.com","commits":33},{"name":"思维跳跃科技","email":"mindskip@qq.com","commits":12}]},"filePathRelative":"guide/wx.md"}');export{l as data}; +const l=JSON.parse('{"key":"v-45a87c2c","path":"/guide/wx.html","title":"4.2 小程序","lang":"zh-CN","frontmatter":{},"excerpt":"","headers":[{"level":3,"title":"4.2.1 登录","slug":"_4-2-1-登录","link":"#_4-2-1-登录","children":[]},{"level":3,"title":"4.2.2 注册","slug":"_4-2-2-注册","link":"#_4-2-2-注册","children":[]},{"level":3,"title":"4.2.3 检查绑定","slug":"_4-2-3-检查绑定","link":"#_4-2-3-检查绑定","children":[]},{"level":3,"title":"4.2.3 解绑退出","slug":"_4-2-3-解绑退出","link":"#_4-2-3-解绑退出","children":[]},{"level":3,"title":"4.2.3 主页试卷列表","slug":"_4-2-3-主页试卷列表","link":"#_4-2-3-主页试卷列表","children":[]},{"level":3,"title":"4.2.4 任务中心","slug":"_4-2-4-任务中心","link":"#_4-2-4-任务中心","children":[]},{"level":3,"title":"4.2.4 试卷列表","slug":"_4-2-4-试卷列表","link":"#_4-2-4-试卷列表","children":[]},{"level":3,"title":"4.2.5 试卷查询","slug":"_4-2-5-试卷查询","link":"#_4-2-5-试卷查询","children":[]},{"level":3,"title":"4.2.6 答卷列表","slug":"_4-2-6-答卷列表","link":"#_4-2-6-答卷列表","children":[]},{"level":3,"title":"4.2.7 试卷提交","slug":"_4-2-7-试卷提交","link":"#_4-2-7-试卷提交","children":[]},{"level":3,"title":"4.2.8 获取当前用户信息","slug":"_4-2-8-获取当前用户信息","link":"#_4-2-8-获取当前用户信息","children":[]},{"level":3,"title":"4.2.9 用户信息更新","slug":"_4-2-9-用户信息更新","link":"#_4-2-9-用户信息更新","children":[]},{"level":3,"title":"4.2.10 用户动态","slug":"_4-2-10-用户动态","link":"#_4-2-10-用户动态","children":[]},{"level":3,"title":"4.2.11 消息列表","slug":"_4-2-11-消息列表","link":"#_4-2-11-消息列表","children":[]},{"level":3,"title":"4.2.12 消息详情","slug":"_4-2-12-消息详情","link":"#_4-2-12-消息详情","children":[]},{"level":3,"title":"4.1.13 消息未读数","slug":"_4-1-13-消息未读数","link":"#_4-1-13-消息未读数","children":[]},{"level":3,"title":"4.1.14 消息标记已读","slug":"_4-1-14-消息标记已读","link":"#_4-1-14-消息标记已读","children":[]}],"git":{"updatedTime":1727171446000,"contributors":[{"name":"mindskip","email":"mindskip@qq.com","commits":33},{"name":"思维跳跃科技","email":"mindskip@qq.com","commits":13}]},"filePathRelative":"guide/wx.md"}');export{l as data}; diff --git a/docs/assets/wx.html.50145a60.js b/docs/assets/wx.html.7ec80f51.js similarity index 98% rename from docs/assets/wx.html.50145a60.js rename to docs/assets/wx.html.7ec80f51.js index 4212e550..1fcf1c1c 100644 --- a/docs/assets/wx.html.50145a60.js +++ b/docs/assets/wx.html.7ec80f51.js @@ -1,4 +1,4 @@ -import{_ as e,o as i,c as n,e as u}from"./app.d00a1887.js";const d={},s=u(`

    4.2 小程序

    4.2.1 登录

    • 接口地址:/api/wx/student/auth/bind
    • 请求参数:
         userName: student  //用户名
    +import{_ as e,o as i,c as n,e as u}from"./app.ee529b4c.js";const d={},s=u(`

    4.2 小程序

    4.2.1 登录

    • 接口地址:/api/wx/student/auth/bind
    • 请求参数:
         userName: student  //用户名
          password: 123456   //密码
          code: 023BNuFa1CQ14B07KVHa16RHM94BNuF0   //授权码
     
    • 返回参数:
    {
    @@ -33,7 +33,7 @@ import{_ as e,o as i,c as n,e as u}from"./app.d00a1887.js";const d={},s=u(`

    4.3 管理端 | 学之思教程 - +

    4.3 管理端

    4.3.1 登录

    • 接口地址:/api/user/login
    • 请求参数:
    {
    @@ -181,7 +181,7 @@
         "message": "成功",
         "response": [
             {
    -            "id": 96,  //学科id
    +            "id": 82,  //学科id
                 "name": "语文",  //学科名称
                 "level": 1,  //年级
                 "levelName": "一年级",  //年级名称
    @@ -202,7 +202,7 @@
             "total": 2,
             "list": [
                 {
    -                "id": 96,
    +                "id": 82,
                     "name": "数学",  //学科名称
                     "level": 1,  //年级
                     "levelName": "一年级"  //年级名称
    @@ -214,14 +214,14 @@
         "code": 1,
         "message": "成功",
         "response": {
    -        "id": 96,
    +        "id": 82,
             "name": "数学",  //学科名称
             "level": 1,    //年级
             "levelName": "一年级"   //年级名称
         }
     }
     

    4.3.12 学科编辑

    • 接口地址:/api/admin/education/subject/edit
    • 请求参数:
    {
    -    "id": 96,
    +    "id": 82,
         "name": "数学",  //学科名称
         "level": 2,   //年级
         "levelName": "二年级"  //年级名称
    @@ -250,7 +250,7 @@
             "total": 9,
             "list": [
                 {
    -                "id": 96,     //试卷id
    +                "id": 82,     //试卷id
                     "name": "中级任务二",    //试卷名称
                     "questionCount": 5,  //题目总数
                     "score": 180, //试卷分数
    @@ -267,7 +267,7 @@
         "code": 1,
         "message": "成功",
         "response": {
    -        "id": 96,   //试卷id
    +        "id": 82,   //试卷id
             "level": 1,  //年级
             "subjectId": 1,  //学科
             "paperType": 1,  //试卷类型
    @@ -279,7 +279,7 @@
                     "name": "一、选择题",  //试卷标题
                     "questionItems": [
                         {
    -                        "id": 96,   //题目id
    +                        "id": 82,   //题目id
                             "questionType": 5,  //题目类型
                             "subjectId": 1,  //学科
                             "title": "默写咏鹅", //题干
    @@ -299,7 +299,7 @@
         }
     }
     

    4.3.16 试卷编辑

    • 接口地址:/api/admin/exam/paper/edit
    • 请求参数:
    {
    -    "id": 96,  //试卷id
    +    "id": 82,  //试卷id
         "level": 1,  //年级
         "subjectId": 1,  //学科
         "paperType": 6,  //试卷类型
    @@ -311,7 +311,7 @@
                 "name": "一、选择题",  //标题
                 "questionItems": [   //题目列表
                     {
    -                    "id": 96,   //题目id
    +                    "id": 82,   //题目id
                         "questionType": 2,  //题型
                         "subjectId": 1,  //学科
                         "title": "以下哪些诗句是静夜思的?",  //题干
    @@ -343,7 +343,7 @@
         "code": 1,
         "message": "成功",
         "response": {
    -        "id": 96,  //试卷id
    +        "id": 82,  //试卷id
             "level": 1,  //年级
             "subjectId": 1,   //学科
             "paperType": 6,   //试卷类型
    @@ -355,7 +355,7 @@
                     "name": "一、选择题",  //标题
                     "questionItems": [
                         {
    -                        "id": 96,   //题目id
    +                        "id": 82,   //题目id
                             "questionType": 2,    //题型
                             "subjectId": 1,   //学科
                             "title": "以下哪些诗句是静夜思的?",   //题干
    @@ -403,7 +403,7 @@
             "total": 1,
             "list": [
                 {
    -                "id": 96,
    +                "id": 82,
                     "name": "任务试卷五",   //试卷名称
                     "questionCount": 2,   //题目总数
                     "score": 60,   //试卷分数
    @@ -431,7 +431,7 @@
             "total": 7,
             "list": [
                 {
    -                "id": 96,
    +                "id": 82,
                     "questionType": 5,  //题型
                     "textContentId": null,
                     "createTime": "2021-01-21 11:45:57",  //创建时间
    @@ -466,7 +466,7 @@
         }
     }
     

    4.3.21 题目编辑

    • 接口地址:/api/admin/question/edit
    • 请求参数:
    {
    -    "id": 96, //题目id
    +    "id": 82, //题目id
         "questionType": 5, //题型
         "subjectId": 1,  //学科
         "title": "默写咏鹅",   //题干
    @@ -501,7 +501,7 @@
             "total": 2,
             "list": [
                 {
    -                "id": 96,   //任务id
    +                "id": 82,   //任务id
                     "title": "中级任务",   //任务标题
                     "gradeLevel": 1,  //年级
                     "createUserName": "admin",  //创建人用户名
    @@ -515,7 +515,7 @@
         "code": 1,
         "message": "成功",
         "response": {
    -        "id": 96,  //任务id
    +        "id": 82,  //任务id
             "gradeLevel": 12,  //年级
             "title": "考试",  //任务标题
             "paperItems": [
    @@ -535,12 +535,12 @@
         }
     }
     

    4.3.25 任务编辑

    • 接口地址:/api/admin/task/edit
    • 请求参数:
    {
    -    "id": 96,
    +    "id": 82,
         "gradeLevel": 1,
         "title": "中级任务",
         "paperItems": [
             {
    -            "id": 96,  //试卷id
    +            "id": 82,  //试卷id
                 "name": "中级任务一",  //试卷名称
                 "questionCount": 5,  //题目数量
                 "score": 180,  //试卷分数
    @@ -556,12 +556,12 @@
         "code": 1,
         "message": "成功",
         "response": {
    -        "id": 96,  //任务id
    +        "id": 82,  //任务id
             "gradeLevel": 1,   //年级
             "title": "中级任务",  //任务标题
             "paperItems": [
                 {
    -                "id": 96,  //试卷id
    +                "id": 82,  //试卷id
                     "name": "中级任务一",  //试卷名称
                     "questionCount": 5,  //题目数量
                     "score": 180,  //试卷分数
    @@ -591,7 +591,7 @@
             "total": 36,
             "list": [
                 {
    -                "id": 96,   //消息id
    +                "id": 82,   //消息id
                     "title": "你好,同学!",  //消息标题
                     "content": "考试请不要作弊",  //消息内容
                     "sendUserName": "admin",  //发送人用户名
    @@ -627,7 +627,7 @@
             "total": 4,
             "list": [
                 {
    -                "id": 96,
    +                "id": 82,
                     "createTime": "2021-07-07 14:03:02",  //提交时间
                     "userScore": "16",  //用户得分
                     "subjectName": "语文",  //学科名称
    @@ -658,7 +658,7 @@
             "total": 68,
             "list": [
                 {
    -                "id": 96,  //日志id
    +                "id": 82,  //日志id
                     "userId": 2,  //用户id
                     "userName": "admin",  //用户名
                     "realName": "管理员", //真实姓名
    @@ -672,7 +672,7 @@
         "code": 1,
         "message": "成功",
         "response": {
    -        "id": 96,
    +        "id": 82,
             "userUuid": "52045f5f-a13f-4ccc-93dd-f7ee8270ad4c", //用户uuid
             "userName": "admin",  //用户名
             "realName": "管理员", //真实姓名
    @@ -690,7 +690,7 @@
         }
     }
     

    4.3.32 用户信息更新

    • 接口地址:/api/admin/user/update
    • 请求参数:
    {
    -    "id": 96,  //用户id
    +    "id": 82,  //用户id
         "userUuid": "52045f5f-a13f-4ccc-93dd-f7ee8270ad4c", //用户标识
         "userName": "admin", //用户名
         "realName": "管理员", //真实姓名
    @@ -731,7 +731,7 @@
         "state": "SUCCESS"
     }
     

    4.3.34 个人信息修改

    • 接口地址:/api/admin/user/update
    • 请求参数:
    {
    -    "id": 96,
    +    "id": 82,
         "userUuid": "52045f5f-a13f-4ccc-93dd-f7ee8270ad4c",  //用户uuid
         "userName": "admin", //用户名
         "realName": "管理员", //真实姓名
    @@ -753,6 +753,6 @@
         "response": null
     }
     
    Last Updated:
    Contributors: mindskip, 思维跳跃科技
    - + diff --git a/docs/guide/database.html b/docs/guide/database.html index fbfa6e4c..46b966f6 100644 --- a/docs/guide/database.html +++ b/docs/guide/database.html @@ -24,10 +24,10 @@ 3. 数据库设计 | 学之思教程 - +

    3. 数据库设计

    3.1 试卷表

    • 表名:t_exam_paper
    • 字段注释:
    字段名类型注释
    idint
    namevarchar试卷名称
    subject_idint学科
    paper_typeint试卷类型( 1.固定试卷 4.时段试卷 6.任务试卷 )
    grade_levelint年级
    scoreint试卷总分(千分制)
    question_countint题目数量
    suggest_timeint建议时长(分钟)
    limit_start_timedatetime时段试卷 开始时间
    limit_end_timedatetime时段试卷 结束时间
    frame_text_content_idint试卷框架 内容为JSON
    create_userint
    create_timedatetime
    deletedbit
    task_exam_idint

    3.2 试卷答案表

    • 表名:t_exam_paper_answer
    • 字段注释:
    字段名类型注释
    idint
    exam_paper_idint
    paper_namevarchar试卷名称
    paper_typeint试卷类型( 1.固定试卷 4.时段试卷 6.任务试卷 )
    subject_idint学科
    system_scoreint系统判定得分
    user_scoreint最终得分(千分制)
    paper_scoreint试卷总分
    question_correctint做对题目数量
    question_countint题目总数量
    do_timeint做题时间(秒)
    statusint试卷状态(1待判分 2完成)
    create_userint学生
    create_timedatetime提交时间
    task_exam_idint

    3.3 试卷题目答案表

    • 表名:t_exam_paper_question_customer_answer
    • 字段注释:
    字段名类型注释
    idint
    question_idint题目Id
    exam_paper_idint答案Id
    exam_paper_answer_idint
    question_typeint题型
    subject_idint学科
    customer_scoreint得分
    question_scoreint题目原始分数
    question_text_content_idint问题内容
    answervarchar做题答案
    text_content_idint做题内容
    do_rightbit是否正确
    create_userint做题人
    create_timedatetime
    item_orderint

    3.4 消息表

    • 表名:t_message
    • 字段注释:
    字段名类型注释
    idint
    titlevarchar标题
    contentvarchar内容
    create_timedatetime
    send_user_idint发送者用户ID
    send_user_namevarchar发送者用户名
    send_real_namevarchar发送者真实姓名
    receive_user_countint接收人数
    read_countint已读人数

    3.5 用户消息表

    • 表名:t_message_user
    • 字段注释:
    字段名类型注释
    idint
    message_idint消息内容ID
    receive_user_idint接收人ID
    receive_user_namevarchar接收人用户名
    receive_real_namevarchar接收人真实姓名
    readedbit是否已读
    create_timedatetime
    read_timedatetime阅读时间

    3.6 题目表

    • 表名:t_question
    • 字段注释:
    字段名类型注释
    idint
    question_typeint1.单选题 2.多选题 3.判断题 4.填空题 5.简答题
    subject_idint学科
    scoreint题目总分(千分制)
    grade_levelint级别
    difficultint题目难度
    correcttext正确答案
    info_text_content_idint题目 填空、 题干、解析、答案等信息
    create_userint创建人
    statusint1.正常
    create_timedatetime创建时间
    deletedbit

    3.7 学科表

    • 表名:t_subject
    • 字段注释:
    字段名类型注释
    idint
    namevarchar语文 数学 英语 等
    levelint年级 (1-12) 小学 初中 高中 大学
    level_namevarchar一年级、二年级等
    item_orderint排序
    deletedbit

    3.8 任务表

    • 表名:t_task_exam
    • 字段注释:
    字段名类型注释
    idint
    titlevarchar
    grade_levelint级别
    frame_text_content_idint任务框架 内容为JSON
    create_userint
    create_timedatetime
    deletedbit
    create_user_namevarchar

    3.9 用户任务表

    • 表名:t_task_exam_customer_answer
    • 字段注释:
    字段名类型注释
    idint
    task_exam_idint
    create_userint
    create_timedatetime
    text_content_idint任务完成情况(Json)

    3.10 文本表

    • 表名:t_text_content
    • 字段注释:
    字段名类型注释
    idint
    contenttext
    create_timedatetime

    3.11 用户表

    • 表名:t_user
    • 字段注释:
    字段名类型注释
    idint
    user_uuidvarchar
    user_namevarchar用户名
    passwordvarchar
    real_namevarchar真实姓名
    ageint
    sexint1.男 2女
    birth_daydatetime
    user_levelint学生年级(1-12)
    phonevarchar
    roleint1.学生 3.管理员
    statusint1.启用 2禁用
    image_pathvarchar头像地址
    create_timedatetime
    modify_timedatetime
    last_active_timedatetime
    deletedbit是否删除
    wx_open_idvarchar微信openId

    3.12 用户日志表

    • 表名:t_user_event_log
    • 字段注释:
    字段名类型注释
    idint
    user_idint用户id
    user_namevarchar用户名
    real_namevarchar真实姓名
    contenttext内容
    create_timedatetime时间

    3.13 用户Token表

    • 表名:t_user_token
    • 字段注释:
    字段名类型注释
    idint
    tokenvarchar
    user_idint用户Id
    wx_open_idvarchar微信openId
    create_timedatetime
    end_timedatetime
    user_namevarchar用户名
    Last Updated:
    Contributors: mindskip
    - + diff --git a/docs/guide/deploy.html b/docs/guide/deploy.html index b8c9fcef..05ed1504 100644 --- a/docs/guide/deploy.html +++ b/docs/guide/deploy.html @@ -24,7 +24,7 @@ 6. 项目部署 | 学之思教程 - +

    6. 项目部署

    6.1 集成部署

    • 在win11系统中输入命令,低版本的win会出现不兼容的问题,无法执行对应的命令。
    • 分别在\source\vue\xzs-student目录和source\vue\xzs-admin目录,执行前端打包命令
    npm config set sass_binary_site https://registry.npmmirror.com
    @@ -51,6 +51,6 @@ docker-compose --version
     
    • 执行下面命令,启动学之思网站,有问题可以看下/usr/local/xzs/log中的日志
    cd /usr/local/xzs
     docker-compose up -d
     
    Last Updated:
    Contributors: mindskip, 思维跳跃科技
    - + diff --git a/docs/guide/develop.html b/docs/guide/develop.html index 89588172..d24bd676 100644 --- a/docs/guide/develop.html +++ b/docs/guide/develop.html @@ -24,7 +24,7 @@ 5. 项目开发 | 学之思教程 - +

    5. 项目开发

    5.1 开发环境

    环境版本下载地址
    NodeJs16https://nodejs.org/download/release/latest-v16.x/open in new window
    Jdk1.8https://www.oracle.com/java/technologies/downloads/#java8-windowsopen in new window
    Mysql8.0https://dev.mysql.com/downloads/windows/installer/8.0.htmlopen in new window

    5.2 开发说明

    • 数据库脚本下载地址:https://www.mindskip.net:999open in new window,创建表初始化数据,数据库名称为xzs
    • 代码下载 mysql版本,配合相应的数据库使用
    • 安装mysql ,导入xzs-mysql.sql脚本
    • 学生端默认账号:student / 123456
    • 管理端默认账号:admin / 123456

    5.3 后端开发

    • /uexam/source/xzs为后台代码,建议使用IntelliJ IDEA打开
    • 打开application-dev.yml文件中,配置好mysql的服务地址
    • 去七牛云官网申请好对象存储账号,修改application.yml中的qn相关的配置,七牛云主要用于文件存储
    • 启动后台程序,默认端口为8000
    • 学生系统地址:http://ip:8000/studentopen in new window
    • 管理端地址:http://ip:8000/adminopen in new window

    5.4 前端开发

    • 在win11系统中输入命令,低版本的win会出现不兼容的问题,无法执行对应的命令。
    • 前端使用webstorm或者vscode,分别打开文件夹打开源代码\source\vue\xzs-student和source\vue\xzs-admin
    • 执行下面2个命令,安装node_module:
    npm config set sass_binary_site https://registry.npmmirror.com
    @@ -104,6 +104,6 @@ npm install --registry https://registry.npmmirror.com
         - utils 公共方法
         - views 视图、系统页面
     
    Last Updated:
    Contributors: mindskip, 思维跳跃科技
    - + diff --git a/docs/guide/feature.html b/docs/guide/feature.html index 75549d96..861d0ce7 100644 --- a/docs/guide/feature.html +++ b/docs/guide/feature.html @@ -24,10 +24,10 @@ 1. 功能列表 | 学之思教程 - +

    1. 功能列表

    1.1 学生系统功能

    模块介绍
    登录用户名、密码
    注册年级、用户名、密码
    任务中心管理员发布的年级任务,每个学生只能做一次
    考试题干支持文本、图片、数学公式、表格等,学生答题支持:文本
    固定试卷可重复练习、自行批改的试卷
    时段试卷在时间限制内,可重复练习、自行批改的试卷
    考试记录查看答卷记录和试卷信息
    错题本答错题目会自动进入错题本,显示题目基本信息
    个人信息显示学生个人资料
    更新信息修改个人资料、头像
    个人动态显示用户最近的个人动态
    消息中心用于接收管理员发送的消息

    1.2 管理系统功能

    模块介绍
    登录用户名、密码
    主页试卷总数、题目总数、用户活跃度、题目月数量
    学生列表显示系统所有的学生,新增、修改、删除、禁用
    管理员列表显示系统所有的管理员,新增、修改、删除、禁用
    学科列表学科查询、修改、删除
    学科创编创建学科
    试卷列表试卷查询、修改、删除
    试卷创编创建的试卷为时段试卷、固定试卷、任务试卷
    题目列表题目查询、修改、删除
    题目创建题目支持单选题、多选题、判断题、填空题、简答题,题干支持文本、图片、表格、数学公式
    任务列表任务查询、修改、删除
    消息列表显示已发送的消息,消息已读人数等信息
    消息发送发送消息给多个用户
    用户日志显示所有用户日志
    个人资料显示管理员用户名、真实姓名
    时间线显示管理员创建时间
    修改资料修改姓名、手机号

    1.3 小程序功能

    模块介绍
    登录用户登录登出功能,登录会自动绑定微信账号,登出会解绑
    注册年级、用户名、密码
    任务中心管理员发布的年级任务,每个学生只能做一次
    考试题干支持文本、图片、数学公式、表格等,学生答题支持:文本
    固定试卷可重复练习、自行批改的试卷
    时段试卷在时间限制内,可重复练习、自行批改的试卷
    考试记录查看答卷记录和试卷信息
    错题本答错题目会自动进入错题本,显示题目基本信息
    个人信息显示学生个人资料
    更新信息修改个人资料、头像
    个人动态显示用户最近的个人动态
    消息中心用于接收管理员发送的消息

    展示图

    Last Updated:
    Contributors: mindskip
    - + diff --git a/docs/guide/skill.html b/docs/guide/skill.html index b5013403..f729397d 100644 --- a/docs/guide/skill.html +++ b/docs/guide/skill.html @@ -24,10 +24,10 @@ 2. 技术栈 | 学之思教程 - +

    2. 技术栈

    2.1 运行环境

    环境版本
    操作系统Windows / Linux
    NodeJs16
    Jdk1.8
    Mysql8.0

    2.2 后端系统

    • spring-boot 2.1.6.RELEASE
    • spring-boot-security 用户登录验证
    • undertow web容器
    • mysql 最流行的开源数据库
    • mybatis 数据库中间件
    • hikari 速度最快的数据库连接池
    • 七牛云存储 分布式文件存储中心

    2.3 前端系统

    • vue 采用新版,使用了vue-cli4搭建的系统,减少大量配置文件
    • element-ui 最流行的vue UI框架
    • vue-element-admin 深度定制版
    • echarts 图表统计
    • ueditor 题目编辑器

    2.4 微信小程序

    • iView 主题样式

    2.5 架构图

    架构图

    Last Updated:
    Contributors: mindskip, 思维跳跃科技
    - + diff --git a/docs/guide/student.html b/docs/guide/student.html index 53397bfb..a5ba5c7e 100644 --- a/docs/guide/student.html +++ b/docs/guide/student.html @@ -24,7 +24,7 @@ 4.1 学生端 | 学之思教程 - + - + diff --git a/docs/guide/video.html b/docs/guide/video.html index 03108fac..8c3aa0ec 100644 --- a/docs/guide/video.html +++ b/docs/guide/video.html @@ -24,10 +24,10 @@ 7. 视频教程 | 学之思教程 - + -

    7. 视频教程

    7.1 基础软件安装

        ideaIU-2020.3.3 : java开发工具
    +    

    7. 视频教程

    7.1 基础软件安装

        ideaIU-2020.3.3 : java开发工具
         mysql-installer-community-8.0.19.0 : Mysql数据库安装包
         navicat150_mysql_cs_x64 : Mysql数据库连接工具
         WebStorm-2020.3.3:  前端开发工具
    @@ -40,6 +40,6 @@
     
    • 访问成功,说明部署没问题
    • 下面我们看下前后的分离部署,需要安装nginx
    • 访问localhost,看到这个页面就说nginx启动没问题
    • 配置学之思
    • 先启动后端程序
    • 再修改前端配置,启动前端程序,访问地址没问题,就说明部署成功了
    • 这里需要注意两点:
      1. 8001端口默认是微信开发工具的启动端口,建议先关闭微信开发工具,再启动nginx
      1. root C:/xzs/release/web; 这里的路径要填反斜杠,不能直接用win的复制路径
    • win系统部署结束
    • 哔哩哔哩:https://www.bilibili.com/video/BV1XA41157P4open in new window

    7.6 CentOS系统部署

    • 下载好xshell和xftp,这个工具用于连接centos服务器的
    • 可在群文件中找到Xftp-7.0.0063p 和 Xshell-7.0.0065p ,直接安装
    • 打开xshell , 连接准备好的centos服务器
    • 服务器中要安装好 mysql 8 、jdk 1.8、nginx , 可以自行搜索教程进行安装
    • 安装好后,我们检测下是否都在运行
    • 创建数据库xzs、导入xzs-mysql.sql脚本
    • 登录mysql,执行导入命令:
        mysql -u root -p -D xzs < /usr/local/xzs/sql/xzs-mysql.sql
     
    • 数据导入成功后,可以登录mysql数据库,检查一下是否成功
    • 打包jar文件,注意修改配置文件application-prod.yml ,正式环境用的这个文件,这里里面的数据库连接地址和账号等,由于都是服务器本地的,都用localhost即可
    • 上传jar包到服务器中
    • 启动学之思后端程序
        nohup java -Duser.timezone=Asia/Shanghai -jar -Dspring.profiles.active=prod  xzs-3.9.0.jar  > start1.log  2>&1 &
     
    • 打开浏览器,检查是否启动成功
    • 集成部署已经完成,下面介绍下前后端分离部署,分离部署前端页面要放在nginx中,需要配置nginx
    • 上传成功后配置nginx,nginx默认配置目录为 /etc/nginx/conf.d ,在里面新建xzs.conf配置文件即可
    • 执行命令:nginx -s reload ,重新加载nginx配置文件
    • 在浏览器中能访问成功说明部署正确
    • docker部署,先安装好docker
    • 执行教程中的命令,下载镜像,运行容器
    • 打开浏览器验证下是否能访问,访问成功表示docker版运行正常
    • 哔哩哔哩:https://www.bilibili.com/video/BV17b4y1D7Reopen in new window

    7.7 宝塔面板部署考试系统

    • 打开宝塔,查看linux教程,安装教程安装好宝塔
    • 登录宝塔
    • 安装基础软件:mysql8 、 java8 、nginx 等常用软件
    • 导入sql脚本和考试系统安装包
    • 这里注意下数据库用户名、密码、名称要和mysql的保持一致
    • 打包java程序
    • 启动考试系统
    • 开启端口:8000
    • 集成部署成功
    • 哔哩哔哩:https://www.bilibili.com/video/BV19M4y1K7ucopen in new window

    7.8 使用手册

    • 用户管理:学生添加、管理员添加
    • 题目管理:添加题目、单选题、多选题、判断题、填空题、解答题
    • 教育管理:添加学科
    • 试卷管理:添加试卷 固定试卷 时段试卷 任务试卷
    • 任务管理:添加任务
    • 消息管理:消息发送
    • 成绩管理:查看成绩
    • 哔哩哔哩:https://www.bilibili.com/video/BV1884y1F71Yopen in new window
    Last Updated:
    Contributors: mindskip, 思维跳跃科技
    - + diff --git a/docs/guide/wx.html b/docs/guide/wx.html index 7e782a03..7493da61 100644 --- a/docs/guide/wx.html +++ b/docs/guide/wx.html @@ -24,7 +24,7 @@ 4.2 小程序 | 学之思教程 - +

    4.2 小程序

    4.2.1 登录

    • 接口地址:/api/wx/student/auth/bind
    • 请求参数:
         userName: student  //用户名
    @@ -62,7 +62,7 @@
         "response": {
             "fixedPaper": [  //固定试卷
                 {
    -                "id": 52,  //试卷id
    +                "id": 53,  //试卷id
                     "name": "aaa",  //试卷名称
                     "limitStartTime": null,
                     "limitEndTime": null
    @@ -70,7 +70,7 @@
             ],
             "timeLimitPaper": [  //时段试卷
                 {
    -                "id": 52,  //试卷id
    +                "id": 53,  //试卷id
                     "name": "202008705",  //试卷名称
                     "limitStartTime": 1600704000000,
                     "limitEndTime": 1664985600000,
    @@ -93,7 +93,7 @@
         "message": "成功",
         "response": [
             {
    -            "id": 52,
    +            "id": 53,
                 "title": "基础任务", //任务标题
                 "paperItems": [
                     {
    @@ -116,7 +116,7 @@
             "total": 9,
             "list": [
                 {
    -                "id": 52,
    +                "id": 53,
                     "name": "固定试卷", //试卷名称
                     "questionCount": 1, //题目数量
                     "score": 50, //分数
    @@ -139,7 +139,7 @@
         "code": 1,
         "message": "成功",
         "response": {
    -        "id": 52, //试卷id
    +        "id": 53, //试卷id
             "level": 1,  //年级
             "subjectId": 4,  //学科
             "paperType": 1,  //试卷类型
    @@ -151,7 +151,7 @@
                     "name": "一、解答题",  //标题名称
                     "questionItems": [  //题目列表
                         {
    -                        "id": 52,  //题目id
    +                        "id": 53,  //题目id
                             "questionType": 1, //题目类型
                             "subjectId": 4, //学科
                             "title": "中华四大名著都有哪些,下列正确的是",  //题干
    @@ -221,7 +221,7 @@
         "code": 1,
         "message": "成功",
         "response": {
    -        "id": 52,
    +        "id": 53,
             "userUuid": "d2d29da2-dcb3-4013-b874-727626236f47", //用户uuid
             "userName": "student", //用户名
             "realName": "学生", //真实姓名
    @@ -249,7 +249,7 @@
         "code": 1,
         "message": "成功",
         "response": {
    -        "id": 52,
    +        "id": 53,
             "userUuid": "d2d29da2-dcb3-4013-b874-727626236f47",  //用户uuid
             "userName": "student", //用户名
             "realName": "学生",  //真实姓名
    @@ -291,7 +291,7 @@
             "total": 7,
             "list": [
                 {
    -                "id": 52, //消息
    +                "id": 53, //消息
                     "title": "国庆假说明",  //消息标题
                     "messageId": 17,  //消息id
                     "content": "假期七天请注意安全。。。",  //消息内容
    @@ -306,7 +306,7 @@
         "code": 1,
         "message": "成功",
         "response": {
    -        "id": 52,
    +        "id": 53,
             "title": "国庆假说明",  //消息标题
             "content": "假期七天请注意安全。。。",  //消息内容
             "createTime": "2021-09-25 14:51:32",  //创建时间
    @@ -328,6 +328,6 @@
         "response": null
     }
     
    Last Updated:
    Contributors: mindskip, 思维跳跃科技
    - + diff --git a/docs/index.html b/docs/index.html index 5a6867e5..f518c6da 100644 --- a/docs/index.html +++ b/docs/index.html @@ -24,10 +24,10 @@ | 学之思教程 - +

    项目介绍

    学之思开源考试系统是一款 java + vue 的前后端分离的考试系统。主要优点是开发、部署简单快捷、界面设计友好、代码结构清晰。支持web端和微信小程序,能覆盖到pc机和手机等设备。 支持多种部署方式:集成部署、前后端分离部署、docker部署。

    • 码云最有价值开源项目
    • 累计star数超过 20000+
    • 开源在线考试系统排行首位
    • 交流人数超过 9000+

    数据库脚本下载教程( gitee/码云 )

    数据库脚本下载教程( github )

    视频教程

    QQ交流群

    • 开源交流群⑰:624825080
    • 开源交流群⑯:556522923 (满)
    • 开源交流群⑮:675037554 (满)
    • 开源交流群⑭:249966898 (满)
    • 开源交流群⑬:629266246 (满)
    • 开源交流群⑫:490584561 (满)
    • 开源交流群⑪:626073476 (满)
    • 开源交流群⑩:575732100 (满)
    • 开源交流群⑨:604864648 (满)
    • 开源交流群⑧:902855996 (满)
    • 开源交流群⑦:873533715 (满)
    • 开源交流群⑥:593529956 (满)
    • 开源交流群⑤:1074095891 (满)
    • 开源交流群④:1039666905 (满)
    • 开源交流群③:670546875 (满)
    • 开源交流群②:947654489 (满)
    • 开源交流群①:530136203 (满)
    Last Updated:
    Contributors: mindskip, 思维跳跃科技
    - +