From e84a40a6f5dca02139cc6c0add5695654c2d8113 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: Tue, 5 Nov 2024 07:50:22 +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.df3e5fb6.js => 404.html.a9218b34.js} | 2 +- ...tml.e5de255d.js => admin.html.943f5f47.js} | 54 +++++++++--------- .../{app.e3633eeb.js => app.127746b5.js} | 2 +- ....cde0d869.js => database.html.9c6ed649.js} | 2 +- ...ml.1ac24afb.js => deploy.html.e50997f4.js} | 2 +- ...l.0b0fac29.js => develop.html.b3302bcb.js} | 2 +- ...l.49e6cc1d.js => feature.html.2d54735f.js} | 2 +- ...tml.2c3d1b7c.js => index.html.deb5de7c.js} | 2 +- ...tml.03e5e7f8.js => skill.html.1600ffcf.js} | 2 +- ...l.9c7fadc6.js => student.html.346abfe9.js} | 26 ++++----- ...tml.3579ef4b.js => video.html.965bafce.js} | 2 +- ...x.html.c30de1ef.js => wx.html.85d22579.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 | 28 +++++----- docs/guide/video.html | 4 +- docs/guide/wx.html | 24 ++++---- docs/index.html | 4 +- 23 files changed, 131 insertions(+), 131 deletions(-) rename docs/assets/{404.html.df3e5fb6.js => 404.html.a9218b34.js} (63%) rename docs/assets/{admin.html.e5de255d.js => admin.html.943f5f47.js} (98%) rename docs/assets/{app.e3633eeb.js => app.127746b5.js} (99%) rename docs/assets/{database.html.cde0d869.js => database.html.9c6ed649.js} (99%) rename docs/assets/{deploy.html.1ac24afb.js => deploy.html.e50997f4.js} (99%) rename docs/assets/{develop.html.0b0fac29.js => develop.html.b3302bcb.js} (99%) rename docs/assets/{feature.html.49e6cc1d.js => feature.html.2d54735f.js} (98%) rename docs/assets/{index.html.2c3d1b7c.js => index.html.deb5de7c.js} (98%) rename docs/assets/{skill.html.03e5e7f8.js => skill.html.1600ffcf.js} (96%) rename docs/assets/{student.html.9c7fadc6.js => student.html.346abfe9.js} (98%) rename docs/assets/{video.html.3579ef4b.js => video.html.965bafce.js} (99%) rename docs/assets/{wx.html.c30de1ef.js => wx.html.85d22579.js} (98%) diff --git a/docs/404.html b/docs/404.html index 1037c990..b72ffef9 100644 --- a/docs/404.html +++ b/docs/404.html @@ -24,10 +24,10 @@ | 学之思教程 - + -

404

How did we get here?
Take me home
- +

404

There's nothing here.
Take me home
+ diff --git a/docs/assets/404.html.df3e5fb6.js b/docs/assets/404.html.a9218b34.js similarity index 63% rename from docs/assets/404.html.df3e5fb6.js rename to docs/assets/404.html.a9218b34.js index 277575d1..4042fcd5 100644 --- a/docs/assets/404.html.df3e5fb6.js +++ b/docs/assets/404.html.a9218b34.js @@ -1 +1 @@ -import{_ as e,o as c,c as t}from"./app.e3633eeb.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.127746b5.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.e5de255d.js b/docs/assets/admin.html.943f5f47.js similarity index 98% rename from docs/assets/admin.html.e5de255d.js rename to docs/assets/admin.html.943f5f47.js index ee9b9d28..068210e0 100644 --- a/docs/assets/admin.html.e5de255d.js +++ b/docs/assets/admin.html.943f5f47.js @@ -1,4 +1,4 @@ -import{_ as e,o as i,c as n,e as u}from"./app.e3633eeb.js";const l={},d=u(`

4.3 管理端

4.3.1 登录

{
+import{_ as e,o as i,c as n,e as u}from"./app.127746b5.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.e3633eeb.js";const l={},d=u(`

4.3.12 学科编辑

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

4.3.16 试卷编辑

  • 接口地址:/api/admin/exam/paper/edit
  • 请求参数:
{
-    "id": 25,  //试卷id
+    "id": 58,  //试卷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.e3633eeb.js";const l={},d=u(`

4.3.21 题目编辑

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

4.3.25 任务编辑

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

4.3.32 用户信息更新

  • 接口地址:/api/admin/user/update
  • 请求参数:
{
-    "id": 25,  //用户id
+    "id": 58,  //用户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.e3633eeb.js";const l={},d=u(`

4.3.34 个人信息修改

  • 接口地址:/api/admin/user/update
  • 请求参数:
{
-    "id": 25,
+    "id": 58,
     "userUuid": "52045f5f-a13f-4ccc-93dd-f7ee8270ad4c",  //用户uuid
     "userName": "admin", //用户名
     "realName": "管理员", //真实姓名
diff --git a/docs/assets/app.e3633eeb.js b/docs/assets/app.127746b5.js
similarity index 99%
rename from docs/assets/app.e3633eeb.js
rename to docs/assets/app.127746b5.js
index ec647de6..7d5cb846 100644
--- a/docs/assets/app.e3633eeb.js
+++ b/docs/assets/app.127746b5.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.d9665a7b.js"),[]).then(({data:e})=>e),"v-7dc58ad2":()=>Te(()=>import("./database.html.d0f44a34.js"),[]).then(({data:e})=>e),"v-8a14f834":()=>Te(()=>import("./deploy.html.3556abb5.js"),[]).then(({data:e})=>e),"v-745beb88":()=>Te(()=>import("./develop.html.fbedd315.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.1a5e5998.js"),[]).then(({data:e})=>e),"v-676a79ac":()=>Te(()=>import("./video.html.86ee6545.js"),[]).then(({data:e})=>e),"v-45a87c2c":()=>Te(()=>import("./wx.html.6c168cfd.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.2c3d1b7c.js"),[])),"v-55bcf8d6":tt(()=>Te(()=>import("./admin.html.e5de255d.js"),[])),"v-7dc58ad2":tt(()=>Te(()=>import("./database.html.cde0d869.js"),[])),"v-8a14f834":tt(()=>Te(()=>import("./deploy.html.1ac24afb.js"),[])),"v-745beb88":tt(()=>Te(()=>import("./develop.html.0b0fac29.js"),[])),"v-5c93668f":tt(()=>Te(()=>import("./feature.html.49e6cc1d.js"),[])),"v-e6eb79d8":tt(()=>Te(()=>import("./skill.html.03e5e7f8.js"),[])),"v-1362226a":tt(()=>Te(()=>import("./student.html.9c7fadc6.js"),[])),"v-676a79ac":tt(()=>Te(()=>import("./video.html.3579ef4b.js"),[])),"v-45a87c2c":tt(()=>Te(()=>import("./wx.html.c30de1ef.js"),[])),"v-3706649a":tt(()=>Te(()=>import("./404.html.df3e5fb6.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.d9665a7b.js"),[]).then(({data:e})=>e),"v-7dc58ad2":()=>Te(()=>import("./database.html.d0f44a34.js"),[]).then(({data:e})=>e),"v-8a14f834":()=>Te(()=>import("./deploy.html.3556abb5.js"),[]).then(({data:e})=>e),"v-745beb88":()=>Te(()=>import("./develop.html.fbedd315.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.1a5e5998.js"),[]).then(({data:e})=>e),"v-676a79ac":()=>Te(()=>import("./video.html.86ee6545.js"),[]).then(({data:e})=>e),"v-45a87c2c":()=>Te(()=>import("./wx.html.6c168cfd.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.deb5de7c.js"),[])),"v-55bcf8d6":tt(()=>Te(()=>import("./admin.html.943f5f47.js"),[])),"v-7dc58ad2":tt(()=>Te(()=>import("./database.html.9c6ed649.js"),[])),"v-8a14f834":tt(()=>Te(()=>import("./deploy.html.e50997f4.js"),[])),"v-745beb88":tt(()=>Te(()=>import("./develop.html.b3302bcb.js"),[])),"v-5c93668f":tt(()=>Te(()=>import("./feature.html.2d54735f.js"),[])),"v-e6eb79d8":tt(()=>Te(()=>import("./skill.html.1600ffcf.js"),[])),"v-1362226a":tt(()=>Te(()=>import("./student.html.346abfe9.js"),[])),"v-676a79ac":tt(()=>Te(()=>import("./video.html.965bafce.js"),[])),"v-45a87c2c":tt(()=>Te(()=>import("./wx.html.85d22579.js"),[])),"v-3706649a":tt(()=>Te(()=>import("./404.html.a9218b34.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.cde0d869.js b/docs/assets/database.html.9c6ed649.js
similarity index 99%
rename from docs/assets/database.html.cde0d869.js
rename to docs/assets/database.html.9c6ed649.js
index 5dd9e627..ceae96f2 100644
--- a/docs/assets/database.html.cde0d869.js
+++ b/docs/assets/database.html.9c6ed649.js
@@ -1 +1 @@
-import{_ as t,o as d,c as r,e}from"./app.e3633eeb.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.127746b5.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.1ac24afb.js b/docs/assets/deploy.html.e50997f4.js similarity index 99% rename from docs/assets/deploy.html.1ac24afb.js rename to docs/assets/deploy.html.e50997f4.js index 6b759368..9bd83241 100644 --- a/docs/assets/deploy.html.1ac24afb.js +++ b/docs/assets/deploy.html.e50997f4.js @@ -1,4 +1,4 @@ -import{_ as t,r as o,o as i,c as r,a as n,b as s,d as a,e as l}from"./app.e3633eeb.js";const d={},c=n("h1",{id:"_6-项目部署",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#_6-项目部署","aria-hidden":"true"},"#"),s(" 6. 项目部署")],-1),p=n("h3",{id:"_6-1-集成部署",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#_6-1-集成部署","aria-hidden":"true"},"#"),s(" 6.1 集成部署")],-1),u={href:"https://nodejs.org/download/release/latest-v16.x",target:"_blank",rel:"noopener noreferrer"},m=n("li",null,"前端使用webstorm或者vscode,分别打开文件夹打开源代码\\source\\vue\\xzs-student和source\\vue\\xzs-admin",-1),v=n("li",null,"执行下面2个命令,下载项目的node_module:",-1),k=l(`
npm config set sass_binary_site https://registry.npmmirror.com
+import{_ as t,r as o,o as i,c as r,a as n,b as s,d as a,e as l}from"./app.127746b5.js";const d={},c=n("h1",{id:"_6-项目部署",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#_6-项目部署","aria-hidden":"true"},"#"),s(" 6. 项目部署")],-1),p=n("h3",{id:"_6-1-集成部署",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#_6-1-集成部署","aria-hidden":"true"},"#"),s(" 6.1 集成部署")],-1),u={href:"https://nodejs.org/download/release/latest-v16.x",target:"_blank",rel:"noopener noreferrer"},m=n("li",null,"前端使用webstorm或者vscode,分别打开文件夹打开源代码\\source\\vue\\xzs-student和source\\vue\\xzs-admin",-1),v=n("li",null,"执行下面2个命令,下载项目的node_module:",-1),k=l(`
npm config set sass_binary_site https://registry.npmmirror.com
 npm install --registry https://registry.npmmirror.com  
 
  • 若执行上面命令报错,先删除node_modules文件夹,再解压node_modules.zip压缩包到当前文件夹。
  • 打包命令
npm run build
 
`,3),h=n("li",null,"打包后的目录为student和admin",-1),_=n("li",null,"将文件放到\\source\\xzs\\src\\main\\resources\\static下,然后将java程序打包成jar包",-1),b=n("li",null,"修改application-prod.yml中的datasource地址",-1),g={href:"http://ip:8000/student",target:"_blank",rel:"noopener noreferrer"},x={href:"http://ip:8000/admin",target:"_blank",rel:"noopener noreferrer"},f=n("li",null,"执行下列命令,运行程序",-1),z=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.0b0fac29.js b/docs/assets/develop.html.b3302bcb.js
similarity index 99%
rename from docs/assets/develop.html.0b0fac29.js
rename to docs/assets/develop.html.b3302bcb.js
index e1459926..3c4550c7 100644
--- a/docs/assets/develop.html.0b0fac29.js
+++ b/docs/assets/develop.html.b3302bcb.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.e3633eeb.js";const o={},c=e("h1",{id:"_5-项目开发",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#_5-项目开发","aria-hidden":"true"},"#"),n(" 5. 项目开发")],-1),u=e("h3",{id:"_5-1-开发环境",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#_5-1-开发环境","aria-hidden":"true"},"#"),n(" 5.1 开发环境")],-1),v=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=e("h3",{id:"_5-4-前端开发",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#_5-4-前端开发","aria-hidden":"true"},"#"),n(" 5.4 前端开发")],-1),M={href:"https://nodejs.org/download/release/latest-v16.x",target:"_blank",rel:"noopener noreferrer"},P=e("li",null,"前端使用webstorm或者vscode,分别打开文件夹打开源代码\\source\\vue\\xzs-student和source\\vue\\xzs-admin",-1),U=e("li",null,"执行下面2个命令,下载项目的node_module:",-1),A=t(`
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.127746b5.js";const o={},c=e("h1",{id:"_5-项目开发",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#_5-项目开发","aria-hidden":"true"},"#"),n(" 5. 项目开发")],-1),u=e("h3",{id:"_5-1-开发环境",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#_5-1-开发环境","aria-hidden":"true"},"#"),n(" 5.1 开发环境")],-1),v=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=e("h3",{id:"_5-4-前端开发",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#_5-4-前端开发","aria-hidden":"true"},"#"),n(" 5.4 前端开发")],-1),M={href:"https://nodejs.org/download/release/latest-v16.x",target:"_blank",rel:"noopener noreferrer"},P=e("li",null,"前端使用webstorm或者vscode,分别打开文件夹打开源代码\\source\\vue\\xzs-student和source\\vue\\xzs-admin",-1),U=e("li",null,"执行下面2个命令,下载项目的node_module:",-1),A=t(`
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.49e6cc1d.js b/docs/assets/feature.html.2d54735f.js
similarity index 98%
rename from docs/assets/feature.html.49e6cc1d.js
rename to docs/assets/feature.html.2d54735f.js
index 5608388e..ab9cb8ff 100644
--- a/docs/assets/feature.html.49e6cc1d.js
+++ b/docs/assets/feature.html.2d54735f.js
@@ -1 +1 @@
-import{_ as t,o as d,c as r,e}from"./app.e3633eeb.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.127746b5.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.2c3d1b7c.js b/docs/assets/index.html.deb5de7c.js similarity index 98% rename from docs/assets/index.html.2c3d1b7c.js rename to docs/assets/index.html.deb5de7c.js index 298a1468..e25a580f 100644 --- a/docs/assets/index.html.2c3d1b7c.js +++ b/docs/assets/index.html.deb5de7c.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.e3633eeb.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.127746b5.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.03e5e7f8.js b/docs/assets/skill.html.1600ffcf.js similarity index 96% rename from docs/assets/skill.html.03e5e7f8.js rename to docs/assets/skill.html.1600ffcf.js index a49094ad..9b6a8bf0 100644 --- a/docs/assets/skill.html.03e5e7f8.js +++ b/docs/assets/skill.html.1600ffcf.js @@ -1 +1 @@ -import{_ as e,o as t,c as i,e as a}from"./app.e3633eeb.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.127746b5.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.9c7fadc6.js b/docs/assets/student.html.346abfe9.js similarity index 98% rename from docs/assets/student.html.9c7fadc6.js rename to docs/assets/student.html.346abfe9.js index fec4fb8e..09269522 100644 --- a/docs/assets/student.html.9c7fadc6.js +++ b/docs/assets/student.html.346abfe9.js @@ -1,4 +1,4 @@ -import{_ as e,o as i,c as n,e as u}from"./app.e3633eeb.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.127746b5.js";const d={},s=u(`

    4.1 学生端

    4.1.1 登录

    • 接口地址:/api/user/login
    • 请求参数:
    {
         "userName": "student",  //用户名
         "password": "",  //密码
         "remember": false  //下次自动登录
    @@ -35,7 +35,7 @@ import{_ as e,o as i,c as n,e as u}from"./app.e3633eeb.js";const d={},s=u(`

    4.1.5 任务中心

    • 接口地址:/api/student/dashboard/task
    • 请求参数:无
    • 返回参数:
    [
             {
    -            "id": 70,  //任务id
    +            "id": 41,  //任务id
                 "title": "2021-04-25作业",  //任务标题
                 "paperItems": [
                     {
    @@ -88,7 +88,7 @@ import{_ as e,o as i,c as n,e as u}from"./app.e3633eeb.js";const d={},s=u(`

    4.1.11 试卷批改

    • 接口地址:/api/student/exampaper/answer/edit
    • 请求参数:
    {
    -    "id": 70,  //答卷id
    +    "id": 41,  //答卷id
         "doTime": 14,  //耗时
         "score": "2",  //得分数
         "answerItems": [
             {
    -            "id": 70, //答题id
    +            "id": 41, //答题id
                 "questionId": 4, //题目id
                 "doRight": null,  //是否正确
                 "content": null,  //答题内容
    @@ -347,7 +347,7 @@ import{_ as e,o as i,c as n,e as u}from"./app.e3633eeb.js";const d={},s=u(`

    4.1.17 修改用户信息

    • 接口地址:/api/student/user/update
    • 请求参数:
    {
    -    "id": 70,
    +    "id": 41,
         "userUuid": "d2d29da2-dcb3-4013-b874-727626236f47",
         "userName": "student",  //用户名
         "realName": "Test",  //真实姓名
    @@ -399,7 +399,7 @@ import{_ as e,o as i,c as n,e as u}from"./app.e3633eeb.js";const d={},s=u(`

        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.127746b5.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:  前端开发工具
    diff --git a/docs/assets/wx.html.c30de1ef.js b/docs/assets/wx.html.85d22579.js
    similarity index 98%
    rename from docs/assets/wx.html.c30de1ef.js
    rename to docs/assets/wx.html.85d22579.js
    index ff1ee541..83dae53e 100644
    --- a/docs/assets/wx.html.c30de1ef.js
    +++ b/docs/assets/wx.html.85d22579.js
    @@ -1,4 +1,4 @@
    -import{_ as e,o as i,c as n,e as u}from"./app.e3633eeb.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.127746b5.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.e3633eeb.js";const d={},s=u(`

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

    4.3 管理端

    4.3.1 登录

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

    4.3.12 学科编辑

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

    4.3.16 试卷编辑

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

    4.3.21 题目编辑

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

    4.3.25 任务编辑

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

    4.3.32 用户信息更新

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

    4.3.34 个人信息修改

    • 接口地址:/api/admin/user/update
    • 请求参数:
    {
    -    "id": 25,
    +    "id": 58,
         "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 1b605d8a..f5fd6570 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 569208ac..d4467a10 100644 --- a/docs/guide/deploy.html +++ b/docs/guide/deploy.html @@ -24,7 +24,7 @@ 6. 项目部署 | 学之思教程 - +

    6. 项目部署

    6.1 集成部署

    npm config set sass_binary_site https://registry.npmmirror.com
    @@ -51,6 +51,6 @@
     
    • 执行下面命令,启动学之思网站,有问题可以看下/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 463bfe81..9b0b4681 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.xopen 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 前端开发

    npm config set sass_binary_site https://registry.npmmirror.com
    @@ -104,6 +104,6 @@
         - utils 公共方法
         - views 视图、系统页面
     
    Last Updated:
    Contributors: mindskip, 思维跳跃科技
    - + diff --git a/docs/guide/feature.html b/docs/guide/feature.html index a7b63ee9..545e567e 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 1d53bcb3..27aaf20f 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 49f57a0a..35dd3d34 100644 --- a/docs/guide/student.html +++ b/docs/guide/student.html @@ -24,7 +24,7 @@ 4.1 学生端 | 学之思教程 - +

    4.1 学生端

    4.1.1 登录

    • 接口地址:/api/user/login
    • 请求参数:
    {
    @@ -64,7 +64,7 @@
     }
     

    4.1.5 任务中心

    • 接口地址:/api/student/dashboard/task
    • 请求参数:无
    • 返回参数:
    [
             {
    -            "id": 70,  //任务id
    +            "id": 41,  //任务id
                 "title": "2021-04-25作业",  //任务标题
                 "paperItems": [
                     {
    @@ -117,7 +117,7 @@
         "code": 1,
         "message": "成功",
         "response": {
    -        "id": 70,  //试卷id
    +        "id": 41,  //试卷id
             "level": 1,  //年级
             "subjectId": 1,  //学科
             "paperType": 1,  //试卷类型
    @@ -129,7 +129,7 @@
                     "name": "一、选择题",  //试卷标题
                     "questionItems": [
                         {
    -                        "id": 70,      //题目id
    +                        "id": 41,      //题目id
                             "questionType": 5,  //题型
                             "subjectId": 1,  //学科
                             "title": "默写咏鹅",  //标题
    @@ -175,7 +175,7 @@
         "message": "成功",
         "response": {
             "paper": {  //试卷信息
    -            "id": 70,  //试卷id
    +            "id": 41,  //试卷id
                 "level": 1, //年级
                 "subjectId": 1,  //学科
                 "paperType": 4,  //试卷类型
    @@ -190,7 +190,7 @@
                         "name": "一、完成题目",  //标题
                         "questionItems": [   //题目列表
                             {
    -                            "id": 70,  //题目id
    +                            "id": 41,  //题目id
                                 "questionType": 4,   //题目类型
                                 "subjectId": 1,  //学科
                                 "title": "曲项向天歌红掌拨清波",  //题目标题
    @@ -223,12 +223,12 @@
                 "score": "18"   //试卷分数
             },
             "answer": {  //答卷信息
    -            "id": 70,  //答卷id
    +            "id": 41,  //答卷id
                 "doTime": 14,  //耗时
                 "score": "2",  //得分
                 "answerItems": [   //答题信息
                     {
    -                    "id": 70,  //答题id
    +                    "id": 41,  //答题id
                         "questionId": 4,  //题目id
                         "doRight": null,  //是否正确
                         "content": null, //答题内容
    @@ -245,12 +245,12 @@
         }
     }
     

    4.1.11 试卷批改

    • 接口地址:/api/student/exampaper/answer/edit
    • 请求参数:
    {
    -    "id": 70,  //答卷id
    +    "id": 41,  //答卷id
         "doTime": 14,  //耗时
         "score": "2",  //得分数
         "answerItems": [
             {
    -            "id": 70, //答题id
    +            "id": 41, //答题id
                 "questionId": 4, //题目id
                 "doRight": null,  //是否正确
                 "content": null,  //答题内容
    @@ -376,7 +376,7 @@
         "code": 1,
         "message": "成功",
         "response": {
    -        "id": 70,
    +        "id": 41,
             "userUuid": "d2d29da2-dcb3-4013-b874-727626236f47",
             "userName": "student",  //用户名
             "realName": "Test",  //真实姓名
    @@ -395,7 +395,7 @@
         }
     }
     

    4.1.17 修改用户信息

    • 接口地址:/api/student/user/update
    • 请求参数:
    {
    -    "id": 70,
    +    "id": 41,
         "userUuid": "d2d29da2-dcb3-4013-b874-727626236f47",
         "userName": "student",  //用户名
         "realName": "Test",  //真实姓名
    @@ -428,7 +428,7 @@
             "total": 5,
             "list": [
                 {
    -                "id": 70,
    +                "id": 41,
                     "title": "rwerw",   //消息标题
                     "messageId": 10,
                     "content": "sfsdf",  //消息内容
    @@ -450,6 +450,6 @@
         "response": 0  //未读消息数量
     }
     
    Last Updated:
    Contributors: mindskip, 思维跳跃科技
    - + diff --git a/docs/guide/video.html b/docs/guide/video.html index 02788f06..ec95dcca 100644 --- a/docs/guide/video.html +++ b/docs/guide/video.html @@ -24,7 +24,7 @@ 7. 视频教程 | 学之思教程 - +

    7. 视频教程

    7.1 基础软件安装

        ideaIU-2020.3.3 : java开发工具
    @@ -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 fe161570..de67fa88 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": 73,  //试卷id
    +                "id": 92,  //试卷id
                     "name": "aaa",  //试卷名称
                     "limitStartTime": null,
                     "limitEndTime": null
    @@ -70,7 +70,7 @@
             ],
             "timeLimitPaper": [  //时段试卷
                 {
    -                "id": 73,  //试卷id
    +                "id": 92,  //试卷id
                     "name": "202008705",  //试卷名称
                     "limitStartTime": 1600704000000,
                     "limitEndTime": 1664985600000,
    @@ -93,7 +93,7 @@
         "message": "成功",
         "response": [
             {
    -            "id": 73,
    +            "id": 92,
                 "title": "基础任务", //任务标题
                 "paperItems": [
                     {
    @@ -116,7 +116,7 @@
             "total": 9,
             "list": [
                 {
    -                "id": 73,
    +                "id": 92,
                     "name": "固定试卷", //试卷名称
                     "questionCount": 1, //题目数量
                     "score": 50, //分数
    @@ -139,7 +139,7 @@
         "code": 1,
         "message": "成功",
         "response": {
    -        "id": 73, //试卷id
    +        "id": 92, //试卷id
             "level": 1,  //年级
             "subjectId": 4,  //学科
             "paperType": 1,  //试卷类型
    @@ -151,7 +151,7 @@
                     "name": "一、解答题",  //标题名称
                     "questionItems": [  //题目列表
                         {
    -                        "id": 73,  //题目id
    +                        "id": 92,  //题目id
                             "questionType": 1, //题目类型
                             "subjectId": 4, //学科
                             "title": "中华四大名著都有哪些,下列正确的是",  //题干
    @@ -221,7 +221,7 @@
         "code": 1,
         "message": "成功",
         "response": {
    -        "id": 73,
    +        "id": 92,
             "userUuid": "d2d29da2-dcb3-4013-b874-727626236f47", //用户uuid
             "userName": "student", //用户名
             "realName": "学生", //真实姓名
    @@ -249,7 +249,7 @@
         "code": 1,
         "message": "成功",
         "response": {
    -        "id": 73,
    +        "id": 92,
             "userUuid": "d2d29da2-dcb3-4013-b874-727626236f47",  //用户uuid
             "userName": "student", //用户名
             "realName": "学生",  //真实姓名
    @@ -291,7 +291,7 @@
             "total": 7,
             "list": [
                 {
    -                "id": 73, //消息
    +                "id": 92, //消息
                     "title": "国庆假说明",  //消息标题
                     "messageId": 17,  //消息id
                     "content": "假期七天请注意安全。。。",  //消息内容
    @@ -306,7 +306,7 @@
         "code": 1,
         "message": "成功",
         "response": {
    -        "id": 73,
    +        "id": 92,
             "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 9d9014d5..d7b3fc21 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, 思维跳跃科技
    - +