1
0
mirror of https://github.com/ZeroCatDev/Classworks.git synced 2026-03-21 09:13:10 +00:00
Classworks/assets/InitServiceChooser-CNIv2wRZ.js

2 lines
27 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import{_ as ie,n as A,s as L,d as W,f as k,e as y,l as P,h as g,g as ee,c as be,j as ue,o as xe,X as M,k as Z}from"./index-DC_IMzEW.js";import{a as Q}from"./dataProvider-Dyo_lKKr.js";import{V as ne}from"./VTextField-tqCPS4eX.js";import{V as re}from"./VAlert-trAG1E0k.js";import{o as ke,X as f,Y as z,Z as s,j as l,k as t,a1 as a,S as T,$,b as x,R as O,V as j,u as G,_ as F,F as we,a2 as ye,e as N,D as Ce}from"./vendor-vue-PFj_oO9L.js";import{V as Ve}from"./VTextarea-D0VbtaSS.js";import{V as ve}from"./VChip-BPf9hgUp.js";import{V as $e,a as me,b as ce,c as pe}from"./VExpansionPanels-BL2tlr-V.js";import{V as ze,a as fe}from"./VRow-CTIfaVMT.js";import{v as Se}from"./vendor-utils-DDRLRfsI.js";import"./vendor-vuetify-B0GHMr1h.js";import"./serverRotation-BzU1PrNe.js";const De={class:"text-center mb-6"},Te={class:"text-body-2"},_e={class:"form-section"},Ie={__name:"DeviceAuthDialog",props:{showCancel:{type:Boolean,default:!1},preconfig:{type:Object,default:null}},emits:["success","cancel"],setup(K,{expose:h,emit:C}){const V=K,r=C,c=x({namespace:"",password:""}),n=x(!1),d=x("");ke(()=>V.preconfig,u=>{u&&(console.log("应用预配置数据:",u),c.value.namespace=u.namespace||"",c.value.password=u.password||"",u.autoExecute&&u.namespace?(console.log("检测到自动执行标志且有命名空间,自动执行认证"),setTimeout(()=>{p()},300)):u.namespace&&console.log("预配置数据已填入,等待手动认证"))},{immediate:!0,deep:!0});const p=async()=>{var u,i,v,D,R;if(!(!c.value.namespace||n.value)){d.value="",n.value=!0;try{const w=A("server.domain");if(!w)throw new Error("未配置服务器域名");const U=await Q.post(`${w}/apps/auth/token`,{namespace:c.value.namespace,password:c.value.password||void 0,appId:"d158067f53627d2b98babe8bffd2fd7d"});if(!U.data.success)throw new Error("设备验证失败");const E=U.data;L("server.kvToken",E.token),(u=E.device)!=null&&u.uuid&&L("device.uuid",E.device.uuid),r("success",E)}catch(w){const U=(i=w==null?void 0:w.response)==null?void 0:i.status;U===401||U===403?d.value="密码错误或无权限访问":U===404?d.value="设备不存在,请检查 namespace 是否正确":d.value=((R=(D=(v=w==null?void 0:w.response)==null?void 0:v.data)==null?void 0:D.error)==null?void 0:R.message)||(w==null?void 0:w.message)||"认证失败,请稍后重试"}finally{n.value=!1}}};return h({reset:()=>{c.value={namespace:"",password:""},d.value=""}}),(u,i)=>(f(),z(y,{class:"auth-card"},{default:s(()=>[l(W,{class:"pa-8"},{default:s(()=>[t("div",De,[l(k,{class:"mb-4",color:"success",size:"80"},{default:s(()=>[...i[4]||(i[4]=[a(" mdi-account-key ",-1)])]),_:1}),i[5]||(i[5]=t("h2",{class:"text-h4 mb-3"}," 设备认证 ",-1)),i[6]||(i[6]=t("p",{class:"text-body-1 text-medium-emphasis"}," 输入你在 Classworks KV 获取的认证信息 ",-1))]),l(y,{class:"pa-4 mb-6",color:"info",variant:"tonal"},{default:s(()=>[t("div",Te,[l(k,{class:"mr-2",size:"20"},{default:s(()=>[...i[7]||(i[7]=[a(" mdi-information ",-1)])]),_:1}),i[8]||(i[8]=a(" 对于已有UUID的用户您应当使用UUID与您的密码登录。 ",-1))])]),_:1}),t("div",_e,[l(ne,{modelValue:c.value.namespace,"onUpdate:modelValue":i[0]||(i[0]=v=>c.value.namespace=v),class:"mb-4","hide-details":"auto",label:"命名空间","prepend-inner-icon":"mdi-identifier",variant:"outlined"},null,8,["modelValue"]),l(ne,{modelValue:c.value.password,"onUpdate:modelValue":i[1]||(i[1]=v=>c.value.password=v),label:"认证码","prepend-inner-icon":"mdi-lock-outline",type:"text",variant:"outlined"},null,8,["modelValue"]),d.value?(f(),z(re,{key:0,class:"mt-4",closable:"",type:"error",variant:"tonal","onClick:close":i[2]||(i[2]=v=>d.value="")},{default:s(()=>[a(T(d.value),1)]),_:1})):$("",!0)])]),_:1}),l(P,{class:"pa-6 pt-0"},{default:s(()=>[K.showCancel?(f(),z(g,{key:0,size:"large",variant:"text",onClick:i[3]||(i[3]=v=>u.$emit("cancel"))},{default:s(()=>[...i[9]||(i[9]=[a(" 取消 ",-1)])]),_:1})):$("",!0),l(ee),l(g,{disabled:!c.value.namespace||n.value,loading:n.value,class:"px-8",color:"primary",size:"x-large",variant:"elevated",onClick:p},{default:s(()=>[l(k,{size:"24",start:""},{default:s(()=>[...i[10]||(i[10]=[a(" mdi-login ",-1)])]),_:1}),i[11]||(i[11]=t("span",{class:"text-h6"},"认证并登录",-1))]),_:1},8,["disabled","loading"])]),_:1})]),_:1}))}},Ue=ie(Ie,[["__scopeId","data-v-9e8d02e4"]]),Ae={__name:"TokenInputDialog",props:{showCancel:{type:Boolean,default:!1}},emits:["success","cancel"],setup(K,{expose:h,emit:C}){const V=C,r=x(""),c=x(!1),n=x(""),d=async()=>{var p,u,i;if(!(!r.value||c.value)){n.value="",c.value=!0;try{const v=A("server.domain");if(!v)throw new Error("未配置服务器域名");await Q.get(`${v}/kv/_info`,{headers:{Accept:"application/json","x-app-token":r.value}}),L("server.kvToken",r.value),V("success")}catch(v){const D=(p=v==null?void 0:v.response)==null?void 0:p.status;D===401||D===403?n.value="Token 无效或无权限,请确认后重试":D===404?n.value="命名空间不存在或服务器未就绪":n.value=((i=(u=v==null?void 0:v.response)==null?void 0:u.data)==null?void 0:i.message)||(v==null?void 0:v.message)||"验证失败,请稍后重试"}finally{c.value=!1}}};return h({reset:()=>{r.value="",n.value=""}}),(p,u)=>(f(),z(y,null,{default:s(()=>[l(be,null,{default:s(()=>[...u[2]||(u[2]=[a("输入授权 Token",-1)])]),_:1}),l(W,null,{default:s(()=>[l(ne,{modelValue:r.value,"onUpdate:modelValue":u[0]||(u[0]=i=>r.value=i),clearable:"",density:"comfortable","hide-details":"auto",label:"KV 授权 Token",placeholder:"粘贴从授权页面获取的 Token",variant:"outlined"},null,8,["modelValue"]),n.value?(f(),z(re,{key:0,class:"mt-3",type:"error",variant:"tonal"},{default:s(()=>[a(T(n.value),1)]),_:1})):$("",!0)]),_:1}),l(P,null,{default:s(()=>[l(ee),K.showCancel?(f(),z(g,{key:0,variant:"text",onClick:u[1]||(u[1]=i=>p.$emit("cancel"))},{default:s(()=>[...u[3]||(u[3]=[a(" 取消 ",-1)])]),_:1})):$("",!0),l(g,{disabled:!r.value||c.value,loading:c.value,color:"primary",onClick:d},{default:s(()=>[...u[4]||(u[4]=[a(" 保存 Token ",-1)])]),_:1},8,["disabled","loading"])]),_:1})]),_:1}))}},Ke={__name:"AlternativeCodeDialog",props:{showCancel:{type:Boolean,default:!1}},emits:["submit","cancel"],setup(K,{expose:h,emit:C}){const V=C,r=x(""),c=()=>{r.value&&V("submit",r.value)};return h({reset:()=>{r.value=""}}),(n,d)=>(f(),z(y,null,{default:s(()=>[l(be,null,{default:s(()=>[...d[2]||(d[2]=[a("输入替代代码",-1)])]),_:1}),l(W,null,{default:s(()=>[l(Ve,{modelValue:r.value,"onUpdate:modelValue":d[0]||(d[0]=p=>r.value=p),density:"comfortable","hide-details":"auto",label:"替代代码",placeholder:"请输入替代代码",rows:"5",variant:"outlined"},null,8,["modelValue"]),l(re,{class:"mt-3",type:"info",variant:"tonal"},{default:s(()=>[...d[3]||(d[3]=[a(" 替代代码功能暂未实现,敬请期待 ",-1)])]),_:1})]),_:1}),l(P,null,{default:s(()=>[l(ee),K.showCancel?(f(),z(g,{key:0,variant:"text",onClick:d[1]||(d[1]=p=>n.$emit("cancel"))},{default:s(()=>[...d[4]||(d[4]=[a(" 取消 ",-1)])]),_:1})):$("",!0),l(g,{disabled:!r.value,color:"primary",onClick:c},{default:s(()=>[...d[5]||(d[5]=[a(" 提交 ",-1)])]),_:1},8,["disabled"])]),_:1})]),_:1}))}},he={class:"step-content"},Ee={class:"text-center mb-6"},Be={class:"step-content"},Ne={class:"relationship-diagram"},Re={class:"diagram-item"},Oe={class:"text-center"},je={class:"diagram-description mt-3"},Fe={class:"diagram-connector"},Le={class:"diagram-item"},Ge={class:"text-center"},Me={class:"diagram-description mt-3"},He={class:"step-content"},Xe={class:"button-group"},Je={class:"d-flex flex-column align-center py-2"},Ye={class:"d-flex flex-column align-center py-2"},Ze={class:"step-content"},qe={class:"text-center mb-6"},Qe={class:"step-content"},We={class:"text-center mb-6"},Pe={class:"d-flex flex-column flex-sm-row align-center"},et={class:"flex-grow-1"},tt={class:"text-h6 font-weight-bold"},st={class:"text-h5 mb-6"},lt={class:"text-subtitle-2"},at={class:"d-flex align-center"},ot={class:"d-flex align-center"},nt={class:"step-content"},it={class:"text-center mb-6"},rt={class:"d-flex align-center mb-3"},dt={class:"text-h6 font-weight-medium"},ut={key:0,class:"text-body-2 mb-2"},vt={class:"mb-2"},mt={class:"device-code"},ct={key:1,class:"text-body-2 text-error"},pt={class:"log-box"},ft={key:0,class:"text-caption text-medium-emphasis"},bt={class:"d-flex flex-wrap gap-2 mt-4"},q=5,kt={__name:"FirstTimeGuide",emits:["close","success"],setup(K,{emit:h}){const C=h,V=A("server.authDomain"),r=x(1),c=x(""),n=x("idle"),d=x(""),p=x(null),u=x(null),i=x([]),v=x({1:!1,2:!1,3:!1,4:!1}),D=()=>{r.value<q&&r.value++},R=()=>{r.value>1&&r.value--},w=S=>{c.value=S,D()},U=()=>{C("close")},E=()=>{window.open(V,"_blank")},te=()=>{r.value=5},se=N(()=>Object.values(v.value).filter(Boolean).length/4*100),H=N(()=>n.value==="success"?"success":n.value==="error"?"error":"primary"),le=N(()=>n.value==="success"?"mdi-check-circle":n.value==="error"?"mdi-alert-circle":n.value==="registering"?"mdi-progress-clock":"mdi-rocket-launch"),ae=N(()=>n.value==="success"?"完成!设备已创建":n.value==="error"?"创建失败":n.value==="registering"?"正在执行…":"准备开始"),m=S=>{const e=new Date,_=String(e.getHours()).padStart(2,"0"),I=String(e.getMinutes()).padStart(2,"0"),Y=String(e.getSeconds()).padStart(2,"0");i.value.push({time:`${_}:${I}:${Y}`,message:S})},o=()=>"Classworks",b=async()=>{var S,e,_;if(n.value!=="registering"){n.value="registering",d.value="",i.value=[],v.value={1:!1,2:!1,3:!1,4:!1};try{m("正在生成设备信息…");const I=Se(),Y=o(),de=A("server.domain");v.value[1]=!0,m("向服务器注册设备…");const ge=await Q.post(`${de}/devices`,{uuid:I,deviceName:Y});v.value[2]=!0,p.value={uuid:I,deviceName:Y,createdAt:new Date().toISOString(),registered:!0},localStorage.setItem("Classworks_progressive_device",JSON.stringify(p.value)),m("获取访问令牌…");try{const B=await Q.post(`${de}/apps/auth/token`,{namespace:I,password:"",appId:"d158067f53627d2b98babe8bffd2fd7d"});B.data&&B.data.token?(u.value=B.data,L("server.kvToken",B.data.token),(S=B.data.device)!=null&&S.uuid&&L("device.uuid",B.data.device.uuid),m("已获取 Token 并写入配置")):m("未返回 Token您可以稍后在授权页完成配置")}catch(B){console.warn("自动获取 Token 失败:",B),m("自动获取 Token 失败,可在授权页手动完成")}v.value[3]=!0,m("完成!您可以应用令牌或前往授权页面继续配置"),v.value[4]=!0,n.value="success"}catch(I){console.error("设备注册失败:",I),d.value=((_=(e=I.response)==null?void 0:e.data)==null?void 0:_.message)||I.message||"网络连接失败",m("失败:"+d.value),n.value="error"}}},oe=()=>{n.value="idle",d.value="",i.value=[],v.value={1:!1,2:!1,3:!1,4:!1}},X=()=>{const S=p.value;if(!(S!=null&&S.uuid))return;const _=`${A("server.authDomain")}/?uuid=${encodeURIComponent(S.uuid)}&tolinktoaccount=true`;window.open(_,"_blank")},J=()=>{u.value&&C("success",u.value),C("close")};return(S,e)=>(f(),z(y,{class:"guide-card"},{default:s(()=>[l(ue,{"model-value":r.value/q*100,color:"primary",height:"6"},null,8,["model-value"]),l(W,{class:"pa-8"},{default:s(()=>[O(t("div",he,[t("div",Ee,[l(k,{class:"mb-4",color:"primary",size:"80"},{default:s(()=>[...e[2]||(e[2]=[a(" mdi-hand-wave ",-1)])]),_:1}),e[3]||(e[3]=t("h2",{class:"text-h4 mb-3"}," 欢迎使用 Classworks ",-1)),e[4]||(e[4]=t("p",{class:"text-body-1 text-medium-emphasis"}," 适用于班级大屏的作业板小工具 ",-1))])],512),[[j,r.value===1]]),O(t("div",Be,[e[17]||(e[17]=t("h3",{class:"text-h5 mb-6 text-center"}," Classworks 和 Classworks KV 的关系 ",-1)),l(y,{class:"pa-6 mb-6",color:"primary",variant:"tonal"},{default:s(()=>[t("div",Ne,[t("div",Re,[l(y,{class:"pa-4",color:"blue-darken-1",elevation:"8"},{default:s(()=>[t("div",Oe,[l(k,{color:"white",size:"60"},{default:s(()=>[...e[5]||(e[5]=[a(" mdi-laptop ",-1)])]),_:1}),e[6]||(e[6]=t("h4",{class:"text-h6 text-white mt-2"}," Classworks ",-1)),e[7]||(e[7]=t("p",{class:"text-caption text-white mt-1"}," 作业板应用 ",-1))])]),_:1}),t("div",je,[l(ve,{class:"mb-2",color:"blue",size:"small",variant:"flat"},{default:s(()=>[...e[8]||(e[8]=[a(" 前端应用 ",-1)])]),_:1}),e[9]||(e[9]=t("div",{class:"text-body-2"},[a(" • 显示作业内容"),t("br"),a(" • 管理班级信息"),t("br"),a(" • 提供用户界面 ")],-1))])]),t("div",Fe,[l(k,{color:"primary",size:"40"},{default:s(()=>[...e[10]||(e[10]=[a(" mdi-swap-horizontal ",-1)])]),_:1}),e[11]||(e[11]=t("div",{class:"text-caption font-weight-bold mt-2"}," 数据同步 ",-1))]),t("div",Le,[l(y,{class:"pa-4",color:"green-darken-1",elevation:"8"},{default:s(()=>[t("div",Ge,[l(k,{color:"white",size:"60"},{default:s(()=>[...e[12]||(e[12]=[a(" mdi-cloud-sync ",-1)])]),_:1}),e[13]||(e[13]=t("h4",{class:"text-h6 text-white mt-2"}," Classworks KV ",-1)),e[14]||(e[14]=t("p",{class:"text-caption text-white mt-1"}," 云端数据库 ",-1))])]),_:1}),t("div",Me,[l(ve,{class:"mb-2",color:"green",size:"small",variant:"flat"},{default:s(()=>[...e[15]||(e[15]=[a(" 后端服务 ",-1)])]),_:1}),e[16]||(e[16]=t("div",{class:"text-body-2"},[a(" • 存储作业数据"),t("br"),a(" • 多设备同步"),t("br"),a(" • 权限管理 ")],-1))])])])]),_:1})],512),[[j,r.value===2]]),O(t("div",He,[e[25]||(e[25]=t("h3",{class:"text-h5 mb-6 text-center"}," 你需要在多个设备上查看作业吗? ",-1)),l(y,{class:"mb-6 pa-4",color:"info",variant:"tonal"},{default:s(()=>[...e[18]||(e[18]=[t("div",{class:"text-body-2"}," 比如:在家里电脑、手机上查看,或者多个教室设备共享数据 ",-1)])]),_:1}),t("div",Xe,[l(g,{block:"",class:"mb-4 py-6",color:"primary",size:"x-large",variant:"elevated",onClick:e[0]||(e[0]=_=>w("cloud"))},{default:s(()=>[t("div",Je,[l(k,{class:"mb-2",size:"40"},{default:s(()=>[...e[19]||(e[19]=[a(" mdi-cloud-check ",-1)])]),_:1}),e[20]||(e[20]=t("span",{class:"text-h6"},"需要,使用云同步",-1)),e[21]||(e[21]=t("span",{class:"text-caption mt-1"},"多设备访问",-1))])]),_:1}),l(g,{block:"",class:"py-6",size:"x-large",variant:"outlined",onClick:e[1]||(e[1]=_=>w("local"))},{default:s(()=>[t("div",Ye,[l(k,{class:"mb-2",size:"40"},{default:s(()=>[...e[22]||(e[22]=[a(" mdi-laptop ",-1)])]),_:1}),e[23]||(e[23]=t("span",{class:"text-h6"},"不需要,只用这台设备",-1)),e[24]||(e[24]=t("span",{class:"text-caption mt-1"},"本地存储",-1))])]),_:1})])],512),[[j,r.value===3]]),O(t("div",Ze,[t("div",qe,[l(k,{class:"mb-4",color:"success",size:"80"},{default:s(()=>[...e[26]||(e[26]=[a(" mdi-check-circle ",-1)])]),_:1}),e[28]||(e[28]=t("h3",{class:"text-h5 mb-4"}," 您可以使用本地模式 ",-1)),l(y,{class:"pa-4 text-left",variant:"tonal"},{default:s(()=>[...e[27]||(e[27]=[t("div",{class:"text-body-1 mb-2"}," 此数据将存储在您的浏览器中如果您的浏览器不支持IndexedDB可能会出现问题。如果您经常清除浏览器数据请谨慎使用本地模式。 ",-1),t("div",{class:"text-body-1 mb-2"}," 在刚才地方点击使用本地模式的按钮使用。 ",-1)])]),_:1})])],512),[[j,r.value===4&&c.value==="local"]]),O(t("div",Qe,[t("div",We,[l(k,{class:"mb-4",color:"primary",size:"80"},{default:s(()=>[...e[29]||(e[29]=[a(" mdi-cloud-cog ",-1)])]),_:1}),e[30]||(e[30]=t("h3",{class:"text-h5 mb-4"}," 需要先设置云端账号 ",-1))]),l(y,{class:"pa-6 mb-6",variant:"tonal"},{default:s(()=>[t("div",Pe,[t("div",et,[e[32]||(e[32]=t("h4",{class:"text-h6 font-weight-bold mb-2"}," 自动注册设备 ",-1)),e[33]||(e[33]=t("p",{class:"text-body-2 mb-3 text-medium-emphasis"}," 通过引导式流程自动创建设备、获取令牌并完成初始化。适合首次体验或快速部署多终端。 ",-1)),l(g,{color:"primary","prepend-icon":"mdi-flash",size:"large",variant:"elevated",onClick:te},{default:s(()=>[...e[31]||(e[31]=[a(" 自动注册 ",-1)])]),_:1})])])]),_:1}),e[41]||(e[41]=t("div",{class:"mb-6"}," 也可以手动前往 Classworks KV 控制台获取认证信息: ",-1)),l(y,{color:G(V)=="https://kv.houlang.cloud"?"primary":"error",variant:G(V)=="https://kv.houlang.cloud"?"elevated":"outlined",class:"pa-6 mb-6",onClick:E},{default:s(()=>[l(k,{class:"mb-3",size:"48"},{default:s(()=>[...e[34]||(e[34]=[a(" mdi-open-in-new ",-1)])]),_:1}),t("h4",tt," 请访问 "+T(G(V)=="https://kv.houlang.cloud"?"Classworks KV":"自定义的 Classworks KV 实例 ")+" 控制台 ",1),t("div",st,T(G(V)),1),t("h6",lt,T(G(V)=="https://kv.houlang.cloud"?"此实例由 Classworks KV 官方提供":"此链接由您的实例、预配代码或管理员管理,当前可能不是 Classworks KV 官方的实例地址。"),1)]),_:1},8,["color","variant"]),l($e,{class:"mt-6",variant:"accordion"},{default:s(()=>[l(me,null,{default:s(()=>[l(ce,null,{default:s(()=>[t("div",at,[l(k,{class:"mr-3",color:"warning"},{default:s(()=>[...e[35]||(e[35]=[a(" mdi-help-circle ",-1)])]),_:1}),e[36]||(e[36]=t("span",{class:"text-subtitle-1 font-weight-medium"},"我以前已经使用过 Classworks KV",-1))])]),_:1}),l(pe,null,{default:s(()=>[l(y,{class:"pa-4",color:"success",variant:"tonal"},{default:s(()=>[...e[37]||(e[37]=[t("div",{class:"text-body-2 mb-2"},[a(" 如果您之前已经使用过 Classworks KV可以直接使用您的 "),t("strong",null,"UUID命名空间"),a(" 和 "),t("strong",null,"设置的密码"),a(" 进行认证。 ")],-1),t("div",{class:"text-body-2"},' 返回上一页,点击"已注册"按钮,输入您的认证信息即可登录。 ',-1)])]),_:1})]),_:1})]),_:1}),l(me,null,{default:s(()=>[l(ce,null,{default:s(()=>[t("div",ot,[l(k,{class:"mr-3",color:"info"},{default:s(()=>[...e[38]||(e[38]=[a(" mdi-help-circle ",-1)])]),_:1}),e[39]||(e[39]=t("span",{class:"text-subtitle-1 font-weight-medium"},"我如何配置不同类型的设备?",-1))])]),_:1}),l(pe,null,{default:s(()=>[l(y,{class:"pa-4",color:"info",variant:"tonal"},{default:s(()=>[...e[40]||(e[40]=[t("div",{class:"text-body-2 mb-2"},[a(" 不同的密码对应不同的设备类型,这将由 "),t("strong",null,"管理员管理"),a("。 ")],-1),t("div",{class:"text-body-2 mb-2"}," 例如: ",-1),t("ul",{class:"text-body-2 ml-4"},[t("li",{class:"mb-1"}," 班级大屏使用一个密码 "),t("li",{class:"mb-1"}," 教师设备使用另一个密码 "),t("li",null,"学生设备使用不同的密码")],-1),t("div",{class:"text-body-2 mt-3"}," 请联系您的管理员获取对应设备类型的密码。 ",-1)])]),_:1})]),_:1})]),_:1})]),_:1})],512),[[j,r.value===4&&c.value==="cloud"]]),O(t("div",nt,[t("div",it,[l(xe,{class:"mb-4",color:"primary",size:"80",variant:"tonal"},{default:s(()=>[l(k,{size:"48"},{default:s(()=>[...e[42]||(e[42]=[a(" mdi-rocket-launch ",-1)])]),_:1})]),_:1}),e[43]||(e[43]=t("h3",{class:"text-h5 font-weight-bold mb-2"}," 渐进式注册 ",-1)),e[44]||(e[44]=t("p",{class:"text-body-2 text-medium-emphasis"}," 您可以暂时不配置 Classworks KV ",-1))]),l(ue,{"model-value":se.value,class:"mb-6",color:"primary",height:"8",rounded:""},null,8,["model-value"]),l(ze,null,{default:s(()=>[l(fe,{cols:"12"},{default:s(()=>[l(y,{color:H.value,variant:"tonal"},{default:s(()=>[l(M,null,{default:s(()=>[t("div",rt,[l(k,{color:H.value,class:"mr-2",size:"32"},{default:s(()=>[a(T(le.value),1)]),_:1},8,["color"]),t("div",dt,T(ae.value),1)]),p.value?(f(),F("div",ut,[t("div",vt,[e[45]||(e[45]=t("strong",null,"设备名称:",-1)),a(T(p.value.deviceName),1)]),t("div",null,[e[46]||(e[46]=t("strong",null,"设备 UUID",-1)),t("code",mt,T(p.value.uuid),1)])])):$("",!0),n.value==="error"?(f(),F("div",ct,T(d.value),1)):$("",!0)]),_:1})]),_:1},8,["color"])]),_:1}),l(fe,{cols:"12"},{default:s(()=>[l(y,{variant:"outlined"},{default:s(()=>[l(M,null,{default:s(()=>[e[47]||(e[47]=t("div",{class:"text-subtitle-2 font-weight-medium mb-3"}," 过程日志 ",-1)),t("div",pt,[(f(!0),F(we,null,ye(i.value,(_,I)=>(f(),F("div",{key:I,class:"text-caption log-line"},T(_.time)+" · "+T(_.message),1))),128)),i.value.length?$("",!0):(f(),F("div",ft," 等待开始… "))])]),_:1})]),_:1})]),_:1})]),_:1}),t("div",bt,[n.value==="idle"?(f(),z(g,{key:0,color:"primary","prepend-icon":"mdi-play",size:"large",onClick:b},{default:s(()=>[...e[48]||(e[48]=[a(" 开始创建 ",-1)])]),_:1})):$("",!0),n.value==="error"?(f(),z(g,{key:1,color:"error","prepend-icon":"mdi-refresh",variant:"outlined",onClick:oe},{default:s(()=>[...e[49]||(e[49]=[a(" 重试 ",-1)])]),_:1})):$("",!0),n.value==="registering"?(f(),z(g,{key:2,loading:!0,color:"primary","prepend-icon":"mdi-progress-clock",variant:"tonal"},{default:s(()=>[...e[50]||(e[50]=[a(" 正在执行… ",-1)])]),_:1})):$("",!0),n.value==="success"?(f(),z(g,{key:3,color:"success","prepend-icon":"mdi-check-circle",size:"large",variant:"elevated",onClick:J},{default:s(()=>[...e[51]||(e[51]=[a(" 应用令牌并关闭 ",-1)])]),_:1})):$("",!0),n.value==="success"?(f(),z(g,{key:4,color:"primary","prepend-icon":"mdi-open-in-new",size:"large",variant:"outlined",onClick:X},{default:s(()=>[...e[52]||(e[52]=[a(" 前往绑定账户 ",-1)])]),_:1})):$("",!0)])],512),[[j,r.value===5]])]),_:1}),l(P,{class:"pa-6 pt-0"},{default:s(()=>[r.value>1?(f(),z(g,{key:0,size:"large",variant:"text",onClick:R},{default:s(()=>[l(k,{start:""},{default:s(()=>[...e[53]||(e[53]=[a(" mdi-chevron-left ",-1)])]),_:1}),e[54]||(e[54]=a(" 上一步 ",-1))]),_:1})):$("",!0),l(ee),r.value<q&&r.value!==4?(f(),z(g,{key:1,disabled:r.value===3&&!c.value,color:"primary",size:"large",variant:"elevated",onClick:D},{default:s(()=>[e[56]||(e[56]=a(" 下一步 ",-1)),l(k,{end:""},{default:s(()=>[...e[55]||(e[55]=[a(" mdi-chevron-right ",-1)])]),_:1})]),_:1},8,["disabled"])):$("",!0),r.value===q||r.value===4?(f(),z(g,{key:2,color:"primary",size:"large",variant:"elevated",onClick:U},{default:s(()=>[...e[57]||(e[57]=[a(" 关闭 ",-1)])]),_:1})):$("",!0)]),_:1})]),_:1}))}},gt=ie(kt,[["__scopeId","data-v-817c6e0e"]]),xt={key:0,class:"init-overlay"},wt={class:"init-container"},yt={class:"main-card-row"},Ct={class:"card-horizontal-layout"},Vt={class:"card-icon-wrapper"},$t={class:"card-horizontal-layout"},zt={class:"card-icon-wrapper"},St={class:"card-horizontal-layout"},Dt={class:"card-icon-wrapper"},Tt={class:"options-buttons"},_t={__name:"InitServiceChooser",props:{preconfig:{type:Object,default:()=>({namespace:null,authCode:null,autoOpen:!1,autoExecute:!1})}},emits:["done"],setup(K,{emit:h}){const C=K,V=h,r=x(!1),c=x(!1),n=x(!1),d=x(!1),p=x(!1),u=x(null),i=N(()=>A("server.provider")),v=N(()=>i.value==="kv-server"||i.value==="classworkscloud"),D=N(()=>A("server.kvToken")),R=N(()=>{var m;return(m=C.preconfig)!=null&&m.namespace?{namespace:C.preconfig.namespace,password:C.preconfig.authCode||"",autoExecute:C.preconfig.autoExecute||!1}:null}),w=()=>{const m=window.location.pathname,o=m==="/"||m==="/index"||m==="/index.html",b=v.value&&(!D.value||D.value==="");r.value=o&&b};ke(()=>C.preconfig,m=>{m!=null&&m.autoOpen&&(m!=null&&m.namespace)&&r.value&&(console.log("检测到预配数据,自动打开设备认证对话框"),setTimeout(()=>{n.value=!0},500))},{immediate:!0,deep:!0}),Ce(()=>{w()});const U=()=>{const m=A("server.authDomain"),o="d158067f53627d2b98babe8bffd2fd7d",b=window.location.origin,oe=encodeURIComponent(`${b}/authorizecallback`),X=A("device.uuid")||"00000000-0000-4000-8000-000000000000";let J=`${m}/authorize?app_id=${o}&mode=callback&callback_url=${oe}&remark=Classworks 自动授权 来自${window.location.hostname} ${new Date().toLocaleString()}`;X!=="00000000-0000-4000-8000-000000000000"&&(J+=`&uuid=${encodeURIComponent(X)}`),window.location.href=J},E=m=>{c.value=!1,console.log("渐进式注册成功:",m),w(),V("done")},te=m=>{var o;n.value=!1,console.log("认证成功:",m),(o=C.preconfig)!=null&&o.namespace&&console.log(`预配数据认证成功: ${C.preconfig.namespace}`),w(),V("done")},se=()=>{d.value=!1,w(),V("done")},H=m=>{console.log("替代代码:",m),p.value=!1},le=()=>{L("server.provider","kv-local"),r.value=!1,window.location.reload(),V("done")},ae=()=>{window.open(A("server.authDomain"),"_blank")};return(m,o)=>r.value?(f(),F("div",xt,[t("div",wt,[o[22]||(o[22]=t("div",{class:"init-header"},[t("div",{class:"title"}," 欢迎使用 Classworks "),t("div",{class:"subtitle"}," 请选择你的使用方式 ")],-1)),t("div",yt,[l(y,{class:"main-service-card gradient-new clickable",elevation:"4",onClick:o[0]||(o[0]=b=>c.value=!0)},{default:s(()=>[l(M,null,{default:s(()=>[t("div",Ct,[t("div",Vt,[l(k,{color:"primary",size:"48"},{default:s(()=>[...o[12]||(o[12]=[a(" mdi-new-box ",-1)])]),_:1})]),o[13]||(o[13]=t("div",{class:"card-content"},[t("div",{class:"text-h6 font-weight-bold"}," 初次使用 "),t("div",{class:"text-body-2 text-medium-emphasis mt-1"}," 了解 Classworks KV 并开始使用 ")],-1))])]),_:1})]),_:1}),l(y,{class:"main-service-card gradient-registered clickable",elevation:"4",onClick:o[1]||(o[1]=b=>n.value=!0)},{default:s(()=>[l(M,null,{default:s(()=>[t("div",$t,[t("div",zt,[l(k,{color:"success",size:"48"},{default:s(()=>[...o[14]||(o[14]=[a(" mdi-account-check ",-1)])]),_:1})]),o[15]||(o[15]=t("div",{class:"card-content"},[t("div",{class:"text-h6 font-weight-bold"}," 已注册 "),t("div",{class:"text-body-2 text-medium-emphasis mt-1"}," 使用设备 Namespace 登录 ")],-1))])]),_:1})]),_:1}),l(y,{class:"main-service-card clickable",elevation:"4",onClick:ae},{default:s(()=>[l(M,null,{default:s(()=>[t("div",St,[t("div",Dt,[l(k,{color:"info",size:"48"},{default:s(()=>[...o[16]||(o[16]=[a(" mdi-database-cog ",-1)])]),_:1})]),o[17]||(o[17]=t("div",{class:"card-content"},[t("div",{class:"text-h6 font-weight-bold"}," Classworks KV "),t("div",{class:"text-body-2 text-medium-emphasis mt-1"}," 打开云端控制台管理数据 ")],-1))])]),_:1})]),_:1})]),t("div",Tt,[l(g,{"prepend-icon":"mdi-laptop",size:"small",variant:"tonal",onClick:le},{default:s(()=>[...o[18]||(o[18]=[a(" 使用本地模式 ",-1)])]),_:1}),l(g,{"prepend-icon":"mdi-flash",size:"small",variant:"tonal",onClick:U},{default:s(()=>[...o[19]||(o[19]=[a(" 授权码式授权(弃用) ",-1)])]),_:1}),l(g,{"prepend-icon":"mdi-key",size:"small",variant:"tonal",onClick:o[2]||(o[2]=b=>d.value=!0)},{default:s(()=>[...o[20]||(o[20]=[a(" 输入 Token ",-1)])]),_:1}),l(g,{"prepend-icon":"mdi-code-tags",size:"small",variant:"tonal",onClick:o[3]||(o[3]=b=>p.value=!0)},{default:s(()=>[...o[21]||(o[21]=[a(" 输入替代代码 ",-1)])]),_:1})]),o[23]||(o[23]=t("div",{class:"footer-hint"}," 完成授权后可使用作业同步、考试看板等在线功能。 ",-1))]),l(Z,{modelValue:c.value,"onUpdate:modelValue":o[5]||(o[5]=b=>c.value=b),"max-width":"600"},{default:s(()=>[l(gt,{onClose:o[4]||(o[4]=b=>c.value=!1),onSuccess:E})]),_:1},8,["modelValue"]),l(Z,{modelValue:n.value,"onUpdate:modelValue":o[7]||(o[7]=b=>n.value=b),"max-width":"500"},{default:s(()=>[l(Ue,{ref_key:"deviceAuthDialog",ref:u,preconfig:R.value,"show-cancel":!0,onCancel:o[6]||(o[6]=b=>n.value=!1),onSuccess:te},null,8,["preconfig"])]),_:1},8,["modelValue"]),l(Z,{modelValue:d.value,"onUpdate:modelValue":o[9]||(o[9]=b=>d.value=b),"max-width":"500"},{default:s(()=>[l(Ae,{"show-cancel":!0,onCancel:o[8]||(o[8]=b=>d.value=!1),onSuccess:se})]),_:1},8,["modelValue"]),l(Z,{modelValue:p.value,"onUpdate:modelValue":o[11]||(o[11]=b=>p.value=b),"max-width":"500"},{default:s(()=>[l(Ke,{"show-cancel":!0,onCancel:o[10]||(o[10]=b=>p.value=!1),onSubmit:H})]),_:1},8,["modelValue"])])):$("",!0)}},Lt=ie(_t,[["__scopeId","data-v-cbfbc6db"]]);export{Lt as default};